From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IgQJr-0005LI-Od for qemu-devel@nongnu.org; Fri, 12 Oct 2007 15:37:11 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IgQJn-0005Hq-VM for qemu-devel@nongnu.org; Fri, 12 Oct 2007 15:37:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IgQJn-0005Hn-OI for qemu-devel@nongnu.org; Fri, 12 Oct 2007 15:37:07 -0400 Received: from ug-out-1314.google.com ([66.249.92.168]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IgQJl-00066x-N4 for qemu-devel@nongnu.org; Fri, 12 Oct 2007 15:37:07 -0400 Received: by ug-out-1314.google.com with SMTP id m2so612096uge for ; Fri, 12 Oct 2007 12:37:03 -0700 (PDT) Message-ID: Date: Fri, 12 Oct 2007 22:37:03 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] RFC: fix run of 32 bits Linux executables on 64 bits targets In-Reply-To: <20071012184229.GL3379@networkno.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_27363_15081955.1192217823286" References: <1192002128.9976.186.camel@rapid> <470C8AD9.6000002@bellard.org> <20071010174906.GC3379@networkno.de> <470D1C9A.2000505@bellard.org> <1192140040.9976.235.camel@rapid> <20071012184229.GL3379@networkno.de> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Thiemo Seufer Cc: "J. Mayer" , qemu-devel@nongnu.org ------=_Part_27363_15081955.1192217823286 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/12/07, Thiemo Seufer wrote: > Blue Swirl wrote: > [snip] > > Index: qemu/linux-user/mipsn32/syscall.h > > =================================================================== > > --- qemu.orig/linux-user/mipsn32/syscall.h 2007-10-11 19:17:14.000000000 +0000 > > +++ qemu/linux-user/mipsn32/syscall.h 2007-10-11 19:17:46.000000000 +0000 > > @@ -4,15 +4,15 @@ > > > > struct target_pt_regs { > > /* Saved main processor registers. */ > > - target_ulong regs[32]; > > + abi_ulong regs[32]; > > > > /* Saved special registers. */ > > - target_ulong cp0_status; > > - target_ulong lo; > > - target_ulong hi; > > - target_ulong cp0_badvaddr; > > - target_ulong cp0_cause; > > - target_ulong cp0_epc; > > + abi_ulong cp0_status; > > + abi_ulong lo; > > + abi_ulong hi; > > + abi_ulong cp0_badvaddr; > > + abi_ulong cp0_cause; > > + abi_ulong cp0_epc; > > }; > > This is broken. n32 has 64bit wide registers (and uses them for long long). If target_ulong is 64 bits, then abi_ulong is 64 bits too and therefore correct. Unless you want to enable the ABI32 feature? It is only enabled for the new Sparc32plus and PPC targets for now. But I put the original target_ulongs back. > It would be less clutter to let TARGET_ABI_DIR default to TARGET_ARCH > and override it when needed. Maybe. I changed the patch to do that. I found out why Sparc32plus can't execute Sparc32 binaries. Addresses need to be truncated to 32 bits, otherwise things like ld [ %l7 + %o0 ], %o0 don't work when the other register is set to a 32 bit negative value in such a way that it is not negative in 64 bits. Now all my Sparc32 test cases run equally fine with both qemu-sparc and qemu-sparc32plus, so Sparc64 emulator should be OK for the part shared with Sparc32. ------=_Part_27363_15081955.1192217823286 Content-Type: text/x-diff; name="linux32.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="linux32.diff"; filename="linux32.diff"; filename="linux32.diff" X-Attachment-Id: f_f7p3m9ud SW5kZXg6IHFlbXUvbGludXgtdXNlci9hbHBoYS9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL2xpbnV4LXVzZXIvYWxwaGEvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvYWxwaGEvc3lzY2FsbC5oCTIwMDctMTAt MTEgMTk6MTc6NDUuMDAwMDAwMDAwICswMDAwCkBAIC0yLDQwICsyLDQwIEBACiAjZGVmaW5lIF9f VVNFUl9EUwkoMSkKIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKLQl0YXJnZXRfdWxvbmcgcjA7 Ci0JdGFyZ2V0X3Vsb25nIHIxOwotCXRhcmdldF91bG9uZyByMjsKLQl0YXJnZXRfdWxvbmcgcjM7 Ci0JdGFyZ2V0X3Vsb25nIHI0OwotCXRhcmdldF91bG9uZyByNTsKLQl0YXJnZXRfdWxvbmcgcjY7 Ci0JdGFyZ2V0X3Vsb25nIHI3OwotCXRhcmdldF91bG9uZyByODsKLQl0YXJnZXRfdWxvbmcgcjE5 OwotCXRhcmdldF91bG9uZyByMjA7Ci0JdGFyZ2V0X3Vsb25nIHIyMTsKLQl0YXJnZXRfdWxvbmcg cjIyOwotCXRhcmdldF91bG9uZyByMjM7Ci0JdGFyZ2V0X3Vsb25nIHIyNDsKLQl0YXJnZXRfdWxv bmcgcjI1OwotCXRhcmdldF91bG9uZyByMjY7Ci0JdGFyZ2V0X3Vsb25nIHIyNzsKLQl0YXJnZXRf dWxvbmcgcjI4OwotCXRhcmdldF91bG9uZyBoYWU7CisJYWJpX3Vsb25nIHIwOworCWFiaV91bG9u ZyByMTsKKwlhYmlfdWxvbmcgcjI7CisJYWJpX3Vsb25nIHIzOworCWFiaV91bG9uZyByNDsKKwlh YmlfdWxvbmcgcjU7CisJYWJpX3Vsb25nIHI2OworCWFiaV91bG9uZyByNzsKKwlhYmlfdWxvbmcg cjg7CisJYWJpX3Vsb25nIHIxOTsKKwlhYmlfdWxvbmcgcjIwOworCWFiaV91bG9uZyByMjE7CisJ YWJpX3Vsb25nIHIyMjsKKwlhYmlfdWxvbmcgcjIzOworCWFiaV91bG9uZyByMjQ7CisJYWJpX3Vs b25nIHIyNTsKKwlhYmlfdWxvbmcgcjI2OworCWFiaV91bG9uZyByMjc7CisJYWJpX3Vsb25nIHIy ODsKKwlhYmlfdWxvbmcgaGFlOwogLyogSlJQIC0gVGhlc2UgYXJlIHRoZSB2YWx1ZXMgcHJvdmlk ZWQgdG8gYTAtYTIgYnkgUEFMY29kZSAqLwotCXRhcmdldF91bG9uZyB0cmFwX2EwOwotCXRhcmdl dF91bG9uZyB0cmFwX2ExOwotCXRhcmdldF91bG9uZyB0cmFwX2EyOworCWFiaV91bG9uZyB0cmFw X2EwOworCWFiaV91bG9uZyB0cmFwX2ExOworCWFiaV91bG9uZyB0cmFwX2EyOwogLyogVGhlc2Ug YXJlIHNhdmVkIGJ5IFBBTC1jb2RlOiAqLwotCXRhcmdldF91bG9uZyBwczsKLQl0YXJnZXRfdWxv bmcgcGM7Ci0JdGFyZ2V0X3Vsb25nIGdwOwotCXRhcmdldF91bG9uZyByMTY7Ci0JdGFyZ2V0X3Vs b25nIHIxNzsKLQl0YXJnZXRfdWxvbmcgcjE4OworCWFiaV91bG9uZyBwczsKKwlhYmlfdWxvbmcg cGM7CisJYWJpX3Vsb25nIGdwOworCWFiaV91bG9uZyByMTY7CisJYWJpX3Vsb25nIHIxNzsKKwlh YmlfdWxvbmcgcjE4OwogLyogVGhvc2UgaXMgbmVlZGVkIGJ5IHFlbXUgdG8gdGVtcG9yYXJ5IHN0 b3JlIHRoZSB1c2VyIHN0YWNrIHBvaW50ZXIgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHVzcDsK LSAgICAgICAgdGFyZ2V0X3Vsb25nIHVuaXF1ZTsKKyAgICAgICAgYWJpX3Vsb25nIHVzcDsKKyAg ICAgICAgYWJpX3Vsb25nIHVuaXF1ZTsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAiYWxw aGEiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvYWxwaGEvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL2FscGhhL3RhcmdldF9zaWduYWwuaAkyMDA3LTEw LTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2FscGhhL3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ1LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5 ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNj YWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0J dGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9u ZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlf dWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAog I2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJNDA5NgogI2RlZmluZSBUQVJHRVRfU0lHU1RLU1oJ CTE2Mzg0CiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRl KENQVUFscGhhU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zy b21fY3B1c3RhdGUoQ1BVQWxwaGFTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5p cltJUl9TUF07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvYXJtL3RhcmdldF9zaWduYWwuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9hcm0vdGFyZ2V0X3NpZ25hbC5oCTIw MDctMTAtMTEgMTk6MTc6MTMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvYXJt L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ1LjAwMDAwMDAwMCArMDAwMApAQCAt Niw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBz eXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7 Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91 bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlh YmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBA QAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1oJCTgxOTIKIAotc3RhdGljIGlubGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3Rh dGUoQ1BVQVJNU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zy b21fY3B1c3RhdGUoQ1BVQVJNU3RhdGUgKnN0YXRlKQogewogICAgcmV0dXJuIHN0YXRlLT5yZWdz WzEzXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9jcmlzL3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9jcmlzL3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2NyaXMv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDUuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7Ci0JdGFyZ2V0X2xv bmcgc3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV91bG9uZyBzc19zaXplOworCWFi aV9sb25nIHNzX2ZsYWdzOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBA CiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdT VEtTWiAgICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9t X2NwdXN0YXRlKENQVUNSSVNTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBn ZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVDUklTU3RhdGUgKnN0YXRlKQogewogICAgIHJldHVybiBz dGF0ZS0+cmVnc1sxNF07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvZWxmbG9hZC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL2VsZmxvYWQuYwkyMDA3LTEwLTExIDE5OjE3 OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2VsZmxvYWQuYwkyMDA3LTEw LTEyIDE1OjQzOjA2LjAwMDAwMDAwMCArMDAwMApAQCAtMTcyLDcgKzE3Miw3IEBACiAKIHN0YXRp YyBpbmxpbmUgdm9pZCBpbml0X3RocmVhZChzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgKnJlZ3MsIHN0 cnVjdCBpbWFnZV9pbmZvICppbmZvcCkKIHsKLSAgICB0YXJnZXRfbG9uZyBzdGFjayA9IGluZm9w LT5zdGFydF9zdGFjazsKKyAgICBhYmlfbG9uZyBzdGFjayA9IGluZm9wLT5zdGFydF9zdGFjazsK ICAgICBtZW1zZXQocmVncywgMCwgc2l6ZW9mKCpyZWdzKSk7CiAgICAgcmVncy0+QVJNX2Nwc3Ig PSAweDEwOwogICAgIGlmIChpbmZvcC0+ZW50cnkgJiAxKQpAQCAtMjE0LDcgKzIxNCwxMSBAQAog CiAjZGVmaW5lIEVMRl9TVEFSVF9NTUFQIDB4ODAwMDAwMDAKIAorI2lmbmRlZiBUQVJHRVRfQUJJ MzIKICNkZWZpbmUgZWxmX2NoZWNrX2FyY2goeCkgKCAoeCkgPT0gRU1fU1BBUkNWOSB8fCAoeCkg PT0gRU1fU1BBUkMzMlBMVVMgKQorI2Vsc2UKKyNkZWZpbmUgZWxmX2NoZWNrX2FyY2goeCkgKCAo eCkgPT0gRU1fU1BBUkMzMlBMVVMgfHwgKHgpID09IEVNX1NQQVJDICkKKyNlbmRpZgogCiAjZGVm aW5lIEVMRl9DTEFTUyAgIEVMRkNMQVNTNjQKICNkZWZpbmUgRUxGX0RBVEEgICAgRUxGREFUQTJN U0IKQEAgLTIyNCwxNCArMjI4LDIwIEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RocmVh ZChzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgKnJlZ3MsIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvcCkK IHsKKyNpZm5kZWYgVEFSR0VUX0FCSTMyCiAgICAgcmVncy0+dHN0YXRlID0gMDsKKyNlbmRpZgog ICAgIHJlZ3MtPnBjID0gaW5mb3AtPmVudHJ5OwogICAgIHJlZ3MtPm5wYyA9IHJlZ3MtPnBjICsg NDsKICAgICByZWdzLT55ID0gMDsKKyNpZmRlZiBUQVJHRVRfQUJJMzIKKyAgICByZWdzLT51X3Jl Z3NbMTRdID0gaW5mb3AtPnN0YXJ0X3N0YWNrIC0gMTYgKiA0OworI2Vsc2UKICAgICBpZiAocGVy c29uYWxpdHkoaW5mb3AtPnBlcnNvbmFsaXR5KSA9PSBQRVJfTElOVVgzMikKICAgICAgICAgcmVn cy0+dV9yZWdzWzE0XSA9IGluZm9wLT5zdGFydF9zdGFjayAtIDE2ICogNDsKICAgICBlbHNlCiAg ICAgICAgIHJlZ3MtPnVfcmVnc1sxNF0gPSBpbmZvcC0+c3RhcnRfc3RhY2sgLSAxNiAqIDggLSBT VEFDS19CSUFTOworI2VuZGlmCiB9CiAKICNlbHNlCkBAIC0zMTMsMTAgKzMyMywxMCBAQAogCiBz dGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aHJlYWQoc3RydWN0IHRhcmdldF9wdF9yZWdzICpfcmVn cywgc3RydWN0IGltYWdlX2luZm8gKmluZm9wKQogewotICAgIHRhcmdldF91bG9uZyBwb3MgPSBp bmZvcC0+c3RhcnRfc3RhY2s7Ci0gICAgdGFyZ2V0X3Vsb25nIHRtcDsKKyAgICBhYmlfdWxvbmcg cG9zID0gaW5mb3AtPnN0YXJ0X3N0YWNrOworICAgIGFiaV91bG9uZyB0bXA7CiAjaWZkZWYgVEFS R0VUX1BQQzY0Ci0gICAgdGFyZ2V0X3Vsb25nIGVudHJ5LCB0b2M7CisgICAgYWJpX3Vsb25nIGVu dHJ5LCB0b2M7CiAjZW5kaWYKIAogICAgIF9yZWdzLT5tc3IgPSAxIDw8IE1TUl9QUjsgLyogU2V0 IHVzZXIgbW9kZSAqLwpAQCAtMzMzLDkgKzM0Myw5IEBACiAgICAgICogZXhlY3V0aW9uIG9mIFBQ QyBCU0QgcHJvZ3JhbXMuCiAgICAgICovCiAgICAgX3JlZ3MtPmdwclszXSA9IHRnZXRsKHBvcyk7 Ci0gICAgcG9zICs9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAgIHBvcyArPSBzaXplb2YoYWJp X3Vsb25nKTsKICAgICBfcmVncy0+Z3ByWzRdID0gcG9zOwotICAgIGZvciAodG1wID0gMTsgdG1w ICE9IDA7IHBvcyArPSBzaXplb2YodGFyZ2V0X3Vsb25nKSkKKyAgICBmb3IgKHRtcCA9IDE7IHRt cCAhPSAwOyBwb3MgKz0gc2l6ZW9mKGFiaV91bG9uZykpCiAgICAgICAgIHRtcCA9IGxkbChwb3Mp OwogICAgIF9yZWdzLT5ncHJbNV0gPSBwb3M7CiB9CkBAIC00NzUsOSArNDg1LDkgQEAKICNkZWZp bmUgRUxGX0hXQ0FQIDAKICNlbmRpZgogCi0jaWZkZWYgT1ZFUlJJREVfRUxGX0NMQVNTCisjaWZk ZWYgVEFSR0VUX0FCSTMyCiAjdW5kZWYgRUxGX0NMQVNTCi0jZGVmaW5lIEVMRl9DTEFTUyBPVkVS UklERV9FTEZfQ0xBU1MKKyNkZWZpbmUgRUxGX0NMQVNTIEVMRkNMQVNTMzIKICN1bmRlZiBic3dh cHRscwogI2RlZmluZSBic3dhcHRscyhwdHIpIGJzd2FwMzJzKHB0cikKICNlbmRpZgpAQCAtNTg4 LDggKzU5OCw4IEBACiAgKiB0byBiZSBwdXQgZGlyZWN0bHkgaW50byB0aGUgdG9wIG9mIG5ldyB1 c2VyIG1lbW9yeS4KICAqCiAgKi8KLXN0YXRpYyB0YXJnZXRfdWxvbmcgY29weV9lbGZfc3RyaW5n cyhpbnQgYXJnYyxjaGFyICoqIGFyZ3YsIHZvaWQgKipwYWdlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBwKQorc3RhdGljIGFiaV91bG9uZyBjb3B5 X2VsZl9zdHJpbmdzKGludCBhcmdjLGNoYXIgKiogYXJndiwgdm9pZCAqKnBhZ2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHApCiB7CiAgICAgY2hhciAqdG1w LCAqdG1wMSwgKnBhZyA9IE5VTEw7CiAgICAgaW50IGxlbiwgb2Zmc2V0ID0gMDsKQEAgLTYzOCwx MCArNjQ4LDEwIEBACiAgICAgcmV0dXJuIHA7CiB9CiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgc2V0 dXBfYXJnX3BhZ2VzKHRhcmdldF91bG9uZyBwLCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGltYWdlX2luZm8gKmlu Zm8pCitzdGF0aWMgYWJpX3Vsb25nIHNldHVwX2FyZ19wYWdlcyhhYmlfdWxvbmcgcCwgc3RydWN0 IGxpbnV4X2JpbnBybSAqYnBybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpbWFnZV9pbmZvICppbmZvKQogewotICAgIHRhcmdldF91bG9uZyBzdGFja19iYXNlLCBz aXplLCBlcnJvcjsKKyAgICBhYmlfdWxvbmcgc3RhY2tfYmFzZSwgc2l6ZSwgZXJyb3I7CiAgICAg aW50IGk7CiAKICAgICAvKiBDcmVhdGUgZW5vdWdoIHN0YWNrIHRvIGhvbGQgZXZlcnl0aGluZy4g IElmIHdlIGRvbid0IHVzZQpAQCAtNjc3LDcgKzY4Nyw3IEBACiAgICAgcmV0dXJuIHA7CiB9CiAK LXN0YXRpYyB2b2lkIHNldF9icmsodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5k KQorc3RhdGljIHZvaWQgc2V0X2JyayhhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBlbmQpCiB7 CiAJLyogcGFnZS1hbGlnbiB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMuLi4gKi8KICAgICAg ICAgc3RhcnQgPSBIT1NUX1BBR0VfQUxJR04oc3RhcnQpOwpAQCAtNjk2LDkgKzcwNiw5IEBACiAv KiBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgemVybyBhbnkgZnJhY3Rpb25hbCBwYWdlcyBhZnRlciB0 aGUgZGF0YQogICAgc2VjdGlvbiAoaS5lLiBic3MpLiAgVGhpcyB3b3VsZCBjb250YWluIHRoZSBq dW5rIGZyb20gdGhlIGZpbGUgdGhhdAogICAgc2hvdWxkIG5vdCBiZSBpbiBtZW1vcnkuICovCi1z dGF0aWMgdm9pZCBwYWR6ZXJvKHRhcmdldF91bG9uZyBlbGZfYnNzLCB0YXJnZXRfdWxvbmcgbGFz dF9ic3MpCitzdGF0aWMgdm9pZCBwYWR6ZXJvKGFiaV91bG9uZyBlbGZfYnNzLCBhYmlfdWxvbmcg bGFzdF9ic3MpCiB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBuYnl0ZTsKKyAgICAgICAgYWJpX3Vs b25nIG5ieXRlOwogCiAJaWYgKGVsZl9ic3MgPj0gbGFzdF9ic3MpCiAJCXJldHVybjsKQEAgLTcw OSw3ICs3MTksNyBAQAogICAgICAgICAgICBwYXRjaCB0YXJnZXRfbW1hcCgpLCBidXQgaXQgaXMg bW9yZSBjb21wbGljYXRlZCBhcyB0aGUgZmlsZQogICAgICAgICAgICBzaXplIG11c3QgYmUga25v d24gKi8KICAgICAgICAgaWYgKHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSA8IHFlbXVfaG9zdF9w YWdlX3NpemUpIHsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBlbmRfYWRkciwgZW5kX2FkZHIx OworICAgICAgICAgICAgYWJpX3Vsb25nIGVuZF9hZGRyLCBlbmRfYWRkcjE7CiAgICAgICAgICAg ICBlbmRfYWRkcjEgPSAoZWxmX2JzcyArIHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpICYK ICAgICAgICAgICAgICAgICB+KHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpOwogICAgICAg ICAgICAgZW5kX2FkZHIgPSBIT1NUX1BBR0VfQUxJR04oZWxmX2Jzcyk7CkBAIC03MzEsMTYgKzc0 MSwxNiBAQAogfQogCiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgY3JlYXRlX2VsZl90YWJsZXModGFy Z2V0X3Vsb25nIHAsIGludCBhcmdjLCBpbnQgZW52YywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGVsZmhkciAqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2FkZHIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2JpYXMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBpbnRlcnBfbG9hZF9h ZGRyLCBpbnQgaWJjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGltYWdlX2luZm8gKmluZm8pCitzdGF0aWMgYWJpX3Vsb25nIGNyZWF0ZV9lbGZfdGFibGVz KGFiaV91bG9uZyBwLCBpbnQgYXJnYywgaW50IGVudmMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBlbGZoZHIgKiBleGVjLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9hZF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9hZF9iaWFzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgaW50ZXJwX2xvYWRfYWRkciwgaW50IGliY3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvKQog ewotICAgICAgICB0YXJnZXRfdWxvbmcgc3A7CisgICAgICAgIGFiaV91bG9uZyBzcDsKICAgICAg ICAgaW50IHNpemU7Ci0gICAgICAgIHRhcmdldF91bG9uZyB1X3BsYXRmb3JtOworICAgICAgICBh YmlfdWxvbmcgdV9wbGF0Zm9ybTsKICAgICAgICAgY29uc3QgY2hhciAqa19wbGF0Zm9ybTsKICAg ICAgICAgY29uc3QgaW50IG4gPSBzaXplb2YoZWxmX2FkZHJfdCk7CiAKQEAgLTc1Niw3ICs3NjYs NyBAQAogCS8qCiAJICogRm9yY2UgMTYgYnl0ZSBfZmluYWxfIGFsaWdubWVudCBoZXJlIGZvciBn ZW5lcmFsaXR5LgogCSAqLwotICAgICAgICBzcCA9IHNwICZ+ICh0YXJnZXRfdWxvbmcpMTU7Cisg ICAgICAgIHNwID0gc3AgJn4gKGFiaV91bG9uZykxNTsKICAgICAgICAgc2l6ZSA9IChETElORk9f SVRFTVMgKyAxKSAqIDI7CiAgICAgICAgIGlmIChrX3BsYXRmb3JtKQogICAgICAgICAgIHNpemUg Kz0gMjsKQEAgLTc4NiwxOCArNzk2LDE4IEBACiAgICAgICAgIE5FV19BVVhfRU5UIChBVF9OVUxM LCAwKTsKIAogICAgICAgICAvKiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgRExJTkZPX0lURU1TIGVu dHJpZXMgaGVyZS4gICovCi0gICAgICAgIE5FV19BVVhfRU5UKEFUX1BIRFIsICh0YXJnZXRfdWxv bmcpKGxvYWRfYWRkciArIGV4ZWMtPmVfcGhvZmYpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRf UEhFTlQsICh0YXJnZXRfdWxvbmcpKHNpemVvZiAoc3RydWN0IGVsZl9waGRyKSkpOwotICAgICAg ICBORVdfQVVYX0VOVChBVF9QSE5VTSwgKHRhcmdldF91bG9uZykoZXhlYy0+ZV9waG51bSkpOwot ICAgICAgICBORVdfQVVYX0VOVChBVF9QQUdFU1osICh0YXJnZXRfdWxvbmcpKFRBUkdFVF9QQUdF X1NJWkUpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRfQkFTRSwgKHRhcmdldF91bG9uZykoaW50 ZXJwX2xvYWRfYWRkcikpOwotICAgICAgICBORVdfQVVYX0VOVChBVF9GTEFHUywgKHRhcmdldF91 bG9uZykwKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfUEhEUiwgKGFiaV91bG9uZykobG9hZF9h ZGRyICsgZXhlYy0+ZV9waG9mZikpOworICAgICAgICBORVdfQVVYX0VOVChBVF9QSEVOVCwgKGFi aV91bG9uZykoc2l6ZW9mIChzdHJ1Y3QgZWxmX3BoZHIpKSk7CisgICAgICAgIE5FV19BVVhfRU5U KEFUX1BITlVNLCAoYWJpX3Vsb25nKShleGVjLT5lX3BobnVtKSk7CisgICAgICAgIE5FV19BVVhf RU5UKEFUX1BBR0VTWiwgKGFiaV91bG9uZykoVEFSR0VUX1BBR0VfU0laRSkpOworICAgICAgICBO RVdfQVVYX0VOVChBVF9CQVNFLCAoYWJpX3Vsb25nKShpbnRlcnBfbG9hZF9hZGRyKSk7CisgICAg ICAgIE5FV19BVVhfRU5UKEFUX0ZMQUdTLCAoYWJpX3Vsb25nKTApOwogICAgICAgICBORVdfQVVY X0VOVChBVF9FTlRSWSwgbG9hZF9iaWFzICsgZXhlYy0+ZV9lbnRyeSk7Ci0gICAgICAgIE5FV19B VVhfRU5UKEFUX1VJRCwgKHRhcmdldF91bG9uZykgZ2V0dWlkKCkpOwotICAgICAgICBORVdfQVVY X0VOVChBVF9FVUlELCAodGFyZ2V0X3Vsb25nKSBnZXRldWlkKCkpOwotICAgICAgICBORVdfQVVY X0VOVChBVF9HSUQsICh0YXJnZXRfdWxvbmcpIGdldGdpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9F TlQoQVRfRUdJRCwgKHRhcmdldF91bG9uZykgZ2V0ZWdpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9F TlQoQVRfSFdDQVAsICh0YXJnZXRfdWxvbmcpIEVMRl9IV0NBUCk7CisgICAgICAgIE5FV19BVVhf RU5UKEFUX1VJRCwgKGFiaV91bG9uZykgZ2V0dWlkKCkpOworICAgICAgICBORVdfQVVYX0VOVChB VF9FVUlELCAoYWJpX3Vsb25nKSBnZXRldWlkKCkpOworICAgICAgICBORVdfQVVYX0VOVChBVF9H SUQsIChhYmlfdWxvbmcpIGdldGdpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfRUdJRCwg KGFiaV91bG9uZykgZ2V0ZWdpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfSFdDQVAsIChh YmlfdWxvbmcpIEVMRl9IV0NBUCk7CiAgICAgICAgIGlmIChrX3BsYXRmb3JtKQogICAgICAgICAg ICAgTkVXX0FVWF9FTlQoQVRfUExBVEZPUk0sIHVfcGxhdGZvcm0pOwogI2lmZGVmIEFSQ0hfRExJ TkZPCkBAIC04MTQsMTcgKzgyNCwxNyBAQAogfQogCiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgbG9h ZF9lbGZfaW50ZXJwKHN0cnVjdCBlbGZoZHIgKiBpbnRlcnBfZWxmX2V4LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludGVycHJldGVyX2ZkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICppbnRlcnBfbG9hZF9hZGRyKQor c3RhdGljIGFiaV91bG9uZyBsb2FkX2VsZl9pbnRlcnAoc3RydWN0IGVsZmhkciAqIGludGVycF9l bGZfZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW50ZXJwcmV0ZXJf ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgKmludGVycF9s b2FkX2FkZHIpCiB7CiAJc3RydWN0IGVsZl9waGRyICplbGZfcGhkYXRhICA9ICBOVUxMOwogCXN0 cnVjdCBlbGZfcGhkciAqZXBwbnQ7Ci0JdGFyZ2V0X3Vsb25nIGxvYWRfYWRkciA9IDA7CisJYWJp X3Vsb25nIGxvYWRfYWRkciA9IDA7CiAJaW50IGxvYWRfYWRkcl9zZXQgPSAwOwogCWludCByZXR2 YWw7Ci0JdGFyZ2V0X3Vsb25nIGxhc3RfYnNzLCBlbGZfYnNzOwotCXRhcmdldF91bG9uZyBlcnJv cjsKKwlhYmlfdWxvbmcgbGFzdF9ic3MsIGVsZl9ic3M7CisJYWJpX3Vsb25nIGVycm9yOwogCWlu dCBpOwogCiAJZWxmX2JzcyA9IDA7CkBAIC04MzgsMjAgKzg0OCwyMCBAQAogCWlmICgoaW50ZXJw X2VsZl9leC0+ZV90eXBlICE9IEVUX0VYRUMgJiYKICAgICAgICAgICAgICBpbnRlcnBfZWxmX2V4 LT5lX3R5cGUgIT0gRVRfRFlOKSB8fAogCSAgICFlbGZfY2hlY2tfYXJjaChpbnRlcnBfZWxmX2V4 LT5lX21hY2hpbmUpKSB7Ci0JCXJldHVybiB+KCh0YXJnZXRfdWxvbmcpMFVMKTsKKwkJcmV0dXJu IH4oKGFiaV91bG9uZykwVUwpOwogCX0KIAogCiAJLyogTm93IHJlYWQgaW4gYWxsIG9mIHRoZSBo ZWFkZXIgaW5mb3JtYXRpb24gKi8KIAogCWlmIChzaXplb2Yoc3RydWN0IGVsZl9waGRyKSAqIGlu dGVycF9lbGZfZXgtPmVfcGhudW0gPiBUQVJHRVRfUEFHRV9TSVpFKQotCSAgICByZXR1cm4gfih0 YXJnZXRfdWxvbmcpMFVMOworCSAgICByZXR1cm4gfihhYmlfdWxvbmcpMFVMOwogCiAJZWxmX3Bo ZGF0YSA9ICAoc3RydWN0IGVsZl9waGRyICopCiAJCW1hbGxvYyhzaXplb2Yoc3RydWN0IGVsZl9w aGRyKSAqIGludGVycF9lbGZfZXgtPmVfcGhudW0pOwogCiAJaWYgKCFlbGZfcGhkYXRhKQotCSAg cmV0dXJuIH4oKHRhcmdldF91bG9uZykwVUwpOworCSAgcmV0dXJuIH4oKGFiaV91bG9uZykwVUwp OwogCiAJLyoKIAkgKiBJZiB0aGUgc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCwg dGhlbiBwdW50LCBzaW5jZQpAQCAtODU5LDcgKzg2OSw3IEBACiAJICovCiAJaWYgKGludGVycF9l bGZfZXgtPmVfcGhlbnRzaXplICE9IHNpemVvZihzdHJ1Y3QgZWxmX3BoZHIpKSB7CiAJICAgIGZy ZWUoZWxmX3BoZGF0YSk7Ci0JICAgIHJldHVybiB+KCh0YXJnZXRfdWxvbmcpMFVMKTsKKwkgICAg cmV0dXJuIH4oKGFiaV91bG9uZykwVUwpOwogICAgICAgICB9CiAKIAlyZXR2YWwgPSBsc2Vlayhp bnRlcnByZXRlcl9mZCwgaW50ZXJwX2VsZl9leC0+ZV9waG9mZiwgU0VFS19TRVQpOwpAQCAtOTAw LDggKzkxMCw4IEBACiAJICBpZiAoZXBwbnQtPnBfdHlwZSA9PSBQVF9MT0FEKSB7CiAJICAgIGlu dCBlbGZfdHlwZSA9IE1BUF9QUklWQVRFIHwgTUFQX0RFTllXUklURTsKIAkgICAgaW50IGVsZl9w cm90ID0gMDsKLQkgICAgdGFyZ2V0X3Vsb25nIHZhZGRyID0gMDsKLQkgICAgdGFyZ2V0X3Vsb25n IGs7CisJICAgIGFiaV91bG9uZyB2YWRkciA9IDA7CisJICAgIGFiaV91bG9uZyBrOwogCiAJICAg IGlmIChlcHBudC0+cF9mbGFncyAmIFBGX1IpIGVsZl9wcm90ID0gIFBST1RfUkVBRDsKIAkgICAg aWYgKGVwcG50LT5wX2ZsYWdzICYgUEZfVykgZWxmX3Byb3QgfD0gUFJPVF9XUklURTsKQEAgLTky MSw3ICs5MzEsNyBAQAogCSAgICAgIC8qIFJlYWwgZXJyb3IgKi8KIAkgICAgICBjbG9zZShpbnRl cnByZXRlcl9mZCk7CiAJICAgICAgZnJlZShlbGZfcGhkYXRhKTsKLQkgICAgICByZXR1cm4gfigo dGFyZ2V0X3Vsb25nKTBVTCk7CisJICAgICAgcmV0dXJuIH4oKGFiaV91bG9uZykwVUwpOwogCSAg ICB9CiAKIAkgICAgaWYgKCFsb2FkX2FkZHJfc2V0ICYmIGludGVycF9lbGZfZXgtPmVfdHlwZSA9 PSBFVF9EWU4pIHsKQEAgLTk2Niw3ICs5NzYsNyBAQAogCWZyZWUoZWxmX3BoZGF0YSk7CiAKIAkq aW50ZXJwX2xvYWRfYWRkciA9IGxvYWRfYWRkcjsKLQlyZXR1cm4gKCh0YXJnZXRfdWxvbmcpIGlu dGVycF9lbGZfZXgtPmVfZW50cnkpICsgbG9hZF9hZGRyOworCXJldHVybiAoKGFiaV91bG9uZykg aW50ZXJwX2VsZl9leC0+ZV9lbnRyeSkgKyBsb2FkX2FkZHI7CiB9CiAKIC8qIEJlc3QgYXR0ZW1w dCB0byBsb2FkIHN5bWJvbHMgZnJvbSB0aGlzIEVMRiBvYmplY3QuICovCkBAIC0xMDU0LDIyICsx MDY0LDIyIEBACiAgICAgc3RydWN0IGVsZmhkciBpbnRlcnBfZWxmX2V4OwogICAgIHN0cnVjdCBl eGVjIGludGVycF9leDsKICAgICBpbnQgaW50ZXJwcmV0ZXJfZmQgPSAtMTsgLyogYXZvaWQgd2Fy bmluZyAqLwotICAgIHRhcmdldF91bG9uZyBsb2FkX2FkZHIsIGxvYWRfYmlhczsKKyAgICBhYmlf dWxvbmcgbG9hZF9hZGRyLCBsb2FkX2JpYXM7CiAgICAgaW50IGxvYWRfYWRkcl9zZXQgPSAwOwog ICAgIHVuc2lnbmVkIGludCBpbnRlcnByZXRlcl90eXBlID0gSU5URVJQUkVURVJfTk9ORTsKICAg ICB1bnNpZ25lZCBjaGFyIGliY3MyX2ludGVycHJldGVyOwogICAgIGludCBpOwotICAgIHRhcmdl dF91bG9uZyBtYXBwZWRfYWRkcjsKKyAgICBhYmlfdWxvbmcgbWFwcGVkX2FkZHI7CiAgICAgc3Ry dWN0IGVsZl9waGRyICogZWxmX3BwbnQ7CiAgICAgc3RydWN0IGVsZl9waGRyICplbGZfcGhkYXRh OwotICAgIHRhcmdldF91bG9uZyBlbGZfYnNzLCBrLCBlbGZfYnJrOworICAgIGFiaV91bG9uZyBl bGZfYnNzLCBrLCBlbGZfYnJrOwogICAgIGludCByZXR2YWw7CiAgICAgY2hhciAqIGVsZl9pbnRl cnByZXRlcjsKLSAgICB0YXJnZXRfdWxvbmcgZWxmX2VudHJ5LCBpbnRlcnBfbG9hZF9hZGRyID0g MDsKKyAgICBhYmlfdWxvbmcgZWxmX2VudHJ5LCBpbnRlcnBfbG9hZF9hZGRyID0gMDsKICAgICBp bnQgc3RhdHVzOwotICAgIHRhcmdldF91bG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRf ZGF0YSwgZW5kX2RhdGE7Ci0gICAgdGFyZ2V0X3Vsb25nIHJlbG9jX2Z1bmNfZGVzYyA9IDA7Ci0g ICAgdGFyZ2V0X3Vsb25nIGVsZl9zdGFjazsKKyAgICBhYmlfdWxvbmcgc3RhcnRfY29kZSwgZW5k X2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRhOworICAgIGFiaV91bG9uZyByZWxvY19mdW5jX2Rl c2MgPSAwOworICAgIGFiaV91bG9uZyBlbGZfc3RhY2s7CiAgICAgY2hhciBwYXNzZWRfZmlsZW5v WzZdOwogCiAgICAgaWJjczJfaW50ZXJwcmV0ZXIgPSAwOwpAQCAtMTEyNSw5ICsxMTM1LDkgQEAK ICAgICBlbGZfYnJrID0gMDsKIAogCi0gICAgZWxmX3N0YWNrID0gfigodGFyZ2V0X3Vsb25nKTBV TCk7CisgICAgZWxmX3N0YWNrID0gfigoYWJpX3Vsb25nKTBVTCk7CiAgICAgZWxmX2ludGVycHJl dGVyID0gTlVMTDsKLSAgICBzdGFydF9jb2RlID0gfigodGFyZ2V0X3Vsb25nKTBVTCk7CisgICAg c3RhcnRfY29kZSA9IH4oKGFiaV91bG9uZykwVUwpOwogICAgIGVuZF9jb2RlID0gMDsKICAgICBz dGFydF9kYXRhID0gMDsKICAgICBlbmRfZGF0YSA9IDA7CkBAIC0xMjYzLDkgKzEyNzMsOSBAQAog ICAgIC8qIE9LLCBUaGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gKi8KICAgICBpbmZvLT5l bmRfZGF0YSA9IDA7CiAgICAgaW5mby0+ZW5kX2NvZGUgPSAwOwotICAgIGluZm8tPnN0YXJ0X21t YXAgPSAodGFyZ2V0X3Vsb25nKUVMRl9TVEFSVF9NTUFQOworICAgIGluZm8tPnN0YXJ0X21tYXAg PSAoYWJpX3Vsb25nKUVMRl9TVEFSVF9NTUFQOwogICAgIGluZm8tPm1tYXAgPSAwOwotICAgIGVs Zl9lbnRyeSA9ICh0YXJnZXRfdWxvbmcpIGVsZl9leC5lX2VudHJ5OworICAgIGVsZl9lbnRyeSA9 IChhYmlfdWxvbmcpIGVsZl9leC5lX2VudHJ5OwogCiAgICAgLyogRG8gdGhpcyBzbyB0aGF0IHdl IGNhbiBsb2FkIHRoZSBpbnRlcnByZXRlciwgaWYgbmVlZCBiZS4gIFdlIHdpbGwKICAgICAgICBj aGFuZ2Ugc29tZSBvZiB0aGVzZSBsYXRlciAqLwpAQCAtMTI4Miw3ICsxMjkyLDcgQEAKICAgICBm b3IoaSA9IDAsIGVsZl9wcG50ID0gZWxmX3BoZGF0YTsgaSA8IGVsZl9leC5lX3BobnVtOyBpKyss IGVsZl9wcG50KyspIHsKICAgICAgICAgaW50IGVsZl9wcm90ID0gMDsKICAgICAgICAgaW50IGVs Zl9mbGFncyA9IDA7Ci0gICAgICAgIHRhcmdldF91bG9uZyBlcnJvcjsKKyAgICAgICAgYWJpX3Vs b25nIGVycm9yOwogCiAJaWYgKGVsZl9wcG50LT5wX3R5cGUgIT0gUFRfTE9BRCkKICAgICAgICAg ICAgIGNvbnRpbnVlOwpAQCAtMTM3NCw3ICsxMzg0LDcgQEAKIAljbG9zZShpbnRlcnByZXRlcl9m ZCk7CiAJZnJlZShlbGZfaW50ZXJwcmV0ZXIpOwogCi0JaWYgKGVsZl9lbnRyeSA9PSB+KCh0YXJn ZXRfdWxvbmcpMFVMKSkgeworCWlmIChlbGZfZW50cnkgPT0gfigoYWJpX3Vsb25nKTBVTCkpIHsK IAkgICAgcHJpbnRmKCJVbmFibGUgdG8gbG9hZCBpbnRlcnByZXRlclxuIik7CiAJICAgIGZyZWUo ZWxmX3BoZGF0YSk7CiAJICAgIGV4aXQoLTEpOwpJbmRleDogcWVtdS9saW51eC11c2VyL2ZsYXQu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9mbGF0LmgJMjAwNy0xMC0xMSAx OToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9mbGF0LmgJMjAwNy0x MC0xMiAxNTo0NDowNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTIyLDI1ICsyMiwyNSBAQAogCiBzdHJ1 Y3QgZmxhdF9oZHIgewogCWNoYXIgbWFnaWNbNF07Ci0JdGFyZ2V0X3Vsb25nIHJldjsgICAgICAg ICAgLyogdmVyc2lvbiAoYXMgYWJvdmUpICovCi0JdGFyZ2V0X3Vsb25nIGVudHJ5OyAgICAgICAg LyogT2Zmc2V0IG9mIGZpcnN0IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb24KLQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2l0aCB0ZXh0IHNlZ21lbnQgZnJvbSBiZWdpbm5pbmcgb2YgZmls ZSAqLwotCXRhcmdldF91bG9uZyBkYXRhX3N0YXJ0OyAgIC8qIE9mZnNldCBvZiBkYXRhIHNlZ21l bnQgZnJvbSBiZWdpbm5pbmcgb2YKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls ZSAqLwotCXRhcmdldF91bG9uZyBkYXRhX2VuZDsgICAgIC8qIE9mZnNldCBvZiBlbmQgb2YgZGF0 YSBzZWdtZW50Ci0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYmVnaW5uaW5n IG9mIGZpbGUgKi8KLQl0YXJnZXRfdWxvbmcgYnNzX2VuZDsgICAgICAvKiBPZmZzZXQgb2YgZW5k IG9mIGJzcyBzZWdtZW50IGZyb20gYmVnaW5uaW5nCi0JICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mIGZpbGUgKi8KKwlhYmlfdWxvbmcgcmV2OyAgICAgICAgICAvKiB2ZXJzaW9uIChh cyBhYm92ZSkgKi8KKwlhYmlfdWxvbmcgZW50cnk7ICAgICAgICAvKiBPZmZzZXQgb2YgZmlyc3Qg ZXhlY3V0YWJsZSBpbnN0cnVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aXRoIHRleHQgc2VnbWVudCBmcm9tIGJlZ2lubmluZyBvZiBmaWxlICovCisJYWJpX3Vsb25n IGRhdGFfc3RhcnQ7ICAgLyogT2Zmc2V0IG9mIGRhdGEgc2VnbWVudCBmcm9tIGJlZ2lubmluZyBv ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlICovCisJYWJpX3Vsb25n IGRhdGFfZW5kOyAgICAgLyogT2Zmc2V0IG9mIGVuZCBvZiBkYXRhIHNlZ21lbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBiZWdpbm5pbmcgb2YgZmlsZSAqLworCWFi aV91bG9uZyBic3NfZW5kOyAgICAgIC8qIE9mZnNldCBvZiBlbmQgb2YgYnNzIHNlZ21lbnQgZnJv bSBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgZmlsZSAq LwogCiAJLyogKEl0IGlzIGFzc3VtZWQgdGhhdCBkYXRhX2VuZCB0aHJvdWdoIGJzc19lbmQgZm9y bXMgdGhlIGJzcyBzZWdtZW50LikgKi8KIAotCXRhcmdldF91bG9uZyBzdGFja19zaXplOyAgIC8q IFNpemUgb2Ygc3RhY2ssIGluIGJ5dGVzICovCi0JdGFyZ2V0X3Vsb25nIHJlbG9jX3N0YXJ0OyAg LyogT2Zmc2V0IG9mIHJlbG9jYXRpb24gcmVjb3JkcyBmcm9tCi0JICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJlZ2lubmluZyBvZiBmaWxlICovCi0JdGFyZ2V0X3Vsb25nIHJlbG9jX2Nv dW50OyAgLyogTnVtYmVyIG9mIHJlbG9jYXRpb24gcmVjb3JkcyAqLwotCXRhcmdldF91bG9uZyBm bGFnczsKLQl0YXJnZXRfdWxvbmcgYnVpbGRfZGF0ZTsgICAvKiBXaGVuIHRoZSBwcm9ncmFtL2xp YnJhcnkgd2FzIGJ1aWx0ICovCi0JdGFyZ2V0X3Vsb25nIGZpbGxlcls1XTsgICAgLyogUmVzZXJ2 ZXJlZCwgc2V0IHRvIHplcm8gKi8KKwlhYmlfdWxvbmcgc3RhY2tfc2l6ZTsgICAvKiBTaXplIG9m IHN0YWNrLCBpbiBieXRlcyAqLworCWFiaV91bG9uZyByZWxvY19zdGFydDsgIC8qIE9mZnNldCBv ZiByZWxvY2F0aW9uIHJlY29yZHMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZWdpbm5pbmcgb2YgZmlsZSAqLworCWFiaV91bG9uZyByZWxvY19jb3VudDsgIC8qIE51 bWJlciBvZiByZWxvY2F0aW9uIHJlY29yZHMgKi8KKwlhYmlfdWxvbmcgZmxhZ3M7CisJYWJpX3Vs b25nIGJ1aWxkX2RhdGU7ICAgLyogV2hlbiB0aGUgcHJvZ3JhbS9saWJyYXJ5IHdhcyBidWlsdCAq LworCWFiaV91bG9uZyBmaWxsZXJbNV07ICAgIC8qIFJlc2VydmVyZWQsIHNldCB0byB6ZXJvICov CiB9OwogCiAjZGVmaW5lIEZMQVRfRkxBR19SQU0gICAgMHgwMDAxIC8qIGxvYWQgcHJvZ3JhbSBl bnRpcmVseSBpbnRvIFJBTSAqLwpJbmRleDogcWVtdS9saW51eC11c2VyL2ZsYXRsb2FkLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvZmxhdGxvYWQuYwkyMDA3LTEwLTExIDE5 OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2ZsYXRsb2FkLmMJMjAw Ny0xMC0xMiAxNTo0NTozMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTYzLDEzICs2MywxMyBAQAogI2Rl ZmluZSBVTkxPQURFRF9MSUIgMHg3ZmYwMDBmZgkJLyogUGxhY2Vob2xkZXIgZm9yIHVudXNlZCBs aWJyYXJ5ICovCiAKIHN0cnVjdCBsaWJfaW5mbyB7Ci0gICAgdGFyZ2V0X3Vsb25nIHN0YXJ0X2Nv ZGU7CS8qIFN0YXJ0IG9mIHRleHQgc2VnbWVudCAqLwotICAgIHRhcmdldF91bG9uZyBzdGFydF9k YXRhOwkvKiBTdGFydCBvZiBkYXRhIHNlZ21lbnQgKi8KLSAgICB0YXJnZXRfdWxvbmcgZW5kX2Rh dGE7ICAgICAgLyogU3RhcnQgb2YgYnNzIHNlY3Rpb24gKi8KLSAgICB0YXJnZXRfdWxvbmcgc3Rh cnRfYnJrOwkvKiBFbmQgb2YgZGF0YSBzZWdtZW50ICovCi0gICAgdGFyZ2V0X3Vsb25nIHRleHRf bGVuOwkvKiBMZW5ndGggb2YgdGV4dCBzZWdtZW50ICovCi0gICAgdGFyZ2V0X3Vsb25nIGVudHJ5 OwkJLyogU3RhcnQgYWRkcmVzcyBmb3IgdGhpcyBtb2R1bGUgKi8KLSAgICB0YXJnZXRfdWxvbmcg YnVpbGRfZGF0ZTsJLyogV2hlbiB0aGlzIG9uZSB3YXMgY29tcGlsZWQgKi8KKyAgICBhYmlfdWxv bmcgc3RhcnRfY29kZTsgICAgICAgLyogU3RhcnQgb2YgdGV4dCBzZWdtZW50ICovCisgICAgYWJp X3Vsb25nIHN0YXJ0X2RhdGE7ICAgICAgIC8qIFN0YXJ0IG9mIGRhdGEgc2VnbWVudCAqLworICAg IGFiaV91bG9uZyBlbmRfZGF0YTsgICAgICAgICAvKiBTdGFydCBvZiBic3Mgc2VjdGlvbiAqLwor ICAgIGFiaV91bG9uZyBzdGFydF9icms7ICAgICAgICAvKiBFbmQgb2YgZGF0YSBzZWdtZW50ICov CisgICAgYWJpX3Vsb25nIHRleHRfbGVuOwkgICAgICAgIC8qIExlbmd0aCBvZiB0ZXh0IHNlZ21l bnQgKi8KKyAgICBhYmlfdWxvbmcgZW50cnk7CSAgICAgICAgLyogU3RhcnQgYWRkcmVzcyBmb3Ig dGhpcyBtb2R1bGUgKi8KKyAgICBhYmlfdWxvbmcgYnVpbGRfZGF0ZTsgICAgICAgLyogV2hlbiB0 aGlzIG9uZSB3YXMgY29tcGlsZWQgKi8KICAgICBzaG9ydCBsb2FkZWQ7CQkvKiBIYXMgdGhpcyBs aWJyYXJ5IGJlZW4gbG9hZGVkPyAqLwogfTsKIApAQCAtODksNyArODksNyBAQAogICovCiAKIC8q IFB1c2ggYSBibG9jayBvZiBzdHJpbmdzIG9udG8gdGhlIGd1ZXN0IHN0YWNrLiAgKi8KLXN0YXRp YyB0YXJnZXRfdWxvbmcgY29weV9zdHJpbmdzKHRhcmdldF91bG9uZyBwLCBpbnQgbiwgY2hhciAq KnMpCitzdGF0aWMgYWJpX3Vsb25nIGNvcHlfc3RyaW5ncyhhYmlfdWxvbmcgcCwgaW50IG4sIGNo YXIgKipzKQogewogICAgIGludCBsZW47CiAKQEAgLTEwMiw4ICsxMDIsOCBAQAogICAgIHJldHVy biBwOwogfQogCi1pbnQgdGFyZ2V0X3ByZWFkKGludCBmZCwgdGFyZ2V0X3Vsb25nIHB0ciwgdGFy Z2V0X3Vsb25nIGxlbiwKLSAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG9mZnNldCkKK2lu dCB0YXJnZXRfcHJlYWQoaW50IGZkLCBhYmlfdWxvbmcgcHRyLCBhYmlfdWxvbmcgbGVuLAorICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgb2Zmc2V0KQogewogICAgIHZvaWQgKmJ1ZjsKICAgICBp bnQgcmV0OwpAQCAtMjYyLDE1ICsyNjIsMTUgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK LXN0YXRpYyB0YXJnZXRfdWxvbmcKLWNhbGNfcmVsb2ModGFyZ2V0X3Vsb25nIHIsIHN0cnVjdCBs aWJfaW5mbyAqcCwgaW50IGN1cmlkLCBpbnQgaW50ZXJuYWxwKQorc3RhdGljIGFiaV91bG9uZwor Y2FsY19yZWxvYyhhYmlfdWxvbmcgciwgc3RydWN0IGxpYl9pbmZvICpwLCBpbnQgY3VyaWQsIGlu dCBpbnRlcm5hbHApCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIGFkZHI7CisgICAgYWJpX3Vsb25nIGFk ZHI7CiAgICAgaW50IGlkOwotICAgIHRhcmdldF91bG9uZyBzdGFydF9icms7Ci0gICAgdGFyZ2V0 X3Vsb25nIHN0YXJ0X2RhdGE7Ci0gICAgdGFyZ2V0X3Vsb25nIHRleHRfbGVuOwotICAgIHRhcmdl dF91bG9uZyBzdGFydF9jb2RlOworICAgIGFiaV91bG9uZyBzdGFydF9icms7CisgICAgYWJpX3Vs b25nIHN0YXJ0X2RhdGE7CisgICAgYWJpX3Vsb25nIHRleHRfbGVuOworICAgIGFiaV91bG9uZyBz dGFydF9jb2RlOwogCiAjaWZkZWYgQ09ORklHX0JJTkZNVF9TSEFSRURfRkxBVAogI2Vycm9yIG5l ZWRzIGNoZWNraW5nCkBAIC0zODEsMTkgKzM4MSwxOSBAQAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIHN0YXRpYyBpbnQgbG9hZF9mbGF0X2ZpbGUoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0s Ci0JCXN0cnVjdCBsaWJfaW5mbyAqbGliaW5mbywgaW50IGlkLCB0YXJnZXRfdWxvbmcgKmV4dHJh X3N0YWNrKQorCQlzdHJ1Y3QgbGliX2luZm8gKmxpYmluZm8sIGludCBpZCwgYWJpX3Vsb25nICpl eHRyYV9zdGFjaykKIHsKICAgICBzdHJ1Y3QgZmxhdF9oZHIgKiBoZHI7Ci0gICAgdGFyZ2V0X3Vs b25nIHRleHRwb3MgPSAwLCBkYXRhcG9zID0gMCwgcmVzdWx0OwotICAgIHRhcmdldF91bG9uZyBy ZWFsZGF0YXN0YXJ0ID0gMDsKLSAgICB0YXJnZXRfdWxvbmcgdGV4dF9sZW4sIGRhdGFfbGVuLCBi c3NfbGVuLCBzdGFja19sZW4sIGZsYWdzOwotICAgIHRhcmdldF91bG9uZyBtZW1wID0gMDsgLyog Zm9yIGZpbmRpbmcgdGhlIGJyayBhcmVhICovCi0gICAgdGFyZ2V0X3Vsb25nIGV4dHJhOwotICAg IHRhcmdldF91bG9uZyByZWxvYyA9IDAsIHJwOworICAgIGFiaV91bG9uZyB0ZXh0cG9zID0gMCwg ZGF0YXBvcyA9IDAsIHJlc3VsdDsKKyAgICBhYmlfdWxvbmcgcmVhbGRhdGFzdGFydCA9IDA7Cisg ICAgYWJpX3Vsb25nIHRleHRfbGVuLCBkYXRhX2xlbiwgYnNzX2xlbiwgc3RhY2tfbGVuLCBmbGFn czsKKyAgICBhYmlfdWxvbmcgbWVtcCA9IDA7IC8qIGZvciBmaW5kaW5nIHRoZSBicmsgYXJlYSAq LworICAgIGFiaV91bG9uZyBleHRyYTsKKyAgICBhYmlfdWxvbmcgcmVsb2MgPSAwLCBycDsKICAg ICBpbnQgaSwgcmV2LCByZWxvY3MgPSAwOwotICAgIHRhcmdldF91bG9uZyBmcG9zOwotICAgIHRh cmdldF91bG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZTsKLSAgICB0YXJnZXRfdWxvbmcgaW5keF9s ZW47CisgICAgYWJpX3Vsb25nIGZwb3M7CisgICAgYWJpX3Vsb25nIHN0YXJ0X2NvZGUsIGVuZF9j b2RlOworICAgIGFiaV91bG9uZyBpbmR4X2xlbjsKIAogICAgIGhkciA9ICgoc3RydWN0IGZsYXRf aGRyICopIGJwcm0tPmJ1Zik7CQkvKiBleGVjLWhlYWRlciAqLwogCkBAIC00NDAsMTQgKzQ0MCwx NCBAQAogICAgIC8qCiAgICAgICogY2FsY3VsYXRlIHRoZSBleHRyYSBzcGFjZSB3ZSBuZWVkIHRv IG1hcCBpbgogICAgICAqLwotICAgIGV4dHJhID0gcmVsb2NzICogc2l6ZW9mKHRhcmdldF91bG9u Zyk7CisgICAgZXh0cmEgPSByZWxvY3MgKiBzaXplb2YoYWJpX3Vsb25nKTsKICAgICBpZiAoZXh0 cmEgPCBic3NfbGVuICsgc3RhY2tfbGVuKQogICAgICAgICBleHRyYSA9IGJzc19sZW4gKyBzdGFj a19sZW47CiAKICAgICAvKiBBZGQgc3BhY2UgZm9yIGxpYnJhcnkgYmFzZSBwb2ludGVycy4gIE1h a2Ugc3VyZSB0aGlzIGRvZXMgbm90CiAgICAgICAgbWlzYWxpZ24gdGhlICBkb2Vzbid0IG1pc2Fs aWduIHRoZSBkYXRhIHNlZ21lbnQuICAqLwotICAgIGluZHhfbGVuID0gTUFYX1NIQVJFRF9MSUJT ICogc2l6ZW9mKHRhcmdldF91bG9uZyk7Ci0gICAgaW5keF9sZW4gPSAoaW5keF9sZW4gKyAxNSkg JiB+KHRhcmdldF91bG9uZykxNTsKKyAgICBpbmR4X2xlbiA9IE1BWF9TSEFSRURfTElCUyAqIHNp emVvZihhYmlfdWxvbmcpOworICAgIGluZHhfbGVuID0gKGluZHhfbGVuICsgMTUpICYgfihhYmlf dWxvbmcpMTU7CiAKICAgICAvKgogICAgICAqIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBjYXNlcyBo ZXJlLCAgdGhlIHNlcGFyYXRlIGNvZGUvZGF0YQpAQCAtNDg1LDEyICs0ODUsMTIgQEAKICNpZmRl ZiBDT05GSUdfQklORk1UX1pGTEFUCiAgICAgICAgIGlmIChmbGFncyAmIEZMQVRfRkxBR19HWkRB VEEpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3NfZXhlYyhicHJtLCBmcG9zLCAo Y2hhciAqKSBkYXRhcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFfbGVuICsgKHJlbG9jcyAqIHNpemVvZih0YXJnZXRfdWxvbmcpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YoYWJpX3Vs b25nKSkpCiAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl c3VsdCA9IHRhcmdldF9wcmVhZChicHJtLT5mZCwgZGF0YXBvcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YodGFyZ2V0X3Vsb25n KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9sZW4gKyAocmVsb2Nz ICogc2l6ZW9mKGFiaV91bG9uZykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZwb3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CkBAIC01NDQsNyAr NTQ0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X2xlbiwgMCk7 CiAgICAgICAgICAgICBpZiAocmVzdWx0ID49IDApIHsKICAgICAgICAgICAgICAgICByZXN1bHQg PSB0YXJnZXRfcHJlYWQoYnBybS0+ZmQsIGRhdGFwb3MsCi0gICAgICAgICAgICAgICAgICAgIGRh dGFfbGVuICsgKHJlbG9jcyAqIHNpemVvZih0YXJnZXRfdWxvbmcpKSwKKyAgICAgICAgICAgICAg ICAgICAgZGF0YV9sZW4gKyAocmVsb2NzICogc2l6ZW9mKGFiaV91bG9uZykpLAogICAgICAgICAg ICAgICAgICAgICBudG9obChoZHItPmRhdGFfc3RhcnQpKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQpAQCAtNTk3LDcgKzU5Nyw3IEBACiAgICAgaWYgKGZsYWdzICYgRkxBVF9GTEFHX0dPVFBJ QykgewogICAgICAgICBycCA9IGRhdGFwb3M7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAg ICAgICB0YXJnZXRfdWxvbmcgYWRkcjsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRyOwogICAg ICAgICAgICAgYWRkciA9IHRnZXRsKHJwKTsKICAgICAgICAgICAgIGlmIChhZGRyID09IC0xKQog ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjA3LDcgKzYwNyw3IEBACiAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PRVhFQzsKICAgICAgICAgICAgICAgICB0cHV0bChycCwgYWRkcik7 CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBycCArPSBzaXplb2YodGFyZ2V0X3Vsb25nKTsK KyAgICAgICAgICAgIHJwICs9IHNpemVvZihhYmlfdWxvbmcpOwogICAgICAgICB9CiAgICAgfQog CkBAIC02MjQsMTIgKzYyNCwxMiBAQAogICAgICAqLwogICAgIGlmIChyZXYgPiBPTERfRkxBVF9W RVJTSU9OKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZWxvY3M7IGkrKykgewotICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIsIHJlbHZhbDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBh ZGRyLCByZWx2YWw7CiAKICAgICAgICAgICAgIC8qIEdldCB0aGUgYWRkcmVzcyBvZiB0aGUgcG9p bnRlciB0byBiZQogICAgICAgICAgICAgICAgcmVsb2NhdGVkIChvZiBjb3Vyc2UsIHRoZSBhZGRy ZXNzIGhhcyB0byBiZQogICAgICAgICAgICAgICAgcmVsb2NhdGVkIGZpcnN0KS4gICovCi0gICAg ICAgICAgICByZWx2YWwgPSB0Z2V0bChyZWxvYyArIGkgKiBzaXplb2YgKHRhcmdldF91bG9uZykp OworICAgICAgICAgICAgcmVsdmFsID0gdGdldGwocmVsb2MgKyBpICogc2l6ZW9mIChhYmlfdWxv bmcpKTsKICAgICAgICAgICAgIGFkZHIgPSBmbGF0X2dldF9yZWxvY2F0ZV9hZGRyKHJlbHZhbCk7 CiAgICAgICAgICAgICBycCA9IGNhbGNfcmVsb2MoYWRkciwgbGliaW5mbywgaWQsIDEpOwogICAg ICAgICAgICAgaWYgKHJwID09IFJFTE9DX0ZBSUxFRCkKQEAgLTY1Nyw4ICs2NTcsOCBAQAogICAg ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlbG9jczsgaSsr KSB7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgcmVsdmFsOwotICAgICAgICAgICAgcmVsdmFs ID0gdGdldGwocmVsb2MgKyBpICogc2l6ZW9mICh0YXJnZXRfdWxvbmcpKTsKKyAgICAgICAgICAg IGFiaV91bG9uZyByZWx2YWw7CisgICAgICAgICAgICByZWx2YWwgPSB0Z2V0bChyZWxvYyArIGkg KiBzaXplb2YgKGFiaV91bG9uZykpOwogICAgICAgICAgICAgb2xkX3JlbG9jKCZsaWJpbmZvWzBd LCByZWx2YWwpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzEyLDEwICs3MTIsMTAgQEAKICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGltYWdlX2luZm8gKiBpbmZvKQogewogICAgIHN0cnVjdCBs aWJfaW5mbyBsaWJpbmZvW01BWF9TSEFSRURfTElCU107Ci0gICAgdGFyZ2V0X3Vsb25nIHAgPSBi cHJtLT5wOwotICAgIHRhcmdldF91bG9uZyBzdGFja19sZW47Ci0gICAgdGFyZ2V0X3Vsb25nIHN0 YXJ0X2FkZHI7Ci0gICAgdGFyZ2V0X3Vsb25nIHNwOworICAgIGFiaV91bG9uZyBwID0gYnBybS0+ cDsKKyAgICBhYmlfdWxvbmcgc3RhY2tfbGVuOworICAgIGFiaV91bG9uZyBzdGFydF9hZGRyOwor ICAgIGFiaV91bG9uZyBzcDsKICAgICBpbnQgcmVzOwogICAgIGludCBpLCBqOwogCkBAIC03NDAs NyArNzQwLDcgQEAKICAgICAvKiBVcGRhdGUgZGF0YSBzZWdtZW50IHBvaW50ZXJzIGZvciBhbGwg bGlicmFyaWVzICovCiAgICAgZm9yIChpPTA7IGk8TUFYX1NIQVJFRF9MSUJTOyBpKyspIHsKICAg ICAgICAgaWYgKGxpYmluZm9baV0ubG9hZGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcg cDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBwOwogICAgICAgICAgICAgcCA9IGxpYmluZm9baV0u c3RhcnRfZGF0YTsKICAgICAgICAgICAgIGZvciAoaj0wOyBqPE1BWF9TSEFSRURfTElCUzsgaisr KSB7CiAgICAgICAgICAgICAgICAgcCAtPSA0OwpAQCAtNzU4LDEyICs3NTgsMTIgQEAKICAgICBw ID0gY29weV9zdHJpbmdzKHAsIGJwcm0tPmVudmMsIGJwcm0tPmVudnApOwogICAgIHAgPSBjb3B5 X3N0cmluZ3MocCwgYnBybS0+YXJnYywgYnBybS0+YXJndik7CiAgICAgLyogQWxpZ24gc3RhY2su ICAqLwotICAgIHNwID0gcCAmIH4odGFyZ2V0X3Vsb25nKShzaXplb2YodGFyZ2V0X3Vsb25nKSAt IDEpOworICAgIHNwID0gcCAmIH4oYWJpX3Vsb25nKShzaXplb2YoYWJpX3Vsb25nKSAtIDEpOwog ICAgIC8qIEVuZm9yY2UgZmluYWwgc3RhY2sgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAgVGhpcyBp cyBzdWZmaWNpZW50CiAgICAgICAgZm9yIGFsbCBjdXJyZW50IHRhcmdldHMsIGFuZCBleGNlc3Mg YWxpZ25tZW50IGlzIGhhcm1sZXNzLiAgKi8KICAgICBzdGFja19sZW4gPSBicHJtLT5lbnZjICsg YnBybS0+YXJnYyArIDI7CiAgICAgc3RhY2tfbGVuICs9IDM7CS8qIGFyZ2MsIGFydmcsIGFyZ3Ag Ki8KLSAgICBzdGFja19sZW4gKj0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgc3RhY2tfbGVu ICo9IHNpemVvZihhYmlfdWxvbmcpOwogICAgIGlmICgoc3AgKyBzdGFja19sZW4pICYgMTUpCiAg ICAgICAgIHNwIC09IDE2IC0gKChzcCArIHN0YWNrX2xlbikgJiAxNSk7CiAgICAgc3AgPSBsb2Fk ZXJfYnVpbGRfYXJncHRyKGJwcm0tPmVudmMsIGJwcm0tPmFyZ2MsIHNwLCBwLCAxKTsKSW5kZXg6 IHFlbXUvbGludXgtdXNlci9pMzg2L3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv bGludXgtdXNlci9pMzg2L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL2kzODYvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6 NDYuMDAwMDAwMDAwICswMDAwCkBAIC0zMSw3ICszMSw3IEBACiAKIHN0cnVjdCB0YXJnZXRfbW9k aWZ5X2xkdF9sZHRfcyB7CiAgICAgdW5zaWduZWQgaW50ICBlbnRyeV9udW1iZXI7Ci0gICAgdGFy Z2V0X3Vsb25nIGJhc2VfYWRkcjsKKyAgICBhYmlfdWxvbmcgYmFzZV9hZGRyOwogICAgIHVuc2ln bmVkIGludCBsaW1pdDsKICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiB9OwpAQCAtNzksMjIgKzc5 LDIyIEBACiAvKgogICogbm9ybWFsIHJlZ3MsIHdpdGggc3BlY2lhbCBtZWFuaW5nIGZvciB0aGUg c2VnbWVudCBkZXNjcmlwdG9ycy4uCiAgKi8KLQl0YXJnZXRfbG9uZyBlYng7Ci0JdGFyZ2V0X2xv bmcgZWN4OwotCXRhcmdldF9sb25nIGVkeDsKLQl0YXJnZXRfbG9uZyBlc2k7Ci0JdGFyZ2V0X2xv bmcgZWRpOwotCXRhcmdldF9sb25nIGVicDsKLQl0YXJnZXRfbG9uZyBlYXg7Ci0JdGFyZ2V0X2xv bmcgX19udWxsX2RzOwotCXRhcmdldF9sb25nIF9fbnVsbF9lczsKLQl0YXJnZXRfbG9uZyBfX251 bGxfZnM7Ci0JdGFyZ2V0X2xvbmcgX19udWxsX2dzOwotCXRhcmdldF9sb25nIG9yaWdfZWF4Owot CXRhcmdldF9sb25nIGVpcDsKKwlhYmlfbG9uZyBlYng7CisJYWJpX2xvbmcgZWN4OworCWFiaV9s b25nIGVkeDsKKwlhYmlfbG9uZyBlc2k7CisJYWJpX2xvbmcgZWRpOworCWFiaV9sb25nIGVicDsK KwlhYmlfbG9uZyBlYXg7CisJYWJpX2xvbmcgX19udWxsX2RzOworCWFiaV9sb25nIF9fbnVsbF9l czsKKwlhYmlfbG9uZyBfX251bGxfZnM7CisJYWJpX2xvbmcgX19udWxsX2dzOworCWFiaV9sb25n IG9yaWdfZWF4OworCWFiaV9sb25nIGVpcDsKIAl1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7Ci0J dGFyZ2V0X2xvbmcgZWZsYWdzOwotCXRhcmdldF9sb25nIGVzcDsKKwlhYmlfbG9uZyBlZmxhZ3M7 CisJYWJpX2xvbmcgZXNwOwogCXVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKIC8qCiAgKiB0aGVz ZSBhcmUgc3BlY2lmaWMgdG8gdjg2IG1vZGU6CkBAIC0xMDYsMTQgKzEwNiwxNCBAQAogfTsKIAog c3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0cnVjdCB7Ci0JdGFyZ2V0X3Vsb25nIF9fbWFwWzhd OwkJCS8qIDI1NiBiaXRzICovCisJYWJpX3Vsb25nIF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICov CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3ZtODZfc3RydWN0IHsKIAlzdHJ1Y3QgdGFyZ2V0X3ZtODZf cmVncyByZWdzOwotCXRhcmdldF91bG9uZyBmbGFnczsKLQl0YXJnZXRfdWxvbmcgc2NyZWVuX2Jp dG1hcDsKLQl0YXJnZXRfdWxvbmcgY3B1X3R5cGU7CisJYWJpX3Vsb25nIGZsYWdzOworCWFiaV91 bG9uZyBzY3JlZW5fYml0bWFwOworCWFiaV91bG9uZyBjcHVfdHlwZTsKIAlzdHJ1Y3QgdGFyZ2V0 X3JldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogCXN0cnVjdCB0YXJnZXRfcmV2ZWN0 b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKIH07CkBAIC0xMjQsNyArMTI0LDcgQEAKICNk ZWZpbmUgVEFSR0VUX1ZNODZfU0NSRUVOX0JJVE1BUAkweDAwMDEKIAogc3RydWN0IHRhcmdldF92 bTg2cGx1c19pbmZvX3N0cnVjdCB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBmbGFnczsKKyAgICAg ICAgYWJpX3Vsb25nIGZsYWdzOwogI2RlZmluZSBUQVJHRVRfZm9yY2VfcmV0dXJuX2Zvcl9waWMg KDEgPDwgMCkKICNkZWZpbmUgVEFSR0VUX3ZtODZkYmdfYWN0aXZlICAgICAgICgxIDw8IDEpICAv KiBmb3IgZGVidWdnZXIgKi8KICNkZWZpbmUgVEFSR0VUX3ZtODZkYmdfVEZwZW5kaWcgICAgICgx IDw8IDIpICAvKiBmb3IgZGVidWdnZXIgKi8KQEAgLTEzNCw5ICsxMzQsOSBAQAogCiBzdHJ1Y3Qg dGFyZ2V0X3ZtODZwbHVzX3N0cnVjdCB7CiAJc3RydWN0IHRhcmdldF92bTg2X3JlZ3MgcmVnczsK LQl0YXJnZXRfdWxvbmcgZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNjcmVlbl9iaXRtYXA7Ci0JdGFy Z2V0X3Vsb25nIGNwdV90eXBlOworCWFiaV91bG9uZyBmbGFnczsKKwlhYmlfdWxvbmcgc2NyZWVu X2JpdG1hcDsKKwlhYmlfdWxvbmcgY3B1X3R5cGU7CiAJc3RydWN0IHRhcmdldF9yZXZlY3RvcmVk X3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKIAlzdHJ1Y3QgdGFyZ2V0X3JldmVjdG9yZWRfc3RydWN0 IGludDIxX3JldmVjdG9yZWQ7CiAJc3RydWN0IHRhcmdldF92bTg2cGx1c19pbmZvX3N0cnVjdCB2 bTg2cGx1czsKSW5kZXg6IHFlbXUvbGludXgtdXNlci9pMzg2L3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9pMzg2L3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2kzODYv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vs b25nIHNzX3NpemU7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFi aV91bG9uZyBzc19zaXplOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBA CiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWgkyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtT WgkJODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0 ZShDUFVYODZTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJv bV9jcHVzdGF0ZShDUFVYODZTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5yZWdz W1JfRVNQXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9saW51eGxvYWQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9saW51eGxvYWQuYwkyMDA3LTEwLTExIDE5OjE3OjEz LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2xpbnV4bG9hZC5jCTIwMDctMTAt MTIgMTU6NDY6MTkuMDAwMDAwMDAwICswMDAwCkBAIC0xMyw3ICsxMyw3IEBACiAjZGVmaW5lIE5H Uk9VUFMgMzIKIAogLyogPz8/IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBzb21ld2hlcmUgZWxzZS4g ICovCi12b2lkIG1lbWNweV90b190YXJnZXQodGFyZ2V0X3Vsb25nIGRlc3QsIGNvbnN0IHZvaWQg KnNyYywKK3ZvaWQgbWVtY3B5X3RvX3RhcmdldChhYmlfdWxvbmcgZGVzdCwgY29uc3Qgdm9pZCAq c3JjLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKQogewogICAgIHZv aWQgKmhvc3RfcHRyOwpAQCAtMTA5LDEyICsxMDksMTIgQEAKIH0KIAogLyogQ29uc3RydWN0IHRo ZSBlbnZwIGFuZCBhcmd2IHRhYmxlcyBvbiB0aGUgdGFyZ2V0IHN0YWNrLiAgKi8KLXRhcmdldF91 bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBlbnZjLCBpbnQgYXJnYywgdGFyZ2V0X3Vsb25n IHNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHN0cmlu Z3AsIGludCBwdXNoX3B0cikKK2FiaV91bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBlbnZj LCBpbnQgYXJnYywgYWJpX3Vsb25nIHNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWJpX3Vsb25nIHN0cmluZ3AsIGludCBwdXNoX3B0cikKIHsKLSAgICBpbnQgbiA9IHNpemVvZih0 YXJnZXRfdWxvbmcpOwotICAgIHRhcmdldF91bG9uZyBlbnZwOwotICAgIHRhcmdldF91bG9uZyBh cmd2OworICAgIGludCBuID0gc2l6ZW9mKGFiaV91bG9uZyk7CisgICAgYWJpX3Vsb25nIGVudnA7 CisgICAgYWJpX3Vsb25nIGFyZ3Y7CiAKICAgICBzcCAtPSAoZW52YyArIDEpICogbjsKICAgICBl bnZwID0gc3A7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbTY4ay9zeXNjYWxsLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbTY4ay9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOTox NzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9tNjhrL3N5c2NhbGwuaAky MDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMywxNCArMywxNCBAQAogICAg c3RhY2sgZHVyaW5nIGEgc3lzdGVtIGNhbGwuICovCiAKIHN0cnVjdCB0YXJnZXRfcHRfcmVncyB7 Ci0gICAgdGFyZ2V0X2xvbmcgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7Ci0gICAgdGFyZ2V0 X2xvbmcgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTY7Ci0gICAgdGFyZ2V0X3Vsb25nIGQwOwot ICAgIHRhcmdldF91bG9uZyB1c3A7Ci0gICAgdGFyZ2V0X3Vsb25nIG9yaWdfZDA7CisgICAgYWJp X2xvbmcgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7CisgICAgYWJpX2xvbmcgYTAsIGExLCBh MiwgYTMsIGE0LCBhNSwgYTY7CisgICAgYWJpX3Vsb25nIGQwOworICAgIGFiaV91bG9uZyB1c3A7 CisgICAgYWJpX3Vsb25nIG9yaWdfZDA7CiAgICAgaW50MTZfdCBzdGthZGo7CiAgICAgdWludDE2 X3Qgc3I7Ci0gICAgdGFyZ2V0X3Vsb25nIHBjOworICAgIGFiaV91bG9uZyBwYzsKICAgICB1aW50 MTZfdCBmbnR2ZXg7CiAgICAgdWludDE2X3QgX19maWxsOwogfTsKSW5kZXg6IHFlbXUvbGludXgt dXNlci9tNjhrL3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgt dXNlci9tNjhrL3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL202OGsvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEg MTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3Qg ZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRl ZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFy Z2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7CisJYWJpX3Vsb25nIHNz X3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19zaXplOwogfSB0YXJnZXRf c3RhY2tfdDsKIAogCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbWFpbi5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL21haW4uYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21haW4uYwkyMDA3LTEwLTEyIDE1OjI2OjUwLjAw MDAwMDAwMCArMDAwMApAQCAtMTY4LDcgKzE2OCw3IEBACiB2b2lkIGNwdV9sb29wKENQVVg4NlN0 YXRlICplbnYpCiB7CiAgICAgaW50IHRyYXBucjsKLSAgICB0YXJnZXRfdWxvbmcgcGM7CisgICAg YWJpX3Vsb25nIHBjOwogICAgIHRhcmdldF9zaWdpbmZvX3QgaW5mbzsKIAogICAgIGZvcig7Oykg ewpAQCAtMzA1LDExICszMDUsMTEgQEAKICNpZmRlZiBUQVJHRVRfQVJNCiAKIC8qIFhYWDogZmlu ZCBhIGJldHRlciBzb2x1dGlvbiAqLwotZXh0ZXJuIHZvaWQgdGJfaW52YWxpZGF0ZV9wYWdlX3Jh bmdlKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGVuZCk7CitleHRlcm4gdm9pZCB0 Yl9pbnZhbGlkYXRlX3BhZ2VfcmFuZ2UoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgZW5kKTsK IAotc3RhdGljIHZvaWQgYXJtX2NhY2hlX2ZsdXNoKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0 X3Vsb25nIGxhc3QpCitzdGF0aWMgdm9pZCBhcm1fY2FjaGVfZmx1c2goYWJpX3Vsb25nIHN0YXJ0 LCBhYmlfdWxvbmcgbGFzdCkKIHsKLSAgICB0YXJnZXRfdWxvbmcgYWRkciwgbGFzdDE7CisgICAg YWJpX3Vsb25nIGFkZHIsIGxhc3QxOwogCiAgICAgaWYgKGxhc3QgPCBzdGFydCkKICAgICAgICAg cmV0dXJuOwpAQCAtNDc0LDcgKzQ3NCw3IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgc2F2ZV93aW5k b3dfb2Zmc2V0KENQVVNQQVJDU3RhdGUgKmVudiwgaW50IGN3cDEpCiB7CiAgICAgdW5zaWduZWQg aW50IGk7Ci0gICAgdGFyZ2V0X3Vsb25nIHNwX3B0cjsKKyAgICBhYmlfdWxvbmcgc3BfcHRyOwog CiAgICAgc3BfcHRyID0gZW52LT5yZWdiYXNlW2dldF9yZWdfaW5kZXgoZW52LCBjd3AxLCA2KV07 CiAjaWYgZGVmaW5lZChERUJVR19XSU4pCkBAIC00ODMsNyArNDgzLDcgQEAKICNlbmRpZgogICAg IGZvcihpID0gMDsgaSA8IDE2OyBpKyspIHsKICAgICAgICAgdHB1dGwoc3BfcHRyLCBlbnYtPnJl Z2Jhc2VbZ2V0X3JlZ19pbmRleChlbnYsIGN3cDEsIDggKyBpKV0pOwotICAgICAgICBzcF9wdHIg Kz0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgICAgIHNwX3B0ciArPSBzaXplb2YoYWJpX3Vs b25nKTsKICAgICB9CiB9CiAKQEAgLTUwNSw3ICs1MDUsNyBAQAogc3RhdGljIHZvaWQgcmVzdG9y ZV93aW5kb3coQ1BVU1BBUkNTdGF0ZSAqZW52KQogewogICAgIHVuc2lnbmVkIGludCBuZXdfd2lt LCBpLCBjd3AxOwotICAgIHRhcmdldF91bG9uZyBzcF9wdHI7CisgICAgYWJpX3Vsb25nIHNwX3B0 cjsKIAogICAgIG5ld193aW0gPSAoKGVudi0+d2ltIDw8IDEpIHwgKGVudi0+d2ltID4+IChOV0lO RE9XUyAtIDEpKSkgJgogICAgICAgICAoKDFMTCA8PCBOV0lORE9XUykgLSAxKTsKQEAgLTUxOSw3 ICs1MTksNyBAQAogI2VuZGlmCiAgICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAg ICBlbnYtPnJlZ2Jhc2VbZ2V0X3JlZ19pbmRleChlbnYsIGN3cDEsIDggKyBpKV0gPSB0Z2V0bChz cF9wdHIpOwotICAgICAgICBzcF9wdHIgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgICAg IHNwX3B0ciArPSBzaXplb2YoYWJpX3Vsb25nKTsKICAgICB9CiAgICAgZW52LT53aW0gPSBuZXdf d2ltOwogI2lmZGVmIFRBUkdFVF9TUEFSQzY0CkBAIC01NzIsMTQgKzU3MiwxNCBAQAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5yZWd3cHRyWzJdLCBlbnYtPnJlZ3dwdHJbM10s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnJlZ3dwdHJbNF0sIGVudi0+cmVn d3B0cls1XSk7CiAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGludClyZXQgPj0gKHVuc2lnbmVk IGludCkoLTUxNSkpIHsKLSNpZmRlZiBUQVJHRVRfU1BBUkM2NAorI2lmIGRlZmluZWQoVEFSR0VU X1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikKICAgICAgICAgICAgICAgICBlbnYt PnhjYyB8PSBQU1JfQ0FSUlk7CiAjZWxzZQogICAgICAgICAgICAgICAgIGVudi0+cHNyIHw9IFBT Ul9DQVJSWTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJldCA9IC1yZXQ7CiAgICAgICAgICAg ICB9IGVsc2UgewotI2lmZGVmIFRBUkdFVF9TUEFSQzY0CisjaWYgZGVmaW5lZChUQVJHRVRfU1BB UkM2NCkgJiYgIWRlZmluZWQoVEFSR0VUX0FCSTMyKQogICAgICAgICAgICAgICAgIGVudi0+eGNj ICY9IH5QU1JfQ0FSUlk7CiAjZWxzZQogICAgICAgICAgICAgICAgIGVudi0+cHNyICY9IH5QU1Jf Q0FSUlk7CkBAIC01OTEsNiArNTkxLDkgQEAKICAgICAgICAgICAgIGVudi0+bnBjID0gZW52LT5u cGMgKyA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4MzogLyogZmx1c2gg d2luZG93cyAqLworI2lmZGVmIFRBUkdFVF9BQkkzMgorICAgICAgICBjYXNlIDB4MTAzOgorI2Vu ZGlmCiAgICAgICAgICAgICBmbHVzaF93aW5kb3dzKGVudik7CiAgICAgICAgICAgICAvKiBuZXh0 IGluc3RydWN0aW9uICovCiAgICAgICAgICAgICBlbnYtPnBjID0gZW52LT5ucGM7CkBAIC0xNDg5 LDggKzE0OTIsOCBAQAogICAgICAgICAgICAgICAgIHJldCA9IC1FTk9TWVM7CiAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBuYl9hcmdzOwotICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBzcF9yZWc7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFyZzUg PSAwLCBhcmc2ID0gMCwgYXJnNyA9IDAsIGFyZzggPSAwOworICAgICAgICAgICAgICAgIGFiaV91 bG9uZyBzcF9yZWc7CisgICAgICAgICAgICAgICAgYWJpX3Vsb25nIGFyZzUgPSAwLCBhcmc2ID0g MCwgYXJnNyA9IDAsIGFyZzggPSAwOwogCiAgICAgICAgICAgICAgICAgbmJfYXJncyA9IG1pcHNf c3lzY2FsbF9hcmdzW3N5c2NhbGxfbnVtXTsKICAgICAgICAgICAgICAgICBzcF9yZWcgPSBlbnYt PmdwclsyOV1bZW52LT5jdXJyZW50X3RjXTsKQEAgLTIyNDQsNyArMjI0Nyw3IEBACiAgICAgICAg IGludCBpOwogCiAgICAgICAgIGZvcihpID0gMDsgaSA8IDI4OyBpKyspIHsKLSAgICAgICAgICAg IGVudi0+aXJbaV0gPSAoKHRhcmdldF91bG9uZyAqKXJlZ3MpW2ldOworICAgICAgICAgICAgZW52 LT5pcltpXSA9ICgoYWJpX3Vsb25nICopcmVncylbaV07CiAgICAgICAgIH0KICAgICAgICAgZW52 LT5pcHJbSVBSX1VTUF0gPSByZWdzLT51c3A7CiAgICAgICAgIGVudi0+aXJbMzBdID0gcmVncy0+ dXNwOwpJbmRleDogcWVtdS9saW51eC11c2VyL21pcHMvc3lzY2FsbC5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL21pcHMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvbWlwcy9zeXNjYWxsLmgJMjAwNy0x MC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTQsMTggKzQsMTggQEAKIAogc3RydWN0 IHRhcmdldF9wdF9yZWdzIHsKIAkvKiBQYWQgYnl0ZXMgZm9yIGFyZ3VtZW50IHNhdmUgc3BhY2Ug b24gdGhlIHN0YWNrLiAqLwotCXRhcmdldF91bG9uZyBwYWQwWzZdOworCWFiaV91bG9uZyBwYWQw WzZdOwogCiAJLyogU2F2ZWQgbWFpbiBwcm9jZXNzb3IgcmVnaXN0ZXJzLiAqLwotCXRhcmdldF91 bG9uZyByZWdzWzMyXTsKKwlhYmlfdWxvbmcgcmVnc1szMl07CiAKIAkvKiBTYXZlZCBzcGVjaWFs IHJlZ2lzdGVycy4gKi8KLQl0YXJnZXRfdWxvbmcgY3AwX3N0YXR1czsKLQl0YXJnZXRfdWxvbmcg bG87Ci0JdGFyZ2V0X3Vsb25nIGhpOwotCXRhcmdldF91bG9uZyBjcDBfYmFkdmFkZHI7Ci0JdGFy Z2V0X3Vsb25nIGNwMF9jYXVzZTsKLQl0YXJnZXRfdWxvbmcgY3AwX2VwYzsKKwlhYmlfdWxvbmcg Y3AwX3N0YXR1czsKKwlhYmlfdWxvbmcgbG87CisJYWJpX3Vsb25nIGhpOworCWFiaV91bG9uZyBj cDBfYmFkdmFkZHI7CisJYWJpX3Vsb25nIGNwMF9jYXVzZTsKKwlhYmlfdWxvbmcgY3AwX2VwYzsK IH07CiAKIC8qIFRhcmdldCBlcnJubyBkZWZpbml0aW9ucyB0YWtlbiBmcm9tIGFzbS1taXBzL2Vy cm5vLmggKi8KSW5kZXg6IHFlbXUvbGludXgtdXNlci9taXBzL3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9taXBzL3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21pcHMv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfbG9uZyBzc19zcDsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKLQl0YXJnZXRfbG9u ZyBzc19mbGFnczsKKwlhYmlfbG9uZyBzc19zcDsKKwlhYmlfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlf bG9uZyBzc19mbGFnczsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAog I2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1ogICAgMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1ogICAgICAgODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9j cHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0 X3NwX2Zyb21fY3B1c3RhdGUoQ1BVTUlQU1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3Rh dGUtPmdwclsyOV1bc3RhdGUtPmN1cnJlbnRfdGNdOwogfQpJbmRleDogcWVtdS9saW51eC11c2Vy L21pcHM2NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlw czY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9saW51eC11c2VyL21pcHM2NC9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAw MDAgKzAwMDAKQEAgLTQsMTUgKzQsMTUgQEAKIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKIAkv KiBTYXZlZCBtYWluIHByb2Nlc3NvciByZWdpc3RlcnMuICovCi0JdGFyZ2V0X3Vsb25nIHJlZ3Nb MzJdOworCWFiaV91bG9uZyByZWdzWzMyXTsKIAogCS8qIFNhdmVkIHNwZWNpYWwgcmVnaXN0ZXJz LiAqLwotCXRhcmdldF91bG9uZyBjcDBfc3RhdHVzOwotCXRhcmdldF91bG9uZyBsbzsKLQl0YXJn ZXRfdWxvbmcgaGk7Ci0JdGFyZ2V0X3Vsb25nIGNwMF9iYWR2YWRkcjsKLQl0YXJnZXRfdWxvbmcg Y3AwX2NhdXNlOwotCXRhcmdldF91bG9uZyBjcDBfZXBjOworCWFiaV91bG9uZyBjcDBfc3RhdHVz OworCWFiaV91bG9uZyBsbzsKKwlhYmlfdWxvbmcgaGk7CisJYWJpX3Vsb25nIGNwMF9iYWR2YWRk cjsKKwlhYmlfdWxvbmcgY3AwX2NhdXNlOworCWFiaV91bG9uZyBjcDBfZXBjOwogfTsKIAogLyog VGFyZ2V0IGVycm5vIGRlZmluaXRpb25zIHRha2VuIGZyb20gYXNtLW1pcHMvZXJybm8uaCAqLwpJ bmRleDogcWVtdS9saW51eC11c2VyL21pcHM2NC90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwczY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTEx IDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21pcHM2NC90YXJn ZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSAr Niw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2Fs bCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRh cmdldF9sb25nIHNzX3NwOwotCXRhcmdldF91bG9uZyBzc19zaXplOwotCXRhcmdldF9sb25nIHNz X2ZsYWdzOworCWFiaV9sb25nIHNzX3NwOworCWFiaV91bG9uZyBzc19zaXplOworCWFiaV9sb25n IHNzX2ZsYWdzOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVm aW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtTWiAg ICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0 YXRlKENQVU1JUFNTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3Bf ZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+ Z3ByWzI5XVtzdGF0ZS0+Y3VycmVudF90Y107CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbW1h cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL21tYXAuYwkyMDA3LTEwLTEx IDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21tYXAuYwkyMDA3 LTEwLTEyIDE1OjQ4OjM1LjAwMDAwMDAwMCArMDAwMApAQCAtMzAsOSArMzAsOSBAQAogLy8jZGVm aW5lIERFQlVHX01NQVAKIAogLyogTk9URTogYWxsIHRoZSBjb25zdGFudHMgYXJlIHRoZSBIT1NU IG9uZXMsIGJ1dCBhZGRyZXNzZXMgYXJlIHRhcmdldC4gKi8KLWludCB0YXJnZXRfbXByb3RlY3Qo dGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgbGVuLCBpbnQgcHJvdCkKK2ludCB0YXJn ZXRfbXByb3RlY3QoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCkKIHsK LSAgICB0YXJnZXRfdWxvbmcgZW5kLCBob3N0X3N0YXJ0LCBob3N0X2VuZCwgYWRkcjsKKyAgICBh YmlfdWxvbmcgZW5kLCBob3N0X3N0YXJ0LCBob3N0X2VuZCwgYWRkcjsKICAgICBpbnQgcHJvdDEs IHJldDsKIAogI2lmZGVmIERFQlVHX01NQVAKQEAgLTk2LDExICs5NiwxMSBAQAogfQogCiAvKiBt YXAgYW4gaW5jb21wbGV0ZSBob3N0IHBhZ2UgKi8KLXN0YXRpYyBpbnQgbW1hcF9mcmFnKHRhcmdl dF91bG9uZyByZWFsX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHN0 YXJ0LCB0YXJnZXRfdWxvbmcgZW5kLAotICAgICAgICAgICAgICAgICAgICAgaW50IHByb3QsIGlu dCBmbGFncywgaW50IGZkLCB0YXJnZXRfdWxvbmcgb2Zmc2V0KQorc3RhdGljIGludCBtbWFwX2Zy YWcoYWJpX3Vsb25nIHJlYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcg c3RhcnQsIGFiaV91bG9uZyBlbmQsCisgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvdCwgaW50 IGZsYWdzLCBpbnQgZmQsIGFiaV91bG9uZyBvZmZzZXQpCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIHJl YWxfZW5kLCByZXQsIGFkZHI7CisgICAgYWJpX3Vsb25nIHJlYWxfZW5kLCByZXQsIGFkZHI7CiAg ICAgdm9pZCAqaG9zdF9zdGFydDsKICAgICBpbnQgcHJvdDEsIHByb3RfbmV3OwogCkBAIC0xNTIs MTcgKzE1MiwxNyBAQAogfQogCiAvKiBOT1RFOiBhbGwgdGhlIGNvbnN0YW50cyBhcmUgdGhlIEhP U1Qgb25lcyAqLwotdGFyZ2V0X2xvbmcgdGFyZ2V0X21tYXAodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0 YXJnZXRfdWxvbmcgbGVuLCBpbnQgcHJvdCwKLSAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBp bnQgZmQsIHRhcmdldF91bG9uZyBvZmZzZXQpCithYmlfbG9uZyB0YXJnZXRfbW1hcChhYmlfdWxv bmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBwcm90LAorICAgICAgICAgICAgICAgICAgICAg aW50IGZsYWdzLCBpbnQgZmQsIGFiaV91bG9uZyBvZmZzZXQpCiB7Ci0gICAgdGFyZ2V0X3Vsb25n IHJldCwgZW5kLCByZWFsX3N0YXJ0LCByZWFsX2VuZCwgcmV0YWRkciwgaG9zdF9vZmZzZXQsIGhv c3RfbGVuOworICAgIGFiaV91bG9uZyByZXQsIGVuZCwgcmVhbF9zdGFydCwgcmVhbF9lbmQsIHJl dGFkZHIsIGhvc3Rfb2Zmc2V0LCBob3N0X2xlbjsKICAgICB1bnNpZ25lZCBsb25nIGhvc3Rfc3Rh cnQ7CiAjaWYgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IFwKICAgICAgICAgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQo X19taXBzX18pCi0gICAgc3RhdGljIHRhcmdldF91bG9uZyBsYXN0X3N0YXJ0ID0gMHg0MDAwMDAw MDsKKyAgICBzdGF0aWMgYWJpX3Vsb25nIGxhc3Rfc3RhcnQgPSAweDQwMDAwMDAwOwogI2VsaWYg ZGVmaW5lZChfX0NZR1dJTl9fKQogICAgIC8qIEN5Z3dpbiBkb2Vzbid0IGhhdmUgYSB3aG9sZSBs b3Qgb2YgYWRkcmVzcyBzcGFjZS4gICovCi0gICAgc3RhdGljIHRhcmdldF91bG9uZyBsYXN0X3N0 YXJ0ID0gMHgxODAwMDAwMDsKKyAgICBzdGF0aWMgYWJpX3Vsb25nIGxhc3Rfc3RhcnQgPSAweDE4 MDAwMDAwOwogI2VuZGlmCiAKICNpZmRlZiBERUJVR19NTUFQCkBAIC0yMjgsNyArMjI4LDcgQEAK ICAgICAgICAgICAgICAqIFRBUkdFVF9QQUdFX1NJWkUsIHNlZSBleGVjLmMuIHFlbXVfcmVhbF9o b3N0X3BhZ2Vfc2l6ZSBpcyB0aGUKICAgICAgICAgICAgICAqIGhvc3RzIHJlYWwgcGFnZSBzaXpl LgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgaG9zdF9lbmQ7Cisg ICAgICAgICAgICBhYmlfdWxvbmcgaG9zdF9lbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGhvc3RfYWxpZ25lZF9zdGFydDsKIAogICAgICAgICAgICAgaG9zdF9sZW4gPSBIT1NUX1BBR0Vf QUxJR04oaG9zdF9sZW4gKyBxZW11X2hvc3RfcGFnZV9zaXplCkBAIC0zNTQsOSArMzU0LDkgQEAK ICAgICByZXR1cm4gc3RhcnQ7CiB9CiAKLWludCB0YXJnZXRfbXVubWFwKHRhcmdldF91bG9uZyBz dGFydCwgdGFyZ2V0X3Vsb25nIGxlbikKK2ludCB0YXJnZXRfbXVubWFwKGFiaV91bG9uZyBzdGFy dCwgYWJpX3Vsb25nIGxlbikKIHsKLSAgICB0YXJnZXRfdWxvbmcgZW5kLCByZWFsX3N0YXJ0LCBy ZWFsX2VuZCwgYWRkcjsKKyAgICBhYmlfdWxvbmcgZW5kLCByZWFsX3N0YXJ0LCByZWFsX2VuZCwg YWRkcjsKICAgICBpbnQgcHJvdCwgcmV0OwogCiAjaWZkZWYgREVCVUdfTU1BUApAQCAtNDA4LDkg KzQwOCw5IEBACiAKIC8qIFhYWDogY3VycmVudGx5LCB3ZSBvbmx5IGhhbmRsZSBNQVBfQU5PTllN T1VTIGFuZCBub3QgTUFQX0ZJWEVECiAgICBibG9ja3Mgd2hpY2ggaGF2ZSBiZWVuIGFsbG9jYXRl ZCBzdGFydGluZyBvbiBhIGhvc3QgcGFnZSAqLwotdGFyZ2V0X2xvbmcgdGFyZ2V0X21yZW1hcCh0 YXJnZXRfdWxvbmcgb2xkX2FkZHIsIHRhcmdldF91bG9uZyBvbGRfc2l6ZSwKLSAgICAgICAgICAg ICAgICAgICB0YXJnZXRfdWxvbmcgbmV3X3NpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCi0gICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG5ld19hZGRyKQorYWJpX2xvbmcgdGFyZ2V0X21y ZW1hcChhYmlfdWxvbmcgb2xkX2FkZHIsIGFiaV91bG9uZyBvbGRfc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgYWJpX3Vsb25nIG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAg ICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgbmV3X2FkZHIpCiB7CiAgICAgaW50IHByb3Q7 CiAgICAgdW5zaWduZWQgbG9uZyBob3N0X2FkZHI7CkBAIC00MjYsOSArNDI2LDkgQEAKICAgICBy ZXR1cm4gbmV3X2FkZHI7CiB9CiAKLWludCB0YXJnZXRfbXN5bmModGFyZ2V0X3Vsb25nIHN0YXJ0 LCB0YXJnZXRfdWxvbmcgbGVuLCBpbnQgZmxhZ3MpCitpbnQgdGFyZ2V0X21zeW5jKGFiaV91bG9u ZyBzdGFydCwgYWJpX3Vsb25nIGxlbiwgaW50IGZsYWdzKQogewotICAgIHRhcmdldF91bG9uZyBl bmQ7CisgICAgYWJpX3Vsb25nIGVuZDsKIAogICAgIGlmIChzdGFydCAmIH5UQVJHRVRfUEFHRV9N QVNLKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKSW5kZXg6IHFlbXUvbGludXgtdXNlci9wcGMv c3lzY2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3BwYy9zeXNjYWxs LmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNl ci9wcGMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC00 NCw3ICs0NCw3IEBACiAKIC8qIGlvY3RscyAqLwogc3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0 cnVjdCB7Ci0JdGFyZ2V0X3Vsb25nIF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICovCisJYWJpX3Vs b25nIF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICovCiB9OwogCiAvKgpJbmRleDogcWVtdS9saW51 eC11c2VyL3BwYy90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4 LXVzZXIvcHBjL3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL3BwYy90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAx OToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBk ZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVm IHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRhcmdldF91bG9uZyBzc19zcDsKLQl0YXJn ZXRfbG9uZyBzc19mbGFnczsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nf c3A7CisJYWJpX2xvbmcgc3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NpemU7CiB9IHRhcmdldF9z dGFja190OwogCiAKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgVEFSR0VUX01JTlNJR1NUS1Na ICAgIDIwNDgKICNkZWZpbmUgVEFSR0VUX1NJR1NUS1NaICAgICAgIDgxOTIKIAotc3RhdGljIGlu bGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3RhdGUgKnN0YXRl KQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3Rh dGUgKnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+Z3ByWzFdOwogfQpJbmRleDogcWVtdS9s aW51eC11c2VyL3BwYzY0L3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgt dXNlci9wcGM2NC9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvbGludXgtdXNlci9wcGM2NC9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4w MDAwMDAwMDAgKzAwMDAKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogLyogaW9jdGxzICovCiBzdHJ1Y3Qg dGFyZ2V0X3JldmVjdG9yZWRfc3RydWN0IHsKLQl0YXJnZXRfdWxvbmcgX19tYXBbOF07CQkJLyog MjU2IGJpdHMgKi8KKwlhYmlfdWxvbmcgX19tYXBbOF07CQkJLyogMjU2IGJpdHMgKi8KIH07CiAK IC8qCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvcHBjNjQvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3BwYzY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEw LTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3BwYzY0L3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5 ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNj YWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0J dGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9u ZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlf dWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAog I2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1ogICAgMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1ogICAgICAgODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9j cHVzdGF0ZShDUFVQUENTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRf c3BfZnJvbV9jcHVzdGF0ZShDUFVQUENTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRl LT5ncHJbMV07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvcWVtdS5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL3FlbXUuaAkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3FlbXUuaAkyMDA3LTEwLTEyIDE1OjUyOjMxLjAw MDAwMDAwMCArMDAwMApAQCAtMSwxMyArMSwyMyBAQAogI2lmbmRlZiBRRU1VX0gKICNkZWZpbmUg UUVNVV9ICiAKLSNpbmNsdWRlICJ0aHVuay5oIgotCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5j bHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAic3lzY2FsbF9kZWZzLmgiCiAKICNpbmNsdWRlICJj cHUuaCIKKworI2lmZGVmIFRBUkdFVF9BQkkzMgordHlwZWRlZiB1aW50MzJfdCBhYmlfdWxvbmc7 Cit0eXBlZGVmIGludDMyX3QgYWJpX2xvbmc7CisjZGVmaW5lIFRBUkdFVF9BQklfQklUUyAzMgor I2Vsc2UKK3R5cGVkZWYgdGFyZ2V0X3Vsb25nIGFiaV91bG9uZzsKK3R5cGVkZWYgdGFyZ2V0X2xv bmcgYWJpX2xvbmc7CisjZGVmaW5lIFRBUkdFVF9BQklfQklUUyBUQVJHRVRfTE9OR19CSVRTCisj ZW5kaWYKKworI2luY2x1ZGUgInRodW5rLmgiCisjaW5jbHVkZSAic3lzY2FsbF9kZWZzLmgiCiAj aW5jbHVkZSAic3lzY2FsbC5oIgogI2luY2x1ZGUgInRhcmdldF9zaWduYWwuaCIKICNpbmNsdWRl ICJnZGJzdHViLmgiCkBAIC0xNywyMCArMjcsMjAgQEAKICAqIHRhc2tfc3RydWN0IGZpZWxkcyBp biB0aGUga2VybmVsCiAgKi8KIHN0cnVjdCBpbWFnZV9pbmZvIHsKLQl0YXJnZXRfdWxvbmcJbG9h ZF9hZGRyOwotCXRhcmdldF91bG9uZwlzdGFydF9jb2RlOwotCXRhcmdldF91bG9uZwllbmRfY29k ZTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0YXJ0X2RhdGE7Ci0JdGFyZ2V0X3Vsb25nCWVu ZF9kYXRhOwotCXRhcmdldF91bG9uZwlzdGFydF9icms7Ci0JdGFyZ2V0X3Vsb25nCWJyazsKLQl0 YXJnZXRfdWxvbmcJc3RhcnRfbW1hcDsKLQl0YXJnZXRfdWxvbmcJbW1hcDsKLQl0YXJnZXRfdWxv bmcJcnNzOwotCXRhcmdldF91bG9uZwlzdGFydF9zdGFjazsKLQl0YXJnZXRfdWxvbmcJZW50cnk7 Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBjb2RlX29mZnNldDsKLSAgICAgICAgdGFyZ2V0X3Vs b25nICAgIGRhdGFfb2Zmc2V0OworICAgICAgICBhYmlfdWxvbmcgICAgICAgbG9hZF9hZGRyOwor ICAgICAgICBhYmlfdWxvbmcgICAgICAgc3RhcnRfY29kZTsKKyAgICAgICAgYWJpX3Vsb25nICAg ICAgIGVuZF9jb2RlOworICAgICAgICBhYmlfdWxvbmcgICAgICAgc3RhcnRfZGF0YTsKKyAgICAg ICAgYWJpX3Vsb25nICAgICAgIGVuZF9kYXRhOworICAgICAgICBhYmlfdWxvbmcgICAgICAgc3Rh cnRfYnJrOworICAgICAgICBhYmlfdWxvbmcgICAgICAgYnJrOworICAgICAgICBhYmlfdWxvbmcg ICAgICAgc3RhcnRfbW1hcDsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIG1tYXA7CisgICAgICAg IGFiaV91bG9uZyAgICAgICByc3M7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBzdGFydF9zdGFj azsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIGVudHJ5OworICAgICAgICBhYmlfdWxvbmcgICAg ICAgY29kZV9vZmZzZXQ7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBkYXRhX29mZnNldDsKICAg ICAgICAgY2hhciAgICAgICAgICAgICoqaG9zdF9hcmd2OwogCWludAkJcGVyc29uYWxpdHk7CiB9 OwpAQCAtNjcsNyArNzcsNyBAQAogICAgIGludCBzd2lfZXJybm87CiAjZW5kaWYKICNpZiBkZWZp bmVkKFRBUkdFVF9JMzg2KSAmJiAhZGVmaW5lZChUQVJHRVRfWDg2XzY0KQotICAgIHRhcmdldF91 bG9uZyB0YXJnZXRfdjg2OworICAgIGFiaV91bG9uZyB0YXJnZXRfdjg2OwogICAgIHN0cnVjdCB2 bTg2X3NhdmVkX3N0YXRlIHZtODZfc2F2ZWRfcmVnczsKICAgICBzdHJ1Y3QgdGFyZ2V0X3ZtODZw bHVzX3N0cnVjdCB2bTg2cGx1czsKICAgICB1aW50MzJfdCB2ODZmbGFnczsKQEAgLTEwNSw3ICsx MTUsNyBAQAogc3RydWN0IGxpbnV4X2JpbnBybSB7CiAgICAgICAgIGNoYXIgYnVmWzEyOF07CiAg ICAgICAgIHZvaWQgKnBhZ2VbTUFYX0FSR19QQUdFU107Ci0gICAgICAgIHRhcmdldF91bG9uZyBw OworICAgICAgICBhYmlfdWxvbmcgcDsKIAlpbnQgZmQ7CiAgICAgICAgIGludCBlX3VpZCwgZV9n aWQ7CiAgICAgICAgIGludCBhcmdjLCBlbnZjOwpAQCAtMTE1LDggKzEyNSw4IEBACiB9OwogCiB2 b2lkIGRvX2luaXRfdGhyZWFkKHN0cnVjdCB0YXJnZXRfcHRfcmVncyAqcmVncywgc3RydWN0IGlt YWdlX2luZm8gKmluZm9wKTsKLXRhcmdldF91bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBl bnZjLCBpbnQgYXJnYywgdGFyZ2V0X3Vsb25nIHNwLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIHN0cmluZ3AsIGludCBwdXNoX3B0cik7CithYmlfdWxvbmcg bG9hZGVyX2J1aWxkX2FyZ3B0cihpbnQgZW52YywgaW50IGFyZ2MsIGFiaV91bG9uZyBzcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBzdHJpbmdwLCBpbnQgcHVzaF9w dHIpOwogaW50IGxvYWRlcl9leGVjKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgY2hhciAqKiBhcmd2 LCBjaGFyICoqIGVudnAsCiAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9wdF9yZWdzICogcmVn cywgc3RydWN0IGltYWdlX2luZm8gKmluZm9wKTsKIApAQCAtMTMwLDE0ICsxNDAsMTQgQEAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGltYWdlX2luZm8gKmluZm8pOwogI2VuZGlm CiAKLXZvaWQgbWVtY3B5X3RvX3RhcmdldCh0YXJnZXRfdWxvbmcgZGVzdCwgY29uc3Qgdm9pZCAq c3JjLAordm9pZCBtZW1jcHlfdG9fdGFyZ2V0KGFiaV91bG9uZyBkZXN0LCBjb25zdCB2b2lkICpz cmMsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4pOwotdm9pZCB0YXJn ZXRfc2V0X2Jyayh0YXJnZXRfdWxvbmcgbmV3X2Jyayk7Ci10YXJnZXRfbG9uZyBkb19icmsodGFy Z2V0X3Vsb25nIG5ld19icmspOwordm9pZCB0YXJnZXRfc2V0X2JyayhhYmlfdWxvbmcgbmV3X2Jy ayk7CithYmlfbG9uZyBkb19icmsoYWJpX3Vsb25nIG5ld19icmspOwogdm9pZCBzeXNjYWxsX2lu aXQodm9pZCk7Ci10YXJnZXRfbG9uZyBkb19zeXNjYWxsKHZvaWQgKmNwdV9lbnYsIGludCBudW0s IHRhcmdldF9sb25nIGFyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9sb25nIGFy ZzIsIHRhcmdldF9sb25nIGFyZzMsIHRhcmdldF9sb25nIGFyZzQsCi0gICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9sb25nIGFyZzUsIHRhcmdldF9sb25nIGFyZzYpOworYWJpX2xvbmcgZG9f c3lzY2FsbCh2b2lkICpjcHVfZW52LCBpbnQgbnVtLCBhYmlfbG9uZyBhcmcxLAorICAgICAgICAg ICAgICAgICAgICBhYmlfbG9uZyBhcmcyLCBhYmlfbG9uZyBhcmczLCBhYmlfbG9uZyBhcmc0LAor ICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBhcmc1LCBhYmlfbG9uZyBhcmc2KTsKIHZvaWQg Z2VtdV9sb2coY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmlu dGYsMSwyKSkpOwogZXh0ZXJuIENQVVN0YXRlICpnbG9iYWxfZW52Owogdm9pZCBjcHVfbG9vcChD UFVTdGF0ZSAqZW52KTsKQEAgLTE1NywyOCArMTY3LDI4IEBACiBsb25nIGRvX3J0X3NpZ3JldHVy bihDUFVTdGF0ZSAqZW52KTsKIGludCBkb19zaWdhbHRzdGFjayhjb25zdCBzdHJ1Y3QgdGFyZ2V0 X3NpZ2FsdHN0YWNrICp1c3MsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zaWdh bHRzdGFjayAqdW9zcywKLSAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgc3ApOworICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyBzcCk7CiAKICNpZmRlZiBUQVJHRVRfSTM4NgogLyog dm04Ni5jICovCiB2b2lkIHNhdmVfdjg2X3N0YXRlKENQVVg4NlN0YXRlICplbnYpOwogdm9pZCBo YW5kbGVfdm04Nl90cmFwKENQVVg4NlN0YXRlICplbnYsIGludCB0cmFwbm8pOwogdm9pZCBoYW5k bGVfdm04Nl9mYXVsdChDUFVYODZTdGF0ZSAqZW52KTsKLWludCBkb192bTg2KENQVVg4NlN0YXRl ICplbnYsIGxvbmcgc3ViZnVuY3Rpb24sIHRhcmdldF91bG9uZyB2ODZfYWRkcik7CitpbnQgZG9f dm04NihDUFVYODZTdGF0ZSAqZW52LCBsb25nIHN1YmZ1bmN0aW9uLCBhYmlfdWxvbmcgdjg2X2Fk ZHIpOwogI2VsaWYgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkKIHZvaWQgc3BhcmM2NF9zZXRfY29u dGV4dChDUFVTUEFSQ1N0YXRlICplbnYpOwogdm9pZCBzcGFyYzY0X2dldF9jb250ZXh0KENQVVNQ QVJDU3RhdGUgKmVudik7CiAjZW5kaWYKIAogLyogbW1hcC5jICovCi1pbnQgdGFyZ2V0X21wcm90 ZWN0KHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IHByb3QpOwotdGFy Z2V0X2xvbmcgdGFyZ2V0X21tYXAodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgbGVu LCBpbnQgcHJvdCwKLSAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBpbnQgZmQsIHRhcmdldF91 bG9uZyBvZmZzZXQpOwotaW50IHRhcmdldF9tdW5tYXAodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJn ZXRfdWxvbmcgbGVuKTsKLXRhcmdldF9sb25nIHRhcmdldF9tcmVtYXAodGFyZ2V0X3Vsb25nIG9s ZF9hZGRyLCB0YXJnZXRfdWxvbmcgb2xkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIG5ld19zaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzLAotICAgICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBuZXdfYWRkcik7Ci1pbnQgdGFyZ2V0X21zeW5jKHRhcmdldF91bG9uZyBz dGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IGZsYWdzKTsKK2ludCB0YXJnZXRfbXByb3RlY3Qo YWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCk7CithYmlfbG9uZyB0YXJn ZXRfbW1hcChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBwcm90LAorICAgICAg ICAgICAgICAgICAgICAgaW50IGZsYWdzLCBpbnQgZmQsIGFiaV91bG9uZyBvZmZzZXQpOworaW50 IHRhcmdldF9tdW5tYXAoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuKTsKK2FiaV9sb25n IHRhcmdldF9tcmVtYXAoYWJpX3Vsb25nIG9sZF9hZGRyLCBhYmlfdWxvbmcgb2xkX3NpemUsCisg ICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBuZXdfc2l6ZSwgdW5zaWduZWQgbG9uZyBm bGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIG5ld19hZGRyKTsKK2ludCB0 YXJnZXRfbXN5bmMoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgZmxhZ3MpOwog CiAvKiB1c2VyIGFjY2VzcyAqLwogCkBAIC0yNjAsNyArMjcwLDcgQEAKIAogLyogTG9jayBhbiBh cmVhIG9mIGd1ZXN0IG1lbW9yeSBpbnRvIHRoZSBob3N0LiAgSWYgY29weSBpcyB0cnVlIHRoZW4g dGhlCiAgICBob3N0IGFyZWEgd2lsbCBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzIGFzIHRoZSBndWVz dC4gICovCi1zdGF0aWMgaW5saW5lIHZvaWQgKmxvY2tfdXNlcih0YXJnZXRfdWxvbmcgZ3Vlc3Rf YWRkciwgbG9uZyBsZW4sIGludCBjb3B5KQorc3RhdGljIGlubGluZSB2b2lkICpsb2NrX3VzZXIo YWJpX3Vsb25nIGd1ZXN0X2FkZHIsIGxvbmcgbGVuLCBpbnQgY29weSkKIHsKICNpZmRlZiBERUJV R19SRU1BUAogICAgIHZvaWQgKmFkZHI7CkBAIC0yNzcsOCArMjg3LDggQEAKIAogLyogVW5sb2Nr IGFuIGFyZWEgb2YgZ3Vlc3QgbWVtb3J5LiAgVGhlIGZpcnN0IExFTiBieXRlcyBtdXN0IGJlIGZs dXNoZWQgYmFjawogICAgdG8gZ3Vlc3QgbWVtb3J5LiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCB1 bmxvY2tfdXNlcih2b2lkICpob3N0X2FkZHIsIHRhcmdldF91bG9uZyBndWVzdF9hZGRyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbikKK3N0YXRpYyBpbmxpbmUgdm9p ZCB1bmxvY2tfdXNlcih2b2lkICpob3N0X2FkZHIsIGFiaV91bG9uZyBndWVzdF9hZGRyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbGVuKQogewogI2lmZGVmIERFQlVHX1JF TUFQCiAgICAgaWYgKGhvc3RfYWRkciA9PSBnMmgoZ3Vlc3RfYWRkcikpCkBAIC0yOTAsMTMgKzMw MCwxMyBAQAogfQogCiAvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBpbiB0YXJnZXQg bWVtb3J5LiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IHRhcmdldF9zdHJsZW4odGFyZ2V0X3Vsb25n IHB0cikKK3N0YXRpYyBpbmxpbmUgaW50IHRhcmdldF9zdHJsZW4oYWJpX3Vsb25nIHB0cikKIHsK ICAgcmV0dXJuIHN0cmxlbihnMmgocHRyKSk7CiB9CiAKIC8qIExpa2UgbG9ja191c2VyIGJ1dCBm b3IgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZ3MuICAqLwotc3RhdGljIGlubGluZSB2b2lkICpsb2Nr X3VzZXJfc3RyaW5nKHRhcmdldF91bG9uZyBndWVzdF9hZGRyKQorc3RhdGljIGlubGluZSB2b2lk ICpsb2NrX3VzZXJfc3RyaW5nKGFiaV91bG9uZyBndWVzdF9hZGRyKQogewogICAgIGxvbmcgbGVu OwogICAgIGxlbiA9IHRhcmdldF9zdHJsZW4oZ3Vlc3RfYWRkcikgKyAxOwpAQCAtMzE3LDcgKzMy Nyw3IEBACiAjZGVmaW5lIHRwdXQzMihhZGRyLCB2YWwpIHN0bChhZGRyLCB2YWwpCiAjZGVmaW5l IHRnZXQ2NChhZGRyKSBsZHEoYWRkcikKICNkZWZpbmUgdHB1dDY0KGFkZHIsIHZhbCkgc3RxKGFk ZHIsIHZhbCkKLSNpZiBUQVJHRVRfTE9OR19CSVRTID09IDY0CisjaWYgVEFSR0VUX0FCSV9CSVRT ID09IDY0CiAjZGVmaW5lIHRnZXRsKGFkZHIpIGxkcShhZGRyKQogI2RlZmluZSB0cHV0bChhZGRy LCB2YWwpIHN0cShhZGRyLCB2YWwpCiAjZWxzZQpJbmRleDogcWVtdS9saW51eC11c2VyL3NoNC90 YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvc2g0L3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9saW51eC11c2VyL3NoNC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAw MDAwMDAgKzAwMDAKQEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3Rh Y2sgdXNlZCBkdXJpbmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJn ZXRfc2lnYWx0c3RhY2sgewotCXRhcmdldF91bG9uZyBzc19zcDsKLQl0YXJnZXRfbG9uZyBzc19m bGFnczsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nfc3A7CisJYWJpX2xv bmcgc3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NpemU7CiB9IHRhcmdldF9zdGFja190OwogCiAK SW5kZXg6IHFlbXUvbGludXgtdXNlci9zaWduYWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv bGludXgtdXNlci9zaWduYWwuYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS9saW51eC11c2VyL3NpZ25hbC5jCTIwMDctMTAtMTIgMTg6NTY6NDUuMDAwMDAwMDAw ICswMDAwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxz eXMvdWNvbnRleHQuaD4KIAotI2luY2x1ZGUgInRhcmdldF9zaWduYWwuaCIKICNpbmNsdWRlICJx ZW11LmgiCisjaW5jbHVkZSAidGFyZ2V0X3NpZ25hbC5oIgogCiAvLyNkZWZpbmUgREVCVUdfU0lH TkFMCiAKQEAgLTEzNCwxMiArMTM0LDEyIEBACiAgICAgICAgIGlmIChzaWdtYXNrICYgKDEgPDwg aSkpCiAgICAgICAgICAgICB0YXJnZXRfc2lnbWFzayB8PSAxIDw8IChob3N0X3RvX3RhcmdldF9z aWduYWwoaSArIDEpIC0gMSk7CiAgICAgfQotI2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgJiYg SE9TVF9MT05HX0JJVFMgPT0gMzIKKyNpZiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIgJiYgSE9TVF9M T05HX0JJVFMgPT0gMzIKICAgICBkLT5zaWdbMF0gPSB0YXJnZXRfc2lnbWFzazsKICAgICBmb3Io aSA9IDE7aSA8IFRBUkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKICAgICAgICAgZC0+c2lnW2ldID0g KCh1bnNpZ25lZCBsb25nICopcylbaV07CiAgICAgfQotI2VsaWYgVEFSR0VUX0xPTkdfQklUUyA9 PSAzMiAmJiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBUQVJHRVRfTlNJR19XT1JEUyA9PSAyCisj ZWxpZiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0gNjQgJiYgVEFS R0VUX05TSUdfV09SRFMgPT0gMgogICAgIGQtPnNpZ1swXSA9IHRhcmdldF9zaWdtYXNrOwogICAg IGQtPnNpZ1sxXSA9IHNpZ21hc2sgPj4gMzI7CiAjZWxzZQpAQCAtMTYxLDcgKzE2MSw3IEBACiB7 CiAgICAgaW50IGk7CiAgICAgdW5zaWduZWQgbG9uZyBzaWdtYXNrOwotICAgIHRhcmdldF91bG9u ZyB0YXJnZXRfc2lnbWFzazsKKyAgICBhYmlfdWxvbmcgdGFyZ2V0X3NpZ21hc2s7CiAKICAgICB0 YXJnZXRfc2lnbWFzayA9IHMtPnNpZ1swXTsKICAgICBzaWdtYXNrID0gMDsKQEAgLTE2OSwxNiAr MTY5LDE2IEBACiAgICAgICAgIGlmICh0YXJnZXRfc2lnbWFzayAmICgxIDw8IGkpKQogICAgICAg ICAgICAgc2lnbWFzayB8PSAxIDw8ICh0YXJnZXRfdG9faG9zdF9zaWduYWwoaSArIDEpIC0gMSk7 CiAgICAgfQotI2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0g MzIKKyNpZiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0gMzIKICAg ICAoKHVuc2lnbmVkIGxvbmcgKilkKVswXSA9IHNpZ21hc2s7CiAgICAgZm9yKGkgPSAxO2kgPCBU QVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CiAgICAgICAgICgodW5zaWduZWQgbG9uZyAqKWQpW2ld ID0gcy0+c2lnW2ldOwogICAgIH0KLSNlbGlmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgJiYgSE9T VF9MT05HX0JJVFMgPT0gNjQgJiYgVEFSR0VUX05TSUdfV09SRFMgPT0gMgorI2VsaWYgVEFSR0VU X0FCSV9CSVRTID09IDMyICYmIEhPU1RfTE9OR19CSVRTID09IDY0ICYmIFRBUkdFVF9OU0lHX1dP UkRTID09IDIKICAgICAoKHVuc2lnbmVkIGxvbmcgKilkKVswXSA9IHNpZ21hc2sgfCAoKHVuc2ln bmVkIGxvbmcpKHMtPnNpZ1sxXSkgPDwgMzIpOwogI2Vsc2UKICN3YXJuaW5nIHRhcmdldF90b19o b3N0X3NpZ3NldAotI2VuZGlmIC8qIFRBUkdFVF9MT05HX0JJVFMgKi8KKyNlbmRpZiAvKiBUQVJH RVRfQUJJX0JJVFMgKi8KIH0KIAogdm9pZCB0YXJnZXRfdG9faG9zdF9zaWdzZXQoc2lnc2V0X3Qg KmQsIGNvbnN0IHRhcmdldF9zaWdzZXRfdCAqcykKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgIHRh cmdldF90b19ob3N0X3NpZ3NldF9pbnRlcm5hbChkLCAmczEpOwogfQogCi12b2lkIGhvc3RfdG9f dGFyZ2V0X29sZF9zaWdzZXQodGFyZ2V0X3Vsb25nICpvbGRfc2lnc2V0LAordm9pZCBob3N0X3Rv X3RhcmdldF9vbGRfc2lnc2V0KGFiaV91bG9uZyAqb2xkX3NpZ3NldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzaWdzZXRfdCAqc2lnc2V0KQogewogICAgIHRhcmdldF9z aWdzZXRfdCBkOwpAQCAtMjAwLDcgKzIwMCw3IEBACiB9CiAKIHZvaWQgdGFyZ2V0X3RvX2hvc3Rf b2xkX3NpZ3NldChzaWdzZXRfdCAqc2lnc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHRhcmdldF91bG9uZyAqb2xkX3NpZ3NldCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBhYmlfdWxvbmcgKm9sZF9zaWdzZXQpCiB7CiAgICAgdGFyZ2V0X3Np Z3NldF90IGQ7CiAgICAgaW50IGk7CkBAIC0yMzMsNyArMjMzLDcgQEAKICAgICAgICAgdGluZm8t Pl9zaWZpZWxkcy5fcnQuX3VpZCA9IGluZm8tPnNpX3VpZDsKICAgICAgICAgLyogWFhYOiBwb3Rl bnRpYWwgcHJvYmxlbSBpZiA2NCBiaXQgKi8KICAgICAgICAgdGluZm8tPl9zaWZpZWxkcy5fcnQu X3NpZ3ZhbC5zaXZhbF9wdHIgPQotICAgICAgICAgICAgKHRhcmdldF91bG9uZylpbmZvLT5zaV92 YWx1ZS5zaXZhbF9wdHI7CisgICAgICAgICAgICAoYWJpX3Vsb25nKWluZm8tPnNpX3ZhbHVlLnNp dmFsX3B0cjsKICAgICB9CiB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQAogewogICAgIHN0cnVjdCBl bXVsYXRlZF9zaWdhY3Rpb24gKms7CiAgICAgc3RydWN0IHNpZ3F1ZXVlICpxLCAqKnBxOwotICAg IHRhcmdldF91bG9uZyBoYW5kbGVyOworICAgIGFiaV91bG9uZyBoYW5kbGVyOwogCiAjaWYgZGVm aW5lZChERUJVR19TSUdOQUwpCiAgICAgZnByaW50ZihzdGRlcnIsICJxdWV1ZV9zaWduYWw6IHNp Zz0lZFxuIiwKQEAgLTQ0MCw3ICs0NDAsNyBAQAogCiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qg c3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayAqdXNzLAogICAgICAgICAgICAgICAgICAgIHN0cnVj dCB0YXJnZXRfc2lnYWx0c3RhY2sgKnVvc3MsCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHNwKQorICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBzcCkKIHsKICAgICBpbnQgcmV0 OwogICAgIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgb3NzOwpAQCAtNTc5LDI5ICs1NzksMjkg QEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfeG1tcmVnIHsKLQl0YXJnZXRfdWxvbmcgZWxlbWVudFs0 XTsKKwlhYmlfdWxvbmcgZWxlbWVudFs0XTsKIH07CiAKIHN0cnVjdCB0YXJnZXRfZnBzdGF0ZSB7 CiAJLyogUmVndWxhciBGUFUgZW52aXJvbm1lbnQgKi8KLQl0YXJnZXRfdWxvbmcgCWN3OwotCXRh cmdldF91bG9uZwlzdzsKLQl0YXJnZXRfdWxvbmcJdGFnOwotCXRhcmdldF91bG9uZwlpcG9mZjsK LQl0YXJnZXRfdWxvbmcJY3NzZWw7Ci0JdGFyZ2V0X3Vsb25nCWRhdGFvZmY7Ci0JdGFyZ2V0X3Vs b25nCWRhdGFzZWw7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBjdzsKKyAgICAgICAgYWJpX3Vs b25nICAgICAgIHN3OworICAgICAgICBhYmlfdWxvbmcgICAgICAgdGFnOworICAgICAgICBhYmlf dWxvbmcgICAgICAgaXBvZmY7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBjc3NlbDsKKyAgICAg ICAgYWJpX3Vsb25nICAgICAgIGRhdGFvZmY7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBkYXRh c2VsOwogCXN0cnVjdCB0YXJnZXRfZnByZWcJX3N0WzhdOwogCXVpbnQxNl90CXN0YXR1czsKIAl1 aW50MTZfdAltYWdpYzsJCS8qIDB4ZmZmZiA9IHJlZ3VsYXIgRlBVIGRhdGEgb25seSAqLwogCiAJ LyogRlhTUiBGUFUgZW52aXJvbm1lbnQgKi8KLQl0YXJnZXRfdWxvbmcJX2Z4c3JfZW52WzZdOwkv KiBGWFNSIEZQVSBlbnYgaXMgaWdub3JlZCAqLwotCXRhcmdldF91bG9uZwlteGNzcjsKLQl0YXJn ZXRfdWxvbmcJcmVzZXJ2ZWQ7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBfZnhzcl9lbnZbNl07 ICAgLyogRlhTUiBGUFUgZW52IGlzIGlnbm9yZWQgKi8KKyAgICAgICAgYWJpX3Vsb25nICAgICAg IG14Y3NyOworICAgICAgICBhYmlfdWxvbmcgICAgICAgcmVzZXJ2ZWQ7CiAJc3RydWN0IHRhcmdl dF9mcHhyZWcJX2Z4c3Jfc3RbOF07CS8qIEZYU1IgRlBVIHJlZyBkYXRhIGlzIGlnbm9yZWQgKi8K IAlzdHJ1Y3QgdGFyZ2V0X3htbXJlZwlfeG1tWzhdOwotCXRhcmdldF91bG9uZwlwYWRkaW5nWzU2 XTsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIHBhZGRpbmdbNTZdOwogfTsKIAogI2RlZmluZSBY ODZfRlhTUl9NQUdJQwkJMHgwMDAwCkBAIC02MTEsMjkgKzYxMSwyOSBAQAogCXVpbnQxNl90IGZz LCBfX2ZzaDsKIAl1aW50MTZfdCBlcywgX19lc2g7CiAJdWludDE2X3QgZHMsIF9fZHNoOwotCXRh cmdldF91bG9uZyBlZGk7Ci0JdGFyZ2V0X3Vsb25nIGVzaTsKLQl0YXJnZXRfdWxvbmcgZWJwOwot CXRhcmdldF91bG9uZyBlc3A7Ci0JdGFyZ2V0X3Vsb25nIGVieDsKLQl0YXJnZXRfdWxvbmcgZWR4 OwotCXRhcmdldF91bG9uZyBlY3g7Ci0JdGFyZ2V0X3Vsb25nIGVheDsKLQl0YXJnZXRfdWxvbmcg dHJhcG5vOwotCXRhcmdldF91bG9uZyBlcnI7Ci0JdGFyZ2V0X3Vsb25nIGVpcDsKKyAgICAgICAg YWJpX3Vsb25nIGVkaTsKKyAgICAgICAgYWJpX3Vsb25nIGVzaTsKKyAgICAgICAgYWJpX3Vsb25n IGVicDsKKyAgICAgICAgYWJpX3Vsb25nIGVzcDsKKyAgICAgICAgYWJpX3Vsb25nIGVieDsKKyAg ICAgICAgYWJpX3Vsb25nIGVkeDsKKyAgICAgICAgYWJpX3Vsb25nIGVjeDsKKyAgICAgICAgYWJp X3Vsb25nIGVheDsKKyAgICAgICAgYWJpX3Vsb25nIHRyYXBubzsKKyAgICAgICAgYWJpX3Vsb25n IGVycjsKKyAgICAgICAgYWJpX3Vsb25nIGVpcDsKIAl1aW50MTZfdCBjcywgX19jc2g7Ci0JdGFy Z2V0X3Vsb25nIGVmbGFnczsKLQl0YXJnZXRfdWxvbmcgZXNwX2F0X3NpZ25hbDsKKyAgICAgICAg YWJpX3Vsb25nIGVmbGFnczsKKyAgICAgICAgYWJpX3Vsb25nIGVzcF9hdF9zaWduYWw7CiAJdWlu dDE2X3Qgc3MsIF9fc3NoOwotICAgICAgICB0YXJnZXRfdWxvbmcgZnBzdGF0ZTsgLyogcG9pbnRl ciAqLwotCXRhcmdldF91bG9uZyBvbGRtYXNrOwotCXRhcmdldF91bG9uZyBjcjI7CisgICAgICAg IGFiaV91bG9uZyBmcHN0YXRlOyAvKiBwb2ludGVyICovCisgICAgICAgIGFiaV91bG9uZyBvbGRt YXNrOworICAgICAgICBhYmlfdWxvbmcgY3IyOwogfTsKIAogc3RydWN0IHRhcmdldF91Y29udGV4 dCB7Ci0gICAgICAgIHRhcmdldF91bG9uZwkgIHR1Y19mbGFnczsKLQl0YXJnZXRfdWxvbmcgICAg ICB0dWNfbGluazsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgICAgdHVjX2ZsYWdzOworICAgICAg ICBhYmlfdWxvbmcgICAgICAgICB0dWNfbGluazsKIAl0YXJnZXRfc3RhY2tfdAkgIHR1Y19zdGFj azsKIAlzdHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgdHVjX21jb250ZXh0OwogCXRhcmdldF9zaWdz ZXRfdAkgIHR1Y19zaWdtYXNrOwkvKiBtYXNrIGxhc3QgZm9yIGV4dGVuc2liaWxpdHkgKi8KQEAg LTY0MSwyMCArNjQxLDIwIEBACiAKIHN0cnVjdCBzaWdmcmFtZQogewotICAgIHRhcmdldF91bG9u ZyBwcmV0Y29kZTsKKyAgICBhYmlfdWxvbmcgcHJldGNvZGU7CiAgICAgaW50IHNpZzsKICAgICBz dHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgc2M7CiAgICAgc3RydWN0IHRhcmdldF9mcHN0YXRlIGZw c3RhdGU7Ci0gICAgdGFyZ2V0X3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUy0xXTsK KyAgICBhYmlfdWxvbmcgZXh0cmFtYXNrW1RBUkdFVF9OU0lHX1dPUkRTLTFdOwogICAgIGNoYXIg cmV0Y29kZVs4XTsKIH07CiAKIHN0cnVjdCBydF9zaWdmcmFtZQogewotICAgIHRhcmdldF91bG9u ZyBwcmV0Y29kZTsKKyAgICBhYmlfdWxvbmcgcHJldGNvZGU7CiAgICAgaW50IHNpZzsKLSAgICB0 YXJnZXRfdWxvbmcgcGluZm87Ci0gICAgdGFyZ2V0X3Vsb25nIHB1YzsKKyAgICBhYmlfdWxvbmcg cGluZm87CisgICAgYWJpX3Vsb25nIHB1YzsKICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2luZm8gaW5m bzsKICAgICBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHVjOwogICAgIHN0cnVjdCB0YXJnZXRfZnBz dGF0ZSBmcHN0YXRlOwpAQCAtODEzLDggKzgxMyw4IEBACiAJCSAgICAJICAgPyBjdXJyZW50LT5l eGVjX2RvbWFpbi0+c2lnbmFsX2ludm1hcFtzaWddCiAJCQkgICA6ICovc2lnKSwKIAkJCSAgJmZy YW1lLT5zaWcpOwotCWVyciB8PSBfX3B1dF91c2VyKCh0YXJnZXRfdWxvbmcpJmZyYW1lLT5pbmZv LCAmZnJhbWUtPnBpbmZvKTsKLQllcnIgfD0gX19wdXRfdXNlcigodGFyZ2V0X3Vsb25nKSZmcmFt ZS0+dWMsICZmcmFtZS0+cHVjKTsKKwllcnIgfD0gX19wdXRfdXNlcigoYWJpX3Vsb25nKSZmcmFt ZS0+aW5mbywgJmZyYW1lLT5waW5mbyk7CisJZXJyIHw9IF9fcHV0X3VzZXIoKGFiaV91bG9uZykm ZnJhbWUtPnVjLCAmZnJhbWUtPnB1Yyk7CiAJZXJyIHw9IGNvcHlfc2lnaW5mb190b191c2VyKCZm cmFtZS0+aW5mbywgaW5mbyk7CiAJaWYgKGVycikKIAkJZ290byBnaXZlX3NpZ3NlZ3Y7CkBAIC05 NzcsMzIgKzk3NywzMiBAQAogI2VsaWYgZGVmaW5lZChUQVJHRVRfQVJNKQogCiBzdHJ1Y3QgdGFy Z2V0X3NpZ2NvbnRleHQgewotCXRhcmdldF91bG9uZyB0cmFwX25vOwotCXRhcmdldF91bG9uZyBl cnJvcl9jb2RlOwotCXRhcmdldF91bG9uZyBvbGRtYXNrOwotCXRhcmdldF91bG9uZyBhcm1fcjA7 Ci0JdGFyZ2V0X3Vsb25nIGFybV9yMTsKLQl0YXJnZXRfdWxvbmcgYXJtX3IyOwotCXRhcmdldF91 bG9uZyBhcm1fcjM7Ci0JdGFyZ2V0X3Vsb25nIGFybV9yNDsKLQl0YXJnZXRfdWxvbmcgYXJtX3I1 OwotCXRhcmdldF91bG9uZyBhcm1fcjY7Ci0JdGFyZ2V0X3Vsb25nIGFybV9yNzsKLQl0YXJnZXRf dWxvbmcgYXJtX3I4OwotCXRhcmdldF91bG9uZyBhcm1fcjk7Ci0JdGFyZ2V0X3Vsb25nIGFybV9y MTA7Ci0JdGFyZ2V0X3Vsb25nIGFybV9mcDsKLQl0YXJnZXRfdWxvbmcgYXJtX2lwOwotCXRhcmdl dF91bG9uZyBhcm1fc3A7Ci0JdGFyZ2V0X3Vsb25nIGFybV9scjsKLQl0YXJnZXRfdWxvbmcgYXJt X3BjOwotCXRhcmdldF91bG9uZyBhcm1fY3BzcjsKLQl0YXJnZXRfdWxvbmcgZmF1bHRfYWRkcmVz czsKKwlhYmlfdWxvbmcgdHJhcF9ubzsKKwlhYmlfdWxvbmcgZXJyb3JfY29kZTsKKwlhYmlfdWxv bmcgb2xkbWFzazsKKwlhYmlfdWxvbmcgYXJtX3IwOworCWFiaV91bG9uZyBhcm1fcjE7CisJYWJp X3Vsb25nIGFybV9yMjsKKwlhYmlfdWxvbmcgYXJtX3IzOworCWFiaV91bG9uZyBhcm1fcjQ7CisJ YWJpX3Vsb25nIGFybV9yNTsKKwlhYmlfdWxvbmcgYXJtX3I2OworCWFiaV91bG9uZyBhcm1fcjc7 CisJYWJpX3Vsb25nIGFybV9yODsKKwlhYmlfdWxvbmcgYXJtX3I5OworCWFiaV91bG9uZyBhcm1f cjEwOworCWFiaV91bG9uZyBhcm1fZnA7CisJYWJpX3Vsb25nIGFybV9pcDsKKwlhYmlfdWxvbmcg YXJtX3NwOworCWFiaV91bG9uZyBhcm1fbHI7CisJYWJpX3Vsb25nIGFybV9wYzsKKwlhYmlfdWxv bmcgYXJtX2Nwc3I7CisJYWJpX3Vsb25nIGZhdWx0X2FkZHJlc3M7CiB9OwogCiBzdHJ1Y3QgdGFy Z2V0X3Vjb250ZXh0IHsKLSAgICB0YXJnZXRfdWxvbmcgdHVjX2ZsYWdzOwotICAgIHRhcmdldF91 bG9uZyB0dWNfbGluazsKKyAgICBhYmlfdWxvbmcgdHVjX2ZsYWdzOworICAgIGFiaV91bG9uZyB0 dWNfbGluazsKICAgICB0YXJnZXRfc3RhY2tfdCB0dWNfc3RhY2s7CiAgICAgc3RydWN0IHRhcmdl dF9zaWdjb250ZXh0IHR1Y19tY29udGV4dDsKICAgICB0YXJnZXRfc2lnc2V0X3QgIHR1Y19zaWdt YXNrOwkvKiBtYXNrIGxhc3QgZm9yIGV4dGVuc2liaWxpdHkgKi8KQEAgLTEwMTEsOCArMTAxMSw4 IEBACiBzdHJ1Y3Qgc2lnZnJhbWUKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgc2M7 Ci0gICAgdGFyZ2V0X3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUy0xXTsKLSAgICB0 YXJnZXRfdWxvbmcgcmV0Y29kZTsKKyAgICBhYmlfdWxvbmcgZXh0cmFtYXNrW1RBUkdFVF9OU0lH X1dPUkRTLTFdOworICAgIGFiaV91bG9uZyByZXRjb2RlOwogfTsKIAogc3RydWN0IHJ0X3NpZ2Zy YW1lCkBAIC0xMDIxLDcgKzEwMjEsNyBAQAogICAgIHZvaWQgKnB1YzsKICAgICBzdHJ1Y3QgdGFy Z2V0X3NpZ2luZm8gaW5mbzsKICAgICBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHVjOwotICAgIHRh cmdldF91bG9uZyByZXRjb2RlOworICAgIGFiaV91bG9uZyByZXRjb2RlOwogfTsKIAogI2RlZmlu ZSBUQVJHRVRfQ09ORklHX0NQVV8zMiAxCkBAIC0xMDM5LDcgKzEwMzksNyBAQAogI2RlZmluZSBT V0lfVEhVTUJfU0lHUkVUVVJOCSgweGRmMDAgPDwgMTYgfCAweDI3MDAgfCAoVEFSR0VUX05SX3Np Z3JldHVybikpCiAjZGVmaW5lIFNXSV9USFVNQl9SVF9TSUdSRVRVUk4JKDB4ZGYwMCA8PCAxNiB8 IDB4MjcwMCB8IChUQVJHRVRfTlJfcnRfc2lncmV0dXJuKSkKIAotc3RhdGljIGNvbnN0IHRhcmdl dF91bG9uZyByZXRjb2Rlc1s0XSA9IHsKK3N0YXRpYyBjb25zdCBhYmlfdWxvbmcgcmV0Y29kZXNb NF0gPSB7CiAJU1dJX1NZU19TSUdSRVRVUk4sCVNXSV9USFVNQl9TSUdSRVRVUk4sCiAJU1dJX1NZ U19SVF9TSUdSRVRVUk4sCVNXSV9USFVNQl9SVF9TSUdSRVRVUk4KIH07CkBAIC0xMTA1LDE0ICsx MTA1LDE0IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX3JldHVybihDUFVTdGF0ZSAqZW52LCBzdHJ1 Y3QgZW11bGF0ZWRfc2lnYWN0aW9uICprYSwKLQkgICAgIHRhcmdldF91bG9uZyAqcmMsIHZvaWQg KmZyYW1lLCBpbnQgdXNpZykKKwkgICAgIGFiaV91bG9uZyAqcmMsIHZvaWQgKmZyYW1lLCBpbnQg dXNpZykKIHsKLQl0YXJnZXRfdWxvbmcgaGFuZGxlciA9ICh0YXJnZXRfdWxvbmcpa2EtPnNhLl9z YV9oYW5kbGVyOwotCXRhcmdldF91bG9uZyByZXRjb2RlOworCWFiaV91bG9uZyBoYW5kbGVyID0g KGFiaV91bG9uZylrYS0+c2EuX3NhX2hhbmRsZXI7CisJYWJpX3Vsb25nIHJldGNvZGU7CiAJaW50 IHRodW1iID0gMDsKICNpZiBkZWZpbmVkKFRBUkdFVF9DT05GSUdfQ1BVXzMyKQogI2lmIDAKLQl0 YXJnZXRfdWxvbmcgY3BzciA9IGVudi0+Y3BzcjsKKwlhYmlfdWxvbmcgY3BzciA9IGVudi0+Y3Bz cjsKIAogCS8qCiAJICogTWF5YmUgd2UgbmVlZCB0byBkZWxpdmVyIGEgMzItYml0IHNpZ25hbCB0 byBhIDI2LWJpdCB0YXNrLgpAQCAtMTEzOCw3ICsxMTM4LDcgQEAKICNlbmRpZiAvKiBUQVJHRVRf Q09ORklHX0NQVV8zMiAqLwogCiAJaWYgKGthLT5zYS5zYV9mbGFncyAmIFRBUkdFVF9TQV9SRVNU T1JFUikgewotCQlyZXRjb2RlID0gKHRhcmdldF91bG9uZylrYS0+c2Euc2FfcmVzdG9yZXI7CisJ CXJldGNvZGUgPSAoYWJpX3Vsb25nKWthLT5zYS5zYV9yZXN0b3JlcjsKIAl9IGVsc2UgewogCQl1 bnNpZ25lZCBpbnQgaWR4ID0gdGh1bWI7CiAKQEAgLTExNDgsMTAgKzExNDgsMTAgQEAKIAkJaWYg KF9fcHV0X3VzZXIocmV0Y29kZXNbaWR4XSwgcmMpKQogCQkJcmV0dXJuIDE7CiAjaWYgMAotCQlm bHVzaF9pY2FjaGVfcmFuZ2UoKHRhcmdldF91bG9uZylyYywKLQkJCQkgICAodGFyZ2V0X3Vsb25n KShyYyArIDEpKTsKKwkJZmx1c2hfaWNhY2hlX3JhbmdlKChhYmlfdWxvbmcpcmMsCisJCQkJICAg KGFiaV91bG9uZykocmMgKyAxKSk7CiAjZW5kaWYKLQkJcmV0Y29kZSA9ICgodGFyZ2V0X3Vsb25n KXJjKSArIHRodW1iOworCQlyZXRjb2RlID0gKChhYmlfdWxvbmcpcmMpICsgdGh1bWI7CiAJfQog CiAJZW52LT5yZWdzWzBdID0gdXNpZzsKQEAgLTExOTcsOCArMTE5Nyw4IEBACiAJaWYgKCFhY2Nl c3Nfb2soVkVSSUZZX1dSSVRFLCBmcmFtZSwgc2l6ZW9mICgqZnJhbWUpKSkKICAgICAgICAgICAg IHJldHVybiAvKiAxICovOwogCi0JX19wdXRfdXNlcl9lcnJvcigmZnJhbWUtPmluZm8sICh0YXJn ZXRfdWxvbmcgKikmZnJhbWUtPnBpbmZvLCBlcnIpOwotCV9fcHV0X3VzZXJfZXJyb3IoJmZyYW1l LT51YywgKHRhcmdldF91bG9uZyAqKSZmcmFtZS0+cHVjLCBlcnIpOworCV9fcHV0X3VzZXJfZXJy b3IoJmZyYW1lLT5pbmZvLCAoYWJpX3Vsb25nICopJmZyYW1lLT5waW5mbywgZXJyKTsKKwlfX3B1 dF91c2VyX2Vycm9yKCZmcmFtZS0+dWMsIChhYmlfdWxvbmcgKikmZnJhbWUtPnB1YywgZXJyKTsK IAllcnIgfD0gY29weV9zaWdpbmZvX3RvX3VzZXIoJmZyYW1lLT5pbmZvLCBpbmZvKTsKIAogCS8q IENsZWFyIGFsbCB0aGUgYml0cyBvZiB0aGUgdWNvbnRleHQgd2UgZG9uJ3QgdXNlLiAgKi8KQEAg LTEyMjksOCArMTIyOSw4IEBACiAJCSAqIGFyZ3VtZW50cyBmb3IgdGhlIHNpZ25hbCBoYW5kbGVy LgogCQkgKiAgIC0tIFBldGVyIE1heWRlbGwgPHBtYXlkZWxsQGNoaWFyay5ncmVlbmVuZC5vcmcu dWs+IDIwMDAtMTItMDYKIAkJICovCi0gICAgICAgICAgICBlbnYtPnJlZ3NbMV0gPSAodGFyZ2V0 X3Vsb25nKWZyYW1lLT5waW5mbzsKLSAgICAgICAgICAgIGVudi0+cmVnc1syXSA9ICh0YXJnZXRf dWxvbmcpZnJhbWUtPnB1YzsKKyAgICAgICAgICAgIGVudi0+cmVnc1sxXSA9IChhYmlfdWxvbmcp ZnJhbWUtPnBpbmZvOworICAgICAgICAgICAgZW52LT5yZWdzWzJdID0gKGFiaV91bG9uZylmcmFt ZS0+cHVjOwogCX0KIAogICAgICAgICAvLwlyZXR1cm4gZXJyOwpAQCAtMTM2MCw0OCArMTM2MCw0 OCBAQAogCiAvKiBUaGlzIGlzIHdoYXQgU3VuT1MgZG9lcywgc28gc2hhbGwgSS4gKi8KIHN0cnVj dCB0YXJnZXRfc2lnY29udGV4dCB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX29uc3RhY2s7 ICAgICAgLyogc3RhdGUgdG8gcmVzdG9yZSAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19vbnN0 YWNrOyAgICAgIC8qIHN0YXRlIHRvIHJlc3RvcmUgKi8KIAotICAgICAgICB0YXJnZXRfdWxvbmcg c2lnY19tYXNrOyAgICAgICAgIC8qIHNpZ21hc2sgdG8gcmVzdG9yZSAqLwotICAgICAgICB0YXJn ZXRfdWxvbmcgc2lnY19zcDsgICAgICAgICAgIC8qIHN0YWNrIHBvaW50ZXIgKi8KLSAgICAgICAg dGFyZ2V0X3Vsb25nIHNpZ2NfcGM7ICAgICAgICAgICAvKiBwcm9ncmFtIGNvdW50ZXIgKi8KLSAg ICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2NfbnBjOyAgICAgICAgICAvKiBuZXh0IHByb2dyYW0gY291 bnRlciAqLwotICAgICAgICB0YXJnZXRfdWxvbmcgc2lnY19wc3I7ICAgICAgICAgIC8qIGZvciBj b25kaXRpb24gY29kZXMgZXRjICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX2cxOyAgICAg ICAgICAgLyogVXNlciB1c2VzIHRoZXNlIHR3byByZWdpc3RlcnMgKi8KLSAgICAgICAgdGFyZ2V0 X3Vsb25nIHNpZ2NfbzA7ICAgICAgICAgICAvKiB3aXRoaW4gdGhlIHRyYW1wb2xpbmUgY29kZS4g Ki8KKyAgICAgICAgYWJpX3Vsb25nIHNpZ2NfbWFzazsgICAgICAgICAvKiBzaWdtYXNrIHRvIHJl c3RvcmUgKi8KKyAgICAgICAgYWJpX3Vsb25nIHNpZ2Nfc3A7ICAgICAgICAgICAvKiBzdGFjayBw b2ludGVyICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX3BjOyAgICAgICAgICAgLyogcHJvZ3Jh bSBjb3VudGVyICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX25wYzsgICAgICAgICAgLyogbmV4 dCBwcm9ncmFtIGNvdW50ZXIgKi8KKyAgICAgICAgYWJpX3Vsb25nIHNpZ2NfcHNyOyAgICAgICAg ICAvKiBmb3IgY29uZGl0aW9uIGNvZGVzIGV0YyAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19n MTsgICAgICAgICAgIC8qIFVzZXIgdXNlcyB0aGVzZSB0d28gcmVnaXN0ZXJzICovCisgICAgICAg IGFiaV91bG9uZyBzaWdjX28wOyAgICAgICAgICAgLyogd2l0aGluIHRoZSB0cmFtcG9saW5lIGNv ZGUuICovCiAKICAgICAgICAgLyogTm93IGNvbWVzIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUg dXNlcnMgd2luZG93IHNldAogICAgICAgICAgKiBhdCB0aGUgdGltZSBvZiB0aGUgc2lnbmFsLgog ICAgICAgICAgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2Nfb3N3aW5zOyAgICAgICAvKiBv dXRzdGFuZGluZyB3aW5kb3dzICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX29zd2luczsgICAg ICAgLyogb3V0c3RhbmRpbmcgd2luZG93cyAqLwogCiAgICAgICAgIC8qIHN0YWNrIHB0cnMgZm9y IGVhY2ggcmVnd2luIGJ1ZiAqLwogICAgICAgICBjaGFyICpzaWdjX3NwYnVmW19fU1VOT1NfTUFY V0lOXTsKIAogICAgICAgICAvKiBXaW5kb3dzIHRvIHJlc3RvcmUgYWZ0ZXIgc2lnbmFsICovCiAg ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGxvY2Fsc1s4XTsK LSAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgaW5zWzhdOworICAgICAgICAgICAgICAgIGFi aV91bG9uZyBsb2NhbHNbOF07CisgICAgICAgICAgICAgICAgYWJpX3Vsb25nIGluc1s4XTsKICAg ICAgICAgfSBzaWdjX3didWZbX19TVU5PU19NQVhXSU5dOwogfTsKIC8qIEEgU3BhcmMgc3RhY2sg ZnJhbWUgKi8KIHN0cnVjdCBzcGFyY19zdGFja2YgewotICAgICAgICB0YXJnZXRfdWxvbmcgbG9j YWxzWzhdOwotICAgICAgICB0YXJnZXRfdWxvbmcgaW5zWzZdOworICAgICAgICBhYmlfdWxvbmcg bG9jYWxzWzhdOworICAgICAgICBhYmlfdWxvbmcgaW5zWzZdOwogICAgICAgICBzdHJ1Y3Qgc3Bh cmNfc3RhY2tmICpmcDsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIGNhbGxlcnNfcGM7CisgICAgICAg IGFiaV91bG9uZyBjYWxsZXJzX3BjOwogICAgICAgICBjaGFyICpzdHJ1Y3RwdHI7Ci0gICAgICAg IHRhcmdldF91bG9uZyB4YXJnc1s2XTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHh4YXJnc1sxXTsK KyAgICAgICAgYWJpX3Vsb25nIHhhcmdzWzZdOworICAgICAgICBhYmlfdWxvbmcgeHhhcmdzWzFd OwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyBwc3I7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHBjOwot ICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBucGM7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIHk7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHVfcmVnc1sxNl07IC8qIGds b2JhbHMgYW5kIGlucyAqLworICAgICAgICAgICAgICAgIGFiaV91bG9uZyBwc3I7CisgICAgICAg ICAgICAgICAgYWJpX3Vsb25nIHBjOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyBucGM7Cisg ICAgICAgICAgICAgICAgYWJpX3Vsb25nIHk7CisgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHVf cmVnc1sxNl07IC8qIGdsb2JhbHMgYW5kIGlucyAqLwogICAgICAgICB9ICAgICAgICAgICAgICAg c2lfcmVnczsKICAgICAgICAgaW50ICAgICAgICAgICAgIHNpX21hc2s7CiB9IF9fc2lnaW5mb190 OwpAQCAtMTQyMSwxNSArMTQyMSwxNSBAQAogCXN0cnVjdCBzcGFyY19zdGFja2YJc3M7CiAJX19z aWdpbmZvX3QJCWluZm87CiAJcWVtdV9zaWdpbmZvX2ZwdV90IAkqZnB1X3NhdmU7Ci0JdGFyZ2V0 X3Vsb25nCQlpbnNuc1syXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKTsKLQl0YXJnZXRf dWxvbmcJCWV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUyAtIDFdOwotCXRhcmdldF91bG9uZwkJ ZXh0cmFfc2l6ZTsgLyogU2hvdWxkIGJlIDAgKi8KKwlhYmlfdWxvbmcJCWluc25zWzJdIF9fYXR0 cmlidXRlX18gKChhbGlnbmVkICg4KSkpOworCWFiaV91bG9uZwkJZXh0cmFtYXNrW1RBUkdFVF9O U0lHX1dPUkRTIC0gMV07CisJYWJpX3Vsb25nCQlleHRyYV9zaXplOyAvKiBTaG91bGQgYmUgMCAq LwogCXFlbXVfc2lnaW5mb19mcHVfdAlmcHVfc3RhdGU7CiB9Owogc3RydWN0IHRhcmdldF9ydF9z aWduYWxfZnJhbWUgewogCXN0cnVjdCBzcGFyY19zdGFja2YJc3M7CiAJc2lnaW5mb190CQlpbmZv OwotCXRhcmdldF91bG9uZwkJcmVnc1syMF07CisJYWJpX3Vsb25nCQlyZWdzWzIwXTsKIAlzaWdz ZXRfdAkJbWFzazsKIAlxZW11X3NpZ2luZm9fZnB1X3QgCSpmcHVfc2F2ZTsKIAl1bnNpZ25lZCBp bnQJCWluc25zWzJdOwpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAKIH0KIAogc3RhdGljIGludAotc2V0 dXBfX19zaWdpbmZvKF9fc2lnaW5mb190ICpzaSwgQ1BVU3RhdGUgKmVudiwgdGFyZ2V0X3Vsb25n IG1hc2spCitzZXR1cF9fX3NpZ2luZm8oX19zaWdpbmZvX3QgKnNpLCBDUFVTdGF0ZSAqZW52LCBh YmlfdWxvbmcgbWFzaykKIHsKIAlpbnQgZXJyID0gMCwgaTsKIApAQCAtMTYzNCw3ICsxNjM0LDcg QEAKICAgICAgICAgdWludDMyX3QgdXBfcHNyLCBwYywgbnBjOwogICAgICAgICB0YXJnZXRfc2ln c2V0X3Qgc2V0OwogICAgICAgICBzaWdzZXRfdCBob3N0X3NldDsKLSAgICAgICAgdGFyZ2V0X3Vs b25nIGZwdV9zYXZlOworICAgICAgICBhYmlfdWxvbmcgZnB1X3NhdmU7CiAgICAgICAgIGludCBl cnIsIGk7CiAKICAgICAgICAgc2YgPSAoc3RydWN0IHRhcmdldF9zaWduYWxfZnJhbWUgKilnMmgo ZW52LT5yZWd3cHRyW1VSRUdfRlBdKTsKQEAgLTE2NzYsNyArMTY3Niw3IEBACiAJCWVyciB8PSBf X2dldF91c2VyKGVudi0+cmVnd3B0cltpICsgVVJFR19JMF0sICZzZi0+aW5mby5zaV9yZWdzLnVf cmVnc1tpKzhdKTsKIAl9CiAKLSAgICAgICAgZXJyIHw9IF9fZ2V0X3VzZXIoZnB1X3NhdmUsICh0 YXJnZXRfdWxvbmcgKikmc2YtPmZwdV9zYXZlKTsKKyAgICAgICAgZXJyIHw9IF9fZ2V0X3VzZXIo ZnB1X3NhdmUsIChhYmlfdWxvbmcgKikmc2YtPmZwdV9zYXZlKTsKIAogICAgICAgICAvL2lmIChm cHVfc2F2ZSkKICAgICAgICAgLy8gICAgICAgIGVyciB8PSByZXN0b3JlX2ZwdV9zdGF0ZShlbnYs IGZwdV9zYXZlKTsKQEAgLTE3MjksMTEgKzE3MjksMTEgQEAKICNkZWZpbmUgTUNfTzcgMTgKICNk ZWZpbmUgTUNfTkdSRUcgMTkKIAotdHlwZWRlZiB0YXJnZXRfdWxvbmcgdGFyZ2V0X21jX2dyZWdf dDsKK3R5cGVkZWYgYWJpX3Vsb25nIHRhcmdldF9tY19ncmVnX3Q7CiB0eXBlZGVmIHRhcmdldF9t Y19ncmVnX3QgdGFyZ2V0X21jX2dyZWdzZXRfdFtNQ19OR1JFR107CiAKIHN0cnVjdCB0YXJnZXRf bWNfZnEgewotICAgIHRhcmdldF91bG9uZyAqbWNmcV9hZGRyOworICAgIGFiaV91bG9uZyAqbWNm cV9hZGRyOwogICAgIHVpbnQzMl90IG1jZnFfaW5zbjsKIH07CiAKQEAgLTE3NDMsOSArMTc0Myw5 IEBACiAgICAgICAgIHVpbnQ2NF90IGRyZWdzWzMyXTsKICAgICAgICAgLy91aW50MTI4X3QgcXJl Z3NbMTZdOwogICAgIH0gbWNmcHVfZnJlZ3M7Ci0gICAgdGFyZ2V0X3Vsb25nIG1jZnB1X2ZzcjsK LSAgICB0YXJnZXRfdWxvbmcgbWNmcHVfZnByczsKLSAgICB0YXJnZXRfdWxvbmcgbWNmcHVfZ3Ny OworICAgIGFiaV91bG9uZyBtY2ZwdV9mc3I7CisgICAgYWJpX3Vsb25nIG1jZnB1X2ZwcnM7Cisg ICAgYWJpX3Vsb25nIG1jZnB1X2dzcjsKICAgICBzdHJ1Y3QgdGFyZ2V0X21jX2ZxICptY2ZwdV9m cTsKICAgICB1bnNpZ25lZCBjaGFyIG1jZnB1X3FjbnQ7CiAgICAgdW5zaWduZWQgY2hhciBtY2Zw dV9xZW50c3o7CkBAIC0xNzYyLDE1ICsxNzYyLDE1IEBACiAKIHN0cnVjdCB0YXJnZXRfdWNvbnRl eHQgewogICAgIHN0cnVjdCB0YXJnZXRfdWNvbnRleHQgKnVjX2xpbms7Ci0gICAgdGFyZ2V0X3Vs b25nIHVjX2ZsYWdzOworICAgIGFiaV91bG9uZyB1Y19mbGFnczsKICAgICB0YXJnZXRfc2lnc2V0 X3QgdWNfc2lnbWFzazsKICAgICB0YXJnZXRfbWNvbnRleHRfdCB1Y19tY29udGV4dDsKIH07CiAK IC8qIEEgVjkgcmVnaXN0ZXIgd2luZG93ICovCiBzdHJ1Y3QgdGFyZ2V0X3JlZ193aW5kb3cgewot ICAgIHRhcmdldF91bG9uZyBsb2NhbHNbOF07Ci0gICAgdGFyZ2V0X3Vsb25nIGluc1s4XTsKKyAg ICBhYmlfdWxvbmcgbG9jYWxzWzhdOworICAgIGFiaV91bG9uZyBpbnNbOF07CiB9OwogCiAjZGVm aW5lIFRBUkdFVF9TVEFDS19CSUFTIDIwNDcKQEAgLTE3ODEsMTIgKzE3ODEsMTIgQEAKICAgICBz dHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0ICp1Y3AgPSAoc3RydWN0IHRhcmdldF91Y29udGV4dCAqKQog ICAgICAgICBlbnYtPnJlZ3dwdHJbVVJFR19JMF07CiAgICAgdGFyZ2V0X21jX2dyZWdzZXRfdCAq Z3JwOwotICAgIHRhcmdldF91bG9uZyBwYywgbnBjLCB0c3RhdGU7Ci0gICAgdGFyZ2V0X3Vsb25n IGZwLCBpNzsKKyAgICBhYmlfdWxvbmcgcGMsIG5wYywgdHN0YXRlOworICAgIGFiaV91bG9uZyBm cCwgaTc7CiAgICAgdW5zaWduZWQgY2hhciBmZW5hYjsKICAgICBpbnQgZXJyOwogICAgIHVuc2ln bmVkIGludCBpOwotICAgIHRhcmdldF91bG9uZyAqc3JjLCAqZHN0OworICAgIGFiaV91bG9uZyAq c3JjLCAqZHN0OwogCiAgICAgZ3JwICA9ICZ1Y3AtPnVjX21jb250ZXh0Lm1jX2dyZWdzOwogICAg IGVyciAgPSBnZXRfdXNlcihwYywgJigoKmdycClbTUNfUENdKSk7CkBAIC0xODAzLDcgKzE4MDMs NyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3JjID0gJnVjcC0+dWNfc2lnbWFz azsKICAgICAgICAgICAgIGRzdCA9ICZ0YXJnZXRfc2V0OwotICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHNpemVvZih0YXJnZXRfc2lnc2V0X3QpIC8gc2l6ZW9mKHRhcmdldF91bG9uZyk7Cisg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCkgLyBzaXpl b2YoYWJpX3Vsb25nKTsKICAgICAgICAgICAgICAgICAgaSsrLCBkc3QrKywgc3JjKyspCiAgICAg ICAgICAgICAgICAgZXJyIHw9IGdldF91c2VyKGRzdCwgc3JjKTsKICAgICAgICAgICAgIGlmIChl cnIpCkBAIC0xODY2LDEwICsxODY2LDEwIEBACiAgICAgICAgIGVudi0+cmVnd3B0cltVUkVHX0kw XTsKICAgICB0YXJnZXRfbWNfZ3JlZ3NldF90ICpncnA7CiAgICAgdGFyZ2V0X21jb250ZXh0X3Qg Km1jcDsKLSAgICB0YXJnZXRfdWxvbmcgZnAsIGk3OworICAgIGFiaV91bG9uZyBmcCwgaTc7CiAg ICAgaW50IGVycjsKICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICB0YXJnZXRfdWxvbmcgKnNyYywg KmRzdDsKKyAgICBhYmlfdWxvbmcgKnNyYywgKmRzdDsKICAgICB0YXJnZXRfc2lnc2V0X3QgdGFy Z2V0X3NldDsKICAgICBzaWdzZXRfdCBzZXQ7CiAKQEAgLTE4ODYsMTEgKzE4ODYsMTEgQEAKICAg ICBob3N0X3RvX3RhcmdldF9zaWdzZXRfaW50ZXJuYWwoJnRhcmdldF9zZXQsICZzZXQpOwogICAg IGlmIChUQVJHRVRfTlNJR19XT1JEUyA9PSAxKQogICAgICAgICBlcnIgfD0gcHV0X3VzZXIodGFy Z2V0X3NldC5zaWdbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0X3Vsb25nICop JnVjcC0+dWNfc2lnbWFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICAoYWJpX3Vsb25nICop JnVjcC0+dWNfc2lnbWFzayk7CiAgICAgZWxzZSB7CiAgICAgICAgIHNyYyA9ICZ0YXJnZXRfc2V0 OwogICAgICAgICBkc3QgPSAmdWNwLT51Y19zaWdtYXNrOwotICAgICAgICBmb3IgKGkgPSAwOyBp IDwgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCkgLyBzaXplb2YodGFyZ2V0X3Vsb25nKTsKKyAgICAg ICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YXJnZXRfc2lnc2V0X3QpIC8gc2l6ZW9mKGFiaV91 bG9uZyk7CiAgICAgICAgICAgICAgaSsrLCBkc3QrKywgc3JjKyspCiAgICAgICAgICAgICBlcnIg fD0gcHV0X3VzZXIoc3JjLCBkc3QpOwogICAgICAgICBpZiAoZXJyKQpAQCAtMjM1NCw3ICsyMzU0 LDcgQEAKIHZvaWQgcHJvY2Vzc19wZW5kaW5nX3NpZ25hbHModm9pZCAqY3B1X2VudikKIHsKICAg ICBpbnQgc2lnOwotICAgIHRhcmdldF91bG9uZyBoYW5kbGVyOworICAgIGFiaV91bG9uZyBoYW5k bGVyOwogICAgIHNpZ3NldF90IHNldCwgb2xkX3NldDsKICAgICB0YXJnZXRfc2lnc2V0X3QgdGFy Z2V0X29sZF9zZXQ7CiAgICAgc3RydWN0IGVtdWxhdGVkX3NpZ2FjdGlvbiAqazsKSW5kZXg6IHFl bXUvbGludXgtdXNlci9zcGFyYy9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xp bnV4LXVzZXIvc3BhcmMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L2xpbnV4LXVzZXIvc3BhcmMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6 NDYuMDAwMDAwMDAwICswMDAwCkBAIC0xLDkgKzEsOSBAQAogc3RydWN0IHRhcmdldF9wdF9yZWdz IHsKLQl0YXJnZXRfdWxvbmcgcHNyOwotCXRhcmdldF91bG9uZyBwYzsKLQl0YXJnZXRfdWxvbmcg bnBjOwotCXRhcmdldF91bG9uZyB5OwotCXRhcmdldF91bG9uZyB1X3JlZ3NbMTZdOworCWFiaV91 bG9uZyBwc3I7CisJYWJpX3Vsb25nIHBjOworCWFiaV91bG9uZyBucGM7CisJYWJpX3Vsb25nIHk7 CisJYWJpX3Vsb25nIHVfcmVnc1sxNl07CiB9OwogCiAjZGVmaW5lIFVOQU1FX01BQ0hJTkUgInN1 bjQiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvc3BhcmMvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3NwYXJjL3RhcmdldF9zaWduYWwuaAkyMDA3LTEw LTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3NwYXJjL3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5 ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNj YWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0J dGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9u ZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlf dWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjgsNyArMjgsNyBAQAog I2RlZmluZSBVUkVHX0ZQICAgICAgICBVUkVHX0k2CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSB0 YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVU1BBUkNTdGF0ZSAqc3RhdGUpCitz dGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVTUEFSQ1N0YXRl ICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPnJlZ3dwdHJbVVJFR19GUF07CiB9CkluZGV4 OiBxZW11L2xpbnV4LXVzZXIvc3BhcmM2NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL2xpbnV4LXVzZXIvc3BhcmM2NC9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAw MDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zcGFyYzY0L3N5c2NhbGwuaAkyMDA3LTEw LTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMSwxMCArMSwxMCBAQAogc3RydWN0IHRh cmdldF9wdF9yZWdzIHsKLQl0YXJnZXRfdWxvbmcgdV9yZWdzWzE2XTsKLQl0YXJnZXRfdWxvbmcg dHN0YXRlOwotCXRhcmdldF91bG9uZyBwYzsKLQl0YXJnZXRfdWxvbmcgbnBjOwotCXRhcmdldF91 bG9uZyB5OwotCXRhcmdldF91bG9uZyBmcHJzOworCWFiaV91bG9uZyB1X3JlZ3NbMTZdOworCWFi aV91bG9uZyB0c3RhdGU7CisJYWJpX3Vsb25nIHBjOworCWFiaV91bG9uZyBucGM7CisJYWJpX3Vs b25nIHk7CisJYWJpX3Vsb25nIGZwcnM7CiB9OwogCiAjZGVmaW5lIFVOQU1FX01BQ0hJTkUgInN1 bjR1IgpJbmRleDogcWVtdS9saW51eC11c2VyL3NwYXJjNjQvdGFyZ2V0X3NpZ25hbC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3NwYXJjNjQvdGFyZ2V0X3NpZ25hbC5oCTIw MDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvc3Bh cmM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAK QEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJp bmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3Rh Y2sgewotCXRhcmdldF91bG9uZyBzc19zcDsKLQl0YXJnZXRfbG9uZyBzc19mbGFnczsKLQl0YXJn ZXRfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nfc3A7CisJYWJpX2xvbmcgc3NfZmxhZ3M7 CisJYWJpX3Vsb25nIHNzX3NpemU7CiB9IHRhcmdldF9zdGFja190OwogCiAKQEAgLTI4LDcgKzI4 LDcgQEAKICNkZWZpbmUgVVJFR19GUCAgICAgICAgVVJFR19JNgogI2VuZGlmCiAKLXN0YXRpYyBp bmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQVVNQQVJDU3RhdGUgKnN0 YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVU1BB UkNTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5yZWd3cHRyW1VSRUdfRlBdOwog fQpJbmRleDogcWVtdS9saW51eC11c2VyL3N5c2NhbGwuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvbGludXgtdXNlci9zeXNjYWxsLmMJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvbGludXgtdXNlci9zeXNjYWxsLmMJMjAwNy0xMC0xMiAxNjowMzozNi4wMDAw MDAwMDAgKzAwMDAKQEAgLTM2OCw3ICszNjgsNyBAQAogICAgIHJldHVybiBlcnI7CiB9CiAKLXN0 YXRpYyBpbmxpbmUgdGFyZ2V0X2xvbmcgZ2V0X2Vycm5vKHRhcmdldF9sb25nIHJldCkKK3N0YXRp YyBpbmxpbmUgYWJpX2xvbmcgZ2V0X2Vycm5vKGFiaV9sb25nIHJldCkKIHsKICAgICBpZiAocmV0 ID09IC0xKQogICAgICAgICByZXR1cm4gLWhvc3RfdG9fdGFyZ2V0X2Vycm5vKGVycm5vKTsKQEAg LTM3NiwyMyArMzc2LDIzIEBACiAgICAgICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbmxp bmUgaW50IGlzX2Vycm9yKHRhcmdldF9sb25nIHJldCkKK3N0YXRpYyBpbmxpbmUgaW50IGlzX2Vy cm9yKGFiaV9sb25nIHJldCkKIHsKLSAgICByZXR1cm4gKHRhcmdldF91bG9uZylyZXQgPj0gKHRh cmdldF91bG9uZykoLTQwOTYpOworICAgIHJldHVybiAoYWJpX3Vsb25nKXJldCA+PSAoYWJpX3Vs b25nKSgtNDA5Nik7CiB9CiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgdGFyZ2V0X2JyazsKLXN0YXRp YyB0YXJnZXRfdWxvbmcgdGFyZ2V0X29yaWdpbmFsX2JyazsKK3N0YXRpYyBhYmlfdWxvbmcgdGFy Z2V0X2JyazsKK3N0YXRpYyBhYmlfdWxvbmcgdGFyZ2V0X29yaWdpbmFsX2JyazsKIAotdm9pZCB0 YXJnZXRfc2V0X2Jyayh0YXJnZXRfdWxvbmcgbmV3X2JyaykKK3ZvaWQgdGFyZ2V0X3NldF9icmso YWJpX3Vsb25nIG5ld19icmspCiB7CiAgICAgdGFyZ2V0X29yaWdpbmFsX2JyayA9IHRhcmdldF9i cmsgPSBIT1NUX1BBR0VfQUxJR04obmV3X2Jyayk7CiB9CiAKLXRhcmdldF9sb25nIGRvX2Jyayh0 YXJnZXRfdWxvbmcgbmV3X2JyaykKK2FiaV9sb25nIGRvX2JyayhhYmlfdWxvbmcgbmV3X2JyaykK IHsKLSAgICB0YXJnZXRfdWxvbmcgYnJrX3BhZ2U7Ci0gICAgdGFyZ2V0X2xvbmcgbWFwcGVkX2Fk ZHI7CisgICAgYWJpX3Vsb25nIGJya19wYWdlOworICAgIGFiaV9sb25nIG1hcHBlZF9hZGRyOwog ICAgIGludAluZXdfYWxsb2Nfc2l6ZTsKIAogICAgIGlmICghbmV3X2JyaykKQEAgLTQyMiw3ICs0 MjIsNyBAQAogfQogCiBzdGF0aWMgaW5saW5lIGZkX3NldCAqdGFyZ2V0X3RvX2hvc3RfZmRzKGZk X3NldCAqZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfbG9uZyAqdGFyZ2V0X2ZkcywgaW50IG4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFiaV9sb25nICp0YXJnZXRfZmRzLCBpbnQgbikKIHsKICNpZiAhZGVmaW5l ZChCU1dBUF9ORUVERUQpICYmICFkZWZpbmVkKFdPUkRTX0JJR0VORElBTikKICAgICByZXR1cm4g KGZkX3NldCAqKXRhcmdldF9mZHM7CkBAIC00MzEsOCArNDMxLDggQEAKICAgICBpZiAodGFyZ2V0 X2ZkcykgewogICAgICAgICBGRF9aRVJPKGZkcyk7CiAgICAgICAgIGZvcihpID0gMDtpIDwgbjsg aSsrKSB7Ci0gICAgICAgICAgICBiID0gKHRzd2FwbCh0YXJnZXRfZmRzW2kgLyBUQVJHRVRfTE9O R19CSVRTXSkgPj4KLSAgICAgICAgICAgICAgICAgKGkgJiAoVEFSR0VUX0xPTkdfQklUUyAtIDEp KSkgJiAxOworICAgICAgICAgICAgYiA9ICh0c3dhcGwodGFyZ2V0X2Zkc1tpIC8gVEFSR0VUX0FC SV9CSVRTXSkgPj4KKyAgICAgICAgICAgICAgICAgKGkgJiAoVEFSR0VUX0FCSV9CSVRTIC0gMSkp KSAmIDE7CiAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICBGRF9TRVQoaSwgZmRz KTsKICAgICAgICAgfQpAQCAtNDQzLDIxICs0NDMsMjEgQEAKICNlbmRpZgogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfZmRzKHRhcmdldF9sb25nICp0YXJnZXRfZmRzLAor c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X2ZkcyhhYmlfbG9uZyAqdGFyZ2V0X2Zk cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpmZHMsIGlu dCBuKQogewogI2lmICFkZWZpbmVkKEJTV0FQX05FRURFRCkgJiYgIWRlZmluZWQoV09SRFNfQklH RU5ESUFOKQogICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICNlbHNlCiAgICAgaW50IGksIG53LCBq LCBrOwotICAgIHRhcmdldF9sb25nIHY7CisgICAgYWJpX2xvbmcgdjsKIAogICAgIGlmICh0YXJn ZXRfZmRzKSB7Ci0gICAgICAgIG53ID0gKG4gKyBUQVJHRVRfTE9OR19CSVRTIC0gMSkgLyBUQVJH RVRfTE9OR19CSVRTOworICAgICAgICBudyA9IChuICsgVEFSR0VUX0FCSV9CSVRTIC0gMSkgLyBU QVJHRVRfQUJJX0JJVFM7CiAgICAgICAgIGsgPSAwOwogICAgICAgICBmb3IoaSA9IDA7aSA8IG53 OyBpKyspIHsKICAgICAgICAgICAgIHYgPSAwOwotICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwg VEFSR0VUX0xPTkdfQklUUzsgaisrKSB7CisgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBUQVJH RVRfQUJJX0JJVFM7IGorKykgewogICAgICAgICAgICAgICAgIHYgfD0gKChGRF9JU1NFVChrLCBm ZHMpICE9IDApIDw8IGopOwogICAgICAgICAgICAgICAgIGsrKzsKICAgICAgICAgICAgIH0KQEAg LTQ3Myw3ICs0NzMsNyBAQAogI2RlZmluZSBIT1NUX0haIDEwMAogI2VuZGlmCiAKLXN0YXRpYyBp bmxpbmUgdGFyZ2V0X2xvbmcgaG9zdF90b190YXJnZXRfY2xvY2tfdChsb25nIHRpY2tzKQorc3Rh dGljIGlubGluZSBhYmlfbG9uZyBob3N0X3RvX3RhcmdldF9jbG9ja190KGxvbmcgdGlja3MpCiB7 CiAjaWYgSE9TVF9IWiA9PSBUQVJHRVRfSFoKICAgICByZXR1cm4gdGlja3M7CkBAIC00ODIsNyAr NDgyLDcgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRf cnVzYWdlKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKK3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0 X3RvX3RhcmdldF9ydXNhZ2UoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnVzYWdlICpydXNhZ2UpCiB7 CiAgICAgc3RydWN0IHRhcmdldF9ydXNhZ2UgKnRhcmdldF9ydXNhZ2U7CkBAIC01MTAsNyArNTEw LDcgQEAKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3RpbWV2YWwoc3Ry dWN0IHRpbWV2YWwgKnR2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyKQogewogICAgIHN0cnVjdCB0YXJn ZXRfdGltZXZhbCAqdGFyZ2V0X3R2OwogCkBAIC01MjAsNyArNTIwLDcgQEAKICAgICB1bmxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0YXJnZXRfYWRkciwgMCk7CiB9CiAKLXN0YXRpYyBpbmxp bmUgdm9pZCBob3N0X3RvX3RhcmdldF90aW1ldmFsKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwK K3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF90aW1ldmFsKGFiaV91bG9uZyB0YXJn ZXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCB0aW1ldmFsICp0dikKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwgKnRhcmdl dF90djsKQEAgLTUzMiwzMyArNTMyLDMzIEBACiB9CiAKIAotc3RhdGljIHRhcmdldF9sb25nIGRv X3NlbGVjdChpbnQgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25n IHJmZF9wLCB0YXJnZXRfdWxvbmcgd2ZkX3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBlZmRfcCwgdGFyZ2V0X3Vsb25nIHRhcmdldF90dikKK3N0YXRpYyBhYmlf bG9uZyBkb19zZWxlY3QoaW50IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9u ZyByZmRfcCwgYWJpX3Vsb25nIHdmZF9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlf dWxvbmcgZWZkX3AsIGFiaV91bG9uZyB0YXJnZXRfdHYpCiB7CiAgICAgZmRfc2V0IHJmZHMsIHdm ZHMsIGVmZHM7CiAgICAgZmRfc2V0ICpyZmRzX3B0ciwgKndmZHNfcHRyLCAqZWZkc19wdHI7Ci0g ICAgdGFyZ2V0X2xvbmcgKnRhcmdldF9yZmRzLCAqdGFyZ2V0X3dmZHMsICp0YXJnZXRfZWZkczsK KyAgICBhYmlfbG9uZyAqdGFyZ2V0X3JmZHMsICp0YXJnZXRfd2ZkcywgKnRhcmdldF9lZmRzOwog ICAgIHN0cnVjdCB0aW1ldmFsIHR2LCAqdHZfcHRyOwotICAgIHRhcmdldF9sb25nIHJldDsKKyAg ICBhYmlfbG9uZyByZXQ7CiAgICAgaW50IG9rOwogCiAgICAgaWYgKHJmZF9wKSB7Ci0gICAgICAg IHRhcmdldF9yZmRzID0gbG9ja191c2VyKHJmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwg MSk7CisgICAgICAgIHRhcmdldF9yZmRzID0gbG9ja191c2VyKHJmZF9wLCBzaXplb2YoYWJpX2xv bmcpICogbiwgMSk7CiAgICAgICAgIHJmZHNfcHRyID0gdGFyZ2V0X3RvX2hvc3RfZmRzKCZyZmRz LCB0YXJnZXRfcmZkcywgbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGFyZ2V0X3JmZHMgPSBO VUxMOwogICAgICAgICByZmRzX3B0ciA9IE5VTEw7CiAgICAgfQogICAgIGlmICh3ZmRfcCkgewot ICAgICAgICB0YXJnZXRfd2ZkcyA9IGxvY2tfdXNlcih3ZmRfcCwgc2l6ZW9mKHRhcmdldF9sb25n KSAqIG4sIDEpOworICAgICAgICB0YXJnZXRfd2ZkcyA9IGxvY2tfdXNlcih3ZmRfcCwgc2l6ZW9m KGFiaV9sb25nKSAqIG4sIDEpOwogICAgICAgICB3ZmRzX3B0ciA9IHRhcmdldF90b19ob3N0X2Zk cygmd2ZkcywgdGFyZ2V0X3dmZHMsIG4pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRhcmdldF93 ZmRzID0gTlVMTDsKICAgICAgICAgd2Zkc19wdHIgPSBOVUxMOwogICAgIH0KICAgICBpZiAoZWZk X3ApIHsKLSAgICAgICAgdGFyZ2V0X2VmZHMgPSBsb2NrX3VzZXIoZWZkX3AsIHNpemVvZih0YXJn ZXRfbG9uZykgKiBuLCAxKTsKKyAgICAgICAgdGFyZ2V0X2VmZHMgPSBsb2NrX3VzZXIoZWZkX3As IHNpemVvZihhYmlfbG9uZykgKiBuLCAxKTsKICAgICAgICAgZWZkc19wdHIgPSB0YXJnZXRfdG9f aG9zdF9mZHMoJmVmZHMsIHRhcmdldF9lZmRzLCBuKTsKICAgICB9IGVsc2UgewogICAgICAgICB0 YXJnZXRfZWZkcyA9IE5VTEw7CkBAIC01ODQsMTcgKzU4NCwxNyBAQAogICAgICAgICB9CiAgICAg fQogICAgIGlmICh0YXJnZXRfcmZkcykKLSAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X3JmZHMs IHJmZF9wLCBvayA/IHNpemVvZih0YXJnZXRfbG9uZykgKiBuIDogMCk7CisgICAgICAgIHVubG9j a191c2VyKHRhcmdldF9yZmRzLCByZmRfcCwgb2sgPyBzaXplb2YoYWJpX2xvbmcpICogbiA6IDAp OwogICAgIGlmICh0YXJnZXRfd2ZkcykKLSAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X3dmZHMs IHdmZF9wLCBvayA/IHNpemVvZih0YXJnZXRfbG9uZykgKiBuIDogMCk7CisgICAgICAgIHVubG9j a191c2VyKHRhcmdldF93ZmRzLCB3ZmRfcCwgb2sgPyBzaXplb2YoYWJpX2xvbmcpICogbiA6IDAp OwogICAgIGlmICh0YXJnZXRfZWZkcykKLSAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X2VmZHMs IGVmZF9wLCBvayA/IHNpemVvZih0YXJnZXRfbG9uZykgKiBuIDogMCk7CisgICAgICAgIHVubG9j a191c2VyKHRhcmdldF9lZmRzLCBlZmRfcCwgb2sgPyBzaXplb2YoYWJpX2xvbmcpICogbiA6IDAp OwogCiAgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19o b3N0X3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBs ZW4pCiB7CiAgICAgc3RydWN0IHRhcmdldF9zb2NrYWRkciAqdGFyZ2V0X3NhZGRyOwpAQCAtNjA1 LDcgKzYwNSw3IEBACiAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X3NhZGRyLCB0YXJnZXRfYWRkciwg MCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCitzdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRf c29ja2FkZHIoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuKQogewpAQCAtNzA2LDEw ICs3MDYsMTAgQEAKICAgICBtc2doLT5tc2dfY29udHJvbGxlbiA9IHRzd2FwbChzcGFjZSk7CiB9 CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19zZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZl bCwgaW50IG9wdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRf dWxvbmcgb3B0dmFsLCBzb2NrbGVuX3Qgb3B0bGVuKQorc3RhdGljIGFiaV9sb25nIGRvX3NldHNv Y2tvcHQoaW50IHNvY2tmZCwgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyBvcHR2YWwsIHNvY2tsZW5fdCBvcHRsZW4pCiB7Ci0g ICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICBpbnQgdmFsOwogCiAg ICAgc3dpdGNoKGxldmVsKSB7CkBAIC04MjcsMTAgKzgyNywxMCBAQAogICAgIHJldHVybiByZXQ7 CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19nZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBs ZXZlbCwgaW50IG9wdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgb3B0dmFsLCB0YXJnZXRfdWxvbmcgb3B0bGVuKQorc3RhdGljIGFiaV9sb25nIGRv X2dldHNvY2tvcHQoaW50IHNvY2tmZCwgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBvcHR2YWwsIGFiaV91bG9uZyBvcHRsZW4p CiB7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICBpbnQgbGVu LCBsdiwgdmFsOwogCiAgICAgc3dpdGNoKGxldmVsKSB7CkBAIC05MTYsMTEgKzkxNiwxMSBAQAog ICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGxvY2tfaW92ZWMoc3RydWN0IGlvdmVj ICp2ZWMsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKK3N0YXRpYyB2b2lkIGxvY2tfaW92ZWMo c3RydWN0IGlvdmVjICp2ZWMsIGFiaV91bG9uZyB0YXJnZXRfYWRkciwKICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGNvdW50LCBpbnQgY29weSkKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X2lvdmVj ICp0YXJnZXRfdmVjOwotICAgIHRhcmdldF91bG9uZyBiYXNlOworICAgIGFiaV91bG9uZyBiYXNl OwogICAgIGludCBpOwogCiAgICAgdGFyZ2V0X3ZlYyA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwg Y291bnQgKiBzaXplb2Yoc3RydWN0IHRhcmdldF9pb3ZlYyksIDEpOwpAQCAtOTMyLDExICs5MzIs MTEgQEAKICAgICB1bmxvY2tfdXNlciAodGFyZ2V0X3ZlYywgdGFyZ2V0X2FkZHIsIDApOwogfQog Ci1zdGF0aWMgdm9pZCB1bmxvY2tfaW92ZWMoc3RydWN0IGlvdmVjICp2ZWMsIHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciwKK3N0YXRpYyB2b2lkIHVubG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZl YywgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj b3VudCwgaW50IGNvcHkpCiB7CiAgICAgc3RydWN0IHRhcmdldF9pb3ZlYyAqdGFyZ2V0X3ZlYzsK LSAgICB0YXJnZXRfdWxvbmcgYmFzZTsKKyAgICBhYmlfdWxvbmcgYmFzZTsKICAgICBpbnQgaTsK IAogICAgIHRhcmdldF92ZWMgPSBsb2NrX3VzZXIodGFyZ2V0X2FkZHIsIGNvdW50ICogc2l6ZW9m KHN0cnVjdCB0YXJnZXRfaW92ZWMpLCAxKTsKQEAgLTk0Nyw3ICs5NDcsNyBAQAogICAgIHVubG9j a191c2VyICh0YXJnZXRfdmVjLCB0YXJnZXRfYWRkciwgMCk7CiB9CiAKLXN0YXRpYyB0YXJnZXRf bG9uZyBkb19zb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCkKK3N0YXRp YyBhYmlfbG9uZyBkb19zb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCkK IHsKICNpZiBkZWZpbmVkKFRBUkdFVF9NSVBTKQogICAgIHN3aXRjaCh0eXBlKSB7CkBAIC05NzQs OCArOTc0LDggQEAKICAgICByZXR1cm4gZ2V0X2Vycm5vKHNvY2tldChkb21haW4sIHR5cGUsIHBy b3RvY29sKSk7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19iaW5kKGludCBzb2NrZmQsIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ts ZW5fdCBhZGRybGVuKQorc3RhdGljIGFiaV9sb25nIGRvX2JpbmQoaW50IHNvY2tmZCwgYWJpX3Vs b25nIHRhcmdldF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFkZHJs ZW4pCiB7CiAgICAgdm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsKIApAQCAtOTgzLDggKzk4 Myw4IEBACiAgICAgcmV0dXJuIGdldF9lcnJubyhiaW5kKHNvY2tmZCwgYWRkciwgYWRkcmxlbikp OwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fY29ubmVjdChpbnQgc29ja2ZkLCB0YXJnZXRf dWxvbmcgdGFyZ2V0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVu X3QgYWRkcmxlbikKK3N0YXRpYyBhYmlfbG9uZyBkb19jb25uZWN0KGludCBzb2NrZmQsIGFiaV91 bG9uZyB0YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBh ZGRybGVuKQogewogICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxlbik7CiAKQEAgLTk5Miwx NSArOTkyLDE1IEBACiAgICAgcmV0dXJuIGdldF9lcnJubyhjb25uZWN0KHNvY2tmZCwgYWRkciwg YWRkcmxlbikpOwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fc2VuZHJlY3Ztc2coaW50IGZk LCB0YXJnZXRfdWxvbmcgdGFyZ2V0X21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgZmxhZ3MsIGludCBzZW5kKQorc3RhdGljIGFiaV9sb25nIGRvX3NlbmRyZWN2bXNn KGludCBmZCwgYWJpX3Vsb25nIHRhcmdldF9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGZsYWdzLCBpbnQgc2VuZCkKIHsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAg YWJpX2xvbmcgcmV0OwogICAgIHN0cnVjdCB0YXJnZXRfbXNnaGRyICptc2dwOwogICAgIHN0cnVj dCBtc2doZHIgbXNnOwogICAgIGludCBjb3VudDsKICAgICBzdHJ1Y3QgaW92ZWMgKnZlYzsKLSAg ICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3ZlYzsKKyAgICBhYmlfdWxvbmcgdGFyZ2V0X3ZlYzsKIAog ICAgIGxvY2tfdXNlcl9zdHJ1Y3QobXNncCwgdGFyZ2V0X21zZywgMSk7CiAgICAgaWYgKG1zZ3At Pm1zZ19uYW1lKSB7CkBAIC0xMDM1LDEyICsxMDM1LDEyIEBACiAgICAgcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIHRhcmdldF9sb25nIGRvX2FjY2VwdChpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRybGVuKQorc3RhdGljIGFiaV9sb25nIGRvX2FjY2VwdChpbnQgZmQsIGFiaV91bG9uZyB0 YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9h ZGRybGVuKQogewogICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVu KTsKICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOwotICAgIHRhcmdldF9sb25nIHJl dDsKKyAgICBhYmlfbG9uZyByZXQ7CiAKICAgICByZXQgPSBnZXRfZXJybm8oYWNjZXB0KGZkLCBh ZGRyLCAmYWRkcmxlbikpOwogICAgIGlmICghaXNfZXJyb3IocmV0KSkgewpAQCAtMTA1MCwxMiAr MTA1MCwxMiBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19n ZXRwZWVybmFtZShpbnQgZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCitzdGF0 aWMgYWJpX2xvbmcgZG9fZ2V0cGVlcm5hbWUoaW50IGZkLCBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVu KQogewogICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsKICAg ICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOwotICAgIHRhcmdldF9sb25nIHJldDsKKyAg ICBhYmlfbG9uZyByZXQ7CiAKICAgICByZXQgPSBnZXRfZXJybm8oZ2V0cGVlcm5hbWUoZmQsIGFk ZHIsICZhZGRybGVuKSk7CiAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7CkBAIC0xMDY1LDEyICsx MDY1LDEyIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2dl dHNvY2tuYW1lKGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikKK3N0YXRp YyBhYmlfbG9uZyBkb19nZXRzb2NrbmFtZShpbnQgZmQsIGFiaV91bG9uZyB0YXJnZXRfYWRkciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4p CiB7CiAgICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOwogICAg IHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxlbik7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAg IGFiaV9sb25nIHJldDsKIAogICAgIHJldCA9IGdldF9lcnJubyhnZXRzb2NrbmFtZShmZCwgYWRk ciwgJmFkZHJsZW4pKTsKICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsKQEAgLTEwODAsMTEgKzEw ODAsMTEgQEAKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fc29j a2V0cGFpcihpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF90YWIpCitzdGF0aWMgYWJp X2xvbmcgZG9fc29ja2V0cGFpcihpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF90YWIpCiB7CiAg ICAgaW50IHRhYlsyXTsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0Owog CiAgICAgcmV0ID0gZ2V0X2Vycm5vKHNvY2tldHBhaXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwg dGFiKSk7CiAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7CkBAIC0xMDk0LDEyICsxMDk0LDEyIEBA CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX3NlbmR0byhpbnQg ZmQsIHRhcmdldF91bG9uZyBtc2csIHNpemVfdCBsZW4sIGludCBmbGFncywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLCBzb2NrbGVuX3QgYWRk cmxlbikKK3N0YXRpYyBhYmlfbG9uZyBkb19zZW5kdG8oaW50IGZkLCBhYmlfdWxvbmcgbXNnLCBz aXplX3QgbGVuLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9u ZyB0YXJnZXRfYWRkciwgc29ja2xlbl90IGFkZHJsZW4pCiB7CiAgICAgdm9pZCAqYWRkcjsKICAg ICB2b2lkICpob3N0X21zZzsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0 OwogCiAgICAgaG9zdF9tc2cgPSBsb2NrX3VzZXIobXNnLCBsZW4sIDEpOwogICAgIGlmICh0YXJn ZXRfYWRkcikgewpAQCAtMTExMywxNCArMTExMywxNCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyB0YXJnZXRfbG9uZyBkb19yZWN2ZnJvbShpbnQgZmQsIHRhcmdldF91bG9uZyBtc2cs IHNpemVfdCBsZW4sIGludCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQorc3RhdGljIGFiaV9sb25nIGRvX3JlY3Zmcm9t KGludCBmZCwgYWJpX3Vsb25nIG1zZywgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCiB7CiAgICAgc29ja2xlbl90 IGFkZHJsZW47CiAgICAgdm9pZCAqYWRkcjsKICAgICB2b2lkICpob3N0X21zZzsKLSAgICB0YXJn ZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0OwogCiAgICAgaG9zdF9tc2cgPSBsb2NrX3Vz ZXIobXNnLCBsZW4sIDApOwogICAgIGlmICh0YXJnZXRfYWRkcikgewpAQCAtMTE0NCwxMCArMTE0 NCwxMCBAQAogfQogCiAjaWZkZWYgVEFSR0VUX05SX3NvY2tldGNhbGwKLXN0YXRpYyB0YXJnZXRf bG9uZyBkb19zb2NrZXRjYWxsKGludCBudW0sIHRhcmdldF91bG9uZyB2cHRyKQorc3RhdGljIGFi aV9sb25nIGRvX3NvY2tldGNhbGwoaW50IG51bSwgYWJpX3Vsb25nIHZwdHIpCiB7Ci0gICAgdGFy Z2V0X2xvbmcgcmV0OwotICAgIGNvbnN0IGludCBuID0gc2l6ZW9mKHRhcmdldF91bG9uZyk7Cisg ICAgYWJpX2xvbmcgcmV0OworICAgIGNvbnN0IGludCBuID0gc2l6ZW9mKGFiaV91bG9uZyk7CiAK ICAgICBzd2l0Y2gobnVtKSB7CiAgICAgY2FzZSBTT0NLT1Bfc29ja2V0OgpAQCAtMTE2MSw3ICsx MTYxLDcgQEAKICAgICBjYXNlIFNPQ0tPUF9iaW5kOgogCXsKICAgICAgICAgICAgIGludCBzb2Nr ZmQgPSB0Z2V0bCh2cHRyKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciA9 IHRnZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciA9IHRn ZXRsKHZwdHIgKyBuKTsKICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldGwodnB0 ciArIDIgKiBuKTsKICAgICAgICAgICAgIHJldCA9IGRvX2JpbmQoc29ja2ZkLCB0YXJnZXRfYWRk ciwgYWRkcmxlbik7CiAgICAgICAgIH0KQEAgLTExNjksNyArMTE2OSw3IEBACiAgICAgY2FzZSBT T0NLT1BfY29ubmVjdDoKICAgICAgICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRs KHZwdHIpOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0 ciArIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0ciAr IG4pOwogICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4p OwogICAgICAgICAgICAgcmV0ID0gZG9fY29ubmVjdChzb2NrZmQsIHRhcmdldF9hZGRyLCBhZGRy bGVuKTsKICAgICAgICAgfQpAQCAtMTE4NCwyNCArMTE4NCwyNCBAQAogICAgIGNhc2UgU09DS09Q X2FjY2VwdDoKICAgICAgICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIp OwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0ciArIG4p OwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuID0gdGdldGwodnB0ciAr IDIgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIg KyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcmxlbiA9IHRnZXRsKHZwdHIg KyAyICogbik7CiAgICAgICAgICAgICByZXQgPSBkb19hY2NlcHQoc29ja2ZkLCB0YXJnZXRfYWRk ciwgdGFyZ2V0X2FkZHJsZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug U09DS09QX2dldHNvY2tuYW1lOgogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0g dGdldGwodnB0cik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0 bCh2cHRyICsgbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0 Z2V0bCh2cHRyICsgMiAqIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyID0g dGdldGwodnB0ciArIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVuID0g dGdldGwodnB0ciArIDIgKiBuKTsKICAgICAgICAgICAgIHJldCA9IGRvX2dldHNvY2tuYW1lKHNv Y2tmZCwgdGFyZ2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsKICAgICAgICAgfQogICAgICAgICBi cmVhazsKICAgICBjYXNlIFNPQ0tPUF9nZXRwZWVybmFtZToKICAgICAgICAgewogICAgICAgICAg ICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRh cmdldF9hZGRyID0gdGdldGwodnB0ciArIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRh cmdldF9hZGRybGVuID0gdGdldGwodnB0ciArIDIgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9u ZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0 YXJnZXRfYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyAyICogbik7CiAgICAgICAgICAgICByZXQgPSBk b19nZXRwZWVybmFtZShzb2NrZmQsIHRhcmdldF9hZGRyLCB0YXJnZXRfYWRkcmxlbik7CiAgICAg ICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMjEwLDE0ICsxMjEwLDE0IEBACiAgICAgICAgICAg ICBpbnQgZG9tYWluID0gdGdldGwodnB0cik7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHRnZXRs KHZwdHIgKyBuKTsKICAgICAgICAgICAgIGludCBwcm90b2NvbCA9IHRnZXRsKHZwdHIgKyAyICog bik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFiID0gdGdldGwodnB0ciArIDMgKiBuKTsK KyAgICAgICAgICAgIGFiaV91bG9uZyB0YWIgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwogICAgICAg ICAgICAgcmV0ID0gZG9fc29ja2V0cGFpcihkb21haW4sIHR5cGUsIHByb3RvY29sLCB0YWIpOwog ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU09DS09QX3NlbmQ6CiAgICAgICAg IHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKLSAgICAgICAgICAgIHRh cmdldF91bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CisgICAgICAgICAgICBhYmlfdWxvbmcg bXNnID0gdGdldGwodnB0ciArIG4pOwogICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHRnZXRsKHZw dHIgKyAyICogbik7CiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSB0Z2V0bCh2cHRyICsgMyAqIG4p OwogICAgICAgICAgICAgcmV0ID0gZG9fc2VuZHRvKHNvY2tmZCwgbXNnLCBsZW4sIGZsYWdzLCAw LCAwKTsKQEAgLTEyMjYsNyArMTIyNiw3IEBACiAgICAgY2FzZSBTT0NLT1BfcmVjdjoKICAgICAg ICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwotICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIG1zZyA9IHRnZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9u ZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CiAgICAgICAgICAgICBzaXplX3QgbGVuID0gdGdldGwo dnB0ciArIDIgKiBuKTsKICAgICAgICAgICAgIGludCBmbGFncyA9IHRnZXRsKHZwdHIgKyAzICog bik7CiAgICAgICAgICAgICByZXQgPSBkb19yZWN2ZnJvbShzb2NrZmQsIG1zZywgbGVuLCBmbGFn cywgMCwgMCk7CkBAIC0xMjM1LDEwICsxMjM1LDEwIEBACiAgICAgY2FzZSBTT0NLT1Bfc2VuZHRv OgogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAg ICAgICAgICB0YXJnZXRfdWxvbmcgbXNnID0gdGdldGwodnB0ciArIG4pOworICAgICAgICAgICAg YWJpX3Vsb25nIG1zZyA9IHRnZXRsKHZwdHIgKyBuKTsKICAgICAgICAgICAgIHNpemVfdCBsZW4g PSB0Z2V0bCh2cHRyICsgMiAqIG4pOwogICAgICAgICAgICAgaW50IGZsYWdzID0gdGdldGwodnB0 ciArIDMgKiBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBhZGRyID0gdGdldGwodnB0ciAr IDQgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRyID0gdGdldGwodnB0ciArIDQgKiBu KTsKICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldGwodnB0ciArIDUgKiBuKTsK ICAgICAgICAgICAgIHJldCA9IGRvX3NlbmR0byhzb2NrZmQsIG1zZywgbGVuLCBmbGFncywgYWRk ciwgYWRkcmxlbik7CiAgICAgICAgIH0KQEAgLTEyNDYsMTEgKzEyNDYsMTEgQEAKICAgICBjYXNl IFNPQ0tPUF9yZWN2ZnJvbToKICAgICAgICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRn ZXRsKHZwdHIpOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG1zZyA9IHRnZXRsKHZwdHIgKyBu KTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CiAgICAgICAg ICAgICBzaXplX3QgbGVuID0gdGdldGwodnB0ciArIDIgKiBuKTsKICAgICAgICAgICAgIGludCBm bGFncyA9IHRnZXRsKHZwdHIgKyAzICogbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRk ciA9IHRnZXRsKHZwdHIgKyA0ICogbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRkcmxl biA9IHRnZXRsKHZwdHIgKyA1ICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgYWRkciA9IHRn ZXRsKHZwdHIgKyA0ICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgYWRkcmxlbiA9IHRnZXRs KHZwdHIgKyA1ICogbik7CiAgICAgICAgICAgICByZXQgPSBkb19yZWN2ZnJvbShzb2NrZmQsIG1z ZywgbGVuLCBmbGFncywgYWRkciwgYWRkcmxlbik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CkBAIC0xMjY2LDcgKzEyNjYsNyBAQAogICAgIGNhc2UgU09DS09QX3JlY3Ztc2c6CiAgICAgICAg IHsKICAgICAgICAgICAgIGludCBmZDsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRf bXNnOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9tc2c7CiAgICAgICAgICAgICBpbnQg ZmxhZ3M7CiAKICAgICAgICAgICAgIGZkID0gdGdldGwodnB0cik7CkBAIC0xMjgyLDcgKzEyODIs NyBAQAogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwogICAgICAgICAgICAg aW50IGxldmVsID0gdGdldGwodnB0ciArIG4pOwogICAgICAgICAgICAgaW50IG9wdG5hbWUgPSB0 Z2V0bCh2cHRyICsgMiAqIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG9wdHZhbCA9IHRn ZXRsKHZwdHIgKyAzICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgb3B0dmFsID0gdGdldGwo dnB0ciArIDMgKiBuKTsKICAgICAgICAgICAgIHNvY2tsZW5fdCBvcHRsZW4gPSB0Z2V0bCh2cHRy ICsgNCAqIG4pOwogCiAgICAgICAgICAgICByZXQgPSBkb19zZXRzb2Nrb3B0KHNvY2tmZCwgbGV2 ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKQEAgLTEyOTMsOCArMTI5Myw4IEBACiAgICAg ICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7CiAgICAgICAgICAgICBpbnQgbGV2ZWwg PSB0Z2V0bCh2cHRyICsgbik7CiAgICAgICAgICAgICBpbnQgb3B0bmFtZSA9IHRnZXRsKHZwdHIg KyAyICogbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgb3B0dmFsID0gdGdldGwodnB0ciAr IDMgKiBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBwb3B0bGVuID0gdGdldGwodnB0ciAr IDQgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBvcHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAq IG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHBvcHRsZW4gPSB0Z2V0bCh2cHRyICsgNCAqIG4p OwogCiAgICAgICAgICAgICByZXQgPSBkb19nZXRzb2Nrb3B0KHNvY2tmZCwgbGV2ZWwsIG9wdG5h bWUsIG9wdHZhbCwgcG9wdGxlbik7CiAgICAgICAgIH0KQEAgLTEzMTgsMzMgKzEzMTgsMzMgQEAK IAogc3RydWN0IHRhcmdldF9pcGNfcGVybQogewotICAgIHRhcmdldF9sb25nIF9fa2V5OwotICAg IHRhcmdldF91bG9uZyB1aWQ7Ci0gICAgdGFyZ2V0X3Vsb25nIGdpZDsKLSAgICB0YXJnZXRfdWxv bmcgY3VpZDsKLSAgICB0YXJnZXRfdWxvbmcgY2dpZDsKKyAgICBhYmlfbG9uZyBfX2tleTsKKyAg ICBhYmlfdWxvbmcgdWlkOworICAgIGFiaV91bG9uZyBnaWQ7CisgICAgYWJpX3Vsb25nIGN1aWQ7 CisgICAgYWJpX3Vsb25nIGNnaWQ7CiAgICAgdW5zaWduZWQgc2hvcnQgaW50IG1vZGU7CiAgICAg dW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMTsKICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19zZXE7 CiAgICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMjsKLSAgICB0YXJnZXRfdWxvbmcgX191bnVz ZWQxOwotICAgIHRhcmdldF91bG9uZyBfX3VudXNlZDI7CisgICAgYWJpX3Vsb25nIF9fdW51c2Vk MTsKKyAgICBhYmlfdWxvbmcgX191bnVzZWQyOwogfTsKIAogc3RydWN0IHRhcmdldF9zZW1pZF9k cwogewogICBzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtIHNlbV9wZXJtOwotICB0YXJnZXRfdWxvbmcg c2VtX290aW1lOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQxOwotICB0YXJnZXRfdWxvbmcgc2Vt X2N0aW1lOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQyOwotICB0YXJnZXRfdWxvbmcgc2VtX25z ZW1zOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQzOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQ0 OworICBhYmlfdWxvbmcgc2VtX290aW1lOworICBhYmlfdWxvbmcgX191bnVzZWQxOworICBhYmlf dWxvbmcgc2VtX2N0aW1lOworICBhYmlfdWxvbmcgX191bnVzZWQyOworICBhYmlfdWxvbmcgc2Vt X25zZW1zOworICBhYmlfdWxvbmcgX191bnVzZWQzOworICBhYmlfdWxvbmcgX191bnVzZWQ0Owog fTsKIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X2lwY19wZXJtKHN0cnVjdCBp cGNfcGVybSAqaG9zdF9pcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyKQogewogICAgIHN0cnVjdCB0 YXJnZXRfaXBjX3Blcm0gKnRhcmdldF9pcDsKICAgICBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2RzICp0 YXJnZXRfc2Q7CkBAIC0xMzYwLDcgKzEzNjAsNyBAQAogICAgIHVubG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGhvc3Rf dG9fdGFyZ2V0X2lwY19wZXJtKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKK3N0YXRpYyBpbmxp bmUgdm9pZCBob3N0X3RvX3RhcmdldF9pcGNfcGVybShhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlwY19wZXJt ICpob3N0X2lwKQogewogICAgIHN0cnVjdCB0YXJnZXRfaXBjX3Blcm0gKnRhcmdldF9pcDsKQEAg LTEzNzgsNyArMTM3OCw3IEBACiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9z dF9zZW1pZF9kcyhzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIp CiB7CiAgICAgc3RydWN0IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3NkOwogCkBAIC0xMzkwLDcg KzEzOTAsNyBAQAogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRy LCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbWlkX2RzKHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwKK3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3Rhcmdl dF9zZW1pZF9kcyhhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpob3N0X3NkKQogewogICAgIHN0 cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsKQEAgLTE0MTEsMTMgKzE0MTEsMTMgQEAK IAogdW5pb24gdGFyZ2V0X3NlbXVuIHsKIAlpbnQgdmFsOwotCXRhcmdldF9sb25nIGJ1ZjsKKwlh YmlfbG9uZyBidWY7CiAJdW5zaWduZWQgc2hvcnQgaW50ICphcnJheTsKIH07CiAKIHN0YXRpYyBp bmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9zZW11bihpbnQgY21kLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNlbXVuICpob3N0X3N1LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0 X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNl bWlkX2RzICpkcykKIHsKICAgICB1bmlvbiB0YXJnZXRfc2VtdW4gKnRhcmdldF9zdTsKQEAgLTE0 NDgsNyArMTQ0OCw3IEBACiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9z ZW11bihpbnQgY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5pb24gc2VtdW4gKmhvc3Rfc3UsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpkcykKIHsKQEAgLTE0NzgsMTMg KzE0NzgsMTMgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X2xvbmcgZG9fc2Vt Y3RsKGludCBmaXJzdCwgaW50IHNlY29uZCwgaW50IHRoaXJkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgcHRyKQorc3RhdGljIGlubGluZSBhYmlfbG9u ZyBkb19zZW1jdGwoaW50IGZpcnN0LCBpbnQgc2Vjb25kLCBpbnQgdGhpcmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBwdHIpCiB7CiAgICAgdW5pb24gc2VtdW4g YXJnOwogICAgIHN0cnVjdCBzZW1pZF9kcyBkc2FyZzsKICAgICBpbnQgY21kID0gdGhpcmQmMHhm ZjsKLSAgICB0YXJnZXRfbG9uZyByZXQgPSAwOworICAgIGFiaV9sb25nIHJldCA9IDA7CiAKICAg ICBzd2l0Y2goIGNtZCApIHsKIAljYXNlIEdFVFZBTDoKQEAgLTE1MjcsMjMgKzE1MjcsMjMgQEAK IHN0cnVjdCB0YXJnZXRfbXNxaWRfZHMKIHsKICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSBtc2df cGVybTsKLSAgdGFyZ2V0X3Vsb25nIG1zZ19zdGltZTsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2Vk MTsKLSAgdGFyZ2V0X3Vsb25nIG1zZ19ydGltZTsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkMjsK LSAgdGFyZ2V0X3Vsb25nIG1zZ19jdGltZTsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkMzsKLSAg dGFyZ2V0X3Vsb25nIF9fbXNnX2NieXRlczsKLSAgdGFyZ2V0X3Vsb25nIG1zZ19xbnVtOwotICB0 YXJnZXRfdWxvbmcgbXNnX3FieXRlczsKLSAgdGFyZ2V0X3Vsb25nIG1zZ19sc3BpZDsKLSAgdGFy Z2V0X3Vsb25nIG1zZ19scnBpZDsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkNDsKLSAgdGFyZ2V0 X3Vsb25nIF9fdW51c2VkNTsKKyAgYWJpX3Vsb25nIG1zZ19zdGltZTsKKyAgYWJpX3Vsb25nIF9f dW51c2VkMTsKKyAgYWJpX3Vsb25nIG1zZ19ydGltZTsKKyAgYWJpX3Vsb25nIF9fdW51c2VkMjsK KyAgYWJpX3Vsb25nIG1zZ19jdGltZTsKKyAgYWJpX3Vsb25nIF9fdW51c2VkMzsKKyAgYWJpX3Vs b25nIF9fbXNnX2NieXRlczsKKyAgYWJpX3Vsb25nIG1zZ19xbnVtOworICBhYmlfdWxvbmcgbXNn X3FieXRlczsKKyAgYWJpX3Vsb25nIG1zZ19sc3BpZDsKKyAgYWJpX3Vsb25nIG1zZ19scnBpZDsK KyAgYWJpX3Vsb25nIF9fdW51c2VkNDsKKyAgYWJpX3Vsb25nIF9fdW51c2VkNTsKIH07CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9tc3FpZF9kcyhzdHJ1Y3QgbXNxaWRfZHMg Kmhvc3RfbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X3Vsb25nIHRhcmdldF9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcikKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X21z cWlkX2RzICp0YXJnZXRfbWQ7CiAKQEAgLTE1NjAsNyArMTU2MCw3IEBACiAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0X2FkZHIsIDApOwogfQogCi1zdGF0aWMgaW5saW5l IHZvaWQgaG9zdF90b190YXJnZXRfbXNxaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAor c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKGFiaV91bG9uZyB0YXJn ZXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbXNxaWRfZHMgKmhvc3RfbWQpCiB7CiAgICAgc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFy Z2V0X21kOwpAQCAtMTU3OCwxMSArMTU3OCwxMSBAQAogICAgIHVubG9ja191c2VyX3N0cnVjdCh0 YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAxKTsKIH0KIAotc3RhdGljIGlubGluZSB0YXJnZXRfbG9u ZyBkb19tc2djdGwoaW50IGZpcnN0LCBpbnQgc2Vjb25kLCB0YXJnZXRfbG9uZyBwdHIpCitzdGF0 aWMgaW5saW5lIGFiaV9sb25nIGRvX21zZ2N0bChpbnQgZmlyc3QsIGludCBzZWNvbmQsIGFiaV9s b25nIHB0cikKIHsKICAgICBzdHJ1Y3QgbXNxaWRfZHMgZHNhcmc7CiAgICAgaW50IGNtZCA9IHNl Y29uZCYweGZmOwotICAgIHRhcmdldF9sb25nIHJldCA9IDA7CisgICAgYWJpX2xvbmcgcmV0ID0g MDsKICAgICBzd2l0Y2goIGNtZCApIHsKICAgICBjYXNlIElQQ19TVEFUOgogICAgIGNhc2UgSVBD X1NFVDoKQEAgLTE1OTYsMTYgKzE1OTYsMTYgQEAKIH0KIAogc3RydWN0IHRhcmdldF9tc2didWYg ewotCXRhcmdldF91bG9uZyBtdHlwZTsKKwlhYmlfdWxvbmcgbXR5cGU7CiAJY2hhcgltdGV4dFsx XTsKIH07CiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X2xvbmcgZG9fbXNnc25kKGludCBtc3FpZCwg dGFyZ2V0X2xvbmcgbXNncCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBtc2dzeiwgaW50IG1zZ2ZsZykKK3N0YXRpYyBpbmxpbmUgYWJpX2xvbmcgZG9f bXNnc25kKGludCBtc3FpZCwgYWJpX2xvbmcgbXNncCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBtc2dzeiwgaW50IG1zZ2ZsZykKIHsKICAgICBzdHJ1Y3Qg dGFyZ2V0X21zZ2J1ZiAqdGFyZ2V0X21iOwogICAgIHN0cnVjdCBtc2didWYgKmhvc3RfbWI7Ci0g ICAgdGFyZ2V0X2xvbmcgcmV0ID0gMDsKKyAgICBhYmlfbG9uZyByZXQgPSAwOwogCiAgICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfbWIsbXNncCwwKTsKICAgICBob3N0X21iID0gbWFsbG9jKG1z Z3N6K3NpemVvZihsb25nKSk7CkBAIC0xNjE4LDEzICsxNjE4LDEzIEBACiAgICAgcmV0dXJuIHJl dDsKIH0KIAotc3RhdGljIGlubGluZSB0YXJnZXRfbG9uZyBkb19tc2dyY3YoaW50IG1zcWlkLCB0 YXJnZXRfbG9uZyBtc2dwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG1zZ3N6LCBpbnQgbXNndHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBtc2dmbGcpCitzdGF0aWMgaW5saW5lIGFiaV9sb25nIGRvX21zZ3Jjdihp bnQgbXNxaWQsIGFiaV9sb25nIG1zZ3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbXNnc3osIGludCBtc2d0eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG1zZ2ZsZykKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X21zZ2J1ZiAqdGFy Z2V0X21iOwogICAgIHN0cnVjdCBtc2didWYgKmhvc3RfbWI7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0 ID0gMDsKKyAgICBhYmlfbG9uZyByZXQgPSAwOwogCiAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfbWIsIG1zZ3AsIDApOwogICAgIGhvc3RfbWIgPSBtYWxsb2MobXNnc3orc2l6ZW9mKGxvbmcp KTsKQEAgLTE2MzksMTIgKzE2MzksMTIgQEAKIH0KIAogLyogPz8/IFRoaXMgb25seSB3b3JrcyB3 aXRoIGxpbmVhciBtYXBwaW5ncy4gICovCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9faXBjKHVuc2ln bmVkIGludCBjYWxsLCBpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz ZWNvbmQsIGludCB0aGlyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcg cHRyLCB0YXJnZXRfbG9uZyBmaWZ0aCkKK3N0YXRpYyBhYmlfbG9uZyBkb19pcGModW5zaWduZWQg aW50IGNhbGwsIGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwg aW50IHRoaXJkLAorICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBwdHIsIGFiaV9sb25n IGZpZnRoKQogewogICAgIGludCB2ZXJzaW9uOwotICAgIHRhcmdldF9sb25nIHJldCA9IDA7Cisg ICAgYWJpX2xvbmcgcmV0ID0gMDsKICAgICB1bnNpZ25lZCBsb25nIHJhZGRyOwogICAgIHN0cnVj dCBzaG1pZF9kcyBzaG1faW5mbzsKICAgICBpbnQgaTsKQEAgLTE3MjIsNyArMTcyMiw3IEBACiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAJICAgIH0KIAl9Ci0JaWYgKHB1dF91c2VyKHJhZGRyLCAo dGFyZ2V0X3Vsb25nICopdGhpcmQpKQorCWlmIChwdXRfdXNlcihyYWRkciwgKGFiaV91bG9uZyAq KXRoaXJkKSkKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICByZXQgPSAwOwog CWJyZWFrOwpAQCAtMTgwMywxMSArMTgwMywxMSBAQAogfTsKIAogLyogPz8/IEltcGxlbWVudCBw cm9wZXIgbG9ja2luZyBmb3IgaW9jdGxzLiAgKi8KLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19pb2N0 bChpbnQgZmQsIHRhcmdldF9sb25nIGNtZCwgdGFyZ2V0X2xvbmcgYXJnKQorc3RhdGljIGFiaV9s b25nIGRvX2lvY3RsKGludCBmZCwgYWJpX2xvbmcgY21kLCBhYmlfbG9uZyBhcmcpCiB7CiAgICAg Y29uc3QgSU9DVExFbnRyeSAqaWU7CiAgICAgY29uc3QgYXJndHlwZSAqYXJnX3R5cGU7Ci0gICAg dGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICB1aW50OF90IGJ1Zl90ZW1w W01BWF9TVFJVQ1RfU0laRV07CiAgICAgaW50IHRhcmdldF9zaXplOwogICAgIHZvaWQgKmFyZ3B0 cjsKQEAgLTIwODgsNyArMjA4OCw3IEBACiAvKiBOT1RFOiB0aGVyZSBpcyByZWFsbHkgb25lIExE VCBmb3IgYWxsIHRoZSB0aHJlYWRzICovCiB1aW50OF90ICpsZHRfdGFibGU7CiAKLXN0YXRpYyBp bnQgcmVhZF9sZHQodGFyZ2V0X3Vsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBieXRlY291bnQpCitz dGF0aWMgaW50IHJlYWRfbGR0KGFiaV91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0ZWNvdW50 KQogewogICAgIGludCBzaXplOwogICAgIHZvaWQgKnA7CkBAIC0yMTA3LDcgKzIxMDcsNyBAQAog CiAvKiBYWFg6IGFkZCBsb2NraW5nIHN1cHBvcnQgKi8KIHN0YXRpYyBpbnQgd3JpdGVfbGR0KENQ VVg4NlN0YXRlICplbnYsCi0gICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgcHRyLCB1 bnNpZ25lZCBsb25nIGJ5dGVjb3VudCwgaW50IG9sZG1vZGUpCisgICAgICAgICAgICAgICAgICAg ICBhYmlfdWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCwgaW50IG9sZG1vZGUpCiB7 CiAgICAgc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zIGxkdF9pbmZvOwogICAgIHN0cnVj dCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyAqdGFyZ2V0X2xkdF9pbmZvOwpAQCAtMjE4OCw3ICsy MTg4LDcgQEAKIH0KIAogLyogc3BlY2lmaWMgYW5kIHdlaXJkIGkzODYgc3lzY2FsbHMgKi8KLWlu dCBkb19tb2RpZnlfbGR0KENQVVg4NlN0YXRlICplbnYsIGludCBmdW5jLCB0YXJnZXRfdWxvbmcg cHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCkKK2ludCBkb19tb2RpZnlfbGR0KENQVVg4NlN0 YXRlICplbnYsIGludCBmdW5jLCBhYmlfdWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3Vu dCkKIHsKICAgICBpbnQgcmV0ID0gLUVOT1NZUzsKIApAQCAtMjIyMCw3ICsyMjIwLDcgQEAKICAg ICByZXR1cm4gMDsKIH0KIAotaW50IGRvX2ZvcmsoQ1BVU3RhdGUgKmVudiwgdW5zaWduZWQgaW50 IGZsYWdzLCB0YXJnZXRfdWxvbmcgbmV3c3ApCitpbnQgZG9fZm9yayhDUFVTdGF0ZSAqZW52LCB1 bnNpZ25lZCBpbnQgZmxhZ3MsIGFiaV91bG9uZyBuZXdzcCkKIHsKICAgICBpbnQgcmV0OwogICAg IFRhc2tTdGF0ZSAqdHM7CkBAIC0yMzEwLDEzICsyMzEwLDEzIEBACiAgICAgcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2ZjbnRsKGludCBmZCwgaW50IGNtZCwgdGFyZ2V0 X3Vsb25nIGFyZykKK3N0YXRpYyBhYmlfbG9uZyBkb19mY250bChpbnQgZmQsIGludCBjbWQsIGFi aV91bG9uZyBhcmcpCiB7CiAgICAgc3RydWN0IGZsb2NrIGZsOwogICAgIHN0cnVjdCB0YXJnZXRf ZmxvY2sgKnRhcmdldF9mbDsKICAgICBzdHJ1Y3QgZmxvY2s2NCBmbDY0OwogICAgIHN0cnVjdCB0 YXJnZXRfZmxvY2s2NCAqdGFyZ2V0X2ZsNjQ7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFi aV9sb25nIHJldDsKIAogICAgIHN3aXRjaChjbWQpIHsKICAgICBjYXNlIFRBUkdFVF9GX0dFVExL OgpAQCAtMjQ3NSw3ICsyNDc1LDcgQEAKICAgICB9CiB9CiAKLSNpZiBUQVJHRVRfTE9OR19CSVRT ID09IDMyCisjaWYgVEFSR0VUX0FCSV9CSVRTID09IDMyCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90 IHRhcmdldF9vZmZzZXQ2NCh1aW50MzJfdCB3b3JkMCwgdWludDMyX3Qgd29yZDEpCiB7CiAjaWZk ZWYgVEFSR0VUX1dPUkRTX0JJR19FTkRJQU4KQEAgLTI0ODQsMTggKzI0ODQsMTggQEAKICAgICBy ZXR1cm4gKCh1aW50NjRfdCl3b3JkMSA8PCAzMikgfCB3b3JkMDsKICNlbmRpZgogfQotI2Vsc2Ug LyogVEFSR0VUX0xPTkdfQklUUyA9PSAzMiAqLworI2Vsc2UgLyogVEFSR0VUX0FCSV9CSVRTID09 IDMyICovCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRhcmdldF9vZmZzZXQ2NCh1aW50NjRfdCB3 b3JkMCwgdWludDY0X3Qgd29yZDEpCiB7CiAgICAgcmV0dXJuIHdvcmQwOwogfQotI2VuZGlmIC8q IFRBUkdFVF9MT05HX0JJVFMgIT0gMzIgKi8KKyNlbmRpZiAvKiBUQVJHRVRfQUJJX0JJVFMgIT0g MzIgKi8KIAogI2lmZGVmIFRBUkdFVF9OUl90cnVuY2F0ZTY0Ci1zdGF0aWMgaW5saW5lIHRhcmdl dF9sb25nIHRhcmdldF90cnVuY2F0ZTY0KHZvaWQgKmNwdV9lbnYsIGNvbnN0IGNoYXIgKmFyZzEs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9sb25n IGFyZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9sb25nIGFyZzMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9sb25nIGFyZzQpCitzdGF0aWMgaW5saW5lIGFiaV9sb25nIHRhcmdldF90cnVuY2F0 ZTY0KHZvaWQgKmNwdV9lbnYsIGNvbnN0IGNoYXIgKmFyZzEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzQpCiB7CiAjaWZkZWYgVEFSR0VUX0FS TQogICAgIGlmICgoKENQVUFSTVN0YXRlICopY3B1X2VudiktPmVhYmkpCkBAIC0yNTA5LDEwICsy NTA5LDEwIEBACiAjZW5kaWYKIAogI2lmZGVmIFRBUkdFVF9OUl9mdHJ1bmNhdGU2NAotc3RhdGlj IGlubGluZSB0YXJnZXRfbG9uZyB0YXJnZXRfZnRydW5jYXRlNjQodm9pZCAqY3B1X2VudiwgdGFy Z2V0X2xvbmcgYXJnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF9sb25nIGFyZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmczLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJnNCkKK3N0YXRpYyBpbmxpbmUgYWJpX2xv bmcgdGFyZ2V0X2Z0cnVuY2F0ZTY0KHZvaWQgKmNwdV9lbnYsIGFiaV9sb25nIGFyZzEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBhcmcyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX2xvbmcgYXJnMywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzQpCiB7 CiAjaWZkZWYgVEFSR0VUX0FSTQogICAgIGlmICgoKENQVUFSTVN0YXRlICopY3B1X2VudiktPmVh YmkpCkBAIC0yNTI2LDcgKzI1MjYsNyBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0 YXJnZXRfdG9faG9zdF90aW1lc3BlYyhzdHJ1Y3QgdGltZXNwZWMgKmhvc3RfdHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9u ZyB0YXJnZXRfYWRkcikKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWVzcGVjICp0YXJnZXRfdHM7 CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBACiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90 cywgdGFyZ2V0X2FkZHIsIDApOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJn ZXRfdGltZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGlubGluZSB2b2lk IGhvc3RfdG9fdGFyZ2V0X3RpbWVzcGVjKGFiaV91bG9uZyB0YXJnZXRfYWRkciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKmhvc3Rf dHMpCiB7CiAgICAgc3RydWN0IHRhcmdldF90aW1lc3BlYyAqdGFyZ2V0X3RzOwpAQCAtMjU0Nywx MSArMjU0NywxMSBAQAogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdHMsIHRhcmdldF9h ZGRyLCAxKTsKIH0KIAotdGFyZ2V0X2xvbmcgZG9fc3lzY2FsbCh2b2lkICpjcHVfZW52LCBpbnQg bnVtLCB0YXJnZXRfbG9uZyBhcmcxLAotICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9u ZyBhcmcyLCB0YXJnZXRfbG9uZyBhcmczLCB0YXJnZXRfbG9uZyBhcmc0LAotICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmc1LCB0YXJnZXRfbG9uZyBhcmc2KQorYWJpX2xvbmcg ZG9fc3lzY2FsbCh2b2lkICpjcHVfZW52LCBpbnQgbnVtLCBhYmlfbG9uZyBhcmcxLAorICAgICAg ICAgICAgICAgICAgICBhYmlfbG9uZyBhcmcyLCBhYmlfbG9uZyBhcmczLCBhYmlfbG9uZyBhcmc0 LAorICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBhcmc1LCBhYmlfbG9uZyBhcmc2KQogewot ICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBhYmlfbG9uZyByZXQ7CiAgICAgc3RydWN0IHN0YXQg c3Q7CiAgICAgc3RydWN0IHN0YXRmcyBzdGZzOwogICAgIHZvaWQgKnA7CkBAIC0yNjg3LDEwICsy Njg3LDEwIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGNoYXIgKiphcmdwLCAqKmVudnA7CiAg ICAgICAgICAgICBpbnQgYXJnYywgZW52YzsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBncDsK LSAgICAgICAgICAgIHRhcmdldF91bG9uZyBndWVzdF9hcmdwOwotICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIGd1ZXN0X2VudnA7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRkcjsKKyAgICAg ICAgICAgIGFiaV91bG9uZyBncDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBndWVzdF9hcmdwOwor ICAgICAgICAgICAgYWJpX3Vsb25nIGd1ZXN0X2VudnA7CisgICAgICAgICAgICBhYmlfdWxvbmcg YWRkcjsKICAgICAgICAgICAgIGNoYXIgKipxOwogCiAgICAgICAgICAgICBhcmdjID0gMDsKQEAg LTI3MDYsNyArMjcwNiw3IEBACiAgICAgICAgICAgICBlbnZwID0gYWxsb2NhKChlbnZjICsgMSkg KiBzaXplb2Yodm9pZCAqKSk7CiAKICAgICAgICAgICAgIGZvciAoZ3AgPSBndWVzdF9hcmdwLCBx ID0gYXJncDsgOwotICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyks IHErKykgeworICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHErKykg ewogICAgICAgICAgICAgICAgIGFkZHIgPSB0Z2V0bChncCk7CiAgICAgICAgICAgICAgICAgaWYg KCFhZGRyKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MTUsNyArMjcxNSw3IEBA CiAgICAgICAgICAgICAqcSA9IE5VTEw7CiAKICAgICAgICAgICAgIGZvciAoZ3AgPSBndWVzdF9l bnZwLCBxID0gZW52cDsgOwotICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91 bG9uZyksIHErKykgeworICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKGFiaV91bG9uZyks IHErKykgewogICAgICAgICAgICAgICAgIGFkZHIgPSB0Z2V0bChncCk7CiAgICAgICAgICAgICAg ICAgaWYgKCFhZGRyKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MjgsMTIgKzI3 MjgsMTIgQEAKICAgICAgICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDApOwogCiAgICAgICAg ICAgICBmb3IgKGdwID0gZ3Vlc3RfYXJncCwgcSA9IGFyZ3A7ICpxOwotICAgICAgICAgICAgICAg ICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyksIHErKykgeworICAgICAgICAgICAgICAgICAg Z3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHErKykgewogICAgICAgICAgICAgICAgIGFkZHIgPSB0 Z2V0bChncCk7CiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXIoKnEsIGFkZHIsIDApOwogICAg ICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChncCA9IGd1ZXN0X2VudnAsIHEgPSBlbnZwOyAq cTsKLSAgICAgICAgICAgICAgICAgIGdwICs9IHNpemVvZih0YXJnZXRfdWxvbmcpLCBxKyspIHsK KyAgICAgICAgICAgICAgICAgIGdwICs9IHNpemVvZihhYmlfdWxvbmcpLCBxKyspIHsKICAgICAg ICAgICAgICAgICBhZGRyID0gdGdldGwoZ3ApOwogICAgICAgICAgICAgICAgIHVubG9ja191c2Vy KCpxLCBhZGRyLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTMxNjMsNyArMzE2Myw3IEBACiAgICAg Y2FzZSBUQVJHRVRfTlJfc2dldG1hc2s6CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpZ3NldF90 IGN1cl9zZXQ7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3NldDsKKyAgICAgICAg ICAgIGFiaV91bG9uZyB0YXJnZXRfc2V0OwogICAgICAgICAgICAgc2lncHJvY21hc2soMCwgTlVM TCwgJmN1cl9zZXQpOwogICAgICAgICAgICAgaG9zdF90b190YXJnZXRfb2xkX3NpZ3NldCgmdGFy Z2V0X3NldCwgJmN1cl9zZXQpOwogICAgICAgICAgICAgcmV0ID0gdGFyZ2V0X3NldDsKQEAgLTMx NzQsNyArMzE3NCw3IEBACiAgICAgY2FzZSBUQVJHRVRfTlJfc3NldG1hc2s6CiAgICAgICAgIHsK ICAgICAgICAgICAgIHNpZ3NldF90IHNldCwgb3NldCwgY3VyX3NldDsKLSAgICAgICAgICAgIHRh cmdldF91bG9uZyB0YXJnZXRfc2V0ID0gYXJnMTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJn ZXRfc2V0ID0gYXJnMTsKICAgICAgICAgICAgIHNpZ3Byb2NtYXNrKDAsIE5VTEwsICZjdXJfc2V0 KTsKICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X29sZF9zaWdzZXQoJnNldCwgJnRhcmdldF9z ZXQpOwogICAgICAgICAgICAgc2lnb3JzZXQoJnNldCwgJnNldCwgJmN1cl9zZXQpOwpAQCAtMzQw Nyw3ICszNDA3LDcgQEAKICAgICBjYXNlIFRBUkdFVF9OUl9zZWxlY3Q6CiAgICAgICAgIHsKICAg ICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc2VsX2FyZ19zdHJ1Y3QgKnNlbDsKLSAgICAgICAgICAg IHRhcmdldF91bG9uZyBpbnAsIG91dHAsIGV4cCwgdHZwOworICAgICAgICAgICAgYWJpX3Vsb25n IGlucCwgb3V0cCwgZXhwLCB0dnA7CiAgICAgICAgICAgICBsb25nIG5zZWw7CiAKICAgICAgICAg ICAgIGxvY2tfdXNlcl9zdHJ1Y3Qoc2VsLCBhcmcxLCAxKTsKQEAgLTM1MTAsOSArMzUxMCw5IEBA CiAgICAgY2FzZSBUQVJHRVRfTlJfbW1hcDoKICNpZiBkZWZpbmVkKFRBUkdFVF9JMzg2KSB8fCBk ZWZpbmVkKFRBUkdFVF9BUk0pIHx8IGRlZmluZWQoVEFSR0VUX002OEspIHx8IGRlZmluZWQoVEFS R0VUX0NSSVMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyAqdjsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2OwotICAgICAgICAgICAg diA9IGxvY2tfdXNlcihhcmcxLCA2ICogc2l6ZW9mKHRhcmdldF91bG9uZyksIDEpOworICAgICAg ICAgICAgYWJpX3Vsb25nICp2OworICAgICAgICAgICAgYWJpX3Vsb25nIHYxLCB2MiwgdjMsIHY0 LCB2NSwgdjY7CisgICAgICAgICAgICB2ID0gbG9ja191c2VyKGFyZzEsIDYgKiBzaXplb2YoYWJp X3Vsb25nKSwgMSk7CiAgICAgICAgICAgICB2MSA9IHRzd2FwbCh2WzBdKTsKICAgICAgICAgICAg IHYyID0gdHN3YXBsKHZbMV0pOwogICAgICAgICAgICAgdjMgPSB0c3dhcGwodlsyXSk7CkBAIC0z ODI5LDcgKzM4MjksNyBAQAogICAgICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc3RhdCAqdGFy Z2V0X3N0OwogCiAgICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFy ZzIsIDApOwotI2lmIGRlZmluZWQoVEFSR0VUX01JUFMpIHx8IGRlZmluZWQoVEFSR0VUX1NQQVJD NjQpCisjaWYgZGVmaW5lZChUQVJHRVRfTUlQUykgfHwgKGRlZmluZWQoVEFSR0VUX1NQQVJDNjQp ICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikpCiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5z dF9kZXYgPSB0c3dhcDMyKHN0LnN0X2Rldik7CiAjZWxzZQogICAgICAgICAgICAgICAgIHRhcmdl dF9zdC0+c3RfZGV2ID0gdHN3YXAxNihzdC5zdF9kZXYpOwpAQCAtMzgzOSw3ICszODM5LDcgQEAK ICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X21vZGUgPSB0c3dhcGwoc3Quc3RfbW9kZSk7 IC8qIFhYWDogY2hlY2sgdGhpcyAqLwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfdWlk ID0gdHN3YXAzMihzdC5zdF91aWQpOwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfZ2lk ID0gdHN3YXAzMihzdC5zdF9naWQpOwotI2VsaWYgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkKKyNl bGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikKICAg ICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X21vZGUgPSB0c3dhcDMyKHN0LnN0X21vZGUpOwog ICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfdWlkID0gdHN3YXAzMihzdC5zdF91aWQpOwog ICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfZ2lkID0gdHN3YXAzMihzdC5zdF9naWQpOwpA QCAtMzg1Miw3ICszODUyLDcgQEAKIAkJLyogSWYgdGhpcyBpcyB0aGUgc2FtZSBvbiBQUEMsIHRo ZW4ganVzdCBtZXJnZSB3LyB0aGUgYWJvdmUgaWZkZWYgKi8KICAgICAgICAgICAgICAgICB0YXJn ZXRfc3QtPnN0X25saW5rID0gdHN3YXBsKHN0LnN0X25saW5rKTsKICAgICAgICAgICAgICAgICB0 YXJnZXRfc3QtPnN0X3JkZXYgPSB0c3dhcGwoc3Quc3RfcmRldik7Ci0jZWxpZiBkZWZpbmVkKFRB UkdFVF9TUEFSQzY0KQorI2VsaWYgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkgJiYgIWRlZmluZWQo VEFSR0VUX0FCSTMyKQogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfbmxpbmsgPSB0c3dh cDMyKHN0LnN0X25saW5rKTsKICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X3JkZXYgPSB0 c3dhcDMyKHN0LnN0X3JkZXYpOwogI2Vsc2UKQEAgLTM4OTIsOSArMzg5Miw5IEBACiAgICAgY2Fz ZSBUQVJHRVRfTlJfd2FpdDQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzdGF0dXM7Ci0g ICAgICAgICAgICB0YXJnZXRfbG9uZyBzdGF0dXNfcHRyID0gYXJnMjsKKyAgICAgICAgICAgIGFi aV9sb25nIHN0YXR1c19wdHIgPSBhcmcyOwogICAgICAgICAgICAgc3RydWN0IHJ1c2FnZSBydXNh Z2UsICpydXNhZ2VfcHRyOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9ydXNhZ2Ug PSBhcmc0OworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9ydXNhZ2UgPSBhcmc0OwogICAg ICAgICAgICAgaWYgKHRhcmdldF9ydXNhZ2UpCiAgICAgICAgICAgICAgICAgcnVzYWdlX3B0ciA9 ICZydXNhZ2U7CiAgICAgICAgICAgICBlbHNlCkBAIC00MDQ1LDE0ICs0MDQ1LDE0IEBACiAgICAg ICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBUQVJHRVRfTlJfZ2V0ZGVudHM6Ci0jaWYgVEFS R0VUX0xPTkdfU0laRSAhPSA0CisjaWYgVEFSR0VUX0FCSV9CSVRTICE9IDMyCiAgICAgICAgIGdv dG8gdW5pbXBsZW1lbnRlZDsKICN3YXJuaW5nIG5vdCBzdXBwb3J0ZWQKLSNlbGlmIFRBUkdFVF9M T05HX1NJWkUgPT0gNCAmJiBIT1NUX0xPTkdfU0laRSA9PSA4CisjZWxpZiBUQVJHRVRfQUJJX0JJ VFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0gNjQKICAgICAgICAgewogICAgICAgICAgICAg c3RydWN0IHRhcmdldF9kaXJlbnQgKnRhcmdldF9kaXJwOwogICAgICAgICAgICAgc3RydWN0IGRp cmVudCAqZGlycDsKLSAgICAgICAgICAgIHRhcmdldF9sb25nIGNvdW50ID0gYXJnMzsKKyAgICAg ICAgICAgIGFiaV9sb25nIGNvdW50ID0gYXJnMzsKIAogCSAgICBkaXJwID0gbWFsbG9jKGNvdW50 KTsKIAkgICAgaWYgKCFkaXJwKQpAQCAtNDA3MiwxMSArNDA3MiwxMSBAQAogCQl0ZGUgPSB0YXJn ZXRfZGlycDsKICAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMCkgewogICAgICAgICAgICAg ICAgICAgICByZWNsZW4gPSBkZS0+ZF9yZWNsZW47Ci0JCSAgICB0cmVjbGVuID0gcmVjbGVuIC0g KDIgKiAoc2l6ZW9mKGxvbmcpIC0gc2l6ZW9mKHRhcmdldF9sb25nKSkpOworCQkgICAgdHJlY2xl biA9IHJlY2xlbiAtICgyICogKHNpemVvZihsb25nKSAtIHNpemVvZihhYmlfbG9uZykpKTsKICAg ICAgICAgICAgICAgICAgICAgdGRlLT5kX3JlY2xlbiA9IHRzd2FwMTYodHJlY2xlbik7CiAgICAg ICAgICAgICAgICAgICAgIHRkZS0+ZF9pbm8gPSB0c3dhcGwoZGUtPmRfaW5vKTsKICAgICAgICAg ICAgICAgICAgICAgdGRlLT5kX29mZiA9IHRzd2FwbChkZS0+ZF9vZmYpOwotCQkgICAgdG5hbWVs ZW4gPSB0cmVjbGVuIC0gKDIgKiBzaXplb2YodGFyZ2V0X2xvbmcpICsgMik7CisJCSAgICB0bmFt ZWxlbiA9IHRyZWNsZW4gLSAoMiAqIHNpemVvZihhYmlfbG9uZykgKyAyKTsKIAkJICAgIGlmICh0 bmFtZWxlbiA+IDI1NikKICAgICAgICAgICAgICAgICAgICAgICAgIHRuYW1lbGVuID0gMjU2Owog ICAgICAgICAgICAgICAgICAgICAvKiBYWFg6IG1heSBub3QgYmUgY29ycmVjdCAqLwpAQCAtNDA5 NCw3ICs0MDk0LDcgQEAKICNlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBkaXJl bnQgKmRpcnA7Ci0gICAgICAgICAgICB0YXJnZXRfbG9uZyBjb3VudCA9IGFyZzM7CisgICAgICAg ICAgICBhYmlfbG9uZyBjb3VudCA9IGFyZzM7CiAKICAgICAgICAgICAgIGRpcnAgPSBsb2NrX3Vz ZXIoYXJnMiwgY291bnQsIDApOwogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN5c19nZXRk ZW50cyhhcmcxLCBkaXJwLCBjb3VudCkpOwpAQCAtNDEyMiw3ICs0MTIyLDcgQEAKICAgICBjYXNl IFRBUkdFVF9OUl9nZXRkZW50czY0OgogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3QgZGly ZW50NjQgKmRpcnA7Ci0gICAgICAgICAgICB0YXJnZXRfbG9uZyBjb3VudCA9IGFyZzM7CisgICAg ICAgICAgICBhYmlfbG9uZyBjb3VudCA9IGFyZzM7CiAgICAgICAgICAgICBkaXJwID0gbG9ja191 c2VyKGFyZzIsIGNvdW50LCAwKTsKICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzeXNfZ2V0 ZGVudHM2NChhcmcxLCBkaXJwLCBjb3VudCkpOwogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihy ZXQpKSB7CkBAIC00NzQyLDcgKzQ3NDIsNyBAQAogICAgICAgICByZXQgPSBnZXRfZXJybm8oMCk7 CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0jaWYgVEFSR0VUX0xPTkdfQklUUyA9PSAzMgorI2lm IFRBUkdFVF9BQklfQklUUyA9PSAzMgogICAgIGNhc2UgVEFSR0VUX05SX2ZjbnRsNjQ6CiAgICAg ewogCWludCBjbWQ7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvc3lzY2FsbF9kZWZzLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvc3lzY2FsbF9kZWZzLmgJMjAwNy0xMC0xMSAx OToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zeXNjYWxsX2RlZnMu aAkyMDA3LTEwLTEyIDE5OjAwOjM5LjAwMDAwMDAwMCArMDAwMApAQCAtMTA1LDEzICsxMDUsMTMg QEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfdGltZXZhbCB7Ci0gICAgdGFyZ2V0X2xvbmcgdHZfc2Vj OwotICAgIHRhcmdldF9sb25nIHR2X3VzZWM7CisgICAgYWJpX2xvbmcgdHZfc2VjOworICAgIGFi aV9sb25nIHR2X3VzZWM7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3RpbWVzcGVjIHsKLSAgICB0YXJn ZXRfbG9uZyB0dl9zZWM7Ci0gICAgdGFyZ2V0X2xvbmcgdHZfbnNlYzsKKyAgICBhYmlfbG9uZyB0 dl9zZWM7CisgICAgYWJpX2xvbmcgdHZfbnNlYzsKIH07CiAKIHN0cnVjdCB0YXJnZXRfaXRpbWVy dmFsIHsKQEAgLTExOSw3ICsxMTksNyBAQAogICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCBpdF92 YWx1ZTsKIH07CiAKLXR5cGVkZWYgdGFyZ2V0X2xvbmcgdGFyZ2V0X2Nsb2NrX3Q7Cit0eXBlZGVm IGFiaV9sb25nIHRhcmdldF9jbG9ja190OwogCiAjZGVmaW5lIFRBUkdFVF9IWiAxMDAKIApAQCAt MTMxLDMzICsxMzEsMzMgQEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfdXRpbWJ1ZiB7Ci0gICAgdGFy Z2V0X2xvbmcgYWN0aW1lOwotICAgIHRhcmdldF9sb25nIG1vZHRpbWU7CisgICAgYWJpX2xvbmcg YWN0aW1lOworICAgIGFiaV9sb25nIG1vZHRpbWU7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3NlbF9h cmdfc3RydWN0IHsKLSAgICB0YXJnZXRfbG9uZyBuOwotICAgIHRhcmdldF9sb25nIGlucCwgb3V0 cCwgZXhwOwotICAgIHRhcmdldF9sb25nIHR2cDsKKyAgICBhYmlfbG9uZyBuOworICAgIGFiaV9s b25nIGlucCwgb3V0cCwgZXhwOworICAgIGFiaV9sb25nIHR2cDsKIH07CiAKIHN0cnVjdCB0YXJn ZXRfaW92ZWMgewotICAgIHRhcmdldF9sb25nIGlvdl9iYXNlOyAgIC8qIFN0YXJ0aW5nIGFkZHJl c3MgKi8KLSAgICB0YXJnZXRfbG9uZyBpb3ZfbGVuOyAgIC8qIE51bWJlciBvZiBieXRlcyAqLwor ICAgIGFiaV9sb25nIGlvdl9iYXNlOyAgIC8qIFN0YXJ0aW5nIGFkZHJlc3MgKi8KKyAgICBhYmlf bG9uZyBpb3ZfbGVuOyAgIC8qIE51bWJlciBvZiBieXRlcyAqLwogfTsKIAogc3RydWN0IHRhcmdl dF9tc2doZHIgewotICAgIHRhcmdldF9sb25nCSBtc2dfbmFtZTsJLyogU29ja2V0IG5hbWUJCQkq LwotICAgIGludAkJIG1zZ19uYW1lbGVuOwkvKiBMZW5ndGggb2YgbmFtZQkJKi8KLSAgICB0YXJn ZXRfbG9uZwkgbXNnX2lvdjsJLyogRGF0YSBibG9ja3MJCQkqLwotICAgIHRhcmdldF9sb25nCSBt c2dfaW92bGVuOwkvKiBOdW1iZXIgb2YgYmxvY2tzCQkqLwotICAgIHRhcmdldF9sb25nICBtc2df Y29udHJvbDsJLyogUGVyIHByb3RvY29sIG1hZ2ljIChlZyBCU0QgZmlsZSBkZXNjcmlwdG9yIHBh c3NpbmcpICovCi0gICAgdGFyZ2V0X2xvbmcJIG1zZ19jb250cm9sbGVuOwkvKiBMZW5ndGggb2Yg Y21zZyBsaXN0ICovCisgICAgYWJpX2xvbmcJIG1zZ19uYW1lOwkgLyogU29ja2V0IG5hbWUJCQkq LworICAgIGludAkJIG1zZ19uYW1lbGVuOwkgLyogTGVuZ3RoIG9mIG5hbWUJCSovCisgICAgYWJp X2xvbmcJIG1zZ19pb3Y7CSAvKiBEYXRhIGJsb2NrcwkJCSovCisgICAgYWJpX2xvbmcJIG1zZ19p b3ZsZW47CSAvKiBOdW1iZXIgb2YgYmxvY2tzCQkqLworICAgIGFiaV9sb25nICAgICBtc2dfY29u dHJvbDsJIC8qIFBlciBwcm90b2NvbCBtYWdpYyAoZWcgQlNEIGZpbGUgZGVzY3JpcHRvciBwYXNz aW5nKSAqLworICAgIGFiaV9sb25nCSBtc2dfY29udHJvbGxlbjsgLyogTGVuZ3RoIG9mIGNtc2cg bGlzdCAqLwogICAgIHVuc2lnbmVkIGludCBtc2dfZmxhZ3M7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0 X2Ntc2doZHIgewotICAgIHRhcmdldF9sb25nICBjbXNnX2xlbjsKKyAgICBhYmlfbG9uZyAgICAg Y21zZ19sZW47CiAgICAgaW50ICAgICAgICAgIGNtc2dfbGV2ZWw7CiAgICAgaW50ICAgICAgICAg IGNtc2dfdHlwZTsKIH07CkBAIC0xNjcsOCArMTY3LDggQEAKICNkZWZpbmUgVEFSR0VUX0NNU0df RklSU1RIRFIobWhkcikgXAogICAoKHNpemVfdCkgdHN3YXBsKChtaGRyKS0+bXNnX2NvbnRyb2xs ZW4pID49IHNpemVvZiAoc3RydWN0IHRhcmdldF9jbXNnaGRyKSBcCiAgICA/IChzdHJ1Y3QgdGFy Z2V0X2Ntc2doZHIgKikgdHN3YXBsKChtaGRyKS0+bXNnX2NvbnRyb2wpIDogKHN0cnVjdCB0YXJn ZXRfY21zZ2hkciAqKSBOVUxMKQotI2RlZmluZSBUQVJHRVRfQ01TR19BTElHTihsZW4pICgoKGxl bikgKyBzaXplb2YgKHRhcmdldF9sb25nKSAtIDEpIFwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmIChzaXplX3QpIH4oc2l6ZW9mICh0YXJnZXRfbG9uZykgLSAxKSkKKyNkZWZpbmUg VEFSR0VUX0NNU0dfQUxJR04obGVuKSAoKChsZW4pICsgc2l6ZW9mIChhYmlfbG9uZykgLSAxKSBc CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoc2l6ZV90KSB+KHNpemVvZiAoYWJp X2xvbmcpIC0gMSkpCiAjZGVmaW5lIFRBUkdFVF9DTVNHX1NQQUNFKGxlbikgKFRBUkdFVF9DTVNH X0FMSUdOIChsZW4pIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFRBUkdFVF9D TVNHX0FMSUdOIChzaXplb2YgKHN0cnVjdCB0YXJnZXRfY21zZ2hkcikpKQogI2RlZmluZSBUQVJH RVRfQ01TR19MRU4obGVuKSAgIChUQVJHRVRfQ01TR19BTElHTiAoc2l6ZW9mIChzdHJ1Y3QgdGFy Z2V0X2Ntc2doZHIpKSArIChsZW4pKQpAQCAtMTkxLDIwICsxOTEsMjAgQEAKIHN0cnVjdCAgdGFy Z2V0X3J1c2FnZSB7CiAgICAgICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCBydV91dGltZTsgICAg ICAgIC8qIHVzZXIgdGltZSB1c2VkICovCiAgICAgICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCBy dV9zdGltZTsgICAgICAgIC8qIHN5c3RlbSB0aW1lIHVzZWQgKi8KLSAgICAgICAgdGFyZ2V0X2xv bmcgICAgcnVfbWF4cnNzOyAgICAgICAgICAgICAgLyogbWF4aW11bSByZXNpZGVudCBzZXQgc2l6 ZSAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9peHJzczsgICAgICAgICAgICAgICAvKiBp bnRlZ3JhbCBzaGFyZWQgbWVtb3J5IHNpemUgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVf aWRyc3M7ICAgICAgICAgICAgICAgLyogaW50ZWdyYWwgdW5zaGFyZWQgZGF0YSBzaXplICovCi0g ICAgICAgIHRhcmdldF9sb25nICAgIHJ1X2lzcnNzOyAgICAgICAgICAgICAgIC8qIGludGVncmFs IHVuc2hhcmVkIHN0YWNrIHNpemUgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbWluZmx0 OyAgICAgICAgICAgICAgLyogcGFnZSByZWNsYWltcyAqLwotICAgICAgICB0YXJnZXRfbG9uZyAg ICBydV9tYWpmbHQ7ICAgICAgICAgICAgICAvKiBwYWdlIGZhdWx0cyAqLwotICAgICAgICB0YXJn ZXRfbG9uZyAgICBydV9uc3dhcDsgICAgICAgICAgICAgICAvKiBzd2FwcyAqLwotICAgICAgICB0 YXJnZXRfbG9uZyAgICBydV9pbmJsb2NrOyAgICAgICAgICAgICAvKiBibG9jayBpbnB1dCBvcGVy YXRpb25zICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X291YmxvY2s7ICAgICAgICAgICAg IC8qIGJsb2NrIG91dHB1dCBvcGVyYXRpb25zICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1 X21zZ3NuZDsgICAgICAgICAgICAgIC8qIG1lc3NhZ2VzIHNlbnQgKi8KLSAgICAgICAgdGFyZ2V0 X2xvbmcgICAgcnVfbXNncmN2OyAgICAgICAgICAgICAgLyogbWVzc2FnZXMgcmVjZWl2ZWQgKi8K LSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbnNpZ25hbHM7ICAgICAgICAgICAgLyogc2lnbmFs cyByZWNlaXZlZCAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9udmNzdzsgICAgICAgICAg ICAgICAvKiB2b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcyAqLwotICAgICAgICB0YXJnZXRfbG9u ZyAgICBydV9uaXZjc3c7ICAgICAgICAgICAgICAvKiBpbnZvbHVudGFyeSAiICovCisgICAgICAg IGFiaV9sb25nICAgIHJ1X21heHJzczsgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gcmVzaWRl bnQgc2V0IHNpemUgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfaXhyc3M7ICAgICAgICAgICAg ICAgICAgLyogaW50ZWdyYWwgc2hhcmVkIG1lbW9yeSBzaXplICovCisgICAgICAgIGFiaV9sb25n ICAgIHJ1X2lkcnNzOyAgICAgICAgICAgICAgICAgIC8qIGludGVncmFsIHVuc2hhcmVkIGRhdGEg c2l6ZSAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9pc3JzczsgICAgICAgICAgICAgICAgICAv KiBpbnRlZ3JhbCB1bnNoYXJlZCBzdGFjayBzaXplICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1 X21pbmZsdDsgICAgICAgICAgICAgICAgIC8qIHBhZ2UgcmVjbGFpbXMgKi8KKyAgICAgICAgYWJp X2xvbmcgICAgcnVfbWFqZmx0OyAgICAgICAgICAgICAgICAgLyogcGFnZSBmYXVsdHMgKi8KKyAg ICAgICAgYWJpX2xvbmcgICAgcnVfbnN3YXA7ICAgICAgICAgICAgICAgICAgLyogc3dhcHMgKi8K KyAgICAgICAgYWJpX2xvbmcgICAgcnVfaW5ibG9jazsgICAgICAgICAgICAgICAgLyogYmxvY2sg aW5wdXQgb3BlcmF0aW9ucyAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9vdWJsb2NrOyAgICAg ICAgICAgICAgICAvKiBibG9jayBvdXRwdXQgb3BlcmF0aW9ucyAqLworICAgICAgICBhYmlfbG9u ZyAgICBydV9tc2dzbmQ7ICAgICAgICAgICAgICAgICAvKiBtZXNzYWdlcyBzZW50ICovCisgICAg ICAgIGFiaV9sb25nICAgIHJ1X21zZ3JjdjsgICAgICAgICAgICAgICAgIC8qIG1lc3NhZ2VzIHJl Y2VpdmVkICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X25zaWduYWxzOyAgICAgICAgICAgICAg IC8qIHNpZ25hbHMgcmVjZWl2ZWQgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfbnZjc3c7ICAg ICAgICAgICAgICAgICAgLyogdm9sdW50YXJ5IGNvbnRleHQgc3dpdGNoZXMgKi8KKyAgICAgICAg YWJpX2xvbmcgICAgcnVfbml2Y3N3OyAgICAgICAgICAgICAgICAgLyogaW52b2x1bnRhcnkgIiAq LwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjI1LDggKzIyNSw4IEBACiB9OwogCiBzdHJ1 Y3QgdGFyZ2V0X2RpcmVudCB7Ci0JdGFyZ2V0X2xvbmcJZF9pbm87Ci0JdGFyZ2V0X2xvbmcJZF9v ZmY7CisJYWJpX2xvbmcJZF9pbm87CisJYWJpX2xvbmcJZF9vZmY7CiAJdW5zaWduZWQgc2hvcnQJ ZF9yZWNsZW47CiAJY2hhcgkJZF9uYW1lWzI1Nl07IC8qIFdlIG11c3Qgbm90IGluY2x1ZGUgbGlt aXRzLmghICovCiB9OwpAQCAtMjQxLDIwICsyNDEsMjAgQEAKIAogCiAvKiBtb3N0bHkgZ2VuZXJp YyBzaWduYWwgc3R1ZmYgKi8KLSNkZWZpbmUgVEFSR0VUX1NJR19ERkwJKCh0YXJnZXRfbG9uZykw KQkvKiBkZWZhdWx0IHNpZ25hbCBoYW5kbGluZyAqLwotI2RlZmluZSBUQVJHRVRfU0lHX0lHTgko KHRhcmdldF9sb25nKTEpCS8qIGlnbm9yZSBzaWduYWwgKi8KLSNkZWZpbmUgVEFSR0VUX1NJR19F UlIJKCh0YXJnZXRfbG9uZyktMSkJLyogZXJyb3IgcmV0dXJuIGZyb20gc2lnbmFsICovCisjZGVm aW5lIFRBUkdFVF9TSUdfREZMCSgoYWJpX2xvbmcpMCkJLyogZGVmYXVsdCBzaWduYWwgaGFuZGxp bmcgKi8KKyNkZWZpbmUgVEFSR0VUX1NJR19JR04JKChhYmlfbG9uZykxKQkvKiBpZ25vcmUgc2ln bmFsICovCisjZGVmaW5lIFRBUkdFVF9TSUdfRVJSCSgoYWJpX2xvbmcpLTEpCS8qIGVycm9yIHJl dHVybiBmcm9tIHNpZ25hbCAqLwogCiAjaWZkZWYgVEFSR0VUX01JUFMKICNkZWZpbmUgVEFSR0VU X05TSUcJICAgMTI4CiAjZWxzZQogI2RlZmluZSBUQVJHRVRfTlNJRwkgICA2NAogI2VuZGlmCi0j ZGVmaW5lIFRBUkdFVF9OU0lHX0JQVwkgICBUQVJHRVRfTE9OR19CSVRTCisjZGVmaW5lIFRBUkdF VF9OU0lHX0JQVwkgICBUQVJHRVRfQUJJX0JJVFMKICNkZWZpbmUgVEFSR0VUX05TSUdfV09SRFMg IChUQVJHRVRfTlNJRyAvIFRBUkdFVF9OU0lHX0JQVykKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAg IHRhcmdldF91bG9uZyBzaWdbVEFSR0VUX05TSUdfV09SRFNdOworICAgIGFiaV91bG9uZyBzaWdb VEFSR0VUX05TSUdfV09SRFNdOwogfSB0YXJnZXRfc2lnc2V0X3Q7CiAKICNpZmRlZiBCU1dBUF9O RUVERUQKQEAgLTI3MSw3ICsyNzEsNyBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgdm9p ZCB0YXJnZXRfc2lnaW5pdHNldCh0YXJnZXRfc2lnc2V0X3QgKmQsIHRhcmdldF91bG9uZyBzZXQp CitzdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3NpZ2luaXRzZXQodGFyZ2V0X3NpZ3NldF90ICpk LCBhYmlfdWxvbmcgc2V0KQogewogICAgIGludCBpOwogICAgIGQtPnNpZ1swXSA9IHNldDsKQEAg LTI4MSwxMCArMjgxLDEwIEBACiAKIHZvaWQgaG9zdF90b190YXJnZXRfc2lnc2V0KHRhcmdldF9z aWdzZXRfdCAqZCwgY29uc3Qgc2lnc2V0X3QgKnMpOwogdm9pZCB0YXJnZXRfdG9faG9zdF9zaWdz ZXQoc2lnc2V0X3QgKmQsIGNvbnN0IHRhcmdldF9zaWdzZXRfdCAqcyk7Ci12b2lkIGhvc3RfdG9f dGFyZ2V0X29sZF9zaWdzZXQodGFyZ2V0X3Vsb25nICpvbGRfc2lnc2V0LAordm9pZCBob3N0X3Rv X3RhcmdldF9vbGRfc2lnc2V0KGFiaV91bG9uZyAqb2xkX3NpZ3NldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzaWdzZXRfdCAqc2lnc2V0KTsKIHZvaWQgdGFyZ2V0X3Rv X2hvc3Rfb2xkX3NpZ3NldChzaWdzZXRfdCAqc2lnc2V0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHRhcmdldF91bG9uZyAqb2xkX3NpZ3NldCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgYWJpX3Vsb25nICpvbGRfc2lnc2V0KTsKIHN0cnVjdCB0 YXJnZXRfc2lnYWN0aW9uOwogaW50IGRvX3NpZ2FjdGlvbihpbnQgc2lnLCBjb25zdCBzdHJ1Y3Qg dGFyZ2V0X3NpZ2FjdGlvbiAqYWN0LAogICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3Np Z2FjdGlvbiAqb2FjdCk7CkBAIC00NTMsNDAgKzQ1Myw0MCBAQAogI2lmIGRlZmluZWQoVEFSR0VU X01JUFNOMzIpCiAJdWludDMyX3QJX3NhX2hhbmRsZXI7CiAjZWxzZQotCXRhcmdldF91bG9uZwlf c2FfaGFuZGxlcjsKKwlhYmlfdWxvbmcJX3NhX2hhbmRsZXI7CiAjZW5kaWYKIAl0YXJnZXRfc2ln c2V0X3QJc2FfbWFzazsKIH07CiAKICNlbHNlCiBzdHJ1Y3QgdGFyZ2V0X29sZF9zaWdhY3Rpb24g ewotICAgICAgICB0YXJnZXRfdWxvbmcgX3NhX2hhbmRsZXI7Ci0gICAgICAgIHRhcmdldF91bG9u ZyBzYV9tYXNrOwotICAgICAgICB0YXJnZXRfdWxvbmcgc2FfZmxhZ3M7Ci0gICAgICAgIHRhcmdl dF91bG9uZyBzYV9yZXN0b3JlcjsKKyAgICAgICAgYWJpX3Vsb25nIF9zYV9oYW5kbGVyOworICAg ICAgICBhYmlfdWxvbmcgc2FfbWFzazsKKyAgICAgICAgYWJpX3Vsb25nIHNhX2ZsYWdzOworICAg ICAgICBhYmlfdWxvbmcgc2FfcmVzdG9yZXI7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlv biB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBfc2FfaGFuZGxlcjsKLSAgICAgICAgdGFyZ2V0X3Vs b25nIHNhX2ZsYWdzOwotICAgICAgICB0YXJnZXRfdWxvbmcgc2FfcmVzdG9yZXI7CisgICAgICAg IGFiaV91bG9uZyBfc2FfaGFuZGxlcjsKKyAgICAgICAgYWJpX3Vsb25nIHNhX2ZsYWdzOworICAg ICAgICBhYmlfdWxvbmcgc2FfcmVzdG9yZXI7CiAgICAgICAgIHRhcmdldF9zaWdzZXRfdCBzYV9t YXNrOwogfTsKICNlbmRpZgogCiB0eXBlZGVmIHVuaW9uIHRhcmdldF9zaWd2YWwgewogCWludCBz aXZhbF9pbnQ7Ci0gICAgICAgIHRhcmdldF91bG9uZyBzaXZhbF9wdHI7CisgICAgICAgIGFiaV91 bG9uZyBzaXZhbF9wdHI7CiB9IHRhcmdldF9zaWd2YWxfdDsKICNpZiAwCiAjaWYgZGVmaW5lZCAo VEFSR0VUX1NQQVJDKQogdHlwZWRlZiBzdHJ1Y3QgewogCXN0cnVjdCB7Ci0JCXRhcmdldF91bG9u ZyBwc3I7Ci0JCXRhcmdldF91bG9uZyBwYzsKLQkJdGFyZ2V0X3Vsb25nIG5wYzsKLQkJdGFyZ2V0 X3Vsb25nIHk7Ci0JCXRhcmdldF91bG9uZyB1X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMg Ki8KKwkJYWJpX3Vsb25nIHBzcjsKKwkJYWJpX3Vsb25nIHBjOworCQlhYmlfdWxvbmcgbnBjOwor CQlhYmlfdWxvbmcgeTsKKwkJYWJpX3Vsb25nIHVfcmVnc1sxNl07IC8qIGdsb2JhbHMgYW5kIGlu cyAqLwogCX0JCXNpX3JlZ3M7CiAJaW50CQlzaV9tYXNrOwogfSBfX3NpZ2luZm9fdDsKQEAgLTU0 NCw3ICs1NDQsNyBAQAogCiAJCS8qIFNJR0lMTCwgU0lHRlBFLCBTSUdTRUdWLCBTSUdCVVMgKi8K IAkJc3RydWN0IHsKLQkJCXRhcmdldF91bG9uZyBfYWRkcjsgLyogZmF1bHRpbmcgaW5zbi9tZW1v cnkgcmVmLiAqLworCQkJYWJpX3Vsb25nIF9hZGRyOyAvKiBmYXVsdGluZyBpbnNuL21lbW9yeSBy ZWYuICovCiAJCX0gX3NpZ2ZhdWx0OwogCiAJCS8qIFNJR1BPTEwgKi8KQEAgLTYxNCw4ICs2MTQs OCBAQAogI2VuZGlmIC8qIGRlZmluZWQoVEFSR0VUX0kzODYpIHx8IGRlZmluZWQoVEFSR0VUX0FS TSkgKi8KIAogc3RydWN0IHRhcmdldF9ybGltaXQgewotICAgICAgICB0YXJnZXRfdWxvbmcgICBy bGltX2N1cjsKLSAgICAgICAgdGFyZ2V0X3Vsb25nICAgcmxpbV9tYXg7CisgICAgICAgIGFiaV91 bG9uZyAgIHJsaW1fY3VyOworICAgICAgICBhYmlfdWxvbmcgICBybGltX21heDsKIH07CiAKIHN0 cnVjdCB0YXJnZXRfcG9sbGZkIHsKQEAgLTg4OCwyNCArODg4LDI0IEBACiBzdHJ1Y3QgdGFyZ2V0 X3N0YXQgewogCXVuc2lnbmVkIHNob3J0IHN0X2RldjsKIAl1bnNpZ25lZCBzaG9ydCBfX3BhZDE7 Ci0JdGFyZ2V0X3Vsb25nIHN0X2lubzsKKwlhYmlfdWxvbmcgc3RfaW5vOwogCXVuc2lnbmVkIHNo b3J0IHN0X21vZGU7CiAJdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAJdW5zaWduZWQgc2hvcnQg c3RfdWlkOwogCXVuc2lnbmVkIHNob3J0IHN0X2dpZDsKIAl1bnNpZ25lZCBzaG9ydCBzdF9yZGV2 OwogCXVuc2lnbmVkIHNob3J0IF9fcGFkMjsKLQl0YXJnZXRfdWxvbmcgIHN0X3NpemU7Ci0JdGFy Z2V0X3Vsb25nICBzdF9ibGtzaXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxvY2tzOwotCXRhcmdl dF91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQxOwotCXRh cmdldF91bG9uZyAgdGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQyOwot CXRhcmdldF91bG9uZyAgdGFyZ2V0X3N0X2N0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQz OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ0OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ1Owor CWFiaV91bG9uZyAgc3Rfc2l6ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsa3NpemU7CisJYWJpX3Vsb25n ICBzdF9ibG9ja3M7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nICBf X3VudXNlZDE7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nICBfX3Vu dXNlZDI7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nICBfX3VudXNl ZDM7CisJYWJpX3Vsb25nICBfX3VudXNlZDQ7CisJYWJpX3Vsb25nICBfX3VudXNlZDU7CiB9Owog CiAvKiBUaGlzIG1hdGNoZXMgc3RydWN0IHN0YXQ2NCBpbiBnbGliYzIuMSwgaGVuY2UgdGhlIGFi c29sdXRlbHkKQEAgLTkxNiwzMSArOTE2LDMxIEBACiAJdW5zaWduZWQgY2hhcglfX3BhZDBbMTBd OwogCiAjZGVmaW5lIFRBUkdFVF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8JMQotCXRhcmdldF91 bG9uZwlfX3N0X2lubzsKKwlhYmlfdWxvbmcJX19zdF9pbm87CiAKIAl1bnNpZ25lZCBpbnQJc3Rf bW9kZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAKLQl0YXJnZXRfdWxvbmcJc3RfdWlkOwot CXRhcmdldF91bG9uZwlzdF9naWQ7CisJYWJpX3Vsb25nCXN0X3VpZDsKKwlhYmlfdWxvbmcJc3Rf Z2lkOwogCiAJdW5zaWduZWQgc2hvcnQJc3RfcmRldjsKIAl1bnNpZ25lZCBjaGFyCV9fcGFkM1sx MF07CiAKIAlsb25nIGxvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKKwlh YmlfdWxvbmcJc3RfYmxrc2l6ZTsKIAotCXRhcmdldF91bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJl ciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwotCXRhcmdldF91bG9uZwlfX3BhZDQ7CQkv KiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAqLworCWFiaV91bG9uZwlzdF9i bG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLworCWFiaV91bG9u ZwlfX3BhZDQ7CQkvKiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAqLwogCi0J dGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJX19wYWQ1OworCWFi aV91bG9uZwl0YXJnZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nCV9fcGFkNTsKIAotCXRhcmdldF91 bG9uZwl0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCV9fcGFkNjsKKwlhYmlfdWxvbmcJ dGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZwlfX3BhZDY7CiAKLQl0YXJnZXRfdWxvbmcJdGFy Z2V0X3N0X2N0aW1lOwotCXRhcmdldF91bG9uZwlfX3BhZDc7CQkvKiB3aWxsIGJlIGhpZ2ggMzIg Yml0cyBvZiBjdGltZSBzb21lZGF5ICovCisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZTsKKwlh YmlfdWxvbmcJX19wYWQ3OwkJLyogd2lsbCBiZSBoaWdoIDMyIGJpdHMgb2YgY3RpbWUgc29tZWRh eSAqLwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X2lubzsKIH0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CkBAIC05NDksNTAgKzk0OSw1MCBAQAogc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCB7 CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9kZXY7CiAgICAgICAgIHVuc2lnbmVkIGlu dCAgICBfX3BhZDE7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBfX3N0X2lubzsKKyAgICAgICAg YWJpX3Vsb25nICAgIF9fc3RfaW5vOwogICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfbW9kZTsK ICAgICAgICAgdW5zaWduZWQgaW50ICAgIHN0X25saW5rOwogCi0gICAgICAgIHRhcmdldF91bG9u ZyAgICBzdF91aWQ7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBzdF9naWQ7CisgICAgICAgIGFi aV91bG9uZyAgICBzdF91aWQ7CisgICAgICAgIGFiaV91bG9uZyAgICBzdF9naWQ7CiAKICAgICAg ICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X3JkZXY7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBf X3BhZDJbMl07CiAKICAgICAgICAgbG9uZyBsb25nICAgICAgIHN0X3NpemU7Ci0gICAgICAgIHRh cmdldF91bG9uZyAgICBzdF9ibGtzaXplOworICAgICAgICBhYmlfdWxvbmcgICAgc3RfYmxrc2l6 ZTsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIF9fcGFkMzsKICAgICAgICAgdW5zaWduZWQgbG9u ZyBsb25nIHN0X2Jsb2NrczsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0 aW1lOwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisgICAg ICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAgICB0 YXJnZXRfc3RfYXRpbWVfbnNlYzsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0 X210aW1lOwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7Cisg ICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAg ICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0 X3N0X2N0aW1lOwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lX25zZWM7 CisgICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWU7CisgICAgICAgIGFiaV91bG9u ZyAgICB0YXJnZXRfc3RfY3RpbWVfbnNlYzsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg c3RfaW5vOwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAjZW5kaWYKIAotI2VsaWYgZGVm aW5lZChUQVJHRVRfU1BBUkM2NCkKKyNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpICYmICFk ZWZpbmVkKFRBUkdFVF9BQkkzMikKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQgaW50 CXN0X2RldjsKLQl0YXJnZXRfdWxvbmcJc3RfaW5vOworCWFiaV91bG9uZwlzdF9pbm87CiAJdW5z aWduZWQgaW50CXN0X21vZGU7CiAJdW5zaWduZWQgaW50CXN0X25saW5rOwogCXVuc2lnbmVkIGlu dAlzdF91aWQ7CiAJdW5zaWduZWQgaW50CXN0X2dpZDsKIAl1bnNpZ25lZCBpbnQJc3RfcmRldjsK LQl0YXJnZXRfbG9uZwlzdF9zaXplOwotCXRhcmdldF9sb25nCXRhcmdldF9zdF9hdGltZTsKLQl0 YXJnZXRfbG9uZwl0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X2xvbmcJdGFyZ2V0X3N0X2N0aW1l OwotCXRhcmdldF9sb25nCXN0X2Jsa3NpemU7Ci0JdGFyZ2V0X2xvbmcJc3RfYmxvY2tzOwotCXRh cmdldF91bG9uZwlfX3VudXNlZDRbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlhYmlfbG9uZwl0 YXJnZXRfc3RfYXRpbWU7CisJYWJpX2xvbmcJdGFyZ2V0X3N0X210aW1lOworCWFiaV9sb25nCXRh cmdldF9zdF9jdGltZTsKKwlhYmlfbG9uZwlzdF9ibGtzaXplOworCWFiaV9sb25nCXN0X2Jsb2Nr czsKKwlhYmlfdWxvbmcJX191bnVzZWQ0WzJdOwogfTsKIAogc3RydWN0IHRhcmdldF9zdGF0NjQg ewpAQCAtMTAxNiwzOCArMTAxNiwzOCBAQAogCXVuc2lnbmVkIGNoYXIJX19wYWQ0WzRdOwogCXVu c2lnbmVkIGludAlzdF9ibG9ja3M7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lOwot CXRhcmdldF91bG9uZwlfX3VudXNlZDE7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9hdGltZTsKKwlh YmlfdWxvbmcJX191bnVzZWQxOwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9tdGltZTsKLQl0 YXJnZXRfdWxvbmcJX191bnVzZWQyOworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWU7CisJYWJp X3Vsb25nCV9fdW51c2VkMjsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFy Z2V0X3Vsb25nCV9fdW51c2VkMzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91 bG9uZwlfX3VudXNlZDM7CiAKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQ0WzNdOworCWFiaV91bG9u ZwlfX3VudXNlZDRbM107CiB9OwogCiAjZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFSQykKIAogc3Ry dWN0IHRhcmdldF9zdGF0IHsKIAl1bnNpZ25lZCBzaG9ydAlzdF9kZXY7Ci0JdGFyZ2V0X3Vsb25n CXN0X2lubzsKKwlhYmlfdWxvbmcJc3RfaW5vOwogCXVuc2lnbmVkIHNob3J0CXN0X21vZGU7CiAJ c2hvcnQJCXN0X25saW5rOwogCXVuc2lnbmVkIHNob3J0CXN0X3VpZDsKIAl1bnNpZ25lZCBzaG9y dAlzdF9naWQ7CiAJdW5zaWduZWQgc2hvcnQJc3RfcmRldjsKLQl0YXJnZXRfbG9uZwlzdF9zaXpl OwotCXRhcmdldF9sb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQx OwotCXRhcmdldF9sb25nCXRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQy OwotCXRhcmdldF9sb25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQz OwotCXRhcmdldF9sb25nCXN0X2Jsa3NpemU7Ci0JdGFyZ2V0X2xvbmcJc3RfYmxvY2tzOwotCXRh cmdldF91bG9uZwlfX3VudXNlZDRbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlhYmlfbG9uZwl0 YXJnZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nCV9fdW51c2VkMTsKKwlhYmlfbG9uZwl0YXJnZXRf c3RfbXRpbWU7CisJYWJpX3Vsb25nCV9fdW51c2VkMjsKKwlhYmlfbG9uZwl0YXJnZXRfc3RfY3Rp bWU7CisJYWJpX3Vsb25nCV9fdW51c2VkMzsKKwlhYmlfbG9uZwlzdF9ibGtzaXplOworCWFiaV9s b25nCXN0X2Jsb2NrczsKKwlhYmlfdWxvbmcJX191bnVzZWQ0WzJdOwogfTsKIAogc3RydWN0IHRh cmdldF9zdGF0NjQgewpAQCAtMTA5MCwyMyArMTA5MCwyMyBAQAogCiBzdHJ1Y3QgdGFyZ2V0X3N0 YXQgewogCXVuc2lnbmVkIHNob3J0IHN0X2RldjsKLQl0YXJnZXRfdWxvbmcgc3RfaW5vOworCWFi aV91bG9uZyBzdF9pbm87CiAJdW5zaWduZWQgaW50IHN0X21vZGU7CiAJdW5zaWduZWQgc2hvcnQg c3Rfbmxpbms7CiAJdW5zaWduZWQgaW50IHN0X3VpZDsKIAl1bnNpZ25lZCBpbnQgc3RfZ2lkOwog CXVuc2lnbmVkIHNob3J0IHN0X3JkZXY7Ci0JdGFyZ2V0X3Vsb25nICBzdF9zaXplOwotCXRhcmdl dF91bG9uZyAgc3RfYmxrc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Jsb2NrczsKLQl0YXJnZXRf dWxvbmcgIHRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMTsKLQl0YXJn ZXRfdWxvbmcgIHRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMjsKLQl0 YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMzsK LQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNDsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNTsKKwlh YmlfdWxvbmcgIHN0X3NpemU7CisJYWJpX3Vsb25nICBzdF9ibGtzaXplOworCWFiaV91bG9uZyAg c3RfYmxvY2tzOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91bG9uZyAgX191 bnVzZWQxOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZyAgX191bnVz ZWQyOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZyAgX191bnVzZWQz OworCWFiaV91bG9uZyAgX191bnVzZWQ0OworCWFiaV91bG9uZyAgX191bnVzZWQ1OwogfTsKIAog c3RydWN0IHRhcmdldF9zdGF0NjQgewpAQCAtMTExOSwxNyArMTExOSwxNyBAQAogCXVuc2lnbmVk IGxvbmcgbG9uZyBzdF9yZGV2OwogCWxvbmcgbG9uZyBwYWQwOwogCWxvbmcgbG9uZyBzdF9zaXpl OwotCXRhcmdldF91bG9uZwlzdF9ibGtzaXplOwotCXRhcmdldF91bG9uZwlwYWQxOworCWFiaV91 bG9uZwlzdF9ibGtzaXplOworCWFiaV91bG9uZwlwYWQxOwogCWxvbmcgbG9uZwlzdF9ibG9ja3M7 CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwotCXRhcmdldF91bG9uZwl0 YXJnZXRfc3RfYXRpbWU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWVf bnNlYzsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwotICAgICAgICB0YXJnZXRfdWxv bmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGlt ZTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdldF9zdF9jdGltZV9uc2VjOwotICAgICAg ICB0YXJnZXRfdWxvbmcgICAgX191bnVzZWQ0OwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgX191 bnVzZWQ1OworCWFiaV91bG9uZwl0YXJnZXRfc3RfYXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAg ICB0YXJnZXRfc3RfYXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lOworICAg ICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7CisJYWJpX3Vsb25nCXRhcmdl dF9zdF9jdGltZTsKKyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGltZV9uc2VjOwor ICAgICAgICBhYmlfdWxvbmcgICAgX191bnVzZWQ0OworICAgICAgICBhYmlfdWxvbmcgICAgX191 bnVzZWQ1OwogfTsKIAogI2VsaWYgZGVmaW5lZChUQVJHRVRfTTY4SykKQEAgLTExMzcsMjQgKzEx MzcsMjQgQEAKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQgc2hvcnQgc3RfZGV2Owog CXVuc2lnbmVkIHNob3J0IF9fcGFkMTsKLQl0YXJnZXRfdWxvbmcgc3RfaW5vOworCWFiaV91bG9u ZyBzdF9pbm87CiAJdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKIAl1bnNpZ25lZCBzaG9ydCBzdF9u bGluazsKIAl1bnNpZ25lZCBzaG9ydCBzdF91aWQ7CiAJdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwog CXVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAJdW5zaWduZWQgc2hvcnQgX19wYWQyOwotCXRhcmdl dF91bG9uZyAgc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Jsa3NpemU7Ci0JdGFyZ2V0X3Vs b25nICBzdF9ibG9ja3M7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfYXRpbWU7Ci0JdGFyZ2V0 X3Vsb25nICBfX3VudXNlZDE7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7Ci0JdGFy Z2V0X3Vsb25nICBfX3VudXNlZDI7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7Ci0J dGFyZ2V0X3Vsb25nICBfX3VudXNlZDM7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDQ7Ci0JdGFy Z2V0X3Vsb25nICBfX3VudXNlZDU7CisJYWJpX3Vsb25nICBzdF9zaXplOworCWFiaV91bG9uZyAg c3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsb2NrczsKKwlhYmlfdWxvbmcgIHRhcmdldF9z dF9hdGltZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMTsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9t dGltZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMjsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9jdGlt ZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMzsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNDsKKwlhYmlf dWxvbmcgIF9fdW51c2VkNTsKIH07CiAKIC8qIFRoaXMgbWF0Y2hlcyBzdHJ1Y3Qgc3RhdDY0IGlu IGdsaWJjMi4xLCBoZW5jZSB0aGUgYWJzb2x1dGVseQpAQCAtMTE2NSwzMSArMTE2NSwzMSBAQAog CXVuc2lnbmVkIGNoYXIJX19wYWQxWzJdOwogCiAjZGVmaW5lIFRBUkdFVF9TVEFUNjRfSEFTX0JS T0tFTl9TVF9JTk8JMQotCXRhcmdldF91bG9uZwlfX3N0X2lubzsKKwlhYmlfdWxvbmcJX19zdF9p bm87CiAKIAl1bnNpZ25lZCBpbnQJc3RfbW9kZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAK LQl0YXJnZXRfdWxvbmcJc3RfdWlkOwotCXRhcmdldF91bG9uZwlzdF9naWQ7CisJYWJpX3Vsb25n CXN0X3VpZDsKKwlhYmlfdWxvbmcJc3RfZ2lkOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X3Jk ZXY7CiAJdW5zaWduZWQgY2hhcglfX3BhZDNbMl07CiAKIAlsb25nIGxvbmcJc3Rfc2l6ZTsKLQl0 YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJc3RfYmxrc2l6ZTsKIAotCXRhcmdl dF91bG9uZwlfX3BhZDQ7CQkvKiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAq LwotCXRhcmdldF91bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxs b2NhdGVkLiAqLworCWFiaV91bG9uZwlfX3BhZDQ7CQkvKiBmdXR1cmUgcG9zc2libGUgc3RfYmxv Y2tzIGhpZ2ggYml0cyAqLworCWFiaV91bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0 ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZTsK LQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisJYWJpX3Vsb25nCXRhcmdldF9z dF9hdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CiAKLQl0YXJnZXRfdWxv bmcJdGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsK KwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWVf bnNlYzsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRh cmdldF9zdF9jdGltZV9uc2VjOworCWFiaV91bG9uZwl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vs b25nCXRhcmdldF9zdF9jdGltZV9uc2VjOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X2lubzsK IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQAogCXVuc2ln bmVkIGludAkJc3RfZGV2OwogCXVuc2lnbmVkIGludAkJc3RfcGFkMFszXTsgLyogUmVzZXJ2ZWQg Zm9yIHN0X2RldiBleHBhbnNpb24gKi8KIAotCXRhcmdldF91bG9uZwkJc3RfaW5vOworCWFiaV91 bG9uZwkJc3RfaW5vOwogCiAJdW5zaWduZWQgaW50CQlzdF9tb2RlOwogCXVuc2lnbmVkIGludAkJ c3Rfbmxpbms7CkBAIC0xMjEyLDcgKzEyMTIsNyBAQAogCXVuc2lnbmVkIGludAkJc3RfcmRldjsK IAl1bnNpZ25lZCBpbnQJCXN0X3BhZDFbM107IC8qIFJlc2VydmVkIGZvciBzdF9yZGV2IGV4cGFu c2lvbiAqLwogCi0JdGFyZ2V0X3Vsb25nCQlzdF9zaXplOworCWFiaV91bG9uZwkJc3Rfc2l6ZTsK IAogCS8qCiAJICogQWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgdGltZXN0cnVjX3Qgc3RfYXRpbWUs IHN0X210aW1lIGFuZCBzdF9jdGltZQpAQCAtMTIzMCw3ICsxMjMwLDcgQEAKIAl1bnNpZ25lZCBp bnQJCXN0X2Jsa3NpemU7CiAJdW5zaWduZWQgaW50CQlzdF9wYWQyOwogCi0JdGFyZ2V0X3Vsb25n CQlzdF9ibG9ja3M7CisJYWJpX3Vsb25nCQlzdF9ibG9ja3M7CiB9OwogCiAjZWxpZiBkZWZpbmVk KFRBUkdFVF9NSVBTTjMyKQpAQCAtMTMwOCwyOSArMTMwOCwyOSBAQAogCiBzdHJ1Y3QgdGFyZ2V0 X3N0YXQgewogCXVuc2lnbmVkCXN0X2RldjsKLQl0YXJnZXRfbG9uZwlzdF9wYWQxWzNdOwkJLyog UmVzZXJ2ZWQgZm9yIG5ldHdvcmsgaWQgKi8KLQl0YXJnZXRfdWxvbmcJc3RfaW5vOworCWFiaV9s b25nCXN0X3BhZDFbM107CQkvKiBSZXNlcnZlZCBmb3IgbmV0d29yayBpZCAqLworCWFiaV91bG9u ZwlzdF9pbm87CiAJdW5zaWduZWQgaW50CXN0X21vZGU7CiAJdW5zaWduZWQgaW50CXN0X25saW5r OwogCWludAkJc3RfdWlkOwogCWludAkJc3RfZ2lkOwogCXVuc2lnbmVkIAlzdF9yZGV2OwotCXRh cmdldF9sb25nCXN0X3BhZDJbMl07Ci0JdGFyZ2V0X2xvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfbG9u ZwlzdF9wYWQzOworCWFiaV9sb25nCXN0X3BhZDJbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlh YmlfbG9uZwlzdF9wYWQzOwogCS8qCiAJICogQWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgdGltZXN0 cnVjX3Qgc3RfYXRpbWUsIHN0X210aW1lIGFuZCBzdF9jdGltZQogCSAqIGJ1dCB3ZSBkb24ndCBo YXZlIGl0IHVuZGVyIExpbnV4LgogCSAqLwotCXRhcmdldF9sb25nCQl0YXJnZXRfc3RfYXRpbWU7 Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9hdGltZV9uc2VjOwotCXRhcmdldF9sb25nCQl0YXJn ZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9tdGltZV9uc2VjOwotCXRhcmdl dF9sb25nCQl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9jdGltZV9u c2VjOwotCXRhcmdldF9sb25nCQlzdF9ibGtzaXplOwotCXRhcmdldF9sb25nCQlzdF9ibG9ja3M7 Ci0JdGFyZ2V0X2xvbmcJCXN0X3BhZDRbMTRdOworCWFiaV9sb25nCQl0YXJnZXRfc3RfYXRpbWU7 CisJYWJpX2xvbmcJCXRhcmdldF9zdF9hdGltZV9uc2VjOworCWFiaV9sb25nCQl0YXJnZXRfc3Rf bXRpbWU7CisJYWJpX2xvbmcJCXRhcmdldF9zdF9tdGltZV9uc2VjOworCWFiaV9sb25nCQl0YXJn ZXRfc3RfY3RpbWU7CisJYWJpX2xvbmcJCXRhcmdldF9zdF9jdGltZV9uc2VjOworCWFiaV9sb25n CQlzdF9ibGtzaXplOworCWFiaV9sb25nCQlzdF9ibG9ja3M7CisJYWJpX2xvbmcJCXN0X3BhZDRb MTRdOwogfTsKIAogLyoKQEAgLTEzNDAsOCArMTM0MCw4IEBACiAgKi8KIAogc3RydWN0IHRhcmdl dF9zdGF0NjQgewotCXRhcmdldF91bG9uZwlzdF9kZXY7Ci0JdGFyZ2V0X3Vsb25nCXN0X3BhZDBb M107CS8qIFJlc2VydmVkIGZvciBzdF9kZXYgZXhwYW5zaW9uICAqLworCWFiaV91bG9uZwlzdF9k ZXY7CisJYWJpX3Vsb25nCXN0X3BhZDBbM107CS8qIFJlc2VydmVkIGZvciBzdF9kZXYgZXhwYW5z aW9uICAqLwogCiAJdWludDY0X3QJc3RfaW5vOwogCkBAIC0xMzUxLDggKzEzNTEsOCBAQAogCWlu dAkJc3RfdWlkOwogCWludAkJc3RfZ2lkOwogCi0JdGFyZ2V0X3Vsb25nCXN0X3JkZXY7Ci0JdGFy Z2V0X3Vsb25nCXN0X3BhZDFbM107CS8qIFJlc2VydmVkIGZvciBzdF9yZGV2IGV4cGFuc2lvbiAg Ki8KKwlhYmlfdWxvbmcJc3RfcmRldjsKKwlhYmlfdWxvbmcJc3RfcGFkMVszXTsJLyogUmVzZXJ2 ZWQgZm9yIHN0X3JkZXYgZXhwYW5zaW9uICAqLwogCiAJaW50NjRfdCAJc3Rfc2l6ZTsKIApAQCAt MTM2MCwxNyArMTM2MCwxNyBAQAogCSAqIEFjdHVhbGx5IHRoaXMgc2hvdWxkIGJlIHRpbWVzdHJ1 Y190IHN0X2F0aW1lLCBzdF9tdGltZSBhbmQgc3RfY3RpbWUKIAkgKiBidXQgd2UgZG9uJ3QgaGF2 ZSBpdCB1bmRlciBMaW51eC4KIAkgKi8KLQl0YXJnZXRfbG9uZwl0YXJnZXRfc3RfYXRpbWU7Ci0J dGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZV9uc2VjOwkvKiBSZXNlcnZlZCBmb3Igc3RfYXRp bWUgZXhwYW5zaW9uICAqLworCWFiaV9sb25nCXRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcJ dGFyZ2V0X3N0X2F0aW1lX25zZWM7CS8qIFJlc2VydmVkIGZvciBzdF9hdGltZSBleHBhbnNpb24g ICovCiAKLQl0YXJnZXRfbG9uZwl0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdl dF9zdF9tdGltZV9uc2VjOwkvKiBSZXNlcnZlZCBmb3Igc3RfbXRpbWUgZXhwYW5zaW9uICAqLwor CWFiaV9sb25nCXRhcmdldF9zdF9tdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lX25z ZWM7CS8qIFJlc2VydmVkIGZvciBzdF9tdGltZSBleHBhbnNpb24gICovCiAKLQl0YXJnZXRfbG9u Zwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZV9uc2VjOwkv KiBSZXNlcnZlZCBmb3Igc3RfY3RpbWUgZXhwYW5zaW9uICAqLworCWFiaV9sb25nCXRhcmdldF9z dF9jdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lX25zZWM7CS8qIFJlc2VydmVkIGZv ciBzdF9jdGltZSBleHBhbnNpb24gICovCiAKLQl0YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKLQl0 YXJnZXRfdWxvbmcJc3RfcGFkMjsKKwlhYmlfdWxvbmcJc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJ c3RfcGFkMjsKIAogCWludDY0X3QgIAlzdF9ibG9ja3M7CiB9OwpAQCAtMTM4NSwxMCArMTM4NSwx MCBAQAogICAgICAgIHVuc2lnbmVkIGludCAgICBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgaW50 ICAgIHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfcmRldjsKLSAgICAgICB0YXJn ZXRfbG9uZyAgICAgc3Rfc2l6ZTsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0 aW1lOwotICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7Ci0gICAgICAgdGFy Z2V0X3Vsb25nICAgIHRhcmdldF9zdF9jdGltZTsKKyAgICAgICBhYmlfbG9uZyAgICAgc3Rfc2l6 ZTsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOworICAgICAgIGFiaV91bG9u ZyAgICB0YXJnZXRfc3RfbXRpbWU7CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGlt ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBp bnQgICAgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGludCAgICBzdF9mbGFnczsKQEAgLTEz OTYsMTEgKzEzOTYsMTEgQEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfc3RhdDY0IHsKLSAgICAgICB0 YXJnZXRfdWxvbmcgICAgc3RfZGV2OwotICAgICAgIHRhcmdldF91bG9uZyAgICBzdF9pbm87Ci0g ICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0X3JkZXY7Ci0gICAgICAgdGFyZ2V0X2xvbmcgICAgIHN0 X3NpemU7Ci0gICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0X2Jsb2NrczsKKyAgICAgICBhYmlfdWxv bmcgICAgc3RfZGV2OworICAgICAgIGFiaV91bG9uZyAgICBzdF9pbm87CisgICAgICAgYWJpX3Vs b25nICAgIHN0X3JkZXY7CisgICAgICAgYWJpX2xvbmcgICAgIHN0X3NpemU7CisgICAgICAgYWJp X3Vsb25nICAgIHN0X2Jsb2NrczsKIAogICAgICAgIHVuc2lnbmVkIGludCAgICBzdF9tb2RlOwog ICAgICAgIHVuc2lnbmVkIGludCAgICBzdF91aWQ7CkBAIC0xNDA5LDM2ICsxNDA5LDM2IEBACiAg ICAgICAgdW5zaWduZWQgaW50ICAgIHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIGludCAgICBf X3BhZDA7CiAKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOwotICAgICAg IHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWVfbnNlYzsKLSAgICAgICB0YXJnZXRfdWxv bmcgICAgdGFyZ2V0X3N0X210aW1lOwotICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3Rf bXRpbWVfbnNlYzsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lOwotICAg ICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWVfbnNlYzsKLSAgICAgICB0YXJnZXRf bG9uZyAgICAgX191bnVzZWRbM107CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9hdGlt ZTsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisgICAgICAgYWJp X3Vsb25nICAgIHRhcmdldF9zdF9tdGltZTsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0 X210aW1lX25zZWM7CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGltZTsKKyAgICAg ICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lX25zZWM7CisgICAgICAgYWJpX2xvbmcgICAg IF9fdW51c2VkWzNdOwogfTsKIAogI2VsaWYgZGVmaW5lZChUQVJHRVRfU0g0KQogCiBzdHJ1Y3Qg dGFyZ2V0X3N0YXQgewotCXRhcmdldF91bG9uZyAgc3RfZGV2OwotCXRhcmdldF91bG9uZyAgc3Rf aW5vOworCWFiaV91bG9uZyAgc3RfZGV2OworCWFiaV91bG9uZyAgc3RfaW5vOwogCXVuc2lnbmVk IHNob3J0IHN0X21vZGU7CiAJdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAJdW5zaWduZWQgc2hv cnQgc3RfdWlkOwogCXVuc2lnbmVkIHNob3J0IHN0X2dpZDsKLQl0YXJnZXRfdWxvbmcgIHN0X3Jk ZXY7Ci0JdGFyZ2V0X3Vsb25nICBzdF9zaXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxrc2l6ZTsK LQl0YXJnZXRfdWxvbmcgIHN0X2Jsb2NrczsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9hdGlt ZTsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9hdGltZV9uc2VjOwotCXRhcmdldF91bG9uZyAg dGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZyAgdGFyZ2V0X3N0X210aW1lX25zZWM7Ci0J dGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3Rf Y3RpbWVfbnNlYzsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNDsKLQl0YXJnZXRfdWxvbmcgIF9f dW51c2VkNTsKKwlhYmlfdWxvbmcgIHN0X3JkZXY7CisJYWJpX3Vsb25nICBzdF9zaXplOworCWFi aV91bG9uZyAgc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsb2NrczsKKwlhYmlfdWxvbmcg IHRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9hdGltZV9uc2VjOworCWFi aV91bG9uZyAgdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X210aW1lX25z ZWM7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nICB0YXJnZXRfc3Rf Y3RpbWVfbnNlYzsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNDsKKwlhYmlfdWxvbmcgIF9fdW51c2Vk NTsKIH07CiAKIC8qIFRoaXMgbWF0Y2hlcyBzdHJ1Y3Qgc3RhdDY0IGluIGdsaWJjMi4xLCBoZW5j ZSB0aGUgYWJzb2x1dGVseQpAQCAtMTQ0OSwzMCArMTQ0OSwzMCBAQAogCXVuc2lnbmVkIGNoYXIJ X19wYWQwWzRdOwogCiAjZGVmaW5lIFRBUkdFVF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8JMQot CXRhcmdldF91bG9uZwlfX3N0X2lubzsKKwlhYmlfdWxvbmcJX19zdF9pbm87CiAKIAl1bnNpZ25l ZCBpbnQJc3RfbW9kZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAKLQl0YXJnZXRfdWxvbmcJ c3RfdWlkOwotCXRhcmdldF91bG9uZwlzdF9naWQ7CisJYWJpX3Vsb25nCXN0X3VpZDsKKwlhYmlf dWxvbmcJc3RfZ2lkOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X3JkZXY7CiAJdW5zaWduZWQg Y2hhcglfX3BhZDNbNF07CiAKIAlsb25nIGxvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcJc3Rf Ymxrc2l6ZTsKKwlhYmlfdWxvbmcJc3RfYmxrc2l6ZTsKIAogCXVuc2lnbmVkIGxvbmcgbG9uZwlz dF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwogCi0JdGFy Z2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1l X25zZWM7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0 X2F0aW1lX25zZWM7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91 bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwor CWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRf c3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZV9uc2VjOworCWFiaV91bG9u Zwl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZV9uc2VjOwogCiAJ dW5zaWduZWQgbG9uZyBsb25nCXN0X2lubzsKIH07CkBAIC0xNTA0LDE5ICsxNTA0LDE5IEBACiB9 OwogI2Vsc2UKIHN0cnVjdCB0YXJnZXRfc3RhdGZzIHsKLQl0YXJnZXRfbG9uZwkJZl90eXBlOwot CXRhcmdldF9sb25nCQlmX2JzaXplOwotCXRhcmdldF9sb25nCQlmX2Zyc2l6ZTsJLyogRnJhZ21l bnQgc2l6ZSAtIHVuc3VwcG9ydGVkICovCi0JdGFyZ2V0X2xvbmcJCWZfYmxvY2tzOwotCXRhcmdl dF9sb25nCQlmX2JmcmVlOwotCXRhcmdldF9sb25nCQlmX2ZpbGVzOwotCXRhcmdldF9sb25nCQlm X2ZmcmVlOwotCXRhcmdldF9sb25nCQlmX2JhdmFpbDsKKwlhYmlfbG9uZwkJZl90eXBlOworCWFi aV9sb25nCQlmX2JzaXplOworCWFiaV9sb25nCQlmX2Zyc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAt IHVuc3VwcG9ydGVkICovCisJYWJpX2xvbmcJCWZfYmxvY2tzOworCWFiaV9sb25nCQlmX2JmcmVl OworCWFiaV9sb25nCQlmX2ZpbGVzOworCWFiaV9sb25nCQlmX2ZmcmVlOworCWFiaV9sb25nCQlm X2JhdmFpbDsKIAogCS8qIExpbnV4IHNwZWNpYWxzICovCiAJdGFyZ2V0X2ZzaWRfdAkJZl9mc2lk OwotCXRhcmdldF9sb25nCQlmX25hbWVsZW47Ci0JdGFyZ2V0X2xvbmcJCWZfc3BhcmVbNl07CisJ YWJpX2xvbmcJCWZfbmFtZWxlbjsKKwlhYmlfbG9uZwkJZl9zcGFyZVs2XTsKIH07CiAjZW5kaWYK IApAQCAtMTY4OCw4ICsxNjg4LDggQEAKIHN0cnVjdCB0YXJnZXRfZmxvY2sgewogCXNob3J0IGxf dHlwZTsKIAlzaG9ydCBsX3doZW5jZTsKLQl0YXJnZXRfdWxvbmcgbF9zdGFydDsKLQl0YXJnZXRf dWxvbmcgbF9sZW47CisJYWJpX3Vsb25nIGxfc3RhcnQ7CisJYWJpX3Vsb25nIGxfbGVuOwogCWlu dCBsX3BpZDsKIH07CiAKQEAgLTE4NTYsMjAgKzE4NTYsMjAgQEAKICNkZWZpbmUgVEFSR0VUX1ZG QVRfSU9DVExfUkVBRERJUl9TSE9SVCAgIFRBUkdFVF9JT1JVKCdyJywgMikKIAogc3RydWN0IHRh cmdldF9zeXNpbmZvIHsKLSAgICB0YXJnZXRfbG9uZyB1cHRpbWU7ICAgICAgICAgICAgIC8qIFNl Y29uZHMgc2luY2UgYm9vdCAqLwotICAgIHRhcmdldF91bG9uZyBsb2Fkc1szXTsgICAgICAgICAg LyogMSwgNSwgYW5kIDE1IG1pbnV0ZSBsb2FkIGF2ZXJhZ2VzICovCi0gICAgdGFyZ2V0X3Vsb25n IHRvdGFscmFtOyAgICAgICAgICAvKiBUb3RhbCB1c2FibGUgbWFpbiBtZW1vcnkgc2l6ZSAqLwot ICAgIHRhcmdldF91bG9uZyBmcmVlcmFtOyAgICAgICAgICAgLyogQXZhaWxhYmxlIG1lbW9yeSBz aXplICovCi0gICAgdGFyZ2V0X3Vsb25nIHNoYXJlZHJhbTsgICAgICAgICAvKiBBbW91bnQgb2Yg c2hhcmVkIG1lbW9yeSAqLwotICAgIHRhcmdldF91bG9uZyBidWZmZXJyYW07ICAgICAgICAgLyog TWVtb3J5IHVzZWQgYnkgYnVmZmVycyAqLwotICAgIHRhcmdldF91bG9uZyB0b3RhbHN3YXA7ICAg ICAgICAgLyogVG90YWwgc3dhcCBzcGFjZSBzaXplICovCi0gICAgdGFyZ2V0X3Vsb25nIGZyZWVz d2FwOyAgICAgICAgICAvKiBzd2FwIHNwYWNlIHN0aWxsIGF2YWlsYWJsZSAqLworICAgIGFiaV9s b25nIHVwdGltZTsgICAgICAgICAgICAgICAgLyogU2Vjb25kcyBzaW5jZSBib290ICovCisgICAg YWJpX3Vsb25nIGxvYWRzWzNdOyAgICAgICAgICAgICAvKiAxLCA1LCBhbmQgMTUgbWludXRlIGxv YWQgYXZlcmFnZXMgKi8KKyAgICBhYmlfdWxvbmcgdG90YWxyYW07ICAgICAgICAgICAgIC8qIFRv dGFsIHVzYWJsZSBtYWluIG1lbW9yeSBzaXplICovCisgICAgYWJpX3Vsb25nIGZyZWVyYW07ICAg ICAgICAgICAgICAvKiBBdmFpbGFibGUgbWVtb3J5IHNpemUgKi8KKyAgICBhYmlfdWxvbmcgc2hh cmVkcmFtOyAgICAgICAgICAgIC8qIEFtb3VudCBvZiBzaGFyZWQgbWVtb3J5ICovCisgICAgYWJp X3Vsb25nIGJ1ZmZlcnJhbTsgICAgICAgICAgICAvKiBNZW1vcnkgdXNlZCBieSBidWZmZXJzICov CisgICAgYWJpX3Vsb25nIHRvdGFsc3dhcDsgICAgICAgICAgICAvKiBUb3RhbCBzd2FwIHNwYWNl IHNpemUgKi8KKyAgICBhYmlfdWxvbmcgZnJlZXN3YXA7ICAgICAgICAgICAgIC8qIHN3YXAgc3Bh Y2Ugc3RpbGwgYXZhaWxhYmxlICovCiAgICAgdW5zaWduZWQgc2hvcnQgcHJvY3M7ICAgICAgICAg ICAvKiBOdW1iZXIgb2YgY3VycmVudCBwcm9jZXNzZXMgKi8KICAgICB1bnNpZ25lZCBzaG9ydCBw YWQ7ICAgICAgICAgICAgIC8qIGV4cGxpY2l0IHBhZGRpbmcgZm9yIG02OGsgKi8KLSAgICB0YXJn ZXRfdWxvbmcgdG90YWxoaWdoOyAgICAgICAgIC8qIFRvdGFsIGhpZ2ggbWVtb3J5IHNpemUgKi8K LSAgICB0YXJnZXRfdWxvbmcgZnJlZWhpZ2g7ICAgICAgICAgIC8qIEF2YWlsYWJsZSBoaWdoIG1l bW9yeSBzaXplICovCisgICAgYWJpX3Vsb25nIHRvdGFsaGlnaDsgICAgICAgICAgICAvKiBUb3Rh bCBoaWdoIG1lbW9yeSBzaXplICovCisgICAgYWJpX3Vsb25nIGZyZWVoaWdoOyAgICAgICAgICAg ICAvKiBBdmFpbGFibGUgaGlnaCBtZW1vcnkgc2l6ZSAqLwogICAgIHVuc2lnbmVkIGludCBtZW1f dW5pdDsgICAgICAgICAgLyogTWVtb3J5IHVuaXQgc2l6ZSBpbiBieXRlcyAqLwotICAgIGNoYXIg X2ZbMjAtMipzaXplb2YodGFyZ2V0X2xvbmcpLXNpemVvZihpbnQpXTsgLyogUGFkZGluZzogbGli YzUgdXNlcyB0aGlzLi4gKi8KKyAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGFiaV9sb25nKS1zaXpl b2YoaW50KV07IC8qIFBhZGRpbmc6IGxpYmM1IHVzZXMgdGhpcy4uICovCiB9OwogCiAjaW5jbHVk ZSAic29ja2V0LmgiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvdm04Ni5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL3ZtODYuYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3ZtODYuYwkyMDA3LTEwLTExIDE5OjE3OjQ2LjAw MDAwMDAwMCArMDAwMApAQCAtMzgxLDcgKzM4MSw3IEBACiAgICAgfQogfQogCi1pbnQgZG9fdm04 NihDUFVYODZTdGF0ZSAqZW52LCBsb25nIHN1YmZ1bmN0aW9uLCB0YXJnZXRfdWxvbmcgdm04Nl9h ZGRyKQoraW50IGRvX3ZtODYoQ1BVWDg2U3RhdGUgKmVudiwgbG9uZyBzdWJmdW5jdGlvbiwgYWJp X3Vsb25nIHZtODZfYWRkcikKIHsKICAgICBUYXNrU3RhdGUgKnRzID0gZW52LT5vcGFxdWU7CiAg ICAgc3RydWN0IHRhcmdldF92bTg2cGx1c19zdHJ1Y3QgKiB0YXJnZXRfdjg2OwpJbmRleDogcWVt dS9saW51eC11c2VyL3g4Nl82NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xp bnV4LXVzZXIveDg2XzY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL3g4Nl82NC9zeXNjYWxsLmgJMjAwNy0xMC0xMiAxNjow OToxNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTIsMzAgKzIsMzAgQEAKICNkZWZpbmUgX19VU0VSX0RT CSgweDJCKQogCiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewotCXRhcmdldF91bG9uZyByMTU7Ci0J dGFyZ2V0X3Vsb25nIHIxNDsKLQl0YXJnZXRfdWxvbmcgcjEzOwotCXRhcmdldF91bG9uZyByMTI7 Ci0JdGFyZ2V0X3Vsb25nIHJicDsKLQl0YXJnZXRfdWxvbmcgcmJ4OworCWFiaV91bG9uZyByMTU7 CisJYWJpX3Vsb25nIHIxNDsKKwlhYmlfdWxvbmcgcjEzOworCWFiaV91bG9uZyByMTI7CisJYWJp X3Vsb25nIHJicDsKKwlhYmlfdWxvbmcgcmJ4OwogLyogYXJndW1lbnRzOiBub24gaW50ZXJydXB0 cy9ub24gdHJhY2luZyBzeXNjYWxscyBvbmx5IHNhdmUgdXB0byBoZXJlKi8KLSAJdGFyZ2V0X3Vs b25nIHIxMTsKLQl0YXJnZXRfdWxvbmcgcjEwOwotCXRhcmdldF91bG9uZyByOTsKLQl0YXJnZXRf dWxvbmcgcjg7Ci0JdGFyZ2V0X3Vsb25nIHJheDsKLQl0YXJnZXRfdWxvbmcgcmN4OwotCXRhcmdl dF91bG9uZyByZHg7Ci0JdGFyZ2V0X3Vsb25nIHJzaTsKLQl0YXJnZXRfdWxvbmcgcmRpOwotCXRh cmdldF91bG9uZyBvcmlnX3JheDsKKyAJYWJpX3Vsb25nIHIxMTsKKwlhYmlfdWxvbmcgcjEwOwor CWFiaV91bG9uZyByOTsKKwlhYmlfdWxvbmcgcjg7CisJYWJpX3Vsb25nIHJheDsKKwlhYmlfdWxv bmcgcmN4OworCWFiaV91bG9uZyByZHg7CisJYWJpX3Vsb25nIHJzaTsKKwlhYmlfdWxvbmcgcmRp OworCWFiaV91bG9uZyBvcmlnX3JheDsKIC8qIGVuZCBvZiBhcmd1bWVudHMgKi8KIC8qIGNwdSBl eGNlcHRpb24gZnJhbWUgb3IgdW5kZWZpbmVkICovCi0JdGFyZ2V0X3Vsb25nIHJpcDsKLQl0YXJn ZXRfdWxvbmcgY3M7Ci0JdGFyZ2V0X3Vsb25nIGVmbGFnczsKLQl0YXJnZXRfdWxvbmcgcnNwOwot CXRhcmdldF91bG9uZyBzczsKKwlhYmlfdWxvbmcgcmlwOworCWFiaV91bG9uZyBjczsKKwlhYmlf dWxvbmcgZWZsYWdzOworCWFiaV91bG9uZyByc3A7CisJYWJpX3Vsb25nIHNzOwogLyogdG9wIG9m IHN0YWNrIHBhZ2UgKi8KIH07CiAKQEAgLTQxLDcgKzQxLDcgQEAKICNpZiAwIC8vIFJlZGVmaW5l IHRoaXMKIHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyB7CiAJdW5zaWduZWQgaW50ICBl bnRyeV9udW1iZXI7Ci0JdGFyZ2V0X3Vsb25nICBiYXNlX2FkZHI7CisgICAgICAgIGFiaV91bG9u ZyAgICAgYmFzZV9hZGRyOwogCXVuc2lnbmVkIGludCAgbGltaXQ7CiAJdW5zaWduZWQgaW50ICBz ZWdfMzJiaXQ6MTsKIAl1bnNpZ25lZCBpbnQgIGNvbnRlbnRzOjI7CkBAIC01NCw3ICs1NCw3IEBA CiAjZWxzZQogc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zIHsKIAl1bnNpZ25lZCBpbnQg IGVudHJ5X251bWJlcjsKLQl0YXJnZXRfdWxvbmcgIGJhc2VfYWRkcjsKKyAgICAgICAgYWJpX3Vs b25nICAgICBiYXNlX2FkZHI7CiAJdW5zaWduZWQgaW50ICBsaW1pdDsKICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzOwogfTsKQEAgLTcxLDggKzcxLDggQEAKIAl1bnNpZ25lZCBzaG9ydAkJX19w YWQxOwogCXVuc2lnbmVkIHNob3J0CQlzZXE7CiAJdW5zaWduZWQgc2hvcnQJCV9fcGFkMjsKLQl0 YXJnZXRfdWxvbmcJCV9fdW51c2VkMTsKLQl0YXJnZXRfdWxvbmcJCV9fdW51c2VkMjsKKwlhYmlf dWxvbmcJCV9fdW51c2VkMTsKKwlhYmlfdWxvbmcJCV9fdW51c2VkMjsKIH07CiAKIHN0cnVjdCB0 YXJnZXRfbXNxaWQ2NF9kcyB7CkBAIC04MCwxMyArODAsMTMgQEAKIAl1bnNpZ25lZCBpbnQgbXNn X3N0aW1lOwkvKiBsYXN0IG1zZ3NuZCB0aW1lICovCiAJdW5zaWduZWQgaW50IG1zZ19ydGltZTsJ LyogbGFzdCBtc2dyY3YgdGltZSAqLwogCXVuc2lnbmVkIGludCBtc2dfY3RpbWU7CS8qIGxhc3Qg Y2hhbmdlIHRpbWUgKi8KLQl0YXJnZXRfdWxvbmcgIG1zZ19jYnl0ZXM7CS8qIGN1cnJlbnQgbnVt YmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCi0JdGFyZ2V0X3Vsb25nICBtc2dfcW51bTsJLyogbnVt YmVyIG9mIG1lc3NhZ2VzIGluIHF1ZXVlICovCi0JdGFyZ2V0X3Vsb25nICBtc2dfcWJ5dGVzOwkv KiBtYXggbnVtYmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCisJYWJpX3Vsb25nICBtc2dfY2J5dGVz OwkvKiBjdXJyZW50IG51bWJlciBvZiBieXRlcyBvbiBxdWV1ZSAqLworCWFiaV91bG9uZyAgbXNn X3FudW07CS8qIG51bWJlciBvZiBtZXNzYWdlcyBpbiBxdWV1ZSAqLworCWFiaV91bG9uZyAgbXNn X3FieXRlczsJLyogbWF4IG51bWJlciBvZiBieXRlcyBvbiBxdWV1ZSAqLwogCXVuc2lnbmVkIGlu dCBtc2dfbHNwaWQ7CS8qIHBpZCBvZiBsYXN0IG1zZ3NuZCAqLwogCXVuc2lnbmVkIGludCBtc2df bHJwaWQ7CS8qIGxhc3QgcmVjZWl2ZSBwaWQgKi8KLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNDsK LQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNDsKKwlhYmlf dWxvbmcgIF9fdW51c2VkNTsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAieDg2XzY0IgpJ bmRleDogcWVtdS9saW51eC11c2VyL3g4Nl82NC90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIveDg2XzY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTEx IDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3g4Nl82NC90YXJn ZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSAr Niw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2Fs bCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRh cmdldF91bG9uZyBzc19zcDsKLQl0YXJnZXRfbG9uZyBzc19mbGFnczsKLQl0YXJnZXRfdWxvbmcg c3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nfc3A7CisJYWJpX2xvbmcgc3NfZmxhZ3M7CisJYWJpX3Vs b25nIHNzX3NpemU7CiB9IHRhcmdldF9zdGFja190OwogCiAKQEAgLTIxLDcgKzIxLDcgQEAKICNk ZWZpbmUgVEFSR0VUX01JTlNJR1NUS1NaCTIwNDgKICNkZWZpbmUgVEFSR0VUX1NJR1NUS1NaCQk4 MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQ VVg4NlN0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgYWJpX3Vsb25nIGdldF9zcF9mcm9tX2Nw dXN0YXRlKENQVVg4NlN0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPnJlZ3NbUl9F U1BdOwogfQpJbmRleDogcWVtdS9saW51eC11c2VyL2FybS9zeXNjYWxsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvYXJtL3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjEz LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2FybS9zeXNjYWxsLmgJMjAwNy0x MC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTMsNyArMyw3IEBACiAgICBzdGFjayBk dXJpbmcgYSBzeXN0ZW0gY2FsbC4gKi8KIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKLSAgICB0 YXJnZXRfbG9uZyB1cmVnc1sxOF07CisgICAgYWJpX2xvbmcgdXJlZ3NbMThdOwogfTsKIAogI2Rl ZmluZSBBUk1fY3Bzcgl1cmVnc1sxNl0KSW5kZXg6IHFlbXUvY29uZmlndXJlCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHFlbXUub3JpZy9jb25maWd1cmUJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvY29uZmlndXJlCTIwMDctMTAtMTIgMTk6MTQ6MjMuMDAwMDAwMDAwICswMDAw CkBAIC01MDQsNyArNTA0LDcgQEAKICAgICBmaQogIyB0aGUgZm9sbG93aW5nIGFyZSBMaW51eCBz cGVjaWZpYwogICAgIGlmIFsgIiRsaW51eF91c2VyIiA9ICJ5ZXMiIF0gOyB0aGVuCi0gICAgICAg IHRhcmdldF9saXN0PSJpMzg2LWxpbnV4LXVzZXIgYXJtLWxpbnV4LXVzZXIgYXJtZWItbGludXgt dXNlciBzcGFyYy1saW51eC11c2VyIHBwYy1saW51eC11c2VyIG1pcHMtbGludXgtdXNlciBtaXBz ZWwtbGludXgtdXNlciBtNjhrLWxpbnV4LXVzZXIgYWxwaGEtbGludXgtdXNlciBwcGM2NC1saW51 eC11c2VyIHNoNC1saW51eC11c2VyIGNyaXMtbGludXgtdXNlciAkdGFyZ2V0X2xpc3QiCisgICAg ICAgIHRhcmdldF9saXN0PSJpMzg2LWxpbnV4LXVzZXIgYXJtLWxpbnV4LXVzZXIgYXJtZWItbGlu dXgtdXNlciBzcGFyYy1saW51eC11c2VyIHNwYXJjNjQtbGludXgtdXNlciBzcGFyYzMycGx1cy1s aW51eC11c2VyIHBwYy1saW51eC11c2VyIG1pcHMtbGludXgtdXNlciBtaXBzZWwtbGludXgtdXNl ciBtNjhrLWxpbnV4LXVzZXIgYWxwaGEtbGludXgtdXNlciBwcGM2NC1saW51eC11c2VyIHNoNC1s aW51eC11c2VyIGNyaXMtbGludXgtdXNlciAkdGFyZ2V0X2xpc3QiCiAgICAgZmkKICMgdGhlIGZv bGxvd2luZyBhcmUgRGFyd2luIHNwZWNpZmljCiAgICAgaWYgWyAiJGRhcndpbl91c2VyIiA9ICJ5 ZXMiIF0gOyB0aGVuCkBAIC05MzMsNiArOTMzLDcgQEAKIFsgIiR0YXJnZXRfY3B1IiA9ICJhcm1l YiIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwogWyAiJHRhcmdldF9jcHUiID0gInNwYXJjIiBd ICYmIHRhcmdldF9iaWdlbmRpYW49eWVzCiBbICIkdGFyZ2V0X2NwdSIgPSAic3BhcmM2NCIgXSAm JiB0YXJnZXRfYmlnZW5kaWFuPXllcworWyAiJHRhcmdldF9jcHUiID0gInNwYXJjMzJwbHVzIiBd ICYmIHRhcmdldF9iaWdlbmRpYW49eWVzCiBbICIkdGFyZ2V0X2NwdSIgPSAicHBjIiBdICYmIHRh cmdldF9iaWdlbmRpYW49eWVzCiBbICIkdGFyZ2V0X2NwdSIgPSAicHBjNjQiIF0gJiYgdGFyZ2V0 X2JpZ2VuZGlhbj15ZXMKIFsgIiR0YXJnZXRfY3B1IiA9ICJwcGNlbWIiIF0gJiYgdGFyZ2V0X2Jp Z2VuZGlhbj15ZXMKQEAgLTEwMjUsMTcgKzEwMjYsMjYgQEAKICAgZWNobyAiI2RlZmluZSBUQVJH RVRfU1BBUkMgMSIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX1NQQVJDNjQg MSIgPj4gJGNvbmZpZ19oCiAgIGVsZmxvYWQzMj0ieWVzIgorZWxpZiB0ZXN0ICIkdGFyZ2V0X2Nw dSIgPSAic3BhcmMzMnBsdXMiIDsgdGhlbgorICBlY2hvICJUQVJHRVRfQVJDSD1zcGFyYzY0IiA+ PiAkY29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJUj1zcGFyYyIgPj4gJGNvbmZpZ19t YWsKKyAgZWNobyAiI2RlZmluZSBUQVJHRVRfQVJDSCBcInNwYXJjNjRcIiIgPj4gJGNvbmZpZ19o CisgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX1NQQVJDIDEiID4+ICRjb25maWdfaAorICBlY2hvICIj ZGVmaW5lIFRBUkdFVF9TUEFSQzY0IDEiID4+ICRjb25maWdfaAorICBlY2hvICIjZGVmaW5lIFRB UkdFVF9BQkkzMiAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gInBw YyIgOyB0aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXBwYyIgPj4gJGNvbmZpZ19tYWsKICAgZWNo byAiI2RlZmluZSBUQVJHRVRfQVJDSCBcInBwY1wiIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2Rl ZmluZSBUQVJHRVRfUFBDIDEiID4+ICRjb25maWdfaAogZWxpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIg PSAicHBjNjQiIDsgdGhlbgogICBlY2hvICJUQVJHRVRfQVJDSD1wcGM2NCIgPj4gJGNvbmZpZ19t YWsKKyAgZWNobyAiVEFSR0VUX0FCSV9ESVI9cHBjIiA+PiAkY29uZmlnX21hawogICBlY2hvICIj ZGVmaW5lIFRBUkdFVF9BUkNIIFwicHBjNjRcIiIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNkZWZp bmUgVEFSR0VUX1BQQyAxIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfUFBD NjQgMSIgPj4gJGNvbmZpZ19oCiBlbGlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJwcGNlbWIiIDsg dGhlbgogICBlY2hvICJUQVJHRVRfQVJDSD1wcGNlbWIiID4+ICRjb25maWdfbWFrCisgIGVjaG8g IlRBUkdFVF9BQklfRElSPXBwYyIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBUQVJH RVRfQVJDSCBcInBwY2VtYlwiIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRf UFBDIDEiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9QUENFTUIgMSIgPj4g JGNvbmZpZ19oCkBAIC0xMTA2LDcgKzExMTYsNyBAQAogICBlY2hvICIjZGVmaW5lIENPTkZJR19E QVJXSU5fVVNFUiAxIiA+PiAkY29uZmlnX2gKIGZpCiAKLWlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9 ICJhcm0iIC1vICIkdGFyZ2V0X2NwdSIgPSAiYXJtZWIiIC1vICIkdGFyZ2V0X2NwdSIgPSAic3Bh cmMiIC1vICIkdGFyZ2V0X2NwdSIgPSAic3BhcmM2NCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtNjhr IiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHMiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwc2VsIiAt byAiJHRhcmdldF9jcHUiID0gIm1pcHNuMzIiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwc24zMmVs IiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHM2NCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzNjRl bCI7IHRoZW4KK2lmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJhcm0iIC1vICIkdGFyZ2V0X2NwdSIg PSAiYXJtZWIiIC1vICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMiIC1vICIkdGFyZ2V0X2NwdSIgPSAi c3BhcmM2NCIgIC1vICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMzMnBsdXMiIC1vICIkdGFyZ2V0X2Nw dSIgPSAibTY4ayIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzIiAtbyAiJHRhcmdldF9jcHUiID0g Im1pcHNlbCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzbjMyIiAtbyAiJHRhcmdldF9jcHUiID0g Im1pcHNuMzJlbCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzNjQiIC1vICIkdGFyZ2V0X2NwdSIg PSAibWlwczY0ZWwiOyB0aGVuCiAgIGVjaG8gIkNPTkZJR19TT0ZURkxPQVQ9eWVzIiA+PiAkY29u ZmlnX21hawogICBlY2hvICIjZGVmaW5lIENPTkZJR19TT0ZURkxPQVQgMSIgPj4gJGNvbmZpZ19o CiBmaQpJbmRleDogcWVtdS90aHVuay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90aHVuay5j CTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3RodW5rLmMJMjAw Ny0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTEzNiwxMyArMTM2LDEzIEBACiAg ICAgY2FzZSBUWVBFX1VMT05HTE9ORzoKICAgICAgICAgKih1aW50NjRfdCAqKWRzdCA9IHRzd2Fw NjQoKih1aW50NjRfdCAqKXNyYyk7CiAgICAgICAgIGJyZWFrOwotI2lmIEhPU1RfTE9OR19CSVRT ID09IDMyICYmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIKKyNpZiBIT1NUX0xPTkdfQklUUyA9PSAz MiAmJiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIKICAgICBjYXNlIFRZUEVfTE9ORzoKICAgICBjYXNl IFRZUEVfVUxPTkc6CiAgICAgY2FzZSBUWVBFX1BUUlZPSUQ6CiAgICAgICAgICoodWludDMyX3Qg Kilkc3QgPSB0c3dhcDMyKCoodWludDMyX3QgKilzcmMpOwogICAgICAgICBicmVhazsKLSNlbGlm IEhPU1RfTE9OR19CSVRTID09IDY0ICYmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIKKyNlbGlmIEhP U1RfTE9OR19CSVRTID09IDY0ICYmIFRBUkdFVF9BQklfQklUUyA9PSAzMgogICAgIGNhc2UgVFlQ RV9MT05HOgogICAgIGNhc2UgVFlQRV9VTE9ORzoKICAgICBjYXNlIFRZUEVfUFRSVk9JRDoKSW5k ZXg6IHFlbXUvdGh1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGh1bmsuaAkyMDA3LTEw LTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90aHVuay5oCTIwMDctMTAtMTEg MTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIGlmIChp c19ob3N0KSB7CiAgICAgICAgICAgICByZXR1cm4gSE9TVF9MT05HX1NJWkU7CiAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gVEFSR0VUX0xPTkdfU0laRTsKKyAgICAgICAgICAg IHJldHVybiBUQVJHRVRfQUJJX0JJVFMgLyA4OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgVFlQRV9BUlJBWToKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICAgICBpZiAoaXNf aG9zdCkgewogICAgICAgICAgICAgcmV0dXJuIEhPU1RfTE9OR19TSVpFOwogICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgcmV0dXJuIFRBUkdFVF9MT05HX1NJWkU7CisgICAgICAgICAgICBy ZXR1cm4gVEFSR0VUX0FCSV9CSVRTIC8gODsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg ICBjYXNlIFRZUEVfQVJSQVk6CkluZGV4OiBxZW11L01ha2VmaWxlLnRhcmdldAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvTWFrZWZpbGUudGFyZ2V0CTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAw MDAwICswMDAwCisrKyBxZW11L01ha2VmaWxlLnRhcmdldAkyMDA3LTEwLTEyIDE5OjE2OjA4LjAw MDAwMDAwMCArMDAwMApAQCAtMjgsNyArMjgsMTAgQEAKIGVuZGlmCiBpZmRlZiBDT05GSUdfTElO VVhfVVNFUgogVlBBVEgrPTokKFNSQ19QQVRIKS9saW51eC11c2VyCi1DUFBGTEFHUys9LUkkKFNS Q19QQVRIKS9saW51eC11c2VyIC1JJChTUkNfUEFUSCkvbGludXgtdXNlci8kKFRBUkdFVF9BUkNI KQoraWZuZGVmIFRBUkdFVF9BQklfRElSCisgIFRBUkdFVF9BQklfRElSPSQoVEFSR0VUX0FSQ0gp CitlbmRpZgorQ1BQRkxBR1MrPS1JJChTUkNfUEFUSCkvbGludXgtdXNlciAtSSQoU1JDX1BBVEgp L2xpbnV4LXVzZXIvJChUQVJHRVRfQUJJX0RJUikKIGVuZGlmCiBCQVNFX0NGTEFHUz0KIEJBU0Vf TERGTEFHUz0KQEAgLTYzLDYgKzY2LDExIEBACiAgICAgVEFSR0VUX0FSQ0gyPW1pcHM2NGVsCiAg IGVuZGlmCiBlbmRpZgoraWZlcSAoJChUQVJHRVRfQVJDSCksc3BhcmM2NCkKKyAgaWZlcSAoJChU QVJHRVRfQUJJX0RJUiksc3BhcmMpCisgICAgVEFSR0VUX0FSQ0gyPXNwYXJjMzJwbHVzCisgIGVu ZGlmCitlbmRpZgogUUVNVV9VU0VSPXFlbXUtJChUQVJHRVRfQVJDSDIpCiAjIHN5c3RlbSBlbXVs YXRvciBuYW1lCiBpZmRlZiBDT05GSUdfU09GVE1NVQpJbmRleDogcWVtdS90YXJnZXQtc3BhcmMv b3BfbWVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RhcmdldC1zcGFyYy9vcF9tZW0uaAky MDA3LTEwLTEyIDE3OjU1OjI0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90YXJnZXQtc3BhcmMv b3BfbWVtLmgJMjAwNy0xMC0xMiAxNzo1ODozNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsMjAgKzEs MjYgQEAKKyNpZmRlZiBUQVJHRVRfQUJJMzIKKyNkZWZpbmUgQUREUih4KSAoKHgpICYgMHhmZmZm ZmZmZikKKyNlbHNlCisjZGVmaW5lIEFERFIoeCkgKHgpCisjZW5kaWYKKwogLyoqKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW50ZWdlciBsb2FkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKioqLwogI2RlZmluZSBTUEFSQ19MRF9PUChuYW1lLCBxcCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogdm9pZCBPUFBST1RPIGdsdWUoZ2x1 ZShvcF8sIG5hbWUpLCBNRU1TVUZGSVgpKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFQxID0gKHRhcmdldF91bG9uZylnbHVlKHFw LCBNRU1TVUZGSVgpKFQwKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFQxID0gKHRh cmdldF91bG9uZylnbHVlKHFwLCBNRU1TVUZGSVgpKEFERFIoVDApKTsgICAgICAgICAgICAgICAg ICAgICAgICAgXAogfQogCiAjZGVmaW5lIFNQQVJDX0xEX09QX1MobmFtZSwgcXApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBPUFBST1RPIGdsdWUo Z2x1ZShvcF8sIG5hbWUpLCBNRU1TVUZGSVgpKHZvaWQpICAgICAgICAgICAgICAgICBcCiAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgIFQxID0gKHRhcmdldF9sb25nKWdsdWUocXAsIE1FTVNVRkZJ WCkoVDApOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFQxID0gKHRhcmdldF9sb25n KWdsdWUocXAsIE1FTVNVRkZJWCkoQUREUihUMCkpOyAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgfQogCiAjZGVmaW5lIFNQQVJDX1NUX09QKG5hbWUsIG9wKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9w XywgbmFtZSksIE1FTVNVRkZJWCkodm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ2x1ZShvcCwgTUVNU1VGRklYKShUMCwgVDEpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdsdWUob3AsIE1FTVNV RkZJWCkoQUREUihUMCksIFQxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKIH0KIAogU1BBUkNfTERfT1AobGQsIGxkbCk7CkBAIC0zMCw2MCArMzYsNjAgQEAKIAogdm9p ZCBPUFBST1RPIGdsdWUob3Bfc3RkLCBNRU1TVUZGSVgpKHZvaWQpCiB7Ci0gICAgZ2x1ZShzdGws IE1FTVNVRkZJWCkoVDAsIFQxKTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKSgoVDAgKyA0KSwg VDIpOworICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKEFERFIoVDApLCBUMSk7CisgICAgZ2x1ZShz dGwsIE1FTVNVRkZJWCkoKEFERFIoVDAgKyA0KSksIFQyKTsKIH0KIAogdm9pZCBPUFBST1RPIGds dWUob3BfbGRzdHViLCBNRU1TVUZGSVgpKHZvaWQpCiB7Ci0gICAgVDEgPSBnbHVlKGxkdWIsIE1F TVNVRkZJWCkoVDApOwotICAgIGdsdWUoc3RiLCBNRU1TVUZGSVgpKFQwLCAweGZmKTsgICAgIC8q IFhYWDogU2hvdWxkIGJlIEF0b21pY2FsbHkgKi8KKyAgICBUMSA9IGdsdWUobGR1YiwgTUVNU1VG RklYKShBRERSKFQwKSk7CisgICAgZ2x1ZShzdGIsIE1FTVNVRkZJWCkoQUREUihUMCksIDB4ZmYp OyAgICAgLyogWFhYOiBTaG91bGQgYmUgQXRvbWljYWxseSAqLwogfQogCiB2b2lkIE9QUFJPVE8g Z2x1ZShvcF9zd2FwLCBNRU1TVUZGSVgpKHZvaWQpCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIHRtcCA9 IGdsdWUobGRsLCBNRU1TVUZGSVgpKFQwKTsKLSAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCwg VDEpOyAgICAgICAvKiBYWFg6IFNob3VsZCBiZSBBdG9taWNhbGx5ICovCisgICAgdGFyZ2V0X3Vs b25nIHRtcCA9IGdsdWUobGRsLCBNRU1TVUZGSVgpKEFERFIoVDApKTsKKyAgICBnbHVlKHN0bCwg TUVNU1VGRklYKShBRERSKFQwKSwgVDEpOyAgICAgICAvKiBYWFg6IFNob3VsZCBiZSBBdG9taWNh bGx5ICovCiAgICAgVDEgPSB0bXA7CiB9CiAKIHZvaWQgT1BQUk9UTyBnbHVlKG9wX2xkZCwgTUVN U1VGRklYKSh2b2lkKQogewotICAgIFQxID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoVDApOwotICAg IFQwID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoKFQwICsgNCkpOworICAgIFQxID0gZ2x1ZShsZGws IE1FTVNVRkZJWCkoQUREUihUMCkpOworICAgIFQwID0gZ2x1ZShsZGwsIE1FTVNVRkZJWCkoKEFE RFIoVDAgKyA0KSkpOwogfQogCiAvKioqICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0aW5n LXBvaW50IHN0b3JlICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCiB2b2lkIE9QUFJPVE8g Z2x1ZShvcF9zdGYsIE1FTVNVRkZJWCkgKHZvaWQpCiB7Ci0gICAgZ2x1ZShzdGZsLCBNRU1TVUZG SVgpKFQwLCBGVDApOworICAgIGdsdWUoc3RmbCwgTUVNU1VGRklYKShBRERSKFQwKSwgRlQwKTsK IH0KIAogdm9pZCBPUFBST1RPIGdsdWUob3Bfc3RkZiwgTUVNU1VGRklYKSAodm9pZCkKIHsKLSAg ICBnbHVlKHN0ZnEsIE1FTVNVRkZJWCkoVDAsIERUMCk7CisgICAgZ2x1ZShzdGZxLCBNRU1TVUZG SVgpKEFERFIoVDApLCBEVDApOwogfQogCiAvKioqICAgICAgICAgICAgICAgICAgICAgICAgIEZs b2F0aW5nLXBvaW50IGxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCiB2b2lkIE9Q UFJPVE8gZ2x1ZShvcF9sZGYsIE1FTVNVRkZJWCkgKHZvaWQpCiB7Ci0gICAgRlQwID0gZ2x1ZShs ZGZsLCBNRU1TVUZGSVgpKFQwKTsKKyAgICBGVDAgPSBnbHVlKGxkZmwsIE1FTVNVRkZJWCkoQURE UihUMCkpOwogfQogCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9sZGRmLCBNRU1TVUZGSVgpICh2b2lk KQogewotICAgIERUMCA9IGdsdWUobGRmcSwgTUVNU1VGRklYKShUMCk7CisgICAgRFQwID0gZ2x1 ZShsZGZxLCBNRU1TVUZGSVgpKEFERFIoVDApKTsKIH0KIAogI2lmZGVmIFRBUkdFVF9TUEFSQzY0 CiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9sZHV3LCBNRU1TVUZGSVgpKHZvaWQpCiB7Ci0gICAgVDEg PSAodWludDY0X3QpKGdsdWUobGRsLCBNRU1TVUZGSVgpKFQwKSAmIDB4ZmZmZmZmZmYpOworICAg IFQxID0gKHVpbnQ2NF90KShnbHVlKGxkbCwgTUVNU1VGRklYKShBRERSKFQwKSkgJiAweGZmZmZm ZmZmKTsKIH0KIAogdm9pZCBPUFBST1RPIGdsdWUob3BfbGRzdywgTUVNU1VGRklYKSh2b2lkKQog ewotICAgIFQxID0gKGludDY0X3QpKGdsdWUobGRsLCBNRU1TVUZGSVgpKFQwKSAmIDB4ZmZmZmZm ZmYpOworICAgIFQxID0gKGludDY0X3QpKGdsdWUobGRsLCBNRU1TVUZGSVgpKEFERFIoVDApKSAm IDB4ZmZmZmZmZmYpOwogfQogCiBTUEFSQ19MRF9PUChsZHgsIGxkcSk7Cg== ------=_Part_27363_15081955.1192217823286--