delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2011/07/29/16:01:45

X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f
X-Recipient: djgpp-workers AT delorie DOT com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=gamma;
h=mime-version:date:message-id:subject:from:to:content-type;
bh=cxdDfEJzc+DtQifeAIefupLs8VphxG76l5MJMEL0kgA=;
b=xw9TigRAQ3UxaZPKyeWdYL0HXRVYvYzae55sg5F+UTl4s/hWJXXrYezNeIhZU5/jjZ
rkXzuMJDtD9td9cNIAf802kwrK5m+eN7/19XIHLnp6qNv+I1CdvU/o+OdZxcJu8rfDjr
riwQgyuRdf2DRMpEY+VnNKVm6qY+l6AL3Pe4E=
MIME-Version: 1.0
Date: Fri, 29 Jul 2011 23:01:07 +0300
Message-ID: <CAA2C=vCTyDxWBgYzoBB31=hoOBHJhL+famn_6XL2eYb3a_3egA@mail.gmail.com>
Subject: [PATCH] allow 64 bit host tools when cross compiling
From: Ozkan Sezer <sezeroz AT gmail DOT com>
To: djgpp-workers AT delorie DOT com
Reply-To: djgpp-workers AT delorie DOT com

--001636920a1afcdb4b04a93abd5c
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Fri, Jul 29, 2011 at 6:32 PM, Ozkan Sezer <sezeroz AT gmail DOT com> wrote:
> Hi all:
>
> dxegen segfaults when built as a 64 bit host tool in
> dxe3gen.c:553 (write_dxe) most probably due to "long"
> data type usage at many places (such as coff.h)
>
>
> libemu]$ export PATH=3D"/usr/local/cross-djgpp/bin:$PATH"
> libemu]$ export DXE_LD_LIBRARY_PATH=3D./../../lib
> libemu]$ gdb ./../../hostbin/dxegen.exe
> GNU gdb Fedora (6.8-32.fc10)
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.h=
tml>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. =A0Type "show copyi=
ng"
> and "show warranty" for details.
> This GDB was configured as "x86_64-redhat-linux-gnu"...
> (gdb) set args ./../../bin/emu387.dxe __emu_entry src/emu387.o
> id_emu.o src/emudummy.o -L../../lib
> /usr/local/cross-djgpp-gcc33/bin/../lib/gcc-lib/i586-pc-msdosdjgpp/3.3.6/=
libgcc.a
> -lc /usr/local/cross-djgpp-gcc33/bin/../lib/gcc-lib/i586-pc-msdosdjgpp/3.=
3.6/libgcc.a
> (gdb) r
> Starting program:
> /home/ozzie/Download/djgpp-20110710/hostbin/dxegen.exe
> ./../../bin/emu387.dxe __emu_entry src/emu387.o id_emu.o
> src/emudummy.o -L../../lib
> /usr/local/cross-djgpp-gcc33/bin/../lib/gcc-lib/i586-pc-msdosdjgpp/3.3.6/=
libgcc.a
> -lc /usr/local/cross-djgpp-gcc33/bin/../lib/gcc-lib/i586-pc-msdosdjgpp/3.=
3.6/libgcc.a
> Detaching after fork from child process 15611.
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000003397e839db in mempcpy () from /lib64/libc.so.6
> Missing separate debuginfos, use: debuginfo-install glibc-2.9-3.x86_64
> (gdb) bt
> #0 =A00x0000003397e839db in mempcpy () from /lib64/libc.so.6
> #1 =A00x0000003397e735e6 in _IO_file_xsgetn_internal () from /lib64/libc.=
so.6
> #2 =A00x0000003397e68f5f in fread () from /lib64/libc.so.6
> #3 =A00x0000000000401098 in write_dxe (inf=3D0x607160, outf=3D0x6073a0,
> fh=3D0x7fffffffe0a0) at dxe3gen.c:553
> #4 =A00x0000000000402817 in main (argc=3D10, argv=3D0x7fffffffe1f8) at dx=
e3gen.c:1173
> (gdb)
>
>
>
> I don't have a patch at the moment. =A0If someone beats me
> to it, it'd be nice.


OK, here is a patch that seems to work for me (see attached 64.patch)
There are actually more places that need attending to (debug, syms.h,
for example) but this seems to do the  trick for now.  The log of stderr
output is also attached.  Compilation was done on x86_64-Fedora 10
using gcc-4.4.7 as the host compiler and a gcc-4.4.7 based djgpp cross
compiler along with binutils from today's cvs.

Please review and consider applying if OK.

--
O.S.

--001636920a1afcdb4b04a93abd5c
Content-Type: text/plain; charset=US-ASCII; name="stderr.txt"
Content-Disposition: attachment; filename="stderr.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gqpkv4911

