From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25624 invoked by alias); 3 Jul 2008 09:31:10 -0000 Received: (qmail 25469 invoked by uid 22791); 3 Jul 2008 09:30:43 -0000 X-Spam-Check-By: sourceware.org Received: from rv-out-0708.google.com (HELO rv-out-0708.google.com) (209.85.198.246) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 03 Jul 2008 09:29:54 +0000 Received: by rv-out-0708.google.com with SMTP id b17so752225rvf.48 for ; Thu, 03 Jul 2008 02:29:51 -0700 (PDT) Received: by 10.141.71.8 with SMTP id y8mr4991637rvk.32.1215077391731; Thu, 03 Jul 2008 02:29:51 -0700 (PDT) Received: by 10.141.32.18 with HTTP; Thu, 3 Jul 2008 02:29:51 -0700 (PDT) Message-ID: Date: Thu, 03 Jul 2008 09:31:00 -0000 From: teawater To: gdb@sourceware.org, gdb-patches@sourceware.org Subject: GDB record patch 0.1.6 for GDB branch msnyder-reverse-20080609-branch release MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_8223_24798525.1215077391701" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-07/txt/msg00030.txt.bz2 ------=_Part_8223_24798525.1215077391701 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1130 GDB record patch make GDB support Reversible Debugging. It make GDB disassemble the instruction that will be executed to get which memory and register will be changed and record them to record all program running message. Through these on the use of this information to achieve the implementation of the GDB Reversible Debugging function. To get more message, you can go to http://sourceforge.net/projects/record/ . The main change of this version is change record function to be a target of GDB. Then it can work with the interface of branch msnyder-reverse-20080609-branch. The command in this branch is so cool such as "rn"(reverse-next), "rs"(reverse-step) and "rc"(reverse-continue). I like it. :) You can start record target with command "rec"(record) or "target record". I try to use some simple commands such as "disconnect" and "detach" to instead command "delrecord"(dr) and "stoprecord"(sr). But these commands all have other affect to GDB such as call function "no_shared_libraries". So I keep the command "delrecord"(dr) and "stoprecord"(sr). Please give me your advice about GDB record. Thanks a lot. :) teawater ------=_Part_8223_24798525.1215077391701 Content-Type: text/x-patch; name=gdb-record-0.1.6.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fi75mp380 Content-Disposition: attachment; filename=gdb-record-0.1.6.patch Content-length: 348453 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCA4OTFiMzFhLi5mNmEzNmI4IDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC02NDEsNyArNjQx LDggQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVw cmludC5jIGFkYS12YWxwcmludC5jICBcCiAJdXNlci1yZWdzLmMgXAogCXZh bGFyaXRoLmMgdmFsb3BzLmMgdmFscHJpbnQuYyB2YWx1ZS5jIHZhcm9iai5j IHZlYy5jIFwKIAl3cmFwcGVyLmMgXAotCXhtbC10ZGVzYy5jIHhtbC1zdXBw b3J0LmMKKwl4bWwtdGRlc2MuYyB4bWwtc3VwcG9ydC5jIFwKKwlyZWNvcmQu YwogCiBMSU5URklMRVMgPSAkKFNGSUxFUykgJChZWUZJTEVTKSAkKENPTkZJ R19TUkNTKSBpbml0LmMKIApAQCAtOTIwLDYgKzkyMSw3IEBAIHhjb2Zmc29s aWJfaCA9IHhjb2Zmc29saWIuaAogeG1sX3N1cHBvcnRfaCA9IHhtbC1zdXBw b3J0LmggJChnZGJfb2JzdGFja19oKSAkKHZlY19oKQogeG1sX3RkZXNjX2gg PSB4bWwtdGRlc2MuaAogeHRlbnNhX3RkZXBfaCA9IHh0ZW5zYS10ZGVwLmgg CityZWNvcmRfaCA9IHJlY29yZC5oCiAKICMKICMgZ2RiL2NsaS8gaGVhZGVy cwpAQCAtMTA5MSw3ICsxMDkzLDggQEAgQ09NTU9OX09CUyA9ICQoREVQRklM RVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAogCXRyYW1wLWZyYW1lLm8g XAogCXNvbGliLm8gc29saWItbnVsbC5vIFwKIAlwcm9sb2d1ZS12YWx1ZS5v IG1lbW9yeS1tYXAubyB4bWwtc3VwcG9ydC5vIFwKLQl0YXJnZXQtZGVzY3Jp cHRpb25zLm8gdGFyZ2V0LW1lbW9yeS5vIHhtbC10ZGVzYy5vIHhtbC1idWls dGluLm8KKwl0YXJnZXQtZGVzY3JpcHRpb25zLm8gdGFyZ2V0LW1lbW9yeS5v IHhtbC10ZGVzYy5vIHhtbC1idWlsdGluLm8gXAorCXJlY29yZC5vCiAKIFRT T0JTID0gaW5mbG93Lm8KIApAQCAtMjI2OSw3ICsyMjcyLDcgQEAgaTM4Ni1s aW51eC10ZGVwLm86IGkzODYtbGludXgtdGRlcC5jICQoZGVmc19oKSAkKGdk YmNvcmVfaCkgJChmcmFtZV9oKSBcCiAJJCh2YWx1ZV9oKSAkKHJlZ2NhY2hl X2gpICQoaW5mZXJpb3JfaCkgJChvc2FiaV9oKSAkKHJlZ2dyb3Vwc19oKSBc CiAJJChkd2FyZjJfZnJhbWVfaCkgJChnZGJfc3RyaW5nX2gpICQoaTM4Nl90 ZGVwX2gpIFwKIAkkKGkzODZfbGludXhfdGRlcF9oKSAkKGdsaWJjX3RkZXBf aCkgJChzb2xpYl9zdnI0X2gpICQoc3ltdGFiX2gpIFwKLQkkKGFyY2hfdXRp bHNfaCkgJChyZWdzZXRfaCkKKwkkKGFyY2hfdXRpbHNfaCkgJChyZWdzZXRf aCkgJChyZWNvcmRfaCkKIGkzODYtbmF0Lm86IGkzODYtbmF0LmMgJChkZWZz X2gpICQoYnJlYWtwb2ludF9oKSAkKGNvbW1hbmRfaCkgJChnZGJjbWRfaCkg XAogCSQodGFyZ2V0X2gpCiBpMzg2bmJzZC1uYXQubzogaTM4Nm5ic2QtbmF0 LmMgJChkZWZzX2gpICQoZ2RiY29yZV9oKSAkKHJlZ2NhY2hlX2gpIFwKQEAg LTIzMDEsNyArMjMwNCw3IEBAIGkzODYtdGRlcC5vOiBpMzg2LXRkZXAuYyAk KGRlZnNfaCkgJChhcmNoX3V0aWxzX2gpICQoY29tbWFuZF9oKSBcCiAJJChn ZGJjbWRfaCkgJChnZGJjb3JlX2gpICQob2JqZmlsZXNfaCkgJChvc2FiaV9o KSAkKHJlZ2NhY2hlX2gpIFwKIAkkKHJlZ2dyb3Vwc19oKSAkKHJlZ3NldF9o KSAkKHN5bWZpbGVfaCkgJChzeW10YWJfaCkgJCh0YXJnZXRfaCkgXAogCSQo dmFsdWVfaCkgJChkaXNfYXNtX2gpICQoZ2RiX2Fzc2VydF9oKSAkKGdkYl9z dHJpbmdfaCkgXAotCSQoaTM4Nl90ZGVwX2gpICQoaTM4N190ZGVwX2gpCisJ JChpMzg2X3RkZXBfaCkgJChpMzg3X3RkZXBfaCkgJChyZWNvcmRfaCkKIGkz ODZ2NC1uYXQubzogaTM4NnY0LW5hdC5jICQoZGVmc19oKSAkKHZhbHVlX2gp ICQoaW5mZXJpb3JfaCkgJChyZWdjYWNoZV9oKSBcCiAJJChpMzg2X3RkZXBf aCkgJChpMzg3X3RkZXBfaCkgJChncmVnc2V0X2gpCiBpMzg3LXRkZXAubzog aTM4Ny10ZGVwLmMgJChkZWZzX2gpICQoZG91Ymxlc3RfaCkgJChmbG9hdGZv cm1hdF9oKSAkKGZyYW1lX2gpIFwKQEAgLTIzMzIsMTMgKzIzMzUsMTQgQEAg aW5mY21kLm86IGluZmNtZC5jICQoZGVmc19oKSAkKGdkYl9zdHJpbmdfaCkg JChzeW10YWJfaCkgJChnZGJ0eXBlc19oKSBcCiAJJChvYmpmaWxlc19oKSAk KGNvbXBsZXRlcl9oKSAkKHVpX291dF9oKSAkKGV2ZW50X3RvcF9oKSBcCiAJ JChwYXJzZXJfZGVmc19oKSAkKHJlZ2NhY2hlX2gpICQocmVnZ3JvdXBzX2gp ICQoYmxvY2tfaCkgXAogCSQoc29saWJfaCkgJChnZGJfYXNzZXJ0X2gpICQo b2JzZXJ2ZXJfaCkgJCh0YXJnZXRfZGVzY3JpcHRpb25zX2gpIFwKLQkkKHVz ZXJfcmVnc19oKSAkKGV4Y2VwdGlvbnNfaCkgJChjbGlfZGVjb2RlX2gpICQo Z2RidGhyZWFkX2gpCisJJCh1c2VyX3JlZ3NfaCkgJChleGNlcHRpb25zX2gp ICQoY2xpX2RlY29kZV9oKSAkKGdkYnRocmVhZF9oKSBcCisJJChyZWNvcmRf aCkKIGluZi1sb29wLm86IGluZi1sb29wLmMgJChkZWZzX2gpICQoaW5mZXJp b3JfaCkgJCh0YXJnZXRfaCkgJChldmVudF9sb29wX2gpIFwKIAkkKGV2ZW50 X3RvcF9oKSAkKGluZl9sb29wX2gpICQocmVtb3RlX2gpICQoZXhjZXB0aW9u c19oKSBcCiAJJChsYW5ndWFnZV9oKQogaW5mbG93Lm86IGluZmxvdy5jICQo ZGVmc19oKSAkKGZyYW1lX2gpICQoaW5mZXJpb3JfaCkgJChjb21tYW5kX2gp IFwKIAkkKHNlcmlhbF9oKSAkKHRlcm1pbmFsX2gpICQodGFyZ2V0X2gpICQo Z2RidGhyZWFkX2gpICQoZ2RiX3N0cmluZ19oKSBcCi0JJChpbmZsb3dfaCkg JChnZGJfc2VsZWN0X2gpCisJJChpbmZsb3dfaCkgJChnZGJfc2VsZWN0X2gp ICQocmVjb3JkX2gpCiBpbmYtcHRyYWNlLm86IGluZi1wdHJhY2UuYyAkKGRl ZnNfaCkgJChjb21tYW5kX2gpICQoaW5mZXJpb3JfaCkgJChpbmZsb3dfaCkg XAogCSQoZ2RiY29yZV9oKSAkKHJlZ2NhY2hlX2gpICQoZ2RiX3N0ZGludF9o KSAkKGdkYl9hc3NlcnRfaCkgXAogCSQoZ2RiX3N0cmluZ19oKSAkKGdkYl9w dHJhY2VfaCkgJChnZGJfd2FpdF9oKSAkKGluZl9jaGlsZF9oKQpAQCAtMjM0 Nyw3ICsyMzUxLDcgQEAgaW5mcnVuLm86IGluZnJ1bi5jICQoZGVmc19oKSAk KGdkYl9zdHJpbmdfaCkgJChzeW10YWJfaCkgJChmcmFtZV9oKSBcCiAJJChn ZGJjb3JlX2gpICQoZ2RiY21kX2gpICQoY2xpX3NjcmlwdF9oKSAkKHRhcmdl dF9oKSAkKGdkYnRocmVhZF9oKSBcCiAJJChhbm5vdGF0ZV9oKSAkKHN5bWZp bGVfaCkgJCh0b3BfaCkgJChpbmZfbG9vcF9oKSAkKHJlZ2NhY2hlX2gpIFwK IAkkKHZhbHVlX2gpICQob2JzZXJ2ZXJfaCkgJChsYW5ndWFnZV9oKSAkKHNv bGliX2gpICQoZ2RiX2Fzc2VydF9oKSBcCi0JJChtaV9jb21tb25faCkgJCht YWluX2gpCisJJChtaV9jb21tb25faCkgJChtYWluX2gpICQocmVjb3JkX2gp CiBpbmYtdHRyYWNlLm86IGluZi10dHJhY2UuYyAkKGRlZnNfaCkgJChjb21t YW5kX2gpICQoZ2RiY29yZV9oKSBcCiAJJChnZGJ0aHJlYWRfaCkgJChpbmZl cmlvcl9oKSAkKHRhcmdldF9oKSBcCiAJJChnZGJfYXNzZXJ0X2gpICQoZ2Ri X3N0cmluZ19oKSAkKGluZl9jaGlsZF9oKSAkKGluZl90dHJhY2VfaCkKQEAg LTIzOTMsNyArMjM5Nyw4IEBAIGxpbnV4LW5hdC5vOiBsaW51eC1uYXQuYyAk KGRlZnNfaCkgJChpbmZlcmlvcl9oKSAkKHRhcmdldF9oKSAkKGdkYl9zdHJp bmdfaCkgXAogCSQoZ2RiX3dhaXRfaCkgJChnZGJfYXNzZXJ0X2gpICQobGlu dXhfbmF0X2gpICQoZ2RidGhyZWFkX2gpIFwKIAkkKGdkYmNtZF9oKSAkKHJl Z2NhY2hlX2gpICQocmVnc2V0X2gpICQoaW5mX3B0cmFjZV9oKSAkKGF1eHZf aCkgXAogCSQoZWxmX2JmZF9oKSAkKGdyZWdzZXRfaCkgJChnZGJjb3JlX2gp ICQoZ2RidGhyZWFkX2gpICQoZ2RiX3N0YXRfaCkgXAotCSQobGludXhfZm9y a19oKSAkKGluZl9sb29wX2gpICQoZXZlbnRfbG9vcF9oKSAkKGV2ZW50X3Rv cF9oKQorCSQobGludXhfZm9ya19oKSAkKGluZl9sb29wX2gpICQoZXZlbnRf bG9vcF9oKSAkKGV2ZW50X3RvcF9oKSBcCisJJChyZWNvcmRfaCkKIGxpbnV4 LXRocmVhZC1kYi5vOiBsaW51eC10aHJlYWQtZGIuYyAkKGRlZnNfaCkgJChn ZGJfYXNzZXJ0X2gpIFwKIAkkKGdkYl9wcm9jX3NlcnZpY2VfaCkgJChnZGJf dGhyZWFkX2RiX2gpICQoYmZkX2gpICQoZXhjZXB0aW9uc19oKSBcCiAJJChn ZGJ0aHJlYWRfaCkgJChpbmZlcmlvcl9oKSAkKHN5bWZpbGVfaCkgJChvYmpm aWxlc19oKSAkKHRhcmdldF9oKSBcCkBAIC0yNjYxLDcgKzI2NjYsNyBAQCBw LXZhbHByaW50Lm86IHAtdmFscHJpbnQuYyAkKGRlZnNfaCkgJChnZGJfb2Jz dGFja19oKSAkKHN5bXRhYl9oKSBcCiAJJChjcF9zdXBwb3J0X2gpCiByZWdj YWNoZS5vOiByZWdjYWNoZS5jICQoZGVmc19oKSAkKGluZmVyaW9yX2gpICQo dGFyZ2V0X2gpICQoZ2RiYXJjaF9oKSBcCiAJJChnZGJjbWRfaCkgJChyZWdj YWNoZV9oKSAkKHJlZ2dyb3Vwc19oKSAkKGdkYl9hc3NlcnRfaCkgXAotCSQo Z2RiX3N0cmluZ19oKSAkKGdkYmNtZF9oKSAkKG9ic2VydmVyX2gpCisJJChn ZGJfc3RyaW5nX2gpICQoZ2RiY21kX2gpICQob2JzZXJ2ZXJfaCkgJChyZWNv cmRfaCkKIHJlZ2dyb3Vwcy5vOiByZWdncm91cHMuYyAkKGRlZnNfaCkgJChy ZWdncm91cHNfaCkgJChnZGJ0eXBlc19oKSBcCiAJJChnZGJfYXNzZXJ0X2gp ICQocmVnY2FjaGVfaCkgJChjb21tYW5kX2gpICQoZ2RiY21kX2gpCiByZWdz ZXQubzogcmVnc2V0LmMgJChkZWZzX2gpICQocmVnc2V0X2gpICQoZ2RiX2Fz c2VydF9oKQpAQCAtMzA0Nyw2ICszMDUyLDggQEAgeHRlbnNhLXRkZXAubzog eHRlbnNhLXRkZXAuYyAkKGRlZnNfaCkgJChkb3VibGVzdF9oKSAkKGZyYW1l X2gpIFwKIAkkKHJlZ2dyb3Vwc19oKSAkKGFyY2hfdXRpbHNfaCkgJChvc2Fi aV9oKSAkKGJsb2NrX2gpICQoZ2RiX2Fzc2VydF9oKSBcCiAJJChlbGZfYmZk X2gpICQoeHRlbnNhX3RkZXBfaCkgJChkd2FyZjJfZnJhbWVfaCkgJChzb2xp Yl9zdnI0X2gpCiB4dGVuc2EtY29uZmlnLm86ICQoZGVmc19oKSAkKHh0ZW5z YV90ZGVwX2gpCityZWNvcmQubzogcmVjb3JkLmMgJChkZWZzX2gpICQodGFy Z2V0X2gpICQoZ2RiY21kX2gpICQocmVnY2FjaGVfaCkgXAorCSQoaW5mZXJp b3JfaCkgJChyZWNvcmRfaCkKIAogIwogIyBnZGIvY2xpLyBkZXBlbmRlbmNp ZXMKZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoLmMgYi9nZGIvZ2RiYXJjaC5j CmluZGV4IDY1OTRiMzUuLmRlZWIwNGYgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJh cmNoLmMKKysrIGIvZ2RiL2dkYmFyY2guYwpAQCAtMjM4LDYgKzIzOCw4IEBA IHN0cnVjdCBnZGJhcmNoCiAgIGdkYmFyY2hfdGFyZ2V0X3NpZ25hbF9mcm9t X2hvc3RfZnR5cGUgKnRhcmdldF9zaWduYWxfZnJvbV9ob3N0OwogICBnZGJh cmNoX3RhcmdldF9zaWduYWxfdG9faG9zdF9mdHlwZSAqdGFyZ2V0X3NpZ25h bF90b19ob3N0OwogICBnZGJhcmNoX3JlY29yZF9zcGVjaWFsX3N5bWJvbF9m dHlwZSAqcmVjb3JkX3NwZWNpYWxfc3ltYm9sOworICBnZGJhcmNoX3JlY29y ZF9mdHlwZSAqcmVjb3JkOworICBnZGJhcmNoX3JlY29yZF9kYXNtX2Z0eXBl ICpyZWNvcmRfZGFzbTsKIH07CiAKIApAQCAtMzY4LDYgKzM3MCw4IEBAIHN0 cnVjdCBnZGJhcmNoIHN0YXJ0dXBfZ2RiYXJjaCA9CiAgIGRlZmF1bHRfdGFy Z2V0X3NpZ25hbF9mcm9tX2hvc3QsICAvKiB0YXJnZXRfc2lnbmFsX2Zyb21f aG9zdCAqLwogICBkZWZhdWx0X3RhcmdldF9zaWduYWxfdG9faG9zdCwgIC8q IHRhcmdldF9zaWduYWxfdG9faG9zdCAqLwogICAwLCAgLyogcmVjb3JkX3Nw ZWNpYWxfc3ltYm9sICovCisgIE5VTEwsICAvKiByZWNvcmRfZnR5cGUgKi8K KyAgTlVMTCwgIC8qIHJlY29yZF9kYXNtX2Z0eXBlICovCiAgIC8qIHN0YXJ0 dXBfZ2RiYXJjaCgpICovCiB9OwogCkBAIC0zNjIxLDYgKzM2MjUsNDYgQEAg ZGVwcmVjYXRlZF9jdXJyZW50X2dkYmFyY2hfc2VsZWN0X2hhY2sgKHN0cnVj dCBnZGJhcmNoICpuZXdfZ2RiYXJjaCkKICAgcmVpbml0X2ZyYW1lX2NhY2hl ICgpOwogfQogCitpbnQKK2dkYmFyY2hfcmVjb3JkX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQoreworICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5V TEwpOworICByZXR1cm4gKGdkYmFyY2gtPnJlY29yZCAhPSBOVUxMKTsKK30K KworaW50CitnZGJhcmNoX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBhZGRyKQoreworICBnZGJfYXNzZXJ0IChnZGJhcmNo ICE9IE5VTEwpOworICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5yZWNvcmQgIT0g TlVMTCk7CisgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9yZWNvcmQgY2Fs bGVkXG4iKTsKKyAgcmV0dXJuIChnZGJhcmNoLT5yZWNvcmQgKGdkYmFyY2gs IGFkZHIpKTsKK30KKwordm9pZAorc2V0X2dkYmFyY2hfcmVjb3JkIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9yZWNvcmRfZnR5cGUgKiBy ZWNvcmQpCit7CisgIGdkYmFyY2gtPnJlY29yZCA9IHJlY29yZDsKK30KKwor dm9pZAorZ2RiYXJjaF9yZWNvcmRfZGFzbSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCit7CisgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Cisg IGdkYl9hc3NlcnQgKGdkYmFyY2gtPnJlY29yZF9kYXNtICE9IE5VTEwpOwor ICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQorICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfcmVjb3JkX2Rhc20gY2FsbGVk XG4iKTsKKyAgZ2RiYXJjaC0+cmVjb3JkX2Rhc20gKGdkYmFyY2gpOworfQor Cit2b2lkCitzZXRfZ2RiYXJjaF9yZWNvcmRfZGFzbSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisJCQkgZ2RiYXJjaF9yZWNvcmRfZGFzbV9mdHlwZSAq IHJlY29yZF9kYXNtKQoreworICBnZGJhcmNoLT5yZWNvcmRfZGFzbSA9IHJl Y29yZF9kYXNtOworfQorCiBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9nZGJh cmNoICh2b2lkKTsKIAogdm9pZApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gu aCBiL2dkYi9nZGJhcmNoLmgKaW5kZXggNDRkMWYyZC4uZmEwODIyNyAxMDA2 NDQKLS0tIGEvZ2RiL2dkYmFyY2guaAorKysgYi9nZGIvZ2RiYXJjaC5oCkBA IC05NzUsNiArOTc1LDIwIEBAIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaF9maW5kX2J5X2luZm8gKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbyk7 CiBleHRlcm4gdm9pZCBkZXByZWNhdGVkX2N1cnJlbnRfZ2RiYXJjaF9zZWxl Y3RfaGFjayAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwogCiAKKy8qIEZv ciB0aGUgcmVjb3JkIHRhcmdldCAqLworCitleHRlcm4gaW50IGdkYmFyY2hf cmVjb3JkX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKK3R5cGVkZWYg aW50IChnZGJhcmNoX3JlY29yZF9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7CitleHRlcm4gaW50IGdkYmFyY2hf cmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFk ZHIpOworZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfcmVjb3JkIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKwkJCQlnZGJhcmNoX3JlY29yZF9mdHlwZSAq IHJlY29yZCk7CisKK3R5cGVkZWYgdm9pZCAoZ2RiYXJjaF9yZWNvcmRfZGFz bV9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKK2V4dGVybiB2 b2lkIGdkYmFyY2hfcmVjb3JkX2Rhc20gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKTsKK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3JlY29yZF9kYXNtIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKwkJCQkgICAgIGdkYmFyY2hfcmVj b3JkX2Rhc21fZnR5cGUgKiByZWNvcmRfZGFzbSk7CisKKwogLyogUmVnaXN0 ZXIgcGVyLWFyY2hpdGVjdHVyZSBkYXRhLXBvaW50ZXIuCiAKICAgIFJlc2Vy dmUgc3BhY2UgZm9yIGEgcGVyLWFyY2hpdGVjdHVyZSBkYXRhLXBvaW50ZXIu ICBBbiBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9nZGIvaTM4Ni1saW51eC10 ZGVwLmMgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMKaW5kZXggNTI4NGY0YS4u MGQzZDIwNSAxMDA2NDQKLS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jCisr KyBiL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwpAQCAtMzcsNiArMzcsOSBAQAog I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICNpbmNsdWRlICJyZWdzZXQuaCIK IAorI2luY2x1ZGUgInJlY29yZC5oIgorI2luY2x1ZGUgPHN0ZGludC5oPgor CiAvKiBTdXBwb3J0ZWQgcmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCiBz dGF0aWMgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rpb24gaTM4Nl9saW51eF9y ZWdzZXRfc2VjdGlvbnNbXSA9CiB7CkBAIC0zNDcsNiArMzUwLDI1MzAgQEAg aTM4Nl9saW51eF93cml0ZV9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgQ09SRV9BRERSIHBjKQogICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5z aWduZWQgKHJlZ2NhY2hlLCBJMzg2X0xJTlVYX09SSUdfRUFYX1JFR05VTSwg LTEpOwogfQogDAorLyogVGhlc2UgbWFjcm9zIGFyZSB0aGUgc2l6ZSBvZiB0 aGUgdHlwZSB0aGF0IHdpbGwgYmUgdXNlIGluIHN5c3RlbSBjYWxsLiBUaGUg dmFsdWVzIG9mCisgICB0aGVzZSBtYWNyb3MgYXJlIGdvdHRlbiBmcm9tIExp bnV4IEtlcm5lbCBzb3VyY2UuICovCisjZGVmaW5lIEkzODZfUkVDT1JEX1NJ WkVfX29sZF9rZXJuZWxfc3RhdAkzMgorI2RlZmluZSBJMzg2X1JFQ09SRF9T SVpFX3RtcwkJCTE2CisjZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVfbG9mZl90 CQkJOAorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX2Zsb2NrCQkJMTYKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9vbGRvbGRfdXRzbmFtZQkJNDUKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV91c3RhdAkJCTIwCisjZGVmaW5lIEkz ODZfUkVDT1JEX1NJWkVfb2xkX3NpZ2FjdGlvbgkJMTQwCisjZGVmaW5lIEkz ODZfUkVDT1JEX1NJWkVfb2xkX3NpZ3NldF90CQkxMjgKKyNkZWZpbmUgSTM4 Nl9SRUNPUkRfU0laRV9ybGltaXQJCQk4CisjZGVmaW5lIEkzODZfUkVDT1JE X1NJWkVfcnVzYWdlCQkJNzIKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV90 aW1ldmFsCQk4CisjZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVfdGltZXpvbmUJ CTgKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9vbGRfZ2lkX3QJCTIKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9vbGRfdWlkX3QJCTIKKyNkZWZpbmUg STM4Nl9SRUNPUkRfU0laRV9mZF9zZXQJCQkxMjgKKyNkZWZpbmUgSTM4Nl9S RUNPUkRfU0laRV9kaXJlbnQJCQkyNjgKKyNkZWZpbmUgSTM4Nl9SRUNPUkRf U0laRV9kaXJlbnQ2NAkJMjc2CisjZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVf c3RhdGZzCQkJNjQKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9zdGF0ZnM2 NAkJODQKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9zb2NrYWRkcgkJMTYK KyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9pbnQJCQk0CisjZGVmaW5lIEkz ODZfUkVDT1JEX1NJWkVfbG9uZwkJCTQKKyNkZWZpbmUgSTM4Nl9SRUNPUkRf U0laRV91bG9uZwkJCTQKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9tc2do ZHIJCQkyOAorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX2l0aW1lcnZhbAkJ MTYKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9zdGF0CQkJODgKKyNkZWZp bmUgSTM4Nl9SRUNPUkRfU0laRV9vbGRfdXRzbmFtZQkJMzI1CisjZGVmaW5l IEkzODZfUkVDT1JEX1NJWkVfcnVzYWdlCQkJNzIKKyNkZWZpbmUgSTM4Nl9S RUNPUkRfU0laRV9zeXNpbmZvCQk2NAorI2RlZmluZSBJMzg2X1JFQ09SRF9T SVpFX21zcWlkX2RzCQk4OAorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX3No bWlkX2RzCQk4NAorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX25ld191dHNu YW1lCQkzOTAKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV90aW1leAkJCTEy OAorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX21lbV9kcWluZm8JCTI0Cisj ZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVfaWZfZHFibGsJCTY4CisjZGVmaW5l IEkzODZfUkVDT1JEX1NJWkVfZnNfcXVvdGFfc3RhdAkJNjgKKyNkZWZpbmUg STM4Nl9SRUNPUkRfU0laRV90aW1lc3BlYwkJOAorI2RlZmluZSBJMzg2X1JF Q09SRF9TSVpFX3BvbGxmZAkJCTgKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0la RV9ORlNfRkhTSVpFCQkzMgorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX2tu ZnNkX2ZoCQkxMzIKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9UQVNLX0NP TU1fTEVOCQkxNgorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX3NpZ2FjdGlv bgkJMTQwCisjZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVfc2lnc2V0X3QJCTgK KyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9zaWdpbmZvX3QJCTEyOAorI2Rl ZmluZSBJMzg2X1JFQ09SRF9TSVpFX2NhcF91c2VyX2RhdGFfdAkxMgorI2Rl ZmluZSBJMzg2X1JFQ09SRF9TSVpFX3N0YWNrX3QJCTEyCisjZGVmaW5lIEkz ODZfUkVDT1JEX1NJWkVfb2ZmX3QJCQlJMzg2X1JFQ09SRF9TSVpFX2xvbmcK KyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9zdGF0NjQJCQk5NgorI2RlZmlu ZSBJMzg2X1JFQ09SRF9TSVpFX2dpZF90CQkJMgorI2RlZmluZSBJMzg2X1JF Q09SRF9TSVpFX3VpZF90CQkJMgorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpF X3VpZF90CQkJMgorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX1BBR0VfU0la RQkJNDA5NgorI2RlZmluZSBJMzg2X1JFQ09SRF9TSVpFX2Zsb2NrNjQJCTI0 CisjZGVmaW5lIEkzODZfUkVDT1JEX1NJWkVfdXNlcl9kZXNjCQkxNgorI2Rl ZmluZSBJMzg2X1JFQ09SRF9TSVpFX2lvX2V2ZW50CQkzMgorI2RlZmluZSBJ Mzg2X1JFQ09SRF9TSVpFX2lvY2IJCQk2NAorI2RlZmluZSBJMzg2X1JFQ09S RF9TSVpFX2Vwb2xsX2V2ZW50CQkxMgorI2RlZmluZSBJMzg2X1JFQ09SRF9T SVpFX2l0aW1lcnNwZWMJCShJMzg2X1JFQ09SRF9TSVpFX3RpbWVzcGVjICog MikKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0laRV9tcV9hdHRyCQkzMgorI2Rl ZmluZSBJMzg2X1JFQ09SRF9TSVpFX3NpZ2luZm8JCTEyOAorI2RlZmluZSBJ Mzg2X1JFQ09SRF9TSVpFX3J1c2FnZQkJCTcyCisKKy8qIFRoZXNlIG1hY3Jv cyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2Ygc3lz dGVtIGNhbGwKKyAgICJzeXNfcHRyYWNlIi4gVGhlIHZhbHVlcyBvZiB0aGVz ZSBtYWNyb3MgYXJlIGdvdHRlbiBmcm9tIExpbnV4IEtlcm5lbAorICAgc291 cmNlLiAqLworI2RlZmluZSBJMzg2X1JFQ09SRF9QVFJBQ0VfUEVFS1RFWFQJ MQorI2RlZmluZSBJMzg2X1JFQ09SRF9QVFJBQ0VfUEVFS0RBVEEJMgorI2Rl ZmluZSBJMzg2X1JFQ09SRF9QVFJBQ0VfUEVFS1VTUgkzCisKKy8qIFRoZXNl IG1hY3JvcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50 IG9mIHN5c3RlbSBjYWxsCisgICAic3lzX2lvY3RsIi4gVGhlIHZhbHVlcyBv ZiB0aGVzZSBtYWNyb3MgYXJlIGdvdHRlbiBmcm9tIExpbnV4IEtlcm5lbAor ICAgc291cmNlLiAqLworI2RlZmluZSBJMzg2X1JFQ09SRF9GSU9OQ0xFWAkw eDU0NTAKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfRklPQ0xFWAkweDU0NTEKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfRklPTkJJTwkweDU0MjEKKyNkZWZpbmUgSTM4 Nl9SRUNPUkRfRklPQVNZTkMJMHg1NDUyCisjZGVmaW5lIEkzODZfUkVDT1JE X0ZJT1FTSVpFCTB4NTQ2MAorCisvKiBUaGVzZSBtYWNyb3MgYXJlIHRoZSB2 YWx1ZXMgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHN5c3RlbSBjYWxsCisg ICAic3lzX3NvY2tldGNhbGwiLiBUaGUgdmFsdWVzIG9mIHRoZXNlIG1hY3Jv cyBhcmUgZ290dGVuIGZyb20gTGludXggS2VybmVsCisgICBzb3VyY2UuICov CisjZGVmaW5lIEkzODZfUkVDT1JEX1NZU19TT0NLRVQJCTEKKyNkZWZpbmUg STM4Nl9SRUNPUkRfU1lTX0JJTkQJCTIKKyNkZWZpbmUgSTM4Nl9SRUNPUkRf U1lTX0NPTk5FQ1QJMworI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNfTElTVEVO CQk0CisjZGVmaW5lIEkzODZfUkVDT1JEX1NZU19BQ0NFUFQJCTUKKyNkZWZp bmUgSTM4Nl9SRUNPUkRfU1lTX0dFVFNPQ0tOQU1FCTYKKyNkZWZpbmUgSTM4 Nl9SRUNPUkRfU1lTX0dFVFBFRVJOQU1FCTcKKyNkZWZpbmUgSTM4Nl9SRUNP UkRfU1lTX1NPQ0tFVFBBSVIJOAorI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNf U0VORAkJOQorI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNfUkVDVgkJMTAKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfU1lTX1NFTkRUTwkJMTEKKyNkZWZpbmUgSTM4 Nl9SRUNPUkRfU1lTX1JFQ1ZGUk9NCTEyCisjZGVmaW5lIEkzODZfUkVDT1JE X1NZU19TSFVURE9XTgkxMworI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNfU0VU U09DS09QVAkxNAorI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNfR0VUU09DS09Q VAkxNQorI2RlZmluZSBJMzg2X1JFQ09SRF9TWVNfU0VORE1TRwkxNgorI2Rl ZmluZSBJMzg2X1JFQ09SRF9TWVNfUkVDVk1TRwkxNworCisvKiBUaGVzZSBt YWNyb3MgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9m IHN5c3RlbSBjYWxsCisgICAic3lzX2lwYyIuIFRoZSB2YWx1ZXMgb2YgdGhl c2UgbWFjcm9zIGFyZSBnb3R0ZW4gZnJvbSBMaW51eCBLZXJuZWwgc291cmNl LiAqLworI2RlZmluZSBJMzg2X1JFQ09SRF9TRU1PUAkJMQorI2RlZmluZSBJ Mzg2X1JFQ09SRF9TRU1HRVQJCTIKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0VN Q1RMCQkzCisjZGVmaW5lIEkzODZfUkVDT1JEX1NFTVRJTUVET1AJCTQKKyNk ZWZpbmUgSTM4Nl9SRUNPUkRfTVNHU05ECQkxMQorI2RlZmluZSBJMzg2X1JF Q09SRF9NU0dSQ1YJCTEyCisjZGVmaW5lIEkzODZfUkVDT1JEX01TR0dFVAkJ MTMKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfTVNHQ1RMCQkxNAorI2RlZmluZSBJ Mzg2X1JFQ09SRF9TSE1BVAkJMjEKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfU0hN RFQJCTIyCisjZGVmaW5lIEkzODZfUkVDT1JEX1NITUdFVAkJMjMKKyNkZWZp bmUgSTM4Nl9SRUNPUkRfU0hNQ1RMCQkyNAorCisvKiBUaGVzZSBtYWNyb3Mg YXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHN5c3Rl bSBjYWxsCisgICAic3lzX3F1b3RhY3RsIi4gVGhlIHZhbHVlcyBvZiB0aGVz ZSBtYWNyb3MgYXJlIGdvdHRlbiBmcm9tIExpbnV4IEtlcm5lbAorICAgc291 cmNlLiAqLworI2RlZmluZSBJMzg2X1JFQ09SRF9RX0dFVEZNVAkJMHg4MDAw MDQKKyNkZWZpbmUgSTM4Nl9SRUNPUkRfUV9HRVRJTkZPCQkweDgwMDAwNQor I2RlZmluZSBJMzg2X1JFQ09SRF9RX0dFVFFVT1RBCQkweDgwMDAwNworI2Rl ZmluZSBJMzg2X1JFQ09SRF9RX1hHRVRRU1RBVAkoKCc1Jzw8OCkrKDUpKQor I2RlZmluZSBJMzg2X1JFQ09SRF9RX1hHRVRRVU9UQQkoKCczJzw8OCkrKDMp KQorCisvKiBQYXJzZSB0aGUgYXJndW1lbnRzIG9mIGN1cnJlbnQgc3lzdGVt IGNhbGwgaW5zdHJ1Y3Rpb24gYW5kIHJlY29yZCB0aGUKKyAgIHZhbHVlcyBv ZiB0aGUgcmVnaXN0ZXJzIGFuZCBtZW1vcnkgdGhhdCB3aWxsIGJlIGNoYW5n ZWQgaW4gY3VycmVudCBzeXN0ZW0KKyAgIGNhbGwgaW5zdHJ1Y3Rpb24gdG8g InJlY29yZF9hcmNoX2xpc3QiLiBUaGlzIGluc3RydWN0aW9uIGlzICJpbnQg MHg4MCIgKExpbnV4CisgICBLZXJuZWwyLjQpIG9yICJzeXNlbnRlciIgKExp bnV4IEtlcm5lbCAyLjYpLgorICAgUmV0dXJuIC0xIGlmIHNvbWV0aGluZyB3 cm9uZy4gKi8KK3N0YXRpYyBpbnQKK2kzODZfbGludXhfaW50eDgwX3N5c2Vu dGVyX3JlY29yZCAodm9pZCkKK3sKKyAgdWludDMyX3QgdG1wdTMyOworCisg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUFY X1JFR05VTSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgc3dpdGNoICh0 bXB1MzIpCisgICAgeworICAgICAgLyogc3lzX3Jlc3RhcnRfc3lzY2FsbCAq LworICAgIGNhc2UgMDoKKyAgICAgIHsKKwlpbnQgcTsKKwl0YXJnZXRfdGVy bWluYWxfb3VycyAoKTsKKwlxID0KKwkgIHlxdWVyeSAoXworCQkgICgiVGhl IG5leHQgaW5zdHJ1Y3Rpb24gaXMgc3lzY2FsbCByZXN0YXJ0LiBJdCB3aWxs IHJlc3RhcnQgdGhlIGNvbXB1dGVyLiBEbyB5b3Ugd2FudCB0byBwYXVzZSB0 aGUgcHJvZ3JhbS4iKSk7CisJdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgp OworCWlmIChxKQorCSAgeworCSAgICByZXR1cm4gKDEpOworCSAgfQorICAg ICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19leGl0ICovCisg ICAgY2FzZSAxOgorICAgICAgeworCWludCBxOworCXRhcmdldF90ZXJtaW5h bF9vdXJzICgpOworCXEgPQorCSAgeXF1ZXJ5IChfCisJCSAgKCJUaGUgbmV4 dCBpbnN0cnVjdGlvbiBpcyBzeXNjYWxsIGV4aXQuIEl0IHdpbGwgbWFrZSB0 aGUgcHJvZ3JhbSBleGl0LiBEbyB5b3Ugd2FudCB0byBwYXVzZSB0aGUgcHJv Z3JhbS4iKSk7CisJdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOworCWlm IChxKQorCSAgeworCSAgICByZXR1cm4gKDEpOworCSAgfQorICAgICAgfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19mb3JrICovCisgICAgY2Fz ZSAyOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19yZWFkICovCisg ICAgY2FzZSAzOgorICAgICAgeworCXVpbnQzMl90IGFkZHIsIGNvdW50Owor CXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNY X1JFR05VTSwKKwkJCSAgIChnZGJfYnl0ZSAqKSAmIGFkZHIpOworCXJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05V TSwKKwkJCSAgIChnZGJfYnl0ZSAqKSAmIGNvdW50KTsKKwlpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCBjb3VudCkpCisJICB7CisJICAg IHJldHVybiAoLTEpOworCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c193cml0ZSAqLworICAgIGNhc2UgNDoKKyAgICAgIC8q IHN5c19vcGVuICovCisgICAgY2FzZSA1OgorICAgICAgLyogc3lzX2Nsb3Nl ICovCisgICAgY2FzZSA2OgorICAgICAgLyogc3lzX3dhaXRwaWQgKi8KKyAg ICBjYXNlIDc6CisgICAgICAvKiBzeXNfY3JlYXQgKi8KKyAgICBjYXNlIDg6 CisgICAgICAvKiBzeXNfbGluayAqLworICAgIGNhc2UgOToKKyAgICAgIC8q IHN5c191bmxpbmsgKi8KKyAgICBjYXNlIDEwOgorICAgICAgLyogc3lzX2V4 ZWN2ZSAqLworICAgIGNhc2UgMTE6CisgICAgICAvKiBzeXNfY2hkaXIgKi8K KyAgICBjYXNlIDEyOgorICAgICAgLyogc3lzX3RpbWUgKi8KKyAgICBjYXNl IDEzOgorICAgICAgLyogc3lzX21rbm9kICovCisgICAgY2FzZSAxNDoKKyAg ICAgIC8qIHN5c19jaG1vZCAqLworICAgIGNhc2UgMTU6CisgICAgICAvKiBz eXNfbGNob3duMTYgKi8KKyAgICBjYXNlIDE2OgorICAgICAgLyogc3lzX25p X3N5c2NhbGwgKi8KKyAgICBjYXNlIDE3OgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19zdGF0ICovCisgICAgY2FzZSAxODoKKyAgICAgIC8qIHN5 c19mc3RhdCAqLworICAgIGNhc2UgMjg6CisgICAgICAvKiBzeXNfbHN0YXQg Ki8KKyAgICBjYXNlIDg0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfX29sZF9rZXJuZWxf c3RhdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19sc2VlayAqLworICAgIGNhc2UgMTk6CisgICAg ICAvKiBzeXNfZ2V0cGlkICovCisgICAgY2FzZSAyMDoKKyAgICAgIC8qIHN5 c19tb3VudCAqLworICAgIGNhc2UgMjE6CisgICAgICAvKiBzeXNfb2xkdW1v dW50ICovCisgICAgY2FzZSAyMjoKKyAgICAgIC8qIHN5c19zZXR1aWQxNiAq LworICAgIGNhc2UgMjM6CisgICAgICAvKiBzeXNfZ2V0dWlkMTYgKi8KKyAg ICBjYXNlIDI0OgorICAgICAgLyogc3lzX3N0aW1lICovCisgICAgY2FzZSAy NToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcHRyYWNlICovCisg ICAgY2FzZSAyNjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMiA9PSBJMzg2X1JFQ09SRF9Q VFJBQ0VfUEVFS1RFWFQKKwkgIHx8IHRtcHUzMiA9PSBJMzg2X1JFQ09SRF9Q VFJBQ0VfUEVFS0RBVEEKKwkgIHx8IHRtcHUzMiA9PSBJMzg2X1JFQ09SRF9Q VFJBQ0VfUEVFS1VTUikKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9SRUdOVU0sCisJCQkgICAgIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIDQpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgt MSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X2FsYXJtICovCisgICAgY2FzZSAyNzoKKyAgICAgIC8qIHN5c19wYXVzZSAq LworICAgIGNhc2UgMjk6CisgICAgICAvKiBzeXNfdXRpbWUgICAgKi8KKyAg ICBjYXNlIDMwOgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBj YXNlIDMxOgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNl IDMyOgorICAgICAgLyogc3lzX2FjY2VzcyAqLworICAgIGNhc2UgMzM6Cisg ICAgICAvKiBzeXNfbmljZSAqLworICAgIGNhc2UgMzQ6CisgICAgICAvKiBz eXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMzU6CisgICAgICAvKiBzeXNf c3luYyAqLworICAgIGNhc2UgMzY6CisgICAgICAvKiBzeXNfa2lsbCAqLwor ICAgIGNhc2UgMzc6CisgICAgICAvKiBzeXNfcmVuYW1lICovCisgICAgY2Fz ZSAzODoKKyAgICAgIC8qIHN5c19ta2RpciAqLworICAgIGNhc2UgMzk6Cisg ICAgICAvKiBzeXNfcm1kaXIgKi8KKyAgICBjYXNlIDQwOgorICAgICAgLyog c3lzX2R1cCAqLworICAgIGNhc2UgNDE6CisgICAgICAvKiBzeXNfcGlwZSAq LworICAgIGNhc2UgNDI6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X3RpbWVzICovCisgICAgY2FzZSA0MzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJCSAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3Rtcykp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA0NDoKKyAgICAg IC8qIHN5c19icmsgKi8KKyAgICBjYXNlIDQ1OgorICAgICAgLyogc3lzX3Nl dGdpZDE2ICovCisgICAgY2FzZSA0NjoKKyAgICAgIC8qIHN5c19nZXRnaWQx NiAqLworICAgIGNhc2UgNDc6CisgICAgICAvKiBzeXNfc2lnbmFsICovCisg ICAgY2FzZSA0ODoKKyAgICAgIC8qIHN5c19nZXRldWlkMTYgKi8KKyAgICBj YXNlIDQ5OgorICAgICAgLyogc3lzX2dldGVnaWQxNiAqLworICAgIGNhc2Ug NTA6CisgICAgICAvKiBzeXNfYWNjdCAqLworICAgIGNhc2UgNTE6CisgICAg ICAvKiBzeXNfdW1vdW50ICovCisgICAgY2FzZSA1MjoKKyAgICAgIC8qIHN5 c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA1MzoKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfaW9jdGwgKi8KKyAgICBjYXNlIDU0OgorICAgICAg LyogWFhYICovCisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIHN3aXRjaCAodG1wdTMyKQorCXsKKwljYXNlIEkz ODZfUkVDT1JEX0ZJT0NMRVg6CisJY2FzZSBJMzg2X1JFQ09SRF9GSU9OQ0xF WDoKKwljYXNlIEkzODZfUkVDT1JEX0ZJT05CSU86CisJY2FzZSBJMzg2X1JF Q09SRF9GSU9BU1lOQzoKKwkgIGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRf RklPUVNJWkU6CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfbG9mZl90KSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBicmVhazsKKwlkZWZhdWx0 OgorCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAgICAgKCJSZWNvcmQ6 IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBzdXBwb3J0IGlv Y3RsIHJlcXVlc3QgMHglMDh4XG4iKSwKKwkJCSAgICAgdG1wdTMyKTsKKwkg IHJldHVybiAoLTEpOworCSAgYnJlYWs7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19mY250bCAqLworICAgIGNhc2UgNTU6CisgICAgICAv KiBYWFggKi8KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgIHN5c19mY250bDoKKyAgICAgIGlmICh0bXB1MzIgPT0g Rl9HRVRMSykKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfZmxvY2spKQorCSAgICB7CisJ ICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDU2Ogor ICAgICAgLyogc3lzX3NldHBnaWQgKi8KKyAgICBjYXNlIDU3OgorICAgICAg Lyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDU4OgorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c19vbGR1bmFtZSAqLworICAgIGNhc2UgNTk6 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJ Mzg2X0VCWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg STM4Nl9SRUNPUkRfU0laRV9vbGRvbGRfdXRzbmFtZSkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c191 bWFzayAqLworICAgIGNhc2UgNjA6CisgICAgICAvKiBzeXNfY2hyb290ICov CisgICAgY2FzZSA2MToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf dXN0YXQgKi8KKyAgICBjYXNlIDYyOgorICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfdXN0YXQp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZHVwMiAqLworICAgIGNhc2UgNjM6CisgICAgICAvKiBz eXNfZ2V0cHBpZCAqLworICAgIGNhc2UgNjQ6CisgICAgICAvKiBzeXNfZ2V0 cGdycCAqLworICAgIGNhc2UgNjU6CisgICAgICAvKiBzeXNfc2V0c2lkICov CisgICAgY2FzZSA2NjoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf c2lnYWN0aW9uICovCisgICAgY2FzZSA2NzoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJ CSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX29s ZF9zaWdhY3Rpb24pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfc2dldG1hc2sgKi8KKyAgICBjYXNl IDY4OgorICAgICAgLyogc3lzX3NzZXRtYXNrICovCisgICAgY2FzZSA2OToK KyAgICAgIC8qIHN5c19zZXRyZXVpZDE2ICovCisgICAgY2FzZSA3MDoKKyAg ICAgIC8qIHN5c19zZXRyZWdpZDE2ICovCisgICAgY2FzZSA3MToKKyAgICAg IC8qIHN5c19zaWdzdXNwZW5kICovCisgICAgY2FzZSA3MjoKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfc2lncGVuZGluZyAqLworICAgIGNhc2Ug NzM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCBJMzg2X0VCWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgSTM4Nl9SRUNPUkRfU0laRV9vbGRfc2lnc2V0X3QpKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf c2V0aG9zdG5hbWUgKi8KKyAgICBjYXNlIDc0OgorICAgICAgLyogc3lzX3Nl dHJsaW1pdCAqLworICAgIGNhc2UgNzU6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX29sZF9nZXRybGltaXQgKi8KKyAgICBjYXNlIDc2OgorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F Q1hfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZf UkVDT1JEX1NJWkVfcmxpbWl0KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2dldHJ1c2FnZSAqLwor ICAgIGNhc2UgNzc6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9ydXNhZ2UpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfZ2V0dGltZW9mZGF5ICovCisgICAgY2FzZSA3ODoKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05V TSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9T SVpFX3RpbWV2YWwpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNY X1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JF Q09SRF9TSVpFX3RpbWV6b25lKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldHRpbWVvZmRheSAq LworICAgIGNhc2UgNzk6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X2dldGdyb3VwczE2ICovCisgICAgY2FzZSA4MDoKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwK KwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpF X29sZF9naWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zZXRncm91cHMxNiAqLworICAgIGNh c2UgODE6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRt cHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9vbGRfZ2lkX3QpKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBvbGRf c2VsZWN0ICovCisgICAgY2FzZSA4MjoKKyAgICAgIHsKKwkvKgorCSAgIHN0 cnVjdCBzZWxfYXJnX3N0cnVjdCB7CisJICAgdW5zaWduZWQgbG9uZyBuOwor CSAgIGZkX3NldCAqaW5wOworCSAgIGZkX3NldCAqb3V0cDsKKwkgICBmZF9z ZXQgKmV4cDsKKwkgICBzdHJ1Y3QgdGltZXZhbCAqdHZwOworCSAgIH07CisJ ICovCisJc3RydWN0IHNlbF9hcmdfc3RydWN0CisJeworCSAgdWludDMyX3Qg bjsKKwkgIHVpbnQzMl90IGlucDsKKwkgIHVpbnQzMl90IG91dHA7CisJICB1 aW50MzJfdCBleHA7CisJICB1aW50MzJfdCB0dnA7CisJfSBzZWw7CisKKwly ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VCWF9S RUdOVU0sCisJCQkgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCWlmICh0 bXB1MzIpCisJICB7CisJICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRt cHUzMiwgKGdkYl9ieXRlICopICYgc2VsLCBzaXplb2YgKHNlbCkpKQorCSAg ICAgIHsKKwkJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJ CSAgICAiUmVjb3JkOiByZWFkIG1lbW9yeSBhZGRyID0gMHglcyBsZW4gPSAl ZCBlcnJvci5cbiIsCisJCQkJICAgIHBhZGRyX256ICh0bXB1MzIpLCBzaXpl b2YgKHNlbCkpOworCQlyZXR1cm4gKC0xKTsKKwkgICAgICB9CisJICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHNlbC5pbnAsIEkzODZfUkVD T1JEX1NJWkVfZmRfc2V0KSkKKwkgICAgICB7CisJCXJldHVybiAoLTEpOwor CSAgICAgIH0KKwkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo c2VsLm91dHAsIEkzODZfUkVDT1JEX1NJWkVfZmRfc2V0KSkKKwkgICAgICB7 CisJCXJldHVybiAoLTEpOworCSAgICAgIH0KKwkgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAoc2VsLmV4cCwgSTM4Nl9SRUNPUkRfU0laRV9m ZF9zZXQpKQorCSAgICAgIHsKKwkJcmV0dXJuICgtMSk7CisJICAgICAgfQor CSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChzZWwudHZwLCBJ Mzg2X1JFQ09SRF9TSVpFX3RpbWV2YWwpKQorCSAgICAgIHsKKwkJcmV0dXJu ICgtMSk7CisJICAgICAgfQorCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19zeW1saW5rICovCisgICAgY2FzZSA4MzoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcmVhZGxpbmsgKi8KKyAgICBj YXNlIDg1OgorICAgICAgeworCXVpbnQzMl90IGxlbjsKKwlyZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJ CQkgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCXJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAg IChnZGJfYnl0ZSAqKSAmIGxlbik7CisJaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBsZW4pKQorCSAgeworCSAgICByZXR1cm4gKC0x KTsKKwkgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfdXNlbGliICovCisgICAgY2FzZSA4NjoKKyAgICAgIC8qIHN5c19zd2Fw b24gKi8KKyAgICBjYXNlIDg3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19yZWJvb3QgKi8KKyAgICBjYXNlIDg4OgorICAgICAgeworCWludCBx OworCXRhcmdldF90ZXJtaW5hbF9vdXJzICgpOworCXEgPQorCSAgeXF1ZXJ5 IChfCisJCSAgKCJUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBzeXNjYWxsIHJl Ym9vdC4gSXQgd2lsbCByZXN0YXJ0IHRoZSBjb21wdXRlci4gRG8geW91IHdh bnQgdG8gcGF1c2UgdGhlIHByb2dyYW0uIikpOworCXRhcmdldF90ZXJtaW5h bF9pbmZlcmlvciAoKTsKKwlpZiAocSkKKwkgIHsKKwkgICAgcmV0dXJuICgx KTsKKwkgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBv bGRfcmVhZGRpciAqLworICAgIGNhc2UgODk6CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJ CQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9k aXJlbnQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBvbGRfbW1hcCAqLworICAgIGNhc2UgOTA6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX211bm1hcCAqLworICAgIGNhc2Ug OTE6CisgICAgICB7CisJaW50IHE7CisJdWludDMyX3QgbGVuOworCisJcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVH TlVNLAorCQkJICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwlyZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0s CisJCQkgICAoZ2RiX2J5dGUgKikgJiBsZW4pOworCXRhcmdldF90ZXJtaW5h bF9vdXJzICgpOworCXEgPQorCSAgeXF1ZXJ5IChfCisJCSAgKCJUaGUgbmV4 dCBpbnN0cnVjdGlvbiBpcyBzeXNjYWxsIG11bm1hcC4gSXQgd2lsbCBmcmVl IHRoZSBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQuIERvIHlvdSB3YW50 IHRvIHBhdXNlIHRoZSBwcm9ncmFtLiIpLAorCQkgIHBhZGRyX256ICh0bXB1 MzIpLCBsZW4pOworCXRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKwlp ZiAocSkKKwkgIHsKKwkgICAgcmV0dXJuICgxKTsKKwkgIH0KKyAgICAgIH0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfdHJ1bmNhdGUgKi8KKyAg ICBjYXNlIDkyOgorICAgICAgLyogc3lzX2Z0cnVuY2F0ZSAqLworICAgIGNh c2UgOTM6CisgICAgICAvKiBzeXNfZmNobW9kICovCisgICAgY2FzZSA5NDoK KyAgICAgIC8qIHN5c19mY2hvd24xNiAqLworICAgIGNhc2UgOTU6CisgICAg ICAvKiBzeXNfZ2V0cHJpb3JpdHkgKi8KKyAgICBjYXNlIDk2OgorICAgICAg Lyogc3lzX3NldHByaW9yaXR5ICovCisgICAgY2FzZSA5NzoKKyAgICAgIC8q IHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA5ODoKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfc3RhdGZzICovCisgICAgY2FzZSA5OToKKyAg ICAgIC8qIHN5c19mc3RhdGZzICovCisgICAgY2FzZSAxMDA6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9S RUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9zdGF0ZnMpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfaW9wZXJtICovCisgICAgY2Fz ZSAxMDE6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NvY2tldGNh bGwgKi8KKyAgICBjYXNlIDEwMjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJCSAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgc3dpdGNoICh0bXB1MzIpCisJ eworCWNhc2UgSTM4Nl9SRUNPUkRfU1lTX1NPQ0tFVDoKKwljYXNlIEkzODZf UkVDT1JEX1NZU19CSU5EOgorCWNhc2UgSTM4Nl9SRUNPUkRfU1lTX0NPTk5F Q1Q6CisJY2FzZSBJMzg2X1JFQ09SRF9TWVNfTElTVEVOOgorCSAgYnJlYWs7 CisJY2FzZSBJMzg2X1JFQ09SRF9TWVNfQUNDRVBUOgorCWNhc2UgSTM4Nl9S RUNPUkRfU1lTX0dFVFNPQ0tOQU1FOgorCWNhc2UgSTM4Nl9SRUNPUkRfU1lT X0dFVFBFRVJOQU1FOgorCSAgeworCSAgICB1aW50MzJfdCBhWzNdOworCSAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VD WF9SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KwkgICAgaWYgKHRtcHUzMikKKwkgICAgICB7CisJCWlmICh0YXJnZXRfcmVh ZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9ieXRlICopIGEsIHNpemVvZiAoYSkp KQorCQkgIHsKKwkJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKwkJCQkJIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVu ID0gJWQgZXJyb3IuXG4iLAorCQkJCQlwYWRkcl9ueiAodG1wdTMyKSwgc2l6 ZW9mIChhKSk7CisJCSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFbMV0sIEkzODZfUkVDT1JEX1NJ WkVfc29ja2FkZHIpKQorCQkgIHsKKwkJICAgIHJldHVybiAoLTEpOworCQkg IH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYVsyXSwgSTM4 Nl9SRUNPUkRfU0laRV9pbnQpKQorCQkgIHsKKwkJICAgIHJldHVybiAoLTEp OworCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsKKworCWNhc2Ug STM4Nl9SRUNPUkRfU1lTX1NPQ0tFVFBBSVI6CisJICB7CisJICAgIHVpbnQz Ml90IGFbNF07CisJICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAgICAgICAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAgIHsKKwkJ aWYgKHRhcmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5dGUgKikg YSwgc2l6ZW9mIChhKSkpCisJCSAgeworCQkgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorCQkJCQkiUmVjb3JkOiByZWFkIG1lbW9yeSBh ZGRyID0gMHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCXBhZGRyX256 ICh0bXB1MzIpLCBzaXplb2YgKGEpKTsKKwkJICAgIHJldHVybiAoLTEpOwor CQkgIH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYVszXSwg STM4Nl9SRUNPUkRfU0laRV9pbnQpKQorCQkgIHsKKwkJICAgIHJldHVybiAo LTEpOworCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsKKwljYXNl IEkzODZfUkVDT1JEX1NZU19TRU5EOgorCWNhc2UgSTM4Nl9SRUNPUkRfU1lT X1NFTkRUTzoKKwkgIGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRfU1lTX1JF Q1Y6CisJICB7CisJICAgIHVpbnQzMl90IGFbM107CisJICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwK KwkJCSAgICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgICBpZiAo dG1wdTMyKQorCSAgICAgIHsKKwkJaWYgKHRhcmdldF9yZWFkX21lbW9yeSAo dG1wdTMyLCAoZ2RiX2J5dGUgKikgYSwgc2l6ZW9mIChhKSkpCisJCSAgewor CQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCQki UmVjb3JkOiByZWFkIG1lbW9yeSBhZGRyID0gMHglcyBsZW4gPSAlZCBlcnJv ci5cbiIsCisJCQkJCXBhZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKGEpKTsK KwkJICAgIHJldHVybiAoLTEpOworCQkgIH0KKwkJaWYgKGFbMl0pCisJCSAg eworCQkgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeQorCQkJKGFbMl0sIChn ZGJfYnl0ZSAqKSAmIChhWzJdKSwgc2l6ZW9mIChhWzJdKSkpCisJCSAgICAg IHsKKwkJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJ ICAgICJSZWNvcmQ6IHJlYWQgbWVtb3J5IGFkZHIgPSAweCVzIGxlbiA9ICVk IGVycm9yLlxuIiwKKwkJCQkJICAgIHBhZGRyX256IChhWzJdKSwgc2l6ZW9m IChhWzJdKSk7CisJCQlyZXR1cm4gKC0xKTsKKwkJICAgICAgfQorCQkgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYVsxXSwgYVsyXSkpCisJ CSAgICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAgICB9CisJCSAgfQor CSAgICAgIH0KKwkgIH0KKwkgIGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRf U1lTX1JFQ1ZGUk9NOgorCSAgeworCSAgICB1aW50MzJfdCBhWzZdOworCSAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VD WF9SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KwkgICAgaWYgKHRtcHUzMikKKwkgICAgICB7CisJCWlmICh0YXJnZXRfcmVh ZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9ieXRlICopIGEsIHNpemVvZiAoYSkp KQorCQkgIHsKKwkJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKwkJCQkJIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVu ID0gJWQgZXJyb3IuXG4iLAorCQkJCQlwYWRkcl9ueiAodG1wdTMyKSwgc2l6 ZW9mIChhKSk7CisJCSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWlmIChh WzJdKQorCQkgIHsKKwkJICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkJ CShhWzJdLCAoZ2RiX2J5dGUgKikgJiAoYVsyXSksIHNpemVvZiAoYVsyXSkp KQorCQkgICAgICB7CisJCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCisJCQkJCSAgICAiUmVjb3JkOiByZWFkIG1lbW9yeSBhZGRyID0gMHgl cyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCSAgICBwYWRkcl9ueiAoYVsy XSksIHNpemVvZiAoYVsyXSkpOworCQkJcmV0dXJuICgtMSk7CisJCSAgICAg IH0KKwkJICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFbMV0s IGFbMl0pKQorCQkgICAgICB7CisJCQlyZXR1cm4gKC0xKTsKKwkJICAgICAg fQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYVs0XSwg STM4Nl9SRUNPUkRfU0laRV9zb2NrYWRkcikpCisJCSAgICAgIHsKKwkJCXJl dHVybiAoLTEpOworCQkgICAgICB9CisJCSAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtIChhWzVdLCBJMzg2X1JFQ09SRF9TSVpFX2ludCkpCisJ CSAgICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAgICB9CisJCSAgfQor CSAgICAgIH0KKwkgIH0KKwkgIGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRf U1lTX1NIVVRET1dOOgorCWNhc2UgSTM4Nl9SRUNPUkRfU1lTX1NFVFNPQ0tP UFQ6CisJICBicmVhazsKKwljYXNlIEkzODZfUkVDT1JEX1NZU19HRVRTT0NL T1BUOgorCSAgeworCSAgICB1aW50MzJfdCBhWzVdOworCSAgICB1aW50MzJf dCBhdjsKKworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKwkgICAgaWYgKHRtcHUzMikKKwkgICAgICB7CisJCWlm ICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9ieXRlICopIGEs IHNpemVvZiAoYSkpKQorCQkgIHsKKwkJICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKwkJCQkJIlJlY29yZDogcmVhZCBtZW1vcnkgYWRk ciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4iLAorCQkJCQlwYWRkcl9ueiAo dG1wdTMyKSwgc2l6ZW9mIChhKSk7CisJCSAgICByZXR1cm4gKC0xKTsKKwkJ ICB9CisJCWlmIChhWzRdKQorCQkgIHsKKwkJICAgIGlmICh0YXJnZXRfcmVh ZF9tZW1vcnkKKwkJCShhWzRdLCAoZ2RiX2J5dGUgKikgJiBhdiwgc2l6ZW9m IChhdikpKQorCQkgICAgICB7CisJCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCisJCQkJCSAgICAiUmVjb3JkOiByZWFkIG1lbW9yeSBhZGRy ID0gMHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCSAgICBwYWRkcl9u eiAoYVs0XSksIHNpemVvZiAoYXYpKTsKKwkJCXJldHVybiAoLTEpOworCQkg ICAgICB9CisJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChh WzNdLCBhdikpCisJCSAgICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAg ICB9CisJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhWzRd LCBJMzg2X1JFQ09SRF9TSVpFX2ludCkpCisJCSAgICAgIHsKKwkJCXJldHVy biAoLTEpOworCQkgICAgICB9CisJCSAgfQorCSAgICAgIH0KKwkgIH0KKwkg IGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRfU1lTX1NFTkRNU0c6CisJICBi cmVhazsKKwljYXNlIEkzODZfUkVDT1JEX1NZU19SRUNWTVNHOgorCSAgewor CSAgICB1aW50MzJfdCBhWzJdLCBpOworCSAgICBzdHJ1Y3QgcmVjb3JkX21z Z2hkcgorCSAgICB7CisJICAgICAgdWludDMyX3QgbXNnX25hbWU7CisJICAg ICAgdWludDMyX3QgbXNnX25hbWVsZW47CisJICAgICAgdWludDMyX3QgbXNn X2lvdjsKKwkgICAgICB1aW50MzJfdCBtc2dfaW92bGVuOworCSAgICAgIHVp bnQzMl90IG1zZ19jb250cm9sOworCSAgICAgIHVpbnQzMl90IG1zZ19jb250 cm9sbGVuOworCSAgICAgIHVpbnQzMl90IG1zZ19mbGFnczsKKwkgICAgfSBy ZWM7CisJICAgIHN0cnVjdCByZWNvcmRfaW92ZWMKKwkgICAgeworCSAgICAg IHVpbnQzMl90IGlvdl9iYXNlOworCSAgICAgIHVpbnQzMl90IGlvdl9sZW47 CisJICAgIH0gaW92OworCisJICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAgICAgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAg IHsKKwkJaWYgKHRhcmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5 dGUgKikgYSwgc2l6ZW9mIChhKSkpCisJCSAgeworCQkgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCQkiUmVjb3JkOiByZWFkIG1l bW9yeSBhZGRyID0gMHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCXBh ZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKGEpKTsKKwkJICAgIHJldHVybiAo LTEpOworCQkgIH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo YVsxXSwgSTM4Nl9SRUNPUkRfU0laRV9tc2doZHIpKQorCQkgIHsKKwkJICAg IHJldHVybiAoLTEpOworCQkgIH0KKwkJaWYgKGFbMV0pCisJCSAgeworCQkg ICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeQorCQkJKGFbMV0sIChnZGJfYnl0 ZSAqKSAmIHJlYywgc2l6ZW9mIChyZWMpKSkKKwkJICAgICAgeworCQkJZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCQkgICAgIlJlY29y ZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4i LAorCQkJCQkgICAgcGFkZHJfbnogKGFbMV0pLCBzaXplb2YgKHJlYykpOwor CQkJcmV0dXJuICgtMSk7CisJCSAgICAgIH0KKwkJICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0KKwkJCShyZWMubXNnX25hbWUsIHJlYy5tc2df bmFtZWxlbikpCisJCSAgICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAg ICB9CisJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJCQko cmVjLm1zZ19jb250cm9sLCByZWMubXNnX2NvbnRyb2xsZW4pKQorCQkgICAg ICB7CisJCQlyZXR1cm4gKC0xKTsKKwkJICAgICAgfQorCQkgICAgaWYgKHJl Yy5tc2dfaW92KQorCQkgICAgICB7CisJCQlmb3IgKGkgPSAwOyBpIDwgcmVj Lm1zZ19pb3ZsZW47IGkrKykKKwkJCSAgeworCQkJICAgIGlmICh0YXJnZXRf cmVhZF9tZW1vcnkKKwkJCQkocmVjLm1zZ19pb3YsIChnZGJfYnl0ZSAqKSAm IGlvdiwKKwkJCQkgc2l6ZW9mIChpb3YpKSkKKwkJCSAgICAgIHsKKwkJCQlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCQkgICAgIlJl Y29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3Iu XG4iLAorCQkJCQkJICAgIHBhZGRyX256IChyZWMubXNnX2lvdiksCisJCQkJ CQkgICAgc2l6ZW9mIChpb3YpKTsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCSAg ICAgIH0KKwkJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJ CQkJKGlvdi5pb3ZfYmFzZSwgaW92Lmlvdl9sZW4pKQorCQkJICAgICAgewor CQkJCXJldHVybiAoLTEpOworCQkJICAgICAgfQorCQkJICAgIHJlYy5tc2df aW92ICs9IHNpemVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYyk7CisJCQkgIH0K KwkJICAgICAgfQorCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsK KwlkZWZhdWx0OgorCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAgICAg KCJSZWNvcmQ6IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBz dXBwb3J0IHNvY2tldGNhbGwgY2FsbCAweCUwOHhcbiIpLAorCQkJICAgICB0 bXB1MzIpOworCSAgcmV0dXJuICgtMSk7CisJICBicmVhazsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3N5c2xvZyAqLworICAgIGNhc2Ug MTAzOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZXRpdGltZXIg Ki8KKyAgICBjYXNlIDEwNDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2l0aW1lcnZhbCkp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19nZXRpdGltZXIgKi8KKyAgICBjYXNlIDEwNToKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNY X1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JF Q09SRF9TSVpFX2l0aW1lcnZhbCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19uZXdzdGF0ICovCisg ICAgY2FzZSAxMDY6CisgICAgICAvKiBzeXNfbmV3bHN0YXQgKi8KKyAgICBj YXNlIDEwNzoKKyAgICAgIC8qIHN5c19uZXdmc3RhdCAqLworICAgIGNhc2Ug MTA4OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIEkzODZfUkVDT1JEX1NJWkVfc3RhdCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c191bmFtZSAq LworICAgIGNhc2UgMTA5OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfb2xkX3V0c25hbWUp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfaW9wbCAqLworICAgIGNhc2UgMTEwOgorICAgICAgLyog c3lzX3ZoYW5ndXAgKi8KKyAgICBjYXNlIDExMToKKyAgICAgIC8qIHN5c19u aV9zeXNjYWxsICovCisgICAgY2FzZSAxMTI6CisgICAgICAvKiBzeXNfdm04 Nm9sZCAqLworICAgIGNhc2UgMTEzOgorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c193YWl0NCAqLworICAgIGNhc2UgMTE0OgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVN LAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJ WkVfaW50KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9SRUdO VU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRf U0laRV9ydXNhZ2UpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfc3dhcG9mZiAqLworICAgIGNhc2Ug MTE1OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zeXNpbmZvICov CisgICAgY2FzZSAxMTY6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VCWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9zeXNpbmZvKSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2lwYyAqLworICAgIGNhc2UgMTE3OgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRt cHUzMikKKwl7CisJY2FzZSBJMzg2X1JFQ09SRF9NU0dSQ1Y6CisJICB7CisJ ICAgIGludDMyX3Qgc2Vjb25kOworCSAgICB1aW50MzJfdCBwdHI7CisJICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURY X1JFR05VTSwKKwkJCSAgICAgICAoZ2RiX2J5dGUgKikgJiBzZWNvbmQpOwor CSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VESV9SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgcHRyKTsK KwkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAocHRyLCBzZWNv bmQgKyBJMzg2X1JFQ09SRF9TSVpFX2xvbmcpKQorCSAgICAgIHsKKwkJcmV0 dXJuICgtMSk7CisJICAgICAgfQorCSAgfQorCSAgYnJlYWs7CisJY2FzZSBJ Mzg2X1JFQ09SRF9NU0dDVEw6CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VESV9SRUdOVU0sCisJCQkgICAgIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfbXNxaWRfZHMpKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFr OworCWNhc2UgSTM4Nl9SRUNPUkRfU0hNQVQ6CisJICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9SRUdOVU0sCisJCQkg ICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfdWxv bmcpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkg IGJyZWFrOworCWNhc2UgSTM4Nl9SRUNPUkRfU0hNQ1RMOgorCSAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRElfUkVHTlVN LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9T SVpFX3NobWlkX2RzKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJICBicmVhazsKKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2ZzeW5jICovCisgICAgY2FzZSAxMTg6CisgICAgICAvKiBzeXNf c2lncmV0dXJuICovCisgICAgY2FzZSAxMTk6CisgICAgICAvKiBzeXNfY2xv bmUgKi8KKyAgICBjYXNlIDEyMDoKKyAgICAgIC8qIHN5c19zZXRkb21haW5u YW1lICovCisgICAgY2FzZSAxMjE6CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX25ld3VuYW1lICovCisgICAgY2FzZSAxMjI6CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VCWF9SRUdO VU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRf U0laRV9uZXdfdXRzbmFtZSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tb2RpZnlfbGR0ICovCisg ICAgY2FzZSAxMjM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VCWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIgPT0gMCB8fCB0bXB1MzIg PT0gMikKKwl7CisJICB1aW50MzJfdCBwdHIsIGJ5dGVjb3VudDsKKwkgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JF R05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgcHRyKTsKKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05V TSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgYnl0ZWNvdW50KTsKKwkgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHB0ciwgYnl0ZWNvdW50KSkK KwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19hZGp0aW1leCAqLworICAgIGNh c2UgMTI0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfdGltZXgpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbXBy b3RlY3QgKi8KKyAgICBjYXNlIDEyNToKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfc2lncHJvY21hc2sgKi8KKyAgICBjYXNlIDEyNjoKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURY X1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JF Q09SRF9TSVpFX29sZF9zaWdzZXRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxs ICovCisgICAgY2FzZSAxMjc6CisgICAgICAvKiBzeXNfaW5pdF9tb2R1bGUg Ki8KKyAgICBjYXNlIDEyODoKKyAgICAgIC8qIHN5c19kZWxldGVfbW9kdWxl ICovCisgICAgY2FzZSAxMjk6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAq LworICAgIGNhc2UgMTMwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19xdW90YWN0bCAqLworICAgIGNhc2UgMTMxOgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRt cHUzMikKKwl7CisJY2FzZSBJMzg2X1JFQ09SRF9RX0dFVEZNVDoKKwkgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JF R05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgNCkpCisJICAg IHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgYnJlYWs7CisJ Y2FzZSBJMzg2X1JFQ09SRF9RX0dFVElORk86CisJICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9SRUdOVU0sCisJCQkg ICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfbWVt X2RxaW5mbykpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCSAgYnJlYWs7CisJY2FzZSBJMzg2X1JFQ09SRF9RX0dFVFFVT1RBOgor CSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F U0lfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2 X1JFQ09SRF9TSVpFX2lmX2RxYmxrKSkKKwkgICAgeworCSAgICAgIHJldHVy biAoLTEpOworCSAgICB9CisJICBicmVhazsKKwljYXNlIEkzODZfUkVDT1JE X1FfWEdFVFFTVEFUOgorCWNhc2UgSTM4Nl9SRUNPUkRfUV9YR0VUUVVPVEE6 CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VTSV9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkz ODZfUkVDT1JEX1NJWkVfZnNfcXVvdGFfc3RhdCkpCisJICAgIHsKKwkgICAg ICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgYnJlYWs7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRwZ2lkICovCisgICAgY2FzZSAx MzI6CisgICAgICAvKiBzeXNfZmNoZGlyICovCisgICAgY2FzZSAxMzM6Cisg ICAgICAvKiBzeXNfYmRmbHVzaCAqLworICAgIGNhc2UgMTM0OgorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zeXNmcyAqLworICAgIGNhc2UgMTM1 OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAodG1wdTMyID09IDIpCisJeworCSAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJ ICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgLypYWFggdGhlIHNp emUgb2YgbWVtb3J5IGlzIG5vdCB2ZXJ5IGNsZWFyICovCisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIDEwKSkKKwkgICAgewor CSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19wZXJzb25hbGl0eSAqLworICAgIGNhc2UgMTM2 OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDEzNzoK KyAgICAgIC8qIHN5c19zZXRmc3VpZDE2ICovCisgICAgY2FzZSAxMzg6Cisg ICAgICAvKiBzeXNfc2V0ZnNnaWQxNiAqLworICAgIGNhc2UgMTM5OgorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19sbHNlZWsgKi8KKyAgICBjYXNl IDE0MDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCBJMzg2X1JFQ09SRF9TSVpFX2xvZmZfdCkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRk ZW50cyAqLworICAgIGNhc2UgMTQxOgorICAgICAgeworCXVpbnQzMl90IGNv dW50OworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRUNYX1JFR05VTSwKKwkJCSAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F RFhfUkVHTlVNLAorCQkJICAgKGdkYl9ieXRlICopICYgY291bnQpOworCWlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9kaXJlbnQgKiBjb3VudCkpCisJICB7CisJICAgIHJldHVybiAo LTEpOworCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19zZWxlY3QgKi8KKyAgICBjYXNlIDE0MjoKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwK KwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpF X2ZkX3NldCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVH TlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JE X1NJWkVfZmRfc2V0KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VT SV9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9S RUNPUkRfU0laRV9mZF9zZXQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRURJX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJ Mzg2X1JFQ09SRF9TSVpFX3RpbWV2YWwpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZmxvY2sgKi8K KyAgICBjYXNlIDE0MzoKKyAgICAgIC8qIHN5c19tc3luYyAqLworICAgIGNh c2UgMTQ0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19yZWFkdiAq LworICAgIGNhc2UgMTQ1OgorICAgICAgeworCXVpbnQzMl90IHZlYzsKKwl1 aW50MzJfdCB2bGVuOworCXN0cnVjdCByZWNvcmRfaW92ZWMKKwl7CisJICB1 aW50MzJfdCBpb3ZfYmFzZTsKKwkgIHVpbnQzMl90IGlvdl9sZW47CisJfSBp b3Y7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4 Nl9FQ1hfUkVHTlVNLAorCQkJICAgKGdkYl9ieXRlICopICYgdmVjKTsKKwlp ZiAodmVjKQorCSAgeworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAgICAgKGdkYl9i eXRlICopICYgdmxlbik7CisJICAgIGZvciAodG1wdTMyID0gMDsgdG1wdTMy IDwgdmxlbjsgdG1wdTMyKyspCisJICAgICAgeworCQlpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5CisJCSAgICAodmVjLCAoZ2RiX2J5dGUgKikgJiBpb3YsIHNp emVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYykpKQorCQkgIHsKKwkJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJIlJlY29yZDog cmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4iLAor CQkJCQlwYWRkcl9ueiAodmVjKSwKKwkJCQkJc2l6ZW9mIChzdHJ1Y3QgcmVj b3JkX2lvdmVjKSk7CisJCSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGlvdi5pb3ZfYmFzZSwgaW92 Lmlvdl9sZW4pKQorCQkgIHsKKwkJICAgIHJldHVybiAoLTEpOworCQkgIH0K KwkJdmVjICs9IHNpemVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYyk7CisJICAg ICAgfQorCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c193cml0ZXYgKi8KKyAgICBjYXNlIDE0NjoKKyAgICAgIC8qIHN5c19n ZXRzaWQgKi8KKyAgICBjYXNlIDE0NzoKKyAgICAgIC8qIHN5c19mZGF0YXN5 bmMgKi8KKyAgICBjYXNlIDE0ODoKKyAgICAgIC8qIHN5c19zeXNjdGwgKi8K KyAgICBjYXNlIDE0OToKKyAgICAgIC8qIHN5c19tbG9jayAqLworICAgIGNh c2UgMTUwOgorICAgICAgLyogc3lzX211bmxvY2sgKi8KKyAgICBjYXNlIDE1 MToKKyAgICAgIC8qIHN5c19tbG9ja2FsbCAqLworICAgIGNhc2UgMTUyOgor ICAgICAgLyogc3lzX211bmxvY2thbGwgKi8KKyAgICBjYXNlIDE1MzoKKyAg ICAgIC8qIHN5c19zY2hlZF9zZXRwYXJhbSAqLworICAgIGNhc2UgMTU0Ogor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zY2hlZF9nZXRwYXJhbSAq LworICAgIGNhc2UgMTU1OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfaW50KSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX3NjaGVkX3NldHNjaGVkdWxlciAqLworICAgIGNhc2UgMTU2OgorICAg ICAgLyogc3lzX3NjaGVkX2dldHNjaGVkdWxlciAqLworICAgIGNhc2UgMTU3 OgorICAgICAgLyogc3lzX3NjaGVkX3lpZWxkICovCisgICAgY2FzZSAxNTg6 CisgICAgICAvKiBzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAqLworICAg IGNhc2UgMTU5OgorICAgICAgLyogc3lzX3NjaGVkX2dldF9wcmlvcml0eV9t aW4gKi8KKyAgICBjYXNlIDE2MDoKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfc2NoZWRfcnJfZ2V0X2ludGVydmFsICovCisgICAgY2FzZSAxNjE6 CisgICAgICAvKiBzeXNfbmFub3NsZWVwICovCisgICAgY2FzZSAxNjI6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4 Nl9SRUNPUkRfU0laRV90aW1lc3BlYykpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tcmVtYXAgKi8K KyAgICBjYXNlIDE2MzoKKyAgICAgIC8qIHN5c19zZXRyZXN1aWQxNiAqLwor ICAgIGNhc2UgMTY0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19n ZXRyZXN1aWQxNiAqLworICAgIGNhc2UgMTY1OgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVf b2xkX3VpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9S RUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9vbGRfdWlkX3QpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJ Mzg2X1JFQ09SRF9TSVpFX29sZF91aWRfdCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c192bTg2ICov CisgICAgY2FzZSAxNjY6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLwor ICAgIGNhc2UgMTY3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19w b2xsICovCisgICAgY2FzZSAxNjg6CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VCWF9SRUdOVU0sCisJCQkgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJewor CSAgdWludDMyX3QgbmZkczsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9i eXRlICopICYgbmZkcyk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfcG9sbGZkICogbmZkcykp CisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbmZzc2VydmN0bCAqLworICAg IGNhc2UgMTY5OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyID09IDcgfHwgdG1wdTMyID09 IDgpCisJeworCSAgdWludDMyX3QgcnNpemU7CisJICBpZiAodG1wdTMyID09 IDcpCisJICAgIHsKKwkgICAgICByc2l6ZSA9IEkzODZfUkVDT1JEX1NJWkVf TkZTX0ZIU0laRTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAg cnNpemUgPSBJMzg2X1JFQ09SRF9TSVpFX2tuZnNkX2ZoOworCSAgICB9CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VE WF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJ ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHJzaXpl KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZXRyZXNnaWQxNiAqLwor ICAgIGNhc2UgMTcwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19n ZXRyZXNnaWQxNiAqLworICAgIGNhc2UgMTcxOgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVf b2xkX2dpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9S RUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9vbGRfZ2lkX3QpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJ Mzg2X1JFQ09SRF9TSVpFX29sZF9naWRfdCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19wcmN0bCAq LworICAgIGNhc2UgMTcyOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRtcHUzMikKKwl7CisJ Y2FzZSAyOgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCBJMzg2X1JFQ09SRF9TSVpFX2ludCkpCisJICAgIHsKKwkgICAgICBy ZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSAxNjoKKwkg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNY X1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9S RUNPUkRfU0laRV9UQVNLX0NPTU1fTEVOKSkKKwkgICAgeworCSAgICAgIHJl dHVybiAoLTEpOworCSAgICB9CisJICBicmVhazsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX3J0X3NpZ3JldHVybiAqLworICAgIGNhc2Ug MTczOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19ydF9zaWdhY3Rp b24gKi8KKyAgICBjYXNlIDE3NDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3NpZ2FjdGlv bikpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19ydF9zaWdwcm9jbWFzayAqLworICAgIGNhc2UgMTc1 OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FRFhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIs IEkzODZfUkVDT1JEX1NJWkVfc2lnc2V0X3QpKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcnRfc2ln cGVuZGluZyAqLworICAgIGNhc2UgMTc2OgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJ IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQor CXsKKwkgIHVpbnQzMl90IHNpZ3NldHNpemU7CisJICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkg ICAgIChnZGJfYnl0ZSAqKSAmIHNpZ3NldHNpemUpOworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBzaWdzZXRzaXplKSkKKwkg ICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19ydF9zaWd0aW1lZHdhaXQgKi8KKyAg ICBjYXNlIDE3NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3NpZ2luZm9fdCkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19ydF9zaWdxdWV1ZWluZm8gKi8KKyAgICBjYXNlIDE3ODoKKyAgICAg IC8qIHN5c19ydF9zaWdzdXNwZW5kICovCisgICAgY2FzZSAxNzk6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3ByZWFkNjQgKi8KKyAgICBjYXNl IDE4MDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7CisJICB1aW50MzJfdCBjb3Vu dDsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRURYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgY291bnQp OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBj b3VudCkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcHdyaXRlNjQgKi8K KyAgICBjYXNlIDE4MToKKyAgICAgIC8qIHN5c19jaG93bjE2ICovCisgICAg Y2FzZSAxODI6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2dldGN3 ZCAqLworICAgIGNhc2UgMTgzOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkg IHVpbnQzMl90IHNpemU7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0 ZSAqKSAmIHNpemUpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAodG1wdTMyLCBzaXplKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19j YXBnZXQgKi8KKyAgICBjYXNlIDE4NDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2NhcF91 c2VyX2RhdGFfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19jYXBzZXQgKi8KKyAgICBjYXNlIDE4 NToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2lnYWx0c3RhY2sg Ki8KKyAgICBjYXNlIDE4NjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3N0YWNrX3QpKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfc2VuZGZpbGUgKi8KKyAgICBjYXNlIDE4NzoKKyAgICAgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JF R05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09S RF9TSVpFX29mZl90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBj YXNlIDE4ODoKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2Fz ZSAxODk6CisgICAgICAvKiBzeXNfdmZvcmsgKi8KKyAgICBjYXNlIDE5MDoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmxpbWl0ICovCisg ICAgY2FzZSAxOTE6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9ybGltaXQpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfbW1hcDIgKi8KKyAgICBjYXNlIDE5MjoKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfdHJ1bmNhdGU2NCAqLworICAgIGNhc2UgMTkzOgorICAg ICAgLyogc3lzX2Z0cnVuY2F0ZTY0ICovCisgICAgY2FzZSAxOTQ6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3N0YXQ2NCAqLworICAgIGNhc2Ug MTk1OgorICAgICAgLyogc3lzX2xzdGF0NjQgKi8KKyAgICBjYXNlIDE5NjoK KyAgICAgIC8qIHN5c19mc3RhdDY0ICovCisgICAgY2FzZSAxOTc6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VD WF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9S RUNPUkRfU0laRV9zdGF0NjQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbGNob3duICovCisgICAg Y2FzZSAxOTg6CisgICAgICAvKiBzeXNfZ2V0dWlkICovCisgICAgY2FzZSAx OTk6CisgICAgICAvKiBzeXNfZ2V0Z2lkICovCisgICAgY2FzZSAyMDA6Cisg ICAgICAvKiBzeXNfZ2V0ZXVpZCAqLworICAgIGNhc2UgMjAxOgorICAgICAg Lyogc3lzX2dldGVnaWQgKi8KKyAgICBjYXNlIDIwMjoKKyAgICAgIC8qIHN5 c19zZXRyZXVpZCAqLworICAgIGNhc2UgMjAzOgorICAgICAgLyogc3lzX3Nl dHJlZ2lkICovCisgICAgY2FzZSAyMDQ6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX2dldGdyb3VwcyAqLworICAgIGNhc2UgMjA1OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hf UkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAodG1wdTMyKQorCXsKKwkgIGludCBnaWRzZXRzaXplOworCSAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVN LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBnaWRzZXRzaXplKTsKKwkgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0KKwkgICAgICAodG1wdTMyLCBJ Mzg2X1JFQ09SRF9TSVpFX2dpZF90ICogZ2lkc2V0c2l6ZSkpCisJICAgIHsK KwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfc2V0Z3JvdXBzICovCisgICAgY2FzZSAyMDY6 CisgICAgICAvKiBzeXNfZmNob3duICovCisgICAgY2FzZSAyMDc6CisgICAg ICAvKiBzeXNfc2V0cmVzdWlkICovCisgICAgY2FzZSAyMDg6CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX2dldHJlc3VpZCAqLworICAgIGNhc2Ug MjA5OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIEkzODZfUkVDT1JEX1NJWkVfdWlkX3QpKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3VpZF90KSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV91aWRfdCkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19zZXRyZXNnaWQgKi8KKyAgICBjYXNlIDIxMDoKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfZ2V0cmVzZ2lkICovCisgICAgY2FzZSAyMTE6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VCWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4 Nl9SRUNPUkRfU0laRV9naWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIs IEkzODZfUkVDT1JEX1NJWkVfZ2lkX3QpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCBJMzg2X1JFQ09SRF9TSVpFX2dpZF90KSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2Nob3du ICovCisgICAgY2FzZSAyMTI6CisgICAgICAvKiBzeXNfc2V0dWlkICovCisg ICAgY2FzZSAyMTM6CisgICAgICAvKiBzeXNfc2V0Z2lkICovCisgICAgY2Fz ZSAyMTQ6CisgICAgICAvKiBzeXNfc2V0ZnN1aWQgKi8KKyAgICBjYXNlIDIx NToKKyAgICAgIC8qIHN5c19zZXRmc2dpZCAqLworICAgIGNhc2UgMjE2Ogor ICAgICAgLyogc3lzX3Bpdm90X3Jvb3QgKi8KKyAgICBjYXNlIDIxNzoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbWluY29yZSAqLworICAgIGNh c2UgMjE4OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfUEFHRV9TSVpFKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X21hZHZpc2UgKi8KKyAgICBjYXNlIDIxOToKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZ2V0ZGVudHM2NCAqLworICAgIGNhc2UgMjIwOgorICAg ICAgeworCXVpbnQzMl90IGNvdW50OworCXJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAgIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJICAgKGdkYl9ieXRl ICopICYgY291bnQpOworCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9kaXJlbnQ2NCAqIGNvdW50KSkK KwkgIHsKKwkgICAgcmV0dXJuICgtMSk7CisJICB9CisgICAgICB9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2ZjbnRsNjQgKi8KKyAgICBjYXNl IDIyMToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgc3dpdGNoICh0bXB1MzIpCisJeworCWNhc2UgRl9HRVRM SzY0OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FRFhfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCBJMzg2X1JFQ09SRF9TSVpFX2Zsb2NrNjQpKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgRl9TRVRM SzY0OgorCWNhc2UgRl9TRVRMS1c2NDoKKwkgIGJyZWFrOworCWRlZmF1bHQ6 CisJICBnb3RvIHN5c19mY250bDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2Ug MjIyOgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDIy MzoKKyAgICAgIC8qIHN5c19nZXR0aWQgKi8KKyAgICBjYXNlIDIyNDoKKyAg ICAgIC8qIHN5c19yZWFkYWhlYWQgKi8KKyAgICBjYXNlIDIyNToKKyAgICAg IC8qIHN5c19zZXR4YXR0ciAqLworICAgIGNhc2UgMjI2OgorICAgICAgLyog c3lzX2xzZXR4YXR0ciAqLworICAgIGNhc2UgMjI3OgorICAgICAgLyogc3lz X2ZzZXR4YXR0ciAqLworICAgIGNhc2UgMjI4OgorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19nZXR4YXR0ciAqLworICAgIGNhc2UgMjI5OgorICAg ICAgLyogc3lzX2xnZXR4YXR0ciAqLworICAgIGNhc2UgMjMwOgorICAgICAg Lyogc3lzX2ZnZXR4YXR0ciAqLworICAgIGNhc2UgMjMxOgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVH TlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo dG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IHNpemU7CisJICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9SRUdOVU0sCisJ CQkgICAgIChnZGJfYnl0ZSAqKSAmIHNpemUpOworCSAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBzaXplKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19saXN0eGF0dHIgKi8KKyAgICBjYXNlIDIzMjoKKyAg ICAgIC8qIHN5c19sbGlzdHhhdHRyICovCisgICAgY2FzZSAyMzM6CisgICAg ICAvKiBzeXNfZmxpc3R4YXR0ciAqLworICAgIGNhc2UgMjM0OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hf UkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAodG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IHNpemU7CisJICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0s CisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHNpemUpOworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBzaXplKSkKKwkgICAgewor CSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19yZW1vdmV4YXR0ciAqLworICAgIGNhc2UgMjM1 OgorICAgICAgLyogc3lzX2xyZW1vdmV4YXR0ciAqLworICAgIGNhc2UgMjM2 OgorICAgICAgLyogc3lzX2ZyZW1vdmV4YXR0ciAqLworICAgIGNhc2UgMjM3 OgorICAgICAgLyogc3lzX3RraWxsICovCisgICAgY2FzZSAyMzg6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3NlbmRmaWxlNjQgKi8KKyAgICBj YXNlIDIzOToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2xvZmZfdCkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19m dXRleCAqLworICAgIGNhc2UgMjQwOgorICAgICAgLyogc3lzX3NjaGVkX3Nl dGFmZmluaXR5ICovCisgICAgY2FzZSAyNDE6CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX3NjaGVkX2dldGFmZmluaXR5ICovCisgICAgY2FzZSAy NDI6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMyX3QgbGVuOwor CSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F Q1hfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBsZW4pOworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBsZW4pKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3NldF90aHJlYWRfYXJlYSAqLwor ICAgIGNhc2UgMjQzOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfaW50KSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X2dldF90aHJlYWRfYXJlYSAqLworICAgIGNhc2UgMjQ0OgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVH TlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JE X1NJWkVfdXNlcl9kZXNjKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX2lvX3NldHVwICovCisgICAg Y2FzZSAyNDU6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9sb25nKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2lv X2Rlc3Ryb3kgKi8KKyAgICBjYXNlIDI0NjoKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfaW9fZ2V0ZXZlbnRzICovCisgICAgY2FzZSAyNDc6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VTSV9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmICh0bXB1MzIpCisJeworCSAgaW50MzJfdCBucjsKKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05V TSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgbnIpOworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBuciAqIEkzODZfUkVDT1JE X1NJWkVfaW9fZXZlbnQpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7 CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2lv X3N1Ym1pdCAqLworICAgIGNhc2UgMjQ4OgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJ IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQor CXsKKwkgIGludDMyX3QgaSwgbnI7CisJICB1aW50MzJfdCAqaW9jYnA7CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VD WF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIG5yKTsKKwkgIGlv Y2JwID0gKHVpbnQzMl90ICopIGFsbG9jYSAobnIgKiBJMzg2X1JFQ09SRF9T SVpFX2ludCk7CisJICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5CisJICAgICAg KHRtcHUzMiwgKGdkYl9ieXRlICopIGlvY2JwLCBuciAqIEkzODZfUkVDT1JE X1NJWkVfaW50KSkKKwkgICAgeworCSAgICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKwkJCQkgICJSZWNvcmQ6IHJlYWQgbWVtb3J5IGFk ZHIgPSAweCVzIGxlbiA9ICVkIGVycm9yLlxuIiwKKwkJCQkgIHBhZGRyX256 ICh0bXB1MzIpLCBuciAqIEkzODZfUkVDT1JEX1NJWkVfaW50KTsKKwkgICAg ICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgZm9yIChpID0gMDsgaSA8IG5y OyBpKyspCisJICAgIHsKKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtIChpb2NicFtpXSwgSTM4Nl9SRUNPUkRfU0laRV9pb2NiKSkKKwkJ eworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX2lvX2NhbmNlbCAqLworICAgIGNhc2Ug MjQ5OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIEkzODZfUkVDT1JEX1NJWkVfaW9fZXZlbnQpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZmFk dmlzZTY0ICovCisgICAgY2FzZSAyNTA6CisgICAgICAvKiBzeXNfbmlfc3lz Y2FsbCAqLworICAgIGNhc2UgMjUxOgorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19leGl0X2dyb3VwICovCisgICAgY2FzZSAyNTI6CisgICAgICB7 CisJaW50IHE7CisJdGFyZ2V0X3Rlcm1pbmFsX291cnMgKCk7CisJcSA9CisJ ICB5cXVlcnkgKF8KKwkJICAoIlRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHN5 c2NhbGwgZXhpdF9ncm91cC4gSXQgd2lsbCBtYWtlIHRoZSBwcm9ncmFtIGV4 aXQuIERvIHlvdSB3YW50IHRvIHBhdXNlIHRoZSBwcm9ncmFtLiIpKTsKKwl0 YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7CisJaWYgKHEpCisJICB7CisJ ICAgIHJldHVybiAoMSk7CisJICB9CisgICAgICB9CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX2xvb2t1cF9kY29va2llICovCisgICAgY2FzZSAy NTM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMyX3QgbGVuOwor CSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F RFhfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBsZW4pOworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBsZW4pKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2Vwb2xsX2NyZWF0ZSAqLworICAg IGNhc2UgMjU0OgorICAgICAgLyogc3lzX2Vwb2xsX2N0bCAqLworICAgIGNh c2UgMjU1OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19lcG9sbF93 YWl0ICovCisgICAgY2FzZSAyNTY6CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJewor CSAgaW50MzJfdCBtYXhldmVudHM7CisJICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIG1heGV2ZW50cyk7CisJICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtCisJICAgICAgKHRtcHUzMiwgbWF4ZXZlbnRzICogSTM4 Nl9SRUNPUkRfU0laRV9lcG9sbF9ldmVudCkpCisJICAgIHsKKwkgICAgICBy ZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfcmVtYXBfZmlsZV9wYWdlcyAqLworICAgIGNhc2UgMjU3Ogor ICAgICAgLyogc3lzX3NldF90aWRfYWRkcmVzcyAqLworICAgIGNhc2UgMjU4 OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c190aW1lcl9jcmVhdGUg Ki8KKyAgICBjYXNlIDI1OToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2ludCkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c190aW1lcl9zZXR0aW1lICovCisgICAgY2FzZSAyNjA6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTSV9S RUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9pdGltZXJzcGVjKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3RpbWVyX2dldHRpbWUg Ki8KKyAgICBjYXNlIDI2MToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2l0aW1lcnNwZWMp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfdGltZXJfZ2V0b3ZlcnJ1biAqLworICAgIGNhc2UgMjYy OgorICAgICAgLyogc3lzX3RpbWVyX2RlbGV0ZSAqLworICAgIGNhc2UgMjYz OgorICAgICAgLyogc3lzX2Nsb2NrX3NldHRpbWUgKi8KKyAgICBjYXNlIDI2 NDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfY2xvY2tfZ2V0dGlt ZSAqLworICAgIGNhc2UgMjY1OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfdGltZXNwZWMp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfY2xvY2tfZ2V0cmVzICovCisgICAgY2FzZSAyNjY6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4 Nl9SRUNPUkRfU0laRV90aW1lc3BlYykpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19jbG9ja19uYW5v c2xlZXAgKi8KKyAgICBjYXNlIDI2NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3RpbWVz cGVjKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX3N0YXRmczY0ICovCisgICAgY2FzZSAyNjg6Cisg ICAgICAvKiBzeXNfZnN0YXRmczY0ICovCisgICAgY2FzZSAyNjk6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VE WF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9S RUNPUkRfU0laRV9zdGF0ZnM2NCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c190Z2tpbGwgKi8KKyAg ICBjYXNlIDI3MDoKKyAgICAgIC8qIHN5c191dGltZXMgKi8KKyAgICBjYXNl IDI3MToKKyAgICAgIC8qIHN5c19mYWR2aXNlNjRfNjQgKi8KKyAgICBjYXNl IDI3MjoKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAy NzM6CisgICAgICAvKiBzeXNfbWJpbmQgKi8KKyAgICBjYXNlIDI3NDoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0X21lbXBvbGljeSAqLwor ICAgIGNhc2UgMjc1OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfaW50KSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWlu dDMyX3QgbWF4bm9kZTsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRURYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRl ICopICYgbWF4bm9kZSk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIG1heG5vZGUgKiBJMzg2X1JFQ09SRF9TSVpFX2xvbmcp KQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldF9tZW1wb2xpY3kgKi8K KyAgICBjYXNlIDI3NjoKKyAgICAgIC8qIHN5c19tcV9vcGVuICovCisgICAg Y2FzZSAyNzc6CisgICAgICAvKiBzeXNfbXFfdW5saW5rICovCisgICAgY2Fz ZSAyNzg6CisgICAgICAvKiBzeXNfbXFfdGltZWRzZW5kICovCisgICAgY2Fz ZSAyNzk6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21xX3RpbWVk cmVjZWl2ZSAqLworICAgIGNhc2UgMjgwOgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQ1hfUkVHTlVNLAorCQkJ IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQor CXsKKwkgIHVpbnQzMl90IG1zZ19sZW47CisJICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAg IChnZGJfYnl0ZSAqKSAmIG1zZ19sZW4pOworCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCBtc2dfbGVuKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FU0lfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVf aW50KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX21xX25vdGlmeSAqLworICAgIGNhc2UgMjgxOgor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tcV9nZXRzZXRhdHRyICov CisgICAgY2FzZSAyODI6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9tcV9hdHRyKSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2tleGVjX2xvYWQgKi8KKyAgICBjYXNlIDI4MzoKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfd2FpdGlkICovCisgICAgY2FzZSAyODQ6 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJ Mzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg STM4Nl9SRUNPUkRfU0laRV9zaWdpbmZvKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VESV9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRt cHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9ydXNhZ2UpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbmlf c3lzY2FsbCAqLworICAgIGNhc2UgMjg1OgorICAgICAgLyogc3lzX2FkZF9r ZXkgKi8KKyAgICBjYXNlIDI4NjoKKyAgICAgIC8qIHN5c19yZXF1ZXN0X2tl eSAqLworICAgIGNhc2UgMjg3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19rZXljdGwgKi8KKyAgICBjYXNlIDI4ODoKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwK KwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUz MiA9PSA2IHx8IHRtcHUzMiA9PSAxMSkKKwl7CisJICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkg ICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAodG1wdTMyKQor CSAgICB7CisJICAgICAgdWludDMyX3QgYnVmbGVuOworCSAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05V TSwKKwkJCQkgKGdkYl9ieXRlICopICYgYnVmbGVuKTsKKwkgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIGJ1ZmxlbikpCisJ CXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19pb3ByaW9fc2V0ICovCisgICAgY2Fz ZSAyODk6CisgICAgICAvKiBzeXNfaW9wcmlvX2dldCAqLworICAgIGNhc2Ug MjkwOgorICAgICAgLyogc3lzX2lub3RpZnlfaW5pdCAqLworICAgIGNhc2Ug MjkxOgorICAgICAgLyogc3lzX2lub3RpZnlfYWRkX3dhdGNoICovCisgICAg Y2FzZSAyOTI6CisgICAgICAvKiBzeXNfaW5vdGlmeV9ybV93YXRjaCAqLwor ICAgIGNhc2UgMjkzOgorICAgICAgLyogc3lzX21pZ3JhdGVfcGFnZXMgKi8K KyAgICBjYXNlIDI5NDoKKyAgICAgIC8qIHN5c19vcGVuYXQgKi8KKyAgICBj YXNlIDI5NToKKyAgICAgIC8qIHN5c19ta2RpcmF0ICovCisgICAgY2FzZSAy OTY6CisgICAgICAvKiBzeXNfbWtub2RhdCAqLworICAgIGNhc2UgMjk3Ogor ICAgICAgLyogc3lzX2ZjaG93bmF0ICovCisgICAgY2FzZSAyOTg6CisgICAg ICAvKiBzeXNfZnV0aW1lc2F0ICovCisgICAgY2FzZSAyOTk6CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX2ZzdGF0YXQ2NCAqLworICAgIGNhc2Ug MzAwOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIEkzODZfUkVDT1JEX1NJWkVfc3RhdDY0KSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3VubGlu a2F0ICovCisgICAgY2FzZSAzMDE6CisgICAgICAvKiBzeXNfcmVuYW1lYXQg Ki8KKyAgICBjYXNlIDMwMjoKKyAgICAgIC8qIHN5c19saW5rYXQgKi8KKyAg ICBjYXNlIDMwMzoKKyAgICAgIC8qIHN5c19zeW1saW5rYXQgKi8KKyAgICBj YXNlIDMwNDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcmVhZGxp bmthdCAqLworICAgIGNhc2UgMzA1OgorICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRFhfUkVHTlVNLAorCQkJIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQorCXsK KwkgIGludDMyX3QgYnVmc2l6OworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FU0lfUkVHTlVNLAorCQkJICAgICAoZ2Ri X2J5dGUgKikgJiBidWZzaXopOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBidWZzaXopKQorCSAgICB7CisJICAgICAgcmV0 dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2ZjaG1vZGF0ICovCisgICAgY2FzZSAzMDY6CisgICAgICAvKiBz eXNfZmFjY2Vzc2F0ICovCisgICAgY2FzZSAzMDc6CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX3BzZWxlY3Q2ICovCisgICAgY2FzZSAzMDg6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4 Nl9SRUNPUkRfU0laRV9mZF9zZXQpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRURYX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCBJMzg2X1JFQ09SRF9TSVpFX2ZkX3NldCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgSTM4Nl9FU0lfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIEkzODZfUkVDT1JEX1NJWkVfZmRfc2V0KSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VESV9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV90aW1lc3BlYykpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19wcG9sbCAqLworICAgIGNhc2UgMzA5OgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAor CQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMy KQorCXsKKwkgIHVpbnQzMl90IG5mZHM7CisJICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgICAg IChnZGJfYnl0ZSAqKSAmIG5mZHMpOworCSAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX3BvbGxmZCAq IG5mZHMpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0K Kwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgSTM4Nl9SRUNPUkRfU0laRV90aW1lc3BlYykpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c191bnNo YXJlICovCisgICAgY2FzZSAzMTA6CisgICAgICAvKiBzeXNfc2V0X3JvYnVz dF9saXN0ICovCisgICAgY2FzZSAzMTE6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX2dldF9yb2J1c3RfbGlzdCAqLworICAgIGNhc2UgMzEyOgor ICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4 Nl9FQ1hfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkz ODZfUkVDT1JEX1NJWkVfaW50KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJ Mzg2X0VEWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg STM4Nl9SRUNPUkRfU0laRV9pbnQpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc3BsaWNlICovCisg ICAgY2FzZSAzMTM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgSTM4Nl9SRUNPUkRfU0laRV9sb2ZmX3QpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBJMzg2X1JFQ09SRF9TSVpFX2xvZmZfdCkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19zeW5jX2ZpbGVfcmFuZ2UgKi8KKyAgICBjYXNlIDMxNDoKKyAg ICAgIC8qIHN5c190ZWUgKi8KKyAgICBjYXNlIDMxNToKKyAgICAgIC8qIHN5 c192bXNwbGljZSAqLworICAgIGNhc2UgMzE2OgorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19tb3ZlX3BhZ2VzICovCisgICAgY2FzZSAzMTc6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VESV9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMyX3QgbnJfcGFnZXM7CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VD WF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIG5yX3BhZ2VzKTsK KwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgbnJf cGFnZXMgKiBJMzg2X1JFQ09SRF9TSVpFX2ludCkpCisJICAgIHsKKwkgICAg ICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZ2V0Y3B1ICovCisgICAgY2FzZSAzMTg6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VCWF9S RUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgSTM4Nl9SRUNP UkRfU0laRV9pbnQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUNY X1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBJMzg2X1JF Q09SRF9TSVpFX2ludCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F RFhfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIEkzODZf UkVDT1JEX1NJWkVfdWxvbmcgKiAyKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2Vwb2xsX3B3YWl0 ICovCisgICAgY2FzZSAzMTk6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkgKGdkYl9i eXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAg aW50MzJfdCBtYXhldmVudHM7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VEWF9SRUdOVU0sCisJCQkgICAgIChnZGJf Ynl0ZSAqKSAmIG1heGV2ZW50cyk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtCisJICAgICAgKHRtcHUzMiwgbWF4ZXZlbnRzICogSTM4Nl9S RUNPUkRfU0laRV9lcG9sbF9ldmVudCkpCisJICAgIHsKKwkgICAgICByZXR1 cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAgZGVm YXVsdDoKKyAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkgKCJSZWNv cmQ6IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBzdXBwb3J0 IHN5c2NhbGwgbnVtYmVyIDB4JTA4eFxuIiksCisJCQkgdG1wdTMyKTsKKyAg ICAgIHJldHVybiAoLTEpOworICAgICAgYnJlYWs7CisgICAgfQorICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQor ICAgIHsKKyAgICAgIHJldHVybiAoLTEpOworICAgIH0KKworICByZXR1cm4g KDApOworfQogCiAvKiBUaGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIEdOVS9M aW51eCBFTEYgY29yZS1kdW1wcyBhcmUgaWRlbnRpY2FsIHRvCiAgICB0aGUg cmVnaXN0ZXIgc2V0cyBpbiBgc3RydWN0IHVzZXInIHRoYXQgYXJlIHVzZWQg Zm9yIGEub3V0CkBAIC00NDAsNiArMjk2Nyw5IEBAIGkzODZfbGludXhfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCiAgIHRkZXAtPnNjX3JlZ19vZmZzZXQgPSBpMzg2X2xp bnV4X3NjX3JlZ19vZmZzZXQ7CiAgIHRkZXAtPnNjX251bV9yZWdzID0gQVJS QVlfU0laRSAoaTM4Nl9saW51eF9zY19yZWdfb2Zmc2V0KTsKIAorICB0ZGVw LT5pMzg2X2ludHg4MF9yZWNvcmQgPSBpMzg2X2xpbnV4X2ludHg4MF9zeXNl bnRlcl9yZWNvcmQ7CisgIHRkZXAtPmkzODZfc3lzZW50ZXJfcmVjb3JkID0g aTM4Nl9saW51eF9pbnR4ODBfc3lzZW50ZXJfcmVjb3JkOworCiAgIC8qIE5f RlVOIHN5bWJvbHMgaW4gc2hhcmVkIGxpYmFyaWVzIGhhdmUgMCBmb3IgdGhl aXIgdmFsdWVzIGFuZCBuZWVkCiAgICAgIHRvIGJlIHJlbG9jYXRlZC4gKi8K ICAgc2V0X2dkYmFyY2hfc29mdW5fYWRkcmVzc19tYXliZV9taXNzaW5nIChn ZGJhcmNoLCAxKTsKZGlmZiAtLWdpdCBhL2dkYi9pMzg2LXRkZXAuYyBiL2dk Yi9pMzg2LXRkZXAuYwppbmRleCBiZTRmNGYzLi5mYTFmMjgyIDEwMDY0NAot LS0gYS9nZGIvaTM4Ni10ZGVwLmMKKysrIGIvZ2RiL2kzODYtdGRlcC5jCkBA IC00OSw2ICs0OSw5IEBACiAjaW5jbHVkZSAiaTM4Ni10ZGVwLmgiCiAjaW5j bHVkZSAiaTM4Ny10ZGVwLmgiCiAKKyNpbmNsdWRlICJyZWNvcmQuaCIKKyNp bmNsdWRlIDxzdGRpbnQuaD4KKwogLyogUmVnaXN0ZXIgbmFtZXMuICAqLwog CiBzdGF0aWMgY2hhciAqaTM4Nl9yZWdpc3Rlcl9uYW1lc1tdID0KQEAgLTI0 NTAsNiArMjQ1MywyNTI5IEBAIGkzODZfZmV0Y2hfcG9pbnRlcl9hcmd1bWVu dCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgYXJnaSwKICAgcmV0 dXJuIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKHNwICsgKDQgKiAo YXJnaSArIDEpKSwgNCk7CiB9CiAKKyNkZWZpbmUgUFJFRklYX1JFUFoJMHgw MQorI2RlZmluZSBQUkVGSVhfUkVQTloJMHgwMgorI2RlZmluZSBQUkVGSVhf TE9DSwkweDA0CisjZGVmaW5lIFBSRUZJWF9EQVRBCTB4MDgKKyNkZWZpbmUg UFJFRklYX0FERFIJMHgxMAorCisvKiBvcGVyYW5kIHNpemUgKi8KK2VudW0K K3sKKyAgT1RfQllURSA9IDAsCisgIE9UX1dPUkQsCisgIE9UX0xPTkcsCit9 OworCisvKiBpMzg2IGFyaXRoL2xvZ2ljIG9wZXJhdGlvbnMgKi8KK2VudW0K K3sKKyAgT1BfQURETCwKKyAgT1BfT1JMLAorICBPUF9BRENMLAorICBPUF9T QkJMLAorICBPUF9BTkRMLAorICBPUF9TVUJMLAorICBPUF9YT1JMLAorICBP UF9DTVBMLAorfTsKKworc3RhdGljIGludCBhZmxhZyA9IDE7CitzdGF0aWMg aW50IGRmbGFnID0gMTsKK3N0YXRpYyBpbnQgb3ZlcnJpZGUgPSAwOworc3Rh dGljIHVpbnQ4X3QgbW9kcm07CitzdGF0aWMgdWludDhfdCBtb2QsIHJlZywg cm07CitzdGF0aWMgaW50IG90Oworc3RhdGljIENPUkVfQUREUiBpMzg2X3Jl Y29yZF9wYzsKKworLyogUGFyc2UgIm1vZHJtIiBwYXJ0IGluIGN1cnJlbnQg bWVtb3J5IGFkZHJlc3MgdGhhdCBpMzg2X3JlY29yZF9wYyBwb2ludCB0by4K KyAgIFJldHVybiAtMSBpZiBzb21ldGhpbmcgd3JvbmcuICovCitzdGF0aWMg aW50CitpMzg2X3JlY29yZF9tb2RybSAodm9pZCkKK3sKKyAgaWYgKHRhcmdl dF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsICZtb2RybSwgMSkpCisg ICAgeworICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJlY29yZDogcmVh ZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCSBwYWRkcl9ueiAoaTM4 Nl9yZWNvcmRfcGMpKTsKKyAgICAgIHJldHVybiAoLTEpOworICAgIH0KKyAg aTM4Nl9yZWNvcmRfcGMrKzsKKyAgbW9kID0gKG1vZHJtID4+IDYpICYgMzsK KyAgcmVnID0gKG1vZHJtID4+IDMpICYgNzsKKyAgcm0gPSBtb2RybSAmIDc7 CisKKyAgcmV0dXJuICgwKTsKK30KKworLyogR2V0IHRoZSBtZW1vcnkgYWRk cmVzcyB0aGF0IGN1cnJlbnQgaW5zdHJ1Y3Rpb24gIHdyaXRlIHRvIGFuZCBz ZXQgaXQgdG8KKyAgIHRoZSBhcmd1bWVudCAiYWRkciIuCisgICBSZXR1cm4g LTEgaWYgc29tZXRoaW5nIHdyb25nLiAqLworc3RhdGljIGludAoraTM4Nl9y ZWNvcmRfbGVhX21vZHJtX2FkZHIgKHVpbnQzMl90ICogYWRkcikKK3sKKyAg dWludDhfdCB0bXB1ODsKKyAgdWludDE2X3QgdG1wdTE2OworICB1aW50MzJf dCB0bXB1MzI7CisKKyAgKmFkZHIgPSAwOworICBpZiAoYWZsYWcpCisgICAg eworICAgICAgLyogMzIgYml0cyAqLworICAgICAgaW50IGhhdmVzaWIgPSAw OworICAgICAgdWludDhfdCBzY2FsZSA9IDA7CisgICAgICB1aW50OF90IGlu ZGV4ID0gMDsKKyAgICAgIHVpbnQ4X3QgYmFzZSA9IHJtOworCisgICAgICBp ZiAoYmFzZSA9PSA0KQorCXsKKwkgIGhhdmVzaWIgPSAxOworCSAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsICZ0bXB1OCwgMSkp CisJICAgIHsKKwkgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUmVjb3Jk OiByZWFkIG1lbWVvcnkgMHglcyBlcnJvci5cbiIpLAorCQkJCSBwYWRkcl9u eiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkg ICAgfQorCSAgaTM4Nl9yZWNvcmRfcGMrKzsKKwkgIHNjYWxlID0gKHRtcHU4 ID4+IDYpICYgMzsKKwkgIGluZGV4ID0gKCh0bXB1OCA+PiAzKSAmIDcpOwor CSAgYmFzZSA9ICh0bXB1OCAmIDcpOworCX0KKworICAgICAgc3dpdGNoICht b2QpCisJeworCWNhc2UgMDoKKwkgIGlmICgoYmFzZSAmIDcpID09IDUpCisJ ICAgIHsKKwkgICAgICBiYXNlID0gMHhmZjsKKwkgICAgICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgKGdkYl9ieXRlICopIGFk ZHIsIDQpKQorCQl7CisJCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJlY29y ZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCQkgICAgIHBh ZGRyX256IChpMzg2X3JlY29yZF9wYykpOworCQkgIHJldHVybiAoLTEpOwor CQl9CisJICAgICAgaTM4Nl9yZWNvcmRfcGMgKz0gNDsKKwkgICAgfQorCSAg ZWxzZQorCSAgICB7CisJICAgICAgKmFkZHIgPSAwOworCSAgICB9CisJICBi cmVhazsKKwljYXNlIDE6CisJICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChp Mzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkKKwkgICAgeworCSAgICAgIHBy aW50Zl91bmZpbHRlcmVkIChfKCJSZWNvcmQ6IHJlYWQgbWVtZW9yeSAweCVz IGVycm9yLlxuIiksCisJCQkJIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykp OworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBpMzg2X3JlY29y ZF9wYysrOworCSAgKmFkZHIgPSAoaW50OF90KSB0bXB1ODsKKwkgIGJyZWFr OworCWNhc2UgMjoKKwkgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZf cmVjb3JkX3BjLCAoZ2RiX2J5dGUgKikgYWRkciwgNCkpCisJICAgIHsKKwkg ICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUmVjb3JkOiByZWFkIG1lbWVv cnkgMHglcyBlcnJvci5cbiIpLAorCQkJCSBwYWRkcl9ueiAoaTM4Nl9yZWNv cmRfcGMpKTsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgaTM4 Nl9yZWNvcmRfcGMgKz0gNDsKKwkgIGJyZWFrOworCX0KKworICAgICAgaWYg KGJhc2UgIT0gMHhmZikKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBiYXNlLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor CSAgKmFkZHIgKz0gdG1wdTMyOworCX0KKworICAgICAgLyogWFhYOiBpbmRl eCA9PSA0IGlzIGFsd2F5cyBpbnZhbGlkICovCisgICAgICBpZiAoaGF2ZXNp YiAmJiAoaW5kZXggIT0gNCB8fCBzY2FsZSAhPSAwKSkKKwl7CisJICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBpbmRleCwgKGdkYl9i eXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMiA8PCBzY2Fs ZTsKKwl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogMTYgYml0 cyAqLworICAgICAgc3dpdGNoIChtb2QpCisJeworCWNhc2UgMDoKKwkgIGlm IChybSA9PSA2KQorCSAgICB7CisJICAgICAgaWYgKHRhcmdldF9yZWFkX21l bW9yeQorCQkgIChpMzg2X3JlY29yZF9wYywgKGdkYl9ieXRlICopICYgdG1w dTE2LCAyKSkKKwkJeworCQkgIHByaW50Zl91bmZpbHRlcmVkIChfKCJSZWNv cmQ6IHJlYWQgbWVtZW9yeSAweCVzIGVycm9yLlxuIiksCisJCQkJICAgICBw YWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkJICByZXR1cm4gKC0xKTsK KwkJfQorCSAgICAgIGkzODZfcmVjb3JkX3BjICs9IDI7CisJICAgICAgKmFk ZHIgPSAoaW50MTZfdCkgdG1wdTE2OworCSAgICAgIHJtID0gMDsKKwkgICAg ICBnb3RvIG5vX3JtOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAg ICAqYWRkciA9IDA7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgMToKKwkg IGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZfcmVjb3JkX3BjLCAmdG1w dTgsIDEpKQorCSAgICB7CisJICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8o IlJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCQkg cGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICAgICAgcmV0dXJuICgt MSk7CisJICAgIH0KKwkgIGkzODZfcmVjb3JkX3BjKys7CisJICAqYWRkciA9 IChpbnQ4X3QpIHRtcHU4OworCSAgYnJlYWs7CisJY2FzZSAyOgorCSAgaWYg KHRhcmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0 ZSAqKSAmIHRtcHUxNiwgMikpCisJICAgIHsKKwkgICAgICBwcmludGZfdW5m aWx0ZXJlZCAoXygiUmVjb3JkOiByZWFkIG1lbWVvcnkgMHglcyBlcnJvci5c biIpLAorCQkJCSBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkgICAg ICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgaTM4Nl9yZWNvcmRfcGMgKz0g MjsKKwkgICphZGRyID0gKGludDE2X3QpIHRtcHUxNjsKKwkgIGJyZWFrOwor CX0KKworICAgICAgc3dpdGNoIChybSkKKwl7CisJY2FzZSAwOgorCSAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlhfUkVH TlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFk ZHIgKz0gdG1wdTMyOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgSTM4Nl9FU0lfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgYnJlYWs7 CisJY2FzZSAxOgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRElfUkVHTlVNLAor CQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0g dG1wdTMyOworCSAgYnJlYWs7CisJY2FzZSAyOgorCSAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FQlBfUkVHTlVNLAorCQkJ ICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1w dTMyOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FU0lfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgYnJlYWs7CisJY2FzZSAz OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4 Nl9FQlBfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FRElfUkVHTlVNLAorCQkJICAgICAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOwor CSAgYnJlYWs7CisJY2FzZSA0OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FU0lfUkVHTlVNLAorCQkJICAgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAg YnJlYWs7CisJY2FzZSA1OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FRElfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgYnJl YWs7CisJY2FzZSA2OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgSTM4Nl9FQlBfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgYnJlYWs7 CisJY2FzZSA3OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgSTM4Nl9FQlhfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworCSAgKmFkZHIgKz0gdG1wdTMyOworCSAgYnJlYWs7CisJ fQorICAgICAgKmFkZHIgJj0gMHhmZmZmOworICAgIH0KKworbm9fcm06Cisg IHJldHVybiAoMCk7Cit9CisKKy8qIFJlY29yZCB0aGUgdmFsdWUgb2YgdGhl IG1lbW9yeSB0aGF0IHdpbGxiZSBjaGFuZ2VkIGluIGN1cnJlbnQgaW5zdHJ1 Y3Rpb24KKyAgIHRvICJyZWNvcmRfYXJjaF9saXN0Ii4KKyAgIFJldHVybiAt MSBpZiBzb21ldGhpbmcgd3JvbmcuICovCitzdGF0aWMgaW50CitpMzg2X3Jl Y29yZF9sZWFfbW9kcm0gKHZvaWQpCit7CisgIHVpbnQzMl90IGFkZHI7CisK KyAgaWYgKG92ZXJyaWRlKQorICAgIHsKKyAgICAgIHByaW50Zl91bmZpbHRl cmVkIChfCisJCQkgKCJSZWNvcmQ6IGNhbm4ndCBnZXQgdGhlIHZhbHVlIG9m IHRoZSBzZWdtZW50IHJlZ2lzdGVyIGluIGFkZHJlc3MgMHglcy4gUmVjb3Jk IGlnbm9yZSB0aGlzIGNoYW5nZS5cbiIpLAorCQkJIHBhZGRyX256IChyZWFk X3BjICgpKSk7CisgICAgICByZXR1cm4gKDApOworICAgIH0KKworICBpZiAo aTM4Nl9yZWNvcmRfbGVhX21vZHJtX2FkZHIgKCZhZGRyKSkKKyAgICB7Cisg ICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAoYWRkciwgMSA8PCBvdCkpCisgICAgeworICAgICAg cmV0dXJuICgtMSk7CisgICAgfQorCisgIHJldHVybiAoMCk7Cit9CisKKy8q IFBhcnNlIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIGFuZCByZWNvcmQgdGhl IHZhbHVlcyBvZiB0aGUgcmVnaXN0ZXJzIGFuZAorICAgbWVtb3J5IHRoYXQg d2lsbCBiZSBjaGFuZ2VkIGluIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gdG8gInJl Y29yZF9hcmNoX2xpc3QiLgorICAgUmV0dXJuIC0xIGlmIHNvbWV0aGluZyB3 cm9uZy4gKi8KK3N0YXRpYyBpbnQKK2kzODZfcmVjb3JkIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpCit7CisgIGludCBwcmVm aXhlcyA9IDA7CisgIHVpbnQ4X3QgdG1wdTg7CisgIHVpbnQxNl90IHRtcHUx NjsKKyAgdWludDMyX3QgdG1wdTMyOworICB1aW50MzJfdCBvcGNvZGU7CisK KyAgaTM4Nl9yZWNvcmRfcGMgPSBhZGRyOworICBhZmxhZyA9IDE7CisgIGRm bGFnID0gMTsKKyAgb3ZlcnJpZGUgPSAwOworCisgIGlmIChyZWNvcmRfZGVi dWcgPiAxKQorICAgIHsKKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgIlJlY29yZDogaTM4Nl9yZWNvcmQgcGMgPSAweCVzXG4iLAor CQkJICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKyAgICB9CisKKyAg LyogcHJlZml4ZXMgKi8KKyAgd2hpbGUgKDEpCisgICAgeworICAgICAgaWYg KHRhcmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsICZ0bXB1OCwg MSkpCisJeworCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJlY29yZDogcmVh ZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCSAgICAgcGFkZHJfbnog KGkzODZfcmVjb3JkX3BjKSk7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBpMzg2X3JlY29yZF9wYysrOworICAgICAgc3dpdGNoICh0bXB1OCkKKwl7 CisJY2FzZSAweGYzOgorCSAgcHJlZml4ZXMgfD0gUFJFRklYX1JFUFo7CisJ ICBicmVhazsKKwljYXNlIDB4ZjI6CisJICBwcmVmaXhlcyB8PSBQUkVGSVhf UkVQTlo7CisJICBicmVhazsKKwljYXNlIDB4ZjA6CisJICBwcmVmaXhlcyB8 PSBQUkVGSVhfTE9DSzsKKwkgIGJyZWFrOworCWNhc2UgMHgyZToKKwkgIG92 ZXJyaWRlID0gSTM4Nl9DU19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDB4 MzY6CisJICBvdmVycmlkZSA9IEkzODZfU1NfUkVHTlVNOworCSAgYnJlYWs7 CisJY2FzZSAweDNlOgorCSAgb3ZlcnJpZGUgPSBJMzg2X0RTX1JFR05VTTsK KwkgIGJyZWFrOworCWNhc2UgMHgyNjoKKwkgIG92ZXJyaWRlID0gSTM4Nl9F U19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDB4NjQ6CisJICBvdmVycmlk ZSA9IEkzODZfRlNfUkVHTlVNOworCSAgYnJlYWs7CisJY2FzZSAweDY1Ogor CSAgb3ZlcnJpZGUgPSBJMzg2X0dTX1JFR05VTTsKKwkgIGJyZWFrOworCWNh c2UgMHg2NjoKKwkgIHByZWZpeGVzIHw9IFBSRUZJWF9EQVRBOworCSAgYnJl YWs7CisJY2FzZSAweDY3OgorCSAgcHJlZml4ZXMgfD0gUFJFRklYX0FERFI7 CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgZ290byBvdXRfcHJlZml4ZXM7 CisJICBicmVhazsKKwl9CisgICAgfQorb3V0X3ByZWZpeGVzOgorICBpZiAo cHJlZml4ZXMgJiBQUkVGSVhfREFUQSkKKyAgICB7CisgICAgICBkZmxhZyBe PSAxOworICAgIH0KKyAgaWYgKHByZWZpeGVzICYgUFJFRklYX0FERFIpCisg ICAgeworICAgICAgYWZsYWcgXj0gMTsKKyAgICB9CisKKyAgLyogbm93IGNo ZWNrIG9wIGNvZGUgKi8KKyAgb3Bjb2RlID0gKHVpbnQzMl90KSB0bXB1ODsK K3Jlc3dpdGNoOgorICBzd2l0Y2ggKG9wY29kZSkKKyAgICB7CisgICAgY2Fz ZSAweDBmOgorICAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoaTM4Nl9y ZWNvcmRfcGMsICZ0bXB1OCwgMSkpCisJeworCSAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwK KwkJCSAgICAgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBpMzg2X3JlY29yZF9wYysrOworICAgICAg b3Bjb2RlID0gKHVpbnQxNl90KSB0bXB1OCB8IDB4MGYwMDsKKyAgICAgIGdv dG8gcmVzd2l0Y2g7CisgICAgICBicmVhazsKKworICAgICAgLyogYXJpdGgg JiBsb2dpYyAqLworICAgIGNhc2UgMHgwMCAuLi4gMHgwNToKKyAgICBjYXNl IDB4MDggLi4uIDB4MGQ6CisgICAgY2FzZSAweDEwIC4uLiAweDE1OgorICAg IGNhc2UgMHgxOCAuLi4gMHgxZDoKKyAgICBjYXNlIDB4MjAgLi4uIDB4MjU6 CisgICAgY2FzZSAweDI4IC4uLiAweDJkOgorICAgIGNhc2UgMHgzMCAuLi4g MHgzNToKKyAgICBjYXNlIDB4MzggLi4uIDB4M2Q6CisgICAgICBpZiAoKChv cGNvZGUgPj4gMykgJiA3KSAhPSBPUF9DTVBMKQorCXsKKwkgIGlmICgob3Bj b2RlICYgMSkgPT0gMCkKKwkgICAgeworCSAgICAgIG90ID0gT1RfQllURTsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgb3QgPSBkZmxhZyAr IE9UX1dPUkQ7CisJICAgIH0KKworCSAgc3dpdGNoICgob3Bjb2RlID4+IDEp ICYgMykKKwkgICAgeworCSAgICAgIC8qIE9QIEV2LCBHdiAqLworCSAgICBj YXNlIDA6CisJICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCQl7 CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgICBpZiAobW9kICE9IDMp CisJCXsKKwkJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQkg ICAgeworCQkgICAgICByZXR1cm4gKC0xKTsKKwkJICAgIH0KKwkJfQorCSAg ICAgIGVsc2UKKwkJeworCQkgIGlmIChvdCA9PSBPVF9CWVRFKQorCQkgICAg eworCQkgICAgICBybSAmPSAweDM7CisJCSAgICB9CisJCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCQkgICAgeworCQkgICAgICBy ZXR1cm4gKC0xKTsKKwkJICAgIH0KKwkJfQorCSAgICAgIGJyZWFrOworCSAg ICAgIC8qIE9QIEd2LCBFdiAqLworCSAgICBjYXNlIDE6CisJICAgICAgaWYg KGkzODZfcmVjb3JkX21vZHJtICgpKQorCQl7CisJCSAgcmV0dXJuICgtMSk7 CisJCX0KKwkgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwkJeworCQkgIHJl ZyAmPSAweDM7CisJCX0KKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChyZWcpKQorCQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkg ICAgICBicmVhazsKKwkgICAgICAvKiBPUCBBLCBJdiAqLworCSAgICBjYXNl IDI6CisJICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FQVhfUkVHTlVNKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJ ICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBH UlAxICovCisgICAgY2FzZSAweDgwIC4uLiAweDgzOgorICAgICAgaWYgKGkz ODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KworICAgICAgaWYgKHJlZyAhPSBPUF9DTVBMKQorCXsKKwkgIGlmICgob3Bj b2RlICYgMSkgPT0gMCkKKwkgICAgeworCSAgICAgIG90ID0gT1RfQllURTsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgb3QgPSBkZmxhZyAr IE9UX1dPUkQ7CisJICAgIH0KKworCSAgaWYgKG1vZCAhPSAzKQorCSAgICB7 CisJICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkJewor CQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwkgIGVsc2UKKwkgICAg eworCSAgICAgIGlmIChvdCA9PSBPVF9CWVRFKQorCQl7CisJCSAgcmVnICY9 IDB4MzsKKwkJfQorCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJlZykpCisJCXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogaW52ICovCisgICAgY2FzZSAweDQw IC4uLiAweDQ3OgorICAgICAgLyogZGVjICovCisgICAgY2FzZSAweDQ4IC4u LiAweDRmOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo b3Bjb2RlICYgNykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVH TlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsK KworICAgICAgLyogR1JQMyAqLworICAgIGNhc2UgMHhmNjoKKyAgICBjYXNl IDB4Zjc6CisgICAgICBpZiAoKG9wY29kZSAmIDEpID09IDApCisJeworCSAg b3QgPSBPVF9CWVRFOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBvdCA9IGRm bGFnICsgT1RfV09SRDsKKwl9CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorCisgICAgICBzd2l0 Y2ggKHJlZykKKwl7CisJICAvKiB0ZXN0ICovCisJY2FzZSAwOgorCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVN KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBi cmVhazsKKwkgIC8qIG5vdCAqLworCWNhc2UgMjoKKwkgIGlmIChtb2QgIT0g MykKKwkgICAgeworCSAgICAgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0g KCkpCisJCXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9CisJICBl bHNlCisJICAgIHsKKwkgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwkJewor CQkgIHJtICY9IDB4MzsKKwkJfQorCSAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKHJtKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9 CisJICAgIH0KKwkgIGJyZWFrOworCSAgLyogbmVnICovCisJY2FzZSAzOgor CSAgaWYgKG1vZCAhPSAzKQorCSAgICB7CisJICAgICAgaWYgKGkzODZfcmVj b3JkX2xlYV9tb2RybSAoKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9 CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChvdCA9PSBP VF9CWVRFKQorCQl7CisJCSAgcm0gJj0gMHgzOworCQl9CisJICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCQl7CisJCSAgcmV0 dXJuICgtMSk7CisJCX0KKwkgICAgfQorCSAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBicmVhazsKKwkgIC8qIG11 bCAqLworCWNhc2UgNDoKKwkgIC8qIGltdWwgKi8KKwljYXNlIDU6CisJICAv KiBkaXYgKi8KKwljYXNlIDY6CisJICAvKiBpZGl2ICovCisJY2FzZSA3Ogor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVH TlVNKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJ ICBpZiAob3QgIT0gT1RfQllURSkKKwkgICAgeworCSAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRURYX1JFR05VTSkpCisJCXsK KwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9CisJICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCSAg ICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFrOwor CWRlZmF1bHQ6CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAgb3Bjb2Rl ID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsK KwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBHUlA0 ICovCisgICAgY2FzZSAweGZlOgorICAgICAgLyogR1JQNSAqLworICAgIGNh c2UgMHhmZjoKKyAgICAgIGlmICgob3Bjb2RlICYgMSkgPT0gMCkKKwl7CisJ ICBvdCA9IE9UX0JZVEU7CisJfQorICAgICAgZWxzZQorCXsKKwkgIG90ID0g ZGZsYWcgKyBPVF9XT1JEOworCX0KKyAgICAgIGlmIChpMzg2X3JlY29yZF9t b2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAo cmVnID49IDIgJiYgb3Bjb2RlID09IDB4ZmUpCisJeworCSAgaTM4Nl9yZWNv cmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07 CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJfQorCisgICAgICBzd2l0Y2ggKHJl ZykKKwl7CisJICAvKiBpbmMgKi8KKwljYXNlIDA6CisJICAvKiBkZWMgKi8K KwljYXNlIDE6CisJICBpZiAobW9kICE9IDMpCisJICAgIHsKKwkgICAgICBp ZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQl7CisJCSAgcmV0dXJu ICgtMSk7CisJCX0KKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAg aWYgKG90ID09IE9UX0JZVEUpCisJCXsKKwkJICBybSAmPSAweDM7CisJCX0K KwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJ CXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9CisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFr OworCSAgLyogY2FsbCAqLworCWNhc2UgMjoKKwkgIC8qIHB1c2ggKi8KKwlj YXNlIDY6CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2 X0VTUF9SRUdOVU0pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJ ICAgIH0KKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRVNQX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0KKwkgICAg ICAoKENPUkVfQUREUikgdG1wdTMyIC0gKDEgPDwgKGRmbGFnICsgMSkpLCAo MSA8PCAoZGZsYWcgKyAxKSkpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgt MSk7CisJICAgIH0KKwkgIGJyZWFrOworCSAgLyogbGNhbGwgKi8KKwljYXNl IDM6CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VT UF9SRUdOVU0pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfQ1Nf UkVHTlVNKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9 CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VTUF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAgICAgKChD T1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxhZyArIDIpKSwgKDEgPDwg KGRmbGFnICsgMikpKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJICBicmVhazsKKwkgIC8qIGptcCAqLworCWNhc2UgNDoKKwkg IC8qIGxqbXAgKi8KKwljYXNlIDU6CisJICBicmVhazsKKwlkZWZhdWx0Ogor CSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8 PCA4IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJICBicmVhazsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogdGVzdCAqLworICAgIGNh c2UgMHg4NDoKKyAgICBjYXNlIDB4ODU6CisgICAgY2FzZSAweGE4OgorICAg IGNhc2UgMHhhOToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIENXREUvQ0JXICovCisg ICAgY2FzZSAweDk4OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogQ0RRL0NXRCAqLworICAg IGNhc2UgMHg5OToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUFYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RFhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogaW11bCAqLworICAgIGNhc2UgMHgwZmFmOgor ICAgIGNhc2UgMHg2OToKKyAgICBjYXNlIDB4NmI6CisgICAgICBvdCA9IGRm bGFnICsgT1RfV09SRDsKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAo KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAob3QgPT0g T1RfQllURSkKKwl7CisJICByZWcgJj0gMHgzOworCX0KKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJlZykpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogeGFkZCAqLworICAgIGNh c2UgMHgwZmMwOgorICAgIGNhc2UgMHgwZmMxOgorICAgICAgaWYgKChvcGNv ZGUgJiAxKSA9PSAwKQorCXsKKwkgIG90ID0gT1RfQllURTsKKwl9CisgICAg ICBlbHNlCisJeworCSAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisJfQorICAg ICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBpZiAob3Qg PT0gT1RfQllURSkKKwkgICAgeworCSAgICAgIHJlZyAmPSAweDM7CisJICAg IH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJlZykpCisJ ICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgaWYgKG90 ID09IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICBybSAmPSAweDM7CisJICAg IH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkg ICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAg ZWxzZQorCXsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJ ICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgaWYgKG90 ID09IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICByZWcgJj0gMHgzOworCSAg ICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19S RUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBjbXB4Y2hnICovCisgICAgY2FzZSAweDBmYjA6Cisg ICAgY2FzZSAweDBmYjE6CisgICAgICBpZiAoKG9wY29kZSAmIDEpID09IDAp CisJeworCSAgb3QgPSBPVF9CWVRFOworCX0KKyAgICAgIGVsc2UKKwl7CisJ ICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKwl9CisgICAgICBpZiAoaTM4Nl9y ZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgaWYgKG1vZCA9PSAzKQorCXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJICAgIHsKKwkgICAgICBy ZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgaWYgKG90ID09IE9UX0JZVEUpCisJ ICAgIHsKKwkgICAgICByZWcgJj0gMHgzOworCSAgICB9CisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJeworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVN KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBp ZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBj bXB4Y2hnOGIgKi8KKyAgICBjYXNlIDB4MGZjNzoKKyAgICAgIGlmIChpMzg2 X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBpZiAobW9kID09IDMpCisJeworCSAgaTM4Nl9yZWNvcmRfcGMgLT0g MjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICBnb3Rv IG5vX3N1cHBvcnQ7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VEWF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogcHVzaCAqLworICAg IGNhc2UgMHg1MCAuLi4gMHg1NzoKKyAgICBjYXNlIDB4Njg6CisgICAgY2Fz ZSAweDZhOgorICAgICAgLyogcHVzaCBlcyAqLworICAgIGNhc2UgMHgwNjoK KyAgICAgIC8qIHB1c2ggY3MgKi8KKyAgICBjYXNlIDB4MGU6CisgICAgICAv KiBwdXNoIHNzICovCisgICAgY2FzZSAweDE2OgorICAgICAgLyogcHVzaCBk cyAqLworICAgIGNhc2UgMHgxZToKKyAgICAgIC8qIHB1c2ggZnMgKi8KKyAg ICBjYXNlIDB4MGZhMDoKKyAgICAgIC8qIHB1c2ggZ3MgKi8KKyAgICBjYXNl IDB4MGZhODoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4 Nl9FU1BfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAoKENPUkVf QUREUikgdG1wdTMyIC0gKDEgPDwgKGRmbGFnICsgMSkpLCAoMSA8PCAoZGZs YWcgKyAxKSkpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBwb3AgKi8KKyAgICBjYXNlIDB4NTggLi4uIDB4 NWY6CisgICAgICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKG90ID09IE9UX0JZ VEUpCisJeworCSAgb3Bjb2RlICY9IDB4MzsKKwl9CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChvcGNvZGUgJiAweDcpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBw dXNoYSAqLworICAgIGNhc2UgMHg2MDoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FU1BfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtCisJICAoKENPUkVfQUREUikgdG1wdTMyIC0gKDEgPDwgKGRmbGFnICsg NCkpLCAoMSA8PCAoZGZsYWcgKyA0KSkpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBwb3BhICovCisgICAg Y2FzZSAweDYxOgorICAgICAgZm9yICh0bXB1OCA9IEkzODZfRUFYX1JFR05V TTsgdG1wdTggPD0gSTM4Nl9FRElfUkVHTlVNOyB0bXB1OCsrKQorCXsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHRtcHU4KSkKKwkgICAg eworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHBvcCAqLworICAgIGNhc2UgMHg4ZjoKKyAgICAg IG90ID0gZGZsYWcgKyBPVF9XT1JEOworICAgICAgaWYgKGkzODZfcmVjb3Jk X21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlm IChtb2QgPT0gMykKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVh X21vZHJtICgpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBlbnRlciAqLworICAgIGNhc2UgMHhj ODoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQlBfUkVHTlVN KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTUF9SRUdOVU0sCisJ CQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0KKwkgICgoQ09SRV9BRERSKSB0bXB1MzIgLSAo MSA8PCAoZGZsYWcgKyAxKSksICgxIDw8IChkZmxhZyArIDEpKSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IGxlYXZlICovCisgICAgY2FzZSAweGM5OgorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VCUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBwb3AgZXMgKi8KKyAg ICBjYXNlIDB4MDc6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RVNfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogcG9wIHNzICovCisgICAgY2FzZSAweDE3Ogor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU1Bf UkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X1NTX1JFR05VTSkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHBvcCBkcyAqLworICAgIGNhc2UgMHgxZjoKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAoSTM4Nl9EU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBwb3AgZnMgKi8K KyAgICBjYXNlIDB4MGZhMToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9GU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBwb3AgZ3MgKi8KKyAgICBjYXNlIDB4 MGZhOToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9HU19SRUdO VU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBtb3YgKi8KKyAgICBjYXNlIDB4ODg6CisgICAgY2FzZSAw eDg5OgorICAgIGNhc2UgMHhjNjoKKyAgICBjYXNlIDB4Yzc6CisgICAgICBp ZiAoKG9wY29kZSAmIDEpID09IDApCisJeworCSAgb3QgPSBPVF9CWVRFOwor CX0KKyAgICAgIGVsc2UKKwl7CisJICBvdCA9IGRmbGFnICsgT1RfV09SRDsK Kwl9CisKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisKKyAgICAgIGlmIChtb2QgIT0gMykKKwl7 CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICB7CisJ ICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJ eworCSAgaWYgKG90ID09IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICBybSAm PSAweDM7CisJICAgIH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJtKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKyAgICAgIC8qIG1vdiAqLworICAgIGNhc2UgMHg4YToK KyAgICBjYXNlIDB4OGI6CisgICAgICBpZiAoKG9wY29kZSAmIDEpID09IDAp CisJeworCSAgb3QgPSBPVF9CWVRFOworCX0KKyAgICAgIGVsc2UKKwl7CisJ ICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKwl9CisKKyAgICAgIGlmIChpMzg2 X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisK KyAgICAgIGlmIChvdCA9PSBPVF9CWVRFKQorCXsKKwkgIHJlZyAmPSAweDM7 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocmVn KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIG1vdiBzZWcgKi8KKyAgICBjYXNlIDB4OGU6CisgICAgICBpZiAoaTM4 Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor CisgICAgICBzd2l0Y2ggKHJlZykKKwl7CisJY2FzZSAwOgorCSAgdG1wdTgg PSBJMzg2X0VTX1JFR05VTTsKKwkgIGJyZWFrOworCWNhc2UgMjoKKwkgIHRt cHU4ID0gSTM4Nl9TU19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDM6CisJ ICB0bXB1OCA9IEkzODZfRFNfUkVHTlVNOworCSAgYnJlYWs7CisJY2FzZSA0 OgorCSAgdG1wdTggPSBJMzg2X0ZTX1JFR05VTTsKKwkgIGJyZWFrOworCWNh c2UgNToKKwkgIHRtcHU4ID0gSTM4Nl9HU19SRUdOVU07CisJICBicmVhazsK KwlkZWZhdWx0OgorCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29k ZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7 CisJICBicmVhazsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnICh0bXB1OCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorCisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFH U19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBtb3Ygc2VnICovCisgICAgY2FzZSAweDhjOgor ICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGlmIChyZWcgPiA1KQorCXsKKwkgIGkzODZf cmVjb3JkX3BjIC09IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1v ZHJtOworCSAgZ290byBub19zdXBwb3J0OworCX0KKworICAgICAgaWYgKG1v ZCA9PSAzKQorCXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KHJtKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJ fQorICAgICAgZWxzZQorCXsKKwkgIG90ID0gT1RfV09SRDsKKwkgIGlmIChp Mzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJICAgIHsKKwkgICAgICByZXR1 cm4gKC0xKTsKKwkgICAgfQorCX0KKworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogbW92 emJTICovCisgICAgY2FzZSAweDBmYjY6CisgICAgICAvKiBtb3Z6d1MgKi8K KyAgICBjYXNlIDB4MGZiNzoKKyAgICAgIC8qIG1vdnNiUyAqLworICAgIGNh c2UgMHgwZmJlOgorICAgICAgLyogbW92c3dTICovCisgICAgY2FzZSAweDBm YmY6CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAocmVnKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogbGVhICovCisgICAgY2FzZSAweDhkOgor ICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBpMzg2 X3JlY29yZF9wYyAtPSAyOworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBt b2RybTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisKKyAgICAgIG90ID0g ZGZsYWc7CisgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwl7CisJICByZWcg Jj0gMHgzOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJlZykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIG1vdiBFQVggKi8KKyAgICBjYXNlIDB4YTA6Cisg ICAgY2FzZSAweGExOgorICAgICAgLyogeGxhdCAqLworICAgIGNhc2UgMHhk NzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RUFYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIG1vdiBFQVggKi8KKyAgICBjYXNlIDB4YTI6 CisgICAgY2FzZSAweGEzOgorICAgICAgeworCXVpbnQzMl90IGFkZHI7CisK KwlpZiAoKG9wY29kZSAmIDEpID09IDApCisJICB7CisJICAgIG90ID0gT1Rf QllURTsKKwkgIH0KKwllbHNlCisJICB7CisJICAgIG90ID0gZGZsYWcgKyBP VF9XT1JEOworCSAgfQorCWlmIChhZmxhZykKKwkgIHsKKwkgICAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0ZSAq KSAmIGFkZHIsIDQpKQorCSAgICAgIHsKKwkJcHJpbnRmX3VuZmlsdGVyZWQg KF8oIlJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJ CQkgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkJcmV0dXJuICgt MSk7CisJICAgICAgfQorCSAgICBpMzg2X3JlY29yZF9wYyArPSA0OworCSAg fQorCWVsc2UKKwkgIHsKKwkgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAo aTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0ZSAqKSAmIHRtcHUxNiwgNCkpCisJ ICAgICAgeworCQlwcmludGZfdW5maWx0ZXJlZCAoXygiUmVjb3JkOiByZWFk IG1lbWVvcnkgMHglcyBlcnJvci5cbiIpLAorCQkJCSAgIHBhZGRyX256IChp Mzg2X3JlY29yZF9wYykpOworCQlyZXR1cm4gKC0xKTsKKwkgICAgICB9CisJ ICAgIGkzODZfcmVjb3JkX3BjICs9IDI7CisJICAgIGFkZHIgPSB0bXB1MTY7 CisJICB9CisJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwg MSA8PCBvdCkpCisJICB7CisJICAgIHJldHVybiAoLTEpOworCSAgfQorICAg ICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIG1vdiBSLCBJYiAqLwor ICAgIGNhc2UgMHhiMCAuLi4gMHhiNzoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKChvcGNvZGUgJiAweDcpICYgMHgzKSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog bW92IFIsIEl2ICovCisgICAgY2FzZSAweGI4IC4uLiAweGJmOgorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAob3Bjb2RlICYgMHg3KSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogeGNoZyBSLCBFQVggKi8KKyAgICBjYXNlIDB4OTEgLi4uIDB4OTc6 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VB WF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKG9wY29kZSAmIDB4NykpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHhjaGcgRXYsIEd2ICovCisgICAgY2FzZSAweDg2OgorICAgIGNhc2Ug MHg4NzoKKyAgICAgIGlmICgob3Bjb2RlICYgMSkgPT0gMCkKKwl7CisJICBv dCA9IE9UX0JZVEU7CisJfQorICAgICAgZWxzZQorCXsKKwkgIG90ID0gZGZs YWcgKyBPVF9XT1JEOworCX0KKworICAgICAgaWYgKGkzODZfcmVjb3JkX21v ZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKworICAgICAgaWYg KG1vZCA9PSAzKQorCXsKKwkgIGlmIChvdCA9PSBPVF9CWVRFKQorCSAgICB7 CisJICAgICAgcm0gJj0gMHgzOworCSAgICB9CisJICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4g KC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAoaTM4 Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICB7CisJICAgICAgcmV0dXJu ICgtMSk7CisJICAgIH0KKwl9CisKKyAgICAgIGlmIChvdCA9PSBPVF9CWVRF KQorCXsKKwkgIHJlZyAmPSAweDM7CisJfQorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAocmVnKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogbGVzIEd2ICovCisgICAg Y2FzZSAweGM0OgorICAgICAgLyogbGRzIEd2ICovCisgICAgY2FzZSAweGM1 OgorICAgICAgLyogbHNzIEd2ICovCisgICAgY2FzZSAweDBmYjI6CisgICAg ICAvKiBsZnMgR3YgKi8KKyAgICBjYXNlIDB4MGZiNDoKKyAgICAgIC8qIGxn cyBHdiAqLworICAgIGNhc2UgMHgwZmI1OgorICAgICAgaWYgKGkzODZfcmVj b3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IGlmIChtb2QgPT0gMykKKwl7CisJICBpZiAob3Bjb2RlID4gMHhmZikKKwkg ICAgeworCSAgICAgIGkzODZfcmVjb3JkX3BjIC09IDM7CisJICAgIH0KKwkg IGVsc2UKKwkgICAgeworCSAgICAgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJ ICAgIH0KKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICBn b3RvIG5vX3N1cHBvcnQ7CisJfQorCisgICAgICBzd2l0Y2ggKG9wY29kZSkK Kwl7CisJICAvKiBsZXMgR3YgKi8KKwljYXNlIDB4YzQ6CisJICB0bXB1OCA9 IEkzODZfRVNfUkVHTlVNOworCSAgYnJlYWs7CisJICAvKiBsZHMgR3YgKi8K KwljYXNlIDB4YzU6CisJICB0bXB1OCA9IEkzODZfRFNfUkVHTlVNOworCSAg YnJlYWs7CisJICAvKiBsc3MgR3YgKi8KKwljYXNlIDB4MGZiMjoKKwkgIHRt cHU4ID0gSTM4Nl9TU19SRUdOVU07CisJICBicmVhazsKKwkgIC8qIGxmcyBH diAqLworCWNhc2UgMHgwZmI0OgorCSAgdG1wdTggPSBJMzg2X0ZTX1JFR05V TTsKKwkgIGJyZWFrOworCSAgLyogbGdzIEd2ICovCisJY2FzZSAweDBmYjU6 CisJICB0bXB1OCA9IEkzODZfR1NfUkVHTlVNOworCSAgYnJlYWs7CisJfQor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAodG1wdTgpKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAocmVnKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc2hpZnRzICovCisgICAg Y2FzZSAweGMwOgorICAgIGNhc2UgMHhjMToKKyAgICBjYXNlIDB4ZDA6Cisg ICAgY2FzZSAweGQxOgorICAgIGNhc2UgMHhkMjoKKyAgICBjYXNlIDB4ZDM6 CisgICAgICBpZiAoKG9wY29kZSAmIDEpID09IDApCisJeworCSAgb3QgPSBP VF9CWVRFOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBvdCA9IGRmbGFnICsg T1RfV09SRDsKKwl9CisKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAo KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisKKyAgICAgIGlmIChtb2Qg IT0gMyAmJiAob3Bjb2RlID09IDB4ZDIgfHwgb3Bjb2RlID09IDB4ZDMpKQor CXsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJICAgIHsK KwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UK Kwl7CisJICBpZiAob3QgPT0gT1RfQllURSkKKwkgICAgeworCSAgICAgIHJt ICY9IDB4MzsKKwkgICAgfQorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAocm0pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwl9CisKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MGZhNDoKKyAgICBjYXNl IDB4MGZhNToKKyAgICBjYXNlIDB4MGZhYzoKKyAgICBjYXNlIDB4MGZhZDoK KyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBpZiAobW9kID09IDMpCisJeworCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCSAgICB7CisJICAg ICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJewor CSAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIGZsb2F0cyAqLworICAgICAgLyogWFhYICovCisKKyAgICAg IC8qIHN0cmluZyBvcHMgKi8KKyAgICAgIC8qIG1vdnNTICovCisgICAgY2Fz ZSAweGE0OgorICAgIGNhc2UgMHhhNToKKyAgICAgIC8qIHN0b3NTICovCisg ICAgY2FzZSAweGFhOgorICAgIGNhc2UgMHhhYjoKKyAgICAgIC8qIGluc1Mg Ki8KKyAgICBjYXNlIDB4NmM6CisgICAgY2FzZSAweDZkOgorICAgICAgewor CXVpbnQzMl90IGFkZHI7CisKKwlpZiAoKG9wY29kZSAmIDEpID09IDApCisJ ICB7CisJICAgIG90ID0gT1RfQllURTsKKwkgIH0KKwllbHNlCisJICB7CisJ ICAgIG90ID0gZGZsYWcgKyBPVF9XT1JEOworCSAgfQorCWlmIChvcGNvZGUg PT0gMHhhNCB8fCBvcGNvZGUgPT0gMHhhNSkKKwkgIHsKKwkgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU0lfUkVHTlVNKSkKKwkg ICAgICB7CisJCXJldHVybiAoLTEpOworCSAgICAgIH0KKwkgIH0KKwlpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VESV9SRUdOVU0pKQor CSAgeworCSAgICByZXR1cm4gKC0xKTsKKwkgIH0KKworCXJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURJX1JFR05VTSwKKwkJ CSAgIChnZGJfYnl0ZSAqKSAmIGFkZHIpOworCWlmICghYWZsYWcpCisJICB7 CisJICAgIGFkZHIgJj0gMHhmZmZmOworCSAgICAvKiBhZGRyICs9ICgodWlu dDMyX3QpcmVhZF9yZWdpc3RlciAoSTM4Nl9FU19SRUdOVU0pKSA8PCA0OyAq LworCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICAgICAgICgiUmVj b3JkOiBjYW5uJ3QgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCByZWdp c3Rlci5cbiIpKTsKKwkgICAgcmV0dXJuICgtMSk7CisJICB9CisKKwlpZiAo cHJlZml4ZXMgJiAoUFJFRklYX1JFUFogfCBQUkVGSVhfUkVQTlopKQorCSAg eworCSAgICB1aW50MzJfdCBjb3VudDsKKworCSAgICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdOVU0sCisJCQkg ICAgICAgKGdkYl9ieXRlICopICYgY291bnQpOworCSAgICBpZiAoIWFmbGFn KQorCSAgICAgIHsKKwkJY291bnQgJj0gMHhmZmZmOworCSAgICAgIH0KKwor CSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2 X0VGTEFHU19SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgICAgaWYgKCh0bXB1MzIgPj4gMTApICYgMHgxKQorCSAgICAg IHsKKwkJYWRkciAtPSAoY291bnQgLSAxKSAqICgxIDw8IG90KTsKKwkgICAg ICB9CisKKwkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRk ciwgY291bnQgKiAoMSA8PCBvdCkpKQorCSAgICAgIHsKKwkJcmV0dXJuICgt MSk7CisJICAgICAgfQorCisJICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRUNYX1JFR05VTSkpCisJICAgICAgeworCQlyZXR1cm4g KC0xKTsKKwkgICAgICB9CisJICB9CisJZWxzZQorCSAgeworCSAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAxIDw8IG90KSkKKwkg ICAgICB7CisJCXJldHVybiAoLTEpOworCSAgICAgIH0KKwkgIH0KKyAgICAg IH0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBsb2RzUyAqLworICAgIGNh c2UgMHhhYzoKKyAgICBjYXNlIDB4YWQ6CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRVNJX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgaWYgKHByZWZpeGVzICYgKFBSRUZJWF9SRVBaIHwgUFJF RklYX1JFUE5aKSkKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VDWF9SRUdOVU0pKQorCSAgICB7CisJICAgICAgcmV0dXJu ICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog b3V0c1MgKi8KKyAgICBjYXNlIDB4NmU6CisgICAgY2FzZSAweDZmOgorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU0lfUkVH TlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocHJl Zml4ZXMgJiAoUFJFRklYX1JFUFogfCBQUkVGSVhfUkVQTlopKQorCXsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUNYX1JFR05V TSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzY2FzUyAqLworICAgIGNhc2Ug MHhhZToKKyAgICBjYXNlIDB4YWY6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VESV9SRUdOVU0pKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGlmIChwcmVmaXhlcyAmIChQUkVGSVhfUkVQ WiB8IFBSRUZJWF9SRVBOWikpCisJeworCSAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVHTlVNKSkKKwkgICAgeworCSAgICAg IHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog Y21wc1MgKi8KKyAgICBjYXNlIDB4YTY6CisgICAgY2FzZSAweGE3OgorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRElfUkVH TlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTSV9SRUdOVU0pKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChwcmVmaXhlcyAmIChQ UkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikpCisJeworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVHTlVNKSkKKwkgICAg eworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVN KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKwor ICAgICAgLyogcG9ydCBJL08gKi8KKyAgICBjYXNlIDB4ZTQ6CisgICAgY2Fz ZSAweGU1OgorICAgIGNhc2UgMHhlYzoKKyAgICBjYXNlIDB4ZWQ6CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdO VU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSAweGU2OgorICAgIGNhc2UgMHhlNzoKKyAgICBjYXNlIDB4 ZWU6CisgICAgY2FzZSAweGVmOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IGNvbnRyb2wgKi8KKyAgICAgIC8qIHJldCBpbSAqLworICAgIGNhc2UgMHhj MjoKKyAgICAgIC8qIHJldCAqLworICAgIGNhc2UgMHhjMzoKKyAgICAgIC8q IGxyZXQgaW0gKi8KKyAgICBjYXNlIDB4Y2E6CisgICAgICAvKiBscmV0ICov CisgICAgY2FzZSAweGNiOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0NTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIGlyZXQgKi8KKyAgICBjYXNlIDB4Y2Y6 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VT UF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfQ1NfUkVHTlVNKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBj YWxsIGltICovCisgICAgY2FzZSAweGU4OgorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCBJMzg2X0VTUF9SRUdOVU0sCisJCQkgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0KKwkgICgoQ09SRV9BRERSKSB0bXB1MzIgLSAoMSA8PCAoZGZsYWcg KyAxKSksICgxIDw8IChkZmxhZyArIDEpKSkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGxjYWxsIGltICov CisgICAgY2FzZSAweDlhOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAoSTM4Nl9DU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F U1BfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAoKENPUkVfQURE UikgdG1wdTMyIC0gKDEgPDwgKGRmbGFnICsgMikpLCAoMSA8PCAoZGZsYWcg KyAyKSkpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBqbXAgaW0gKi8KKyAgICBjYXNlIDB4ZTk6CisgICAg ICAvKiBsam1wIGltICovCisgICAgY2FzZSAweGVhOgorICAgICAgLyogam1w IEpiICovCisgICAgY2FzZSAweGViOgorICAgICAgLyogamNjIEpiICovCisg ICAgY2FzZSAweDcwIC4uLiAweDdmOgorICAgICAgLyogamNjIEp2ICovCisg ICAgY2FzZSAweDBmODAgLi4uIDB4MGY4ZjoKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzZXRjYyBHdiAqLworICAgIGNhc2UgMHgwZjkwIC4uLiAweDBm OWY6CisgICAgICBvdCA9IE9UX0JZVEU7CisgICAgICBpZiAoaTM4Nl9yZWNv cmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg aWYgKG1vZCA9PSAzKQorCXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKHJtICYgMHgzKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChpMzg2X3Jl Y29yZF9sZWFfbW9kcm0gKCkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0x KTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBjbW92 IEd2LCBFdiAqLworICAgIGNhc2UgMHgwZjQwIC4uLiAweDBmNGY6CisgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgaWYgKGRmbGFnID09IE9UX0JZVEUpCisJeworCSAg cmVnICY9IDB4MzsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChyZWcgJiAweDMpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBmbGFncyAqLworICAgICAgLyog cHVzaGYgKi8KKyAgICBjYXNlIDB4OWM6CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbQorCSAgKChDT1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxhZyAr IDEpKSwgKDEgPDwgKGRmbGFnICsgMSkpKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wZiAqLworICAg IGNhc2UgMHg5ZDoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc2FoZiAqLworICAgIGNhc2UgMHg5ZToK KyAgICAgIC8qIGNtYyAqLworICAgIGNhc2UgMHhmNToKKyAgICAgIC8qIGNs YyAqLworICAgIGNhc2UgMHhmODoKKyAgICAgIC8qIHN0YyAqLworICAgIGNh c2UgMHhmOToKKyAgICAgIC8qIGNsZCAqLworICAgIGNhc2UgMHhmYzoKKyAg ICAgIC8qIHN0ZCAqLworICAgIGNhc2UgMHhmZDoKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIGxhaGYgKi8KKyAgICBjYXNlIDB4OWY6CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBi aXQgb3BlcmF0aW9ucyAqLworICAgICAgLyogYnQvYnRzL2J0ci9idGMgR3Ys IGltICovCisgICAgY2FzZSAweDBmYmE6CisgICAgICAvKiBidHMgKi8KKyAg ICBjYXNlIDB4MGZhYjoKKyAgICAgIC8qIGJ0ciAqLworICAgIGNhc2UgMHgw ZmIzOgorICAgICAgLyogYnRjICovCisgICAgY2FzZSAweDBmYmI6CisgICAg ICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKyAgICAgIGlmIChpMzg2X3JlY29y ZF9tb2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBp ZiAocmVnIDwgNCkKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAzOworCSAg b3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3Vw cG9ydDsKKwl9CisgICAgICByZWcgLT0gNDsKKyAgICAgIGlmIChyZWcgIT0g MCkKKwl7CisJICBpZiAobW9kICE9IDMpCisJICAgIHsKKwkgICAgICBpZiAo aTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQl7CisJCSAgcmV0dXJuICgt MSk7CisJCX0KKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCQl7CisJCSAgcmV0 dXJuICgtMSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IGJ0IEd2LCBFdiAqLworICAgIGNhc2UgMHgwZmEzOgorICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogYnNmICovCisgICAgY2FzZSAweDBmYmM6CisgICAgICAvKiBic3Ig Ki8KKyAgICBjYXNlIDB4MGZiZDoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKHJlZykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxB R1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogYmNkICovCisgICAgICAvKiBkYWEgKi8KKyAg ICBjYXNlIDB4Mjc6CisgICAgICAvKiBkYXMgKi8KKyAgICBjYXNlIDB4MmY6 CisgICAgICAvKiBhYWEgKi8KKyAgICBjYXNlIDB4Mzc6CisgICAgICAvKiBh YXMgKi8KKyAgICBjYXNlIDB4M2Y6CisgICAgICAvKiBhYW0gKi8KKyAgICBj YXNlIDB4ZDQ6CisgICAgICAvKiBhYWQgKi8KKyAgICBjYXNlIDB4ZDU6Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VBWF9S RUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIG1pc2MgKi8KKyAgICAgIC8qIG5vcCAqLworICAgIGNhc2UgMHg5 MDoKKyAgICAgIGlmIChwcmVmaXhlcyAmIFBSRUZJWF9MT0NLKQorCXsKKwkg IGkzODZfcmVjb3JkX3BjIC09IDE7CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGZ3YWl0ICovCisgICAgICAv KiBYWFggKi8KKyAgICBjYXNlIDB4OWI6CisgICAgICBwcmludGZfdW5maWx0 ZXJlZCAoXworCQkJICgiUmVjb3JkOiByZWNvcmQgYW5kIHJldmVyc2UgZnVu Y3Rpb24gZG9uJ3Qgc3VwcG9ydCBpbnN0cnVjdGlvbiBmd2FpdC5cbiIpKTsK KyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDE7CisgICAgICBnb3RvIG5vX3N1 cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAgLyogaW50MyAqLworICAg ICAgLyogWFhYICovCisgICAgY2FzZSAweGNjOgorICAgICAgcHJpbnRmX3Vu ZmlsdGVyZWQgKF8KKwkJCSAoIlJlY29yZDogcmVjb3JkIGFuZCByZXZlcnNl IGZ1bmN0aW9uIGRvbid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24gaW50My5cbiIp KTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDE7CisgICAgICBnb3RvIG5v X3N1cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAgLyogaW50ICovCisg ICAgICAvKiBYWFggKi8KKyAgICBjYXNlIDB4Y2Q6CisgICAgICB7CisJaW50 IHJldDsKKwlpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9w YywgJnRtcHU4LCAxKSkKKwkgIHsKKwkgICAgcHJpbnRmX3VuZmlsdGVyZWQg KF8oIlJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJ CSAgICAgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkgICAgcmV0 dXJuICgtMSk7CisJICB9CisJaTM4Nl9yZWNvcmRfcGMrKzsKKwlpZiAodG1w dTggIT0gMHg4MAorCSAgICB8fCBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpLT5p Mzg2X2ludHg4MF9yZWNvcmQgPT0gTlVMTCkKKwkgIHsKKwkgICAgcHJpbnRm X3VuZmlsdGVyZWQgKF8KKwkJCSAgICAgICAoIlJlY29yZDogcmVjb3JkIGFu ZCByZXZlcnNlIGZ1bmN0aW9uIGRvbid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24g aW50IDB4JTAyeC5cbiIpLAorCQkJICAgICAgIHRtcHU4KTsKKwkgICAgaTM4 Nl9yZWNvcmRfcGMgLT0gMjsKKwkgICAgZ290byBub19zdXBwb3J0OworCSAg fQorCXJldCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfaW50eDgw X3JlY29yZCAoKTsKKwlpZiAocmV0KQorCSAgeworCSAgICByZXR1cm4gKHJl dCk7CisJICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgICAgLyog aW50byAqLworICAgICAgLyogWFhYICovCisgICAgY2FzZSAweGNlOgorICAg ICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAoIlJlY29yZDogcmVjb3Jk IGFuZCByZXZlcnNlIGZ1bmN0aW9uIGRvbid0IHN1cHBvcnQgaW5zdHJ1Y3Rp b24gaW50by5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDE7Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAg LyogY2xpICovCisgICAgY2FzZSAweGZhOgorICAgICAgLyogc3RpICovCisg ICAgY2FzZSAweGZiOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGJvdW5k ICovCisgICAgY2FzZSAweDYyOgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQg KF8KKwkJCSAoIlJlY29yZDogcmVjb3JkIGFuZCByZXZlcnNlIGZ1bmN0aW9u IGRvbid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24gYm91bmQuXG4iKSk7CisgICAg ICBpMzg2X3JlY29yZF9wYyAtPSAxOworICAgICAgZ290byBub19zdXBwb3J0 OworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGJzd2FwIHJlZyAqLworICAg IGNhc2UgMHgwZmM4IC4uLiAweDBmY2Y6CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChvcGNvZGUgJiA3KSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc2FsYyAqLwor ICAgIGNhc2UgMHhkNjoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogbG9vcG56ICovCisgICAgY2FzZSAw eGUwOgorICAgICAgLyogbG9vcHogKi8KKyAgICBjYXNlIDB4ZTE6CisgICAg ICAvKiBsb29wICovCisgICAgY2FzZSAweGUyOgorICAgICAgLyogamVjeHog Ki8KKyAgICBjYXNlIDB4ZTM6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChJMzg2X0VDWF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiB3cm1zciAqLwor ICAgIGNhc2UgMHgwZjMwOgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8K KwkJCSAoIlJlY29yZDogcmVjb3JkIGFuZCByZXZlcnNlIGZ1bmN0aW9uIGRv bid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24gd3Jtc3IuXG4iKSk7CisgICAgICBp Mzg2X3JlY29yZF9wYyAtPSAyOworICAgICAgZ290byBub19zdXBwb3J0Owor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHJkbXNyICovCisgICAgY2FzZSAw eDBmMzI6CisgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICgiUmVj b3JkOiByZWNvcmQgYW5kIHJldmVyc2UgZnVuY3Rpb24gZG9uJ3Qgc3VwcG9y dCBpbnN0cnVjdGlvbiByZG1zci5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3Jk X3BjIC09IDI7CisgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVh azsKKworICAgICAgLyogcmR0c2MgKi8KKyAgICBjYXNlIDB4MGYzMToKKyAg ICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkgKCJSZWNvcmQ6IHJlY29y ZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBzdXBwb3J0IGluc3RydWN0 aW9uIHJkdHNjLlxuIikpOworICAgICAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsK KyAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNlbnRlciAqLworICAgIGNhc2UgMHgwZjM0OgorICAgICAgewor CWludCByZXQ7CisJaWYgKGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZf c3lzZW50ZXJfcmVjb3JkID09IE5VTEwpCisJICB7CisJICAgIHByaW50Zl91 bmZpbHRlcmVkIChfCisJCQkgICAgICAgKCJSZWNvcmQ6IHJlY29yZCBhbmQg cmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBzdXBwb3J0IGluc3RydWN0aW9uIHN5 c2VudGVyLlxuIikpOworCSAgICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAg ICBnb3RvIG5vX3N1cHBvcnQ7CisJICB9CisJcmV0ID0gZ2RiYXJjaF90ZGVw IChnZGJhcmNoKS0+aTM4Nl9zeXNlbnRlcl9yZWNvcmQgKCk7CisJaWYgKHJl dCkKKwkgIHsKKwkgICAgcmV0dXJuIChyZXQpOworCSAgfQorICAgICAgfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c2V4aXQgKi8KKyAgICBjYXNl IDB4MGYzNToKKyAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkgKCJS ZWNvcmQ6IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb24ndCBzdXBw b3J0IGluc3RydWN0aW9uIHN5c2V4aXQuXG4iKSk7CisgICAgICBpMzg2X3Jl Y29yZF9wYyAtPSAyOworICAgICAgZ290byBub19zdXBwb3J0OworICAgICAg YnJlYWs7CisKKyAgICAgIC8qIGNwdWlkICovCisgICAgY2FzZSAweDBmYTI6 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VB WF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUNYX1JFR05VTSkp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRFhfUkVHTlVNKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VCWF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBobHQgKi8KKyAgICBj YXNlIDB4ZjQ6CisgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICgi UmVjb3JkOiByZWNvcmQgYW5kIHJldmVyc2UgZnVuY3Rpb24gZG9uJ3Qgc3Vw cG9ydCBpbnN0cnVjdGlvbiBobHQuXG4iKSk7CisgICAgICBpMzg2X3JlY29y ZF9wYyAtPSAxOworICAgICAgZ290byBub19zdXBwb3J0OworICAgICAgYnJl YWs7CisKKyAgICBjYXNlIDB4MGYwMDoKKyAgICAgIGlmIChpMzg2X3JlY29y ZF9tb2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBz d2l0Y2ggKHJlZykKKwl7CisJICAvKiBzbGR0ICovCisJY2FzZSAwOgorCSAg Lyogc3RyICovCisJY2FzZSAxOgorCSAgaWYgKG1vZCA9PSAzKQorCSAgICB7 CisJICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQor CQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgfQorCSAgZWxzZQor CSAgICB7CisJICAgICAgb3QgPSBPVF9XT1JEOworCSAgICAgIGlmIChpMzg2 X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJCXsKKwkJICByZXR1cm4gKC0xKTsK KwkJfQorCSAgICB9CisJICBicmVhazsKKwkgIC8qIGxsZHQgKi8KKwljYXNl IDI6CisJICAvKiBsdHIgKi8KKwljYXNlIDM6CisJICBicmVhazsKKwkgIC8q IHZlcnIgKi8KKwljYXNlIDQ6CisJICAvKiB2ZXJ3ICovCisJY2FzZSA1Ogor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1Nf UkVHTlVNKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9 CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgaTM4Nl9yZWNvcmRfcGMgLT0g MzsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICBnb3Rv IG5vX3N1cHBvcnQ7CisJICBicmVhazsKKwl9CisgICAgICBicmVhazsKKwor ICAgIGNhc2UgMHgwZjAxOgorICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJt ICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIHN3aXRjaCAo cmVnKQorCXsKKwkgIC8qIHNnZHQgKi8KKwljYXNlIDA6CisJICB7CisJICAg IHVpbnQzMl90IGFkZHI7CisKKwkgICAgaWYgKG1vZCA9PSAzKQorCSAgICAg IHsKKwkJaTM4Nl9yZWNvcmRfcGMgLT0gMzsKKwkJb3Bjb2RlID0gb3Bjb2Rl IDw8IDggfCBtb2RybTsKKwkJZ290byBub19zdXBwb3J0OworCSAgICAgIH0K KworCSAgICBpZiAob3ZlcnJpZGUpCisJICAgICAgeworCQlwcmludGZfdW5m aWx0ZXJlZCAoXworCQkJCSAgICgiUmVjb3JkOiBjYW5uJ3QgZ2V0IHRoZSB2 YWx1ZSBvZiB0aGUgc2VnbWVudCByZWdpc3RlciBpbiBhZGRyZXNzIDB4JXMu IFJlY29yZCBpZ25vcmUgdGhpcyBjaGFuZ2UuXG4iKSwKKwkJCQkgICBwYWRk cl9ueiAocmVhZF9wYyAoKSkpOworCSAgICAgIH0KKwkgICAgZWxzZQorCSAg ICAgIHsKKwkJaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybV9hZGRyICgmYWRk cikpCisJCSAgeworCQkgICAgcmV0dXJuICgtMSk7CisJCSAgfQorCQlpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAyKSkKKwkJICB7CisJ CSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWFkZHIgKz0gMjsKKwkJaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgNCkpCisJCSAgewor CQkgICAgcmV0dXJuICgtMSk7CisJCSAgfQorCSAgICAgIH0KKwkgIH0KKwkg IGJyZWFrOworCWNhc2UgMToKKwkgIGlmIChtb2QgPT0gMykKKwkgICAgewor CSAgICAgIHN3aXRjaCAocm0pCisJCXsKKwkJICAvKiBtb25pdG9yICovCisJ CWNhc2UgMDoKKwkJICBicmVhazsKKwkJICAvKiBtd2FpdCAqLworCQljYXNl IDE6CisJCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwkJICAgIHsKKwkJICAgICAgcmV0dXJuICgtMSk7 CisJCSAgICB9CisJCSAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgaTM4Nl9y ZWNvcmRfcGMgLT0gMzsKKwkJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1v ZHJtOworCQkgIGdvdG8gbm9fc3VwcG9ydDsKKwkJICBicmVhazsKKwkJfQor CSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBzaWR0ICovCisJ ICAgICAgaWYgKG92ZXJyaWRlKQorCQl7CisJCSAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8KKwkJCQkgICAgICgiUmVjb3JkOiBjYW5uJ3QgZ2V0IHRoZSB2YWx1 ZSBvZiB0aGUgc2VnbWVudCByZWdpc3RlciBpbiBhZGRyZXNzIDB4JXMuIFJl Y29yZCBpZ25vcmUgdGhpcyBjaGFuZ2UuXG4iKSwKKwkJCQkgICAgIHBhZGRy X256IChyZWFkX3BjICgpKSk7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJ ICB1aW50MzJfdCBhZGRyOworCisJCSAgaWYgKGkzODZfcmVjb3JkX2xlYV9t b2RybV9hZGRyICgmYWRkcikpCisJCSAgICB7CisJCSAgICAgIHJldHVybiAo LTEpOworCQkgICAgfQorCQkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKGFkZHIsIDIpKQorCQkgICAgeworCQkgICAgICByZXR1cm4gKC0xKTsK KwkJICAgIH0KKwkJICBhZGRyICs9IDI7CisJCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAoYWRkciwgNCkpCisJCSAgICB7CisJCSAgICAgIHJl dHVybiAoLTEpOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgIGJyZWFrOwor CSAgLyogbGdkdCAqLworCWNhc2UgMjoKKwkgIC8qIGxpZHQgKi8KKwljYXNl IDM6CisJICAvKiBpbnZscGcgKi8KKwljYXNlIDc6CisJZGVmYXVsdDoKKwkg IGlmIChtb2QgPT0gMykKKwkgICAgeworCSAgICAgIGkzODZfcmVjb3JkX3Bj IC09IDM7CisJICAgICAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsK KwkgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisJICAgIH0KKwkgIGJyZWFrOwor CSAgLyogc21zdyAqLworCWNhc2UgNDoKKwkgIGlmIChtb2QgPT0gMykKKwkg ICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJt KSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwkgIGVs c2UKKwkgICAgeworCSAgICAgIG90ID0gT1RfV09SRDsKKwkgICAgICBpZiAo aTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQl7CisJCSAgcmV0dXJuICgt MSk7CisJCX0KKwkgICAgfQorCSAgYnJlYWs7CisJICAvKiBsbXN3ICovCisJ Y2FzZSA2OgorCSAgYnJlYWs7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIGludmQgKi8KKyAgICBjYXNlIDB4MGYwODoKKyAgICAgIC8qIHdiaW52 ZCAqLworICAgIGNhc2UgMHgwZjA5OgorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIGFycGwgKi8KKyAgICBjYXNlIDB4NjM6CisgICAgICBvdCA9IGRmbGFn ID8gT1RfTE9ORyA6IE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRf bW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYg KG1vZCAhPSAzKQorCXsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0g KCkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0K KyAgICAgIGVsc2UKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGxhciAqLworICAgIGNhc2UgMHgw ZjAyOgorICAgICAgLyogbHNsICovCisgICAgY2FzZSAweDBmMDM6CisgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo cmVnKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAg Y2FzZSAweDBmMTg6CisgICAgICBicmVhazsKKworICAgICAgLyogbm9wICht dWx0aSBieXRlKSAqLworICAgIGNhc2UgMHgwZjE5IC4uLiAweDBmMWY6Cisg ICAgICBicmVhazsKKworICAgICAgLyogbW92IHJlZywgY3JOICovCisgICAg Y2FzZSAweDBmMjA6CisgICAgICAvKiBtb3YgY3JOLCByZWcgKi8KKyAgICBj YXNlIDB4MGYyMjoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAoKG1vZHJtICYg MHhjMCkgIT0gMHhjMCkKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOwor CSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9f c3VwcG9ydDsKKwl9CisgICAgICBzd2l0Y2ggKHJlZykKKwl7CisJY2FzZSAw OgorCWNhc2UgMjoKKwljYXNlIDM6CisJY2FzZSA0OgorCWNhc2UgODoKKwkg IGlmIChvcGNvZGUgJiAyKQorCSAgICB7CisJICAgIH0KKwkgIGVsc2UKKwkg ICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJt KSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwkgIGJy ZWFrOworCWRlZmF1bHQ6CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAg b3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3Vw cG9ydDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBtb3YgcmVnLCBkck4gKi8KKyAgICBjYXNlIDB4MGYyMToKKyAgICAgIC8q IG1vdiBkck4sIHJlZyAqLworICAgIGNhc2UgMHgwZjIzOgorICAgICAgaWYg KGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGlmICgobW9kcm0gJiAweGMwKSAhPSAweGMwIHx8IHJlZyA9 PSA0IHx8IHJlZyA9PSA1IHx8IHJlZyA+PSA4KQorCXsKKwkgIGkzODZfcmVj b3JkX3BjIC09IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1vZHJt OworCSAgZ290byBub19zdXBwb3J0OworCX0KKyAgICAgIGlmIChvcGNvZGUg JiAyKQorCXsKKwl9CisgICAgICBlbHNlCisJeworCSAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCSAgICB7CisJICAgICAgcmV0dXJu ICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog Y2x0cyAqLworICAgIGNhc2UgMHgwZjA2OgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIE1NWC9TU0UvU1NFMi9QTkkgc3VwcG9ydCAqLworICAgICAgLyog WFhYICovCisKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKG9wY29kZSA+IDB4 ZmYpCisJeworCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwl9CisgICAgICBl bHNlCisJeworCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMTsKKwl9CisgICAgICBn b3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKyAgICB9CisKKy8qIElu IHRoZSBmdXR1cmUsIE1heWJlIHN0aWxsIG5lZWQgdG8gZGVhbCB3aXRoIG5l ZWRfZGFzbSAqLworICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VJUF9SRUdOVU0pKQorICAgIHsKKyAgICAgIHJldHVybiAoLTEpOwor ICAgIH0KKyAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX2VuZCAoMCkpCisg ICAgeworICAgICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgIHJldHVybiAo MCk7CisKK25vX3N1cHBvcnQ6CisgIHByaW50Zl91bmZpbHRlcmVkIChfCisJ CSAgICAgKCJSZWNvcmQ6IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBk b24ndCBzdXBwb3J0IGluc3RydWN0aW9uIDB4JTAyeCBhdCBhZGRyZXNzIDB4 JXMuXG4iKSwKKwkJICAgICAodW5zaWduZWQgaW50KSAob3Bjb2RlKSwgcGFk ZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisgIHJldHVybiAoLTEpOworfQog DAogc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKIGkzODZfZ2RiYXJjaF9pbml0 IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xp c3QgKmFyY2hlcykKQEAgLTI2MzgsNiArNTE2NCw4IEBAIGkzODZfZ2RiYXJj aF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJh cmNoX2xpc3QgKmFyY2hlcykKICAgaWYgKHRkZXAtPm1tMF9yZWdudW0gPT0g MCkKICAgICB0ZGVwLT5tbTBfcmVnbnVtID0gZ2RiYXJjaF9udW1fcmVncyAo Z2RiYXJjaCk7CiAKKyAgc2V0X2dkYmFyY2hfcmVjb3JkIChnZGJhcmNoLCBp Mzg2X3JlY29yZCk7CisKICAgcmV0dXJuIGdkYmFyY2g7CiB9CiAKZGlmZiAt LWdpdCBhL2dkYi9pMzg2LXRkZXAuaCBiL2dkYi9pMzg2LXRkZXAuaAppbmRl eCAyMjdhYzY2Li43NzRkZDM3IDEwMDY0NAotLS0gYS9nZGIvaTM4Ni10ZGVw LmgKKysrIGIvZ2RiL2kzODYtdGRlcC5oCkBAIC0xMDYsNiArMTA2LDkgQEAg c3RydWN0IGdkYmFyY2hfdGRlcAogICAvKiBJU0Etc3BlY2lmaWMgZGF0YSB0 eXBlcy4gICovCiAgIHN0cnVjdCB0eXBlICppMzg2X21teF90eXBlOwogICBz dHJ1Y3QgdHlwZSAqaTM4Nl9zc2VfdHlwZTsKKworICBpbnQgKCppMzg2X2lu dHg4MF9yZWNvcmQpICh2b2lkKTsKKyAgaW50ICgqaTM4Nl9zeXNlbnRlcl9y ZWNvcmQpICh2b2lkKTsKIH07CiAKIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lz dGVycy4gICovCmRpZmYgLS1naXQgYS9nZGIvaW5mY21kLmMgYi9nZGIvaW5m Y21kLmMKaW5kZXggZTIyMzgyOS4uY2FmMTZmMiAxMDA2NDQKLS0tIGEvZ2Ri L2luZmNtZC5jCisrKyBiL2dkYi9pbmZjbWQuYwpAQCAtNTEsNiArNTEsNyBA QAogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJjbGkvY2xp LWRlY29kZS5oIgogI2luY2x1ZGUgImdkYnRocmVhZC5oIgorI2luY2x1ZGUg InJlY29yZC5oIgogCiAvKiBGdW5jdGlvbnMgZXhwb3J0ZWQgZm9yIGdlbmVy YWwgdXNlLCBpbiBpbmZlcmlvci5oOiAqLwogCkBAIC0xOTQsNiArMTk1LDEy IEBAIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZDsJLyogRXhjbHVzaXZlICov CiAKIHN0cnVjdCBmcmFtZV9pZCBzdGVwX2ZyYW1lX2lkOwogCisvKiBQcmV2 IHN0YWNrIGZyYW1lIGFkZHJlc3Mgb2YgInN0ZXBfZnJhbWVfaWQiLgorICAg V2hlbiBHREIgaXMgaW4gdGhlIHJldmVyc2UgZGVidWcgbW9kZSwgaXQgaXMg dXNlZCB0byBtYWtlIHN1cmUgaWYgaW5mZXJpb3IgcmV0dXJuIHRvCisgICB0 aGUgcHJldiBmdW5jdGlvbi4gKi8KKworc3RydWN0IGZyYW1lX2lkIHN0ZXBf cHJldl9mcmFtZV9pZDsKKwogZW51bSBzdGVwX292ZXJfY2FsbHNfa2luZCBz dGVwX292ZXJfY2FsbHM7CiAKIC8qIElmIHN0ZXBwaW5nLCBub256ZXJvIG1l YW5zIHN0ZXAgY291bnQgaXMgPiAxCkBAIC00NTgsMTAgKzQ2NSwyMCBAQCBr aWxsX2lmX2FscmVhZHlfcnVubmluZyAoaW50IGZyb21fdHR5KQogCSByZXN0 YXJ0IGl0LiAgKi8KICAgICAgIHRhcmdldF9yZXF1aXJlX3J1bm5hYmxlICgp OwogCi0gICAgICBpZiAoZnJvbV90dHkKLQkgICYmICFxdWVyeSAoIlRoZSBw cm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGhhcyBiZWVuIHN0YXJ0ZWQgYWxyZWFk eS5cblwKKyAgICAgIGlmIChSRUNPUkRfSVNfVVNFRCkKKyAgICAgICAgewor ICAgICAgICAgIGlmIChmcm9tX3R0eQorCSAgICAgICYmICFxdWVyeSAoIlRo ZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGFuZCB0YXJnZXQgcmVjb3JkIGhh dmUgYmVlbiBzdGFydGVkIGFscmVhZHkuXG5cCitTdG9wIHRhcmdldCByZWNv cmQgYW5kIHN0YXJ0IHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGZyb20g dGhlIGJlZ2lubmluZz8gIikpCisJICAgIGVycm9yIChfKCJQcm9ncmFtIG5v dCByZXN0YXJ0ZWQuIikpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAg ICAgIHsKKyAgICAgICAgICBpZiAoZnJvbV90dHkKKwkgICAgICAmJiAhcXVl cnkgKCJUaGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBoYXMgYmVlbiBzdGFy dGVkIGFscmVhZHkuXG5cCiBTdGFydCBpdCBmcm9tIHRoZSBiZWdpbm5pbmc/ ICIpKQotCWVycm9yIChfKCJQcm9ncmFtIG5vdCByZXN0YXJ0ZWQuIikpOwor CSAgICBlcnJvciAoXygiUHJvZ3JhbSBub3QgcmVzdGFydGVkLiIpKTsKKyAg ICAgICAgfQogICAgICAgdGFyZ2V0X2tpbGwgKCk7CiAgICAgICBub19zaGFy ZWRfbGlicmFyaWVzIChOVUxMLCBmcm9tX3R0eSk7CiAgICAgICBpbml0X3dh aXRfZm9yX2luZmVyaW9yICgpOwpAQCAtNzUwLDYgKzc2NywxOSBAQCBzdGVw XzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNo YXIgKmNvdW50X3N0cmluZykKIAkgICAgZXJyb3IgKF8oIk5vIGN1cnJlbnQg ZnJhbWUiKSk7CiAJICBzdGVwX2ZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChm cmFtZSk7CiAKKwkgIGlmICh0YXJnZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rp b24gKCkgPT0gRVhFQ19SRVZFUlNFKQorCSAgICB7CisJICAgICAgZnJhbWUg PSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOworCSAgICAgIGlmIChmcmFtZSkK KwkgICAgICAgIHsKKwkJICBzdGVwX3ByZXZfZnJhbWVfaWQgPSBnZXRfZnJh bWVfaWQgKGZyYW1lKTsKKwkgICAgICAgIH0KKwkgICAgICBlbHNlCisJICAg ICAgICB7CisJCSAgc3RlcF9wcmV2X2ZyYW1lX2lkID0gbnVsbF9mcmFtZV9p ZDsKKwkgICAgICAgIH0KKwkgICAgfQorCiAJICBpZiAoIXNpbmdsZV9pbnN0 KQogCSAgICB7CiAJICAgICAgZmluZF9wY19saW5lX3BjX3JhbmdlIChzdG9w X3BjLCAmc3RlcF9yYW5nZV9zdGFydCwgJnN0ZXBfcmFuZ2VfZW5kKTsKQEAg LTg1OSw2ICs4ODksMTkgQEAgc3RlcF9vbmNlIChpbnQgc2tpcF9zdWJyb3V0 aW5lcywgaW50IHNpbmdsZV9pbnN0LCBpbnQgY291bnQsIGludCB0aHJlYWQp CiAJZXJyb3IgKF8oIk5vIGN1cnJlbnQgZnJhbWUiKSk7CiAgICAgICBzdGVw X2ZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAKKyAgICAgIGlm ICh0YXJnZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rpb24gKCkgPT0gRVhFQ19S RVZFUlNFKQorICAgICAgICB7CisgICAgICAgICAgZnJhbWUgPSBnZXRfcHJl dl9mcmFtZSAoZnJhbWUpOworICAgICAgICAgIGlmIChmcmFtZSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgc3RlcF9wcmV2X2ZyYW1lX2lkID0g Z2V0X2ZyYW1lX2lkIChmcmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzdGVwX3By ZXZfZnJhbWVfaWQgPSBudWxsX2ZyYW1lX2lkOworICAgICAgICAgICAgfQor ICAgICAgICB9CisKICAgICAgIGlmICghc2luZ2xlX2luc3QpCiAJewogCSAg ZmluZF9wY19saW5lX3BjX3JhbmdlIChzdG9wX3BjLCAmc3RlcF9yYW5nZV9z dGFydCwgJnN0ZXBfcmFuZ2VfZW5kKTsKQEAgLTExMzMsNiArMTE3NiwxOSBA QCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKICAgc3RlcF9v dmVyX2NhbGxzID0gU1RFUF9PVkVSX0FMTDsKICAgc3RlcF9mcmFtZV9pZCA9 IGdldF9mcmFtZV9pZCAoZnJhbWUpOwogCisgIGlmICh0YXJnZXRfZ2V0X2V4 ZWN1dGlvbl9kaXJlY3Rpb24gKCkgPT0gRVhFQ19SRVZFUlNFKQorICAgIHsK KyAgICAgIGZyYW1lID0gZ2V0X3ByZXZfZnJhbWUgKGZyYW1lKTsKKyAgICAg IGlmIChmcmFtZSkKKyAgICAgICAgeworICAgICAgICAgIHN0ZXBfcHJldl9m cmFtZV9pZCA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOworICAgICAgICB9Cisg ICAgICBlbHNlCisgICAgICAgIHsKKwkgIHN0ZXBfcHJldl9mcmFtZV9pZCA9 IG51bGxfZnJhbWVfaWQ7CisgICAgICAgIH0KKyAgICB9CisKICAgc3RlcF9t dWx0aSA9IDA7CQkvKiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KIAog ICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZB VUxULCAxKTsKZGlmZiAtLWdpdCBhL2dkYi9pbmZlcmlvci5oIGIvZ2RiL2lu ZmVyaW9yLmgKaW5kZXggMWRkMTUyYS4uYTU3ZTY3OCAxMDA2NDQKLS0tIGEv Z2RiL2luZmVyaW9yLmgKKysrIGIvZ2RiL2luZmVyaW9yLmgKQEAgLTMxNCw2 ICszMTQsMTIgQEAgZXh0ZXJuIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZDsJ LyogRXhjbHVzaXZlICovCiAKIGV4dGVybiBzdHJ1Y3QgZnJhbWVfaWQgc3Rl cF9mcmFtZV9pZDsKIAorLyogUHJldiBzdGFjayBmcmFtZSBhZGRyZXNzIG9m ICJzdGVwX2ZyYW1lX2lkIi4KKyAgIFdoZW4gR0RCIGlzIGluIHRoZSByZXZl cnNlIGRlYnVnIG1vZGUsIGl0IGlzIHVzZWQgdG8gbWFrZSBzdXJlIGlmIGlu ZmVyaW9yIHJldHVybiB0bworICAgdGhlIHByZXYgZnVuY3Rpb24uICovCisK K2V4dGVybiBzdHJ1Y3QgZnJhbWVfaWQgc3RlcF9wcmV2X2ZyYW1lX2lkOwor CiAvKiAxIG1lYW5zIHN0ZXAgb3ZlciBhbGwgc3Vicm91dGluZSBjYWxscy4K ICAgIC0xIG1lYW5zIHN0ZXAgb3ZlciBjYWxscyB0byB1bmRlYnVnZ2FibGUg ZnVuY3Rpb25zLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2RiL2luZmxvdy5jIGIv Z2RiL2luZmxvdy5jCmluZGV4IDZhNzc1MzEuLmMwOTk2YTkgMTAwNjQ0Ci0t LSBhL2dkYi9pbmZsb3cuYworKysgYi9nZGIvaW5mbG93LmMKQEAgLTM0LDYg KzM0LDggQEAKIAogI2luY2x1ZGUgImluZmxvdy5oIgogCisjaW5jbHVkZSAi cmVjb3JkLmgiCisKICNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICiAjaW5jbHVk ZSA8c3lzL2lvY3RsLmg+CiAjZW5kaWYKQEAgLTU5NCw4ICs1OTYsMTYgQEAg a2lsbF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKIAogICBp ZiAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKSkKICAg ICBlcnJvciAoXygiVGhlIHByb2dyYW0gaXMgbm90IGJlaW5nIHJ1bi4iKSk7 Ci0gIGlmICghcXVlcnkgKCJLaWxsIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVn Z2VkPyAiKSkKLSAgICBlcnJvciAoXygiTm90IGNvbmZpcm1lZC4iKSk7Cisg IGlmIChSRUNPUkRfSVNfVVNFRCkKKyAgICB7CisgICAgICBpZiAoIXF1ZXJ5 ICgiU3RvcCB0aGUgcmVjb3JkIHRhcmdldCBhbmQga2lsbCB0aGUgcHJvZ3Jh bSBiZWluZyBkZWJ1Z2dlZD8gIikpCisgICAgICAgIGVycm9yIChfKCJOb3Qg Y29uZmlybWVkLiIpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBp ZiAoIXF1ZXJ5ICgiS2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZD8g IikpCisgICAgICAgIGVycm9yIChfKCJOb3QgY29uZmlybWVkLiIpKTsKKyAg ICB9CiAgIHRhcmdldF9raWxsICgpOwogCiAgIGluaXRfdGhyZWFkX2xpc3Qg KCk7CQkvKiBEZXN0cm95IHRocmVhZCBpbmZvICovCmRpZmYgLS1naXQgYS9n ZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKaW5kZXggZTdkMWRlYy4uNTY5 ZWMxYiAxMDA2NDQKLS0tIGEvZ2RiL2luZnJ1bi5jCisrKyBiL2dkYi9pbmZy dW4uYwpAQCAtNDksNiArNDksMTQgQEAKICNpbmNsdWRlICJnZGJfYXNzZXJ0 LmgiCiAjaW5jbHVkZSAibWkvbWktY29tbW9uLmgiCiAKKyNpbmNsdWRlICJy ZWNvcmQuaCIKKworLyogV2hlbiB0aGUgcmVjb3JkIGZ1bmN0aW9uIHdhbnQg aW5mZXJpb3Igc3RlcCBiZWZvcmUgY2FsbCBmdW5jdGlvbgorICAgImtlZXBf Z29pbmciLCAicmV2ZXJzZV9yZXN1bWVfbmVlZF9zdGVwIiB3aWxsIGJlIHNl dCB0byAxLiBJdCB3aWxsIGJlIHNldAorICAgYmFjayB0byAwIGluIHRoZSBi ZWdpbiBvZiBmdW5jdGlvbiAiaGFuZGxlX2luZmVyaW9yX2V2ZW50IiBiZWNh dXNlIGl0IGp1c3QKKyAgIGJlIGFjY2Vzc2VkIGJ5IHRoZSBzdWItZnVuY3Rp b25zIG9mICJoYW5kbGVfaW5mZXJpb3JfZXZlbnQiLiAqLworc3RhdGljIGlu dCByZXZlcnNlX3Jlc3VtZV9uZWVkX3N0ZXAgPSAwOworCiAvKiBQcm90b3R5 cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMgKi8KIAogc3RhdGljIHZvaWQgc2ln bmFsc19pbmZvIChjaGFyICosIGludCk7CkBAIC0zMjAsOCArMzI4LDcgQEAg c2hvd19mb2xsb3dfZm9ya19tb2RlX3N0cmluZyAoc3RydWN0IHVpX2ZpbGUg KmZpbGUsIGludCBmcm9tX3R0eSwKIAkJCSAgICAgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKICAgZnByaW50 Zl9maWx0ZXJlZCAoZmlsZSwgXygiXAotRGVidWdnZXIgcmVzcG9uc2UgdG8g YSBwcm9ncmFtIGNhbGwgb2YgZm9yayBvciB2Zm9yayBpcyBcIiVzXCIuXG4i KSwKLQkJICAgIHZhbHVlKTsKK0RlYnVnZ2VyIHJlc3BvbnNlIHRvIGEgcHJv Z3JhbSBjYWxsIG9mIGZvcmsgb3IgdmZvcmsgaXMgXCIlc1wiLlxuIiksIHZh bHVlKTsKIH0KIAwKIApAQCAtNDA5LDggKzQxNiw3IEBAIGZvbGxvd19leGVj IChpbnQgcGlkLCBjaGFyICpleGVjZF9wYXRobmFtZSkKICAgaWYgKGdkYl9z eXNyb290ICYmICpnZGJfc3lzcm9vdCkKICAgICB7CiAgICAgICBjaGFyICpu YW1lID0gYWxsb2NhIChzdHJsZW4gKGdkYl9zeXNyb290KQotCQkJICAgICsg c3RybGVuIChleGVjZF9wYXRobmFtZSkKLQkJCSAgICArIDEpOworCQkJICAg KyBzdHJsZW4gKGV4ZWNkX3BhdGhuYW1lKSArIDEpOwogICAgICAgc3RyY3B5 IChuYW1lLCBnZGJfc3lzcm9vdCk7CiAgICAgICBzdHJjYXQgKG5hbWUsIGV4 ZWNkX3BhdGhuYW1lKTsKICAgICAgIGV4ZWNkX3BhdGhuYW1lID0gbmFtZTsK QEAgLTU1OSw3ICs1NjUsNyBAQCBzdGF0aWMgcHRpZF90IGRlZmVycmVkX3N0 ZXBfcHRpZDsKIC8qIElmIHRoaXMgaXMgbm90IG51bGxfcHRpZCwgdGhpcyBp cyB0aGUgdGhyZWFkIGNhcnJ5aW5nIG91dCBhCiAgICBkaXNwbGFjZWQgc2lu Z2xlLXN0ZXAuICBUaGlzIHRocmVhZCdzIHN0YXRlIHdpbGwgcmVxdWlyZSBm aXhpbmcgdXAKICAgIG9uY2UgaXQgaGFzIGNvbXBsZXRlZCBpdHMgc3RlcC4g ICovCi1zdGF0aWMgcHRpZF90IGRpc3BsYWNlZF9zdGVwX3B0aWQ7CitwdGlk X3QgZGlzcGxhY2VkX3N0ZXBfcHRpZDsKIAogc3RydWN0IGRpc3BsYWNlZF9z dGVwX3JlcXVlc3QKIHsKQEAgLTU3OCw3ICs1ODQsNyBAQCBzdGF0aWMgc3Ry dWN0IGdkYmFyY2ggKmRpc3BsYWNlZF9zdGVwX2dkYmFyY2g7CiBzdGF0aWMg c3RydWN0IGRpc3BsYWNlZF9zdGVwX2Nsb3N1cmUgKmRpc3BsYWNlZF9zdGVw X2Nsb3N1cmU7CiAKIC8qIFRoZSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCBp bnN0cnVjdGlvbiwgYW5kIHRoZSBjb3B5IHdlIG1hZGUuICAqLwotc3RhdGlj IENPUkVfQUREUiBkaXNwbGFjZWRfc3RlcF9vcmlnaW5hbCwgZGlzcGxhY2Vk X3N0ZXBfY29weTsKK0NPUkVfQUREUiBkaXNwbGFjZWRfc3RlcF9vcmlnaW5h bCwgZGlzcGxhY2VkX3N0ZXBfY29weTsKIAogLyogU2F2ZWQgY29udGVudHMg b2YgY29weSBhcmVhLiAgKi8KIHN0YXRpYyBnZGJfYnl0ZSAqZGlzcGxhY2Vk X3N0ZXBfc2F2ZWRfY29weTsKQEAgLTU5Myw4ICs1OTksNyBAQCBzaG93X2Nh bl91c2VfZGlzcGxhY2VkX3N0ZXBwaW5nIChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgaW50IGZyb21fdHR5LAogCQkJCSBjb25zdCBjaGFyICp2YWx1ZSkKIHsK ICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiXAotRGVidWdnZXIncyB3 aWxsaW5nbmVzcyB0byB1c2UgZGlzcGxhY2VkIHN0ZXBwaW5nIHRvIHN0ZXAg b3ZlciAiCi0iYnJlYWtwb2ludHMgaXMgJXMuXG4iKSwgdmFsdWUpOworRGVi dWdnZXIncyB3aWxsaW5nbmVzcyB0byB1c2UgZGlzcGxhY2VkIHN0ZXBwaW5n IHRvIHN0ZXAgb3ZlciAiICJicmVha3BvaW50cyBpcyAlcy5cbiIpLCB2YWx1 ZSk7CiB9CiAKIC8qIFJldHVybiBub24temVybyBpZiBkaXNwbGFjZWQgc3Rl cHBpbmcgaXMgZW5hYmxlZCwgYW5kIGNhbiBiZSB1c2VkCkBAIC02MDMsNyAr NjA4LDggQEAgc3RhdGljIGludAogdXNlX2Rpc3BsYWNlZF9zdGVwcGluZyAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCiB7CiAgIHJldHVybiAoY2FuX3Vz ZV9kaXNwbGFjZWRfc3RlcHBpbmcKLQkgICYmIGdkYmFyY2hfZGlzcGxhY2Vk X3N0ZXBfY29weV9pbnNuX3AgKGdkYmFyY2gpKTsKKwkgICYmIGdkYmFyY2hf ZGlzcGxhY2VkX3N0ZXBfY29weV9pbnNuX3AgKGdkYmFyY2gpCisJICAmJiAh UkVDT1JEX0lTX1JFUExBWSk7CiB9CiAKIC8qIENsZWFuIG91dCBhbnkgc3Ry YXkgZGlzcGxhY2VkIHN0ZXBwaW5nIHN0YXRlLiAgKi8KQEAgLTYxNiw3ICs2 MjIsNyBAQCBkaXNwbGFjZWRfc3RlcF9jbGVhciAodm9pZCkKICAgaWYgKGRp c3BsYWNlZF9zdGVwX2Nsb3N1cmUpCiAgICAgewogICAgICAgZ2RiYXJjaF9k aXNwbGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUgKGRpc3BsYWNlZF9zdGVwX2dk YmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlzcGxhY2VkX3N0ZXBfY2xvc3VyZSk7CisJCQkJCSAgIGRpc3Bs YWNlZF9zdGVwX2Nsb3N1cmUpOwogICAgICAgZGlzcGxhY2VkX3N0ZXBfY2xv c3VyZSA9IE5VTEw7CiAgICAgfQogfQpAQCAtNjMyLDggKzYzOCw3IEBAIGNs ZWFudXBfZGlzcGxhY2VkX3N0ZXBfY2xvc3VyZSAodm9pZCAqcHRyKQogLyog RHVtcCBMRU4gYnl0ZXMgYXQgQlVGIGluIGhleCB0byBGSUxFLCBmb2xsb3dl ZCBieSBhIG5ld2xpbmUuICAqLwogdm9pZAogZGlzcGxhY2VkX3N0ZXBfZHVt cF9ieXRlcyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnZGJfYnl0ZSAqYnVmLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKKwkJCSAgIGNvbnN0IGdk Yl9ieXRlICogYnVmLCBzaXplX3QgbGVuKQogewogICBpbnQgaTsKIApAQCAt Njc2LDcgKzY4MSw3IEBAIGRpc3BsYWNlZF9zdGVwX3ByZXBhcmUgKHB0aWRf dCBwdGlkKQogICBpZiAoIXB0aWRfZXF1YWwgKGRpc3BsYWNlZF9zdGVwX3B0 aWQsIG51bGxfcHRpZCkpCiAgICAgewogICAgICAgLyogQWxyZWFkeSB3YWl0 aW5nIGZvciBhIGRpc3BsYWNlZCBzdGVwIHRvIGZpbmlzaC4gIERlZmVyIHRo aXMKLQkgcmVxdWVzdCBhbmQgcGxhY2UgaW4gcXVldWUuICAqLworICAgICAg ICAgcmVxdWVzdCBhbmQgcGxhY2UgaW4gcXVldWUuICAqLwogICAgICAgc3Ry dWN0IGRpc3BsYWNlZF9zdGVwX3JlcXVlc3QgKnJlcSwgKm5ld19yZXE7CiAK ICAgICAgIGlmIChkZWJ1Z19kaXNwbGFjZWQpCkBAIC02OTEsOCArNjk2LDcg QEAgZGlzcGxhY2VkX3N0ZXBfcHJlcGFyZSAocHRpZF90IHB0aWQpCiAgICAg ICBpZiAoZGlzcGxhY2VkX3N0ZXBfcmVxdWVzdF9xdWV1ZSkKIAl7CiAJICBm b3IgKHJlcSA9IGRpc3BsYWNlZF9zdGVwX3JlcXVlc3RfcXVldWU7Ci0JICAg ICAgIHJlcSAmJiByZXEtPm5leHQ7Ci0JICAgICAgIHJlcSA9IHJlcS0+bmV4 dCkKKwkgICAgICAgcmVxICYmIHJlcS0+bmV4dDsgcmVxID0gcmVxLT5uZXh0 KQogCSAgICA7CiAJICByZXEtPm5leHQgPSBuZXdfcmVxOwogCX0KQEAgLTcx OSw3ICs3MjMsNyBAQCBkaXNwbGFjZWRfc3RlcF9wcmVwYXJlIChwdGlkX3Qg cHRpZCkKICAgLyogU2F2ZSB0aGUgb3JpZ2luYWwgY29udGVudHMgb2YgdGhl IGNvcHkgYXJlYS4gICovCiAgIGRpc3BsYWNlZF9zdGVwX3NhdmVkX2NvcHkg PSB4bWFsbG9jIChsZW4pOwogICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFu dXAgKGZyZWVfY3VycmVudF9jb250ZW50cywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZGlzcGxhY2VkX3N0ZXBfc2F2ZWRfY29weSk7CisJ CQkgICAgICAgJmRpc3BsYWNlZF9zdGVwX3NhdmVkX2NvcHkpOwogICByZWFk X21lbW9yeSAoY29weSwgZGlzcGxhY2VkX3N0ZXBfc2F2ZWRfY29weSwgbGVu KTsKICAgaWYgKGRlYnVnX2Rpc3BsYWNlZCkKICAgICB7CkBAIC03MjksNyAr NzMzLDcgQEAgZGlzcGxhY2VkX3N0ZXBfcHJlcGFyZSAocHRpZF90IHB0aWQp CiAgICAgfTsKIAogICBjbG9zdXJlID0gZ2RiYXJjaF9kaXNwbGFjZWRfc3Rl cF9jb3B5X2luc24gKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwsIGNvcHksIHJlZ2Nh Y2hlKTsKKwkJCQkJICAgICAgb3JpZ2luYWwsIGNvcHksIHJlZ2NhY2hlKTsK IAogICAvKiBXZSBkb24ndCBzdXBwb3J0IHRoZSBmdWxseS1zaW11bGF0ZWQg Y2FzZSBhdCBwcmVzZW50LiAgKi8KICAgZ2RiX2Fzc2VydCAoY2xvc3VyZSk7 CkBAIC03NDMsNyArNzQ3LDcgQEAgZGlzcGxhY2VkX3N0ZXBfcHJlcGFyZSAo cHRpZF90IHB0aWQpCiAKICAgaWYgKGRlYnVnX2Rpc3BsYWNlZCkKICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJkaXNwbGFjZWQ6IGRp c3BsYWNlZCBwYyB0byAweCVzXG4iLAotICAgICAgICAgICAgICAgICAgICAg ICAgcGFkZHJfbnogKGNvcHkpKTsKKwkJCXBhZGRyX256IChjb3B5KSk7CiAK ICAgLyogU2F2ZSB0aGUgaW5mb3JtYXRpb24gd2UgbmVlZCB0byBmaXggdGhp bmdzIHVwIGlmIHRoZSBzdGVwCiAgICAgIHN1Y2NlZWRzLiAgKi8KQEAgLTc2 Miw3ICs3NjYsOCBAQCBkaXNwbGFjZWRfc3RlcF9jbGVhcl9jbGVhbnVwICh2 b2lkICppZ25vcmUpCiB9CiAKIHN0YXRpYyB2b2lkCi13cml0ZV9tZW1vcnlf cHRpZCAocHRpZF90IHB0aWQsIENPUkVfQUREUiBtZW1hZGRyLCBjb25zdCBn ZGJfYnl0ZSAqbXlhZGRyLCBpbnQgbGVuKQord3JpdGVfbWVtb3J5X3B0aWQg KHB0aWRfdCBwdGlkLCBDT1JFX0FERFIgbWVtYWRkciwgY29uc3QgZ2RiX2J5 dGUgKiBteWFkZHIsCisJCSAgIGludCBsZW4pCiB7CiAgIHN0cnVjdCBjbGVh bnVwICpwdGlkX2NsZWFudXAgPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CiAg IGluZmVyaW9yX3B0aWQgPSBwdGlkOwpAQCAtNzc3LDcgKzc4Miw3IEBAIGRp c3BsYWNlZF9zdGVwX2ZpeHVwIChwdGlkX3QgZXZlbnRfcHRpZCwgZW51bSB0 YXJnZXRfc2lnbmFsIHNpZ25hbCkKIAogICAvKiBXYXMgdGhpcyBldmVudCBm b3IgdGhlIHBpZCB3ZSBkaXNwbGFjZWQ/ICAqLwogICBpZiAocHRpZF9lcXVh bCAoZGlzcGxhY2VkX3N0ZXBfcHRpZCwgbnVsbF9wdGlkKQotICAgICAgfHwg ISBwdGlkX2VxdWFsIChkaXNwbGFjZWRfc3RlcF9wdGlkLCBldmVudF9wdGlk KSkKKyAgICAgIHx8ICFwdGlkX2VxdWFsIChkaXNwbGFjZWRfc3RlcF9wdGlk LCBldmVudF9wdGlkKSkKICAgICByZXR1cm47CiAKICAgb2xkX2NsZWFudXBz ID0gbWFrZV9jbGVhbnVwIChkaXNwbGFjZWRfc3RlcF9jbGVhcl9jbGVhbnVw LCAwKTsKQEAgLTc4OSw3ICs3OTQsNyBAQCBkaXNwbGFjZWRfc3RlcF9maXh1 cCAocHRpZF90IGV2ZW50X3B0aWQsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWdu YWwpCiAJCSAgICAgICBkaXNwbGFjZWRfc3RlcF9zYXZlZF9jb3B5LCBsZW4p OwogICAgIGlmIChkZWJ1Z19kaXNwbGFjZWQpCiAgICAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJkaXNwbGFjZWQ6IHJlc3RvcmVkIDB4 JXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX256IChk aXNwbGFjZWRfc3RlcF9jb3B5KSk7CisJCQkgIHBhZGRyX256IChkaXNwbGFj ZWRfc3RlcF9jb3B5KSk7CiAgIH0KIAogICAvKiBEaWQgdGhlIGluc3RydWN0 aW9uIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseT8gICovCkBAIC03OTcsMTAgKzgw MiwxMSBAQCBkaXNwbGFjZWRfc3RlcF9maXh1cCAocHRpZF90IGV2ZW50X3B0 aWQsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWduYWwpCiAgICAgewogICAgICAg LyogRml4IHVwIHRoZSByZXN1bHRpbmcgc3RhdGUuICAqLwogICAgICAgZ2Ri YXJjaF9kaXNwbGFjZWRfc3RlcF9maXh1cCAoZGlzcGxhY2VkX3N0ZXBfZ2Ri YXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp c3BsYWNlZF9zdGVwX2Nsb3N1cmUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkaXNwbGFjZWRfc3RlcF9vcmlnaW5hbCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlZF9zdGVw X2NvcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZXRfdGhyZWFkX3JlZ2NhY2hlIChkaXNwbGFjZWRfc3RlcF9wdGlkKSk7CisJ CQkJICAgIGRpc3BsYWNlZF9zdGVwX2Nsb3N1cmUsCisJCQkJICAgIGRpc3Bs YWNlZF9zdGVwX29yaWdpbmFsLAorCQkJCSAgICBkaXNwbGFjZWRfc3RlcF9j b3B5LAorCQkJCSAgICBnZXRfdGhyZWFkX3JlZ2NhY2hlCisJCQkJICAgIChk aXNwbGFjZWRfc3RlcF9wdGlkKSk7CiAgICAgfQogICBlbHNlCiAgICAgewpA QCAtODM3LDggKzg0Myw4IEBAIGRpc3BsYWNlZF9zdGVwX2ZpeHVwIChwdGlk X3QgZXZlbnRfcHRpZCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ25hbCkKICAg ICAgIHRhcmdldF9yZXN1bWUgKHB0aWQsIDEsIFRBUkdFVF9TSUdOQUxfMCk7 CiAgICAgfQogfQotCiAMCisKIC8qIFJlc3VtaW5nLiAgKi8KIAogLyogVGhp bmdzIHRvIGNsZWFuIHVwIGlmIHdlIFFVSVQgb3V0IG9mIHJlc3VtZSAoKS4g ICovCkBAIC04NjMsOCArODY5LDcgQEAgc2hvd19zY2hlZHVsZXJfbW9kZSAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKIAkJICAgICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp CiB7CiAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIlwKLU1vZGUgZm9y IGxvY2tpbmcgc2NoZWR1bGVyIGR1cmluZyBleGVjdXRpb24gaXMgXCIlc1wi LlxuIiksCi0JCSAgICB2YWx1ZSk7CitNb2RlIGZvciBsb2NraW5nIHNjaGVk dWxlciBkdXJpbmcgZXhlY3V0aW9uIGlzIFwiJXNcIi5cbiIpLCB2YWx1ZSk7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04OTgsOCArOTAzLDggQEAgcmVzdW1l IChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZykKIAogICBpZiAo ZGVidWdfaW5mcnVuKQogICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbmZydW46IHJlc3Vt ZSAoc3RlcD0lZCwgc2lnbmFsPSVkKSwgIgotICAgICAgICAgICAgICAgICAg ICAgICAgInN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludD0lZFxuIiwKKwkJCSJp bmZydW46IHJlc3VtZSAoc3RlcD0lZCwgc2lnbmFsPSVkKSwgIgorCQkJInN0 ZXBwaW5nX292ZXJfYnJlYWtwb2ludD0lZFxuIiwKIAkJCXN0ZXAsIHNpZywg c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50KTsKIAogICAvKiBTb21lIHRhcmdl dHMgKGUuZy4gU29sYXJpcyB4ODYpIGhhdmUgYSBrZXJuZWwgYnVnIHdoZW4g c3RlcHBpbmcKQEAgLTkzNyw4ICs5NDIsNyBAQCBhIGNvbW1hbmQgbGlrZSBg cmV0dXJuJyBvciBganVtcCcgdG8gY29udGludWUgZXhlY3V0aW9uLiIpKTsK ICAgICAgY29tbWVudHMgaW4gdGhlIGhhbmRsZV9pbmZlcmlvciBldmVudCBm b3IgZGVhbGluZyB3aXRoICdyYW5kb20KICAgICAgc2lnbmFscycgZXhwbGFp biB3aGF0IHdlIGRvIGluc3RlYWQuICAqLwogICBpZiAodXNlX2Rpc3BsYWNl ZF9zdGVwcGluZyAoZ2RiYXJjaCkKLSAgICAgICYmIHN0ZXBwaW5nX292ZXJf YnJlYWtwb2ludAotICAgICAgJiYgc2lnID09IFRBUkdFVF9TSUdOQUxfMCkK KyAgICAgICYmIHN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCAmJiBzaWcgPT0g VEFSR0VUX1NJR05BTF8wKQogICAgIHsKICAgICAgIGlmICghZGlzcGxhY2Vk X3N0ZXBfcHJlcGFyZSAoaW5mZXJpb3JfcHRpZCkpCiAJLyogR290IHBsYWNl ZCBpbiBkaXNwbGFjZWQgc3RlcHBpbmcgcXVldWUuICBXaWxsIGJlIHJlc3Vt ZWQKQEAgLTk1MSwxNSArOTU1LDE1IEBAIGEgY29tbWFuZCBsaWtlIGByZXR1 cm4nIG9yIGBqdW1wJyB0byBjb250aW51ZSBleGVjdXRpb24uIikpOwogICAg IHsKICAgICAgIC8qIERvIGl0IHRoZSBoYXJkIHdheSwgdy90ZW1wIGJyZWFr cG9pbnRzICovCiAgICAgICBpZiAoZ2RiYXJjaF9zb2Z0d2FyZV9zaW5nbGVf c3RlcCAoZ2RiYXJjaCwgZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKQotICAgICAg ICB7Ci0gICAgICAgICAgLyogLi4uYW5kIGRvbid0IGFzayBoYXJkd2FyZSB0 byBkbyBpdC4gICovCi0gICAgICAgICAgc3RlcCA9IDA7Ci0gICAgICAgICAg LyogYW5kIGRvIG5vdCBwdWxsIHRoZXNlIGJyZWFrcG9pbnRzIHVudGlsIGFm dGVyIGEgYHdhaXQnIGluCi0gICAgICAgICAgYHdhaXRfZm9yX2luZmVyaW9y JyAqLwotICAgICAgICAgIHNpbmdsZXN0ZXBfYnJlYWtwb2ludHNfaW5zZXJ0 ZWRfcCA9IDE7Ci0gICAgICAgICAgc2luZ2xlc3RlcF9wdGlkID0gaW5mZXJp b3JfcHRpZDsKLSAgICAgICAgICBzaW5nbGVzdGVwX3BjID0gcGM7Ci0gICAg ICAgIH0KKwl7CisJICAvKiAuLi5hbmQgZG9uJ3QgYXNrIGhhcmR3YXJlIHRv IGRvIGl0LiAgKi8KKwkgIHN0ZXAgPSAwOworCSAgLyogYW5kIGRvIG5vdCBw dWxsIHRoZXNlIGJyZWFrcG9pbnRzIHVudGlsIGFmdGVyIGEgYHdhaXQnIGlu CisJICAgICBgd2FpdF9mb3JfaW5mZXJpb3InICovCisJICBzaW5nbGVzdGVw X2JyZWFrcG9pbnRzX2luc2VydGVkX3AgPSAxOworCSAgc2luZ2xlc3RlcF9w dGlkID0gaW5mZXJpb3JfcHRpZDsKKwkgIHNpbmdsZXN0ZXBfcGMgPSBwYzsK Kwl9CiAgICAgfQogCiAgIC8qIElmIHRoZXJlIHdlcmUgYW55IGZvcmtzL3Zm b3Jrcy9leGVjcyB0aGF0IHdlcmUgY2F1Z2h0IGFuZCBhcmUKQEAgLTk5Miw4 ICs5OTYsOCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcg dG8gY29udGludWUgZXhlY3V0aW9uLiIpKTsKICAgICAgIHJlc3VtZV9wdGlk ID0gUkVTVU1FX0FMTDsJLyogRGVmYXVsdCAqLwogCiAgICAgICAvKiBJZiBT VEVQIGlzIHNldCwgaXQncyBhIHJlcXVlc3QgdG8gdXNlIGhhcmR3YXJlIHN0 ZXBwaW5nCi0JIGZhY2lsaXRpZXMuICBCdXQgaW4gdGhhdCBjYXNlLCB3ZSBz aG91bGQgbmV2ZXIKLQkgdXNlIHNpbmdsZXN0ZXAgYnJlYWtwb2ludC4gICov CisgICAgICAgICBmYWNpbGl0aWVzLiAgQnV0IGluIHRoYXQgY2FzZSwgd2Ug c2hvdWxkIG5ldmVyCisgICAgICAgICB1c2Ugc2luZ2xlc3RlcCBicmVha3Bv aW50LiAgKi8KICAgICAgIGdkYl9hc3NlcnQgKCEoc2luZ2xlc3RlcF9icmVh a3BvaW50c19pbnNlcnRlZF9wICYmIHN0ZXApKTsKIAogICAgICAgaWYgKHNp bmdsZXN0ZXBfYnJlYWtwb2ludHNfaW5zZXJ0ZWRfcApAQCAtMTA0NywxOCAr MTA1MSwxOCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcg dG8gY29udGludWUgZXhlY3V0aW9uLiIpKTsKIAl9CiAKICAgICAgIGlmIChk ZWJ1Z19kaXNwbGFjZWQKLSAgICAgICAgICAmJiB1c2VfZGlzcGxhY2VkX3N0 ZXBwaW5nIChnZGJhcmNoKQotICAgICAgICAgICYmIHN0ZXBwaW5nX292ZXJf YnJlYWtwb2ludCkKLSAgICAgICAgewotCSAgc3RydWN0IHJlZ2NhY2hlICpy ZXN1bWVfcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChyZXN1bWVf cHRpZCk7Ci0gICAgICAgICAgQ09SRV9BRERSIGFjdHVhbF9wYyA9IHJlZ2Nh Y2hlX3JlYWRfcGMgKHJlc3VtZV9yZWdjYWNoZSk7Ci0gICAgICAgICAgZ2Ri X2J5dGUgYnVmWzRdOwotCi0gICAgICAgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAiZGlzcGxhY2VkOiBydW4gMHglczogIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX256IChhY3R1YWxfcGMp KTsKLSAgICAgICAgICByZWFkX21lbW9yeSAoYWN0dWFsX3BjLCBidWYsIHNp emVvZiAoYnVmKSk7Ci0gICAgICAgICAgZGlzcGxhY2VkX3N0ZXBfZHVtcF9i eXRlcyAoZ2RiX3N0ZGxvZywgYnVmLCBzaXplb2YgKGJ1ZikpOwotICAgICAg ICB9CisJICAmJiB1c2VfZGlzcGxhY2VkX3N0ZXBwaW5nIChnZGJhcmNoKSAm JiBzdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQpCisJeworCSAgc3RydWN0IHJl Z2NhY2hlICpyZXN1bWVfcmVnY2FjaGUgPQorCSAgICBnZXRfdGhyZWFkX3Jl Z2NhY2hlIChyZXN1bWVfcHRpZCk7CisJICBDT1JFX0FERFIgYWN0dWFsX3Bj ID0gcmVnY2FjaGVfcmVhZF9wYyAocmVzdW1lX3JlZ2NhY2hlKTsKKwkgIGdk Yl9ieXRlIGJ1Zls0XTsKKworCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLCAiZGlzcGxhY2VkOiBydW4gMHglczogIiwKKwkJCSAgICAgIHBh ZGRyX256IChhY3R1YWxfcGMpKTsKKwkgIHJlYWRfbWVtb3J5IChhY3R1YWxf cGMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwkgIGRpc3BsYWNlZF9zdGVwX2R1 bXBfYnl0ZXMgKGdkYl9zdGRsb2csIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwl9 CiAKICAgICAgIHRhcmdldF9yZXN1bWUgKHJlc3VtZV9wdGlkLCBzdGVwLCBz aWcpOwogICAgIH0KQEAgLTExNjcsNyArMTE3MSwxMCBAQCBwcm9jZWVkIChD T1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ2duYWwsIGlu dCBzdGVwKQogICBpZiAoc3RlcCA8IDApCiAgICAgc3RvcF9hZnRlcl90cmFw ID0gMTsKIAotICBpZiAoYWRkciA9PSAoQ09SRV9BRERSKSAtMSkKKyAgaWYg KFJFQ09SRF9JU19VU0VEKQorICAgIHJlY29yZF9ub3RfcmVjb3JkX3NldCAo KTsKKworICBpZiAoYWRkciA9PSAoQ09SRV9BRERSKSAtIDEpCiAgICAgewog ICAgICAgaWYgKHBjID09IHN0b3BfcGMgJiYgYnJlYWtwb2ludF9oZXJlX3Ag KHBjKSkKIAkvKiBUaGVyZSBpcyBhIGJyZWFrcG9pbnQgYXQgdGhlIGFkZHJl c3Mgd2Ugd2lsbCByZXN1bWUgYXQsCkBAIC0xMjEwLDEwICsxMjE3LDEwIEBA IHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWduYWwg c2lnZ25hbCwgaW50IHN0ZXApCiAgICAgewogICAgICAgc3RlcHBpbmdfb3Zl cl9icmVha3BvaW50ID0gMTsKICAgICAgIC8qIElmIGRpc3BsYWNlZCBzdGVw cGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVyIHRoZQotCSBicmVh a3BvaW50IHdpdGhvdXQgaGl0dGluZyBpdCwgc28gbGVhdmUgYWxsIGJyZWFr cG9pbnRzCi0JIGluc2VydGVkLiAgT3RoZXJ3aXNlIHdlIG5lZWQgdG8gZGlz YWJsZSBhbGwgYnJlYWtwb2ludHMsIHN0ZXAKLQkgb25lIGluc3RydWN0aW9u LCBhbmQgdGhlbiByZS1hZGQgdGhlbSB3aGVuIHRoYXQgc3RlcCBpcwotCSBm aW5pc2hlZC4gICovCisgICAgICAgICBicmVha3BvaW50IHdpdGhvdXQgaGl0 dGluZyBpdCwgc28gbGVhdmUgYWxsIGJyZWFrcG9pbnRzCisgICAgICAgICBp bnNlcnRlZC4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGRpc2FibGUgYWxsIGJy ZWFrcG9pbnRzLCBzdGVwCisgICAgICAgICBvbmUgaW5zdHJ1Y3Rpb24sIGFu ZCB0aGVuIHJlLWFkZCB0aGVtIHdoZW4gdGhhdCBzdGVwIGlzCisgICAgICAg ICBmaW5pc2hlZC4gICovCiAgICAgICBpZiAoIXVzZV9kaXNwbGFjZWRfc3Rl cHBpbmcgKGdkYmFyY2gpKQogCXJlbW92ZV9icmVha3BvaW50cyAoKTsKICAg ICB9CkBAIC0xMjIxLDcgKzEyMjgsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ2duYWwsIGludCBzdGVwKQog ICAvKiBXZSBjYW4gaW5zZXJ0IGJyZWFrcG9pbnRzIGlmIHdlJ3JlIG5vdCB0 cnlpbmcgdG8gc3RlcCBvdmVyIG9uZSwKICAgICAgb3IgaWYgd2UgYXJlIHN0 ZXBwaW5nIG92ZXIgb25lIGJ1dCB3ZSdyZSB1c2luZyBkaXNwbGFjZWQgc3Rl cHBpbmcKICAgICAgdG8gZG8gc28uICAqLwotICBpZiAoISBzdGVwcGluZ19v dmVyX2JyZWFrcG9pbnQgfHwgdXNlX2Rpc3BsYWNlZF9zdGVwcGluZyAoZ2Ri YXJjaCkpCisgIGlmICghc3RlcHBpbmdfb3Zlcl9icmVha3BvaW50IHx8IHVz ZV9kaXNwbGFjZWRfc3RlcHBpbmcgKGdkYmFyY2gpKQogICAgIGluc2VydF9i cmVha3BvaW50cyAoKTsKIAogICBpZiAoc2lnZ25hbCAhPSBUQVJHRVRfU0lH TkFMX0RFRkFVTFQpCkBAIC0xMzM1LDggKzEzNDIsOCBAQCBpbml0X3dhaXRf Zm9yX2luZmVyaW9yICh2b2lkKQogCiAgIGRpc3BsYWNlZF9zdGVwX2NsZWFy ICgpOwogfQotCiAMCisKIC8qIFRoaXMgZW51bSBlbmNvZGVzIHBvc3NpYmxl IHJlYXNvbnMgZm9yIGRvaW5nIGEgdGFyZ2V0X3dhaXQsIHNvIHRoYXQKICAg IHdmaSBjYW4gY2FsbCB0YXJnZXRfd2FpdCBpbiBvbmUgcGxhY2UuICAoVWx0 aW1hdGVseSB0aGUgY2FsbCB3aWxsIGJlCiAgICBtb3ZlZCBvdXQgb2YgdGhl IGluZmluaXRlIGxvb3AgZW50aXJlbHkuKSAqLwpAQCAtMTQwMCw5ICsxNDA3 LDExIEBAIHZvaWQgaW5pdF9leGVjdXRpb25fY29udHJvbF9zdGF0ZSAoc3Ry dWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwogdm9pZCBoYW5k bGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9z dGF0ZSAqZWNzKTsKIAogc3RhdGljIHZvaWQgc3RlcF9pbnRvX2Z1bmN0aW9u IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci1zdGF0 aWMgdm9pZCBpbnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtwb2ludF9hdF9mcmFt ZSAoc3RydWN0IGZyYW1lX2luZm8gKnN0ZXBfZnJhbWUpOworc3RhdGljIHZv aWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfZnJhbWUgKHN0 cnVjdCBmcmFtZV9pbmZvCisJCQkJCQkgICAgKnN0ZXBfZnJhbWUpOwogc3Rh dGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfY2Fs bGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLXN0YXRpYyB2b2lkIGluc2Vy dF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3RydWN0IHN5bXRh Yl9hbmRfbGluZSBzcl9zYWwsCitzdGF0aWMgdm9pZCBpbnNlcnRfc3RlcF9y ZXN1bWVfYnJlYWtwb2ludF9hdF9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xp bmUKKwkJCQkJCSAgc3Jfc2FsLAogCQkJCQkJICBzdHJ1Y3QgZnJhbWVfaWQg c3JfaWQpOwogc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2Jy ZWFrcG9pbnQgKENPUkVfQUREUik7CiAKQEAgLTE0NjcsMTEgKzE0NzYsMTEg QEAgd2FpdF9mb3JfaW5mZXJpb3IgKGludCB0cmVhdF9leGVjX2FzX3NpZ3Ry YXApCiAJZWNzLT5wdGlkID0gdGFyZ2V0X3dhaXQgKGVjcy0+d2FpdG9uX3B0 aWQsIGVjcy0+d3ApOwogCiAgICAgICBpZiAodHJlYXRfZXhlY19hc19zaWd0 cmFwICYmIGVjcy0+d3Mua2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfRVhFQ0Qp Ci0gICAgICAgIHsKLSAgICAgICAgICB4ZnJlZSAoZWNzLT53cy52YWx1ZS5l eGVjZF9wYXRobmFtZSk7Ci0gICAgICAgICAgZWNzLT53cy5raW5kID0gVEFS R0VUX1dBSVRLSU5EX1NUT1BQRUQ7Ci0gICAgICAgICAgZWNzLT53cy52YWx1 ZS5zaWcgPSBUQVJHRVRfU0lHTkFMX1RSQVA7Ci0gICAgICAgIH0KKwl7CisJ ICB4ZnJlZSAoZWNzLT53cy52YWx1ZS5leGVjZF9wYXRobmFtZSk7CisJICBl Y3MtPndzLmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBFRDsKKwkgIGVj cy0+d3MudmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF9UUkFQOworCX0KIAog ICAgICAgLyogTm93IGZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRoZSBy ZXN1bHQgb2YgdGhlIHJlc3VsdC4gICovCiAgICAgICBoYW5kbGVfaW5mZXJp b3JfZXZlbnQgKGVjcyk7CkBAIC0xNTY2LDcgKzE1NzUsNyBAQCBpbml0X2V4 ZWN1dGlvbl9jb250cm9sX3N0YXRlIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRy b2xfc3RhdGUgKmVjcykKICAgIGFmdGVyIHRhcmdldF93YWl0KCkvZGVwcmVj YXRlZF90YXJnZXRfd2FpdF9ob29rKCkuICAqLwogCiB2b2lkCi1nZXRfbGFz dF90YXJnZXRfc3RhdHVzIChwdGlkX3QgKnB0aWRwLCBzdHJ1Y3QgdGFyZ2V0 X3dhaXRzdGF0dXMgKnN0YXR1cykKK2dldF9sYXN0X3RhcmdldF9zdGF0dXMg KHB0aWRfdCAqIHB0aWRwLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0 YXR1cykKIHsKICAgKnB0aWRwID0gdGFyZ2V0X2xhc3Rfd2FpdF9wdGlkOwog ICAqc3RhdHVzID0gdGFyZ2V0X2xhc3Rfd2FpdHN0YXR1czsKQEAgLTE2NjUs MzQgKzE2NzQsMzMgQEAgYWRqdXN0X3BjX2FmdGVyX2JyZWFrIChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICAgLyogRmluZCB0aGUg bG9jYXRpb24gd2hlcmUgKGlmIHdlJ3ZlIGhpdCBhIGJyZWFrcG9pbnQpIHRo ZQogICAgICBicmVha3BvaW50IHdvdWxkIGJlLiAgKi8KICAgYnJlYWtwb2lu dF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKQotCQkgIC0gZ2Ri YXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKTsKKyAgICAtIGdk YmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCk7CiAKICAgLyog Q2hlY2sgd2hldGhlciB0aGVyZSBhY3R1YWxseSBpcyBhIHNvZnR3YXJlIGJy ZWFrcG9pbnQgaW5zZXJ0ZWQKICAgICAgYXQgdGhhdCBsb2NhdGlvbi4gICov CiAgIGlmIChzb2Z0d2FyZV9icmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAo YnJlYWtwb2ludF9wYykpCiAgICAgewogICAgICAgLyogV2hlbiB1c2luZyBo YXJkd2FyZSBzaW5nbGUtc3RlcCwgYSBTSUdUUkFQIGlzIHJlcG9ydGVkIGZv ciBib3RoCi0JIGEgY29tcGxldGVkIHNpbmdsZS1zdGVwIGFuZCBhIHNvZnR3 YXJlIGJyZWFrcG9pbnQuICBOZWVkIHRvCi0JIGRpZmZlcmVudGlhdGUgYmV0 d2VlbiB0aGUgdHdvLCBhcyB0aGUgbGF0dGVyIG5lZWRzIGFkanVzdGluZwot CSBidXQgdGhlIGZvcm1lciBkb2VzIG5vdC4KKyAgICAgICAgIGEgY29tcGxl dGVkIHNpbmdsZS1zdGVwIGFuZCBhIHNvZnR3YXJlIGJyZWFrcG9pbnQuICBO ZWVkIHRvCisgICAgICAgICBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3 bywgYXMgdGhlIGxhdHRlciBuZWVkcyBhZGp1c3RpbmcKKyAgICAgICAgIGJ1 dCB0aGUgZm9ybWVyIGRvZXMgbm90LgogCi0JIFRoZSBTSUdUUkFQIGNhbiBi ZSBkdWUgdG8gYSBjb21wbGV0ZWQgaGFyZHdhcmUgc2luZ2xlLXN0ZXAgb25s eSBpZiAKLQkgIC0gd2UgZGlkbid0IGluc2VydCBzb2Z0d2FyZSBzaW5nbGUt c3RlcCBicmVha3BvaW50cwotCSAgLSB0aGUgdGhyZWFkIHRvIGJlIGV4YW1p bmVkIGlzIHN0aWxsIHRoZSBjdXJyZW50IHRocmVhZAotCSAgLSB0aGlzIHRo cmVhZCBpcyBjdXJyZW50bHkgYmVpbmcgc3RlcHBlZAorICAgICAgICAgVGhl IFNJR1RSQVAgY2FuIGJlIGR1ZSB0byBhIGNvbXBsZXRlZCBoYXJkd2FyZSBz aW5nbGUtc3RlcCBvbmx5IGlmIAorICAgICAgICAgLSB3ZSBkaWRuJ3QgaW5z ZXJ0IHNvZnR3YXJlIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnRzCisgICAgICAg ICAtIHRoZSB0aHJlYWQgdG8gYmUgZXhhbWluZWQgaXMgc3RpbGwgdGhlIGN1 cnJlbnQgdGhyZWFkCisgICAgICAgICAtIHRoaXMgdGhyZWFkIGlzIGN1cnJl bnRseSBiZWluZyBzdGVwcGVkCiAKLQkgSWYgYW55IG9mIHRoZXNlIGV2ZW50 cyBkaWQgbm90IG9jY3VyLCB3ZSBtdXN0IGhhdmUgc3RvcHBlZCBkdWUKLQkg dG8gaGl0dGluZyBhIHNvZnR3YXJlIGJyZWFrcG9pbnQsIGFuZCBoYXZlIHRv IGJhY2sgdXAgdG8gdGhlCi0JIGJyZWFrcG9pbnQgYWRkcmVzcy4KKyAgICAg ICAgIElmIGFueSBvZiB0aGVzZSBldmVudHMgZGlkIG5vdCBvY2N1ciwgd2Ug bXVzdCBoYXZlIHN0b3BwZWQgZHVlCisgICAgICAgICB0byBoaXR0aW5nIGEg c29mdHdhcmUgYnJlYWtwb2ludCwgYW5kIGhhdmUgdG8gYmFjayB1cCB0byB0 aGUKKyAgICAgICAgIGJyZWFrcG9pbnQgYWRkcmVzcy4KIAotCSBBcyBhIHNw ZWNpYWwgY2FzZSwgd2UgY291bGQgaGF2ZSBoYXJkd2FyZSBzaW5nbGUtc3Rl cHBlZCBhCi0JIHNvZnR3YXJlIGJyZWFrcG9pbnQuICBJbiB0aGlzIGNhc2Ug KHByZXZfcGMgPT0gYnJlYWtwb2ludF9wYyksCi0JIHdlIGFsc28gbmVlZCB0 byBiYWNrIHVwIHRvIHRoZSBicmVha3BvaW50IGFkZHJlc3MuICAqLworICAg ICAgICAgQXMgYSBzcGVjaWFsIGNhc2UsIHdlIGNvdWxkIGhhdmUgaGFyZHdh cmUgc2luZ2xlLXN0ZXBwZWQgYQorICAgICAgICAgc29mdHdhcmUgYnJlYWtw b2ludC4gIEluIHRoaXMgY2FzZSAocHJldl9wYyA9PSBicmVha3BvaW50X3Bj KSwKKyAgICAgICAgIHdlIGFsc28gbmVlZCB0byBiYWNrIHVwIHRvIHRoZSBi cmVha3BvaW50IGFkZHJlc3MuICAqLwogCiAgICAgICBpZiAoc2luZ2xlc3Rl cF9icmVha3BvaW50c19pbnNlcnRlZF9wCiAJICB8fCAhcHRpZF9lcXVhbCAo ZWNzLT5wdGlkLCBpbmZlcmlvcl9wdGlkKQotCSAgfHwgIWN1cnJlbnRseV9z dGVwcGluZyAoZWNzKQotCSAgfHwgcHJldl9wYyA9PSBicmVha3BvaW50X3Bj KQorCSAgfHwgIWN1cnJlbnRseV9zdGVwcGluZyAoZWNzKSB8fCBwcmV2X3Bj ID09IGJyZWFrcG9pbnRfcGMpCiAJcmVnY2FjaGVfd3JpdGVfcGMgKHJlZ2Nh Y2hlLCBicmVha3BvaW50X3BjKTsKICAgICB9CiB9CkBAIC0xNzA4LDYgKzE3 MTYsOSBAQCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRp b25fY29udHJvbF9zdGF0ZSAqZWNzKQogICBpbnQgc3RvcHBlZF9ieV93YXRj aHBvaW50OwogICBpbnQgc3RlcHBlZF9hZnRlcl9zdG9wcGVkX2J5X3dhdGNo cG9pbnQgPSAwOwogCisgIC8qIFJlc2V0IHJldmVyc2VfcmVzdW1lX25lZWRf c3RlcCB0byAwLiAqLworICByZXZlcnNlX3Jlc3VtZV9uZWVkX3N0ZXAgPSAw OworCiAgIC8qIENhY2hlIHRoZSBsYXN0IHBpZC93YWl0c3RhdHVzLiAqLwog ICB0YXJnZXRfbGFzdF93YWl0X3B0aWQgPSBlY3MtPnB0aWQ7CiAgIHRhcmdl dF9sYXN0X3dhaXRzdGF0dXMgPSAqZWNzLT53cDsKQEAgLTE3MjEsMjcgKzE3 MzIsMjYgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICAgICB7CiAgICAgY2FzZSBpbmZ3 YWl0X3RocmVhZF9ob3Bfc3RhdGU6CiAgICAgICBpZiAoZGVidWdfaW5mcnVu KQotICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJp bmZydW46IGluZndhaXRfdGhyZWFkX2hvcF9zdGF0ZVxuIik7CisJZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBpbmZ3YWl0X3Ro cmVhZF9ob3Bfc3RhdGVcbiIpOwogICAgICAgLyogQ2FuY2VsIHRoZSB3YWl0 b25fcHRpZC4gKi8KICAgICAgIGVjcy0+d2FpdG9uX3B0aWQgPSBwaWRfdG9f cHRpZCAoLTEpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIGluZndhaXRf bm9ybWFsX3N0YXRlOgogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBp bmZ3YWl0X25vcm1hbF9zdGF0ZVxuIik7CisJZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAiaW5mcnVuOiBpbmZ3YWl0X25vcm1hbF9zdGF0ZVxu Iik7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgaW5md2FpdF9zdGVwX3dh dGNoX3N0YXRlOgogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotCQkJICAgICJpbmZy dW46IGluZndhaXRfc3RlcF93YXRjaF9zdGF0ZVxuIik7CisJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBpbmZ3YWl0X3N0ZXBf d2F0Y2hfc3RhdGVcbiIpOwogCiAgICAgICBzdGVwcGVkX2FmdGVyX3N0b3Bw ZWRfYnlfd2F0Y2hwb2ludCA9IDE7CiAgICAgICBicmVhazsKIAogICAgIGNh c2UgaW5md2FpdF9ub25zdGVwX3dhdGNoX3N0YXRlOgogICAgICAgaWYgKGRl YnVnX2luZnJ1bikKLSAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAorCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKIAkJ CSAgICAiaW5mcnVuOiBpbmZ3YWl0X25vbnN0ZXBfd2F0Y2hfc3RhdGVcbiIp OwogICAgICAgaW5zZXJ0X2JyZWFrcG9pbnRzICgpOwogCkBAIC0xNzcyLDcg KzE3ODIsNyBAQCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVj dXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogICAgIHsKICAgICBjYXNlIFRB UkdFVF9XQUlUS0lORF9MT0FERUQ6CiAgICAgICBpZiAoZGVidWdfaW5mcnVu KQotICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJp bmZydW46IFRBUkdFVF9XQUlUS0lORF9MT0FERURcbiIpOworCWZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogVEFSR0VUX1dBSVRL SU5EX0xPQURFRFxuIik7CiAgICAgICAvKiBJZ25vcmUgZ3JhY2VmdWxseSBk dXJpbmcgc3RhcnR1cCBvZiB0aGUgaW5mZXJpb3IsIGFzIGl0IG1pZ2h0CiAg ICAgICAgICBiZSB0aGUgc2hlbGwgd2hpY2ggaGFzIGp1c3QgbG9hZGVkIHNv bWUgb2JqZWN0cywgb3RoZXJ3aXNlCiAgICAgICAgICBhZGQgdGhlIHN5bWJv bHMgZm9yIHRoZSBuZXdseSBsb2FkZWQgb2JqZWN0cy4gIEFsc28gaWdub3Jl IGF0CkBAIC0xODIzLDkgKzE4MzMsOSBAQCBoYW5kbGVfaW5mZXJpb3JfZXZl bnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogCX0K IAogICAgICAgLyogSWYgd2UgYXJlIHNraXBwaW5nIHRocm91Z2ggYSBzaGVs bCwgb3IgdGhyb3VnaCBzaGFyZWQgbGlicmFyeQotCSBsb2FkaW5nIHRoYXQg d2UgYXJlbid0IGludGVyZXN0ZWQgaW4sIHJlc3VtZSB0aGUgcHJvZ3JhbS4g IElmCi0JIHdlJ3JlIHJ1bm5pbmcgdGhlIHByb2dyYW0gbm9ybWFsbHksIGFs c28gcmVzdW1lLiAgQnV0IHN0b3AgaWYKLQkgd2UncmUgYXR0YWNoaW5nIG9y IHNldHRpbmcgdXAgYSByZW1vdGUgY29ubmVjdGlvbi4gICovCisgICAgICAg ICBsb2FkaW5nIHRoYXQgd2UgYXJlbid0IGludGVyZXN0ZWQgaW4sIHJlc3Vt ZSB0aGUgcHJvZ3JhbS4gIElmCisgICAgICAgICB3ZSdyZSBydW5uaW5nIHRo ZSBwcm9ncmFtIG5vcm1hbGx5LCBhbHNvIHJlc3VtZS4gIEJ1dCBzdG9wIGlm CisgICAgICAgICB3ZSdyZSBhdHRhY2hpbmcgb3Igc2V0dGluZyB1cCBhIHJl bW90ZSBjb25uZWN0aW9uLiAgKi8KICAgICAgIGlmIChzdG9wX3Nvb24gPT0g U1RPUF9RVUlFVExZIHx8IHN0b3Bfc29vbiA9PSBOT19TVE9QX1FVSUVUTFkp CiAJewogCSAgLyogTG9hZGluZyBvZiBzaGFyZWQgbGlicmFyaWVzIG1pZ2h0 IGhhdmUgY2hhbmdlZCBicmVha3BvaW50CkBAIC0xODQyLDE0ICsxODUyLDE0 IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9j b250cm9sX3N0YXRlICplY3MpCiAKICAgICBjYXNlIFRBUkdFVF9XQUlUS0lO RF9TUFVSSU9VUzoKICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCi0gICAgICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogVEFS R0VUX1dBSVRLSU5EX1NQVVJJT1VTXG4iKTsKKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csICJpbmZydW46IFRBUkdFVF9XQUlUS0lORF9TUFVS SU9VU1xuIik7CiAgICAgICByZXN1bWUgKDAsIFRBUkdFVF9TSUdOQUxfMCk7 CiAgICAgICBwcmVwYXJlX3RvX3dhaXQgKGVjcyk7CiAgICAgICByZXR1cm47 CiAKICAgICBjYXNlIFRBUkdFVF9XQUlUS0lORF9FWElURUQ6CiAgICAgICBp ZiAoZGVidWdfaW5mcnVuKQotICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csICJpbmZydW46IFRBUkdFVF9XQUlUS0lORF9FWElURURc biIpOworCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1 bjogVEFSR0VUX1dBSVRLSU5EX0VYSVRFRFxuIik7CiAgICAgICB0YXJnZXRf dGVybWluYWxfb3VycyAoKTsJLyogTXVzdCBkbyB0aGlzIGJlZm9yZSBtb3Vy biBhbnl3YXkgKi8KICAgICAgIHByaW50X3N0b3BfcmVhc29uIChFWElURUQs IGVjcy0+d3MudmFsdWUuaW50ZWdlcik7CiAKQEAgLTE4NjcsNyArMTg3Nyw4 IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9j b250cm9sX3N0YXRlICplY3MpCiAKICAgICBjYXNlIFRBUkdFVF9XQUlUS0lO RF9TSUdOQUxMRUQ6CiAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotICAgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IFRB UkdFVF9XQUlUS0lORF9TSUdOQUxMRURcbiIpOworCWZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAgICAiaW5mcnVuOiBUQVJHRVRfV0FJ VEtJTkRfU0lHTkFMTEVEXG4iKTsKICAgICAgIHN0b3BfcHJpbnRfZnJhbWUg PSAwOwogICAgICAgc3RvcF9zaWduYWwgPSBlY3MtPndzLnZhbHVlLnNpZzsK ICAgICAgIHRhcmdldF90ZXJtaW5hbF9vdXJzICgpOwkvKiBNdXN0IGRvIHRo aXMgYmVmb3JlIG1vdXJuIGFueXdheSAqLwpAQCAtMTg4OSw3ICsxOTAwLDcg QEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykKICAgICBjYXNlIFRBUkdFVF9XQUlUS0lORF9G T1JLRUQ6CiAgICAgY2FzZSBUQVJHRVRfV0FJVEtJTkRfVkZPUktFRDoKICAg ICAgIGlmIChkZWJ1Z19pbmZydW4pCi0gICAgICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogVEFSR0VUX1dBSVRLSU5EX0ZP UktFRFxuIik7CisJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAi aW5mcnVuOiBUQVJHRVRfV0FJVEtJTkRfRk9SS0VEXG4iKTsKICAgICAgIHN0 b3Bfc2lnbmFsID0gVEFSR0VUX1NJR05BTF9UUkFQOwogICAgICAgcGVuZGlu Z19mb2xsb3cua2luZCA9IGVjcy0+d3Mua2luZDsKIApAQCAtMTkxOSw3ICsx OTMwLDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKIAogICAgIGNhc2UgVEFSR0VUX1dB SVRLSU5EX0VYRUNEOgogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBU QVJHRVRfV0FJVEtJTkRfRVhFQ0RcbiIpOworCWZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogVEFSR0VUX1dBSVRLSU5EX0VYRUNE XG4iKTsKICAgICAgIHN0b3Bfc2lnbmFsID0gVEFSR0VUX1NJR05BTF9UUkFQ OwogCiAgICAgICBwZW5kaW5nX2ZvbGxvdy5leGVjZF9wYXRobmFtZSA9CkBA IC0xOTU5LDcgKzE5NzAsOCBAQCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKHN0 cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogICAgICAgICAg dGhhdCdzIGluIGEgc3lzY2FsbC4gIEl0J3MgZnJlcXVlbnRseSBhIGxvc2lu ZyBwcm9wb3NpdGlvbi4gICovCiAgICAgY2FzZSBUQVJHRVRfV0FJVEtJTkRf U1lTQ0FMTF9FTlRSWToKICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCi0gICAg ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjog VEFSR0VUX1dBSVRLSU5EX1NZU0NBTExfRU5UUllcbiIpOworCWZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAgICAiaW5mcnVuOiBUQVJH RVRfV0FJVEtJTkRfU1lTQ0FMTF9FTlRSWVxuIik7CiAgICAgICByZXN1bWUg KDAsIFRBUkdFVF9TSUdOQUxfMCk7CiAgICAgICBwcmVwYXJlX3RvX3dhaXQg KGVjcyk7CiAgICAgICByZXR1cm47CkBAIC0xOTcxLDE0ICsxOTgzLDE1IEBA IGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICplY3MpCiAgICAgICAgICBpbnRvIHVzZXIgY29kZS4pICAq LwogICAgIGNhc2UgVEFSR0VUX1dBSVRLSU5EX1NZU0NBTExfUkVUVVJOOgog ICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBUQVJHRVRfV0FJVEtJTkRf U1lTQ0FMTF9SRVRVUk5cbiIpOworCWZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKKwkJCSAgICAiaW5mcnVuOiBUQVJHRVRfV0FJVEtJTkRfU1lT Q0FMTF9SRVRVUk5cbiIpOwogICAgICAgdGFyZ2V0X3Jlc3VtZSAoZWNzLT5w dGlkLCAxLCBUQVJHRVRfU0lHTkFMXzApOwogICAgICAgcHJlcGFyZV90b193 YWl0IChlY3MpOwogICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBUQVJHRVRf V0FJVEtJTkRfU1RPUFBFRDoKICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCi0g ICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1 bjogVEFSR0VUX1dBSVRLSU5EX1NUT1BQRURcbiIpOworCWZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogVEFSR0VUX1dBSVRLSU5E X1NUT1BQRURcbiIpOwogICAgICAgc3RvcF9zaWduYWwgPSBlY3MtPndzLnZh bHVlLnNpZzsKICAgICAgIGJyZWFrOwogCkBAIC0xOTk5LDcgKzIwMTIsNyBA QCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKQogICAgICAgICAgcmVwb3J0ZWQgbXVsdGlwbGUg dGltZXMgd2l0aG91dCBhbiBpbnRlcnZlbmluZyByZXN1bWUuICAqLwogICAg IGNhc2UgVEFSR0VUX1dBSVRLSU5EX0lHTk9SRToKICAgICAgIGlmIChkZWJ1 Z19pbmZydW4pCi0gICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgImluZnJ1bjogVEFSR0VUX1dBSVRLSU5EX0lHTk9SRVxuIik7CisJ ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBUQVJH RVRfV0FJVEtJTkRfSUdOT1JFXG4iKTsKICAgICAgIHByZXBhcmVfdG9fd2Fp dCAoZWNzKTsKICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDI4LDE5ICsy MDQxLDE5IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1 dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAgIGlmIChkZWJ1Z19pbmZydW4p CiAgICAgewogICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiaW5mcnVuOiBzdG9wX3BjID0gMHglc1xuIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFkZHJfbnogKHN0b3BfcGMpKTsKKwkJCSAgcGFkZHJf bnogKHN0b3BfcGMpKTsKICAgICAgIGlmIChTVE9QUEVEX0JZX1dBVENIUE9J TlQgKCZlY3MtPndzKSkKIAl7Ci0gICAgICAgICAgQ09SRV9BRERSIGFkZHI7 CisJICBDT1JFX0FERFIgYWRkcjsKIAkgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgImluZnJ1bjogc3RvcHBlZCBieSB3YXRjaHBvaW50XG4i KTsKIAotICAgICAgICAgIGlmICh0YXJnZXRfc3RvcHBlZF9kYXRhX2FkZHJl c3MgKCZjdXJyZW50X3RhcmdldCwgJmFkZHIpKQotICAgICAgICAgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaW5mcnVuOiBzdG9wcGVkIGRhdGEgYWRkcmVz cyA9IDB4JXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZGRyX256IChhZGRyKSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiaW5mcnVuOiAobm8gZGF0YSBhZGRy ZXNzIGF2YWlsYWJsZSlcbiIpOworCSAgaWYgKHRhcmdldF9zdG9wcGVkX2Rh dGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmYWRkcikpCisJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkiaW5mcnVuOiBz dG9wcGVkIGRhdGEgYWRkcmVzcyA9IDB4JXNcbiIsCisJCQkJcGFkZHJfbnog KGFkZHIpKTsKKwkgIGVsc2UKKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorCQkJCSJpbmZydW46IChubyBkYXRhIGFkZHJlc3MgYXZh aWxhYmxlKVxuIik7CiAJfQogICAgIH0KIApAQCAtMjA1OCw3ICsyMDcxLDgg QEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykKICAgICAgIGlmIChzdG9wX3NpZ25hbCA9PSBU QVJHRVRfU0lHTkFMX1RSQVApCiAJewogCSAgaWYgKGRlYnVnX2luZnJ1bikK LQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVu OiBzdGVwcGluZ19wYXN0X3NpbmdsZXN0ZXBfYnJlYWtwb2ludFxuIik7CisJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkiaW5m cnVuOiBzdGVwcGluZ19wYXN0X3NpbmdsZXN0ZXBfYnJlYWtwb2ludFxuIik7 CiAJICAvKiBQdWxsIHRoZSBzaW5nbGUgc3RlcCBicmVha3BvaW50cyBvdXQg b2YgdGhlIHRhcmdldC4gICovCiAJICByZW1vdmVfc2luZ2xlX3N0ZXBfYnJl YWtwb2ludHMgKCk7CiAJICBzaW5nbGVzdGVwX2JyZWFrcG9pbnRzX2luc2Vy dGVkX3AgPSAwOwpAQCAtMjA4MSw3ICsyMDk1LDcgQEAgaGFuZGxlX2luZmVy aW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cykKICAgaWYgKCFwdGlkX2VxdWFsIChkZWZlcnJlZF9zdGVwX3B0aWQsIG51 bGxfcHRpZCkpCiAgICAgewogICAgICAgLyogSWYgd2Ugc3RvcHBlZCBmb3Ig c29tZSBvdGhlciByZWFzb24gdGhhbiBzaW5nbGUtc3RlcHBpbmcsIGlnbm9y ZQotCSB0aGUgZmFjdCB0aGF0IHdlIHdlcmUgc3VwcG9zZWQgdG8gc3dpdGNo IGJhY2suICAqLworICAgICAgICAgdGhlIGZhY3QgdGhhdCB3ZSB3ZXJlIHN1 cHBvc2VkIHRvIHN3aXRjaCBiYWNrLiAgKi8KICAgICAgIGlmIChzdG9wX3Np Z25hbCA9PSBUQVJHRVRfU0lHTkFMX1RSQVApCiAJewogCSAgaWYgKGRlYnVn X2luZnJ1bikKQEAgLTIxNDYsNDkgKzIxNjAsNTAgQEAgaGFuZGxlX2luZmVy aW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cykKIAkgICAgICAmJiBpbl90aHJlYWRfbGlzdCAoc2luZ2xlc3RlcF9wdGlk KSkKIAkgICAgewogCSAgICAgIC8qIElmIHRoZSBQQyBvZiB0aGUgdGhyZWFk IHdlIHdlcmUgdHJ5aW5nIHRvIHNpbmdsZS1zdGVwCi0JCSBoYXMgY2hhbmdl ZCwgZGlzY2FyZCB0aGlzIGV2ZW50ICh3aGljaCB3ZSB3ZXJlIGdvaW5nCi0J CSB0byBpZ25vcmUgYW55d2F5KSwgYW5kIHByZXRlbmQgd2Ugc2F3IHRoYXQg dGhyZWFkCi0JCSB0cmFwLiAgVGhpcyBwcmV2ZW50cyB1cyBjb250aW51b3Vz bHkgbW92aW5nIHRoZQotCQkgc2luZ2xlLXN0ZXAgYnJlYWtwb2ludCBmb3J3 YXJkLCBvbmUgaW5zdHJ1Y3Rpb24gYXQgYQotCQkgdGltZS4gIElmIHRoZSBQ QyBoYXMgY2hhbmdlZCwgdGhlbiB0aGUgdGhyZWFkIHdlIHdlcmUKLQkJIHRy eWluZyB0byBzaW5nbGUtc3RlcCBoYXMgdHJhcHBlZCBvciBiZWVuIHNpZ25h bGxlZCwKLQkJIGJ1dCB0aGUgZXZlbnQgaGFzIG5vdCBiZWVuIHJlcG9ydGVk IHRvIEdEQiB5ZXQuCi0KLQkJIFRoZXJlIG1pZ2h0IGJlIHNvbWUgY2FzZXMg d2hlcmUgdGhpcyBsb3NlcyBzaWduYWwKLQkJIGluZm9ybWF0aW9uLCBpZiBh IHNpZ25hbCBoYXMgYXJyaXZlZCBhdCBleGFjdGx5IHRoZQotCQkgc2FtZSB0 aW1lIHRoYXQgdGhlIFBDIGNoYW5nZWQsIGJ1dCB0aGlzIGlzIHRoZSBiZXN0 Ci0JCSB3ZSBjYW4gZG8gd2l0aCB0aGUgaW5mb3JtYXRpb24gYXZhaWxhYmxl LiAgUGVyaGFwcyB3ZQotCQkgc2hvdWxkIGFycmFuZ2UgdG8gcmVwb3J0IGFs bCBldmVudHMgZm9yIGFsbCB0aHJlYWRzCi0JCSB3aGVuIHRoZXkgc3RvcCwg b3IgdG8gcmUtcG9sbCB0aGUgcmVtb3RlIGxvb2tpbmcgZm9yCi0JCSB0aGlz IHBhcnRpY3VsYXIgdGhyZWFkIChpLmUuIHRlbXBvcmFyaWx5IGVuYWJsZQot CQkgc2NoZWRsb2NrKS4gICovCi0KLQkgICAgIENPUkVfQUREUiBuZXdfc2lu Z2xlc3RlcF9wYwotCSAgICAgICA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90 aHJlYWRfcmVnY2FjaGUgKHNpbmdsZXN0ZXBfcHRpZCkpOwotCi0JICAgICBp ZiAobmV3X3NpbmdsZXN0ZXBfcGMgIT0gc2luZ2xlc3RlcF9wYykKLQkgICAg ICAgewotCQkgaWYgKGRlYnVnX2luZnJ1bikKLQkJICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiB1bmV4cGVjdGVkIHRocmVh ZCwiCi0JCQkJICAgICAgICIgYnV0IGV4cGVjdGVkIHRocmVhZCBhZHZhbmNl ZCBhbHNvXG4iKTsKLQotCQkgLyogVGhlIGN1cnJlbnQgY29udGV4dCBzdGls bCBiZWxvbmdzIHRvCi0JCSAgICBzaW5nbGVzdGVwX3B0aWQuICBEb24ndCBz d2FwIGhlcmUsIHNpbmNlIHRoYXQncwotCQkgICAgdGhlIGNvbnRleHQgd2Ug d2FudCB0byB1c2UuICBKdXN0IGZ1ZGdlIG91cgotCQkgICAgc3RhdGUgYW5k IGNvbnRpbnVlLiAgKi8KLSAgICAgICAgICAgICAgICAgZWNzLT5wdGlkID0g c2luZ2xlc3RlcF9wdGlkOwotICAgICAgICAgICAgICAgICBzdG9wX3BjID0g bmV3X3NpbmdsZXN0ZXBfcGM7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgZWxzZQotCSAgICAgICB7Ci0JCSBpZiAoZGVidWdfaW5mcnVuKQot CQkgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0JCQkJICAg ICAgICJpbmZydW46IHVuZXhwZWN0ZWQgdGhyZWFkXG4iKTsKLQotCQkgdGhy ZWFkX2hvcF9uZWVkZWQgPSAxOwotCQkgc3RlcHBpbmdfcGFzdF9zaW5nbGVz dGVwX2JyZWFrcG9pbnQgPSAxOwotCQkgc2F2ZWRfc2luZ2xlc3RlcF9wdGlk ID0gc2luZ2xlc3RlcF9wdGlkOwotCSAgICAgICB9CisJICAgICAgICAgaGFz IGNoYW5nZWQsIGRpc2NhcmQgdGhpcyBldmVudCAod2hpY2ggd2Ugd2VyZSBn b2luZworCSAgICAgICAgIHRvIGlnbm9yZSBhbnl3YXkpLCBhbmQgcHJldGVu ZCB3ZSBzYXcgdGhhdCB0aHJlYWQKKwkgICAgICAgICB0cmFwLiAgVGhpcyBw cmV2ZW50cyB1cyBjb250aW51b3VzbHkgbW92aW5nIHRoZQorCSAgICAgICAg IHNpbmdsZS1zdGVwIGJyZWFrcG9pbnQgZm9yd2FyZCwgb25lIGluc3RydWN0 aW9uIGF0IGEKKwkgICAgICAgICB0aW1lLiAgSWYgdGhlIFBDIGhhcyBjaGFu Z2VkLCB0aGVuIHRoZSB0aHJlYWQgd2Ugd2VyZQorCSAgICAgICAgIHRyeWlu ZyB0byBzaW5nbGUtc3RlcCBoYXMgdHJhcHBlZCBvciBiZWVuIHNpZ25hbGxl ZCwKKwkgICAgICAgICBidXQgdGhlIGV2ZW50IGhhcyBub3QgYmVlbiByZXBv cnRlZCB0byBHREIgeWV0LgorCisJICAgICAgICAgVGhlcmUgbWlnaHQgYmUg c29tZSBjYXNlcyB3aGVyZSB0aGlzIGxvc2VzIHNpZ25hbAorCSAgICAgICAg IGluZm9ybWF0aW9uLCBpZiBhIHNpZ25hbCBoYXMgYXJyaXZlZCBhdCBleGFj dGx5IHRoZQorCSAgICAgICAgIHNhbWUgdGltZSB0aGF0IHRoZSBQQyBjaGFu Z2VkLCBidXQgdGhpcyBpcyB0aGUgYmVzdAorCSAgICAgICAgIHdlIGNhbiBk byB3aXRoIHRoZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUuICBQZXJoYXBzIHdl CisJICAgICAgICAgc2hvdWxkIGFycmFuZ2UgdG8gcmVwb3J0IGFsbCBldmVu dHMgZm9yIGFsbCB0aHJlYWRzCisJICAgICAgICAgd2hlbiB0aGV5IHN0b3As IG9yIHRvIHJlLXBvbGwgdGhlIHJlbW90ZSBsb29raW5nIGZvcgorCSAgICAg ICAgIHRoaXMgcGFydGljdWxhciB0aHJlYWQgKGkuZS4gdGVtcG9yYXJpbHkg ZW5hYmxlCisJICAgICAgICAgc2NoZWRsb2NrKS4gICovCisKKwkgICAgICBD T1JFX0FERFIgbmV3X3NpbmdsZXN0ZXBfcGMKKwkJPSByZWdjYWNoZV9yZWFk X3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChzaW5nbGVzdGVwX3B0aWQpKTsK KworCSAgICAgIGlmIChuZXdfc2luZ2xlc3RlcF9wYyAhPSBzaW5nbGVzdGVw X3BjKQorCQl7CisJCSAgaWYgKGRlYnVnX2luZnJ1bikKKwkJICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJImluZnJ1bjogdW5l eHBlY3RlZCB0aHJlYWQsIgorCQkJCQkiIGJ1dCBleHBlY3RlZCB0aHJlYWQg YWR2YW5jZWQgYWxzb1xuIik7CisKKwkJICAvKiBUaGUgY3VycmVudCBjb250 ZXh0IHN0aWxsIGJlbG9uZ3MgdG8KKwkJICAgICBzaW5nbGVzdGVwX3B0aWQu ICBEb24ndCBzd2FwIGhlcmUsIHNpbmNlIHRoYXQncworCQkgICAgIHRoZSBj b250ZXh0IHdlIHdhbnQgdG8gdXNlLiAgSnVzdCBmdWRnZSBvdXIKKwkJICAg ICBzdGF0ZSBhbmQgY29udGludWUuICAqLworCQkgIGVjcy0+cHRpZCA9IHNp bmdsZXN0ZXBfcHRpZDsKKwkJICBzdG9wX3BjID0gbmV3X3NpbmdsZXN0ZXBf cGM7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBpZiAoZGVidWdfaW5m cnVuKQorCQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAor CQkJCQkiaW5mcnVuOiB1bmV4cGVjdGVkIHRocmVhZFxuIik7CisKKwkJICB0 aHJlYWRfaG9wX25lZWRlZCA9IDE7CisJCSAgc3RlcHBpbmdfcGFzdF9zaW5n bGVzdGVwX2JyZWFrcG9pbnQgPSAxOworCQkgIHNhdmVkX3NpbmdsZXN0ZXBf cHRpZCA9IHNpbmdsZXN0ZXBfcHRpZDsKKwkJfQogCSAgICB9CiAJfQogCkBA IC0yMjg3LDE3ICsyMzAyLDE3IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAo c3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAgICAgICAg ICBJbiBvcmRlciB0byBtYWtlIHdhdGNocG9pbnRzIHdvcmsgYHJpZ2h0Jywg d2UgcmVhbGx5IG5lZWQKICAgICAgICAgIHRvIGNvbXBsZXRlIHRoZSBtZW1v cnkgd3JpdGUsIGFuZCB0aGVuIGV2YWx1YXRlIHRoZQogICAgICAgICAgd2F0 Y2hwb2ludCBleHByZXNzaW9uLiAgV2UgZG8gdGhpcyBieSBzaW5nbGUtc3Rl cHBpbmcgdGhlCi0JIHRhcmdldC4KKyAgICAgICAgIHRhcmdldC4KKworICAg ICAgICAgSXQgbWF5IG5vdCBiZSBuZWNlc3NhcnkgdG8gZGlzYWJsZSB0aGUg d2F0Y2hwb2ludCB0byBzdG9wIG92ZXIKKyAgICAgICAgIGl0LiAgRm9yIGV4 YW1wbGUsIHRoZSBQQSBjYW4gKHdpdGggc29tZSBrZXJuZWwgY29vcGVyYXRp b24pCisgICAgICAgICBzaW5nbGUgc3RlcCBvdmVyIGEgd2F0Y2hwb2ludCB3 aXRob3V0IGRpc2FibGluZyB0aGUgd2F0Y2hwb2ludC4KIAotCSBJdCBtYXkg bm90IGJlIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHRoZSB3YXRjaHBvaW50IHRv IHN0b3Agb3ZlcgotCSBpdC4gIEZvciBleGFtcGxlLCB0aGUgUEEgY2FuICh3 aXRoIHNvbWUga2VybmVsIGNvb3BlcmF0aW9uKQotCSBzaW5nbGUgc3RlcCBv dmVyIGEgd2F0Y2hwb2ludCB3aXRob3V0IGRpc2FibGluZyB0aGUgd2F0Y2hw b2ludC4KKyAgICAgICAgIEl0IGlzIGZhciBtb3JlIGNvbW1vbiB0byBuZWVk IHRvIGRpc2FibGUgYSB3YXRjaHBvaW50IHRvIHN0ZXAKKyAgICAgICAgIHRo ZSBpbmZlcmlvciBvdmVyIGl0LiAgSWYgd2UgaGF2ZSBub24tc3RlcHBhYmxl IHdhdGNocG9pbnRzLAorICAgICAgICAgd2UgbXVzdCBkaXNhYmxlIHRoZSBj dXJyZW50IHdhdGNocG9pbnQ7IGl0J3Mgc2ltcGxlc3QgdG8KKyAgICAgICAg IGRpc2FibGUgYWxsIHdhdGNocG9pbnRzIGFuZCBicmVha3BvaW50cy4gICov CiAKLQkgSXQgaXMgZmFyIG1vcmUgY29tbW9uIHRvIG5lZWQgdG8gZGlzYWJs ZSBhIHdhdGNocG9pbnQgdG8gc3RlcAotCSB0aGUgaW5mZXJpb3Igb3ZlciBp dC4gIElmIHdlIGhhdmUgbm9uLXN0ZXBwYWJsZSB3YXRjaHBvaW50cywKLQkg d2UgbXVzdCBkaXNhYmxlIHRoZSBjdXJyZW50IHdhdGNocG9pbnQ7IGl0J3Mg c2ltcGxlc3QgdG8KLQkgZGlzYWJsZSBhbGwgd2F0Y2hwb2ludHMgYW5kIGJy ZWFrcG9pbnRzLiAgKi8KLQkgCiAgICAgICBpZiAoIUhBVkVfU1RFUFBBQkxF X1dBVENIUE9JTlQpCiAJcmVtb3ZlX2JyZWFrcG9pbnRzICgpOwogICAgICAg cmVnaXN0ZXJzX2NoYW5nZWQgKCk7CkBAIC0yMzMzLDEwICsyMzQ4LDEwIEBA IGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICplY3MpCiAgICAgICAmJiBjdXJyZW50bHlfc3RlcHBpbmcg KGVjcykpCiAgICAgewogICAgICAgLyogV2UncmUgdHJ5aW5nIHRvIHN0ZXAg b2ZmIGEgYnJlYWtwb2ludC4gIFR1cm5zIG91dCB0aGF0IHdlJ3JlCi0JIGFs c28gb24gYW4gaW5zdHJ1Y3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzdGVwcGVk IG11bHRpcGxlCi0JIHRpbWVzIGJlZm9yZSBpdCdzIGJlZW4gZnVsbHkgZXhl Y3V0aW5nLiBFLmcuLCBhcmNoaXRlY3R1cmVzCi0JIHdpdGggYSBkZWxheSBz bG90LiAgSXQgbmVlZHMgdG8gYmUgc3RlcHBlZCB0d2ljZSwgb25jZSBmb3IK LQkgdGhlIGluc3RydWN0aW9uIGFuZCBvbmNlIGZvciB0aGUgZGVsYXkgc2xv dC4gICovCisgICAgICAgICBhbHNvIG9uIGFuIGluc3RydWN0aW9uIHRoYXQg bmVlZHMgdG8gYmUgc3RlcHBlZCBtdWx0aXBsZQorICAgICAgICAgdGltZXMg YmVmb3JlIGl0J3MgYmVlbiBmdWxseSBleGVjdXRpbmcuIEUuZy4sIGFyY2hp dGVjdHVyZXMKKyAgICAgICAgIHdpdGggYSBkZWxheSBzbG90LiAgSXQgbmVl ZHMgdG8gYmUgc3RlcHBlZCB0d2ljZSwgb25jZSBmb3IKKyAgICAgICAgIHRo ZSBpbnN0cnVjdGlvbiBhbmQgb25jZSBmb3IgdGhlIGRlbGF5IHNsb3QuICAq LwogICAgICAgaW50IHN0ZXBfdGhyb3VnaF9kZWxheQogCT0gZ2RiYXJjaF9z aW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5IChjdXJyZW50X2dkYmFyY2gsCiAJ CQkJCSAgICAgZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwpAQCAtMjM0Niw5ICsy MzYxLDkgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKIAl7CiAJICAvKiBUaGUgdXNlciBp c3N1ZWQgYSBjb250aW51ZSB3aGVuIHN0b3BwZWQgYXQgYSBicmVha3BvaW50 LgogCSAgICAgU2V0IHVwIGZvciBhbm90aGVyIHRyYXAgYW5kIGdldCBvdXQg b2YgaGVyZS4gICovCi0gICAgICAgICBlY3MtPnN0ZXBwaW5nX292ZXJfYnJl YWtwb2ludCA9IDE7Ci0gICAgICAgICBrZWVwX2dvaW5nIChlY3MpOwotICAg ICAgICAgcmV0dXJuOworCSAgZWNzLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9p bnQgPSAxOworCSAga2VlcF9nb2luZyAoZWNzKTsKKwkgIHJldHVybjsKIAl9 CiAgICAgICBlbHNlIGlmIChzdGVwX3Rocm91Z2hfZGVsYXkpCiAJewpAQCAt MjM4NSw4ICsyNDAwLDggQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1 Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICAgICAgYnJlYWtw b2ludCBpcyBhbHdheXMgaW5zZXJ0ZWQgYXQgdGhlIG9yaWdpbmFsIGluc3Ry dWN0aW9uOwogICAgICBub24tc3RhbmRhcmQgc2lnbmFscyBjYW4ndCBiZSBl eHBsYWluZWQgYnkgdGhlIGJyZWFrcG9pbnQuICAqLwogICBpZiAoc3RvcF9z aWduYWwgPT0gVEFSR0VUX1NJR05BTF9UUkFQCi0gICAgICB8fCAoISBzdGVw cGluZ19vdmVyX2JyZWFrcG9pbnQKLSAgICAgICAgICAmJiBicmVha3BvaW50 X2luc2VydGVkX2hlcmVfcCAoc3RvcF9wYykKKyAgICAgIHx8ICghc3RlcHBp bmdfb3Zlcl9icmVha3BvaW50CisJICAmJiBicmVha3BvaW50X2luc2VydGVk X2hlcmVfcCAoc3RvcF9wYykKIAkgICYmIChzdG9wX3NpZ25hbCA9PSBUQVJH RVRfU0lHTkFMX0lMTAogCSAgICAgIHx8IHN0b3Bfc2lnbmFsID09IFRBUkdF VF9TSUdOQUxfU0VHVgogCSAgICAgIHx8IHN0b3Bfc2lnbmFsID09IFRBUkdF VF9TSUdOQUxfRU1UKSkKQEAgLTIzOTUsNyArMjQxMCw3IEBAIGhhbmRsZV9p bmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRl ICplY3MpCiAgICAgewogICAgICAgaWYgKHN0b3Bfc2lnbmFsID09IFRBUkdF VF9TSUdOQUxfVFJBUCAmJiBzdG9wX2FmdGVyX3RyYXApCiAJewotICAgICAg ICAgIGlmIChkZWJ1Z19pbmZydW4pCisJICBpZiAoZGVidWdfaW5mcnVuKQog CSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46 IHN0b3BwZWRcbiIpOwogCSAgc3RvcF9wcmludF9mcmFtZSA9IDA7CiAJICBz dG9wX3N0ZXBwaW5nIChlY3MpOwpAQCAtMjQwNiw3ICsyNDIxLDcgQEAgaGFu ZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xf c3RhdGUgKmVjcykKICAgICAgICAgIHNoYXJlZCBsaWJyYXJpZXMgaG9vayBm dW5jdGlvbnMuICAqLwogICAgICAgaWYgKHN0b3Bfc29vbiA9PSBTVE9QX1FV SUVUTFkgfHwgc3RvcF9zb29uID09IFNUT1BfUVVJRVRMWV9SRU1PVEUpCiAJ ewotICAgICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCisJICBpZiAoZGVidWdf aW5mcnVuKQogCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICJpbmZydW46IHF1aWV0bHkgc3RvcHBlZFxuIik7CiAJICBzdG9wX3N0ZXBw aW5nIChlY3MpOwogCSAgcmV0dXJuOwpAQCAtMjQxNiw4ICsyNDMxLDggQEAg aGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRy b2xfc3RhdGUgKmVjcykKICAgICAgICAgIHRoZSBzdG9wX3NpZ25hbCBoZXJl LCBiZWNhdXNlIHNvbWUga2VybmVscyBkb24ndCBpZ25vcmUgYQogICAgICAg ICAgU0lHU1RPUCBpbiBhIHN1YnNlcXVlbnQgcHRyYWNlKFBUUkFDRV9DT05U LFNJR1NUT1ApIGNhbGwuCiAgICAgICAgICBTZWUgbW9yZSBjb21tZW50cyBp biBpbmZlcmlvci5oLiAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlCi0JIGdl dCBhIG5vbi1TSUdTVE9QLCByZXBvcnQgaXQgdG8gdGhlIHVzZXIgLSBhc3N1 bWUgdGhlIGJhY2tlbmQKLQkgd2lsbCBoYW5kbGUgdGhlIFNJR1NUT1AgaWYg aXQgc2hvdWxkIHNob3cgdXAgbGF0ZXIuICAqLworICAgICAgICAgZ2V0IGEg bm9uLVNJR1NUT1AsIHJlcG9ydCBpdCB0byB0aGUgdXNlciAtIGFzc3VtZSB0 aGUgYmFja2VuZAorICAgICAgICAgd2lsbCBoYW5kbGUgdGhlIFNJR1NUT1Ag aWYgaXQgc2hvdWxkIHNob3cgdXAgbGF0ZXIuICAqLwogICAgICAgaWYgKHN0 b3Bfc29vbiA9PSBTVE9QX1FVSUVUTFlfTk9fU0lHU1RPUAogCSAgJiYgc3Rv cF9zaWduYWwgPT0gVEFSR0VUX1NJR05BTF9TVE9QKQogCXsKQEAgLTI0Mjgs OSArMjQ0Myw5IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4 ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAKICAgICAgIC8qIFNlZSBp ZiB0aGVyZSBpcyBhIGJyZWFrcG9pbnQgYXQgdGhlIGN1cnJlbnQgUEMuICAq LwogICAgICAgc3RvcF9icHN0YXQgPSBicHN0YXRfc3RvcF9zdGF0dXMgKHN0 b3BfcGMsIGVjcy0+cHRpZCk7Ci0gICAgICAKKwogICAgICAgLyogRm9sbG93 aW5nIGluIGNhc2UgYnJlYWsgY29uZGl0aW9uIGNhbGxlZCBhCi0JIGZ1bmN0 aW9uLiAgKi8KKyAgICAgICAgIGZ1bmN0aW9uLiAgKi8KICAgICAgIHN0b3Bf cHJpbnRfZnJhbWUgPSAxOwogCiAgICAgICAvKiBOT1RFOiBjYWduZXkvMjAw My0wMy0yOTogVGhlc2UgdHdvIGNoZWNrcyBmb3IgYSByYW5kb20gc2lnbmFs CkBAIC0yNDU3LDcgKzI0NzIsOSBAQCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQg KHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogCWVjcy0+ cmFuZG9tX3NpZ25hbAogCSAgPSAhKGJwc3RhdF9leHBsYWluc19zaWduYWwg KHN0b3BfYnBzdGF0KQogCSAgICAgIHx8IHN0ZXBwaW5nX292ZXJfYnJlYWtw b2ludAotCSAgICAgIHx8IChzdGVwX3JhbmdlX2VuZCAmJiBzdGVwX3Jlc3Vt ZV9icmVha3BvaW50ID09IE5VTEwpKTsKKwkgICAgICB8fCAoc3RlcF9yYW5n ZV9lbmQgJiYgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQorCSAg ICAgIHx8ICh0YXJnZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rpb24gKCkgPT0g RVhFQ19SRVZFUlNFKQorCSAgICAgIHx8IFJFQ09SRF9JU19VU0VEKTsKICAg ICAgIGVsc2UKIAl7CiAJICBlY3MtPnJhbmRvbV9zaWduYWwgPSAhYnBzdGF0 X2V4cGxhaW5zX3NpZ25hbCAoc3RvcF9icHN0YXQpOwpAQCAtMjQ4Myw3ICsy NTAwLDggQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgICAgICBpbnQg cHJpbnRlZCA9IDA7CiAKICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCi0JIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogcmFuZG9t IHNpZ25hbCAlZFxuIiwgc3RvcF9zaWduYWwpOworCWZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogcmFuZG9tIHNpZ25hbCAlZFxu IiwKKwkJCSAgICBzdG9wX3NpZ25hbCk7CiAKICAgICAgIHN0b3BwZWRfYnlf cmFuZG9tX3NpZ25hbCA9IDE7CiAKQEAgLTI1MDgsOCArMjUyNiw3IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCXN0b3Bfc2lnbmFsID0gVEFSR0VU X1NJR05BTF8wOwogCiAgICAgICBpZiAocHJldl9wYyA9PSByZWFkX3BjICgp Ci0JICAmJiBzdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQKLQkgICYmIHN0ZXBf cmVzdW1lX2JyZWFrcG9pbnQgPT0gTlVMTCkKKwkgICYmIHN0ZXBwaW5nX292 ZXJfYnJlYWtwb2ludCAmJiBzdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5V TEwpCiAJewogCSAgLyogV2Ugd2VyZSBqdXN0IHN0YXJ0aW5nIGEgbmV3IHNl cXVlbmNlLCBhdHRlbXB0aW5nIHRvCiAJICAgICBzaW5nbGUtc3RlcCBvZmYg b2YgYSBicmVha3BvaW50IGFuZCBleHBlY3RpbmcgYSBTSUdUUkFQLgpAQCAt MjUyMSwxMCArMjUzOCwxMCBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoK IAkgICAgIGNvZGUgcGF0aHMgYXMgc2luZ2xlLXN0ZXAgLSBzZXQgYSBicmVh a3BvaW50IGF0IHRoZQogCSAgICAgc2lnbmFsIHJldHVybiBhZGRyZXNzIGFu ZCB0aGVuLCBvbmNlIGhpdCwgc3RlcCBvZmYgdGhhdAogCSAgICAgYnJlYWtw b2ludC4gICovCi0gICAgICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAg ICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZnJ1bjogc2lnbmFsIGFy cml2ZWQgd2hpbGUgc3RlcHBpbmcgb3ZlciAiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJicmVha3BvaW50XG4iKTsKKwkgIGlmIChkZWJ1 Z19pbmZydW4pCisJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKwkJCQkiaW5mcnVuOiBzaWduYWwgYXJyaXZlZCB3aGlsZSBzdGVwcGlu ZyBvdmVyICIKKwkJCQkiYnJlYWtwb2ludFxuIik7CiAKIAkgIGluc2VydF9z dGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X2ZyYW1lIChnZXRfY3VycmVudF9m cmFtZSAoKSk7CiAJICBlY3MtPnN0ZXBfYWZ0ZXJfc3RlcF9yZXN1bWVfYnJl YWtwb2ludCA9IDE7CkBAIC0yNTM2LDggKzI1NTMsNyBAQCBwcm9jZXNzX2V2 ZW50X3N0b3BfdGVzdDoKIAkgICYmIHN0b3Bfc2lnbmFsICE9IFRBUkdFVF9T SUdOQUxfMAogCSAgJiYgc3RvcF9wYyA+PSBzdGVwX3JhbmdlX3N0YXJ0ICYm IHN0b3BfcGMgPCBzdGVwX3JhbmdlX2VuZAogCSAgJiYgZnJhbWVfaWRfZXEg KGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpLAotCQkJICBz dGVwX2ZyYW1lX2lkKQotCSAgJiYgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9 PSBOVUxMKQorCQkJICBzdGVwX2ZyYW1lX2lkKSAmJiBzdGVwX3Jlc3VtZV9i cmVha3BvaW50ID09IE5VTEwpCiAJewogCSAgLyogVGhlIGluZmVyaW9yIGlz IGFib3V0IHRvIHRha2UgYSBzaWduYWwgdGhhdCB3aWxsIHRha2UgaXQKIAkg ICAgIG91dCBvZiB0aGUgc2luZ2xlIHN0ZXAgcmFuZ2UuICBTZXQgYSBicmVh a3BvaW50IGF0IHRoZQpAQCAtMjU0OCwxMCArMjU2NCwxMCBAQCBwcm9jZXNz X2V2ZW50X3N0b3BfdGVzdDoKIAkgICAgIE5vdGUgdGhhdCB0aGlzIGlzIG9u bHkgbmVlZGVkIGZvciBhIHNpZ25hbCBkZWxpdmVyZWQKIAkgICAgIHdoaWxl IGluIHRoZSBzaW5nbGUtc3RlcCByYW5nZS4gIE5lc3RlZCBzaWduYWxzIGFy ZW4ndCBhCiAJICAgICBwcm9ibGVtIGFzIHRoZXkgZXZlbnR1YWxseSBhbGwg cmV0dXJuLiAgKi8KLSAgICAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotICAg ICAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mcnVuOiBzaWduYWwg bWF5IHRha2UgdXMgb3V0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInNpbmdsZS1zdGVwIHJhbmdlXG4iKTsKKwkgIGlmIChkZWJ1 Z19pbmZydW4pCisJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKwkJCQkiaW5mcnVuOiBzaWduYWwgbWF5IHRha2UgdXMgb3V0IG9mICIK KwkJCQkic2luZ2xlLXN0ZXAgcmFuZ2VcbiIpOwogCiAJICBpbnNlcnRfc3Rl cF9yZXN1bWVfYnJlYWtwb2ludF9hdF9mcmFtZSAoZ2V0X2N1cnJlbnRfZnJh bWUgKCkpOwogCSAga2VlcF9nb2luZyAoZWNzKTsKQEAgLTI1NTksMTEgKzI1 NzUsMTEgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAJfQogCiAgICAg ICAvKiBOb3RlOiBzdGVwX3Jlc3VtZV9icmVha3BvaW50IG1heSBiZSBub24t TlVMTC4gIFRoaXMgb2NjdXJlcwotCSB3aGVuIGVpdGhlciB0aGVyZSdzIGEg bmVzdGVkIHNpZ25hbCwgb3Igd2hlbiB0aGVyZSdzIGEKLQkgcGVuZGluZyBz aWduYWwgZW5hYmxlZCBqdXN0IGFzIHRoZSBzaWduYWwgaGFuZGxlciByZXR1 cm5zCi0JIChsZWF2aW5nIHRoZSBpbmZlcmlvciBhdCB0aGUgc3RlcC1yZXN1 bWUtYnJlYWtwb2ludCB3aXRob3V0Ci0JIGFjdHVhbGx5IGV4ZWN1dGluZyBp dCkuICBFaXRoZXIgd2F5IGNvbnRpbnVlIHVudGlsIHRoZQotCSBicmVha3Bv aW50IGlzIHJlYWxseSBoaXQuICAqLworICAgICAgICAgd2hlbiBlaXRoZXIg dGhlcmUncyBhIG5lc3RlZCBzaWduYWwsIG9yIHdoZW4gdGhlcmUncyBhCisg ICAgICAgICBwZW5kaW5nIHNpZ25hbCBlbmFibGVkIGp1c3QgYXMgdGhlIHNp Z25hbCBoYW5kbGVyIHJldHVybnMKKyAgICAgICAgIChsZWF2aW5nIHRoZSBp bmZlcmlvciBhdCB0aGUgc3RlcC1yZXN1bWUtYnJlYWtwb2ludCB3aXRob3V0 CisgICAgICAgICBhY3R1YWxseSBleGVjdXRpbmcgaXQpLiAgRWl0aGVyIHdh eSBjb250aW51ZSB1bnRpbCB0aGUKKyAgICAgICAgIGJyZWFrcG9pbnQgaXMg cmVhbGx5IGhpdC4gICovCiAgICAgICBrZWVwX2dvaW5nIChlY3MpOwogICAg ICAgcmV0dXJuOwogICAgIH0KQEAgLTI1OTUsNyArMjYxMSw4IEBAIHByb2Nl c3NfZXZlbnRfc3RvcF90ZXN0OgogCiAJaWYgKCFnZGJhcmNoX2dldF9sb25n am1wX3RhcmdldF9wIChjdXJyZW50X2dkYmFyY2gpCiAJICAgIHx8ICFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldCAoY3VycmVudF9nZGJhcmNoLAotCQkJ CQkgICAgZ2V0X2N1cnJlbnRfZnJhbWUgKCksICZqbXBfYnVmX3BjKSkKKwkJ CQkJICAgIGdldF9jdXJyZW50X2ZyYW1lICgpLAorCQkJCQkgICAgJmptcF9i dWZfcGMpKQogCSAgewogCSAgICBpZiAoZGVidWdfaW5mcnVuKQogCSAgICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKQEAgLTI2MTYs NyArMjYzMyw3IEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBf UkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKIAly ZXR1cm47CiAKICAgICAgIGNhc2UgQlBTVEFUX1dIQVRfQ0xFQVJfTE9OR0pN UF9SRVNVTUU6Ci0gICAgICAgIGlmIChkZWJ1Z19pbmZydW4pCisJaWYgKGRl YnVnX2luZnJ1bikKIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKIAkJCSAgICAgICJpbmZydW46IEJQU1RBVF9XSEFUX0NMRUFSX0xPTkdK TVBfUkVTVU1FXG4iKTsKIApAQCAtMjYyOSw3ICsyNjQ2LDcgQEAgaW5mcnVu OiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldClcbiIpOwogCXJldHVybjsKIAogICAgICAgY2Fz ZSBCUFNUQVRfV0hBVF9TSU5HTEU6Ci0gICAgICAgIGlmIChkZWJ1Z19pbmZy dW4pCisJaWYgKGRlYnVnX2luZnJ1bikKIAkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogQlBTVEFUX1dIQVRfU0lOR0xFXG4i KTsKIAllY3MtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCA9IDE7CiAJLyog U3RpbGwgbmVlZCB0byBjaGVjayBvdGhlciBzdHVmZiwgYXQgbGVhc3QgdGhl IGNhc2UKQEAgLTI2MzcsNyArMjY1NCw3IEBAIGluZnJ1bjogQlBTVEFUX1dI QVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90 YXJnZXQpXG4iKTsKIAlicmVhazsKIAogICAgICAgY2FzZSBCUFNUQVRfV0hB VF9TVE9QX05PSVNZOgotICAgICAgICBpZiAoZGVidWdfaW5mcnVuKQorCWlm IChkZWJ1Z19pbmZydW4pCiAJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICJpbmZydW46IEJQU1RBVF9XSEFUX1NUT1BfTk9JU1lcbiIpOwog CXN0b3BfcHJpbnRfZnJhbWUgPSAxOwogCkBAIC0yNjQ4LDggKzI2NjUsOSBA QCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdk YmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CiAJcmV0dXJuOwogCiAg ICAgICBjYXNlIEJQU1RBVF9XSEFUX1NUT1BfU0lMRU5UOgotICAgICAgICBp ZiAoZGVidWdfaW5mcnVuKQotCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLCAiaW5mcnVuOiBCUFNUQVRfV0hBVF9TVE9QX1NJTEVOVFxuIik7 CisJaWYgKGRlYnVnX2luZnJ1bikKKwkgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKKwkJCSAgICAgICJpbmZydW46IEJQU1RBVF9XSEFUX1NU T1BfU0lMRU5UXG4iKTsKIAlzdG9wX3ByaW50X2ZyYW1lID0gMDsKIAogCS8q IFdlIGFyZSBhYm91dCB0byBudWtlIHRoZSBzdGVwX3Jlc3VtZV9icmVha3Bv aW4gdmlhIHRoZQpAQCAtMjY3Niw4ICsyNjk0LDkgQEAgaW5mcnVuOiBCUFNU QVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25n am1wX3RhcmdldClcbiIpOwogCSAgIHN0ZXAtcmVzdW1lIGJwLCBidXQgaXQg bWFrZXMgbm8gZWZmb3J0IHRvIGVuc3VyZSB0aGF0CiAJICAgdGhlIG9uZSBk ZWxldGVkIGlzIHRoZSBvbmUgY3VycmVudGx5IHN0b3BwZWQgYXQuICBNVlMg ICovCiAKLSAgICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLQkgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogQlBTVEFUX1dIQVRf U1RFUF9SRVNVTUVcbiIpOworCWlmIChkZWJ1Z19pbmZydW4pCisJICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkgICAgICAiaW5mcnVu OiBCUFNUQVRfV0hBVF9TVEVQX1JFU1VNRVxuIik7CiAKIAlpZiAoc3RlcF9y ZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQogCSAgewpAQCAtMjcxMSw4ICsy NzMwLDkgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNV TUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwogICAgICAg Y2FzZSBCUFNUQVRfV0hBVF9DSEVDS19TSExJQlM6CiAgICAgICBjYXNlIEJQ U1RBVF9XSEFUX0NIRUNLX1NITElCU19SRVNVTUVfRlJPTV9IT09LOgogCXsK LSAgICAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotCSAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IEJQU1RBVF9XSEFUX0NI RUNLX1NITElCU1xuIik7CisJICBpZiAoZGVidWdfaW5mcnVuKQorCSAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJImluZnJ1bjog QlBTVEFUX1dIQVRfQ0hFQ0tfU0hMSUJTXG4iKTsKIAogCSAgLyogQ2hlY2sg Zm9yIGFueSBuZXdseSBhZGRlZCBzaGFyZWQgbGlicmFyaWVzIGlmIHdlJ3Jl CiAJICAgICBzdXBwb3NlZCB0byBiZSBhZGRpbmcgdGhlbSBhdXRvbWF0aWNh bGx5LiAgU3dpdGNoCkBAIC0yODE4LDE1ICsyODM4LDE2IEBAIGluZnJ1bjog QlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRf bG9uZ2ptcF90YXJnZXQpXG4iKTsKICAgICAgIC8qIEhhdmUgd2UgcmVhY2hl ZCBvdXIgZGVzdGluYXRpb24/ICBJZiBub3QsIGtlZXAgZ29pbmcuICovCiAg ICAgICBpZiAoU09MSUJfSU5fRFlOQU1JQ19MSU5LRVIgKFBJREdFVCAoZWNz LT5wdGlkKSwgc3RvcF9wYykpCiAJewotICAgICAgICAgIGlmIChkZWJ1Z19p bmZydW4pCi0JICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywg ImluZnJ1bjogc3RlcHBpbmcgaW4gZHluYW1pYyBsaW5rZXJcbiIpOworCSAg aWYgKGRlYnVnX2luZnJ1bikKKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorCQkJCSJpbmZydW46IHN0ZXBwaW5nIGluIGR5bmFtaWMg bGlua2VyXG4iKTsKIAkgIGVjcy0+c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50 ID0gMTsKIAkgIGtlZXBfZ29pbmcgKGVjcyk7CiAJICByZXR1cm47CiAJfQog I2VuZGlmCiAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotCSBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHN0ZXAgcGFzdCBkeW5h bWljIGxpbmtlclxuIik7CisJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCAiaW5mcnVuOiBzdGVwIHBhc3QgZHluYW1pYyBsaW5rZXJcbiIpOwog ICAgICAgLyogRWxzZSwgc3RvcCBhbmQgcmVwb3J0IHRoZSBjYXRjaHBvaW50 KHMpIHdob3NlIHRyaWdnZXJpbmcKICAgICAgICAgIGNhdXNlZCB1cyB0byBi ZWdpbiBzdGVwcGluZy4gKi8KICAgICAgIGVjcy0+c3RlcHBpbmdfdGhyb3Vn aF9zb2xpYl9hZnRlcl9jYXRjaCA9IDA7CkBAIC0yODQxLDggKzI4NjIsOCBA QCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdk YmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CiAgIGlmIChzdGVwX3Jl c3VtZV9icmVha3BvaW50KQogICAgIHsKICAgICAgIGlmIChkZWJ1Z19pbmZy dW4pCi0JIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLQkJCSAg ICAgImluZnJ1bjogc3RlcC1yZXN1bWUgYnJlYWtwb2ludCBpcyBpbnNlcnRl ZFxuIik7CisJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJ ICAgICJpbmZydW46IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQgaXMgaW5zZXJ0 ZWRcbiIpOwogCiAgICAgICAvKiBIYXZpbmcgYSBzdGVwLXJlc3VtZSBicmVh a3BvaW50IG92ZXJyaWRlcyBhbnl0aGluZwogICAgICAgICAgZWxzZSBoYXZp bmcgdG8gZG8gd2l0aCBzdGVwcGluZyBjb21tYW5kcyB1bnRpbApAQCAtMjg1 NCw3ICsyODc1LDcgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pN UF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwog ICBpZiAoc3RlcF9yYW5nZV9lbmQgPT0gMCkKICAgICB7CiAgICAgICBpZiAo ZGVidWdfaW5mcnVuKQotCSBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csICJpbmZydW46IG5vIHN0ZXBwaW5nLCBjb250aW51ZVxuIik7CisJZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBubyBzdGVw cGluZywgY29udGludWVcbiIpOwogICAgICAgLyogTGlrZXdpc2UgaWYgd2Ug YXJlbid0IGV2ZW4gc3RlcHBpbmcuICAqLwogICAgICAga2VlcF9nb2luZyAo ZWNzKTsKICAgICAgIHJldHVybjsKQEAgLTI4NjgsMTMgKzI4ODksMTQgQEAg aW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwogICBpZiAoc3RvcF9wYyA+ PSBzdGVwX3JhbmdlX3N0YXJ0ICYmIHN0b3BfcGMgPCBzdGVwX3JhbmdlX2Vu ZCkKICAgICB7CiAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotCSBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHN0ZXBwaW5nIGlu c2lkZSByYW5nZSBbMHglcy0weCVzXVxuIiwKKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisJCQkgICAgImluZnJ1bjogc3RlcHBpbmcgaW5z aWRlIHJhbmdlIFsweCVzLTB4JXNdXG4iLAogCQkJICAgIHBhZGRyX256IChz dGVwX3JhbmdlX3N0YXJ0KSwKIAkJCSAgICBwYWRkcl9ueiAoc3RlcF9yYW5n ZV9lbmQpKTsKIAogICAgICAgLyogV2hlbiBzdGVwcGluZyBiYWNrd2FyZCwg c3RvcCBhdCBiZWdpbm5pbmcgb2YgbGluZSByYW5nZQotCSAodW5sZXMgaXQn cyB0aGUgZnVuY3Rpb24gZW50cnkgcG9pbnQsIGluIHdoaWNoIGNhc2UKLQkg a2VlcCBnb2luZyBiYWNrIHRvIHRoZSBjYWxsIHBvaW50KS4gICovCisgICAg ICAgICAodW5sZXMgaXQncyB0aGUgZnVuY3Rpb24gZW50cnkgcG9pbnQsIGlu IHdoaWNoIGNhc2UKKyAgICAgICAgIGtlZXAgZ29pbmcgYmFjayB0byB0aGUg Y2FsbCBwb2ludCkuICAqLwogICAgICAgaWYgKHN0b3BfcGMgPT0gc3RlcF9y YW5nZV9zdGFydCAmJgogCSAgc3RvcF9wYyAhPSBlY3MtPnN0b3BfZnVuY19z dGFydCAmJgogCSAgdGFyZ2V0X2dldF9leGVjdXRpb25fZGlyZWN0aW9uICgp ID09IEVYRUNfUkVWRVJTRSkKQEAgLTI5MDIsMTMgKzI5MjQsMTQgQEAgaW5m cnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNo X2dldF9sb25nam1wX3RhcmdldClcbiIpOwogI2Vsc2UKICAgICAgICYmIGlu X3NvbGliX2R5bnN5bV9yZXNvbHZlX2NvZGUgKHN0b3BfcGMpCiAjZW5kaWYK LSAgICAgICkKKyAgICApCiAgICAgewogICAgICAgQ09SRV9BRERSIHBjX2Fm dGVyX3Jlc29sdmVyID0KIAlnZGJhcmNoX3NraXBfc29saWJfcmVzb2x2ZXIg KGN1cnJlbnRfZ2RiYXJjaCwgc3RvcF9wYyk7CiAKICAgICAgIGlmIChkZWJ1 Z19pbmZydW4pCi0JIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywg ImluZnJ1bjogc3RlcHBlZCBpbnRvIGR5bnN5bSByZXNvbHZlIGNvZGVcbiIp OworCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAgICAi aW5mcnVuOiBzdGVwcGVkIGludG8gZHluc3ltIHJlc29sdmUgY29kZVxuIik7 CiAKICAgICAgIGlmIChwY19hZnRlcl9yZXNvbHZlcikKIAl7CkBAIC0yOTMx LDcgKzI5NTQsOCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1Q X1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CiAg ICAgICAmJiBnZXRfZnJhbWVfdHlwZSAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkp ID09IFNJR1RSQU1QX0ZSQU1FKQogICAgIHsKICAgICAgIGlmIChkZWJ1Z19p bmZydW4pCi0JIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImlu ZnJ1bjogc3RlcHBlZCBpbnRvIHNpZ25hbCB0cmFtcG9saW5lXG4iKTsKKwlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkgICAgImluZnJ1 bjogc3RlcHBlZCBpbnRvIHNpZ25hbCB0cmFtcG9saW5lXG4iKTsKICAgICAg IC8qIFRoZSBpbmZlcmlvciwgd2hpbGUgZG9pbmcgYSAic3RlcCIgb3IgIm5l eHQiLCBoYXMgZW5kZWQgdXAgaW4KICAgICAgICAgIGEgc2lnbmFsIHRyYW1w b2xpbmUgKGVpdGhlciBieSBhIHNpZ25hbCBiZWluZyBkZWxpdmVyZWQgb3Ig YnkKICAgICAgICAgIHRoZSBzaWduYWwgaGFuZGxlciByZXR1cm5pbmcpLiAg SnVzdCBzaW5nbGUtc3RlcCB1bnRpbCB0aGUKQEAgLTI5NTUsNyArMjk3OSw3 IEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICgh Z2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKICAgICAgIENPUkVf QUREUiByZWFsX3N0b3BfcGM7CiAKICAgICAgIGlmIChkZWJ1Z19pbmZydW4p Ci0JIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjog c3RlcHBlZCBpbnRvIHN1YnJvdXRpbmVcbiIpOworCWZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogc3RlcHBlZCBpbnRvIHN1YnJv dXRpbmVcbiIpOwogCiAgICAgICBpZiAoKHN0ZXBfb3Zlcl9jYWxscyA9PSBT VEVQX09WRVJfTk9ORSkKIAkgIHx8ICgoc3RlcF9yYW5nZV9lbmQgPT0gMSkK QEAgLTI5ODcsMTUgKzMwMTEsMTAgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9T RVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3Rhcmdl dClcbiIpOwogCSAgICAgZ2V0IHRoZXJlLCB3ZSdsbCBuZWVkIHRvIHNpbmds ZS1zdGVwIGJhY2sgdG8gdGhlCiAJICAgICBjYWxsZXIuICAqLwogCi0JICBp ZiAodGFyZ2V0X2dldF9leGVjdXRpb25fZGlyZWN0aW9uICgpID09IEVYRUNf UkVWRVJTRSkKKwkgIGlmICh0YXJnZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rp b24gKCkgPT0gRVhFQ19SRVZFUlNFCisJICAgICAgfHwgUkVDT1JEX0lTX1VT RUQpCiAJICAgIHsKLQkgICAgICAvKiBGSVhNRTogSSdtIG5vdCBzdXJlIGlm IHdlJ3ZlIGhhbmRsZWQgdGhlIGZyYW1lIGZvcgotCQkgcmVjdXJzaW9uLiAg Ki8KLQotCSAgICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2FsOwot CSAgICAgIGluaXRfc2FsICgmc3Jfc2FsKTsKLQkgICAgICBzcl9zYWwucGMg PSBlY3MtPnN0b3BfZnVuY19zdGFydDsKLQkgICAgICBpbnNlcnRfc3RlcF9y ZXN1bWVfYnJlYWtwb2ludF9hdF9zYWwgKHNyX3NhbCwgbnVsbF9mcmFtZV9p ZCk7CisJICAgICAgcmV2ZXJzZV9yZXN1bWVfbmVlZF9zdGVwID0gMTsKIAkg ICAgfQogCSAgZWxzZQogCSAgICBpbnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtw b2ludF9hdF9jYWxsZXIgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKQEAgLTMw MTIsMTcgKzMwMzEsMTcgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9O R0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIp OwogICAgICAgcmVhbF9zdG9wX3BjID0gc2tpcF9sYW5ndWFnZV90cmFtcG9s aW5lIChnZXRfY3VycmVudF9mcmFtZSAoKSwgc3RvcF9wYyk7CiAgICAgICBp ZiAocmVhbF9zdG9wX3BjID09IDApCiAJcmVhbF9zdG9wX3BjID0gZ2RiYXJj aF9za2lwX3RyYW1wb2xpbmVfY29kZQotCQkJIChjdXJyZW50X2dkYmFyY2gs IGdldF9jdXJyZW50X2ZyYW1lICgpLCBzdG9wX3BjKTsKKwkgIChjdXJyZW50 X2dkYmFyY2gsIGdldF9jdXJyZW50X2ZyYW1lICgpLCBzdG9wX3BjKTsKICAg ICAgIGlmIChyZWFsX3N0b3BfcGMgIT0gMCkKIAllY3MtPnN0b3BfZnVuY19z dGFydCA9IHJlYWxfc3RvcF9wYzsKIAogICAgICAgaWYgKAogI2lmZGVmIElO X1NPTElCX0RZTlNZTV9SRVNPTFZFX0NPREUKLQkgIElOX1NPTElCX0RZTlNZ TV9SRVNPTFZFX0NPREUgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KQorCSAgIElO X1NPTElCX0RZTlNZTV9SRVNPTFZFX0NPREUgKGVjcy0+c3RvcF9mdW5jX3N0 YXJ0KQogI2Vsc2UKLQkgIGluX3NvbGliX2R5bnN5bV9yZXNvbHZlX2NvZGUg KGVjcy0+c3RvcF9mdW5jX3N0YXJ0KQorCSAgIGluX3NvbGliX2R5bnN5bV9y ZXNvbHZlX2NvZGUgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KQogI2VuZGlmCi0p CisJKQogCXsKIAkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2FsOwog CSAgaW5pdF9zYWwgKCZzcl9zYWwpOwpAQCAtMzA3MSw2ICszMDkwLDEwIEBA IGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2Ri YXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKIAkgIHNyX3NhbC5wYyA9 IGVjcy0+c3RvcF9mdW5jX3N0YXJ0OwogCSAgaW5zZXJ0X3N0ZXBfcmVzdW1l X2JyZWFrcG9pbnRfYXRfc2FsIChzcl9zYWwsIG51bGxfZnJhbWVfaWQpOwog CX0KKyAgICAgIGVsc2UgaWYgKFJFQ09SRF9JU19VU0VEKQorCXsKKwkgIHJl dmVyc2VfcmVzdW1lX25lZWRfc3RlcCA9IDE7CisJfQogICAgICAgZWxzZQog CXsKIAkgIC8qIFNldCBhIGJyZWFrcG9pbnQgYXQgY2FsbGVlJ3MgcmV0dXJu IGFkZHJlc3MgKHRoZSBhZGRyZXNzCkBAIC0zMDg5LDEwICszMTEyLDExIEBA IGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2Ri YXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKICAgICAgIC8qIERldGVy bWluZSB3aGVyZSB0aGlzIHRyYW1wb2xpbmUgcmV0dXJucy4gICovCiAgICAg ICBDT1JFX0FERFIgcmVhbF9zdG9wX3BjOwogICAgICAgcmVhbF9zdG9wX3Bj ID0gZ2RiYXJjaF9za2lwX3RyYW1wb2xpbmVfY29kZQotCQkgICAgICAgKGN1 cnJlbnRfZ2RiYXJjaCwgZ2V0X2N1cnJlbnRfZnJhbWUgKCksIHN0b3BfcGMp OworCShjdXJyZW50X2dkYmFyY2gsIGdldF9jdXJyZW50X2ZyYW1lICgpLCBz dG9wX3BjKTsKIAogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLQkgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBzdGVwcGVkIGlu dG8gc29saWIgcmV0dXJuIHRyYW1wXG4iKTsKKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisJCQkgICAgImluZnJ1bjogc3RlcHBlZCBpbnRv IHNvbGliIHJldHVybiB0cmFtcFxuIik7CiAKICAgICAgIC8qIE9ubHkgcHJv Y2VlZCB0aHJvdWdoIGlmIHdlIGtub3cgd2hlcmUgaXQncyBnb2luZy4gICov CiAgICAgICBpZiAocmVhbF9zdG9wX3BjKQpAQCAtMzEyMiwxMSArMzE0Niwx OSBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAo IWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CiAgICAgIHRoZSB0 cmFtcG9saW5lIHByb2Nlc3NpbmcgbG9naWMsIGhvd2V2ZXIsIHRoZXJlIGFy ZSBzb21lIHRyYW1wb2xpbmVzIAogICAgICB0aGF0IGhhdmUgbm8gbmFtZXMs IHNvIHdlIHNob3VsZCBkbyB0cmFtcG9saW5lIGhhbmRsaW5nIGZpcnN0LiAg Ki8KICAgaWYgKHN0ZXBfb3Zlcl9jYWxscyA9PSBTVEVQX09WRVJfVU5ERUJV R0dBQkxFCi0gICAgICAmJiBlY3MtPnN0b3BfZnVuY19uYW1lID09IE5VTEwK LSAgICAgICYmIGVjcy0+c2FsLmxpbmUgPT0gMCkKKyAgICAgICYmIGVjcy0+ c3RvcF9mdW5jX25hbWUgPT0gTlVMTCAmJiBlY3MtPnNhbC5saW5lID09IDAp CiAgICAgewogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLQkgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBzdGVwcGVkIGludG8g dW5kZWJ1Z2dhYmxlIGZ1bmN0aW9uXG4iKTsKKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisJCQkgICAgImluZnJ1bjogc3RlcHBlZCBpbnRv IHVuZGVidWdnYWJsZSBmdW5jdGlvblxuIik7CisKKyAgICAgIGlmICh0YXJn ZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rpb24gKCkgPT0gRVhFQ19SRVZFUlNF IHx8IFJFQ09SRF9JU19VU0VEKQorCXsKKwkgIHJldmVyc2VfcmVzdW1lX25l ZWRfc3RlcCA9IDE7CisJICBrZWVwX2dvaW5nIChlY3MpOworCSAgcmV0dXJu OworCX0KKwogCiAgICAgICAvKiBUaGUgaW5mZXJpb3IganVzdCBzdGVwcGVk IGludG8sIG9yIHJldHVybmVkIHRvLCBhbgogICAgICAgICAgdW5kZWJ1Z2dh YmxlIGZ1bmN0aW9uICh3aGVyZSB0aGVyZSBpcyBubyBkZWJ1Z2dpbmcgaW5m b3JtYXRpb24KQEAgLTMxNjIsNyArMzE5NCw3IEBAIGluZnJ1bjogQlBTVEFU X1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2pt cF90YXJnZXQpXG4iKTsKICAgICAgIC8qIEl0IGlzIHN0ZXBpIG9yIG5leHRp LiAgV2UgYWx3YXlzIHdhbnQgdG8gc3RvcCBzdGVwcGluZyBhZnRlcgogICAg ICAgICAgb25lIGluc3RydWN0aW9uLiAgKi8KICAgICAgIGlmIChkZWJ1Z19p bmZydW4pCi0JIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImlu ZnJ1bjogc3RlcGkvbmV4dGlcbiIpOworCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgImluZnJ1bjogc3RlcGkvbmV4dGlcbiIpOwogICAgICAg c3RvcF9zdGVwID0gMTsKICAgICAgIHByaW50X3N0b3BfcmVhc29uIChFTkRf U1RFUFBJTkdfUkFOR0UsIDApOwogICAgICAgc3RvcF9zdGVwcGluZyAoZWNz KTsKQEAgLTMxNzYsMTQgKzMyMDgsNTkgQEAgaW5mcnVuOiBCUFNUQVRfV0hB VF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3Rh cmdldClcbiIpOwogICAgICAgICAgd2hlbiB3ZSBkbyAicyIgaW4gYSBmdW5j dGlvbiB3aXRoIG5vIGxpbmUgbnVtYmVycywKICAgICAgICAgIG9yIGNhbiB0 aGlzIGhhcHBlbiBhcyBhIHJlc3VsdCBvZiBhIHJldHVybiBvciBsb25nam1w PykuICAqLwogICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLQkgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiaW5mcnVuOiBubyBsaW5lIG51bWJl ciBpbmZvXG4iKTsKKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICJpbmZydW46IG5vIGxpbmUgbnVtYmVyIGluZm9cbiIpOworCisgICAgICBp ZiAoKHN0ZXBfb3Zlcl9jYWxscyA9PSBTVEVQX09WRVJfQUxMCisJICAgJiYg dGFyZ2V0X2dldF9leGVjdXRpb25fZGlyZWN0aW9uICgpID09IEVYRUNfUkVW RVJTRSkKKwkgIHx8IFJFQ09SRF9JU19VU0VEKQorCXsKKwkgIHJldmVyc2Vf cmVzdW1lX25lZWRfc3RlcCA9IDE7CisJICBrZWVwX2dvaW5nIChlY3MpOwor CSAgcmV0dXJuOworCX0KKwogICAgICAgc3RvcF9zdGVwID0gMTsKICAgICAg IHByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJTkdfUkFOR0UsIDApOwog ICAgICAgc3RvcF9zdGVwcGluZyAoZWNzKTsKICAgICAgIHJldHVybjsKICAg ICB9CiAKLSAgaWYgKChzdG9wX3BjID09IGVjcy0+c2FsLnBjKQorICBpZiAo dGFyZ2V0X2dldF9leGVjdXRpb25fZGlyZWN0aW9uICgpID09IEVYRUNfUkVW RVJTRQorICAgICAgJiYgZnJhbWVfaWRfZXEgKGdldF9mcmFtZV9pZCAoZ2V0 X2N1cnJlbnRfZnJhbWUgKCkpLAorCQkgICAgICBzdGVwX3ByZXZfZnJhbWVf aWQpKQorICAgIHsKKyAgICAgIGlmIChkZWJ1Z19pbmZydW4pCisJeworCSAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJICAgICAgImlu ZnJ1bjogcmV0dXJuIHRvIHRoZSBwcmV2IGZ1bmN0aW9uXG4iKTsKKwl9Cisg ICAgICBzdG9wX3N0ZXAgPSAxOworICAgICAgcHJpbnRfc3RvcF9yZWFzb24g KEVORF9TVEVQUElOR19SQU5HRSwgMCk7CisgICAgICBzdG9wX3N0ZXBwaW5n IChlY3MpOworICAgICAgcmV0dXJuOworICAgIH0KKworICBpZiAoIWZyYW1l X2lkX2VxIChnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKSwg c3RlcF9mcmFtZV9pZCkKKyAgICAgICYmICh0YXJnZXRfZ2V0X2V4ZWN1dGlv bl9kaXJlY3Rpb24gKCkgPT0gRVhFQ19SRVZFUlNFCisJICB8fCBSRUNPUkRf SVNfVVNFRCkpCisgICAgeworICAgICAgaWYgKChzdG9wX3BjICE9IGVjcy0+ c2FsLnBjCisJICAgJiYgdGFyZ2V0X2dldF9leGVjdXRpb25fZGlyZWN0aW9u ICgpID09IEVYRUNfUkVWRVJTRSkKKwkgIHx8IChzdGVwX292ZXJfY2FsbHMg PT0gU1RFUF9PVkVSX0FMTCAmJiBSRUNPUkRfSVNfVVNFRCkpCisJeworCSAg aWYgKGRlYnVnX2luZnJ1bikKKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorCQkJCSJpbmZydW46IG1heWJlIHN0ZXBwZWQgaW50byBz dWJyb3V0aW5lXG4iKTsKKwkgIHJldmVyc2VfcmVzdW1lX25lZWRfc3RlcCA9 IDE7CisJICBrZWVwX2dvaW5nIChlY3MpOworCSAgcmV0dXJuOworCX0KKyAg ICB9CisKKyAgaWYgKCgoc3RvcF9wYyA9PSBlY3MtPnNhbC5wYworCSYmIHRh cmdldF9nZXRfZXhlY3V0aW9uX2RpcmVjdGlvbiAoKSAhPSBFWEVDX1JFVkVS U0UpCisgICAgICAgfHwgKHN0b3BfcGMgPj0gZWNzLT5zYWwucGMgJiYgc3Rv cF9wYyA8IGVjcy0+c2FsLmVuZAorCSAgICYmIHRhcmdldF9nZXRfZXhlY3V0 aW9uX2RpcmVjdGlvbiAoKSA9PSBFWEVDX1JFVkVSU0UpKQogICAgICAgJiYg KGVjcy0+Y3VycmVudF9saW5lICE9IGVjcy0+c2FsLmxpbmUKIAkgIHx8IGVj cy0+Y3VycmVudF9zeW10YWIgIT0gZWNzLT5zYWwuc3ltdGFiKSkKICAgICB7 CkBAIC0zMTkyLDcgKzMyNjksOCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NF VF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0 KVxuIik7CiAgICAgICAgICBUaGF0IGlzIHNhaWQgdG8gbWFrZSB0aGluZ3Mg bGlrZSBmb3IgKDs7KSBzdGF0ZW1lbnRzIHdvcmsKICAgICAgICAgIGJldHRl ci4gICovCiAgICAgICBpZiAoZGVidWdfaW5mcnVuKQotCSBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHN0ZXBwZWQgdG8gYSBk aWZmZXJlbnQgbGluZVxuIik7CisJZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAorCQkJICAgICJpbmZydW46IHN0ZXBwZWQgdG8gYSBkaWZmZXJl bnQgbGluZVxuIik7CiAgICAgICBzdG9wX3N0ZXAgPSAxOwogICAgICAgcHJp bnRfc3RvcF9yZWFzb24gKEVORF9TVEVQUElOR19SQU5HRSwgMCk7CiAgICAg ICBzdG9wX3N0ZXBwaW5nIChlY3MpOwpAQCAtMzI0MCw3ICszMzE4LDcgQEAg aW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwogICB9CiAKICAgaWYgKGRl YnVnX2luZnJ1bikKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCAiaW5mcnVuOiBrZWVwIGdvaW5nXG4iKTsKKyAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IGtlZXAgZ29pbmdcbiIp OwogICBrZWVwX2dvaW5nIChlY3MpOwogfQogCkBAIC0zMjUyLDcgKzMzMzAs NyBAQCBjdXJyZW50bHlfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKQogICByZXR1cm4gKCgoc3RlcF9yYW5nZV9lbmQg JiYgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQogCSAgIHx8IHN0 ZXBwaW5nX292ZXJfYnJlYWtwb2ludCkKIAkgIHx8IGVjcy0+c3RlcHBpbmdf dGhyb3VnaF9zb2xpYl9hZnRlcl9jYXRjaAotCSAgfHwgYnBzdGF0X3Nob3Vs ZF9zdGVwICgpKTsKKwkgIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSB8fCBy ZXZlcnNlX3Jlc3VtZV9uZWVkX3N0ZXApOwogfQogCiAvKiBTdWJyb3V0aW5l IGNhbGwgd2l0aCBzb3VyY2UgY29kZSB3ZSBzaG91bGQgbm90IHN0ZXAgb3Zl ci4gIERvIHN0ZXAKQEAgLTMyNjcsNyArMzM0NSw3IEBAIHN0ZXBfaW50b19m dW5jdGlvbiAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3Mp CiAgIHMgPSBmaW5kX3BjX3N5bXRhYiAoc3RvcF9wYyk7CiAgIGlmIChzICYm IHMtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FzbSkKICAgICBlY3MtPnN0b3Bf ZnVuY19zdGFydCA9IGdkYmFyY2hfc2tpcF9wcm9sb2d1ZQotCQkJICAgICAo Y3VycmVudF9nZGJhcmNoLCBlY3MtPnN0b3BfZnVuY19zdGFydCk7CisgICAg ICAoY3VycmVudF9nZGJhcmNoLCBlY3MtPnN0b3BfZnVuY19zdGFydCk7CiAK ICAgaWYgKHRhcmdldF9nZXRfZXhlY3V0aW9uX2RpcmVjdGlvbiAoKSA9PSBF WEVDX1JFVkVSU0UpCiAgICAgewpAQCAtMzI4MywxMCArMzM2MSwxMCBAQCBz dGVwX2ludG9fZnVuY3Rpb24gKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9z dGF0ZSAqZWNzKQogCSAgcmV0dXJuOwogCX0KICAgICAgIC8qIEVsc2UganVz dCByZXNldCB0aGUgc3RlcCByYW5nZSBhbmQga2VlcCBnb2luZy4KLQkgTm8g c3RlcC1yZXN1bWUgYnJlYWtwb2ludCwgdGhleSBkb24ndCB3b3JrIGZvcgot CSBlcGlsb2d1ZXMsIHdoaWNoIGNhbiBoYXZlIG11bHRpcGxlIGVudHJ5IHBh dGhzLiAgKi8KKyAgICAgICAgIE5vIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQs IHRoZXkgZG9uJ3Qgd29yayBmb3IKKyAgICAgICAgIGVwaWxvZ3Vlcywgd2hp Y2ggY2FuIGhhdmUgbXVsdGlwbGUgZW50cnkgcGF0aHMuICAqLwogICAgICAg c3RlcF9yYW5nZV9zdGFydCA9IGVjcy0+c2FsLnBjOwotICAgICAgc3RlcF9y YW5nZV9lbmQgICA9IGVjcy0+c2FsLmVuZDsKKyAgICAgIHN0ZXBfcmFuZ2Vf ZW5kID0gZWNzLT5zYWwuZW5kOwogICAgICAga2VlcF9nb2luZyAoZWNzKTsK ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzg5LDcgKzM0NjcsNyBAQCBp bnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtwb2ludF9hdF9mcmFtZSAoc3RydWN0 IGZyYW1lX2luZm8gKnJldHVybl9mcmFtZSkKICAgaW5pdF9zYWwgKCZzcl9z YWwpOwkJLyogaW5pdGlhbGl6ZSB0byB6ZXJvcyAqLwogCiAgIHNyX3NhbC5w YyA9IGdkYmFyY2hfYWRkcl9iaXRzX3JlbW92ZQotCQkoY3VycmVudF9nZGJh cmNoLCBnZXRfZnJhbWVfcGMgKHJldHVybl9mcmFtZSkpOworICAgIChjdXJy ZW50X2dkYmFyY2gsIGdldF9mcmFtZV9wYyAocmV0dXJuX2ZyYW1lKSk7CiAg IHNyX3NhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzcl9zYWwucGMp OwogCiAgIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAo c3Jfc2FsLCBnZXRfZnJhbWVfaWQgKHJldHVybl9mcmFtZSkpOwpAQCAtMzQy Miw3ICszNTAwLDcgQEAgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRf YXRfY2FsbGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKICAg aW5pdF9zYWwgKCZzcl9zYWwpOwkJLyogaW5pdGlhbGl6ZSB0byB6ZXJvcyAq LwogCiAgIHNyX3NhbC5wYyA9IGdkYmFyY2hfYWRkcl9iaXRzX3JlbW92ZQot CQkoY3VycmVudF9nZGJhcmNoLCBmcmFtZV9wY191bndpbmQgKG5leHRfZnJh bWUpKTsKKyAgICAoY3VycmVudF9nZGJhcmNoLCBmcmFtZV9wY191bndpbmQg KG5leHRfZnJhbWUpKTsKICAgc3Jfc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292 ZXJsYXkgKHNyX3NhbC5wYyk7CiAKICAgaW5zZXJ0X3N0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnRfYXRfc2FsIChzcl9zYWwsIGZyYW1lX3Vud2luZF9pZCAobmV4 dF9mcmFtZSkpOwpAQCAtMzQ5MSwxMyArMzU2OSwxMyBAQCBrZWVwX2dvaW5n IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKIAogICAg ICAgICAgV2UncmUgZ29pbmcgdG8gcnVuIHRoaXMgYmFieSBub3chICAKIAot CSBOb3RlIHRoYXQgaW5zZXJ0X2JyZWFrcG9pbnRzIHdvbid0IHRyeSB0byBy ZS1pbnNlcnQKLQkgYWxyZWFkeSBpbnNlcnRlZCBicmVha3BvaW50cy4gIFRo ZXJlZm9yZSwgd2UgZG9uJ3QKLQkgY2FyZSBpZiBicmVha3BvaW50cyB3ZXJl IGFscmVhZHkgaW5zZXJ0ZWQsIG9yIG5vdC4gICovCi0gICAgICAKKyAgICAg ICAgIE5vdGUgdGhhdCBpbnNlcnRfYnJlYWtwb2ludHMgd29uJ3QgdHJ5IHRv IHJlLWluc2VydAorICAgICAgICAgYWxyZWFkeSBpbnNlcnRlZCBicmVha3Bv aW50cy4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKKyAgICAgICAgIGNhcmUgaWYg YnJlYWtwb2ludHMgd2VyZSBhbHJlYWR5IGluc2VydGVkLCBvciBub3QuICAq LworCiAgICAgICBpZiAoZWNzLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQp CiAJewotCSAgaWYgKCEgdXNlX2Rpc3BsYWNlZF9zdGVwcGluZyAoY3VycmVu dF9nZGJhcmNoKSkKKwkgIGlmICghdXNlX2Rpc3BsYWNlZF9zdGVwcGluZyAo Y3VycmVudF9nZGJhcmNoKSkKIAkgICAgLyogU2luY2Ugd2UgY2FuJ3QgZG8g YSBkaXNwbGFjZWQgc3RlcCwgd2UgaGF2ZSB0byByZW1vdmUKIAkgICAgICAg dGhlIGJyZWFrcG9pbnQgd2hpbGUgd2Ugc3RlcCBpdC4gIFRvIGtlZXAgdGhp bmdzCiAJICAgICAgIHNpbXBsZSwgd2UgcmVtb3ZlIHRoZW0gYWxsLiAgKi8K QEAgLTM1MDksOSArMzU4Nyw5IEBAIGtlZXBfZ29pbmcgKHN0cnVjdCBleGVj dXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogCSAgLyogU3RvcCBzdGVwcGlu ZyB3aGVuIGluc2VydGluZyBicmVha3BvaW50cwogCSAgICAgaGFzIGZhaWxl ZC4gICovCiAJICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQot CSAgICB7Ci0JICAgICAgaW5zZXJ0X2JyZWFrcG9pbnRzICgpOwotCSAgICB9 CisJICB7CisJICAgIGluc2VydF9icmVha3BvaW50cyAoKTsKKwkgIH0KIAkg IGlmIChlLnJlYXNvbiA8IDApCiAJICAgIHsKIAkgICAgICBzdG9wX3N0ZXBw aW5nIChlY3MpOwpAQCAtMzYxOSw3ICszNjk3LDcgQEAgcHJpbnRfc3RvcF9y ZWFzb24gKGVudW0gaW5mZXJpb3Jfc3RvcF9yZWFzb24gc3RvcF9yZWFzb24s IGludCBzdG9wX2luZm8pCiAgICAgICBpZiAoc3RvcF9pbmZvKQogCXsKIAkg IGlmICh1aV9vdXRfaXNfbWlfbGlrZV9wICh1aW91dCkpCi0JICAgIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicmVhc29uIiwgCisJICAgIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicmVhc29uIiwKIAkJCQkgYXN5bmNf cmVhc29uX2xvb2t1cCAoRVhFQ19BU1lOQ19FWElURUQpKTsKIAkgIHVpX291 dF90ZXh0ICh1aW91dCwgIlxuUHJvZ3JhbSBleGl0ZWQgd2l0aCBjb2RlICIp OwogCSAgdWlfb3V0X2ZpZWxkX2ZtdCAodWlvdXQsICJleGl0LWNvZGUiLCAi MCVvIiwKQEAgLTM3NzMsOCArMzg1MSw4IEBAIEZ1cnRoZXIgZXhlY3V0aW9u IGlzIHByb2JhYmx5IGltcG9zc2libGUuXG4iKSk7CiAgICAgICAgICB3aGF0 IHRvIHByaW50LCBiYXNlZCBvbiB0aGUgZXZlbnQocykgdGhhdCBqdXN0IG9j Y3VycmVkLiAqLwogCiAgICAgICAvKiBJZiAtLWJhdGNoLXNpbGVudCBpcyBl bmFibGVkIHRoZW4gdGhlcmUncyBubyBuZWVkIHRvIHByaW50IHRoZSBjdXJy ZW50Ci0JIHNvdXJjZSBsb2NhdGlvbiwgYW5kIHRvIHRyeSByaXNrcyBjYXVz aW5nIGFuIGVycm9yIG1lc3NhZ2UgYWJvdXQKLQkgbWlzc2luZyBzb3VyY2Ug ZmlsZXMuICAqLworICAgICAgICAgc291cmNlIGxvY2F0aW9uLCBhbmQgdG8g dHJ5IHJpc2tzIGNhdXNpbmcgYW4gZXJyb3IgbWVzc2FnZSBhYm91dAorICAg ICAgICAgbWlzc2luZyBzb3VyY2UgZmlsZXMuICAqLwogICAgICAgaWYgKHN0 b3BfcHJpbnRfZnJhbWUgJiYgIWJhdGNoX3NpbGVudCkKIAl7CiAJICBpbnQg YnBzdGF0X3JldDsKQEAgLTM3ODYsMTIgKzM4NjQsMTMgQEAgRnVydGhlciBl eGVjdXRpb24gaXMgcHJvYmFibHkgaW1wb3NzaWJsZS5cbiIpKTsKIAkgICAg ewogCSAgICBjYXNlIFBSSU5UX1VOS05PV046CiAJICAgICAgLyogSWYgd2Ug aGFkIGhpdCBhIHNoYXJlZCBsaWJyYXJ5IGV2ZW50IGJyZWFrcG9pbnQsCi0J CSBicHN0YXRfcHJpbnQgd291bGQgcHJpbnQgb3V0IHRoaXMgbWVzc2FnZS4g IElmIHdlIGhpdAotCQkgYW4gT1MtbGV2ZWwgc2hhcmVkIGxpYnJhcnkgZXZl bnQsIGRvIHRoZSBzYW1lCi0JCSB0aGluZy4gICovCisJICAgICAgICAgYnBz dGF0X3ByaW50IHdvdWxkIHByaW50IG91dCB0aGlzIG1lc3NhZ2UuICBJZiB3 ZSBoaXQKKwkgICAgICAgICBhbiBPUy1sZXZlbCBzaGFyZWQgbGlicmFyeSBl dmVudCwgZG8gdGhlIHNhbWUKKwkgICAgICAgICB0aGluZy4gICovCiAJICAg ICAgaWYgKGxhc3Qua2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfTE9BREVEKQog CQl7Ci0JCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJTdG9wcGVkIGR1ZSB0byBz aGFyZWQgbGlicmFyeSBldmVudFxuIikpOworCQkgIHByaW50Zl9maWx0ZXJl ZCAoXworCQkJCSAgICgiU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkg ZXZlbnRcbiIpKTsKIAkJICBzb3VyY2VfZmxhZyA9IFNSQ19MSU5FOwkvKiBz b21ldGhpbmcgYm9ndXMgKi8KIAkJICBkb19mcmFtZV9wcmludGluZyA9IDA7 CiAJCSAgYnJlYWs7CkBAIC0zODQ3LDcgKzM5MjYsNyBAQCBGdXJ0aGVyIGV4 ZWN1dGlvbiBpcyBwcm9iYWJseSBpbXBvc3NpYmxlLlxuIikpOwogCXJlZ2Nh Y2hlX3hmcmVlIChzdG9wX3JlZ2lzdGVycyk7CiAKICAgICAgIC8qIE5COiBU aGUgY29weSBnb2VzIHRocm91Z2ggdG8gdGhlIHRhcmdldCBwaWNraW5nIHVw IHRoZSB2YWx1ZSBvZgotCSBhbGwgdGhlIHJlZ2lzdGVycy4gICovCisgICAg ICAgICBhbGwgdGhlIHJlZ2lzdGVycy4gICovCiAgICAgICBzdG9wX3JlZ2lz dGVycyA9IHJlZ2NhY2hlX2R1cCAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkp OwogICAgIH0KIApAQCAtNDA3MCw3ICs0MTQ5LDggQEAgaGFuZGxlX2NvbW1h bmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKIAkgIGVsc2UKIAkgICAg ewogCSAgICAgIC8qIE5vdCBhIG51bWJlciBhbmQgbm90IGEgcmVjb2duaXpl ZCBmbGFnIHdvcmQgPT4gY29tcGxhaW4uICAqLwotCSAgICAgIGVycm9yIChf KCJVbnJlY29nbml6ZWQgb3IgYW1iaWd1b3VzIGZsYWcgd29yZDogXCIlc1wi LiIpLCAqYXJndik7CisJICAgICAgZXJyb3IgKF8oIlVucmVjb2duaXplZCBv ciBhbWJpZ3VvdXMgZmxhZyB3b3JkOiBcIiVzXCIuIiksCisJCSAgICAgKmFy Z3YpOwogCSAgICB9CiAJfQogCkBAIC00MjM0LDcgKzQzMTQsOCBAQCBzaWdu YWxzX2luZm8gKGNoYXIgKnNpZ251bV9leHAsIGludCBmcm9tX3R0eSkKIAlz aWdfcHJpbnRfaW5mbyAob3Vyc2lnKTsKICAgICB9CiAKLSAgcHJpbnRmX2Zp bHRlcmVkIChfKCJcblVzZSB0aGUgXCJoYW5kbGVcIiBjb21tYW5kIHRvIGNo YW5nZSB0aGVzZSB0YWJsZXMuXG4iKSk7CisgIHByaW50Zl9maWx0ZXJlZCAo XworCQkgICAoIlxuVXNlIHRoZSBcImhhbmRsZVwiIGNvbW1hbmQgdG8gY2hh bmdlIHRoZXNlIHRhYmxlcy5cbiIpKTsKIH0KIAwKIHN0cnVjdCBpbmZlcmlv cl9zdGF0dXMKQEAgLTQyNjgsOCArNDM0OSw4IEBAIHN0cnVjdCBpbmZlcmlv cl9zdGF0dXMKIH07CiAKIHZvaWQKLXdyaXRlX2luZmVyaW9yX3N0YXR1c19y ZWdpc3RlciAoc3RydWN0IGluZmVyaW9yX3N0YXR1cyAqaW5mX3N0YXR1cywg aW50IHJlZ25vLAotCQkJCUxPTkdFU1QgdmFsKQord3JpdGVfaW5mZXJpb3Jf c3RhdHVzX3JlZ2lzdGVyIChzdHJ1Y3QgaW5mZXJpb3Jfc3RhdHVzICppbmZf c3RhdHVzLAorCQkJCWludCByZWdubywgTE9OR0VTVCB2YWwpCiB7CiAgIGlu dCBzaXplID0gcmVnaXN0ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCByZWdu byk7CiAgIHZvaWQgKmJ1ZiA9IGFsbG9jYSAoc2l6ZSk7CkBAIC00NjA3LDE4 ICs0Njg4LDEzIEBAIG9mIHRoZSBwcm9ncmFtIHN0b3BzLiIpLCAmY21kbGlz dCk7CiAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoImluZnJ1biIsIGNs YXNzX21haW50ZW5hbmNlLCAmZGVidWdfaW5mcnVuLCBfKCJcCiBTZXQgaW5m ZXJpb3IgZGVidWdnaW5nLiIpLCBfKCJcCiBTaG93IGluZmVyaW9yIGRlYnVn Z2luZy4iKSwgXygiXAotV2hlbiBub24temVybywgaW5mZXJpb3Igc3BlY2lm aWMgZGVidWdnaW5nIGlzIGVuYWJsZWQuIiksCi0JCQkgICAgTlVMTCwKLQkJ CSAgICBzaG93X2RlYnVnX2luZnJ1biwKLQkJCSAgICAmc2V0ZGVidWdsaXN0 LCAmc2hvd2RlYnVnbGlzdCk7CitXaGVuIG5vbi16ZXJvLCBpbmZlcmlvciBz cGVjaWZpYyBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4iKSwgTlVMTCwgc2hvd19k ZWJ1Z19pbmZydW4sICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsK IAogICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImRpc3BsYWNlZCIsIGNs YXNzX21haW50ZW5hbmNlLCAmZGVidWdfZGlzcGxhY2VkLCBfKCJcCiBTZXQg ZGlzcGxhY2VkIHN0ZXBwaW5nIGRlYnVnZ2luZy4iKSwgXygiXAogU2hvdyBk aXNwbGFjZWQgc3RlcHBpbmcgZGVidWdnaW5nLiIpLCBfKCJcCiBXaGVuIG5v bi16ZXJvLCBkaXNwbGFjZWQgc3RlcHBpbmcgc3BlY2lmaWMgZGVidWdnaW5n IGlzIGVuYWJsZWQuIiksCi0JCQkgICAgTlVMTCwKLQkJCSAgICBzaG93X2Rl YnVnX2Rpc3BsYWNlZCwKLQkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2Rl YnVnbGlzdCk7CisJCQkgICBOVUxMLCBzaG93X2RlYnVnX2Rpc3BsYWNlZCwg JnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOwogCiAgIG51bXNpZ3Mg PSAoaW50KSBUQVJHRVRfU0lHTkFMX0xBU1Q7CiAgIHNpZ25hbF9zdG9wID0g KHVuc2lnbmVkIGNoYXIgKikgeG1hbGxvYyAoc2l6ZW9mIChzaWduYWxfc3Rv cFswXSkgKiBudW1zaWdzKTsKQEAgLTQ2NzMsMTAgKzQ3NDksNyBAQCBTZXQg c3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4iKSwgXygiXAog U2hvdyBzdG9wcGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiIpLCBf KCJcCiBJZiBub256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhl IHVzZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwKIG5vdGlmaWVzIGdk YiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMuICBUaGUgbW9zdCBjb21tb24g ZXZlbnQgb2YgaW50ZXJlc3RcblwKLXRvIHRoZSB1c2VyIHdvdWxkIGJlIGxv YWRpbmcvdW5sb2FkaW5nIG9mIGEgbmV3IGxpYnJhcnkuIiksCi0JCQkgICAg TlVMTCwKLQkJCSAgICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAotCQkJ ICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwordG8gdGhlIHVzZXIgd291bGQg YmUgbG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwgTlVM TCwgc2hvd19zdG9wX29uX3NvbGliX2V2ZW50cywgJnNldGxpc3QsICZzaG93 bGlzdCk7CiAKICAgYWRkX3NldHNob3dfZW51bV9jbWQgKCJmb2xsb3ctZm9y ay1tb2RlIiwgY2xhc3NfcnVuLAogCQkJZm9sbG93X2ZvcmtfbW9kZV9raW5k X25hbWVzLApAQCAtNDY4NywyMyArNDc2MCwxNyBAQCBBIGZvcmsgb3IgdmZv cmsgY3JlYXRlcyBhIG5ldyBwcm9jZXNzLiAgZm9sbG93LWZvcmstbW9kZSBj YW4gYmU6XG5cCiAgIHBhcmVudCAgLSB0aGUgb3JpZ2luYWwgcHJvY2VzcyBp cyBkZWJ1Z2dlZCBhZnRlciBhIGZvcmtcblwKICAgY2hpbGQgICAtIHRoZSBu ZXcgcHJvY2VzcyBpcyBkZWJ1Z2dlZCBhZnRlciBhIGZvcmtcblwKIFRoZSB1 bmZvbGxvd2VkIHByb2Nlc3Mgd2lsbCBjb250aW51ZSB0byBydW4uXG5cCi1C eSBkZWZhdWx0LCB0aGUgZGVidWdnZXIgd2lsbCBmb2xsb3cgdGhlIHBhcmVu dCBwcm9jZXNzLiIpLAotCQkJTlVMTCwKLQkJCXNob3dfZm9sbG93X2Zvcmtf bW9kZV9zdHJpbmcsCi0JCQkmc2V0bGlzdCwgJnNob3dsaXN0KTsKK0J5IGRl ZmF1bHQsIHRoZSBkZWJ1Z2dlciB3aWxsIGZvbGxvdyB0aGUgcGFyZW50IHBy b2Nlc3MuIiksIE5VTEwsIHNob3dfZm9sbG93X2ZvcmtfbW9kZV9zdHJpbmcs ICZzZXRsaXN0LCAmc2hvd2xpc3QpOwogCi0gIGFkZF9zZXRzaG93X2VudW1f Y21kICgic2NoZWR1bGVyLWxvY2tpbmciLCBjbGFzc19ydW4sIAotCQkJc2No ZWR1bGVyX2VudW1zLCAmc2NoZWR1bGVyX21vZGUsIF8oIlwKKyAgYWRkX3Nl dHNob3dfZW51bV9jbWQgKCJzY2hlZHVsZXItbG9ja2luZyIsIGNsYXNzX3J1 biwgc2NoZWR1bGVyX2VudW1zLCAmc2NoZWR1bGVyX21vZGUsIF8oIlwKIFNl dCBtb2RlIGZvciBsb2NraW5nIHNjaGVkdWxlciBkdXJpbmcgZXhlY3V0aW9u LiIpLCBfKCJcCiBTaG93IG1vZGUgZm9yIGxvY2tpbmcgc2NoZWR1bGVyIGR1 cmluZyBleGVjdXRpb24uIiksIF8oIlwKIG9mZiAgPT0gbm8gbG9ja2luZyAo dGhyZWFkcyBtYXkgcHJlZW1wdCBhdCBhbnkgdGltZSlcblwKIG9uICAgPT0g ZnVsbCBsb2NraW5nIChubyB0aHJlYWQgZXhjZXB0IHRoZSBjdXJyZW50IHRo cmVhZCBtYXkgcnVuKVxuXAogc3RlcCA9PSBzY2hlZHVsZXIgbG9ja2VkIGR1 cmluZyBldmVyeSBzaW5nbGUtc3RlcCBvcGVyYXRpb24uXG5cCiAJSW4gdGhp cyBtb2RlLCBubyBvdGhlciB0aHJlYWQgbWF5IHJ1biBkdXJpbmcgYSBzdGVw IGNvbW1hbmQuXG5cCi0JT3RoZXIgdGhyZWFkcyBtYXkgcnVuIHdoaWxlIHN0 ZXBwaW5nIG92ZXIgYSBmdW5jdGlvbiBjYWxsICgnbmV4dCcpLiIpLCAKLQkJ CXNldF9zY2hlZGxvY2tfZnVuYywJLyogdHJhcHMgb24gdGFyZ2V0IHZlY3Rv ciAqLwotCQkJc2hvd19zY2hlZHVsZXJfbW9kZSwKLQkJCSZzZXRsaXN0LCAm c2hvd2xpc3QpOworCU90aGVyIHRocmVhZHMgbWF5IHJ1biB3aGlsZSBzdGVw cGluZyBvdmVyIGEgZnVuY3Rpb24gY2FsbCAoJ25leHQnKS4iKSwgc2V0X3Nj aGVkbG9ja19mdW5jLAkvKiB0cmFwcyBvbiB0YXJnZXQgdmVjdG9yICovCisJ CQlzaG93X3NjaGVkdWxlcl9tb2RlLCAmc2V0bGlzdCwgJnNob3dsaXN0KTsK IAogICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInN0ZXAtbW9kZSIsIGNs YXNzX3J1biwgJnN0ZXBfc3RvcF9pZl9ub19kZWJ1ZywgXygiXAogU2V0IG1v ZGUgb2YgdGhlIHN0ZXAgb3BlcmF0aW9uLiIpLCBfKCJcCkBAIC00NzExLDIw ICs0Nzc4LDE0IEBAIFNob3cgbW9kZSBvZiB0aGUgc3RlcCBvcGVyYXRpb24u IiksIF8oIlwKIFdoZW4gc2V0LCBkb2luZyBhIHN0ZXAgb3ZlciBhIGZ1bmN0 aW9uIHdpdGhvdXQgZGVidWcgbGluZSBpbmZvcm1hdGlvblxuXAogd2lsbCBz dG9wIGF0IHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBvZiB0aGF0IGZ1bmN0aW9u LiBPdGhlcndpc2UsIHRoZVxuXAogZnVuY3Rpb24gaXMgc2tpcHBlZCBhbmQg dGhlIHN0ZXAgY29tbWFuZCBzdG9wcyBhdCBhIGRpZmZlcmVudCBzb3VyY2Ug bGluZS4iKSwKLQkJCSAgIE5VTEwsCi0JCQkgICBzaG93X3N0ZXBfc3RvcF9p Zl9ub19kZWJ1ZywKLQkJCSAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworCQkJ ICAgTlVMTCwgc2hvd19zdGVwX3N0b3BfaWZfbm9fZGVidWcsICZzZXRsaXN0 LCAmc2hvd2xpc3QpOwogCiAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgi Y2FuLXVzZS1kaXNwbGFjZWQtc3RlcHBpbmciLCBjbGFzc19tYWludGVuYW5j ZSwKLQkJCSAgICAmY2FuX3VzZV9kaXNwbGFjZWRfc3RlcHBpbmcsIF8oIlwK KwkJCSAgICZjYW5fdXNlX2Rpc3BsYWNlZF9zdGVwcGluZywgXygiXAogU2V0 IGRlYnVnZ2VyJ3Mgd2lsbGluZ25lc3MgdG8gdXNlIGRpc3BsYWNlZCBzdGVw cGluZy4iKSwgXygiXAogU2hvdyBkZWJ1Z2dlcidzIHdpbGxpbmduZXNzIHRv IHVzZSBkaXNwbGFjZWQgc3RlcHBpbmcuIiksIF8oIlwKIElmIHplcm8sIGdk YiB3aWxsIG5vdCB1c2UgdG8gdXNlIGRpc3BsYWNlZCBzdGVwcGluZyB0byBz dGVwIG92ZXJcblwKLWJyZWFrcG9pbnRzLCBldmVuIGlmIHN1Y2ggaXMgc3Vw cG9ydGVkIGJ5IHRoZSB0YXJnZXQuIiksCi0JCQkgICAgTlVMTCwKLQkJCSAg ICBzaG93X2Nhbl91c2VfZGlzcGxhY2VkX3N0ZXBwaW5nLAotCQkJICAgICZt YWludGVuYW5jZV9zZXRfY21kbGlzdCwKLQkJCSAgICZtYWludGVuYW5jZV9z aG93X2NtZGxpc3QpOworYnJlYWtwb2ludHMsIGV2ZW4gaWYgc3VjaCBpcyBz dXBwb3J0ZWQgYnkgdGhlIHRhcmdldC4iKSwgTlVMTCwgc2hvd19jYW5fdXNl X2Rpc3BsYWNlZF9zdGVwcGluZywgJm1haW50ZW5hbmNlX3NldF9jbWRsaXN0 LCAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKIAogCiAgIC8qIHB0aWQg aW5pdGlhbGl6YXRpb25zICovCmRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0 LmMgYi9nZGIvbGludXgtbmF0LmMKaW5kZXggNDdkYWM1OS4uNmUyNmYxNSAx MDA2NDQKLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCisrKyBiL2dkYi9saW51eC1u YXQuYwpAQCAtNTAsNiArNTAsOCBAQAogI2luY2x1ZGUgImV2ZW50LWxvb3Au aCIKICNpbmNsdWRlICJldmVudC10b3AuaCIKIAorI2luY2x1ZGUgInJlY29y ZC5oIgorCiAvKiBOb3RlIG9uIHRoaXMgZmlsZSdzIHVzZSBvZiBzaWduYWxz OgogCiAgICBXZSBzdG9wIHRocmVhZHMgYnkgc2VuZGluZyBhIFNJR1NUT1Au ICBUaGUgdXNlIG9mIFNJR1NUT1AgaW5zdGVhZApAQCAtMTA4LDcgKzExMCw3 IEBACiAgICB3aXRoIHRoZSBwdHJhY2UgZXZlbnQgaGFuZGxlcnMgYWxzbyBo YXZlIF9fV0FMTCwgc28gaXQncyBzYWZlIHRvIHVzZQogICAgaGVyZS4gICov CiAjaWZuZGVmIF9fV0FMTAotI2RlZmluZSBfX1dBTEwgICAgICAgICAgMHg0 MDAwMDAwMCAvKiBXYWl0IGZvciBhbnkgY2hpbGQuICAqLworI2RlZmluZSBf X1dBTEwgICAgICAgICAgMHg0MDAwMDAwMAkvKiBXYWl0IGZvciBhbnkgY2hp bGQuICAqLwogI2VuZGlmCiAKICNpZm5kZWYgUFRSQUNFX0dFVFNJR0lORk8K QEAgLTEyNSwxMSArMTI3LDEwIEBAIHN0YXRpYyB2b2lkICgqbGludXhfbmF0 X25ld190aHJlYWQpIChwdGlkX3QpOwogCiAvKiBUaGUgc2F2ZWQgdG9feGZl cl9wYXJ0aWFsIG1ldGhvZCwgaW5oZXJpdGVkIGZyb20gaW5mLXB0cmFjZS5j LgogICAgQ2FsbGVkIGJ5IG91ciB0b194ZmVyX3BhcnRpYWwuICAqLwotc3Rh dGljIExPTkdFU1QgKCpzdXBlcl94ZmVyX3BhcnRpYWwpIChzdHJ1Y3QgdGFy Z2V0X29wcyAqLCAKK3N0YXRpYyBMT05HRVNUICgqc3VwZXJfeGZlcl9wYXJ0 aWFsKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKIAkJCQkgICAgICBlbnVtIHRh cmdldF9vYmplY3QsCi0JCQkJICAgICAgY29uc3QgY2hhciAqLCBnZGJfYnl0 ZSAqLCAKLQkJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqLAotCQkJCSAgICAg IFVMT05HRVNULCBMT05HRVNUKTsKKwkJCQkgICAgICBjb25zdCBjaGFyICos IGdkYl9ieXRlICosCisJCQkJICAgICAgY29uc3QgZ2RiX2J5dGUgKiwgVUxP TkdFU1QsIExPTkdFU1QpOwogCiBzdGF0aWMgaW50IGRlYnVnX2xpbnV4X25h dDsKIHN0YXRpYyB2b2lkCkBAIC0xNDUsNyArMTQ2LDggQEAgc3RhdGljIHZv aWQKIHNob3dfZGVidWdfbGludXhfbmF0X2FzeW5jIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkJICAgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgZnByaW50 Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5nIG9mIEdOVS9MaW51eCBh c3luYyBsd3AgbW9kdWxlIGlzICVzLlxuIiksCisgIGZwcmludGZfZmlsdGVy ZWQgKGZpbGUsCisJCSAgICBfKCJEZWJ1Z2dpbmcgb2YgR05VL0xpbnV4IGFz eW5jIGx3cCBtb2R1bGUgaXMgJXMuXG4iKSwKIAkJICAgIHZhbHVlKTsKIH0K IApAQCAtMjA0LDExICsyMDYsMTEgQEAgc3RhdGljIGludCBsaW51eF9uYXRf YXN5bmNfZXZlbnRzIChpbnQgZW5hYmxlKTsKIHN0YXRpYyB2b2lkIHBpcGVf dG9fbG9jYWxfZXZlbnRfcXVldWUgKHZvaWQpOwogc3RhdGljIHZvaWQgbG9j YWxfZXZlbnRfcXVldWVfdG9fcGlwZSAodm9pZCk7CiBzdGF0aWMgdm9pZCBs aW51eF9uYXRfZXZlbnRfcGlwZV9wdXNoIChpbnQgcGlkLCBpbnQgc3RhdHVz LCBpbnQgb3B0aW9ucyk7Ci1zdGF0aWMgaW50IGxpbnV4X25hdF9ldmVudF9w aXBlX3BvcCAoaW50KiBwdHJfc3RhdHVzLCBpbnQqIHB0cl9vcHRpb25zKTsK K3N0YXRpYyBpbnQgbGludXhfbmF0X2V2ZW50X3BpcGVfcG9wIChpbnQgKnB0 cl9zdGF0dXMsIGludCAqcHRyX29wdGlvbnMpOwogc3RhdGljIHZvaWQgbGlu dXhfbmF0X3NldF9hc3luY19tb2RlIChpbnQgb24pOwogc3RhdGljIHZvaWQg bGludXhfbmF0X2FzeW5jICh2b2lkICgqY2FsbGJhY2spCi0JCQkgICAgIChl bnVtIGluZmVyaW9yX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSwgdm9pZCAqY29u dGV4dCksCi0JCQkgICAgIHZvaWQgKmNvbnRleHQpOworCQkJICAgICAoZW51 bSBpbmZlcmlvcl9ldmVudF90eXBlIGV2ZW50X3R5cGUsCisJCQkgICAgICB2 b2lkICpjb250ZXh0KSwgdm9pZCAqY29udGV4dCk7CiBzdGF0aWMgaW50IGxp bnV4X25hdF9hc3luY19tYXNrIChpbnQgbWFzayk7CiBzdGF0aWMgaW50IGtp bGxfbHdwIChpbnQgbHdwaWQsIGludCBzaWdubyk7CiAKQEAgLTIzMiwxMSAr MjM0LDggQEAgcXVldWVkX3dhaXRwaWQgKGludCBwaWQsIGludCAqc3RhdHVz LCBpbnQgZmxhZ3MpCiAgIHN0cnVjdCB3YWl0cGlkX3Jlc3VsdCAqbXNnID0g d2FpdHBpZF9xdWV1ZSwgKnByZXYgPSBOVUxMOwogCiAgIGlmIChkZWJ1Z19s aW51eF9uYXRfYXN5bmMpCi0gICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotCQkJIlwKLVFXUElEOiBsaW51eF9uYXRfYXN5bmNfZXZlbnRz X2VuYWJsZWQoJWQpLCBsaW51eF9uYXRfbnVtX3F1ZXVlZF9ldmVudHMoJWQp XG4iLAotCQkJbGludXhfbmF0X2FzeW5jX2V2ZW50c19lbmFibGVkLAotCQkJ bGludXhfbmF0X251bV9xdWV1ZWRfZXZlbnRzKTsKKyAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCitRV1BJRDogbGludXhfbmF0X2Fz eW5jX2V2ZW50c19lbmFibGVkKCVkKSwgbGludXhfbmF0X251bV9xdWV1ZWRf ZXZlbnRzKCVkKVxuIiwgbGludXhfbmF0X2FzeW5jX2V2ZW50c19lbmFibGVk LCBsaW51eF9uYXRfbnVtX3F1ZXVlZF9ldmVudHMpOwogCiAgIGlmIChmbGFn cyAmIF9fV0FMTCkKICAgICB7CkBAIC0yNDcsMTUgKzI0NiwxMyBAQCBRV1BJ RDogbGludXhfbmF0X2FzeW5jX2V2ZW50c19lbmFibGVkKCVkKSwgbGludXhf bmF0X251bV9xdWV1ZWRfZXZlbnRzKCVkKVxuIiwKICAgZWxzZSBpZiAoZmxh Z3MgJiBfX1dDTE9ORSkKICAgICB7CiAgICAgICBmb3IgKDsgbXNnOyBwcmV2 ID0gbXNnLCBtc2cgPSBtc2ctPm5leHQpCi0JaWYgKG1zZy0+b3B0aW9ucyAm IF9fV0NMT05FCi0JICAgICYmIChwaWQgPT0gLTEgfHwgcGlkID09IG1zZy0+ cGlkKSkKKwlpZiAobXNnLT5vcHRpb25zICYgX19XQ0xPTkUgJiYgKHBpZCA9 PSAtMSB8fCBwaWQgPT0gbXNnLT5waWQpKQogCSAgYnJlYWs7CiAgICAgfQog ICBlbHNlCiAgICAgewogICAgICAgZm9yICg7IG1zZzsgcHJldiA9IG1zZywg bXNnID0gbXNnLT5uZXh0KQotCWlmICgobXNnLT5vcHRpb25zICYgX19XQ0xP TkUpID09IDAKLQkgICAgJiYgKHBpZCA9PSAtMSB8fCBwaWQgPT0gbXNnLT5w aWQpKQorCWlmICgobXNnLT5vcHRpb25zICYgX19XQ0xPTkUpID09IDAgJiYg KHBpZCA9PSAtMSB8fCBwaWQgPT0gbXNnLT5waWQpKQogCSAgYnJlYWs7CiAg ICAgfQogCkBAIC0zMDIsOSArMjk5LDcgQEAgcHVzaF93YWl0cGlkIChpbnQg cGlkLCBpbnQgc3RhdHVzLCBpbnQgb3B0aW9ucykKIAogICBpZiAod2FpdHBp ZF9xdWV1ZSkKICAgICB7Ci0gICAgICBmb3IgKGV2ZW50ID0gd2FpdHBpZF9x dWV1ZTsKLQkgICBldmVudCAmJiBldmVudC0+bmV4dDsKLQkgICBldmVudCA9 IGV2ZW50LT5uZXh0KQorICAgICAgZm9yIChldmVudCA9IHdhaXRwaWRfcXVl dWU7IGV2ZW50ICYmIGV2ZW50LT5uZXh0OyBldmVudCA9IGV2ZW50LT5uZXh0 KQogCTsKIAogICAgICAgZXZlbnQtPm5leHQgPSBuZXdfZXZlbnQ7CkBAIC0z MjEsOCArMzE2LDggQEAgZHJhaW5fcXVldWVkX2V2ZW50cyAoaW50IHBpZCkK ICAgd2hpbGUgKHF1ZXVlZF93YWl0cGlkIChwaWQsIE5VTEwsIF9fV0FMTCkg IT0gLTEpCiAgICAgOwogfQotCiAMCisKIC8qIFRyaXZpYWwgbGlzdCBtYW5p cHVsYXRpb24gZnVuY3Rpb25zIHRvIGtlZXAgdHJhY2sgb2YgYSBsaXN0IG9m CiAgICBuZXcgc3RvcHBlZCBwcm9jZXNzZXMuICAqLwogc3RhdGljIHZvaWQK QEAgLTM1Nyw4ICszNTIsOCBAQCBsaW51eF9yZWNvcmRfc3RvcHBlZF9waWQg KGludCBwaWQsIGludCBzdGF0dXMpCiB7CiAgIGFkZF90b19waWRfbGlzdCAo JnN0b3BwZWRfcGlkcywgcGlkLCBzdGF0dXMpOwogfQotCiAMCisKIC8qIEEg aGVscGVyIGZ1bmN0aW9uIGZvciBsaW51eF90ZXN0X2Zvcl90cmFjZWZvcmss IGNhbGxlZCBhZnRlciBmb3JrICgpLiAgKi8KIAogc3RhdGljIHZvaWQKQEAg LTM5Niw2ICszOTEsMTA2IEBAIG15X3dhaXRwaWQgKGludCBwaWQsIGludCAq c3RhdHVzLCBpbnQgZmxhZ3MpCiAgIHJldHVybiByZXQ7CiB9CiAKK2V4dGVy biBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJwX2xvY2F0aW9uX2NoYWluOworc3Rh dGljIGludAorbXlfd2FpdHBpZF9yZWNvcmQgKGludCBwaWQsIGludCAqc3Rh dHVzLCBpbnQgZmxhZ3MpCit7CisgIGludCByZXQ7CisgIHN0cnVjdCBicF9s b2NhdGlvbiAqYmw7CisgIHN0cnVjdCBicmVha3BvaW50ICpiOworICBDT1JF X0FERFIgcGM7CisKK3dhaXRfYmVnaW46CisgIHJldCA9IHdhaXRwaWQgKHBp ZCwgc3RhdHVzLCBmbGFncyk7CisgIGlmIChyZXQgPT0gLTEpCisgICAgewor ICAgICAgaWYgKGVycm5vID09IEVJTlRSKQorCXsKKwkgIGdvdG8gd2FpdF9i ZWdpbjsKKwl9CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICBpZiAo cmV0ID09IDApCisgICAgeworICAgICAgZ290byB3YWl0X2JlZ2luOworICAg IH0KKworICBpZiAoV0lGU1RPUFBFRCAoKnN0YXR1cykgJiYgV1NUT1BTSUcg KCpzdGF0dXMpID09IFNJR1RSQVApCisgICAgeworICAgICAgLyogQ2hlY2sg aWYgdGhlcmUgaXMgYSBicmVha3BvaW50ICovCisgICAgICBwYyA9IDA7Cisg ICAgICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKKyAgICAgIGZvciAoYmwgPSBi cF9sb2NhdGlvbl9jaGFpbjsgYmw7IGJsID0gYmwtPmdsb2JhbF9uZXh0KQor CXsKKwkgIGIgPSBibC0+b3duZXI7CisJICBnZGJfYXNzZXJ0IChiKTsKKwkg IGlmIChiLT5lbmFibGVfc3RhdGUgIT0gYnBfZW5hYmxlZAorCSAgICAgICYm IGItPmVuYWJsZV9zdGF0ZSAhPSBicF9wZXJtYW5lbnQpCisJICAgIGNvbnRp bnVlOworCSAgaWYgKCFwYykKKwkgICAgeworCSAgICAgIHBjID0gcmVnY2Fj aGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAocGlkX3RvX3B0aWQg KHJldCkpKTsKKwkgICAgfQorCSAgc3dpdGNoIChiLT50eXBlKQorCSAgICB7 CisJICAgIGRlZmF1bHQ6CisJICAgICAgaWYgKGJsLT5hZGRyZXNzID09IHBj KQorCQl7CisJCSAgZ290byBvdXQ7CisJCX0KKwkgICAgICBicmVhazsKKwor CSAgICBjYXNlIGJwX3dhdGNocG9pbnQ6CisJICAgICAgLypYWFggdGVhd2F0 ZXI6IEkgc3RpbGwgbm90IHZlcnkgY2xlYXIgaG93IHRvIGRlYWwgd2l0aCBp dC4gKi8KKwkgICAgICBnb3RvIG91dDsKKwkgICAgICBicmVhazsKKworCSAg ICBjYXNlIGJwX2NhdGNoX2Zvcms6CisJICAgICAgaWYgKGluZmVyaW9yX2hh c19mb3JrZWQgKHJldCwgJmItPmZvcmtlZF9pbmZlcmlvcl9waWQpKQorCQl7 CisJCSAgZ290byBvdXQ7CisJCX0KKwkgICAgICBicmVhazsKKworCSAgICBj YXNlIGJwX2NhdGNoX3Zmb3JrOgorCSAgICAgIGlmIChpbmZlcmlvcl9oYXNf dmZvcmtlZCAocmV0LCAmYi0+Zm9ya2VkX2luZmVyaW9yX3BpZCkpCisJCXsK KwkJICBnb3RvIG91dDsKKwkJfQorCSAgICAgIGJyZWFrOworCisJICAgIGNh c2UgYnBfY2F0Y2hfZXhlYzoKKwkgICAgICBpZiAoaW5mZXJpb3JfaGFzX2V4 ZWNkIChyZXQsICZiLT5leGVjX3BhdGhuYW1lKSkKKwkJeworCQkgIGdvdG8g b3V0OworCQl9CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBicF9oYXJk d2FyZV93YXRjaHBvaW50OgorCSAgICBjYXNlIGJwX3JlYWRfd2F0Y2hwb2lu dDoKKwkgICAgY2FzZSBicF9hY2Nlc3Nfd2F0Y2hwb2ludDoKKwkgICAgICBp ZiAoU1RPUFBFRF9CWV9XQVRDSFBPSU5UICgwKSkKKwkJeworCQkgIGdvdG8g b3V0OworCQl9CisJICAgICAgYnJlYWs7CisKKwkgICAgfQorCX0KKworICAg ICAgLyogcmVjb3JkIG1lc3NhZ2UgKi8KKyAgICAgIHJlY29yZF9tZXNzYWdl IChjdXJyZW50X2dkYmFyY2gpOworCisgICAgICAvKiByZXN1bWUgcHJvZ3Jh bSAqLworICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKHBpZF90b19wdGlk IChyZXQpLCAxLCBUQVJHRVRfU0lHTkFMXzApOworICAgICAgZ290byB3YWl0 X2JlZ2luOworICAgIH0KKworb3V0OgorICByZXR1cm4gcmV0OworfQorCiAv KiBEZXRlcm1pbmUgaWYgUFRSQUNFX09fVFJBQ0VGT1JLIGNhbiBiZSB1c2Vk IHRvIGZvbGxvdyBmb3JrIGV2ZW50cy4KIAogICAgRmlyc3QsIHdlIHRyeSB0 byBlbmFibGUgZm9yayB0cmFjaW5nIG9uIE9SSUdJTkFMX1BJRC4gIElmIHRo aXMgZmFpbHMsCkBAIC00MzMsOSArNTI4LDExIEBAIGxpbnV4X3Rlc3RfZm9y X3RyYWNlZm9yayAoaW50IG9yaWdpbmFsX3BpZCkKICAgaWYgKHJldCA9PSAt MSkKICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoIndhaXRwaWQiKSk7CiAgIGVs c2UgaWYgKHJldCAhPSBjaGlsZF9waWQpCi0gICAgZXJyb3IgKF8oImxpbnV4 X3Rlc3RfZm9yX3RyYWNlZm9yazogd2FpdHBpZDogdW5leHBlY3RlZCByZXN1 bHQgJWQuIiksIHJldCk7Ci0gIGlmICghIFdJRlNUT1BQRUQgKHN0YXR1cykp Ci0gICAgZXJyb3IgKF8oImxpbnV4X3Rlc3RfZm9yX3RyYWNlZm9yazogd2Fp dHBpZDogdW5leHBlY3RlZCBzdGF0dXMgJWQuIiksIHN0YXR1cyk7CisgICAg ZXJyb3IgKF8oImxpbnV4X3Rlc3RfZm9yX3RyYWNlZm9yazogd2FpdHBpZDog dW5leHBlY3RlZCByZXN1bHQgJWQuIiksCisJICAgcmV0KTsKKyAgaWYgKCFX SUZTVE9QUEVEIChzdGF0dXMpKQorICAgIGVycm9yIChfKCJsaW51eF90ZXN0 X2Zvcl90cmFjZWZvcms6IHdhaXRwaWQ6IHVuZXhwZWN0ZWQgc3RhdHVzICVk LiIpLAorCSAgIHN0YXR1cyk7CiAKICAgcmV0ID0gcHRyYWNlIChQVFJBQ0Vf U0VUT1BUSU9OUywgY2hpbGRfcGlkLCAwLCBQVFJBQ0VfT19UUkFDRUZPUksp OwogICBpZiAocmV0ICE9IDApCkBAIC00NDksMTAgKzU0NiwxMiBAQCBsaW51 eF90ZXN0X2Zvcl90cmFjZWZvcmsgKGludCBvcmlnaW5hbF9waWQpCiAKICAg ICAgIHJldCA9IG15X3dhaXRwaWQgKGNoaWxkX3BpZCwgJnN0YXR1cywgMCk7 CiAgICAgICBpZiAocmV0ICE9IGNoaWxkX3BpZCkKLQl3YXJuaW5nIChfKCJs aW51eF90ZXN0X2Zvcl90cmFjZWZvcms6IGZhaWxlZCB0byB3YWl0IGZvciBr aWxsZWQgY2hpbGQiKSk7CisJd2FybmluZyAoXworCQkgKCJsaW51eF90ZXN0 X2Zvcl90cmFjZWZvcms6IGZhaWxlZCB0byB3YWl0IGZvciBraWxsZWQgY2hp bGQiKSk7CiAgICAgICBlbHNlIGlmICghV0lGU0lHTkFMRUQgKHN0YXR1cykp Ci0Jd2FybmluZyAoXygibGludXhfdGVzdF9mb3JfdHJhY2Vmb3JrOiB1bmV4 cGVjdGVkIHdhaXQgc3RhdHVzIDB4JXggZnJvbSAiCi0JCSAia2lsbGVkIGNo aWxkIiksIHN0YXR1cyk7CisJd2FybmluZyAoXworCQkgKCJsaW51eF90ZXN0 X2Zvcl90cmFjZWZvcms6IHVuZXhwZWN0ZWQgd2FpdCBzdGF0dXMgMHgleCBm cm9tICIKKwkJICAia2lsbGVkIGNoaWxkIiksIHN0YXR1cyk7CiAKICAgICAg IHJldHVybjsKICAgICB9CkBAIC00ODEsMTMgKzU4MCwxNCBAQCBsaW51eF90 ZXN0X2Zvcl90cmFjZWZvcmsgKGludCBvcmlnaW5hbF9waWQpCiAJICBteV93 YWl0cGlkIChzZWNvbmRfcGlkLCAmc2Vjb25kX3N0YXR1cywgMCk7CiAJICBy ZXQgPSBwdHJhY2UgKFBUUkFDRV9LSUxMLCBzZWNvbmRfcGlkLCAwLCAwKTsK IAkgIGlmIChyZXQgIT0gMCkKLQkgICAgd2FybmluZyAoXygibGludXhfdGVz dF9mb3JfdHJhY2Vmb3JrOiBmYWlsZWQgdG8ga2lsbCBzZWNvbmQgY2hpbGQi KSk7CisJICAgIHdhcm5pbmcgKF8KKwkJICAgICAoImxpbnV4X3Rlc3RfZm9y X3RyYWNlZm9yazogZmFpbGVkIHRvIGtpbGwgc2Vjb25kIGNoaWxkIikpOwog CSAgbXlfd2FpdHBpZCAoc2Vjb25kX3BpZCwgJnN0YXR1cywgMCk7CiAJfQog ICAgIH0KICAgZWxzZQogICAgIHdhcm5pbmcgKF8oImxpbnV4X3Rlc3RfZm9y X3RyYWNlZm9yazogdW5leHBlY3RlZCByZXN1bHQgZnJvbSB3YWl0cGlkICIK LQkgICAgICIoJWQsIHN0YXR1cyAweCV4KSIpLCByZXQsIHN0YXR1cyk7CisJ ICAgICAgICIoJWQsIHN0YXR1cyAweCV4KSIpLCByZXQsIHN0YXR1cyk7CiAK ICAgcmV0ID0gcHRyYWNlIChQVFJBQ0VfS0lMTCwgY2hpbGRfcGlkLCAwLCAw KTsKICAgaWYgKHJldCAhPSAwKQpAQCAtNTEzLDggKzYxMyw4IEBAIGxpbnV4 X3N1cHBvcnRzX3RyYWNldmZvcmtkb25lIChpbnQgcGlkKQogICAgIGxpbnV4 X3Rlc3RfZm9yX3RyYWNlZm9yayAocGlkKTsKICAgcmV0dXJuIGxpbnV4X3N1 cHBvcnRzX3RyYWNldmZvcmtkb25lX2ZsYWc7CiB9Ci0KIAwKKwogdm9pZAog bGludXhfZW5hYmxlX2V2ZW50X3JlcG9ydGluZyAocHRpZF90IHB0aWQpCiB7 CkBAIC01MjQsNyArNjI0LDcgQEAgbGludXhfZW5hYmxlX2V2ZW50X3JlcG9y dGluZyAocHRpZF90IHB0aWQpCiAgIGlmIChwaWQgPT0gMCkKICAgICBwaWQg PSBwdGlkX2dldF9waWQgKHB0aWQpOwogCi0gIGlmICghIGxpbnV4X3N1cHBv cnRzX3RyYWNlZm9yayAocGlkKSkKKyAgaWYgKCFsaW51eF9zdXBwb3J0c190 cmFjZWZvcmsgKHBpZCkpCiAgICAgcmV0dXJuOwogCiAgIG9wdGlvbnMgPSBQ VFJBQ0VfT19UUkFDRUZPUksgfCBQVFJBQ0VfT19UUkFDRVZGT1JLIHwgUFRS QUNFX09fVFJBQ0VFWEVDCkBAIC01NzAsNyArNjcwLDcgQEAgbGludXhfY2hp bGRfZm9sbG93X2ZvcmsgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGludCBm b2xsb3dfY2hpbGQpCiAgICAgcGFyZW50X3BpZCA9IHB0aWRfZ2V0X3BpZCAo bGFzdF9wdGlkKTsKICAgY2hpbGRfcGlkID0gbGFzdF9zdGF0dXMudmFsdWUu cmVsYXRlZF9waWQ7CiAKLSAgaWYgKCEgZm9sbG93X2NoaWxkKQorICBpZiAo IWZvbGxvd19jaGlsZCkKICAgICB7CiAgICAgICAvKiBXZSdyZSBhbHJlYWR5 IGF0dGFjaGVkIHRvIHRoZSBwYXJlbnQsIGJ5IGRlZmF1bHQuICovCiAKQEAg LTU3OCw3ICs2NzgsNyBAQCBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKICAgICAg ICAgIGl0LiAgKFRoaXMgd29uJ3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSBicmVh a3BvaW50IGxpc3QsIGJ1dCB3aWxsCiAgICAgICAgICBwaHlzaWNhbGx5IHJl bW92ZSB0aGUgYnJlYWtwb2ludHMgZnJvbSB0aGUgY2hpbGQuKSAqLwogICAg ICAgLyogSWYgd2UgdmZvcmtlZCB0aGlzIHdpbGwgcmVtb3ZlIHRoZSBicmVh a3BvaW50cyBmcm9tIHRoZSBwYXJlbnQKLQkgYWxzbywgYnV0IHRoZXknbGwg YmUgcmVpbnNlcnRlZCBiZWxvdy4gICovCisgICAgICAgICBhbHNvLCBidXQg dGhleSdsbCBiZSByZWluc2VydGVkIGJlbG93LiAgKi8KICAgICAgIGRldGFj aF9icmVha3BvaW50cyAoY2hpbGRfcGlkKTsKIAogICAgICAgLyogRGV0YWNo IG5ldyBmb3JrZWQgcHJvY2Vzcz8gICovCkBAIC02MTUsNDAgKzcxNSw0MCBA QCBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywgaW50IGZvbGxvd19jaGlsZCkKIAkgICAgICBteV93YWl0cGlkIChw YXJlbnRfcGlkLCAmc3RhdHVzLCBfX1dBTEwpOwogCSAgICAgIGlmICgoc3Rh dHVzID4+IDE2KSAhPSBQVFJBQ0VfRVZFTlRfVkZPUktfRE9ORSkKIAkJd2Fy bmluZyAoXygiVW5leHBlY3RlZCB3YWl0cGlkIHJlc3VsdCAlMDZ4IHdoZW4g d2FpdGluZyBmb3IgIgotCQkJICJ2Zm9yay1kb25lIiksIHN0YXR1cyk7CisJ CQkgICAidmZvcmstZG9uZSIpLCBzdGF0dXMpOwogCSAgICB9CiAJICBlbHNl CiAJICAgIHsKIAkgICAgICAvKiBXZSBjYW4ndCBpbnNlcnQgYnJlYWtwb2lu dHMgdW50aWwgdGhlIGNoaWxkIGhhcwotCQkgZmluaXNoZWQgd2l0aCB0aGUg c2hhcmVkIG1lbW9yeSByZWdpb24uICBXZSBuZWVkIHRvCi0JCSB3YWl0IHVu dGlsIHRoYXQgaGFwcGVucy4gIElkZWFsIHdvdWxkIGJlIHRvIGp1c3QKLQkJ IGNhbGw6Ci0JCSAtIHB0cmFjZSAoUFRSQUNFX1NZU0NBTEwsIHBhcmVudF9w aWQsIDAsIDApOwotCQkgLSB3YWl0cGlkIChwYXJlbnRfcGlkLCAmc3RhdHVz LCBfX1dBTEwpOwotCQkgSG93ZXZlciwgbW9zdCBhcmNoaXRlY3R1cmVzIGNh bid0IGhhbmRsZSBhIHN5c2NhbGwKLQkJIGJlaW5nIHRyYWNlZCBvbiB0aGUg d2F5IG91dCBpZiBpdCB3YXNuJ3QgdHJhY2VkIG9uCi0JCSB0aGUgd2F5IGlu LgotCi0JCSBXZSBtaWdodCBhbHNvIHRoaW5rIHRvIGxvb3AsIGNvbnRpbnVp bmcgdGhlIGNoaWxkCi0JCSB1bnRpbCBpdCBleGl0cyBvciBnZXRzIGEgU0lH VFJBUC4gIE9uZSBwcm9ibGVtIGlzCi0JCSB0aGF0IHRoZSBjaGlsZCBtaWdo dCBjYWxsIHB0cmFjZSB3aXRoIFBUUkFDRV9UUkFDRU1FLgotCi0JCSBUaGVy ZSdzIG5vIHNpbXBsZSBhbmQgcmVsaWFibGUgd2F5IHRvIGZpZ3VyZSBvdXQg d2hlbgotCQkgdGhlIHZmb3JrZWQgY2hpbGQgd2lsbCBiZSBkb25lIHdpdGgg aXRzIGNvcHkgb2YgdGhlCi0JCSBzaGFyZWQgbWVtb3J5LiAgV2UgY291bGQg c3RlcCBpdCBvdXQgb2YgdGhlIHN5c2NhbGwsCi0JCSB0d28gaW5zdHJ1Y3Rp b25zLCBsZXQgaXQgZ28sIGFuZCB0aGVuIHNpbmdsZS1zdGVwIHRoZQotCQkg cGFyZW50IG9uY2UuICBXaGVuIHdlIGhhdmUgaGFyZHdhcmUgc2luZ2xlLXN0 ZXAsIHRoaXMKLQkJIHdvdWxkIHdvcms7IHdpdGggc29mdHdhcmUgc2luZ2xl LXN0ZXAgaXQgY291bGQgc3RpbGwKLQkJIGJlIG1hZGUgdG8gd29yayBidXQg d2UnZCBoYXZlIHRvIGJlIGFibGUgdG8gaW5zZXJ0Ci0JCSBzaW5nbGUtc3Rl cCBicmVha3BvaW50cyBpbiB0aGUgY2hpbGQsIGFuZCB3ZSdkIGhhdmUKLQkJ IHRvIGluc2VydCAtanVzdC0gdGhlIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnQg aW4gdGhlCi0JCSBwYXJlbnQuICBWZXJ5IGF3a3dhcmQuCi0KLQkJIEluIHRo ZSBlbmQsIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0byBtYWtlIHN1cmUgaXQK LQkJIHJ1bnMgZm9yIGEgbGl0dGxlIHdoaWxlLiAgSG9wZWZ1bGx5IGl0IHdp bGwgYmUgb3V0IG9mCi0JCSByYW5nZSBvZiBhbnkgYnJlYWtwb2ludHMgd2Ug cmVpbnNlcnQuICBVc3VhbGx5IHRoaXMKLQkJIGlzIG9ubHkgdGhlIHNpbmds ZS1zdGVwIGJyZWFrcG9pbnQgYXQgdmZvcmsncyByZXR1cm4KLQkJIHBvaW50 LiAgKi8KKwkgICAgICAgICBmaW5pc2hlZCB3aXRoIHRoZSBzaGFyZWQgbWVt b3J5IHJlZ2lvbi4gIFdlIG5lZWQgdG8KKwkgICAgICAgICB3YWl0IHVudGls IHRoYXQgaGFwcGVucy4gIElkZWFsIHdvdWxkIGJlIHRvIGp1c3QKKwkgICAg ICAgICBjYWxsOgorCSAgICAgICAgIC0gcHRyYWNlIChQVFJBQ0VfU1lTQ0FM TCwgcGFyZW50X3BpZCwgMCwgMCk7CisJICAgICAgICAgLSB3YWl0cGlkIChw YXJlbnRfcGlkLCAmc3RhdHVzLCBfX1dBTEwpOworCSAgICAgICAgIEhvd2V2 ZXIsIG1vc3QgYXJjaGl0ZWN0dXJlcyBjYW4ndCBoYW5kbGUgYSBzeXNjYWxs CisJICAgICAgICAgYmVpbmcgdHJhY2VkIG9uIHRoZSB3YXkgb3V0IGlmIGl0 IHdhc24ndCB0cmFjZWQgb24KKwkgICAgICAgICB0aGUgd2F5IGluLgorCisJ ICAgICAgICAgV2UgbWlnaHQgYWxzbyB0aGluayB0byBsb29wLCBjb250aW51 aW5nIHRoZSBjaGlsZAorCSAgICAgICAgIHVudGlsIGl0IGV4aXRzIG9yIGdl dHMgYSBTSUdUUkFQLiAgT25lIHByb2JsZW0gaXMKKwkgICAgICAgICB0aGF0 IHRoZSBjaGlsZCBtaWdodCBjYWxsIHB0cmFjZSB3aXRoIFBUUkFDRV9UUkFD RU1FLgorCisJICAgICAgICAgVGhlcmUncyBubyBzaW1wbGUgYW5kIHJlbGlh YmxlIHdheSB0byBmaWd1cmUgb3V0IHdoZW4KKwkgICAgICAgICB0aGUgdmZv cmtlZCBjaGlsZCB3aWxsIGJlIGRvbmUgd2l0aCBpdHMgY29weSBvZiB0aGUK KwkgICAgICAgICBzaGFyZWQgbWVtb3J5LiAgV2UgY291bGQgc3RlcCBpdCBv dXQgb2YgdGhlIHN5c2NhbGwsCisJICAgICAgICAgdHdvIGluc3RydWN0aW9u cywgbGV0IGl0IGdvLCBhbmQgdGhlbiBzaW5nbGUtc3RlcCB0aGUKKwkgICAg ICAgICBwYXJlbnQgb25jZS4gIFdoZW4gd2UgaGF2ZSBoYXJkd2FyZSBzaW5n bGUtc3RlcCwgdGhpcworCSAgICAgICAgIHdvdWxkIHdvcms7IHdpdGggc29m dHdhcmUgc2luZ2xlLXN0ZXAgaXQgY291bGQgc3RpbGwKKwkgICAgICAgICBi ZSBtYWRlIHRvIHdvcmsgYnV0IHdlJ2QgaGF2ZSB0byBiZSBhYmxlIHRvIGlu c2VydAorCSAgICAgICAgIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnRzIGluIHRo ZSBjaGlsZCwgYW5kIHdlJ2QgaGF2ZQorCSAgICAgICAgIHRvIGluc2VydCAt anVzdC0gdGhlIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnQgaW4gdGhlCisJICAg ICAgICAgcGFyZW50LiAgVmVyeSBhd2t3YXJkLgorCisJICAgICAgICAgSW4g dGhlIGVuZCwgdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIHRvIG1ha2Ugc3VyZSBp dAorCSAgICAgICAgIHJ1bnMgZm9yIGEgbGl0dGxlIHdoaWxlLiAgSG9wZWZ1 bGx5IGl0IHdpbGwgYmUgb3V0IG9mCisJICAgICAgICAgcmFuZ2Ugb2YgYW55 IGJyZWFrcG9pbnRzIHdlIHJlaW5zZXJ0LiAgVXN1YWxseSB0aGlzCisJICAg ICAgICAgaXMgb25seSB0aGUgc2luZ2xlLXN0ZXAgYnJlYWtwb2ludCBhdCB2 Zm9yaydzIHJldHVybgorCSAgICAgICAgIHBvaW50LiAgKi8KIAogCSAgICAg IHVzbGVlcCAoMTAwMDApOwogCSAgICB9CkBAIC02NjMsNyArNzYzLDcgQEAg bGludXhfY2hpbGRfZm9sbG93X2ZvcmsgKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMsIGludCBmb2xsb3dfY2hpbGQpCiAgICAgICBjaGFyIGNoaWxkX3BpZF9z cGVsbGluZ1s0MF07CiAKICAgICAgIC8qIE5lZWRlZCB0byBrZWVwIHRoZSBi cmVha3BvaW50IGxpc3RzIGluIHN5bmMuICAqLwotICAgICAgaWYgKCEgaGFz X3Zmb3JrZWQpCisgICAgICBpZiAoIWhhc192Zm9ya2VkKQogCWRldGFjaF9i cmVha3BvaW50cyAoY2hpbGRfcGlkKTsKIAogICAgICAgLyogQmVmb3JlIGRl dGFjaGluZyBmcm9tIHRoZSBwYXJlbnQsIHJlbW92ZSBhbGwgYnJlYWtwb2lu dHMgZnJvbSBpdC4gKi8KQEAgLTY3OCwyMiArNzc4LDIyIEBAIGxpbnV4X2No aWxkX2ZvbGxvd19mb3JrIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBpbnQg Zm9sbG93X2NoaWxkKQogCX0KIAogICAgICAgLyogSWYgd2UncmUgdmZvcmtp bmcsIHdlIG1heSB3YW50IHRvIGhvbGQgb24gdG8gdGhlIHBhcmVudCB1bnRp bAotCSB0aGUgY2hpbGQgZXhpdHMgb3IgZXhlY3MuICBBdCBleGVjIHRpbWUg d2UgY2FuIHJlbW92ZSB0aGUgb2xkCi0JIGJyZWFrcG9pbnRzIGZyb20gdGhl IHBhcmVudCBhbmQgZGV0YWNoIGl0OyBhdCBleGl0IHRpbWUgd2UKLQkgY291 bGQgZG8gdGhlIHNhbWUgKG9yIGV2ZW4sIHNuZWFraWx5LCByZXN1bWUgZGVi dWdnaW5nIGl0IC0gdGhlCi0JIGNoaWxkJ3MgZXhlYyBoYXMgZmFpbGVkLCBv ciBzb21ldGhpbmcgc2ltaWxhcikuCi0KLQkgVGhpcyBkb2Vzbid0IGNsZWFu IHVwICJwcm9wZXJseSIsIGJlY2F1c2Ugd2UgY2FuJ3QgY2FsbAotCSB0YXJn ZXRfZGV0YWNoLCBidXQgdGhhdCdzIE9LOyBpZiB0aGUgY3VycmVudCB0YXJn ZXQgaXMgImNoaWxkIiwKLQkgdGhlbiBpdCBkb2Vzbid0IG5lZWQgYW55IGZ1 cnRoZXIgY2xlYW51cHMsIGFuZCBsaW5fbHdwIHdpbGwKLQkgZ2VuZXJhbGx5 IG5vdCBlbmNvdW50ZXIgdmZvcmsgKHZmb3JrIGlzIGRlZmluZWQgdG8gZm9y awotCSBpbiBsaWJwdGhyZWFkLnNvKS4KLQotCSBUaGUgaG9sZGluZyBwYXJ0 IGlzIHZlcnkgZWFzeSBpZiB3ZSBoYXZlIFZGT1JLRE9ORSBldmVudHM7Ci0J IGJ1dCBrZWVwaW5nIHRyYWNrIG9mIGJvdGggcHJvY2Vzc2VzIGlzIGJleW9u ZCBHREIgYXQgdGhlCi0JIG1vbWVudC4gIFNvIHdlIGRvbid0IGV4cG9zZSB0 aGUgcGFyZW50IHRvIHRoZSByZXN0IG9mIEdEQi4KLQkgSW5zdGVhZCB3ZSBx dWlldGx5IGhvbGQgb250byBpdCB1bnRpbCBzdWNoIHRpbWUgYXMgd2UgY2Fu Ci0JIHNhZmVseSByZXN1bWUgaXQuICAqLworICAgICAgICAgdGhlIGNoaWxk IGV4aXRzIG9yIGV4ZWNzLiAgQXQgZXhlYyB0aW1lIHdlIGNhbiByZW1vdmUg dGhlIG9sZAorICAgICAgICAgYnJlYWtwb2ludHMgZnJvbSB0aGUgcGFyZW50 IGFuZCBkZXRhY2ggaXQ7IGF0IGV4aXQgdGltZSB3ZQorICAgICAgICAgY291 bGQgZG8gdGhlIHNhbWUgKG9yIGV2ZW4sIHNuZWFraWx5LCByZXN1bWUgZGVi dWdnaW5nIGl0IC0gdGhlCisgICAgICAgICBjaGlsZCdzIGV4ZWMgaGFzIGZh aWxlZCwgb3Igc29tZXRoaW5nIHNpbWlsYXIpLgorCisgICAgICAgICBUaGlz IGRvZXNuJ3QgY2xlYW4gdXAgInByb3Blcmx5IiwgYmVjYXVzZSB3ZSBjYW4n dCBjYWxsCisgICAgICAgICB0YXJnZXRfZGV0YWNoLCBidXQgdGhhdCdzIE9L OyBpZiB0aGUgY3VycmVudCB0YXJnZXQgaXMgImNoaWxkIiwKKyAgICAgICAg IHRoZW4gaXQgZG9lc24ndCBuZWVkIGFueSBmdXJ0aGVyIGNsZWFudXBzLCBh bmQgbGluX2x3cCB3aWxsCisgICAgICAgICBnZW5lcmFsbHkgbm90IGVuY291 bnRlciB2Zm9yayAodmZvcmsgaXMgZGVmaW5lZCB0byBmb3JrCisgICAgICAg ICBpbiBsaWJwdGhyZWFkLnNvKS4KKworICAgICAgICAgVGhlIGhvbGRpbmcg cGFydCBpcyB2ZXJ5IGVhc3kgaWYgd2UgaGF2ZSBWRk9SS0RPTkUgZXZlbnRz OworICAgICAgICAgYnV0IGtlZXBpbmcgdHJhY2sgb2YgYm90aCBwcm9jZXNz ZXMgaXMgYmV5b25kIEdEQiBhdCB0aGUKKyAgICAgICAgIG1vbWVudC4gIFNv IHdlIGRvbid0IGV4cG9zZSB0aGUgcGFyZW50IHRvIHRoZSByZXN0IG9mIEdE Qi4KKyAgICAgICAgIEluc3RlYWQgd2UgcXVpZXRseSBob2xkIG9udG8gaXQg dW50aWwgc3VjaCB0aW1lIGFzIHdlIGNhbgorICAgICAgICAgc2FmZWx5IHJl c3VtZSBpdC4gICovCiAKICAgICAgIGlmIChoYXNfdmZvcmtlZCkKIAlsaW51 eF9wYXJlbnRfcGlkID0gcGFyZW50X3BpZDsKQEAgLTcxMiw3ICs4MTIsNyBA QCBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywgaW50IGZvbGxvd19jaGlsZCkKICAgICAgIGluZmVyaW9yX3B0aWQg PSBwdGlkX2J1aWxkIChjaGlsZF9waWQsIGNoaWxkX3BpZCwgMCk7CiAKICAg ICAgIC8qIFJlaW5zdGFsbCBvdXJzZWx2ZXMsIHNpbmNlIHdlIG1pZ2h0IGhh dmUgYmVlbiByZW1vdmVkIGluCi0JIHRhcmdldF9kZXRhY2ggKHdoaWNoIGRv ZXMgb3RoZXIgbmVjZXNzYXJ5IGNsZWFudXApLiAgKi8KKyAgICAgICAgIHRh cmdldF9kZXRhY2ggKHdoaWNoIGRvZXMgb3RoZXIgbmVjZXNzYXJ5IGNsZWFu dXApLiAgKi8KIAogICAgICAgcHVzaF90YXJnZXQgKG9wcyk7CiAgICAgICBs aW51eF9uYXRfc3dpdGNoX2ZvcmsgKGluZmVyaW9yX3B0aWQpOwpAQCAtNzI3 LDEyICs4MjcsMTIgQEAgbGludXhfY2hpbGRfZm9sbG93X2ZvcmsgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIGludCBmb2xsb3dfY2hpbGQpCiAKICAgcmV0 dXJuIDA7CiB9Ci0KIAwKKwogc3RhdGljIHZvaWQKIGxpbnV4X2NoaWxkX2lu c2VydF9mb3JrX2NhdGNocG9pbnQgKGludCBwaWQpCiB7Ci0gIGlmICghIGxp bnV4X3N1cHBvcnRzX3RyYWNlZm9yayAocGlkKSkKKyAgaWYgKCFsaW51eF9z dXBwb3J0c190cmFjZWZvcmsgKHBpZCkpCiAgICAgZXJyb3IgKF8oIllvdXIg c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZm9yayBjYXRjaHBvaW50cy4iKSk7 CiB9CiAKQEAgLTgyMCw4ICs5MjAsOCBAQCBzdGF0aWMgaW50IHN0b3Bfd2Fp dF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAqZGF0YSk7 CiBzdGF0aWMgaW50IGxpbnV4X25hdF90aHJlYWRfYWxpdmUgKHB0aWRfdCBw dGlkKTsKIHN0YXRpYyBjaGFyICpsaW51eF9jaGlsZF9waWRfdG9fZXhlY19m aWxlIChpbnQgcGlkKTsKIHN0YXRpYyBpbnQgY2FuY2VsX2JyZWFrcG9pbnQg KHN0cnVjdCBsd3BfaW5mbyAqbHApOwotCiAMCisKIC8qIENvbnZlcnQgd2Fp dCBzdGF0dXMgU1RBVFVTIHRvIGEgc3RyaW5nLiAgVXNlZCBmb3IgcHJpbnRp bmcgZGVidWcKICAgIG1lc3NhZ2VzIG9ubHkuICAqLwogCkBAIC0xMDAxLDcg KzExMDEsNyBAQCBwcnVuZV9sd3BzICh2b2lkKQogICBzdHJ1Y3Qgc2F2ZWRf cHRpZHMgKipwID0gJnRocmVhZHNfdG9fZGVsZXRlOwogCiAgIHdoaWxlICgq cCkKLSAgICBpZiAoISBwdGlkX2VxdWFsICgoKnApLT5wdGlkLCBpbmZlcmlv cl9wdGlkKSkKKyAgICBpZiAoIXB0aWRfZXF1YWwgKCgqcCktPnB0aWQsIGlu ZmVyaW9yX3B0aWQpKQogICAgICAgewogCXN0cnVjdCBzYXZlZF9wdGlkcyAq dG1wID0gKnA7CiAJZGVsZXRlX3RocmVhZCAodG1wLT5wdGlkKTsKQEAgLTEw ODIsMjIgKzExODIsMjIgQEAgbGludXhfbmF0X3Bvc3RfYXR0YWNoX3dhaXQg KHB0aWRfdCBwdGlkLCBpbnQgZmlyc3QsIGludCAqY2xvbmVkLAogCQkJICAg ICJMTlBBVzogQXR0YWNoaW5nIHRvIGEgc3RvcHBlZCBwcm9jZXNzXG4iKTsK IAogICAgICAgLyogVGhlIHByb2Nlc3MgaXMgZGVmaW5pdGVseSBzdG9wcGVk LiAgSXQgaXMgaW4gYSBqb2IgY29udHJvbAotCSBzdG9wLCB1bmxlc3MgdGhl IGtlcm5lbCBwcmVkYXRlcyB0aGUgVEFTS19TVE9QUEVEIC8KLQkgVEFTS19U UkFDRUQgZGlzdGluY3Rpb24sIGluIHdoaWNoIGNhc2UgaXQgbWlnaHQgYmUg aW4gYQotCSBwdHJhY2Ugc3RvcC4gIE1ha2Ugc3VyZSBpdCBpcyBpbiBhIHB0 cmFjZSBzdG9wOyBmcm9tIHRoZXJlIHdlCi0JIGNhbiBraWxsIGl0LCBzaWdu YWwgaXQsIGV0IGNldGVyYS4KKyAgICAgICAgIHN0b3AsIHVubGVzcyB0aGUg a2VybmVsIHByZWRhdGVzIHRoZSBUQVNLX1NUT1BQRUQgLworICAgICAgICAg VEFTS19UUkFDRUQgZGlzdGluY3Rpb24sIGluIHdoaWNoIGNhc2UgaXQgbWln aHQgYmUgaW4gYQorICAgICAgICAgcHRyYWNlIHN0b3AuICBNYWtlIHN1cmUg aXQgaXMgaW4gYSBwdHJhY2Ugc3RvcDsgZnJvbSB0aGVyZSB3ZQorICAgICAg ICAgY2FuIGtpbGwgaXQsIHNpZ25hbCBpdCwgZXQgY2V0ZXJhLgogCiAgICAg ICAgICBGaXJzdCBtYWtlIHN1cmUgdGhlcmUgaXMgYSBwZW5kaW5nIFNJR1NU T1AuICBTaW5jZSB3ZSBhcmUKLQkgYWxyZWFkeSBhdHRhY2hlZCwgdGhlIHBy b2Nlc3MgY2FuIG5vdCB0cmFuc2l0aW9uIGZyb20gc3RvcHBlZAotCSB0byBy dW5uaW5nIHdpdGhvdXQgYSBQVFJBQ0VfQ09OVDsgc28gd2Uga25vdyB0aGlz IHNpZ25hbCB3aWxsCi0JIGdvIGludG8gdGhlIHF1ZXVlLiAgVGhlIFNJR1NU T1AgZ2VuZXJhdGVkIGJ5IFBUUkFDRV9BVFRBQ0ggaXMKLQkgcHJvYmFibHkg YWxyZWFkeSBpbiB0aGUgcXVldWUgKHVubGVzcyB0aGlzIGtlcm5lbCBpcyBv bGQKLQkgZW5vdWdoIHRvIHVzZSBUQVNLX1NUT1BQRUQgZm9yIHB0cmFjZSBz dG9wcyk7IGJ1dCBzaW5jZSBTSUdTVE9QCi0JIGlzIG5vdCBhbiBSVCBzaWdu YWwsIGl0IGNhbiBvbmx5IGJlIHF1ZXVlZCBvbmNlLiAgKi8KKyAgICAgICAg IGFscmVhZHkgYXR0YWNoZWQsIHRoZSBwcm9jZXNzIGNhbiBub3QgdHJhbnNp dGlvbiBmcm9tIHN0b3BwZWQKKyAgICAgICAgIHRvIHJ1bm5pbmcgd2l0aG91 dCBhIFBUUkFDRV9DT05UOyBzbyB3ZSBrbm93IHRoaXMgc2lnbmFsIHdpbGwK KyAgICAgICAgIGdvIGludG8gdGhlIHF1ZXVlLiAgVGhlIFNJR1NUT1AgZ2Vu ZXJhdGVkIGJ5IFBUUkFDRV9BVFRBQ0ggaXMKKyAgICAgICAgIHByb2JhYmx5 IGFscmVhZHkgaW4gdGhlIHF1ZXVlICh1bmxlc3MgdGhpcyBrZXJuZWwgaXMg b2xkCisgICAgICAgICBlbm91Z2ggdG8gdXNlIFRBU0tfU1RPUFBFRCBmb3Ig cHRyYWNlIHN0b3BzKTsgYnV0IHNpbmNlIFNJR1NUT1AKKyAgICAgICAgIGlz IG5vdCBhbiBSVCBzaWduYWwsIGl0IGNhbiBvbmx5IGJlIHF1ZXVlZCBvbmNl LiAgKi8KICAgICAgIGtpbGxfbHdwIChwaWQsIFNJR1NUT1ApOwogCiAgICAg ICAvKiBGaW5hbGx5LCByZXN1bWUgdGhlIHN0b3BwZWQgcHJvY2Vzcy4gIFRo aXMgd2lsbCBkZWxpdmVyIHRoZSBTSUdTVE9QCi0JIChvciBhIGhpZ2hlciBw cmlvcml0eSBzaWduYWwsIGp1c3QgbGlrZSBub3JtYWwgUFRSQUNFX0FUVEFD SCkuICAqLworICAgICAgICAgKG9yIGEgaGlnaGVyIHByaW9yaXR5IHNpZ25h bCwganVzdCBsaWtlIG5vcm1hbCBQVFJBQ0VfQVRUQUNIKS4gICovCiAgICAg ICBwdHJhY2UgKFBUUkFDRV9DT05ULCBwaWQsIDAsIDApOwogICAgIH0KIApA QCAtMTI1OCw3ICsxMzU4LDggQEAgbGludXhfbmF0X2F0dGFjaCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQogICAgIH0KIAogICAvKiBBZGQgdGhlIGlu aXRpYWwgcHJvY2VzcyBhcyB0aGUgZmlyc3QgTFdQIHRvIHRoZSBsaXN0LiAg Ki8KLSAgaW5mZXJpb3JfcHRpZCA9IEJVSUxEX0xXUCAoR0VUX1BJRCAoaW5m ZXJpb3JfcHRpZCksIEdFVF9QSUQgKGluZmVyaW9yX3B0aWQpKTsKKyAgaW5m ZXJpb3JfcHRpZCA9CisgICAgQlVJTERfTFdQIChHRVRfUElEIChpbmZlcmlv cl9wdGlkKSwgR0VUX1BJRCAoaW5mZXJpb3JfcHRpZCkpOwogICBscCA9IGFk ZF9sd3AgKGluZmVyaW9yX3B0aWQpOwogCiAgIHN0YXR1cyA9IGxpbnV4X25h dF9wb3N0X2F0dGFjaF93YWl0IChscC0+cHRpZCwgMSwgJmxwLT5jbG9uZWQs CkBAIC0xMjgxLDggKzEzODIsOCBAQCBsaW51eF9uYXRfYXR0YWNoIChjaGFy ICphcmdzLCBpbnQgZnJvbV90dHkpCiAgIGVsc2UKICAgICB7CiAgICAgICAv KiBXZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhpcyBMV1AsIHNvIHB1dCB0aGUg d2FpdCByZXN1bHQgb24gdGhlCi0JIHBpcGUuICBUaGUgZXZlbnQgbG9vcCB3 aWxsIHdha2UgdXAgYW5kIGdldHMgdXMgdG8gaGFuZGxpbmcKLQkgdGhpcyBl dmVudC4gICovCisgICAgICAgICBwaXBlLiAgVGhlIGV2ZW50IGxvb3Agd2ls bCB3YWtlIHVwIGFuZCBnZXRzIHVzIHRvIGhhbmRsaW5nCisgICAgICAgICB0 aGlzIGV2ZW50LiAgKi8KICAgICAgIGxpbnV4X25hdF9ldmVudF9waXBlX3B1 c2ggKEdFVF9QSUQgKGxwLT5wdGlkKSwgc3RhdHVzLAogCQkJCSBscC0+Y2xv bmVkID8gX19XQ0xPTkUgOiAwKTsKICAgICAgIC8qIFJlZ2lzdGVyIGluIHRo ZSBldmVudCBsb29wLiAgKi8KQEAgLTEzMDgsOCArMTQwOSw3IEBAIGdldF9w ZW5kaW5nX3N0YXR1cyAoc3RydWN0IGx3cF9pbmZvICpscCwgaW50ICpzdGF0 dXMpCiAgICpzdGF0dXMgPSAwOwogICBpZiAoR0VUX0xXUCAobHAtPnB0aWQp ID09IEdFVF9MV1AgKGxhc3RfcHRpZCkpCiAgICAgewotICAgICAgaWYgKHN0 b3Bfc2lnbmFsICE9IFRBUkdFVF9TSUdOQUxfMAotCSAgJiYgc2lnbmFsX3Bh c3Nfc3RhdGUgKHN0b3Bfc2lnbmFsKSkKKyAgICAgIGlmIChzdG9wX3NpZ25h bCAhPSBUQVJHRVRfU0lHTkFMXzAgJiYgc2lnbmFsX3Bhc3Nfc3RhdGUgKHN0 b3Bfc2lnbmFsKSkKIAkqc3RhdHVzID0gV19TVE9QQ09ERSAodGFyZ2V0X3Np Z25hbF90b19ob3N0IChzdG9wX3NpZ25hbCkpOwogICAgIH0KICAgZWxzZSBp ZiAodGFyZ2V0X2Nhbl9hc3luY19wICgpKQpAQCAtMTM4NiwxNyArMTQ4Niwx NSBAQCBsaW51eF9uYXRfZGV0YWNoIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCiAKICAgLyogUGFzcyBvbiBhbnkgcGVuZGluZyBzaWduYWwgZm9yIHRo ZSBsYXN0IExXUC4gICovCiAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICphcmdz ID09ICdcMCcpCi0gICAgICAmJiBnZXRfcGVuZGluZ19zdGF0dXMgKGx3cF9s aXN0LCAmc3RhdHVzKSAhPSAtMQotICAgICAgJiYgV0lGU1RPUFBFRCAoc3Rh dHVzKSkKKyAgICAgICYmIGdldF9wZW5kaW5nX3N0YXR1cyAobHdwX2xpc3Qs ICZzdGF0dXMpICE9IC0xICYmIFdJRlNUT1BQRUQgKHN0YXR1cykpCiAgICAg ewogICAgICAgLyogUHV0IHRoZSBzaWduYWwgbnVtYmVyIGluIEFSR1Mgc28g dGhhdCBpbmZfcHRyYWNlX2RldGFjaCB3aWxsCi0JIHBhc3MgaXQgYWxvbmcg d2l0aCBQVFJBQ0VfREVUQUNILiAgKi8KKyAgICAgICAgIHBhc3MgaXQgYWxv bmcgd2l0aCBQVFJBQ0VfREVUQUNILiAgKi8KICAgICAgIGFyZ3MgPSBhbGxv Y2EgKDgpOwogICAgICAgc3ByaW50ZiAoYXJncywgIiVkIiwgKGludCkgV1NU T1BTSUcgKHN0YXR1cykpOwogICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAogCQkJICAiTE5EOiBTZW5kaW5nIHNpZ25hbCAlcyB0byAl c1xuIiwKLQkJCSAgYXJncywKLQkJCSAgdGFyZ2V0X3BpZF90b19zdHIgKGx3 cF9saXN0LT5wdGlkKSk7CisJCQkgIGFyZ3MsIHRhcmdldF9waWRfdG9fc3Ry IChsd3BfbGlzdC0+cHRpZCkpOwogICAgIH0KIAogICAvKiBEZXN0cm95IExX UCBpbmZvOyBpdCdzIG5vIGxvbmdlciB2YWxpZC4gICovCkBAIC0xNTI1LDcg KzE2MjMsNyBAQCBsaW51eF9uYXRfcmVzdW1lIChwdGlkX3QgcHRpZCwgaW50 IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWdubykKICAgaWYgKGxwLT5z dGF0dXMpCiAgICAgewogICAgICAgLyogRklYTUU6IFdoYXQgc2hvdWxkIHdl IGRvIGlmIHdlIGFyZSBzdXBwb3NlZCB0byBjb250aW51ZQotCSB0aGlzIHRo cmVhZCB3aXRoIGEgc2lnbmFsPyAgKi8KKyAgICAgICAgIHRoaXMgdGhyZWFk IHdpdGggYSBzaWduYWw/ICAqLwogICAgICAgZ2RiX2Fzc2VydCAoc2lnbm8g PT0gVEFSR0VUX1NJR05BTF8wKTsKIAogICAgICAgaWYgKGRlYnVnX2xpbnV4 X25hdCkKQEAgLTE1OTMsOCArMTY5MSw3IEBAIGtpbGxfbHdwIChpbnQgbHdw aWQsIGludCBzaWdubykKICAgIHRydWUsIHRoZSBuZXcgTFdQIHJlbWFpbnMg c3RvcHBlZCwgb3RoZXJ3aXNlIGl0IGlzIGNvbnRpbnVlZC4gICovCiAKIHN0 YXRpYyBpbnQKLWxpbnV4X2hhbmRsZV9leHRlbmRlZF93YWl0IChzdHJ1Y3Qg bHdwX2luZm8gKmxwLCBpbnQgc3RhdHVzLAotCQkJICAgIGludCBzdG9wcGlu ZykKK2xpbnV4X2hhbmRsZV9leHRlbmRlZF93YWl0IChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCBpbnQgc3RhdHVzLCBpbnQgc3RvcHBpbmcpCiB7CiAgIGludCBw aWQgPSBHRVRfTFdQIChscC0+cHRpZCk7CiAgIHN0cnVjdCB0YXJnZXRfd2Fp dHN0YXR1cyAqb3Vyc3RhdHVzID0gJmxwLT53YWl0c3RhdHVzOwpAQCAtMTYx MCw3ICsxNzA3LDcgQEAgbGludXhfaGFuZGxlX2V4dGVuZGVkX3dhaXQgKHN0 cnVjdCBsd3BfaW5mbyAqbHAsIGludCBzdGF0dXMsCiAgICAgICBwdHJhY2Ug KFBUUkFDRV9HRVRFVkVOVE1TRywgcGlkLCAwLCAmbmV3X3BpZCk7CiAKICAg ICAgIC8qIElmIHdlIGhhdmVuJ3QgYWxyZWFkeSBzZWVuIHRoZSBuZXcgUElE IHN0b3AsIHdhaXQgZm9yIGl0IG5vdy4gICovCi0gICAgICBpZiAoISBwdWxs X3BpZF9mcm9tX2xpc3QgKCZzdG9wcGVkX3BpZHMsIG5ld19waWQsICZzdGF0 dXMpKQorICAgICAgaWYgKCFwdWxsX3BpZF9mcm9tX2xpc3QgKCZzdG9wcGVk X3BpZHMsIG5ld19waWQsICZzdGF0dXMpKQogCXsKIAkgIC8qIFRoZSBuZXcg Y2hpbGQgaGFzIGEgcGVuZGluZyBTSUdTVE9QLiAgV2UgY2FuJ3QgYWZmZWN0 IGl0IHVudGlsIGl0CiAJICAgICBoaXRzIHRoZSBTSUdTVE9QLCBidXQgd2Un cmUgYWxyZWFkeSBhdHRhY2hlZC4gICovCkBAIC0xNjIzLDcgKzE3MjAsOCBA QCBsaW51eF9oYW5kbGVfZXh0ZW5kZWRfd2FpdCAoc3RydWN0IGx3cF9pbmZv ICpscCwgaW50IHN0YXR1cywKIAkJCSAgICBfKCJ3YWl0IHJldHVybmVkIHVu ZXhwZWN0ZWQgUElEICVkIiksIHJldCk7CiAJICBlbHNlIGlmICghV0lGU1RP UFBFRCAoc3RhdHVzKSkKIAkgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9f LCBfX0xJTkVfXywKLQkJCSAgICBfKCJ3YWl0IHJldHVybmVkIHVuZXhwZWN0 ZWQgc3RhdHVzIDB4JXgiKSwgc3RhdHVzKTsKKwkJCSAgICBfKCJ3YWl0IHJl dHVybmVkIHVuZXhwZWN0ZWQgc3RhdHVzIDB4JXgiKSwKKwkJCSAgICBzdGF0 dXMpOwogCX0KIAogICAgICAgb3Vyc3RhdHVzLT52YWx1ZS5yZWxhdGVkX3Bp ZCA9IG5ld19waWQ7CkBAIC0xNjQxLDEyICsxNzM5LDEyIEBAIGxpbnV4X2hh bmRsZV9leHRlbmRlZF93YWl0IChzdHJ1Y3QgbHdwX2luZm8gKmxwLCBpbnQg c3RhdHVzLAogCSAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1Ap CiAJICAgIHsKIAkgICAgICAvKiBUaGlzIGNhbiBoYXBwZW4gaWYgc29tZW9u ZSBzdGFydHMgc2VuZGluZyBzaWduYWxzIHRvCi0JCSB0aGUgbmV3IHRocmVh ZCBiZWZvcmUgaXQgZ2V0cyBhIGNoYW5jZSB0byBydW4sIHdoaWNoCi0JCSBo YXZlIGEgbG93ZXIgbnVtYmVyIHRoYW4gU0lHU1RPUCAoZS5nLiBTSUdVU1Ix KS4KLQkJIFRoaXMgaXMgYW4gdW5saWtlbHkgY2FzZSwgYW5kIGhhcmRlciB0 byBoYW5kbGUgZm9yCi0JCSBmb3JrIC8gdmZvcmsgdGhhbiBmb3IgY2xvbmUs IHNvIHdlIGRvIG5vdCB0cnkgLSBidXQKLQkJIHdlIGhhbmRsZSBpdCBmb3Ig Y2xvbmUgZXZlbnRzIGhlcmUuICBXZSdsbCBzZW5kCi0JCSB0aGUgb3RoZXIg c2lnbmFsIG9uIHRvIHRoZSB0aHJlYWQgYmVsb3cuICAqLworCSAgICAgICAg IHRoZSBuZXcgdGhyZWFkIGJlZm9yZSBpdCBnZXRzIGEgY2hhbmNlIHRvIHJ1 biwgd2hpY2gKKwkgICAgICAgICBoYXZlIGEgbG93ZXIgbnVtYmVyIHRoYW4g U0lHU1RPUCAoZS5nLiBTSUdVU1IxKS4KKwkgICAgICAgICBUaGlzIGlzIGFu IHVubGlrZWx5IGNhc2UsIGFuZCBoYXJkZXIgdG8gaGFuZGxlIGZvcgorCSAg ICAgICAgIGZvcmsgLyB2Zm9yayB0aGFuIGZvciBjbG9uZSwgc28gd2UgZG8g bm90IHRyeSAtIGJ1dAorCSAgICAgICAgIHdlIGhhbmRsZSBpdCBmb3IgY2xv bmUgZXZlbnRzIGhlcmUuICBXZSdsbCBzZW5kCisJICAgICAgICAgdGhlIG90 aGVyIHNpZ25hbCBvbiB0byB0aGUgdGhyZWFkIGJlbG93LiAgKi8KIAogCSAg ICAgIG5ld19scC0+c2lnbmFsbGVkID0gMTsKIAkgICAgfQpAQCAtMTY5MSw4 ICsxNzg5LDcgQEAgbGludXhfaGFuZGxlX2V4dGVuZGVkX3dhaXQgKHN0cnVj dCBsd3BfaW5mbyAqbHAsIGludCBzdGF0dXMsCiAgICAgICByZXR1cm4gMDsK ICAgICB9CiAKLSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVf XywKLQkJICBfKCJ1bmtub3duIHB0cmFjZSBldmVudCAlZCIpLCBldmVudCk7 CisgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oInVu a25vd24gcHRyYWNlIGV2ZW50ICVkIiksIGV2ZW50KTsKIH0KIAogLyogV2Fp dCBmb3IgTFAgdG8gc3RvcC4gIFJldHVybnMgdGhlIHdhaXQgc3RhdHVzLCBv ciAwIGlmIHRoZSBMV1AgaGFzCkBAIC0xNzU3LDEyICsxODU0LDEyIEBAIHdh aXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQogICBnZGJfYXNzZXJ0IChX SUZTVE9QUEVEIChzdGF0dXMpKTsKIAogICAvKiBIYW5kbGUgR05VL0xpbnV4 J3MgZXh0ZW5kZWQgd2FpdHN0YXR1cyBmb3IgdHJhY2UgZXZlbnRzLiAgKi8K LSAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykgJiYgV1NUT1BTSUcgKHN0YXR1 cykgPT0gU0lHVFJBUCAmJiBzdGF0dXMgPj4gMTYgIT0gMCkKKyAgaWYgKFdJ RlNUT1BQRUQgKHN0YXR1cykgJiYgV1NUT1BTSUcgKHN0YXR1cykgPT0gU0lH VFJBUAorICAgICAgJiYgc3RhdHVzID4+IDE2ICE9IDApCiAgICAgewogICAg ICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKIAlmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCi0JCQkgICAgIldMOiBIYW5kbGluZyBleHRlbmRlZCBz dGF0dXMgMHglMDZ4XG4iLAotCQkJICAgIHN0YXR1cyk7CisJCQkgICAgIldM OiBIYW5kbGluZyBleHRlbmRlZCBzdGF0dXMgMHglMDZ4XG4iLCBzdGF0dXMp OwogICAgICAgaWYgKGxpbnV4X2hhbmRsZV9leHRlbmRlZF93YWl0IChscCwg c3RhdHVzLCAxKSkKIAlyZXR1cm4gd2FpdF9sd3AgKGxwKTsKICAgICB9CkBA IC0xODg5LDcgKzE5ODYsNyBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVj dCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAJCQkJICAgICAgdGFyZ2V0 X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CiAJCX0KIAkgICAgICAvKiBIb2xk IHRoaXMgZXZlbnQvd2FpdHN0YXR1cyB3aGlsZSB3ZSBjaGVjayB0byBzZWUg aWYKLQkJIHRoZXJlIGFyZSBhbnkgbW9yZSAod2Ugc3RpbGwgd2FudCB0byBn ZXQgdGhhdCBTSUdTVE9QKS4gKi8KKwkgICAgICAgICB0aGVyZSBhcmUgYW55 IG1vcmUgKHdlIHN0aWxsIHdhbnQgdG8gZ2V0IHRoYXQgU0lHU1RPUCkuICov CiAJICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwgZGF0YSk7CiAKIAkg ICAgICBpZiAodGFyZ2V0X2Nhbl9hc3luY19wICgpKQpAQCAtMTg5OSw3ICsx OTk2LDcgQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8g KmxwLCB2b2lkICpkYXRhKQogCQkgIGlmICghY2FuY2VsX2JyZWFrcG9pbnQg KGxwKSkKIAkJICAgIHsKIAkJICAgICAgLyogVGhlcmUgd2FzIG5vIGdkYiBi cmVha3BvaW50IHNldCBhdCBwYy4gIFB1dAotCQkJIHRoZSBldmVudCBiYWNr IGluIHRoZSBxdWV1ZS4gICovCisJCSAgICAgICAgIHRoZSBldmVudCBiYWNr IGluIHRoZSBxdWV1ZS4gICovCiAJCSAgICAgIGlmIChkZWJ1Z19saW51eF9u YXQpCiAJCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCiAJCQkJ CSAgICAiU1dDOiBraWxsICVzLCAlc1xuIiwKQEAgLTE5NTQsOCArMjA1MSw4 IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwg dm9pZCAqZGF0YSkKIAkgICAgICBzdG9wX3dhaXRfY2FsbGJhY2sgKGxwLCBk YXRhKTsKIAogCSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlz IHN0aWxsIGVtcHR5LCB1c2UgaXQgdG8KLQkJIGhvbGQgdGhpcyBldmVudC4g IElmIG5vdCwgdGhlbiB0aGlzIGV2ZW50IG11c3QgYmUKLQkJIHJldHVybmVk IHRvIHRoZSBldmVudCBxdWV1ZSBvZiB0aGUgTFdQLiAgKi8KKwkgICAgICAg ICBob2xkIHRoaXMgZXZlbnQuICBJZiBub3QsIHRoZW4gdGhpcyBldmVudCBt dXN0IGJlCisJICAgICAgICAgcmV0dXJuZWQgdG8gdGhlIGV2ZW50IHF1ZXVl IG9mIHRoZSBMV1AuICAqLwogCSAgICAgIGlmIChscC0+c3RhdHVzIHx8IHRh cmdldF9jYW5fYXN5bmNfcCAoKSkKIAkJewogCQkgIGlmIChkZWJ1Z19saW51 eF9uYXQpCkBAIC0xOTg4LDcgKzIwODUsNyBAQCBzdG9wX3dhaXRfY2FsbGJh Y2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgICB0aGUg YXBwcm9wcmlhdGUgYml0cyBpbiBQRU5ESU5HLCBhbmQgcmV0dXJuIDEgLSBv dGhlcndpc2UgcmV0dXJuIDAuICAqLwogCiBzdGF0aWMgaW50Ci1saW51eF9u YXRfaGFzX3BlbmRpbmcgKGludCBwaWQsIHNpZ3NldF90ICpwZW5kaW5nLCBz aWdzZXRfdCAqZmx1c2hfbWFzaykKK2xpbnV4X25hdF9oYXNfcGVuZGluZyAo aW50IHBpZCwgc2lnc2V0X3QgKiBwZW5kaW5nLCBzaWdzZXRfdCAqIGZsdXNo X21hc2spCiB7CiAgIHNpZ3NldF90IGJsb2NrZWQsIGlnbm9yZWQ7CiAgIGlu dCBpOwpAQCAtMjAwMSw4ICsyMDk4LDcgQEAgbGludXhfbmF0X2hhc19wZW5k aW5nIChpbnQgcGlkLCBzaWdzZXRfdCAqcGVuZGluZywgc2lnc2V0X3QgKmZs dXNoX21hc2spCiAgIGZvciAoaSA9IDE7IGkgPCBOU0lHOyBpKyspCiAgICAg aWYgKHNpZ2lzbWVtYmVyIChwZW5kaW5nLCBpKSkKICAgICAgIGlmICghc2ln aXNtZW1iZXIgKGZsdXNoX21hc2ssIGkpCi0JICB8fCBzaWdpc21lbWJlciAo JmJsb2NrZWQsIGkpCi0JICB8fCBzaWdpc21lbWJlciAoJmlnbm9yZWQsIGkp KQorCSAgfHwgc2lnaXNtZW1iZXIgKCZibG9ja2VkLCBpKSB8fCBzaWdpc21l bWJlciAoJmlnbm9yZWQsIGkpKQogCXNpZ2RlbHNldCAocGVuZGluZywgaSk7 CiAKICAgaWYgKHNpZ2lzZW1wdHlzZXQgKHBlbmRpbmcpKQpAQCAtMjA0MSw3 ICsyMTM3LDggQEAgZmx1c2hfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAq bHAsIHZvaWQgKmRhdGEpCiAgICAgewogICAgICAgaWYgKGRlYnVnX2xpbnV4 X25hdCkKIAlwcmludGZfdW5maWx0ZXJlZCAoXygiRkM6IExQIGhhcyBwZW5k aW5nIHN0YXR1cyAlMDZ4XG4iKSwgbHAtPnN0YXR1cyk7Ci0gICAgICBpZiAo V0lGU1RPUFBFRCAobHAtPnN0YXR1cykgJiYgc2lnaXNtZW1iZXIgKGZsdXNo X21hc2ssIFdTVE9QU0lHIChscC0+c3RhdHVzKSkpCisgICAgICBpZiAoV0lG U1RPUFBFRCAobHAtPnN0YXR1cykKKwkgICYmIHNpZ2lzbWVtYmVyIChmbHVz aF9tYXNrLCBXU1RPUFNJRyAobHAtPnN0YXR1cykpKQogCWxwLT5zdGF0dXMg PSAwOwogICAgIH0KIApAQCAtMjA1Niw3ICsyMTUzLDcgQEAgZmx1c2hfY2Fs bGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAJICYm IGxpbnV4X25hdF9oYXNfcGVuZGluZyAoR0VUX0xXUCAobHAtPnB0aWQpLCAm cGVuZGluZywgZmx1c2hfbWFzaykpCiAgICAgewogICAgICAgaW50IHJldDsK LSAgICAgIAorCiAgICAgICBlcnJubyA9IDA7CiAgICAgICByZXQgPSBwdHJh Y2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAsIDApOwog ICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKQEAgLTIzMjYsOCArMjQyMyw3 IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHN0 YXR1cywgaW50IG9wdGlvbnMpCiAgICAgICBpZiAob3B0aW9ucyAmIF9fV0NM T05FKQogCWxwLT5jbG9uZWQgPSAxOwogCi0gICAgICBnZGJfYXNzZXJ0IChX SUZTVE9QUEVEIChzdGF0dXMpCi0JCSAgJiYgV1NUT1BTSUcgKHN0YXR1cykg PT0gU0lHU1RPUCk7CisgICAgICBnZGJfYXNzZXJ0IChXSUZTVE9QUEVEIChz dGF0dXMpICYmIFdTVE9QU0lHIChzdGF0dXMpID09IFNJR1NUT1ApOwogICAg ICAgbHAtPnNpZ25hbGxlZCA9IDE7CiAKICAgICAgIGlmICghaW5fdGhyZWFk X2xpc3QgKGluZmVyaW9yX3B0aWQpKQpAQCAtMjM0NSwxMiArMjQ0MSwxMiBA QCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzdGF0 dXMsIGludCBvcHRpb25zKQogICAgIHNhdmVfc2lnaW5mbyAobHApOwogCiAg IC8qIEhhbmRsZSBHTlUvTGludXgncyBleHRlbmRlZCB3YWl0c3RhdHVzIGZv ciB0cmFjZSBldmVudHMuICAqLwotICBpZiAoV0lGU1RPUFBFRCAoc3RhdHVz KSAmJiBXU1RPUFNJRyAoc3RhdHVzKSA9PSBTSUdUUkFQICYmIHN0YXR1cyA+ PiAxNiAhPSAwKQorICBpZiAoV0lGU1RPUFBFRCAoc3RhdHVzKSAmJiBXU1RP UFNJRyAoc3RhdHVzKSA9PSBTSUdUUkFQCisgICAgICAmJiBzdGF0dXMgPj4g MTYgIT0gMCkKICAgICB7CiAgICAgICBpZiAoZGVidWdfbGludXhfbmF0KQog CWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLQkJCSAgICAiTExX OiBIYW5kbGluZyBleHRlbmRlZCBzdGF0dXMgMHglMDZ4XG4iLAotCQkJICAg IHN0YXR1cyk7CisJCQkgICAgIkxMVzogSGFuZGxpbmcgZXh0ZW5kZWQgc3Rh dHVzIDB4JTA2eFxuIiwgc3RhdHVzKTsKICAgICAgIGlmIChsaW51eF9oYW5k bGVfZXh0ZW5kZWRfd2FpdCAobHAsIHN0YXR1cywgMCkpCiAJcmV0dXJuIE5V TEw7CiAgICAgfQpAQCAtMjM1OSwxNSArMjQ1NSwxNSBAQCBsaW51eF9uYXRf ZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzdGF0dXMsIGludCBvcHRp b25zKQogICBpZiAoKFdJRkVYSVRFRCAoc3RhdHVzKSB8fCBXSUZTSUdOQUxF RCAoc3RhdHVzKSkgJiYgbnVtX2x3cHMgPiAxKQogICAgIHsKICAgICAgIC8q IElmIHRoaXMgaXMgdGhlIG1haW4gdGhyZWFkLCB3ZSBtdXN0IHN0b3AgYWxs IHRocmVhZHMgYW5kCi0JIHZlcmlmeSBpZiB0aGV5IGFyZSBzdGlsbCBhbGl2 ZS4gIFRoaXMgaXMgYmVjYXVzZSBpbiB0aGUgbnB0bAotCSB0aHJlYWQgbW9k ZWwsIHRoZXJlIGlzIG5vIHNpZ25hbCBpc3N1ZWQgZm9yIGV4aXRpbmcgTFdQ cwotCSBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZC4gIFdlIG9ubHkgZ2V0 IHRoZSBtYWluIHRocmVhZCBleGl0Ci0JIHNpZ25hbCBvbmNlIGFsbCBjaGls ZCB0aHJlYWRzIGhhdmUgYWxyZWFkeSBleGl0ZWQuICBJZiB3ZQotCSBzdG9w IGFsbCB0aGUgdGhyZWFkcyBhbmQgdXNlIHRoZSBzdG9wX3dhaXRfY2FsbGJh Y2sgdG8gY2hlY2sKLQkgaWYgdGhleSBoYXZlIGV4aXRlZCB3ZSBjYW4gZGV0 ZXJtaW5lIHdoZXRoZXIgdGhpcyBzaWduYWwKLQkgc2hvdWxkIGJlIGlnbm9y ZWQgb3Igd2hldGhlciBpdCBtZWFucyB0aGUgZW5kIG9mIHRoZSBkZWJ1Z2dl ZAotCSBhcHBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB3aGljaCB0aHJlYWRp bmcgbW9kZWwgaXMgYmVpbmcKLQkgdXNlZC4gICovCisgICAgICAgICB2ZXJp ZnkgaWYgdGhleSBhcmUgc3RpbGwgYWxpdmUuICBUaGlzIGlzIGJlY2F1c2Ug aW4gdGhlIG5wdGwKKyAgICAgICAgIHRocmVhZCBtb2RlbCwgdGhlcmUgaXMg bm8gc2lnbmFsIGlzc3VlZCBmb3IgZXhpdGluZyBMV1BzCisgICAgICAgICBv dGhlciB0aGFuIHRoZSBtYWluIHRocmVhZC4gIFdlIG9ubHkgZ2V0IHRoZSBt YWluIHRocmVhZCBleGl0CisgICAgICAgICBzaWduYWwgb25jZSBhbGwgY2hp bGQgdGhyZWFkcyBoYXZlIGFscmVhZHkgZXhpdGVkLiAgSWYgd2UKKyAgICAg ICAgIHN0b3AgYWxsIHRoZSB0aHJlYWRzIGFuZCB1c2UgdGhlIHN0b3Bfd2Fp dF9jYWxsYmFjayB0byBjaGVjaworICAgICAgICAgaWYgdGhleSBoYXZlIGV4 aXRlZCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBzaWduYWwKKyAg ICAgICAgIHNob3VsZCBiZSBpZ25vcmVkIG9yIHdoZXRoZXIgaXQgbWVhbnMg dGhlIGVuZCBvZiB0aGUgZGVidWdnZWQKKyAgICAgICAgIGFwcGxpY2F0aW9u LCByZWdhcmRsZXNzIG9mIHdoaWNoIHRocmVhZGluZyBtb2RlbCBpcyBiZWlu ZworICAgICAgICAgdXNlZC4gICovCiAgICAgICBpZiAoR0VUX1BJRCAobHAt PnB0aWQpID09IEdFVF9MV1AgKGxwLT5wdGlkKSkKIAl7CiAJICBscC0+c3Rv cHBlZCA9IDE7CkBAIC0yMzgyLDggKzI0NzgsOCBAQCBsaW51eF9uYXRfZmls dGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzdGF0dXMsIGludCBvcHRpb25z KQogICAgICAgZXhpdF9sd3AgKGxwKTsKIAogICAgICAgLyogSWYgdGhlcmUg aXMgYXQgbGVhc3Qgb25lIG1vcmUgTFdQLCB0aGVuIHRoZSBleGl0IHNpZ25h bCB3YXMKLQkgbm90IHRoZSBlbmQgb2YgdGhlIGRlYnVnZ2VkIGFwcGxpY2F0 aW9uIGFuZCBzaG91bGQgYmUKLQkgaWdub3JlZC4gICovCisgICAgICAgICBu b3QgdGhlIGVuZCBvZiB0aGUgZGVidWdnZWQgYXBwbGljYXRpb24gYW5kIHNo b3VsZCBiZQorICAgICAgICAgaWdub3JlZC4gICovCiAgICAgICBpZiAobnVt X2x3cHMgPiAwKQogCXsKIAkgIC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBhdCBs ZWFzdCBvbmUgdGhyZWFkIHJ1bm5pbmcuICAqLwpAQCAtMjQxNiw4ICsyNTEy LDcgQEAgbGludXhfbmF0X2ZpbHRlcl9ldmVudCAoaW50IGx3cGlkLCBpbnQg c3RhdHVzLCBpbnQgb3B0aW9ucykKIAogICAvKiBNYWtlIHN1cmUgd2UgZG9u J3QgcmVwb3J0IGEgU0lHU1RPUCB0aGF0IHdlIHNlbnQgb3Vyc2VsdmVzIGlu CiAgICAgIGFuIGF0dGVtcHQgdG8gc3RvcCBhbiBMV1AuICAqLwotICBpZiAo bHAtPnNpZ25hbGxlZAotICAgICAgJiYgV0lGU1RPUFBFRCAoc3RhdHVzKSAm JiBXU1RPUFNJRyAoc3RhdHVzKSA9PSBTSUdTVE9QKQorICBpZiAobHAtPnNp Z25hbGxlZCAmJiBXSUZTVE9QUEVEIChzdGF0dXMpICYmIFdTVE9QU0lHIChz dGF0dXMpID09IFNJR1NUT1ApCiAgICAgewogICAgICAgaWYgKGRlYnVnX2xp bnV4X25hdCkKIAlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCkBA IC0yNDgyLDkgKzI1NzcsNyBAQCBsb2NhbF9ldmVudF9xdWV1ZV90b19waXBl ICh2b2lkKQogICB3aGlsZSAodykKICAgICB7CiAgICAgICBzdHJ1Y3Qgd2Fp dHBpZF9yZXN1bHQgKm5leHQgPSB3LT5uZXh0OwotICAgICAgbGludXhfbmF0 X2V2ZW50X3BpcGVfcHVzaCAody0+cGlkLAotCQkJCSB3LT5zdGF0dXMsCi0J CQkJIHctPm9wdGlvbnMpOworICAgICAgbGludXhfbmF0X2V2ZW50X3BpcGVf cHVzaCAody0+cGlkLCB3LT5zdGF0dXMsIHctPm9wdGlvbnMpOwogICAgICAg eGZyZWUgKHcpOwogICAgICAgdyA9IG5leHQ7CiAgICAgfQpAQCAtMjYzMCw3 ICsyNzIzLDE2IEBAIHJldHJ5OgogCSAgIHF1ZXVlZCBldmVudHMuICAqLwog CWx3cGlkID0gcXVldWVkX3dhaXRwaWQgKHBpZCwgJnN0YXR1cywgb3B0aW9u cyk7CiAgICAgICBlbHNlCi0JbHdwaWQgPSBteV93YWl0cGlkIChwaWQsICZz dGF0dXMsIG9wdGlvbnMpOworCXsKKwkgIGlmIChSRUNPUkRfSVNfVVNFRCAm JiAhcmVjb3JkX3Jlc3VtZV9zdGVwKQorCSAgICB7CisJICAgICAgbHdwaWQg PSBteV93YWl0cGlkX3JlY29yZCAocGlkLCAmc3RhdHVzLCBvcHRpb25zKTsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgbHdwaWQgPSBteV93 YWl0cGlkIChwaWQsICZzdGF0dXMsIG9wdGlvbnMpOworCSAgICB9CisJfQog CiAgICAgICBpZiAobHdwaWQgPiAwKQogCXsKQEAgLTI3MDYsNyArMjgwOCw3 IEBAIHJldHJ5OgogICAgICAgaW50IHNpZ25vID0gdGFyZ2V0X3NpZ25hbF9m cm9tX2hvc3QgKFdTVE9QU0lHIChzdGF0dXMpKTsKIAogICAgICAgLyogSWYg d2UgZ2V0IGEgc2lnbmFsIHdoaWxlIHNpbmdsZS1zdGVwcGluZywgd2UgbWF5 IG5lZWQgc3BlY2lhbAotCSBjYXJlLCBlLmcuIHRvIHNraXAgdGhlIHNpZ25h bCBoYW5kbGVyLiAgRGVmZXIgdG8gY29tbW9uIGNvZGUuICAqLworICAgICAg ICAgY2FyZSwgZS5nLiB0byBza2lwIHRoZSBzaWduYWwgaGFuZGxlci4gIERl ZmVyIHRvIGNvbW1vbiBjb2RlLiAgKi8KICAgICAgIGlmICghbHAtPnN0ZXAK IAkgICYmIHNpZ25hbF9zdG9wX3N0YXRlIChzaWdubykgPT0gMAogCSAgJiYg c2lnbmFsX3ByaW50X3N0YXRlIChzaWdubykgPT0gMApAQCAtMjgyNSwxNyAr MjkyNywxNyBAQCBraWxsX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5m byAqbHAsIHZvaWQgKmRhdGEpCiAgICAgICBkbwogCXsKIAkgIHBpZCA9IG15 X3dhaXRwaWQgKEdFVF9MV1AgKGxwLT5wdGlkKSwgTlVMTCwgX19XQ0xPTkUp OwotCSAgaWYgKHBpZCAhPSAocGlkX3QpIC0xKQorCSAgaWYgKHBpZCAhPSAo cGlkX3QpIC0gMSkKIAkgICAgewogCSAgICAgIGlmIChkZWJ1Z19saW51eF9u YXQpCiAJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKIAkJCQkg ICAgIktXQzogd2FpdCAlcyByZWNlaXZlZCB1bmtub3duLlxuIiwKIAkJCQkg ICAgdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CiAJICAgICAgLyog VGhlIExpbnV4IGtlcm5lbCBzb21ldGltZXMgZmFpbHMgdG8ga2lsbCBhIHRo cmVhZAotCQkgY29tcGxldGVseSBhZnRlciBQVFJBQ0VfS0lMTDsgdGhhdCBn b2VzIGZyb20gdGhlIHN0b3AKLQkJIHBvaW50IGluIGRvX2Zvcmsgb3V0IHRv IHRoZSBvbmUgaW4KLQkJIGdldF9zaWduYWxfdG9fZGVsaWV2ZXIgYW5kIHdh aXRzIGFnYWluLiAgU28ga2lsbCBpdAotCQkgYWdhaW4uICAqLworCSAgICAg ICAgIGNvbXBsZXRlbHkgYWZ0ZXIgUFRSQUNFX0tJTEw7IHRoYXQgZ29lcyBm cm9tIHRoZSBzdG9wCisJICAgICAgICAgcG9pbnQgaW4gZG9fZm9yayBvdXQg dG8gdGhlIG9uZSBpbgorCSAgICAgICAgIGdldF9zaWduYWxfdG9fZGVsaWV2 ZXIgYW5kIHdhaXRzIGFnYWluLiAgU28ga2lsbCBpdAorCSAgICAgICAgIGFn YWluLiAgKi8KIAkgICAgICBraWxsX2NhbGxiYWNrIChscCwgTlVMTCk7CiAJ ICAgIH0KIAl9CkBAIC0yODQ3LDcgKzI5NDksNyBAQCBraWxsX3dhaXRfY2Fs bGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgIGRv CiAgICAgewogICAgICAgcGlkID0gbXlfd2FpdHBpZCAoR0VUX0xXUCAobHAt PnB0aWQpLCBOVUxMLCAwKTsKLSAgICAgIGlmIChwaWQgIT0gKHBpZF90KSAt MSkKKyAgICAgIGlmIChwaWQgIT0gKHBpZF90KSAtIDEpCiAJewogCSAgaWYg KGRlYnVnX2xpbnV4X25hdCkKIAkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLApAQCAtMjkwOSw3ICszMDExLDcgQEAgbGludXhfbmF0X21v dXJuX2luZmVyaW9yICh2b2lkKQogICAvKiBEZXN0cm95IExXUCBpbmZvOyBp dCdzIG5vIGxvbmdlciB2YWxpZC4gICovCiAgIGluaXRfbHdwX2xpc3QgKCk7 CiAKLSAgaWYgKCEgZm9ya3NfZXhpc3RfcCAoKSkKKyAgaWYgKCFmb3Jrc19l eGlzdF9wICgpKQogICAgIHsKICAgICAgIC8qIE5vcm1hbCBjYXNlLCBubyBv dGhlciBmb3JrcyBhdmFpbGFibGUuICAqLwogICAgICAgaWYgKHRhcmdldF9j YW5fYXN5bmNfcCAoKSkKQEAgLTI5MjUsOCArMzAyNyw4IEBAIGxpbnV4X25h dF9tb3Vybl9pbmZlcmlvciAodm9pZCkKIAogc3RhdGljIExPTkdFU1QKIGxp bnV4X25hdF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMs IGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0JCQljb25zdCBjaGFyICph bm5leCwgZ2RiX2J5dGUgKnJlYWRidWYsCi0JCQljb25zdCBnZGJfYnl0ZSAq d3JpdGVidWYsCisJCQljb25zdCBjaGFyICphbm5leCwgZ2RiX2J5dGUgKiBy ZWFkYnVmLAorCQkJY29uc3QgZ2RiX2J5dGUgKiB3cml0ZWJ1ZiwKIAkJCVVM T05HRVNUIG9mZnNldCwgTE9OR0VTVCBsZW4pCiB7CiAgIHN0cnVjdCBjbGVh bnVwICpvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CkBAIC0y OTcyLDggKzMwNzQsNyBAQCBsaW51eF9uYXRfcGlkX3RvX3N0ciAocHRpZF90 IHB0aWQpCiAgIHN0YXRpYyBjaGFyIGJ1Zls2NF07CiAKICAgaWYgKGlzX2x3 cCAocHRpZCkKLSAgICAgICYmICgobHdwX2xpc3QgJiYgbHdwX2xpc3QtPm5l eHQpCi0JICB8fCBHRVRfUElEIChwdGlkKSAhPSBHRVRfTFdQIChwdGlkKSkp CisgICAgICAmJiAoKGx3cF9saXN0ICYmIGx3cF9saXN0LT5uZXh0KSB8fCBH RVRfUElEIChwdGlkKSAhPSBHRVRfTFdQIChwdGlkKSkpCiAgICAgewogICAg ICAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChidWYpLCAiTFdQICVsZCIsIEdF VF9MV1AgKHB0aWQpKTsKICAgICAgIHJldHVybiBidWY7CkBAIC0yOTg2LDgg KzMwODcsNyBAQCBzdGF0aWMgdm9pZAogc2lnY2hsZF9oYW5kbGVyIChpbnQg c2lnbm8pCiB7CiAgIGlmIChsaW51eF9uYXRfYXN5bmNfZW5hYmxlZAotICAg ICAgJiYgbGludXhfbmF0X2FzeW5jX2V2ZW50c19lbmFibGVkCi0gICAgICAm JiBzaWdubyA9PSBTSUdDSExEKQorICAgICAgJiYgbGludXhfbmF0X2FzeW5j X2V2ZW50c19lbmFibGVkICYmIHNpZ25vID09IFNJR0NITEQpCiAgICAgLyog SXQgaXMgKmFsd2F5cyogYSBidWcgdG8gaGl0IHRoaXMuICAqLwogICAgIGlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAJCSAgICAic2ln Y2hsZF9oYW5kbGVyIGNhbGxlZCB3aGVuIGFzeW5jIGV2ZW50cyBhcmUgZW5h YmxlZCIpOwpAQCAtMzAyMSw3ICszMTIxLDcgQEAgbGludXhfY2hpbGRfcGlk X3RvX2V4ZWNfZmlsZSAoaW50IHBpZCkKIC8qIFNlcnZpY2UgZnVuY3Rpb24g Zm9yIGNvcmVmaWxlcyBhbmQgaW5mbyBwcm9jLiAgKi8KIAogc3RhdGljIGlu dAotcmVhZF9tYXBwaW5nIChGSUxFICptYXBmaWxlLAorcmVhZF9tYXBwaW5n IChGSUxFICogbWFwZmlsZSwKIAkgICAgICBsb25nIGxvbmcgKmFkZHIsCiAJ ICAgICAgbG9uZyBsb25nICplbmRhZGRyLAogCSAgICAgIGNoYXIgKnBlcm1p c3Npb25zLApAQCAtMzA1Myw3ICszMTUzLDggQEAgcmVhZF9tYXBwaW5nIChG SUxFICptYXBmaWxlLAogc3RhdGljIGludAogbGludXhfbmF0X2ZpbmRfbWVt b3J5X3JlZ2lvbnMgKGludCAoKmZ1bmMpIChDT1JFX0FERFIsCiAJCQkJCSAg ICB1bnNpZ25lZCBsb25nLAotCQkJCQkgICAgaW50LCBpbnQsIGludCwgdm9p ZCAqKSwgdm9pZCAqb2JmZCkKKwkJCQkJICAgIGludCwgaW50LCBpbnQsIHZv aWQgKiksCisJCQkgICAgICAgdm9pZCAqb2JmZCkKIHsKICAgbG9uZyBsb25n IHBpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7CiAgIGNoYXIgbWFwc2Zp bGVuYW1lW01BWFBBVEhMRU5dOwpAQCAtMzA5Niw3ICszMTk3LDcgQEAgbGlu dXhfbmF0X2ZpbmRfbWVtb3J5X3JlZ2lvbnMgKGludCAoKmZ1bmMpIChDT1JF X0FERFIsCiAJfQogCiAgICAgICAvKiBJbnZva2UgdGhlIGNhbGxiYWNrIGZ1 bmN0aW9uIHRvIGNyZWF0ZSB0aGUgY29yZWZpbGUKLQkgc2VnbWVudC4gICov CisgICAgICAgICBzZWdtZW50LiAgKi8KICAgICAgIGZ1bmMgKGFkZHIsIHNp emUsIHJlYWQsIHdyaXRlLCBleGVjLCBvYmZkKTsKICAgICB9CiAgIGZjbG9z ZSAobWFwc2ZpbGUpOwpAQCAtMzEwNyw3ICszMjA4LDcgQEAgbGludXhfbmF0 X2ZpbmRfbWVtb3J5X3JlZ2lvbnMgKGludCAoKmZ1bmMpIChDT1JFX0FERFIs CiAgICBzZWN0aW9uLiAgKi8KIAogc3RhdGljIGNoYXIgKgotbGludXhfbmF0 X2RvX3RocmVhZF9yZWdpc3RlcnMgKGJmZCAqb2JmZCwgcHRpZF90IHB0aWQs CitsaW51eF9uYXRfZG9fdGhyZWFkX3JlZ2lzdGVycyAoYmZkICogb2JmZCwg cHRpZF90IHB0aWQsCiAJCQkgICAgICAgY2hhciAqbm90ZV9kYXRhLCBpbnQg Km5vdGVfc2l6ZSkKIHsKICAgZ2RiX2dyZWdzZXRfdCBncmVnczsKQEAgLTMx MzMsMTYgKzMyMzQsMTQgQEAgbGludXhfbmF0X2RvX3RocmVhZF9yZWdpc3Rl cnMgKGJmZCAqb2JmZCwgcHRpZF90IHB0aWQsCiAgICAgICAmJiAocmVnc2V0 ID0gZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdkYmFyY2gs ICIucmVnIiwKIAkJCQkJCSAgICAgc2l6ZW9mIChncmVncykpKSAhPSBOVUxM CiAgICAgICAmJiByZWdzZXQtPmNvbGxlY3RfcmVnc2V0ICE9IE5VTEwpCi0g ICAgcmVnc2V0LT5jb2xsZWN0X3JlZ3NldCAocmVnc2V0LCByZWdjYWNoZSwg LTEsCi0JCQkgICAgJmdyZWdzLCBzaXplb2YgKGdyZWdzKSk7CisgICAgcmVn c2V0LT5jb2xsZWN0X3JlZ3NldCAocmVnc2V0LCByZWdjYWNoZSwgLTEsICZn cmVncywgc2l6ZW9mIChncmVncykpOwogICBlbHNlCiAgICAgZmlsbF9ncmVn c2V0IChyZWdjYWNoZSwgJmdyZWdzLCAtMSk7CiAKICAgbm90ZV9kYXRhID0g KGNoYXIgKikgZWxmY29yZV93cml0ZV9wcnN0YXR1cyAob2JmZCwKIAkJCQkJ ICAgICAgIG5vdGVfZGF0YSwKIAkJCQkJICAgICAgIG5vdGVfc2l6ZSwKLQkJ CQkJICAgICAgIGx3cCwKLQkJCQkJICAgICAgIHN0b3Bfc2lnbmFsLCAmZ3Jl Z3MpOworCQkJCQkgICAgICAgbHdwLCBzdG9wX3NpZ25hbCwgJmdyZWdzKTsK IAogICAvKiBUaGUgbG9vcCBiZWxvdyB1c2VzIHRoZSBuZXcgc3RydWN0IGNv cmVfcmVnc2V0X3NlY3Rpb24sIHdoaWNoIHN0b3JlcwogICAgICB0aGUgc3Vw cG9ydGVkIHNlY3Rpb24gbmFtZXMgYW5kIHNpemVzIGZvciB0aGUgY29yZSBm aWxlLiAgTm90ZSB0aGF0CkBAIC0zMTY3LDcgKzMyNjYsOCBAQCBsaW51eF9u YXRfZG9fdGhyZWFkX3JlZ2lzdGVycyAoYmZkICpvYmZkLCBwdGlkX3QgcHRp ZCwKIAlub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3JlZ2lz dGVyX25vdGUgKG9iZmQsCiAJCQkJCQkJICBub3RlX2RhdGEsCiAJCQkJCQkJ ICBub3RlX3NpemUsCi0JCQkJCQkJICBzZWN0X2xpc3QtPnNlY3RfbmFtZSwK KwkJCQkJCQkgIHNlY3RfbGlzdC0+CisJCQkJCQkJICBzZWN0X25hbWUsCiAJ CQkJCQkJICBnZGJfcmVnc2V0LAogCQkJCQkJCSAgc2VjdF9saXN0LT5zaXpl KTsKIAl4ZnJlZSAoZ2RiX3JlZ3NldCk7CkBAIC0zMTgwLDExICszMjgwLDEx IEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQs IHB0aWRfdCBwdGlkLAogICBlbHNlCiAgICAgewogICAgICAgaWYgKGNvcmVf cmVnc2V0X3AKLSAgICAgICAgICAmJiAocmVnc2V0ID0gZ2RiYXJjaF9yZWdz ZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdkYmFyY2gsICIucmVnMiIsCi0JCQkJ CQkJIHNpemVvZiAoZnByZWdzKSkpICE9IE5VTEwKLQkgICYmIHJlZ3NldC0+ Y29sbGVjdF9yZWdzZXQgIT0gTlVMTCkKLQlyZWdzZXQtPmNvbGxlY3RfcmVn c2V0IChyZWdzZXQsIHJlZ2NhY2hlLCAtMSwKLQkJCQkmZnByZWdzLCBzaXpl b2YgKGZwcmVncykpOworCSAgJiYgKHJlZ3NldCA9IGdkYmFyY2hfcmVnc2V0 X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLCAiLnJlZzIiLAorCQkJCQkJ CSBzaXplb2YgKGZwcmVncykpKSAhPQorCSAgTlVMTCAmJiByZWdzZXQtPmNv bGxlY3RfcmVnc2V0ICE9IE5VTEwpCisJcmVnc2V0LT5jb2xsZWN0X3JlZ3Nl dCAocmVnc2V0LCByZWdjYWNoZSwgLTEsICZmcHJlZ3MsCisJCQkJc2l6ZW9m IChmcHJlZ3MpKTsKICAgICAgIGVsc2UKIAlmaWxsX2ZwcmVnc2V0IChyZWdj YWNoZSwgJmZwcmVncywgLTEpOwogCkBAIC0zMjI1LDEzICszMzI1LDE0IEBA IGxpbnV4X25hdF9jb3JlZmlsZV90aHJlYWRfY2FsbGJhY2sgKHN0cnVjdCBs d3BfaW5mbyAqdGksIHZvaWQgKmRhdGEpCiAvKiBSZWNvcmRzIHRoZSByZWdp c3RlciBzdGF0ZSBmb3IgdGhlIGNvcmVmaWxlIG5vdGUgc2VjdGlvbi4gICov CiAKIHN0YXRpYyBjaGFyICoKLWxpbnV4X25hdF9kb19yZWdpc3RlcnMgKGJm ZCAqb2JmZCwgcHRpZF90IHB0aWQsCitsaW51eF9uYXRfZG9fcmVnaXN0ZXJz IChiZmQgKiBvYmZkLCBwdGlkX3QgcHRpZCwKIAkJCWNoYXIgKm5vdGVfZGF0 YSwgaW50ICpub3RlX3NpemUpCiB7CiAgIHJldHVybiBsaW51eF9uYXRfZG9f dGhyZWFkX3JlZ2lzdGVycyAob2JmZCwKLQkJCQkJcHRpZF9idWlsZCAocHRp ZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSwKLQkJCQkJCSAgICBwdGlkX2dl dF9waWQgKGluZmVyaW9yX3B0aWQpLAotCQkJCQkJICAgIDApLAorCQkJCQlw dGlkX2J1aWxkIChwdGlkX2dldF9waWQKKwkJCQkJCSAgICAoaW5mZXJpb3Jf cHRpZCksCisJCQkJCQkgICAgcHRpZF9nZXRfcGlkCisJCQkJCQkgICAgKGlu ZmVyaW9yX3B0aWQpLCAwKSwKIAkJCQkJbm90ZV9kYXRhLCBub3RlX3NpemUp OwogfQogCkBAIC0zMjM5LDcgKzMzNDAsNyBAQCBsaW51eF9uYXRfZG9fcmVn aXN0ZXJzIChiZmQgKm9iZmQsIHB0aWRfdCBwdGlkLAogICAgc2VjdGlvbiBm b3IgYSBjb3JlZmlsZSwgYW5kIHJldHVybnMgaXQgaW4gYSBtYWxsb2MgYnVm ZmVyLiAgKi8KIAogc3RhdGljIGNoYXIgKgotbGludXhfbmF0X21ha2VfY29y ZWZpbGVfbm90ZXMgKGJmZCAqb2JmZCwgaW50ICpub3RlX3NpemUpCitsaW51 eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICogb2JmZCwgaW50ICpu b3RlX3NpemUpCiB7CiAgIHN0cnVjdCBsaW51eF9uYXRfY29yZWZpbGVfdGhy ZWFkX2RhdGEgdGhyZWFkX2FyZ3M7CiAgIHN0cnVjdCBjbGVhbnVwICpvbGRf Y2hhaW47CkBAIC0zNDI1LDE2ICszNTI2LDE2IEBAIGxpbnV4X25hdF9pbmZv X3Byb2NfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAJICBpZiAo Z2RiYXJjaF9hZGRyX2JpdCAoY3VycmVudF9nZGJhcmNoKSA9PSAzMikKIAkg ICAgewogCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlx0JTEwcyAlMTBzICUx MHMgJTEwcyAlN3NcbiIsCi0JCQkgICAiU3RhcnQgQWRkciIsCi0JCQkgICAi ICBFbmQgQWRkciIsCi0JCQkgICAiICAgICAgU2l6ZSIsICIgICAgT2Zmc2V0 IiwgIm9iamZpbGUiKTsKLSAgICAgICAgICAgIH0KKwkJCSAgICAgICAiU3Rh cnQgQWRkciIsCisJCQkgICAgICAgIiAgRW5kIEFkZHIiLAorCQkJICAgICAg ICIgICAgICBTaXplIiwgIiAgICBPZmZzZXQiLCAib2JqZmlsZSIpOworCSAg ICB9CiAJICBlbHNlCi0gICAgICAgICAgICB7CisJICAgIHsKIAkgICAgICBw cmludGZfZmlsdGVyZWQgKCIgICUxOHMgJTE4cyAlMTBzICUxMHMgJTdzXG4i LAotCQkJICAgIlN0YXJ0IEFkZHIiLAotCQkJICAgIiAgRW5kIEFkZHIiLAot CQkJICAgIiAgICAgIFNpemUiLCAiICAgIE9mZnNldCIsICJvYmpmaWxlIik7 CisJCQkgICAgICAgIlN0YXJ0IEFkZHIiLAorCQkJICAgICAgICIgIEVuZCBB ZGRyIiwKKwkJCSAgICAgICAiICAgICAgU2l6ZSIsICIgICAgT2Zmc2V0Iiwg Im9iamZpbGUiKTsKIAkgICAgfQogCiAJICB3aGlsZSAocmVhZF9tYXBwaW5n IChwcm9jZmlsZSwgJmFkZHIsICZlbmRhZGRyLCAmcGVybWlzc2lvbnNbMF0s CkBAIC0zNDQzLDI5ICszNTQ0LDI3IEBAIGxpbnV4X25hdF9pbmZvX3Byb2Nf Y21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAJICAgICAgc2l6ZSA9 IGVuZGFkZHIgLSBhZGRyOwogCiAJICAgICAgLyogRklYTUU6IGNhcmx0b24v MjAwMy0wOC0yNzogTWF5YmUgdGhlIHByaW50Zl9maWx0ZXJlZAotCQkgY2Fs bHMgaGVyZSAoYW5kIHBvc3NpYmx5IGFib3ZlKSBzaG91bGQgYmUgYWJzdHJh Y3RlZAotCQkgb3V0IGludG8gdGhlaXIgb3duIGZ1bmN0aW9ucz8gIEFuZHJl dyBzdWdnZXN0cyB1c2luZwotCQkgYSBnZW5lcmljIGxvY2FsX2FkZHJlc3Nf c3RyaW5nIGluc3RlYWQgdG8gcHJpbnQgb3V0Ci0JCSB0aGUgYWRkcmVzc2Vz OyB0aGF0IG1ha2VzIHNlbnNlIHRvIG1lLCB0b28uICAqLworCSAgICAgICAg IGNhbGxzIGhlcmUgKGFuZCBwb3NzaWJseSBhYm92ZSkgc2hvdWxkIGJlIGFi c3RyYWN0ZWQKKwkgICAgICAgICBvdXQgaW50byB0aGVpciBvd24gZnVuY3Rp b25zPyAgQW5kcmV3IHN1Z2dlc3RzIHVzaW5nCisJICAgICAgICAgYSBnZW5l cmljIGxvY2FsX2FkZHJlc3Nfc3RyaW5nIGluc3RlYWQgdG8gcHJpbnQgb3V0 CisJICAgICAgICAgdGhlIGFkZHJlc3NlczsgdGhhdCBtYWtlcyBzZW5zZSB0 byBtZSwgdG9vLiAgKi8KIAogCSAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0 IChjdXJyZW50X2dkYmFyY2gpID09IDMyKQotCSAgICAgICAgewotCSAgICAg ICAgICBwcmludGZfZmlsdGVyZWQgKCJcdCUjMTBseCAlIzEwbHggJSMxMHgg JSMxMHggJTdzXG4iLAotCQkJICAgICAgICh1bnNpZ25lZCBsb25nKSBhZGRy LAkvKiBGSVhNRTogcHJfYWRkciAqLwotCQkJICAgICAgICh1bnNpZ25lZCBs b25nKSBlbmRhZGRyLAotCQkJICAgICAgIChpbnQpIHNpemUsCi0JCQkgICAg ICAgKHVuc2lnbmVkIGludCkgb2Zmc2V0LAotCQkJICAgICAgIGZpbGVuYW1l WzBdID8gZmlsZW5hbWUgOiAiIik7CisJCXsKKwkJICBwcmludGZfZmlsdGVy ZWQgKCJcdCUjMTBseCAlIzEwbHggJSMxMHggJSMxMHggJTdzXG4iLCAodW5z aWduZWQgbG9uZykgYWRkciwJLyogRklYTUU6IHByX2FkZHIgKi8KKwkJCQkg ICAodW5zaWduZWQgbG9uZykgZW5kYWRkciwKKwkJCQkgICAoaW50KSBzaXpl LAorCQkJCSAgICh1bnNpZ25lZCBpbnQpIG9mZnNldCwKKwkJCQkgICBmaWxl bmFtZVswXSA/IGZpbGVuYW1lIDogIiIpOwogCQl9CiAJICAgICAgZWxzZQot CSAgICAgICAgewotCSAgICAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgICUj MThseCAlIzE4bHggJSMxMHggJSMxMHggJTdzXG4iLAotCQkJICAgICAgICh1 bnNpZ25lZCBsb25nKSBhZGRyLAkvKiBGSVhNRTogcHJfYWRkciAqLwotCQkJ ICAgICAgICh1bnNpZ25lZCBsb25nKSBlbmRhZGRyLAotCQkJICAgICAgIChp bnQpIHNpemUsCi0JCQkgICAgICAgKHVuc2lnbmVkIGludCkgb2Zmc2V0LAot CQkJICAgICAgIGZpbGVuYW1lWzBdID8gZmlsZW5hbWUgOiAiIik7Ci0JICAg ICAgICB9CisJCXsKKwkJICBwcmludGZfZmlsdGVyZWQgKCIgICUjMThseCAl IzE4bHggJSMxMHggJSMxMHggJTdzXG4iLCAodW5zaWduZWQgbG9uZykgYWRk ciwJLyogRklYTUU6IHByX2FkZHIgKi8KKwkJCQkgICAodW5zaWduZWQgbG9u ZykgZW5kYWRkciwKKwkJCQkgICAoaW50KSBzaXplLAorCQkJCSAgICh1bnNp Z25lZCBpbnQpIG9mZnNldCwKKwkJCQkgICBmaWxlbmFtZVswXSA/IGZpbGVu YW1lIDogIiIpOworCQl9CiAJICAgIH0KIAogCSAgZmNsb3NlIChwcm9jZmls ZSk7CkBAIC0zNTMzLDcgKzM2MzIsOCBAQCBsaW51eF9uYXRfaW5mb19wcm9j X2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogCSAgaWYgKGZzY2Fu ZiAocHJvY2ZpbGUsICIlbGQgIiwgJmx0bXApID4gMCkKIAkgICAgcHJpbnRm X2ZpbHRlcmVkIChfKCJzdGltZSwgY2hpbGRyZW46ICVsZFxuIiksIGx0bXAp OwogCSAgaWYgKGZzY2FuZiAocHJvY2ZpbGUsICIlbGQgIiwgJmx0bXApID4g MCkKLQkgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJqaWZmaWVzIHJlbWFpbmlu ZyBpbiBjdXJyZW50IHRpbWUgc2xpY2U6ICVsZFxuIiksCisJICAgIHByaW50 Zl9maWx0ZXJlZCAoXworCQkJICAgICAoImppZmZpZXMgcmVtYWluaW5nIGlu IGN1cnJlbnQgdGltZSBzbGljZTogJWxkXG4iKSwKIAkJCSAgICAgbHRtcCk7 CiAJICBpZiAoZnNjYW5mIChwcm9jZmlsZSwgIiVsZCAiLCAmbHRtcCkgPiAw KQogCSAgICBwcmludGZfZmlsdGVyZWQgKF8oIiduaWNlJyB2YWx1ZTogJWxk XG4iKSwgbHRtcCk7CkBAIC0zNTQ0LDEzICszNjQ0LDE1IEBAIGxpbnV4X25h dF9pbmZvX3Byb2NfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAJ ICAgIHByaW50Zl9maWx0ZXJlZCAoXygiamlmZmllcyB1bnRpbCBuZXh0IFNJ R0FMUk06ICVsdVxuIiksCiAJCQkgICAgICh1bnNpZ25lZCBsb25nKSBsdG1w KTsKIAkgIGlmIChmc2NhbmYgKHByb2NmaWxlLCAiJWxkICIsICZsdG1wKSA+ IDApCi0JICAgIHByaW50Zl9maWx0ZXJlZCAoXygic3RhcnQgdGltZSAoamlm ZmllcyBzaW5jZSBzeXN0ZW0gYm9vdCk6ICVsZFxuIiksCisJICAgIHByaW50 Zl9maWx0ZXJlZCAoXworCQkJICAgICAoInN0YXJ0IHRpbWUgKGppZmZpZXMg c2luY2Ugc3lzdGVtIGJvb3QpOiAlbGRcbiIpLAogCQkJICAgICBsdG1wKTsK IAkgIGlmIChmc2NhbmYgKHByb2NmaWxlLCAiJWx1ICIsICZsdG1wKSA+IDAp CiAJICAgIHByaW50Zl9maWx0ZXJlZCAoXygiVmlydHVhbCBtZW1vcnkgc2l6 ZTogJWx1XG4iKSwKIAkJCSAgICAgKHVuc2lnbmVkIGxvbmcpIGx0bXApOwog CSAgaWYgKGZzY2FuZiAocHJvY2ZpbGUsICIlbHUgIiwgJmx0bXApID4gMCkK LQkgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJSZXNpZGVudCBzZXQgc2l6ZTog JWx1XG4iKSwgKHVuc2lnbmVkIGxvbmcpIGx0bXApOworCSAgICBwcmludGZf ZmlsdGVyZWQgKF8oIlJlc2lkZW50IHNldCBzaXplOiAlbHVcbiIpLAorCQkJ ICAgICAodW5zaWduZWQgbG9uZykgbHRtcCk7CiAJICBpZiAoZnNjYW5mIChw cm9jZmlsZSwgIiVsdSAiLCAmbHRtcCkgPiAwKQogCSAgICBwcmludGZfZmls dGVyZWQgKF8oInJsaW06ICVsdVxuIiksICh1bnNpZ25lZCBsb25nKSBsdG1w KTsKIAkgIGlmIChmc2NhbmYgKHByb2NmaWxlLCAiJWx1ICIsICZsdG1wKSA+ IDApCkBAIC0zNTkwLDggKzM2OTIsOCBAQCBsaW51eF9uYXRfaW5mb19wcm9j X2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogCiBzdGF0aWMgTE9O R0VTVAogbGludXhfcHJvY194ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRf b3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0JCQkgY29u c3QgY2hhciAqYW5uZXgsIGdkYl9ieXRlICpyZWFkYnVmLAotCQkJIGNvbnN0 IGdkYl9ieXRlICp3cml0ZWJ1ZiwKKwkJCSBjb25zdCBjaGFyICphbm5leCwg Z2RiX2J5dGUgKiByZWFkYnVmLAorCQkJIGNvbnN0IGdkYl9ieXRlICogd3Jp dGVidWYsCiAJCQkgVUxPTkdFU1Qgb2Zmc2V0LCBMT05HRVNUIGxlbikKIHsK ICAgTE9OR0VTVCByZXQ7CkBAIC0zNjMyLDcgKzM3MzQsNyBAQCBsaW51eF9w cm9jX3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgZW51 bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKIC8qIFBhcnNlIExJTkUgYXMgYSBz aWduYWwgc2V0IGFuZCBhZGQgaXRzIHNldCBiaXRzIHRvIFNJR1MuICAqLwog CiBzdGF0aWMgdm9pZAotYWRkX2xpbmVfdG9fc2lnc2V0IChjb25zdCBjaGFy ICpsaW5lLCBzaWdzZXRfdCAqc2lncykKK2FkZF9saW5lX3RvX3NpZ3NldCAo Y29uc3QgY2hhciAqbGluZSwgc2lnc2V0X3QgKiBzaWdzKQogewogICBpbnQg bGVuID0gc3RybGVuIChsaW5lKSAtIDE7CiAgIGNvbnN0IGNoYXIgKnA7CkBA IC0zNjczLDcgKzM3NzUsOCBAQCBhZGRfbGluZV90b19zaWdzZXQgKGNvbnN0 IGNoYXIgKmxpbmUsIHNpZ3NldF90ICpzaWdzKQogICAgU0lHUyB0byBtYXRj aC4gICovCiAKIHZvaWQKLWxpbnV4X3Byb2NfcGVuZGluZ19zaWduYWxzIChp bnQgcGlkLCBzaWdzZXRfdCAqcGVuZGluZywgc2lnc2V0X3QgKmJsb2NrZWQs IHNpZ3NldF90ICppZ25vcmVkKQorbGludXhfcHJvY19wZW5kaW5nX3NpZ25h bHMgKGludCBwaWQsIHNpZ3NldF90ICogcGVuZGluZywgc2lnc2V0X3QgKiBi bG9ja2VkLAorCQkJICAgIHNpZ3NldF90ICogaWdub3JlZCkKIHsKICAgRklM RSAqcHJvY2ZpbGU7CiAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dLCBmbmFt ZVtNQVhQQVRITEVOXTsKQEAgLTM2OTAsMTIgKzM3OTMsMTIgQEAgbGludXhf cHJvY19wZW5kaW5nX3NpZ25hbHMgKGludCBwaWQsIHNpZ3NldF90ICpwZW5k aW5nLCBzaWdzZXRfdCAqYmxvY2tlZCwgc2lnc2UKICAgd2hpbGUgKGZnZXRz IChidWZmZXIsIE1BWFBBVEhMRU4sIHByb2NmaWxlKSAhPSBOVUxMKQogICAg IHsKICAgICAgIC8qIE5vcm1hbCBxdWV1ZWQgc2lnbmFscyBhcmUgb24gdGhl IFNpZ1BuZCBsaW5lIGluIHRoZSBzdGF0dXMKLQkgZmlsZS4gIEhvd2V2ZXIs IDIuNiBrZXJuZWxzIGFsc28gaGF2ZSBhICJzaGFyZWQiIHBlbmRpbmcKLQkg cXVldWUgZm9yIGRlbGl2ZXJpbmcgc2lnbmFscyB0byBhIHRocmVhZCBncm91 cCwgc28gY2hlY2sgZm9yCi0JIGEgU2hkUG5kIGxpbmUgYWxzby4KKyAgICAg ICAgIGZpbGUuICBIb3dldmVyLCAyLjYga2VybmVscyBhbHNvIGhhdmUgYSAi c2hhcmVkIiBwZW5kaW5nCisgICAgICAgICBxdWV1ZSBmb3IgZGVsaXZlcmlu ZyBzaWduYWxzIHRvIGEgdGhyZWFkIGdyb3VwLCBzbyBjaGVjayBmb3IKKyAg ICAgICAgIGEgU2hkUG5kIGxpbmUgYWxzby4KIAotCSBVbmZvcnR1bmF0ZWx5 IHNvbWUgUmVkIEhhdCBrZXJuZWxzIGluY2x1ZGUgdGhlIHNoYXJlZCBwZW5k aW5nCi0JIHF1ZXVlIGJ1dCBub3QgdGhlIFNoZFBuZCBzdGF0dXMgZmllbGQu ICAqLworICAgICAgICAgVW5mb3J0dW5hdGVseSBzb21lIFJlZCBIYXQga2Vy bmVscyBpbmNsdWRlIHRoZSBzaGFyZWQgcGVuZGluZworICAgICAgICAgcXVl dWUgYnV0IG5vdCB0aGUgU2hkUG5kIHN0YXR1cyBmaWVsZC4gICovCiAKICAg ICAgIGlmIChzdHJuY21wIChidWZmZXIsICJTaWdQbmQ6XHQiLCA4KSA9PSAw KQogCWFkZF9saW5lX3RvX3NpZ3NldCAoYnVmZmVyICsgOCwgcGVuZGluZyk7 CkBAIC0zNzEyLDggKzM4MTUsOCBAQCBsaW51eF9wcm9jX3BlbmRpbmdfc2ln bmFscyAoaW50IHBpZCwgc2lnc2V0X3QgKnBlbmRpbmcsIHNpZ3NldF90ICpi bG9ja2VkLCBzaWdzZQogCiBzdGF0aWMgTE9OR0VTVAogbGludXhfeGZlcl9w YXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9v YmplY3Qgb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICphbm5leCwgZ2RiX2J5dGUgKnJlYWRidWYsCi0JCSAgICBjb25zdCBnZGJf Ynl0ZSAqd3JpdGVidWYsIFVMT05HRVNUIG9mZnNldCwgTE9OR0VTVCBsZW4p CisJCSAgICBjb25zdCBjaGFyICphbm5leCwgZ2RiX2J5dGUgKiByZWFkYnVm LAorCQkgICAgY29uc3QgZ2RiX2J5dGUgKiB3cml0ZWJ1ZiwgVUxPTkdFU1Qg b2Zmc2V0LCBMT05HRVNUIGxlbikKIHsKICAgTE9OR0VTVCB4ZmVyOwogCkBA IC0zNzYyLDcgKzM4NjUsOCBAQCBsaW51eF90YXJnZXQgKHZvaWQpCiB9CiAK IHN0cnVjdCB0YXJnZXRfb3BzICoKLWxpbnV4X3RyYWRfdGFyZ2V0IChDT1JF X0FERFIgKCpyZWdpc3Rlcl91X29mZnNldCkoc3RydWN0IGdkYmFyY2ggKiwg aW50LCBpbnQpKQorbGludXhfdHJhZF90YXJnZXQgKENPUkVfQUREUiAoKnJl Z2lzdGVyX3Vfb2Zmc2V0KQorCQkgICAoc3RydWN0IGdkYmFyY2ggKiwgaW50 LCBpbnQpKQogewogICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdDsKIApAQCAtMzc4 MSw3ICszODg1LDcgQEAgc3RhdGljIGludCBsaW51eF9hc3luY19wZXJtaXR0 ZWRfMSA9IDA7CiAKIHN0YXRpYyB2b2lkCiBzZXRfbWFpbnRlbmFuY2VfbGlu dXhfYXN5bmNfcGVybWl0dGVkIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHks Ci0JCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisJCQkJ ICAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQogewogICBpZiAo dGFyZ2V0X2hhc19leGVjdXRpb24pCiAgICAgewpAQCAtMzc5NSwxMSArMzg5 OSwxMSBAQCBzZXRfbWFpbnRlbmFuY2VfbGludXhfYXN5bmNfcGVybWl0dGVk IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCiAKIHN0YXRpYyB2b2lkCiBz aG93X21haW50ZW5hbmNlX2xpbnV4X2FzeW5jX3Blcm1pdHRlZCAoc3RydWN0 IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLQkJCSAgICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisJCQkJ CXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLAorCQkJCQljb25zdCBjaGFy ICp2YWx1ZSkKIHsKICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiXAot Q29udHJvbGxpbmcgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBpbiBhc3luY2hy b25vdXMgbW9kZSBpcyAlcy5cbiIpLAotCQkgICAgdmFsdWUpOworQ29udHJv bGxpbmcgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBpbiBhc3luY2hyb25vdXMg bW9kZSBpcyAlcy5cbiIpLCB2YWx1ZSk7CiB9CiAKIC8qIHRhcmdldF9pc19h c3luY19wIGltcGxlbWVudGF0aW9uLiAgKi8KQEAgLTM4NjUsOSArMzk2OSw5 IEBAIGxpbnV4X25hdF9hc3luY19tYXNrIChpbnQgbWFzaykKIC8qIFBvcCBh biBldmVudCBmcm9tIHRoZSBldmVudCBwaXBlLiAgKi8KIAogc3RhdGljIGlu dAotbGludXhfbmF0X2V2ZW50X3BpcGVfcG9wIChpbnQqIHB0cl9zdGF0dXMs IGludCogcHRyX29wdGlvbnMpCitsaW51eF9uYXRfZXZlbnRfcGlwZV9wb3Ag KGludCAqcHRyX3N0YXR1cywgaW50ICpwdHJfb3B0aW9ucykKIHsKLSAgc3Ry dWN0IHdhaXRwaWRfcmVzdWx0IGV2ZW50ID0gezB9OworICBzdHJ1Y3Qgd2Fp dHBpZF9yZXN1bHQgZXZlbnQgPSB7IDAgfTsKICAgaW50IHJldDsKIAogICBk bwpAQCAtMzg5Miw3ICszOTk2LDcgQEAgc3RhdGljIHZvaWQKIGxpbnV4X25h dF9ldmVudF9waXBlX3B1c2ggKGludCBwaWQsIGludCBzdGF0dXMsIGludCBv cHRpb25zKQogewogICBpbnQgcmV0OwotICBzdHJ1Y3Qgd2FpdHBpZF9yZXN1 bHQgZXZlbnQgPSB7MH07CisgIHN0cnVjdCB3YWl0cGlkX3Jlc3VsdCBldmVu dCA9IHsgMCB9OwogICBldmVudC5waWQgPSBwaWQ7CiAgIGV2ZW50LnN0YXR1 cyA9IHN0YXR1czsKICAgZXZlbnQub3B0aW9ucyA9IG9wdGlvbnM7CkBAIC0z OTAxLDcgKzQwMDUsOCBAQCBsaW51eF9uYXRfZXZlbnRfcGlwZV9wdXNoIChp bnQgcGlkLCBpbnQgc3RhdHVzLCBpbnQgb3B0aW9ucykKICAgICB7CiAgICAg ICByZXQgPSB3cml0ZSAobGludXhfbmF0X2V2ZW50X3BpcGVbMV0sICZldmVu dCwgc2l6ZW9mIChldmVudCkpOwogICAgICAgZ2RiX2Fzc2VydCAoKHJldCA9 PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgfHwgcmV0ID09IHNpemVvZiAoZXZl bnQpKTsKLSAgICB9IHdoaWxlIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlO VFIpOworICAgIH0KKyAgd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBF SU5UUik7CiAKICAgbGludXhfbmF0X251bV9xdWV1ZWRfZXZlbnRzKys7CiB9 CkBAIC0zOTQyLDE2ICs0MDQ3LDE0IEBAIGdldF9wZW5kaW5nX2V2ZW50cyAo dm9pZCkKIAogICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdF9hc3luYykKIAlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCi1nZXRfcGVuZGlu Z19ldmVudHM6IHBpZCglZCksIHN0YXR1cygleCksIG9wdGlvbnMgKCV4KVxu IiwKLQkJCSAgICBwaWQsIHN0YXR1cywgb3B0aW9ucyk7CitnZXRfcGVuZGlu Z19ldmVudHM6IHBpZCglZCksIHN0YXR1cygleCksIG9wdGlvbnMgKCV4KVxu IiwgcGlkLCBzdGF0dXMsIG9wdGlvbnMpOwogCiAgICAgICBsaW51eF9uYXRf ZXZlbnRfcGlwZV9wdXNoIChwaWQsIHN0YXR1cywgb3B0aW9ucyk7CiAgICAg fQogCiAgIGlmIChkZWJ1Z19saW51eF9uYXRfYXN5bmMpCiAgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAotZ2V0X3BlbmRpbmdfZXZl bnRzOiBsaW51eF9uYXRfbnVtX3F1ZXVlZF9ldmVudHMoJWQpXG4iLAotCQkJ bGludXhfbmF0X251bV9xdWV1ZWRfZXZlbnRzKTsKK2dldF9wZW5kaW5nX2V2 ZW50czogbGludXhfbmF0X251bV9xdWV1ZWRfZXZlbnRzKCVkKVxuIiwgbGlu dXhfbmF0X251bV9xdWV1ZWRfZXZlbnRzKTsKIH0KIAogLyogU0lHQ0hMRCBo YW5kbGVyIGZvciBhc3luYyBtb2RlLiAgKi8KQEAgLTQyMjQsMjkgKzQzMjcs MTkgQEAgU3BlY2lmeSBhbnkgb2YgdGhlIGZvbGxvd2luZyBrZXl3b3JkcyBm b3IgZGV0YWlsZWQgaW5mbzpcblwKIAkJCSAgICAmZGVidWdfbGludXhfbmF0 LCBfKCJcCiBTZXQgZGVidWdnaW5nIG9mIEdOVS9MaW51eCBsd3AgbW9kdWxl LiIpLCBfKCJcCiBTaG93IGRlYnVnZ2luZyBvZiBHTlUvTGludXggbHdwIG1v ZHVsZS4iKSwgXygiXAotRW5hYmxlcyBwcmludGYgZGVidWdnaW5nIG91dHB1 dC4iKSwKLQkJCSAgICBOVUxMLAotCQkJICAgIHNob3dfZGVidWdfbGludXhf bmF0LAotCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsK K0VuYWJsZXMgcHJpbnRmIGRlYnVnZ2luZyBvdXRwdXQuIiksIE5VTEwsIHNo b3dfZGVidWdfbGludXhfbmF0LCAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVn bGlzdCk7CiAKICAgYWRkX3NldHNob3dfemludGVnZXJfY21kICgibGluLWx3 cC1hc3luYyIsIGNsYXNzX21haW50ZW5hbmNlLAogCQkJICAgICZkZWJ1Z19s aW51eF9uYXRfYXN5bmMsIF8oIlwKIFNldCBkZWJ1Z2dpbmcgb2YgR05VL0xp bnV4IGFzeW5jIGx3cCBtb2R1bGUuIiksIF8oIlwKIFNob3cgZGVidWdnaW5n IG9mIEdOVS9MaW51eCBhc3luYyBsd3AgbW9kdWxlLiIpLCBfKCJcCi1FbmFi bGVzIHByaW50ZiBkZWJ1Z2dpbmcgb3V0cHV0LiIpLAotCQkJICAgIE5VTEws Ci0JCQkgICAgc2hvd19kZWJ1Z19saW51eF9uYXRfYXN5bmMsCi0JCQkgICAg JnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworRW5hYmxlcyBwcmlu dGYgZGVidWdnaW5nIG91dHB1dC4iKSwgTlVMTCwgc2hvd19kZWJ1Z19saW51 eF9uYXRfYXN5bmMsICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsK IAogICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpbnV4LWFzeW5jIiwg Y2xhc3NfbWFpbnRlbmFuY2UsCiAJCQkgICAmbGludXhfYXN5bmNfcGVybWl0 dGVkXzEsIF8oIlwKIFNldCB3aGV0aGVyIGdkYiBjb250cm9scyB0aGUgR05V L0xpbnV4IGluZmVyaW9yIGluIGFzeW5jaHJvbm91cyBtb2RlLiIpLCBfKCJc CiBTaG93IHdoZXRoZXIgZ2RiIGNvbnRyb2xzIHRoZSBHTlUvTGludXggaW5m ZXJpb3IgaW4gYXN5bmNocm9ub3VzIG1vZGUuIiksIF8oIlwKLVRlbGxzIGdk YiB3aGV0aGVyIHRvIGNvbnRyb2wgdGhlIEdOVS9MaW51eCBpbmZlcmlvciBp biBhc3luY2hyb25vdXMgbW9kZS4iKSwKLQkJCSAgIHNldF9tYWludGVuYW5j ZV9saW51eF9hc3luY19wZXJtaXR0ZWQsCi0JCQkgICBzaG93X21haW50ZW5h bmNlX2xpbnV4X2FzeW5jX3Blcm1pdHRlZCwKLQkJCSAgICZtYWludGVuYW5j ZV9zZXRfY21kbGlzdCwKLQkJCSAgICZtYWludGVuYW5jZV9zaG93X2NtZGxp c3QpOworVGVsbHMgZ2RiIHdoZXRoZXIgdG8gY29udHJvbCB0aGUgR05VL0xp bnV4IGluZmVyaW9yIGluIGFzeW5jaHJvbm91cyBtb2RlLiIpLCBzZXRfbWFp bnRlbmFuY2VfbGludXhfYXN5bmNfcGVybWl0dGVkLCBzaG93X21haW50ZW5h bmNlX2xpbnV4X2FzeW5jX3Blcm1pdHRlZCwgJm1haW50ZW5hbmNlX3NldF9j bWRsaXN0LCAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKIAogICAvKiBC bG9jayBTSUdDSExEIGJ5IGRlZmF1bHQuICBEb2luZyB0aGlzIGVhcmx5IHBy ZXZlbnRzIGl0IGdldHRpbmcKICAgICAgdW5ibG9ja2VkIGlmIGFuIGV4Y2Vw dGlvbiBpcyB0aHJvd24gZHVlIHRvIGFuIGVycm9yIHdoaWxlIHRoZQpAQCAt NDI5OCw3ICs0MzkxLDcgQEAgZ2V0X3NpZ25vIChjb25zdCBjaGFyICpuYW1l KQogICBpZiAobXMgPT0gTlVMTCkKICAgICByZXR1cm4gMDsKIAotICBpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5IChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXMp LCAoZ2RiX2J5dGUgKikgJnNpZ25vLAorICBpZiAodGFyZ2V0X3JlYWRfbWVt b3J5IChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXMpLCAoZ2RiX2J5dGUgKikg JiBzaWdubywKIAkJCSAgc2l6ZW9mIChzaWdubykpICE9IDApCiAgICAgcmV0 dXJuIDA7CiAKQEAgLTQzMDgsNyArNDQwMSw3IEBAIGdldF9zaWdubyAoY29u c3QgY2hhciAqbmFtZSkKIC8qIFJldHVybiB0aGUgc2V0IG9mIHNpZ25hbHMg dXNlZCBieSB0aGUgdGhyZWFkcyBsaWJyYXJ5IGluICpTRVQuICAqLwogCiB2 b2lkCi1saW5fdGhyZWFkX2dldF90aHJlYWRfc2lnbmFscyAoc2lnc2V0X3Qg KnNldCkKK2xpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRf dCAqIHNldCkKIHsKICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CiAgIGlu dCByZXN0YXJ0LCBjYW5jZWw7CmRpZmYgLS1naXQgYS9nZGIvcmVjb3JkLmMg Yi9nZGIvcmVjb3JkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNGNhYjdhMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9yZWNvcmQu YwpAQCAtMCwwICsxLDg2NyBAQAorLyogUmVjb3JkIHYwLjEuNiBmb3IgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgorICAgV3JpdHRlbiBieSBIdWkgWmh1IDx0 ZWF3YXRlckBnbWFpbC5jb20+CisKKyAgIENvcHlyaWdodCAoQykgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgInRhcmdldC5oIgor I2luY2x1ZGUgImdkYmNtZC5oIgorI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisj aW5jbHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJyZWNvcmQuaCIKKwor I2luY2x1ZGUgPHNpZ25hbC5oPgorCitpbnQgcmVjb3JkX2RlYnVnID0gMDsK K3JlY29yZF90IHJlY29yZF9maXJzdDsKK3JlY29yZF90ICpyZWNvcmRfbGlz dCA9ICZyZWNvcmRfZmlyc3Q7CitpbnQgcmVjb3JkX2xpc3Rfc3RhdHVzID0g MTsJLyogMCBub3JtYWwgMSB0byB0aGUgYmVnaW4gMiB0byB0aGUgZW5kICov CityZWNvcmRfdCAqcmVjb3JkX2FyY2hfbGlzdF9oZWFkID0gTlVMTDsKK3Jl Y29yZF90ICpyZWNvcmRfYXJjaF9saXN0X3RhaWwgPSBOVUxMOworc3RydWN0 IHJlZ2NhY2hlICpyZWNvcmRfcmVnY2FjaGUgPSBOVUxMOworCitzdHJ1Y3Qg dGFyZ2V0X29wcyByZWNvcmRfb3BzOworaW50IHJlY29yZF9yZXN1bWVfc3Rl cCA9IDA7CitlbnVtIGV4ZWNfZGlyZWN0aW9uX2tpbmQgcmVjb3JkX2V4ZWNk aXIgPSBFWEVDX0ZPUldBUkQ7CitzdGF0aWMgaW50IHJlY29yZF9nZXRfc2ln ID0gMDsKK3N0YXRpYyBzaWdzZXRfdCByZWNvcmRfbWFza2FsbDsKK3N0YXRp YyBpbnQgcmVjb3JkX25vdF9yZWNvcmQgPSAwOworaW50IHJlY29yZF9yZWdj YWNoZV9yYXdfd3JpdGVfcmVnbnVtID0gMDsKK2ludCByZWNvcmRfd2lsbF9z dG9yZV9yZWdpc3RlcnMgPSAwOworCitleHRlcm4gc3RydWN0IGJyZWFrcG9p bnQgKmJyZWFrcG9pbnRfY2hhaW47CitleHRlcm4gcHRpZF90IGRpc3BsYWNl ZF9zdGVwX3B0aWQ7CitleHRlcm4gQ09SRV9BRERSIGRpc3BsYWNlZF9zdGVw X29yaWdpbmFsLCBkaXNwbGFjZWRfc3RlcF9jb3B5OworCitzdGF0aWMgdm9p ZAorcmVjb3JkX2xpc3RfcmVsZWFzZSAocmVjb3JkX3QgKiByZWMpCit7Cisg IHJlY29yZF90ICp0bXA7CisKKyAgaWYgKCFyZWMpCisgICAgcmV0dXJuOwor CisgIHdoaWxlIChyZWMtPm5leHQpCisgICAgeworICAgICAgcmVjID0gcmVj LT5uZXh0OworICAgIH0KKworICB3aGlsZSAocmVjLT5wcmV2KQorICAgIHsK KyAgICAgIHRtcCA9IHJlYzsKKyAgICAgIHJlYyA9IHJlYy0+cHJldjsKKyAg ICAgIGlmICh0bXAtPnR5cGUgPT0gcmVjb3JkX3JlZykKKwl7CisJICB4ZnJl ZSAodG1wLT51LnJlZy52YWwpOworCX0KKyAgICAgIGVsc2UgaWYgKHRtcC0+ dHlwZSA9PSByZWNvcmRfbWVtKQorCXsKKwkgIHhmcmVlICh0bXAtPnUubWVt LnZhbCk7CisJfQorICAgICAgeGZyZWUgKHRtcCk7CisgICAgfQorCisgIGlm IChyZWMgIT0gJnJlY29yZF9maXJzdCkKKyAgICB7CisgICAgICB4ZnJlZSAo cmVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCityZWNvcmRfbGlzdF9y ZWxlYXNlX25leHQgKHJlY29yZF90ICogcmVjKQoreworICByZWNvcmRfdCAq dG1wID0gcmVjLT5uZXh0OworICByZWMtPm5leHQgPSBOVUxMOworICB3aGls ZSAodG1wKQorICAgIHsKKyAgICAgIHJlYyA9IHRtcC0+bmV4dDsKKyAgICAg IGlmICh0bXAtPnR5cGUgPT0gcmVjb3JkX3JlZykKKwl7CisJICB4ZnJlZSAo dG1wLT51LnJlZy52YWwpOworCX0KKyAgICAgIGVsc2UgaWYgKHRtcC0+dHlw ZSA9PSByZWNvcmRfbWVtKQorCXsKKwkgIHhmcmVlICh0bXAtPnUubWVtLnZh bCk7CisJfQorICAgICAgeGZyZWUgKHRtcCk7CisgICAgICB0bXAgPSByZWM7 CisgICAgfQorfQorCisvKiBBZGQgYSByZWNvcmRfdCB0byAicmVjb3JkX2Fy Y2hfbGlzdCIuICovCitzdGF0aWMgdm9pZAorcmVjb3JkX2FyY2hfbGlzdF9h ZGQgKHJlY29yZF90ICogcmVjKQoreworICBpZiAocmVjb3JkX2FyY2hfbGlz dF90YWlsKQorICAgIHsKKyAgICAgIHJlY29yZF9hcmNoX2xpc3RfdGFpbC0+ bmV4dCA9IHJlYzsKKyAgICAgIHJlYy0+cHJldiA9IHJlY29yZF9hcmNoX2xp c3RfdGFpbDsKKyAgICAgIHJlY29yZF9hcmNoX2xpc3RfdGFpbCA9IHJlYzsK KyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICByZWNvcmRfYXJjaF9saXN0 X2hlYWQgPSByZWM7CisgICAgICByZWNvcmRfYXJjaF9saXN0X3RhaWwgPSBy ZWM7CisgICAgfQorfQorCisvKiBSZWNvcmQgdGhlIHZhbHVlIG9mIGEgcmVn aXN0ZXIoIm51bSIpIHRvICJyZWNvcmRfYXJjaF9saXN0Ii4gKi8KK2ludAor cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChpbnQgbnVtKQoreworICByZWNv cmRfdCAqcmVjOworCisgIGlmIChyZWNvcmRfZGVidWcgPiAxKQorICAgIHsK KyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAg IlJlY29yZDogYWRkIHJlZyBudW0gPSAlZCB0byByZWNvcmQgbGlzdC5cbiIs IG51bSk7CisgICAgfQorCisgIHJlYyA9IChyZWNvcmRfdCAqKSB4bWFsbG9j IChzaXplb2YgKHJlY29yZF90KSk7CisgIHJlYy0+dS5yZWcudmFsID0gKGdk Yl9ieXRlICopIHhtYWxsb2MgKE1BWF9SRUdJU1RFUl9TSVpFKTsKKyAgcmVj LT5wcmV2ID0gTlVMTDsKKyAgcmVjLT5uZXh0ID0gTlVMTDsKKyAgcmVjLT50 eXBlID0gcmVjb3JkX3JlZzsKKyAgcmVjLT51LnJlZy5udW0gPSBudW07CisK KyAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgbnVtLCBy ZWMtPnUucmVnLnZhbCk7CisKKyAgcmVjb3JkX2FyY2hfbGlzdF9hZGQgKHJl Yyk7CisKKyAgcmV0dXJuICgwKTsKK30KKworLyogUmVjb3JkIHRoZSB2YWx1 ZSBvZiBhIHBhcnQgb2YgbWVtcm95IHRoYXQgYWRkcmVzcyBpcyAiYWRkciIg YW5kIGxlbmd0aCBpcworICAgImxlbiIgdG8gInJlY29yZF9hcmNoX2xpc3Qi LiAqLworaW50CityZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuKQoreworICByZWNvcmRfdCAqcmVjOworCisgIGlm IChyZWNvcmRfZGVidWcgPiAxKQorICAgIHsKKyAgICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCSAgIlJlY29yZDogYWRkIG1lbSBh ZGRyID0gMHglcyBsZW4gPSAlZCB0byByZWNvcmQgbGlzdC5cbiIsCisJCQkg IHBhZGRyX256IChhZGRyKSwgbGVuKTsKKyAgICB9CisKKyAgaWYgKCFhZGRy KQorICAgIHsKKyAgICAgIHJldHVybiAoMCk7CisgICAgfQorCisgIHJlYyA9 IChyZWNvcmRfdCAqKSB4bWFsbG9jIChzaXplb2YgKHJlY29yZF90KSk7Cisg IHJlYy0+dS5tZW0udmFsID0gKGdkYl9ieXRlICopIHhtYWxsb2MgKGxlbik7 CisgIHJlYy0+cHJldiA9IE5VTEw7CisgIHJlYy0+bmV4dCA9IE5VTEw7Cisg IHJlYy0+dHlwZSA9IHJlY29yZF9tZW07CisgIHJlYy0+dS5tZW0uYWRkciA9 IGFkZHI7CisgIHJlYy0+dS5tZW0ubGVuID0gbGVuOworCisgIGlmICh0YXJn ZXRfcmVhZF9tZW1vcnkgKGFkZHIsIHJlYy0+dS5tZW0udmFsLCBsZW4pKQor ICAgIHsKKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK KwkJCSAgIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0g JWQgZXJyb3IuXG4iLAorCQkJICBwYWRkcl9ueiAoYWRkciksIGxlbik7Cisg ICAgICB4ZnJlZSAocmVjLT51Lm1lbS52YWwpOworICAgICAgeGZyZWUgKHJl Yyk7CisgICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgcmVjb3JkX2Fy Y2hfbGlzdF9hZGQgKHJlYyk7CisKKyAgcmV0dXJuICgwKTsKK30KKworLyog QWRkIGEgInJlY29yZF9lbmQiIHR5cGUgcmVjb3JkX3QgdG8gInJlY29yZF9h cmNoX2xpc3QiLiAqLworaW50CityZWNvcmRfYXJjaF9saXN0X2FkZF9lbmQg KGludCBuZWVkX2Rhc20pCit7CisgIHJlY29yZF90ICpyZWM7CisKKyAgaWYg KHJlY29yZF9kZWJ1ZyA+IDEpCisgICAgeworICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAorCQkJICAiUmVjb3JkOiBhZGQgZW5kIG5l ZWRfZGFzbSA9ICVkIHRvIGFyY2ggbGlzdC5cbiIsCisJCQkgIG5lZWRfZGFz bSk7CisgICAgfQorCisgIHJlYyA9IChyZWNvcmRfdCAqKSB4bWFsbG9jIChz aXplb2YgKHJlY29yZF90KSk7CisgIHJlYy0+cHJldiA9IE5VTEw7CisgIHJl Yy0+bmV4dCA9IE5VTEw7CisgIHJlYy0+dHlwZSA9IHJlY29yZF9lbmQ7CisK KyAgcmVjLT51Lm5lZWRfZGFzbSA9IG5lZWRfZGFzbTsKKworICByZWNvcmRf YXJjaF9saXN0X2FkZCAocmVjKTsKKworICByZXR1cm4gKDApOworfQorCisv KiBCZWZvcmUgaW5mZXJpb3Igc3RlcCAoV2hlbiBHREIgcmVjb3JkIHRoZSBy dW5uaW5nIG1lc3NhZ2UsIGluZmVyaW9yIG9ubHkgY2FuCisgICBzdGVwLiks IEdEQiB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZWNvcmQgdGhlIHZh bHVlcyB0byAicmVjb3JkX2xpc3QiLgorICAgVGhpcyBmdW5jdGlvbiB3aWxs IGNhbGwgImdkYmFyY2hfcmVjb3JkIiB0byByZWNvcmQgdGhlIHJ1bm5pbmcg bWVzc2FnZSBvZgorICAgaW5mZXJpb3IgYW5kIHNldCB0aGVtIHRvICJyZWNv cmRfYXJjaF9saXN0Ii4gQW5kIGFkZCBpdCB0byAicmVjb3JkX2xpc3QiLiAq Lwordm9pZAorcmVjb3JkX21lc3NhZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKQoreworICBpbnQgcmV0OworCisgIHJlY29yZF9hcmNoX2xpc3RfaGVh ZCA9IE5VTEw7CisgIHJlY29yZF9hcmNoX2xpc3RfdGFpbCA9IE5VTEw7Cisg IHJlY29yZF9yZWdjYWNoZSA9IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOwor CisgIC8qIERlYWwgd2l0aCBkaXNwbGFjZWQgc3RlcHBpbmcgKi8KKyAgaWYg KCFwdGlkX2VxdWFsIChkaXNwbGFjZWRfc3RlcF9wdGlkLCBudWxsX3B0aWQp KQorICAgIHsKKyAgICAgIGlmIChyZWNvcmRfZGVidWcpCisJeworCSAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJICAgICAgIlJlY29y ZDogdGhpcyBzdGVwcGluZyBpcyBkaXNwbGFjZWQgc3RlcHBpbmcuIENoYW5n ZSBQQyByZWdpc3RlciB0byBvcmlnaW5hbCBhZGRyZXNzIDB4JXMgYmVmb3Jl IGNhbGwgZ2RiYXJjaF9yZWNvcmQuIEFmdGVyIHRoYXQsIGNoYW5nZSBpdCBi YWNrIHRvIDB4JXMuXG4iLAorCQkJICAgICAgcGFkZHJfbnogKGRpc3BsYWNl ZF9zdGVwX29yaWdpbmFsKSwKKwkJCSAgICAgIHBhZGRyX256IChkaXNwbGFj ZWRfc3RlcF9jb3B5KSk7CisJfQorICAgICAgcmVnY2FjaGVfd3JpdGVfcGMg KHJlY29yZF9yZWdjYWNoZSwgZGlzcGxhY2VkX3N0ZXBfb3JpZ2luYWwpOwor ICAgICAgcmV0ID0gZ2RiYXJjaF9yZWNvcmQgKGdkYmFyY2gsIGRpc3BsYWNl ZF9zdGVwX2NvcHkpOworICAgICAgcmVnY2FjaGVfd3JpdGVfcGMgKHJlY29y ZF9yZWdjYWNoZSwgZGlzcGxhY2VkX3N0ZXBfY29weSk7CisgICAgfQorICBl bHNlCisgICAgeworICAgICAgcmV0ID0gZ2RiYXJjaF9yZWNvcmQgKGdkYmFy Y2gsIHJlZ2NhY2hlX3JlYWRfcGMgKHJlY29yZF9yZWdjYWNoZSkpOworICAg IH0KKworICBpZiAocmV0ID4gMCkKKyAgICB7CisgICAgICByZWNvcmRfbGlz dF9yZWxlYXNlIChyZWNvcmRfYXJjaF9saXN0X3RhaWwpOworICAgICAgZXJy b3IgKF8oIlJlY29yZDogcmVjb3JkIHBhdXNlIHRoZSBwcm9ncmFtLiIpKTsK KyAgICB9CisgIGlmIChyZXQgPCAwKQorICAgIHsKKyAgICAgIHJlY29yZF9s aXN0X3JlbGVhc2UgKHJlY29yZF9hcmNoX2xpc3RfdGFpbCk7CisgICAgICBl cnJvciAoXygiUmVjb3JkOiByZWNvcmQgbWVzc2FnZSBlcnJvci4iKSk7Cisg ICAgfQorCisgIHJlY29yZF9saXN0LT5uZXh0ID0gcmVjb3JkX2FyY2hfbGlz dF9oZWFkOworICByZWNvcmRfYXJjaF9saXN0X2hlYWQtPnByZXYgPSByZWNv cmRfbGlzdDsKKyAgcmVjb3JkX2xpc3QgPSByZWNvcmRfYXJjaF9saXN0X3Rh aWw7Cit9CisKKy8qIFRoaW5ncyB0byBjbGVhbiB1cCBpZiB3ZSBRVUlUIG91 dCBvZiBmdW5jdGlvbiB0aGF0IHNldCByZWNvcmRfbm90X3JlY29yZC4gICov CitzdGF0aWMgdm9pZAorcmVjb3JkX25vdF9yZWNvcmRfY2xlYW51cHMgKHZv aWQgKmlnbm9yZSkKK3sKKyAgcmVjb3JkX25vdF9yZWNvcmQgPSAwOworfQor Cit2b2lkCityZWNvcmRfbm90X3JlY29yZF9zZXQgKHZvaWQpCit7CisgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJl Y29yZF9ub3RfcmVjb3JkX2NsZWFudXBzLCAwKTsKKyAgcmVjb3JkX25vdF9y ZWNvcmQgPSAxOworfQorCitzdGF0aWMgdm9pZAorcmVjb3JkX29wZW4gKGNo YXIgKm5hbWUsIGludCBmcm9tX3R0eSkKK3sKKyAgaWYgKHJlY29yZF9kZWJ1 ZykKKyAgICB7CisgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csICJSZWNvcmQ6IHJlY29yZF9vcGVuXG4iKTsKKyAgICB9CisKKyAgLyog Y2hlY2sgZXhlYyAqLworICBpZiAoIXRhcmdldF9oYXNfZXhlY3V0aW9uKQor ICAgIHsKKyAgICAgIGVycm9yIChfKCJSZWNvcmQ6IHRoZSBwcm9ncmFtIGlz IG5vdCBiZWluZyBydW4uIikpOworICAgIH0KKworICBpZiAoIWdkYmFyY2hf cmVjb3JkX3AgKGN1cnJlbnRfZ2RiYXJjaCkpCisgICAgeworICAgICAgZXJy b3IgKF8KKwkgICAgICgiUmVjb3JkOiB0aGUgY3VycmVudCBhcmNoaXRlY3R1 cmUgZG9uJ3Qgc3VwcG9ydCByZWNvcmQgZnVuY3Rpb24uIikpOworICAgIH0K KworICAvKiBDaGVjayBpZiByZWNvcmQgdGFyZ2V0IGlzIGFscmVhZHkgcnVu bmluZyAqLworICBpZiAoUkVDT1JEX0lTX1VTRUQpCisgICAgeworICAgICAg aWYgKCFucXVlcnkKKwkgIChfCisJICAgKCJSZWNvcmQgdGFyZ2V0IGFscmVh ZHkgcnVubmluZywgZG8geW91IHdhbnQgZGVsZXRlIHRoZSBvbGQgcnVubmlu ZyBtZXNzYWdlPyIpKSkKKwl7CisJICByZXR1cm47CisJfQorICAgIH0KKwor ICBwdXNoX3RhcmdldCAoJnJlY29yZF9vcHMpOworfQorCitzdGF0aWMgdm9p ZAorcmVjb3JkX2Nsb3NlIChpbnQgcXVpdHRpbmcpCit7CisgIGlmIChyZWNv cmRfZGVidWcpCisgICAgeworICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAiUmVjb3JkOiByZWNvcmRfY2xvc2VcbiIpOworICAgIH0K KyAgcmVjb3JkX2xpc3RfcmVsZWFzZSAocmVjb3JkX2xpc3QpOworICByZWNv cmRfbGlzdF9zdGF0dXMgPSAxOworICByZWNvcmRfZXhlY2RpciA9IEVYRUNf Rk9SV0FSRDsKK30KKworc3RhdGljIHZvaWQKK3JlY29yZF9yZXN1bWUgKHB0 aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ2du YWwpCit7CisgIHJlY29yZF9yZXN1bWVfc3RlcCA9IHN0ZXA7CisKKyAgaWYg KCFSRUNPUkRfSVNfUkVQTEFZKQorICAgIHsKKyAgICAgIHJlY29yZF9tZXNz YWdlIChjdXJyZW50X2dkYmFyY2gpOworICAgICAgcmV0dXJuIHJlY29yZF9v cHMuYmVuZWF0aC0+dG9fcmVzdW1lIChwdGlkLCAxLCBzaWdnbmFsKTsKKyAg ICB9Cit9CisKK3N0YXRpYyB2b2lkCityZWNvcmRfc2lnX2hhbmRsZXIgKGlu dCBzaWdubykKK3sKKyAgaWYgKHJlY29yZF9kZWJ1ZykKKyAgICB7CisgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSZWNvcmQ6IGdl dCBhIHNpZ25hbFxuIik7CisgICAgfQorICByZWNvcmRfcmVzdW1lX3N0ZXAg PSAxOworICByZWNvcmRfZ2V0X3NpZyA9IDE7Cit9CisKK3N0YXRpYyBwdGlk X3QKK3JlY29yZF93YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93 YWl0c3RhdHVzICpzdGF0dXMpCit7CisgIGlmIChyZWNvcmRfZGVidWcpCisg ICAgeworICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAi UmVjb3JkOiByZWNvcmRfcmVzdW1lX3N0ZXAgPSAlZFxuIiwKKwkJCSAgcmVj b3JkX3Jlc3VtZV9zdGVwKTsKKyAgICB9CisKKyAgaWYgKCFSRUNPUkRfSVNf UkVQTEFZKQorICAgIHsKKyAgICAgIHJldHVybiByZWNvcmRfb3BzLmJlbmVh dGgtPnRvX3dhaXQgKHB0aWQsIHN0YXR1cyk7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZF9hY3Q7Cisg ICAgICBpbnQgbmVlZF9kYXNtID0gMDsKKyAgICAgIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKKyAgICAg IGludCBjb24gPSAxOworICAgICAgaW50IGZpcnN0X3JlY29yZF9lbmQgPSAx OworCisgICAgICByZWNvcmRfZ2V0X3NpZyA9IDA7CisgICAgICBhY3Quc2Ff aGFuZGxlciA9IHJlY29yZF9zaWdfaGFuZGxlcjsKKyAgICAgIGFjdC5zYV9t YXNrID0gcmVjb3JkX21hc2thbGw7CisgICAgICBhY3Quc2FfZmxhZ3MgPSBT QV9SRVNUQVJUOworICAgICAgaWYgKHNpZ2FjdGlvbiAoU0lHSU5ULCAmYWN0 LCAmb2xkX2FjdCkpCisJeworCSAgcGVycm9yX3dpdGhfbmFtZSAoXygiUmVj b3JkOiBzaWdhY3Rpb24iKSk7CisJfQorCisgICAgICBkbworCXsKKworCSAg LyogY2hlY2sgc3RhdGUgKi8KKwkgIGlmICgocmVjb3JkX2V4ZWNkaXIgPT0g RVhFQ19SRVZFUlNFICYmICFyZWNvcmRfbGlzdC0+cHJldgorCSAgICAgICAm JiByZWNvcmRfbGlzdF9zdGF0dXMgPT0gMSkgfHwgKHJlY29yZF9leGVjZGly ICE9IEVYRUNfUkVWRVJTRQorCQkJCQkgICAgICAgJiYgIXJlY29yZF9saXN0 LT5uZXh0CisJCQkJCSAgICAgICAmJiByZWNvcmRfbGlzdF9zdGF0dXMgPT0g MikpCisJICAgIHsKKwkgICAgICBpZiAocmVjb3JkX2xpc3Rfc3RhdHVzID09 IDIpCisJCXsKKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs CisJCQkJICAgICAgIlJlY29yZDogcnVubmluZyB0byB0aGUgZW5kIG9mIHJl Y29yZCBsaXN0LlxuIik7CisJCX0KKwkgICAgICBlbHNlIGlmIChyZWNvcmRf bGlzdF9zdGF0dXMgPT0gMSkKKwkJeworCQkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKwkJCQkgICAgICAiUmVjb3JkOiBydW5uaW5nIHRv IHRoZSBiZWdpbiBvZiByZWNvcmQgbGlzdC5cbiIpOworCQl9CisJICAgICAg c3RvcF9zb29uID0gU1RPUF9RVUlFVExZOworCSAgICAgIGJyZWFrOworCSAg ICB9CisJICByZWNvcmRfbGlzdF9zdGF0dXMgPSAwOworCisJICAvKiBzZXQg cmVnaXN0ZXIgYW5kIG1lbW9yeSBhY2NvcmRpbmcgdG8gcmVjb3JkX2xpc3Qg Ki8KKwkgIGlmIChyZWNvcmRfbGlzdC0+dHlwZSA9PSByZWNvcmRfcmVnKQor CSAgICB7CisJICAgICAgLyogcmVnICovCisJICAgICAgZ2RiX2J5dGUgcmVn W01BWF9SRUdJU1RFUl9TSVpFXTsKKwkgICAgICBpZiAocmVjb3JkX2RlYnVn ID4gMSkKKwkJeworCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKwkJCQkgICAgICAiUmVjb3JkOiByZWNvcmRfcmVnIHRvIGluZmVyaW9y IG51bSA9ICVkLlxuIiwKKwkJCQkgICAgICByZWNvcmRfbGlzdC0+dS5yZWcu bnVtKTsKKwkJfQorCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdj YWNoZSwgcmVjb3JkX2xpc3QtPnUucmVnLm51bSwgcmVnKTsKKwkgICAgICBy ZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWNvcmRfbGlzdC0+ dS5yZWcubnVtLAorCQkJCSAgICAgcmVjb3JkX2xpc3QtPnUucmVnLnZhbCk7 CisJICAgICAgbWVtY3B5IChyZWNvcmRfbGlzdC0+dS5yZWcudmFsLCByZWcs IE1BWF9SRUdJU1RFUl9TSVpFKTsKKwkgICAgfQorCSAgZWxzZSBpZiAocmVj b3JkX2xpc3QtPnR5cGUgPT0gcmVjb3JkX21lbSkKKwkgICAgeworCSAgICAg IC8qIG1lbSAqLworCSAgICAgIGdkYl9ieXRlICptZW0gPSBhbGxvY2EgKHJl Y29yZF9saXN0LT51Lm1lbS5sZW4pOworCSAgICAgIGlmIChyZWNvcmRfZGVi dWcgPiAxKQorCQl7CisJCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAorCQkJCSAgICAgICJSZWNvcmQ6IHJlY29yZF9tZW0gdG8gaW5mZXJp b3IgYWRkciA9IDB4JXMgbGVuID0gJWQuXG4iLAorCQkJCSAgICAgIHBhZGRy X256IChyZWNvcmRfbGlzdC0+dS5tZW0uYWRkciksCisJCQkJICAgICAgcmVj b3JkX2xpc3QtPnUubWVtLmxlbik7CisJCX0KKwkgICAgICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5CisJCSAgKHJlY29yZF9saXN0LT51Lm1lbS5hZGRyLCBt ZW0sIHJlY29yZF9saXN0LT51Lm1lbS5sZW4pKQorCQl7CisJCSAgZXJyb3Ig KF8oIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQg ZXJyb3IuIiksCisJCQkgcGFkZHJfbnogKHJlY29yZF9saXN0LT51Lm1lbS5h ZGRyKSwKKwkJCSByZWNvcmRfbGlzdC0+dS5tZW0ubGVuKTsKKwkJfQorCSAg ICAgIGlmICh0YXJnZXRfd3JpdGVfbWVtb3J5CisJCSAgKHJlY29yZF9saXN0 LT51Lm1lbS5hZGRyLCByZWNvcmRfbGlzdC0+dS5tZW0udmFsLAorCQkgICBy ZWNvcmRfbGlzdC0+dS5tZW0ubGVuKSkKKwkJeworCQkgIGVycm9yIChfCisJ CQkgKCJSZWNvcmQ6IHdyaXRlIG1lbW9yeSBhZGRyID0gMHglcyBsZW4gPSAl ZCBlcnJvci4iKSwKKwkJCSBwYWRkcl9ueiAocmVjb3JkX2xpc3QtPnUubWVt LmFkZHIpLAorCQkJIHJlY29yZF9saXN0LT51Lm1lbS5sZW4pOworCQl9CisJ ICAgICAgbWVtY3B5IChyZWNvcmRfbGlzdC0+dS5tZW0udmFsLCBtZW0sIHJl Y29yZF9saXN0LT51Lm1lbS5sZW4pOworCSAgICB9CisJICBlbHNlCisJICAg IHsKKwkgICAgICBDT1JFX0FERFIgdG1wX3BjOworCSAgICAgIHN0cnVjdCBi cmVha3BvaW50ICpiOworCisJICAgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEp CisJCXsKKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJ CQkJICAgICAgIlJlY29yZDogcmVjb3JkX2VuZCB0byBpbmZlcmlvciBuZWVk X2Rhc20gPSAlZC5cbiIsCisJCQkJICAgICAgcmVjb3JkX2xpc3QtPnUubmVl ZF9kYXNtKTsKKwkJfQorCisJICAgICAgaWYgKHJlY29yZF9leGVjZGlyID09 IEVYRUNfRk9SV0FSRCkKKwkJeworCQkgIG5lZWRfZGFzbSA9IHJlY29yZF9s aXN0LT51Lm5lZWRfZGFzbTsKKwkJfQorCSAgICAgIGlmIChuZWVkX2Rhc20p CisJCXsKKwkJICBnZGJhcmNoX3JlY29yZF9kYXNtIChjdXJyZW50X2dkYmFy Y2gpOworCQl9CisKKwkgICAgICBpZiAoZmlyc3RfcmVjb3JkX2VuZCAmJiBy ZWNvcmRfZXhlY2RpciA9PSBFWEVDX1JFVkVSU0UpCisJCXsKKwkJICAvKiBX aGVuIHJldmVyc2UgZXhjdXRlLCB0aGUgZmlyc3QgcmVjb3JkX2VuZCBpcyB0 aGUgcGFydCBvZiBjdXJyZW50IGluc3RydWN0aW9uICovCisJCSAgZmlyc3Rf cmVjb3JkX2VuZCA9IDA7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICAv KiBJbiBFWEVDX1JFVkVSU0UgbW9kZSwgdGhpcyBpcyB0aGUgcmVjb3JkX2Vu ZCBvZiBwcmV2CisJCSAgICAgaW5zdHJ1Y3Rpb24uCisJCSAgICAgSW4gRVhF Q19GT1JXQVJEIG1vZGUsIHRoaXMgaXMgdGhlIHJlY29yZF9lbmQgb2YgY3Vy cmVudAorCQkgICAgIGluc3RydWN0aW9uLiAqLworCQkgIC8qIHN0ZXAgKi8K KwkJICBpZiAocmVjb3JkX3Jlc3VtZV9zdGVwKQorCQkgICAgeworCQkgICAg ICBpZiAocmVjb3JkX2RlYnVnID4gMSkKKwkJCXsKKwkJCSAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiUmVjb3JkOiBzdGVwLlxuIik7CisJ CQl9CisJCSAgICAgIGNvbiA9IDA7CisJCSAgICB9CisKKwkJICAvKiBjaGVj ayBicmVha3BvaW50ICovCisJCSAgdG1wX3BjID0gcmVhZF9wYyAoKTsKKwkJ ICBmb3IgKGIgPSBicmVha3BvaW50X2NoYWluOyBiOyBiID0gYi0+bmV4dCkK KwkJICAgIHsKKwkJICAgICAgaWYgKGItPmxvYy0+aW5zZXJ0ZWQpCisJCQl7 CisJCQkgIGlmIChiLT5sb2MtPnRhcmdldF9pbmZvLnBsYWNlZF9hZGRyZXNz ID09IHRtcF9wYykKKwkJCSAgICB7CisJCQkgICAgICBpZiAocmVjb3JkX2Rl YnVnID4gMSkKKwkJCQl7CisJCQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCisJCQkJCQkgICAgICAiUmVjb3JkOiBicmVhayBhdCAweCVz LlxuIiwKKwkJCQkJCSAgICAgIHBhZGRyX256ICh0bXBfcGMpKTsKKwkJCQl9 CisJCQkgICAgICBjb24gPSAwOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0K KwkJfQorCSAgICAgIGlmIChyZWNvcmRfZXhlY2RpciA9PSBFWEVDX1JFVkVS U0UpCisJCXsKKwkJICBuZWVkX2Rhc20gPSByZWNvcmRfbGlzdC0+dS5uZWVk X2Rhc207CisJCX0KKwkgICAgfQorCisJICBpZiAocmVjb3JkX2V4ZWNkaXIg PT0gRVhFQ19SRVZFUlNFKQorCSAgICB7CisJICAgICAgaWYgKHJlY29yZF9s aXN0LT5wcmV2ICYmIGNvbikKKwkJcmVjb3JkX2xpc3QgPSByZWNvcmRfbGlz dC0+cHJldjsKKwkgICAgICBlbHNlCisJCXJlY29yZF9saXN0X3N0YXR1cyA9 IDE7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChyZWNv cmRfbGlzdC0+bmV4dCkKKwkJcmVjb3JkX2xpc3QgPSByZWNvcmRfbGlzdC0+ bmV4dDsKKwkgICAgICBlbHNlCisJCXJlY29yZF9saXN0X3N0YXR1cyA9IDI7 CisJICAgIH0KKworCX0KKyAgICAgIHdoaWxlIChjb24pOworCisgICAgICBp ZiAoc2lnYWN0aW9uIChTSUdBTFJNLCAmb2xkX2FjdCwgTlVMTCkpCisJewor CSAgcGVycm9yX3dpdGhfbmFtZSAoXygiUmVjb3JkOiBzaWdhY3Rpb24iKSk7 CisJfQorCisgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRf U1RPUFBFRDsKKyAgICAgIGlmIChyZWNvcmRfZ2V0X3NpZykKKwl7CisJICBz dGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9TSUdOQUxfSU5UOworCX0KKyAg ICAgIGVsc2UKKwl7CisJICBzdGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9T SUdOQUxfVFJBUDsKKwl9CisgICAgfQorCisgIHJldHVybiBpbmZlcmlvcl9w dGlkOworfQorCitzdGF0aWMgdm9pZAorcmVjb3JkX2Rpc2Nvbm5lY3QgKHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsIGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKK3sKKyAgaWYgKHJlY29yZF9kZWJ1ZykKKyAgICB7CisgICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSZWNvcmQ6IHJlY29y ZF9kaXNjb25uZWN0XG4iKTsKKyAgICB9CisgIHVucHVzaF90YXJnZXQgKCZy ZWNvcmRfb3BzKTsKKyAgdGFyZ2V0X2Rpc2Nvbm5lY3QgKGFyZ3MsIGZyb21f dHR5KTsKK30KKworc3RhdGljIHZvaWQKK3JlY29yZF9kZXRhY2ggKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKK3sKKyAgaWYgKHJlY29yZF9kZWJ1ZykK KyAgICB7CisgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICJSZWNvcmQ6IHJlY29yZF9kZXRhY2hcbiIpOworICAgIH0KKyAgdW5wdXNo X3RhcmdldCAoJnJlY29yZF9vcHMpOworICB0YXJnZXRfZGV0YWNoIChhcmdz LCBmcm9tX3R0eSk7Cit9CisKKy8qIENsb3NlIHJlY29yZCB0YXJnZXQgYmVm b3JlIGtpbGwgdGhlIGluZmVyaW9yIHByb2Nlc3MuICovCitzdGF0aWMgdm9p ZAorcmVjb3JkX2tpbGwgKHZvaWQpCit7CisgIGlmIChyZWNvcmRfZGVidWcp CisgICAgeworICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiUmVjb3JkOiByZWNvcmRfa2lsbFxuIik7CisgICAgfQorICB1bnB1c2hf dGFyZ2V0ICgmcmVjb3JkX29wcyk7CisgIHRhcmdldF9raWxsICgpOworfQor CisvKiBSZWNvcmQgcmVnaXN0ZXJzIGNoYW5nZSB0byBsaXN0IGFzIGFuIGlu c3RydWN0aW9uICovCitzdGF0aWMgdm9pZAorcmVjb3JkX3JlZ2lzdGVyc19j aGFuZ2UgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0p Cit7CisgIHJlY29yZF9hcmNoX2xpc3RfaGVhZCA9IE5VTEw7CisgIHJlY29y ZF9hcmNoX2xpc3RfdGFpbCA9IE5VTEw7CisgIHJlY29yZF9yZWdjYWNoZSA9 IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOworICBpZiAocmVnbnVtIDwgMCkK KyAgICB7CisgICAgICBpbnQgaTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBn ZGJhcmNoX251bV9yZWdzIChnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUp KTsgaSsrKQorCXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KGkpKQorCSAgICB7CisJICAgICAgcmVjb3JkX2xpc3RfcmVsZWFzZSAocmVj b3JkX2FyY2hfbGlzdF90YWlsKTsKKwkgICAgICBlcnJvciAoXygiUmVjb3Jk OiByZWNvcmQgbWVzc2FnZSBlcnJvci4iKSk7CisJICAgIH0KKwl9CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAocmVnbnVtKSkKKwl7CisJICByZWNvcmRfbGlzdF9yZWxlYXNl IChyZWNvcmRfYXJjaF9saXN0X3RhaWwpOworCSAgZXJyb3IgKF8oIlJlY29y ZDogcmVjb3JkIG1lc3NhZ2UgZXJyb3IuIikpOworCX0KKyAgICB9CisgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9lbmQgKDApKQorICAgIHsKKyAgICAg IHJlY29yZF9saXN0X3JlbGVhc2UgKHJlY29yZF9hcmNoX2xpc3RfdGFpbCk7 CisgICAgICBlcnJvciAoXygiUmVjb3JkOiByZWNvcmQgbWVzc2FnZSBlcnJv ci4iKSk7CisgICAgfQorICByZWNvcmRfbGlzdC0+bmV4dCA9IHJlY29yZF9h cmNoX2xpc3RfaGVhZDsKKyAgcmVjb3JkX2FyY2hfbGlzdF9oZWFkLT5wcmV2 ID0gcmVjb3JkX2xpc3Q7CisgIHJlY29yZF9saXN0ID0gcmVjb3JkX2FyY2hf bGlzdF90YWlsOworfQorCisvKiBYWFg6IEkgZG9uJ3Qga25vdyBob3cgdG8g ZG8gaWYgR0RCIGNhbGwgZnVuY3Rpb24gdGFyZ2V0X3N0b3JlX3JlZ2lzdGVy cworICAgd2l0aG91dCBjYWxsIGZ1bmN0aW9uIHRhcmdldF9wcmVwYXJlX3Rv X3N0b3JlLiAqLworc3RhdGljIHZvaWQKK3JlY29yZF9wcmVwYXJlX3RvX3N0 b3JlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQoreworICBpZiAoIXJl Y29yZF9ub3RfcmVjb3JkKQorICAgIHsKKyAgICAgIGlmIChSRUNPUkRfSVNf UkVQTEFZKQorCXsKKwkgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHM7 CisJICAvKiBMZXQgdXNlciBjaG9pY2UgaWYgaGUgd2FudCB0byB3cml0ZSBy ZWdpc3RlciBvciBub3QuICovCisJICBpZiAoIW5xdWVyeSAoXworCQkgICAg ICAgKCJCZWN1c2UgR0RCIGlzIGluIHJlcGxheSBtb2RlLCB0aGlzIG9wZXJh dGlvbiB3aWxsIGRlc3RvcnkgdGhlIHJlY29yZCBpbiB0aGUgbmV4dCBpZiBz ZXQgdGhlIHZhbHVlIG9mIHJlZ2lzdGVyICVzLiBEbyB5b3Ugd2FudCBHREIg ZG8gaXQ/IiksCisJCSAgICAgICBnZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGdl dF9yZWdjYWNoZV9hcmNoCisJCQkJCSAgICAgIChyZWdjYWNoZSksCisJCQkJ CSAgICAgIHJlY29yZF9yZWdjYWNoZV9yYXdfd3JpdGVfcmVnbnVtKSkpCisJ ICAgIHsKKwkgICAgICBlcnJvciAoXygiUmVjb3JkOiByZWNvcmQgY2FuY2Vs IHRoZSBvcGVyYXRpb24uIikpOworCSAgICB9CisKKwkgIC8qIERlc3Rvcnkg dGhlIHJlY29yZCBpbiB0aGUgbmV4dCAqLworCSAgcmVjb3JkX2xpc3RfcmVs ZWFzZV9uZXh0IChyZWNvcmRfbGlzdCk7CisJfQorCisgICAgICByZWNvcmRf cmVnaXN0ZXJzX2NoYW5nZSAocmVnY2FjaGUsIHJlY29yZF9yZWdjYWNoZV9y YXdfd3JpdGVfcmVnbnVtKTsKKyAgICB9CisgIHJlY29yZF9vcHMuYmVuZWF0 aC0+dG9fcHJlcGFyZV90b19zdG9yZSAocmVnY2FjaGUpOworfQorCitzdGF0 aWMgTE9OR0VTVAorcmVjb3JkX3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcywgZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKKwkJICAg ICBjb25zdCBjaGFyICphbm5leCwgZ2RiX2J5dGUgKiByZWFkYnVmLAorCQkg ICAgIGNvbnN0IGdkYl9ieXRlICogd3JpdGVidWYsIFVMT05HRVNUIG9mZnNl dCwgTE9OR0VTVCBsZW4pCit7CisgIGlmICghcmVjb3JkX25vdF9yZWNvcmQK KyAgICAgICYmIChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9NRU1PUlkKKwkg IHx8IG9iamVjdCA9PSBUQVJHRVRfT0JKRUNUX1JBV19NRU1PUlkpICYmIHdy aXRlYnVmKQorICAgIHsKKyAgICAgIGlmIChSRUNPUkRfSVNfUkVQTEFZKQor CXsKKwkgIC8qIExldCB1c2VyIGNob2ljZSBpZiBoZSB3YW50IHRvIHdyaXRl IG1lbW9yeSBvciBub3QuICovCisJICBpZiAoIW5xdWVyeSAoXworCQkgICAg ICAgKCJCZWN1c2UgR0RCIGlzIGluIHJlcGxheSBtb2RlLCB0aGlzIG9wZXJh dGlvbiB3aWxsIGRlc3RvcnkgdGhlIHJlY29yZCBpbiB0aGUgbmV4dCBpZiB3 cml0ZSBtZW1vcnkgdGhhdCBhZGRyIGlzIDB4JXMgYW5kIHNpemUgaXMgJWxs ZC4gRG8geW91IHdhbnQgR0RCIGRvIGl0PyIpLAorCQkgICAgICAgcGFkZHJf bnogKG9mZnNldCksIGxlbikpCisJICAgIHsKKwkgICAgICByZXR1cm4gLTE7 CisJICAgIH0KKworCSAgLyogRGVzdG9yeSB0aGUgcmVjb3JkIGluIHRoZSBu ZXh0ICovCisJICByZWNvcmRfbGlzdF9yZWxlYXNlX25leHQgKHJlY29yZF9s aXN0KTsKKwl9CisKKyAgICAgIC8qIFJlY29yZCByZWdpc3RlcnMgY2hhbmdl IHRvIGxpc3QgYXMgYW4gaW5zdHJ1Y3Rpb24gKi8KKyAgICAgIHJlY29yZF9h cmNoX2xpc3RfaGVhZCA9IE5VTEw7CisgICAgICByZWNvcmRfYXJjaF9saXN0 X3RhaWwgPSBOVUxMOworICAgICAgcmVjb3JkX3JlZ2NhY2hlID0gZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCk7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtIChvZmZzZXQsIGxlbikpCisJeworCSAgcmVjb3JkX2xpc3Rf cmVsZWFzZSAocmVjb3JkX2FyY2hfbGlzdF90YWlsKTsKKwkgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiUmVjb3JkOiByZWNvcmQgbWVz c2FnZSBlcnJvci4iKSk7CisJICByZXR1cm4gLTE7CisJfQorICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX2VuZCAoMCkpCisJeworCSAgcmVjb3Jk X2xpc3RfcmVsZWFzZSAocmVjb3JkX2FyY2hfbGlzdF90YWlsKTsKKwkgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiUmVjb3JkOiByZWNv cmQgbWVzc2FnZSBlcnJvci4iKSk7CisJICByZXR1cm4gLTE7CisJfQorICAg ICAgcmVjb3JkX2xpc3QtPm5leHQgPSByZWNvcmRfYXJjaF9saXN0X2hlYWQ7 CisgICAgICByZWNvcmRfYXJjaF9saXN0X2hlYWQtPnByZXYgPSByZWNvcmRf bGlzdDsKKyAgICAgIHJlY29yZF9saXN0ID0gcmVjb3JkX2FyY2hfbGlzdF90 YWlsOworICAgIH0KKworICByZXR1cm4gcmVjb3JkX29wcy5iZW5lYXRoLT50 b194ZmVyX3BhcnRpYWwgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1ZiwK KwkJCQkJICAgICAgd3JpdGVidWYsIG9mZnNldCwgbGVuKTsKK30KKworc3Rh dGljIGludAorcmVjb3JkX2luc2VydF9icmVha3BvaW50IChzdHJ1Y3QgYnBf dGFyZ2V0X2luZm8gKmJwX3RndCkKK3sKKyAgaWYgKCFSRUNPUkRfSVNfUkVQ TEFZKQorICAgIHsKKyAgICAgIHJldHVybiByZWNvcmRfb3BzLmJlbmVhdGgt PnRvX2luc2VydF9icmVha3BvaW50IChicF90Z3QpOworICAgIH0KKworICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmVjb3JkX3JlbW92ZV9icmVh a3BvaW50IChzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKK3sKKyAg aWYgKCFSRUNPUkRfSVNfUkVQTEFZKQorICAgIHsKKyAgICAgIHJldHVybiBy ZWNvcmRfb3BzLmJlbmVhdGgtPnRvX3JlbW92ZV9icmVha3BvaW50IChicF90 Z3QpOworICAgIH0KKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGVudW0g ZXhlY19kaXJlY3Rpb25fa2luZAorcmVjb3JkX2dldF9leGVjZGlyICh2b2lk KQoreworICBpZiAocmVjb3JkX2RlYnVnID4gMSkKKyAgICBwcmludGZfZmls dGVyZWQgKCJSZWNvcmQ6IGV4ZWNkaXIgaXMgJXNcbiIsCisJCSAgICAgcmVj b3JkX2V4ZWNkaXIgPT0gRVhFQ19GT1JXQVJEID8gImZvcndhcmQiIDoKKwkJ ICAgICByZWNvcmRfZXhlY2RpciA9PSBFWEVDX1JFVkVSU0UgPyAicmV2ZXJz ZSIgOiAidW5rbm93biIpOworICByZXR1cm4gcmVjb3JkX2V4ZWNkaXI7Cit9 CisKK3N0YXRpYyBpbnQKK3JlY29yZF9zZXRfZXhlY2RpciAoZW51bSBleGVj X2RpcmVjdGlvbl9raW5kIGRpcikKK3sKKyAgaWYgKHJlY29yZF9kZWJ1ZykK KyAgICBwcmludGZfZmlsdGVyZWQgKCJSZWNvcmQ6IHNldCBleGVjZGlyOiAl c1xuIiwKKwkJICAgICBkaXIgPT0gRVhFQ19GT1JXQVJEID8gImZvcndhcmQi IDoKKwkJICAgICBkaXIgPT0gRVhFQ19SRVZFUlNFID8gInJldmVyc2UiIDog ImJhZCBkaXJlY3Rpb24iKTsKKworICAvKiBGSVhNRTogY2hlY2sgdGFyZ2V0 IGZvciBjYXBhYmlsaXR5LiAgKi8KKyAgaWYgKGRpciA9PSBFWEVDX0ZPUldB UkQgfHwgZGlyID09IEVYRUNfUkVWRVJTRSkKKyAgICByZXR1cm4gKHJlY29y ZF9leGVjZGlyID0gZGlyKTsKKyAgZWxzZQorICAgIHJldHVybiBFWEVDX0VS Uk9SOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9yZWNvcmRfb3BzICh2b2lk KQoreworICByZWNvcmRfb3BzLnRvX3Nob3J0bmFtZSA9ICJyZWNvcmQiOwor ICByZWNvcmRfb3BzLnRvX2xvbmduYW1lID0gIlJlY29yZCBhbmQgcmV2ZXJz ZSB0YXJnZXQiOworICByZWNvcmRfb3BzLnRvX2RvYyA9CisgICAgIlJlY29y ZCB0aGUgcHJvZ3JhbSBydW5uaW5nIG1lc3NhZ2UgYW5kIHJlcGxheSB0aGlz IG1lc3NhZ2UuIjsKKyAgcmVjb3JkX29wcy50b19vcGVuID0gcmVjb3JkX29w ZW47CisgIHJlY29yZF9vcHMudG9fY2xvc2UgPSByZWNvcmRfY2xvc2U7Cisg IHJlY29yZF9vcHMudG9fcmVzdW1lID0gcmVjb3JkX3Jlc3VtZTsKKyAgcmVj b3JkX29wcy50b193YWl0ID0gcmVjb3JkX3dhaXQ7CisgIHJlY29yZF9vcHMu dG9fZGlzY29ubmVjdCA9IHJlY29yZF9kaXNjb25uZWN0OworICByZWNvcmRf b3BzLnRvX2RldGFjaCA9IHJlY29yZF9kZXRhY2g7CisgIHJlY29yZF9vcHMu dG9fa2lsbCA9IHJlY29yZF9raWxsOworICByZWNvcmRfb3BzLnRvX2NyZWF0 ZV9pbmZlcmlvciA9IGZpbmRfZGVmYXVsdF9jcmVhdGVfaW5mZXJpb3I7CS8q IE1ha2UgcmVjb3JkIHN1cHBwb3J0IGNvbW1hbmQgInJ1biIuICovCisgIHJl Y29yZF9vcHMudG9fcHJlcGFyZV90b19zdG9yZSA9IHJlY29yZF9wcmVwYXJl X3RvX3N0b3JlOworICByZWNvcmRfb3BzLnRvX3hmZXJfcGFydGlhbCA9IHJl Y29yZF94ZmVyX3BhcnRpYWw7CisgIHJlY29yZF9vcHMudG9faW5zZXJ0X2Jy ZWFrcG9pbnQgPSByZWNvcmRfaW5zZXJ0X2JyZWFrcG9pbnQ7CisgIHJlY29y ZF9vcHMudG9fcmVtb3ZlX2JyZWFrcG9pbnQgPSByZWNvcmRfcmVtb3ZlX2Jy ZWFrcG9pbnQ7CisgIHJlY29yZF9vcHMudG9fZ2V0X2V4ZWNkaXIgPSByZWNv cmRfZ2V0X2V4ZWNkaXI7CisgIHJlY29yZF9vcHMudG9fc2V0X2V4ZWNkaXIg PSByZWNvcmRfc2V0X2V4ZWNkaXI7CisgIHJlY29yZF9vcHMudG9fc3RyYXR1 bSA9IHJlY29yZF9zdHJhdHVtOworICByZWNvcmRfb3BzLnRvX21hZ2ljID0g T1BTX01BR0lDOworfQorCitzdGF0aWMgdm9pZAorc2hvd19yZWNvcmRfZGVi dWcgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisJCSAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1 ZSkKK3sKKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5n IG9mIHJlY29yZCB0YXJnZXQgaXMgJXMuXG4iKSwgdmFsdWUpOworfQorCitz dGF0aWMgdm9pZAorY21kX3JlY29yZF9zdGFydCAoY2hhciAqYXJncywgaW50 IGZyb21fdHR5KQoreworICBleGVjdXRlX2NvbW1hbmQgKCJ0YXJnZXQgcmVj b3JkIiwgZnJvbV90dHkpOworfQorCitzdGF0aWMgdm9pZAorY21kX3JlY29y ZF9kZWxldGUgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK3sKKyAgaWYg KFJFQ09SRF9JU19VU0VEKQorICAgIHsKKyAgICAgIGlmIChSRUNPUkRfSVNf UkVQTEFZKQorCXsKKwkgIGlmICghZnJvbV90dHkgfHwgcXVlcnkgKF8KKwkJ CQkgICgiUmVjb3JkOiBkZWxldGUgdGhlIG5leHQgcnVubmluZyBtZXNzYWdl cyBhbmQgYmVnaW4gdG8gcmVjb3JkIHRoZSBydW5uaW5nIG1lc3NhZ2UgYXQg Y3VycmVudCBhZGRyZXNzPyIpKSkKKwkgICAgeworCSAgICAgIHJlY29yZF9s aXN0X3JlbGVhc2VfbmV4dCAocmVjb3JkX2xpc3QpOworCSAgICB9CisJfQor ICAgICAgZWxzZQorCXsKKwkgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkg ICAgICgiUmVjb3JkOiBHREIgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHJlY29y ZCBsaXN0LlxuIikpOworCX0KKworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJSZWNvcmQ6IHJlY29yZCB0YXJn ZXQgaXMgbm90IHN0YXJ0ZWQuXG4iKSk7CisgICAgfQorfQorCitzdGF0aWMg dm9pZAorY21kX3JlY29yZF9zdG9wIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCit7CisgIGlmIChSRUNPUkRfSVNfVVNFRCkKKyAgICB7CisgICAgICBp ZiAoIXJlY29yZF9saXN0IHx8ICFmcm9tX3R0eSB8fCBxdWVyeSAoXworCQkJ CQkgICAgICAoIlJlY29yZDogZGVsZXRlIGFsbCB0aGUgcmVjb3JkIG1lc3Nh Z2VzIGFuZCBzdG9wIHJlY29yZCB0YXJnZXQ/IikpKQorCXsKKwkgIHVucHVz aF90YXJnZXQgKCZyZWNvcmRfb3BzKTsKKwl9CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJlY29yZDogcmVj b3JkIHRhcmdldCBpcyBub3Qgc3RhcnRlZC5cbiIpKTsKKyAgICB9Cit9CisK K3ZvaWQKK19pbml0aWFsaXplX3JlY29yZCAodm9pZCkKK3sKKyAgLyogaW5p dCByZWNvcmRfbWFza2FsbCAqLworICBpZiAoc2lnZmlsbHNldCAoJnJlY29y ZF9tYXNrYWxsKSA9PSAtMSkKKyAgICB7CisgICAgICBwZXJyb3Jfd2l0aF9u YW1lIChfKCJSZWNvcmQ6IHNpZ2ZpbGxzZXQiKSk7CisgICAgfQorCisgIC8q IGluaXQgcmVjb3JkX2ZpcnN0ICovCisgIHJlY29yZF9maXJzdC5wcmV2ID0g TlVMTDsKKyAgcmVjb3JkX2ZpcnN0Lm5leHQgPSBOVUxMOworICByZWNvcmRf Zmlyc3QudHlwZSA9IHJlY29yZF9lbmQ7CisgIHJlY29yZF9maXJzdC51Lm5l ZWRfZGFzbSA9IDA7CisKKyAgaW5pdF9yZWNvcmRfb3BzICgpOworICBhZGRf dGFyZ2V0ICgmcmVjb3JkX29wcyk7CisKKyAgYWRkX3NldHNob3dfemludGVn ZXJfY21kICgicmVjb3JkIiwgbm9fY2xhc3MsICZyZWNvcmRfZGVidWcsCisJ CQkgICAgXygiU2V0IHJlY29yZCBkZWJ1Z2dpbmcuIiksCisJCQkgICAgXygi U2hvdyByZWNvcmQgZGVidWdnaW5nLiIpLAorCQkJICAgIF8KKwkJCSAgICAo IldoZW4gbm9uLXplcm8sIHJlY29yZCBzcGVjaWZpYyBkZWJ1Z2dpbmcgaXMg ZW5hYmxlZC4iKSwKKwkJCSAgICBOVUxMLCBzaG93X3JlY29yZF9kZWJ1Zywg JnNldGRlYnVnbGlzdCwKKwkJCSAgICAmc2hvd2RlYnVnbGlzdCk7CisKKyAg YWRkX2NvbSAoInJlY29yZCIsIGNsYXNzX29ic2N1cmUsIGNtZF9yZWNvcmRf c3RhcnQsCisJICAgXygiU2FtZSB3aXRoIGNvbW1hbmQgXCJ0YXJnZXQgcmVj b3JkXCIuIikpOworICBhZGRfY29tX2FsaWFzICgicmVjIiwgInJlY29yZCIs IGNsYXNzX29ic2N1cmUsIDEpOworCisgIC8qIFhYWDogSSB0cnkgdG8gdXNl IHNvbWUgc2ltcGxlIGNvbW1hbmRzIHN1Y2ggYXMgImRpc2Nvbm5lY3QiIGFu ZCAiZGV0YWNoIgorICAgICB0byBzdXBwb3J0IHRoaXMgZnVuY3Rpb25zLiBC dXQgdGhlc2UgY29tbWFuZHMgYWxsIGhhdmUgb3RoZXIgYWZmZWN0IHRvCisg ICAgIEdEQiBzdWNoIGFzIGNhbGwgZnVuY3Rpb24gIm5vX3NoYXJlZF9saWJy YXJpZXMiLiBTbyBJIGFkZCBzcGVjaWFsIGNvbW1hbmRzCisgICAgIHRvIEdE Qi4gKi8KKyAgYWRkX2NvbSAoImRlbHJlY29yZCIsIGNsYXNzX29ic2N1cmUs IGNtZF9yZWNvcmRfZGVsZXRlLAorCSAgIF8KKwkgICAoIldoZW4gcmVjb3Jk IHRhcmdldCBydW5uaW5nIGluIHJlcGxheSBtb2RlLCBkZWxldGUgdGhlIG5l eHQgcnVubmluZyBtZXNzYWdlcyBhbmQgYmVnaW4gdG8gcmVjb3JkIHRoZSBy dW5uaW5nIG1lc3NhZ2UgYXQgY3VycmVudCBhZGRyZXNzLiIpKTsKKyAgYWRk X2NvbV9hbGlhcyAoImRyIiwgImRlbHJlY29yZCIsIGNsYXNzX29ic2N1cmUs IDEpOworICBhZGRfY29tICgic3RvcHJlY29yZCIsIGNsYXNzX29ic2N1cmUs IGNtZF9yZWNvcmRfc3RvcCwKKwkgICBfKCJTdG9wIHRoZSByZWNvcmQgdGFy Z2V0LiIpKTsKKyAgYWRkX2NvbV9hbGlhcyAoInNyIiwgInN0b3ByZWNvcmQi LCBjbGFzc19vYnNjdXJlLCAxKTsKK30KZGlmZiAtLWdpdCBhL2dkYi9yZWNv cmQuaCBiL2dkYi9yZWNvcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yNTQ3ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Jl Y29yZC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qIFJlY29yZCB2MC4xLjUgZm9y IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKyAgIFdyaXR0ZW4gYnkgSHVpIFpo dSA8dGVhd2F0ZXJAZ21haWwuY29tPgorCisgICBDb3B5cmlnaHQgKEMpIDIw MDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworI2lmbmRlZiBfUkVDT1JEX0hfCisjZGVmaW5lIF9SRUNPUkRf SF8KKworI2RlZmluZSBSRUNPUkRfSVNfVVNFRAkJKGN1cnJlbnRfdGFyZ2V0 LmJlbmVhdGggPT0gJnJlY29yZF9vcHMpCisjZGVmaW5lIFJFQ09SRF9JU19S RVBMQVkJKHJlY29yZF9saXN0LT5uZXh0IHx8IHJlY29yZF9leGVjZGlyID09 IEVYRUNfUkVWRVJTRSkKKwordHlwZWRlZiBzdHJ1Y3QgcmVjb3JkX3JlZ19z Cit7CisgIGludCBudW07CisgIGdkYl9ieXRlICp2YWw7Cit9IHJlY29yZF9y ZWdfdDsKKwordHlwZWRlZiBzdHJ1Y3QgcmVjb3JkX21lbV9zCit7CisgIENP UkVfQUREUiBhZGRyOworICBpbnQgbGVuOworICBnZGJfYnl0ZSAqdmFsOwor fSByZWNvcmRfbWVtX3Q7CisKK2VudW0gcmVjb3JkX3R5cGUKK3sKKyAgcmVj b3JkX2VuZCA9IDAsCisgIHJlY29yZF9yZWcsCisgIHJlY29yZF9tZW0KK307 CisKKy8qIFRoaXMgaXMgdGhlIGNvcmUgc3RydWN0IG9mIHJlY29yZCBmdW5j dGlvbi4KKyAgIEFuIGVudGl0eSBvZiByZWNvcmRfdCBpcyBhIHJlY29yZCBv ZiB0aGUgdmFsdWUgY2hhbmdlIG9mIGEgcmVnaXN0ZXIKKyAgICgicmVjb3Jk X3JlZyIpIG9yIGEgcGFydCBvZiBtZW1vcnkgKCJyZWNvcmRfbWVtIikuIEFu ZCBFYWNoIGluc3RydWN0aW9uIG11c3QKKyAgIGhhcyBhIHJlY29yZF90ICgi cmVjb3JkX2VuZCIpIHRoYXQgcG9pbnQgb3V0IHRoaXMgaXMgdGhlIGxhc3Qg cmVjb3JkX3Qgb2YKKyAgIHRoaXMgaW5zdHJ1Y3Rpb24uCisgICBFYWNoIHJl Y29yZF90IGlzIGxpbmtlZCB0byAicmVjb3JkX2xpc3QiIGJ5ICJwcmV2IiBh bmQgIm5leHQiLiAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgcmVjb3JkX3MKK3sK KyAgc3RydWN0IHJlY29yZF9zICpwcmV2OworICBzdHJ1Y3QgcmVjb3JkX3Mg Km5leHQ7CisgIGVudW0gcmVjb3JkX3R5cGUgdHlwZTsKKyAgdW5pb24KKyAg eworICAgIC8qIHJlZyAqLworICAgIHJlY29yZF9yZWdfdCByZWc7CisgICAg LyogbWVtICovCisgICAgcmVjb3JkX21lbV90IG1lbTsKKyAgICAvKiBlbmQg Ki8KKyAgICBpbnQgbmVlZF9kYXNtOworICB9IHU7Cit9IHJlY29yZF90Owor CitleHRlcm4gaW50IHJlY29yZF9kZWJ1ZzsKK2V4dGVybiByZWNvcmRfdCAq cmVjb3JkX2xpc3Q7CitleHRlcm4gcmVjb3JkX3QgKnJlY29yZF9hcmNoX2xp c3RfaGVhZDsKK2V4dGVybiByZWNvcmRfdCAqcmVjb3JkX2FyY2hfbGlzdF90 YWlsOworZXh0ZXJuIHN0cnVjdCByZWdjYWNoZSAqcmVjb3JkX3JlZ2NhY2hl OworCitleHRlcm4gc3RydWN0IHRhcmdldF9vcHMgcmVjb3JkX29wczsKK2V4 dGVybiBpbnQgcmVjb3JkX3Jlc3VtZV9zdGVwOworZXh0ZXJuIGludCByZWNv cmRfcmVnY2FjaGVfcmF3X3dyaXRlX3JlZ251bTsKK2V4dGVybiBlbnVtIGV4 ZWNfZGlyZWN0aW9uX2tpbmQgcmVjb3JkX2V4ZWNkaXI7CisKK2V4dGVybiBp bnQgcmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChpbnQgbnVtKTsKK2V4dGVy biBpbnQgcmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFIgYWRk ciwgaW50IGxlbik7CitleHRlcm4gaW50IHJlY29yZF9hcmNoX2xpc3RfYWRk X2VuZCAoaW50IG5lZWRfZGFzbSk7CitleHRlcm4gdm9pZCByZWNvcmRfbWVz c2FnZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOworZXh0ZXJuIHZvaWQg cmVjb3JkX25vdF9yZWNvcmRfc2V0ICh2b2lkKTsKKyNlbmRpZiAvKiBfUkVD T1JEX0hfICovCmRpZmYgLS1naXQgYS9nZGIvcmVnY2FjaGUuYyBiL2dkYi9y ZWdjYWNoZS5jCmluZGV4IDE5OWI2MjYuLmJmNTRiYjcgMTAwNjQ0Ci0tLSBh L2dkYi9yZWdjYWNoZS5jCisrKyBiL2dkYi9yZWdjYWNoZS5jCkBAIC0yOSw2 ICsyOSw3IEBACiAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogI2luY2x1ZGUg ImdkYmNtZC5oIgkJLyogRm9yIG1haW50ZW5hbmNlcHJpbnRsaXN0LiAgKi8K ICNpbmNsdWRlICJvYnNlcnZlci5oIgorI2luY2x1ZGUgInJlY29yZC5oIgog CiAvKgogICogREFUQSBTVFJVQ1RVUkUKQEAgLTY1OCw2ICs2NTksNyBAQCBy ZWdjYWNoZV9yYXdfd3JpdGUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCByZWdudW0sCiAgIG9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRp ZCAoKTsKICAgaW5mZXJpb3JfcHRpZCA9IHJlZ2NhY2hlLT5wdGlkOwogCisg IHJlY29yZF9yZWdjYWNoZV9yYXdfd3JpdGVfcmVnbnVtID0gcmVnbnVtOwog ICB0YXJnZXRfcHJlcGFyZV90b19zdG9yZSAocmVnY2FjaGUpOwogICBtZW1j cHkgKHJlZ2lzdGVyX2J1ZmZlciAocmVnY2FjaGUsIHJlZ251bSksIGJ1ZiwK IAkgIHJlZ2NhY2hlLT5kZXNjci0+c2l6ZW9mX3JlZ2lzdGVyW3JlZ251bV0p OwpkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCmlu ZGV4IDI5Njc4MWIuLjQ3YjQ1ZjIgMTAwNjQ0Ci0tLSBhL2dkYi90YXJnZXQu aAorKysgYi9nZGIvdGFyZ2V0LmgKQEAgLTYyLDcgKzYyLDggQEAgZW51bSBz dHJhdGEKICAgICBmaWxlX3N0cmF0dW0sCQkvKiBFeGVjdXRhYmxlIGZpbGVz LCBldGMgKi8KICAgICBjb3JlX3N0cmF0dW0sCQkvKiBDb3JlIGR1bXAgZmls ZXMgKi8KICAgICBwcm9jZXNzX3N0cmF0dW0sCQkvKiBFeGVjdXRpbmcgcHJv Y2Vzc2VzICovCi0gICAgdGhyZWFkX3N0cmF0dW0JCS8qIEV4ZWN1dGluZyB0 aHJlYWRzICovCisgICAgdGhyZWFkX3N0cmF0dW0sCQkvKiBFeGVjdXRpbmcg dGhyZWFkcyAqLworICAgIHJlY29yZF9zdHJhdHVtCQkvKiBTdXBwb3J0IHJl Y29yZCBkZWJ1Z2dpbmcgKi8KICAgfTsKIAogZW51bSB0aHJlYWRfY29udHJv bF9jYXBhYmlsaXRpZXMK ------=_Part_8223_24798525.1215077391701--