Return-Path: Message-ID: <1193594501.4724ce8595cbb@imp.free.fr> Date: Sun, 28 Oct 2007 19:01:41 +0100 From: fabchevalier@free.fr To: BlueZ development , Marcel Holtmann Cc: BlueZ development Subject: Re: [Bluez-devel] [PATCH 1/3] move common exceptions to common/ directory References: <1193591164.4724c17c545eb@imp.free.fr> <1193595382.5096.15.camel@aeonflux> In-Reply-To: <1193595382.5096.15.camel@aeonflux> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ119359450147d90156c263a7ec91b5bfbcc195a479" List-ID: This message is in MIME format. ---MOQ119359450147d90156c263a7ec91b5bfbcc195a479 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Hi Marcel > I like to have org.bluez.Error only. There is no need to get an extra > hierarchy level. > That's basically how things are today... however if have no objection if you want to change that... Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested but i think those three patches may depend on it) Please find attached an updated patchset moving everything to org.bluez.Error... as usual, any more comments are welcomed :-) Cheers, Fabien ---MOQ119359450147d90156c263a7ec91b5bfbcc195a479 Content-Type: text/x-patch; name="exceptions-rework-audio.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exceptions-rework-audio.diff" ZGlmZiAteCBFbnRyaWVzIC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2F1ZGlvL2Rldmlj ZS5jIHV0aWxzMi9hdWRpby9kZXZpY2UuYwotLS0gdXRpbHMvYXVkaW8vZGV2aWNlLmMJMjAwNy0x MC0yNyAxNDo1Mjo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9hdWRpby9kZXZpY2UuYwky MDA3LTEwLTI3IDIxOjIxOjA4LjAwMDAwMDAwMCArMDAwMApAQCAtNDUsNyArNDUsNyBAQAogI2lu Y2x1ZGUgImxvZ2dpbmcuaCIKICNpbmNsdWRlICJ0ZXh0ZmlsZS5oIgogCi0jaW5jbHVkZSAiZXJy b3IuaCIKKyNpbmNsdWRlICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJpcGMuaCIKICNpbmNs dWRlICJkZXZpY2UuaCIKICNpbmNsdWRlICJhdmR0cC5oIgpkaWZmIC14IEVudHJpZXMgLXggTWFr ZWZpbGUuaW4gLXUgLXIgLU4gdXRpbHMvYXVkaW8vZXJyb3IuYyB1dGlsczIvYXVkaW8vZXJyb3Iu YwotLS0gdXRpbHMvYXVkaW8vZXJyb3IuYwkyMDA3LTEwLTI3IDE0OjQ2OjE5LjAwMDAwMDAwMCAr MDAwMAorKysgdXRpbHMyL2F1ZGlvL2Vycm9yLmMJMjAwNy0xMC0yOCAxNzo0ODozNC4wMDAwMDAw MDAgKzAwMDAKQEAgLTMwLDgwICszMCw3IEBACiAKICNpbmNsdWRlICJkYnVzLWhlbHBlci5oIgog Ci0jaW5jbHVkZSAiZXJyb3IuaCIKKyNpbmNsdWRlICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRl ICJsb2dnaW5nLmgiCiAKLSNkZWZpbmUgQVVESU9fRVJST1JfSU5URVJGQUNFICJvcmcuYmx1ZXou YXVkaW8uRXJyb3IiCi0KLS8qIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSBnbG9iYWwgZXJyb3Ig ZnVuY3Rpb25zIGV4aXN0ICovCi1zdGF0aWMgREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfcmVwbHko REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csCi0JCQkJCWNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IGNoYXIgKmRlc2NyKQotewotCURCdXNNZXNzYWdlICpkZXJyOwotCi0JaWYg KCFjb25uIHx8ICFtc2cpCi0JCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7Ci0K LQlkZXJyID0gZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIG5hbWUsIGRlc2NyKTsKLQlpZiAo IWRlcnIpIHsKLQkJZXJyb3IoIlVuYWJsZSB0byBhbGxvY2F0ZSBuZXcgZXJyb3IgcmV0dXJuIik7 Ci0JCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX05FRURfTUVNT1JZOwotCX0KLQotCXJldHVy biBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRfdW5yZWYoY29ubiwgZGVycik7Ci19Ci0KLURCdXNI YW5kbGVyUmVzdWx0IGVycl9pbnZhbGlkX2FyZ3MoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCi0JCQkJ CURCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKmRlc2NyKQotewotCXJldHVybiBlcnJvcl9y ZXBseShjb25uLCBtc2csCi0JCQkJQVVESU9fRVJST1JfSU5URVJGQUNFICIuSW52YWxpZEFyZ3Vt ZW50cyIsCi0JCQkJZGVzY3IgPyBkZXNjciA6ICJJbnZhbGlkIGFyZ3VtZW50cyBpbiBtZXRob2Qg Y2FsbCIpOwotfQotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoREJ1 c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGVycm9yX3Jl cGx5KGNvbm4sIG1zZywKLQkJCQlBVURJT19FUlJPUl9JTlRFUkZBQ0UgIi5BbHJlYWR5Q29ubmVj dGVkIiwKLQkJCQkJIkFscmVhZHkgY29ubmVjdGVkIHRvIGEgZGV2aWNlIik7Ci19Ci0KLURCdXNI YW5kbGVyUmVzdWx0IGVycl9ub3RfY29ubmVjdGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVz TWVzc2FnZSAqbXNnKQotewotCXJldHVybiBlcnJvcl9yZXBseShjb25uLCBtc2csCi0JCQkJQVVE SU9fRVJST1JfSU5URVJGQUNFICIuTm90Q29ubmVjdGVkIiwKLQkJCQkJIk5vdCBjb25uZWN0ZWQg dG8gYW55IGRldmljZSIpOwotfQotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJfbm90X3N1cHBvcnRl ZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKLXsKLQlyZXR1cm4gZXJy b3JfcmVwbHkoY29ubiwgbXNnLAotCQkJCUFVRElPX0VSUk9SX0lOVEVSRkFDRSAiLk5vdFN1cHBv cnRlZCIsCi0JCQkJIlRoZSBzZXJ2aWNlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHJlbW90ZSBk ZXZpY2UiKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2Nvbm5lY3RfZmFpbGVkKERCdXND b25uZWN0aW9uICpjb25uLAotCQkJCQlEQnVzTWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICplcnIp Ci17Ci0JcmV0dXJuIGVycm9yX3JlcGx5KGNvbm4sIG1zZywKLQkJCQlBVURJT19FUlJPUl9JTlRF UkZBQ0UgIi5Db25uZWN0RmFpbGVkIiwgZXJyKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1bHQgZXJy X2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQot ewotCXJldHVybiBlcnJvcl9yZXBseShjb25uLCBtc2csCi0JCQkJQVVESU9fRVJST1JfSU5URVJG QUNFICIuRG9lc05vdEV4aXN0IiwKLQkJCQkJCQkiRG9lcyBub3QgZXhpc3QiKTsKLX0KLQotREJ1 c0hhbmRsZXJSZXN1bHQgZXJyX25vdF9hdmFpbGFibGUoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERC dXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGVycm9yX3JlcGx5KGNvbm4sIG1zZywgQVVESU9f RVJST1JfSU5URVJGQUNFICIuTm90QXZhaWxhYmxlIiwKLQkJCQkiTm90IGF2YWlsYWJsZSIpOwot fQotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJfZmFpbGVkKERCdXNDb25uZWN0aW9uICpjb25uLAot CQkJCQlEQnVzTWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICpkc2MpCi17Ci0JcmV0dXJuIGVycm9y X3JlcGx5KGNvbm4sIG1zZywgQVVESU9fRVJST1JfSU5URVJGQUNFICIuRmFpbGVkIiwgZHNjKTsK LX0KKy8qIFRvIGJlIGZpbGxlZCBvbmNlIGF1ZGlvIHNlcnZpY2Ugc3BlY2lmaWMgZXJyb3JzIGFy ZSBkZWZpbmVkICovCmRpZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGls cy9hdWRpby9lcnJvci5oIHV0aWxzMi9hdWRpby9lcnJvci5oCi0tLSB1dGlscy9hdWRpby9lcnJv ci5oCTIwMDctMTAtMjMgMTc6MTc6NDcuMDAwMDAwMDAwICswMDAwCisrKyB1dGlsczIvYXVkaW8v ZXJyb3IuaAkyMDA3LTEwLTI3IDIxOjIxOjU0LjAwMDAwMDAwMCArMDAwMApAQCAtMjIsMTQgKzIy LDkgQEAKICAqCiAgKi8KIAotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2ludmFsaWRfYXJncyhEQnVz Q29ubmVjdGlvbiAqY29ubiwKLQkJCQkJREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hhciAqZGVz Y3IpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2FscmVhZHlfY29ubmVjdGVkKERCdXNDb25uZWN0 aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVzdWx0IGVycl9ub3Rf Y29ubmVjdGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqIG1zZyk7Ci1EQnVz SGFuZGxlclJlc3VsdCBlcnJfbm90X3N1cHBvcnRlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1 c01lc3NhZ2UgKm1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJfY29ubmVjdF9mYWlsZWQoREJ1 c0Nvbm5lY3Rpb24gKmNvbm4sCi0JCQkJCURCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKmVy cik7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJfZG9lc19ub3RfZXhpc3QoREJ1c0Nvbm5lY3Rpb24g KmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX25vdF9hdmFp bGFibGUoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwotREJ1c0hhbmRs ZXJSZXN1bHQgZXJyX2ZhaWxlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwKLQkJCQkJREJ1c01lc3Nh Z2UgKm1zZywgY29uc3QgY2hhciAqZHNjKTsKKy8qKgorICBUaGlzIGZpbGUgbXVzdCBvbmx5IGNv bnRhaW4gZXJyb3JzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBhdWRpbyBzZXJ2aWNlLgorICBB cyBzdWNoIHRoZXkgd2lsbCBiZSBmb3VuZCBpbiB0aGUgb3JnLmJsdWV6LmF1ZGlvLkVycm9yIG5h bWVzcGFjZS4KKyAgSWYgZXJyb3JzIGFyZSBub3Qgc3BlY2lmaWMgdG8gdGhlIGF1ZGlvIHNlcnZp Y2UsIHRoZXkgbXVzdCBiZSBkZWNsYXJlZAorICBpbiBjb21tb24tZXJyb3IuaCwgc28gdGhhdCBv dGhlciBzZXJ2aWNlcyBjYW4gdXNlIGl0CisqLwpkaWZmIC14IEVudHJpZXMgLXggTWFrZWZpbGUu aW4gLXUgLXIgLU4gdXRpbHMvYXVkaW8vaGVhZHNldC5jIHV0aWxzMi9hdWRpby9oZWFkc2V0LmMK LS0tIHV0aWxzL2F1ZGlvL2hlYWRzZXQuYwkyMDA3LTEwLTI3IDE0OjMyOjUzLjAwMDAwMDAwMCAr MDAwMAorKysgdXRpbHMyL2F1ZGlvL2hlYWRzZXQuYwkyMDA3LTEwLTI3IDIxOjQ1OjU3LjAwMDAw MDAwMCArMDAwMApAQCAtNTQsNyArNTQsNyBAQAogI2luY2x1ZGUgImxvZ2dpbmcuaCIKICNpbmNs dWRlICJkZXZpY2UuaCIKICNpbmNsdWRlICJtYW5hZ2VyLmgiCi0jaW5jbHVkZSAiZXJyb3IuaCIK KyNpbmNsdWRlICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJoZWFkc2V0LmgiCiAKICNkZWZp bmUgUklOR19JTlRFUlZBTCAzMDAwCkBAIC0zODQsNyArMzg0LDcgQEAKIHN0YXRpYyB2b2lkIHBl bmRpbmdfY29ubmVjdF9mYWlsZWQoc3RydWN0IHBlbmRpbmdfY29ubmVjdCAqYywgc3RydWN0IGRl dmljZSAqZGV2KQogewogCWlmIChjLT5tc2cpCi0JCWVycl9jb25uZWN0X2ZhaWxlZChkZXYtPmNv bm4sIGMtPm1zZywgc3RyZXJyb3IoYy0+ZXJyKSk7CisJCWVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1w dF9mYWlsZWQoZGV2LT5jb25uLCBjLT5tc2csIGMtPmVycik7CiAJaWYgKGMtPmNiKQogCQljLT5j YihOVUxMLCBjLT5jYl9kYXRhKTsKIAlwZW5kaW5nX2Nvbm5lY3RfZnJlZShjKTsKQEAgLTY4MCw3 ICs2ODAsNyBAQAogCiBmYWlsZWRfbm90X3N1cHBvcnRlZDoKIAlpZiAoYy0+bXNnKSB7Ci0JCWVy cl9ub3Rfc3VwcG9ydGVkKGRldmljZS0+Y29ubiwgYy0+bXNnKTsKKwkJZXJyb3Jfbm90X3N1cHBv cnRlZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWRidXNfbWVzc2FnZV91bnJlZihjLT5tc2cp OwogCQljLT5tc2cgPSBOVUxMOwogCX0KQEAgLTcyMSwxMCArNzIxLDEwIEBACiAJCWlmIChjLT5t c2cpIHsKIAkJCWlmIChkYnVzX2Vycm9yX2hhc19uYW1lKCZkZXJyLAogCQkJCQkJIm9yZy5ibHVl ei5FcnJvci5Db25uZWN0aW9uQXR0ZW1wdEZhaWxlZCIpKQotCQkJCWVycl9jb25uZWN0X2ZhaWxl ZChkZXZpY2UtPmNvbm4sIGMtPm1zZywKLQkJCQkJc3RyZXJyb3IoRUhPU1RET1dOKSk7CisJCQkJ ZXJyb3JfY29ubmVjdGlvbl9hdHRlbXB0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywKKwkJ CQkJRUhPU1RET1dOKTsKIAkJCWVsc2UKLQkJCQllcnJfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNv bm4sIGMtPm1zZyk7CisJCQkJZXJyb3Jfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNvbm4sIGMtPm1z Zyk7CiAJCX0KIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJZ290byBmYWlsZWQ7CkBAIC03 MzgsMjEgKzczOCwyMSBAQAogCQllcnJvcigiVW5hYmxlIHRvIGdldCBhcmdzIGZyb20gcmVwbHk6 ICVzIiwgZGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJaWYgKGMt Pm1zZykKLQkJCWVycl9ub3Rfc3VwcG9ydGVkKGRldmljZS0+Y29ubiwgYy0+bXNnKTsKKwkJCWVy cm9yX25vdF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOwogCQlnb3RvIGZhaWxlZDsK IAl9CiAKIAlpZiAoIWFycmF5KSB7CiAJCWVycm9yKCJnZXRfaGFuZGxlc19yZXBseTogVW5hYmxl IHRvIGdldCBoYW5kbGUgYXJyYXkgZnJvbSByZXBseSIpOwogCQlpZiAoYy0+bXNnKQotCQkJZXJy X25vdF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOworCQkJZXJyb3Jfbm90X3N1cHBv cnRlZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWdvdG8gZmFpbGVkOwogCX0KIAogCWlmIChh cnJheV9sZW4gPCAxKSB7CiAJCWRlYnVnKCJObyByZWNvcmQgaGFuZGxlcyBmb3VuZCIpOwogCQlp ZiAoYy0+bXNnKQotCQkJZXJyX25vdF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOwor CQkJZXJyb3Jfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWdvdG8gZmFp bGVkOwogCX0KIApAQCAtNzY1LDcgKzc2NSw3IEBACiAJaWYgKCFtc2cpIHsKIAkJZXJyb3IoIlVu YWJsZSB0byBhbGxvY2F0ZSBuZXcgbWV0aG9kIGNhbGwiKTsKIAkJaWYgKGMtPm1zZykKLQkJCWVy cl9jb25uZWN0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywgc3RyZXJyb3IoRU5PTUVNKSk7 CisJCQllcnJvcl9vdXRfb2ZfbWVtb3J5KGRldmljZS0+Y29ubiwgYy0+bXNnKTsKIAkJZ290byBm YWlsZWQ7CiAJfQogCkBAIC03ODAsNyArNzgwLDcgQEAKIAlpZiAoIWRidXNfY29ubmVjdGlvbl9z ZW5kX3dpdGhfcmVwbHkoZGV2aWNlLT5jb25uLCBtc2csICZwZW5kaW5nLCAtMSkpIHsKIAkJZXJy b3IoIlNlbmRpbmcgR2V0UmVtb3RlU2VydmljZVJlY29yZCBmYWlsZWQiKTsKIAkJaWYgKGMtPm1z ZykKLQkJCWVycl9jb25uZWN0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywgc3RyZXJyb3Io RUlPKSk7CisJCQllcnJvcl9jb25uZWN0aW9uX2F0dGVtcHRfZmFpbGVkKGRldmljZS0+Y29ubiwg Yy0+bXNnLCBFSU8pOwogCQlnb3RvIGZhaWxlZDsKIAl9CiAKQEAgLTk0NSw3ICs5NDUsNyBAQAog CQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9ORUVEX01FTU9SWTsKIAogCWlmIChocy0+c3Rh dGUgPCBIRUFEU0VUX1NUQVRFX1BMQVlfSU5fUFJPR1JFU1MpCi0JCXJldHVybiBlcnJfbm90X2Nv bm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90X2Nvbm5lY3RlZChjb25uLCBt c2cpOwogCiAJaGVhZHNldF9zZXRfc3RhdGUoZGV2aWNlLCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RF RCk7CiAJZGJ1c19jb25uZWN0aW9uX3NlbmRfYW5kX3VucmVmKGNvbm4sIHJlcGx5KTsKQEAgLTk4 OCw3ICs5ODgsNyBAQAogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9ORUVEX01FTU9SWTsK IAogCWlmIChocy0+c3RhdGUgPT0gSEVBRFNFVF9TVEFURV9ESVNDT05ORUNURUQpCi0JCXJldHVy biBlcnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90X2Nvbm5l Y3RlZChjb25uLCBtc2cpOwogCiAJaGVhZHNldF9zZXRfc3RhdGUoZGV2aWNlLCBIRUFEU0VUX1NU QVRFX0RJU0NPTk5FQ1RFRCk7CiAJYmEyc3RyKCZkZXZpY2UtPmRzdCwgaHNfYWRkcmVzcyk7CkBA IC0xMDMwLDcgKzEwMzAsNyBAQAogCWludCBlcnI7CiAKIAlpZiAoaHMtPnN0YXRlID4gSEVBRFNF VF9TVEFURV9ESVNDT05ORUNURUQpCi0JCXJldHVybiBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2FscmVhZHlfY29ubmVjdGVkKGNvbm4sIG1zZyk7CiAK IAljID0gZ190cnlfbmV3MChzdHJ1Y3QgcGVuZGluZ19jb25uZWN0LCAxKTsKIAlpZiAoIWMpIHsK QEAgLTEwNDgsNyArMTA0OCw3IEBACiAKIGVycm9yOgogCXBlbmRpbmdfY29ubmVjdF9mcmVlKGMp OwotCXJldHVybiBlcnJfY29ubmVjdF9mYWlsZWQoY29ubiwgbXNnLCBzdHJlcnJvcigtZXJyKSk7 CisJcmV0dXJuIGVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoY29ubiwgbXNnLCAtZXJy KTsKIH0KIAogc3RhdGljIGdib29sZWFuIHJpbmdfdGltZXJfY2IoZ3BvaW50ZXIgZGF0YSkKQEAg LTEwNjksNyArMTA2OSw3IEBACiAJREJ1c01lc3NhZ2UgKnJlcGx5ID0gTlVMTDsKIAogCWlmICho cy0+c3RhdGUgPCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCkKLQkJcmV0dXJuIGVycl9ub3RfY29u bmVjdGVkKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9ub3RfY29ubmVjdGVkKGNvbm4sIG1z Zyk7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlm ICghcmVwbHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCiAJaWYgKGhlYWRzZXRfc2VuZChkZXZp Y2UtPmhlYWRzZXQsICJcclxuUklOR1xyXG4iKSAhPSBHX0lPX0VSUk9SX05PTkUpIHsKIAkJZGJ1 c19tZXNzYWdlX3VucmVmKHJlcGx5KTsKLQkJcmV0dXJuIGVycl9mYWlsZWQoY29ubiwgbXNnLCAi RmFpbGVkIik7CisJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCAiRmFpbGVkIik7CiAJ fQogCiAJaHMtPnJpbmdfdGltZXIgPSBnX3RpbWVvdXRfYWRkKFJJTkdfSU5URVJWQUwsIHJpbmdf dGltZXJfY2IsIGRldmljZSk7CkBAIC0xMTAyLDcgKzExMDIsNyBAQAogCURCdXNNZXNzYWdlICpy ZXBseSA9IE5VTEw7CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9DT05ORUNURUQp Ci0JCXJldHVybiBlcnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jf bm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21l dGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtMTEzMSwxMCArMTEzMSwxMCBAQAog CWludCBlcnI7CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9DT05ORUNURUQpCi0J CXJldHVybiBlcnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90 X2Nvbm5lY3RlZChjb25uLCBtc2cpOwogCiAJaWYgKGhzLT5zdGF0ZSA+PSBIRUFEU0VUX1NUQVRF X1BMQVlfSU5fUFJPR1JFU1MpCi0JCXJldHVybiBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoY29ubiwg bXNnKTsKKwkJcmV0dXJuIGVycm9yX2FscmVhZHlfY29ubmVjdGVkKGNvbm4sIG1zZyk7CiAKIAlj ID0gZ190cnlfbmV3MChzdHJ1Y3QgcGVuZGluZ19jb25uZWN0LCAxKTsKIAlpZiAoIWMpCkBAIC0x MTQ1LDcgKzExNDUsNyBAQAogCWVyciA9IHNjb19jb25uZWN0KGRldmljZSwgYyk7CiAJaWYgKGVy ciA8IDApIHsKIAkJcGVuZGluZ19jb25uZWN0X2ZyZWUoYyk7Ci0JCXJldHVybiBlcnJfZmFpbGVk KGNvbm4sIG1zZywgc3RyZXJyb3IoLWVycikpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4s IG1zZywgc3RyZXJyb3IoLWVycikpOwogCX0KIAogCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxU X0hBTkRMRUQ7CkBAIC0xMTYxLDcgKzExNjEsNyBAQAogCWRidXNfdWludDE2X3QgZ2FpbjsKIAog CWlmIChocy0+c3RhdGUgPCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCB8fCBocy0+c3BfZ2FpbiA8 IDApCi0JCXJldHVybiBlcnJfbm90X2F2YWlsYWJsZShjb25uLCBtc2cpOworCQlyZXR1cm4gZXJy b3Jfbm90X2F2YWlsYWJsZShjb25uLCBtc2cpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3 X21ldGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAK IAlkYnVzX3VpbnQxNl90IGdhaW47CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9D T05ORUNURUQgfHwgaHMtPm1pY19nYWluIDwgMCkKLQkJcmV0dXJuIGVycl9ub3RfYXZhaWxhYmxl KGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9ub3RfYXZhaWxhYmxlKGNvbm4sIG1zZyk7CiAK IAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVw bHkpCkBAIC0xMjE1LDIwICsxMjE1LDIwIEBACiAJY2hhciBzdHJbMTNdOwogCiAJaWYgKGhzLT5z dGF0ZSA8IEhFQURTRVRfU1RBVEVfQ09OTkVDVEVEKQotCQlyZXR1cm4gZXJyX25vdF9jb25uZWN0 ZWQoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX25vdF9jb25uZWN0ZWQoY29ubiwgbXNnKTsK IAogCWRidXNfZXJyb3JfaW5pdCgmZGVycik7CiAJZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywg JmRlcnIsIERCVVNfVFlQRV9VSU5UMTYsICZnYWluLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKTsK IAogCWlmIChkYnVzX2Vycm9yX2lzX3NldCgmZGVycikpIHsKLQkJZXJyX2ludmFsaWRfYXJncyhj b25uLCBtc2csIGRlcnIubWVzc2FnZSk7CisJCWVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4s IG1zZywgZGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJcmV0dXJu IERCVVNfSEFORExFUl9SRVNVTFRfSEFORExFRDsKIAl9CiAKIAlpZiAoZ2FpbiA+IDE1KQotCQly ZXR1cm4gZXJyX2ludmFsaWRfYXJncyhjb25uLCBtc2csCisJCXJldHVybiBlcnJvcl9pbnZhbGlk X2FyZ3VtZW50cyhjb25uLCBtc2csCiAJCQkJCSJNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0 byAxNSIpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsK QEAgLTEyNDIsNyArMTI0Miw3IEBACiAKIAlpZiAoaGVhZHNldF9zZW5kKGRldmljZS0+aGVhZHNl dCwgc3RyKSAhPSBHX0lPX0VSUk9SX05PTkUpIHsKIAkJZGJ1c19tZXNzYWdlX3VucmVmKHJlcGx5 KTsKLQkJcmV0dXJuIGVycl9mYWlsZWQoY29ubiwgbXNnLCAiVW5hYmxlIHRvIHNlbmQgdG8gaGVh ZHNldCIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgIlVuYWJsZSB0byBzZW5k IHRvIGhlYWRzZXQiKTsKIAl9CiAKIGRvbmU6CmRpZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5p biAtdSAtciAtTiB1dGlscy9hdWRpby9tYW5hZ2VyLmMgdXRpbHMyL2F1ZGlvL21hbmFnZXIuYwot LS0gdXRpbHMvYXVkaW8vbWFuYWdlci5jCTIwMDctMTAtMjcgMTQ6NTE6NTguMDAwMDAwMDAwICsw MDAwCisrKyB1dGlsczIvYXVkaW8vbWFuYWdlci5jCTIwMDctMTAtMjcgMjE6NDM6NTcuMDAwMDAw MDAwICswMDAwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAidGV4dGZpbGUuaCIKICNpbmNs dWRlICJpcGMuaCIKICNpbmNsdWRlICJkZXZpY2UuaCIKLSNpbmNsdWRlICJlcnJvci5oIgorI2lu Y2x1ZGUgImNvbW1vbi1lcnJvci5oIgogI2luY2x1ZGUgImF2ZHRwLmgiCiAjaW5jbHVkZSAiYTJk cC5oIgogI2luY2x1ZGUgImhlYWRzZXQuaCIKQEAgLTMyNiw3ICszMjYsNyBAQAogCWlmIChkYnVz X2Vycm9yX2lzX3NldCgmZGVycikpIHsKIAkJZXJyb3IoIlVuYWJsZSB0byBnZXQgbWVzc2FnZSBh cmdzIik7CiAJCXN1Y2Nlc3MgPSBGQUxTRTsKLQkJZXJyX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRh LT5tc2csIGRlcnIubWVzc2FnZSk7CisJCWVycm9yX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5t c2csIGRlcnIubWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVycik7CiAJCWdvdG8gZG9u ZTsKIAl9CkBAIC0zMzUsMTQgKzMzNSwxNCBAQAogCWlmICghZGF0YS0+cmVjb3JkcykgewogCQlk ZWJ1ZygiTm8gYXVkaW8gYXVkaW8gcmVsYXRlZCBzZXJ2aWNlIHJlY29yZHMgd2VyZSBmb3VuZCIp OwogCQlzdWNjZXNzID0gRkFMU0U7Ci0JCWVycl9ub3Rfc3VwcG9ydGVkKGNvbm5lY3Rpb24sIGRh dGEtPm1zZyk7CisJCWVycm9yX25vdF9zdXBwb3J0ZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnKTsK IAkJZ290byBkb25lOwogCX0KIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0 dXJuKGRhdGEtPm1zZyk7CiAJaWYgKCFyZXBseSkgewogCQlzdWNjZXNzID0gRkFMU0U7Ci0JCWVy cl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCAiT3V0IG9mIG1lbW9yeSIpOworCQllcnJv cl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCAiT3V0IG9mIG1lbW9yeSIpOwogCQlnb3Rv IGRvbmU7CiAJfQogCkBAIC0zOTQsMTAgKzM5NCwxMCBAQAogCQllcnJvcigiR2V0UmVtb3RlU2Vy dmljZVJlY29yZCBmYWlsZWQ6ICVzIiwgZGVyci5tZXNzYWdlKTsKIAkJaWYgKGRidXNfZXJyb3Jf aGFzX25hbWUoJmRlcnIsCiAJCQkJCSJvcmcuYmx1ZXouRXJyb3IuQ29ubmVjdGlvbkF0dGVtcHRG YWlsZWQiKSkKLQkJCWVycl9jb25uZWN0X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCi0J CQkJc3RyZXJyb3IoRUhPU1RET1dOKSk7CisJCQllcnJvcl9jb25uZWN0aW9uX2F0dGVtcHRfZmFp bGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZywKKwkJCQlFSE9TVERPV04pOwogCQllbHNlCi0JCQll cnJfZmFpbGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZywgZGVyci5tZXNzYWdlKTsKKwkJCWVycm9y X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csIGRlcnIubWVzc2FnZSk7CiAJCWRidXNfZXJy b3JfZnJlZSgmZGVycik7CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTQwNSw3ICs0MDUsNyBAQAog CWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKHJlcGx5LCBOVUxMLAogCQkJCURCVVNfVFlQRV9B UlJBWSwgREJVU19UWVBFX0JZVEUsICZhcnJheSwgJmFycmF5X2xlbiwKIAkJCQlEQlVTX1RZUEVf SU5WQUxJRCkpIHsKLQkJZXJyX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCisJCWVycm9y X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCiAJCQkJIlVuYWJsZSB0byBnZXQgYXJncyBm cm9tIEdldFJlY29yZFJlcGx5Iik7CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTQ1MSw3ICs0NTEs NyBAQAogCQkJCQkJIkdldFJlbW90ZVNlcnZpY2VSZWNvcmQiKTsKIAlpZiAoIW1zZykgewogCQll cnJvcigiVW5hYmxlIHRvIGFsbG9jYXRlIG5ldyBtZXRob2QgY2FsbCIpOwotCQllcnJfY29ubmVj dF9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCBzdHJlcnJvcihFTk9NRU0pKTsKKwkJZXJy b3Jfb3V0X29mX21lbW9yeShjb25uZWN0aW9uLCBkYXRhLT5tc2cpOwogCQlmaW5pc2hfc2RwKGRh dGEsIEZBTFNFKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQ3MCw3ICs0NzAsNyBAQAogCiAJaWYgKCFk YnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3JlcGx5KGNvbm5lY3Rpb24sIG1zZywgJnBlbmRpbmcs IC0xKSkgewogCQllcnJvcigiU2VuZGluZyBHZXRSZW1vdGVTZXJ2aWNlUmVjb3JkIGZhaWxlZCIp OwotCQllcnJfY29ubmVjdF9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCBzdHJlcnJvcihF SU8pKTsKKwkJZXJyb3JfY29ubmVjdGlvbl9hdHRlbXB0X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRh LT5tc2csIEVJTyk7CiAJCWZpbmlzaF9zZHAoZGF0YSwgRkFMU0UpOwogCQlyZXR1cm47CiAJfQpA QCAtNTA4LDkgKzUwOCwxMCBAQAogCQllcnJvcigiR2V0UmVtb3RlU2VydmljZUhhbmRsZXMgZmFp bGVkOiAlcyIsIGRlcnIubWVzc2FnZSk7CiAJCWlmIChkYnVzX2Vycm9yX2hhc19uYW1lKCZkZXJy LAogCQkJCQkib3JnLmJsdWV6LkVycm9yLkNvbm5lY3Rpb25BdHRlbXB0RmFpbGVkIikpCi0JCQll cnJfY29ubmVjdF9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCBzdHJlcnJvcihFSE9TVERP V04pKTsKKwkJCWVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoY29ubmVjdGlvbiwgZGF0 YS0+bXNnLCAKKwkJCQkJCUVIT1NURE9XTik7CiAJCWVsc2UKLQkJCWVycl9mYWlsZWQoY29ubmVj dGlvbiwgZGF0YS0+bXNnLCBkZXJyLm1lc3NhZ2UpOworCQkJZXJyb3JfZmFpbGVkKGNvbm5lY3Rp b24sIGRhdGEtPm1zZywgZGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsK IAkJZ290byBmYWlsZWQ7CiAJfQpAQCAtNTE5LDcgKzUyMCw3IEBACiAJCQkJREJVU19UWVBFX0FS UkFZLCBEQlVTX1RZUEVfVUlOVDMyLAogCQkJCSZhcnJheSwgJmFycmF5X2xlbiwKIAkJCQlEQlVT X1RZUEVfSU5WQUxJRCkpIHsKLQkJZXJyX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCisJ CWVycm9yX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCiAJCQkJIlVuYWJsZSB0byBnZXQg YXJncyBmcm9tIHJlcGx5Iik7CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTU3MCw3ICs1NzEsNyBA QAogCQkJCQkJIm9yZy5ibHVlei5BZGFwdGVyIiwKIAkJCQkJCSJHZXRSZW1vdGVTZXJ2aWNlSGFu ZGxlcyIpOwogCWlmICghbXNnKSB7Ci0JCWVycl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNn LAorCQllcnJvcl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLAogCQkJCSJDb3VsZCBub3Qg Y3JlYXRlIGEgbmV3IGRidXMgbWVzc2FnZSIpOwogCQlnb3RvIGZhaWxlZDsKIAl9CkBAIC01ODIs NyArNTgzLDcgQEAKIAkJCQkJREJVU19UWVBFX0lOVkFMSUQpOwogCiAJaWYgKCFkYnVzX2Nvbm5l Y3Rpb25fc2VuZF93aXRoX3JlcGx5KGNvbm5lY3Rpb24sIG1zZywgJnBlbmRpbmcsIC0xKSkgewot CQllcnJfZmFpbGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZywKKwkJZXJyb3JfZmFpbGVkKGNvbm5l Y3Rpb24sIGRhdGEtPm1zZywKIAkJCQkiU2VuZGluZyBHZXRSZW1vdGVTZXJ2aWNlSGFuZGxlcyBm YWlsZWQiKTsKIAkJZ290byBmYWlsZWQ7CiAJfQpAQCAtNzM1LDcgKzczNiw3IEBACiAJCQkJREJV U19UWVBFX0lOVkFMSUQpOwogCiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZkZXJyKSkgewotCQll cnJfaW52YWxpZF9hcmdzKGNvbm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlkYnVz X2Vycm9yX2ZyZWUoJmRlcnIpOwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVE OwogCX0KQEAgLTgyNSwxOCArODI2LDE4IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3Mo bXNnLCAmZGVyciwKIAkJCQkJREJVU19UWVBFX1NUUklORywgJnBhdGgsCiAJCQkJCURCVVNfVFlQ RV9JTlZBTElEKSkgewotCQllcnJfaW52YWxpZF9hcmdzKGNvbm5lY3Rpb24sIG1zZywgZGVyci5t ZXNzYWdlKTsKKwkJZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubmVjdGlvbiwgbXNnLCBkZXJy Lm1lc3NhZ2UpOwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwogCX0KIAlp ZiAoZGJ1c19lcnJvcl9pc19zZXQoJmRlcnIpKSB7Ci0JCWVycl9pbnZhbGlkX2FyZ3MoY29ubmVj dGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOworCQllcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25u ZWN0aW9uLCBtc2csIGRlcnIubWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVycik7CiAJ CXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7CiAJfQogCiAJbWF0Y2ggPSBnX3Ns aXN0X2ZpbmRfY3VzdG9tKGRldmljZXMsIHBhdGgsIGRldmljZV9wYXRoX2NtcCk7CiAJaWYgKCFt YXRjaCkKLQkJcmV0dXJuIGVycl9kb2VzX25vdF9leGlzdChjb25uZWN0aW9uLCBtc2cpOworCQly ZXR1cm4gZXJyb3JfZGV2aWNlX2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7CiAKIAly ZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkp CkBAIC05MDYsNyArOTA3LDcgQEAKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVzcywKIAkJ CQlEQlVTX1RZUEVfSU5WQUxJRCk7CiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZkZXJyKSkgewot CQllcnJfaW52YWxpZF9hcmdzKGNvbm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJy b3JfaW52YWxpZF9hcmd1bWVudHMoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlk YnVzX2Vycm9yX2ZyZWUoJmRlcnIpOwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5E TEVEOwogCX0KQEAgLTkxNSw3ICs5MTYsNyBAQAogCWRldmljZSA9IG1hbmFnZXJfZmluZF9kZXZp Y2UoJmJkYSwgTlVMTCwgRkFMU0UpOwogCiAJaWYgKCFkZXZpY2UpCi0JCXJldHVybiBlcnJfZG9l c19ub3RfZXhpc3QoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2RldmljZV9kb2VzX25vdF9l eGlzdChjb25uLCBtc2cpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1 cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtOTM0LDEyICs5MzUsMTIgQEAKIAlEQnVzTWVzc2Fn ZSAqcmVwbHk7CiAKIAlpZiAoIWRlZmF1bHRfZGV2KQotCQlyZXR1cm4gZXJyX2RvZXNfbm90X2V4 aXN0KGNvbm5lY3Rpb24sIG1zZyk7CisJCXJldHVybiBlcnJvcl9kZXZpY2VfZG9lc19ub3RfZXhp c3QoY29ubmVjdGlvbiwgbXNnKTsKIAogCWlmIChkZWZhdWx0X2Rldi0+aGVhZHNldCA9PSBOVUxM ICYmCiAJCWRidXNfbWVzc2FnZV9pc19tZXRob2RfY2FsbChtc2csIEFVRElPX01BTkFHRVJfSU5U RVJGQUNFLAogCQkJCQkJCSJEZWZhdWx0SGVhZHNldCIpKQotCQlyZXR1cm4gZXJyX2RvZXNfbm90 X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7CisJCXJldHVybiBlcnJvcl9kZXZpY2VfZG9lc19ub3Rf ZXhpc3QoY29ubmVjdGlvbiwgbXNnKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRo b2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTk2NSwxOCArOTY2LDE4IEBACiAJaWYg KCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCAmZGVyciwKIAkJCQkJREJVU19UWVBFX1NUUklO RywgJnBhdGgsCiAJCQkJCURCVVNfVFlQRV9JTlZBTElEKSkgewotCQllcnJfaW52YWxpZF9hcmdz KGNvbm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJyb3JfaW52YWxpZF9hcmd1bWVu dHMoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlyZXR1cm4gREJVU19IQU5ETEVS X1JFU1VMVF9IQU5ETEVEOwogCX0KIAlpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmRlcnIpKSB7Ci0J CWVycl9pbnZhbGlkX2FyZ3MoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOworCQllcnJv cl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uZWN0aW9uLCBtc2csIGRlcnIubWVzc2FnZSk7CiAJCWRi dXNfZXJyb3JfZnJlZSgmZGVycik7CiAJCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRM RUQ7CiAJfQogCiAJbWF0Y2ggPSBnX3NsaXN0X2ZpbmRfY3VzdG9tKGRldmljZXMsIHBhdGgsIGRl dmljZV9wYXRoX2NtcCk7CiAJaWYgKCFtYXRjaCkKLQkJcmV0dXJuIGVycl9kb2VzX25vdF9leGlz dChjb25uZWN0aW9uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfZGV2aWNlX2RvZXNfbm90X2V4aXN0 KGNvbm5lY3Rpb24sIG1zZyk7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3Jl dHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC05OTgsNyArOTk5LDcgQEAKIAkJCQkJCURCVVNf VFlQRV9TVFJJTkcsICZkZXZpY2UtPnBhdGgsCiAJCQkJCQlEQlVTX1RZUEVfSU5WQUxJRCk7CiAJ ZWxzZQotCQlyZXR1cm4gZXJyX2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7CisJCXJl dHVybiBlcnJvcl9kZXZpY2VfZG9lc19ub3RfZXhpc3QoY29ubmVjdGlvbiwgbXNnKTsKIAogCWRl ZmF1bHRfZGV2ID0gZGV2aWNlOwogCWRldmljZV9zdG9yZShkZXZpY2UsIFRSVUUpOwpkaWZmIC14 IEVudHJpZXMgLXggTWFrZWZpbGUuaW4gLXUgLXIgLU4gdXRpbHMvYXVkaW8vc2luay5jIHV0aWxz Mi9hdWRpby9zaW5rLmMKLS0tIHV0aWxzL2F1ZGlvL3NpbmsuYwkyMDA3LTEwLTI3IDE0OjQ1OjM4 LjAwMDAwMDAwMCArMDAwMAorKysgdXRpbHMyL2F1ZGlvL3NpbmsuYwkyMDA3LTEwLTI3IDIxOjQ4 OjM4LjAwMDAwMDAwMCArMDAwMApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgImF2ZHRwLmgi CiAjaW5jbHVkZSAiZGV2aWNlLmgiCiAjaW5jbHVkZSAiYTJkcC5oIgotI2luY2x1ZGUgImVycm9y LmgiCisjaW5jbHVkZSAiY29tbW9uLWVycm9yLmgiCiAjaW5jbHVkZSAic2luay5oIgogCiAjZGVm aW5lIFNUUkVBTV9TRVRVUF9SRVRSWV9USU1FUiAyMDAwCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAkJ ZGJ1c19jb25uZWN0aW9uX3NlbmRfYW5kX3VucmVmKHBlbmRpbmctPmNvbm4sIHJlcGx5KTsKIAl9 IGVsc2UgewogCQlkZWJ1ZygiU3RyZWFtIHNldHVwIGZhaWxlZCwgYWZ0ZXIgWENBU0UgY29ubmVj dDpjb25uZWN0Iik7Ci0JCWVycl9mYWlsZWQocGVuZGluZy0+Y29ubiwgcGVuZGluZy0+bXNnLCAi U3RyZWFtIHNldHVwIGZhaWxlZCIpOworCQllcnJvcl9mYWlsZWQocGVuZGluZy0+Y29ubiwgcGVu ZGluZy0+bXNnLCAiU3RyZWFtIHNldHVwIGZhaWxlZCIpOwogCX0KIAogCXNpbmstPmNvbm5lY3Qg PSBOVUxMOwpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCQkJCXN0cmVhbV9zZXR1cF9yZXRyeSwgc2lu ayk7CiAJCX0gZWxzZSB7CiAJCQlzaW5rLT5jb25uZWN0ID0gTlVMTDsKLQkJCWVycl9mYWlsZWQo cGVuZGluZy0+Y29ubiwgcGVuZGluZy0+bXNnLCAiU3RyZWFtIHNldHVwIGZhaWxlZCIpOworCQkJ ZXJyb3JfZmFpbGVkKHBlbmRpbmctPmNvbm4sIHBlbmRpbmctPm1zZywgIlN0cmVhbSBzZXR1cCBm YWlsZWQiKTsKIAkJCXBlbmRpbmdfcmVxdWVzdF9mcmVlKHBlbmRpbmcpOwogCQkJZGVidWcoIlN0 cmVhbSBzZXR1cCBmYWlsZWQgOiAlcyIsIGF2ZHRwX3N0cmVycm9yKGVycikpOwogCQl9CkBAIC0y MDEsMTQgKzIwMSwxNCBAQAogCQlzaW5rLT5zZXNzaW9uID0gYXZkdHBfZ2V0KCZkZXYtPnNyYywg JmRldi0+ZHN0KTsKIAogCWlmICghc2luay0+c2Vzc2lvbikKLQkJcmV0dXJuIGVycl9jb25uZWN0 X2ZhaWxlZChjb25uLCBtc2csCisJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLAogCQkJ CQkJIlVuYWJsZSB0byBnZXQgYSBzZXNzaW9uIik7CiAKIAlpZiAoc2luay0+Y29ubmVjdCB8fCBz aW5rLT5kaXNjb25uZWN0KQotCQlyZXR1cm4gZXJyX2Nvbm5lY3RfZmFpbGVkKGNvbm4sIG1zZywg IkNvbm5lY3QgaW4gcHJvZ3Jlc3MiKTsKKwkJcmV0dXJuIGVycm9yX2luX3Byb2dyZXNzKGNvbm4s IG1zZywgIkRldmljZSBjb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiKTsKIAogCWlmIChz aW5rLT5zdGF0ZSA+PSBBVkRUUF9TVEFURV9PUEVOKQotCQlyZXR1cm4gZXJyX2FscmVhZHlfY29u bmVjdGVkKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9hbHJlYWR5X2Nvbm5lY3RlZChjb25u LCBtc2cpOwogCiAJcGVuZGluZyA9IGdfbmV3MChzdHJ1Y3QgcGVuZGluZ19yZXF1ZXN0LCAxKTsK IAlwZW5kaW5nLT5jb25uID0gZGJ1c19jb25uZWN0aW9uX3JlZihjb25uKTsKQEAgLTIyMyw4ICsy MjMsNyBAQAogCQlzaW5rLT5jb25uZWN0ID0gTlVMTDsKIAkJYXZkdHBfdW5yZWYoc2luay0+c2Vz c2lvbik7CiAJCXNpbmstPnNlc3Npb24gPSBOVUxMOwotCQlyZXR1cm4gZXJyX2Nvbm5lY3RfZmFp bGVkKGNvbm4sIG1zZywKLQkJCQkJCSJGYWlsZWQgdG8gcmVxdWVzdCBhIHN0cmVhbSIpOworCQly ZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgIkZhaWxlZCB0byByZXF1ZXN0IGEgc3RyZWFt Iik7CiAJfQogCiAJZGVidWcoInN0cmVhbSBjcmVhdGlvbiBpbiBwcm9ncmVzcyIpOwpAQCAtMjQz LDEwICsyNDIsMTAgQEAKIAlpbnQgZXJyOwogCiAJaWYgKCFzaW5rLT5zZXNzaW9uKQotCQlyZXR1 cm4gZXJyX25vdF9jb25uZWN0ZWQoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX25vdF9jb25u ZWN0ZWQoY29ubiwgbXNnKTsKIAogCWlmIChzaW5rLT5jb25uZWN0IHx8IHNpbmstPmRpc2Nvbm5l Y3QpCi0JCXJldHVybiBlcnJfZmFpbGVkKGNvbm4sIG1zZywgc3RyZXJyb3IoRUJVU1kpKTsKKwkJ cmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIHN0cmVycm9yKEVCVVNZKSk7CiAKIAlpZiAo c2luay0+c3RhdGUgPCBBVkRUUF9TVEFURV9PUEVOKSB7CiAJCURCdXNNZXNzYWdlICpyZXBseSA9 IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwpAQCAtMjU5LDcgKzI1OCw3IEBA CiAKIAllcnIgPSBhdmR0cF9jbG9zZShzaW5rLT5zZXNzaW9uLCBzaW5rLT5zdHJlYW0pOwogCWlm IChlcnIgPCAwKQotCQlyZXR1cm4gZXJyX2ZhaWxlZChjb25uLCBtc2csIHN0cmVycm9yKC1lcnIp KTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIHN0cmVycm9yKC1lcnIpKTsKIAog CXBlbmRpbmcgPSBnX25ldzAoc3RydWN0IHBlbmRpbmdfcmVxdWVzdCwgMSk7CiAJcGVuZGluZy0+ Y29ubiA9IGRidXNfY29ubmVjdGlvbl9yZWYoY29ubik7Cg== ---MOQ119359450147d90156c263a7ec91b5bfbcc195a479 Content-Type: text/x-patch; name="exceptions-rework-common.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exceptions-rework-common.diff" ZGlmZiAteCBFbnRyaWVzIC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2NvbW1vbi9jb21t b24tZXJyb3IuYyB1dGlsczIvY29tbW9uL2NvbW1vbi1lcnJvci5jCi0tLSB1dGlscy9jb21tb24v Y29tbW9uLWVycm9yLmMJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIHV0 aWxzMi9jb21tb24vY29tbW9uLWVycm9yLmMJMjAwNy0xMC0yOCAxNzo1MTo1My4wMDAwMDAwMDAg KzAwMDAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKgorICogIEJsdWVaIC0gQmx1ZXRvb3RoIHBy b3RvY29sIHN0YWNrIGZvciBMaW51eAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNyAg Tm9raWEgQ29ycG9yYXRpb24KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNyAgTWFyY2VsIEhv bHRtYW5uIDxtYXJjZWxAaG9sdG1hbm4ub3JnPgorICoKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpZmRlZiBIQVZF X0NPTkZJR19ICisjaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmlu Zy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlICJkYnVzLWhlbHBlci5oIgorI2lu Y2x1ZGUgImNvbW1vbi1lcnJvci5oIgorCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9kZXZpY2Vf dW5yZWFjaGFibGUoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCit7CisJ cmV0dXJuIGVycm9yX2NvbW1vbl9yZXBseShjb25uLCBtc2csIEVSUk9SX0lOVEVSRkFDRSAiLkRl dmljZVVucmVhY2hhYmxlIiwKKwkJCQkJCQkiRGV2aWNlIFVucmVhY2hhYmxlIik7Cit9CisKK0RC dXNIYW5kbGVyUmVzdWx0IGVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoREJ1c0Nvbm5l Y3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGludCBlcnIpCit7CisJcmV0dXJuIGVycm9y X2NvbW1vbl9yZXBseShjb25uLCBtc2csCisJCQkJRVJST1JfSU5URVJGQUNFICIuQ29ubmVjdGlv bkF0dGVtcHRGYWlsZWQiLAorCQkJCWVyciA/IHN0cmVycm9yKGVycikgOiAiQ29ubmVjdGlvbiBh dHRlbXB0IGZhaWxlZCIpOworfQorCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9hbHJlYWR5X2Nv bm5lY3RlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKK3sKKwlyZXR1 cm4gZXJyb3JfY29tbW9uX3JlcGx5KGNvbm4sIG1zZywKKwkJCQlFUlJPUl9JTlRFUkZBQ0UgIi5B bHJlYWR5Q29ubmVjdGVkIiwKKwkJCQkiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSBkZXZpY2UiKTsK K30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfaW5fcHJvZ3Jlc3MoREJ1c0Nvbm5lY3Rpb24g KmNvbm4sIERCdXNNZXNzYWdlICptc2csIAorCQkJCQkJY29uc3QgY2hhciAqc3RyKQoreworCXJl dHVybiBlcnJvcl9jb21tb25fcmVwbHkoY29ubiwgbXNnLCBFUlJPUl9JTlRFUkZBQ0UgIi5JblBy b2dyZXNzIiwgc3RyKTsKK30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csCisJCQkJCQljb25z dCBjaGFyICpkZXNjcikKK3sKKwlyZXR1cm4gZXJyb3JfY29tbW9uX3JlcGx5KGNvbm4sIG1zZywK KwkJCQlFUlJPUl9JTlRFUkZBQ0UgIi5JbnZhbGlkQXJndW1lbnRzIiwKKwkJCQlkZXNjciA/IGRl c2NyIDogIkludmFsaWQgYXJndW1lbnRzIGluIG1ldGhvZCBjYWxsIik7Cit9CisKK0RCdXNIYW5k bGVyUmVzdWx0IGVycm9yX291dF9vZl9tZW1vcnkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNN ZXNzYWdlICptc2cpCit7CisJcmV0dXJuIGVycm9yX2NvbW1vbl9yZXBseShjb25uLCBtc2csIEVS Uk9SX0lOVEVSRkFDRSAiLk91dE9mTWVtb3J5IiwKKwkJCQkJCQkiT3V0IG9mIG1lbW9yeSIpOwor fQorCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9ub3RfYXZhaWxhYmxlKERCdXNDb25uZWN0aW9u ICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQoreworCXJldHVybiBlcnJvcl9jb21tb25fcmVwbHko Y29ubiwgbXNnLCBFUlJPUl9JTlRFUkZBQ0UgIi5Ob3RBdmFpbGFibGUiLAorCQkJCQkJCSJOb3Qg YXZhaWxhYmxlIik7Cit9CisKK0RCdXNIYW5kbGVyUmVzdWx0IGVycm9yX25vdF9zdXBwb3J0ZWQo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCit7CisJcmV0dXJuIGVycm9y X2NvbW1vbl9yZXBseShjb25uLCBtc2csIEVSUk9SX0lOVEVSRkFDRSAiLk5vdFN1cHBvcnRlZCIs CisJCQkJCQkJIk5vdCBzdXBwb3J0ZWQiKTsKK30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jf bm90X2Nvbm5lY3RlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKK3sK KwlyZXR1cm4gZXJyb3JfY29tbW9uX3JlcGx5KGNvbm4sIG1zZywgRVJST1JfSU5URVJGQUNFICIu Tm90Q29ubmVjdGVkIiwKKwkJCQkJCQkiTm90IGNvbm5lY3RlZCIpOworfQorCitEQnVzSGFuZGxl clJlc3VsdCBlcnJvcl9hbHJlYWR5X2V4aXN0cyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01l c3NhZ2UgKm1zZywgY29uc3QgY2hhciAqc3RyKQoreworCXJldHVybiBlcnJvcl9jb21tb25fcmVw bHkoY29ubiwgbXNnLCBFUlJPUl9JTlRFUkZBQ0UgIi5BbHJlYWR5RXhpc3RzIiwgc3RyKTsKK30K KworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfZG9lc19ub3RfZXhpc3QoREJ1c0Nvbm5lY3Rpb24g KmNvbm4sIERCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKnN0cikKK3sKKwlyZXR1cm4gZXJy b3JfY29tbW9uX3JlcGx5KGNvbm4sIG1zZywgRVJST1JfSU5URVJGQUNFICIuRG9lc05vdEV4aXN0 Iiwgc3RyKTsKK30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfZGV2aWNlX2RvZXNfbm90X2V4 aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQoreworCXJldHVybiBl cnJvcl9kb2VzX25vdF9leGlzdChjb25uLCBtc2csICJEZXZpY2UgZG9lcyBub3QgZXhpc3QiKTsK K30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfY2FuY2VsZWQoREJ1c0Nvbm5lY3Rpb24gKmNv bm4sIERCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKnN0cikKK3sKKwlyZXR1cm4gZXJyb3Jf Y29tbW9uX3JlcGx5KGNvbm4sIG1zZywgRVJST1JfSU5URVJGQUNFICIuQ2FuY2VsZWQiLCBzdHIp OworfQorCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9mYWlsZWQoREJ1c0Nvbm5lY3Rpb24gKmNv bm4sIERCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKiBkZXNjKQoreworCXJldHVybiBlcnJv cl9jb21tb25fcmVwbHkoY29ubiwgbXNnLCBFUlJPUl9JTlRFUkZBQ0UgIi5GYWlsZWQiLCBkZXNj KTsKK30KKworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfZmFpbGVkX2Vycm5vKERCdXNDb25uZWN0 aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnLCBpbnQgZXJyKQoreworCWNvbnN0IGNoYXIgKmRl c2MgPSBzdHJlcnJvcihlcnIpOworCisJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGRl c2MpOworfQorCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9jb21tb25fcmVwbHkoREJ1c0Nvbm5l Y3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csCisJCQkJCWNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmRlc2NyKQoreworCURCdXNNZXNzYWdlICpkZXJyOworCisJaWYgKCFjb25uIHx8 ICFtc2cpCisJCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7CisKKwlkZXJyID0g ZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIG5hbWUsIGRlc2NyKTsKKwlpZiAoIWRlcnIpCisJ CXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX05FRURfTUVNT1JZOworCisJcmV0dXJuIGRidXNf Y29ubmVjdGlvbl9zZW5kX2FuZF91bnJlZihjb25uLCBkZXJyKTsKK30KZGlmZiAteCBFbnRyaWVz IC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2NvbW1vbi9jb21tb24tZXJyb3IuaCB1dGls czIvY29tbW9uL2NvbW1vbi1lcnJvci5oCi0tLSB1dGlscy9jb21tb24vY29tbW9uLWVycm9yLmgJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9jb21tb24vY29t bW9uLWVycm9yLmgJMjAwNy0xMC0yOCAxNzo0ODowMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTAsMCAr MSwxNDggQEAKKy8qCisgKgorICogIEJsdWVaIC0gQmx1ZXRvb3RoIHByb3RvY29sIHN0YWNrIGZv ciBMaW51eAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNyAgTm9raWEgQ29ycG9yYXRp b24KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNyAgTWFyY2VsIEhvbHRtYW5uIDxtYXJjZWxA aG9sdG1hbm4ub3JnPgorICoKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNsdWRlIDxkYnVzL2RidXMuaD4KKwor I2RlZmluZSBFUlJPUl9JTlRFUkZBQ0UgIm9yZy5ibHVlei5jb3JlLkVycm9yIgorCisvKioKKyAg b3JnLmJsdWV6LkVycm9yLkRldmljZVVucmVhY2hhYmxlOgorCisgIFRoZSByZW1vdGUgZGV2aWNl IGlzIGVpdGhlciBwb3dlcmVkIGRvd24gb3Igb3V0IG9mIHJlYWNoLgorKi8KK0RCdXNIYW5kbGVy UmVzdWx0IGVycm9yX2RldmljZV91bnJlYWNoYWJsZShEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1 c01lc3NhZ2UgKm1zZyk7CisKKy8qKiAKKyAgb3JnLmJsdWV6LkVycm9yLkNvbm5lY3Rpb25BdHRl bXB0RmFpbGVkOiAKKworICBBbiB1bmV4cGVjdGVkIGVycm9yIChvdGhlciB0aGFuIERldmljZVVu cmVhY2hhYmxlKSBlcnJvciBoYXMgb2NjdXJlZCB3aGlsZQorICBhdHRlbXB0aW5nIGEgY29ubmVj dGlvbiB0byBhIGRldmljZQorKi8KK0RCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2Nvbm5lY3Rpb25f YXR0ZW1wdF9mYWlsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGlu dCBlcnIpOworCisvKiogCisgIG9yZy5ibHVlei5FcnJvci5BbHJlYWR5Q29ubmVjdGVkOiAKKwor ICBBIGNvbm5lY3Rpb24gcmVxdWVzdCBoYXMgYmVlbiByZWNlaXZlZCBvbiBhbiBhbHJlYWR5IGNv bm5lY3RlZCBkZXZpY2UuCisqLworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfYWxyZWFkeV9jb25u ZWN0ZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOworCisvKiogCisg IG9yZy5ibHVlei5FcnJvci5Ob3RDb25uZWN0ZWQ6IAorCisgIFRoZSByZW1vdGUgZGV2aWNlIGlz IG5vdCBjb25uZWN0ZWQsIHdoaWxlIHRoZSBtZXRob2QgY2FsbAorICB3b3VsZCBleHBlY3QgaXQg dG8gYmUsIG9yIGlzIG5vdCBpbiB0aGUgZXhwZWN0ZWQgc3RhdGUgdG8KKyAgcGVyZm9ybSB0aGUg YWN0aW9uCisqLworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm90X2Nvbm5lY3RlZChEQnVzQ29u bmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CisKKy8qKgorICBvcmcuYmx1ZXouRXJy b3IuSW5Qcm9ncmVzczogCisKKyAgVGhlIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4K KyovCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9pbl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlvbiAq Y29ubiwgREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hhciAqc3RyKTsKKworLyoqCisgIG9yZy5i bHVlei5FcnJvci5JbnZhbGlkQXJndW1lbnRzOiAKKworICBUaGUgREJVUyByZXF1ZXN0IGRvZXMg bm90IGNvbnRhaW4gdGhlIHJpZ2h0IG51bWJlciBvZgorICBhcmd1bWVudHMgd2l0aCB0aGUgcmln aHQgdHlwZSwgb3IgdGhlIGFyZ3VtZW50cyBhcmUgdGhlcmUgYnV0CisgIHRoZWlyIHZhbHVlIGlz IHdyb25nLgorKi8KK0RCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKERC dXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICpzdHIpOwor CisvKioKKyAgb3JnLmJsdWV6LkVycm9yLk91dE9mTWVtb3J5OiAKKworICBOb3QgbXVjaCB0byBh ZGQKKyovCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9vdXRfb2ZfbWVtb3J5KERCdXNDb25uZWN0 aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKKworLyoqIAorICBvcmcuYmx1ZXouRXJyb3Iu Tm90QXZhaWxhYmxlOiAKKworICBUaGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uIGlzIG5vdCB0aGVy ZS4KKyAgRXhhbXBsZXMgb2YgdXNlOiBBZGFwdGVyIG9iamVjdCB3aGVuIHJlbW90ZSBpbmZvIGlz IG5vdCBhdmFpbGFibGUsIG9yIERhdGFiYXNlCisgIG9iamVjdCByZWNvcmQgaXMgbm90IGZvdW5k CisqLworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm90X2F2YWlsYWJsZShEQnVzQ29ubmVjdGlv biAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CisKKy8qKiAKKyAgb3JnLmJsdWV6LkVycm9yLk5v dFN1cHBvcnRlZDogCisKKyAgVGhlIHJlbW90ZSBkZXZpY2UgZG9lcyBub3Qgc3Vwb3B0IHRoZSBl eHBlY3RlZCBmZWF0dXJlLgorICBFeGFtcGxlcyBvZiB1c2U6IHRyeWluZyB0byBjb25uZWN0IHRv IGF1ZGlvIGRldmljZSB3aGlsZSBhdWRpbyBpcyBub3QKKyAgZGVjbGFyZWQgaW4gZGV2aWNlIHNk cCByZWNvcmQuCisqLworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm90X3N1cHBvcnRlZChEQnVz Q29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CisKKy8qKiAKKyAgb3JnLmJsdWV6 LkVycm9yLkFscmVhZHlFeGlzdHM6IAorCisgIE9uZSBvZiB0aGUgcmVxdWVzdGVkIGVsZW1lbnRz IGFscmVhZHkgZXhpc3RzCisgIEV4YW1wbGVzIG9mIHVzZTogQm9uZGluZywgcmVjb3JkLCBwYXNz a2V5IGFnZW50LCBhdXRoIGFnZW50Li4uIGFscmVhZHkgZXhpc3RzCisqLworREJ1c0hhbmRsZXJS ZXN1bHQgZXJyb3JfYWxyZWFkeV9leGlzdHMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNz YWdlICptc2csIGNvbnN0IGNoYXIgKnN0cik7CisKKy8qKiAKKyAgb3JnLmJsdWV6LkVycm9yLkRv ZXNOb3RFeGlzdDogCisKKyAgT25lIG9mIHRoZSByZXF1ZXN0ZWQgZWxlbWVudHMgZG9lcyBub3Qg ZXhpc3QKKyAgRXhhbXBsZXMgb2YgdXNlOiBCb25kaW5nLCByZWNvcmQsIHBhc3NrZXkgYWdlbnQs IGF1dGggYWdlbnQsIGJsdWV0b290aCBkZXZpY2UgLi4uIGRvZXMKKyAgbm90IGV4aXN0LgorKi8K K0RCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpj b25uLCBEQnVzTWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICpzdHIpOworCisvKiogCisgIG9yZy5i bHVlei5FcnJvci5Eb2VzTm90RXhpc3Q6IAorCisgIFNhbWUgYXMgZXJyb3JfZG9lc19ub3RfZXhp c3QsIGJ1dCB3aXRoIGRldmljZSBlcnJvciBtZXNzYWdlCisqLworREJ1c0hhbmRsZXJSZXN1bHQg ZXJyb3JfZGV2aWNlX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVz c2FnZSAqbXNnKTsKKworLyoqIAorICBvcmcuYmx1ZXouRXJyb3IuQ2FuY2VsZWQ6IAorKi8KK0RC dXNIYW5kbGVyUmVzdWx0IGVycm9yX2NhbmNlbGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVz TWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICpzdHIpOworCisvKioKKyAgb3JnLmJsdWV6LkVycm9y LkZhaWxlZDoKKworICBUaGlzIGlzIGEgdGhlIG1vc3QgZ2VuZXJpYyBlcnJvci4KKyAgZGVzYyBm aWxlZCBpcyBNQU5EQVRPUlkKKyovCitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9mYWlsZWQoREJ1 c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIgKmRlc2MpOwor CisvKioKKyAgb3JnLmJsdWV6LkVycm9yLkZhaWxlZDoKKworICBUaGlzIGlzIGEgdGhlIG1vc3Qg Z2VuZXJpYyBlcnJvciwgaW5zdGFudGlhdGVkIGZvcm0gYSBVTklYIGVycm5vIG51bWJlci4KKyov CitEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9mYWlsZWRfZXJybm8oREJ1c0Nvbm5lY3Rpb24gKmNv bm4sIERCdXNNZXNzYWdlICptc2csIGludCBlcnIpOworCisKKy8qIEhlbHBlciBmdW5jdGlvbiAq LworREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfY29tbW9uX3JlcGx5KERCdXNDb25uZWN0aW9uICpj b25uLCBEQnVzTWVzc2FnZSAqbXNnLAorCQkJCQljb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy ICpkZXNjcik7CmRpZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGlscy9j b21tb24vTWFrZWZpbGUuYW0gdXRpbHMyL2NvbW1vbi9NYWtlZmlsZS5hbQotLS0gdXRpbHMvY29t bW9uL01ha2VmaWxlLmFtCTIwMDctMDMtMjAgMTQ6NDg6MDEuMDAwMDAwMDAwICswMDAwCisrKyB1 dGlsczIvY29tbW9uL01ha2VmaWxlLmFtCTIwMDctMTAtMjcgMTU6NTM6MjMuMDAwMDAwMDAwICsw MDAwCkBAIC0yNiw2ICsyNiw3IEBACiBsaWJoZWxwZXJfYV9TT1VSQ0VTID0gb3VpLmggb3VpLmMg ZGJ1cy5oIGRidXMuYyBcCiAJdGV4dGZpbGUuaCB0ZXh0ZmlsZS5jIGxvZ2dpbmcuaCBsb2dnaW5n LmMgXAogCWRidXMtaGVscGVyLmggZGJ1cy1oZWxwZXIuYyBcCisJY29tbW9uLWVycm9yLmggY29t bW9uLWVycm9yLmMgXAogCXNkcC14bWwuaCBzZHAteG1sLmMgJChzZHBfc291cmNlcykgXAogCWhh bC5oICQoaGFsX3NvdXJjZXMpIG5vdGlmeS5oICQobm90aWZ5X3NvdXJjZXMpCiAK ---MOQ119359450147d90156c263a7ec91b5bfbcc195a479 Content-Type: text/x-patch; name="exceptions-rework-hcid.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exceptions-rework-hcid.diff" ZGlmZiAteCBFbnRyaWVzIC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2hjaWQvYWRhcHRl ci5jIHV0aWxzMi9oY2lkL2FkYXB0ZXIuYwotLS0gdXRpbHMvaGNpZC9hZGFwdGVyLmMJMjAwNy0x MC0yNyAxNDozMjo1NC4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9oY2lkL2FkYXB0ZXIuYwky MDA3LTEwLTI3IDIwOjUzOjU5LjAwMDAwMDAwMCArMDAwMApAQCAtNjAsNiArNjAsNyBAQAogI2lu Y2x1ZGUgImRidXMtaGNpLmgiCiAjaW5jbHVkZSAiZGJ1cy1zZHAuaCIKICNpbmNsdWRlICJkYnVz LWVycm9yLmgiCisjaW5jbHVkZSAiY29tbW9uLWVycm9yLmgiCiAKICNkZWZpbmUgTlVNX0VMRU1F TlRTKHRhYmxlKSAoc2l6ZW9mKHRhYmxlKS9zaXplb2YoY29uc3QgY2hhciAqKSkKIApAQCAtMzY1 LDcgKzM2Niw3IEBACiAJREJ1c01lc3NhZ2UgKnJlcGx5OwogCiAJaWYgKCFkYnVzX21lc3NhZ2Vf aGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVy biBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52 YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdl X25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTM4NiwxMSArMzg3LDEx IEBACiAJaW50IGVycjsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUobXNnLCBE QlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4s IG1zZywgTlVMTCk7CiAKIAllcnIgPSBnZXRfZGV2aWNlX3ZlcnNpb24oYWRhcHRlci0+ZGV2X2lk LCBzdHIsIHNpemVvZihzdHIpKTsKIAlpZiAoZXJyIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ZhaWxl ZChjb25uLCBtc2csIC1lcnIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1z ZywgLWVycik7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cp OwogCWlmICghcmVwbHkpCkBAIC00MTEsMTEgKzQxMiwxMSBAQAogCWludCBlcnI7CiAKIAlpZiAo IWRidXNfbWVzc2FnZV9oYXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFMSURfQVNfU1RS SU5HKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJl dHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJZXJyID0g Z2V0X2RldmljZV9yZXZpc2lvbihhZGFwdGVyLT5kZXZfaWQsIHN0ciwgc2l6ZW9mKHN0cikpOwog CWlmIChlcnIgPCAwKQotCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgLWVycik7CisJ CXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCAtZXJyKTsKIAogCXJlcGx5ID0g ZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTQz NiwxMSArNDM3LDExIEBACiAJaW50IGVycjsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWdu YXR1cmUobXNnLCBEQlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJn dW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAllcnIgPSBnZXRfZGV2aWNlX21hbnVmYWN0dXJl cihhZGFwdGVyLT5kZXZfaWQsIHN0ciwgc2l6ZW9mKHN0cikpOwogCWlmIChlcnIgPCAwKQotCQly ZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgLWVycik7CisJCXJldHVybiBlcnJvcl9mYWls ZWRfZXJybm8oY29ubiwgbXNnLCAtZXJyKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19t ZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTQ2MSwxMSArNDYyLDExIEBACiAJ aW50IGVycjsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUobXNnLCBEQlVTX1RZ UEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywg TlVMTCk7CiAKIAllcnIgPSBnZXRfZGV2aWNlX2NvbXBhbnkoYWRhcHRlci0+ZGV2X2lkLCBzdHIs IHNpemVvZihzdHIpKTsKIAlpZiAoZXJyIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25u LCBtc2csIC1lcnIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgLWVy cik7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlm ICghcmVwbHkpCkBAIC00ODcsNyArNDg4LDcgQEAKIAlpbnQgaTsKIAogCWlmICghZGJ1c19tZXNz YWdlX2hhc19zaWduYXR1cmUobXNnLCBEQlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQly ZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlyZXBseSA9IGRidXNfbWVz c2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC01MTMsNyArNTE0 LDcgQEAKIAljb25zdCBjaGFyICptb2RlOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3NpZ25h dHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJvcl9p bnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRo b2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTU0MiwxMCArNTQzLDEwIEBACiAJaWYg KCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcs ICZtb2RlLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2csIE5VTEwpOwogCiAJaWYgKCFtb2RlKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9h cmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNv bm4sIG1zZywgTlVMTCk7CiAKIAluZXdfbW9kZSA9IHN0cjJtb2RlKGFkYXB0ZXItPmFkZHJlc3Ms IG1vZGUpOwogCXN3aXRjaChuZXdfbW9kZSkgewpAQCAtNTYwLDcgKzU2MSw3IEBACiAJCXNjYW5f ZW5hYmxlID0gKFNDQU5fUEFHRSB8IFNDQU5fSU5RVUlSWSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4g ZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAl9CiAKIAkvKiBEbyBy ZXZlcnNlIHJlc29sdXRpb24gaW4gY2FzZSBvZiAib24iIG1vZGUgKi8KQEAgLTU4NCw3ICs1ODUs NyBAQAogCQkJCWFkYXB0ZXItPmRldl9pZCwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CiAKIAkJ CWhjaV9jbG9zZV9kZXYoZGQpOwotCQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGVy cik7CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgZXJyKTsKIAkJfQog CX0KIApAQCAtNTkyLDcgKzU5Myw3IEBACiAJCQloY2lkLm9mZm1vZGUgPT0gSENJRF9PRkZNT0RF X0RFVkRPV04pIHsKIAkJaWYgKGlvY3RsKGRkLCBIQ0lERVZET1dOLCBhZGFwdGVyLT5kZXZfaWQp IDwgMCkgewogCQkJaGNpX2Nsb3NlX2RldihkZCk7Ci0JCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNv bm4sIG1zZywgZXJybm8pOworCQkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBtc2cs IGVycm5vKTsKIAkJfQogCiAJCWdvdG8gZG9uZTsKQEAgLTYwMiw3ICs2MDMsNyBAQAogCWVyciA9 IHNldF9saW1pdGVkX2Rpc2NvdmVyYWJsZShkZCwgYWRhcHRlci0+Y2xhc3MsIGxpbWl0ZWQpOwog CWlmIChlcnIgPCAwKSB7CiAJCWhjaV9jbG9zZV9kZXYoZGQpOwotCQlyZXR1cm4gZXJyb3JfZmFp bGVkKGNvbm4sIG1zZywgLWVycik7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwg bXNnLCAtZXJyKTsKIAl9CiAKIAlpZiAoY3VycmVudF9zY2FuICE9IHNjYW5fZW5hYmxlKSB7CkBA IC02MjMsMTQgKzYyNCwxNCBAQAogCQkJZXJyb3IoIlNlbmRpbmcgd3JpdGUgc2NhbiBlbmFibGUg Y29tbWFuZCBmYWlsZWQ6ICVzICglZCkiLAogCQkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsK IAkJCWhjaV9jbG9zZV9kZXYoZGQpOwotCQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2cs IGVycik7CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgZXJyKTsKIAkJ fQogCiAJCWlmIChzdGF0dXMpIHsKIAkJCWVycm9yKCJTZXR0aW5nIHNjYW4gZW5hYmxlIGZhaWxl ZCB3aXRoIHN0YXR1cyAweCUwMngiLAogCQkJCQlzdGF0dXMpOwogCQkJaGNpX2Nsb3NlX2Rldihk ZCk7Ci0JCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgYnRfZXJyb3Ioc3RhdHVzKSk7 CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgYnRfZXJyb3Ioc3RhdHVz KSk7CiAJCX0KIAl9IGVsc2UgewogCQkvKiBkaXNjb3ZlcmFibGUgb3IgbGltaXRlZCAqLwpAQCAt NjczLDcgKzY3NCw3IEBACiAJREJ1c01lc3NhZ2UgKnJlcGx5OwogCiAJaWYgKCFkYnVzX21lc3Nh Z2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJl dHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNz YWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTcwMCw3ICs3MDEs NyBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZ UEVfVUlOVDMyLCAmdGltZW91dCwKIAkJCQlEQlVTX1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBl cnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25l d19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTczOSw3ICs3NDAsNyBAQAog CWRidXNfYm9vbF90IGNvbm5lY3RhYmxlID0gRkFMU0U7CiAKIAlpZiAoIWRidXNfbWVzc2FnZV9o YXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFMSURfQVNfU1RSSU5HKSkKLQkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZh bGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKHNjYW5fZW5hYmxlICYgU0NB Tl9QQUdFKQogCQljb25uZWN0YWJsZSA9IFRSVUU7CkBAIC03NjMsNyArNzY0LDcgQEAKIAlkYnVz X2Jvb2xfdCBkaXNjb3ZlcmFibGUgPSBGQUxTRTsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19z aWduYXR1cmUobXNnLCBEQlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJy b3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoc2Nhbl9lbmFibGUgJiBTQ0FOX0lO UVVJUlkpCiAJCWRpc2NvdmVyYWJsZSA9IFRSVUU7CkBAIC03OTMsMTAgKzc5NCwxMCBAQAogCWlm ICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5H LCAmcGVlcl9hZGRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2lu dmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3Vt ZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3MocGVlcl9hZGRyKSA8 IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1 cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXN0cjJiYShw ZWVyX2FkZHIsICZwZWVyX2JkYWRkcik7CiAKQEAgLTgyNCw3ICs4MjUsNyBAQAogCUdTTGlzdCAq bCA9IGFkYXB0ZXItPmFjdGl2ZV9jb25uOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3NpZ25h dHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJvcl9p bnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRo b2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTg2MCw3ICs4NjEsNyBAQAogCWNvbnN0 IGNoYXIgKnN0cl9wdHIgPSAiY29tcHV0ZXIiOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3Np Z25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJv cl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9h cmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19t ZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTg4OCw3ICs4ODksNyBAQAogCWlu dCBzaXplLCBpOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNf VFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNn LCBOVUxMKTsKIAogCW1ham9yX2NsYXNzID0gYWRhcHRlci0+Y2xhc3NbMV0gJiAweDFGOwogCkBA IC05MzAsNyArOTMxLDcgQEAKIAl1aW50OF90IG1pbm9yX2NsYXNzOwogCiAJaWYgKCFkYnVzX21l c3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0J CXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJy b3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCS8qIEZJWE1FOiBDdXJy ZW50bHksIG9ubHkgY29tcHV0ZXIgbWFqb3IgY2xhc3MgaXMgc3VwcG9ydGVkICovCiAJaWYgKChh ZGFwdGVyLT5jbGFzc1sxXSAmIDB4MWYpICE9IDEpCkBAIC05NzAsMTAgKzk3MSwxMCBAQAogCWlm ICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5H LCAmbWlub3IsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRz KGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoIW1pbm9yKQotCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRz KGNvbm4sIG1zZywgTlVMTCk7CiAKIAlkZCA9IGhjaV9vcGVuX2RldihhZGFwdGVyLT5kZXZfaWQp OwogCWlmIChkZCA8IDApCkBAIC05OTQsNyArOTk1LDcgQEAKIAkvKiBDaGVjayBpZiBpdCdzIGEg dmFsaWQgbWlub3IgY2xhc3MgKi8KIAlpZiAoZGV2X2NsYXNzID09IDB4RkZGRkZGRkYpIHsKIAkJ aGNpX2Nsb3NlX2RldihkZCk7Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25u LCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxM KTsKIAl9CiAKIAkvKiBzZXQgdGhlIHNlcnZpY2UgY2xhc3MgYW5kIG1ham9yIGNsYXNzICAqLwpA QCAtMTAwNSw3ICsxMDA2LDcgQEAKIAkJZXJyb3IoIkNhbid0IHdyaXRlIGNsYXNzIG9mIGRldmlj ZSBvbiBoY2klZDogJXMoJWQpIiwKIAkJCQlhZGFwdGVyLT5kZXZfaWQsIHN0cmVycm9yKGVycm5v KSwgZXJybm8pOwogCQloY2lfY2xvc2VfZGV2KGRkKTsKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChj b25uLCBtc2csIGVycik7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBl cnIpOwogCX0KIAogCWRidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChjb25uLCBkYnVzX21lc3Nh Z2VfZ2V0X3BhdGgobXNnKSwKQEAgLTEwMzUsNyArMTAzNiw3IEBACiAJCXJldHVybiBlcnJvcl9u b3RfcmVhZHkoY29ubiwgbXNnKTsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUo bXNnLCBEQlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRz KGNvbm4sIG1zZywgTlVMTCk7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3Jl dHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC0xMDY5LDcgKzEwNzAsNyBAQAogCWJkYWRkcl90 IGJhOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9J TlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25u LCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxM KTsKIAogCXN0cjJiYShhZGFwdGVyLT5hZGRyZXNzLCAmYmEpOwogCkBAIC0xMDgwLDcgKzEwODEs NyBAQAogCiAJCWVyciA9IGdldF9kZXZpY2VfbmFtZShhZGFwdGVyLT5kZXZfaWQsIHN0ciwgc2l6 ZW9mKHN0cikpOwogCQlpZiAoZXJyIDwgMCkKLQkJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwg bXNnLCAtZXJyKTsKKwkJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCAtZXJy KTsKIAl9CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwpA QCAtMTEwNSwxMSArMTEwNiwxMSBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywg TlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmc3RyX3B0ciwKIAkJCQlEQlVTX1RZUEVfSU5W QUxJRCkpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQly ZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWlmICgh Z191dGY4X3ZhbGlkYXRlKHN0cl9wdHIsIC0xLCBOVUxMKSkgewogCQllcnJvcigiTmFtZSBjaGFu Z2UgZmFpbGVkOiB0aGUgc3VwcGxpZWQgbmFtZSBpc24ndCB2YWxpZCBVVEYtOCIpOwotCQlyZXR1 cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2lu dmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAJfQogCiAJc3RyMmJhKGFkYXB0ZXIt PmFkZHJlc3MsICZiZGFkZHIpOwpAQCAtMTEyMSw3ICsxMTIyLDcgQEAKIAogCWVjb2RlID0gc2V0 X2RldmljZV9uYW1lKGFkYXB0ZXItPmRldl9pZCwgc3RyX3B0cik7CiAJaWYgKGVjb2RlIDwgMCkK LQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIC1lY29kZSk7CisJCXJldHVybiBlcnJv cl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCAtZWNvZGUpOwogCiBkb25lOgogCXJlcGx5ID0gZGJ1 c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CkBAIC0xMTUxLDEwICsxMTUyLDEwIEBA CiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9T VFJJTkcsICZhZGRyX3B0ciwKIAkJCQlEQlVTX1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBlcnJv cl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9h cmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWlmIChjaGVja19hZGRyZXNzKGFkZHJfcHRy KSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQly ZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5 ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAg LTEzMzMsMTAgKzEzMzQsMTAgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5V TEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJmFkZHJfcHRyLAogCQkJCURCVVNfVFlQRV9JTlZB TElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJl dHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNo ZWNrX2FkZHJlc3MoYWRkcl9wdHIpIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1l bnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBt c2csIE5VTEwpOwogCiAJY3JlYXRlX25hbWUoZmlsZW5hbWUsIFBBVEhfTUFYLCBTVE9SQUdFRElS LCBhZGFwdGVyLT5hZGRyZXNzLAogCQkJIm1hbnVmYWN0dXJlcnMiKTsKQEAgLTE0MDUsMTAgKzE0 MDYsMTAgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJCQkJREJV U19UWVBFX1NUUklORywgJmFkZHJfcHRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0 dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9p bnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3Mo YWRkcl9wdHIpIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1z Zyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwog CiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJl cGx5KQpAQCAtMTQ0OCwxMCArMTQ0OSwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdz KG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcl9wdHIsCiAJCQkJREJVU19U WVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNn KTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAK IAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyX3B0cikgPCAwKQotCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRz KGNvbm4sIG1zZywgTlVMTCk7CiAKIAljcmVhdGVfbmFtZShmaWxlbmFtZSwgUEFUSF9NQVgsIFNU T1JBR0VESVIsIGFkYXB0ZXItPmFkZHJlc3MsCiAJCQkibWFudWZhY3R1cmVycyIpOwpAQCAtMTQ4 NSw3ICsxNDg2LDcgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJ CQkJREJVU19UWVBFX1NUUklORywgJnN0cl9iZGFkZHIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQp KQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlzdHIyYmEoc3Ry X2JkYWRkciwgJmJkYWRkcik7CiAJYmEyb3VpKCZiZGFkZHIsIG91aSk7CkBAIC0xNTE5LDEyICsx NTIwLDEyIEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURC VVNfVFlQRV9TVFJJTkcsICZhZGRyX3BlZXIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQpKSB7Ci0J CWVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCWVycm9yX2ludmFsaWRfYXJn dW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAJCXJldHVybiAtMTsKIAl9CiAKIAlpZiAoY2hlY2tf YWRkcmVzcyhhZGRyX3BlZXIpIDwgMCkgewotCQllcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25u LCBtc2cpOworCQllcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCQly ZXR1cm4gLTE7CiAJfQogCkBAIC0xNjU3LDEwICsxNjU4LDEwIEBACiAJaWYgKCFkYnVzX21lc3Nh Z2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcsICZhZGRyLAogCQkJ CURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNv bm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5V TEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3MoYWRkcikgPCAwKQotCQlyZXR1cm4gZXJyb3JfaW52 YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1l bnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAljcmVhdGVfbmFtZShmaWxlbmFtZSwgUEFUSF9NQVgs IFNUT1JBR0VESVIsIGFkYXB0ZXItPmFkZHJlc3MsICJmZWF0dXJlcyIpOwogCkBAIC0xNzExLDEw ICsxNzEyLDEwIEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJ CURCVVNfVFlQRV9TVFJJTkcsICZwZWVyX2FkZHIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQpKQot CQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVy cm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tfYWRk cmVzcyhwZWVyX2FkZHIpIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNv bm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5V TEwpOwogCiAJLyogY2hlY2sgaWYgaXQgaXMgaW4gdGhlIGNhY2hlICovCiAJY3JlYXRlX25hbWUo ZmlsZW5hbWUsIFBBVEhfTUFYLCBTVE9SQUdFRElSLCBhZGFwdGVyLT5hZGRyZXNzLCAibmFtZXMi KTsKQEAgLTE3NjIsMTAgKzE3NjMsMTAgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyht c2csIE5VTEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJmFkZHJfcHRyLAogCQkJCURCVVNfVFlQ RV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7 CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJ aWYgKGNoZWNrX2FkZHJlc3MoYWRkcl9wdHIpIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2csIE5VTEwpOwogCiAJc3RyMmJhKGFkZHJfcHRyLCAmYmRhZGRyKTsKIApAQCAtMTc5 NiwxOCArMTc5NywxOCBAQAogCQkJCURCVVNfVFlQRV9TVFJJTkcsICZhZGRyLAogCQkJCURCVVNf VFlQRV9TVFJJTkcsICZhbGlhcywKIAkJCQlEQlVTX1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBl cnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxp ZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWlmICgoc3RybGVuKGFsaWFzKSA9PSAw KSB8fCAoY2hlY2tfYWRkcmVzcyhhZGRyKSA8IDApKSB7CiAJCWVycm9yKCJBbGlhcyBjaGFuZ2Ug ZmFpbGVkOiBJbnZhbGlkIHBhcmFtZXRlciIpOwotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4s IG1zZywgTlVMTCk7CiAJfQogCiAJc3RyMmJhKGFkZHIsICZiZGFkZHIpOwogCiAJZWNvZGUgPSBz ZXRfZGV2aWNlX2FsaWFzKGFkYXB0ZXItPmRldl9pZCwgJmJkYWRkciwgYWxpYXMpOwogCWlmIChl Y29kZSA8IDApCi0JCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCAtZWNvZGUpOworCQly ZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgLWVjb2RlKTsKIAogCXJlcGx5ID0g ZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTE4 MzQsMTEgKzE4MzUsMTEgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEws CiAJCQkJREJVU19UWVBFX1NUUklORywgJmFkZHJfcHRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElE KSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVy biBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNr X2FkZHJlc3MoYWRkcl9wdHIpIDwgMCkgewogCQllcnJvcigiQWxpYXMgY2xlYXIgZmFpbGVkOiBJ bnZhbGlkIHBhcmFtZXRlciIpOwotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAJfQogCiAJc3RyMmJhKGFkZHJfcHRyLCAmYmRhZGRyKTsKQEAgLTE4NDksNyArMTg1MCw3 IEBACiAKIAllY29kZSA9IHNldF9kZXZpY2VfYWxpYXMoYWRhcHRlci0+ZGV2X2lkLCAmYmRhZGRy LCBOVUxMKTsKIAlpZiAoZWNvZGUgPCAwKQotCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1z ZywgLWVjb2RlKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBtc2csIC1lY29k ZSk7CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlm ICghcmVwbHkpCkBAIC0xODc2LDEwICsxODc3LDEwIEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0 X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcsICZhZGRyX3B0ciwKIAkJCQlE QlVTX1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25u LCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxM KTsKIAogCWlmIChjaGVja19hZGRyZXNzKGFkZHJfcHRyKSA8IDApCi0JCXJldHVybiBlcnJvcl9p bnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWNyZWF0ZV9uYW1lKGZpbGVuYW1lLCBQQVRIX01B WCwgU1RPUkFHRURJUiwgYWRhcHRlci0+YWRkcmVzcywKIAkJCSJsYXN0c2VlbiIpOwpAQCAtMTkx MywxMCArMTkxNCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwK IAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcl9wdHIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQp KQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tf YWRkcmVzcyhhZGRyX3B0cikgPCAwKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywg TlVMTCk7CiAKIAljcmVhdGVfbmFtZShmaWxlbmFtZSwgUEFUSF9NQVgsIFNUT1JBR0VESVIsIGFk YXB0ZXItPmFkZHJlc3MsCiAJCQkibGFzdHVzZWQiKTsKQEAgLTE5NjIsNyArMTk2Myw3IEBACiAJ CQkgICAJNTAwKSA8IDApIHsKIAkJaW50IGVyciA9IGVycm5vOwogCQllcnJvcigiRGlzY29ubmVj dCBmYWlsZWQiKTsKLQkJZXJyb3JfZmFpbGVkKHBlbmRpbmdfZGMtPmNvbm4sIHBlbmRpbmdfZGMt Pm1zZywgZXJyKTsKKwkJZXJyb3JfZmFpbGVkX2Vycm5vKHBlbmRpbmdfZGMtPmNvbm4sIHBlbmRp bmdfZGMtPm1zZywgZXJyKTsKIAl9IGVsc2UgewogCQlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdf bWV0aG9kX3JldHVybihwZW5kaW5nX2RjLT5tc2cpOwogCQlpZiAoIXJlcGx5KQpAQCAtMTk5OSwx MCArMjAwMCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJ CQlEQlVTX1RZUEVfU1RSSU5HLCAmcGVlcl9hZGRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkK LQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBl cnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2Fk ZHJlc3MocGVlcl9hZGRyKSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBO VUxMKTsKIAogCXN0cjJiYShwZWVyX2FkZHIsICZwZWVyX2JkYWRkcik7CiAKQEAgLTIwOTcsNyAr MjA5OCw3IEBACiAJaWYgKGdldHNvY2tvcHQoc2ssIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmcmV0 LCAmbGVuKSA8IDApIHsKIAkJZXJyb3IoIkNhbid0IGdldCBzb2NrZXQgZXJyb3I6ICVzICglZCki LAogCQkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOwotCQllcnJvcl9mYWlsZWQoYWRhcHRlci0+ Ym9uZGluZy0+Y29ubiwgYWRhcHRlci0+Ym9uZGluZy0+cnEsCisJCWVycm9yX2ZhaWxlZF9lcnJu byhhZGFwdGVyLT5ib25kaW5nLT5jb25uLCBhZGFwdGVyLT5ib25kaW5nLT5ycSwKIAkJCQllcnJu byk7CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTIxMTYsNyArMjExNyw3IEBACiAJaWYgKGdldHNv Y2tvcHQoc2ssIFNPTF9MMkNBUCwgTDJDQVBfQ09OTklORk8sICZjaW5mbywgJmxlbikgPCAwKSB7 CiAJCWVycm9yKCJDYW4ndCBnZXQgY29ubmVjdGlvbiBpbmZvOiAlcyAoJWQpIiwKIAkJCQlzdHJl cnJvcihlcnJubyksIGVycm5vKTsKLQkJZXJyb3JfZmFpbGVkKGFkYXB0ZXItPmJvbmRpbmctPmNv bm4sIGFkYXB0ZXItPmJvbmRpbmctPnJxLAorCQllcnJvcl9mYWlsZWRfZXJybm8oYWRhcHRlci0+ Ym9uZGluZy0+Y29ubiwgYWRhcHRlci0+Ym9uZGluZy0+cnEsCiAJCQkJZXJybm8pOwogCQlnb3Rv IGZhaWxlZDsKIAl9CkBAIC0yMTQ1LDcgKzIxNDYsNyBAQAogCWlmIChoY2lfc2VuZF9yZXEoZGQs ICZycSwgNTAwKSA8IDApIHsKIAkJZXJyb3IoIlVuYWJsZSB0byBzZW5kIEhDSSByZXF1ZXN0OiAl cyAoJWQpIiwKIAkJCQkJc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0JCWVycm9yX2ZhaWxlZChh ZGFwdGVyLT5ib25kaW5nLT5jb25uLCBhZGFwdGVyLT5ib25kaW5nLT5ycSwKKwkJZXJyb3JfZmFp bGVkX2Vycm5vKGFkYXB0ZXItPmJvbmRpbmctPmNvbm4sIGFkYXB0ZXItPmJvbmRpbmctPnJxLAog CQkJCWVycm5vKTsKIAkJaGNpX2Nsb3NlX2RldihkZCk7CiAJCWdvdG8gZmFpbGVkOwpAQCAtMjE1 NCw3ICsyMTU1LDcgQEAKIAlpZiAocnAuc3RhdHVzKSB7CiAJCWVycm9yKCJIQ0lfQXV0aGVudGlj YXRpb25fUmVxdWVzdGVkIGZhaWxlZCB3aXRoIHN0YXR1cyAweCUwMngiLAogCQkJCXJwLnN0YXR1 cyk7Ci0JCWVycm9yX2ZhaWxlZChhZGFwdGVyLT5ib25kaW5nLT5jb25uLCBhZGFwdGVyLT5ib25k aW5nLT5ycSwKKwkJZXJyb3JfZmFpbGVkX2Vycm5vKGFkYXB0ZXItPmJvbmRpbmctPmNvbm4sIGFk YXB0ZXItPmJvbmRpbmctPnJxLAogCQkJCWJ0X2Vycm9yKHJwLnN0YXR1cykpOwogCQloY2lfY2xv c2VfZGV2KGRkKTsKIAkJZ290byBmYWlsZWQ7CkBAIC0yMjAwLDEwICsyMjAxLDEwIEBACiAJaWYg KCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcs ICZwZWVyX2FkZHIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52 YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1l bnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhwZWVyX2FkZHIpIDwg MCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVy biBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJc3RyMmJhKHBl ZXJfYWRkciwgJnBlZXJfYmRhZGRyKTsKIApAQCAtMjI2NiwxMCArMjI2NywxMCBAQAogCWlmICgh ZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAm cGVlcl9hZGRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFs aWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3MocGVlcl9hZGRyKSA8IDAp Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4g ZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXN0cjJiYShwZWVy X2FkZHIsICZwZWVyX2JkYWRkcik7CiAKQEAgLTIzMzcsMTAgKzIzMzgsMTAgQEAKIAlpZiAoIWRi dXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJmFk ZHJfcHRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3MoYWRkcl9wdHIpIDwgMCkKLQkJ cmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJv cl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJZGQgPSBoY2lfb3Blbl9k ZXYoYWRhcHRlci0+ZGV2X2lkKTsKIAlpZiAoZGQgPCAwKQpAQCAtMjM2Miw3ICsyMzYzLDcgQEAK IAlpZiAodGV4dGZpbGVfY2FzZWRlbChmaWxlbmFtZSwgYWRkcl9wdHIpIDwgMCkgewogCQlpbnQg ZXJyID0gZXJybm87CiAJCWhjaV9jbG9zZV9kZXYoZGQpOwotCQlyZXR1cm4gZXJyb3JfZmFpbGVk KGNvbm4sIG1zZywgZXJyKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBtc2cs IGVycik7CiAJfQogCiAJc3RyMmJhKGFkZHJfcHRyLCAmYmRhZGRyKTsKQEAgLTIzODEsNyArMjM4 Miw3IEBACiAJCQlpbnQgZXJyID0gZXJybm87CiAJCQllcnJvcigiRGlzY29ubmVjdCBmYWlsZWQi KTsKIAkJCWhjaV9jbG9zZV9kZXYoZGQpOwotCQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBt c2csIGVycik7CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgZXJyKTsK IAkJfQogCX0KIApAQCAtMjQwOSwxMCArMjQxMCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dl dF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcl9wdHIsCiAJCQkJ REJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyX3B0cikgPCAwKQotCQlyZXR1cm4gZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJn dW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAljcmVhdGVfbmFtZShmaWxlbmFtZSwgUEFUSF9N QVgsIFNUT1JBR0VESVIsIGFkYXB0ZXItPmFkZHJlc3MsCiAJCQkibGlua2tleXMiKTsKQEAgLTI0 NDgsNyArMjQ0OSw3IEBACiAJY2hhciBmaWxlbmFtZVtQQVRIX01BWCArIDFdOwogCiAJaWYgKCFk YnVzX21lc3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklO RykpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1 cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWNyZWF0ZV9u YW1lKGZpbGVuYW1lLCBQQVRIX01BWCwgU1RPUkFHRURJUiwgYWRhcHRlci0+YWRkcmVzcywKIAkJ CSJsaW5ra2V5cyIpOwpAQCAtMjQ4MSwxMCArMjQ4MiwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdl X2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcl9wdHIsCiAJ CQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywg TlVMTCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyX3B0cikgPCAwKQotCQlyZXR1cm4gZXJy b3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlzdHIyYmEoYWRhcHRlci0+YWRkcmVzcywg JmxvY2FsKTsKIApAQCAtMjUxOCwxNiArMjUxOSwxNiBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dl dF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcl9wdHIsCiAJCQkJ REJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyX3B0cikgPCAwKQotCQlyZXR1cm4gZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJn dW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlzdHIyYmEoYWRkcl9wdHIsICZiZGFkZHIpOwog CiAJdmFsID0gZ2V0X2VuY3J5cHRpb25fa2V5X3NpemUoYWRhcHRlci0+ZGV2X2lkLCAmYmRhZGRy KTsKIAlpZiAodmFsIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIC12YWwp OworCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgLXZhbCk7CiAKIAlyZXBs eSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCkBAIC0yNTU0LDcgKzI1 NTUsNyBAQAogCQlyZXR1cm4gZXJyb3Jfbm90X3JlYWR5KGNvbm4sIG1zZyk7CiAKIAlpZiAoIWRi dXNfbWVzc2FnZV9oYXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFMSURfQVNfU1RSSU5H KSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVy biBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGFkYXB0 ZXItPmRpc2Nvdl9hY3RpdmUgfHwgYWRhcHRlci0+cGRpc2Nvdl9hY3RpdmUpCiAJCXJldHVybiBl cnJvcl9kaXNjb3Zlcl9pbl9wcm9ncmVzcyhjb25uLCBtc2cpOwpAQCAtMjU4NiwxNCArMjU4Nywx NCBAQAogCQllcnJvcigiVW5hYmxlIHRvIHN0YXJ0IHBlcmlvZGljIGlucXVpcnk6ICVzICglZCki LAogCQkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOwogCQloY2lfY2xvc2VfZGV2KGRkKTsKLQkJ cmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGVycik7CisJCXJldHVybiBlcnJvcl9mYWls ZWRfZXJybm8oY29ubiwgbXNnLCBlcnIpOwogCX0KIAogCWlmIChzdGF0dXMpIHsKIAkJZXJyb3Io IkhDSV9QZXJpb2RpY19JbnF1aXJ5X01vZGUgZmFpbGVkIHdpdGggc3RhdHVzIDB4JTAyeCIsCiAJ CQkJc3RhdHVzKTsKIAkJaGNpX2Nsb3NlX2RldihkZCk7Ci0JCXJldHVybiBlcnJvcl9mYWlsZWQo Y29ubiwgbXNnLCBidF9lcnJvcihzdGF0dXMpKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJu byhjb25uLCBtc2csIGJ0X2Vycm9yKHN0YXR1cykpOwogCX0KIAogCWFkYXB0ZXItPnBkaXNjb3Zf cmVxdWVzdG9yID0gZ19zdHJkdXAoZGJ1c19tZXNzYWdlX2dldF9zZW5kZXIobXNnKSk7CkBAIC0y NjI3LDcgKzI2MjgsNyBAQAogCQlyZXR1cm4gZXJyb3Jfbm90X3JlYWR5KGNvbm4sIG1zZyk7CiAK IAlpZiAoIWRidXNfbWVzc2FnZV9oYXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFMSURf QVNfU1RSSU5HKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7 CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJ aWYgKCFhZGFwdGVyLT5wZGlzY292X2FjdGl2ZSkKIAkJcmV0dXJuIGVycm9yX25vdF9hdXRob3Jp emVkKGNvbm4sIG1zZyk7CkBAIC0yNjQxLDcgKzI2NDIsNyBAQAogCQlpZiAoZXJyID09IC1FTk9E RVYpCiAJCQlyZXR1cm4gZXJyb3Jfbm9fc3VjaF9hZGFwdGVyKGNvbm4sIG1zZyk7CiAJCWVsc2UK LQkJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCAtZXJyKTsKKwkJCXJldHVybiBlcnJv cl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCAtZXJyKTsKIAl9CiAKIAlyZXBseSA9IGRidXNfbWVz c2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwpAQCAtMjY3Niw3ICsyNjc3LDcgQEAKIAlpZiAo IWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJCQkJREJVU19UWVBFX0JPT0xFQU4s ICZyZXNvbHZlLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFs aWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uLCBtc2csIE5VTEwpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9y ZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtMjcwNiw3ICsyNzA3LDcgQEAKIAlkYnVzX2Jv b2xfdCByZXNvbHZlID0gYWRhcHRlci0+cGRpc2Nvdl9yZXNvbHZlX25hbWVzOwogCiAJaWYgKCFk YnVzX21lc3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklO RykpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1 cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0g ZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTI3 MzQsNyArMjczNSw3IEBACiAJCXJldHVybiBlcnJvcl9ub3RfcmVhZHkoY29ubiwgbXNnKTsKIAog CWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUobXNnLCBEQlVTX1RZUEVfSU5WQUxJRF9B U19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsK KwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlp ZiAoYWRhcHRlci0+ZGlzY292X2FjdGl2ZSkKIAkJcmV0dXJuIGVycm9yX2Rpc2NvdmVyX2luX3By b2dyZXNzKGNvbm4sIG1zZyk7CkBAIC0yNzY3LDE0ICsyNzY4LDE0IEBACiAJCWVycm9yKCJVbmFi bGUgdG8gc3RhcnQgaW5xdWlyeTogJXMgKCVkKSIsCiAJCQkJc3RyZXJyb3IoZXJybm8pLCBlcnJu byk7CiAJCWhjaV9jbG9zZV9kZXYoZGQpOwotCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1z ZywgZXJyKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBtc2csIGVycik7CiAJ fQogCiAJaWYgKHJwLnN0YXR1cykgewogCQllcnJvcigiSENJX0lucXVpcnkgY29tbWFuZCBmYWls ZWQgd2l0aCBzdGF0dXMgMHglMDJ4IiwKIAkJCQlycC5zdGF0dXMpOwogCQloY2lfY2xvc2VfZGV2 KGRkKTsKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGJ0X2Vycm9yKHJwLnN0YXR1 cykpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgYnRfZXJyb3IocnAu c3RhdHVzKSk7CiAJfQogCiAJbWV0aG9kID0gZGJ1c19tZXNzYWdlX2dldF9tZW1iZXIobXNnKTsK QEAgLTI4MDcsNyArMjgwOCw3IEBACiAJCXJldHVybiBlcnJvcl9ub3RfcmVhZHkoY29ubiwgbXNn KTsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUobXNnLCBEQlVTX1RZUEVfSU5W QUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwg bXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7 CiAKIAkvKiBpcyB0aGVyZSBkaXNjb3ZlciBwZW5kaW5nPyBvciBkaXNjb3ZlcnkgY2FuY2VsIHdh cyByZXF1ZXN0ZWQKIAkgKiBwcmV2aW91c2x5ICovCkBAIC0yODI4LDcgKzI4MjksNyBAQAogCQlp ZiAoZXJyID09IC1FTk9ERVYpCiAJCQlyZXR1cm4gZXJyb3Jfbm9fc3VjaF9hZGFwdGVyKGNvbm4s IG1zZyk7CiAJCWVsc2UKLQkJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCAtZXJyKTsK KwkJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCAtZXJyKTsKIAl9CiAKIAkv KiBSZXBseSBiZWZvcmUgc2VuZCBEaXNjb3ZlcnlDb21wbGV0ZWQgKi8KQEAgLTI4ODEsNyArMjg4 Miw3IEBACiAJc3RydWN0IHJlbW90ZV9kZXZpY2VfbGlzdF90IHBhcmFtID0geyBOVUxMLCAwIH07 CiAKIAlpZiAoIWRidXNfbWVzc2FnZV9oYXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFM SURfQVNfU1RSSU5HKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1z Zyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwog CiAJLyogQWRkIEJvbmRlZCBkZXZpY2VzIHRvIHRoZSBsaXN0ICovCiAJY3JlYXRlX25hbWUoZmls ZW5hbWUsIFBBVEhfTUFYLCBTVE9SQUdFRElSLCBhZGFwdGVyLT5hZGRyZXNzLCAibGlua2tleXMi KTsKQEAgLTI5NDAsMTIgKzI5NDEsMTIgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyht c2csIE5VTEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJnN0cmluZywKIAkJCQlEQlVTX1RZUEVf SU5WQUxJRCkpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOwor CQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCS8q IERhdGUgZm9ybWF0IGlzICJZWVlZLU1NLUREIEhIOk1NOlNTIEdNVCIgKi8KIAlsZW4gPSBzdHJs ZW4oc3RyaW5nKTsKIAlpZiAobGVuICYmIChzdHJwdGltZShzdHJpbmcsICIlWS0lbS0lZCAlSDol TTolUyIsICZkYXRlKSA9PSBOVUxMKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRz KGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cs IE5VTEwpOwogCiAJLyogQm9uZGVkIGFuZCB0cnVzdGVkOiBtYW5kYXRvcnkgZW50cmllcyhubyBt YXR0ZXIgdGhlIGRhdGUvdGltZSkgKi8KIAljcmVhdGVfbmFtZShmaWxlbmFtZSwgUEFUSF9NQVgs IFNUT1JBR0VESVIsIGFkYXB0ZXItPmFkZHJlc3MsICJsaW5ra2V5cyIpOwpAQCAtMjk5NywxMCAr Mjk5OCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCURC VVNfVFlQRV9TVFJJTkcsICZhZGRyZXNzLAogCQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1 cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2lu dmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhh ZGRyZXNzKSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cp OworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAog CXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBs eSkKQEAgLTMwMzEsMTAgKzMwMzIsMTAgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyht c2csIE5VTEwsCiAJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVzcywKIAkJCURCVVNfVFlQRV9J TlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJ CXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYg KGNoZWNrX2FkZHJlc3MoYWRkcmVzcykgPCAwKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4s IG1zZywgTlVMTCk7CiAKIAlzdHIyYmEoYWRhcHRlci0+YWRkcmVzcywgJmxvY2FsKTsKIApAQCAt MzA2MywxMCArMzA2NCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVM TCwKIAkJCURCVVNfVFlQRV9TVFJJTkcsICZhZGRyZXNzLAogCQkJREJVU19UWVBFX0lOVkFMSUQp KQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tf YWRkcmVzcyhhZGRyZXNzKSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBO VUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJ aWYgKCFyZXBseSkKQEAgLTMxMzgsNyArMzEzOSw3IEBACiAJCXJldHVybiBlcnJvcl91bmtub3du X21ldGhvZChjb25uLCBtc2cpOwogCiAJaWYgKCFkYnVzX21lc3NhZ2VfaGFzX3NpZ25hdHVyZSht c2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlk X2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0 dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKQEAgLTMxNjgsMTAgKzMxNjksMTAgQEAKIAogCWlmIChk YnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLCBEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVz cywKIAkJCQkJCURCVVNfVFlQRV9JTlZBTElEKSA9PSBGQUxTRSkKLQkJcmV0dXJuIGVycm9yX2lu dmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3Vt ZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGNoZWNrX2FkZHJlc3MoYWRkcmVzcykgPCAw KQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlyZXBseSA9IGRi dXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC0zMTk4 LDcgKzMxOTksNyBAQAogCiAJaWYgKGRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsIERC VVNfVFlQRV9TVFJJTkcsICZwYXRoLAogCQkJCQkJREJVU19UWVBFX0lOVkFMSUQpID09IEZBTFNF KQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJu IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlyZXBseSA9IGRi dXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkpCmRpZmYgLXgg RW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGlscy9oY2lkL2RidXMtZGF0YWJhc2Uu YyB1dGlsczIvaGNpZC9kYnVzLWRhdGFiYXNlLmMKLS0tIHV0aWxzL2hjaWQvZGJ1cy1kYXRhYmFz ZS5jCTIwMDctMTAtMjcgMTQ6MzI6NTQuMDAwMDAwMDAwICswMDAwCisrKyB1dGlsczIvaGNpZC9k YnVzLWRhdGFiYXNlLmMJMjAwNy0xMC0yNyAyMDo1Mzo1OS4wMDAwMDAwMDAgKzAwMDAKQEAgLTUw LDYgKzUwLDcgQEAKICNpbmNsdWRlICJkYnVzLWhjaS5oIgogI2luY2x1ZGUgImRidXMtY29tbW9u LmgiCiAjaW5jbHVkZSAiZGJ1cy1lcnJvci5oIgorI2luY2x1ZGUgImNvbW1vbi1lcnJvci5oIgog I2luY2x1ZGUgImRidXMtc2VydmljZS5oIgogI2luY2x1ZGUgImRidXMtc2VjdXJpdHkuaCIKICNp bmNsdWRlICJkYnVzLWRhdGFiYXNlLmgiCkBAIC0xMDksNyArMTEwLDcgQEAKIAogCWRidXNfbWVz c2FnZV9pdGVyX2dldF9maXhlZF9hcnJheSgmYXJyYXksICZyZWNvcmQsICZsZW4pOwogCWlmIChs ZW4gPD0gMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJ CXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJdXNl cl9yZWNvcmQgPSBnX25ldzAoc3RydWN0IHJlY29yZF9kYXRhLCAxKTsKIApAQCAtMTE4LDIxICsx MTksMjEgQEAKIAkJaWYgKCFzZHBfcmVjb3JkKSB7CiAJCQllcnJvcigiUGFyc2luZyBvZiBzZXJ2 aWNlIHJlY29yZCBmYWlsZWQiKTsKIAkJCWdfZnJlZSh1c2VyX3JlY29yZCk7Ci0JCQlyZXR1cm4g ZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgRUlPKTsKKwkJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJy bm8oY29ubiwgbXNnLCBFSU8pOwogCQl9CiAKIAkJaWYgKHNjYW5uZWQgIT0gbGVuKSB7CiAJCQll cnJvcigiU2l6ZSBtaXNtYXRjaCBvZiBzZXJ2aWNlIHJlY29yZCIpOwogCQkJZ19mcmVlKHVzZXJf cmVjb3JkKTsKIAkJCXNkcF9yZWNvcmRfZnJlZShzZHBfcmVjb3JkKTsKLQkJCXJldHVybiBlcnJv cl9mYWlsZWQoY29ubiwgbXNnLCBFSU8pOworCQkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhj b25uLCBtc2csIEVJTyk7CiAJCX0KIAogCQlpZiAoYWRkX3JlY29yZF90b19zZXJ2ZXIoc2RwX3Jl Y29yZCkgPCAwKSB7CiAJCQllcnJvcigiRmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZpY2UgcmVjb3Jk Iik7CiAJCQlnX2ZyZWUodXNlcl9yZWNvcmQpOwogCQkJc2RwX3JlY29yZF9mcmVlKHNkcF9yZWNv cmQpOwotCQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIEVJTyk7CisJCQlyZXR1cm4g ZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgRUlPKTsKIAkJfQogCiAJCXVzZXJfcmVjb3Jk LT5oYW5kbGUgPSBzZHBfcmVjb3JkLT5oYW5kbGU7CkBAIC0xNDMsNyArMTQ0LDcgQEAKIAkJCQkJ CSZ1c2VyX3JlY29yZC0+aGFuZGxlKSA8IDApIHsKIAkJCWVycm9yKCJGYWlsZWQgdG8gcmVnaXN0 ZXIgc2VydmljZSByZWNvcmQiKTsKIAkJCWdfZnJlZSh1c2VyX3JlY29yZCk7Ci0JCQlyZXR1cm4g ZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgZXJybm8pOworCQkJcmV0dXJuIGVycm9yX2ZhaWxlZF9l cnJubyhjb25uLCBtc2csIGVycm5vKTsKIAkJfQogCX0KIApAQCAtMTc1LDcgKzE3Niw3IEBACiAK IAlpZiAoZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCURCVVNfVFlQRV9TVFJJ TkcsICZyZWNvcmQsIERCVVNfVFlQRV9JTlZBTElEKSA9PSBGQUxTRSkKLQkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2Fy Z3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJdXNlcl9yZWNvcmQgPSBnX25ldzAoc3RydWN0 IHJlY29yZF9kYXRhLCAxKTsKIApAQCAtMTgzLDcgKzE4NCw3IEBACiAJaWYgKCFzZHBfcmVjb3Jk KSB7CiAJCWVycm9yKCJQYXJzaW5nIG9mIFhNTCBzZXJ2aWNlIHJlY29yZCBmYWlsZWQiKTsKIAkJ Z19mcmVlKHVzZXJfcmVjb3JkKTsKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIEVJ Tyk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBFSU8pOwogCX0KIAog CWlmIChzZHBfc2VydmVyX2VuYWJsZSkgewpAQCAtMTkxLDcgKzE5Miw3IEBACiAJCQllcnJvcigi RmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZpY2UgcmVjb3JkIik7CiAJCQlnX2ZyZWUodXNlcl9yZWNv cmQpOwogCQkJc2RwX3JlY29yZF9mcmVlKHNkcF9yZWNvcmQpOwotCQkJcmV0dXJuIGVycm9yX2Zh aWxlZChjb25uLCBtc2csIEVJTyk7CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4s IG1zZywgRUlPKTsKIAkJfQogCiAJCXVzZXJfcmVjb3JkLT5oYW5kbGUgPSBzZHBfcmVjb3JkLT5o YW5kbGU7CkBAIC0yMDAsNyArMjAxLDcgQEAKIAkJCWVycm9yKCJGYWlsZWQgdG8gcmVnaXN0ZXIg c2VydmljZSByZWNvcmQiKTsKIAkJCWdfZnJlZSh1c2VyX3JlY29yZCk7CiAJCQlzZHBfcmVjb3Jk X2ZyZWUoc2RwX3JlY29yZCk7Ci0JCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgRUlP KTsKKwkJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBFSU8pOwogCQl9CiAK IAkJdXNlcl9yZWNvcmQtPmhhbmRsZSA9IHNkcF9yZWNvcmQtPmhhbmRsZTsKQEAgLTI0Myw3ICsy NDQsNyBAQAogCQlpZiAoZXJyIDwgMCkgewogCQkJc2RwX3JlY29yZF9mcmVlKHNkcF9yZWNvcmQp OwogCQkJZXJyb3IoIkZhaWxlZCB0byB1cGRhdGUgdGhlIHNlcnZpY2UgcmVjb3JkIik7Ci0JCQly ZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgRUlPKTsKKwkJCXJldHVybiBlcnJvcl9mYWls ZWRfZXJybm8oY29ubiwgbXNnLCBFSU8pOwogCQl9CiAJfSBlbHNlIHsKIAkJc2RwX2RhdGFfdCAq ZCA9IHNkcF9kYXRhX2FsbG9jKFNEUF9VSU5UMzIsICZoYW5kbGUpOwpAQCAtMjUzLDcgKzI1NCw3 IEBACiAJCXNkcF9yZWNvcmRfZnJlZShzZHBfcmVjb3JkKTsKIAkJaWYgKGVyciA8IDApIHsKIAkJ CWVycm9yKCJGYWlsZWQgdG8gdXBkYXRlIHRoZSBzZXJ2aWNlIHJlY29yZCIpOwotCQkJcmV0dXJu IGVycm9yX2ZhaWxlZChjb25uLCBtc2csIEVJTyk7CisJCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vy cm5vKGNvbm4sIG1zZywgRUlPKTsKIAkJfQogCX0KIApAQCAtMjc4LDcgKzI3OSw3IEBACiAKIAlk YnVzX21lc3NhZ2VfaXRlcl9nZXRfZml4ZWRfYXJyYXkoJmFycmF5LCAmYmluX3JlY29yZCwgJnNp emUpOwogCWlmIChzaXplIDw9IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBO VUxMKTsKIAogCXVzZXJfcmVjb3JkID0gZmluZF9yZWNvcmQoaGFuZGxlLCBkYnVzX21lc3NhZ2Vf Z2V0X3NlbmRlcihtc2cpKTsKIAlpZiAoIXVzZXJfcmVjb3JkKQpAQCAtMjg3LDEzICsyODgsMTMg QEAKIAlzZHBfcmVjb3JkID0gc2RwX2V4dHJhY3RfcGR1KGJpbl9yZWNvcmQsICZzY2FubmVkKTsK IAlpZiAoIXNkcF9yZWNvcmQpIHsKIAkJZXJyb3IoIlBhcnNpbmcgb2Ygc2VydmljZSByZWNvcmQg ZmFpbGVkIik7Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOwor CQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAl9CiAK IAlpZiAoc2Nhbm5lZCAhPSBzaXplKSB7CiAJCWVycm9yKCJTaXplIG1pc21hdGNoIG9mIHNlcnZp Y2UgcmVjb3JkIik7CiAJCXNkcF9yZWNvcmRfZnJlZShzZHBfcmVjb3JkKTsKLQkJcmV0dXJuIGVy cm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlk X2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCX0KIAogCXJldHVybiB1cGRhdGVfcmVjb3Jk KGNvbm4sIG1zZywgaGFuZGxlLCBzZHBfcmVjb3JkKTsKQEAgLTMxMiwxMSArMzEzLDExIEBACiAJ CQlEQlVTX1RZUEVfVUlOVDMyLCAmaGFuZGxlLAogCQkJREJVU19UWVBFX1NUUklORywgJnJlY29y ZCwKIAkJCURCVVNfVFlQRV9JTlZBTElEKSA9PSBGQUxTRSkKLQkJcmV0dXJuIGVycm9yX2ludmFs aWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uLCBtc2csIE5VTEwpOwogCiAJbGVuID0gKHJlY29yZCA/IHN0cmxlbihyZWNvcmQpIDog MCk7CiAJaWYgKGxlbiA9PSAwKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAKIAl1c2VyX3JlY29yZCA9IGZpbmRfcmVjb3JkKGhhbmRsZSwgZGJ1c19tZXNzYWdlX2dl dF9zZW5kZXIobXNnKSk7CiAJaWYgKCF1c2VyX3JlY29yZCkKQEAgLTMyNiw3ICszMjcsNyBAQAog CWlmICghc2RwX3JlY29yZCkgewogCQllcnJvcigiUGFyc2luZyBvZiBYTUwgc2VydmljZSByZWNv cmQgZmFpbGVkIik7CiAJCXNkcF9yZWNvcmRfZnJlZShzZHBfcmVjb3JkKTsKLQkJcmV0dXJuIGVy cm9yX2ZhaWxlZChjb25uLCBtc2csIEVJTyk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8o Y29ubiwgbXNnLCBFSU8pOwogCX0KIAogCXJldHVybiB1cGRhdGVfcmVjb3JkKGNvbm4sIG1zZywg aGFuZGxlLCBzZHBfcmVjb3JkKTsKQEAgLTM0Miw3ICszNDMsNyBAQAogCiAJaWYgKGRidXNfbWVz c2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJCQlEQlVTX1RZUEVfVUlOVDMyLCAmaGFuZGxlLCBE QlVTX1RZUEVfSU5WQUxJRCkgPT0gRkFMU0UpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3Vt ZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwg bXNnLCBOVUxMKTsKIAogCXNlbmRlciA9IGRidXNfbWVzc2FnZV9nZXRfc2VuZGVyKG1zZyk7CiAK QEAgLTM4MCwxMiArMzgxLDEyIEBACiAJaWYgKGRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5V TEwsIERCVVNfVFlQRV9TVFJJTkcsICZpZGVudCwKIAkJCURCVVNfVFlQRV9TVFJJTkcsICZuYW1l LCBEQlVTX1RZUEVfU1RSSU5HLCAmZGVzYywKIAkJCQkJCURCVVNfVFlQRV9JTlZBTElEKSA9PSBG QUxTRSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJl dHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJc2VuZGVy ID0gZGJ1c19tZXNzYWdlX2dldF9zZW5kZXIobXNnKTsKIAogCWlmIChzZXJ2aWNlX3JlZ2lzdGVy KGNvbm4sIHNlbmRlciwgaWRlbnQsIG5hbWUsIGRlc2MpIDwgMCkKLQkJcmV0dXJuIGVycm9yX2Zh aWxlZChjb25uLCBtc2csIEVJTyk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwg bXNnLCBFSU8pOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNn KTsKIAlpZiAoIXJlcGx5KQpAQCAtNDAzLDcgKzQwNCw3IEBACiAKIAlpZiAoZGJ1c19tZXNzYWdl X2dldF9hcmdzKG1zZywgTlVMTCwgREJVU19UWVBFX1NUUklORywgJmlkZW50LAogCQkJCQkJREJV U19UWVBFX0lOVkFMSUQpID09IEZBTFNFKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVu dHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1z ZywgTlVMTCk7CiAKIAlzZW5kZXIgPSBkYnVzX21lc3NhZ2VfZ2V0X3NlbmRlcihtc2cpOwogCkBA IC00MTUsNyArNDE2LDcgQEAKIAkJcmV0dXJuIGVycm9yX25vdF9hdXRob3JpemVkKGNvbm4sIG1z Zyk7CiAKIAlpZiAoc2VydmljZV91bnJlZ2lzdGVyKGNvbm4sIHNlcnZpY2UpIDwgMCkKLQkJcmV0 dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIEVJTyk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRf ZXJybm8oY29ubiwgbXNnLCBFSU8pOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhv ZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtNDM1LDcgKzQzNiw3IEBACiAKIAlpZiAo ZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwgREJVU19UWVBFX1NUUklORywgJmFkZHJl c3MsCiAJCQlEQlVTX1RZUEVfU1RSSU5HLCAmcGF0aCwgREJVU19UWVBFX0lOVkFMSUQpID09IEZB TFNFKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0 dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlzZW5kZXIg PSBkYnVzX21lc3NhZ2VfZ2V0X3NlbmRlcihtc2cpOwogCkBAIC00NzgsNyArNDc5LDcgQEAKIAog CWlmIChkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLCBEQlVTX1RZUEVfU1RSSU5HLCAm YWRkcmVzcywKIAkJCURCVVNfVFlQRV9TVFJJTkcsICZwYXRoLCBEQlVTX1RZUEVfSU5WQUxJRCkg PT0gRkFMU0UpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOwor CQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXNl bmRlciA9IGRidXNfbWVzc2FnZV9nZXRfc2VuZGVyKG1zZyk7CiAKZGlmZiAteCBFbnRyaWVzIC14 IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2hjaWQvZGJ1cy1lcnJvci5jIHV0aWxzMi9oY2lk L2RidXMtZXJyb3IuYwotLS0gdXRpbHMvaGNpZC9kYnVzLWVycm9yLmMJMjAwNy0xMC0yNyAxNDo1 NDoxMC4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9oY2lkL2RidXMtZXJyb3IuYwkyMDA3LTEw LTI3IDIxOjM5OjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMzcsMTQgKzM3LDcgQEAKICNpbmNsdWRl ICJkYnVzLWhlbHBlci5oIgogI2luY2x1ZGUgImRidXMtY29tbW9uLmgiCiAjaW5jbHVkZSAiZGJ1 cy1lcnJvci5oIgotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9mYWlsZWQoREJ1c0Nvbm5lY3Rp b24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGludCBlcnIpCi17Ci0JY29uc3QgY2hhciAqc3Ry ID0gc3RyZXJyb3IoZXJyKTsKLQotCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRfdW5y ZWYoY29ubiwKLQkJZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIEVSUk9SX0lOVEVSRkFDRSAi LkZhaWxlZCIsIHN0cikpOwotfQorI2luY2x1ZGUgImNvbW1vbi1lcnJvci5oIgogCiBEQnVzSGFu ZGxlclJlc3VsdCBlcnJvcl9ub3RfcmVhZHkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNz YWdlICptc2cpCiB7CkBAIC01MiwxMyArNDUsNiBAQAogCQlkYnVzX21lc3NhZ2VfbmV3X2Vycm9y KG1zZywgRVJST1JfSU5URVJGQUNFICIuTm90UmVhZHkiLCAiQWRhcHRlciBpcyBub3QgcmVhZHki KSk7CiB9CiAKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2ludmFsaWRfYXJndW1lbnRzKERCdXND b25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJldHVybiBkYnVzX2Nvbm5l Y3Rpb25fc2VuZF9hbmRfdW5yZWYoY29ubiwKLQkJZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2cs IEVSUk9SX0lOVEVSRkFDRSAiLkludmFsaWRBcmd1bWVudHMiLAotCQkJCQkJCSJJbnZhbGlkIGFy Z3VtZW50cyIpKTsKLX0KLQogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfdW5rbm93bl9tZXRob2Qo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCiB7CiAJY2hhciBlcnJvclsx MjhdOwpAQCAtODgsMTMgKzc0LDYgQEAKIAkJCQkJCQkiUmVqZWN0ZWQiKSk7CiB9CiAKLURCdXNI YW5kbGVyUmVzdWx0IGVycm9yX291dF9vZl9tZW1vcnkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERC dXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGRidXNfY29ubmVjdGlvbl9zZW5kX2FuZF91bnJl Zihjb25uLAotCQlkYnVzX21lc3NhZ2VfbmV3X2Vycm9yKG1zZywgRVJST1JfSU5URVJGQUNFICIu T3V0T2ZNZW1vcnkiLAotCQkJCQkJCSJPdXQgb2YgbWVtb3J5IikpOwotfQotCiBEQnVzSGFuZGxl clJlc3VsdCBlcnJvcl9ub19zdWNoX2FkYXB0ZXIoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNN ZXNzYWdlICptc2cpCiB7CiAJcmV0dXJuIGRidXNfY29ubmVjdGlvbl9zZW5kX2FuZF91bnJlZihj b25uLApAQCAtMTA5LDIwICs4OCw2IEBACiAJCQkJCQkJIk5vIHN1Y2ggc2VydmljZSIpKTsKIH0K IAotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm90X2F2YWlsYWJsZShEQnVzQ29ubmVjdGlvbiAq Y29ubiwgREJ1c01lc3NhZ2UgKm1zZykKLXsKLQlyZXR1cm4gZGJ1c19jb25uZWN0aW9uX3NlbmRf YW5kX3VucmVmKGNvbm4sCi0JCWRidXNfbWVzc2FnZV9uZXdfZXJyb3IobXNnLCBFUlJPUl9JTlRF UkZBQ0UgIi5Ob3RBdmFpbGFibGUiLAotCQkJCQkJCSJOb3QgYXZhaWxhYmxlIikpOwotfQotCi1E QnVzSGFuZGxlclJlc3VsdCBlcnJvcl9ub3Rfc3VwcG9ydGVkKERCdXNDb25uZWN0aW9uICpjb25u LCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRf dW5yZWYoY29ubiwKLQkJZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIEVSUk9SX0lOVEVSRkFD RSAiLk5vdFN1cHBvcnRlZCIsCi0JCQkJCQkJIk5vdCBzdXBwb3J0ZWQiKSk7Ci19Ci0KIERCdXNI YW5kbGVyUmVzdWx0IGVycm9yX3JlcXVlc3RfZGVmZXJyZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4s IERCdXNNZXNzYWdlICptc2cpCiB7CiAJcmV0dXJuIGRidXNfY29ubmVjdGlvbl9zZW5kX2FuZF91 bnJlZihjb25uLApAQCAtMTMwLDEzICs5NSw2IEBACiAJCQkJCQkJIlJlcXVlc3QgRGVmZXJyZWQi KSk7CiB9CiAKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX25vdF9jb25uZWN0ZWQoREJ1c0Nvbm5l Y3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGRidXNfY29ubmVjdGlv bl9zZW5kX2FuZF91bnJlZihjb25uLAotCQlkYnVzX21lc3NhZ2VfbmV3X2Vycm9yKG1zZywgRVJS T1JfSU5URVJGQUNFICIuTm90Q29ubmVjdGVkIiwKLQkJCQkJCQkiTm90IGNvbm5lY3RlZCIpKTsK LX0KLQogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfdW5zdXBwb3J0ZWRfbWFqb3JfY2xhc3MoREJ1 c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCiB7CiAJcmV0dXJuIGRidXNfY29u bmVjdGlvbl9zZW5kX2FuZF91bnJlZihjb25uLApAQCAtMTQ0LDQ4ICsxMDIsMTIgQEAKIAkJCQkJ CQkiVW5zdXBwb3J0ZWQgTWFqb3IgQ2xhc3MiKSk7CiB9CiAKLURCdXNIYW5kbGVyUmVzdWx0IGVy cm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNN ZXNzYWdlICptc2csIGludCBlcnIpCi17Ci0JcmV0dXJuIGRidXNfY29ubmVjdGlvbl9zZW5kX2Fu ZF91bnJlZihjb25uLAotCQlkYnVzX21lc3NhZ2VfbmV3X2Vycm9yKG1zZywgRVJST1JfSU5URVJG QUNFICIuQ29ubmVjdGlvbkF0dGVtcHRGYWlsZWQiLAotCQkJCQllcnIgPyBzdHJlcnJvcihlcnIp IDogIkNvbm5lY3Rpb24gYXR0ZW1wdCBmYWlsZWQiKSk7Ci19Ci0KLXN0YXRpYyBEQnVzSGFuZGxl clJlc3VsdCBlcnJvcl9hbHJlYWR5X2V4aXN0cyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01l c3NhZ2UgKm1zZywgY29uc3QgY2hhciAqc3RyKQotewotCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25f c2VuZF9hbmRfdW5yZWYoY29ubiwKLQkJZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIEVSUk9S X0lOVEVSRkFDRSAiLkFscmVhZHlFeGlzdHMiLCBzdHIpKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1 bHQgZXJyb3JfZG9lc19ub3RfZXhpc3QoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdl ICptc2csIGNvbnN0IGNoYXIgKnN0cikKLXsKLQlyZXR1cm4gZGJ1c19jb25uZWN0aW9uX3NlbmRf YW5kX3VucmVmKGNvbm4sCi0JCWRidXNfbWVzc2FnZV9uZXdfZXJyb3IobXNnLCBFUlJPUl9JTlRF UkZBQ0UgIi5Eb2VzTm90RXhpc3QiLCBzdHIpKTsKLX0KLQotc3RhdGljIERCdXNIYW5kbGVyUmVz dWx0IGVycm9yX2luX3Byb2dyZXNzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAq bXNnLCBjb25zdCBjaGFyICpzdHIpCi17Ci0JcmV0dXJuIGRidXNfY29ubmVjdGlvbl9zZW5kX2Fu ZF91bnJlZihjb25uLAotCQlkYnVzX21lc3NhZ2VfbmV3X2Vycm9yKG1zZywgRVJST1JfSU5URVJG QUNFICIuSW5Qcm9ncmVzcyIsIHN0cikpOwotfQotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9j YW5jZWxlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hh ciAqc3RyKQotewotCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRfdW5yZWYoY29ubiwK LQkJZGJ1c19tZXNzYWdlX25ld19lcnJvcihtc2csIEVSUk9SX0lOVEVSRkFDRSAiLkNhbmNlbGVk Iiwgc3RyKSk7Ci19Ci0KIERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX25vdF9pbl9wcm9ncmVzcyhE QnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hhciAqc3RyKQog ewogCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRfdW5yZWYoY29ubiwKIAkJZGJ1c19t ZXNzYWdlX25ld19lcnJvcihtc2csIEVSUk9SX0lOVEVSRkFDRSAiLk5vdEluUHJvZ3Jlc3MiLCBz dHIpKTsKIH0KIAotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfY29ubmVjdF9jYW5jZWxlZChEQnVz Q29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKLXsKLQlyZXR1cm4gZXJyb3JfY2Fu Y2VsZWQoY29ubiwgbXNnLCAiQ29ubmVjdGlvbiBjcmVhdGlvbiB3YXMgY2FuY2VsZWQiKTsKLX0K LQogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfYm9uZGluZ19hbHJlYWR5X2V4aXN0cyhEQnVzQ29u bmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKIHsKIAlyZXR1cm4gZXJyb3JfYWxyZWFk eV9leGlzdHMoY29ubiwgbXNnLCAiQm9uZGluZyBhbHJlYWR5IGV4aXN0cyIpOwpAQCAtMjE4LDE2 ICsxNDAsNiBAQAogCXJldHVybiBlcnJvcl9pbl9wcm9ncmVzcyhjb25uLCBtc2csICJEaXNjb3Zl ciBpbiBwcm9ncmVzcyIpOwogfQogCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9jb25uZWN0X2lu X3Byb2dyZXNzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJl dHVybiBlcnJvcl9pbl9wcm9ncmVzcyhjb25uLCBtc2csICJDb25uZWN0aW9uIGNyZWF0aW9uIGlu IHByb2dyZXNzIik7Ci19Ci0KLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2Nvbm5lY3Rfbm90X2lu X3Byb2dyZXNzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJl dHVybiBlcnJvcl9ub3RfaW5fcHJvZ3Jlc3MoY29ubiwgbXNnLCAiQ29ubmVjdGlvbiBjcmVhdGlv biBub3QgaW4gcHJvZ3Jlc3MiKTsKLX0KLQogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfcmVjb3Jk X2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQog ewogCXJldHVybiBlcnJvcl9kb2VzX25vdF9leGlzdChjb25uLCBtc2csICJSZWNvcmQgZG9lcyBu b3QgZXhpc3QiKTsKQEAgLTI1MywxNiArMTY1LDYgQEAKIAlyZXR1cm4gZXJyb3JfZG9lc19ub3Rf ZXhpc3QoY29ubiwgbXNnLCAiQXV0aG9yaXphdGlvbiBhZ2VudCBkb2VzIG5vdCBleGlzdCIpOwog fQogCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9iaW5kaW5nX2RvZXNfbm90X2V4aXN0KERCdXND b25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJldHVybiBlcnJvcl9kb2Vz X25vdF9leGlzdChjb25uLCBtc2csICJCaW5kaW5nIGRvZXMgbm90IGV4aXN0Iik7Ci19Ci0KLURC dXNIYW5kbGVyUmVzdWx0IGVycm9yX3NlcnZpY2VfYWxyZWFkeV9leGlzdHMoREJ1c0Nvbm5lY3Rp b24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGVycm9yX2FscmVhZHlfZXhp c3RzKGNvbm4sIG1zZywgIlNlcnZpY2UgYWxyZWFkeSBleGlzdHMiKTsKLX0KLQogREJ1c0hhbmRs ZXJSZXN1bHQgZXJyb3Jfc2VydmljZV9kb2VzX25vdF9leGlzdChEQnVzQ29ubmVjdGlvbiAqY29u biwgREJ1c01lc3NhZ2UgKm1zZykKIHsKIAlyZXR1cm4gZXJyb3JfZG9lc19ub3RfZXhpc3QoY29u biwgbXNnLCAiU2VydmljZSBkb2VzIG5vdCBleGlzdCIpOwpAQCAtMjc4LDE2ICsxODAsNiBAQAog CXJldHVybiBlcnJvcl9hbHJlYWR5X2V4aXN0cyhjb25uLCBtc2csICJBdWRpdCBhbHJlYWR5IHBl cmZvcm1lZCIpOwogfQogCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl90cnVzdGVkX2RldmljZV9h bHJlYWR5X2V4aXN0cyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZykKLXsK LQlyZXR1cm4gZXJyb3JfYWxyZWFkeV9leGlzdHMoY29ubiwgbXNnLCAiVHJ1c3RlZCBkZXZpY2Ug YWxyZWFkeSBleGlzdHMiKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfdHJ1c3RlZF9k ZXZpY2VfZG9lc19ub3RfZXhpc3RzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAq bXNnKQotewotCXJldHVybiBlcnJvcl9kb2VzX25vdF9leGlzdChjb25uLCBtc2csICJUcnVzdGVk IGRldmljZSBkb2VzIG5vdCBleGlzdCIpOwotfQotCiBEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9k aXNjb25uZWN0X2luX3Byb2dyZXNzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAq bXNnKQogewogCXJldHVybiBlcnJvcl9pbl9wcm9ncmVzcyhjb25uLCBtc2csICJEaXNjb25uZWN0 aW9uIGluIHByb2dyZXNzIik7CmRpZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAt TiB1dGlscy9oY2lkL2RidXMtZXJyb3IuaCB1dGlsczIvaGNpZC9kYnVzLWVycm9yLmgKLS0tIHV0 aWxzL2hjaWQvZGJ1cy1lcnJvci5oCTIwMDctMTAtMjMgMTc6NDk6NTIuMDAwMDAwMDAwICswMDAw CisrKyB1dGlsczIvaGNpZC9kYnVzLWVycm9yLmgJMjAwNy0xMC0yOCAxNzo0Nzo0OS4wMDAwMDAw MDAgKzAwMDAKQEAgLTIyLDQ3ICsyMiwzMCBAQAogICoKICAqLwogCi0jZGVmaW5lIEVSUk9SX0lO VEVSRkFDRSAib3JnLmJsdWV6LkVycm9yIgotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9mYWls ZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGludCBlcnIpOwogREJ1 c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm90X3JlYWR5KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVz TWVzc2FnZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2ludmFsaWRfYXJndW1lbnRz KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVz dWx0IGVycm9yX3Vua25vd25fbWV0aG9kKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2Fn ZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX25vdF9hdXRob3JpemVkKERCdXNDb25u ZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVzdWx0IGVycm9y X3JlamVjdGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKLURCdXNI YW5kbGVyUmVzdWx0IGVycm9yX291dF9vZl9tZW1vcnkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERC dXNNZXNzYWdlICptc2cpOwogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfbm9fc3VjaF9hZGFwdGVy KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVz dWx0IGVycm9yX25vX3N1Y2hfc2VydmljZShEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3Nh Z2UgKm1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9ub3RfYXZhaWxhYmxlKERCdXNDb25u ZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9y X25vdF9zdXBwb3J0ZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwog REJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfcmVxdWVzdF9kZWZlcnJlZChEQnVzQ29ubmVjdGlvbiAq Y29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9ub3RfY29u bmVjdGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKLURCdXNIYW5k bGVyUmVzdWx0IGVycm9yX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVz TWVzc2FnZSAqbXNnLCBjb25zdCBjaGFyICpzdHIpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jf Y2FuY2VsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGNvbnN0IGNo YXIgKnN0cik7CisvKiBVc2VkIG9ubHkgZm9yIGhjaWQgZGV2aWNlIGF1ZGl0IGZlYXR1cmUgKi8K IERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX25vdF9pbl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlvbiAq Y29ubiwgREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hhciAqc3RyKTsKIERCdXNIYW5kbGVyUmVz dWx0IGVycm9yX3Vuc3VwcG9ydGVkX21ham9yX2NsYXNzKERCdXNDb25uZWN0aW9uICpjb25uLCBE QnVzTWVzc2FnZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2Nvbm5lY3Rpb25fYXR0 ZW1wdF9mYWlsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGludCBl cnIpOwogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfYm9uZGluZ19hbHJlYWR5X2V4aXN0cyhEQnVz Q29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CiBEQnVzSGFuZGxlclJlc3VsdCBl cnJvcl9ib25kaW5nX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVz c2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2JvbmRpbmdfaW5fcHJvZ3Jlc3Mo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwogREJ1c0hhbmRsZXJSZXN1 bHQgZXJyb3JfYm9uZGluZ19ub3RfaW5fcHJvZ3Jlc3MoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERC dXNNZXNzYWdlICptc2cpOwogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfYXV0aGVudGljYXRpb25f Y2FuY2VsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwogREJ1c0hh bmRsZXJSZXN1bHQgZXJyb3JfZGlzY292ZXJfaW5fcHJvZ3Jlc3MoREJ1c0Nvbm5lY3Rpb24gKmNv bm4sIERCdXNNZXNzYWdlICptc2cpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfY29ubmVjdF9p bl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7Ci1EQnVz SGFuZGxlclJlc3VsdCBlcnJvcl9jb25uZWN0X25vdF9pbl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlv biAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CiBEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9yZWNv cmRfZG9lc19ub3RfZXhpc3QoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cp OwogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfcGFzc2tleV9hZ2VudF9hbHJlYWR5X2V4aXN0cyhE QnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CiBEQnVzSGFuZGxlclJlc3Vs dCBlcnJvcl9wYXNza2V5X2FnZW50X2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25u LCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX2F1dGhfYWdlbnRf YWxyZWFkeV9leGlzdHMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwog REJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfYXV0aF9hZ2VudF9kb2VzX25vdF9leGlzdChEQnVzQ29u bmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJv cl9iaW5kaW5nX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2Fn ZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVzdWx0IGVycm9yX3NlcnZpY2VfYWxyZWFkeV9leGlzdHMo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwogREJ1c0hhbmRsZXJSZXN1 bHQgZXJyb3Jfc2VydmljZV9kb2VzX25vdF9leGlzdChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1 c01lc3NhZ2UgKm1zZyk7CiBEQnVzSGFuZGxlclJlc3VsdCBlcnJvcl9zZXJ2aWNlX3NlYXJjaF9p bl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7Ci1EQnVz SGFuZGxlclJlc3VsdCBlcnJvcl9jb25uZWN0X2NhbmNlbGVkKERCdXNDb25uZWN0aW9uICpjb25u LCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVyUmVzdWx0IGVycm9yX3NkcF9mYWlsZWQo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2csIGludCBlcnIpOwogREJ1c0hh bmRsZXJSZXN1bHQgZXJyb3JfYXVkaXRfYWxyZWFkeV9leGlzdHMoREJ1c0Nvbm5lY3Rpb24gKmNv bm4sIERCdXNNZXNzYWdlICptc2cpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfdHJ1c3RlZF9k ZXZpY2VfYWxyZWFkeV9leGlzdHMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICpt c2cpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3JfdHJ1c3RlZF9kZXZpY2VfZG9lc19ub3RfZXhp c3RzKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKIERCdXNIYW5kbGVy UmVzdWx0IGVycm9yX2Rpc2Nvbm5lY3RfaW5fcHJvZ3Jlc3MoREJ1c0Nvbm5lY3Rpb24gKmNvbm4s IERCdXNNZXNzYWdlICptc2cpOwogREJ1c0hhbmRsZXJSZXN1bHQgZXJyb3Jfc2VydmljZV9zdGFy dF9pbl9wcm9ncmVzcyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7CmRp ZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGlscy9oY2lkL2RidXMtaGNp LmMgdXRpbHMyL2hjaWQvZGJ1cy1oY2kuYwotLS0gdXRpbHMvaGNpZC9kYnVzLWhjaS5jCTIwMDct MTAtMjcgMTQ6MzI6NTQuMDAwMDAwMDAwICswMDAwCisrKyB1dGlsczIvaGNpZC9kYnVzLWhjaS5j CTIwMDctMTAtMjggMTc6NTQ6MTcuMDAwMDAwMDAwICswMDAwCkBAIC01MCw2ICs1MCw3IEBACiAj aW5jbHVkZSAidGV4dGZpbGUuaCIKICNpbmNsdWRlICJtYW5hZ2VyLmgiCiAjaW5jbHVkZSAiYWRh cHRlci5oIgorI2luY2x1ZGUgImNvbW1vbi1lcnJvci5oIgogI2luY2x1ZGUgImRidXMtaGVscGVy LmgiCiAjaW5jbHVkZSAiZGJ1cy1jb21tb24uaCIKICNpbmNsdWRlICJkYnVzLWVycm9yLmgiCmRp ZmYgLXggRW50cmllcyAteCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGlscy9oY2lkL2RidXMtc2Rw LmMgdXRpbHMyL2hjaWQvZGJ1cy1zZHAuYwotLS0gdXRpbHMvaGNpZC9kYnVzLXNkcC5jCTIwMDct MTAtMjcgMTQ6MzI6NTQuMDAwMDAwMDAwICswMDAwCisrKyB1dGlsczIvaGNpZC9kYnVzLXNkcC5j CTIwMDctMTAtMjcgMjA6NTQ6MDAuMDAwMDAwMDAwICswMDAwCkBAIC01Nyw2ICs1Nyw3IEBACiAj aW5jbHVkZSAiZGJ1cy1oY2kuaCIKICNpbmNsdWRlICJkYnVzLWNvbW1vbi5oIgogI2luY2x1ZGUg ImRidXMtZXJyb3IuaCIKKyNpbmNsdWRlICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJkYnVz LXNkcC5oIgogI2luY2x1ZGUgInNkcC14bWwuaCIKIApAQCAtNDM4LDcgKzQzOSw3IEBACiAKIGZh aWxlZDoKIAlpZiAoZXJyKSB7Ci0JCWVycm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwg ZXJyKTsKKwkJZXJyb3JfZmFpbGVkX2Vycm5vKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBlcnIpOwog CQl0cmFuc2FjdGlvbl9jb250ZXh0X2ZyZWUoY3R4dCwgRkFMU0UpOwogCX0KIApAQCAtNDYzLDEy ICs0NjQsMTIgQEAKIAkJaW50IHNkcF9lcnIgPSBzZHBfZ2V0X2Vycm9yKGN0eHQtPnNlc3Npb24p OwogCQlpZiAoc2RwX2VyciA8IDApIHsKIAkJCWVycm9yKCJzZWFyY2ggZmFpbGVkOiBJbnZhbGlk IHNlc3Npb24hIik7Ci0JCQllcnJvcl9mYWlsZWQoY3R4dC0+Y29ubiwgY3R4dC0+cnEsIEVJTlZB TCk7CisJCQllcnJvcl9mYWlsZWRfZXJybm8oY3R4dC0+Y29ubiwgY3R4dC0+cnEsIEVJTlZBTCk7 CiAJCQlnb3RvIGZhaWxlZDsKIAkJfQogCiAJCWVycm9yKCJzZWFyY2ggZmFpbGVkOiAlcyAoJWQp Iiwgc3RyZXJyb3Ioc2RwX2VyciksIHNkcF9lcnIpOwotCQllcnJvcl9mYWlsZWQoY3R4dC0+Y29u biwgY3R4dC0+cnEsIHNkcF9lcnIpOworCQllcnJvcl9mYWlsZWRfZXJybm8oY3R4dC0+Y29ubiwg Y3R4dC0+cnEsIHNkcF9lcnIpOwogCQlnb3RvIGZhaWxlZDsKIAl9CiAKQEAgLTQ4MCw3ICs0ODEs NyBAQAogCS8qIGNoZWNrIHJlc3BvbnNlIFBEVSBJRCAqLwogCWlmICh0eXBlICE9IFNEUF9TVkNf QVRUUl9SU1ApIHsKIAkJZXJyb3IoIlNEUCBlcnJvcjogJXMgKCVkKSIsIHN0cmVycm9yKEVQUk9U TyksIEVQUk9UTyk7Ci0JCWVycm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwgRVBST1RP KTsKKwkJZXJyb3JfZmFpbGVkX2Vycm5vKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBFUFJPVE8pOwog CQlnb3RvIGZhaWxlZDsKIAl9CiAKQEAgLTUzNSwxMiArNTM2LDEyIEBACiAJCWludCBzZHBfZXJy ID0gc2RwX2dldF9lcnJvcihjdHh0LT5zZXNzaW9uKTsKIAkJaWYgKHNkcF9lcnIgPCAwKSB7CiAJ CQllcnJvcigic2VhcmNoIGZhaWxlZDogSW52YWxpZCBzZXNzaW9uISIpOwotCQkJZXJyb3JfZmFp bGVkKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBFSU5WQUwpOworCQkJZXJyb3JfZmFpbGVkX2Vycm5v KGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBFSU5WQUwpOwogCQkJZ290byBmYWlsZWQ7CiAJCX0KIAog CQllcnJvcigic2VhcmNoIGZhaWxlZDogJXMgKCVkKSIsIHN0cmVycm9yKHNkcF9lcnIpLCBzZHBf ZXJyKTsKLQkJZXJyb3JfZmFpbGVkKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBzZHBfZXJyKTsKKwkJ ZXJyb3JfZmFpbGVkX2Vycm5vKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBzZHBfZXJyKTsKIAkJZ290 byBmYWlsZWQ7CiAJfQogCkBAIC01NTIsNyArNTUzLDcgQEAKIAkvKiBjaGVjayByZXNwb25zZSBQ RFUgSUQgKi8KIAlpZiAodHlwZSAhPSBTRFBfU1ZDX0FUVFJfUlNQKSB7CiAJCWVycm9yKCJTRFAg ZXJyb3I6ICVzICglZCkiLCBzdHJlcnJvcihFUFJPVE8pLCBFUFJPVE8pOwotCQllcnJvcl9mYWls ZWQoY3R4dC0+Y29ubiwgY3R4dC0+cnEsIEVQUk9UTyk7CisJCWVycm9yX2ZhaWxlZF9lcnJubyhj dHh0LT5jb25uLCBjdHh0LT5ycSwgRVBST1RPKTsKIAkJZ290byBmYWlsZWQ7CiAJfQogCkBAIC02 MDksMTIgKzYxMCwxMiBAQAogCQlpbnQgc2RwX2VyciA9IHNkcF9nZXRfZXJyb3IoY3R4dC0+c2Vz c2lvbik7CiAJCWlmIChzZHBfZXJyIDwgMCkgewogCQkJZXJyb3IoInNlYXJjaCBmYWlsZWQ6IElu dmFsaWQgc2Vzc2lvbiEiKTsKLQkJCWVycm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwg RUlOVkFMKTsKKwkJCWVycm9yX2ZhaWxlZF9lcnJubyhjdHh0LT5jb25uLCBjdHh0LT5ycSwgRUlO VkFMKTsKIAkJCWdvdG8gZmFpbGVkOwogCQl9CiAKIAkJZXJyb3IoInNlYXJjaCBmYWlsZWQ6ICVz ICglZCkiLCBzdHJlcnJvcihzZHBfZXJyKSwgc2RwX2Vycik7Ci0JCWVycm9yX2ZhaWxlZChjdHh0 LT5jb25uLCBjdHh0LT5ycSwgc2RwX2Vycik7CisJCWVycm9yX2ZhaWxlZF9lcnJubyhjdHh0LT5j b25uLCBjdHh0LT5ycSwgc2RwX2Vycik7CiAJCWdvdG8gZmFpbGVkOwogCX0KIApAQCAtNjI2LDcg KzYyNyw3IEBACiAJLyogY2hlY2sgcmVzcG9uc2UgUERVIElEICovCiAJaWYgKHR5cGUgIT0gU0RQ X1NWQ19TRUFSQ0hfUlNQKSB7CiAJCWVycm9yKCJTRFAgZXJyb3I6ICVzICglZCkiLCBzdHJlcnJv cihFUFJPVE8pLCBFUFJPVE8pOwotCQllcnJvcl9mYWlsZWQoY3R4dC0+Y29ubiwgY3R4dC0+cnEs IEVQUk9UTyk7CisJCWVycm9yX2ZhaWxlZF9lcnJubyhjdHh0LT5jb25uLCBjdHh0LT5ycSwgRVBS T1RPKTsKIAkJZ290byBmYWlsZWQ7CiAJfQogCkBAIC03NDEsMTIgKzc0MiwxMiBAQAogCQlpbnQg c2RwX2VyciA9IHNkcF9nZXRfZXJyb3IoY3R4dC0+c2Vzc2lvbik7CiAJCWlmIChzZHBfZXJyIDwg MCkgewogCQkJZXJyb3IoInNlYXJjaCBmYWlsZWQ6IEludmFsaWQgc2Vzc2lvbiEiKTsKLQkJCWVy cm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwgRUlOVkFMKTsKKwkJCWVycm9yX2ZhaWxl ZF9lcnJubyhjdHh0LT5jb25uLCBjdHh0LT5ycSwgRUlOVkFMKTsKIAkJCWdvdG8gZmFpbGVkOwog CQl9CiAKIAkJZXJyb3IoInNlYXJjaCBmYWlsZWQ6ICVzICglZCkiLCBzdHJlcnJvcihzZHBfZXJy KSwgc2RwX2Vycik7Ci0JCWVycm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwgc2RwX2Vy cik7CisJCWVycm9yX2ZhaWxlZF9lcnJubyhjdHh0LT5jb25uLCBjdHh0LT5ycSwgc2RwX2Vycik7 CiAJCWdvdG8gZmFpbGVkOwogCX0KIApAQCAtNzU4LDcgKzc1OSw3IEBACiAJLyogQ2hlY2sgcmVz cG9uc2UgUERVIElEICovCiAJaWYgKHR5cGUgIT0gU0RQX1NWQ19TRUFSQ0hfQVRUUl9SU1ApIHsK IAkJZXJyb3IoIlNEUCBlcnJvcjogJXMgKCVkKSIsIHN0cmVycm9yKEVQUk9UTyksIEVQUk9UTyk7 Ci0JCWVycm9yX2ZhaWxlZChjdHh0LT5jb25uLCBjdHh0LT5ycSwgRVBST1RPKTsKKwkJZXJyb3Jf ZmFpbGVkX2Vycm5vKGN0eHQtPmNvbm4sIGN0eHQtPnJxLCBFUFJPVE8pOwogCQlnb3RvIGZhaWxl ZDsKIAl9CiAKQEAgLTEwMTYsNyArMTAxNyw3IEBACiAJCQlEQlVTX1RZUEVfU1RSSU5HLCAmZHN0 LAogCQkJREJVU19UWVBFX1VJTlQzMiwgJmhhbmRsZSwKIAkJCURCVVNfVFlQRV9JTlZBTElEKSkK LQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBl cnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGZpbmRfcGVu ZGluZ19jb25uZWN0KGRzdCkpCiAJCXJldHVybiBlcnJvcl9zZXJ2aWNlX3NlYXJjaF9pbl9wcm9n cmVzcyhjb25uLCBtc2cpOwpAQCAtMTAyOCw3ICsxMDI5LDcgQEAKIAlpZiAoIWNvbm5lY3RfcmVx dWVzdChjb25uLCBtc2csIGFkYXB0ZXItPmRldl9pZCwKIAkJCQlkc3QsIGNiLCAmZXJyKSkgewog CQllcnJvcigiU2VhcmNoIHJlcXVlc3QgZmFpbGVkOiAlcyAoJWQpIiwgc3RyZXJyb3IoZXJyKSwg ZXJyKTsKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGVycik7CisJCXJldHVybiBl cnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBlcnIpOwogCX0KIAogCXJldHVybiBEQlVTX0hB TkRMRVJfUkVTVUxUX0hBTkRMRUQ7CkBAIC0xMDg5LDEzICsxMDkwLDEzIEBACiAJCQlEQlVTX1RZ UEVfU1RSSU5HLCAmZHN0LAogCQkJREJVU19UWVBFX1NUUklORywgJnN2YywKIAkJCURCVVNfVFlQ RV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7 CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJ aWYgKHN0cmxlbihzdmMpID4gMCkgewogCQkvKiBDaGVjayBpZiBpdCBpcyBhIHNlcnZpY2UgbmFt ZSBzdHJpbmcgKi8KIAkJaWYgKHN0cjJ1dWlkKCZ1dWlkLCBzdmMpIDwgMCkgewogCQkJZXJyb3Io IkludmFsaWQgc2VydmljZSBjbGFzcyBuYW1lIik7Ci0JCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9h cmd1bWVudHMoY29ubiwgbXNnKTsKKwkJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2csIE5VTEwpOwogCQl9CiAJfQogCkBAIC0xMTA1LDcgKzExMDYsNyBAQAogCWlmICgh Y29ubmVjdF9yZXF1ZXN0KGNvbm4sIG1zZywgYWRhcHRlci0+ZGV2X2lkLAogCQkJCWRzdCwgcmVt b3RlX3N2Y19oYW5kbGVzX2Nvbm5fY2IsICZlcnIpKSB7CiAJCWVycm9yKCJTZWFyY2ggcmVxdWVz dCBmYWlsZWQ6ICVzICglZCkiLCBzdHJlcnJvcihlcnIpLCBlcnIpOwotCQlyZXR1cm4gZXJyb3Jf ZmFpbGVkKGNvbm4sIG1zZywgZXJyKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25u LCBtc2csIGVycik7CiAJfQogCiAJcmV0dXJuIERCVVNfSEFORExFUl9SRVNVTFRfSEFORExFRDsK QEAgLTExMjMsNyArMTEyNCw3IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBO VUxMLAogCQkJREJVU19UWVBFX1NUUklORywgJmRzdCwKIAkJCURCVVNfVFlQRV9JTlZBTElEKSkK LQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBl cnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJaWYgKGZpbmRfcGVu ZGluZ19jb25uZWN0KGRzdCkpCiAJCXJldHVybiBlcnJvcl9zZXJ2aWNlX3NlYXJjaF9pbl9wcm9n cmVzcyhjb25uLCBtc2cpOwpAQCAtMTEzMSw3ICsxMTMyLDcgQEAKIAlpZiAoIWNvbm5lY3RfcmVx dWVzdChjb25uLCBtc2csIGFkYXB0ZXItPmRldl9pZCwKIAkJCQlkc3QsIHJlbW90ZV9zdmNfaWRl bnRpZmllcnNfY29ubl9jYiwgJmVycikpIHsKIAkJZXJyb3IoIlNlYXJjaCByZXF1ZXN0IGZhaWxl ZDogJXMgKCVkKSIsIHN0cmVycm9yKGVyciksIGVycik7Ci0JCXJldHVybiBlcnJvcl9mYWlsZWQo Y29ubiwgbXNnLCBlcnIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywg ZXJyKTsKIAl9CiAKIAlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwpAQCAtMTE0 OSw3ICsxMTUwLDcgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5VTEwsCiAJ CQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVzcywKIAkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJ cmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJv cl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJcmVwbHkgPSBkYnVzX21l c3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpkaWZmIC14IEVudHJp ZXMgLXggTWFrZWZpbGUuaW4gLXUgLXIgLU4gdXRpbHMvaGNpZC9kYnVzLXNlY3VyaXR5LmMgdXRp bHMyL2hjaWQvZGJ1cy1zZWN1cml0eS5jCi0tLSB1dGlscy9oY2lkL2RidXMtc2VjdXJpdHkuYwky MDA3LTEwLTI3IDE0OjMyOjU0LjAwMDAwMDAwMCArMDAwMAorKysgdXRpbHMyL2hjaWQvZGJ1cy1z ZWN1cml0eS5jCTIwMDctMTAtMjcgMjA6NTQ6MDAuMDAwMDAwMDAwICswMDAwCkBAIC01MCw2ICs1 MCw3IEBACiAjaW5jbHVkZSAiZGJ1cy1jb21tb24uaCIKICNpbmNsdWRlICJkYnVzLXNlcnZpY2Uu aCIKICNpbmNsdWRlICJkYnVzLWVycm9yLmgiCisjaW5jbHVkZSAiY29tbW9uLWVycm9yLmgiCiAj aW5jbHVkZSAiZGJ1cy1zZWN1cml0eS5oIgogI2luY2x1ZGUgImRidXMtaGNpLmgiCiAKQEAgLTI1 OSw3ICsyNjAsNyBAQAogCQkJCURCVVNfVFlQRV9TVFJJTkcsICZwYXRoLAogCQkJCURCVVNfVFlQ RV9TVFJJTkcsICZhZGRyLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2Fy Z3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJbWVtc2V0KCZyZWYsIDAsIHNpemVvZihyZWYp KTsKIApAQCAtMzE0LDcgKzMxNSw3IEBACiAJCQkJREJVU19UWVBFX1NUUklORywgJnBhdGgsCiAJ CQkJREJVU19UWVBFX1NUUklORywgJmFkZHIsCiAJCQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQly ZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAltZW1zZXQoJnJlZiwgMCwg c2l6ZW9mKHJlZikpOwogCkBAIC0zNTQsNyArMzU1LDcgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9n ZXRfYXJncyhtc2csIE5VTEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJnBhdGgsCiAJCQkJREJV U19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwg bXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7 CiAKIAlkZWZhdWx0X2FnZW50ID0gcGFzc2tleV9hZ2VudF9uZXcoTlVMTCwgY29ubiwgZGJ1c19t ZXNzYWdlX2dldF9zZW5kZXIobXNnKSwKIAkJCQkJCXBhdGgsIE5VTEwpOwpAQCAtMzk1LDcgKzM5 Niw3IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNf VFlQRV9TVFJJTkcsICZwYXRoLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVy cm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlk X2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJbmFtZSA9IGRidXNfbWVzc2FnZV9nZXRf c2VuZGVyKG1zZyk7CiAKQEAgLTU3MCw3ICs1NzEsNyBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dl dF9hcmdzKG1zZywgTlVMTCwKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmcGF0aCwKIAkJCQlEQlVT X1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBt c2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsK IAogCWRlZmF1bHRfYXV0aF9hZ2VudCA9IGF1dGhfYWdlbnRfbmV3KGNvbm4sCiAJCQkJCWRidXNf bWVzc2FnZV9nZXRfc2VuZGVyKG1zZyksIHBhdGgpOwpAQCAtNjExLDcgKzYxMiw3IEBACiAJaWYg KCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcs ICZwYXRoLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRf YXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2csIE5VTEwpOwogCiAJbmFtZSA9IGRidXNfbWVzc2FnZV9nZXRfc2VuZGVyKG1zZyk7 CiAKZGlmZiAteCBFbnRyaWVzIC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2hjaWQvZGJ1 cy1zZXJ2aWNlLmMgdXRpbHMyL2hjaWQvZGJ1cy1zZXJ2aWNlLmMKLS0tIHV0aWxzL2hjaWQvZGJ1 cy1zZXJ2aWNlLmMJMjAwNy0xMC0yNyAxNDozMjo1NC4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxz Mi9oY2lkL2RidXMtc2VydmljZS5jCTIwMDctMTAtMjcgMjA6NTQ6MDAuMDAwMDAwMDAwICswMDAw CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAic2VydmVyLmgiCiAjaW5jbHVkZSAiZGJ1cy1j b21tb24uaCIKICNpbmNsdWRlICJkYnVzLWVycm9yLmgiCisjaW5jbHVkZSAiY29tbW9uLWVycm9y LmgiCiAjaW5jbHVkZSAibWFuYWdlci5oIgogI2luY2x1ZGUgImFkYXB0ZXIuaCIKICNpbmNsdWRl ICJkYnVzLXNlcnZpY2UuaCIKQEAgLTMyNiw3ICszMjcsNyBAQAogCiAJaWYgKHNlcnZpY2UtPmFj dGlvbikgewogCQlpZiAoY29ubikKLQkJCWVycm9yX2ZhaWxlZChjb25uLCBzZXJ2aWNlLT5hY3Rp b24sIGVjb2RlKTsKKwkJCWVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBzZXJ2aWNlLT5hY3Rpb24s IGVjb2RlKTsKIAkJZGJ1c19tZXNzYWdlX3VucmVmKHNlcnZpY2UtPmFjdGlvbik7CiAJCXNlcnZp Y2UtPmFjdGlvbiA9IE5VTEw7CiAJfQpAQCAtNDY3LDEwICs0NjgsMTAgQEAKIAlzdHJ1Y3Qgc2Vy dmljZSAqc2VydmljZSA9IGRhdGE7CiAKIAlpZiAoc2VydmljZS0+ZXh0ZXJuYWwgfHwgc2Vydmlj ZS0+cGlkKQotCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgRUFMUkVBRFkpOworCQly ZXR1cm4gZXJyb3JfZmFpbGVkX2Vycm5vKGNvbm4sIG1zZywgRUFMUkVBRFkpOwogCiAJaWYgKHNl cnZpY2Vfc3RhcnQoc2VydmljZSwgY29ubikgPCAwKQotCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNv bm4sIG1zZywgRU5PRVhFQyk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNn LCBFTk9FWEVDKTsKIAogCXNlcnZpY2UtPmFjdGlvbiA9IGRidXNfbWVzc2FnZV9yZWYobXNnKTsK IApAQCAtNDgzLDcgKzQ4NCw3IEBACiAJc3RydWN0IHNlcnZpY2UgKnNlcnZpY2UgID0gZGF0YTsK IAogCWlmIChzZXJ2aWNlLT5leHRlcm5hbCB8fCAhc2VydmljZS0+YnVzX25hbWUpCi0JCXJldHVy biBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCBFUEVSTSk7CisJCXJldHVybiBlcnJvcl9mYWlsZWRf ZXJybm8oY29ubiwgbXNnLCBFUEVSTSk7CiAKIAlzdG9wX3NlcnZpY2Uoc2VydmljZSwgRkFMU0Up OwogCkBAIC01MzksMTAgKzU0MCwxMCBAQAogCWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1z ZywgTlVMTCwKIAkJCURCVVNfVFlQRV9TVFJJTkcsICZhZGRyZXNzLAogCQkJREJVU19UWVBFX0lO VkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJ cmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAo Y2hlY2tfYWRkcmVzcyhhZGRyZXNzKSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3Vt ZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwg bXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1z Zyk7CiAJaWYgKCFyZXBseSkKQEAgLTYwMCwxMCArNjAxLDEwIEBACiAJaWYgKCFkYnVzX21lc3Nh Z2VfZ2V0X2FyZ3MobXNnLCBOVUxMLAogCQkJREJVU19UWVBFX1NUUklORywgJmFkZHJlc3MsCiAJ CQlEQlVTX1RZUEVfSU5WQUxJRCkpCi0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhj b25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBO VUxMKTsKIAogCWlmIChjaGVja19hZGRyZXNzKGFkZHJlc3MpIDwgMCkKLQkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2Fy Z3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJdHJ1c3RlZCA9IHJlYWRfdHJ1c3QoQkRBRERS X0FOWSwgYWRkcmVzcywgc2VydmljZS0+aWRlbnQpOwogCkBAIC02MjgsMTAgKzYyOSwxMCBAQAog CWlmICghZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgTlVMTCwKIAkJCURCVVNfVFlQRV9TVFJJ TkcsICZhZGRyZXNzLAogCQkJREJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52 YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1l bnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyZXNzKSA8IDAp Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4g ZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXJlcGx5ID0gZGJ1 c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJaWYgKCFyZXBseSkKZGlmZiAteCBF bnRyaWVzIC14IE1ha2VmaWxlLmluIC11IC1yIC1OIHV0aWxzL2hjaWQvZGJ1cy10ZXN0LmMgdXRp bHMyL2hjaWQvZGJ1cy10ZXN0LmMKLS0tIHV0aWxzL2hjaWQvZGJ1cy10ZXN0LmMJMjAwNy0xMC0y NyAxNDozMjo1NS4wMDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9oY2lkL2RidXMtdGVzdC5jCTIw MDctMTAtMjcgMjA6NTQ6MDAuMDAwMDAwMDAwICswMDAwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j bHVkZSAiYWRhcHRlci5oIgogI2luY2x1ZGUgImRidXMtaGNpLmgiCiAjaW5jbHVkZSAiZGJ1cy1l cnJvci5oIgorI2luY2x1ZGUgImNvbW1vbi1lcnJvci5oIgogI2luY2x1ZGUgImRidXMtdGVzdC5o IgogCiAjZGVmaW5lIEwySU5GT19USU1FT1VUICgyICogMTAwMCkKQEAgLTQyNCwxMSArNDI1LDEx IEBACiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnIpKSB7CiAJCWVycm9yKCJDYW4ndCBleHRy YWN0IG1lc3NhZ2UgYXJndW1lbnRzOiVzIiwgZXJyLm1lc3NhZ2UpOwogCQlkYnVzX2Vycm9yX2Zy ZWUoJmVycik7Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOwor CQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAl9CiAK IAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyZXNzKSA8IDApCi0JCXJldHVybiBlcnJvcl9pbnZhbGlk X2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubiwgbXNnLCBOVUxMKTsKIAogCXN0cjJiYShhZGRyZXNzLCAmcGVlcik7CiAJc3RyMmJhKGFk YXB0ZXItPmFkZHJlc3MsICZsb2NhbCk7CkBAIC01MDcsMTEgKzUwOCwxMSBAQAogCWlmIChkYnVz X2Vycm9yX2lzX3NldCgmZXJyKSkgewogCQllcnJvcigiQ2FuJ3QgZXh0cmFjdCBtZXNzYWdlIGFy Z3VtZW50czolcyIsIGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZlcnIpOwotCQly ZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAJfQogCiAJaWYgKGNoZWNrX2Fk ZHJlc3MoYWRkcmVzcykgPCAwKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAKIAlzdHIyYmEoYWRkcmVzcywgJnBlZXIpOwogCXN0cjJiYShhZGFwdGVyLT5hZGRyZXNz LCAmbG9jYWwpOwpAQCAtNTY3LDExICs1NjgsMTEgQEAKIAlpZiAoZGJ1c19lcnJvcl9pc19zZXQo JmVycikpIHsKIAkJZXJyb3IoIkNhbid0IGV4dHJhY3QgbWVzc2FnZSBhcmd1bWVudHM6JXMiLCBl cnIubWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZXJyKTsKLQkJcmV0dXJuIGVycm9yX2lu dmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3Vt ZW50cyhjb25uLCBtc2csIE5VTEwpOwogCX0KIAogCWlmIChjaGVja19hZGRyZXNzKGFkZHJlc3Mp IDwgMCkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJl dHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJc3RyMmJh KGFkZHJlc3MsICZwZWVyKTsKIAlzdHIyYmEoYWRhcHRlci0+YWRkcmVzcywgJmxvY2FsKTsKQEAg LTYwOSwxMSArNjEwLDExIEBACiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZlcnIpKSB7CiAJCWVy cm9yKCJDYW4ndCBleHRyYWN0IG1lc3NhZ2UgYXJndW1lbnRzOiVzIiwgZXJyLm1lc3NhZ2UpOwog CQlkYnVzX2Vycm9yX2ZyZWUoJmVycik7Ci0JCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNn LCBOVUxMKTsKIAl9CiAKIAlpZiAoY2hlY2tfYWRkcmVzcyhhZGRyZXNzKSA8IDApCi0JCXJldHVy biBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfaW52 YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCXN0cjJiYShhZGRyZXNzLCAmcGVl cik7CiAJc3RyMmJhKGFkYXB0ZXItPmFkZHJlc3MsICZsb2NhbCk7CmRpZmYgLXggRW50cmllcyAt eCBNYWtlZmlsZS5pbiAtdSAtciAtTiB1dGlscy9oY2lkL21hbmFnZXIuYyB1dGlsczIvaGNpZC9t YW5hZ2VyLmMKLS0tIHV0aWxzL2hjaWQvbWFuYWdlci5jCTIwMDctMTAtMjcgMTQ6MzI6NTUuMDAw MDAwMDAwICswMDAwCisrKyB1dGlsczIvaGNpZC9tYW5hZ2VyLmMJMjAwNy0xMC0yNyAyMDo1NDow MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJkYnVzLmgiCiAj aW5jbHVkZSAiZGJ1cy1oZWxwZXIuaCIKICNpbmNsdWRlICJkYnVzLWNvbW1vbi5oIgorI2luY2x1 ZGUgImNvbW1vbi1lcnJvci5oIgogI2luY2x1ZGUgImRidXMtZXJyb3IuaCIKICNpbmNsdWRlICJk YnVzLWhjaS5oIgogI2luY2x1ZGUgImRidXMtc2VydmljZS5oIgpAQCAtNjcsNyArNjgsNyBAQAog CWRidXNfdWludDMyX3QgdmVyc2lvbiA9IDA7CiAKIAlpZiAoIWRidXNfbWVzc2FnZV9oYXNfc2ln bmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFMSURfQVNfU1RSSU5HKSkKLQkJcmV0dXJuIGVycm9y X2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2Fy Z3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21l dGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtODYsNyArODcsNyBAQAogCWNoYXIg cGF0aFtNQVhfUEFUSF9MRU5HVEhdLCAqcGF0aF9wdHIgPSBwYXRoOwogCiAJaWYgKCFkYnVzX21l c3NhZ2VfaGFzX3NpZ25hdHVyZShtc2csIERCVVNfVFlQRV9JTlZBTElEX0FTX1NUUklORykpCi0J CXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2cpOworCQlyZXR1cm4gZXJy b3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnLCBOVUxMKTsKIAogCWlmIChkZWZhdWx0X2Fk YXB0ZXJfaWQgPCAwKQogCQlyZXR1cm4gZXJyb3Jfbm9fc3VjaF9hZGFwdGVyKGNvbm4sIG1zZyk7 CkBAIC0xNTksNyArMTYwLDcgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9nZXRfYXJncyhtc2csIE5V TEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJnBhdHRlcm4sCiAJCQkJREJVU19UWVBFX0lOVkFM SUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0 dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVMTCk7CiAKIAkvKiBoY2lf ZGV2aWQoKSB3b3VsZCBtYWtlIHNlbnNlIHRvIHVzZSBoZXJlLCBleGNlcHQgaXQKIAkgICBpcyBy ZXN0cmljdGVkIHRvIGRldmljZXMgd2hpY2ggYXJlIHVwICovCkBAIC0yMDAsMTEgKzIwMSwxMSBA QAogCWludCBpLCBzazsKIAogCWlmICghZGJ1c19tZXNzYWdlX2hhc19zaWduYXR1cmUobXNnLCBE QlVTX1RZUEVfSU5WQUxJRF9BU19TVFJJTkcpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1 bWVudHMoY29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4s IG1zZywgTlVMTCk7CiAKIAlzayA9IHNvY2tldChBRl9CTFVFVE9PVEgsIFNPQ0tfUkFXLCBCVFBS T1RPX0hDSSk7CiAJaWYgKHNrIDwgMCkKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2cs IGVycm5vKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZF9lcnJubyhjb25uLCBtc2csIGVycm5vKTsK IAogCWRsID0gZ19tYWxsb2MwKEhDSV9NQVhfREVWICogc2l6ZW9mKCpkcikgKyBzaXplb2YoKmRs KSk7CiAKQEAgLTIxNSw3ICsyMTYsNyBAQAogCQlpbnQgZXJyID0gZXJybm87CiAJCWNsb3NlKHNr KTsKIAkJZ19mcmVlKGRsKTsKLQkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIGVycik7 CisJCXJldHVybiBlcnJvcl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBlcnIpOwogCX0KIAogCWRy ID0gZGwtPmRldl9yZXE7CkBAIC0yNjcsNyArMjY4LDcgQEAKIAlpZiAoIWRidXNfbWVzc2FnZV9n ZXRfYXJncyhtc2csIE5VTEwsCiAJCQkJREJVU19UWVBFX1NUUklORywgJnBhdHRlcm4sCiAJCQkJ REJVU19UWVBFX0lOVkFMSUQpKQotCQlyZXR1cm4gZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29u biwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZywgTlVM TCk7CiAKIAlzZXJ2aWNlID0gc2VhcmNoX3NlcnZpY2UoY29ubiwgcGF0dGVybik7CiAJaWYgKCFz ZXJ2aWNlKQpAQCAtMjkxLDcgKzI5Miw3IEBACiAJREJ1c01lc3NhZ2VJdGVyIGFycmF5X2l0ZXI7 CiAKIAlpZiAoIWRidXNfbWVzc2FnZV9oYXNfc2lnbmF0dXJlKG1zZywgREJVU19UWVBFX0lOVkFM SURfQVNfU1RSSU5HKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1z Zyk7CisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwog CiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJl cGx5KQpAQCAtMzE3LDcgKzMxOCw3IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNn LCBOVUxMLAogCQkJCURCVVNfVFlQRV9TVFJJTkcsICZwYXR0ZXJuLAogCQkJCURCVVNfVFlQRV9J TlZBTElEKSkKLQkJcmV0dXJuIGVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1zZyk7CisJ CXJldHVybiBlcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uLCBtc2csIE5VTEwpOwogCiAJc2Vy dmljZSA9IHNlYXJjaF9zZXJ2aWNlKGNvbm4sIHBhdHRlcm4pOwogCWlmICghc2VydmljZSkKQEAg LTM0MSw3ICszNDIsNyBAQAogCQlyZXR1cm4gZXJyb3Jfc2VydmljZV9zdGFydF9pbl9wcm9ncmVz cyhjb25uLCBtc2cpOwogCiAJaWYgKHNlcnZpY2Vfc3RhcnQoc2VydmljZSwgY29ubikgPCAwKQot CQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgRU5PRVhFQyk7CisJCXJldHVybiBlcnJv cl9mYWlsZWRfZXJybm8oY29ubiwgbXNnLCBFTk9FWEVDKTsKIAogCXNlcnZpY2UtPmFjdGlvbiA9 IGRidXNfbWVzc2FnZV9yZWYobXNnKTsKIAo= ---MOQ119359450147d90156c263a7ec91b5bfbcc195a479--