ZGphc20ueTo3MDUuMTEtNzEzLjE0OiB3YXJuaW5nOiB1bnVzZWQgdmFsdWU6ICQ0Cmk1ODYtcGMt
bXNkb3NkamdwcC1hcjogY3JlYXRpbmcgLi8uLi8uLi9saWIvbGliYy5hCmk1ODYtcGMtbXNkb3Nk
amdwcC1hcjogY3JlYXRpbmcgLi8uLi8uLi9saWIvbGliZGJnLmEKZGVidWcuYzogSW4gZnVuY3Rp
b24gJ2RvX3doZXJlJzoKZGVidWcuYzoxODg6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBw
YXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3N5bXNfdmFsMm5hbWUnIGRpZmZlciBpbiBzaWduZWRuZXNz
Ci4uLy4uLy4uL2luY2x1ZGUvZGVidWcvc3ltcy5oOjQyOiBub3RlOiBleHBlY3RlZCAnbG9uZyB1
bnNpZ25lZCBpbnQgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2ludDMyIConCmRlYnVnLmM6
IEluIGZ1bmN0aW9uICdkZWJ1Z2dlcic6CmRlYnVnLmM6NDY0OiB3YXJuaW5nOiBwb2ludGVyIHRh
cmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyIG9mICdzeW1zX3ZhbDJuYW1lJyBkaWZmZXIgaW4g
c2lnbmVkbmVzcwouLi8uLi8uLi9pbmNsdWRlL2RlYnVnL3N5bXMuaDo0Mjogbm90ZTogZXhwZWN0
ZWQgJ2xvbmcgdW5zaWduZWQgaW50IConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdpbnQzMiAq
JwpkZWJ1Zy5jOjU4Njogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1l
bnQgMiBvZiAnc3ltc192YWwybmFtZScgZGlmZmVyIGluIHNpZ25lZG5lc3MKLi4vLi4vLi4vaW5j
bHVkZS9kZWJ1Zy9zeW1zLmg6NDI6IG5vdGU6IGV4cGVjdGVkICdsb25nIHVuc2lnbmVkIGludCAq
JyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnaW50MzIgKicKZGVidWcuYzo2MTY6IHdhcm5pbmc6
IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3N5bXNfdmFsMm5hbWUn
IGRpZmZlciBpbiBzaWduZWRuZXNzCi4uLy4uLy4uL2luY2x1ZGUvZGVidWcvc3ltcy5oOjQyOiBu
b3RlOiBleHBlY3RlZCAnbG9uZyB1bnNpZ25lZCBpbnQgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5
cGUgJ2ludDMyIConCnVuYXNzbWJsLmM6IEluIGZ1bmN0aW9uICdvaGV4JzoKdW5hc3NtYmwuYzo0
NjI6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3N5
bXNfdmFsMm5hbWUnIGRpZmZlciBpbiBzaWduZWRuZXNzCi4uLy4uLy4uL2luY2x1ZGUvZGVidWcv
c3ltcy5oOjQyOiBub3RlOiBleHBlY3RlZCAnbG9uZyB1bnNpZ25lZCBpbnQgKicgYnV0IGFyZ3Vt
ZW50IGlzIG9mIHR5cGUgJ2ludDMyIConCmZ1bGxzY3IuYzogSW4gZnVuY3Rpb24gJ3Nob3dfdHNz
JzoKZnVsbHNjci5jOjU4Nzogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJn
dW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6
IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFy
IConCmZ1bGxzY3IuYzo1ODg6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFy
Z3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3Rl
OiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hh
ciAqJwpmdWxsc2NyLmM6NTkwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBh
cmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90
ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2No
YXIgKicKZnVsbHNjci5jOjYwNTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3Npbmcg
YXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5v
dGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdj
aGFyIConCmZ1bGxzY3IuYzo2MTQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5n
IGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBu
b3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAn
Y2hhciAqJwpmdWxsc2NyLmM6NjIwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2lu
ZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzog
bm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg
J2NoYXIgKicKZnVsbHNjci5jOjYyMTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3Np
bmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6
IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBl
ICdjaGFyIConCmZ1bGxzY3IuYzo2MjQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNz
aW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3
OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlw
ZSAnY2hhciAqJwpmdWxsc2NyLmM6NjI1OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFz
c2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDoz
Nzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5
cGUgJ2NoYXIgKicKZnVsbHNjci5jOjYyODogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBh
c3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6
Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0
eXBlICdjaGFyIConCmZ1bGxzY3IuYzo2MzE6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBw
YXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5o
OjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2Yg
dHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6NjM0OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4g
cGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4u
aDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9m
IHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjYzNTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGlu
IHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVu
Lmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBv
ZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzo2NDk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBp
biBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVl
bi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMg
b2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6NjUwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMg
aW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3Jl
ZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlz
IG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOiBJbiBmdW5jdGlvbiAncmVkcmF3JzoKZnVsbHNj
ci5jOjEzODQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDMg
b2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6MzY6IG5vdGU6IGV4cGVjdGVk
ICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxz
Y3IuYzoxMzg1OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAz
IG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM2OiBub3RlOiBleHBlY3Rl
ZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxs
c2NyLmM6MTM4Njogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQg
MyBvZiAncHV0JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNjogbm90ZTogZXhwZWN0
ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVs
bHNjci5jOjEzODc6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50
IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6MzY6IG5vdGU6IGV4cGVj
dGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1
bGxzY3IuYzoxMzg4OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVu
dCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM2OiBub3RlOiBleHBl
Y3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpm
dWxsc2NyLmM6MTM4OTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1l
bnQgMyBvZiAncHV0JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNjogbm90ZTogZXhw
ZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicK
ZnVsbHNjci5jOjEzOTA6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3Vt
ZW50IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6MzY6IG5vdGU6IGV4
cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyICon
CmZ1bGxzY3IuYzoxMzkxOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1
bWVudCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM2OiBub3RlOiBl
eHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAq
JwpmdWxsc2NyLmM6MTQwODogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJn
dW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6
IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFy
IConCmZ1bGxzY3IuYzoxNDExOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBh
cmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90
ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2No
YXIgKicKZnVsbHNjci5jOjE0MjM6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5n
IGFyZ3VtZW50IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6MzY6IG5v
dGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdj
aGFyIConCmZ1bGxzY3IuYzoxNDI2OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2lu
ZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzog
bm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg
J2NoYXIgKicKZnVsbHNjci5jOjE0NTQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNz
aW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3
OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlw
ZSAnY2hhciAqJwpmdWxsc2NyLmM6MTQ2Njogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBh
c3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6
Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0
eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNDY5OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4g
cGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4u
aDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9m
IHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE0NzE6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBp
biBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVl
bi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMg
b2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTUwMzogd2FybmluZzogcG9pbnRlciB0YXJnZXRz
IGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2Ny
ZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBp
cyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNTQwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdl
dHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpz
Y3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50
IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE1NTY6IHdhcm5pbmc6IHBvaW50ZXIgdGFy
Z2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNz
CnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1l
bnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTU4MTogd2FybmluZzogcG9pbnRlciB0
YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5l
c3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1
bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNTkyOiB3YXJuaW5nOiBwb2ludGVy
IHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVk
bmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFy
Z3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE1OTk6IHdhcm5pbmc6IHBvaW50
ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWdu
ZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQg
YXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTY1NTogd2FybmluZzogcG9p
bnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNp
Z25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1
dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNjU4OiB3YXJuaW5nOiBw
b2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4g
c2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicg
YnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE3MDU6IHdhcm5pbmc6
IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBp
biBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAq
JyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTcxMzogd2Fybmlu
ZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVy
IGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFy
IConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNzMwOiB3YXJu
aW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZm
ZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNo
YXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE3NTc6IHdh
cm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRp
ZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQg
Y2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTc2MTog
d2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcg
ZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25l
ZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxNzY2
OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRs
JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2ln
bmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE3
Njk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1
dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5z
aWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6
MTc3MDogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAn
cHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1
bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3Iu
YzoxNzc4OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9m
ICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQg
J3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNj
ci5jOjE3ODQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQg
b2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3Rl
ZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxs
c2NyLmM6MTc4Nzogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQg
NCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVj
dGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1
bGxzY3IuYzoxNzkyOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVu
dCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhw
ZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicK
ZnVsbHNjci5jOjE4MDQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3Vt
ZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBl
eHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAq
JwpmdWxsc2NyLmM6MTgwNTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJn
dW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6
IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFy
IConCmZ1bGxzY3IuYzoxODI0OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBh
cmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90
ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2No
YXIgKicKZnVsbHNjci5jOjE4MzM6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5n
IGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBu
b3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAn
Y2hhciAqJwpmdWxsc2NyLmM6MTgzNjogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3Np
bmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6
IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBl
ICdjaGFyIConCmZ1bGxzY3IuYzoxODM4OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFz
c2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uaDoz
Nzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5
cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE4ODA6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBw
YXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5o
OjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2Yg
dHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTg4Nzogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGlu
IHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVu
Lmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBv
ZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxOTM1OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMg
aW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3Jl
ZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlz
IG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE5Mzk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0
cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNj
cmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQg
aXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTk1MDogd2FybmluZzogcG9pbnRlciB0YXJn
ZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MK
c2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVu
dCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxOTUyOiB3YXJuaW5nOiBwb2ludGVyIHRh
cmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2lnbmVkbmVz
cwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3Vt
ZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE5NjE6IHdhcm5pbmc6IHBvaW50ZXIg
dGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRu
ZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJn
dW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTk2Mzogd2FybmluZzogcG9pbnRl
ciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25l
ZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBh
cmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoxOTcxOiB3YXJuaW5nOiBwb2lu
dGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIgaW4gc2ln
bmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0
IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjE5OTI6IHdhcm5pbmc6IHBv
aW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBz
aWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBi
dXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MTk5NTogd2FybmluZzog
cG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGlu
IHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyICon
IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCmZ1bGxzY3IuYzoyMDA1OiB3YXJuaW5n
OiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCA0IG9mICdwdXRsJyBkaWZmZXIg
aW4gc2lnbmVkbmVzcwpzY3JlZW4uaDozNzogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIg
KicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKZnVsbHNjci5jOjIwMzU6IHdhcm5p
bmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZl
ciBpbiBzaWduZWRuZXNzCnNjcmVlbi5oOjM3OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hh
ciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpmdWxsc2NyLmM6MjAzOTogd2Fy
bmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlm
ZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmg6Mzc6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBj
aGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCnNjcmVlbi5jOiBJbiBmdW5j
dGlvbiAnZnJhbWUnOgpzY3JlZW4uYzo4OTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBh
c3NpbmcgYXJndW1lbnQgMyBvZiAncHV0JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uYzoy
ODogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5
cGUgJ2NoYXIgKicKc2NyZWVuLmM6OTA6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNz
aW5nIGFyZ3VtZW50IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmM6Mjg6
IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBl
ICdjaGFyIConCnNjcmVlbi5jOjkxOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2lu
ZyBhcmd1bWVudCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5jOjI4OiBu
b3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAn
Y2hhciAqJwpzY3JlZW4uYzo5Mjogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3Npbmcg
YXJndW1lbnQgMyBvZiAncHV0JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uYzoyODogbm90
ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2No
YXIgKicKc2NyZWVuLmM6IEluIGZ1bmN0aW9uICdtZXNzYWdlJzoKc2NyZWVuLmM6MjM3OiB3YXJu
aW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAzIG9mICdwdXQnIGRpZmZl
ciBpbiBzaWduZWRuZXNzCnNjcmVlbi5jOjI4OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hh
ciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnY2hhciAqJwpzY3JlZW4uYzogSW4gZnVuY3Rp
b24gJ3JlYWRfc3RyaW5nJzoKc2NyZWVuLmM6MjczOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMg
aW4gcGFzc2luZyBhcmd1bWVudCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVl
bi5jOjI4OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMg
b2YgdHlwZSAnY2hhciAqJwpzY3JlZW4uYzogSW4gZnVuY3Rpb24gJ21lbnUnOgpzY3JlZW4uYzo0
MzM6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDMgb2YgJ3B1
dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmM6Mjg6IG5vdGU6IGV4cGVjdGVkICd1bnNp
Z25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCnNjcmVlbi5jOjQ0
Mjogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgNCBvZiAncHV0
bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmM6NDE6IG5vdGU6IGV4cGVjdGVkICd1bnNp
Z25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjaGFyIConCnNjcmVlbi5jOjQ0
Mzogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMyBvZiAncHV0
JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4uYzoyODogbm90ZTogZXhwZWN0ZWQgJ3Vuc2ln
bmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ2NoYXIgKicKc2NyZWVuLmM6IElu
IGZ1bmN0aW9uICdlZGl0JzoKc2NyZWVuLmM6NTEwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMg
aW4gcGFzc2luZyBhcmd1bWVudCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVl
bi5jOjI4OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMg
b2YgdHlwZSAnY2hhciAqJwpzY3JlZW4uYzo1MTU6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBp
biBwYXNzaW5nIGFyZ3VtZW50IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVu
LmM6Mjg6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBv
ZiB0eXBlICdjaGFyIConCnNjcmVlbi5jOjUxNjogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGlu
IHBhc3NpbmcgYXJndW1lbnQgMyBvZiAncHV0JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwpzY3JlZW4u
YzoyODogbm90ZTogZXhwZWN0ZWQgJ3Vuc2lnbmVkIGNoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9m
IHR5cGUgJ2NoYXIgKicKc2NyZWVuLmM6NTI4OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4g
cGFzc2luZyBhcmd1bWVudCAzIG9mICdwdXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5j
OjI4OiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2Yg
dHlwZSAnY2hhciAqJwpzY3JlZW4uYzo1Mjk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBw
YXNzaW5nIGFyZ3VtZW50IDQgb2YgJ3B1dGwnIGRpZmZlciBpbiBzaWduZWRuZXNzCnNjcmVlbi5j
OjQxOiBub3RlOiBleHBlY3RlZCAndW5zaWduZWQgY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2Yg
dHlwZSAnY2hhciAqJwpzY3JlZW4uYzo1MzU6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBw
YXNzaW5nIGFyZ3VtZW50IDMgb2YgJ3B1dCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmM6
Mjg6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0
eXBlICdjaGFyIConCnNjcmVlbi5jOjUzOTogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBh
c3NpbmcgYXJndW1lbnQgNCBvZiAncHV0bCcgZGlmZmVyIGluIHNpZ25lZG5lc3MKc2NyZWVuLmM6
NDE6IG5vdGU6IGV4cGVjdGVkICd1bnNpZ25lZCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0
eXBlICdjaGFyIConCnVuYXNzbWJsLmM6IEluIGZ1bmN0aW9uICdvaGV4JzoKdW5hc3NtYmwuYzo0
ODM6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3N5
bXNfdmFsMm5hbWUnIGRpZmZlciBpbiBzaWduZWRuZXNzCi4uLy4uLy4uL2luY2x1ZGUvZGVidWcv
c3ltcy5oOjQyOiBub3RlOiBleHBlY3RlZCAnbG9uZyB1bnNpZ25lZCBpbnQgKicgYnV0IGFyZ3Vt
ZW50IGlzIG9mIHR5cGUgJ2ludDMyIConCmRqYXNtLnk6NzA1LjExLTcxMy4xNDogd2FybmluZzog
dW51c2VkIHZhbHVlOiAkNApkamFzbS55OiBJbiBmdW5jdGlvbiAnbWFpbic6CmRqYXNtLnk6MTQ2
MDogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMSBvZiAnc3By
aW50ZicgZGlmZmVyIGluIHNpZ25lZG5lc3MKLi8uLi8uLi9pbmNsdWRlL3N0ZGlvLmg6MTE1OiBu
b3RlOiBleHBlY3RlZCAnY2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAndW5zaWduZWQg
Y2hhciAqJwpkamFzbS55OjE0NjI6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5n
IGFyZ3VtZW50IDEgb2YgJ3N0cmxlbicgZGlmZmVyIGluIHNpZ25lZG5lc3MKLi8uLi8uLi9pbmNs
dWRlL3N0cmluZy5oOjQ0OiBub3RlOiBleHBlY3RlZCAnY29uc3QgY2hhciAqJyBidXQgYXJndW1l
bnQgaXMgb2YgdHlwZSAndW5zaWduZWQgY2hhciAqJwpkamFzbS55OjE0NjI6IHdhcm5pbmc6IHBv
aW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3N0cm5jYXQnIGRpZmZlciBp
biBzaWduZWRuZXNzCi4vLi4vLi4vaW5jbHVkZS9zdHJpbmcuaDo0NTogbm90ZTogZXhwZWN0ZWQg
J2NoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ3Vuc2lnbmVkIGNoYXIgKicKZGphc20u
eToxNDYzOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAxIG9m
ICdzdHJjYXQnIGRpZmZlciBpbiBzaWduZWRuZXNzCi4vLi4vLi4vaW5jbHVkZS9zdHJpbmcuaDoz
Nzogbm90ZTogZXhwZWN0ZWQgJ2NoYXIgKicgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUgJ3Vuc2ln
bmVkIGNoYXIgKicKaTU4Ni1wYy1tc2Rvc2RqZ3BwLWFyOiBjcmVhdGluZyAuLy4uLy4uL2xpYi9s
aWJlbXUuYQppNTg2LXBjLW1zZG9zZGpncHAtYXI6IGNyZWF0aW5nIC4vLi4vLi4vbGliL2xpYm0u
YQp3b3JkLmM6IEluIGZ1bmN0aW9uICd3JzoKd29yZC5jOjI5NTogd2FybmluZzogcG9pbnRlciB0
YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMSBvZiAnc3RybGVuJyBkaWZmZXIgaW4gc2lnbmVk
bmVzcwouLi8uLi8uLi9pbmNsdWRlL3N0cmluZy5oOjQ0OiBub3RlOiBleHBlY3RlZCAnY29uc3Qg
Y2hhciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAndW5zaWduZWQgY2hhciAqJwp3b3JkLmM6
Mjk2OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyIG9mICdz
dHJjcHknIGRpZmZlciBpbiBzaWduZWRuZXNzCi4uLy4uLy4uL2luY2x1ZGUvc3RyaW5nLmg6NDE6
IG5vdGU6IGV4cGVjdGVkICdjb25zdCBjaGFyIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICd1
bnNpZ25lZCBjaGFyIConCmxvY2FsdGltZS5jOiBJbiBmdW5jdGlvbiAndGltZTJzdWInOgpsb2Nh
bHRpbWUuYzoxMzU3OiB3YXJuaW5nOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qg
b2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZQpsb2Nh
bHRpbWUuYzoxMzY4OiB3YXJuaW5nOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qg
b2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZQpsb2Nh
bHRpbWUuYzoxMzc4OiB3YXJuaW5nOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qg
b2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZQpsb2Nh
bHRpbWUuYzoxMzgyOiB3YXJuaW5nOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qg
b2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYIC0gYykgPiBYIGlzIGFsd2F5cyBmYWxzZQpsb2Nh
bHRpbWUuYzoxMzkzOiB3YXJuaW5nOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qg
b2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYIC0gYykgPiBYIGlzIGFsd2F5cyBmYWxzZQpsb2Nh
bHRpbWUuYzogSW4gZnVuY3Rpb24gJ3RpbWUyc3ViJzoKbG9jYWx0aW1lLmM6MTM1Nzogd2Fybmlu
ZzogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcg
dGhhdCAoWCArIGMpIDwgWCBpcyBhbHdheXMgZmFsc2UKbG9jYWx0aW1lLmM6MTM2ODogd2Fybmlu
ZzogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcg
dGhhdCAoWCArIGMpIDwgWCBpcyBhbHdheXMgZmFsc2UKbG9jYWx0aW1lLmM6MTM3ODogd2Fybmlu
ZzogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcg
dGhhdCAoWCArIGMpIDwgWCBpcyBhbHdheXMgZmFsc2UKbG9jYWx0aW1lLmM6MTM4Mjogd2Fybmlu
ZzogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcg
dGhhdCAoWCAtIGMpID4gWCBpcyBhbHdheXMgZmFsc2UKbG9jYWx0aW1lLmM6MTM5Mzogd2Fybmlu
ZzogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcg
dGhhdCAoWCAtIGMpID4gWCBpcyBhbHdheXMgZmFsc2UKaTU4Ni1wYy1tc2Rvc2RqZ3BwLWFyOiBj
cmVhdGluZyBsb2d3dG1wbC5hCmk1ODYtcGMtbXNkb3NkamdwcC1hcjogY3JlYXRpbmcgLi4vLi4v
bGliL2xpYnR6LmEKaTU4Ni1wYy1tc2Rvc2RqZ3BwLWFyOiBjcmVhdGluZyAuLi9saWIvbGliZy5h
Cmk1ODYtcGMtbXNkb3NkamdwcC1hcjogY3JlYXRpbmcgLi4vbGliL2xpYnBjLmEK
--001636920a1afcdb4b04a93abd5c
Content-Type: application/octet-stream; name="64.patch"
Content-Disposition: attachment; filename="64.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gqpkv0iu0

