From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 05/14] x86/HVM: eliminate custom #MF/#XM handling Date: Thu, 15 Mar 2018 07:06:36 -0600 Message-ID: <5AAA7DEC02000078001B2262@prv-mh.provo.novell.com> References: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewSal-0002Em-6f for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 13:06:47 +0000 In-Reply-To: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org VXNlIHRoZSBnZW5lcmljIHN0dWIgZXhjZXB0aW9uIGhhbmRsaW5nIGluc3RlYWQuCgpTaWduZWQt b2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBQYXVs IER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpBY2tlZC1ieTogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCnY0OiBSZS1iYXNlLgp2MzogUmUtYmFz ZS4KdjI6IFJlLWJhc2UuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxh dGUuYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuYwpAQCAtMTkz LDggKzE5Myw2IEBAIGludCBlbXVsX3Rlc3RfcmVhZF94Y3IoCiB9CiAKIGludCBlbXVsX3Rlc3Rf Z2V0X2ZwdSgKLSAgICB2b2lkICgqZXhjZXB0aW9uX2NhbGxiYWNrKSh2b2lkICosIHN0cnVjdCBj cHVfdXNlcl9yZWdzICopLAotICAgIHZvaWQgKmV4Y2VwdGlvbl9jYWxsYmFja19hcmcsCiAgICAg ZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSB0eXBlLAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KQogewotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUu aAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuaApAQCAtMjYzLDgg KzI2Myw2IEBAIGludCBlbXVsX3Rlc3RfcmVhZF94Y3IoCiAgICAgc3RydWN0IHg4Nl9lbXVsYXRl X2N0eHQgKmN0eHQpOwogCiBpbnQgZW11bF90ZXN0X2dldF9mcHUoCi0gICAgdm9pZCAoKmV4Y2Vw dGlvbl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSwKLSAgICB2b2lk ICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLAogICAgIGVudW0geDg2X2VtdWxhdGVfZnB1X3R5cGUg dHlwZSwKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7CiAKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAg LTE4OTAsOCArMTg5MCw2IEBAIGludCBodm1lbXVsX2NwdWlkKHVpbnQzMl90IGxlYWYsIHVpbnQz Ml8KIH0KIAogc3RhdGljIGludCBodm1lbXVsX2dldF9mcHUoCi0gICAgdm9pZCAoKmV4Y2VwdGlv bl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSwKLSAgICB2b2lkICpl eGNlcHRpb25fY2FsbGJhY2tfYXJnLAogICAgIGVudW0geDg2X2VtdWxhdGVfZnB1X3R5cGUgdHlw ZSwKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKQEAgLTE5MjksOSArMTky Nyw2IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9nZXRfZnB1KAogICAgICAgICB9CiAgICAgfQogCi0g ICAgY3Vyci0+YXJjaC5odm1fdmNwdS5mcHVfZXhjZXB0aW9uX2NhbGxiYWNrID0gZXhjZXB0aW9u X2NhbGxiYWNrOwotICAgIGN1cnItPmFyY2guaHZtX3ZjcHUuZnB1X2V4Y2VwdGlvbl9jYWxsYmFj a19hcmcgPSBleGNlcHRpb25fY2FsbGJhY2tfYXJnOwotCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tB WTsKIH0KIApAQCAtMTk0Miw4ICsxOTM3LDYgQEAgc3RhdGljIHZvaWQgaHZtZW11bF9wdXRfZnB1 KAogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKIAotICAgIGN1cnItPmFyY2gu aHZtX3ZjcHUuZnB1X2V4Y2VwdGlvbl9jYWxsYmFjayA9IE5VTEw7Ci0KICAgICBpZiAoIGF1eCAp CiAgICAgewogICAgICAgICB0eXBlb2YoY3Vyci0+YXJjaC54c2F2ZV9hcmVhLT5mcHVfc3NlKSAq ZnB1X2N0eHQgPSBjdXJyLT5hcmNoLmZwdV9jdHh0OwotLS0gYS94ZW4vYXJjaC94ODYvdHJhcHMu YworKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNzI5LDcgKzcyOSw2IEBAIHN0YXRpYyB2 b2lkIGRvX3Jlc2VydmVkX3RyYXAoc3RydWN0IGNwdV8KIAogc3RhdGljIHZvaWQgZG9fdHJhcChz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1 cnJlbnQ7CiAgICAgdW5zaWduZWQgaW50IHRyYXBuciA9IHJlZ3MtPmVudHJ5X3ZlY3RvcjsKICAg ICB1bnNpZ25lZCBsb25nIGZpeHVwOwogCkBAIC03NDksMTUgKzc0OCw2IEBAIHN0YXRpYyB2b2lk IGRvX3RyYXAoc3RydWN0IGNwdV91c2VyX3JlZ3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot ICAgIGlmICggKCh0cmFwbnIgPT0gVFJBUF9jb3Byb19lcnJvcikgfHwgKHRyYXBuciA9PSBUUkFQ X3NpbWRfZXJyb3IpKSAmJgotICAgICAgICAgc3lzdGVtX3N0YXRlID49IFNZU19TVEFURV9hY3Rp dmUgJiYgaXNfaHZtX3ZjcHUoY3VycikgJiYKLSAgICAgICAgIGN1cnItPmFyY2guaHZtX3ZjcHUu ZnB1X2V4Y2VwdGlvbl9jYWxsYmFjayApCi0gICAgewotICAgICAgICBjdXJyLT5hcmNoLmh2bV92 Y3B1LmZwdV9leGNlcHRpb25fY2FsbGJhY2soCi0gICAgICAgICAgICBjdXJyLT5hcmNoLmh2bV92 Y3B1LmZwdV9leGNlcHRpb25fY2FsbGJhY2tfYXJnLCByZWdzKTsKLSAgICAgICAgcmV0dXJuOwot ICAgIH0KLQogICAgIGlmICggbGlrZWx5KChmaXh1cCA9IHNlYXJjaF9leGNlcHRpb25fdGFibGUo cmVncykpICE9IDApICkKICAgICB7CiAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgIlRyYXAg JXU6ICVwIFslcHNdIC0+ICVwXG4iLAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpA QCAtMTA5NCwyMyArMTA5NCw4IEBAIGRvIHsKICAgICBvcHMtPndyaXRlX3NlZ21lbnQoeDg2X3Nl Z19jcywgY3MsIGN0eHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0pCiAKLXN0cnVj dCBmcHVfaW5zbl9jdHh0IHsKLSAgICB1aW50OF90IGluc25fYnl0ZXM7Ci0gICAgdWludDhfdCB0 eXBlOwotICAgIGludDhfdCBleG5fcmFpc2VkOwotfTsKLQotc3RhdGljIHZvaWQgZnB1X2hhbmRs ZV9leGNlcHRpb24odm9pZCAqX2ZpYywgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCi17Ci0g ICAgc3RydWN0IGZwdV9pbnNuX2N0eHQgKmZpYyA9IF9maWM7Ci0gICAgQVNTRVJUKHJlZ3MtPmVu dHJ5X3ZlY3RvciA8IDB4MjApOwotICAgIGZpYy0+ZXhuX3JhaXNlZCA9IHJlZ3MtPmVudHJ5X3Zl Y3RvcjsKLSAgICByZWdzLT5yKGlwKSArPSBmaWMtPmluc25fYnl0ZXM7Ci19Ci0KIHN0YXRpYyBp bnQgX2dldF9mcHUoCiAgICAgZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSB0eXBlLAotICAgIHN0 cnVjdCBmcHVfaW5zbl9jdHh0ICpmaWMsCiAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0 eHQsCiAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQogewpAQCAtMTEzOCwx NCArMTEyMywxMyBAQCBzdGF0aWMgaW50IF9nZXRfZnB1KAogICAgICAgICBicmVhazsKICAgICB9 CiAKLSAgICByYyA9IG9wcy0+Z2V0X2ZwdShmcHVfaGFuZGxlX2V4Y2VwdGlvbiwgZmljLCB0eXBl LCBjdHh0KTsKKyAgICByYyA9IG9wcy0+Z2V0X2ZwdSh0eXBlLCBjdHh0KTsKIAogICAgIGlmICgg cmMgPT0gWDg2RU1VTF9PS0FZICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY3IwOwog CiAgICAgICAgIGZhaWxfaWYodHlwZSA9PSBYODZFTVVMX0ZQVV9mcHUgJiYgIW9wcy0+cHV0X2Zw dSk7Ci0gICAgICAgIGZpYy0+dHlwZSA9IHR5cGU7CiAKICAgICAgICAgZmFpbF9pZighb3BzLT5y ZWFkX2NyKTsKICAgICAgICAgaWYgKCB0eXBlID49IFg4NkVNVUxfRlBVX3htbSApCkBAIC0xMTgz LDM3ICsxMTY3LDIyIEBAIHN0YXRpYyBpbnQgX2dldF9mcHUoCiAgICAgcmV0dXJuIHJjOwogfQog Ci0jZGVmaW5lIGdldF9mcHUoX3R5cGUsIF9maWMpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorI2RlZmluZSBnZXRfZnB1KHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmMgPSBfZ2V0X2ZwdShfdHlwZSwg X2ZpYywgY3R4dCwgb3BzKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJjID0gX2dldF9m cHUoZnB1X3R5cGUgPSAodHlwZSksIGN0eHQsIG9wcyk7ICAgICAgICAgICAgICAgIFwKICAgICBp ZiAoIHJjICkgZ290byBkb25lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiB9IHdoaWxlICgwKQogCi0jZGVmaW5lIGNoZWNrX2ZwdV9leG4oZmljKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZG8geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZW5lcmF0ZV9leGNl cHRpb25faWYoKGZpYyktPmV4bl9yYWlzZWQgPj0gMCwgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIChmaWMpLT5leG5fcmFpc2VkKTsgICAgICAgICAgICAgICAgICAg XAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBjaGVja194bW1fZXhuKGZpYykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCAoZmljKS0+ZXhu X3JhaXNlZCA9PSBFWENfWE0gJiYgb3BzLT5yZWFkX2NyICYmICAgICAgICAgXAotICAgICAgICAg b3BzLT5yZWFkX2NyKDQsICZjcjQsIGN0eHQpID09IFg4NkVNVUxfT0tBWSAmJiAgICAgICAgIFwK LSAgICAgICAgICEoY3I0ICYgWDg2X0NSNF9PU1hNTUVYQ1BUKSApICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgIChmaWMpLT5leG5fcmFpc2VkID0gRVhDX1VEOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIGNoZWNrX2ZwdV9leG4oZmljKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gd2hpbGUgKDApCi0KIHN0YXRpYyB2b2lk IHB1dF9mcHUoCi0gICAgc3RydWN0IGZwdV9pbnNuX2N0eHQgKmZpYywKKyAgICBlbnVtIHg4Nl9l bXVsYXRlX2ZwdV90eXBlIHR5cGUsCiAgICAgYm9vbCBmYWlsZWRfbGF0ZSwKICAgICBjb25zdCBz dHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgKnN0YXRlLAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0LAogICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgKm9wcykKIHsKLSAg ICBpZiAoIHVubGlrZWx5KGZhaWxlZF9sYXRlKSAmJiBmaWMtPnR5cGUgPT0gWDg2RU1VTF9GUFVf ZnB1ICkKKyAgICBpZiAoIHVubGlrZWx5KGZhaWxlZF9sYXRlKSAmJiB0eXBlID09IFg4NkVNVUxf RlBVX2ZwdSApCiAgICAgICAgIG9wcy0+cHV0X2ZwdShjdHh0LCBYODZFTVVMX0ZQVV9mcHUsIE5V TEwpOwotICAgIGVsc2UgaWYgKCB1bmxpa2VseShmaWMtPnR5cGUgPT0gWDg2RU1VTF9GUFVfZnB1 KSAmJiAhc3RhdGUtPmZwdV9jdHJsICkKKyAgICBlbHNlIGlmICggdW5saWtlbHkodHlwZSA9PSBY ODZFTVVMX0ZQVV9mcHUpICYmICFzdGF0ZS0+ZnB1X2N0cmwgKQogICAgIHsKICAgICAgICAgc3Ry dWN0IHg4Nl9lbXVsX2ZwdV9hdXggYXV4ID0gewogICAgICAgICAgICAgLmlwID0gY3R4dC0+cmVn cy0+cihpcCksCkBAIC0xMjQ3LDkgKzEyMTYsOCBAQCBzdGF0aWMgdm9pZCBwdXRfZnB1KAogICAg ICAgICB9CiAgICAgICAgIG9wcy0+cHV0X2ZwdShjdHh0LCBYODZFTVVMX0ZQVV9ub25lLCAmYXV4 KTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIGZpYy0+dHlwZSAhPSBYODZFTVVMX0ZQVV9ub25lICYm IG9wcy0+cHV0X2ZwdSApCisgICAgZWxzZSBpZiAoIHR5cGUgIT0gWDg2RU1VTF9GUFVfbm9uZSAm JiBvcHMtPnB1dF9mcHUgKQogICAgICAgICBvcHMtPnB1dF9mcHUoY3R4dCwgWDg2RU1VTF9GUFVf bm9uZSwgTlVMTCk7Ci0gICAgZmljLT50eXBlID0gWDg2RU1VTF9GUFVfbm9uZTsKIH0KIAogc3Rh dGljIGlubGluZSBib29sIGZwdV9jaGVja193cml0ZSh2b2lkKQpAQCAtMTI2NCwyOSArMTIzMiwy NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZnB1X2NoZWNrX3dyaXRlKHZvaWQpCiAjZGVmaW5lIGVt dWxhdGVfZnB1X2luc25fbWVtZHN0KG9wYywgZXh0LCBhcmcpICAgICAgICAgICAgICAgICAgICAg ICAgICBcCiBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogTW9kUk06IG1vZD0wLCByZWc9ZXh0LCBy bT0wLCBpLmUuIGEgKCVyYXgpIG9wZXJhbmQgKi8gICAgICAgICAgICBcCi0gICAgZmljLmluc25f Ynl0ZXMgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgaW5zbl9ieXRlcyA9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWVtY3B5KGdldF9zdHViKHN0dWIpLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICgodWlu dDhfdFtdKXsgb3BjLCAoKGV4dCkgJiA3KSA8PCAzLCAweGMzIH0pLCAzKTsgICAgICAgICAgICBc Ci0gICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChmaWMpLCAiK20iIChhcmcpIDogImEiICgm KGFyZykpKTsgICAgICAgICBcCisgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChhcmcpIDog ImEiICgmKGFyZykpKTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgcHV0X3N0dWIoc3R1Yik7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9 IHdoaWxlICgwKQogCiAjZGVmaW5lIGVtdWxhdGVfZnB1X2luc25fbWVtc3JjKG9wYywgZXh0LCBh cmcpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyog TW9kUk06IG1vZD0wLCByZWc9ZXh0LCBybT0wLCBpLmUuIGEgKCVyYXgpIG9wZXJhbmQgKi8gICAg ICAgICAgICBcCi0gICAgZmljLmluc25fYnl0ZXMgPSAyOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWVtY3B5KGdldF9zdHViKHN0dWIpLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg ICgodWludDhfdFtdKXsgb3BjLCAoKGV4dCkgJiA3KSA8PCAzLCAweGMzIH0pLCAzKTsgICAgICAg ICAgICBcCi0gICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChmaWMpIDogIm0iIChhcmcpLCAi YSIgKCYoYXJnKSkpOyAgICAgICAgICBcCisgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPW0iIChk dW1teSkgOiAibSIgKGFyZyksICJhIiAoJihhcmcpKSk7ICAgICAgICBcCiAgICAgcHV0X3N0dWIo c3R1Yik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiB9IHdoaWxlICgwKQogCiAjZGVmaW5lIGVtdWxhdGVfZnB1X2luc25fc3R1YihieXRlcy4u LikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBkbyB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgdW5zaWduZWQgaW50IG5yXyA9IHNpemVvZigodWludDhfdFtdKXsgYnl0ZXMgfSk7ICAgICAg ICAgICAgICAgICAgICBcCi0gICAgZmljLmluc25fYnl0ZXMgPSBucl87ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWVtY3B5KGdldF9zdHViKHN0 dWIpLCAoKHVpbnQ4X3RbXSl7IGJ5dGVzLCAweGMzIH0pLCBucl8gKyAxKTsgICAgICBcCi0gICAg aW52b2tlX3N0dWIoIiIsICIiLCAiPW0iIChmaWMpIDogIm0iIChmaWMpKTsgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPW0iIChkdW1teSkgOiAiaSIg KDApKTsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgcHV0X3N0dWIoc3R1Yik7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxl ICgwKQogCkBAIC0xMjk0LDEyICsxMjYwLDEwIEBAIGRvIHsKIGRvIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICB1bnNpZ25lZCBpbnQgbnJfID0gc2l6ZW9mKCh1aW50OF90W10peyBieXRlcyB9KTsgICAgICAg ICAgICAgICAgICAgIFwKICAgICB1bnNpZ25lZCBsb25nIHRtcF87ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmaWMuaW5zbl9ieXRlcyA9IG5y XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBt ZW1jcHkoZ2V0X3N0dWIoc3R1YiksICgodWludDhfdFtdKXsgYnl0ZXMsIDB4YzMgfSksIG5yXyAr IDEpOyAgICAgIFwKICAgICBpbnZva2Vfc3R1YihfUFJFX0VGTEFHUygiW2VmbGFnc10iLCAiW21h c2tdIiwgIlt0bXBdIiksICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBfUE9TVF9FRkxB R1MoIltlZmxhZ3NdIiwgIlttYXNrXSIsICJbdG1wXSIpLCAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICBbZWZsYWdzXSAiK2ciIChfcmVncy5lZmxhZ3MpLCBbdG1wXSAiPSZyIiAodG1wXyks ICAgICAgIFwKLSAgICAgICAgICAgICAgICAiK20iIChmaWMpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBbZWZsYWdzXSAiK2ci IChfcmVncy5lZmxhZ3MpLCBbdG1wXSAiPSZyIiAodG1wXykgICAgICAgIFwKICAgICAgICAgICAg ICAgICA6IFttYXNrXSAiaSIgKFg4Nl9FRkxBR1NfWkZ8WDg2X0VGTEFHU19QRnxYODZfRUZMQUdT X0NGKSk7IFwKICAgICBwdXRfc3R1YihzdHViKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKDApCkBAIC0zMTU4LDE0ICszMTIy LDE0IEBAIHg4Nl9lbXVsYXRlKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9zdGF0ZSBzdGF0ZTsK ICAgICBpbnQgcmM7CiAgICAgdWludDhfdCBiLCBkLCAqb3BjID0gTlVMTDsKLSAgICB1bnNpZ25l ZCBpbnQgZmlyc3RfYnl0ZSA9IDA7CisgICAgdW5zaWduZWQgaW50IGZpcnN0X2J5dGUgPSAwLCBp bnNuX2J5dGVzID0gMDsKICAgICBib29sIHNpbmdsZXN0ZXAgPSAoX3JlZ3MuZWZsYWdzICYgWDg2 X0VGTEFHU19URikgJiYKIAkgICAgIWlzX2JyYW5jaF9zdGVwKGN0eHQsIG9wcyk7CiAgICAgYm9v bCBzZmVuY2UgPSBmYWxzZTsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBzcmMgPSB7IC5yZWcgPSBQVFJf UE9JU09OIH07CiAgICAgc3RydWN0IG9wZXJhbmQgZHN0ID0geyAucmVnID0gUFRSX1BPSVNPTiB9 OwogICAgIHVuc2lnbmVkIGxvbmcgY3I0OwotICAgIHN0cnVjdCBmcHVfaW5zbl9jdHh0IGZpYyA9 IHsgLnR5cGUgPSBYODZFTVVMX0ZQVV9ub25lLCAuZXhuX3JhaXNlZCA9IC0xIH07CisgICAgZW51 bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSBmcHVfdHlwZSA9IFg4NkVNVUxfRlBVX25vbmU7CiAgICAg c3RydWN0IHg4Nl9lbXVsYXRlX3N0dWIgc3R1YiA9IHt9OwogICAgIERFQ0xBUkVfQUxJR05FRCht bXZhbF90LCBtbXZhbCk7CiAjaWZkZWYgX19YRU5fXwpAQCAtMzg1OSw5ICszODIzLDggQEAgeDg2 X2VtdWxhdGUoCiAKICAgICBjYXNlIDB4OWI6ICAvKiB3YWl0L2Z3YWl0ICovCiAgICAgICAgIGhv c3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGZwdSk7Ci0gICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVf d2FpdCwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfd2FpdCk7CiAgICAgICAg IGVtdWxhdGVfZnB1X2luc25fc3R1YihiKTsKLSAgICAgICAgY2hlY2tfZnB1X2V4bigmZmljKTsK ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4OWM6IC8qIHB1c2hmICovCkBAIC00MjY0LDcg KzQyMjcsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgIGNhc2UgMHhkODogLyogRlBVIDB4ZDggKi8K ICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoZnB1KTsKLSAgICAgICAgZ2V0X2ZwdShY ODZFTVVMX0ZQVV9mcHUsICZmaWMpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX2ZwdSk7 CiAgICAgICAgIHN3aXRjaCAoIG1vZHJtICkKICAgICAgICAgewogICAgICAgICBjYXNlIDB4YzAg Li4uIDB4Yzc6IC8qIGZhZGQgJXN0Tiwlc3QgKi8KQEAgLTQyODYsMTIgKzQyNDksMTEgQEAgeDg2 X2VtdWxhdGUoCiAgICAgICAgICAgICBlbXVsYXRlX2ZwdV9pbnNuX21lbXNyYyhiLCBtb2RybV9y ZWcgJiA3LCBzcmMudmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg IGNoZWNrX2ZwdV9leG4oJmZpYyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGQ5OiAv KiBGUFUgMHhkOSAqLwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShmcHUpOwotICAg ICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX2ZwdSwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2 RU1VTF9GUFVfZnB1KTsKICAgICAgICAgc3dpdGNoICggbW9kcm0gKQogICAgICAgICB7CiAgICAg ICAgIGNhc2UgMHhmYjogLyogZnNpbmNvcyAqLwpAQCAtNDM3MywxMiArNDMzNSwxMSBAQCB4ODZf ZW11bGF0ZSgKICAgICAgICAgICAgIGlmICggZHN0LnR5cGUgPT0gT1BfTUVNICYmICFzdGF0ZS0+ ZnB1X2N0cmwgJiYgIWZwdV9jaGVja193cml0ZSgpICkKICAgICAgICAgICAgICAgICBkc3QudHlw ZSA9IE9QX05PTkU7CiAgICAgICAgIH0KLSAgICAgICAgY2hlY2tfZnB1X2V4bigmZmljKTsKICAg ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ZGE6IC8qIEZQVSAweGRhICovCiAgICAgICAgIGhv c3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGZwdSk7Ci0gICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVf ZnB1LCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9mcHUpOwogICAgICAgICBz d2l0Y2ggKCBtb2RybSApCiAgICAgICAgIHsKICAgICAgICAgY2FzZSAweGMwIC4uLiAweGM3OiAv KiBmY21vdmIgJXN0TiAqLwpAQCAtNDM5NSwxMiArNDM1NiwxMSBAQCB4ODZfZW11bGF0ZSgKICAg ICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihlYS50eXBlICE9IE9QX01FTSwgRVhDX1VE KTsKICAgICAgICAgICAgIGdvdG8gZnB1X21lbXNyYzMyOwogICAgICAgICB9Ci0gICAgICAgIGNo ZWNrX2ZwdV9leG4oJmZpYyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGRiOiAvKiBG UFUgMHhkYiAqLwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShmcHUpOwotICAgICAg ICBnZXRfZnB1KFg4NkVNVUxfRlBVX2ZwdSwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2RU1V TF9GUFVfZnB1KTsKICAgICAgICAgc3dpdGNoICggbW9kcm0gKQogICAgICAgICB7CiAgICAgICAg IGNhc2UgMHhjMCAuLi4gMHhjNzogLyogZmNtb3ZuYiAlc3ROICovCkBAIC00NDUzLDEyICs0NDEz LDExIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbihF WENfVUQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNoZWNrX2ZwdV9leG4o JmZpYyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGRjOiAvKiBGUFUgMHhkYyAqLwog ICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShmcHUpOwotICAgICAgICBnZXRfZnB1KFg4 NkVNVUxfRlBVX2ZwdSwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfZnB1KTsK ICAgICAgICAgc3dpdGNoICggbW9kcm0gKQogICAgICAgICB7CiAgICAgICAgIGNhc2UgMHhjMCAu Li4gMHhjNzogLyogZmFkZCAlc3QsJXN0TiAqLwpAQCAtNDQ4MCwxMiArNDQzOSwxMSBAQCB4ODZf ZW11bGF0ZSgKICAgICAgICAgICAgIGVtdWxhdGVfZnB1X2luc25fbWVtc3JjKGIsIG1vZHJtX3Jl ZyAmIDcsIHNyYy52YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg Y2hlY2tfZnB1X2V4bigmZmljKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ZGQ6IC8q IEZQVSAweGRkICovCiAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGZwdSk7Ci0gICAg ICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfZnB1LCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZF TVVMX0ZQVV9mcHUpOwogICAgICAgICBzd2l0Y2ggKCBtb2RybSApCiAgICAgICAgIHsKICAgICAg ICAgY2FzZSAweGMwIC4uLiAweGM3OiAvKiBmZnJlZSAlc3ROICovCkBAIC00NTI5LDEyICs0NDg3 LDExIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgaWYgKCBkc3QudHlwZSA9PSBPUF9NRU0g JiYgIXN0YXRlLT5mcHVfY3RybCAmJiAhZnB1X2NoZWNrX3dyaXRlKCkgKQogICAgICAgICAgICAg ICAgIGRzdC50eXBlID0gT1BfTk9ORTsKICAgICAgICAgfQotICAgICAgICBjaGVja19mcHVfZXhu KCZmaWMpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhkZTogLyogRlBVIDB4ZGUgKi8K ICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoZnB1KTsKLSAgICAgICAgZ2V0X2ZwdShY ODZFTVVMX0ZQVV9mcHUsICZmaWMpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX2ZwdSk7 CiAgICAgICAgIHN3aXRjaCAoIG1vZHJtICkKICAgICAgICAgewogICAgICAgICBjYXNlIDB4YzAg Li4uIDB4Yzc6IC8qIGZhZGRwICVzdE4gKi8KQEAgLTQ1NTIsMTIgKzQ1MDksMTEgQEAgeDg2X2Vt dWxhdGUoCiAgICAgICAgICAgICBlbXVsYXRlX2ZwdV9pbnNuX21lbXNyYyhiLCBtb2RybV9yZWcg JiA3LCBzcmMudmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNo ZWNrX2ZwdV9leG4oJmZpYyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGRmOiAvKiBG UFUgMHhkZiAqLwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShmcHUpOwotICAgICAg ICBnZXRfZnB1KFg4NkVNVUxfRlBVX2ZwdSwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2RU1V TF9GUFVfZnB1KTsKICAgICAgICAgc3dpdGNoICggbW9kcm0gKQogICAgICAgICB7CiAgICAgICAg IGNhc2UgMHhlMDoKQEAgLTQ2MDIsNyArNDU1OCw2IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAg ICAgICAgIGdvdG8gZnB1X21lbWRzdDY0OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg ICAgIGNoZWNrX2ZwdV9leG4oJmZpYyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweGUw IC4uLiAweGUyOiAvKiBsb29weyx6LG56fSAqLyB7CkBAIC01NDYxLDcgKzU0MTYsNyBAQCB4ODZf ZW11bGF0ZSgKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uKEVY Q19VRCk7CiAKLSAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9tbXgsICZmaWMpOworICAgICAg ICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCk7CiAKICAgICAgICAgZCA9IERzdFJlZyB8IFNyY01l bTsKICAgICAgICAgb3BfYnl0ZXMgPSA4OwpAQCAtNTU1MSw3ICs1NTA2LDcgQEAgeDg2X2VtdWxh dGUoCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc3Nl KTsKICAgICBzaW1kXzBmX3htbToKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1t LCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tKTsKICAgICAgICAg fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTU1NjEsNyArNTUxNiw3IEBAIHg4Nl9lbXVs YXRlKAogICAgIHNpbWRfMGZfYXZ4OgogICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hh dmUoYXZ4KTsKICAgICBzaW1kXzBmX3ltbToKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9G UFVfeW1tLCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeW1tKTsKICAg ICAgICAgfQogICAgIHNpbWRfMGZfY29tbW9uOgogICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVz KHN0dWIpOwpAQCAtNTU3NCw3ICs1NTI5LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2 ZXguYiA9IDE7CiAgICAgICAgICAgICBvcGNbMV0gJj0gMHgzODsKICAgICAgICAgfQotICAgICAg ICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7CisgICAgICAgIGluc25fYnl0ZXMgPSBQ RlhfQllURVMgKyAyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWDg2RU1VTF9PUENfNjYo MHgwZiwgMHgxMik6ICAgICAgIC8qIG1vdmxwZCBtNjQseG1tICovCkBAIC01NjYxLDEyICs1NjE2 LDEyIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKHNzZTIp OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKHNzZSk7 Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSwgJmZpYyk7CisgICAgICAgICAg ICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7CiAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwotICAgICAg ICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2Zw dShYODZFTVVMX0ZQVV95bW0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCBlYS50eXBlID09 IE9QX01FTSApCkBAIC01NjkyLDE0ICs1NjQ3LDE0IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAg ICAgICAgIHZjcHVfbXVzdF9oYXZlKHNzZTIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgIHZjcHVfbXVzdF9oYXZlKHNzZSk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxf RlBVX3htbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSk7CiAg ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBnZW5lcmF0ZV9l eGNlcHRpb25faWYodmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7CiAgICAgICAgICAgICB2ZXgubCA9 IDA7CiAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwotICAgICAgICAg ICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2ZwdShY ODZFTVVMX0ZQVV95bW0pOwogICAgICAgICB9CiAKICAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhl cyhzdHViKTsKQEAgLTU3MjIsMTcgKzU2NzcsMTQgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAg ICBvcGNbMV0gPSBtb2RybSAmIDB4Yzc7CiAgICAgICAgIGlmICggIW1vZGVfNjRiaXQoKSApCiAg ICAgICAgICAgICB2ZXgudyA9IDA7Ci0gICAgICAgIGZpYy5pbnNuX2J5dGVzID0gUEZYX0JZVEVT ICsgMjsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7CiAgICAgICAgIG9wY1sy XSA9IDB4YzM7CiAKICAgICAgICAgY29weV9SRVhfVkVYKG9wYywgcmV4X3ByZWZpeCwgdmV4KTsK ICAgICAgICAgZWEucmVnID0gZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JlZyk7Ci0gICAgICAg IGludm9rZV9zdHViKCIiLCAiIiwgIj1hIiAoKmVhLnJlZyksICIrbSIgKGZpYy5leG5fcmFpc2Vk KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImMiIChtbXZhbHApLCAibSIgKCptbXZh bHApKTsKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPWEiICgqZWEucmVnKSA6ICJjIiAo bW12YWxwKSwgIm0iICgqbW12YWxwKSk7CiAKICAgICAgICAgcHV0X3N0dWIoc3R1Yik7Ci0gICAg ICAgIGNoZWNrX3htbV9leG4oJmZpYyk7Ci0KICAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNp bWRfbm9uZTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTU3NDYsMTMgKzU2OTgsMTMgQEAgeDg2X2Vt dWxhdGUoCiAgICAgICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc3NlMik7CiAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc3NlKTsKLSAgICAgICAgICAg IGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tLCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2 RU1VTF9GUFVfeG1tKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAg ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgucmVnICE9IDB4ZiwgRVhDX1VEKTsKICAg ICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eCk7Ci0gICAgICAgICAgICBnZXRf ZnB1KFg4NkVNVUxfRlBVX3ltbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxf RlBVX3ltbSk7CiAgICAgICAgIH0KIAogICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIp OwpAQCAtNTc3MCwyMCArNTcyMiwxNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIHZleC5i ID0gMTsKICAgICAgICAgICAgIG9wY1sxXSAmPSAweDM4OwogICAgICAgICB9Ci0gICAgICAgIGZp Yy5pbnNuX2J5dGVzID0gUEZYX0JZVEVTICsgMjsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9C WVRFUyArIDI7CiAgICAgICAgIG9wY1syXSA9IDB4YzM7CiAKICAgICAgICAgY29weV9SRVhfVkVY KG9wYywgcmV4X3ByZWZpeCwgdmV4KTsKICAgICAgICAgaW52b2tlX3N0dWIoX1BSRV9FRkxBR1Mo IltlZmxhZ3NdIiwgIlttYXNrXSIsICJbdG1wXSIpLAogICAgICAgICAgICAgICAgICAgICBfUE9T VF9FRkxBR1MoIltlZmxhZ3NdIiwgIlttYXNrXSIsICJbdG1wXSIpLAogICAgICAgICAgICAgICAg ICAgICBbZWZsYWdzXSAiK2ciIChfcmVncy5lZmxhZ3MpLAotICAgICAgICAgICAgICAgICAgICBb dG1wXSAiPSZyIiAoZHVtbXkpLCAiK20iICgqbW12YWxwKSwKLSAgICAgICAgICAgICAgICAgICAg IittIiAoZmljLmV4bl9yYWlzZWQpCisgICAgICAgICAgICAgICAgICAgIFt0bXBdICI9JnIiIChk dW1teSksICIrbSIgKCptbXZhbHApCiAgICAgICAgICAgICAgICAgICAgIDogImEiIChtbXZhbHAp LCBbbWFza10gImkiIChFRkxBR1NfTUFTSykpOwogCiAgICAgICAgIHB1dF9zdHViKHN0dWIpOwot ICAgICAgICBjaGVja194bW1fZXhuKCZmaWMpOwotCiAgICAgICAgIEFTU0VSVCghc3RhdGUtPnNp bWRfc2l6ZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC01OTIxLDkgKzU4NzAsOSBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgaWYgKCAhbW9kZV82NGJpdCgpICkKICAgICAgICAgICAgIHZleC53ID0g MDsKICAgICAgICAgb3BjWzFdID0gbW9kcm0gJiAweGM3OwotICAgICAgICBmaWMuaW5zbl9ieXRl cyA9IFBGWF9CWVRFUyArIDI7CisgICAgICAgIGluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAyOwog ICAgIHNpbWRfMGZfdG9fZ3ByOgotICAgICAgICBvcGNbZmljLmluc25fYnl0ZXMgLSBQRlhfQllU RVNdID0gMHhjMzsKKyAgICAgICAgb3BjW2luc25fYnl0ZXMgLSBQRlhfQllURVNdID0gMHhjMzsK IAogICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9SRUcsIEVYQ19V RCk7CiAKQEAgLTU5NDIsOSArNTg5MSw5IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAg ICAgICB2Y3B1X211c3RfaGF2ZShzc2UpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg KCBiID09IDB4NTAgfHwgKHZleC5wZnggJiBWRVhfUFJFRklYX0RPVUJMRV9NQVNLKSApCi0gICAg ICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0sICZmaWMpOworICAgICAgICAgICAg ICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg ICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCwgJmZpYyk7CisgICAgICAgICAgICAgICAg Z2V0X2ZwdShYODZFTVVMX0ZQVV9tbXgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg ICAgewpAQCAtNTk1MywxNCArNTkwMiwxMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAg ICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwogICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDIpOwotICAgICAgICAgICAgZ2V0 X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVM X0ZQVV95bW0pOwogICAgICAgICB9CiAKICAgICAgICAgY29weV9SRVhfVkVYKG9wYywgcmV4X3By ZWZpeCwgdmV4KTsKICAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPWEiIChkc3QudmFsKSA6 IFtkdW1teV0gImkiICgwKSk7CiAKICAgICAgICAgcHV0X3N0dWIoc3R1Yik7Ci0gICAgICAgIGNo ZWNrX3htbV9leG4oJmZpYyk7CiAKICAgICAgICAgQVNTRVJUKCFzdGF0ZS0+c2ltZF9zaXplKTsK ICAgICAgICAgZHN0LmJ5dGVzID0gNDsKQEAgLTYxMjYsNyArNjA3NCw3IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICAgICAgZ290byBzaW1kXzBmX3NzZTI7CiAgICAgc2ltZF8wZl9tbXg6CiAgICAg ICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKG1teCk7Ci0gICAgICAgIGdldF9mcHUoWDg2RU1V TF9GUFVfbW14LCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9tbXgpOwogICAg ICAgICBnb3RvIHNpbWRfMGZfY29tbW9uOwogCiAgICAgQ0FTRV9TSU1EX1BBQ0tFRF9JTlQoMHgw ZiwgMHg2ZSk6ICAgIC8qIG1vdntkLHF9IHIvbSx7LHh9bW0gKi8KQEAgLTYxMzcsMTcgKzYwODUs MTcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIHsKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZih2ZXgubCB8fCB2ZXgucmVnICE9IDB4ZiwgRVhDX1VEKTsKICAgICAgICAgICAgIGhv c3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eCk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxf RlBVX3ltbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ltbSk7CiAg ICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIHZleC5wZnggKQogICAgICAgICB7CiAgICAgICAg ICAgICB2Y3B1X211c3RfaGF2ZShzc2UyKTsKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9G UFVfeG1tLCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tKTsKICAg ICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIGhvc3RfYW5kX3Zj cHVfbXVzdF9oYXZlKG1teCk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCwg JmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCk7CiAgICAgICAgIH0K IAogICAgIHNpbWRfMGZfcm06CkBAIC02MTU5LDE3ICs2MTA3LDE0IEBAIHg4Nl9lbXVsYXRlKAog ICAgICAgICBpZiAoICFtb2RlXzY0Yml0KCkgKQogICAgICAgICAgICAgdmV4LncgPSAwOwogICAg ICAgICBvcGNbMV0gPSBtb2RybSAmIDB4Mzg7Ci0gICAgICAgIGZpYy5pbnNuX2J5dGVzID0gUEZY X0JZVEVTICsgMjsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7CiAgICAgICAg IG9wY1syXSA9IDB4YzM7CiAKICAgICAgICAgY29weV9SRVhfVkVYKG9wYywgcmV4X3ByZWZpeCwg dmV4KTsKLSAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChzcmMudmFsKSwgIittIiAo ZmljLmV4bl9yYWlzZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiYSIgKCZzcmMu dmFsKSk7CisgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwgIittIiAoc3JjLnZhbCkgOiAiYSIg KCZzcmMudmFsKSk7CiAgICAgICAgIGRzdC52YWwgPSBzcmMudmFsOwogCiAgICAgICAgIHB1dF9z dHViKHN0dWIpOwotICAgICAgICBjaGVja194bW1fZXhuKCZmaWMpOwotCiAgICAgICAgIEFTU0VS VCghc3RhdGUtPnNpbWRfc2l6ZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC02MjM1LDE5ICs2MTgw LDE5IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9o YXZlKGF2eCk7CiAgICAgICAgICAgICB9CiAgICAgc2ltZF8wZl9pbW04X3ltbToKLSAgICAgICAg ICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeW1tLCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUo WDg2RU1VTF9GUFVfeW1tKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggdmV4LnBmeCAp CiAgICAgICAgIHsKICAgICBzaW1kXzBmX2ltbThfc3NlMjoKICAgICAgICAgICAgIHZjcHVfbXVz dF9oYXZlKHNzZTIpOwotICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0sICZmaWMp OworICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0pOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUo bW14KTsKICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKG1teGV4dCk7Ci0gICAgICAgICAgICBn ZXRfZnB1KFg4NkVNVUxfRlBVX21teCwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVN VUxfRlBVX21teCk7CiAgICAgICAgIH0KICAgICBzaW1kXzBmX2ltbTg6CiAgICAgICAgIG9wYyA9 IGluaXRfcHJlZml4ZXMoc3R1Yik7CkBAIC02MjYxLDcgKzYyMDYsNyBAQCB4ODZfZW11bGF0ZSgK ICAgICAgICAgICAgIG9wY1sxXSAmPSAweDM4OwogICAgICAgICB9CiAgICAgICAgIG9wY1syXSA9 IGltbTE7Ci0gICAgICAgIGZpYy5pbnNuX2J5dGVzID0gUEZYX0JZVEVTICsgMzsKKyAgICAgICAg aW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDM7CiAgICAgICAgIGJyZWFrOwogCiAgICAgQ0FTRV9T SU1EX1BBQ0tFRF9JTlQoMHgwZiwgMHg3MSk6ICAgIC8qIEdycDEyICovCkBAIC02Mjg5LDMzICs2 MjM0LDMxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVz dF9oYXZlKGF2eDIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGhvc3RfYW5k X3ZjcHVfbXVzdF9oYXZlKGF2eCk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3lt bSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ltbSk7CiAgICAgICAg IH0KICAgICAgICAgZWxzZSBpZiAoIHZleC5wZnggKQogICAgICAgICB7CiAgICAgICAgICAgICB2 Y3B1X211c3RfaGF2ZShzc2UyKTsKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1t LCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tKTsKICAgICAgICAg fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVz dF9oYXZlKG1teCk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCwgJmZpYyk7 CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCk7CiAgICAgICAgIH0KIAogICAg ICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOwogICAgICAgICBvcGNbMF0gPSBiOwogICAg ICAgICBvcGNbMV0gPSBtb2RybTsKICAgICAgICAgb3BjWzJdID0gaW1tMTsKLSAgICAgICAgZmlj Lmluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAzOworICAgICAgICBpbnNuX2J5dGVzID0gUEZYX0JZ VEVTICsgMzsKICAgICBzaW1kXzBmX3JlZ19vbmx5OgotICAgICAgICBvcGNbZmljLmluc25fYnl0 ZXMgLSBQRlhfQllURVNdID0gMHhjMzsKKyAgICAgICAgb3BjW2luc25fYnl0ZXMgLSBQRlhfQllU RVNdID0gMHhjMzsKIAogICAgICAgICBjb3B5X1JFWF9WRVgob3BjLCByZXhfcHJlZml4LCB2ZXgp OwogICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIsIFtkdW1teV9vdXRdICI9ZyIgKGR1bW15KSA6 IFtkdW1teV9pbl0gImkiICgwKSApOwogCiAgICAgICAgIHB1dF9zdHViKHN0dWIpOwotICAgICAg ICBjaGVja194bW1fZXhuKCZmaWMpOwotCiAgICAgICAgIEFTU0VSVCghc3RhdGUtPnNpbWRfc2l6 ZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC02MzUwLDcgKzYyOTMsNyBAQCB4ODZfZW11bGF0ZSgK ICAgICAgICAgewogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5yZWcgIT0g MHhmLCBFWENfVUQpOwogICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4KTsK LSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeW1tLCAmZmljKTsKKyAgICAgICAgICAg IGdldF9mcHUoWDg2RU1VTF9GUFVfeW1tKTsKIAogI2lmZGVmIF9feDg2XzY0X18KICAgICAgICAg ICAgIGlmICggIW1vZGVfNjRiaXQoKSApCkBAIC02MzkyLDEyICs2MzM1LDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVf bXVzdF9oYXZlKG1teCk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCwgJmZp Yyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX21teCk7CiAgICAgICAgIH0KIAog ICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOwogICAgICAgICBvcGNbMF0gPSBiOwot ICAgICAgICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDE7CisgICAgICAgIGluc25fYnl0 ZXMgPSBQRlhfQllURVMgKyAxOwogICAgICAgICBnb3RvIHNpbWRfMGZfcmVnX29ubHk7CiAKICAg ICBjYXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYsIDB4NzgpOiAgICAgLyogR3JwMTcgKi8KQEAgLTY0 MTMsMTQgKzYzNTYsMTQgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZihlYS50eXBlICE9IE9QX1JFRywgRVhDX1VEKTsKIAogICAgICAgICBob3N0X2FuZF92Y3B1 X211c3RfaGF2ZShzc2U0YSk7Ci0gICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfeG1tLCAmZmlj KTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0pOwogCiAgICAgICAgIG9wYyA9IGlu aXRfcHJlZml4ZXMoc3R1Yik7CiAgICAgICAgIG9wY1swXSA9IGI7CiAgICAgICAgIG9wY1sxXSA9 IG1vZHJtOwogICAgICAgICBvcGNbMl0gPSBpbW0xOwogICAgICAgICBvcGNbM10gPSBpbW0yOwot ICAgICAgICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDQ7CisgICAgICAgIGluc25fYnl0 ZXMgPSBQRlhfQllURVMgKyA0OwogICAgICAgICBnb3RvIHNpbWRfMGZfcmVnX29ubHk7CiAKICAg ICBjYXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYsIDB4NzkpOiAgICAgLyogZXh0cnEgeG1tLHhtbSAq LwpAQCAtNjU0OCw3ICs2NDkxLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2Y3B1X211 c3RfaGF2ZShzc2UpOwogICAgICAgICBsZG14Y3NyOgogICAgICAgICAgICAgZ2VuZXJhdGVfZXhj ZXB0aW9uX2lmKHNyYy50eXBlICE9IE9QX01FTSwgRVhDX1VEKTsKLSAgICAgICAgICAgIGdldF9m cHUodmV4Lm9wY3ggPyBYODZFTVVMX0ZQVV95bW0gOiBYODZFTVVMX0ZQVV94bW0sICZmaWMpOwor ICAgICAgICAgICAgZ2V0X2ZwdSh2ZXgub3BjeCA/IFg4NkVNVUxfRlBVX3ltbSA6IFg4NkVNVUxf RlBVX3htbSk7CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoc3JjLnZhbCAmIH5t eGNzcl9tYXNrLCBFWENfR1AsIDApOwogICAgICAgICAgICAgYXNtIHZvbGF0aWxlICggImxkbXhj c3IgJTAiIDo6ICJtIiAoc3JjLnZhbCkgKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjU1OCw3 ICs2NTAxLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2Y3B1X211c3RfaGF2ZShzc2Up OwogICAgICAgICBzdG14Y3NyOgogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGRz dC50eXBlICE9IE9QX01FTSwgRVhDX1VEKTsKLSAgICAgICAgICAgIGdldF9mcHUodmV4Lm9wY3gg PyBYODZFTVVMX0ZQVV95bW0gOiBYODZFTVVMX0ZQVV94bW0sICZmaWMpOworICAgICAgICAgICAg Z2V0X2ZwdSh2ZXgub3BjeCA/IFg4NkVNVUxfRlBVX3ltbSA6IFg4NkVNVUxfRlBVX3htbSk7CiAg ICAgICAgICAgICBhc20gdm9sYXRpbGUgKCAic3RteGNzciAlMCIgOiAiPW0iIChkc3QudmFsKSAp OwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY4MTIsNyArNjc1NSw3IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICAgICAgaWYgKCB2ZXgucGZ4ICYgVkVYX1BSRUZJWF9ET1VCTEVfTUFTSyApCiAg ICAgICAgICAgICAgICAgZ290byBzaW1kXzBmX2ltbThfc3NlMjsKICAgICAgICAgICAgIHZjcHVf bXVzdF9oYXZlKHNzZSk7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSwgJmZp Yyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSk7CiAgICAgICAgICAgICBn b3RvIHNpbWRfMGZfaW1tODsKICAgICAgICAgfQogICAgICAgICBnb3RvIHNpbWRfMGZfaW1tOF9h dng7CkBAIC02ODQzLDcgKzY3ODYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIHZleC53 ID0gMDsKICAgICAgICAgb3BjWzFdID0gbW9kcm0gJiAweGM3OwogICAgICAgICBvcGNbMl0gPSBp bW0xOwotICAgICAgICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDM7CisgICAgICAgIGlu c25fYnl0ZXMgPSBQRlhfQllURVMgKyAzOwogICAgICAgICBnb3RvIHNpbWRfMGZfdG9fZ3ByOwog CiAgICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweGM3KTogLyogR3JwOSAqLwpAQCAtNzA5MCwx OCArNzAzMywxOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZih2ZXgubCB8fCB2ZXgucmVnICE9IDB4ZiwgRVhDX1VEKTsKICAgICAgICAgICAgIGQgfD0g VHdvT3A7CiAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwotICAgICAg ICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2Zw dShYODZFTVVMX0ZQVV95bW0pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCB2ZXgucGZ4 ICkKICAgICAgICAgewogICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUoc3NlMik7Ci0gICAgICAg ICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1 KFg4NkVNVUxfRlBVX3htbSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAg ICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShtbXgpOwogICAgICAgICAgICAgdmNw dV9tdXN0X2hhdmUobW14ZXh0KTsKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfbW14 LCAmZmljKTsKKyAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfbW14KTsKICAgICAgICAg fQogCiAgICAgICAgIC8qCkBAIC03MTIxLDcgKzcwNjQsNiBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgaWYgKCAhbW9kZV82NGJpdCgpICkKICAgICAgICAgICAgIHZleC53ID0gMDsKICAgICAgICAg b3BjWzFdID0gbW9kcm0gJiAweGM3OwotICAgICAgICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRF UyArIDI7CiAgICAgICAgIG9wY1syXSA9IDB4YzM7CiAKICAgICAgICAgY29weV9SRVhfVkVYKG9w YywgcmV4X3ByZWZpeCwgdmV4KTsKQEAgLTcxMzQsNiArNzA3Niw3IEBAIHg4Nl9lbXVsYXRlKAog ICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOwogICAgICAgICBvcGNbMF0gPSBiOwog ICAgICAgICBvcGNbMV0gPSBtb2RybTsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyAr IDI7CiAgICAgICAgIC8qIFJlc3RvcmUgaGlnaCBiaXQgb2YgWE1NIGRlc3RpbmF0aW9uLiAqLwog ICAgICAgICBpZiAoIHNmZW5jZSApCiAgICAgICAgIHsKQEAgLTcxODAsMTIgKzcxMjMsMTIgQEAg eDg2X2VtdWxhdGUoCiAgICAgICAgIGlmICggdmV4LnBmeCApCiAgICAgICAgIHsKICAgICBzaW1k XzBmMzhfY29tbW9uOgotICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0sICZmaWMp OworICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0pOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUo bW14KTsKLSAgICAgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfbW14LCAmZmljKTsKKyAgICAg ICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfbW14KTsKICAgICAgICAgfQogICAgICAgICBvcGMg PSBpbml0X3ByZWZpeGVzKHN0dWIpOwogICAgICAgICBvcGNbMF0gPSAweDM4OwpAQCAtNzE5OCw3 ICs3MTQxLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2ZXguYiA9IDE7CiAgICAgICAg ICAgICBvcGNbMl0gJj0gMHgzODsKICAgICAgICAgfQotICAgICAgICBmaWMuaW5zbl9ieXRlcyA9 IFBGWF9CWVRFUyArIDM7CisgICAgICAgIGluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAzOwogICAg ICAgICBicmVhazsKIAogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgxOSk6 IC8qIHZicm9hZGNhc3RzZCB4bW0vbTY0LHltbSAqLwpAQCAtNzIyNiwxMyArNzE2OSwxMyBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgaWYgKCB2ZXgub3BjeCA9PSB2ZXhfbm9uZSApCiAgICAgICAg IHsKICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKHNzZTRfMSk7Ci0gICAgICAg ICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1 KFg4NkVNVUxfRlBVX3htbSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAg ICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7 CiAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwotICAgICAgICAgICAg Z2V0X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2ZwdShYODZF TVVMX0ZQVV95bW0pOwogICAgICAgICB9CiAKICAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhz dHViKTsKQEAgLTcyNTEsMjEgKzcxOTQsMTkgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2 ZXguYiA9IDE7CiAgICAgICAgICAgICBvcGNbMV0gJj0gMHgzODsKICAgICAgICAgfQotICAgICAg ICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7CisgICAgICAgIGluc25fYnl0ZXMgPSBQ RlhfQllURVMgKyAyOwogICAgICAgICBvcGNbMl0gPSAweGMzOwogICAgICAgICBpZiAoIHZleC5v cGN4ID09IHZleF9ub25lICkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ292ZXIgZm9yIGV4 dHJhIHByZWZpeCBieXRlLiAqLwogICAgICAgICAgICAgLS1vcGM7Ci0gICAgICAgICAgICArK2Zp Yy5pbnNuX2J5dGVzOworICAgICAgICAgICAgKytpbnNuX2J5dGVzOwogICAgICAgICB9CiAKICAg ICAgICAgY29weV9SRVhfVkVYKG9wYywgcmV4X3ByZWZpeCwgdmV4KTsKICAgICAgICAgZW11bGF0 ZV9zdHViKCIrbSIgKCptbXZhbHApLCAiYSIgKG1tdmFscCkpOwogCiAgICAgICAgIHB1dF9zdHVi KHN0dWIpOwotICAgICAgICBjaGVja194bW1fZXhuKCZmaWMpOwotCiAgICAgICAgIHN0YXRlLT5z aW1kX3NpemUgPSBzaW1kX25vbmU7CiAgICAgICAgIGRzdC50eXBlID0gT1BfTk9ORTsKICAgICAg ICAgYnJlYWs7CkBAIC03MzU0LDcgKzcyOTUsNyBAQCB4ODZfZW11bGF0ZSgKIAogICAgICAgICBn ZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9NRU0gfHwgdmV4LncsIEVYQ19VRCk7 CiAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eCk7Ci0gICAgICAgIGdldF9mcHUo WDg2RU1VTF9GUFVfeW1tLCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95bW0p OwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdoaWxlIHdlIGNhbid0IHJlYXNvbmFibHkgcHJv dmlkZSBmdWxseSBjb3JyZWN0IGJlaGF2aW9yIGhlcmUKQEAgLTc0MDMsNyArNzM0NCw3IEBAIHg4 Nl9lbXVsYXRlKAogICAgICAgICByZXhfcHJlZml4ICY9IH5SRVhfQjsKICAgICAgICAgdmV4LmIg PSAxOwogICAgICAgICBvcGNbMV0gPSBtb2RybSAmIDB4Mzg7Ci0gICAgICAgIGZpYy5pbnNuX2J5 dGVzID0gUEZYX0JZVEVTICsgMjsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7 CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzQ1Miw3ICs3MzkzLDcgQEAgeDg2X2VtdWxh dGUoCiAKICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGVhLnR5cGUgIT0gT1BfTUVNLCBF WENfVUQpOwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngyKTsKLSAgICAgICAg Z2V0X2ZwdShYODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxf RlBVX3ltbSk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogV2hpbGUgd2UgY2FuJ3QgcmVhc29u YWJseSBwcm92aWRlIGZ1bGx5IGNvcnJlY3QgYmVoYXZpb3IgaGVyZQpAQCAtNzQ5OSw3ICs3NDQw LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIHJleF9wcmVmaXggJj0gflJFWF9COwogICAgICAg ICB2ZXguYiA9IDE7CiAgICAgICAgIG9wY1sxXSA9IG1vZHJtICYgMHgzODsKLSAgICAgICAgZmlj Lmluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAyOworICAgICAgICBpbnNuX2J5dGVzID0gUEZYX0JZ VEVTICsgMjsKIAogICAgICAgICBicmVhazsKICAgICB9CkBAIC03NTIyLDcgKzc0NjMsNyBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zaWJfaW5k ZXggPT0gbWFza19yZWcsIEVYQ19VRCk7CiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigh Y3B1X2hhc19hdngsIEVYQ19VRCk7CiAgICAgICAgIHZjcHVfbXVzdF9oYXZlKGF2eDIpOwotICAg ICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ltbSwgJmZpYyk7CisgICAgICAgIGdldF9mcHUoWDg2 RU1VTF9GUFVfeW1tKTsKIAogICAgICAgICAvKiBSZWFkIGRlc3RpbmF0aW9uLCBpbmRleCwgYW5k IG1hc2sgcmVnaXN0ZXJzLiAqLwogICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOwpA QCAtNzg1OSwxMiArNzgwMCwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgaWYgKCB2ZXgucGZ4 ICkKICAgICAgICAgewogICAgIHNpbWRfMGYzYV9jb21tb246Ci0gICAgICAgICAgICBnZXRfZnB1 KFg4NkVNVUxfRlBVX3htbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBV X3htbSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBo b3N0X2FuZF92Y3B1X211c3RfaGF2ZShtbXgpOwotICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVM X0ZQVV9tbXgsICZmaWMpOworICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9tbXgpOwog ICAgICAgICB9CiAgICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1Yik7CiAgICAgICAgIG9w Y1swXSA9IDB4M2E7CkBAIC03ODc4LDcgKzc4MTksNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAg ICAgIG9wY1syXSAmPSAweDM4OwogICAgICAgICB9CiAgICAgICAgIG9wY1szXSA9IGltbTE7Ci0g ICAgICAgIGZpYy5pbnNuX2J5dGVzID0gUEZYX0JZVEVTICsgNDsKKyAgICAgICAgaW5zbl9ieXRl cyA9IFBGWF9CWVRFUyArIDQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBYODZFTVVMX09Q Q182NigweDBmM2EsIDB4MTQpOiAvKiBwZXh0cmIgJGltbTgseG1tLHIvbSAqLwpAQCAtNzg4Niw3 ICs3ODI3LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgY2FzZSBYODZFTVVMX09QQ182NigweDBmM2Es IDB4MTYpOiAvKiBwZXh0cntkLHF9ICRpbW04LHhtbSxyL20gKi8KICAgICBjYXNlIFg4NkVNVUxf T1BDXzY2KDB4MGYzYSwgMHgxNyk6IC8qIGV4dHJhY3RwcyAkaW1tOCx4bW0sci9tICovCiAgICAg ICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKHNzZTRfMSk7Ci0gICAgICAgIGdldF9mcHUoWDg2 RU1VTF9GUFVfeG1tLCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0pOwog CiAgICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1Yik7CiAgICAgICAgIG9wYysrWzBdID0g MHgzYTsKQEAgLTc4OTksMjAgKzc4NDAsMTYgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICB2 ZXgudyA9IDA7CiAgICAgICAgIG9wY1sxXSA9IG1vZHJtICYgMHgzODsKICAgICAgICAgb3BjWzJd ID0gaW1tMTsKLSAgICAgICAgZmljLmluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAzOwogICAgICAg ICBvcGNbM10gPSAweGMzOwogICAgICAgICBpZiAoIHZleC5vcGN4ID09IHZleF9ub25lICkKICAg ICAgICAgewogICAgICAgICAgICAgLyogQ292ZXIgZm9yIGV4dHJhIHByZWZpeCBieXRlLiAqLwog ICAgICAgICAgICAgLS1vcGM7Ci0gICAgICAgICAgICArK2ZpYy5pbnNuX2J5dGVzOwogICAgICAg ICB9CiAKICAgICAgICAgY29weV9SRVhfVkVYKG9wYywgcmV4X3ByZWZpeCwgdmV4KTsKICAgICAg ICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPW0iIChkc3QudmFsKSA6ICJhIiAoJmRzdC52YWwpKTsK LQogICAgICAgICBwdXRfc3R1YihzdHViKTsKLSAgICAgICAgY2hlY2tfeG1tX2V4bigmZmljKTsK IAogICAgICAgICBBU1NFUlQoIXN0YXRlLT5zaW1kX3NpemUpOwogICAgICAgICBkc3QuYnl0ZXMg PSBkc3QudHlwZSA9PSBPUF9SRUcgfHwgYiA9PSAweDE3ID8gNCA6IDEgPDwgKGIgJiAzKTsKQEAg LTc5MjYsNyArNzg2Myw3IEBAIHg4Nl9lbXVsYXRlKAogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVY XzY2KDB4MGYzYSwgMHgxNyk6IC8qIHZleHRyYWN0cHMgJGltbTgseG1tLHIvbSAqLwogICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LmwgfHwgdmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7 CiAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eCk7Ci0gICAgICAgIGdldF9mcHUo WDg2RU1VTF9GUFVfeW1tLCAmZmljKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95bW0p OwogICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOwogICAgICAgICBnb3RvIHBleHRy OwogCkBAIC03OTQ4LDE3ICs3ODg1LDE1IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgb3Bj WzFdICY9IDB4Mzg7CiAgICAgICAgIH0KICAgICAgICAgb3BjWzJdID0gaW1tMTsKLSAgICAgICAg ZmljLmluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAzOworICAgICAgICBpbnNuX2J5dGVzID0gUEZY X0JZVEVTICsgMzsKICAgICAgICAgb3BjWzNdID0gMHhjMzsKIAogICAgICAgICBjb3B5X1ZFWChv cGMsIHZleCk7CiAgICAgICAgIC8qIExhdGNoIE1YQ1NSIC0gd2UgbWF5IG5lZWQgdG8gcmVzdG9y ZSBpdCBiZWxvdy4gKi8KICAgICAgICAgaW52b2tlX3N0dWIoInN0bXhjc3IgJVtteGNzcl0iLCAi IiwKLSAgICAgICAgICAgICAgICAgICAgIj1tIiAoKm1tdmFscCksICIrbSIgKGZpYy5leG5fcmFp c2VkKSwgW214Y3NyXSAiPW0iIChteGNzcikKLSAgICAgICAgICAgICAgICAgICAgOiAiYSIgKG1t dmFscCkpOworICAgICAgICAgICAgICAgICAgICAiPW0iICgqbW12YWxwKSwgW214Y3NyXSAiPW0i IChteGNzcikgOiAiYSIgKG1tdmFscCkpOwogCiAgICAgICAgIHB1dF9zdHViKHN0dWIpOwotICAg ICAgICBjaGVja194bW1fZXhuKCZmaWMpOwogCiAgICAgICAgIGlmICggZWEudHlwZSA9PSBPUF9N RU0gKQogICAgICAgICB7CkBAIC03OTc3LDcgKzc5MTIsNyBAQCB4ODZfZW11bGF0ZSgKICAgICBj YXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYzYSwgMHgyMCk6IC8qIHBpbnNyYiAkaW1tOCxyMzIvbTgs eG1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ182NigweDBmM2EsIDB4MjIpOiAvKiBwaW5zcntk LHF9ICRpbW04LHIvbSx4bW0gKi8KICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoc3Nl NF8xKTsKLSAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV94bW0sICZmaWMpOworICAgICAgICBn ZXRfZnB1KFg4NkVNVUxfRlBVX3htbSk7CiAgICAgICAgIG1lbWNweShtbXZhbHAsICZzcmMudmFs LCBvcF9ieXRlcyk7CiAgICAgICAgIGVhLnR5cGUgPSBPUF9NRU07CiAgICAgICAgIG9wX2J5dGVz ID0gc3JjLmJ5dGVzOwpAQCAtODA4NywxMyArODAyMiwxMyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgaWYgKCB2ZXgub3BjeCA9PSB2ZXhfbm9uZSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGhv c3RfYW5kX3ZjcHVfbXVzdF9oYXZlKHNzZTRfMik7Ci0gICAgICAgICAgICBnZXRfZnB1KFg4NkVN VUxfRlBVX3htbSwgJmZpYyk7CisgICAgICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3htbSk7 CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBnZW5lcmF0 ZV9leGNlcHRpb25faWYodmV4LmwgfHwgdmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7CiAgICAgICAg ICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngpOwotICAgICAgICAgICAgZ2V0X2ZwdShY ODZFTVVMX0ZQVV95bW0sICZmaWMpOworICAgICAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV95 bW0pOwogICAgICAgICB9CiAKICAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKQEAg LTgxMTQsMTMgKzgwNDksMTMgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZ290byBk b25lOwogICAgICAgICB9CiAgICAgICAgIG9wY1syXSA9IGltbTE7Ci0gICAgICAgIGZpYy5pbnNu X2J5dGVzID0gUEZYX0JZVEVTICsgMzsKKyAgICAgICAgaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyAr IDM7CiAgICAgICAgIG9wY1szXSA9IDB4YzM7CiAgICAgICAgIGlmICggdmV4Lm9wY3ggPT0gdmV4 X25vbmUgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBDb3ZlciBmb3IgZXh0cmEgcHJlZml4 IGJ5dGUuICovCiAgICAgICAgICAgICAtLW9wYzsKLSAgICAgICAgICAgICsrZmljLmluc25fYnl0 ZXM7CisgICAgICAgICAgICArK2luc25fYnl0ZXM7CiAgICAgICAgIH0KIAogICAgICAgICBjb3B5 X1JFWF9WRVgob3BjLCByZXhfcHJlZml4LCB2ZXgpOwpAQCAtODM1MSw3ICs4Mjg2LDcgQEAgeDg2 X2VtdWxhdGUoCiAKICAgICAgICAgaWYgKCAhb3BjICkKICAgICAgICAgICAgIEJVRygpOwotICAg ICAgICBvcGNbZmljLmluc25fYnl0ZXMgLSBQRlhfQllURVNdID0gMHhjMzsKKyAgICAgICAgb3Bj W2luc25fYnl0ZXMgLSBQRlhfQllURVNdID0gMHhjMzsKICAgICAgICAgY29weV9SRVhfVkVYKG9w YywgcmV4X3ByZWZpeCwgdmV4KTsKIAogICAgICAgICBpZiAoIGVhLnR5cGUgPT0gT1BfTUVNICkK QEAgLTg0MjksMTMgKzgzNjQsMTEgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGlmICggbGlrZWx5 KChjdHh0LT5vcGNvZGUgJiB+KFg4NkVNVUxfT1BDX1BGWF9NQVNLIHwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWDg2RU1VTF9PUENfRU5DT0RJTkdfTUFTSykpICE9CiAg ICAgICAgICAgICAgICAgICAgIFg4NkVNVUxfT1BDKDB4MGYsIDB4ZjcpKSApCi0gICAgICAgICAg ICBpbnZva2Vfc3R1YigiIiwgIiIsICIrbSIgKCptbXZhbHApLCAiK20iIChmaWMuZXhuX3JhaXNl ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiYSIgKG1tdmFscCkpOworICAg ICAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iICgqbW12YWxwKSA6ICJhIiAobW12YWxw KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwgIittIiAo Km1tdmFscCkgOiAiRCIgKG1tdmFscCkpOwogCiAgICAgICAgIHB1dF9zdHViKHN0dWIpOwotICAg ICAgICBjaGVja194bW1fZXhuKCZmaWMpOwogICAgIH0KIAogICAgIHN3aXRjaCAoIGRzdC50eXBl ICkKQEAgLTg0NzgsNyArODQxMSw4IEBAIHg4Nl9lbXVsYXRlKAogICAgIH0KIAogIGNvbXBsZXRl X2luc246IC8qIENvbW1pdCBzaGFkb3cgcmVnaXN0ZXIgc3RhdGUuICovCi0gICAgcHV0X2ZwdSgm ZmljLCBmYWxzZSwgc3RhdGUsIGN0eHQsIG9wcyk7CisgICAgcHV0X2ZwdShmcHVfdHlwZSwgZmFs c2UsIHN0YXRlLCBjdHh0LCBvcHMpOworICAgIGZwdV90eXBlID0gWDg2RU1VTF9GUFVfbm9uZTsK IAogICAgIC8qIFplcm8gdGhlIHVwcGVyIDMyIGJpdHMgb2YgJXJpcCBpZiBub3QgaW4gNjQtYml0 IG1vZGUuICovCiAgICAgaWYgKCAhbW9kZV82NGJpdCgpICkKQEAgLTg1MDIsMTMgKzg0MzYsMjIg QEAgeDg2X2VtdWxhdGUoCiAgICAgY3R4dC0+cmVncy0+ZWZsYWdzICY9IH5YODZfRUZMQUdTX1JG OwogCiAgZG9uZToKLSAgICBwdXRfZnB1KCZmaWMsIGZpYy5pbnNuX2J5dGVzID4gMCAmJiBkc3Qu dHlwZSA9PSBPUF9NRU0sIHN0YXRlLCBjdHh0LCBvcHMpOworICAgIHB1dF9mcHUoZnB1X3R5cGUs IGluc25fYnl0ZXMgPiAwICYmIGRzdC50eXBlID09IE9QX01FTSwgc3RhdGUsIGN0eHQsIG9wcyk7 CiAgICAgcHV0X3N0dWIoc3R1Yik7CiAgICAgcmV0dXJuIHJjOwogI3VuZGVmIHN0YXRlCiAKICNp ZmRlZiBfX1hFTl9fCiAgZW11bGF0aW9uX3N0dWJfZmFpbHVyZToKKyAgICBnZW5lcmF0ZV9leGNl cHRpb25faWYoc3R1Yl9leG4uaW5mby5maWVsZHMudHJhcG5yID09IEVYQ19NRiwgRVhDX01GKTsK KyAgICBpZiAoIHN0dWJfZXhuLmluZm8uZmllbGRzLnRyYXBuciA9PSBFWENfWE0gKQorICAgIHsK KyAgICAgICAgdW5zaWduZWQgbG9uZyBjcjQ7CisKKyAgICAgICAgaWYgKCAhb3BzLT5yZWFkX2Ny IHx8ICFvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCkgPT0gWDg2RU1VTF9PS0FZICkKKyAgICAg ICAgICAgIGNyNCA9IFg4Nl9DUjRfT1NYTU1FWENQVDsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0 aW9uKGNyNCAmIFg4Nl9DUjRfT1NYTU1FWENQVCA/IEVYQ19YTSA6IEVYQ19VRCk7CisgICAgfQog ICAgIGdwcmludGsoWEVOTE9HX1dBUk5JTkcsCiAgICAgICAgICAgICAiZXhjZXB0aW9uICV1IChl Yz0lMDR4KSBpbiBlbXVsYXRpb24gc3R1YiAobGluZSAldSlcbiIsCiAgICAgICAgICAgICBzdHVi X2V4bi5pbmZvLmZpZWxkcy50cmFwbnIsIHN0dWJfZXhuLmluZm8uZmllbGRzLmVjLAotLS0gYS94 ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAorKysgYi94ZW4vYXJjaC94ODYv eDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaApAQCAtNDQ2LDEyICs0NDYsOCBAQCBzdHJ1Y3QgeDg2 X2VtdWxhdGVfb3BzCiAKICAgICAvKgogICAgICAqIGdldF9mcHU6IExvYWQgZW11bGF0ZWQgZW52 aXJvbm1lbnQncyBGUFUgc3RhdGUgb250byBwcm9jZXNzb3IuCi0gICAgICogIEBleG5fY2FsbGJh Y2s6IE9uIGFueSBGUFUgb3IgU0lNRCBleGNlcHRpb24sIHBhc3MgY29udHJvbCB0bwotICAgICAq ICAgICAgICAgICAgICAgICAoKmV4Y2VwdGlvbl9jYWxsYmFjaykoZXhjZXB0aW9uX2NhbGxiYWNr X2FyZywgcmVncykuCiAgICAgICovCiAgICAgaW50ICgqZ2V0X2ZwdSkoCi0gICAgICAgIHZvaWQg KCpleGNlcHRpb25fY2FsbGJhY2spKHZvaWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCi0g ICAgICAgIHZvaWQgKmV4Y2VwdGlvbl9jYWxsYmFja19hcmcsCiAgICAgICAgIGVudW0geDg2X2Vt dWxhdGVfZnB1X3R5cGUgdHlwZSwKICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0 eHQpOwogCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZjcHUuaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS92Y3B1LmgKQEAgLTE5OCwxMCArMTk4LDYgQEAgc3RydWN0IGh2bV92 Y3B1IHsKIAogICAgIHN0cnVjdCBodm1fdmNwdV9pbyAgaHZtX2lvOwogCi0gICAgLyogQ2FsbGJh Y2sgaW50byB4ODZfZW11bGF0ZSB3aGVuIGVtdWxhdGluZyBGUFUvTU1YL1hNTSBpbnN0cnVjdGlv bnMuICovCi0gICAgdm9pZCAoKmZwdV9leGNlcHRpb25fY2FsbGJhY2spKHZvaWQgKiwgc3RydWN0 IGNwdV91c2VyX3JlZ3MgKik7Ci0gICAgdm9pZCAqZnB1X2V4Y2VwdGlvbl9jYWxsYmFja19hcmc7 Ci0KICAgICAvKiBQZW5kaW5nIGh3L3N3IGludGVycnVwdCAoLnZlY3RvciA9IC0xIG1lYW5zIG5v dGhpbmcgcGVuZGluZykuICovCiAgICAgc3RydWN0IHg4Nl9ldmVudCAgICAgaW5qZWN0X2V2ZW50 OwogCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=