This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linuxkernel


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
 ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0