SW5kZXg6IGluY2x1ZGUvY29mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpn
cHAvaW5jbHVkZS9jb2ZmLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC1wIC1y
MS4yIGNvZmYuaAotLS0gaW5jbHVkZS9jb2ZmLmgJNCBGZWIgMjAwMyAyMDoyMjo1NSAtMDAwMAkx
LjIKKysrIGluY2x1ZGUvY29mZi5oCTI5IEp1bCAyMDExIDE5OjQ1OjA1IC0wMDAwCkBAIC0zLDYg
KzMsOCBAQAogI2lmbmRlZiBfX2RqX2luY2x1ZGVfY29mZl9oXwogI2RlZmluZSBfX2RqX2luY2x1
ZGVfY29mZl9oXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTIzLDEzICsyNSwxMyBAQCBleHRlcm4gIkMiIHsKIC8q
KioqKioqKioqKioqKioqKioqKioqIEZJTEUgSEVBREVSICoqKioqKioqKioqKioqKioqKioqKiov
CiAKIHN0cnVjdCBleHRlcm5hbF9maWxlaGRyIHsKLQl1bnNpZ25lZCBzaG9ydCBmX21hZ2ljOwkJ
LyogbWFnaWMgbnVtYmVyCQkJKi8KLQl1bnNpZ25lZCBzaG9ydCBmX25zY25zOwkJLyogbnVtYmVy
IG9mIHNlY3Rpb25zCQkqLwotCXVuc2lnbmVkIGxvbmcgZl90aW1kYXQ7CS8qIHRpbWUgJiBkYXRl
IHN0YW1wCQkqLwotCXVuc2lnbmVkIGxvbmcgZl9zeW1wdHI7CS8qIGZpbGUgcG9pbnRlciB0byBz
eW10YWIJKi8KLQl1bnNpZ25lZCBsb25nIGZfbnN5bXM7CQkvKiBudW1iZXIgb2Ygc3ltdGFiIGVu
dHJpZXMJKi8KLQl1bnNpZ25lZCBzaG9ydCBmX29wdGhkcjsJLyogc2l6ZW9mKG9wdGlvbmFsIGhk
cikJCSovCi0JdW5zaWduZWQgc2hvcnQgZl9mbGFnczsJCS8qIGZsYWdzCQkJKi8KKwl1aW50MTZf
dCBmX21hZ2ljOwkvKiBtYWdpYyBudW1iZXIJCQkqLworCXVpbnQxNl90IGZfbnNjbnM7CS8qIG51
bWJlciBvZiBzZWN0aW9ucwkJKi8KKwl1aW50MzJfdCBmX3RpbWRhdDsJLyogdGltZSAmIGRhdGUg
c3RhbXAJCSovCisJdWludDMyX3QgZl9zeW1wdHI7CS8qIGZpbGUgcG9pbnRlciB0byBzeW10YWIJ
Ki8KKwl1aW50MzJfdCBmX25zeW1zOwkvKiBudW1iZXIgb2Ygc3ltdGFiIGVudHJpZXMJKi8KKwl1
aW50MTZfdCBmX29wdGhkcjsJLyogc2l6ZW9mKG9wdGlvbmFsIGhkcikJCSovCisJdWludDE2X3Qg
Zl9mbGFnczsJLyogZmxhZ3MJCQkqLwogfTsKIAogCkBAIC02MiwyNyArNjQsMjcgQEAgc3RydWN0
IGV4dGVybmFsX2ZpbGVoZHIgewogCiB0eXBlZGVmIHN0cnVjdCAKIHsKLSAgdW5zaWduZWQgc2hv
cnQgCW1hZ2ljOwkJLyogdHlwZSBvZiBmaWxlCQkJCSovCi0gIHVuc2lnbmVkIHNob3J0CXZzdGFt
cDsJCS8qIHZlcnNpb24gc3RhbXAJCQkqLwotICB1bnNpZ25lZCBsb25nCXRzaXplOwkJLyogdGV4
dCBzaXplIGluIGJ5dGVzLCBwYWRkZWQgdG8gRlcgYmRyeSovCi0gIHVuc2lnbmVkIGxvbmcJZHNp
emU7CQkvKiBpbml0aWFsaXplZCBkYXRhICIgICIJCSovCi0gIHVuc2lnbmVkIGxvbmcJYnNpemU7
CQkvKiB1bmluaXRpYWxpemVkIGRhdGEgIiAgICIJCSovCi0gIHVuc2lnbmVkIGxvbmcJZW50cnk7
CQkvKiBlbnRyeSBwdC4JCQkJKi8KLSAgdW5zaWduZWQgbG9uZyAJdGV4dF9zdGFydDsJLyogYmFz
ZSBvZiB0ZXh0IHVzZWQgZm9yIHRoaXMgZmlsZSAqLwotICB1bnNpZ25lZCBsb25nIAlkYXRhX3N0
YXJ0OwkvKiBiYXNlIG9mIGRhdGEgdXNlZCBmb3IgdGhpcyBmaWxlICovCisgIHVpbnQxNl90IAlt
YWdpYzsJCS8qIHR5cGUgb2YgZmlsZQkJCQkqLworICB1aW50MTZfdAl2c3RhbXA7CQkvKiB2ZXJz
aW9uIHN0YW1wCQkJKi8KKyAgdWludDMyX3QJdHNpemU7CQkvKiB0ZXh0IHNpemUgaW4gYnl0ZXMs
IHBhZGRlZCB0byBGVyBiZHJ5Ki8KKyAgdWludDMyX3QJZHNpemU7CQkvKiBpbml0aWFsaXplZCBk
YXRhICIgICIJCSovCisgIHVpbnQzMl90CWJzaXplOwkJLyogdW5pbml0aWFsaXplZCBkYXRhICIg
ICAiCQkqLworICB1aW50MzJfdAllbnRyeTsJCS8qIGVudHJ5IHB0LgkJCQkqLworICB1aW50MzJf
dAl0ZXh0X3N0YXJ0OwkvKiBiYXNlIG9mIHRleHQgdXNlZCBmb3IgdGhpcyBmaWxlICovCisgIHVp
bnQzMl90CWRhdGFfc3RhcnQ7CS8qIGJhc2Ugb2YgZGF0YSB1c2VkIGZvciB0aGlzIGZpbGUgKi8K
IH0KIEFPVVRIRFI7CiAKIAogdHlwZWRlZiBzdHJ1Y3QgZ251X2FvdXQgewotCXVuc2lnbmVkIGxv
bmcgaW5mbzsKLQl1bnNpZ25lZCBsb25nIHRzaXplOwotCXVuc2lnbmVkIGxvbmcgZHNpemU7Ci0J
dW5zaWduZWQgbG9uZyBic2l6ZTsKLQl1bnNpZ25lZCBsb25nIHN5bXNpemU7Ci0JdW5zaWduZWQg
bG9uZyBlbnRyeTsKLQl1bnNpZ25lZCBsb25nIHR4cmVsOwotCXVuc2lnbmVkIGxvbmcgZHRyZWw7
CisJdWludDMyX3QgaW5mbzsKKwl1aW50MzJfdCB0c2l6ZTsKKwl1aW50MzJfdCBkc2l6ZTsKKwl1
aW50MzJfdCBic2l6ZTsKKwl1aW50MzJfdCBzeW1zaXplOworCXVpbnQzMl90IGVudHJ5OworCXVp
bnQzMl90IHR4cmVsOworCXVpbnQzMl90IGR0cmVsOwogCX0gR05VX0FPVVQ7CiAKICNkZWZpbmUg
QU9VVFNaIChzaXplb2YoQU9VVEhEUikpCkBAIC05OCwxNSArMTAwLDE1IEBAIHR5cGVkZWYgc3Ry
dWN0IGdudV9hb3V0IHsKIAogc3RydWN0IGV4dGVybmFsX3NjbmhkciB7CiAJY2hhcgkJc19uYW1l
WzhdOwkvKiBzZWN0aW9uIG5hbWUJCQkqLwotCXVuc2lnbmVkIGxvbmcJCXNfcGFkZHI7CS8qIHBo
eXNpY2FsIGFkZHJlc3MsIGFsaWFzZWQgc19ubGliICovCi0JdW5zaWduZWQgbG9uZwkJc192YWRk
cjsJLyogdmlydHVhbCBhZGRyZXNzCQkqLwotCXVuc2lnbmVkIGxvbmcJCXNfc2l6ZTsJCS8qIHNl
Y3Rpb24gc2l6ZQkJCSovCi0JdW5zaWduZWQgbG9uZwkJc19zY25wdHI7CS8qIGZpbGUgcHRyIHRv
IHJhdyBkYXRhIGZvciBzZWN0aW9uICovCi0JdW5zaWduZWQgbG9uZwkJc19yZWxwdHI7CS8qIGZp
bGUgcHRyIHRvIHJlbG9jYXRpb24JKi8KLQl1bnNpZ25lZCBsb25nCQlzX2xubm9wdHI7CS8qIGZp
bGUgcHRyIHRvIGxpbmUgbnVtYmVycwkqLwotCXVuc2lnbmVkIHNob3J0CQlzX25yZWxvYzsJLyog
bnVtYmVyIG9mIHJlbG9jYXRpb24gZW50cmllcwkqLwotCXVuc2lnbmVkIHNob3J0CQlzX25sbm5v
OwkvKiBudW1iZXIgb2YgbGluZSBudW1iZXIgZW50cmllcyovCi0JdW5zaWduZWQgbG9uZwkJc19m
bGFnczsJLyogZmxhZ3MJCQkqLworCXVpbnQzMl90CXNfcGFkZHI7CS8qIHBoeXNpY2FsIGFkZHJl
c3MsIGFsaWFzZWQgc19ubGliICovCisJdWludDMyX3QJc192YWRkcjsJLyogdmlydHVhbCBhZGRy
ZXNzCQkqLworCXVpbnQzMl90CXNfc2l6ZTsJCS8qIHNlY3Rpb24gc2l6ZQkJCSovCisJdWludDMy
X3QJc19zY25wdHI7CS8qIGZpbGUgcHRyIHRvIHJhdyBkYXRhIGZvciBzZWN0aW9uICovCisJdWlu
dDMyX3QJc19yZWxwdHI7CS8qIGZpbGUgcHRyIHRvIHJlbG9jYXRpb24JKi8KKwl1aW50MzJfdAlz
X2xubm9wdHI7CS8qIGZpbGUgcHRyIHRvIGxpbmUgbnVtYmVycwkqLworCXVpbnQxNl90CXNfbnJl
bG9jOwkvKiBudW1iZXIgb2YgcmVsb2NhdGlvbiBlbnRyaWVzCSovCisJdWludDE2X3QJc19ubG5u
bzsJLyogbnVtYmVyIG9mIGxpbmUgbnVtYmVyIGVudHJpZXMqLworCXVpbnQzMl90CXNfZmxhZ3M7
CS8qIGZsYWdzCQkJKi8KIH07CiAKICNkZWZpbmUJU0NOSERSCXN0cnVjdCBleHRlcm5hbF9zY25o
ZHIKQEAgLTEzNywxMSArMTM5LDExIEBAIHN0cnVjdCBleHRlcm5hbF9zY25oZHIgewogICovCiBz
dHJ1Y3QgZXh0ZXJuYWxfbGluZW5vIHsKIAl1bmlvbiB7Ci0JCXVuc2lnbmVkIGxvbmcgbF9zeW1u
ZHggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CS8qIGZ1bmN0aW9uIG5hbWUgc3ltYm9sIGluZGV4
LCBpZmYgbF9sbm5vID09IDAgKi8KLQkJdW5zaWduZWQgbG9uZyBsX3BhZGRyIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwkJLyogKHBoeXNpY2FsKSBhZGRyZXNzIG9mIGxpbmUgbnVtYmVyICovCisJ
CXVpbnQzMl90IGxfc3ltbmR4OwkvKiBmdW5jdGlvbiBuYW1lIHN5bWJvbCBpbmRleCwgaWZmIGxf
bG5ubyA9PSAwICovCisJCXVpbnQzMl90IGxfcGFkZHI7CS8qIChwaHlzaWNhbCkgYWRkcmVzcyBv
ZiBsaW5lIG51bWJlciAqLwogCX0gbF9hZGRyOwotCXVuc2lnbmVkIHNob3J0IGxfbG5ubzsJCQkJ
CQkvKiBsaW5lIG51bWJlciAqLwotfTsKKwl1aW50MTZfdCBsX2xubm87CQkvKiBsaW5lIG51bWJl
ciAqLworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAogCiAjZGVmaW5lCUxJTkVOTwlzdHJ1
Y3QgZXh0ZXJuYWxfbGluZW5vCkBAIC0xNTQsMjEgKzE1NiwyMSBAQCBzdHJ1Y3QgZXh0ZXJuYWxf
bGluZW5vIHsKICNkZWZpbmUgRV9GSUxOTUxFTgkxNAkvKiAjIGNoYXJhY3RlcnMgaW4gYSBmaWxl
IG5hbWUJCSovCiAjZGVmaW5lIEVfRElNTlVNCTQJLyogIyBhcnJheSBkaW1lbnNpb25zIGluIGF1
eGlsaWFyeSBlbnRyeSAqLwogCi1zdHJ1Y3QgZXh0ZXJuYWxfc3ltZW50IAorc3RydWN0IGV4dGVy
bmFsX3N5bWVudAogewogICB1bmlvbiB7CiAgICAgY2hhciBlX25hbWVbRV9TWU1OTUxFTl07CiAg
ICAgc3RydWN0IHsKLSAgICAgIHVuc2lnbmVkIGxvbmcgZV96ZXJvZXMgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7Ci0gICAgICB1bnNpZ25lZCBsb25nIGVfb2Zmc2V0IF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOworICAgICAgdWludDMyX3QgZV96ZXJvZXM7CisgICAgICB1aW50MzJfdCBlX29mZnNl
dDsKICAgICB9IGU7CiAgIH0gZTsKLSAgdW5zaWduZWQgbG9uZyBlX3ZhbHVlIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwotICBzaG9ydCBlX3NjbnVtOwotICB1bnNpZ25lZCBzaG9ydCBlX3R5cGU7
Ci0gIHVuc2lnbmVkIGNoYXIgZV9zY2xhc3M7Ci0gIHVuc2lnbmVkIGNoYXIgZV9udW1hdXg7Ci19
OworICB1aW50MzJfdCBlX3ZhbHVlOworICBpbnQxNl90ICBlX3NjbnVtOworICB1aW50MTZfdCBl
X3R5cGU7CisgIHVpbnQ4X3QgIGVfc2NsYXNzOworICB1aW50OF90ICBlX251bWF1eDsKK30gX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUgTl9CVE1BU0sJKDB4ZikKICNkZWZpbmUg
Tl9UTUFTSwkJKDB4MzApCkBAIC0xNzcsNDggKzE3OSw0NyBAQCBzdHJ1Y3QgZXh0ZXJuYWxfc3lt
ZW50IAogICAKIHVuaW9uIGV4dGVybmFsX2F1eGVudCB7CiAJc3RydWN0IHsKLQkJdW5zaWduZWQg
bG9uZyB4X3RhZ25keCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsJCS8qIHN0ciwgdW4sIG9yIGVu
dW0gdGFnIGluZHggKi8KKwkJdWludDMyX3QgeF90YWduZHg7CQkvKiBzdHIsIHVuLCBvciBlbnVt
IHRhZyBpbmR4ICovCiAJCXVuaW9uIHsKIAkJCXN0cnVjdCB7Ci0JCQkgICAgdW5zaWduZWQgc2hv
cnQgIHhfbG5ubzsJCQkJLyogZGVjbGFyYXRpb24gbGluZSBudW1iZXIgKi8KLQkJCSAgICB1bnNp
Z25lZCBzaG9ydCAgeF9zaXplOyAJCQkJLyogc3RyL3VuaW9uL2FycmF5IHNpemUgKi8KKwkJCSAg
ICB1aW50MTZfdCAgeF9sbm5vOwkJCQkvKiBkZWNsYXJhdGlvbiBsaW5lIG51bWJlciAqLworCQkJ
ICAgIHVpbnQxNl90ICB4X3NpemU7CQkJCS8qIHN0ci91bmlvbi9hcnJheSBzaXplICovCiAJCQl9
IHhfbG5zejsKLQkJCXVuc2lnbmVkIGxvbmcgeF9mc2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsJCS8qIHNpemUgb2YgZnVuY3Rpb24gKi8KKwkJCXVpbnQzMl90IHhfZnNpemU7CQkJCS8qIHNp
emUgb2YgZnVuY3Rpb24gKi8KIAkJfSB4X21pc2M7CiAJCXVuaW9uIHsKIAkJCXN0cnVjdCB7CQkJ
CQkvKiBpZiBJU0ZDTiwgdGFnLCBvciAuYmIgKi8KLQkJCSAgICB1bnNpZ25lZCBsb25nIHhfbG5u
b3B0ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsJLyogcHRyIHRvIGZjbiBsaW5lICMgKi8KLQkJ
CSAgICB1bnNpZ25lZCBsb25nIHhfZW5kbmR4IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwkvKiBl
bnRyeSBuZHggcGFzdCBibG9jayBlbmQgKi8KKwkJCSAgICB1aW50MzJfdCB4X2xubm9wdHI7CQkJ
CS8qIHB0ciB0byBmY24gbGluZSAjICovCisJCQkgICAgdWludDMyX3QgeF9lbmRuZHg7CQkJCS8q
IGVudHJ5IG5keCBwYXN0IGJsb2NrIGVuZCAqLwogCQkJfSB4X2ZjbjsKIAkJCXN0cnVjdCB7CQkJ
CQkvKiBpZiBJU0FSWSwgdXAgdG8gNCBkaW1lbi4gKi8KLQkJCSAgICB1bnNpZ25lZCBzaG9ydCB4
X2RpbWVuW0VfRElNTlVNXTsKKwkJCSAgICB1aW50MTZfdCB4X2RpbWVuW0VfRElNTlVNXTsKIAkJ
CX0geF9hcnk7CiAJCX0geF9mY25hcnk7Ci0JCXVuc2lnbmVkIHNob3J0IHhfdHZuZHg7CQkJCQkJ
LyogdHYgaW5kZXggKi8KKwkJdWludDE2X3QgeF90dm5keDsJCQkJCS8qIHR2IGluZGV4ICovCiAJ
fSB4X3N5bTsKIAogCXVuaW9uIHsKIAkJY2hhciB4X2ZuYW1lW0VfRklMTk1MRU5dOwogCQlzdHJ1
Y3QgewotCQkJdW5zaWduZWQgbG9uZyB4X3plcm9lcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
LQkJCXVuc2lnbmVkIGxvbmcgeF9vZmZzZXQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisJCQl1
aW50MzJfdCB4X3plcm9lczsKKwkJCXVpbnQzMl90IHhfb2Zmc2V0OwogCQl9IHhfbjsKIAl9IHhf
ZmlsZTsKIAogCXN0cnVjdCB7Ci0JCXVuc2lnbmVkIGxvbmcgeF9zY25sZW4gX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CQkvKiBzZWN0aW9uIGxlbmd0aCAqLwotCQl1bnNpZ25lZCBzaG9ydCB4X25y
ZWxvYzsJCQkJCS8qICMgcmVsb2NhdGlvbiBlbnRyaWVzICovCi0JCXVuc2lnbmVkIHNob3J0IHhf
bmxpbm5vOwkJCQkJLyogIyBsaW5lIG51bWJlcnMgKi8KKwkJdWludDMyX3QgeF9zY25sZW47CQkJ
CQkvKiBzZWN0aW9uIGxlbmd0aCAqLworCQl1aW50MTZfdCB4X25yZWxvYzsJCQkJCS8qICMgcmVs
b2NhdGlvbiBlbnRyaWVzICovCisJCXVpbnQxNl90IHhfbmxpbm5vOwkJCQkJLyogIyBsaW5lIG51
bWJlcnMgKi8KIAl9IHhfc2NuOwogCi0gICAgICAgIHN0cnVjdCB7Ci0JCXVuc2lnbmVkIGxvbmcg
eF90dmZpbGwgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CQkvKiB0diBmaWxsIHZhbHVlICovCi0J
CXVuc2lnbmVkIHNob3J0IHhfdHZsZW47CQkJCQkJLyogbGVuZ3RoIG9mIC50diAqLwotCQl1bnNp
Z25lZCBzaG9ydCB4X3R2cmFuWzJdOwkJCQkJLyogdHYgcmFuZ2UgKi8KKwlzdHJ1Y3QgeworCQl1
aW50MzJfdCB4X3R2ZmlsbDsJCQkJLyogdHYgZmlsbCB2YWx1ZSAqLworCQl1aW50MTZfdCB4X3R2
bGVuOwkJCQkvKiBsZW5ndGggb2YgLnR2ICovCisJCXVpbnQxNl90IHhfdHZyYW5bMl07CQkJCS8q
IHR2IHJhbmdlICovCiAJfSB4X3R2OwkJLyogaW5mbyBhYm91dCAudHYgc2VjdGlvbiAoaW4gYXV4
ZW50IG9mIHN5bWJvbCAudHYpKSAqLwogCi0KLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogCiAjZGVmaW5lCVNZTUVOVAlzdHJ1Y3QgZXh0ZXJuYWxfc3ltZW50CiAjZGVmaW5lCVNZTUVT
WglzaXplb2YoU1lNRU5UKQpAQCAtMzEzLDEwICszMTQsMTAgQEAgdW5pb24gZXh0ZXJuYWxfYXV4
ZW50IHsKIAogCiBzdHJ1Y3QgZXh0ZXJuYWxfcmVsb2MgewotICB1bnNpZ25lZCBsb25nIHJfdmFk
ZHIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Ci0gIHVuc2lnbmVkIGxvbmcgcl9zeW1uZHggX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7Ci0gIHVuc2lnbmVkIHNob3J0IHJfdHlwZTsKLX07CisgIHVp
bnQzMl90IHJfdmFkZHI7CisgIHVpbnQzMl90IHJfc3ltbmR4OworICB1aW50MTZfdCByX3R5cGU7
Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAKICNkZWZpbmUgUkVMT0Mgc3RydWN0IGV4
dGVybmFsX3JlbG9jCkluZGV4OiBpbmNsdWRlL3N5cy9keGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL2RqZ3BwL2RqZ3BwL2luY2x1ZGUvc3lzL2R4ZS5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjYKZGlmZiAtdSAtcCAtcjEuNiBkeGUuaAotLS0gaW5jbHVkZS9zeXMvZHhlLmgJOSBBcHIg
MjAwOSAxODoyNjo0NiAtMDAwMAkxLjYKKysrIGluY2x1ZGUvc3lzL2R4ZS5oCTI5IEp1bCAyMDEx
IDE5OjQ1OjA2IC0wMDAwCkBAIC05LDExICs5LDEzIEBACiAjaWZuZGVmIF9fZGpfaW5jbHVkZV9k
eGVfaF8KICNkZWZpbmUgX19kal9pbmNsdWRlX2R4ZV9oXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisKIHR5cGVkZWYgc3RydWN0IHsKLSAgbG9uZyBtYWdpYzsKLSAgbG9uZyBzeW1ib2xfb2Zmc2V0
OwotICBsb25nIGVsZW1lbnRfc2l6ZTsKLSAgbG9uZyBucmVsb2NzOworICBpbnQzMl90IG1hZ2lj
OworICBpbnQzMl90IHN5bWJvbF9vZmZzZXQ7CisgIGludDMyX3QgZWxlbWVudF9zaXplOworICBp
bnQzMl90IG5yZWxvY3M7CiB9IGR4ZV9oZWFkZXI7CiAKICNkZWZpbmUgRFhFX01BR0lDIDB4MzE0
NTU4NDQKQEAgLTgwLDM4ICs4MiwzOCBAQCB2b2lkICpfZHhlX2xvYWQgKGNoYXIgKmZpbGVuYW1l
KTsKIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgLyogRFhFMSBoZWFkZXIgKi8KIAotICAgICAg
ICBsb25nIG1hZ2ljOwotICAgICAgICBsb25nIHN5bWJvbF9vZmZzZXQ7Ci0gICAgICAgIGxvbmcg
ZWxlbWVudF9zaXplOwotICAgICAgICBsb25nIG5yZWxvY3M7CisgICAgICAgIGludDMyX3QgbWFn
aWM7CisgICAgICAgIGludDMyX3Qgc3ltYm9sX29mZnNldDsKKyAgICAgICAgaW50MzJfdCBlbGVt
ZW50X3NpemU7CisgICAgICAgIGludDMyX3QgbnJlbG9jczsKIAogICAgICAgICAvKiBleHRlbmRl
ZCBoZWFkZXIgKi8KIAotICAgICAgICBsb25nIGhkcl9zaXplOwkJLyogSGVhZGVyIHNpemUgaW4g
Ynl0ZXMgKi8KKyAgICAgICAgaW50MzJfdCBoZHJfc2l6ZTsJLyogSGVhZGVyIHNpemUgaW4gYnl0
ZXMgKi8KIAotICAgICAgICBjaGFyIG1ham9yOwotICAgICAgICBjaGFyIG1pbm9yOwotICAgICAg
ICBzaG9ydCBmbGFnczsJCS8qIENhcGFiaWxpdGllcyAqLworICAgICAgICBpbnQ4X3QgbWFqb3I7
CisgICAgICAgIGludDhfdCBtaW5vcjsKKyAgICAgICAgaW50MTZfdCBmbGFnczsJCS8qIENhcGFi
aWxpdGllcyAqLwogCi0gICAgICAgIGxvbmcgcmVsb2NfdGFibGU7CS8qIEZpbGUgb2Zmc2V0IHRv
IHJlbG9jYXRpb24gdGFibGUgKi8KKyAgICAgICAgaW50MzJfdCByZWxvY190YWJsZTsJLyogRmls
ZSBvZmZzZXQgdG8gcmVsb2NhdGlvbiB0YWJsZSAqLwogCi0gICAgICAgIGxvbmcgbl9leHBfc3lt
czsJLyogTnVtYmVyIG9mIGV4cG9ydGVkIHN5bWJvbHMgKi8KLSAgICAgICAgbG9uZyBleHBfdGFi
bGU7CQkvKiBGaWxlIG9mZnNldCB0byBleHBvcnRlZCBzeW1ib2xzIHRhYmxlICovCi0gICAgICAg
IGxvbmcgZXhwX3NpemU7CisgICAgICAgIGludDMyX3Qgbl9leHBfc3ltczsJLyogTnVtYmVyIG9m
IGV4cG9ydGVkIHN5bWJvbHMgKi8KKyAgICAgICAgaW50MzJfdCBleHBfdGFibGU7CS8qIEZpbGUg
b2Zmc2V0IHRvIGV4cG9ydGVkIHN5bWJvbHMgdGFibGUgKi8KKyAgICAgICAgaW50MzJfdCBleHBf
c2l6ZTsKIAotICAgICAgICBsb25nIG5fZGVwczsJCS8qIE51bWJlciBvZiBkZXBlbmRlbmNpZXMg
Ki8KLSAgICAgICAgbG9uZyBkZXBfdGFibGU7CQkvKiBGaWxlIG9mZnNldCB0byBkZXBlbmRlbmN5
IHRhYmxlICovCi0gICAgICAgIGxvbmcgZGVwX3NpemU7CisgICAgICAgIGludDMyX3Qgbl9kZXBz
OwkJLyogTnVtYmVyIG9mIGRlcGVuZGVuY2llcyAqLworICAgICAgICBpbnQzMl90IGRlcF90YWJs
ZTsJLyogRmlsZSBvZmZzZXQgdG8gZGVwZW5kZW5jeSB0YWJsZSAqLworICAgICAgICBpbnQzMl90
IGRlcF9zaXplOwogCi0gICAgICAgIGxvbmcgbl91bnJlc19zeW1zOwkvKiBOdW1iZXIgb2YgdW5y
ZXNvbHZlZCBzeW1ib2xzICovCi0gICAgICAgIGxvbmcgdW5yZXNfdGFibGU7CS8qIEZpbGUgb2Zm
c2V0IHRvIHVucmVzb2x2ZWQgdGFibGUgKi8KLSAgICAgICAgbG9uZyB1bnJlc19zaXplOworICAg
ICAgICBpbnQzMl90IG5fdW5yZXNfc3ltczsJLyogTnVtYmVyIG9mIHVucmVzb2x2ZWQgc3ltYm9s
cyAqLworICAgICAgICBpbnQzMl90IHVucmVzX3RhYmxlOwkvKiBGaWxlIG9mZnNldCB0byB1bnJl
c29sdmVkIHRhYmxlICovCisgICAgICAgIGludDMyX3QgdW5yZXNfc2l6ZTsKIAotICAgICAgICBs
b25nIHNlY19zaXplOwkJLyogU2l6ZSBvZiBjb21iaW5lZCBjb2RlK2RhdGErYnNzIHNlY3Rpb24g
Ki8KLSAgICAgICAgbG9uZyBzZWNfZl9zaXplOwkvKiBQaHlzaWNhbCBzZWN0aW9uIHNpemUgKHRo
ZSByZXN0IGlzIHplcm9lZCkgKi8KKyAgICAgICAgaW50MzJfdCBzZWNfc2l6ZTsJLyogU2l6ZSBv
ZiBjb21iaW5lZCBjb2RlK2RhdGErYnNzIHNlY3Rpb24gKi8KKyAgICAgICAgaW50MzJfdCBzZWNf
Zl9zaXplOwkvKiBQaHlzaWNhbCBzZWN0aW9uIHNpemUgKHRoZSByZXN0IGlzIHplcm9lZCkgKi8K
IAotICAgICAgICBsb25nIF9pbml0OwotICAgICAgICBsb25nIF9maW5pOworICAgICAgICBpbnQz
Ml90IF9pbml0OworICAgICAgICBpbnQzMl90IF9maW5pOwogfSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKSBkeGUzX2hlYWRlcjsKIAogdHlwZWRlZiBzdHJ1Y3QKSW5kZXg6IHNyYy9kamFzbS9kamFz
bS55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL2RqYXNtL2RqYXNt
LnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC11IC1wIC1yMS44IGRqYXNtLnkKLS0t
IHNyYy9kamFzbS9kamFzbS55CTI5IEF1ZyAyMDA4IDA4OjMzOjQ1IC0wMDAwCTEuOAorKysgc3Jj
L2RqYXNtL2RqYXNtLnkJMjkgSnVsIDIwMTEgMTk6NDU6MDcgLTAwMDAKQEAgLTYsNyArNiw4IEBA
CiAlewogCiAjZGVmaW5lIFlZREVCVUcgMQotICAKKworI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+
CkBAIC0xNzEsNyArMTcyLDcgQEAgaW50IHl5bGV4MSh2b2lkKTsKIHZvaWQgZW1pdCh2b2lkICp2
LCBpbnQgbGVuKTsKIHZvaWQgZW1pdGIoaW50IGIpOwogdm9pZCBlbWl0dyhpbnQgdyk7Ci12b2lk
IGVtaXRkKGxvbmcgZCk7Cit2b2lkIGVtaXRkKGludDMyX3QgZCk7CiB2b2lkIGVtaXRzKFN5bWJv
bCAqcywgaW50IG9mZnNldCwgaW50IHJlbCk7CiB2b2lkIG1vZHJtKGludCBtb2QsIGludCByZWcs
IGludCBybSk7CiB2b2lkIHJlZyhpbnQgcmVnKTsKQEAgLTE5MDEsNyArMTkwMiw3IEBAIFN5bWJv
bCAqc2V0X3N5bWJvbChTeW1ib2wgKnMsIGludCB2YWx1ZSkKICAgICBzd2l0Y2ggKHAtPnJlbCkK
ICAgICB7CiAgICAgY2FzZSBSRUxfYWJzMzI6Ci0gICAgICBvID0gKHNpZ25lZCBsb25nKShjcFsw
XSB8IChjcFsxXSA8PCA4KSB8IChjcFsyXSA8PCAxNikgfCAoY3BbM10gPDwgMjQpKTsKKyAgICAg
IG8gPSAoaW50MzJfdCkoY3BbMF0gfCAoY3BbMV0gPDwgOCkgfCAoY3BbMl0gPDwgMTYpIHwgKGNw
WzNdIDw8IDI0KSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFTF9hYnM6CiAgICAgY2FzZSBS
RUxfMTY6CkBAIC0yMDQ1LDcgKzIwNDYsNyBAQCB2b2lkIGVtaXR3KGludCB3KQogICBlbWl0Yih3
Pj44KTsKIH0KIAotdm9pZCBlbWl0ZChsb25nIGQpCit2b2lkIGVtaXRkKGludDMyX3QgZCkKIHsK
ICAgZW1pdHcoZCk7CiAgIGVtaXR3KGQ+PjE2KTsKSW5kZXg6IHNyYy9keGUvZHhlM2dlbi5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL2R4ZS9keGUzZ2VuLmMsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1wIC1yMS43IGR4ZTNnZW4uYwotLS0gc3Jj
L2R4ZS9keGUzZ2VuLmMJNCBOb3YgMjAwMyAxNzo0MTo0NiAtMDAwMAkxLjcKKysrIHNyYy9keGUv
ZHhlM2dlbi5jCTI5IEp1bCAyMDExIDE5OjQ1OjA4IC0wMDAwCkBAIC0zNyw3ICszNyw3IEBACiAj
ZGVmaW5lIFRFTVBfT19GSUxFCVRFTVBfQkFTRSIubyIKICNkZWZpbmUgVEVNUF9TX0ZJTEUJVEVN
UF9CQVNFIi5zIgogCi0jZGVmaW5lIFZBTElEX1JFTE9DKHIpICgoci5yX3R5cGUgIT0gUkVMT0Nf
UkVMMzIpICYmIChyLnJfc3ltbmR4ICE9IC0xVUwpKQorI2RlZmluZSBWQUxJRF9SRUxPQyhyKSAo
KHIucl90eXBlICE9IFJFTE9DX1JFTDMyKSAmJiAoci5yX3N5bW5keCAhPSAweEZGRkZGRkZGKSkK
IAogdHlwZWRlZiBlbnVtIHsKICAgICAgICAgRkFMU0UgPSAwLApAQCAtMzk0LDcgKzM5NCw3IEBA
IHN0YXRpYyBGSUxFICpydW5fbGQgKGNvbnN0IGNoYXIgKmFyZ3ZbXSwKIAogIGlmICghb3B0Lmxl
Z2FjeSkgewogICAgIHVuc2lnbmVkIGk7Ci0gICAgc2l6ZV90IHN0c3o7CisgICAgdWludDMyX3Qg
c3RzejsvKnNpemVfdCovCiAgICAgU1lNRU5UICpzeW07CiAgICAgY2hhciAqc3RyaW5nczsKICAg
ICBsb25nIGZyYW1lX2JlZ2luID0gLTEsIGZyYW1lX2VuZCA9IC0xOwpAQCAtNTEyLDcgKzUxMiw3
IEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChGSUxFICppbmYsIEZJTEUgKm8KICB1bnNpZ25lZCBp
bnQgc3RhcnRic3M7CiAgY2hhciAqZGF0YTsKICBTWU1FTlQgKnN5bTsKLSBzaXplX3Qgc3RzejsK
KyB1aW50MzJfdCBzdHN6Oy8qc2l6ZV90Ki8KICBjaGFyICpzdHJpbmdzOwogIFJFTE9DICpyZWxv
Y3M7CiAgdW5zaWduZWQgaSwgaiwgZXJyY291bnQ7CkBAIC02MTEsOCArNjExLDggQEAgc3RhdGlj
IGludCB3cml0ZV9keGUgKEZJTEUgKmluZiwgRklMRSAqbwogI2VuZGlmCiAKICAgICAgaWYgKHN5
bVtpXS5lX3NjbnVtID09IDApIHsKLSAgICAgICAgc2hvcnQgKmNvdW50OwotICAgICAgICBsb25n
ICpyZWxfcmVsb2NzLCAqYWJzX3JlbG9jczsKKyAgICAgICAgaW50MTZfdCAqY291bnQ7CisgICAg
ICAgIGludDMyX3QgKnJlbF9yZWxvY3MsICphYnNfcmVsb2NzOwogICAgICAgICBpbnQgbl9hYnNf
cmVsb2NzID0gMCwgbl9yZWxfcmVsb2NzID0gMDsKIAogICAgICAgICAvKiB1bnJlc29sdmVkIHN5
bWJvbCAqLwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChGSUxFICpp
bmYsIEZJTEUgKm8KICAgICAgICAgICAgZXhpdCgtNCk7CiAgICAgICAgIH0KIAotICAgICAgICBu
ZXdzaXplID0gdW5yZXNfc2l6ZSArIDIgKiBzaXplb2Yoc2hvcnQpICsgbmFtZWxlbiArIChuX3Jl
bF9yZWxvY3MgKyBuX2Fic19yZWxvY3MpICogc2l6ZW9mKGxvbmcpOworICAgICAgICBuZXdzaXpl
ID0gdW5yZXNfc2l6ZSArIDIgKiBzaXplb2YoaW50MTZfdCkgKyBuYW1lbGVuICsgKG5fcmVsX3Jl
bG9jcyArIG5fYWJzX3JlbG9jcykgKiBzaXplb2YoaW50MzJfdCk7CiAgICAgICAgIGlmIChuZXdz
aXplID4gdW5yZXNfbWF4c2l6ZSkgewogICAgICAgICAgICBpbnQgYWRkbGVuPW5ld3NpemUgLSB1
bnJlc19tYXhzaXplICsgMzE3OwogICAgICAgICAgICBpZiAoISgoYWRkbGVuK3VucmVzX21heHNp
emUpICYgMSkpIHsKQEAgLTY2MCwyMiArNjYwLDIyIEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChG
SUxFICppbmYsIEZJTEUgKm8KICAgICAgICAgICAgICogdW5yZXNfdGFibGUgPSAoY2hhciAqKXJl
YWxsb2ModW5yZXNfdGFibGUsIHVucmVzX21heHNpemUgKz0gMTAyNCk7CiAgICAgICAgICAgICAq
LwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweSh1bnJlc190YWJsZSArIHVucmVzX3NpemUgKyAy
ICogc2l6ZW9mKHNob3J0KSwgbmFtZSwgbmFtZWxlbik7CisgICAgICAgIG1lbWNweSh1bnJlc190
YWJsZSArIHVucmVzX3NpemUgKyAyICogc2l6ZW9mKGludDE2X3QpLCBuYW1lLCBuYW1lbGVuKTsK
IAogICAgICAgICAvKiBTdG9yZSBudW1iZXIgb2YgcmVmZXJlbmNlcyB0byB0aGlzIHVucmVzb2x2
ZWQgc3ltYm9sICovCi0gICAgICAgIGNvdW50ID0gKHNob3J0ICopKHVucmVzX3RhYmxlICsgdW5y
ZXNfc2l6ZSk7CisgICAgICAgIGNvdW50ID0gKGludDE2X3QgKikodW5yZXNfdGFibGUgKyB1bnJl
c19zaXplKTsKICAgICAgICAgY291bnRbMF0gPSBuX3JlbF9yZWxvY3M7CiAgICAgICAgIGNvdW50
WzFdID0gbl9hYnNfcmVsb2NzOwogCi0gICAgICAgIHJlbF9yZWxvY3MgPSAobG9uZyAqKSh1bnJl
c190YWJsZSArIHVucmVzX3NpemUgKyAyICogc2l6ZW9mKHNob3J0KSArIG5hbWVsZW4pOwotICAg
ICAgICBhYnNfcmVsb2NzID0gKGxvbmcgKikodW5yZXNfdGFibGUgKyBuZXdzaXplKTsKKyAgICAg
ICAgcmVsX3JlbG9jcyA9IChpbnQzMl90ICopKHVucmVzX3RhYmxlICsgdW5yZXNfc2l6ZSArIDIg
KiBzaXplb2YoaW50MTZfdCkgKyBuYW1lbGVuKTsKKyAgICAgICAgYWJzX3JlbG9jcyA9IChpbnQz
Ml90ICopKHVucmVzX3RhYmxlICsgbmV3c2l6ZSk7CiAKICAgICAgICAgdW5yZXNfc2l6ZSA9IG5l
d3NpemU7CiAKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHNjLnNfbnJlbG9jOyBqKyspIHsKICAg
ICAgICAgICAgIGlmIChyZWxvY3Nbal0ucl9zeW1uZHggPT0gaSkgewogICAgICAgICAgICAgICAg
LyogbWFyayB0aGUgcmVsb2NhdGlvbiBhcyBwcm9jZXNzZWQgKi8KLSAgICAgICAgICAgICAgIHJl
bG9jc1tqXS5yX3N5bW5keCA9IC0xVUw7CisgICAgICAgICAgICAgICByZWxvY3Nbal0ucl9zeW1u
ZHggPSAweEZGRkZGRkZGOwogCiAgICAgICAgICAgICAgICBpZiAocmVsb2NzW2pdLnJfdHlwZSA9
PSBSRUxPQ19SRUwzMikgewogICAgICAgICAgICAgICAgICAgKnJlbF9yZWxvY3MrKyA9IHJlbG9j
c1tqXS5yX3ZhZGRyOwpAQCAtNzQyLDEzICs3NDIsMTMgQEAgc3RhdGljIGludCB3cml0ZV9keGUg
KEZJTEUgKmluZiwgRklMRSAqbwogICAgICAgICAgICBlcnJjb3VudCsrOwogICAgICAgICB9CiAK
LSAgICAgICAgbmV3c2l6ZSA9IGV4cHN5bV9zaXplICsgc2l6ZW9mKGxvbmcpICsgbmFtZWxlbjsK
KyAgICAgICAgbmV3c2l6ZSA9IGV4cHN5bV9zaXplICsgc2l6ZW9mKGludDMyX3QpICsgbmFtZWxl
bjsKICAgICAgICAgaWYgKG5ld3NpemUgPiBleHBzeW1fbWF4c2l6ZSkgewogICAgICAgICAgICBl
eHBzeW1fdGFibGUgPSAoY2hhciAqKXJlYWxsb2MoZXhwc3ltX3RhYmxlLCBleHBzeW1fbWF4c2l6
ZSArPSAxMDI0KTsKICAgICAgICAgfQogCi0gICAgICAgICoobG9uZyAqKShleHBzeW1fdGFibGUg
KyBleHBzeW1fc2l6ZSkgPSBzeW1baV0uZV92YWx1ZTsKLSAgICAgICAgbWVtY3B5KGV4cHN5bV90
YWJsZSArIGV4cHN5bV9zaXplICsgc2l6ZW9mKGxvbmcpLCBuYW1lLCBuYW1lbGVuKTsKKyAgICAg
ICAgKihpbnQzMl90ICopKGV4cHN5bV90YWJsZSArIGV4cHN5bV9zaXplKSA9IHN5bVtpXS5lX3Zh
bHVlOworICAgICAgICBtZW1jcHkoZXhwc3ltX3RhYmxlICsgZXhwc3ltX3NpemUgKyBzaXplb2Yo
aW50MzJfdCksIG5hbWUsIG5hbWVsZW4pOwogICAgICAgICBleHBzeW1fc2l6ZSA9IG5ld3NpemU7
CiAgICAgICAgIGlmIChvcHQudmVyYm9zZSkgewogICAgICAgICAgICBwcmludGYoImV4cG9ydDog
YCVzJ1xuIiwgbmFtZSk7CkBAIC03ODQsNyArNzg0LDcgQEAgc3RhdGljIGludCB3cml0ZV9keGUg
KEZJTEUgKmluZiwgRklMRSAqbwogICAgICAgIGV4aXQoLTQpOwogICAgIH0KICAgICBkaC5lbGVt
ZW50X3NpemUgPSBkaC5zZWNfc2l6ZTsKLSAgICBkaC5zeW1ib2xfb2Zmc2V0ID0gKihsb25nICop
ZXhwc3ltX3RhYmxlOworICAgIGRoLnN5bWJvbF9vZmZzZXQgPSAqKGludDMyX3QgKilleHBzeW1f
dGFibGU7CiAgICAgbWVtc2V0KGRhdGEgKyBzdGFydGJzcywgMCwgZGguc2VjX3NpemUgLSBzdGFy
dGJzcyk7CiAgICAgZndyaXRlKCZkaCwgMSwgc2l6ZW9mKGR4ZV9oZWFkZXIpLCBvdXRmKTsKICAg
ICAvKiBXcml0ZSB0aGUgYWN0dWFsIGNvZGUrZGF0YStic3Mgc2VjdGlvbiAqLwpAQCAtODQzLDcg
Kzg0Myw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChGSUxFICppbmYsIEZJTEUgKm8KICAvKiBP
dXRwdXQgdGhlIHJlbG9jYXRpb25zICovCiAgZm9yIChpID0gMDsgaSA8IHNjLnNfbnJlbG9jOyBp
KyspIHsKICAgICAgaWYgKFZBTElEX1JFTE9DKHJlbG9jc1tpXSkpIHsKLSAgICAgICAgZndyaXRl
KCZyZWxvY3NbaV0ucl92YWRkciwgMSwgc2l6ZW9mKGxvbmcpLCBvdXRmKTsKKyAgICAgICAgZndy
aXRlKCZyZWxvY3NbaV0ucl92YWRkciwgMSwgc2l6ZW9mKGludDMyX3QpLCBvdXRmKTsKICAgICAg
fQogIH0KIApAQCAtOTk2LDcgKzk5Niw3IEBAIHN0YXRpYyBpbnQgbWFrZV9pbXBsaWIgKHZvaWQp
CiAgLyogRW1pdCB0aGUgbmFtZXMgb2YgYWxsIGltcG9ydGVkIGZ1bmN0aW9ucyAqLwogIGZwcmlu
dGYoaW1wbGliLCAiTHN5bXM6XG4iKTsKICBmb3IgKGkgPSAwLCBzY2FuID0gc3ltdGFiOyBpIDwg
ZGgubl9leHBfc3ltczsgaSsrKSB7Ci0gICAgIHNjYW4gKz0gc2l6ZW9mKGxvbmcpOworICAgICBz
Y2FuICs9IHNpemVvZihpbnQzMl90KTsKICAgICAgZnByaW50ZihpbXBsaWIsICJcdC5hc2NpaVx0
XCIlc1xcMFwiXG4iLCBzY2FuKTsKICAgICAgc2NhbiA9IHN0cmNocihzY2FuLCAwKSArIDE7CiAg
fQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgc3RhdGljIGludCBtYWtlX2ltcGxpYiAodm9pZCkKIAog
IC8qIEFuZCBub3cgZW1pdCB0aGUgc3R1YnMgKi8KICBmb3IgKGkgPSAwLCBzY2FuID0gc3ltdGFi
OyBpIDwgZGgubl9leHBfc3ltczsgaSsrKSB7Ci0gICAgIHNjYW4gKz0gc2l6ZW9mKGxvbmcpOwor
ICAgICBzY2FuICs9IHNpemVvZihpbnQzMl90KTsKICAgICAgZnByaW50ZihpbXBsaWIsICJcdC5h
bGlnblx0MiwweGNjXG4iKTsKICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICBmcHJpbnRmKGlt
cGxpYiwgIkxzdHViczpcbiIpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgc3RhdGljIGludCBzaG93
X3N5bWJvbHMgKGNvbnN0IGNoYXIgKmZuYQogIGZjbG9zZShmKTsKIAogIGZvciAoaSA9IDA7IGkg
PCBkaC5uX2V4cF9zeW1zOyBpKyspIHsKLSAgICAgc2NhbiArPSBzaXplb2YobG9uZyk7CisgICAg
IHNjYW4gKz0gc2l6ZW9mKGludDMyX3QpOwogICAgICBpZiAob3B0LnNob3dleHApIHsKICAgICAg
ICAgcHV0cyhzY2FuKTsKICAgICAgfQpAQCAtMTA3NCwxMyArMTA3NCwxMyBAQCBzdGF0aWMgaW50
IHNob3dfc3ltYm9scyAoY29uc3QgY2hhciAqZm5hCiAgfQogCiAgZm9yIChpID0gMDsgaSA8IGRo
Lm5fdW5yZXNfc3ltczsgaSsrKSB7Ci0gICAgIHVuc2lnbmVkIHNob3J0IG4xID0gKCh1bnNpZ25l
ZCBzaG9ydCAqKXNjYW4pWzBdOwotICAgICB1bnNpZ25lZCBzaG9ydCBuMiA9ICgodW5zaWduZWQg
c2hvcnQgKilzY2FuKVsxXTsKLSAgICAgc2NhbiArPSBzaXplb2Yoc2hvcnQpICogMjsKKyAgICAg
dWludDE2X3QgbjEgPSAoKHVpbnQxNl90ICopc2NhbilbMF07CisgICAgIHVpbnQxNl90IG4yID0g
KCh1aW50MTZfdCAqKXNjYW4pWzFdOworICAgICBzY2FuICs9IHNpemVvZihpbnQxNl90KSAqIDI7
CiAgICAgIGlmIChvcHQuc2hvd3VucmVzKSB7CiAgICAgICAgIHB1dHMoc2Nhbik7CiAgICAgIH0K
LSAgICAgc2NhbiA9IHN0cmNocihzY2FuLCAwKSArIDEgKyAobjEgKyBuMikgKiBzaXplb2YobG9u
Zyk7CisgICAgIHNjYW4gPSBzdHJjaHIoc2NhbiwgMCkgKyAxICsgKG4xICsgbjIpICogc2l6ZW9m
KGludDMyX3QpOwogIH0KIAogIGZvciAoaSA9IDA7IGkgPCBkaC5uX2RlcHM7IGkrKykgewpJbmRl
eDogc3JjL2R4ZS9keGVnZW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2RqZ3BwL2RqZ3Bw
L3NyYy9keGUvZHhlZ2VuLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1wIC1y
MS43IGR4ZWdlbi5jCi0tLSBzcmMvZHhlL2R4ZWdlbi5jCTIwIERlYyAyMDAxIDA1OjEyOjEwIC0w
MDAwCTEuNworKysgc3JjL2R4ZS9keGVnZW4uYwkyOSBKdWwgMjAxMSAxOTo0NTowOCAtMDAwMApA
QCAtMiw2ICsyLDcgQEAKICAgIFRoaXMgc29mdHdhcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRl
ZCB3aXRoIGFib3ZlIGNvcHlyaWdodCwgbm8gd2FycmFudHkuCiAgICBCYXNlZCBvbiBjb2RlIGJ5
IERKIERlbG9yaWUsIGl0J3MgcmVhbGx5IGhpcywgZW5oYW5jZWQsIGJ1Z3MgZml4ZWQuICovCiAK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjU0LDcgKzI1NSw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikKICAgZndyaXRlKGRhdGEsIDEsIHNjLnNfc2l6ZSwgb3V0cHV0
X2YpOwogICBmb3IgKGk9MDsgaTxzYy5zX25yZWxvYzsgaSsrKQogICAgIGlmKCooY2hhciAqKSgm
cmVsb2NzW2ldLnJfdHlwZSkgIT0gMHgxNCkJLyogRG9uJ3QgZG8gdGhlc2UsIHRoZXkgYXJlIHJl
bGF0aXZlICovCi0gICAgICBmd3JpdGUoJihyZWxvY3NbaV0ucl92YWRkciksIDEsIHNpemVvZihs
b25nKSwgb3V0cHV0X2YpOworICAgICAgZndyaXRlKCYocmVsb2NzW2ldLnJfdmFkZHIpLCAxLCBz
aXplb2YoaW50MzJfdCksIG91dHB1dF9mKTsKIAogICBmY2xvc2Uob3V0cHV0X2YpOwogICByZXR1
cm4gMDsKSW5kZXg6IHNyYy9saWJtL21hdGgvY2hldy5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvZGpncHAvZGpncHAvc3JjL2xpYm0vbWF0aC9jaGV3LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMgpkaWZmIC11IC1wIC1yMS4yIGNoZXcuYwotLS0gc3JjL2xpYm0vbWF0aC9jaGV3LmMJMTEg
QXByIDIwMDggMDE6NDY6NDggLTAwMDAJMS4yCisrKyBzcmMvbGlibS9tYXRoL2NoZXcuYwkyOSBK
dWwgMjAxMSAxOTo0NToxMSAtMDAwMApAQCAtMjIxLDggKzIyMSw4IEBAIHR5cGVkZWYgdm9pZCAo
KnN0aW5zdF90eXBlKSgpOwogc3RpbnN0X3R5cGUgKnBjOwogc3RpbnN0X3R5cGUgc3N0YWNrW1NU
QUNLXTsKIHN0aW5zdF90eXBlICpzc3AgPSAmc3N0YWNrWzBdOwotaW50IGlzdGFja1tTVEFDS107
Ci1pbnQgKmlzcCA9ICZpc3RhY2tbMF07Citsb25nIGlzdGFja1tTVEFDS107Citsb25nICppc3Ag
PSAmaXN0YWNrWzBdOwogCiB0eXBlZGVmIGludCAqd29yZF90eXBlOwogCkBAIC0yNzIsNyArMjcy
LDcgQEAgV09SRChwdXNoX251bWJlcikKIHsKICAgICBpc3ArKzsKICAgICBwYysrOwotICAgICpp
c3AgPSAoaW50KSgqcGMpOworICAgICppc3AgPSAobG9uZykoKnBjKTsKICAgICBwYysrOwogICAg
IAogfQpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgZWxzZQkKICAKIHN0YXRpYyB2b2lkIERFRlVOX1ZP
SUQoYmFuZykKIHsKLSooaW50ICopKChpc3BbMF0pKSA9IGlzcFstMV07CisqKGxvbmcgKikoKGlz
cFswXSkpID0gaXNwWy0xXTsKIGlzcC09MjsKIHBjKys7CiAKQEAgLTEzNTMsNyArMTM1Myw3IEBA
IHBjKys7CiAKIFdPUkQoYXRzaWduKQogewotICAgIGlzcFswXSA9ICooaW50ICopKGlzcFswXSk7
CisgICAgaXNwWzBdID0gKihsb25nICopKGlzcFswXSk7CiAgICAgcGMrKzsKIH0KIAo=
--001636920a1afcdb4b04a93abd5c--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019