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: Subject: [PATCH] allow 64 bit host tools when cross compiling From: Ozkan Sezer To: djgpp-workers AT delorie DOT com Content-Type: multipart/mixed; boundary=001636920a1afcdb4b04a93abd5c 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 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 > 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--