From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3C1089A5D for ; Thu, 9 May 2019 10:03:41 +0000 (UTC) From: Arkadiusz Hiler Date: Thu, 9 May 2019 13:03:24 +0300 Message-Id: <20190509100326.29224-3-arkadiusz.hiler@intel.com> In-Reply-To: <20190509100326.29224-1-arkadiusz.hiler@intel.com> References: <20190509100326.29224-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 3/5] runner_tests: Operate within defined behavior List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Petri Latvala List-ID: UXVvdGluZyBsaWIvaWd0X2NvcmUuYzoKICogLSBDb2RlIGJsb2NrcyB3aXRoIG1hZ2ljIGNvbnRy b2wgZmxvdyBhcmUgaW1wbGVtZW50ZWQgd2l0aCBzZXRqbXAoKSBhbmQKICogICBsb25nam1wKCku IFRoaXMgYXBwbGllcyB0byAjaWd0X2ZpeHR1cmUgYW5kICNpZ3Rfc3VidGVzdCBibG9ja3MgYW5k IGFsbCB0aGUKICogICB0aHJlZSB2YXJpYW50cyB0byBmaW5pc2ggdGVzdDogaWd0X3N1Y2Nlc3Mo KSwgaWd0X3NraXAoKSBhbmQgaWd0X2ZhaWwoKS4KICogICBNb3N0bHkgdGhpcyBpcyBvZiBubyBj b25jZXJuLCBleGNlcHQgd2hlbiBzdWNoIGEgY29udHJvbCBibG9jayBjaGFuZ2VzCiAqICAgc3Rh Y2sgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIHNhbWUgZnVuY3Rpb24gYXMgdGhlIGNvbnRyb2wg YmxvY2sgcmVzaWRlcy4KICogICBBbnkgc3RvcmUvbG9hZCBiZWhhdmlvdXIgYWZ0ZXIgYSBsb25n am1wKCkgaXMgaWxsLWRlZmluZWQgZm9yIHRoZXNlCiAqICAgdmFyaWFibGVzLiBBdm9pZCBzdWNo IGNvZGUuCiAqCiAqICAgUXVvdGluZyB0aGUgbWFuIHBhZ2UgZm9yIGxvbmdqbXAoKToKICoKICog ICAiVGhlIHZhbHVlcyBvZiBhdXRvbWF0aWMgdmFyaWFibGVzIGFyZSB1bnNwZWNpZmllZCBhZnRl ciBhIGNhbGwgdG8KICogICBsb25nam1wKCkgaWYgdGhleSBtZWV0IGFsbCB0aGUgZm9sbG93aW5n IGNyaXRlcmlhOiIKICogICAgLSAidGhleSBhcmUgbG9jYWwgdG8gdGhlIGZ1bmN0aW9uIHRoYXQg bWFkZSB0aGUgY29ycmVzcG9uZGluZyBzZXRqbXAoKSBjYWxsOwogKiAgICAtICJ0aGVpciB2YWx1 ZXMgYXJlIGNoYW5nZWQgYmV0d2VlbiB0aGUgY2FsbHMgdG8gc2V0am1wKCkgYW5kIGxvbmdqbXAo KTsgYW5kCiAqICAgIC0gInRoZXkgYXJlIG5vdCBkZWNsYXJlZCBhcyB2b2xhdGlsZS4iCgpXZSBo YXZlIHF1aXRlIGEgZmV3IGlndF9zdWJ0ZXN0X2dyb3VwIHRoYXQgZGVmaW5lIGxvY2FsIHZhcmlh YmxlcyB0bwpzaGFyZSB0aGUgc3RhdGUgYmV0d2VlbiBzdWJ0ZXN0IGFuZCBmaXh0dXJlIChlLmcu IHNldCBvcGVuKCkgaW4gc3VidGVzdCwKY2xvc2UoKSBpbiB0aGUgZm9sbG93aW5nIGZpeHR1cmUp LCBjYXVzaW5nIHRoZSBjb250ZW50cyB0byBiZSB1bmRlZmluZWQuCgpXZSBjYW4gYWxsb2NhdGUg c29tZSBvZiB0aGVtIHVzaW5nIG1hbGxvYyBhbmQgbWFrZSB0aGUgb3RoZXJzIHZvbGF0aWxlCnRv IGJlIGJhY2sgb24gdGhlIGRlZmluZWQgZ3JvdW5kcy4KCkNjOiBQZXRyaSBMYXR2YWxhIDxwZXRy aS5sYXR2YWxhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQXJrYWRpdXN6IEhpbGVyIDxhcmth ZGl1c3ouaGlsZXJAaW50ZWwuY29tPgotLS0KIHJ1bm5lci9ydW5uZXJfdGVzdHMuYyB8IDU3MyAr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzMDAgaW5zZXJ0aW9ucygrKSwgMjczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3J1bm5l ci9ydW5uZXJfdGVzdHMuYyBiL3J1bm5lci9ydW5uZXJfdGVzdHMuYwppbmRleCBhZGU3OGIxOC4u MzNlMjg5YTQgMTAwNjQ0Ci0tLSBhL3J1bm5lci9ydW5uZXJfdGVzdHMuYworKysgYi9ydW5uZXIv cnVubmVyX3Rlc3RzLmMKQEAgLTEwLDcgKzEwLDcgQEAKICNpbmNsdWRlICJqb2JfbGlzdC5oIgog I2luY2x1ZGUgImV4ZWN1dG9yLmgiCiAKLXN0YXRpYyBjaGFyIHRlc3RkYXRhZGlyW10gPSBURVNU REFUQV9ESVJFQ1RPUlk7CitzdGF0aWMgY29uc3QgY2hhciB0ZXN0ZGF0YWRpcltdID0gVEVTVERB VEFfRElSRUNUT1JZOwogCiBzdGF0aWMgdm9pZCBpZ3RfYXNzZXJ0X2Vxc3RyKGNvbnN0IGNoYXIg Km9uZSwgY29uc3QgY2hhciAqdHdvKQogewpAQCAtNjUsMTAgKzY1LDEwIEBAIHN0YXRpYyB2b2lk IGpvYl9saXN0X2ZpbHRlcl90ZXN0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZpbHRl cmFyZzEsIGNvbnN0CiAJCQkJIHNpemVfdCBleHBlY3RlZF9ub3JtYWwsIHNpemVfdCBleHBlY3Rl ZF9tdWx0aXBsZSkKIHsKIAlpbnQgbXVsdGlwbGU7Ci0Jc3RydWN0IHNldHRpbmdzIHNldHRpbmdz OworCXN0cnVjdCBzZXR0aW5ncyAqc2V0dGluZ3MgPSBtYWxsb2Moc2l6ZW9mKCpzZXR0aW5ncykp OwogCiAJaWd0X2ZpeHR1cmUKLQkJaW5pdF9zZXR0aW5ncygmc2V0dGluZ3MpOworCQlpbml0X3Nl dHRpbmdzKHNldHRpbmdzKTsKIAogCWZvciAobXVsdGlwbGUgPSAwOyBtdWx0aXBsZSA8IDI7IG11 bHRpcGxlKyspIHsKIAkJaWd0X3N1YnRlc3RfZigiam9iLWxpc3QtZmlsdGVycy0lcy0lcyIsIG5h bWUsIG11bHRpcGxlID8gIm11bHRpcGxlIiA6ICJub3JtYWwiKSB7CkBAIC04NCw5ICs4NCw5IEBA IHN0YXRpYyB2b2lkIGpvYl9saXN0X2ZpbHRlcl90ZXN0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGNoYXIgKmZpbHRlcmFyZzEsIGNvbnN0CiAJCQlzaXplX3Qgc2l6ZTsKIAogCQkJaW5pdF9qb2Jf bGlzdCgmbGlzdCk7Ci0JCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2 KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKKwkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9u cyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CiAKLQkJCXN1Y2Nl c3MgPSBjcmVhdGVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncyk7CisJCQlzdWNjZXNzID0gY3Jl YXRlX2pvYl9saXN0KCZsaXN0LCBzZXR0aW5ncyk7CiAJCQlzaXplID0gbGlzdC5zaXplOwogCiAJ CQlpZiAoc3VjY2VzcykKQEAgLTk5LDggKzk5LDEwIEBAIHN0YXRpYyB2b2lkIGpvYl9saXN0X2Zp bHRlcl90ZXN0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZpbHRlcmFyZzEsIGNvbnN0 CiAJCX0KIAl9CiAKLQlpZ3RfZml4dHVyZQotCQlmcmVlX3NldHRpbmdzKCZzZXR0aW5ncyk7CisJ aWd0X2ZpeHR1cmUgeworCQlmcmVlX3NldHRpbmdzKHNldHRpbmdzKTsKKwkJZnJlZShzZXR0aW5n cyk7CisJfQogfQogCiBzdGF0aWMgdm9pZCBjbGVhcl9kaXJlY3RvcnlfZmQoaW50IGRpcmZkKQpA QCAtMTk2LDEwICsxOTgsMTAgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2V4ZWN1dGlvbl9yZXN1bHRz X2V4aXN0KGludCBkaXJmZCkKIAogaWd0X21haW4KIHsKLQlzdHJ1Y3Qgc2V0dGluZ3Mgc2V0dGlu Z3M7CisJc3RydWN0IHNldHRpbmdzICpzZXR0aW5ncyA9IG1hbGxvYyhzaXplb2YoKnNldHRpbmdz KSk7CiAKIAlpZ3RfZml4dHVyZQotCQlpbml0X3NldHRpbmdzKCZzZXR0aW5ncyk7CisJCWluaXRf c2V0dGluZ3Moc2V0dGluZ3MpOwogCiAJaWd0X3N1YnRlc3QoImRlZmF1bHQtc2V0dGluZ3MiKSB7 CiAJCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgInJ1bm5lciIsCkBAIC0yMDcsMjYgKzIwOSwyNiBA QCBpZ3RfbWFpbgogCQkJCSAgICAgICAicGF0aC10by1yZXN1bHRzIiwKIAkJfTsKIAotCQlpZ3Rf YXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0 dGluZ3MpKTsKKwkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChj aGFyKiopYXJndiwgc2V0dGluZ3MpKTsKIAotCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmFib3J0 X21hc2ssIDApOwotCQlpZ3RfYXNzZXJ0KCFzZXR0aW5ncy50ZXN0X2xpc3QpOwotCQlpZ3RfYXNz ZXJ0X2Vxc3RyKHNldHRpbmdzLm5hbWUsICJwYXRoLXRvLXJlc3VsdHMiKTsKLQkJaWd0X2Fzc2Vy dCghc2V0dGluZ3MuZHJ5X3J1bik7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuaW5jbHVkZV9y ZWdleGVzLnNpemUsIDApOwotCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmV4Y2x1ZGVfcmVnZXhl cy5zaXplLCAwKTsKLQkJaWd0X2Fzc2VydCghc2V0dGluZ3Muc3luYyk7Ci0JCWlndF9hc3NlcnRf ZXEoc2V0dGluZ3MubG9nX2xldmVsLCBMT0dfTEVWRUxfTk9STUFMKTsKLQkJaWd0X2Fzc2VydCgh c2V0dGluZ3Mub3ZlcndyaXRlKTsKLQkJaWd0X2Fzc2VydCghc2V0dGluZ3MubXVsdGlwbGVfbW9k ZSk7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuaW5hY3Rpdml0eV90aW1lb3V0LCAwKTsKLQkJ aWd0X2Fzc2VydF9lcShzZXR0aW5ncy5vdmVyYWxsX3RpbWVvdXQsIDApOwotCQlpZ3RfYXNzZXJ0 KCFzZXR0aW5ncy51c2Vfd2F0Y2hkb2cpOwotCQlpZ3RfYXNzZXJ0KHN0cnN0cihzZXR0aW5ncy50 ZXN0X3Jvb3QsICJ0ZXN0LXJvb3QtZGlyIikgIT0gTlVMTCk7Ci0JCWlndF9hc3NlcnQoc3Ryc3Ry KHNldHRpbmdzLnJlc3VsdHNfcGF0aCwgInBhdGgtdG8tcmVzdWx0cyIpICE9IE5VTEwpOworCQlp Z3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5hYm9ydF9tYXNrLCAwKTsKKwkJaWd0X2Fzc2VydCghc2V0 dGluZ3MtPnRlc3RfbGlzdCk7CisJCWlndF9hc3NlcnRfZXFzdHIoc2V0dGluZ3MtPm5hbWUsICJw YXRoLXRvLXJlc3VsdHMiKTsKKwkJaWd0X2Fzc2VydCghc2V0dGluZ3MtPmRyeV9ydW4pOworCQlp Z3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5pbmNsdWRlX3JlZ2V4ZXMuc2l6ZSwgMCk7CisJCWlndF9h c3NlcnRfZXEoc2V0dGluZ3MtPmV4Y2x1ZGVfcmVnZXhlcy5zaXplLCAwKTsKKwkJaWd0X2Fzc2Vy dCghc2V0dGluZ3MtPnN5bmMpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5sb2dfbGV2ZWws IExPR19MRVZFTF9OT1JNQUwpOworCQlpZ3RfYXNzZXJ0KCFzZXR0aW5ncy0+b3ZlcndyaXRlKTsK KwkJaWd0X2Fzc2VydCghc2V0dGluZ3MtPm11bHRpcGxlX21vZGUpOworCQlpZ3RfYXNzZXJ0X2Vx KHNldHRpbmdzLT5pbmFjdGl2aXR5X3RpbWVvdXQsIDApOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRp bmdzLT5vdmVyYWxsX3RpbWVvdXQsIDApOworCQlpZ3RfYXNzZXJ0KCFzZXR0aW5ncy0+dXNlX3dh dGNoZG9nKTsKKwkJaWd0X2Fzc2VydChzdHJzdHIoc2V0dGluZ3MtPnRlc3Rfcm9vdCwgInRlc3Qt cm9vdC1kaXIiKSAhPSBOVUxMKTsKKwkJaWd0X2Fzc2VydChzdHJzdHIoc2V0dGluZ3MtPnJlc3Vs dHNfcGF0aCwgInBhdGgtdG8tcmVzdWx0cyIpICE9IE5VTEwpOwogCi0JCWlndF9hc3NlcnQoIXNl dHRpbmdzLnBpZ2xpdF9zdHlsZV9kbWVzZyk7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuZG1l c2dfd2Fybl9sZXZlbCwgNCk7CisJCWlndF9hc3NlcnQoIXNldHRpbmdzLT5waWdsaXRfc3R5bGVf ZG1lc2cpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5kbWVzZ193YXJuX2xldmVsLCA0KTsK IAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CkBAIC0yNjIsMTAgKzI2NCwxMCBAQCBpZ3RfbWFp bgogCX0KIAogCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJY29uc3QgY2hhciB0bXB0ZXN0bGlzdFtd ID0gInRtcC50ZXN0bGlzdCI7CiAJCWNoYXIgZGlybmFtZVtdID0gInRtcGRpclhYWFhYWCI7Ci0J CWNoYXIgdG1wdGVzdGxpc3RbXSA9ICJ0bXAudGVzdGxpc3QiOwogCQljaGFyIHBhdGh0b3Rlc3Rs aXN0WzY0XTsKLQkJY2hhciAqcGF0aDsKKwkJdm9sYXRpbGUgY2hhciAqcGF0aDsKIAogCQlpZ3Rf Zml4dHVyZSB7CiAJCQlpbnQgZGlyZmQsIGZkOwpAQCAtMjkwLDE5ICsyOTIsMTkgQEAgaWd0X21h aW4KIAkJCQkJICAgICAgIGRpcm5hbWUsCiAJCQl9OwogCi0JCQlpZ3RfYXNzZXJ0KHBhcnNlX29w dGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKKwkJCWln dF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNl dHRpbmdzKSk7CiAKIAkJCXBhdGggPSByZWFscGF0aCh0ZXN0ZGF0YWRpciwgTlVMTCk7CiAJCQlp Z3RfYXNzZXJ0KHBhdGggIT0gTlVMTCk7Ci0JCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLnRl c3Rfcm9vdCwgcGF0aCk7Ci0JCQlmcmVlKHBhdGgpOworCQkJaWd0X2Fzc2VydF9lcXN0cihzZXR0 aW5ncy0+dGVzdF9yb290LCAoY2hhciopcGF0aCk7CisJCQlmcmVlKCh2b2lkKilwYXRoKTsKIAkJ CXBhdGggPSByZWFscGF0aChkaXJuYW1lLCBOVUxMKTsKIAkJCWlndF9hc3NlcnQocGF0aCAhPSBO VUxMKTsKLQkJCWlndF9hc3NlcnRfZXFzdHIoc2V0dGluZ3MucmVzdWx0c19wYXRoLCBwYXRoKTsK LQkJCWZyZWUocGF0aCk7CisJCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLT5yZXN1bHRzX3Bh dGgsIChjaGFyKilwYXRoKTsKKwkJCWZyZWUoKHZvaWQqKXBhdGgpOwogCQkJcGF0aCA9IHJlYWxw YXRoKHBhdGh0b3Rlc3RsaXN0LCBOVUxMKTsKIAkJCWlndF9hc3NlcnQocGF0aCAhPSBOVUxMKTsK LQkJCWlndF9hc3NlcnRfZXFzdHIoc2V0dGluZ3MudGVzdF9saXN0LCBwYXRoKTsKKwkJCWlndF9h c3NlcnRfZXFzdHIoc2V0dGluZ3MtPnRlc3RfbGlzdCwgKGNoYXIqKXBhdGgpOwogCQl9CiAKIAkJ aWd0X2ZpeHR1cmUgewpAQCAtMzEzLDcgKzMxNSw3IEBAIGlndF9tYWluCiAJCQljbG9zZShkaXJm ZCk7CiAJCQlybWRpcihkaXJuYW1lKTsKIAotCQkJZnJlZShwYXRoKTsKKwkJCWZyZWUoKHZvaWQq KXBhdGgpOwogCQl9CiAJfQogCkBAIC0zMjQsMjQgKzMyNiwyNCBAQCBpZ3RfbWFpbgogCQl9Owog CiAJCXNldGVudigiSUdUX1RFU1RfUk9PVCIsIHRlc3RkYXRhZGlyLCAxKTsKLQkJaWd0X2Fzc2Vy dChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdz KSk7CisJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioq KWFyZ3YsIHNldHRpbmdzKSk7CiAKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5hYm9ydF9tYXNr LCAwKTsKLQkJaWd0X2Fzc2VydCghc2V0dGluZ3MudGVzdF9saXN0KTsKLQkJaWd0X2Fzc2VydF9l cXN0cihzZXR0aW5ncy5uYW1lLCAicGF0aC10by1yZXN1bHRzIik7Ci0JCWlndF9hc3NlcnQoIXNl dHRpbmdzLmRyeV9ydW4pOwotCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmluY2x1ZGVfcmVnZXhl cy5zaXplLCAwKTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5leGNsdWRlX3JlZ2V4ZXMuc2l6 ZSwgMCk7Ci0JCWlndF9hc3NlcnQoIXNldHRpbmdzLnN5bmMpOwotCQlpZ3RfYXNzZXJ0X2VxKHNl dHRpbmdzLmxvZ19sZXZlbCwgTE9HX0xFVkVMX05PUk1BTCk7Ci0JCWlndF9hc3NlcnQoIXNldHRp bmdzLm92ZXJ3cml0ZSk7Ci0JCWlndF9hc3NlcnQoIXNldHRpbmdzLm11bHRpcGxlX21vZGUpOwot CQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmluYWN0aXZpdHlfdGltZW91dCwgMCk7Ci0JCWlndF9h c3NlcnRfZXEoc2V0dGluZ3Mub3ZlcmFsbF90aW1lb3V0LCAwKTsKLQkJaWd0X2Fzc2VydCghc2V0 dGluZ3MudXNlX3dhdGNoZG9nKTsKLQkJaWd0X2Fzc2VydChzdHJzdHIoc2V0dGluZ3MudGVzdF9y b290LCB0ZXN0ZGF0YWRpcikgIT0gTlVMTCk7Ci0JCWlndF9hc3NlcnQoc3Ryc3RyKHNldHRpbmdz LnJlc3VsdHNfcGF0aCwgInBhdGgtdG8tcmVzdWx0cyIpICE9IE5VTEwpOwotCQlpZ3RfYXNzZXJ0 KCFzZXR0aW5ncy5waWdsaXRfc3R5bGVfZG1lc2cpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdz LT5hYm9ydF9tYXNrLCAwKTsKKwkJaWd0X2Fzc2VydCghc2V0dGluZ3MtPnRlc3RfbGlzdCk7CisJ CWlndF9hc3NlcnRfZXFzdHIoc2V0dGluZ3MtPm5hbWUsICJwYXRoLXRvLXJlc3VsdHMiKTsKKwkJ aWd0X2Fzc2VydCghc2V0dGluZ3MtPmRyeV9ydW4pOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdz LT5pbmNsdWRlX3JlZ2V4ZXMuc2l6ZSwgMCk7CisJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MtPmV4 Y2x1ZGVfcmVnZXhlcy5zaXplLCAwKTsKKwkJaWd0X2Fzc2VydCghc2V0dGluZ3MtPnN5bmMpOwor CQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5sb2dfbGV2ZWwsIExPR19MRVZFTF9OT1JNQUwpOwor CQlpZ3RfYXNzZXJ0KCFzZXR0aW5ncy0+b3ZlcndyaXRlKTsKKwkJaWd0X2Fzc2VydCghc2V0dGlu Z3MtPm11bHRpcGxlX21vZGUpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5pbmFjdGl2aXR5 X3RpbWVvdXQsIDApOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5vdmVyYWxsX3RpbWVvdXQs IDApOworCQlpZ3RfYXNzZXJ0KCFzZXR0aW5ncy0+dXNlX3dhdGNoZG9nKTsKKwkJaWd0X2Fzc2Vy dChzdHJzdHIoc2V0dGluZ3MtPnRlc3Rfcm9vdCwgdGVzdGRhdGFkaXIpICE9IE5VTEwpOworCQlp Z3RfYXNzZXJ0KHN0cnN0cihzZXR0aW5ncy0+cmVzdWx0c19wYXRoLCAicGF0aC10by1yZXN1bHRz IikgIT0gTlVMTCk7CisJCWlndF9hc3NlcnQoIXNldHRpbmdzLT5waWdsaXRfc3R5bGVfZG1lc2cp OwogCX0KIAogCWlndF9maXh0dXJlIHsKQEAgLTM3MiwzMCArMzc0LDMwIEBAIGlndF9tYWluCiAJ CQkJICAgICAgICJwYXRoLXRvLXJlc3VsdHMiLAogCQl9OwogCi0JCWlndF9hc3NlcnQocGFyc2Vf b3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOworCQlp Z3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBz ZXR0aW5ncykpOwogCi0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuYWJvcnRfbWFzaywgQUJPUlRf VEFJTlQgfCBBQk9SVF9MT0NLREVQKTsKLQkJaWd0X2Fzc2VydChzdHJzdHIoc2V0dGluZ3MudGVz dF9saXN0LCAicGF0aC10by10ZXN0LWxpc3QiKSAhPSBOVUxMKTsKLQkJaWd0X2Fzc2VydF9lcXN0 cihzZXR0aW5ncy5uYW1lLCAiZm9vIik7Ci0JCWlndF9hc3NlcnQoc2V0dGluZ3MuZHJ5X3J1bik7 Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuaW5jbHVkZV9yZWdleGVzLnNpemUsIDIpOwotCQlp Z3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLmluY2x1ZGVfcmVnZXhlcy5yZWdleF9zdHJpbmdzWzBd LCAicGF0dGVybjEiKTsKLQkJaWd0X2Fzc2VydF9lcXN0cihzZXR0aW5ncy5pbmNsdWRlX3JlZ2V4 ZXMucmVnZXhfc3RyaW5nc1sxXSwgInBhdHRlcm4yIik7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGlu Z3MuZXhjbHVkZV9yZWdleGVzLnNpemUsIDIpOwotCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdz LmV4Y2x1ZGVfcmVnZXhlcy5yZWdleF9zdHJpbmdzWzBdLCAieHBhdHRlcm4xIik7Ci0JCWlndF9h c3NlcnRfZXFzdHIoc2V0dGluZ3MuZXhjbHVkZV9yZWdleGVzLnJlZ2V4X3N0cmluZ3NbMV0sICJ4 cGF0dGVybjIiKTsKLQkJaWd0X2Fzc2VydChzZXR0aW5ncy5zeW5jKTsKLQkJaWd0X2Fzc2VydF9l cShzZXR0aW5ncy5sb2dfbGV2ZWwsIExPR19MRVZFTF9WRVJCT1NFKTsKLQkJaWd0X2Fzc2VydChz ZXR0aW5ncy5vdmVyd3JpdGUpOwotCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLm11bHRpcGxlX21vZGUp OwotCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmluYWN0aXZpdHlfdGltZW91dCwgMjcpOwotCQlp Z3RfYXNzZXJ0X2VxKHNldHRpbmdzLm92ZXJhbGxfdGltZW91dCwgMzYwKTsKLQkJaWd0X2Fzc2Vy dChzZXR0aW5ncy51c2Vfd2F0Y2hkb2cpOwotCQlpZ3RfYXNzZXJ0KHN0cnN0cihzZXR0aW5ncy50 ZXN0X3Jvb3QsICJ0ZXN0LXJvb3QtZGlyIikgIT0gTlVMTCk7Ci0JCWlndF9hc3NlcnQoc3Ryc3Ry KHNldHRpbmdzLnJlc3VsdHNfcGF0aCwgInBhdGgtdG8tcmVzdWx0cyIpICE9IE5VTEwpOworCQlp Z3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5hYm9ydF9tYXNrLCBBQk9SVF9UQUlOVCB8IEFCT1JUX0xP Q0tERVApOworCQlpZ3RfYXNzZXJ0KHN0cnN0cihzZXR0aW5ncy0+dGVzdF9saXN0LCAicGF0aC10 by10ZXN0LWxpc3QiKSAhPSBOVUxMKTsKKwkJaWd0X2Fzc2VydF9lcXN0cihzZXR0aW5ncy0+bmFt ZSwgImZvbyIpOworCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLT5kcnlfcnVuKTsKKwkJaWd0X2Fzc2Vy dF9lcShzZXR0aW5ncy0+aW5jbHVkZV9yZWdleGVzLnNpemUsIDIpOworCQlpZ3RfYXNzZXJ0X2Vx c3RyKHNldHRpbmdzLT5pbmNsdWRlX3JlZ2V4ZXMucmVnZXhfc3RyaW5nc1swXSwgInBhdHRlcm4x Iik7CisJCWlndF9hc3NlcnRfZXFzdHIoc2V0dGluZ3MtPmluY2x1ZGVfcmVnZXhlcy5yZWdleF9z dHJpbmdzWzFdLCAicGF0dGVybjIiKTsKKwkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy0+ZXhjbHVk ZV9yZWdleGVzLnNpemUsIDIpOworCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLT5leGNsdWRl X3JlZ2V4ZXMucmVnZXhfc3RyaW5nc1swXSwgInhwYXR0ZXJuMSIpOworCQlpZ3RfYXNzZXJ0X2Vx c3RyKHNldHRpbmdzLT5leGNsdWRlX3JlZ2V4ZXMucmVnZXhfc3RyaW5nc1sxXSwgInhwYXR0ZXJu MiIpOworCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLT5zeW5jKTsKKwkJaWd0X2Fzc2VydF9lcShzZXR0 aW5ncy0+bG9nX2xldmVsLCBMT0dfTEVWRUxfVkVSQk9TRSk7CisJCWlndF9hc3NlcnQoc2V0dGlu Z3MtPm92ZXJ3cml0ZSk7CisJCWlndF9hc3NlcnQoc2V0dGluZ3MtPm11bHRpcGxlX21vZGUpOwor CQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5pbmFjdGl2aXR5X3RpbWVvdXQsIDI3KTsKKwkJaWd0 X2Fzc2VydF9lcShzZXR0aW5ncy0+b3ZlcmFsbF90aW1lb3V0LCAzNjApOworCQlpZ3RfYXNzZXJ0 KHNldHRpbmdzLT51c2Vfd2F0Y2hkb2cpOworCQlpZ3RfYXNzZXJ0KHN0cnN0cihzZXR0aW5ncy0+ dGVzdF9yb290LCAidGVzdC1yb290LWRpciIpICE9IE5VTEwpOworCQlpZ3RfYXNzZXJ0KHN0cnN0 cihzZXR0aW5ncy0+cmVzdWx0c19wYXRoLCAicGF0aC10by1yZXN1bHRzIikgIT0gTlVMTCk7CiAK LQkJaWd0X2Fzc2VydChzZXR0aW5ncy5waWdsaXRfc3R5bGVfZG1lc2cpOwotCQlpZ3RfYXNzZXJ0 X2VxKHNldHRpbmdzLmRtZXNnX3dhcm5fbGV2ZWwsIDMpOworCQlpZ3RfYXNzZXJ0KHNldHRpbmdz LT5waWdsaXRfc3R5bGVfZG1lc2cpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5kbWVzZ193 YXJuX2xldmVsLCAzKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiZG1lc2ctd2Fybi1sZXZlbC1pbmZl cnJlZCIpIHsKQEAgLTQwNCwxMCArNDA2LDEwIEBAIGlndF9tYWluCiAJCQkJICAgICAgICJwYXRo LXRvLXJlc3VsdHMiLAogCQl9OwogCi0JCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9T SVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOworCQlpZ3RfYXNzZXJ0KHBhcnNl X29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOwogCi0J CWlndF9hc3NlcnQoIXNldHRpbmdzLnBpZ2xpdF9zdHlsZV9kbWVzZyk7Ci0JCWlndF9hc3NlcnRf ZXEoc2V0dGluZ3MuZG1lc2dfd2Fybl9sZXZlbCwgNCk7CisJCWlndF9hc3NlcnQoIXNldHRpbmdz LT5waWdsaXRfc3R5bGVfZG1lc2cpOworCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5kbWVzZ193 YXJuX2xldmVsLCA0KTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiZG1lc2ctd2Fybi1sZXZlbC1pbmZl cnJlZC13aXRoLXBpZ2xpdC1zdHlsZSIpIHsKQEAgLTQxNywxMCArNDE5LDEwIEBAIGlndF9tYWlu CiAJCQkJICAgICAgICJwYXRoLXRvLXJlc3VsdHMiLAogCQl9OwogCi0JCWlndF9hc3NlcnQocGFy c2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwor CQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2 LCBzZXR0aW5ncykpOwogCi0JCWlndF9hc3NlcnQoc2V0dGluZ3MucGlnbGl0X3N0eWxlX2RtZXNn KTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5kbWVzZ193YXJuX2xldmVsLCA1KTsKKwkJaWd0 X2Fzc2VydChzZXR0aW5ncy0+cGlnbGl0X3N0eWxlX2RtZXNnKTsKKwkJaWd0X2Fzc2VydF9lcShz ZXR0aW5ncy0+ZG1lc2dfd2Fybl9sZXZlbCwgNSk7CiAJfQogCiAJaWd0X3N1YnRlc3QoImRtZXNn LXdhcm4tbGV2ZWwtb3ZlcnJpZGFibGUtd2l0aC1waWdsaXQtc3R5bGUiKSB7CkBAIC00MzEsMTAg KzQzMywxMCBAQCBpZ3RfbWFpbgogCQkJCSAgICAgICAicGF0aC10by1yZXN1bHRzIiwKIAkJfTsK IAotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilh cmd2LCAmc2V0dGluZ3MpKTsKKwkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUo YXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKIAotCQlpZ3RfYXNzZXJ0KHNldHRpbmdz LnBpZ2xpdF9zdHlsZV9kbWVzZyk7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuZG1lc2dfd2Fy bl9sZXZlbCwgMyk7CisJCWlndF9hc3NlcnQoc2V0dGluZ3MtPnBpZ2xpdF9zdHlsZV9kbWVzZyk7 CisJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MtPmRtZXNnX3dhcm5fbGV2ZWwsIDMpOwogCX0KIAog CWlndF9zdWJ0ZXN0KCJpbnZhbGlkLW9wdGlvbiIpIHsKQEAgLTQ0NCwxNCArNDQ2LDE0IEBAIGln dF9tYWluCiAJCQkJICAgICAgICJyZXN1bHRzLXBhdGgiLAogCQl9OwogCi0JCWlndF9hc3NlcnQo IXBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3Mp KTsKKwkJaWd0X2Fzc2VydCghcGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioq KWFyZ3YsIHNldHRpbmdzKSk7CiAJfQogCiAJaWd0X3N1YnRlc3QoInBhdGhzLW1pc3NpbmciKSB7 CiAJCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgInJ1bm5lciIsCiAJCQkJICAgICAgICItbyIsCiAJ CX07Ci0JCWlndF9hc3NlcnQoIXBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIq Kilhcmd2LCAmc2V0dGluZ3MpKTsKKwkJaWd0X2Fzc2VydCghcGFyc2Vfb3B0aW9ucyhBUlJBWV9T SVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CiAJfQogCiAJaWd0X3N1YnRlc3Qo ImxvZy1sZXZlbHMiKSB7CkBAIC00NjEsMTYgKzQ2MywxNiBAQCBpZ3RfbWFpbgogCQkJCSAgICAg ICAicmVzdWx0cy1wYXRoIiwKIAkJfTsKIAotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJS QVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKLQkJaWd0X2Fzc2VydF9l cShzZXR0aW5ncy5sb2dfbGV2ZWwsIExPR19MRVZFTF9OT1JNQUwpOworCQlpZ3RfYXNzZXJ0KHBh cnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOwor CQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5sb2dfbGV2ZWwsIExPR19MRVZFTF9OT1JNQUwpOwog CiAJCWFyZ3ZbMl0gPSAicXVpZXQiOwotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlf U0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKLQkJaWd0X2Fzc2VydF9lcShz ZXR0aW5ncy5sb2dfbGV2ZWwsIExPR19MRVZFTF9RVUlFVCk7CisJCWlndF9hc3NlcnQocGFyc2Vf b3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CisJCWln dF9hc3NlcnRfZXEoc2V0dGluZ3MtPmxvZ19sZXZlbCwgTE9HX0xFVkVMX1FVSUVUKTsKIAogCQlh cmd2WzJdID0gInZlcmJvc2UiOwotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0la RShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0 aW5ncy5sb2dfbGV2ZWwsIExPR19MRVZFTF9WRVJCT1NFKTsKKwkJaWd0X2Fzc2VydChwYXJzZV9v cHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJaWd0 X2Fzc2VydF9lcShzZXR0aW5ncy0+bG9nX2xldmVsLCBMT0dfTEVWRUxfVkVSQk9TRSk7CiAJfQog CiAJaWd0X3N1YnRlc3QoImFib3J0LWNvbmRpdGlvbnMiKSB7CkBAIC00ODAsMzUgKzQ4MiwzNSBA QCBpZ3RfbWFpbgogCQkJCSAgICAgICAicmVzdWx0cy1wYXRoIiwKIAkJfTsKIAotCQlpZ3RfYXNz ZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGlu Z3MpKTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5hYm9ydF9tYXNrLCBBQk9SVF9UQUlOVCk7 CisJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFy Z3YsIHNldHRpbmdzKSk7CisJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MtPmFib3J0X21hc2ssIEFC T1JUX1RBSU5UKTsKIAogCQlhcmd2WzFdID0gIi0tYWJvcnQtb24tbW9uaXRvcmVkLWVycm9yPWxv Y2tkZXAiOwotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNo YXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5hYm9ydF9t YXNrLCBBQk9SVF9MT0NLREVQKTsKKwkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJ WkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJaWd0X2Fzc2VydF9lcShzZXR0 aW5ncy0+YWJvcnRfbWFzaywgQUJPUlRfTE9DS0RFUCk7CiAKIAkJYXJndlsxXSA9ICItLWFib3J0 LW9uLW1vbml0b3JlZC1lcnJvcj10YWludCI7Ci0JCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhB UlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwotCQlpZ3RfYXNzZXJ0 X2VxKHNldHRpbmdzLmFib3J0X21hc2ssIEFCT1JUX1RBSU5UKTsKKwkJaWd0X2Fzc2VydChwYXJz ZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJ aWd0X2Fzc2VydF9lcShzZXR0aW5ncy0+YWJvcnRfbWFzaywgQUJPUlRfVEFJTlQpOwogCiAJCWFy Z3ZbMV0gPSAiLS1hYm9ydC1vbi1tb25pdG9yZWQtZXJyb3I9bG9ja2RlcCx0YWludCI7Ci0JCWln dF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZz ZXR0aW5ncykpOwotCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmFib3J0X21hc2ssIEFCT1JUX1RB SU5UIHwgQUJPUlRfTE9DS0RFUCk7CisJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9T SVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CisJCWlndF9hc3NlcnRfZXEoc2V0 dGluZ3MtPmFib3J0X21hc2ssIEFCT1JUX1RBSU5UIHwgQUJPUlRfTE9DS0RFUCk7CiAKIAkJYXJn dlsxXSA9ICItLWFib3J0LW9uLW1vbml0b3JlZC1lcnJvcj10YWludCxsb2NrZGVwIjsKLQkJaWd0 X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNl dHRpbmdzKSk7Ci0JCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuYWJvcnRfbWFzaywgQUJPUlRfVEFJ TlQgfCBBQk9SVF9MT0NLREVQKTsKKwkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJ WkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJaWd0X2Fzc2VydF9lcShzZXR0 aW5ncy0+YWJvcnRfbWFzaywgQUJPUlRfVEFJTlQgfCBBQk9SVF9MT0NLREVQKTsKIAogCQlhcmd2 WzFdID0gIi0tYWJvcnQtb24tbW9uaXRvcmVkLWVycm9yPWFsbCI7Ci0JCWlndF9hc3NlcnQocGFy c2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwot CQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLmFib3J0X21hc2ssIEFCT1JUX0FMTCk7CisJCWlndF9h c3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRp bmdzKSk7CisJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MtPmFib3J0X21hc2ssIEFCT1JUX0FMTCk7 CiAKIAkJYXJndlsxXSA9ICItLWFib3J0LW9uLW1vbml0b3JlZC1lcnJvcj0iOwotCQlpZ3RfYXNz ZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGlu Z3MpKTsKLQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy5hYm9ydF9tYXNrLCAwKTsKKwkJaWd0X2Fz c2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGlu Z3MpKTsKKwkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy0+YWJvcnRfbWFzaywgMCk7CiAKIAkJYXJn dlsxXSA9ICItLWFib3J0LW9uLW1vbml0b3JlZC1lcnJvcj1kb2Vzbm90ZXhpc3QiOwotCQlpZ3Rf YXNzZXJ0KCFwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNl dHRpbmdzKSk7CisJCWlndF9hc3NlcnQoIXBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwg KGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOwogCiAJfQogCkBAIC01MjAsMjkgKzUyMiwyOSBAQCBp Z3RfbWFpbgogCQkJCSAgICAgICAicmVzdWx0cy1wYXRoIiwKIAkJfTsKIAotCQlpZ3RfYXNzZXJ0 KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3Mp KTsKKwkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiop YXJndiwgc2V0dGluZ3MpKTsKIAotCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLm5hbWUsICJm b28iKTsKLQkJaWd0X2Fzc2VydChzZXR0aW5ncy5kcnlfcnVuKTsKLQkJaWd0X2Fzc2VydCghc2V0 dGluZ3MudGVzdF9saXN0KTsKLQkJaWd0X2Fzc2VydCghc2V0dGluZ3Muc3luYyk7CisJCWlndF9h c3NlcnRfZXFzdHIoc2V0dGluZ3MtPm5hbWUsICJmb28iKTsKKwkJaWd0X2Fzc2VydChzZXR0aW5n cy0+ZHJ5X3J1bik7CisJCWlndF9hc3NlcnQoIXNldHRpbmdzLT50ZXN0X2xpc3QpOworCQlpZ3Rf YXNzZXJ0KCFzZXR0aW5ncy0+c3luYyk7CiAKIAkJYXJndlsxXSA9ICItLXRlc3QtbGlzdCI7CiAJ CWFyZ3ZbM10gPSAiLS1zeW5jIjsKIAotCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlf U0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCAmc2V0dGluZ3MpKTsKKwkJaWd0X2Fzc2VydChwYXJz ZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKIAot CQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLm5hbWUsICJyZXN1bHRzLXBhdGgiKTsKLQkJaWd0 X2Fzc2VydCghc2V0dGluZ3MuZHJ5X3J1bik7Ci0JCWlndF9hc3NlcnQoc3Ryc3RyKHNldHRpbmdz LnRlc3RfbGlzdCwgImZvbyIpICE9IE5VTEwpOwotCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLnN5bmMp OworCQlpZ3RfYXNzZXJ0X2Vxc3RyKHNldHRpbmdzLT5uYW1lLCAicmVzdWx0cy1wYXRoIik7CisJ CWlndF9hc3NlcnQoIXNldHRpbmdzLT5kcnlfcnVuKTsKKwkJaWd0X2Fzc2VydChzdHJzdHIoc2V0 dGluZ3MtPnRlc3RfbGlzdCwgImZvbyIpICE9IE5VTEwpOworCQlpZ3RfYXNzZXJ0KHNldHRpbmdz LT5zeW5jKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CiAJCWNoYXIgZmlsZW5hbWVbXSA9 ICJ0bXBsaXN0WFhYWFhYIjsKLQkJaW50IGZkID0gLTE7CiAKIAkJaWd0X2ZpeHR1cmUgeworCQkJ aW50IGZkOwogCQkJaWd0X3JlcXVpcmUoKGZkID0gbWtzdGVtcChmaWxlbmFtZSkpID49IDApOwog CQkJY2xvc2UoZmQpOwogCQl9CkBAIC01NTQsOSArNTU2LDkgQEAgaWd0X21haW4KIAkJCQkJICAg ICAgICJwYXRoLXRvLXJlc3VsdHMiLAogCQkJfTsKIAotCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRp b25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdzKSk7CisJCQlpZ3Rf YXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBzZXR0 aW5ncykpOwogCi0JCQlpZ3RfYXNzZXJ0KHZhbGlkYXRlX3NldHRpbmdzKCZzZXR0aW5ncykpOwor CQkJaWd0X2Fzc2VydCh2YWxpZGF0ZV9zZXR0aW5ncyhzZXR0aW5ncykpOwogCQl9CiAKIAkJaWd0 X2ZpeHR1cmUgewpAQCAtNTczLDE4ICs1NzUsMTggQEAgaWd0X21haW4KIAkJfTsKIAogCQlpZ3Rf YXNzZXJ0X2x0KG9wZW4obm9zdWNoZmlsZSwgT19SRE9OTFkpLCAwKTsKLQkJaWd0X2Fzc2VydChw YXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdzKSk7 CisJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFy Z3YsIHNldHRpbmdzKSk7CiAKLQkJaWd0X2Fzc2VydCghdmFsaWRhdGVfc2V0dGluZ3MoJnNldHRp bmdzKSk7CisJCWlndF9hc3NlcnQoIXZhbGlkYXRlX3NldHRpbmdzKHNldHRpbmdzKSk7CiAJfQog CiAJaWd0X3N1YnRlc3RfZ3JvdXAgewogCQljaGFyIGRpcm5hbWVbXSA9ICJ0bXBkaXJYWFhYWFgi OwotCQlzdHJ1Y3Qgam9iX2xpc3QgbGlzdDsKKwkJc3RydWN0IGpvYl9saXN0ICpsaXN0ID0gbWFs bG9jKHNpemVvZigqbGlzdCkpOwogCiAJCWlndF9maXh0dXJlIHsKIAkJCWlndF9yZXF1aXJlKG1r ZHRlbXAoZGlybmFtZSkgIT0gTlVMTCk7Ci0JCQlpbml0X2pvYl9saXN0KCZsaXN0KTsKKwkJCWlu aXRfam9iX2xpc3QobGlzdCk7CiAJCX0KIAogCQlpZ3Rfc3VidGVzdCgiam9iLWxpc3Qtbm8tdGVz dC1saXN0LXR4dCIpIHsKQEAgLTU5MywxNCArNTk1LDE1IEBAIGlndF9tYWluCiAJCQkJCSAgICAg ICAicGF0aC10by1yZXN1bHRzIiwKIAkJCX07CiAKLQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9u cyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOworCQkJaWd0X2Fz c2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGlu Z3MpKTsKIAotCQkJaWd0X2Fzc2VydCghY3JlYXRlX2pvYl9saXN0KCZsaXN0LCAmc2V0dGluZ3Mp KTsKKwkJCWlndF9hc3NlcnQoIWNyZWF0ZV9qb2JfbGlzdChsaXN0LCBzZXR0aW5ncykpOwogCQl9 CiAKIAkJaWd0X2ZpeHR1cmUgewogCQkJcm1kaXIoZGlybmFtZSk7Ci0JCQlmcmVlX2pvYl9saXN0 KCZsaXN0KTsKKwkJCWZyZWVfam9iX2xpc3QobGlzdCk7CisJCQlmcmVlKGxpc3QpOwogCQl9CiAJ fQogCkBAIC02MTQsMTcgKzYxNywxOCBAQCBpZ3RfbWFpbgogCiAJaWd0X3N1YnRlc3RfZ3JvdXAg ewogCQljaGFyIGZpbGVuYW1lW10gPSAidG1wbGlzdFhYWFhYWCI7Ci0JCWNoYXIgdGVzdGxpc3R0 ZXh0W10gPSAiaWd0QHN1Y2Nlc3N0ZXN0QGZpcnN0LXN1YnRlc3RcbiIKKwkJY29uc3QgY2hhciB0 ZXN0bGlzdHRleHRbXSA9ICJpZ3RAc3VjY2Vzc3Rlc3RAZmlyc3Qtc3VidGVzdFxuIgogCQkJImln dEBzdWNjZXNzdGVzdEBzZWNvbmQtc3VidGVzdFxuIgogCQkJImlndEBub3N1YnRlc3RzXG4iOwot CQlpbnQgZmQgPSAtMSwgbXVsdGlwbGU7Ci0JCXN0cnVjdCBqb2JfbGlzdCBsaXN0OworCQlpbnQg bXVsdGlwbGU7CisJCXN0cnVjdCBqb2JfbGlzdCAqbGlzdCA9IG1hbGxvYyhzaXplb2YoKmxpc3Qp KTsKIAogCQlpZ3RfZml4dHVyZSB7CisJCQlpbnQgZmQ7CiAJCQlpZ3RfcmVxdWlyZSgoZmQgPSBt a3N0ZW1wKGZpbGVuYW1lKSkgPj0gMCk7CiAJCQlpZ3RfcmVxdWlyZSh3cml0ZShmZCwgdGVzdGxp c3R0ZXh0LCBzdHJsZW4odGVzdGxpc3R0ZXh0KSkgPT0gc3RybGVuKHRlc3RsaXN0dGV4dCkpOwog CQkJY2xvc2UoZmQpOwotCQkJaW5pdF9qb2JfbGlzdCgmbGlzdCk7CisJCQlpbml0X2pvYl9saXN0 KGxpc3QpOwogCQl9CiAKIAkJZm9yIChtdWx0aXBsZSA9IDA7IG11bHRpcGxlIDwgMjsgbXVsdGlw bGUrKykgewpAQCAtNjM2LDIxICs2NDAsMjEgQEAgaWd0X21haW4KIAkJCQkJCSAgICAgICAicGF0 aC10by1yZXN1bHRzIiwKIAkJCQl9OwogCi0JCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFS UkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdzKSk7Ci0JCQkJaWd0X2Fzc2Vy dChjcmVhdGVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncykpOworCQkJCWlndF9hc3NlcnQocGFy c2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CisJ CQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3QobGlzdCwgc2V0dGluZ3MpKTsKIAotCQkJCWln dF9hc3NlcnRfZXEobGlzdC5zaXplLCBtdWx0aXBsZSA/IDIgOiAzKTsKKwkJCQlpZ3RfYXNzZXJ0 X2VxKGxpc3QtPnNpemUsIG11bHRpcGxlID8gMiA6IDMpOwogCi0JCQkJaWd0X2Fzc2VydF9lcXN0 cihsaXN0LmVudHJpZXNbMF0uYmluYXJ5LCAic3VjY2Vzc3Rlc3QiKTsKLQkJCQlpZiAoIW11bHRp cGxlKSBpZ3RfYXNzZXJ0X2Vxc3RyKGxpc3QuZW50cmllc1sxXS5iaW5hcnksICJzdWNjZXNzdGVz dCIpOwotCQkJCWlndF9hc3NlcnRfZXFzdHIobGlzdC5lbnRyaWVzW211bHRpcGxlID8gMSA6IDJd LmJpbmFyeSwgIm5vc3VidGVzdHMiKTsKKwkJCQlpZ3RfYXNzZXJ0X2Vxc3RyKGxpc3QtPmVudHJp ZXNbMF0uYmluYXJ5LCAic3VjY2Vzc3Rlc3QiKTsKKwkJCQlpZiAoIW11bHRpcGxlKSBpZ3RfYXNz ZXJ0X2Vxc3RyKGxpc3QtPmVudHJpZXNbMV0uYmluYXJ5LCAic3VjY2Vzc3Rlc3QiKTsKKwkJCQlp Z3RfYXNzZXJ0X2Vxc3RyKGxpc3QtPmVudHJpZXNbbXVsdGlwbGUgPyAxIDogMl0uYmluYXJ5LCAi bm9zdWJ0ZXN0cyIpOwogCi0JCQkJaWd0X2Fzc2VydF9lcShsaXN0LmVudHJpZXNbMF0uc3VidGVz dF9jb3VudCwgbXVsdGlwbGUgPyAyIDogMSk7Ci0JCQkJaWd0X2Fzc2VydF9lcShsaXN0LmVudHJp ZXNbMV0uc3VidGVzdF9jb3VudCwgbXVsdGlwbGUgPyAwIDogMSk7Ci0JCQkJaWYgKCFtdWx0aXBs ZSkgaWd0X2Fzc2VydF9lcShsaXN0LmVudHJpZXNbMl0uc3VidGVzdF9jb3VudCwgMCk7CisJCQkJ aWd0X2Fzc2VydF9lcShsaXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RfY291bnQsIG11bHRpcGxlID8g MiA6IDEpOworCQkJCWlndF9hc3NlcnRfZXEobGlzdC0+ZW50cmllc1sxXS5zdWJ0ZXN0X2NvdW50 LCBtdWx0aXBsZSA/IDAgOiAxKTsKKwkJCQlpZiAoIW11bHRpcGxlKSBpZ3RfYXNzZXJ0X2VxKGxp c3QtPmVudHJpZXNbMl0uc3VidGVzdF9jb3VudCwgMCk7CiAKLQkJCQlpZ3RfYXNzZXJ0X2Vxc3Ry KGxpc3QuZW50cmllc1swXS5zdWJ0ZXN0c1swXSwgImZpcnN0LXN1YnRlc3QiKTsKLQkJCQlpZ3Rf YXNzZXJ0X2Vxc3RyKGxpc3QuZW50cmllc1ttdWx0aXBsZSA/IDAgOiAxXS5zdWJ0ZXN0c1ttdWx0 aXBsZSA/IDEgOiAwXSwgInNlY29uZC1zdWJ0ZXN0Iik7CisJCQkJaWd0X2Fzc2VydF9lcXN0cihs aXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RzWzBdLCAiZmlyc3Qtc3VidGVzdCIpOworCQkJCWlndF9h c3NlcnRfZXFzdHIobGlzdC0+ZW50cmllc1ttdWx0aXBsZSA/IDAgOiAxXS5zdWJ0ZXN0c1ttdWx0 aXBsZSA/IDEgOiAwXSwgInNlY29uZC1zdWJ0ZXN0Iik7CiAJCQl9CiAKIAkJCWlndF9zdWJ0ZXN0 X2YoImpvYi1saXN0LXRlc3RsaXN0LWZpbHRlcmVkLSVzIiwgbXVsdGlwbGUgPyAibXVsdGlwbGUi IDogIm5vcm1hbCIpIHsKQEAgLTY2MywzMiArNjY3LDMzIEBAIGlndF9tYWluCiAJCQkJCQkgICAg ICAgInBhdGgtdG8tcmVzdWx0cyIsCiAJCQkJfTsKIAotCQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0 aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwotCQkJCWln dF9hc3NlcnQoY3JlYXRlX2pvYl9saXN0KCZsaXN0LCAmc2V0dGluZ3MpKTsKKwkJCQlpZ3RfYXNz ZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5n cykpOworCQkJCWlndF9hc3NlcnQoY3JlYXRlX2pvYl9saXN0KGxpc3QsIHNldHRpbmdzKSk7CiAK LQkJCQlpZ3RfYXNzZXJ0X2VxKGxpc3Quc2l6ZSwgMSk7Ci0JCQkJaWd0X2Fzc2VydF9lcXN0cihs aXN0LmVudHJpZXNbMF0uYmluYXJ5LCAic3VjY2Vzc3Rlc3QiKTsKKwkJCQlpZ3RfYXNzZXJ0X2Vx KGxpc3QtPnNpemUsIDEpOworCQkJCWlndF9hc3NlcnRfZXFzdHIobGlzdC0+ZW50cmllc1swXS5i aW5hcnksICJzdWNjZXNzdGVzdCIpOwogCi0JCQkJaWd0X2Fzc2VydF9lcShsaXN0LmVudHJpZXNb MF0uc3VidGVzdF9jb3VudCwgMSk7Ci0JCQkJaWd0X2Fzc2VydF9lcXN0cihsaXN0LmVudHJpZXNb MF0uc3VidGVzdHNbMF0sICJzZWNvbmQtc3VidGVzdCIpOworCQkJCWlndF9hc3NlcnRfZXEobGlz dC0+ZW50cmllc1swXS5zdWJ0ZXN0X2NvdW50LCAxKTsKKwkJCQlpZ3RfYXNzZXJ0X2Vxc3RyKGxp c3QtPmVudHJpZXNbMF0uc3VidGVzdHNbMF0sICJzZWNvbmQtc3VidGVzdCIpOwogCQkJfQogCQl9 CiAKIAkJaWd0X2ZpeHR1cmUgewogCQkJdW5saW5rKGZpbGVuYW1lKTsKLQkJCWZyZWVfam9iX2xp c3QoJmxpc3QpOworCQkJZnJlZV9qb2JfbGlzdChsaXN0KTsKKwkJCWZyZWUobGlzdCk7CiAJCX0K IAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CiAJCWNoYXIgZGlybmFtZVtdID0gInRtcGRpclhY WFhYWCI7Ci0JCWludCBkaXJmZCA9IC0xLCBmZCA9IC0xOwotCQlzdHJ1Y3Qgc2V0dGluZ3MgY21w X3NldHRpbmdzOworCQl2b2xhdGlsZSBpbnQgZGlyZmQgPSAtMSwgZmQgPSAtMTsKKwkJc3RydWN0 IHNldHRpbmdzICpjbXBfc2V0dGluZ3MgPSBtYWxsb2Moc2l6ZW9mKCpjbXBfc2V0dGluZ3MpKTsK IAogCQlpZ3RfZml4dHVyZSB7CiAJCQlpZ3RfcmVxdWlyZShta2R0ZW1wKGRpcm5hbWUpICE9IE5V TEwpOwogCQkJcm1kaXIoZGlybmFtZSk7Ci0JCQlpbml0X3NldHRpbmdzKCZjbXBfc2V0dGluZ3Mp OworCQkJaW5pdF9zZXR0aW5ncyhjbXBfc2V0dGluZ3MpOwogCQl9CiAKIAkJaWd0X3N1YnRlc3Qo InNldHRpbmdzLXNlcmlhbGl6ZSIpIHsKQEAgLTcxNCw5ICs3MTksOSBAQCBpZ3RfbWFpbgogCQkJ CQkgICAgICAgZGlybmFtZSwKIAkJCX07CiAKLQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhB UlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOworCQkJaWd0X2Fzc2Vy dChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3Mp KTsKIAotCQkJaWd0X2Fzc2VydChzZXJpYWxpemVfc2V0dGluZ3MoJnNldHRpbmdzKSk7CisJCQlp Z3RfYXNzZXJ0KHNlcmlhbGl6ZV9zZXR0aW5ncyhzZXR0aW5ncykpOwogCiAJCQlkaXJmZCA9IG9w ZW4oZGlybmFtZSwgT19ESVJFQ1RPUlksIE9fUkRPTkxZKTsKIAkJCWlndF9hc3NlcnRfZihkaXJm ZCA+PSAwLCAiU2VyaWFsaXphdGlvbiBkaWQgbm90IGNyZWF0ZSB0aGUgcmVzdWx0cyBkaXJlY3Rv cnlcbiIpOwpAQCAtNzI1LDI3ICs3MzAsMzEgQEAgaWd0X21haW4KIAkJCQkgICAgICJPcGVuaW5n ICVzL21ldGFkYXRhLnR4dCBmYWlsZWRcbiIsIGRpcm5hbWUpOwogCQkJY2xvc2UoZmQpOwogCi0J CQlpZ3RfYXNzZXJ0X2YocmVhZF9zZXR0aW5nc19mcm9tX2RpcigmY21wX3NldHRpbmdzLCBkaXJm ZCksICJSZWFkaW5nIHNldHRpbmdzIGZhaWxlZFxuIik7Ci0JCQlhc3NlcnRfc2V0dGluZ3NfZXF1 YWwoJnNldHRpbmdzLCAmY21wX3NldHRpbmdzKTsKKwkJCWlndF9hc3NlcnRfZihyZWFkX3NldHRp bmdzX2Zyb21fZGlyKGNtcF9zZXR0aW5ncywgZGlyZmQpLCAiUmVhZGluZyBzZXR0aW5ncyBmYWls ZWRcbiIpOworCQkJYXNzZXJ0X3NldHRpbmdzX2VxdWFsKHNldHRpbmdzLCBjbXBfc2V0dGluZ3Mp OwogCQl9CiAKIAkJaWd0X2ZpeHR1cmUgewogCQkJY2xvc2UoZmQpOwogCQkJY2xvc2UoZGlyZmQp OwogCQkJY2xlYXJfZGlyZWN0b3J5KGRpcm5hbWUpOwotCQkJZnJlZV9zZXR0aW5ncygmY21wX3Nl dHRpbmdzKTsKKwkJCWZyZWVfc2V0dGluZ3MoY21wX3NldHRpbmdzKTsKKwkJCWZyZWUoY21wX3Nl dHRpbmdzKTsKIAkJfQogCX0KIAogCWlndF9zdWJ0ZXN0X2dyb3VwIHsKIAkJY2hhciBkaXJuYW1l W10gPSAidG1wZGlyWFhYWFhYIjsKLQkJaW50IGRpcmZkID0gLTEsIGZkID0gLTE7Ci0JCXN0cnVj dCBqb2JfbGlzdCBsaXN0LCBjbXBfbGlzdDsKKwkJdm9sYXRpbGUgaW50IGRpcmZkID0gLTEsIGZk ID0gLTE7CisJCXN0cnVjdCBqb2JfbGlzdCAqbGlzdCwgKmNtcF9saXN0OwogCQlpbnQgbXVsdGlw bGU7CiAKKwkJbGlzdCA9IG1hbGxvYyhzaXplb2YoKmxpc3QpKTsKKwkJY21wX2xpc3QgPSBtYWxs b2Moc2l6ZW9mKCpjbXBfbGlzdCkpOworCiAJCWlndF9maXh0dXJlIHsKLQkJCWluaXRfam9iX2xp c3QoJmxpc3QpOwotCQkJaW5pdF9qb2JfbGlzdCgmY21wX2xpc3QpOworCQkJaW5pdF9qb2JfbGlz dChsaXN0KTsKKwkJCWluaXRfam9iX2xpc3QoY21wX2xpc3QpOwogCQkJaWd0X3JlcXVpcmUobWtk dGVtcChkaXJuYW1lKSAhPSBOVUxMKTsKIAkJCXJtZGlyKGRpcm5hbWUpOwogCQl9CkBAIC03NTks MTEgKzc2OCwxMSBAQCBpZ3RfbWFpbgogCQkJCQkJICAgICAgIGRpcm5hbWUsCiAJCQkJfTsKIAot CQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFy Z3YsICZzZXR0aW5ncykpOwotCQkJCWlndF9hc3NlcnQoY3JlYXRlX2pvYl9saXN0KCZsaXN0LCAm c2V0dGluZ3MpKTsKKwkJCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2 KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOworCQkJCWlndF9hc3NlcnQoY3JlYXRlX2pvYl9s aXN0KGxpc3QsIHNldHRpbmdzKSk7CiAKLQkJCQlpZ3RfYXNzZXJ0KHNlcmlhbGl6ZV9zZXR0aW5n cygmc2V0dGluZ3MpKTsKLQkJCQlpZ3RfYXNzZXJ0KHNlcmlhbGl6ZV9qb2JfbGlzdCgmbGlzdCwg JnNldHRpbmdzKSk7CisJCQkJaWd0X2Fzc2VydChzZXJpYWxpemVfc2V0dGluZ3Moc2V0dGluZ3Mp KTsKKwkJCQlpZ3RfYXNzZXJ0KHNlcmlhbGl6ZV9qb2JfbGlzdChsaXN0LCBzZXR0aW5ncykpOwog CiAJCQkJZGlyZmQgPSBvcGVuKGRpcm5hbWUsIE9fRElSRUNUT1JZLCBPX1JET05MWSk7CiAJCQkJ aWd0X2Fzc2VydF9mKGRpcmZkID49IDAsICJTZXJpYWxpemF0aW9uIGRpZCBub3QgY3JlYXRlIHRo ZSByZXN1bHRzIGRpcmVjdG9yeVxuIik7CkBAIC03NzMsMjcgKzc4MiwzMiBAQCBpZ3RfbWFpbgog CQkJCWNsb3NlKGZkKTsKIAkJCQlmZCA9IC0xOwogCi0JCQkJaWd0X2Fzc2VydF9mKHJlYWRfam9i X2xpc3QoJmNtcF9saXN0LCBkaXJmZCksICJSZWFkaW5nIGpvYiBsaXN0IGZhaWxlZFxuIik7Ci0J CQkJYXNzZXJ0X2pvYl9saXN0X2VxdWFsKCZsaXN0LCAmY21wX2xpc3QpOworCQkJCWlndF9hc3Nl cnRfZihyZWFkX2pvYl9saXN0KGNtcF9saXN0LCBkaXJmZCksICJSZWFkaW5nIGpvYiBsaXN0IGZh aWxlZFxuIik7CisJCQkJYXNzZXJ0X2pvYl9saXN0X2VxdWFsKGxpc3QsIGNtcF9saXN0KTsKIAkJ CX0KIAogCQkJaWd0X2ZpeHR1cmUgewogCQkJCWNsb3NlKGZkKTsKIAkJCQljbG9zZShkaXJmZCk7 CiAJCQkJY2xlYXJfZGlyZWN0b3J5KGRpcm5hbWUpOwotCQkJCWZyZWVfam9iX2xpc3QoJmNtcF9s aXN0KTsKLQkJCQlmcmVlX2pvYl9saXN0KCZsaXN0KTsKKwkJCQlmcmVlX2pvYl9saXN0KGNtcF9s aXN0KTsKKwkJCQlmcmVlX2pvYl9saXN0KGxpc3QpOwogCQkJfQogCQl9CisKKwkJaWd0X2ZpeHR1 cmUgeworCQkJZnJlZShjbXBfbGlzdCk7CisJCQlmcmVlKGxpc3QpOworCQl9CiAJfQogCiAJaWd0 X3N1YnRlc3RfZ3JvdXAgewogCQljaGFyIGRpcm5hbWVbXSA9ICJ0bXBkaXJYWFhYWFgiOwotCQlz dHJ1Y3Qgam9iX2xpc3QgbGlzdDsKLQkJaW50IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZk ID0gLTE7CisJCXN0cnVjdCBqb2JfbGlzdCAqbGlzdCA9IG1hbGxvYyhzaXplb2YoKmxpc3QpKTsK KwkJdm9sYXRpbGUgaW50IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZkID0gLTE7CiAKIAkJ aWd0X2ZpeHR1cmUgewotCQkJaW5pdF9qb2JfbGlzdCgmbGlzdCk7CisJCQlpbml0X2pvYl9saXN0 KGxpc3QpOwogCQkJaWd0X3JlcXVpcmUobWtkdGVtcChkaXJuYW1lKSAhPSBOVUxMKTsKIAkJCXJt ZGlyKGRpcm5hbWUpOwogCQl9CkBAIC04MDYsMTkgKzgyMCwxOSBAQCBpZ3RfbWFpbgogCQkJCQkg ICAgICAgZGlybmFtZSwKIAkJCX07CiAKLQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJB WV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwotCQkJaWd0X2Fzc2VydChj cmVhdGVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncykpOworCQkJaWd0X2Fzc2VydChwYXJzZV9v cHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJCWln dF9hc3NlcnQoY3JlYXRlX2pvYl9saXN0KGxpc3QsIHNldHRpbmdzKSk7CiAKLQkJCWlndF9hc3Nl cnQoaW5pdGlhbGl6ZV9leGVjdXRlX3N0YXRlKCZzdGF0ZSwgJnNldHRpbmdzLCAmbGlzdCkpOwor CQkJaWd0X2Fzc2VydChpbml0aWFsaXplX2V4ZWN1dGVfc3RhdGUoJnN0YXRlLCBzZXR0aW5ncywg bGlzdCkpOwogCQkJaWd0X2Fzc2VydF9lcShzdGF0ZS5uZXh0LCAwKTsKIAkJCWlndF9hc3NlcnQo c3RhdGUuZHJ5KTsKLQkJCWlndF9hc3NlcnRfZXEobGlzdC5zaXplLCA1KTsKKwkJCWlndF9hc3Nl cnRfZXEobGlzdC0+c2l6ZSwgNSk7CiAKIAkJCWlndF9hc3NlcnRfZigoZGlyZmQgPSBvcGVuKGRp cm5hbWUsIE9fRElSRUNUT1JZIHwgT19SRE9OTFkpKSA+PSAwLAogCQkJCSAgICAgIkRyeSBydW4g aW5pdGlhbGl6YXRpb24gZGlkbid0IGNyZWF0ZSB0aGUgcmVzdWx0cyBkaXJlY3RvcnkuXG4iKTsK IAogCQkJLyogRXhlY3V0ZSBmcm9tIGp1c3QgaW5pdGlhbGl6ZV9leGVjdXRlX3N0YXRlIHNob3Vs ZCBmYWlsICovCi0JCQlpZ3RfYXNzZXJ0KGV4ZWN1dGUoJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0 KSk7CisJCQlpZ3RfYXNzZXJ0KGV4ZWN1dGUoJnN0YXRlLCBzZXR0aW5ncywgbGlzdCkpOwogCQkJ aWd0X2Fzc2VydF9mKG9wZW5hdChkaXJmZCwgIjAiLCBPX0RJUkVDVE9SWSB8IE9fUkRPTkxZKSA8 IDAsCiAJCQkJICAgICAiRHJ5IHJ1biBleGVjdXRlZCB3aGVuIGl0IHNob3VsZCBub3QgaGF2ZS5c biIpOwogCQkJaWd0X2Fzc2VydF9mKChmZCA9IG9wZW5hdChkaXJmZCwgIm1ldGFkYXRhLnR4dCIs IE9fUkRPTkxZKSkgPj0gMCwKQEAgLTgzMCwxNiArODQ0LDE2IEBAIGlndF9tYWluCiAJCQlpZ3Rf YXNzZXJ0X2YoKGZkID0gb3BlbmF0KGRpcmZkLCAidW5hbWUudHh0IiwgT19SRE9OTFkpKSA8IDAs CiAJCQkJICAgICAiRHJ5IHJ1biBpbml0aWFsaXphdGlvbiBjcmVhdGVkIHVuYW1lLnR4dC5cbiIp OwogCi0JCQlpZ3RfYXNzZXJ0KGluaXRpYWxpemVfZXhlY3V0ZV9zdGF0ZV9mcm9tX3Jlc3VtZShk aXJmZCwgJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQlpZ3RfYXNzZXJ0KGluaXRpYWxp emVfZXhlY3V0ZV9zdGF0ZV9mcm9tX3Jlc3VtZShkaXJmZCwgJnN0YXRlLCBzZXR0aW5ncywgbGlz dCkpOwogCQkJaWd0X2Fzc2VydF9lcShzdGF0ZS5uZXh0LCAwKTsKIAkJCWlndF9hc3NlcnQoIXN0 YXRlLmRyeSk7Ci0JCQlpZ3RfYXNzZXJ0X2VxKGxpc3Quc2l6ZSwgNSk7CisJCQlpZ3RfYXNzZXJ0 X2VxKGxpc3QtPnNpemUsIDUpOwogCQkJLyogaW5pdGlhbGl6ZV9leGVjdXRlX3N0YXRlX2Zyb21f cmVzdW1lKCkgY2xvc2VzIHRoZSBkaXJmZCAqLwogCQkJaWd0X2Fzc2VydF9mKChkaXJmZCA9IG9w ZW4oZGlybmFtZSwgT19ESVJFQ1RPUlkgfCBPX1JET05MWSkpID49IDAsCiAJCQkJICAgICAiRHJ5 IHJ1biByZXN1bWUgc29tZWhvdyBkZWxldGVkIHRoZSByZXN1bHRzIGRpcmVjdG9yeS5cbiIpOwog CiAJCQkvKiBFeGVjdXRlIGZyb20gcmVzdW1lIHNob3VsZCB3b3JrICovCi0JCQlpZ3RfYXNzZXJ0 KGV4ZWN1dGUoJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQlpZ3RfYXNzZXJ0KGV4ZWN1 dGUoJnN0YXRlLCBzZXR0aW5ncywgbGlzdCkpOwogCQkJaWd0X2Fzc2VydF9mKChmZCA9IG9wZW5h dChkaXJmZCwgInVuYW1lLnR4dCIsIE9fUkRPTkxZKSkgPj0gMCwKIAkJCQkgICAgICJEcnkgcnVu IHJlc3VtZSBkaWRuJ3QgY3JlYXRlIHVuYW1lLnR4dC5cbiIpOwogCQkJY2xvc2UoZmQpOwpAQCAt ODU0LDE3ICs4NjgsMTggQEAgaWd0X21haW4KIAkJCWNsb3NlKGRpcmZkKTsKIAkJCWNsb3NlKHN1 YmRpcmZkKTsKIAkJCWNsZWFyX2RpcmVjdG9yeShkaXJuYW1lKTsKLQkJCWZyZWVfam9iX2xpc3Qo Jmxpc3QpOworCQkJZnJlZV9qb2JfbGlzdChsaXN0KTsKKwkJCWZyZWUobGlzdCk7CiAJCX0KIAl9 CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7CiAJCWNoYXIgZGlybmFtZVtdID0gInRtcGRpclhYWFhY WCI7Ci0JCXN0cnVjdCBqb2JfbGlzdCBsaXN0OwotCQlpbnQgZGlyZmQgPSAtMSwgZmQgPSAtMTsK KwkJc3RydWN0IGpvYl9saXN0ICpsaXN0ID0gbWFsbG9jKHNpemVvZigqbGlzdCkpOworCQl2b2xh dGlsZSBpbnQgZGlyZmQgPSAtMSwgZmQgPSAtMTsKIAogCQlpZ3RfZml4dHVyZSB7Ci0JCQlpbml0 X2pvYl9saXN0KCZsaXN0KTsKKwkJCWluaXRfam9iX2xpc3QobGlzdCk7CiAJCQlpZ3RfcmVxdWly ZShta2R0ZW1wKGRpcm5hbWUpICE9IE5VTEwpOwogCQkJcm1kaXIoZGlybmFtZSk7CiAJCX0KQEAg LTg3NiwxMyArODkxLDEzIEBAIGlndF9tYWluCiAJCQkJCSAgICAgICBkaXJuYW1lLAogCQkJfTsK IAotCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiop YXJndiwgJnNldHRpbmdzKSk7Ci0JCQlpZ3RfYXNzZXJ0KGNyZWF0ZV9qb2JfbGlzdCgmbGlzdCwg JnNldHRpbmdzKSk7CisJCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2 KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOworCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xp c3QobGlzdCwgc2V0dGluZ3MpKTsKIAotCQkJaWd0X2Fzc2VydChpbml0aWFsaXplX2V4ZWN1dGVf c3RhdGUoJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQlpZ3RfYXNzZXJ0KGluaXRpYWxp emVfZXhlY3V0ZV9zdGF0ZSgmc3RhdGUsIHNldHRpbmdzLCBsaXN0KSk7CiAKIAkJCWlndF9hc3Nl cnRfZXEoc3RhdGUubmV4dCwgMCk7Ci0JCQlpZ3RfYXNzZXJ0X2VxKGxpc3Quc2l6ZSwgNSk7CisJ CQlpZ3RfYXNzZXJ0X2VxKGxpc3QtPnNpemUsIDUpOwogCQkJaWd0X2Fzc2VydF9mKChkaXJmZCA9 IG9wZW4oZGlybmFtZSwgT19ESVJFQ1RPUlkgfCBPX1JET05MWSkpID49IDAsCiAJCQkJICAgICAi RXhlY3V0ZSBzdGF0ZSBpbml0aWFsaXphdGlvbiBkaWRuJ3QgY3JlYXRlIHRoZSByZXN1bHRzIGRp cmVjdG9yeS5cbiIpOwogCQkJaWd0X2Fzc2VydF9mKChmZCA9IG9wZW5hdChkaXJmZCwgIm1ldGFk YXRhLnR4dCIsIE9fUkRPTkxZKSkgPj0gMCwKQEAgLTkwMSwxNyArOTE2LDE4IEBAIGlndF9tYWlu CiAJCQljbG9zZShmZCk7CiAJCQljbG9zZShkaXJmZCk7CiAJCQljbGVhcl9kaXJlY3RvcnkoZGly bmFtZSk7Ci0JCQlmcmVlX2pvYl9saXN0KCZsaXN0KTsKKwkJCWZyZWVfam9iX2xpc3QobGlzdCk7 CisJCQlmcmVlKGxpc3QpOwogCQl9CiAJfQogCiAJaWd0X3N1YnRlc3RfZ3JvdXAgewogCQljaGFy IGRpcm5hbWVbXSA9ICJ0bXBkaXJYWFhYWFgiOwotCQlzdHJ1Y3Qgam9iX2xpc3QgbGlzdDsKLQkJ aW50IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZkID0gLTE7CisJCXN0cnVjdCBqb2JfbGlz dCAqbGlzdCA9IG1hbGxvYyhzaXplb2YoKmxpc3QpKTsKKwkJdm9sYXRpbGUgaW50IGRpcmZkID0g LTEsIHN1YmRpcmZkID0gLTEsIGZkID0gLTE7CiAKIAkJaWd0X2ZpeHR1cmUgewotCQkJaW5pdF9q b2JfbGlzdCgmbGlzdCk7CisJCQlpbml0X2pvYl9saXN0KGxpc3QpOwogCQkJaWd0X3JlcXVpcmUo bWtkdGVtcChkaXJuYW1lKSAhPSBOVUxMKTsKIAkJfQogCkBAIC05MjMsMTYgKzkzOSwxNiBAQCBp Z3RfbWFpbgogCQkJCQkgICAgICAgdGVzdGRhdGFkaXIsCiAJCQkJCSAgICAgICBkaXJuYW1lLAog CQkJfTsKLQkJCWNoYXIgam91cm5hbHRleHRbXSA9ICJmaXJzdC1zdWJ0ZXN0XG4iOwotCQkJY2hh ciBleGNsdWRlc3RyaW5nW10gPSAiIWZpcnN0LXN1YnRlc3QiOworCQkJY29uc3QgY2hhciBqb3Vy bmFsdGV4dFtdID0gImZpcnN0LXN1YnRlc3RcbiI7CisJCQljb25zdCBjaGFyIGV4Y2x1ZGVzdHJp bmdbXSA9ICIhZmlyc3Qtc3VidGVzdCI7CiAKLQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhB UlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsICZzZXR0aW5ncykpOwotCQkJaWd0X2Fzc2Vy dChjcmVhdGVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncykpOwotCQkJaWd0X2Fzc2VydChsaXN0 LnNpemUgPT0gMSk7Ci0JCQlpZ3RfYXNzZXJ0KGxpc3QuZW50cmllc1swXS5zdWJ0ZXN0X2NvdW50 ID09IDApOworCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChj aGFyKiopYXJndiwgc2V0dGluZ3MpKTsKKwkJCWlndF9hc3NlcnQoY3JlYXRlX2pvYl9saXN0KGxp c3QsIHNldHRpbmdzKSk7CisJCQlpZ3RfYXNzZXJ0KGxpc3QtPnNpemUgPT0gMSk7CisJCQlpZ3Rf YXNzZXJ0KGxpc3QtPmVudHJpZXNbMF0uc3VidGVzdF9jb3VudCA9PSAwKTsKIAotCQkJaWd0X2Fz c2VydChzZXJpYWxpemVfc2V0dGluZ3MoJnNldHRpbmdzKSk7Ci0JCQlpZ3RfYXNzZXJ0KHNlcmlh bGl6ZV9qb2JfbGlzdCgmbGlzdCwgJnNldHRpbmdzKSk7CisJCQlpZ3RfYXNzZXJ0KHNlcmlhbGl6 ZV9zZXR0aW5ncyhzZXR0aW5ncykpOworCQkJaWd0X2Fzc2VydChzZXJpYWxpemVfam9iX2xpc3Qo bGlzdCwgc2V0dGluZ3MpKTsKIAogCQkJaWd0X2Fzc2VydCgoZGlyZmQgPSBvcGVuKGRpcm5hbWUs IE9fRElSRUNUT1JZIHwgT19SRE9OTFkpKSA+PSAwKTsKIAkJCWlndF9hc3NlcnQobWtkaXJhdChk aXJmZCwgIjAiLCAwNzcwKSA9PSAwKTsKQEAgLTk0MCwxNSArOTU2LDE1IEBAIGlndF9tYWluCiAJ CQlpZ3RfYXNzZXJ0KChmZCA9IG9wZW5hdChzdWJkaXJmZCwgImpvdXJuYWwudHh0IiwgT19DUkVB VCB8IE9fV1JPTkxZIHwgT19FWENMLCAwNjYwKSkgPj0gMCk7CiAJCQlpZ3RfYXNzZXJ0KHdyaXRl KGZkLCBqb3VybmFsdGV4dCwgc3RybGVuKGpvdXJuYWx0ZXh0KSkgPT0gc3RybGVuKGpvdXJuYWx0 ZXh0KSk7CiAKLQkJCWZyZWVfam9iX2xpc3QoJmxpc3QpOwotCQkJZnJlZV9zZXR0aW5ncygmc2V0 dGluZ3MpOwotCQkJaWd0X2Fzc2VydChpbml0aWFsaXplX2V4ZWN1dGVfc3RhdGVfZnJvbV9yZXN1 bWUoZGlyZmQsICZzdGF0ZSwgJnNldHRpbmdzLCAmbGlzdCkpOworCQkJZnJlZV9qb2JfbGlzdChs aXN0KTsKKwkJCWZyZWVfc2V0dGluZ3Moc2V0dGluZ3MpOworCQkJaWd0X2Fzc2VydChpbml0aWFs aXplX2V4ZWN1dGVfc3RhdGVfZnJvbV9yZXN1bWUoZGlyZmQsICZzdGF0ZSwgc2V0dGluZ3MsIGxp c3QpKTsKIAogCQkJaWd0X2Fzc2VydF9lcShzdGF0ZS5uZXh0LCAwKTsKLQkJCWlndF9hc3NlcnRf ZXEobGlzdC5zaXplLCAxKTsKLQkJCWlndF9hc3NlcnRfZXEobGlzdC5lbnRyaWVzWzBdLnN1YnRl c3RfY291bnQsIDIpOwotCQkJaWd0X2Fzc2VydF9lcXN0cihsaXN0LmVudHJpZXNbMF0uc3VidGVz dHNbMF0sICIqIik7Ci0JCQlpZ3RfYXNzZXJ0X2Vxc3RyKGxpc3QuZW50cmllc1swXS5zdWJ0ZXN0 c1sxXSwgZXhjbHVkZXN0cmluZyk7CisJCQlpZ3RfYXNzZXJ0X2VxKGxpc3QtPnNpemUsIDEpOwor CQkJaWd0X2Fzc2VydF9lcShsaXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RfY291bnQsIDIpOworCQkJ aWd0X2Fzc2VydF9lcXN0cihsaXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RzWzBdLCAiKiIpOworCQkJ aWd0X2Fzc2VydF9lcXN0cihsaXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RzWzFdLCBleGNsdWRlc3Ry aW5nKTsKIAkJfQogCiAJCWlndF9maXh0dXJlIHsKQEAgLTk1NiwxNyArOTcyLDE4IEBAIGlndF9t YWluCiAJCQljbG9zZShzdWJkaXJmZCk7CiAJCQljbG9zZShkaXJmZCk7CiAJCQljbGVhcl9kaXJl Y3RvcnkoZGlybmFtZSk7Ci0JCQlmcmVlX2pvYl9saXN0KCZsaXN0KTsKKwkJCWZyZWVfam9iX2xp c3QobGlzdCk7CisJCQlmcmVlKGxpc3QpOwogCQl9CiAJfQogCiAJaWd0X3N1YnRlc3RfZ3JvdXAg ewogCQljaGFyIGRpcm5hbWVbXSA9ICJ0bXBkaXJYWFhYWFgiOwotCQlzdHJ1Y3Qgam9iX2xpc3Qg bGlzdDsKLQkJaW50IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZkID0gLTE7CisJCXN0cnVj dCBqb2JfbGlzdCAqbGlzdCA9IG1hbGxvYyhzaXplb2YoKmxpc3QpKTsKKwkJdm9sYXRpbGUgaW50 IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZkID0gLTE7CiAKIAkJaWd0X2ZpeHR1cmUgewot CQkJaW5pdF9qb2JfbGlzdCgmbGlzdCk7CisJCQlpbml0X2pvYl9saXN0KGxpc3QpOwogCQkJaWd0 X3JlcXVpcmUobWtkdGVtcChkaXJuYW1lKSAhPSBOVUxMKTsKIAkJfQogCkBAIC05NzksMTUgKzk5 NiwxNSBAQCBpZ3RfbWFpbgogCQkJCQkgICAgICAgdGVzdGRhdGFkaXIsCiAJCQkJCSAgICAgICBk aXJuYW1lLAogCQkJfTsKLQkJCWNoYXIgam91cm5hbHRleHRbXSA9ICJmaXJzdC1zdWJ0ZXN0XG5z ZWNvbmQtc3VidGVzdFxuIjsKKwkJCWNvbnN0IGNoYXIgam91cm5hbHRleHRbXSA9ICJmaXJzdC1z dWJ0ZXN0XG5zZWNvbmQtc3VidGVzdFxuIjsKIAotCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25z KEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdzKSk7Ci0JCQlpZ3RfYXNz ZXJ0KGNyZWF0ZV9qb2JfbGlzdCgmbGlzdCwgJnNldHRpbmdzKSk7Ci0JCQlpZ3RfYXNzZXJ0KGxp c3Quc2l6ZSA9PSAxKTsKLQkJCWlndF9hc3NlcnQobGlzdC5lbnRyaWVzWzBdLnN1YnRlc3RfY291 bnQgPT0gMik7CisJCQlpZ3RfYXNzZXJ0KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwg KGNoYXIqKilhcmd2LCBzZXR0aW5ncykpOworCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3Qo bGlzdCwgc2V0dGluZ3MpKTsKKwkJCWlndF9hc3NlcnQobGlzdC0+c2l6ZSA9PSAxKTsKKwkJCWln dF9hc3NlcnQobGlzdC0+ZW50cmllc1swXS5zdWJ0ZXN0X2NvdW50ID09IDIpOwogCi0JCQlpZ3Rf YXNzZXJ0KHNlcmlhbGl6ZV9zZXR0aW5ncygmc2V0dGluZ3MpKTsKLQkJCWlndF9hc3NlcnQoc2Vy aWFsaXplX2pvYl9saXN0KCZsaXN0LCAmc2V0dGluZ3MpKTsKKwkJCWlndF9hc3NlcnQoc2VyaWFs aXplX3NldHRpbmdzKHNldHRpbmdzKSk7CisJCQlpZ3RfYXNzZXJ0KHNlcmlhbGl6ZV9qb2JfbGlz dChsaXN0LCBzZXR0aW5ncykpOwogCiAJCQlpZ3RfYXNzZXJ0KChkaXJmZCA9IG9wZW4oZGlybmFt ZSwgT19ESVJFQ1RPUlkgfCBPX1JET05MWSkpID49IDApOwogCQkJaWd0X2Fzc2VydChta2RpcmF0 KGRpcmZkLCAiMCIsIDA3NzApID09IDApOwpAQCAtOTk1LDE0ICsxMDEyLDE0IEBAIGlndF9tYWlu CiAJCQlpZ3RfYXNzZXJ0KChmZCA9IG9wZW5hdChzdWJkaXJmZCwgImpvdXJuYWwudHh0IiwgT19D UkVBVCB8IE9fV1JPTkxZIHwgT19FWENMLCAwNjYwKSkgPj0gMCk7CiAJCQlpZ3RfYXNzZXJ0KHdy aXRlKGZkLCBqb3VybmFsdGV4dCwgc3RybGVuKGpvdXJuYWx0ZXh0KSkgPT0gc3RybGVuKGpvdXJu YWx0ZXh0KSk7CiAKLQkJCWZyZWVfam9iX2xpc3QoJmxpc3QpOwotCQkJZnJlZV9zZXR0aW5ncygm c2V0dGluZ3MpOwotCQkJaWd0X2Fzc2VydChpbml0aWFsaXplX2V4ZWN1dGVfc3RhdGVfZnJvbV9y ZXN1bWUoZGlyZmQsICZzdGF0ZSwgJnNldHRpbmdzLCAmbGlzdCkpOworCQkJZnJlZV9qb2JfbGlz dChsaXN0KTsKKwkJCWZyZWVfc2V0dGluZ3Moc2V0dGluZ3MpOworCQkJaWd0X2Fzc2VydChpbml0 aWFsaXplX2V4ZWN1dGVfc3RhdGVfZnJvbV9yZXN1bWUoZGlyZmQsICZzdGF0ZSwgc2V0dGluZ3Ms IGxpc3QpKTsKIAogCQkJLyogQWxsIHN1YnRlc3RzIGFyZSBpbiBqb3VybmFsLCB0aGUgZW50cnkg c2hvdWxkIGJlIGNvbnNpZGVyZWQgY29tcGxldGVkICovCiAJCQlpZ3RfYXNzZXJ0X2VxKHN0YXRl Lm5leHQsIDEpOwotCQkJaWd0X2Fzc2VydF9lcShsaXN0LnNpemUsIDEpOwotCQkJaWd0X2Fzc2Vy dF9lcShsaXN0LmVudHJpZXNbMF0uc3VidGVzdF9jb3VudCwgNCk7CisJCQlpZ3RfYXNzZXJ0X2Vx KGxpc3QtPnNpemUsIDEpOworCQkJaWd0X2Fzc2VydF9lcShsaXN0LT5lbnRyaWVzWzBdLnN1YnRl c3RfY291bnQsIDQpOwogCQl9CiAKIAkJaWd0X2ZpeHR1cmUgewpAQCAtMTAxMCwxNyArMTAyNywx OCBAQCBpZ3RfbWFpbgogCQkJY2xvc2Uoc3ViZGlyZmQpOwogCQkJY2xvc2UoZGlyZmQpOwogCQkJ Y2xlYXJfZGlyZWN0b3J5KGRpcm5hbWUpOwotCQkJZnJlZV9qb2JfbGlzdCgmbGlzdCk7CisJCQlm cmVlX2pvYl9saXN0KGxpc3QpOworCQkJZnJlZShsaXN0KTsKIAkJfQogCX0KIAogCWlndF9zdWJ0 ZXN0X2dyb3VwIHsKIAkJY2hhciBkaXJuYW1lW10gPSAidG1wZGlyWFhYWFhYIjsKLQkJc3RydWN0 IGpvYl9saXN0IGxpc3Q7Ci0JCWludCBkaXJmZCA9IC0xLCBzdWJkaXJmZCA9IC0xLCBmZCA9IC0x OworCQlzdHJ1Y3Qgam9iX2xpc3QgKmxpc3QgPSBtYWxsb2Moc2l6ZW9mKCpsaXN0KSk7CisJCXZv bGF0aWxlIGludCBkaXJmZCA9IC0xLCBzdWJkaXJmZCA9IC0xLCBmZCA9IC0xOwogCiAJCWlndF9m aXh0dXJlIHsKLQkJCWluaXRfam9iX2xpc3QoJmxpc3QpOworCQkJaW5pdF9qb2JfbGlzdChsaXN0 KTsKIAkJCWlndF9yZXF1aXJlKG1rZHRlbXAoZGlybmFtZSkgIT0gTlVMTCk7CiAJCX0KIApAQCAt MTAzMSwyMiArMTA0OSwyMiBAQCBpZ3RfbWFpbgogCQkJCQkgICAgICAgdGVzdGRhdGFkaXIsCiAJ CQkJCSAgICAgICBkaXJuYW1lLAogCQkJfTsKLQkJCWNoYXIgam91cm5hbHRleHRbXSA9ICJmaXJz dC1zdWJ0ZXN0XG5zZWNvbmQtc3VidGVzdFxuZXhpdDowXG4iOworCQkJY29uc3QgY2hhciBqb3Vy bmFsdGV4dFtdID0gImZpcnN0LXN1YnRlc3RcbnNlY29uZC1zdWJ0ZXN0XG5leGl0OjBcbiI7CiAK LQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFy Z3YsICZzZXR0aW5ncykpOwotCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3QoJmxpc3QsICZz ZXR0aW5ncykpOwotCQkJaWd0X2Fzc2VydChsaXN0LnNpemUgPT0gMyk7CisJCQlpZ3RfYXNzZXJ0 KHBhcnNlX29wdGlvbnMoQVJSQVlfU0laRShhcmd2KSwgKGNoYXIqKilhcmd2LCBzZXR0aW5ncykp OworCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3QobGlzdCwgc2V0dGluZ3MpKTsKKwkJCWln dF9hc3NlcnQobGlzdC0+c2l6ZSA9PSAzKTsKIAotCQkJaWYgKCFzdHJjbXAobGlzdC5lbnRyaWVz WzBdLmJpbmFyeSwgIm5vLXN1YnRlc3RzIikpIHsKLQkJCQlzdHJ1Y3Qgam9iX2xpc3RfZW50cnkg dG1wID0gbGlzdC5lbnRyaWVzWzBdOwotCQkJCWxpc3QuZW50cmllc1swXSA9IGxpc3QuZW50cmll c1sxXTsKLQkJCQlsaXN0LmVudHJpZXNbMV0gPSB0bXA7CisJCQlpZiAoIXN0cmNtcChsaXN0LT5l bnRyaWVzWzBdLmJpbmFyeSwgIm5vLXN1YnRlc3RzIikpIHsKKwkJCQlzdHJ1Y3Qgam9iX2xpc3Rf ZW50cnkgdG1wID0gbGlzdC0+ZW50cmllc1swXTsKKwkJCQlsaXN0LT5lbnRyaWVzWzBdID0gbGlz dC0+ZW50cmllc1sxXTsKKwkJCQlsaXN0LT5lbnRyaWVzWzFdID0gdG1wOwogCQkJfQogCi0JCQlp Z3RfYXNzZXJ0KGxpc3QuZW50cmllc1swXS5zdWJ0ZXN0X2NvdW50ID09IDApOworCQkJaWd0X2Fz c2VydChsaXN0LT5lbnRyaWVzWzBdLnN1YnRlc3RfY291bnQgPT0gMCk7CiAKLQkJCWlndF9hc3Nl cnQoc2VyaWFsaXplX3NldHRpbmdzKCZzZXR0aW5ncykpOwotCQkJaWd0X2Fzc2VydChzZXJpYWxp emVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncykpOworCQkJaWd0X2Fzc2VydChzZXJpYWxpemVf c2V0dGluZ3Moc2V0dGluZ3MpKTsKKwkJCWlndF9hc3NlcnQoc2VyaWFsaXplX2pvYl9saXN0KGxp c3QsIHNldHRpbmdzKSk7CiAKIAkJCWlndF9hc3NlcnRfbHRlKDAsIGRpcmZkID0gb3BlbihkaXJu YW1lLCBPX0RJUkVDVE9SWSB8IE9fUkRPTkxZKSk7CiAJCQlpZ3RfYXNzZXJ0X2VxKG1rZGlyYXQo ZGlyZmQsICIwIiwgMDc3MCksIDApOwpAQCAtMTA1NCwxMiArMTA3MiwxMiBAQCBpZ3RfbWFpbgog CQkJaWd0X2Fzc2VydF9sdGUoMCwgZmQgPSBvcGVuYXQoc3ViZGlyZmQsICJqb3VybmFsLnR4dCIs IE9fQ1JFQVQgfCBPX1dST05MWSB8IE9fRVhDTCwgMDY2MCkpOwogCQkJaWd0X2Fzc2VydF9lcSh3 cml0ZShmZCwgam91cm5hbHRleHQsIHNpemVvZihqb3VybmFsdGV4dCkpLCBzaXplb2Yoam91cm5h bHRleHQpKTsKIAotCQkJZnJlZV9qb2JfbGlzdCgmbGlzdCk7Ci0JCQlmcmVlX3NldHRpbmdzKCZz ZXR0aW5ncyk7Ci0JCQlpZ3RfYXNzZXJ0KGluaXRpYWxpemVfZXhlY3V0ZV9zdGF0ZV9mcm9tX3Jl c3VtZShkaXJmZCwgJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQlmcmVlX2pvYl9saXN0 KGxpc3QpOworCQkJZnJlZV9zZXR0aW5ncyhzZXR0aW5ncyk7CisJCQlpZ3RfYXNzZXJ0KGluaXRp YWxpemVfZXhlY3V0ZV9zdGF0ZV9mcm9tX3Jlc3VtZShkaXJmZCwgJnN0YXRlLCBzZXR0aW5ncywg bGlzdCkpOwogCiAJCQlpZ3RfYXNzZXJ0X2VxKHN0YXRlLm5leHQsIDEpOwotCQkJaWd0X2Fzc2Vy dF9lcShsaXN0LnNpemUsIDMpOworCQkJaWd0X2Fzc2VydF9lcShsaXN0LT5zaXplLCAzKTsKIAkJ fQogCiAJCWlndF9maXh0dXJlIHsKQEAgLTEwNjcsMTcgKzEwODUsMTggQEAgaWd0X21haW4KIAkJ CWNsb3NlKHN1YmRpcmZkKTsKIAkJCWNsb3NlKGRpcmZkKTsKIAkJCWNsZWFyX2RpcmVjdG9yeShk aXJuYW1lKTsKLQkJCWZyZWVfam9iX2xpc3QoJmxpc3QpOworCQkJZnJlZV9qb2JfbGlzdChsaXN0 KTsKKwkJCWZyZWUobGlzdCk7CiAJCX0KIAl9CiAKIAlpZ3Rfc3VidGVzdF9ncm91cCB7Ci0JCXN0 cnVjdCBqb2JfbGlzdCBsaXN0OwotCQlpbnQgZGlyZmQgPSAtMSwgc3ViZGlyZmQgPSAtMSwgZmQg PSAtMTsKKwkJc3RydWN0IGpvYl9saXN0ICpsaXN0ID0gbWFsbG9jKHNpemVvZigqbGlzdCkpOwor CQl2b2xhdGlsZSBpbnQgZGlyZmQgPSAtMSwgc3ViZGlyZmQgPSAtMSwgZmQgPSAtMTsKIAkJaW50 IG11bHRpcGxlOwogCiAJCWlndF9maXh0dXJlIHsKLQkJCWluaXRfam9iX2xpc3QoJmxpc3QpOwor CQkJaW5pdF9qb2JfbGlzdChsaXN0KTsKIAkJfQogCiAJCWZvciAobXVsdGlwbGUgPSAwOyBtdWx0 aXBsZSA8IDI7IG11bHRpcGxlKyspIHsKQEAgLTExMDAsMTEgKzExMTksMTEgQEAgaWd0X21haW4K IAkJCQlzaXplX3QgZXhwZWN0ZWRfdGVzdHMgPSBtdWx0aXBsZSA/IDIgOiAzOwogCQkJCXNpemVf dCBpOwogCi0JCQkJaWd0X2Fzc2VydChwYXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChj aGFyKiopYXJndiwgJnNldHRpbmdzKSk7Ci0JCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3Qo Jmxpc3QsICZzZXR0aW5ncykpOwotCQkJCWlndF9hc3NlcnQoaW5pdGlhbGl6ZV9leGVjdXRlX3N0 YXRlKCZzdGF0ZSwgJnNldHRpbmdzLCAmbGlzdCkpOworCQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0 aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAoY2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CisJCQkJaWd0 X2Fzc2VydChjcmVhdGVfam9iX2xpc3QobGlzdCwgc2V0dGluZ3MpKTsKKwkJCQlpZ3RfYXNzZXJ0 KGluaXRpYWxpemVfZXhlY3V0ZV9zdGF0ZSgmc3RhdGUsIHNldHRpbmdzLCBsaXN0KSk7CiAKLQkJ CQlpZ3RfYXNzZXJ0KGV4ZWN1dGUoJnN0YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQkJaWd0 X2Fzc2VydChleGVjdXRlKCZzdGF0ZSwgc2V0dGluZ3MsIGxpc3QpKTsKIAkJCQlpZ3RfYXNzZXJ0 X2YoKGRpcmZkID0gb3BlbihkaXJuYW1lLCBPX0RJUkVDVE9SWSB8IE9fUkRPTkxZKSkgPj0gMCwK IAkJCQkJICAgICAiRXhlY3V0ZSBkaWRuJ3QgY3JlYXRlIHRoZSByZXN1bHRzIGRpcmVjdG9yeVxu Iik7CiAKQEAgLTExMzIsOSArMTE1MSwxMiBAQCBpZ3RfbWFpbgogCQkJCWNsb3NlKHN1YmRpcmZk KTsKIAkJCQljbG9zZShkaXJmZCk7CiAJCQkJY2xlYXJfZGlyZWN0b3J5KGRpcm5hbWUpOwotCQkJ CWZyZWVfam9iX2xpc3QoJmxpc3QpOworCQkJCWZyZWVfam9iX2xpc3QobGlzdCk7CiAJCQl9CiAJ CX0KKworCQlpZ3RfZml4dHVyZQorCQkJZnJlZShsaXN0KTsKIAl9CiAKIAlpZ3Rfc3VidGVzdF9n cm91cCB7CkBAIC0xMTQzLDEwICsxMTY1LDEwIEBAIGlndF9tYWluCiAJCQlGSUxFICpmID0gZm1l bW9wZW4obWV0YWRhdGEsIHN0cmxlbihtZXRhZGF0YSksICJyIik7CiAJCQlpZ3RfYXNzZXJ0KGYp OwogCi0JCQlpZ3RfYXNzZXJ0KHJlYWRfc2V0dGluZ3NfZnJvbV9maWxlKCZzZXR0aW5ncywgZikp OworCQkJaWd0X2Fzc2VydChyZWFkX3NldHRpbmdzX2Zyb21fZmlsZShzZXR0aW5ncywgZikpOwog Ci0JCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLnBpZ2xpdF9zdHlsZV9kbWVzZyk7Ci0JCQlpZ3RfYXNz ZXJ0X2VxKHNldHRpbmdzLmRtZXNnX3dhcm5fbGV2ZWwsIDUpOworCQkJaWd0X2Fzc2VydChzZXR0 aW5ncy0+cGlnbGl0X3N0eWxlX2RtZXNnKTsKKwkJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MtPmRt ZXNnX3dhcm5fbGV2ZWwsIDUpOwogCiAJCQlmY2xvc2UoZik7CiAJCX0KQEAgLTExNTYsMTAgKzEx NzgsMTAgQEAgaWd0X21haW4KIAkJCUZJTEUgKmYgPSBmbWVtb3BlbihtZXRhZGF0YSwgc3RybGVu KG1ldGFkYXRhKSwgInIiKTsKIAkJCWlndF9hc3NlcnQoZik7CiAKLQkJCWlndF9hc3NlcnQocmVh ZF9zZXR0aW5nc19mcm9tX2ZpbGUoJnNldHRpbmdzLCBmKSk7CisJCQlpZ3RfYXNzZXJ0KHJlYWRf c2V0dGluZ3NfZnJvbV9maWxlKHNldHRpbmdzLCBmKSk7CiAKLQkJCWlndF9hc3NlcnQoc2V0dGlu Z3MucGlnbGl0X3N0eWxlX2RtZXNnKTsKLQkJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuZG1lc2df d2Fybl9sZXZlbCwgMyk7CisJCQlpZ3RfYXNzZXJ0KHNldHRpbmdzLT5waWdsaXRfc3R5bGVfZG1l c2cpOworCQkJaWd0X2Fzc2VydF9lcShzZXR0aW5ncy0+ZG1lc2dfd2Fybl9sZXZlbCwgMyk7CiAK IAkJCWZjbG9zZShmKTsKIAkJfQpAQCAtMTE2OSwxMCArMTE5MSwxMCBAQCBpZ3RfbWFpbgogCQkJ RklMRSAqZiA9IGZtZW1vcGVuKG1ldGFkYXRhLCBzdHJsZW4obWV0YWRhdGEpLCAiciIpOwogCQkJ aWd0X2Fzc2VydChmKTsKIAotCQkJaWd0X2Fzc2VydChyZWFkX3NldHRpbmdzX2Zyb21fZmlsZSgm c2V0dGluZ3MsIGYpKTsKKwkJCWlndF9hc3NlcnQocmVhZF9zZXR0aW5nc19mcm9tX2ZpbGUoc2V0 dGluZ3MsIGYpKTsKIAotCQkJaWd0X2Fzc2VydCghc2V0dGluZ3MucGlnbGl0X3N0eWxlX2RtZXNn KTsKLQkJCWlndF9hc3NlcnRfZXEoc2V0dGluZ3MuZG1lc2dfd2Fybl9sZXZlbCwgNCk7CisJCQlp Z3RfYXNzZXJ0KCFzZXR0aW5ncy0+cGlnbGl0X3N0eWxlX2RtZXNnKTsKKwkJCWlndF9hc3NlcnRf ZXEoc2V0dGluZ3MtPmRtZXNnX3dhcm5fbGV2ZWwsIDQpOwogCiAJCQlmY2xvc2UoZik7CiAJCX0K QEAgLTExODIsMjIgKzEyMDQsMjIgQEAgaWd0X21haW4KIAkJCUZJTEUgKmYgPSBmbWVtb3Blbiht ZXRhZGF0YSwgc3RybGVuKG1ldGFkYXRhKSwgInIiKTsKIAkJCWlndF9hc3NlcnQoZik7CiAKLQkJ CWlndF9hc3NlcnQocmVhZF9zZXR0aW5nc19mcm9tX2ZpbGUoJnNldHRpbmdzLCBmKSk7CisJCQlp Z3RfYXNzZXJ0KHJlYWRfc2V0dGluZ3NfZnJvbV9maWxlKHNldHRpbmdzLCBmKSk7CiAKLQkJCWln dF9hc3NlcnQoIXNldHRpbmdzLnBpZ2xpdF9zdHlsZV9kbWVzZyk7Ci0JCQlpZ3RfYXNzZXJ0X2Vx KHNldHRpbmdzLmRtZXNnX3dhcm5fbGV2ZWwsIDMpOworCQkJaWd0X2Fzc2VydCghc2V0dGluZ3Mt PnBpZ2xpdF9zdHlsZV9kbWVzZyk7CisJCQlpZ3RfYXNzZXJ0X2VxKHNldHRpbmdzLT5kbWVzZ193 YXJuX2xldmVsLCAzKTsKIAogCQkJZmNsb3NlKGYpOwogCQl9CiAJfQogCiAJaWd0X3N1YnRlc3Rf Z3JvdXAgewotCQlzdHJ1Y3Qgam9iX2xpc3QgbGlzdDsKLQkJaW50IGRpcmZkID0gLTEsIHN1YmRp cmZkID0gLTEsIGZkID0gLTE7CisJCXN0cnVjdCBqb2JfbGlzdCAqbGlzdCA9IG1hbGxvYyhzaXpl b2YoKmxpc3QpKTsKKwkJdm9sYXRpbGUgaW50IGRpcmZkID0gLTEsIHN1YmRpcmZkID0gLTEsIGZk ID0gLTE7CiAJCWludCBtdWx0aXBsZTsKIAogCQlpZ3RfZml4dHVyZSB7Ci0JCQlpbml0X2pvYl9s aXN0KCZsaXN0KTsKKwkJCWluaXRfam9iX2xpc3QobGlzdCk7CiAJCX0KIAogCQlmb3IgKG11bHRp cGxlID0gMDsgbXVsdGlwbGUgPCAyOyBtdWx0aXBsZSsrKSB7CkBAIC0xMjIyLDExICsxMjQ0LDEx IEBAIGlndF9tYWluCiAJCQkJCSJza2lwLW9uZVxuZXhpdDo3NyAoIjsKIAkJCQljb25zdCBjaGFy ICpleHBlY3RlZF8xID0gInNraXAtdHdvXG5leGl0Ojc3ICgiOwogCi0JCQkJaWd0X2Fzc2VydChw YXJzZV9vcHRpb25zKEFSUkFZX1NJWkUoYXJndiksIChjaGFyKiopYXJndiwgJnNldHRpbmdzKSk7 Ci0JCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3QoJmxpc3QsICZzZXR0aW5ncykpOwotCQkJ CWlndF9hc3NlcnQoaW5pdGlhbGl6ZV9leGVjdXRlX3N0YXRlKCZzdGF0ZSwgJnNldHRpbmdzLCAm bGlzdCkpOworCQkJCWlndF9hc3NlcnQocGFyc2Vfb3B0aW9ucyhBUlJBWV9TSVpFKGFyZ3YpLCAo Y2hhcioqKWFyZ3YsIHNldHRpbmdzKSk7CisJCQkJaWd0X2Fzc2VydChjcmVhdGVfam9iX2xpc3Qo bGlzdCwgc2V0dGluZ3MpKTsKKwkJCQlpZ3RfYXNzZXJ0KGluaXRpYWxpemVfZXhlY3V0ZV9zdGF0 ZSgmc3RhdGUsIHNldHRpbmdzLCBsaXN0KSk7CiAKLQkJCQlpZ3RfYXNzZXJ0KGV4ZWN1dGUoJnN0 YXRlLCAmc2V0dGluZ3MsICZsaXN0KSk7CisJCQkJaWd0X2Fzc2VydChleGVjdXRlKCZzdGF0ZSwg c2V0dGluZ3MsIGxpc3QpKTsKIAkJCQlpZ3RfYXNzZXJ0X2YoKGRpcmZkID0gb3BlbihkaXJuYW1l LCBPX0RJUkVDVE9SWSB8IE9fUkRPTkxZKSkgPj0gMCwKIAkJCQkJICAgICAiRXhlY3V0ZSBkaWRu J3QgY3JlYXRlIHRoZSByZXN1bHRzIGRpcmVjdG9yeVxuIik7CiAKQEAgLTEyNjYsOSArMTI4OCwx MiBAQCBpZ3RfbWFpbgogCQkJCWNsb3NlKHN1YmRpcmZkKTsKIAkJCQljbG9zZShkaXJmZCk7CiAJ CQkJY2xlYXJfZGlyZWN0b3J5KGRpcm5hbWUpOwotCQkJCWZyZWVfam9iX2xpc3QoJmxpc3QpOwor CQkJCWZyZWVfam9iX2xpc3QobGlzdCk7CiAJCQl9CiAJCX0KKworCQlpZ3RfZml4dHVyZQorCQkJ ZnJlZShsaXN0KTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiZmlsZS1kZXNjcmlwdG9yLWxlYWthZ2Ui KSB7CkBAIC0xMjg5LDYgKzEzMTQsOCBAQCBpZ3RfbWFpbgogCQl9CiAJfQogCi0JaWd0X2ZpeHR1 cmUKLQkJZnJlZV9zZXR0aW5ncygmc2V0dGluZ3MpOworCWlndF9maXh0dXJlIHsKKwkJZnJlZV9z ZXR0aW5ncyhzZXR0aW5ncyk7CisJCWZyZWUoc2V0dGluZ3MpOworCX0KIH0KLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2