public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2002-08-12  4:36 aloeff
  0 siblings, 0 replies; 3+ messages in thread
From: aloeff @ 2002-08-12  4:36 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7577
>Category:       c
>Synopsis:       GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 12 02:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Andreas Loeffler
>Release:        gcc version 3.1
>Organization:
>Environment:
powerpc-linux cross compiler
Configured with: ../configure --host=i586-pc-linux-gnu --target=powerpc-linux --prefix=/opt/fsp/i586-pc-linux-gnu/local --enable-shared --enable-languages=c,c++,f77 --with-headers=/opt/fsp/powerpc-linux/include --with-libs=/opt/fsp/powerpc-linux/lib --with-cpu=403 --without-fp
Thread model: single
>Description:
while trying to compile and link the linux kernel we get 
a lot of messeages like the lines below:
arch/ppc/kernel/kernel.o(.debug+0x4e678d): undefined reference to `.L_E7576'
arch/ppc/kernel/kernel.o(.debug+0x4e67a3): undefined reference to `.L_E7577'
arch/ppc/kernel/kernel.o(.debug+0x4e67b9): undefined reference to `.L_E7580'
we see this if we compile with -gdwarf+

we then tried to figure out where those .L_E* symbols came from
obviously they were generated by the compiler
our testcase is derived from one of the kernel source files
and it looks like that the __inline__ is causing the problem

we compiled the code with:
powerpc-linux-gcc -D__KERNEL__ -Wall -O2 -gdwarf+ -mcpu=403 -Wa,-m403 -save-temps -c bla.c
and then grep'ed for the symbols: powerpc-linux-objdump -Sawx bla.o | grep L_E
00000000         *UND*	00000000 .L_E9269
00000000         *UND*	00000000 .L_E9268
00000000         *UND*	00000000 .L_E9271
00000000         *UND*	00000000 .L_E9272

the symbols are gone without the __inline__
or using -gdwarf-2 option instead but that doesn't help us
we need dwarf+ for our debugger
>How-To-Repeat:
powerpc-linux-gcc -D__KERNEL__ -Wall -O2 -gdwarf+ -mcpu=403 -Wa,-m403 -save-temps -c bla.c
powerpc-linux-objdump -Sawx bla.o | grep L_E
>Fix:

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

LyoqCiAqIEFuZHJlYXMgTG9lZmZsZXIgYW5kIEkgdHJpZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0
aGUgLkxfRSogc3ltYm9scyBjYW1lCiAqIGZyb20uIE9idmlvdXNseSB0aGV5IHdoZXJlIGdlbmVy
YXRlZCBieSB0aGUgY29tcGlsZXIgaW4gZnVuY3Rpb25zIHdpdGgKICogbWFnaWNhbCByZXBsYWNl
bWVudHMgbGlrZSB0aGUgb25lIGluIHRoZSBjb2RlIGJlbG93IC4uLiBTdXByaXNpbmdseSBpbiB0
aGlzCiAqIGNhc2UgdGhlIGNvZGUgY291bGQgbG9vayBtdWNoIHNpbXBsZXIuCiAqIHdpdGhvdXQg
X19pbmxpbmVfXyB0aGUgY29kZSBjb21waWxlcyB3aXRob3V0IHRoZSBMX0Ugc3ltYm9sCiAqIAog
KiBwb3dlcnBjLWxpbnV4LWdjYyAtRF9fS0VSTkVMX18gLVdhbGwgLU8yIC1nZHdhcmYrIC1tY3B1
PTQwMyBcCiAqICAgICAgICAgICAgICAgICAgIC1XYSwtbTQwMyAtYyBibGEuYwogKiBwb3dlcnBj
LWxpbnV4LW9iamR1bXAgLVNhd3ggYmxhLm8gfCBncmVwIExfRQogKi8KCgojaW5jbHVkZSA8bGlu
dXgvaWRlLmg+CgoKCi8qIGNhc3RzIGFyZSBuZWNlc3NhcnkgZm9yIGNvbnN0YW50cywgYmVjYXVz
ZSB3ZSBuZXZlciBrbm93IGhvdyBmb3Igc3VyZQogKiBob3cgVS9VTC9VTEwgbWFwIHRvIF9fdTE2
LCBfX3UzMiwgX191NjQuIEF0IGxlYXN0IG5vdCBpbiBhIHBvcnRhYmxlIHdheS4KICovCiNkZWZp
bmUgbXlfX19zd2FiMTYoeCkgXAooeyBcCiAgICAgICAgX191MTYgX194ID0gKHgpOyBcCiAgICAg
ICAgKChfX3UxNikoIFwKICAgICAgICAgICAgICAgICgoKF9fdTE2KShfX3gpICYgKF9fdTE2KTB4
MDBmZlUpIDw8IDgpIHwgXAogICAgICAgICAgICAgICAgKCgoX191MTYpKF9feCkgJiAoX191MTYp
MHhmZjAwVSkgPj4gOCkgKSk7IFwKfSkKCiNkZWZpbmUgbXlfX3N3YWIxNih4KSBcCiAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSh4KSkgPyBcCiAgICAgbXlfX19zd2FiMTYoKHgpKSA6
IFwKICAgICBteV9fZnN3YWIxNigoeCkpKQoKI2RlZmluZSBteV9fYXJjaF9fc3dhYjE2KHgpICh7
IF9fdTE2IF9fdG1wID0gKHgpIDsgbXlfX19zd2FiMTYoX190bXApOyB9KQoKI2lmIDEKZXh0ZXJu
IF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IG15X19mc3dhYjE2KF9fdTE2IHgpCiNlbHNlCmV4
dGVybiBfX2NvbnN0X18gX191MTYgbXlfX2Zzd2FiMTYoX191MTYgeCkKI2VuZGlmCnsKICAgICAg
ICByZXR1cm4gbXlfX2FyY2hfX3N3YWIxNih4KTsKfQoKCnVuc2lnbmVkIHNob3J0IGJsYWJsYWJs
YShzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpCnsKICAgICAgICBpZC0+Y29uZmlnICAgICAgICAgPSBt
eV9fc3dhYjE2KGlkLT5jb25maWcpOwogICAgICAgIHJldHVybiAwOwp9Cg==


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

* Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2003-01-08 11:26 Andreas Loeffler
  0 siblings, 0 replies; 3+ messages in thread
From: Andreas Loeffler @ 2003-01-08 11:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: "Andreas Loeffler" <ALOEFF@de.ibm.com>
To: bangerth@dealii.org, "Andreas Loeffler" <aloeff@de.ibm.com>,
   gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org,
   gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux
 kernel
Date: Wed, 8 Jan 2003 12:15:27 +0100

 --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489
 Content-type: text/plain; charset=us-ascii
 
 
 here's the file, i hope that helps you
 
 (See attached file: bla.i)
 
 Andreas Loeffler
 
 --
 EL HD S/390 SPP (Support Processor Platform Development)
 IBM Entwicklungslabor              Phone: +49 (0) 7031 16 5035
 Schoenaicher Str. 220                   Fax: +49 (0) 7031 16 4632
 71032 Boeblingen                            URL:   http://www.ibm.com
 
 
                                                                                                                                     
                       bangerth@dealii.o                                                                                             
                       rg                       To:       "Andreas Loeffler" <aloeff@de.ibm.com>, gcc-bugs@gcc.gnu.org,              
                                                 gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org                                             
                       01/08/2003 03:13         cc:                                                                                  
                       AM                       Subject:  Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux    
                       Please respond to         kernel                                                                              
                       bangerth; Please                                                                                              
                       respond to                                                                                                    
                       "Andreas                                                                                                      
                       Loeffler"; Please                                                                                             
                       respond to                                                                                                    
                       gcc-bugs; Please                                                                                              
                       respond to                                                                                                    
                       gcc-prs; Please                                                                                               
                       respond to                                                                                                    
                       nobody; Please                                                                                                
                       respond to                                                                                                    
                       gcc-gnats                                                                                                     
                                                                                                                                     
                                                                                                                                     
 
 
 
 Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux
 kernel
 
 State-Changed-From-To: open->feedback
 State-Changed-By: bangerth
 State-Changed-When: Tue Jan  7 18:13:28 2003
 State-Changed-Why:
     Thanks for your report (how unfortunate nobody has yet
     looked at it). In trying to reproduce it, I saw that the
     file still had an #include in it. Would you mind running
     the testcase through the compiler again, and give it
     -save-temps in addition? This would generate a file called
     bla.i which we need (it's then self-contained).
 
     Thanks
       Wolfgang
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7577
 
 
 
 
 --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489
 Content-type: application/octet-stream; 
 	name="bla.i"
 Content-Disposition: attachment; filename="bla.i"
 Content-transfer-encoding: base64
 
 IyAxICJibGEuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgImJs
 YS5jIgojIDE0ICJibGEuYyIKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAxIDMKIyA5ICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lk
 ZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9jb25maWcuaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hdXRvY29u
 Zi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyIDMKIyAxMCAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIg
 MiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9pbml0LmgiIDEgMwojIDQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwp0eXBl
 ZGVmIGludCAoKmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2FsbF90KSh2
 b2lkKTsKCmV4dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNhbGxfZW5k
 OwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwpzdHJ1Y3Qga2VybmVsX3BhcmFtIHsKICAgICAgICBj
 b25zdCBjaGFyICpzdHI7CiAgICAgICAgaW50ICgqc2V0dXBfZnVuYykoY2hhciAqKTsKfTsKCmV4
 dGVybiBzdHJ1Y3Qga2VybmVsX3BhcmFtIF9fc2V0dXBfc3RhcnQsIF9fc2V0dXBfZW5kOwojIDEx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxIDMKIyAxNSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC9pb3BvcnQuaCIgMwpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIgKm5h
 bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hp
 bGQ7Cn07CgpzdHJ1Y3QgcmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNlX2xp
 c3QgKm5leHQ7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0IHBj
 aV9kZXYgKmRldjsKfTsKIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pb3BvcnQuaCIgMwpleHRlcm4gc3RydWN0IHJl
 c291cmNlIGlvcG9ydF9yZXNvdXJjZTsKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNv
 dXJjZTsKCmV4dGVybiBpbnQgZ2V0X3Jlc291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNo
 YXIgKmJ1ZiwgaW50IHNpemUpOwoKZXh0ZXJuIGludCBjaGVja19yZXNvdXJjZShzdHJ1Y3QgcmVz
 b3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJl
 cXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5l
 dyk7CmV4dGVybiBpbnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4
 dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3Qg
 cmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
 IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtaW4sIHVu
 c2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
 bmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmFsaWduZikodm9p
 ZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcmVzb3Vy
 Y2UgKiBfX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nIHN0
 YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKZXh0ZXJuIGlu
 dCBfX2NoZWNrX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWdu
 ZWQgbG9uZyk7CmV4dGVybiB2b2lkIF9fcmVsZWFzZV9yZWdpb24oc3RydWN0IHJlc291cmNlICos
 IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCgoKCmV4dGVybiB2b2lkIGF1dG9pcnFf
 c2V0dXAoaW50IHdhaXR0aW1lKTsKZXh0ZXJuIGludCBhdXRvaXJxX3JlcG9ydChpbnQgd2FpdHRp
 bWUpOwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkcmVnLmgiIDEgMwoj
 IDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9nZW9tZXRyeSB7CiAgICAgIHVuc2ln
 bmVkIGNoYXIgaGVhZHM7CiAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yczsKICAgICAgdW5zaWdu
 ZWQgc2hvcnQgY3lsaW5kZXJzOwogICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0Owp9OwojIDIwNSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9iaWdfZ2VvbWV0cnkgewogICAgICAgIHVuc2ln
 bmVkIGNoYXIgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWN0b3JzOwogICAgICAgIHVu
 c2lnbmVkIGludCBjeWxpbmRlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydDsKfTsKCgoK
 CgoKCnN0cnVjdCBoZF9kcml2ZWlkIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb25maWc7CiAg
 ICAgICAgdW5zaWduZWQgc2hvcnQgY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXNlcnZl
 ZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
 dHJhY2tfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VjdG9yX2J5dGVzOwogICAgICAg
 IHVuc2lnbmVkIHNob3J0IHNlY3RvcnM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yMDsK
 ICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3IxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl
 bmRvcjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZXJpYWxfbm9bMjBdOwogICAgICAgIHVuc2ln
 bmVkIHNob3J0IGJ1Zl90eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1Zl9zaXplOwogICAg
 ICAgIHVuc2lnbmVkIHNob3J0IGVjY19ieXRlczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZ3X3Jl
 dls4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vZGVsWzQwXTsKICAgICAgICB1bnNpZ25lZCBj
 aGFyIG1heF9tdWx0c2VjdDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcjM7CiAgICAgICAg
 dW5zaWduZWQgc2hvcnQgZHdvcmRfaW87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I0Owog
 ICAgICAgIHVuc2lnbmVkIGNoYXIgY2FwYWJpbGl0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBy
 ZXNlcnZlZDUwOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yNTsKICAgICAgICB1bnNpZ25l
 ZCBjaGFyIHRQSU87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I2OwogICAgICAgIHVuc2ln
 bmVkIGNoYXIgdERNQTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmaWVsZF92YWxpZDsKICAgICAg
 ICB1bnNpZ25lZCBzaG9ydCBjdXJfY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfaGVh
 ZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3VyX3NlY3RvcnM7CiAgICAgICAgdW5zaWduZWQg
 c2hvcnQgY3VyX2NhcGFjaXR5MDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfY2FwYWNpdHkx
 OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXVsdHNlY3Q7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
 dWx0c2VjdF92YWxpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGJhX2NhcGFjaXR5OwogICAgICAg
 IHVuc2lnbmVkIHNob3J0IGRtYV8xd29yZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfbXdv
 cmQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW9fbW9kZXM7CiAgICAgICAgdW5zaWdu
 ZWQgc2hvcnQgZWlkZV9kbWFfbWluOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVpZGVfZG1hX3Rp
 bWU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW87CiAgICAgICAgdW5zaWduZWQgc2hv
 cnQgZWlkZV9waW9faW9yZHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM2OV83MFsyXTsK
 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM3MV83NFs0XTsKICAgICAgICB1bnNpZ25lZCBz
 aG9ydCBxdWV1ZV9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3Jkczc2Xzc5WzRdOwog
 ICAgICAgIHVuc2lnbmVkIHNob3J0IG1ham9yX3Jldl9udW07CiAgICAgICAgdW5zaWduZWQgc2hv
 cnQgbWlub3JfcmV2X251bTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb21tYW5kX3NldF8xOwog
 ICAgICAgIHVuc2lnbmVkIHNob3J0IGNvbW1hbmRfc2V0XzI7CiAgICAgICAgdW5zaWduZWQgc2hv
 cnQgY2Zzc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2ZzX2VuYWJsZV8xOwogICAgICAgIHVu
 c2lnbmVkIHNob3J0IGNmc19lbmFibGVfMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZfZGVm
 YXVsdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfdWx0cmE7CiAgICAgICAgdW5zaWduZWQg
 c2hvcnQgd29yZDg5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmQ5MDsKICAgICAgICB1bnNp
 Z25lZCBzaG9ydCBDdXJBUE12YWx1ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZDkyOwog
 ICAgICAgIHVuc2lnbmVkIHNob3J0IGh3X2NvbmZpZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3
 b3Jkczk0XzEyNVszMl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGFzdF9sdW47CiAgICAgICAg
 dW5zaWduZWQgc2hvcnQgd29yZDEyNzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbGY7CiMgMjk0
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2hkcmVnLmgiIDMKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZvOwoKCgoKCgog
 ICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmRzMTMwXzE1NVsyNl07CiAgICAgICAgdW5zaWduZWQg
 c2hvcnQgd29yZDE1NjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3JkczE1N18xNTlbM107CiAg
 ICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHMxNjBfMjU1Wzk1XTsKfTsKIyAxMyAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9p
 ZGUuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9saW51eC9oZHNtYXJ0LmgiIDEgMwojIDI3ICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkc21h
 cnQuaCIgMwp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfYXR0cmlidXRlX3MgewogICAgICAgIHVu
 c2lnbmVkIGNoYXIgaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzX2ZsYWc7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciBub3JtYWxpemVkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgd29yc2Vf
 bm9ybWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzZdOwogICAgICAgIHVuc2lnbmVkIGNo
 YXIgcmVzZXJ2Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfYXR0cmlidXRl
 X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3ZhbHVlc19zIHsKICAgICAgICB1bnNpZ25l
 ZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAgYXRhX3NtYXJ0X2F0dHJpYnV0ZV90IHZlbmRvcl9h
 dHRyaWJ1dGVzIFszMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVj
 dGlvbl9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWxmX3Rlc3RfZXhlY19zdGF0dXM7
 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdG90YWxfdGltZV90b19jb21wbGV0ZV9vZmZfbGluZTsK
 ICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcl9zcGVjaWZpY18zNjY7CiAgICAgICAgdW5zaWdu
 ZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVjdGlvbl9jYXBhYmlsaXR5OwogICAgICAgIHVuc2ln
 bmVkIHNob3J0IHNtYXJ0X2NhcGFiaWxpdHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBlcnJvcmxv
 Z19jYXBhYmlsaXR5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yX3NwZWNpZmljXzM3MTsK
 ICAgICAgICB1bnNpZ25lZCBjaGFyIHNob3J0X3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAg
 IHVuc2lnbmVkIGNoYXIgZXh0ZW5kX3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAgIHVuc2ln
 bmVkIGNoYXIgcmVzZXJ2ZWRfMzc0XzM4NSBbMTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVu
 ZG9yX3NwZWNpZmljXzM4Nl81MDkgWzEyNV07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtzdW07
 Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF92YWx1ZXNfdDsKCgoKdHlwZWRl
 ZiBzdHJ1Y3QgYXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV9zIHsKICAgICAgICB1bnNpZ25lZCBj
 aGFyIGlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbm9ybWFsaXplZF90aHJlc2hvbGQ7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMF07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp
 IGF0YV9zbWFydF90aHJlc2hvbGRfZW50cnlfdDsKCgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRf
 dGhyZXNob2xkc19zIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAg
 YXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV90IHRocmVzX2VudHJpZXNbMzBdOwogICAgICAgIHVu
 c2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTQ5XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNoa3N1bTsK
 fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3RocmVzaG9sZHNfdDsKCnR5cGVk
 ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF9zIHsKICAgICAgICB1
 bnNpZ25lZCBjaGFyIGRldmljZWNvbnRyb2xyZWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBmZWF0
 dXJlc3JlZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY3Rvcl9jb3VudDsKICAgICAgICB1bnNp
 Z25lZCBjaGFyIHNlY3Rvcl9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9s
 b3c7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9oaWdoOwogICAgICAgIHVuc2lnbmVk
 IGNoYXIgZHJpdmVfaGVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbW1hbmRyZWc7CiAgICAg
 ICAgdW5zaWduZWQgaW50IHRpbWVzdGFtcDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRh
 X3NtYXJ0X2Vycm9ybG9nX2NvbW1hbmRfc3RydWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21h
 cnRfZXJyb3Jsb2dfZXJyb3Jfc3RydWN0X3MgewogICAgICAgIHVuc2lnbmVkIGNoYXIgZXJyb3Jf
 Y29uZGl0aW9uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXh0ZW5kZWRfZXJyb3JbMTRdOwogICAg
 ICAgIHVuc2lnbmVkIGNoYXIgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdGltZXN0YW1w
 Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2dfZXJyb3Jfc3Ry
 dWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfZXJyb3Jsb2dfc3RydWN0X3MgewogICAg
 ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF90IGNvbW1hbmRzWzZdOwogICAg
 ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19lcnJvcl9zdHJ1Y3RfdCBlcnJvcl9zdHJ1Y3Q7Cn0gX19h
 dHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdDsKCnR5cGVk
 ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19zIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJl
 dm51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2xvZ19wb2ludGVyOwogICAgICAg
 IGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdCBlcnJvcmxvZ19zdHJ1Y3RbNV07CiAgICAgICAg
 dW5zaWduZWQgc2hvcnQgYXRhX2Vycm9yX2NvdW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5v
 bl9mYXRhbF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZV90aW1lb3V0X2NvdW50
 OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTNdOwogICAgICAgIHVuc2lnbmVkIGNo
 YXIgY2hrc3VtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2df
 dDsKCnR5cGVkZWYgc3RydWN0IGF0YV9zbWFydF9zZWxmdGVzdGxvZ19zdHJ1Y3RfcyB7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciBzZWxmdGVzdG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNl
 bGZ0ZXN0c3RhdHVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRpbWVzdGFtcDsKICAgICAgICB1
 bnNpZ25lZCBjaGFyIHNlbGZ0ZXN0ZmFpbHVyZWNoZWNrcG9pbnQ7CiAgICAgICAgdW5zaWduZWQg
 aW50IGxiYWZpcnN0ZmFpbHVyZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcnNwZWNpZmlj
 WzE1XTsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3N0
 cnVjdF90OwoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3MgewogICAgICAg
 IHVuc2lnbmVkIHNob3J0IHJldm51bWJlcjsKICAgICAgICBhdGFfc21hcnRfc2VsZnRlc3Rsb2df
 c3RydWN0X3Qgc2VsZnRlc3Rfc3RydWN0WzIxXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRv
 cnNwZWNpZmljWzJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW9zdHJlY2VudHRlc3Q7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciByZXNldmVyZWRbMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtz
 dW07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9zZWxmdGVzdGxvZ190Owoj
 IDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIiAxIDMKCgoKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L21ham9yLmgiIDEgMwojIDE3MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tYWpvci5oIiAzCnN0YXRpYyBf
 X2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKCht
 KSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDUg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvYmxrZGV2LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMSAzCgoKCiMgMSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9hc20vcGFyYW0uaCIgMSAzCiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMKCmV4dGVybiB1bnNp
 Z25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDEgMwoKCgojIDEgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvcHRyYWNlLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAzCiMgMSAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
 cHRyYWNlLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMwpzdHJ1Y3QgcHRfcmVncyB7CiAg
 ICAgICAgdW5zaWduZWQgbG9uZyBncHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmlwOwog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgbXNyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19ncHIz
 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3RyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGluazsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIHhlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNjcjsKICAg
 ICAgICB1bnNpZ25lZCBsb25nIG1xOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXA7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBkYXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkc2lzcjsKICAgICAg
 ICB1bnNpZ25lZCBsb25nIHJlc3VsdDsKCgoKCgoKCn07CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHRyYWNlLmgi
 IDIgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvYmluZm10cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku
 aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5o
 IiAxIDMKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxIDMKCgoKIyAxICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3N0ZGRlZi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIgMwojIDM2ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
 IGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9f
 a2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGlu
 dCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Bvc2l4X3R5cGVz
 LmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50
 IF9fa2VybmVsX2Rldl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9pbm9fdDsKdHlw
 ZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
 IF9fa2VybmVsX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBp
 bnQgX19rZXJuZWxfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZF90Owp0
 eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
 X19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGxv
 bmcgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90Owp0eXBl
 ZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9jbG9j
 a190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5l
 bF9jYWRkcl90Owp0eXBlZGVmIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNp
 Z25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy
 bmVsX2dpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZDMyX3Q7CnR5cGVk
 ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBf
 X2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX29sZF9naWRf
 dDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
 ewogICAgICAgIGludCB2YWxbMl07Cn0gX19rZXJuZWxfZnNpZF90OwojIDU4ICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wb3Np
 eF90eXBlcy5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19GRF9TRVQodW5zaWduZWQgbG9u
 ZyBmZCwgX19rZXJuZWxfZmRfc2V0ICpmZHNldHApCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF90
 bXAgPSBmZCAvICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICB1bnNpZ25lZCBs
 b25nIF9yZW0gPSBmZCAlICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICBmZHNl
 dHAtPmZkc19iaXRzW190bXBdIHw9ICgxVUw8PF9yZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18g
 dm9pZCBfX0ZEX0NMUih1bnNpZ25lZCBsb25nIGZkLCBfX2tlcm5lbF9mZF9zZXQgKmZkc2V0cCkK
 ewogICAgICAgIHVuc2lnbmVkIGxvbmcgX3RtcCA9IGZkIC8gKDggKiBzaXplb2YodW5zaWduZWQg
 bG9uZykpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX3JlbSA9IGZkICUgKDggKiBzaXplb2YodW5z
 aWduZWQgbG9uZykpOwogICAgICAgIGZkc2V0cC0+ZmRzX2JpdHNbX3RtcF0gJj0gfigxVUw8PF9y
 ZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fRkRfSVNTRVQodW5zaWduZWQgbG9uZyBm
 ZCwgX19rZXJuZWxfZmRfc2V0ICpwKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfdG1wID0gZmQg
 LyAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfcmVt
 ID0gZmQgJSAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgcmV0dXJuIChwLT5m
 ZHNfYml0c1tfdG1wXSAmICgxVUw8PF9yZW0pKSAhPSAwOwp9CgoKCgoKCnN0YXRpYyBfX2lubGlu
 ZV9fIHZvaWQgX19GRF9aRVJPKF9fa2VybmVsX2ZkX3NldCAqcCkKewogICAgICAgIHVuc2lnbmVk
 IGludCAqdG1wID0gKHVuc2lnbmVkIGludCAqKXAtPmZkc19iaXRzOwogICAgICAgIGludCBpOwoK
 ICAgICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQvKDggKiBzaXplb2YodW5zaWdu
 ZWQgbG9uZykpKSkpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoKDEwMjQvKDggKiBzaXplb2Yo
 dW5zaWduZWQgbG9uZykpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wWzBdID0gMDsgdG1wWzFdID0gMDsgdG1wWzJd
 ID0gMDsgdG1wWzNdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBbNF0g
 PSAwOyB0bXBbNV0gPSAwOyB0bXBbNl0gPSAwOyB0bXBbN10gPSAwOwogICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg
 ICAgaSA9ICgxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSk7CiAgICAgICAgd2hpbGUg
 KGkpIHsKICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICp0bXAgPSAwOwogICAg
 ICAgICAgICAgICAgdG1wKys7CiAgICAgICAgfQp9CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMu
 aCIgMiAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90eXBlcy5oIiAxIDMK
 CgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
 X191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBz
 aG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWdu
 ZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVk
 ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBf
 X3UzMiB1WzRdOwp9IF9fYXR0cmlidXRlKChhbGlnbmVkKDE2KSkpIF9fdmVjdG9yMTI4OwoKCgoK
 CnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKCnR5cGVk
 ZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cgp0eXBlZGVm
 IHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cgp0eXBlZGVmIHNpZ25l
 ZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Cgp0eXBlZGVm
 IF9fdmVjdG9yMTI4IHZlY3RvcjEyODsKCgoKCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBl
 ZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHlwZXMuaCIgMiAzCgoK
 CnR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBk
 ZXZfdDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2Rl
 X3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tl
 cm5lbF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBf
 X2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5
 cGVkZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5l
 bF91aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYg
 X19rZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZf
 dDsKIyA0NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZf
 dDsKIyA1NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVf
 dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tl
 cm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGlt
 ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9f
 a2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsK
 dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
 dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
 dW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
 bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVf
 aW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlw
 ZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3Mz
 MiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZf
 dDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBl
 ZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC90eXBlcy5oIiAzCnN0cnVjdCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3Rm
 cmVlOwogICAgICAgIF9fa2VybmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFt
 ZVs2XTsKICAgICAgICBjaGFyIGZfZnBhY2tbNl07Cn07CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0
 eS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2xpbmthZ2UuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC9saW1pdHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93
 YWl0LmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2VybmVsLmgi
 IDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9zdGRhcmcu
 aCIgMSAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGli
 L3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5f
 dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMK
 dHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAy
 IDMKIyA0OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMwpzdHJ1Y3Qgc2VtYXBob3JlOwoKZXh0ZXJuIHN0
 cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZpZXJfbGlzdDsKIHZvaWQgcGFuaWMoY29u
 c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybiwgZm9y
 bWF0IChwcmludGYsIDEsIDIpKSk7CiB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAg
 ICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiB2b2lkIHVwX2FuZF9leGl0KHN0cnVjdCBz
 ZW1hcGhvcmUgKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRl
 cm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNp
 Z25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoq
 LHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxs
 KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2lt
 cGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGlu
 dCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBpbnQg
 dnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IGdl
 dF9vcHRpb24oY2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25z
 KGNoYXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBs
 b25nIG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9w
 cm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0
 ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIGludCBwcmludGsoY29uc3QgY2hh
 ciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwg
 MikpKTsKCmV4dGVybiBpbnQgY29uc29sZV9sb2dsZXZlbDsKCnN0YXRpYyBpbmxpbmUgdm9pZCBj
 b25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDA7Cn0KCnN0
 YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9pZCkKewogICAgICAgIGlmIChjb25z
 b2xlX2xvZ2xldmVsKQogICAgICAgICAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDE1Owp9CiMg
 MTE3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVw
 dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAg
 ICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3
 YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0
 b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hhciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2Yo
 aW50KV07Cn07CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIg
 MSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZl
 dGNoLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgNjUwICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNz
 b3IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvYXNtL2Rjci5oIiAxIDMKIyA2NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy
 IDMKIyA2ODMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCmV4dGVybiBpbnQgX3ByZXBfdHlwZTsKCgoK
 CmV4dGVybiB1bnNpZ25lZCBjaGFyIHVjU3lzdGVtVHlwZTsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIg
 dWNCb2FyZFJldjsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgdWNCb2FyZFJldk1haiwgdWNCb2FyZFJl
 dk1pbjsKCnN0cnVjdCB0YXNrX3N0cnVjdDsKdm9pZCBzdGFydF90aHJlYWQoc3RydWN0IHB0X3Jl
 Z3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgbmlwLCB1bnNpZ25lZCBsb25nIHNwKTsKdm9pZCByZWxl
 YXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgoKCgpleHRlcm4gbG9uZyBrZXJuZWxf
 dGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp
 OwojIDcxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDMKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAq
 bGFzdF90YXNrX3VzZWRfbWF0aDsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqbGFzdF90YXNr
 X3VzZWRfYWx0aXZlYzsKIyA3MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnR5cGVkZWYgc3RydWN0
 IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdGhy
 ZWFkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrc3A7CiAgICAgICAgdW5zaWduZWQg
 bG9uZyB3Y2hhbjsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczsKICAgICAgICBtbV9zZWdt
 ZW50X3QgZnM7CiAgICAgICAgdm9pZCAqcGdkaXI7CiAgICAgICAgc2lnbmVkIGxvbmcgbGFzdF9z
 eXNjYWxsOwogICAgICAgIGRvdWJsZSBmcHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBz
 Y3JfcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBzY3I7CgoKCgoKCgogICAgICAgIHVuc2ln
 bmVkIGxvbmcgcHRyYWNlX2RiY3IwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlX2RiY3Ix
 OwoKfTsKIyA3OTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
 bG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAgICBy
 ZXR1cm4gKHQtPnJlZ3MpID8gdC0+cmVncy0+bmlwIDogMDsKfQoKCgoKdW5zaWduZWQgbG9uZyBn
 ZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA4MTUgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o
 IiAzCmludCBsbF9wcmludGsoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIGxsX3B1dHMoY29uc3Qg
 Y2hhciAqKTsKCgoKCgp2b2lkIF9ubWFza19hbmRfb3JfbXNyKHVuc2lnbmVkIGxvbmcgbm1hc2ss
 IHVuc2lnbmVkIGxvbmcgb3JfdmFsKTsKdm9pZCBfcG93ZXJzYXZlX25tYXNrX2FuZF9vcl9tc3Io
 dW5zaWduZWQgbG9uZyBubWFzaywgdW5zaWduZWQgbG9uZyBvcl92YWwpOwojIDE0ICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L3ByZWZldGNoLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDkgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hl
 LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDIg
 MwojIDQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2FzbS9jYWNoZS5oIiAzCmV4dGVybiB2b2lkIGNsZWFuX2RjYWNoZV9yYW5nZSh1
 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHN0b3ApOwpleHRlcm4gdm9pZCBmbHVz
 aF9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzdG9wKTsK
 ZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwg
 dW5zaWduZWQgbG9uZyBzdG9wKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyIDMKIyA0MyAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9wcmVmZXRjaC5oIiAzCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaChjb25zdCB2
 b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAq
 eCkgezt9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDIgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMwpz
 dHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsK
 fTsKIyAzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3Rf
 YWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHBy
 ZXYsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2
 ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3LT5wcmV2ID0gcHJl
 djsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0
 YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1
 Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQt
 Pm5leHQpOwp9CiMgNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
 bGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhl
 YWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4MCAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVj
 dCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
 dWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAg
 ICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3Rf
 ZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+
 cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2Rl
 bF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRy
 eS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRy
 eSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBf
 X2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAg
 ICByZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZv
 aWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAq
 aGVhZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKCiAg
 ICAgICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hl
 YWQgKmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq
 YXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKICAg
 ICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAgICAgICAgICBsYXN0LT5u
 ZXh0ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9IGxhc3Q7CiAgICAgICAgfQp9CiMg
 MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxIDMKIyA1
 MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9zcGlubG9jay5oIiAzCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHNwaW5sb2NrX3Q7
 CiMgMTE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDMKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2Nr
 X3Q7CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAxIDMKIyAy
 MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9hc20vcGFnZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 bGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEgMwoj
 IDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBj
 LWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2Rldl90Lmgi
 IDEgMwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rl
 dl90OwojIDc2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5h
 bWUoa2Rldl90KTsKCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga2Rldl90X3RvX25y
 KGtkZXZfdCBkZXYpIHsKICAgICAgICByZXR1cm4gKCgodW5zaWduZWQgaW50KSAoKGRldikgPj4g
 OCkpPDw4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0gMSkpKTsKfQoK
 c3RhdGljIGlubGluZSBrZGV2X3QgdG9fa2Rldl90KGludCBkZXYpCnsKICAgICAgICBpbnQgbWFq
 b3IsIG1pbm9yOwojIDk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCiAgICAgICAgbWFqb3IgPSAoZGV2
 ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYpOwoKICAgICAgICByZXR1cm4gKCgo
 bWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVt
 LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMjMgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUv
 YXNtL3N5c3RlbS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9hdG9taWMuaCIgMSAzCgoKCgoKCgp0eXBlZGVm
 IHN0cnVjdCB7IHZvbGF0aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190OwoKCgoKCgoKc3RhdGlj
 IF9faW5saW5lX18gdm9pZCBhdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgYSkKewogICAgICAg
 IGludCB0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4xOglsd2FyeAklMCwwLCUz
 XG4Jb3JpCSUwLCUyLDBcbglzdHdjeC4JJTAsMCwlM1xuCWJuZS0JMWIiCgoKCgogICAgICAgIDog
 Ij0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAgICAgIDogInIiIChhKSwgInIiICh2KSwg
 Im0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7Cn0KCgoKZXh0ZXJuIHZvaWQgYXRvbWlj
 X2NsZWFyX21hc2sodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nICphZGRyKTsKZXh0
 ZXJuIHZvaWQgYXRvbWljX3NldF9tYXNrKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
 ZyAqYWRkcik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2FkZF9yZXR1cm4oaW50IGEs
 IGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGls
 ZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglhZGQJJTAsJTIsJTBcbglzdHdjeC4JJTAsMCwlM1xu
 CWJuZS0JMWIiCgoKCgogICAgICAgIDogIj0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAg
 ICAgIDogInIiIChhKSwgInIiICh2KSwgIm0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7
 CgogICAgICAgIHJldHVybiB0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX3N1Yl9y
 ZXR1cm4oaW50IGEsIGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNt
 X18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglzdWJmCSUwLCUyLCUwXG4Jc3R3
 Y3guCSUwLDAsJTNcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAodi0+
 Y291bnRlcikKICAgICAgICA6ICJyIiAoYSksICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAg
 ICAgICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50
 IGF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAg
 IF9fYXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwx
 XG4Jc3R3Y3guCSUwLDAsJTJcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1t
 IiAodi0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAg
 ICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGF0
 b21pY19kZWNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9f
 YXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwtMVxu
 CXN0d2N4LgklMCwwLCUyXG4JYm5lCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAo
 di0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAgICA6
 ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0
 ZW0uaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9hc20vaHdfaXJxLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9od19pcnEuaCIg
 MwpzdHJ1Y3QgaW50X2NvbnRyb2xfc3RydWN0CnsKICAgICAgICB2b2lkICgqaW50X2NsaSkodm9p
 ZCk7CiAgICAgICAgdm9pZCAoKmludF9zdGkpKHZvaWQpOwogICAgICAgIHZvaWQgKCppbnRfcmVz
 dG9yZV9mbGFncykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmludF9zYXZlX2ZsYWdz
 KSh1bnNpZ25lZCBsb25nICopOwogICAgICAgIHZvaWQgKCppbnRfc2V0X2xvc3QpKHVuc2lnbmVk
 IGxvbmcpOwp9OwpleHRlcm4gc3RydWN0IGludF9jb250cm9sX3N0cnVjdCBpbnRfY29udHJvbDsK
 ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdGltZXJfaW50ZXJydXB0X2ludGVyY2VwdDsKZXh0ZXJuIHVu
 c2lnbmVkIGxvbmcgZG9fSVJRX2ludGVyY2VwdDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fY3Jp
 dF9JUlFfaW50ZXJjZXB0OwppbnQgdGltZXJfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICopOwoK
 ZXh0ZXJuIHZvaWQgX19ub191c2Vfc3RpKHZvaWQpOwpleHRlcm4gdm9pZCBfX25vX3VzZV9jbGko
 dm9pZCk7CmV4dGVybiB2b2lkIF9fbm9fdXNlX3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyk7
 CmV4dGVybiB2b2lkIF9fbm9fdXNlX3NhdmVfZmxhZ3ModW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJu
 IHZvaWQgX19ub191c2Vfc2V0X2xvc3QodW5zaWduZWQgbG9uZyk7CiMgMzcgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2h3X2ly
 cS5oIiAzCmV4dGVybiB2b2lkIGRvX2xvc3RfaW50ZXJydXB0cyh1bnNpZ25lZCBsb25nKTsKIyA0
 NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9hc20vaHdfaXJxLmgiIDMKc3RydWN0IGh3X2ludGVycnVwdF90eXBlOwpzdGF0aWMgaW5s
 aW5lIHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2ln
 bmVkIGludCBpKSB7fQojIDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIv
 Z2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMiAzCiMgNTkg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGlu
 dXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCmV4dGVybiB2b2lkIHhtb25faXJxKGludCwg
 dm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgeG1vbihzdHJ1Y3QgcHRfcmVn
 cyAqZXhjcCk7CgoKCgpleHRlcm4gX19pbmxpbmVfXyB2b2lkIGRjYmYodm9pZCAqbGluZSkKewog
 ICAgICAgIGFzbSBfX3ZvbGF0aWxlX18gKCJkY2JmICUwLCUxOyBzeW5jIiA6IDogInIiIChsaW5l
 KSwgInIiICgwKSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgaWNiaSh2b2lkICpsaW5lKQp7
 CiAgICAgICAgYXNtIF9fdm9sYXRpbGVfXyAoImljYmkgJTAsJTE7IHN5bmMiIDogOiAiciIgKGxp
 bmUpLCAiciIgKDApKTsKfQoKZXh0ZXJuIHZvaWQgcHJpbnRfYmFja3RyYWNlKHVuc2lnbmVkIGxv
 bmcgKik7CgoKCgoKCgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKiByZWdz
 KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaW5zdHJ1Y3Rpb25fY2FjaGUodm9pZCk7CmV4dGVybiB2b2lk
 IGhhcmRfcmVzZXRfbm93KHZvaWQpOwpleHRlcm4gdm9pZCBwb3dlcm9mZl9ub3codm9pZCk7CmV4
 dGVybiBpbnQgX2dldF9QVlIodm9pZCk7CmV4dGVybiBsb25nIF9nZXRfTDJDUih2b2lkKTsKZXh0
 ZXJuIHZvaWQgX3NldF9MMkNSKHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCB2aWFfY3VkYV9p
 bml0KHZvaWQpOwpleHRlcm4gdm9pZCBwbWFjX252cmFtX2luaXQodm9pZCk7CmV4dGVybiB2b2lk
 IHJlYWRfcnRjX3RpbWUodm9pZCk7CmV4dGVybiB2b2lkIHBtYWNfZmluZF9kaXNwbGF5KHZvaWQp
 OwpleHRlcm4gdm9pZCBnaXZldXBfZnB1KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv
 aWQgZW5hYmxlX2tlcm5lbF9mcCh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2l2ZXVwX2FsdGl2ZWMoc3Ry
 dWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBsb2FkX3VwX2FsdGl2ZWMoc3RydWN0IHRh
 c2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBjdnRfZmQoZmxvYXQgKmZyb20sIGRvdWJsZSAqdG8s
 IHVuc2lnbmVkIGxvbmcgKmZwc2NyKTsKZXh0ZXJuIHZvaWQgY3Z0X2RmKGRvdWJsZSAqZnJvbSwg
 ZmxvYXQgKnRvLCB1bnNpZ25lZCBsb25nICpmcHNjcik7CmV4dGVybiBpbnQgY2FsbF9ydGFzKGNv
 bnN0IGNoYXIgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgLi4uKTsKZXh0ZXJuIGludCBh
 YnMoaW50KTsKZXh0ZXJuIHZvaWQgY2FjaGVhYmxlX21lbXplcm8odm9pZCAqcCwgdW5zaWduZWQg
 aW50IG5iKTsKCnN0cnVjdCBkZXZpY2Vfbm9kZTsKZXh0ZXJuIHZvaWQgbm90ZV9zY3NpX2hvc3Qo
 c3RydWN0IGRldmljZV9ub2RlICosIHZvaWQgKik7CgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgoKZXh0
 ZXJuIHZvaWQgX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHRhc2tfc3Ry
 dWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqKTsKCnN0
 cnVjdCB0aHJlYWRfc3RydWN0OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpfc3dpdGNoKHN0
 cnVjdCB0aHJlYWRfc3RydWN0ICpwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0ICpuZXh0KTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgcnRh
 c19kYXRhOwoKc3RydWN0IHB0X3JlZ3M7CmV4dGVybiB2b2lkIGR1bXBfcmVncyhzdHJ1Y3QgcHRf
 cmVncyAqKTsKIyAxNTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2Mt
 bGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCnN0YXRpYyBfX2lu
 bGluZV9fIHVuc2lnbmVkIGxvbmcKeGNoZ191MzIodm9sYXRpbGUgdm9pZCAqcCwgdW5zaWduZWQg
 bG9uZyB2YWwpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHByZXY7CgogICAgICAgIF9fYXNtX18g
 X192b2xhdGlsZV9fICgiXG4iCiIxOglsd2FyeAklMCwwLCUyXG4iCiIJc3R3Y3guCSUzLDAsJTJc
 biIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKHByZXYpLCAiPW0iICgqKHZvbGF0aWxlIHVu
 c2lnbmVkIGxvbmcgKilwKQogICAgICAgIDogInIiIChwKSwgInIiICh2YWwpLCAibSIgKCoodm9s
 YXRpbGUgdW5zaWduZWQgbG9uZyAqKXApCiAgICAgICAgOiAiY2MiLCAibWVtb3J5Iik7CgogICAg
 ICAgIHJldHVybiBwcmV2Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX194Y2hnX2NhbGxlZF93aXRoX2Jh
 ZF9wb2ludGVyKHZvaWQpOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1
 bnNpZ25lZCBsb25nIHgsIHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChz
 aXplKSB7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBs
 b25nICl4Y2hnX3UzMihwdHIsIHgpOwoKCgoKICAgICAgICB9CiAgICAgICAgX194Y2hnX2NhbGxl
 ZF93aXRoX2JhZF9wb2ludGVyKCk7CiAgICAgICAgcmV0dXJuIHg7CgoKfQoKZXh0ZXJuIGlubGlu
 ZSB2b2lkICogeGNoZ19wdHIodm9pZCAqIG0sIHZvaWQgKiB2YWwpCnsKICAgICAgICByZXR1cm4g
 KHZvaWQgKikgeGNoZ191MzIobSwgKHVuc2lnbmVkIGxvbmcpIHZhbCk7Cn0KCgoKCnN0YXRpYyBf
 X2lubGluZV9fIHVuc2lnbmVkIGxvbmcKX19jbXB4Y2hnX3UzMih2b2xhdGlsZSBpbnQgKnAsIGlu
 dCBvbGQsIGludCBuZXcpCnsKICAgICAgICBpbnQgcHJldjsKCiAgICAgICAgX19hc21fXyBfX3Zv
 bGF0aWxlX18gKCJcbiIKIjE6CWx3YXJ4CSUwLDAsJTJcbiIKIgljbXB3CTAsJTAsJTNcbiIKIgli
 bmUJMmZcbiIKIglzdHdjeC4JJTQsMCwlMlxuIgoiCWJuZS0JMWJcbiIKCgoKIjI6IgogICAgICAg
 IDogIj0mciIgKHByZXYpLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAob2xkKSwg
 InIiIChuZXcpLCAibSIgKCpwKQogICAgICAgIDogImNjIiwgIm1lbW9yeSIpOwoKICAgICAgICBy
 ZXR1cm4gcHJldjsKfQoKCgpleHRlcm4gdm9pZCBfX2NtcHhjaGdfY2FsbGVkX3dpdGhfYmFkX3Bv
 aW50ZXIodm9pZCk7CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCl9fY21weGNoZyh2
 b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgb2xkLCB1bnNpZ25lZCBsb25nIG5ldywg
 aW50IHNpemUpCnsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDQ6CiAgICAg
 ICAgICAgICAgICByZXR1cm4gX19jbXB4Y2hnX3UzMihwdHIsIG9sZCwgbmV3KTsKCgoKCiAgICAg
 ICAgfQogICAgICAgIF9fY21weGNoZ19jYWxsZWRfd2l0aF9iYWRfcG9pbnRlcigpOwogICAgICAg
 IHJldHVybiBvbGQ7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5o
 IiAzCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGU7IH0gcHRlX3Q7CnR5cGVkZWYg
 c3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5z
 aWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBw
 Z3Byb3Q7IH0gcGdwcm90X3Q7CiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BhZ2UuaCIgMwpleHRlcm4gdm9pZCBjbGVh
 cl9wYWdlKHZvaWQgKnBhZ2UpOwpleHRlcm4gdm9pZCBjb3B5X3BhZ2Uodm9pZCAqdG8sIHZvaWQg
 KmZyb20pOwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
 ZyBfX19wYSh1bnNpZ25lZCBsb25nIHYpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7CiAgICAg
 ICAgYXNtIHZvbGF0aWxlICgiMTogYWRkaXMgJTAsICUxLCAlMjsiCiAgICAgICAgICAgICAgICAg
 ICAgICAiLnNlY3Rpb24gXCIudnRvcF9maXh1cFwiLFwiYXdcIjsiCiAgICAgICAgICAgICAgICAg
 ICAgICAiLmFsaWduICAxOyIKICAgICAgICAgICAgICAgICAgICAgICIubG9uZyAgIDFiOyIKICAg
 ICAgICAgICAgICAgICAgICAgICIucHJldmlvdXM7IgogICAgICAgICAgICAgICAgICAgICAgOiAi
 PXIiIChwKQogICAgICAgICAgICAgICAgICAgICAgOiAiYiIgKHYpLCAiSyIgKCgoLTB4YzAwMDAw
 MDApID4+IDE2KSAmIDB4ZmZmZikpOwoKICAgICAgICByZXR1cm4gcDsKfQpzdGF0aWMgaW5saW5l
 IHZvaWQqIF9fX3ZhKHVuc2lnbmVkIGxvbmcgcCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgdjsK
 ICAgICAgICBhc20gdm9sYXRpbGUgKCIxOiBhZGRpcyAlMCwgJTEsICUyOyIKICAgICAgICAgICAg
 ICAgICAgICAgICIuc2VjdGlvbiBcIi5wdG92X2ZpeHVwXCIsXCJhd1wiOyIKICAgICAgICAgICAg
 ICAgICAgICAgICIuYWxpZ24gIDE7IgogICAgICAgICAgICAgICAgICAgICAgIi5sb25nICAgMWI7
 IgogICAgICAgICAgICAgICAgICAgICAgIi5wcmV2aW91czsiCiAgICAgICAgICAgICAgICAgICAg
 ICA6ICI9ciIgKHYpCiAgICAgICAgICAgICAgICAgICAgICA6ICJiIiAocCksICJLIiAoKCgweGMw
 MDAwMDAwKSA+PiAxNikgJiAweGZmZmYpKTsKCiAgICAgICAgcmV0dXJuICh2b2lkKikgdjsKfQoj
 IDE2MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9hc20vcGFnZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2Vf
 ZmFzdCh2b2lkKTsKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxv
 bmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXplLTEpID4+
 ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAg
 ICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdoaWxlIChz
 aXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoj
 IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyAyMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoKCgoK
 CgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAg
 ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0
 YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1ZV90
 OwojIDcyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwpzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAg
 ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsK
 CgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90
 OwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1
 ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChz
 cGlubG9ja190KSB7IH07CiAgICAgICAgZG8geyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEt
 PnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3
 aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnko
 d2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+
 ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sgPSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3
 YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0
 dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19h
 ZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcp
 CnsKIyAxOTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19s
 aXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dh
 aXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMTUg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT50YXNrX2xpc3Qs
 ICZoZWFkLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfd2FpdF9x
 dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm9sZCkKewoKCgoKCiAg
 ICAgICAgbGlzdF9kZWwoJm9sZC0+dGFza19saXN0KTsKfQojIDEzICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg
 MwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3Zmcy5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMSAzCgoK
 CgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZzaWRfdCBmc2lkX3Q7CgoKCnN0cnVjdCBzdGF0ZnMgewog
 ICAgICAgIGxvbmcgZl90eXBlOwogICAgICAgIGxvbmcgZl9ic2l6ZTsKICAgICAgICBsb25nIGZf
 YmxvY2tzOwogICAgICAgIGxvbmcgZl9iZnJlZTsKICAgICAgICBsb25nIGZfYmF2YWlsOwogICAg
 ICAgIGxvbmcgZl9maWxlczsKICAgICAgICBsb25nIGZfZmZyZWU7CiAgICAgICAgX19rZXJuZWxf
 ZnNpZF90IGZfZnNpZDsKICAgICAgICBsb25nIGZfbmFtZWxlbjsKICAgICAgICBsb25nIGZfc3Bh
 cmVbNl07Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9saW51eC92ZnMuaCIgMiAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
 CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9uZXQuaCIgMSAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKIyAxICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3NvY2tldC5oIiAxIDMKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NvY2tldC5oIiAxIDMKIyA3ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3NvY2tldC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMSAzCiMgMjEgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvc29ja2lvcy5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyAyMiAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
 b2NraW9zLmgiIDIgMwojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc29ja2V0LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWlv
 LmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vpby5oIiAzCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9p
 ZCAqaW92X2Jhc2U7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC9zb2NrZXQuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsK
 CgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWlseTsKICAg
 ICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxf
 b25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hkciB7CiAg
 ICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAgICAgICBz
 dHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfaW92bGVu
 OwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNn
 X2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0
 IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAgICBpbnQg
 Y21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zb2Nr
 ZXQuaCIgMwpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lk
 ICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAg
 c3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIq
 KSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXpl
 b2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVk
 IGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAg
 ICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9f
 cHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVj
 dCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJu
 IF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4s
 IF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAg
 ICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQwICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tl
 dC5oIiAzCmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlYyh1bnNpZ25lZCBjaGFyICprZGF0YSwg
 c3RydWN0IGlvdmVjICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNl
 bmQodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpleHRlcm4gaW50IGNzdW1f
 cGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0YSwKICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlvdmVjICppb3YsCiAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsCiAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIGludCAq
 Y3N1bXApOwoKZXh0ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1zZ2hkciAqbSwgc3RydWN0
 IGlvdmVjICppb3YsIGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0ZXJuIGludCBtZW1jcHlf
 dG9pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnYsIHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsK
 ZXh0ZXJuIHZvaWQgbWVtY3B5X3Rva2VybmVsaW92ZWMoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln
 bmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fdXNlcih2
 b2lkICprYWRkciwgaW50IGtsZW4sIHZvaWQgKnVhZGRyLCBpbnQgKnVsZW4pOwpleHRlcm4gaW50
 IG1vdmVfYWRkcl90b19rZXJuZWwodm9pZCAqdWFkZHIsIGludCB1bGVuLCB2b2lkICprYWRkcik7
 CmV4dGVybiBpbnQgcHV0X2Ntc2coc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUs
 IGludCBsZW4sIHZvaWQgKmRhdGEpOwojIDIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25ldC5oIiAyIDMKCgpzdHJ1Y3Qg
 cG9sbF90YWJsZV9zdHJ1Y3Q7CiMgNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKdHlwZWRlZiBlbnVtIHsK
 ICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NP
 Tk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0YXRlOwojIDY1ICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L25ldC5oIiAzCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNvY2tldF9zdGF0ZSBzdGF0ZTsKCiAg
 ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcHJvdG9fb3BzICpvcHM7
 CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVj
 dCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7CiAgICAgICAgc3RydWN0
 IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIHNob3J0
 IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3JlZDsKfTsKCgoKc3RydWN0IHNjbV9j
 b29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBm
 YW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpi
 aW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAg
 ICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkg
 KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAg
 ICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpz
 b2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsK
 ICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdz
 b2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1l
 KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAg
 ICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVk
 IGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3Ry
 dWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2Nr
 ZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
 Z25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50
 IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3Mp
 OwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu
 dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0
 bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVs
 LCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50
 ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
 bXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQg
 KCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRv
 dGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFw
 KSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVh
 X3N0cnVjdCAqIHZtYSk7Cn07CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50
 IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBw
 cm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBl
 bmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90
 bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShz
 dHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0
 IHNvY2tldCAqc2ssIGludCBob3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVy
 KHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3Rl
 cihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4
 dGVybiBpbnQgc29ja19jcmVhdGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3Ry
 dWN0IHNvY2tldCAqKik7CmV4dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICop
 OwpleHRlcm4gaW50IHNvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIg
 Km0sIGludCBsZW4pOwpleHRlcm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0
 cnVjdCBtc2doZHIgKm0sIGludCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFk
 dl93cml0ZXYoaW50IHR5cGUsIHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZp
 bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMg
 KiBpb3YsIGxvbmcgY291bnQsIGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQo
 dm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lk
 IG5ldF9zcmFuZG9tKHVuc2lnbmVkIGxvbmcpOwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2lvY3RsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvY3RsLmgiIDEgMwojIDUgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvaW9jdGwuaCIgMiAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 ZGNhY2hlLmgiIDEgMwoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW91bnQuaCIgMSAzCiMgMTcgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvbW91bnQuaCIgMwpzdHJ1Y3QgdmZzbW91bnQKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm1u
 dF9tb3VudHBvaW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0
 cnVjdCB2ZnNtb3VudCAqbW50X3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9p
 bnN0YW5jZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfY2xhc2g7CgogICAgICAgIHN0
 cnVjdCBzdXBlcl9ibG9jayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21v
 dW50czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNf
 dCBtbnRfY291bnQ7CiAgICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2
 bmFtZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0OwogICAgICAgIHVpZF90IG1u
 dF9vd25lcjsKfTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQoc3RydWN0
 IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAgKCh2b2lk
 KSBhdG9taWNfaW5jX3JldHVybigoJm1udC0+bW50X2NvdW50KSkpOwogICAgICAgIHJldHVybiBt
 bnQ7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsK
 ICAgICAgICBpZiAobW50KSB7CiAgICAgICAgICAgICAgICBpZiAoKGF0b21pY19kZWNfcmV0dXJu
 KCgmbW50LT5tbnRfY291bnQpKSA9PSAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBw
 cmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tb3VudC5oIiwgNDYpOyBf
 X2FzbV9fIF9fdm9sYXRpbGVfXygiLmxvbmcgMHgwIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0K
 fQojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAzCnN0
 cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAgICB1
 bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRl
 bnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNl
 ZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAgICAg
 IGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0
 OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNo
 KHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVy
 biAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5s
 aW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewog
 ICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18g
 dW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1
 bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAg
 ICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2go
 Km5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoK
 c3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0
 cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfdmZzbW50
 OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
 YWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVj
 dCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsK
 ICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7
 CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBz
 dXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3JlZnRpbWU7CiAgICAg
 ICAgdm9pZCAqIGRfZnNkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVsxNl07Cn07
 CgpzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmRfcmV2YWxpZGF0ZSko
 c3RydWN0IGRlbnRyeSAqLCBpbnQpOwogICAgICAgIGludCAoKmRfaGFzaCkgKHN0cnVjdCBkZW50
 cnkgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9jb21wYXJlKSAoc3RydWN0IGRl
 bnRyeSAqLCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2Rl
 bGV0ZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9yZWxlYXNlKShzdHJ1Y3Qg
 ZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
 IGlub2RlICopOwp9OwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMwpleHRlcm4gc3BpbmxvY2tf
 dCBkY2FjaGVfbG9jazsKIyAxNDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5l
 X18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgm
 ZGNhY2hlX2xvY2spOwogICAgICAgIGxpc3RfZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAg
 ZG8geyAoJmRlbnRyeS0+ZF9oYXNoKS0+bmV4dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRy
 eS0+ZF9oYXNoKS0+cHJldiA9ICgmZGVudHJ5LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAg
 ICBkbyB7IH0gd2hpbGUoMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5h
 bChzdHJ1Y3QgZGVudHJ5ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQt
 PmRfaW5hbWU7Cn0KCgoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAq
 LCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7
 CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qg
 c3RydWN0IHFzdHIgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVy
 X2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5
 ICopOwpleHRlcm4gaW50IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6
 b25lX3N0cnVjdDsKCmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWdu
 ZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoKZXh0ZXJuIHZvaWQgc2hy
 aW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50
 KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUgKik7
 CgoKZXh0ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVj
 dCBkZW50cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1
 bmVfYWxpYXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50cyhz
 dHJ1Y3QgZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZvaWQgZF9yZWhhc2goc3RydWN0IGRlbnRyeSAq
 KTsKIyAyMDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Fk
 ZChzdHJ1Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAg
 ZF9pbnN0YW50aWF0ZShlbnRyeSwgaW5vZGUpOwogICAgICAgIGRfcmVoYXNoKGVudHJ5KTsKfQoK
 CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgoK
 ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBx
 c3RyICopOwoKCmV4dGVybiBpbnQgZF92YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBk
 ZW50cnkgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwoKZXh0ZXJuIGNoYXIgKiBfX2Rf
 cGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICos
 CiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDAgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 ZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0
 IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAgICAgICAg
 aWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVyKSkKCgoKICAgICAgICAgICAgICAgICAg
 ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2Fj
 aGUuaCIsIDI0Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo
 MCk7CgogICAgICAgICAgICAgICAgKCh2b2lkKSBhdG9taWNfaW5jX3JldHVybigoJmRlbnRyeS0+
 ZF9jb3VudCkpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0
 cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MyAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC9kY2FjaGUuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVu
 dHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gbGlzdF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gp
 Owp9CgpleHRlcm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVf
 XyBpbnQgZF9tb3VudHBvaW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy
 biAhbGlzdF9lbXB0eSgmZGVudHJ5LT5kX3Zmc21udCk7Cn0KIyAyMCAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
 IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0LmgiIDEgMwoK
 CgoKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
 dF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNo
 b3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5z
 aWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAg
 ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
 bXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsK
 ICAgICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5vOwogICAgICAgIG1vZGVf
 dCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgdWlkX3Qgc3RfdWlk
 OwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2OwogICAgICAgIG9m
 Zl90IHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAg
 ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9t
 dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBs
 b25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgX191bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9
 OwoKCgpzdHJ1Y3Qgc3RhdDY0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfZGV2Owog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IHN0
 X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIGlu
 dCBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBs
 b25nIGxvbmcgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwogICAg
 ICAgIGxvbmcgbG9uZyBzdF9zaXplOwogICAgICAgIGxvbmcgc3RfYmxrc2l6ZTsKCiAgICAgICAg
 bG9uZyBsb25nIHN0X2Jsb2NrczsKICAgICAgICBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgICAgICBsb25nIHN0X210aW1lOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgICAgICBsb25nIHN0X2N0aW1lOwogICAgICAg
 IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25nIGludCBf
 X3VudXNlZDQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1Owp9OwojIDcgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvc3RhdC5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Nh
 Y2hlLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FjaGUu
 aCIgMiAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEg
 MwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRl
 cm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy
 ICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFy
 ICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNo
 YXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEgMwojIDE4ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2FzbS9zdHJpbmcuaCIgMwpleHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25z
 dCBjaGFyICopOwpleHRlcm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
 ciAqLCBpbnQpOwpleHRlcm4gY2hhciAqIHN0cmNweShjaGFyICosY29uc3QgY2hhciAqKTsKZXh0
 ZXJuIGNoYXIgKiBzdHJuY3B5KGNoYXIgKixjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7
 CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
 c3RyY21wKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cmNhdChj
 aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkICogbWVtc2V0KHZvaWQgKixpbnQsX19r
 ZXJuZWxfc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKiBtZW1jcHkodm9pZCAqLGNvbnN0IHZvaWQgKixf
 X2tlcm5lbF9zaXplX3QpOwpleHRlcm4gdm9pZCAqIG1lbW1vdmUodm9pZCAqLGNvbnN0IHZvaWQg
 KixfX2tlcm5lbF9zaXplX3QpOwpleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosY29uc3Qg
 dm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CmV4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQg
 KixpbnQsX19rZXJuZWxfc2l6ZV90KTsKIyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMiAzCiMgMzMg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiwgY29uc3Qg
 Y2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwoKCgoKCmV4dGVybiBpbnQgc3RybmNtcChjb25zdCBj
 aGFyICosY29uc3QgY2hhciAqLF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIGludCBzdHJuaWNt
 cChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKCgpleHRlcm4g
 Y2hhciAqIHN0cmNocihjb25zdCBjaGFyICosaW50KTsKCgpleHRlcm4gY2hhciAqIHN0cnJjaHIo
 Y29uc3QgY2hhciAqLGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLGNv
 bnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJubGVuKGNvbnN0IGNo
 YXIgKixfX2tlcm5lbF9zaXplX3QpOwojIDcwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiB2
 b2lkICogbWVtc2Nhbih2b2lkICosaW50LF9fa2VybmVsX3NpemVfdCk7CiMgMjQgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 ZnMuaCIgMiAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5o
 IiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIg
 MwpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBsZF9sZTE2KGNvbnN0IHZvbGF0aWxlIHVuc2ln
 bmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgdmFsOwoKICAgICAgICBfX2FzbV9f
 IF9fdm9sYXRpbGVfXyAoImxoYnJ4ICUwLDAsJTEiIDogIj1yIiAodmFsKSA6ICJyIiAoYWRkciks
 ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gdmFsOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2
 b2lkIHN0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGNvbnN0IHVuc2lnbmVk
 IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3RoYnJ4ICUxLDAsJTIiIDog
 Ij1tIiAoKmFkZHIpIDogInIiICh2YWwpLCAiciIgKGFkZHIpKTsKfQoKZXh0ZXJuIF9faW5saW5l
 X18gdW5zaWduZWQgbGRfbGUzMihjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg
 ICAgIHVuc2lnbmVkIHZhbDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsd2JyeCAl
 MCwwLCUxIiA6ICI9ciIgKHZhbCkgOiAiciIgKGFkZHIpLCAibSIgKCphZGRyKSk7CiAgICAgICAg
 cmV0dXJuIHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBzdF9sZTMyKHZvbGF0aWxlIHVu
 c2lnbmVkICphZGRyLCBjb25zdCB1bnNpZ25lZCB2YWwpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s
 YXRpbGVfXyAoInN0d2JyeCAlMSwwLCUyIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSwgInIi
 IChhZGRyKSk7Cn0KIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVv
 cmRlci9iaWdfZW5kaWFuLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFu
 LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEgMwojIDEzMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9i
 eXRlb3JkZXIvc3dhYi5oIiAzCmV4dGVybiBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zz
 d2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiAoeyBfX3UxNiBfX3RtcCA9ICh4KSA7ICh7
 IF9fdTE2IF9feCA9IChfX3RtcCk7ICgoX191MTYpKCAoKChfX3UxNikoX194KSAmIChfX3UxNikw
 eDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KShfX3gpICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkp
 OyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7
 CiAgICAgICAgcmV0dXJuIGxkX2xlMTYoeCk7Cn0KZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3
 YWIxNnMoX191MTYgKmFkZHIpCnsKICAgICAgICBzdF9sZTE2KGFkZHIsKmFkZHIpOwp9CgpleHRl
 cm4gX19pbmxpbmVfXyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9fdTMyIHgpCnsKICAgICAg
 ICByZXR1cm4gKHsgX191MzIgX190bXAgPSAoeCkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAo
 KF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
 KChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9f
 eCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMy
 KTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191
 MzIgX19zd2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIGxkX2xlMzIoeCk7Cn0KZXh0
 ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIgKmFkZHIpCnsKICAgICAgICBzdF9s
 ZTMyKGFkZHIsKmFkZHIpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9f
 ZnN3YWI2NChfX3U2NCB4KQp7CgoKCgoKICAgICAgICByZXR1cm4gKHsgX191NjQgX190bXAgPSAo
 eCkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShf
 X3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9f
 dTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0
 KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwg
 KF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwg
 OCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxM
 KSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAw
 MDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAw
 MDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZm
 MDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwoKfQpleHRlcm4gX19pbmxpbmVf
 XyBfX3U2NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAgICByZXR1cm4gKHsgX191NjQgX190
 bXAgPSAoKih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgo
 KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9f
 dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDAp
 IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkg
 PDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAw
 MFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAw
 MDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBm
 ZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw
 eDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
 X3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwp9CmV4dGVybiBf
 X2lubGluZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFk
 ZHIpID0gKHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7ICh7IF9fdTY0IF9feCA9IChfX3Rt
 cCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAw
 MDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAw
 MDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
 MHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAo
 X191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194
 KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0
 KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgo
 KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9f
 dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYp
 ICkpOyB9KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19l
 bmRpYW4uaCIgMiAzCiMgNjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19lbmRpYW4uaCIgMwojIDEg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMSAzCiMgMTUwICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRl
 ci9nZW5lcmljLmgiIDMKZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0
 b25sKF9fdTMyKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQg
 c2hvcnQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9y
 dCBpbnQpOwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFuLmgiIDIgMwojIDg0ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2FzbS9ieXRlb3JkZXIuaCIgMiAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5oIiAyIDMKIyAzMiAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
 c20vYml0b3BzLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9s
 YXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZDsKICAgICAgICB1
 bnNpZ25lZCBsb25nIG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgKnAgPSAoKHVuc2lnbmVkIGxvbmcgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19h
 c21fXyBfX3ZvbGF0aWxlX18oIlxuIgoiMToJbHdhcngJJTAsMCwlM1xuIgoiCW9yCSUwLCUwLCUy
 XG4iCiIJc3R3Y3guCSUwLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCks
 ICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAg
 ICA6ICJjYyIgKTsKfQoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5y
 LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8
 PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n
 ICopYWRkcikgKyAobnIgPj4gNSk7CgogICAgICAgICpwIHw9IG1hc2s7Cn0KCgoKCgoKCnN0YXRp
 YyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikK
 ewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9
 IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWduZWQg
 bG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
 XG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMCwlMCwlMlxuIgoiCXN0d2N4LgklMCww
 LCUzXG4iCiIJYm5lLQkxYiIKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPW0iICgqcCkKICAgICAg
 ICA6ICJyIiAobWFzayksICJyIiAocCksICJtIiAoKnApCiAgICAgICAgOiAiY2MiKTsKfQoKc3Rh
 dGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRk
 cikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFz
 ayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWdu
 ZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
 XygiXG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJeG9yCSUwLCUwLCUyXG4iCiIJc3R3Y3guCSUw
 LDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9bSIgKCpwKQogICAg
 ICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIpOwp9CgoK
 CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxl
 IHZvaWQgKmFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgb2xkLCB0OwogICAgICAgIHVuc2ln
 bmVkIGludCBtYXNrID0gMSA8PCAobnIgJiAweDFmKTsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25l
 ZCBpbnQgKnAgPSAoKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKWFkZHIpICsgKG5yID4+IDUpOwoK
 ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIlxuIgoiMToJbHdhcngJJTAsMCwlNFxuIgoi
 CW9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAg
 ICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDogInIiICht
 YXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAg
 ICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
 X190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKewogICAgICAg
 IHVuc2lnbmVkIGxvbmcgbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQg
 bG9uZyAqcCA9ICgodW5zaWduZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgb2xkID0gKnA7CgogICAgICAgICpwID0gb2xkIHwgbWFzazsKICAgICAgICBy
 ZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2Fu
 ZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWdu
 ZWQgaW50IG9sZCwgdDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDEgPDwgKG5yICYgMHgx
 Zik7CiAgICAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICpwID0gKCh2b2xhdGlsZSB1bnNpZ25l
 ZCBpbnQgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
 ICJcbiIKIjE6CWx3YXJ4CSUwLDAsJTRcbiIKIglhbmRjCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUx
 LDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAo
 dCksICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAg
 ICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAw
 Owp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5y
 LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8
 PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n
 ICopYWRkcikgKyAobnIgPj4gNSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGQgPSAqcDsKCiAg
 ICAgICAgKnAgPSBvbGQgJiB+bWFzazsKICAgICAgICByZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7
 Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9s
 YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIHVuc2lnbmVkIGludCBvbGQsIHQ7CiAgICAgICAg
 dW5zaWduZWQgaW50IG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHZvbGF0aWxlIHVu
 c2lnbmVkIGludCAqcCA9ICgodm9sYXRpbGUgdW5zaWduZWQgaW50ICopYWRkcikgKyAobnIgPj4g
 NSk7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiXG4iCiIxOglsd2FyeAklMCwwLCU0
 XG4iCiIJeG9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAg
 ICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDog
 InIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsK
 CiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CiMgMTkzICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMu
 aCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9iaXQoaW50IG5yLCBfX2NvbnN0X18gdm9s
 YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBpbnQgKnAgPSAo
 X19jb25zdF9fIHVuc2lnbmVkIGludCAqKSBhZGRyOwoKICAgICAgICByZXR1cm4gKChwW25yID4+
 IDVdID4+IChuciAmIDB4MWYpKSAmIDEpICE9IDA7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
 X19pbG9nMih1bnNpZ25lZCBpbnQgeCkKewogICAgICAgIGludCBsejsKCiAgICAgICAgYXNtICgi
 Y250bHp3ICUwLCUxIiA6ICI9ciIgKGx6KSA6ICJyIiAoeCkpOwogICAgICAgIHJldHVybiAzMSAt
 IGx6Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmZ6KHVuc2lnbmVkIGludCB4KQp7CiAgICAg
 ICAgaWYgKCh4ID0gfngpID09IDApCiAgICAgICAgICAgICAgICByZXR1cm4gMzI7CiAgICAgICAg
 cmV0dXJuIF9faWxvZzIoeCAmIC14KTsKfQojIDIyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKc3RhdGlj
 IF9faW5saW5lX18gaW50IGZmcyhpbnQgeCkKewogICAgICAgIHJldHVybiBfX2lsb2cyKHggJiAt
 eCkgKyAxOwp9CiMgMjQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyB1bnNp
 Z25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdCh2b2lkICogYWRkciwKICAgICAgICB1bnNpZ25l
 ZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgaW50
 ICogcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICB1
 bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAgdW5zaWduZWQgaW50
 IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAgICAgICAgcmV0dXJu
 IHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0ICY9IDMxVUw7CiAg
 ICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gKnArKzsKICAgICAgICAg
 ICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQpOwogICAgICAgICAgICAgICAgaWYgKHNp
 emUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9maXJzdDsKICAgICAg
 ICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZv
 dW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUgLT0gMzI7CiAgICAgICAgICAgICAgICBy
 ZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChzaXplID49IDMyKSB7CiAgICAg
 ICAgICAgICAgICBpZiAoKHRtcCA9ICpwKyspICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAg
 ICAgZ290byBmb3VuZF9taWRkbGU7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAg
 ICAgICAgICAgICBzaXplIC09IDMyOwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAg
 ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIHRtcCA9ICpwOwpmb3VuZF9maXJzdDoK
 ICAgICAgICB0bXAgfD0gfjBVTCA8PCBzaXplOwogICAgICAgIGlmICh0bXAgPT0gfjBVTCkKICAg
 ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBzaXplOwpmb3VuZF9taWRkbGU6CiAgICAgICAg
 cmV0dXJuIHJlc3VsdCArIGZmeih0bXApOwp9CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0
 aWMgX19pbmxpbmVfXyBpbnQgZXh0Ml90ZXN0X2JpdChpbnQgbnIsIF9fY29uc3RfXyB2b2lkICog
 YWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBjaGFyICpBRERSID0gKF9fY29uc3Rf
 XyB1bnNpZ25lZCBjaGFyICopIGFkZHI7CgogICAgICAgIHJldHVybiAoQUREUltuciA+PiAzXSA+
 PiAobnIgJiA3KSkgJiAxOwp9CiMgMzA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxp
 bmVfXyB1bnNpZ25lZCBsb25nIGV4dDJfZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsCiAg
 ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogICAgICAg
 IHVuc2lnbmVkIGludCAqcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1
 KTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAg
 dW5zaWduZWQgaW50IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAg
 ICAgICAgcmV0dXJuIHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0
 ICY9IDMxVUw7CiAgICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gX19z
 d2FiMzJwKChwKyspKTsKICAgICAgICAgICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQp
 OwogICAgICAgICAgICAgICAgaWYgKHNpemUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAg
 Z290byBmb3VuZF9maXJzdDsKICAgICAgICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAg
 ICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUg
 LT0gMzI7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdo
 aWxlIChzaXplID49IDMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHRtcCA9IF9fc3dhYjMycCgo
 cCsrKSkpICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9taWRkbGU7
 CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgICAgICAgICBzaXplIC09IDMy
 OwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVz
 dWx0OwogICAgICAgIHRtcCA9IF9fc3dhYjMycCgocCkpOwpmb3VuZF9maXJzdDoKICAgICAgICB0
 bXAgfD0gfjBVIDw8IHNpemU7CiAgICAgICAgaWYgKHRtcCA9PSB+MFVMKQogICAgICAgICAgICAg
 ICAgcmV0dXJuIHJlc3VsdCArIHNpemU7CmZvdW5kX21pZGRsZToKICAgICAgICByZXR1cm4gcmVz
 dWx0ICsgZmZ6KHRtcCk7Cn0KIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKCnN0cnVjdCBwb2xsX3Rh
 YmxlX3N0cnVjdDsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBmaWxlc19zdGF0X3N0cnVj
 dCB7CiAgICAgICAgaW50IG5yX2ZpbGVzOwogICAgICAgIGludCBucl9mcmVlX2ZpbGVzOwogICAg
 ICAgIGludCBtYXhfZmlsZXM7Cn07CmV4dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmls
 ZXNfc3RhdDsKCnN0cnVjdCBpbm9kZXNfc3RhdF90IHsKICAgICAgICBpbnQgbnJfaW5vZGVzOwog
 ICAgICAgIGludCBucl91bnVzZWQ7CiAgICAgICAgaW50IGR1bW15WzVdOwp9OwpleHRlcm4gc3Ry
 dWN0IGlub2Rlc19zdGF0X3QgaW5vZGVzX3N0YXQ7CgpleHRlcm4gaW50IG1heF9zdXBlcl9ibG9j
 a3MsIG5yX3N1cGVyX2Jsb2NrczsKZXh0ZXJuIGludCBsZWFzZXNfZW5hYmxlLCBkaXJfbm90aWZ5
 X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwojIDEgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 YXNtL3NlbWFwaG9yZS5oIiAxIDMKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDMKIyAxICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMu
 MS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyIDMK
 CgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBhdG9t
 aWNfdCB3YWtpbmc7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA0NyAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9hc20vc2VtYXBob3JlLmgiIDMKZXh0ZXJuIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0
 IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CiAgICAgICAgYXRvbWljX3NldCgmc2VtLT5jb3Vu
 dCwgdmFsKTsKICAgICAgICBhdG9taWNfc2V0KCZzZW0tPndha2luZywgMCk7CiAgICAgICAgaW5p
 dF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGlu
 aXRfTVVURVggKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0s
 IDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWF9MT0NLRUQgKHN0cnVjdCBzZW1h
 cGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0sIDApOwp9CgpleHRlcm4gdm9pZCBf
 X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX2ludGVycnVw
 dGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX3RyeWxvY2so
 c3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9y
 ZSAqIHNlbSk7CgpleHRlcm4gaW5saW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2Vt
 KQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfcmV0dXJuKCZzZW0tPmNvdW50KSA+PSAwKQogICAg
 ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJlaWVpbyIgOiA6IDogIm1lbW9yeSIp
 OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9fZG93bihzZW0pOwp9CgpleHRlcm4gaW5s
 aW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAg
 ICAgIGludCByZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291
 bnQpID49IDApCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6
 IDogOiAibWVtb3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3du
 X2ludGVycnVwdGlibGUoc2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5l
 IGludCBkb3duX3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCBy
 ZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291bnQpID49IDAp
 CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6IDogOiAibWVt
 b3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3duX3RyeWxvY2so
 c2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0
 IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3luYyIg
 OiA6IDogIm1lbW9yeSIpOwogICAgICAgIGlmIChhdG9taWNfaW5jX3JldHVybigmc2VtLT5jb3Vu
 dCkgPD0gMCkKICAgICAgICAgICAgICAgIF9fdXAoc2VtKTsKfQoKCgoKc3RydWN0IHJ3X3NlbWFw
 aG9yZQp7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIGludCByZCwgd3I7CiAgICAg
 ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyAxMzcgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5o
 IiAzCmV4dGVybiBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
 bSkKewogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBzZW0tPnJkID0gc2VtLT53ciA9
 IDA7CiAgICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKCgoKCmV4
 dGVybiB2b2lkIGRvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKZXh0ZXJu
 IHZvaWQgZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKCmV4dGVybiBp
 bmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
 OwoKICAgICAgICBkbyB7IGludF9jb250cm9sLmludF9jbGkoKTsgKHZvaWQpKCZzZW0tPmxvY2sp
 OyB9IHdoaWxlICgwKTsKICAgICAgICBpZiAoc2VtLT53cikKICAgICAgICAgICAgICAgIGRvd25f
 cmVhZF9mYWlsZWQoc2VtKTsKICAgICAgICBzZW0tPnJkKys7CiAgICAgICAgZG8geyBkbyB7IH0g
 d2hpbGUoMCk7IGludF9jb250cm9sLmludF9zdGkoKTsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiBp
 bmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
 IDsKCiAgICAgICAgKHZvaWQpKCZzZW0tPmxvY2spOwogICAgICAgIGlmKHNlbS0+cmQgfHwgc2Vt
 LT53cikKICAgICAgICAgICAgICAgIGRvd25fd3JpdGVfZmFpbGVkKHNlbSk7CiAgICAgICAgc2Vt
 LT53ciA9IDE7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CiMgMjAwICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi
 IDIgMwoKCmV4dGVybiB2b2lkIHVwZGF0ZV9hdGltZSAoc3RydWN0IGlub2RlICopOwoKCmV4dGVy
 biB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBpbm9kZV9pbml0
 KHVuc2lnbmVkIGxvbmcpOwojIDIyOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBidWZmZXJfaGVh
 ZCB7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVk
 IGxvbmcgYl9ibG9ja25yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1
 bnNpZ25lZCBzaG9ydCBiX2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9t
 aWNfdCBiX2NvdW50OwogICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9u
 ZyBiX3N0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0
 cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk
 ICpiX3ByZXZfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwog
 ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVm
 ZmVyX2hlYWQgKipiX3BwcmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0
 IHBhZ2UgKmJfcGFnZTsKICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVh
 ZCAqYmgsIGludCB1cHRvZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1
 bnNpZ25lZCBsb25nIGJfcnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7
 CgogICAgICAgIHN0cnVjdCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
 ZCBiX2lub2RlX2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3Qg
 YnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBi
 dWZmZXJfaGVhZCAqLCBiaF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI3NCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o
 IiAzCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVj
 dCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGlw
 ZV9mc19pLmgiIDEgMwoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2FpdF9x
 dWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVkIGlu
 dCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBp
 bnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwogICAgICAg
 IHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHJfY291
 bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQxICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bp
 cGVfZnNfaS5oIiAzCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVj
 dCBpbm9kZSogcGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjgwICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz
 LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvbWluaXhfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IG1pbml4
 X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGkxX2Rh
 dGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9
 OwojIDI4MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIiAxIDMK
 IyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMwpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAg
 ICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191
 MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19z
 aXplOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
 ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
 MiBub3RfdXNlZF8xOwogICAgICAgIF9fdTMyIGlfYmxvY2tfZ3JvdXA7CiAgICAgICAgX191MzIg
 aV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwogICAg
 ICAgIF9fdTMyIGlfcHJlYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19jb3Vu
 dDsKICAgICAgICBfX3UzMiBpX2hpZ2hfc2l6ZTsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsK
 fTsKIyAyODIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMSAz
 CgoKCnN0cnVjdCBocGZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3By
 aXZhdGU7CiAgICAgICAgaW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5v
 OwogICAgICAgIHVuc2lnbmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAg
 ICAgICAgdW5zaWduZWQgaV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwog
 ICAgICAgIHVuc2lnbmVkIGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAg
 ICAgICB1bnNpZ25lZCBpX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7
 CiAgICAgICAgdW5zaWduZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lk
 IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
 b3JlIGlfc2VtOwogICAgICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI4MyAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxIDMKCgoKCnN0cnVjdCBudGZz
 X2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5cGVkZWYgdTggbnRmc191ODsK
 dHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNfdTMyOwp0eXBlZGVmIHU2NCBu
 dGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMxNiBudGZzX3MxNjsKdHlwZWRl
 ZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoKCgoKdHlwZWRlZiBfX2tlcm5l
 bF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRmc191aWRfdDsKCgoKdHlwZWRl
 ZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBudGZzX3NpemVf
 dDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1
 bnNpZ25lZCBzaG9ydCBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
 ZyBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgbnRmc190aW1l
 NjRfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IG50ZnNfY2x1c3Rlcl90OwoKCgpzdHJ1Y3Qg
 bnRmc19pbm9kZV9pbmZvewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAg
 ICAgc3RydWN0IG50ZnNfc2JfaW5mbyAqdm9sOwogICAgICAgIGludCBpX251bWJlcjsKICAgICAg
 ICB1bnNpZ25lZCBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciogYXR0cjsK
 ICAgICAgICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0
 dHJzOwogICAgICAgIGludCByZWNvcmRfY291bnQ7CgoKICAgICAgICBpbnQgKnJlY29yZHM7CiAg
 ICAgICAgdW5pb257CiAgICAgICAgICAgICAgICBzdHJ1Y3R7CiAgICAgICAgICAgICAgICAgICAg
 ICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlcnNf
 cGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH1pbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjg0
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxIDMKCgoKCgoK
 CnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2
 YXRlOwogICAgICAgIGludCBpX3N0YXJ0OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAg
 IGludCBpX2F0dHJzOwogICAgICAgIGludCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0
 aW9uOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxp
 c3RfaGVhZCBpX2ZhdF9oYXNoOwp9OwojIDI4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3Vtc2Rvc19mc19pLmgiIDEgMwojIDM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDMKc3Ry
 dWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAg
 ICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAg
 ICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3Ry
 dWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tp
 bmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lz
 X2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAyODYgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
 MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9pc29fZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsK
 ICAgICAgICB1bnNpZ25lZCBpbnQgaV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hh
 ciBpX2ZpbGVfZm9ybWF0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3NlY3Rpb25faW5v
 OwogICAgICAgIG9mZl90IGlfc2VjdGlvbl9zaXplOwp9OwojIDI4NyAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
 IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uZnMuaCIg
 MSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvbmZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5o
 IiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMwplbnVtIHJwY19hdXRoX2Zs
 YXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVMTCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9
 IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQgPSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMs
 CiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwKfTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAg
 ICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBDX1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlf
 c3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NFUFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5J
 RUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRfc3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAw
 LAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwgPSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENI
 ID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFWQUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9B
 UkdTID0gNCwKICAgICAgICBSUENfU1lTVEVNX0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9z
 dGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0ggPSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0g
 MQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsKICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAg
 ICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0g
 MiwKICAgICAgICBSUENfQVVUSF9CQURWRVJGID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RF
 RFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRIX1RPT1dFQUsgPSA1Cn07CiMgMTEgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 bmZzLmgiIDIgMwojIDQxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mcy5oIiAzCiBlbnVtIG5mc19zdGF0IHsKICAgICAg
 ICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9QRVJNID0gMSwKICAgICAgICBORlNFUlJfTk9F
 TlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUsCiAgICAgICAgTkZTRVJSX05YSU8gPSA2LAog
 ICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAgICAgICBORlNFUlJfQUNDRVMgPSAxMywKICAg
 ICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAgICBORlNFUlJfWERFViA9IDE4LAogICAgICAg
 IE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5GU0VSUl9OT1RESVIgPSAyMCwKICAgICAgICBO
 RlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNFUlJfSU5WQUwgPSAyMiwKICAgICAgICBORlNF
 UlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9OT1NQQyA9IDI4LAogICAgICAgIE5GU0VSUl9S
 T0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5LID0gMzEsCiAgICAgICAgTkZTRVJSX09QTk9U
 U1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1FVE9PTE9ORyA9IDYzLAogICAgICAgIE5GU0VS
 Ul9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VSUl9EUVVPVCA9IDY5LAogICAgICAgIE5GU0VS
 Ul9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9SRU1PVEUgPSA3MSwKICAgICAgICBORlNFUlJf
 V0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JBREhBTkRMRSA9IDEwMDAxLAogICAgICAgIE5G
 U0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAgIE5GU0VSUl9CQURfQ09PS0lFID0gMTAwMDMs
 CiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAwNCwKICAgICAgICBORlNFUlJfVE9PU01BTEwg
 PSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVSRkFVTFQgPSAxMDAwNiwKICAgICAgICBORlNF
 UlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5GU0VSUl9KVUtFQk9YID0gMTAwMDgKIH07CgoK
 CmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5PTiA9IDAsCiAgICAgICAgTkZSRUcgPSAxLAog
 ICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJMSyA9IDMsCiAgICAgICAgTkZDSFIgPSA0LAog
 ICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNPQ0sgPSA2LAogICAgICAgIE5GQkFEID0gNywK
 ICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0cnVjdCBuZnNfZmggewogICAgICAgIHVuc2ln
 bmVkIHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhWzY0XTsKfTsKIyAxMDcg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvbmZzLmgiIDMKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAgIE5GU19VTlNU
 QUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZTX0ZJTEVfU1lO
 QyA9IDIKfTsKIyA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIgMwoKCgoKc3RydWN0IG5mc19pbm9k
 ZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmc2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoK
 CiAgICAgICAgc3RydWN0IG5mc19maCBmaDsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxh
 Z3M7CiMgNDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
 ZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAg
 X191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2F0aW1lOwog
 ICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRy
 dGltZW87CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAg
 ICAgICAgX191MzIgY29va2lldmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBy
 ZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3Rf
 aGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAg
 IHVuc2lnbmVkIGludCBucmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGly
 dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hf
 bmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAg
 IHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47Cn07CiMgOTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwpz
 dHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwogICAgICAgIHUzMiBmbGFn
 czsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjg4ICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi
 IDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEgMwoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9k
 ZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjg5ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDEgMwoKCgojIDEgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x
 L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMSAzCiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvbGludXgvYS5v
 dXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvYXNtL2Eub3V0LmgiIDEgMwoKCgoKCgoKc3RydWN0IGV4ZWMKewogIHVu
 c2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2RhdGE7
 CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50cnk7
 CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNpemU7Cn07CiMgMTggIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x
 L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMiAzCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAg
 TV9PTERTVU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoK
 ICBNX1NQQVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBT
 MiA9IDE1Mgp9OwojIDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvbGliL2dj
 Yy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9saW51eC9hLm91dC5oIiAzCnN0cnVjdCBu
 bGlzdCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25l
 eHQ7CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAg
 Y2hhciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07
 CiMgMjQ0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dl
 cnBjLWxpbnV4LzMuMS9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDMKc3RydWN0IHJlbG9jYXRpb25f
 aW5mbwp7CgogIGludCByX2FkZHJlc3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsK
 CgoKICB1bnNpZ25lZCBpbnQgcl9wY3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7
 CgoKCgoKCiAgdW5zaWduZWQgaW50IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCBy
 X3BhZDo0OwoKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Rp
 bWUuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjIHsKICAgICAg
 ICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
 aW1lLmgiIDMKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZm
 aWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9
 IHZhbHVlLT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAg
 ICAgIGlmIChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICBy
 ZXR1cm4gKCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAg
 LSAxOwogICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEw
 MCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1l
 c3BlYyh1bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAg
 ICAgICB2YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAvIDEw
 MCk7CiAgICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC90aW1lLmgiIDMKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQg
 aW50IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5z
 aWduZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNl
 YykKewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAg
 IG1vbiArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAg
 IHJldHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVh
 ci8xMDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAg
 ICAgICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAg
 ICkqNjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAg
 ICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3Ry
 dWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6
 X2RzdHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2
 YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7
 CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWUoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZv
 aWQgKCpkb19nZXRfZmFzdF90aW1lKShzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxMjEgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 dGltZS5oIiAzCnN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf
 aW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0
 aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3Ry
 dWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMiAzCgoK
 CgpzdHJ1Y3Qga2V5X2NhY2hlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBrY19scnVfdGltZTsK
 ICAgICAgICBzMzIga2NfZmlyc3Q7CiAgICAgICAgczMyIGtjX2xhc3Q7CiAgICAgICAgczMyIGtj
 X3RoaXNfa2V5OwogICAgICAgIGludCBrY190aGlzX3NlcTsKICAgICAgICBzMzIga2NfbmV4dF9r
 ZXk7CiAgICAgICAgczMyIGtjX2tleXNbNzNdOwp9OwoKCgpzdHJ1Y3QgZXh0X2NhY2hlIHsKICAg
 ICAgICBzdHJ1Y3Qga2V5X2NhY2hlIGtjWzRdOwogICAgICAgIHMzMiBlY1soKDFVTCA8PCAxMikg
 LSA0ICogc2l6ZW9mKHN0cnVjdCBrZXlfY2FjaGUpIC0gNCkgLyA0XTsKICAgICAgICBpbnQgbWF4
 X2V4dDsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxv
 bmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICBzMzIgaV9wYXJl
 bnQ7CiAgICAgICAgczMyIGlfb3JpZ2luYWw7CiAgICAgICAgczMyIGlfZGF0YVsxNl07CiAgICAg
 ICAgc3RydWN0IGV4dF9jYWNoZSAqaV9lYzsKICAgICAgICBpbnQgaV9jYWNoZV91c2VyczsKICAg
 ICAgICBpbnQgaV9sYXN0YmxvY2s7CiAgICAgICAgc2hvcnQgaV9wYV9jbnQ7CiAgICAgICAgc2hv
 cnQgaV9wYV9uZXh0OwogICAgICAgIHNob3J0IGlfcGFfbGFzdDsKICAgICAgICBzaG9ydCBpX3pv
 bmU7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2hsaW5rOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
 aV9wYWQ7Cn07CiMgMjkwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2ku
 aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMwpzdHJ1Y3QgdWZzX2lub2RlX2luZm8g
 ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAg
 ICAgICAgICAgICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAg
 X191NjQgaV9zaXplOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47
 CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAg
 IF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2
 IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAyOTEgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMu
 aCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNf
 aS5oIiAzCnR5cGVkZWYgaW50MzJfdCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNf
 aW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNo
 YXIgcmF3WzhdOwogICAgICAgIHN0cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNp
 Z25lZCBpbnQgZXhfbWFnaWM6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoy
 NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAg
 ICAgIHVuc2lnbmVkIGludCBleF9vZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4
 dGVudDsKCnR5cGVkZWYgc3RydWN0IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAg
 IHVuc2lnbmVkIGludCBuZGV2Owp9IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsK
 ICAgICAgICB1X3Nob3J0IGRpX21vZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAg
 dV9zaG9ydCBkaV91aWQ7CiAgICAgICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBk
 aV9zaXplOwogICAgICAgIGludDMyX3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGlt
 ZTsKICAgICAgICBpbnQzMl90IGRpX2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAg
 ICAgICBzaG9ydCBkaV9udW1leHRlbnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAg
 ICAgIHVfY2hhciBkaV9zcGFyZTsKICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAg
 ICAgIGVmc19leHRlbnQgZGlfZXh0ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBk
 aV9kZXY7CiAgICAgICAgfSBkaV91Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAg
 ICAgaW50IG51bWV4dGVudHM7CiAgICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19l
 eHRlbnQgZXh0ZW50c1sxMl07Cn07CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvY29kYV9mc19pLmgiIDEgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAzCiMgMSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC9jb2RhLmgiIDEgMwojIDEwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1bnNpZ25l
 ZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgdmVu
 dXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVuc2ln
 bmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgICAg
 IHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07Cn07
 CiMgMTk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlwZWRl
 ZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9sb25n
 IEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJZCBW
 b2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VGaWQ7
 CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAqZmlk
 KQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
 ICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZm
 ZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQtPlVu
 aXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKGZp
 ZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQojIDIz
 MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVf
 aW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29kYV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQs
 IGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwogICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2Vn
 aWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoKCgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9O
 LCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZDSFIsIENfVkxOSywgQ19WU09DSywgQ19WRklG
 TywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwog
 ICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAgICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2
 dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxl
 aWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsKICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsK
 ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj
 IHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xv
 bmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9mbGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9y
 ZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVzOwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVy
 ZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMgewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAg
 IGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3QgZl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmls
 ZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMgMzM1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1
 Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBs
 b25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9y
 dCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hk
 ciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwog
 ICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAg
 c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2Rh
 X3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29w
 ZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
 aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
 X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3Qg
 Y29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG
 aWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0
 IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0
 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBs
 ZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3Rs
 X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRy
 X3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p
 bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7
 CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsK
 fTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
 CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0
 IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
 dWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
 aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAg
 c3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4g
 ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5h
 bWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVj
 dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoK
 CnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW
 aWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAg
 ICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAg
 ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNv
 ZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBj
 b2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0
 IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1
 Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQg
 c291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0
 IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVj
 dCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
 IHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50
 IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
 dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p
 bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwog
 ICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFf
 b3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7
 Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
 ICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0
 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtf
 aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
 IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoK
 c3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07
 CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
 ICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVj
 dCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoK
 CnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
 Y2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
 dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2lu
 X2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAg
 IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7
 Cn07CiMgNTkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsK
 ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07
 CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
 CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAg
 c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0
 IGNvZGFfemFwdm5vZGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1
 Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1
 cmdlZmlkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2Rh
 RmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9yZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
 aGRyIG9oOwogICAgVmljZUZpZCBOZXdGaWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1
 Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
 Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0
 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgZmQ7Cn07CgoKc3RydWN0IGNv
 ZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
 aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQg
 ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1
 Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0
 IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0
 IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNjc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp1bmlvbiBpbnB1
 dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Blbl9p
 biBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9jbG9zZV9pbiBjb2RhX2Nsb3NlOwogICAgc3Ry
 dWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfaW4g
 Y29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAg
 ICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nlc3M7CiAgICBzdHJ1Y3QgY29kYV9sb29r
 dXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7
 CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9yZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9s
 aW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2RhX3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsK
 ICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRp
 cl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFfc3ltbGlua19pbiBjb2RhX3N5bWxpbms7
 CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNv
 ZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0
 OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1
 Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k
 YV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBvdXRwdXRBcmdzIHsKICAgIHN0cnVj
 dCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9yb290X291dCBjb2RhX3Jvb3Q7CiAg
 ICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9v
 dXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsK
 ICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9j
 cmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtk
 aXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgY29kYV9yZWFkbGluazsKICAgIHN0cnVj
 dCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQg
 Y29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCBjb2RhX3phcGZpbGU7
 CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFfemFwZGlyOwogICAgc3RydWN0IGNvZGFf
 emFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQg
 Y29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsK
 ICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVj
 dCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k
 YV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5pb24gY29kYV9kb3duY2FsbHMgewoKCiAg
 ICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdldXNlcjsKICAgIHN0cnVjdCBjb2RhX3ph
 cGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IHphcGRpcjsKICAg
 IHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdl
 ZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07
 CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAgICBjYWRkcl90IGluLCBvdXQ7CiAgICAg
 ICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBvdXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9j
 dGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRoOwogICAgICAgIGludCBmb2xsb3c7CiAg
 ICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3NjcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY29kYS5oIiAzCnN0
 cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBm
 ZDsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMiAzCgoKCgoKc3RydWN0IGNvZGFfaW5v
 ZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAgdV9zaG9ydCBj
 X2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY192b2xyb290bGlzdDsKICAgICAgICBz
 dHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIHN0cnVjdCBpbm9kZSAqY192bm9kZTsK
 ICAgICAgICB1bnNpZ25lZCBpbnQgY19jb250Y291bnQ7CiAgICAgICAgc3RydWN0IGNvZGFfY3Jl
 ZCBjX2NhY2hlZF9jcmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NhY2hlZF9wZXJtOwogICAg
 ICAgIGludCBjX21hZ2ljOwp9OwoKCgoKCgoKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5v
 ZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKaW50IGNvZGFf
 Y25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpz
 Yik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBzdHJ1Y3Qg
 c3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9kZSAqLCBW
 aWNlRmlkICosIFZpY2VGaWQgKik7CiMgMjkzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvcm9tZnNfZnNfaS5oIiAxIDMKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRh
 b2Zmc2V0Owp9OwojIDI5NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2Zz
 LmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAg
 ICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKc3RydWN0IHNobWVtX2lub2Rl
 X2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIG1h
 eF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgc3dwX2Vu
 dHJ5X3QgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAg
 ICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnN0cnVjdCBz
 aG1lbV9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9ibG9ja3M7CiAgICAgICAg
 dW5zaWduZWQgbG9uZyBmcmVlX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbm9k
 ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX2lub2RlczsKICAgICAgICBzcGlubG9ja190
 IHN0YXRfbG9jazsKfTsKIyAyOTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJf
 ZnNfaS5oIiAxIDMKIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAzCnN0cnVjdCBzbWJfaW5vZGVf
 aW5mbyB7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAgICAgICBfX3UxNiBmaWxl
 aWQ7CiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNjZXNzOwogICAgICAgIF9f
 dTE2IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsKfTsKIyAyOTYgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIiAxIDMKIyAxOSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o
 ZnNfZnNfaS5oIiAzCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoK
 ICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0
 X2VudHJ5ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBp
 bnQgY29udmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9z
 aXplOwoKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91
 dDsKICAgICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0
 el9zZWNvbmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkg
 KiwgY29uc3QgaW5vX3QpOwp9OwojIDI5NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L2FkZnNfZnNfaS5oIiAxIDMKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIgMwpzdHJ1Y3QgYWRm
 c19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAg
 IHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwogICAgICAgIF9fdTMyIGxvYWRhZGRyOwogICAgICAg
 IF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBmaWxldHlwZTsKICAgICAgICB1
 bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBpbnQgc3RhbXBlZDoxOwp9OwojIDI5OCAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAxIDMKIyAxNCAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9x
 bng0X2ZzX2kuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMSAzCiMgMTUgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 cW54dHlwZXMuaCIgMwp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFu
 eDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50X2JsazsKICAg
 ICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRf
 bW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdp
 ZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54NF9ubGlua190
 OwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyIDMKCgoKCnN0cnVjdCBxbng0X2lub2RlX2lu
 Zm8gewogICAgICAgIGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3Np
 emU7CiAgICAgICAgcW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJs
 azsKICAgICAgICBfX3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAg
 X19zMzIgaV9hdGltZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRf
 dCBpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9t
 dWlkX3QgaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlu
 a190IGlfbmxpbms7CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90
 IGlfdHlwZTsKICAgICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11
 X3ByaXZhdGU7Cn07CiMgMjk5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2Vy
 ZnNfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg
 cmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3Zl
 cnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i
 eXRlOwoKCgoKCgoKICBzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0ICppX2NvbnZlcnRlZF9wYWdl
 IDsKCgoKCgoKICBpbnQgaV9jb252ZXJzaW9uX3RyYW5zX2lkIDsKIyA1MyAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZWlz
 ZXJmc19mc19pLmgiIDMKICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICBpbnQgaV9wcmVhbGxvY19j
 b3VudDsKCgoKCiAgaW50IG5vcGFjazsKfTsKIyAzMDAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9iZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAzCnN0cnVj
 dCBiZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rza19pbm87CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBpX3NibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZWJsb2Nr
 Owp9OwojIDMwMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEg
 MwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIF9f
 dTMyIGxvZ2ljYWxCbG9ja051bTsKICAgICAgICBfX3UxNiBwYXJ0aXRpb25SZWZlcmVuY2VOdW07
 Cn0gbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91YXRp
 bWU7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwoKICAgICAg
 ICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAgX191NjQgaV91bmlxdWU7CiAgICAgICAgX191
 MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBpX2xlbkFsbG9jOwogICAgICAgIF9fdTMyIGlf
 bmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAg
 ICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRf
 ZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWdu
 ZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMg
 MzAyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIgMSAzCiMgMTcg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvbmNwX2ZzX2kuaCIgMwpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9f
 dTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NE
 aXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9f
 YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1
 Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBp
 bnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9f
 KChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9f
 KChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBh
 Y2tlZCkpOwp9OwojIDMwMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnNf
 aS5oIiAxIDMKc3RydWN0IHByb2NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
 dWN0ICp0YXNrOwogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
 ICAgIGludCAoKnByb2NfZ2V0X2xpbmspKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICoq
 LCBzdHJ1Y3QgdmZzbW91bnQgKiopOwogICAgICAgICAgICAgICAgaW50ICgqcHJvY19yZWFkKShz
 dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKnBhZ2UpOwogICAgICAgIH0gb3A7CiAgICAg
 ICAgc3RydWN0IGZpbGUgKmZpbGU7Cn07CiMgMzA0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvdXNiZGV2X2ZzX2kuaCIgMSAzCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1Y3QgdXNiX2J1
 czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBk
 bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVuaW9uIHsKICAg
 ICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAgICAgICBzdHJ1
 Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMDUgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
 CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC92ZXJzaW9u
 LmgiIDEgMwojIDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIiAyIDMKCnN0cnVjdCBqZmZzMl9pbm9k
 ZV9pbmZvIHsKCgoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIHVp
 bnQzMl90IGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcg
 KmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0
 YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBz
 dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKICAgICAgICB1aW50MTZfdCBmbGFn
 czsKICAgICAgICB1aW50OF90IHVzZXJjb21wcjsKCgoKfTsKIyAzMDYgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIg
 MiAzCiMgMzMyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlh
 X3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAg
 ICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1l
 X3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzU2
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2ZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDEgMwojIDQyICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L3F1b3RhLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2Vycm5v
 LmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIg
 MiAzCiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJl
 ZV9kcXVvdHM7CmV4dGVybiBpbnQgbWF4X2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3Nx
 dWFzaDsKIyAxMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHFibGsgewogICAgICAgIF9f
 dTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAgICAg
 IF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAgICAg
 ICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsKICAg
 ICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMgMTQx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L3F1b3RhLmgiIDMKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1
 cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191
 MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh
 dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j
 czsKfTsKIyAxNjcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0
 cnVjdCBkcXVvdCAqZHFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKipkcV9wcHJldjsKICAg
 ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ZyZWU7CiAgICAgICAgc3RydWN0IGRxdW90ICpkcV9o
 YXNoX25leHQ7CiAgICAgICAgc3RydWN0IGRxdW90ICoqZHFfaGFzaF9wcHJldjsKICAgICAgICB3
 YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0OwogICAgICAgIGludCBkcV9jb3VudDsKCgogICAgICAg
 IHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lkOwog
 ICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAgICAgICBzaG9y
 dCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7CgogICAgICAg
 IHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKCgoKCnN0
 cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29w
 ZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAg
 ICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwogICAgICAg
 IGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcHJlcGFyZV93
 cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsK
 ICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICos
 IHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0cnVjdCBhZGRyZXNz
 X3NwYWNlICosIGxvbmcpOwp9OwoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVj
 dCBsaXN0X2hlYWQgY2xlYW5fcGFnZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9w
 YWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNp
 Z25lZCBsb25nIG5ycGFnZXM7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9u
 cyAqYV9vcHM7CiAgICAgICAgc3RydWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9h
 cmVhX3N0cnVjdCAqaV9tbWFwOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFw
 X3NoYXJlZDsKICAgICAgICBzcGlubG9ja190IGlfc2hhcmVkX2xvY2s7Cn07CgpzdHJ1Y3QgYmxv
 Y2tfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRv
 bWljX3QgYmRfY291bnQ7CgogICAgICAgIGRldl90IGJkX2RldjsKICAgICAgICBhdG9taWNfdCBi
 ZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAq
 YmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07Cn07CgpzdHJ1Y3QgaW5vZGUg
 ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
 YWQgaV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0
 cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
 aW5vOwogICAgICAgIGF0b21pY190IGlfY291bnQ7CiAgICAgICAga2Rldl90IGlfZGV2OwogICAg
 ICAgIHVtb2RlX3QgaV9tb2RlOwogICAgICAgIG5saW5rX3QgaV9ubGluazsKICAgICAgICB1aWRf
 dCBpX3VpZDsKICAgICAgICBnaWRfdCBpX2dpZDsKICAgICAgICBrZGV2X3QgaV9yZGV2OwogICAg
 ICAgIGxvZmZfdCBpX3NpemU7CiAgICAgICAgdGltZV90IGlfYXRpbWU7CiAgICAgICAgdGltZV90
 IGlfbXRpbWU7CiAgICAgICAgdGltZV90IGlfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp
 X2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1bnNpZ25l
 ZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAgICAg
 IHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29wZXJhdGlv
 bnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgICAgICAg
 c3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGlfd2Fp
 dDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVjdCBhZGRy
 ZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRh
 OwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKICAgICAgICBzdHJ1Y3QgcGlwZV9p
 bm9kZV9pbmZvICppX3BpcGU7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqaV9iZGV2OwoK
 ICAgICAgICB1bnNpZ25lZCBsb25nIGlfZG5vdGlmeV9tYXNrOwogICAgICAgIHN0cnVjdCBkbm90
 aWZ5X3N0cnVjdCAqaV9kbm90aWZ5OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc3RhdGU7Cgog
 ICAgICAgIHVuc2lnbmVkIGludCBpX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9zb2Nr
 OwoKICAgICAgICBhdG9taWNfdCBpX3dyaXRlY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGlf
 YXR0cl9mbGFnczsKICAgICAgICBfX3UzMiBpX2dlbmVyYXRpb247CiAgICAgICAgdW5pb24gewog
 ICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X2lub2RlX2luZm8gbWluaXhfaTsKICAgICAgICAg
 ICAgICAgIHN0cnVjdCBleHQyX2lub2RlX2luZm8gZXh0Ml9pOwogICAgICAgICAgICAgICAgc3Ry
 dWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19p
 bm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZv
 IG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gdW1zZG9z
 X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8gaXNvZnNfaTsKICAgICAg
 ICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAgICAgICAgICAgICAgIHN0
 cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNf
 aW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX2lub2RlX2luZm8g
 dWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2luZm8gZWZzX2k7CiAgICAg
 ICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19pOwogICAgICAgICAgICAg
 ICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAgICAgICAgICAgIHN0cnVj
 dCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9pbm9k
 ZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX2lub2RlX2luZm8gaGZz
 X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIGFkZnNfaTsKICAgICAg
 ICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwogICAgICAgICAgICAgICAg
 c3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAgICAgICAgICAgICAgIHN0
 cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfaW5v
 ZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3BfaW5vZGVfaW5mbyBuY3Bm
 c19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5mbyBwcm9jX2k7CiAgICAg
 ICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAgICAgICAgICAgc3RydWN0
 IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMy
 X2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNfaXA7CiAg
 ICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAgICBpbnQgcGlkOwogICAg
 ICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9OwoKc3RydWN0IGZpbGUg
 ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAgIHN0cnVjdCBkZW50cnkg
 KmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNtbnQ7CiAgICAgICAgc3Ry
 dWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNfdCBmX2NvdW50OwogICAg
 ICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBmX21vZGU7CiAgICAgICAg
 bG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFkYSwgZl9yYW1heCwgZl9y
 YWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93bl9zdHJ1Y3QgZl9vd25l
 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAgICAgIGludCBmX2Vycm9y
 OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAgICAgIHZvaWQgKnByaXZh
 dGVfZGF0YTsKfTsKZXh0ZXJuIHNwaW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGlu
 dCBpbml0X3ByaXZhdGVfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7
 CiMgNTIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmbF9v
 d25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqZmxf
 bmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAgc3RydWN0IGxp
 c3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwogICAgICAgIHVu
 c2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxfd2FpdDsKICAg
 ICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX2ZsYWdz
 OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3QgZmxfc3RhcnQ7
 CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlmeSkoc3RydWN0
 IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3QgZmlsZV9sb2Nr
 ICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sgKik7CgogICAg
 ICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAgICAgICB1bmlvbiB7CiAg
 ICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAgfSBmbF91
 Owp9OwojIDU1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVf
 bG9ja19saXN0OwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2ZjbnRs
 LmgiIDEgMwojIDc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2FzbS9mY250bC5oIiAzCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hv
 cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7
 CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxv
 Y2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAg
 ICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBs
 X3BpZDsKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIgMwojIDU1OSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
 IDMKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7
 CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVj
 dCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVj
 dCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNp
 Z25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9j
 ayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0
 IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1v
 dmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3Jl
 bW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4
 X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50
 IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2ln
 bmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Jsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAq
 LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3Ry
 dWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu
 b2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShz
 dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwg
 bG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93
 cml0ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsK
 CnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZh
 X2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVj
 dCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3Ry
 dWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBr
 aWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZv
 aWQgX19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1
 Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3Ry
 dWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNp
 Z25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90
 YV9tb3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3Ry
 dWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3Nl
 bTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4
 cGlyZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNx
 dWFzaFsyXTsKfTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9taW5peF9mc19zYi5oIiAxIDMKCgoKCgoK
 c3RydWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
 b25nIHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256
 b25lczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tz
 OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAg
 ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAg
 ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAg
 ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAg
 ICAgICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19u
 YW1lbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAg
 ICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAg
 ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAg
 ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAg
 ICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAg
 ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAg
 IHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2MjUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
 MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9leHQyX2ZzX3NiLmgiIDEgMwojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIg
 MwpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19zaXpl
 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdz
 X3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsKICAg
 ICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs
 b25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50Owog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBs
 b25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwog
 ICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3QgYnVm
 ZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVk
 X2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tfYml0
 bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsKICAg
 ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1bnNp
 Z25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
 X2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRf
 b3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwogICAg
 ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
 c19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19k
 ZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAgaW50
 IHNfZmlyc3RfaW5vOwp9OwojIDYyNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hw
 ZnNfZnNfc2IuaCIgMSAzCgoKCnN0cnVjdCBocGZzX3NiX2luZm8gewogICAgICAgIGlub190IHNi
 X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9i
 aXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3RhcnQ7CiAgICAgICAgdW5zaWdu
 ZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2RtYXA7CiAgICAgICAgdW5z
 aWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZV9kbm9kZXM7CiAgICAg
 ICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsKICAgICAgICB1bW9kZV90IHNi
 X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgc2Jf
 ZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwogICAgICAgIHVuc2lnbmVkIHNi
 X2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNlIDogMTsKICAgICAgICB1bnNp
 Z25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVkIHNiX2Noa2RzayA6IDI7CiAg
 ICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2lu
 b2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNiX2lnZXRfcTsKICAgICAgICB1
 bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVuc2lnbmVkICpzYl9ibXBfZGly
 OwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
 IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9jcmVhdGlvbl9kZV9sb2NrIDog
 MTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2MjcgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
 CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEgMwoKCgpzdHJ1Y3QgbnRmc19zYl9pbmZvewoK
 ICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90IGdpZDsKICAgICAgICBu
 dG1vZGVfdCB1bWFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgbmN0OwogICAgICAgIHZvaWQgKm5s
 c19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKCiAgICAgICAgbnRmc19zaXplX3QgcGFy
 dGl0aW9uX2JpYXM7CgogICAgICAgIG50ZnNfdTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwog
 ICAgICAgIG50ZnNfdTMyIGF0X2F0dHJpYnV0ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2Zp
 bGVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZz
 X3UzMiBhdF9zZWN1cml0eV9kZXNjcmlwdG9yOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9u
 YW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZz
 X3UzMiBhdF9kYXRhOwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRm
 c191MzIgYXRfaW5kZXhfYWxsb2NhdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAg
 ICAgICAgbnRmc191MzIgYXRfc3ltbGluazsKCiAgICAgICAgaW50IGJsb2Nrc2l6ZTsKICAgICAg
 ICBpbnQgY2x1c3RlcmZhY3RvcjsKICAgICAgICBpbnQgY2x1c3RlcnNpemU7CiAgICAgICAgaW50
 IG1mdF9yZWNvcmRzaXplOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAg
 ICAgICBpbnQgaW5kZXhfcmVjb3Jkc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVy
 X3JlY29yZDsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXI7CgogICAgICAgIHVuc2lnbmVkIGNoYXIg
 Km1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNlOwogICAgICAgIHVuc2lnbmVkIGlu
 dCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRfaW5v
 OwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdG1pcnI7CiAgICAgICAgc3RydWN0
 IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7
 Cn07CiMgNjI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfc2IuaCIg
 MSAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMSAzCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQK
 eyBpbnQgY3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBs
 b25nIGZsYWdzOwogIGludCAoKmRldGVjdF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwog
 IGludCAoKm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwog
 IGludCAoKnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVm
 ZmVyX2hlYWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7
 CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sq
 c2IsaW50IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAq
 c2Isc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0
 eSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 IHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3Ry
 dWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZm
 ZXJfaGVhZCAqYmgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpj
 dmZfaXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVh
 ZCAqYmgpOwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
 LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAg
 ICBpbnQgbmJyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
 YmhbMzJdKTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQg
 bnIsaW50IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9j
 ayAqc2Isc3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkg
 KHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVh
 ZCkgKCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3Qg
 KCpjdmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
 bG9mZl90ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2Fy
 ZWFfc3RydWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
 Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVj
 dCBwYWdlICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwg
 c3RydWN0IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
 Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1
 Y3QgaW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0
 cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0
 cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3Vu
 dF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Js
 b2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0
 c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tc2Rv
 c19mc19zYi5oIiAyIDMKCgoKCgpzdHJ1Y3QgZmF0X21vdW50X29wdGlvbnMgewogICAgICAgIHVp
 ZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
 ZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAq
 aW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNp
 Z25lZCBjaGFyIGNvbnZlcnNpb247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAg
 ICAgICAgICBzaG93ZXhlYzoxLAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAg
 ICAgICAgICAgICAgICBkb3RzT0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAg
 ICAgICAgICAgICB1dGY4OjEsCiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAg
 ICAgICAgICAgICAgIHBvc2l4ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAg
 ICAgICAgICAgICAgYXRhcmk6MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAg
 ICAgICAgIG5vY2FzZToxOwp9OwoKc3RydWN0IHZmYXRfdW5pY29kZSB7CiAgICAgICAgdW5zaWdu
 ZWQgY2hhciB1bmkxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5pMjsKfTsKCnN0cnVjdCBtc2Rv
 c19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAg
 dW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxm
 YXRfYml0czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBmYXRfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAg
 ICAgIHVuc2lnbmVkIHNob3J0IGRpcl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0
 YV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVk
 IGxvbmcgcm9vdF9jbHVzdGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX29mZnNldDsK
 ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmYXRfd2FpdDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
 b3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1
 c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAg
 c3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
 X2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQg
 KmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwojIDYyOSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9m
 cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb2Zz
 X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7
 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQg
 bG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAg
 ICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3Jv
 Y2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25l
 ZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1
 bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAg
 ICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAgICAgIG1vZGVfdCBzX21vZGU7CiAgICAg
 ICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgc3RydWN0IG5sc190
 YWJsZSAqc19ubHNfaW9jaGFyc2V0Owp9OwojIDYzMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L25mc19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAg
 IHN0cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBy
 cGNfb3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAg
 ICAgICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAg
 ICAgICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwog
 ICAgICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47
 CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rp
 cm1pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50
 IG5hbWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVx
 bGlzdCAqIHJ3X3JlcXVlc3RzOwp9OwoKCgoKc3RydWN0IG5mc19zYl9pbmZvIHsKICAgICAgICBz
 dHJ1Y3QgbmZzX3NlcnZlciBzX3NlcnZlcjsKfTsKIyA2MzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
 MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9zeXN2X2ZzX3NiLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIg
 MwpzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHsKICAgICAgICBpbnQgc190eXBlOwogICAgICAgIHVuc2ln
 bmVkIGludCBzX2Jsb2NrX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfc2l6ZV8x
 OwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2NrX3NpemVfYml0czsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgc19ibG9ja19zaXplX2luY19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2Nr
 X3NpemVfZGVjX2JpdHM7CiAgICAgICAgY2hhciBzX2NvbnZlcnQ7CiAgICAgICAgY2hhciBzX2ts
 dWRnZV9zeW1saW5rczsKICAgICAgICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qg
 c19saW5rX21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAg
 ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBp
 bnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl
 cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzE7CiAgICAgICAg
 dW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz
 X2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf
 MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJfYml0czsKICAgICAgICB1
 bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5k
 X3Blcl9ibG9ja19ibG9ja19zaXplXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9i
 bG9ja19ibG9ja19zaXplX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9j
 a18yX2Jsb2NrX3NpemVfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf
 YmxvY2tfc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZDBfc2l6ZTsKICAgICAg
 ICB1bnNpZ25lZCBpbnQgc19pbmQxX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kMl9z
 aXplOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7CiAg
 ICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
 ZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAgICAg
 Y2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUxNiAqc19zYl9m
 aWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpzX3Ni
 X3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl9mbGNfY291bnQ7CiAgICAgICAg
 dTMyICpzX3NiX2ZsY19ibG9ja3M7CiAgICAgICAgdTMyICpzX3NiX3RvdGFsX2ZyZWVfYmxvY2tz
 OwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUzMiAqc19zYl9zdGF0ZTsKCgogICAg
 ICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUzMiBzX2ZpcnN0ZGF0YXpvbmU7CiAg
 ICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19uZGF0YXpvbmVzOwogICAgICAgIHUz
 MiBzX256b25lczsKfTsKIyA2MzIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZz
 X2ZzX3NiLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgYWZmc19i
 bV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJtX2JoOwogICAgICAgIHMzMiBi
 bV9maXJzdGJsazsKICAgICAgICBzMzIgYm1fa2V5OwogICAgICAgIGludCBibV9jb3VudDsKfTsK
 CnN0cnVjdCBhZmZzX2FsbG9jX3pvbmUgewogICAgICAgIHNob3J0IGF6X3NpemU7CiAgICAgICAg
 c2hvcnQgYXpfY291bnQ7CiAgICAgICAgaW50IGF6X2ZyZWU7Cn07CgpzdHJ1Y3QgYWZmc196b25l
 IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHpfaW5vOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2lu
 Zm8gKnpfYm07CiAgICAgICAgaW50IHpfc3RhcnQ7CiAgICAgICAgaW50IHpfZW5kOwogICAgICAg
 IGludCB6X2F6X25vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgel9scnVfdGltZTsKfTsKCnN0cnVj
 dCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAgICAgIGlu
 dCBzX2Jsa3NpemU7CiAgICAgICAgczMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNo
 c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgczE2IHNfdWlkOwog
 ICAgICAgIHMxNiBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsKICAgICAgICBpbnQgc19y
 ZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBz
 dHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICBpbnQgc19ibV9jb3VudDsKICAg
 ICAgICBpbnQgc19uZXh0em9uZTsKICAgICAgICBpbnQgc19udW1fYXo7CiAgICAgICAgc3RydWN0
 IGFmZnNfem9uZSAqc196b25lczsKICAgICAgICBzdHJ1Y3QgYWZmc19hbGxvY196b25lICpzX2Fs
 bG9jOwogICAgICAgIGNoYXIgKnNfem9uZW1hcDsKICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAg
 ICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAgIGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDYz
 MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAxIDMKIyAxNyAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC91ZnNfZnNfc2IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEgMwojIDI0OCAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC91ZnNfZnMuaCIgMwpzdHJ1Y3QgdWZzX3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2
 X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewog
 ICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9u
 IHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgc3RydWN0
 IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAg
 ICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBk
 X3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewog
 ICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJmcmVlOwogICAgICAgIF9f
 dTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZz
 X3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3Js
 aW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAg
 ICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBf
 X3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIg
 ZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwog
 ICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3Uz
 MiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAgICBfX3UzMiBmc19taW5m
 cmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAg
 ICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191
 MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNf
 bWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJh
 Z3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXpl
 OwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAg
 ICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3Uz
 MiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAgICAgdW5pb24gewogICAg
 ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBz
 ZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
 ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0g
 ZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsK
 ICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoK
 ICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAg
 IF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIg
 ZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoK
 ICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMy
 IGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9f
 czggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7
 CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAg
 ICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBf
 X3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBm
 c19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
 ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAg
 ICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAg
 IF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
 c3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAg
 ICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBm
 c19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
 X3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Jl
 Y2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAg
 ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAg
 ICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz
 X3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAg
 c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwog
 ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAg
 ICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAg
 ICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
 bWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1sy
 XTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAg
 ICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAg
 ICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19z
 MzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZz
 X3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2Vb
 MV07Cn07CiMgNDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAzCnN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3Jv
 dXAgewogICAgICAgIF9fdTMyIGNnX2xpbms7CiAgICAgICAgX191MzIgY2dfbWFnaWM7CiAgICAg
 ICAgX191MzIgY2dfdGltZTsKICAgICAgICBfX3UzMiBjZ19jZ3g7CiAgICAgICAgX191MTYgY2df
 bmN5bDsKICAgICAgICBfX3UxNiBjZ19uaWJsazsKICAgICAgICBfX3UzMiBjZ19uZGJsazsKICAg
 ICAgICBzdHJ1Y3QgdWZzX2NzdW0gY2dfY3M7CiAgICAgICAgX191MzIgY2dfcm90b3I7CiAgICAg
 ICAgX191MzIgY2dfZnJvdG9yOwogICAgICAgIF9fdTMyIGNnX2lyb3RvcjsKICAgICAgICBfX3Uz
 MiBjZ19mcnN1bVsoODE5MiAvIDEwMjQpXTsKICAgICAgICBfX3UzMiBjZ19idG90b2ZmOwogICAg
 ICAgIF9fdTMyIGNnX2JvZmY7CiAgICAgICAgX191MzIgY2dfaXVzZWRvZmY7CiAgICAgICAgX191
 MzIgY2dfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjZ19uZXh0ZnJlZW9mZjsKICAgICAgICB1bmlv
 biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
 MiBjZ19jbHVzdGVyc3Vtb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVz
 dGVyb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19uY2x1c3RlcmJsa3M7CiAg
 ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzEzXTsKICAgICAgICAgICAg
 ICAgIH0gY2dfNDQ7CiAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxNl07CiAgICAg
 ICAgfSBjZ191OwogICAgICAgIF9fdTggY2dfc3BhY2VbMV07Cgp9OwoKCgoKc3RydWN0IHVmc19p
 bm9kZSB7CiAgICAgICAgX191MTYgdWlfbW9kZTsKICAgICAgICBfX3UxNiB1aV9ubGluazsKICAg
 ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
 ICAgICBfX3UxNiB1aV9zdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zZ2lk
 OwogICAgICAgICAgICAgICAgfSBvbGRpZHM7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9pbnVt
 YmVyOwogICAgICAgICAgICAgICAgX191MzIgdWlfYXV0aG9yOwogICAgICAgIH0gdWlfdTE7CiAg
 ICAgICAgX191NjQgdWlfc2l6ZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfYXRpbWU7
 CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX210aW1lOwogICAgICAgIHN0cnVjdCB1ZnNf
 dGltZXZhbCB1aV9jdGltZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
 ewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9kYlsxMl07CiAgICAgICAgICAgICAg
 ICAgICAgICAgIF9fdTMyIHVpX2liWzNdOwogICAgICAgICAgICAgICAgfSB1aV9hZGRyOwogICAg
 ICAgICAgICAgICAgX191OCB1aV9zeW1saW5rWzQqKDEyICszKV07CiAgICAgICAgfSB1aV91MjsK
 ICAgICAgICBfX3UzMiB1aV9mbGFnczsKICAgICAgICBfX3UzMiB1aV9ibG9ja3M7CiAgICAgICAg
 X191MzIgdWlfZ2VuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
 ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3NoYWRvdzsKICAgICAgICAgICAgICAgICAg
 ICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7
 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX29lZnRmbGFnOwogICAgICAgICAgICAg
 ICAgfSB1aV9zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
 ICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsK
 ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgdWlfc3BhcmVbMl07CiAgICAgICAgICAgICAg
 ICB9IHVpXzQ0OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
 ICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAg
 ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX21vZGVoOwogICAgICAgICAgICAgICAgICAg
 ICAgICBfX3UxNiB1aV9zcGFyZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdHJh
 bnM7CiAgICAgICAgICAgICAgICB9IHVpX2h1cmQ7CiAgICAgICAgfSB1aV91MzsKfTsKIyA1MjQg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvdWZzX2ZzLmgiIDMKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1
 Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxv
 Y2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVk
 IHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNp
 Z25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2lu
 Zm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsK
 ZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2ln
 bmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVy
 YXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3Ry
 dWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAq
 LCB1bnNpZ25lZCBsb25nKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zp
 bGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2Zp
 bGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVm
 c19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2Rl
 KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9k
 ZSAqLCBpbnQsIGludCAqKTsKCgpleHRlcm4gaW50IHVmc19mcmFnX21hcCAoc3RydWN0IGlub2Rl
 ICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4
 dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZz
 X3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB1ZnNfc3luY19p
 bm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1
 Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3Ry
 dWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJf
 aGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsK
 CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0
 ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19mc190eXBlOwpleHRlcm4gdm9pZCB1ZnNf
 d2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
 LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZv
 aWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj
 aGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRl
 cm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNv
 bnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7
 CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4
 dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJh
 dGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRlIChzdHJ1Y3QgaW5vZGUgKik7CiMgMTgg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewog
 ICAgICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAg
 IHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19j
 Z19wcml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwog
 ICAgICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBj
 X25pYmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAg
 ICAgICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3Uz
 MiBjX2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRv
 ZmY7CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7
 CiAgICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9m
 ZjsKICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0
 ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9f
 dTMyIHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJs
 a25vOwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAg
 ICAgICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMy
 IHNfZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAg
 ICAgICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNf
 bWluZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAg
 ICAgICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191
 MzIgc19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19z
 YnNpemU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0Owog
 ICAgICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191
 MzIgc19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJs
 ZWF2ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsK
 ICAgICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBf
 X3UzMiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7
 CiAgICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIg
 c19jcGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJt
 YXNrOwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0
 OwogICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAg
 ICAgX19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9f
 dTMyIHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAg
 ICAgICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAg
 X191MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191
 MzIgc19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5v
 cGY7CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAg
 X191MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMy
 IHNfbWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0
 cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1
 bSAqIHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQg
 c19mbGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3Ry
 dWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19j
 Z25vWzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2ln
 bmVkIHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7
 CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBf
 X3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZz
 X2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZz
 ZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAg
 ICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBm
 c19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAg
 ICAgICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9f
 dTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19i
 bWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAg
 ICAgICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAg
 ICBfX3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9f
 dTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZz
 X2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRp
 cjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAg
 IF9fdTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAg
 IH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
 ICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9
 IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJh
 Y2tza2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsK
 ICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAg
 IF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZz
 X3NwYzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAg
 ICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNf
 Y3N1bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2Ns
 ZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAg
 ICBfX3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19z
 ZWNvbmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3Jv
 dG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3Rl
 cjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07
 CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJs
 WzQ2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
 ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg
 ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw
 YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAg
 ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAg
 ICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg
 ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy
 ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg
 ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg
 ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
 c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK
 ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
 ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAg
 ICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAg
 ICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
 c19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVb
 Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAg
 ICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
 ICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191
 MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7
 CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwog
 ICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjM0
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEgMwojIDI1ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L2Vmc19mc19zYi5oIiAzCnN0cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3Qg
 ZnNfc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19j
 Z2ZzaXplOwogICAgICAgIHNob3J0IGZzX2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9y
 czsKICAgICAgICBzaG9ydCBmc19oZWFkczsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAg
 c2hvcnQgZnNfZGlydHk7CiAgICAgICAgaW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3Qg
 ZnNfbWFnaWM7CiAgICAgICAgY2hhciBmc19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNr
 WzZdOwogICAgICAgIGludDMyX3QgZnNfYm1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7
 CiAgICAgICAgaW50MzJfdCBmc190aW5vZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwog
 ICAgICAgIGludDMyX3QgZnNfcmVwbHNiOwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsK
 ICAgICAgICBjaGFyIGZzX3NwYXJlWzIwXTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9
 OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAg
 ICBpbnQzMl90IGZzX3N0YXJ0OwogICAgICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAg
 aW50MzJfdCB0b3RhbF9ibG9ja3M7CiAgICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAg
 IGludDMyX3QgZGF0YV9mcmVlOwogICAgICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBz
 aG9ydCBpbm9kZV9ibG9ja3M7CiAgICAgICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDYzNSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEgMwoKCgoKCnN0
 cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsK
 IyA2MzYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMSAzCiMg
 MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NtYi5oIiAxIDMKIyAxNCAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9zbWIuaCIgMwplbnVtIHNtYl9wcm90b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09M
 X05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NP
 UkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NP
 TF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5k
 bCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAg
 ICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3Ux
 NiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2NrczsKICAgICAgICBfX3UxNiBibG9ja3Np
 emU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAg
 ICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsK
 ICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3Uz
 MiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsK
 CgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAgX191MTYgbWF4bXV4OwogICAgICAgIF9f
 dTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7
 CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAg
 ICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAg
 ICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsK
 fTsKIyA3OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9zbWIuaCIgMwpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191
 MTYgYXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZf
 bW9kZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAg
 ICAgZ2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3Np
 emU7CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAg
 ICAgdGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAg
 ICAgIENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJ
 RUQKfTsKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMiAzCgoKCgoKCgpzdHJ1Y3Qgc21iX3Ni
 X2luZm8gewogICAgICAgIGVudW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0
 IGZpbGUgKiBzb2NrX2ZpbGU7CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwg
 Km1udDsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWdu
 ZWQgaW50IGdlbmVyYXRpb247CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0
 IHNtYl9jb25uX29wdCBvcHQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAg
 IHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAg
 ICAgIHVuc2lnbmVkIGNoYXIgKiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsK
 ICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoK
 CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3Qgbmxz
 X3RhYmxlICpsb2NhbF9ubHM7CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBp
 bnQgKCpjb252ZXJ0KShjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAg
 ICAgICAgICAgICAgc3RydWN0IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9Owoj
 IDYzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hmc19mc19zYi5oIiAxIDMKIyAx
 NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAo
 Kmhmc19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRl
 ZiB2b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAq
 LCBpbnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5v
 X3QsIGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1h
 Z2ljOwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsK
 CiAgICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50
 IHNfdmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZz
 X25hbWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7Cgog
 ICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qg
 c3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAg
 ICAgX191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlk
 X3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMg
 NjM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxIDMKIyAx
 MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDMKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFk
 ZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZz
 X2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAg
 ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf
 b3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIg
 c19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21h
 cF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQg
 c19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAg
 dW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9
 OwojIDYzOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMSAz
 CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEg
 MwojIDQ1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMwpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAg
 ICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAg
 ICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAg
 ICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3Mz
 MiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0X254dG50X3Qg
 ZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9t
 dWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25s
 aW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5
 cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlu
 a19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9k
 ZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsx
 MF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAg
 ICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAg
 ICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAg
 ICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50
 c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRf
 dCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAg
 c3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9k
 ZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAg
 ICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Fu
 eDRfZnMuaCIgMwpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2Rl
 ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRf
 Y291bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25l
 ZCBsb25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsK
 CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBp
 bnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlu
 b2RlICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpk
 aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2Rl
 X29wZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5v
 ZGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZp
 bGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29w
 ZXJhdGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3Ry
 dWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0
 bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJu
 IGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50
 cnksIGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlu
 b2RlKTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpl
 eHRlcm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpk
 ZW50cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk
 ZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZp
 bGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5v
 ZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0
 IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBj
 cmVhdGUpOwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMiAzCgoKCgoKc3RydWN0IHFueDRf
 c2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7CiAgICAgICAgc3Ry
 dWN0IHFueDRfc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGludCBWZXJzaW9uOwog
 ICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMgNjQwICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvdHF1ZXVlLmgiIDEgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAzCiMgMSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
 c20vYml0b3BzLmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyIDMKIyAxICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9p
 bmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMjAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIgMwojIDM4
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L3RxdWV1ZS5oIiAzCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBs
 aXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAo
 KnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
 cXVldWUuaCIgMwp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVy
 biB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2ssIHRxX2JkZmx1c2g7
 CiMgOTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDMKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1ZXVlX2xvY2s7
 CgoKCgoKc3RhdGljIGlubGluZSBpbnQgcXVldWVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9w
 b2ludGVyLCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAg
 ICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAg
 ICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8geyAoe2ludF9j
 b250cm9sLmludF9zYXZlX2ZsYWdzKCh1bnNpZ25lZCBsb25nICopJmZsYWdzKTtpbnRfY29udHJv
 bC5pbnRfY2xpKCk7fSk7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg
 ICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwogICAg
 ICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGludF9jb250cm9sLmludF9yZXN0b3Jl
 X2ZsYWdzKCh1bnNpZ25lZCBsb25nKWZsYWdzKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
 ICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZv
 aWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9p
 ZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9l
 bXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0K
 IyA5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIgMwojIDI2ICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
 X2ZzX3NiLmgiIDMKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2Nr
 X2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9f
 dTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwojIDQzICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L3JlaXNlcmZzX2ZzX3NiLmgiIDMKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMy
 IHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAg
 X191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRf
 YWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3Np
 emU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2
 IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29k
 ZTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3Zl
 cnNpb247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgY2hhciBzX3VudXNlZFsxMjhdIDsKfSBf
 X2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwoKCgoKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Js
 b2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg
 X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv
 dXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFs
 X3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pv
 dXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9f
 dTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3Ux
 NiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsK
 ICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFw
 X25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsK
 IyAxNDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
 bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z
 aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
 bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7
 CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm
 c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
 KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj
 aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm
 c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s
 aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz
 dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog
 IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln
 bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCgp9
 IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcg
 al9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVu
 IDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBh
 dG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2Rv
 bmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsK
 ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBi
 dWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
 ICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRs
 aXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hl
 YWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3Ry
 dWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2Nr
 cyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJl
 aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5zaWdu
 ZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2ln
 bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9u
 ZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9i
 Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNp
 Z25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpq
 X2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFn
 ZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf
 d2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dh
 aXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAg
 aW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4
 dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVf
 dXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
 b2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
 KmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBq
 X3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsK
 ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgal9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0
 IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pvdXJuYWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlz
 ZXJmc19qb3VybmFsX2Nub2RlICpqX2hhc2hfdGFibGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJm
 c19qb3VybmFsX2Nub2RlICpqX2xpc3RfaGFzaF90YWJsZVs4MTkyXSA7Cgp9OwoKCgoKdHlwZWRl
 ZiBfX3UzMiAoKmhhc2hmX3QpIChjb25zdCBjaGFyICosIGludCk7CgoKc3RydWN0IHJlaXNlcmZz
 X3NiX2luZm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CgoKICAgIHN0cnVjdCBy
 ZWlzZXJmc19zdXBlcl9ibG9jayAqIHNfcnM7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19h
 cF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCAqc19qb3VybmFsIDsKICAgIHVu
 c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CgoKICAgIHZvaWQgKCplbmRfaW9faGFuZGxlciko
 c3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7CiAgICBoYXNoZl90IHNfaGFzaF9mdW5jdGlvbjsK
 CgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsKCgoKCiAgICB3YWl0X3F1ZXVlX2hlYWRf
 dCBzX3dhaXQ7CgogICAgYXRvbWljX3Qgc19nZW5lcmF0aW9uX2NvdW50ZXI7CgoKCiAgICBpbnQg
 c19rbWFsbG9jczsKICAgIGludCBzX2Rpc2tfcmVhZHM7CiAgICBpbnQgc19kaXNrX3dyaXRlczsK
 ICAgIGludCBzX2ZpeF9ub2RlczsKICAgIGludCBzX2RvX2JhbGFuY2U7CiAgICBpbnQgc191bm5l
 ZWRlZF9sZWZ0X25laWdoYm9yOwogICAgaW50IHNfZ29vZF9zZWFyY2hfYnlfa2V5X3JlYWRhOwog
 ICAgaW50IHNfYm1hcHM7CiAgICBpbnQgc19ibWFwc193aXRob3V0X3NlYXJjaDsKICAgIGludCBz
 X2RpcmVjdDJpbmRpcmVjdDsKICAgIGludCBzX2luZGlyZWN0MmRpcmVjdDsKfTsKIyAzNTcgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1
 Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3Ry
 dWN0IHN1cGVyX2Jsb2NrICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNl
 cmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1
 ZmZlcl9oZWFkICpiaCkgOwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2Nr
 ICpzLCBpbnQpIDsKaW50IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNf
 cmVzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNjQxICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEgMwojIDEyICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L2Jmc19mc19zYi5oIiAzCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u
 ZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAgICB1bnNp
 Z25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9mZjsKICAg
 ICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9s
 Zl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hhciAqIHNp
 X2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAgIHN0cnVj
 dCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNjQyICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg
 MwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5o
 IiAzCiNwcmFnbWEgcGFjaygxKQojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIiAzCnN0cnVjdCB1
 ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBfX3UzMiBzX3NwYXJfbG9jWzRdOwogICAgICAgIF9f
 dTggc19zcGFyX3BzaGlmdDsKICAgICAgICBfX3U4IHNfc3Bhcl9pbmRleHNpemU7CiAgICAgICAg
 X191MzIgKnNfc3Bhcl9tYXA7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAg
 ICBfX3U4ICpzX3NwYXJfcmVtYXA4OwogICAgICAgICAgICAgICAgX191MTYgKnNfc3Bhcl9yZW1h
 cDE2OwogICAgICAgICAgICAgICAgX191MzIgKnNfc3Bhcl9yZW1hcDMyOwogICAgICAgIH0gc19z
 cGFyX3JlbWFwOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNf
 bnVtX2VudHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRm
 X3BhcnRfbWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMy
 IGJpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBz
 X3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMyIGJp
 dG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBzX2Zz
 cGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9fdTMyIHNfcGFy
 dGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2
 IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAg
 IHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAgICAgIHN0cnVj
 dCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsK
 ICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBf
 X3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAg
 ICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRm
 X3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAg
 ICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAg
 ICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAgICAgIF9fdTMyIHNfc2Vzc2lvbjsKICAgICAg
 ICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAg
 c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsKCiAgICAgICAgX191MTYgc19sb2FkZWRfYmxv
 Y2tfYml0bWFwczsKICAgICAgICBfX3UzMiBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAg
 ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2Jsb2NrX2JpdG1hcFs4XTsKCgogICAgICAgIG1vZGVf
 dCBzX3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAg
 ICAgICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoK
 CiAgICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAg
 ICAgc3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA2NDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9uY3BfZnNfc2IuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L25jcF9tb3VudC5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwoj
 IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvbmNwLmgiIDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcC5oIiAzCnN0cnVjdCBuY3Bf
 cmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
 KSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
 ICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggdGFz
 ayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0dHJp
 YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18oKHBh
 Y2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsK
 CgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli
 dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
 a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
 ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u
 X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9uX2Nv
 ZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0YXRl
 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0
 ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAgX191
 MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMy
 IHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxvY2tz
 OwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWlsYWJs
 ZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAgIGNo
 YXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3AuaCIgMwpzdHJ1
 Y3QgbndfaW5mb19zdHJ1Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVf
 XygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNr
 ZWQpKTsKICAgICAgICBfX3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
 ICBfX3UzMiBkYXRhU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
 X3UzMiB0b3RhbFN0cmVhbVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
 MTYgbnVtYmVyT2ZTdHJlYW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
 IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVh
 dGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklE
 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRy
 aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9f
 KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tl
 ZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
 OwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
 ICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
 dTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5o
 ZXJpdGVkUmlnaHRzTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk
 aXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVt
 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJp
 YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18o
 KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2Vk
 KSk7CiAgICAgICAgX191MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
 ICAgIF9fdTMyIE5TQ3JlYXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4
 IG5hbWVMZW4gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVb
 MjU2XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi9vcHQvZnNwL2k1ODYtcGMt
 bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwLmgiIDMK
 c3RydWN0IG53X21vZGlmeV9kb3NfaW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0
 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1
 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18o
 KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
 KTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
 ICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
 MzIgbW9kaWZpZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNo
 aXZlRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGlt
 ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0
 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmli
 dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0
 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBf
 X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRy
 aWJ1dGVfXygocGFja2VkKSk7Cn07CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAg
 ICBfX3U4IHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk
 aXJCYXNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9f
 YXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyIDMK
 IyAyNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewogICAg
 ICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgX19r
 ZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7
 CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAgIHVu
 c2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50Owog
 ICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwog
 ICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9t
 b2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9t
 b3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBsb25n
 IGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAgbG9u
 ZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25l
 ZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoKICAg
 ICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJfbW9k
 ZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWduZWQg
 bG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBfX2tl
 cm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2dfcGlk
 OwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf
 b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg
 Y2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7
 CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGZp
 bGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvbmNwX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAgICAgICAgc3Ry
 dWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9fdTggbmFtZV9zcGFjZVso
 NjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsKCiAgICAgICAgdTggc2Vx
 dWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVjdGlvbjsKCiAgICAgICAg
 dTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoKICAgICAgICBpbnQgYnVm
 ZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAgICBpbnQgcGFja2V0X3Np
 emU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAgICAgaW50IGxvY2s7CiAg
 ICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBjdXJyZW50X3NpemU7CiAg
 ICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNwX3JlcGx5X3NpemU7Cgog
 ICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2lnbl93YW50ZWQ7CiAgICAg
 ICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290WzhdOwogICAgICAgIGNo
 YXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQg
 YXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9uYW1lX2xlbjsKICAgICAg
 ICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAgICAgaW50IG9iamVjdF90
 eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHNp
 emVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAgICAgIH0gcHJpdjsKCgog
 ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAgc3RydWN0IG5sc190YWJs
 ZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAgICAgICB1bnNpZ25lZCBp
 bnQgZmxhZ3M7Cn07CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKc3RhdGljIGlubGluZSBp
 bnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHJl
 dHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlubGlu
 ZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewog
 ICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDY0NCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o
 IiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L3VzYmRldl9mc19zYi5oIiAxIDMKc3RydWN0IHVzYmRldl9zYl9p
 bmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0
 X2hlYWQgaWxpc3Q7CiAgICAgICAgdWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsK
 ICAgICAgICB1bW9kZV90IGRldm1vZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdp
 ZF90IGJ1c2dpZDsKICAgICAgICB1bW9kZV90IGJ1c21vZGU7Cn07CiMgNjQ1ICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz
 LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvY29tcGxldGlvbi5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDMKc3RydWN0
 IGNvbXBsZXRpb24gewogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgczsKfTsKIyA5ICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L2pmZnMyX2ZzX3NiLmgiIDIgMwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lci5oIiAxIDMKIyAyMCAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC90aW1lci5oIiAzCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
 ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk
 IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9OwoK
 ZXh0ZXJuIHZvaWQgYWRkX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4g
 aW50IGRlbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKIyA0NSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
 aW1lci5oIiAzCmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25l
 ZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsK
 CnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIp
 CnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAq
 KTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGlt
 ZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2
 b2lkICopMCk7Cn0KIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyIDMKIyAyMiAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC9qZmZzMl9mc19zYi5oIiAzCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
 bXRkX2luZm8gKm10ZDsKCiAgICAgICAgdWludDMyX3QgaGlnaGVzdF9pbm87CiAgICAgICAgdW5z
 aWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdjX3Rhc2s7CiAg
 ICAgICAgc3RydWN0IHNlbWFwaG9yZSBnY190aHJlYWRfc3RhcnQ7CiAgICAgICAgc3RydWN0IGNv
 bXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYWxsb2Nf
 c2VtOwoKCgoKICAgICAgICB1aW50MzJfdCBmbGFzaF9zaXplOwogICAgICAgIHVpbnQzMl90IHVz
 ZWRfc2l6ZTsKICAgICAgICB1aW50MzJfdCBkaXJ0eV9zaXplOwogICAgICAgIHVpbnQzMl90IGZy
 ZWVfc2l6ZTsKICAgICAgICB1aW50MzJfdCBlcmFzaW5nX3NpemU7CiAgICAgICAgdWludDMyX3Qg
 YmFkX3NpemU7CiAgICAgICAgdWludDMyX3Qgc2VjdG9yX3NpemU7CgogICAgICAgIHVpbnQzMl90
 IG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIHVpbnQzMl90IG5yX2VyYXNpbmdfYmxvY2tzOwoKICAg
 ICAgICB1aW50MzJfdCBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sg
 KmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsKCiAg
 ICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVjdCBs
 aXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHZlcnlfZGlydHlf
 bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0
 IGxpc3RfaGVhZCBlcmFzYWJsZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXJhc2Fi
 bGVfcGVuZGluZ193YnVmX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xp
 c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAg
 c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0
 X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAg
 ICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVy
 YXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2Fp
 dDsKCiAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICppbm9jYWNoZV9saXN0WzE0XTsK
 ICAgICAgICBzcGlubG9ja190IGlub2NhY2hlX2xvY2s7CgogICAgICAgIHN0cnVjdCBqZmZzMl9p
 bm9kZV9jYWNoZSAqaW5vY2FjaGVfbGFzdDsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBl
 cmFzZV9mcmVlX3NlbTsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKndidWY7CiAgICAgICAgdWlu
 dDMyX3Qgd2J1Zl9vZnM7CiAgICAgICAgdWludDMyX3Qgd2J1Zl9sZW47CiAgICAgICAgdWludDMy
 X3Qgd2J1Zl9wYWdlc2l6ZTsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHdidWZfdGFzazsKICAg
 ICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB3YnVmX3RpbWVyOwoKCiAgICAgICAgdm9pZCAqb3NfcHJp
 djsKfTsKIyA2NDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBz
 dXBlcl9ibG9ja3M7CgoKc3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
 ZWFkIHNfbGlzdDsKICAgICAgICBrZGV2X3Qgc19kZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
 X2Jsb2Nrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfYmxvY2tzaXplX2JpdHM7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciBzX2xvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2RpcnQ7CiAg
 ICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKICAgICAgICBzdHJ1Y3Qgc3Vw
 ZXJfb3BlcmF0aW9ucyAqc19vcDsKICAgICAgICBzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyAqZHFf
 b3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
 c19tYWdpYzsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpzX3Jvb3Q7CiAgICAgICAgd2FpdF9xdWV1
 ZV9oZWFkX3Qgc193YWl0OwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAg
 ICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNl
 ICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX21vdW50czsKICAgICAgICBzdHJ1
 Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg
 ICAgICAgICBzdHJ1Y3QgbWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0
 cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3Ni
 X2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19z
 YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAg
 ICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBz
 dHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2Jf
 aW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3Ni
 OwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAg
 ICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2ht
 ZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZv
 IHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwog
 ICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAg
 IHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0
 X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZv
 IHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsK
 ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAg
 ICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jk
 ZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9p
 bmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAg
 fSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzEx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2xpbnV4L2ZzLmgiIDMKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3Bh
 dGhfc2VtOwp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
 Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBz
 dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAq
 LCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0
 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
 dmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
 KTsKZXh0ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7
 CmV4dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK
 ZXh0ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0
 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDc0NSAiL29wdC9mc3AvaTU4Ni1wYy1s
 aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5
 cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBvZmZfdCwg
 aW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAg
 ICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBp
 bnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
 dCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNp
 Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwog
 ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9v
 cGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3Qg
 KCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAo
 KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAg
 IHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs
 b2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwg
 ZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwg
 c3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0
 IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAg
 ICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
 KTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog
 ICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFz
 ZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykg
 KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBp
 bnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9j
 aykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6
 ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu
 ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmls
 ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwp9OwoK
 c3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBp
 bm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxv
 b2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGlu
 aykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg
 ICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAg
 ICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBj
 aGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
 eSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVu
 dHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
 eSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
 Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
 Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBj
 aGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwg
 c3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5v
 ZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
 ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAo
 KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQg
 KCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3Ry
 dWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0
 IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5v
 ZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2Rl
 ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
 ICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAo
 KmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVy
 KSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0
 cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAo
 c3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBz
 dXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
 Kiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1
 cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkg
 KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1
 cGVyX2Jsb2NrICopOwp9OwojIDgzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiB2b2lkIF9fbWFy
 a19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h
 cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k
 ZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p
 bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
 ZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0
 eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5
 KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpp
 bml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkg
 KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxvY19ibG9jaykgKGNvbnN0IHN0cnVj
 dCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBpbnQgKCphbGxvY19pbm9k
 ZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgq
 ZnJlZV9ibG9jaykgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAg
 ICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n
 KTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy
 ICopOwp9OwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKm5h
 bWU7CiAgICAgICAgaW50IGZzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqKCpy
 ZWFkX3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KTsKICAgICAgICBz
 dHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW50Owog
 ICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKfTsKIyA4OTUgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 ZnMuaCIgMwpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVt
 X3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5
 c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJuX21vdW50KHN0cnVjdCBm
 aWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gdm9pZCBrZXJuX3Vtb3VudChzdHJ1Y3QgdmZzbW91
 bnQgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBs
 b25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQg
 Kik7CgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qg
 c3RhdGZzICopOwojIDkxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0
 b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2Fy
 ZWEoaW50LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90LCBzaXplX3QpOwoj
 IDkyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9mcy5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9sb2Nr
 ZWQoc3RydWN0IGlub2RlICppbm9kZSkKewoKCgoKCgogICAgICAgIGlmICgoKChpbm9kZSktPmlf
 c2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAx
 MCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9s
 b2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nr
 c192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0ZSwgc3RydWN0IGlub2RlICppbm9kZSwKICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBv
 ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCkK
 ewoKCgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNf
 ZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09
 IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKHJl
 YWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAgICAgICByZXR1cm4gMDsK
 fQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAq
 aW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpm
 aWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qgc2l6ZSkKewoK
 CgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNfZmxh
 Z3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAw
 MDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKAogICAg
 ICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAgICAgICAgICAgICAgICAg
 ICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlfc2l6ZSwKICAgICAgICAg
 ICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5vZGUtPmlfc2l6ZSAtIHNp
 emUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2RlLT5pX3NpemUpCiAgICAg
 ICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpleHRlcm4gaW5saW5lIGludCBnZXRf
 bGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1vZGUpCnsKCgoKCgoKICAg
 ICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKGlub2RlLT5pX2Zsb2NrLT5mbF9mbGFncyAmIDMy
 KSkKICAgICAgICAgICAgICAgIHJldHVybiBfX2dldF9sZWFzZShpbm9kZSwgbW9kZSk7CiAgICAg
 ICAgcmV0dXJuIDA7Cn0KCgoKIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7
 CiBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0
 cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9v
 cGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlf
 b3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50
 IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICog
 Z2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNp
 Z25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVW
 X1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hh
 ciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdp
 c3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJs
 b2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBiZHB1dChzdHJ1Y3QgYmxvY2tf
 ZGV2aWNlICopOwpleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
 ZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzOwpleHRl
 cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3Rs
 X2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7
 CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5z
 aWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICos
 IGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0
 X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWdu
 ZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBp
 bnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4g
 aW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNv
 bnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1l
 KGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZv
 aWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4
 dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19i
 YWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
 cmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9f
 Zm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVy
 biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZp
 bGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
 b25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qg
 c3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBh
 Z2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQg
 KiBidWYpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW8oc3RydWN0IGJ1ZmZlcl9o
 ZWFkICpiaCkgOwojIDEwNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgbWFy
 a19idWZmZXJfdXB0b2RhdGUoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAg
 ICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKICAg
 ICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKfQoK
 CgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hl
 YWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
 ZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlm
 ICh0ZXN0X2FuZF9jbGVhcl9iaXQoMSwgJihiaCktPmJfc3RhdGUpKQogICAgICAgICAgICAgICAg
 X19tYXJrX2J1ZmZlcl9jbGVhbihiaCk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19i
 dWZmZXJfcHJvdGVjdGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZWZpbGVf
 YnVmZmVyKGJoKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3Byb3RlY3RlZChz
 dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCg2
 LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX3Byb3RlY3Rl
 ZChiaCk7Cn0KCmV4dGVybiB2b2lkIF9fbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9o
 ZWFkICpiaCk7CmV4dGVybiB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVh
 ZCAqYmgpOwojIDEwOTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVy
 X0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJf
 Y2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCmV4dGVybiB2b2lk
 IGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp
 bm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0cnVj
 dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJrX2J1
 ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShiaCwgaW5v
 ZGUpOwp9CgpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KGtkZXZfdCk7CmV4dGVybiBpbnQgY2hl
 Y2tfZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlcyhzdHJ1
 Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMoc3Ry
 dWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0
 IGlub2RlICopOwoKCmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBkZXYs
 IGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHdyaXRl
 X2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rl
 dl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19pbm9k
 ZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBvc3luY19pbm9kZV9idWZmZXJz
 KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5v
 ZGUgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNl
 ICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq
 KTsKZXh0ZXJuIHZvaWQgc3luY19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVj
 dCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAq
 LCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwg
 aW50KTsKZXh0ZXJuIGludCB2ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0
 ZXJuIGludCBnZXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55
 X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0
 ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICAoKHZvaWQpIGF0b21pY19k
 ZWNfcmV0dXJuKCgmaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpzdGF0aWMgaW5saW5lIHZvaWQg
 YWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUp
 CiAgICAgICAgICAgICAgICAoKHZvaWQpIGF0b21pY19pbmNfcmV0dXJuKCgmZmlsZS0+Zl9kZW50
 cnktPmRfaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50ICop
 OwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCBu
 YW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxlICosIHVuc2ln
 bmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIG9w
 ZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0cnVjdCBkZW50
 cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVyKHN0
 cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTE2NCAiL29wdC9mc3AvaTU4Ni1wYy1s
 aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0
 YXRpYyBpbmxpbmUgdm9pZCAqRVJSX1BUUihsb25nIGVycm9yKQp7CiAgICAgICAgcmV0dXJuICh2
 b2lkICopIGVycm9yOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgUFRSX0VSUihjb25zdCB2b2lkICpw
 dHIpCnsKICAgICAgICByZXR1cm4gKGxvbmcpIHB0cjsKfQoKc3RhdGljIGlubGluZSBsb25nIElT
 X0VSUihjb25zdCB2b2lkICpwdHIpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcHRy
 ID4gKHVuc2lnbmVkIGxvbmcpLTEwMDBMOwp9CiMgMTE5NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmVudW0g
 e0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklORH07
 CiMgMTIwNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXplX3Qg
 d3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAgICAg
 ICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0
 b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg
 dW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmls
 ZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CgpleHRlcm4gaW50IF9fdXNlcl93
 YWxrKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBp
 bnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7
 CmV4dGVybiBpbnQgcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsK
 ZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQg
 Zm9sbG93X2Rvd24oc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJu
 IGludCBmb2xsb3dfdXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0
 ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRlbnRy
 eSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBz
 dHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0
 ZXJuIHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9k
 ZSAqIGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1
 cGVyX2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYgaW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3Qg
 aW5vZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGln
 ZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZv
 aWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9j
 ayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8s
 ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0
 cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lk
 KTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Js
 b2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBnZXRfZW1wdHlfaW5vZGUo
 KTsKICAgICAgICBpZiAoaW5vZGUpIHsKICAgICAgICAgICAgICAgIGlub2RlLT5pX3NiID0gc2I7
 CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZXYgPSBzYi0+c19kZXY7CiAgICAgICAgfQogICAg
 ICAgIHJldHVybiBpbm9kZTsKfQpleHRlcm4gdm9pZCByZW1vdmVfc3VpZChzdHJ1Y3QgaW5vZGUg
 Kmlub2RlKTsKCmV4dGVybiB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqKTsK
 ZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gc3Ry
 dWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmlsZV9tb3ZlKHN0
 cnVjdCBmaWxlICpmLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKZXh0ZXJuIHZvaWQgZmlsZV9t
 b3ZldG8oc3RydWN0IGZpbGUgKm5ldywgc3RydWN0IGZpbGUgKm9sZCk7CmV4dGVybiBzdHJ1Y3Qg
 YnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0
 cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQg
 bGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4g
 dm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgaXNf
 cmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVh
 ZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikK
 ewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYpOwp9CmV4dGVy
 biB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9p
 ZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAg
 ICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiB2b2lkIHNldF9ibG9ja3NpemUo
 a2Rldl90LCBpbnQpOwpleHRlcm4gdW5zaWduZWQgaW50IGdldF9oYXJkYmxvY2tzaXplKGtkZXZf
 dCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBicmVhZChrZGV2X3QsIGludCwgaW50KTsK
 ZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2goaW50IHdhaXQpOwoKZXh0ZXJuIGludCBicndfcGFn
 ZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQg
 KGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQp
 OwoKCmV4dGVybiBpbnQgYmxvY2tfZmx1c2hwYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv
 bmcpOwpleHRlcm4gaW50IGJsb2NrX3N5bWxpbmsoc3RydWN0IGlub2RlICosIGNvbnN0IGNoYXIg
 KiwgaW50KTsKZXh0ZXJuIGludCBibG9ja193cml0ZV9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UqLCBn
 ZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdlKHN0cnVjdCBwYWdl
 KiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19wcmVwYXJlX3dyaXRlKHN0cnVjdCBw
 YWdlKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGNvbnRf
 cHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2Nr
 X3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4
 dGVybiBpbnQgYmxvY2tfc3luY19wYWdlKHN0cnVjdCBwYWdlICopOwoKaW50IGdlbmVyaWNfYmxv
 Y2tfYm1hcChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nLCBnZXRfYmxvY2tfdCAqKTsKaW50
 IGdlbmVyaWNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2ln
 bmVkLCB1bnNpZ25lZCk7CmludCBibG9ja190cnVuY2F0ZV9wYWdlKHN0cnVjdCBhZGRyZXNzX3Nw
 YWNlICosIGxvZmZfdCwgZ2V0X2Jsb2NrX3QgKik7CgpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9t
 bWFwKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBm
 aWxlX3JlYWRfYWN0b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFn
 ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6
 ZV90IGdlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm
 X3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBj
 b25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2Zp
 bGVfcmVhZChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVh
 ZF9hY3Rvcl90KTsKCmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUg
 KiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
 b25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50
 cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19s
 aW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3Jl
 YWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9s
 bG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3Ry
 dWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRl
 cm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0
 ZXJuIGludCBkY2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7
 CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIg
 Km5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKc3Ry
 dWN0IHN1cGVyX2Jsb2NrICpnZXRfZW1wdHlfc3VwZXIodm9pZCk7CmV4dGVybiB2b2lkIHB1dF9z
 dXBlcihrZGV2X3QpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXIoa2Rldl90LCBpbnQg
 YltdLCBpbnQpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXJfc3dhYjMyKGtkZXZfdCwg
 aW50IGJbXSwgaW50KTsKZXh0ZXJuIGtkZXZfdCBST09UX0RFVjsKZXh0ZXJuIGNoYXIgcm9vdF9k
 ZXZpY2VfbmFtZVtdOwoKCmV4dGVybiB2b2lkIHNob3dfYnVmZmVycyh2b2lkKTsKZXh0ZXJuIHZv
 aWQgbW91bnRfcm9vdCh2b2lkKTsKCgpleHRlcm4ga2Rldl90IHJlYWxfcm9vdF9kZXY7CmV4dGVy
 biBpbnQgY2hhbmdlX3Jvb3Qoa2Rldl90LCBjb25zdCBjaGFyICopOwoKCmV4dGVybiBzc2l6ZV90
 IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRl
 cm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm
 X3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0
 ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4g
 c3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
 bG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBk
 ZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0
 IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5k
 X2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50
 KTsKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0
 dHIgKik7CmV4dGVybiB2b2lkIGlub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBp
 YXR0ciAqKTsKIyAxMzY5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVu
 dHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3Qg
 ZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwoKICAgICAgICBkb3duKCZkaXIt
 PmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICByZXR1cm4gZGlyOwp9CgpzdGF0aWMgaW5saW5lIHN0
 cnVjdCBkZW50cnkgKmdldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAg
 cmV0dXJuIGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmxv
 Y2tfZGlyKHN0cnVjdCBkZW50cnkgKmRpcikKewogICAgICAgIHVwKCZkaXItPmRfaW5vZGUtPmlf
 c2VtKTsKICAgICAgICBkcHV0KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl
 X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAg
 ICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMx
 IDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
 ZW1hcGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9
 IHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAg
 IH0KICAgICAgICBkb3duKHMyKTsKfQojIDE0MTMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5s
 aW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMy
 KSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxv
 bmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEg
 PCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
 dHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
 ICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMy
 KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1w
 ID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7
 CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
 ICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9u
 ZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
 ICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9
 IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBp
 ZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAg
 ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwog
 ICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMz
 KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAg
 ICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAg
 ICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2Vt
 YXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAg
 ICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5l
 IHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChz
 MSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRp
 YyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRy
 eSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRf
 aW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0
 IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+
 ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAg
 ICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDIgMwojIDMyICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L2NhcGFiaWxpdHkuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9z
 dHJ1Y3QgewogICAgICAgIF9fdTMyIHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3Vz
 ZXJfaGVhZGVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAg
 ICAgICBfX3UzMiBlZmZlY3RpdmU7CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9f
 dTMyIGluaGVyaXRhYmxlOwp9ICpjYXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJp
 bGl0eS5oIiAzCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBh
 YmlsaXR5LmgiIDMKZXh0ZXJuIGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKIyAzMTIgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 Y2FwYWJpbGl0eS5oIiAzCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9jb21iaW5lKGtl
 cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0Owog
 ICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGlu
 ZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90
 IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiAoYik7CiAg
 ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9kcm9wKGtl
 cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0
 OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRp
 YyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2VybmVsX2NhcF90IGMpCnsKICAgICBr
 ZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMpOwogICAgIHJldHVybiBkZXN0Owp9
 CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDIgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMwpz
 dHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0
 IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hf
 YmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dp
 ZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBj
 YXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxl
 bmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3Qg
 bGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAg
 ICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVj
 dCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCps
 b2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcg
 c2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAg
 ICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmlu
 Zm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQo
 c3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0
 IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51
 eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51
 eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhz
 dHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0
 cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFy
 Z2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNv
 cHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5w
 cm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0g
 KmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3Jl
 Z3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpu
 ZXcpOwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGVyc29uYWxpdHku
 aCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9jdXJyZW50LmgiIDEgMwoKCgoKCgoKcmVnaXN0ZXIgc3Ry
 dWN0IHRhc2tfc3RydWN0ICpjdXJyZW50IGFzbSAoInIyIik7CiMgNyAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25h
 bGl0eS5oIiAyIDMKIyAzNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oIiAzCnR5cGVkZWYgdm9pZCAo
 KmxjYWxsN19mdW5jKShpbnQsIHN0cnVjdCBwdF9yZWdzICopOwoKCgoKCgoKc3RydWN0IGV4ZWNf
 ZG9tYWluIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGxjYWxsN19mdW5jIGhh
 bmRsZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwZXJzX2xvdywgcGVyc19oaWdoOwogICAgICAg
 IHVuc2lnbmVkIGxvbmcgKiBzaWduYWxfbWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBzaWdu
 YWxfaW52bWFwOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKiBtb2R1bGU7CiAgICAgICAgc3RydWN0
 IGV4ZWNfZG9tYWluICpuZXh0Owp9OwoKZXh0ZXJuIHN0cnVjdCBleGVjX2RvbWFpbiBkZWZhdWx0
 X2V4ZWNfZG9tYWluOwoKZXh0ZXJuIGludCByZWdpc3Rlcl9leGVjX2RvbWFpbihzdHJ1Y3QgZXhl
 Y19kb21haW4gKml0KTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2V4ZWNfZG9tYWluKHN0cnVjdCBl
 eGVjX2RvbWFpbiAqaXQpOwoKCgoKZXh0ZXJuIHZvaWQgX19zZXRfcGVyc29uYWxpdHkodW5zaWdu
 ZWQgbG9uZyBwZXJzb25hbGl0eSk7CgoKCgogbG9uZyBzeXNfcGVyc29uYWxpdHkodW5zaWduZWQg
 bG9uZyBwZXJzb25hbGl0eSk7CiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC90aHJlYWRzLmgiIDEgMwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKCiMgMSAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
 eC90aW1lcy5oIiAxIDMKCgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7
 CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwog
 ICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMK
 IyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L3RpbWV4LmgiIDEgMwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAzCiMgMSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9hc20vdGltZXguaCIgMSAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3RpbWV4LmgiIDMKdHlwZWRlZiB1bnNpZ25l
 ZCBsb25nIGN5Y2xlc190OwojIDI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90aW1leC5oIiAzCmV4dGVybiBjeWNsZXNfdCBj
 YWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXModm9pZCkK
 ewoKCgoKCgogICAgICAgIHJldHVybiAwOwoKfQojIDE1MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAyIDMK
 IyAxNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
 LWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVk
 IGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAg
 ICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0
 dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAg
 ICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAg
 bG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAg
 ICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250
 OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcg
 c3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAg
 ICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsg
 aW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpl
 eHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVf
 c3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0Owpl
 eHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0
 ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVy
 biBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9u
 ZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRp
 bWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0Owpl
 eHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcg
 cHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0
 OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4g
 bG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE2ICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Nj
 aGVkLmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2Nj
 LWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTggIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvc2NoZWQuaCIgMiAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDEgMwojIDE0ICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9t
 bXUuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1fY29udGV4dF90OwoKCnR5cGVkZWYgc3Ry
 dWN0IF9QVEUgewojIDI2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjox
 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnNpZDoyNDsKICAgICAgICB1bnNpZ25lZCBsb25nIGg6
 MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGFwaTo2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnBu
 OjIwOwoKICAgICAgICB1bnNpZ25lZCBsb25nIDozOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcjox
 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdzoxOwog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgaToxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbToxOwogICAg
 ICAgIHVuc2lnbmVkIGxvbmcgZzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjE7CiAgICAgICAg
 dW5zaWduZWQgbG9uZyBwcDoyOwp9IFBURTsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDMKdHlwZWRlZiBz
 dHJ1Y3QgX1NFR1JFRyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0OjE7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBrczoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25l
 ZCBsb25nIG46MTsKICAgICAgICB1bnNpZ25lZCBsb25nIDo0OwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgdnNpZDoyNDsKfSBTRUdSRUc7CgoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFUVSB7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBiZXBpOjE1OwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjg7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAg
 dW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrczoxOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBwOjI7Cn0gUDYwMV9CQVRV
 OwoKdHlwZWRlZiBzdHJ1Y3QgX0JBVFUgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYmVwaTox
 NTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyA6NDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjEx
 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnM6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZwOjE7
 Cn0gQkFUVTsKCnR5cGVkZWYgc3RydWN0IF9QNjAxX0JBVEwgewogICAgICAgIHVuc2lnbmVkIGxv
 bmcgYnJwbjoxNTsKICAgICAgICB1bnNpZ25lZCBsb25nIDoxMDsKICAgICAgICB1bnNpZ25lZCBs
 b25nIHY6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjY7Cn0gUDYwMV9CQVRMOwoKdHlwZWRl
 ZiBzdHJ1Y3QgX0JBVEwgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYnJwbjoxNTsKCiAgICAg
 ICAgdW5zaWduZWQgbG9uZyA6MTA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAg
 dW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5z
 aWduZWQgbG9uZyBnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyA6MTsKICAgICAgICB1bnNpZ25l
 ZCBsb25nIHBwOjI7Cn0gQkFUTDsKCnR5cGVkZWYgc3RydWN0IF9CQVQgewogICAgICAgIEJBVFUg
 YmF0dTsKICAgICAgICBCQVRMIGJhdGw7Cn0gQkFUOwoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFU
 IHsKICAgICAgICBQNjAxX0JBVFUgYmF0dTsKICAgICAgICBQNjAxX0JBVEwgYmF0bDsKfSBQNjAx
 X0JBVDsKIyAxMjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAzCnR5cGVkZWYgc3RydWN0IF9wdGUgewogICAgICAg
 IHVuc2lnbmVkIGxvbmcgcGFnZV9udW06MjA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczox
 MjsKfSBwdGU7CiMgMTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfTU1VX2NvbnRl
 eHQgewogICAgICAgIFNFR1JFRyBzZWdzWzE2XTsKICAgICAgICBwdGUgKipwbWFwOwp9IE1NVV9j
 b250ZXh0OwoKZXh0ZXJuIHZvaWQgX3RsYmllKHVuc2lnbmVkIGxvbmcgdmEpOwpleHRlcm4gdm9p
 ZCBfdGxiaWEodm9pZCk7CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCgojIDEgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 c21wLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5Lmgi
 IDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
 L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDEgMwoK
 CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDMKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2FzbS9pb2N0bHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMiAzCiMgMSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
 c20vdGVybWJpdHMuaCIgMSAzCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVm
 IHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKIyAx
 NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9hc20vdGVybWJpdHMuaCIgMwpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3Qg
 Y19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2Zs
 YWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfY2NbMTldOwogICAg
 ICAgIGNjX3QgY19saW5lOwogICAgICAgIHNwZWVkX3QgY19pc3BlZWQ7CiAgICAgICAgc3BlZWRf
 dCBjX29zcGVlZDsKfTsKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyIDMKCnN0cnVjdCBzZ3R0eWIg
 ewogICAgICAgIGNoYXIgc2dfaXNwZWVkOwogICAgICAgIGNoYXIgc2dfb3NwZWVkOwogICAgICAg
 IGNoYXIgc2dfZXJhc2U7CiAgICAgICAgY2hhciBzZ19raWxsOwogICAgICAgIHNob3J0IHNnX2Zs
 YWdzOwp9OwoKc3RydWN0IHRjaGFycyB7CiAgICAgICAgY2hhciB0X2ludHJjOwogICAgICAgIGNo
 YXIgdF9xdWl0YzsKICAgICAgICBjaGFyIHRfc3RhcnRjOwogICAgICAgIGNoYXIgdF9zdG9wYzsK
 ICAgICAgICBjaGFyIHRfZW9mYzsKICAgICAgICBjaGFyIHRfYnJrYzsKfTsKCnN0cnVjdCBsdGNo
 YXJzIHsKICAgICAgICBjaGFyIHRfc3VzcGM7CiAgICAgICAgY2hhciB0X2RzdXNwYzsKICAgICAg
 ICBjaGFyIHRfcnBybnRjOwogICAgICAgIGNoYXIgdF9mbHVzaGM7CiAgICAgICAgY2hhciB0X3dl
 cmFzYzsKICAgICAgICBjaGFyIHRfbG5leHRjOwp9OwojIDEyNCAiL29wdC9mc3AvaTU4Ni1wYy1s
 aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAz
 CnN0cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAg
 dW5zaWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsK
 ICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAg
 ICAgICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29m
 bGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hv
 cnQgY19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25l
 ZCBjaGFyIGNfY2NbMTBdOwp9OwojIDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyIDMKIyAyMyAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC90dHkuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxIDMKIyAxMjAgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvdHR5X2RyaXZlci5oIiAzCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFn
 aWM7CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAq
 bmFtZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAg
 IHNob3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBl
 OwogICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJt
 aW9zOwogICAgICAgIGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0
 cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZl
 ciAqb3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAg
 c3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlv
 c19sb2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgq
 b3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAg
 ICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm
 aWxwKTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBm
 cm9tX3VzZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYs
 IGludCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
 dHR5LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVj
 dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlf
 c3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9z
 dHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks
 IHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k
 LCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3Qg
 dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRo
 cm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0
 bGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0
 IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVj
 dCAqdHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsK
 ICAgICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3Rh
 dGUpOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
 OwogICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAg
 ICAgIHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0
 aW1lb3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0
 eSwgY2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoq
 c3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGlu
 dCAqZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmls
 ZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVu
 c2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2Ry
 aXZlciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC90dHkuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMSAzCiMgMTAzICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3R0eV9sZGlzYy5oIiAzCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdpYzsK
 ICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdzOwoK
 CgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQg
 KCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZl
 cikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2luX2J1
 ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpKHN0
 cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAg
 ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3NpemVf
 dCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAog
 ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90
 IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVj
 dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQs
 IHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0
 dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25lZCBp
 bnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAgICAg
 ICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNpZ25l
 ZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBpbnQg
 Y291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7
 CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07CiMg
 MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvdHR5LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIg
 MSAzCiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDIgMwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCnN0cnVj
 dCBzY3JlZW5faW5mbyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3g7CiAgICAgICAgdW5z
 aWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVzZTE7CiAgICAg
 ICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdlOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
 b3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19jb2xzOwog
 ICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3Jp
 Z192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMzsKICAgICAgICB1
 bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln
 X3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fcG9pbnRzOwoK
 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
 IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2RlcHRoOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZmJfc2l6ZTsKICAg
 ICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9udHVzZTM7CiAgICAgICAgdW5zaWduZWQg
 c2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfc2l6ZTsKICAg
 ICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9z
 aXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fcG9zOwogICAgICAgIHVuc2lnbmVkIGNo
 YXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9wb3M7CiAgICAgICAgdW5z
 aWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3BvczsKICAg
 ICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl
 c2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFnZXM7Cgp9OwoKZXh0ZXJuIHN0cnVj
 dCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0
 IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAg
 ICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsK
 ICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50Owog
 ICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJd
 OwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xv
 cFs0XTsKfTsKIyAyNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0IHR0eV9zdHJ1Y3QgewogICAg
 ICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAgICAg
 c3RydWN0IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlvcywg
 KnRlcm1pb3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9uOwog
 ICAgICAgIGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAg
 ICBpbnQgY291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1bnNp
 Z25lZCBjaGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFja2V0
 OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAgICAg
 ICB1bnNpZ25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAq
 bGluazsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0cnVj
 dCB0dHlfZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAgICAg
 IGludCBhbHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsKICAg
 ICAgICB3YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0cnVj
 dCB0cV9oYW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRyaXZl
 cl9kYXRhOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAgICAg
 ICB1bnNpZ25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwgZXJh
 c2luZzoxLCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQgY2hh
 ciBjbG9zaW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwogICAg
 ICAgIHVuc2lnbmVkIG92ZXJydW5fdGltZTsKICAgICAgICBpbnQgbnVtX292ZXJydW47CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyBwcm9jZXNzX2NoYXJfbWFwWzI1Ni8oOCpzaXplb2YodW5zaWduZWQg
 bG9uZykpXTsKICAgICAgICBjaGFyICpyZWFkX2J1ZjsKICAgICAgICBpbnQgcmVhZF9oZWFkOwog
 ICAgICAgIGludCByZWFkX3RhaWw7CiAgICAgICAgaW50IHJlYWRfY250OwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgcmVhZF9mbGFnc1s0MDk2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAg
 ICAgIGludCBjYW5vbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2Fub25faGVhZDsKICAg
 ICAgICB1bnNpZ25lZCBpbnQgY2Fub25fY29sdW1uOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
 YXRvbWljX3JlYWQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhdG9taWNfd3JpdGU7CiAgICAg
 ICAgc3BpbmxvY2tfdCByZWFkX2xvY2s7Cn07CiMgMzM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCmV4dGVy
 biB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1
 Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJl
 ZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19j
 b25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRp
 cmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2lu
 aXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQo
 dm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQo
 dm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZv
 aWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQp
 OwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4
 dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJu
 IGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4
 dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQo
 dm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVjdCAq
 dHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
 aGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0ICp0
 dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0IHR0
 eV9zdHJ1Y3QgKiB0dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2NoYW5n
 ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0
 dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0
 ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVjdCB0
 dHlfbGRpc2MgKm5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihzdHJ1
 Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIo
 c3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZm
 cyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQgdHR5
 X3VucmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIG1p
 bm9yKTsKZXh0ZXJuIGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
 LCB1bnNpZ25lZCBjaGFyICpidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBi
 dWZsZW4pOwpleHRlcm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1Y3QgdHR5X3N0cnVjdCAq
 dHR5LCBjaGFyICptc2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9wZ3JwKGludCBwZ3JwKTsK
 ZXh0ZXJuIGludCBpc19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50IHR0eV9zaWduYWwoaW50
 IHNpZywgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIHR0eV9oYW5ndXAoc3Ry
 dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5
 X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmls
 cCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4g
 dm9pZCBkb19TQUsoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIGRpc2Fzc29j
 aWF0ZV9jdHR5KGludCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBfYnVmZmVyX3B1c2goc3Ry
 dWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGUoc3RydWN0
 IHR0eV9zdHJ1Y3QgKnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgdHR5X2xkaXNjX05f
 VFRZOwoKCmV4dGVybiBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0
 cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k
 LCB1bnNpZ25lZCBsb25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlhbF9jb25zb2xlX2luaXQo
 dm9pZCk7CgoKCmV4dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0
 cnVjdCBmaWxlICpmaWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9wcmludChjb25zdCBjaGFy
 ICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVj
 dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNp
 Z25lZCBsb25nIGFyZyk7CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
 ZW0uaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIg
 MwpzdHJ1Y3QgaXBjX3Blcm0KewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAgICAgICBf
 X2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAgIF9f
 a2VybmVsX3VpZF90IGN1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgY2dpZDsKICAgICAgICBf
 X2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2FzbS9pcGNidWYuaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lwY2J1Zi5oIiAzCnN0cnVjdCBpcGM2
 NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlk
 X3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRf
 dCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9k
 ZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXE7CiAgICAgICAgdW5zaWduZWQgaW50
 IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaXBjLmgiIDIgMwoj
 IDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
 bmNsdWRlL2xpbnV4L2lwYy5oIiAzCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlf
 dCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRf
 dCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAg
 dW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCiMgMjMgIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
 dXgvc2VtLmgiIDMKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2Vt
 X3Blcm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5l
 bF90aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAg
 IHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg
 KipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAg
 ICB1bnNpZ25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zZW1idWYuaCIgMSAz
 CgoKCgoKCgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Blcm0gc2Vt
 X3Blcm07CiAgICAgICAgdW5zaWduZWQgaW50IF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90
 aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBfX3VudXNlZDI7CiAgICAgICAg
 X19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2Vt
 czsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25n
 IF9fdW51c2VkNDsKfTsKIyAzNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCgoKc3RydWN0IHNlbWJ1ZiB7
 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKICAgICAgICBzaG9ydCBzZW1fb3A7CiAg
 ICAgICAgc2hvcnQgc2VtX2ZsZzsKfTsKCgp1bmlvbiBzZW11biB7CiAgICAgICAgaW50IHZhbDsK
 ICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJy
 YXk7CiAgICAgICAgc3RydWN0IHNlbWluZm8gKl9fYnVmOwogICAgICAgIHZvaWQgKl9fcGFkOwp9
 OwoKc3RydWN0IHNlbWluZm8gewogICAgICAgIGludCBzZW1tYXA7CiAgICAgICAgaW50IHNlbW1u
 aTsKICAgICAgICBpbnQgc2VtbW5zOwogICAgICAgIGludCBzZW1tbnU7CiAgICAgICAgaW50IHNl
 bW1zbDsKICAgICAgICBpbnQgc2Vtb3BtOwogICAgICAgIGludCBzZW11bWU7CiAgICAgICAgaW50
 IHNlbXVzejsKICAgICAgICBpbnQgc2Vtdm14OwogICAgICAgIGludCBzZW1hZW07Cn07CiMgODIg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvbGludXgvc2VtLmgiIDMKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAg
 ICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJu
 X2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGlt
 ZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1
 Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2Vt
 X3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5z
 aWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3Ry
 dWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2Owog
 ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3Vu
 ZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBz
 dHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2Vt
 YnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoK
 c3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAg
 ICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAg
 ICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBu
 c2VtcywgaW50IHNlbWZsZyk7CiBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBzdHJ1Y3Qgc2Vt
 YnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwg
 aW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl
 ZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwu
 aCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9hc20vc2lnbmFsLmgiIDMKc3RydWN0IHNpZ2luZm87CiMgMTggIi9vcHQv
 ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNt
 L3NpZ25hbC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVm
 IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRf
 dDsKIyAxMjEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvYXNtL3NpZ25hbC5oIiAzCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90
 KShpbnQpOwoKCgoKCnN0cnVjdCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJf
 dCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsK
 CnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAg
 ICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIp
 KHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24g
 ewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzaWdhbHRz
 dGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAg
 IHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEg
 MwoKCgoKCgpzdHJ1Y3Qgc2lnY29udGV4dF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcg
 X3VudXNlZFs0XTsKICAgICAgICBpbnQgc2lnbmFsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaGFu
 ZGxlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAgICAgc3RydWN0IHB0X3Jl
 Z3MgKnJlZ3M7Cn07CiMgMTUzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwuaCIgMiAzCiMgNSAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWdu
 YWwuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxIDMKCgoKCgp0eXBlZGVmIHVuaW9uIHNp
 Z3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0g
 c2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2ln
 bm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1
 bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07
 CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90
 IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAg
 ICB9IF9raWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
 ICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
 ZWQgaW50IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAg
 ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAg
 ICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFs
 X3QgX3NpZ3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1
 Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAg
 ICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsK
 ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAg
 ICAgICAgIGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAg
 ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7
 CiAgICAgICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsK
 ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAg
 ICBpbnQgX2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxk
 czsKfSBzaWdpbmZvX3Q7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
 c2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgICAgIGludCBzaWdl
 dl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAg
 ICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0gMyldOwoKICAgICAgICAgICAg
 ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNp
 Z3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2F0dHJpYnV0ZTsKICAgICAg
 ICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9zaWdldl91bjsKfSBzaWdldmVu
 dF90OwoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzaWdpbmZvX3QgKnRv
 LCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCiAgICAg
 ICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIHNpemVvZihzaWdpbmZvX3QpKTsKICAgICAgICBl
 bHNlCgogICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCAzKnNpemVvZihpbnQpICsgc2l6
 ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5m
 b190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
 aWduYWwuaCIgMiAzCgoKCgoKCnN0cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1
 ZXVlICpuZXh0OwogICAgICAgIHNpZ2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcg
 ewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90
 IHNpZ25hbDsKfTsKCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMjggIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 c2lnbmFsLmgiIDIgMwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpz
 ZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAg
 ICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAgICAgICAgICAgICBzZXQtPnNpZ1swXSB8PSAx
 VUwgPDwgc2lnOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNldC0+c2lnW3NpZyAvIDMy
 XSB8PSAxVUwgPDwgKHNpZyAlIDMyKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2RlbHNldChz
 aWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnID0gX3Np
 ZyAtIDE7CiAgICAgICAgaWYgKCg2NCAvIDMyKSA9PSAxKQogICAgICAgICAgICAgICAgc2V0LT5z
 aWdbMF0gJj0gfigxVUwgPDwgc2lnKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzZXQt
 PnNpZ1tzaWcgLyAzMl0gJj0gfigxVUwgPDwgKHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBpbmxpbmUg
 aW50IHNpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAgICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAg
 ICAgICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1swXSA+PiBzaWcpOwogICAgICAgIGVsc2UK
 ICAgICAgICAgICAgICAgIHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUg
 MzIpKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdv
 cmQpCnsKICAgICAgICByZXR1cm4gZmZ6KH53b3JkKTsKfQojIDEwOCAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWduYWwu
 aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdz
 ZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBh
 MywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAv
 IDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEy
 ID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07
 IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0Kmkr
 M107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkg
 fCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAo
 KGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+
 c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0g
 Yi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHIt
 PnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEp
 KTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+
 c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0g
 Yi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0Kmkr
 MV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIw
 ID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IGJyZWFrOyB9
 IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2ln
 c2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwg
 YTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQg
 LyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBh
 MiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBd
 OyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCpp
 KzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEp
 ICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyByLT5zaWdbNCppKzNdID0g
 KChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEt
 PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9
 IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBy
 LT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIx
 KSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEt
 PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9
 IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCpp
 KzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBi
 MCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyBicmVhazsg
 fSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBz
 aWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEy
 LCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2
 NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07
 IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0Kmkr
 MF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0
 KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgo
 YTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IHItPnNpZ1s0Kmkr
 M10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBh
 MCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJd
 OyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCpp
 KzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGEx
 KSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikpOyBicmVhazsgY2FzZSAy
 OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCpp
 KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsg
 ci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNp
 Z1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihi
 MCkpOyBicmVhazsgfSB9CiMgMTQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAzCnN0YXRpYyBpbmxpbmUg
 dm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9
 IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2ln
 WzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5z
 aWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNl
 dC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+
 c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsx
 XSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNl
 dC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChz
 aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
 dWx0OgogICAgICAgICAgICAgICAgbWVtc2V0KHNldCwgMCwgc2l6ZW9mKHNpZ3NldF90KSk7CiAg
 ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAg
 ICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
 ICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKnNldCkKewog
 ICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
 ICAgIG1lbXNldChzZXQsIC0xLCBzaXplb2Yoc2lnc2V0X3QpKTsKICAgICAgICAgICAgICAgIGJy
 ZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNl
 dC0+c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVy
 biBjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoK
 CnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVk
 IGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxp
 bmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK
 ewogICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0
 ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBy
 ZXR1cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNp
 Z2luaXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0
 LT5zaWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVm
 YXVsdDoKICAgICAgICAgICAgICAgIG1lbXNldCgmc2V0LT5zaWdbMV0sIDAsIHNpemVvZihsb25n
 KSooKDY0IC8gMzIpLTEpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjog
 c2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGljIGlu
 bGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNr
 KQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMy
 KSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBtZW1zZXQoJnNldC0+c2lnWzFd
 LCAtMSwgc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpOwogICAgICAgICAgICAgICAgYnJlYWs7
 CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IC0xOwogICAgICAgIGNhc2UgMTogOwogICAg
 ICAgIH0KfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zaWdwZW5kaW5nKHN0cnVjdCBzaWdw
 ZW5kaW5nICpzaWcpCnsKICAgICAgICBzaWdlbXB0eXNldCgmc2lnLT5zaWduYWwpOwogICAgICAg
 IHNpZy0+aGVhZCA9ICgodm9pZCAqKTApOwogICAgICAgIHNpZy0+dGFpbCA9ICZzaWctPmhlYWQ7
 Cn0KCmV4dGVybiBsb25nIGRvX3NpZ3BlbmRpbmcodm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyAy
 NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9zY2hlZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NlY3VyZWJpdHMuaCIgMSAzCgoK
 CgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAz
 CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIgMSAzCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAg
 ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1
 bWFzazsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAg
 ICAgICBzdHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9
 OwojIDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAzCmV4dGVybiB2b2lkIGV4aXRfZnMoc3RydWN0
 IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lkKTsKCgoKCgoK
 c3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAg
 ICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK
 ewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3Vu
 dCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3Jv
 b3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1udCA9IGZzLT5yb290bW50OwogICAgICAg
 IGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRy
 eSk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGlmIChvbGRfcm9vdCkgewogICAg
 ICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jv
 b3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChz
 dHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAg
 ICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdk
 OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xkX3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZz
 LT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0gZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0g
 ZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMt
 PnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYg
 KG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAg
 ICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5
 X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3Ry
 dWN0IGZzX3N0cnVjdCAqZnMpOwojIDI5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDU2ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDczICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIGludCBucl9ydW5uaW5nLCBucl90aHJlYWRzOwpleHRlcm4g
 aW50IGxhc3RfcGlkOwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzCiMgNzkgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 c2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAxIDMKIyAyMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9y
 ZXNvdXJjZS5oIiAzCnN0cnVjdCBydXNhZ2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0
 aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4
 cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAg
 ICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVf
 bWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwog
 ICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBs
 b25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVf
 bnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAg
 ICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7
 Cn07CiMgNTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Jlc291cmNlLmgiIDEg
 MwojIDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIgMwojIDgwICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg
 MwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDgzICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg
 MwojIDEyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAg
 aW50IHNjaGVkX3ByaW9yaXR5Owp9OwojIDEzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCmV4dGVybiBy
 d2xvY2tfdCB0YXNrbGlzdF9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBydW5xdWV1ZV9sb2NrOwpl
 eHRlcm4gc3BpbmxvY2tfdCBtbWxpc3RfbG9jazsKCmV4dGVybiB2b2lkIHNjaGVkX2luaXQodm9p
 ZCk7CmV4dGVybiB2b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZSh2
 b2lkKTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmFwX2luaXQo
 dm9pZCk7CmV4dGVybiB2b2lkIHVwZGF0ZV9wcm9jZXNzX3RpbWVzKGludCB1c2VyKTsKZXh0ZXJu
 IHZvaWQgdXBkYXRlX29uZV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQg
 bG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz
 eXN0ZW0sIGludCBjcHUpOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0KHNp
 Z25lZCBsb25nIHRpbWVvdXQpOwogdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4dGVybiBpbnQgc2No
 ZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2No
 ZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQp
 OwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNjggIi9vcHQvZnNwL2k1
 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2No
 ZWQuaCIgMwpzdHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
 ICAgICByd2xvY2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50
 IG1heF9mZHNldDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBm
 ZDsKICAgICAgICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2Zk
 czsKICAgICAgICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVu
 X2Zkc19pbml0OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwMyAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBtbV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bV9h
 cmVhX3N0cnVjdCAqIG1tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9h
 dmw7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBw
 Z2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBt
 bV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
 bW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0
 cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUs
 IGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0
 YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFy
 dCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNz
 LCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
 d2FwX2FkZHJlc3M7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBp
 bnQgbW1saXN0X25yOwojIDI0NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzaWduYWxfc3Ry
 dWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24g
 YWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7Cn07CiMgMjYwICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L3NjaGVkLmgiIDMKc3RydWN0IHVzZXJfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBfX2NvdW50
 OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAgICAgICBhdG9taWNfdCBmaWxlczsKCgog
 ICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKipwcHJldjsKICAgICAgICB1aWRfdCB1
 aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91c2VyOwoKCnN0cnVj
 dCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKICAgICAgICB1
 bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBzaWdwZW5kaW5nOwogICAgICAgIG1tX3Nl
 Z21lbnRfdCBhZGRyX2xpbWl0OwoKCgogICAgICAgIHN0cnVjdCBleGVjX2RvbWFpbiAqZXhlY19k
 b21haW47CiAgICAgICAgdm9sYXRpbGUgbG9uZyBuZWVkX3Jlc2NoZWQ7CiAgICAgICAgdW5zaWdu
 ZWQgbG9uZyBwdHJhY2U7CgogICAgICAgIGludCBsb2NrX2RlcHRoOwoKCgoKCgogICAgICAgIGxv
 bmcgY291bnRlcjsKICAgICAgICBsb25nIG5pY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwb2xp
 Y3k7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW07CiAgICAgICAgaW50IGhhc19jcHUsIHBy
 b2Nlc3NvcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXNfYWxsb3dlZDsKCgoKCiAgICAgICAg
 c3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNsZWVwX3Rp
 bWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOwog
 ICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKCgogICAgICAgIHN0cnVjdCBsaW51
 eF9iaW5mbXQgKmJpbmZtdDsKICAgICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAg
 ICAgICBpbnQgcGRlYXRoX3NpZ25hbDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0
 eTsKICAgICAgICBpbnQgZHVtcGFibGU6MTsKICAgICAgICBpbnQgZGlkX2V4ZWM6MTsKICAgICAg
 ICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3Bn
 cnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBp
 bnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9w
 cHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
 ZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4
 dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3
 YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
 KnZmb3JrX3NlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVu
 c2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0
 X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1
 Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBs
 b25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07CgogICAgICAgIHVuc2lnbmVk
 IGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBjbWFqX2ZsdCwgY25zd2Fw
 OwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3QgdWlkLGV1aWQsc3VpZCxm
 c3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwogICAgICAgIGludCBuZ3Jv
 dXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9l
 ZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsKICAgICAgICBpbnQga2Vl
 cF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXI7CgogICAg
 ICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNlZF9t
 YXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBsaW5rX2NvdW50OwogICAg
 ICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoK
 ICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1
 ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAg
 ICAgICAgc3RydWN0IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3Qg
 KmZpbGVzOwoKICAgICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qg
 c2lnbmFsX3N0cnVjdCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0
 cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3Nw
 OwogICAgICAgIHNpemVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9p
 ZCAqcHJpdik7CiAgICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAq
 bm90aWZpZXJfbWFzazsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIg
 c2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7Cn07CiMgNDg1ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L3NjaGVkLmgiIDMKdW5pb24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0IHRhc2tf
 c3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVvZihsb25n
 KS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90YXNrX3Vu
 aW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9tbTsKZXh0ZXJuIHN0cnVjdCB0YXNr
 X3N0cnVjdCAqaW5pdF90YXNrc1sxXTsKCgoKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlk
 aGFzaFsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3BpZChzdHJ1Y3Qg
 dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipodGFibGUgPSAm
 cGlkaGFzaFsoKCgocC0+cGlkKSA+PiA4KSBeIChwLT5waWQpKSAmICgoNDA5NiA+PiAyKSAtIDEp
 KV07CgogICAgICAgIGlmKChwLT5waWRoYXNoX25leHQgPSAqaHRhYmxlKSAhPSAoKHZvaWQgKikw
 KSkKICAgICAgICAgICAgICAgICgqaHRhYmxlKS0+cGlkaGFzaF9wcHJldiA9ICZwLT5waWRoYXNo
 X25leHQ7CiAgICAgICAgKmh0YWJsZSA9IHA7CiAgICAgICAgcC0+cGlkaGFzaF9wcHJldiA9IGh0
 YWJsZTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVuaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0
 ICpwKQp7CiAgICAgICAgaWYocC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgcC0+cGlk
 aGFzaF9uZXh0LT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9wcHJldjsKICAgICAgICAqcC0+
 cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfbmV4dDsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3Qg
 dGFza19zdHJ1Y3QgKmZpbmRfdGFza19ieV9waWQoaW50IHBpZCkKewogICAgICAgIHN0cnVjdCB0
 YXNrX3N0cnVjdCAqcCwgKipodGFibGUgPSAmcGlkaGFzaFsoKCgocGlkKSA+PiA4KSBeIChwaWQp
 KSAmICgoNDA5NiA+PiAyKSAtIDEpKV07CgogICAgICAgIGZvcihwID0gKmh0YWJsZTsgcCAmJiBw
 LT5waWQgIT0gcGlkOyBwID0gcC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgOwoKICAg
 ICAgICByZXR1cm4gcDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQo
 dWlkX3QpOwpleHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CgojIDEg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvYXNtL2N1cnJlbnQuaCIgMSAzCiMgNTMzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKZXh0ZXJu
 IHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgamlmZmllczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRp
 bWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0ZXJuIHZvbGF0
 aWxlIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRf
 cmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2ln
 bmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgpleHRl
 cm4gdW5zaWduZWQgbG9uZyBrcHJvZl9jb3VudDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdXByb2Zf
 Y291bnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5z
 aWduZWQgaW50IG1vZGUsIGludCBucik7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRf
 cXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKTsKZXh0ZXJuIHZvaWQg
 c2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1l
 b3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KTsKCmV4dGVybiB2
 b2lkIGludGVycnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4g
 bG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEs
 IHNpZ25lZCBsb25nIHRpbWVvdXQpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0
 IHRhc2tfc3RydWN0ICogdHNrKTsKIyA1NjkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMwogbG9uZyBzeXNf
 d2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0
 cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4g
 aW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9p
 ZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
 cm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
 cm4gaW50IGRlcXVldWVfc2lnbmFsKHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsKZXh0ZXJuIHZv
 aWQgYmxvY2tfYWxsX3NpZ25hbHMoaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpw
 cml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVy
 biB2b2lkIHVuYmxvY2tfYWxsX3NpZ25hbHModm9pZCk7CmV4dGVybiBpbnQgc2VuZF9zaWdfaW5m
 byhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGlu
 dCBmb3JjZV9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVj
 dCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRf
 dCk7CmV4dGVybiBpbnQga2lsbF9zbF9pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
 OwpleHRlcm4gaW50IGtpbGxfcHJvY19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
 OwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl
 eHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl
 eHRlcm4gdm9pZCBmb3JjZV9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBp
 bnQgc2VuZF9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBr
 aWxsX3BnKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9zbChwaWRfdCwgaW50LCBp
 bnQpOwpleHRlcm4gaW50IGtpbGxfcHJvYyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRv
 X3NpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdh
 Y3Rpb24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFj
 a190ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmco
 c3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9
 IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRf
 dCAqc2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
 ZHk7CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAg
 IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsg
 LS1pID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb
 aV0gJn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
 c2UgNDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAg
 ICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAg
 ICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAg
 ICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07
 CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+
 c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25h
 bC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
 ICAgICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog
 ICAgICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
 dm9pZCByZWNhbGNfc2lncGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKICAgICAgICB0
 LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFscygmdC0+cGVuZGluZy5zaWduYWwsICZ0
 LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBvbl9zaWdfc3RhY2sodW5zaWduZWQg
 bG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBjdXJyZW50LT5zYXNfc3Nfc3AgPCBjdXJy
 ZW50LT5zYXNfc3Nfc2l6ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNp
 Z25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChjdXJyZW50LT5zYXNfc3Nfc2l6ZSA9PSAw
 ID8gMgogICAgICAgICAgICAgICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRl
 cm4gaW50IHJlcXVlc3RfaXJxKHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2
 b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAg
 ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJu
 IHZvaWQgZnJlZV9pcnEodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY3MiAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl
 ZC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEg
 PDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8
 ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgY3VycmVudC0+ZXVpZCA9PSAwKSB7CiAgICAgICAgICAg
 ICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJu
 IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBmc3Vz
 ZXIodm9pZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgx
 IDw8ICgwKSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBjdXJy
 ZW50LT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAw
 MDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVy
 biAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsKCiAgICAg
 ICAgaWYgKCgoY3VycmVudC0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2FwKSkpKQoKCgogICAg
 ICAgIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQtPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAg
 ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCmV4
 dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7CgpleHRlcm4gc3RydWN0IG1t
 X3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4gdm9pZCBlbmRfbGF6eV90bGIo
 c3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUgdm9pZCBfX21tZHJvcChzdHJ1
 Y3QgbW1fc3RydWN0ICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1
 Y3QgKiBtbSkKewogICAgICAgIGlmICgoYXRvbWljX2RlY19yZXR1cm4oKCZtbS0+bW1fY291bnQp
 KSA9PSAwKSkKICAgICAgICAgICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1t
 cHV0KHN0cnVjdCBtbV9zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoK
 CgoKZXh0ZXJuIHN0cnVjdCBmaWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQg
 ZXhwYW5kX2ZkX2FycmF5KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZv
 aWQgZnJlZV9mZF9hcnJheShzdHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFs
 bG9jX2Zkc2V0KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1
 Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4
 dGVybiBpbnQgY29weV90aHJlYWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
 bnNpZ25lZCBsb25nLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4
 dGVybiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9p
 ZCk7CgpleHRlcm4gdm9pZCBleGl0X21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv
 aWQgZXhpdF9maWxlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfc2ln
 aGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBkYWVtb25pemUodm9pZCk7
 CgpleHRlcm4gaW50IGRvX2V4ZWN2ZShjaGFyICosIGNoYXIgKiosIGNoYXIgKiosIHN0cnVjdCBw
 dF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
 Zywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdm9pZCBhZGRfd2Fp
 dF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCk7CmV4dGVy
 biB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2Fp
 dF9xdWV1ZV90ICogd2FpdCk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVl
 dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KTsKIyA4MzkgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu
 aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3Ry
 dWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1lID0g
 amlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1bl9s
 aXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9ydW5x
 dWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9saXN0
 Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3Byb2Nl
 c3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUo
 cCkpIGRvIHsgcHJpbnRrKCJrZXJuZWwgQlVHIGF0ICVzOiVkIVxuIiwgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu
 aCIsIDg1NCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7
 CiAgICAgICAgZG8geyBpbnRfY29udHJvbC5pbnRfY2xpKCk7ICh2b2lkKSgmdGFza2xpc3RfbG9j
 ayk7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVhZHMtLTsKICAgICAgICB1bmhhc2hfcGlk
 KHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9IChwKS0+cHJldl90
 YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0gKHApLT5uZXh0X3Rhc2s7IGlmICgocCkt
 PnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9IChwKS0+cF95c3B0cjsgaWYgKChwKS0+
 cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0gKHApLT5wX29zcHRyOyBlbHNlIChwKS0+
 cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0gd2hpbGUgKDApOwogICAgICAgIGxpc3Rf
 ZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBpbnRf
 Y29udHJvbC5pbnRfc3RpKCk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFz
 a19sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgICh2b2lkKSgmcC0+YWxsb2Nf
 bG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1
 Y3QgKnApCnsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIg
 KiBkX3BhdGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwK
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsK
 ICAgICAgICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAg
 ICAgIHN0cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgKHZvaWQpKCZjdXJyZW50LT5mcy0+bG9j
 ayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChjdXJyZW50LT5mcy0+cm9vdG1udCk7CiAgICAg
 ICAgcm9vdCA9IGRnZXQoY3VycmVudC0+ZnMtPnJvb3QpOwogICAgICAgIGRvIHsgfSB3aGlsZSgw
 KTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrKTsKICAgICAgICByZXMgPSBfX2RfcGF0aChk
 ZW50cnksIHZmc21udCwgcm9vdCwgcm9vdG1udCwgYnVmLCBidWZsZW4pOwogICAgICAgIGRvIHsg
 fSB3aGlsZSgwKTsKICAgICAgICBkcHV0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsK
 ICAgICAgICByZXR1cm4gcmVzOwp9CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCiMgMSAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
 aW51eC9nZW5oZC5oIiAxIDMKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCnN0cnVjdCBwYXJ0aXRp
 b24gewogICAgICAgIHVuc2lnbmVkIGNoYXIgYm9vdF9pbmQ7CiAgICAgICAgdW5zaWduZWQgY2hh
 ciBoZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGNo
 YXIgY3lsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3lzX2luZDsKICAgICAgICB1bnNpZ25lZCBj
 aGFyIGVuZF9oZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZW5kX3NlY3RvcjsKICAgICAgICB1
 bnNpZ25lZCBjaGFyIGVuZF9jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X3NlY3Q7CiAg
 ICAgICAgdW5zaWduZWQgaW50IG5yX3NlY3RzOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoK
 CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMSAzCiMgNDUgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGV2ZnNf
 ZnNfa2VybmVsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZGV2ZnNfZW50cnkgKiBkZXZmc19oYW5kbGVf
 dDsKIyA1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMwpleHRlcm4gZGV2ZnNfaGFuZGxl
 X3QgZGV2ZnNfcmVnaXN0ZXIgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqbmFtZSwK
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms
 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9y
 LCB1bnNpZ25lZCBpbnQgbWlub3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgdW1vZGVfdCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwpleHRlcm4gdm9pZCBkZXZm
 c191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfbWtfc3lt
 bGluayAoZGV2ZnNfaGFuZGxlX3QgZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncywgY29uc3QgY2hhciAqbGluaywKICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZmc19oYW5kbGVfdCAqaGFuZGxlLCB2b2lkICpp
 bmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX21rX2RpciAoZGV2ZnNfaGFuZGxlX3Qg
 ZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICB2b2lkICppbmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX2ZpbmRfaGFuZGxlIChk
 ZXZmc19oYW5kbGVfdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9yLHVuc2lnbmVkIGludCBtaW5v
 ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHR5cGUsIGlu
 dCB0cmF2ZXJzZV9zeW1saW5rcyk7CmV4dGVybiBpbnQgZGV2ZnNfZ2V0X2ZsYWdzIChkZXZmc19o
 YW5kbGVfdCBkZSwgdW5zaWduZWQgaW50ICpmbGFncyk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2Zs
 YWdzIChkZXZmc19oYW5kbGVfdCBkZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBk
 ZXZmc19nZXRfbWFqX21pbiAoZGV2ZnNfaGFuZGxlX3QgZGUsCiAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgIHVuc2lnbmVkIGludCAqbWFqb3IsIHVuc2lnbmVkIGludCAqbWlub3IpOwpleHRl
 cm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X2hhbmRsZV9mcm9tX2lub2RlIChzdHJ1Y3QgaW5v
 ZGUgKmlub2RlKTsKZXh0ZXJuIGludCBkZXZmc19nZW5lcmF0ZV9wYXRoIChkZXZmc19oYW5kbGVf
 dCBkZSwgY2hhciAqcGF0aCwgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkICpkZXZmc19nZXRfb3Bz
 IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2ZpbGVfc2l6ZSAoZGV2
 ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiB2b2lkICpkZXZmc19n
 ZXRfaW5mbyAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gaW50IGRldmZzX3NldF9pbmZvIChk
 ZXZmc19oYW5kbGVfdCBkZSwgdm9pZCAqaW5mbyk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBkZXZm
 c19nZXRfcGFyZW50IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBk
 ZXZmc19nZXRfZmlyc3RfY2hpbGQgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJuIGRldmZzX2hh
 bmRsZV90IGRldmZzX2dldF9uZXh0X3NpYmxpbmcgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJu
 IHZvaWQgZGV2ZnNfYXV0b191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBtYXN0ZXIsZGV2ZnNf
 aGFuZGxlX3Qgc2xhdmUpOwpleHRlcm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X3VucmVnaXN0
 ZXJfc2xhdmUgKGRldmZzX2hhbmRsZV90IG1hc3Rlcik7CmV4dGVybiBjb25zdCBjaGFyICpkZXZm
 c19nZXRfbmFtZSAoZGV2ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGludCAqbmFtZWxlbik7CmV4
 dGVybiBpbnQgZGV2ZnNfcmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0
 IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls
 ZV9vcGVyYXRpb25zICpmb3BzKTsKZXh0ZXJuIGludCBkZXZmc19yZWdpc3Rlcl9ibGtkZXYgKHVu
 c2lnbmVkIGludCBtYWpvciwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqYmRvcHMpOwpleHRl
 cm4gaW50IGRldmZzX3VucmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0
 IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldmZzX3VucmVnaXN0ZXJfYmxrZGV2ICh1bnNpZ25l
 ZCBpbnQgbWFqb3IsIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIHZvaWQgZGV2ZnNfcmVnaXN0
 ZXJfdGFwZSAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gdm9pZCBkZXZmc19yZWdpc3Rlcl9z
 ZXJpZXMgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllcywKICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVk
 IGludCBtYWpvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
 bnQgbWlub3Jfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1vZGVf
 dCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwoKZXh0ZXJuIGludCBpbml0X2RldmZzX2Zz
 ICh2b2lkKTsKZXh0ZXJuIHZvaWQgbW91bnRfZGV2ZnNfZnMgKHZvaWQpOwpleHRlcm4gdm9pZCBk
 ZXZmc19tYWtlX3Jvb3QgKGNvbnN0IGNoYXIgKm5hbWUpOwojIDQ5ICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2dlbmhkLmgi
 IDIgMwoKc3RydWN0IGhkX3N0cnVjdCB7CiAgICAgICAgbG9uZyBzdGFydF9zZWN0OwogICAgICAg
 IGxvbmcgbnJfc2VjdHM7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7Cn07CgoKCnN0cnVjdCBn
 ZW5kaXNrIHsKICAgICAgICBpbnQgbWFqb3I7CiAgICAgICAgY29uc3QgY2hhciAqbWFqb3JfbmFt
 ZTsKICAgICAgICBpbnQgbWlub3Jfc2hpZnQ7CgogICAgICAgIGludCBtYXhfcDsKCiAgICAgICAg
 c3RydWN0IGhkX3N0cnVjdCAqcGFydDsKICAgICAgICBpbnQgKnNpemVzOwogICAgICAgIGludCBu
 cl9yZWFsOwoKICAgICAgICB2b2lkICpyZWFsX2RldmljZXM7CiAgICAgICAgc3RydWN0IGdlbmRp
 c2sgKm5leHQ7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpmb3BzOwoK
 ICAgICAgICBkZXZmc19oYW5kbGVfdCAqZGVfYXJyOwogICAgICAgIGNoYXIgKmZsYWdzOwp9Owoj
 IDIyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCmV4dGVybiBzdHJ1Y3QgZ2VuZGlzayAqZ2VuZGlza19o
 ZWFkOwoKY2hhciAqZGlza19uYW1lIChzdHJ1Y3QgZ2VuZGlzayAqaGQsIGludCBtaW5vciwgY2hh
 ciAqYnVmKTsKCmV4dGVybiB2b2lkIGRldmZzX3JlZ2lzdGVyX3BhcnRpdGlvbnMgKHN0cnVjdCBn
 ZW5kaXNrICpkZXYsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgaW50IHVucmVnaXN0ZXIpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBk
 aXNrX2luZGV4IChrZGV2X3QgZGV2KQp7CiAgICAgICAgaW50IG1ham9yID0gKCh1bnNpZ25lZCBp
 bnQpICgoZGV2KSA+PiA4KSk7CiAgICAgICAgaW50IG1pbm9yID0gKCh1bnNpZ25lZCBpbnQpICgo
 ZGV2KSAmICgoMVUgPDwgOCkgLSAxKSkpOwogICAgICAgIHVuc2lnbmVkIGludCBpbmRleDsKCiAg
 ICAgICAgc3dpdGNoIChtYWpvcikgewogICAgICAgICAgICAgICAgY2FzZSA0OCArMDoKICAgICAg
 ICAgICAgICAgICAgICAgICAgaW5kZXggPSAobWlub3IgJiAweDAwZjgpID4+IDM7CiAgICAgICAg
 ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAg
 ICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDBmMCkgPj4gNDsKICAgICAgICAgICAg
 ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAg
 ICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDA0
 MCkgPj4gNjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
 YXNlIDIyOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9ICgobWlub3IgJiAweDAwNDAp
 ID4+IDYpICsgMjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
 ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAg
 ICAgICAgcmV0dXJuIGluZGV4Owp9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCgoKCnN0cnVj
 dCByZXF1ZXN0X3F1ZXVlOwp0eXBlZGVmIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHJlcXVlc3RfcXVl
 dWVfdDsKc3RydWN0IGVsZXZhdG9yX3M7CnR5cGVkZWYgc3RydWN0IGVsZXZhdG9yX3MgZWxldmF0
 b3JfdDsKCgoKCgoKCnN0cnVjdCByZXF1ZXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1
 ZXVlOwogICAgICAgIGludCBlbGV2YXRvcl9zZXF1ZW5jZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
 ZWFkIHRhYmxlOwoKICAgICAgICB2b2xhdGlsZSBpbnQgcnFfc3RhdHVzOwoKCgoKCgogICAgICAg
 IGtkZXZfdCBycV9kZXY7CiAgICAgICAgaW50IGNtZDsKICAgICAgICBpbnQgZXJyb3JzOwogICAg
 ICAgIHVuc2lnbmVkIGxvbmcgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfc2VjdG9y
 czsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhcmRfc2VjdG9yLCBoYXJkX25yX3NlY3RvcnM7CiAg
 ICAgICAgdW5zaWduZWQgaW50IG5yX3NlZ21lbnRzOwogICAgICAgIHVuc2lnbmVkIGludCBucl9o
 d19zZWdtZW50czsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cnJlbnRfbnJfc2VjdG9yczsKICAg
 ICAgICB2b2lkICogc3BlY2lhbDsKICAgICAgICBjaGFyICogYnVmZmVyOwogICAgICAgIHN0cnVj
 dCBzZW1hcGhvcmUgKiBzZW07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmg7CiAgICAg
 ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmh0YWlsOwogICAgICAgIHJlcXVlc3RfcXVldWVfdCAq
 cTsKfTsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9lbGV2YXRvci5oIiAxIDMKCgoKdHlwZWRlZiB2b2lkIChlbGV2
 YXRvcl9mbikgKHN0cnVjdCByZXF1ZXN0ICosIGVsZXZhdG9yX3QgKiwKICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwgaW50KTsKCnR5cGVkZWYgaW50IChlbGV2YXRvcl9tZXJn
 ZV9mbikgKHJlcXVlc3RfcXVldWVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAqKiwgc3RydWN0IGxpc3Rf
 aGVhZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
 YWQgKiwgaW50LCBpbnQpOwoKdHlwZWRlZiB2b2lkIChlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2Zu
 KSAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICosIGludCk7Cgp0eXBlZGVmIHZv
 aWQgKGVsZXZhdG9yX21lcmdlX3JlcV9mbikgKHN0cnVjdCByZXF1ZXN0ICosIHN0cnVjdCByZXF1
 ZXN0ICopOwoKc3RydWN0IGVsZXZhdG9yX3MKewogICAgICAgIGludCByZWFkX2xhdGVuY3k7CiAg
 ICAgICAgaW50IHdyaXRlX2xhdGVuY3k7CgogICAgICAgIGVsZXZhdG9yX21lcmdlX2ZuICplbGV2
 YXRvcl9tZXJnZV9mbjsKICAgICAgICBlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2ZuICplbGV2YXRv
 cl9tZXJnZV9jbGVhbnVwX2ZuOwogICAgICAgIGVsZXZhdG9yX21lcmdlX3JlcV9mbiAqZWxldmF0
 b3JfbWVyZ2VfcmVxX2ZuOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcXVldWVfSUQ7Cn07CgppbnQg
 ZWxldmF0b3Jfbm9vcF9tZXJnZShyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKios
 IHN0cnVjdCBsaXN0X2hlYWQgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCwgaW50KTsKdm9p
 ZCBlbGV2YXRvcl9ub29wX21lcmdlX2NsZWFudXAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCBy
 ZXF1ZXN0ICosIGludCk7CnZvaWQgZWxldmF0b3Jfbm9vcF9tZXJnZV9yZXEoc3RydWN0IHJlcXVl
 c3QgKiwgc3RydWN0IHJlcXVlc3QgKik7CgppbnQgZWxldmF0b3JfbGludXNfbWVyZ2UocmVxdWVz
 dF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICoqLCBzdHJ1Y3QgbGlzdF9oZWFkICosIHN0cnVj
 dCBidWZmZXJfaGVhZCAqLCBpbnQsIGludCk7CnZvaWQgZWxldmF0b3JfbGludXNfbWVyZ2VfY2xl
 YW51cChyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKiwgaW50KTsKdm9pZCBlbGV2
 YXRvcl9saW51c19tZXJnZV9yZXEoc3RydWN0IHJlcXVlc3QgKiwgc3RydWN0IHJlcXVlc3QgKik7
 Cgp0eXBlZGVmIHN0cnVjdCBibGtlbHZfaW9jdGxfYXJnX3MgewogICAgICAgIGludCBxdWV1ZV9J
 RDsKICAgICAgICBpbnQgcmVhZF9sYXRlbmN5OwogICAgICAgIGludCB3cml0ZV9sYXRlbmN5Owog
 ICAgICAgIGludCBtYXhfYm9tYl9zZWdtZW50czsKfSBibGtlbHZfaW9jdGxfYXJnX3Q7CgoKCgpl
 eHRlcm4gaW50IGJsa2VsdmdldF9pb2N0bChlbGV2YXRvcl90ICosIGJsa2Vsdl9pb2N0bF9hcmdf
 dCAqKTsKZXh0ZXJuIGludCBibGtlbHZzZXRfaW9jdGwoZWxldmF0b3JfdCAqLCBjb25zdCBibGtl
 bHZfaW9jdGxfYXJnX3QgKik7CgpleHRlcm4gdm9pZCBlbGV2YXRvcl9pbml0KGVsZXZhdG9yX3Qg
 KiwgZWxldmF0b3JfdCk7CiMgNzMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWxldmF0b3IuaCIgMwpzdGF0aWMgaW5saW5l
 IGludCBlbGV2YXRvcl9yZXF1ZXN0X2xhdGVuY3koZWxldmF0b3JfdCAqIGVsZXZhdG9yLCBpbnQg
 cncpCnsKICAgICAgICBpbnQgbGF0ZW5jeTsKCiAgICAgICAgbGF0ZW5jeSA9IGVsZXZhdG9yLT5y
 ZWFkX2xhdGVuY3k7CiAgICAgICAgaWYgKHJ3ICE9IDApCiAgICAgICAgICAgICAgICBsYXRlbmN5
 ID0gZWxldmF0b3ItPndyaXRlX2xhdGVuY3k7CgogICAgICAgIHJldHVybiBsYXRlbmN5Owp9CiMg
 NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvYmxrZGV2LmgiIDIgMwoKdHlwZWRlZiBpbnQgKG1lcmdlX3JlcXVlc3RfZm4p
 IChyZXF1ZXN0X3F1ZXVlX3QgKnEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
 dWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
 YnVmZmVyX2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5
 cGVkZWYgaW50IChtZXJnZV9yZXF1ZXN0c19mbikgKHJlcXVlc3RfcXVldWVfdCAqcSwKICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcTIsCiAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5cGVkZWYgdm9pZCAocmVxdWVzdF9mbl9wcm9j
 KSAocmVxdWVzdF9xdWV1ZV90ICpxKTsKdHlwZWRlZiByZXF1ZXN0X3F1ZXVlX3QgKiAocXVldWVf
 cHJvYykgKGtkZXZfdCBkZXYpOwp0eXBlZGVmIGludCAobWFrZV9yZXF1ZXN0X2ZuKSAocmVxdWVz
 dF9xdWV1ZV90ICpxLCBpbnQgcncsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwp0eXBlZGVmIHZv
 aWQgKHBsdWdfZGV2aWNlX2ZuKSAocmVxdWVzdF9xdWV1ZV90ICpxLCBrZGV2X3QgZGV2aWNlKTsK
 dHlwZWRlZiB2b2lkICh1bnBsdWdfZGV2aWNlX2ZuKSAodm9pZCAqcSk7CgoKCgoKCgpzdHJ1Y3Qg
 cmVxdWVzdF9xdWV1ZQp7CgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2ZyZWVs
 aXN0WzJdOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19mcmVlbGlzdFsyXTsKICAg
 ICAgICBpbnQgcGVuZGluZ19mcmVlWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1
 ZXVlX2hlYWQ7CiAgICAgICAgZWxldmF0b3JfdCBlbGV2YXRvcjsKCiAgICAgICAgcmVxdWVzdF9m
 bl9wcm9jICogcmVxdWVzdF9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogYmFja19tZXJn
 ZV9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogZnJvbnRfbWVyZ2VfZm47CiAgICAgICAg
 bWVyZ2VfcmVxdWVzdHNfZm4gKiBtZXJnZV9yZXF1ZXN0c19mbjsKICAgICAgICBtYWtlX3JlcXVl
 c3RfZm4gKiBtYWtlX3JlcXVlc3RfZm47CiAgICAgICAgcGx1Z19kZXZpY2VfZm4gKiBwbHVnX2Rl
 dmljZV9mbjsKCgoKCiAgICAgICAgdm9pZCAqIHF1ZXVlZGF0YTsKCgoKCiAgICAgICAgc3RydWN0
 IHRxX3N0cnVjdCBwbHVnX3RxOwoKCgoKICAgICAgICBjaGFyIHBsdWdnZWQ7CgoKCgoKICAgICAg
 ICBjaGFyIGhlYWRfYWN0aXZlOwoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCBxdWV1ZV9sb2NrOwoK
 CgoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2Zvcl9yZXF1ZXN0Owp9OwoKc3RydWN0
 IGJsa19kZXZfc3RydWN0IHsKCgoKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcmVxdWVzdF9xdWV1
 ZTsKICAgICAgICBxdWV1ZV9wcm9jICpxdWV1ZTsKICAgICAgICB2b2lkICpkYXRhOwp9OwoKc3Ry
 dWN0IHNlY19zaXplIHsKICAgICAgICB1bnNpZ25lZCBibG9ja19zaXplOwogICAgICAgIHVuc2ln
 bmVkIGJsb2NrX3NpemVfYml0czsKfTsKIyAxNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmxrZGV2LmgiIDMKZXh0ZXJu
 IHN0cnVjdCBzZWNfc2l6ZSAqIGJsa19zZWNbMjU1XTsKZXh0ZXJuIHN0cnVjdCBibGtfZGV2X3N0
 cnVjdCBibGtfZGV2WzI1NV07CmV4dGVybiB2b2lkIGdyb2tfcGFydGl0aW9ucyhzdHJ1Y3QgZ2Vu
 ZGlzayAqZGV2LCBpbnQgZHJpdmUsIHVuc2lnbmVkIG1pbm9ycywgbG9uZyBzaXplKTsKZXh0ZXJu
 IHZvaWQgcmVnaXN0ZXJfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGV2LCBrZGV2X3QgZmlyc3QsIHVu
 c2lnbmVkIG1pbm9ycywgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpvcHMsIGxvbmcg
 c2l6ZSk7CmV4dGVybiB2b2lkIGdlbmVyaWNfbWFrZV9yZXF1ZXN0KGludCBydywgc3RydWN0IGJ1
 ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gcmVxdWVzdF9xdWV1ZV90ICpibGtfZ2V0X3F1ZXVlKGtk
 ZXZfdCBkZXYpOwpleHRlcm4gaW5saW5lIHJlcXVlc3RfcXVldWVfdCAqX19ibGtfZ2V0X3F1ZXVl
 KGtkZXZfdCBkZXYpOwpleHRlcm4gdm9pZCBibGtkZXZfcmVsZWFzZV9yZXF1ZXN0KHN0cnVjdCBy
 ZXF1ZXN0ICopOwoKCgoKZXh0ZXJuIHZvaWQgYmxrX2luaXRfcXVldWUocmVxdWVzdF9xdWV1ZV90
 ICosIHJlcXVlc3RfZm5fcHJvYyAqKTsKZXh0ZXJuIHZvaWQgYmxrX2NsZWFudXBfcXVldWUocmVx
 dWVzdF9xdWV1ZV90ICopOwpleHRlcm4gdm9pZCBibGtfcXVldWVfaGVhZGFjdGl2ZShyZXF1ZXN0
 X3F1ZXVlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgYmxrX3F1ZXVlX3BsdWdnYWJsZShyZXF1ZXN0
 X3F1ZXVlX3QgKiwgcGx1Z19kZXZpY2VfZm4gKik7CmV4dGVybiB2b2lkIGJsa19xdWV1ZV9tYWtl
 X3JlcXVlc3QocmVxdWVzdF9xdWV1ZV90ICosIG1ha2VfcmVxdWVzdF9mbiAqKTsKZXh0ZXJuIHZv
 aWQgZ2VuZXJpY191bnBsdWdfZGV2aWNlKHZvaWQgKik7CgpleHRlcm4gaW50ICogYmxrX3NpemVb
 MjU1XTsKCmV4dGVybiBpbnQgKiBibGtzaXplX3NpemVbMjU1XTsKCmV4dGVybiBpbnQgKiBoYXJk
 c2VjdF9zaXplWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3JlYWRhaGVhZFsyNTVdOwoKZXh0ZXJu
 IGludCAqIG1heF9zZWN0b3JzWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3NlZ21lbnRzWzI1NV07
 CgpleHRlcm4gYXRvbWljX3QgcXVldWVkX3NlY3RvcnM7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o
 IiAzCmV4dGVybiB2b2lkIGRyaXZlX3N0YXRfYWNjdCAoa2Rldl90IGRldiwgaW50IHJ3LAogICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9zZWN0
 b3JzLCBpbnQgbmV3X2lvKTsKCnN0YXRpYyBpbmxpbmUgaW50IGdldF9oYXJkc2VjdF9zaXplKGtk
 ZXZfdCBkZXYpCnsKICAgICAgICBleHRlcm4gaW50ICpoYXJkc2VjdF9zaXplW107CiAgICAgICAg
 aWYgKGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiA4KSldICE9ICgodm9p
 ZCAqKTApKQogICAgICAgICAgICAgICAgcmV0dXJuIGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBp
 bnQpICgoZGV2KSA+PiA4KSldWygodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0g
 MSkpKV07CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDUxMjsKfQojIDE1ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnMuaCIgMSAzCgoKCgojIDEgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 bGludXgvc2xhYi5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
 a21lbV9jYWNoZV9zIGttZW1fY2FjaGVfdDsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAxIDMKIyAxMiAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9saW51eC9tbS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMSAzCiMgMTcgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 bW16b25lLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3Ry
 dWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgaW50ICptYXA7Cn0gZnJl
 ZV9hcmVhX3Q7CgpzdHJ1Y3QgcGdsaXN0X2RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB6b25lX3N0cnVj
 dCB7CgoKCiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zm
 c2V0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9wYWdlczsKICAgICAgICB1bnNpZ25lZCBs
 b25nIGluYWN0aXZlX2NsZWFuX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5hY3RpdmVf
 ZGlydHlfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4sIHBhZ2VzX2xvdywg
 cGFnZXNfaGlnaDsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9jbGVhbl9s
 aXN0OwogICAgICAgIGZyZWVfYXJlYV90IGZyZWVfYXJlYVsxMF07CgoKCgogICAgICAgIGNoYXIg
 Km5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKCgogICAgICAgIHN0cnVjdCBwZ2xp
 c3RfZGF0YSAqem9uZV9wZ2RhdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFk
 ZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwogICAgICAgIHN0cnVj
 dCBwYWdlICp6b25lX21lbV9tYXA7Cn0gem9uZV90OwojIDcxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAz
 CnR5cGVkZWYgc3RydWN0IHpvbmVsaXN0X3N0cnVjdCB7CiAgICAgICAgem9uZV90ICogem9uZXMg
 WzMgKzFdOwogICAgICAgIGludCBnZnBfbWFzazsKfSB6b25lbGlzdF90OwoKCgpzdHJ1Y3QgYm9v
 dG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5v
 ZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDEwMF07CiAg
 ICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2
 YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAg
 ICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u
 ZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAg
 ICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9
 IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0
 X2xpc3Q7CiMgMTAzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAzCnN0cnVjdCBwYWdlOwpleHRlcm4gdm9p
 ZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0KTsKZXh0ZXJuIHZvaWQgZnJl
 ZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFnZSAq
 KmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyBwYWRkciwg
 dW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBhZ2UgKnBtYXApOwoKZXh0ZXJu
 IHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDIgMwoKZXh0
 ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X21hcG5yOwpleHRlcm4gdW5zaWduZWQgbG9uZyBudW1fcGh5
 c3BhZ2VzOwpleHRlcm4gdm9pZCAqIGhpZ2hfbWVtb3J5OwpleHRlcm4gaW50IHBhZ2VfY2x1c3Rl
 cjsKCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OwpleHRlcm4gc3RydWN0IGxp
 c3RfaGVhZCBpbmFjdGl2ZV9kaXJ0eV9saXN0OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxIDMK
 IyAxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDEx
 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
 dWRlL2FzbS9wZ3RhYmxlLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAxIDMKIyAxMiAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
 cGd0YWJsZS5oIiAyIDMKCgoKCmV4dGVybiB2b2lkIFBQQzR4eF90bGJfcGluKHVuc2lnbmVkIGxv
 bmcgdmEsIHVuc2lnbmVkIGxvbmcgcGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 aW50IHBhZ2VzeiwgaW50IGNhY2hlKTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl91bnBpbih1bnNp
 Z25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIHBhLAogICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgaW50IHNpemUpOwpleHRlcm4gdm9pZCBQUEM0eHhfdGxiX2ZsdXNoX2FsbCh2b2lk
 KTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl9mbHVzaCh1bnNpZ25lZCBsb25nIHZhLCBpbnQgcGlk
 KTsKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3Ry
 dWN0ICptbSkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9CgpleHRl
 cm4gaW5saW5lIHZvaWQgbG9jYWxfZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0
 ICp2bWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bWFk
 ZHIpCiAgICAgICAgeyByZXR1cm4gUFBDNHh4X3RsYl9mbHVzaF9hbGwoKTsgfQoKZXh0ZXJuIGlu
 bGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l
 ZCBsb25nIGVuZCkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9Cgpz
 dGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2ln
 bmVkIGxvbmcgdmEpCiAgICAgICAgeyB9CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMg
 aW5saW5lIHZvaWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk
 IGxvbmcgZW5kKQp7Cgp9CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4gdm9pZCBfX2Zs
 dXNoX2ljYWNoZV9wYWdlKHZvaWQgKik7CgoKCgoKZXh0ZXJuIHZvaWQgZmx1c2hfaWNhY2hlX3Jh
 bmdlKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBfX2ZsdXNoX3Bh
 Z2VfdG9fcmFtKHVuc2lnbmVkIGxvbmcgcGFnZV92YSk7CmV4dGVybiB2b2lkIGZsdXNoX3BhZ2Vf
 dG9fcmFtKHN0cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmFfdG9f
 cGh5cyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gcHRlX3QgKnZhX3RvX3B0ZSh1bnNp
 Z25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3JlbWFwX2JvdCwgaW9y
 ZW1hcF9iYXNlOwojIDMwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25n
 IGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAzMTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4g
 cHRlX3QgX19iYWRfcGFnZSh2b2lkKTsKZXh0ZXJuIHB0ZV90ICogX19iYWRfcGFnZXRhYmxlKHZv
 aWQpOwojIDM1OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25l
 KHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90
 IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBw
 Z2QpIHsgcmV0dXJuIDE7IH0KIyAzNzAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMgaW5saW5l
 IGludCBwdGVfcmVhZChwdGVfdCBwdGUpIHsgcmV0dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0K
 c3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0
 ZSkgJiAweDIwMDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0
 dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX2RpcnR5KHB0
 ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0ZSkgJiAweDEwMDsgfQpzdGF0aWMgaW5saW5lIGlu
 dCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAoKHB0ZSkucHRlKSAmIDB4NDAwOyB9Cgpz
 dGF0aWMgaW5saW5lIHZvaWQgcHRlX3VuY2FjaGUocHRlX3QgcHRlKSB7ICgocHRlKS5wdGUpIHw9
 IDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfY2FjaGUocHRlX3QgcHRlKSB7ICgocHRl
 KS5wdGUpICY9IH4weDAwNDsgfQoKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0
 ZV90IHB0ZSkgewogICAgICAgICgocHRlKS5wdGUpICY9IH4weDAxMDsgcmV0dXJuIHB0ZTsgfQpz
 dGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRlX3QgcHRlKSB7CiAgICAgICAgKChw
 dGUpLnB0ZSkgJj0gfjB4MDEwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRl
 X3dycHJvdGVjdChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSAmPSB+KDB4MjAwIHwg
 MHg4MDApOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRl
 X3QgcHRlKSB7CiAgICAgICAgKChwdGUpLnB0ZSkgJj0gfigweDEwMCB8IDB4ODAwKTsgcmV0dXJu
 IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta29sZChwdGVfdCBwdGUpIHsKICAgICAg
 ICAoKHB0ZSkucHRlKSAmPSB+MHg0MDA7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgcHRl
 X3QgcHRlX21rcmVhZChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDAxMDsg
 cmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7
 CiAgICAgICAgKChwdGUpLnB0ZSkgfD0gMHgwMTA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu
 ZSBwdGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAw
 eDIwMDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDEwMCkKICAgICAgICAgICAgICAgICgo
 cHRlKS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBw
 dGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDEw
 MDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDIwMCkKICAgICAgICAgICAgICAgICgocHRl
 KS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBwdGVf
 dCBwdGVfbWt5b3VuZyhwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDQwMDsg
 cmV0dXJuIHB0ZTsgfQojIDQyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgcHRl
 X3QgbWtfcHRlX3BoeXModW5zaWduZWQgbG9uZyBwaHlzcGFnZSwgcGdwcm90X3QgcGdwcm90KQp7
 CiAgICAgICAgcHRlX3QgcHRlOwogICAgICAgICgocHRlKS5wdGUpID0gcGh5c3BhZ2UgfCAoKHBn
 cHJvdCkucGdwcm90KTsKICAgICAgICByZXR1cm4gcHRlOwp9CiMgNDM2ICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxl
 LmgiIDMKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90X3Qg
 bmV3cHJvdCkKewogICAgICAgICgocHRlKS5wdGUpID0gKCgocHRlKS5wdGUpICYgKCh+KCgxVUwg
 PDwgMTIpLTEpKSB8IDB4NDAwIHwgMHgxMDAgfCAweDAwNCkpIHwgKChuZXdwcm90KS5wZ3Byb3Qp
 OwogICAgICAgIHJldHVybiBwdGU7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
 ZyBwdGVfdXBkYXRlKHB0ZV90ICpwLCB1bnNpZ25lZCBsb25nIGNsciwKICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzZXQpCnsKICAgICAgICB1bnNp
 Z25lZCBsb25nIG9sZCwgdG1wOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4iCiIx
 Oglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMSwlMCwlNFxuIgoiCW9yCSUxLCUxLCU1XG4iCiIJ
 c3R3Y3guCSUxLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9JnIi
 ICh0bXApLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAoY2xyKSwgInIiIChzZXQp
 LCAibSIgKCpwKQogICAgICAgIDogImNjIiApOwogICAgICAgIHJldHVybiBvbGQ7Cn0KCnN0YXRp
 YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApCnsKICAg
 ICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHg0MDAsIDApICYgMHg0MDApICE9IDA7Cn0K
 CnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXAp
 CnsKICAgICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHgxMDAgfCAweDgwMCwgMCkKICAg
 ICAgICAgICAgICAgICYgMHgxMDApICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlcF9n
 ZXRfYW5kX2NsZWFyKHB0ZV90ICpwdGVwKQp7CiAgICAgICAgcmV0dXJuICgocHRlX3QpIHsgKHB0
 ZV91cGRhdGUocHRlcCwgfjBVTCwgMCkpIH0gKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB0ZXBf
 c2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkKewogICAgICAgIHB0ZV91cGRhdGUocHRlcCwgMHgy
 MDAgfCAweDgwMCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX21rZGlydHkocHRlX3Qg
 KnB0ZXApCnsKIyA0OTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
 bGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwogICAgICAgIHB0ZV91cGRhdGUocHRl
 cCwgMCwgMHgxMDApOwp9CiMgNTEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKc3RhdGljIGlubGluZSBw
 bWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewog
 ICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CgoKc3RhdGljIGlubGluZSBwdGVfdCAqIHB0
 ZV9vZmZzZXQocG1kX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJl
 dHVybiAocHRlX3QgKikgKCgoKmRpcikucG1kKSkgKyAoKGFkZHJlc3MgPj4gMTIpICYgKDEwMjQg
 LSAxKSk7Cn0KCmV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTsKZXh0ZXJuIHZvaWQg
 cGFnaW5nX2luaXQodm9pZCk7CiMgNTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0ZXJuIHZvaWQg
 Zmx1c2hfaGFzaF9zZWdtZW50cyh1bnNpZ25lZCBsb3dfdnNpZCwgdW5zaWduZWQgaGlnaF92c2lk
 KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2lnbmVk
 IGxvbmcgdmEpOwojIDU1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB2b2lkIGNhY2hlX2Ns
 ZWFyKF9fdTMyIGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gdm9pZCBjYWNoZV9wdXNoKF9fdTMy
 IGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gaW50IG1tX2VuZF9vZl9jaHVuayAodW5zaWduZWQg
 bG9uZyBhZGRyLCBpbnQgbGVuKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9wYSh1bnNpZ25lZCBs
 b25nIGFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBtbV9wdG92KHVuc2lnbmVkIGxvbmcgYWRk
 cikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiMgNTY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0
 ZXJuIHVuc2lnbmVkIGxvbmcga2VybmVsX21hcCh1bnNpZ25lZCBsb25nIHBhZGRyLCB1bnNpZ25l
 ZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vY2FjaGVm
 bGFnLCB1bnNpZ25lZCBsb25nICptZW1hdmFpbHAgKTsKCgoKCmV4dGVybiB2b2lkIGtlcm5lbF9z
 ZXRfY2FjaGVtb2RlICh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwK
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtb2RlKTsKIyAy
 NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9saW51eC9tbS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCnN0cnVjdCB2bV9hcmVh
 X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwogICAgICAgIHVuc2ln
 bmVkIGxvbmcgdm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CgoKICAgICAg
 ICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3Bh
 Z2VfcHJvdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKCiAgICAgICAgc2hvcnQg
 dm1fYXZsX2hlaWdodDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfbGVm
 dDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfcmlnaHQ7CgoKCgoKICAg
 ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRfc2hhcmU7CiAgICAgICAgc3RydWN0
 IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgogICAgICAgIHN0cnVjdCB2bV9vcGVy
 YXRpb25zX3N0cnVjdCAqIHZtX29wczsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwog
 ICAgICAgIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Jh
 ZW5kOwogICAgICAgIHZvaWQgKiB2bV9wcml2YXRlX2RhdGE7Cn07CiMgMTEyICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21t
 LmgiIDMKZXh0ZXJuIHBncHJvdF90IHByb3RlY3Rpb25fbWFwWzE2XTsKCgoKCgoKCnN0cnVjdCB2
 bV9vcGVyYXRpb25zX3N0cnVjdCB7CiAgICAgICAgdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVh
 X3N0cnVjdCAqIGFyZWEpOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3Ry
 dWN0ICogYXJlYSk7CiAgICAgICAgc3RydWN0IHBhZ2UgKiAoKm5vcGFnZSkoc3RydWN0IHZtX2Fy
 ZWFfc3RydWN0ICogYXJlYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNjZXNz
 KTsKfTsKIyAxMzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
 dXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwp0eXBlZGVmIHN0cnVjdCBwYWdlIHsKICAgICAg
 ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h
 cHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBzdHJ1Y3QgcGFnZSAq
 bmV4dF9oYXNoOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
 ZmxhZ3M7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnU7CiAgICAgICAgdW5zaWduZWQgbG9u
 ZyBhZ2U7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFn
 ZSAqKnBwcmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAg
 ICAgICB2b2lkICp2aXJ0dWFsOwogICAgICAgIHN0cnVjdCB6b25lX3N0cnVjdCAqem9uZTsKfSBt
 ZW1fbWFwX3Q7CiMgMTg4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDMKZXh0ZXJuIHZvaWQgX19zZXRfcGFnZV9k
 aXJ0eShzdHJ1Y3QgcGFnZSAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9kaXJ0eShz
 dHJ1Y3QgcGFnZSAqIHBhZ2UpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoNCwgJnBh
 Z2UtPmZsYWdzKSkKICAgICAgICAgICAgICAgIF9fc2V0X3BhZ2VfZGlydHkocGFnZSk7Cn0KIyAz
 MzggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
 Y2x1ZGUvbGludXgvbW0uaCIgMwpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcDsKCgoKCgoKCmV4
 dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXMoem9uZWxpc3RfdCAqem9uZWxpc3QsIHVu
 c2lnbmVkIGxvbmcgb3JkZXIpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdlc19ub2Rl
 KGludCBuaWQsIGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9uZyBvcmRlcik7CgoKc3RhdGljIGlu
 bGluZSBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u
 ZyBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRlciA+PSAxMCkKICAgICAgICAgICAgICAgIHJl
 dHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX19hbGxvY19wYWdlcyhjb250aWdfcGFn
 ZV9kYXRhLm5vZGVfem9uZWxpc3RzKyhnZnBfbWFzayksIG9yZGVyKTsKfQoKCgoKCgpleHRlcm4g
 dW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u
 ZyBvcmRlcik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZShpbnQgZ2ZwX21h
 c2spOwojIDM4MiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
 eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCmV4dGVybiB2b2lkIF9fZnJlZV9wYWdlcyhzdHJ1
 Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvcmRlcik7CmV4dGVybiB2b2lkIGZyZWVfcGFn
 ZXModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG9yZGVyKTsKCgoKCmV4dGVybiB2
 b2lkIHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25v
 ZGUocGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1
 Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3QgcGFnZSAqIHNobWVt
 X25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
 cywgaW50IG5vX3NoYXJlKTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqIG5h
 bWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZp
 bGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVh
 X3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3Qg
 Km1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBp
 bnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVj
 dCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFn
 ZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxv
 bmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVu
 c2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4
 dGVybiB2b2lkIHZtdHJ1bmNhdGUoc3RydWN0IGlub2RlICogaW5vZGUsIGxvZmZfdCBvZmZzZXQp
 OwpleHRlcm4gaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxzdHJ1Y3Qg
 dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNj
 ZXNzKTsKZXh0ZXJuIGludCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5zaWduZWQgbG9uZyBhZGRyLCB1
 bnNpZ25lZCBsb25nIGVuZCk7CmV4dGVybiBpbnQgYWNjZXNzX3Byb2Nlc3Nfdm0oc3RydWN0IHRh
 c2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqYnVmLCBpbnQgbGVuLCBp
 bnQgd3JpdGUpOwpleHRlcm4gaW50IHB0cmFjZV9yZWFkZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3Qg
 KnRzaywgdW5zaWduZWQgbG9uZyBzcmMsIGNoYXIgKmRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQg
 cHRyYWNlX3dyaXRlZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY2hhciAqIHNyYywgdW5z
 aWduZWQgbG9uZyBkc3QsIGludCBsZW4pOwoKZXh0ZXJuIGludCBwZ3RfY2FjaGVfd2F0ZXJbMl07
 CmV4dGVybiBpbnQgY2hlY2tfcGd0X2NhY2hlKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZnJlZV9hcmVh
 X2luaXQodW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUpOwpleHRlcm4gdm9pZCBmcmVlX2FyZWFf
 aW5pdF9ub2RlKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQsIHN0cnVjdCBwYWdlICpwbWFwLAog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgKiB6b25lc19zaXplLCB1bnNpZ25lZCBsb25nIHpvbmVfc3Rh
 cnRfcGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUpOwpleHRlcm4gdm9p
 ZCBtZW1faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19tZW0odm9pZCk7CmV4dGVybiB2b2lk
 IHNpX21lbWluZm8oc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBzd2FwaW5fcmVh
 ZGFoZWFkKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gdm9pZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1
 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHVubG9ja192bWFfbWFwcGluZ3Moc3Ry
 dWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVj
 dCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBfX2lu
 c2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
 Kik7CmV4dGVybiB2b2lkIGJ1aWxkX21tYXBfYXZsKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CmV4dGVy
 biB2b2lkIGV4aXRfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICopOwpleHRlcm4gdW5zaWduZWQgbG9u
 ZyBnZXRfdW5tYXBwZWRfYXJlYSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy
 biB1bnNpZ25lZCBsb25nIGRvX21tYXBfcGdvZmYoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVk
 IGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwcm90
 LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBwZ29mZik7CgpzdGF0
 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWdu
 ZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHBy
 b3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewog
 ICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgob2Zmc2V0ICsgKCgo
 bGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9mZnNldCkKICAgICAg
 ICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4ofigoMVVMIDw8IDEy
 KS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZihmaWxlLCBhZGRyLCBs
 ZW4sIHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoKICAgICAgICByZXR1cm4gcmV0Owp9
 CgpleHRlcm4gaW50IGRvX211bm1hcChzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcs
 IHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19icmsodW5zaWduZWQgbG9uZywgdW5z
 aWduZWQgbG9uZyk7CgpzdHJ1Y3Qgem9uZV90OwoKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX3Bh
 Z2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBhZ2VfdW51c2Uoc3RydWN0
 IHBhZ2UgKik7CmV4dGVybiB2b2lkIHRydW5jYXRlX2lub2RlX3BhZ2VzKHN0cnVjdCBhZGRyZXNz
 X3NwYWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmMoc3RydWN0IHZtX2Fy
 ZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgdW5zaWduZWQgaW50KTsKZXh0ZXJu
 IHN0cnVjdCBwYWdlICpmaWxlbWFwX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgdW5z
 aWduZWQgbG9uZywgaW50KTsKIyA0OTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwpzdGF0aWMgaW5saW5lIGlu
 dCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25n
 IGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgogICAgICAgIGFkZHJlc3Mg
 Jj0gKH4oKDFVTCA8PCAxMiktMSkpOwogICAgICAgIGdyb3cgPSAodm1hLT52bV9zdGFydCAtIGFk
 ZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZtX2VuZCAtIGFkZHJlc3MgPiBjdXJyZW50
 LT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAgICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0g
 KyBncm93KSA8PCAxMikgPiBjdXJyZW50LT5ybGltWzldLnJsaW1fY3VyKQogICAgICAgICAgICAg
 ICAgcmV0dXJuIC0xMjsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2
 bWEtPnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3Jv
 dzsKICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAg
 ICB2bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICByZXR1cm4gMDsKfQoKCmV4
 dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICog
 bW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBm
 aW5kX3ZtYV9wcmV2KHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyLAog
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJl
 YV9zdHJ1Y3QgKipwcHJldik7CgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZtX2FyZWFfc3RydWN0
 ICogZmluZF92bWFfaW50ZXJzZWN0aW9uKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQg
 bG9uZyBzdGFydF9hZGRyLCB1bnNpZ25lZCBsb25nIGVuZF9hZGRyKQp7CiAgICAgICAgc3RydWN0
 IHZtX2FyZWFfc3RydWN0ICogdm1hID0gZmluZF92bWEobW0sc3RhcnRfYWRkcik7CgogICAgICAg
 IGlmICh2bWEgJiYgZW5kX2FkZHIgPD0gdm1hLT52bV9zdGFydCkKICAgICAgICAgICAgICAgIHZt
 YSA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiB2bWE7Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1f
 YXJlYV9zdHJ1Y3QgKmZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWdu
 ZWQgbG9uZyBhZGRyKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDIgMwojIDQ2ICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Ns
 YWIuaCIgMwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGtt
 ZW1fY2FjaGVfc2l6ZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBrbWVtX2NhY2hlX3QgKmttZW1fZmlu
 ZF9nZW5lcmFsX2NhY2hlcChzaXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hl
 X3QgKmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIHVuc2ln
 bmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCop
 KHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1
 bnNpZ25lZCBsb25nKSk7CmV4dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95KGttZW1fY2FjaGVf
 dCAqKTsKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKik7CmV4dGVy
 biB2b2lkICprbWVtX2NhY2hlX2FsbG9jKGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9p
 ZCBrbWVtX2NhY2hlX2ZyZWUoa21lbV9jYWNoZV90ICosIHZvaWQgKik7CgpleHRlcm4gdm9pZCAq
 a21hbGxvYyhzaXplX3QsIGludCk7CmV4dGVybiB2b2lkIGtmcmVlKGNvbnN0IHZvaWQgKik7Cgpl
 eHRlcm4gdm9pZCBrbWVtX2NhY2hlX3JlYXAoaW50KTsKZXh0ZXJuIGludCBzbGFiaW5mb19yZWFk
 X3Byb2MoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwpleHRl
 cm4gaW50IHNsYWJpbmZvX3dyaXRlX3Byb2Moc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIg
 KmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwg
 dm9pZCAqZGF0YSk7CgoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqdm1fYXJlYV9jYWNoZXA7CmV4dGVy
 biBrbWVtX2NhY2hlX3QgKm1tX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqbmFtZXNfY2Fj
 aGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxlc19jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hl
 X3QgKmZpbHBfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpkcXVvdF9jYWNoZXA7CmV4dGVy
 biBrbWVtX2NhY2hlX3QgKmJoX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZnNfY2FjaGVw
 OwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDYgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19m
 cy5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9saW51eC9wcm9jX2ZzLmgiIDMKZW51bSB7CiAgICAgICAgUFJPQ19S
 T09UX0lOTyA9IDEsCn07CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19mcy5oIiAzCnR5cGVkZWYgaW50IChy
 ZWFkX3Byb2NfdCkoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAg
 ICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CnR5cGVk
 ZWYgaW50ICh3cml0ZV9wcm9jX3QpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZm
 ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQg
 KmRhdGEpOwp0eXBlZGVmIGludCAoZ2V0X2luZm9fdCkoY2hhciAqLCBjaGFyICoqLCBvZmZfdCwg
 aW50KTsKCnN0cnVjdCBwcm9jX2Rpcl9lbnRyeSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG93
 X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBuYW1lbGVuOwogICAgICAgIGNvbnN0IGNoYXIg
 Km5hbWU7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAgbmxpbmtfdCBubGluazsKICAgICAg
 ICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6
 ZTsKICAgICAgICBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqIHByb2NfaW9wczsKICAgICAgICBz
 dHJ1Y3QgZmlsZV9vcGVyYXRpb25zICogcHJvY19mb3BzOwogICAgICAgIGdldF9pbmZvX3QgKmdl
 dF9pbmZvOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBwcm9j
 X2Rpcl9lbnRyeSAqbmV4dCwgKnBhcmVudCwgKnN1YmRpcjsKICAgICAgICB2b2lkICpkYXRhOwog
 ICAgICAgIHJlYWRfcHJvY190ICpyZWFkX3Byb2M7CiAgICAgICAgd3JpdGVfcHJvY190ICp3cml0
 ZV9wcm9jOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBkZWxldGVkOwogICAg
 ICAgIGtkZXZfdCByZGV2Owp9OwoKCgoKCmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgcHJv
 Y19yb290OwpleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX3Jvb3RfZnM7CmV4dGVy
 biBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfbmV0OwpleHRlcm4gc3RydWN0IHByb2NfZGly
 X2VudHJ5ICpwcm9jX2J1czsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290
 X2RyaXZlcjsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290X2tjb3JlOwoK
 ZXh0ZXJuIHZvaWQgcHJvY19yb290X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHByb2NfbWlzY19p
 bml0KHZvaWQpOwoKc3RydWN0IGRlbnRyeSAqcHJvY19waWRfbG9va3VwKHN0cnVjdCBpbm9kZSAq
 ZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KTsKdm9pZCBwcm9jX3BpZF9kZWxldGVfaW5vZGUo
 c3RydWN0IGlub2RlICppbm9kZSk7CmludCBwcm9jX3BpZF9yZWFkZGlyKHN0cnVjdCBmaWxlICog
 ZmlscCwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpOwoKZXh0ZXJuIHN0cnVjdCBw
 cm9jX2Rpcl9lbnRyeSAqY3JlYXRlX3Byb2NfZW50cnkoY29uc3QgY2hhciAqbmFtZSwgbW9kZV90
 IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
 cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcGFyZW50KTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3Byb2NfZW50
 cnkoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwYXJlbnQpOwoKZXh0
 ZXJuIHN0cnVjdCB2ZnNtb3VudCAqcHJvY19tbnQ7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
 KnByb2NfcmVhZF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKix2b2lkICosaW50KTsKZXh0ZXJu
 IHN0cnVjdCBpbm9kZSAqIHByb2NfZ2V0X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQs
 IHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVybiBpbnQgcHJvY19tYXRjaChpbnQsIGNv
 bnN0IGNoYXIgKixzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKik7CiMgMTEwICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2Nf
 ZnMuaCIgMwpleHRlcm4gaW50IHByb2NfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZp
 bGxkaXJfdCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2xvb2t1cChzdHJ1Y3QgaW5vZGUg
 Kiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2Nf
 a2NvcmVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19rbXNn
 X29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHBwY19odGFiX29wZXJh
 dGlvbnM7CgoKCgpleHRlcm4gdm9pZCBwcm9jX3R0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBw
 cm9jX3R0eV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVy
 biB2b2lkIHByb2NfdHR5X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2
 ZXIpOwoKCgoKZXh0ZXJuIHZvaWQgcHJvY19kZXZpY2VfdHJlZV9pbml0KHZvaWQpOwoKCgoKZXh0
 ZXJuIHZvaWQgcHJvY19ydGFzX2luaXQodm9pZCk7CgpleHRlcm4gc3RydWN0IHByb2NfZGlyX2Vu
 dHJ5ICpwcm9jX3N5bWxpbmsoY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgc3RydWN0IHBy
 b2NfZGlyX2VudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50
 cnkgKnByb2NfbWtub2QoY29uc3QgY2hhciAqLG1vZGVfdCwKICAgICAgICAgICAgICAgIHN0cnVj
 dCBwcm9jX2Rpcl9lbnRyeSAqLGtkZXZfdCk7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkg
 KnByb2NfbWtkaXIoY29uc3QgY2hhciAqLHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVy
 biBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpjcmVhdGVfcHJvY19yZWFkX2VudHJ5KGNv
 bnN0IGNoYXIgKm5hbWUsCiAgICAgICAgbW9kZV90IG1vZGUsIHN0cnVjdCBwcm9jX2Rpcl9lbnRy
 eSAqYmFzZSwKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jLCB2b2lkICogZGF0YSkKewog
 ICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5KG5hbWUs
 bW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICAgICAgICByZXMtPnJlYWRf
 cHJvYz1yZWFkX3Byb2M7CiAgICAgICAgICAgICAgICByZXMtPmRhdGE9ZGF0YTsKICAgICAgICB9
 CiAgICAgICAgcmV0dXJuIHJlczsKfQoKZXh0ZXJuIGlubGluZSBzdHJ1Y3QgcHJvY19kaXJfZW50
 cnkgKmNyZWF0ZV9wcm9jX2luZm9fZW50cnkoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2Rl
 X3QgbW9kZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpiYXNlLCBnZXRfaW5mb190ICpnZXRfaW5m
 bykKewogICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5
 KG5hbWUsbW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSByZXMtPmdldF9pbmZvPWdldF9pbmZv
 OwogICAgICAgIHJldHVybiByZXM7Cn0KCmV4dGVybiBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2Vu
 dHJ5ICpwcm9jX25ldF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2RlX3QgbW9k
 ZSwgZ2V0X2luZm9fdCAqZ2V0X2luZm8pCnsKICAgICAgICByZXR1cm4gY3JlYXRlX3Byb2NfaW5m
 b19lbnRyeShuYW1lLG1vZGUscHJvY19uZXQsZ2V0X2luZm8pOwp9CgpleHRlcm4gaW5saW5lIHZv
 aWQgcHJvY19uZXRfcmVtb3ZlKGNvbnN0IGNoYXIgKm5hbWUpCnsKICAgICAgICByZW1vdmVfcHJv
 Y19lbnRyeShuYW1lLHByb2NfbmV0KTsKfQojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKCiMgMSAi
 L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
 ZS9hc20vaGRyZWcuaCIgMSAzCiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2hkcmVnLmgiIDMKdHlwZWRlZiB1bnNpZ25l
 ZCBpbnQgaWRlX2lvcmVnX3Q7CiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDIgMwojIDgwICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L2lkZS5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBieXRlOwojIDIyMSAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUu
 aCIgMwpzdHJ1Y3QgaHdpZl9zOwp0eXBlZGVmIGludCAoaWRlX2Fja19pbnRyX3QpKHN0cnVjdCBo
 d2lmX3MgKik7CiMgMjMxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYgc3RydWN0IGh3X3JlZ3Nf
 cyB7CiAgICAgICAgaWRlX2lvcmVnX3QgaW9fcG9ydHNbKDEwKV07CiAgICAgICAgaW50IGlycTsK
 ICAgICAgICBpbnQgZG1hOwogICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50cjsKICAgICAg
 ICB2b2lkICpwcml2Owp9IGh3X3JlZ3NfdDsKCgoKCmludCBpZGVfcmVnaXN0ZXJfaHcoaHdfcmVn
 c190ICpodywgc3RydWN0IGh3aWZfcyAqKmh3aWZwKTsKCgoKCnZvaWQgaWRlX3NldHVwX3BvcnRz
 KCBod19yZWdzX3QgKmh3LAogICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBiYXNl
 LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm9mZnNldHMsCiAgICAgICAgICAgICAgICAg
 ICAgICAgIGlkZV9pb3JlZ190IGN0cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl
 Z190IGludHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50
 ciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlycSk7CgojIDEgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAx
 IDMKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
 b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTcg
 Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
 ZGUvYXNtL2lkZS5oIiAyIDMKIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
 cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2
 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAx
 IDMKIyAyNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9hc20vaW8uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
 Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAxIDMKIyAzMyAiL29w
 dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
 c20vcHBjNHh4LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9p
 NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNo
 ZGVwLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNoZGVwLmgiIDMKc3RydWN0IHB0X3JlZ3M7CnN0cnVj
 dCBwY2lfYnVzOwpzdHJ1Y3QgcGNpX2RldjsKCnN0cnVjdCBtYWNoZGVwX2NhbGxzIHsKICAgICAg
 ICB2b2lkICgqc2V0dXBfYXJjaCkodm9pZCk7CgogICAgICAgIGludCAoKnNldHVwX3Jlc2lkdWFs
 KShjaGFyICpidWZmZXIpOwoKICAgICAgICBpbnQgKCpnZXRfY3B1aW5mbykoY2hhciAqYnVmZmVy
 KTsKCiAgICAgICAgdW5zaWduZWQgaW50ICgqaXJxX2Nhbm5vbmljYWxpemUpKHVuc2lnbmVkIGlu
 dCBpcnEpOwogICAgICAgIHZvaWQgKCppbml0X0lSUSkodm9pZCk7CiAgICAgICAgaW50ICgqZ2V0
 X2lycSkoc3RydWN0IHB0X3JlZ3MgKik7CiAgICAgICAgdm9pZCAoKnBvc3RfaXJxKSggc3RydWN0
 IHB0X3JlZ3MgKiwgaW50ICk7CgoKCiAgICAgICAgdm9pZCAoKmluaXQpKHZvaWQpOwoKICAgICAg
 ICB2b2lkICgqcmVzdGFydCkoY2hhciAqY21kKTsKICAgICAgICB2b2lkICgqcG93ZXJfb2ZmKSh2
 b2lkKTsKICAgICAgICB2b2lkICgqaGFsdCkodm9pZCk7CgogICAgICAgIGxvbmcgKCp0aW1lX2lu
 aXQpKHZvaWQpOwogICAgICAgIGludCAoKnNldF9ydGNfdGltZSkodW5zaWduZWQgbG9uZyBub3d0
 aW1lKTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3J0Y190aW1lKSh2b2lkKTsKICAgICAg
 ICB2b2lkICgqY2FsaWJyYXRlX2RlY3IpKHZvaWQpOwoKICAgICAgICB2b2lkICgqaGVhcnRiZWF0
 KSh2b2lkKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9yZXNldDsKICAgICAgICB1
 bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9jb3VudDsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nICgq
 ZmluZF9lbmRfb2ZfbWVtb3J5KSh2b2lkKTsKCiAgICAgICAgdm9pZCAoKnByb2dyZXNzKShjaGFy
 ICosIHVuc2lnbmVkIHNob3J0KTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAoKm52cmFtX3JlYWRf
 dmFsKShpbnQgYWRkcik7CiAgICAgICAgdm9pZCAoKm52cmFtX3dyaXRlX3ZhbCkoaW50IGFkZHIs
 IHVuc2lnbmVkIGNoYXIgdmFsKTsKCgogICAgICAgIGludCAoKmtiZF9zZXRrZXljb2RlKSh1bnNp
 Z25lZCBpbnQgc2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
 ZWQgaW50IGtleWNvZGUpOwogICAgICAgIGludCAoKmtiZF9nZXRrZXljb2RlKSh1bnNpZ25lZCBp
 bnQgc2NhbmNvZGUpOwogICAgICAgIGludCAoKmtiZF90cmFuc2xhdGUpKHVuc2lnbmVkIGNoYXIg
 c2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq
 a2V5Y29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHJhd19tb2RlKTsK
 ICAgICAgICBjaGFyICgqa2JkX3VuZXhwZWN0ZWRfdXApKHVuc2lnbmVkIGNoYXIga2V5Y29kZSk7
 CiAgICAgICAgdm9pZCAoKmtiZF9sZWRzKSh1bnNpZ25lZCBjaGFyIGxlZHMpOwogICAgICAgIHZv
 aWQgKCprYmRfaW5pdF9odykodm9pZCk7CiMgNzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21hY2hkZXAuaCIgMwogICAgICAg
 IHZvaWQgKCpwY2liaW9zX2ZpeHVwKSh2b2lkKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf
 Zml4dXBfYnVzKShzdHJ1Y3QgcGNpX2J1cyAqKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf
 Zml4dXBfcmVzb3VyY2VzKShzdHJ1Y3QgcGNpX2RldiAqKTsKCgoKCiAgICAgICAgaW50ICgqcGNp
 Ymlvc19lbmFibGVfZGV2aWNlX2hvb2spKHN0cnVjdCBwY2lfZGV2ICosIGludCBpbml0aWFsKTsK
 CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKCpwY2lfc3dpenpsZSkoc3RydWN0IHBjaV9kZXYgKiwg
 dW5zaWduZWQgY2hhciAqKTsKICAgICAgICBpbnQgKCpwY2lfbWFwX2lycSkoc3RydWN0IHBjaV9k
 ZXYgKiwgdW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcik7CgoKICAgICAgICBpbnQgcHBjX21h
 Y2hpbmU7Cn07CgpleHRlcm4gc3RydWN0IG1hY2hkZXBfY2FsbHMgcHBjX21kOwpleHRlcm4gY2hh
 ciBjbWRfbGluZVs1MTJdOwoKZXh0ZXJuIHZvaWQgc2V0dXBfcGNpX3B0cnModm9pZCk7CgoKCgoK
 dHlwZWRlZiBlbnVtIHN5c19jdHJsZXJfa2luZCB7CiAgICAgICAgU1lTX0NUUkxFUl9VTktOT1dO
 ID0gMCwKICAgICAgICBTWVNfQ1RSTEVSX0NVREEgPSAxLAogICAgICAgIFNZU19DVFJMRVJfUE1V
 ID0gMiwKfSBzeXNfY3RybGVyX3Q7CgpleHRlcm4gc3lzX2N0cmxlcl90IHN5c19jdHJsZXI7CiMg
 NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
 bHVkZS9hc20vaXJxLmgiIDIgMwoKCmV4dGVybiB2b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGlu
 dCk7CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOwpleHRlcm4g
 dm9pZCBlbmFibGVfaXJxKHVuc2lnbmVkIGludCk7CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
 dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lycS5oIiAzCnN0YXRp
 YyBfX2lubGluZV9fIGludAppcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0
 dXJuIChpcnEpOwp9CiMgMjQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
 cGNfY2FjaGVkX2lycV9tYXNrWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIHVuc2lnbmVkIGxv
 bmcgcHBjX2VuYWJsZWRfaXJxX21hc2tbKCgxMjggKyAzMSkgLyAzMildOwpleHRlcm4gdW5zaWdu
 ZWQgbG9uZyBwcGNfbG9zdF9pbnRlcnJ1cHRzWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIGF0
 b21pY190IHBwY19uX2xvc3RfaW50ZXJydXB0czsKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51
 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHBjNHh4LmgiIDIgMwoj
 IDIwOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9hc20vcHBjNHh4LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgYm9hcmRfaW5mbyB7CiAgICAg
 ICAgdW5zaWduZWQgY2hhciBiaV9zX3ZlcnNpb25bNF07CiAgICAgICAgdW5zaWduZWQgY2hhciBi
 aV9yX3ZlcnNpb25bMzBdOwogICAgICAgIHVuc2lnbmVkIGludCBiaV9tZW1zaXplOwogICAgICAg
 IHVuc2lnbmVkIGNoYXIgYmlfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBiaV9w
 Y2lfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgaW50IGJpX2ludGZyZXE7CiAgICAgICAg
 dW5zaWduZWQgaW50IGJpX2J1c2ZyZXE7CiAgICAgICAgdW5zaWduZWQgaW50IGJpX3BjaV9idXNm
 cmVxOwp9IGJkX3Q7CiMgMjI3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcGM0eHguaCIgMwpleHRlcm4gdW5zaWduZWQgY2hh
 ciBfX3Jlc1tdOwoKZXh0ZXJuIGludCBwcGM0MDVfZ2V0X2JvYXJkaW5mbyhpbnQgb3B0aW9uLCB1
 bnNpZ25lZCBsb25nIGJkX2VudHJ5KTsKIyAyNTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAzCmV4dGVybiB1
 bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpc2FfbWVtX2Jh
 c2U7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBjaV9kcmFtX29mZnNldDsKIyAyNSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8u
 aCIgMiAzCiMgMTUyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
 bnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiB2b2lkIF9pbnNiKHZvbGF0aWxlIHU4
 ICpwb3J0LCB2b2lkICpidWYsIGludCBucyk7CmV4dGVybiB2b2lkIF9vdXRzYih2b2xhdGlsZSB1
 OCAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zdyh2b2xh
 dGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsKZXh0ZXJuIHZvaWQgX291dHN3KHZv
 bGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBf
 aW5zbCh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQg
 X291dHNsKHZvbGF0aWxlIHUzMiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwpleHRl
 cm4gdm9pZCBfaW5zd19ucyh2b2xhdGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK
 ZXh0ZXJuIHZvaWQgX291dHN3X25zKHZvbGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVm
 LCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zbF9ucyh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQg
 KmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQgX291dHNsX25zKHZvbGF0aWxlIHUzMiAqcG9ydCwg
 Y29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwojIDE4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8uaCIgMwpleHRlcm4gdm9p
 ZCAqX19pb3JlbWFwKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAog
 ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq
 X19pb3JlbWFwX2F0KHVuc2lnbmVkIGxvbmcgcGh5cywgdW5zaWduZWQgbG9uZyBzaXplLAogICAg
 ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq
 aW9yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CgpleHRl
 cm4gdm9pZCBpb3VubWFwKHZvaWQgKmFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3BhKHVu
 c2lnbmVkIGxvbmcgYWRkcik7CgoKCmV4dGVybiB2b2lkICptZW1yZW1hcCh1bnNpZ25lZCBsb25n
 IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiMgMjA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiBp
 bmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX2J1cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykK
 ewoKCgoKCiAgICAgICAgcmV0dXJuIGlvcGEgKCh1bnNpZ25lZCBsb25nKSBhZGRyZXNzKSArIDA7
 CgoKCgoKfQoKZXh0ZXJuIGlubGluZSB2b2lkICogYnVzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBh
 ZGRyZXNzKQp7CgoKCiAgICAgICAgaWYgKGFkZHJlc3MgPT0gMCkKICAgICAgICAgICAgICAgIHJl
 dHVybiAwOwogICAgICAgIHJldHVybiAodm9pZCAqKShhZGRyZXNzIC0gMCArIDB4YzAwMDAwMDAp
 OwoKfQoKCgoKCmV4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRp
 bGUgdm9pZCAqIGFkZHJlc3MpCnsKCgoKCgogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykg
 YWRkcmVzcyAtIDB4YzAwMDAwMDA7Cgp9CgpleHRlcm4gaW5saW5lIHZvaWQgKiBwaHlzX3RvX3Zp
 cnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CgoKCgoKICAgICAgICByZXR1cm4gKHZvaWQgKikg
 KGFkZHJlc3MgKyAweGMwMDAwMDAwKTsKCn0KIyAyNjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
 Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlu
 bGluZSB2b2lkIGVpZWlvKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVp
 ZWlvIiA6IDogOiAibWVtb3J5Iik7Cn0KIyAyNzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlubGlu
 ZSBpbnQgaW5fOCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICphZGRyKQp7CiAgICAgICAgaW50IHJl
 dDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxieiVVMSVYMSAlMCwlMTsgZWllaW8i
 IDogIj1yIiAocmV0KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRl
 cm4gaW5saW5lIHZvaWQgb3V0Xzgodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqYWRkciwgaW50IHZh
 bCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGIlVTAlWDAgJTEsJTA7IGVpZWlv
 IiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVybiBpbmxpbmUgaW50IGluX2xl
 MTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIpCnsKICAgICAgICBpbnQgcmV0OwoKICAg
 ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibGhicnggJTAsMCwlMTsgZWllaW8iIDogIj1yIiAo
 cmV0KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAoYWRkciksICJtIiAoKmFk
 ZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIGludCBpbl9iZTE2KHZv
 bGF0aWxlIHVuc2lnbmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgaW50IHJldDsKCiAgICAgICAg
 X19hc21fXyBfX3ZvbGF0aWxlX18oImxoeiVVMSVYMSAlMCwlMTsgZWllaW8iIDogIj1yIiAocmV0
 KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZv
 aWQgb3V0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGludCB2YWwpCnsKICAg
 ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RoYnJ4ICUxLDAsJTI7IGVpZWlvIiA6ICI9bSIg
 KCphZGRyKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAodmFsKSwgInIiIChh
 ZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUxNih2b2xhdGlsZSB1bnNpZ25lZCBz
 aG9ydCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGgl
 VTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVy
 biBpbmxpbmUgdW5zaWduZWQgaW5fbGUzMih2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg
 ICAgIHVuc2lnbmVkIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImx3YnJ4ICUw
 LDAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICJyIiAoYWRkciksICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4g
 aW5saW5lIHVuc2lnbmVkIGluX2JlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIpCnsKICAgICAg
 ICB1bnNpZ25lZCByZXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsd3olVTElWDEg
 JTAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOiAibSIgKCphZGRyKSk7CiAgICAgICAgcmV0dXJu
 IHJldDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkIG91dF9sZTMyKHZvbGF0aWxlIHVuc2lnbmVkICph
 ZGRyLCBpbnQgdmFsKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0d2JyeCAlMSww
 LCUyOyBlaWVpbyIgOiAiPW0iICgqYWRkcikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICJyIiAodmFsKSwgInIiIChhZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUzMih2
 b2xhdGlsZSB1bnNpZ25lZCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xh
 dGlsZV9fKCJzdHclVTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFs
 KSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlv
 X2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3Ro
 KQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
 aWYgKGluXzgoKHZvbGF0aWxlIHU4ICopKGlvX2FkZHIpKSAhPSAqc2lnbmF0dXJlKQogICAgICAg
 ICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAg
 ICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAg
 ICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0
 dXJuIHJldHZhbDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IGlzYV9jaGVja19zaWduYXR1cmUodW5z
 aWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNpZ25hdHVy
 ZSwgaW50IGxlbmd0aCkKewogICAgICAgIHJldHVybiAwOwp9CgoKCmV4dGVybiB2b2lkIGludmFs
 aWRhdGVfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k
 KTsKZXh0ZXJuIHZvaWQgZmx1c2hfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu
 c2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIHZvaWQgd2JhY2tfaW52X2RjYWNoZV9yYW5nZSh1bnNp
 Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CiMgMjggIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAy
 IDMKCmV4dGVybiBpbnQgcG1hY19pZGVfcG9ydHNfa25vd247CmV4dGVybiBpZGVfaW9yZWdfdCBw
 bWFjX2lkZV9yZWdiYXNlWzRdOwpleHRlcm4gaW50IHBtYWNfaWRlX2lycVs0XTsKZXh0ZXJuIHZv
 aWQgcG1hY19pZGVfcHJvYmUodm9pZCk7CgpleHRlcm4gaW50IGNocnBfaWRlX3BvcnRzX2tub3du
 OwpleHRlcm4gaWRlX2lvcmVnX3QgY2hycF9pZGVfcmVnYmFzZVs0XTsKZXh0ZXJuIGlkZV9pb3Jl
 Z190IGNocnBfaWRlZG1hX3JlZ2Jhc2U7CmV4dGVybiB1bnNpZ25lZCBpbnQgY2hycF9pZGVfaXJx
 OwpleHRlcm4gdm9pZCBjaHJwX2lkZV9wcm9iZSh2b2lkKTsKCmV4dGVybiB2b2lkIHBwY19nZW5l
 cmljX2lkZV9maXhfZHJpdmVpZChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpOwoKc3RydWN0IGlkZV9t
 YWNoZGVwX2NhbGxzIHsKICAgICAgICB2b2lkICgqaW5zdykoaWRlX2lvcmVnX3QgcG9ydCwgdm9p
 ZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIHZvaWQgKCpvdXRzdykoaWRlX2lvcmVnX3QgcG9ydCwg
 dm9pZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIGludCAoKmRlZmF1bHRfaXJxKShpZGVfaW9yZWdf
 dCBiYXNlKTsKICAgICAgICBpZGVfaW9yZWdfdCAoKmRlZmF1bHRfaW9fYmFzZSkoaW50IGluZGV4
 KTsKICAgICAgICBpbnQgKCppZGVfY2hlY2tfcmVnaW9uKShpZGVfaW9yZWdfdCBmcm9tLCB1bnNp
 Z25lZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqaWRlX3JlcXVlc3RfcmVnaW9uKShpZGVf
 aW9yZWdfdCBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
 bmVkIGludCBleHRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
 c3QgY2hhciAqbmFtZSk7CiAgICAgICAgdm9pZCAoKmlkZV9yZWxlYXNlX3JlZ2lvbikoaWRlX2lv
 cmVnX3QgZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
 ZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqZml4X2RyaXZlaWQpKHN0cnVjdCBoZF9kcml2
 ZWlkICppZCk7CiAgICAgICAgdm9pZCAoKmlkZV9pbml0X2h3aWYpKGh3X3JlZ3NfdCAqaHcsCiAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBkYXRhX3BvcnQs
 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBjdHJsX3Bv
 cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlycSk7CgogICAg
 ICAgIGludCBpb19iYXNlOwp9OwoKZXh0ZXJuIHN0cnVjdCBpZGVfbWFjaGRlcF9jYWxscyBwcGNf
 aWRlX21kOwoKdm9pZCBpZGVfaW5zdyhpZGVfaW9yZWdfdCBwb3J0LCB2b2lkICpidWYsIGludCBu
 cyk7CnZvaWQgaWRlX291dHN3KGlkZV9pb3JlZ190IHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK
 dm9pZCBwcGNfZ2VuZXJpY19pZGVfZml4X2RyaXZlaWQoc3RydWN0IGhkX2RyaXZlaWQgKmlkKTsK
 IyA4NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9hc20vaWRlLmgiIDMKc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9kZWZhdWx0X2ly
 cShpZGVfaW9yZWdfdCBiYXNlKQp7CiAgICAgICAgaWYgKCBwcGNfaWRlX21kLmRlZmF1bHRfaXJx
 ICkKICAgICAgICAgICAgICAgIHJldHVybiBwcGNfaWRlX21kLmRlZmF1bHRfaXJxKGJhc2UpOwog
 ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKfQoKc3RhdGljIF9faW5saW5l
 X18gaWRlX2lvcmVnX3QgaWRlX2RlZmF1bHRfaW9fYmFzZShpbnQgaW5kZXgpCnsKICAgICAgICBp
 ZiAocHBjX2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UpCiAgICAgICAgICAgICAgICByZXR1cm4gcHBj
 X2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UoaW5kZXgpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0
 aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywKICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3JlZ190IGRhdGFf
 cG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl
 Z190IGN0cmxfcG9ydCwgaW50ICppcnEpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfaW5p
 dF9od2lmICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfaW5p
 dF9od2lmKGh3LCBkYXRhX3BvcnQsIGN0cmxfcG9ydCwgaXJxKTsKfQoKc3RhdGljIF9faW5saW5l
 X18gdm9pZCBpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKHZvaWQpCnsKCiAgICAgICAgaHdfcmVnc190
 IGh3OwogICAgICAgIGludCBpbmRleDsKICAgICAgICBpZGVfaW9yZWdfdCBiYXNlOwoKICAgICAg
 ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0OyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICBi
 YXNlID0gaWRlX2RlZmF1bHRfaW9fYmFzZShpbmRleCk7CiAgICAgICAgICAgICAgICBpZiAoYmFz
 ZSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
 IGlkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBiYXNlLCAwLCAoKHZvaWQgKikwKSk7CiAgICAgICAg
 ICAgICAgICBody5pcnEgPSBpZGVfZGVmYXVsdF9pcnEoYmFzZSk7CiAgICAgICAgICAgICAgICBp
 ZGVfcmVnaXN0ZXJfaHcoJmh3LCAoKHZvaWQgKikwKSk7CiAgICAgICAgfQoKfQoKc3RhdGljIF9f
 aW5saW5lX18gaW50IGlkZV9jaGVja19yZWdpb24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVk
 IGludCBleHRlbnQpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfY2hlY2tfcmVnaW9uKQog
 ICAgICAgICAgICAgICAgcmV0dXJuIHBwY19pZGVfbWQuaWRlX2NoZWNrX3JlZ2lvbihmcm9tLCBl
 eHRlbnQpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9y
 ZXF1ZXN0X3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCwgY29u
 c3QgY2hhciAqbmFtZSkKewogICAgICAgIGlmICggcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdp
 b24gKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdpb24oZnJvbSwg
 ZXh0ZW50LCBuYW1lKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVsZWFzZV9yZWdp
 b24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVkIGludCBleHRlbnQpCnsKICAgICAgICBpZiAo
 IHBwY19pZGVfbWQuaWRlX3JlbGVhc2VfcmVnaW9uICkKICAgICAgICAgICAgICAgIHBwY19pZGVf
 bWQuaWRlX3JlbGVhc2VfcmVnaW9uKGZyb20sIGV4dGVudCk7Cn0KCnN0YXRpYyBfX2lubGluZV9f
 IHZvaWQgaWRlX2ZpeF9kcml2ZWlkIChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpCnsKICAgICAgICBp
 ZiAoIHBwY19pZGVfbWQuZml4X2RyaXZlaWQgKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5m
 aXhfZHJpdmVpZChpZCk7Cn0KCnR5cGVkZWYgdW5pb24gewogICAgICAgIHVuc2lnbmVkIGFsbCA6
 IDg7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdDcgOiAxOwog
 ICAgICAgICAgICAgICAgdW5zaWduZWQgbGJhIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
 IGJpdDUgOiAxOwogICAgICAgICAgICAgICAgdW5zaWduZWQgdW5pdCA6IDE7CiAgICAgICAgICAg
 ICAgICB1bnNpZ25lZCBoZWFkIDogNDsKICAgICAgICB9IGI7Cn0gc2VsZWN0X3Q7CiMgMjU2ICIv
 b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
 L2xpbnV4L2lkZS5oIiAyIDMKIyAyNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiB1bmlvbiB7
 CiAgICAgICAgdW5zaWduZWQgYWxsIDogODsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
 ICAgdW5zaWduZWQgc2V0X2dlb21ldHJ5IDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJl
 Y2FsaWJyYXRlIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNldF9tdWx0bW9kZSA6IDE7
 CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXRfdHVuZSA6IDE7CiAgICAgICAgICAgICAgICB1
 bnNpZ25lZCByZXNlcnZlZCA6IDQ7CiAgICAgICAgfSBiOwp9IHNwZWNpYWxfdDsKCnR5cGVkZWYg
 c3RydWN0IGlkZV9kcml2ZV9zIHsKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcXVldWU7CiAgICAg
 ICAgc3RydWN0IGlkZV9kcml2ZV9zICpuZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXA7
 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJ2aWNlX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgc2VydmljZV90aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICAgICBz
 cGVjaWFsX3Qgc3BlY2lhbDsKICAgICAgICBieXRlIGtlZXBfc2V0dGluZ3M7CiAgICAgICAgYnl0
 ZSB1c2luZ19kbWE7CiAgICAgICAgYnl0ZSB3YWl0aW5nX2Zvcl9kbWE7CiAgICAgICAgYnl0ZSB1
 bm1hc2s7CiAgICAgICAgYnl0ZSBzbG93OwogICAgICAgIGJ5dGUgYnN3YXA7CiAgICAgICAgYnl0
 ZSBkc2Nfb3ZlcmxhcDsKICAgICAgICBieXRlIG5pY2UxOwogICAgICAgIHVuc2lnbmVkIHByZXNl
 bnQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGJ1
 c3kgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlbW92YWJsZSA6IDE7CiAgICAgICAgdW5zaWduZWQg
 Zm9yY2VkX2dlb20gOiAxOwogICAgICAgIHVuc2lnbmVkIG5vX3VubWFzayA6IDE7CiAgICAgICAg
 dW5zaWduZWQgbm9faW9fMzJiaXQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vYmlvcyA6IDE7CiAg
 ICAgICAgdW5zaWduZWQgcmV2YWxpZGF0ZSA6IDE7CiAgICAgICAgdW5zaWduZWQgYXRhcGlfb3Zl
 cmxhcCA6IDE7CiAgICAgICAgdW5zaWduZWQgbmljZTAgOiAxOwogICAgICAgIHVuc2lnbmVkIG5p
 Y2UyIDogMTsKICAgICAgICB1bnNpZ25lZCBkb29ybG9ja2luZyA6IDE7CiAgICAgICAgdW5zaWdu
 ZWQgYXV0b3R1bmUgOiAyOwogICAgICAgIHVuc2lnbmVkIHJlbWFwXzBfdG9fMSA6IDI7CiAgICAg
 ICAgdW5zaWduZWQgYXRhX2ZsYXNoIDogMTsKICAgICAgICBieXRlIHNjc2k7CiAgICAgICAgYnl0
 ZSBtZWRpYTsKICAgICAgICBzZWxlY3RfdCBzZWxlY3Q7CiAgICAgICAgYnl0ZSBjdGw7CiAgICAg
 ICAgYnl0ZSByZWFkeV9zdGF0OwogICAgICAgIGJ5dGUgbXVsdF9jb3VudDsKICAgICAgICBieXRl
 IG11bHRfcmVxOwogICAgICAgIGJ5dGUgdHVuZV9yZXE7CiAgICAgICAgYnl0ZSBpb18zMmJpdDsK
 ICAgICAgICBieXRlIGJhZF93c3RhdDsKICAgICAgICBieXRlIG5vd2VycjsKICAgICAgICBieXRl
 IHNlY3QwOwogICAgICAgIGJ5dGUgdXNhZ2U7CiAgICAgICAgYnl0ZSBoZWFkOwogICAgICAgIGJ5
 dGUgc2VjdDsKICAgICAgICBieXRlIGJpb3NfaGVhZDsKICAgICAgICBieXRlIGJpb3Nfc2VjdDsK
 ICAgICAgICB1bnNpZ25lZCBpbnQgYmlvc19jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IGN5bDsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIGNhcGFjaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBkcml2
 ZV9kYXRhOwogICAgICAgIHZvaWQgKmh3aWY7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3F1
 ZXVlOwogICAgICAgIHN0cnVjdCBoZF9kcml2ZWlkICppZDsKICAgICAgICBzdHJ1Y3QgaGRfc3Ry
 dWN0ICpwYXJ0OwogICAgICAgIGNoYXIgbmFtZVs0XTsKICAgICAgICB2b2lkICpkcml2ZXI7CiAg
 ICAgICAgdm9pZCAqZHJpdmVyX2RhdGE7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7CiAgICAg
 ICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAgICAgIHZvaWQgKnNldHRpbmdzOwog
 ICAgICAgIGNoYXIgZHJpdmVyX3JlcVsxMF07CiAgICAgICAgaW50IGxhc3RfbHVuOwogICAgICAg
 IGludCBmb3JjZWRfbHVuOwogICAgICAgIGludCBsdW47CiAgICAgICAgaW50IGNyY19jb3VudDsK
 ICAgICAgICBieXRlIHF1aXJrX2xpc3Q7CiAgICAgICAgYnl0ZSBzdXNwZW5kX3Jlc2V0OwogICAg
 ICAgIGJ5dGUgaW5pdF9zcGVlZDsKICAgICAgICBieXRlIGN1cnJlbnRfc3BlZWQ7CiAgICAgICAg
 Ynl0ZSBkbjsKfSBpZGVfZHJpdmVfdDsKIyAzNjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiBl
 bnVtIHsgaWRlX2RtYV9yZWFkLCBpZGVfZG1hX3dyaXRlLCBpZGVfZG1hX2JlZ2luLAogICAgICAg
 ICAgICAgICAgaWRlX2RtYV9lbmQsIGlkZV9kbWFfY2hlY2ssIGlkZV9kbWFfb24sCiAgICAgICAg
 ICAgICAgICBpZGVfZG1hX29mZiwgaWRlX2RtYV9vZmZfcXVpZXRseSwgaWRlX2RtYV90ZXN0X2ly
 cSwKICAgICAgICAgICAgICAgIGlkZV9kbWFfYmFkX2RyaXZlLCBpZGVfZG1hX2dvb2RfZHJpdmUs
 CiAgICAgICAgICAgICAgICBpZGVfZG1hX3ZlcmJvc2UsIGlkZV9kbWFfcmV0dW5lLAogICAgICAg
 ICAgICAgICAgaWRlX2RtYV9sb3N0aXJxLCBpZGVfZG1hX3RpbWVvdXQKfSBpZGVfZG1hX2FjdGlv
 bl90OwoKdHlwZWRlZiBpbnQgKGlkZV9kbWFwcm9jX3QpKGlkZV9kbWFfYWN0aW9uX3QsIGlkZV9k
 cml2ZV90ICopOwojIDM4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
 Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIHZvaWQgKGlkZV90dW5l
 cHJvY190KSAoaWRlX2RyaXZlX3QgKiwgYnl0ZSk7CnR5cGVkZWYgaW50IChpZGVfc3BlZWRwcm9j
 X3QpIChpZGVfZHJpdmVfdCAqLCBieXRlKTsKCgoKCnR5cGVkZWYgdm9pZCAoaWRlX3NlbGVjdHBy
 b2NfdCkgKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZvaWQgKGlkZV9yZXNldHByb2NfdCkgKGlk
 ZV9kcml2ZV90ICopOwp0eXBlZGVmIGludCAoaWRlX3F1aXJrcHJvY190KSAoaWRlX2RyaXZlX3Qg
 Kik7CnR5cGVkZWYgdm9pZCAoaWRlX2ludHJwcm9jX3QpIChpZGVfZHJpdmVfdCAqKTsKdHlwZWRl
 ZiB2b2lkIChpZGVfbWFza3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGludCk7CnR5cGVkZWYgdm9p
 ZCAoaWRlX3J3X3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGlkZV9kbWFfYWN0aW9uX3QpOwoKCgoK
 CnR5cGVkZWYgZW51bSB7IGlkZV91bmtub3duLCBpZGVfZ2VuZXJpYywgaWRlX3BjaSwKICAgICAg
 ICAgICAgICAgIGlkZV9jbWQ2NDAsIGlkZV9kdGMyMjc4LCBpZGVfYWxpMTR4eCwKICAgICAgICAg
 ICAgICAgIGlkZV9xZDY1ODAsIGlkZV91bWM4NjcyLCBpZGVfaHQ2NTYwYiwKICAgICAgICAgICAg
 ICAgIGlkZV9wZGM0MDMwLCBpZGVfcnoxMDAwLCBpZGVfdHJtMjkwLAogICAgICAgICAgICAgICAg
 aWRlX2NtZDY0NiwgaWRlX2N5ODJjNjkzLCBpZGVfNGRyaXZlcywKICAgICAgICAgICAgICAgIGlk
 ZV9wbWFjCn0gaHdpZl9jaGlwc2V0X3Q7CiMgNDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
 dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYg
 c3RydWN0IGh3aWZfcyB7CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbmV4dDsKICAgICAgICB2b2lk
 ICpod2dyb3VwOwogICAgICAgIGlkZV9pb3JlZ190IGlvX3BvcnRzWygxMCldOwogICAgICAgIGh3
 X3JlZ3NfdCBodzsKICAgICAgICBpZGVfZHJpdmVfdCBkcml2ZXNbMl07CiAgICAgICAgc3RydWN0
 IGdlbmRpc2sgKmdkOwogICAgICAgIGlkZV90dW5lcHJvY190ICp0dW5lcHJvYzsKICAgICAgICBp
 ZGVfc3BlZWRwcm9jX3QgKnNwZWVkcHJvYzsKICAgICAgICBpZGVfc2VsZWN0cHJvY190ICpzZWxl
 Y3Rwcm9jOwogICAgICAgIGlkZV9yZXNldHByb2NfdCAqcmVzZXRwcm9jOwogICAgICAgIGlkZV9p
 bnRycHJvY190ICppbnRycHJvYzsKICAgICAgICBpZGVfbWFza3Byb2NfdCAqbWFza3Byb2M7CiAg
 ICAgICAgaWRlX3F1aXJrcHJvY190ICpxdWlya3Byb2M7CiAgICAgICAgaWRlX3J3X3Byb2NfdCAq
 cndwcm9jOwogICAgICAgIGlkZV9kbWFwcm9jX3QgKmRtYXByb2M7CiAgICAgICAgdW5zaWduZWQg
 aW50ICpkbWF0YWJsZV9jcHU7CiAgICAgICAgZG1hX2FkZHJfdCBkbWF0YWJsZV9kbWE7CiAgICAg
 ICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ190YWJsZTsKICAgICAgICBpbnQgc2dfbmVudHM7CiAg
 ICAgICAgaW50IHNnX2RtYV9kaXJlY3Rpb247CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbWF0ZTsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIGRtYV9iYXNlOwogICAgICAgIHVuc2lnbmVkIGRtYV9leHRy
 YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNvbmZpZ19kYXRhOwogICAgICAgIHVuc2lnbmVkIGxv
 bmcgc2VsZWN0X2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAg
 ICAgIGludCBpcnE7CiAgICAgICAgYnl0ZSBtYWpvcjsKICAgICAgICBjaGFyIG5hbWVbNl07CiAg
 ICAgICAgYnl0ZSBpbmRleDsKICAgICAgICBod2lmX2NoaXBzZXRfdCBjaGlwc2V0OwogICAgICAg
 IHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIHByZXNlbnQgOiAxOwogICAg
 ICAgIHVuc2lnbmVkIHNlcmlhbGl6ZWQgOiAxOwogICAgICAgIHVuc2lnbmVkIHNoYXJpbmdfaXJx
 OiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2V0IDogMTsKICAgICAgICB1bnNpZ25lZCBhdXRvZG1h
 IDogMTsKICAgICAgICB1bnNpZ25lZCB1ZG1hX2ZvdXIgOiAxOwogICAgICAgIGJ5dGUgY2hhbm5l
 bDsKCgoKCgoKCiAgICAgICAgYnl0ZSBzdHJhaWdodDg7CiAgICAgICAgdm9pZCAqaHdpZl9kYXRh
 Owp9IGlkZV9od2lmX3Q7CgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBpZGVfc3RvcHBlZCwK
 ICAgICAgICBpZGVfc3RhcnRlZAp9IGlkZV9zdGFydHN0b3BfdDsKCgoKCnR5cGVkZWYgaWRlX3N0
 YXJ0c3RvcF90IChpZGVfaGFuZGxlcl90KShpZGVfZHJpdmVfdCAqKTsKCgoKCgp0eXBlZGVmIGlu
 dCAoaWRlX2V4cGlyeV90KShpZGVfZHJpdmVfdCAqKTsKCnR5cGVkZWYgc3RydWN0IGh3Z3JvdXBf
 cyB7CiAgICAgICAgaWRlX2hhbmRsZXJfdCAqaGFuZGxlcjsKICAgICAgICB2b2xhdGlsZSBpbnQg
 YnVzeTsKICAgICAgICBpbnQgc2xlZXBpbmc7CiAgICAgICAgaWRlX2RyaXZlX3QgKmRyaXZlOwog
 ICAgICAgIGlkZV9od2lmX3QgKmh3aWY7CiAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJxOwogICAg
 ICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogICAgICAgIHN0cnVjdCByZXF1ZXN0IHdycTsK
 ICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGxfdGltZW91dDsKICAgICAgICBpZGVfZXhwaXJ5X3Qg
 KmV4cGlyeTsKfSBpZGVfaHdncm91cF90OwojIDUxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm
 IGludCAoaWRlX3Byb2NzZXRfdCkoaWRlX2RyaXZlX3QgKiwgaW50KTsKdHlwZWRlZiBzdHJ1Y3Qg
 aWRlX3NldHRpbmdzX3MgewogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IHJ3OwogICAg
 ICAgIGludCByZWFkX2lvY3RsOwogICAgICAgIGludCB3cml0ZV9pb2N0bDsKICAgICAgICBpbnQg
 ZGF0YV90eXBlOwogICAgICAgIGludCBtaW47CiAgICAgICAgaW50IG1heDsKICAgICAgICBpbnQg
 bXVsX2ZhY3RvcjsKICAgICAgICBpbnQgZGl2X2ZhY3RvcjsKICAgICAgICB2b2lkICpkYXRhOwog
 ICAgICAgIGlkZV9wcm9jc2V0X3QgKnNldDsKICAgICAgICBpbnQgYXV0b19yZW1vdmU7CiAgICAg
 ICAgc3RydWN0IGlkZV9zZXR0aW5nc19zICpuZXh0Owp9IGlkZV9zZXR0aW5nc190OwoKdm9pZCBp
 ZGVfYWRkX3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
 cncsIGludCByZWFkX2lvY3RsLCBpbnQgd3JpdGVfaW9jdGwsIGludCBkYXRhX3R5cGUsIGludCBt
 aW4sIGludCBtYXgsIGludCBtdWxfZmFjdG9yLCBpbnQgZGl2X2ZhY3Rvciwgdm9pZCAqZGF0YSwg
 aWRlX3Byb2NzZXRfdCAqc2V0KTsKdm9pZCBpZGVfcmVtb3ZlX3NldHRpbmcoaWRlX2RyaXZlX3Qg
 KmRyaXZlLCBjaGFyICpuYW1lKTsKaWRlX3NldHRpbmdzX3QgKmlkZV9maW5kX3NldHRpbmdfYnlf
 bmFtZShpZGVfZHJpdmVfdCAqZHJpdmUsIGNoYXIgKm5hbWUpOwppbnQgaWRlX3JlYWRfc2V0dGlu
 ZyhpZGVfZHJpdmVfdCAqdCwgaWRlX3NldHRpbmdzX3QgKnNldHRpbmcpOwppbnQgaWRlX3dyaXRl
 X3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfc2V0dGluZ3NfdCAqc2V0dGluZywgaW50
 IHZhbCk7CnZvaWQgaWRlX2FkZF9nZW5lcmljX3NldHRpbmdzKGlkZV9kcml2ZV90ICpkcml2ZSk7
 CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBt
 b2RlX3QgbW9kZTsKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jOwogICAgICAgIHdyaXRl
 X3Byb2NfdCAqd3JpdGVfcHJvYzsKfSBpZGVfcHJvY19lbnRyeV90OwoKCnZvaWQgcHJvY19pZGVf
 Y3JlYXRlKHZvaWQpOwp2b2lkIHByb2NfaWRlX2Rlc3Ryb3kodm9pZCk7CnZvaWQgZGVzdHJveV9w
 cm9jX2lkZV9kcml2ZXMoaWRlX2h3aWZfdCAqKTsKdm9pZCBjcmVhdGVfcHJvY19pZGVfaW50ZXJm
 YWNlcyh2b2lkKTsKdm9pZCBpZGVfYWRkX3Byb2NfZW50cmllcyhzdHJ1Y3QgcHJvY19kaXJfZW50
 cnkgKmRpciwgaWRlX3Byb2NfZW50cnlfdCAqcCwgdm9pZCAqZGF0YSk7CnZvaWQgaWRlX3JlbW92
 ZV9wcm9jX2VudHJpZXMoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkaXIsIGlkZV9wcm9jX2VudHJ5
 X3QgKnApOwpyZWFkX3Byb2NfdCBwcm9jX2lkZV9yZWFkX2NhcGFjaXR5OwpyZWFkX3Byb2NfdCBw
 cm9jX2lkZV9yZWFkX2dlb21ldHJ5OwojIDU4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
 bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIGlu
 dCAoaWRlX2NsZWFudXBfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgaWRlX3N0YXJ0c3Rv
 cF90IChpZGVfZG9fcmVxdWVzdF9wcm9jKShpZGVfZHJpdmVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAq
 LCB1bnNpZ25lZCBsb25nKTsKdHlwZWRlZiB2b2lkIChpZGVfZW5kX3JlcXVlc3RfcHJvYykoYnl0
 ZSwgaWRlX2h3Z3JvdXBfdCAqKTsKdHlwZWRlZiBpbnQgKGlkZV9pb2N0bF9wcm9jKShpZGVfZHJp
 dmVfdCAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNp
 Z25lZCBsb25nKTsKdHlwZWRlZiBpbnQgKGlkZV9vcGVuX3Byb2MpKHN0cnVjdCBpbm9kZSAqLCBz
 dHJ1Y3QgZmlsZSAqLCBpZGVfZHJpdmVfdCAqKTsKdHlwZWRlZiB2b2lkIChpZGVfcmVsZWFzZV9w
 cm9jKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgaWRlX2RyaXZlX3QgKik7CnR5cGVk
 ZWYgaW50IChpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBl
 ZGVmIHZvaWQgKGlkZV9yZXZhbGlkYXRlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZv
 aWQgKGlkZV9wcmVfcmVzZXRfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdW5zaWduZWQg
 bG9uZyAoaWRlX2NhcGFjaXR5X3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIGlkZV9zdGFy
 dHN0b3BfdCAoaWRlX3NwZWNpYWxfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdm9pZCAo
 aWRlX3NldHRpbmdfcHJvYykoaWRlX2RyaXZlX3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBpZGVfZHJp
 dmVyX3MgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgY29uc3QgY2hhciAqdmVy
 c2lvbjsKICAgICAgICBieXRlIG1lZGlhOwogICAgICAgIHVuc2lnbmVkIGJ1c3kgOiAxOwogICAg
 ICAgIHVuc2lnbmVkIHN1cHBvcnRzX2RtYSA6IDE7CiAgICAgICAgdW5zaWduZWQgc3VwcG9ydHNf
 ZHNjX292ZXJsYXAgOiAxOwogICAgICAgIGlkZV9jbGVhbnVwX3Byb2MgKmNsZWFudXA7CiAgICAg
 ICAgaWRlX2RvX3JlcXVlc3RfcHJvYyAqZG9fcmVxdWVzdDsKICAgICAgICBpZGVfZW5kX3JlcXVl
 c3RfcHJvYyAqZW5kX3JlcXVlc3Q7CiAgICAgICAgaWRlX2lvY3RsX3Byb2MgKmlvY3RsOwogICAg
 ICAgIGlkZV9vcGVuX3Byb2MgKm9wZW47CiAgICAgICAgaWRlX3JlbGVhc2VfcHJvYyAqcmVsZWFz
 ZTsKICAgICAgICBpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MgKm1lZGlhX2NoYW5nZTsKICAg
 ICAgICBpZGVfcmV2YWxpZGF0ZV9wcm9jICpyZXZhbGlkYXRlOwogICAgICAgIGlkZV9wcmVfcmVz
 ZXRfcHJvYyAqcHJlX3Jlc2V0OwogICAgICAgIGlkZV9jYXBhY2l0eV9wcm9jICpjYXBhY2l0eTsK
 ICAgICAgICBpZGVfc3BlY2lhbF9wcm9jICpzcGVjaWFsOwogICAgICAgIGlkZV9wcm9jX2VudHJ5
 X3QgKnByb2M7Cn0gaWRlX2RyaXZlcl90OwojIDYyOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm
 IGludCAoaWRlX21vZHVsZV9pbml0X3Byb2MpKHZvaWQpOwoKdHlwZWRlZiBzdHJ1Y3QgaWRlX21v
 ZHVsZV9zIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpZGVfbW9kdWxlX2luaXRfcHJvYyAq
 aW5pdDsKICAgICAgICB2b2lkICppbmZvOwogICAgICAgIHN0cnVjdCBpZGVfbW9kdWxlX3MgKm5l
 eHQ7Cn0gaWRlX21vZHVsZV90OwojIDY0NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
 YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwpleHRlcm4gaWRlX2h3
 aWZfdCBpZGVfaHdpZnNbXTsKZXh0ZXJuIGlkZV9tb2R1bGVfdCAqaWRlX21vZHVsZXM7CmV4dGVy
 biBpZGVfbW9kdWxlX3QgKmlkZV9wcm9iZTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1s
 aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMSAz
 CgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvbG9ja3MuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYt
 cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1h
 cC5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
 aW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
 LWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2Fz
 bS9zeXN0ZW0uaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
 d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyAxICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9w
 Z3RhYmxlLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
 cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaCIgMiAzCiMgMSAiL29wdC9mc3Av
 aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o
 aWdobWVtLmgiIDEgMwoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
 b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDEgMwoKCgoKCgojIDEgIi9v
 cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
 YXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyA4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
 bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIgMwojIDI2ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2Fz
 bS9wZ2FsbG9jLmgiIDMKZXh0ZXJuIHN0cnVjdCBwZ3RhYmxlX2NhY2hlX3N0cnVjdCB7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyAqcGdkX2NhY2hlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0ZV9j
 YWNoZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVfY2FjaGVfc3o7Cn0gcXVpY2tsaXN0
 czsKCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nICp6ZXJvX2NhY2hlOwpleHRlcm4gYXRvbWlj
 X3QgemVyb19zejsKZXh0ZXJuIGF0b21pY190IHplcm9wYWdlX2hpdHM7CmV4dGVybiBhdG9taWNf
 dCB6ZXJvcGFnZV9jYWxsczsKZXh0ZXJuIGF0b21pY190IHplcm90b3RhbDsKIyA1MSAiL29wdC9m
 c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
 cGdhbGxvYy5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2VfZmFzdCh2b2lk
 KTsKCmV4dGVybiB2b2lkIF9fYmFkX3B0ZShwbWRfdCAqcG1kKTsKCgpleHRlcm4gX19pbmxpbmVf
 XyBwbWRfdCAqZ2V0X3BtZF9mYXN0KHZvaWQpCnsKICAgICAgICByZXR1cm4gKHBtZF90ICopMDsK
 fQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9mYXN0KHBtZF90ICpwbWQpCnsKfQoK
 ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9zbG93KHBtZF90ICpwbWQpCnsKfQoKCgoK
 CmV4dGVybiBpbmxpbmUgdm9pZCBwbWRfZnJlZShwbWRfdCAqIHBtZCkKewp9CgpleHRlcm4gaW5s
 aW5lIHBtZF90ICogcG1kX2FsbG9jKHBnZF90ICogcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp
 CnsKICAgICAgICByZXR1cm4gKHBtZF90ICopIHBnZDsKfQoKCgoKCmV4dGVybiBfX2lubGluZV9f
 IHBnZF90ICpnZXRfcGdkX3Nsb3codm9pZCkKewogICAgICAgIHBnZF90ICpyZXQsICppbml0OwoK
 ICAgICAgICBpZiAoIChyZXQgPSAocGdkX3QgKilfX2dldF9mcmVlX3BhZ2VzKCgoMHgwMiB8IDB4
 MDEgfCAweDA0KSksMCkpICE9ICgodm9pZCAqKTApICkKICAgICAgICAgICAgICAgIG1lbXNldCAo
 cmV0LCAwLCAoKDB4ODAwMDAwMDBVTCkgLyAoMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKTsK
 ICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICAgICAgICBpbml0ID0gKCgmaW5pdF9tbSktPnBn
 ZCArICgoMCkgPj4gMjIpKTsKICAgICAgICAgICAgICAgIG1lbWNweSAocmV0ICsgKCgweDgwMDAw
 MDAwVUwpIC8gKDFVTCA8PCAyMikpLCBpbml0ICsgKCgweDgwMDAwMDAwVUwpIC8gKDFVTCA8PCAy
 MikpLAogICAgICAgICAgICAgICAgICAgICAgICAoMTAyNCAtICgoMHg4MDAwMDAwMFVMKSAvICgx
 VUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJl
 dDsKfQoKZXh0ZXJuIF9faW5saW5lX18gcGdkX3QgKmdldF9wZ2RfZmFzdCh2b2lkKQp7CiAgICAg
 ICAgdW5zaWduZWQgbG9uZyAqcmV0OwoKICAgICAgICBpZiAoKHJldCA9IChxdWlja2xpc3RzLnBn
 ZF9jYWNoZSkpICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAocXVpY2tsaXN0cy5w
 Z2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRb
 MF0gPSAwOwogICAgICAgICAgICAgICAgKHF1aWNrbGlzdHMucGd0YWJsZV9jYWNoZV9zeiktLTsK
 ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHJldCA9ICh1bnNpZ25lZCBsb25nICopZ2V0
 X3BnZF9zbG93KCk7CiAgICAgICAgcmV0dXJuIChwZ2RfdCAqKXJldDsKfQoKZXh0ZXJuIF9faW5s
 aW5lX18gdm9pZCBmcmVlX3BnZF9mYXN0KHBnZF90ICpwZ2QpCnsKICAgICAgICAqKHVuc2lnbmVk
 IGxvbmcgKiopcGdkID0gKHF1aWNrbGlzdHMucGdkX2NhY2hlKTsKICAgICAgICAocXVpY2tsaXN0
 cy5wZ2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikgcGdkOwogICAgICAgIChxdWlja2xpc3Rz
 LnBndGFibGVfY2FjaGVfc3opKys7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wZ2Rf
 c2xvdyhwZ2RfdCAqcGdkKQp7CiAgICAgICAgZnJlZV9wYWdlcygoKHVuc2lnbmVkIGxvbmcpcGdk
 KSwwKTsKfQoKZXh0ZXJuIHB0ZV90ICpnZXRfcHRlX3Nsb3cocG1kX3QgKnBtZCwgdW5zaWduZWQg
 bG9uZyBhZGRyZXNzX3ByZWFkanVzdGVkKTsKCmV4dGVybiBfX2lubGluZV9fIHB0ZV90ICpnZXRf
 cHRlX2Zhc3Qodm9pZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYg
 KChyZXQgPSAocXVpY2tsaXN0cy5wdGVfY2FjaGUpKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAg
 ICAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQp
 OwogICAgICAgICAgICAgICAgcmV0WzBdID0gMDsKICAgICAgICAgICAgICAgIChxdWlja2xpc3Rz
 LnBndGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfQogICAgICAgIHJldHVybiAocHRlX3QgKily
 ZXQ7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wdGVfZmFzdChwdGVfdCAqcHRlKQp7
 CiAgICAgICAgKih1bnNpZ25lZCBsb25nICoqKXB0ZSA9IChxdWlja2xpc3RzLnB0ZV9jYWNoZSk7
 CiAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopIHB0ZTsK
 ICAgICAgICAocXVpY2tsaXN0cy5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpleHRlcm4gX19pbmxp
 bmVfXyB2b2lkIGZyZWVfcHRlX3Nsb3cocHRlX3QgKnB0ZSkKewogICAgICAgIGZyZWVfcGFnZXMo
 KCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KCgoKCgoKZXh0ZXJuIGlubGluZSBwdGVfdCAqIHB0
 ZV9hbGxvYyhwbWRfdCAqIHBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgYWRk
 cmVzcyA9IChhZGRyZXNzID4+IDEyKSAmICgxMDI0IC0gMSk7CiAgICAgICAgaWYgKCghKCgqcG1k
 KS5wbWQpKSkgewogICAgICAgICAgICAgICAgcHRlX3QgKiBwYWdlID0gKHB0ZV90ICopIGdldF9w
 dGVfZmFzdCgpOwoKICAgICAgICAgICAgICAgIGlmICghcGFnZSkKICAgICAgICAgICAgICAgICAg
 ICAgICAgcmV0dXJuIGdldF9wdGVfc2xvdyhwbWQsIGFkZHJlc3MpOwogICAgICAgICAgICAgICAg
 KCgqcG1kKS5wbWQpID0gKHVuc2lnbmVkIGxvbmcpIHBhZ2U7CiAgICAgICAgICAgICAgICByZXR1
 cm4gcGFnZSArIGFkZHJlc3M7CiAgICAgICAgfQogICAgICAgIGlmICgoKCgoKnBtZCkucG1kKSAm
 IH4ofigoMVVMIDw8IDEyKS0xKSkpICE9IDApKSB7CiAgICAgICAgICAgICAgICBfX2JhZF9wdGUo
 cG1kKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAg
 ICAgcmV0dXJuIChwdGVfdCAqKSAoKCgqcG1kKS5wbWQpKSArIGFkZHJlc3M7Cn0KCmV4dGVybiBp
 bnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwgaW50KTsKIyA2ICIvb3B0L2ZzcC9pNTg2LXBjLWxp
 bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIg
 MiAzCiMgMzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50
 IG5yX2ZyZWVfaGlnaHBhZ2VzKHZvaWQpIHsgcmV0dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9p
 ZCAqa21hcChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlKS0+dmlydHVhbCk7IH0K
 IyA0NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
 aW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3VzZXJf
 aGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdmFkZHIpCnsKICAgICAg
 ICBjbGVhcl9wYWdlKGttYXAocGFnZSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0
 YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogICAg
 ICAgIGNsZWFyX3BhZ2Uoa21hcChwYWdlKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoK
 c3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1
 bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmth
 ZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAg
 ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4
 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdo
 bWVtLmgiLCA2Myk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo
 MCk7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9m
 ZnNldCwgMCwgc2l6ZSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlu
 bGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlX2ZsdXNoKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNp
 Z25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRy
 OwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAg
 ICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1w
 Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdobWVt
 LmgiLCA3Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7
 CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9mZnNl
 dCwgMCwgc2l6ZSk7CiAgICAgICAgZmx1c2hfcGFnZV90b19yYW0ocGFnZSk7CiAgICAgICAgZG8g
 eyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfdXNlcl9oaWdocGFnZShz
 dHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7
 CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsK
 ICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2ZnJvbSk7CiAg
 ICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0
 aWMgaW5saW5lIHZvaWQgY29weV9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdl
 ICpmcm9tKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21h
 cChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2
 ZnJvbSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDAp
 Owp9CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
 c3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1s
 aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgi
 IDMKZXh0ZXJuIHVuc2lnbmVkIGludCBwYWdlX2hhc2hfYml0czsKCgoKZXh0ZXJuIGF0b21pY190
 IHBhZ2VfY2FjaGVfc2l6ZTsKZXh0ZXJuIHN0cnVjdCBwYWdlICoqcGFnZV9oYXNoX3RhYmxlOwoK
 ZXh0ZXJuIHZvaWQgcGFnZV9jYWNoZV9pbml0KHVuc2lnbmVkIGxvbmcpOwojIDU5ICIvb3B0L2Zz
 cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
 L3BhZ2VtYXAuaCIgMwpleHRlcm4gaW5saW5lIHVuc2lnbmVkIGxvbmcgX3BhZ2VfaGFzaGZuKHN0
 cnVjdCBhZGRyZXNzX3NwYWNlICogbWFwcGluZywgdW5zaWduZWQgbG9uZyBpbmRleCkKewoKCiAg
 ICAgICAgcmV0dXJuICgoKCgodW5zaWduZWQgbG9uZykgbWFwcGluZykvKHNpemVvZihzdHJ1Y3Qg
 aW5vZGUpICYgfiAoc2l6ZW9mKHN0cnVjdCBpbm9kZSkgLSAxKSkpK2luZGV4KSsoKCgoKHVuc2ln
 bmVkIGxvbmcpIG1hcHBpbmcpLyhzaXplb2Yoc3RydWN0IGlub2RlKSAmIH4gKHNpemVvZihzdHJ1
 Y3QgaW5vZGUpIC0gMSkpKStpbmRleCk+PihwYWdlX2hhc2hfYml0cykpKSAmICgoMSA8PCAocGFn
 ZV9oYXNoX2JpdHMpKS0xKTsKCgp9CgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fZmluZF9nZXRf
 cGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzdHJ1Y3QgcGFnZSAqKmhhc2gp
 OwpleHRlcm4gc3RydWN0IHBhZ2UgKiBfX2ZpbmRfbG9ja19wYWdlIChzdHJ1Y3QgYWRkcmVzc19z
 cGFjZSAqIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
 bG9uZyBpbmRleCwgc3RydWN0IHBhZ2UgKipoYXNoKTsKZXh0ZXJuIHZvaWQgbG9ja19wYWdlKHN0
 cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHZvaWQgX19hZGRfcGFnZV90b19oYXNoX3F1ZXVl
 KHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IHBhZ2UgKipwKTsKCmV4dGVybiB2b2lkIGFkZF90
 b19wYWdlX2NhY2hlKHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h
 cHBpbmcsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpleHRlcm4gdm9pZCBhZGRfdG9fcGFnZV9jYWNo
 ZV9sb2NrZWQoc3RydWN0IHBhZ2UgKiBwYWdlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGlu
 ZywgdW5zaWduZWQgbG9uZyBpbmRleCk7CgpleHRlcm4gdm9pZCBfX193YWl0X29uX3BhZ2Uoc3Ry
 dWN0IHBhZ2UgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9vbl9wYWdlKHN0cnVjdCBwYWdl
 ICogcGFnZSkKewogICAgICAgIGlmICh0ZXN0X2JpdCgwLCAmKHBhZ2UpLT5mbGFncykpCiAgICAg
 ICAgICAgICAgICBfX193YWl0X29uX3BhZ2UocGFnZSk7Cn0KCmV4dGVybiBzdHJ1Y3QgcGFnZSAq
 IGdyYWJfY2FjaGVfcGFnZSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgdW5zaWduZWQgbG9uZyk7
 Cgp0eXBlZGVmIGludCBmaWxsZXJfdCh2b2lkICosIHN0cnVjdCBwYWdlKik7CgpleHRlcm4gc3Ry
 dWN0IHBhZ2UgKnJlYWRfY2FjaGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCB1bnNpZ25l
 ZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxlcl90ICosIHZvaWQg
 Kik7CiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
 eXMtaW5jbHVkZS9saW51eC9sb2Nrcy5oIiAyIDMKCgoKCgoKZXh0ZXJuIHZvaWQgX193YWl0X29u
 X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9v
 bl9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9iaXQo
 MiwgJmJoLT5iX3N0YXRlKSkKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9idWZmZXIoYmgpOwp9
 CgpleHRlcm4gaW5saW5lIHZvaWQgbG9ja19idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgp
 CnsKICAgICAgICB3aGlsZSAodGVzdF9hbmRfc2V0X2JpdCgyLCAmYmgtPmJfc3RhdGUpKQogICAg
 ICAgICAgICAgICAgX193YWl0X29uX2J1ZmZlcihiaCk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCB1
 bmxvY2tfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBjbGVhcl9iaXQo
 MiwgJmJoLT5iX3N0YXRlKTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l
 bW9yeSIpOwogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZiaC0+Yl93YWl0KSkKICAgICAg
 ICAgICAgICAgIF9fd2FrZV91cCgoJmJoLT5iX3dhaXQpLDIgfCAxLCAxKTsKfQoKCgoKCgpleHRl
 cm4gdm9pZCBfX3dhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGlu
 bGluZSB2b2lkIHdhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpCnsKICAgICAg
 ICBpZiAoc2ItPnNfbG9jaykKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9zdXBlcihzYik7Cn0K
 CmV4dGVybiBpbmxpbmUgdm9pZCBsb2NrX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7
 CiAgICAgICAgaWYgKHNiLT5zX2xvY2spCiAgICAgICAgICAgICAgICBfX3dhaXRfb25fc3VwZXIo
 c2IpOwogICAgICAgIHNiLT5zX2xvY2sgPSAxOwp9CgpleHRlcm4gaW5saW5lIHZvaWQgdW5sb2Nr
 X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7CiAgICAgICAgc2ItPnNfbG9jayA9IDA7
 CgoKCgogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZzYi0+c193YWl0KSkKICAgICAgICAg
 ICAgICAgIF9fd2FrZV91cCgoJnNiLT5zX3dhaXQpLDIgfCAxLCAxKTsKfQojIDYgIi9vcHQvZnNw
 L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
 YmxrLmgiIDIgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
 LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsay5oIiAzCmV4dGVybiBzcGlubG9ja190IGlvX3Jl
 cXVlc3RfbG9jazsKCgoKCmV4dGVybiBpbnQgaXNwMTZfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBj
 ZHUzMWFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhY3NpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
 bWNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWNkeF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNi
 cGNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYXp0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBz
 b255NTM1X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZ3NjZF9pbml0KHZvaWQpOwpleHRlcm4gaW50
 IGNtMjA2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgb3B0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
 dCBzamNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
 aGRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBpZGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB4ZF9p
 bml0KHZvaWQpOwpleHRlcm4gaW50IG1mbV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGxvb3BfaW5p
 dCh2b2lkKTsKZXh0ZXJuIGludCBtZF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGFwX2luaXQodm9p
 ZCk7CmV4dGVybiBpbnQgZGR2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgejJfaW5pdCh2b2lkKTsK
 ZXh0ZXJuIGludCBzd2ltM19pbml0KHZvaWQpOwpleHRlcm4gaW50IHN3aW1pb3BfaW5pdCh2b2lk
 KTsKZXh0ZXJuIGludCBhbWlnYV9mbG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhdGFyaV9m
 bG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBuYmRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBl
 el9pbml0KHZvaWQpOwpleHRlcm4gaW50IGJwY2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwczJl
 c2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQganNmZF9pbml0KHZvaWQpOwoKCgoKCgpleHRlcm4g
 dm9pZCBzZXRfZGV2aWNlX3JvKGtkZXZfdCBkZXYsaW50IGZsYWcpOwp2b2lkIGFkZF9ibGtkZXZf
 cmFuZG9tbmVzcyhpbnQgbWFqb3IpOwoKZXh0ZXJuIGludCBmbG9wcHlfaW5pdCh2b2lkKTsKZXh0
 ZXJuIHZvaWQgcmRfbG9hZCh2b2lkKTsKZXh0ZXJuIGludCByZF9pbml0KHZvaWQpOwpleHRlcm4g
 aW50IHJkX2RvbG9hZDsKZXh0ZXJuIGludCByZF9wcm9tcHQ7CmV4dGVybiBpbnQgcmRfaW1hZ2Vf
 c3RhcnQ7CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdHJkX3N0YXJ0LGluaXRyZF9lbmQ7
 CmV4dGVybiBpbnQgbW91bnRfaW5pdHJkOwpleHRlcm4gaW50IGluaXRyZF9iZWxvd19zdGFydF9v
 azsKdm9pZCBpbml0cmRfaW5pdCh2b2lkKTsKIyA4OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
 bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMwpzdGF0aWMg
 aW5saW5lIHZvaWQgYmxrZGV2X2RlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqIHJlcSkK
 ewogICAgICAgIGxpc3RfZGVsKCZyZXEtPnF1ZXVlKTsKfQoKaW50IGVuZF90aGF0X3JlcXVlc3Rf
 Zmlyc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSwgaW50IHVwdG9kYXRlLCBjaGFyICpuYW1lKTsKdm9p
 ZCBlbmRfdGhhdF9yZXF1ZXN0X2xhc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSk7CiMgNjU4ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L2lkZS5oIiAyIDMKCnZvaWQgaWRlX2VuZF9yZXF1ZXN0KGJ5dGUgdXB0b2RhdGUsIGlkZV9o
 d2dyb3VwX3QgKmh3Z3JvdXApOwoKCgoKCnZvaWQgaWRlX2lucHV0X2RhdGEgKGlkZV9kcml2ZV90
 ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgd2NvdW50KTsKdm9pZCBpZGVfb3V0
 cHV0X2RhdGEgKGlkZV9kcml2ZV90ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQg
 d2NvdW50KTsKCgoKCgp2b2lkIGF0YXBpX2lucHV0X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUs
 IHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5dGVjb3VudCk7CnZvaWQgYXRhcGlfb3V0cHV0
 X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5
 dGVjb3VudCk7CgoKCgoKdm9pZCBpZGVfc2V0X2hhbmRsZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwg
 aWRlX2hhbmRsZXJfdCAqaGFuZGxlciwgdW5zaWduZWQgaW50IHRpbWVvdXQsIGlkZV9leHBpcnlf
 dCAqZXhwaXJ5KTsKCgoKCmJ5dGUgaWRlX2R1bXBfc3RhdHVzIChpZGVfZHJpdmVfdCAqZHJpdmUs
 IGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoKCgppZGVfc3RhcnRzdG9wX3QgaWRlX2Vy
 cm9yIChpZGVfZHJpdmVfdCAqZHJpdmUsIGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoK
 Cgp2b2lkIGlkZV9jbWQoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGNtZCwgYnl0ZSBuc2VjdCwg
 aWRlX2hhbmRsZXJfdCAqaGFuZGxlcik7CgoKCgoKCgp2b2lkIGlkZV9maXhzdHJpbmcgKGJ5dGUg
 KnMsIGNvbnN0IGludCBieXRlY291bnQsIGNvbnN0IGludCBieXRlc3dhcCk7CiMgNzE0ICIvb3B0
 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
 bnV4L2lkZS5oIiAzCmludCBpZGVfd2FpdF9zdGF0IChpZGVfc3RhcnRzdG9wX3QgKnN0YXJ0c3Rv
 cCwgaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGdvb2QsIGJ5dGUgYmFkLCB1bnNpZ25lZCBsb25n
 IHRpbWVvdXQpOwoKaW50IGlkZV93YWl0X25vZXJyIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUg
 Z29vZCwgYnl0ZSBiYWQsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgoKaW50IGlkZV94bGF0
 ZV8xMDI0IChrZGV2X3QsIGludCwgaW50LCBjb25zdCBjaGFyICopOwoKCgoKaWRlX2RyaXZlX3Qg
 KmdldF9pbmZvX3B0ciAoa2Rldl90IGlfcmRldik7CgoKCgp1bnNpZ25lZCBsb25nIGN1cnJlbnRf
 Y2FwYWNpdHkgKGlkZV9kcml2ZV90ICpkcml2ZSk7CgoKCgoKaWRlX3N0YXJ0c3RvcF90IGlkZV9k
 b19yZXNldCAoaWRlX2RyaXZlX3QgKik7CgoKCgp2b2lkIGlkZV9pbml0X2RyaXZlX2NtZCAoc3Ry
 dWN0IHJlcXVlc3QgKnJxKTsKCgoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgaWRlX3dhaXQsCiAg
 ICAgICAgaWRlX25leHQsCiAgICAgICAgaWRlX3ByZWVtcHQsCiAgICAgICAgaWRlX2VuZAp9IGlk
 ZV9hY3Rpb25fdDsKIyA3ODAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
 cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKaW50IGlkZV9kb19kcml2ZV9jbWQg
 KGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCBpZGVfYWN0aW9uX3QgYWN0
 aW9uKTsKCgoKCgp2b2lkIGlkZV9lbmRfZHJpdmVfY21kIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5
 dGUgc3RhdCwgYnl0ZSBlcnIpOwoKCgoKaW50IGlkZV93YWl0X2NtZCAoaWRlX2RyaXZlX3QgKmRy
 aXZlLCBpbnQgY21kLCBpbnQgbnNlY3QsIGludCBmZWF0dXJlLCBpbnQgc2VjdG9ycywgYnl0ZSAq
 YnVmKTsKaW50IGlkZV93YWl0X2NtZF90YXNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgKmJ1
 Zik7Cgp2b2lkIGlkZV9kZWxheV81MG1zICh2b2lkKTsKaW50IHN5c3RlbV9idXNfY2xvY2sodm9p
 ZCk7CgpieXRlIGlkZV9hdXRvX3JlZHVjZV94ZmVyIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQg
 aWRlX2RyaXZlaWRfdXBkYXRlIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQgaWRlX2F0YTY2X2No
 ZWNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgY21kLCBieXRlIG5zZWN0LCBieXRlIGZlYXR1
 cmUpOwppbnQgaWRlX2NvbmZpZ19kcml2ZV9zcGVlZCAoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRl
 IHNwZWVkKTsKYnl0ZSBlaWdodHlfbmludHlfdGhyZWUgKGlkZV9kcml2ZV90ICpkcml2ZSk7Cmlu
 dCBzZXRfdHJhbnNmZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwgYnl0ZSBjbWQsIGJ5dGUgbnNlY3Qs
 IGJ5dGUgZmVhdHVyZSk7CgoKCgoKCgppbnQgaWRlX3N5c3RlbV9idXNfc3BlZWQgKHZvaWQpOwoK
 CgoKCmludCBpZGVfbXVsdHdyaXRlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGludCBt
 Y291bnQpOwoKCgoKCnZvaWQgaWRlX3N0YWxsX3F1ZXVlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVu
 c2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgpyZXF1ZXN0X3F1ZXVlX3QgKmlkZV9nZXRfcXVldWUg
 KGtkZXZfdCBkZXYpOwoKCgoKCgppbnQgZHJpdmVfaXNfZmxhc2hjYXJkIChpZGVfZHJpdmVfdCAq
 ZHJpdmUpOwoKaW50IGlkZV9zcGluX3dhaXRfaHdncm91cCAoaWRlX2RyaXZlX3QgKmRyaXZlKTsK
 dm9pZCBpZGVfdGltZXJfZXhwaXJ5ICh1bnNpZ25lZCBsb25nIGRhdGEpOwp2b2lkIGlkZV9pbnRy
 IChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKdm9pZCBkb19p
 ZGVfcmVxdWVzdCAocmVxdWVzdF9xdWV1ZV90ICogcSk7CnZvaWQgaWRlX2luaXRfc3ViZHJpdmVy
 cyAodm9pZCk7CgoKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBpZGVfZm9w
 c1tdOwpleHRlcm4gaWRlX3Byb2NfZW50cnlfdCBnZW5lcmljX3N1YmRyaXZlcl9lbnRyaWVzW107
 CiMgODY4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
 cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCmludCBpZGVfcmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9k
 dWxlX3QgKm1vZHVsZSk7CnZvaWQgaWRlX3VucmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9kdWxlX3Qg
 Km1vZHVsZSk7CmlkZV9kcml2ZV90ICppZGVfc2Nhbl9kZXZpY2VzIChieXRlIG1lZGlhLCBjb25z
 dCBjaGFyICpuYW1lLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwgaW50IG4pOwppbnQgaWRlX3JlZ2lz
 dGVyX3N1YmRyaXZlciAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwg
 aW50IHZlcnNpb24pOwppbnQgaWRlX3VucmVnaXN0ZXJfc3ViZHJpdmVyIChpZGVfZHJpdmVfdCAq
 ZHJpdmUpOwppbnQgaWRlX3JlcGxhY2Vfc3ViZHJpdmVyKGlkZV9kcml2ZV90ICpkcml2ZSwgY29u
 c3QgY2hhciAqZHJpdmVyKTsKIyA5MDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
 L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdm9pZCBod2lmX3VucmVn
 aXN0ZXIgKGlkZV9od2lmX3QgKmh3aWYpOwojIDE1ICJibGEuYyIgMgojIDM3ICJibGEuYyIKZXh0
 ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IG15X19mc3dhYjE2KF9fdTE2IHgpCgoKCnsK
 ICAgICAgICByZXR1cm4gKHsgX191MTYgX190bXAgPSAoeCkgOyAoeyBfX3UxNiBfX3ggPSAoX190
 bXApOyAoKF9fdTE2KSggKCgoX191MTYpKF9feCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAo
 KChfX3UxNikoX194KSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKTsgfSk7IH0pOwp9CgoKdW5z
 aWduZWQgc2hvcnQgYmxhYmxhYmxhKHN0cnVjdCBoZF9kcml2ZWlkICppZCkKewogICAgICAgIGlk
 LT5jb25maWcgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KShpZC0+Y29uZmlnKSkgPyAo
 eyBfX3UxNiBfX3ggPSAoKGlkLT5jb25maWcpKTsgKChfX3UxNikoICgoKF9fdTE2KShfX3gpICYg
 KF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKF9feCkgJiAoX191MTYpMHhmZjAwVSkg
 Pj4gOCkgKSk7IH0pIDogbXlfX2Zzd2FiMTYoKGlkLT5jb25maWcpKSk7CiAgICAgICAgcmV0dXJu
 IDA7Cn0K
 
 --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489--
 


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

* Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2003-01-08  2:13 bangerth
  0 siblings, 0 replies; 3+ messages in thread
From: bangerth @ 2003-01-08  2:13 UTC (permalink / raw)
  To: aloeff, gcc-bugs, gcc-prs, nobody

Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue Jan  7 18:13:28 2003
State-Changed-Why:
    Thanks for your report (how unfortunate nobody has yet
    looked at it). In trying to reproduce it, I saw that the
    file still had an #include in it. Would you mind running
    the testcase through the compiler again, and give it
    -save-temps in addition? This would generate a file called
    bla.i which we need (it's then self-contained).
    
    Thanks
      Wolfgang

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


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

end of thread, other threads:[~2003-01-08 11:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-12  4:36 c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel aloeff
2003-01-08  2:13 bangerth
2003-01-08 11:26 Andreas Loeffler

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