public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:46 Jan Hubicka
  0 siblings, 0 replies; 7+ messages in thread
From: Jan Hubicka @ 2002-11-19 15:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Jan Hubicka <jh@suse.cz>
To: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
Cc: Jan Hubicka <jh@suse.cz>, gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 16:51:43 +0100

 > 
 > > > > on other systems.  Perhaps you have disabled check?
 > > > 
 > > > No, I just looked it up, but I haven't.
 > > > 
 > > > I think I have to leave this to you then. Thanks for your cooperation 
 > > > anyway!
 > > OK, I will to analyze it bit more.
 > > I am quite puzzled why it reproduces on x86_64 only as the code path is
 > > quite generic.  Perhaps the wrong alias set leaks there from some
 > > backend hook, but there are not many (only va_args fiddles aliasing as
 > > far as I can remember)
 > 
 > My machine is presently used up with different tasks, but if I find some 
 > spare cycles this afternoon, I'll retry with a clean build of gcc
 > (--enable-checking is the default on the main branch, right?).
 Yes.
 Honza
 > 
 > Cheers
 >   Wolfgang
 > 
 > -------------------------------------------------------------------------
 > Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
 >                                www: http://www.ticam.utexas.edu/~bangerth
 > 


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

* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:56 Jan Hubicka
  0 siblings, 0 replies; 7+ messages in thread
From: Jan Hubicka @ 2002-11-19 15:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Jan Hubicka <jh@suse.cz>
To: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
Cc: Jan Hubicka <jh@suse.cz>, gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 16:57:59 +0100

 > 
 > > > > on other systems.  Perhaps you have disabled check?
 > > > 
 > > > No, I just looked it up, but I haven't.
 > > > 
 > > > I think I have to leave this to you then. Thanks for your cooperation 
 > > > anyway!
 > > OK, I will to analyze it bit more.
 > > I am quite puzzled why it reproduces on x86_64 only as the code path is
 > > quite generic.  Perhaps the wrong alias set leaks there from some
 > > backend hook, but there are not many (only va_args fiddles aliasing as
 > > far as I can remember)
 > 
 > My machine is presently used up with different tasks, but if I find some 
 > spare cycles this afternoon, I'll retry with a clean build of gcc
 > (--enable-checking is the default on the main branch, right?).
 
 I've checked and it works for i386 compiler, so it looks like iteraction
 between the frondend and backend to cause the problem ;(
 
 Honza
 > 
 > Cheers
 >   Wolfgang
 > 
 > -------------------------------------------------------------------------
 > Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
 >                                www: http://www.ticam.utexas.edu/~bangerth
 > 


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

* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:48 Wolfgang Bangerth
  0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Bangerth @ 2002-11-19 15:48 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: Jan Hubicka <jh@suse.cz>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting
 aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 10:03:55 -0600 (CST)

 > I've checked and it works for i386 compiler, so it looks like iteraction
 > between the frondend and backend to cause the problem ;(
 
 OK, then I cannot help. Sorry!
 Regards
   W.
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
                                www: http://www.ticam.utexas.edu/~bangerth
 
 


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

* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:41 Wolfgang Bangerth
  0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Bangerth @ 2002-11-19 15:41 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: Jan Hubicka <jh@suse.cz>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting
 aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 09:53:43 -0600 (CST)

 > > > on other systems.  Perhaps you have disabled check?
 > > 
 > > No, I just looked it up, but I haven't.
 > > 
 > > I think I have to leave this to you then. Thanks for your cooperation 
 > > anyway!
 > OK, I will to analyze it bit more.
 > I am quite puzzled why it reproduces on x86_64 only as the code path is
 > quite generic.  Perhaps the wrong alias set leaks there from some
 > backend hook, but there are not many (only va_args fiddles aliasing as
 > far as I can remember)
 
 My machine is presently used up with different tasks, but if I find some 
 spare cycles this afternoon, I'll retry with a clean build of gcc
 (--enable-checking is the default on the main branch, right?).
 
 Cheers
   Wolfgang
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
                                www: http://www.ticam.utexas.edu/~bangerth
 
 


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

* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 12:46 Jan Hubicka
  0 siblings, 0 replies; 7+ messages in thread
From: Jan Hubicka @ 2002-11-19 12:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Jan Hubicka <jh@suse.cz>
To: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
Cc: jh@suse.cz, gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 09:17:07 +0100

 > 
 Hi,
 > Hi Jan,
 > am I correct that PRs 8533 and 8534 are duplicates? If so, I can close one 
 Uhm yes, 8533 is duplicate, I will close it and mark 8535 as high
 priority.
 > of these. Also, I cannot reproduce them on a different system, so I don't 
 > think it's a front end problem. Shall I re-group them as "middle-end" or 
 > "optimization"?
 I am not sure.  Definitly frontend decides the aliasing classes that are
 contradicting in this testcase.  I am not sure why it does not reproduce
 on other systems.  Perhaps you have disabled check?
 I will try to figure out from where the alias sets are constructed at
 the evening.
 
 Honza
 > 
 > Regards
 >   Wolfgang
 > 
 > -------------------------------------------------------------------------
 > Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
 >                                www: http://www.ticam.utexas.edu/~bangerth
 > 


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

* Re: c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 12:46 Wolfgang Bangerth
  0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Bangerth @ 2002-11-19 12:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: jh@suse.cz
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/8534: [mainline regression] When compiling qt contradicting
 aliasing class created for bitfield constructor
Date: Mon, 11 Nov 2002 18:38:11 -0600 (CST)

 Hi Jan,
 am I correct that PRs 8533 and 8534 are duplicates? If so, I can close one 
 of these. Also, I cannot reproduce them on a different system, so I don't 
 think it's a front end problem. Shall I re-group them as "middle-end" or 
 "optimization"?
 
 Regards
   Wolfgang
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:           bangerth@ticam.utexas.edu
                                www: http://www.ticam.utexas.edu/~bangerth
 
 


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

* c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 12:23 jh
  0 siblings, 0 replies; 7+ messages in thread
From: jh @ 2002-11-19 12:23 UTC (permalink / raw)
  To: gcc-gnats; +Cc: kenner


>Number:         8534
>Category:       c++
>Synopsis:       [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 11 14:56:03 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     jh@suse.cz
>Release:        mainline CVS
>Organization:
>Environment:
x86_64-unknown-linux
>Description:
We fail to compile qt with the following error
/xgcc -B ./ -O2 qq.ii
kernel/moc_qwidget.cpp: In static member function `static QMetaObject*
   QWidget::staticMetaObject()':
kernel/moc_qwidget.cpp:1016: internal compiler error: in set_mem_alias_set, at
   emit-rtl.c:1937
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
./xgcc -B ./ -O2 qq.ii
kernel/moc_qwidget.cpp: In static member function `static QMetaObject*
   QWidget::staticMetaObject()':
kernel/moc_qwidget.cpp:1016: internal compiler error: in set_mem_alias_set, at
   emit-rtl.c:1937
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>Fix:

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

IyAxICJrZXJuZWwvbW9jX3F3aWRnZXQuY3BwIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1h
bmQgbGluZT4iCiMgMSAia2VybmVsL21vY19xd2lkZ2V0LmNwcCIKIyAxNiAia2VybmVsL21vY19x
d2lkZ2V0LmNwcCIKIyAxICJrZXJuZWwvcXdpZGdldC5oIiAxCiMgNDIgImtlcm5lbC9xd2lkZ2V0
LmgiCiMgMSAia2VybmVsL3F3aW5kb3dkZWZzLmgiIDEKIyA0MyAia2VybmVsL3F3aW5kb3dkZWZz
LmgiCiMgMSAia2VybmVsL3FvYmplY3RkZWZzLmgiIDEKIyA0MiAia2VybmVsL3FvYmplY3RkZWZz
LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2xvYmFs
LmgiIDEKIyAzNzYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWds
b2JhbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1
bG9uZzsKdHlwZWRlZiBjaGFyICpwY2hhcjsKdHlwZWRlZiB1Y2hhciAqcHVjaGFyOwp0eXBlZGVm
IGNvbnN0IGNoYXIgKnBjY2hhcjsKCgoKCgoKCmNvbnN0IGJvb2wgRkFMU0UgPSAwOwpjb25zdCBi
b29sIFRSVUUgPSAhMDsKIyA0MTQgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcWdsb2JhbC5oIgppbmxpbmUgaW50IHFSb3VuZCggZG91YmxlIGQgKQp7CiAgICByZXR1
cm4gZCA+IDAuMCA/IGludChkKzAuNSkgOiBpbnQoZC0wLjUpOwp9CiMgNDI3ICIvdXNyL3NyYy9w
YWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9iYWwuaCIKdHlwZWRlZiBzaWduZWQg
Y2hhciBJTlQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7CnR5cGVkZWYgc2hvcnQgSU5U
MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVUlOVDE2Owp0eXBlZGVmIGludCBJTlQzMjsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOwoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgUV9JTlQ4Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgUV9VSU5UODsKdHlwZWRlZiBzaG9ydCBRX0lOVDE2Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IFFfVUlOVDE2Owp0eXBlZGVmIGludCBRX0lOVDMyOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBRX1VJTlQzMjsKdHlwZWRlZiBsb25nIFFfSU5UNjQ7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBRX1VJTlQ2NDsKCgoKCgpjbGFzcyBRRGF0YVN0cmVhbTsKIyA0NTcgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWdsb2JhbC5oIgojIDEgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWZlYXR1cmVzLmgiIDEKIyA1MyAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZmVhdHVyZXMuaCIKIyAx
ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjb25maWcuaCIgMQoj
IDU0ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FmZWF0dXJlcy5o
IiAyCiMgNDU4ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9i
YWwuaCIgMgojIDQ5NSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2xvYmFsLmgiCiBjb25zdCBjaGFyICpxVmVyc2lvbigpOwogYm9vbCBxU3lzSW5mbyggaW50ICp3
b3JkU2l6ZSwgYm9vbCAqYmlnRW5kaWFuICk7CiMgNTU5ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9iYWwuaCIKIHZvaWQgcURlYnVnKCBjb25zdCBjaGFyICos
IC4uLiApCgogICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7Cgog
dm9pZCBxV2FybmluZyggY29uc3QgY2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZvaWQgcUZhdGFsKCBjb25zdCBjaGFyICosIC4u
LiApCgogICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7CgoKCgoK
Cgogdm9pZCBkZWJ1ZyggY29uc3QgY2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZvaWQgd2FybmluZyggY29uc3QgY2hhciAqLCAu
Li4gKQoKICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZv
aWQgZmF0YWwoIGNvbnN0IGNoYXIgKiwgLi4uICkKCiAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDEsIDIpKSkKCjsKIyA2MTYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIu
My4yL2luY2x1ZGUvcWdsb2JhbC5oIgogYm9vbCBxdF9jaGVja19wb2ludGVyKCBib29sIGMsIGNv
bnN0IGNoYXIgKiwgaW50ICk7CgoKCgoKCgplbnVtIFF0TXNnVHlwZSB7IFF0RGVidWdNc2csIFF0
V2FybmluZ01zZywgUXRGYXRhbE1zZyB9OwoKdHlwZWRlZiB2b2lkICgqbXNnX2hhbmRsZXIpKFF0
TXNnVHlwZSwgY29uc3QgY2hhciAqKTsKIG1zZ19oYW5kbGVyIHFJbnN0YWxsTXNnSGFuZGxlcigg
bXNnX2hhbmRsZXIgKTsKCgogdm9pZCBxU3VwcHJlc3NPYnNvbGV0ZVdhcm5pbmdzKCBib29sID0g
VFJVRSApOwoKCgogdm9pZCBxT2Jzb2xldGUoIGNvbnN0IGNoYXIgKm9iaiwgY29uc3QgY2hhciAq
b2xkZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2Z1bmMgKTsK
IHZvaWQgcU9ic29sZXRlKCBjb25zdCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKm9sZGZ1bmMgKTsK
IHZvaWQgcU9ic29sZXRlKCBjb25zdCBjaGFyICptZXNzYWdlICk7CiMgNDMgImtlcm5lbC9xb2Jq
ZWN0ZGVmcy5oIiAyCiMgMTE3ICJrZXJuZWwvcW9iamVjdGRlZnMuaCIKY2xhc3MgUU9iamVjdDsK
Y2xhc3MgUU1ldGFPYmplY3Q7CmNsYXNzIFFTaWduYWw7CmNsYXNzIFFDb25uZWN0aW9uOwpjbGFz
cyBRRXZlbnQ7CnN0cnVjdCBRTWV0YURhdGE7CmNsYXNzIFFDb25uZWN0aW9uTGlzdDsKY2xhc3Mg
UUNvbm5lY3Rpb25MaXN0SXQ7CmNsYXNzIFFTaWduYWxEaWN0OwpjbGFzcyBRU2lnbmFsRGljdEl0
OwpjbGFzcyBRT2JqZWN0TGlzdDsKY2xhc3MgUU9iamVjdExpc3RJdDsKY2xhc3MgUU1lbWJlckRp
Y3Q7CiMgNDQgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMv
QlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiIDEKIyA0MyAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiCiMgMSAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xY3N0cmluZy5oIiAxCiMgNDMgIi91c3Ivc3JjL3Bh
Y2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKIyAxICIvdXNyL3NyYy9w
YWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcnJheS5oIiAxCiMgNDIgIi91c3Ivc3Jj
L3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFycmF5LmgiCiMgMSAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2FycmF5LmgiIDEKIyA0MiAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2FycmF5LmgiCiMgMSAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc2hhcmVkLmgiIDEKIyA0NiAiL3Vz
ci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc2hhcmVkLmgiCnN0cnVjdCBR
U2hhcmVkCnsKICAgIFFTaGFyZWQoKSB7IGNvdW50ID0gMTsgfQogICAgdm9pZCByZWYoKSB7IGNv
dW50Kys7IH0KICAgIGJvb2wgZGVyZWYoKSB7IHJldHVybiAhLS1jb3VudDsgfQogICAgdWludCBj
b3VudDsKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2FycmF5LmgiIDIKCgoKY2xhc3MgUUdBcnJheQp7CmZyaWVuZCBjbGFzcyBRQnVmZmVyOwpwdWJs
aWM6CgogICAgc3RydWN0IGFycmF5X2RhdGEgOiBwdWJsaWMgUVNoYXJlZCB7CiAgICAgICAgYXJy
YXlfZGF0YSgpIHsgZGF0YT0wOyBsZW49MDsgfQogICAgICAgIGNoYXIgKmRhdGE7CiAgICAgICAg
dWludCBsZW47CiAgICB9OwogICAgUUdBcnJheSgpOwpwcm90ZWN0ZWQ6CiAgICBRR0FycmF5KCBp
bnQsIGludCApOwogICAgUUdBcnJheSggaW50IHNpemUgKTsKICAgIFFHQXJyYXkoIGNvbnN0IFFH
QXJyYXkgJmEgKTsKICAgIHZpcnR1YWwgflFHQXJyYXkoKTsKCiAgICBRR0FycmF5ICZvcGVyYXRv
cj0oIGNvbnN0IFFHQXJyYXkgJmEgKSB7IHJldHVybiBhc3NpZ24oIGEgKTsgfQoKICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKSB7IGR1cGxpY2F0ZSgqdGhpcyk7IH0KCiAgICBjaGFyICpkYXRhKCkg
Y29uc3QgeyByZXR1cm4gc2hkLT5kYXRhOyB9CiAgICB1aW50IG5yZWZzKCkgY29uc3QgeyByZXR1
cm4gc2hkLT5jb3VudDsgfQogICAgdWludCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2hkLT5sZW47
IH0KICAgIGJvb2wgaXNFcXVhbCggY29uc3QgUUdBcnJheSAmYSApIGNvbnN0OwoKICAgIGJvb2wg
cmVzaXplKCB1aW50IG5ld3NpemUgKTsKCiAgICBib29sIGZpbGwoIGNvbnN0IGNoYXIgKmQsIGlu
dCBsZW4sIHVpbnQgc3ogKTsKCiAgICBRR0FycmF5ICZhc3NpZ24oIGNvbnN0IFFHQXJyYXkgJmEg
KTsKICAgIFFHQXJyYXkgJmFzc2lnbiggY29uc3QgY2hhciAqZCwgdWludCBsZW4gKTsKICAgIFFH
QXJyYXkgJmR1cGxpY2F0ZSggY29uc3QgUUdBcnJheSAmYSApOwogICAgUUdBcnJheSAmZHVwbGlj
YXRlKCBjb25zdCBjaGFyICpkLCB1aW50IGxlbiApOwogICAgdm9pZCBzdG9yZSggY29uc3QgY2hh
ciAqZCwgdWludCBsZW4gKTsKCiAgICBhcnJheV9kYXRhICpzaGFyZWRCbG9jaygpIGNvbnN0IHsg
cmV0dXJuIHNoZDsgfQogICAgdm9pZCBzZXRTaGFyZWRCbG9jayggYXJyYXlfZGF0YSAqcCApIHsg
c2hkPShhcnJheV9kYXRhKilwOyB9CgogICAgUUdBcnJheSAmc2V0UmF3RGF0YSggY29uc3QgY2hh
ciAqZCwgdWludCBsZW4gKTsKICAgIHZvaWQgcmVzZXRSYXdEYXRhKCBjb25zdCBjaGFyICpkLCB1
aW50IGxlbiApOwoKICAgIGludCBmaW5kKCBjb25zdCBjaGFyICpkLCB1aW50IGluZGV4LCB1aW50
IHN6ICkgY29uc3Q7CiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNoYXIgKmQsIHVpbnQgc3ogKSBj
b25zdDsKCiAgICB2b2lkIHNvcnQoIHVpbnQgc3ogKTsKICAgIGludCBic2VhcmNoKCBjb25zdCBj
aGFyICpkLCB1aW50IHN6ICkgY29uc3Q7CgogICAgY2hhciAqYXQoIHVpbnQgaW5kZXggKSBjb25z
dDsKCiAgICBib29sIHNldEV4cGFuZCggdWludCBpbmRleCwgY29uc3QgY2hhciAqZCwgdWludCBz
eiApOwoKcHJvdGVjdGVkOgogICAgdmlydHVhbCBhcnJheV9kYXRhICpuZXdEYXRhKCk7CiAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YSggYXJyYXlfZGF0YSAqcCApOwoKcHJpdmF0ZToKICAgIHN0
YXRpYyB2b2lkIG1zZ19pbmRleCggdWludCApOwogICAgYXJyYXlfZGF0YSAqc2hkOwp9OwoKCmlu
bGluZSBjaGFyICpRR0FycmF5OjphdCggdWludCBpbmRleCApIGNvbnN0CnsKCiAgICBpZiAoIGlu
ZGV4ID49IHNpemUoKSApIHsKICAgICAgICBtc2dfaW5kZXgoIGluZGV4ICk7CiAgICAgICAgaW5k
ZXggPSAwOwogICAgfQoKICAgIHJldHVybiAmc2hkLT5kYXRhW2luZGV4XTsKfQojIDQzICIvdXNy
L3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcnJheS5oIiAyCgoKCnRlbXBs
YXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFBcnJheSA6IHB1YmxpYyBRR0FycmF5CnsKcHVibGljOgog
ICAgdHlwZWRlZiB0eXBlKiBJdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgdHlwZSogQ29uc3RJ
dGVyYXRvcjsKICAgIHR5cGVkZWYgdHlwZSBWYWx1ZVR5cGU7Cgpwcm90ZWN0ZWQ6CiAgICBRQXJy
YXkoIGludCwgaW50ICkgOiBRR0FycmF5KCAwLCAwICkge30KCnB1YmxpYzoKICAgIFFBcnJheSgp
IHt9CiAgICBRQXJyYXkoIGludCBzaXplICkgOiBRR0FycmF5KHNpemUqc2l6ZW9mKHR5cGUpKSB7
fQogICAgUUFycmF5KCBjb25zdCBRQXJyYXk8dHlwZT4gJmEgKSA6IFFHQXJyYXkoYSkge30KICAg
flFBcnJheSgpIHt9CiAgICBRQXJyYXk8dHlwZT4gJm9wZXJhdG9yPShjb25zdCBRQXJyYXk8dHlw
ZT4gJmEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKFFBcnJheTx0
eXBlPiYpUUdBcnJheTo6YXNzaWduKGEpOyB9CiAgICB0eXBlICpkYXRhKCkgY29uc3QgeyByZXR1
cm4gKHR5cGUgKilRR0FycmF5OjpkYXRhKCk7IH0KICAgIHVpbnQgbnJlZnMoKSBjb25zdCB7IHJl
dHVybiBRR0FycmF5OjpucmVmcygpOyB9CiAgICB1aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBR
R0FycmF5OjpzaXplKCkvc2l6ZW9mKHR5cGUpOyB9CiAgICB1aW50IGNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpOyB9CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0FycmF5
OjpzaXplKCkgPT0gMDsgfQogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBRR0FycmF5
OjpkYXRhKCkgPT0gMDsgfQogICAgYm9vbCByZXNpemUoIHVpbnQgc2l6ZSApIHsgcmV0dXJuIFFH
QXJyYXk6OnJlc2l6ZShzaXplKnNpemVvZih0eXBlKSk7IH0KICAgIGJvb2wgdHJ1bmNhdGUoIHVp
bnQgcG9zICkgeyByZXR1cm4gUUdBcnJheTo6cmVzaXplKHBvcypzaXplb2YodHlwZSkpOyB9CiAg
ICBib29sIGZpbGwoIGNvbnN0IHR5cGUgJmQsIGludCBzaXplID0gLTEgKQogICAgICAgIHsgcmV0
dXJuIFFHQXJyYXk6OmZpbGwoKGNoYXIqKSZkLHNpemUsc2l6ZW9mKHR5cGUpICk7IH0KICAgIHZv
aWQgZGV0YWNoKCkgeyBRR0FycmF5OjpkZXRhY2goKTsgfQogICAgUUFycmF5PHR5cGU+IGNvcHko
KSBjb25zdAogICAgICAgIHsgUUFycmF5PHR5cGU+IHRtcDsgcmV0dXJuIHRtcC5kdXBsaWNhdGUo
KnRoaXMpOyB9CiAgICBRQXJyYXk8dHlwZT4mIGFzc2lnbiggY29uc3QgUUFycmF5PHR5cGU+JiBh
ICkKICAgICAgICB7IHJldHVybiAoUUFycmF5PHR5cGU+JilRR0FycmF5Ojphc3NpZ24oYSk7IH0K
ICAgIFFBcnJheTx0eXBlPiYgYXNzaWduKCBjb25zdCB0eXBlICphLCB1aW50IG4gKQogICAgICAg
IHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFHQXJyYXk6OmFzc2lnbigoY2hhciopYSxuKnNpemVv
Zih0eXBlKSk7IH0KICAgIFFBcnJheTx0eXBlPiYgZHVwbGljYXRlKCBjb25zdCBRQXJyYXk8dHlw
ZT4mIGEgKQogICAgICAgIHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFHQXJyYXk6OmR1cGxpY2F0
ZShhKTsgfQogICAgUUFycmF5PHR5cGU+JiBkdXBsaWNhdGUoIGNvbnN0IHR5cGUgKmEsIHVpbnQg
biApCiAgICAgICAgeyByZXR1cm4gKFFBcnJheTx0eXBlPiYpUUdBcnJheTo6ZHVwbGljYXRlKChj
aGFyKilhLG4qc2l6ZW9mKHR5cGUpKTsgfQogICAgUUFycmF5PHR5cGU+JiBzZXRSYXdEYXRhKCBj
b25zdCB0eXBlICphLCB1aW50IG4gKQogICAgICAgIHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFH
QXJyYXk6OnNldFJhd0RhdGEoKGNoYXIqKWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbipzaXplb2YodHlwZSkpOyB9CiAgICB2b2lkIHJlc2V0
UmF3RGF0YSggY29uc3QgdHlwZSAqYSwgdWludCBuICkKICAgICAgICB7IFFHQXJyYXk6OnJlc2V0
UmF3RGF0YSgoY2hhciopYSxuKnNpemVvZih0eXBlKSk7IH0KICAgIGludCBmaW5kKCBjb25zdCB0
eXBlICZkLCB1aW50IGk9MCApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gUUdBcnJheTo6ZmluZCgo
Y2hhciopJmQsaSxzaXplb2YodHlwZSkpOyB9CiAgICBpbnQgY29udGFpbnMoIGNvbnN0IHR5cGUg
JmQgKSBjb25zdAogICAgICAgIHsgcmV0dXJuIFFHQXJyYXk6OmNvbnRhaW5zKChjaGFyKikmZCxz
aXplb2YodHlwZSkpOyB9CiAgICB2b2lkIHNvcnQoKSB7IFFHQXJyYXk6OnNvcnQoc2l6ZW9mKHR5
cGUpKTsgfQogICAgaW50IGJzZWFyY2goIGNvbnN0IHR5cGUgJmQgKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIFFHQXJyYXk6OmJzZWFyY2goKGNvbnN0IGNoYXIqKSZkLHNpemVvZih0eXBlKSk7IH0K
ICAgIHR5cGUmIG9wZXJhdG9yW10oIGludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiAodHlw
ZSAmKSgqKHR5cGUgKilRR0FycmF5OjphdChpKnNpemVvZih0eXBlKSkpOyB9CiAgICB0eXBlJiBh
dCggdWludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiAodHlwZSAmKSgqKHR5cGUgKilRR0Fy
cmF5OjphdChpKnNpemVvZih0eXBlKSkpOyB9CiAgICAgICAgIG9wZXJhdG9yIGNvbnN0IHR5cGUq
KCkgY29uc3QgeyByZXR1cm4gKGNvbnN0IHR5cGUgKilRR0FycmF5OjpkYXRhKCk7IH0KICAgIGJv
b2wgb3BlcmF0b3I9PSggY29uc3QgUUFycmF5PHR5cGU+ICZhICkgY29uc3QgeyByZXR1cm4gaXNF
cXVhbChhKTsgfQogICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRQXJyYXk8dHlwZT4gJmEgKSBj
b25zdCB7IHJldHVybiAhaXNFcXVhbChhKTsgfQogICAgSXRlcmF0b3IgYmVnaW4oKSB7IHJldHVy
biBkYXRhKCk7IH0KICAgIEl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsg
fQogICAgQ29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsgfQogICAg
Q29uc3RJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KfTsK
IyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xY3N0cmluZy5o
IiAyCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDI2ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMgNAoj
IDI5MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMv
Y2RlZnMuaCIgMSAzIDQKIyAyOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDMx
NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1
YnMuaCIgMSAzIDQKIyAzMTUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDI3ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9s
aWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg
NAojIDIxMyAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1t
b3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAq
bWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikK
ICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHZv
aWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsK
CmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBj
aGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGlu
dCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90
IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
aW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4
ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS94bG9j
YWxlLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9j
YWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9f
Y3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5
cGVfdG91cHBlcjsKCgogIGNvbnN0IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90Owoj
IDExNSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc3RyY29sbF9s
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90
IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0
IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CiMgMTYwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKCmV4dGVy
biBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3Ry
Y3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4g
KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFy
ICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cg
KCk7CgoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRo
cm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3Ry
Y2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCgpleHRlcm4g
dm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0YWNr
bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3Qg
X19uZWVkbGVsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIHRocm93ICgpOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0
IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhs
ZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJu
IGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIg
KnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg
dGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9p
ZCAqX19kZXN0LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9p
ZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qg
dm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBf
X2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQg
ZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0
cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2Vj
bXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQg
c3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93
ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIg
KnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYykKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBu
Y3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICpt
ZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hh
ciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CiMgMzc5ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAp9CiMgNTEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIgMgojIDc4ICIvdXNyL3NyYy9wYWNrYWdlcy9C
VUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjc3RyaW5nLmgiCiB2b2lkICpxbWVtbW92ZSggdm9pZCAq
ZHN0LCBjb25zdCB2b2lkICpzcmMsIHVpbnQgbGVuICk7CgoKCgoKIGNoYXIgKnFzdHJkdXAoIGNv
bnN0IGNoYXIgKiApOwoKIGlubGluZSB1aW50IGNzdHJsZW4oIGNvbnN0IGNoYXIgKnN0ciApCnsg
cmV0dXJuIHN0cmxlbihzdHIpOyB9CgogaW5saW5lIHVpbnQgcXN0cmxlbiggY29uc3QgY2hhciAq
c3RyICkKeyByZXR1cm4gc3RyID8gc3RybGVuKHN0cikgOiAwOyB9CgogaW5saW5lIGNoYXIgKmNz
dHJjcHkoIGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjICkKeyByZXR1cm4gc3RyY3B5KGRzdCxz
cmMpOyB9CgogaW5saW5lIGNoYXIgKnFzdHJjcHkoIGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3Jj
ICkKeyByZXR1cm4gc3JjID8gc3RyY3B5KGRzdCwgc3JjKSA6IDA7IH0KCiBjaGFyICpxc3RybmNw
eSggY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHVpbnQgbGVuICk7CgogaW5saW5lIGludCBj
c3RyY21wKCBjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIyICkKeyByZXR1cm4gc3Ry
Y21wKHN0cjEsc3RyMik7IH0KCiBpbmxpbmUgaW50IHFzdHJjbXAoIGNvbnN0IGNoYXIgKnN0cjEs
IGNvbnN0IGNoYXIgKnN0cjIgKQp7IHJldHVybiAoc3RyMSAmJiBzdHIyKSA/IHN0cmNtcChzdHIx
LHN0cjIpIDogKGludCkoKGxvbmcpc3RyMiAtIChsb25nKXN0cjEpOyB9CgogaW5saW5lIGludCBj
c3RybmNtcCggY29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgdWludCBsZW4gKQp7
IHJldHVybiBzdHJuY21wKHN0cjEsc3RyMixsZW4pOyB9CgogaW5saW5lIGludCBxc3RybmNtcCgg
Y29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgdWludCBsZW4gKQp7IHJldHVybiAo
c3RyMSAmJiBzdHIyKSA/IHN0cm5jbXAoc3RyMSxzdHIyLGxlbikgOgogICAgICAgICAgICAgICAg
ICAgICAgICAgIChpbnQpKChsb25nKXN0cjIgLSAobG9uZylzdHIxKTsgfQoKIGludCBxc3RyaWNt
cCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsKCiBpbnQgcXN0cm5pY21wKCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgdWludCBsZW4gKTsKIyAxNDcgIi91c3Ivc3JjL3BhY2thZ2Vz
L0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKIFFfVUlOVDE2IHFDaGVja3N1bSgg
Y29uc3QgY2hhciAqcywgdWludCBsZW4gKTsKIyAxNTYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKdHlwZWRlZiBRQXJyYXk8Y2hhcj4gUUJ5dGVB
cnJheTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25z
dCBRQnl0ZUFycmF5ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAm
LCBRQnl0ZUFycmF5ICYgKTsKIyAxNzMgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4y
L2luY2x1ZGUvcWNzdHJpbmcuaCIKY2xhc3MgUVJlZ0V4cDsKCmNsYXNzIFFDU3RyaW5nIDogcHVi
bGljIFFCeXRlQXJyYXkKewpwdWJsaWM6CiAgICBRQ1N0cmluZygpIHt9CiAgICBRQ1N0cmluZygg
aW50IHNpemUgKTsKICAgIFFDU3RyaW5nKCBjb25zdCBRQ1N0cmluZyAmcyApIDogUUJ5dGVBcnJh
eSggcyApIHt9CiAgICBRQ1N0cmluZyggY29uc3QgY2hhciAqc3RyICk7CiAgICBRQ1N0cmluZygg
Y29uc3QgY2hhciAqc3RyLCB1aW50IG1heGxlbiApOwoKICAgIFFDU3RyaW5nICZvcGVyYXRvcj0o
IGNvbnN0IFFDU3RyaW5nICZzICk7CiAgICBRQ1N0cmluZyAmb3BlcmF0b3I9KCBjb25zdCBjaGFy
ICpzdHIgKTsKCiAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAgICB1aW50IGxlbmd0aCgpIGNvbnN0OwogICAgYm9vbCByZXNpemUoIHVpbnQgbmV3bGVu
ICk7CiAgICBib29sIHRydW5jYXRlKCB1aW50IHBvcyApOwogICAgYm9vbCBmaWxsKCBjaGFyIGMs
IGludCBsZW4gPSAtMSApOwoKICAgIFFDU3RyaW5nIGNvcHkoKSBjb25zdDsKCiAgICBRQ1N0cmlu
ZyAmc3ByaW50ZiggY29uc3QgY2hhciAqZm9ybWF0LCAuLi4gKTsKCiAgICBpbnQgZmluZCggY2hh
ciBjLCBpbnQgaW5kZXg9MCwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQgZmluZCggY29u
c3QgY2hhciAqc3RyLCBpbnQgaW5kZXg9MCwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
ZmluZCggY29uc3QgUVJlZ0V4cCAmLCBpbnQgaW5kZXg9MCApIGNvbnN0OwogICAgaW50IGZpbmRS
ZXYoIGNoYXIgYywgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZp
bmRSZXYoIGNvbnN0IGNoYXIgKnN0ciwgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0
OwogICAgaW50IGZpbmRSZXYoIGNvbnN0IFFSZWdFeHAgJiwgaW50IGluZGV4PS0xICkgY29uc3Q7
CiAgICBpbnQgY29udGFpbnMoIGNoYXIgYywgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
Y29udGFpbnMoIGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
Y29udGFpbnMoIGNvbnN0IFFSZWdFeHAgJiApIGNvbnN0OwoKICAgIFFDU3RyaW5nIGxlZnQoIHVp
bnQgbGVuICkgY29uc3Q7CiAgICBRQ1N0cmluZyByaWdodCggdWludCBsZW4gKSBjb25zdDsKICAg
IFFDU3RyaW5nIG1pZCggdWludCBpbmRleCwgdWludCBsZW49MHhmZmZmZmZmZikgY29uc3Q7Cgog
ICAgUUNTdHJpbmcgbGVmdEp1c3RpZnkoIHVpbnQgd2lkdGgsIGNoYXIgZmlsbD0nICcsIGJvb2wg
dHJ1bmM9RkFMU0UpY29uc3Q7CiAgICBRQ1N0cmluZyByaWdodEp1c3RpZnkoIHVpbnQgd2lkdGgs
IGNoYXIgZmlsbD0nICcsYm9vbCB0cnVuYz1GQUxTRSljb25zdDsKCiAgICBRQ1N0cmluZyBsb3dl
cigpIGNvbnN0OwogICAgUUNTdHJpbmcgdXBwZXIoKSBjb25zdDsKCiAgICBRQ1N0cmluZyBzdHJp
cFdoaXRlU3BhY2UoKSBjb25zdDsKICAgIFFDU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNv
bnN0OwoKICAgIFFDU3RyaW5nICZpbnNlcnQoIHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKiApOwog
ICAgUUNTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgY2hhciApOwogICAgUUNTdHJpbmcgJmFw
cGVuZCggY29uc3QgY2hhciAqICk7CiAgICBRQ1N0cmluZyAmcHJlcGVuZCggY29uc3QgY2hhciAq
ICk7CiAgICBRQ1N0cmluZyAmcmVtb3ZlKCB1aW50IGluZGV4LCB1aW50IGxlbiApOwogICAgUUNT
dHJpbmcgJnJlcGxhY2UoIHVpbnQgaW5kZXgsIHVpbnQgbGVuLCBjb25zdCBjaGFyICogKTsKICAg
IFFDU3RyaW5nICZyZXBsYWNlKCBjb25zdCBRUmVnRXhwICYsIGNvbnN0IGNoYXIgKiApOwoKICAg
IHNob3J0IHRvU2hvcnQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIHVzaG9ydCB0b1VTaG9ydCgg
Ym9vbCAqb2s9MCApIGNvbnN0OwogICAgaW50IHRvSW50KCBib29sICpvaz0wICkgY29uc3Q7CiAg
ICB1aW50IHRvVUludCggYm9vbCAqb2s9MCApIGNvbnN0OwogICAgbG9uZyB0b0xvbmcoIGJvb2wg
Km9rPTAgKSBjb25zdDsKICAgIHVsb25nIHRvVUxvbmcoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAg
IGZsb2F0IHRvRmxvYXQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZSgg
Ym9vbCAqb2s9MCApIGNvbnN0OwoKICAgIFFDU3RyaW5nICZzZXRTdHIoIGNvbnN0IGNoYXIgKnMg
KTsKICAgIFFDU3RyaW5nICZzZXROdW0oIHNob3J0ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVtKCB1
c2hvcnQgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIGludCApOwogICAgUUNTdHJpbmcgJnNldE51
bSggdWludCApOwogICAgUUNTdHJpbmcgJnNldE51bSggbG9uZyApOwogICAgUUNTdHJpbmcgJnNl
dE51bSggdWxvbmcgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIGZsb2F0LCBjaGFyIGY9J2cnLCBp
bnQgcHJlYz02ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVtKCBkb3VibGUsIGNoYXIgZj0nZycsIGlu
dCBwcmVjPTYgKTsKCiAgICBib29sIHNldEV4cGFuZCggdWludCBpbmRleCwgY2hhciBjICk7Cgog
ICAgICAgICAgICAgICAgb3BlcmF0b3IgY29uc3QgY2hhciAqKCkgY29uc3Q7CiAgICBRQ1N0cmlu
ZyAmb3BlcmF0b3IrPSggY29uc3QgY2hhciAqc3RyICk7CiAgICBRQ1N0cmluZyAmb3BlcmF0b3Ir
PSggY2hhciBjICk7Cn07CgoKCgoKCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJl
YW0gJiwgY29uc3QgUUNTdHJpbmcgJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRh
U3RyZWFtICYsIFFDU3RyaW5nICYgKTsKCgoKCgoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6
b3BlcmF0b3I9KCBjb25zdCBRQ1N0cmluZyAmcyApCnsgcmV0dXJuIChRQ1N0cmluZyYpYXNzaWdu
KCBzICk7IH0KCmlubGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6Om9wZXJhdG9yPSggY29uc3QgY2hh
ciAqc3RyICkKeyByZXR1cm4gKFFDU3RyaW5nJilkdXBsaWNhdGUoIHN0ciwgcXN0cmxlbihzdHIp
KzEgKTsgfQoKaW5saW5lIGJvb2wgUUNTdHJpbmc6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIGRh
dGEoKSA9PSAwOyB9CgppbmxpbmUgYm9vbCBRQ1N0cmluZzo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0
dXJuIGRhdGEoKSA9PSAwIHx8ICpkYXRhKCkgPT0gJ1wwJzsgfQoKaW5saW5lIHVpbnQgUUNTdHJp
bmc6Omxlbmd0aCgpIGNvbnN0CnsgcmV0dXJuIHFzdHJsZW4oIGRhdGEoKSApOyB9CgppbmxpbmUg
Ym9vbCBRQ1N0cmluZzo6dHJ1bmNhdGUoIHVpbnQgcG9zICkKeyByZXR1cm4gcmVzaXplKHBvcysx
KTsgfQoKaW5saW5lIFFDU3RyaW5nIFFDU3RyaW5nOjpjb3B5KCkgY29uc3QKeyByZXR1cm4gUUNT
dHJpbmcoIGRhdGEoKSApOyB9CgppbmxpbmUgUUNTdHJpbmcgJlFDU3RyaW5nOjpwcmVwZW5kKCBj
b25zdCBjaGFyICpzICkKeyByZXR1cm4gaW5zZXJ0KDAscyk7IH0KCmlubGluZSBRQ1N0cmluZyAm
UUNTdHJpbmc6OmFwcGVuZCggY29uc3QgY2hhciAqcyApCnsgcmV0dXJuIG9wZXJhdG9yKz0ocyk7
IH0KCmlubGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6OnNldE51bSggc2hvcnQgbiApCnsgcmV0dXJu
IHNldE51bSgobG9uZyluKTsgfQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCB1
c2hvcnQgbiApCnsgcmV0dXJuIHNldE51bSgodWxvbmcpbik7IH0KCmlubGluZSBRQ1N0cmluZyAm
UUNTdHJpbmc6OnNldE51bSggaW50IG4gKQp7IHJldHVybiBzZXROdW0oKGxvbmcpbik7IH0KCmlu
bGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6OnNldE51bSggdWludCBuICkKeyByZXR1cm4gc2V0TnVt
KCh1bG9uZyluKTsgfQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCBmbG9hdCBu
LCBjaGFyIGYsIGludCBwcmVjICkKeyByZXR1cm4gc2V0TnVtKChkb3VibGUpbixmLHByZWMpOyB9
CgppbmxpbmUgUUNTdHJpbmc6Om9wZXJhdG9yIGNvbnN0IGNoYXIgKigpIGNvbnN0CnsgcmV0dXJu
IChjb25zdCBjaGFyICopZGF0YSgpOyB9CgoKCgoKCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsgcmV0dXJuIHFzdHJjbXAo
czEuZGF0YSgpLHMyLmRhdGEoKSkgPT0gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNv
bnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRh
dGEoKSxzMikgPT0gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGNoYXIgKnMx
LCBjb25zdCBRQ1N0cmluZyAmczIgKQp7IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEoKSkgPT0g
MDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3Qg
UUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChzMS5kYXRhKCksczIuZGF0YSgpKSAhPSAw
OyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUUNTdHJpbmcgJnMxLCBjb25zdCBj
aGFyICpzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEuZGF0YSgpLHMyKSAhPSAwOyB9CgogaW5saW5l
IGJvb2wgb3BlcmF0b3IhPSggY29uc3QgY2hhciAqczEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsg
cmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSAhPSAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0
b3I8KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IFFDU3RyaW5nJiBzMiApCnsgcmV0dXJuIHFz
dHJjbXAoczEuZGF0YSgpLHMyLmRhdGEoKSkgPCAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I8
KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICkKeyByZXR1cm4gcXN0cmNtcChz
MS5kYXRhKCksczIpIDwgMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgY2hhciAq
czEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSA8
IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0
IGNoYXIgKnMyICkKeyByZXR1cm4gcXN0cmNtcChzMS5kYXRhKCksczIpIDw9IDA7IH0KCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBjaGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkK
eyByZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRhKCkpIDw9IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj4oIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3Ry
Y21wKHMxLmRhdGEoKSxzMikgPiAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBj
aGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRh
KCkpID4gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IFFDU3RyaW5nICZzMSwg
Y29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRhdGEoKSxzMikgPj0gMDsgfQoK
IGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBRQ1N0cmluZyAm
czIgKQp7IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEoKSkgPj0gMDsgfQoKIGlubGluZSBRQ1N0
cmluZyBvcGVyYXRvcisoIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkK
ewogICAgUUNTdHJpbmcgdG1wKCBzMS5kYXRhKCkgKTsKICAgIHRtcCArPSBzMjsKICAgIHJldHVy
biB0bXA7Cn0KCiBpbmxpbmUgUUNTdHJpbmcgb3BlcmF0b3IrKCBjb25zdCBRQ1N0cmluZyAmczEs
IGNvbnN0IGNoYXIgKnMyICkKewogICAgUUNTdHJpbmcgdG1wKCBzMS5kYXRhKCkgKTsKICAgIHRt
cCArPSBzMjsKICAgIHJldHVybiB0bXA7Cn0KCiBpbmxpbmUgUUNTdHJpbmcgb3BlcmF0b3IrKCBj
b25zdCBjaGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKewogICAgUUNTdHJpbmcgdG1wKCBz
MSApOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRQ1N0cmluZyBv
cGVyYXRvcisoIGNvbnN0IFFDU3RyaW5nICZzMSwgY2hhciBjMiApCnsKICAgIFFDU3RyaW5nIHRt
cCggczEuZGF0YSgpICk7CiAgICB0bXAgKz0gYzI7CiAgICByZXR1cm4gdG1wOwp9CgogaW5saW5l
IFFDU3RyaW5nIG9wZXJhdG9yKyggY2hhciBjMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKewogICAg
UUNTdHJpbmcgdG1wOwogICAgdG1wICs9IGMxOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRt
cDsKfQojIDQ0ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJp
bmcuaCIgMgoKCgoKCgoKY2xhc3MgUVJlZ0V4cDsKY2xhc3MgUVN0cmluZzsKY2xhc3MgUUNoYXJS
ZWY7CgpjbGFzcyBRQ2hhciB7CnB1YmxpYzoKICAgIFFDaGFyKCk7CiAgICBRQ2hhciggY2hhciBj
ICk7CiAgICBRQ2hhciggdWNoYXIgYyApOwogICAgUUNoYXIoIHVjaGFyIGMsIHVjaGFyIHIgKTsK
ICAgIFFDaGFyKCBjb25zdCBRQ2hhciYgYyApOwogICAgUUNoYXIoIHVzaG9ydCByYyApOwogICAg
UUNoYXIoIHNob3J0IHJjICk7CiAgICBRQ2hhciggdWludCByYyApOwogICAgUUNoYXIoIGludCBy
YyApOwoKICAgIHN0YXRpYyBjb25zdCBRQ2hhciBudWxsOwogICAgc3RhdGljIGNvbnN0IFFDaGFy
IHJlcGxhY2VtZW50OwogICAgc3RhdGljIGNvbnN0IFFDaGFyIGJ5dGVPcmRlck1hcms7CiAgICBz
dGF0aWMgY29uc3QgUUNoYXIgYnl0ZU9yZGVyU3dhcHBlZDsKICAgIHN0YXRpYyBjb25zdCBRQ2hh
ciBuYnNwOwoKCgogICAgZW51bSBDYXRlZ29yeQogICAgewogICAgICAgIE5vQ2F0ZWdvcnksCgog
ICAgICAgIE1hcmtfTm9uU3BhY2luZywKICAgICAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcsCiAg
ICAgICAgTWFya19FbmNsb3NpbmcsCgogICAgICAgIE51bWJlcl9EZWNpbWFsRGlnaXQsCiAgICAg
ICAgTnVtYmVyX0xldHRlciwKICAgICAgICBOdW1iZXJfT3RoZXIsCgogICAgICAgIFNlcGFyYXRv
cl9TcGFjZSwKICAgICAgICBTZXBhcmF0b3JfTGluZSwKICAgICAgICBTZXBhcmF0b3JfUGFyYWdy
YXBoLAoKICAgICAgICBPdGhlcl9Db250cm9sLAogICAgICAgIE90aGVyX0Zvcm1hdCwKICAgICAg
ICBPdGhlcl9TdXJyb2dhdGUsCiAgICAgICAgT3RoZXJfUHJpdmF0ZVVzZSwKICAgICAgICBPdGhl
cl9Ob3RBc3NpZ25lZCwKCiAgICAgICAgTGV0dGVyX1VwcGVyY2FzZSwKICAgICAgICBMZXR0ZXJf
TG93ZXJjYXNlLAogICAgICAgIExldHRlcl9UaXRsZWNhc2UsCiAgICAgICAgTGV0dGVyX01vZGlm
aWVyLAogICAgICAgIExldHRlcl9PdGhlciwKCiAgICAgICAgUHVuY3R1YXRpb25fQ29ubmVjdG9y
LAogICAgICAgIFB1bmN0dWF0aW9uX0Rhc2ssCiAgICAgICAgUHVuY3R1YXRpb25fT3BlbiwKICAg
ICAgICBQdW5jdHVhdGlvbl9DbG9zZSwKICAgICAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUs
CiAgICAgICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSwKICAgICAgICBQdW5jdHVhdGlvbl9PdGhl
ciwKCiAgICAgICAgU3ltYm9sX01hdGgsCiAgICAgICAgU3ltYm9sX0N1cnJlbmN5LAogICAgICAg
IFN5bWJvbF9Nb2RpZmllciwKICAgICAgICBTeW1ib2xfT3RoZXIKICAgIH07CgogICAgZW51bSBE
aXJlY3Rpb24KICAgIHsKICAgICAgICBEaXJMLCBEaXJSLCBEaXJFTiwgRGlyRVMsIERpckVULCBE
aXJBTiwgRGlyQ1MsIERpckIsIERpclMsIERpcldTLCBEaXJPTiwKICAgICAgICBEaXJMUkUsIERp
ckxSTywgRGlyQUwsIERpclJMRSwgRGlyUkxPLCBEaXJQREYsIERpck5TTSwgRGlyQk4KICAgIH07
CgogICAgZW51bSBEZWNvbXBvc2l0aW9uCiAgICB7CiAgICAgICAgU2luZ2xlLCBDYW5vbmljYWws
IEZvbnQsIE5vQnJlYWssIEluaXRpYWwsIE1lZGlhbCwKICAgICAgICBGaW5hbCwgSXNvbGF0ZWQs
IENpcmNsZSwgU3VwZXIsIFN1YiwgVmVydGljYWwsCiAgICAgICAgV2lkZSwgTmFycm93LCBTbWFs
bCwgU3F1YXJlLCBDb21wYXQsIEZyYWN0aW9uCiAgICB9OwoKICAgIGVudW0gSm9pbmluZwogICAg
ewogICAgICAgIE90aGVySm9pbmluZywgRHVhbCwgUmlnaHQsIENlbnRlcgogICAgfTsKCgoKICAg
IGludCBkaWdpdFZhbHVlKCkgY29uc3Q7CiAgICBRQ2hhciBsb3dlcigpIGNvbnN0OwogICAgUUNo
YXIgdXBwZXIoKSBjb25zdDsKCiAgICBDYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0OwogICAgRGly
ZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwogICAgSm9pbmluZyBqb2luaW5nKCkgY29uc3Q7CiAg
ICBib29sIG1pcnJvcmVkKCkgY29uc3Q7CiAgICBRQ2hhciBtaXJyb3JlZENoYXIoKSBjb25zdDsK
ICAgIFFTdHJpbmcgZGVjb21wb3NpdGlvbigpIGNvbnN0OwogICAgRGVjb21wb3NpdGlvbiBkZWNv
bXBvc2l0aW9uVGFnKCkgY29uc3Q7CgogICAgY2hhciBsYXRpbjEoKSBjb25zdCB7IHJldHVybiBy
dyA/IDAgOiBjbDsgfQogICAgdXNob3J0IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiAocncgPDwg
OCkgfCBjbDsgfQoKCiAgICBvcGVyYXRvciBjaGFyKCkgY29uc3QgeyByZXR1cm4gbGF0aW4xKCk7
IH0KCgogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiB1bmljb2RlKCk9PTA7IH0KICAg
IGJvb2wgaXNQcmludCgpIGNvbnN0OwogICAgYm9vbCBpc1B1bmN0KCkgY29uc3Q7CiAgICBib29s
IGlzU3BhY2UoKSBjb25zdDsKICAgIGJvb2wgaXNNYXJrKCkgY29uc3Q7CiAgICBib29sIGlzTGV0
dGVyKCkgY29uc3Q7CiAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICBib29sIGlzTGV0dGVy
T3JOdW1iZXIoKSBjb25zdDsKICAgIGJvb2wgaXNEaWdpdCgpIGNvbnN0OwoKICAgIHVjaGFyJiBj
ZWxsKCkgeyByZXR1cm4gY2w7IH0KICAgIHVjaGFyJiByb3coKSB7IHJldHVybiBydzsgfQogICAg
dWNoYXIgY2VsbCgpIGNvbnN0IHsgcmV0dXJuIGNsOyB9CiAgICB1Y2hhciByb3coKSBjb25zdCB7
IHJldHVybiBydzsgfQoKICAgIHN0YXRpYyBib29sIG5ldHdvcmtPcmRlcmVkKCkgeyByZXR1cm4g
KGludCluZXRfb3JkZXJlZCA9PSAxOyB9CgogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9
PSggY2hhciBjaCwgUUNoYXIgYyApOwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9PSgg
UUNoYXIgYywgY2hhciBjaCApOwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9PSggUUNo
YXIgYzEsIFFDaGFyIGMyICk7CiAgICBmcmllbmQgaW5saW5lIGludCBvcGVyYXRvciE9KCBRQ2hh
ciBjMSwgUUNoYXIgYzIgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yIT0oIGNoYXIg
Y2gsIFFDaGFyIGMgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMs
IGNoYXIgY2ggKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIFFDaGFyIGMsIGNo
YXIgY2ggKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIGNoYXIgY2gsIFFDaGFy
IGMgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIFFDaGFyIGMxLCBRQ2hhciBj
MiApOwoKcHJpdmF0ZToKCgoKICAgIHVjaGFyIHJ3OwogICAgdWNoYXIgY2w7CgoKCiAgICBlbnVt
IHsgbmV0X29yZGVyZWQgPSAxIH07CiMgMjAyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0y
LjMuMi9pbmNsdWRlL3FzdHJpbmcuaCIKfSA7CgppbmxpbmUgUUNoYXI6OlFDaGFyKCkKewogICAg
cncgPSAwOyBjbCA9IDA7CgoKCn0KaW5saW5lIFFDaGFyOjpRQ2hhciggY2hhciBjICkKewogICAg
cncgPSAwOyBjbCA9ICh1Y2hhciljOwoKCgp9CmlubGluZSBRQ2hhcjo6UUNoYXIoIHVjaGFyIGMg
KQp7CiAgICBydyA9IDA7IGNsID0gYzsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1Y2hhciBj
LCB1Y2hhciByICkKewogICAgcncgPSByOyBjbCA9IGM7CgoKCn0KaW5saW5lIFFDaGFyOjpRQ2hh
ciggY29uc3QgUUNoYXImIGMgKQp7CiAgICBydyA9IGMucnc7IGNsID0gYy5jbDsKCgoKfQppbmxp
bmUgUUNoYXI6OlFDaGFyKCB1c2hvcnQgcmMgKQp7CiAgICBydyA9ICh1Y2hhcikoKHJjPj44KSYw
eGZmKTsgY2wgPSAodWNoYXIpKHJjJjB4ZmYpOwoKCgp9CmlubGluZSBRQ2hhcjo6UUNoYXIoIHNo
b3J0IHJjICkKewogICAgcncgPSAodWNoYXIpKChyYz4+OCkmMHhmZik7IGNsID0gKHVjaGFyKShy
YyYweGZmKTsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1aW50IHJjICkKewogICAgcncgPSAo
dWNoYXIpKChyYz4+OCkmMHhmZik7IGNsID0gKHVjaGFyKShyYyYweGZmKTsKCgoKfQppbmxpbmUg
UUNoYXI6OlFDaGFyKCBpbnQgcmMgKQp7CiAgICBydyA9ICh1Y2hhcikoKHJjPj44KSYweGZmKTsg
Y2wgPSAodWNoYXIpKHJjJjB4ZmYpOwoKCgp9CgoKaW5saW5lIGludCBvcGVyYXRvcj09KCBjaGFy
IGNoLCBRQ2hhciBjICkKewogICAgcmV0dXJuIGNoID09IGMuY2wgJiYgIWMucnc7Cn0KCmlubGlu
ZSBpbnQgb3BlcmF0b3I9PSggUUNoYXIgYywgY2hhciBjaCApCnsKICAgIHJldHVybiBjaCA9PSBj
LmNsICYmICFjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yPT0oIFFDaGFyIGMxLCBRQ2hhciBj
MiApCnsKICAgIHJldHVybiBjMS5jbCA9PSBjMi5jbAogICAgICAgICYmIGMxLnJ3ID09IGMyLnJ3
Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMxLCBRQ2hhciBjMiApCnsKICAgIHJl
dHVybiBjMS5jbCAhPSBjMi5jbAogICAgICAgIHx8IGMxLnJ3ICE9IGMyLnJ3Owp9CgppbmxpbmUg
aW50IG9wZXJhdG9yIT0oIGNoYXIgY2gsIFFDaGFyIGMgKQp7CiAgICByZXR1cm4gY2ggIT0gYy5j
bCB8fCBjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMsIGNoYXIgY2ggKQp7
CiAgICByZXR1cm4gY2ggIT0gYy5jbCB8fCBjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yPD0o
IFFDaGFyIGMsIGNoYXIgY2ggKQp7CiAgICByZXR1cm4gIShjaCA8IGMuY2wgfHwgYy5ydyk7Cn0K
CmlubGluZSBpbnQgb3BlcmF0b3I8PSggY2hhciBjaCwgUUNoYXIgYyApCnsKICAgIHJldHVybiBj
aCA8PSBjLmNsIHx8IGMucnc7Cn0KCmlubGluZSBpbnQgb3BlcmF0b3I8PSggUUNoYXIgYzEsIFFD
aGFyIGMyICkKewogICAgcmV0dXJuIGMxLnJ3ID4gYzIucncKICAgICAgICA/IEZBTFNFCiAgICAg
ICAgOiBjMS5ydyA8IGMyLnJ3CiAgICAgICAgICAgID8gVFJVRQogICAgICAgICAgICA6IGMxLmNs
IDw9IGMyLmNsOwp9CgppbmxpbmUgaW50IG9wZXJhdG9yPj0oIFFDaGFyIGMsIGNoYXIgY2ggKSB7
IHJldHVybiBjaCA8PSBjOyB9CmlubGluZSBpbnQgb3BlcmF0b3I+PSggY2hhciBjaCwgUUNoYXIg
YyApIHsgcmV0dXJuIGMgPD0gY2g7IH0KaW5saW5lIGludCBvcGVyYXRvcj49KCBRQ2hhciBjMSwg
UUNoYXIgYzIgKSB7IHJldHVybiBjMiA8PSBjMTsgfQppbmxpbmUgaW50IG9wZXJhdG9yPCggUUNo
YXIgYywgY2hhciBjaCApIHsgcmV0dXJuICEoY2g8PWMpOyB9CmlubGluZSBpbnQgb3BlcmF0b3I8
KCBjaGFyIGNoLCBRQ2hhciBjICkgeyByZXR1cm4gIShjPD1jaCk7IH0KaW5saW5lIGludCBvcGVy
YXRvcjwoIFFDaGFyIGMxLCBRQ2hhciBjMiApIHsgcmV0dXJuICEoYzI8PWMxKTsgfQppbmxpbmUg
aW50IG9wZXJhdG9yPiggUUNoYXIgYywgY2hhciBjaCApIHsgcmV0dXJuICEoY2g+PWMpOyB9Cmlu
bGluZSBpbnQgb3BlcmF0b3I+KCBjaGFyIGNoLCBRQ2hhciBjICkgeyByZXR1cm4gIShjPj1jaCk7
IH0KaW5saW5lIGludCBvcGVyYXRvcj4oIFFDaGFyIGMxLCBRQ2hhciBjMiApIHsgcmV0dXJuICEo
YzI+PWMxKTsgfQoKCnN0cnVjdCBRU3RyaW5nRGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKICAgIFFT
dHJpbmdEYXRhKCkgOgogICAgICAgIHVuaWNvZGUoMCksIGFzY2lpKDApLCBsZW4oMCksIG1heGwo
MCksIGRpcnR5YXNjaWkoMCkgeyByZWYoKTsgfQogICAgUVN0cmluZ0RhdGEoUUNoYXIgKnUsIHVp
bnQgbCwgdWludCBtKSA6CiAgICAgICAgdW5pY29kZSh1KSwgYXNjaWkoMCksIGxlbihsKSwgbWF4
bChtKSwgZGlydHlhc2NpaSgwKSB7IH0KCiAgICB+UVN0cmluZ0RhdGEoKSB7IGlmICggdW5pY29k
ZSApIGRlbGV0ZVtdICgoY2hhciopdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgg
YXNjaWkgKSBkZWxldGVbXSBhc2NpaTsgfQoKICAgIHZvaWQgZGVsZXRlU2VsZigpOwogICAgUUNo
YXIgKnVuaWNvZGU7CiAgICBjaGFyICphc2NpaTsKICAgIHVpbnQgbGVuOwogICAgdWludCBtYXhs
OjMwOwogICAgdWludCBkaXJ0eWFzY2lpOjE7Cn07CgoKY2xhc3MgUVN0cmluZwp7CnB1YmxpYzoK
ICAgIFFTdHJpbmcoKTsKICAgIFFTdHJpbmcoIFFDaGFyICk7CiAgICBRU3RyaW5nKCBjb25zdCBR
U3RyaW5nICYgKTsKICAgIFFTdHJpbmcoIGNvbnN0IFFCeXRlQXJyYXkmICk7CiAgICBRU3RyaW5n
KCBjb25zdCBRQ2hhciogdW5pY29kZSwgdWludCBsZW5ndGggKTsKCiAgICBRU3RyaW5nKCBjb25z
dCBjaGFyICpzdHIgKTsKCiAgICB+UVN0cmluZygpOwoKICAgIFFTdHJpbmcgJm9wZXJhdG9yPSgg
Y29uc3QgUVN0cmluZyAmICk7CgogICAgUVN0cmluZyAmb3BlcmF0b3I9KCBjb25zdCBjaGFyICog
KTsKCiAgICBRU3RyaW5nICZvcGVyYXRvcj0oIGNvbnN0IFFDU3RyaW5nJiApOwogICAgUVN0cmlu
ZyAmb3BlcmF0b3I9KCBRQ2hhciBjICk7CiAgICBRU3RyaW5nICZvcGVyYXRvcj0oIGNoYXIgYyAp
OwoKICAgIHN0YXRpYyBjb25zdCBRU3RyaW5nIG51bGw7CgogICAgYm9vbCBpc051bGwoKSBjb25z
dDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgdWludCBsZW5ndGgoKSBjb25zdDsKICAg
IHZvaWQgdHJ1bmNhdGUoIHVpbnQgcG9zICk7CgoKCgogICAgdm9pZCBmaWxsKCBRQ2hhciBjLCBp
bnQgbGVuID0gLTEgKTsKCiAgICBRU3RyaW5nIGNvcHkoKSBjb25zdDsKCiAgICBRU3RyaW5nIGFy
Zyhsb25nIGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJp
bmcgYXJnKHVsb25nIGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAg
IFFTdHJpbmcgYXJnKGludCBhLCBpbnQgZmllbGR3aWR0aD0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7
CiAgICBRU3RyaW5nIGFyZyh1aW50IGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBj
b25zdDsKICAgIFFTdHJpbmcgYXJnKHNob3J0IGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNl
PTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKHVzaG9ydCBhLCBpbnQgZmllbGR3aWR0aD0wLCBp
bnQgYmFzZT0xMCkgY29uc3Q7CiAgICBRU3RyaW5nIGFyZyhjaGFyIGEsIGludCBmaWVsZHdpZHRo
PTApIGNvbnN0OwogICAgUVN0cmluZyBhcmcoUUNoYXIgYSwgaW50IGZpZWxkd2lkdGg9MCkgY29u
c3Q7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nJiBhLCBpbnQgZmllbGR3aWR0aD0wKSBj
b25zdDsKICAgIFFTdHJpbmcgYXJnKGRvdWJsZSBhLCBpbnQgZmllbGR3aWR0aD0wLCBjaGFyIGZt
dD0nZycsIGludCBwcmVjPS0xKSBjb25zdDsKCiAgICBRU3RyaW5nICZzcHJpbnRmKCBjb25zdCBj
aGFyKiBmb3JtYXQsIC4uLiApCgogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50
ZiwgMiwgMykpKQoKICAgICAgICA7CgogICAgaW50IGZpbmQoIFFDaGFyIGMsIGludCBpbmRleD0w
LCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjaGFyIGMsIGludCBpbmRleD0w
LCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjb25zdCBRU3RyaW5nICZzdHIs
IGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjb25zdCBR
UmVnRXhwICYsIGludCBpbmRleD0wICkgY29uc3Q7CgogICAgaW50IGZpbmQoIGNvbnN0IGNoYXIq
IHN0ciwgaW50IGluZGV4PTAgKSBjb25zdDsKCiAgICBpbnQgZmluZFJldiggUUNoYXIgYywgaW50
IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNoYXIgYywg
aW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNvbnN0
IFFTdHJpbmcgJnN0ciwgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50
IGZpbmRSZXYoIGNvbnN0IFFSZWdFeHAgJiwgaW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50
IGZpbmRSZXYoIGNvbnN0IGNoYXIqIHN0ciwgaW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50
IGNvbnRhaW5zKCBRQ2hhciBjLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBjb250YWlu
cyggY2hhciBjLCBib29sIGNzPVRSVUUgKSBjb25zdAogICAgICAgICAgICAgICAgICAgIHsgcmV0
dXJuIGNvbnRhaW5zKFFDaGFyKGMpLCBjcyk7IH0KCiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNo
YXIqIHN0ciwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CgogICAgaW50IGNvbnRhaW5zKCBjb25zdCBR
U3RyaW5nICZzdHIsIGJvb2wgY3M9VFJVRSApIGNvbnN0OwogICAgaW50IGNvbnRhaW5zKCBjb25z
dCBRUmVnRXhwICYgKSBjb25zdDsKCiAgICBRU3RyaW5nIGxlZnQoIHVpbnQgbGVuICkgY29uc3Q7
CiAgICBRU3RyaW5nIHJpZ2h0KCB1aW50IGxlbiApIGNvbnN0OwogICAgUVN0cmluZyBtaWQoIHVp
bnQgaW5kZXgsIHVpbnQgbGVuPTB4ZmZmZmZmZmYpIGNvbnN0OwoKICAgIFFTdHJpbmcgbGVmdEp1
c3RpZnkoIHVpbnQgd2lkdGgsIFFDaGFyIGZpbGw9JyAnLCBib29sIHRydW5jPUZBTFNFKWNvbnN0
OwogICAgUVN0cmluZyByaWdodEp1c3RpZnkoIHVpbnQgd2lkdGgsIFFDaGFyIGZpbGw9JyAnLGJv
b2wgdHJ1bmM9RkFMU0UpY29uc3Q7CgogICAgUVN0cmluZyBsb3dlcigpIGNvbnN0OwogICAgUVN0
cmluZyB1cHBlcigpIGNvbnN0OwoKICAgIFFTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7
CiAgICBRU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwoKICAgIFFTdHJpbmcgJmlu
c2VydCggdWludCBpbmRleCwgY29uc3QgUVN0cmluZyAmICk7CiAgICBRU3RyaW5nICZpbnNlcnQo
IHVpbnQgaW5kZXgsIGNvbnN0IFFDaGFyKiwgdWludCBsZW4gKTsKICAgIFFTdHJpbmcgJmluc2Vy
dCggdWludCBpbmRleCwgUUNoYXIgKTsKICAgIFFTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwg
Y2hhciBjICkgeyByZXR1cm4gaW5zZXJ0KGluZGV4LFFDaGFyKGMpKTsgfQogICAgUVN0cmluZyAm
YXBwZW5kKCBjaGFyICk7CiAgICBRU3RyaW5nICZhcHBlbmQoIFFDaGFyICk7CiAgICBRU3RyaW5n
ICZhcHBlbmQoIGNvbnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmluZyAmcHJlcGVuZCggY2hhciAp
OwogICAgUVN0cmluZyAmcHJlcGVuZCggUUNoYXIgKTsKICAgIFFTdHJpbmcgJnByZXBlbmQoIGNv
bnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmluZyAmcmVtb3ZlKCB1aW50IGluZGV4LCB1aW50IGxl
biApOwogICAgUVN0cmluZyAmcmVwbGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNvbnN0IFFT
dHJpbmcgJiApOwogICAgUVN0cmluZyAmcmVwbGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNv
bnN0IFFDaGFyKiwgdWludCBjbGVuICk7CiAgICBRU3RyaW5nICZyZXBsYWNlKCBjb25zdCBRUmVn
RXhwICYsIGNvbnN0IFFTdHJpbmcgJiApOwoKICAgIHNob3J0IHRvU2hvcnQoIGJvb2wgKm9rPTAs
IGludCBiYXNlPTEwICkgY29uc3Q7CiAgICB1c2hvcnQgdG9VU2hvcnQoIGJvb2wgKm9rPTAsIGlu
dCBiYXNlPTEwICkgY29uc3Q7CiAgICBpbnQgdG9JbnQoIGJvb2wgKm9rPTAsIGludCBiYXNlPTEw
ICkgY29uc3Q7CiAgICB1aW50IHRvVUludCggYm9vbCAqb2s9MCwgaW50IGJhc2U9MTAgKSBjb25z
dDsKICAgIGxvbmcgdG9Mb25nKCBib29sICpvaz0wLCBpbnQgYmFzZT0xMCApIGNvbnN0OwogICAg
dWxvbmcgdG9VTG9uZyggYm9vbCAqb2s9MCwgaW50IGJhc2U9MTAgKSBjb25zdDsKICAgIGZsb2F0
IHRvRmxvYXQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZSggYm9vbCAq
b2s9MCApIGNvbnN0OwoKICAgIFFTdHJpbmcgJnNldE51bSggc2hvcnQsIGludCBiYXNlPTEwICk7
CiAgICBRU3RyaW5nICZzZXROdW0oIHVzaG9ydCwgaW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcg
JnNldE51bSggaW50LCBpbnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAmc2V0TnVtKCB1aW50LCBp
bnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAmc2V0TnVtKCBsb25nLCBpbnQgYmFzZT0xMCApOwog
ICAgUVN0cmluZyAmc2V0TnVtKCB1bG9uZywgaW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcgJnNl
dE51bSggZmxvYXQsIGNoYXIgZj0nZycsIGludCBwcmVjPTYgKTsKICAgIFFTdHJpbmcgJnNldE51
bSggZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02ICk7CgogICAgc3RhdGljIFFTdHJpbmcg
bnVtYmVyKCBsb25nLCBpbnQgYmFzZT0xMCApOwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCB1
bG9uZywgaW50IGJhc2U9MTApOwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCBpbnQsIGludCBi
YXNlPTEwICk7CiAgICBzdGF0aWMgUVN0cmluZyBudW1iZXIoIHVpbnQsIGludCBiYXNlPTEwKTsK
ICAgIHN0YXRpYyBRU3RyaW5nIG51bWJlciggZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02
ICk7CgogICAgdm9pZCBzZXRFeHBhbmQoIHVpbnQgaW5kZXgsIFFDaGFyIGMgKTsKCiAgICBRU3Ry
aW5nICZvcGVyYXRvcis9KCBjb25zdCBRU3RyaW5nICZzdHIgKTsKICAgIFFTdHJpbmcgJm9wZXJh
dG9yKz0oIFFDaGFyIGMgKTsKICAgIFFTdHJpbmcgJm9wZXJhdG9yKz0oIGNoYXIgYyApOwoKCiAg
ICBRQ2hhciBhdCggdWludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiBpPGQtPmxlbiA/IGQt
PnVuaWNvZGVbaV0gOiBRQ2hhcjo6bnVsbDsgfQogICAgUUNoYXIgb3BlcmF0b3JbXSggaW50IGkg
KSBjb25zdCB7IHJldHVybiBhdCgodWludClpKTsgfQogICAgUUNoYXJSZWYgYXQoIHVpbnQgaSAp
OwogICAgUUNoYXJSZWYgb3BlcmF0b3JbXSggaW50IGkgKTsKCiAgICBRQ2hhciBjb25zdHJlZih1
aW50IGkpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gYXQoaSk7IH0KICAgIFFDaGFyJiByZWYodWlu
dCBpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGQtPmNvdW50IT0xIHx8IGk+PWQtPmxlbikK
ICAgICAgICAgICAgICAgIHN1YmF0KGkpOwogICAgICAgICAgICBkLT5kaXJ0eWFzY2lpPTE7CiAg
ICAgICAgICAgIHJldHVybiBkLT51bmljb2RlW2ldOwogICAgICAgIH0KCiAgICBjb25zdCBRQ2hh
ciogdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIGQtPnVuaWNvZGU7IH0KICAgIGNvbnN0IGNoYXIq
IGFzY2lpKCkgY29uc3Q7CiAgICBjb25zdCBjaGFyKiBsYXRpbjEoKSBjb25zdDsKICAgIHN0YXRp
YyBRU3RyaW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciosIGludCBsZW49LTEpOwoKICAgIFFDU3Ry
aW5nIHV0ZjgoKSBjb25zdDsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21VdGY4KGNvbnN0IGNoYXIq
LCBpbnQgbGVuPS0xKTsKCiAgICBRQ1N0cmluZyBsb2NhbDhCaXQoKSBjb25zdDsKICAgIHN0YXRp
YyBRU3RyaW5nIGZyb21Mb2NhbDhCaXQoY29uc3QgY2hhciosIGludCBsZW49LTEpOwogICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdDsKCiAgICBvcGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdCB7
IHJldHVybiBsYXRpbjEoKTsgfQoKCiAgICBRU3RyaW5nICZzZXRVbmljb2RlKCBjb25zdCBRQ2hh
ciogdW5pY29kZSwgdWludCBsZW4gKTsKICAgIFFTdHJpbmcgJnNldFVuaWNvZGVDb2RlcyggY29u
c3QgdXNob3J0KiB1bmljb2RlX2FzX3VzaG9ydHMsIHVpbnQgbGVuICk7CiAgICBRU3RyaW5nICZz
ZXRMYXRpbjEoIGNvbnN0IGNoYXIqLCBpbnQgbGVuPS0xICk7CgogICAgaW50IGNvbXBhcmUoIGNv
bnN0IFFTdHJpbmcmIHMgKSBjb25zdDsKICAgIHN0YXRpYyBpbnQgY29tcGFyZSggY29uc3QgUVN0
cmluZyYgczEsIGNvbnN0IFFTdHJpbmcmIHMyICkKICAgICAgICB7IHJldHVybiBzMS5jb21wYXJl
KHMyKTsgfQoKCiAgICBmcmllbmQgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFt
ICYsIFFTdHJpbmcgJiApOwoKCiAgICB2b2lkIGNvbXBvc2UoKTsKICAgIFFDaGFyOjpEaXJlY3Rp
b24gYmFzaWNEaXJlY3Rpb24oKTsKICAgIFFTdHJpbmcgdmlzdWFsKGludCBpbmRleCA9IDAsIGlu
dCBsZW4gPSAtMSk7CgoKICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBsYXRp
bjEoKTsgfQoKCiAgICBib29sIHN0YXJ0c1dpdGgoIGNvbnN0IFFTdHJpbmcmICkgY29uc3Q7Cgpw
cml2YXRlOgogICAgUVN0cmluZyggaW50IHNpemUsIGJvb2wgKTsKCiAgICB2b2lkIGRlcmVmKCk7
CiAgICB2b2lkIHJlYWxfZGV0YWNoKCk7CiAgICB2b2lkIHNldExlbmd0aCggdWludCBwb3MgKTsK
ICAgIHZvaWQgc3ViYXQoIHVpbnQgKTsKICAgIGJvb2wgZmluZEFyZyhpbnQmIHBvcywgaW50JiBs
ZW4pIGNvbnN0OwoKICAgIHN0YXRpYyBRQ2hhciogYXNjaWlUb1VuaWNvZGUoIGNvbnN0IGNoYXIq
LCB1aW50ICogbGVuLCB1aW50IG1heGxlbj0odWludCktMSApOwogICAgc3RhdGljIFFDaGFyKiBh
c2NpaVRvVW5pY29kZSggY29uc3QgUUJ5dGVBcnJheSYsIHVpbnQgKiBsZW4gKTsKICAgIHN0YXRp
YyBjaGFyKiB1bmljb2RlVG9Bc2NpaSggY29uc3QgUUNoYXIqLCB1aW50IGxlbiApOwoKICAgIFFT
dHJpbmdEYXRhICpkOwogICAgc3RhdGljIFFTdHJpbmdEYXRhKiBzaGFyZWRfbnVsbDsKICAgIHN0
YXRpYyBRU3RyaW5nRGF0YSogbWFrZVNoYXJlZE51bGwoKTsKCiAgICBmcmllbmQgY2xhc3MgUUNv
bnN0U3RyaW5nOwogICAgUVN0cmluZyhRU3RyaW5nRGF0YSogZGQsIGJvb2wgKSA6IGQoZGQpIHsg
fQp9OwoKY2xhc3MgUUNoYXJSZWYgewogICAgZnJpZW5kIGNsYXNzIFFTdHJpbmc7CiAgICBRU3Ry
aW5nJiBzOwogICAgdWludCBwOwogICAgUUNoYXJSZWYoUVN0cmluZyogc3RyLCB1aW50IHBvcykg
OiBzKCpzdHIpLCBwKHBvcykgeyB9CgpwdWJsaWM6CgoKCgogICAgdXNob3J0IHVuaWNvZGUoKSBj
b25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLnVuaWNvZGUoKTsgfQogICAgY2hhciBsYXRpbjEo
KSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmxhdGluMSgpOyB9CgoKICAgIFFDaGFyUmVm
IG9wZXJhdG9yPShjaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQogICAgUUNo
YXJSZWYgb3BlcmF0b3I9KHVjaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQog
ICAgUUNoYXJSZWYgb3BlcmF0b3I9KFFDaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhp
czsgfQogICAgUUNoYXJSZWYgb3BlcmF0b3I9KGNvbnN0IFFDaGFyUmVmJiBjICkgeyBzLnJlZihw
KT1jLnVuaWNvZGUoKTsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVyYXRvcj0odXNo
b3J0IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVy
YXRvcj0oc2hvcnQgcmMgKSB7IHMucmVmKHApPXJjOyByZXR1cm4gKnRoaXM7IH0KICAgIFFDaGFy
UmVmIG9wZXJhdG9yPSh1aW50IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CiAg
ICBRQ2hhclJlZiBvcGVyYXRvcj0oaW50IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlz
OyB9CgogICAgb3BlcmF0b3IgUUNoYXIgKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKTsg
fQoKCiAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIHVuaWNvZGUoKT09MDsgfQogICAg
Ym9vbCBpc1ByaW50KCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc1ByaW50KCk7IH0K
ICAgIGJvb2wgaXNQdW5jdCgpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuaXNQdW5jdCgp
OyB9CiAgICBib29sIGlzU3BhY2UoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlzU3Bh
Y2UoKTsgfQogICAgYm9vbCBpc01hcmsoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlz
TWFyaygpOyB9CiAgICBib29sIGlzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihw
KS5pc0xldHRlcigpOyB9CiAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5pc051bWJlcigpOyB9CiAgICBib29sIGlzTGV0dGVyT3JOdW1iZXIoKSB7IHJldHVy
biBzLmNvbnN0cmVmKHApLmlzTGV0dGVyT3JOdW1iZXIoKTsgfQogICAgYm9vbCBpc0RpZ2l0KCkg
Y29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc0RpZ2l0KCk7IH0KCiAgICBpbnQgZGlnaXRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuZGlnaXRWYWx1ZSgpOyB9CiAgICBR
Q2hhciBsb3dlcigpIHsgcmV0dXJuIHMuY29uc3RyZWYocCkubG93ZXIoKTsgfQogICAgUUNoYXIg
dXBwZXIoKSB7IHJldHVybiBzLmNvbnN0cmVmKHApLnVwcGVyKCk7IH0KCiAgICBRQ2hhcjo6Q2F0
ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNhdGVnb3J5KCk7
IH0KICAgIFFDaGFyOjpEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5kaXJlY3Rpb24oKTsgfQogICAgUUNoYXI6OkpvaW5pbmcgam9pbmluZygpIGNvbnN0
IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuam9pbmluZygpOyB9CiAgICBib29sIG1pcnJvcmVkKCkg
Y29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5taXJyb3JlZCgpOyB9CiAgICBRQ2hhciBtaXJy
b3JlZENoYXIoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLm1pcnJvcmVkQ2hhcigpOyB9
CiAgICBRU3RyaW5nIGRlY29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHAp
LmRlY29tcG9zaXRpb24oKTsgfQogICAgUUNoYXI6OkRlY29tcG9zaXRpb24gZGVjb21wb3NpdGlv
blRhZygpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuZGVjb21wb3NpdGlvblRhZygpOyB9
CgoKICAgIHVjaGFyIGNlbGwoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNlbGwoKTsg
fQogICAgdWNoYXIgcm93KCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5yb3coKTsgfQoK
fTsKCmlubGluZSBRQ2hhclJlZiBRU3RyaW5nOjphdCggdWludCBpICkgeyByZXR1cm4gUUNoYXJS
ZWYodGhpcyxpKTsgfQppbmxpbmUgUUNoYXJSZWYgUVN0cmluZzo6b3BlcmF0b3JbXSggaW50IGkg
KSB7IHJldHVybiBhdCgodWludClpKTsgfQoKCmNsYXNzIFFDb25zdFN0cmluZyA6IHByaXZhdGUg
UVN0cmluZyB7CnB1YmxpYzoKICAgIFFDb25zdFN0cmluZyggUUNoYXIqIHVuaWNvZGUsIHVpbnQg
bGVuZ3RoICk7CiAgICB+UUNvbnN0U3RyaW5nKCk7CiAgICBjb25zdCBRU3RyaW5nJiBzdHJpbmco
KSBjb25zdCB7IHJldHVybiAqdGhpczsgfQp9OwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9y
PDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0IFFTdHJpbmcgJiApOwogUURhdGFTdHJlYW0gJm9wZXJh
dG9yPj4oIFFEYXRhU3RyZWFtICYsIFFTdHJpbmcgJiApOwojIDY0MSAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiCmlubGluZSBRU3RyaW5nOjpRU3Ry
aW5nKCkgOgogICAgZChzaGFyZWRfbnVsbCA/IHNoYXJlZF9udWxsIDogbWFrZVNoYXJlZE51bGwo
KSkKewogICAgZC0+cmVmKCk7Cn0KCmlubGluZSBRU3RyaW5nOjp+UVN0cmluZygpCnsKICAgIGlm
ICggZC0+ZGVyZWYoKSApIHsKICAgICAgICBpZiAoIGQgPT0gc2hhcmVkX251bGwgKQogICAgICAg
ICAgICBzaGFyZWRfbnVsbCA9IDA7CiAgICAgICAgZC0+ZGVsZXRlU2VsZigpOwogICAgfQp9Cgpp
bmxpbmUgUVN0cmluZyAmUVN0cmluZzo6b3BlcmF0b3I9KCBRQ2hhciBjICkKeyByZXR1cm4gKnRo
aXMgPSBRU3RyaW5nKGMpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6b3BlcmF0b3I9KCBj
aGFyIGMgKQp7IHJldHVybiAqdGhpcyA9IFFTdHJpbmcoUUNoYXIoYykpOyB9CgppbmxpbmUgYm9v
bCBRU3RyaW5nOjppc051bGwoKSBjb25zdAp7IHJldHVybiB1bmljb2RlKCkgPT0gMDsgfQoKaW5s
aW5lIGJvb2wgUVN0cmluZzo6b3BlcmF0b3IhKCkgY29uc3QKeyByZXR1cm4gaXNOdWxsKCk7IH0K
CmlubGluZSB1aW50IFFTdHJpbmc6Omxlbmd0aCgpIGNvbnN0CnsgcmV0dXJuIGQtPmxlbjsgfQoK
aW5saW5lIGJvb2wgUVN0cmluZzo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0dXJuIGxlbmd0aCgpID09
IDA7IH0KCmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmNvcHkoKSBjb25zdAp7IHJldHVybiBRU3Ry
aW5nKCAqdGhpcyApOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6cHJlcGVuZCggY29uc3Qg
UVN0cmluZyAmIHMgKQp7IHJldHVybiBpbnNlcnQoMCxzKTsgfQoKaW5saW5lIFFTdHJpbmcgJlFT
dHJpbmc6OnByZXBlbmQoIFFDaGFyIGMgKQp7IHJldHVybiBpbnNlcnQoMCxjKTsgfQoKaW5saW5l
IFFTdHJpbmcgJlFTdHJpbmc6OnByZXBlbmQoIGNoYXIgYyApCnsgcmV0dXJuIGluc2VydCgwLGMp
OyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6YXBwZW5kKCBjb25zdCBRU3RyaW5nICYgcyAp
CnsgcmV0dXJuIG9wZXJhdG9yKz0ocyk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjphcHBl
bmQoIFFDaGFyIGMgKQp7IHJldHVybiBvcGVyYXRvcis9KGMpOyB9CgppbmxpbmUgUVN0cmluZyAm
UVN0cmluZzo6YXBwZW5kKCBjaGFyIGMgKQp7IHJldHVybiBvcGVyYXRvcis9KGMpOyB9Cgppbmxp
bmUgUVN0cmluZyAmUVN0cmluZzo6c2V0TnVtKCBzaG9ydCBuLCBpbnQgYmFzZSApCnsgcmV0dXJu
IHNldE51bSgobG9uZyluLCBiYXNlKTsgfQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51
bSggdXNob3J0IG4sIGludCBiYXNlICkKeyByZXR1cm4gc2V0TnVtKCh1bG9uZyluLCBiYXNlKTsg
fQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bSggaW50IG4sIGludCBiYXNlICkKeyBy
ZXR1cm4gc2V0TnVtKChsb25nKW4sIGJhc2UpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6
c2V0TnVtKCB1aW50IG4sIGludCBiYXNlICkKeyByZXR1cm4gc2V0TnVtKCh1bG9uZyluLCBiYXNl
KTsgfQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bSggZmxvYXQgbiwgY2hhciBmLCBp
bnQgcHJlYyApCnsgcmV0dXJuIHNldE51bSgoZG91YmxlKW4sZixwcmVjKTsgfQoKaW5saW5lIFFT
dHJpbmcgUVN0cmluZzo6YXJnKGludCBhLCBpbnQgZmllbGR3aWR0aCwgaW50IGJhc2UpIGNvbnN0
CnsgcmV0dXJuIGFyZygobG9uZylhLCBmaWVsZHdpZHRoLCBiYXNlKTsgfQoKaW5saW5lIFFTdHJp
bmcgUVN0cmluZzo6YXJnKHVpbnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKHVsb25nKWEsIGZpZWxkd2lkdGgsIGJhc2UpOyB9CgppbmxpbmUgUVN0cmlu
ZyBRU3RyaW5nOjphcmcoc2hvcnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKGxvbmcpYSwgZmllbGR3aWR0aCwgYmFzZSk7IH0KCmlubGluZSBRU3RyaW5n
IFFTdHJpbmc6OmFyZyh1c2hvcnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKHVsb25nKWEsIGZpZWxkd2lkdGgsIGJhc2UpOyB9CgppbmxpbmUgaW50IFFT
dHJpbmc6OmZpbmQoIGNoYXIgYywgaW50IGluZGV4LCBib29sIGNzICkgY29uc3QKeyByZXR1cm4g
ZmluZChRQ2hhcihjKSwgaW5kZXgsIGNzKTsgfQoKaW5saW5lIGludCBRU3RyaW5nOjpmaW5kUmV2
KCBjaGFyIGMsIGludCBpbmRleCwgYm9vbCBjcykgY29uc3QKeyByZXR1cm4gZmluZFJldiggUUNo
YXIoYyksIGluZGV4LCBjcyApOyB9CgoKCmlubGluZSBpbnQgUVN0cmluZzo6ZmluZCggY29uc3Qg
Y2hhciogc3RyLCBpbnQgaW5kZXggKSBjb25zdAp7IHJldHVybiBmaW5kKFFTdHJpbmc6OmZyb21M
YXRpbjEoc3RyKSwgaW5kZXgpOyB9CgppbmxpbmUgaW50IFFTdHJpbmc6OmZpbmRSZXYoIGNvbnN0
IGNoYXIqIHN0ciwgaW50IGluZGV4ICkgY29uc3QKeyByZXR1cm4gZmluZFJldihRU3RyaW5nOjpm
cm9tTGF0aW4xKHN0ciksIGluZGV4KTsgfQoKCgoKCgoKIGJvb2wgb3BlcmF0b3IhPSggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPCggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPD0oIGNvbnN0
IFFTdHJpbmcgJnMxLCBjb25zdCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVyYXRvcj09KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I+KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I+PSggY29u
c3QgUVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CgogYm9vbCBvcGVyYXRvciE9KCBj
b25zdCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3I8KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3I8PSggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICk7CiBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFT
dHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRvcj4oIGNvbnN0IFFTdHJp
bmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRvcj49KCBjb25zdCBRU3RyaW5n
ICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgY2hhciAqczEs
IGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPCggY29uc3QgY2hhciAqczEsIGNv
bnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGNoYXIgKnMxLCBjb25z
dCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVyYXRvcj09KCBjb25zdCBjaGFyICpzMSwgY29uc3Qg
UVN0cmluZyAmczIgKTsKCiBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBR
U3RyaW5nICZzMiApOwoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvcisoIGNvbnN0IFFTdHJpbmcg
JnMxLCBjb25zdCBRU3RyaW5nICZzMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSApOwogICAgdG1w
ICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvcisoIGNv
bnN0IFFTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSAp
OwogICAgdG1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoczIpOwogICAgcmV0dXJuIHRtcDsKfQoK
IGlubGluZSBRU3RyaW5nIG9wZXJhdG9yKyggY29uc3QgY2hhciAqczEsIGNvbnN0IFFTdHJpbmcg
JnMyICkKewogICAgUVN0cmluZyB0bXAgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCBzMSApOwogICAg
dG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvciso
IGNvbnN0IFFTdHJpbmcgJnMxLCBRQ2hhciBjMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSApOwog
ICAgdG1wICs9IGMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRU3RyaW5nIG9wZXJhdG9y
KyggY29uc3QgUVN0cmluZyAmczEsIGNoYXIgYzIgKQp7CiAgICBRU3RyaW5nIHRtcCggczEgKTsK
ICAgIHRtcCArPSBjMjsKICAgIHJldHVybiB0bXA7Cn0KCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRv
cisoIFFDaGFyIGMxLCBjb25zdCBRU3RyaW5nICZzMiApCnsKICAgIFFTdHJpbmcgdG1wOwogICAg
dG1wICs9IGMxOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRU3Ry
aW5nIG9wZXJhdG9yKyggY2hhciBjMSwgY29uc3QgUVN0cmluZyAmczIgKQp7CiAgICBRU3RyaW5n
IHRtcDsKICAgIHRtcCArPSBjMTsKICAgIHRtcCArPSBzMjsKICAgIHJldHVybiB0bXA7Cn0KIyA0
NSAia2VybmVsL3F3aW5kb3dkZWZzLmgiIDIKIyAxICJrZXJuZWwvcW5hbWVzcGFjZS5oIiAxCiMg
NDYgImtlcm5lbC9xbmFtZXNwYWNlLmgiCmNsYXNzIFFDb2xvcjsKY2xhc3MgUUN1cnNvcjsKCgpj
bGFzcyBRdCB7CnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBjb2xvcjA7CiAgICBz
dGF0aWMgY29uc3QgUUNvbG9yICYgY29sb3IxOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGJs
YWNrOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIHdoaXRlOwogICAgc3RhdGljIGNvbnN0IFFD
b2xvciAmIGRhcmtHcmF5OwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGdyYXk7CiAgICBzdGF0
aWMgY29uc3QgUUNvbG9yICYgbGlnaHRHcmF5OwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIHJl
ZDsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBncmVlbjsKICAgIHN0YXRpYyBjb25zdCBRQ29s
b3IgJiBibHVlOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGN5YW47CiAgICBzdGF0aWMgY29u
c3QgUUNvbG9yICYgbWFnZW50YTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiB5ZWxsb3c7CiAg
ICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya1JlZDsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3Ig
JiBkYXJrR3JlZW47CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya0JsdWU7CiAgICBzdGF0
aWMgY29uc3QgUUNvbG9yICYgZGFya0N5YW47CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFy
a01hZ2VudGE7CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya1llbGxvdzsKCgogICAgZW51
bSBCdXR0b25TdGF0ZSB7CiAgICAgICAgTm9CdXR0b24gPSAweDAwMDAsCiAgICAgICAgTGVmdEJ1
dHRvbiA9IDB4MDAwMSwKICAgICAgICBSaWdodEJ1dHRvbiA9IDB4MDAwMiwKICAgICAgICBNaWRC
dXR0b24gPSAweDAwMDQsCiAgICAgICAgTW91c2VCdXR0b25NYXNrID0gMHgwMDA3LAogICAgICAg
IFNoaWZ0QnV0dG9uID0gMHgwMDA4LAogICAgICAgIENvbnRyb2xCdXR0b24gPSAweDAwMTAsCiAg
ICAgICAgQWx0QnV0dG9uID0gMHgwMDIwLAogICAgICAgIEtleUJ1dHRvbk1hc2sgPSAweDAwMzgs
CiAgICAgICAgS2V5cGFkID0gMHg0MDAwCiAgICB9OwoKCiAgICBlbnVtIE9yaWVudGF0aW9uIHsK
ICAgICAgICBIb3Jpem9udGFsLAogICAgICAgIFZlcnRpY2FsCiAgICB9OwoKCgoKICAgIGVudW0g
QWxpZ25tZW50RmxhZ3MgewogICAgICAgIEFsaWduTGVmdCA9IDB4MDAwMSwKICAgICAgICBBbGln
blJpZ2h0ID0gMHgwMDAyLAogICAgICAgIEFsaWduSENlbnRlciA9IDB4MDAwNCwKICAgICAgICBB
bGlnblRvcCA9IDB4MDAwOCwKICAgICAgICBBbGlnbkJvdHRvbSA9IDB4MDAxMCwKICAgICAgICBB
bGlnblZDZW50ZXIgPSAweDAwMjAsCiAgICAgICAgQWxpZ25DZW50ZXIgPSBBbGlnblZDZW50ZXIg
fCBBbGlnbkhDZW50ZXIsCgogICAgICAgIFNpbmdsZUxpbmUgPSAweDAwNDAsCiAgICAgICAgRG9u
dENsaXAgPSAweDAwODAsCiAgICAgICAgRXhwYW5kVGFicyA9IDB4MDEwMCwKICAgICAgICBTaG93
UHJlZml4ID0gMHgwMjAwLAogICAgICAgIFdvcmRCcmVhayA9IDB4MDQwMCwKICAgICAgICBEb250
UHJpbnQgPSAweDEwMDAKICAgIH07CgoKICAgIGVudW0gV2lkZ2V0U3RhdGUgewogICAgICAgIFdT
dGF0ZV9DcmVhdGVkID0gMHgwMDAwMDAwMSwKICAgICAgICBXU3RhdGVfRGlzYWJsZWQgPSAweDAw
MDAwMDAyLAogICAgICAgIFdTdGF0ZV9WaXNpYmxlID0gMHgwMDAwMDAwNCwKICAgICAgICBXU3Rh
dGVfRm9yY2VIaWRlID0gMHgwMDAwMDAwOCwKICAgICAgICBXU3RhdGVfT3duQ3Vyc29yID0gMHgw
MDAwMDAxMCwKICAgICAgICBXU3RhdGVfTW91c2VUcmFja2luZyA9IDB4MDAwMDAwMjAsCiAgICAg
ICAgV1N0YXRlX0NvbXByZXNzS2V5cyA9IDB4MDAwMDAwNDAsCiAgICAgICAgV1N0YXRlX0Jsb2Nr
VXBkYXRlcyA9IDB4MDAwMDAwODAsCiAgICAgICAgV1N0YXRlX0luUGFpbnRFdmVudCA9IDB4MDAw
MDAxMDAsCiAgICAgICAgV1N0YXRlX1JlcGFyZW50ZWQgPSAweDAwMDAwMjAwLAogICAgICAgIFdT
dGF0ZV9Db25maWdQZW5kaW5nID0gMHgwMDAwMDQwMCwKICAgICAgICBXU3RhdGVfUmVzaXplZCA9
IDB4MDAwMDA4MDAsCiAgICAgICAgV1N0YXRlX0F1dG9NYXNrID0gMHgwMDAwMTAwMCwKICAgICAg
ICBXU3RhdGVfUG9saXNoZWQgPSAweDAwMDAyMDAwLAogICAgICAgIFdTdGF0ZV9ETkQgPSAweDAw
MDA0MDAwLAogICAgICAgIFdTdGF0ZV9Nb2RhbCA9IDB4MDAwMDgwMDAsCiAgICAgICAgV1N0YXRl
X1Jlc2VydmVkMSA9IDB4MDAwMTAwMDAsCiAgICAgICAgV1N0YXRlX1Jlc2VydmVkMiA9IDB4MDAw
MjAwMDAsCiAgICAgICAgV1N0YXRlX1Jlc2VydmVkMyA9IDB4MDAwNDAwMDAsCiAgICAgICAgV1N0
YXRlX01heGltaXplZCA9IDB4MDAwODAwMDAsCiAgICAgICAgV1N0YXRlX1RyYW5zbGF0ZUJhY2tn
cm91bmQgPSAweDAwMTAwMDAwLAogICAgICAgIFdTdGF0ZV9Gb3JjZURpc2FibGVkID0gMHgwMDIw
MDAwMCwKICAgICAgICBXU3RhdGVfRXhwb3NlZCA9IDB4MDA0MDAwMDAKICAgIH07CgoKICAgIHR5
cGVkZWYgdWludCBXRmxhZ3M7CgoKICAgIGVudW0gV2lkZ2V0RmxhZ3MgewogICAgICAgIFdUeXBl
X1RvcExldmVsID0gMHgwMDAwMDAwMSwKICAgICAgICBXVHlwZV9Nb2RhbCA9IDB4MDAwMDAwMDIs
CiAgICAgICAgV1R5cGVfUG9wdXAgPSAweDAwMDAwMDA0LAogICAgICAgIFdUeXBlX0Rlc2t0b3Ag
PSAweDAwMDAwMDA4LAogICAgICAgIFdUeXBlX01hc2sgPSAweDAwMDAwMDBmLAoKICAgICAgICBX
U3R5bGVfQ3VzdG9taXplID0gMHgwMDAwMDAxMCwKICAgICAgICBXU3R5bGVfTm9ybWFsQm9yZGVy
ID0gMHgwMDAwMDAyMCwKICAgICAgICBXU3R5bGVfRGlhbG9nQm9yZGVyID0gMHgwMDAwMDA0MCwK
ICAgICAgICBXU3R5bGVfTm9Cb3JkZXIgPSAweDAwMDAwMDAwLAogICAgICAgIFdTdHlsZV9UaXRs
ZSA9IDB4MDAwMDAwODAsCiAgICAgICAgV1N0eWxlX1N5c01lbnUgPSAweDAwMDAwMTAwLAogICAg
ICAgIFdTdHlsZV9NaW5pbWl6ZSA9IDB4MDAwMDAyMDAsCiAgICAgICAgV1N0eWxlX01heGltaXpl
ID0gMHgwMDAwMDQwMCwKICAgICAgICBXU3R5bGVfTWluTWF4ID0gV1N0eWxlX01pbmltaXplIHwg
V1N0eWxlX01heGltaXplLAogICAgICAgIFdTdHlsZV9Ub29sID0gMHgwMDAwMDgwMCwKICAgICAg
ICBXU3R5bGVfU3RheXNPblRvcCA9IDB4MDAwMDEwMDAsCiAgICAgICAgV1N0eWxlX0RpYWxvZyA9
IDB4MDAwMDIwMDAsCiAgICAgICAgV1N0eWxlX0NvbnRleHRIZWxwID0gMHgwMDAwNDAwMCwKICAg
ICAgICBXU3R5bGVfTm9Cb3JkZXJFeCA9IDB4MDAwMDgwMDAsCiAgICAgICAgV1N0eWxlX01hc2sg
PSAweDAwMDBmZmYwLAoKICAgICAgICBXRGVzdHJ1Y3RpdmVDbG9zZSA9IDB4MDAwMTAwMDAsCiAg
ICAgICAgV1BhaW50RGVza3RvcCA9IDB4MDAwMjAwMDAsCiAgICAgICAgV1BhaW50VW5jbGlwcGVk
ID0gMHgwMDA0MDAwMCwKICAgICAgICBXUGFpbnRDbGV2ZXIgPSAweDAwMDgwMDAwLAogICAgICAg
IFdSZXNpemVOb0VyYXNlID0gMHgwMDEwMDAwMCwKICAgICAgICBXTW91c2VOb01hc2sgPSAweDAw
MjAwMDAwLAogICAgICAgIFdOb3J0aFdlc3RHcmF2aXR5ID0gMHgwMDQwMDAwMCwKICAgICAgICBX
UmVwYWludE5vRXJhc2UgPSAweDAwODAwMDAwLAogICAgICAgIFdYMTFCeXBhc3NXTSA9IDB4MDEw
MDAwMDAsCiAgICAgICAgV0dyb3VwTGVhZGVyID0gMHgwMjAwMDAwMAoKICAgIH07CgoKCgogICAg
ZW51bSBJbWFnZUNvbnZlcnNpb25GbGFncyB7CiAgICAgICAgQ29sb3JNb2RlX01hc2sgPSAweDAw
MDAwMDAzLAogICAgICAgIEF1dG9Db2xvciA9IDB4MDAwMDAwMDAsCiAgICAgICAgQ29sb3JPbmx5
ID0gMHgwMDAwMDAwMywKICAgICAgICBNb25vT25seSA9IDB4MDAwMDAwMDIsCgoKICAgICAgICBB
bHBoYURpdGhlcl9NYXNrID0gMHgwMDAwMDAwYywKICAgICAgICBUaHJlc2hvbGRBbHBoYURpdGhl
ciA9IDB4MDAwMDAwMDAsCiAgICAgICAgT3JkZXJlZEFscGhhRGl0aGVyID0gMHgwMDAwMDAwNCwK
ICAgICAgICBEaWZmdXNlQWxwaGFEaXRoZXIgPSAweDAwMDAwMDA4LAogICAgICAgIE5vQWxwaGEg
PSAweDAwMDAwMDBjLAoKICAgICAgICBEaXRoZXJfTWFzayA9IDB4MDAwMDAwMzAsCiAgICAgICAg
RGlmZnVzZURpdGhlciA9IDB4MDAwMDAwMDAsCiAgICAgICAgT3JkZXJlZERpdGhlciA9IDB4MDAw
MDAwMTAsCiAgICAgICAgVGhyZXNob2xkRGl0aGVyID0gMHgwMDAwMDAyMCwKCgogICAgICAgIERp
dGhlck1vZGVfTWFzayA9IDB4MDAwMDAwYzAsCiAgICAgICAgQXV0b0RpdGhlciA9IDB4MDAwMDAw
MDAsCiAgICAgICAgUHJlZmVyRGl0aGVyID0gMHgwMDAwMDA0MCwKICAgICAgICBBdm9pZERpdGhl
ciA9IDB4MDAwMDAwODAKICAgIH07CgogICAgZW51bSBCR01vZGUgewogICAgICAgIFRyYW5zcGFy
ZW50TW9kZSwKICAgICAgICBPcGFxdWVNb2RlCiAgICB9OwoKICAgIGVudW0gUGFpbnRVbml0IHsK
ICAgICAgICBQaXhlbFVuaXQsCiAgICAgICAgTG9NZXRyaWNVbml0LAogICAgICAgIEhpTWV0cmlj
VW5pdCwKICAgICAgICBMb0VuZ2xpc2hVbml0LAogICAgICAgIEhpRW5nbGlzaFVuaXQsCiAgICAg
ICAgVHdpcHNVbml0CiAgICB9OwoKICAgIGVudW0gR1VJU3R5bGUgewogICAgICAgIE1hY1N0eWxl
LAogICAgICAgIFdpbmRvd3NTdHlsZSwKICAgICAgICBXaW4zU3R5bGUsCiAgICAgICAgUE1TdHls
ZSwKICAgICAgICBNb3RpZlN0eWxlCiAgICB9OwoKICAgIGVudW0gTW9kaWZpZXIgewogICAgICAg
IFNISUZUID0gMHgwMDIwMDAwMCwKICAgICAgICBDVFJMID0gMHgwMDQwMDAwMCwKICAgICAgICBB
TFQgPSAweDAwODAwMDAwLAogICAgICAgIE1PRElGSUVSX01BU0sgPSAweDAwZTAwMDAwLAogICAg
ICAgIFVOSUNPREVfQUNDRUwgPSAweDEwMDAwMDAwLAoKICAgICAgICBBU0NJSV9BQ0NFTCA9IFVO
SUNPREVfQUNDRUwKICAgIH07CgogICAgZW51bSBLZXkgewogICAgICAgIEtleV9Fc2NhcGUgPSAw
eDEwMDAsCiAgICAgICAgS2V5X1RhYiA9IDB4MTAwMSwKICAgICAgICBLZXlfQmFja3RhYiA9IDB4
MTAwMiwgS2V5X0JhY2tUYWIgPSBLZXlfQmFja3RhYiwKICAgICAgICBLZXlfQmFja3NwYWNlID0g
MHgxMDAzLCBLZXlfQmFja1NwYWNlID0gS2V5X0JhY2tzcGFjZSwKICAgICAgICBLZXlfUmV0dXJu
ID0gMHgxMDA0LAogICAgICAgIEtleV9FbnRlciA9IDB4MTAwNSwKICAgICAgICBLZXlfSW5zZXJ0
ID0gMHgxMDA2LAogICAgICAgIEtleV9EZWxldGUgPSAweDEwMDcsCiAgICAgICAgS2V5X1BhdXNl
ID0gMHgxMDA4LAogICAgICAgIEtleV9QcmludCA9IDB4MTAwOSwKICAgICAgICBLZXlfU3lzUmVx
ID0gMHgxMDBhLAogICAgICAgIEtleV9Ib21lID0gMHgxMDEwLAogICAgICAgIEtleV9FbmQgPSAw
eDEwMTEsCiAgICAgICAgS2V5X0xlZnQgPSAweDEwMTIsCiAgICAgICAgS2V5X1VwID0gMHgxMDEz
LAogICAgICAgIEtleV9SaWdodCA9IDB4MTAxNCwKICAgICAgICBLZXlfRG93biA9IDB4MTAxNSwK
ICAgICAgICBLZXlfUHJpb3IgPSAweDEwMTYsIEtleV9QYWdlVXAgPSBLZXlfUHJpb3IsCiAgICAg
ICAgS2V5X05leHQgPSAweDEwMTcsIEtleV9QYWdlRG93biA9IEtleV9OZXh0LAogICAgICAgIEtl
eV9TaGlmdCA9IDB4MTAyMCwKICAgICAgICBLZXlfQ29udHJvbCA9IDB4MTAyMSwKICAgICAgICBL
ZXlfTWV0YSA9IDB4MTAyMiwKICAgICAgICBLZXlfQWx0ID0gMHgxMDIzLAogICAgICAgIEtleV9D
YXBzTG9jayA9IDB4MTAyNCwKICAgICAgICBLZXlfTnVtTG9jayA9IDB4MTAyNSwKICAgICAgICBL
ZXlfU2Nyb2xsTG9jayA9IDB4MTAyNiwKICAgICAgICBLZXlfRjEgPSAweDEwMzAsCiAgICAgICAg
S2V5X0YyID0gMHgxMDMxLAogICAgICAgIEtleV9GMyA9IDB4MTAzMiwKICAgICAgICBLZXlfRjQg
PSAweDEwMzMsCiAgICAgICAgS2V5X0Y1ID0gMHgxMDM0LAogICAgICAgIEtleV9GNiA9IDB4MTAz
NSwKICAgICAgICBLZXlfRjcgPSAweDEwMzYsCiAgICAgICAgS2V5X0Y4ID0gMHgxMDM3LAogICAg
ICAgIEtleV9GOSA9IDB4MTAzOCwKICAgICAgICBLZXlfRjEwID0gMHgxMDM5LAogICAgICAgIEtl
eV9GMTEgPSAweDEwM2EsCiAgICAgICAgS2V5X0YxMiA9IDB4MTAzYiwKICAgICAgICBLZXlfRjEz
ID0gMHgxMDNjLAogICAgICAgIEtleV9GMTQgPSAweDEwM2QsCiAgICAgICAgS2V5X0YxNSA9IDB4
MTAzZSwKICAgICAgICBLZXlfRjE2ID0gMHgxMDNmLAogICAgICAgIEtleV9GMTcgPSAweDEwNDAs
CiAgICAgICAgS2V5X0YxOCA9IDB4MTA0MSwKICAgICAgICBLZXlfRjE5ID0gMHgxMDQyLAogICAg
ICAgIEtleV9GMjAgPSAweDEwNDMsCiAgICAgICAgS2V5X0YyMSA9IDB4MTA0NCwKICAgICAgICBL
ZXlfRjIyID0gMHgxMDQ1LAogICAgICAgIEtleV9GMjMgPSAweDEwNDYsCiAgICAgICAgS2V5X0Yy
NCA9IDB4MTA0NywKICAgICAgICBLZXlfRjI1ID0gMHgxMDQ4LAogICAgICAgIEtleV9GMjYgPSAw
eDEwNDksCiAgICAgICAgS2V5X0YyNyA9IDB4MTA0YSwKICAgICAgICBLZXlfRjI4ID0gMHgxMDRi
LAogICAgICAgIEtleV9GMjkgPSAweDEwNGMsCiAgICAgICAgS2V5X0YzMCA9IDB4MTA0ZCwKICAg
ICAgICBLZXlfRjMxID0gMHgxMDRlLAogICAgICAgIEtleV9GMzIgPSAweDEwNGYsCiAgICAgICAg
S2V5X0YzMyA9IDB4MTA1MCwKICAgICAgICBLZXlfRjM0ID0gMHgxMDUxLAogICAgICAgIEtleV9G
MzUgPSAweDEwNTIsCiAgICAgICAgS2V5X1N1cGVyX0wgPSAweDEwNTMsCiAgICAgICAgS2V5X1N1
cGVyX1IgPSAweDEwNTQsCiAgICAgICAgS2V5X01lbnUgPSAweDEwNTUsCiAgICAgICAgS2V5X0h5
cGVyX0wgPSAweDEwNTYsCiAgICAgICAgS2V5X0h5cGVyX1IgPSAweDEwNTcsCiAgICAgICAgS2V5
X0hlbHAgPSAweDEwNTgsCiAgICAgICAgS2V5X1NwYWNlID0gMHgyMCwKICAgICAgICBLZXlfQW55
ID0gS2V5X1NwYWNlLAogICAgICAgIEtleV9FeGNsYW0gPSAweDIxLAogICAgICAgIEtleV9RdW90
ZURibCA9IDB4MjIsCiAgICAgICAgS2V5X051bWJlclNpZ24gPSAweDIzLAogICAgICAgIEtleV9E
b2xsYXIgPSAweDI0LAogICAgICAgIEtleV9QZXJjZW50ID0gMHgyNSwKICAgICAgICBLZXlfQW1w
ZXJzYW5kID0gMHgyNiwKICAgICAgICBLZXlfQXBvc3Ryb3BoZSA9IDB4MjcsCiAgICAgICAgS2V5
X1BhcmVuTGVmdCA9IDB4MjgsCiAgICAgICAgS2V5X1BhcmVuUmlnaHQgPSAweDI5LAogICAgICAg
IEtleV9Bc3RlcmlzayA9IDB4MmEsCiAgICAgICAgS2V5X1BsdXMgPSAweDJiLAogICAgICAgIEtl
eV9Db21tYSA9IDB4MmMsCiAgICAgICAgS2V5X01pbnVzID0gMHgyZCwKICAgICAgICBLZXlfUGVy
aW9kID0gMHgyZSwKICAgICAgICBLZXlfU2xhc2ggPSAweDJmLAogICAgICAgIEtleV8wID0gMHgz
MCwKICAgICAgICBLZXlfMSA9IDB4MzEsCiAgICAgICAgS2V5XzIgPSAweDMyLAogICAgICAgIEtl
eV8zID0gMHgzMywKICAgICAgICBLZXlfNCA9IDB4MzQsCiAgICAgICAgS2V5XzUgPSAweDM1LAog
ICAgICAgIEtleV82ID0gMHgzNiwKICAgICAgICBLZXlfNyA9IDB4MzcsCiAgICAgICAgS2V5Xzgg
PSAweDM4LAogICAgICAgIEtleV85ID0gMHgzOSwKICAgICAgICBLZXlfQ29sb24gPSAweDNhLAog
ICAgICAgIEtleV9TZW1pY29sb24gPSAweDNiLAogICAgICAgIEtleV9MZXNzID0gMHgzYywKICAg
ICAgICBLZXlfRXF1YWwgPSAweDNkLAogICAgICAgIEtleV9HcmVhdGVyID0gMHgzZSwKICAgICAg
ICBLZXlfUXVlc3Rpb24gPSAweDNmLAogICAgICAgIEtleV9BdCA9IDB4NDAsCiAgICAgICAgS2V5
X0EgPSAweDQxLAogICAgICAgIEtleV9CID0gMHg0MiwKICAgICAgICBLZXlfQyA9IDB4NDMsCiAg
ICAgICAgS2V5X0QgPSAweDQ0LAogICAgICAgIEtleV9FID0gMHg0NSwKICAgICAgICBLZXlfRiA9
IDB4NDYsCiAgICAgICAgS2V5X0cgPSAweDQ3LAogICAgICAgIEtleV9IID0gMHg0OCwKICAgICAg
ICBLZXlfSSA9IDB4NDksCiAgICAgICAgS2V5X0ogPSAweDRhLAogICAgICAgIEtleV9LID0gMHg0
YiwKICAgICAgICBLZXlfTCA9IDB4NGMsCiAgICAgICAgS2V5X00gPSAweDRkLAogICAgICAgIEtl
eV9OID0gMHg0ZSwKICAgICAgICBLZXlfTyA9IDB4NGYsCiAgICAgICAgS2V5X1AgPSAweDUwLAog
ICAgICAgIEtleV9RID0gMHg1MSwKICAgICAgICBLZXlfUiA9IDB4NTIsCiAgICAgICAgS2V5X1Mg
PSAweDUzLAogICAgICAgIEtleV9UID0gMHg1NCwKICAgICAgICBLZXlfVSA9IDB4NTUsCiAgICAg
ICAgS2V5X1YgPSAweDU2LAogICAgICAgIEtleV9XID0gMHg1NywKICAgICAgICBLZXlfWCA9IDB4
NTgsCiAgICAgICAgS2V5X1kgPSAweDU5LAogICAgICAgIEtleV9aID0gMHg1YSwKICAgICAgICBL
ZXlfQnJhY2tldExlZnQgPSAweDViLAogICAgICAgIEtleV9CYWNrc2xhc2ggPSAweDVjLAogICAg
ICAgIEtleV9CcmFja2V0UmlnaHQgPSAweDVkLAogICAgICAgIEtleV9Bc2NpaUNpcmN1bSA9IDB4
NWUsCiAgICAgICAgS2V5X1VuZGVyc2NvcmUgPSAweDVmLAogICAgICAgIEtleV9RdW90ZUxlZnQg
PSAweDYwLAogICAgICAgIEtleV9CcmFjZUxlZnQgPSAweDdiLAogICAgICAgIEtleV9CYXIgPSAw
eDdjLAogICAgICAgIEtleV9CcmFjZVJpZ2h0ID0gMHg3ZCwKICAgICAgICBLZXlfQXNjaWlUaWxk
ZSA9IDB4N2UsCgoKCiAgICAgICAgS2V5X25vYnJlYWtzcGFjZSA9IDB4MGEwLAogICAgICAgIEtl
eV9leGNsYW1kb3duID0gMHgwYTEsCiAgICAgICAgS2V5X2NlbnQgPSAweDBhMiwKICAgICAgICBL
ZXlfc3RlcmxpbmcgPSAweDBhMywKICAgICAgICBLZXlfY3VycmVuY3kgPSAweDBhNCwKICAgICAg
ICBLZXlfeWVuID0gMHgwYTUsCiAgICAgICAgS2V5X2Jyb2tlbmJhciA9IDB4MGE2LAogICAgICAg
IEtleV9zZWN0aW9uID0gMHgwYTcsCiAgICAgICAgS2V5X2RpYWVyZXNpcyA9IDB4MGE4LAogICAg
ICAgIEtleV9jb3B5cmlnaHQgPSAweDBhOSwKICAgICAgICBLZXlfb3JkZmVtaW5pbmUgPSAweDBh
YSwKICAgICAgICBLZXlfZ3VpbGxlbW90bGVmdCA9IDB4MGFiLAogICAgICAgIEtleV9ub3RzaWdu
ID0gMHgwYWMsCiAgICAgICAgS2V5X2h5cGhlbiA9IDB4MGFkLAogICAgICAgIEtleV9yZWdpc3Rl
cmVkID0gMHgwYWUsCiAgICAgICAgS2V5X21hY3JvbiA9IDB4MGFmLAogICAgICAgIEtleV9kZWdy
ZWUgPSAweDBiMCwKICAgICAgICBLZXlfcGx1c21pbnVzID0gMHgwYjEsCiAgICAgICAgS2V5X3R3
b3N1cGVyaW9yID0gMHgwYjIsCiAgICAgICAgS2V5X3RocmVlc3VwZXJpb3IgPSAweDBiMywKICAg
ICAgICBLZXlfYWN1dGUgPSAweDBiNCwKICAgICAgICBLZXlfbXUgPSAweDBiNSwKICAgICAgICBL
ZXlfcGFyYWdyYXBoID0gMHgwYjYsCiAgICAgICAgS2V5X3BlcmlvZGNlbnRlcmVkID0gMHgwYjcs
CiAgICAgICAgS2V5X2NlZGlsbGEgPSAweDBiOCwKICAgICAgICBLZXlfb25lc3VwZXJpb3IgPSAw
eDBiOSwKICAgICAgICBLZXlfbWFzY3VsaW5lID0gMHgwYmEsCiAgICAgICAgS2V5X2d1aWxsZW1v
dHJpZ2h0ID0gMHgwYmIsCiAgICAgICAgS2V5X29uZXF1YXJ0ZXIgPSAweDBiYywKICAgICAgICBL
ZXlfb25laGFsZiA9IDB4MGJkLAogICAgICAgIEtleV90aHJlZXF1YXJ0ZXJzID0gMHgwYmUsCiAg
ICAgICAgS2V5X3F1ZXN0aW9uZG93biA9IDB4MGJmLAogICAgICAgIEtleV9BZ3JhdmUgPSAweDBj
MCwKICAgICAgICBLZXlfQWFjdXRlID0gMHgwYzEsCiAgICAgICAgS2V5X0FjaXJjdW1mbGV4ID0g
MHgwYzIsCiAgICAgICAgS2V5X0F0aWxkZSA9IDB4MGMzLAogICAgICAgIEtleV9BZGlhZXJlc2lz
ID0gMHgwYzQsCiAgICAgICAgS2V5X0FyaW5nID0gMHgwYzUsCiAgICAgICAgS2V5X0FFID0gMHgw
YzYsCiAgICAgICAgS2V5X0NjZWRpbGxhID0gMHgwYzcsCiAgICAgICAgS2V5X0VncmF2ZSA9IDB4
MGM4LAogICAgICAgIEtleV9FYWN1dGUgPSAweDBjOSwKICAgICAgICBLZXlfRWNpcmN1bWZsZXgg
PSAweDBjYSwKICAgICAgICBLZXlfRWRpYWVyZXNpcyA9IDB4MGNiLAogICAgICAgIEtleV9JZ3Jh
dmUgPSAweDBjYywKICAgICAgICBLZXlfSWFjdXRlID0gMHgwY2QsCiAgICAgICAgS2V5X0ljaXJj
dW1mbGV4ID0gMHgwY2UsCiAgICAgICAgS2V5X0lkaWFlcmVzaXMgPSAweDBjZiwKICAgICAgICBL
ZXlfRVRIID0gMHgwZDAsCiAgICAgICAgS2V5X050aWxkZSA9IDB4MGQxLAogICAgICAgIEtleV9P
Z3JhdmUgPSAweDBkMiwKICAgICAgICBLZXlfT2FjdXRlID0gMHgwZDMsCiAgICAgICAgS2V5X09j
aXJjdW1mbGV4ID0gMHgwZDQsCiAgICAgICAgS2V5X090aWxkZSA9IDB4MGQ1LAogICAgICAgIEtl
eV9PZGlhZXJlc2lzID0gMHgwZDYsCiAgICAgICAgS2V5X211bHRpcGx5ID0gMHgwZDcsCiAgICAg
ICAgS2V5X09vYmxpcXVlID0gMHgwZDgsCiAgICAgICAgS2V5X1VncmF2ZSA9IDB4MGQ5LAogICAg
ICAgIEtleV9VYWN1dGUgPSAweDBkYSwKICAgICAgICBLZXlfVWNpcmN1bWZsZXggPSAweDBkYiwK
ICAgICAgICBLZXlfVWRpYWVyZXNpcyA9IDB4MGRjLAogICAgICAgIEtleV9ZYWN1dGUgPSAweDBk
ZCwKICAgICAgICBLZXlfVEhPUk4gPSAweDBkZSwKICAgICAgICBLZXlfc3NoYXJwID0gMHgwZGYs
CiAgICAgICAgS2V5X2FncmF2ZSA9IDB4MGUwLAogICAgICAgIEtleV9hYWN1dGUgPSAweDBlMSwK
ICAgICAgICBLZXlfYWNpcmN1bWZsZXggPSAweDBlMiwKICAgICAgICBLZXlfYXRpbGRlID0gMHgw
ZTMsCiAgICAgICAgS2V5X2FkaWFlcmVzaXMgPSAweDBlNCwKICAgICAgICBLZXlfYXJpbmcgPSAw
eDBlNSwKICAgICAgICBLZXlfYWUgPSAweDBlNiwKICAgICAgICBLZXlfY2NlZGlsbGEgPSAweDBl
NywKICAgICAgICBLZXlfZWdyYXZlID0gMHgwZTgsCiAgICAgICAgS2V5X2VhY3V0ZSA9IDB4MGU5
LAogICAgICAgIEtleV9lY2lyY3VtZmxleCA9IDB4MGVhLAogICAgICAgIEtleV9lZGlhZXJlc2lz
ID0gMHgwZWIsCiAgICAgICAgS2V5X2lncmF2ZSA9IDB4MGVjLAogICAgICAgIEtleV9pYWN1dGUg
PSAweDBlZCwKICAgICAgICBLZXlfaWNpcmN1bWZsZXggPSAweDBlZSwKICAgICAgICBLZXlfaWRp
YWVyZXNpcyA9IDB4MGVmLAogICAgICAgIEtleV9ldGggPSAweDBmMCwKICAgICAgICBLZXlfbnRp
bGRlID0gMHgwZjEsCiAgICAgICAgS2V5X29ncmF2ZSA9IDB4MGYyLAogICAgICAgIEtleV9vYWN1
dGUgPSAweDBmMywKICAgICAgICBLZXlfb2NpcmN1bWZsZXggPSAweDBmNCwKICAgICAgICBLZXlf
b3RpbGRlID0gMHgwZjUsCiAgICAgICAgS2V5X29kaWFlcmVzaXMgPSAweDBmNiwKICAgICAgICBL
ZXlfZGl2aXNpb24gPSAweDBmNywKICAgICAgICBLZXlfb3NsYXNoID0gMHgwZjgsCiAgICAgICAg
S2V5X3VncmF2ZSA9IDB4MGY5LAogICAgICAgIEtleV91YWN1dGUgPSAweDBmYSwKICAgICAgICBL
ZXlfdWNpcmN1bWZsZXggPSAweDBmYiwKICAgICAgICBLZXlfdWRpYWVyZXNpcyA9IDB4MGZjLAog
ICAgICAgIEtleV95YWN1dGUgPSAweDBmZCwKICAgICAgICBLZXlfdGhvcm4gPSAweDBmZSwKICAg
ICAgICBLZXlfeWRpYWVyZXNpcyA9IDB4MGZmLAoKICAgICAgICBLZXlfdW5rbm93biA9IDB4ZmZm
ZgogICAgfTsKCiAgICBlbnVtIEFycm93VHlwZSB7CiAgICAgICAgVXBBcnJvdywKICAgICAgICBE
b3duQXJyb3csCiAgICAgICAgTGVmdEFycm93LAogICAgICAgIFJpZ2h0QXJyb3cKICAgIH07CgoK
ICAgIGVudW0gUmFzdGVyT3AgewogICAgICAgIENvcHlST1AsCiAgICAgICAgT3JST1AsCiAgICAg
ICAgWG9yUk9QLAogICAgICAgIE5vdEFuZFJPUCwKICAgICAgICBFcmFzZVJPUD1Ob3RBbmRST1As
CiAgICAgICAgTm90Q29weVJPUCwKICAgICAgICBOb3RPclJPUCwKICAgICAgICBOb3RYb3JST1As
CiAgICAgICAgQW5kUk9QLCBOb3RFcmFzZVJPUD1BbmRST1AsCiAgICAgICAgTm90Uk9QLAogICAg
ICAgIENsZWFyUk9QLAogICAgICAgIFNldFJPUCwKICAgICAgICBOb3BST1AsCiAgICAgICAgQW5k
Tm90Uk9QLAogICAgICAgIE9yTm90Uk9QLAogICAgICAgIE5hbmRST1AsCiAgICAgICAgTm9yUk9Q
LCBMYXN0Uk9QPU5vclJPUAogICAgfTsKCgogICAgZW51bSBQZW5TdHlsZSB7CiAgICAgICAgTm9Q
ZW4sCiAgICAgICAgU29saWRMaW5lLAogICAgICAgIERhc2hMaW5lLAogICAgICAgIERvdExpbmUs
CiAgICAgICAgRGFzaERvdExpbmUsCiAgICAgICAgRGFzaERvdERvdExpbmUsCiAgICAgICAgTVBl
blN0eWxlID0gMHgwZgogICAgfTsKCiAgICBlbnVtIFBlbkNhcFN0eWxlIHsKICAgICAgICBGbGF0
Q2FwID0gMHgwMCwKICAgICAgICBTcXVhcmVDYXAgPSAweDEwLAogICAgICAgIFJvdW5kQ2FwID0g
MHgyMCwKICAgICAgICBNUGVuQ2FwU3R5bGUgPSAweDMwCiAgICB9OwoKICAgIGVudW0gUGVuSm9p
blN0eWxlIHsKICAgICAgICBNaXRlckpvaW4gPSAweDAwLAogICAgICAgIEJldmVsSm9pbiA9IDB4
NDAsCiAgICAgICAgUm91bmRKb2luID0gMHg4MCwKICAgICAgICBNUGVuSm9pblN0eWxlID0gMHhj
MAogICAgfTsKCiAgICBlbnVtIEJydXNoU3R5bGUgewogICAgICAgIE5vQnJ1c2gsCiAgICAgICAg
U29saWRQYXR0ZXJuLAogICAgICAgIERlbnNlMVBhdHRlcm4sCiAgICAgICAgRGVuc2UyUGF0dGVy
biwKICAgICAgICBEZW5zZTNQYXR0ZXJuLAogICAgICAgIERlbnNlNFBhdHRlcm4sCiAgICAgICAg
RGVuc2U1UGF0dGVybiwKICAgICAgICBEZW5zZTZQYXR0ZXJuLAogICAgICAgIERlbnNlN1BhdHRl
cm4sCiAgICAgICAgSG9yUGF0dGVybiwKICAgICAgICBWZXJQYXR0ZXJuLAogICAgICAgIENyb3Nz
UGF0dGVybiwKICAgICAgICBCRGlhZ1BhdHRlcm4sCiAgICAgICAgRkRpYWdQYXR0ZXJuLAogICAg
ICAgIERpYWdDcm9zc1BhdHRlcm4sCiAgICAgICAgQ3VzdG9tUGF0dGVybj0yNAogICAgfTsKCiAg
ICBlbnVtIFdpbmRvd3NWZXJzaW9uIHsKICAgICAgICBXVl8zMnMgPSAweDAwMDEsCiAgICAgICAg
V1ZfOTUgPSAweDAwMDIsCiAgICAgICAgV1ZfOTggPSAweDAwMDMsCiAgICAgICAgV1ZfRE9TX2Jh
c2VkID0gMHgwMDBmLAoKICAgICAgICBXVl9OVCA9IDB4MDAxMCwKICAgICAgICBXVl8yMDAwID0g
MHgwMDIwLAogICAgICAgIFdWX05UX2Jhc2VkID0gMHgwMGYwCiAgICB9OwoKICAgIGVudW0gVUlF
ZmZlY3QgewogICAgICAgIFVJX0dlbmVyYWwsCiAgICAgICAgVUlfQW5pbWF0ZU1lbnUsCiAgICAg
ICAgVUlfRmFkZU1lbnUsCiAgICAgICAgVUlfQW5pbWF0ZUNvbWJvLAogICAgICAgIFVJX0FuaW1h
dGVUb29sdGlwLAogICAgICAgIFVJX0ZhZGVUb29sdGlwCiAgICB9OwoKCgoKICAgIHN0YXRpYyBj
b25zdCBRQ3Vyc29yICYgYXJyb3dDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHVw
QXJyb3dDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGNyb3NzQ3Vyc29yOwogICAg
c3RhdGljIGNvbnN0IFFDdXJzb3IgJiB3YWl0Q3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFDdXJz
b3IgJiBpYmVhbUN1cnNvcjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgc2l6ZVZlckN1cnNv
cjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgc2l6ZUhvckN1cnNvcjsKICAgIHN0YXRpYyBj
b25zdCBRQ3Vyc29yICYgc2l6ZUJEaWFnQ3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFDdXJzb3Ig
JiBzaXplRkRpYWdDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHNpemVBbGxDdXJz
b3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGJsYW5rQ3Vyc29yOwogICAgc3RhdGljIGNv
bnN0IFFDdXJzb3IgJiBzcGxpdFZDdXJzb3I7CgogICAgc3RhdGljIGNvbnN0IFFDdXJzb3IgJiBz
cGxpdEhDdXJzb3I7CgogICAgc3RhdGljIGNvbnN0IFFDdXJzb3IgJiBwb2ludGluZ0hhbmRDdXJz
b3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGZvcmJpZGRlbkN1cnNvcjsKCgogICAgZW51
bSBUZXh0Rm9ybWF0IHsKICAgICAgICBQbGFpblRleHQsCiAgICAgICAgUmljaFRleHQsCiAgICAg
ICAgQXV0b1RleHQKICAgIH07Cn07CgoKY2xhc3MgUUludGVybmFsIHsKcHVibGljOgogICAgZW51
bSBQYWludERldmljZUZsYWdzIHsKICAgICAgICBVbmRlZmluZWREZXZpY2UgPSAweDAwLAogICAg
ICAgIFdpZGdldCA9IDB4MDEsCiAgICAgICAgUGl4bWFwID0gMHgwMiwKICAgICAgICBQcmludGVy
ID0gMHgwMywKICAgICAgICBQaWN0dXJlID0gMHgwNCwKICAgICAgICBTeXN0ZW0gPSAweDA1LAog
ICAgICAgIERldmljZVR5cGVNYXNrID0gMHgwZiwKICAgICAgICBFeHRlcm5hbERldmljZSA9IDB4
MTAKICAgIH07Cn07CiMgNDYgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCgoKIyAxICIvdXNyL2xp
YjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0
CiMgMTEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9s
aW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMu
My9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMgNAoKCgoKCgojIDEgIi91c3IvbGliNjQvZ2NjLWxp
Yi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMjIgIi91
c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9saW1pdHMuaCIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRl
L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMyA0
CiMgMTI2ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMgNAojIDM3
ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzIDQKIyAxMjcgIi91c3IvaW5jbHVk
ZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzIDQKIyAxNDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIg
MiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMyA0CiMgMTQ5
ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
eG9wZW5fbGltLmgiIDEgMyA0CiMgMzQgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQKIyAzNSAiL3Vzci9p
bmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMyA0CiMgMTUzICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDIgMyA0CiMgMTIzICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4z
L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1z
dXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDEyICIvdXNyL2xpYjY0
L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMg
NDkgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCgoKCmNsYXNzIFFQYWludERldmljZTsKY2xhc3Mg
UVBhaW50RGV2aWNlTWV0cmljczsKY2xhc3MgUVdpZGdldDsKY2xhc3MgUVdpZGdldE1hcHBlcjsK
Y2xhc3MgUURpYWxvZzsKY2xhc3MgUUNvbG9yOwpjbGFzcyBRQ29sb3JHcm91cDsKY2xhc3MgUVBh
bGV0dGU7CmNsYXNzIFFDdXJzb3I7CmNsYXNzIFFQb2ludDsKY2xhc3MgUVNpemU7CmNsYXNzIFFS
ZWN0OwpjbGFzcyBRUG9pbnRBcnJheTsKY2xhc3MgUVBhaW50ZXI7CmNsYXNzIFFSZWdpb247CmNs
YXNzIFFGb250OwpjbGFzcyBRRm9udE1ldHJpY3M7CmNsYXNzIFFGb250SW5mbzsKY2xhc3MgUVBl
bjsKY2xhc3MgUUJydXNoOwpjbGFzcyBRV01hdHJpeDsKY2xhc3MgUVBpeG1hcDsKY2xhc3MgUUJp
dG1hcDsKY2xhc3MgUU1vdmllOwpjbGFzcyBRSW1hZ2U7CmNsYXNzIFFJbWFnZUlPOwpjbGFzcyBR
UGljdHVyZTsKY2xhc3MgUVByaW50ZXI7CmNsYXNzIFFBY2NlbDsKY2xhc3MgUVRpbWVyOwpjbGFz
cyBRVGltZTsKY2xhc3MgUUNsaXBib2FyZDsKCgoKCmNsYXNzIFFXaWRnZXRMaXN0OwpjbGFzcyBR
V2lkZ2V0TGlzdEl0OwojIDExNiAia2VybmVsL3F3aW5kb3dkZWZzLmgiCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBXSWQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBIQU5ETEU7CgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CnR5cGVkZWYgdW5pb24gX1hFdmVudCBYRXZlbnQ7CnR5
cGVkZWYgc3RydWN0IF9YR0MgKkdDOwp0eXBlZGVmIHN0cnVjdCBfWFJlZ2lvbiAqUmVnaW9uOwoK
IERpc3BsYXkgKnF0X3hkaXNwbGF5KCk7CiBpbnQgcXRfeHNjcmVlbigpOwogV0lkIHF0X3hyb290
d2luKCk7CiBHQyBxdF94Z2V0X3JlYWRvbmx5X2djKCBib29sIG1vbm9jaHJvbWU9RkFMU0UgKTsK
IEdDIHF0X3hnZXRfdGVtcF9nYyggYm9vbCBtb25vY2hyb21lPUZBTFNFICk7CiMgMTQ1ICJrZXJu
ZWwvcXdpbmRvd2RlZnMuaCIKY2xhc3MgUUFwcGxpY2F0aW9uOwojIDE1NCAia2VybmVsL3F3aW5k
b3dkZWZzLmgiCnR5cGVkZWYgUV9JTlQzMiBRQ09PUkQ7CmNvbnN0IFFDT09SRCBRQ09PUkRfTUFY
ID0gMjE0NzQ4MzY0NzsKY29uc3QgUUNPT1JEIFFDT09SRF9NSU4gPSAtUUNPT1JEX01BWCAtIDE7
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBRUmdiOwoKIGNoYXIgKnFBcHBOYW1lKCk7CgoKCgp0eXBl
ZGVmIHZvaWQgKCpRX0NsZWFuVXBGdW5jdGlvbikoKTsKIHZvaWQgcUFkZFBvc3RSb3V0aW5lKCBR
X0NsZWFuVXBGdW5jdGlvbiApOwogdm9pZCBxUmVtb3ZlUG9zdFJvdXRpbmUoIFFfQ2xlYW5VcEZ1
bmN0aW9uICk7CgoKIHZvaWQgKnF0X2ZpbmRfb2JqX2NoaWxkKCBRT2JqZWN0ICosIGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqICk7CiMgNDMgImtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJu
ZWwvcW9iamVjdC5oIiAxCiMgNDUgImtlcm5lbC9xb2JqZWN0LmgiCiMgMSAia2VybmVsL3FldmVu
dC5oIiAxCiMgNDMgImtlcm5lbC9xZXZlbnQuaCIKIyAxICJrZXJuZWwvcXJlZ2lvbi5oIiAxCiMg
NDMgImtlcm5lbC9xcmVnaW9uLmgiCiMgMSAia2VybmVsL3FyZWN0LmgiIDEKIyA0MiAia2VybmVs
L3FyZWN0LmgiCiMgMSAia2VybmVsL3FzaXplLmgiIDEKIyA0MiAia2VybmVsL3FzaXplLmgiCiMg
MSAia2VybmVsL3Fwb2ludC5oIiAxCiMgNDYgImtlcm5lbC9xcG9pbnQuaCIKY2xhc3MgUVBvaW50
CnsKcHVibGljOgogICAgUVBvaW50KCk7CiAgICBRUG9pbnQoIGludCB4cG9zLCBpbnQgeXBvcyAp
OwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CgogICAgaW50IHgoKSBjb25zdDsKICAgIGludCB5
KCkgY29uc3Q7CiAgICB2b2lkIHNldFgoIGludCB4ICk7CiAgICB2b2lkIHNldFkoIGludCB5ICk7
CgogICAgaW50IG1hbmhhdHRhbkxlbmd0aCgpIGNvbnN0OwoKICAgIFFDT09SRCAmcngoKTsKICAg
IFFDT09SRCAmcnkoKTsKCiAgICBRUG9pbnQgJm9wZXJhdG9yKz0oIGNvbnN0IFFQb2ludCAmcCAp
OwogICAgUVBvaW50ICZvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIFFQb2ludCAm
b3BlcmF0b3IqPSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IqPSggZG91YmxlIGMgKTsK
ICAgIFFQb2ludCAmb3BlcmF0b3IvPSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IvPSgg
ZG91YmxlIGMgKTsKCiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVBv
aW50ICYsIGNvbnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PSggY29uc3QgUVBvaW50ICYsIGNvbnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIFFQ
b2ludCBvcGVyYXRvcisoIGNvbnN0IFFQb2ludCAmLCBjb25zdCBRUG9pbnQgJiApOwogICAgZnJp
ZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3ItKCBjb25zdCBRUG9pbnQgJiwgY29uc3QgUVBvaW50
ICYgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggY29uc3QgUVBvaW50ICYs
IGludCApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IqKCBpbnQsIGNvbnN0IFFQ
b2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvciooIGNvbnN0IFFQb2lu
dCAmLCBkb3VibGUgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggZG91Ymxl
LCBjb25zdCBRUG9pbnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3ItKCBj
b25zdCBRUG9pbnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25z
dCBRUG9pbnQgJiwgaW50ICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvci8oIGNv
bnN0IFFQb2ludCAmLCBkb3VibGUgKTsKCnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCB3YXJuaW5n
RGl2QnlaZXJvKCk7CgoKCgoKICAgIFFDT09SRCB4cDsKICAgIFFDT09SRCB5cDsKCn07CgoKCgoK
CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUVBvaW50ICYg
KTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRUG9pbnQgJiApOwoK
CgoKCgppbmxpbmUgUVBvaW50OjpRUG9pbnQoKQp7IHhwPTA7IHlwPTA7IH0KCmlubGluZSBRUG9p
bnQ6OlFQb2ludCggaW50IHhwb3MsIGludCB5cG9zICkKeyB4cD0oUUNPT1JEKXhwb3M7IHlwPShR
Q09PUkQpeXBvczsgfQoKaW5saW5lIGJvb2wgUVBvaW50Ojppc051bGwoKSBjb25zdAp7IHJldHVy
biB4cCA9PSAwICYmIHlwID09IDA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp4KCkgY29uc3QKeyBy
ZXR1cm4geHA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp5KCkgY29uc3QKeyByZXR1cm4geXA7IH0K
CmlubGluZSB2b2lkIFFQb2ludDo6c2V0WCggaW50IHggKQp7IHhwID0gKFFDT09SRCl4OyB9Cgpp
bmxpbmUgdm9pZCBRUG9pbnQ6OnNldFkoIGludCB5ICkKeyB5cCA9IChRQ09PUkQpeTsgfQoKaW5s
aW5lIFFDT09SRCAmUVBvaW50OjpyeCgpCnsgcmV0dXJuIHhwOyB9CgppbmxpbmUgUUNPT1JEICZR
UG9pbnQ6OnJ5KCkKeyByZXR1cm4geXA7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0
b3IrPSggY29uc3QgUVBvaW50ICZwICkKeyB4cCs9cC54cDsgeXArPXAueXA7IHJldHVybiAqdGhp
czsgfQoKaW5saW5lIFFQb2ludCAmUVBvaW50OjpvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAg
KQp7IHhwLT1wLnhwOyB5cC09cC55cDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVBvaW50ICZR
UG9pbnQ6Om9wZXJhdG9yKj0oIGludCBjICkKeyB4cCo9KFFDT09SRCljOyB5cCo9KFFDT09SRClj
OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0b3IqPSggZG91
YmxlIGMgKQp7IHhwPShRQ09PUkQpKHhwKmMpOyB5cD0oUUNPT1JEKSh5cCpjKTsgcmV0dXJuICp0
aGlzOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBR
UG9pbnQgJnAyICkKeyByZXR1cm4gcDEueHAgPT0gcDIueHAgJiYgcDEueXAgPT0gcDIueXA7IH0K
CmlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAm
cDIgKQp7IHJldHVybiBwMS54cCAhPSBwMi54cCB8fCBwMS55cCAhPSBwMi55cDsgfQoKaW5saW5l
IFFQb2ludCBvcGVyYXRvcisoIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7
IHJldHVybiBRUG9pbnQocDEueHArcDIueHAsIHAxLnlwK3AyLnlwKTsgfQoKaW5saW5lIFFQb2lu
dCBvcGVyYXRvci0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7IHJldHVy
biBRUG9pbnQocDEueHAtcDIueHAsIHAxLnlwLXAyLnlwKTsgfQoKaW5saW5lIFFQb2ludCBvcGVy
YXRvciooIGNvbnN0IFFQb2ludCAmcCwgaW50IGMgKQp7IHJldHVybiBRUG9pbnQocC54cCpjLCBw
LnlwKmMpOyB9CgppbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggaW50IGMsIGNvbnN0IFFQb2ludCAm
cCApCnsgcmV0dXJuIFFQb2ludChwLnhwKmMsIHAueXAqYyk7IH0KCmlubGluZSBRUG9pbnQgb3Bl
cmF0b3IqKCBjb25zdCBRUG9pbnQgJnAsIGRvdWJsZSBjICkKeyByZXR1cm4gUVBvaW50KChRQ09P
UkQpKHAueHAqYyksIChRQ09PUkQpKHAueXAqYykpOyB9CgppbmxpbmUgUVBvaW50IG9wZXJhdG9y
KiggZG91YmxlIGMsIGNvbnN0IFFQb2ludCAmcCApCnsgcmV0dXJuIFFQb2ludCgoUUNPT1JEKShw
LnhwKmMpLCAoUUNPT1JEKShwLnlwKmMpKTsgfQoKaW5saW5lIFFQb2ludCBvcGVyYXRvci0oIGNv
bnN0IFFQb2ludCAmcCApCnsgcmV0dXJuIFFQb2ludCgtcC54cCwgLXAueXApOyB9CgppbmxpbmUg
UVBvaW50ICZRUG9pbnQ6Om9wZXJhdG9yLz0oIGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkK
ICAgICAgICB3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgeHAvPShRQ09PUkQpYzsKICAgIHlwLz0o
UUNPT1JEKWM7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3Bl
cmF0b3IvPSggZG91YmxlIGMgKQp7CgogICAgaWYgKCBjID09IDAuMCApCiAgICAgICAgd2Fybmlu
Z0RpdkJ5WmVybygpOwoKICAgIHhwPShRQ09PUkQpKHhwL2MpOwogICAgeXA9KFFDT09SRCkoeXAv
Yyk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25zdCBR
UG9pbnQgJnAsIGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkKICAgICAgICBRUG9pbnQ6Ondh
cm5pbmdEaXZCeVplcm8oKTsKCiAgICByZXR1cm4gUVBvaW50KHAueHAvYywgcC55cC9jKTsKfQoK
aW5saW5lIFFQb2ludCBvcGVyYXRvci8oIGNvbnN0IFFQb2ludCAmcCwgZG91YmxlIGMgKQp7Cgog
ICAgaWYgKCBjID09IDAuMCApCiAgICAgICAgUVBvaW50Ojp3YXJuaW5nRGl2QnlaZXJvKCk7Cgog
ICAgcmV0dXJuIFFQb2ludCgoUUNPT1JEKShwLnhwL2MpLCAoUUNPT1JEKShwLnlwL2MpKTsKfQoj
IDQzICJrZXJuZWwvcXNpemUuaCIgMgoKCgpjbGFzcyBRU2l6ZQp7CnB1YmxpYzoKICAgIFFTaXpl
KCk7CiAgICBRU2l6ZSggaW50IHcsIGludCBoICk7CgogICAgYm9vbCBpc051bGwoKSBjb25zdDsK
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CgogICAg
aW50IHdpZHRoKCkgY29uc3Q7CiAgICBpbnQgaGVpZ2h0KCkgY29uc3Q7CiAgICB2b2lkIHNldFdp
ZHRoKCBpbnQgdyApOwogICAgdm9pZCBzZXRIZWlnaHQoIGludCBoICk7CiAgICB2b2lkIHRyYW5z
cG9zZSgpOwoKICAgIFFTaXplIGV4cGFuZGVkVG8oIGNvbnN0IFFTaXplICYgKSBjb25zdDsKICAg
IFFTaXplIGJvdW5kZWRUbyggY29uc3QgUVNpemUgJiApIGNvbnN0OwoKICAgIFFDT09SRCAmcndp
ZHRoKCk7CiAgICBRQ09PUkQgJnJoZWlnaHQoKTsKCiAgICBRU2l6ZSAmb3BlcmF0b3IrPSggY29u
c3QgUVNpemUgJiApOwogICAgUVNpemUgJm9wZXJhdG9yLT0oIGNvbnN0IFFTaXplICYgKTsKICAg
IFFTaXplICZvcGVyYXRvcio9KCBpbnQgYyApOwogICAgUVNpemUgJm9wZXJhdG9yKj0oIGRvdWJs
ZSBjICk7CiAgICBRU2l6ZSAmb3BlcmF0b3IvPSggaW50IGMgKTsKICAgIFFTaXplICZvcGVyYXRv
ci89KCBkb3VibGUgYyApOwoKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25z
dCBRU2l6ZSAmLCBjb25zdCBRU2l6ZSAmICk7CiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPSggY29uc3QgUVNpemUgJiwgY29uc3QgUVNpemUgJiApOwogICAgZnJpZW5kIGlubGluZSBR
U2l6ZSBvcGVyYXRvcisoIGNvbnN0IFFTaXplICYsIGNvbnN0IFFTaXplICYgKTsKICAgIGZyaWVu
ZCBpbmxpbmUgUVNpemUgb3BlcmF0b3ItKCBjb25zdCBRU2l6ZSAmLCBjb25zdCBRU2l6ZSAmICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJiwgaW50ICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggaW50LCBjb25zdCBRU2l6ZSAmICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJiwgZG91Ymxl
ICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggZG91YmxlLCBjb25zdCBRU2l6
ZSAmICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yLyggY29uc3QgUVNpemUgJiwg
aW50ICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yLyggY29uc3QgUVNpemUgJiwg
ZG91YmxlICk7Cgpwcml2YXRlOgogICAgc3RhdGljIHZvaWQgd2FybmluZ0RpdkJ5WmVybygpOwoK
ICAgIFFDT09SRCB3ZDsKICAgIFFDT09SRCBodDsKfTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVy
YXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRU2l6ZSAmICk7CiBRRGF0YVN0cmVhbSAmb3Bl
cmF0b3I+PiggUURhdGFTdHJlYW0gJiwgUVNpemUgJiApOwoKCgoKCgppbmxpbmUgUVNpemU6OlFT
aXplKCkKeyB3ZCA9IGh0ID0gLTE7IH0KCmlubGluZSBRU2l6ZTo6UVNpemUoIGludCB3LCBpbnQg
aCApCnsgd2Q9KFFDT09SRCl3OyBodD0oUUNPT1JEKWg7IH0KCmlubGluZSBib29sIFFTaXplOjpp
c051bGwoKSBjb25zdAp7IHJldHVybiB3ZD09MCAmJiBodD09MDsgfQoKaW5saW5lIGJvb2wgUVNp
emU6OmlzRW1wdHkoKSBjb25zdAp7IHJldHVybiB3ZDwxIHx8IGh0PDE7IH0KCmlubGluZSBib29s
IFFTaXplOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4gd2Q+PTAgJiYgaHQ+PTA7IH0KCmlubGlu
ZSBpbnQgUVNpemU6OndpZHRoKCkgY29uc3QKeyByZXR1cm4gd2Q7IH0KCmlubGluZSBpbnQgUVNp
emU6OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIGh0OyB9CgppbmxpbmUgdm9pZCBRU2l6ZTo6c2V0
V2lkdGgoIGludCB3ICkKeyB3ZD0oUUNPT1JEKXc7IH0KCmlubGluZSB2b2lkIFFTaXplOjpzZXRI
ZWlnaHQoIGludCBoICkKeyBodD0oUUNPT1JEKWg7IH0KCmlubGluZSBRQ09PUkQgJlFTaXplOjpy
d2lkdGgoKQp7IHJldHVybiB3ZDsgfQoKaW5saW5lIFFDT09SRCAmUVNpemU6OnJoZWlnaHQoKQp7
IHJldHVybiBodDsgfQoKaW5saW5lIFFTaXplICZRU2l6ZTo6b3BlcmF0b3IrPSggY29uc3QgUVNp
emUgJnMgKQp7IHdkKz1zLndkOyBodCs9cy5odDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVNp
emUgJlFTaXplOjpvcGVyYXRvci09KCBjb25zdCBRU2l6ZSAmcyApCnsgd2QtPXMud2Q7IGh0LT1z
Lmh0OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKj0oIGlu
dCBjICkKeyB3ZCo9KFFDT09SRCljOyBodCo9KFFDT09SRCljOyByZXR1cm4gKnRoaXM7IH0KCmlu
bGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKj0oIGRvdWJsZSBjICkKeyB3ZD0oUUNPT1JEKSh3
ZCpjKTsgaHQ9KFFDT09SRCkoaHQqYyk7IHJldHVybiAqdGhpczsgfQoKaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PSggY29uc3QgUVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIgKQp7IHJldHVybiBzMS53
ZCA9PSBzMi53ZCAmJiBzMS5odCA9PSBzMi5odDsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPSgg
Y29uc3QgUVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIgKQp7IHJldHVybiBzMS53ZCAhPSBzMi53
ZCB8fCBzMS5odCAhPSBzMi5odDsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yKyggY29uc3QgUVNp
emUgJiBzMSwgY29uc3QgUVNpemUgJiBzMiApCnsgcmV0dXJuIFFTaXplKHMxLndkK3MyLndkLCBz
MS5odCtzMi5odCk7IH0KCmlubGluZSBRU2l6ZSBvcGVyYXRvci0oIGNvbnN0IFFTaXplICZzMSwg
Y29uc3QgUVNpemUgJnMyICkKeyByZXR1cm4gUVNpemUoczEud2QtczIud2QsIHMxLmh0LXMyLmh0
KTsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJnMsIGludCBjICkKeyBy
ZXR1cm4gUVNpemUocy53ZCpjLCBzLmh0KmMpOyB9CgppbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBp
bnQgYywgY29uc3QgUVNpemUgJnMgKQp7IHJldHVybiBRU2l6ZShzLndkKmMsIHMuaHQqYyk7IH0K
CmlubGluZSBRU2l6ZSBvcGVyYXRvciooIGNvbnN0IFFTaXplICZzLCBkb3VibGUgYyApCnsgcmV0
dXJuIFFTaXplKChRQ09PUkQpKHMud2QqYyksIChRQ09PUkQpKHMuaHQqYykpOyB9CgppbmxpbmUg
UVNpemUgb3BlcmF0b3IqKCBkb3VibGUgYywgY29uc3QgUVNpemUgJnMgKQp7IHJldHVybiBRU2l6
ZSgoUUNPT1JEKShzLndkKmMpLCAoUUNPT1JEKShzLmh0KmMpKTsgfQoKaW5saW5lIFFTaXplICZR
U2l6ZTo6b3BlcmF0b3IvPSggaW50IGMgKQp7CgogICAgaWYgKCBjID09IDAgKQogICAgICAgIHdh
cm5pbmdEaXZCeVplcm8oKTsKCiAgICB3ZC89KFFDT09SRCljOyBodC89KFFDT09SRCljOwogICAg
cmV0dXJuICp0aGlzOwp9CgppbmxpbmUgUVNpemUgJlFTaXplOjpvcGVyYXRvci89KCBkb3VibGUg
YyApCnsKCiAgICBpZiAoIGMgPT0gMC4wICkKICAgICAgICB3YXJuaW5nRGl2QnlaZXJvKCk7Cgog
ICAgd2Q9KFFDT09SRCkod2QvYyk7IGh0PShRQ09PUkQpKGh0L2MpOwogICAgcmV0dXJuICp0aGlz
Owp9CgppbmxpbmUgUVNpemUgb3BlcmF0b3IvKCBjb25zdCBRU2l6ZSAmcywgaW50IGMgKQp7Cgog
ICAgaWYgKCBjID09IDAgKQogICAgICAgIFFTaXplOjp3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAg
cmV0dXJuIFFTaXplKHMud2QvYywgcy5odC9jKTsKfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yLygg
Y29uc3QgUVNpemUgJnMsIGRvdWJsZSBjICkKewoKICAgIGlmICggYyA9PSAwLjAgKQogICAgICAg
IFFTaXplOjp3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgcmV0dXJuIFFTaXplKChRQ09PUkQpKHMu
d2QvYyksIChRQ09PUkQpKHMuaHQvYykpOwp9CgppbmxpbmUgUVNpemUgUVNpemU6OmV4cGFuZGVk
VG8oIGNvbnN0IFFTaXplICYgb3RoZXJTaXplICkgY29uc3QKewogICAgcmV0dXJuIFFTaXplKCAo
KHdkKSA+IChvdGhlclNpemUud2QpID8gKHdkKSA6IChvdGhlclNpemUud2QpKSwgKChodCkgPiAo
b3RoZXJTaXplLmh0KSA/IChodCkgOiAob3RoZXJTaXplLmh0KSkgKTsKfQoKaW5saW5lIFFTaXpl
IFFTaXplOjpib3VuZGVkVG8oIGNvbnN0IFFTaXplICYgb3RoZXJTaXplICkgY29uc3QKewogICAg
cmV0dXJuIFFTaXplKCAoKHdkKSA8IChvdGhlclNpemUud2QpID8gKHdkKSA6IChvdGhlclNpemUu
d2QpKSwgKChodCkgPCAob3RoZXJTaXplLmh0KSA/IChodCkgOiAob3RoZXJTaXplLmh0KSkgKTsK
fQojIDQzICJrZXJuZWwvcXJlY3QuaCIgMgoKCgoKCgoKY2xhc3MgUVJlY3QKewpwdWJsaWM6CiAg
ICBRUmVjdCgpIHsgeDEgPSB5MSA9IDA7IHgyID0geTIgPSAtMTsgfQogICAgUVJlY3QoIGNvbnN0
IFFQb2ludCAmdG9wbGVmdCwgY29uc3QgUVBvaW50ICZib3R0b21yaWdodCApOwogICAgUVJlY3Qo
IGNvbnN0IFFQb2ludCAmdG9wbGVmdCwgY29uc3QgUVNpemUgJnNpemUgKTsKICAgIFFSZWN0KCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0ICk7CgogICAgYm9vbCBpc051
bGwoKSBjb25zdDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAgICBRUmVjdCBub3JtYWxpemUoKSBjb25zdDsKCiAgICBpbnQgbGVmdCgpIGNvbnN0
OwogICAgaW50IHRvcCgpIGNvbnN0OwogICAgaW50IHJpZ2h0KCkgY29uc3Q7CiAgICBpbnQgYm90
dG9tKCkgY29uc3Q7CgogICAgUUNPT1JEICZyTGVmdCgpOwogICAgUUNPT1JEICZyVG9wKCk7CiAg
ICBRQ09PUkQgJnJSaWdodCgpOwogICAgUUNPT1JEICZyQm90dG9tKCk7CgogICAgaW50IHgoKSBj
b25zdDsKICAgIGludCB5KCkgY29uc3Q7CiAgICB2b2lkIHNldExlZnQoIGludCBwb3MgKTsKICAg
IHZvaWQgc2V0VG9wKCBpbnQgcG9zICk7CiAgICB2b2lkIHNldFJpZ2h0KCBpbnQgcG9zICk7CiAg
ICB2b2lkIHNldEJvdHRvbSggaW50IHBvcyApOwogICAgdm9pZCBzZXRYKCBpbnQgeCApOwogICAg
dm9pZCBzZXRZKCBpbnQgeSApOwoKICAgIFFQb2ludCB0b3BMZWZ0KCkgY29uc3Q7CiAgICBRUG9p
bnQgYm90dG9tUmlnaHQoKSBjb25zdDsKICAgIFFQb2ludCB0b3BSaWdodCgpIGNvbnN0OwogICAg
UVBvaW50IGJvdHRvbUxlZnQoKSBjb25zdDsKICAgIFFQb2ludCBjZW50ZXIoKSBjb25zdDsKCiAg
ICB2b2lkIHJlY3QoIGludCAqeCwgaW50ICp5LCBpbnQgKncsIGludCAqaCApIGNvbnN0OwogICAg
dm9pZCBjb29yZHMoIGludCAqeDEsIGludCAqeTEsIGludCAqeDIsIGludCAqeTIgKSBjb25zdDsK
CiAgICB2b2lkIG1vdmVUb3BMZWZ0KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJv
dHRvbVJpZ2h0KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZVRvcFJpZ2h0KCBjb25z
dCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJvdHRvbUxlZnQoIGNvbnN0IFFQb2ludCAmcCAp
OwogICAgdm9pZCBtb3ZlQ2VudGVyKCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJ5
KCBpbnQgZHgsIGludCBkeSApOwoKICAgIHZvaWQgc2V0UmVjdCggaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGggKTsKICAgIHZvaWQgc2V0Q29vcmRzKCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBp
bnQgeTIgKTsKCiAgICBRU2l6ZSBzaXplKCkgY29uc3Q7CiAgICBpbnQgd2lkdGgoKSBjb25zdDsK
ICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2lkdGgoIGludCB3ICk7CiAgICB2
b2lkIHNldEhlaWdodCggaW50IGggKTsKICAgIHZvaWQgc2V0U2l6ZSggY29uc3QgUVNpemUgJnMg
KTsKCiAgICBRUmVjdCBvcGVyYXRvcnwoY29uc3QgUVJlY3QgJnIpIGNvbnN0OwogICAgUVJlY3Qg
b3BlcmF0b3ImKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIFFSZWN0JiBvcGVyYXRvcnw9KGNv
bnN0IFFSZWN0ICZyKTsKICAgIFFSZWN0JiBvcGVyYXRvciY9KGNvbnN0IFFSZWN0ICZyKTsKCiAg
ICBib29sIGNvbnRhaW5zKCBjb25zdCBRUG9pbnQgJnAsIGJvb2wgcHJvcGVyPUZBTFNFICkgY29u
c3Q7CiAgICBib29sIGNvbnRhaW5zKCBpbnQgeCwgaW50IHksIGJvb2wgcHJvcGVyPUZBTFNFICkg
Y29uc3Q7CiAgICBib29sIGNvbnRhaW5zKCBjb25zdCBRUmVjdCAmciwgYm9vbCBwcm9wZXI9RkFM
U0UgKSBjb25zdDsKICAgIFFSZWN0IHVuaXRlKCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwogICAg
UVJlY3QgaW50ZXJzZWN0KCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwogICAgYm9vbCBpbnRlcnNl
Y3RzKCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwoKICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
IGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYgKTsKICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oIGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYgKTsKCnByaXZhdGU6CgoKCgoKCiAgICBR
Q09PUkQgeDE7CiAgICBRQ09PUkQgeTE7CiAgICBRQ09PUkQgeDI7CiAgICBRQ09PUkQgeTI7Cgp9
OwoKIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVJlY3QgJiwgY29uc3QgUVJlY3QgJiApOwogYm9v
bCBvcGVyYXRvciE9KCBjb25zdCBRUmVjdCAmLCBjb25zdCBRUmVjdCAmICk7CgoKCgoKCiBRRGF0
YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUVJlY3QgJiApOwogUURh
dGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYsIFFSZWN0ICYgKTsKCgoKCgoKaW5s
aW5lIFFSZWN0OjpRUmVjdCggaW50IGxlZnQsIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdo
dCApCnsKICAgIHgxID0gKFFDT09SRClsZWZ0OwogICAgeTEgPSAoUUNPT1JEKXRvcDsKICAgIHgy
ID0gKFFDT09SRCkobGVmdCt3aWR0aC0xKTsKICAgIHkyID0gKFFDT09SRCkodG9wK2hlaWdodC0x
KTsKfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIHgyID09IHgx
LTEgJiYgeTIgPT0geTEtMTsgfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmlzRW1wdHkoKSBjb25zdAp7
IHJldHVybiB4MSA+IHgyIHx8IHkxID4geTI7IH0KCmlubGluZSBib29sIFFSZWN0Ojppc1ZhbGlk
KCkgY29uc3QKeyByZXR1cm4geDEgPD0geDIgJiYgeTEgPD0geTI7IH0KCmlubGluZSBpbnQgUVJl
Y3Q6OmxlZnQoKSBjb25zdAp7IHJldHVybiB4MTsgfQoKaW5saW5lIGludCBRUmVjdDo6dG9wKCkg
Y29uc3QKeyByZXR1cm4geTE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OnJpZ2h0KCkgY29uc3QKeyBy
ZXR1cm4geDI7IH0KCmlubGluZSBpbnQgUVJlY3Q6OmJvdHRvbSgpIGNvbnN0CnsgcmV0dXJuIHky
OyB9CgppbmxpbmUgUUNPT1JEICZRUmVjdDo6ckxlZnQoKQp7IHJldHVybiB4MTsgfQoKaW5saW5l
IFFDT09SRCAmIFFSZWN0OjpyVG9wKCkKeyByZXR1cm4geTE7IH0KCmlubGluZSBRQ09PUkQgJiBR
UmVjdDo6clJpZ2h0KCkKeyByZXR1cm4geDI7IH0KCmlubGluZSBRQ09PUkQgJiBRUmVjdDo6ckJv
dHRvbSgpCnsgcmV0dXJuIHkyOyB9CgppbmxpbmUgaW50IFFSZWN0Ojp4KCkgY29uc3QKeyByZXR1
cm4geDE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OnkoKSBjb25zdAp7IHJldHVybiB5MTsgfQoKaW5s
aW5lIHZvaWQgUVJlY3Q6OnNldExlZnQoIGludCBwb3MgKQp7IHgxID0gKFFDT09SRClwb3M7IH0K
CmlubGluZSB2b2lkIFFSZWN0OjpzZXRUb3AoIGludCBwb3MgKQp7IHkxID0gKFFDT09SRClwb3M7
IH0KCmlubGluZSB2b2lkIFFSZWN0OjpzZXRSaWdodCggaW50IHBvcyApCnsgeDIgPSAoUUNPT1JE
KXBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldEJvdHRvbSggaW50IHBvcyApCnsgeTIgPSAo
UUNPT1JEKXBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFgoIGludCB4ICkKeyB4MSA9IChR
Q09PUkQpeDsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFkoIGludCB5ICkKeyB5MSA9IChRQ09P
UkQpeTsgfQoKaW5saW5lIFFQb2ludCBRUmVjdDo6dG9wTGVmdCgpIGNvbnN0CnsgcmV0dXJuIFFQ
b2ludCh4MSwgeTEpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0Ojpib3R0b21SaWdodCgpIGNvbnN0
CnsgcmV0dXJuIFFQb2ludCh4MiwgeTIpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0Ojp0b3BSaWdo
dCgpIGNvbnN0CnsgcmV0dXJuIFFQb2ludCh4MiwgeTEpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0
Ojpib3R0b21MZWZ0KCkgY29uc3QKeyByZXR1cm4gUVBvaW50KHgxLCB5Mik7IH0KCmlubGluZSBR
UG9pbnQgUVJlY3Q6OmNlbnRlcigpIGNvbnN0CnsgcmV0dXJuIFFQb2ludCgoeDEreDIpLzIsICh5
MSt5MikvMik7IH0KCmlubGluZSBpbnQgUVJlY3Q6OndpZHRoKCkgY29uc3QKeyByZXR1cm4geDIg
LSB4MSArIDE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIHky
IC0geTEgKyAxOyB9CgppbmxpbmUgUVNpemUgUVJlY3Q6OnNpemUoKSBjb25zdAp7IHJldHVybiBR
U2l6ZSh4Mi14MSsxLCB5Mi15MSsxKTsgfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmNvbnRhaW5zKCBp
bnQgeCwgaW50IHksIGJvb2wgcHJvcGVyICkgY29uc3QKewogICAgaWYgKCBwcm9wZXIgKQogICAg
ICAgIHJldHVybiB4ID4geDEgJiYgeCA8IHgyICYmCiAgICAgICAgICAgICAgIHkgPiB5MSAmJiB5
IDwgeTI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIHggPj0geDEgJiYgeCA8PSB4MiAmJgogICAg
ICAgICAgICAgICB5ID49IHkxICYmIHkgPD0geTI7Cn0KIyA0NCAia2VybmVsL3FyZWdpb24uaCIg
MgoKCgoKY2xhc3MgUVJlZ2lvbgp7CnB1YmxpYzoKICAgIGVudW0gUmVnaW9uVHlwZSB7IFJlY3Rh
bmdsZSwgRWxsaXBzZSB9OwoKICAgIFFSZWdpb24oKTsKICAgIFFSZWdpb24oIGludCB4LCBpbnQg
eSwgaW50IHcsIGludCBoLCBSZWdpb25UeXBlID0gUmVjdGFuZ2xlICk7CiAgICBRUmVnaW9uKCBj
b25zdCBRUmVjdCAmLCBSZWdpb25UeXBlID0gUmVjdGFuZ2xlICk7CiAgICBRUmVnaW9uKCBjb25z
dCBRUG9pbnRBcnJheSAmLCBib29sIHdpbmRpbmc9RkFMU0UgKTsKICAgIFFSZWdpb24oIGNvbnN0
IFFSZWdpb24gJiApOwogICAgUVJlZ2lvbiggY29uc3QgUUJpdG1hcCAmICk7CiAgIH5RUmVnaW9u
KCk7CiAgICBRUmVnaW9uICZvcGVyYXRvcj0oIGNvbnN0IFFSZWdpb24gJiApOwoKICAgIGJvb2wg
aXNOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKCiAgICBib29sIGNvbnRh
aW5zKCBjb25zdCBRUG9pbnQgJnAgKSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMoIGNvbnN0IFFS
ZWN0ICZyICkgY29uc3Q7CgogICAgdm9pZCB0cmFuc2xhdGUoIGludCBkeCwgaW50IGR5ICk7Cgog
ICAgUVJlZ2lvbiB1bml0ZSggY29uc3QgUVJlZ2lvbiAmICkgY29uc3Q7CiAgICBRUmVnaW9uIGlu
dGVyc2VjdCggY29uc3QgUVJlZ2lvbiAmKSBjb25zdDsKICAgIFFSZWdpb24gc3VidHJhY3QoIGNv
bnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBlb3IoIGNvbnN0IFFSZWdpb24gJiAp
IGNvbnN0OwoKICAgIFFSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogICAgUUFycmF5PFFSZWN0
PiByZWN0cygpIGNvbnN0OwogICAgdm9pZCBzZXRSZWN0cyggY29uc3QgUVJlY3QgKiwgaW50ICk7
CgogICAgUVJlZ2lvbiBvcGVyYXRvcnwoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJl
Z2lvbiBvcGVyYXRvcisoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVy
YXRvciYoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVyYXRvci0oIGNv
bnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVyYXRvcl4oIGNvbnN0IFFSZWdp
b24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiYgb3BlcmF0b3J8PSggY29uc3QgUVJlZ2lvbiAmICk7
CiAgICBRUmVnaW9uJiBvcGVyYXRvcis9KCBjb25zdCBRUmVnaW9uICYgKTsKICAgIFFSZWdpb24m
IG9wZXJhdG9yJj0oIGNvbnN0IFFSZWdpb24gJiApOwogICAgUVJlZ2lvbiYgb3BlcmF0b3ItPSgg
Y29uc3QgUVJlZ2lvbiAmICk7CiAgICBRUmVnaW9uJiBvcGVyYXRvcl49KCBjb25zdCBRUmVnaW9u
ICYgKTsKCiAgICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAg
Ym9vbCBvcGVyYXRvciE9KCBjb25zdCBRUmVnaW9uICZyICkgY29uc3QKICAgICAgICAgICAgICAg
ICAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KHIpKTsgfQoKCgoKICAgIFJlZ2lvbiBoYW5k
bGUoKSBjb25zdCB7IHJldHVybiBkYXRhLT5yZ247IH0KIyAxMDYgImtlcm5lbC9xcmVnaW9uLmgi
CiAgICBmcmllbmQgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0
IFFSZWdpb24gJiApOwogICAgZnJpZW5kIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0
cmVhbSAmLCBRUmVnaW9uICYgKTsKCnByaXZhdGU6CiAgICBRUmVnaW9uKCBib29sICk7CiAgICBR
UmVnaW9uIGNvcHkoKSBjb25zdDsKICAgIHZvaWQgZGV0YWNoKCk7CgoKCiAgICB2b2lkIGV4ZWMo
IGNvbnN0IFFCeXRlQXJyYXkgJiwgaW50IHZlciA9IDAgKTsKICAgIHN0cnVjdCBRUmVnaW9uRGF0
YSA6IHB1YmxpYyBRU2hhcmVkIHsKCgoKICAgICAgICBSZWdpb24gcmduOwogICAgICAgIFFSZWN0
IGJyOwoKCgoKCiAgICAgICAgYm9vbCBpc19udWxsOwogICAgfSAqZGF0YTsKfTsKIyAxNTAgImtl
cm5lbC9xcmVnaW9uLmgiCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwg
Y29uc3QgUVJlZ2lvbiAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0g
JiwgUVJlZ2lvbiAmICk7CiMgNDQgImtlcm5lbC9xZXZlbnQuaCIgMgoKIyAxICJrZXJuZWwvcW1p
bWUuaCIgMQojIDQ3ICJrZXJuZWwvcW1pbWUuaCIKY2xhc3MgUU1pbWVTb3VyY2UgewpwdWJsaWM6
CiAgICB2aXJ0dWFsIH5RTWltZVNvdXJjZSgpOwogICAgdmlydHVhbCBjb25zdCBjaGFyKiBmb3Jt
YXQoIGludCBuID0gMCApIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgYm9vbCBwcm92aWRlcyggY29u
c3QgY2hhciogKSBjb25zdDsKICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBlbmNvZGVkRGF0YSggY29u
c3QgY2hhciogKSBjb25zdCA9IDA7Cn07CgpjbGFzcyBRTWltZVNvdXJjZUZhY3RvcnlEYXRhOwpj
bGFzcyBRU3RyaW5nTGlzdDsKCmNsYXNzIFFNaW1lU291cmNlRmFjdG9yeSB7CnB1YmxpYzoKICAg
IFFNaW1lU291cmNlRmFjdG9yeSgpOwogICAgdmlydHVhbCB+UU1pbWVTb3VyY2VGYWN0b3J5KCk7
CgogICAgc3RhdGljIFFNaW1lU291cmNlRmFjdG9yeSogZGVmYXVsdEZhY3RvcnkoKTsKICAgIHN0
YXRpYyB2b2lkIHNldERlZmF1bHRGYWN0b3J5KCBRTWltZVNvdXJjZUZhY3RvcnkqICk7CgogICAg
dmlydHVhbCBjb25zdCBRTWltZVNvdXJjZSogZGF0YShjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSkg
Y29uc3Q7CiAgICB2aXJ0dWFsIFFTdHJpbmcgbWFrZUFic29sdXRlKGNvbnN0IFFTdHJpbmcmIGFi
c19vcl9yZWxfbmFtZSwgY29uc3QgUVN0cmluZyYgY29udGV4dCkgY29uc3Q7CiAgICBjb25zdCBR
TWltZVNvdXJjZSogZGF0YShjb25zdCBRU3RyaW5nJiBhYnNfb3JfcmVsX25hbWUsIGNvbnN0IFFT
dHJpbmcmIGNvbnRleHQpIGNvbnN0OwoKICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KCBjb25zdCBR
U3RyaW5nJiBhYnNfbmFtZSwgY29uc3QgUVN0cmluZyYgdGV4dCApOwogICAgdmlydHVhbCB2b2lk
IHNldEltYWdlKCBjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSwgY29uc3QgUUltYWdlJiBpbSApOwog
ICAgdmlydHVhbCB2b2lkIHNldFBpeG1hcCggY29uc3QgUVN0cmluZyYgYWJzX25hbWUsIGNvbnN0
IFFQaXhtYXAmIHBtICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YSggY29uc3QgUVN0cmluZyYg
YWJzX25hbWUsIFFNaW1lU291cmNlKiBkYXRhICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZVBh
dGgoIGNvbnN0IFFTdHJpbmdMaXN0JiApOwogICAgdmlydHVhbCBRU3RyaW5nTGlzdCBmaWxlUGF0
aCgpIGNvbnN0OwogICAgdm9pZCBhZGRGaWxlUGF0aCggY29uc3QgUVN0cmluZyYgKTsKICAgIHZp
cnR1YWwgdm9pZCBzZXRFeHRlbnNpb25UeXBlKCBjb25zdCBRU3RyaW5nJiBleHQsIGNvbnN0IGNo
YXIqIG1pbWV0eXBlICk7Cgpwcml2YXRlOgogICAgUU1pbWVTb3VyY2VGYWN0b3J5RGF0YSogZDsK
fTsKIyA0NiAia2VybmVsL3FldmVudC5oIiAyCgoKCmNsYXNzIFFFdmVudDogcHVibGljIFF0CnsK
cHVibGljOgogICAgZW51bSBUeXBlIHsKCgoKCgoKICAgICAgICBOb25lID0gMCwKCgogICAgICAg
IFRpbWVyID0gMSwKICAgICAgICBNb3VzZUJ1dHRvblByZXNzID0gMiwKICAgICAgICBNb3VzZUJ1
dHRvblJlbGVhc2UgPSAzLAogICAgICAgIE1vdXNlQnV0dG9uRGJsQ2xpY2s9IDQsCiAgICAgICAg
TW91c2VNb3ZlID0gNSwKICAgICAgICBLZXlQcmVzcyA9IDYsCiAgICAgICAgS2V5UmVsZWFzZSA9
IDcsCiAgICAgICAgRm9jdXNJbiA9IDgsCiAgICAgICAgRm9jdXNPdXQgPSA5LAogICAgICAgIEVu
dGVyID0gMTAsCiAgICAgICAgTGVhdmUgPSAxMSwKICAgICAgICBQYWludCA9IDEyLAogICAgICAg
IE1vdmUgPSAxMywKICAgICAgICBSZXNpemUgPSAxNCwKICAgICAgICBDcmVhdGUgPSAxNSwKICAg
ICAgICBEZXN0cm95ID0gMTYsCiAgICAgICAgU2hvdyA9IDE3LAogICAgICAgIEhpZGUgPSAxOCwK
ICAgICAgICBDbG9zZSA9IDE5LAogICAgICAgIFF1aXQgPSAyMCwKICAgICAgICBSZXBhcmVudCA9
IDIxLAogICAgICAgIFNob3dNaW5pbWl6ZWQgPSAyMiwKICAgICAgICBTaG93Tm9ybWFsID0gMjMs
CiAgICAgICAgV2luZG93QWN0aXZhdGUgPSAyNCwKICAgICAgICBXaW5kb3dEZWFjdGl2YXRlID0g
MjUsCiAgICAgICAgU2hvd1RvUGFyZW50ID0gMjYsCiAgICAgICAgSGlkZVRvUGFyZW50ID0gMjcs
CiAgICAgICAgU2hvd01heGltaXplZCA9IDI4LAogICAgICAgIEFjY2VsID0gMzAsCiAgICAgICAg
V2hlZWwgPSAzMSwKICAgICAgICBBY2NlbEF2YWlsYWJsZSA9IDMyLAogICAgICAgIENhcHRpb25D
aGFuZ2UgPSAzMywKICAgICAgICBJY29uQ2hhbmdlID0gMzQsCiAgICAgICAgUGFyZW50Rm9udENo
YW5nZSA9IDM1LAogICAgICAgIEFwcGxpY2F0aW9uRm9udENoYW5nZSA9IDM2LAogICAgICAgIFBh
cmVudFBhbGV0dGVDaGFuZ2UgPSAzNywKICAgICAgICBBcHBsaWNhdGlvblBhbGV0dGVDaGFuZ2Ug
PSAzOCwKICAgICAgICBDbGlwYm9hcmQgPSA0MCwKICAgICAgICBTcGVlY2ggPSA0MiwKICAgICAg
ICBTb2NrQWN0ID0gNTAsCiAgICAgICAgQWNjZWxPdmVycmlkZSA9IDUxLAogICAgICAgIERyYWdF
bnRlciA9IDYwLAogICAgICAgIERyYWdNb3ZlID0gNjEsCiAgICAgICAgRHJhZ0xlYXZlID0gNjIs
CiAgICAgICAgRHJvcCA9IDYzLAogICAgICAgIERyYWdSZXNwb25zZSA9IDY0LAogICAgICAgIENo
aWxkSW5zZXJ0ZWQgPSA3MCwKICAgICAgICBDaGlsZFJlbW92ZWQgPSA3MSwKICAgICAgICBMYXlv
dXRIaW50ID0gNzIsCiAgICAgICAgU2hvd1dpbmRvd1JlcXVlc3QgPSA3MywKICAgICAgICBBY3Rp
dmF0ZUNvbnRyb2wgPSA4MCwKICAgICAgICBEZWFjdGl2YXRlQ29udHJvbCA9IDgxLAogICAgICAg
IFVzZXIgPSAxMDAwCiAgICB9OwoKICAgIFFFdmVudCggVHlwZSB0eXBlICkgOiB0KHR5cGUpLCBw
b3N0ZWQoRkFMU0UpIHt9CiAgICB2aXJ0dWFsIH5RRXZlbnQoKTsKICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHQ7IH0KcHJvdGVjdGVkOgogICAgVHlwZSB0Owpwcml2YXRlOgogICAgYm9v
bCBwb3N0ZWQ7CgoKCgogICAgZnJpZW5kIGNsYXNzIFFBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBj
bGFzcyBRQmFzZUFwcGxpY2F0aW9uOwp9OwoKCmNsYXNzIFFUaW1lckV2ZW50IDogcHVibGljIFFF
dmVudAp7CnB1YmxpYzoKICAgIFFUaW1lckV2ZW50KCBpbnQgdGltZXJJZCApCiAgICAgICAgOiBR
RXZlbnQoVGltZXIpLCBpZCh0aW1lcklkKSB7fQogICAgaW50IHRpbWVySWQoKSBjb25zdCB7IHJl
dHVybiBpZDsgfQpwcm90ZWN0ZWQ6CiAgICBpbnQgaWQ7Cn07CgoKY2xhc3MgUU1vdXNlRXZlbnQg
OiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUU1vdXNlRXZlbnQoIFR5cGUgdHlwZSwgY29u
c3QgUVBvaW50ICZwb3MsIGludCBidXR0b24sIGludCBzdGF0ZSApOwoKICAgIFFNb3VzZUV2ZW50
KCBUeXBlIHR5cGUsIGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUG9pbnQmZ2xvYmFsUG9zLAog
ICAgICAgICAgICAgICAgIGludCBidXR0b24sIGludCBzdGF0ZSApCiAgICAgICAgOiBRRXZlbnQo
dHlwZSksIHAocG9zKSwgZyhnbG9iYWxQb3MpLCBiKGJ1dHRvbikscygodXNob3J0KXN0YXRlKSB7
fTsKCiAgICBjb25zdCBRUG9pbnQgJnBvcygpIGNvbnN0IHsgcmV0dXJuIHA7IH0KICAgIGNvbnN0
IFFQb2ludCAmZ2xvYmFsUG9zKCkgY29uc3QgeyByZXR1cm4gZzsgfQogICAgaW50IHgoKSBjb25z
dCB7IHJldHVybiBwLngoKTsgfQogICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBwLnkoKTsgfQog
ICAgaW50IGdsb2JhbFgoKSBjb25zdCB7IHJldHVybiBnLngoKTsgfQogICAgaW50IGdsb2JhbFko
KSBjb25zdCB7IHJldHVybiBnLnkoKTsgfQogICAgQnV0dG9uU3RhdGUgYnV0dG9uKCkgY29uc3Qg
eyByZXR1cm4gKEJ1dHRvblN0YXRlKSBiOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIChCdXR0b25TdGF0ZSkgczsgfQogICAgQnV0dG9uU3RhdGUgc3RhdGVBZnRlcigp
IGNvbnN0Owpwcm90ZWN0ZWQ6CiAgICBRUG9pbnQgcDsKICAgIFFQb2ludCBnOwogICAgaW50IGI7
CiAgICB1c2hvcnQgczsKfTsKCgoKY2xhc3MgUVdoZWVsRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsK
cHVibGljOgogICAgUVdoZWVsRXZlbnQoIGNvbnN0IFFQb2ludCAmcG9zLCBpbnQgZGVsdGEsIGlu
dCBzdGF0ZSApOwogICAgUVdoZWVsRXZlbnQoIGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUG9p
bnQmIGdsb2JhbFBvcywgaW50IGRlbHRhLCBpbnQgc3RhdGUgKQogICAgICAgIDogUUV2ZW50KFdo
ZWVsKSwgcChwb3MpLCBnKGdsb2JhbFBvcyksIGQoZGVsdGEpLCBzKCh1c2hvcnQpc3RhdGUpLAog
ICAgICAgICAgYWNjcHQoVFJVRSkge30KICAgIGludCBkZWx0YSgpIGNvbnN0IHsgcmV0dXJuIGQ7
IH0KICAgIGNvbnN0IFFQb2ludCAmcG9zKCkgY29uc3QgeyByZXR1cm4gcDsgfQogICAgY29uc3Qg
UVBvaW50ICZnbG9iYWxQb3MoKSBjb25zdCB7IHJldHVybiBnOyB9CiAgICBpbnQgeCgpIGNvbnN0
IHsgcmV0dXJuIHAueCgpOyB9CiAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIHAueSgpOyB9CiAg
ICBpbnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0dXJuIGcueCgpOyB9CiAgICBpbnQgZ2xvYmFsWSgp
IGNvbnN0IHsgcmV0dXJuIGcueSgpOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAgICBib29sIGlzQWNjZXB0ZWQoKSBjb25zdCB7IHJl
dHVybiBhY2NwdDsgfQogICAgdm9pZCBhY2NlcHQoKSB7IGFjY3B0ID0gVFJVRTsgfQogICAgdm9p
ZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KcHJvdGVjdGVkOgogICAgUVBvaW50IHA7CiAg
ICBRUG9pbnQgZzsKICAgIGludCBkOwogICAgdXNob3J0IHM7CiAgICBib29sIGFjY3B0Owp9OwoK
CmNsYXNzIFFLZXlFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRS2V5RXZlbnQo
IFR5cGUgdHlwZSwgaW50IGtleSwgaW50IGFzY2lpLCBpbnQgc3RhdGUsCiAgICAgICAgICAgICAg
ICBjb25zdCBRU3RyaW5nJiB0ZXh0PVFTdHJpbmc6Om51bGwsIGJvb2wgYXV0b3JlcD1GQUxTRSwg
dXNob3J0IGNvdW50PTEgKQogICAgICAgIDogUUV2ZW50KHR5cGUpLCB0eHQodGV4dCksIGsoKHVz
aG9ydClrZXkpLCBzKCh1c2hvcnQpc3RhdGUpLAogICAgICAgICAgICBhKCh1Y2hhcilhc2NpaSks
IGFjY3B0KFRSVUUpLCBhdXRvcihhdXRvcmVwKSwgYyhjb3VudCkge30KICAgIGludCBrZXkoKSBj
b25zdCB7IHJldHVybiBrOyB9CiAgICBpbnQgYXNjaWkoKSBjb25zdCB7IHJldHVybiBhOyB9CiAg
ICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAg
ICBCdXR0b25TdGF0ZSBzdGF0ZUFmdGVyKCkgY29uc3Q7CiAgICBib29sIGlzQWNjZXB0ZWQoKSBj
b25zdCB7IHJldHVybiBhY2NwdDsgfQogICAgUVN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
dHh0OyB9CiAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0dXJuIGF1dG9yOyB9CiAg
ICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBpbnQoYyk7IH0KICAgIHZvaWQgYWNjZXB0KCkg
eyBhY2NwdCA9IFRSVUU7IH0KICAgIHZvaWQgaWdub3JlKCkgeyBhY2NwdCA9IEZBTFNFOyB9Cgpw
cm90ZWN0ZWQ6CiAgICBRU3RyaW5nIHR4dDsKICAgIHVzaG9ydCBrLCBzOwogICAgdWNoYXIgYTsK
ICAgIHVpbnQgYWNjcHQ6MTsKICAgIHVpbnQgYXV0b3I6MTsKICAgIHVzaG9ydCBjOwp9OwoKCmNs
YXNzIFFGb2N1c0V2ZW50IDogcHVibGljIFFFdmVudAp7CnB1YmxpYzoKCiAgICBRRm9jdXNFdmVu
dCggVHlwZSB0eXBlICkKICAgICAgICA6IFFFdmVudCh0eXBlKSB7fQoKICAgIGJvb2wgZ290Rm9j
dXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRm9jdXNJbjsgfQogICAgYm9vbCBsb3N0Rm9j
dXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRm9jdXNPdXQ7IH0KCiAgICBlbnVtIFJlYXNv
biB7IE1vdXNlLCBUYWIsIEFjdGl2ZVdpbmRvdywgUG9wdXAsIFNob3J0Y3V0LCBPdGhlciB9Owog
ICAgc3RhdGljIFJlYXNvbiByZWFzb24oKTsKICAgIHN0YXRpYyB2b2lkIHNldFJlYXNvbiggUmVh
c29uIHJlYXNvbiApOwogICAgc3RhdGljIHZvaWQgcmVzZXRSZWFzb24oKTsKCnByaXZhdGU6CiAg
ICBzdGF0aWMgUmVhc29uIG1fcmVhc29uOwogICAgc3RhdGljIFJlYXNvbiBwcmV2X3JlYXNvbjsK
fTsKCgpjbGFzcyBRUGFpbnRFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRUGFp
bnRFdmVudCggY29uc3QgUVJlZ2lvbiYgcGFpbnRSZWdpb24sIGJvb2wgZXJhc2VkID0gVFJVRSkK
ICAgICAgICA6IFFFdmVudChQYWludCksCiAgICAgICAgICByZWMocGFpbnRSZWdpb24uYm91bmRp
bmdSZWN0KCkpLAogICAgICAgICAgcmVnKHBhaW50UmVnaW9uKSwKICAgICAgICAgIGVyYXNlKGVy
YXNlZCl7fQogICAgUVBhaW50RXZlbnQoIGNvbnN0IFFSZWN0ICZwYWludFJlY3QsIGJvb2wgZXJh
c2VkID0gVFJVRSApCiAgICAgICAgOiBRRXZlbnQoUGFpbnQpLAogICAgICAgICAgcmVjKHBhaW50
UmVjdCksCiAgICAgICAgICByZWcocGFpbnRSZWN0KSwKICAgICAgICAgIGVyYXNlKGVyYXNlZCl7
fQogICAgY29uc3QgUVJlY3QgJnJlY3QoKSBjb25zdCB7IHJldHVybiByZWM7IH0KICAgIGNvbnN0
IFFSZWdpb24gJnJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIHJlZzsgfQogICAgYm9vbCBlcmFzZWQo
KSBjb25zdCB7IHJldHVybiBlcmFzZTsgfQpwcm90ZWN0ZWQ6CiAgICBmcmllbmQgY2xhc3MgUUFw
cGxpY2F0aW9uOwogICAgZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247CiAgICBRUmVjdCBy
ZWM7CiAgICBRUmVnaW9uIHJlZzsKICAgIGJvb2wgZXJhc2U7Cn07CgoKY2xhc3MgUU1vdmVFdmVu
dCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRTW92ZUV2ZW50KCBjb25zdCBRUG9pbnQg
JnBvcywgY29uc3QgUVBvaW50ICZvbGRQb3MgKQogICAgICAgIDogUUV2ZW50KE1vdmUpLCBwKHBv
cyksIG9sZHAob2xkUG9zKSB7fQogICAgY29uc3QgUVBvaW50ICZwb3MoKSBjb25zdCB7IHJldHVy
biBwOyB9CiAgICBjb25zdCBRUG9pbnQgJm9sZFBvcygpY29uc3QgeyByZXR1cm4gb2xkcDt9CnBy
b3RlY3RlZDoKICAgIFFQb2ludCBwLCBvbGRwOwogICAgZnJpZW5kIGNsYXNzIFFBcHBsaWNhdGlv
bjsKICAgIGZyaWVuZCBjbGFzcyBRQmFzZUFwcGxpY2F0aW9uOwp9OwoKCmNsYXNzIFFSZXNpemVF
dmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRUmVzaXplRXZlbnQoIGNvbnN0IFFT
aXplICZzaXplLCBjb25zdCBRU2l6ZSAmb2xkU2l6ZSApCiAgICAgICAgOiBRRXZlbnQoUmVzaXpl
KSwgcyhzaXplKSwgb2xkcyhvbGRTaXplKSB7fQogICAgY29uc3QgUVNpemUgJnNpemUoKSBjb25z
dCB7IHJldHVybiBzOyB9CiAgICBjb25zdCBRU2l6ZSAmb2xkU2l6ZSgpY29uc3QgeyByZXR1cm4g
b2xkczt9CnByb3RlY3RlZDoKICAgIFFTaXplIHMsIG9sZHM7CiAgICBmcmllbmQgY2xhc3MgUUFw
cGxpY2F0aW9uOwogICAgZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247Cn07CgoKY2xhc3Mg
UUNsb3NlRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUUNsb3NlRXZlbnQoKQog
ICAgICAgIDogUUV2ZW50KENsb3NlKSwgYWNjcHQoRkFMU0UpIHt9CiAgICBib29sIGlzQWNjZXB0
ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdDsgfQogICAgdm9pZCBhY2NlcHQoKSB7IGFjY3B0ID0g
VFJVRTsgfQogICAgdm9pZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KcHJvdGVjdGVkOgog
ICAgYm9vbCBhY2NwdDsKfTsKCgpjbGFzcyBRU2hvd0V2ZW50IDogcHVibGljIFFFdmVudAp7CnB1
YmxpYzoKICAgIFFTaG93RXZlbnQoYm9vbCBzcG9udGFuZW91cykKICAgICAgICA6IFFFdmVudChT
aG93KSwgc3BvbnQoc3BvbnRhbmVvdXMpIHt9CiAgICBib29sIHNwb250YW5lb3VzKCkgY29uc3Qg
eyByZXR1cm4gc3BvbnQ7IH0KcHJvdGVjdGVkOgogICAgYm9vbCBzcG9udDsKfTsKCgpjbGFzcyBR
SGlkZUV2ZW50IDogcHVibGljIFFFdmVudAp7CnB1YmxpYzoKICAgIFFIaWRlRXZlbnQoYm9vbCBz
cG9udGFuZW91cykKICAgICAgICA6IFFFdmVudChIaWRlKSwgc3BvbnQoc3BvbnRhbmVvdXMpIHt9
CiAgICBib29sIHNwb250YW5lb3VzKCkgY29uc3QgeyByZXR1cm4gc3BvbnQ7IH0KcHJvdGVjdGVk
OgogICAgYm9vbCBzcG9udDsKfTsKCgoKCgoKCmNsYXNzIFFEcm9wRXZlbnQgOiBwdWJsaWMgUUV2
ZW50LCBwdWJsaWMgUU1pbWVTb3VyY2UKewpwdWJsaWM6CiAgICBRRHJvcEV2ZW50KCBjb25zdCBR
UG9pbnQmIHBvcywgVHlwZSB0eXA9RHJvcCApCiAgICAgICAgOiBRRXZlbnQodHlwKSwgcChwb3Mp
LAogICAgICAgICAgYWN0KDApLCBhY2NwdCgwKSwgYWNjcHRhY3QoMCksIHJlc3YoMCksCiAgICAg
ICAgICBkKDApCiAgICAgICAge30KICAgIGNvbnN0IFFQb2ludCAmcG9zKCkgY29uc3QgeyByZXR1
cm4gcDsgfQogICAgYm9vbCBpc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gYWNjcHQgfHwgYWNj
cHRhY3Q7IH0KICAgIHZvaWQgYWNjZXB0KGJvb2wgeT1UUlVFKSB7IGFjY3B0ID0geTsgfQogICAg
dm9pZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KCiAgICBib29sIGlzQWN0aW9uQWNjZXB0
ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdGFjdDsgfQogICAgdm9pZCBhY2NlcHRBY3Rpb24oYm9v
bCB5PVRSVUUpIHsgYWNjcHRhY3QgPSB5OyB9CiAgICBlbnVtIEFjdGlvbiB7IENvcHksIExpbmss
IE1vdmUsIFByaXZhdGUsIFVzZXJBY3Rpb249MTAwIH07CiAgICB2b2lkIHNldEFjdGlvbiggQWN0
aW9uIGEgKSB7IGFjdCA9ICh1aW50KWE7IH0KICAgIEFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBBY3Rpb24oYWN0KTsgfQoKICAgIFFXaWRnZXQqIHNvdXJjZSgpIGNvbnN0OwogICAgY29u
c3QgY2hhciogZm9ybWF0KCBpbnQgbiA9IDAgKSBjb25zdDsKICAgIFFCeXRlQXJyYXkgZW5jb2Rl
ZERhdGEoIGNvbnN0IGNoYXIqICkgY29uc3Q7CiAgICBib29sIHByb3ZpZGVzKCBjb25zdCBjaGFy
KiApIGNvbnN0OwoKICAgIFFCeXRlQXJyYXkgZGF0YShjb25zdCBjaGFyKiBmKSBjb25zdCB7IHJl
dHVybiBlbmNvZGVkRGF0YShmKTsgfQoKICAgIHZvaWQgc2V0UG9pbnQoIGNvbnN0IFFQb2ludCYg
bnAgKSB7IHAgPSBucDsgfQoKcHJvdGVjdGVkOgogICAgUVBvaW50IHA7CiAgICB1aW50IGFjdDo4
OwogICAgdWludCBhY2NwdDoxOwogICAgdWludCBhY2NwdGFjdDoxOwogICAgdWludCByZXN2OjU7
CiAgICB2b2lkICogZDsKfTsKCgoKY2xhc3MgUURyYWdNb3ZlRXZlbnQgOiBwdWJsaWMgUURyb3BF
dmVudAp7CnB1YmxpYzoKICAgIFFEcmFnTW92ZUV2ZW50KCBjb25zdCBRUG9pbnQmIHBvcywgVHlw
ZSB0eXA9RHJhZ01vdmUgKQogICAgICAgIDogUURyb3BFdmVudChwb3MsdHlwKSwKICAgICAgICAg
IHJlY3QoIHBvcywgUVNpemUoIDEsIDEgKSApIHt9CiAgICBRUmVjdCBhbnN3ZXJSZWN0KCkgY29u
c3QgeyByZXR1cm4gcmVjdDsgfQogICAgdm9pZCBhY2NlcHQoIGJvb2wgeT1UUlVFICkgeyBRRHJv
cEV2ZW50OjphY2NlcHQoeSk7IH0KICAgIHZvaWQgYWNjZXB0KCBjb25zdCBRUmVjdCAmIHIpIHsg
YWNjcHQgPSBUUlVFOyByZWN0ID0gcjsgfQogICAgdm9pZCBpZ25vcmUoIGNvbnN0IFFSZWN0ICYg
cikgeyBhY2NwdCA9RkFMU0U7IHJlY3QgPSByOyB9CiAgICB2b2lkIGlnbm9yZSgpIHsgUURyb3BF
dmVudDo6aWdub3JlKCk7IH0KCnByb3RlY3RlZDoKICAgIFFSZWN0IHJlY3Q7Cn07CgoKY2xhc3Mg
UURyYWdFbnRlckV2ZW50IDogcHVibGljIFFEcmFnTW92ZUV2ZW50CnsKcHVibGljOgogICAgUURy
YWdFbnRlckV2ZW50KCBjb25zdCBRUG9pbnQmIHBvcyApIDoKICAgICAgICBRRHJhZ01vdmVFdmVu
dChwb3MsIERyYWdFbnRlcikgeyB9Cn07CgoKCmNsYXNzIFFEcmFnUmVzcG9uc2VFdmVudCA6IHB1
YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRRHJhZ1Jlc3BvbnNlRXZlbnQoIGJvb2wgYWNjZXB0
ZWQgKQogICAgICAgIDogUUV2ZW50KERyYWdSZXNwb25zZSksIGEoYWNjZXB0ZWQpIHt9CiAgICBi
b29sIGRyYWdBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJuIGE7IH0KcHJvdGVjdGVkOgogICAgYm9v
bCBhOwp9OwoKCmNsYXNzIFFEcmFnTGVhdmVFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6
CiAgICBRRHJhZ0xlYXZlRXZlbnQoKQogICAgICAgIDogUUV2ZW50KERyYWdMZWF2ZSkge30KfTsK
CgoKY2xhc3MgUUNoaWxkRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUUNoaWxk
RXZlbnQoIFR5cGUgdHlwZSwgUU9iamVjdCAqY2hpbGQgKQogICAgICAgIDogUUV2ZW50KHR5cGUp
LCBjKGNoaWxkKSB7fQogICAgUU9iamVjdCAqY2hpbGQoKSBjb25zdCB7IHJldHVybiBjOyB9CiAg
ICBib29sIGluc2VydGVkKCkgY29uc3QgeyByZXR1cm4gdCA9PSBDaGlsZEluc2VydGVkOyB9CiAg
ICBib29sIHJlbW92ZWQoKSBjb25zdCB7IHJldHVybiB0ID09IENoaWxkUmVtb3ZlZDsgfQpwcm90
ZWN0ZWQ6CiAgICBRT2JqZWN0ICpjOwp9OwoKCmNsYXNzIFFDdXN0b21FdmVudCA6IHB1YmxpYyBR
RXZlbnQKewpwdWJsaWM6CiAgICBRQ3VzdG9tRXZlbnQoIGludCB0eXBlICk7CiAgICBRQ3VzdG9t
RXZlbnQoIFR5cGUgdHlwZSwgdm9pZCAqZGF0YSApCiAgICAgICAgOiBRRXZlbnQodHlwZSksIGQo
ZGF0YSkge307CiAgICB2b2lkICpkYXRhKCkgY29uc3QgeyByZXR1cm4gZDsgfQogICAgdm9pZCBz
ZXREYXRhKCB2b2lkKiBkYXRhICkgeyBkID0gZGF0YTsgfQpwcml2YXRlOgogICAgdm9pZCAqZDsK
fTsKIyA0NiAia2VybmVsL3FvYmplY3QuaCIgMgoKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJpbmdsaXN0LmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nbGlzdC5oIgojIDEgIi91c3Ivc3JjL3Bh
Y2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXZhbHVlbGlzdC5oIiAxCiMgNDMgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXZhbHVlbGlzdC5oIgojIDEgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWRhdGFzdHJlYW0uaCIgMQoj
IDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FkYXRhc3RyZWFt
LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xaW9kZXZp
Y2UuaCIgMQojIDg4ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fp
b2RldmljZS5oIgpjbGFzcyBRSU9EZXZpY2UKewpwdWJsaWM6CiAgICBRSU9EZXZpY2UoKTsKICAg
IHZpcnR1YWwgflFJT0RldmljZSgpOwoKICAgIGludCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIGlv
TW9kZTsgfQogICAgaW50IG1vZGUoKSBjb25zdCB7IHJldHVybiBpb01vZGUgJiAweDAwZmY7IH0K
ICAgIGludCBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGlvTW9kZSAmIDB4ZjAwMDsgfQoKICAgIGJv
b2wgaXNEaXJlY3RBY2Nlc3MoKSBjb25zdCB7IHJldHVybiAoKGlvTW9kZSAmIDB4MDEwMCkgPT0g
MHgwMTAwKTsgfQogICAgYm9vbCBpc1NlcXVlbnRpYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiAo
KGlvTW9kZSAmIDB4MDIwMCkgPT0gMHgwMjAwKTsgfQogICAgYm9vbCBpc0NvbWJpbmVkQWNjZXNz
KCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAzMDApID09IDB4MDMwMCk7IH0KICAgIGJv
b2wgaXNCdWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgwMDQwKSAhPSAweDAw
NDApOyB9CiAgICBib29sIGlzUmF3KCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwNDAp
ID09IDB4MDA0MCk7IH0KICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IHsgcmV0dXJuICgo
aW9Nb2RlICYgMHgwMDgwKSAhPSAweDAwODApOyB9CiAgICBib29sIGlzQXN5bmNocm9ub3VzKCkg
Y29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwODApID09IDB4MDA4MCk7IH0KICAgIGJvb2wg
aXNUcmFuc2xhdGVkKCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwMTApID09IDB4MDAx
MCk7IH0KICAgIGJvb2wgaXNSZWFkYWJsZSgpIGNvbnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgw
MDAxKSA9PSAweDAwMDEpOyB9CiAgICBib29sIGlzV3JpdGFibGUoKSBjb25zdCB7IHJldHVybiAo
KGlvTW9kZSAmIDB4MDAwMikgPT0gMHgwMDAyKTsgfQogICAgYm9vbCBpc1JlYWRXcml0ZSgpIGNv
bnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgwMDAzKSA9PSAweDAwMDMpOyB9CiAgICBib29sIGlz
SW5hY3RpdmUoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpID09IDA7IH0KICAgIGJvb2wgaXNPcGVu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSA9PSAweDEwMDA7IH0KCiAgICBpbnQgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gaW9TdDsgfQogICAgdm9pZCByZXNldFN0YXR1cygpIHsgaW9TdCA9IDA7
IH0KCiAgICB2aXJ0dWFsIGJvb2wgb3BlbiggaW50IG1vZGUgKSA9IDA7CiAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7CgogICAgdmlydHVh
bCB1aW50IHNpemUoKSBjb25zdCA9IDA7CiAgICB2aXJ0dWFsIGludCBhdCgpIGNvbnN0OwogICAg
dmlydHVhbCBib29sIGF0KCBpbnQgKTsKICAgIHZpcnR1YWwgYm9vbCBhdEVuZCgpIGNvbnN0Owog
ICAgYm9vbCByZXNldCgpIHsgcmV0dXJuIGF0KDApOyB9CgogICAgdmlydHVhbCBpbnQgcmVhZEJs
b2NrKCBjaGFyICpkYXRhLCB1aW50IG1heGxlbiApID0gMDsKICAgIHZpcnR1YWwgaW50IHdyaXRl
QmxvY2soIGNvbnN0IGNoYXIgKmRhdGEsIHVpbnQgbGVuICkgPSAwOwogICAgdmlydHVhbCBpbnQg
cmVhZExpbmUoIGNoYXIgKmRhdGEsIHVpbnQgbWF4bGVuICk7CiAgICBpbnQgd3JpdGVCbG9jaygg
Y29uc3QgUUJ5dGVBcnJheSYgZGF0YSApOwogICAgUUJ5dGVBcnJheSByZWFkQWxsKCk7CgogICAg
dmlydHVhbCBpbnQgZ2V0Y2goKSA9IDA7CiAgICB2aXJ0dWFsIGludCBwdXRjaCggaW50ICkgPSAw
OwogICAgdmlydHVhbCBpbnQgdW5nZXRjaCggaW50ICkgPSAwOwoKcHJvdGVjdGVkOgogICAgdm9p
ZCBzZXRGbGFncyggaW50IGYgKSB7IGlvTW9kZSA9IGY7IH0KICAgIHZvaWQgc2V0VHlwZSggaW50
ICk7CiAgICB2b2lkIHNldE1vZGUoIGludCApOwogICAgdm9pZCBzZXRTdGF0ZSggaW50ICk7CiAg
ICB2b2lkIHNldFN0YXR1cyggaW50ICk7CiAgICBpbnQgaW9JbmRleDsKCnByaXZhdGU6CiAgICBp
bnQgaW9Nb2RlOwogICAgaW50IGlvU3Q7Cgpwcml2YXRlOgoKICAgIFFJT0RldmljZSggY29uc3Qg
UUlPRGV2aWNlICYgKTsKICAgIFFJT0RldmljZSAmb3BlcmF0b3I9KCBjb25zdCBRSU9EZXZpY2Ug
JiApOwoKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
ZGF0YXN0cmVhbS5oIiAyCgoKCgpjbGFzcyBRRGF0YVN0cmVhbQp7CnB1YmxpYzoKICAgIFFEYXRh
U3RyZWFtKCk7CiAgICBRRGF0YVN0cmVhbSggUUlPRGV2aWNlICogKTsKICAgIFFEYXRhU3RyZWFt
KCBRQnl0ZUFycmF5LCBpbnQgbW9kZSApOwogICAgdmlydHVhbCB+UURhdGFTdHJlYW0oKTsKCiAg
ICBRSU9EZXZpY2UgKmRldmljZSgpIGNvbnN0OwogICAgdm9pZCBzZXREZXZpY2UoIFFJT0Rldmlj
ZSAqICk7CiAgICB2b2lkIHVuc2V0RGV2aWNlKCk7CgogICAgYm9vbCBhdEVuZCgpIGNvbnN0Owog
ICAgYm9vbCBlb2YoKSBjb25zdDsKCiAgICBlbnVtIEJ5dGVPcmRlciB7IEJpZ0VuZGlhbiwgTGl0
dGxlRW5kaWFuIH07CiAgICBpbnQgYnl0ZU9yZGVyKCkgY29uc3Q7CiAgICB2b2lkIHNldEJ5dGVP
cmRlciggaW50ICk7CgogICAgYm9vbCBpc1ByaW50YWJsZURhdGEoKSBjb25zdDsKICAgIHZvaWQg
c2V0UHJpbnRhYmxlRGF0YSggYm9vbCApOwoKICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CiAgICB2
b2lkIHNldFZlcnNpb24oIGludCApOwoKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRX0lO
VDggJmkgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRX1VJTlQ4ICZpICk7CiAgICBR
RGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9JTlQxNiAmaSApOwogICAgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPj4oIFFfVUlOVDE2ICZpICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9J
TlQzMiAmaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFfVUlOVDMyICZpICk7CiAg
ICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9JTlQ2NCAmaSApOwogICAgUURhdGFTdHJlYW0g
Jm9wZXJhdG9yPj4oIFFfVUlOVDY0ICZpICk7CgogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4o
IGZsb2F0ICZmICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggZG91YmxlICZmICk7CiAg
ICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggY2hhciAqJnN0ciApOwoKICAgIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcjw8KCBRX0lOVDggaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFf
VUlOVDggaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFfSU5UMTYgaSApOwogICAg
UURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFfVUlOVDE2IGkgKTsKICAgIFFEYXRhU3RyZWFtICZv
cGVyYXRvcjw8KCBRX0lOVDMyIGkgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRX1VJ
TlQzMiBpICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUV9JTlQ2NCBpICk7CiAgICBR
RGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUV9VSU5UNjQgaSApOwogICAgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPDwoIGZsb2F0IGYgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBkb3VibGUg
ZiApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIGNvbnN0IGNoYXIgKnN0ciApOwoKICAg
IFFEYXRhU3RyZWFtICZyZWFkQnl0ZXMoIGNoYXIgKiYsIHVpbnQgJmxlbiApOwogICAgUURhdGFT
dHJlYW0gJnJlYWRSYXdCeXRlcyggY2hhciAqLCB1aW50IGxlbiApOwoKICAgIFFEYXRhU3RyZWFt
ICZ3cml0ZUJ5dGVzKCBjb25zdCBjaGFyICosIHVpbnQgbGVuICk7CiAgICBRRGF0YVN0cmVhbSAm
d3JpdGVSYXdCeXRlcyggY29uc3QgY2hhciAqLCB1aW50IGxlbiApOwoKcHJpdmF0ZToKICAgIFFJ
T0RldmljZSAqZGV2OwogICAgYm9vbCBvd25kZXY7CiAgICBpbnQgYnl0ZW9yZGVyOwogICAgYm9v
bCBwcmludGFibGU7CiAgICBib29sIG5vc3dhcDsKICAgIGludCB2ZXI7Cgpwcml2YXRlOgoKICAg
IFFEYXRhU3RyZWFtKCBjb25zdCBRRGF0YVN0cmVhbSAmICk7CiAgICBRRGF0YVN0cmVhbSAmb3Bl
cmF0b3I9KCBjb25zdCBRRGF0YVN0cmVhbSAmICk7Cgp9OwoKCgoKCgppbmxpbmUgUUlPRGV2aWNl
ICpRRGF0YVN0cmVhbTo6ZGV2aWNlKCkgY29uc3QKeyByZXR1cm4gZGV2OyB9CgppbmxpbmUgYm9v
bCBRRGF0YVN0cmVhbTo6YXRFbmQoKSBjb25zdAp7IHJldHVybiBkZXYgPyBkZXYtPmF0RW5kKCkg
OiBUUlVFOyB9CgppbmxpbmUgYm9vbCBRRGF0YVN0cmVhbTo6ZW9mKCkgY29uc3QKeyByZXR1cm4g
YXRFbmQoKTsgfQoKaW5saW5lIGludCBRRGF0YVN0cmVhbTo6Ynl0ZU9yZGVyKCkgY29uc3QKeyBy
ZXR1cm4gYnl0ZW9yZGVyOyB9CgppbmxpbmUgYm9vbCBRRGF0YVN0cmVhbTo6aXNQcmludGFibGVE
YXRhKCkgY29uc3QKeyByZXR1cm4gcHJpbnRhYmxlOyB9CgppbmxpbmUgdm9pZCBRRGF0YVN0cmVh
bTo6c2V0UHJpbnRhYmxlRGF0YSggYm9vbCBwICkKeyBwcmludGFibGUgPSBwOyB9CgppbmxpbmUg
aW50IFFEYXRhU3RyZWFtOjp2ZXJzaW9uKCkgY29uc3QKeyByZXR1cm4gdmVyOyB9CgppbmxpbmUg
dm9pZCBRRGF0YVN0cmVhbTo6c2V0VmVyc2lvbiggaW50IHYgKQp7IHZlciA9IHY7IH0KCmlubGlu
ZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPj4oIFFfVUlOVDggJmkgKQp7IHJl
dHVybiAqdGhpcyA+PiAoUV9JTlQ4JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3Ry
ZWFtOjpvcGVyYXRvcj4+KCBRX1VJTlQxNiAmaSApCnsgcmV0dXJuICp0aGlzID4+IChRX0lOVDE2
JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3RyZWFtOjpvcGVyYXRvcj4+KCBRX1VJ
TlQzMiAmaSApCnsgcmV0dXJuICp0aGlzID4+IChRX0lOVDMyJilpOyB9CgppbmxpbmUgUURhdGFT
dHJlYW0gJlFEYXRhU3RyZWFtOjpvcGVyYXRvcj4+KCBRX1VJTlQ2NCAmaSApCnsgcmV0dXJuICp0
aGlzID4+IChRX0lOVDY0JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3RyZWFtOjpv
cGVyYXRvcjw8KCBRX1VJTlQ4IGkgKQp7IHJldHVybiAqdGhpcyA8PCAoUV9JTlQ4KWk7IH0KCmlu
bGluZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPDwoIFFfVUlOVDE2IGkgKQp7
IHJldHVybiAqdGhpcyA8PCAoUV9JTlQxNilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRh
U3RyZWFtOjpvcGVyYXRvcjw8KCBRX1VJTlQzMiBpICkKeyByZXR1cm4gKnRoaXMgPDwgKFFfSU5U
MzIpaTsgfQoKaW5saW5lIFFEYXRhU3RyZWFtICZRRGF0YVN0cmVhbTo6b3BlcmF0b3I8PCggUV9V
SU5UNjQgaSApCnsgcmV0dXJuICp0aGlzIDw8IChRX0lOVDY0KWk7IH0KIyA0NCAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFsdWVsaXN0LmgiIDIKCgoKCgoKdGVt
cGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFFWYWx1ZUxpc3ROb2RlCnsKcHVibGljOgogICAgUVZhbHVl
TGlzdE5vZGUoIGNvbnN0IFQmIHQgKSA6IGRhdGEoIHQgKSB7IH0KICAgIFFWYWx1ZUxpc3ROb2Rl
KCkgeyB9CgoKCgoKICAgIFFWYWx1ZUxpc3ROb2RlPFQ+KiBuZXh0OwogICAgUVZhbHVlTGlzdE5v
ZGU8VD4qIHByZXY7CiAgICBUIGRhdGE7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBRVmFs
dWVMaXN0SXRlcmF0b3IKewogcHVibGljOgoKCgogICAgdHlwZWRlZiBRVmFsdWVMaXN0Tm9kZTxU
PiogTm9kZVB0cjsKCgoKCiAgICBOb2RlUHRyIG5vZGU7CgoKCgogICAgUVZhbHVlTGlzdEl0ZXJh
dG9yKCkgOiBub2RlKCAwICkge30KICAgIFFWYWx1ZUxpc3RJdGVyYXRvciggTm9kZVB0ciBwICkg
OiBub2RlKCBwICkge30KICAgIFFWYWx1ZUxpc3RJdGVyYXRvciggY29uc3QgUVZhbHVlTGlzdEl0
ZXJhdG9yPFQ+JiBpdCApIDogbm9kZSggaXQubm9kZSApIHt9CgogICAgYm9vbCBvcGVyYXRvcj09
KCBjb25zdCBRVmFsdWVMaXN0SXRlcmF0b3I8VD4mIGl0ICkgY29uc3QgeyByZXR1cm4gbm9kZSA9
PSBpdC5ub2RlOyB9CiAgICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFWYWx1ZUxpc3RJdGVyYXRv
cjxUPiYgaXQgKSBjb25zdCB7IHJldHVybiBub2RlICE9IGl0Lm5vZGU7IH0KICAgIGNvbnN0IFQm
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG5vZGUtPmRhdGE7IH0KICAgIFQmIG9wZXJhdG9y
KigpIHsgcmV0dXJuIG5vZGUtPmRhdGE7IH0KCgoKCiAgICBRVmFsdWVMaXN0SXRlcmF0b3I8VD4m
IG9wZXJhdG9yKysoKSB7CiAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICAgIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiBvcGVyYXRvcisrKGludCkg
ewogICAgICAgIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiB0bXAgPSAqdGhpczsKICAgICAgICBub2Rl
ID0gbm9kZS0+bmV4dDsKICAgICAgICByZXR1cm4gdG1wOwogICAgfQoKICAgIFFWYWx1ZUxpc3RJ
dGVyYXRvcjxUPiYgb3BlcmF0b3ItLSgpIHsKICAgICAgICBub2RlID0gbm9kZS0+cHJldjsKICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgUVZhbHVlTGlzdEl0ZXJhdG9yPFQ+IG9wZXJh
dG9yLS0oaW50KSB7CiAgICAgICAgUVZhbHVlTGlzdEl0ZXJhdG9yPFQ+IHRtcCA9ICp0aGlzOwog
ICAgICAgIG5vZGUgPSBub2RlLT5wcmV2OwogICAgICAgIHJldHVybiB0bXA7CiAgICB9Cn07Cgp0
ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcgp7CiBwdWJsaWM6
CgoKCiAgICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+KiBOb2RlUHRyOwoKCgoKICAgIE5vZGVQ
dHIgbm9kZTsKCgoKCiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcigpIDogbm9kZSggMCApIHt9
CiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvciggTm9kZVB0ciBwICkgOiBub2RlKCBwICkge30K
ICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yKCBjb25zdCBRVmFsdWVMaXN0Q29uc3RJdGVyYXRv
cjxUPiYgaXQgKSA6IG5vZGUoIGl0Lm5vZGUgKSB7fQogICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0
b3IoIGNvbnN0IFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiYgaXQgKSA6IG5vZGUoIGl0Lm5vZGUgKSB7
fQoKICAgIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8VD4m
IGl0ICkgY29uc3QgeyByZXR1cm4gbm9kZSA9PSBpdC5ub2RlOyB9CiAgICBib29sIG9wZXJhdG9y
IT0oIGNvbnN0IFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+JiBpdCApIGNvbnN0IHsgcmV0dXJu
IG5vZGUgIT0gaXQubm9kZTsgfQogICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gbm9kZS0+ZGF0YTsgfQoKCgoKICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+JiBvcGVy
YXRvcisrKCkgewogICAgICAgIG5vZGUgPSBub2RlLT5uZXh0OwogICAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxUPiBvcGVyYXRvcisrKGludCkg
ewogICAgICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+IHRtcCA9ICp0aGlzOwogICAgICAg
IG5vZGUgPSBub2RlLT5uZXh0OwogICAgICAgIHJldHVybiB0bXA7CiAgICB9CgogICAgUVZhbHVl
TGlzdENvbnN0SXRlcmF0b3I8VD4mIG9wZXJhdG9yLS0oKSB7CiAgICAgICAgbm9kZSA9IG5vZGUt
PnByZXY7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFFWYWx1ZUxpc3RDb25zdEl0
ZXJhdG9yPFQ+IG9wZXJhdG9yLS0oaW50KSB7CiAgICAgICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0
b3I8VD4gdG1wID0gKnRoaXM7CiAgICAgICAgbm9kZSA9IG5vZGUtPnByZXY7CiAgICAgICAgcmV0
dXJuIHRtcDsKICAgIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBRVmFsdWVMaXN0UHJp
dmF0ZSA6IHB1YmxpYyBRU2hhcmVkCnsKcHVibGljOgoKCgogICAgdHlwZWRlZiBRVmFsdWVMaXN0
SXRlcmF0b3I8VD4gSXRlcmF0b3I7CiAgICB0eXBlZGVmIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9y
PFQ+IENvbnN0SXRlcmF0b3I7CiAgICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+IE5vZGU7CiAg
ICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+KiBOb2RlUHRyOwoKCgoKICAgIFFWYWx1ZUxpc3RQ
cml2YXRlKCkgeyBub2RlID0gbmV3IE5vZGU7IG5vZGUtPm5leHQgPSBub2RlLT5wcmV2ID0gbm9k
ZTsgbm9kZXMgPSAwOyB9CiAgICBRVmFsdWVMaXN0UHJpdmF0ZSggY29uc3QgUVZhbHVlTGlzdFBy
aXZhdGU8VD4mIF9wICkgOiBRU2hhcmVkKCkgewogICAgICAgIG5vZGUgPSBuZXcgTm9kZTsgbm9k
ZS0+bmV4dCA9IG5vZGUtPnByZXYgPSBub2RlOyBub2RlcyA9IDA7CiAgICAgICAgSXRlcmF0b3Ig
YiggX3Aubm9kZS0+bmV4dCApOwogICAgICAgIEl0ZXJhdG9yIGUoIF9wLm5vZGUgKTsKICAgICAg
ICBJdGVyYXRvciBpKCBub2RlICk7CiAgICAgICAgd2hpbGUoIGIgIT0gZSApCiAgICAgICAgICAg
IGluc2VydCggaSwgKmIrKyApOwogICAgfQoKICAgIHZvaWQgZGVyZWZBbmREZWxldGUoKQogICAg
ewogICAgICAgIGlmICggZGVyZWYoKSApCiAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgfQoK
CgoKCiAgICB+UVZhbHVlTGlzdFByaXZhdGUoKSB7CiAgICAgICAgTm9kZVB0ciBwID0gbm9kZS0+
bmV4dDsKICAgICAgICB3aGlsZSggcCAhPSBub2RlICkgewogICAgICAgICAgICBOb2RlUHRyIHgg
PSBwLT5uZXh0OwogICAgICAgICAgICBkZWxldGUgcDsKICAgICAgICAgICAgcCA9IHg7CiAgICAg
ICAgfQogICAgICAgIGRlbGV0ZSBub2RlOwogICAgfQoKICAgIEl0ZXJhdG9yIGluc2VydCggSXRl
cmF0b3IgaXQsIGNvbnN0IFQmIHggKSB7CiAgICAgICAgTm9kZVB0ciBwID0gbmV3IE5vZGUoIHgg
KTsKICAgICAgICBwLT5uZXh0ID0gaXQubm9kZTsKICAgICAgICBwLT5wcmV2ID0gaXQubm9kZS0+
cHJldjsKICAgICAgICBpdC5ub2RlLT5wcmV2LT5uZXh0ID0gcDsKICAgICAgICBpdC5ub2RlLT5w
cmV2ID0gcDsKICAgICAgICBub2RlcysrOwogICAgICAgIHJldHVybiBwOwogICAgfQoKICAgIEl0
ZXJhdG9yIHJlbW92ZSggSXRlcmF0b3IgaXQgKSB7CiAgICAgICAgKChpdC5ub2RlICE9IG5vZGUp
ID8gKHZvaWQpMCA6IHFXYXJuaW5nKCJBU1NFUlQ6IFwiJXNcIiBpbiAlcyAoJWQpIiwiaXQubm9k
ZSAhPSBub2RlIiwiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFs
dWVsaXN0LmgiLDIyNikpOwogICAgICAgIE5vZGVQdHIgbmV4dCA9IGl0Lm5vZGUtPm5leHQ7CiAg
ICAgICAgTm9kZVB0ciBwcmV2ID0gaXQubm9kZS0+cHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0g
bmV4dDsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBkZWxldGUgaXQubm9kZTsK
ICAgICAgICBub2Rlcy0tOwogICAgICAgIHJldHVybiBJdGVyYXRvciggbmV4dCApOwogICAgfQoK
ICAgIE5vZGVQdHIgZmluZCggTm9kZVB0ciBzdGFydCwgY29uc3QgVCYgeCApIGNvbnN0IHsKICAg
ICAgICBDb25zdEl0ZXJhdG9yIGZpcnN0KCBzdGFydCApOwogICAgICAgIENvbnN0SXRlcmF0b3Ig
bGFzdCggbm9kZSApOwogICAgICAgIHdoaWxlKCBmaXJzdCAhPSBsYXN0KSB7CiAgICAgICAgICAg
IGlmICggKmZpcnN0ID09IHggKQogICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Lm5vZGU7CiAg
ICAgICAgICAgICsrZmlyc3Q7CiAgICAgICAgfQogICAgICAgIHJldHVybiBsYXN0Lm5vZGU7CiAg
ICB9CgogICAgaW50IGZpbmRJbmRleCggTm9kZVB0ciBzdGFydCwgY29uc3QgVCYgeCApIGNvbnN0
IHsKICAgICAgICBDb25zdEl0ZXJhdG9yIGZpcnN0KCBzdGFydCApOwogICAgICAgIENvbnN0SXRl
cmF0b3IgbGFzdCggbm9kZSApOwogICAgICAgIGludCBwb3MgPSAwOwogICAgICAgIHdoaWxlKCBm
aXJzdCAhPSBsYXN0KSB7CiAgICAgICAgICAgIGlmICggKmZpcnN0ID09IHggKQogICAgICAgICAg
ICAgICAgcmV0dXJuIHBvczsKICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICAgICAgKytwb3M7
CiAgICAgICAgfQogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICB1aW50IGNvbnRhaW5zKCBj
b25zdCBUJiB4ICkgY29uc3QgewogICAgICAgIHVpbnQgcmVzdWx0ID0gMDsKICAgICAgICBJdGVy
YXRvciBmaXJzdCA9IEl0ZXJhdG9yKCBub2RlLT5uZXh0ICk7CiAgICAgICAgSXRlcmF0b3IgbGFz
dCA9IEl0ZXJhdG9yKCBub2RlICk7CiAgICAgICAgd2hpbGUoIGZpcnN0ICE9IGxhc3QpIHsKICAg
ICAgICAgICAgaWYgKCAqZmlyc3QgPT0geCApCiAgICAgICAgICAgICAgICArK3Jlc3VsdDsKICAg
ICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
CiAgICB2b2lkIHJlbW92ZSggY29uc3QgVCYgeCApIHsKICAgICAgICBJdGVyYXRvciBmaXJzdCA9
IEl0ZXJhdG9yKCBub2RlLT5uZXh0ICk7CiAgICAgICAgSXRlcmF0b3IgbGFzdCA9IEl0ZXJhdG9y
KCBub2RlICk7CiAgICAgICAgd2hpbGUoIGZpcnN0ICE9IGxhc3QpIHsKICAgICAgICAgICAgaWYg
KCAqZmlyc3QgPT0geCApCiAgICAgICAgICAgICAgICBmaXJzdCA9IHJlbW92ZSggZmlyc3QgKTsK
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICB9
CgogICAgTm9kZVB0ciBhdCggdWludCBpICkgY29uc3QgewogICAgICAgICgoaSA8PSBub2Rlcykg
PyAodm9pZCkwIDogcVdhcm5pbmcoIkFTU0VSVDogXCIlc1wiIGluICVzICglZCkiLCJpIDw9IG5v
ZGVzIiwiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFsdWVsaXN0
LmgiLDI4NCkpOwogICAgICAgIE5vZGVQdHIgcCA9IG5vZGUtPm5leHQ7CiAgICAgICAgZm9yKCB1
aW50IHggPSAwOyB4IDwgaTsgKyt4ICkKICAgICAgICAgICAgcCA9IHAtPm5leHQ7CiAgICAgICAg
cmV0dXJuIHA7CiAgICB9CgogICAgdm9pZCBjbGVhcigpIHsKICAgICAgICBub2RlcyA9IDA7CiAg
ICAgICAgTm9kZVB0ciBwID0gbm9kZS0+bmV4dDsKICAgICAgICB3aGlsZSggcCAhPSBub2RlICkg
ewogICAgICAgICAgICBOb2RlUHRyIG5leHQgPSBwLT5uZXh0OwogICAgICAgICAgICBkZWxldGUg
cDsKICAgICAgICAgICAgcCA9IG5leHQ7CiAgICAgICAgfQogICAgICAgIG5vZGUtPm5leHQgPSBu
b2RlLT5wcmV2ID0gbm9kZTsKICAgIH0KCiAgICBOb2RlUHRyIG5vZGU7CiAgICB1aW50IG5vZGVz
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFFWYWx1ZUxpc3QKewpwdWJsaWM6CgoKCiAg
ICB0eXBlZGVmIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiBJdGVyYXRvcjsKICAgIHR5cGVkZWYgUVZh
bHVlTGlzdENvbnN0SXRlcmF0b3I8VD4gQ29uc3RJdGVyYXRvcjsKICAgIHR5cGVkZWYgVCBWYWx1
ZVR5cGU7CgoKCgogICAgUVZhbHVlTGlzdCgpIHsgc2ggPSBuZXcgUVZhbHVlTGlzdFByaXZhdGU8
VD47IH0KICAgIFFWYWx1ZUxpc3QoIGNvbnN0IFFWYWx1ZUxpc3Q8VD4mIGwgKSB7IHNoID0gbC5z
aDsgc2gtPnJlZigpOyB9CiAgICB+UVZhbHVlTGlzdCgpIHsgc2gtPmRlcmVmQW5kRGVsZXRlKCk7
IH0KCiAgICBRVmFsdWVMaXN0PFQ+JiBvcGVyYXRvcj0gKCBjb25zdCBRVmFsdWVMaXN0PFQ+JiBs
ICkKICAgIHsKICAgICAgICBsLnNoLT5yZWYoKTsKICAgICAgICBzaC0+ZGVyZWZBbmREZWxldGUo
KTsKICAgICAgICBzaCA9IGwuc2g7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFFW
YWx1ZUxpc3Q8VD4gb3BlcmF0b3IrICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApIGNvbnN0CiAg
ICB7CiAgICAgICAgUVZhbHVlTGlzdDxUPiBsMiggKnRoaXMgKTsKICAgICAgICBmb3IoIENvbnN0
SXRlcmF0b3IgaXQgPSBsLmJlZ2luKCk7IGl0ICE9IGwuZW5kKCk7ICsraXQgKQogICAgICAgICAg
ICBsMi5hcHBlbmQoICppdCApOwogICAgICAgIHJldHVybiBsMjsKICAgIH0KCiAgICBRVmFsdWVM
aXN0PFQ+JiBvcGVyYXRvcis9ICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApCiAgICB7CiAgICAg
ICAgZm9yKCBDb25zdEl0ZXJhdG9yIGl0ID0gbC5iZWdpbigpOyBpdCAhPSBsLmVuZCgpOyArK2l0
ICkKICAgICAgICAgICAgYXBwZW5kKCAqaXQgKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcj09ICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApIGNvbnN0CiAg
ICB7CiAgICAgICAgaWYgKCBjb3VudCgpICE9IGwuY291bnQoKSApCiAgICAgICAgICAgIHJldHVy
biBGQUxTRTsKICAgICAgICBDb25zdEl0ZXJhdG9yIGl0MiA9IGJlZ2luKCk7CiAgICAgICAgQ29u
c3RJdGVyYXRvciBpdCA9IGwuYmVnaW4oKTsKICAgICAgICBmb3IoIDsgaXQgIT0gbC5lbmQoKTsg
KytpdCwgKytpdDIgKQogICAgICAgICAgICBpZiAoICEoICppdCA9PSAqaXQyICkgKQogICAgICAg
ICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIGJv
b2wgb3BlcmF0b3IhPSAoIGNvbnN0IFFWYWx1ZUxpc3Q8VD4mIGwgKSBjb25zdCB7IHJldHVybiAh
KCAqdGhpcyA9PSBsICk7IH0KCiAgICBJdGVyYXRvciBiZWdpbigpIHsgZGV0YWNoKCk7IHJldHVy
biBJdGVyYXRvciggc2gtPm5vZGUtPm5leHQgKTsgfQogICAgQ29uc3RJdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIENvbnN0SXRlcmF0b3IoIHNoLT5ub2RlLT5uZXh0ICk7IH0KICAgIEl0
ZXJhdG9yIGVuZCgpIHsgZGV0YWNoKCk7IHJldHVybiBJdGVyYXRvciggc2gtPm5vZGUgKTsgfQog
ICAgQ29uc3RJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBDb25zdEl0ZXJhdG9yKCBzaC0+
bm9kZSApOyB9CiAgICBJdGVyYXRvciBmcm9tTGFzdCgpIHsgZGV0YWNoKCk7IHJldHVybiBJdGVy
YXRvciggc2gtPm5vZGUtPnByZXYgKTsgfQogICAgQ29uc3RJdGVyYXRvciBmcm9tTGFzdCgpIGNv
bnN0IHsgcmV0dXJuIENvbnN0SXRlcmF0b3IoIHNoLT5ub2RlLT5wcmV2ICk7IH0KCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAoIHNoLT5ub2RlcyA9PSAwICk7IH0KCiAgICBJdGVy
YXRvciBpbnNlcnQoIEl0ZXJhdG9yIGl0LCBjb25zdCBUJiB4ICkgeyBkZXRhY2goKTsgcmV0dXJu
IHNoLT5pbnNlcnQoIGl0LCB4ICk7IH0KCiAgICBJdGVyYXRvciBhcHBlbmQoIGNvbnN0IFQmIHgg
KSB7IGRldGFjaCgpOyByZXR1cm4gc2gtPmluc2VydCggZW5kKCksIHggKTsgfQogICAgSXRlcmF0
b3IgcHJlcGVuZCggY29uc3QgVCYgeCApIHsgZGV0YWNoKCk7IHJldHVybiBzaC0+aW5zZXJ0KCBi
ZWdpbigpLCB4ICk7IH0KCiAgICBJdGVyYXRvciByZW1vdmUoIEl0ZXJhdG9yIGl0ICkgeyBkZXRh
Y2goKTsgcmV0dXJuIHNoLT5yZW1vdmUoIGl0ICk7IH0KICAgIHZvaWQgcmVtb3ZlKCBjb25zdCBU
JiB4ICkgeyBkZXRhY2goKTsgc2gtPnJlbW92ZSggeCApOyB9CgogICAgVCYgZmlyc3QoKSB7IGRl
dGFjaCgpOyByZXR1cm4gc2gtPm5vZGUtPm5leHQtPmRhdGE7IH0KICAgIGNvbnN0IFQmIGZpcnN0
KCkgY29uc3QgeyByZXR1cm4gc2gtPm5vZGUtPm5leHQtPmRhdGE7IH0KICAgIFQmIGxhc3QoKSB7
IGRldGFjaCgpOyByZXR1cm4gc2gtPm5vZGUtPnByZXYtPmRhdGE7IH0KICAgIGNvbnN0IFQmIGxh
c3QoKSBjb25zdCB7IHJldHVybiBzaC0+bm9kZS0+cHJldi0+ZGF0YTsgfQoKICAgIFQmIG9wZXJh
dG9yW10gKCB1aW50IGkgKSB7IGRldGFjaCgpOyByZXR1cm4gc2gtPmF0KGkpLT5kYXRhOyB9CiAg
ICBjb25zdCBUJiBvcGVyYXRvcltdICggdWludCBpICkgY29uc3QgeyByZXR1cm4gc2gtPmF0KGkp
LT5kYXRhOyB9CiAgICBJdGVyYXRvciBhdCggdWludCBpICkgeyBkZXRhY2goKTsgcmV0dXJuIEl0
ZXJhdG9yKCBzaC0+YXQoaSkgKTsgfQogICAgQ29uc3RJdGVyYXRvciBhdCggdWludCBpICkgY29u
c3QgeyByZXR1cm4gQ29uc3RJdGVyYXRvciggc2gtPmF0KGkpICk7IH0KICAgIEl0ZXJhdG9yIGZp
bmQgKCBjb25zdCBUJiB4ICkgeyBkZXRhY2goKTsgcmV0dXJuIEl0ZXJhdG9yKCBzaC0+ZmluZCgg
c2gtPm5vZGUtPm5leHQsIHgpICk7IH0KICAgIENvbnN0SXRlcmF0b3IgZmluZCAoIGNvbnN0IFQm
IHggKSBjb25zdCB7IHJldHVybiBDb25zdEl0ZXJhdG9yKCBzaC0+ZmluZCggc2gtPm5vZGUtPm5l
eHQsIHgpICk7IH0KICAgIEl0ZXJhdG9yIGZpbmQgKCBJdGVyYXRvciBpdCwgY29uc3QgVCYgeCAp
IHsgZGV0YWNoKCk7IHJldHVybiBJdGVyYXRvciggc2gtPmZpbmQoIGl0Lm5vZGUsIHggKSApOyB9
CiAgICBDb25zdEl0ZXJhdG9yIGZpbmQgKCBDb25zdEl0ZXJhdG9yIGl0LCBjb25zdCBUJiB4ICkg
Y29uc3QgeyByZXR1cm4gQ29uc3RJdGVyYXRvciggc2gtPmZpbmQoIGl0Lm5vZGUsIHggKSApOyB9
CiAgICBpbnQgZmluZEluZGV4KCBjb25zdCBUJiB4ICkgY29uc3QgeyByZXR1cm4gc2gtPmZpbmRJ
bmRleCggc2gtPm5vZGUtPm5leHQsIHgpIDsgfQogICAgdWludCBjb250YWlucyggY29uc3QgVCYg
eCApIGNvbnN0IHsgcmV0dXJuIHNoLT5jb250YWlucyggeCApOyB9CgogICAgdWludCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIHNoLT5ub2RlczsgfQoKICAgIHZvaWQgY2xlYXIoKSB7IGlmICggc2gt
PmNvdW50ID09IDEgKSBzaC0+Y2xlYXIoKTsgZWxzZSB7IHNoLT5kZXJlZigpOyBzaCA9IG5ldyBR
VmFsdWVMaXN0UHJpdmF0ZTxUPjsgfSB9CgoKICAgIFFWYWx1ZUxpc3Q8VD4mIG9wZXJhdG9yKz0g
KCBjb25zdCBUJiB4ICkKICAgIHsKICAgICAgICBhcHBlbmQoIHggKTsKICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICB9CiAgICBRVmFsdWVMaXN0PFQ+JiBvcGVyYXRvcjw8ICggY29uc3QgVCYgeCAp
CiAgICB7CiAgICAgICAgYXBwZW5kKCB4ICk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoK
CnByb3RlY3RlZDoKCgoKICAgIHZvaWQgZGV0YWNoKCkgeyBpZiAoIHNoLT5jb3VudCA+IDEgKSB7
IHNoLT5kZXJlZigpOyBzaCA9IG5ldyBRVmFsdWVMaXN0UHJpdmF0ZTxUPiggKnNoICk7IH0gfQoK
CgoKICAgIFFWYWx1ZUxpc3RQcml2YXRlPFQ+KiBzaDsKfTsKCgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgUURhdGFTdHJlYW0mIG9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtJiBzLCBRVmFsdWVMaXN0
PFQ+JiBsICkKewogICAgbC5jbGVhcigpOwogICAgUV9VSU5UMzIgYzsKICAgIHMgPj4gYzsKICAg
IGZvciggUV9VSU5UMzIgaSA9IDA7IGkgPCBjOyArK2kgKQogICAgewogICAgICAgIFQgdDsKICAg
ICAgICBzID4+IHQ7CiAgICAgICAgbC5hcHBlbmQoIHQgKTsKICAgIH0KICAgIHJldHVybiBzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgUURhdGFTdHJlYW0mIG9wZXJhdG9yPDwoIFFEYXRh
U3RyZWFtJiBzLCBjb25zdCBRVmFsdWVMaXN0PFQ+JiBsICkKewogICAgcyA8PCAoUV9VSU5UMzIp
bC5jb3VudCgpOwogICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8VD4gaXQgPSBsLmJlZ2luKCk7
CiAgICBmb3IoIDsgaXQgIT0gbC5lbmQoKTsgKytpdCApCiAgICAgICAgcyA8PCAqaXQ7CiAgICBy
ZXR1cm4gczsKfQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FzdHJpbmdsaXN0LmgiIDIKCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xcmVnZXhwLmgiIDEKIyA0NiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4z
LjIvaW5jbHVkZS9xcmVnZXhwLmgiCmNsYXNzIFFSZWdFeHAKewpwdWJsaWM6CiAgICBRUmVnRXhw
KCk7CiAgICBRUmVnRXhwKCBjb25zdCBRU3RyaW5nICYsIGJvb2wgY2FzZVNlbnNpdGl2ZT1UUlVF
LCBib29sIHdpbGRjYXJkPUZBTFNFICk7CiAgICBRUmVnRXhwKCBjb25zdCBRUmVnRXhwICYgKTsK
ICAgflFSZWdFeHAoKTsKICAgIFFSZWdFeHAgJm9wZXJhdG9yPSggY29uc3QgUVJlZ0V4cCAmICk7
CiAgICBRUmVnRXhwICZvcGVyYXRvcj0oIGNvbnN0IFFTdHJpbmcgJnBhdHRlcm4gKTsKCiAgICBi
b29sIG9wZXJhdG9yPT0oIGNvbnN0IFFSZWdFeHAgJiApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRv
ciE9KCBjb25zdCBRUmVnRXhwICZyICkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgcmV0dXJuICEodGhpcy0+b3BlcmF0b3I9PShyKSk7IH0KCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiByeGRhdGEgPT0gMDsgfQogICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gZXJyb3IgPT0gMDsgfQoKICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIGNzOyB9CiAgICB2b2lkIHNldENhc2VTZW5zaXRpdmUoIGJvb2wgKTsK
CiAgICBib29sIHdpbGRjYXJkKCkgY29uc3QgeyByZXR1cm4gd2M7IH0KICAgIHZvaWQgc2V0V2ls
ZGNhcmQoIGJvb2wgKTsKCiAgICBRU3RyaW5nIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiByeHN0
cmluZzsgfQoKICAgIHZvaWQgc2V0UGF0dGVybiggY29uc3QgUVN0cmluZyYgcGF0dGVybiApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG9wZXJhdG9yPSggcGF0dGVy
biApOyB9CgogICAgaW50IG1hdGNoKCBjb25zdCBRU3RyaW5nICZzdHIsIGludCBpbmRleD0wLCBp
bnQgKmxlbj0wLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5kZXhJc1N0YXJ0ID0gVFJV
RSApIGNvbnN0OwogICAgaW50IGZpbmQoIGNvbnN0IFFTdHJpbmcmIHN0ciwgaW50IGluZGV4ICkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1hdGNoKCBz
dHIsIGluZGV4ICk7IH0KCnByb3RlY3RlZDoKICAgIHZvaWQgY29tcGlsZSgpOwogICAgY29uc3Qg
UUNoYXIgKm1hdGNoc3RyKCB1aW50ICosIGNvbnN0IFFDaGFyICosIHVpbnQsIGNvbnN0IFFDaGFy
ICogKSBjb25zdDsKCnByaXZhdGU6CiAgICBRU3RyaW5nIHJ4c3RyaW5nOwogICAgdWludCAqcnhk
YXRhOwogICAgaW50IGVycm9yOwogICAgYm9vbCBjczsKICAgIGJvb2wgd2M7Cn07CiMgNDUgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXN0cmluZ2xpc3QuaCIgMgoK
CgoKY2xhc3MgUVN0ckxpc3Q7CgpjbGFzcyBRU3RyaW5nTGlzdCA6IHB1YmxpYyBRVmFsdWVMaXN0
PFFTdHJpbmc+CnsKcHVibGljOgogICAgUVN0cmluZ0xpc3QoKSB7IH0KICAgIFFTdHJpbmdMaXN0
KCBjb25zdCBRU3RyaW5nTGlzdCYgbCApIDogUVZhbHVlTGlzdDxRU3RyaW5nPihsKSB7IH0KICAg
IFFTdHJpbmdMaXN0KCBjb25zdCBRVmFsdWVMaXN0PFFTdHJpbmc+JiBsICkgOiBRVmFsdWVMaXN0
PFFTdHJpbmc+KGwpIHsgfQogICAgUVN0cmluZ0xpc3QoIGNvbnN0IFFTdHJpbmcmIGkgKSB7IGFw
cGVuZChpKTsgfQoKICAgIFFTdHJpbmdMaXN0KCBjb25zdCBjaGFyKiBpICkgeyBhcHBlbmQoaSk7
IH0KCgogICAgc3RhdGljIFFTdHJpbmdMaXN0IGZyb21TdHJMaXN0KGNvbnN0IFFTdHJMaXN0Jik7
CgogICAgdm9pZCBzb3J0KCk7CgogICAgc3RhdGljIFFTdHJpbmdMaXN0IHNwbGl0KCBjb25zdCBR
U3RyaW5nICZzZXAsIGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcyA9
IEZBTFNFICk7CiAgICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3BsaXQoIGNvbnN0IFFDaGFyICZzZXAs
IGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcyA9IEZBTFNFICk7CiAg
ICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3BsaXQoIGNvbnN0IFFSZWdFeHAgJnNlcCwgY29uc3QgUVN0
cmluZyAmc3RyLCBib29sIGFsbG93RW1wdHlFbnRyaWVzID0gRkFMU0UgKTsKICAgIFFTdHJpbmcg
am9pbiggY29uc3QgUVN0cmluZyAmc2VwICkgY29uc3Q7CgogICAgUVN0cmluZ0xpc3QgZ3JlcCgg
Y29uc3QgUVN0cmluZyAmc3RyLCBib29sIGNzID0gVFJVRSApIGNvbnN0OwogICAgUVN0cmluZ0xp
c3QgZ3JlcCggY29uc3QgUVJlZ0V4cCAmZXhwciApIGNvbnN0Owp9OwoKCmNsYXNzIFFEYXRhU3Ry
ZWFtOwpleHRlcm4gUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYsIFFTdHJp
bmdMaXN0JiApOwpleHRlcm4gUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYs
IGNvbnN0IFFTdHJpbmdMaXN0JiApOwojIDQ4ICJrZXJuZWwvcW9iamVjdC5oIiAyCgoKCgoKY2xh
c3MgUU1ldGFPYmplY3Q7CmNsYXNzIFFWYXJpYW50OwoKCgpjbGFzcyBRT2JqZWN0OiBwdWJsaWMg
UXQKewogICAKCnB1YmxpYzoKICAgIFFPYmplY3QoIFFPYmplY3QgKnBhcmVudD0wLCBjb25zdCBj
aGFyICpuYW1lPTAgKTsKICAgIHZpcnR1YWwgflFPYmplY3QoKTsKCiAgICBzdGF0aWMgUVN0cmlu
ZyB0ciggY29uc3QgY2hhciAqICk7CiAgICBzdGF0aWMgUVN0cmluZyB0ciggY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICogKTsKCiAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoIFFFdmVudCAqICk7CiAg
ICB2aXJ0dWFsIGJvb2wgZXZlbnRGaWx0ZXIoIFFPYmplY3QgKiwgUUV2ZW50ICogKTsKCiAgICB2
aXJ0dWFsIFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljTWV0
YU9iamVjdCgpOyB9CiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OwoK
ICAgIGJvb2wgaXNBKCBjb25zdCBjaGFyICogKSBjb25zdDsKICAgIGJvb2wgaW5oZXJpdHMoIGNv
bnN0IGNoYXIgKiApIGNvbnN0OwoKICAgIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKICAgIGNv
bnN0IGNoYXIgKm5hbWUoIGNvbnN0IGNoYXIgKiBkZWZhdWx0TmFtZSApIGNvbnN0OwoKICAgIHZp
cnR1YWwgdm9pZCBzZXROYW1lKCBjb25zdCBjaGFyICpuYW1lICk7CiAgICBib29sIGlzV2lkZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzV2lkZ2V0OyB9CiAgICBib29sIGhpZ2hQcmlvcml0eSgp
IGNvbnN0IHsgcmV0dXJuIEZBTFNFOyB9CgogICAgYm9vbCBzaWduYWxzQmxvY2tlZCgpIGNvbnN0
IHsgcmV0dXJuIGJsb2NrU2lnOyB9CiAgICB2b2lkIGJsb2NrU2lnbmFscyggYm9vbCBiICk7Cgog
ICAgaW50IHN0YXJ0VGltZXIoIGludCBpbnRlcnZhbCApOwogICAgdm9pZCBraWxsVGltZXIoIGlu
dCBpZCApOwogICAgdm9pZCBraWxsVGltZXJzKCk7CgogICAgUU9iamVjdCAqY2hpbGQoIGNvbnN0
IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnR5cGUgPSAwICk7CiAgICBjb25zdCBRT2JqZWN0TGlz
dCAqY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZE9iamVjdHM7IH0KCiAgICBzdGF0aWMg
Y29uc3QgUU9iamVjdExpc3QgKm9iamVjdFRyZWVzKCk7CgoKICAgIFFPYmplY3RMaXN0ICpxdWVy
eUxpc3QoIGNvbnN0IGNoYXIgKmluaGVyaXRzQ2xhc3MgPSAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb2JqTmFtZSA9IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHJlZ2V4cE1hdGNoID0gVFJVRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzaXZlU2VhcmNoID0gVFJVRSApOwoKICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRDaGlsZCggUU9iamVjdCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2hpbGQoIFFPYmplY3QgKiApOwoKICAgIHZvaWQgaW5zdGFsbEV2ZW50RmlsdGVyKCBjb25z
dCBRT2JqZWN0ICogKTsKICAgIHZvaWQgcmVtb3ZlRXZlbnRGaWx0ZXIoIGNvbnN0IFFPYmplY3Qg
KiApOwoKICAgIHN0YXRpYyBib29sIGNvbm5lY3QoIGNvbnN0IFFPYmplY3QgKnNlbmRlciwgY29u
c3QgY2hhciAqc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFPYmplY3Qg
KnJlY2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXIgKTsKICAgIGJvb2wgY29ubmVjdCggY29uc3Qg
UU9iamVjdCAqc2VuZGVyLCBjb25zdCBjaGFyICpzaWduYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqbWVtYmVyICkgY29uc3Q7CiAgICBzdGF0aWMgYm9vbCBkaXNjb25u
ZWN0KCBjb25zdCBRT2JqZWN0ICpzZW5kZXIsIGNvbnN0IGNoYXIgKnNpZ25hbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgY29uc3QgY2hhciAq
bWVtYmVyICk7CiAgICBib29sIGRpc2Nvbm5lY3QoIGNvbnN0IGNoYXIgKnNpZ25hbD0wLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFPYmplY3QgKnJlY2VpdmVyPTAsIGNvbnN0
IGNoYXIgKm1lbWJlcj0wICk7CiAgICBib29sIGRpc2Nvbm5lY3QoIGNvbnN0IFFPYmplY3QgKnJl
Y2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXI9MCApOwoKICAgIHZvaWQgZHVtcE9iamVjdFRyZWUo
KTsKICAgIHZvaWQgZHVtcE9iamVjdEluZm8oKTsKCgogICAgYm9vbCBzZXRQcm9wZXJ0eSggY29u
c3QgY2hhciAqbmFtZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlICk7CiAgICBRVmFyaWFudCBwcm9w
ZXJ0eSggY29uc3QgY2hhciAqbmFtZSApIGNvbnN0OwoKCnByb3RlY3RlZDoKICAgIHZvaWQgZGVz
dHJveWVkKCk7CgpwdWJsaWM6CiAgICBRT2JqZWN0ICpwYXJlbnQoKSBjb25zdCB7IHJldHVybiBw
YXJlbnRPYmo7IH0KCnByaXZhdGUgOgogICAgdm9pZCBjbGVhbnVwRXZlbnRGaWx0ZXIoKTsKCnBy
b3RlY3RlZDoKICAgIGJvb2wgYWN0aXZhdGVfZmlsdGVycyggUUV2ZW50ICogKTsKICAgIFFDb25u
ZWN0aW9uTGlzdCAqcmVjZWl2ZXJzKCBjb25zdCBjaGFyICpzaWduYWwgKSBjb25zdDsKICAgIHZv
aWQgYWN0aXZhdGVfc2lnbmFsKCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZvaWQgYWN0aXZh
dGVfc2lnbmFsKCBjb25zdCBjaGFyICpzaWduYWwsIHNob3J0ICk7CiAgICB2b2lkIGFjdGl2YXRl
X3NpZ25hbCggY29uc3QgY2hhciAqc2lnbmFsLCBpbnQgKTsKICAgIHZvaWQgYWN0aXZhdGVfc2ln
bmFsKCBjb25zdCBjaGFyICpzaWduYWwsIGxvbmcgKTsKICAgIHZvaWQgYWN0aXZhdGVfc2lnbmFs
KCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IGNoYXIgKiApOwogICAgdm9pZCBhY3RpdmF0ZV9z
aWduYWxfYm9vbCggY29uc3QgY2hhciAqc2lnbmFsLCBib29sICk7CiAgICB2b2lkIGFjdGl2YXRl
X3NpZ25hbF9zdHJpbmcoIGNvbnN0IGNoYXIgKnNpZ25hbCwgUVN0cmluZyApOwogICAgdm9pZCBh
Y3RpdmF0ZV9zaWduYWxfc3RycmVmKCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IFFTdHJpbmcg
JiApOwoKICAgIGNvbnN0IFFPYmplY3QgKnNlbmRlcigpOwoKCiAgICB2aXJ0dWFsIHZvaWQgaW5p
dE1ldGFPYmplY3QoKTsKICAgIHN0YXRpYyBRTWV0YU9iamVjdCogc3RhdGljTWV0YU9iamVjdCgp
OwoKICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KCBRVGltZXJFdmVudCAqICk7CiAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRFdmVudCggUUNoaWxkRXZlbnQgKiApOwoKICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0Tm90aWZ5KCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0Tm90aWZ5KCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZpcnR1YWwgYm9vbCBjaGVj
a0Nvbm5lY3RBcmdzKCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IFFPYmplY3QgKnJlY2VpdmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lbWJlciAp
OwogICAgc3RhdGljIFFDU3RyaW5nIG5vcm1hbGl6ZVNpZ25hbFNsb3QoIGNvbnN0IGNoYXIgKnNp
Z25hbFNsb3QgKTsKCiAgICBzdGF0aWMgdm9pZCBiYWRTdXBlcmNsYXNzV2FybmluZyggY29uc3Qg
Y2hhciAqY2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpzdXBlcmNsYXNzTmFtZSApOwoKcHJpdmF0ZToKICAgIHVpbnQgaXNTaWduYWwg
OiAxOwogICAgdWludCBpc1dpZGdldCA6IDE7CiAgICB1aW50IHBlbmRUaW1lciA6IDE7CiAgICB1
aW50IHBlbmRFdmVudCA6IDE7CiAgICB1aW50IGJsb2NrU2lnIDogMTsKICAgIHVpbnQgd2FzRGVs
ZXRlZCA6IDE7CiAgICB1aW50IGlzVHJlZSA6IDE7CgogICAgUU1ldGFPYmplY3QgKnF1ZXJ5TWV0
YU9iamVjdCgpIGNvbnN0OwogICAgc3RhdGljIFFNZXRhT2JqZWN0ICptZXRhT2JqOwogICAgY29u
c3QgY2hhciAqb2JqbmFtZTsKICAgIFFPYmplY3QgKnBhcmVudE9iajsKICAgIFFPYmplY3RMaXN0
ICpjaGlsZE9iamVjdHM7CiAgICBRU2lnbmFsRGljdCAqY29ubmVjdGlvbnM7CiAgICBRT2JqZWN0
TGlzdCAqc2VuZGVyT2JqZWN0czsKICAgIFFPYmplY3RMaXN0ICpldmVudEZpbHRlcnM7CgoKICAg
IFFPYmplY3QgKnNpZ1NlbmRlcjsKCiAgICBmcmllbmQgY2xhc3MgUUFwcGxpY2F0aW9uOwogICAg
ZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247CiAgICBmcmllbmQgY2xhc3MgUVdpZGdldDsK
ICAgIGZyaWVuZCBjbGFzcyBRU2lnbmFsOwogICAgZnJpZW5kIGNsYXNzIFFTZW5kZXJPYmplY3Q7
Cgpwcml2YXRlOgoKICAgIFFPYmplY3QoIGNvbnN0IFFPYmplY3QgJiApOwogICAgUU9iamVjdCAm
b3BlcmF0b3I9KCBjb25zdCBRT2JqZWN0ICYgKTsKCgpwdWJsaWM6CgoKICAgIFFTdHJpbmdMaXN0
IHN1cGVyQ2xhc3NlcyggYm9vbCBpbmNsdWRlVGhpcyA9IEZBTFNFICkgY29uc3Q7Cgp9OwoKCgpp
bmxpbmUgYm9vbCBRT2JqZWN0Ojpjb25uZWN0KCBjb25zdCBRT2JqZWN0ICpzZW5kZXIsIGNvbnN0
IGNoYXIgKnNpZ25hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bWVtYmVyICkgY29uc3QKewogICAgcmV0dXJuIGNvbm5lY3QoIHNlbmRlciwgc2lnbmFsLCB0aGlz
LCBtZW1iZXIgKTsKfQoKaW5saW5lIGJvb2wgUU9iamVjdDo6ZGlzY29ubmVjdCggY29uc3QgY2hh
ciAqc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0
ICpyZWNlaXZlciwgY29uc3QgY2hhciAqbWVtYmVyICkKewogICAgcmV0dXJuIGRpc2Nvbm5lY3Qo
IHRoaXMsIHNpZ25hbCwgcmVjZWl2ZXIsIG1lbWJlciApOwp9CgppbmxpbmUgYm9vbCBRT2JqZWN0
OjpkaXNjb25uZWN0KCBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgY29uc3QgY2hhciAqbWVtYmVy
ICkKewogICAgcmV0dXJuIGRpc2Nvbm5lY3QoIHRoaXMsIDAsIHJlY2VpdmVyLCBtZW1iZXIgKTsK
fQoKaW5saW5lIGNvbnN0IFFPYmplY3QgKlFPYmplY3Q6OnNlbmRlcigpCnsKICAgIHJldHVybiBz
aWdTZW5kZXI7Cn0KCgpjbGFzcyBRU2VuZGVyT2JqZWN0IDogcHVibGljIFFPYmplY3QKewpwdWJs
aWM6CiAgICB2b2lkIHNldFNlbmRlciggUU9iamVjdCAqcyApIHsgc2lnU2VuZGVyPXM7IH0KfTsK
IyA0NCAia2VybmVsL3F3aWRnZXQuaCIgMgojIDEgImtlcm5lbC9xcGFpbnRkZXZpY2UuaCIgMQoj
IDUxICJrZXJuZWwvcXBhaW50ZGV2aWNlLmgiCmNsYXNzIFFJT0RldmljZTsKY2xhc3MgUVN0cmlu
ZzsKCgoKc3RydWN0IFFQYWludERldmljZVgxMURhdGE7CgoKdW5pb24gUVBEZXZDbWRQYXJhbSB7
CiAgICBpbnQgaXZhbDsKICAgIGludCAqaXZlYzsKICAgIFFTdHJpbmcgKnN0cjsKICAgIGNvbnN0
IFFQb2ludCAqcG9pbnQ7CiAgICBjb25zdCBRUmVjdCAqcmVjdDsKICAgIGNvbnN0IFFQb2ludEFy
cmF5ICpwdGFycjsKICAgIGNvbnN0IFFQaXhtYXAgKnBpeG1hcDsKICAgIGNvbnN0IFFJbWFnZSAq
aW1hZ2U7CiAgICBjb25zdCBRQ29sb3IgKmNvbG9yOwogICAgY29uc3QgUUZvbnQgKmZvbnQ7CiAg
ICBjb25zdCBRUGVuICpwZW47CiAgICBjb25zdCBRQnJ1c2ggKmJydXNoOwogICAgY29uc3QgUVJl
Z2lvbiAqcmduOwogICAgY29uc3QgUVdNYXRyaXggKm1hdHJpeDsKICAgIFFJT0RldmljZSAqZGV2
aWNlOwp9OwoKCgpjbGFzcyBRUGFpbnREZXZpY2UKewpwdWJsaWM6CiAgICB2aXJ0dWFsIH5RUGFp
bnREZXZpY2UoKTsKCiAgICBpbnQgZGV2VHlwZSgpIGNvbnN0OwogICAgYm9vbCBpc0V4dERldigp
IGNvbnN0OwogICAgYm9vbCBwYWludGluZ0FjdGl2ZSgpIGNvbnN0OwoKCgoKCgogICAgSEFORExF
IGhhbmRsZSgpIGNvbnN0OwoKCgoKCgoKICAgIERpc3BsYXkgKngxMURpc3BsYXkoKSBjb25zdDsK
ICAgIGludCB4MTFTY3JlZW4oKSBjb25zdDsKICAgIGludCB4MTFEZXB0aCgpIGNvbnN0OwogICAg
aW50IHgxMUNlbGxzKCkgY29uc3Q7CiAgICBIQU5ETEUgeDExQ29sb3JtYXAoKSBjb25zdDsKICAg
IGJvb2wgeDExRGVmYXVsdENvbG9ybWFwKCkgY29uc3Q7CiAgICB2b2lkICp4MTFWaXN1YWwoKSBj
b25zdDsKICAgIGJvb2wgeDExRGVmYXVsdFZpc3VhbCgpIGNvbnN0OwoKICAgIHN0YXRpYyBEaXNw
bGF5ICp4MTFBcHBEaXNwbGF5KCk7CiAgICBzdGF0aWMgaW50IHgxMUFwcFNjcmVlbigpOwogICAg
c3RhdGljIGludCB4MTFBcHBEZXB0aCgpOwogICAgc3RhdGljIGludCB4MTFBcHBDZWxscygpOwog
ICAgc3RhdGljIGludCB4MTFBcHBEcGlYKCk7CiAgICBzdGF0aWMgaW50IHgxMUFwcERwaVkoKTsK
ICAgIHN0YXRpYyBIQU5ETEUgeDExQXBwQ29sb3JtYXAoKTsKICAgIHN0YXRpYyBib29sIHgxMUFw
cERlZmF1bHRDb2xvcm1hcCgpOwogICAgc3RhdGljIHZvaWQgKngxMUFwcFZpc3VhbCgpOwogICAg
c3RhdGljIGJvb2wgeDExQXBwRGVmYXVsdFZpc3VhbCgpOwogICAgc3RhdGljIHZvaWQgeDExU2V0
QXBwRHBpWChpbnQpOwogICAgc3RhdGljIHZvaWQgeDExU2V0QXBwRHBpWShpbnQpOwojIDEzMSAi
a2VybmVsL3FwYWludGRldmljZS5oIgogICAgZW51bSBQRGV2Q21kIHsKICAgICAgICBQZGNOT1Ag
PSAwLAogICAgICAgIFBkY0RyYXdQb2ludCA9IDEsCiAgICAgICAgUGRjRHJhd0ZpcnN0ID0gUGRj
RHJhd1BvaW50LAogICAgICAgIFBkY01vdmVUbyA9IDIsCiAgICAgICAgUGRjTGluZVRvID0gMywK
ICAgICAgICBQZGNEcmF3TGluZSA9IDQsCiAgICAgICAgUGRjRHJhd1JlY3QgPSA1LAogICAgICAg
IFBkY0RyYXdSb3VuZFJlY3QgPSA2LAogICAgICAgIFBkY0RyYXdFbGxpcHNlID0gNywKICAgICAg
ICBQZGNEcmF3QXJjID0gOCwKICAgICAgICBQZGNEcmF3UGllID0gOSwKICAgICAgICBQZGNEcmF3
Q2hvcmQgPSAxMCwKICAgICAgICBQZGNEcmF3TGluZVNlZ21lbnRzID0gMTEsCiAgICAgICAgUGRj
RHJhd1BvbHlsaW5lID0gMTIsCiAgICAgICAgUGRjRHJhd1BvbHlnb24gPSAxMywKICAgICAgICBQ
ZGNEcmF3UXVhZEJlemllciA9IDE0LAogICAgICAgIFBkY0RyYXdUZXh0ID0gMTUsCiAgICAgICAg
UGRjRHJhd1RleHRGb3JtYXR0ZWQgPSAxNiwKICAgICAgICBQZGNEcmF3UGl4bWFwID0gMTcsCiAg
ICAgICAgUGRjRHJhd0ltYWdlID0gMTgsCiAgICAgICAgUGRjRHJhd1RleHQyID0gMTksCiAgICAg
ICAgUGRjRHJhd1RleHQyRm9ybWF0dGVkID0gMjAsCiAgICAgICAgUGRjRHJhd0xhc3QgPSBQZGNE
cmF3VGV4dDJGb3JtYXR0ZWQsCgoKCiAgICAgICAgUGRjQmVnaW4gPSAzMCwKICAgICAgICBQZGNF
bmQgPSAzMSwKICAgICAgICBQZGNTYXZlID0gMzIsCiAgICAgICAgUGRjUmVzdG9yZSA9IDMzLAog
ICAgICAgIFBkY1NldGRldiA9IDM0LAogICAgICAgIFBkY1NldEJrQ29sb3IgPSA0MCwKICAgICAg
ICBQZGNTZXRCa01vZGUgPSA0MSwKICAgICAgICBQZGNTZXRST1AgPSA0MiwKICAgICAgICBQZGNT
ZXRCcnVzaE9yaWdpbiA9IDQzLAogICAgICAgIFBkY1NldEZvbnQgPSA0NSwKICAgICAgICBQZGNT
ZXRQZW4gPSA0NiwKICAgICAgICBQZGNTZXRCcnVzaCA9IDQ3LAogICAgICAgIFBkY1NldFRhYlN0
b3BzID0gNDgsCiAgICAgICAgUGRjU2V0VGFiQXJyYXkgPSA0OSwKICAgICAgICBQZGNTZXRVbml0
ID0gNTAsCiAgICAgICAgUGRjU2V0Vlhmb3JtID0gNTEsCiAgICAgICAgUGRjU2V0V2luZG93ID0g
NTIsCiAgICAgICAgUGRjU2V0Vmlld3BvcnQgPSA1MywKICAgICAgICBQZGNTZXRXWGZvcm0gPSA1
NCwKICAgICAgICBQZGNTZXRXTWF0cml4ID0gNTUsCiAgICAgICAgUGRjU2F2ZVdNYXRyaXggPSA1
NiwKICAgICAgICBQZGNSZXN0b3JlV01hdHJpeCA9IDU3LAogICAgICAgIFBkY1NldENsaXAgPSA2
MCwKICAgICAgICBQZGNTZXRDbGlwUmVnaW9uID0gNjEsCgogICAgICAgIFBkY1Jlc2VydmVkU3Rh
cnQgPSAwLAogICAgICAgIFBkY1Jlc2VydmVkU3RvcCA9IDE5OQogICAgfTsKCnByb3RlY3RlZDoK
ICAgIFFQYWludERldmljZSggdWludCBkZXZmbGFncyApOwoKCgoKICAgIEhBTkRMRSBoZDsKICAg
IHZvaWQgY29weVgxMURhdGEoIGNvbnN0IFFQYWludERldmljZSAqICk7CiAgICB2aXJ0dWFsIHZv
aWQgc2V0WDExRGF0YSggY29uc3QgUVBhaW50RGV2aWNlWDExRGF0YSogKTsKICAgIFFQYWludERl
dmljZVgxMURhdGEqIGdldFgxMURhdGEoIGJvb2wgZGVmPUZBTFNFICkgY29uc3Q7CgoKCgoKCgog
ICAgdmlydHVhbCBib29sIGNtZCggaW50LCBRUGFpbnRlciAqLCBRUERldkNtZFBhcmFtICogKTsK
ICAgIHZpcnR1YWwgaW50IG1ldHJpYyggaW50ICkgY29uc3Q7CiAgICB2aXJ0dWFsIGludCBmb250
TWV0KCBRRm9udCAqLCBpbnQsIGNvbnN0IGNoYXIgKiA9IDAsIGludCA9IDAgKSBjb25zdDsKICAg
IHZpcnR1YWwgaW50IGZvbnRJbmYoIFFGb250ICosIGludCApIGNvbnN0OwoKICAgIHVzaG9ydCBk
ZXZGbGFnczsKICAgIHVzaG9ydCBwYWludGVyczsKCiAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXI7
CiAgICBmcmllbmQgY2xhc3MgUVBhaW50RGV2aWNlTWV0cmljczsKICAgIGZyaWVuZCB2b2lkIGJp
dEJsdCggUVBhaW50RGV2aWNlICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBRUGFpbnREZXZpY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50LCBpbnQsIGludCwgaW50LCBRdDo6UmFzdGVyT3AsIGJvb2wgKTsKCiAgICBmcmll
bmQgdm9pZCBxdF9pbml0X2ludGVybmFsKCBpbnQgKiwgY2hhciAqKiwgRGlzcGxheSAqICk7CgoK
cHJpdmF0ZToKCiAgICBzdGF0aWMgRGlzcGxheSAqeF9hcHBkaXNwbGF5OwogICAgc3RhdGljIGlu
dCB4X2FwcHNjcmVlbjsKICAgIHN0YXRpYyBpbnQgeF9hcHBkZXB0aDsKICAgIHN0YXRpYyBpbnQg
eF9hcHBjZWxsczsKICAgIHN0YXRpYyBIQU5ETEUgeF9hcHBjb2xvcm1hcDsKICAgIHN0YXRpYyBi
b29sIHhfYXBwZGVmY29sb3JtYXA7CiAgICBzdGF0aWMgdm9pZCAqeF9hcHB2aXN1YWw7CiAgICBz
dGF0aWMgYm9vbCB4X2FwcGRlZnZpc3VhbDsKCiAgICBRUGFpbnREZXZpY2VYMTFEYXRhKiB4MTFE
YXRhOwoKCnByaXZhdGU6CgogICAgUVBhaW50RGV2aWNlKCBjb25zdCBRUGFpbnREZXZpY2UgJiAp
OwogICAgUVBhaW50RGV2aWNlICZvcGVyYXRvcj0oIGNvbnN0IFFQYWludERldmljZSAmICk7Cgp9
OwoKCgp2b2lkIGJpdEJsdCggUVBhaW50RGV2aWNlICpkc3QsIGludCBkeCwgaW50IGR5LAogICAg
ICAgICAgICAgY29uc3QgUVBhaW50RGV2aWNlICpzcmMsIGludCBzeD0wLCBpbnQgc3k9MCwgaW50
IHN3PS0xLCBpbnQgc2g9LTEsCiAgICAgICAgICAgICBRdDo6UmFzdGVyT3AgPSBRdDo6Q29weVJP
UCwgYm9vbCBpZ25vcmVNYXNrPUZBTFNFICk7CgoKdm9pZCBiaXRCbHQoIFFQYWludERldmljZSAq
ZHN0LCBpbnQgZHgsIGludCBkeSwKICAgICAgICAgICAgIGNvbnN0IFFJbWFnZSAqc3JjLCBpbnQg
c3g9MCwgaW50IHN5PTAsIGludCBzdz0tMSwgaW50IHNoPS0xLAogICAgICAgICAgICAgaW50IGNv
bnZlcnNpb25fZmxhZ3M9MCApOwoKCgoKc3RydWN0IFFQYWludERldmljZVgxMURhdGEgewogICAg
RGlzcGxheSogeF9kaXNwbGF5OwogICAgaW50IHhfc2NyZWVuOwogICAgaW50IHhfZGVwdGg7CiAg
ICBpbnQgeF9jZWxsczsKICAgIEhBTkRMRSB4X2NvbG9ybWFwOwogICAgYm9vbCB4X2RlZmNvbG9y
bWFwOwogICAgdm9pZCogeF92aXN1YWw7CiAgICBib29sIHhfZGVmdmlzdWFsOwp9OwoKCgoKCgoK
aW5saW5lIGludCBRUGFpbnREZXZpY2U6OmRldlR5cGUoKSBjb25zdAp7IHJldHVybiBkZXZGbGFn
cyAmIFFJbnRlcm5hbDo6RGV2aWNlVHlwZU1hc2s7IH0KCmlubGluZSBib29sIFFQYWludERldmlj
ZTo6aXNFeHREZXYoKSBjb25zdAp7IHJldHVybiAoZGV2RmxhZ3MgJiBRSW50ZXJuYWw6OkV4dGVy
bmFsRGV2aWNlKSAhPSAwOyB9CgppbmxpbmUgYm9vbCBRUGFpbnREZXZpY2U6OnBhaW50aW5nQWN0
aXZlKCkgY29uc3QKeyByZXR1cm4gcGFpbnRlcnMgIT0gMDsgfQoKCgoKaW5saW5lIEhBTkRMRSBR
UGFpbnREZXZpY2U6OmhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIGhkOyB9CgoKCmlubGluZSBEaXNw
bGF5ICpRUGFpbnREZXZpY2U6OngxMURpc3BsYXkoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8g
eDExRGF0YS0+eF9kaXNwbGF5IDogeF9hcHBkaXNwbGF5OyB9CgppbmxpbmUgaW50IFFQYWludERl
dmljZTo6eDExU2NyZWVuKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEtPnhfc2Ny
ZWVuIDogeF9hcHBzY3JlZW47IH0KCmlubGluZSBpbnQgUVBhaW50RGV2aWNlOjp4MTFEZXB0aCgp
IGNvbnN0CnsgcmV0dXJuIHgxMURhdGEgPyB4MTFEYXRhLT54X2RlcHRoIDogeF9hcHBkZXB0aDsg
fQoKaW5saW5lIGludCBRUGFpbnREZXZpY2U6OngxMUNlbGxzKCkgY29uc3QKeyByZXR1cm4geDEx
RGF0YSA/IHgxMURhdGEtPnhfY2VsbHMgOiB4X2FwcGNlbGxzOyB9CgppbmxpbmUgSEFORExFIFFQ
YWludERldmljZTo6eDExQ29sb3JtYXAoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8geDExRGF0
YS0+eF9jb2xvcm1hcCA6IHhfYXBwY29sb3JtYXA7IH0KCmlubGluZSBib29sIFFQYWludERldmlj
ZTo6eDExRGVmYXVsdENvbG9ybWFwKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEt
PnhfZGVmY29sb3JtYXAgOiB4X2FwcGRlZmNvbG9ybWFwOyB9CgppbmxpbmUgdm9pZCAqUVBhaW50
RGV2aWNlOjp4MTFWaXN1YWwoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8geDExRGF0YS0+eF92
aXN1YWwgOiB4X2FwcHZpc3VhbDsgfQoKaW5saW5lIGJvb2wgUVBhaW50RGV2aWNlOjp4MTFEZWZh
dWx0VmlzdWFsKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEtPnhfZGVmdmlzdWFs
IDogeF9hcHBkZWZ2aXN1YWw7IH0KCmlubGluZSBEaXNwbGF5ICpRUGFpbnREZXZpY2U6OngxMUFw
cERpc3BsYXkoKQp7IHJldHVybiB4X2FwcGRpc3BsYXk7IH0KCmlubGluZSBpbnQgUVBhaW50RGV2
aWNlOjp4MTFBcHBTY3JlZW4oKQp7IHJldHVybiB4X2FwcHNjcmVlbjsgfQoKaW5saW5lIGludCBR
UGFpbnREZXZpY2U6OngxMUFwcERlcHRoKCkKeyByZXR1cm4geF9hcHBkZXB0aDsgfQoKaW5saW5l
IGludCBRUGFpbnREZXZpY2U6OngxMUFwcENlbGxzKCkKeyByZXR1cm4geF9hcHBjZWxsczsgfQoK
aW5saW5lIEhBTkRMRSBRUGFpbnREZXZpY2U6OngxMUFwcENvbG9ybWFwKCkKeyByZXR1cm4geF9h
cHBjb2xvcm1hcDsgfQoKaW5saW5lIGJvb2wgUVBhaW50RGV2aWNlOjp4MTFBcHBEZWZhdWx0Q29s
b3JtYXAoKQp7IHJldHVybiB4X2FwcGRlZmNvbG9ybWFwOyB9CgppbmxpbmUgdm9pZCAqUVBhaW50
RGV2aWNlOjp4MTFBcHBWaXN1YWwoKQp7IHJldHVybiB4X2FwcHZpc3VhbDsgfQoKaW5saW5lIGJv
b2wgUVBhaW50RGV2aWNlOjp4MTFBcHBEZWZhdWx0VmlzdWFsKCkKeyByZXR1cm4geF9hcHBkZWZ2
aXN1YWw7IH0KCgoKCmlubGluZSB2b2lkIGJpdEJsdCggUVBhaW50RGV2aWNlICpkc3QsIGNvbnN0
IFFQb2ludCAmZHAsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50RGV2aWNlICpzcmMs
IGNvbnN0IFFSZWN0ICZzciA9UVJlY3QoMCwwLC0xLC0xKSwKICAgICAgICAgICAgICAgICAgICBR
dDo6UmFzdGVyT3Agcm9wPVF0OjpDb3B5Uk9QLCBib29sIGlnbm9yZU1hc2s9RkFMU0UgKQp7CiAg
ICBiaXRCbHQoIGRzdCwgZHAueCgpLCBkcC55KCksIHNyYywgc3IueCgpLCBzci55KCksIHNyLndp
ZHRoKCksIHNyLmhlaWdodCgpLAogICAgICAgICAgICByb3AsIGlnbm9yZU1hc2sgKTsKfQojIDQ1
ICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2VybmVsL3FwYWxldHRlLmgiIDEKIyA0MyAia2Vy
bmVsL3FwYWxldHRlLmgiCiMgMSAia2VybmVsL3Fjb2xvci5oIiAxCiMgNDUgImtlcm5lbC9xY29s
b3IuaCIKY29uc3QgUVJnYiBSR0JfRElSVFkgPSAweDgwMDAwMDAwOwpjb25zdCBRUmdiIFJHQl9J
TlZBTElEID0gMHg0MDAwMDAwMDsKY29uc3QgUVJnYiBSR0JfRElSRUNUID0gMHgyMDAwMDAwMDsK
Y29uc3QgUVJnYiBSR0JfTUFTSyA9IDB4MDBmZmZmZmY7CgoKIGlubGluZSBpbnQgcVJlZCggUVJn
YiByZ2IgKQp7IHJldHVybiAoaW50KSgocmdiID4+IDE2KSAmIDB4ZmYpOyB9CgogaW5saW5lIGlu
dCBxR3JlZW4oIFFSZ2IgcmdiICkKeyByZXR1cm4gKGludCkoKHJnYiA+PiA4KSAmIDB4ZmYpOyB9
CgogaW5saW5lIGludCBxQmx1ZSggUVJnYiByZ2IgKQp7IHJldHVybiAoaW50KShyZ2IgJiAweGZm
KTsgfQoKIGlubGluZSBpbnQgcUFscGhhKCBRUmdiIHJnYiApCnsgcmV0dXJuIChpbnQpKChyZ2Ig
Pj4gMjQpICYgMHhmZik7IH0KCiBpbmxpbmUgUVJnYiBxUmdiKCBpbnQgciwgaW50IGcsIGludCBi
ICkKeyByZXR1cm4gKDB4ZmYgPDwgMjQpIHwgKChyICYgMHhmZikgPDwgMTYpIHwgKChnICYgMHhm
ZikgPDwgOCkgfCAoYiAmIDB4ZmYpOyB9CgogaW5saW5lIFFSZ2IgcVJnYmEoIGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhICkKeyByZXR1cm4gKChhICYgMHhmZikgPDwgMjQpIHwgKChyICYgMHhm
ZikgPDwgMTYpIHwgKChnICYgMHhmZikgPDwgOCkgfCAoYiAmIDB4ZmYpOyB9CgogaW5saW5lIGlu
dCBxR3JheSggaW50IHIsIGludCBnLCBpbnQgYiApCnsgcmV0dXJuIChyKjExK2cqMTYrYio1KS8z
MjsgfQoKIGlubGluZSBpbnQgcUdyYXkoIFFSZ2IgcmdiICkKeyByZXR1cm4gcUdyYXkoIHFSZWQo
cmdiKSwgcUdyZWVuKHJnYiksIHFCbHVlKHJnYikgKTsgfQoKCmNsYXNzIFFDb2xvcgp7CnB1Ymxp
YzoKICAgIGVudW0gU3BlYyB7IFJnYiwgSHN2IH07CgogICAgUUNvbG9yKCk7CiAgICBRQ29sb3Io
IGludCByLCBpbnQgZywgaW50IGIgKTsKICAgIFFDb2xvciggaW50IHgsIGludCB5LCBpbnQgeiwg
U3BlYyApOwogICAgUUNvbG9yKCBRUmdiIHJnYiwgdWludCBwaXhlbD0weGZmZmZmZmZmKTsKICAg
IFFDb2xvciggY29uc3QgUVN0cmluZyYgbmFtZSApOwogICAgUUNvbG9yKCBjb25zdCBjaGFyICpu
YW1lICk7CiAgICBRQ29sb3IoIGNvbnN0IFFDb2xvciAmICk7CiAgICBRQ29sb3IgJm9wZXJhdG9y
PSggY29uc3QgUUNvbG9yICYgKTsKCiAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgIGJvb2wg
aXNEaXJ0eSgpIGNvbnN0OwoKICAgIFFTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgdm9pZCBzZXRO
YW1lZENvbG9yKCBjb25zdCBRU3RyaW5nJiBuYW1lICk7CgogICAgdm9pZCByZ2IoIGludCAqciwg
aW50ICpnLCBpbnQgKmIgKSBjb25zdDsKICAgIFFSZ2IgcmdiKCkgY29uc3Q7CiAgICB2b2lkIHNl
dFJnYiggaW50IHIsIGludCBnLCBpbnQgYiApOwogICAgdm9pZCBzZXRSZ2IoIFFSZ2IgcmdiICk7
CgogICAgaW50IHJlZCgpIGNvbnN0OwogICAgaW50IGdyZWVuKCkgY29uc3Q7CiAgICBpbnQgYmx1
ZSgpIGNvbnN0OwoKICAgIHZvaWQgaHN2KCBpbnQgKmgsIGludCAqcywgaW50ICp2ICkgY29uc3Q7
CiAgICB2b2lkIGdldEhzdiggaW50ICZoLCBpbnQgJnMsIGludCAmdiApIGNvbnN0OwogICAgdm9p
ZCBzZXRIc3YoIGludCBoLCBpbnQgcywgaW50IHYgKTsKCiAgICBRQ29sb3IgbGlnaHQoIGludCBm
ID0gMTUwICkgY29uc3Q7CiAgICBRQ29sb3IgZGFyayggaW50IGYgPSAyMDAgKSBjb25zdDsKCiAg
ICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFDb2xvciAmYyApIGNvbnN0OwogICAgYm9vbCBvcGVy
YXRvciE9KCBjb25zdCBRQ29sb3IgJmMgKSBjb25zdDsKCiAgICBzdGF0aWMgYm9vbCBsYXp5QWxs
b2MoKTsKICAgIHN0YXRpYyB2b2lkIHNldExhenlBbGxvYyggYm9vbCApOwogICAgdWludCBhbGxv
YygpOwogICAgdWludCBwaXhlbCgpIGNvbnN0OwoKICAgIHN0YXRpYyBpbnQgbWF4Q29sb3JzKCk7
CiAgICBzdGF0aWMgaW50IG51bUJpdFBsYW5lcygpOwoKICAgIHN0YXRpYyBpbnQgZW50ZXJBbGxv
Y0NvbnRleHQoKTsKICAgIHN0YXRpYyB2b2lkIGxlYXZlQWxsb2NDb250ZXh0KCk7CiAgICBzdGF0
aWMgaW50IGN1cnJlbnRBbGxvY0NvbnRleHQoKTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lBbGxv
Y0NvbnRleHQoIGludCApOwoKCgoKCgogICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAg
c3RhdGljIHZvaWQgY2xlYW51cCgpOwoKcHJpdmF0ZToKICAgIHZvaWQgc2V0U3lzdGVtTmFtZWRD
b2xvciggY29uc3QgUVN0cmluZyYgbmFtZSApOwogICAgc3RhdGljIHZvaWQgaW5pdEdsb2JhbENv
bG9ycygpOwogICAgc3RhdGljIFFDb2xvciogZ2xvYmFsQ29sb3JzKCk7CiAgICBzdGF0aWMgYm9v
bCBjb2xvcl9pbml0OwogICAgc3RhdGljIGJvb2wgZ2xvYmFsc19pbml0OwogICAgc3RhdGljIGJv
b2wgbGF6eV9hbGxvYzsKCgoKICAgIHVpbnQgcGl4OwogICAgUVJnYiByZ2JWYWw7Cn07CgoKaW5s
aW5lIFFDb2xvcjo6UUNvbG9yKCkKeyByZ2JWYWwgPSBSR0JfSU5WQUxJRDsgcGl4ID0gMDsgfQoK
aW5saW5lIFFDb2xvcjo6UUNvbG9yKCBpbnQgciwgaW50IGcsIGludCBiICkKeyBzZXRSZ2IoIHIs
IGcsIGIgKTsgfQoKaW5saW5lIGJvb2wgUUNvbG9yOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4g
KHJnYlZhbCAmIFJHQl9JTlZBTElEKSA9PSAwOyB9CgppbmxpbmUgYm9vbCBRQ29sb3I6OmlzRGly
dHkoKSBjb25zdAp7IHJldHVybiAocmdiVmFsICYgUkdCX0RJUlRZKSAhPSAwOyB9CgppbmxpbmUg
UVJnYiBRQ29sb3I6OnJnYigpIGNvbnN0CnsgcmV0dXJuIHJnYlZhbCB8IH5SR0JfTUFTSzsgfQoK
aW5saW5lIGludCBRQ29sb3I6OnJlZCgpIGNvbnN0CnsgcmV0dXJuIHFSZWQocmdiVmFsKTsgfQoK
aW5saW5lIGludCBRQ29sb3I6OmdyZWVuKCkgY29uc3QKeyByZXR1cm4gcUdyZWVuKHJnYlZhbCk7
IH0KCmlubGluZSBpbnQgUUNvbG9yOjpibHVlKCkgY29uc3QKeyByZXR1cm4gcUJsdWUocmdiVmFs
KTsgfQoKaW5saW5lIHVpbnQgUUNvbG9yOjpwaXhlbCgpIGNvbnN0CnsgcmV0dXJuIChyZ2JWYWwg
JiBSR0JfRElSVFkpID09IDAgPyBwaXggOiAoKFFDb2xvciopdGhpcyktPmFsbG9jKCk7IH0KCmlu
bGluZSBib29sIFFDb2xvcjo6bGF6eUFsbG9jKCkKeyByZXR1cm4gbGF6eV9hbGxvYzsgfQoKCmlu
bGluZSBib29sIFFDb2xvcjo6b3BlcmF0b3I9PSggY29uc3QgUUNvbG9yICZjICkgY29uc3QKewog
ICAgcmV0dXJuIGlzVmFsaWQoKT09Yy5pc1ZhbGlkKCkgJiYKICAgICAgICAoKCgocmdiVmFsIHwg
Yy5yZ2JWYWwpICYgUkdCX0RJUkVDVCkgPT0gMCAmJgogICAgICAgICAgICAocmdiVmFsICYgUkdC
X01BU0spID09IChjLnJnYlZhbCAmIFJHQl9NQVNLKSkgfHwKICAgICAgICAgICAoKHJnYlZhbCAm
IGMucmdiVmFsICYgUkdCX0RJUkVDVCkgIT0gMCAmJgogICAgICAgICAgICAocmdiVmFsICYgUkdC
X01BU0spID09IChjLnJnYlZhbCAmIFJHQl9NQVNLKSAmJiBwaXggPT0gYy5waXgpKTsKfQoKaW5s
aW5lIGJvb2wgUUNvbG9yOjpvcGVyYXRvciE9KCBjb25zdCBRQ29sb3IgJmMgKSBjb25zdAp7CiAg
ICByZXR1cm4gIW9wZXJhdG9yPT0oYyk7Cn0KCgoKCgoKCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8
PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUUNvbG9yICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRv
cj4+KCBRRGF0YVN0cmVhbSAmLCBRQ29sb3IgJiApOwojIDQ0ICJrZXJuZWwvcXBhbGV0dGUuaCIg
MgoKIyAxICJrZXJuZWwvcWJydXNoLmgiIDEKIyA0NyAia2VybmVsL3FicnVzaC5oIgpjbGFzcyBR
QnJ1c2g6IHB1YmxpYyBRdAp7CmZyaWVuZCBjbGFzcyBRUGFpbnRlcjsKcHVibGljOgogICAgUUJy
dXNoKCk7CiAgICBRQnJ1c2goIEJydXNoU3R5bGUgKTsKICAgIFFCcnVzaCggY29uc3QgUUNvbG9y
ICYsIEJydXNoU3R5bGU9U29saWRQYXR0ZXJuICk7CiAgICBRQnJ1c2goIGNvbnN0IFFDb2xvciAm
LCBjb25zdCBRUGl4bWFwICYgKTsKICAgIFFCcnVzaCggY29uc3QgUUJydXNoICYgKTsKICAgflFC
cnVzaCgpOwogICAgUUJydXNoICZvcGVyYXRvcj0oIGNvbnN0IFFCcnVzaCAmICk7CgogICAgQnJ1
c2hTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPnN0eWxlOyB9CiAgICB2b2lkIHNl
dFN0eWxlKCBCcnVzaFN0eWxlICk7CiAgICBjb25zdCBRQ29sb3IgJmNvbG9yKCljb25zdCB7IHJl
dHVybiBkYXRhLT5jb2xvcjsgfQogICAgdm9pZCBzZXRDb2xvciggY29uc3QgUUNvbG9yICYgKTsK
ICAgIFFQaXhtYXAgKnBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPnBpeG1hcDsgfQogICAg
dm9pZCBzZXRQaXhtYXAoIGNvbnN0IFFQaXhtYXAgJiApOwoKICAgIGJvb2wgb3BlcmF0b3I9PSgg
Y29uc3QgUUJydXNoICZwICkgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFCcnVz
aCAmYiApIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJl
dHVybiAhKG9wZXJhdG9yPT0oYikpOyB9Cgpwcml2YXRlOgogICAgUUJydXNoIGNvcHkoKSBjb25z
dDsKICAgIHZvaWQgZGV0YWNoKCk7CiAgICB2b2lkIGluaXQoIGNvbnN0IFFDb2xvciAmLCBCcnVz
aFN0eWxlICk7CiAgICBzdHJ1Y3QgUUJydXNoRGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKICAgICAg
ICBCcnVzaFN0eWxlIHN0eWxlOwogICAgICAgIFFDb2xvciBjb2xvcjsKICAgICAgICBRUGl4bWFw
ICpwaXhtYXA7CiAgICB9ICpkYXRhOwp9OwoKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8
KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRQnJ1c2ggJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9y
Pj4oIFFEYXRhU3RyZWFtICYsIFFCcnVzaCAmICk7CiMgNDYgImtlcm5lbC9xcGFsZXR0ZS5oIiAy
CgoKCmNsYXNzIFFDb2xvckdyb3VwUHJpdmF0ZTsKCgpjbGFzcyBRQ29sb3JHcm91cAp7CnB1Ymxp
YzoKICAgIFFDb2xvckdyb3VwKCk7CiAgICBRQ29sb3JHcm91cCggY29uc3QgUUNvbG9yICZmb3Jl
Z3JvdW5kLCBjb25zdCBRQ29sb3IgJmJ1dHRvbiwKICAgICAgICAgICAgICAgICBjb25zdCBRQ29s
b3IgJmxpZ2h0LCBjb25zdCBRQ29sb3IgJmRhcmssIGNvbnN0IFFDb2xvciAmbWlkLAogICAgICAg
ICAgICAgICAgIGNvbnN0IFFDb2xvciAmdGV4dCwgY29uc3QgUUNvbG9yICZiYXNlICk7CiAgICBR
Q29sb3JHcm91cCggY29uc3QgUUJydXNoICZmb3JlZ3JvdW5kLCBjb25zdCBRQnJ1c2ggJmJ1dHRv
biwKICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggJmxpZ2h0LCBjb25zdCBRQnJ1c2ggJmRh
cmssIGNvbnN0IFFCcnVzaCAmbWlkLAogICAgICAgICAgICAgICAgIGNvbnN0IFFCcnVzaCAmdGV4
dCwgY29uc3QgUUJydXNoICZicmlnaHRfdGV4dCwKICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1
c2ggJmJhc2UsIGNvbnN0IFFCcnVzaCAmYmFja2dyb3VuZCk7CiAgICBRQ29sb3JHcm91cCggY29u
c3QgUUNvbG9yR3JvdXAgJiApOwoKICAgflFDb2xvckdyb3VwKCk7CgogICAgUUNvbG9yR3JvdXAm
IG9wZXJhdG9yID0oY29uc3QgUUNvbG9yR3JvdXAmKTsKCgogICAgZW51bSBDb2xvclJvbGUgeyBG
b3JlZ3JvdW5kLCBCdXR0b24sIExpZ2h0LCBNaWRsaWdodCwgRGFyaywgTWlkLAogICAgICAgICAg
ICAgICAgICAgICBUZXh0LCBCcmlnaHRUZXh0LCBCdXR0b25UZXh0LCBCYXNlLCBCYWNrZ3JvdW5k
LCBTaGFkb3csCiAgICAgICAgICAgICAgICAgICAgIEhpZ2hsaWdodCwgSGlnaGxpZ2h0ZWRUZXh0
LAogICAgICAgICAgICAgICAgICAgICBOQ29sb3JSb2xlcyB9OwoKICAgIGNvbnN0IFFDb2xvciAm
Y29sb3IoIENvbG9yUm9sZSApIGNvbnN0OwogICAgY29uc3QgUUJydXNoICZicnVzaCggQ29sb3JS
b2xlICkgY29uc3Q7CiAgICB2b2lkIHNldENvbG9yKCBDb2xvclJvbGUsIGNvbnN0IFFDb2xvciAm
ICk7CiAgICB2b2lkIHNldEJydXNoKCBDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7CgogICAg
Y29uc3QgUUNvbG9yICZmb3JlZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gYnJbRm9yZWdyb3VuZF0u
Y29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZidXR0b24oKSBjb25zdCB7IHJldHVybiBicltC
dXR0b25dLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmbGlnaHQoKSBjb25zdCB7IHJldHVy
biBicltMaWdodF0uY29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZkYXJrKCkgY29uc3QgeyBy
ZXR1cm4gYnJbRGFya10uY29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZtaWQoKSBjb25zdCB7
IHJldHVybiBicltNaWRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmdGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGJyW1RleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIGJyW0Jhc2VdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYmFja2dy
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIGJyW0JhY2tncm91bmRdLmNvbG9yKCk7IH0KCiAgICBjb25z
dCBRQ29sb3IgJm1pZGxpZ2h0KCkgY29uc3QgeyByZXR1cm4gYnJbTWlkbGlnaHRdLmNvbG9yKCk7
IH0KICAgIGNvbnN0IFFDb2xvciAmYnJpZ2h0VGV4dCgpIGNvbnN0IHsgcmV0dXJuIGJyW0JyaWdo
dFRleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYnV0dG9uVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGJyW0J1dHRvblRleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmc2hhZG93
KCkgY29uc3QgeyByZXR1cm4gYnJbU2hhZG93XS5jb2xvcigpOyB9CiAgICBjb25zdCBRQ29sb3Ig
JmhpZ2hsaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJyW0hpZ2hsaWdodF0uY29sb3IoKTsgfQogICAg
Y29uc3QgUUNvbG9yICZoaWdobGlnaHRlZFRleHQoKSBjb25zdHtyZXR1cm4gYnJbSGlnaGxpZ2h0
ZWRUZXh0XS5jb2xvcigpOyB9CgogICAgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRQ29sb3JHcm91
cCAmZyApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRQ29sb3JHcm91cCAmZyAp
IGNvbnN0CiAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KGcpKTsgfQoKcHJpdmF0ZToKICAg
IFFCcnVzaCAqYnI7CiAgICBRQ29sb3JHcm91cFByaXZhdGUgKiBkOwoKICAgIGZyaWVuZCBjbGFz
cyBRUGFsZXR0ZTsKfTsKCgpjbGFzcyBRUGFsZXR0ZQp7CnB1YmxpYzoKICAgIFFQYWxldHRlKCk7
CiAgICBRUGFsZXR0ZSggY29uc3QgUUNvbG9yICZidXR0b24gKTsKICAgIFFQYWxldHRlKCBjb25z
dCBRQ29sb3IgJmJ1dHRvbiwgY29uc3QgUUNvbG9yICZiYWNrZ3JvdW5kICk7CiAgICBRUGFsZXR0
ZSggY29uc3QgUUNvbG9yR3JvdXAgJmFjdGl2ZSwgY29uc3QgUUNvbG9yR3JvdXAgJmRpc2FibGVk
LAogICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZpbmFjdGl2ZSApOwogICAgUVBhbGV0
dGUoIGNvbnN0IFFQYWxldHRlICYgKTsKICAgflFQYWxldHRlKCk7CiAgICBRUGFsZXR0ZSAmb3Bl
cmF0b3I9KCBjb25zdCBRUGFsZXR0ZSAmICk7CgogICAgZW51bSBDb2xvckdyb3VwIHsgTm9ybWFs
LCBEaXNhYmxlZCwgQWN0aXZlLCBJbmFjdGl2ZSwgTkNvbG9yR3JvdXBzIH07CgogICAgY29uc3Qg
UUNvbG9yICZjb2xvciggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6OkNvbG9yUm9sZSApIGNvbnN0
OwogICAgY29uc3QgUUJydXNoICZicnVzaCggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6OkNvbG9y
Um9sZSApIGNvbnN0OwogICAgdm9pZCBzZXRDb2xvciggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6
OkNvbG9yUm9sZSwgY29uc3QgUUNvbG9yICYgKTsKICAgIHZvaWQgc2V0QnJ1c2goIENvbG9yR3Jv
dXAsIFFDb2xvckdyb3VwOjpDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7CgogICAgdm9pZCBz
ZXRDb2xvciggUUNvbG9yR3JvdXA6OkNvbG9yUm9sZSwgY29uc3QgUUNvbG9yICYgKTsKICAgIHZv
aWQgc2V0QnJ1c2goIFFDb2xvckdyb3VwOjpDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7Cgog
ICAgUVBhbGV0dGUgY29weSgpIGNvbnN0OwoKICAgIGNvbnN0IFFDb2xvckdyb3VwICZhY3RpdmUo
KSBjb25zdCB7IHJldHVybiBkYXRhLT5hY3RpdmU7IH0KICAgIGNvbnN0IFFDb2xvckdyb3VwICZk
aXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPmRpc2FibGVkOyB9CiAgICBjb25zdCBRQ29s
b3JHcm91cCAmaW5hY3RpdmUoKSBjb25zdCB7IHJldHVybiBkYXRhLT5pbmFjdGl2ZTsgfQogICAg
Y29uc3QgUUNvbG9yR3JvdXAgJm5vcm1hbCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPm5vcm1hbDsg
fQoKICAgIHZvaWQgc2V0QWN0aXZlKCBjb25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNl
dERpc2FibGVkKCBjb25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNldEluYWN0aXZlKCBj
b25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNldE5vcm1hbCggY29uc3QgUUNvbG9yR3Jv
dXAgJiApOwoKICAgIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVBhbGV0dGUgJnAgKSBjb25zdDsK
ICAgIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUVBhbGV0dGUgJnAgKSBjb25zdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KHApKTsg
fQogICAgYm9vbCBpc0NvcHlPZiggY29uc3QgUVBhbGV0dGUgJiApOwoKICAgIGludCBzZXJpYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBkYXRhLT5zZXJfbm87IH0KCnByaXZhdGU6CiAgICB2b2lk
IGRldGFjaCgpOwogICAgUUJydXNoICZkaXJlY3RCcnVzaCggQ29sb3JHcm91cCwgUUNvbG9yR3Jv
dXA6OkNvbG9yUm9sZSApIGNvbnN0OwoKICAgIHN0cnVjdCBRUGFsRGF0YSA6IHB1YmxpYyBRU2hh
cmVkIHsKICAgICAgICBRQ29sb3JHcm91cCBub3JtYWw7CiAgICAgICAgUUNvbG9yR3JvdXAgZGlz
YWJsZWQ7CiAgICAgICAgUUNvbG9yR3JvdXAgYWN0aXZlOwogICAgICAgIGludCBzZXJfbm87CiAg
ICAgICAgUUNvbG9yR3JvdXAgaW5hY3RpdmU7CiAgICB9ICpkYXRhOwogICAgc3RhdGljIFFQYWxE
YXRhICpkZWZQYWxEYXRhOwogICAgc3RhdGljIHZvaWQgY2xlYW51cERlZlBhbCgpOwp9OwoKCgoK
CgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRQ29sb3JH
cm91cCAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0gJiwgUUNvbG9y
R3JvdXAgJiApOwoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25z
dCBRUGFsZXR0ZSAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0gJiwg
UVBhbGV0dGUgJiApOwojIDQ2ICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2VybmVsL3FjdXJz
b3IuaCIgMQojIDY2ICJrZXJuZWwvcWN1cnNvci5oIgpzdHJ1Y3QgUUN1cnNvckRhdGE7CgoKY2xh
c3MgUUN1cnNvcgp7CnB1YmxpYzoKICAgIFFDdXJzb3IoKTsKICAgIFFDdXJzb3IoIGludCBzaGFw
ZSApOwogICAgUUN1cnNvciggY29uc3QgUUJpdG1hcCAmYml0bWFwLCBjb25zdCBRQml0bWFwICZt
YXNrLAogICAgICAgICAgICAgaW50IGhvdFg9LTEsIGludCBob3RZPS0xICk7CiAgICBRQ3Vyc29y
KCBjb25zdCBRUGl4bWFwICZwaXhtYXAsCiAgICAgICAgICAgICBpbnQgaG90WD0tMSwgaW50IGhv
dFk9LTEgKTsKICAgIFFDdXJzb3IoIGNvbnN0IFFDdXJzb3IgJiApOwogICB+UUN1cnNvcigpOwog
ICAgUUN1cnNvciAmb3BlcmF0b3I9KCBjb25zdCBRQ3Vyc29yICYgKTsKCiAgICBpbnQgc2hhcGUo
KSBjb25zdDsKICAgIHZvaWQgc2V0U2hhcGUoIGludCApOwoKICAgIGNvbnN0IFFCaXRtYXAgKmJp
dG1hcCgpIGNvbnN0OwogICAgY29uc3QgUUJpdG1hcCAqbWFzaygpIGNvbnN0OwogICAgUVBvaW50
IGhvdFNwb3QoKSBjb25zdDsKCgoKCiAgICBIQU5ETEUgaGFuZGxlKCkgY29uc3Q7CgoKCgoKCiAg
ICBzdGF0aWMgUVBvaW50IHBvcygpOwogICAgc3RhdGljIHZvaWQgc2V0UG9zKCBpbnQgeCwgaW50
IHkgKTsKICAgIHN0YXRpYyB2b2lkIHNldFBvcyggY29uc3QgUVBvaW50ICYgKTsKCiAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICBzdGF0aWMgdm9pZCBjbGVhbnVwKCk7Cgpwcml2YXRl
OgogICAgdm9pZCBzZXRCaXRtYXAoIGNvbnN0IFFCaXRtYXAgJmJpdG1hcCwgY29uc3QgUUJpdG1h
cCAmbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhvdFgsIGludCBo
b3RZICk7CiAgICB2b2lkIHVwZGF0ZSgpIGNvbnN0OwogICAgUUN1cnNvckRhdGEgKmRhdGE7CiAg
ICBRQ3Vyc29yICpmaW5kX2N1cihpbnQpOwp9OwojIDEyMSAia2VybmVsL3FjdXJzb3IuaCIKZW51
bSBRQ3Vyc29yU2hhcGUgewogICAgQXJyb3dDdXJzb3IsIFVwQXJyb3dDdXJzb3IsIENyb3NzQ3Vy
c29yLCBXYWl0Q3Vyc29yLCBJYmVhbUN1cnNvciwKICAgIFNpemVWZXJDdXJzb3IsIFNpemVIb3JD
dXJzb3IsIFNpemVCRGlhZ0N1cnNvciwgU2l6ZUZEaWFnQ3Vyc29yLAogICAgU2l6ZUFsbEN1cnNv
ciwgQmxhbmtDdXJzb3IsIFNwbGl0VkN1cnNvciwgU3BsaXRIQ3Vyc29yLCBQb2ludGluZ0hhbmRD
dXJzb3IsCiAgICBGb3JiaWRkZW5DdXJzb3IsIExhc3RDdXJzb3IgPSBGb3JiaWRkZW5DdXJzb3Is
IEJpdG1hcEN1cnNvcj0yNCB9OwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRh
U3RyZWFtICYsIGNvbnN0IFFDdXJzb3IgJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFE
YXRhU3RyZWFtICYsIFFDdXJzb3IgJiApOwoKCgoKaW5saW5lIHZvaWQgUUN1cnNvcjo6c2V0UG9z
KCBjb25zdCBRUG9pbnQgJnAgKQp7CiAgICBzZXRQb3MoIHAueCgpLCBwLnkoKSApOwp9CiMgNDcg
Imtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJuZWwvcWZvbnQuaCIgMQojIDQ3ICJrZXJuZWwv
cWZvbnQuaCIKY2xhc3MgUVN0cmluZ0xpc3Q7CnN0cnVjdCBRRm9udERlZjsKc3RydWN0IFFGb250
RGF0YTsKY2xhc3MgUUZvbnRJbnRlcm5hbDsKY2xhc3MgUVJlbmRlcmVkRm9udDsKCmNsYXNzIFFG
b250CnsKcHVibGljOgogICAgZW51bSBDaGFyU2V0IHsgSVNPXzg4NTlfMSwgTGF0aW4xID0gSVNP
Xzg4NTlfMSwgQW55Q2hhclNldCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMiwgTGF0
aW4yID0gSVNPXzg4NTlfMiwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMywgTGF0aW4z
ID0gSVNPXzg4NTlfMywKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNCwgTGF0aW40ID0g
SVNPXzg4NTlfNCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNSwKICAgICAgICAgICAg
ICAgICAgICAgSVNPXzg4NTlfNiwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNywKICAg
ICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfOCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4
NTlfOSwgTGF0aW41ID0gSVNPXzg4NTlfOSwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlf
MTAsIExhdGluNiA9IElTT184ODU5XzEwLAogICAgICAgICAgICAgICAgICAgICBJU09fODg1OV8x
MSwgVElTNjIwID0gSVNPXzg4NTlfMTEsCiAgICAgICAgICAgICAgICAgICAgIElTT184ODU5XzEy
LAogICAgICAgICAgICAgICAgICAgICBJU09fODg1OV8xMywgTGF0aW43ID0gSVNPXzg4NTlfMTMs
CiAgICAgICAgICAgICAgICAgICAgIElTT184ODU5XzE0LCBMYXRpbjggPSBJU09fODg1OV8xNCwK
ICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMTUsIExhdGluOSA9IElTT184ODU5XzE1LAog
ICAgICAgICAgICAgICAgICAgICBLT0k4UiwKICAgICAgICAgICAgICAgICAgICAgU2V0X0phLCBT
ZXRfMSA9IFNldF9KYSwKICAgICAgICAgICAgICAgICAgICAgU2V0X0tvLAogICAgICAgICAgICAg
ICAgICAgICBTZXRfVGhfVEgsCiAgICAgICAgICAgICAgICAgICAgIFNldF9aaCwKICAgICAgICAg
ICAgICAgICAgICAgU2V0X1poX1RXLAogICAgICAgICAgICAgICAgICAgICBTZXRfTiA9IFNldF9a
aF9UVywKICAgICAgICAgICAgICAgICAgICAgVW5pY29kZSwKCgoKCgoKICAgICAgICAgICAgICAg
ICAgICAgU2V0X0dCSywKICAgICAgICAgICAgICAgICAgICAgU2V0X0JpZzUsCgogICAgICAgICAg
ICAgICAgICAgICBUU0NJSSwKICAgICAgICAgICAgICAgICAgICAgS09JOFUsCiAgICAgICAgICAg
ICAgICAgICAgIENQMTI1MSwKICAgICAgICAgICAgICAgICAgICAgUFQxNTQsCgoKCgogICAgICAg
ICAgICAgICAgICAgICBKSVNfWF8wMjAxID0gMHhhMCwKCiAgICAgICAgICAgICAgICAgICAgIEpJ
U19YXzAyMDggPSAweGMwLCBFbmMxNiA9IEpJU19YXzAyMDgsCiAgICAgICAgICAgICAgICAgICAg
IEtTQ181NjAxLAogICAgICAgICAgICAgICAgICAgICBHQl8yMzEyLAogICAgICAgICAgICAgICAg
ICAgICBCaWc1CiAgICB9OwogICAgZW51bSBTdHlsZUhpbnQgeyBIZWx2ZXRpY2EsIFRpbWVzLCBD
b3VyaWVyLCBPbGRFbmdsaXNoLCBTeXN0ZW0sIEFueVN0eWxlLAogICAgICAgICAgICAgICAgICAg
ICBTYW5zU2VyaWYgPSBIZWx2ZXRpY2EsCiAgICAgICAgICAgICAgICAgICAgIFNlcmlmID0gVGlt
ZXMsCiAgICAgICAgICAgICAgICAgICAgIFR5cGVXcml0ZXIgPSBDb3VyaWVyLAogICAgICAgICAg
ICAgICAgICAgICBEZWNvcmF0aXZlID0gT2xkRW5nbGlzaH07CiAgICBlbnVtIFN0eWxlU3RyYXRl
Z3kgeyBQcmVmZXJEZWZhdWx0ID0gMHgwMDAxLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBy
ZWZlckJpdG1hcCA9IDB4MDAwMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVmZXJEZXZp
Y2UgPSAweDAwMDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmVyT3V0bGluZSA9IDB4
MDAwOCwKICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU91dGxpbmUgPSAweDAwMTAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmVyTWF0Y2ggPSAweDAwMjAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJlZmVyUXVhbGl0eSA9IDB4MDA0MCB9OwogICAgZW51bSBXZWlnaHQg
eyBMaWdodCA9IDI1LCBOb3JtYWwgPSA1MCwgRGVtaUJvbGQgPSA2MywKICAgICAgICAgICAgICAg
ICAgICAgQm9sZCA9IDc1LCBCbGFjayA9IDg3IH07CiAgICBRRm9udCgpOwogICAgUUZvbnQoIGNv
bnN0IFFTdHJpbmcgJmZhbWlseSwgaW50IHBvaW50U2l6ZSA9IDEyLAogICAgICAgICAgIGludCB3
ZWlnaHQgPSBOb3JtYWwsIGJvb2wgaXRhbGljID0gRkFMU0UgKTsKICAgIFFGb250KCBjb25zdCBR
U3RyaW5nICZmYW1pbHksIGludCBwb2ludFNpemUsCiAgICAgICAgICAgaW50IHdlaWdodCwgYm9v
bCBpdGFsaWMsIENoYXJTZXQgY2hhclNldCApOwogICAgUUZvbnQoIGNvbnN0IFFGb250ICYgKTsK
ICAgIH5RRm9udCgpOwogICAgUUZvbnQgJm9wZXJhdG9yPSggY29uc3QgUUZvbnQgJiApOwoKICAg
IFFTdHJpbmcgZmFtaWx5KCkgY29uc3Q7CiAgICB2b2lkIHNldEZhbWlseSggY29uc3QgUVN0cmlu
ZyAmKTsKICAgIGludCBwb2ludFNpemUoKSBjb25zdDsKICAgIGZsb2F0IHBvaW50U2l6ZUZsb2F0
KCkgY29uc3Q7CiAgICB2b2lkIHNldFBvaW50U2l6ZSggaW50ICk7CiAgICB2b2lkIHNldFBvaW50
U2l6ZUZsb2F0KCBmbG9hdCApOwogICAgaW50IHBpeGVsU2l6ZSgpIGNvbnN0OwogICAgdm9pZCBz
ZXRQaXhlbFNpemUoIGludCApOwogICAgdm9pZCBzZXRQaXhlbFNpemVGbG9hdCggZmxvYXQgKTsK
ICAgIGludCB3ZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2VpZ2h0KCBpbnQgKTsKICAgIGJv
b2wgYm9sZCgpIGNvbnN0OwogICAgdm9pZCBzZXRCb2xkKCBib29sICk7CiAgICBib29sIGl0YWxp
YygpIGNvbnN0OwogICAgdm9pZCBzZXRJdGFsaWMoIGJvb2wgKTsKICAgIGJvb2wgdW5kZXJsaW5l
KCkgY29uc3Q7CiAgICB2b2lkIHNldFVuZGVybGluZSggYm9vbCApOwogICAgYm9vbCBzdHJpa2VP
dXQoKSBjb25zdDsKICAgIHZvaWQgc2V0U3RyaWtlT3V0KCBib29sICk7CiAgICBib29sIGZpeGVk
UGl0Y2goKSBjb25zdDsKICAgIHZvaWQgc2V0Rml4ZWRQaXRjaCggYm9vbCApOwogICAgU3R5bGVI
aW50IHN0eWxlSGludCgpIGNvbnN0OwogICAgdm9pZCBzZXRTdHlsZUhpbnQoIFN0eWxlSGludCAp
OwogICAgU3R5bGVTdHJhdGVneSBzdHlsZVN0cmF0ZWd5KCkgY29uc3Q7CiAgICB2b2lkIHNldFN0
eWxlSGludCggU3R5bGVIaW50LCBTdHlsZVN0cmF0ZWd5ICk7CiAgICBDaGFyU2V0IGNoYXJTZXQo
KSBjb25zdDsKICAgIHZvaWQgc2V0Q2hhclNldCggQ2hhclNldCApOwoKICAgIHN0YXRpYyBDaGFy
U2V0IGNoYXJTZXRGb3JMb2NhbGUoKTsKCiAgICBib29sIHJhd01vZGUoKSBjb25zdDsKICAgIHZv
aWQgc2V0UmF3TW9kZSggYm9vbCApOwoKICAgIGJvb2wgZXhhY3RNYXRjaCgpIGNvbnN0OwoKICAg
IGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUUZvbnQgJiApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRv
ciE9KCBjb25zdCBRRm9udCAmICkgY29uc3Q7CiAgICBib29sIGlzQ29weU9mKCBjb25zdCBRRm9u
dCAmICkgY29uc3Q7CgoKCgoKCiAgICBIQU5ETEUgaGFuZGxlKCkgY29uc3Q7CgoKCgogICAgdm9p
ZCBzZXRSYXdOYW1lKCBjb25zdCBRU3RyaW5nICYgKTsKICAgIFFTdHJpbmcgcmF3TmFtZSgpIGNv
bnN0OwoKICAgIFFTdHJpbmcga2V5KCkgY29uc3Q7CgogICAgc3RhdGljIFFTdHJpbmcgZW5jb2Rp
bmdOYW1lKCBDaGFyU2V0ICk7CgogICAgc3RhdGljIFFGb250IGRlZmF1bHRGb250KCk7CiAgICBz
dGF0aWMgdm9pZCBzZXREZWZhdWx0Rm9udCggY29uc3QgUUZvbnQgJiApOwoKICAgIHN0YXRpYyBR
U3RyaW5nIHN1YnN0aXR1dGUoIGNvbnN0IFFTdHJpbmcgJmZhbWlseU5hbWUgKTsKICAgIHN0YXRp
YyB2b2lkIGluc2VydFN1YnN0aXR1dGlvbiggY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcg
Jik7CiAgICBzdGF0aWMgdm9pZCByZW1vdmVTdWJzdGl0dXRpb24oIGNvbnN0IFFTdHJpbmcgJik7
CiAgICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3Vic3RpdHV0aW9ucygpOwoKICAgIHN0YXRpYyB2b2lk
IGluaXRpYWxpemUoKTsKICAgIHN0YXRpYyB2b2lkIGxvY2FsZV9pbml0KCk7CiAgICBzdGF0aWMg
dm9pZCBjbGVhbnVwKCk7CiAgICBzdGF0aWMgdm9pZCBjYWNoZVN0YXRpc3RpY3MoKTsKCgoKCgpw
cm90ZWN0ZWQ6CiAgICBib29sIGRpcnR5KCkgY29uc3Q7CgogICAgUVN0cmluZyBkZWZhdWx0RmFt
aWx5KCkgY29uc3Q7CiAgICBRU3RyaW5nIGxhc3RSZXNvcnRGYW1pbHkoKSBjb25zdDsKICAgIFFT
dHJpbmcgbGFzdFJlc29ydEZvbnQoKSBjb25zdDsKICAgIGludCBkZWNpUG9pbnRTaXplKCkgY29u
c3Q7Cgpwcml2YXRlOgogICAgUUZvbnQoIFFGb250RGF0YSAqICk7CiAgICB2b2lkIGluaXQoKTsK
ICAgIHZvaWQgZGV0YWNoKCk7CiAgICB2b2lkIGluaXRGb250SW5mbygpIGNvbnN0OwogICAgdm9p
ZCBsb2FkKCkgY29uc3Q7CiMgMjIxICJrZXJuZWwvcWZvbnQuaCIKICAgIGZyaWVuZCBjbGFzcyBR
Rm9udF9Qcml2YXRlOwogICAgZnJpZW5kIGNsYXNzIFFGb250SW50ZXJuYWw7CiAgICBmcmllbmQg
Y2xhc3MgUUZvbnRNZXRyaWNzOwogICAgZnJpZW5kIGNsYXNzIFFGb250SW5mbzsKICAgIGZyaWVu
ZCBjbGFzcyBRUGFpbnRlcjsKCiAgICBmcmllbmQgdm9pZCAqIHF0X2Z0X2ZvbnQgKGNvbnN0IFFG
b250ICpmKTsKCgoKICAgIGZyaWVuZCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJl
YW0gJiwgY29uc3QgUUZvbnQgJiApOwogICAgZnJpZW5kIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+
KCBRRGF0YVN0cmVhbSAmLCBRRm9udCAmICk7CgogICAgUUZvbnREYXRhICpkOwogICAgc3RhdGlj
IENoYXJTZXQgZGVmYXVsdENoYXJTZXQ7Cn07CgppbmxpbmUgYm9vbCBRRm9udDo6Ym9sZCgpIGNv
bnN0CnsgcmV0dXJuIHdlaWdodCgpID4gTm9ybWFsOyB9CgppbmxpbmUgdm9pZCBRRm9udDo6c2V0
Qm9sZCggYm9vbCBlbmFibGUgKQp7IHNldFdlaWdodCggZW5hYmxlID8gQm9sZCA6IE5vcm1hbCAp
OyB9CgoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0
IFFGb250ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRRm9u
dCAmICk7CiMgNDggImtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJuZWwvcWZvbnRtZXRyaWNz
LmgiIDEKIyA0NiAia2VybmVsL3Fmb250bWV0cmljcy5oIgpjbGFzcyBRVGV4dENvZGVjOwoKCmNs
YXNzIFFGb250TWV0cmljcwp7CnB1YmxpYzoKICAgIFFGb250TWV0cmljcyggY29uc3QgUUZvbnQg
JiApOwogICAgUUZvbnRNZXRyaWNzKCBjb25zdCBRRm9udE1ldHJpY3MgJiApOwogICB+UUZvbnRN
ZXRyaWNzKCk7CgogICAgUUZvbnRNZXRyaWNzICZvcGVyYXRvcj0oIGNvbnN0IFFGb250TWV0cmlj
cyAmICk7CgogICAgaW50IGFzY2VudCgpIGNvbnN0OwogICAgaW50IGRlc2NlbnQoKSBjb25zdDsK
ICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIGludCBsZWFkaW5nKCkgY29uc3Q7CiAgICBpbnQg
bGluZVNwYWNpbmcoKSBjb25zdDsKICAgIGludCBtaW5MZWZ0QmVhcmluZygpIGNvbnN0OwogICAg
aW50IG1pblJpZ2h0QmVhcmluZygpIGNvbnN0OwogICAgaW50IG1heFdpZHRoKCkgY29uc3Q7Cgog
ICAgYm9vbCBpbkZvbnQoUUNoYXIpIGNvbnN0OwoKICAgIGludCBsZWZ0QmVhcmluZyhRQ2hhcikg
Y29uc3Q7CiAgICBpbnQgcmlnaHRCZWFyaW5nKFFDaGFyKSBjb25zdDsKICAgIGludCB3aWR0aCgg
Y29uc3QgUVN0cmluZyAmLCBpbnQgbGVuID0gLTEgKSBjb25zdDsKICAgIGludCB3aWR0aCggUUNo
YXIgKSBjb25zdDsKICAgIGludCB3aWR0aCggY2hhciBjICkgY29uc3QgeyByZXR1cm4gd2lkdGgo
IChRQ2hhcikgYyApOyB9CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIGNvbnN0IFFTdHJpbmcgJiwg
aW50IGxlbiA9IC0xICkgY29uc3Q7CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIFFDaGFyICkgY29u
c3Q7CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBp
bnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIHN0
ciwgaW50IGxlbj0tMSwgaW50IHRhYnN0b3BzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqdGFiYXJyYXk9MCwgY2hhciAqKmludGVybj0wICkgY29uc3Q7CiAgICBRU2l6ZSBz
aXplKCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nJiBzdHIs
IGludCBsZW49LTEsIGludCB0YWJzdG9wcz0wLAogICAgICAgICAgICAgICAgICAgICAgaW50ICp0
YWJhcnJheT0wLCBjaGFyICoqaW50ZXJuPTAgKSBjb25zdDsKCiAgICBpbnQgdW5kZXJsaW5lUG9z
KCkgY29uc3Q7CiAgICBpbnQgc3RyaWtlT3V0UG9zKCkgY29uc3Q7CiAgICBpbnQgbGluZVdpZHRo
KCkgY29uc3Q7Cgpwcml2YXRlOgogICAgUUZvbnRNZXRyaWNzKCBjb25zdCBRUGFpbnRlciAqICk7
CiAgICBzdGF0aWMgdm9pZCByZXNldCggY29uc3QgUVBhaW50ZXIgKiApOwogICAgY29uc3QgUUZv
bnREZWYgKnNwZWMoKSBjb25zdDsKCgoKCgogICAgdm9pZCAqZm9udFN0cnVjdCgpIGNvbnN0Owog
ICAgdm9pZCAqZm9udFNldCgpIGNvbnN0OwogICAgY29uc3QgUVRleHRDb2RlYyAqbWFwcGVyKCkg
Y29uc3Q7CiAgICBpbnQgcHJpbnRlckFkanVzdGVkKGludCkgY29uc3Q7CgoKCgogICAgZnJpZW5k
IGNsYXNzIFFXaWRnZXQ7CiAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXI7CgogICAgUUZvbnRJbnRl
cm5hbCAqZmluOwogICAgUVBhaW50ZXIgKnBhaW50ZXI7CiAgICBpbnQgZmxhZ3M7CgogICAgYm9v
bCB1bmRlcmxpbmVGbGFnKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzICYgMHgxKSAhPSAwOyB9CiAg
ICBib29sIHN0cmlrZU91dEZsYWcoKSBjb25zdCB7IHJldHVybiAoZmxhZ3MgJiAweDIpICE9IDA7
IH0KICAgIHZvaWQgc2V0VW5kZXJsaW5lRmxhZygpIHsgZmxhZ3MgfD0gMHgxOyB9CiAgICB2b2lk
IHNldFN0cmlrZU91dEZsYWcoKSB7IGZsYWdzIHw9IDB4MjsgfQp9OwojIDQ5ICJrZXJuZWwvcXdp
ZGdldC5oIiAyCiMgMSAia2VybmVsL3Fmb250aW5mby5oIiAxCiMgNDYgImtlcm5lbC9xZm9udGlu
Zm8uaCIKY2xhc3MgUUZvbnRJbmZvCnsKcHVibGljOgogICAgUUZvbnRJbmZvKCBjb25zdCBRRm9u
dCAmICk7CiAgICBRRm9udEluZm8oIGNvbnN0IFFGb250SW5mbyAmICk7CiAgIH5RRm9udEluZm8o
KTsKCiAgICBRRm9udEluZm8gJm9wZXJhdG9yPSggY29uc3QgUUZvbnRJbmZvICYgKTsKCiAgICBR
U3RyaW5nIGZhbWlseSgpIGNvbnN0OwogICAgaW50IHBvaW50U2l6ZSgpIGNvbnN0OwogICAgYm9v
bCBpdGFsaWMoKSBjb25zdDsKICAgIGludCB3ZWlnaHQoKSBjb25zdDsKICAgIGJvb2wgYm9sZCgp
IGNvbnN0OwogICAgYm9vbCB1bmRlcmxpbmUoKSBjb25zdDsKICAgIGJvb2wgc3RyaWtlT3V0KCkg
Y29uc3Q7CiAgICBib29sIGZpeGVkUGl0Y2goKSBjb25zdDsKICAgIFFGb250OjpTdHlsZUhpbnQg
c3R5bGVIaW50KCkgY29uc3Q7CiAgICBRRm9udDo6Q2hhclNldCBjaGFyU2V0KCkgY29uc3Q7CiAg
ICBib29sIHJhd01vZGUoKSBjb25zdDsKCiAgICBib29sIGV4YWN0TWF0Y2goKSBjb25zdDsKCgog
ICAgY29uc3QgUUZvbnQgJmZvbnQoKSBjb25zdDsKCgpwcml2YXRlOgogICAgUUZvbnRJbmZvKCBj
b25zdCBRUGFpbnRlciAqICk7CiAgICBzdGF0aWMgdm9pZCByZXNldCggY29uc3QgUVBhaW50ZXIg
KiApOwogICAgY29uc3QgUUZvbnREZWYgKnNwZWMoKSBjb25zdDsKCiAgICBRRm9udEludGVybmFs
ICpmaW47CiAgICBRUGFpbnRlciAqcGFpbnRlcjsKICAgIGludCBmbGFnczsKCiAgICBib29sIHVu
ZGVybGluZUZsYWcoKSBjb25zdCB7IHJldHVybiAoZmxhZ3MgJiAweDEpICE9IDA7IH0KICAgIGJv
b2wgc3RyaWtlT3V0RmxhZygpIGNvbnN0IHsgcmV0dXJuIChmbGFncyAmIDB4MikgIT0gMDsgfQog
ICAgYm9vbCBleGFjdE1hdGNoRmxhZygpIGNvbnN0IHsgcmV0dXJuIChmbGFncyAmIDB4NCkgIT0g
MDsgfQogICAgdm9pZCBzZXRVbmRlcmxpbmVGbGFnKCkgeyBmbGFncyB8PSAweDE7IH0KICAgIHZv
aWQgc2V0U3RyaWtlT3V0RmxhZygpIHsgZmxhZ3MgfD0gMHgyOyB9CiAgICB2b2lkIHNldEV4YWN0
TWF0Y2hGbGFnKCkgeyBmbGFncyB8PSAweDQ7IH0KCiAgICBmcmllbmQgY2xhc3MgUVdpZGdldDsK
ICAgIGZyaWVuZCBjbGFzcyBRUGFpbnRlcjsKfTsKCgppbmxpbmUgYm9vbCBRRm9udEluZm86OmJv
bGQoKSBjb25zdAp7IHJldHVybiB3ZWlnaHQoKSA+IFFGb250OjpOb3JtYWw7IH0KIyA1MCAia2Vy
bmVsL3F3aWRnZXQuaCIgMgojIDEgImtlcm5lbC9xc3R5bGUuaCIgMQojIDQ2ICJrZXJuZWwvcXN0
eWxlLmgiCmNsYXNzIFFCdXR0b247CmNsYXNzIFFQdXNoQnV0dG9uOwpjbGFzcyBRU2Nyb2xsQmFy
OwpjbGFzcyBRVGFiQmFyOwpjbGFzcyBRVGFiOwpjbGFzcyBRUG9wdXBNZW51OwpjbGFzcyBRTWVu
dUl0ZW07CmNsYXNzIFFUb29sQnV0dG9uOwoKY2xhc3MgUVN0eWxlOiBwdWJsaWMgUU9iamVjdAp7
CiAgICBwdWJsaWM6IFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljTWV0YU9iamVjdCgpOyB9IGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OyBzdGF0aWMg
UU1ldGFPYmplY3QqIHN0YXRpY01ldGFPYmplY3QoKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3Qg
Y2hhciopOyBzdGF0aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOyBwcm90
ZWN0ZWQ6IHZvaWQgaW5pdE1ldGFPYmplY3QoKTsgcHJpdmF0ZTogc3RhdGljIFFNZXRhT2JqZWN0
ICptZXRhT2JqOwogICAgR1VJU3R5bGUgZ3M7Cgpwcml2YXRlOgogICAgUVN0eWxlKEdVSVN0eWxl
KTsKICAgIFFTdHlsZSgpOwogICAgZnJpZW5kIGNsYXNzIFFDb21tb25TdHlsZTsKCnB1YmxpYzoK
ICAgIHZpcnR1YWwgflFTdHlsZSgpOwoKCiAgICBvcGVyYXRvciBHVUlTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGdzOyB9CiAgICBpbnQgb3BlcmF0b3I9PShHVUlTdHlsZSBzKSBjb25zdCB7IHJldHVy
biBncz09czsgfQogICAgaW50IG9wZXJhdG9yIT0oR1VJU3R5bGUgcykgY29uc3QgeyByZXR1cm4g
Z3MhPXM7IH0KCgogICAgR1VJU3R5bGUgZ3VpU3R5bGUoKSBjb25zdCB7IHJldHVybiBnczsgfQoK
CgogICAgdmlydHVhbCB2b2lkIHBvbGlzaCggUVdpZGdldCogKTsKICAgIHZpcnR1YWwgdm9pZCB1
blBvbGlzaCggUVdpZGdldCogKTsKCiAgICB2aXJ0dWFsIHZvaWQgcG9saXNoKCBRQXBwbGljYXRp
b24qKTsKICAgIHZpcnR1YWwgdm9pZCB1blBvbGlzaCggUUFwcGxpY2F0aW9uKik7CgogICAgdmly
dHVhbCB2b2lkIHBvbGlzaCggUVBhbGV0dGUmKTsKCiAgICB2aXJ0dWFsIFFSZWN0IGl0ZW1SZWN0
KCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzLCBib29sIGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UVBpeG1hcCAqcGl4bWFwLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIHRleHQs
IGludCBsZW49LTEgKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0l0ZW0oIFFQYWludGVyICpwLCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3Ms
IGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUVBpeG1hcCAqcGl4bWFwLCBjb25zdCBRU3RyaW5nJiB0ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbGVuPS0xLCBjb25zdCBRQ29sb3IqIHBlbkNvbG9yID0gMCApOwoK
CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NlcGFyYXRvciggUVBhaW50ZXIgKnAsIGludCB4MSwgaW50
IHkxLCBpbnQgeDIsIGludCB5MiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3Jv
dXAgJmcsIGJvb2wgc3Vua2VuID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVX
aWR0aCA9IDEsIGludCBtaWRMaW5lV2lkdGggPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUUNvbG9yICYsIGludCBsaW5lV2lkdGggPSAxLAogICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFCcnVzaCAqZmlsbCA9IDAgKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
Y3RTdHJvbmcoIFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAgJiwgYm9vbCBzdW5rZW49RkFMU0UsCiAg
ICAgICAgICAgICAgICAgICAgIGludCBsaW5lV2lkdGggPSAxLCBpbnQgbWlkTGluZVdpZHRoID0g
MCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUJydXNoICpmaWxsID0gMCApOwoKICAgIHZp
cnR1YWwgdm9pZCBkcmF3QnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywg
aW50IGgsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIHN1
bmtlbiA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZpbGwgPSAw
ICkgPSAwOwoKICAgIHZpcnR1YWwgUVJlY3QgYnV0dG9uUmVjdCggaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGgpOwoKICAgIHZpcnR1YWwgdm9pZCBkcmF3QnV0dG9uTWFzayggUVBhaW50ZXIgKnAs
IGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0JldmVs
QnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIHN1bmtlbiA9IEZBTFNFLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZpbGwgPSAwICkgPSAwOwoKICAgIFFS
ZWN0IGJldmVsQnV0dG9uUmVjdCggaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpOwoKICAgIHZp
cnR1YWwgdm9pZCBkcmF3VG9vbEJ1dHRvbiggUVBhaW50ZXIgKnAsIGludCB4LCBpbnQgeSwgaW50
IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywgYm9v
bCBzdW5rZW4gPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUJydXNoICpmaWxs
ID0gMCApOwogICAgdm9pZCBkcmF3VG9vbEJ1dHRvbiggUVRvb2xCdXR0b24qIGJ0biwgUVBhaW50
ZXIgKnApOwoKICAgIFFSZWN0IHRvb2xCdXR0b25SZWN0KCBpbnQgeCwgaW50IHksIGludCB3LCBp
bnQgaCk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdQYW5lbCggUVBhaW50ZXIgKnAsIGludCB4LCBp
bnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3Vw
ICYsIGJvb2wgc3Vua2VuPUZBTFNFLAogICAgICAgICAgICAgICAgICAgIGludCBsaW5lV2lkdGgg
PSAxLCBjb25zdCBRQnJ1c2ggKmZpbGwgPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdQb3B1
cFBhbmVsKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICYsIGludCBsaW5lV2lk
dGggPSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZp
bGwgPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdBcnJvdyggUVBhaW50ZXIgKnAsIFF0OjpB
cnJvd1R5cGUgdHlwZSwgYm9vbCBkb3duLAogICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50
IHksIGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAg
JmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgUUJydXNoICpmaWxsID0gMCApID0gMDsKCgogICAgdmly
dHVhbCBRU2l6ZSBleGNsdXNpdmVJbmRpY2F0b3JTaXplKCkgY29uc3QgPSAwOwogICAgdmlydHVh
bCB2b2lkIGRyYXdFeGNsdXNpdmVJbmRpY2F0b3IoIFFQYWludGVyKiBwLCBpbnQgeCwgaW50IHks
IGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywg
Ym9vbCBvbiwgYm9vbCBkb3duID0gRkFMU0UsIGJvb2wgZW5hYmxlZCA9IFRSVUUgKSA9IDA7CiAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0V4Y2x1c2l2ZUluZGljYXRvck1hc2soIFFQYWludGVyICpwLCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgYm9vbCBvbik7CgoKICAgIHZpcnR1YWwgUVNpemUg
aW5kaWNhdG9yU2l6ZSgpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3SW5kaWNhdG9y
KCBRUGFpbnRlciogcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGNvbnN0IFFDb2xvckdy
b3VwICZnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwgYm9vbCBk
b3duID0gRkFMU0UsIGJvb2wgZW5hYmxlZCA9IFRSVUUgKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0luZGljYXRvck1hc2soIFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQg
aCwgaW50IHN0YXRlKTsKCgoKICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9jdXNSZWN0KCBRUGFpbnRl
ciosIGNvbnN0IFFSZWN0ICYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UUNvbG9yR3JvdXAgJiwgY29uc3QgUUNvbG9yKiBiZyA9IDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCA9IEZBTFNFICkgPSAwOwoKCgoKCiAgICB2aXJ0dWFsIHZvaWQgZHJh
d0NvbWJvQnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywgYm9v
bCBzdW5rZW4gPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZWRpdGFibGUgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZW5hYmxlZCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR
QnJ1c2ggKmZpbGwgPSAwICkgPSAwOwogICAgdmlydHVhbCBRUmVjdCBjb21ib0J1dHRvblJlY3Qo
IGludCB4LCBpbnQgeSwKICAgICAgICAgICAgICAgICAgICBpbnQgdywgaW50IGgpID0gMDsKICAg
IHZpcnR1YWwgUVJlY3QgY29tYm9CdXR0b25Gb2N1c1JlY3QoIGludCB4LCBpbnQgeSwKICAgICAg
ICAgICAgICAgICAgICBpbnQgdywgaW50IGgpID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0Nv
bWJvQnV0dG9uTWFzayggUVBhaW50ZXIgKnAsIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKSA9
IDA7CgoKICAgIHZpcnR1YWwgdm9pZCBkcmF3UHVzaEJ1dHRvbiggUVB1c2hCdXR0b24qIGJ0biwg
UVBhaW50ZXIgKnApID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd1B1c2hCdXR0b25MYWJlbCgg
UVB1c2hCdXR0b24qIGJ0biwgUVBhaW50ZXIgKnApID0gMDsKICAgIFFSZWN0IHB1c2hCdXR0b25D
b250ZW50c1JlY3QoIFFQdXNoQnV0dG9uKiBidG4gKTsKICAgIGludCBtZW51QnV0dG9uSW5kaWNh
dG9yV2lkdGgoIGludCBoICk7CiAgICB2aXJ0dWFsIHZvaWQgZ2V0QnV0dG9uU2hpZnQoIGludCAm
eCwgaW50ICZ5KSA9IDA7CgoKICAgIHZpcnR1YWwgaW50IGRlZmF1bHRGcmFtZVdpZHRoKCkgY29u
c3QgPSAwOwoKCiAgICB2aXJ0dWFsIHZvaWQgdGFiYmFyTWV0cmljcyggY29uc3QgUVRhYkJhcios
CiAgICAgICAgICAgICAgICAgICAgaW50JiwgaW50JiwgaW50JiApID0gMDsKICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGFiKCBRUGFpbnRlciosIGNvbnN0IFFUYWJCYXIqLCBRVGFiKiwgYm9vbCBzZWxl
Y3RlZCApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3VGFiTWFzayggUVBhaW50ZXIqLCBjb25z
dCBRVGFiQmFyKiwgUVRhYiosIGJvb2wgc2VsZWN0ZWQgKSA9IDA7CgoKICAgIGVudW0gU2Nyb2xs
Q29udHJvbCB7IEFkZExpbmUgPSAweDEgLCBTdWJMaW5lID0gMHgyICwgQWRkUGFnZSA9IDB4NCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIFN1YlBhZ2UgPSAweDggLCBGaXJzdCA9IDB4MTAsIExh
c3QgPSAweDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgU2xpZGVyID0gMHg0MCwgTm9TY3Jv
bGwgPSAweDgwIH07CgogICAgdmlydHVhbCB2b2lkIHNjcm9sbEJhck1ldHJpY3MoIGNvbnN0IFFT
Y3JvbGxCYXIqLAogICAgICAgICAgICAgICAgICAgIGludCYsIGludCYsIGludCYsIGludCYpID0g
MDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3U2Nyb2xsQmFyQ29udHJvbHMoIFFQYWludGVyKiwgY29u
c3QgUVNjcm9sbEJhciosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2xpZGVyU3RhcnQsIHVpbnQgY29udHJvbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50IGFjdGl2ZUNvbnRyb2wgKSA9IDA7CiAgICB2aXJ0dWFsIFNjcm9s
bENvbnRyb2wgc2Nyb2xsQmFyUG9pbnRPdmVyKCBjb25zdCBRU2Nyb2xsQmFyKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzbGlkZXJTdGFydCwgY29uc3QgUVBv
aW50JiApID0gMDsKCgogICAgdmlydHVhbCBpbnQgc2xpZGVyTGVuZ3RoKCkgY29uc3QgPSAwOwog
ICAgdmlydHVhbCB2b2lkIGRyYXdTbGlkZXIoIFFQYWludGVyICpwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9yaWVudGF0aW9uLCBib29sIHRpY2tBYm92ZSwgYm9vbCB0aWNrQmVsb3cpID0gMDsK
CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NsaWRlck1hc2soIFFQYWludGVyICpwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZW50YXRpb24sIGJvb2wgdGlja0Fib3ZlLCBi
b29sIHRpY2tCZWxvdykgPSAwOwogICAgdmlydHVhbCB2b2lkIGRyYXdTbGlkZXJHcm9vdmUoIFFQ
YWludGVyICpwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQg
eSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFFDb2xvckdyb3VwJiBnLCBRQ09PUkQgYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPcmllbnRhdGlvbiApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3U2xpZGVyR3Jvb3Zl
TWFzayggUVBhaW50ZXIgKnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRQ09PUkQgYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3JpZW50YXRpb24gKSA9IDA7CiAgICB2aXJ0dWFsIGludCBtYXhpbXVtU2xpZGVyRHJhZ0Rp
c3RhbmNlKCkgY29uc3QgPSAwOwoKICAgIHZpcnR1YWwgaW50IHNwbGl0dGVyV2lkdGgoKSBjb25z
dCA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NwbGl0dGVyKCBRUGFpbnRlciAqcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcmllbnRhdGlvbikgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCBkcmF3
Q2hlY2tNYXJrKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAgJmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3QsIGJvb2wgZGlzICkgPSAwOwogICAgdmly
dHVhbCB2b2lkIHBvbGlzaFBvcHVwTWVudSggUVBvcHVwTWVudSogKSA9IDA7CgogICAgdmlydHVh
bCBpbnQgZXh0cmFQb3B1cE1lbnVJdGVtV2lkdGgoIGJvb2wgY2hlY2thYmxlLCBpbnQgbWF4cG13
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZW51SXRlbSogbWksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUZvbnRNZXRyaWNzJiBmbSApID0gMDsKICAg
IHZpcnR1YWwgaW50IHBvcHVwU3VibWVudUluZGljYXRvcldpZHRoKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFFGb250TWV0cmljcyYgZm0gKSA9IDA7CiAgICB2aXJ0dWFs
IGludCBwb3B1cE1lbnVJdGVtSGVpZ2h0KCBib29sIGNoZWNrYWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTWVudUl0ZW0qIG1pLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFGb250TWV0cmljcyYgZm0gKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BvcHVwTWVudUl0ZW0oIFFQYWludGVyKiBwLCBib29sIGNoZWNrYWJsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heHBtdywgaW50IHRhYiwgUU1lbnVJdGVtKiBt
aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhbGV0dGUmIHBh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3QsIGJvb2wgZW5h
YmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBp
bnQgdywgaW50IGgpID0gMDsKICAgIHZvaWQgZHJhd01lbnVCYXJJdGVtKCBRUGFpbnRlciogcCwg
aW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFFNZW51SXRlbSogbWksIFFDb2xvckdyb3VwJiBnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGVuYWJsZWQsIGJvb2wgYWN0aXZlICk7CgoKICAgIFFTaXpl
IHNjcm9sbEJhckV4dGVudCgpOwogICAgaW50IGJ1dHRvbkRlZmF1bHRJbmRpY2F0b3JXaWR0aCgp
IGNvbnN0OwogICAgaW50IGJ1dHRvbk1hcmdpbigpIGNvbnN0OwogICAgaW50IHRvb2xCYXJIYW5k
bGVFeHRlbnQoKSBjb25zdDsKICAgIGludCB0b29sQmFySGFuZGxlRXh0ZW5kKCkgY29uc3Q7CiAg
ICBpbnQgc2xpZGVyVGhpY2tuZXNzKCkgY29uc3QgOwogICAgdm9pZCBkcmF3VG9vbEJhckhhbmRs
ZSggUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0ICZyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXQ6Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBoaWdobGlnaHQsIGNvbnN0IFFDb2xvckdyb3VwICZjZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZHJhd0JvcmRlciA9IEZBTFNFICk7Cgpwcm90ZWN0ZWQ6CiAgICB2
b2lkIHNldFNjcm9sbEJhckV4dGVudCggaW50IHcsIGludCBoPS0xICk7CiAgICB2b2lkIHNldEJ1
dHRvbkRlZmF1bHRJbmRpY2F0b3JXaWR0aCggaW50IHcgKTsKICAgIHZvaWQgc2V0QnV0dG9uTWFy
Z2luKCBpbnQgdyApOwogICAgdm9pZCBzZXRTbGlkZXJUaGlja25lc3MoaW50IHQpOwoKCnByaXZh
dGU6CgogICAgUVN0eWxlKCBjb25zdCBRU3R5bGUgJiApOwogICAgUVN0eWxlJiBvcGVyYXRvcj0o
IGNvbnN0IFFTdHlsZSAmICk7Cgp9OwojIDUxICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2Vy
bmVsL3FzaXplcG9saWN5LmgiIDEKIyA0NSAia2VybmVsL3FzaXplcG9saWN5LmgiCmNsYXNzIFFT
aXplUG9saWN5CnsKcHJpdmF0ZToKICAgIGVudW0geyBIU2l6ZSA9IDYsIEhNYXNrID0gMHgzZiwg
Vk1hc2sgPSBITWFzayA8PCBIU2l6ZSwKICAgICAgICAgICBNYXlHcm93ID0gMSwgRXhwTWFzayA9
IDIsIE1heVNocmluayA9IDQgfTsKcHVibGljOgogICAgZW51bSBTaXplVHlwZSB7IEZpeGVkID0g
MCwKICAgICAgICAgICAgICAgICAgICBNaW5pbXVtID0gTWF5R3JvdywKICAgICAgICAgICAgICAg
ICAgICBNYXhpbXVtID0gTWF5U2hyaW5rLAogICAgICAgICAgICAgICAgICAgIFByZWZlcnJlZCA9
IE1heUdyb3d8TWF5U2hyaW5rICwKICAgICAgICAgICAgICAgICAgICBNaW5pbXVtRXhwYW5kaW5n
ID0gTWluaW11bXxFeHBNYXNrLAogICAgICAgICAgICAgICAgICAgIEV4cGFuZGluZyA9IE1pbmlt
dW1FeHBhbmRpbmd8TWF5U2hyaW5rIH07CgogICAgZW51bSBFeHBhbmREYXRhIHsgTm9EaXJlY3Rp
b24gPSAwLAogICAgICAgICAgICAgICAgICAgICAgSG9yaXpvbnRhbCA9IDEsCiAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0aWNhbCA9IDIsCiAgICAgICAgICAgICAgICAgICAgICBCb3RoRGlyZWN0
aW9ucyA9IEhvcml6b250YWwgfCBWZXJ0aWNhbCB9OwoKICAgIFFTaXplUG9saWN5KCkgeyBkYXRh
ID0gMDsgfQoKICAgIFFTaXplUG9saWN5KCBTaXplVHlwZSBob3IsIFNpemVUeXBlIHZlciwgYm9v
bCBoZncgPSBGQUxTRSApOwoKICAgIFNpemVUeXBlIGhvckRhdGEoKSBjb25zdCB7IHJldHVybiAo
U2l6ZVR5cGUpKCBkYXRhICYgSE1hc2sgKTsgfQogICAgU2l6ZVR5cGUgdmVyRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIChTaXplVHlwZSkoKCBkYXRhICYgVk1hc2sgKSA+PiBIU2l6ZSk7IH0KCiAgICBi
b29sIG1heVNocmlua0hvcml6b250YWxseSgpIGNvbnN0IHsgcmV0dXJuIGhvckRhdGEoKSAmIE1h
eVNocmluazsgfQogICAgYm9vbCBtYXlTaHJpbmtWZXJ0aWNhbGx5KCkgY29uc3QgeyByZXR1cm4g
dmVyRGF0YSgpICYgTWF5U2hyaW5rOyB9CiAgICBib29sIG1heUdyb3dIb3Jpem9udGFsbHkoKSBj
b25zdCB7IHJldHVybiBob3JEYXRhKCkgJiBNYXlHcm93OyB9CiAgICBib29sIG1heUdyb3dWZXJ0
aWNhbGx5KCkgY29uc3QgeyByZXR1cm4gdmVyRGF0YSgpICYgTWF5R3JvdzsgfQoKICAgIEV4cGFu
ZERhdGEgZXhwYW5kaW5nKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gKEV4cGFuZERhdGEp
KCAoaW50KSh2ZXJEYXRhKCkmRXhwTWFzayA/IFZlcnRpY2FsIDogMCkrCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGludCkoaG9yRGF0YSgpJkV4cE1hc2sgPyBIb3Jpem9udGFsIDogMCkg
KTsKICAgIH0KCiAgICB2b2lkIHNldEhvckRhdGEoIFNpemVUeXBlIGQgKSB7IGRhdGEgPSAoZGF0
YSAmIH5ITWFzaykgfCBkOyB9CiAgICB2b2lkIHNldFZlckRhdGEoIFNpemVUeXBlIGQgKSB7IGRh
dGEgPSAoZGF0YSAmIH4oSE1hc2s8PEhTaXplKSkgfAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGQ8PEhTaXplKTsgfQoKICAgIHZvaWQgc2V0SGVpZ2h0Rm9yV2lk
dGgoIGJvb2wgYiApIHsgZGF0YSA9IGIgPyAoIGRhdGEgfCAoIDEgPDwgMipIU2l6ZSApICkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCBkYXRhICYgfigg
MSA8PCAyKkhTaXplICkgKTsgfQogICAgYm9vbCBoYXNIZWlnaHRGb3JXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIGRhdGEgJiAoIDEgPDwgMipIU2l6ZSApOyB9CgogICAgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRU2l6ZVBvbGljeSYgcyApIGNvbnN0IHsgcmV0dXJuIGRhdGEgPT0gcy5kYXRhOyB9CiAg
ICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFTaXplUG9saWN5JiBzICkgY29uc3QgeyByZXR1cm4g
ZGF0YSAhPSBzLmRhdGE7IH0KCnByaXZhdGU6CiAgICBRU2l6ZVBvbGljeSggaW50IGkgKTogZGF0
YSggaSApIHt9CgogICAgUV9VSU5UMTYgZGF0YTsKfTsKCgppbmxpbmUgUVNpemVQb2xpY3k6OlFT
aXplUG9saWN5KCBTaXplVHlwZSBob3IsIFNpemVUeXBlIHZlciwgYm9vbCBoZncgKQogICAgICAg
IDogZGF0YSggaG9yIHwgKHZlcjw8SFNpemUpIHwgKGhmdyA/ICgxPDwyKkhTaXplKSA6IDApICkg
e30KIyA1MiAia2VybmVsL3F3aWRnZXQuaCIgMgoKCmNsYXNzIFFMYXlvdXQ7CnN0cnVjdCBRV0V4
dHJhOwpzdHJ1Y3QgUVRMV0V4dHJhOwpjbGFzcyBRRm9jdXNEYXRhOwpjbGFzcyBRU3R5bGU7CmNs
YXNzIFFXU1JlZ2lvbk1hbmFnZXI7CgpjbGFzcyBRV2lkZ2V0IDogcHVibGljIFFPYmplY3QsIHB1
YmxpYyBRUGFpbnREZXZpY2UKewogICAgcHVibGljOiBRTWV0YU9iamVjdCAqbWV0YU9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY01ldGFPYmplY3QoKTsgfSBjb25zdCBjaGFyICpjbGFzc05h
bWUoKSBjb25zdDsgc3RhdGljIFFNZXRhT2JqZWN0KiBzdGF0aWNNZXRhT2JqZWN0KCk7IHN0YXRp
YyBRU3RyaW5nIHRyKGNvbnN0IGNoYXIqKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsgcHJvdGVjdGVkOiB2b2lkIGluaXRNZXRhT2JqZWN0KCk7IHByaXZhdGU6
IHN0YXRpYyBRTWV0YU9iamVjdCAqbWV0YU9iajsKICAgCiAgIAogICAKICAgCiAgIAogICAKICAg
CiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAK
ICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAog
ICAKCiAgIAogICAKCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAK
ICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKCnB1YmxpYzoKICAgIFFXaWRnZXQo
IFFXaWRnZXQgKnBhcmVudD0wLCBjb25zdCBjaGFyICpuYW1lPTAsIFdGbGFncyBmPTAgKTsKICAg
IH5RV2lkZ2V0KCk7CgogICAgV0lkIHdpbklkKCkgY29uc3Q7CiAgICB2b2lkIHNldE5hbWUoIGNv
bnN0IGNoYXIgKm5hbWUgKTsKCgoKICAgIFFTdHlsZSAmc3R5bGUoKSBjb25zdDsKICAgIHZvaWQg
c2V0U3R5bGUoIFFTdHlsZSAqICk7CgoKCiAgICBib29sIGlzVG9wTGV2ZWwoKSBjb25zdDsKICAg
IGJvb2wgaXNNb2RhbCgpIGNvbnN0OwogICAgYm9vbCBpc1BvcHVwKCkgY29uc3Q7CiAgICBib29s
IGlzRGVza3RvcCgpIGNvbnN0OwoKICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CiAgICBib29s
IGlzRW5hYmxlZFRvKFFXaWRnZXQqKSBjb25zdDsKICAgIGJvb2wgaXNFbmFibGVkVG9UTFcoKSBj
b25zdDsKCnB1YmxpYyA6CiAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZCggYm9vbCApOwogICAg
dm9pZCBzZXREaXNhYmxlZCggYm9vbCApOwoKCgpwdWJsaWM6CiAgICBRUmVjdCBmcmFtZUdlb21l
dHJ5KCkgY29uc3Q7CiAgICBjb25zdCBRUmVjdCAmZ2VvbWV0cnkoKSBjb25zdDsKICAgIGludCB4
KCkgY29uc3Q7CiAgICBpbnQgeSgpIGNvbnN0OwogICAgUVBvaW50IHBvcygpIGNvbnN0OwogICAg
UVNpemUgZnJhbWVTaXplKCkgY29uc3Q7CiAgICBRU2l6ZSBzaXplKCkgY29uc3Q7CiAgICBpbnQg
d2lkdGgoKSBjb25zdDsKICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIFFSZWN0IHJlY3QoKSBj
b25zdDsKICAgIFFSZWN0IGNoaWxkcmVuUmVjdCgpIGNvbnN0OwogICAgUVJlZ2lvbiBjaGlsZHJl
blJlZ2lvbigpIGNvbnN0OwoKICAgIFFTaXplIG1pbmltdW1TaXplKCkgY29uc3Q7CiAgICBRU2l6
ZSBtYXhpbXVtU2l6ZSgpIGNvbnN0OwogICAgaW50IG1pbmltdW1XaWR0aCgpIGNvbnN0OwogICAg
aW50IG1pbmltdW1IZWlnaHQoKSBjb25zdDsKICAgIGludCBtYXhpbXVtV2lkdGgoKSBjb25zdDsK
ICAgIGludCBtYXhpbXVtSGVpZ2h0KCkgY29uc3Q7CiAgICB2b2lkIHNldE1pbmltdW1TaXplKCBj
b25zdCBRU2l6ZSAmICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bVNpemUoIGludCBtaW53
LCBpbnQgbWluaCApOwogICAgdm9pZCBzZXRNYXhpbXVtU2l6ZSggY29uc3QgUVNpemUgJiApOwog
ICAgdmlydHVhbCB2b2lkIHNldE1heGltdW1TaXplKCBpbnQgbWF4dywgaW50IG1heGggKTsKICAg
IHZvaWQgc2V0TWluaW11bVdpZHRoKCBpbnQgbWludyApOwogICAgdm9pZCBzZXRNaW5pbXVtSGVp
Z2h0KCBpbnQgbWluaCApOwogICAgdm9pZCBzZXRNYXhpbXVtV2lkdGgoIGludCBtYXh3ICk7CiAg
ICB2b2lkIHNldE1heGltdW1IZWlnaHQoIGludCBtYXhoICk7CgogICAgUVNpemUgc2l6ZUluY3Jl
bWVudCgpIGNvbnN0OwogICAgdm9pZCBzZXRTaXplSW5jcmVtZW50KCBjb25zdCBRU2l6ZSAmICk7
CiAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZUluY3JlbWVudCggaW50IHcsIGludCBoICk7CiAgICBR
U2l6ZSBiYXNlU2l6ZSgpIGNvbnN0OwogICAgdm9pZCBzZXRCYXNlU2l6ZSggY29uc3QgUVNpemUg
JiApOwogICAgdm9pZCBzZXRCYXNlU2l6ZSggaW50IGJhc2V3LCBpbnQgYmFzZWggKTsKCiAgICB2
b2lkIHNldEZpeGVkU2l6ZSggY29uc3QgUVNpemUgJiApOwogICAgdm9pZCBzZXRGaXhlZFNpemUo
IGludCB3LCBpbnQgaCApOwogICAgdm9pZCBzZXRGaXhlZFdpZHRoKCBpbnQgdyApOwogICAgdm9p
ZCBzZXRGaXhlZEhlaWdodCggaW50IGggKTsKCgoKICAgIFFQb2ludCBtYXBUb0dsb2JhbCggY29u
c3QgUVBvaW50ICYgKSBjb25zdDsKICAgIFFQb2ludCBtYXBGcm9tR2xvYmFsKCBjb25zdCBRUG9p
bnQgJiApIGNvbnN0OwogICAgUVBvaW50IG1hcFRvUGFyZW50KCBjb25zdCBRUG9pbnQgJiApIGNv
bnN0OwogICAgUVBvaW50IG1hcEZyb21QYXJlbnQoIGNvbnN0IFFQb2ludCAmICkgY29uc3Q7CiAg
ICBRUG9pbnQgbWFwVG8oIFFXaWRnZXQgKiwgY29uc3QgUVBvaW50ICYgKSBjb25zdDsKICAgIFFQ
b2ludCBtYXBGcm9tKCBRV2lkZ2V0ICosIGNvbnN0IFFQb2ludCAmICkgY29uc3Q7CgogICAgUVdp
ZGdldCAqdG9wTGV2ZWxXaWRnZXQoKSBjb25zdDsKCgoKICAgIGVudW0gQmFja2dyb3VuZE1vZGUg
eyBGaXhlZENvbG9yLCBGaXhlZFBpeG1hcCwgTm9CYWNrZ3JvdW5kLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhbGV0dGVGb3JlZ3JvdW5kLCBQYWxldHRlQnV0dG9uLCBQYWxldHRlTGlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgUGFsZXR0ZU1pZGxpZ2h0LCBQYWxldHRlRGFyaywg
UGFsZXR0ZU1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQYWxldHRlVGV4dCwgUGFsZXR0
ZUJyaWdodFRleHQsIFBhbGV0dGVCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBhbGV0
dGVCYWNrZ3JvdW5kLCBQYWxldHRlU2hhZG93LCBQYWxldHRlSGlnaGxpZ2h0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhbGV0dGVIaWdobGlnaHRlZFRleHQsIFBhbGV0dGVCdXR0b25UZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgIFgxMVBhcmVudFJlbGF0aXZlIH07CgogICAgQmFj
a2dyb3VuZE1vZGUgYmFja2dyb3VuZE1vZGUoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kTW9kZSggQmFja2dyb3VuZE1vZGUgKTsKCiAgICBjb25zdCBRQ29sb3IgJiBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKICAgIGNvbnN0IFFDb2xvciAmIGZvcmVncm91bmRDb2xvcigp
IGNvbnN0OwogICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvciggY29uc3QgUUNvbG9y
ICYgKTsKCiAgICBjb25zdCBRUGl4bWFwICogYmFja2dyb3VuZFBpeG1hcCgpIGNvbnN0OwogICAg
dmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRQaXhtYXAoIGNvbnN0IFFQaXhtYXAgJiApOwoKCiAg
ICBjb25zdCBRQ29sb3JHcm91cCAmIGNvbG9yR3JvdXAoKSBjb25zdDsKICAgIGNvbnN0IFFQYWxl
dHRlICYgcGFsZXR0ZSgpIGNvbnN0OwogICAgYm9vbCBvd25QYWxldHRlKCkgY29uc3Q7CiAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFsZXR0ZSggY29uc3QgUVBhbGV0dGUgJiApOwogICAgdm9pZCB1bnNl
dFBhbGV0dGUoKTsKCiAgICBRRm9udCBmb250KCkgY29uc3Q7CiAgICBib29sIG93bkZvbnQoKSBj
b25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRGb250KCBjb25zdCBRRm9udCAmICk7CiAgICB2b2lk
IHVuc2V0Rm9udCgpOwogICAgUUZvbnRNZXRyaWNzIGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICBR
Rm9udEluZm8gZm9udEluZm8oKSBjb25zdDsKCiAgICBlbnVtIFByb3BhZ2F0aW9uTW9kZSB7IE5v
Q2hpbGRyZW4sIEFsbENoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1lRm9u
dCwgU2FtZVBhbGV0dGUgPSBTYW1lRm9udCB9OwoKICAgIFByb3BhZ2F0aW9uTW9kZSBmb250UHJv
cGFnYXRpb24oKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRGb250UHJvcGFnYXRpb24oIFBy
b3BhZ2F0aW9uTW9kZSApOwoKICAgIFByb3BhZ2F0aW9uTW9kZSBwYWxldHRlUHJvcGFnYXRpb24o
KSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRQYWxldHRlUHJvcGFnYXRpb24oIFByb3BhZ2F0
aW9uTW9kZSApOwoKICAgIGNvbnN0IFFDdXJzb3IgJmN1cnNvcigpIGNvbnN0OwogICAgYm9vbCBv
d25DdXJzb3IoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoIGNvbnN0IFFDdXJz
b3IgJiApOwogICAgdmlydHVhbCB2b2lkIHVuc2V0Q3Vyc29yKCk7CgogICAgUVN0cmluZyBjYXB0
aW9uKCkgY29uc3Q7CiAgICBjb25zdCBRUGl4bWFwICppY29uKCkgY29uc3Q7CiAgICBRU3RyaW5n
IGljb25UZXh0KCkgY29uc3Q7CiAgICBib29sIGhhc01vdXNlVHJhY2tpbmcoKSBjb25zdDsKCiAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWFzayggY29uc3QgUUJpdG1hcCAmICk7CiAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFzayggY29uc3QgUVJlZ2lvbiAmICk7CiAgICB2b2lkIGNsZWFyTWFzaygpOwoKcHVi
bGljIDoKICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0aW9uKCBjb25zdCBRU3RyaW5nICYpOwogICAg
dmlydHVhbCB2b2lkIHNldEljb24oIGNvbnN0IFFQaXhtYXAgJiApOwogICAgdmlydHVhbCB2b2lk
IHNldEljb25UZXh0KCBjb25zdCBRU3RyaW5nICYpOwogICAgdmlydHVhbCB2b2lkIHNldE1vdXNl
VHJhY2tpbmcoIGJvb2wgZW5hYmxlICk7CgoKCiAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoKTsK
ICAgIHZvaWQgY2xlYXJGb2N1cygpOwoKcHVibGljOgogICAgZW51bSBGb2N1c1BvbGljeSB7CiAg
ICAgICAgTm9Gb2N1cyA9IDAsCiAgICAgICAgVGFiRm9jdXMgPSAweDEsCiAgICAgICAgQ2xpY2tG
b2N1cyA9IDB4MiwKICAgICAgICBTdHJvbmdGb2N1cyA9IDB4MywKICAgICAgICBXaGVlbEZvY3Vz
ID0gMHg3CiAgICB9OwoKICAgIGJvb2wgaXNBY3RpdmVXaW5kb3coKSBjb25zdDsKICAgIHZpcnR1
YWwgdm9pZCBzZXRBY3RpdmVXaW5kb3coKTsKICAgIGJvb2wgaXNGb2N1c0VuYWJsZWQoKSBjb25z
dDsKCiAgICBGb2N1c1BvbGljeSBmb2N1c1BvbGljeSgpIGNvbnN0OwogICAgdmlydHVhbCB2b2lk
IHNldEZvY3VzUG9saWN5KCBGb2N1c1BvbGljeSApOwogICAgYm9vbCBoYXNGb2N1cygpIGNvbnN0
OwogICAgc3RhdGljIHZvaWQgc2V0VGFiT3JkZXIoIFFXaWRnZXQgKiwgUVdpZGdldCAqICk7CiAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNQcm94eSggUVdpZGdldCAqICk7CiAgICBRV2lkZ2V0ICog
Zm9jdXNQcm94eSgpIGNvbnN0OwoKCgogICAgdm9pZCBncmFiTW91c2UoKTsKCiAgICB2b2lkIGdy
YWJNb3VzZSggY29uc3QgUUN1cnNvciAmICk7CgogICAgdm9pZCByZWxlYXNlTW91c2UoKTsKICAg
IHZvaWQgZ3JhYktleWJvYXJkKCk7CiAgICB2b2lkIHJlbGVhc2VLZXlib2FyZCgpOwogICAgc3Rh
dGljIFFXaWRnZXQgKiBtb3VzZUdyYWJiZXIoKTsKICAgIHN0YXRpYyBRV2lkZ2V0ICoga2V5Ym9h
cmRHcmFiYmVyKCk7CgoKCiAgICBib29sIGlzVXBkYXRlc0VuYWJsZWQoKSBjb25zdDsKCgoKCnB1
YmxpYyA6CiAgICB2aXJ0dWFsIHZvaWQgc2V0VXBkYXRlc0VuYWJsZWQoIGJvb2wgZW5hYmxlICk7
CiAgICB2b2lkIHVwZGF0ZSgpOwogICAgdm9pZCB1cGRhdGUoIGludCB4LCBpbnQgeSwgaW50IHcs
IGludCBoICk7CiAgICB2b2lkIHVwZGF0ZSggY29uc3QgUVJlY3QmICk7CiAgICB2b2lkIHJlcGFp
bnQoKTsKICAgIHZvaWQgcmVwYWludCggYm9vbCBlcmFzZSApOwogICAgdm9pZCByZXBhaW50KCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgYm9vbCBlcmFzZT1UUlVFICk7CiAgICB2b2lkIHJl
cGFpbnQoIGNvbnN0IFFSZWN0ICYsIGJvb2wgZXJhc2U9VFJVRSApOwogICAgdm9pZCByZXBhaW50
KCBjb25zdCBRUmVnaW9uICYsIGJvb2wgZXJhc2U9VFJVRSApOwoKCgogICAgdmlydHVhbCB2b2lk
IHNob3coKTsKICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CgogICAgdm9pZCBpY29uaWZ5KCkgeyBz
aG93TWluaW1pemVkKCk7IH0KCiAgICB2aXJ0dWFsIHZvaWQgc2hvd01pbmltaXplZCgpOwogICAg
dmlydHVhbCB2b2lkIHNob3dNYXhpbWl6ZWQoKTsKICAgIHZvaWQgc2hvd0Z1bGxTY3JlZW4oKTsK
ICAgIHZpcnR1YWwgdm9pZCBzaG93Tm9ybWFsKCk7CiAgICB2aXJ0dWFsIHZvaWQgcG9saXNoKCk7
CiAgICB2b2lkIGNvbnN0UG9saXNoKCkgY29uc3Q7CiAgICBib29sIGNsb3NlKCk7CgogICAgdm9p
ZCByYWlzZSgpOwogICAgdm9pZCBsb3dlcigpOwogICAgdm9pZCBzdGFja1VuZGVyKCBRV2lkZ2V0
KiApOwogICAgdmlydHVhbCB2b2lkIG1vdmUoIGludCB4LCBpbnQgeSApOwogICAgdm9pZCBtb3Zl
KCBjb25zdCBRUG9pbnQgJiApOwogICAgdmlydHVhbCB2b2lkIHJlc2l6ZSggaW50IHcsIGludCBo
ICk7CiAgICB2b2lkIHJlc2l6ZSggY29uc3QgUVNpemUgJiApOwogICAgdmlydHVhbCB2b2lkIHNl
dEdlb21ldHJ5KCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCApOwogICAgdmlydHVhbCB2b2lk
IHNldEdlb21ldHJ5KCBjb25zdCBRUmVjdCAmICk7CgpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wg
Y2xvc2UoIGJvb2wgYWxzb0RlbGV0ZSApOwogICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKICAg
IGJvb2wgaXNWaXNpYmxlVG8oUVdpZGdldCopIGNvbnN0OwogICAgYm9vbCBpc1Zpc2libGVUb1RM
VygpIGNvbnN0OwogICAgUVJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdDsKICAgIGJvb2wgaXNIaWRk
ZW4oKSBjb25zdDsKICAgIGJvb2wgaXNNaW5pbWl6ZWQoKSBjb25zdDsKICAgIGJvb2wgaXNNYXhp
bWl6ZWQoKSBjb25zdDsKCiAgICB2aXJ0dWFsIFFTaXplIHNpemVIaW50KCkgY29uc3Q7CiAgICB2
aXJ0dWFsIFFTaXplIG1pbmltdW1TaXplSGludCgpIGNvbnN0OwogICAgdmlydHVhbCBRU2l6ZVBv
bGljeSBzaXplUG9saWN5KCkgY29uc3Q7CiAgICB2b2lkIHNldFNpemVQb2xpY3koIFFTaXplUG9s
aWN5ICk7CiAgICB2aXJ0dWFsIGludCBoZWlnaHRGb3JXaWR0aChpbnQpIGNvbnN0OwoKICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTaXplKCk7CgogICAgUUxheW91dCAqIGxheW91dCgpIGNvbnN0IHsg
cmV0dXJuIGxheV9vdXQ7IH0KCiAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5KCk7CiAgICB2aXJ0dWFs
IHZvaWQgcmVwYXJlbnQoIFFXaWRnZXQgKnBhcmVudCwgV0ZsYWdzLCBjb25zdCBRUG9pbnQgJiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvd0l0PUZBTFNFICk7CiAg
ICB2b2lkIHJlcGFyZW50KCBRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFQb2ludCAmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG93SXQ9RkFMU0UgKTsKCiAgICB2b2lk
IHJlY3JlYXRlKCBRV2lkZ2V0ICpwYXJlbnQsIFdGbGFncyBmLCBjb25zdCBRUG9pbnQgJiBwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG93SXQ9RkFMU0UgKQogICAg
eyByZXBhcmVudChwYXJlbnQsZixwLHNob3dJdCk7IH0KCgogICAgdm9pZCBlcmFzZSgpOwogICAg
dm9pZCBlcmFzZSggaW50IHgsIGludCB5LCBpbnQgdywgaW50IGggKTsKICAgIHZvaWQgZXJhc2Uo
IGNvbnN0IFFSZWN0ICYgKTsKICAgIHZvaWQgZXJhc2UoIGNvbnN0IFFSZWdpb24gJiApOwogICAg
dm9pZCBzY3JvbGwoIGludCBkeCwgaW50IGR5ICk7CiAgICB2b2lkIHNjcm9sbCggaW50IGR4LCBp
bnQgZHksIGNvbnN0IFFSZWN0JiApOwoKICAgIHZvaWQgZHJhd1RleHQoIGludCB4LCBpbnQgeSwg
Y29uc3QgUVN0cmluZyAmKTsKICAgIHZvaWQgZHJhd1RleHQoIGNvbnN0IFFQb2ludCAmLCBjb25z
dCBRU3RyaW5nICYpOwoKCgogICAgUVdpZGdldCAqIGZvY3VzV2lkZ2V0KCkgY29uc3Q7CiAgICBR
UmVjdCBtaWNyb0ZvY3VzSGludCgpIGNvbnN0OwoKCgogICAgYm9vbCBhY2NlcHREcm9wcygpIGNv
bnN0OwogICAgdmlydHVhbCB2b2lkIHNldEFjY2VwdERyb3BzKCBib29sIG9uICk7CgoKCiAgICB2
aXJ0dWFsIHZvaWQgc2V0QXV0b01hc2soYm9vbCk7CiAgICBib29sIGF1dG9NYXNrKCkgY29uc3Q7
CgogICAgZW51bSBCYWNrZ3JvdW5kT3JpZ2luIHsgV2lkZ2V0T3JpZ2luLCBQYXJlbnRPcmlnaW4g
fTsKCiAgICB2b2lkIHNldEJhY2tncm91bmRPcmlnaW4oIEJhY2tncm91bmRPcmlnaW4gKTsKICAg
IEJhY2tncm91bmRPcmlnaW4gYmFja2dyb3VuZE9yaWdpbigpIGNvbnN0OwoKCgogICAgdmlydHVh
bCBib29sIGN1c3RvbVdoYXRzVGhpcygpIGNvbnN0OwoKICAgIFFXaWRnZXQgKiBwYXJlbnRXaWRn
ZXQoKSBjb25zdDsKICAgIGJvb2wgdGVzdFdTdGF0ZSggdWludCBuICkgY29uc3Q7CiAgICBib29s
IHRlc3RXRmxhZ3MoIFdGbGFncyBmICkgY29uc3Q7CiAgICBzdGF0aWMgUVdpZGdldCAqIGZpbmQo
IFdJZCApOwogICAgc3RhdGljIFFXaWRnZXRNYXBwZXIgKndtYXBwZXIoKTsKCgoKCgpwcm90ZWN0
ZWQ6CgogICAgYm9vbCBldmVudCggUUV2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBtb3VzZVBy
ZXNzRXZlbnQoIFFNb3VzZUV2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VF
dmVudCggUU1vdXNlRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xpY2tF
dmVudCggUU1vdXNlRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KCBR
TW91c2VFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudCggUVdoZWVsRXZlbnQg
KiApOwogICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoIFFLZXlFdmVudCAqICk7CiAgICB2
aXJ0dWFsIHZvaWQga2V5UmVsZWFzZUV2ZW50KCBRS2V5RXZlbnQgKiApOwogICAgdmlydHVhbCB2
b2lkIGZvY3VzSW5FdmVudCggUUZvY3VzRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGZvY3Vz
T3V0RXZlbnQoIFFGb2N1c0V2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBlbnRlckV2ZW50KCBR
RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGxlYXZlRXZlbnQoIFFFdmVudCAqICk7CiAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRFdmVudCggUVBhaW50RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lk
IG1vdmVFdmVudCggUU1vdmVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgcmVzaXplRXZlbnQo
IFFSZXNpemVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgY2xvc2VFdmVudCggUUNsb3NlRXZl
bnQgKiApOwoKCiAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VudGVyRXZlbnQoIFFEcmFnRW50ZXJFdmVu
dCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgZHJhZ01vdmVFdmVudCggUURyYWdNb3ZlRXZlbnQgKiAp
OwogICAgdmlydHVhbCB2b2lkIGRyYWdMZWF2ZUV2ZW50KCBRRHJhZ0xlYXZlRXZlbnQgKiApOwog
ICAgdmlydHVhbCB2b2lkIGRyb3BFdmVudCggUURyb3BFdmVudCAqICk7CgoKICAgIHZpcnR1YWwg
dm9pZCBzaG93RXZlbnQoIFFTaG93RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGhpZGVFdmVu
dCggUUhpZGVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tRXZlbnQoIFFDdXN0b21F
dmVudCAqICk7CiMgNDY0ICJrZXJuZWwvcXdpZGdldC5oIgogICAgdmlydHVhbCBib29sIHgxMUV2
ZW50KCBYRXZlbnQgKiApOwoKCgoKCgogICAgdmlydHVhbCB2b2lkIHVwZGF0ZU1hc2soKTsKCgoK
cHJvdGVjdGVkOgoKICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZSggUVN0eWxlJiApOwoKICAg
IHZpcnR1YWwgdm9pZCBlbmFibGVkQ2hhbmdlKCBib29sICk7CiAgICB2aXJ0dWFsIHZvaWQgYmFj
a2dyb3VuZENvbG9yQ2hhbmdlKCBjb25zdCBRQ29sb3IgJiApOwogICAgdmlydHVhbCB2b2lkIGJh
Y2tncm91bmRQaXhtYXBDaGFuZ2UoIGNvbnN0IFFQaXhtYXAgJiApOwoKICAgIHZpcnR1YWwgdm9p
ZCBwYWxldHRlQ2hhbmdlKCBjb25zdCBRUGFsZXR0ZSAmICk7CgogICAgdmlydHVhbCB2b2lkIGZv
bnRDaGFuZ2UoIGNvbnN0IFFGb250ICYgKTsKCiAgICBpbnQgbWV0cmljKCBpbnQgKSBjb25zdDsK
CiAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlKCBXSWQgPSAwLCBib29sIGluaXRpYWxpemVXaW5kb3cg
PSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXN0cm95T2xkV2luZG93ID0g
VFJVRSApOwogICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koIGJvb2wgZGVzdHJveVdpbmRvdyA9IFRS
VUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXN0cm95U3ViV2luZG93cyA9IFRS
VUUgKTsKICAgIHVpbnQgZ2V0V1N0YXRlKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgc2V0V1N0
YXRlKCB1aW50ICk7CiAgICB2b2lkIGNsZWFyV1N0YXRlKCB1aW50IG4gKTsKICAgIFdGbGFncyBn
ZXRXRmxhZ3MoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRXRmxhZ3MoIFdGbGFncyApOwog
ICAgdm9pZCBjbGVhcldGbGFncyggV0ZsYWdzIG4gKTsKCiAgICB2aXJ0dWFsIHZvaWQgc2V0RlJl
Y3QoIGNvbnN0IFFSZWN0ICYgKTsKICAgIHZpcnR1YWwgdm9pZCBzZXRDUmVjdCggY29uc3QgUVJl
Y3QgJiApOwoKICAgIHZpcnR1YWwgYm9vbCBmb2N1c05leHRQcmV2Q2hpbGQoIGJvb2wgbmV4dCAp
OwoKICAgIFFXRXh0cmEgKmV4dHJhRGF0YSgpOwogICAgUVRMV0V4dHJhICp0b3BEYXRhKCk7CiAg
ICBRRm9jdXNEYXRhICpmb2N1c0RhdGEoKTsKCiAgICB2aXJ0dWFsIHZvaWQgc2V0S2V5Q29tcHJl
c3Npb24oYm9vbCk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0TWljcm9Gb2N1c0hpbnQoaW50IHgsIGlu
dCB5LCBpbnQgdywgaW50IGgsIGJvb2wgdGV4dD1UUlVFKTsKCnByaXZhdGUgOgogICAgdm9pZCBm
b2N1c1Byb3h5RGVzdHJveWVkKCk7Cgpwcml2YXRlOgogICAgdm9pZCBzZXRGb250U3lzKCk7Cgog
ICAgdm9pZCBzZXRMYXlvdXQoIFFMYXlvdXQgKmwgKTsKCiAgICB2b2lkIHNldFdpbklkKCBXSWQg
KTsKICAgIHZvaWQgc2hvd1dpbmRvdygpOwogICAgdm9pZCBoaWRlV2luZG93KCk7CiAgICB2b2lk
IHNlbmRTaG93RXZlbnRzVG9DaGlsZHJlbiggYm9vbCBzcG9udGFuZW91cyApOwogICAgdm9pZCBz
ZW5kSGlkZUV2ZW50c1RvQ2hpbGRyZW4oIGJvb2wgc3BvbnRhbmVvdXMgKTsKICAgIHZvaWQgY3Jl
YXRlVExFeHRyYSgpOwogICAgdm9pZCBjcmVhdGVFeHRyYSgpOwogICAgdm9pZCBkZWxldGVFeHRy
YSgpOwogICAgdm9pZCBjcmVhdGVTeXNFeHRyYSgpOwogICAgdm9pZCBkZWxldGVTeXNFeHRyYSgp
OwogICAgdm9pZCBjcmVhdGVUTFN5c0V4dHJhKCk7CiAgICB2b2lkIGRlbGV0ZVRMU3lzRXh0cmEo
KTsKICAgIHZvaWQgZGVhY3RpdmF0ZVdpZGdldENsZWFudXAoKTsKICAgIHZvaWQgaW50ZXJuYWxT
ZXRHZW9tZXRyeSggaW50LCBpbnQsIGludCwgaW50LCBib29sICk7CiAgICB2b2lkIHJlcGFyZW50
Rm9jdXNXaWRnZXRzKCBRV2lkZ2V0ICogKTsKICAgIFFGb2N1c0RhdGEgKmZvY3VzRGF0YSggYm9v
bCBjcmVhdGUgKTsKICAgIHZvaWQgc2V0QmFja2dyb3VuZEZyb21Nb2RlKCk7CiAgICB2b2lkIHNl
dEJhY2tncm91bmRDb2xvckRpcmVjdCggY29uc3QgUUNvbG9yICYgKTsKICAgIHZvaWQgc2V0QmFj
a2dyb3VuZFBpeG1hcERpcmVjdCggY29uc3QgUVBpeG1hcCAmICk7CiAgICB2b2lkIHNldEJhY2tn
cm91bmRNb2RlRGlyZWN0KCBCYWNrZ3JvdW5kTW9kZSApOwogICAgdm9pZCBzZXRCYWNrZ3JvdW5k
RW1wdHkoKTsKCiAgICB2b2lkIHNldEJhY2tncm91bmRYMTFSZWxhdGl2ZSgpOwogICAgdm9pZCBj
aGVja0NoaWxkcmVuRG5kKCk7CgoKICAgIFdJZCB3aW5pZDsKICAgIHVpbnQgd2lkZ2V0X3N0YXRl
OwogICAgdWludCB3aWRnZXRfZmxhZ3M7CiAgICB1aW50IHByb3BhZ2F0ZV9mb250IDogMjsKICAg
IHVpbnQgcHJvcGFnYXRlX3BhbGV0dGUgOiAyOwogICAgdWludCBmb2N1c19wb2xpY3kgOiA0Owog
ICAgdWludCBvd25fZm9udCA6MTsKICAgIHVpbnQgb3duX3BhbGV0dGUgOjE7CiAgICB1aW50IHNp
emVoaW50X2ZvcmNlZCA6MTsKICAgIHVpbnQgaXNfY2xvc2luZyA6MTsKICAgIHVpbnQgaW5fc2hv
dyA6IDE7CiAgICB1aW50IGluX3Nob3dfbWF4aW1pemVkIDogMTsKICAgIFFQb2ludCBmcG9zOwog
ICAgUVJlY3QgY3JlY3Q7CiAgICBRQ29sb3IgYmdfY29sOwoKICAgIFFQYWxldHRlIHBhbDsKCiAg
ICBRRm9udCBmbnQ7CgogICAgUUxheW91dCAqbGF5X291dDsKCiAgICBRV0V4dHJhICpleHRyYTsK
IyA1OTMgImtlcm5lbC9xd2lkZ2V0LmgiCiAgICBzdGF0aWMgdm9pZCBjcmVhdGVNYXBwZXIoKTsK
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lNYXBwZXIoKTsKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAq
d0xpc3QoKTsKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAqdGx3TGlzdCgpOwogICAgc3RhdGljIFFX
aWRnZXRNYXBwZXIgKm1hcHBlcjsKICAgIGZyaWVuZCBjbGFzcyBRQXBwbGljYXRpb247CiAgICBm
cmllbmQgY2xhc3MgUUJhc2VBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBjbGFzcyBRUGFpbnRlcjsK
ICAgIGZyaWVuZCBjbGFzcyBRRm9udE1ldHJpY3M7CiAgICBmcmllbmQgY2xhc3MgUUZvbnRJbmZv
OwogICAgZnJpZW5kIGNsYXNzIFFFVFdpZGdldDsKCiAgICBmcmllbmQgY2xhc3MgUUxheW91dDsK
CgoKcHJpdmF0ZToKCiAgICBRV2lkZ2V0KCBjb25zdCBRV2lkZ2V0ICYgKTsKICAgIFFXaWRnZXQg
Jm9wZXJhdG9yPSggY29uc3QgUVdpZGdldCAmICk7CgoKcHVibGljOgoKICAgIHZvaWQgc2V0UGFs
ZXR0ZSggY29uc3QgUVBhbGV0dGUgJiwgYm9vbCBpUmVhbGx5TWVhbkl0ICk7CgogICAgdm9pZCBz
ZXRGb250KCBjb25zdCBRRm9udCAmLCBib29sIGlSZWFsbHlNZWFuSXQgKTsKfTsKCgppbmxpbmUg
Ym9vbCBRV2lkZ2V0Ojp0ZXN0V1N0YXRlKCB1aW50IGYgKSBjb25zdAp7IHJldHVybiAod2lkZ2V0
X3N0YXRlICYgZikgIT0gMDsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6dGVzdFdGbGFncyggV0Zs
YWdzIGYgKSBjb25zdAp7IHJldHVybiAod2lkZ2V0X2ZsYWdzICYgZikgIT0gMDsgfQoKCmlubGlu
ZSBXSWQgUVdpZGdldDo6d2luSWQoKSBjb25zdAp7IHJldHVybiB3aW5pZDsgfQoKaW5saW5lIGJv
b2wgUVdpZGdldDo6aXNUb3BMZXZlbCgpIGNvbnN0CnsgcmV0dXJuIHRlc3RXRmxhZ3MoV1R5cGVf
VG9wTGV2ZWwpOyB9CgppbmxpbmUgYm9vbCBRV2lkZ2V0Ojppc01vZGFsKCkgY29uc3QKeyByZXR1
cm4gdGVzdFdGbGFncyhXVHlwZV9Nb2RhbCk7IH0KCmlubGluZSBib29sIFFXaWRnZXQ6OmlzUG9w
dXAoKSBjb25zdAp7IHJldHVybiB0ZXN0V0ZsYWdzKFdUeXBlX1BvcHVwKTsgfQoKaW5saW5lIGJv
b2wgUVdpZGdldDo6aXNEZXNrdG9wKCkgY29uc3QKeyByZXR1cm4gdGVzdFdGbGFncyhXVHlwZV9E
ZXNrdG9wKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNFbmFibGVkKCkgY29uc3QKeyByZXR1
cm4gIXRlc3RXU3RhdGUoV1N0YXRlX0Rpc2FibGVkKTsgfQoKaW5saW5lIGNvbnN0IFFSZWN0ICZR
V2lkZ2V0OjpnZW9tZXRyeSgpIGNvbnN0CnsgcmV0dXJuIGNyZWN0OyB9CgppbmxpbmUgaW50IFFX
aWRnZXQ6OngoKSBjb25zdAp7IHJldHVybiBmcG9zLngoKTsgfQoKaW5saW5lIGludCBRV2lkZ2V0
Ojp5KCkgY29uc3QKeyByZXR1cm4gZnBvcy55KCk7IH0KCmlubGluZSBRUG9pbnQgUVdpZGdldDo6
cG9zKCkgY29uc3QKeyByZXR1cm4gZnBvczsgfQoKaW5saW5lIFFTaXplIFFXaWRnZXQ6OnNpemUo
KSBjb25zdAp7IHJldHVybiBjcmVjdC5zaXplKCk7IH0KCmlubGluZSBpbnQgUVdpZGdldDo6d2lk
dGgoKSBjb25zdAp7IHJldHVybiBjcmVjdC53aWR0aCgpOyB9CgppbmxpbmUgaW50IFFXaWRnZXQ6
OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIGNyZWN0LmhlaWdodCgpOyB9CgppbmxpbmUgUVJlY3Qg
UVdpZGdldDo6cmVjdCgpIGNvbnN0CnsgcmV0dXJuIFFSZWN0KDAsMCxjcmVjdC53aWR0aCgpLGNy
ZWN0LmhlaWdodCgpKTsgfQoKaW5saW5lIGludCBRV2lkZ2V0OjptaW5pbXVtV2lkdGgoKSBjb25z
dAp7IHJldHVybiBtaW5pbXVtU2l6ZSgpLndpZHRoKCk7IH0KCmlubGluZSBpbnQgUVdpZGdldDo6
bWluaW11bUhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIG1pbmltdW1TaXplKCkuaGVpZ2h0KCk7IH0K
CmlubGluZSBpbnQgUVdpZGdldDo6bWF4aW11bVdpZHRoKCkgY29uc3QKeyByZXR1cm4gbWF4aW11
bVNpemUoKS53aWR0aCgpOyB9CgppbmxpbmUgaW50IFFXaWRnZXQ6Om1heGltdW1IZWlnaHQoKSBj
b25zdAp7IHJldHVybiBtYXhpbXVtU2l6ZSgpLmhlaWdodCgpOyB9CgppbmxpbmUgdm9pZCBRV2lk
Z2V0OjpzZXRNaW5pbXVtU2l6ZSggY29uc3QgUVNpemUgJnMgKQp7IHNldE1pbmltdW1TaXplKHMu
d2lkdGgoKSxzLmhlaWdodCgpKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6c2V0TWF4aW11bVNp
emUoIGNvbnN0IFFTaXplICZzICkKeyBzZXRNYXhpbXVtU2l6ZShzLndpZHRoKCkscy5oZWlnaHQo
KSk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFNpemVJbmNyZW1lbnQoIGNvbnN0IFFTaXpl
ICZzICkKeyBzZXRTaXplSW5jcmVtZW50KHMud2lkdGgoKSxzLmhlaWdodCgpKTsgfQoKaW5saW5l
IHZvaWQgUVdpZGdldDo6c2V0QmFzZVNpemUoIGNvbnN0IFFTaXplICZzICkKeyBzZXRCYXNlU2l6
ZShzLndpZHRoKCkscy5oZWlnaHQoKSk7IH0KCmlubGluZSBjb25zdCBRQ29sb3IgJlFXaWRnZXQ6
OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CnsgcmV0dXJuIGJnX2NvbDsgfQoKCmlubGluZSBjb25z
dCBRUGFsZXR0ZSAmUVdpZGdldDo6cGFsZXR0ZSgpIGNvbnN0CnsgcmV0dXJuIHBhbDsgfQoKCmlu
bGluZSBRRm9udCBRV2lkZ2V0Ojpmb250KCkgY29uc3QKeyByZXR1cm4gZm50OyB9CgppbmxpbmUg
UUZvbnRNZXRyaWNzIFFXaWRnZXQ6OmZvbnRNZXRyaWNzKCkgY29uc3QKeyByZXR1cm4gUUZvbnRN
ZXRyaWNzKGZvbnQoKSk7IH0KCmlubGluZSBRRm9udEluZm8gUVdpZGdldDo6Zm9udEluZm8oKSBj
b25zdAp7IHJldHVybiBRRm9udEluZm8oZm9udCgpKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6
aGFzTW91c2VUcmFja2luZygpIGNvbnN0CnsgcmV0dXJuIHRlc3RXU3RhdGUoV1N0YXRlX01vdXNl
VHJhY2tpbmcpOyB9CgppbmxpbmUgYm9vbCBRV2lkZ2V0Ojppc0ZvY3VzRW5hYmxlZCgpIGNvbnN0
CnsgcmV0dXJuIChGb2N1c1BvbGljeSlmb2N1c19wb2xpY3kgIT0gTm9Gb2N1czsgfQoKaW5saW5l
IFFXaWRnZXQ6OkZvY3VzUG9saWN5IFFXaWRnZXQ6OmZvY3VzUG9saWN5KCkgY29uc3QKeyByZXR1
cm4gKEZvY3VzUG9saWN5KWZvY3VzX3BvbGljeTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNV
cGRhdGVzRW5hYmxlZCgpIGNvbnN0CnsgcmV0dXJuICF0ZXN0V1N0YXRlKFdTdGF0ZV9CbG9ja1Vw
ZGF0ZXMpOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0Ojp1cGRhdGUoIGNvbnN0IFFSZWN0ICZyICkK
eyB1cGRhdGUoIHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpICk7IH0KCmlubGlu
ZSB2b2lkIFFXaWRnZXQ6OnJlcGFpbnQoKQp7IHJlcGFpbnQoIDAsIDAsIGNyZWN0LndpZHRoKCks
IGNyZWN0LmhlaWdodCgpLCBUUlVFICk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnJlcGFpbnQo
IGJvb2wgZXJhc2UgKQp7IHJlcGFpbnQoIDAsIDAsIGNyZWN0LndpZHRoKCksIGNyZWN0LmhlaWdo
dCgpLCBlcmFzZSApOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0OjpyZXBhaW50KCBjb25zdCBRUmVj
dCAmciwgYm9vbCBlcmFzZSApCnsgcmVwYWludCggci54KCksIHIueSgpLCByLndpZHRoKCksIHIu
aGVpZ2h0KCksIGVyYXNlICk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OmVyYXNlKCkKeyBlcmFz
ZSggMCwgMCwgY3JlY3Qud2lkdGgoKSwgY3JlY3QuaGVpZ2h0KCkgKTsgfQoKaW5saW5lIHZvaWQg
UVdpZGdldDo6ZXJhc2UoIGNvbnN0IFFSZWN0ICZyICkKeyBlcmFzZSggci54KCksIHIueSgpLCBy
LndpZHRoKCksIHIuaGVpZ2h0KCkgKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6Y2xvc2UoKQp7
IHJldHVybiBjbG9zZSggRkFMU0UgKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNWaXNpYmxl
KCkgY29uc3QKeyByZXR1cm4gdGVzdFdTdGF0ZShXU3RhdGVfVmlzaWJsZSk7IH0KCmlubGluZSBi
b29sIFFXaWRnZXQ6OmlzSGlkZGVuKCkgY29uc3QKeyByZXR1cm4gdGVzdFdTdGF0ZShXU3RhdGVf
Rm9yY2VIaWRlKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6bW92ZSggY29uc3QgUVBvaW50ICZw
ICkKeyBtb3ZlKCBwLngoKSwgcC55KCkgKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6cmVzaXpl
KCBjb25zdCBRU2l6ZSAmcyApCnsgcmVzaXplKCBzLndpZHRoKCksIHMuaGVpZ2h0KCkpOyB9Cgpp
bmxpbmUgdm9pZCBRV2lkZ2V0OjpzZXRHZW9tZXRyeSggY29uc3QgUVJlY3QgJnIgKQp7IHNldEdl
b21ldHJ5KCByLmxlZnQoKSwgci50b3AoKSwgci53aWR0aCgpLCByLmhlaWdodCgpICk7IH0KCmlu
bGluZSB2b2lkIFFXaWRnZXQ6OmRyYXdUZXh0KCBjb25zdCBRUG9pbnQgJnAsIGNvbnN0IFFTdHJp
bmcgJnMgKQp7IGRyYXdUZXh0KCBwLngoKSwgcC55KCksIHMgKTsgfQoKaW5saW5lIFFXaWRnZXQg
KlFXaWRnZXQ6OnBhcmVudFdpZGdldCgpIGNvbnN0CnsgcmV0dXJuIChRV2lkZ2V0ICopUU9iamVj
dDo6cGFyZW50KCk7IH0KCmlubGluZSBRV2lkZ2V0TWFwcGVyICpRV2lkZ2V0Ojp3bWFwcGVyKCkK
eyByZXR1cm4gbWFwcGVyOyB9CgppbmxpbmUgdWludCBRV2lkZ2V0OjpnZXRXU3RhdGUoKSBjb25z
dAp7IHJldHVybiB3aWRnZXRfc3RhdGU7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFdTdGF0
ZSggdWludCBmICkKeyB3aWRnZXRfc3RhdGUgfD0gZjsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6
Y2xlYXJXU3RhdGUoIHVpbnQgZiApCnsgd2lkZ2V0X3N0YXRlICY9IH5mOyB9CgppbmxpbmUgUXQ6
OldGbGFncyBRV2lkZ2V0OjpnZXRXRmxhZ3MoKSBjb25zdAp7IHJldHVybiB3aWRnZXRfZmxhZ3M7
IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFdGbGFncyggV0ZsYWdzIGYgKQp7IHdpZGdldF9m
bGFncyB8PSBmOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0OjpjbGVhcldGbGFncyggV0ZsYWdzIGYg
KQp7IHdpZGdldF9mbGFncyAmPSB+ZjsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6Y29uc3RQb2xp
c2goKSBjb25zdAp7CiAgICBpZiAoICF0ZXN0V1N0YXRlKFdTdGF0ZV9Qb2xpc2hlZCkgKSB7CiAg
ICAgICAgUVdpZGdldCogdGhhdCA9IChRV2lkZ2V0KikgdGhpczsKICAgICAgICB0aGF0LT5wb2xp
c2goKTsKICAgICAgICB0aGF0LT5zZXRXU3RhdGUoV1N0YXRlX1BvbGlzaGVkKTsKICAgIH0KfQoK
aW5saW5lIGJvb2wgUVdpZGdldDo6b3duQ3Vyc29yKCkgY29uc3QKewogICAgcmV0dXJuIHRlc3RX
U3RhdGUoIFdTdGF0ZV9Pd25DdXJzb3IgKTsKfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6b3duRm9u
dCgpIGNvbnN0CnsKICAgIHJldHVybiBvd25fZm9udDsKfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6
b3duUGFsZXR0ZSgpIGNvbnN0CnsKICAgIHJldHVybiBvd25fcGFsZXR0ZTsKfQoKCgoKCgpjbGFz
cyBRRm9jdXNEYXRhOwpjbGFzcyBRV1NNYW5hZ2VyOwoKCgoKc3RydWN0IFFUTFdFeHRyYSB7CiAg
ICBRU3RyaW5nIGNhcHRpb247CiAgICBRU3RyaW5nIGljb25UZXh0OwogICAgUVBpeG1hcCAqaWNv
bjsKICAgIFFGb2N1c0RhdGEgKmZvY3VzRGF0YTsKICAgIFFTaXplIGZzaXplOwogICAgc2hvcnQg
aW5jdywgaW5jaDsKICAgIHVpbnQgaWNvbmljOiAxOwogICAgdWludCBmdWxsc2NyZWVuIDogMTsK
ICAgIHVpbnQgc2hvd01vZGU6IDI7CiAgICBzaG9ydCBiYXNldywgYmFzZWg7CgogICAgV0lkIHBh
cmVudFdpbklkOwogICAgdWludCBlbWJlZGRlZCA6IDE7CiAgICB1aW50IHJlc2VydmVkOiAyOwog
ICAgdWludCBkbmQgOiAxOwogICAgdWludCB1c3BvcyA6IDE7CiAgICB1aW50IHVzc2l6ZSA6IDE7
CiAgICB2b2lkICp4aWM7CiMgODUwICJrZXJuZWwvcXdpZGdldC5oIgogICAgUVJlY3Qgbm9ybWFs
R2VvbWV0cnk7Cn07CgoKCgoKCnN0cnVjdCBRV0V4dHJhIHsKICAgIFFfSU5UMTYgbWludywgbWlu
aDsKICAgIFFfSU5UMTYgbWF4dywgbWF4aDsKICAgIFFQaXhtYXAgKmJnX3BpeDsKICAgIFFXaWRn
ZXQgKmZvY3VzX3Byb3h5OwoKICAgIFFDdXJzb3IgKmN1cnM7CgogICAgUVRMV0V4dHJhICp0b3Bl
eHRyYTsKCgoKCiAgICBXSWQgeERuZFByb3h5OwoKCgoKICAgIGNoYXIgYmdfbW9kZTsKCiAgICBR
U3R5bGUqIHN0eWxlOwoKICAgIFFSZWN0IG1pY3JvX2ZvY3VzX2hpbnQ7CiAgICBRU2l6ZVBvbGlj
eSBzaXplX3BvbGljeTsKICAgIHZvaWQgKiBwb3N0ZWRfZXZlbnRzOwoKICAgIHVpbnQgY2hpbGRy
ZW5fdXNlX2RuZCA6IDE7Cgp9OwojIDE3ICJrZXJuZWwvbW9jX3F3aWRnZXQuY3BwIiAyCiMgMSAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xbWV0YW9iamVjdC5oIiAx
CiMgNDIgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcW1ldGFvYmpl
Y3QuaCIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjb25u
ZWN0aW9uLmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVk
ZS9xY29ubmVjdGlvbi5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcW9iamVjdC5oIiAxCiMgNDMgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4y
L2luY2x1ZGUvcWNvbm5lY3Rpb24uaCIgMgoKCgp0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipRTWVt
YmVyKSgpOwoKCmNsYXNzIFFDb25uZWN0aW9uCnsKcHVibGljOgogICAgUUNvbm5lY3Rpb24oIGNv
bnN0IFFPYmplY3QgKiwgUU1lbWJlciwgY29uc3QgY2hhciAqbWVtYmVyTmFtZSApOwogICB+UUNv
bm5lY3Rpb24oKSB7fQoKICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBvYmog
IT0gMDsgfQoKICAgIFFPYmplY3QgKm9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG9iajsgfQogICAg
UU1lbWJlciAqbWVtYmVyKCkgY29uc3QgeyByZXR1cm4gKFFNZW1iZXIqKSZtYnI7IH0KICAgIGNv
bnN0IGNoYXIgKm1lbWJlck5hbWUoKSBjb25zdCB7IHJldHVybiBtYnJfbmFtZTsgfQogICAgaW50
IG51bUFyZ3MoKSBjb25zdCB7IHJldHVybiBuYXJnczsgfQoKcHJpdmF0ZToKICAgIFFPYmplY3Qg
Km9iajsKICAgIFFNZW1iZXIgbWJyOwogICAgY29uc3QgY2hhciAqbWJyX25hbWU7CiAgICBpbnQg
bmFyZ3M7Cgpwcml2YXRlOgoKICAgIFFDb25uZWN0aW9uKCBjb25zdCBRQ29ubmVjdGlvbiAmICk7
CiAgICBRQ29ubmVjdGlvbiAmb3BlcmF0b3I9KCBjb25zdCBRQ29ubmVjdGlvbiAmICk7Cgp9Owoj
IDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FtZXRhb2JqZWN0
LmgiIDIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJs
aXN0LmgiIDEKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
c3RybGlzdC5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUv
cWxpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FsaXN0LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2xpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FnbGlzdC5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUv
cWNvbGxlY3Rpb24uaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9p
bmNsdWRlL3Fjb2xsZWN0aW9uLmgiCmNsYXNzIFFHVmVjdG9yOwpjbGFzcyBRR0xpc3Q7CmNsYXNz
IFFHRGljdDsKCgpjbGFzcyBRQ29sbGVjdGlvbgp7CnB1YmxpYzoKICAgIGJvb2wgYXV0b0RlbGV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGRlbF9pdGVtOyB9CiAgICB2b2lkIHNldEF1dG9EZWxldGUoIGJv
b2wgZW5hYmxlICkgeyBkZWxfaXRlbSA9IGVuYWJsZTsgfQoKICAgIHZpcnR1YWwgdWludCBjb3Vu
dCgpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKCiAgICB0eXBlZGVm
IHZvaWQgKkl0ZW07Cgpwcm90ZWN0ZWQ6CiAgICBRQ29sbGVjdGlvbigpIHsgZGVsX2l0ZW0gPSBG
QUxTRTsgfQogICAgUUNvbGxlY3Rpb24oY29uc3QgUUNvbGxlY3Rpb24gJikgeyBkZWxfaXRlbSA9
IEZBTFNFOyB9CiAgICB2aXJ0dWFsIH5RQ29sbGVjdGlvbigpIHt9CgogICAgYm9vbCBkZWxfaXRl
bTsKCiAgICB2aXJ0dWFsIEl0ZW0gbmV3SXRlbSggSXRlbSApOwogICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUl0ZW0oIEl0ZW0gKTsKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4z
LjIvaW5jbHVkZS9xZ2xpc3QuaCIgMgoKCgoKCgoKY2xhc3MgUUxOb2RlCnsKZnJpZW5kIGNsYXNz
IFFHTGlzdDsKZnJpZW5kIGNsYXNzIFFHTGlzdEl0ZXJhdG9yOwpwdWJsaWM6CiAgICBRQ29sbGVj
dGlvbjo6SXRlbSBnZXREYXRhKCkgeyByZXR1cm4gZGF0YTsgfQpwcml2YXRlOgogICAgUUNvbGxl
Y3Rpb246Okl0ZW0gZGF0YTsKICAgIFFMTm9kZSAqcHJldjsKICAgIFFMTm9kZSAqbmV4dDsKICAg
IFFMTm9kZSggUUNvbGxlY3Rpb246Okl0ZW0gZCApIHsgZGF0YSA9IGQ7IH0KfTsKCgoKCgoKY2xh
c3MgUUdMaXN0IDogcHVibGljIFFDb2xsZWN0aW9uCnsKZnJpZW5kIGNsYXNzIFFHTGlzdEl0ZXJh
dG9yOwpmcmllbmQgY2xhc3MgUUdWZWN0b3I7CnB1YmxpYzoKICAgIHVpbnQgY291bnQoKSBjb25z
dDsKCgogICAgUURhdGFTdHJlYW0gJnJlYWQoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFEYXRhU3Ry
ZWFtICZ3cml0ZSggUURhdGFTdHJlYW0gJiApIGNvbnN0OwoKcHJvdGVjdGVkOgogICAgUUdMaXN0
KCk7CiAgICBRR0xpc3QoIGNvbnN0IFFHTGlzdCAmICk7CiAgICB2aXJ0dWFsIH5RR0xpc3QoKTsK
CiAgICBRR0xpc3QgJm9wZXJhdG9yPSggY29uc3QgUUdMaXN0ICYgKTsKICAgIGJvb2wgb3BlcmF0
b3I9PSggY29uc3QgUUdMaXN0JiApIGNvbnN0OwoKICAgIHZvaWQgaW5Tb3J0KCBRQ29sbGVjdGlv
bjo6SXRlbSApOwogICAgdm9pZCBhcHBlbmQoIFFDb2xsZWN0aW9uOjpJdGVtICk7CiAgICBib29s
IGluc2VydEF0KCB1aW50IGluZGV4LCBRQ29sbGVjdGlvbjo6SXRlbSApOwogICAgdm9pZCByZWxp
bmtOb2RlKCBRTE5vZGUgKiApOwogICAgYm9vbCByZW1vdmVOb2RlKCBRTE5vZGUgKiApOwogICAg
Ym9vbCByZW1vdmUoIFFDb2xsZWN0aW9uOjpJdGVtID0gMCApOwogICAgYm9vbCByZW1vdmVSZWYo
IFFDb2xsZWN0aW9uOjpJdGVtID0gMCApOwogICAgYm9vbCByZW1vdmVGaXJzdCgpOwogICAgYm9v
bCByZW1vdmVMYXN0KCk7CiAgICBib29sIHJlbW92ZUF0KCB1aW50IGluZGV4ICk7CiAgICBRQ29s
bGVjdGlvbjo6SXRlbSB0YWtlTm9kZSggUUxOb2RlICogKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IHRha2UoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRha2VBdCggdWludCBpbmRleCApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZUZpcnN0KCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSB0YWtl
TGFzdCgpOwoKICAgIHZvaWQgc29ydCgpOwogICAgdm9pZCBjbGVhcigpOwoKICAgIGludCBmaW5k
UmVmKCBRQ29sbGVjdGlvbjo6SXRlbSwgYm9vbCA9IFRSVUUgKTsKICAgIGludCBmaW5kKCBRQ29s
bGVjdGlvbjo6SXRlbSwgYm9vbCA9IFRSVUUgKTsKCiAgICB1aW50IGNvbnRhaW5zUmVmKCBRQ29s
bGVjdGlvbjo6SXRlbSApIGNvbnN0OwogICAgdWludCBjb250YWlucyggUUNvbGxlY3Rpb246Okl0
ZW0gKSBjb25zdDsKCiAgICBRQ29sbGVjdGlvbjo6SXRlbSBhdCggdWludCBpbmRleCApOwogICAg
aW50IGF0KCkgY29uc3Q7CiAgICBRTE5vZGUgKmN1cnJlbnROb2RlKCkgY29uc3Q7CgogICAgUUNv
bGxlY3Rpb246Okl0ZW0gZ2V0KCkgY29uc3Q7CgogICAgUUNvbGxlY3Rpb246Okl0ZW0gY2ZpcnN0
KCkgY29uc3Q7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBjbGFzdCgpIGNvbnN0OwogICAgUUNvbGxl
Y3Rpb246Okl0ZW0gZmlyc3QoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIGxhc3QoKTsKICAgIFFD
b2xsZWN0aW9uOjpJdGVtIG5leHQoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHByZXYoKTsKCiAg
ICB2b2lkIHRvVmVjdG9yKCBRR1ZlY3RvciAqICkgY29uc3Q7CgogICAgdmlydHVhbCBpbnQgY29t
cGFyZUl0ZW1zKCBRQ29sbGVjdGlvbjo6SXRlbSwgUUNvbGxlY3Rpb246Okl0ZW0gKTsKCgogICAg
dmlydHVhbCBRRGF0YVN0cmVhbSAmcmVhZCggUURhdGFTdHJlYW0gJiwgUUNvbGxlY3Rpb246Okl0
ZW0gJiApOwogICAgdmlydHVhbCBRRGF0YVN0cmVhbSAmd3JpdGUoIFFEYXRhU3RyZWFtICYsIFFD
b2xsZWN0aW9uOjpJdGVtICkgY29uc3Q7Cgpwcml2YXRlOgogICAgdm9pZCBwcmVwZW5kKCBRQ29s
bGVjdGlvbjo6SXRlbSApOwoKICAgIHZvaWQgaGVhcFNvcnRQdXNoRG93biggUUNvbGxlY3Rpb246
Okl0ZW0qIGhlYXAsIGludCBmaXJzdCwgaW50IGxhc3QgKTsKCiAgICBRTE5vZGUgKmZpcnN0Tm9k
ZTsKICAgIFFMTm9kZSAqbGFzdE5vZGU7CiAgICBRTE5vZGUgKmN1ck5vZGU7CiAgICBpbnQgY3Vy
SW5kZXg7CiAgICB1aW50IG51bU5vZGVzOwogICAgUUdMaXN0ICppdGVyYXRvcnM7CgogICAgUUxO
b2RlICpsb2NhdGUoIHVpbnQgKTsKICAgIFFMTm9kZSAqdW5saW5rKCk7Cn07CgoKaW5saW5lIHVp
bnQgUUdMaXN0Ojpjb3VudCgpIGNvbnN0CnsKICAgIHJldHVybiBudW1Ob2RlczsKfQoKaW5saW5l
IGJvb2wgUUdMaXN0OjpyZW1vdmVGaXJzdCgpCnsKICAgIGZpcnN0KCk7CiAgICByZXR1cm4gcmVt
b3ZlKCk7Cn0KCmlubGluZSBib29sIFFHTGlzdDo6cmVtb3ZlTGFzdCgpCnsKICAgIGxhc3QoKTsK
ICAgIHJldHVybiByZW1vdmUoKTsKfQoKaW5saW5lIGludCBRR0xpc3Q6OmF0KCkgY29uc3QKewog
ICAgcmV0dXJuIGN1ckluZGV4Owp9CgppbmxpbmUgUUNvbGxlY3Rpb246Okl0ZW0gUUdMaXN0Ojph
dCggdWludCBpbmRleCApCnsKICAgIFFMTm9kZSAqbiA9IGxvY2F0ZSggaW5kZXggKTsKICAgIHJl
dHVybiBuID8gbi0+ZGF0YSA6IDA7Cn0KCmlubGluZSBRTE5vZGUgKlFHTGlzdDo6Y3VycmVudE5v
ZGUoKSBjb25zdAp7CiAgICByZXR1cm4gY3VyTm9kZTsKfQoKaW5saW5lIFFDb2xsZWN0aW9uOjpJ
dGVtIFFHTGlzdDo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyBjdXJOb2RlLT5k
YXRhIDogMDsKfQoKaW5saW5lIFFDb2xsZWN0aW9uOjpJdGVtIFFHTGlzdDo6Y2ZpcnN0KCkgY29u
c3QKewogICAgcmV0dXJuIGZpcnN0Tm9kZSA/IGZpcnN0Tm9kZS0+ZGF0YSA6IDA7Cn0KCmlubGlu
ZSBRQ29sbGVjdGlvbjo6SXRlbSBRR0xpc3Q6OmNsYXN0KCkgY29uc3QKewogICAgcmV0dXJuIGxh
c3ROb2RlID8gbGFzdE5vZGUtPmRhdGEgOiAwOwp9CgoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJh
dG9yPj4oIFFEYXRhU3RyZWFtICYsIFFHTGlzdCAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8
PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUUdMaXN0ICYgKTsKCgoKCgoKY2xhc3MgUUdMaXN0SXRl
cmF0b3IKewpmcmllbmQgY2xhc3MgUUdMaXN0Owpwcm90ZWN0ZWQ6CiAgICBRR0xpc3RJdGVyYXRv
ciggY29uc3QgUUdMaXN0ICYgKTsKICAgIFFHTGlzdEl0ZXJhdG9yKCBjb25zdCBRR0xpc3RJdGVy
YXRvciAmICk7CiAgICBRR0xpc3RJdGVyYXRvciAmb3BlcmF0b3I9KCBjb25zdCBRR0xpc3RJdGVy
YXRvciAmICk7CiAgIH5RR0xpc3RJdGVyYXRvcigpOwoKICAgIGJvb2wgYXRGaXJzdCgpIGNvbnN0
OwogICAgYm9vbCBhdExhc3QoKSBjb25zdDsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRvRmlyc3Qo
KTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRvTGFzdCgpOwoKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IGdldCgpIGNvbnN0OwogICAgUUNvbGxlY3Rpb246Okl0ZW0gb3BlcmF0b3IoKSgpOwogICAgUUNv
bGxlY3Rpb246Okl0ZW0gb3BlcmF0b3IrKygpOwogICAgUUNvbGxlY3Rpb246Okl0ZW0gb3BlcmF0
b3IrPSh1aW50KTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIG9wZXJhdG9yLS0oKTsKICAgIFFDb2xs
ZWN0aW9uOjpJdGVtIG9wZXJhdG9yLT0odWludCk7Cgpwcm90ZWN0ZWQ6CiAgICBRR0xpc3QgKmxp
c3Q7Cgpwcml2YXRlOgogICAgUUxOb2RlICpjdXJOb2RlOwp9OwoKCmlubGluZSBib29sIFFHTGlz
dEl0ZXJhdG9yOjphdEZpcnN0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPT0gbGlzdC0+
Zmlyc3ROb2RlOwp9CgppbmxpbmUgYm9vbCBRR0xpc3RJdGVyYXRvcjo6YXRMYXN0KCkgY29uc3QK
ewogICAgcmV0dXJuIGN1ck5vZGUgPT0gbGlzdC0+bGFzdE5vZGU7Cn0KCmlubGluZSBRQ29sbGVj
dGlvbjo6SXRlbSBRR0xpc3RJdGVyYXRvcjo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5v
ZGUgPyBjdXJOb2RlLT5kYXRhIDogMDsKfQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9x
dC0yLjMuMi9pbmNsdWRlL3FsaXN0LmgiIDIKCgoKdGVtcGxhdGU8Y2xhc3MgdHlwZT4gY2xhc3Mg
UUxpc3QgOiBwdWJsaWMgUUdMaXN0CnsKcHVibGljOgogICAgUUxpc3QoKSB7fQogICAgUUxpc3Qo
IGNvbnN0IFFMaXN0PHR5cGU+ICZsICkgOiBRR0xpc3QobCkge30KICAgflFMaXN0KCkgeyBjbGVh
cigpOyB9CiAgICBRTGlzdDx0eXBlPiAmb3BlcmF0b3I9KGNvbnN0IFFMaXN0PHR5cGU+ICZsKQog
ICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiAoUUxpc3Q8dHlwZT4mKVFHTGlzdDo6b3Bl
cmF0b3I9KGwpOyB9CiAgICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFMaXN0PHR5cGU+ICZsaXN0
ICkgY29uc3QKICAgIHsgcmV0dXJuIFFHTGlzdDo6b3BlcmF0b3I9PSggbGlzdCApOyB9CiAgICB1
aW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gUUdMaXN0Ojpjb3VudCgpOyB9CiAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0xpc3Q6OmNvdW50KCkgPT0gMDsgfQogICAgYm9vbCBp
bnNlcnQoIHVpbnQgaSwgY29uc3QgdHlwZSAqZCl7IHJldHVybiBRR0xpc3Q6Omluc2VydEF0KGks
KFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIGluU29ydCggY29uc3QgdHlwZSAqZCAp
IHsgUUdMaXN0OjppblNvcnQoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIHByZXBl
bmQoIGNvbnN0IHR5cGUgKmQgKSB7IFFHTGlzdDo6aW5zZXJ0QXQoMCwoUUNvbGxlY3Rpb246Okl0
ZW0pZCk7IH0KICAgIHZvaWQgYXBwZW5kKCBjb25zdCB0eXBlICpkICkgeyBRR0xpc3Q6OmFwcGVu
ZCgoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIGJvb2wgcmVtb3ZlKCB1aW50IGkgKSB7IHJl
dHVybiBRR0xpc3Q6OnJlbW92ZUF0KGkpOyB9CiAgICBib29sIHJlbW92ZSgpIHsgcmV0dXJuIFFH
TGlzdDo6cmVtb3ZlKChRQ29sbGVjdGlvbjo6SXRlbSkwKTsgfQogICAgYm9vbCByZW1vdmUoIGNv
bnN0IHR5cGUgKmQgKSB7IHJldHVybiBRR0xpc3Q6OnJlbW92ZSgoUUNvbGxlY3Rpb246Okl0ZW0p
ZCk7IH0KICAgIGJvb2wgcmVtb3ZlUmVmKCBjb25zdCB0eXBlICpkICkgeyByZXR1cm4gUUdMaXN0
OjpyZW1vdmVSZWYoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIHJlbW92ZU5vZGUo
IFFMTm9kZSAqbiApIHsgUUdMaXN0OjpyZW1vdmVOb2RlKG4pOyB9CiAgICBib29sIHJlbW92ZUZp
cnN0KCkgeyByZXR1cm4gUUdMaXN0OjpyZW1vdmVGaXJzdCgpOyB9CiAgICBib29sIHJlbW92ZUxh
c3QoKSB7IHJldHVybiBRR0xpc3Q6OnJlbW92ZUxhc3QoKTsgfQogICAgdHlwZSAqdGFrZSggdWlu
dCBpICkgeyByZXR1cm4gKHR5cGUgKilRR0xpc3Q6OnRha2VBdChpKTsgfQogICAgdHlwZSAqdGFr
ZSgpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0Ojp0YWtlKCk7IH0KICAgIHR5cGUgKnRha2VOb2Rl
KCBRTE5vZGUgKm4gKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdDo6dGFrZU5vZGUobik7IH0KICAg
IHZvaWQgY2xlYXIoKSB7IFFHTGlzdDo6Y2xlYXIoKTsgfQogICAgdm9pZCBzb3J0KCkgeyBRR0xp
c3Q6OnNvcnQoKTsgfQogICAgaW50IGZpbmQoIGNvbnN0IHR5cGUgKmQgKSB7IHJldHVybiBRR0xp
c3Q6OmZpbmQoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICBpbnQgZmluZE5leHQoIGNvbnN0
IHR5cGUgKmQgKSB7IHJldHVybiBRR0xpc3Q6OmZpbmQoKFFDb2xsZWN0aW9uOjpJdGVtKWQsRkFM
U0UpOyB9CiAgICBpbnQgZmluZFJlZiggY29uc3QgdHlwZSAqZCApIHsgcmV0dXJuIFFHTGlzdDo6
ZmluZFJlZigoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIGludCBmaW5kTmV4dFJlZiggY29u
c3QgdHlwZSAqZCApeyByZXR1cm4gUUdMaXN0OjpmaW5kUmVmKChRQ29sbGVjdGlvbjo6SXRlbSlk
LEZBTFNFKTt9CiAgICB1aW50IGNvbnRhaW5zKCBjb25zdCB0eXBlICpkICkgY29uc3QgeyByZXR1
cm4gUUdMaXN0Ojpjb250YWlucygoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIHVpbnQgY29u
dGFpbnNSZWYoIGNvbnN0IHR5cGUgKmQgKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyByZXR1cm4gUUdMaXN0Ojpjb250YWluc1JlZigoUUNvbGxlY3Rpb246
Okl0ZW0pZCk7IH0KICAgIHR5cGUgKmF0KCB1aW50IGkgKSB7IHJldHVybiAodHlwZSAqKVFHTGlz
dDo6YXQoaSk7IH0KICAgIGludCBhdCgpIGNvbnN0IHsgcmV0dXJuIFFHTGlzdDo6YXQoKTsgfQog
ICAgdHlwZSAqY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdMaXN0OjpnZXQoKTsg
fQogICAgUUxOb2RlICpjdXJyZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIFFHTGlzdDo6Y3VycmVu
dE5vZGUoKTsgfQogICAgdHlwZSAqZ2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAodHlwZSAqKVFH
TGlzdDo6Y2ZpcnN0KCk7IH0KICAgIHR5cGUgKmdldExhc3QoKSBjb25zdCB7IHJldHVybiAodHlw
ZSAqKVFHTGlzdDo6Y2xhc3QoKTsgfQogICAgdHlwZSAqZmlyc3QoKSB7IHJldHVybiAodHlwZSAq
KVFHTGlzdDo6Zmlyc3QoKTsgfQogICAgdHlwZSAqbGFzdCgpIHsgcmV0dXJuICh0eXBlICopUUdM
aXN0OjpsYXN0KCk7IH0KICAgIHR5cGUgKm5leHQoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdDo6
bmV4dCgpOyB9CiAgICB0eXBlICpwcmV2KCkgeyByZXR1cm4gKHR5cGUgKilRR0xpc3Q6OnByZXYo
KTsgfQogICAgdm9pZCB0b1ZlY3RvciggUUdWZWN0b3IgKnZlYyApY29uc3R7IFFHTGlzdDo6dG9W
ZWN0b3IodmVjKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6
SXRlbSBkICk7Cn07CgoKdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCBRTGlzdDx2b2lkPjo6ZGVsZXRl
SXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gKQp7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBpbmxp
bmUgdm9pZCBRTGlzdDx0eXBlPjo6ZGVsZXRlSXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gZCApCnsK
ICAgIGlmICggZGVsX2l0ZW0gKSBkZWxldGUgKHR5cGUgKilkOwp9CgoKdGVtcGxhdGU8Y2xhc3Mg
dHlwZT4gY2xhc3MgUUxpc3RJdGVyYXRvciA6IHB1YmxpYyBRR0xpc3RJdGVyYXRvcgp7CnB1Ymxp
YzoKICAgIFFMaXN0SXRlcmF0b3IoY29uc3QgUUxpc3Q8dHlwZT4gJmwpIDpRR0xpc3RJdGVyYXRv
cigoUUdMaXN0ICYpbCkge30KICAgflFMaXN0SXRlcmF0b3IoKSB7fQogICAgdWludCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIGxpc3QtPmNvdW50KCk7IH0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIGxpc3QtPmNvdW50KCkgPT0gMDsgfQogICAgYm9vbCBhdEZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gUUdMaXN0SXRlcmF0b3I6OmF0Rmlyc3QoKTsgfQogICAgYm9vbCBhdExhc3QoKSBj
b25zdCB7IHJldHVybiBRR0xpc3RJdGVyYXRvcjo6YXRMYXN0KCk7IH0KICAgIHR5cGUgKnRvRmly
c3QoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJhdG9yOjp0b0ZpcnN0KCk7IH0KICAgIHR5
cGUgKnRvTGFzdCgpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6OnRvTGFzdCgpOyB9
CiAgICBvcGVyYXRvciB0eXBlICooKSBjb25zdCB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJh
dG9yOjpnZXQoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IqKCkgeyByZXR1cm4gKHR5cGUgKilRR0xp
c3RJdGVyYXRvcjo6Z2V0KCk7IH0KCgoKCgoKCiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyBy
ZXR1cm4gKHR5cGUgKilRR0xpc3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIHR5cGUgKm9wZXJhdG9y
KCkoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJhdG9yOjpvcGVyYXRvcigpKCk7fQogICAg
dHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJh
dG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJuICh0eXBlICop
UUdMaXN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQogICAgdHlwZSAqb3BlcmF0b3ItLSgpIHsg
cmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJhdG9yLS0oKTsgfQogICAgdHlwZSAq
b3BlcmF0b3ItPSh1aW50IGopIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJh
dG9yLT0oaik7fQogICAgUUxpc3RJdGVyYXRvcjx0eXBlPiYgb3BlcmF0b3I9KGNvbnN0IFFMaXN0
SXRlcmF0b3I8dHlwZT4maXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUUdMaXN0
SXRlcmF0b3I6Om9wZXJhdG9yPShpdCk7IHJldHVybiAqdGhpczsgfQp9OwojIDQ0ICIvdXNyL3Ny
Yy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJsaXN0LmgiIDIKIyA1MyAiL3Vz
ci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RybGlzdC5oIgp0eXBlZGVm
IFFMaXN0PGNoYXI+IFFTdHJMaXN0QmFzZTsKdHlwZWRlZiBRTGlzdEl0ZXJhdG9yPGNoYXI+IFFT
dHJMaXN0SXRlcmF0b3I7CgoKY2xhc3MgUVN0ckxpc3QgOiBwdWJsaWMgUVN0ckxpc3RCYXNlCnsK
cHVibGljOgogICAgUVN0ckxpc3QoIGJvb2wgZGVlcENvcGllcz1UUlVFICkgeyBkYyA9IGRlZXBD
b3BpZXM7IGRlbF9pdGVtID0gZGVlcENvcGllczsgfQogICAgUVN0ckxpc3QoIGNvbnN0IFFTdHJM
aXN0ICYgKTsKICAgflFTdHJMaXN0KCkgeyBjbGVhcigpOyB9CiAgICBRU3RyTGlzdCYgb3BlcmF0
b3I9KCBjb25zdCBRU3RyTGlzdCAmICk7Cgpwcml2YXRlOgogICAgUUNvbGxlY3Rpb246Okl0ZW0g
bmV3SXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gZCApIHsgcmV0dXJuIGRjID8gcXN0cmR1cCggKGNv
bnN0IGNoYXIqKWQgKSA6IGQ7IH0KICAgIHZvaWQgZGVsZXRlSXRlbSggUUNvbGxlY3Rpb246Okl0
ZW0gZCApIHsgaWYgKCBkZWxfaXRlbSApIGRlbGV0ZVtdIChjaGFyKilkOyB9CiAgICBpbnQgY29t
cGFyZUl0ZW1zKCBRQ29sbGVjdGlvbjo6SXRlbSBzMSwgUUNvbGxlY3Rpb246Okl0ZW0gczIgKSB7
IHJldHVybiBxc3RyY21wKChjb25zdCBjaGFyKilzMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKXMyKTsgfQoKICAg
IFFEYXRhU3RyZWFtICZyZWFkKCBRRGF0YVN0cmVhbSAmcywgUUNvbGxlY3Rpb246Okl0ZW0gJmQg
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcyA+PiAoY2hhciAqJilkOyByZXR1
cm4gczsgfQogICAgUURhdGFTdHJlYW0gJndyaXRlKCBRRGF0YVN0cmVhbSAmcywgUUNvbGxlY3Rp
b246Okl0ZW0gZCApIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1
cm4gcyA8PCAoY29uc3QgY2hhciAqKWQ7IH0KCiAgICBib29sIGRjOwp9OwoKCmNsYXNzIFFTdHJJ
TGlzdCA6IHB1YmxpYyBRU3RyTGlzdAp7CnB1YmxpYzoKICAgIFFTdHJJTGlzdCggYm9vbCBkZWVw
Q29waWVzPVRSVUUgKSA6IFFTdHJMaXN0KCBkZWVwQ29waWVzICkge30KICAgflFTdHJJTGlzdCgp
IHsgY2xlYXIoKTsgfQpwcml2YXRlOgogICAgaW50IGNvbXBhcmVJdGVtcyggUUNvbGxlY3Rpb246
Okl0ZW0gczEsIFFDb2xsZWN0aW9uOjpJdGVtIHMyICkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHJldHVybiBxc3RyaWNtcCgoY29uc3QgY2hhciopczEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopczIpOyB9
Cn07CgoKaW5saW5lIFFTdHJMaXN0ICYgUVN0ckxpc3Q6Om9wZXJhdG9yPSggY29uc3QgUVN0ckxp
c3QgJnN0ckxpc3QgKQp7CiAgICBjbGVhcigpOwogICAgZGMgPSBzdHJMaXN0LmRjOwogICAgZGVs
X2l0ZW0gPSBkYzsKICAgIFFTdHJMaXN0QmFzZTo6b3BlcmF0b3I9KHN0ckxpc3QpOwogICAgcmV0
dXJuICp0aGlzOwp9CgppbmxpbmUgUVN0ckxpc3Q6OlFTdHJMaXN0KCBjb25zdCBRU3RyTGlzdCAm
c3RyTGlzdCApCiAgICA6IFFTdHJMaXN0QmFzZSggc3RyTGlzdCApCnsKICAgIGRjID0gRkFMU0U7
CiAgICBvcGVyYXRvcj0oc3RyTGlzdCk7Cn0KIyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xbWV0YW9iamVjdC5oIiAyCgoKY2xhc3MgUU9iamVjdDsKCnN0cnVj
dCBRTWV0YURhdGEKewogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIFFNZW1iZXIgcHRyOwogICAg
ZW51bSBBY2Nlc3MgeyBQcml2YXRlLCBQcm90ZWN0ZWQsIFB1YmxpYyB9OwoKCgp9OwoKCnN0cnVj
dCBRTWV0YUVudW0KewogICAgUU1ldGFFbnVtKCkgeyB9CiAgICB+UU1ldGFFbnVtKCkgeyBkZWxl
dGUgW10gaXRlbXM7IH0KICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB1aW50IGNvdW50OwogICAg
c3RydWN0IEl0ZW0KICAgIHsKICAgICAgICBjb25zdCBjaGFyICprZXk7CiAgICAgICAgaW50IHZh
bHVlOwogICAgfTsKICAgIEl0ZW0gKml0ZW1zOwogICAgYm9vbCBzZXQ7Cn07CgoKY2xhc3MgUU1l
dGFQcm9wZXJ0eQp7CnB1YmxpYzoKICAgIFFNZXRhUHJvcGVydHkoKTsKICAgIH5RTWV0YVByb3Bl
cnR5KCk7CgogICAgY29uc3QgY2hhciAqdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHQ7IH0KICAgIGNv
bnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBuOyB9CgogICAgYm9vbCB3cml0YWJsZSgp
IGNvbnN0OwogICAgYm9vbCB3cml0ZWFibGUoKSBjb25zdDsKICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OwoKICAgIGJvb2wgaXNTZXRUeXBlKCkgY29uc3Q7CiAgICBib29sIGlzRW51bVR5cGUoKSBj
b25zdDsKICAgIFFTdHJMaXN0IGVudW1LZXlzKCkgY29uc3Q7CgogICAgaW50IGtleVRvVmFsdWUo
IGNvbnN0IGNoYXIqIGtleSApIGNvbnN0OwogICAgY29uc3QgY2hhciogdmFsdWVUb0tleSggaW50
IHZhbHVlICkgY29uc3Q7CiAgICBpbnQga2V5c1RvVmFsdWUoIGNvbnN0IFFTdHJMaXN0JiBrZXlz
ICkgY29uc3Q7CiAgICBRU3RyTGlzdCB2YWx1ZVRvS2V5cyggaW50IHZhbHVlICkgY29uc3Q7Cgog
ICAgYm9vbCBzdG9yZWQoIFFPYmplY3QqICkgY29uc3Q7CiAgICBib29sIGRlc2lnbmFibGUoKSBj
b25zdDsKCiAgICBjb25zdCBjaGFyKiB0OwogICAgY29uc3QgY2hhciogbjsKICAgIFFNZW1iZXIg
Z2V0OwogICAgUU1lbWJlciBzZXQ7CiAgICBRTWVtYmVyIHN0b3JlOwogICAgUU1lbWJlciByZXNl
dDsKICAgIFFNZXRhRW51bSAqZW51bURhdGE7CgogICAgZW51bSBTcGVjaWZpY2F0aW9uIHsgVW5z
cGVjaWZpZWQsIENsYXNzLCBSZWZlcmVuY2UsIFBvaW50ZXIsIENvbnN0Q2hhclN0YXIgfTsKICAg
IFNwZWNpZmljYXRpb24gZ3NwZWM7CiAgICBTcGVjaWZpY2F0aW9uIHNzcGVjOwoKICAgIGVudW0g
RmxhZ3MgewogICAgICAgIFVucmVzb2x2ZWRFbnVtID0gMHgwMDAwMDAwMSwKICAgICAgICBVbnJl
c29sdmVkU2V0ID0gMHgwMDAwMDAwMiwKICAgICAgICBVbnJlc29sdmVkRW51bU9yU2V0ID0gMHgw
MDAwMDAwNCwKICAgICAgICBVbnJlc29sdmVkU3RvcmVkID0gMHgwMDAwMDAwOCwKICAgICAgICBV
bnJlc29sdmVkRGVzaWduYWJsZSA9IDB4MDAwMDAwMTAsCiAgICAgICAgTm90RGVzaWduYWJsZSA9
IDB4MDAwMDAwMjAsCiAgICAgICAgTm90U3RvcmVkID0gMHgwMDAwMDA0MCwKICAgICAgICBTdGRT
ZXQgPSAweDAwMDAwMDgwCiAgICB9OwoKICAgIGJvb2wgdGVzdEZsYWdzKCB1aW50IGYgKSBjb25z
dDsKICAgIHZvaWQgc2V0RmxhZ3MoIHVpbnQgZiApOwogICAgdm9pZCBjbGVhckZsYWdzKCB1aW50
IGYgKTsKCnByaXZhdGU6CiAgICB1aW50IGZsYWdzOwp9OwoKCnN0cnVjdCBRQ2xhc3NJbmZvCnsK
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICBjb25zdCBjaGFyKiB2YWx1ZTsKfTsKCmNsYXNzIFFN
ZXRhT2JqZWN0UHJpdmF0ZTsKCmNsYXNzIFFNZXRhT2JqZWN0CnsKcHVibGljOgogICAgUU1ldGFP
YmplY3QoIGNvbnN0IGNoYXIgKmNsYXNzX25hbWUsIGNvbnN0IGNoYXIgKnN1cGVyY2xhc3NfbmFt
ZSwKICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKnNsb3RfZGF0YSwgaW50IG5fc2xvdHMsCiAg
ICAgICAgICAgICAgICAgUU1ldGFEYXRhICpzaWduYWxfZGF0YSwgaW50IG5fc2lnbmFscyApOwog
ICAgUU1ldGFPYmplY3QoIGNvbnN0IGNoYXIgKmNsYXNzX25hbWUsIGNvbnN0IGNoYXIgKnN1cGVy
Y2xhc3NfbmFtZSwKICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKnNsb3RfZGF0YSwgaW50IG5f
c2xvdHMsCiAgICAgICAgICAgICAgICAgUU1ldGFEYXRhICpzaWduYWxfZGF0YSwgaW50IG5fc2ln
bmFscywKCiAgICAgICAgICAgICAgICAgUU1ldGFQcm9wZXJ0eSAqcHJvcF9kYXRhLCBpbnQgbl9w
cm9wcywKICAgICAgICAgICAgICAgICBRTWV0YUVudW0gKmVudW1fZGF0YSwgaW50IG5fZW51bXMs
CgogICAgICAgICAgICAgICAgIFFDbGFzc0luZm8gKmNsYXNzX2luZm8sIGludCBuX2luZm8gKTsK
CgogICAgdmlydHVhbCB+UU1ldGFPYmplY3QoKTsKCiAgICBjb25zdCBjaGFyICpjbGFzc05hbWUo
KSBjb25zdCB7IHJldHVybiBjbGFzc25hbWU7IH0KICAgIGNvbnN0IGNoYXIgKnN1cGVyQ2xhc3NO
YW1lKCkgY29uc3QgeyByZXR1cm4gc3VwZXJjbGFzc25hbWU7IH0KCiAgICBRTWV0YU9iamVjdCAq
c3VwZXJDbGFzcygpIGNvbnN0IHsgcmV0dXJuIHN1cGVyY2xhc3M7IH0KCiAgICBib29sIGluaGVy
aXRzKCBjb25zdCBjaGFyKiBjbG5hbWUgKSBjb25zdDsKCiAgICBpbnQgbnVtU2xvdHMoIGJvb2wg
c3VwZXIgPSBGQUxTRSApIGNvbnN0OwogICAgaW50IG51bVNpZ25hbHMoIGJvb2wgc3VwZXIgPSBG
QUxTRSApIGNvbnN0OwoKICAgIFFNZXRhRGF0YSAqc2xvdCggaW50IGluZGV4LCBib29sIHN1cGVy
ID0gRkFMU0UgKSBjb25zdDsKICAgIFFNZXRhRGF0YSAqc2lnbmFsKCBpbnQgaW5kZXgsIGJvb2wg
c3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKICAgIFFNZXRhRGF0YSAqc2xvdCggY29uc3QgY2hhciAq
LCBib29sIHN1cGVyID0gRkFMU0UgKSBjb25zdDsKICAgIFFNZXRhRGF0YSAqc2lnbmFsKCBjb25z
dCBjaGFyICosIGJvb2wgc3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKICAgIFFTdHJMaXN0IHNsb3RO
YW1lcyggYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBRU3RyTGlzdCBzaWduYWxOYW1l
cyggYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CgogICAgaW50IG51bUNsYXNzSW5mbyggYm9v
bCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBRQ2xhc3NJbmZvICpjbGFzc0luZm8oIGludCBp
bmRleCwgYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBjb25zdCBjaGFyICpjbGFzc0lu
Zm8oIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgc3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKCiAgICBj
b25zdCBRTWV0YVByb3BlcnR5ICpwcm9wZXJ0eSggY29uc3QgY2hhciogbmFtZSwgYm9vbCBzdXBl
ciA9IEZBTFNFICkgY29uc3Q7CiAgICBRU3RyTGlzdCBwcm9wZXJ0eU5hbWVzKCBib29sIHN1cGVy
ID0gRkFMU0UgKSBjb25zdDsKICAgIHZvaWQgcmVzb2x2ZVByb3BlcnR5KCBRTWV0YVByb3BlcnR5
KiBwcm9wICk7CgoKCgoKICAgIHN0YXRpYyBRTWV0YU9iamVjdCAqbmV3X21ldGFvYmplY3QoIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUU1ldGFEYXRhICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFNZXRhRGF0YSAqLCBpbnQsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUU1ldGFQcm9wZXJ0eSAqcHJvcF9kYXRhLCBpbnQgbl9wcm9wcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXRhRW51bSAqZW51bV9kYXRhLCBp
bnQgbl9lbnVtcywKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ2xh
c3NJbmZvICogY2xhc3NfaW5mbywgaW50IG5faW5mbyApOwogICAgc3RhdGljIFFNZXRhT2JqZWN0
ICpuZXdfbWV0YW9iamVjdCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKiwgaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1ldGFEYXRhICosIGludCApOwogICAgc3Rh
dGljIFFNZXRhRGF0YSAqbmV3X21ldGFkYXRhKCBpbnQgKTsKICAgIHN0YXRpYyBRTWV0YURhdGE6
OkFjY2VzcyAqbmV3X21ldGFhY2Nlc3MoIGludCApOwogICAgdm9pZCBzZXRfc2xvdF9hY2Nlc3Mo
IFFNZXRhRGF0YTo6QWNjZXNzKiApOwogICAgUU1ldGFEYXRhOjpBY2Nlc3Mgc2xvdF9hY2Nlc3Mo
aW50IGluZGV4LCBib29sIHN1cGVyID0gRkFMU0UgKTsKICAgIHN0YXRpYyBRTWV0YUVudW0gKm5l
d19tZXRhZW51bSggaW50ICk7CiAgICBzdGF0aWMgUU1ldGFFbnVtOjpJdGVtICpuZXdfbWV0YWVu
dW1faXRlbSggaW50ICk7CgogICAgc3RhdGljIFFNZXRhUHJvcGVydHkgKm5ld19tZXRhcHJvcGVy
dHkoIGludCApOwoKICAgIHN0YXRpYyBRQ2xhc3NJbmZvICpuZXdfY2xhc3NpbmZvKCBpbnQgKTsK
CnByaXZhdGU6CiAgICBRTWVtYmVyRGljdCAqaW5pdCggUU1ldGFEYXRhICosIGludCApOwogICAg
UU1ldGFEYXRhICptZGF0YSggaW50IGNvZGUsIGNvbnN0IGNoYXIgKiwgYm9vbCApIGNvbnN0Owog
ICAgUU1ldGFEYXRhICptZGF0YSggaW50IGNvZGUsIGludCBpbmRleCwgYm9vbCBzdXBlciApIGNv
bnN0OwoKICAgIGNvbnN0IGNoYXIgKmNsYXNzbmFtZTsKICAgIGNvbnN0IGNoYXIgKnN1cGVyY2xh
c3NuYW1lOwogICAgUU1ldGFPYmplY3QgKnN1cGVyY2xhc3M7CiAgICBRTWV0YU9iamVjdFByaXZh
dGUgKmQ7CiAgICB2b2lkICpyZXNlcnZlZDsKICAgIFFNZXRhRGF0YSAqc2xvdERhdGE7CiAgICBR
TWVtYmVyRGljdCAqc2xvdERpY3Q7CiAgICBRTWV0YURhdGEgKnNpZ25hbERhdGE7CiAgICBRTWVt
YmVyRGljdCAqc2lnbmFsRGljdDsKICAgIFFNZXRhRW51bSAqZW51bWVyYXRvciggY29uc3QgY2hh
ciogbmFtZSwgYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7Cgpwcml2YXRlOgoKICAgIFFNZXRh
T2JqZWN0KCBjb25zdCBRTWV0YU9iamVjdCAmICk7CiAgICBRTWV0YU9iamVjdCAmb3BlcmF0b3I9
KCBjb25zdCBRTWV0YU9iamVjdCAmICk7Cgp9OwoKCmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6
OndyaXRhYmxlKCkgY29uc3QKeyByZXR1cm4gc2V0ICE9IDA7IH0KaW5saW5lIGJvb2wgUU1ldGFQ
cm9wZXJ0eTo6d3JpdGVhYmxlKCkgY29uc3QKeyByZXR1cm4gc2V0ICE9IDA7IH0KaW5saW5lIGJv
b2wgUU1ldGFQcm9wZXJ0eTo6dGVzdEZsYWdzKCB1aW50IGYgKSBjb25zdAp7IHJldHVybiAoZmxh
Z3MgJiAodWludClmKSAhPSAodWludCkwOyB9CmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6Omlz
VmFsaWQoKSBjb25zdAp7IHJldHVybiBnZXQgIT0gMCAmJiAhdGVzdEZsYWdzKCBVbnJlc29sdmVk
RW51bSB8IFVucmVzb2x2ZWREZXNpZ25hYmxlIHwgVW5yZXNvbHZlZFN0b3JlZCApIDsgfQppbmxp
bmUgYm9vbCBRTWV0YVByb3BlcnR5Ojppc1NldFR5cGUoKSBjb25zdAp7IHJldHVybiAoIGVudW1E
YXRhICE9IDAgJiYgZW51bURhdGEtPnNldCApOyB9CmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6
OmlzRW51bVR5cGUoKSBjb25zdAp7IHJldHVybiAoIGVudW1EYXRhICE9IDAgKTsgfQppbmxpbmUg
Ym9vbCBRTWV0YVByb3BlcnR5OjpkZXNpZ25hYmxlKCkgY29uc3QKeyByZXR1cm4gKCBpc1ZhbGlk
KCkgJiYgc2V0ICE9IDAgJiYgIXRlc3RGbGFncyggTm90RGVzaWduYWJsZSB8IFVucmVzb2x2ZWRE
ZXNpZ25hYmxlICkgKTsgfQppbmxpbmUgdm9pZCBRTWV0YVByb3BlcnR5OjpzZXRGbGFncyggdWlu
dCBmICkKeyBmbGFncyB8PSAodWludClmOyB9CmlubGluZSB2b2lkIFFNZXRhUHJvcGVydHk6OmNs
ZWFyRmxhZ3MoIHVpbnQgZiApCnsgZmxhZ3MgJj0gfih1aW50KWY7IH0KCgoKY2xhc3MgUU1ldGFP
YmplY3RJbml0IHsKcHVibGljOgogICAgUU1ldGFPYmplY3RJbml0KHZvaWQoKikoKSk7CiAgICBz
dGF0aWMgaW50IGluaXQoKTsKfTsKIyAxOCAia2VybmVsL21vY19xd2lkZ2V0LmNwcCIgMgojIDEg
Ii91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9uLmgi
IDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGlj
YXRpb24uaCIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F3
aWRnZXQuaCIgMQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FhcHBsaWNhdGlvbi5oIiAyCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xYXNjaWlkaWN0LmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQt
Mi4zLjIvaW5jbHVkZS9xYXNjaWlkaWN0LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xZ2RpY3QuaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FnZGljdC5oIgpjbGFzcyBRR0RpY3RJdGVyYXRvcjsKY2xhc3Mg
UUdESXRMaXN0OwoKCmNsYXNzIFFCYXNlQnVja2V0CnsKcHVibGljOgogICAgUUNvbGxlY3Rpb246
Okl0ZW0gZ2V0RGF0YSgpIHsgcmV0dXJuIGRhdGE7IH0KICAgIFFDb2xsZWN0aW9uOjpJdGVtIHNl
dERhdGEoIFFDb2xsZWN0aW9uOjpJdGVtIGQgKSB7IHJldHVybiBkYXRhID0gZDsgfQogICAgUUJh
c2VCdWNrZXQgKmdldE5leHQoKSB7IHJldHVybiBuZXh0OyB9CiAgICB2b2lkIHNldE5leHQoIFFC
YXNlQnVja2V0ICpuKSB7IG5leHQgPSBuOyB9CnByb3RlY3RlZDoKICAgIFFCYXNlQnVja2V0KCBR
Q29sbGVjdGlvbjo6SXRlbSBkLCBRQmFzZUJ1Y2tldCAqbiApIDogZGF0YShkKSwgbmV4dChuKSB7
fQogICAgUUNvbGxlY3Rpb246Okl0ZW0gZGF0YTsKICAgIFFCYXNlQnVja2V0ICpuZXh0Owp9OwoK
Y2xhc3MgUVN0cmluZ0J1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7CnB1YmxpYzoKICAgIFFT
dHJpbmdCdWNrZXQoIGNvbnN0IFFTdHJpbmcgJmssIFFDb2xsZWN0aW9uOjpJdGVtIGQsIFFCYXNl
QnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShrKSB7fQogICAgY29u
c3QgUVN0cmluZyAmZ2V0S2V5KCkgY29uc3QgeyByZXR1cm4ga2V5OyB9CnByaXZhdGU6CiAgICBR
U3RyaW5nIGtleTsKfTsKCmNsYXNzIFFBc2NpaUJ1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7
CnB1YmxpYzoKICAgIFFBc2NpaUJ1Y2tldCggY29uc3QgY2hhciAqaywgUUNvbGxlY3Rpb246Okl0
ZW0gZCwgUUJhc2VCdWNrZXQgKm4gKQogICAgICAgIDogUUJhc2VCdWNrZXQoZCxuKSwga2V5KGsp
IHt9CiAgICBjb25zdCBjaGFyICpnZXRLZXkoKSBjb25zdCB7IHJldHVybiBrZXk7IH0KcHJpdmF0
ZToKICAgIGNvbnN0IGNoYXIgKmtleTsKfTsKCmNsYXNzIFFJbnRCdWNrZXQgOiBwdWJsaWMgUUJh
c2VCdWNrZXQKewpwdWJsaWM6CiAgICBRSW50QnVja2V0KCBsb25nIGssIFFDb2xsZWN0aW9uOjpJ
dGVtIGQsIFFCYXNlQnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShr
KSB7fQogICAgbG9uZyBnZXRLZXkoKSBjb25zdCB7IHJldHVybiBrZXk7IH0KcHJpdmF0ZToKICAg
IGxvbmcga2V5Owp9OwoKY2xhc3MgUVB0ckJ1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7CnB1
YmxpYzoKICAgIFFQdHJCdWNrZXQoIHZvaWQgKmssIFFDb2xsZWN0aW9uOjpJdGVtIGQsIFFCYXNl
QnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShrKSB7fQogICAgdm9p
ZCAqZ2V0S2V5KCkgY29uc3QgeyByZXR1cm4ga2V5OyB9CnByaXZhdGU6CiAgICB2b2lkICprZXk7
Cn07CgoKY2xhc3MgUUdEaWN0IDogcHVibGljIFFDb2xsZWN0aW9uCnsKcHVibGljOgogICAgdWlu
dCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG51bUl0ZW1zOyB9CiAgICB1aW50IHNpemUoKSBjb25z
dCB7IHJldHVybiB2bGVuOyB9CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBsb29rX3N0cmluZyggY29u
c3QgUVN0cmluZyYga2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIGxvb2tfYXNjaWkoIGNv
bnN0IGNoYXIgKmtleSwgUUNvbGxlY3Rpb246Okl0ZW0sIGludCApOwogICAgUUNvbGxlY3Rpb246
Okl0ZW0gbG9va19pbnQoIGxvbmcga2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwgaW50ICk7CiAgICBR
Q29sbGVjdGlvbjo6SXRlbSBsb29rX3B0ciggdm9pZCAqa2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwg
aW50ICk7CgogICAgUURhdGFTdHJlYW0gJnJlYWQoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFEYXRh
U3RyZWFtICZ3cml0ZSggUURhdGFTdHJlYW0gJiApIGNvbnN0OwoKcHJvdGVjdGVkOgogICAgZW51
bSBLZXlUeXBlIHsgU3RyaW5nS2V5LCBBc2NpaUtleSwgSW50S2V5LCBQdHJLZXkgfTsKCiAgICBR
R0RpY3QoIHVpbnQgbGVuLCBLZXlUeXBlIGt0LCBib29sIGNzLCBib29sIGNrICk7CiAgICBRR0Rp
Y3QoIGNvbnN0IFFHRGljdCAmICk7CiAgIH5RR0RpY3QoKTsKCiAgICBRR0RpY3QgJm9wZXJhdG9y
PSggY29uc3QgUUdEaWN0ICYgKTsKCiAgICBib29sIHJlbW92ZV9zdHJpbmcoIGNvbnN0IFFTdHJp
bmcgJmtleSwgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbT0wICk7CiAgICBib29sIHJlbW92ZV9hc2Np
aSggY29uc3QgY2hhciAqa2V5LCBRQ29sbGVjdGlvbjo6SXRlbSBpdGVtPTAgKTsKICAgIGJvb2wg
cmVtb3ZlX2ludCggbG9uZyBrZXksIFFDb2xsZWN0aW9uOjpJdGVtIGl0ZW09MCApOwogICAgYm9v
bCByZW1vdmVfcHRyKCB2b2lkICprZXksIFFDb2xsZWN0aW9uOjpJdGVtIGl0ZW09MCApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZV9zdHJpbmcoIGNvbnN0IFFTdHJpbmcgJmtleSApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZV9hc2NpaSggY29uc3QgY2hhciAqa2V5ICk7CiAgICBRQ29s
bGVjdGlvbjo6SXRlbSB0YWtlX2ludCggbG9uZyBrZXkgKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IHRha2VfcHRyKCB2b2lkICprZXkgKTsKCiAgICB2b2lkIGNsZWFyKCk7CiAgICB2b2lkIHJlc2l6
ZSggdWludCApOwoKICAgIGludCBoYXNoS2V5U3RyaW5nKCBjb25zdCBRU3RyaW5nICYgKTsKICAg
IGludCBoYXNoS2V5QXNjaWkoIGNvbnN0IGNoYXIgKiApOwoKICAgIHZvaWQgc3RhdGlzdGljcygp
IGNvbnN0OwoKCiAgICB2aXJ0dWFsIFFEYXRhU3RyZWFtICZyZWFkKCBRRGF0YVN0cmVhbSAmLCBR
Q29sbGVjdGlvbjo6SXRlbSAmICk7CiAgICB2aXJ0dWFsIFFEYXRhU3RyZWFtICZ3cml0ZSggUURh
dGFTdHJlYW0gJiwgUUNvbGxlY3Rpb246Okl0ZW0gKSBjb25zdDsKCnByaXZhdGU6CiAgICBRQmFz
ZUJ1Y2tldCAqKnZlYzsKICAgIHVpbnQgdmxlbjsKICAgIHVpbnQgbnVtSXRlbXM7CiAgICB1aW50
IGtleXR5cGUgOiAyOwogICAgdWludCBjYXNlcyA6IDE7CiAgICB1aW50IGNvcHlrIDogMTsKICAg
IFFHREl0TGlzdCAqaXRlcmF0b3JzOwogICAgdm9pZCB1bmxpbmtfY29tbW9uKCBpbnQsIFFCYXNl
QnVja2V0ICosIFFCYXNlQnVja2V0ICogKTsKICAgIFFTdHJpbmdCdWNrZXQgKnVubGlua19zdHJp
bmcoIGNvbnN0IFFTdHJpbmcgJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFD
b2xsZWN0aW9uOjpJdGVtIGl0ZW0gPSAwICk7CiAgICBRQXNjaWlCdWNrZXQgKnVubGlua19hc2Np
aSggY29uc3QgY2hhciAqLCBRQ29sbGVjdGlvbjo6SXRlbSBpdGVtID0gMCApOwogICAgUUludEJ1
Y2tldCAqdW5saW5rX2ludCggbG9uZywgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbSA9IDAgKTsKICAg
IFFQdHJCdWNrZXQgKnVubGlua19wdHIoIHZvaWQgKiwgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbSA9
IDAgKTsKICAgIHZvaWQgaW5pdCggdWludCwgS2V5VHlwZSwgYm9vbCwgYm9vbCApOwogICAgZnJp
ZW5kIGNsYXNzIFFHRGljdEl0ZXJhdG9yOwp9OwoKCmNsYXNzIFFHRGljdEl0ZXJhdG9yCnsKZnJp
ZW5kIGNsYXNzIFFHRGljdDsKcHVibGljOgogICAgUUdEaWN0SXRlcmF0b3IoIGNvbnN0IFFHRGlj
dCAmICk7CiAgICBRR0RpY3RJdGVyYXRvciggY29uc3QgUUdEaWN0SXRlcmF0b3IgJiApOwogICAg
UUdEaWN0SXRlcmF0b3IgJm9wZXJhdG9yPSggY29uc3QgUUdEaWN0SXRlcmF0b3IgJiApOwogICB+
UUdEaWN0SXRlcmF0b3IoKTsKCiAgICBRQ29sbGVjdGlvbjo6SXRlbSB0b0ZpcnN0KCk7CgogICAg
UUNvbGxlY3Rpb246Okl0ZW0gZ2V0KCkgY29uc3Q7CiAgICBRU3RyaW5nIGdldEtleVN0cmluZygp
IGNvbnN0OwogICAgY29uc3QgY2hhciAqZ2V0S2V5QXNjaWkoKSBjb25zdDsKICAgIGxvbmcgZ2V0
S2V5SW50KCkgY29uc3Q7CiAgICB2b2lkICpnZXRLZXlQdHIoKSBjb25zdDsKCiAgICBRQ29sbGVj
dGlvbjo6SXRlbSBvcGVyYXRvcigpKCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBvcGVyYXRvcisr
KCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBvcGVyYXRvcis9KHVpbnQpOwoKcHJvdGVjdGVkOgog
ICAgUUdEaWN0ICpkaWN0OwoKcHJpdmF0ZToKICAgIFFCYXNlQnVja2V0ICpjdXJOb2RlOwogICAg
dWludCBjdXJJbmRleDsKfTsKCmlubGluZSBRQ29sbGVjdGlvbjo6SXRlbSBRR0RpY3RJdGVyYXRv
cjo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyBjdXJOb2RlLT5nZXREYXRhKCkg
OiAwOwp9CgppbmxpbmUgUVN0cmluZyBRR0RpY3RJdGVyYXRvcjo6Z2V0S2V5U3RyaW5nKCkgY29u
c3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFTdHJpbmdCdWNrZXQqKWN1ck5vZGUpLT5nZXRL
ZXkoKSA6IFFTdHJpbmc6Om51bGw7Cn0KCmlubGluZSBjb25zdCBjaGFyICpRR0RpY3RJdGVyYXRv
cjo6Z2V0S2V5QXNjaWkoKSBjb25zdAp7CiAgICByZXR1cm4gY3VyTm9kZSA/ICgoUUFzY2lpQnVj
a2V0KiljdXJOb2RlKS0+Z2V0S2V5KCkgOiAwOwp9CgppbmxpbmUgbG9uZyBRR0RpY3RJdGVyYXRv
cjo6Z2V0S2V5SW50KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFJbnRCdWNrZXQq
KWN1ck5vZGUpLT5nZXRLZXkoKSA6IDA7Cn0KCmlubGluZSB2b2lkICpRR0RpY3RJdGVyYXRvcjo6
Z2V0S2V5UHRyKCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFQdHJCdWNrZXQqKWN1
ck5vZGUpLT5nZXRLZXkoKSA6IDA7Cn0KIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQt
Mi4zLjIvaW5jbHVkZS9xYXNjaWlkaWN0LmgiIDIKCgoKdGVtcGxhdGU8Y2xhc3MgdHlwZT4gY2xh
c3MgUUFzY2lpRGljdCA6IHB1YmxpYyBRR0RpY3QKewpwdWJsaWM6CiAgICBRQXNjaWlEaWN0KGlu
dCBzaXplPTE3LCBib29sIGNhc2VTZW5zaXRpdmU9VFJVRSwgYm9vbCBjb3B5S2V5cz1UUlVFICkK
ICAgICAgICA6IFFHRGljdChzaXplLEFzY2lpS2V5LGNhc2VTZW5zaXRpdmUsY29weUtleXMpIHt9
CiAgICBRQXNjaWlEaWN0KCBjb25zdCBRQXNjaWlEaWN0PHR5cGU+ICZkICkgOiBRR0RpY3QoZCkg
e30KICAgflFBc2NpaURpY3QoKSB7IGNsZWFyKCk7IH0KICAgIFFBc2NpaURpY3Q8dHlwZT4gJm9w
ZXJhdG9yPShjb25zdCBRQXNjaWlEaWN0PHR5cGU+ICZkKQogICAgICAgICAgICAgICAgICAgICAg
ICB7IHJldHVybiAoUUFzY2lpRGljdDx0eXBlPiYpUUdEaWN0OjpvcGVyYXRvcj0oZCk7IH0KICAg
IHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCk7IH0KICAgIHVpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFFHRGljdDo6c2l6ZSgpOyB9CiAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCkgPT0gMDsgfQoKICAgIHZvaWQgaW5zZXJ0
KCBjb25zdCBjaGFyICprLCBjb25zdCB0eXBlICpkICkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgUUdEaWN0Ojpsb29rX2FzY2lpKGssKEl0ZW0pZCwxKTsgfQogICAg
dm9pZCByZXBsYWNlKCBjb25zdCBjaGFyICprLCBjb25zdCB0eXBlICpkICkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUUdEaWN0Ojpsb29rX2FzY2lpKGssKEl0ZW0p
ZCwyKTsgfQogICAgYm9vbCByZW1vdmUoIGNvbnN0IGNoYXIgKmsgKSB7IHJldHVybiBRR0RpY3Q6
OnJlbW92ZV9hc2NpaShrKTsgfQogICAgdHlwZSAqdGFrZSggY29uc3QgY2hhciAqayApIHsgcmV0
dXJuICh0eXBlICopUUdEaWN0Ojp0YWtlX2FzY2lpKGspOyB9CiAgICB0eXBlICpmaW5kKCBjb25z
dCBjaGFyICprICkgY29uc3QKICAgICAgICAgICAgICAgIHsgcmV0dXJuICh0eXBlICopKChRR0Rp
Y3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfYXNjaWkoaywwLDApOyB9CiAgICB0eXBlICpvcGVyYXRv
cltdKCBjb25zdCBjaGFyICprICkgY29uc3QKICAgICAgICAgICAgICAgIHsgcmV0dXJuICh0eXBl
ICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfYXNjaWkoaywwLDApOyB9CgogICAgdm9p
ZCBjbGVhcigpIHsgUUdEaWN0OjpjbGVhcigpOyB9CiAgICB2b2lkIHJlc2l6ZSggdWludCBuICkg
eyBRR0RpY3Q6OnJlc2l6ZShuKTsgfQogICAgdm9pZCBzdGF0aXN0aWNzKCkgY29uc3QgeyBRR0Rp
Y3Q6OnN0YXRpc3RpY3MoKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJdGVtKCBJdGVtIGQg
KTsKfTsKCgp0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFFBc2NpaURpY3Q8dm9pZD46OmRlbGV0ZUl0
ZW0oIEl0ZW0gKQp7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBpbmxpbmUgdm9pZCBRQXNjaWlE
aWN0PHR5cGU+OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6SXRlbSBkICkKewogICAgaWYgKCBk
ZWxfaXRlbSApIGRlbGV0ZSAodHlwZSAqKWQ7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBjbGFz
cyBRQXNjaWlEaWN0SXRlcmF0b3IgOiBwdWJsaWMgUUdEaWN0SXRlcmF0b3IKewpwdWJsaWM6CiAg
ICBRQXNjaWlEaWN0SXRlcmF0b3IoY29uc3QgUUFzY2lpRGljdDx0eXBlPiAmZCkKICAgICAgICA6
IFFHRGljdEl0ZXJhdG9yKChRR0RpY3QgJilkKSB7fQogICB+UUFzY2lpRGljdEl0ZXJhdG9yKCkg
e30KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpOyB9CiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpID09IDA7IH0KICAgIHR5
cGUgKnRvRmlyc3QoKSB7IHJldHVybiAodHlwZSAqKVFHRGljdEl0ZXJhdG9yOjp0b0ZpcnN0KCk7
IH0KICAgIG9wZXJhdG9yIHR5cGUgKigpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRl
cmF0b3I6OmdldCgpOyB9CiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKHR5cGUg
KilRR0RpY3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIGNvbnN0IGNoYXIgKmN1cnJlbnRLZXkoKSBj
b25zdCB7IHJldHVybiBRR0RpY3RJdGVyYXRvcjo6Z2V0S2V5QXNjaWkoKTsgfQogICAgdHlwZSAq
b3BlcmF0b3IoKSgpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKCko
KTsgfQogICAgdHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0
b3I6Om9wZXJhdG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJu
ICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQp9OwojIDQ0ICIvdXNyL3Ny
Yy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcHBsaWNhdGlvbi5oIiAyCiMgMSAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xcGFsZXR0ZS5oIiAxCiMg
NDUgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9u
LmgiIDIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F0cmFu
c2xhdG9yLmgiIDEKIyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVk
ZS9xdHJhbnNsYXRvci5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcWludGRpY3QuaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMu
Mi9pbmNsdWRlL3FpbnRkaWN0LmgiCnRlbXBsYXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFJbnREaWN0
IDogcHVibGljIFFHRGljdAp7CnB1YmxpYzoKICAgIFFJbnREaWN0KGludCBzaXplPTE3KSA6IFFH
RGljdChzaXplLEludEtleSwwLDApIHt9CiAgICBRSW50RGljdCggY29uc3QgUUludERpY3Q8dHlw
ZT4gJmQgKSA6IFFHRGljdChkKSB7fQogICB+UUludERpY3QoKSB7IGNsZWFyKCk7IH0KICAgIFFJ
bnREaWN0PHR5cGU+ICZvcGVyYXRvcj0oY29uc3QgUUludERpY3Q8dHlwZT4gJmQpCiAgICAgICAg
ICAgICAgICAgICAgICAgIHsgcmV0dXJuIChRSW50RGljdDx0eXBlPiYpUUdEaWN0OjpvcGVyYXRv
cj0oZCk7IH0KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCk7
IH0KICAgIHVpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFFHRGljdDo6c2l6ZSgpOyB9CiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCkgPT0gMDsgfQogICAg
dm9pZCBpbnNlcnQoIGxvbmcgaywgY29uc3QgdHlwZSAqZCApCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IFFHRGljdDo6bG9va19pbnQoaywoSXRlbSlkLDEpOyB9CiAg
ICB2b2lkIHJlcGxhY2UoIGxvbmcgaywgY29uc3QgdHlwZSAqZCApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7IFFHRGljdDo6bG9va19pbnQoaywoSXRlbSlkLDIpOyB9
CiAgICBib29sIHJlbW92ZSggbG9uZyBrICkgeyByZXR1cm4gUUdEaWN0OjpyZW1vdmVfaW50KGsp
OyB9CiAgICB0eXBlICp0YWtlKCBsb25nIGsgKSB7IHJldHVybiAodHlwZSopUUdEaWN0Ojp0YWtl
X2ludChrKTsgfQogICAgdHlwZSAqZmluZCggbG9uZyBrICkgY29uc3QKICAgICAgICAgICAgICAg
IHsgcmV0dXJuICh0eXBlICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfaW50KGssMCww
KTsgfQogICAgdHlwZSAqb3BlcmF0b3JbXSggbG9uZyBrICkgY29uc3QKICAgICAgICAgICAgICAg
IHsgcmV0dXJuICh0eXBlICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfaW50KGssMCww
KTsgfQogICAgdm9pZCBjbGVhcigpIHsgUUdEaWN0OjpjbGVhcigpOyB9CiAgICB2b2lkIHJlc2l6
ZSggdWludCBuICkgeyBRR0RpY3Q6OnJlc2l6ZShuKTsgfQogICAgdm9pZCBzdGF0aXN0aWNzKCkg
Y29uc3QgeyBRR0RpY3Q6OnN0YXRpc3RpY3MoKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJ
dGVtKCBJdGVtIGQgKTsKfTsKCgp0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFFJbnREaWN0PHZvaWQ+
OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6SXRlbSApCnsKfQoKCnRlbXBsYXRlPGNsYXNzIHR5
cGU+IGlubGluZSB2b2lkIFFJbnREaWN0PHR5cGU+OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6
SXRlbSBkICkKewogICAgaWYgKCBkZWxfaXRlbSApIGRlbGV0ZSAodHlwZSAqKWQ7Cn0KCnRlbXBs
YXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFJbnREaWN0SXRlcmF0b3IgOiBwdWJsaWMgUUdEaWN0SXRl
cmF0b3IKewpwdWJsaWM6CiAgICBRSW50RGljdEl0ZXJhdG9yKGNvbnN0IFFJbnREaWN0PHR5cGU+
ICZkKSA6UUdEaWN0SXRlcmF0b3IoKFFHRGljdCAmKWQpIHt9CiAgIH5RSW50RGljdEl0ZXJhdG9y
KCkge30KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpOyB9CiAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpID09IDA7IH0KICAg
IHR5cGUgKnRvRmlyc3QoKSB7IHJldHVybiAodHlwZSAqKVFHRGljdEl0ZXJhdG9yOjp0b0ZpcnN0
KCk7IH0KICAgIG9wZXJhdG9yIHR5cGUgKigpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdEaWN0
SXRlcmF0b3I6OmdldCgpOyB9CiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKHR5
cGUgKilRR0RpY3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIGxvbmcgY3VycmVudEtleSgpIGNvbnN0
IHsgcmV0dXJuIFFHRGljdEl0ZXJhdG9yOjpnZXRLZXlJbnQoKTsgfQogICAgdHlwZSAqb3BlcmF0
b3IoKSgpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKCkoKTsgfQog
ICAgdHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9w
ZXJhdG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJuICh0eXBl
ICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQp9OwojIDQ1ICIvdXNyL3NyYy9wYWNr
YWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F0cmFuc2xhdG9yLmgiIDIKCgoKCmNsYXNzIFFU
cmFuc2xhdG9yUHJpdmF0ZTsKCgpjbGFzcyBRVHJhbnNsYXRvck1lc3NhZ2UKewpwdWJsaWM6CiAg
ICBRVHJhbnNsYXRvck1lc3NhZ2UoKTsKICAgIFFUcmFuc2xhdG9yTWVzc2FnZSggY29uc3QgY2hh
ciAqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzb3VyY2VU
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29tbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyYgdHJhbnNsYXRpb24gPSBRU3RyaW5nOjpu
dWxsICk7CiAgICBRVHJhbnNsYXRvck1lc3NhZ2UoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFUcmFu
c2xhdG9yTWVzc2FnZSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlICYgbSApOwoKICAgIFFUcmFu
c2xhdG9yTWVzc2FnZSAmIG9wZXJhdG9yPSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlICYgbSAp
OwoKICAgIHVpbnQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGg7IH0KICAgIGNvbnN0IGNoYXIgKmNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBjeDsgfQogICAgY29uc3QgY2hhciAqc291cmNlVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHN0OyB9CiAgICBjb25zdCBjaGFyICpjb21tZW50KCkgY29uc3QgeyBy
ZXR1cm4gY207IH0KCiAgICB2b2lkIHNldFRyYW5zbGF0aW9uKCBjb25zdCBRU3RyaW5nICYgdHJh
bnNsYXRpb24gKSB7IHRuID0gdHJhbnNsYXRpb247IH0KICAgIFFTdHJpbmcgdHJhbnNsYXRpb24o
KSBjb25zdCB7IHJldHVybiB0bjsgfQoKICAgIGVudW0gUHJlZml4IHsgTm9QcmVmaXgsIEhhc2gs
IEhhc2hDb250ZXh0LCBIYXNoQ29udGV4dFNvdXJjZVRleHQsCiAgICAgICAgICAgICAgICAgIEhh
c2hDb250ZXh0U291cmNlVGV4dENvbW1lbnQgfTsKICAgIHZvaWQgd3JpdGUoIFFEYXRhU3RyZWFt
ICYgcywgYm9vbCBzdHJpcCwKICAgICAgICAgICAgICAgIFByZWZpeCBwcmVmaXggPSBIYXNoQ29u
dGV4dFNvdXJjZVRleHRDb21tZW50ICkgY29uc3Q7CiAgICBQcmVmaXggY29tbW9uUHJlZml4KCBj
b25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICkgY29uc3Q7CgogICAgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmIG0gKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPSgg
Y29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlJiBtICkgY29uc3QKICAgIHsgcmV0dXJuICFvcGVyYXRv
cj09KCBtICk7IH0KICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2Um
IG0gKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdl
JiBtICkgY29uc3QKICAgIHsgcmV0dXJuICFvcGVyYXRvcj4oIG0gKTsgfQogICAgYm9vbCBvcGVy
YXRvcj4oIGNvbnN0IFFUcmFuc2xhdG9yTWVzc2FnZSYgbSApIGNvbnN0CiAgICB7IHJldHVybiB0
aGlzLT5vcGVyYXRvcjwoIG0gKTsgfQogICAgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBRVHJhbnNs
YXRvck1lc3NhZ2UmIG0gKSBjb25zdAogICAgeyByZXR1cm4gIW9wZXJhdG9yPCggbSApOyB9Cgpw
cml2YXRlOgogICAgdWludCBoOwogICAgUUNTdHJpbmcgY3g7CiAgICBRQ1N0cmluZyBzdDsKICAg
IFFDU3RyaW5nIGNtOwogICAgUVN0cmluZyB0bjsKCiAgICBlbnVtIFRhZyB7IFRhZ19FbmQgPSAx
LCBUYWdfU291cmNlVGV4dDE2LCBUYWdfVHJhbnNsYXRpb24sIFRhZ19Db250ZXh0MTYsCiAgICAg
ICAgICAgICAgIFRhZ19IYXNoLCBUYWdfU291cmNlVGV4dCwgVGFnX0NvbnRleHQsIFRhZ19Db21t
ZW50LAogICAgICAgICAgICAgICBUYWdfT2Jzb2xldGUxIH07Cn07CgoKY2xhc3MgUVRyYW5zbGF0
b3I6IHB1YmxpYyBRT2JqZWN0CnsKICAgIHB1YmxpYzogUU1ldGFPYmplY3QgKm1ldGFPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNNZXRhT2JqZWN0KCk7IH0gY29uc3QgY2hhciAqY2xhc3NO
YW1lKCkgY29uc3Q7IHN0YXRpYyBRTWV0YU9iamVjdCogc3RhdGljTWV0YU9iamVjdCgpOyBzdGF0
aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKik7IHN0YXRpYyBRU3RyaW5nIHRyKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKik7IHByb3RlY3RlZDogdm9pZCBpbml0TWV0YU9iamVjdCgpOyBwcml2YXRl
OiBzdGF0aWMgUU1ldGFPYmplY3QgKm1ldGFPYmo7CnB1YmxpYzoKICAgIFFUcmFuc2xhdG9yKCBR
T2JqZWN0ICogcGFyZW50LCBjb25zdCBjaGFyICogbmFtZSA9IDAgKTsKICAgIH5RVHJhbnNsYXRv
cigpOwoKCiAgICBRU3RyaW5nIGZpbmQoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICogKSBjb25zdDsKCiAgICB2aXJ0dWFsIFFTdHJpbmcgZmluZCggY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICogKSBjb25zdDsKCiAgICBRVHJhbnNsYXRvck1lc3NhZ2UgZmluZE1lc3Nh
Z2UoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICogKSBjb25zdDsKCiAgICBib29sIGxvYWQoIGNvbnN0IFFT
dHJpbmcgJiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmIGRpcmVjdG9y
eSA9IFFTdHJpbmc6Om51bGwsCiAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJiBzZWFyY2hf
ZGVsaW1pdGVycyA9IFFTdHJpbmc6Om51bGwsCiAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcg
JiBzdWZmaXggPSBRU3RyaW5nOjpudWxsICk7CgogICAgZW51bSBTYXZlTW9kZSB7IEV2ZXJ5dGhp
bmcsIFN0cmlwcGVkIH07CgogICAgYm9vbCBzYXZlKCBjb25zdCBRU3RyaW5nICYgZmlsZW5hbWUs
IFNhdmVNb2RlIG1vZGUgPSBFdmVyeXRoaW5nICk7CgogICAgdm9pZCBjbGVhcigpOwoKICAgIHZv
aWQgaW5zZXJ0KCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICk7CgogICAgdm9pZCBpbnNlcnQo
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBRU3RyaW5nICYgKTsKICAgIHZvaWQg
cmVtb3ZlKCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICk7CgogICAgdm9pZCByZW1vdmUoIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CiAgICBib29sIGNvbnRhaW5zKCBjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICkgY29uc3Q7CgogICAgYm9vbCBjb250YWlu
cyggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKSBjb25zdDsKCgoKICAgIHZvaWQgc3F1ZWV6
ZSggU2F2ZU1vZGUgKTsKICAgIHZvaWQgc3F1ZWV6ZSgpOwogICAgdm9pZCB1bnNxdWVlemUoKTsK
CiAgICBRVmFsdWVMaXN0PFFUcmFuc2xhdG9yTWVzc2FnZT4gbWVzc2FnZXMoKSBjb25zdDsKCnBy
aXZhdGU6CiAgICBRVHJhbnNsYXRvclByaXZhdGUgKiBkOwoKcHJpdmF0ZToKCiAgICBRVHJhbnNs
YXRvciggY29uc3QgUVRyYW5zbGF0b3IgJiApOwogICAgUVRyYW5zbGF0b3IgJm9wZXJhdG9yPSgg
Y29uc3QgUVRyYW5zbGF0b3IgJiApOwoKfTsKIyA0NiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIgMgoKCmNsYXNzIFFTZXNzaW9uTWFuYWdl
cjsKY2xhc3MgUVN0eWxlOwpjbGFzcyBRVHJhbnNsYXRvcjsKCgoKdGVtcGxhdGUgPGNsYXNzIHR5
cGU+IGNsYXNzIFFMaXN0OwoKY2xhc3MgUUFwcGxpY2F0aW9uOwpleHRlcm4gUUFwcGxpY2F0aW9u
ICpxQXBwOwojIDY3ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fh
cHBsaWNhdGlvbi5oIgpjbGFzcyBRQXBwbGljYXRpb24gOiBwdWJsaWMgUU9iamVjdAp7CiAgICBw
dWJsaWM6IFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljTWV0
YU9iamVjdCgpOyB9IGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OyBzdGF0aWMgUU1ldGFP
YmplY3QqIHN0YXRpY01ldGFPYmplY3QoKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3QgY2hhciop
OyBzdGF0aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOyBwcm90ZWN0ZWQ6
IHZvaWQgaW5pdE1ldGFPYmplY3QoKTsgcHJpdmF0ZTogc3RhdGljIFFNZXRhT2JqZWN0ICptZXRh
T2JqOwpwdWJsaWM6CiAgICBRQXBwbGljYXRpb24oIGludCAmYXJnYywgY2hhciAqKmFyZ3YpOwog
ICAgUUFwcGxpY2F0aW9uKCBpbnQgJmFyZ2MsIGNoYXIgKiphcmd2LCBib29sIEdVSWVuYWJsZWQg
KTsKICAgIGVudW0gVHlwZSB7IFR0eSwgR3VpQ2xpZW50LCBHdWlTZXJ2ZXIgfTsKICAgIFFBcHBs
aWNhdGlvbiggaW50ICZhcmdjLCBjaGFyICoqYXJndiwgVHlwZSApOwoKICAgIFFBcHBsaWNhdGlv
biggRGlzcGxheSogZHB5ICk7CiAgICBRQXBwbGljYXRpb24oIERpc3BsYXkgKmRweSwgaW50IGFy
Z2MsIGNoYXIgKiphcmd2KTsKCiAgICB2aXJ0dWFsIH5RQXBwbGljYXRpb24oKTsKCiAgICBpbnQg
YXJnYygpIGNvbnN0OwogICAgY2hhciAqKmFyZ3YoKSBjb25zdDsKCiAgICBUeXBlIHR5cGUoKSBj
b25zdDsKCgogICAgc3RhdGljIFFTdHlsZSAmc3R5bGUoKTsKICAgIHN0YXRpYyB2b2lkIHNldFN0
eWxlKCBRU3R5bGUqICk7CgoKICAgIGVudW0gQ29sb3JNb2RlIHsgTm9ybWFsQ29sb3JzLCBDdXN0
b21Db2xvcnMgfTsKICAgIHN0YXRpYyBDb2xvck1vZGUgY29sb3JNb2RlKCk7CiAgICBzdGF0aWMg
dm9pZCBzZXRDb2xvck1vZGUoIFFBcHBsaWNhdGlvbjo6Q29sb3JNb2RlICk7CgoKICAgIGVudW0g
Q29sb3JTcGVjIHsgTm9ybWFsQ29sb3I9MCwgQ3VzdG9tQ29sb3I9MSwgTWFueUNvbG9yPTIgfTsK
ICAgIHN0YXRpYyBpbnQgY29sb3JTcGVjKCk7CiAgICBzdGF0aWMgdm9pZCBzZXRDb2xvclNwZWMo
IGludCApOwoKICAgIHN0YXRpYyBRQ3Vyc29yICpvdmVycmlkZUN1cnNvcigpOwogICAgc3RhdGlj
IHZvaWQgc2V0T3ZlcnJpZGVDdXJzb3IoIGNvbnN0IFFDdXJzb3IgJiwgYm9vbCByZXBsYWNlPUZB
TFNFICk7CiAgICBzdGF0aWMgdm9pZCByZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKCiAgICBzdGF0
aWMgYm9vbCBoYXNHbG9iYWxNb3VzZVRyYWNraW5nKCk7CiAgICBzdGF0aWMgdm9pZCBzZXRHbG9i
YWxNb3VzZVRyYWNraW5nKCBib29sIGVuYWJsZSApOwoKICAgIHN0YXRpYyBRUGFsZXR0ZSBwYWxl
dHRlKCBjb25zdCBRV2lkZ2V0KiA9IDAgKTsKICAgIHN0YXRpYyB2b2lkIHNldFBhbGV0dGUoIGNv
bnN0IFFQYWxldHRlICYsIGJvb2wgaW5mb3JtV2lkZ2V0cz1GQUxTRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lID0gMCApOwoKICAgIHN0YXRp
YyBRRm9udCBmb250KCBjb25zdCBRV2lkZ2V0KiA9IDAgKTsKICAgIHN0YXRpYyB2b2lkIHNldEZv
bnQoIGNvbnN0IFFGb250ICYsIGJvb2wgaW5mb3JtV2lkZ2V0cz1GQUxTRSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lID0gMCApOwogICAgc3RhdGlj
IFFGb250TWV0cmljcyBmb250TWV0cmljcygpOwoKICAgIFFXaWRnZXQgKm1haW5XaWRnZXQoKSBj
b25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluV2lkZ2V0KCBRV2lkZ2V0ICogKTsKICAgIHZp
cnR1YWwgdm9pZCBwb2xpc2goIFFXaWRnZXQgKiApOwoKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAq
YWxsV2lkZ2V0cygpOwogICAgc3RhdGljIFFXaWRnZXRMaXN0ICp0b3BMZXZlbFdpZGdldHMoKTsK
ICAgIHN0YXRpYyBRV2lkZ2V0ICpkZXNrdG9wKCk7CiAgICBzdGF0aWMgUVdpZGdldCAqYWN0aXZl
UG9wdXBXaWRnZXQoKTsKICAgIHN0YXRpYyBRV2lkZ2V0ICphY3RpdmVNb2RhbFdpZGdldCgpOwog
ICAgc3RhdGljIFFDbGlwYm9hcmQgKmNsaXBib2FyZCgpOwogICAgUVdpZGdldCAqZm9jdXNXaWRn
ZXQoKSBjb25zdDsKICAgIFFXaWRnZXQgKmFjdGl2ZVdpbmRvdygpIGNvbnN0OwoKICAgIHN0YXRp
YyBRV2lkZ2V0ICp3aWRnZXRBdCggaW50IHgsIGludCB5LCBib29sIGNoaWxkPUZBTFNFICk7CiAg
ICBzdGF0aWMgUVdpZGdldCAqd2lkZ2V0QXQoIGNvbnN0IFFQb2ludCAmLCBib29sIGNoaWxkPUZB
TFNFICk7CgogICAgaW50IGV4ZWMoKTsKICAgIHZvaWQgcHJvY2Vzc0V2ZW50cygpOwogICAgdm9p
ZCBwcm9jZXNzRXZlbnRzKCBpbnQgbWF4dGltZSApOwogICAgdm9pZCBwcm9jZXNzT25lRXZlbnQo
KTsKICAgIGludCBlbnRlcl9sb29wKCk7CiAgICB2b2lkIGV4aXRfbG9vcCgpOwogICAgaW50IGxv
b3BMZXZlbCgpIGNvbnN0OwogICAgc3RhdGljIHZvaWQgZXhpdCggaW50IHJldGNvZGU9MCApOwoK
ICAgIHN0YXRpYyBib29sIHNlbmRFdmVudCggUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZl
bnQgKTsKICAgIHN0YXRpYyB2b2lkIHBvc3RFdmVudCggUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVu
dCAqZXZlbnQgKTsKICAgIHN0YXRpYyB2b2lkIHNlbmRQb3N0ZWRFdmVudHMoIFFPYmplY3QgKnJl
Y2VpdmVyLCBpbnQgZXZlbnRfdHlwZSApOwogICAgc3RhdGljIHZvaWQgc2VuZFBvc3RlZEV2ZW50
cygpOwoKICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBvc3RlZEV2ZW50cyggUU9iamVjdCAqcmVjZWl2
ZXIgKTsKCiAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5KCBRT2JqZWN0ICosIFFFdmVudCAqICk7Cgog
ICAgc3RhdGljIGJvb2wgc3RhcnRpbmdVcCgpOwogICAgc3RhdGljIGJvb2wgY2xvc2luZ0Rvd24o
KTsKCiAgICBzdGF0aWMgdm9pZCBmbHVzaFgoKTsKICAgIHN0YXRpYyB2b2lkIHN5bmNYKCk7Cgog
ICAgc3RhdGljIHZvaWQgYmVlcCgpOwoKCiAgICB2b2lkIHNldERlZmF1bHRDb2RlYyggUVRleHRD
b2RlYyogKTsKICAgIFFUZXh0Q29kZWMqIGRlZmF1bHRDb2RlYygpIGNvbnN0OwogICAgdm9pZCBp
bnN0YWxsVHJhbnNsYXRvciggUVRyYW5zbGF0b3IgKiApOwogICAgdm9pZCByZW1vdmVUcmFuc2xh
dG9yKCBRVHJhbnNsYXRvciAqICk7CgogICAgUVN0cmluZyB0cmFuc2xhdGUoIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqICkgY29uc3Q7CiAgICBRU3RyaW5nIHRyYW5zbGF0ZSggY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqICkgY29uc3Q7CgogICAgc3RhdGljIHZvaWQgc2V0V2luU3R5bGVIaWdobGlnaHRDb2xv
ciggY29uc3QgUUNvbG9yICYgKTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJndpblN0eWxlSGln
aGxpZ2h0Q29sb3IoKTsKCiAgICBzdGF0aWMgdm9pZCBzZXREZXNrdG9wU2V0dGluZ3NBd2FyZSgg
Ym9vbCApOwogICAgc3RhdGljIGJvb2wgZGVza3RvcFNldHRpbmdzQXdhcmUoKTsKCiAgICBzdGF0
aWMgdm9pZCBzZXRDdXJzb3JGbGFzaFRpbWUoIGludCApOwogICAgc3RhdGljIGludCBjdXJzb3JG
bGFzaFRpbWUoKTsKCiAgICBzdGF0aWMgdm9pZCBzZXREb3VibGVDbGlja0ludGVydmFsKCBpbnQg
KTsKICAgIHN0YXRpYyBpbnQgZG91YmxlQ2xpY2tJbnRlcnZhbCgpOwoKICAgIHN0YXRpYyB2b2lk
IHNldFdoZWVsU2Nyb2xsTGluZXMoIGludCApOwogICAgc3RhdGljIGludCB3aGVlbFNjcm9sbExp
bmVzKCk7CgogICAgc3RhdGljIHZvaWQgc2V0R2xvYmFsU3RydXQoIGNvbnN0IFFTaXplICYgKTsK
ICAgIHN0YXRpYyBRU2l6ZSBnbG9iYWxTdHJ1dCgpOwoKICAgIHN0YXRpYyB2b2lkIHNldFN0YXJ0
RHJhZ1RpbWUoIGludCBtcyApOwogICAgc3RhdGljIGludCBzdGFydERyYWdUaW1lKCk7CiAgICBz
dGF0aWMgdm9pZCBzZXRTdGFydERyYWdEaXN0YW5jZSggaW50IGwgKTsKICAgIHN0YXRpYyBpbnQg
c3RhcnREcmFnRGlzdGFuY2UoKTsKCiAgICBzdGF0aWMgYm9vbCBpc0VmZmVjdEVuYWJsZWQoIFF0
OjpVSUVmZmVjdCApOwogICAgc3RhdGljIHZvaWQgc2V0RWZmZWN0RW5hYmxlZCggUXQ6OlVJRWZm
ZWN0LCBib29sIGVuYWJsZSA9IFRSVUUgKTsKIyAyMDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9uLmgiCiAgICB2aXJ0dWFsIGJvb2wgeDExRXZl
bnRGaWx0ZXIoIFhFdmVudCAqICk7CiAgICB2aXJ0dWFsIGludCB4MTFDbGllbnRNZXNzYWdlKCBR
V2lkZ2V0KiwgWEV2ZW50KiwgYm9vbCBwYXNzaXZlX29ubHkpOwogICAgaW50IHgxMVByb2Nlc3NF
dmVudCggWEV2ZW50KiApOwojIDIyMiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xYXBwbGljYXRpb24uaCIKICAgIGJvb2wgaXNTZXNzaW9uUmVzdG9yZWQoKSBjb25z
dDsKICAgIFFTdHJpbmcgc2Vzc2lvbklkKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
RGF0YSggUVNlc3Npb25NYW5hZ2VyJiBzbSApOwogICAgdmlydHVhbCB2b2lkIHNhdmVTdGF0ZSgg
UVNlc3Npb25NYW5hZ2VyJiBzbSApOwoKCiAgICBzdGF0aWMgdm9pZCBjcmVhdGVfeGltKCk7CiAg
ICBzdGF0aWMgdm9pZCBjbG9zZV94aW0oKTsKCiAgICB2b2lkIHdha2VVcEd1aVRocmVhZCgpOwoK
CgoKCgpwcm90ZWN0ZWQ6CiAgICB2b2lkIGxhc3RXaW5kb3dDbG9zZWQoKTsKICAgIHZvaWQgYWJv
dXRUb1F1aXQoKTsKICAgIHZvaWQgZ3VpVGhyZWFkQXdha2UoKTsKCnB1YmxpYyA6CiAgICB2b2lk
IHF1aXQoKTsKICAgIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCk7CgoKCgoKCnByaXZhdGU6CiAgICB2
b2lkIGNvbnN0cnVjdCggaW50ICZhcmdjLCBjaGFyICoqYXJndiwgVHlwZSApOwogICAgYm9vbCBw
cm9jZXNzTmV4dEV2ZW50KCBib29sICk7CiAgICB2b2lkIGluaXRpYWxpemUoIGludCwgY2hhciAq
KiApOwogICAgdm9pZCBpbml0X3ByZWNtZGxpbmUoKTsKICAgIHZvaWQgcHJvY2Vzc19jbWRsaW5l
KCBpbnQqIGFyZ2NwdHIsIGNoYXIgKiogYXJndiApOwojIDI2NyAiL3Vzci9zcmMvcGFja2FnZXMv
QlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIKICAgIGludCBhcHBfYXJnYzsK
ICAgIGNoYXIgKiphcHBfYXJndjsKICAgIGJvb2wgcXVpdF9ub3c7CiAgICBpbnQgcXVpdF9jb2Rl
OwogICAgc3RhdGljIFFTdHlsZSAqYXBwX3N0eWxlOwogICAgc3RhdGljIGludCBhcHBfY3NwZWM7
CgogICAgc3RhdGljIFFQYWxldHRlICphcHBfcGFsOwoKICAgIHN0YXRpYyBRRm9udCAqYXBwX2Zv
bnQ7CgogICAgc3RhdGljIFFDdXJzb3IgKmFwcF9jdXJzb3I7CgogICAgc3RhdGljIGludCBhcHBf
dHJhY2tpbmc7CiAgICBzdGF0aWMgYm9vbCBpc19hcHBfcnVubmluZzsKICAgIHN0YXRpYyBib29s
IGlzX2FwcF9jbG9zaW5nOwogICAgc3RhdGljIGJvb2wgYXBwX2V4aXRfbG9vcDsKICAgIHN0YXRp
YyBpbnQgbG9vcF9sZXZlbDsKICAgIHN0YXRpYyBRV2lkZ2V0ICptYWluX3dpZGdldDsKICAgIHN0
YXRpYyBRV2lkZ2V0ICpmb2N1c193aWRnZXQ7CiAgICBzdGF0aWMgUVdpZGdldCAqYWN0aXZlX3dp
bmRvdzsKICAgIHN0YXRpYyBib29sIG9iZXlfZGVza3RvcF9zZXR0aW5nczsKICAgIHN0YXRpYyBp
bnQgY3Vyc29yX2ZsYXNoX3RpbWU7CiAgICBzdGF0aWMgaW50IG1vdXNlX2RvdWJsZV9jbGlja190
aW1lOwogICAgc3RhdGljIGludCB3aGVlbF9zY3JvbGxfbGluZXM7CgogICAgc3RhdGljIGJvb2wg
YW5pbWF0ZV91aTsKICAgIHN0YXRpYyBib29sIGFuaW1hdGVfbWVudTsKICAgIHN0YXRpYyBib29s
IGFuaW1hdGVfdG9vbHRpcDsKICAgIHN0YXRpYyBib29sIGFuaW1hdGVfY29tYm87CiAgICBzdGF0
aWMgYm9vbCBmYWRlX21lbnU7CiAgICBzdGF0aWMgYm9vbCBmYWRlX3Rvb2x0aXA7CgogICAgUUxp
c3Q8UVRyYW5zbGF0b3I+ICp0cmFuc2xhdG9yczsKCiAgICBRU2Vzc2lvbk1hbmFnZXIgKnNlc3Np
b25fbWFuYWdlcjsKICAgIFFTdHJpbmcgc2Vzc2lvbl9pZDsKICAgIGJvb2wgaXNfc2Vzc2lvbl9y
ZXN0b3JlZDsKCgogICAgc3RhdGljIHZvaWQgeDExX2luaXRpYWxpemVfc3R5bGUoKTsKCgogICAg
c3RhdGljIFFTaXplIGFwcF9zdHJ1dDsKCiAgICBzdGF0aWMgUUFzY2lpRGljdDxRUGFsZXR0ZT4g
KmFwcF9wYWxldHRlczsKICAgIHN0YXRpYyBRQXNjaWlEaWN0PFFGb250PiAqYXBwX2ZvbnRzOwoK
ICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAqcG9wdXBXaWRnZXRzOwogICAgYm9vbCBpblBvcHVwTW9k
ZSgpIGNvbnN0OwogICAgdm9pZCBjbG9zZVBvcHVwKCBRV2lkZ2V0ICpwb3B1cCApOwogICAgdm9p
ZCBvcGVuUG9wdXAoIFFXaWRnZXQgKnBvcHVwICk7CiAgICB2b2lkIHNldEFjdGl2ZVdpbmRvdygg
UVdpZGdldCogYWN0ICk7CgogICAgc3RhdGljIHZvaWQgcmVtb3ZlUG9zdGVkRXZlbnQoIFFFdmVu
dCAqICk7CgogICAgZnJpZW5kIGNsYXNzIFFXaWRnZXQ7CiAgICBmcmllbmQgY2xhc3MgUUVUV2lk
Z2V0OwogICAgZnJpZW5kIGNsYXNzIFFFdmVudDsKCnByaXZhdGU6CgogICAgUUFwcGxpY2F0aW9u
KCBjb25zdCBRQXBwbGljYXRpb24gJiApOwogICAgUUFwcGxpY2F0aW9uICZvcGVyYXRvcj0oIGNv
bnN0IFFBcHBsaWNhdGlvbiAmICk7Cgp9OwoKCmlubGluZSBpbnQgUUFwcGxpY2F0aW9uOjphcmdj
KCkgY29uc3QKewogICAgcmV0dXJuIGFwcF9hcmdjOwp9CgppbmxpbmUgY2hhciAqKlFBcHBsaWNh
dGlvbjo6YXJndigpIGNvbnN0CnsKICAgIHJldHVybiBhcHBfYXJndjsKfQojIDM1NCAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIKaW5saW5l
IFFTdHlsZSYgUUFwcGxpY2F0aW9uOjpzdHlsZSgpCnsKICAgIHJldHVybiAqYXBwX3N0eWxlOwp9
CgoKaW5saW5lIFFDdXJzb3IgKlFBcHBsaWNhdGlvbjo6b3ZlcnJpZGVDdXJzb3IoKQp7CiAgICBy
ZXR1cm4gYXBwX2N1cnNvcjsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9uOjpoYXNHbG9iYWxN
b3VzZVRyYWNraW5nKCkKewogICAgcmV0dXJuIGFwcF90cmFja2luZyA+IDA7Cn0KCmlubGluZSBR
V2lkZ2V0ICpRQXBwbGljYXRpb246Om1haW5XaWRnZXQoKSBjb25zdAp7CiAgICByZXR1cm4gbWFp
bl93aWRnZXQ7Cn0KCmlubGluZSBRV2lkZ2V0ICpRQXBwbGljYXRpb246OmZvY3VzV2lkZ2V0KCkg
Y29uc3QKewogICAgcmV0dXJuIGZvY3VzX3dpZGdldDsKfQoKaW5saW5lIFFXaWRnZXQgKlFBcHBs
aWNhdGlvbjo6YWN0aXZlV2luZG93KCkgY29uc3QKewogICAgcmV0dXJuIGFjdGl2ZV93aW5kb3c7
Cn0KCmlubGluZSBRV2lkZ2V0ICpRQXBwbGljYXRpb246OndpZGdldEF0KCBjb25zdCBRUG9pbnQg
JnAsIGJvb2wgY2hpbGQgKQp7CiAgICByZXR1cm4gd2lkZ2V0QXQoIHAueCgpLCBwLnkoKSwgY2hp
bGQgKTsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9uOjppblBvcHVwTW9kZSgpIGNvbnN0CnsK
ICAgIHJldHVybiBwb3B1cFdpZGdldHMgIT0gMDsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9u
Ojppc1Nlc3Npb25SZXN0b3JlZCgpIGNvbnN0CnsKICAgIHJldHVybiBpc19zZXNzaW9uX3Jlc3Rv
cmVkOwp9CgppbmxpbmUgUVN0cmluZyBRQXBwbGljYXRpb246OnNlc3Npb25JZCgpIGNvbnN0CnsK
ICAgIHJldHVybiBzZXNzaW9uX2lkOwp9CgppbmxpbmUgUVNpemUgUUFwcGxpY2F0aW9uOjpnbG9i
YWxTdHJ1dCgpCnsKICAgIHJldHVybiBhcHBfc3RydXQ7Cn0KCmlubGluZSBib29sIFFBcHBsaWNh
dGlvbjo6c2VuZEV2ZW50KCBRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCApCnsgcmV0
dXJuIHFBcHAtPm5vdGlmeSggcmVjZWl2ZXIsIGV2ZW50ICk7IH0KIyAxOSAia2VybmVsL21vY19x
d2lkZ2V0LmNwcCIgMgoKCgpjb25zdCBjaGFyICpRV2lkZ2V0OjpjbGFzc05hbWUoKSBjb25zdAp7
CiAgICByZXR1cm4gIlFXaWRnZXQiOwp9CgpRTWV0YU9iamVjdCAqUVdpZGdldDo6bWV0YU9iaiA9
IDA7Cgp2b2lkIFFXaWRnZXQ6OmluaXRNZXRhT2JqZWN0KCkKewogICAgaWYgKCBtZXRhT2JqICkK
ICAgICAgICByZXR1cm47CiAgICBpZiAoIHFzdHJjbXAoUU9iamVjdDo6Y2xhc3NOYW1lKCksICJR
T2JqZWN0IikgIT0gMCApCiAgICAgICAgYmFkU3VwZXJjbGFzc1dhcm5pbmcoIlFXaWRnZXQiLCJR
T2JqZWN0Iik7CiAgICAodm9pZCkgc3RhdGljTWV0YU9iamVjdCgpOwp9CgoKClFTdHJpbmcgUVdp
ZGdldDo6dHIoY29uc3QgY2hhciogcykKewogICAgcmV0dXJuIHFBcHAtPnRyYW5zbGF0ZSggIlFX
aWRnZXQiLCBzLCAwICk7Cn0KClFTdHJpbmcgUVdpZGdldDo6dHIoY29uc3QgY2hhciogcywgY29u
c3QgY2hhciAqIGMpCnsKICAgIHJldHVybiBxQXBwLT50cmFuc2xhdGUoICJRV2lkZ2V0Iiwgcywg
YyApOwp9CgoKClFNZXRhT2JqZWN0KiBRV2lkZ2V0OjpzdGF0aWNNZXRhT2JqZWN0KCkKewogICAg
aWYgKCBtZXRhT2JqICkKICAgICAgICByZXR1cm4gbWV0YU9iajsKICAgICh2b2lkKSBRT2JqZWN0
OjpzdGF0aWNNZXRhT2JqZWN0KCk7CgogICAgUU1ldGFFbnVtKiBlbnVtX3RibCA9IFFNZXRhT2Jq
ZWN0OjpuZXdfbWV0YWVudW0oIDQgKTsKICAgIGVudW1fdGJsWzBdLm5hbWUgPSAiQmFja2dyb3Vu
ZE1vZGUiOwogICAgZW51bV90YmxbMF0uY291bnQgPSAxODsKICAgIGVudW1fdGJsWzBdLml0ZW1z
ID0gUU1ldGFPYmplY3Q6Om5ld19tZXRhZW51bV9pdGVtKCAxOCApOwogICAgZW51bV90YmxbMF0u
c2V0ID0gRkFMU0U7CiAgICBlbnVtX3RibFswXS5pdGVtc1swXS5rZXkgPSAiRml4ZWRDb2xvciI7
CiAgICBlbnVtX3RibFswXS5pdGVtc1swXS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6OkZpeGVkQ29s
b3I7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxXS5rZXkgPSAiRml4ZWRQaXhtYXAiOwogICAgZW51
bV90YmxbMF0uaXRlbXNbMV0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpGaXhlZFBpeG1hcDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzJdLmtleSA9ICJOb0JhY2tncm91bmQiOwogICAgZW51bV90Ymxb
MF0uaXRlbXNbMl0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpOb0JhY2tncm91bmQ7CiAgICBlbnVt
X3RibFswXS5pdGVtc1szXS5rZXkgPSAiUGFsZXR0ZUZvcmVncm91bmQiOwogICAgZW51bV90Ymxb
MF0uaXRlbXNbM10udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlRm9yZWdyb3VuZDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzRdLmtleSA9ICJQYWxldHRlQnV0dG9uIjsKICAgIGVudW1fdGJs
WzBdLml0ZW1zWzRdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUJ1dHRvbjsKICAgIGVu
dW1fdGJsWzBdLml0ZW1zWzVdLmtleSA9ICJQYWxldHRlTGlnaHQiOwogICAgZW51bV90YmxbMF0u
aXRlbXNbNV0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlTGlnaHQ7CiAgICBlbnVtX3Ri
bFswXS5pdGVtc1s2XS5rZXkgPSAiUGFsZXR0ZU1pZGxpZ2h0IjsKICAgIGVudW1fdGJsWzBdLml0
ZW1zWzZdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZU1pZGxpZ2h0OwogICAgZW51bV90
YmxbMF0uaXRlbXNbN10ua2V5ID0gIlBhbGV0dGVEYXJrIjsKICAgIGVudW1fdGJsWzBdLml0ZW1z
WzddLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZURhcms7CiAgICBlbnVtX3RibFswXS5p
dGVtc1s4XS5rZXkgPSAiUGFsZXR0ZU1pZCI7CiAgICBlbnVtX3RibFswXS5pdGVtc1s4XS52YWx1
ZSA9IChpbnQpIFFXaWRnZXQ6OlBhbGV0dGVNaWQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1s5XS5r
ZXkgPSAiUGFsZXR0ZVRleHQiOwogICAgZW51bV90YmxbMF0uaXRlbXNbOV0udmFsdWUgPSAoaW50
KSBRV2lkZ2V0OjpQYWxldHRlVGV4dDsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzEwXS5rZXkgPSAi
UGFsZXR0ZUJyaWdodFRleHQiOwogICAgZW51bV90YmxbMF0uaXRlbXNbMTBdLnZhbHVlID0gKGlu
dCkgUVdpZGdldDo6UGFsZXR0ZUJyaWdodFRleHQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxMV0u
a2V5ID0gIlBhbGV0dGVCYXNlIjsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzExXS52YWx1ZSA9IChp
bnQpIFFXaWRnZXQ6OlBhbGV0dGVCYXNlOwogICAgZW51bV90YmxbMF0uaXRlbXNbMTJdLmtleSA9
ICJQYWxldHRlQmFja2dyb3VuZCI7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxMl0udmFsdWUgPSAo
aW50KSBRV2lkZ2V0OjpQYWxldHRlQmFja2dyb3VuZDsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzEz
XS5rZXkgPSAiUGFsZXR0ZVNoYWRvdyI7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxM10udmFsdWUg
PSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlU2hhZG93OwogICAgZW51bV90YmxbMF0uaXRlbXNbMTRd
LmtleSA9ICJQYWxldHRlSGlnaGxpZ2h0IjsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzE0XS52YWx1
ZSA9IChpbnQpIFFXaWRnZXQ6OlBhbGV0dGVIaWdobGlnaHQ7CiAgICBlbnVtX3RibFswXS5pdGVt
c1sxNV0ua2V5ID0gIlBhbGV0dGVIaWdobGlnaHRlZFRleHQiOwogICAgZW51bV90YmxbMF0uaXRl
bXNbMTVdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUhpZ2hsaWdodGVkVGV4dDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzE2XS5rZXkgPSAiUGFsZXR0ZUJ1dHRvblRleHQiOwogICAgZW51
bV90YmxbMF0uaXRlbXNbMTZdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUJ1dHRvblRl
eHQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxN10ua2V5ID0gIlgxMVBhcmVudFJlbGF0aXZlIjsK
ICAgIGVudW1fdGJsWzBdLml0ZW1zWzE3XS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6OlgxMVBhcmVu
dFJlbGF0aXZlOwogICAgZW51bV90YmxbMV0ubmFtZSA9ICJQcm9wYWdhdGlvbk1vZGUiOwogICAg
ZW51bV90YmxbMV0uY291bnQgPSA0OwogICAgZW51bV90YmxbMV0uaXRlbXMgPSBRTWV0YU9iamVj
dDo6bmV3X21ldGFlbnVtX2l0ZW0oIDQgKTsKICAgIGVudW1fdGJsWzFdLnNldCA9IEZBTFNFOwog
ICAgZW51bV90YmxbMV0uaXRlbXNbMF0ua2V5ID0gIk5vQ2hpbGRyZW4iOwogICAgZW51bV90Ymxb
MV0uaXRlbXNbMF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpOb0NoaWxkcmVuOwogICAgZW51bV90
YmxbMV0uaXRlbXNbMV0ua2V5ID0gIkFsbENoaWxkcmVuIjsKICAgIGVudW1fdGJsWzFdLml0ZW1z
WzFdLnZhbHVlID0gKGludCkgUVdpZGdldDo6QWxsQ2hpbGRyZW47CiAgICBlbnVtX3RibFsxXS5p
dGVtc1syXS5rZXkgPSAiU2FtZUZvbnQiOwogICAgZW51bV90YmxbMV0uaXRlbXNbMl0udmFsdWUg
PSAoaW50KSBRV2lkZ2V0OjpTYW1lRm9udDsKICAgIGVudW1fdGJsWzFdLml0ZW1zWzNdLmtleSA9
ICJTYW1lUGFsZXR0ZSI7CiAgICBlbnVtX3RibFsxXS5pdGVtc1szXS52YWx1ZSA9IChpbnQpIFFX
aWRnZXQ6OlNhbWVQYWxldHRlOwogICAgZW51bV90YmxbMl0ubmFtZSA9ICJGb2N1c1BvbGljeSI7
CiAgICBlbnVtX3RibFsyXS5jb3VudCA9IDU7CiAgICBlbnVtX3RibFsyXS5pdGVtcyA9IFFNZXRh
T2JqZWN0OjpuZXdfbWV0YWVudW1faXRlbSggNSApOwogICAgZW51bV90YmxbMl0uc2V0ID0gRkFM
U0U7CiAgICBlbnVtX3RibFsyXS5pdGVtc1swXS5rZXkgPSAiTm9Gb2N1cyI7CiAgICBlbnVtX3Ri
bFsyXS5pdGVtc1swXS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6Ok5vRm9jdXM7CiAgICBlbnVtX3Ri
bFsyXS5pdGVtc1sxXS5rZXkgPSAiVGFiRm9jdXMiOwogICAgZW51bV90YmxbMl0uaXRlbXNbMV0u
dmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpUYWJGb2N1czsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzJd
LmtleSA9ICJDbGlja0ZvY3VzIjsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzJdLnZhbHVlID0gKGlu
dCkgUVdpZGdldDo6Q2xpY2tGb2N1czsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzNdLmtleSA9ICJT
dHJvbmdGb2N1cyI7CiAgICBlbnVtX3RibFsyXS5pdGVtc1szXS52YWx1ZSA9IChpbnQpIFFXaWRn
ZXQ6OlN0cm9uZ0ZvY3VzOwogICAgZW51bV90YmxbMl0uaXRlbXNbNF0ua2V5ID0gIldoZWVsRm9j
dXMiOwogICAgZW51bV90YmxbMl0uaXRlbXNbNF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpXaGVl
bEZvY3VzOwogICAgZW51bV90YmxbM10ubmFtZSA9ICJCYWNrZ3JvdW5kT3JpZ2luIjsKICAgIGVu
dW1fdGJsWzNdLmNvdW50ID0gMjsKICAgIGVudW1fdGJsWzNdLml0ZW1zID0gUU1ldGFPYmplY3Q6
Om5ld19tZXRhZW51bV9pdGVtKCAyICk7CiAgICBlbnVtX3RibFszXS5zZXQgPSBGQUxTRTsKICAg
IGVudW1fdGJsWzNdLml0ZW1zWzBdLmtleSA9ICJXaWRnZXRPcmlnaW4iOwogICAgZW51bV90Ymxb
M10uaXRlbXNbMF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpXaWRnZXRPcmlnaW47CiAgICBlbnVt
X3RibFszXS5pdGVtc1sxXS5rZXkgPSAiUGFyZW50T3JpZ2luIjsKICAgIGVudW1fdGJsWzNdLml0
ZW1zWzFdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFyZW50T3JpZ2luOwoKCiAgICB0eXBlZGVm
IGJvb2wgKFFXaWRnZXQ6OiptM190MCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0
Ojoqb20zX3QwKSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190MykoKWNv
bnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QzKSgpY29uc3Q7CiAgICB0eXBl
ZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190NikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2Jq
ZWN0Ojoqb20zX3Q2KSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190OSko
KWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3Q5KSgpY29uc3Q7CiAgICB0
eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190MTIpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAo
UU9iamVjdDo6Km9tM190MTIpKCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0z
X3QxMykoYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDEzKShib29sKTsK
ICAgIHR5cGVkZWYgY29uc3QgUVJlY3QmIChRV2lkZ2V0OjoqbTNfdDE1KSgpY29uc3Q7CiAgICB0
eXBlZGVmIGNvbnN0IFFSZWN0JiAoUU9iamVjdDo6Km9tM190MTUpKCljb25zdDsKICAgIHR5cGVk
ZWYgdm9pZCAoUVdpZGdldDo6Km0zX3QxNikoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9p
ZCAoUU9iamVjdDo6Km9tM190MTYpKGNvbnN0IFFSZWN0Jik7CiAgICB0eXBlZGVmIFFSZWN0IChR
V2lkZ2V0OjoqbTNfdDE4KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFSZWN0IChRT2JqZWN0Ojoqb20z
X3QxOCkoKWNvbnN0OwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190MjEpKCljb25zdDsK
ICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3QyMSkoKWNvbnN0OwogICAgdHlwZWRlZiBp
bnQgKFFXaWRnZXQ6OiptM190MjQpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoq
b20zX3QyNCkoKWNvbnN0OwogICAgdHlwZWRlZiBRUG9pbnQgKFFXaWRnZXQ6OiptM190MjcpKClj
b25zdDsKICAgIHR5cGVkZWYgUVBvaW50IChRT2JqZWN0Ojoqb20zX3QyNykoKWNvbnN0OwogICAg
dHlwZWRlZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3QzMCkoKWNvbnN0OwogICAgdHlwZWRlZiBRU2l6
ZSAoUU9iamVjdDo6Km9tM190MzApKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6
OiptM190MzMpKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFPYmplY3Q6OipvbTNfdDMzKSgp
Y29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MzQpKGNvbnN0IFFTaXplJik7
CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDM0KShjb25zdCBRU2l6ZSYpOwogICAg
dHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190MzYpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChR
T2JqZWN0Ojoqb20zX3QzNikoKWNvbnN0OwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190
MzkpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3QzOSkoKWNvbnN0Owog
ICAgdHlwZWRlZiBRUmVjdCAoUVdpZGdldDo6Km0zX3Q0MikoKWNvbnN0OwogICAgdHlwZWRlZiBR
UmVjdCAoUU9iamVjdDo6Km9tM190NDIpKCljb25zdDsKICAgIHR5cGVkZWYgUVJlY3QgKFFXaWRn
ZXQ6OiptM190NDUpKCljb25zdDsKICAgIHR5cGVkZWYgUVJlY3QgKFFPYmplY3Q6OipvbTNfdDQ1
KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFSZWdpb24gKFFXaWRnZXQ6OiptM190NDgpKCljb25zdDsK
ICAgIHR5cGVkZWYgUVJlZ2lvbiAoUU9iamVjdDo6Km9tM190NDgpKCljb25zdDsKICAgIHR5cGVk
ZWYgUVNpemVQb2xpY3kgKFFXaWRnZXQ6OiptM190NTEpKCljb25zdDsKICAgIHR5cGVkZWYgUVNp
emVQb2xpY3kgKFFPYmplY3Q6OipvbTNfdDUxKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFX
aWRnZXQ6OiptM190NTIpKFFTaXplUG9saWN5KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190NTIpKFFTaXplUG9saWN5KTsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6OiptM190
NTQpKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFPYmplY3Q6OipvbTNfdDU0KSgpY29uc3Q7
CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190NTUpKGNvbnN0IFFTaXplJik7CiAgICB0
eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDU1KShjb25zdCBRU2l6ZSYpOwogICAgdHlwZWRl
ZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3Q1NykoKWNvbnN0OwogICAgdHlwZWRlZiBRU2l6ZSAoUU9i
amVjdDo6Km9tM190NTcpKCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3Q1
OCkoY29uc3QgUVNpemUmKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190NTgpKGNv
bnN0IFFTaXplJik7CiAgICB0eXBlZGVmIGludCAoUVdpZGdldDo6Km0zX3Q2MCkoKWNvbnN0Owog
ICAgdHlwZWRlZiBpbnQgKFFPYmplY3Q6OipvbTNfdDYwKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190NjEpKGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTNfdDYxKShpbnQpOwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190NjMpKCljb25zdDsK
ICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3Q2MykoKWNvbnN0OwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTNfdDY0KShpbnQpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoq
b20zX3Q2NCkoaW50KTsKICAgIHR5cGVkZWYgaW50IChRV2lkZ2V0OjoqbTNfdDY2KSgpY29uc3Q7
CiAgICB0eXBlZGVmIGludCAoUU9iamVjdDo6Km9tM190NjYpKCljb25zdDsKICAgIHR5cGVkZWYg
dm9pZCAoUVdpZGdldDo6Km0zX3Q2NykoaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190NjcpKGludCk7CiAgICB0eXBlZGVmIGludCAoUVdpZGdldDo6Km0zX3Q2OSkoKWNvbnN0
OwogICAgdHlwZWRlZiBpbnQgKFFPYmplY3Q6OipvbTNfdDY5KSgpY29uc3Q7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptM190NzApKGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6
OipvbTNfdDcwKShpbnQpOwogICAgdHlwZWRlZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3Q3MikoKWNv
bnN0OwogICAgdHlwZWRlZiBRU2l6ZSAoUU9iamVjdDo6Km9tM190NzIpKCljb25zdDsKICAgIHR5
cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3Q3MykoY29uc3QgUVNpemUmKTsKICAgIHR5cGVkZWYg
dm9pZCAoUU9iamVjdDo6Km9tM190NzMpKGNvbnN0IFFTaXplJik7CiAgICB0eXBlZGVmIFFTaXpl
IChRV2lkZ2V0OjoqbTNfdDc1KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0Ojoq
b20zX3Q3NSkoKWNvbnN0OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDc2KShjb25z
dCBRU2l6ZSYpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3Q3NikoY29uc3QgUVNp
emUmKTsKICAgIHR5cGVkZWYgQmFja2dyb3VuZE1vZGUgKFFXaWRnZXQ6OiptM190NzgpKCljb25z
dDsKICAgIHR5cGVkZWYgQmFja2dyb3VuZE1vZGUgKFFPYmplY3Q6OipvbTNfdDc4KSgpY29uc3Q7
CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190NzkpKEJhY2tncm91bmRNb2RlKTsKICAg
IHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190NzkpKEJhY2tncm91bmRNb2RlKTsKICAgIHR5
cGVkZWYgY29uc3QgUUNvbG9yJiAoUVdpZGdldDo6Km0zX3Q4MSkoKWNvbnN0OwogICAgdHlwZWRl
ZiBjb25zdCBRQ29sb3ImIChRT2JqZWN0Ojoqb20zX3Q4MSkoKWNvbnN0OwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTNfdDgyKShjb25zdCBRQ29sb3ImKTsKICAgIHR5cGVkZWYgdm9pZCAo
UU9iamVjdDo6Km9tM190ODIpKGNvbnN0IFFDb2xvciYpOwogICAgdHlwZWRlZiBjb25zdCBRQ29s
b3ImIChRV2lkZ2V0OjoqbTNfdDg0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFDb2xvciYg
KFFPYmplY3Q6OipvbTNfdDg0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQaXhtYXAqIChR
V2lkZ2V0OjoqbTNfdDg3KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQaXhtYXAqIChRT2Jq
ZWN0Ojoqb20zX3Q4NykoKWNvbnN0OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDg4
KShjb25zdCBRUGl4bWFwJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDg4KShj
b25zdCBRUGl4bWFwJik7CiAgICB0eXBlZGVmIGNvbnN0IFFDb2xvckdyb3VwJiAoUVdpZGdldDo6
Km0zX3Q5MCkoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRQ29sb3JHcm91cCYgKFFPYmplY3Q6
OipvbTNfdDkwKSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQYWxldHRlJiAoUVdpZGdldDo6
Km0zX3Q5MykoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRUGFsZXR0ZSYgKFFPYmplY3Q6Oipv
bTNfdDkzKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190OTQpKGNvbnN0
IFFQYWxldHRlJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDk0KShjb25zdCBR
UGFsZXR0ZSYpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDk1KSgpOwogICAgdHlw
ZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3Q5NSkoKTsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdl
dDo6Km0zX3Q5NikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3Q5Niko
KWNvbnN0OwogICAgdHlwZWRlZiBRRm9udCAoUVdpZGdldDo6Km0zX3Q5OSkoKWNvbnN0OwogICAg
dHlwZWRlZiBRRm9udCAoUU9iamVjdDo6Km9tM190OTkpKCljb25zdDsKICAgIHR5cGVkZWYgdm9p
ZCAoUVdpZGdldDo6Km0zX3QxMDApKGNvbnN0IFFGb250Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTNfdDEwMCkoY29uc3QgUUZvbnQmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0zX3QxMDEpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDEwMSkoKTsK
ICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMDIpKCljb25zdDsKICAgIHR5cGVkZWYg
Ym9vbCAoUU9iamVjdDo6Km9tM190MTAyKSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFDdXJz
b3ImIChRV2lkZ2V0OjoqbTNfdDEwNSkoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRQ3Vyc29y
JiAoUU9iamVjdDo6Km9tM190MTA1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6
OiptM190MTA2KShjb25zdCBRQ3Vyc29yJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTNfdDEwNikoY29uc3QgUUN1cnNvciYpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNf
dDEwNykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTA3KSgpOwogICAgdHlw
ZWRlZiBib29sIChRV2lkZ2V0OjoqbTNfdDEwOCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChR
T2JqZWN0Ojoqb20zX3QxMDgpKCljb25zdDsKICAgIHR5cGVkZWYgUVN0cmluZyAoUVdpZGdldDo6
Km0zX3QxMTEpKCljb25zdDsKICAgIHR5cGVkZWYgUVN0cmluZyAoUU9iamVjdDo6Km9tM190MTEx
KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTEyKShjb25zdCBRU3Ry
aW5nJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDExMikoY29uc3QgUVN0cmlu
ZyYpOwogICAgdHlwZWRlZiBjb25zdCBRUGl4bWFwKiAoUVdpZGdldDo6Km0zX3QxMTQpKCljb25z
dDsKICAgIHR5cGVkZWYgY29uc3QgUVBpeG1hcCogKFFPYmplY3Q6OipvbTNfdDExNCkoKWNvbnN0
OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDExNSkoY29uc3QgUVBpeG1hcCYpOwog
ICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3QxMTUpKGNvbnN0IFFQaXhtYXAmKTsKICAg
IHR5cGVkZWYgUVN0cmluZyAoUVdpZGdldDo6Km0zX3QxMTcpKCljb25zdDsKICAgIHR5cGVkZWYg
UVN0cmluZyAoUU9iamVjdDo6Km9tM190MTE3KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFX
aWRnZXQ6OiptM190MTE4KShjb25zdCBRU3RyaW5nJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmpl
Y3Q6OipvbTNfdDExOCkoY29uc3QgUVN0cmluZyYpOwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0
OjoqbTNfdDEyMCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxMjAp
KCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3QxMjEpKGJvb2wpOwogICAg
dHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3QxMjEpKGJvb2wpOwogICAgdHlwZWRlZiBib29s
IChRV2lkZ2V0OjoqbTNfdDEyMykoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoq
b20zX3QxMjMpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMjYpKClj
b25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTI2KSgpY29uc3Q7CiAgICB0
eXBlZGVmIEZvY3VzUG9saWN5IChRV2lkZ2V0OjoqbTNfdDEyOSkoKWNvbnN0OwogICAgdHlwZWRl
ZiBGb2N1c1BvbGljeSAoUU9iamVjdDo6Km9tM190MTI5KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190MTMwKShGb2N1c1BvbGljeSk7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTNfdDEzMCkoRm9jdXNQb2xpY3kpOwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0
OjoqbTNfdDEzMikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxMzIp
KCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMzUpKCljb25zdDsKICAg
IHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTM1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190MTM2KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190MTM2KShib29sKTsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMzgpKClj
b25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTM4KSgpY29uc3Q7CiAgICB0
eXBlZGVmIFFSZWN0IChRV2lkZ2V0OjoqbTNfdDE0MSkoKWNvbnN0OwogICAgdHlwZWRlZiBRUmVj
dCAoUU9iamVjdDo6Km9tM190MTQxKSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6
OiptM190MTQ0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFPYmplY3Q6OipvbTNfdDE0NCko
KWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0OjoqbTNfdDE0NykoKWNvbnN0OwogICAg
dHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxNDcpKCljb25zdDsKICAgIHR5cGVkZWYgUVNp
emUgKFFXaWRnZXQ6OiptM190MTUwKSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0
Ojoqb20zX3QxNTApKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6OiptM190MTUz
KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0Ojoqb20zX3QxNTMpKCljb25zdDsK
ICAgIHR5cGVkZWYgUVJlY3QgKFFXaWRnZXQ6OiptM190MTU2KSgpY29uc3Q7CiAgICB0eXBlZGVm
IFFSZWN0IChRT2JqZWN0Ojoqb20zX3QxNTYpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdp
ZGdldDo6Km0zX3QxNTkpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190
MTU5KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTYwKShib29sKTsK
ICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTYwKShib29sKTsKICAgIHR5cGVkZWYg
Ym9vbCAoUVdpZGdldDo6Km0zX3QxNjIpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVj
dDo6Km9tM190MTYyKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTYz
KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTYzKShib29sKTsKICAg
IHR5cGVkZWYgQmFja2dyb3VuZE9yaWdpbiAoUVdpZGdldDo6Km0zX3QxNjUpKCljb25zdDsKICAg
IHR5cGVkZWYgQmFja2dyb3VuZE9yaWdpbiAoUU9iamVjdDo6Km9tM190MTY1KSgpY29uc3Q7CiAg
ICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTY2KShCYWNrZ3JvdW5kT3JpZ2luKTsKICAg
IHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTY2KShCYWNrZ3JvdW5kT3JpZ2luKTsKICAg
IHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxNjgpKCljb25zdDsKICAgIHR5cGVkZWYgYm9v
bCAoUU9iamVjdDo6Km9tM190MTY4KSgpY29uc3Q7CiAgICBtM190MCB2M18wID0gJlFXaWRnZXQ6
OmlzVG9wTGV2ZWw7CiAgICBvbTNfdDAgb3YzXzAgPSAob20zX3QwKXYzXzA7CiAgICBtM190MyB2
M18zID0gJlFXaWRnZXQ6OmlzTW9kYWw7CiAgICBvbTNfdDMgb3YzXzMgPSAob20zX3QzKXYzXzM7
CiAgICBtM190NiB2M182ID0gJlFXaWRnZXQ6OmlzUG9wdXA7CiAgICBvbTNfdDYgb3YzXzYgPSAo
b20zX3Q2KXYzXzY7CiAgICBtM190OSB2M185ID0gJlFXaWRnZXQ6OmlzRGVza3RvcDsKICAgIG9t
M190OSBvdjNfOSA9IChvbTNfdDkpdjNfOTsKICAgIG0zX3QxMiB2M18xMiA9ICZRV2lkZ2V0Ojpp
c0VuYWJsZWQ7CiAgICBvbTNfdDEyIG92M18xMiA9IChvbTNfdDEyKXYzXzEyOwogICAgbTNfdDEz
IHYzXzEzID0gJlFXaWRnZXQ6OnNldEVuYWJsZWQ7CiAgICBvbTNfdDEzIG92M18xMyA9IChvbTNf
dDEzKXYzXzEzOwogICAgbTNfdDE1IHYzXzE1ID0gJlFXaWRnZXQ6Omdlb21ldHJ5OwogICAgb20z
X3QxNSBvdjNfMTUgPSAob20zX3QxNSl2M18xNTsKICAgIG0zX3QxNiB2M18xNiA9ICZRV2lkZ2V0
OjpzZXRHZW9tZXRyeTsKICAgIG9tM190MTYgb3YzXzE2ID0gKG9tM190MTYpdjNfMTY7CiAgICBt
M190MTggdjNfMTggPSAmUVdpZGdldDo6ZnJhbWVHZW9tZXRyeTsKICAgIG9tM190MTggb3YzXzE4
ID0gKG9tM190MTgpdjNfMTg7CiAgICBtM190MjEgdjNfMjEgPSAmUVdpZGdldDo6eDsKICAgIG9t
M190MjEgb3YzXzIxID0gKG9tM190MjEpdjNfMjE7CiAgICBtM190MjQgdjNfMjQgPSAmUVdpZGdl
dDo6eTsKICAgIG9tM190MjQgb3YzXzI0ID0gKG9tM190MjQpdjNfMjQ7CiAgICBtM190MjcgdjNf
MjcgPSAmUVdpZGdldDo6cG9zOwogICAgb20zX3QyNyBvdjNfMjcgPSAob20zX3QyNyl2M18yNzsK
ICAgIG0zX3QzMCB2M18zMCA9ICZRV2lkZ2V0OjpmcmFtZVNpemU7CiAgICBvbTNfdDMwIG92M18z
MCA9IChvbTNfdDMwKXYzXzMwOwogICAgbTNfdDMzIHYzXzMzID0gJlFXaWRnZXQ6OnNpemU7CiAg
ICBvbTNfdDMzIG92M18zMyA9IChvbTNfdDMzKXYzXzMzOwogICAgbTNfdDM0IHYzXzM0ID0gJlFX
aWRnZXQ6OnJlc2l6ZTsKICAgIG9tM190MzQgb3YzXzM0ID0gKG9tM190MzQpdjNfMzQ7CiAgICBt
M190MzYgdjNfMzYgPSAmUVdpZGdldDo6d2lkdGg7CiAgICBvbTNfdDM2IG92M18zNiA9IChvbTNf
dDM2KXYzXzM2OwogICAgbTNfdDM5IHYzXzM5ID0gJlFXaWRnZXQ6OmhlaWdodDsKICAgIG9tM190
Mzkgb3YzXzM5ID0gKG9tM190MzkpdjNfMzk7CiAgICBtM190NDIgdjNfNDIgPSAmUVdpZGdldDo6
cmVjdDsKICAgIG9tM190NDIgb3YzXzQyID0gKG9tM190NDIpdjNfNDI7CiAgICBtM190NDUgdjNf
NDUgPSAmUVdpZGdldDo6Y2hpbGRyZW5SZWN0OwogICAgb20zX3Q0NSBvdjNfNDUgPSAob20zX3Q0
NSl2M180NTsKICAgIG0zX3Q0OCB2M180OCA9ICZRV2lkZ2V0OjpjaGlsZHJlblJlZ2lvbjsKICAg
IG9tM190NDggb3YzXzQ4ID0gKG9tM190NDgpdjNfNDg7CiAgICBtM190NTEgdjNfNTEgPSAmUVdp
ZGdldDo6c2l6ZVBvbGljeTsKICAgIG9tM190NTEgb3YzXzUxID0gKG9tM190NTEpdjNfNTE7CiAg
ICBtM190NTIgdjNfNTIgPSAmUVdpZGdldDo6c2V0U2l6ZVBvbGljeTsKICAgIG9tM190NTIgb3Yz
XzUyID0gKG9tM190NTIpdjNfNTI7CiAgICBtM190NTQgdjNfNTQgPSAmUVdpZGdldDo6bWluaW11
bVNpemU7CiAgICBvbTNfdDU0IG92M181NCA9IChvbTNfdDU0KXYzXzU0OwogICAgbTNfdDU1IHYz
XzU1ID0gJlFXaWRnZXQ6OnNldE1pbmltdW1TaXplOwogICAgb20zX3Q1NSBvdjNfNTUgPSAob20z
X3Q1NSl2M181NTsKICAgIG0zX3Q1NyB2M181NyA9ICZRV2lkZ2V0OjptYXhpbXVtU2l6ZTsKICAg
IG9tM190NTcgb3YzXzU3ID0gKG9tM190NTcpdjNfNTc7CiAgICBtM190NTggdjNfNTggPSAmUVdp
ZGdldDo6c2V0TWF4aW11bVNpemU7CiAgICBvbTNfdDU4IG92M181OCA9IChvbTNfdDU4KXYzXzU4
OwogICAgbTNfdDYwIHYzXzYwID0gJlFXaWRnZXQ6Om1pbmltdW1XaWR0aDsKICAgIG9tM190NjAg
b3YzXzYwID0gKG9tM190NjApdjNfNjA7CiAgICBtM190NjEgdjNfNjEgPSAmUVdpZGdldDo6c2V0
TWluaW11bVdpZHRoOwogICAgb20zX3Q2MSBvdjNfNjEgPSAob20zX3Q2MSl2M182MTsKICAgIG0z
X3Q2MyB2M182MyA9ICZRV2lkZ2V0OjptaW5pbXVtSGVpZ2h0OwogICAgb20zX3Q2MyBvdjNfNjMg
PSAob20zX3Q2Myl2M182MzsKICAgIG0zX3Q2NCB2M182NCA9ICZRV2lkZ2V0OjpzZXRNaW5pbXVt
SGVpZ2h0OwogICAgb20zX3Q2NCBvdjNfNjQgPSAob20zX3Q2NCl2M182NDsKICAgIG0zX3Q2NiB2
M182NiA9ICZRV2lkZ2V0OjptYXhpbXVtV2lkdGg7CiAgICBvbTNfdDY2IG92M182NiA9IChvbTNf
dDY2KXYzXzY2OwogICAgbTNfdDY3IHYzXzY3ID0gJlFXaWRnZXQ6OnNldE1heGltdW1XaWR0aDsK
ICAgIG9tM190Njcgb3YzXzY3ID0gKG9tM190NjcpdjNfNjc7CiAgICBtM190NjkgdjNfNjkgPSAm
UVdpZGdldDo6bWF4aW11bUhlaWdodDsKICAgIG9tM190Njkgb3YzXzY5ID0gKG9tM190NjkpdjNf
Njk7CiAgICBtM190NzAgdjNfNzAgPSAmUVdpZGdldDo6c2V0TWF4aW11bUhlaWdodDsKICAgIG9t
M190NzAgb3YzXzcwID0gKG9tM190NzApdjNfNzA7CiAgICBtM190NzIgdjNfNzIgPSAmUVdpZGdl
dDo6c2l6ZUluY3JlbWVudDsKICAgIG9tM190NzIgb3YzXzcyID0gKG9tM190NzIpdjNfNzI7CiAg
ICBtM190NzMgdjNfNzMgPSAmUVdpZGdldDo6c2V0U2l6ZUluY3JlbWVudDsKICAgIG9tM190NzMg
b3YzXzczID0gKG9tM190NzMpdjNfNzM7CiAgICBtM190NzUgdjNfNzUgPSAmUVdpZGdldDo6YmFz
ZVNpemU7CiAgICBvbTNfdDc1IG92M183NSA9IChvbTNfdDc1KXYzXzc1OwogICAgbTNfdDc2IHYz
Xzc2ID0gJlFXaWRnZXQ6OnNldEJhc2VTaXplOwogICAgb20zX3Q3NiBvdjNfNzYgPSAob20zX3Q3
Nil2M183NjsKICAgIG0zX3Q3OCB2M183OCA9ICZRV2lkZ2V0OjpiYWNrZ3JvdW5kTW9kZTsKICAg
IG9tM190Nzggb3YzXzc4ID0gKG9tM190NzgpdjNfNzg7CiAgICBtM190NzkgdjNfNzkgPSAmUVdp
ZGdldDo6c2V0QmFja2dyb3VuZE1vZGU7CiAgICBvbTNfdDc5IG92M183OSA9IChvbTNfdDc5KXYz
Xzc5OwogICAgbTNfdDgxIHYzXzgxID0gJlFXaWRnZXQ6OmJhY2tncm91bmRDb2xvcjsKICAgIG9t
M190ODEgb3YzXzgxID0gKG9tM190ODEpdjNfODE7CiAgICBtM190ODIgdjNfODIgPSAmUVdpZGdl
dDo6c2V0QmFja2dyb3VuZENvbG9yOwogICAgb20zX3Q4MiBvdjNfODIgPSAob20zX3Q4Mil2M184
MjsKICAgIG0zX3Q4NCB2M184NCA9ICZRV2lkZ2V0Ojpmb3JlZ3JvdW5kQ29sb3I7CiAgICBvbTNf
dDg0IG92M184NCA9IChvbTNfdDg0KXYzXzg0OwogICAgbTNfdDg3IHYzXzg3ID0gJlFXaWRnZXQ6
OmJhY2tncm91bmRQaXhtYXA7CiAgICBvbTNfdDg3IG92M184NyA9IChvbTNfdDg3KXYzXzg3Owog
ICAgbTNfdDg4IHYzXzg4ID0gJlFXaWRnZXQ6OnNldEJhY2tncm91bmRQaXhtYXA7CiAgICBvbTNf
dDg4IG92M184OCA9IChvbTNfdDg4KXYzXzg4OwogICAgbTNfdDkwIHYzXzkwID0gJlFXaWRnZXQ6
OmNvbG9yR3JvdXA7CiAgICBvbTNfdDkwIG92M185MCA9IChvbTNfdDkwKXYzXzkwOwogICAgbTNf
dDkzIHYzXzkzID0gJlFXaWRnZXQ6OnBhbGV0dGU7CiAgICBvbTNfdDkzIG92M185MyA9IChvbTNf
dDkzKXYzXzkzOwogICAgbTNfdDk0IHYzXzk0ID0gJlFXaWRnZXQ6OnNldFBhbGV0dGU7CiAgICBv
bTNfdDk0IG92M185NCA9IChvbTNfdDk0KXYzXzk0OwogICAgbTNfdDk1IHYzXzk1ID0gJlFXaWRn
ZXQ6OnVuc2V0UGFsZXR0ZTsKICAgIG9tM190OTUgb3YzXzk1ID0gKG9tM190OTUpdjNfOTU7CiAg
ICBtM190OTYgdjNfOTYgPSAmUVdpZGdldDo6b3duUGFsZXR0ZTsKICAgIG9tM190OTYgb3YzXzk2
ID0gKG9tM190OTYpdjNfOTY7CiAgICBtM190OTkgdjNfOTkgPSAmUVdpZGdldDo6Zm9udDsKICAg
IG9tM190OTkgb3YzXzk5ID0gKG9tM190OTkpdjNfOTk7CiAgICBtM190MTAwIHYzXzEwMCA9ICZR
V2lkZ2V0OjpzZXRGb250OwogICAgb20zX3QxMDAgb3YzXzEwMCA9IChvbTNfdDEwMCl2M18xMDA7
CiAgICBtM190MTAxIHYzXzEwMSA9ICZRV2lkZ2V0Ojp1bnNldEZvbnQ7CiAgICBvbTNfdDEwMSBv
djNfMTAxID0gKG9tM190MTAxKXYzXzEwMTsKICAgIG0zX3QxMDIgdjNfMTAyID0gJlFXaWRnZXQ6
Om93bkZvbnQ7CiAgICBvbTNfdDEwMiBvdjNfMTAyID0gKG9tM190MTAyKXYzXzEwMjsKICAgIG0z
X3QxMDUgdjNfMTA1ID0gJlFXaWRnZXQ6OmN1cnNvcjsKICAgIG9tM190MTA1IG92M18xMDUgPSAo
b20zX3QxMDUpdjNfMTA1OwogICAgbTNfdDEwNiB2M18xMDYgPSAmUVdpZGdldDo6c2V0Q3Vyc29y
OwogICAgb20zX3QxMDYgb3YzXzEwNiA9IChvbTNfdDEwNil2M18xMDY7CiAgICBtM190MTA3IHYz
XzEwNyA9ICZRV2lkZ2V0Ojp1bnNldEN1cnNvcjsKICAgIG9tM190MTA3IG92M18xMDcgPSAob20z
X3QxMDcpdjNfMTA3OwogICAgbTNfdDEwOCB2M18xMDggPSAmUVdpZGdldDo6b3duQ3Vyc29yOwog
ICAgb20zX3QxMDggb3YzXzEwOCA9IChvbTNfdDEwOCl2M18xMDg7CiAgICBtM190MTExIHYzXzEx
MSA9ICZRV2lkZ2V0OjpjYXB0aW9uOwogICAgb20zX3QxMTEgb3YzXzExMSA9IChvbTNfdDExMSl2
M18xMTE7CiAgICBtM190MTEyIHYzXzExMiA9ICZRV2lkZ2V0OjpzZXRDYXB0aW9uOwogICAgb20z
X3QxMTIgb3YzXzExMiA9IChvbTNfdDExMil2M18xMTI7CiAgICBtM190MTE0IHYzXzExNCA9ICZR
V2lkZ2V0OjppY29uOwogICAgb20zX3QxMTQgb3YzXzExNCA9IChvbTNfdDExNCl2M18xMTQ7CiAg
ICBtM190MTE1IHYzXzExNSA9ICZRV2lkZ2V0OjpzZXRJY29uOwogICAgb20zX3QxMTUgb3YzXzEx
NSA9IChvbTNfdDExNSl2M18xMTU7CiAgICBtM190MTE3IHYzXzExNyA9ICZRV2lkZ2V0OjppY29u
VGV4dDsKICAgIG9tM190MTE3IG92M18xMTcgPSAob20zX3QxMTcpdjNfMTE3OwogICAgbTNfdDEx
OCB2M18xMTggPSAmUVdpZGdldDo6c2V0SWNvblRleHQ7CiAgICBvbTNfdDExOCBvdjNfMTE4ID0g
KG9tM190MTE4KXYzXzExODsKICAgIG0zX3QxMjAgdjNfMTIwID0gJlFXaWRnZXQ6Omhhc01vdXNl
VHJhY2tpbmc7CiAgICBvbTNfdDEyMCBvdjNfMTIwID0gKG9tM190MTIwKXYzXzEyMDsKICAgIG0z
X3QxMjEgdjNfMTIxID0gJlFXaWRnZXQ6OnNldE1vdXNlVHJhY2tpbmc7CiAgICBvbTNfdDEyMSBv
djNfMTIxID0gKG9tM190MTIxKXYzXzEyMTsKICAgIG0zX3QxMjMgdjNfMTIzID0gJlFXaWRnZXQ6
OmlzQWN0aXZlV2luZG93OwogICAgb20zX3QxMjMgb3YzXzEyMyA9IChvbTNfdDEyMyl2M18xMjM7
CiAgICBtM190MTI2IHYzXzEyNiA9ICZRV2lkZ2V0Ojppc0ZvY3VzRW5hYmxlZDsKICAgIG9tM190
MTI2IG92M18xMjYgPSAob20zX3QxMjYpdjNfMTI2OwogICAgbTNfdDEyOSB2M18xMjkgPSAmUVdp
ZGdldDo6Zm9jdXNQb2xpY3k7CiAgICBvbTNfdDEyOSBvdjNfMTI5ID0gKG9tM190MTI5KXYzXzEy
OTsKICAgIG0zX3QxMzAgdjNfMTMwID0gJlFXaWRnZXQ6OnNldEZvY3VzUG9saWN5OwogICAgb20z
X3QxMzAgb3YzXzEzMCA9IChvbTNfdDEzMCl2M18xMzA7CiAgICBtM190MTMyIHYzXzEzMiA9ICZR
V2lkZ2V0OjpoYXNGb2N1czsKICAgIG9tM190MTMyIG92M18xMzIgPSAob20zX3QxMzIpdjNfMTMy
OwogICAgbTNfdDEzNSB2M18xMzUgPSAmUVdpZGdldDo6aXNVcGRhdGVzRW5hYmxlZDsKICAgIG9t
M190MTM1IG92M18xMzUgPSAob20zX3QxMzUpdjNfMTM1OwogICAgbTNfdDEzNiB2M18xMzYgPSAm
UVdpZGdldDo6c2V0VXBkYXRlc0VuYWJsZWQ7CiAgICBvbTNfdDEzNiBvdjNfMTM2ID0gKG9tM190
MTM2KXYzXzEzNjsKICAgIG0zX3QxMzggdjNfMTM4ID0gJlFXaWRnZXQ6OmlzVmlzaWJsZTsKICAg
IG9tM190MTM4IG92M18xMzggPSAob20zX3QxMzgpdjNfMTM4OwogICAgbTNfdDE0MSB2M18xNDEg
PSAmUVdpZGdldDo6dmlzaWJsZVJlY3Q7CiAgICBvbTNfdDE0MSBvdjNfMTQxID0gKG9tM190MTQx
KXYzXzE0MTsKICAgIG0zX3QxNDQgdjNfMTQ0ID0gJlFXaWRnZXQ6OmlzSGlkZGVuOwogICAgb20z
X3QxNDQgb3YzXzE0NCA9IChvbTNfdDE0NCl2M18xNDQ7CiAgICBtM190MTQ3IHYzXzE0NyA9ICZR
V2lkZ2V0Ojppc01pbmltaXplZDsKICAgIG9tM190MTQ3IG92M18xNDcgPSAob20zX3QxNDcpdjNf
MTQ3OwogICAgbTNfdDE1MCB2M18xNTAgPSAmUVdpZGdldDo6c2l6ZUhpbnQ7CiAgICBvbTNfdDE1
MCBvdjNfMTUwID0gKG9tM190MTUwKXYzXzE1MDsKICAgIG0zX3QxNTMgdjNfMTUzID0gJlFXaWRn
ZXQ6Om1pbmltdW1TaXplSGludDsKICAgIG9tM190MTUzIG92M18xNTMgPSAob20zX3QxNTMpdjNf
MTUzOwogICAgbTNfdDE1NiB2M18xNTYgPSAmUVdpZGdldDo6bWljcm9Gb2N1c0hpbnQ7CiAgICBv
bTNfdDE1NiBvdjNfMTU2ID0gKG9tM190MTU2KXYzXzE1NjsKICAgIG0zX3QxNTkgdjNfMTU5ID0g
JlFXaWRnZXQ6OmFjY2VwdERyb3BzOwogICAgb20zX3QxNTkgb3YzXzE1OSA9IChvbTNfdDE1OSl2
M18xNTk7CiAgICBtM190MTYwIHYzXzE2MCA9ICZRV2lkZ2V0OjpzZXRBY2NlcHREcm9wczsKICAg
IG9tM190MTYwIG92M18xNjAgPSAob20zX3QxNjApdjNfMTYwOwogICAgbTNfdDE2MiB2M18xNjIg
PSAmUVdpZGdldDo6YXV0b01hc2s7CiAgICBvbTNfdDE2MiBvdjNfMTYyID0gKG9tM190MTYyKXYz
XzE2MjsKICAgIG0zX3QxNjMgdjNfMTYzID0gJlFXaWRnZXQ6OnNldEF1dG9NYXNrOwogICAgb20z
X3QxNjMgb3YzXzE2MyA9IChvbTNfdDE2Myl2M18xNjM7CiAgICBtM190MTY1IHYzXzE2NSA9ICZR
V2lkZ2V0OjpiYWNrZ3JvdW5kT3JpZ2luOwogICAgb20zX3QxNjUgb3YzXzE2NSA9IChvbTNfdDE2
NSl2M18xNjU7CiAgICBtM190MTY2IHYzXzE2NiA9ICZRV2lkZ2V0OjpzZXRCYWNrZ3JvdW5kT3Jp
Z2luOwogICAgb20zX3QxNjYgb3YzXzE2NiA9IChvbTNfdDE2Nil2M18xNjY7CiAgICBtM190MTY4
IHYzXzE2OCA9ICZRV2lkZ2V0OjpjdXN0b21XaGF0c1RoaXM7CiAgICBvbTNfdDE2OCBvdjNfMTY4
ID0gKG9tM190MTY4KXYzXzE2ODsKICAgIFFNZXRhUHJvcGVydHkgKnByb3BzX3RibCA9IFFNZXRh
T2JqZWN0OjpuZXdfbWV0YXByb3BlcnR5KCA1NyApOwogICAgcHJvcHNfdGJsWzBdLnQgPSAiYm9v
bCI7CiAgICBwcm9wc190YmxbMF0ubiA9ICJpc1RvcExldmVsIjsKICAgIHByb3BzX3RibFswXS5n
ZXQgPSAoUU1lbWJlcilvdjNfMDsKICAgIHByb3BzX3RibFswXS5zZXQgPSAwOwogICAgcHJvcHNf
dGJsWzBdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFswXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZp
ZWQ7CiAgICBwcm9wc190YmxbMV0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFsxXS5uID0gImlz
TW9kYWwiOwogICAgcHJvcHNfdGJsWzFdLmdldCA9IChRTWVtYmVyKW92M18zOwogICAgcHJvcHNf
dGJsWzFdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJs
WzFdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMV0uc3NwZWMg
PSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsyXS50ID0gImJvb2wi
OwogICAgcHJvcHNfdGJsWzJdLm4gPSAiaXNQb3B1cCI7CiAgICBwcm9wc190YmxbMl0uZ2V0ID0g
KFFNZW1iZXIpb3YzXzY7CiAgICBwcm9wc190YmxbMl0uc2V0ID0gMDsKICAgIHByb3BzX3RibFsy
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFz
czsKICAgIHByb3BzX3RibFsyXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwog
ICAgcHJvcHNfdGJsWzNdLnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbM10ubiA9ICJpc0Rlc2t0
b3AiOwogICAgcHJvcHNfdGJsWzNdLmdldCA9IChRTWVtYmVyKW92M185OwogICAgcHJvcHNfdGJs
WzNdLnNldCA9IDA7CiAgICBwcm9wc190YmxbM10ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzNd
LmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbM10uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0XS50ID0gImJvb2wiOwog
ICAgcHJvcHNfdGJsWzRdLm4gPSAiZW5hYmxlZCI7CiAgICBwcm9wc190YmxbNF0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzEyOwogICAgcHJvcHNfdGJsWzRdLnNldCA9IChRTWVtYmVyKW92M18xMzsKICAg
IHByb3BzX3RibFs0XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNF0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNs
YXNzOwogICAgcHJvcHNfdGJsWzRdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAg
ICBwcm9wc190YmxbNV0udCA9ICJRUmVjdCI7CiAgICBwcm9wc190YmxbNV0ubiA9ICJnZW9tZXRy
eSI7CiAgICBwcm9wc190YmxbNV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1OwogICAgcHJvcHNfdGJs
WzVdLnNldCA9IChRTWVtYmVyKW92M18xNjsKICAgIHByb3BzX3RibFs1XS5yZXNldCA9IDA7CiAg
ICBwcm9wc190YmxbNV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9w
c190YmxbNV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190Ymxb
NV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs2XS50ID0g
IlFSZWN0IjsKICAgIHByb3BzX3RibFs2XS5uID0gImZyYW1lR2VvbWV0cnkiOwogICAgcHJvcHNf
dGJsWzZdLmdldCA9IChRTWVtYmVyKW92M18xODsKICAgIHByb3BzX3RibFs2XS5zZXQgPSAwOwog
ICAgcHJvcHNfdGJsWzZdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs2XS5nc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzZdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6
VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbN10udCA9ICJpbnQiOwogICAgcHJvcHNfdGJsWzdd
Lm4gPSAieCI7CiAgICBwcm9wc190YmxbN10uZ2V0ID0gKFFNZW1iZXIpb3YzXzIxOwogICAgcHJv
cHNfdGJsWzddLnNldCA9IDA7CiAgICBwcm9wc190YmxbN10ucmVzZXQgPSAwOwogICAgcHJvcHNf
dGJsWzddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbN10uc3Nw
ZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs4XS50ID0gImlu
dCI7CiAgICBwcm9wc190YmxbOF0ubiA9ICJ5IjsKICAgIHByb3BzX3RibFs4XS5nZXQgPSAoUU1l
bWJlcilvdjNfMjQ7CiAgICBwcm9wc190YmxbOF0uc2V0ID0gMDsKICAgIHByb3BzX3RibFs4XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFs4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAg
cHJvcHNfdGJsWzldLnQgPSAiUVBvaW50IjsKICAgIHByb3BzX3RibFs5XS5uID0gInBvcyI7CiAg
ICBwcm9wc190YmxbOV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzI3OwogICAgcHJvcHNfdGJsWzldLnNl
dCA9IDA7CiAgICBwcm9wc190YmxbOV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzldLmdzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbOV0uc3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsxMF0udCA9ICJRU2l6ZSI7CiAgICBw
cm9wc190YmxbMTBdLm4gPSAiZnJhbWVTaXplIjsKICAgIHByb3BzX3RibFsxMF0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzMwOwogICAgcHJvcHNfdGJsWzEwXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzEw
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTBdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbMTBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbMTFdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzExXS5uID0gInNp
emUiOwogICAgcHJvcHNfdGJsWzExXS5nZXQgPSAoUU1lbWJlcilvdjNfMzM7CiAgICBwcm9wc190
YmxbMTFdLnNldCA9IChRTWVtYmVyKW92M18zNDsKICAgIHByb3BzX3RibFsxMV0ucmVzZXQgPSAw
OwogICAgcHJvcHNfdGJsWzExXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJv
cHNfdGJsWzExXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3Ri
bFsxMV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZSk7CiAgICBwcm9wc190
YmxbMTJdLnQgPSAiaW50IjsKICAgIHByb3BzX3RibFsxMl0ubiA9ICJ3aWR0aCI7CiAgICBwcm9w
c190YmxbMTJdLmdldCA9IChRTWVtYmVyKW92M18zNjsKICAgIHByb3BzX3RibFsxMl0uc2V0ID0g
MDsKICAgIHByb3BzX3RibFsxMl0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzEyXS5nc3BlYyA9
IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzEyXS5zc3BlYyA9IFFNZXRhUHJv
cGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzEzXS50ID0gImludCI7CiAgICBwcm9w
c190YmxbMTNdLm4gPSAiaGVpZ2h0IjsKICAgIHByb3BzX3RibFsxM10uZ2V0ID0gKFFNZW1iZXIp
b3YzXzM5OwogICAgcHJvcHNfdGJsWzEzXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzEzXS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbMTNdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAg
ICBwcm9wc190YmxbMTNdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBw
cm9wc190YmxbMTRdLnQgPSAiUVJlY3QiOwogICAgcHJvcHNfdGJsWzE0XS5uID0gInJlY3QiOwog
ICAgcHJvcHNfdGJsWzE0XS5nZXQgPSAoUU1lbWJlcilvdjNfNDI7CiAgICBwcm9wc190YmxbMTRd
LnNldCA9IDA7CiAgICBwcm9wc190YmxbMTRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFsxNF0u
Z3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsxNF0uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsxNV0udCA9ICJRUmVjdCI7
CiAgICBwcm9wc190YmxbMTVdLm4gPSAiY2hpbGRyZW5SZWN0IjsKICAgIHByb3BzX3RibFsxNV0u
Z2V0ID0gKFFNZW1iZXIpb3YzXzQ1OwogICAgcHJvcHNfdGJsWzE1XS5zZXQgPSAwOwogICAgcHJv
cHNfdGJsWzE1XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTVdLmdzcGVjID0gUU1ldGFQcm9w
ZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMTVdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5z
cGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMTZdLnQgPSAiUVJlZ2lvbiI7CiAgICBwcm9wc190Ymxb
MTZdLm4gPSAiY2hpbGRyZW5SZWdpb24iOwogICAgcHJvcHNfdGJsWzE2XS5nZXQgPSAoUU1lbWJl
cilvdjNfNDg7CiAgICBwcm9wc190YmxbMTZdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMTZdLnJl
c2V0ID0gMDsKICAgIHByb3BzX3RibFsxNl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFsxNl0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAg
IHByb3BzX3RibFsxN10udCA9ICJRU2l6ZVBvbGljeSI7CiAgICBwcm9wc190YmxbMTddLm4gPSAi
c2l6ZVBvbGljeSI7CiAgICBwcm9wc190YmxbMTddLmdldCA9IChRTWVtYmVyKW92M181MTsKICAg
IHByb3BzX3RibFsxN10uc2V0ID0gKFFNZW1iZXIpb3YzXzUyOwogICAgcHJvcHNfdGJsWzE3XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7
CiAgICBwcm9wc190YmxbMTddLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9w
c190YmxbMTddLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190Ymxb
MThdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzE4XS5uID0gIm1pbmltdW1TaXplIjsKICAg
IHByb3BzX3RibFsxOF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzU0OwogICAgcHJvcHNfdGJsWzE4XS5z
ZXQgPSAoUU1lbWJlcilvdjNfNTU7CiAgICBwcm9wc190YmxbMThdLnJlc2V0ID0gMDsKICAgIHBy
b3BzX3RibFsxOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsx
OF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMThdLnNl
dEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMTldLnQgPSAiUVNp
emUiOwogICAgcHJvcHNfdGJsWzE5XS5uID0gIm1heGltdW1TaXplIjsKICAgIHByb3BzX3RibFsx
OV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzU3OwogICAgcHJvcHNfdGJsWzE5XS5zZXQgPSAoUU1lbWJl
cilvdjNfNTg7CiAgICBwcm9wc190YmxbMTldLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFsxOV0u
Z3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsxOV0uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMTldLnNldEZsYWdzKFFNZXRh
UHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMjBdLnQgPSAiaW50IjsKICAgIHByb3Bz
X3RibFsyMF0ubiA9ICJtaW5pbXVtV2lkdGgiOwogICAgcHJvcHNfdGJsWzIwXS5nZXQgPSAoUU1l
bWJlcilvdjNfNjA7CiAgICBwcm9wc190YmxbMjBdLnNldCA9IChRTWVtYmVyKW92M182MTsKICAg
IHByb3BzX3RibFsyMF0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzIwXS5nc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIwXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzIwXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpOb3RTdG9y
ZWR8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyMV0udCA9ICJpbnQiOwog
ICAgcHJvcHNfdGJsWzIxXS5uID0gIm1pbmltdW1IZWlnaHQiOwogICAgcHJvcHNfdGJsWzIxXS5n
ZXQgPSAoUU1lbWJlcilvdjNfNjM7CiAgICBwcm9wc190YmxbMjFdLnNldCA9IChRTWVtYmVyKW92
M182NDsKICAgIHByb3BzX3RibFsyMV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzIxXS5nc3Bl
YyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIxXS5zc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIxXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5
OjpOb3RTdG9yZWR8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyMl0udCA9
ICJpbnQiOwogICAgcHJvcHNfdGJsWzIyXS5uID0gIm1heGltdW1XaWR0aCI7CiAgICBwcm9wc190
YmxbMjJdLmdldCA9IChRTWVtYmVyKW92M182NjsKICAgIHByb3BzX3RibFsyMl0uc2V0ID0gKFFN
ZW1iZXIpb3YzXzY3OwogICAgcHJvcHNfdGJsWzIyXS5yZXNldCA9IDA7CiAgICBwcm9wc190Ymxb
MjJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjJdLnNzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjJdLnNldEZsYWdzKFFNZXRh
UHJvcGVydHk6Ok5vdFN0b3JlZHxRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJs
WzIzXS50ID0gImludCI7CiAgICBwcm9wc190YmxbMjNdLm4gPSAibWF4aW11bUhlaWdodCI7CiAg
ICBwcm9wc190YmxbMjNdLmdldCA9IChRTWVtYmVyKW92M182OTsKICAgIHByb3BzX3RibFsyM10u
c2V0ID0gKFFNZW1iZXIpb3YzXzcwOwogICAgcHJvcHNfdGJsWzIzXS5yZXNldCA9IDA7CiAgICBw
cm9wc190YmxbMjNdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190Ymxb
MjNdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjNdLnNldEZs
YWdzKFFNZXRhUHJvcGVydHk6Ok5vdFN0b3JlZHxRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAg
cHJvcHNfdGJsWzI0XS50ID0gIlFTaXplIjsKICAgIHByb3BzX3RibFsyNF0ubiA9ICJzaXplSW5j
cmVtZW50IjsKICAgIHByb3BzX3RibFsyNF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzcyOwogICAgcHJv
cHNfdGJsWzI0XS5zZXQgPSAoUU1lbWJlcilvdjNfNzM7CiAgICBwcm9wc190YmxbMjRdLnJlc2V0
ID0gMDsKICAgIHByb3BzX3RibFsyNF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAg
IHByb3BzX3RibFsyNF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9w
c190YmxbMjRdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190Ymxb
MjVdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzI1XS5uID0gImJhc2VTaXplIjsKICAgIHBy
b3BzX3RibFsyNV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzc1OwogICAgcHJvcHNfdGJsWzI1XS5zZXQg
PSAoUU1lbWJlcilvdjNfNzY7CiAgICBwcm9wc190YmxbMjVdLnJlc2V0ID0gMDsKICAgIHByb3Bz
X3RibFsyNV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNV0u
c3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMjVdLnNldEZs
YWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMjZdLnQgPSAiQmFja2dy
b3VuZE1vZGUiOwogICAgcHJvcHNfdGJsWzI2XS5uID0gImJhY2tncm91bmRNb2RlIjsKICAgIHBy
b3BzX3RibFsyNl0uZ2V0ID0gKFFNZW1iZXIpb3YzXzc4OwogICAgcHJvcHNfdGJsWzI2XS5zZXQg
PSAoUU1lbWJlcilvdjNfNzk7CiAgICBwcm9wc190YmxbMjZdLnJlc2V0ID0gMDsKICAgIHByb3Bz
X3RibFsyNl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNl0u
c3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNl0uZW51bURhdGEg
PSAmZW51bV90YmxbMF07CiAgICBwcm9wc190YmxbMjZdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6
Ok5vdERlc2lnbmFibGV8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyN10u
dCA9ICJRQ29sb3IiOwogICAgcHJvcHNfdGJsWzI3XS5uID0gImJhY2tncm91bmRDb2xvciI7CiAg
ICBwcm9wc190YmxbMjddLmdldCA9IChRTWVtYmVyKW92M184MTsKICAgIHByb3BzX3RibFsyN10u
c2V0ID0gKFFNZW1iZXIpb3YzXzgyOwogICAgcHJvcHNfdGJsWzI3XS5yZXNldCA9IDA7CiAgICBw
cm9wc190YmxbMjddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJvcHNf
dGJsWzI3XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3RibFsy
N10uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZXxRTWV0YVByb3BlcnR5OjpT
dGRTZXQpOwogICAgcHJvcHNfdGJsWzI4XS50ID0gIlFDb2xvciI7CiAgICBwcm9wc190YmxbMjhd
Lm4gPSAiZm9yZWdyb3VuZENvbG9yIjsKICAgIHByb3BzX3RibFsyOF0uZ2V0ID0gKFFNZW1iZXIp
b3YzXzg0OwogICAgcHJvcHNfdGJsWzI4XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzI4XS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbMjhdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNl
OwogICAgcHJvcHNfdGJsWzI4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwog
ICAgcHJvcHNfdGJsWzI5XS50ID0gIlFQaXhtYXAiOwogICAgcHJvcHNfdGJsWzI5XS5uID0gImJh
Y2tncm91bmRQaXhtYXAiOwogICAgcHJvcHNfdGJsWzI5XS5nZXQgPSAoUU1lbWJlcilvdjNfODc7
CiAgICBwcm9wc190YmxbMjldLnNldCA9IChRTWVtYmVyKW92M184ODsKICAgIHByb3BzX3RibFsy
OV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzI5XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OlBv
aW50ZXI7CiAgICBwcm9wc190YmxbMjldLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNl
OwogICAgcHJvcHNfdGJsWzI5XS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpOb3REZXNpZ25hYmxl
fFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMzBdLnQgPSAiUUNvbG9yR3Jv
dXAiOwogICAgcHJvcHNfdGJsWzMwXS5uID0gImNvbG9yR3JvdXAiOwogICAgcHJvcHNfdGJsWzMw
XS5nZXQgPSAoUU1lbWJlcilvdjNfOTA7CiAgICBwcm9wc190YmxbMzBdLnNldCA9IDA7CiAgICBw
cm9wc190YmxbMzBdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszMF0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMzBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0
eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMzFdLnQgPSAiUVBhbGV0dGUiOwogICAgcHJv
cHNfdGJsWzMxXS5uID0gInBhbGV0dGUiOwogICAgcHJvcHNfdGJsWzMxXS5nZXQgPSAoUU1lbWJl
cilvdjNfOTM7CiAgICBwcm9wc190YmxbMzFdLnNldCA9IChRTWVtYmVyKW92M185NDsKICAgIHBy
b3BzX3RibFszMV0ucmVzZXQgPSAoUU1lbWJlcilvdjNfOTU7CiAgICBwcm9wc190YmxbMzFdLmdz
cGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJvcHNfdGJsWzMxXS5zc3BlYyA9
IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3RibFszMV0uc2V0RmxhZ3MoUU1l
dGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFszMl0udCA9ICJib29sIjsKICAgIHBy
b3BzX3RibFszMl0ubiA9ICJvd25QYWxldHRlIjsKICAgIHByb3BzX3RibFszMl0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzk2OwogICAgcHJvcHNfdGJsWzMyXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzMy
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMzJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbMzJdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbMzNdLnQgPSAiUUZvbnQiOwogICAgcHJvcHNfdGJsWzMzXS5uID0gImZv
bnQiOwogICAgcHJvcHNfdGJsWzMzXS5nZXQgPSAoUU1lbWJlcilvdjNfOTk7CiAgICBwcm9wc190
YmxbMzNdLnNldCA9IChRTWVtYmVyKW92M18xMDA7CiAgICBwcm9wc190YmxbMzNdLnJlc2V0ID0g
KFFNZW1iZXIpb3YzXzEwMTsKICAgIHByb3BzX3RibFszM10uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFszM10uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVu
Y2U7CiAgICBwcm9wc190YmxbMzNdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAg
ICBwcm9wc190YmxbMzRdLnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbMzRdLm4gPSAib3duRm9u
dCI7CiAgICBwcm9wc190YmxbMzRdLmdldCA9IChRTWVtYmVyKW92M18xMDI7CiAgICBwcm9wc190
YmxbMzRdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMzRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3Ri
bFszNF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFszNF0uc3Nw
ZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFszNV0udCA9ICJR
Q3Vyc29yIjsKICAgIHByb3BzX3RibFszNV0ubiA9ICJjdXJzb3IiOwogICAgcHJvcHNfdGJsWzM1
XS5nZXQgPSAoUU1lbWJlcilvdjNfMTA1OwogICAgcHJvcHNfdGJsWzM1XS5zZXQgPSAoUU1lbWJl
cilvdjNfMTA2OwogICAgcHJvcHNfdGJsWzM1XS5yZXNldCA9IChRTWVtYmVyKW92M18xMDc7CiAg
ICBwcm9wc190YmxbMzVdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJv
cHNfdGJsWzM1XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3Ri
bFszNV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFszNl0u
dCA9ICJib29sIjsKICAgIHByb3BzX3RibFszNl0ubiA9ICJvd25DdXJzb3IiOwogICAgcHJvcHNf
dGJsWzM2XS5nZXQgPSAoUU1lbWJlcilvdjNfMTA4OwogICAgcHJvcHNfdGJsWzM2XS5zZXQgPSAw
OwogICAgcHJvcHNfdGJsWzM2XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMzZdLmdzcGVjID0g
UU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMzZdLnNzcGVjID0gUU1ldGFQcm9w
ZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMzddLnQgPSAiUVN0cmluZyI7CiAgICBw
cm9wc190YmxbMzddLm4gPSAiY2FwdGlvbiI7CiAgICBwcm9wc190YmxbMzddLmdldCA9IChRTWVt
YmVyKW92M18xMTE7CiAgICBwcm9wc190YmxbMzddLnNldCA9IChRTWVtYmVyKW92M18xMTI7CiAg
ICBwcm9wc190YmxbMzddLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszN10uZ3NwZWMgPSBRTWV0
YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFszN10uc3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMzddLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0
ZFNldCk7CiAgICBwcm9wc190YmxbMzhdLnQgPSAiUVBpeG1hcCI7CiAgICBwcm9wc190YmxbMzhd
Lm4gPSAiaWNvbiI7CiAgICBwcm9wc190YmxbMzhdLmdldCA9IChRTWVtYmVyKW92M18xMTQ7CiAg
ICBwcm9wc190YmxbMzhdLnNldCA9IChRTWVtYmVyKW92M18xMTU7CiAgICBwcm9wc190YmxbMzhd
LnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpQb2lu
dGVyOwogICAgcHJvcHNfdGJsWzM4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsK
ICAgIHByb3BzX3RibFszOF0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHBy
b3BzX3RibFszOV0udCA9ICJRU3RyaW5nIjsKICAgIHByb3BzX3RibFszOV0ubiA9ICJpY29uVGV4
dCI7CiAgICBwcm9wc190YmxbMzldLmdldCA9IChRTWVtYmVyKW92M18xMTc7CiAgICBwcm9wc190
YmxbMzldLnNldCA9IChRTWVtYmVyKW92M18xMTg7CiAgICBwcm9wc190YmxbMzldLnJlc2V0ID0g
MDsKICAgIHByb3BzX3RibFszOV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHBy
b3BzX3RibFszOV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190
YmxbMzldLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbNDBd
LnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbNDBdLm4gPSAibW91c2VUcmFja2luZyI7CiAgICBw
cm9wc190YmxbNDBdLmdldCA9IChRTWVtYmVyKW92M18xMjA7CiAgICBwcm9wc190YmxbNDBdLnNl
dCA9IChRTWVtYmVyKW92M18xMjE7CiAgICBwcm9wc190YmxbNDBdLnJlc2V0ID0gMDsKICAgIHBy
b3BzX3RibFs0MF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0
MF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0MF0uc2V0Rmxh
Z3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs0MV0udCA9ICJib29sIjsK
ICAgIHByb3BzX3RibFs0MV0ubiA9ICJpc0FjdGl2ZVdpbmRvdyI7CiAgICBwcm9wc190YmxbNDFd
LmdldCA9IChRTWVtYmVyKW92M18xMjM7CiAgICBwcm9wc190YmxbNDFdLnNldCA9IDA7CiAgICBw
cm9wc190YmxbNDFdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0MV0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0MV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpV
bnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0Ml0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFs0
Ml0ubiA9ICJmb2N1c0VuYWJsZWQiOwogICAgcHJvcHNfdGJsWzQyXS5nZXQgPSAoUU1lbWJlcilv
djNfMTI2OwogICAgcHJvcHNfdGJsWzQyXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQyXS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbNDJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAg
ICBwcm9wc190YmxbNDJdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBw
cm9wc190YmxbNDNdLnQgPSAiRm9jdXNQb2xpY3kiOwogICAgcHJvcHNfdGJsWzQzXS5uID0gImZv
Y3VzUG9saWN5IjsKICAgIHByb3BzX3RibFs0M10uZ2V0ID0gKFFNZW1iZXIpb3YzXzEyOTsKICAg
IHByb3BzX3RibFs0M10uc2V0ID0gKFFNZW1iZXIpb3YzXzEzMDsKICAgIHByb3BzX3RibFs0M10u
cmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzQzXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNz
OwogICAgcHJvcHNfdGJsWzQzXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJv
cHNfdGJsWzQzXS5lbnVtRGF0YSA9ICZlbnVtX3RibFsyXTsKICAgIHByb3BzX3RibFs0M10uc2V0
RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs0NF0udCA9ICJib29s
IjsKICAgIHByb3BzX3RibFs0NF0ubiA9ICJmb2N1cyI7CiAgICBwcm9wc190YmxbNDRdLmdldCA9
IChRTWVtYmVyKW92M18xMzI7CiAgICBwcm9wc190YmxbNDRdLnNldCA9IDA7CiAgICBwcm9wc190
YmxbNDRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0NF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs0NF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNp
ZmllZDsKICAgIHByb3BzX3RibFs0NV0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFs0NV0ubiA9
ICJ1cGRhdGVzRW5hYmxlZCI7CiAgICBwcm9wc190YmxbNDVdLmdldCA9IChRTWVtYmVyKW92M18x
MzU7CiAgICBwcm9wc190YmxbNDVdLnNldCA9IChRTWVtYmVyKW92M18xMzY7CiAgICBwcm9wc190
YmxbNDVdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0NV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs0NV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFs0NV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZXxR
TWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzQ2XS50ID0gImJvb2wiOwogICAg
cHJvcHNfdGJsWzQ2XS5uID0gInZpc2libGUiOwogICAgcHJvcHNfdGJsWzQ2XS5nZXQgPSAoUU1l
bWJlcilvdjNfMTM4OwogICAgcHJvcHNfdGJsWzQ2XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQ2
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNDZdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbNDZdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbNDddLnQgPSAiUVJlY3QiOwogICAgcHJvcHNfdGJsWzQ3XS5uID0gInZp
c2libGVSZWN0IjsKICAgIHByb3BzX3RibFs0N10uZ2V0ID0gKFFNZW1iZXIpb3YzXzE0MTsKICAg
IHByb3BzX3RibFs0N10uc2V0ID0gMDsKICAgIHByb3BzX3RibFs0N10ucmVzZXQgPSAwOwogICAg
cHJvcHNfdGJsWzQ3XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJs
WzQ3XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzQ4
XS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzQ4XS5uID0gImhpZGRlbiI7CiAgICBwcm9wc190
YmxbNDhdLmdldCA9IChRTWVtYmVyKW92M18xNDQ7CiAgICBwcm9wc190YmxbNDhdLnNldCA9IDA7
CiAgICBwcm9wc190YmxbNDhdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0OF0uZ3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0OF0uc3NwZWMgPSBRTWV0YVByb3Bl
cnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0OV0udCA9ICJib29sIjsKICAgIHByb3Bz
X3RibFs0OV0ubiA9ICJtaW5pbWl6ZWQiOwogICAgcHJvcHNfdGJsWzQ5XS5nZXQgPSAoUU1lbWJl
cilvdjNfMTQ3OwogICAgcHJvcHNfdGJsWzQ5XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQ5XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbNDldLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7
CiAgICBwcm9wc190YmxbNDldLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAg
ICBwcm9wc190YmxbNTBdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzUwXS5uID0gInNpemVI
aW50IjsKICAgIHByb3BzX3RibFs1MF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1MDsKICAgIHByb3Bz
X3RibFs1MF0uc2V0ID0gMDsKICAgIHByb3BzX3RibFs1MF0ucmVzZXQgPSAwOwogICAgcHJvcHNf
dGJsWzUwXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzUwXS5z
c3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzUxXS50ID0g
IlFTaXplIjsKICAgIHByb3BzX3RibFs1MV0ubiA9ICJtaW5pbXVtU2l6ZUhpbnQiOwogICAgcHJv
cHNfdGJsWzUxXS5nZXQgPSAoUU1lbWJlcilvdjNfMTUzOwogICAgcHJvcHNfdGJsWzUxXS5zZXQg
PSAwOwogICAgcHJvcHNfdGJsWzUxXS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNTFdLmdzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbNTFdLnNzcGVjID0gUU1ldGFQ
cm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbNTJdLnQgPSAiUVJlY3QiOwogICAg
cHJvcHNfdGJsWzUyXS5uID0gIm1pY3JvRm9jdXNIaW50IjsKICAgIHByb3BzX3RibFs1Ml0uZ2V0
ID0gKFFNZW1iZXIpb3YzXzE1NjsKICAgIHByb3BzX3RibFs1Ml0uc2V0ID0gMDsKICAgIHByb3Bz
X3RibFs1Ml0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzUyXS5nc3BlYyA9IFFNZXRhUHJvcGVy
dHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzUyXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3Bl
Y2lmaWVkOwogICAgcHJvcHNfdGJsWzUzXS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzUzXS5u
ID0gImFjY2VwdERyb3BzIjsKICAgIHByb3BzX3RibFs1M10uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1
OTsKICAgIHByb3BzX3RibFs1M10uc2V0ID0gKFFNZW1iZXIpb3YzXzE2MDsKICAgIHByb3BzX3Ri
bFs1M10ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzUzXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzUzXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwog
ICAgcHJvcHNfdGJsWzUzXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJv
cHNfdGJsWzU0XS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzU0XS5uID0gImF1dG9NYXNrIjsK
ICAgIHByb3BzX3RibFs1NF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE2MjsKICAgIHByb3BzX3RibFs1
NF0uc2V0ID0gKFFNZW1iZXIpb3YzXzE2MzsKICAgIHByb3BzX3RibFs1NF0ucmVzZXQgPSAwOwog
ICAgcHJvcHNfdGJsWzU0XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNf
dGJsWzU0XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzU0XS5z
ZXRGbGFncyhRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzU1XS50ID0gIkJh
Y2tncm91bmRPcmlnaW4iOwogICAgcHJvcHNfdGJsWzU1XS5uID0gImJhY2tncm91bmRPcmlnaW4i
OwogICAgcHJvcHNfdGJsWzU1XS5nZXQgPSAoUU1lbWJlcilvdjNfMTY1OwogICAgcHJvcHNfdGJs
WzU1XS5zZXQgPSAoUU1lbWJlcilvdjNfMTY2OwogICAgcHJvcHNfdGJsWzU1XS5yZXNldCA9IDA7
CiAgICBwcm9wc190YmxbNTVdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9w
c190YmxbNTVdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbNTVd
LmVudW1EYXRhID0gJmVudW1fdGJsWzNdOwogICAgcHJvcHNfdGJsWzU1XS5zZXRGbGFncyhRTWV0
YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzU2XS50ID0gImJvb2wiOwogICAgcHJv
cHNfdGJsWzU2XS5uID0gImN1c3RvbVdoYXRzVGhpcyI7CiAgICBwcm9wc190YmxbNTZdLmdldCA9
IChRTWVtYmVyKW92M18xNjg7CiAgICBwcm9wc190YmxbNTZdLnNldCA9IDA7CiAgICBwcm9wc190
YmxbNTZdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs1Nl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs1Nl0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNp
ZmllZDsKCiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MCkoYm9vbCk7CiAgICB0eXBl
ZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDApKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRV2lk
Z2V0OjoqbTFfdDEpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QxKShi
b29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QyKShjb25zdCBRU3RyaW5nJik7
CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDIpKGNvbnN0IFFTdHJpbmcmKTsKICAg
IHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzKShjb25zdCBRUGl4bWFwJik7CiAgICB0eXBl
ZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDMpKGNvbnN0IFFQaXhtYXAmKTsKICAgIHR5cGVkZWYg
dm9pZCAoUVdpZGdldDo6Km0xX3Q0KShjb25zdCBRU3RyaW5nJik7CiAgICB0eXBlZGVmIHZvaWQg
KFFPYmplY3Q6OipvbTFfdDQpKGNvbnN0IFFTdHJpbmcmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdp
ZGdldDo6Km0xX3Q1KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90NSko
Ym9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90NikoKTsKICAgIHR5cGVkZWYg
dm9pZCAoUU9iamVjdDo6Km9tMV90NikoKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0x
X3Q3KSgpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3Q3KSgpOwogICAgdHlwZWRl
ZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDgpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0
Ojoqb20xX3Q4KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3Q5KSgpOwog
ICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3Q5KSgpOwogICAgdHlwZWRlZiB2b2lkIChR
V2lkZ2V0OjoqbTFfdDEwKShpbnQsaW50LGludCxpbnQpOwogICAgdHlwZWRlZiB2b2lkIChRT2Jq
ZWN0Ojoqb20xX3QxMCkoaW50LGludCxpbnQsaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0xX3QxMSkoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9t
MV90MTEpKGNvbnN0IFFSZWN0Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MTIp
KCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDEyKSgpOwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTFfdDEzKShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tMV90MTMpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDE0KShpbnQs
aW50LGludCxpbnQsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDE0KShp
bnQsaW50LGludCxpbnQsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MTUp
KGNvbnN0IFFSZWN0Jixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MTUp
KGNvbnN0IFFSZWN0Jixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QxNiko
Y29uc3QgUVJlZ2lvbiYsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDE2
KShjb25zdCBRUmVnaW9uJixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3Qx
NykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MTcpKCk7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptMV90MTgpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTFfdDE4KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDE5KSgpOwogICAgdHlw
ZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QxOSkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0xX3QyMCkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MjApKCk7CiAg
ICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjEpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTFfdDIxKSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDIyKSgp
OwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QyMikoKTsKICAgIHR5cGVkZWYgdm9p
ZCAoUVdpZGdldDo6Km0xX3QyMykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90
MjMpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjQpKCk7CiAgICB0eXBlZGVm
IHZvaWQgKFFPYmplY3Q6OipvbTFfdDI0KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0Ojoq
bTFfdDI1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDI1KSgpY29u
c3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptMV90MjYpKCk7CiAgICB0eXBlZGVmIGJv
b2wgKFFPYmplY3Q6OipvbTFfdDI2KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFf
dDI3KSgpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QyNykoKTsKICAgIHR5cGVk
ZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QyOCkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tMV90MjgpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjkpKFFXaWRnZXQq
KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MjkpKFFXaWRnZXQqKTsKICAgIHR5
cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMCkoaW50LGludCk7CiAgICB0eXBlZGVmIHZvaWQg
KFFPYmplY3Q6OipvbTFfdDMwKShpbnQsaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6
Km0xX3QzMSkoY29uc3QgUVBvaW50Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFf
dDMxKShjb25zdCBRUG9pbnQmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMiko
aW50LGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDMyKShpbnQsaW50KTsK
ICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMykoY29uc3QgUVNpemUmKTsKICAgIHR5
cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MzMpKGNvbnN0IFFTaXplJik7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptMV90MzQpKGludCxpbnQsaW50LGludCk7CiAgICB0eXBlZGVmIHZv
aWQgKFFPYmplY3Q6OipvbTFfdDM0KShpbnQsaW50LGludCxpbnQpOwogICAgdHlwZWRlZiB2b2lk
IChRV2lkZ2V0OjoqbTFfdDM1KShjb25zdCBRUmVjdCYpOwogICAgdHlwZWRlZiB2b2lkIChRT2Jq
ZWN0Ojoqb20xX3QzNSkoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6
Km0xX3QzNikoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MzYpKCk7CiAgICBt
MV90MCB2MV8wID0gJlFXaWRnZXQ6OnNldEVuYWJsZWQ7CiAgICBvbTFfdDAgb3YxXzAgPSAob20x
X3QwKXYxXzA7CiAgICBtMV90MSB2MV8xID0gJlFXaWRnZXQ6OnNldERpc2FibGVkOwogICAgb20x
X3QxIG92MV8xID0gKG9tMV90MSl2MV8xOwogICAgbTFfdDIgdjFfMiA9ICZRV2lkZ2V0OjpzZXRD
YXB0aW9uOwogICAgb20xX3QyIG92MV8yID0gKG9tMV90Mil2MV8yOwogICAgbTFfdDMgdjFfMyA9
ICZRV2lkZ2V0OjpzZXRJY29uOwogICAgb20xX3QzIG92MV8zID0gKG9tMV90Myl2MV8zOwogICAg
bTFfdDQgdjFfNCA9ICZRV2lkZ2V0OjpzZXRJY29uVGV4dDsKICAgIG9tMV90NCBvdjFfNCA9IChv
bTFfdDQpdjFfNDsKICAgIG0xX3Q1IHYxXzUgPSAmUVdpZGdldDo6c2V0TW91c2VUcmFja2luZzsK
ICAgIG9tMV90NSBvdjFfNSA9IChvbTFfdDUpdjFfNTsKICAgIG0xX3Q2IHYxXzYgPSAmUVdpZGdl
dDo6c2V0Rm9jdXM7CiAgICBvbTFfdDYgb3YxXzYgPSAob20xX3Q2KXYxXzY7CiAgICBtMV90NyB2
MV83ID0gJlFXaWRnZXQ6OmNsZWFyRm9jdXM7CiAgICBvbTFfdDcgb3YxXzcgPSAob20xX3Q3KXYx
Xzc7CiAgICBtMV90OCB2MV84ID0gJlFXaWRnZXQ6OnNldFVwZGF0ZXNFbmFibGVkOwogICAgb20x
X3Q4IG92MV84ID0gKG9tMV90OCl2MV84OwogICAgbTFfdDkgdjFfOSA9ICZRV2lkZ2V0Ojp1cGRh
dGU7CiAgICBvbTFfdDkgb3YxXzkgPSAob20xX3Q5KXYxXzk7CiAgICBtMV90MTAgdjFfMTAgPSAm
UVdpZGdldDo6dXBkYXRlOwogICAgb20xX3QxMCBvdjFfMTAgPSAob20xX3QxMCl2MV8xMDsKICAg
IG0xX3QxMSB2MV8xMSA9ICZRV2lkZ2V0Ojp1cGRhdGU7CiAgICBvbTFfdDExIG92MV8xMSA9IChv
bTFfdDExKXYxXzExOwogICAgbTFfdDEyIHYxXzEyID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBv
bTFfdDEyIG92MV8xMiA9IChvbTFfdDEyKXYxXzEyOwogICAgbTFfdDEzIHYxXzEzID0gJlFXaWRn
ZXQ6OnJlcGFpbnQ7CiAgICBvbTFfdDEzIG92MV8xMyA9IChvbTFfdDEzKXYxXzEzOwogICAgbTFf
dDE0IHYxXzE0ID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBvbTFfdDE0IG92MV8xNCA9IChvbTFf
dDE0KXYxXzE0OwogICAgbTFfdDE1IHYxXzE1ID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBvbTFf
dDE1IG92MV8xNSA9IChvbTFfdDE1KXYxXzE1OwogICAgbTFfdDE2IHYxXzE2ID0gJlFXaWRnZXQ6
OnJlcGFpbnQ7CiAgICBvbTFfdDE2IG92MV8xNiA9IChvbTFfdDE2KXYxXzE2OwogICAgbTFfdDE3
IHYxXzE3ID0gJlFXaWRnZXQ6OnNob3c7CiAgICBvbTFfdDE3IG92MV8xNyA9IChvbTFfdDE3KXYx
XzE3OwogICAgbTFfdDE4IHYxXzE4ID0gJlFXaWRnZXQ6OmhpZGU7CiAgICBvbTFfdDE4IG92MV8x
OCA9IChvbTFfdDE4KXYxXzE4OwogICAgbTFfdDE5IHYxXzE5ID0gJlFXaWRnZXQ6Omljb25pZnk7
CiAgICBvbTFfdDE5IG92MV8xOSA9IChvbTFfdDE5KXYxXzE5OwogICAgbTFfdDIwIHYxXzIwID0g
JlFXaWRnZXQ6OnNob3dNaW5pbWl6ZWQ7CiAgICBvbTFfdDIwIG92MV8yMCA9IChvbTFfdDIwKXYx
XzIwOwogICAgbTFfdDIxIHYxXzIxID0gJlFXaWRnZXQ6OnNob3dNYXhpbWl6ZWQ7CiAgICBvbTFf
dDIxIG92MV8yMSA9IChvbTFfdDIxKXYxXzIxOwogICAgbTFfdDIyIHYxXzIyID0gJlFXaWRnZXQ6
OnNob3dGdWxsU2NyZWVuOwogICAgb20xX3QyMiBvdjFfMjIgPSAob20xX3QyMil2MV8yMjsKICAg
IG0xX3QyMyB2MV8yMyA9ICZRV2lkZ2V0OjpzaG93Tm9ybWFsOwogICAgb20xX3QyMyBvdjFfMjMg
PSAob20xX3QyMyl2MV8yMzsKICAgIG0xX3QyNCB2MV8yNCA9ICZRV2lkZ2V0Ojpwb2xpc2g7CiAg
ICBvbTFfdDI0IG92MV8yNCA9IChvbTFfdDI0KXYxXzI0OwogICAgbTFfdDI1IHYxXzI1ID0gJlFX
aWRnZXQ6OmNvbnN0UG9saXNoOwogICAgb20xX3QyNSBvdjFfMjUgPSAob20xX3QyNSl2MV8yNTsK
ICAgIG0xX3QyNiB2MV8yNiA9ICZRV2lkZ2V0OjpjbG9zZTsKICAgIG9tMV90MjYgb3YxXzI2ID0g
KG9tMV90MjYpdjFfMjY7CiAgICBtMV90MjcgdjFfMjcgPSAmUVdpZGdldDo6cmFpc2U7CiAgICBv
bTFfdDI3IG92MV8yNyA9IChvbTFfdDI3KXYxXzI3OwogICAgbTFfdDI4IHYxXzI4ID0gJlFXaWRn
ZXQ6Omxvd2VyOwogICAgb20xX3QyOCBvdjFfMjggPSAob20xX3QyOCl2MV8yODsKICAgIG0xX3Qy
OSB2MV8yOSA9ICZRV2lkZ2V0OjpzdGFja1VuZGVyOwogICAgb20xX3QyOSBvdjFfMjkgPSAob20x
X3QyOSl2MV8yOTsKICAgIG0xX3QzMCB2MV8zMCA9ICZRV2lkZ2V0Ojptb3ZlOwogICAgb20xX3Qz
MCBvdjFfMzAgPSAob20xX3QzMCl2MV8zMDsKICAgIG0xX3QzMSB2MV8zMSA9ICZRV2lkZ2V0Ojpt
b3ZlOwogICAgb20xX3QzMSBvdjFfMzEgPSAob20xX3QzMSl2MV8zMTsKICAgIG0xX3QzMiB2MV8z
MiA9ICZRV2lkZ2V0OjpyZXNpemU7CiAgICBvbTFfdDMyIG92MV8zMiA9IChvbTFfdDMyKXYxXzMy
OwogICAgbTFfdDMzIHYxXzMzID0gJlFXaWRnZXQ6OnJlc2l6ZTsKICAgIG9tMV90MzMgb3YxXzMz
ID0gKG9tMV90MzMpdjFfMzM7CiAgICBtMV90MzQgdjFfMzQgPSAmUVdpZGdldDo6c2V0R2VvbWV0
cnk7CiAgICBvbTFfdDM0IG92MV8zNCA9IChvbTFfdDM0KXYxXzM0OwogICAgbTFfdDM1IHYxXzM1
ID0gJlFXaWRnZXQ6OnNldEdlb21ldHJ5OwogICAgb20xX3QzNSBvdjFfMzUgPSAob20xX3QzNSl2
MV8zNTsKICAgIG0xX3QzNiB2MV8zNiA9ICZRV2lkZ2V0Ojpmb2N1c1Byb3h5RGVzdHJveWVkOwog
ICAgb20xX3QzNiBvdjFfMzYgPSAob20xX3QzNil2MV8zNjsKICAgIFFNZXRhRGF0YSAqc2xvdF90
YmwgPSBRTWV0YU9iamVjdDo6bmV3X21ldGFkYXRhKDM3KTsKICAgIFFNZXRhRGF0YTo6QWNjZXNz
ICpzbG90X3RibF9hY2Nlc3MgPSBRTWV0YU9iamVjdDo6bmV3X21ldGFhY2Nlc3MoMzcpOwogICAg
c2xvdF90YmxbMF0ubmFtZSA9ICJzZXRFbmFibGVkKGJvb2wpIjsKICAgIHNsb3RfdGJsWzBdLnB0
ciA9IChRTWVtYmVyKW92MV8wOwogICAgc2xvdF90YmxfYWNjZXNzWzBdID0gUU1ldGFEYXRhOjpQ
dWJsaWM7CiAgICBzbG90X3RibFsxXS5uYW1lID0gInNldERpc2FibGVkKGJvb2wpIjsKICAgIHNs
b3RfdGJsWzFdLnB0ciA9IChRTWVtYmVyKW92MV8xOwogICAgc2xvdF90YmxfYWNjZXNzWzFdID0g
UU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsyXS5uYW1lID0gInNldENhcHRpb24oY29u
c3QgUVN0cmluZyYpIjsKICAgIHNsb3RfdGJsWzJdLnB0ciA9IChRTWVtYmVyKW92MV8yOwogICAg
c2xvdF90YmxfYWNjZXNzWzJdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFszXS5u
YW1lID0gInNldEljb24oY29uc3QgUVBpeG1hcCYpIjsKICAgIHNsb3RfdGJsWzNdLnB0ciA9IChR
TWVtYmVyKW92MV8zOwogICAgc2xvdF90YmxfYWNjZXNzWzNdID0gUU1ldGFEYXRhOjpQdWJsaWM7
CiAgICBzbG90X3RibFs0XS5uYW1lID0gInNldEljb25UZXh0KGNvbnN0IFFTdHJpbmcmKSI7CiAg
ICBzbG90X3RibFs0XS5wdHIgPSAoUU1lbWJlcilvdjFfNDsKICAgIHNsb3RfdGJsX2FjY2Vzc1s0
XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbNV0ubmFtZSA9ICJzZXRNb3VzZVRy
YWNraW5nKGJvb2wpIjsKICAgIHNsb3RfdGJsWzVdLnB0ciA9IChRTWVtYmVyKW92MV81OwogICAg
c2xvdF90YmxfYWNjZXNzWzVdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFs2XS5u
YW1lID0gInNldEZvY3VzKCkiOwogICAgc2xvdF90YmxbNl0ucHRyID0gKFFNZW1iZXIpb3YxXzY7
CiAgICBzbG90X3RibF9hY2Nlc3NbNl0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJs
WzddLm5hbWUgPSAiY2xlYXJGb2N1cygpIjsKICAgIHNsb3RfdGJsWzddLnB0ciA9IChRTWVtYmVy
KW92MV83OwogICAgc2xvdF90YmxfYWNjZXNzWzddID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBz
bG90X3RibFs4XS5uYW1lID0gInNldFVwZGF0ZXNFbmFibGVkKGJvb2wpIjsKICAgIHNsb3RfdGJs
WzhdLnB0ciA9IChRTWVtYmVyKW92MV84OwogICAgc2xvdF90YmxfYWNjZXNzWzhdID0gUU1ldGFE
YXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFs5XS5uYW1lID0gInVwZGF0ZSgpIjsKICAgIHNsb3Rf
dGJsWzldLnB0ciA9IChRTWVtYmVyKW92MV85OwogICAgc2xvdF90YmxfYWNjZXNzWzldID0gUU1l
dGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsxMF0ubmFtZSA9ICJ1cGRhdGUoaW50LGludCxp
bnQsaW50KSI7CiAgICBzbG90X3RibFsxMF0ucHRyID0gKFFNZW1iZXIpb3YxXzEwOwogICAgc2xv
dF90YmxfYWNjZXNzWzEwXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMTFdLm5h
bWUgPSAidXBkYXRlKGNvbnN0IFFSZWN0JikiOwogICAgc2xvdF90YmxbMTFdLnB0ciA9IChRTWVt
YmVyKW92MV8xMTsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxMV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzEyXS5uYW1lID0gInJlcGFpbnQoKSI7CiAgICBzbG90X3RibFsxMl0ucHRy
ID0gKFFNZW1iZXIpb3YxXzEyOwogICAgc2xvdF90YmxfYWNjZXNzWzEyXSA9IFFNZXRhRGF0YTo6
UHVibGljOwogICAgc2xvdF90YmxbMTNdLm5hbWUgPSAicmVwYWludChib29sKSI7CiAgICBzbG90
X3RibFsxM10ucHRyID0gKFFNZW1iZXIpb3YxXzEzOwogICAgc2xvdF90YmxfYWNjZXNzWzEzXSA9
IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMTRdLm5hbWUgPSAicmVwYWludChpbnQs
aW50LGludCxpbnQsYm9vbCkiOwogICAgc2xvdF90YmxbMTRdLnB0ciA9IChRTWVtYmVyKW92MV8x
NDsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxNF0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3Rf
dGJsWzE1XS5uYW1lID0gInJlcGFpbnQoY29uc3QgUVJlY3QmLGJvb2wpIjsKICAgIHNsb3RfdGJs
WzE1XS5wdHIgPSAoUU1lbWJlcilvdjFfMTU7CiAgICBzbG90X3RibF9hY2Nlc3NbMTVdID0gUU1l
dGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsxNl0ubmFtZSA9ICJyZXBhaW50KGNvbnN0IFFS
ZWdpb24mLGJvb2wpIjsKICAgIHNsb3RfdGJsWzE2XS5wdHIgPSAoUU1lbWJlcilvdjFfMTY7CiAg
ICBzbG90X3RibF9hY2Nlc3NbMTZdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsx
N10ubmFtZSA9ICJzaG93KCkiOwogICAgc2xvdF90YmxbMTddLnB0ciA9IChRTWVtYmVyKW92MV8x
NzsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxN10gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3Rf
dGJsWzE4XS5uYW1lID0gImhpZGUoKSI7CiAgICBzbG90X3RibFsxOF0ucHRyID0gKFFNZW1iZXIp
b3YxXzE4OwogICAgc2xvdF90YmxfYWNjZXNzWzE4XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAg
c2xvdF90YmxbMTldLm5hbWUgPSAiaWNvbmlmeSgpIjsKICAgIHNsb3RfdGJsWzE5XS5wdHIgPSAo
UU1lbWJlcilvdjFfMTk7CiAgICBzbG90X3RibF9hY2Nlc3NbMTldID0gUU1ldGFEYXRhOjpQdWJs
aWM7CiAgICBzbG90X3RibFsyMF0ubmFtZSA9ICJzaG93TWluaW1pemVkKCkiOwogICAgc2xvdF90
YmxbMjBdLnB0ciA9IChRTWVtYmVyKW92MV8yMDsKICAgIHNsb3RfdGJsX2FjY2Vzc1syMF0gPSBR
TWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzIxXS5uYW1lID0gInNob3dNYXhpbWl6ZWQo
KSI7CiAgICBzbG90X3RibFsyMV0ucHRyID0gKFFNZW1iZXIpb3YxXzIxOwogICAgc2xvdF90Ymxf
YWNjZXNzWzIxXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjJdLm5hbWUgPSAi
c2hvd0Z1bGxTY3JlZW4oKSI7CiAgICBzbG90X3RibFsyMl0ucHRyID0gKFFNZW1iZXIpb3YxXzIy
OwogICAgc2xvdF90YmxfYWNjZXNzWzIyXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90
YmxbMjNdLm5hbWUgPSAic2hvd05vcm1hbCgpIjsKICAgIHNsb3RfdGJsWzIzXS5wdHIgPSAoUU1l
bWJlcilvdjFfMjM7CiAgICBzbG90X3RibF9hY2Nlc3NbMjNdID0gUU1ldGFEYXRhOjpQdWJsaWM7
CiAgICBzbG90X3RibFsyNF0ubmFtZSA9ICJwb2xpc2goKSI7CiAgICBzbG90X3RibFsyNF0ucHRy
ID0gKFFNZW1iZXIpb3YxXzI0OwogICAgc2xvdF90YmxfYWNjZXNzWzI0XSA9IFFNZXRhRGF0YTo6
UHVibGljOwogICAgc2xvdF90YmxbMjVdLm5hbWUgPSAiY29uc3RQb2xpc2goKSI7CiAgICBzbG90
X3RibFsyNV0ucHRyID0gKFFNZW1iZXIpb3YxXzI1OwogICAgc2xvdF90YmxfYWNjZXNzWzI1XSA9
IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjZdLm5hbWUgPSAiY2xvc2UoKSI7CiAg
ICBzbG90X3RibFsyNl0ucHRyID0gKFFNZW1iZXIpb3YxXzI2OwogICAgc2xvdF90YmxfYWNjZXNz
WzI2XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjddLm5hbWUgPSAicmFpc2Uo
KSI7CiAgICBzbG90X3RibFsyN10ucHRyID0gKFFNZW1iZXIpb3YxXzI3OwogICAgc2xvdF90Ymxf
YWNjZXNzWzI3XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjhdLm5hbWUgPSAi
bG93ZXIoKSI7CiAgICBzbG90X3RibFsyOF0ucHRyID0gKFFNZW1iZXIpb3YxXzI4OwogICAgc2xv
dF90YmxfYWNjZXNzWzI4XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjldLm5h
bWUgPSAic3RhY2tVbmRlcihRV2lkZ2V0KikiOwogICAgc2xvdF90YmxbMjldLnB0ciA9IChRTWVt
YmVyKW92MV8yOTsKICAgIHNsb3RfdGJsX2FjY2Vzc1syOV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzMwXS5uYW1lID0gIm1vdmUoaW50LGludCkiOwogICAgc2xvdF90YmxbMzBd
LnB0ciA9IChRTWVtYmVyKW92MV8zMDsKICAgIHNsb3RfdGJsX2FjY2Vzc1szMF0gPSBRTWV0YURh
dGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzMxXS5uYW1lID0gIm1vdmUoY29uc3QgUVBvaW50Jiki
OwogICAgc2xvdF90YmxbMzFdLnB0ciA9IChRTWVtYmVyKW92MV8zMTsKICAgIHNsb3RfdGJsX2Fj
Y2Vzc1szMV0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzMyXS5uYW1lID0gInJl
c2l6ZShpbnQsaW50KSI7CiAgICBzbG90X3RibFszMl0ucHRyID0gKFFNZW1iZXIpb3YxXzMyOwog
ICAgc2xvdF90YmxfYWNjZXNzWzMyXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90Ymxb
MzNdLm5hbWUgPSAicmVzaXplKGNvbnN0IFFTaXplJikiOwogICAgc2xvdF90YmxbMzNdLnB0ciA9
IChRTWVtYmVyKW92MV8zMzsKICAgIHNsb3RfdGJsX2FjY2Vzc1szM10gPSBRTWV0YURhdGE6OlB1
YmxpYzsKICAgIHNsb3RfdGJsWzM0XS5uYW1lID0gInNldEdlb21ldHJ5KGludCxpbnQsaW50LGlu
dCkiOwogICAgc2xvdF90YmxbMzRdLnB0ciA9IChRTWVtYmVyKW92MV8zNDsKICAgIHNsb3RfdGJs
X2FjY2Vzc1szNF0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzM1XS5uYW1lID0g
InNldEdlb21ldHJ5KGNvbnN0IFFSZWN0JikiOwogICAgc2xvdF90YmxbMzVdLnB0ciA9IChRTWVt
YmVyKW92MV8zNTsKICAgIHNsb3RfdGJsX2FjY2Vzc1szNV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzM2XS5uYW1lID0gImZvY3VzUHJveHlEZXN0cm95ZWQoKSI7CiAgICBzbG90
X3RibFszNl0ucHRyID0gKFFNZW1iZXIpb3YxXzM2OwogICAgc2xvdF90YmxfYWNjZXNzWzM2XSA9
IFFNZXRhRGF0YTo6UHJpdmF0ZTsKICAgIG1ldGFPYmogPSBRTWV0YU9iamVjdDo6bmV3X21ldGFv
YmplY3QoCiAgICAgICAgIlFXaWRnZXQiLCAiUU9iamVjdCIsCiAgICAgICAgc2xvdF90YmwsIDM3
LAogICAgICAgIDAsIDAsCgogICAgICAgIHByb3BzX3RibCwgNTcsCiAgICAgICAgZW51bV90Ymws
IDQsCgogICAgICAgIDAsIDAgKTsKICAgIG1ldGFPYmotPnNldF9zbG90X2FjY2Vzcyggc2xvdF90
YmxfYWNjZXNzICk7CgoKICAgIHJldHVybiBtZXRhT2JqOwp9Cg==


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

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

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-19 15:46 c++/8534: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor Jan Hubicka
  -- strict thread matches above, loose matches on Subject: below --
2002-11-19 15:56 Jan Hubicka
2002-11-19 15:48 Wolfgang Bangerth
2002-11-19 15:41 Wolfgang Bangerth
2002-11-19 12:46 Wolfgang Bangerth
2002-11-19 12:46 Jan Hubicka
2002-11-19 12:23 jh

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