public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: John Stracke <francis@ecal.com> To: warrenl@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: libgcj/1165: HTTP client code treats headers as body Date: Wed, 20 Dec 2000 13:51:00 -0000 [thread overview] Message-ID: <20001220214602.24581.qmail@sourceware.cygnus.com> (raw) The following reply was made to PR libgcj/1165; it has been noted by GNATS. From: John Stracke <francis@ecal.com> To: gcc-gnats@gcc.gnu.org, warrenl@gcc.gnu.org Cc: Subject: Re: libgcj/1165: HTTP client code treats headers as body Date: Wed, 20 Dec 2000 15:36:02 -0500 gcc-gnats@gcc.gnu.org wrote: > Thank you very much for your problem report. > It has the internal identification `libgcj/1165'. > The individual assigned to look at your > report is: warrenl. Um...I think I filed this report back in March (with the ID java.net/170), and submitted a fix shortly thereafter. I got notice in August that java.net/170 had been closed out because it was fixed. -- /==============================================================\ |John Stracke | http://www.ecal.com |My opinions are my own.| |Chief Scientist |=============================================| |eCal Corp. |If jumping off a bridge was "the industry | |francis@ecal.com|standard", would you do it? | \==============================================================/ >From andyj@mc.com Wed Dec 20 14:16:00 2000 From: andyj@mc.com To: gcc-gnats@gcc.gnu.org Subject: c++/1482: va_start generates call to memcpy Date: Wed, 20 Dec 2000 14:16:00 -0000 Message-id: <20001220220735.3757.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01264.html Content-length: 980 >Number: 1482 >Category: c++ >Synopsis: va_start generates call to memcpy >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 14:16:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: E. Andrew Johnson >Release: g++-2.95.2 >Organization: >Environment: target=powerpc with Altivec 2.95.2 patches >Description: The expansion of va_start includes a call to _builtin_memcpy. When compiling with the gcc-2.95.2 C compiler, this generates the inline expansion of the code. When compiling with the gcc-2.95.2 C++ compiler, it generates an external call to memcpy. The problem is that the type.align for "va_list ap" is set to 1, whereas it is set to 8 (1 byte) in C. Why does it behave differently with the C++ compiler? >How-To-Repeat: gcc -O2 -c tstdarg.ippc >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From bryce@albatross.co.nz Wed Dec 20 14:36:00 2000 From: Bryce McKinlay <bryce@albatross.co.nz> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/1101 Date: Wed, 20 Dec 2000 14:36:00 -0000 Message-id: <20001220223602.14574.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01265.html Content-length: 559 The following reply was made to PR c++/1101; it has been noted by GNATS. From: Bryce McKinlay <bryce@albatross.co.nz> To: Neil Bliss <yoda@integratus.com>, gcc-gnats@gcc.gnu.org Cc: Subject: Re: c++/1101 Date: Thu, 21 Dec 2000 11:29:12 +1300 Neil Bliss wrote: > Hmm, it still bombs out with the same error: > > [yoda@tortuga1 test]$ ../libjava/configure --with-threading=posix --disable-new-gxx-abi --prefix=/home/yoda You need to configure all of GCC, including the C++ compiler, with --disable-new-gxx-abi, not just libjava. [ bryce ] >From yoda@integratus.com Wed Dec 20 14:36:00 2000 From: Neil Bliss <yoda@integratus.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/1101 Date: Wed, 20 Dec 2000 14:36:00 -0000 Message-id: <20001220223602.14586.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01266.html Content-length: 770 The following reply was made to PR c++/1101; it has been noted by GNATS. From: Neil Bliss <yoda@integratus.com> To: Bryce McKinlay <bryce@albatross.co.nz> Cc: gcc-gnats@gcc.gnu.org Subject: Re: c++/1101 Date: Wed, 20 Dec 2000 14:31:37 -0800 ok, sorry for the density. I'll give it a shot. On Thu, Dec 21, 2000 at 11:29:12AM +1300, Bryce McKinlay wrote: > Neil Bliss wrote: > > > Hmm, it still bombs out with the same error: > > > > [yoda@tortuga1 test]$ ../libjava/configure --with-threading=posix --disable-new-gxx-abi --prefix=/home/yoda > > You need to configure all of GCC, including the C++ compiler, with --disable-new-gxx-abi, not just libjava. > > [ bryce ] > > -- Neil Bliss - Integratus Customer Support Yow! I am having fun!! >From favorov@sensi.org Wed Dec 20 14:56:00 2000 From: favorov@sensi.org To: gcc-gnats@gcc.gnu.org Subject: c++/1483: c++ reports "internal compiler error" on "new" oprerator when -syntax-only is on Date: Wed, 20 Dec 2000 14:56:00 -0000 Message-id: <20001220224747.18378.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01267.html Content-length: 14813 >Number: 1483 >Category: c++ >Synopsis: c++ reports "internal compiler error" on "new" oprerator when -syntax-only is on >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Wed Dec 20 14:56:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Alexander Favorov >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: FreeBsd 4.0 RELEASE >Description: c++ reports "internal compiler error" on "new" oprerator when -syntax-only is on and there are no compilation errors. >How-To-Repeat: start the command line from test.cmdline compiling the file test.cpp >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-tar; name="testerror.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="testerror.tar" dGVzdC5jbWRsaW5lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICAxNzUx IAAgICAgIDAgACAgICAgICAgIDcwICA3MjIwMzE3MDExICAxMjMxNQAgMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZhdm9yb3YAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn KysgLXggYysrIC0tc3ludGF4LW9ubHkgLXBlZGFudGljIC1zYXZlLXRlbXBzIHRlc3QuY3BwCgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRl c3QuY3BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDA2NDQgACAgMTc1MSAA ICAgICAwIAAgICAgICAgIDE2NiAgNzIyMDMxNjA3NiAgMTE1MjQAIDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmYXZvcm92AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2xh c3MgQQp7CnB1YmxpYzoKCWludCB1OwoJQShpbnQgdik6dSh2KXt9Owp9OwoKaW50IG1haW4oKQp7 CglBICogcHRyQTsKCXB0ckEgPSBuZXcgQSgxKTsKCWRlbGV0ZShwdHJBKTsKCXJldHVybiAwOwp9 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0 LmcrK3ZlcnNpb24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwNjQ0IAAgIDE3NTEgACAg ICAgMCAAICAgICAgICAgMTcgIDcyMjAzMTcwMzMgIDEyNjcxACAwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZmF2b3JvdgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcrKyAt diB2ZXJzaW9uCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdC5p aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICAxNzUxIAAgICAg IDAgACAgICAgICAgMjA1ICA3MjIwMzE2NzI0ICAxMTMzNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZhdm9yb3YAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIDEgInRl c3QuY3BwIgpjbGFzcyBBCnsKcHVibGljOgoJaW50IHU7CglBKGludCB2KTp1KHYpe307Cn07Cgpp bnQgbWFpbigpCnsKCUEgKiBwdHJBOwoJcHRyQSA9IG5ldyBBKDEpOwoJZGVsZXRlKHB0ckEpOwoJ cmV0dXJuIDA7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== >From sebor@roguewave.com Wed Dec 20 15:26:00 2000 From: sebor@roguewave.com To: gcc-gnats@gcc.gnu.org Subject: c++/1484: ICE referencing a template function with -fno-honor-std Date: Wed, 20 Dec 2000 15:26:00 -0000 Message-id: <20001220231800.28087.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01268.html Content-length: 1246 >Number: 1484 >Category: c++ >Synopsis: ICE referencing a template function with -fno-honor-std >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 15:26:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: sebor@roguewave.com >Release: 2.97 20001113 >Organization: >Environment: >Description: This gives an ICE with a recent snapshot of 2.97 (20001113) and just an error with 2.95.2. The error disappears when namespace std is not involved (both compilers). #define N std namespace N { template <class T> T foo (); } template <class T> struct C { C () { N::foo<int>(); } }; C<int> c; >How-To-Repeat: gcc -c test.cpp -fno-honor-std test.cpp: In constructor `C<T>::C() [with T = int]': test.cpp:16: instantiated from here test.cpp:13: `foo' undeclared in namespace `std' test.cpp:13: Internal error #980519. test.cpp:13: Internal compiler error in build_member_call, at cp/init.c:1481 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From tmuller@yahoo.com Wed Dec 20 18:16:00 2000 From: tmuller@yahoo.com To: gcc-gnats@gcc.gnu.org Subject: c/1485: Internal compiler error in print_rtl_and_abort Date: Wed, 20 Dec 2000 18:16:00 -0000 Message-id: <20001221020747.4706.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01269.html Content-length: 1493 >Number: 1485 >Category: c >Synopsis: Internal compiler error in print_rtl_and_abort >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 18:16:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Troy >Release: gcc version 2.97 20001218 >Organization: >Environment: gcc version 2.97 20001218 Solaris 2.6 >Description: During compiling of openssl with gcc version 2.97 20001218, I encountered the following error: make[2]: Entering directory `/camaro/u/ssh/openssl-0.9.6/ssl' gcc -I../crypto -I../include -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN _H -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASP ARC -DMD5_ASM -c ssl_ciph.c -o ssl_ciph.o ssl_ciph.c: In function `SSL_CIPHER_description': ssl_ciph.c:987: Internal compiler error in print_rtl_and_abort, at flow.c:6343 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. make[2]: *** [ssl_ciph.o] Error 1 make[2]: Leaving directory `/camaro/u/ssh/openssl-0.9.6/ssl' make[1]: *** [all] Error 1 make[1]: Leaving directory `/camaro/u/ssh/openssl-0.9.6' make: *** [top] Error 2 bash-2.02# >How-To-Repeat: 1) Using a bootstrapped gcc version 2.97 20001218 2) cd openssl-0.9.6 3) ./configure --prefix=/usr/local 4) make >Fix: none >Release-Note: >Audit-Trail: >Unformatted: >From none@i-dont-want-email.no-email Wed Dec 20 18:56:00 2000 From: none@i-dont-want-email.no-email To: gcc-gnats@gcc.gnu.org Subject: c++/1486: dosen't take good code ICE 122, Date: Wed, 20 Dec 2000 18:56:00 -0000 Message-id: <20001221025330.13686.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01270.html Content-length: 1172 >Number: 1486 >Category: c++ >Synopsis: dosen't take good code ICE 122, >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 18:56:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: none@i-dont-want-email.no-email >Release: 2.96 >Organization: >Environment: RedHat 686 >Description: just look at small program it's like 10 lines. Gives ICE 122. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bugtest.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bugtest.cpp" I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CglzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk OjpzdHJpbmc+IG1hcDsKCW1hcFsiSGVsbG8sICJdID0gIndvcmxkISI7CgoJdHlwZWRlZiBzdGQ6 Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OjppdGVyYXRvciBNSTsKCWlmKChNSSBpID0g bWFwLmZpbmQoIkhlbGxvLCAiKSkgIT0gbWFwLmVuZCgpKSAgCgkJc3RkOjpjb3V0PDxpLT5zZWNv bmQ8PCdcbic7CQp9Cg== >From stef@mort.level5.net Thu Dec 21 01:56:00 2000 From: Stefan Morrell <stef@mort.level5.net> To: tromey@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: libgcj/1125: A different prims.cc compile issue Date: Thu, 21 Dec 2000 01:56:00 -0000 Message-id: <20001221095600.2970.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01271.html Content-length: 982 The following reply was made to PR libgcj/1125; it has been noted by GNATS. From: Stefan Morrell <stef@mort.level5.net> To: gcc-gnats@gcc.gnu.org, tromey@gcc.gnu.org Cc: Subject: Re: libgcj/1125: A different prims.cc compile issue Date: Thu, 21 Dec 2000 09:46:41 +0000 On Wed, Dec 20, 2000 at 08:06:20PM -0000, gcc-gnats@gcc.gnu.org wrote: > Thank you very much for your problem report. > It has the internal identification `libgcj/1125'. > The individual assigned to look at your > report is: tromey. > > >Category: libgcj > >Responsible: tromey > >Synopsis: A different prims.cc compile issue > >Arrival-Date: Wed Dec 20 12:06:20 PST 2000 I posted this error so long ago now that I can't remember when and it was resolved then. Thanks Stef -- Stefan Morrell | Still swearing at NT Sysadmin Troll | Still struggling with UNIX +44-(0)1924-507300 (W) | Still enjoying it... must be mad! stef@mort.level5.net | stef@level5.net >From okumura@ztv.ne.jp Thu Dec 21 05:16:00 2000 From: Haruhiko Okumura <okumura@ztv.ne.jp> To: gcc-gnats@gcc.gnu.org Subject: c/1487: CVS gcc can't compile Date: Thu, 21 Dec 2000 05:16:00 -0000 Message-id: <200012211305.WAA01993@dhcp183-004.ztv.ne.jp> X-SW-Source: 2000-q4/msg01272.html Content-length: 1933 >Number: 1487 >Category: c >Synopsis: CVS gcc can't compile >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Thu Dec 21 05:16:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Haruhiko Okumura >Release: 2.97 20001129 (experimental) >Organization: Matsusaka University >Environment: System: Linux dhcp183-004.ztv.ne.jp 2.2.15 #1 Thu May 4 17:46:50 JST 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc/configure --enable-shared --enable-languages=c++,f77,java : (reconfigured) >Description: while building CVS gcc as of today: ./xgcc -B./ -B/usr/local/i686-pc-linux-gnu/bin/ -isystem /usr/local/i686-pc-linux-gnu/include -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -fPIC -g1 -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc/gcc -I../../gcc/gcc/. -I../../gcc/gcc/config -I../../gcc/gcc/../include -fexceptions -DL_eh -c ../../gcc/gcc/libgcc2.c -o libgcc/./_eh.o ../../gcc/gcc/libgcc2.c: In function `__sjthrow': ../../gcc/gcc/libgcc2.c:3515: Internal compiler error in distribute_notes, at combine.c:12572 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. make[3]: *** [libgcc/./_eh.o] Error 1 make[3]: Leaving directory `/opt/local/src/gccobj/gcc' make[2]: *** [libgcc.a] Error 2 make[2]: Leaving directory `/opt/local/src/gccobj/gcc' make[1]: *** [stage_a] Error 2 make[1]: Leaving directory `/opt/local/src/gccobj/gcc' make: *** [bootstrap] Error 2 I tried it with gcc 2.97, egcs 1.1.2, gcc 2.97 with -V2.95.2, but the results are the same. >How-To-Repeat: make bootstrap >Fix: don't know >Release-Note: >Audit-Trail: >Unformatted: >From jon.connell@arm.com Thu Dec 21 06:06:00 2000 From: jon.connell@arm.com To: gcc-gnats@gcc.gnu.org Cc: michael.williams@arm.com, richard.earnshaw@arm.com Subject: c++/1488: No C++ warning option to guard against bogus return types for C linkage Date: Thu, 21 Dec 2000 06:06:00 -0000 Message-id: <20001221140232.11860.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01273.html Content-length: 2364 >Number: 1488 >Category: c++ >Synopsis: No C++ warning option to guard against bogus return types for C linkage >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 06:06:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: jon.connell@arm.com >Release: gcc version 2.95.1 >Organization: >Environment: RedHat 6.2, Kernel 2.2.17-6, glibc 2.1.3 >Description: When returning or passing parameters to/from a C++ function that is declared to have C linkage, non-C datatypes should be flagged with a warning to avoid errors. >How-To-Repeat: Pass the attached script to bash. Whilst the programmer could have easily chosen a typedef for bool in C which matched the C++ implementation on the host system, the choice of bool for a return type of a C++ function with C linkage was probably an error and ought to raise a warning. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="foo" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="foo" Y2F0ID4gYm9vbC5jcHAgPDxFT0YKZXh0ZXJuICJDIiBib29sIGYxKHVuc2lnbmVkIGludCAqYSwg dW5zaWduZWQgaW50KiBiKQp7CiAgKmEgPSAxMDA7CiAgKmIgPSAyMDA7CiAgcmV0dXJuIGZhbHNl Owp9CkVPRgoKY2F0ID5ib29sLmMgPDxFT0YKI2luY2x1ZGUgPHN0ZGlvLmg+CiAKdHlwZWRlZiBl bnVtIHtmYWxzZSwgdHJ1ZX0gYm9vbDsKZXh0ZXJuIGJvb2wgZjEodW5zaWduZWQgaW50ICphLCB1 bnNpZ25lZCBpbnQgKmIpOwogCmludCBtYWluKHZvaWQpCnsKICB1bnNpZ25lZCBpbnQgYTsKICB1 bnNpZ25lZCBpbnQgYjsKICBib29sIGMgPSBmMSgmYSwgJmIpOwogIHByaW50ZigiYT0lZCwgYj0l ZCwgYz0lZFxuIiwgYSwgYiwgYyk7CiAgcmV0dXJuIDA7Cn0KRU9GCgojIFVzZSBldmVyeSB3YXJu aW5nIGluIHRoZSBib29rLgp3YXJuPSItV2FsbCAtVyAtV3RyYWRpdGlvbmFsIC1XdW5kZWYgLVdz aGFkb3cgLVdwb2ludGVyLWFyaXRoIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LXF1YWwgLVdj YXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncyAtV2NvbnZlcnNpb24gLVdzaWduLWNvbXBhcmUgLVdh Z2dyZWdhdGUtcmV0dXJuIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMg LVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV21pc3Npbmctbm9yZXR1cm4gLVdyZWR1bmRhbnQtZGVj bHMgLVduZXN0ZWQtZXh0ZXJucyAtV2lubGluZSAtV2xvbmctbG9uZyAtV2Vycm9yIgoKZysrIC1h bnNpIC1wZWRhbnRpYyAtYyAkd2FybiBib29sLmNwcApnY2MgLWFuc2kgLXBlZGFudGljIC1vIGJv b2wgYm9vbC5jIGJvb2wubwoKZWNobyBFeHBlY3QgYT0xMDAsIGI9MjAwLCBjPTAKLi9ib29sCg== >From jsm28@cam.ac.uk Thu Dec 21 06:36:00 2000 From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/1488: No C++ warning option to guard against bogus returntypes for C linkage Date: Thu, 21 Dec 2000 06:36:00 -0000 Message-id: <20001221143600.28631.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01274.html Content-length: 1324 The following reply was made to PR c++/1488; it has been noted by GNATS. From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: <jon.connell@arm.com> Cc: <gcc-gnats@gcc.gnu.org>, <michael.williams@arm.com>, <richard.earnshaw@arm.com>, <gcc-bugs@gcc.gnu.org> Subject: Re: c++/1488: No C++ warning option to guard against bogus return types for C linkage Date: Thu, 21 Dec 2000 14:28:24 +0000 (GMT) On 21 Dec 2000 jon.connell@arm.com wrote: > When returning or passing parameters to/from a C++ function > that is declared to have C linkage, non-C datatypes should > be flagged with a warning to avoid errors. > >How-To-Repeat: > Pass the attached script to bash. > > Whilst the programmer could have easily chosen a typedef > for bool in C which matched the C++ implementation on the > host system, the choice of bool for a return type of a > C++ function with C linkage was probably an error and ought > to raise a warning. In the case of bool, this is no longer a problem with CVS GCC and the current C standard: ISO C now includes the boolean type _Bool, which is compatible with that used for C++ (at least for the new ABI); if you include <stdbool.h> with CVS GCC (for the bool typedef) instead of defining your own typedef, you get the expected results. -- Joseph S. Myers jsm28@cam.ac.uk >From fsl@citiz.net Thu Dec 21 07:56:00 2000 From: fsl@citiz.net To: gcc-gnats@gcc.gnu.org Subject: c/1489: gcc's invaild option -mno-486 Date: Thu, 21 Dec 2000 07:56:00 -0000 Message-id: <20001221154749.14065.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01275.html Content-length: 2184 >Number: 1489 >Category: c >Synopsis: gcc's invaild option -mno-486 >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: mistaken >Submitter-Id: net >Arrival-Date: Thu Dec 21 07:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: gyc >Release: unknown-1.0 >Organization: >Environment: >Description: RedHat 5.x Kernel 2.2.17 gcc can't compile with -mno-486 : gcc -mno-486 cfile output: cc1: Invalid option `no-486' gcc version root@gyc#~>gcc --version 2.95.2 first is mozilla Mozilla(Netscape 5) root@gyc#/usr/local/src/mozilla>make ... gcc -o Linux2.2.17_x86_DBG.OBJ/nsinstall.o -c -DXP_UNIX -g -ansi -Wall -pipe -DLINUX -Dlinux -DLINUX1_2 -mno-486 -Di386 -D_POSIX_SOURCE -D_BSD_SOURCE -DSW_THREADS -DNEED_ENDIAN_H -DNEED_GETOPT_H -DNEED_IOCTL_H -DUSE_NODL_TABS -DHAVE_SIGNED_CHAR -DNEED_SYS_TIME_H -DHAVE_SYS_BITYPES_H -DNEED_UINT_T -DNEED_TIME_R -DMITSHM -D_XOPEN_SOURCE -D_PR_LOCAL_THREADS_ONLY -DHAVE_STRERROR -DDEBUG -UNDEBUG -DDEBUG_root -DTRACING -DNSPR20 -DNETSCAPE -DOSTYPE=\"Linux2.2\" -DMOZILLA_CLIENT -DLAYERS -DUNIX_LDAP -DNSPR -DMOCHA -DUNIX_ASYNC_DNS -DDEVELOPER_DEBUG -I../include -I/usr/X11R6/include -I../dist/Linux2.2.17_x86_DBG.OBJ/include nsinstall.c cc1: Invalid option `no-486' now a test source code My "HELLO" code root@gyc#~/c-code>cat <<EOF > hello.c > #include <stdio.h> > void main (void) { printf("Hello World\n"); } > EOF root@gyc#~/c-code>ls . .. hello.c root@gyc#~/c-code>gcc -mno-486 hello.c -o hello cc1: Invalid option `no-486' hello.c: In function `main': hello.c:2: warning: return type of `main' is not `int' root@gyc#~/c-code>ls . .. hello.c now the test source code in http://www.codesourcery.com/gcc-compile.shtml GCC Output These are the results of processing your source code with the following command: gcc -mno-486 [input] Exit code: 256 Messages: cc1: Invalid option `no-486' /tmp/@31596.7.c: In function `main': /tmp/@31596.7.c:2: warning: return type of `main' is not `int' >How-To-Repeat: gcc -mno-486 files >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From fsl@citiz.net Thu Dec 21 07:56:00 2000 From: fsl@citiz.net To: gcc-gnats@gcc.gnu.org Subject: c/1490: gcc's invaild option : -mno-486 Date: Thu, 21 Dec 2000 07:56:00 -0000 Message-id: <20001221155500.17320.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01276.html Content-length: 2220 >Number: 1490 >Category: c >Synopsis: gcc's invaild option : -mno-486 >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: mistaken >Submitter-Id: net >Arrival-Date: Thu Dec 21 07:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: gyc >Release: 2.95.2 >Organization: >Environment: i586 RedHat 5.1 Kernel 2.2.17 >Description: RedHat 5.x Kernel 2.2.17 gcc can't compile with -mno-486 : gcc -mno-486 cfile output: cc1: Invalid option `no-486' gcc version root@gyc#~>gcc --version 2.95.2 first is mozilla Mozilla(Netscape 5) root@gyc#/usr/local/src/mozilla>make ... gcc -o Linux2.2.17_x86_DBG.OBJ/nsinstall.o -c -DXP_UNIX -g -ansi -Wall -pipe -DLINUX -Dlinux -DLINUX1_2 -mno-486 -Di386 -D_POSIX_SOURCE -D_BSD_SOURCE -DSW_THREADS -DNEED_ENDIAN_H -DNEED_GETOPT_H -DNEED_IOCTL_H -DUSE_NODL_TABS -DHAVE_SIGNED_CHAR -DNEED_SYS_TIME_H -DHAVE_SYS_BITYPES_H -DNEED_UINT_T -DNEED_TIME_R -DMITSHM -D_XOPEN_SOURCE -D_PR_LOCAL_THREADS_ONLY -DHAVE_STRERROR -DDEBUG -UNDEBUG -DDEBUG_root -DTRACING -DNSPR20 -DNETSCAPE -DOSTYPE=\"Linux2.2\" -DMOZILLA_CLIENT -DLAYERS -DUNIX_LDAP -DNSPR -DMOCHA -DUNIX_ASYNC_DNS -DDEVELOPER_DEBUG -I../include -I/usr/X11R6/include -I../dist/Linux2.2.17_x86_DBG.OBJ/include nsinstall.c cc1: Invalid option `no-486' now a test source code My "HELLO" code root@gyc#~/c-code>cat <<EOF > hello.c > #include <stdio.h> > void main (void) { printf("Hello World\n"); } > EOF root@gyc#~/c-code>ls . .. hello.c root@gyc#~/c-code>gcc -mno-486 hello.c -o hello cc1: Invalid option `no-486' hello.c: In function `main': hello.c:2: warning: return type of `main' is not `int' root@gyc#~/c-code>ls . .. hello.c now the test source code in http://www.codesourcery.com/gcc-compile.shtml GCC Output These are the results of processing your source code with the following command: gcc -mno-486 [input] Exit code: 256 Messages: cc1: Invalid option `no-486' /tmp/@31596.7.c: In function `main': /tmp/@31596.7.c:2: warning: return type of `main' is not `int' >How-To-Repeat: gcc -mno-486 [input] >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From cfernandez@myalert.com Thu Dec 21 08:46:00 2000 From: cfernandez@myalert.com To: gcc-gnats@gcc.gnu.org Subject: c++/1491: Stupid syntax error causes a compiler internal error Date: Thu, 21 Dec 2000 08:46:00 -0000 Message-id: <20001221164125.30366.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01277.html Content-length: 1130 >Number: 1491 >Category: c++ >Synopsis: Stupid syntax error causes a compiler internal error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 08:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: qt >Release: unknown-1.0 >Organization: >Environment: linux >Description: A small error in a file causes a compiler internal error. >How-To-Repeat: Just compile with cc -o qt qt.cc qt.cc is a very small file that recreates the problem. It uses no include files. >Fix: Correct the syntax error in qt.cc works around the problem. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="qt.cc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="qt.cc" CmludCBtYWluICgpCnsKCWNoYXIgbGluZVsyMDBdOwoJY2hhciAqc3Q9c3RyY2hyIChsaW5lLCdc cicpOwogICAgICAgIGlmIChzdD09TlVMTCkKICAgICAgICAJKnN0PXN0cmNociAobGluZSwnXG4n KTsKICAgICAgIAlpZiAoc3QhPT1OVUxMKQogICAgICAgICpzdD0wOwp9Cgo= >From jsm28@cam.ac.uk Thu Dec 21 09:46:00 2000 From: Joseph Myers <jsm28@cam.ac.uk> To: gcc-gnats@gcc.gnu.org Cc: jsm28@cam.ac.uk Subject: other/1492: gccbug security Date: Thu, 21 Dec 2000 09:46:00 -0000 Message-id: <E1499gz-00044s-00@jsm28.trin.cam.ac.uk> X-SW-Source: 2000-q4/msg01278.html Content-length: 1204 >Number: 1492 >Category: other >Synopsis: gccbug security >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 09:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Joseph S. Myers >Release: 2.97 20001221 (experimental) >Organization: none >Environment: System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib >Description: The gccbug script handles temporary files insecurely: it uses predictable names (depending only on the pid) in /tmp, if TMPDIR is not set, and will follow symlinks when overwriting them. >How-To-Repeat: Standard /tmp exploits: as a hostile user, create symlinks named after possible pids pointing to files writable by a user who runs gccbug. >Fix: Patch to be sent shortly; this PR is a test of the modified gccbug. >Release-Note: >Audit-Trail: >Unformatted: >From Franz.Sirl-kernel@lauterbach.com Thu Dec 21 11:36:00 2000 From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/1482: va_start generates call to memcpy Date: Thu, 21 Dec 2000 11:36:00 -0000 Message-id: <20001221193601.22765.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01279.html Content-length: 3145 The following reply was made to PR c++/1482; it has been noted by GNATS. From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com> To: andyj@mc.com Cc: gcc-gnats@gcc.gnu.org Subject: Re: c++/1482: va_start generates call to memcpy Date: Thu, 21 Dec 2000 20:30:28 +0100 --=====================_31675899==_ Content-Type: text/plain; charset="us-ascii"; format=flowed At 23:07 2000-12-20, andyj@mc.com wrote: > >Number: 1482 > >Category: c++ > >Synopsis: va_start generates call to memcpy > >Confidential: no > >Severity: serious > >Priority: high > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Wed Dec 20 14:16:00 PST 2000 > >Closed-Date: > >Last-Modified: > >Originator: E. Andrew Johnson > >Release: g++-2.95.2 > >Organization: > >Environment: >target=powerpc with Altivec 2.95.2 patches > >Description: >The expansion of va_start includes a call to _builtin_memcpy. When >compiling with the gcc-2.95.2 C compiler, this generates the inline >expansion of the code. When compiling with the gcc-2.95.2 C++ compiler, >it generates an external call to memcpy. The problem is that the >type.align for "va_list ap" is set to 1, whereas it is >set to 8 (1 byte) in C. Why does it behave differently >with the C++ compiler? Nobody knows :-). This was fixed a few days after gcc-2.95 came out, Bernd Schmidt and others commonized the tree node handling with C/C++ and thus fixed the bug. For gcc-2.95.2 you can try the appended patch which copies the void_type_node TYPE_ALIGN handling from c-decl.c to cp/decl.c. Franz. * decl.c (init_decl_processing): Align void_type_node to BITS_PER_UNIT as in C. --=====================_31675899==_ Content-Type: application/octet-stream; name="cplus-void_type_node-align.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cplus-void_type_node-align.patch" SW5kZXg6IGdjYy9jcC9kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9n Y2MvY3AvZGVjbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM1OC40LjEzCmRpZmYgLXUgLXAg LXIxLjM1OC40LjEzIGRlY2wuYwotLS0gZ2NjL2NwL2RlY2wuYwkyMDAwLzA2LzEwIDAwOjA2OjQy CTEuMzU4LjQuMTMKKysrIGdjYy9jcC9kZWNsLmMJMjAwMC8xMi8yMSAxODo0Mjo1MwpAQCAtNjQ3 Myw2ICs2NDczLDkgQEAgaW5pdF9kZWNsX3Byb2Nlc3NpbmcgKCkKICAgdm9pZF90eXBlX25vZGUg PSBtYWtlX25vZGUgKFZPSURfVFlQRSk7CiAgIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9WT0lE LCBOVUxMX1BUUiwgdm9pZF90eXBlX25vZGUpOwogICBsYXlvdXRfdHlwZSAodm9pZF90eXBlX25v ZGUpOyAvKiBVc2VzIGludGVnZXJfemVyb19ub2RlLiAgKi8KKyAgLyogV2UgYXJlIG5vdCBnb2lu ZyB0byBoYXZlIHJlYWwgdHlwZXMgaW4gQyB3aXRoIGxlc3MgdGhhbiBieXRlIGFsaWdubWVudCwK KyAgICAgc28gd2UgbWlnaHQgYXMgd2VsbCBub3QgaGF2ZSBhbnkgdHlwZXMgdGhhdCBjbGFpbSB0 byBoYXZlIGl0LiAgKi8KKyAgVFlQRV9BTElHTiAodm9pZF90eXBlX25vZGUpID0gQklUU19QRVJf VU5JVDsKICAgdm9pZF9saXN0X25vZGUgPSBidWlsZF90cmVlX2xpc3QgKE5VTExfVFJFRSwgdm9p ZF90eXBlX25vZGUpOwogICBUUkVFX1BBUk1MSVNUICh2b2lkX2xpc3Rfbm9kZSkgPSAxOwogCg== --=====================_31675899==_-- >From john@ndr.com Thu Dec 21 12:36:00 2000 From: John Griffin <john@ndr.com> To: tromey@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: libgcj/1430: Writing on OutputStream of bad Socket kills app with "Broken pipe" Date: Thu, 21 Dec 2000 12:36:00 -0000 Message-id: <20001221203600.12601.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01280.html Content-length: 1056 The following reply was made to PR libgcj/1430; it has been noted by GNATS. From: John Griffin <john@ndr.com> To: gcc-gnats@gcc.gnu.org, tromey@gcc.gnu.org Cc: Subject: Re: libgcj/1430: Writing on OutputStream of bad Socket kills app with "Broken pipe" Date: Thu, 21 Dec 2000 15:29:43 -0500 (EST) In reference to libgcj/1430 and 1425, I don't know what in the world happened, but either our sendmail or yours went nolstagic. I sent and you responded and fixed these well more than a year ago. Anyway, if it's my end, accept apologies for the annoyance and ignore these reports. John C. Griffin, Ned Davis Research, Inc. On 20 Dec 2000 gcc-gnats@gcc.gnu.org wrote: > Thank you very much for your problem report. > It has the internal identification `libgcj/1430'. > The individual assigned to look at your > report is: tromey. > > >Category: libgcj > >Responsible: tromey > >Synopsis: Writing on OutputStream of bad Socket kills app with "Broken pipe" > >Arrival-Date: Wed Dec 20 12:19:46 PST 2000 > >From jsm28@cam.ac.uk Thu Dec 21 12:46:00 2000 From: Joseph Myers <jsm28@cam.ac.uk> To: gcc-gnats@gcc.gnu.org Cc: jsm28@cam.ac.uk Subject: other/1494: Residual EGCS references in comments Date: Thu, 21 Dec 2000 12:46:00 -0000 Message-id: <E149CZh-0006Xx-00@jsm28.trin.cam.ac.uk> X-SW-Source: 2000-q4/msg01282.html Content-length: 2051 >Number: 1494 >Category: other >Synopsis: Residual EGCS references in comments >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: doc-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 12:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Joseph S. Myers >Release: 2.97 20001218 (experimental) >Organization: none >Environment: System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib >Description: The following references to EGCS remain in comments in GCC (after <URL: http://gcc.gnu.org/ml/gcc-patches/2000-12/msg01092.html >) which it would be desirable to update to describe current GCC instead of obsolete EGCS. gcc/config/alpha/openbsd.h: dwarf unwind information. egcs doesn't try too hard to check internal gcc/config/alpha/openbsd.h: Check alpha/alpha.h, alpha/osf.h for it when egcs is upgraded. */ gcc/config/i370/i370.md:;; Basically, using clobber in egcs-1.1.1 will ruin ability to optimize around gcc/config/i386/openbsd.h: dwarf unwind information. egcs doesn't try too hard to check internal gcc/config/m68k/openbsd.h: dwarf unwind information. egcs doesn't try too hard to check internal gcc/config/m68k/x-mot3300:# With egcs-1.1.2, this also happens for f/expr.o and f/stb.o gcc/config/ns32k/ns32k.h: 2.8 but was not picked up by egcs (at least egcs 1.0). Having all gcc/config/sparc/openbsd.h: dwarf unwind information. egcs doesn't try too hard to check internal >How-To-Repeat: Find references to EGCS in comments, which aren't helpful in telling you what current GCC might do and may potentially confuse about the currency of EGCS. >Fix: Change the comments listed above to describe current GCC. >Release-Note: >Audit-Trail: >Unformatted: >From jsm28@cam.ac.uk Thu Dec 21 12:46:00 2000 From: Joseph Myers <jsm28@cam.ac.uk> To: gcc-gnats@gcc.gnu.org Cc: jsm28@cam.ac.uk Subject: other/1493: Residual EGCS references in user documentation Date: Thu, 21 Dec 2000 12:46:00 -0000 Message-id: <E149CX2-0006W9-00@jsm28.trin.cam.ac.uk> X-SW-Source: 2000-q4/msg01281.html Content-length: 2374 >Number: 1493 >Category: other >Synopsis: Residual EGCS references in user documentation >Confidential: no >Severity: non-critical >Priority: high >Responsible: unassigned >State: open >Class: doc-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 12:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Joseph S. Myers >Release: 2.97 20001218 (experimental) >Organization: none >Environment: System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib >Description: The following non-historical references to EGCS remain in GCC in what may be considered user-visible documentation (after <URL: http://gcc.gnu.org/ml/gcc-patches/2000-12/msg01094.html >), and really ought to be fixed. libio/ NEWS:*** Major changes in libio for egcs: libstdc++/ NEWS:*** Noteworthy changes in libstdc++ for EGCS If the old libstdc++ remains in GCC for GCC 3.0, then these files need something added at the top to clearly state their relation to GCC and the obsolescence of the old libstdc++. libstdc++-v3/docs/html/17_intro/BADNAMES:For egcs: The list needs either * to be marked as a historical list relating to an obsolete compiler version, namely such-and-such an EGCS version; or * (preferred) to be updated to relate to GCC 3.0, and to be marked as relating to GCC 3.0 rather than EGCS. libffi/README:Libffi has been tested with the egcs 1.0.2 gcc compiler. Chances are libffi/README:EGCS 1.0.1 (and probably other versions of EGCS/GCC) also has a libffi/README:only single-precision, but EGCS stores single-precision arguments as These references need to be updated to relate to non-ancient GCC versions. Especially, the latter two describe a problem with EGCS 1.0.1 as something current; if the problem is fixed, it should be clearly listed as a historical note if retained; if not, it should say something like "all GCC versions from at least EGCS 1.0.1 through to GCC 3.0". >How-To-Repeat: Find references to this mysterious "EGCS" thing as if it were something current in the documentation. >Fix: See above. >Release-Note: >Audit-Trail: >Unformatted: >From gilles.rajaobelina@wanadoo.fr Thu Dec 21 14:36:00 2000 From: gilles.rajaobelina@wanadoo.fr To: gcc-gnats@gcc.gnu.org Subject: c/1495: Internal compiler error in distribute_notes, at combine.c:12572 Date: Thu, 21 Dec 2000 14:36:00 -0000 Message-id: <20001221223018.20817.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01283.html Content-length: 26545 >Number: 1495 >Category: c >Synopsis: Internal compiler error in distribute_notes, at combine.c:12572 >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 21 14:36:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Gilles-Claude Rajaobelina >Release: unknown-1.0 >Organization: >Environment: GNU C version 2.97 20001221 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.2 19991024 (release). >Description: ./cc1 -fpreprocessed toto.i.c -dumpbase toto.c -g1 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -version -fPIC -fexceptions -o toto.s GNU C version 2.97 20001221 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.2 19991024 (release). options passed: -fpreprocessed -g1 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -fPIC -fexceptions options enabled: -fdefer-pop -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole -fforce-mem -ffunction-cse -finline -fkeep-static-consts -fcaller-saves -fpcc-struct-return -fgcse -frerun-cse-after-loop -frerun-loop-opt -fdelete-null-pointer-checks -fschedule-insns2 -fsched-interblock -fsched-spec -fbranch-count-reg -fPIC -fexceptions -fnew-exceptions -freorder-blocks -fcommon -fgnu-linker -fregmove -foptimize-register-move -fargument-alias -fstrict-aliasing -fident -fpeephole2 -fmath-errno -m80387 -mhard-float -mno-soft-float -mieee-fp -mfp-ret-in-387 vprintf getchar getc_unlocked getchar_unlocked putchar fputc_unlocked putc_unlocked putchar_unlocked feof_unlocked ferror_unlocked __strcpy_small __strcspn_c1 __strcspn_c2 __strcspn_c3 __strspn_c1 __strspn_c2 __strspn_c3 __strpbrk_c2 __strpbrk_c3 __strtok_r_1c __strsep_1c __strsep_2c __strsep_3c __strsep_g strtod strtol strtoul strtoq strtouq strtoll strtoull atof atoi atol atoll __gthread_active_p __gthread_mutex_lock __gthread_mutex_trylock __gthread_mutex_unlock __default_terminate __terminate __throw_type_match __empty __get_eh_context __get_eh_info init_reg_size_table eh_context_initialize eh_context_static __eh_alloc __eh_free __get_dynamic_handler_chain __sjthrow toto.i.c: In function `__sjthrow': toto.i.c:3217: Internal compiler error in distribute_notes, at combine.c:12572 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="toto.i.c.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="toto.i.c.bz2" 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 >From neil@gcc.gnu.org Thu Dec 21 23:06:00 2000 From: neil@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/1076 Date: Thu, 21 Dec 2000 23:06:00 -0000 Message-id: <20001222070600.21350.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01284.html Content-length: 599 The following reply was made to PR c++/1076; it has been noted by GNATS. From: neil@gcc.gnu.org To: teg@redhat.com, gcc-gnats@gcc.gnu.org, jwe@bevo.che.wisc.edu, nobody@gcc.gnu.org, sullivan@mathcom.com Cc: Subject: Re: c++/1076 Date: 22 Dec 2000 07:05:20 -0000 Synopsis: g++ 2.96 formatting doubles outputs nulls State-Changed-From-To: open->closed State-Changed-By: neil State-Changed-When: Thu Dec 21 23:05:20 2000 State-Changed-Why: Fixed in CVS. http://gcc.gnu.org/ml/gcc-bugs/2000-12/msg00486.html http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1076&database=gcc >From neil@gcc.gnu.org Thu Dec 21 23:16:00 2000 From: neil@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/1489 Date: Thu, 21 Dec 2000 23:16:00 -0000 Message-id: <20001222071600.22990.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01285.html Content-length: 481 The following reply was made to PR c/1489; it has been noted by GNATS. From: neil@gcc.gnu.org To: fsl@citiz.net, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: c/1489 Date: 22 Dec 2000 07:07:56 -0000 Synopsis: gcc's invaild option -mno-486 State-Changed-From-To: open->closed State-Changed-By: neil State-Changed-When: Thu Dec 21 23:07:56 2000 State-Changed-Why: Duplicate of 1490 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1489&database=gcc >From murali@mpi-softtech.com Fri Dec 22 03:56:00 2000 From: murali@mpi-softtech.com To: gcc-gnats@gcc.gnu.org Cc: admin@mpi-softtech.com Subject: c/1496: gcc 2.95.2 results in runtime segmentation fault Date: Fri, 22 Dec 2000 03:56:00 -0000 Message-id: <20001222115503.23557.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01286.html Content-length: 929 >Number: 1496 >Category: c >Synopsis: gcc 2.95.2 results in runtime segmentation fault >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Dec 22 03:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: murali@mpi-softtech.com >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: sparc-sun-solaris2.7/2.95.2 >Description: There is only one executable line in the code below. I used gcc test.c to compile i.e. no options. When I run, I get a segmentation fault. a.out Segmentation Fault (core dumped) >How-To-Repeat: #include "stdio.h" int main(void) { int* a; int* b; *b = 3 ; return 0; } >Fix: I tried to insert a line int c; between the two pointer declarations. Then, it works. >Release-Note: >Audit-Trail: >Unformatted: >From steger@mvtec.com Fri Dec 22 04:56:00 2000 From: steger@mvtec.com To: gcc-gnats@gcc.gnu.org Subject: c++/1497: Exceptions thrown in a shared library cannot be caught under Linux Date: Fri, 22 Dec 2000 04:56:00 -0000 Message-id: <20001222125407.7342.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01287.html Content-length: 10742 >Number: 1497 >Category: c++ >Synopsis: Exceptions thrown in a shared library cannot be caught under Linux >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Dec 22 04:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Carsten Steger >Release: gcc-2.95 >Organization: >Environment: SUSE Linux 7.0 Linux 2.2.16 #1 Wed Aug 2 20:22:26 GMT 2000 i686 unknown gcc version 2.95.2 19991024 (release): i486-suse-linux >Description: Exceptions thrown in a shared library or thrown in a function in the program which are called from the shared library cannot be caught in the program that uses the shared library under Linux 2.2. >How-To-Repeat: Compile the attached program and shared library using the supplied makefile, add the directory in which the program and shared library reside (or .) to LD_LIBRARY_PATH, and execute the program. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="exception_so_bug.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exception_so_bug.tgz" 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 n3z6F07/B2sN69IAGAEA >From pfeifer@dbai.tuwien.acdot@ Fri Dec 22 06:46:00 2000 From: pfeifer@dbai.tuwien.ac dot@(Gerald Pfeifer) To: gcc-gnats@gcc.gnu.org Subject: c++/1498: Internal compiler error in pop_binding, at cp/decl.c:1179 Date: Fri, 22 Dec 2000 06:46:00 -0000 Message-id: <200012221441.PAA12244@nunki.dbai.tuwien.ac.at> X-SW-Source: 2000-q4/msg01288.html Content-length: 1340 >Number: 1498 >Category: c++ >Synopsis: Internal compiler error in pop_binding, at cp/decl.c:1179 >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-illegal-code >Submitter-Id: net >Arrival-Date: Fri Dec 22 06:46:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Gerald Pfeifer >Release: 2.97 20001222 (experimental) >Organization: >Environment: System: SunOS nunki 5.8 Generic_108528-04 sun4u sparc SUNW,Ultra-60 Architecture: sun4 host: sparc-sun-solaris2.8 build: sparc-sun-solaris2.8 target: sparc-sun-solaris2.8 configured with: /sw/test/gcc/gcc/configure --prefix=/sw/test/gcc/SunOS --enable-languages=c,c++,objc,java >Description: When compiling the example below (w/o any options) g++ correctly diagnoses the problem and then crashes: x.cc:15: semicolon missing after declaration of `MG::STACK' x.cc:15: parse error at end of input x.cc:15: Internal compiler error in pop_binding, at cp/decl.c:1179 -------- cut -------- namespace MG { class STACK { public: class ELEMENT { public: unsigned short value; }; STACK() : data() { } } -------- cut -------- >How-To-Repeat: g++ check.C >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From vincent_radivoniuk@mail.schneider.fr Fri Dec 22 06:56:00 2000 From: vincent_radivoniuk@mail.schneider.fr To: gcc-gnats@gcc.gnu.org Cc: vincent_radivoniuk@mail.schneider.fr, orvoen@free.fr Subject: c/1499: bad assembly code with use of inline functions Date: Fri, 22 Dec 2000 06:56:00 -0000 Message-id: <20001222144728.4529.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01290.html Content-length: 1045 >Number: 1499 >Category: c >Synopsis: bad assembly code with use of inline functions >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Fri Dec 22 06:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Vincent RADIVONIUK >Release: 2.95.2 19991024 >Organization: >Environment: gcc is used as a cross-compiler this way : host : intel pentium III under windows 98 target : hitachi h8/300 >Description: using the command xgcc -c -mh -O2 -save-temps bug.c i receive this output bug.s: Assembler messages : bug.s:34: Warning: operand #0xbebc200 out of range. The assembler code is wrong if the function is inline and right if not (see assembly file). >How-To-Repeat: built your cross compiler whith options --host=i386-cygwin32 --target=h8300hms use the command xgcc -c -mh -O2 -save-temps bug.c on the C source >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From vincent_radivoniuk@mail.schneider.fr Fri Dec 22 06:56:00 2000 From: vincent_radivoniuk@mail.schneider.fr To: gcc-gnats@gcc.gnu.org Cc: vincent_radivoniuk@mail.schneider.fr, orvoen@free.fr Subject: c/1500: bad assembly code with use of inline functions (added forgotten ZIP file) Date: Fri, 22 Dec 2000 06:56:00 -0000 Message-id: <20001222144932.6763.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01289.html Content-length: 2608 >Number: 1500 >Category: c >Synopsis: bad assembly code with use of inline functions (added forgotten ZIP file) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Fri Dec 22 06:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Vincent RADIVONIUK >Release: 2.95.2 19991024 >Organization: >Environment: gcc is used as a cross-compiler this way : host : intel pentium III under windows 98 target : hitachi h8/300 >Description: using the command xgcc -c -mh -O2 -save-temps bug.c i receive this output bug.s: Assembler messages : bug.s:34: Warning: operand #0xbebc200 out of range. The assembler code is wrong if the function is inline and right if not (see assembly file). >How-To-Repeat: built your cross compiler whith options --host=i386-cygwin32 --target=h8300hms use the command xgcc -c -mh -O2 -save-temps bug.c on the C source >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-zip-compressed; name="bug.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.zip" UEsDBBQAAgAIAG56limGLSEvPgEAAA8DAAAFAAAAYnVnLnO1Ud9PwjAQfu6S/Q8nvMLsRjKJexFR hIQMEo2vpGx1qxntcu348d/bbQYT0EhM7Mvd933X9ru7iDyNxzBRCCbnMBWGJbmA6fB6QKnrROT+ cCRHG44iYTA3KTCZwviQyUrDc1WWCk1djLzgTHOY9H0Lob8IXMd1iJcP7Wt5nb2JgpPOusq8pFNj zRMjlATP8L2pCVaITIJfp1mh1qyA1cPs1Q9X8eJlFs9n8aPrnDK3trqsdO4VhGNowUZtm/ym1+AI uqPl0vKp2O61twP0rUAbIV6sWq1U5fE+Gv2DFxRZbn228bd/G7wjXds8pT30jxXdgH6e1gd510ju zhu90NQOlcysqSZeaurLAlJCSASDANbCaNCqwoSDKjnWWxYSGPhhqyHPhDYc4eqsu+C7OQd/nXM7 ipOF/++2uUxd5wNQSwMEFAACAAgAIXyWKTqLvbvQAAAA4gEAAAUAAABidWcuabWQvQrCMBCA5xb6 DseJkEgpbQUHxU2HgtRFXEPVUAMxhdg/Ed/dpK0KTi4e4SDJ3XcfN4II8FDlwRE913OFKmGV7KMZ S7e7JN0k6ZrIQuXQTmPfft6iGYW75zr2Umey4gvbByac7HqBupBZKSQHgidRt9eggXHs83GIc1xq JF0LnWOIxCCpj+bNMuligGheVlq90Q8zynMZE0oKxRmDj+HPepb7X8V+cVrk55LUhTj1DuYMpd8r 7aRpFJqYxDb7U5vthIfzwjXaFH1w37RfUU9QSwMEFAACAAgAy3CWKbDHie/JAAAA1QEAAAUAAABi dWcuY7WQTwvCIBTAzxP8DiIMNCS2BTtsdKvDINYlusogWYI5cJsV0XdP15/BTrv0kAfqe7/340Eg dYc2xTFOebk/FOWuKLdENbpGt1XC/Oc9Til6QBD4i61UL3IIIEAugqq9INuoqpNKIIJP0t7a5RWF CRNhhDO8NpgMLTTDESYOSRl2b55J8w/EiK43+od+ulEQcC61klpwjkbD2Xqe+19FOCzOyPrcEdvI 09vBnU/pdKWDNI0jF4vEZ7by2U94Bl/c1biiETelzUW9AFBLAQIUABQAAgAIAG56limGLSEvPgEA AA8DAAAFAAAAAAAAAAEAIAC2gQAAAABidWcuc1BLAQIUABQAAgAIACF8lik6i7270AAAAOIBAAAF AAAAAAAAAAEAIAC2gWEBAABidWcuaVBLAQIUABQAAgAIAMtwlimwx4nvyQAAANUBAAAFAAAAAAAA AAEAIAC2gVQCAABidWcuY1BLBQYAAAAAAwADAJkAAABAAwAAAAA= >From neil@gcc.gnu.org Fri Dec 22 07:36:00 2000 From: neil@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/1496 Date: Fri, 22 Dec 2000 07:36:00 -0000 Message-id: <20001222153601.15391.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01292.html Content-length: 597 The following reply was made to PR c/1496; it has been noted by GNATS. From: neil@gcc.gnu.org To: admin@mpi-softtech.com, gcc-gnats@gcc.gnu.org, murali@mpi-softtech.com, nobody@gcc.gnu.org Cc: Subject: Re: c/1496 Date: 22 Dec 2000 15:32:12 -0000 Synopsis: gcc 2.95.2 results in runtime segmentation fault State-Changed-From-To: open->closed State-Changed-By: neil State-Changed-When: Fri Dec 22 07:32:12 2000 State-Changed-Why: This is not a bug; it is a bug in your code. You have not initialised b. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1496&database=gcc >From neil@gcc.gnu.org Fri Dec 22 07:36:00 2000 From: neil@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/1499 Date: Fri, 22 Dec 2000 07:36:00 -0000 Message-id: <20001222153601.15396.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01291.html Content-length: 541 The following reply was made to PR c/1499; it has been noted by GNATS. From: neil@gcc.gnu.org To: orvoen@free.fr, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, vincent_radivoniuk@mail.schneider.fr Cc: Subject: Re: c/1499 Date: 22 Dec 2000 15:34:34 -0000 Synopsis: bad assembly code with use of inline functions State-Changed-From-To: open->closed State-Changed-By: neil State-Changed-When: Fri Dec 22 07:34:33 2000 State-Changed-Why: Duplicate of #1500. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1499&database=gcc >From jsm28@cam.ac.uk Fri Dec 22 07:56:00 2000 From: Joseph Myers <jsm28@cam.ac.uk> To: gcc-gnats@gcc.gnu.org Cc: jsm28@cam.ac.uk Subject: c/1501: Complex conjugation ICE Date: Fri, 22 Dec 2000 07:56:00 -0000 Message-id: <E149UVv-0000kz-00@jsm28.trin.cam.ac.uk> X-SW-Source: 2000-q4/msg01293.html Content-length: 1202 >Number: 1501 >Category: c >Synopsis: Complex conjugation ICE >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Fri Dec 22 07:56:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Joseph S. Myers >Release: 2.97 20001222 (experimental) >Organization: none >Environment: System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib >Description: Complex conjugation of a constant causes an ICE. >How-To-Repeat: $ cat t.c double __complex__ f (void) { return ~(1.0 + 2.0i); } $ gcc -c t.c t.c: In function `f': t.c:4: Tree check: expected class 'e', have 'c' (complex_cst) t.c:4: Internal compiler error in fold, at fold-const.c:5282 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From jsm28@cam.ac.uk Fri Dec 22 12:46:00 2000 From: Joseph Myers <jsm28@cam.ac.uk> To: gcc-gnats@gcc.gnu.org Cc: jsm28@cam.ac.uk Subject: other/1502: Nonexistent -W options not diagnosed Date: Fri, 22 Dec 2000 12:46:00 -0000 Message-id: <E149YwT-0002Fg-00@jsm28.trin.cam.ac.uk> X-SW-Source: 2000-q4/msg01294.html Content-length: 1324 >Number: 1502 >Category: other >Synopsis: Nonexistent -W options not diagnosed >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: accepts-illegal >Submitter-Id: net >Arrival-Date: Fri Dec 22 12:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Joseph S. Myers >Release: 2.97 20001222 (experimental) >Organization: none >Environment: System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib >Description: GCC, for both C and C++, fails to give any diagnostic when a non-existent -W option is used. GCC 2.95.2 gave proper diagnostics for such nonsense options. >How-To-Repeat: gcc -c -Wnonexistent-option t.c gcc -c -Wnonexistent-option t.C (for any t.c, t.C, e.g. empty). >Fix: I suspect cpp_handle_option is to blame for returning 1 here for any option starting -W, whether recognised or not. This makes c_decode_option / lang_decode_option return 1 even if they didn't understand and consume any arguments. >Release-Note: >Audit-Trail: >Unformatted: >From vic@qbius.com Fri Dec 22 17:46:00 2000 From: vic@qbius.com To: gcc-gnats@gcc.gnu.org Subject: c++/1503: Internal Compiler Error compiling omniORB3.0.2 on Alpha-Linux Date: Fri, 22 Dec 2000 17:46:00 -0000 Message-id: <20001223013940.1572.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01295.html Content-length: 62862 >Number: 1503 >Category: c++ >Synopsis: Internal Compiler Error compiling omniORB3.0.2 on Alpha-Linux >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Fri Dec 22 17:46:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: vic@qbius.com >Release: 2.95.2 >Organization: >Environment: Linux 2.2.14 #3 SMP Wed Jul 5 13:08:28 CDT 2000 alpha unknown >Description: Internal Compiler Error compiling code which passes through on numerous other systems. >How-To-Repeat: .ii file included. Repeatable if issue: g++ -c -O2 -Wall -Wno-unused -o strand.o strand.ii >Fix: If you do not use -O2 it comiles. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="gcc.2.95.2.ICE.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gcc.2.95.2.ICE.tar.bz2" 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 ZZXCyNodrJaZst+vMn0RlXKeFxgRcM5kLuC1cEMaUat09XlLGaDi92macXTjRXWFWHuKFU4y6QFO hNQYKdLr7e+2ngUNAhzmCk7jim7uC64urrupG13bnzmLHNad16W6xVy6pvLkmlZe61ua5ugao0RS TydzZQBSNXmt9LeRRlK5E1UC6kkidtshVKhtobGgcuFOzVGZrQahvJuUlWMrKarGNVzN8+a97lLL Ma/HuXLza8LPXX4970UHzc67rvs9Tw5qUrnd7RmmNaRjnLcpSZjIq6sZUtwz173rkm2abc7Knzo4 RO7GV1IDKKiuiNiZQqyS34GxyEYMZTRyjNdsas063MGkoS1imbJhqJrX4aenJJNuqfLmy67tQuBq 7LNXVkkY5crq4ppdrlukljZ1Lnu7oru3Vcu6Xte/d9Xz4+drpzSaKLdPXuYmrznm6V5vKe/K987k 8vi+a4d7l7rSMvDB1FMyb3dT2V2051GSmUlHRUldzt6rUaxv9n+O+xFR/rw4bTJZj902v8+Ci8GH 70bk2bTOXTlXAmFvzaQpDDXK0lsK2aYmy201X4MXVUbUGraiULRFVJRDY2ok0W1C1YNUbbIlGCrS a1Ua229JVTJQKUQNpUClVmIIogkJqGI/Q3Fmj11pNX1zNYYYaYDSSqVhmAtobWBhjnSvNraKQ2gP 0fizy37I5XOH9dw/Pg9VRQlO1Prrn5LFMpeNu3gXl712093l5G2K2LzXNsYj27tja6c39mrmo22K xok+cdGzTUas7rVzURWifP2/V4avaKQrM20NZa8uttl2g0y5VEJUNi3K5aS1fxLfGq81JqrgZFDQ vudufq8MDch4S5FUoEEVRtC/f65tiRpSYLCVGKLMfjOjUm2RlRqKk1u7oSNzbcq+NyyW6W5jVjRY oktYxtRaosZN5W3KitblkqNjWiooqxsWsZCv0uWLf4CrmMJpXrww/ohDtLs+j6dCHbCdJR5Q2Yo5 VHPBy1Jlfu+zSGpKBu3EMk3IT7ZfC83jvh1xJYk1LlywwgiRoe/Amc6wxepOPzGxBtEyFBQJMg0x k/oma1uA2cXTdaE6GrfFRaaRNGimBWKKDGA9/u/yXb3uSP/YKlQgxjGMYxjHJJ++Y+LLqvgaL6+t 8azjUkoqru7LeYnKbayRl8M++47wzWzM1optsbHHTyi6vwMv0wvWuNYw8lwocYcMDi2qZDjIXcoY DY026iw5ZzNXX9XDZbcAugvLQijbI2BEte1FpNIKcP3AnbmJu5BRK2EZVwOBjYJjbLHy905GdqOu FAbISR438eHE1hEZHO3JQkChIlS2fl/y0hwGd6Kg6iOIEcQ3V51aDgNY1LJRM2Yaqt4m6tlWMLmT IV6vO1ZV9rtSWuy1D6dEitCW5qeqczCzAp1GK88wtudrW8nIvPN914UXK58XdxrG911fIXcbP1PG 0N8yDb+9gEH5k48d4x9X0OWQ1AJlDcg2Rg7ohTkGwjBujMu1KGBVR40Mycwq7u71hmZKqqkymxxe wN1NvRmh0nIwNenQZsYzGOBMU2Zl7dcLu0ylOqzLa4UvGI6C6pq2VTBRy6mg0tV7hQTEhpgmMaGv nEbJqSZTAE1RauUuI3Ztfbr1npU+z4vb57uSe3dgjBOpAHIBCmxtt9O6kwtFWgdJ9dV2rltvs9fR OwYIiIiPnXBvLmL44bV5UGrvjr7SIkImIqMkhlUxt5IhjBjPXVKgkLkLylMe/lkRNvmTFYkbmZMA ipr3d91yorem6VQpZhooMmGhedJTnG9yG5spFV7ui81yjGN+HdY1PxrIJ/JhdWUDYZW2Vhdbobth V1CNgNasCAxpDTiyqGFMTltFJjqGUZN8tKqh3sD1LEdLzkyJpTmwtaCoNFTMWriC1JbBoqZNdNbe 9du5LrGKlTbzV3+z1imYmpJbb3zVXQQYRDkhI42NtpvHO6kLuVum/F012vr1XhXxu5bm31K8OcTG r664h8uvnXbxDbhiZJGsTRDkLqdGsdRTQlBQBFalDnxqK0pmgzhg4MysliVn4svDikQYUTUul9nr pXeI0y5xEV1KzSw1TQq0k2pVxbL8WTNMYzBYYcAzhuaD8yzurtTBgEDLEu06h7QgNpmYKaCWCXbb UmRQFEThoAmDlL5xw5To2mHQHuoFA+iQbbMiooIzsPB9XGN0QIVAQS78aNIRmA8ZQqxDY5xU0FIL t7ZY0YMcSmgIdUDIBErfLSqjw420qqqqqqqqquSkOVJHQ3aUvv7kzvY4nQ2jO+svWx8482TKRGGA pWk3myEfkPDf+23xbvt/G3iRDfHdsWS0v2fEsz2efEbYxt8YPMZQEoHEqIxsy0TLqhuNkTeNtt+z bg7WDqnjKkYMcuroqpdkbjb1GDhcVDIIhVjTTFg7VvBZdFksqm6oYlTGhppqBBkGxlgnE2JlBCkh NMxqVUkkkkPagt6etKMqQ0JgRiFLgqYDapgmSE446JrToja0ThFg7QG208i/dXPWuW7KroXxrkks yeXHKq6+wzCmu19uL0m20JdDuAqqWmWgY1YNNmORynE2NjJLzl9LkFfO7l1eb4q+PmI3xXFy7Om4 qlsV66uZDXdaN0lqbzdTby5mHTr45E3nYi989fPlyyN6u8xubmN8Vzcvm912u65cuTd27Mnd25eX vd569dxi8ooxW7d23W51imzb3Ua8orm5b4rl8p8bq9S3CWMyiVFEXMbnnvBdNCWvl3UieuLXiF8X yFNu2ndtd3bXdGo16UKcilFe7qRQJI7quESqmw/ojUVtwM+b39Gj4LhFwTadAvIdbTfiPkuDndd2 7nz12vkpJS+lt5todVUZVyXVW7bQm+sggr8kUYkPYH8OK7QUpSrfD5/9nHaLdw6RSGBGjWdSxugj FTiTTaLG7kZzJTmUBRgEr4zT527JLu42RG3drqmiOg1pA0BaCVxI1OJMrUUOWTGb+jc5m+Naw1LB irS5kZSlRGCpiKqEkkgoMacgRNqlCDUYdN31z16Rq8jbXKSOd1rsbjnU+Hro9L3O67ryiNlK9SkU uavL284t13bfaXrTzsAaTMcoN9903DeySqBopCInfHFoQmQlgzHbV5TzQbbYhr9hj/TozfdE4yPG FAyCwwV+HMdQydVhqFMqByFySYyHIENhgMtS76waLYc2nU314iBkmthwNUlSLANAYx/GZ/xQI0Yw /LuKvWIKavIsf9Zyf47/7aH9koVWVZ8zP4GE2Jt6wfzdaSRMp1/jDVPnH5qgB2VUAUKcoRyd+OOo Iilvp4kf1gb6/q/j2Dy/2+vkUUUaq/zvu6dXfBsRG48bowopOin2QtTtgB3woh4GmjcCYWdOqvvX 4W38ZqCRkGC+OWiot/O1aXCOsxyjUrzFwd10wKKHTqrm65b9ObvRNXCuQQUVju65VzRgid0q7Co7 Y3QXLrFy5lBOFgiZY9o9+BwEZlICAgIHd4aaHgyUuVUiagoFPdlikbZcdq5rVj52/R+jrwDW28Am SqY0wySZiUlJmCZmDF3N3d2MkuUuxjuXSjkJ0PIpSlMKb9R6Fh9MliYVSURTP/HSaKlpL+r8yu0n 5r1MZ2OeC4n6+lsZnf2InfA5MSURCUUoVBlhN0UX9d8LrGGZMuZHFt1X5a383V0fK6pPXdFrzPN1 ebFd6uc7Xd3De7t5g7Oau3pZkqLZpTZSppLKYxTIsSYiU/my6SbEFq1q1eP1kofU5Zl/BzNPbJr+ Gkw0Cn1HfOxw5HVw8rBapM/H/RpK9B/NPZgfm/F+iRzyD9kg6MyvlKbFn7oPoP4oRdor+VELOsBz yhaMr9lNZmLVZuO/Kcj+J1kVDLqqOyGKMxgWhn+Bh/GxFPTEf2PlAEurxD/8ntsdGjj0htDaXIrd ogaMAgrMJfhFwDQNdu2Ogxopi20L2uwsLyfxBryXDfD8U6I12dNopV7bUkGMFEZjSZkITja9rETt TpSXwx3UeLudi28tvJKpqdkuEr2SKB9sPGVT+iWj/Of2U1Q8fkwn+Wh2sHd8+RBzQT+6wG8KoH7o RQ92A/lKqp0kO8PPANPjhUQMhRBMhQH4gYT0RZOwkym2jP3mqPky1j+bJRmT65AXGFCfrdps3+gi oeSykFi9ib7T8+EZtCxo4E+zAaUdATnPBHgb4VJvmRuf1deh+oD8+dvAsMxgO8k8+s6oXUHrkXU7 QxD0EQ8EeqPLtrJdLIMWC1moY8iEq7vpDNLRg2tWkkRD7VQSIe2ppRaJLfRCggPKUTUgPlvPCnNt 1qA3kTJoiHCVyHvl1JqCgyFyyVaBIh18PFricWJGKXMMWIS2SGWBLS0QnjZBaOKQypEQNQog0KCU 8Cm6pQ1mOHQMRTeQ5SNP2fbnUDKcTAFOJlJrhHXhh5/0erSPhCAdNbKjoEYKeGA9caIjn48D0U9d C2f0qh+zjIJuyfoske2E/SQrrmm4yaOuBetiIaAONoNYZpxyByBZhUyjVrSd0KupeyUDfrxbMLAM XLshATeUVdS8ZRD0RkAb7GKv8gFuRGpOMgb7Yq5AmQhqFGlAoEO4ZSHvxBMiJ4UJJtQh3VE+SwR1 7ZFWRHnIoBkCDScIF8YHVOBokHySjQUIoHp1ioGoF5SKDloJX/8/489p0yOSgj7P6OG5ATwrEKCO zWVEiYdkybTy4TkeW/5dOgafEmFDjKj3QdNY9CBDBYWlekI5ASFbYqORnoBtaFUpkGXQnDIjayLe 1J5FSDpSPCgK8glYlW4YlKB5YwhAJemKS75af9GGqrREmJtYuQpEapGttBaTEiqqNm71IcOzL9fR L0QUfa0rCTIc0B2Yibi4TVua1lxMlcZmF0dl/1mdzSIMAsoTNp4VMEFXnWyLBgs8AlNsbo9aq2Ji nhFTCUmN5/msuSvkel4ejhmS2340/gtUpmVXCmuOG+FvJYDzxljBG93ZEPvsma7fc+2GmaL4rm/7 WfGspzZ8ZYWeZ0yT9cVHG20iTdPgRJQHwIOWGchExGv+j7fl/rn/T+qyO9LuhegOvgpB6QSUlt6Y CIZA4r6rSiTQ0x8ww8FYmuUV6AlzdMBjAFQaQVlHedsCtmhkgJK+B69TC/crlswSh2zrYihLSaTV Q3f6EDGmjQ2x/4j/U5bgc15sPP9b9vqitHDBg4UyGDGaLl+R4dbOem7V/JYt74qdpt52yJujk2rk 22pqBzVj/hlZe3WdZ1guXh3/4rlBhfX9l7y9f9x6TsT4Dko0aTDSnPPA2nCcBMTBMXdRBg/czDqB uS6YlxhSfL+f5P8PmIicv5/6qf30/vpH4qVwnePd/hOp13huh/8n6fV0Do22mDPQIWKRFShVEs+6 /9Q+MK9Gx81njwdluSiBBUQhUIqk5V0UvGVVwiu6q4RXdVcIruquEV3VXCKpP6QfebBPQYBgLQQI FQi3dUGuGL7nGgf6YiSL0YVzs2ueao/p6S2uWohJcaNLjiqwNJfwG8MW91Vwiu6q4RXdVcIruquE V3VXCK7qrhFOcpTghTnKVfjKyPgjz3fDO6+v5sLFIta07K1sLFItbi+FxxvscrJKhFUlQiqSoRVJ UIqk8XDc666vhddfHjsdL03VeiMopZlVcIruquEV3VXCK7qrhFd1XkNI1ZaySoRauquEV3VXCKpK hFUmC0ZZa1qqWkk9GodTx48XyvGlzFAXyMlhESghSiJMtGWWU8FllkZJI3QfmkklXr39D0XntVXC K7qrhFd1W0fAbaEtUeJ6+vrfK9fXkXHY6WpPUuil4yqfw2d0jdmLe6q4RVJUIqkqEVSa4fwYgn1O KmBF8GfCyY7ocPqAmAZNp3qQ7yHYYQ2sGUU3w6PsawFzzuNNuHxERgUu5QQ0129w3CIlbZ4MDDNH CPqEP1iGaOWxsbXlRlUpqTE220xqPv26ythhmZy4jsyBAHGV7J3kOE/zyJxhENEH6SMCHx8zr0dU o0KMduLkoZI+gOmKn55FaRRKFR64BV6N0fEYgdstCqHEISJWvFIb9uAu0MRHcPd7gZned5iHB8tz jLlFI0DGNHUiY8VFAwiqtKj4FEapxDzIuP8eUi5oK2xphfTctnDAkFdBpjB92DdEdqicV7SyIeOp 0O7scSTJI1ghkiBo5mAbylV3SouCsKdsRlIq8h0hIaa+RRB6ahJqpFeBZUKh4iRMhOzjirxMzbFL YoplxVToGypxhAaVoAB51AzihlhDKiVYRPlSf+boHUePxfRcuwb+Q/LPtjmdO3fZ85S0tSlix8Vw MPHr6AYR3/j+z7Y/qb+yf20bb+7/s/N+UveeGGFFdqTC3Ezec7ybu9Gr3sHk3zzSCnyScj074iXO 4VU4Ztt63uUN5zmtbvNXnFa3JyN5KziU1XPGtca4zcaOY5MOpuPSekWP8in2MsmyUBIlk87XwD1D Z3gC8BgJI7OB4DCff1oE4fzv5+FJFhha1qBOHZ2t9P4fq+z8BETl+T8dPsp9lI+ylcJ3j7PsnUdI yqRE5XtTKmVIypXCd4yynU37HKdqa34WCJzrLTOm1Ns8XwdqbrXx1prYmzdupwucuXLmkDC/3fmA /FyoHZh8hiBQRH3ICdCh8uU/efmA389/j0Mpa9+XOmF7d/dj408aR40rhemuZPw8KbsL9jfieIvI CK4fMj3dPfc06PekVKg4PyhO6TkSaEn5pEDwhOU7f80USBX4SHZ/DNgAf8TsMHQ0yJ/waDwa79cx 3yo2m9pX/1zRIfd+4YpAQQPe5U3U6ZHPnIJQ/NzYedcNsRGYpJZDSysX6+Hb5+O6wROdZen0U86e eeL5O1PO18daa2Js8/OnW5149dwZsCEHZDY2qZHcd5USUj/xO0mp0DB5KQABoIePViGpGlaLs8Oz 0eIyJy58qdlOykdaVwneOvWdTrz4AtwA2JcF+NIYCWIsimPh+dfvpybH34ke+o4MT3PjiUKYiwVS RTwGzy0I3ct/dz8bBE51l29lO+nfni/J2p4WvjrTWxNnh4U8Lnh48uaQvgiEk2TaQTaAmyfpkjsD DdqRkbPfwn03U62q4lW/WVJ8co3LuQl3KT2NA9D4cSZVUPuCk71e1JLN8Tnf++cNTXtsNfHX+SRd e/Dr3phjphI6VLVs8QnZn7Cx9Dy44I3ITJPOGYjtFgMCeYNYlPYvU3YCEzAUJW+6EfP8nyD+fQBy WQPI9gs2KSYf5UAtbQRh/GZq6mw19vPMNBz2/G/EVSqVSqKUqlarCfrSSlMVrQwaNVomkjGErVYC kJEvxA2U/SH+6YAqgsD8OJy0qbYvXWb4rmQQufElksMYVrvjgSgspp10EWsCw/EEjcEBXkaY0Upp ppoqlafVJ4iTy+idWV3p8yUCF+lJHl5L8X0gZ3Nhhtj6vd7vl+PbEInOsvm+an0U+fTF9ztT6bXx npHd9M+OB7t+ZyGHLlbO3LThiETnWW/dTlTlpi+TtTla+M9I5cp8sDlwz4PkMOTpNb985XnK+2pG Zs92+fHfTlariVb8pUnyyiZ4d3FjOfPg/xnHXQyyL535O3OvPjfnzpz0q4lXW/OfTO2HTdYkb+S5 R3JPixzPUAl6BEha4336Gcq7bdKYXtx4486cqR0pXC9NcyfPpTdhfk30Sm0XY2iCH2gGEfqoQjqk iERAH8esgtTEaY1mZtYjDcb0Saxcm2Rs1nUl+OaOa+OspeWFXNY7tfS/nIwBLLNiY0IHK5AhW3QJ 83LQRDYyqcmSSnARMjl3zMfe+5x95DJPsk7kbgw+T94ZKVAPMX1AmL7hQKBQKa0Ruktdd4/gFThg l2faHD5OPP00n21kPbByy9MU9Z2/RKbKd0lk9Y/1//bXopp4HXs7Oov7vo5fxLBnh5QLtfzFyjPu HH0fbJTGI/vLAxY/ppLFtRGyoJ5vgsMrFtVfJW83lZTWry5GLWNTThZNVQGT8yochlQhWVCHE2bS gGh9iIf8AVhTkH6uAH7cbqE1qeNxCgoCqTrMcA0ZiwRENBXoDkaHg3F68TAk8uzmo7LbrUXFftOI Z1VUVF2YdidxDBCBKhsaBy34W/OoTFRb9/TVcUmSKzINNhZHadHRSm5OpL6eWJwnCd8+XVGz58BJ JSlZWW0tlSYMSXmc8NV4I+qrPrMlFJnv93n48BMJw7M+iFEMloORZFKcAhxgTaR/JWSX5MYSKn/r 7f220qJKrEGQy4/uZ9ozL8Xn8sqUNhWLsxgruEfQdpZSQNJITGJtA/sXImBYpaSpJtFjFpGhMTTr J9f43ihzPrOk/i/Qmj/MbJkT4Uj0elcdHp9L6e52JJM6k8JJo8kOj+Y3MJE/iIqkkv3PLXCcCilH 30lGuXBPAUUZBz2505bvdDb877Zm3y8W8rV2rtJUUoUwA0MIFOqoZE4FyBB3Aabxd52G5ChibSDo EtZajlzQNyJBYzEl2cNW8QuQXfw7MAOUFIlc7jOoiqCYIIk4HiuAHEy57o8CaGgKIiJWkBobGmwE OvTCeSNsaMwaGS30a99rMl6OYSQzCej5Xe+zXnOlxY3686r5iQ9IY5VkSTGxFXBwlTjILkwbBsNL YzlrzwRv040z+ffn+KxqBoJLWhc7gM0dUp8WuREDhOGRs+TUPmh39cPH13Wo5srapdjRoWWMaGPf yRvwkjgCC0Ea2GxnYr/QDaLMLKPf/W3ff0Z+CiSF1MAOJUgrnlMMofMqaFUd4bc5yTaNr8VGqwnK wsDMJIq+neLCVUoMGQlHeLdJXcG43FlU20i3B2yz60xDT+RnSr3dNETUk4z0XuGjL5RXIvc8nOZ7 KJrtD6w75dhbAxMRKlIJAG+8KLgLqkSjQscNyWZ2FTyk/mbHqHsYNKaTe+NRT6XaV4J2Pee0dG3p Ik7ketJjwOB1HrcTgnpvBedl0h4z2Pz/rnzHZZ4ep+7ZxT//QsSNB4vyYRcT5kddMPUTbS/ul02X ZXfCjDrtxswah8XCk193YP1ekFD9MCVBQqBKgoVAlQUEoCJQKCV7WLSlqQcA3xOid0YsRoCy+hJ9 psnoHq7MVFxgZrTJ8n7NkdxQd5/xMDptg4eLn1itefd5bRRRRRRRIiIiIiIiIiIiIiIiIiIiIiCi uoNYiOdc972HAuH5dYaGjdVM0msP9Lgl8QgksLjbiExKgPiUb7BizcOtFO+pQYcrOUvCV6BWcVpt tthQ0gbi3KE2klcCcNtt2QsKAbYVnFRJN/R2c6mUEEZqXXpjR6GnWlc4rhgQys32WDHpAoOmmWi0 0zMu/jsbiOTfYFfNcrQc5sya4ra1mi5qYsvC5nNaWqzRk1daWt62ZN3WlrLDNHqN/ELmJW/sR60X eQqG7Lq4V0UUxhTLocVFpxMsqZ272+56eM3ZwctnocAkXVyRU0JHYElWDHBSyvPC47Y0gLboFBup fChot8pGb0NYNJSnMlExyY2ez0dvBGCWdW81v4G0ZFGG/hAoOHFBVwULgSoKFQJUFCoEqChUCVBQ qBKgoVAlQUKzo9cWwKi2z7Wv1/P40FNGMxqsygpnjz7Hf1p9zNLszs1z27UFM8tGmHsd7pFtA2Fe h5+MloxoGwjyRUzJq+WUgkytm6aVojK8Cg36FkMzpYEpsTaHApdVOvf30HXaCh2gSoKFQJUFCoEq ChUCVBQr35AfsvEAj+aCipdFFhBnM42Uqd27XeYcjUzp4ZmEjKRaMp0J3IFcvTDC+hJctA4FonpS PVhww9KgoesCVBQrvxwfCsFfoUuWVidXYd7fpq76R2YSjpJYxhpc5heDDLhQ1C04mMoahlqUuZtH DCsReDVwIUhwZBwpoh9dhzeq0yujCMshnPF2obE4h6vp0w7doKHe8N8KhyhhxRdJlkqup2Wu3nO2 /KRL43wo8A0Vcr3E5o94lgneJLh44p7WNsM3jrSWkzOHplXO8866KmFKY6lAYwxsyWQwyniVx1wd vB4CzkdM/HDt3djI4mHTu7+Uh4zLvsuLOxrsvjIJMtgcJGVd5SaTHk1NvM1uqIomiZUa4UhSFjvL q38sQ7BxxMnK2io4wRvYVsZ9xmy24mch1Jzi6csx5VrHOUdNJs9mvXfpIJMx0NMdHLJ7XsNmKhLS SLygMcCAk1ea/h9y6Y1rH37UpXJ6+caNwwxjCmcUOKi2xu3MfOK3QV4mwbCuta9QryPVeS923P8T y01Hn2Fko1q4YZ85jDW2p5psyVU5ReKtSab7xxuNoqrI5RzNabTylYlqIEd4ldgKfaXgGNHxiqJH RdmiyR8PpBQ+6BKgoVAlQUK5XC+7wgNC+5ohtI8XoFknvTWTUipPBtYqaOSkmwnq2DRsbgZg0oUS +KwiaRoo0B6xx4jwTMOSLgoYqlm6OzFCA5qgU0pSbQHndb2eDXly5yCTOXbfEfQXIU9nv1UNuFNk KHsLnxv7hAMZ9Pij0N1LOcTnYxyuqyaODCdE8gxBt4NRTNo1tAoNq1s7n066NfDu0eIYYxhTOKHF RacT+qd1WivWSqQqK2GCGhscd3TLC/SCh6dz7A0obKIq0DYFXDCC2qRcTXb7l9ETWjyi8lB5ik8W AS0imHuA3a9wZTPv+RZTqpeIwfok6o64FRQGg+9uI/HRI+TrQZZzUCUHZi74HYkCEgSQJIE743dh ZJw1HGnIrkC8vie0p39AIAwMlBej7k+rL8y31ulDHFJVKUNuJwORWKQT24KhMUpwVCYsq6FYqgqz BuIsWlesCJjhYqsu6RLbQ4iCY0SqCEppssbQOzgMqlGngjCQpUVdEtCcbCALQOLC4FKQIEgcju0U ToFsWtBg8vTZZWgVi1oM08Q7dWFonItCYpw8DfEQwGSnqghTltDSZKcsbdkiNN3G7FKPgfQsOYnP njslSprpCuQ7PMBcxIW36v2PXYjQrOoKJsnV8isTFVQVCqCuX40Hb0TaytEMpFEiG0Nhw9apRhdh VqYaeUctR2b2qxraDWsLm1pvDm744bVr3a9axbbMLCvU+bvkDo9iCxbGAL74Y6EF7QZRM8ft95eP JQOpIMkP6/XnfdE4DASSYDgSH4tRKMFg2k9MDGZUAXQu2FCG0csRxtBMUhA9sPo26tO5BMCagecO ANg4aktgRZbTCKOWPI6bkJcMVyAQZAuU98841gqdIemg5BCrpUlFlAsQRoPqRoSRSSNpI8casrcP AfaPVZi49s9peOZGDJDtDvKmJIzF7xrRqiTBsbQ0qWHs8tszCDfrQj1EatUwMIKzIsuF3sdYZDMw 49wX8gtC+AuBeF5XqqVJrlttt33th0cEDqeWhnSXHrz2VdKrHAKYmKEehTUjIQ0OyPRBd9+9SA0r RsGgwE/4H8UYd8VIY0dL05NZtIBx0CTBwGIQetMRWtwQWt9+KWLM04TQXpXoNjmgnOUxsdBdQL2F wEu0YmDL10ZfFmXNMqVcjwMVWkdnd5lk+ew3KSsgc++aWYE6ORs0FzEykMuYBBmTC6dVtW2MpFJs 7DCZQeDdO0fyC3EYmZr2+6ltwZpHcD4nbrZ6HQHmz14nFUqKCjRqCJkJ463765abuHsO3HUKG4EE SxuGGC1i8h09ZdHimAqHGHbN3RSmoFaF0TsMErZbB3lkGJ2qaEHxr8j600PI0hHwQ2wh7KqoSqCl 6SHSF4AaxMWIylaaU0LtWh56AMXa21Am0wHoRY3Mh+LmymlDlu4gBLMV5cuAryJfWiMqmeLw4gA9 NsDTmZcNJNp4BappsI4/smsPyUG9KJAMZDxbECVJBcRckIEg2IKlUFNjaayroqXSQkurEIEbgy00 o69ykCog2QdirKYMPY4iUGNNIoYXc1xLvXB4x9HKAYM488nlHUnR6PiZxny5hazAnHDKQuzgE3dj yviSQGQHoCAVAddGwZ42jPrKEGOxz0eja0R3nSa4ijgjikU+jrFDGJvfBwhqwRDj8JxhC+UgDlo4 VrV3XwwImVukBwEhGBKw7rE3zLBbGemWLrvsLdcF8vfAYZNLkiQkgzlkO4e+MM4ezbW5gTmPh+LO H8nmWztLepvN5s+zjQ2bfOzUSR00Ya297yB6YUNjoTDRIewP0hiMJsqqjSWLBBMQVGIDXTSe+G0g ng5yoah6e3n3ef28UXySLrACwFiYlCEqnHIMbaUUTYjnDtXgC4OqkHUXdfDezz29waQvETOITtll jI4ZwAvDwfVkDIHDhw4cSSSSSzGZZjMkkkkkkkkkkkKrKSSSSGUkkkkkkkkkkkMpIZSSQykkkkkn FViqgVoAmAYhQCJSEYqts2mpKijaxrbFRAYqYGLAQyyxCPaCaFTBHATBUwUTvQNGHeR7/UqP4QiR GQhYhHbIxNr72T6j8GBXwz7KKk9d2YWGlpItgVTuQu2jGaJC++HlN0TaE2IZ8hF7ejFpgRpFrTjJ hxolIAtoOWjk4OKA1VBqwMNoMhIZWESS+CyuaHtJPEhbpzkkh6SfIOaTEGSReyqPdm8zxKBWpCGx 1XhLS+iKFYwHJvsxEEioDP2AYCmBRfCYzMJjlo9CJCCZI678j2Bv3GoZhiLmx5WIeZfFHo0PW2PP acp0G5ltnLAKiNyiqMPwTw8ImvF64LTeYUczAlYTQu1jNWR8xElUUxMYmzOUtSIj8+D8z7mxB+Yj oFFndVsieCOShlmUwc2OetOX0Kgs013i2AG3xwXetipfj8ne+2e04pBYfe83KJShyjNqwCzJyKLv YxcjaYs7jaBU20DfKLkEMTGQGHPGUFBluqpd8V/dqfZnwNhwPUj0eOdVHYG2baaaQ2KoNilhXynj MqXlIvPCpMMFoFkLhMx5c9QRgVCyoWeSfdnmywp8GTAXk9nlma6Cl97VkLtSEAtT83f3u/2t3dtj fAT6h16jV2D0RHV3petbVS4iUUTSt1YzdmtIwolMKLu7sqQeOFSEz3uIqW+R2w/H31ifND3A81Eg 3HqFeUh1G4RHuadpTbivIHgRicQNKhyARYEd5QWgQsUDjKmysCMIB8ocDi8VeOtO4SSQ0kWoCJYy mXvzsgv4J1xUDSxGhQxIbpZOPkMyI1hViFhEsQYQ4zfm7r1LjrrppdLR2rn6e1dsWqkpzv6IdvD5 +7MwngqHQ9xZZ1mjI20jZilrJqSAh5qqO5BXSa9EsxX2FAVFCBiuTPUJiopKBctJngOZbYFLewfq HDJAIrFoaY02dkWFv27DY+QkbcXjzN18XdoxagDbaSImb4c7venV2fmh48cmxvVEm7nncoU+HZCF fKEK5wNcKufLTN4H4zhleJTWFK770mBAXBEB6RBNLF2sYeZK3KeNUr+SD0MDYkewIYdCrv7Uc5Dw 9KEh7OFGUpEwkG0uQ0TNssh/nsc8Xa0nyiSksh1cjYx47JwcHiUNPOeLo6lipOr0hzBp2bGDA6c9 optreiX2c9yiq5hsR7isMBTx2EyyhSTTKOW+17MKYFsp376kA22uGM6hGVw7OKuq2liWJZTr7fb2 87MKDFxEFj2XARuBJXLVjBNyoIUeQa7gnLBAu1opKeuGnbWDQHXzzfqR6js8Zjv0EeRKCdRQTBhG EiviBXmcHO3bwgjrvf0yMqHFhGR6XoGAYcjWLBYGGxiQkkXBaNJmwRhgahWbR5vkpJBkhGCymZyM nU2bn19Qxg6zxdZURT1LFLJKyqsjAkklJIaIomifUXHZwJRWNYK4yUIeSQQyicJMhIN1qImNpA0J PQ4YZikbqvhKTnWAp2dDhcsoCUrzYRv3u79Oea2087LDt48AJeisLQCY0j4SUwYF8IoRMZiRJgIs YEzyzFazJFtd9xabu6ntFHiXFlGscKPN4rO8fHDrGJwzaFTK9RSZMBwkAdzS9azy3whHXjn9lVka C3SPRu39/MwtyHCDUuzA7ojLcsmi7Sb3NBUgHicjJyDmqN06gxTHx54gnkMXj1kekbIsMysZIwsk aZ0WhWkxmmThS63qeURKQKdz2BqsB5TcKpNInvnGfb5mPoz8AXiCaSSkqBgsshCISgSIxIiaBJc9 18MpfJxr7um+wsdyyDKOykxh2AVQDag5MbUOC0e+cEgiNuZmLtDP2i17LgFASyFIUSk0O4efexoq ldHZxO5QZtA9Jm++/phS7uVIniYpdiSGgyyrsgSCsPVwZI5rzQPQkegTcTcJnVHetNNDUtujYkvQ zQuucnJqkfoL0uDPSLnC/mLiqpLKLneHHsLsDbjmu/rdzyXQ6xY5mAzNgx5bghLevPrFZrPFlp7b hZ1hiZluLev3JcB3DznXOeozsJV4bkI9Wa2qqjLwtLg9XopoUys547/d6PzYdUuSRwSMCSTRAhDQ SBkoQe6K7KmiRGHRLBAYqUqUiMi6WCBWVfGC+/18BXZ854ywXoi6G6Ko3RW94BiaRaVgkqhVDFZa CO1aBKmUQgW02Sy2USm0oCWPhU7Du9t6684Mm25e93TrDMKGgMyMx2dgwhkYhQwFSEclSliRiAWl SNi0xlasCOICqp1TbioaCEqmODVyBU1qgN45EIYbWAT7a/L7aw0cMs6R7q1gFu9Eb77b+nc3jXP0 i0hyLAlGkooKY0W0eP39Z+nehfjZ2awYk7UTG5K/FLZY0uB6s2/p+vQdk8oA3IVIl5SkSGpJOV2Z ibsq06u1rpS67GRsJyIKE+KKFeU8N+Hp2XRAxTEpDIdly82wJkNJqpEOuEWlWgOXLblsm4SNCpNF QwShoAaHIBBhGZlmYAYhtJHLE7aHgnkn5p3+qym2/ztboOeoRtkjOa6DQ5OvEn38kjAYZO9eWUzh fKV28ZBpAYs3zK6VIJPBkMjUfrIFOOqjbbOxg+Pbtqrl8X9aXt4aO2LEmoyzj4t82Bdu7qDSqFIU opxlKeCDzZKBopocE4BBDE1KKbHxO66WymXda2cTV1pVl3a7rroVHNc3Kru7XO1MwmBMhQLDCjkI JQrRQKFAqYKkK9vTY1FEkEMEJRSUSiUkVI/E7mPaPZMkc8V+m/c+8yZZUrLMDSxMNUrMmZCMpiKR tsQUTNFUimpopYqv5KNy1GxRImSo1EapNLS1BZlIMJLCVIURKQ2lS5rVzV01nbdoxkVEzE0YUqil laauu5iNEjpdRZLNEzLKbFsxty3KxrUaRltd1LCmAWZQGkVIR/RAGfv/p0IlOgHz+LTpFOsFfkEL W2UJEGFRXFQ13dFd3S502tKxiDMYh7SFE78XKgmH9uBiDJEERQDKmppRA2ZlH8G2fLwaH7Dv4kg4 tqRVtENt/gH1/J8c66j2eg+wezr65DrBDtlF6QgPrIDRQwUqwl5fBP9YP+kAfjn+U/5yf+3/T8H6 Pq3ovpm2r//t1p24v8HVI/4X/lyZCGuaDw6d8NI/82YNbbyNmOayK3mC/47q7QTKu71xhbH5n+Ki WwkL/bOco/9moxf+/4uyQ237YR+IPSmg/LAe+Efwr3N9fG8nH4s7EdkJ0OtFp0bdXOORJH3v4cOX UizFqyWnCSNabmyattO53do29VKGx1YocVIaWiFcgRciSaYknj8xEXqflX1k1NoyRkMbUDeE0p4Y izGF9UX+usNkbCdXOds0KJJgVjL+WkjP8u/8e5ReuIoiK/h7+H10vz37PAAAFAAIfCdiTuysYhi5 MhhFeK30OjQYP4oQvNn9/CjnxXXEWZMkNZDTNsokCMbFqKzksobbY22zi/h42/KJpQI4j0aZEmZy LmGGVskUTg51Y5Mi0ASL4vN4oEbJFfH7Wqe/H133hiMGLtOzur1yaZ0eVvhSmVYegkTG6QOThER1 ghUUOAOwqgCGzasNhgBREncoEcY2UUIiaUIRC2QDlYLnjx41lEpfZgYgYBuo3I1GjLU2RxQJE5to Y0cbeeRCWgYgVXCMAWsjZ75EZ6+/84c7RcOemJQxxli46YWwoWlhlnd4pTdMrkrs50DSnGJBp+g4 dPGt1PHbRlP03lcmoLt0UjykIyRF6Ejj24iRx+s4cjmh9tlVrIwQBYmq6q0hLnhbI90HlB5aSDQu YKm9v5H2qsz4AAq+VLLLLLQwwwwww8QcHBhgTcUj8EDaP/RidBJZEwqJatl5EmCcpILwVqQjX0b3 Dx+5D0eR1nURJbIksIk6HyMdleRPNEr6CtDKX84wUKFFDwcS+HZ3eTXbj/BephX8FSf1pMYFV1LP Xf4TMMP7TIThfl+ny+LPeUi3ngv5frzPxcE4BWA0SNXSiEIN/WIwlgEACNDPG/h/CDQa7+Jv5cpU SOqoUqJeiDLtlDD+V9MvqFHL01XLZ+IezJ/O5enu3vtriinvVGjMfM1675X5pzy9G+JfsWN598iu w0znP73B7V1DhkbfaFo9F2o0Qhze7mW/7Vq/L/OGB4TbbGNkk+50qTNetlMtJw9LtoM3I9YpF59N sse7TW9FQICTYzqmoefGLufF8VVW6vzCVPOqqESREITEl5N2E1BpE867YIopXT+pw+IXXg+G9PtO mnWvgXC0DRbdRnURTW23qJIl4HLZQd3iLafpXqlNx2NxKSkoUzKqxy46YK/tlolvxti3N4ibBzC/ fLv163znXjjLP0Kua7yFd6oskO1rdB2zwl3SzOCN0QjPcH7gdjNFrz61FR5EAeBgHgDt0t+Hudtc Z6TKzK3+e4F5WiK3RonxtGNHgwrc/f92mO2RXMUQ3pi5zzK5St7t24yK5BhwnkllnPbF8dIu+/U4 L4L445tPXJN+mGV2VGu3OUgwYmks4nskuNUbrR2JFaVc3znc+Pf1eu+xBvpgzoY14rXWGgYMCu+d 9zpMuM2VsfcCwuc0UNY9NLm0by1wSXY1TuU5Qt8wqbzs+z1I+urJHwGQOupVc9t7N8a4GuL4HpbH ELpVQhVS1BJVqXPGszHONmVvi2YRObctwGSF3tBfAhBZo8xiR7wYjbbXIRGSxgJskp9pD9jXaYcV 6ecg9AvCiSYbw2zB8iQSWBAlIhrmMj/nQqc3zJHsPfODOI5s2koQRX4wmFc2oq2xttgJGNW6D4aS NQkS+FCtCp/lpKXqhPqs+ck5OyR6LOX78lJsqq+LI9RseVJyzE0aG5BjbG1sCyEibiJsu0hEUmRU mztFLRVZuxqZMtqAHoYCwa7gZDn3h1tJDbY0C1EkNpi32vXllVDYAYwHnPEIy574cOapFVSpwxUi JLorPNmLq+N/Ope1x1wa9d8qvQf49k88E9KoqqoqqoquoVk73D5lH5fbo57b52Hd1KD2IzPy88m/ Ow9Ds+SnQMOY2xNBDEWKkliWfKEZiMYqSwRojKLbtKIIBLb9AXfevO+u7Wt6ZTJuKON+GJ7HPGpE bIIxZdOQZXOmwks+joqDZjIJRZxF8H6V8g6Cg2Oex9e8LZ6uETCrEym08JtHzTSzYkeDyV08Obfw ZQUzCgoovmaZKUrMacobEWLoOp9xXoU2RUeCJKKGD06iRq2E5nRZU6Knx62KM6trW5J0OEJMULbZ 2NOdJ7FSWNpGSNpOzBT/9zXVnAwwbbg9owJVxeMDY7863yP1pg4EaZEBjuDIyUEWoDaVIhg1pI+e QbWgPwkEJXYgABSgAAAAAAAAAAAAOw/izUMdHk7zW5+dxtsbbaQjaFcqPV23tt/R93b6ZKn18W6m VD8TQkW3xscOJdc5FH7racrYOIQOcm6t6uJayjLvgtpEYVvhYq8VAb3vb85b83Pg+Xg0WURkcRCN vlDR8OjA3CaEjZnGirKpc1morntxue1Yafa8y+J8+TY8G5p2/tetNt65d3dboKbpxOUBDlR0dnRt tvMh4z6G83brale4A56SwGpcFWW7d34w5ksDfc9OUVQcC5rpfCCY852DAsGVgkjgB6yAeXZgGwYH LASWWtKQTrpunE4s/X6JcnEm/kWzhj8kGc9rNtAH8wfth2AX4bACoAP29s8igY4f5wOUBohNJaHd BXt3GJ6PAo293Z3QPuhXcCv62O54wkz4p2vy5qPnEDSQWBh0Bnx+yCR4+WWYR5cM/Sw4d3WE9EGV gU1NTbCoJiWgkufYRNr03CF4G6R6gKgQC6u4cyya+pkMTabj428MOekEYBBHx7+a1tkFtC5gfB2M p9LwTEeEJEdoLN4jbbhqnY7oOrq22g7PhJVzgqZZ5IgppjSoCRGFHVKDBptGGT4OCO4aF9SDxZ+4 PrwyT39nVTMYqphZOPHHynDmepadHv0O8YdE085kh2aiHRQn5NZW9+vbkaaHxky67Sc3i1yR46SG e3waHIaSyIDcHBhPqmYXKaYTUk7CtqjvPiZvftfQC3oE8cAObbTGByOS3ah4h0DixI3nfAJfOze0 MDJXaOByCmamaaI0KM1KCICuNCRdQtxDcJVHrxkBDOTMWVYGeB44OJgSz6nwpE+PffBl1iz7Dwmf UNG2uwGsRplEcD4f2ySk39PAdyPUacg2Se1FMkKqSSEkggJa6mkgqVRUO7lex78qvRgSci4okOAL wQIjfhCJDrChd6+rAxYV3cZCyf3gXK0JAdfwbzTDTSLtrGXCTy4H8996r0P6A9M55scf1Zbx3NM5 fJxn0+hrDFnYSHaQ1Blm6MnbNt2pn2vwB3Kkhd0Jkbmv3uc2qoJ6tZZUPGEhZyhLj7IQhBISNGAH mNCDdp+k64v0dO7wnv7NN0sJb+t+XOkscHDxj2aWoRnS9pFjTCc64mtNsCKGSet8UOl3Tr8mt1bc lXN4277/Ptyfznnfe+WsfVE7ac4I3o4TyNbNMh6K9oItlrz06pHR9zPUISGAKiQKYLKh2f+xGDhv wPcDthF0nP+bQuS+Igb2HVt1L/gbjNB6e/uDQ/1AC2wuPwTDTJLHsH/rg3oNyeAjEcxtIxwt070j gBX+wSTSEWG/CvexAoEeuahMkZ0kSKR8TPNomNgwnWJxYPkfq1ierwA6GGIpYtg8HwPfJidBwnuk hSdJVUqDEnY4+TJny27XFbQKXA85SfWNJHZYh90tK5bilcHa05k22sJY7E26NvscJrKtrZxyqsmr MUIiCrBkUkGrKY2qOnM9GVKH+SeNxoGuGEaCHG+b517rfW+QiCECB+tiIIQIXynm9fpU8mUddwdY wOQY7B0A4Bl9WPESNEI6tFON9XF3E4Jl5o6HUyb9jTRXRhvxZGoV5vk6advd6jQKbzTFBixAUSQx IDYSRTGdtqV552zsZ6PA0ajLVS3j7mnujZlGtiODlmNkyHugJ8WZWCQ1V0F0hjduWDvg8a4EkwSC iSISQ0kQJLUtmsFxyOa58ii1CQ0GAWrLVT563N4BlhdpIx+TqWzy0NAcPDQMLLJgfCAwLM4heuPV ZRz0zORs+BgXktjU4JgSymSUT8+qzh426IBkS2HqSMYxn5wIvYC+LAuTGMTuN63FhNAzKoVmdPYB XMPaUOwcgeCsxpsR1YtgO6aolNQ01zMSlCYwYwNqiateTbpQZJNwcTru4OIccZcKivdZdZ9c1U4f y0sw4KqkinAxktHFARpQMYKZMKBz6C4HhXgb+fouV8jLdg1s90EKTUdAIYMYW+VbyghgabD4c73K hwCpgUX/UHkFESoFFHWeFw1ka1F7KbyUyGTPADQNAmWuGJnONShktzHnww60EEI4TN3aHpCmuEwy 5yMGV4mcgkImncMokU5yhyye/ahzTIQhMCjaYUqhpA1vlIyVnoT8WI8Rm9hx+F4355FQayhFUSSk kNEUTRPlkOXr4a59uD7geGCea6ON7EiaSMkks5KFbdmzeUSRx4q2HSRKDl4/Dfs5VOU6Z6A+oxc3 VxttjjQnOCI9BKlEPlynypAPbhjiMf5WcZ18dZxxju7q8zOxd3fye+ZR3nAVrWnlfLdlKtayrWu7 jEtRl73veFTCtZ1rgTZEbpJKG6jqSVnXXPTw7/bQa3Hydd+1VVFSqqqclSpHUqqqhyu5229vFJNf IGtM20eOUDpkoGimh8BU2X2vAgj5jD3jQYBBoMB0DCnWbj113ngfEK+HrfSnhn0B8nd7Xaw5drbq PU+Tl5o9L2sYxkKKGXLma36Oluo9vVMbs+x6zg0b9q5J2qq29OHphWf7j0a8HpuU8TP9i5WDMfMO v3hJVfAIoIAzO3qluQdQ1M7nAsUHIl2P5pzlUKEu7m3icfEPSVFmYkEGXdATNwoMtAmDBjFyg1bY Jnv29b+HqlnU6HZ0RAB7B+L2OHQHiAlgLcJdPZwwuKj6bfN0wcYykpcIRYzpK5DzDY75HUbmG/nP dvpLavjLPoe+MCuVfBM5vZl8CN3AgcRO8V219mj9WRhLsjpOFViRFJcuHLPxw7q+2VjlkL4ulJLo 9zlt0fEJouxfEe89qiSOpoyE8TJ5vWcp9HHj0HSwzwyZFPXXS+/zxHoseB0mKU6DAkuRO/w/pz7b 2deK7Prwds3mxk7/lrbNayqhuq9b+vSz6/FfZfGRc+l1y2NrY/fxCsmT14njzYeuo/pNnqBF07bb bbfcZ1vqlpkCp45ODojBtuzi2xetkKgHtNI7p096tS3Q5DTFB6AkDgsUrEiVbM2ak5PIc2t23Qkr TR646jzSpIkxVNxI1eiNdSFm0pgEuYEIJt84PgddrFMo4gBYwK22fJ6Xyca8SFOXCNVhAlXA4kmN cH//TtItEnI3XnjfwCbGSYWO1ShBXVelmrXOuJuixh6o6yfxdtJdKz4djxAz3r2GEdxiesuE94TK DOELB5LBYLI6TUiOcvdy6aGErdksWs3LJuj7aTeHbgqNIKB8bnlHl+eiFlnlfc/Wul5VWVqe2Ugn r6a36Ku5mFmU2ArKeea1OFEeA+Bfr2X4eklD0IOmq2eXu54hfJ9RQxn6B6CsVGyjvEQSLnA6FAMw MKlk/gPTKJEnikTMZAZLJYUsUNB731apTCCSAzMoFAUDERxGHkLEREREeeMA3rcY147Sp6HY0HVa 7MpaZwpF2tWo1ioUUYUxInLKkovjOutebm8QM+3MyqlkcfC1TOstYiIs5AVifVZtm8CbE22rjHMn qdj1DBrrij62bOWKDQ+cA947QqsztqqzXDbWENPmtWittOnSlcs4xoRFqSyfV7tYC16jpOEcop6/ LyGa9N+CNUJPgCLSHxyI9UiNHb0ez0pJsHt0tWsjMYTMYzGTMYnRESyB6L6X0Mnq+MyPHtBsujVA dmLuESRoSX6EGBefOJUdwI6nZfUpi4odFEqUTUe5inDg6mGBaF7mGUFUs1YYiGIODSUBsKOzk+xn If1vDGURGIUsnEpRIGwqme5b/h3wCV8OIdGiJ8KwQVrC6+h91qcWUk+mIWVKU+1qTxjHyrRYWFLE QlMEkGOvPO9mp17eMjqVEa1kjRURROG27yLEiVAWJiSebWjOeARS4wD4Ki0zp4e5wMfF0XqlgiKc G04UgoXYuWDGWJdEJYWDGMIb0Z2EIiKlI6Zil6NXgsZHN3KPBgDTCrRg8XRC4tVTch8HAdMVMBeE eE+hYeNZguNjk7WRLgXOnFw0MvtdrLjyVUZohWWygy6pst4FU6NS2rwkfBVcPa1rLYOhlvgqIRcw qxUdb24cUNyZmiDONmKjyMNTawwssuNUzucwpqXVjUrIsyhwrAjYTGogiyORoonQcHTubmO2BTkz BknOTS1IclEyT9rfgCIk344HCMgF4V2Eu4dUW31EXQjY0qZiTPCSJwkfGh2mB0MtGI52aXpwRFh0 M1ULRQwgUdJEaRE7w7xQUbC7TtdOmX13t+Hr1Xsa0V3366ZBkGRa43J/U46F5nSjVgUwZwHXzmNd mVq/VKkMmqkpLa/NNFroi5OQ5CYncziPfKZw4SadeRT2h34RkllfL5Js2ZGpK1+MqS/ASIYNALd+ /mkpMzogJCP3fo/wiQ4vKauVdCh5SDGaBJCUEa/N0zk8i66tFESflUYQP7Az1BIL94R+5/Rge2+l gFUVKHwe58fzGmdnAfgn0/iWdInCPMVAdQD/H+zcB2Mv7/XEj55auW76a8aULziUOQ6zgrZ+iofD XbfBzyyibZeNy2Pqehrgw1w4Q/dvm9Pje3Fd9tc/0HjzKQ9EHydsCdVr47Fl60a3ll5XV2/TUfHW y09JxuQhDejU6P03or936fE35VLW3Xz3xppuOpfZWGKlTC9/lN17FSL1JWa4ve673nkHDiCqZcsZ KgbjjjQoSk9b/i7bh+n7xv+3fu+3H/SV+f7pXcuYXvY/7/77/oKf24aP9+2FbVKYO+4Djy7PMJ/o Ow8O4mBSOnTp3f3Wv8a5HDh15acq9nGRh1jsL3qFz/N1BP3Z4Yd/XL5DE/i/b+dIR8p096Z8nyiS 8zvTD3rwXxpJSDYSW/f8MayN66QBN24lxBiHvto0WYtcDoh0OnHS9Kj+X/ULF+EONfY/B0dF4Kof gWHztnUOjkrV7Aoc6/OGQbA0NyDVGYRgE2IhbgX7IMH6UjoVDL40tA1DgG3+X8NQ8iv1DDgBZoGx JcIEl4GYkI7hjAZLkemp2buBABUK0mvGDmBVVf4JiR4LsNBSXCe8V6yPLON6STFM7AxAZzPcfGfE fEpK4b0wOXGySWfhCBEmpDQe7p5cTgZHYHUgCxvNgZMyJn6C/iM4xDIMiDs3Ug4B2+DzqxDNg32P ixxD4CBz27mi6ouveZhQAyXepNtqkrk96eZEKGm2JjQ3HvVEJMWRXEoSOYbzImXPSAoPCeHOco8J KaVRIEUECgy0OU1PdxCXk9dW6zmCY/uuirpA3R66qq4rmFiGigJMpJWUumU6tu+H9RO63dx3dzjj 8bPbaA2IwRvbBhUjBoeuvq0IXWDUXAqKqouFmYZOQ9A5I9YMmxpt6BJUKJ9w6zy5wb+D9n/HDUnE ifBnwQfQ/uI8irGdidKBW15yykSFuSrhJVqJVrKhxZTLcBsbG6G5ExqSRwYe2j176un2vjFGlLc0 FFwKCkq5gj2XgqF4kQ71QwD4unvKhsT3vP9cN8VtL/5Hv+DSpnRf7Lsher9E/5HQeUUASJBUmUUg 4OiVFT8aCfKgmefvVfWepzShUzQTUUEoe6YBSGYQ4iGKGEcQEu8mI3wCPv9U0g+bneVGRV3ZSXzq Hk3I8sA7XMZWUpFMvS5U7c8+7PDb7Vtkj1Z5cs8UuJGnZ0MfLnrAzyWFMHIQbdctbK5KpNsfQQxV YS0XIFDC7iCEu5jxlpW7++q1PeILvDTD9jSW49YxppQ3EAxpZFGxx44E7C4QvWbrBKGPAaKN23XY d21O5pDRG+3bk1wOH3HxnyKRB/b5RD+QH6fxxDjzSbOndMM+nifXynSCFwuHfw6vXkoVAKQhsqyD kKHAQ5RxRDZkUxhkO8sU6OWUxmOPo5aETbnjhG8hYRB3diqySrHwxh8aSD84e+EkJEybgFB7D5a3 lPB4I/czB+EoAoSYiEgij58u20aLEOioaFNAmmcjAH8IPIwV0bRUMpNEUQZGGBg4RNVRctrRc/w7 7KtyERfhVCERZUP6Eh91FJFJFMwcGGGGGGHkYOIp+36dzcDpeFyO0zctzT0UP74ReskSmogACgCl T6YB8UAOEBqQmKEoZRYEMJoOY/yVkU/r0iCbQKHikQ6vF16BvLghSu0nmjUnBJ294BTsXtA2YmaS NZJ/sT3RacC5mGCxn6zGPq0GqErd6jPeWzUxIsl4O2ftO7MD7PPfjgZ5JHq8cVk0JYnZhk+HUjs/ gC8jZ153lZhRgoaC+Ig0mL6Mg1evtrx+2SkMOtb3e2ld6oMt4R88LNQYi9QfiAkgImNfJII6X8Hn tppWctOwFquR/B8QaCDxEq1QZLDuO5qAMAKmB3nKYVXdpLc/JqiYfAhBshBwtPg797HcrVO5XxV7 bxcikkcVPnrCpOab5QcuAHoOigmDOJDfcQOoLaYkkYds+EbabUHRyxQvShV1eJ6PqQhE8Zgary9A LKZXc4vsLntf8up1xuy22/jZQbzpuqUuBggbvQFCEil9cuzswCMTH2h7UL3q+ZaT/nGdz1xIM63n 1uja7ajiBDlMnmbKYy6b8Ayqlk89YCr04m7p49327TtqR8I/q4C4vjyLEkHEpxRGDaY4rEDOCR7f n/LJE8txk9w5o211MJ+2Wt+j9OrKvEeXYZTxRX25o0Orv84YaK7P3ffbv78rOnq07Xi95nzvdIeV CiJQqRVzieGJJMJbnKW3olND68iS02tbe3J0y2gMwZluqwlKvwepAjOlMsAkF/ioIftY2fExQ0Qm bqVMdEAO5Ltc5cy52zdopyTyv07dq7bejKp8hrpeu3d8+fN8yZSDmkrScwtdTWK45Xyp7a2epyxS rtTYfp3V+3fhbk+oDF0piQfSHlwOhIG3/D/Q11K7TiwhEK8+3AQ0CsiQP+XW+vF/Q77uc8PPDn9H r49W+1Zf6cK2FqVRFmtaGv7cHcSS+NRtbViDgScY98g2CjaUMSKGkVf5QXgiP2n3/dDof2AehGPt QAP61Qf50MClFDmwCve5FBYqGgzAV++/YzE/n0OH7wjsqaJJpSdXNnW3SR071a5gb0sd+skZwsw2 hUnSWRE27Jo4YDYcgpzBtJtsKBUQVUU6ZVSqhAbTYxgxieswlHYEtrfTsQWB2gRCOg3s1j23x6CS Uy5j7AB0Kg6BBfYRy6wKBwmPAxOMxUmoLZAN9zbo6zaEpNiQ34ohHWxVVUFCVTMEOcjZo41bdfSx A7E6zA2uyy34HckgBB+1pIELbH++Ddne8Q5TydPwuBB+n8ioNKJBxvOv17pzozq0L6WI0yhzg+Ay P45B84GoAZS7wx+yXbEK/AxVzdcKmYRuArCJ/nTnz3wdv2YFsymS4vV1qW0W5UhKug+T++uDZb+u R8VhC7iZT+bo+LSxjoaVvdlhRpxnvlUMaC26oIUx+mQ5fd1xG799m3xp6g2e8xoC+ILTr75TDba9 nTGzGWwOa7K0SlslsDxpO+uSJ0o5cnBviTdXwiqs9fbgz0e2aCMTZPsQ5Dh0BTbY74/t6ozgU0cQ nT0mWw+O+9BabE2D93G2X8JdK1cNLCqNNtusQDYm2NmcIrW8kK0QPODF1YWV2oDLVkBJ2cUI7sTn LuxD88jhjnapgfMwa9m2QbNTvtl0G6CqvasBjGL6zcQemLh8BYQaTDc+lEaG+jKLpOBTb30hHN9X Eoh9HyZ0dnPlG05kkMKQNm0o2e5k32cC3DKlLIICjAwqjVfy5/unVow3SkYRF2qSShkMJd1JHY8u pbuiIN0cHZmXZTTrSSrWUMiursu4KU3OOwU1fXyX2blr8DooWML2cfBwDTW6kGyYV7+22jekZQDc lIaJcpQ5xtuWNHNoorTiWX1xOWuJG386o7jQT4esKbTPEW3vK+xpn48avLypZir3XakdiY01VDtw 0bybwZdITrgDbbAOyJUAfjmlTDGgySseicZNGPoirfsz4JnLbTYBkZwbtYtrXMg5RT98c0DS74Ig xghnRpFxhqegrIMB4sk5AOCGQy0HAdt/CSSKJoW+8FRgxmTPC3tlFOIRxMCkMtnJSGwsH4fsZ49+ +I9k0W31PMOmN00ul7VWi6GrWTjIyaTU9eHNev1+Gh4RQ4q0tnpaM+PQwIevGX8j8f3EvUf3v+b4 Z/zf40/otVxKt/0ypP4so4CT2yI+9I97Hrfb1FeXjrf3z0IZB5pEswiVojFV03Z2uuq5a119L2Zp mVoPkNj2/x1724646NEQFXw/1XDj7+/+PZy9DQa76/G1OTNmsTOUryJqU/TAXl7CR7ATCXTDtTP5 v0ZlqdaN2F30WJl9goIZmoy/mzTo1xMsj8AwjB77gFG2H6cwriH8XvZH44QQb5Wnso57Sw5qXVnb Ow0o6uAu2JjGsWocNiTUI+AbXqdc5TqNg7zRkdbB5NK4M2jQHcOYLqElgyrbWTKv/MeB2dMveOqX BD7BtjevRxgaEJG8tpsp9X1gZ3yA0qoDJriZHE6hNNIHjjG5rmAPBooNkgKYzzrGk86kIvsqgGar JSrWRKhGOfWmPXntMDurhgTJPppFcsgiD9dcWHXkXqfOpyWZwcrYu/G/1TAKm4+j6sPn7TbgsfnG inHLPvxjfFHjrBLC4HIGFZjsM8LRP6FfhjS5d9fnlLvnORqAahA0AwPIYEA04wtOGk8rCZObakDk khoWm6mw7/TebtahqIIAmzs74wqzSR3vLB7yQmycbEizkn098L1h9T7WR/OMahOqXLC+uKlRBzrz 2zDydhtw6yPKPb04y49t0CkwQR0xmeh4DU231dHN8vRUbG7appFQIifdFup6uPQSfZXngzDJjnpN LRUlTSHrWdtGHEyjOJ5ztDYgi8TZCwRJUQSVt1HDhZZg605GRgM8iagf7ayOtqYBIypXCKqiV6S8 L4qriPAIDAEWA72GVdcbyGmlDR3sLnApJLlrvhisTabUohidZWBjF6NdeqIVfCOS4Gj+/lqgbB/l MhfecHejpl061PhPMKqp1cnaAPDSArjHrayxl61icLhWSDDUZrIiozemd7jBkZ53Bt3qoj8ZFBoG A9rPT+bM9mlknJVawMvVvqlHtcabenragUfGUBFNK+RFNL8XImNtN1cqQi9PmfqVZt+giURImW6y j4Gs3/TjFsPTyxnTHdqkekbBEmQC4l91kBVDQ2DD4Jwg9m7m+/vOnPtuvSB8buk0d2aGUxpi8VGj hELabB1FppwqmcVFxA+wxB2pVm2JrL368X6/m8Wb3qmq3foDzKYfY8+BPT1qm1GafwrHTG5hTTRS Z9bGXBGvaVk8oH7eKEq/NXvtOQpwW3PdSYhEO/SMc4NuZOUvG9WTUNLJ7V8b854zN2vk0W6fzevV z8H0zbL8TtmVjr0j9vteprr10oTwABoS0chgiHeNjPkkh0AN1cpAnnHrXloUTiCe/B5CVj37wLBg JlB9QEQZpapSoNpgaBBdwLSGl9/ouM0IU8xSElzEltUs9IiE8xhASElYDycQeoGUlMFYV2UVPRzq qqq8i6F3EVhR2unWPTROYXdox5ZkdI115ejwZl5TD2kRcajPsrdlPm9U1tapgzevqnhciOUVafoF SSpFJLrkTythiY6t9+kvU4lXdaZDcOMYMVWcDD1OCmHtiN4brr0DICbWZq5lzPtGPqygPU4j9LJ0 VRtYhpoNgzHtjUcGmqwNenzqmPmB+IW+Wnfdkrsn0qh2DGcoyFiT0jrQ0YU5yBB1BHahCokjRJFl Ar3LpEfJ1IjpdlPO9+He9T/kkQEDESU2nj0jMyMaiJtYqJ8FiMkAH5dlUwYViFYgSAGEFNLtrprb W+vy+HNwxBEBzibvSNRawy5M62VNtDoYdpyiHHBfGCEsMvjiKSqoNjZk1FBC7oYEMxMRAwQzFBG5 p0cttIaAhM3qqr9G7vCQMKJ6ljIPAHHbrTTp1cpBP8di1leCfkVZFkrCEASRELIMASaHQpISvXpJ JJJJJJJL229q8lZItSyJUtWJSrNh/AM4ZjYapSB0wK7jKkREqbQBEv54FUMkEKROOu//D7N+oC3j d8v6uho2gGtflV/rV9e3wG9S/B9VfOiToMMPhYBdCSIlAD2MciRyCzFmYdBTus3tidpIlhJrWSTd kDTWWyaIc3IilILLGyWJqhhYTcYrJhkSiwqKySdNa2cDg3SWq2zVnl+y+ly5axhYqSRWYyStlrLW W2XW3XSSV1JpHKwxlUhUMMM48cVDYINjIobHAQly1XrGiIP6V74ncAn429RIs/gREDbU6PTkRme6 B6hR9amuwD/B8oF5VV6+4A37JN9/B+Wr5ndS6aqqkpzmZNatUKaSpZgpo0bGGfhG2n0XY/iuqjbb 5SYQOFvbduVJCv1JaIJh8wQlDAqcVvpuEHC+W2fFkb3I21TDb6yNt5IINnDjDd/vWGqEEYgP5obN nBChUsgR6GqqyzCVAolZahZZ3SFh2rIOpu1ZcljqXZZccLKkG7otv7waM4bGOEGrDgt1V06q7Cwt bMhUVKo228w41u3ezcNLZuWnSr4okVFRSVFiQEIUXBWIViBJVJVA5oCOCnmJpW9v49M/lUCUABli Sn6vpd25JoknvN84H8hxJKWSUhWGV/Urv7TkfpQI1/+qqqqqIqKi+wbP+av7gOuUKBKRKUD/ar02 7hD9isKc/1B2myqG4fjPtV4Yr/1Bx7fK7qVsTkcHikst/I4qVhJvMIP5y6y3pAgWCSzxVUgZRBpU UQpEpElAWpqft6/c1r9YkAAAAGASJmAAASAB/YgAAAAAD+6tfv3q8bSf9kp/t9YY7f9UOklE7Pqz QfOA9ASAStAI0Ee8NsFQYxmdnC/IYGAj7T84hLD7/0I4Y1QI6IItu4ky0hEYCRZ1ePCE06xO3FF/ LSlQbcalpKIIQ/g62khA62Q4RSZSpPCeU6b6PIapkqkpghEvwBQYquAyofjRPD3xRBn35J1kQxCA f1e+Cfom3lXu8rrT2Uy5S+jDiz8ndImHFSukkZIflCOhj9s4EA83888B8H0vUeb9inoNw7Gim5Em SMz1LllCakMIHUZCYwdJHGS3y67Pnbss2mmihV15Yu1eX6/bvNvl4sAAD2213W9ppRmtNCzMiFWR isVJlSm+GFu63GrG7NUibsiWwiUMKDAecPYdgSMpCSBLNRVUE00gAAGAJKUAUYmwAABJIUkkwQ20 20QEJtptolWaqGhptkWGGJj5+p/YQ7xLB11/AYyx+j3n8R/+SeuSai/Jw4/F8kNlfvfOkr0F8ZFI B1+7CvU2m/0UMFqv6oAABW0q2k/l67fqaXs1p1sZJSUSn/jKpq+4SZM2xosQWR1mVSkpwgLMTRKc LJ1YhGAZGSxoIVyUTQTi21Tq1+vFXPZiLilsOsMpCwIOoQUV6iUQhgbxoIutHd4KAZx0IeKhfx7H mz1n6h/HbxyOAF0kjc0EmG6UJxCQFSzwqxCEvJU8q17cBJNu8EJJe4nK/zMGM1D7oMhAPPybg/0+ gSv2/2SbU3kHtzGtalP0aTBn3OMO6cAzDCNaDprgfsVfK4VjfLlAfC7IeNCrlx9wPj9dCYhLJCBk lBhNexXZXSv3varrtcOCvFXX58zfYE4EchQw5YEgGYIFGlZWNaEfzigd6dkDfYEfKcCaYxpHkeQL 6kBgeFDHXvfcNxD7YXcmRxQiRKCGmZxJvxtskpCyvB4wRkNB4sIfs/RCKD0bbQPz2Imx3cWG2WYS wiKkRj05obf5/8UC9y9ktj25sbf+20VuGh0x6c0Ns2wrUNDpj05obZywrUmia++B+f+p+H/7+3Px 3LuU6qU6qU6qU6qU6qU6qFOqqqqU6qFOqlOqqqqfxfrhyfolvb3uAj/P5SX+VINcrYla5q6UDFXk PX7D9QfzC8LirAY01HbY1Wo3AAAApgKDDCs0fN9e50V6lkD/HjxqqqqoioqIu5XtNYrAH6uzxgGw B4l6hf57orxJWFoMjcZwb0gGUMkkZiDGmpEpWjcknqaxwzOHk28YPuk+hUhpPoHsUiIYgJQgV/Pr 8RPsL1ziFEhl84M/XITyxA2nZG+X3sNsM+D5cy5wzUdnY/d/F+I+hAPw/mFyN94fZXtNNppYkTEy eacG4T2dVcnpJTjSRchVR0JKQwbaW1SxaoM1cuXNSO8m9t7bgZaZ3ttPek6pVRIlkV1UURRDFv24 K0K+ThcRXr/BlmFhZWYYYVm/hca6Wd8+Fl2SwR4cxRe7xCeXxn1ibm+ewX1fYZ6BCD7h8GlDsV9q vE8q9ArYtqWHdSGQ/ffcOjqCX4Vnrx660qaMwyY54arAVE8DS+Pxbp55Nuv8Yu9DDhT8o0sGsxRC +jBVJekeKkkIUz5Y9pkOaA+LX8Y+hvPd8IB8YaXevgIJ4gEkWAXf2ZNmZmwHJfshFpUX1gf1fkT4 +xX3h8kLxO7SBL3fACUmELVqHMnECRqepoNs4xSURyEEj6YISEL6J+rTvQFElvzAMVgkqSf2S8u7 6TRcd1d8BcVpRCV5czeoqiqKoCCCCCCCAMGhtsBD9HjV6yg9bMFT5GiPXAGOFUg6kvhpt3gdpj8K vgeCv6VfF5ZXSvBXkB7EjmO9wV4eftL1xhCF7CAXWtJGoxVclKYwqZZ96xJq7pl3rIHnD3WRwDUx DUppU8WHDVx4/VBMFIUEhqMdz4Kt/aSDtZj6u+JCGwVQzQ/oBGcfb7dmTJ4D7Klfi8uNvSeqPA00 R6cOtSqWpV86/Rhi6hiChjx8zn067tV4/kUOyFfUr7gA9pf0n/JHJOIQKdDY22MfX96u9wy/qLQr I7fo9wJeIAmKPTB70lvPfwWCS+sEL23VZI4C8lery4ojuASuh/sH7B9wf/WP+0fwj/mLJJY3yMtS a+VHypBP50BuD0cA6eJ+D2XktEHvaRBfq/Ai8ffJCuP6/9EkqS8u7w0YaNY9a+0qr1qVerMKvLu7 vNjDUA00Gtakkkkkk1Z/Ucx8TWrseZmSS1xGgu6KKqiEbhJIaGUFLIHZZ2mWdmsyMKYZanU0rKUv egVpB1zHiQR7oyukkYRmMY2NjT+PPx6YquE98PjsSUp+gYxhiVMSrMYQxhGGEQjSOZlllInTqMRQ 8cjQrEiqbwBtCBhuYRABbKdEjkdEPao2gBjtoSRbodZV1epJZYlJMCQfTm+3d9eLz1VVVURUVE3n Hc4K3klXdX3vl53ZJ8A0hpwGpJqQUtknyPNPRFBMHDrnifUgWy9l6IyqqaMzCyaVjLMwSyZjKDSa LRgUyL5Kj3D35r+Fj132gttQVEsX8/39BdSDUFIS/Vi9o8uhYGZVYAZlZaVVQZpmmFVVZZehoxgT CKDCgwCIBTBEAAADGMAFMAKqu7gMYC4a2XEm6NxEQCwohQUOXNsP1NDajRo0aNEVGiKNRfyganUn m0eb0K5gfZ5u8BZBZpQXjxOPi08gjkYYrer1et0rAG3xmcUA8sO8rvhJ/hDfpC0knEqvmuSUZYJj +qtAAe0gHZ0sgsxRpDFyJRYSBP4Qq4SCzz7QVlYQ71EooOgBpWVwNRHYuldld/13XXss+2f12WrE ekIcHm8QSWSQhPJd2kJtAHgJejfbMg2u/uwu+zfv461d0DMUd3x6ADTUIEgxWs+HQi5KkQQkNzkP egewT3wT/DYj2AB9t/N96KqiImihaoTRthEIKxSQ2X3/jfsztsVlf5g+BL8Svwn7v18xeCv7+CBz gQ9oIm+cw4K72+6u4rgp2SA5urFYA/X1nZHkzDQCkMhbiigpYa3xdVqXeTnxV+xXiBzHq/MHeAa0 rwxX7VYzpDk0VmWZSlEYsTLRRUVDSHbgqnYIaiIIY9xB92U1FQWXXuf3/5UbphvfLgqmKNSBwRV4 KC+AfISePiba2ff93B1xhPvIyDk90DvJQnOdSUpkicH3taSgdVvd55tyq58mTmYvmVJmd3WI3VRN vJAtsYwYpybm2hYZKdDTF2G6ypzrC7Y1STLJLSyrYjctwwM9r73vfYm5v4d4PeKBz+rgRUUgaH7S nx+X2iC+n5XE0YC4tUIj6jkiJr61ZXFfP3K6PWIPtIP18A34R6tajT8wN/ZZC7wbxvrWjVtJ8V7J QIij/7W4vV2q59Svf/gcEthwH+bDEKL3kM6oTRFIkhAdkv1Kyvj6lgOtXbFPKIot6Uvs+n423/BK o/hf4QLuyncu7Kd3dFu4XdlO4n3zMMeXdFu/VL0mxlJP63bbdxfWR5A554OXvjXuPe9G3uVV3CVC 3bju5bbJV4SrLeXdFu8zLMeZmWY8wzLMeZwlxvejb3xxrWGnrKu8yGe733UiIpAYOKREUgMNQeLo 2wPY0UTlkbLJCMkeiIruZtljKiQH7Tu6xQD4PdPOUCnhHmV+hVD6tK7IgbbX8O2fVNs7gACQhF7s +oQ9p1cOYv1WvqV++rivjJVKOD2fMB1g8c8d7TYNxzJP1STy8eHaSUHbr00ZIbWPJyQB+fy9fnzl D+MUhkI1e8eZD3ahsE/8Z+P8QAkT9O6U/nnS33U8Pz4XwpKzXrkiTxKJMF3VeifDcR2EBwT3vHze JtlR9Jt4jXRAPzbaIx+kbNdudb/XrV26JJU8PVjNzLserX6F+/M3n697q3j/zvJEH6WC3/+Q/rdp 2ZrxDbJSp6R/lU4JI8uAxXD5rkA02muI+b9LRMGw+qDg0UQehDq8vh9S79h1mddXMITUfJ/N8ny1 QAAAf23z9Or38H13r+d9q2ztdtl+q/Db+ZtvfLV+N9L4AAJCEpQ4oB8RHJWCV8r+QM5q7ZvhivTW 3Z1HWdAvG/MT4cMR9YL8h6DFcJcMwNgftxVePRJgKKQpOGBgoEZgiIYDKJ6j1ifm5B7AgNl1Rbez HVtZZwaT1SHH3Aw29sOkkYOmNRFcMMXJ3ZojQQNYFFaYqQ1QNpsWMRlhFeMUkMSJtIuJIzji1aI/ 2Mwl+IWG1PbUirPmP5H6NKSWWlJMHl+eVemu7isI8kakCtq7e/6UXsTV5lHJHlIaYk3IWUiZ/oIR znQedeLIHliWrEk5EiEASndtPcSDsGLBvZELj72yMsovqO6quSuR/h0P9FKgwSjG0nwJn+FmzU2+ 5dLkz3nMk6wAPlqaJQgVEiUPGB5QTuWJCf2w4MGSHJkQ7ehiN5aicuttP2qzyEvNftt5qb0QHow+ j0hZMw3bb8oIMLmRJJv7IkkpDK/LCABr4o+/5oDFw/Ee783xWPY5Sgk5Sgk5VCnVQp5d0W6qFOqh TIyVid2W6qFMjJX4irZdlUU9A9CU/ANwSLGkfsTLZSYMG+gxpaVN5X2dZbGhdgCNbZqDMnzLG/LE zeBwlhYqKqxKYxhnFyP5O575NQ7LFqSYJhUqRiAliJhlUbBJkDFlITqFEx5FzJbHFhkTSoXR49kd nbuL2xf0hhR1/Ti5K9iuXqgIkQ+74EdT9CvE2kw2UDZI/Kr7naq+Z4JiuwG08vv1fx9s+1/UxERE RgjBFhkGZWQca0K/rJeivMV5Ap7h1Zx34Z+pUzir0A73ixgdX1K8DfvY8GPRCHZ6TCyyMvVoy/Ds JrW1gabAXgqPl8vX4dfilbCI7jW2yu6KPYcwZlClYYRDoSLgpmDEQyDiQEmYSQB0e1xdoXrFAgCB MwUJCRKJgIgqkXcL0YuIGyRIz8twjbymsNamZ0ai0ZNLrPnr6vw7J2QnMH3u7EbqnofkH6fgD4l4 /2/KouAqJKLwXeF+kNvb+P40LPFUKGA2myLjspt4OJTcH5O+EwY1x2yqhP6+cD6ahEkvNhyZZ8GY MQ2B2DwVYDbWU0IGmDNk9TJRI4LqkotgwwwQzCMpiuM5HCDr7XA5Qx27eNXEgST3n8afw+YsNQB+ 8w3/80yV+c4vd0XrxXvrVioagNWEULB3ofAbaYthDYhB1GJCUKNKGMIaqHeC03cAakBEUiQN37mF iSy5FiRSaXaNMEEImybYGHhhkipsq20g7RhG+K33fnV7UD4vl1rfhB/Zp5C9UhvmCdGY6YIbHI7m FR4AafQDuKqe0HW0VEak7J1ITrED0wfHcEfUiduh7uFgercq4OrnkkJJRZEb5nCxUo9dlFuHeJJR eXtPQr2+UPuLpX7mGIh7kiv3/BHzqBC81vyoQp1IK68R3H3Pu+nbuDACiS+o/SEU5RixEPIWihAG KBHnkAeT9XPy7qwXvCy/X5wD/d4ev+o/zCCT7v3sDRMR8bj7s9esZVSxFGLYWsGw/vklcTBwAn/s 5ZszDsBLThZFFmEuCEzkoNtNlWFjWWTeA3Qqr0X90bZ+6Nsx3z8z/Wf8hD9YZ/t4uYuYZmJJRcZV /bqExpbhuRNsIqw/T/dgnIrin7WP/F8DDQf8mlNc6KphY95DsM5VETek4EXnGE1TxSDgz+35Ekvv GCQSDkHwftSX4T4e7yhpaP2x5VF+REkBPiegaRIgFGSSAIRgpQkBcDkHVK6V67r8gfiha+qPpZRj 8YRij8mfiM1qKNMZmGwYNJlalDUughNfiixDIyMGj9b1ZpMbArLgjRhG5CDuVSukUNwVH5R2Rn/0 wGx1S0NJ+voGGoNRk9VsEOoCnnoMDUlJTtaCHp0wpRulmSExgRBYWFhEI8sQ4ytKOjiZhf8JQwNG YV/XihhaLC/5SjGlZ33pZC0WpO+5QtMUUqZR3KhxZnOd3hHlJTNI/b1ZMsR2SmUMuaYYqDUK1RbC 2RMdSqmDVkTTVXBqyedNtqrI3Z/dY7u3BqQ722YvlSYo6WLQxRl62JkIaJMuqpNiTvuMhykZJ4sj i3WlUtMlRKpNqptZsGTs7focssx5br666rSpaeC4Wq8RyUVRZMaQWpJOmSGNKzOMI04G2tLQ/x53 Uc0tkjQNhzvgKVtXcKaKsICppcNaTRjuzgpu2U3W7I4lMqN/wxqxxyZHdS3oLEpKdEKuTBUpYb+J 9Hve4QH/uhA9v27e/WwL7TP7P2n8/21v7yvZ+EfjkqopXs5IHP+5X4uUfxEE+UXzd6r9q9Xa8v7/ p5T3cs1O4iOEZk4LohIgokkKS5bYCXGWyS3o+N8gDpzeutIcQ4gGEJxH3xEp0SWnz8PvRUNOJ3/M krFzhyASkSwSUbkl+ifhtj4L2duBFlY2YWRmEjCSPPZAOg9Sv+m2eo+5/If9DSg0CtRILkErMMQJ ZcvRbuSWfJpLpJJPf5X7n3SiI/HHOU5QOIKqqqSi4nLtuRyrq7lFyrsolyrx0Vc3Na1pJFPSgD2/ 1+3oGw72BkFU5CsiE5mLBwPQKdqvlA8YP0gQietX+nxHv/Vofw49tfCDrEpEnO8+6pMz8Hs9n7mB x6/ydZCQB7cf9KS3JLoJKcajSW3P4EvSkUVx04wkoqdX5u66coi67rm1w27BXK5VkqQlkKYKirNq 0hpC0SLZtqlKSiKSYiklbX8v+r2NF+y5saLm6IaWnLYF9YKQKujc8ar93mdfqqqqqoioqIgD1vm5 ebqQAA3JUfbKtVZFltkEbfV9M+j0Z9Pr2xtrd23mbNkqqGU0gbQ4CgVUSVy0MEe3UDX/dPwHnzPZ WeP+7x+T4fZ5e/sqgJqIiqCFm/Ra7gqgTJBWWa2v8rfqr5gwF+/pcCFqYln4YPc+HfQa2BMQoxRQ /e/VWtabEaYWhlZOCwDgbaWriPNgsJWgvmVdbK0nmrtUtdadDKG0S0VRtJpmpZUzZFUbUwjIJtTQ QQ0TNCmiMg+lSBPefD7h2HEovcOoefs44QvcDCoNJJdp+sGsroPQJKx1grdOz49v8dYfH3fMOEIa 2NGhKKViWIpKKQzV1Jo2qpOqFyE+tVOqELBhtfPEmCgM92S102akyGgIEAw9qMOUjDW5vTzhxv1x QBkhIyTEliMRAxQNZDMDQoX3Mf5ZPMDc13778Dc18c+ByBVNC/QpxINtTZOUONv7pCS3WQBndOAU G8o/KJZYml8HGIXhJQQkfVRx43EFHFkFp91nc1kJlkPuZiRin00tYr/tyYm1URLlXSNdTV869Xtu UWcMmT+9rWpiYh/sqz4JJGDEUpaARIlNQ/ASj+EmAoJMJEiAiCk+BIe/vsThrRgBoeDK4RTMkWrt TXKFoUhmUyhoBiaY2khtmllU8ieFZd/jv5LEKgwXKH0GZymGQBl3s7u2YgSNq+CSJJXAAYk+SD4F XoHPkPFPfIhJIpoCUlHkHnVp6bs9blOQzZcLILMRxEDBQ4cuW9CA6iSGkidjVi8bSzNOemioWgmF USSoJmf855zmGdznlSSH6eey4KaNTDfyeYkD80x0JAyhBDbGxle53fFflX/dLBIVICL7P9h0RpSh TFHUqtSvp89UD+iRk/j+6Ekkik5s0AfYUQBgciXXNcqvkM+v2zoZWkkEjtEQkklCF7Zi7q590zDB 8MRwS2tOzI8v0EwRNrD61RmSEd005S12Y5mZURGRlVOYZmUDy9mzpOtYHtikoXJ8TyxMlQOIEAnC MWt2/Y8mtsb+5/EFvySSSSVVOo5JQJH3sk40hZ8/E9Gxh14zLBZDSRJCYDENtNLme1Enm+RFHvkO Z8SkTRUn0lRMGBgJ7IOr4Dw8/kJmdKVmYYY42ZkhA2NEJNkAy+mVAlSEjtqSn22tVzYdDxZo36x3 h44lT7phjWGGVmQUVj2b948Dgke16HWUmIxgwhREhxQ2TNnU1q3XfkbbTYWJMIrXDmmevqiRz3gl vxoiYgNp9XL1qnlQ3EPhk1oAxkokgZZwB4Sl0B576DpFm1htuf7Or07L4Anud3q7+yqKqqJiqqqi Dvu2O19YaLfHpuBsh1uZIPBPfn137SSH7uUE2KjVBihqBgQwlIgvY7E9IcbtuCPw/vq+wWRQhQ+j XD1gj1HLvSmKPTbBoce1B5hV25Qi2mWiJsbRV2m1LdUqqqFJQVKhVI00z7A/JdXGlNbd7WxqWvxb JkLfHDrzncAYwNSUJHFoW4Q1aDyPcvjXJBCa+h+l+l0D77DuO7jjCGMyHs5onr7/T6OJ7zGxsdSn Hkuj40F8UEK2Eq/DKZMhHMsXJiTXZI52B5YQF9aXIcjX0kVJVGZ7hCmJwS487uBnOJsbHKI/rhSb m4CbhocKUu/2FyMjw0nwZH2MgGxib+MjC0xCtwmqTVKwSJFUnDKOcvlqZrXGZzaWtQ4zXGZVuGVW XFWtVJxiWZ7PVNa6ugawbEYhLLC04BSKHpBKopcy+YEGDStQGxQwlVy6ZwKFspNoXADTCEskiRFE N3ChFFN49tzd89HN6+cAB+WfhfNyu6NyIXhrZDa2cJvWactWEJEDmY1Li3HkzJk91fg2riOyr2NT odXsNK7qBGFsJCJtGcVqsw1dnJ6uFK8Vc3ZjtcY0NtSCCAbyrMUwOCoaidWQysql7meU82auW60m Fr31oYVAyzbOrvRqcjk/5sUoMGA4V6gZAPDyAYLgKyH9EHucBT0n03anpNigsECXKEIo0e08RUPK y8/XawkpCCCCLlhiIPnNGtF4vV27Kp0CFiKUYWSqFOo1kfpNQk6fqEc1JLjjEVgg00XjloqrBICw SYZx8kgFJU4AilZCZ0wUTNUYBjPBMEMWFJjULXLfj8tUe5AMQkeSBoSaQ0gRrpnv5QtOTfWTByHr ffhvObetChRBBDbGxmlz29lcVysNIeRcaiJ6z0fEWarRhh41Fe5X5GeYO0tcrRoH28c2l3YRfDhB 4O74eM87cvRmmOJSyEcuHHXpGRly6zCtPMW8kJafu/kabUrpI5JfN8xMdHDixbEZQOXS1ly9I1lk LwjFFZTV4J+rJJ5OqZCaKJtgKAPfL2k6WMEU4P6ATwPaLQx8KaKSIAt1c32f1bvjIOvuv6vHOlYd tvrVa7PrxLlzkQy7MbTq/zbv3DwwnhmBvDx7MttI6xR5awSwaqPFniek4Z5TM1rNdKIqZjzIvV1m YSeVHA+gra1G1D6mjtUPOasG0HQHpvJCZHHiDaDk5OUhLnc9Kkry2xugQuGkLpoWPcgSqVVUkb43 j6d05ZtkOSLZY3NDMChqI9JbQM7i7wUZyb0ka4XA0LoRYtq0kWIwb8Huiy7O/7h+lhV1NhqGL8If G5vmTnfNy3DFwJcZALqqBUO5FAbGW0XcSg0KqcphTVpibALYU1WLC97lcQmuKW1cx3W93bvS1RWt SlvcKazK2r26Ni4ogxpBxzq8UY9RJPaxVjXPNUK74q0becumnnX16pJ5m0lWPDVQlGMHxdaSR7ry ks0cfPljy5VzbG2xjY22xsEmAHCevLakqAORm1hff7flJQ4iPyiwe/aEOTiv0AwMQAJts4j7JESh DehJET47dY/NxjlLJKqD8dZbzkjJQVX/OVMUmnVGiFRUmpIss5hRGKoVQABgyQ4C8x1SpnNNor8W EvUudRJHf1XmCKrKgyO1L1i8jFAQKIBQjNTjKcFP0nnxdztHEeWvhR42vUVVXRO4E+J+wBDdAH4k ZUE6Mh92BieJyU8gTkpBHWAeMME/Tm17vvfLzXnAr6VQ+19HlfIqvkFU9SiedQDcE8b5VPTAbAPx r6RF/GoP+42ddwfUdfq8kvtgVXUxJI+HqxEk5bN+wSXe5eMcX+nrzoNxCoiimN1sDhgXtGIMElXO AJHtWYjcdXPDUhmScDq0zU5OXyCxEfLP9WU/Ao/8rD9pC/VhGPyyXqkh8v4I/cpuE1jiCkgqLzGo LJD3oDeHac97b+I5xJyITK58ucLzVDXQgL/UUNn3TkelHzMAjGwati2xakKpqTU0SKfBHmBUVbJA lRZLSU/oR9II1IRChCYRoRO8JBUYIFeIepEnMzP7VD2y0IBo8YT3h2n5XBHoA/75klGqEIZUGm6s RNAJAkqaToysyGkPi12OhXuVQfFjzHXCrUq+bxWDQ8ffJInr73YuoYU8bAoGNMQBDAwrRQ1ukyuM 2rM1tFtXRNFXd2LGiv2Ou9l02TaEMlQpbvNbVV1rd7rVeRWNtEYgWJJgPFcQ80hwfdQ8fu7ap607 hAZvPmKhB1p+vHsBNlU7DqMUPVIR7qPWCe5UUVEqKS2QvcD0a+P1XqFlfS+w9irIj79wUtFEQCRI iRDSwAhGYPYmsdOkvVPIgR1fND0s7Ikj3T8UxUjdQcZxI9Ir+iVVIIKKQBioQSgBaEBZIR4Lujw9 C+J7nxB2II6HdaHUotIB5DfFUtqDYVEhYJX8Pt0Vom1QKJBTG0waCM2mbXk5dkVFN6ORWNkBUYYw mcUTU5vpdGoqmwUA5SaNYOGRRYuGax73XIidXKXJ265RE7aym65EUup13m5Ze7Vtq3XdqrrkT3XI iJIiierXq6gdLyb0kLx+4QCQiUkJFElIpGHZHSovaB4/j2Y6B3oAp51lWuwEPXK0lPRhU8IoRXfR z7g/AQB7CGEvrIHyiIQ8gdG46PkPDzVVcLKqqLPAfG4+jzctmD8M/zPkAFT5Bd+KIn9iALNVY2rZ pSlTArbZtNpKjJII0qQoB8SqeHGhQMAUHz8PSWrl1HkNI8dK4okECaIiIIMDvFVOsx8Xdv9Bt1c3 rDdGoqaKHrGPEwEnqGhgYxfsI5cDByEicWUqRZUWx5UqyFGhg9ZQgeeF8OD4M7/+N4w5ba7hJwpg gV8alxweVQSYqIZHlpmpMUlWEjiwkkbtqSJjAvuCtUyHts1QOgMhtHzHEjFbH7uMK7Si2lE+l/h4 J/EczVOo3brFDLqVQaBXszrV4PVuISIVYk2I7wdJiCD8H2biaA2QDVHnpC7WTakVSQSKmcxn5OES qUPrP661nW6e4kzNM80yEi7M1z4CQ77UlVInf1rEnreyghQ8+Hpfd/v2e47HdYWukBi5hkQwEJFD JSMmIESiMihJCYmMmCohhAmMgMp5hMQ+X0lQqgO+utR6ceSPeGBi8Hv8J8YRDHw/BrUPdTItLBLS TanEpdMmLKYu9msVW1zVaSrmtcIzuDH0qvYQ7upZks0U01IIhpDRmJn4s1KJS7lKvwyAec6JAVEo nTSa6+t7kRw8uybeMNwXBTwRDUoptBSq5hIBDiwwulcXodv84EGJJIEkBRExLRFnhGLSLDRJak/5 /wzw/8uBwtnx4mFf12RXzE10ERhWuXYS/F2cjiSUSvlq1/F3W12rkqYVlUrSqbxmGJMaxixRiRLR fvLmqfXdOHd1fVWjIK/oz/X04G0f5x+a6QG0lfxgMi/+eJhXqCIoip/JlUmVej0qqke5Oe5+U2z9 x+OLg8L2jwhdK8zmfXGEgBDEb/PiFzGZjMx0CiNVzE+U5EoVOli6KSIiIiKlIiIiIiIiIiIiIiIi IiIiIiIiIqIDIBMIgpIlIUSRHyejQakPX82kza1FGGwspmYKstDDZRq1692t5bF7usqyqxq0W97q u9OtyC0ZmwyrTBZiVJOuDKZIjPhdVtctbxpYQDipxApwd2aINpAx1hhGsxqzMmQKaDMDjmtAlATK JSiRQSf7j8GGpA5KZjPLhq1soaYWdaARPplUNF0SEQTeCSmPNmPHHBpCPjHzHjXahPl3NJp98IPs 5BP0B+YXZ4mJli/gjb+lPP6vve3GCvn8H2PAohiomiKizm9Yp2tQ4ZlFb7Cbjy+lDAbV/BtSVSt0 NtTZgSbGiUiVMkAcRWEoVaoCmYSkFoWgiQ5ypjCL4vyokEsSNATIAUJSU8fPXBHcOZJktxwwTuRJ hChKRWIIgiJKSkpKSkpKb17qtTdPb6MENB1qCv++AQi5tqj4DNSrJB9/lrvYbUddXWsBFoxsmmNN jaUMYSyRRhG0knZdl3CWK2jNiRBO2ANiSR2UTDJTIWhTJaQMASVMQIMlyGRCEMnIsMQVHBhbYzGp OBG0cIcHMEFGhotA0auhyH+bVF2atAlly0EwdNQo3YQrUIgyrKgvzVEWJlWikMDizKvK3qIEs17N BtULh1JuELtVMVY2pzds7nHJwt1rGkks2WGEqmxoxiqNTtqcMNpwHTgKZAO43sxNm83XveNbezr3 r3iu970vZmcVrJSahqMxDazTQwyRDUbhQmy6t1dtW6tcoXPmvkxV1SajGymWOwzFeBg45ShScky7 Vkpu5cdWECnKElY6tEQhmxDVCF7YicxOAcfrKWNxRHxZ1idztGuqbRCQulB4g789ng8EeCKHNkFR U3EI5VoVoQYLO9JIEEIkHAK8ZuoNpDLJEmZAqYFqWQ6tBmhRUzArBoSiSHBQ4DqI0IbWTai0usMm ZI01kSSao01ANaVCRkFeZCKelhADYk426iyHRU5gojGo41O4nVkGrJOIO4Y4SBoUhV2CBB4EiLc8 eEgOKJwMVNQiDzw0UTx2QN8wVKmnZFGVkZmVbpON7dt5RvtkRdjdcbg5WTl8XV6kcFslkiK0IH5i FE7pVBwgX6gkR0D5YPkB0kOGjESGVZUMd6fu+HHHHY9R45EfpisiHm9KRQMXjgCxUUxAR4prhnu8 yKT5zRdqKibqoj5lXgbxEUWtnXpZ+Q3afdYHCPglPpL+MO23z8TY4yFYHb7CKGVT4B8qB5AJVYTs OCpxafVZHcl5jT5bZRDluHbxUwfUgSkEows/RalJqCe0PDq2VR2S24HmHt9DDSpVuFSTwH3KcDn4 4QXqVkjE7Lr9t/G0qvUKhI1DpGKAGtEB/AAwzmhJevKoCNGgt0wkOigOo/RxME9hKI8iCTMoKqok iIgmAqnNzznFROe9TBvJdfo6fFwVfKYHkbSCgYFx0yMaG8YQ9v+78ot1dxyLkeL9mcAoLm/nyCS4 TDTAEomIF1NbE97oVVVFVVBwS74DCquhVVUFg1d3QWHWuChVYt73QqqqFKqONy0ltHvfYOtjPj2M 2HvtAhbHSQdzSEeWJHay2td1bpAO1BcIQKmFQoCJAKUUaTkMIIGKkGAwTKTgHHifx+c0kCtaDJeg FiFQ0kBjtCU5SZTAz0oWbgkLMNlepaS1whGYgQg0I9b08cY2WJA35rpPhNVwhAPW0bN1fGAyHJoK 1qOaOUoc69WqHaT1q/HWen7zziXXjfHbTH1xiOAyEUzJj6iSFyq3mbiWEY1Wpb+zN95xWDpSnKri 0IUVdII0sKOSiu+r1IPHBNje5OpKm3q0wcT4vTvRmdsujcTuUQLAEXLBA0DRCQaRSvBmEi+UrlzM JXm4M2i7DAe1tIiTLIgFKwF8qAgwO+UyMEyHFIF3ghYMQmNHXM7bVpMvbmKnYTx1mbhzUhvZsOCk vdo4b/0xkD0GhcJGeZDSQss73mDiH3MhiA0EpYpTYM4LRw3qrF0m1rAu23E2m8GlssDtCEYikg3w UxPJBq4I8c5TEl3NaOHqvasYYMEzYci7BaZXBFGQqq1YEqJSOOEajFRls41Q1jSG0iygiKN9Hbxl gsEcrZfZpHYOyNlZBAtoYIOmCYkOu0OEHnXWJ3v88rvI9FkEbeIAlQxJKha4kaTA7lXO3YzO8Dlj ajEXkVjT3E9WFWyyuNWMau4wZvc8M449N4Joti41t0w7dFLi8rfbTdI7rWhLuJB3JO/HNqt9PYdE ZMErERJTmVxDBleAgm71gcFFw2ew4hsgtVc+6blzPquB6Ci2xIbbEd/1SkLehngaBBtGTaTXOt3f XERtxlUkkcdkEdqL4iRoEMO2cE+x0k7qvWJ3PM6kg3IeCO6lVbasaQnPl0htHJGzgkThnhPQP2SK Jd4Uyg2bLSPCIKLw+GFCBo3JZCC8xUGkk2K9bAmjMaWWVbyvaxttbb4ahpV1mZlhqRdJOoEyEobG mIXI6puX4R262JnDXR1LUJ3E13SXWcwySVBiDUgOSg5JgWSh0qXK4pBjY9Tw86b7xjY3JJJJHGce L4WYYCnZunWBj2guGJEAFS0srJH9MGsSJuyCSeKIg/I7zIQmhU9KY+A+JE6x4CcHnNGg6KB1bppz A/nYGtLX9sIkenVkJT1HUos2bY/b6Oo5ies6jAtriK1Hd1K6kChU01zQZs44DZ5HpuKgN6gUaCBr QkoCwpWBaQLzJWL6nesWbwL+Ro7Y0UgRBMiQ3O6IkTNdoh0khDoOSxHbePbr0SSIl8NDY7QTGHL+ fvCePN+N6G3ke0AwDIVxVQcPJOkIgqZWlZrUtNtTKjWisTSpIOYkQjFpVgyWhwh0JoxcSIZZEhEi QJkcsVgSGRSwLIiomQzIaGJJiKYqE/Zua6uP7nR2CXbhiieIhTeUH1wZKWsV2COs8o+Co6AQfeFX kkHgidzIPSp5/xySHI+cPoGEfWSXBPxyJgmgWF8nvCAP0fdNok+9ErFQZUZgVKutDQ1ST2T5Y8z+ gSJiSAdwIx43ZA6O4yRSVETBKENFtmICMFU1KWwaJCqi1SoSUVaVI4khN0Qcz1wBwUV+cOqf+VxR OMgB6z3zE5cnADUFI+mVPdhAaGh2kQ6vlDjGipNo0MxVqWmttqS2QyPh8G/EEIahyR58A9f3+zES PWGYAlb8PEJIYp50WKpZJPvUgvoYGpU5hpdEkSqu0A4Cd+8BsbIlY6R22NYOxEI7Sp8I4KSI60Pf +VeYnrkI0GX0Kocg4ejx3UPUq+4IUAkqJBK0gRNIh7FAQfMBwASAhBlCZmZlhkIBIZhmCSYUSR0S q51dLNIlKKRIihDCpwAdyGikiVSWGgBipTrzDkcRahmA0wGU6woVVR50hnxYQKAYzMIGJjJJMJRK twppqpbVAVeFiKS2S2IVOJyanILzwy73LKCnZI2027qnWw+kNBphooTDT2rAYpDW8LHN2QFWoeVl cJ3kZTUhhN3syUap0PIF9K1rE+IjTOMsRQ0komDIksGJEYoSIFzlFpU2yrnXMWNGmA6rls7yb65e bYUNyOSrEQFwrMQIlI5EnOjsgmiON4jJkTaEnx52VGB0t6WohqDDZwLxdjAWjugu8AZh0wx69hVD kBQSQMoyBICo8E6xISdjZG+9/C+J0j6ycpEJ7p2fU9Uez2YJLMdx6HWo8GoqnlAklsk28wIZMwSw UqIwBKpEjQA18D4e2AJfO7X4pULCxuSx0MhGmqwqdo6UTG+xbDZveY8SBBHBTzlL4hSHAfMKe+Au l61HmgnIiAkUOkx0kFkmGEmpHip4VB77I/wlHoN8QhHhyxTSjIwBEFNLwP6xHWeJa9m6y6u5LWpm sZ3cmKqgmTMTKthf1aNXgqB4SAHrUdvN7i9OnKIcQmGlkrE5d01u22qVEVWyKqPVy0godx9z61Q9 XHj8LnmVDwIEDBlet3SQqAkaFemYqZxUlWB0I4Q88zSpgrmKmoJGm00sSJibr5XxO+eO9r1s5sqb DkHrNt6rRtIbqkmCEommU1kTBxCQzxNlLR+TfA0SXMDQjCyzKSikptqS1lLgA+F+GXKPm/lt+/d/ 65eCiSob8MXhI0WixRbWNorvdq8vgAAAAAAAAAAAAf37gf4/a/Yvy/mb/as1NWUExTMEKFK1TMq+ s+gPZAnvoi/mhUGvWjpYJQgKUgAUiFdQY5iIZMTpBdALKC4gGoSIYCRDWJisOAmIhkHtkHBhSBgJ N/PrRPxoj0O42HanDEMNpLGLpxmlFLE1UkYamA3ACaMUZk2MXElkIIGCRiFiQQ0Mn7Y4FsKlzmqR EpqgKaoSmqFTBN2AxDiCdOR6e5M/z8h9/kC7p77xTqeiKi7iPgKehUPygvUqH+9UP1jpUPUO47ju Ow+sfGeoY59aKi+LvthB2+eR+Q0nxSbuZwIADT3/FbfHvB3LnDDjUZ0jErWeYr0BUorMipiwpjBi jFcR1fHnH78zuz3yGoccA5BFRywzMRaaBT8fjw3Z4dmbqqqqqpVUfNeANEECa6XlK/GQrej2/oAJ DYlDikLRQBMqKPKQEygNn3Vu1NplX6VdJFKiZSolpg22bbFKmtmfrFveMoCzAYzAUPV/higakaGi uU5QkcDM0QY0RM8KxAwXJUHQDI5DzwwFdiBHAlFw8/IUNcQFpfeUTsxDCtYYiURSlBVA5JEKnDbv 7cMmtGjWslIULyiEJkKlKnuvCxoPHpIipJ4skDGtDfnXxfKsJaFcMqNwhCEv3tGJBj2oXqC/p67L s7fBNBTCcGDrXzBoAXLt8YeveXsoCSCDvVPxMiCaDVSxBtAUmLhg0gmZjhAIfWoOkFSA4jt+ullb La0kaNo1Q2ZUtNTJKYotJtraSxq2jaoraVKTWlUrVgqo/P5rh+mpHFHfcAHd/eMhKEp+mH9+3E0Q dqdbrcd0lS3ADqkFXAk2xEeiB1n4YlUlgWCFIiiPc+Ph3HF5IJzFZVULE906/d6gPI8xAPIkPf73 W6DtAhPbI/ZKgf6gEBy5CIvojSikioHVuICYIaJRTcE8AV9qUKFYfuMSSJ9RUQ9UhThIpJTSaUqm 2yrTWc26isViKjSFJBTKQLCCYgYogEK+8eFhoFQ4SisD1jgocgQlBX2goUKwwhQjNQFCnu+LERQd dma0hVRCa0Hqmto2mgWzejKElzbWayGBpZT/S21T12ZXH8+EgYgTMBGsR56xhYpbxIkwPNQQkNHY 0fpPvoPmf3B/ieQETw8BK3HXoY96XDx/eE88vH8uMhKi6y5owzWsaNMWUiqWrGta0ZRkFLCUi6zV fnsb1bmd18avK3sq7YTnc7S1zqW8gwJSEk0zmBWBOrWx9e6725vZRuszLRc3DukTrlSlruvrhSom 0DFCRQohX8KEeP1ncO67ifphAmFAAyCkCKwpCyHyPD9vwJ6EJAAiWhHxHvIEkUhKL7KgDz/js5He nh4yJ+KRZE8CSGYHp2PSnyhpZ+mTzl+p9PEH7bJjX5NeRHULX3ziRiNu8k/PH9VtkiRtt+rH9A7m 1/ch8XxJ7pkd/416J9Z3ZELT+JD5CQE+X44yDon16kPlGZVTBp30z9mT6b8ddJ7pnNxvLYx3MTUF FtRVbbyo+u3g5m8GKxGqyzlo5Eb4iaOWqq3eJAo78MVVqQOq7lCDZrnHwtSA7YIGAvwHJC4fUhKY IL8iswLGZEZSpMnzWEw4iq6tlpTWWlTbKWc6vNu87Uu63d728nuru7a1w0a0bAkZGMZiDkMTStRK qUOoSIGZZhHVQOSsSkSoOpV7tXTUmLY1GpztnduViKCMwT/t2cEHbAXMikaVosTBUwCFSWBUoApC g2zBqgTUI5BclPjjtAEj+0dylcU7cKOQK0ihJbv7ZCmxJYCxIzQCWMHqDlIjIjgC5BMSgBzLUjF5 Xsj4eexnMzcIdQ0Y6wsDbSm0K6loHOZl8+dTTawypuJVLGqxRSTWAqJAjDGo0TIjGZAUH/KoDBi0 MJr5dkrbJV3zo1eem1y/T9rnnuZgYZKpEImIyoxGKv09dEBUNTVtevEME/hG7Hn8p80ImtjY9Zp9 Qe5698kUmCTMRyGkAMkor5Vrlio1Yq2Ntar20qVXEImCgxMjGQYpQuSqYiZNW5VXVtm1o2qsk1CZ Ca344fuJ/HsbchT40fvAu3J2/bMUERAdQp8Dyg8fxL+QUQH5AA3h6iUFbH35KMpJL5zD9hmxoy3n 1cBTFDf9DnCNkMNtaRP39X76k0PYIvpAN0dkPUIOmCkpFmYhQpBT6xfUjAHiOI0R7TJk2mm5jCZy Mom3QOokVRIVUcLLrIj525CcIHvjpEPIP45JxO9TiqEyIQQyvoIMIVElRT2j3PsJhuJ3PzOFz+ME zNSeyv3VBRKUtNAptbp2Ka1ltUzalSypaKyS00tqSltFShFMUQj0niif9RkrGZiGJLIhCEIIvVKq J4vl28TsAr5e34+rQ6IMhHJVecLxk2j22S/wzNiDnY7mKs+yrrGiK5jic7mWHlZHshYFHd3tJord enUZDRuTCVVPOd1Flj93096r83XX+cl0m3UeXTUWis2qtarCuYTefThnzZ5RPBInyQjwkOVVc6+F vnPVmMslkPOprp6gwYR+Hbmk0ilSeiMYNm4iSdXOJAtkVXZhFee6GEgbzvITCMQBRdZMktMYLWKL WVHj0SMT7dkcIFqK1LjcMwzORx3DdkNioS2mRZIB/mPF3iCzIKGp+e77iB2GUv2AMUcNE6U7rEeE ukQdJ1mowW3i6Q4xu3T84lUc6k3RewWHSUVVUDpsGhdL2Kz78ob2pdt9nfVimwEDa2w3tVJ1dRsi +33UpJa/ZwPgPKCAJwEV6joR3llEZA0omY0e1XCy36JW5pYtdq5O3OzpXR1ZMrHFjJLrJBhkhKUj F0u4BA4IcEU/tlFDtePpO4z/rEXeSWJKZo1Si2KUVDa1NflVWE+f1jqP3dTAs0SjDcUKVLKx6mGG y1iqjBPwsZJKlMp+omypMbUqWKCyNPsMFkltFVVUfUNaRVkjs9r2e0r0WRKHlJB5yIK4j+ez3RD9 0Q96RCcyCh9zzKK+nQp6VcUFeSgdwQg6PH+dqQTwiySSUVSFFFoSpPE9778iAnWOjCX83t9MkNOo U61+DrNp+zxJ73n8PNg8CMJKVwpQ1q06QM6lAAheR7D3hGICJpvp5vDs9Mn+XynPX5pzAS9nTtoO O7y7qlQUpQIs6kfKENjBjAYk2MbZJBUA6spsGYiCSL2E/evK0Wvhntkh9jc1fvEfy3PqXEitYxo3 l7/kzR5yBDgSdRVSm+9RhYU2fvfH6BAHs+CQGFaKrpoEXRerkCGidGyqpoBV9gHwvBj2x6LzhYRQ GQRc+JLtieWfFAAahJG475AFDmCOQgoUAFAQ1JQ4xZ0bRh32Ph4Jnjzfr0tKs24tvFjMeknLel7M NyBpxF5nbtb13uOlN/Zzxw6hHCQkflHQLSQWCBWCF0gd7kXdUPTMCU0nVIxmKWrXGqQfc0kjBCLr MktfRNASAS4gcKy2wlR71apYlMaGmpDx9efC/qvn+KJiOikUUSlW2Wx4WYKPqut6MzUKykqXU1eq yiKaJ9kJpGIlNDZUwNp+apSWDDRVRfTHYH6NtBIXl7wQaClClClFHxGjBLvQ8wpvTYQrSSshKQkq XCFDA2RA1ChDVBEj8F7x8EYbgqHIPKBEISNBrFtkVRZqabRm2UlsiyCWKodqtah2hU7PdZdOm3wu nhzPbNjUk5gbiy32JJhlqvb+LlMOW4Rx8NI8PFkSSQ4eHMxKq2OE1SfSjpAqiOZ0rshwiSf2MUmp EFiMyGoHj3PHJ8i23T+q/e+Y83dIshzVTvAjyJNMOgkswVoV7j0gB6d+w8gB9Co9qiYarMKe74js d9y3WhsQncCMUIgNQJQFKRmMKwNDpoaKoSTXk1oSxop5ccmxhtz0JhIu3AFYRoISWpVIZRZIVkK5 TgksQlO1ijE0TBLkhQrgAMgk0eGYwR7/DQGgJESVIgTchRyYloEK1MqSjbSUqq8rtZNBZIlAkpqg hFYHTEmpUf+hoMEqJISXQ+X39W22tebOq2LpaVNQ2hNiHsGwe2imoNss0xLVaMd+lhyNh2NKkeXW hrUIHLByTfK5afIUdbSUs4aIJs89dBQU2LEdUBRpyMCCcmayXm8y2ffemnDaIOLCVQH4zpyUNFvh gwQjDYQYbkUUUUaNA6R0CVVAmjQh2qhpNEKtjQAzxJrTZREwcO7BlR1TIhQjpKrsAuqoQWMrvUKQ k3ASiRghCeDuocUNCDhFFMQRfOCJKkksjFE6v6sgew0R/zSNEk7JIjeu+0IiIiIgxiCIiIgu/Ta+ toe331ZbVNWWRfecQe1HsjrBXT0Lh1OcjQHGdxcBModRjSnv5WyrRwA98LPgUWuPX0BHIkkc+ElS BEHSOK4/M8w6yIMvmwwiVSO2Rzcz/O4X7itT+Fff/HBxLKqQkamiEdRJJGym4kSpX5jY3POIKXl8 RCpQKEEgqESEyo+RC91DAmCqIliQOCijvt5nRLMjrFc9Bu6ggp3MMSFwkZRMIBI5mZp5BYUwu4Sa ba0whaMpxJUcIBgGCUJGOk7qnVPgoAqklQixVSokLcQMYnFxIbmZMsGpmJGrQ3EkRZY1Iht0bDiQ dIHIMpEBwRdpBVUmRvSD6BUOqVAO7t+M8oG038g0wsBu2SRNCR3/dCLgiquEiVU/f9Lv02rRzhsq ZH8VZCxLSqR38hJJBShAkUlYhEoAayUm0VWLLLZooi1RJbSlWS0jMqottmVU1+ytuzJSKZaVLWxQ lTIMjAC1QRALZ1hhoMAFh+VUVDgcmBAOIQjsPj9A0Mw0KswDYgcBg8xDBApo2slQyJWJECcYasFs lLr70dzRI9iW7S2iZSVBVjW0xtLawX/E46XumR3sxNBFnjMiGv3pE3jt2n5zoPxxhHMWQ4vMQFdK cQEOIKnETUVEgGxUFsaZNMMgvd2rg7dx3bgO1dd811U2nmJFU1I1EIhgTGJgxIjSyWpKt267rl2X NWkrRHsojUe9dvaudedVe43V7rR4wRDgBZ9mzjsKhQm00qNBaCxVzTMBrSD95g2NtnMCoZC1hrM1 Iq6USBJUIGURlSRIxZEwlChdnbRocWEOG7omXwEmFJ0IpBvuOoFDWGD3IJrY5qvXuB7IUkr10QI4 zuB1IcUU26kchB3XUKcdOyHIQOPtQWYSlRSYaJigFqIUBaF5vA+n5/54DD748+lRLxZElFfdBgIE JfudPchIFCEVSBZMthLSHOEqAgiJISGlN8T+bglD+pSyOwOoQeoDveYUUFYdcQBCwMpoiYihzE99 g/ng2fx58t/H72f3R+TiI5PVGSIn4+xT+lBpJgpYo+ErFUwXvUZEclSqRiIFsM2KE21AGlSmamr0 Ee2J0J1v+d8x/KR9Sv4UyoVUJH0wPL1HxHUSKHqB6dfZkKbpVRBI9yiGy/z6FXTL4KCq7sIIQkf0 PzIrpAWU0GAe5CW4UH67/zc4NVggBAYr9QkSSmIggigFYkOeH3sF7+gj/SCfH/4HfwV6zzuLiH/x WRH7QAkM90P3abQ3V+tppkZmZ/HY2bBuHBJktfunVa+5rIP/MJPt1/YIaQMYDAFLmcaNjQf1wemT TRanhLkgaW3xc2kNo1DTkpRhrDdnrnhEcMTCeGGFq1UWORm5VMZkBtTHBlQjGTVIqmQKKTaThcR7 e6UCqUCFAoIvkCRI+qkkn2ooJGfgng0Ck5IGMAfF+529gEdNvuKlVS0qNQSjZNaQUYbVS2mrWWaq ymS1Sm0mk1tFaWatCUBiK9YkIsqRie4aFexXqE5Q7pIQGkFSi0VZIWKtkilLIVz9p+KJEqwKsIhV gtFlkhbEl6c9Plo8PDH+A73TApREOl1V3atcamTuubZkokUhCUSQ2+2PwEH3uTgq+0lPTEDF4VEj NWWxkhcpaZEEp6DE/jKYEmiRdOMROGCExIJFXNsVXKpkVpq01S+TTJClzIxBKsRKLJGqm21OZI/T v7fJuTyCfjef1wGSekkPkkkzdYXRN2A3mQ1QxE1rTdjLFzDJq3aua6trmLrzX8TeZ7q+Ck1kQrCu LqwBpdTffNsDbZI21tsOZbFpBUHU/1HVgickuAMK7kK7r4dx3/oLHST51R3z9nY6z9J4pHi/oVs/ cczmqj64pL2YH1iprwF5BwRA5Cpse8+TJLXWecGPqI/RpPbITr68I+++2QtBKkTD+PbVv5LEGiqZ oSIZiAlTYgJShIjZs0mmJEWZUREhFLKxAEVkpIo2ACNmyzNKtv29/KY1lqlMTQRFLD2dvNChV9/A ToJ7rBQY0bLmYJRVUqlI0nub7bbFAUIYfP2p6+9Hym4bIKHGFU6Xl8ANhRMQJGMwShB+Yulo0+WH rXwB4aJHx591AR7BiEshnORgpwA0sGThN/JlegKTNzStbMzrDfmdfpZNXVQ1D0ck7WdPYLgFRb8b q1rzZJHpoT9MpsWRujJJMM1LB9mBsbEYJBDQwatltC8vixO3rtQj17HtL5GNIz+uyW5TMvXx0hQa RiTQmjDtnvHcw3yTxwb7JMYMkr1lg5caqyDTOn+Zx7rsjjxzxQHCR0M+XA291ZhqfmnG0KxyEelu GMC0mmMpg6CHtamfP8b+VRXxmKtcRnaT+vt5d/I9A8AlgJHdgeHAGoQh4QmdCIYyqTuN770Ji6cu nUXM+as+wR/z//ZneMOWEiDIPMKCJmRcaauTlwOFmFOErpUfrfn8dHZXY7ZpwuhgymDIMD+PHl2f 3DGQZvKpjGzW6bO4NRMJFDgOUlsODkyWF1aasUG6JSFBlQoiqlCoMbGkyoNPMQG25DpNz0U0u5tV VqZpTa4tiKsqyqaRllirVUrrhlMp3/oYm54Hhz0UmpwgqkpCk4nITBO7bOsvgpFs7j78Qp+h+uTI TTE4bemZ6QO50YVR5i/lu1KrcDQ+GF/yRCF6K/FSry0IVF4tOdc9NnG2UscFaslsOacWHkaJhipK qNuFRtNO5Rpj+tpJ6rxPf4o5QhqUIOq/hKdeyll0xyDPHhxBpibdhWIxUTVRU2LNJpOazRjJVTb0 mb5BncNpZvJtNnEagqxLMZlEB0HKbTjaR6thZCLtPe7UqmaGeWilmwnT0luiGQ9uYXbeOoOIR2PN mKXEejsBDBIUGIhE/rag8sulIjuOh/lOps2sFU9kckvaf2G5I8VZ6RLPMLB/CC6BpjbGzR3zp4EU ia/kzE9wGDr6OGhjTRjk7J6e3T4tFjuTTM02rVp6G2nTM9CeRNycHaaY0zFjEhITomwxsKSjEMOk 8d9aDI8t/EndqNiHe65Od90vLrCOJwTRCNYPMgzDFR2+kq8oXsvXKEikDYqkH6j+h+9JIW01tRRj Q0zGbakSWiQas0KzW02jYIJiGJlIRFlFkVZFYJCfhEmPlTFUR8f30+tGVkIkAWlskkVKOYn9coIH Xkm5CfgB95A5CnzHSEPuIsIr9xlFD7yCh4sSOH/T+d0kNPKZEhP5u7z/oZS5kwn5oAyUECTgMQLI J4ep8plLGAelrPcje0NsZT+3O47OFEww0B6vV9G2Zmr1nzqYKEmmUXBV4fYYUGZ7/za2H0mHANIM KWG/3DBfFsn5ofJsL5xQ8FUeCmt0DtKUgJdZXW/R2um9TM/Lro9srg7mr+b9evgHyu3OludU8323 3lFU8Sy+Q4oACbrBDAjQqFKIF+fjXLFopqhTRsD+HHBAC7BPOmKi8QJG8DIkhCFokkBhkEmQHHNS PeNPB0LJZYliqAesFR74AU4UwAK9gpCq/iPn46OB1Li4ViSU3KKMCD857vUmcAw0y9AFmhL/UIkR IqEmhIVSJEEVcM2AxnaGlcJoUcCAKUDZME0QyTYYibVUIGBmCusTIzMyQSNQphU7xIzPqerL0jZL EWxpDGUVAkWEK4Zgba0CadLiOOlbCJTHqqNKoELAEIaVxUMIHaCsly1DmYWGjRGGaSEHTIK+muh+ f2vZiALPm5undAyJYNjTgaCtZmLhjin6dOWhdnBHtJqBE1ACEiQb2113UutKoSgsRJYwt1XV2JtJ bpXLq72b3bujbmTJEppWtMzNSZlaBkYYuWFmSROgiUHTY9jhSkQowdipQBlRdc6xRHxrcts91dmm +e12FXXdqeV5rnum7rtdCqd728oKUckTGyyRWXAKBpFWc5ZZ2hFGskoK/n1i6gxZeMOgCHrk1Hl9 OtJnMEumAh1EJgxsKanQRiWVBODgCJBrWacJXCUKaAmVSlWhDIXAlUSdVzzezQGQZmRrdyKCEHoH qhJc0GckmiLNwuiCodp2UpdyJkZXLnWN/BjJ7bMejOJ9CQlgxI6GGKthOEMkMAMYGAMhTJ9WtO7N +rbGsW1N1lFsLNZWMxkUHGxumUom6YbpRk7zMibik5NT0u+eeAtXUUyMqYpkWXDKLcV48+3XlfV0 JxX1rtNe3d7Qt564+fK3K+u6LX1t9XtVtXXAALEEyzZJE1lbdW2uUoNWUsp4YYEEzJQyErFEfpnC aksyksyZWmbMxFEbKqMAvUSfc/WJiov9wYEm8mlOuNNwVcOWhSkAoaFA2Ah11AmAQgcHHSAaOetN NNpVNCyk+jcb0WK/EsjNUpKTuguSznMksxjIYxMzTFtff629fl0jiGjHecsNYYwo76xRxhA0hDEw QaE0w9WOGlDt7kFuAoaRBf4oEkQ/5HFe0OsjmIogdiIL3A0RxSM7hkHxYSDEGKfkBqR2QoErIBph 3h32IlFvTj9NjiOdvdyj1Xc82bFkp7EE4yqpEEP0oh6Aw6vv8g6AqL6APtkQ/BweIdqz5DkiKP2g D+/YCJSllNNS2jBtH23HZmIkppaTZI0U6u5shoxijTWqVrmkkv3Yla1xlBU+UMRcUHxY4E5GA/Mr QSwr7w9a6A4N+dHBgckk3g4R23+Nomip9PkJ709CSeTmDsT8/WEmrFkUo+pbgGH4ayWb/S/ZturT 3z5o166bi0X3cebKhoDy5hMBAszGO8QPVj5varopTqTt3F2pV2tXebZIfnMthclQi+/YwsQWYRLg CmyFbha0GSYuZkokyphrWgAmcxxA/5YakdiNkmf+Mm4SpttgYYYEOBOTKunDGbRhiNCRBQ0VBAmm yDUiRiGOG4aF0pVywdnbADYEhX1W6JN4sdp8oSSJ5+2JE6UicpSNCPlIjcxLwffyc/IP1Mtq0j3O iRB0NpHc738mZ4p2cvrjykkeBqfkm9tpHchI4J+/8GzxidzqPTt0n3DbJJHwoqQkVCVKLCQQLBSQ qkxIiNIRMLCBCK1IgyD0OSa3dnmHiEeuSKIWxCxaSq/edHfH8KR5wPwJJ5p46n48SwyPJESpn5MT A/LbbmMefF2tO8jVWi04kR6SDykgyPshIaFT3zDZHuF9nU/Tc/Xb+oDoen6lhGAmWIQAmETb0nqF YD/GBGgJjcFSQOLvpBU0ju6NkVNO2KFAZSBkGYQkVcVisXJJGSale0CqliqJz8CI+bDiAqnEQ3il BVROamTPz/Rr7ZHwmfkNSB4x3P1zjgtLT9nq9mjdLS02ekyzOgk3stLRWJL68zcYmFbpIrgEi35K YJzJZmiSEJSGJHqwIAjHPt8Uq8eCISMdtqESUSeqy8oKAS5ojPjdGkM74SiMK3RenrRDdEF6+gg9 dEqQOv168liA20vVMQbAzrt2RrcV8ipLzFJOpkwhMlwok6iHUAm/U4K9UEdO3XoDjgMXakGYq86u qdDJ4Kjyrwlp4O/u6nkcjHG2STUsaNIGHVzCBQwdFpDX6ixlLPRGZ3irJCcBrgDElG7YMs3tCUTy NnE9Hva5QYhaUAYJFEwy4mW4xHau7vCDFjTo49DNqhAVFh4ZGSLOyYwtR3Yhv3PLp+zetsLefw5G NYt3mvn7J2ks9yoxKK/mZjwMCANwGEKTQvzroJbxI561fdbnR8Sk4jsH0iDnz76gNJScydBu2bDO RtowLeEltnVpAG22AqENLQ0ouobYqq6rblGWFMakIq02g70kNCFU+9XGktRAeNJjQd6EMg+PPFK+ QZnNtOwLdkVkgAgFLtnMzaRKiUIFuEppJKPu4HadDQNkg2pI/5W9v6L96p9fYCbRkh1EWV96+1Ud p5R0PtVdBIyqZiDhKpI95rJHvrWhJkNXVSSTaxqeKY4UIZiGCiDoOWriZSPtr8eFMVNnBDZwM24z 18XNcObFgp8+SSJgsnqKUzBBuq79GfoweSH8hAbmh2vSFFlJBFOJwUpjwUn8Br1f37egQffN3V80 ZMj3/Mbpo2QfKnxv1igEpzOi/yITweFHnQSRFro6jJSG2x6wpHR4Y8Uihye4K9VRQ2R0qHJRpBpe Apw3J2s0+chTsODLIgTAiUjPoH4vXcj4E6jLFDCTulHB33LQShhcbEhV3JVyfL6SM1wljNllWzeB a/sWbrh0ipEbWoRQUak3E978WFsAepgiVapgkH22S/lJfbBkuwbIYdqptmEEFX3SyWVLW5ho4yTI pPZZyJLof7UMnvSz1ivZfFISXqQuqO3pNCGhKaTF6wnWnid3yYILExQnCOfAgRwiRYn5oi5Cb/J0 eBI7yqhkBG8WAJGYCKMwqCbuxdbW05UJqUgNAbxmWF2YjmowVMDGMVKRoVLJa6tXu93y9epDmo0p q6mW/WuzLY5vV5bXAixrs1rdWMkMVbDdyiQyxE4N7l2SpJ2ab5rtuXtd02ipCwZMQU1RSUxItU3H 3O4wI6GPEDrNfhu/WyJlPsKfb+K7156ai3426thSA2BMW2a/X25lXDVa6tTuyrizARBElJSi5jlI jFmdpbKkxG1KfuLnK/vm9zOubM22TJZJmjSJUiPq3DbA3diST3gCDgkKnywT5HNU7fn6CAqcw8Iq wk5YHk/xamz66yy0q9We656TM396TGa7pBcE9QpnUq1SqLkUtBnwsekOqMOVchZyeJgFCdcU1csZ XeZl/ow1TVi1lm7VMi8J5uuvWCgYzOXrkCVBSBWMgizFgoF6GYlKHja/0fZ8Xu8k4LxO86NIaLFx gU3zmtXZwrYnljqkUwkNXa1TsuFlJWeYwLbwbKUUnDuDmQhqk6QznLriyUfXUmrbORE5dFVSqaTm rp0STSoVVWLZO29On5N7m51D6e/cI3K0D0HNKGQHPSjEKA8YOkrtKoamNkxzANaNSakHqh1FJaTE orBlnizEJxFQjFJaStmQkcZITEk1srTImIrKMxMLVWGlItsquspNXnWem5utOLYsZUpZoZoXt4dV rXNVVWI0zdFIEkJoodHESA6aQjaZguQrV8iQK3QceWucc4DcZA2IRyZpdRbNhBWhhfDbNCZYrKLY gqkbHCsypYpCbfXar5U1FUl5oMZFhmaNaBpDFVxQ1G0mBAJGiZsUtwOJBsa2AsjgOMrCSQWVZo1Z m8SCI0nB9QAtpC4Zw0gkeOO5LeRR5bMChxtuAaYkhGnTVca4MqDZCsspTYMZLGMaUSe74qKxjQMq KlJYkhwNyx0nEgzY2zU8AUYUt1uoimFVpCGAcu3bzjnrnHIrYvraXQly2NLiBEUD5paKdtsMXVM1 oLuDHVyhuSapQVVFkRKajuEUdNBwwgk3jGSJJHTo3wsnVByBYwHejGqRYoTG0024ApvDCsZxpC4f F6dIBVJQ04PV1V1REILORpVb42y1FgaL7UD36EOBq4uXt8NswrlJRNMjIAwdUaukJ29KUrlBxdeN RvLP1HJiCjG0bwKLGAgaTBpLnGx61lEYux4sRRpGDMzCczEzEFzCmbItRsAbJlKbiXG/HItNAquk zormLrTeotIiRNt9/F4MQGINuNbQO11GvyNCJo8ZcYwa6Z01pg7OYFEHKU0zdoCxoyJSEd0UySDb CMKczesWkNg3CoSnAA9ACFda8bp8hwAtbmVBjXObe2YJnDKegppLwuRgSOM1jTc70jnlgc44RwTl mOpuGKoMDgxIhzHDBVJiB13DdgjQGdqCcSNzKAWkIaRr92tK19gAAH3mtlbay/CJRykSbtJUbbjW 6klok12dTjhtm6mygcFU2HcAwQdkV7bKqqqqqtcTETiiUbHHNTwQDiaVLTTBYcuc30iSI8XE3zEp zCLUm+Tu306GTKTClUqlUqlUqlUpWy6qTRSlVenPbF1OLGurNdUThabac0bugNrJvSzHCx8JLujd rekSohN6YTcI6ZrU1NYdnYssNyMuKVKq83PE93vbu7m925ZK7cy7Vve9Rzec8vbc3K6bc3OXl3u9 67GQ6lURl6eDx10d5SGxYOZDcBapx1FQ6nOY2IpYRikqNbhGUjhNoyKEJCEgRkkIxoYwY+JTVMbq VSmxAgPAVI4HwkDur3f2W66E/Vo6GlA/vGBRU6AGJiSCxKtQkvcJsEjiD9d7q0kjnTTtEakk05Go ypIZB78wRiYEE1OSqJSJqofiFAgDSNsEibF4M5JuMrotzZQdYK9/cWKBKjy4G4YqgV7E+7IC+w/7 fx9QcFHxdBTsD0Lom1hhNLVAMd8Iwj0P3e+EkjtuSMdMdYDzqev0oQ9YiOEkj38tRPtkI5sS6wPG CeJN17XeYkmolX5xk+6NNSJqWClImSoGcA3zYXX3YuXi1CRsO+hEMJqhRiBJnEFD4NgV7etVRRCI FseXn08/pxjOb70JlrWIwS4MbKNMaYENeROtQOZF4jsw7ee7PfBCsEU6zr3putambvN3K5ucott5 qounMZtWlkiDGKYQm1zWYutatLV6rbu+wAASAAFUWO6IGwiujbFcLZs63ZEdkFTvEepRT6SE+kCB wj4yR63jxdIPm+POMnNzFoXwg3IOcC9qDHghfPwzjrWqsu7u7u7sV3dW3iR9gI+P0Ee/q0AkfBiU 7yQEyVBFwJkQPOdSHs6g8fn5InOQAE+KDgBTIqwusDJEXULoQJFdBhApkyIB4HenND0nt5P3pqmz SbZLU1tTVkRGIopJhHY3PLDsLyjcUUZJIhGDmECHWNpYKJiClSZghCWICGCCAYRpBZZQZU6yADJU CShoYhViZ4FbHBKBepfW1Y1Xk+glLIxqAj2IJ/W0AjkAqpvw0nAFVGVF5meLZTkivaJKdb6pBePH DIr2WRqFA2h0Qn64XIRZ+fDx+5bff2cAPjgfbmCNKZUkexJwTUOEkRM0uTlZjSU5mI0JQuThIMkM kwywysMGSFCtmEK8LLWUGH0T/rLcNj/C2+5JJsP9TQrEzcHY/h9HIb22w6I8IEMBDJo94e8AqpHP 4kB4iiD7d+PYiiepVU7QRCRwgFyaER6QJwhU6lBZKcsAfoQD+ZERLKLLK8dULOjzKPnomx2J9Fqy Sx+78LhBUkiSKlR/yTcPGc3vT2odzidZ5EUB7EgRlP2X1KhwMI4qFBYBENQwVDH3AwyH6D3DEy+D WaIiJiGTLKCCKqycMeYCnI2OAXWv0wJ4CwkOfk+MepkAk/0yPxRMjaxJLIj1L1QPMMkxPdD28HSR oUH7Dbo+yX9xIKwSRJEqNIkARHWTg2Cwn2Dx5PlERzxVsWHhEj1eh5tYySnsxHw+C86bWzhH0wjV vsZ0ak1T2Cwr7HckyIqE0xYVHWMSSr+wM/D8b/dNUmpJpP1CE8RYYLoqIGCgL1Koh3wIUA/Hhtqq taNW6l+G42mkbq2qTzmzTbeSBy6bPDA0dWcvaf5HJHwFd12RYSPpwXAlgzSpa01otSpSSJaS2WNY m01rc67trbqFJrJC3Oqzd1W6u62t1o2iSZk1iSmlsxMLJtGtstGd2rohSsaLe/abqr9+tlaAOrDe FauBZeQz7uOtGEUQSvu60F65873tGLlpkkoRYjbbUWxiS1ioqNRaK0sismtFbMsTNY1o1VgNtfTm 2ndcABprMjWZG1p3Vbu7ctKjNjGtiNGo0AUSb22+y1u1L3SVABlM5YMSRmOJk4qaOSHcgw8ZIUE9 tyRtCKJfp+qL1fssdUBTcIO6y3sAJlRfW9YhRtAR/vQRUWsYEkOkBXNdoEHfaVLRGXrkx34Hh8fv ml9wk+D9rWlhrDFJRqxgo9S4mYwhBKSDJK0httrjtkKMQwQZWVNDZSq0NU1rKzLSlKostSCqotk4 VBNyQ3NhPvoIk5sGRQxBKMMkImfvMQwQSA1E0LgvG1cDE2NRkjK6XW3K19a1Sa2osUVYVCYBQIJV SYVEka4IIeXcDYTZmhKIeUOQ6lXRMyii6uiPm3kF+P5Q2yHDAN2YZdoAqaRQsOAKL4awvMhENTS2 nYmk/C8pJQNhDmG0rAVsSaUhcopKQlUqlJIApKCFwnbfSyndg6hXfWuMNBwoPemr5vW+d3w5zVpZ quTdXrapnASLelDfLZbREPV8ugzi5RuBTLTOGqChg+KNjlk2ypbu2nCIDjlVVBYwYLgMQGuXAjG2 xRQggs0XWhosSLTNFf2cItFwMe5ucXjY2jfe7BvQhGxs30CNIA55HDYTh+XWAqJu5G7xiloLTsov 1cAXHAZmgGicI5Cw5SbVqJAaUS0NibGNsaQLFo6W0uxnG3RKdCTkAkgEkkgEYDIwjTSZGiOQDViN pNIjfd3MUzMlsrIBOIB5U+95+gfUrJweDQkjQr9yPpSof4PJasLApblSWyjNJtaaZlqgqEKEJFFh FlFgJIABdOhAh37RDlrZBAh/EIeZikIqapqiJAkBOrXpBVB08zl22dgfBB8Ej8Mon5oDaVPmokFV 1IIlIbyqFIDoYCRChGSFaUkRspbI0bY0mpKQ2tKagSE0qSKaZarqvlJKpVKpVKpVKwSP79kh80Gs XaEUMkfwwGMNIUFGpA1AwSET9UCBtVkAnP+/DIdoadjMyUNoA1KcIE/hKI5LSKnSAEhf5BANIDDi EGsHKAkneUCjQ/5obmWb2kkVXVSm820Va7jTbXgK5vpV7LR/9TlU927dK+DY1fMo2tc0zQmS1iqi TMo1GZFRotM1giTVfHUqKg0UmzTVYZlQhS7oNQGSGCzrWCJjPdbauHdzW7SltduwUZpqXOT46d2r m2pmrS9Iu7uzfSiSxoLMM4Qa0GWEQ5Mk6O3Fd8lKSpUoyTbZm1RTSTX2y61iaZmjSYUVK1NaS2v2 Fq6ElISUar8CDEWYiKuXOsVGLpRVtjGuq5m9rpr5ltt8+T8O3Xd8+JAAClAAAAoAIAAACCAgAVZh AgHdJxUhVmSgaKaXFZn6pNQaQNociFUhcopCmSGWxOKxUWNMyE3YB813YRa4VBO4xVuGtXSzE1fO i1v/8XckU4UJC/EKffA= >From green@gcc.gnu.org Sat Dec 23 12:16:00 2000 From: green@gcc.gnu.org To: apbianco@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: java/1159 Date: Sat, 23 Dec 2000 12:16:00 -0000 Message-id: <20001223201600.23108.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01296.html Content-length: 1188 The following reply was made to PR java/1159; it has been noted by GNATS. From: green@gcc.gnu.org To: apbianco@gcc.gnu.org, bryce@albatross.co.nz, gcc-gnats@gcc.gnu.org Cc: Subject: Re: java/1159 Date: 23 Dec 2000 20:09:32 -0000 Synopsis: Source parser miscompiles loops when using "-O" State-Changed-From-To: open->analyzed State-Changed-By: green State-Changed-When: Sat Dec 23 12:09:32 2000 State-Changed-Why: You can work around this bug by compiling with -fno-defer-pop. The defer-pop docs say: Always pop the arguments to each function call as soon as that function returns. For machines which must pop arguments after a function call, the compiler normally lets arguments accumulate on the stack for several function calls and pops them all at once. Compare "gcj -O0 -fdefer-pops -S Loop.java" with "gcj -O0 -fno-defer-pops -S Loop.java". If you look at the asm code for the method calls within our loop, you'll see that we're popping the stack twice (once after each function call, and the second time at the end of the loop)! http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1159&database=gcc >From gerald@gcc.gnu.org Sat Dec 23 16:56:00 2000 From: gerald@gcc.gnu.org To: bkoz@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: web/1024 Date: Sat, 23 Dec 2000 16:56:00 -0000 Message-id: <20001224005600.24322.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01297.html Content-length: 749 The following reply was made to PR web/1024; it has been noted by GNATS. From: gerald@gcc.gnu.org To: bkoz@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk Cc: Subject: Re: web/1024 Date: 24 Dec 2000 00:51:43 -0000 Synopsis: libstdc++ web pages reference sources.redhat.com mirror list Responsible-Changed-From-To: gerald->bkoz Responsible-Changed-By: gerald Responsible-Changed-When: Sat Dec 23 16:51:43 2000 Responsible-Changed-Why: Ben is responsible for libstdc++ snapshots. Over to him. State-Changed-From-To: open->analyzed State-Changed-By: gerald State-Changed-When: Sat Dec 23 16:51:43 2000 State-Changed-Why: Agreed. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1024&database=gcc >From gerald@gcc.gnu.org Sat Dec 23 17:06:00 2000 From: gerald@gcc.gnu.org To: gerald@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: web/1022 Date: Sat, 23 Dec 2000 17:06:00 -0000 Message-id: <20001224010600.25084.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01298.html Content-length: 620 The following reply was made to PR web/1022; it has been noted by GNATS. From: gerald@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk Cc: Subject: Re: web/1022 Date: 24 Dec 2000 01:04:35 -0000 Synopsis: libstdc++ list archives references to sources.redhat.com State-Changed-From-To: analyzed->feedback State-Changed-By: gerald State-Changed-When: Sat Dec 23 17:04:35 2000 State-Changed-Why: I now tried to fix this by myself. Can you please check whether it is okay now? If not, what's still broken? http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1022&database=gcc >From gerald@gcc.gnu.org Sat Dec 23 17:26:00 2000 From: gerald@gcc.gnu.org To: gerald@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: web/830 Date: Sat, 23 Dec 2000 17:26:00 -0000 Message-id: <20001224012600.26495.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01300.html Content-length: 1000 The following reply was made to PR web/830; it has been noted by GNATS. From: gerald@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk Cc: Subject: Re: web/830 Date: 24 Dec 2000 01:24:07 -0000 Synopsis: gnatsweb creates PRs with bogus version information State-Changed-From-To: analyzed->closed State-Changed-By: gerald State-Changed-When: Sat Dec 23 17:24:07 2000 State-Changed-Why: Not everything has a proper version -- just consider the web pages. Parts of GCC which are released independently as well, like libstdc++ have a different version schema. So, given that we now recommend using gccbug anyway (which in part was triggered by this very PR), I don't think we should start hacking gnatsweb in such an extremely specific manner. That said, I have, however, made all other changes suggested in this PR (specifically to gnats.html). http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=830&database=gcc >From jsm28@cam.ac.uk Sat Dec 23 17:26:00 2000 From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: gerald@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: web/1022 Date: Sat, 23 Dec 2000 17:26:00 -0000 Message-id: <20001224012600.26490.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01299.html Content-length: 1083 The following reply was made to PR web/1022; it has been noted by GNATS. From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: gerald@gcc.gnu.org Cc: gcc-gnats@gcc.gnu.org Subject: Re: web/1022 Date: Sun, 24 Dec 2000 01:16:27 +0000 (GMT) On 24 Dec 2000 gerald@gcc.gnu.org wrote: > Synopsis: libstdc++ list archives references to sources.redhat.com > I now tried to fix this by myself. Can you please check whether > it is okay now? If not, what's still broken? The links to mbox archives are OK, but http://gcc.gnu.org/ml/libstdc++/2000-12/ still says "This is the mail archive of the libstdc++@sources.redhat.com mailing list" as does the most recent individual message in the archive. It should be clear whether it is indeed fixed when more messages arrive at the list - new messages ought to have at the top of the HTML version "This is the mail archive of the libstdc++@gcc.gnu.org ..." (regardless of to which address they were sent), as should all indexes (date/subject/author/thread) of current and new months. -- Joseph S. Myers jsm28@cam.ac.uk >From gerald@gcc.gnu.org Sat Dec 23 17:36:00 2000 From: gerald@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: web/665 Date: Sat, 23 Dec 2000 17:36:00 -0000 Message-id: <20001224013600.28447.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01301.html Content-length: 838 The following reply was made to PR web/665; it has been noted by GNATS. From: gerald@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk, nobody@gcc.gnu.org Cc: Subject: Re: web/665 Date: 24 Dec 2000 01:26:54 -0000 Synopsis: gcc list archives for Jan 1999 still broken Responsible-Changed-From-To: gerald->unassigned Responsible-Changed-By: gerald Responsible-Changed-When: Sat Dec 23 17:26:53 2000 Responsible-Changed-Why: I have contacted overseers at least two times concerning this, probably more often, w/o any response. Apart from that, I cannot do anything. :-( State-Changed-From-To: open->analyzed State-Changed-By: gerald State-Changed-When: Sat Dec 23 17:26:53 2000 State-Changed-Why: Confirmed. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=665&database=gcc >From zome@iname.com Sat Dec 23 19:56:00 2000 From: zome@iname.com To: gcc-gnats@gcc.gnu.org Subject: c/1504: Segmentation fault Date: Sat, 23 Dec 2000 19:56:00 -0000 Message-id: <20001224034927.10255.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01302.html Content-length: 293405 >Number: 1504 >Category: c >Synopsis: Segmentation fault >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Dec 23 19:56:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: zome@iname.com >Release: gcc version 2.96 20000731 (Red Hat Linux 7.0) >Organization: >Environment: RedHat 7.0. Out of the box >Description: gcc -fPIC -I../../Pax -I/usr/include/python1.5 -I/usr/local/include -g -O2 -I/usr/include/python1.5 -I/usr/include/python1.5 -DHAVE_CONFIG_H -c ./curveobject.c ./curveobject.c: In function `add_bezier_rect': ./curveobject.c:781: Internal error: Segmentation fault. Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. make: *** [curveobject.o] Error 1 >How-To-Repeat: Try to compile Sketch, the vector drawing program. http://sketch.sourceforge.net/ >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="curveobject.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="curveobject.i" IyAxICIuL2N1cnZlb2JqZWN0LmMiCiMgMjIgIi4vY3VydmVvYmplY3QuYyIKIyAyOCAiL3Vzci9p bmNsdWRlL21hdGguaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg MzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5o IiAyIDMKCgoKCgoKCgoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyA1NCAiL3Vz ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwpleHRlcm4gZG91YmxlIGFjb3MgKCBkb3Vi bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi bGUgYXNpbiAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoIGRvdWJsZSBfX3gp OwoKZXh0ZXJuIGRvdWJsZSBhdGFuICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFu ICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4yICggZG91YmxlIF9feSwgZG91Ymxl IF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpOwoK CmV4dGVybiBkb3VibGUgY29zICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3MgKCBk b3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgc2luICggZG91YmxlIF9feCk7IGV4dGVybiBkb3Vi bGUgX19zaW4gKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgdGFuICggZG91YmxlIF9feCk7 IGV4dGVybiBkb3VibGUgX190YW4gKCBkb3VibGUgX194KTsKCiMgNzggIi91c3IvaW5jbHVkZS9i aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoIGRvdWJsZSBfX3gpOyBleHRl cm4gZG91YmxlIF9fY29zaCAoIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW5oICggZG91 YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91 YmxlIHRhbmggKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKCBkb3VibGUgX194 KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f YWNvc2ggKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKCBkb3VibGUgX194KTsg ZXh0ZXJuIGRvdWJsZSBfX2FzaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW5o ICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoIGRvdWJsZSBfX3gpOwoKCgoK CmV4dGVybiBkb3VibGUgZXhwICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19leHAgKCBk b3VibGUgX194KTsKCiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl cm4gZG91YmxlIGZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGRv dWJsZSBfX2ZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91 YmxlIGxkZXhwICggZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9f bGRleHAgKCBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cg KCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoIGRvdWJsZSBfX3gpOwoKCmV4dGVy biBkb3VibGUgbG9nMTAgKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwICggZG91 YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmICggZG91YmxlIF9feCwgZG91YmxlICpfX2lw dHIpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoIGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKTsK CgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fZXhw bTEgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwICggZG91YmxlIF9feCk7IGV4 dGVybiBkb3VibGUgX19sb2cxcCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbG9nYiAo IGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoIGRvdWJsZSBfX3gpOwojIDE0MyAi L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBwb3cgKCBkb3Vi bGUgX194LCBkb3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoIGRvdWJsZSBfX3gsIGRv dWJsZSBfX3kpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91 YmxlIF9fc3FydCAoIGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90ICggZG91Ymxl IF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoIGRvdWJsZSBfX3gsIGRv dWJsZSBfX3kpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0ICggZG91YmxlIF9feCk7IGV4dGVybiBk b3VibGUgX19jYnJ0ICggZG91YmxlIF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoIGRv dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBk b3VibGUgZmFicyAoIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIGRvdWJsZSBfX2ZhYnMgKCBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f Zmxvb3IgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKCBkb3VibGUgX194LCBk b3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKCBkb3VibGUgX194LCBkb3VibGUgX195 KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9f dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAo ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVy biBkb3VibGUgaW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OyBleHRlcm4gZG91YmxlIF9faW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp OyBleHRlcm4gZG91YmxlIF9fZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRl cm4gZG91YmxlIHNpZ25pZmljYW5kICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaWdu aWZpY2FuZCAoIGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoIGRvdWJs ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv dWJsZSBfX2NvcHlzaWduICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0 ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKCBkb3VibGUpOyBleHRlcm4gZG91Ymxl IF9fajAgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGoxICggZG91YmxlKTsgZXh0ZXJuIGRvdWJs ZSBfX2oxICggZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOyBleHRlcm4g ZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoIGRvdWJsZSk7IGV4 dGVybiBkb3VibGUgX195MCAoIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTEgKCBkb3VibGUpOyBl eHRlcm4gZG91YmxlIF9feTEgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJs ZSk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpOwoKCgoKCmV4dGVybiBkb3VibGUg ZXJmICggZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoIGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgZXJmYyAoIGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmZjICggZG91YmxlKTsKZXh0ZXJu IGRvdWJsZSBsZ2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hICggZG91Ymxl KTsKIyAyNDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUg Z2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKCBkb3VibGUpOwoKCgoKCgpl eHRlcm4gZG91YmxlIGxnYW1tYV9yICggZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4g ZG91YmxlIF9fbGdhbW1hX3IgKCBkb3VibGUsIGludCAqX19zaWduZ2FtcCk7CgoKCgoKCmV4dGVy biBkb3VibGUgcmludCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcmludCAoIGRvdWJs ZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyICggZG91YmxlIF9feCwgZG91YmxlIF9f eSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVy ICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVyICggZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4 dGVybiBkb3VibGUgX19yZW1haW5kZXIgKCBkb3VibGUgX194LCBkb3VibGUgX195KTsKCgoKZXh0 ZXJuIGRvdWJsZSBzY2FsYiAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pOyBleHRlcm4gZG91Ymxl IF9fc2NhbGIgKCBkb3VibGUgX194LCBkb3VibGUgX19uKTsKCgoKCmV4dGVybiBkb3VibGUgc2Nh bGJuICggZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKCBkb3Vi bGUgX194LCBpbnQgX19uKTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCk7IGV4dGVy biBpbnQgX19pbG9nYiAoZG91YmxlIF9feCk7CiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIg MwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21h dGhjYWxscy5oIiAxIDMKZXh0ZXJuIGZsb2F0IGFjb3NmICggZmxvYXQgX194KTsgZXh0ZXJuIGZs b2F0IF9fYWNvc2YgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGFzaW5mICggZmxvYXQgX194 KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu IGZsb2F0IGF0YW4yZiAoIGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRh bjJmICggZmxvYXQgX195LCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBjb3NmICggZmxvYXQg X194KTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2lu ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu IGZsb2F0IHRhbmYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mICggZmxvYXQgX194 KTsKCiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBj b3NoZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmICggZmxvYXQgX194KTsKCmV4 dGVybiBmbG9hdCBzaW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmICggZmxv YXQgX194KTsKCmV4dGVybiBmbG9hdCB0YW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf X3RhbmhmICggZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoIGZsb2F0IF9feCk7 IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmhm ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmICggZmxvYXQgX194KTsKCmV4dGVy biBmbG9hdCBhdGFuaGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKCBmbG9h dCBfX3gpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0 IF9fZXhwZiAoIGZsb2F0IF9feCk7CgojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz LmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoIGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsg ZXh0ZXJuIGZsb2F0IF9fZnJleHBmICggZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpOwoKCmV4 dGVybiBmbG9hdCBsZGV4cGYgKCBmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KTsgZXh0ZXJuIGZs b2F0IF9fbGRleHBmICggZmxvYXQgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0 IGxvZ2YgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2dmICggZmxvYXQgX194KTsKCgpl eHRlcm4gZmxvYXQgbG9nMTBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmICgg ZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKCBmbG9hdCBfX3gsIGZsb2F0ICpfX2lw dHIpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoIGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cik7CgoK CmV4dGVybiBmbG9hdCBleHBtMWYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHBtMWYg KCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKCBmbG9hdCBfX3gpOyBleHRlcm4g ZmxvYXQgX19sb2cxcGYgKCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoIGZsb2F0 IF9feCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmICggZmxvYXQgX194KTsKIyAxNDMgIi91c3IvaW5j bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmICggZmxvYXQgX194LCBm bG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19wb3dmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoK CmV4dGVybiBmbG9hdCBzcXJ0ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NxcnRmICgg ZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195 KTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0 ZXJuIGZsb2F0IGNicnRmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKCBmbG9h dCBfX3gpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxv YXQgX19jZWlsZiAoIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmICggZmxvYXQgX194 KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmICggZmxv YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoIGZsb2F0IF9feCk7CgoKZXh0 ZXJuIGZsb2F0IGZtb2RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19m bW9kZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZs b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK ZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQg X19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVt ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKCBmbG9hdCBf X3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gp OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZs b2F0IGNvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195 KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVl KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoIGZsb2F0 KTsgZXh0ZXJuIGZsb2F0IF9fajBmICggZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmICggZmxvYXQp OyBleHRlcm4gZmxvYXQgX19qMWYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxv YXQpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgeTBmICgg ZmxvYXQpOyBleHRlcm4gZmxvYXQgX195MGYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCB5MWYgKCBm bG9hdCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50 LCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZs b2F0IGVyZmYgKCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmYgKCBmbG9hdCk7CmV4dGVybiBm bG9hdCBlcmZjZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKCBmbG9hdCk7CmV4dGVy biBmbG9hdCBsZ2FtbWFmICggZmxvYXQpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmICggZmxvYXQp OwojIDI0NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGdh bW1hZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmICggZmxvYXQpOwoKCgoKCgpleHRl cm4gZmxvYXQgbGdhbW1hZl9yICggZmxvYXQsIGludCAqX19zaWduZ2FtcCk7IGV4dGVybiBmbG9h dCBfX2xnYW1tYWZfciAoIGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApOwoKCgoKCgpleHRlcm4gZmxv YXQgcmludGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoIGZsb2F0IF9feCk7 CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKCBmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmICggZmxvYXQg X194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4g ZmxvYXQgcmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9f cmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxi ZiAoIGZsb2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmICggZmxvYXQg X194LCBmbG9hdCBfX24pOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKCBmbG9hdCBfX3gsIGlu dCBfX24pOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mICggZmxvYXQgX194LCBpbnQgX19uKTsKCgoK ZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0 IF9feCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDEwMCAiL3Vzci9pbmNsdWRl L21hdGguaCIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCmV4dGVy biBsb25nIGRvdWJsZSBhY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs ZSBfX2Fjb3NsICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAo IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sICggbG9uZyBkb3Vi bGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAoIGxvbmcgZG91YmxlIF9feCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25n IGRvdWJsZSBhdGFuMmwgKCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCk7IGV4dGVy biBsb25nIGRvdWJsZSBfX2F0YW4ybCAoIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194 KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs b25nIGRvdWJsZSBfX2Nvc2wgKCBsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl IHNpbmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sICggbG9u ZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sICggbG9uZyBkb3VibGUgX194 KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAoIGxvbmcgZG91YmxlIF9feCk7CgojIDc4ICIv dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwg KCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAoIGxvbmcgZG91 YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBl eHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u ZyBkb3VibGUgdGFuaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX190 YW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKCBs b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKCBsb25nIGRvdWJs ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u ZyBkb3VibGUgYXRhbmhsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f YXRhbmhsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAo IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKCBsb25nIGRvdWJs ZSBfX3gpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBs b25nIGRvdWJsZSBmcmV4cGwgKCBsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAoIGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u ZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsICggbG9uZyBkb3VibGUgX194LCBpbnQg X19leHBvbmVudCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAoIGxvbmcgZG91YmxlIF9f eCwgaW50IF9fZXhwb25lbnQpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsICggbG9uZyBkb3Vi bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAoIGxvbmcgZG91YmxlIF9feCk7CgoK ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25n IGRvdWJsZSBfX2xvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl IG1vZGZsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fbW9kZmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIp OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBk b3VibGUgbG9nMXBsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9n MXBsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKCBsb25n IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAoIGxvbmcgZG91YmxlIF9f eCk7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBk b3VibGUgcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgpl eHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk b3VibGUgX19zcXJ0bCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBo eXBvdGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2h5cG90bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKCmV4 dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2NicnRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl IGNlaWxsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKCBs b25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAoIGxvbmcgZG91Ymxl IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m YWJzbCAoIGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk b3VibGUgX19mbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBm bW9kbCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91 YmxlIF9fZm1vZGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRl cm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRv dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBm aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50IF9f ZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg ZHJlbWwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2RyZW1sICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCgpleHRl cm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCmV4dGVybiBs b25nIGRvdWJsZSBjb3B5c2lnbmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2ln bmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKCBsb25nIGRv dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAoIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxv bmcgZG91YmxlIGoxbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsICgg bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKTsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg ZG91YmxlIHkwbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsICggbG9u ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsICggbG9uZyBkb3VibGUpOyBleHRlcm4g bG9uZyBkb3VibGUgX195MWwgKCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwg KGludCwgbG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBk b3VibGUpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsICggbG9uZyBkb3VibGUpOyBleHRl cm4gbG9uZyBkb3VibGUgX19lcmZsICggbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg ZXJmY2wgKCBsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsICggbG9uZyBk b3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsKIyAyNDYgIi91c3IvaW5jbHVk ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKCBsb25nIGRv dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAoIGxvbmcgZG91YmxlKTsKCgoKCgoK ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAoIGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdh bXApOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKCBsb25nIGRvdWJsZSwgaW50ICpf X3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsICggbG9uZyBkb3VibGUg X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4 dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f bmV4dGFmdGVybCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKCBs b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Jl bWFpbmRlcmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCmV4dGVybiBs b25nIGRvdWJsZSBzY2FsYmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbik7IGV4 dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg X19uKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sICggbG9uZyBkb3VibGUgX194LCBp bnQgX19uKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAoIGxvbmcgZG91YmxlIF9feCwg aW50IF9fbik7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4g aW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGgu aCIgMiAzCiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsK IyAyMzYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAt MSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lP Tl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjEg Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlw ZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAg ZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0 aW9uICpfX2V4Yyk7CiMgMjkwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNzkgIi91c3IvbGli L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2Zsb2F0LmgiIDEgMwp1bmlv biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwojIDI5MCAi L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg MjgxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwpleHRlcm4gX19pbmxpbmUg ZG91YmxlIF9fc2duIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3Vi bGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0x LjApOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5s aW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDog KF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf X3NnbmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAo bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/ IDEuMCA6IC0xLjApOyB9CgoKCiMgNDY2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkg eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0 YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyBy ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ks IGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0 aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6 ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg YXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192 YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg fQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f dm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf X3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJs ZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv YXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u ZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lz dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5c dCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkg OiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQoj IDQ4MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk b3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNt IF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJl dHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg eyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDog Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBf X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv bmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChf X3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5l IGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1 bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5lIGRv dWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpl eHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGlu X2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBk b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5s aW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWls dGluX2ZhYnNsIChfX3gpOyB9CiMgNTA3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRv dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIg KF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0 ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19y ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3Vs dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lu bGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg ZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10 IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoK ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJu IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVu c2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9 IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAw MCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyBy ZXR1cm4gX19uLl9feGxkOyB9CiMgNTE4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi IDMKIyA1MzMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9f aW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0 aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7 IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f dmFsdWU7IH0KIyA1NDQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g X19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1 bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0 aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl cm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192 b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4 dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu IF9fdmFsdWU7IH0KIyA1NTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCgoK CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkKewog IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2Fs ZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkp OyByZXR1cm4gX192YWx1ZTsKfQoKCgojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0 ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICog MS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNl IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDog Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcg ZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEz NTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBf X3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9f dmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf X2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs b25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQx NDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19h c20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQi IChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQojIDU5 NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi bGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUg ZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19m YWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBf X3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxp bmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk b3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChf X3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsg fQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgeyByZXR1cm4g bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9 IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAo X194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVy biBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9 CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBs b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShf X3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxp bmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0g X19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAg KyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0 YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195 KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChk b3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kg KiBfX3kpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQg X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IGV4dGVybiBf X2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpleHRlcm4g X19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18g KCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194 KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2diZiAoZmxvYXQg X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g X19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9f dm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUp IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgoKCgoKCiMgNjkzICIvdXNyL2luY2x1 ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3Vi bGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1 ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7 IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNt IF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0 IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9f eCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg bG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJl Z2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9f dm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi anAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCks ICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDcwNiAiL3Vzci9pbmNsdWRl L2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJs ZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBk b3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAg IHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAyIDMKIyA0MDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAyMiAiLi9jdXJ2ZW9iamVj dC5jIiAyCgoKIyAzOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMQoKIyA1OCAi L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDEgMwoKCgoKCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu OTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAz NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgNDMgIi91c3IvbGliL2djYy1saWIv aTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2J1 aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDIgMwoKCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5z aWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5 cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9u ZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFk X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIv dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7 CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGlu dCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVk ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7 CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Owpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoK dHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7 CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRl ZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191 X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRf dCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0 eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsK dHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFs WzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIg Kl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYg bG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRl ZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgaW50IF9fZmRfbWFzazsKCgojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXMuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRz WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBl ZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90 OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBf X2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9s b25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5 cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNu dDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90 IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoK dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRl L2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5o IiAxIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAg fTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBf cHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7 Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rl c2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19z Y2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9f aW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQg X19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6 ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVh ZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhy ZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRf Y29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5 cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0 aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRf ZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7 CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50 IHB0aHJlYWRfb25jZV90OwoKCiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCiMgMTY2ICIvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCiMgNTggIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNs dWRlL19HX2NvbmZpZy5oIiAxIDMKIyAyODcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt bGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90 OwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUv c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1 ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyA0 NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg Mwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3Qg X193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMg MjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19v ZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBz dHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zw b3M2NF90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAyOSAiL3Vzci9pbmNs dWRlL2djb252LmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjkgIi91 c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAog IF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dD T05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FM X0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RF U0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05W X0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoK CnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9f Z2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRl ZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2Nv bnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln bmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVm IGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVm IHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBl ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICos IHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNp Z25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1 bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRl eHRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg KiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlf ZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252 X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgq X19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2Rh dGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2Nv bnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9f dHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0 YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9s b2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsK CiAgaW50IF9fY291bnRlcjsKCiAgX19jb25zdCBjaGFyICpfX2Zyb21fbmFtZTsKICBfX2NvbnN0 IGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2Zj dCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWlu X25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVk X3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAq X19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIg Kl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdz OwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7 CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0 cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9f Z2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9f c3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhWzBd Owp9ICpfX2djb252X3Q7CgojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2 X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0 eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g KF9fU0lfXykpKTsKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MiAiL3Vzci9p bmNsdWRlL2xpYmlvLmgiIDMKIyAxNTcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBf SU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CgoKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9j a190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7 CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91c3IvaW5j bHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRf b2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9u b2NvbnYKfTsKCiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUg ewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVh ZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBj aGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1 Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNo YXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9f bWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmls ZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg X3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNiAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2 b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAo aW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklM RSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ TEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y XzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsK IyAzNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVh ZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoK CgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29u c3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf X24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v ZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9p ZCAqX19jb29raWUpOwoKCiMgMzk3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50 IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAq KTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpOwpleHRlcm4gd2ludF90 IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19G SUxFICopOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpOwoK IyA0MjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19G SUxFICpfX2ZwKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp OwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl cnJvciAoX0lPX0ZJTEUgKl9fZnApOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9f RklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKik7 CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX0lP X2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKik7CgojIDQ1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi IDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj aGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qs IGludCAqX19yZXN0cmljdCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19y ZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg IF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwg aW50LCBfX3NzaXplX3QpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9p ZCAqLCBzaXplX3QpOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwg X19vZmY2NF90LCBpbnQsIGludCk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19G SUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh IChfSU9fRklMRSAqKTsKCiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRl ZiBfR19mcG9zX3QgZnBvc190OwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0 ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJy OwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKTsKCmV4 dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3 KTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gY2hh ciAqdG1wbmFtX3IgKGNoYXIgKl9fcyk7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf X3BmeCkKIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9z ZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsK CgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKIyAxODIgIi91 c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbW9kZXMpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxF ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpOwojIDIzNSAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAg ICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKTsKCgoKCmV4dGVybiB2b2lkIHNl dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1 ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKTsKCgpleHRlcm4gdm9pZCBz ZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAq X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCAuLi4pOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKOwoKZXh0 ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h cmcpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90 IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsIC4uLikKIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz LCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKIF9fYXR0cmlidXRlX18gKChf X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hh ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp CiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMDkg Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsIC4uLik7CgojIDMzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu dCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFt KTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3Vu bG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p ZCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgpl eHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0 YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9f Yyk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0 cmVhbSk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3Ry ZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgpleHRlcm4g aW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJ TEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBf X3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCjsKCiMgNDAxICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKTsKCgojIDQyNSAi L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKOwoKCgoKCgoKCmV4dGVy biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50 IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qg X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChf X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgoKCmV4dGVybiBz aXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2 b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpl eHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3do ZW5jZSk7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiB2 b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm X3Q7CiMgNDk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKOwoKZXh0 ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsK IyA1MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF ICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiBp bnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9j a2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z dHJlYW0pOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoK ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gaW50IHN5 c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTYy ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJl YW0pOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoK CgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBj aGFyICpfX21vZGVzKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoK CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpOwojIDYwOSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVy biBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIHZvaWQgZnVubG9j a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKIyA2MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMg MzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwpleHRlcm4gX19pbmxpbmUgaW50CnZw cmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19h cmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVy biBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4p Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsK ICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8g X191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIr Kyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICBy ZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBf X3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRy KyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1 cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0 Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9f aW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJl dHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRl X2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1 bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1 cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkg PyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg Y2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMCAiL3Vz ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2Nr ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgx MCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAq X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsK fQojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgNTggIi91c3IvaW5jbHVkZS9w eXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCgoK CgoKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf X24pOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq X19zcmMsIHNpemVfdCBfX24pCjsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCjsKCgoKCmV4dGVybiB2b2lkICptZW1z ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBtZW1jbXAg KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2 b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKCiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChj aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo7 CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p OwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCjsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpf X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3Qg Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy ICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pOwoKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcu aCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxNjcgIi91c3IvaW5jbHVkZS9z dHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv bnN0IGNoYXIgKl9fcmVqZWN0KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu IHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0 KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiBfX2F0dHJpYnV0ZV9fICgo X19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK IyAxODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCjsKCgoK ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKTsKCmV4dGVybiBj aGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f c2F2ZV9wdHIpOwojIDIyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgoj IDIzMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50 IF9fZXJybnVtKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBj aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbik7CgoKCgpleHRlcm4gdm9p ZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pOwoKCgpleHRlcm4gdm9pZCBiY29weSAo X19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKTsKCgpleHRlcm4g dm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKTsKCgpleHRlcm4gaW50IGJjbXAgKF9f Y29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRy aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIg Kl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIg KnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoY29u c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK CgojIDI3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJjYXNlY21w IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg X19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu IGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs IHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAzMDAgIi91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBf X3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2RlbGltKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgojIDUzICIvdXNyL2lu Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEg MwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDM3MSAiL3Vzci9pbmNs dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9p ZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwg X191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQz Ml90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5 X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8y LCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBf NCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikK ewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAg ICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRj aCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+ X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g X19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19z cmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAg ICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5f X3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkg PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7 CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBf X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg X191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBj YXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAg ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg X191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7 Cn0KIyA4NzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg c2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpl eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNo YXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsr X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp bmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3Qx LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQog ICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAg cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAo X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq ZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICBy ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0 XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVz dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n Mi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAq X19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAo X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y ZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19y ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNp emVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFy IF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChf X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikK ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6 ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNj ZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAq X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAg cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0g X19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tf X3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7 Cn0KIyA5ODIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg Y2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVy biBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBf X2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9f cyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4g Kl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4 dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19h Y2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAog ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYg Kl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAh PSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICop MCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDQzICIvdXNyL2luY2x1ZGUvYml0cy9z dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9f cywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f c3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBj aGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4 dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAn KQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0 ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAg ICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7 CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpf X25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMg MTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy ICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGlu ZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdp c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq ZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRl bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09 ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNo ciAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsr ID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3Jl dHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f c3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsK ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p ZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09 IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1ww JzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAg ICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9 IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAg ICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsK ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAg cmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNo YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFy ICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0 MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikw KTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3Qy CiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog IGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3 aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19y ZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2Nw OwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19j cDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAg ICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJu IF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19y ZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9f Y29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7 CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwog IGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19i dWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo X19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcp ID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsx XSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo X19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws IF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBj aGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3Jl dHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0g J1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJy ayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3Qp KTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y ZXR2YWw7Cn0KIyAxMTg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAzNCAiL3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKCiMgNTI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs bG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z aXplKQogX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA4NDYgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMwojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgpl eHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRl X18gKChfX21hbGxvY19fKSk7CiMgMTIxMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBf X24pCiBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDM2NiAiL3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAyIDMKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK IyAzMiAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwoKCgoKCiMgMjYgIi91c3IvaW5jbHVkZS9i aXRzL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKIyAy NiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRz L2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0 aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDM3ICIvdXNyL2luY2x1 ZGUvZXJybm8uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCiMgNjAgIi91c3Iv aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDEgMwoKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAg ewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0 CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyAx MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i X2N1cl9tYXggKHZvaWQpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19u cHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25z dCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcg aW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj aGFyICpfX25wdHIpCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJs ZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cik7CgojIDE2MyAiL3Vzci9pbmNsdWRl L3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLCBpbnQgX19iYXNlKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCjsKCgoKX19l eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu ZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n IGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg X19iYXNlKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3Ry dG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f YmFzZSkKOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkb3VibGUgX19z dHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg X19ncm91cCkKOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQo7CmV4dGVybiBsb25nIGRvdWJsZSBf X3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCk7 CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IF9fYmFzZSwgaW50IF9fZ3JvdXApOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0 b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f YmFzZSwgaW50IF9fZ3JvdXApOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu dCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f YmFzZSwgaW50IF9fZ3JvdXApOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCjsKIyAyOTQgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsK ICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVy biBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICBy ZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K ZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0 ciwgX19iYXNlLCAwKTsKfQoKIyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVu c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg aW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy biBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoK Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs CiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25w dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jh c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpf X25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7 Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJl dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K ZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAg cmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9p ZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh ciAqbDY0YSAobG9uZyBpbnQgX19uKTsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBj aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgojIDI4ICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDEgMwoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVm IF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xv bmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVf cXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZf dDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDMKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190 OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDMKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoK CnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90 Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMg MTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyA3MSAiL3Vzci9pbmNsdWRlL3RpbWUu aCIgMSAzCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKIyA4MiAiL3Vzci9pbmNsdWRlL3RpbWUu aCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCiMgOTMgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCiMgMTI3ICIvdXNyL2luY2x1ZGUv c3lzL3R5cGVzLmgiIDIgMwojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50 IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg dV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7 Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3Jk X18pKSk7CgoKCgojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMzIgIi91c3Iv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoKCgojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz ZXQuaCIgMSAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QK ICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwoKIyAzNSAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMiAzCgoKCgojIDEwNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCnN0cnVj dCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7 CiAgfTsKCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0 IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVkZWYgX19mZF9zZXQg ZmRfc2V0OwoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBz ZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg ICAgICAgICAgICAgIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAg ICAgICAgICBfX2ZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CgojIDkyICIvdXNyL2lu Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg MwoKCgojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRf dCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludDMy X3QgcmFuZG9tICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19z ZWVkKTsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj aGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl bik7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CgoKCgoKCgpz dHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0 cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2Rl ZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBp bnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg ICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgpleHRlcm4gaW50 IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1 Zik7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpf X3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0 YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz dHJpY3QgX19idWYpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9f c3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl c3RyaWN0IF9fYnVmKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpOwoKZXh0ZXJuIHZvaWQg c3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWdu ZWQgaW50ICpfX3NlZWQpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZXh0 ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSk7CgoKZXh0 ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5z aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2 b2lkKTsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp WzNdKTsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpOwpleHRlcm4g dW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZb M10pOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSk7 CgoKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwog ICAgdW5zaWduZWQgc2hvcnQgaW50IGFbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsKICAg IHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsKICAgIGludCBpbml0OwogIH07CgoKCmV4dGVy biBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy LAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKZXh0 ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgoKZXh0 ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7 CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7 CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl c3VsdCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl c3VsdCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0 IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCjsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVk IHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9y dCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh dGEgKl9fYnVmZmVyKTsKIyA1MzUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9p ZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cik7CgoKCmV4dGVybiB2 b2lkIGNmcmVlICh2b2lkICpfX3B0cik7CgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi IDEgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKIyA1 NDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChz aXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MCAiL3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAo dm9pZCkpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19z dGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCjsKZXh0ZXJuIGludCBvbl9leGl0ICh2 b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo7 CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u b3JldHVybl9fKSk7CgojIDU4OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy ICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJl X2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChj aGFyICpfX3N0cmluZyk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCjsKCgpleHRlcm4gdm9p ZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFy ZW52ICh2b2lkKTsKIyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy ICpfX3RlbXBsYXRlKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh ciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19j b25zdCBjaGFyICpfX2NvbW1hbmQpOwoKCiMgNjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAog ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCk7CgoKCgoK CnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZv aWQgKik7CgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1l bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9p ZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAg ICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFi cyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQg bGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzAwICIv dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGlu dCBfX2Rlbm9tKQogX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7CiMgNzE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CgoKCgpleHRl cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKTsK CgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFy ICpfX2J1Zik7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu dCAqX19yZXN0cmljdCBfX3NpZ24pOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9f dmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg X19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1Zik7CgoKCgoKZXh0ZXJu IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbik7CmV4 dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p OwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs CiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0 cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg c2l6ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp bnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs IGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25z dCBjaGFyICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpf X3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2No YXJfdCBfX3djaGFyKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0 cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCjsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo X19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKTsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0p OwoKCgoKCiMgNjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgoKCgoKCgoK IyAxMTQgIi91c3IvaW5jbHVkZS9weXRob24xLjUvb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qg X29iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90 eXBlOwp9IFB5T2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7 IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9iX3NpemU7Cn0gUHlWYXJPYmplY3Q7 CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgp0eXBlZGVmIFB5T2JqZWN0 ICogKCp1bmFyeWZ1bmMpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqICgqYmluYXJ5 ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICogKCp0ZXJu YXJ5ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIGlu dCAoKmlucXVpcnkpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpjb2VyY2lvbikgKFB5T2Jq ZWN0ICoqLCBQeU9iamVjdCAqKik7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50YXJnZnVuYykgKFB5 T2JqZWN0ICosIGludCk7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50aW50YXJnZnVuYykgKFB5T2Jq ZWN0ICosIGludCwgaW50KTsKdHlwZWRlZiBpbnQoKmludG9iamFyZ3Byb2MpIChQeU9iamVjdCAq LCBpbnQsIFB5T2JqZWN0ICopOwp0eXBlZGVmIGludCgqaW50aW50b2JqYXJncHJvYykgKFB5T2Jq ZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQoKm9iam9iamFyZ3Byb2Mp IChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpnZXRy ZWFkYnVmZmVycHJvYykgKFB5T2JqZWN0ICosIGludCwgdm9pZCAqKik7CnR5cGVkZWYgaW50ICgq Z2V0d3JpdGVidWZmZXJwcm9jKSAoUHlPYmplY3QgKiwgaW50LCB2b2lkICoqKTsKdHlwZWRlZiBp bnQgKCpnZXRzZWdjb3VudHByb2MpIChQeU9iamVjdCAqLCBpbnQgKik7CnR5cGVkZWYgaW50ICgq Z2V0Y2hhcmJ1ZmZlcnByb2MpIChQeU9iamVjdCAqLCBpbnQsIGNvbnN0IGNoYXIgKiopOwoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIGJpbmFyeWZ1bmMgbmJfYWRkOwogICAgICAgIGJpbmFyeWZ1 bmMgbmJfc3VidHJhY3Q7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9tdWx0aXBseTsKICAgICAgICBi aW5hcnlmdW5jIG5iX2RpdmlkZTsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JlbWFpbmRlcjsKICAg ICAgICBiaW5hcnlmdW5jIG5iX2Rpdm1vZDsKICAgICAgICB0ZXJuYXJ5ZnVuYyBuYl9wb3dlcjsK ICAgICAgICB1bmFyeWZ1bmMgbmJfbmVnYXRpdmU7CiAgICAgICAgdW5hcnlmdW5jIG5iX3Bvc2l0 aXZlOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9hYnNvbHV0ZTsKICAgICAgICBpbnF1aXJ5IG5iX25v bnplcm87CiAgICAgICAgdW5hcnlmdW5jIG5iX2ludmVydDsKICAgICAgICBiaW5hcnlmdW5jIG5i X2xzaGlmdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JzaGlmdDsKICAgICAgICBiaW5hcnlmdW5j IG5iX2FuZDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3hvcjsKICAgICAgICBiaW5hcnlmdW5jIG5i X29yOwogICAgICAgIGNvZXJjaW9uIG5iX2NvZXJjZTsKICAgICAgICB1bmFyeWZ1bmMgbmJfaW50 OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9sb25nOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9mbG9hdDsK ICAgICAgICB1bmFyeWZ1bmMgbmJfb2N0OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9oZXg7Cn0gUHlO dW1iZXJNZXRob2RzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlucXVpcnkgc3FfbGVuZ3Ro OwogICAgICAgIGJpbmFyeWZ1bmMgc3FfY29uY2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfcmVw ZWF0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfaXRlbTsKICAgICAgICBpbnRpbnRhcmdmdW5jIHNx X3NsaWNlOwogICAgICAgIGludG9iamFyZ3Byb2Mgc3FfYXNzX2l0ZW07CiAgICAgICAgaW50aW50 b2JqYXJncHJvYyBzcV9hc3Nfc2xpY2U7Cn0gUHlTZXF1ZW5jZU1ldGhvZHM7Cgp0eXBlZGVmIHN0 cnVjdCB7CiAgICAgICAgaW5xdWlyeSBtcF9sZW5ndGg7CiAgICAgICAgYmluYXJ5ZnVuYyBtcF9z dWJzY3JpcHQ7CiAgICAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0Owp9IFB5TWFw cGluZ01ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZ2V0cmVhZGJ1ZmZlcnByb2Mg YmZfZ2V0cmVhZGJ1ZmZlcjsKICAgICAgICBnZXR3cml0ZWJ1ZmZlcnByb2MgYmZfZ2V0d3JpdGVi dWZmZXI7CiAgICAgICAgZ2V0c2VnY291bnRwcm9jIGJmX2dldHNlZ2NvdW50OwogICAgICAgIGdl dGNoYXJidWZmZXJwcm9jIGJmX2dldGNoYXJidWZmZXI7Cn0gUHlCdWZmZXJQcm9jczsKCgp0eXBl ZGVmIHZvaWQgKCpkZXN0cnVjdG9yKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqcHJpbnRm dW5jKSAoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwp0eXBlZGVmIFB5T2JqZWN0ICooKmdldGF0 dHJmdW5jKSAoUHlPYmplY3QgKiwgY2hhciAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpnZXRhdHRy b2Z1bmMpIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpzZXRhdHRyZnVu YykgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqc2V0YXR0 cm9mdW5jKSAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50 ICgqY21wZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICoo KnJlcHJmdW5jKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgbG9uZyAoKmhhc2hmdW5jKSAoUHlPYmpl Y3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBfdHlwZW9iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNu dDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOyBpbnQgb2Jfc2l6ZTsKICAgICAgICBjaGFy ICp0cF9uYW1lOwogICAgICAgIGludCB0cF9iYXNpY3NpemUsIHRwX2l0ZW1zaXplOwoKCgogICAg ICAgIGRlc3RydWN0b3IgdHBfZGVhbGxvYzsKICAgICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAg ICAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICAgICBzZXRhdHRyZnVuYyB0cF9zZXRh dHRyOwogICAgICAgIGNtcGZ1bmMgdHBfY29tcGFyZTsKICAgICAgICByZXByZnVuYyB0cF9yZXBy OwoKCgogICAgICAgIFB5TnVtYmVyTWV0aG9kcyAqdHBfYXNfbnVtYmVyOwogICAgICAgIFB5U2Vx dWVuY2VNZXRob2RzICp0cF9hc19zZXF1ZW5jZTsKICAgICAgICBQeU1hcHBpbmdNZXRob2RzICp0 cF9hc19tYXBwaW5nOwoKCgogICAgICAgIGhhc2hmdW5jIHRwX2hhc2g7CiAgICAgICAgdGVybmFy eWZ1bmMgdHBfY2FsbDsKICAgICAgICByZXByZnVuYyB0cF9zdHI7CiAgICAgICAgZ2V0YXR0cm9m dW5jIHRwX2dldGF0dHJvOwogICAgICAgIHNldGF0dHJvZnVuYyB0cF9zZXRhdHRybzsKCgogICAg ICAgIFB5QnVmZmVyUHJvY3MgKnRwX2FzX2J1ZmZlcjsKCgogICAgICAgIGxvbmcgdHBfZmxhZ3M7 CgogICAgICAgIGNoYXIgKnRwX2RvYzsKCgogICAgICAgIGxvbmcgdHBfeHh4NTsKICAgICAgICBs b25nIHRwX3h4eDY7CiAgICAgICAgbG9uZyB0cF94eHg3OwogICAgICAgIGxvbmcgdHBfeHh4ODsK CgoKCgoKCgp9IFB5VHlwZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUeXBlX1R5cGU7 CgoKCgpleHRlcm4gaW50IFB5T2JqZWN0X1ByaW50IChQeU9iamVjdCAqLCBGSUxFICosIGludCk7 CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X1JlcHIgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlP YmplY3QgKiBQeU9iamVjdF9TdHIgKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0Nv bXBhcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9iamVj dF9HZXRBdHRyU3RyaW5nIChQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gaW50IFB5T2JqZWN0 X1NldEF0dHJTdHJpbmcgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CmV4dGVybiBp bnQgUHlPYmplY3RfSGFzQXR0clN0cmluZyAoUHlPYmplY3QgKiwgY2hhciAqKTsKZXh0ZXJuIFB5 T2JqZWN0ICogUHlPYmplY3RfR2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVy biBpbnQgUHlPYmplY3RfU2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3Qg Kik7CmV4dGVybiBpbnQgUHlPYmplY3RfSGFzQXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7 CmV4dGVybiBsb25nIFB5T2JqZWN0X0hhc2ggKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2Jq ZWN0X0lzVHJ1ZSAoUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3RfTm90IChQeU9iamVj dCAqKTsKZXh0ZXJuIGludCBQeUNhbGxhYmxlX0NoZWNrIChQeU9iamVjdCAqKTsKZXh0ZXJuIGlu dCBQeU51bWJlcl9Db2VyY2UgKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CmV4dGVybiBpbnQg UHlOdW1iZXJfQ29lcmNlRXggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CgoKZXh0ZXJuIGlu dCBQeV9SZXByRW50ZXIgKFB5T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeV9SZXByTGVhdmUgKFB5 T2JqZWN0ICopOwoKCiMgNDM0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgpleHRl cm4gUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3Q7CgojIDcxICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41 L1B5dGhvbi5oIiAyCgojIDU4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamltcGwuaCIgMQpl eHRlcm4gUHlPYmplY3QgKiBfUHlPYmplY3RfTmV3IChQeVR5cGVPYmplY3QgKik7CmV4dGVybiBQ eVZhck9iamVjdCAqIF9QeU9iamVjdF9OZXdWYXIgKFB5VHlwZU9iamVjdCAqLCBpbnQpOwoKIyA3 MiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgMzggIi91c3IvaW5jbHVk ZS9weXRob24xLjUvcHlkZWJ1Zy5oIiAxCmV4dGVybiBpbnQgUHlfRGVidWdGbGFnOwpleHRlcm4g aW50IFB5X1ZlcmJvc2VGbGFnOwpleHRlcm4gaW50IFB5X0ludGVyYWN0aXZlRmxhZzsKZXh0ZXJu IGludCBQeV9PcHRpbWl6ZUZsYWc7CmV4dGVybiBpbnQgUHlfTm9TaXRlRmxhZzsKZXh0ZXJuIGlu dCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwpleHRlcm4gaW50IFB5X0Zyb3plbkZsYWc7CmV4 dGVybiBpbnQgUHlfVGFiY2hlY2tGbGFnOwoKdm9pZCBQeV9GYXRhbEVycm9yIChjaGFyICopOwoK IyA3NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNTUgIi91c3IvaW5j bHVkZS9weXRob24xLjUvaW50b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu dCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBsb25nIG9i X2l2YWw7Cn0gUHlJbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW50X1R5cGU7CgoK CmV4dGVybiBQeU9iamVjdCAqIFB5SW50X0Zyb21Mb25nIChsb25nKTsKZXh0ZXJuIGxvbmcgUHlJ bnRfQXNMb25nIChQeU9iamVjdCAqKTsKZXh0ZXJuIGxvbmcgUHlJbnRfR2V0TWF4ICh2b2lkKTsK IyA4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9pbnRvYmplY3QuaCIKZXh0ZXJuIFB5SW50T2Jq ZWN0IF9QeV9aZXJvU3RydWN0LCBfUHlfVHJ1ZVN0cnVjdDsKCiMgOTQgIi91c3IvaW5jbHVkZS9w eXRob24xLjUvaW50b2JqZWN0LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIFB5T1Nfc3RydG91bCAo Y2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gbG9uZyBQeU9TX3N0cnRvbCAoY2hhciAqLCBj aGFyICoqLCBpbnQpOwoKIyA3NiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1 Y3QgX2xvbmdvYmplY3QgUHlMb25nT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUxvbmdf VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Mb25nIChsb25nKTsKZXh0ZXJu IFB5T2JqZWN0ICogUHlMb25nX0Zyb21VbnNpZ25lZExvbmcgKHVuc2lnbmVkIGxvbmcpOwpleHRl cm4gUHlPYmplY3QgKiBQeUxvbmdfRnJvbURvdWJsZSAoZG91YmxlKTsKZXh0ZXJuIGxvbmcgUHlM b25nX0FzTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFB5TG9uZ19Bc1Vu c2lnbmVkTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiBkb3VibGUgUHlMb25nX0FzRG91YmxlIChQ eU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Wb2lkUHRyICh2b2lkICop OwpleHRlcm4gdm9pZCAqIFB5TG9uZ19Bc1ZvaWRQdHIgKFB5T2JqZWN0ICopOwoKCgoKCiMgMTIg Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5o IiAxIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk ZS9zeXNsaW1pdHMuaCIgMSAzCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp bnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9saW1pdHMu aCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwojIDM3ICIv dXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0 cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoK IyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xp bWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYv aW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo YXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3B5 dGhvbjEuNS9sb25nb2JqZWN0LmgiIDIKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25n b2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcgKGxvbmcgbG9u Zyk7CmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyAodW5zaWdu ZWQgbG9uZyBsb25nKTsKZXh0ZXJuIGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZyAoUHlPYmpl Y3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9u ZyAoUHlPYmplY3QgKik7CgoKUHlPYmplY3QgKiBQeUxvbmdfRnJvbVN0cmluZyAoY2hhciAqLCBj aGFyICoqLCBpbnQpOwoKIyA3NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK IyA0NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9mbG9hdG9iamVjdC5oIiAxCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7 CiAgICAgICAgZG91YmxlIG9iX2Z2YWw7Cn0gUHlGbG9hdE9iamVjdDsKCmV4dGVybiBQeVR5cGVP YmplY3QgUHlGbG9hdF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZsb2F0X0Zyb21Eb3Vi bGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgUHlGbG9hdF9Bc0RvdWJsZSAoUHlPYmplY3QgKik7 CgoKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgOSAiL3Vzci9p bmNsdWRlL3B5dGhvbjEuNS9jb21wbGV4b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICBk b3VibGUgcmVhbDsKICAgZG91YmxlIGltYWc7Cn0gUHlfY29tcGxleDsKCgoKCgoKCgoKCmV4dGVy biBQeV9jb21wbGV4IF9QeV9jX3N1bSAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQ eV9jb21wbGV4IF9QeV9jX2RpZmYgKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpleHRlcm4gUHlf Y29tcGxleCBfUHlfY19uZWcgKFB5X2NvbXBsZXgpOwpleHRlcm4gUHlfY29tcGxleCBfUHlfY19w cm9kIChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfcXVv dCAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQeV9jb21wbGV4IF9QeV9jX3BvdyAo UHlfY29tcGxleCwgUHlfY29tcGxleCk7CiMgMzggIi91c3IvaW5jbHVkZS9weXRob24xLjUvY29t cGxleG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3Ry dWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5X2NvbXBsZXggY3ZhbDsKfSBQeUNv bXBsZXhPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5Q29tcGxleF9UeXBlOwoKCgpleHRl cm4gUHlPYmplY3QgKiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4IChQeV9jb21wbGV4KTsKZXh0ZXJu IFB5T2JqZWN0ICogUHlDb21wbGV4X0Zyb21Eb3VibGVzIChkb3VibGUgcmVhbCwgZG91YmxlIGlt YWcpOwoKZXh0ZXJuIGRvdWJsZSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlIChQeU9iamVjdCAqb3Ap OwpleHRlcm4gZG91YmxlIFB5Q29tcGxleF9JbWFnQXNEb3VibGUgKFB5T2JqZWN0ICpvcCk7CmV4 dGVybiBQeV9jb21wbGV4IFB5Q29tcGxleF9Bc0NDb21wbGV4IChQeU9iamVjdCAqb3ApOwoKIyA4 MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDIgIi91c3IvaW5jbHVk ZS9weXRob24xLjUvcmFuZ2VvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5UmFuZ2Vf VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlSYW5nZV9OZXcgKGxvbmcsIGxvbmcsIGxvbmcs IGludCk7CiMgODIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNjkgIi91 c3IvaW5jbHVkZS9weXRob24xLjUvc3RyaW5nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i X3NpemU7CgogICAgICAgIGxvbmcgb2Jfc2hhc2g7CgoKICAgICAgICBQeU9iamVjdCAqb2Jfc2lu dGVybmVkOwoKICAgICAgICBjaGFyIG9iX3N2YWxbMV07Cn0gUHlTdHJpbmdPYmplY3Q7CgpleHRl cm4gUHlUeXBlT2JqZWN0IFB5U3RyaW5nX1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5U3Ry aW5nX0Zyb21TdHJpbmdBbmRTaXplIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBQeU9iamVj dCAqIFB5U3RyaW5nX0Zyb21TdHJpbmcgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgUHlTdHJp bmdfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlTdHJpbmdfQXNTdHJpbmcgKFB5 T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXQgKFB5T2JqZWN0ICoqLCBQeU9i amVjdCAqKTsKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfQ29uY2F0QW5kRGVsIChQeU9iamVjdCAqKiwg UHlPYmplY3QgKik7CmV4dGVybiBpbnQgX1B5U3RyaW5nX1Jlc2l6ZSAoUHlPYmplY3QgKiosIGlu dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5U3RyaW5nX0Zvcm1hdCAoUHlPYmplY3QgKiwgUHlPYmpl Y3QgKik7CgoKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSAoUHlPYmplY3QgKiop OwpleHRlcm4gUHlPYmplY3QgKiBQeVN0cmluZ19JbnRlcm5Gcm9tU3RyaW5nIChjb25zdCBjaGFy ICopOwojIDgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQzICIvdXNy L2luY2x1ZGUvcHl0aG9uMS41L2J1ZmZlcm9iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3Qg UHlCdWZmZXJfVHlwZTsKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tT2JqZWN0 IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNldCwgaW50IHNpemUpOwpleHRlcm4gUHlPYmplY3Qg KiBQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlT2JqZWN0IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNl dCwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfRnJvbU1lbW9yeSAodm9p ZCAqcHRyLCBpbnQgc2l6ZSk7CmV4dGVybiBQeU9iamVjdCAqIFB5QnVmZmVyX0Zyb21SZWFkV3Jp dGVNZW1vcnkgKHZvaWQgKnB0ciwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZm ZXJfTmV3IChpbnQgc2l6ZSk7CgojIDg0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5o IiAyCgojIDU0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3R1cGxlb2JqZWN0LmgiIDEKdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2Jf dHlwZTsgaW50IG9iX3NpemU7CiAgICAgICAgUHlPYmplY3QgKm9iX2l0ZW1bMV07Cn0gUHlUdXBs ZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUdXBsZV9UeXBlOwoKCgpleHRlcm4gUHlP YmplY3QgKiBQeVR1cGxlX05ldyAoaW50IHNpemUpOwpleHRlcm4gaW50IFB5VHVwbGVfU2l6ZSAo UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0SXRlbSAoUHlPYmplY3Qg KiwgaW50KTsKZXh0ZXJuIGludCBQeVR1cGxlX1NldEl0ZW0gKFB5T2JqZWN0ICosIGludCwgUHlP YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0U2xpY2UgKFB5T2JqZWN0ICos IGludCwgaW50KTsKZXh0ZXJuIGludCBfUHlUdXBsZV9SZXNpemUgKFB5T2JqZWN0ICoqLCBpbnQs IGludCk7CgoKIyA4NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA1NCAi L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9saXN0b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i X3NpemU7CiAgICAgICAgUHlPYmplY3QgKipvYl9pdGVtOwp9IFB5TGlzdE9iamVjdDsKCmV4dGVy biBQeVR5cGVPYmplY3QgUHlMaXN0X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9O ZXcgKGludCBzaXplKTsKZXh0ZXJuIGludCBQeUxpc3RfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVy biBQeU9iamVjdCAqIFB5TGlzdF9HZXRJdGVtIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4gaW50 IFB5TGlzdF9TZXRJdGVtIChQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50 IFB5TGlzdF9JbnNlcnQgKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQg UHlMaXN0X0FwcGVuZCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq IFB5TGlzdF9HZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IFB5TGlz dF9TZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50 IFB5TGlzdF9Tb3J0IChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUxpc3RfUmV2ZXJzZSAoUHlP YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9Bc1R1cGxlIChQeU9iamVjdCAqKTsK CgojIDg2ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2lu Y2x1ZGUvcHl0aG9uMS41L2RpY3RvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5RGlj dF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeURpY3RfTmV3ICh2b2lkKTsKZXh0ZXJuIFB5 T2JqZWN0ICogUHlEaWN0X0dldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CmV4 dGVybiBpbnQgUHlEaWN0X1NldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlP YmplY3QgKml0ZW0pOwpleHRlcm4gaW50IFB5RGljdF9EZWxJdGVtIChQeU9iamVjdCAqbXAsIFB5 T2JqZWN0ICprZXkpOwpleHRlcm4gdm9pZCBQeURpY3RfQ2xlYXIgKFB5T2JqZWN0ICptcCk7CmV4 dGVybiBpbnQgUHlEaWN0X05leHQKICAgICAgICAoUHlPYmplY3QgKm1wLCBpbnQgKnBvcywgUHlP YmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwpleHRlcm4gUHlPYmplY3QgKiBQeURpY3Rf S2V5cyAoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X1ZhbHVlcyAoUHlP YmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0l0ZW1zIChQeU9iamVjdCAqbXAp OwpleHRlcm4gaW50IFB5RGljdF9TaXplIChQeU9iamVjdCAqbXApOwoKZXh0ZXJuIFB5T2JqZWN0 ICogUHlEaWN0X0dldEl0ZW1TdHJpbmcgKFB5T2JqZWN0ICpkcCwgY2hhciAqa2V5KTsKZXh0ZXJu IGludCBQeURpY3RfU2V0SXRlbVN0cmluZyAoUHlPYmplY3QgKmRwLCBjaGFyICprZXksIFB5T2Jq ZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVsSXRlbVN0cmluZyAoUHlPYmplY3QgKmRw LCBjaGFyICprZXkpOwoKIyA4NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tZXRob2RvYmplY3QuaCIgMQpleHRlcm4gUHlU eXBlT2JqZWN0IFB5Q0Z1bmN0aW9uX1R5cGU7CgoKCnR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVu Y3Rpb24pIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNG dW5jdGlvbldpdGhLZXl3b3JkcykKICAgICAgICAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlP YmplY3QgKik7CgpleHRlcm4gUHlDRnVuY3Rpb24gUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24gKFB5 T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUNGdW5jdGlvbl9HZXRTZWxmIChQeU9iamVj dCAqKTsKZXh0ZXJuIGludCBQeUNGdW5jdGlvbl9HZXRGbGFncyAoUHlPYmplY3QgKik7CgoKCgoK CgoKCgpzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgICAgIGNoYXIgKm1sX25hbWU7CiAgICAgICAg UHlDRnVuY3Rpb24gbWxfbWV0aDsKICAgICAgICBpbnQgbWxfZmxhZ3M7CiAgICAgICAgY2hhciAq bWxfZG9jOwp9Owp0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKCmV4dGVy biBQeU9iamVjdCAqIFB5X0ZpbmRNZXRob2QKICAgICAgICAoUHlNZXRob2REZWZbXSwgUHlPYmpl Y3QgKiwgY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqIFB5Q0Z1bmN0aW9uX05ldwogICAgICAg IChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBQeU1ldGhv ZENoYWluIHsKICAgICAgICBQeU1ldGhvZERlZiAqbWV0aG9kczsKICAgICAgICBzdHJ1Y3QgUHlN ZXRob2RDaGFpbiAqbGluazsKfSBQeU1ldGhvZENoYWluOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlf RmluZE1ldGhvZEluQ2hhaW4KICAgICAgICAoUHlNZXRob2RDaGFpbiAqLCBQeU9iamVjdCAqLCBj aGFyICopOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBf dHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU1ldGhvZERlZiAqbV9tbDsKICAgICAgICBQ eU9iamVjdCAqbV9zZWxmOwp9IFB5Q0Z1bmN0aW9uT2JqZWN0OwoKIyA4OCAiL3Vzci9pbmNsdWRl L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tb2R1 bGVvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGU7CgoKCmV4dGVy biBQeU9iamVjdCAqIFB5TW9kdWxlX05ldyAoY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlN b2R1bGVfR2V0RGljdCAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0TmFt ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0RmlsZW5hbWUgKFB5T2Jq ZWN0ICopOwpleHRlcm4gdm9pZCBfUHlNb2R1bGVfQ2xlYXIgKFB5T2JqZWN0ICopOwoKIyA4OSAi L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5 dGhvbjEuNS9mdW5jb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9y ZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqZnVu Y19jb2RlOwogICAgICAgIFB5T2JqZWN0ICpmdW5jX2dsb2JhbHM7CiAgICAgICAgUHlPYmplY3Qg KmZ1bmNfZGVmYXVsdHM7CiAgICAgICAgUHlPYmplY3QgKmZ1bmNfZG9jOwogICAgICAgIFB5T2Jq ZWN0ICpmdW5jX25hbWU7Cn0gUHlGdW5jdGlvbk9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3Qg UHlGdW5jdGlvbl9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZ1bmN0aW9uX05ldyAoUHlP YmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0Q29k ZSAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0R2xvYmFscyAo UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0RGVmYXVsdHMgKFB5 T2JqZWN0ICopOwpleHRlcm4gaW50IFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgKFB5T2JqZWN0ICos IFB5T2JqZWN0ICopOwoKCgojIDkwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAy CgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiIDEKdHlwZWRlZiBz dHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlw ZTsKICAgICAgICBQeU9iamVjdCAqY2xfYmFzZXM7CiAgICAgICAgUHlPYmplY3QgKmNsX2RpY3Q7 CiAgICAgICAgUHlPYmplY3QgKmNsX25hbWU7CgogICAgICAgIFB5T2JqZWN0ICpjbF9nZXRhdHRy OwogICAgICAgIFB5T2JqZWN0ICpjbF9zZXRhdHRyOwogICAgICAgIFB5T2JqZWN0ICpjbF9kZWxh dHRyOwp9IFB5Q2xhc3NPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3Jl ZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5Q2xhc3NPYmplY3Qg KmluX2NsYXNzOwogICAgICAgIFB5T2JqZWN0ICppbl9kaWN0Owp9IFB5SW5zdGFuY2VPYmplY3Q7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq ZWN0ICpvYl90eXBlOwogICAgICAgIFB5T2JqZWN0ICppbV9mdW5jOwogICAgICAgIFB5T2JqZWN0 ICppbV9zZWxmOwogICAgICAgIFB5T2JqZWN0ICppbV9jbGFzczsKfSBQeU1ldGhvZE9iamVjdDsK CmV4dGVybiBQeVR5cGVPYmplY3QgUHlDbGFzc19UeXBlLCBQeUluc3RhbmNlX1R5cGUsIFB5TWV0 aG9kX1R5cGU7CgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlDbGFzc19OZXcgKFB5T2JqZWN0ICos IFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUluc3RhbmNlX05l dyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq IFB5TWV0aG9kX05ldyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRl cm4gUHlPYmplY3QgKiBQeU1ldGhvZF9GdW5jdGlvbiAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9i amVjdCAqIFB5TWV0aG9kX1NlbGYgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU1l dGhvZF9DbGFzcyAoUHlPYmplY3QgKik7CgoKCgoKCgoKCgpleHRlcm4gaW50IFB5Q2xhc3NfSXNT dWJjbGFzcyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRlcm4gUHlPYmplY3QgKiBQeUlu c3RhbmNlX0RvQmluT3AKCgogICAgICAgIChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAojIDk0ICIv dXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiCiAgICAgICAgICAgICAgICAgIGNo YXIgKiwgY2hhciAqLAojIDk0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0Lmgi CiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICogKCopIChQeU9iamVjdCAqLCBQeU9iamVjdCAq KSApOwoKIyA5MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vz ci9pbmNsdWRlL3B5dGhvbjEuNS9maWxlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5VHlwZU9iamVjdCBQ eUZpbGVfVHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX0Zyb21TdHJpbmcgKGNoYXIg KiwgY2hhciAqKTsKZXh0ZXJuIHZvaWQgUHlGaWxlX1NldEJ1ZlNpemUgKFB5T2JqZWN0ICosIGlu dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9Gcm9tRmlsZQogICAgICAgIChGSUxFICosIGNo YXIgKiwgY2hhciAqLCBpbnQgKCopKEZJTEUgKikpOwpleHRlcm4gRklMRSAqIFB5RmlsZV9Bc0Zp bGUgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUZpbGVfTmFtZSAoUHlPYmplY3Qg Kik7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9HZXRMaW5lIChQeU9iamVjdCAqLCBpbnQpOwpl eHRlcm4gaW50IFB5RmlsZV9Xcml0ZU9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgaW50 KTsKZXh0ZXJuIGludCBQeUZpbGVfU29mdFNwYWNlIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4g aW50IFB5RmlsZV9Xcml0ZVN0cmluZyAoY2hhciAqLCBQeU9iamVjdCAqKTsKCiMgOTIgIi91c3Iv aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDcgIi91c3IvaW5jbHVkZS9weXRob24x LjUvY29iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDT2JqZWN0X1R5cGU7CgojIDU3 ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NvYmplY3QuaCIKZXh0ZXJuIFB5T2JqZWN0ICoKUHlD T2JqZWN0X0Zyb21Wb2lkUHRyICh2b2lkICpjb2JqLCB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqKSk7 CgoKCgoKCgpleHRlcm4gUHlPYmplY3QgKgpQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjICh2 b2lkICpjb2JqLCB2b2lkICpkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqLHZvaWQqKSk7CgoKZXh0ZXJuIHZvaWQgKgpQeUNP YmplY3RfQXNWb2lkUHRyIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9H ZXREZXNjIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9JbXBvcnQgKGNo YXIgKm1vZHVsZV9uYW1lLCBjaGFyICpjb2JqZWN0X25hbWUpOwoKIyA5MyAiL3Vzci9pbmNsdWRl L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS90cmFj ZWJhY2suaCIgMQpzdHJ1Y3QgX2ZyYW1lOwoKaW50IFB5VHJhY2VCYWNrX0hlcmUgKHN0cnVjdCBf ZnJhbWUgKik7ClB5T2JqZWN0ICogUHlUcmFjZUJhY2tfRmV0Y2ggKHZvaWQpOwppbnQgUHlUcmFj ZUJhY2tfU3RvcmUgKFB5T2JqZWN0ICopOwppbnQgUHlUcmFjZUJhY2tfUHJpbnQgKFB5T2JqZWN0 ICosIFB5T2JqZWN0ICopOwoKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUcmFjZUJhY2tfVHlwZTsK IyA5NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA5ICIvdXNyL2luY2x1 ZGUvcHl0aG9uMS41L3NsaWNlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5T2JqZWN0IF9QeV9FbGxpcHNp c09iamVjdDsKCiMgMjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvc2xpY2VvYmplY3QuaCIKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq b2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqc3RhcnQsICpzdG9wLCAqc3RlcDsKfSBQeVNsaWNl T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVNsaWNlX1R5cGU7CgoKClB5T2JqZWN0ICog UHlTbGljZV9OZXcgKAogICAgICAgIFB5T2JqZWN0KiBzdGFydCwgUHlPYmplY3QqIHN0b3AsIFB5 T2JqZWN0KiBzdGVwKTsKaW50IFB5U2xpY2VfR2V0SW5kaWNlcyAoCiAgICAgICAgUHlTbGljZU9i amVjdCAqciwgaW50IGxlbmd0aCwgaW50ICpzdGFydCwgaW50ICpzdG9wLCBpbnQgKnN0ZXApOwoK IyA5NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDAgIi91c3IvaW5j bHVkZS9weXRob24xLjUvcHllcnJvcnMuaCIgMQp2b2lkIFB5RXJyX1NldE5vbmUgKFB5T2JqZWN0 ICopOwp2b2lkIFB5RXJyX1NldE9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnZvaWQg UHlFcnJfU2V0U3RyaW5nIChQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwpQeU9iamVjdCAqIFB5 RXJyX09jY3VycmVkICh2b2lkKTsKdm9pZCBQeUVycl9DbGVhciAodm9pZCk7CnZvaWQgUHlFcnJf RmV0Y2ggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOwp2b2lkIFB5RXJy X1Jlc3RvcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKCmludCBQeUVy cl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwppbnQgUHlF cnJfRXhjZXB0aW9uTWF0Y2hlcyAoUHlPYmplY3QgKik7CnZvaWQgUHlFcnJfTm9ybWFsaXplRXhj ZXB0aW9uIChQeU9iamVjdCoqLCBQeU9iamVjdCoqLCBQeU9iamVjdCoqKTsKCgoKCmV4dGVybiBQ eU9iamVjdCAqIFB5RXhjX0V4Y2VwdGlvbjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3RhbmRh cmRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpleHRlcm4g UHlPYmplY3QgKiBQeUV4Y19Mb29rdXBFcnJvcjsKCmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Fz c2VydGlvbkVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKZXh0 ZXJuIFB5T2JqZWN0ICogUHlFeGNfRU9GRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Zs b2F0aW5nUG9pbnRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfRW52aXJvbm1lbnRFcnJv cjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSU9FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF eGNfT1NFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSW1wb3J0RXJyb3I7CmV4dGVybiBQ eU9iamVjdCAqIFB5RXhjX0luZGV4RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0tleUVy cm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19LZXlib2FyZEludGVycnVwdDsKZXh0ZXJuIFB5 T2JqZWN0ICogUHlFeGNfTWVtb3J5RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX05hbWVF cnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfT3ZlcmZsb3dFcnJvcjsKZXh0ZXJuIFB5T2Jq ZWN0ICogUHlFeGNfUnVudGltZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19Ob3RJbXBs ZW1lbnRlZEVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeW50YXhFcnJvcjsKZXh0ZXJu IFB5T2JqZWN0ICogUHlFeGNfU3lzdGVtRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1N5 c3RlbUV4aXQ7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1R5cGVFcnJvcjsKZXh0ZXJuIFB5T2Jq ZWN0ICogUHlFeGNfVmFsdWVFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfWmVyb0Rpdmlz aW9uRXJyb3I7CgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19NZW1vcnlFcnJvckluc3Q7CgoKCgpl eHRlcm4gaW50IFB5RXJyX0JhZEFyZ3VtZW50ICh2b2lkKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF cnJfTm9NZW1vcnkgKHZvaWQpOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm8g KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmls ZW5hbWUgKFB5T2JqZWN0ICosIGNoYXIgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX0Zvcm1h dCAoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIHZvaWQgUHlFcnJfQmFk SW50ZXJuYWxDYWxsICh2b2lkKTsKCgpQeU9iamVjdCAqIFB5RXJyX05ld0V4Y2VwdGlvbiAoY2hh ciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB5T2JqZWN0ICpkaWN0KTsKCgpleHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyAo dm9pZCk7CmV4dGVybiB2b2lkIFB5RXJyX1NldEludGVycnVwdCAodm9pZCk7CgoKIyA5NyAiL3Vz ci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyAxMDkgIi91c3IvaW5jbHVkZS9weXRo b24xLjUvbXltYWxsb2MuaCIgMQpleHRlcm4gdm9pZCAqIFB5X01hbGxvYyAoc2l6ZV90KTsKZXh0 ZXJuIHZvaWQgKiBQeV9SZWFsbG9jICh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIFB5X0Zy ZWUgKHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgKiBQeU1lbV9NYWxsb2MgKHNpemVfdCk7CmV4dGVy biB2b2lkICogUHlNZW1fUmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBQeU1l bV9GcmVlICh2b2lkICopOwoKIyA5OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIg MgoKCiMgNDMgIi91c3IvaW5jbHVkZS9weXRob24xLjUvcHlzdGF0ZS5oIiAxCnN0cnVjdCBfdHM7 CnN0cnVjdCBfaXM7Cgp0eXBlZGVmIHN0cnVjdCBfaXMgewoKICAgICAgICBzdHJ1Y3QgX2lzICpu ZXh0OwogICAgICAgIHN0cnVjdCBfdHMgKnRzdGF0ZV9oZWFkOwoKICAgICAgICBQeU9iamVjdCAq bW9kdWxlczsKICAgICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICAgICBQeU9iamVjdCAqYnVp bHRpbnM7CgogICAgICAgIGludCBjaGVja2ludGVydmFsOwoKfSBQeUludGVycHJldGVyU3RhdGU7 CgoKCgpzdHJ1Y3QgX2ZyYW1lOwoKdHlwZWRlZiBzdHJ1Y3QgX3RzIHsKCiAgICAgICAgc3RydWN0 IF90cyAqbmV4dDsKICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKCiAgICAgICAg c3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICAg ICBpbnQgdGlja2VyOwogICAgICAgIGludCB0cmFjaW5nOwoKICAgICAgICBQeU9iamVjdCAqc3lz X3Byb2ZpbGVmdW5jOwogICAgICAgIFB5T2JqZWN0ICpzeXNfdHJhY2VmdW5jOwoKICAgICAgICBQ eU9iamVjdCAqY3VyZXhjX3R5cGU7CiAgICAgICAgUHlPYmplY3QgKmN1cmV4Y192YWx1ZTsKICAg ICAgICBQeU9iamVjdCAqY3VyZXhjX3RyYWNlYmFjazsKCiAgICAgICAgUHlPYmplY3QgKmV4Y190 eXBlOwogICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgICAgUHlPYmplY3QgKmV4Y190 cmFjZWJhY2s7CgogICAgICAgIFB5T2JqZWN0ICpkaWN0OwoKCgp9IFB5VGhyZWFkU3RhdGU7CgoK UHlJbnRlcnByZXRlclN0YXRlICogUHlJbnRlcnByZXRlclN0YXRlX05ldyAodm9pZCk7CnZvaWQg UHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlJ bnRlcnByZXRlclN0YXRlX0RlbGV0ZSAoUHlJbnRlcnByZXRlclN0YXRlICopOwoKUHlUaHJlYWRT dGF0ZSAqIFB5VGhyZWFkU3RhdGVfTmV3IChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlU aHJlYWRTdGF0ZV9DbGVhciAoUHlUaHJlYWRTdGF0ZSAqKTsKdm9pZCBQeVRocmVhZFN0YXRlX0Rl bGV0ZSAoUHlUaHJlYWRTdGF0ZSAqKTsKClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX0dl dCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX1N3YXAgKFB5VGhyZWFkU3Rh dGUgKik7ClB5T2JqZWN0ICogUHlUaHJlYWRTdGF0ZV9HZXREaWN0ICh2b2lkKTsKCgoKCmV4dGVy biBQeVRocmVhZFN0YXRlICogX1B5VGhyZWFkU3RhdGVfQ3VycmVudDsKCiMgMTAwICIvdXNyL2lu Y2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyA0MyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu NS9tb2RzdXBwb3J0LmgiIDEKIyAxMTAgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu dXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9s aXN0OwojIDQzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L21vZHN1cHBvcnQuaCIgMgoKZXh0ZXJu IGludCBQeUFyZ19QYXJzZSAoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IFB5 QXJnX1BhcnNlVHVwbGUgKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBQeUFy Z19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGNoYXIgKios IC4uLik7CmV4dGVybiBQeU9iamVjdCAqIFB5X0J1aWxkVmFsdWUgKGNoYXIgKiwgLi4uKTsKCiMg NjEgIi91c3IvaW5jbHVkZS9weXRob24xLjUvbW9kc3VwcG9ydC5oIgpleHRlcm4gaW50IFB5QXJn X1ZhUGFyc2UgKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBQeU9iamVjdCAq IFB5X1ZhQnVpbGRWYWx1ZSAoY2hhciAqLCB2YV9saXN0KTsKCiMgMTEyICIvdXNyL2luY2x1ZGUv cHl0aG9uMS41L21vZHN1cHBvcnQuaCIKZXh0ZXJuIFB5T2JqZWN0ICogUHlfSW5pdE1vZHVsZTQg KGNoYXIgKiwgUHlNZXRob2REZWYgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqLCBQeU9iamVjdCAqLCBpbnQpOwojIDEyMiAiL3Vzci9pbmNsdWRlL3B5 dGhvbjEuNS9tb2RzdXBwb3J0LmgiCmV4dGVybiBjaGFyICogX1B5X1BhY2thZ2VDb250ZXh0OwoK IyAxMDIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDAgIi91c3IvaW5j bHVkZS9weXRob24xLjUvY2V2YWwuaCIgMQpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0V2l0 aEtleXdvcmRzCiAgICAgICAgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoK CgpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0IChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsK CgoKCgoKUHlPYmplY3QgKiBQeUV2YWxfQ2FsbEZ1bmN0aW9uIChQeU9iamVjdCAqb2JqLCBjaGFy ICpmb3JtYXQsIC4uLik7ClB5T2JqZWN0ICogUHlFdmFsX0NhbGxNZXRob2QgKFB5T2JqZWN0ICpv YmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWV0aG9kbmFt ZSwgY2hhciAqZm9ybWF0LCAuLi4pOwoKCgoKCgpQeU9iamVjdCAqIFB5RXZhbF9HZXRCdWlsdGlu cyAodm9pZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEdsb2JhbHMgKHZvaWQpOwpQeU9iamVjdCAq IFB5RXZhbF9HZXRMb2NhbHMgKHZvaWQpOwpQeU9iamVjdCAqIFB5RXZhbF9HZXRPd25lciAodm9p ZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEZyYW1lICh2b2lkKTsKaW50IFB5RXZhbF9HZXRSZXN0 cmljdGVkICh2b2lkKTsKCmludCBQeV9GbHVzaExpbmUgKHZvaWQpOwoKaW50IFB5X0FkZFBlbmRp bmdDYWxsIChpbnQgKCpmdW5jKSAodm9pZCAqKSwgdm9pZCAqYXJnKTsKaW50IFB5X01ha2VQZW5k aW5nQ2FsbHMgKHZvaWQpOwojIDExOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9jZXZhbC5oIgpl eHRlcm4gUHlUaHJlYWRTdGF0ZSAqIFB5RXZhbF9TYXZlVGhyZWFkICh2b2lkKTsKZXh0ZXJuIHZv aWQgUHlFdmFsX1Jlc3RvcmVUaHJlYWQgKFB5VGhyZWFkU3RhdGUgKik7CgoKCmV4dGVybiB2b2lk IFB5RXZhbF9Jbml0VGhyZWFkcyAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9BY3F1aXJlTG9j ayAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9SZWxlYXNlTG9jayAodm9pZCk7CmV4dGVybiB2 b2lkIFB5RXZhbF9BY3F1aXJlVGhyZWFkIChQeVRocmVhZFN0YXRlICp0c3RhdGUpOwpleHRlcm4g dm9pZCBQeUV2YWxfUmVsZWFzZVRocmVhZCAoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKCiMgMTAz ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2luY2x1ZGUv cHl0aG9uMS41L3B5dGhvbnJ1bi5oIiAxCnZvaWQgUHlfU2V0UHJvZ3JhbU5hbWUgKGNoYXIgKik7 CmNoYXIgKiBQeV9HZXRQcm9ncmFtTmFtZSAodm9pZCk7Cgp2b2lkIFB5X1NldFB5dGhvbkhvbWUg KGNoYXIgKik7CmNoYXIgKiBQeV9HZXRQeXRob25Ib21lICh2b2lkKTsKCnZvaWQgUHlfSW5pdGlh bGl6ZSAodm9pZCk7CnZvaWQgUHlfRmluYWxpemUgKHZvaWQpOwppbnQgUHlfSXNJbml0aWFsaXpl ZCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeV9OZXdJbnRlcnByZXRlciAodm9pZCk7CnZvaWQg UHlfRW5kSW50ZXJwcmV0ZXIgKFB5VGhyZWFkU3RhdGUgKik7CgppbnQgUHlSdW5fQW55RmlsZSAo RklMRSAqLCBjaGFyICopOwoKaW50IFB5UnVuX1NpbXBsZVN0cmluZyAoY2hhciAqKTsKaW50IFB5 UnVuX1NpbXBsZUZpbGUgKEZJTEUgKiwgY2hhciAqKTsKaW50IFB5UnVuX0ludGVyYWN0aXZlT25l IChGSUxFICosIGNoYXIgKik7CmludCBQeVJ1bl9JbnRlcmFjdGl2ZUxvb3AgKEZJTEUgKiwgY2hh ciAqKTsKCnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nIChjaGFyICos IGludCk7CnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZSAoRklMRSAqLCBj aGFyICosIGludCk7CgpQeU9iamVjdCAqIFB5UnVuX1N0cmluZyAoY2hhciAqLCBpbnQsIFB5T2Jq ZWN0ICosIFB5T2JqZWN0ICopOwpQeU9iamVjdCAqIFB5UnVuX0ZpbGUgKEZJTEUgKiwgY2hhciAq LCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKUHlPYmplY3QgKiBQeV9Db21waWxlU3Ry aW5nIChjaGFyICosIGNoYXIgKiwgaW50KTsKCnZvaWQgUHlFcnJfUHJpbnQgKHZvaWQpOwp2b2lk IFB5RXJyX1ByaW50RXggKGludCk7CgppbnQgUHlfQXRFeGl0ICh2b2lkICgqZnVuYykgKHZvaWQp KTsKCnZvaWQgUHlfRXhpdCAoaW50KTsKCmludCBQeV9GZElzSW50ZXJhY3RpdmUgKEZJTEUgKiwg Y2hhciAqKTsKCgpjaGFyICogUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoICh2b2lkKTsKY2hhciAqIFB5 X0dldFByZWZpeCAodm9pZCk7CmNoYXIgKiBQeV9HZXRFeGVjUHJlZml4ICh2b2lkKTsKY2hhciAq IFB5X0dldFBhdGggKHZvaWQpOwoKCmNvbnN0IGNoYXIgKiBQeV9HZXRWZXJzaW9uICh2b2lkKTsK Y29uc3QgY2hhciAqIFB5X0dldFBsYXRmb3JtICh2b2lkKTsKY29uc3QgY2hhciAqIFB5X0dldENv cHlyaWdodCAodm9pZCk7CmNvbnN0IGNoYXIgKiBQeV9HZXRDb21waWxlciAodm9pZCk7CmNvbnN0 IGNoYXIgKiBQeV9HZXRCdWlsZEluZm8gKHZvaWQpOwoKCgpQeU9iamVjdCAqIF9QeUJ1aWx0aW5f SW5pdF8xICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0luaXRfMiAoUHlPYmplY3QgKik7ClB5T2Jq ZWN0ICogX1B5U3lzX0luaXQgKHZvaWQpOwp2b2lkIF9QeUltcG9ydF9Jbml0ICh2b2lkKTsKCgp2 b2lkIF9QeUltcG9ydF9GaW5pICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0ZpbmlfMSAodm9pZCk7 CnZvaWQgX1B5QnVpbHRpbl9GaW5pXzIgKHZvaWQpOwp2b2lkIFB5TWV0aG9kX0ZpbmkgKHZvaWQp Owp2b2lkIFB5RnJhbWVfRmluaSAodm9pZCk7CnZvaWQgUHlDRnVuY3Rpb25fRmluaSAodm9pZCk7 CnZvaWQgUHlUdXBsZV9GaW5pICh2b2lkKTsKdm9pZCBQeVN0cmluZ19GaW5pICh2b2lkKTsKdm9p ZCBQeUludF9GaW5pICh2b2lkKTsKdm9pZCBQeUZsb2F0X0ZpbmkgKHZvaWQpOwp2b2lkIFB5T1Nf RmluaUludGVycnVwdHMgKHZvaWQpOwoKCmNoYXIgKiBQeU9TX1JlYWRsaW5lIChjaGFyICopOwpl eHRlcm4gaW50ICgqUHlPU19JbnB1dEhvb2spICh2b2lkKTsKZXh0ZXJuIGNoYXIgKigqUHlPU19S ZWFkbGluZUZ1bmN0aW9uUG9pbnRlcikgKGNoYXIgKik7CgojIDEwNCAiL3Vzci9pbmNsdWRlL3B5 dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9zeXNtb2R1 bGUuaCIgMQpQeU9iamVjdCAqIFB5U3lzX0dldE9iamVjdCAoY2hhciAqKTsKaW50IFB5U3lzX1Nl dE9iamVjdCAoY2hhciAqLCBQeU9iamVjdCAqKTsKRklMRSAqIFB5U3lzX0dldEZpbGUgKGNoYXIg KiwgRklMRSAqKTsKdm9pZCBQeVN5c19TZXRBcmd2IChpbnQsIGNoYXIgKiopOwp2b2lkIFB5U3lz X1NldFBhdGggKGNoYXIgKik7CgoKdm9pZCBQeVN5c19Xcml0ZVN0ZG91dChjb25zdCBjaGFyICpm b3JtYXQsIC4uLik7CnZvaWQgUHlTeXNfV3JpdGVTdGRlcnIoY29uc3QgY2hhciAqZm9ybWF0LCAu Li4pOwoKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBfUHlTeXNfVHJhY2VGdW5jLCAqX1B5U3lzX1By b2ZpbGVGdW5jOwpleHRlcm4gaW50IF9QeVN5c19DaGVja0ludGVydmFsOwoKIyAxMDUgIi91c3Iv aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMzggIi91c3IvaW5jbHVkZS9weXRob24x LjUvaW50cmNoZWNrLmgiIDEKZXh0ZXJuIGludCBQeU9TX0ludGVycnVwdE9jY3VycmVkICh2b2lk KTsKZXh0ZXJuIHZvaWQgUHlPU19Jbml0SW50ZXJydXB0cyAodm9pZCk7CnZvaWQgUHlPU19BZnRl ckZvcmsgKHZvaWQpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIK CiMgNDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvaW1wb3J0LmgiIDEKbG9uZyBQeUltcG9ydF9H ZXRNYWdpY051bWJlciAodm9pZCk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUg KGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbyk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVN b2R1bGVFeCAoCiAgICAgICAgY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFt ZSk7ClB5T2JqZWN0ICogUHlJbXBvcnRfR2V0TW9kdWxlRGljdCAodm9pZCk7ClB5T2JqZWN0ICog UHlJbXBvcnRfQWRkTW9kdWxlIChjaGFyICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBv cnRNb2R1bGUgKGNoYXIgKm5hbWUpOwpQeU9iamVjdCAqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4 ICgKICAgICAgICBjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2Fs cywgUHlPYmplY3QgKmZyb21saXN0KTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBvcnQgKFB5T2Jq ZWN0ICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9SZWxvYWRNb2R1bGUgKFB5T2JqZWN0ICpt KTsKdm9pZCBQeUltcG9ydF9DbGVhbnVwICh2b2lkKTsKaW50IFB5SW1wb3J0X0ltcG9ydEZyb3pl bk1vZHVsZSAoY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0ZpbmRFeHRlbnNp b24gKGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfRml4dXBFeHRl bnNpb24gKGNoYXIgKiwgY2hhciAqKTsKCnN0cnVjdCBfaW5pdHRhYiB7CiAgICAgICAgY2hhciAq bmFtZTsKICAgICAgICB2b2lkICgqaW5pdGZ1bmMpKCk7Cn07CgpleHRlcm4gc3RydWN0IF9pbml0 dGFiICogUHlJbXBvcnRfSW5pdHRhYjsKCmV4dGVybiBpbnQgUHlJbXBvcnRfQXBwZW5kSW5pdHRh YiAoY2hhciAqbmFtZSwgdm9pZCAoKmluaXRmdW5jKSgpKTsKZXh0ZXJuIGludCBQeUltcG9ydF9F eHRlbmRJbml0dGFiIChzdHJ1Y3QgX2luaXR0YWIgKm5ld3RhYik7CgpzdHJ1Y3QgX2Zyb3plbiB7 CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlOwogICAgICAg IGludCBzaXplOwp9OwoKCgoKZXh0ZXJuIHN0cnVjdCBfZnJvemVuICogUHlJbXBvcnRfRnJvemVu TW9kdWxlczsKCiMgMTA3ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyAy NTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIgMQogICAgIGludCBQeU9iamVj dF9DbXAgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBpbnQgKnJlc3VsdCk7CiMgMzA1ICIv dXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5Q2FsbGFibGVfQ2hl Y2sgKFB5T2JqZWN0ICpvKTsKIyAzMTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu aCIKICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxPYmplY3QgKFB5T2JqZWN0ICpjYWxsYWJs ZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5 T2JqZWN0ICphcmdzKTsKIyAzMzAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIK ICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxGdW5jdGlvbiAoUHlPYmplY3QgKmNhbGxhYmxl X29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpmb3JtYXQsIC4uLik7CiMgMzQ0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0 LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9DYWxsTWV0aG9kIChQeU9iamVjdCAqbywgY2hh ciAqbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq Zm9ybWF0LCAuLi4pOwojIDM5NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgog ICAgIFB5T2JqZWN0ICogUHlPYmplY3RfVHlwZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBp bnQgUHlPYmplY3RfTGVuZ3RoIChQeU9iamVjdCAqbyk7CiMgNDE1ICIvdXNyL2luY2x1ZGUvcHl0 aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9HZXRJdGVtIChQeU9i amVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDI0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi c3RyYWN0LmgiCiAgICAgaW50IFB5T2JqZWN0X1NldEl0ZW0gKFB5T2JqZWN0ICpvLCBQeU9iamVj dCAqa2V5LCBQeU9iamVjdCAqdik7CgoKCgoKCgogICAgIGludCBQeU9iamVjdF9EZWxJdGVtIChQ eU9iamVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41 L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5TnVtYmVyX0NoZWNrIChQeU9iamVjdCAqbyk7CiMgNDUy ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51 bWJlcl9BZGQgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA0NjEgIi91c3IvaW5jbHVk ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1N1YnRyYWN0 IChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNDcwICIvdXNyL2luY2x1ZGUvcHl0aG9u MS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9NdWx0aXBseSAoUHlPYmpl Y3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDQ4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0 cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfRGl2aWRlIChQeU9iamVjdCAqbzEsIFB5 T2JqZWN0ICpvMik7CiMgNDg5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAg ICAgUHlPYmplY3QgKiBQeU51bWJlcl9SZW1haW5kZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3Qg Km8yKTsKIyA0OTkgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9i amVjdCAqIFB5TnVtYmVyX0Rpdm1vZCAoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDUw OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlO dW1iZXJfUG93ZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBQeU9iamVjdCAqbzMpOwoj IDUxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICog UHlOdW1iZXJfTmVnYXRpdmUgKFB5T2JqZWN0ICpvKTsKCgoKCgoKCiAgICAgUHlPYmplY3QgKiBQ eU51bWJlcl9Qb3NpdGl2ZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5 TnVtYmVyX0Fic29sdXRlIChQeU9iamVjdCAqbyk7CgoKCgoKCgogICAgIFB5T2JqZWN0ICogUHlO dW1iZXJfSW52ZXJ0IChQeU9iamVjdCAqbyk7CiMgNTUyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41 L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9Mc2hpZnQgKFB5T2JqZWN0ICpv MSwgUHlPYmplY3QgKm8yKTsKIyA1NjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu aCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1JzaGlmdCAoUHlPYmplY3QgKm8xLCBQeU9iamVj dCAqbzIpOwojIDU3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5 T2JqZWN0ICogUHlOdW1iZXJfQW5kIChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNTgx ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51 bWJlcl9Yb3IgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA1OTEgIi91c3IvaW5jbHVk ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX09yIChQeU9i amVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNjE5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi c3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9JbnQgKFB5T2JqZWN0ICpvKTsKIyA2 MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5 TnVtYmVyX0xvbmcgKFB5T2JqZWN0ICpvKTsKIyA2MzcgIi91c3IvaW5jbHVkZS9weXRob24xLjUv YWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0Zsb2F0IChQeU9iamVjdCAqbyk7 CiMgNjQ4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2Vx dWVuY2VfQ2hlY2sgKFB5T2JqZWN0ICpvKTsKIyA2NTggIi91c3IvaW5jbHVkZS9weXRob24xLjUv YWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9MZW5ndGggKFB5T2JqZWN0ICpvKTsKCgoK CgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfQ29uY2F0IChQeU9iamVjdCAqbzEsIFB5T2Jq ZWN0ICpvMik7CiMgNjc0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAg UHlPYmplY3QgKiBQeVNlcXVlbmNlX1JlcGVhdCAoUHlPYmplY3QgKm8sIGludCBjb3VudCk7CiMg NjgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQ eVNlcXVlbmNlX0dldEl0ZW0gKFB5T2JqZWN0ICpvLCBpbnQgaSk7CgoKCgoKCgogICAgIFB5T2Jq ZWN0ICogUHlTZXF1ZW5jZV9HZXRTbGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyKTsK IyA3MDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1 ZW5jZV9TZXRJdGVtIChQeU9iamVjdCAqbywgaW50IGksIFB5T2JqZWN0ICp2KTsKIyA3MDkgIi91 c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9EZWxJ dGVtIChQeU9iamVjdCAqbywgaW50IGkpOwoKCgoKCgoKICAgICBpbnQgUHlTZXF1ZW5jZV9TZXRT bGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyLCBQeU9iamVjdCAqdik7CgoKCgoKCgog ICAgIGludCBQeVNlcXVlbmNlX0RlbFNsaWNlIChQeU9iamVjdCAqbywgaW50IGkxLCBpbnQgaTIp OwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfVHVwbGUgKFB5T2JqZWN0ICpvKTsK CgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfTGlzdCAoUHlPYmplY3QgKm8pOwoKCgoK CgogICAgIGludCBQeVNlcXVlbmNlX0NvdW50IChQeU9iamVjdCAqbywgUHlPYmplY3QgKnZhbHVl KTsKIyA3NTYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlT ZXF1ZW5jZV9Db250YWlucyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICp2YWx1ZSk7CgoKCiAgICAg aW50IFB5U2VxdWVuY2VfSW4gKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwoKCiMgNzcx ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2VxdWVuY2Vf SW5kZXggKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwojIDc4MSAiL3Vzci9pbmNsdWRl L3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIGludCBQeU1hcHBpbmdfQ2hlY2sgKFB5T2JqZWN0 ICpvKTsKIyA3OTAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQg UHlNYXBwaW5nX0xlbmd0aCAoUHlPYmplY3QgKm8pOwojIDgwNiAiL3Vzci9pbmNsdWRlL3B5dGhv bjEuNS9hYnN0cmFjdC5oIgojIDgxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5o IgogICAgIGludCBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nIChQeU9iamVjdCAqbywgY2hhciAqa2V5 KTsKIyA4MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlN YXBwaW5nX0hhc0tleSAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICprZXkpOwojIDg0NyAiL3Vzci9p bmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgojIDg3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu NS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcgKFB5 T2JqZWN0ICpvLCBjaGFyICprZXkpOwoKCgoKCgoKICAgICBpbnQgUHlNYXBwaW5nX1NldEl0ZW1T dHJpbmcgKFB5T2JqZWN0ICpvLCBjaGFyICprZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOwojIDg4OSAiL3Vzci9pbmNsdWRlL3B5 dGhvbjEuNS9hYnN0cmFjdC5oIgojIDEwOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24u aCIgMgojIDEyMiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyNCAiLi9jdXJ2 ZW9iamVjdC5jIiAyCgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5o IiAxCiMgMTQ3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MiAiL3Vzci9pbmNsdWRl L3B5dGhvbjEuNS9zdHJ1Y3RtZW1iZXIuaCIgMgojIDYwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41 L3N0cnVjdG1lbWJlci5oIgpzdHJ1Y3QgbWVtYmVybGlzdCB7CiAgICAgICAgY2hhciAqbmFtZTsK ICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAgIGludCByZWFkb25s eTsKfTsKCgojIDk1ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5oIgpQeU9i amVjdCAqIFB5TWVtYmVyX0dldCAoY2hhciAqLCBzdHJ1Y3QgbWVtYmVybGlzdCAqLCBjaGFyICop OwppbnQgUHlNZW1iZXJfU2V0IChjaGFyICosIHN0cnVjdCBtZW1iZXJsaXN0ICosIGNoYXIgKiwg UHlPYmplY3QgKik7CgojIDI1ICIuL2N1cnZlb2JqZWN0LmMiIDIKCgojIDU4ICIvdXNyL2luY2x1 ZGUvYXNzZXJ0LmgiIDEgMwoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNo YXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQog X19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3Bl cnJvcl9mYWlsIChpbnQgX19lcnJudW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKIF9fYXR0cmli dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25zdCBj aGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQogX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiMgMjcgIi4vY3VydmVvYmplY3QuYyIgMgoKCiMg MjYgInNrcG9pbnQuaCIgMQp0eXBlZGVmIGZsb2F0IFNLQ29vcmQ7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tD b29yZCB4LCB5Owp9IFNLUG9pbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFNLUG9pbnRU eXBlOwoKCgpQeU9iamVjdCAqIFNLUG9pbnRfRnJvbVhZKFNLQ29vcmQgeCwgU0tDb29yZCB5KTsK CmludCBza3BvaW50X2V4dHJhY3RfeHkoUHlPYmplY3QgKiBzZXF1ZW5jZSwgZG91YmxlICogeCwg ZG91YmxlICogeSk7CgpQeU9iamVjdCAqIHNrcG9pbnRfYWxsb2NhdGVkKFB5T2JqZWN0ICogc2Vs ZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBTS1BvaW50X1B5UG9sYXIoUHlPYmplY3Qg KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLUG9pbnRfUHlQb2ludChQeU9i amVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgoKCiMgMjkgIi4vY3VydmVvYmplY3QuYyIg MgoKIyAyNSAic2tyZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsg c3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tDb29yZCBsZWZ0LCB0b3AsIHJpZ2h0 LCBib3R0b207Cn0gU0tSZWN0T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1JlY3RUeXBl OwoKCmV4dGVybiBTS1JlY3RPYmplY3QgKiBTS1JlY3RfSW5maW5pdHlSZWN0OwpleHRlcm4gU0tS ZWN0T2JqZWN0ICogU0tSZWN0X0VtcHR5UmVjdDsKClB5T2JqZWN0ICogU0tSZWN0X0Zyb21Eb3Vi bGUoZG91YmxlIGxlZnQsIGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZG91YmxlIHJpZ2h0LCBkb3VibGUgYm90dG9tKTsKCmludCBTS1JlY3RfQ29udGFpbnNYWShTS1Jl Y3RPYmplY3QgKiBzZWxmLCBkb3VibGUgeCwgZG91YmxlIHkpOwoKCmludCBTS1JlY3RfQWRkWFko U0tSZWN0T2JqZWN0ICogc2VsZiwgZG91YmxlIHgsIGRvdWJsZSB5KTsKaW50IFNLUmVjdF9BZGRY KFNLUmVjdE9iamVjdCAqIHNlbGYsIGRvdWJsZSB4KTsKaW50IFNLUmVjdF9BZGRZKFNLUmVjdE9i amVjdCAqIHNlbGYsIGRvdWJsZSB5KTsKCgoKUHlPYmplY3QgKiBza3JlY3RfYWxsb2NhdGVkKFB5 T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3JlY3RfUG9pbnRz VG9SZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3Jl Y3RfaW50ZXJzZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3Qg KiBza3JlY3RfdW5pb25yZWN0cyhQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5 T2JqZWN0ICogc2tyZWN0X3NrcmVjdChQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7 CgoKCiMgMzAgIi4vY3VydmVvYmplY3QuYyIgMgoKIyAyNSAic2t0cmFmby5oIiAxCnR5cGVkZWYg c3RydWN0IHsKICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsK ICAgIGRvdWJsZSBtMTEsIG0yMSwgbTEyLCBtMjIsIHYxLCB2MjsKfSBTS1RyYWZvT2JqZWN0OwoK ZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1RyYWZvVHlwZTsKCgoKUHlPYmplY3QgKiBTS1RyYWZvX0Zy b21Eb3VibGUoZG91YmxlIG0xMSwgZG91YmxlIG0yMSwgZG91YmxlIG0xMiwgZG91YmxlIG0yMiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHYxLCBkb3VibGUgdjIpOwoKdm9p ZCBTS1RyYWZvX1RyYW5zZm9ybVhZKFB5T2JqZWN0ICogdHJhZm8sIGRvdWJsZSB4LCBkb3VibGUg eSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwgU0tDb29yZCAqIG91 dF95KTsKCnZvaWQgU0tUcmFmb19EVHJhbnNmb3JtWFkoUHlPYmplY3QgKiB0cmFmbywgZG91Ymxl IHgsIGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwg U0tDb29yZCAqIG91dF95KTsKCmV4dGVybiBQeU9iamVjdCAqIFNLVHJhZm9fRXhjU2luZ3VsYXI7 CgpQeU9iamVjdCAqIHNrdHJhZm9fcm90YXRpb24oUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq IGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fdHJhbnNsYXRpb24oUHlPYmplY3QgKiBzZWxmLCBQ eU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2NhbGUoUHlPYmplY3QgKiBzZWxm LCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2t0cmFmbyhQeU9iamVjdCAq IHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5T2JqZWN0ICogc2t0cmFmb19hbGxvY2F0ZWQoUHlP YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKCiMgMzEgIi4vY3VydmVvYmplY3QuYyIg MgoKIyAyOSAiY3VydmVvYmplY3QuaCIgMQp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyIHR5cGU7 CiAgICBjaGFyIGNvbnQ7CiAgICBjaGFyIHNlbGVjdGVkOwogICAgU0tDb29yZCB4MSwgeTEsIHgy LCB5MjsKCiAgICBTS0Nvb3JkIHgsIHk7Cn0gQ3VydmVTZWdtZW50OwoKIyA2MSAiY3VydmVvYmpl Y3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq ZWN0ICpvYl90eXBlOwogICAgaW50IGxlbjsKICAgIGludCBhbGxvY2F0ZWQ7CiAgICBDdXJ2ZVNl Z21lbnQgKiBzZWdtZW50czsKICAgIGNoYXIgY2xvc2VkOwp9IFNLQ3VydmVPYmplY3Q7CgoKCmV4 dGVybiBQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGU7CgoKCgpQeU9iamVjdCAqIFNLQ3VydmVfTmV3 KGludCBsZW4pOwoKaW50IFNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2Vs ZiwgQ3VydmVTZWdtZW50ICogc2VnbWVudCk7CmludCBTS0N1cnZlX0FwcGVuZExpbmUoU0tDdXJ2 ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAg ICBpbnQgY29udGludWl0eSk7CmludCBTS0N1cnZlX0FwcGVuZEJlemllcihTS0N1cnZlT2JqZWN0 ICogc2VsZiwgZG91YmxlIHgxLCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBk b3VibGUgeDIsIGRvdWJsZSB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4LCBk b3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250aW51aXR5KTsKaW50IFNL Q3VydmVfQ2xvc2VQYXRoKFNLQ3VydmVPYmplY3QgKiBzZWxmKTsKaW50IFNLQ3VydmVfVGVzdFRy YW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHlPYmplY3QgKiB0cmFmbywgaW50IHRlc3RfeCwgaW50IHRlc3RfeSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBjbG9zZWQpOwppbnQgU0tDdXJ2ZV9UcmFuc2Zvcm0oU0tDdXJ2 ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogdHJhZm8pOwoKCgoKUHlPYmplY3QgKiBfU0tDdXJ2 ZV9OdW1BbGxvY2F0ZWQoUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwppbnQgX1NL Q3VydmVfSW5pdEN1cnZlT2JqZWN0KHZvaWQpOwoKCgoKCgojIDMyICIuL2N1cnZlb2JqZWN0LmMi IDIKCiMgMjIgImN1cnZlZHJhdy5oIiAxClB5T2JqZWN0ICogU0tDdXJ2ZV9QeURyYXdUcmFuc2Zv cm1lZChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKClB5T2JqZWN0ICog U0tDdXJ2ZV9QeURyYXdNdWx0aXBhdGgoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7 CgpQeU9iamVjdCAqIFNLQ3VydmVfUHlNdWx0aXBhdGhSZWdpb24oUHlPYmplY3QqIHNlbGYsIFB5 T2JqZWN0ICogYXJncyk7CgoKCiMgMzMgIi4vY3VydmVvYmplY3QuYyIgMgoKIyA1ICJjdXJ2ZWxv dy5oIiAxCiMgNTIgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAxIDMKIyA2NyAiL3Vzci9pbmNs dWRlL1gxMS9YLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElEOwoKCgp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgTWFzazsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEF0b207Cgp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgVmlzdWFsSUQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBUaW1lOwojIDk3 ICIvdXNyL2luY2x1ZGUvWDExL1guaCIgMwp0eXBlZGVmIFhJRCBXaW5kb3c7CnR5cGVkZWYgWElE IERyYXdhYmxlOwoKCnR5cGVkZWYgWElEIEZvbnQ7Cgp0eXBlZGVmIFhJRCBQaXhtYXA7CnR5cGVk ZWYgWElEIEN1cnNvcjsKdHlwZWRlZiBYSUQgQ29sb3JtYXA7CnR5cGVkZWYgWElEIEdDb250ZXh0 Owp0eXBlZGVmIFhJRCBLZXlTeW07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgS2V5Q29kZTsKCgoK CgojIDUyICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAzCgoKCgojIDY5ICIvdXNyL2luY2x1 ZGUvWDExL1hsaWIuaCIgMwojIDg2ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVm IGNoYXIgKlhQb2ludGVyOwoKIyAxNTggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVk ZWYgc3RydWN0IF9YRXh0RGF0YSB7CiAgICAgICAgaW50IG51bWJlcjsKICAgICAgICBzdHJ1Y3Qg X1hFeHREYXRhICpuZXh0OwogICAgICAgIGludCAoKmZyZWVfcHJpdmF0ZSkoCgogICAgICAgIHN0 cnVjdCBfWEV4dERhdGEgKmV4dGVuc2lvbgoKICAgICAgICApOwogICAgICAgIFhQb2ludGVyIHBy aXZhdGVfZGF0YTsKfSBYRXh0RGF0YTsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg ZXh0ZW5zaW9uOwogICAgICAgIGludCBtYWpvcl9vcGNvZGU7CiAgICAgICAgaW50IGZpcnN0X2V2 ZW50OwogICAgICAgIGludCBmaXJzdF9lcnJvcjsKfSBYRXh0Q29kZXM7CgoKCgoKdHlwZWRlZiBz dHJ1Y3QgewogICAgaW50IGRlcHRoOwogICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgaW50IHNj YW5saW5lX3BhZDsKfSBYUGl4bWFwRm9ybWF0VmFsdWVzOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBpbnQgZnVuY3Rpb247CiAgICAgICAgdW5zaWduZWQgbG9uZyBwbGFuZV9tYXNrOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yZWdyb3VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJh Y2tncm91bmQ7CiAgICAgICAgaW50IGxpbmVfd2lkdGg7CiAgICAgICAgaW50IGxpbmVfc3R5bGU7 CiAgICAgICAgaW50IGNhcF9zdHlsZTsKCiAgICAgICAgaW50IGpvaW5fc3R5bGU7CiAgICAgICAg aW50IGZpbGxfc3R5bGU7CgogICAgICAgIGludCBmaWxsX3J1bGU7CiAgICAgICAgaW50IGFyY19t b2RlOwogICAgICAgIFBpeG1hcCB0aWxlOwogICAgICAgIFBpeG1hcCBzdGlwcGxlOwogICAgICAg IGludCB0c194X29yaWdpbjsKICAgICAgICBpbnQgdHNfeV9vcmlnaW47CiAgICAgICAgRm9udCBm b250OwogICAgICAgIGludCBzdWJ3aW5kb3dfbW9kZTsKICAgICAgICBpbnQgZ3JhcGhpY3NfZXhw b3N1cmVzOwogICAgICAgIGludCBjbGlwX3hfb3JpZ2luOwogICAgICAgIGludCBjbGlwX3lfb3Jp Z2luOwogICAgICAgIFBpeG1hcCBjbGlwX21hc2s7CiAgICAgICAgaW50IGRhc2hfb2Zmc2V0Owog ICAgICAgIGNoYXIgZGFzaGVzOwp9IFhHQ1ZhbHVlczsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hH QwoKCgoKCgoKKkdDOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRf ZGF0YTsKICAgICAgICBWaXN1YWxJRCB2aXN1YWxpZDsKCgoKICAgICAgICBpbnQgY2xhc3M7Cgog ICAgICAgIHVuc2lnbmVkIGxvbmcgcmVkX21hc2ssIGdyZWVuX21hc2ssIGJsdWVfbWFzazsKICAg ICAgICBpbnQgYml0c19wZXJfcmdiOwogICAgICAgIGludCBtYXBfZW50cmllczsKfSBWaXN1YWw7 CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGRlcHRoOwogICAgICAgIGludCBudmlz dWFsczsKICAgICAgICBWaXN1YWwgKnZpc3VhbHM7Cn0gRGVwdGg7CgoKCgoKCgpzdHJ1Y3QgX1hE aXNwbGF5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAg ICAgICBzdHJ1Y3QgX1hEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyByb290OwogICAg ICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBtd2lkdGgsIG1oZWlnaHQ7CiAgICAg ICAgaW50IG5kZXB0aHM7CiAgICAgICAgRGVwdGggKmRlcHRoczsKICAgICAgICBpbnQgcm9vdF9k ZXB0aDsKICAgICAgICBWaXN1YWwgKnJvb3RfdmlzdWFsOwogICAgICAgIEdDIGRlZmF1bHRfZ2M7 CiAgICAgICAgQ29sb3JtYXAgY21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVs OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tfcGl4ZWw7CiAgICAgICAgaW50IG1heF9tYXBz LCBtaW5fbWFwczsKICAgICAgICBpbnQgYmFja2luZ19zdG9yZTsKICAgICAgICBpbnQgc2F2ZV91 bmRlcnM7CiAgICAgICAgbG9uZyByb290X2lucHV0X21hc2s7Cn0gU2NyZWVuOwoKCgoKdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAgICAgICBpbnQgZGVwdGg7 CiAgICAgICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgICAgIGludCBzY2FubGluZV9wYWQ7Cn0g U2NyZWVuRm9ybWF0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgUGl4bWFwIGJhY2tncm91bmRf cGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBiYWNrZ3JvdW5kX3BpeGVsOwogICAgUGl4bWFwIGJv cmRlcl9waXhtYXA7CiAgICB1bnNpZ25lZCBsb25nIGJvcmRlcl9waXhlbDsKICAgIGludCBiaXRf Z3Jhdml0eTsKICAgIGludCB3aW5fZ3Jhdml0eTsKICAgIGludCBiYWNraW5nX3N0b3JlOwogICAg dW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5lczsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19w aXhlbDsKICAgIGludCBzYXZlX3VuZGVyOwogICAgbG9uZyBldmVudF9tYXNrOwogICAgbG9uZyBk b19ub3RfcHJvcGFnYXRlX21hc2s7CiAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7CiAgICBDb2xv cm1hcCBjb2xvcm1hcDsKICAgIEN1cnNvciBjdXJzb3I7Cn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsKICAgIGludCB3aWR0aCwgaGVpZ2h0Owog ICAgaW50IGJvcmRlcl93aWR0aDsKICAgIGludCBkZXB0aDsKICAgIFZpc3VhbCAqdmlzdWFsOwog ICAgV2luZG93IHJvb3Q7CgoKCiAgICBpbnQgY2xhc3M7CgogICAgaW50IGJpdF9ncmF2aXR5Owog ICAgaW50IHdpbl9ncmF2aXR5OwogICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICB1bnNpZ25lZCBs b25nIGJhY2tpbmdfcGxhbmVzOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVsOwogICAg aW50IHNhdmVfdW5kZXI7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIGludCBtYXBfaW5zdGFs bGVkOwogICAgaW50IG1hcF9zdGF0ZTsKICAgIGxvbmcgYWxsX2V2ZW50X21hc2tzOwogICAgbG9u ZyB5b3VyX2V2ZW50X21hc2s7CiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsKICAgIGlu dCBvdmVycmlkZV9yZWRpcmVjdDsKICAgIFNjcmVlbiAqc2NyZWVuOwp9IFhXaW5kb3dBdHRyaWJ1 dGVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp bnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKmFkZHJlc3M7Cn0gWEhvc3RBZGRyZXNzOwoKCgoKdHlw ZWRlZiBzdHJ1Y3QgX1hJbWFnZSB7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCB4b2Zm c2V0OwogICAgaW50IGZvcm1hdDsKICAgIGNoYXIgKmRhdGE7CiAgICBpbnQgYnl0ZV9vcmRlcjsK ICAgIGludCBiaXRtYXBfdW5pdDsKICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgaW50IGJp dG1hcF9wYWQ7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CiAgICBpbnQg Yml0c19wZXJfcGl4ZWw7CiAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogICAgdW5zaWduZWQg bG9uZyBncmVlbl9tYXNrOwogICAgdW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgICBYUG9pbnRl ciBvYmRhdGE7CiAgICBzdHJ1Y3QgZnVuY3MgewoKICAgICAgICBzdHJ1Y3QgX1hJbWFnZSAqKCpj cmVhdGVfaW1hZ2UpKAogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlzcGxheSogLAogICAgICAg ICAgICAgICAgVmlzdWFsKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAg ICAgICAgICAgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBjaGFy KiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBpbnQgKTsKICAg ICAgICBpbnQgKCpkZXN0cm95X2ltYWdlKSAoc3RydWN0IF9YSW1hZ2UgKik7CiAgICAgICAgdW5z aWduZWQgbG9uZyAoKmdldF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50KTsKICAg ICAgICBpbnQgKCpwdXRfcGl4ZWwpIChzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWdu ZWQgbG9uZyk7CiAgICAgICAgc3RydWN0IF9YSW1hZ2UgKigqc3ViX2ltYWdlKShzdHJ1Y3QgX1hJ bWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICAgICAgIGlu dCAoKmFkZF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGxvbmcpOwojIDQwNCAiL3Vzci9pbmNs dWRlL1gxMS9YbGliLmgiIDMKICAgICAgICB9IGY7Cn0gWEltYWdlOwoKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgaW50IHgsIHk7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCBib3JkZXJf d2lkdGg7CiAgICBXaW5kb3cgc2libGluZzsKICAgIGludCBzdGFja19tb2RlOwp9IFhXaW5kb3dD aGFuZ2VzOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWw7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmVkLCBncmVlbiwgYmx1ZTsKICAgICAgICBjaGFyIGZs YWdzOwogICAgICAgIGNoYXIgcGFkOwp9IFhDb2xvcjsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gWFNlZ21lbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg ICBzaG9ydCB4LCB5Owp9IFhQb2ludDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7 CiAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0Owp9IFhSZWN0YW5nbGU7Cgp0eXBlZGVm IHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhlaWdo dDsKICAgIHNob3J0IGFuZ2xlMSwgYW5nbGUyOwp9IFhBcmM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BlcmNlbnQ7 CiAgICAgICAgaW50IGJlbGxfcGl0Y2g7CiAgICAgICAgaW50IGJlbGxfZHVyYXRpb247CiAgICAg ICAgaW50IGxlZDsKICAgICAgICBpbnQgbGVkX21vZGU7CiAgICAgICAgaW50IGtleTsKICAgICAg ICBpbnQgYXV0b19yZXBlYXRfbW9kZTsKfSBYS2V5Ym9hcmRDb250cm9sOwoKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3Bl cmNlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGJlbGxfcGl0Y2gsIGJlbGxfZHVyYXRpb247CiAg ICAgICAgdW5zaWduZWQgbG9uZyBsZWRfbWFzazsKICAgICAgICBpbnQgZ2xvYmFsX2F1dG9fcmVw ZWF0OwogICAgICAgIGNoYXIgYXV0b19yZXBlYXRzWzMyXTsKfSBYS2V5Ym9hcmRTdGF0ZTsKCgoK dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBzaG9ydCB4LCB5Owp9 IFhUaW1lQ29vcmQ7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgbWF4X2tleXBlcm1v ZDsKICAgICAgICBLZXlDb2RlICptb2RpZmllcm1hcDsKfSBYTW9kaWZpZXJLZXltYXA7CgoKCgoK CgoKdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CgoKc3RydWN0IF9YUHJpdmF0ZTsK c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjOwoKdHlwZWRlZiBzdHJ1Y3QKCgoKewogICAgICAgIFhF eHREYXRhICpleHRfZGF0YTsKICAgICAgICBzdHJ1Y3QgX1hQcml2YXRlICpwcml2YXRlMTsKICAg ICAgICBpbnQgZmQ7CiAgICAgICAgaW50IHByaXZhdGUyOwogICAgICAgIGludCBwcm90b19tYWpv cl92ZXJzaW9uOwogICAgICAgIGludCBwcm90b19taW5vcl92ZXJzaW9uOwogICAgICAgIGNoYXIg KnZlbmRvcjsKICAgICAgICBYSUQgcHJpdmF0ZTM7CiAgICAgICAgWElEIHByaXZhdGU0OwogICAg ICAgIFhJRCBwcml2YXRlNTsKICAgICAgICBpbnQgcHJpdmF0ZTY7CiAgICAgICAgWElEICgqcmVz b3VyY2VfYWxsb2MpKAoKICAgICAgICAgICAgICAgIHN0cnVjdCBfWERpc3BsYXkqCgogICAgICAg ICk7CiAgICAgICAgaW50IGJ5dGVfb3JkZXI7CiAgICAgICAgaW50IGJpdG1hcF91bml0OwogICAg ICAgIGludCBiaXRtYXBfcGFkOwogICAgICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgICAg IGludCBuZm9ybWF0czsKICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9mb3JtYXQ7CiAgICAg ICAgaW50IHByaXZhdGU4OwogICAgICAgIGludCByZWxlYXNlOwogICAgICAgIHN0cnVjdCBfWFBy aXZhdGUgKnByaXZhdGU5LCAqcHJpdmF0ZTEwOwogICAgICAgIGludCBxbGVuOwogICAgICAgIHVu c2lnbmVkIGxvbmcgbGFzdF9yZXF1ZXN0X3JlYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXF1 ZXN0OwogICAgICAgIFhQb2ludGVyIHByaXZhdGUxMTsKICAgICAgICBYUG9pbnRlciBwcml2YXRl MTI7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEzOwogICAgICAgIFhQb2ludGVyIHByaXZhdGUx NDsKICAgICAgICB1bnNpZ25lZCBtYXhfcmVxdWVzdF9zaXplOwogICAgICAgIHN0cnVjdCBfWHJt SGFzaEJ1Y2tldFJlYyAqZGI7CiAgICAgICAgaW50ICgqcHJpdmF0ZTE1KSgKCiAgICAgICAgICAg ICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICAgICAgICAgICk7CiAgICAgICAgY2hhciAq ZGlzcGxheV9uYW1lOwogICAgICAgIGludCBkZWZhdWx0X3NjcmVlbjsKICAgICAgICBpbnQgbnNj cmVlbnM7CiAgICAgICAgU2NyZWVuICpzY3JlZW5zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW90 aW9uX2J1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByaXZhdGUxNjsKICAgICAgICBpbnQg bWluX2tleWNvZGU7CiAgICAgICAgaW50IG1heF9rZXljb2RlOwogICAgICAgIFhQb2ludGVyIHBy aXZhdGUxNzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTg7CiAgICAgICAgaW50IHByaXZhdGUx OTsKICAgICAgICBjaGFyICp4ZGVmYXVsdHM7Cgp9CgoKCipfWFByaXZEaXNwbGF5OwoKCgoKCgoK CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5 OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7CiAgICAgICAgV2lu ZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50IHgsIHk7CiAgICAg ICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKICAgICAg ICB1bnNpZ25lZCBpbnQga2V5Y29kZTsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWEtleUV2 ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UHJlc3NlZEV2ZW50Owp0eXBlZGVmIFhLZXlFdmVu dCBYS2V5UmVsZWFzZWRFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2lu ZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAg ICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2ln bmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnV0dG9uOwogICAgICAgIGludCBz YW1lX3NjcmVlbjsKfSBYQnV0dG9uRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25Q cmVzc2VkRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25SZWxlYXNlZEV2ZW50OwoK dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg c2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7 CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBXaW5kb3cgcm9vdDsKICAgICAgICBXaW5k b3cgc3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgeCwgeTsKICAgICAg ICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwogICAgICAg IGNoYXIgaXNfaGludDsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWE1vdGlvbkV2ZW50Owp0 eXBlZGVmIFhNb3Rpb25FdmVudCBYUG9pbnRlck1vdmVkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg d2luZG93OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAg ICAgICAgVGltZSB0aW1lOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlf cm9vdDsKICAgICAgICBpbnQgbW9kZTsKICAgICAgICBpbnQgZGV0YWlsOwoKCgoKICAgICAgICBp bnQgc2FtZV9zY3JlZW47CiAgICAgICAgaW50IGZvY3VzOwogICAgICAgIHVuc2lnbmVkIGludCBz dGF0ZTsKfSBYQ3Jvc3NpbmdFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYRW50ZXJXaW5k b3dFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYTGVhdmVXaW5kb3dFdmVudDsKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG1vZGU7CiAgICAgICAgaW50IGRldGFpbDsK CgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1 c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZlbnQgWEZvY3VzT3V0RXZlbnQ7CgoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg ICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBjaGFyIGtleV92ZWN0b3JbMzJdOwp9IFhLZXlt YXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5 ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgsIHk7CiAgICAg ICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGNvdW50Owp9IFhFeHBvc2VFdmVudDsK CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5 OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGlu dCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgbWFqb3JfY29k ZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYR3JhcGhpY3NFeHBvc2VFdmVudDsKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg ICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCBtYWpvcl9jb2RlOwogICAgICAgIGlu dCBtaW5vcl9jb2RlOwp9IFhOb0V4cG9zZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5k X2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsK ICAgICAgICBpbnQgc3RhdGU7Cn0gWFZpc2liaWxpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBp bnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBw YXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIGludCBv dmVycmlkZV9yZWRpcmVjdDsKfSBYQ3JlYXRlV2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYRGVzdHJveVdpbmRvd0V2ZW50OwoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IGZy b21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu dCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2 ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAg ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhNYXBF dmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25l ZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpk aXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBY TWFwUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3 aW5kb3c7CiAgICAgICAgV2luZG93IHBhcmVudDsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp bnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIFdpbmRv dyBhYm92ZTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENvbmZpZ3VyZUV2ZW50 OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxv bmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3Bs YXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg aW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg dHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVu dDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAg ICAgaW50IHdpZHRoLCBoZWlnaHQ7Cn0gWFJlc2l6ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp bmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAg ICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAg IFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgZGV0YWlsOwogICAgICAgIHVuc2lnbmVkIGxvbmcg dmFsdWVfbWFzazsKfSBYQ29uZmlndXJlUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGlu dCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2 ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHBsYWNlOwp9IFhDaXJjdWxh dGVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5 ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsK ICAgICAgICBpbnQgcGxhY2U7Cn0gWENpcmN1bGF0ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp bmRvdyB3aW5kb3c7CiAgICAgICAgQXRvbSBhdG9tOwogICAgICAgIFRpbWUgdGltZTsKICAgICAg ICBpbnQgc3RhdGU7Cn0gWFByb3BlcnR5RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg aW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRf ZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93Owog ICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9uQ2xl YXJFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5 ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBvd25lcjsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9y OwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0 b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9IFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQ7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh eTsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAg ICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1l Owp9IFhTZWxlY3Rpb25FdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgQ29s b3JtYXAgY29sb3JtYXA7CgoKCiAgICAgICAgaW50IG5ldzsKCiAgICAgICAgaW50IHN0YXRlOwp9 IFhDb2xvcm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBBdG9tIG1l c3NhZ2VfdHlwZTsKICAgICAgICBpbnQgZm9ybWF0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAg ICAgICAgIGNoYXIgYlsyMF07CiAgICAgICAgICAgICAgICBzaG9ydCBzWzEwXTsKICAgICAgICAg ICAgICAgIGxvbmcgbFs1XTsKICAgICAgICAgICAgICAgIH0gZGF0YTsKfSBYQ2xpZW50TWVzc2Fn ZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkg KmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgcmVxdWVzdDsKCiAg ICAgICAgaW50IGZpcnN0X2tleWNvZGU7CiAgICAgICAgaW50IGNvdW50Owp9IFhNYXBwaW5nRXZl bnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgRGlzcGxheSAq ZGlzcGxheTsKICAgICAgICBYSUQgcmVzb3VyY2VpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl cmlhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CiAgICAgICAgdW5zaWduZWQg Y2hhciByZXF1ZXN0X2NvZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBtaW5vcl9jb2RlOwp9IFhF cnJvckV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVu c2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3Bs YXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYQW55RXZlbnQ7CgoKCgoKdHlw ZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBYQW55RXZlbnQg eGFueTsKICAgICAgICBYS2V5RXZlbnQgeGtleTsKICAgICAgICBYQnV0dG9uRXZlbnQgeGJ1dHRv bjsKICAgICAgICBYTW90aW9uRXZlbnQgeG1vdGlvbjsKICAgICAgICBYQ3Jvc3NpbmdFdmVudCB4 Y3Jvc3Npbmc7CiAgICAgICAgWEZvY3VzQ2hhbmdlRXZlbnQgeGZvY3VzOwogICAgICAgIFhFeHBv c2VFdmVudCB4ZXhwb3NlOwogICAgICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50IHhncmFwaGljc2V4 cG9zZTsKICAgICAgICBYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CiAgICAgICAgWFZpc2liaWxp dHlFdmVudCB4dmlzaWJpbGl0eTsKICAgICAgICBYQ3JlYXRlV2luZG93RXZlbnQgeGNyZWF0ZXdp bmRvdzsKICAgICAgICBYRGVzdHJveVdpbmRvd0V2ZW50IHhkZXN0cm95d2luZG93OwogICAgICAg IFhVbm1hcEV2ZW50IHh1bm1hcDsKICAgICAgICBYTWFwRXZlbnQgeG1hcDsKICAgICAgICBYTWFw UmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwogICAgICAgIFhSZXBhcmVudEV2ZW50IHhyZXBhcmVu dDsKICAgICAgICBYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKICAgICAgICBYR3Jhdml0eUV2 ZW50IHhncmF2aXR5OwogICAgICAgIFhSZXNpemVSZXF1ZXN0RXZlbnQgeHJlc2l6ZXJlcXVlc3Q7 CiAgICAgICAgWENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJlcmVxdWVzdDsKICAgICAg ICBYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1bGF0ZTsKICAgICAgICBYQ2lyY3VsYXRlUmVxdWVzdEV2 ZW50IHhjaXJjdWxhdGVyZXF1ZXN0OwogICAgICAgIFhQcm9wZXJ0eUV2ZW50IHhwcm9wZXJ0eTsK ICAgICAgICBYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xlYXI7CiAgICAgICAgWFNl bGVjdGlvblJlcXVlc3RFdmVudCB4c2VsZWN0aW9ucmVxdWVzdDsKICAgICAgICBYU2VsZWN0aW9u RXZlbnQgeHNlbGVjdGlvbjsKICAgICAgICBYQ29sb3JtYXBFdmVudCB4Y29sb3JtYXA7CiAgICAg ICAgWENsaWVudE1lc3NhZ2VFdmVudCB4Y2xpZW50OwogICAgICAgIFhNYXBwaW5nRXZlbnQgeG1h cHBpbmc7CiAgICAgICAgWEVycm9yRXZlbnQgeGVycm9yOwogICAgICAgIFhLZXltYXBFdmVudCB4 a2V5bWFwOwogICAgICAgIGxvbmcgcGFkWzI0XTsKfSBYRXZlbnQ7CgoKCgoKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICBzaG9ydCBsYmVhcmluZzsKICAgIHNob3J0IHJiZWFyaW5nOwogICAgc2hvcnQg d2lkdGg7CiAgICBzaG9ydCBhc2NlbnQ7CiAgICBzaG9ydCBkZXNjZW50OwogICAgdW5zaWduZWQg c2hvcnQgYXR0cmlidXRlczsKfSBYQ2hhclN0cnVjdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAg ICBBdG9tIG5hbWU7CiAgICB1bnNpZ25lZCBsb25nIGNhcmQzMjsKfSBYRm9udFByb3A7Cgp0eXBl ZGVmIHN0cnVjdCB7CiAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICBGb250IGZpZDsKICAgIHVu c2lnbmVkIGRpcmVjdGlvbjsKICAgIHVuc2lnbmVkIG1pbl9jaGFyX29yX2J5dGUyOwogICAgdW5z aWduZWQgbWF4X2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtaW5fYnl0ZTE7CiAgICB1bnNp Z25lZCBtYXhfYnl0ZTE7CiAgICBpbnQgYWxsX2NoYXJzX2V4aXN0OwogICAgdW5zaWduZWQgZGVm YXVsdF9jaGFyOwogICAgaW50IG5fcHJvcGVydGllczsKICAgIFhGb250UHJvcCAqcHJvcGVydGll czsKICAgIFhDaGFyU3RydWN0IG1pbl9ib3VuZHM7CiAgICBYQ2hhclN0cnVjdCBtYXhfYm91bmRz OwogICAgWENoYXJTdHJ1Y3QgKnBlcl9jaGFyOwogICAgaW50IGFzY2VudDsKICAgIGludCBkZXNj ZW50Owp9IFhGb250U3RydWN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqY2hhcnM7 CiAgICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgRm9udCBmb250Owp9IFhUZXh0SXRl bTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTE7CiAgICB1bnNpZ25l ZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYQ2hhcjJiICpj aGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBGb250IGZvbnQ7Cn0gWFRl eHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgICAg ICAgICBHQyBnYzsKICAgICAgICAgICAgICAgIFZpc3VhbCAqdmlzdWFsOwogICAgICAgICAgICAg ICAgU2NyZWVuICpzY3JlZW47CiAgICAgICAgICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9m b3JtYXQ7CiAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udDsgfSBYRURhdGFPYmplY3Q7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlIG1heF9pbmtfZXh0ZW50OwogICAgWFJl Y3RhbmdsZSBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRlbnRzOwoKCgoKCnR5cGVk ZWYgc3RydWN0IF9YT00gKlhPTTsKdHlwZWRlZiBzdHJ1Y3QgX1hPQyAqWE9DLCAqWEZvbnRTZXQ7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBp bnQgZGVsdGE7CiAgICBYRm9udFNldCBmb250X3NldDsKfSBYbWJUZXh0SXRlbTsKCnR5cGVkZWYg c3RydWN0IHsKICAgIHdjaGFyX3QgKmNoYXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBkZWx0 YTsKICAgIFhGb250U2V0IGZvbnRfc2V0Owp9IFh3Y1RleHRJdGVtOwoKIyAxMTA4ICIvdXNyL2lu Y2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgY2hhcnNldF9jb3Vu dDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNldExpc3Q7Cgp0eXBlZGVmIGVu dW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhPTU9yaWVudGF0aW9uX1JUTF9U VEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9NT3JpZW50YXRpb25fVFRCX1JU TCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50YXRpb247Cgp0eXBlZGVmIHN0 cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9yaWVudGF0aW9uICpvcmllbnRh dGlvbjsKfSBYT01PcmllbnRhdGlvbjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1fZm9u dDsKICAgIFhGb250U3RydWN0ICoqZm9udF9zdHJ1Y3RfbGlzdDsKICAgIGNoYXIgKipmb250X25h bWVfbGlzdDsKfSBYT01Gb250SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9YSU0gKlhJTTsKdHlwZWRl ZiBzdHJ1Y3QgX1hJQyAqWElDOwoKdHlwZWRlZiB2b2lkICgqWElNUHJvYykoCgogICAgWElNLAog ICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgaW50ICgqWElDUHJvYykoCgog ICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgdm9pZCAoKlhJ RFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln bmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpzdXBwb3J0ZWRfc3R5bGVzOwp9 IFhJTVN0eWxlczsKCiMgMTIyNyAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiB2 b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xp ZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9IFhJTUNhbGxiYWNrOwoKdHlwZWRlZiBz dHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSUNQcm9jIGNhbGxiYWNrOwp9 IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTUZlZWRiYWNrOwoKIyAxMjU0 ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBfWElNVGV4dCB7CiAg ICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1GZWVkYmFjayAqZmVlZGJhY2s7CiAgICBp bnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAgICB1bmlvbiB7CiAgICAgICAgY2hhciAqbXVsdGlfYnl0 ZTsKICAgICAgICB3Y2hhcl90ICp3aWRlX2NoYXI7CiAgICB9IHN0cmluZzsKfSBYSU1UZXh0OwoK dHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVByZWVkaXRTdGF0ZTsKCgoKCgp0eXBlZGVmIHN0cnVj dCBfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNUHJlZWRpdFN0 YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlmeUNhbGxiYWNrU3RydWN0OwoKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIFhJTVJlc2V0U3RhdGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg WElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YSU1T dHJpbmdDb252ZXJzaW9uVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1T dHJpbmdDb252ZXJzaW9uRmVlZGJhY2sgKmZlZWRiYWNrOwogICAgaW50IGVuY29kaW5nX2lzX3dj aGFyOwogICAgdW5pb24gewogICAgICAgIGNoYXIgKm1iczsKICAgICAgICB3Y2hhcl90ICp3Y3M7 CiAgICB9IHN0cmluZzsKfSBYSU1TdHJpbmdDb252ZXJzaW9uVGV4dDsKCnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgWElNU3RyaW5nQ29udmVyc2lvblBvc2l0aW9uOwoKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCBYSU1TdHJpbmdDb252ZXJzaW9uVHlwZTsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y dCBYSU1TdHJpbmdDb252ZXJzaW9uT3BlcmF0aW9uOwoKCgoKdHlwZWRlZiBlbnVtIHsKICAgIFhJ TUZvcndhcmRDaGFyLCBYSU1CYWNrd2FyZENoYXIsCiAgICBYSU1Gb3J3YXJkV29yZCwgWElNQmFj a3dhcmRXb3JkLAogICAgWElNQ2FyZXRVcCwgWElNQ2FyZXREb3duLAogICAgWElNTmV4dExpbmUs IFhJTVByZXZpb3VzTGluZSwKICAgIFhJTUxpbmVTdGFydCwgWElNTGluZUVuZCwKICAgIFhJTUFi c29sdXRlUG9zaXRpb24sCiAgICBYSU1Eb250Q2hhbmdlCn0gWElNQ2FyZXREaXJlY3Rpb247Cgp0 eXBlZGVmIHN0cnVjdCBfWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0IHsKICAgIFhJ TVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbiBwb3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9u IGRpcmVjdGlvbjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25PcGVyYXRpb24gb3BlcmF0aW9uOwog ICAgdW5zaWduZWQgc2hvcnQgZmFjdG9yOwogICAgWElNU3RyaW5nQ29udmVyc2lvblRleHQgKnRl eHQ7Cn0gWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3Qg X1hJTVByZWVkaXREcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IGNhcmV0OwogICAgaW50IGNo Z19maXJzdDsKICAgIGludCBjaGdfbGVuZ3RoOwogICAgWElNVGV4dCAqdGV4dDsKfSBYSU1QcmVl ZGl0RHJhd0NhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBlbnVtIHsKICAgIFhJTUlzSW52aXNpYmxl LAogICAgWElNSXNQcmltYXJ5LAogICAgWElNSXNTZWNvbmRhcnkKfSBYSU1DYXJldFN0eWxlOwoK dHlwZWRlZiBzdHJ1Y3QgX1hJTVByZWVkaXRDYXJldENhbGxiYWNrU3RydWN0IHsKICAgIGludCBw b3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgIFhJTUNhcmV0U3R5 bGUgc3R5bGU7Cn0gWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIGVudW0g ewogICAgWElNVGV4dFR5cGUsCiAgICBYSU1CaXRtYXBUeXBlCn0gWElNU3RhdHVzRGF0YVR5cGU7 Cgp0eXBlZGVmIHN0cnVjdCBfWElNU3RhdHVzRHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIFhJTVN0 YXR1c0RhdGFUeXBlIHR5cGU7CiAgICB1bmlvbiB7CiAgICAgICAgWElNVGV4dCAqdGV4dDsKICAg ICAgICBQaXhtYXAgYml0bWFwOwogICAgfSBkYXRhOwp9IFhJTVN0YXR1c0RyYXdDYWxsYmFja1N0 cnVjdDsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VyIHsKICAgIEtleVN5bSBrZXlz eW07CiAgICBpbnQgbW9kaWZpZXI7CiAgICBpbnQgbW9kaWZpZXJfbWFzazsKfSBYSU1Ib3RLZXlU cmlnZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXJzIHsKICAgIGludCBudW1f aG90X2tleTsKICAgIFhJTUhvdEtleVRyaWdnZXIgKmtleTsKfSBYSU1Ib3RLZXlUcmlnZ2VyczsK CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1Ib3RLZXlTdGF0ZTsKCgoKCnR5cGVkZWYgc3RydWN0 IHsKICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3ZhbHVlczsKICAgIGNoYXIgKipzdXBwb3J0ZWRf dmFsdWVzOwp9IFhJTVZhbHVlc0xpc3Q7CgoKCgoKCgpleHRlcm4gaW50IF9YZGVidWc7CgpleHRl cm4gWEZvbnRTdHJ1Y3QgKlhMb2FkUXVlcnlGb250KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0 IGNoYXIqCgopOwoKZXh0ZXJuIFhGb250U3RydWN0ICpYUXVlcnlGb250KAoKICAgIERpc3BsYXkq ICwKICAgIFhJRAoKKTsKCgpleHRlcm4gWFRpbWVDb29yZCAqWEdldE1vdGlvbkV2ZW50cygKCiAg ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgVGltZSAsCiAgICBUaW1lICwKICAgIGludCoK Cik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYRGVsZXRlTW9kaWZpZXJtYXBFbnRyeSgKCiAg ICBYTW9kaWZpZXJLZXltYXAqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgogICAgaW50CgopOwoK ZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWEdldE1vZGlmaWVyTWFwcGluZygKCiAgICBEaXNwbGF5 KgoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhJbnNlcnRNb2RpZmllcm1hcEVudHJ5KAoK ICAgIFhNb2RpZmllcktleW1hcCogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQKCik7 CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYTmV3TW9kaWZpZXJtYXAoCgogICAgaW50CgopOwoK ZXh0ZXJuIFhJbWFnZSAqWENyZWF0ZUltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIFZpc3VhbCog LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg dW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwpl eHRlcm4gaW50IFhJbml0SW1hZ2UoCgogICAgWEltYWdlKgoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdl dEltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQg LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25n ICwKICAgIGludAoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdldFN1YkltYWdlKAoKICAgIERpc3BsYXkq ICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIGludCAsCiAgICBYSW1h Z2UqICwKICAgIGludCAsCiAgICBpbnQKCik7CgoKCgpleHRlcm4gRGlzcGxheSAqWE9wZW5EaXNw bGF5KAoKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIHZvaWQgWHJtSW5pdGlhbGl6ZSgKCiAg ICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ5dGVzKAoKICAgIERpc3BsYXkqICwKICAg IGludCoKCik7CmV4dGVybiBjaGFyICpYRmV0Y2hCdWZmZXIoCgogICAgRGlzcGxheSogLAogICAg aW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBjaGFyICpYR2V0QXRvbU5hbWUoCgogICAgRGlzcGxh eSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIGludCBYR2V0QXRvbU5hbWVzKAoKICAgIERpc3BsYXkq ICwKICAgIEF0b20qICwKICAgIGludCAsCiAgICBjaGFyKioKCik7CmV4dGVybiBjaGFyICpYR2V0 RGVmYXVsdCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFy KgoKKTsKZXh0ZXJuIGNoYXIgKlhEaXNwbGF5TmFtZSgKCiAgICBjb25zdCBjaGFyKgoKKTsKZXh0 ZXJuIGNoYXIgKlhLZXlzeW1Ub1N0cmluZygKCiAgICBLZXlTeW0KCik7CgpleHRlcm4gaW50ICgq WFN5bmNocm9uaXplKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKSkoCgogICAgRGlzcGxheSoK Cik7CmV4dGVybiBpbnQgKCpYU2V0QWZ0ZXJGdW5jdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBp bnQgKCopICgKCiAgICAgICAgICAgICBEaXNwbGF5KgoKICAgICAgICAgICAgKQoKKSkoCgogICAg RGlzcGxheSoKCik7CmV4dGVybiBBdG9tIFhJbnRlcm5BdG9tKAoKICAgIERpc3BsYXkqICwKICAg IGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYSW50ZXJuQXRvbXMoCgogICAg RGlzcGxheSogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgQXRvbSoKCik7 CmV4dGVybiBDb2xvcm1hcCBYQ29weUNvbG9ybWFwQW5kRnJlZSgKCiAgICBEaXNwbGF5KiAsCiAg ICBDb2xvcm1hcAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDcmVhdGVDb2xvcm1hcCgKCiAgICBEaXNw bGF5KiAsCiAgICBXaW5kb3cgLAogICAgVmlzdWFsKiAsCiAgICBpbnQKCik7CmV4dGVybiBDdXJz b3IgWENyZWF0ZVBpeG1hcEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBQaXhtYXAgLAogICAg UGl4bWFwICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKiAsCiAgICB1bnNpZ25lZCBpbnQgLAog ICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gQ3Vyc29yIFhDcmVhdGVHbHlwaEN1cnNvcigKCiAg ICBEaXNwbGF5KiAsCiAgICBGb250ICwKICAgIEZvbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg IHVuc2lnbmVkIGludCAsCiAgICBYQ29sb3IgY29uc3QgKiAsCiAgICBYQ29sb3IgY29uc3QgKgoK KTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlRm9udEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICB1 bnNpZ25lZCBpbnQKCik7CmV4dGVybiBGb250IFhMb2FkRm9udCgKCiAgICBEaXNwbGF5KiAsCiAg ICBjb25zdCBjaGFyKgoKKTsKZXh0ZXJuIEdDIFhDcmVhdGVHQygKCiAgICBEaXNwbGF5KiAsCiAg ICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhHQ1ZhbHVlcyoKCik7CmV4dGVy biBHQ29udGV4dCBYR0NvbnRleHRGcm9tR0MoCgogICAgR0MKCik7CmV4dGVybiB2b2lkIFhGbHVz aEdDKAoKICAgIERpc3BsYXkqICwKICAgIEdDCgopOwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXht YXAoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAg IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0 ZUJpdG1hcEZyb21EYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGNvbnN0 IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQ aXhtYXAgWENyZWF0ZVBpeG1hcEZyb21CaXRtYXBEYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERy YXdhYmxlICwKICAgIGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgbG9uZyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGlu dAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlU2ltcGxlV2luZG93KAoKICAgIERpc3BsYXkqICwK ICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1 bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAg dW5zaWduZWQgbG9uZwoKKTsKZXh0ZXJuIFdpbmRvdyBYR2V0U2VsZWN0aW9uT3duZXIoCgogICAg RGlzcGxheSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlV2luZG93KAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAg ICB1bnNpZ25lZCBpbnQgLAogICAgVmlzdWFsKiAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhT ZXRXaW5kb3dBdHRyaWJ1dGVzKgoKKTsKZXh0ZXJuIENvbG9ybWFwICpYTGlzdEluc3RhbGxlZENv bG9ybWFwcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50KgoKKTsKZXh0ZXJu IGNoYXIgKipYTGlzdEZvbnRzKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAg IGludCAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0Rm9udHNXaXRoSW5mbygKCiAg ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBY Rm9udFN0cnVjdCoqCgopOwpleHRlcm4gY2hhciAqKlhHZXRGb250UGF0aCgKCiAgICBEaXNwbGF5 KiAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0RXh0ZW5zaW9ucygKCiAgICBEaXNw bGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gQXRvbSAqWExpc3RQcm9wZXJ0aWVzKAoKICAgIERp c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQqCgopOwpleHRlcm4gWEhvc3RBZGRyZXNzICpY TGlzdEhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50KgoKKTsKZXh0ZXJu IEtleVN5bSBYS2V5Y29kZVRvS2V5c3ltKAoKICAgIERpc3BsYXkqICwKCiAgICB1bnNpZ25lZCBp bnQgLAoKCgogICAgaW50CgopOwpleHRlcm4gS2V5U3ltIFhMb29rdXBLZXlzeW0oCgogICAgWEtl eUV2ZW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBLZXlTeW0gKlhHZXRLZXlib2FyZE1hcHBpbmco CgogICAgRGlzcGxheSogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQgLAogICAgaW50 KgoKKTsKZXh0ZXJuIEtleVN5bSBYU3RyaW5nVG9LZXlzeW0oCgogICAgY29uc3QgY2hhcioKCik7 CmV4dGVybiBsb25nIFhNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGxv bmcgWEV4dGVuZGVkTWF4UmVxdWVzdFNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFy ICpYUmVzb3VyY2VNYW5hZ2VyU3RyaW5nKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAq WFNjcmVlblJlc291cmNlU3RyaW5nKAoKICAgICAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWdu ZWQgbG9uZyBYRGlzcGxheU1vdGlvbkJ1ZmZlclNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVy biBWaXN1YWxJRCBYVmlzdWFsSURGcm9tVmlzdWFsKAoKICAgIFZpc3VhbCoKCik7CgoKCmV4dGVy biBpbnQgWEluaXRUaHJlYWRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYTG9ja0Rpc3Bs YXkoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gdm9pZCBYVW5sb2NrRGlzcGxheSgKCiAgICBE aXNwbGF5KgoKKTsKCgoKZXh0ZXJuIFhFeHRDb2RlcyAqWEluaXRFeHRlbnNpb24oCgogICAgRGlz cGxheSogLAogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gWEV4dENvZGVzICpYQWRkRXh0ZW5z aW9uKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gWEV4dERhdGEgKlhGaW5kT25FeHRlbnNpb25M aXN0KAoKICAgIFhFeHREYXRhKiogLAogICAgaW50CgopOwpleHRlcm4gWEV4dERhdGEgKipYRUhl YWRPZkV4dGVuc2lvbkxpc3QoCgogICAgWEVEYXRhT2JqZWN0CgopOwoKCmV4dGVybiBXaW5kb3cg WFJvb3RXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gV2luZG93IFhE ZWZhdWx0Um9vdFdpbmRvdygKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIFdpbmRvdyBYUm9vdFdp bmRvd09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiBWaXN1YWwgKlhEZWZhdWx0Vmlz dWFsKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1bHRW aXN1YWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gR0MgWERlZmF1bHRHQygKCiAg ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdDT2ZTY3JlZW4oCgog ICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWwoCgogICAgRGlz cGxheSogLAogICAgaW50CgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbCgKCiAg ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhBbGxQbGFuZXMo CgogICAgdm9pZAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWxPZlNjcmVlbigK CiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbE9mU2NyZWVu KAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhOZXh0UmVxdWVzdCgKCiAg ICBEaXNwbGF5KgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWExhc3RLbm93blJlcXVlc3RQcm9j ZXNzZWQoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFyICpYU2VydmVyVmVuZG9yKAoKICAg IERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlTdHJpbmcoCgogICAgRGlzcGxheSoK Cik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAg IGludAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXBPZlNjcmVlbigKCiAgICBT Y3JlZW4qCgopOwpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZlNjcmVlbigKCiAgICBTY3JlZW4q CgopOwpleHRlcm4gU2NyZWVuICpYU2NyZWVuT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkqICwKICAg IGludAoKKTsKZXh0ZXJuIFNjcmVlbiAqWERlZmF1bHRTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlz cGxheSoKCik7CmV4dGVybiBsb25nIFhFdmVudE1hc2tPZlNjcmVlbigKCiAgICBTY3JlZW4qCgop OwoKZXh0ZXJuIGludCBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCnR5 cGVkZWYgaW50ICgqWEVycm9ySGFuZGxlcikgKAoKICAgIERpc3BsYXkqICwKICAgIFhFcnJvckV2 ZW50KgoKKTsKCmV4dGVybiBYRXJyb3JIYW5kbGVyIFhTZXRFcnJvckhhbmRsZXIgKAoKICAgIFhF cnJvckhhbmRsZXIKCik7CgoKdHlwZWRlZiBpbnQgKCpYSU9FcnJvckhhbmRsZXIpICgKCiAgICBE aXNwbGF5KgoKKTsKCmV4dGVybiBYSU9FcnJvckhhbmRsZXIgWFNldElPRXJyb3JIYW5kbGVyICgK CiAgICBYSU9FcnJvckhhbmRsZXIKCik7CgoKZXh0ZXJuIFhQaXhtYXBGb3JtYXRWYWx1ZXMgKlhM aXN0UGl4bWFwRm9ybWF0cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50 ICpYTGlzdERlcHRocygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50KgoKKTsKCgoK ZXh0ZXJuIGludCBYUmVjb25maWd1cmVXTVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k b3cgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYV2luZG93Q2hhbmdlcyoKCik7 CgpleHRlcm4gaW50IFhHZXRXTVByb3RvY29scygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg LAogICAgQXRvbSoqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQgWFNldFdNUHJvdG9jb2xzKAoK ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBBdG9tKiAsCiAgICBpbnQKCik7CmV4dGVy biBpbnQgWEljb25pZnlXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGlu dAoKKTsKZXh0ZXJuIGludCBYV2l0aGRyYXdXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2lu ZG93ICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYR2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KiAs CiAgICBXaW5kb3cgLAogICAgY2hhcioqKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhHZXRX TUNvbG9ybWFwV2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93 KiogLAogICAgaW50KgoKKTsKZXh0ZXJuIGludCBYU2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAg RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwpleHRlcm4g dm9pZCBYRnJlZVN0cmluZ0xpc3QoCgogICAgY2hhcioqCgopOwpleHRlcm4gaW50IFhTZXRUcmFu c2llbnRGb3JIaW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cKCik7 CgoKCmV4dGVybiBpbnQgWEFjdGl2YXRlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl eHRlcm4gaW50IFhBZGRIb3N0KAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0QWRkcmVzcyoKCik7 CgpleHRlcm4gaW50IFhBZGRIb3N0cygKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFkZHJlc3Mq ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvRXh0ZW5zaW9uTGlzdCgKCiAgICBzdHJ1 Y3QgX1hFeHREYXRhKiogLAogICAgWEV4dERhdGEqCgopOwoKZXh0ZXJuIGludCBYQWRkVG9TYXZl U2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29s b3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKgoKKTsKCmV4dGVy biBpbnQgWEFsbG9jQ29sb3JDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAg ICBpbnQgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2ln bmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29sb3JQ bGFuZXMoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgaW50ICwKICAgIHVuc2ln bmVkIGxvbmcqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1 bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKgoK KTsKCmV4dGVybiBpbnQgWEFsbG9jTmFtZWRDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xv cm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7Cgpl eHRlcm4gaW50IFhBbGxvd0V2ZW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgVGlt ZQoKKTsKCmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPZmYoCgogICAgRGlzcGxheSoKCik7CgpleHRl cm4gaW50IFhBdXRvUmVwZWF0T24oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhCZWxs KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcEJpdE9yZGVy KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYQml0bWFwUGFkKAoKICAgIERpc3BsYXkq CgopOwoKZXh0ZXJuIGludCBYQml0bWFwVW5pdCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp bnQgWENlbGxzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUFj dGl2ZVBvaW50ZXJHcmFiKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBD dXJzb3IgLAogICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUdDKAoKICAgIERpc3BsYXkq ICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgWEdDVmFsdWVzKgoKKTsKCmV4dGVy biBpbnQgWENoYW5nZUtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25l ZCBsb25nICwKICAgIFhLZXlib2FyZENvbnRyb2wqCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlS2V5 Ym9hcmRNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgS2V5 U3ltKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQb2ludGVyQ29udHJvbCgKCiAg ICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlUHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAg V2luZG93ICwKICAgIEF0b20gLAogICAgQXRvbSAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVNhdmVT ZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg WENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IHVuc2lnbmVkIGxvbmcgLAogICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCgopOwoKZXh0ZXJuIGlu dCBYQ2hlY2tJZkV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCogLAogICAgaW50ICgq KSAoCgogICAgICAgICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAgIFhFdmVudCogLAog ICAgICAgICAgICAgICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAgWFBvaW50ZXIKCik7 CgpleHRlcm4gaW50IFhDaGVja01hc2tFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBsb25nICwK ICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkRXZlbnQoCgogICAgRGlzcGxh eSogLAogICAgaW50ICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkV2lu ZG93RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBYRXZl bnQqCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAg ICBXaW5kb3cgLAogICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2lyY3Vs YXRlU3Vid2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50CgopOwoK ZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c0Rvd24oCgogICAgRGlzcGxheSogLAogICAg V2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c1VwKAoKICAgIERpc3Bs YXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsZWFyQXJlYSgKCiAgICBEaXNwbGF5 KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAog ICAgdW5zaWduZWQgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENsZWFyV2luZG93KAoK ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsb3NlRGlzcGxheSgK CiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWENvbmZpZ3VyZVdpbmRvdygKCiAgICBEaXNw bGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFhXaW5kb3dDaGFuZ2Vz KgoKKTsKCmV4dGVybiBpbnQgWENvbm5lY3Rpb25OdW1iZXIoCgogICAgRGlzcGxheSoKCik7Cgpl eHRlcm4gaW50IFhDb252ZXJ0U2VsZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20gLAog ICAgQXRvbSAsCiAgICBBdG9tICwKICAgIFdpbmRvdyAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGlu dCBYQ29weUFyZWEoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgRHJhd2FibGUg LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z aWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDb3B5R0MoCgog ICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBHQwoKKTsKCmV4 dGVybiBpbnQgWENvcHlQbGFuZSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBE cmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAs CiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBsb25n CgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdERlcHRoKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7Cgpl eHRlcm4gaW50IFhEZWZhdWx0U2NyZWVuKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBY RGVmaW5lQ3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IKCik7 CgpleHRlcm4gaW50IFhEZWxldGVQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg LAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lXaW5kb3coCgogICAgRGlzcGxheSog LAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVN1YndpbmRvd3MoCgogICAgRGlz cGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRG9lc0JhY2tpbmdTdG9yZSgKCiAg ICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYRG9lc1NhdmVVbmRlcnMoCgogICAgU2NyZWVuKgoK KTsKCmV4dGVybiBpbnQgWERpc2FibGVBY2Nlc3NDb250cm9sKAoKICAgIERpc3BsYXkqCgopOwoK CmV4dGVybiBpbnQgWERpc3BsYXlDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl eHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4 dGVybiBpbnQgWERpc3BsYXlIZWlnaHRNTSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl eHRlcm4gaW50IFhEaXNwbGF5S2V5Y29kZXMoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAg ICBpbnQqCgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVBsYW5lcygKCiAgICBEaXNwbGF5KiAsCiAg ICBpbnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5V2lkdGgoCgogICAgRGlzcGxheSogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoTU0oCgogICAgRGlzcGxheSogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0FyYygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJs ZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1 bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmNz KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhBcmMqICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAg ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZzE2KAoKICAgIERpc3Bs YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29u c3QgWENoYXIyYiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmUoCgogICAgRGlz cGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp bnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmVzKAoKICAgIERpc3BsYXkqICwK ICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCogLAogICAgaW50ICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWERyYXdQb2ludCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50cygK CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAg IGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UmVjdGFuZ2xlKAoKICAgIERpc3Bs YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5n bGVzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhSZWN0YW5n bGUqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdTZWdtZW50cygKCiAgICBEaXNwbGF5 KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYU2VnbWVudCogLAogICAgaW50CgopOwoK ZXh0ZXJuIGludCBYRHJhd1N0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAg ICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsK CmV4dGVybiBpbnQgWERyYXdTdHJpbmcxNigKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAgIGlu dAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtKiAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhEcmF3VGV4dDE2KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtMTYqICwKICAgIGlu dAoKKTsKCmV4dGVybiBpbnQgWEVuYWJsZUFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoKCik7 CgpleHRlcm4gaW50IFhFdmVudHNRdWV1ZWQoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoK ZXh0ZXJuIGludCBYRmV0Y2hOYW1lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBj aGFyKioKCik7CgpleHRlcm4gaW50IFhGaWxsQXJjKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg IHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbEFy Y3MoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEFyYyogLAog ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFBvbHlnb24oCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgR0MgLAogICAgWFBvaW50KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxSZWN0YW5nbGUoCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFJlY3RhbmdsZXMoCgogICAg RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFJlY3RhbmdsZSogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYRmx1c2goCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50 IFhGb3JjZVNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBp bnQgWEZyZWUoCgogICAgdm9pZCoKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JtYXAoCgogICAg RGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JzKAoKICAg IERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIGludCAs CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYRnJlZUN1cnNvcigKCiAgICBEaXNw bGF5KiAsCiAgICBDdXJzb3IKCik7CgpleHRlcm4gaW50IFhGcmVlRXh0ZW5zaW9uTGlzdCgKCiAg ICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udCgKCiAgICBEaXNwbGF5KiAsCiAgICBY Rm9udFN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udEluZm8oCgogICAgY2hhcioqICwK ICAgIFhGb250U3RydWN0KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udE5hbWVz KAoKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250UGF0aCgKCiAgICBjaGFyKioK Cik7CgpleHRlcm4gaW50IFhGcmVlR0MoCgogICAgRGlzcGxheSogLAogICAgR0MKCik7CgpleHRl cm4gaW50IFhGcmVlTW9kaWZpZXJtYXAoCgogICAgWE1vZGlmaWVyS2V5bWFwKgoKKTsKCmV4dGVy biBpbnQgWEZyZWVQaXhtYXAoCgogICAgRGlzcGxheSogLAogICAgUGl4bWFwCgopOwoKZXh0ZXJu IGludCBYR2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBp bnQqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEVycm9yRGF0YWJh c2VUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg WEdldEVycm9yVGV4dCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYR2V0Rm9udFByb3BlcnR5KAoKICAgIFhGb250U3RydWN0KiAs CiAgICBBdG9tICwKICAgIHVuc2lnbmVkIGxvbmcqCgopOwoKZXh0ZXJuIGludCBYR2V0R0NWYWx1 ZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NW YWx1ZXMqCgopOwoKZXh0ZXJuIGludCBYR2V0R2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAg RHJhd2FibGUgLAogICAgV2luZG93KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgdW5zaWdu ZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5z aWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEljb25OYW1lKAoKICAgIERpc3BsYXkqICwK ICAgIFdpbmRvdyAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhHZXRJbnB1dEZvY3VzKAoK ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdl dEtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBYS2V5Ym9hcmRTdGF0ZSoKCik7 CgpleHRlcm4gaW50IFhHZXRQb2ludGVyQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq ICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldFBvaW50ZXJNYXBwaW5n KAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVy biBpbnQgWEdldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50 KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRUcmFuc2llbnRGb3JI aW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqCgopOwoKZXh0ZXJu IGludCBYR2V0V2luZG93UHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IEF0b20gLAogICAgbG9uZyAsCiAgICBsb25nICwKICAgIGludCAsCiAgICBBdG9tICwKICAgIEF0 b20qICwKICAgIGludCogLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgbG9uZyog LAogICAgdW5zaWduZWQgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYR2V0V2luZG93QXR0cmlidXRl cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFdpbmRvd0F0dHJpYnV0ZXMqCgop OwoKZXh0ZXJuIGludCBYR3JhYkJ1dHRvbigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBp bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgdW5zaWdu ZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgV2luZG93ICwKICAgIEN1cnNvcgoKKTsK CmV4dGVybiBpbnQgWEdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIHVuc2ln bmVkIGludCAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7Cgpl eHRlcm4gaW50IFhHcmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhHcmFi UG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIHVuc2ln bmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IgLAog ICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWEdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl eHRlcm4gaW50IFhIZWlnaHRNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50 IFhIZWlnaHRPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYSWZFdmVudCgK CiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAgIGludCAoKikgKAoKICAgICAgICAgICAg ICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZlbnQqICwKICAgICAgICAgICAgICAgWFBv aW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2ludGVyCgopOwoKZXh0ZXJuIGludCBYSW1h Z2VCeXRlT3JkZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhJbnN0YWxsQ29sb3Jt YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gS2V5Q29kZSBYS2V5 c3ltVG9LZXljb2RlKAoKICAgIERpc3BsYXkqICwKICAgIEtleVN5bQoKKTsKCmV4dGVybiBpbnQg WEtpbGxDbGllbnQoCgogICAgRGlzcGxheSogLAogICAgWElECgopOwoKZXh0ZXJuIGludCBYTG9v a3VwQ29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciog LAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYTG93ZXJXaW5kb3co CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwUmFpc2VkKAoK ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hcFN1YndpbmRvd3Mo CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwV2luZG93KAoK ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hc2tFdmVudCgKCiAg ICBEaXNwbGF5KiAsCiAgICBsb25nICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhNYXhD bWFwc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNaW5DbWFwc09mU2Ny ZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNb3ZlUmVzaXplV2luZG93KAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk IGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhNb3ZlV2luZG93KAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGlu dCBYTmV4dEV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50 IFhOb09wKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYUGFyc2VDb2xvcigKCiAgICBE aXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqCgop OwoKZXh0ZXJuIGludCBYUGFyc2VHZW9tZXRyeSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQq ICwKICAgIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoK ZXh0ZXJuIGludCBYUGVla0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7Cgpl eHRlcm4gaW50IFhQZWVrSWZFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAg IGludCAoKikgKAoKICAgICAgICAgICAgICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZl bnQqICwKICAgICAgICAgICAgICAgWFBvaW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2lu dGVyCgopOwoKZXh0ZXJuIGludCBYUGVuZGluZygKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp bnQgWFBsYW5lc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCgopOwoKZXh0ZXJuIGludCBYUHJvdG9j b2xSZXZpc2lvbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFByb3RvY29sVmVyc2lv bigKCiAgICBEaXNwbGF5KgoKKTsKCgpleHRlcm4gaW50IFhQdXRCYWNrRXZlbnQoCgogICAgRGlz cGxheSogLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWFB1dEltYWdlKAoKICAgIERpc3Bs YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhJbWFnZSogLAogICAgaW50ICwKICAg IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l ZCBpbnQKCik7CgpleHRlcm4gaW50IFhRTGVuZ3RoKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJu IGludCBYUXVlcnlCZXN0Q3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAg ICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0U2l6ZSgKCiAgICBEaXNw bGF5KiAsCiAgICBpbnQgLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu c2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7Cgpl eHRlcm4gaW50IFhRdWVyeUJlc3RTdGlwcGxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50 KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0VGlsZSgKCiAg ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWdu ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVy biBpbnQgWFF1ZXJ5Q29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENv bG9yKgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5Q29sb3JzKAoKICAgIERpc3BsYXkqICwKICAgIENv bG9ybWFwICwKICAgIFhDb2xvciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUXVlcnlFeHRl bnNpb24oCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50KiAsCiAgICBp bnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUtleW1hcCgKCiAgICBEaXNwbGF5 KiAsCiAgICBjaGFyIFszMl0KCik7CgpleHRlcm4gaW50IFhRdWVyeVBvaW50ZXIoCgogICAgRGlz cGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiAsCiAgICBpbnQq ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7 CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRlbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAs CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGlu dCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50czE2 KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQg LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoK ZXh0ZXJuIGludCBYUXVlcnlUcmVlKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBX aW5kb3cqICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiogLAogICAgdW5zaWduZWQgaW50KgoK KTsKCmV4dGVybiBpbnQgWFJhaXNlV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoK KTsKCmV4dGVybiBpbnQgWFJlYWRCaXRtYXBGaWxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh YmxlICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQg aW50KiAsCiAgICBQaXhtYXAqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQg WFJlYWRCaXRtYXBGaWxlRGF0YSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQq ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgY2hhcioqICwKICAgIGludCogLAog ICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFJlYmluZEtleXN5bSgKCiAgICBEaXNwbGF5KiAsCiAg ICBLZXlTeW0gLAogICAgS2V5U3ltKiAsCiAgICBpbnQgLAogICAgY29uc3QgdW5zaWduZWQgY2hh ciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVjb2xvckN1cnNvcigKCiAgICBEaXNwbGF5 KiAsCiAgICBDdXJzb3IgLAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGlu dCBYUmVmcmVzaEtleWJvYXJkTWFwcGluZygKCiAgICBYTWFwcGluZ0V2ZW50KgoKKTsKCmV4dGVy biBpbnQgWFJlbW92ZUZyb21TYXZlU2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsK CmV4dGVybiBpbnQgWFJlbW92ZUhvc3QoCgogICAgRGlzcGxheSogLAogICAgWEhvc3RBZGRyZXNz KgoKKTsKCmV4dGVybiBpbnQgWFJlbW92ZUhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0 QWRkcmVzcyogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVwYXJlbnRXaW5kb3coCgogICAg RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50Cgop OwoKZXh0ZXJuIGludCBYUmVzZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVy biBpbnQgWFJlc2l6ZVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5z aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFJlc3RhY2tXaW5k b3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwoKZXh0ZXJuIGlu dCBYUm90YXRlQnVmZmVycygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50 IFhSb3RhdGVXaW5kb3dQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAg ICBBdG9tKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2NyZWVuQ291bnQo CgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhTZWxlY3RJbnB1dCgKCiAgICBEaXNwbGF5 KiAsCiAgICBXaW5kb3cgLAogICAgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNlbmRFdmVudCgKCiAg ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGxvbmcgLAogICAgWEV2ZW50 KgoKKTsKCmV4dGVybiBpbnQgWFNldEFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSogLAogICAg aW50CgopOwoKZXh0ZXJuIGludCBYU2V0QXJjTW9kZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwK ICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRDbGlwTWFzaygK CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRD bGlwT3JpZ2luKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7 CgpleHRlcm4gaW50IFhTZXRDbGlwUmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs CiAgICBpbnQgLAogICAgaW50ICwKICAgIFhSZWN0YW5nbGUqICwKICAgIGludCAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhTZXRDbG9zZURvd25Nb2RlKAoKICAgIERpc3BsYXkqICwKICAgIGlu dAoKKTsKCmV4dGVybiBpbnQgWFNldENvbW1hbmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93 ICwKICAgIGNoYXIqKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXREYXNoZXMoCgogICAg RGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoK KTsKCmV4dGVybiBpbnQgWFNldEZpbGxSdWxlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAg IGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZpbGxTdHlsZSgKCiAgICBEaXNwbGF5KiAsCiAgICBH QyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250KAoKICAgIERpc3BsYXkqICwKICAg IEdDICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250UGF0aCgKCiAgICBEaXNwbGF5 KiAsCiAgICBjaGFyKiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9yZWdyb3VuZCgK CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGlu dCBYU2V0RnVuY3Rpb24oCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0 ZXJuIGludCBYU2V0R3JhcGhpY3NFeHBvc3VyZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAog ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0SWNvbk5hbWUoCgogICAgRGlzcGxheSogLAogICAg V2luZG93ICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIGludCBYU2V0SW5wdXRGb2N1cygK CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRl cm4gaW50IFhTZXRMaW5lQXR0cmlidXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1 bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50 IFhTZXRNb2RpZmllck1hcHBpbmcoCgogICAgRGlzcGxheSogLAogICAgWE1vZGlmaWVyS2V5bWFw KgoKKTsKCmV4dGVybiBpbnQgWFNldFBsYW5lTWFzaygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0UG9pbnRlck1hcHBpbmcoCgog ICAgRGlzcGxheSogLAogICAgY29uc3QgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoKZXh0 ZXJuIGludCBYU2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGlu dCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0U2VsZWN0aW9uT3duZXIo CgogICAgRGlzcGxheSogLAogICAgQXRvbSAsCiAgICBXaW5kb3cgLAogICAgVGltZQoKKTsKCmV4 dGVybiBpbnQgWFNldFN0YXRlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVk IGxvbmcgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgbG9uZwoK KTsKCmV4dGVybiBpbnQgWFNldFN0aXBwbGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAg UGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0U3Vid2luZG93TW9kZSgKCiAgICBEaXNwbGF5KiAs CiAgICBHQyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRUU09yaWdpbigKCiAgICBEaXNw bGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0VGls ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhT ZXRXaW5kb3dCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNp Z25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcCgKCiAg ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0 V2luZG93Qm9yZGVyKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBs b25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyUGl4bWFwKAoKICAgIERpc3BsYXkq ICwKICAgIFdpbmRvdyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCb3Jk ZXJXaWR0aCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50Cgop OwoKZXh0ZXJuIGludCBYU2V0V2luZG93Q29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2lu ZG93ICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGludCBYU3RvcmVCdWZmZXIoCgogICAgRGlz cGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp bnQgWFN0b3JlQnl0ZXMoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50 CgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1h cCAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcnMoCgogICAgRGlzcGxh eSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50 IFhTdG9yZU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIq CgopOwoKZXh0ZXJuIGludCBYU3RvcmVOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENv bG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50Cgop OwoKZXh0ZXJuIGludCBYU3luYygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4g aW50IFhUZXh0RXh0ZW50cygKCiAgICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgY2hhciogLAog ICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3RydWN0 KgoKKTsKCmV4dGVybiBpbnQgWFRleHRFeHRlbnRzMTYoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAg IGNvbnN0IFhDaGFyMmIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50 KiAsCiAgICBYQ2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgoCgogICAgWEZv bnRTdHJ1Y3QqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFRl eHRXaWR0aDE2KAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBp bnQKCik7CgpleHRlcm4gaW50IFhUcmFuc2xhdGVDb29yZGluYXRlcygKCiAgICBEaXNwbGF5KiAs CiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAs CiAgICBpbnQqICwKICAgIFdpbmRvdyoKCik7CgpleHRlcm4gaW50IFhVbmRlZmluZUN1cnNvcigK CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJCdXR0b24o CgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg ICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAg aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdy YWJLZXlib2FyZCgKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n cmFiUG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n cmFiU2VydmVyKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYVW5pbnN0YWxsQ29sb3Jt YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhVbmxvYWRG b250KAoKICAgIERpc3BsYXkqICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhVbm1hcFN1Yndp bmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5tYXBX aW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVmVuZG9y UmVsZWFzZSgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFdhcnBQb2ludGVyKAoKICAg IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAs CiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQK Cik7CgpleHRlcm4gaW50IFhXaWR0aE1NT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVy biBpbnQgWFdpZHRoT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWFdpbmRv d0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBsb25nICwKICAgIFhFdmVu dCoKCik7CgpleHRlcm4gaW50IFhXcml0ZUJpdG1hcEZpbGUoCgogICAgRGlzcGxheSogLAogICAg Y29uc3QgY2hhciogLAogICAgUGl4bWFwICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l ZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN1cHBvcnRzTG9jYWxl KAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKCiAgICBj b25zdCBjaGFyKgoKKTsKCmV4dGVybiBYT00gWE9wZW5PTSgKCiAgICBEaXNwbGF5KiAsCiAgICBz dHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNo YXIqCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VPTSgKCiAgICBYT00KCik7CgpleHRlcm4gY2hhciAq WFNldE9NVmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gY2hhciAqWEdldE9N VmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlP Zk9NKAoKICAgIFhPTQoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZPTSgKCiAgICBYT00KCik7 CgpleHRlcm4gWE9DIFhDcmVhdGVPQygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIHZv aWQgWERlc3Ryb3lPQygKCiAgICBYT0MKCik7CgpleHRlcm4gWE9NIFhPTU9mT0MoCgogICAgWE9D CgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoK ZXh0ZXJuIGNoYXIgKlhHZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoKZXh0ZXJu IFhGb250U2V0IFhDcmVhdGVGb250U2V0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGNoYXIqKiogLAogICAgaW50KiAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gdm9pZCBY RnJlZUZvbnRTZXQoCgogICAgRGlzcGxheSogLAogICAgWEZvbnRTZXQKCik7CgpleHRlcm4gaW50 IFhGb250c09mRm9udFNldCgKCiAgICBYRm9udFNldCAsCiAgICBYRm9udFN0cnVjdCoqKiAsCiAg ICBjaGFyKioqCgopOwoKZXh0ZXJuIGNoYXIgKlhCYXNlRm9udE5hbWVMaXN0T2ZGb250U2V0KAoK ICAgIFhGb250U2V0CgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZkZvbnRTZXQoCgogICAgWEZv bnRTZXQKCik7CgpleHRlcm4gaW50IFhDb250ZXh0RGVwZW5kZW50RHJhd2luZygKCiAgICBYRm9u dFNldAoKKTsKCmV4dGVybiBpbnQgWERpcmVjdGlvbmFsRGVwZW5kZW50RHJhd2luZygKCiAgICBY Rm9udFNldAoKKTsKCmV4dGVybiBpbnQgWENvbnRleHR1YWxEcmF3aW5nKAoKICAgIFhGb250U2V0 CgopOwoKZXh0ZXJuIFhGb250U2V0RXh0ZW50cyAqWEV4dGVudHNPZkZvbnRTZXQoCgogICAgWEZv bnRTZXQKCik7CgpleHRlcm4gaW50IFhtYlRleHRFc2NhcGVtZW50KAoKICAgIFhGb250U2V0ICwK ICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dEVzY2FwZW1l bnQoCgogICAgWEZvbnRTZXQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0 ZXJuIGludCBYbWJUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAsCiAgICBjb25zdCBjaGFyKiAs CiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3RhbmdsZSoKCik7CgpleHRlcm4g aW50IFh3Y1RleHRFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwK ICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBp bnQgWG1iVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IGNoYXIq ICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQg LAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVy biBpbnQgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdj aGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAg ICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsK CmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwK ICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWG1iVGV4dEl0ZW0qICwKICAgIGludAoK KTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWHdjVGV4dEl0ZW0qICwKICAgIGlu dAoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJh d2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBj b25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYd2NEcmF3U3RyaW5nKAoKICAg IERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGlu dCAsCiAgICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIHZv aWQgWG1iRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg IFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciog LAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3Bs YXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAg ICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIFhJTSBYT3Bl bklNKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAg Y2hhciogLAogICAgY2hhcioKCik7CgpleHRlcm4gaW50IFhDbG9zZUlNKAoKICAgIFhJTQoKKTsK CmV4dGVybiBjaGFyICpYR2V0SU1WYWx1ZXMoCgogICAgWElNICwgLi4uCgopOwoKZXh0ZXJuIERp c3BsYXkgKlhEaXNwbGF5T2ZJTSgKCiAgICBYSU0KCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9m SU0oCgogICAgWElNCgopOwoKZXh0ZXJuIFhJQyBYQ3JlYXRlSUMoCgogICAgWElNICwgLi4uCgop OwoKZXh0ZXJuIHZvaWQgWERlc3Ryb3lJQygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYU2V0 SUNGb2N1cygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYVW5zZXRJQ0ZvY3VzKAoKICAgIFhJ QwoKKTsKCmV4dGVybiB3Y2hhcl90ICpYd2NSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBj aGFyICpYbWJSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMo CgogICAgWElDICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJQ1ZhbHVlcygKCiAgICBYSUMg LCAuLi4KCik7CgpleHRlcm4gWElNIFhJTU9mSUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGludCBY RmlsdGVyRXZlbnQoCgogICAgWEV2ZW50KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFht Ykxvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgY2hh ciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHdj TG9va3VwU3RyaW5nKAoKICAgIFhJQyAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KiAsCiAgICB3Y2hh cl90KiAsCiAgICBpbnQgLAogICAgS2V5U3ltKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIFhWYU5l c3RlZExpc3QgWFZhQ3JlYXRlTmVzdGVkTGlzdCgKCiAgICBpbnQgLCAuLi4KCik7CgoKCmV4dGVy biBpbnQgWFJlZ2lzdGVySU1JbnN0YW50aWF0ZUNhbGxiYWNrKAoKICAgIERpc3BsYXkqICwKICAg IHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAgY2hhciogLAogICAgY2hhciogLAogICAg WElEUHJvYyAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVybiBpbnQgWFVucmVnaXN0ZXJJTUluc3Rh bnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSogLAogICAgc3RydWN0IF9Ycm1IYXNoQnVja2V0 UmVjKiAsCiAgICBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBYSURQcm9jICwKICAgIFhQb2ludGVy CgopOwoKdHlwZWRlZiB2b2lkICgqWENvbm5lY3Rpb25XYXRjaFByb2MpKAoKICAgIERpc3BsYXkq ICwKICAgIFhQb2ludGVyICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFBvaW50ZXIqCgopOwoK CmV4dGVybiBpbnQgWEludGVybmFsQ29ubmVjdGlvbk51bWJlcnMoCgogICAgRGlzcGxheSogLAog ICAgaW50KiogLAogICAgaW50KgoKKTsKCmV4dGVybiB2b2lkIFhQcm9jZXNzSW50ZXJuYWxDb25u ZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZENvbm5l Y3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KiAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYyAsCiAg ICBYUG9pbnRlcgoKKTsKCmV4dGVybiB2b2lkIFhSZW1vdmVDb25uZWN0aW9uV2F0Y2goCgogICAg RGlzcGxheSogLAogICAgWENvbm5lY3Rpb25XYXRjaFByb2MgLAogICAgWFBvaW50ZXIKCik7Cgpl eHRlcm4gdm9pZCBYU2V0QXV0aG9yaXphdGlvbigKCiAgICBjaGFyICogLAogICAgaW50ICwKICAg IGNoYXIgKiAsCiAgICBpbnQKCik7CgojIDUgImN1cnZlbG93LmgiIDIKCgoKCgppbnQgYmV6aWVy X2ZpbGxfcG9pbnRzKFhQb2ludCAqIHBvaW50cywgaW50ICogeCwgaW50ICogeSk7CgppbnQgYmV6 aWVyX2hpdF9zZWdtZW50KGludCAqIHgsIGludCAqIHksIGludCBweCwgaW50IHB5KTsKaW50IGJl emllcl9oaXRfbGluZShpbnQgc3gsIGludCBzeSwgaW50IGV4LCBpbnQgZXksIGludCBweCwgaW50 IHB5KTsKCgp2b2lkIGJlemllcl9wb2ludF9hdChkb3VibGUgKngsIGRvdWJsZSAqeSwgZG91Ymxl IHQsCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiByZXN1 bHRfeSk7CnZvaWQgYmV6aWVyX3RhbmdlbnRfYXQoZG91YmxlICp4LCBkb3VibGUgKnksIGRvdWJs ZSB0LAogICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiBy ZXN1bHRfeSk7CgpleHRlcm4gaW50IGJlemllcl9iYXNpc1s0XVs0XTsKCiMgMzQgIi4vY3VydmVv YmplY3QuYyIgMgoKIyAyNCAiY3VydmVtaXNjLmgiIDEKUHlPYmplY3QgKiBjdXJ2ZV9sb2NhbF9j b29yZF9zeXN0ZW0oU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgpQeU9i amVjdCAqIGN1cnZlX2FyY19sZW5ndGhzKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq IGFyZ3MpOwoKUHlPYmplY3QgKiBTS0N1cnZlX05lYXJlc3RQb2ludFB5KFNLQ3VydmVPYmplY3Qg KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLQ3VydmVfUG9pbnRBdFB5KFNL Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKIyAzNSAiLi9jdXJ2ZW9iamVj dC5jIiAyCiMgNTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIHZvaWQKaW5pdF9zZWdtZW50KEN1 cnZlU2VnbWVudCAqIHNlZ21lbnQsIGludCB0eXBlKQp7CiAgICBzZWdtZW50LT50eXBlID0gdHlw ZTsKICAgIHNlZ21lbnQtPmNvbnQgPSAwOwogICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwogICAg c2VnbWVudC0+eDEgPSBzZWdtZW50LT55MSA9IHNlZ21lbnQtPngyID0gc2VnbWVudC0+eTIgPSAw LjA7CiAgICBzZWdtZW50LT54ID0gc2VnbWVudC0+eSA9IDAuMDsKfQoKCgoKCnN0YXRpYyB2b2lk ClNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KFNLQ29vcmQgKiB4LCBTS0Nvb3JkICogeSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGN1cl94LCBkb3VibGUgY3VyX3ksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBub2RlX3gsIGRvdWJsZSBub2RlX3ksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBjb250KQp7CiAgICBzd2l0Y2ggKGNvbnQpCiAgICB7 CiAgICBjYXNlIDI6CiAgICAgICAgKnggPSAyICogbm9kZV94IC0gY3VyX3g7CiAgICAgICAgKnkg PSAyICogbm9kZV95IC0gY3VyX3k7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAxOgogICAgewog ICAgICAgIGRvdWJsZSBkeCA9IGN1cl94IC0gbm9kZV94OwogICAgICAgIGRvdWJsZSBkeSA9IGN1 cl95IC0gbm9kZV95OwogICAgICAgIGRvdWJsZSBsZW5ndGggPSBoeXBvdCgqeCAtIG5vZGVfeCwg KnkgLSBub2RlX3kpOwogICAgICAgIGRvdWJsZSBjdXJfbGVuZ3RoID0gaHlwb3QoZHgsIGR5KTsK ICAgICAgICBpZiAoY3VyX2xlbmd0aCA8IDAuMSkKICAgICAgICAgICAgY3VyX2xlbmd0aCA9IDAu MTsKCiAgICAgICAgKnggPSBub2RlX3ggLSBsZW5ndGggKiBkeCAvIGN1cl9sZW5ndGg7CiAgICAg ICAgKnkgPSBub2RlX3kgLSBsZW5ndGggKiBkeSAvIGN1cl9sZW5ndGg7CiAgICAgICAgYnJlYWs7 CiAgICB9CiAgICBkZWZhdWx0OgogICAgICAgIGJyZWFrOwogICAgfQp9CgoKCgoKCnN0YXRpYyBp bnQgcGF0aHNfYWxsb2NhdGVkID0gMDsKClB5T2JqZWN0ICoKU0tDdXJ2ZV9OZXcoaW50IGxlbmd0 aCkKewogICAgU0tDdXJ2ZU9iamVjdCAqIHNlbGY7CiAgICBpbnQgaTsKCiAgICBzZWxmID0gKChT S0N1cnZlT2JqZWN0ICopIF9QeU9iamVjdF9OZXcoJlNLQ3VydmVUeXBlKSk7CiAgICBpZiAoc2Vs ZiA9PSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgbGVuZ3Ro ID0gKChsZW5ndGgpPjAgPyAoKChsZW5ndGgpKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBz ZWxmLT5sZW4gPSAwOwogICAgc2VsZi0+Y2xvc2VkID0gMDsKICAgIHNlbGYtPnNlZ21lbnRzID0g bWFsbG9jKGxlbmd0aCAqIHNpemVvZihDdXJ2ZVNlZ21lbnQpKTsKICAgIGlmICghc2VsZi0+c2Vn bWVudHMpCiAgICB7CiAgICAgICAgZnJlZShzZWxmKTsKICAgICAgICByZXR1cm4gUHlFcnJfTm9N ZW1vcnkoKTsKICAgIH0KICAgIHNlbGYtPmFsbG9jYXRlZCA9IGxlbmd0aDsKCiAgICBmb3IgKGkg PSAwOyBpIDwgc2VsZi0+YWxsb2NhdGVkOyBpKyspCiAgICB7CiAgICAgICAgaW5pdF9zZWdtZW50 KHNlbGYtPnNlZ21lbnRzICsgaSwgMik7CiAgICB9CgogICAgcGF0aHNfYWxsb2NhdGVkKys7Cgog ICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cn0KCgoKCgpzdGF0aWMgaW50CmNoZWNrX2luZGV4 KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKiBmdW5jbmFtZSkK ewogICAgaWYgKGluZGV4IDwgMCkKICAgICAgICBpbmRleCA9IGluZGV4ICsgc2VsZi0+bGVuOwoK ICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIGNo YXIgbWVzc2FnZVsxMDAwXTsKICAgICAgICBzcHJpbnRmKG1lc3NhZ2UsICIlczogaW5kZXggb3V0 IG9mIHJhbmdlIiwgZnVuY25hbWUpOwogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRl eEVycm9yLCBtZXNzYWdlKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgcmV0dXJuIGlu ZGV4Owp9CiMgMTY5ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyB2b2lkCmN1cnZlX2NoZWNrX3N0 YXRlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgd2FybiwgY29uc3QgY2hhciAqIGZ1bmNuYW1l KQp7Cn0KIyAxODEgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIGludApjdXJ2ZV9yZWFsbG9jKFNL Q3VydmVPYmplY3QgKiBzZWxmLCBpbnQgbmV3X2xlbikKewogICAgbmV3X2xlbiA9ICgobmV3X2xl bik+MCA/ICgoKG5ld19sZW4pKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBpZiAobmV3X2xl biAhPSBzZWxmLT5hbGxvY2F0ZWQpCiAgICB7CiAgICAgICAgQ3VydmVTZWdtZW50ICogbmV3X3Nl Z21lbnRzOwogICAgICAgIG5ld19zZWdtZW50cyA9IHJlYWxsb2Moc2VsZi0+c2VnbWVudHMsIG5l d19sZW4gKiBzaXplb2YoQ3VydmVTZWdtZW50KSk7CiAgICAgICAgaWYgKCFuZXdfc2VnbWVudHMp CiAgICAgICAgewogICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICByZXR1 cm4gMDsKICAgICAgICB9CiAgICAgICAgc2VsZi0+c2VnbWVudHMgPSBuZXdfc2VnbWVudHM7CiAg ICAgICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2xlbjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoK CgoKCgpzdGF0aWMgaW50CmN1cnZlX2dyb3coU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGludCBncm93 KQp7CiAgICByZXR1cm4gY3VydmVfcmVhbGxvYyhzZWxmLCBzZWxmLT5sZW4gKyBncm93KTsKfQoK CgoKCgpzdGF0aWMgdm9pZApjdXJ2ZV9kZWFsbG9jKFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAg ICBmcmVlKHNlbGYtPnNlZ21lbnRzKTsKICAgIGZyZWUoc2VsZik7CiAgICBwYXRoc19hbGxvY2F0 ZWQtLTsKfQoKc3RhdGljIGludApjdXJ2ZV9jb21wYXJlKFNLQ3VydmVPYmplY3QgKiB2LCBTS0N1 cnZlT2JqZWN0ICogdykKewoKCgogICAgaWYgKHYgPT0gdykKICAgICAgICByZXR1cm4gMDsKCiAg ICByZXR1cm4gdiA8IHcgPyAtMSA6ICsxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9yZXBy KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBjaGFyIGJ1ZlsxMDBdOwogICAgc3ByaW50Zihi dWYsICI8U0tDdXJ2ZU9iamVjdCBhdCAlbGQgd2l0aCAlZCBub2Rlcz4iLCAobG9uZylzZWxmLAog ICAgICAgICAgICBzZWxmLT5sZW4pOwogICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVm KTsKfQojIDI1OCAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kdXBs aWNhdGUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgU0tDdXJ2 ZU9iamVjdCAqIGNvcHk7CiAgICBpbnQgaTsKCiAgICBjb3B5ID0gKFNLQ3VydmVPYmplY3QqKVNL Q3VydmVfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWNvcHkpCiAgICAgICAgcmV0dXJuICgodm9p ZCAqKTApOwoKICAgIGNvcHktPmxlbiA9IHNlbGYtPmxlbjsKICAgIGNvcHktPmNsb3NlZCA9IHNl bGYtPmNsb3NlZDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICAgICAg Y29weS0+c2VnbWVudHNbaV0gPSBzZWxmLT5zZWdtZW50c1tpXTsKCiAgICByZXR1cm4gKFB5T2Jq ZWN0Kiljb3B5Owp9CgoKCgoKCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlKFNLQ3VydmVP YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGlkeDsKCiAgICBpZiAoIVB5 QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICop MCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVuOwoKICAg IGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlFcnJfU2V0 U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJjdXJ2ZV9u b2RlOiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAg ICB9CgogICAgcmV0dXJuIFNLUG9pbnRfRnJvbVhZKHNlbGYtPnNlZ21lbnRzW2lkeF0ueCwgc2Vs Zi0+c2VnbWVudHNbaWR4XS55KTsKfQoKCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfbm9k ZV9saXN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGks IGxlbmd0aDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9iamVjdCAqIGxpc3Qs ICpwb2ludDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIpKQogICAgICAgIHJl dHVybiAoKHZvaWQgKikwKTsKCiAgICBsZW5ndGggPSBzZWxmLT5sZW47CiAgICBpZiAoc2VsZi0+ Y2xvc2VkKQogICAgICAgIGxlbmd0aCAtPSAxOwoKICAgIGxpc3QgPSBQeUxpc3RfTmV3KGxlbmd0 aCk7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlZ21l bnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgc2Vn bWVudCsrKQogICAgewogICAgICAgIHBvaW50ID0gU0tQb2ludF9Gcm9tWFkoc2VnbWVudC0+eCwg c2VnbWVudC0+eSk7CiAgICAgICAgaWYgKCFwb2ludCkKICAgICAgICB7CiAgICAgICAgICAgIGlm ICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAoKigoUHlPYmplY3QgKikobGlzdCkp LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKGxpc3QpKSk7 CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgICAgUHlMaXN0 X1NldEl0ZW0obGlzdCwgaSwgcG9pbnQpOwogICAgfQoKICAgIHJldHVybiBsaXN0Owp9CiMgMzUw ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX2NvbnRpbnVpdHkoU0tD dXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50IGlkeDsKCiAgICBp ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2 b2lkICopMCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVu OwoKICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlF cnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJj dXJ2ZV9jb250aW51aXR5OiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2 b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRz W2lkeF0uY29udCk7Cn0KIyAzNzkgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoK Y3VydmVfc2VnbWVudF90eXBlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp CnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmlk eCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmIChpZHggPCAwKQogICAgICAg IGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+ bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAg ICAgICAgICAgICAgICAgICAgICAiY3VydmVfc2VnbWVudF90eXBlOiBpbmRleCBvdXQgb2YgcmFu Z2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50 X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRzW2lkeF0udHlwZSk7Cn0KCgoKCgpzdGF0aWMgUHlPYmpl Y3QgKgpjdXJ2ZV9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp CnsKICAgIGludCBpZHg7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3Qg KiByZXN1bHQsICpwMSwgKnAyLCAqcDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg ImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaWR4ID0gY2hlY2tf aW5kZXgoc2VsZiwgaWR4LCAicGF0aC5TZWdtZW50Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAg ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzICsgaWR4 OwogICAgcCA9IFNLUG9pbnRfRnJvbVhZKHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAgaWYg KHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgIHsKICAgICAgICBwMSA9IFNLUG9pbnRfRnJvbVhZKHNl Z21lbnQtPngxLCBzZWdtZW50LT55MSk7CiAgICAgICAgcDIgPSBTS1BvaW50X0Zyb21YWShzZWdt ZW50LT54Miwgc2VnbWVudC0+eTIpOwogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImko T08pT2kiLCBzZWdtZW50LT50eXBlLCBwMSwgcDIsIHAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWdtZW50LT5jb250KTsKICAgICAgICBpZiAoKHAxKSA9PSAoKHZvaWQgKikwKSkg OyBlbHNlIGlmICgtLShwMSktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICop KHAxKSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocDEp KSk7CiAgICAgICAgaWYgKChwMikgPT0gKCh2b2lkICopMCkpIDsgZWxzZSBpZiAoLS0ocDIpLT5v Yl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShwMikpLT5vYl90eXBlLT50cF9k ZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHAyKSkpOwogICAgfQogICAgZWxzZQog ICAgewogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImkoKU9pIiwgc2VnbWVudC0+dHlw ZSwgcCwgc2VnbWVudC0+Y29udCk7CiAgICB9CiAgICBpZiAoKHApID09ICgodm9pZCAqKTApKSA7 IGVsc2UgaWYgKC0tKHApLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShw KSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocCkpKTsK CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2Nv bnRpbnVpdHkoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50 IGlkeCwgY29udDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJmlkeCwg JmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoaWR4IDwgMCkKICAg ICAgICBpZHggPSBpZHggKyBzZWxmLT5sZW47CgogICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHNl bGYtPmxlbikKICAgIHsKICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwK ICAgICAgICAgICAgICAgICAgICAgICAgImN1cnZlX3NldF9jb250aW51aXR5OiBpbmRleCBvdXQg b2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgaWYgKCEo KGNvbnQpID49IDAgJiYgKGNvbnQpIDw9IDIpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu ZyhQeUV4Y19WYWx1ZUVycm9yLCAiY3VydmVfc2V0X2NvbnRpbnVpdHk6ICIKICAgICAgICAgICAg ICAgICAgICAgICAgImNvbnQgbXVzdCBiZSBvbmUgb2YgQ29udEFuZ2xlLCBDb250U21vb3RoICIK ICAgICAgICAgICAgICAgICAgICAgICAgIm9yIENvbnRTeW1tZXRyaWNhbCIpOwogICAgICAgIHJl dHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uY29udCA9IGNv bnQ7CiAgICBpZiAoc2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gMCkKICAg ICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9IGNvbnQ7CiAgICAg ICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgICAgIHNlbGYtPnNlZ21l bnRzWzBdLmNvbnQgPSBjb250OwogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KIyA0OTAgIi4vY3VydmVv YmplY3QuYyIKaW50ClNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwg Q3VydmVTZWdtZW50ICogc2VnbWVudCkKewogICAgaWYgKCFjdXJ2ZV9ncm93KHNlbGYsIDEpKQog ICAgICAgIHJldHVybiAwOwoKICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbl0gPSAqc2VnbWVu dDsKICAgIHNlbGYtPmxlbiArPSAxOwoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9f RlVOQ1RJT05fXyk7CgogICAgcmV0dXJuIDE7Cn0KCmludApTS0N1cnZlX0FwcGVuZExpbmUoU0tD dXJ2ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwgaW50IGNvbnRpbnVpdHkpCnsK ICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIHNlZ21lbnQudHlwZSA9IDI7CiAgICBzZWdt ZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2VnbWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdt ZW50LnggPSB4OwogICAgc2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRT ZWdtZW50KHNlbGYsICZzZWdtZW50KTsKfQoKaW50ClNLQ3VydmVfQXBwZW5kQmV6aWVyKFNLQ3Vy dmVPYmplY3QgKiBzZWxmLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwKICAgICAgICAgICAgICAgICAg ICAgZG91YmxlIHgyLCBkb3VibGUgeTIsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAg ICAgICAgICAgaW50IGNvbnRpbnVpdHkpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAg IHNlZ21lbnQudHlwZSA9IDE7CiAgICBzZWdtZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2Vn bWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdtZW50LngxID0geDE7IHNlZ21lbnQueTEgPSB5MTsK ICAgIHNlZ21lbnQueDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwogICAgc2VnbWVudC54ID0geDsg c2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZz ZWdtZW50KTsKfQoKCgoKc3RhdGljIFB5T2JqZWN0ICogc2V0X25vZGVzX2FuZF9zZWdtZW50c19z dHJpbmcgPSAoKHZvaWQgKikwKTsKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfY3JlYXRlX2Z1bGxf dW5kbyhTS0N1cnZlT2JqZWN0ICogc2VsZikKewogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21lbnRz OwogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50czsKCiAg ICBzZWdtZW50cyA9IG1hbGxvYyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoQ3VydmVTZWdtZW50 KSk7CiAgICBpZiAoIXNlZ21lbnRzKQogICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwoK ICAgIG1lbWNweShzZWdtZW50cywgc2VsZi0+c2VnbWVudHMsIHNlbGYtPmFsbG9jYXRlZCAqIHNp emVvZihDdXJ2ZVNlZ21lbnQpKTsKCiAgICB1bmRvX3NlZ21lbnRzID0gUHlDT2JqZWN0X0Zyb21W b2lkUHRyKHNlZ21lbnRzLCBmcmVlKTsKICAgIGlmICghdW5kb19zZWdtZW50cykKICAgIHsKICAg ICAgICBmcmVlKHNlZ21lbnRzKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9Cgog ICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT09paWkiLCBzZXRfbm9kZXNfYW5kX3NlZ21lbnRz X3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kb19zZWdtZW50cywgc2VsZi0+ bGVuLCBzZWxmLT5hbGxvY2F0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmNs b3NlZCk7CiAgICBpZiAoLS0odW5kb19zZWdtZW50cyktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2Ug KCooKFB5T2JqZWN0ICopKHVuZG9fc2VnbWVudHMpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5 T2JqZWN0ICopKChQeU9iamVjdCAqKSh1bmRvX3NlZ21lbnRzKSkpOwoKICAgIHJldHVybiByZXN1 bHQ7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9fc2V0X25vZGVzX2FuZF9zZWdtZW50cyhT S0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBpbnQgYWxsb2NhdGVk ID0gLTEsIGxlbmd0aCA9IC0xLCBjbG9zZWQgPSAwOwogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21l bnRzID0gKCh2b2lkICopMCk7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAgICBpZiAoIVB5QXJn X1BhcnNlVHVwbGUoYXJncywgIk8haWlpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlD T2JqZWN0X1R5cGUsICZ1bmRvX3NlZ21lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICZs ZW5ndGgsICZhbGxvY2F0ZWQsICZjbG9zZWQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK CiAgICByZXN1bHQgPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYgKCFyZXN1 bHQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghY3VydmVfcmVhbGxvYyhz ZWxmLCBhbGxvY2F0ZWQpKQogICAgewogICAgICAgIGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQg IT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxv YykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgcmV0dXJuICgo dm9pZCAqKTApOwogICAgfQoKICAgIG1lbWNweShzZWxmLT5zZWdtZW50cywgUHlDT2JqZWN0X0Fz Vm9pZFB0cih1bmRvX3NlZ21lbnRzKSwKICAgICAgICAgICBhbGxvY2F0ZWQgKiBzaXplb2YoQ3Vy dmVTZWdtZW50KSk7CiAgICBzZWxmLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CiAgICBzZWxmLT5s ZW4gPSBsZW5ndGg7CiAgICBzZWxmLT5jbG9zZWQgPSBjbG9zZWQ7CgogICAgY3VydmVfY2hlY2tf c3RhdGUoc2VsZiwgMSwgX19GVU5DVElPTl9fKTsKCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoK c3RhdGljIFB5T2JqZWN0ICoKY3VydmVfaGl0X3BvaW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ eU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBpbnQgaSwgcmVz dWx0ID0gMDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CgogICAgaWYgKCFQeUFyZ19QYXJz ZVR1cGxlKGFyZ3MsICJPISIsICZTS1JlY3RUeXBlLCAmcmVjdCkpCiAgICAgICAgcmV0dXJuICgo dm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7 IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIGlmIChTS1JlY3Rf Q29udGFpbnNYWShyZWN0LCBzZWdtZW50LT54LCBzZWdtZW50LT55KSkKICAgICAgICAgICAgcmVz dWx0ID0gMTsKICAgIH0KCiAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocmVzdWx0KTsKfQojIDYz NiAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9jb29yZF9yZWN0KFNL Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAq IHJlY3QgPSAoKHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9i amVjdCAqIHRyYWZvID0gKCh2b2lkICopMCk7CiAgICBpbnQgaTsKCiAgICBpZiAoIVB5QXJnX1Bh cnNlVHVwbGUoYXJncywgInxPISIsICZTS1RyYWZvVHlwZSwgJnRyYWZvKSkKICAgICAgICByZXR1 cm4gKCh2b2lkICopMCk7CgogICAgaWYgKHNlbGYtPmxlbiA9PSAwKQogICAgewogICAgICAgICgo U0tSZWN0X0VtcHR5UmVjdCktPm9iX3JlZmNudCsrKTsKICAgICAgICByZXR1cm4gKFB5T2JqZWN0 KilTS1JlY3RfRW1wdHlSZWN0OwogICAgfQoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsK ICAgIGlmICghdHJhZm8pCiAgICB7CiAgICAgICAgcmVjdCA9IChTS1JlY3RPYmplY3QqKVNLUmVj dF9Gcm9tRG91YmxlKHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAg ICAgIGlmICghcmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNl Z21lbnQgKz0gMTsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21l bnQrKykKICAgICAgICB7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCBzZWdtZW50LT54 LCBzZWdtZW50LT55KTsKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngxLCBz ZWdtZW50LT55MSk7CiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgc2VnbWVudC0+ eDIsIHNlZ21lbnQtPnkyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UK ICAgIHsKICAgICAgICBTS0Nvb3JkIHgsIHk7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko dHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksICZ4LCAmeSk7CiAgICAgICAgcmVjdCA9IChT S1JlY3RPYmplY3QqKVNLUmVjdF9Gcm9tRG91YmxlKHgsIHksIHgsIHkpOwogICAgICAgIGlmICgh cmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgICAgICBzZWdtZW50ICs9 IDE7CiAgICAgICAgZm9yIChpID0gMTsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAg ICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54 LCBzZWdtZW50LT55LCAmeCwgJnkpOwogICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgeCwg eSk7CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngxLCBzZWdt ZW50LT55MSwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5 KTsKICAgICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy LCBzZWdtZW50LT55MiwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0 LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoUHlPYmpl Y3QqKXJlY3Q7Cn0KCgoKCgoKCgoKCnN0YXRpYyB2b2lkCmFkZF9iZXppZXJfcmVjdChTS1JlY3RP YmplY3QgKiByZWN0LAogICAgICAgICAgICAgICAgZG91YmxlIHAxeCwgZG91YmxlIHAxeSwgZG91 YmxlIHAyeCwgZG91YmxlIHAyeSwKICAgICAgICAgICAgICAgIGRvdWJsZSBwM3gsIGRvdWJsZSBw M3ksIGRvdWJsZSBwNHgsIGRvdWJsZSBwNHkpCnsKICAgIGRvdWJsZSBkaXNjciwgZGVub20sIHA7 CgogICAgZGlzY3IgPSAocDF4KnA0eCAtIHAxeCpwM3ggLSBwMngqcDN4IC0gcDJ4KnA0eCArIHAy eCpwMnggKyBwM3gqcDN4KTsKICAgIGlmIChkaXNjciA+PSAwKQogICAgewogICAgICAgIGRvdWJs ZSBwMTMgPSAzICogcDF4LCBwMjMgPSAzICogcDJ4LCBwMzMgPSAzICogcDN4OwogICAgICAgIGRv dWJsZSBjMSA9IHAyMyAtIHAxeCAtIHAzMyArIHA0eDsKICAgICAgICBkb3VibGUgYzIgPSBwMTMg LSAyICogcDIzICsgcDMzOwogICAgICAgIGRvdWJsZSBjMyA9IHAyMyAtIHAxMzsKICAgICAgICBk b3VibGUgdDsKCiAgICAgICAgZGVub20gPSAocDF4IC0gMyAqIHAyeCArIDMgKiBwM3ggLSBwNHgp OwogICAgICAgIGlmIChkZW5vbSkKICAgICAgICB7CiAgICAgICAgICAgIGRpc2NyID0gc3FydChk aXNjcik7CiAgICAgICAgICAgIHAgPSBwMXggLSAyICogcDJ4ICsgcDN4OwoKICAgICAgICAgICAg dCA9IChwICsgZGlzY3IpIC8gZGVub207CiAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0IDwgMSkK ICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYKHJlY3QsICgoYzEgKiB0ICsgYzIpICogdCArIGMz KSAqIHQgKyBwMXgpOwogICAgICAgICAgICB0ID0gKHAgLSBkaXNjcikgLyBkZW5vbTsKICAgICAg ICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFgocmVj dCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICogdCArIHAxeCk7CiAgICAgICAgfQogICAgICAg IGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGRlbm9tID0gcDF4IC0gMiAqIHAyeCArIHAzeDsK ICAgICAgICAgICAgaWYgKGRlbm9tKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ID0g MC41ICogKHAxeCAtIHAyeCkgLyBkZW5vbTsKICAgICAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0 IDwgMSkKICAgICAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWChyZWN0LCAoKGMxICogdCArIGMy KSAqIHQgKyBjMykgKiB0ICsgcDF4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAg ICBkaXNjciA9IChwMXkqcDR5IC0gcDF5KnAzeSAtIHAyeSpwM3kgLSBwMnkqcDR5ICsgcDJ5KnAy eSArIHAzeSpwM3kpOwogICAgaWYgKGRpc2NyID49IDApCiAgICB7CiAgICAgICAgZG91YmxlIHAx MyA9IDMgKiBwMXksIHAyMyA9IDMgKiBwMnksIHAzMyA9IDMgKiBwM3k7CiAgICAgICAgZG91Ymxl IGMxID0gcDIzIC0gcDF5IC0gcDMzICsgcDR5OwogICAgICAgIGRvdWJsZSBjMiA9IHAxMyAtIDIg KiBwMjMgKyBwMzM7CiAgICAgICAgZG91YmxlIGMzID0gcDIzIC0gcDEzOwogICAgICAgIGRvdWJs ZSB0OwoKICAgICAgICBkZW5vbSA9IChwMXkgLSAzICogcDJ5ICsgMyAqIHAzeSAtIHA0eSk7CiAg ICAgICAgaWYgKGRlbm9tKQogICAgICAgIHsKICAgICAgICAgICAgZGlzY3IgPSBzcXJ0KGRpc2Ny KTsKICAgICAgICAgICAgcCA9IHAxeSAtIDIgKiBwMnkgKyBwM3k7CgogICAgICAgICAgICB0ID0g KHAgKyBkaXNjcikgLyBkZW5vbTsKICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAg ICAgICAgICAgICAgU0tSZWN0X0FkZFkocmVjdCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICog dCArIHAxeSk7CiAgICAgICAgICAgIHQgPSAocCAtIGRpc2NyKSAvIGRlbm9tOwogICAgICAgICAg ICBpZiAoMCA8IHQgJiYgdCA8IDEpCiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWShyZWN0LCAo KGMxICogdCArIGMyKSAqIHQgKyBjMykgKiB0ICsgcDF5KTsKICAgICAgICB9CiAgICAgICAgZWxz ZQogICAgICAgIHsKICAgICAgICAgICAgZGVub20gPSBwMXkgLSAyICogcDJ5ICsgcDN5OwogICAg ICAgICAgICBpZiAoZGVub20pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHQgPSAwLjUg KiAocDF5IC0gcDJ5KSAvIGRlbm9tOwogICAgICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAx KQogICAgICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRZKHJlY3QsICgoYzEgKiB0ICsgYzIpICog dCArIGMzKSAqIHQgKyBwMXkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKfQoKCnN0 YXRpYyBQeU9iamVjdCAqCmN1cnZlX2FjY3VyYXRlX3JlY3QoU0tDdXJ2ZU9iamVjdCAqIHNlbGYs IFB5T2JqZWN0ICogYXJncykKewogICAgU0tSZWN0T2JqZWN0ICogcmVjdCA9ICgodm9pZCAqKTAp OwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogdHJhZm8gPSAoKHZv aWQgKikwKTsKICAgIGludCBpOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8h IiwgJlNLVHJhZm9UeXBlLCAmdHJhZm8pKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAg ICBpZiAoc2VsZi0+bGVuID09IDApCiAgICB7CiAgICAgICAgKChTS1JlY3RfRW1wdHlSZWN0KS0+ b2JfcmVmY250KyspOwogICAgICAgIHJldHVybiAoUHlPYmplY3QqKVNLUmVjdF9FbXB0eVJlY3Q7 OwogICAgfQoKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBpZiAoIXRyYWZvKQog ICAgewogICAgICAgIHJlY3QgPSAoU0tSZWN0T2JqZWN0KilTS1JlY3RfRnJvbURvdWJsZShzZWdt ZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55KTsKICAgICAgICBpZiAoIXJlY3QpCiAg ICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgc2VnbWVudCArPSAxOwogICAg ICAgIGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgICAgIHsK ICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwog ICAgICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBhZGRfYmV6aWVyX3JlY3QocmVjdCwgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0u eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54MSwgc2VnbWVudC0+ eTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+eDIsIHNlZ21lbnQt PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQt PnkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAg IFNLQ29vcmQgeCwgeTsKCiAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVu dC0+eCwgc2VnbWVudC0+eSwgJngsICZ5KTsKICAgICAgICByZWN0ID0gKFNLUmVjdE9iamVjdCop U0tSZWN0X0Zyb21Eb3VibGUoeCwgeSwgeCwgeSk7CiAgICAgICAgaWYgKCFyZWN0KQogICAgICAg ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgICAgIHNlZ21lbnQgKz0gMTsKICAgICAgICBm b3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgICAgICB7CiAgICAg ICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnks ICZ4LCAmeSk7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5KTsKICAgICAgICAg ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg U0tDb29yZCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAzeCwgcDN5OwogICAgICAgICAgICAgICAgU0tU cmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0ueSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAxeCwgJnAxeSk7CiAgICAgICAgICAg ICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwMngsICZwMnkpOwogICAgICAg ICAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDIsIHNlZ21lbnQt PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcDN4LCAmcDN5KTsKICAg ICAgICAgICAgICAgIGFkZF9iZXppZXJfcmVjdChyZWN0LCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAz eCwgcDN5LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAo UHlPYmplY3QqKXJlY3Q7Cn0KCgoKCgoKCmludApTS0N1cnZlX1RyYW5zZm9ybShTS0N1cnZlT2Jq ZWN0ICogc2VsZiwgUHlPYmplY3QgKiB0cmFmbykKewogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21l bnQgKiBzZWdtZW50OwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9 IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIFNLVHJhZm9f VHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmc2VnbWVudC0+eCwgJnNlZ21lbnQtPnkpOwogICAgICAgIGlmIChzZWdt ZW50LT50eXBlID09IDEpCiAgICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ KHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNlZ21lbnQtPngxLCAmc2VnbWVudC0+eTEpOwogICAgICAgICAgICBTS1RyYWZv X1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54Miwgc2VnbWVudC0+eTIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnNlZ21lbnQtPngyLCAmc2VnbWVudC0+eTIpOwogICAgICAg IH0KICAgIH0KICAgIHJldHVybiAwOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBseV90 cmFmbyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVj dCAqIHRyYWZvOwogICAgUHlPYmplY3QgKiB1bmRvOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBs ZShhcmdzLCAiTyEiLCAmU0tUcmFmb1R5cGUsICZ0cmFmbykpCiAgICAgICAgcmV0dXJuICgodm9p ZCAqKTApOwoKICAgIHVuZG8gPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYg KCF1bmRvKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBTS0N1cnZlX1RyYW5zZm9y bShzZWxmLCB0cmFmbyk7CgogICAgcmV0dXJuIHVuZG87Cn0KCnN0YXRpYyBQeU9iamVjdCAqCmN1 cnZlX2FwcGx5X3RyYW5zbGF0aW9uKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy Z3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdt ZW50OwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGQiLCAmeCwgJnkpKQogICAg ewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAg ICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iLCAmc2VxdWVuY2UpKQogICAgICAg ICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHko c2VxdWVuY2UsICZ4LCAmeSkpCiAgICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmco UHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgaXMgbmVpdGhl ciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJzIik7CiAgICAgICAgICAgIHJldHVy biAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdt ZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAg ewogICAgICAgIHNlZ21lbnQtPnggKz0geDsKICAgICAgICBzZWdtZW50LT55ICs9IHk7CiAgICAg ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIHNlZ21lbnQt PngxICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkxICs9IHk7CiAgICAgICAgICAgIHNlZ21l bnQtPngyICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkyICs9IHk7CiAgICAgICAgfQogICAg fQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZf UHlfTm9uZVN0cnVjdCk7Cn0KCgoKCgoKCnN0YXRpYyBQeU9iamVjdCAqIHVuZG9fY2xvc2Vfc3Ry aW5nID0gKCh2b2lkICopMCk7CnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX191bmRvX2Nsb3NlKFNL Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBjbG9zZWQgPSAw LCBpdGVtcDsKICAgIGRvdWJsZSBsYXN0X3gsIGxhc3RfeSwgZHRlbXA7CiAgICBpbnQgZmlyc3Rf Y29udCwgbGFzdF9jb250OwogICAgaW50IGxhc3RpZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlm ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpZGQiLCAmY2xvc2VkLCAmZmlyc3RfY29udCwg Jmxhc3RfY29udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdF94LCAmbGFzdF95KSkK ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaXRlbXAgPSBzZWxmLT5zZWdtZW50c1sw XS5jb250OyBzZWxmLT5zZWdtZW50c1swXS5jb250ID0gZmlyc3RfY29udDsgZmlyc3RfY29udCA9 IGl0ZW1wOwogICAgZHRlbXAgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS54OyBzZWxmLT5zZWdt ZW50c1tsYXN0aWR4XS54ID0gbGFzdF94OyBsYXN0X3ggPSBkdGVtcDsKICAgIGR0ZW1wID0gc2Vs Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTsgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSA9IGxhc3Rf eTsgbGFzdF95ID0gZHRlbXA7CiAgICBpdGVtcCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNv bnQ7IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSBsYXN0X2NvbnQ7IGxhc3RfY29udCA9 IGl0ZW1wOwoKICAgIHNlbGYtPmNsb3NlZCA9IGNsb3NlZDsKCiAgICBpZiAoc2VsZi0+c2VnbWVu dHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAgICAgIHNlbGYtPnNlZ21lbnRzW2xhc3Rp ZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnggLSBsYXN0X3g7CiAgICAgICAgc2Vs Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxh c3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18p OwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3NlX3N0cmluZywg IXNlbGYtPmNsb3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbnQsIGxhc3Rf Y29udCwgbGFzdF94LCBsYXN0X3kpOwp9CgoKCmludApTS0N1cnZlX0Nsb3NlUGF0aChTS0N1cnZl T2JqZWN0ICogc2VsZikKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGxhc3Rp ZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlmIChsYXN0aWR4IDw9IDApCiAgICB7CiAgICAgICAg cmV0dXJuIDA7CiAgICB9CgogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueDsK ICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBzZWxmLT5zZWdtZW50 c1tsYXN0aWR4XS54ID0gc2VsZi0+c2VnbWVudHNbMF0ueDsKICAgIHNlbGYtPnNlZ21lbnRzW2xh c3RpZHhdLnkgPSBzZWxmLT5zZWdtZW50c1swXS55OwogICAgc2VsZi0+c2VnbWVudHNbMF0uY29u dCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSAwOwogICAgc2VsZi0+Y2xvc2VkID0g MTsKCiAgICBpZiAoc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAg ICAgIHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhd LnggLSBsYXN0X3g7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+ c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxhc3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0 ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18pOwogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBQeU9iamVj dCAqCmN1cnZlX2Nsb3NlX2NvbnRvdXIoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog YXJncykKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGZpcnN0X2NvbnQsIGxh c3RfY29udDsKICAgIGludCBsYXN0aWR4ID0gc2VsZi0+bGVuIC0gMTsKCiAgICBpZiAobGFzdGlk eCA8PSAwKQogICAgewogICAgICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7 CiAgICAgICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwogICAgfQoKICAgIGZpcnN0X2NvbnQg PSBzZWxmLT5zZWdtZW50c1swXS5jb250OwogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFz dGlkeF0ueDsKICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBsYXN0 X2NvbnQgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS5jb250OwoKICAgIFNLQ3VydmVfQ2xvc2VQ YXRoKHNlbGYpOwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3Nl X3N0cmluZywgMCwgZmlyc3RfY29udCwgbGFzdF9jb250LAogICAgICAgICAgICAgICAgICAgICAg ICAgbGFzdF94LCBsYXN0X3kpOwp9CgoKCgoKCnN0YXRpYyBpbnQKc2F2ZV9zZWdtZW50KFB5T2Jq ZWN0ICogbGlzdCwgaW50IGksIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIFB5T2JqZWN0 ICogdHVwbGU7CiAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgewogICAgICAgIHR1cGxl ID0gUHlfQnVpbGRWYWx1ZSgiZGRkZGRkaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlZ21lbnQtPngxLCBzZWdtZW50LT55MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VnbWVudC0+eDIsIHNlZ21lbnQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWdtZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdt ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0dXBsZSA9IFB5X0J1aWxk VmFsdWUoImRkaSIsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksIHNlZ21lbnQtPmNvbnQpOwogICAg fQogICAgaWYgKCF0dXBsZSkKICAgIHsKICAgICAgICBpZiAoLS0obGlzdCktPm9iX3JlZmNudCAh PSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKGxpc3QpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYyko KFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShsaXN0KSkpOwogICAgICAgIHJldHVybiAwOwogICAg fQogICAgaWYgKFB5TGlzdF9TZXRJdGVtKGxpc3QsIGksIHR1cGxlKSA9PSAtMSkKICAgIHsKICAg ICAgICBpZiAoLS0odHVwbGUpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq KSh0dXBsZSkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICop KHR1cGxlKSkpOwogICAgICAgIGlmICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAo KigoUHlPYmplY3QgKikobGlzdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKiko KFB5T2JqZWN0ICopKGxpc3QpKSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4g MTsKfQojIDEwODMgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0 X3NhdmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgQ3VydmVT ZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogbGlzdDsKICAgIGludCBpOwoKICAgIGxp c3QgPSBQeUxpc3RfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJu ICgodm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKCiAgICBmb3IgKGkg PSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXNh dmVfc2VnbWVudChsaXN0LCBpLCBzZWdtZW50KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAq KTApOwogICAgfQogICAgcmV0dXJuIGxpc3Q7Cn0KCgpzdGF0aWMgaW50CndyaXRlX3NlZ21lbnQo RklMRSAqIGZpbGUsIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIGludCByZXN1bHQgPSAw OwoKICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICB7CiAgICAgICAgcmVzdWx0ID0gZnBy aW50ZihmaWxlLCAiYmMoJWcsJWcsJWcsJWcsJWcsJWcsJWQpXG4iLAogICAgICAgICAgICAgICAg ICAgICAgICAgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCBzZWdtZW50LT54Miwgc2VnbWVudC0+ eTIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55LCBzZWdt ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXN1bHQgPSBmcHJpbnRm KGZpbGUsICJicyglZywlZywlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50 LT54LCBzZWdtZW50LT55LCBzZWdtZW50LT5jb250KTsKICAgIH0KCiAgICBpZiAocmVzdWx0IDwg MCkKICAgIHsKICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAg ICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3RhdGljIFB5T2JqZWN0ICoKY3Vy dmVfd3JpdGVfdG9fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7 CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwogICAgRklMRSAqIGZpbGUgPSAo KHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBpbnQgaTsKCiAgICBp ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkK ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlm aWxlKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBmb3IgKGkgPSAwOyBpIDwg c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXdyaXRlX3NlZ21l bnQoZmlsZSwgc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0K ICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlf Tm9uZVN0cnVjdCk7Cn0KCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX3N0cmFpZ2h0 KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5 OwogICAgaW50IGNvbnQgPSAwOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGR8 aSIsICZ4LCAmeSwgJmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAg ICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg Ik98aSIsICZzZXF1ZW5jZSwgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7 CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHkoc2VxdWVuY2UsICZ4LCAmeSkpCiAgICAg ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAiZmly c3QgYXJndW1lbnQgaXMgbmVpdGhlciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJz Iik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgogICAg aWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwgeCwgeSwgY29udCkpCiAgICAgICAgcmV0dXJu ICgodm9pZCAqKTApOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAg ICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9h cHBlbmRfY3VydmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAg aW50IGNvbnQgPSAwOwogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQ eVR1cGxlX1NpemUoYXJncykgPiA0KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBs ZShhcmdzLCAiZGRkZGRkfGkiLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ4LCAmeSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICop MCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlPYmplY3QgKnAxLCAqcDIsICpwMzsK ICAgICAgICBpbnQgcmVzdWx0OwoKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg Ik9PT3xpIiwgJnAxLCAmcDIsICZwMywgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lk ICopMCk7CgogICAgICAgIHJlc3VsdCA9IHNrcG9pbnRfZXh0cmFjdF94eShwMSwgJngxLCAmeTEp OwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBza3BvaW50X2V4dHJhY3RfeHkocDIsICZ4Miwg JnkyKTsKICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2twb2ludF9leHRyYWN0X3h5KHAzLCAm eCwgJnkpOwogICAgICAgIGlmICghcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJf U2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRocmVlIHBvaW50cyBleHBlY3RlZCIpOwogICAg ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghU0tD dXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQogICAg ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0 ICoKY3VydmVfYXBwZW5kX3NlZ21lbnQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog YXJncykKewogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwogICAgaW50IGNvbnQgPSAw OwogICAgaW50IHR5cGU7CiAgICBQeU9iamVjdCAqIHAsICpwMSwgKnAyLCAqdHVwbGU7CgogICAg aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT098aSIsICZ0eXBlLCAmdHVwbGUsICZwLCAm Y29udCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghc2twb2ludF9leHRy YWN0X3h5KHAsICZ4LCAmeSkpCiAgICB7CiAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5 cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgInRoaXJkIGFyZ3VtZW50IG11c3QgYmUg YSBwb2ludCBzcGVjIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICAgIGlm ICh0eXBlID09IDIpCiAgICB7CiAgICAgICAgaWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwg eCwgeSwgY29udCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIGVs c2UgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUodHVw bGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAgICAgfHwg IXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAgICAgICAg UHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3BlY3MgIik7 CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAgIGlmICgh U0tDdXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQog ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3Ry dWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3Rh dGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X3N0cmFpZ2h0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ eU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGlkeCwgY29udCA9IDA7 CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZGR8aSIsICZpZHgsICZ4LCAmeSwg JmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJf Q2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfGkiLCAmaWR4 LCAmc2VxdWVuY2UsICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHNlcXVlbmNlLCAmeCwgJnkpKQogICAgICAgIHsK ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgImZpcnN0IGFy Z3VtZW50IGlzIG5laXRoZXIgbnVtYmVyIG5vciBzZXF1ZW5jZSBvZiB0d28gbnVtYmVycyIpOwog ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlkeCA9 IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIlNldExpbmUiKTsKICAgIGlmIChpZHggPCAwKQogICAg ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnR5cGUgPSAy OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS5jb250ID0gY29udDsKICAgIHNlbGYtPnNlZ21lbnRz W2lkeF0ueCA9IHg7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnkgPSB5OwoKICAgIGlmIChzZWxm LT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYgKGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAg ICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYt PnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkgPSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50 c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29udDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAo aWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50 c1swXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAg ICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQgPSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAo KCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVmY250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVT dHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2N1cnZlKFNLQ3VydmVPYmpl Y3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHgsIGNvbnQgPSAwOwogICAg ZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykg PiA1KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWRkZGRkZHxp IiwgJmlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJngxLCAmeTEsICZ4MiwgJnky LCAmeCwgJnksICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQog ICAgZWxzZQogICAgewogICAgICAgIFB5T2JqZWN0ICpwMSwgKnAyLCAqcDM7CiAgICAgICAgaW50 IHJlc3VsdDsKCiAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT09PfGkiLCAm aWR4LCAmcDEsICZwMiwgJnAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udCkp CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgcmVzdWx0ID0gc2twb2lu dF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSk7CiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNr cG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpOwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAm JiBza3BvaW50X2V4dHJhY3RfeHkocDMsICZ4LCAmeSk7CiAgICAgICAgaWYgKCFyZXN1bHQpCiAg ICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAidGhy ZWUgcG9pbnRzIGV4cGVjdGVkIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg ICAgICB9CiAgICB9CgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0QmV6aWVy Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgoKICAgIHNl bGYtPnNlZ21lbnRzW2lkeF0udHlwZSA9IDE7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQg PSBjb250OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsgc2VsZi0+c2VnbWVudHNbaWR4 XS55ID0geTsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNb aWR4XS55MSA9IHkxOwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54MiA9IHgyOyBzZWxmLT5zZWdt ZW50c1tpZHhdLnkyID0geTI7CgogICAgaWYgKHNlbGYtPmNsb3NlZCkKICAgIHsKICAgICAgICBp ZiAoaWR4ID09IDApCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5s ZW4gLSAxXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u eSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQgPSBj b250OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg ICAgICB7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLnggPSB4OwogICAgICAgICAgICBz ZWxmLT5zZWdtZW50c1swXS55ID0geTsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29u dCA9IGNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmpl Y3QgKgpjdXJ2ZV9zZXRfc2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBh cmdzKQp7CiAgICBkb3VibGUgeCwgeSwgeDEsIHkxLCB4MiwgeTI7CiAgICBpbnQgY29udCA9IDA7 CiAgICBpbnQgaWR4LCB0eXBlOwogICAgUHlPYmplY3QgKiBwLCAqcDEsICpwMiwgKnR1cGxlOwoK ICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU9PfGkiLCAmaWR4LCAmdHlwZSwgJnR1 cGxlLCAmcCwgJmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoIXNr cG9pbnRfZXh0cmFjdF94eShwLCAmeCwgJnkpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu ZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlyZCBhcmd1bWVu dCBtdXN0IGJlIGEgcG9pbnQgc3BlYyIpOwogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg IH0KCgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0U2VnbWVudCIpOwogICAg aWYgKGlkeCA8IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPnNlZ21l bnRzW2lkeF0udHlwZSA9IDI7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQgPSBjb250Owog ICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueSA9 IHk7CgogICAgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVw bGUodHVwbGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTAp OwogICAgICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAg ICAgfHwgIXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAg ICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3Bl Y3MgIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAg IHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNbaWR4XS55MSA9IHkx OwogICAgICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDIgPSB4Mjsgc2VsZi0+c2VnbWVudHNbaWR4 XS55MiA9IHkyOwogICAgfQoKICAgIGlmIChzZWxmLT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYg KGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVu IC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkg PSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29u dDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAg ICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1swXS54ID0geDsKICAgICAgICAgICAgc2Vs Zi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQg PSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgaW50CmN1cnZl X3BhcnNlX3N0cmluZ19hcHBlbmQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGNvbnN0IGNoYXIgKiBz dHJpbmcpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIGlmIChzdHJpbmdbMV0gPT0g J2MnKQogICAgewogICAgICAgIGRvdWJsZSB4LCB5LCB4MSwgeTEsIHgyLCB5MjsKICAgICAgICBp bnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMTsKICAgICAgICBpZiAoc3NjYW5mKHN0 cmluZywgImJjJSpbIChdJWxmLCVsZiwlbGYsJWxmLCVsZiwlbGYsJWQiLAogICAgICAgICAgICAg ICAgICAgJngxLCAmeTEsICZ4MiwgJnkyLCAmeCwgJnksICZjb250KSAhPSA3KQogICAgICAgIHsK ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcGFy c2Ugc3RyaW5nIik7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgc2Vn bWVudC5jb250ID0gY29udDsKICAgICAgICBzZWdtZW50LnggPSB4OyBzZWdtZW50LnkgPSB5Owog ICAgICAgIHNlZ21lbnQueDEgPSB4MTsgc2VnbWVudC55MSA9IHkxOwogICAgICAgIHNlZ21lbnQu eDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwoKICAgICAgICBpZiAoIVNLQ3VydmVfQXBwZW5kU2Vn bWVudChzZWxmLCAmc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxz ZSBpZiAoc3RyaW5nWzFdID09ICdzJykKICAgIHsKICAgICAgICBkb3VibGUgeCwgeTsKICAgICAg ICBpbnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMjsKICAgICAgICBpZiAoc3NjYW5m KHN0cmluZywgImJzJSpbIChdJWxmLCVsZiwlZCIsICZ4LCAmeSwgJmNvbnQpICE9IDMpCiAgICAg ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5v dCBwYXJzZSBzdHJpbmciKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAg ICBzZWdtZW50LmNvbnQgPSBjb250OwogICAgICAgIHNlZ21lbnQueCA9IHg7IHNlZ21lbnQueSA9 IHk7CgogICAgICAgIGlmICghU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZzZWdtZW50KSkK ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlFcnJf U2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJp bmcgbXVzdCBiZWdpbiB3aXRoICdiYycgb3IgJ2JzJyIpOwogICAgICAgIHJldHVybiAwOwogICAg fQoKICAgIHJldHVybiAxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBlbmRfZnJvbV9z dHJpbmcoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgY2hhciAq IHN0cmluZyA9ICgodm9pZCAqKTApOwogICAgaW50IGxlbjsKCiAgICBpZiAoIVB5QXJnX1BhcnNl VHVwbGUoYXJncywgInMjIiwgJnN0cmluZywgJmxlbikpCiAgICAgICAgcmV0dXJuICgodm9pZCAq KTApOwoKICAgIGlmIChsZW4gPCA0KQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4 Y19WYWx1ZUVycm9yLCAic3RyaW5nIHRvbyBzaG9ydCIpOwogICAgICAgIHJldHVybiAoKHZvaWQg KikwKTsKICAgIH0KCiAgICBpZiAoIWN1cnZlX3BhcnNlX3N0cmluZ19hcHBlbmQoc2VsZiwgc3Ry aW5nKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgKCgoJl9QeV9Ob25lU3RydWN0 KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGlj IFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX2Zyb21fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwg UHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwog ICAgUHlPYmplY3QgKiByZXR2YWwgPSAoKHZvaWQgKikwKTsKICAgIEZJTEUgKiBmaWxlID0gKCh2 b2lkICopMCk7CiAgICBjaGFyIGJ1Zls1MDBdOwogICAgY2hhciAqIHJlc3VsdDsKCiAgICBpZiAo IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkKICAg ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlmaWxl KTsKCiAgICB3aGlsZSgocmVzdWx0ID0gZmdldHMoYnVmLCBzaXplb2YoYnVmKSAtIDEsIGZpbGUp KSAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgICBpZiAoYnVmWzBdICE9ICdiJyB8fCAoYnVm WzFdICE9ICdjJyAmJiBidWZbMV0gIT0gJ3MnKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg aWYgKCFjdXJ2ZV9wYXJzZV9zdHJpbmdfYXBwZW5kKHNlbGYsIGJ1ZikpCiAgICAgICAgICAgIHJl dHVybiAoKHZvaWQgKikwKTsKICAgIH0KCiAgICBpZiAocmVzdWx0KQogICAgewogICAgICAgIHJl dHZhbCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVmKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAg ICAgICBpZiAoZmVycm9yKGZpbGUpKQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJfU2V0RnJv bUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICByZXR2YWwgPSAoKHZvaWQgKikwKTsK ICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmV0dmFsID0gUHlT dHJpbmdfRnJvbVN0cmluZygiIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXR2YWw7 Cn0KIyAxNTczICIuL2N1cnZlb2JqZWN0LmMiCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ndWVz c19jb250aW51aXR5KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAg IGludCBpOwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudCwgKnByZWQ7CgogICAgc2VnbWVudCA9 IHNlbGYtPnNlZ21lbnRzOwogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdt ZW50KyspCiAgICB7CiAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICBwcmVkID0gc2VnbWVu dCAtIDE7CiAgICAgICAgZWxzZSBpZiAoc2VsZi0+Y2xvc2VkKQogICAgICAgICAgICBwcmVkID0g c2VsZi0+c2VnbWVudHMgKyBzZWxmLT5sZW4gLSAxOwogICAgICAgIGVsc2UgcHJlZCA9ICgodm9p ZCAqKTApOwoKICAgICAgICBpZiAocHJlZCAmJiBwcmVkLT50eXBlID09IDEgJiYgc2VnbWVudC0+ dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGZhYnMocHJlZC0+eDIgKyBzZWdt ZW50LT54MSAtIDIgKiBzZWdtZW50LT54KSA8IDAuMQogICAgICAgICAgICAgICAgJiYgZmFicyhw cmVkLT55MiArIHNlZ21lbnQtPnkxIC0gMipzZWdtZW50LT55KSA8IDAuMSkKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgc2VnbWVudC0+Y29udCA9IDI7CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTS0Nvb3JkIHgsIHk7CiAg ICAgICAgICAgICAgICB4ID0gcHJlZC0+eDI7IHkgPSBwcmVkLT55MjsKICAgICAgICAgICAgICAg IFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgc2VnbWVudC0+eDEsIHNlZ21lbnQt PnkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+ eCwgc2VnbWVudC0+eSwgMSk7CiAgICAgICAgICAgICAgICBpZiAoZmFicyh4IC0gcHJlZC0+eDIp IDwgMC4xCiAgICAgICAgICAgICAgICAgICAgJiYgZmFicyh5IC0gcHJlZC0+eTIpIDwgMC4xKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPmNvbnQgPSAxOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgIHggPSBzZWdtZW50LT54MTsgeSA9IHNlZ21lbnQtPnkxOwogICAg ICAgICAgICAgICAgICAgIFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgcHJlZC0+ eDIsIHByZWQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnMoeCAtIHNl Z21lbnQtPngxKSA8IDAuMQogICAgICAgICAgICAgICAgICAgICAgICAmJiBmYWJzKHkgLSBzZWdt ZW50LT55MSkgPCAwLjEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBzZWdtZW50LT5jb250ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpID09IDAgJiYgc2VsZi0+Y2xv c2VkKQogICAgICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9 IHNlZ21lbnQtPmNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkp LT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCnN0YXRpYyBQ eU9iamVjdCAqCmN1cnZlX2xvYWRfY2xvc2UoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0 ICogYXJncykKewogICAgaW50IGNvcHlfY29udF9mcm9tX2xhc3QgPSAwOwoKICAgIGlmICghUHlB cmdfUGFyc2VUdXBsZShhcmdzLCAifGkiLCAmY29weV9jb250X2Zyb21fbGFzdCkpCiAgICAgICAg cmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPmNsb3NlZCA9IDE7CgogICAgaWYgKGNvcHlf Y29udF9mcm9tX2xhc3QpCiAgICB7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29udCA9IHNl bGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQ7CiAgICB9CgogICAgaWYgKHNlbGYtPmxl biA+IDIgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0udHlwZSA9PSAyKQogICAgewog ICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS54ID09IHNlbGYtPnNlZ21l bnRzW3NlbGYtPmxlbiAtIDJdLngKICAgICAgICAgICAgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+ bGVuLTFdLnkgPT0gc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuLTJdLnkpCiAgICAgICAgewogICAg ICAgICAgICBzZWxmLT5sZW4gLT0gMTsKICAgICAgICB9CiAgICB9CiAgICBjdXJ2ZV9jaGVja19z dGF0ZShzZWxmLCAwLCBfX0ZVTkNUSU9OX18pOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5v Yl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgoKaW50ClNLQ3Vy dmVfVGVzdFRyYW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIHRyYWZv LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVzdF94LCBpbnQgdGVzdF95LCBpbnQgY2xv c2VkKQp7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgU0tDb29yZCBueCwgbnksIHgx LCB5MSwgeDIsIHkyLCBsYXN0eCwgbGFzdHksIGk7CiAgICBpbnQgeFs0XSwgeVs0XTsKICAgIGlu dCByZXN1bHQ7CiAgICBpbnQgY3Jvc3NfY291bnQ7CgoKCgoKICAgIHNlZ21lbnQgPSBzZWxmLT5z ZWdtZW50czsKICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21l bnQtPnksICZsYXN0eCwgJmxhc3R5KTsKCiAgICBzZWdtZW50ICs9IDE7CiAgICBjcm9zc19jb3Vu dCA9IDA7CiAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAg IHsKICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAg U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCAmeDEs ICZ5MSk7CiAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy LCBzZWdtZW50LT55MiwgJngyLCAmeTIpOwogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ KHRyYWZvLCBzZWdtZW50LT54LCBzZWdtZW50LT55LCAmbngsICZueSk7CiAgICAgICAgICAgIHhb MF0gPSBsYXN0eCArIDAuNTsgeVswXSA9IGxhc3R5ICsgMC41OwogICAgICAgICAgICB4WzFdID0g eDEgKyAwLjU7IHlbMV0gPSB5MSArIDAuNTsKICAgICAgICAgICAgeFsyXSA9IHgyICsgMC41OyB5 WzJdID0geTIgKyAwLjU7CiAgICAgICAgICAgIHhbM10gPSBueCArIDAuNTsgeVszXSA9IG55ICsg MC41OwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X3NlZ21lbnQoeCwgeSwgdGVzdF94 LCB0ZXN0X3kpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgICAg U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eCwgc2VnbWVudC0+eSwgJm54LCAm bnkpOwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X2xpbmUobGFzdHggKyAwLjUsIGxh c3R5ICsgMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnggKyAwLjUs IG55ICsgMC41LCB0ZXN0X3gsIHRlc3RfeSk7CiAgICAgICAgfQogICAgICAgIGxhc3R4ID0gbng7 CiAgICAgICAgbGFzdHkgPSBueTsKICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICB7CiAg ICAgICAgICAgIGNyb3NzX2NvdW50ID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K ICAgICAgICBpZiAocmVzdWx0ID4gMCkKICAgICAgICAgICAgY3Jvc3NfY291bnQgKz0gcmVzdWx0 OwogICAgfQogICAgaWYgKCFzZWxmLT5jbG9zZWQgJiYgY2xvc2VkICYmIHNlbGYtPmxlbiA+PSAy ICYmIGNyb3NzX2NvdW50ID49IDApCiAgICB7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko dHJhZm8sIHNlbGYtPnNlZ21lbnRzWzBdLngsIHNlbGYtPnNlZ21lbnRzWzBdLnksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmbngsICZueSk7CiAgICAgICAgcmVzdWx0ID0gYmV6aWVyX2hp dF9saW5lKGxhc3R4ICsgMC41LCBsYXN0eSArIDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG54ICsgMC41LCBueSArIDAuNSwgdGVzdF94LCB0ZXN0X3kpOwogICAgICAgIGlm IChyZXN1bHQgPiAwKQogICAgICAgICAgICBjcm9zc19jb3VudCArPSByZXN1bHQ7CiAgICB9CgoK CgogICAgcmV0dXJuIGNyb3NzX2NvdW50Owp9CgoKCgoKIyAxNzQ1ICIuL2N1cnZlb2JqZWN0LmMi CnN0YXRpYyBQeU9iamVjdCAqCmNyZWF0b3JfZHJhd19ub3RfbGFzdChTS0N1cnZlT2JqZWN0ICog Y3VydmUsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2 ZVNlZ21lbnQgKiBzZWdtZW50cyA9IGN1cnZlLT5zZWdtZW50czsKICAgIGludCBpOwogICAgUHlP YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwoKICAgIGlmICgh UHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmZHJhd19iZXppZXIsICZkcmF3X2xpbmUpKQog ICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwgKCgoU0tDdXJ2 ZU9iamVjdCopY3VydmUpLT5sZW4pIC0gMTsgaSsrKQogICAgewogICAgICAgIGlmIChzZWdtZW50 c1tpXS50eXBlID09IDEpCiAgICAgICAgewoKCgogICAgICAgICAgICByZXN1bHQgPSBQeU9iamVj dF9DYWxsRnVuY3Rpb24oZHJhd19iZXppZXIsICIoZGQpKGRkKShkZCkoZGQpIiwgc2VnbWVudHNb aSAtIDFdLngsc2VnbWVudHNbaSAtIDFdLnksc2VnbWVudHNbaV0ueDEsc2VnbWVudHNbaV0ueTEs c2VnbWVudHNbaV0ueDIsc2VnbWVudHNbaV0ueTIsc2VnbWVudHNbaV0ueCxzZWdtZW50c1tpXS55 KTtpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkg OyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5 T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2Ug aWYgKHNlZ21lbnRzW2ldLnR5cGUgPT0gMikKICAgICAgICB7CgogICAgICAgICAgICByZXN1bHQg PSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRzW2kg LSAxXS54LHNlZ21lbnRzW2kgLSAxXS55LHNlZ21lbnRzW2ldLngsc2VnbWVudHNbaV0ueSk7IGlm ICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVs c2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmpl Y3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9Q eV9Ob25lU3RydWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0 KTsKfQoKCgoKCgojIDE3OTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3Vy dmVfc2VsZWN0aW9uX2NvdW50KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBpbnQgY291bnQg PSAwOwogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrKQogICAg ewogICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tpXS5zZWxlY3RlZCAmJiAoIXNlbGYtPmNsb3Nl ZCB8fCBpIDwgc2VsZi0+bGVuIC0gMSkpCiAgICAgICAgICAgICsrY291bnQ7CiAgICB9CiAgICBy ZXR1cm4gUHlJbnRfRnJvbUxvbmcoY291bnQpOwp9CiMgMTgxMyAiLi9jdXJ2ZW9iamVjdC5jIgpz dGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlX3NlbGVjdGVkKFNLQ3VydmVPYmplY3QgKiBzZWxm LCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1 cGxlKGFyZ3MsICJpIiwgJmlkeCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlk eCA9IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIk5vZGVTZWxlY3RlZCIpOwogICAgaWYgKGlkeCA8 IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHJldHVybiBQeUludF9Gcm9tTG9u ZyhzZWxmLT5zZWdtZW50c1tpZHhdLnNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAqCmN1 cnZlX3NlbGVjdF9yZWN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsK ICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAg aW50IGksIG1vZGUgPSAwOwogICAgaW50IHNlbGVjdGVkID0gMDsKCiAgICBpZiAoIVB5QXJnX1Bh cnNlVHVwbGUoYXJncywgIk8hfGkiLCAmU0tSZWN0VHlwZSwgJnJlY3QsICZtb2RlKSkKICAgICAg ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzOwogICAg Zm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAgICB7CiAgICAgICAg aWYgKFNLUmVjdF9Db250YWluc1hZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpKQogICAg ICAgIHsKICAgICAgICAgICAgaWYgKG1vZGUgPT0gMikKICAgICAgICAgICAgICAgIHNlZ21lbnQt PnNlbGVjdGVkID0gMDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2VnbWVudC0+ c2VsZWN0ZWQgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg ICBpZiAobW9kZSA9PSAwKQogICAgICAgICAgICAgICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwog ICAgICAgIH0KICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkIHx8IHNlZ21lbnQtPnNlbGVjdGVk OwogICAgfQoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9fRlVOQ1RJT05fXyk7Cgog ICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAq CmN1cnZlX3NlbGVjdF9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy Z3MpCnsKICAgIGludCBpZHgsIHZhbHVlID0gMTsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUo YXJncywgIml8aSIsICZpZHgsICZ2YWx1ZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoK ICAgIGlmIChpZHggPCAwKQogICAgICAgIGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAo aWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu ZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAiY3VydmVfY29udGlu dWl0eTogaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwog ICAgfQoKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uc2VsZWN0ZWQgPSB2YWx1ZTsKCiAgICBpZiAo c2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg ICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uc2VsZWN0ZWQgPSB2YWx1ZTsKICAgICAgICBlbHNl IGlmIChpZHggPT0gMCkKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u c2VsZWN0ZWQgPSB2YWx1ZTsKICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgUHlPYmplY3Qg KgpjdXJ2ZV9kZXNlbGVjdChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7 CiAgICBpbnQgaTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICB7CiAg ICAgICAgc2VsZi0+c2VnbWVudHNbaV0uc2VsZWN0ZWQgPSAwOwogICAgfQoKICAgICgoKCZfUHlf Tm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7 Cn0KCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZHJhd19kcmFnZ2VkX25vZGVzKFNLQ3Vy dmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFB5T2JqZWN0ICogZHJhd19i ZXppZXI7CiAgICBQeU9iamVjdCAqIGRyYXdfbGluZTsKICAgIFB5T2JqZWN0ICogcmVzdWx0Owog ICAgU0tQb2ludE9iamVjdCAqIG9mZnNldDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQgPSBz ZWxmLT5zZWdtZW50cyArIDE7CiAgICBpbnQgcGFydGlhbGx5OwogICAgaW50IGk7CgogICAgaWYg KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIWlPTyIsICZTS1BvaW50VHlwZSwgJm9mZnNldCwg JnBhcnRpYWxseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhd19iZXppZXIsICZkcmF3 X2xpbmUpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwg c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoc2VnbWVudFstMV0u c2VsZWN0ZWQgfHwgc2VnbWVudC0+c2VsZWN0ZWQgfHwgIXBhcnRpYWxseSkKICAgICAgICB7CiAg ICAgICAgICAgIGRvdWJsZSBueCA9IHNlZ21lbnRbLTFdLng7CiAgICAgICAgICAgIGRvdWJsZSBu eSA9IHNlZ21lbnRbLTFdLnk7CiAgICAgICAgICAgIEN1cnZlU2VnbWVudCBzZWcgPSAqc2VnbWVu dDsKCiAgICAgICAgICAgIGlmIChzZWdtZW50Wy0xXS5zZWxlY3RlZCkKICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgbnggKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgbnkgKz0gb2Zm c2V0LT55OwogICAgICAgICAgICAgICAgc2VnLngxICs9IG9mZnNldC0+eDsKICAgICAgICAgICAg ICAgIHNlZy55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHNl Z21lbnQtPnNlbGVjdGVkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZWcueCArPSBv ZmZzZXQtPng7CiAgICAgICAgICAgICAgICBzZWcueSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAg ICAgICBzZWcueDIgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2VnLnkyICs9IG9mZnNl dC0+eTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkK ICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5j dGlvbihkcmF3X2JlemllciwgIihkZCkoZGQpKGRkKShkZCkiLCBueCxueSxzZWcueDEsc2VnLnkx LHNlZy54MixzZWcueTIsc2VnLngsc2VnLnkpO2lmICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0t KHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkp LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkp KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihkcmF3X2xpbmUsICIoZGQpKGRk KSIsbngsbnksc2VnLngsc2VnLnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1 bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2Jf dHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAg ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0KSktPm9i X3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGljIFB5T2Jq ZWN0ICoKY3VydmVfbW92ZV9zZWxlY3RlZF9ub2RlcyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlP YmplY3QgKiBhcmdzKQp7CiAgICBTS1BvaW50T2JqZWN0ICogb2Zmc2V0OwogICAgaW50IGk7CiAg ICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3QgKiB1bmRvX29iamVjdCA9ICgo dm9pZCAqKTApOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyEiLCAmU0tQb2lu dFR5cGUsICZvZmZzZXQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICB1bmRvX29i amVjdCA9IGN1cnZlX2NyZWF0ZV9mdWxsX3VuZG8oc2VsZik7CiAgICBpZiAoIXVuZG9fb2JqZWN0 KQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVu dHM7CiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsK ICAgICAgICBpZiAoc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewogICAgICAgICAgICBzZWdt ZW50LT54ICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgc2VnbWVudC0+eSArPSBvZmZzZXQtPnk7 CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIHNlZ21lbnQtPngyICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgICAgIHNlZ21l bnQtPnkyICs9IG9mZnNldC0+eTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA8IHNl bGYtPmxlbiAtIDEgJiYgc2VnbWVudFsxXS50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIHNlZ21lbnRbMV0ueDEgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2Vn bWVudFsxXS55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgog ICAgcmV0dXJuIHVuZG9fb2JqZWN0Owp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kcmF3X3Vu c2VsZWN0ZWQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlP YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwogICAgUHlPYmpl Y3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHMg KyAxOwogICAgaW50IGk7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZk cmF3X2JlemllciwgJmRyYXdfbGluZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAg IGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAg IGlmIChzZWdtZW50LT50eXBlID09IDIpCiAgICAgICAgewogICAgICAgICAgICByZXN1bHQgPSBQ eU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRbLTFdLngs c2VnbWVudFstMV0ueSxzZWdtZW50LT54LHNlZ21lbnQtPnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJu IDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq KShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAq KShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzZWdtZW50Wy0xXS5zZWxl Y3RlZCAmJiAhc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewoKICAgICAgICAgICAgcmVzdWx0 ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGRyYXdfYmV6aWVyLCAiKGRkKShkZCkoZGQpKGRkKSIs IHNlZ21lbnRbLTFdLngsc2VnbWVudFstMV0ueSxzZWdtZW50LT54MSxzZWdtZW50LT55MSxzZWdt ZW50LT54MixzZWdtZW50LT55MixzZWdtZW50LT54LHNlZ21lbnQtPnkpO2lmICghcmVzdWx0KSBy ZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2Jq ZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2Jq ZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0 KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQojIDIwNDMg Ii4vY3VydmVvYmplY3QuYyIKCnN0YXRpYyBzdHJ1Y3QgbWVtYmVybGlzdCBjdXJ2ZV9tZW1iZXJs aXN0W10gPSB7CiAgICB7ImxlbiIsIDEsICgoc2l6ZV90KSAmKChTS0N1cnZlT2JqZWN0ICopMCkt PmxlbiksIDF9LAogICAgeyJjbG9zZWQiLCA4LCAoKHNpemVfdCkgJigoU0tDdXJ2ZU9iamVjdCAq KTApLT5jbG9zZWQpLCAxfSwKICAgIHsoKHZvaWQgKikwKX0KfTsKCgoKCnN0YXRpYyBzdHJ1Y3Qg UHlNZXRob2REZWYgY3VydmVfbWV0aG9kc1tdID0gewogICAgeyJkcmF3X3RyYW5zZm9ybWVkIiwo UHlDRnVuY3Rpb24pU0tDdXJ2ZV9QeURyYXdUcmFuc2Zvcm1lZCwgMX0sCiAgICB7ImhpdF9wb2lu dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9oaXRfcG9pbnQsIDF9LAoKICAgIHsiYWNjdXJhdGVfcmVj dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hY2N1cmF0ZV9yZWN0LCAxfSwKICAgIHsiY29vcmRfcmVj dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb29yZF9yZWN0LCAxfSwKCgogICAgeyJUcmFuc2xhdGUi LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhbnNsYXRpb24sIDF9LAogICAgeyJUcmFuc2Zv cm0iLCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhZm8sIDF9LAogICAgeyJEdXBsaWNhdGUi LCAoUHlDRnVuY3Rpb24pY3VydmVfZHVwbGljYXRlLCAxfSwKICAgIHsiQXBwZW5kTGluZSIsIChQ eUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc3RyYWlnaHQsIDF9LAogICAgeyJBcHBlbmRCZXppZXIi LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwZW5kX2N1cnZlLCAxfSwKICAgIHsiQXBwZW5kU2VnbWVu dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc2VnbWVudCwgMX0sCiAgICB7Ik5vZGVMaXN0 IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfbGlzdCwgMX0sCiAgICB7Ik5vZGUiLCAoUHlDRnVu Y3Rpb24pY3VydmVfbm9kZSwgMX0sCiAgICB7IlNlZ21lbnQiLCAoUHlDRnVuY3Rpb24pY3VydmVf c2VnbWVudCwgMX0sCiAgICB7IlNldENvbnRpbnVpdHkiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2V0 X2NvbnRpbnVpdHksIDF9LAogICAgeyJTZXRMaW5lIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9z dHJhaWdodCwgMX0sCiAgICB7IlNldEJlemllciIsIChQeUNGdW5jdGlvbiljdXJ2ZV9zZXRfY3Vy dmUsIDF9LAogICAgeyJTZXRTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9zZWdtZW50 LCAxfSwKICAgIHsiQ29udGludWl0eSIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb250aW51aXR5LCAx fSwKICAgIHsiU2VnbWVudFR5cGUiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2VnbWVudF90eXBlLCAx fSwKICAgIHsiQ2xvc2VQYXRoIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2Nsb3NlX2NvbnRvdXIsIDF9 LAoKCiAgICB7ImFyY19sZW5ndGhzIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2FyY19sZW5ndGhzLCAx fSwKICAgIHsiX3NldF9ub2Rlc19hbmRfc2VnbWVudHMiLChQeUNGdW5jdGlvbiljdXJ2ZV9fc2V0 X25vZGVzX2FuZF9zZWdtZW50cywxfSwKICAgIHsiX3VuZG9fY2xvc2UiLCAoUHlDRnVuY3Rpb24p Y3VydmVfX3VuZG9fY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9maWxlIiwoUHlDRnVuY3Rp b24pY3VydmVfYXBwZW5kX2Zyb21fZmlsZSwgMX0sCiAgICB7ImdldF9zYXZlIiwgKFB5Q0Z1bmN0 aW9uKWN1cnZlX2dldF9zYXZlLCAxfSwKICAgIHsid3JpdGVfdG9fZmlsZSIsIChQeUNGdW5jdGlv biljdXJ2ZV93cml0ZV90b19maWxlLCAxfSwKICAgIHsiZ3Vlc3NfY29udGludWl0eSIsKFB5Q0Z1 bmN0aW9uKWN1cnZlX2d1ZXNzX2NvbnRpbnVpdHksIDF9LAogICAgeyJsb2FkX2Nsb3NlIiwgKFB5 Q0Z1bmN0aW9uKWN1cnZlX2xvYWRfY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9zdHJpbmci LChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfZnJvbV9zdHJpbmcsMX0sCgoKICAgIHsiU2VnbWVu dFNlbGVjdGVkIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfc2VsZWN0ZWQsIDF9LAogICAgeyJT ZWxlY3RTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NlbGVjdF9zZWdtZW50LCAxfSwKICAg IHsiZHJhd19kcmFnZ2VkX25vZGVzIiwoUHlDRnVuY3Rpb24pY3VydmVfZHJhd19kcmFnZ2VkX25v ZGVzLDF9LAogICAgeyJkcmF3X3Vuc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24pY3VydmVfZHJhd191 bnNlbGVjdGVkLCAxfSwKICAgIHsic2VsZWN0aW9uX2NvdW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZl X3NlbGVjdGlvbl9jb3VudCwgMX0sCiAgICB7Im5vZGVfc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24p Y3VydmVfbm9kZV9zZWxlY3RlZCwgMX0sCiAgICB7InNlbGVjdF9yZWN0IiwgKFB5Q0Z1bmN0aW9u KWN1cnZlX3NlbGVjdF9yZWN0LCAxfSwKICAgIHsic2VsZWN0X3NlZ21lbnQiLCAoUHlDRnVuY3Rp b24pY3VydmVfc2VsZWN0X3NlZ21lbnQsIDF9LAogICAgeyJkZXNlbGVjdCIsIChQeUNGdW5jdGlv biljdXJ2ZV9kZXNlbGVjdCwgMX0sCiAgICB7Im1vdmVfc2VsZWN0ZWRfbm9kZXMiLChQeUNGdW5j dGlvbiljdXJ2ZV9tb3ZlX3NlbGVjdGVkX25vZGVzLDF9LAogICAgeyJuZWFyZXN0X3BvaW50Iiwg KFB5Q0Z1bmN0aW9uKVNLQ3VydmVfTmVhcmVzdFBvaW50UHksIDF9LAogICAgeyJwb2ludF9hdCIs IChQeUNGdW5jdGlvbilTS0N1cnZlX1BvaW50QXRQeSwgMX0sCgoKICAgIHsiZHJhd19ub3RfbGFz dCIsIChQeUNGdW5jdGlvbiljcmVhdG9yX2RyYXdfbm90X2xhc3QsIDF9LAoKICAgIHsoKHZvaWQg KikwKSwgKCh2b2lkICopMCl9Cn07CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0YXR0cihQ eU9iamVjdCAqIHNlbGYsIGNoYXIgKiBuYW1lKQp7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAg ICByZXN1bHQgPSBQeV9GaW5kTWV0aG9kKGN1cnZlX21ldGhvZHMsIHNlbGYsIG5hbWUpOwogICAg aWYgKHJlc3VsdCAhPSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgUHlF cnJfQ2xlYXIoKTsKCiAgICByZXR1cm4gUHlNZW1iZXJfR2V0KChjaGFyICopc2VsZiwgY3VydmVf bWVtYmVybGlzdCwgbmFtZSk7Cn0KCgpQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGUgPSB7CiAgICAx LCAmUHlUeXBlX1R5cGUsCiAgICAwLAogICAgIlNLQ3VydmVPYmplY3QiLAogICAgc2l6ZW9mKFNL Q3VydmVPYmplY3QpLAogICAgMCwKICAgIChkZXN0cnVjdG9yKWN1cnZlX2RlYWxsb2MsCiAgICAo cHJpbnRmdW5jKSgodm9pZCAqKTApLAogICAgY3VydmVfZ2V0YXR0ciwKICAgIDAsCiAgICAoY21w ZnVuYyljdXJ2ZV9jb21wYXJlLAogICAgKHJlcHJmdW5jKWN1cnZlX3JlcHIsCiAgICAwLAogICAg MCwKICAgIDAsCiAgICAwLAogICAgKHRlcm5hcnlmdW5jKTAsCn07CgoKClB5T2JqZWN0ICoKX1NL Q3VydmVfTnVtQWxsb2NhdGVkKFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAg ICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocGF0aHNfYWxsb2NhdGVkKTsKfQoKCmludApfU0tDdXJ2 ZV9Jbml0Q3VydmVPYmplY3Qodm9pZCkKewogICAgc2V0X25vZGVzX2FuZF9zZWdtZW50c19zdHJp bmcgPQogICAgICAgIFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoIl9zZXRfbm9kZXNfYW5kX3Nl Z21lbnRzIik7CiAgICB1bmRvX2Nsb3NlX3N0cmluZyA9IFB5U3RyaW5nX0ludGVybkZyb21TdHJp bmcoIl91bmRvX2Nsb3NlIik7CiAgICByZXR1cm4gMTsKfQo= >From wanderer@rsu.ru Sat Dec 23 20:06:00 2000 From: wanderer@rsu.ru To: gcc-gnats@gcc.gnu.org Subject: c++/1505: g++ internal error Date: Sat, 23 Dec 2000 20:06:00 -0000 Message-id: <20001224040313.29142.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01303.html Content-length: 1501 >Number: 1505 >Category: c++ >Synopsis: g++ internal error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Sat Dec 23 20:06:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Vladimir Merzliakov >Release: version 2.97 20001223 (experimental) >Organization: >Environment: Page http://www.codesourcery.com/gcc-compile.shtml >Description: /tmp/@17169.7.cc: In member function `void V::val(int) const': /tmp/@17169.7.cc:4: assignment of data-member `V::val_' in read-only structure /tmp/@17169.7.cc: In function `int main()': /tmp/@17169.7.cc:22: Internal compiler error in convert_nontype_argument, at cp/pt.c:3088 Please submit a full bug report. See for instructions. >How-To-Repeat: >Fix: work around the problem (see source): add member-function struct U : public V { int val() { return V::val(); }; }; >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="test2.cc" Content-Disposition: inline; filename="test2.cc" struct V { V() : val_(0) {}; int val() const { return val_; }; void val(int newval) const { val_ = newval; }; private: int val_; }; struct U : public V { U() : V() {}; }; template< int (U::*g)() const> struct W { int const val() { U u; return (u.*g)(); }; }; int main() { return W<&U::val>::val(); }; >From wanderer@rsu.ru Sat Dec 23 20:16:00 2000 From: wanderer@rsu.ru To: gcc-gnats@gcc.gnu.org Subject: c++/1506: g++ internal error Date: Sat, 23 Dec 2000 20:16:00 -0000 Message-id: <20001224040821.4262.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01304.html Content-length: 968 >Number: 1506 >Category: c++ >Synopsis: g++ internal error >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-illegal-code >Submitter-Id: net >Arrival-Date: Sat Dec 23 20:16:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Vladimir Merzliakov >Release: version 2.97 20001223 (experimental) >Organization: >Environment: Page http://www.codesourcery.com/gcc-compile.shtml >Description: /tmp/@17500.7.cc:5: Internal error: Segmentation fault. Please submit a full bug report. See for instructions. >How-To-Repeat: >Fix: work around the problem: fix misedit in source code >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="test3.cc" Content-Disposition: inline; filename="test3.cc" template<class T> struct V {}; template<class T struct W {}; int main() { return 0; }; >From bje@gcc.gnu.org Sat Dec 23 22:56:00 2000 From: bje@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/749 Date: Sat, 23 Dec 2000 22:56:00 -0000 Message-id: <20001224065600.15150.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01305.html Content-length: 592 The following reply was made to PR c++/749; it has been noted by GNATS. From: bje@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, rovf@earthling.net Cc: Subject: Re: c++/749 Date: 24 Dec 2000 06:51:50 -0000 Synopsis: Compiler switch not recognized State-Changed-From-To: open->closed State-Changed-By: bje State-Changed-When: Sat Dec 23 22:51:50 2000 State-Changed-Why: The online documentation reflects the current version. The options you're trying to use are not present in GCC 2.95.2. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=749&database=gcc >From bje@gcc.gnu.org Sat Dec 23 23:06:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: other/1028 Date: Sat, 23 Dec 2000 23:06:00 -0000 Message-id: <20001224070600.16623.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01307.html Content-length: 595 The following reply was made to PR other/1028; it has been noted by GNATS. From: bje@gcc.gnu.org To: bje@gcc.gnu.org, bobson@bobson.net, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, volkerdi@slackware.com Cc: Subject: Re: other/1028 Date: 24 Dec 2000 07:03:21 -0000 Synopsis: unable to use config.guess after installing gcc 2.95.2 Responsible-Changed-From-To: unassigned->bje Responsible-Changed-By: bje Responsible-Changed-When: Sat Dec 23 23:03:21 2000 Responsible-Changed-Why: I'll take care of this PR. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1028&database=gcc >From bje@gcc.gnu.org Sat Dec 23 23:06:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: target/856 Date: Sat, 23 Dec 2000 23:06:00 -0000 Message-id: <20001224070600.16618.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01306.html Content-length: 909 The following reply was made to PR target/856; it has been noted by GNATS. From: bje@gcc.gnu.org To: bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, turrisi@pd.infn.it Cc: Subject: Re: target/856 Date: 24 Dec 2000 06:57:56 -0000 Synopsis: configure fails to detect linux i686 system Responsible-Changed-From-To: unassigned->bje Responsible-Changed-By: bje Responsible-Changed-When: Sat Dec 23 22:57:56 2000 Responsible-Changed-Why: config.guess is maintained by me. State-Changed-From-To: open->feedback State-Changed-By: bje State-Changed-When: Sat Dec 23 22:57:56 2000 State-Changed-Why: The current version of config.guess (available from /pub/gnu/config on ftp.gnu.org) fixes this. Please grab a copy of config.* from the FTP archives, try it out, and report back! Thanks. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=856&database=gcc >From bje@gcc.gnu.org Sat Dec 23 23:36:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/674 Date: Sat, 23 Dec 2000 23:36:00 -0000 Message-id: <20001224073600.19999.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01308.html Content-length: 1046 The following reply was made to PR c/674; it has been noted by GNATS. From: bje@gcc.gnu.org To: anthonyu@yahoo.com, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: c/674 Date: 24 Dec 2000 07:29:28 -0000 Synopsis: -omagic and -o magic have different effects Responsible-Changed-From-To: unassigned->bje Responsible-Changed-By: bje Responsible-Changed-When: Sat Dec 23 23:29:28 2000 Responsible-Changed-Why: Got it. State-Changed-From-To: open->analyzed State-Changed-By: bje State-Changed-When: Sat Dec 23 23:29:28 2000 State-Changed-Why: GCC passes `-omagic' directly onto the linker. Amazingy, `-omagic' is a special ld command line option, so your -o option is kind of lost along the way. GCC should be fixed so that it passes the `-o' option with a space between it and the option value. This would prevent this hiccup. Feel free to propose a patch (or I'll fix it later). http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=674&database=gcc >From bje@gcc.gnu.org Sun Dec 24 00:06:00 2000 From: bje@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/526 Date: Sun, 24 Dec 2000 00:06:00 -0000 Message-id: <20001224080601.23108.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01309.html Content-length: 691 The following reply was made to PR c/526; it has been noted by GNATS. From: bje@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, meixner@rbg.informatik.tu-darmstadt.de, nobody@gcc.gnu.org Cc: Subject: Re: c/526 Date: 24 Dec 2000 08:01:48 -0000 Synopsis: incorrect initialization of array State-Changed-From-To: open->feedback State-Changed-By: bje State-Changed-When: Sun Dec 24 00:01:48 2000 State-Changed-Why: The semantics of this array initialisation are that the string must be NULL-terminated (as it is). The ANSI standard says that any remaining characters beyond the NULL are left unmodified. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=526&database=gcc >From bje@gcc.gnu.org Sun Dec 24 01:06:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/903 Date: Sun, 24 Dec 2000 01:06:00 -0000 Message-id: <20001224090601.29220.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01311.html Content-length: 940 The following reply was made to PR c/903; it has been noted by GNATS. From: bje@gcc.gnu.org To: aach@genetics.med.harvard.edu, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: c/903 Date: 24 Dec 2000 08:57:19 -0000 Synopsis: gcc compiler cannot find log10 function Responsible-Changed-From-To: unassigned->bje Responsible-Changed-By: bje Responsible-Changed-When: Sun Dec 24 00:57:19 2000 Responsible-Changed-Why: I'll handle this one. State-Changed-From-To: open->closed State-Changed-By: bje State-Changed-When: Sun Dec 24 00:57:19 2000 State-Changed-Why: This is not a bug in GCC. If you use the log10() function, you must link the math library with `-lm' (ie. gcc foo.c -o foo -lm). The only reason G++ works is that the C++ compiler front-end includes -lm when running the linker for you. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=903&database=gcc >From sefer@hotmail.com Sun Dec 24 01:06:00 2000 From: sefer@hotmail.com To: gcc-gnats@gcc.gnu.org Subject: target/1507: Latest GCC dec 12th doesn't bootstrap on i686. Date: Sun, 24 Dec 2000 01:06:00 -0000 Message-id: <20001224090117.29040.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01312.html Content-length: 1722 >Number: 1507 >Category: target >Synopsis: Latest GCC dec 12th doesn't bootstrap on i686. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Dec 24 01:06:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: sefer@hotmail.com >Release: gcc 2.97 - dec. 24, 2000 >Organization: >Environment: i686, Linux 2.2.18 (RH6.2) >Description: Bootstrap of the compiler fails on i686 (redhat 6.2) running kernel 2.2.18, glibc 2.1.3 and binutils 2.10.91 rm -f cxxmain.c ln -s ./../libiberty/cplus-dem.c cxxmain.c gcc -c -DMAIN -DIN_GCC -g -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -DHAVE_CONFIG_H -I. -I. -I. -I./. -I./config -I./../include \ -DVERSION=\"2.97\" cxxmain.c gcc -o c++filt -DIN_GCC -g -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -DHAVE_CONFIG_H \ cxxmain.o underscore.o obstack.o ../libiberty/libiberty.a cd . && makeinfo -o cpp.info cpp.texi cd . && makeinfo -o gcc.info gcc.texi ./install.texi:945: `.' or `,' must follow cross reference, not f. ./md.texi:2607: `.' or `,' must follow cross reference, not T. ./md.texi:2623: `.' or `,' must follow cross reference, not T. makeinfo: Removing output file `gcc.info' due to errors; use --force to preserve. make[2]: *** [gcc.info] Error 2 make[2]: Leaving directory `/tmp/egcs/gcc' make[1]: *** [stage_a] Error 2 make[1]: Leaving directory `/tmp/egcs/gcc' make: *** [bootstrap] Error 2 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: >From bje@gcc.gnu.org Sun Dec 24 01:06:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: libstdc++/898 Date: Sun, 24 Dec 2000 01:06:00 -0000 Message-id: <20001224090601.29227.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01310.html Content-length: 908 The following reply was made to PR libstdc++/898; it has been noted by GNATS. From: bje@gcc.gnu.org To: David.Billinghurst@riotinto.com, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: libstdc++/898 Date: 24 Dec 2000 09:01:04 -0000 Synopsis: libstdc++-v3 configuration sets @EXEEXT@ incorrectly on cygwin Responsible-Changed-From-To: unassigned->bje Responsible-Changed-By: bje Responsible-Changed-When: Sun Dec 24 01:01:04 2000 Responsible-Changed-Why: I'll take this one. State-Changed-From-To: open->analyzed State-Changed-By: bje State-Changed-When: Sun Dec 24 01:01:04 2000 State-Changed-Why: It's `configure's job to decide on the substitution for @EXEEXT@. Can you send me the config.log file generated when configuring libstdc++? Thanks, bje@redhat.com http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=898&database=gcc >From bje@gcc.gnu.org Sun Dec 24 01:36:00 2000 From: bje@gcc.gnu.org To: bje@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: other/1028 Date: Sun, 24 Dec 2000 01:36:00 -0000 Message-id: <20001224093600.31140.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01313.html Content-length: 556 The following reply was made to PR other/1028; it has been noted by GNATS. From: bje@gcc.gnu.org To: bje@gcc.gnu.org, bobson@bobson.net, gcc-gnats@gcc.gnu.org, volkerdi@slackware.com Cc: Subject: Re: other/1028 Date: 24 Dec 2000 09:29:10 -0000 Synopsis: unable to use config.guess after installing gcc 2.95.2 State-Changed-From-To: open->closed State-Changed-By: bje State-Changed-When: Sun Dec 24 01:29:09 2000 State-Changed-Why: GCC does not install config.guess. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1028&database=gcc >From jsm28@cam.ac.uk Sun Dec 24 06:26:00 2000 From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c/526 Date: Sun, 24 Dec 2000 06:26:00 -0000 Message-id: <20001224142600.28539.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01314.html Content-length: 759 The following reply was made to PR c/526; it has been noted by GNATS. From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: <bje@gcc.gnu.org> Cc: <gcc-gnats@gcc.gnu.org>, <meixner@rbg.informatik.tu-darmstadt.de> Subject: Re: c/526 Date: Sun, 24 Dec 2000 14:19:43 +0000 (GMT) On 24 Dec 2000 bje@gcc.gnu.org wrote: > The semantics of this array initialisation are that the string > must be NULL-terminated (as it is). The ANSI standard says that > any remaining characters beyond the NULL are left unmodified. This was fixed in TC2 to the old standard, and C99: the remaining characters must be zero. See DRs #060, #092; PR c/128 (which is the same bug); and gcc.c-torture/execute/20000801-4.c. -- Joseph S. Myers jsm28@cam.ac.uk >From nathan@gcc.gnu.org Sun Dec 24 07:36:00 2000 From: nathan@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/689 Date: Sun, 24 Dec 2000 07:36:00 -0000 Message-id: <20001224153600.5725.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01315.html Content-length: 651 The following reply was made to PR c++/689; it has been noted by GNATS. From: nathan@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, jeff@elrancho.com, nobody@gcc.gnu.org Cc: Subject: Re: c++/689 Date: 24 Dec 2000 15:32:26 -0000 Synopsis: this warning is not helpful: `class xxxx' only defines a private destructor and has no friend State-Changed-From-To: open->analyzed State-Changed-By: nathan State-Changed-When: Sun Dec 24 07:32:26 2000 State-Changed-Why: yup, I think this is too restrictive too. I have such classes with static creator and destructor functions. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=689&database=gcc >From nathan@gcc.gnu.org Sun Dec 24 07:46:00 2000 From: nathan@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/766 Date: Sun, 24 Dec 2000 07:46:00 -0000 Message-id: <20001224154600.6851.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01317.html Content-length: 564 The following reply was made to PR c++/766; it has been noted by GNATS. From: nathan@gcc.gnu.org To: arasu@ti.com, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org Cc: Subject: Re: c++/766 Date: 24 Dec 2000 15:41:52 -0000 Synopsis: Error : "Field out of range" State-Changed-From-To: open->feedback State-Changed-By: nathan State-Changed-When: Sun Dec 24 07:41:52 2000 State-Changed-Why: please provide the pre-processed source code and command line options that elicits this problem http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=766&database=gcc >From nathan@gcc.gnu.org Sun Dec 24 07:46:00 2000 From: nathan@gcc.gnu.org To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/729 Date: Sun, 24 Dec 2000 07:46:00 -0000 Message-id: <20001224154600.6846.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01316.html Content-length: 1076 The following reply was made to PR c++/729; it has been noted by GNATS. From: nathan@gcc.gnu.org To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, rovf@earthling.net Cc: Subject: Re: c++/729 Date: 24 Dec 2000 15:39:48 -0000 Synopsis: compiler does not recognize variable definition State-Changed-From-To: open->analyzed State-Changed-By: nathan State-Changed-When: Sun Dec 24 07:39:47 2000 State-Changed-Why: Gcc may or may not be correct here, I can't tell from the standard. If `p' was initialized by a single arg ctor. i.e. NameMap::value_type p (string (name)), then the standard is clear that that must be read as a prototype for function 'p'. I think that's in 6.8 (don't have a std in front of me now). However, your example has two parameters that only becomes not-a-prototype at the second parameter 'info'. It's unclear (to me) as to whether this sort of thing should be dealt with as a variable definition. Anyway, needs a better parser I guess. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=729&database=gcc >From gilsh@cs.huji.ac.il Sun Dec 24 11:26:00 2000 From: gilsh@cs.huji.ac.il To: gcc-gnats@gcc.gnu.org Subject: c++/1508: crashes when seeing unrecognized variable name. Date: Sun, 24 Dec 2000 11:26:00 -0000 Message-id: <20001224192036.5161.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01318.html Content-length: 1926 >Number: 1508 >Category: c++ >Synopsis: crashes when seeing unrecognized variable name. >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Dec 24 11:26:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Gil Shallom >Release: gcc version 2.96 20000731 (Red Hat Linux 7.0) >Organization: >Environment: Linux gx-30.cs.huji.ac.il 2.4.0-test12 #9 Tue Dec 19 01:34:50 IST 2000 i686 unknown >Description: There is actually a bug in the program but here is the bug reported by gcc. ex2_master.c: In function `int initialize (assignment **, int **, char *, int, int *)': ex2_master.c:156: parse error before `,' ex2_master.c:159: parse error before `,' ex2_master.c:162: parse error before `,' ex2_master.c:165: parse error before `,' ex2_master.c:168: parse error before `,' ex2_master.c:212: Internal error #122. ex2_master.c:212: Internal compiler error in finish_function, at ../gcc/cp/decl.c:14422 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. >How-To-Repeat: g++ -I. -g -c -g ex2_master.c >Fix: 156c156 < if (!strcmp(assignment, "fixed")) --- > if (!strcmp(assignment_param, "fixed")) 159c159 < if (!strcmp(assignment, "static")) --- > if (!strcmp(assignment_param, "static")) 162c162 < if (!strcmp(assignment, "load")) --- > if (!strcmp(assignment_param, "load")) 165c165 < if (!strcmp(assignment, "cpu")) --- > if (!strcmp(assignment_param, "cpu")) 168c168 < if (!strcmp(assignment, "comm")) --- > if (!strcmp(assignment_param, "comm")) 170c170 < --- > >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="pvm3.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pvm3.h"
next reply other threads:[~2000-12-20 13:51 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2000-12-20 13:51 John Stracke [this message] -- strict thread matches above, loose matches on Subject: below -- 2000-12-20 12:20 francis
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20001220214602.24581.qmail@sourceware.cygnus.com \ --to=francis@ecal.com \ --cc=gcc-prs@gcc.gnu.org \ --cc=warrenl@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).