From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id D2E9889308 for ; Mon, 15 Apr 2019 08:59:47 +0000 (UTC) From: Daniel Mrzyglod Date: Mon, 15 Apr 2019 10:59:36 +0200 Message-Id: <20190415085937.5110-5-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> References: <20190415085937.5110-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 4/5] lib/intel_mmio: extend read write registers functions by a pointer for mmaped area 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 List-ID: VGhpcyBwYXRjaCBpcyBmaXJzdCBtb3ZlIHRvIGV4dGVuZCBmdW5jdGlvbmFsaXR5IG9mIGludGVs X21taW8gbGlicmFyeS4KVGhlcmUgd2VyZSBsaW1pdGF0aW9uIGZvciAxIGRldmljZSwgYWRkaW5n IHBvaW50ZXIgZm9yIGlvIGZ1bmN0aW9ucyB0byBtbWFwZWQgYXJlYSBnaXZlcwp1cyBwb3NzaWJp bGl0eSB0byB1c2UgdGhvc2UgaW8gZnVuY3Rpb25zIGZvciBvdGhlciBtbWFwZWQgYXJlYXMuCgpT aWduZWQtb2ZmLWJ5OiBEYW5pZWwgTXJ6eWdsb2QgPGRhbmllbC50Lm1yenlnbG9kQGludGVsLmNv bT4KLS0tCiBsaWIvaW50ZWxfaW8uaCAgICAgICAgICAgICAgIHwgIDM3ICsrLS0tCiBsaWIvaW50 ZWxfaW9zZi5jICAgICAgICAgICAgIHwgIDc3ICsrKysrKy0tLS0KIGxpYi9pbnRlbF9tbWlvLmMg ICAgICAgICAgICAgfCAgMzkgKysrLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgfCAg IDYgKy0KIHRlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMgICAgfCAgIDIgKy0KIHRvb2xzL2ludGVs X2F1ZGlvX2R1bXAuYyAgICAgfCAyODkgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0KIHRvb2xzL2ludGVsX2JhY2tsaWdodC5jICAgICAgfCAgMTAgKy0KIHRvb2xzL2ludGVsX2Rp c3BsYXlfcG9sbGVyLmMgfCAgIDggKy0KIHRvb2xzL2ludGVsX2ZvcmNld2FrZWQuYyAgICAgfCAg IDIgKy0KIHRvb2xzL2ludGVsX2dwdV90aW1lLmMgICAgICAgfCAgIDYgKy0KIHRvb2xzL2ludGVs X2luZm9mcmFtZXMuYyAgICAgfCAgNjggKysrKy0tLS0tCiB0b29scy9pbnRlbF9sM19wYXJpdHku YyAgICAgIHwgICA4ICstCiB0b29scy9pbnRlbF9saWQuYyAgICAgICAgICAgIHwgICAyICstCiB0 b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYyAgIHwgIDI0ICstLQogdG9vbHMvaW50ZWxfcGVyZl9j b3VudGVycy5jICB8ICAgOSArLQogdG9vbHMvaW50ZWxfcmVnLmMgICAgICAgICAgICB8ICAxNiAr LQogdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyAgICB8ICAgMiArLQogdG9vbHMvaW50ZWxfd2F0 ZXJtYXJrLmMgICAgICB8ICAgNiArLQogMTggZmlsZXMgY2hhbmdlZCwgMzM0IGluc2VydGlvbnMo KyksIDI3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW8uaCBiL2xpYi9p bnRlbF9pby5oCmluZGV4IDA5ZmVhMzg2Li5mZDk5YmJiNyAxMDA2NDQKLS0tIGEvbGliL2ludGVs X2lvLmgKKysrIGIvbGliL2ludGVsX2lvLmgKQEAgLTM4LDI5ICszOCwzMCBAQCB2b2lkIGludGVs X21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKTsKIAogaW50IGludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQgc2FmZSwgaW50IGZkKTsK IHZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCk7Ci11aW50MzJfdCBpbnRlbF9y ZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVp bnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKK3VpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQo dm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZyk7Cit2b2lkIGludGVsX3JlZ2lzdGVyX3dyaXRl KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CiBpbnQgaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOwogCi11aW50MzJfdCBJTlJFRyh1 aW50MzJfdCByZWcpOwotdWludDE2X3QgSU5SRUcxNih1aW50MzJfdCByZWcpOwotdWludDhfdCBJ TlJFRzgodWludDMyX3QgcmVnKTsKLXZvaWQgT1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3Qg dmFsKTsKLXZvaWQgT1VUUkVHMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwotdm9pZCBP VVRSRUc4KHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwordWludDMyX3QgSU5SRUcodm9pZCAq aWd0X21taW8sIHVpbnQzMl90IHJlZyk7Cit1aW50MTZfdCBJTlJFRzE2KHZvaWQgKmlndF9tbWlv LCB1aW50MzJfdCByZWcpOwordWludDhfdCBJTlJFRzgodm9pZCAqaWd0X21taW8sIHVpbnQzMl90 IHJlZyk7Cit2b2lkIE9VVFJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwpOwordm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50 MTZfdCB2YWwpOwordm9pZCBPVVRSRUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVp bnQ4X3QgdmFsKTsKIAogLyogc2lkZWJhbmQgYWNjZXNzIGZ1bmN0aW9ucyBmcm9tIGludGVsX2lv c2YuYyAqLwotdWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBw aHkpOwotdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZh bCwgaW50IHBoeSk7Ci11aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHVpbnQzMl90IHJl Zyk7Ci12b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3Qg dmFsKTsKLXVpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZCh1aW50MzJfdCBwb3J0LCB1aW50MzJf dCByZWcpOwotdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKTsKK3VpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQodm9pZCAq aWd0X21taW8sIHVpbnQzMl90IHJlZywgaW50IHBoeSk7Cit2b2lkIGludGVsX2RwaW9fcmVnX3dy aXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSk7 Cit1aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJf dCByZWcpOwordm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwordWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHZv aWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcpOwordm9pZCBpbnRlbF9p b3NmX3NiX3dyaXRlKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcs CisJCQkgdWludDMyX3QgdmFsKTsKIAotaW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3QgYWRk ciwgdWludDMyX3QgKnZhbCk7Ci1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWludDMyX3QgYWRkciwg dWludDMyX3QgdmFsKTsKLWludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90 ICp2YWwpOwotaW50IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7 CitpbnQgaW50ZWxfcHVuaXRfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgKnZhbCk7CitpbnQgaW50ZWxfcHVuaXRfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90IHZhbCk7CitpbnQgaW50ZWxfbmNfcmVhZCh2b2lkICppZ3RfbW1p bywgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCk7CitpbnQgaW50ZWxfbmNfd3JpdGUodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAKIC8qIHJlZ2lzdGVy IG1hcHMgZnJvbSBpbnRlbF9yZWdfbWFwLmMgKi8KICNpZm5kZWYgX19HVEtfRE9DX0lHTk9SRV9f CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfaW9zZi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAz YjVhMTM3MC4uYjRhNDgzZjIgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGli L2ludGVsX2lvc2YuYwpAQCAtMTksOCArMTksOCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0 ZSwgZG91YmxlLXdvcmQgYWRkcmVzc2luZywgbm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldS REFfTlAgICAweDA3CiAKLXN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQs IHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0 YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0LCB1 aW50OF90IG9wY29kZSwKKwkJCSAgIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7CiAJ aW50IHRpbWVvdXQgPSAwOwogCXVpbnQzMl90IGNtZCwgZGV2Zm4sIGJlLCBiYXI7CkBAIC0zNCwy MiArMzQsMjMgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWlu dDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCiAJCShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkg fCAoYmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKIAkJKGJhciA8PCBJT1NGX0JBUl9T SElGVCk7CiAKLQlpZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9SRVEp ICYgSU9TRl9TQl9CVVNZKSB7CisJaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQoaWd0X21taW8sIFZM Vl9JT1NGX0RPT1JCRUxMX1JFUSkgJgorCSAgICBJT1NGX1NCX0JVU1kpIHsKIAkJaWd0X3dhcm4o Indhcm5pbmc6IHBjb2RlICglcykgbWFpbGJveCBhY2Nlc3MgZmFpbGVkXG4iLCBpc19yZWFkID8g InJlYWQiIDogIndyaXRlIik7CiAJCXJldHVybiAtRUFHQUlOOwogCX0KIAotCWludGVsX3JlZ2lz dGVyX3dyaXRlKFZMVl9JT1NGX0FERFIsIGFkZHIpOworCWludGVsX3JlZ2lzdGVyX3dyaXRlKGln dF9tbWlvLCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKIAlpZiAoIWlzX3JlYWQpCi0JCWludGVsX3Jl Z2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsICp2YWwpOworCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShpZ3RfbW1pbywgVkxWX0lPU0ZfREFUQSwgKnZhbCk7CiAKLQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0 X21taW8sIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKIAogCWRvIHsKIAkJdXNsZWVwKDEp OwogCQl0aW1lb3V0Kys7Ci0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9E T09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZICYmCi0JCSB0aW1lb3V0IDwgVElNRU9VVF9VUyk7 CisJfSB3aGlsZSAoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfbW1pbywgVkxWX0lPU0ZfRE9PUkJF TExfUkVRKSAmCisJCSBJT1NGX1NCX0JVU1kgJiYgdGltZW91dCA8IFRJTUVPVVRfVVMpOwogCiAJ aWYgKHRpbWVvdXQgPj0gVElNRU9VVF9VUykgewogCQlpZ3Rfd2FybigidGltZW91dCB3YWl0aW5n IGZvciBwY29kZSAlcyAoJWQpIHRvIGZpbmlzaFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0 ZSIsIGFkZHIpOwpAQCAtNTcsMTQgKzU4LDE1IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3 KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogCX0KIAogCWlm IChpc19yZWFkKQotCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9EQVRBKTsK LQlpbnRlbF9yZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9EQVRBLCAwKTsKKwkJKnZhbCA9IGludGVs X3JlZ2lzdGVyX3JlYWQoaWd0X21taW8sIFZMVl9JT1NGX0RBVEEpOworCWludGVsX3JlZ2lzdGVy X3dyaXRlKGlndF9tbWlvLCBWTFZfSU9TRl9EQVRBLCAwKTsKIAogCXJldHVybiAwOwogfQogCiAv KioKICAqIGludGVsX3B1bml0X3JlYWQ6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50 ZXIKICAqIEBhZGRyOiByZWdpc3RlciBvZmZzZXQKICAqIEB2YWw6IHBvaW50ZXIgdG8gc3RvcmUg dGhlIHJlYWQgcmVzdWx0CiAgKgpAQCAtNzMsMTMgKzc1LDE1IEBAIHN0YXRpYyBpbnQgdmx2X3Np ZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAog ICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVn YXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfcmVhZCh1 aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQoraW50IGludGVsX3B1bml0X3JlYWQodm9pZCAq aWd0X21taW8sIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9z aWRlYmFuZF9ydyhJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwly ZXR1cm4gdmx2X3NpZGViYW5kX3J3KGlndF9tbWlvLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkRE QV9OUCwgYWRkciwKKwkJCSAgICAgICB2YWwpOwogfQogCiAvKioKICAqIGludGVsX3B1bml0X3dy aXRlOgorICogQGlndF9tbWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAYWRkcjogcmVnaXN0 ZXIgb2Zmc2V0CiAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTg4LDEzICs5MiwxNSBA QCBpbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQogICog UmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRp dmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfd3JpdGUodWlu dDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQoraW50IGludGVsX3B1bml0X3dyaXRlKHZvaWQgKmln dF9tbWlvLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRl YmFuZF9ydyhJT1NGX1BPUlRfUFVOSVQsIFNCX0NSV1JEQV9OUCwgYWRkciwgJnZhbCk7CisJcmV0 dXJuIHZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFf TlAsIGFkZHIsCisJCQkgICAgICAgJnZhbCk7CiB9CiAKIC8qKgogICogaW50ZWxfbmNfcmVhZDoK KyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgogICogQGFkZHI6IHJlZ2lzdGVyIG9m ZnNldAogICogQHZhbDogcG9pbnRlciB0byBzdGFyZ2UgZm9yIHRoZSByZWFkIHJlc3VsdAogICoK QEAgLTEwMywxMyArMTA5LDE0IEBAIGludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRy LCB1aW50MzJfdCB2YWwpCiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nl c3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBp bnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfbmNf cmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKIHsKLQly ZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0JfQ1JSRERBX05QLCBhZGRyLCB2 YWwpOworCXJldHVybiB2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElPU0ZfUE9SVF9OQywgU0Jf Q1JSRERBX05QLCBhZGRyLCB2YWwpOwogfQogCiAvKioKICAqIGludGVsX25jX3dyaXRlOgorICog QGlndF9tbWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAYWRkcjogcmVnaXN0ZXIgb2Zmc2V0 CiAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTExOCwxMyArMTI1LDE1IEBAIGludCBp bnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiAgKiBSZXR1cm5zOgog ICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBj b2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY193cml0ZSh1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCB2YWwpCitpbnQgaW50ZWxfbmNfd3JpdGUodm9pZCAqaWd0X21taW8sIHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9S VF9OQywgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3 KGlndF9tbWlvLCBJT1NGX1BPUlRfTkMsIFNCX0NSV1JEQV9OUCwgYWRkciwKKwkJCSAgICAgICAm dmFsKTsKIH0KIAogLyoqCiAgKiBpbnRlbF9kcGlvX3JlZ19yZWFkOgorICogQGlndF9tbWlvIG1h cGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqIEBwaHk6IERQ SU8gUEhZIHRvIHVzZQogICoKQEAgLTEzMyw1NyArMTQyLDYxIEBAIGludCBpbnRlbF9uY193cml0 ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVl IHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQzMl90IGludGVsX2RwaW9fcmVnX3Jl YWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQordWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh2 b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCBpbnQgcGh5KQogewogCXVpbnQzMl90IHZhbDsK IAogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPLCBTQl9N UkRfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JU X0RQSU8sIFNCX01SRF9OUCwgcmVnLCAmdmFsKTsKIAllbHNlCi0JCXZsdl9zaWRlYmFuZF9ydyhJ T1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9y dyhpZ3RfbW1pbywgSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCisJCQkJJnZhbCk7 CiAJcmV0dXJuIHZhbDsKIH0KIAogLyoqCiAgKiBpbnRlbF9kcGlvX3JlZ193cml0ZToKKyAqIEBp Z3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAg KiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICogQHBoeTogZHBpbyBQSFkgdG8gdXNlCiAgKgogICog MzItYml0IHdyaXRlIG9mIHRoZSByZWdpc3RlciBhdCBAb2Zmc2V0IHRocm91Z2ggdGhlIERQSU8g c2lkZWJhbmQgcG9ydC4KICAqLwotdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCBy ZWcsIHVpbnQzMl90IHZhbCwgaW50IHBoeSkKK3ZvaWQgaW50ZWxfZHBpb19yZWdfd3JpdGUodm9p ZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KQogewogCWlm IChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAs IHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhpZ3RfbW1pbywgSU9TRl9QT1JUX0RQSU8s IFNCX01XUl9OUCwgcmVnLCAmdmFsKTsKIAllbHNlCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BP UlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhpZ3Rf bW1pbywgSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVdSX05QLCByZWcsCisJCQkJJnZhbCk7CiB9CiAK LXVpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKQordWludDMyX3Qg aW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogewog CXVpbnQzMl90IHZhbCA9IDA7CiAKLQl2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX0ZMSVNEU0ks IFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8sIElP U0ZfUE9SVF9GTElTRFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7CiAKIAlyZXR1cm4gdmFs OwogfQogCi12b2lkIGludGVsX2ZsaXNkc2lfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsKQordm9pZCBpbnRlbF9mbGlzZHNpX3JlZ193cml0ZSh2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9G TElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CisJdmx2X3NpZGViYW5kX3J3KGlndF9t bWlvLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQogCi11 aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnKQor dWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCBwb3J0 LCB1aW50MzJfdCByZWcpCiB7CiAJdWludDMyX3QgdmFsOwogCi0Jdmx2X3NpZGViYW5kX3J3KHBv cnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncoaWd0X21taW8s IHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsKIAogCXJldHVybiB2YWw7CiB9CiAKLXZv aWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbCkKK3ZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh2b2lkICppZ3RfbW1pbywgdWludDMy X3QgcG9ydCwgdWludDMyX3QgcmVnLAorCQkJIHVpbnQzMl90IHZhbCkKIHsKLQl2bHZfc2lkZWJh bmRfcncocG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhp Z3RfbW1pbywgcG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwogfQpkaWZmIC0tZ2l0IGEv bGliL2ludGVsX21taW8uYyBiL2xpYi9pbnRlbF9tbWlvLmMKaW5kZXggZGFjYTFhZDIuLjI0NjIz ZmM2IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfbW1pby5jCisrKyBiL2xpYi9pbnRlbF9tbWlvLmMK QEAgLTI0NCw2ICsyNDQsNyBAQCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQogCiAv KioKICAqIGludGVsX3JlZ2lzdGVyX3JlYWQ6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBv aW50ZXIKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRo ZSByZWdpc3RlciBhdCBAb2Zmc2V0LiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUg bmV3CkBAIC0yNTYsNyArMjU3LDcgQEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkK ICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50 ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCitpbnRlbF9yZWdpc3Rlcl9yZWFkKHZvaWQg KmlndF9tbWlvLCB1aW50MzJfdCByZWcpCiB7CiAJc3RydWN0IGludGVsX3JlZ2lzdGVyX3Jhbmdl ICpyYW5nZTsKIAl1aW50MzJfdCByZXQ7CkBAIC0yODAsMTMgKzI4MSwxNCBAQCBpbnRlbF9yZWdp c3Rlcl9yZWFkKHVpbnQzMl90IHJlZykKIAl9CiAKIHJlYWRfb3V0OgotCXJldCA9ICoodm9sYXRp bGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOwor CXJldCA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfbW1pbyAr IHJlZyk7CiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl93 cml0ZToKKyAqIEBpZ3RfbW1pbyBtYXBlZCBtZW1vcnkgcG9pbnRlcgogICogQHJlZzogcmVnaXN0 ZXIgb2Zmc2V0CiAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTI5Nyw3ICsyOTksNyBA QCBvdXQ6CiAgKiB3aGl0ZSBsaXN0cy4KICAqLwogdm9pZAotaW50ZWxfcmVnaXN0ZXJfd3JpdGUo dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCitpbnRlbF9yZWdpc3Rlcl93cml0ZSh2b2lkICpp Z3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7CiAJc3RydWN0IGludGVsX3Jl Z2lzdGVyX3JhbmdlICpyYW5nZTsKIApAQCAtMzE3LDEyICszMTksMTMgQEAgaW50ZWxfcmVnaXN0 ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiAJCSAgICAgICJSZWdpc3RlciB3 cml0ZSBibG9ja2VkIGZvciBzYWZldHkgIiIoKjB4JTA4eCA9IDB4JXgpXG4iLCByZWcsIHZhbCk7 CiAKIHdyaXRlX291dDoKLQkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICop aWd0X2dsb2JhbF9tbWlvICsgcmVnKSA9IHZhbDsKKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2 b2xhdGlsZSBjaGFyICopaWd0X21taW8gKyByZWcpID0gdmFsOwogfQogCiAKIC8qKgogICogSU5S RUc6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJlZ2lzdGVy IG9mZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdpc3RlciBhdCBvZmZzZXQgQHJl Zy4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCkBAIC0zMzMsMTMgKzMzNiwxNCBA QCB3cml0ZV9vdXQ6CiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVn aXN0ZXIuCiAgKi8KLXVpbnQzMl90IElOUkVHKHVpbnQzMl90IHJlZykKK3VpbnQzMl90IElOUkVH KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuICoodm9sYXRpbGUgdWlu dDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOworCXJldHVy biAqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X21taW8gKyByZWcp OwogfQogCiAvKioKICAqIElOUkVHMTY6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50 ZXIKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDE2LWJpdCByZWFkIG9mIHRoZSBy ZWdpc3RlciBhdCBvZmZzZXQgQHJlZy4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhl CkBAIC0zNTAsMTMgKzM1NCwxNCBAQCB1aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpCiAgKiBS ZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQx Nl90IElOUkVHMTYodWludDMyX3QgcmVnKQordWludDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1p bywgdWludDMyX3QgcmVnKQogewotCXJldHVybiAqKHZvbGF0aWxlIHVpbnQxNl90ICopKCh2b2xh dGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKKwlyZXR1cm4gKih2b2xhdGlsZSB1 aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoqCiAg KiBJTlJFRzg6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJl Z2lzdGVyIG9mZnNldAogICoKICAqIDgtYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNl dCBAcmVnLiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKQEAgLTM2NywxMyArMzcy LDE0IEBAIHVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKQogICogUmV0dXJuczoKICAqIFRo ZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50OF90IElOUkVHOCh1aW50 MzJfdCByZWcpCit1aW50OF90IElOUkVHOCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQog ewotCXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsK KwlyZXR1cm4gKigodm9sYXRpbGUgdWludDhfdCAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoq CiAgKiBPVVRSRUc6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6 IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAqCkBAIC0zODMsOSAr Mzg5LDkgQEAgdWludDhfdCBJTlJFRzgodWludDMyX3QgcmVnKQogICoKICAqIFRoaXMgZnVuY3Rp b24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkg Y2hlY2tzLgogICovCi12b2lkIE9VVFJFRyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3Zv aWQgT1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsK LQkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlv ICsgcmVnKSA9IHZhbDsKKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICop aWd0X21taW8gKyByZWcpID0gdmFsOwogfQogCiAvKioKQEAgLTM5OSwxMyArNDA1LDE0IEBAIHZv aWQgT1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogICoKICAqIFRoaXMgZnVuY3Rp b24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkg Y2hlY2tzLgogICovCi12b2lkIE9VVFJFRzE2KHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQor dm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwp CiB7Ci0JKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxf bW1pbyArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hh ciAqKWlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogLyoqCiAgKiBPVVRSRUc4OgorICogQGln dF9tbWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAq IEB2YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtNDE1LDcgKzQyMiw3IEBAIHZvaWQgT1VUUkVH MTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiAgKgogICogVGhpcyBmdW5jdGlvbiBkaXJl Y3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3Mu CiAgKi8KLXZvaWQgT1VUUkVHOCh1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQordm9pZCBPVVRS RUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewotCSooKHZv bGF0aWxlIHVpbnQ4X3QgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOworCSooKHZvbGF0 aWxlIHVpbnQ4X3QgKilpZ3RfbW1pbyArIHJlZykgPSB2YWw7CiB9CmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMKaW5k ZXggNjJlOGQwYTUuLjQyM2Q2ZWE2IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX3Bh cnNlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jCkBAIC0yODQsOSArMjg0LDkg QEAgdGVzdF9scmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVz dCkKIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3RfdmFsLAogCQkgIGV4cGVj dGVkX2Vycm5vLCBleHBlY3QpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUodGVzdC0+cmVnLCB0 ZXN0LT5pbml0X3ZhbCk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoaWd0X2dsb2JhbF9tbWlvLCB0 ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9y ZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdp c3Rlcl9yZWFkKGlndF9nbG9iYWxfbW1pbywgdGVzdC0+cmVnKSAmCiAJCQkgICB0ZXN0LT5yZWFk X21hc2spLAogCQkJICB0ZXN0LT5pbml0X3ZhbCk7CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCB0ZXN0 X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3RfbHJpICp0ZXN0KQogCQkg ICBleHBlY3RlZF9lcnJubyk7CiAJZ2VtX3N5bmMoZmQsIGhhbmRsZSk7CiAKLQlpZ3RfYXNzZXJ0 X2VxX3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKKwlpZ3RfYXNzZXJ0X2Vx X3UzMigoaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21taW8sIHRlc3QtPnJlZykgJgog CQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKIAkJCSAgZXhwZWN0KTsKIH0KZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvaTkxNV9wbV9scHNwLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCmluZGV4 IGIzMTlkYmU5Li5mNjljODhmNiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3Au YworKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRp YyBib29sIGxwc3BfaXNfZW5hYmxlZChpbnQgZHJtX2ZkKQogewogCXVpbnQzMl90IHZhbDsKIAot CXZhbCA9IElOUkVHKEhTV19QV1JfV0VMTF9DVEwyKTsKKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEhTV19QV1JfV0VMTF9DVEwyKTsKIAlyZXR1cm4gISh2YWwgJiBIU1dfUFdSX1dFTExf U1RBVEVfRU5BQkxFRCk7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAu YyBiL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYwppbmRleCBkOTUyZTU0Yi4uODY2NjQ0NzggMTAw NjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYworKysgYi90b29scy9pbnRlbF9hdWRp b19kdW1wLmMKQEAgLTY3LDIzICs2NywyMyBAQCBzdGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAw OwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8KIAogI2RlZmluZSBkdW1w X3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJZG8gewkJCQkJCQlcCi0JCWR3b3JkID0gSU5SRUcocmVn KTsJXAorCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsJXAogCQlwcmludGYo IiUtMjFzKCUjeCkgMHglMDh4ICAlc1xuIiwgIyByZWcsIHJlZywgZHdvcmQsIGRlc2MpOwlcCiAJ fSB3aGlsZSAoMCkKIAogI2RlZmluZSBkdW1wX2Rpc3BfcmVnKHJlZywgZGVzYykJCQkJCVwKIAlk byB7CQkJCQkJCVwKLQkJZHdvcmQgPSBJTlJFRyhkaXNwX3JlZ19iYXNlICsgcmVnKTsJXAorCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgZGlzcF9yZWdfYmFzZSArIHJlZyk7CVwKIAkJ cHJpbnRmKCIlLTIxcyglI3gpIDB4JTA4eCAgJXNcbiIsICMgcmVnLCByZWcsIGR3b3JkLCBkZXNj KTsJXAogCX0gd2hpbGUgKDApCiAKICNkZWZpbmUgZHVtcF9hdWRfcmVnKHJlZywgZGVzYykJCQkJ CVwKIAlkbyB7CQkJCQkJCVwKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyByZWcpOwlc CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyByZWcpOwlc CiAJCXByaW50ZigiJS0yMXMoJSN4KSAweCUwOHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwg ZGVzYyk7CVwKIAl9IHdoaWxlICgwKQogCi0jZGVmaW5lIHJlYWRfYXVkX3JlZyhyZWcpCUlOUkVH KGF1ZF9yZWdfYmFzZSArIChyZWcpKQorI2RlZmluZSByZWFkX2F1ZF9yZWcocmVnKQlJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIChyZWcpKQogCiBzdGF0aWMgaW50IGdldF9u dW1fcGlwZXModm9pZCkKIHsKQEAgLTUzMiwzMSArNTMyLDMxIEBAIHN0YXRpYyB2b2lkIGR1bXBf ZWFnbGVsYWtlKHZvaWQpCiAKIAlwcmludGYoIlxuRGV0YWlsczpcblxuIik7CiAKLQlkd29yZCA9 IElOUkVHKEFVRF9WSURfRElEKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X1ZJRF9ESUQpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgdmVuZG9yIGlkXHRcdFx0MHgleFxuIiwg ZHdvcmQgPj4gMTYpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0MHgleFxu IiwgZHdvcmQgJiAweGZmZmYpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfUklEKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1JJRCk7CiAJcHJpbnRmKCJBVURfUklEIG1ham9y IHJldmlzaW9uXHRcdFx0MHglbHhcbiIsIEJJVFMoZHdvcmQsIDIzLCAyMCkpOwogCXByaW50Zigi QVVEX1JJRCBtaW5vciByZXZpc2lvblx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYp KTsKIAlwcmludGYoIkFVRF9SSUQgcmV2aXNpb24gaWRcdFx0XHQweCVseFxuIiwgICAgQklUUyhk d29yZCwgMTUsIDgpKTsKIAlwcmludGYoIkFVRF9SSUQgc3RlcHBpbmcgaWRcdFx0XHQweCVseFxu IiwgICAgQklUUyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhTRFZPQik7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFNEVk9CKTsKIAlwcmludGYoIlNEVk9CIGVuYWJs ZVx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50Zigi U0RWT0IgSERNSSBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fRU5DT0RJTkdf SERNSSkpOwogCXByaW50ZigiU0RWT0IgU0RWTyBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShkd29y ZCAmIFNEVk9fRU5DT0RJTkdfU0RWTykpOwogCXByaW50ZigiU0RWT0IgbnVsbCBwYWNrZXRzXHRc dFx0JXVcbiIsICAhIShkd29yZCAmIFNEVk9fTlVMTF9QQUNLRVRTX0RVUklOR19WU1lOQykpOwog CXByaW50ZigiU0RWT0IgYXVkaW8gZW5hYmxlZFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9f QVVESU9fRU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVHKFNEVk9DKTsKKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgU0RWT0MpOwogCXByaW50ZigiU0RWT0MgZW5hYmxlXHRcdFx0XHQl dVxuIiwgICAgICAhIShkd29yZCAmIFNEVk9fRU5BQkxFKSk7CiAJcHJpbnRmKCJTRFZPQyBIRE1J IGVuY29kaW5nXHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19FTkNPRElOR19IRE1JKSk7CiAJ cHJpbnRmKCJTRFZPQyBTRFZPIGVuY29kaW5nXHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19F TkNPRElOR19TRFZPKSk7CiAJcHJpbnRmKCJTRFZPQyBudWxsIHBhY2tldHNcdFx0XHQldVxuIiwg ICEhKGR3b3JkICYgU0RWT19OVUxMX1BBQ0tFVFNfRFVSSU5HX1ZTWU5DKSk7CiAJcHJpbnRmKCJT RFZPQyBhdWRpbyBlbmFibGVkXHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19BVURJT19FTkFC TEUpKTsKIAotCWR3b3JkID0gSU5SRUcoUE9SVF9IT1RQTFVHX0VOKTsKKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgUE9SVF9IT1RQTFVHX0VOKTsKIAlwcmludGYoIlBPUlRfSE9UUExV R19FTiBEaXNwbGF5UG9ydC9IRE1JIHBvcnQgQlx0JWxkXG4iLCBCSVQoZHdvcmQsIDI5KSksCiAJ cHJpbnRmKCJQT1JUX0hPVFBMVUdfRU4gRGlzcGxheVBvcnQvSERNSSBwb3J0IENcdCVsZFxuIiwg QklUKGR3b3JkLCAyOCkpLAogCXByaW50ZigiUE9SVF9IT1RQTFVHX0VOIERpc3BsYXlQb3J0IHBv cnQgRFx0JWxkXG4iLCAgICAgIEJJVChkd29yZCwgMjcpKSwKQEAgLTU2Niw3ICs1NjYsNyBAQCBz dGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiUE9SVF9IT1RQTFVHX0VO IFRWXHRcdFx0JWxkXG4iLCAgICBCSVQoZHdvcmQsIDIzKSksCiAJcHJpbnRmKCJQT1JUX0hPVFBM VUdfRU4gQ1JUXHRcdFx0JWxkXG4iLCAgIEJJVChkd29yZCwgOSkpLAogCi0JZHdvcmQgPSBJTlJF RyhWSURFT19ESVBfQ1RMKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVklERU9f RElQX0NUTCk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMIGVuYWJsZSBncmFwaGljcyBESVBcdCVs ZFxuIiwgICAgIEJJVChkd29yZCwgMzEpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVEwgcG9ydCBz ZWxlY3RcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9y dFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7CkBAIC01ODEsNDYgKzU4MSw0NiBAQCBzdGF0aWMgdm9p ZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiVklERU9fRElQX0NUTCBESVAgYnVmZmVy IHNpemVcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkpOwogCXByaW50ZigiVklERU9fRElQ X0NUTCBESVAgYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3Jk ID0gSU5SRUcoQVVEX0NPTkZJRyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9DT05GSUcpOwogCXByaW50ZigiQVVEX0NPTkZJRyBwaXhlbCBjbG9ja1x0XHRcdFsweCVseF0g JXNcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNiksCiAJCQlPUE5BTUUocGl4ZWxfY2xvY2ssIEJJVFMo ZHdvcmQsIDE5LCAxNikpKTsKIAlwcmludGYoIkFVRF9DT05GSUcgZmFicmljYXRpb24gZW5hYmxl ZFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDIsIDIpKTsKIAlwcmludGYoIkFVRF9DT05GSUcgcHJv ZmVzc2lvbmFsIHVzZSBhbGxvd2VkXHQlbHVcbiIsIEJJVChkd29yZCwgMSkpOwogCXByaW50Zigi QVVEX0NPTkZJRyBmdXNlIGVuYWJsZWRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMCkpOwogCi0J ZHdvcmQgPSBJTlJFRyhBVURfREVCVUcpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBBVURfREVCVUcpOwogCXByaW50ZigiQVVEX0RFQlVHIGZ1bmN0aW9uIHJlc2V0XHRcdCVsdVxu IiwgQklUKGR3b3JkLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9TVUJOX0NOVCk7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9TVUJOX0NOVCk7CiAJcHJpbnRmKCJBVURf U1VCTl9DTlQgc3RhcnRpbmcgbm9kZSBudW1iZXJcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjMs IDE2KSk7CiAJcHJpbnRmKCJBVURfU1VCTl9DTlQgdG90YWwgbnVtYmVyIG9mIG5vZGVzXHQweCVs eFxuIiwgQklUUyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfU1VCTl9DTlQy KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1NVQk5fQ05UMik7CiAJcHJp bnRmKCJBVURfU1VCTl9DTlQyIHN0YXJ0aW5nIG5vZGUgbnVtYmVyXHQweCVseFxuIiwgIEJJVFMo ZHdvcmQsIDI0LCAxNikpOwogCXByaW50ZigiQVVEX1NVQk5fQ05UMiB0b3RhbCBudW1iZXIgb2Yg bm9kZXNcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCA3LCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFV RF9GVU5DX0dSUCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9GVU5DX0dS UCk7CiAJcHJpbnRmKCJBVURfRlVOQ19HUlAgdW5zb2wgY2FwYWJsZVx0XHQlbHVcbiIsIEJJVChk d29yZCwgOCkpOwogCXByaW50ZigiQVVEX0ZVTkNfR1JQIG5vZGUgdHlwZVx0XHRcdDB4JWx4XG4i LCBCSVRTKGR3b3JkLCA3LCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9HUlBfQ0FQKTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0dSUF9DQVApOwogCXByaW50ZigiQVVE X0dSUF9DQVAgYmVlcCAwXHRcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDE2KSk7CiAJcHJp bnRmKCJBVURfR1JQX0NBUCBpbnB1dCBkZWxheVx0XHRcdCVsdVxuIiwgIEJJVFMoZHdvcmQsIDEx LCA4KSk7CiAJcHJpbnRmKCJBVURfR1JQX0NBUCBvdXRwdXQgZGVsYXlcdFx0JWx1XG4iLCAgIEJJ VFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BXUlNUKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1BXUlNUKTsKIAlwcmludGYoIkFVRF9QV1JTVCBk ZXZpY2UgcG93ZXIgc3RhdGVcdFx0JXNcbiIsCiAJCQlwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCA1 LCA0KV0pOwogCXByaW50ZigiQVVEX1BXUlNUIGRldmljZSBwb3dlciBzdGF0ZSBzZXR0aW5nXHQl c1xuIiwKIAkJCXBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDEsIDApXSk7CiAKLQlkd29yZCA9IElO UkVHKEFVRF9TVVBQV1IpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VQ UFdSKTsKIAlwcmludGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEMFx0XHRcdCVsdVxuIiwgQklUKGR3 b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDFcdFx0XHQlbHVcbiIsIEJJ VChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQyXHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEM1x0XHRcdCVs dVxuIiwgQklUKGR3b3JkLCAzKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfQ1dDQVApOwor CWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0NXQ0FQKTsKIAlwcmludGYo IkFVRF9PVVRfQ1dDQVAgd2lkZ2V0IHR5cGVcdFx0MHglbHhcbiIsICBCSVRTKGR3b3JkLCAyMywg MjApKTsKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgc2FtcGxlIGRlbGF5XHRcdDB4JWx4XG4iLCBC SVRTKGR3b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgY2hhbm5lbCBjb3Vu dFx0XHQlbHVcbiIsCkBAIC02MzYsNyArNjM2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxh a2Uodm9pZCkKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgb3V0IGFtcCBwcmVzZW50XHRcdCVsdVxu IiwgIEJJVChkd29yZCwgMikpOwogCXByaW50ZigiQVVEX09VVF9DV0NBUCBpbiBhbXAgcHJlc2Vu dFx0XHQlbHVcbiIsICAgQklUKGR3b3JkLCAxKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRf RElHX0NOVlQpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0RJR19D TlZUKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlQgU1BESUYgY2F0ZWdvcnlcdFx0MHglbHhc biIsIEJJVFMoZHdvcmQsIDE0LCA4KSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUIFNQRElG IGxldmVsXHRcdCVsdVxuIiwgICAgICBCSVQoZHdvcmQsIDcpKTsKIAlwcmludGYoIkFVRF9PVVRf RElHX0NOVlQgcHJvZmVzc2lvbmFsXHRcdCVsdVxuIiwgICAgIEJJVChkd29yZCwgNikpOwpAQCAt NjQ3LDE2ICs2NDcsMTYgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmlu dGYoIkFVRF9PVVRfRElHX0NOVlQgdmFsaWRpdHkgZmxhZ1x0XHQlbHVcbiIsICAgIEJJVChkd29y ZCwgMSkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVCBkaWdpdGFsIGVuYWJsZVx0XHQlbHVc biIsICAgQklUKGR3b3JkLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfQ0hfU1RSKTsK Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DSF9TVFIpOwogCXByaW50 ZigiQVVEX09VVF9DSF9TVFIgc3RyZWFtIGlkXHRcdDB4JWx4XG4iLCAgICAgICAgQklUUyhkd29y ZCwgNywgNCkpOwogCXByaW50ZigiQVVEX09VVF9DSF9TVFIgbG93ZXN0IGNoYW5uZWxcdFx0JWx1 XG4iLCAgICAgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX1NU Ul9ERVNDKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9TVFJfREVT Qyk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDIHN0cmVhbSBjaGFubmVsc1x0JWx1XG4iLCAg ICBCSVRTKGR3b3JkLCAzLCAwKSArIDEpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQyBCaXRz IHBlciBTYW1wbGVcdFslI2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUo Yml0c19wZXJfc2FtcGxlLCBCSVRTKGR3b3JkLCA2LCA0KSkpOwogCi0JZHdvcmQgPSBJTlJFRyhB VURfUElOV19DQVApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUElOV19D QVApOwogCXByaW50ZigiQVVEX1BJTldfQ0FQIHdpZGdldCB0eXBlXHRcdDB4JWx4XG4iLCAgICAg ICAgQklUUyhkd29yZCwgMjMsIDIwKSk7CiAJcHJpbnRmKCJBVURfUElOV19DQVAgc2FtcGxlIGRl bGF5XHRcdDB4JWx4XG4iLCAgICAgICBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFV RF9QSU5XX0NBUCBjaGFubmVsIGNvdW50XHRcdCVsdVxuIiwKQEAgLTY3NCwxMyArNjc0LDEzIEBA IHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJcHJpbnRmKCJBVURfUElOV19DQVAg aW4gYW1wIHByZXNlbnRcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDEpKTsKIAogCi0JZHdv cmQgPSBJTlJFRyhBVURfUElOX0NBUCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9QSU5fQ0FQKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIEVBUERcdFx0XHQlbHVcbiIsICAg ICAgICAgIEJJVChkd29yZCwgMTYpKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIEhETUlcdFx0XHQl bHVcbiIsICAgICAgICAgIEJJVChkd29yZCwgNykpOwogCXByaW50ZigiQVVEX1BJTl9DQVAgb3V0 cHV0XHRcdFx0JWx1XG4iLCAgICAgICAgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURfUElO X0NBUCBwcmVzZW5jZSBkZXRlY3RcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIpKTsKIAotCWR3b3Jk ID0gSU5SRUcoQVVEX1BJTldfQ05UUik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9QSU5XX0NOVFIpOwogCXByaW50ZigiQVVEX1BJTldfQ05UUiBtdXRlIHN0YXR1c1x0XHQl bHVcbiIsICAgICBCSVQoZHdvcmQsIDgpKTsKIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgb3V0IGVu YWJsZVx0XHQlbHVcbiIsICAgICAgQklUKGR3b3JkLCA2KSk7CiAJcHJpbnRmKCJBVURfUElOV19D TlRSIGFtcCBtdXRlIHN0YXR1c1x0XHQlbHVcbiIsIEJJVChkd29yZCwgOCkpOwpAQCAtNjg5LDEw ICs2ODksMTAgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAkJCUJJVFMoZHdv cmQsIDIsIDApLAogCQkJT1BOQU1FKHN0cmVhbV90eXBlLCBCSVRTKGR3b3JkLCAyLCAwKSkpOwog Ci0JZHdvcmQgPSBJTlJFRyhBVURfUElOV19VTlNPTFJFU1ApOworCWR3b3JkID0gSU5SRUcoaWd0 X2dsb2JhbF9tbWlvLCBBVURfUElOV19VTlNPTFJFU1ApOwogCXByaW50ZigiQVVEX1BJTldfVU5T T0xSRVNQIGVuYWJsZSB1bnNvbCByZXNwXHQlbHVcbiIsIEJJVChkd29yZCwgMzEpKTsKIAotCWR3 b3JkID0gSU5SRUcoQVVEX0NOVExfU1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBBVURfQ05UTF9TVCk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVCBESVAgYXVkaW8gZW5hYmxlZFx0 XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUIERJUCBBQ1Ag ZW5hYmxlZFx0XHQlbHVcbiIsICAgQklUKGR3b3JkLCAyMikpOwogCXByaW50ZigiQVVEX0NOVExf U1QgRElQIElTUkN4IGVuYWJsZWRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIzKSk7CkBAIC03MDks MzggKzcwOSwzOSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50Zigi QVVEX0NOVExfU1QgRUxEIGJ1ZnNpemVcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDEzLCA5KSk7 CiAJcHJpbnRmKCJBVURfQ05UTF9TVCBFTEQgYWRkcmVzc1x0XHRcdCVsdVxuIiwgQklUUyhkd29y ZCwgOCwgNSkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfSERNSVdfU1RBVFVTKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX1NUQVRVUyk7CiAJcHJpbnRmKCJBVURf SERNSVdfU1RBVFVTIENEQ0xLL0RPVENMSyB1bmRlcnJ1blx0JWx1XG4iLCBCSVQoZHdvcmQsIDMx KSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTIENEQ0xLL0RPVENMSyBvdmVycnVuXHQlbHVc biIsICBCSVQoZHdvcmQsIDMwKSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTIEJDTEsvQ0RD TEsgdW5kZXJydW5cdCVsdVxuIiwgICBCSVQoZHdvcmQsIDI5KSk7CiAJcHJpbnRmKCJBVURfSERN SVdfU1RBVFVTIEJDTEsvQ0RDTEsgb3ZlcnJ1blx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDI4KSk7 CiAKLQlkd29yZCA9IElOUkVHKEFVRF9DT05WX0NIQ05UKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NPTlZfQ0hDTlQpOwogCXByaW50ZigiQVVEX0NPTlZfQ0hDTlQgSERN SSBIQlIgZW5hYmxlZFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE1LCAxNCkpOwogCXByaW50Zigi QVVEX0NPTlZfQ0hDTlQgSERNSSBjaGFubmVsIGNvdW50XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDEx LCA4KSArIDEpOwogCiAJcHJpbnRmKCJBVURfQ09OVl9DSENOVCBIRE1JIGNoYW5uZWwgbWFwcGlu ZzpcbiIpOwogCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKLQkJT1VUUkVHKEFVRF9DT05WX0NI Q05ULCBpKTsKLQkJZHdvcmQgPSBJTlJFRyhBVURfQ09OVl9DSENOVCk7CisJCU9VVFJFRyhpZ3Rf Z2xvYmFsX21taW8sIEFVRF9DT05WX0NIQ05ULCBpKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIEFVRF9DT05WX0NIQ05UKTsKIAkJcHJpbnRmKCJcdFx0XHRcdFx0WzB4JXhdICV1 ID0+ICVsdVxuIiwgZHdvcmQsIGksIEJJVFMoZHdvcmQsIDcsIDQpKTsKIAl9CiAKIAlwcmludGYo IkFVRF9IRE1JV19IRE1JRURJRCBIRE1JIEVMRDpcblx0Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURf Q05UTF9TVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUKTsK IAlkd29yZCAmPSB+QklUTUFTSyg4LCA1KTsKLQlPVVRSRUcoQVVEX0NOVExfU1QsIGR3b3JkKTsK KwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCwgZHdvcmQpOwogCWZvciAoaSA9 IDA7IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQotCQlwcmludGYoIiUwOHggIiwg aHRvbmwoSU5SRUcoQVVEX0hETUlXX0hETUlFRElEKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRv bmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfSERNSVdfSERNSUVESUQpKSk7CiAJcHJpbnRm KCJcbiIpOwogCiAJcHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSIEhETUkgYXVkaW8gSW5mb2ZyYW1l OlxuXHQiKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUKTsKKwlkd29yZCA9IElOUkVHKGln dF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1QpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7 CiAJZHdvcmQgJj0gfkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NULCBkd29yZCk7 CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1QsIGR3b3JkKTsKIAlmb3IgKGkg PSAwOyBpIDwgODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hETUlX X0lORk9GUikpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1p bywKKwkJCQkJICAgIEFVRF9IRE1JV19JTkZPRlIpKSk7CiAJcHJpbnRmKCJcbiIpOwogfQogCkBA IC04NjMsNyArODY0LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAogCXByaW50Zigi XG5EZXRhaWxzOlxuXG4iKTsKIAotCWR3b3JkID0gSU5SRUcoVklERU9fRElQX0NUTF9BKTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVklERU9fRElQX0NUTF9BKTsKIAlwcmludGYo IlZJREVPX0RJUF9DVExfQSBFbmFibGVfR3JhcGhpY3NfRElQXHRcdFx0JWxkXG4iLCAgICAgQklU KGR3b3JkLCAzMSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9BIEdDUF9ESVBfZW5hYmxlXHRc dFx0XHQlbGRcbiIsICAgICBCSVQoZHdvcmQsIDI1KSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RM X0EgVmlkZW9fRElQX3R5cGVfZW5hYmxlIEFWSVx0XHQlbHVcbiIsICAgICAgIEJJVChkd29yZCwg MjEpKTsKQEAgLTg3Nyw3ICs4NzgsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXBy aW50ZigiVklERU9fRElQX0NUTF9BIFZpZGVvX0RJUF9idWZmZXJfc2l6ZVx0XHRcdCVsdVxuIiwg QklUUyhkd29yZCwgMTEsIDgpKTsKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQSBWaWRlb19ESVBf YWNjZXNzX2FkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9 IElOUkVHKFZJREVPX0RJUF9DVExfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IFZJREVPX0RJUF9DVExfQik7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0IgRW5hYmxlX0dyYXBo aWNzX0RJUFx0XHRcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMzEpKSwKIAlwcmludGYoIlZJREVP X0RJUF9DVExfQiBHQ1BfRElQX2VuYWJsZVx0XHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3JkLCAy NSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9CIFZpZGVvX0RJUF90eXBlX2VuYWJsZSBBVklc dFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDIxKSk7CkBAIC04OTEsNyArODkyLDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBWaWRlb19E SVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRm KCJWSURFT19ESVBfQ1RMX0IgVmlkZW9fRElQX2FjY2Vzc19hZGRyZXNzXHRcdCVsdVxuIiwgQklU Uyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhWSURFT19ESVBfQ1RMX0MpOworCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBWSURFT19ESVBfQ1RMX0MpOwogCXByaW50Zigi VklERU9fRElQX0NUTF9DIEVuYWJsZV9HcmFwaGljc19ESVBcdFx0XHQlbGRcbiIsICAgICBCSVQo ZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgR0NQX0RJUF9lbmFibGVcdFx0 XHRcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMjUpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVExf QyBWaWRlb19ESVBfdHlwZV9lbmFibGUgQVZJXHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAy MSkpOwpAQCAtOTA1LDE3ICs5MDYsMTcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIlZJREVPX0RJUF9DVExfQyBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIs IEJJVFMoZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgVmlkZW9fRElQ X2FjY2Vzc19hZGRyZXNzXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQg PSBJTlJFRyhBVURfVklEX0RJRCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9WSURfRElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRcdFx0XHQweCV4 XG4iLCBkd29yZCA+PiAxNik7CiAJcHJpbnRmKCJBVURfVklEX0RJRCBkZXZpY2UgaWRcdFx0XHRc dFx0MHgleFxuIiwgZHdvcmQgJiAweGZmZmYpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfUklEKTsK Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1JJRCk7CiAJcHJpbnRmKCJBVURf UklEIE1ham9yX1JldmlzaW9uXHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAyMywgMjAp KTsKIAlwcmludGYoIkFVRF9SSUQgTWlub3JfUmV2aXNpb25cdFx0XHRcdFx0MHglbHhcbiIsIEJJ VFMoZHdvcmQsIDE5LCAxNikpOwogCXByaW50ZigiQVVEX1JJRCBSZXZpc2lvbl9JZFx0XHRcdFx0 XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgMTUsIDgpKTsKIAlwcmludGYoIkFVRF9SSUQgU3Rl cHBpbmdfSWRcdFx0XHRcdFx0MHglbHhcbiIsICAgIEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3 b3JkID0gSU5SRUcoSERNSUIpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBIRE1J Qik7CiAJcHJpbnRmKCJIRE1JQiBQb3J0X0VuYWJsZVx0XHRcdFx0XHQldVxuIiwgICAgICAhIShk d29yZCAmIFNEVk9fRU5BQkxFKSk7CiAJcHJpbnRmKCJIRE1JQiBUcmFuc2NvZGVyX1NlbGVjdFx0 XHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgdHJhbnNjb2Rl cl9zZWxlY3RbQklUUyhkd29yZCwgMzAsIDI5KV0pOwpAQCAtOTI4LDcgKzkyOSw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJIRE1JQiBIRE1JX29yX0RWSV9TZWxlY3Rc dFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDkpID8gIkhETUkiIDogIkRWSSIpOwogCXByaW50Zigi SERNSUIgQXVkaW9fT3V0cHV0X0VuYWJsZVx0XHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19B VURJT19FTkFCTEUpKTsKIAotCWR3b3JkID0gSU5SRUcoSERNSUMpOworCWR3b3JkID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCBIRE1JQyk7CiAJcHJpbnRmKCJIRE1JQyBQb3J0X0VuYWJsZVx0XHRc dFx0XHQldVxuIiwgICAgICAhIShkd29yZCAmIFNEVk9fRU5BQkxFKSk7CiAJcHJpbnRmKCJIRE1J QyBUcmFuc2NvZGVyX1NlbGVjdFx0XHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29y ZCwgMzAsIDI5KSwgdHJhbnNjb2Rlcl9zZWxlY3RbQklUUyhkd29yZCwgMzAsIDI5KV0pOwpAQCAt OTQxLDcgKzk0Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJIRE1J QyBIRE1JX29yX0RWSV9TZWxlY3RcdFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDkpID8gIkhETUki IDogIkRWSSIpOwogCXByaW50ZigiSERNSUMgQXVkaW9fT3V0cHV0X0VuYWJsZVx0XHRcdFx0JXVc biIsICEhKGR3b3JkICYgU0RWT19BVURJT19FTkFCTEUpKTsKIAotCWR3b3JkID0gSU5SRUcoSERN SUQpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBIRE1JRCk7CiAJcHJpbnRmKCJI RE1JRCBQb3J0X0VuYWJsZVx0XHRcdFx0XHQldVxuIiwgICAgICAhIShkd29yZCAmIFNEVk9fRU5B QkxFKSk7CiAJcHJpbnRmKCJIRE1JRCBUcmFuc2NvZGVyX1NlbGVjdFx0XHRcdFx0XHRbMHglbHhd ICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgdHJhbnNjb2Rlcl9zZWxlY3RbQklUUyhk d29yZCwgMzAsIDI5KV0pOwpAQCAtOTU0LDcgKzk1NSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0 KHZvaWQpCiAJcHJpbnRmKCJIRE1JRCBIRE1JX29yX0RWSV9TZWxlY3RcdFx0XHRcdCVzXG4iLCBC SVQoZHdvcmQsIDkpID8gIkhETUkiIDogIkRWSSIpOwogCXByaW50ZigiSERNSUQgQXVkaW9fT3V0 cHV0X0VuYWJsZVx0XHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RWT19BVURJT19FTkFCTEUpKTsK IAotCWR3b3JkID0gSU5SRUcoRFBfQ1RMX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBEUF9DVExfQik7CiAJcHJpbnRmKCJEUF9DVExfQiBEaXNwbGF5UG9ydF9FbmFibGVcdFx0 XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwogCXByaW50ZigiRFBfQ1RMX0IgUG9ydF9XaWR0 aF9TZWxlY3Rpb25cdFx0XHRcdFsweCVseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAyMSwgMTkp LCBkcF9wb3J0X3dpZHRoW0JJVFMoZHdvcmQsIDIxLCAxOSldKTsKQEAgLTk2Miw3ICs5NjMsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiRFBfQ1RMX0IgSERDUF9Qb3J0 X1NlbGVjdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDUpKTsKIAlwcmludGYoIkRQX0NUTF9C IEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA2KSk7CiAKLQlk d29yZCA9IElOUkVHKERQX0NUTF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg RFBfQ1RMX0MpOwogCXByaW50ZigiRFBfQ1RMX0MgRGlzcGxheVBvcnRfRW5hYmxlXHRcdFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMzEpKTsKIAlwcmludGYoIkRQX0NUTF9DIFBvcnRfV2lkdGhfU2Vs ZWN0aW9uXHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMjEsIDE5KSwgZHBf cG9ydF93aWR0aFtCSVRTKGR3b3JkLCAyMSwgMTkpXSk7CkBAIC05NzAsNyArOTcxLDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkRQX0NUTF9DIEhEQ1BfUG9ydF9TZWxl Y3RcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA1KSk7CiAJcHJpbnRmKCJEUF9DVExfQyBBdWRp b19PdXRwdXRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNikpOwogCi0JZHdvcmQg PSBJTlJFRyhEUF9DVExfRCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIERQX0NU TF9EKTsKIAlwcmludGYoIkRQX0NUTF9EIERpc3BsYXlQb3J0X0VuYWJsZVx0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDMxKSk7CiAJcHJpbnRmKCJEUF9DVExfRCBQb3J0X1dpZHRoX1NlbGVjdGlv blx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDIxLCAxOSksIGRwX3BvcnRf d2lkdGhbQklUUyhkd29yZCwgMjEsIDE5KV0pOwpAQCAtOTc4LDcgKzk3OSw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJEUF9DVExfRCBIRENQX1BvcnRfU2VsZWN0XHRc dFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNSkpOwogCXByaW50ZigiRFBfQ1RMX0QgQXVkaW9fT3V0 cHV0X0VuYWJsZVx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDYpKTsKIAotCWR3b3JkID0gSU5S RUcoQVVEX0NPTkZJR19BKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NP TkZJR19BKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgTl9pbmRleF92YWx1ZVx0XHRcdFx0WzB4 JWx4XSAlc1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJVChkd29yZCwg MjkpXSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIE5fcHJvZ3JhbW1pbmdfZW5hYmxlXHRcdFx0 JWx1XG4iLCBCSVQoZHdvcmQsIDI4KSk7CkBAIC05ODcsNyArOTg4LDcgQEAgc3RhdGljIHZvaWQg ZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgUGl4ZWxfQ2xvY2tfSERNSVx0 XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwgMTksIDE2KSwKIAkJCU9QTkFNRShwaXhl bF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkpOwogCXByaW50ZigiQVVEX0NPTkZJR19BICBE aXNhYmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Ci0JZHdvcmQgPSBJTlJF RyhBVURfQ09ORklHX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09O RklHX0IpOwogCXByaW50ZigiQVVEX0NPTkZJR19CICBOX2luZGV4X3ZhbHVlXHRcdFx0XHRbMHgl bHhdICVzXG4iLCBCSVQoZHdvcmQsIDI5KSwKIAkJCW5faW5kZXhfdmFsdWVbQklUKGR3b3JkLCAy OSldKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgTl9wcm9ncmFtbWluZ19lbmFibGVcdFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMjgpKTsKQEAgLTk5Niw3ICs5OTcsNyBAQCBzdGF0aWMgdm9pZCBk dW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NPTkZJR19CICBQaXhlbF9DbG9ja19IRE1JXHRc dFx0XHRbMHglbHhdICVzXG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpLAogCQkJT1BOQU1FKHBpeGVs X2Nsb2NrLCBCSVRTKGR3b3JkLCAxOSwgMTYpKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0IgIERp c2FibGVfTkNUU1x0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDMpKTsKLQlkd29yZCA9IElOUkVH KEFVRF9DT05GSUdfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DT05G SUdfQyk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0MgIE5faW5kZXhfdmFsdWVcdFx0XHRcdFsweCVs eF0gJXNcbiIsIEJJVChkd29yZCwgMjkpLAogCQkJbl9pbmRleF92YWx1ZVtCSVQoZHdvcmQsIDI5 KV0pOwogCXByaW50ZigiQVVEX0NPTkZJR19DICBOX3Byb2dyYW1taW5nX2VuYWJsZVx0XHRcdCVs dVxuIiwgQklUKGR3b3JkLCAyOCkpOwpAQCAtMTAwNiwzNiArMTAwNywzNiBAQCBzdGF0aWMgdm9p ZCBkdW1wX2NwdCh2b2lkKQogCQkJT1BOQU1FKHBpeGVsX2Nsb2NrLCBCSVRTKGR3b3JkLCAxOSwg MTYpKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0MgIERpc2FibGVfTkNUU1x0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDMpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NUU19FTkFCTEVfQSk7CisJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DVFNfRU5BQkxFX0EpOwogCXByaW50 ZigiQVVEX0NUU19FTkFCTEVfQSAgRW5hYmxlX0NUU19vcl9NX3Byb2dyYW1taW5nXHRcdCVsdVxu IiwgQklUKGR3b3JkLCAyMCkpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQSAgQ1RTX00gdmFs dWUgSW5kZXhcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCAyMSkgPyAiQ1RTIiA6ICJNIik7CiAJcHJp bnRmKCJBVURfQ1RTX0VOQUJMRV9BICBDVFNfcHJvZ3JhbW1pbmdcdFx0XHQlI2x4XG4iLCBCSVRT KGR3b3JkLCAxOSwgMCkpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NUU19FTkFCTEVfQik7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DVFNfRU5BQkxFX0IpOwogCXByaW50Zigi QVVEX0NUU19FTkFCTEVfQiAgRW5hYmxlX0NUU19vcl9NX3Byb2dyYW1taW5nXHRcdCVsdVxuIiwg QklUKGR3b3JkLCAyMCkpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQiAgQ1RTX00gdmFsdWUg SW5kZXhcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCAyMSkgPyAiQ1RTIiA6ICJNIik7CiAJcHJpbnRm KCJBVURfQ1RTX0VOQUJMRV9CICBDVFNfcHJvZ3JhbW1pbmdcdFx0XHQlI2x4XG4iLCBCSVRTKGR3 b3JkLCAxOSwgMCkpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NUU19FTkFCTEVfQyk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DVFNfRU5BQkxFX0MpOwogCXByaW50ZigiQVVE X0NUU19FTkFCTEVfQyAgRW5hYmxlX0NUU19vcl9NX3Byb2dyYW1taW5nXHRcdCVsdVxuIiwgQklU KGR3b3JkLCAyMCkpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQyAgQ1RTX00gdmFsdWUgSW5k ZXhcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCAyMSkgPyAiQ1RTIiA6ICJNIik7CiAJcHJpbnRmKCJB VURfQ1RTX0VOQUJMRV9DICBDVFNfcHJvZ3JhbW1pbmdcdFx0XHQlI2x4XG4iLCBCSVRTKGR3b3Jk LCAxOSwgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfTUlTQ19DVFJMX0EpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0EpOwogCXByaW50ZigiQVVEX01J U0NfQ1RSTF9BICBTYW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJQklUKGR3b3Jk LCAyKSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0EgIFNhbXBsZV9wcmVzZW50X0Rpc2FibGVc dFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9BICBP dXRwdXRfRGVsYXlcdFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsKIAlwcmludGYo IkFVRF9NSVNDX0NUUkxfQSAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlCSVQoZHdvcmQs IDEpKTsKLQlkd29yZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQik7CisJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIEFVRF9NSVNDX0NUUkxfQik7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJM X0IgIFNhbXBsZV9GYWJyaWNhdGlvbl9FTl9iaXRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDIpKTsK IAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQiAgU2FtcGxlX3ByZXNlbnRfRGlzYWJsZVx0XHRcdCVs dVxuIiwJQklUKGR3b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0IgIE91dHB1dF9E ZWxheVx0XHRcdFx0JWx1XG4iLAkJQklUUyhkd29yZCwgNywgNCkpOwogCXByaW50ZigiQVVEX01J U0NfQ1RSTF9CICBQcm9fQWxsb3dlZFx0XHRcdFx0JWx1XG4iLAkJCUJJVChkd29yZCwgMSkpOwot CWR3b3JkID0gSU5SRUcoQVVEX01JU0NfQ1RSTF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9i YWxfbW1pbywgQVVEX01JU0NfQ1RSTF9DKTsKIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQyAgU2Ft cGxlX0ZhYnJpY2F0aW9uX0VOX2JpdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMikpOwogCXByaW50 ZigiQVVEX01JU0NfQ1RSTF9DICBTYW1wbGVfcHJlc2VudF9EaXNhYmxlXHRcdFx0JWx1XG4iLAlC SVQoZHdvcmQsIDgpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQyAgT3V0cHV0X0RlbGF5XHRc dFx0XHQlbHVcbiIsCQlCSVRTKGR3b3JkLCA3LCA0KSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJM X0MgIFByb19BbGxvd2VkXHRcdFx0XHQlbHVcbiIsCQkJQklUKGR3b3JkLCAxKSk7CiAKLQlkd29y ZCA9IElOUkVHKEFVRF9QV1JTVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9QV1JTVCk7CiAJcHJpbnRmKCJBVURfUFdSU1QgIEZ1bmNfR3JwX0Rldl9Qd3JTdF9DdXJyICAg ICAgICAgICAgICAgICAgXHQlc1xuIiwgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgMjcsIDI2KV0p OwogCXByaW50ZigiQVVEX1BXUlNUICBGdW5jX0dycF9EZXZfUHdyU3RfU2V0ICAgICAgICAgICAg ICAgICAgIFx0JXNcbiIsIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDI1LCAyNCldKTsKIAlwcmlu dGYoIkFVRF9QV1JTVCAgQ29udmVydG9yQV9XaWRnZXRfUG93ZXJfU3RhdGVfQ3VycmVudCAgICBc dCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAxNSwgMTQpXSk7CkBAIC0xMDUxLDcgKzEw NTIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX1BXUlNUICBQ aW5EX1dpZGdldF9Qb3dlcl9TdGF0ZV9DdXJyZW50ICAgICAgICAgIFx0JXNcbiIsIHBvd2VyX3N0 YXRlW0JJVFMoZHdvcmQsIDExLCAxMCldKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluRF9XaWRn ZXRfUG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRT KGR3b3JkLCAgOSwgIDgpXSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9QT1JUX0VOX0hEX0NGRyk7 CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QT1JUX0VOX0hEX0NGRyk7CiAJ cHJpbnRmKCJBVURfUE9SVF9FTl9IRF9DRkcgIENvbnZlcnRvcl9BX0RpZ2VuXHRcdFx0JWx1XG4i LAlCSVQoZHdvcmQsIDApKTsKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9y X0JfRGlnZW5cdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX1BPUlRf RU5fSERfQ0ZHICBDb252ZXJ0b3JfQ19EaWdlblx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAyKSk7 CkBAIC0xMDY1LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50 ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBQb3J0X0NfQW1wX011dGVfU3RhdHVzXHRcdCVsdVxuIiwg QklUKGR3b3JkLCAyMSkpOwogCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBQb3J0X0RfQW1w X011dGVfU3RhdHVzXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMikpOwogCi0JZHdvcmQgPSBJTlJF RyhBVURfT1VUX0RJR19DTlZUX0EpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBB VURfT1VUX0RJR19DTlZUX0EpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9BICBWXHRcdFx0 XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9B ICBWQ0ZHXHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRf RElHX0NOVlRfQSAgUFJFXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMykpOwpAQCAtMTA3 Nyw3ICsxMDc4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9P VVRfRElHX0NOVlRfQSAgTG93ZXN0X0NoYW5uZWxfTnVtYmVyXHRcdCVsdVxuIiwgQklUUyhkd29y ZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0EgIFN0cmVhbV9JRFx0XHRc dFx0JWx1XG4iLAlCSVRTKGR3b3JkLCAyMywgMjApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09V VF9ESUdfQ05WVF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9E SUdfQ05WVF9CKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQiAgVlx0XHRcdFx0XHQlbHVc biIsCQlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQiAgVkNGR1x0 XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZU X0IgIFBSRVx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDMpKTsKQEAgLTEwODksNyArMTA5 MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUX0IgIExvd2VzdF9DaGFubmVsX051bWJlclx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE5LCAx NikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9CICBTdHJlYW1fSURcdFx0XHRcdCVsdVxu IiwJQklUUyhkd29yZCwgMjMsIDIwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfRElHX0NO VlRfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NOVlRf Qyk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0MgIFZcdFx0XHRcdFx0JWx1XG4iLAkJQklU KGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0MgIFZDRkdcdFx0XHRcdCVs dVxuIiwJCUJJVChkd29yZCwgMikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBQUkVc dFx0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAzKSk7CkBAIC0xMTAzLDggKzExMDQsOSBAQCBz dGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCiAJcHJpbnRmKCJBVURfT1VUX0NIX1NUUiAgQ29u dmVydGVyX0NoYW5uZWxfTUFQCVBPUlRCCVBPUlRDCVBPUlREXG4iKTsKIAlmb3IgKGkgPSAwOyBp IDwgODsgaSsrKSB7Ci0JCU9VVFJFRyhBVURfT1VUX0NIX1NUUiwgaSB8IChpIDw8IDgpIHwgKGkg PDwgMTYpKTsKLQkJZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NIX1NUUik7CisJCU9VVFJFRyhpZ3Rf Z2xvYmFsX21taW8sIEFVRF9PVVRfQ0hfU1RSLCBpIHwgKGkgPDwgOCkgfAorCQkgICAgICAgKGkg PDwgMTYpKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfQ0hfU1RS KTsKIAkJcHJpbnRmKCJcdFx0XHRcdCVsdVx0JWx1XHQlbHVcdCVsdVxuIiwKIAkJCQkxICsgQklU Uyhkd29yZCwgIDMsICAwKSwKIAkJCQkxICsgQklUUyhkd29yZCwgIDcsICA0KSwKQEAgLTExMTIs MzMgKzExMTQsMzMgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAkJCQkxICsgQklUUyhk d29yZCwgMjMsIDIwKSk7CiAJfQogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX1NUUl9ERVNDX0Ep OworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX1NUUl9ERVNDX0EpOwog CXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19BICBIQlJfZW5hYmxlXHRcdFx0XHQlbHVcbiIsCSBC SVRTKGR3b3JkLCAyOCwgMjcpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgQ29udmVy dG9yX0NoYW5uZWxfQ291bnRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAyMCwgMTYpICsgMSk7CiAJ cHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0EgIEJpdHNfcGVyX1NhbXBsZVx0XHRcdFslI2x4XSAl c1xuIiwKIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUoYml0c19wZXJfc2FtcGxlLCBCSVRT KGR3b3JkLCA2LCA0KSkpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19BICBOdW1iZXJfb2Zf Q2hhbm5lbHNfaW5fYV9TdHJlYW1cdCVsdVxuIiwgMSArIEJJVFMoZHdvcmQsIDMsIDApKTsKIAot CWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQ19CKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX09VVF9TVFJfREVTQ19CKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RF U0NfQiAgSEJSX2VuYWJsZVx0XHRcdFx0JWx1XG4iLAkgQklUUyhkd29yZCwgMjgsIDI3KSk7CiAJ cHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0IgIENvbnZlcnRvcl9DaGFubmVsX0NvdW50XHRcdCVs dVxuIiwgQklUUyhkd29yZCwgMjAsIDE2KSArIDEpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVT Q19CICBCaXRzX3Blcl9TYW1wbGVcdFx0XHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCA2 LCA0KSwgT1BOQU1FKGJpdHNfcGVyX3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKIAlwcmlu dGYoIkFVRF9PVVRfU1RSX0RFU0NfQiAgTnVtYmVyX29mX0NoYW5uZWxzX2luX2FfU3RyZWFtXHQl bHVcbiIsIDEgKyBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRf U1RSX0RFU0NfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfU1RS X0RFU0NfQyk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0MgIEhCUl9lbmFibGVcdFx0XHRc dCVsdVxuIiwJIEJJVFMoZHdvcmQsIDI4LCAyNykpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVT Q19DICBDb252ZXJ0b3JfQ2hhbm5lbF9Db3VudFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDIwLCAx NikgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQyAgQml0c19wZXJfU2FtcGxlXHRc dFx0WyUjbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgNiwgNCksIE9QTkFNRShiaXRzX3Blcl9z YW1wbGUsIEJJVFMoZHdvcmQsIDYsIDQpKSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0Mg IE51bWJlcl9vZl9DaGFubmVsc19pbl9hX1N0cmVhbVx0JWx1XG4iLCAxICsgQklUUyhkd29yZCwg MywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfUElOV19DT05OTE5HX1NFTCk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QSU5XX0NPTk5MTkdfU0VMKTsKIAlwcmludGYo IkFVRF9QSU5XX0NPTk5MTkdfU0VMICBDb25uZWN0aW9uX3NlbGVjdF9Db250cm9sX0JcdCUjbHhc biIsIEJJVFMoZHdvcmQsICA3LCAgMCkpOwogCXByaW50ZigiQVVEX1BJTldfQ09OTkxOR19TRUwg IENvbm5lY3Rpb25fc2VsZWN0X0NvbnRyb2xfQ1x0JSNseFxuIiwgQklUUyhkd29yZCwgMTUsICA4 KSk7CiAJcHJpbnRmKCJBVURfUElOV19DT05OTE5HX1NFTCAgQ29ubmVjdGlvbl9zZWxlY3RfQ29u dHJvbF9EXHQlI2x4XG4iLCBCSVRTKGR3b3JkLCAyMywgMTYpKTsKIAotCWR3b3JkID0gSU5SRUco QVVEX0NOVExfU1RfQSk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRM X1NUX0EpOwogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRElQX1BvcnRfU2VsZWN0XHRcdFx0XHRb JSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9ydFtCSVRTKGR3b3Jk LCAzMCwgMjkpXSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9BICBESVBfdHlwZV9lbmFibGVfc3Rh dHVzIEF1ZGlvIERJUFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKQEAgLTExNDksNyArMTE1 MSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ05UTF9TVF9B ICBFTERfQUNLXHRcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURf Q05UTF9TVF9BICBFTERfYnVmZmVyX3NpemVcdFx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTQs IDEwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0IpOworCWR3b3JkID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0Ig IERJUF9Qb3J0X1NlbGVjdFx0XHRcdFx0WyUjbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAs IDI5KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAsIDI5KV0pOwogCXByaW50ZigiQVVEX0NOVExf U1RfQiAgRElQX3R5cGVfZW5hYmxlX3N0YXR1cyBBdWRpbyBESVBcdFx0JWx1XG4iLCBCSVQoZHdv cmQsIDIxKSk7CkBAIC0xMTYwLDcgKzExNjIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lk KQogCXByaW50ZigiQVVEX0NOVExfU1RfQiAgRUxEX0FDS1x0XHRcdFx0XHQlbHVcbiIsIEJJVChk d29yZCwgNCkpOwogCXByaW50ZigiQVVEX0NOVExfU1RfQiAgRUxEX2J1ZmZlcl9zaXplXHRcdFx0 XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE0LCAxMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ05U TF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQyk7 CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBESVBfUG9ydF9TZWxlY3RcdFx0XHRcdFslI2x4XSAl c1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIGRpcF9wb3J0W0JJVFMoZHdvcmQsIDMwLCAy OSldKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIERJUF90eXBlX2VuYWJsZV9zdGF0dXMgQXVk aW8gRElQXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMSkpOwpAQCAtMTE3MSw3ICsxMTczLDcgQEAg c3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIEVMRF9B Q0tcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDQpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NU X0MgIEVMRF9idWZmZXJfc2l6ZVx0XHRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxNCwgMTApKTsK IAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJMX1NUMik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIEFVRF9DTlRSTF9TVDIpOwogCXByaW50ZigiQVVEX0NOVFJMX1NUMiAgQ1BfUmVh ZHlCXHRcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX0NOVFJMX1NU MiAgRUxEX3ZhbGlkQlx0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDApKTsKIAlwcmludGYoIkFV RF9DTlRSTF9TVDIgIENQX1JlYWR5Q1x0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDUpKTsKQEAg LTExNzksNyArMTE4MSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJB VURfQ05UUkxfU1QyICBDUF9SZWFkeURcdFx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCA5KSk7CiAJ cHJpbnRmKCJBVURfQ05UUkxfU1QyICBFTERfdmFsaWREXHRcdFx0XHQlbHVcbiIsCUJJVChkd29y ZCwgOCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ05UUkxfU1QzKTsKKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVFJMX1NUMyk7CiAJcHJpbnRmKCJBVURfQ05UUkxfU1Qz ICBUcmFuc0FfRFBUX0F1ZGlvX091dHB1dF9Fblx0XHQlbHVcbiIsCUJJVChkd29yZCwgMykpOwog CXByaW50ZigiQVVEX0NOVFJMX1NUMyAgVHJhbnNBX3RvX1BvcnRfU2VsXHRcdFx0WyUjbHhdICVz XG4iLAogCQkJQklUUyhkd29yZCwgMiwgMCksIHRyYW5zX3RvX3BvcnRfc2VsW0JJVFMoZHdvcmQs IDIsIDApXSk7CkBAIC0xMTkwLDcgKzExOTIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lk KQogCXByaW50ZigiQVVEX0NOVFJMX1NUMyAgVHJhbnNDX3RvX1BvcnRfU2VsXHRcdFx0WyUjbHhd ICVzXG4iLAogCQkJQklUUyhkd29yZCwgMTAsIDgpLCB0cmFuc190b19wb3J0X3NlbFtCSVRTKGR3 b3JkLCAxMCwgOCldKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0hETUlXX1NUQVRVUyk7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50Zigi QVVEX0hETUlXX1NUQVRVUyAgQ29udl9BX0NEQ0xLL0RPVENMS19GSUZPX1VuZGVycnVuXHQlbHVc biIsIEJJVChkd29yZCwgMjcpKTsKIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMgIENvbnZfQV9D RENMSy9ET1RDTEtfRklGT19PdmVycnVuXHQlbHVcbiIsICBCSVQoZHdvcmQsIDI2KSk7CiAJcHJp bnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0JfQ0RDTEsvRE9UQ0xLX0ZJRk9fVW5kZXJydW5c dCVsdVxuIiwgQklUKGR3b3JkLCAyOSkpOwpAQCAtMTIwMSw1NCArMTIwMyw2MCBAQCBzdGF0aWMg dm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyAgRnVuY3Rpb25f UmVzZXRcdFx0XHQlbHVcbiIsCQkgQklUKGR3b3JkLCAyNCkpOwogCiAJcHJpbnRmKCJBVURfSERN SVdfSERNSUVESURfQSBIRE1JIEVMRDpcblx0Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9T VF9BKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSk7CiAJ ZHdvcmQgJj0gfkJJVE1BU0soOSwgNSk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NUX0EsIGR3b3JkKTsK KwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9BLCBkd29yZCk7CiAJZm9yIChp ID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0OyBpKyspCi0JCXByaW50ZigiJTA4eCAi LCBodG9ubChJTlJFRyhBVURfSERNSVdfSERNSUVESURfQSkpKTsKKwkJcHJpbnRmKCIlMDh4ICIs IGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJCQkJICAgIEFVRF9IRE1JV19IRE1JRURJ RF9BKSkpOwogCXByaW50ZigiXG4iKTsKIAogCXByaW50ZigiQVVEX0hETUlXX0hETUlFRElEX0Ig SERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQik7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0IpOwogCWR3b3JkICY9IH5CSVRN QVNLKDksIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVF9CLCBkd29yZCk7CisJT1VUUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQiwgZHdvcmQpOwogCWZvciAoaSA9IDA7IGkgPCBCSVRT KGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUco QVVEX0hETUlXX0hETUlFRElEX0IpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhp Z3RfZ2xvYmFsX21taW8sCisJCQkJCSAgICBBVURfSERNSVdfSERNSUVESURfQikpKTsKIAlwcmlu dGYoIlxuIik7CiAKIAlwcmludGYoIkFVRF9IRE1JV19IRE1JRURJRF9DIEhETUkgRUxEOlxuXHQi KTsKLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBBVURfQ05UTF9TVF9DKTsKIAlkd29yZCAmPSB+QklUTUFTSyg5LCA1KTsKLQlP VVRSRUcoQVVEX0NOVExfU1RfQywgZHdvcmQpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIEFV RF9DTlRMX1NUX0MsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhkd29yZCwgMTQsIDEw KSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19IRE1J RURJRF9DKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlv LAorCQkJCQkgICAgQVVEX0hETUlXX0hETUlFRElEX0MpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiAJ cHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSX0EgSERNSSBhdWRpbyBJbmZvZnJhbWU6XG5cdCIpOwot CWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DTlRMX1NUX0EpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdv cmQgJj0gfkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NUX0EsIGR3b3JkKTsKKwlP VVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9BLCBkd29yZCk7CiAJZm9yIChpID0g MDsgaSA8IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19J TkZPRlJfQSkpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1p bywKKwkJCQkJICAgIEFVRF9IRE1JV19JTkZPRlJfQSkpKTsKIAlwcmludGYoIlxuIik7CiAKIAlw cmludGYoIkFVRF9IRE1JV19JTkZPRlJfQiBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0Iik7Ci0J ZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgQVVEX0NOVExfU1RfQik7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKIAlkd29y ZCAmPSB+QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQiwgZHdvcmQpOworCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKIAlmb3IgKGkgPSAw OyBpIDwgODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hETUlXX0lO Rk9GUl9CKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlv LAorCQkJCQkgICAgQVVEX0hETUlXX0lORk9GUl9CKSkpOwogCXByaW50ZigiXG4iKTsKIAogCXBy aW50ZigiQVVEX0hETUlXX0lORk9GUl9DIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKLQlk d29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ05UTF9TVF9DKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwogCWR3b3Jk ICY9IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVF9DLCBkd29yZCk7CisJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQywgZHdvcmQpOwogCWZvciAoaSA9IDA7 IGkgPCA4OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSU5G T0ZSX0MpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8s CisJCQkJCSAgICBBVURfSERNSVdfSU5GT0ZSX0MpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiB9CkBA IC0xMzc0LDEwICsxMzgyLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2NvbmZpZyhpbnQgaW5k ZXgpCiAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmICghSVNfSEFTV0VMTF9Q TFVTKGRldmlkKSkgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DT05GSUdf QSArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQ09ORklHX0EgKworCQkJICAgICAgKGluZGV4IC0g UElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQ09ORklHXyVjICAiLCAn QScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVn X2Jhc2UgKyBBVURfVENBX0NPTkZJRyArIChpbmRleCAtIFRSQU5TQ09ERVJfQSkgKiAweDEwMCk7 CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfVENB X0NPTkZJRyArCisJCQkgICAgICAoaW5kZXggLSBUUkFOU0NPREVSX0EpICogMHgxMDApOwogCQlz cHJpbnRmKHByZWZpeCwgIkFVRF9UQyVjX0NPTkZJRyIsICdBJyArIGluZGV4IC0gVFJBTlNDT0RF Ul9BKTsKIAl9CiAKQEAgLTEzOTcsMTAgKzE0MDcsMTIgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRf bWlzY19jb250cm9sKGludCBpbmRleCkKIAljaGFyIHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwog CiAJaWYgKCFJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3Jl Z19iYXNlICsgQVVEX01JU0NfQ1RSTF9BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKKwkJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9NSVNDX0NU UkxfQSArCisJCQkgICAgICAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHBy ZWZpeCwgIkFVRF9NSVNDX0NUUkxfJWMgIiwgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwogCX0gZWxz ZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0MxX01JU0NfQ1RSTCArIChp bmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9NSVNDX0NUUkwgKworCQkJICAgICAgKGluZGV4 IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DJWNfTUlT Q19DVFJMIiwgJzEnICsgaW5kZXggLSBDT05WRVJURVJfMSk7CiAJfQogCkBAIC0xNDE0LDcgKzE0 MjYsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF92ZW5kb3JfZGV2aWNlX2lkKHZvaWQpCiB7CiAJ dWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9WSURf RElEKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVE X1ZJRF9ESUQpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0XHRcdDB4JWx4 XG4iLCBCSVRTKGR3b3JkLCAxNSwgMCkpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgdmVuZG9yIGlk XHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAzMSwgMTYpKTsKIH0KQEAgLTE0MjMsNyAr MTQzNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3JldmlzaW9uX2lkKHZvaWQpCiB7CiAJdWlu dDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9SSUQpOwor CWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfUklEKTsK IAlwcmludGYoIkFVRF9SSUQgU3RlcHBpbmdfSWRcdFx0XHRcdFx0MHglbHhcbiIsICAgIEJJVFMo ZHdvcmQsIDcsIDApKTsKIAlwcmludGYoIkFVRF9SSUQgUmV2aXNpb25fSWRcdFx0XHRcdFx0MHgl bHhcbiIsICAgIEJJVFMoZHdvcmQsIDE1LCA4KSk7CiAJcHJpbnRmKCJBVURfUklEIE1pbm9yX1Jl dmlzaW9uXHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKQEAgLTE0MzYs MTAgKzE0NDgsMTMgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfbV9jdHNfZW5hYmxlKGludCBpbmRl eCkKIAljaGFyIHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwogCiAJaWYgKCFJU19IQVNXRUxMX1BM VVMoZGV2aWQpKSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0NUU19FTkFC TEVfQSAgKyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0NUU19FTkFCTEVfQSArCisJCQkgICAgICAo aW5kZXggLSBQSVBFX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DVFNfRU5B QkxFXyVjICAgICIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9IGVsc2UgewotCQlkd29yZCA9 IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfTV9DVFNfRU5BQkxFICArIChpbmRleCAtIFRS QU5TQ09ERVJfQSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBh dWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVEX1RDQV9NX0NUU19FTkFCTEUgICsgKGluZGV4IC0g VFJBTlNDT0RFUl9BKSAqCisJCQkgICAgICAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVE X1RDJWNfTV9DVFNfRU5BQkxFIiwgJ0EnICsgaW5kZXggLSBUUkFOU0NPREVSX0EpOwogCX0KIApA QCAtMTQ1NCw3ICsxNDY5LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfcG93ZXJfc3RhdGUodm9p ZCkKIAl1aW50MzJfdCBkd29yZDsKIAlpbnQgbnVtX3BpcGVzOwogCi0JZHdvcmQgPSBJTlJFRyhh dWRfcmVnX2Jhc2UgKyBBVURfUFdSU1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfUFdSU1QpOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5CX1dp ZGdldF9Qb3dlcl9TdGF0ZV9TZXQgICAgICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJf c3RhdGVbQklUUyhkd29yZCwgIDEsICAwKV0pOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5CX1dp ZGdldF9Qb3dlcl9TdGF0ZV9DdXJyZW50ICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJf c3RhdGVbQklUUyhkd29yZCwgIDMsICAyKV0pOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5DX1dp ZGdldF9Qb3dlcl9TdGF0ZV9TZXQgICAgICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJf c3RhdGVbQklUUyhkd29yZCwgIDUsICA0KV0pOwpAQCAtMTUxMCwxMSArMTUyNSwxMSBAQCBzdGF0 aWMgdm9pZCBkdW1wX2F1ZF9lZGlkX2RhdGEoaW50IGluZGV4KQogCQlwcmludGYoIkFVRF9IRE1J V19IRE1JRURJRF8lYyBIRE1JIEVMRDpcblx0IiwgICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9 CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9jdHJsX3N0KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9i YWxfbW1pbywgYXVkX2N0cmxfc3QpOwogCWR3b3JkICY9IH5CSVRNQVNLKDksIDUpOwotCU9VVFJF RyhhdWRfY3RybF9zdCwgZHdvcmQpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9jdHJs X3N0LCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0OyBp KyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhlZGlkX2RhdGEpKSk7CisJCXByaW50 ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGVkaWRfZGF0YSkpKTsKIAlw cmludGYoIlxuIik7CiB9CiAKQEAgLTE1MzcsMTIgKzE1NTIsMTIgQEAgc3RhdGljIHZvaWQgZHVt cF9hdWRfaW5mb2ZyYW1lKGludCBpbmRleCkKIAkJcHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSXyVj IEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiLCAgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwogCX0K IAotCWR3b3JkID0gSU5SRUcoYXVkX2N0cmxfc3QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBhdWRfY3RybF9zdCk7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKIAlkd29y ZCAmPSB+QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoYXVkX2N0cmxfc3QsIGR3b3JkKTsKKwlPVVRS RUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfY3RybF9zdCwgZHdvcmQpOwogCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpbmZvX2ZybSkpKTsKKwkJ cHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywgaW5mb19mcm0pKSk7 CiAJcHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNTUxLDcgKzE1NjYsNyBAQCBzdGF0aWMgdm9pZCBk dW1wX2F1ZF9wb3J0X2VuX2hkX2NmZyh2b2lkKQogCXVpbnQzMl90IGR3b3JkOwogCWludCBudW1f cGlwZXMgPSBnZXRfbnVtX3BpcGVzKCk7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSAr IEFVRF9QT1JUX0VOX0hEX0NGRyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1 ZF9yZWdfYmFzZSArIEFVRF9QT1JUX0VOX0hEX0NGRyk7CiAJaWYgKG51bV9waXBlcyA9PSAyKSB7 CiAJCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBDb252ZXJ0b3JfQV9EaWdlblx0XHRcdCVs dVxuIiwgICAgQklUKGR3b3JkLCAwKSk7CiAJCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBD b252ZXJ0b3JfQl9EaWdlblx0XHRcdCVsdVxuIiwgICAgQklUKGR3b3JkLCAxKSk7CkBAIC0xNTg1 LDcgKzE2MDAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9waXBlX2NvbnZfY2ZnKHZvaWQpCiB7 CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9Q SVBFX0NPTlZfQ0ZHKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19i YXNlICsgQVVEX1BJUEVfQ09OVl9DRkcpOwogCXByaW50ZigiQVVEX1BJUEVfQ09OVl9DRkcgIENv bnZlcnRvcl8xX0RpZ2VuXHRcdFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDApKTsKIAlwcmludGYo IkFVRF9QSVBFX0NPTlZfQ0ZHICBDb252ZXJ0b3JfMl9EaWdlblx0XHRcdCVsdVxuIiwgICAgQklU KGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfUElQRV9DT05WX0NGRyAgQ29udmVydG9yXzNfRGln ZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMikpOwpAQCAtMTYwNywxMCArMTYyMiwxMiBA QCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9kaWdfY252dChpbnQgaW5kZXgpCiAJY2hhciBwcmVmaXhb TUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmICghSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewotCQlk d29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9PVVRfRElHX0NOVlRfQSAgKyAoaW5kZXgg LSBQSVBFX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsKKwkJCSAgICAgIEFVRF9PVVRfRElHX0NOVlRfQSAgKyAoaW5kZXggLSBQSVBF X0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9PVVRfRElHX0NOVlRfJWMiLCAn QScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVn X2Jhc2UgKyBBVURfQzFfRElHX0NOVlQgKyAoaW5kZXggLSBDT05WRVJURVJfMSkgKiAweDEwMCk7 CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFf RElHX0NOVlQgKworCQkJICAgICAgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOwogCQlz cHJpbnRmKHByZWZpeCwgIkFVRF9DJWNfRElHX0NOVlQgICAiLCAnMScgKyBpbmRleCAtIENPTlZF UlRFUl8xKTsKIAl9CiAKQEAgLTE2MzMsMTAgKzE2NTAsMTIgQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfc3RyX2Rlc2MoaW50IGluZGV4KQogCXVpbnQzMl90IHJhdGU7CiAKIAlpZiAoIUlTX0hBU1dF TExfUExVUyhkZXZpZCkpIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfT1VU X1NUUl9ERVNDX0EgKyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsKKwkJCSAgICAgIEFVRF9PVVRfU1RSX0RF U0NfQSArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVE X09VVF9TVFJfREVTQ18lYyIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9IGVsc2UgewotCQlk d29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9TVFJfREVTQyArIChpbmRleCAtIENP TlZFUlRFUl8xKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1 ZF9yZWdfYmFzZSArIEFVRF9DMV9TVFJfREVTQyArCisJCQkgICAgICAoaW5kZXggLSBDT05WRVJU RVJfMSkgKiAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX0MlY19TVFJfREVTQyAgIiwg JzEnICsgaW5kZXggLSBDT05WRVJURVJfMSk7CiAJfQogCkBAIC0xNjY4LDggKzE2ODcsOSBAQCBz dGF0aWMgdm9pZCBkdW1wX2F1ZF9vdXRfY2hhbl9tYXAodm9pZCkKIAogCXByaW50ZigiQVVEX09V VF9DSEFOX01BUCAgQ29udmVydGVyX0NoYW5uZWxfTUFQCVBPUlRCCVBPUlRDCVBPUlREXG4iKTsK IAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0JCU9VVFJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf T1VUX0NIQU5fTUFQLCBpIHwgKGkgPDwgOCkgfCAoaSA8PCAxNikpOwotCQlkd29yZCA9IElOUkVH KGF1ZF9yZWdfYmFzZSArIEFVRF9PVVRfQ0hBTl9NQVApOworCQlPVVRSRUcoaWd0X2dsb2JhbF9t bWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfT1VUX0NIQU5fTUFQLAorCQkgICAgICAgaSB8IChpIDw8 IDgpIHwgKGkgPDwgMTYpKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9y ZWdfYmFzZSArIEFVRF9PVVRfQ0hBTl9NQVApOwogCQlwcmludGYoIlx0XHRcdFx0JWx1XHQlbHVc dCVsdVx0JWx1XG4iLAogCQkJCTEgKyBCSVRTKGR3b3JkLCAgMywgIDApLAogCQkJCTEgKyBCSVRT KGR3b3JkLCAgNywgIDQpLApAQCAtMTY4Myw3ICsxNzAzLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfY29ubmVjdF9saXN0KHZvaWQpCiAJdWludDMyX3QgZHdvcmQ7CiAJY2hhciBwcmVmaXhbTUFY X1BSRUZJWF9TSVpFXTsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJTldf Q09OTkxOR19MSVNUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19i YXNlICsgQVVEX1BJTldfQ09OTkxOR19MSVNUKTsKIAlzcHJpbnRmKHByZWZpeCwgIkFVRF9QSU5X X0NPTk5MTkdfTElTVCIpOwogCiAJcHJpbnRmKCIlcyAgQ29ubmVjdF9MaXN0X0xlbmd0aFx0XHQl bHVcbiIsICAgICBwcmVmaXgsIEJJVFMoZHdvcmQsIDYsIDApKTsKQEAgLTE2OTgsMTEgKzE3MTgs MTMgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY29ubmVjdF9zZWxlY3Qodm9pZCkKIAljaGFyIHBy ZWZpeFtNQVhfUFJFRklYX1NJWkVdOwogCiAJaWYgKElTX0hBU1dFTExfUExVUyhkZXZpZCkpIHsK LQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElQRV9DT05OX1NFTF9DVFJMKTsK KwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArCisJCQkgICAg ICBBVURfUElQRV9DT05OX1NFTF9DVFJMKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfUElQRV9D T05OX1NFTF9DVFJMIik7CiAKIAl9IGVsc2UgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFz ZSArIEFVRF9QSU5XX0NPTk5MTkdfU0VMKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9yZWdfYmFzZSArCisJCQkgICAgICBBVURfUElOV19DT05OTE5HX1NFTCk7CiAJCXNw cmludGYocHJlZml4LCAiQVVEX1BJTldfQ09OTkxOR19TRUwgICIpOwogCX0KIApAQCAtMTcxOCwx MSArMTc0MCwxMyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jdHJsX3N0YXRlKGludCBpbmRleCkK IAogCWlmIChJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7CiAJCW9mZnNldCA9IChpbmRleCAtIFRS QU5TQ09ERVJfQSkgKiAweDEwMDsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf VENBX0RJUF9FTERfQ1RSTF9TVCArIG9mZnNldCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCBhdWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVEX1RDQV9ESVBfRUxEX0NUUkxfU1Qg KyBvZmZzZXQpOwogCQlwcmludGYoIkF1ZGlvIERJUCBhbmQgRUxEIGNvbnRyb2wgc3RhdGUgZm9y IFRyYW5zY29kZXIgJWNcbiIsICAnQScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7CiAJfSBlbHNl IHsKIAkJb2Zmc2V0ID0gKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwOwotCQlkd29yZCA9IElOUkVH KGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUX0EgKyBvZmZzZXQpOworCQlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0NOVExfU1RfQSArCisJCQkgICAg ICBvZmZzZXQpOwogCQlwcmludGYoIkF1ZGlvIGNvbnRyb2wgc3RhdGUgLSBQaXBlICVjXG4iLCAg J0EnICsgaW5kZXggLSBQSVBFX0EpOwogCX0KIApAQCAtMTc0Myw3ICsxNzY3LDcgQEAgc3RhdGlj IHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZTIodm9pZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAot CWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0NOVExfU1QyKTsKKwlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0NOVExfU1QyKTsKIAlwcmlu dGYoIkFVRF9DTlRMX1NUMiAgRUxEX3ZhbGlkQlx0XHRcdFx0JWx1XG4iLCAgQklUKGR3b3JkLCAw KSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVDIgIENQX1JlYWR5Qlx0XHRcdFx0XHQlbHVcbiIsIEJJ VChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX0NOVExfU1QyICBFTERfdmFsaWRDXHRcdFx0XHQl bHVcbiIsICBCSVQoZHdvcmQsIDQpKTsKQEAgLTE3NTcsNyArMTc4MSw3IEBAIHN0YXRpYyB2b2lk IGR1bXBfYXVkX2VsZF9jcF92bGQodm9pZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3Jk ID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJTl9FTERfQ1BfVkxEKTsKKwlkd29yZCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1BJTl9FTERfQ1BfVkxEKTsK IAlwcmludGYoIkFVRF9QSU5fRUxEX0NQX1ZMRCAgVHJhbnNjb2Rlcl9BIEVMRF92YWxpZFx0XHQl bHVcbiIsCUJJVChkd29yZCwgMCkpOwogCXByaW50ZigiQVVEX1BJTl9FTERfQ1BfVkxEICBUcmFu c2NvZGVyX0EgQ1BfUmVhZHkgXHRcdCVsdVxuIiwJQklUKGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJB VURfUElOX0VMRF9DUF9WTEQgIFRyYW5zY29kZXJfQSBPdXRfZW5hYmxlXHRcdCVsdVxuIiwJQklU KGR3b3JkLCAyKSk7CkBAIC0xNzc2LDcgKzE4MDAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9o ZG1pX3N0YXR1cyh2b2lkKQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhh dWRfcmVnX2Jhc2UgKyBBVURfSERNSVdfU1RBVFVTKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9i YWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0hETUlXX1NUQVRVUyk7CiAJcHJpbnRmKCJBVURf SERNSVdfU1RBVFVTICBGdW5jdGlvbl9SZXNldFx0XHRcdCVsdVxuIiwgICAgICAgICAgICAgICAg QklUKGR3b3JkLCAyNCkpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyAgQkNMSy9DRENMS19G SUZPX092ZXJydW5cdFx0JWx1XG4iLAkgICAgIEJJVChkd29yZCwgMjUpKTsKIAlwcmludGYoIkFV RF9IRE1JV19TVEFUVVMgIENvbnZfQV9DRENMSy9ET1RDTEtfRklGT19PdmVycnVuXHQlbHVcbiIs ICBCSVQoZHdvcmQsIDI4KSk7CkBAIC0xODE3LDcgKzE4NDEsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X2RwX3BvcnRfY3RybChpbnQgcG9ydCkKIAlzcHJpbnRmKHByZWZpeCwgIkRQXyVjIiwgJ0InICsg cG9ydCAtIFBPUlRfQik7CiAKIAlwb3J0X2N0cmwgPSBkaXNwX3JlZ19iYXNlICsgRFBfQ1RMX0Ig KyAocG9ydCAtIFBPUlRfQikgKiAweDEwMDsKLQlkd29yZCA9IElOUkVHKHBvcnRfY3RybCk7CisJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHBvcnRfY3RybCk7CiAJcHJpbnRmKCIlcyBE aXNwbGF5UG9ydF9FbmFibGVcdFx0XHRcdFx0JWx1XG4iLCAgICAgICAgcHJlZml4LCBCSVQoZHdv cmQsIDMxKSk7CiAJcHJpbnRmKCIlcyBUcmFuc2NvZGVyX1NlbGVjdFx0XHRcdFx0XHQlc1xuIiwg ICAgICAgICAgcHJlZml4LCBCSVQoZHdvcmQsIDMwKSA/ICJUcmFuc2NvZGVyIEIiIDogIlRyYW5z Y29kZXIgQSIpOwogCXByaW50ZigiJXMgUG9ydF9XaWR0aF9TZWxlY3Rpb25cdFx0XHRcdFsweCVs eF0gJXNcbiIsIHByZWZpeCwgQklUUyhkd29yZCwgMjEsIDE5KSwKQEAgLTE4NDEsNyArMTg2NSw3 IEBAIHN0YXRpYyB2b2lkIGR1bXBfaGRtaV9wb3J0X2N0cmwoaW50IHBvcnQpCiAJCXBvcnRfY3Ry bCA9IGRpc3BfcmVnX2Jhc2UgKyBIRE1JX0NUTF9CICsgKHBvcnQgLSBQT1JUX0IpICogMHgxMDsK IAl9CiAKLQlkd29yZCA9IElOUkVHKHBvcnRfY3RybCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIHBvcnRfY3RybCk7CiAJcHJpbnRmKCIlcyBIRE1JX0VuYWJsZVx0XHRcdFx0XHQl dVxuIiwgICAgICAgICAgICAgICAgIHByZWZpeCwgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwog CXByaW50ZigiJXMgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdCVzXG4iLCAgICAgICAgICAgICBw cmVmaXgsIEJJVChkd29yZCwgMzApID8gIlRyYW5zY29kZXIgQiIgOiAiVHJhbnNjb2RlciBBIik7 CiAJcHJpbnRmKCIlcyBIRENQX1BvcnRfU2VsZWN0XHRcdFx0XHQlbHVcbiIsICAgICAgICAgICAg IHByZWZpeCwgQklUKGR3b3JkLCA1KSk7CkBAIC0yMDI5LDcgKzIwNTMsNyBAQCBzdGF0aWMgdm9p ZCBkdW1wX2RkaV9idWZfY3RsKGludCBwb3J0KQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdv cmQgPSBJTlJFRyhERElfQlVGX0NUTF9BICsgKHBvcnQgLSBQT1JUX0EpICogMHgxMDApOworCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBERElfQlVGX0NUTF9BICsgKHBvcnQgLSBQT1JU X0EpICogMHgxMDApOwogCXByaW50ZigiRERJICVjIEJ1ZmZlciBjb250cm9sXG4iLCAnQScgKyBw b3J0IC0gUE9SVF9BKTsKIAogCXByaW50ZigiXHREUCBwb3J0IHdpZHRoXHRcdFx0XHRcdFsweCVs eF0gJXNcbiIsIEJJVFMoZHdvcmQsIDMsIDEpLApAQCAtMjA0MSw3ICsyMDY1LDggQEAgc3RhdGlj IHZvaWQgZHVtcF9kZGlfZnVuY19jdGwoaW50IHBpcGUpCiB7CiAJdWludDMyX3QgZHdvcmQ7CiAK LQlkd29yZCA9IElOUkVHKFBJUEVfRERJX0ZVTkNfQ1RMX0EgKyAocGlwZSAtIFBJUEVfQSkgKiAw eDEwMDApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBQSVBFX0RESV9GVU5DX0NU TF9BICsgKHBpcGUgLSBQSVBFX0EpICoKKwkJICAgICAgMHgxMDAwKTsKIAlwcmludGYoIlBpcGUg JWMgRERJIEZ1bmN0aW9uIENvbnRyb2xcbiIsICdBJyArIHBpcGUgLSBQSVBFX0EpOwogCiAJcHJp bnRmKCJcdEJJVFMgcGVyIGNvbG9yXHRcdFx0XHRcdFsweCVseF0gJXNcbiIsICAgIEJJVFMoZHdv cmQsIDIyLCAyMCksCkBAIC0yMDU4LDcgKzIwODMsOCBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9j b25uZWN0X2xpc3RfZW50cnlfbGVuZ3RoKGludCB0cmFuc2NvZGVyKQogCXVpbnQzMl90IGR3b3Jk OwogCWNoYXIgcHJlZml4W01BWF9QUkVGSVhfU0laRV07CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9y ZWdfYmFzZSArIEFVRF9UQ0FfUElOX1BJUEVfQ09OTl9FTlRSWV9MTkdUSCArICh0cmFuc2NvZGVy IC0gVFJBTlNDT0RFUl9BKSAqIDB4MTAwKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX3JlZ19iYXNlICsKKwkJICAgICAgQVVEX1RDQV9QSU5fUElQRV9DT05OX0VOVFJZX0xO R1RIICsgKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgxMDApOwogCXNwcmludGYocHJl Zml4LCAiQVVEX1RDJWNfUElOX1BJUEVfQ09OTl9FTlRSWV9MTkdUSCIsICdBJyArIHRyYW5zY29k ZXIgLSBUUkFOU0NPREVSX0EpOwogCiAJcHJpbnRmKCIlcyAgQ29ubmVjdF9MaXN0X0xlbmd0aFx0 JWx1XG4iLCBwcmVmaXgsIEJJVFMoZHdvcmQsIDYsIDApKTsKQEAgLTIwNzEsNyArMjA5Nyw3IEBA IHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3Rfc2VsZWN0X2N0cmwodm9pZCkKIHsKIAl1aW50 MzJfdCBkd29yZDsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVfQ09O Tl9TRUxfQ1RSTCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFz ZSArIEFVRF9QSVBFX0NPTk5fU0VMX0NUUkwpOwogCXByaW50ZigiQVVEX1BJUEVfQ09OTl9TRUxf Q1RSTCAgQ29ubmVjdGlvbl9zZWxlY3RfUG9ydF9CXHQlI2x4XG4iLCBCSVRTKGR3b3JkLCAgNywg IDApKTsKIAlwcmludGYoIkFVRF9QSVBFX0NPTk5fU0VMX0NUUkwgIENvbm5lY3Rpb25fc2VsZWN0 X1BvcnRfQ1x0JSNseFxuIiwgQklUUyhkd29yZCwgMTUsICA4KSk7CiAJcHJpbnRmKCJBVURfUElQ RV9DT05OX1NFTF9DVFJMICBDb25uZWN0aW9uX3NlbGVjdF9Qb3J0X0RcdCUjbHhcbiIsIEJJVFMo ZHdvcmQsIDIzLCAxNikpOwpAQCAtMjA4Miw3ICsyMTA4LDggQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfZGlwX2VsZF9jdHJsX3N0KGludCB0cmFuc2NvZGVyKQogCXVpbnQzMl90IGR3b3JkOwogCWlu dCBvZmZzZXQgPSAodHJhbnNjb2RlciAtIFRSQU5TQ09ERVJfQSkgKiAweDEwMDsKIAotCWR3b3Jk ID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9ESVBfRUxEX0NUUkxfU1QgKyBvZmZzZXQp OworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfVENB X0RJUF9FTERfQ1RSTF9TVCArCisJCSAgICAgIG9mZnNldCk7CiAJcHJpbnRmKCJBdWRpbyBESVAg YW5kIEVMRCBjb250cm9sIHN0YXRlIGZvciBUcmFuc2NvZGVyICVjXG4iLCAgJ0EnICsgdHJhbnNj b2RlciAtIFRSQU5TQ09ERVJfQSk7CiAKIAlwcmludGYoIlx0RUxEX0FDS1x0XHRcdFx0XHRcdCVs dVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoZHdvcmQsIDQpKTsKQEAg LTIxMDIsNyArMjEyOSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2hkbWlfZmlmb19zdGF0dXMo dm9pZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNl ICsgQVVEX0hETUlfRklGT19TVEFUVVMpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfSERNSV9GSUZPX1NUQVRVUyk7CiAJcHJpbnRmKCJBVURfSERN SV9GSUZPX1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgICAg IEJJVChkd29yZCwgMjQpKTsKIAlwcmludGYoIkFVRF9IRE1JX0ZJRk9fU1RBVFVTICBDb252XzFf Q0RDTEsvRE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyNikpOwogCXBy aW50ZigiQVVEX0hETUlfRklGT19TVEFUVVMgIENvbnZfMV9DRENMSy9ET1RDTEtfRklGT19VbmRl cnJ1blx0JWx1XG4iLCBCSVQoZHdvcmQsIDI3KSk7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9i YWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCmluZGV4IGU0ODUwZTg4Li44NWQw OTlkNyAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKKysrIGIvdG9vbHMvaW50 ZWxfYmFja2xpZ2h0LmMKQEAgLTQyLDggKzQyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq KiBhcmd2KQogCiAJaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAtMSk7CiAKLQljdXJyZW50ID0gSU5SRUcoQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9E VVRZX0NZQ0xFX01BU0s7Ci0JbWF4ID0gSU5SRUcoQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CisJ Y3VycmVudCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tM SUdIVF9EVVRZX0NZQ0xFX01BU0s7CisJbWF4ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENf UFdNX1BDSF9DVEwyKSA+PiAxNjsKIAogCXByaW50ZiAoImN1cnJlbnQgYmFja2xpZ2h0IHZhbHVl OiAlZCUlXG4iLCBjdXJyZW50ICogMTAwIC8gbWF4KTsKIApAQCAtNTEsOSArNTEsOSBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAJCXVpbnQzMl90IHYgPSBhdG9pIChhcmd2WzFd KSAqIG1heCAvIDEwMDsKIAkJaWYgKHYgPiBtYXgpCiAJCQl2ID0gbWF4OwotCQlPVVRSRUcoQkxD X1BXTV9DUFVfQ1RMLAotCQkgICAgICAgKElOUkVHKEJMQ19QV01fQ1BVX0NUTCkgJn4gQkFDS0xJ R0hUX0RVVFlfQ1lDTEVfTUFTSykgfCB2KTsKLQkJKHZvaWQpIElOUkVHKEJMQ19QV01fQ1BVX0NU TCk7CisJCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCwKKwkJICAgICAg IChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCkgJiB+QkFDS0xJR0hUX0RV VFlfQ1lDTEVfTUFTSykgfCB2KTsKKwkJKHZvaWQpSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENf UFdNX0NQVV9DVEwpOwogCQlwcmludGYgKCJzZXQgYmFja2xpZ2h0IHRvICVkJSVcbiIsIHYgKiAx MDAgLyBtYXgpOwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIu YyBiL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKaW5kZXggNTFmNWI5YTUuLmUxMDk0ZDM5 IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCisrKyBiL3Rvb2xzL2lu dGVsX2Rpc3BsYXlfcG9sbGVyLmMKQEAgLTcxLDIyICs3MSwyMiBAQCBzdGF0aWMgdm9pZCBzaWdo YW5kbGVyKGludCB4KQogCiBzdGF0aWMgdWludDE2X3QgcmVhZF9yZWdfMTYodWludDMyX3QgcmVn KQogewotCXJldHVybiBJTlJFRzE2KHZsdl9vZmZzZXQgKyByZWcpOworCXJldHVybiBJTlJFRzE2 KGlndF9nbG9iYWxfbW1pbywgdmx2X29mZnNldCArIHJlZyk7CiB9CiAKIHN0YXRpYyB1aW50MzJf dCByZWFkX3JlZyh1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuIElOUkVHKHZsdl9vZmZzZXQgKyBy ZWcpOworCXJldHVybiBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcpOwog fQogCiBzdGF0aWMgdm9pZCB3cml0ZV9yZWdfMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwp CiB7Ci0JT1VUUkVHMTYodmx2X29mZnNldCArIHJlZywgdmFsKTsKKwlPVVRSRUcxNihpZ3RfZ2xv YmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRl X3JlZyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQlPVVRSRUcodmx2X29mZnNldCAr IHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCB2bHZfb2Zmc2V0ICsgcmVnLCB2 YWwpOwogfQogCiBzdGF0aWMgY2hhciBwaXBlX25hbWUoaW50IHBpcGUpCmRpZmYgLS1naXQgYS90 b29scy9pbnRlbF9mb3JjZXdha2VkLmMgYi90b29scy9pbnRlbF9mb3JjZXdha2VkLmMKaW5kZXgg MDJmYmY4ODguLmUwNTdmNWZlIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9mb3JjZXdha2VkLmMK KysrIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCkBAIC01OSw3ICs1OSw3IEBAIGhlbHAoY2hh ciAqcHJvZykgewogc3RhdGljIGludAogaXNfYWxpdmUodm9pZCkgewogCS8qIFJlYWQgdGhlIHRp bWVzdGFtcCwgd2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5cyBiZSAhMCAqLwotCXJldHVybiAo aW50ZWxfcmVnaXN0ZXJfcmVhZCgweDIzNTgpICE9IDApOworCXJldHVybiAoaW50ZWxfcmVnaXN0 ZXJfcmVhZChpZ3RfZ2xvYmFsX21taW8sIDB4MjM1OCkgIT0gMCk7CiB9CiAKIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9ncHVfdGltZS5j IGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwppbmRleCA0ZWQ2NDMwZS4uZDkwYjgxNmEgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUu YwpAQCAtODYsOCArODYsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXdo aWxlICghZ29kZG8pIHsKIAkJdWludDMyX3QgcmluZ19oZWFkLCByaW5nX3RhaWw7CiAKLQkJcmlu Z19oZWFkID0gSU5SRUcoTFBfUklORyArIFJJTkdfSEVBRCkgJiBIRUFEX0FERFI7Ci0JCXJpbmdf dGFpbCA9IElOUkVHKExQX1JJTkcgKyBSSU5HX1RBSUwpICYgVEFJTF9BRERSOworCQlyaW5nX2hl YWQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIExQX1JJTkcgKyBSSU5HX0hFQUQpICYKKwkJCSAg ICBIRUFEX0FERFI7CisJCXJpbmdfdGFpbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgTFBfUklO RyArIFJJTkdfVEFJTCkgJgorCQkJICAgIFRBSUxfQUREUjsKIAogCQlpZiAocmluZ190YWlsID09 IHJpbmdfaGVhZCkKIAkJCXJpbmdfaWRsZSsrOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfaW5m b2ZyYW1lcy5jIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCmluZGV4IDJlZjVkNGZkLi42ODlm NWZhYSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCisrKyBiL3Rvb2xzL2lu dGVsX2luZm9mcmFtZXMuYwpAQCAtMzM3LDIwICszMzcsMjAgQEAgc3RhdGljIHZvaWQgbG9hZF9p bmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBJbmZvRnJhbWUgKmZyYW1lLAogCXVp bnQzMl90IGN0bF92YWw7CiAJdWludDMyX3QgaTsKIAotCWN0bF92YWwgPSBJTlJFRyhjdGxfcmVn KTsKKwljdGxfdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKIAogCWN0bF92 YWwgJj0gfkRJUF9DVExfQlVGRkVSX0lOREVYOwogCWN0bF92YWwgfD0gdHlwZSA8PCAxOTsKLQlP VVRSRUcoY3RsX3JlZywgY3RsX3ZhbCk7Ci0JY3RsX3ZhbCA9IElOUkVHKGN0bF9yZWcpOworCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcsIGN0bF92YWwpOworCWN0bF92YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcpOwogCiAJY3RsX3ZhbCAmPSB+RElQX0NUTF9BQ0NF U1NfQUREUjsKLQlPVVRSRUcoY3RsX3JlZywgY3RsX3ZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxf bW1pbywgY3RsX3JlZywgY3RsX3ZhbCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewot CQljdGxfdmFsID0gSU5SRUcoY3RsX3JlZyk7CisJCWN0bF92YWwgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIGN0bF9yZWcpOwogCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RMX0FDQ0VTU19BRERS KSA9PSBpKTsKLQkJZnJhbWUtPmRhdGEzMltpXSA9IElOUkVHKGRhdGFfcmVnKTsKKwkJZnJhbWUt PmRhdGEzMltpXSA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgZGF0YV9yZWcpOwogCX0KIH0KIApA QCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGluZm9mcmFtZV9maXhfY2hlY2tzdW0oRGlw SW5mb0ZyYW1lICpmcmFtZSkKIHN0YXRpYyB2b2lkIGR1bXBfcG9ydF9pbmZvKGludCBoZG1pX3Bv cnRfaW5kZXgpCiB7CiAJUmVnaXN0ZXIgcG9ydCA9IGdldF9oZG1pX3BvcnQoaGRtaV9wb3J0X2lu ZGV4KTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhwb3J0KTsKKwl1aW50MzJfdCB2YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIHBvcnQpOwogCVRyYW5zY29kZXIgdHJhbnNjb2RlcjsKIAogCXBy aW50ZigiXG5Qb3J0ICVzOlxuIiwgaGRtaV9wb3J0X25hbWVzW2hkbWlfcG9ydF9pbmRleF0pOwpA QCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXZpX2luZm8oVHJhbnNjb2RlciB0 cmFuc2NvZGVyKQogCURpcEluZm9GcmFtZSBmcmFtZTsKIAogCWxvYWRfaW5mb2ZyYW1lKHRyYW5z Y29kZXIsICZmcmFtZSwgRElQX0FWSSk7Ci0JdmFsID0gSU5SRUcocmVnKTsKKwl2YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAlwcmludGYoIkFWSSBJbmZvRnJhbWU6XG4iKTsK IApAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfdmVuZG9yX2luZm8oVHJhbnNj b2RlciB0cmFuc2NvZGVyKQogCURpcEluZm9GcmFtZSBmcmFtZTsKIAogCWxvYWRfaW5mb2ZyYW1l KHRyYW5zY29kZXIsICZmcmFtZSwgRElQX1ZFTkRPUik7Ci0JdmFsID0gSU5SRUcocmVnKTsKKwl2 YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAlwcmludGYoIlZlbmRvciBJbmZv RnJhbWU6XG4iKTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZ2FtdXRf aW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiAJRGlwSW5mb0ZyYW1lIGZyYW1lOwogCiAJbG9h ZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBfR0FNVVQpOwotCXZhbCA9IElOUkVH KHJlZyk7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJcHJpbnRmKCJH YW11dCBJbmZvRnJhbWU6XG4iKTsKIApAQCAtNjAwLDcgKzYwMCw3IEBAIHN0YXRpYyB2b2lkIGR1 bXBfc3BkX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogCWNoYXIgZGVzY3JpcHRpb25bMTdd OwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBfU1BEKTsKLQl2YWwg PSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCXBy aW50ZigiU1BEIEluZm9GcmFtZTpcbiIpOwogCkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIHZv aWQgZHVtcF9zcGRfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiBzdGF0aWMgdm9pZCBkdW1w X3RyYW5zY29kZXJfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiB7CiAJUmVnaXN0ZXIgcmVn ID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJl Zyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJaWYg KGdlbiA9PSA0KSB7CiAJCXByaW50ZigiXG5ESVAgaW5mb3JtYXRpb246XG4iKTsKQEAgLTY5OCwz NyArNjk4LDM3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5z Y29kZXIsIERpcFR5cGUgdHlwZSwKIAl1aW50MzJfdCBjdGxfdmFsOwogCXVuc2lnbmVkIGludCBp OwogCi0JY3RsX3ZhbCA9IElOUkVHKGN0bF9yZWcpOworCWN0bF92YWwgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIGN0bF9yZWcpOwogCWN0bF92YWwgJj0gfkRJUF9DVExfQlVGRkVSX0lOREVYOwog CWN0bF92YWwgfD0gKHR5cGUgPDwgMTkpOwogCWN0bF92YWwgJj0gfkRJUF9DVExfQUNDRVNTX0FE RFI7Ci0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8s IGN0bF9yZWcsIGN0bF92YWwpOwogCiAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewotCQljdGxf dmFsID0gSU5SRUcoY3RsX3JlZyk7CisJCWN0bF92YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IGN0bF9yZWcpOwogCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RMX0FDQ0VTU19BRERSKSA9PSBp KTsKLQkJT1VUUkVHKGRhdGFfcmVnLCBmcmFtZS0+ZGF0YTMyW2ldKTsKKwkJT1VUUkVHKGlndF9n bG9iYWxfbW1pbywgZGF0YV9yZWcsIGZyYW1lLT5kYXRhMzJbaV0pOwogCX0KIH0KIAogc3RhdGlj IHZvaWQgZGlzYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5 cGUpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVp bnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCByZWcpOwogCWlmIChnZW4gIT0gNCAmJiB0eXBlID09IERJUF9BVkkpCiAJCXZhbCAm PSB+RElQX0NUTF9FTkFCTEU7CiAJdmFsICY9IH4oMSA8PCAoMjEgKyB0eXBlKSk7Ci0JT1VUUkVH KHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0 YXRpYyB2b2lkIGVuYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBl IHR5cGUpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwot CXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCByZWcpOwogCWlmIChnZW4gIT0gNCAmJiB0eXBlID09IERJUF9BVkkpCiAJCXZh bCB8PSBESVBfQ1RMX0VOQUJMRTsKIAl2YWwgfD0gKDEgPDwgKDIxICsgdHlwZSkpOwotCU9VVFJF RyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2YWwpOwogfQogCiBz dGF0aWMgaW50IHBhcnNlX2luZm9mcmFtZV9vcHRpb25fdShjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpzLApAQCAtNzg3LDcgKzc4Nyw3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZV9hdmlfaW5m b2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgY2hhciAqY29tbWFuZHMpCiAJY2hhciAqY3Vy cmVudCA9IGNvbW1hbmRzOwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBE SVBfQVZJKTsKLQl2YWwgPSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgcmVnKTsKIAogCXdoaWxlICgxKSB7CiAJCXJjID0gc3NjYW5mKGN1cnJlbnQsICIlMzFzJW4i LCBvcHRpb24sICZyZWFkKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2Vf YXZpX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNvbW1hbmRzKQogCiAJ dmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKIAl2YWwgfD0gRElQX0NUTF9GUkVRX0VWRVJZOwot CU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2YWwpOwog CiAJZnJhbWUuYXZpLmhlYWRlci50eXBlID0gQVZJX0lORk9GUkFNRV9UWVBFOwogCWZyYW1lLmF2 aS5oZWFkZXIudmVyc2lvbiA9IEFWSV9JTkZPRlJBTUVfVkVSU0lPTjsKQEAgLTg4OCw3ICs4ODgs NyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2Vfc3BkX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29k ZXIsIGNoYXIgKmNvbW1hbmRzKQogCWNoYXIgKmN1cnJlbnQgPSBjb21tYW5kczsKIAogCWxvYWRf aW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX1NQRCk7Ci0JdmFsID0gSU5SRUcocmVn KTsKKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAl3aGlsZSAoMSkgewog CQlyYyA9IHNzY2FuZihjdXJyZW50LCAiJTE1cyVuIiwgb3B0aW9uLCAmcmVhZCk7CkBAIC05MTcs NyArOTE3LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlX3NwZF9pbmZvZnJhbWUoVHJhbnNjb2RlciB0 cmFuc2NvZGVyLCBjaGFyICpjb21tYW5kcykKIAogCXZhbCAmPSB+RElQX0NUTF9GUkVRVUVOQ1k7 CiAJdmFsIHw9IERJUF9DVExfRlJFUV9FVkVSWV9PVEhFUjsKLQlPVVRSRUcocmVnLCB2YWwpOwor CU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIAogCWZyYW1lLnNwZC5oZWFkZXIu dHlwZSA9IFNQRF9JTkZPRlJBTUVfVFlQRTsKIAlmcmFtZS5zcGQuaGVhZGVyLnZlcnNpb24gPSBT UERfSU5GT0ZSQU1FX1ZFUlNJT047CkBAIC05NDYsNyArOTQ2LDcgQEAgc3RhdGljIHZvaWQgY2hh bmdlX2luZm9mcmFtZV9mcmVxdWVuY3koVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5 cGUsCiAJCQkJICAgICAgIERpcEZyZXF1ZW5jeSBmcmVxdWVuY3kpCiB7CiAJUmVnaXN0ZXIgcmVn ID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJl Zyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJaWYg KHR5cGUgPT0gRElQX0FWSSAmJiBmcmVxdWVuY3kgIT0gRElQX0ZSRVFfRVZFUllfVlNZTkMpIHsK IAkJcHJpbnRmKCJFcnJvcjogQVZJIGluZm9mcmFtZSBtdXN0IGJlIHNlbnQgZXZlcnkgVlN5bmMh XG4iKTsKQEAgLTk1NSwzNyArOTU1LDM3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZV9pbmZvZnJhbWVf ZnJlcXVlbmN5KFRyYW5zY29kZXIgdHJhbnNjb2RlciwgRGlwVHlwZSB0eXBlLAogCiAJdmFsICY9 IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKIAl2YWwgfD0gKGZyZXF1ZW5jeSA8PCAxNik7Ci0JT1VUUkVH KHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0 YXRpYyB2b2lkIGRpc2FibGVfZGlwKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIHsKIAlSZWdpc3Rl ciByZWcgPSBnZXRfZGlwX2N0bF9yZWcodHJhbnNjb2Rlcik7Ci0JdWludDMyX3QgdmFsID0gSU5S RUcocmVnKTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAJ dmFsICY9IH5ESVBfQ1RMX0VOQUJMRTsKLQlPVVRSRUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3Rf Z2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQgZW5hYmxlX2RpcChUcmFu c2NvZGVyIHRyYW5zY29kZXIpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRy YW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCXZhbCB8PSBESVBfQ1RMX0VOQUJMRTsKLQlP VVRSRUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0K IAogc3RhdGljIHZvaWQgZGlzYWJsZV9oZG1pX3BvcnQoUmVnaXN0ZXIgcmVnKQogewotCXVpbnQz Ml90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCByZWcpOwogCXZhbCAmPSB+SERNSV9QT1JUX0VOQUJMRTsKLQlPVVRSRUcocmVnLCB2YWwp OworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQg ZW5hYmxlX2hkbWlfcG9ydChSZWdpc3RlciByZWcpCiB7Ci0JdWludDMyX3QgdmFsID0gSU5SRUco cmVnKTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAJdmFs IHw9IEhETUlfUE9SVF9FTkFCTEU7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2ds b2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3VzYWdlKHZvaWQp CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9sM19wYXJpdHkuYyBiL3Rvb2xzL2ludGVsX2wzX3Bh cml0eS5jCmluZGV4IGQ4Yzk5N2FmLi4wMTRhYzlmMSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf bDNfcGFyaXR5LmMKKysrIGIvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKQEAgLTIxMSw3ICsyMTEs NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqIG5vdy4gSnVzdCBiZSBh d2FyZSBvZiB0aGlzIGlmIGZvciBzb21lIHJlYXNvbiBhIGhhbmcgaXMgcmVwb3J0ZWQKIAkgKiB3 aGVuIHVzaW5nIHRoaXMgdG9vbC4KIAkgKi8KLQlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4 YjAzOCk7CisJZGZ0ID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChpZ3RfZ2xvYmFsX21taW8sIDB4YjAz OCk7CiAKIAl3aGlsZSAoMSkgewogCQlpbnQgYywgb3B0aW9uX2luZGV4ID0gMDsKQEAgLTM1Nywx MCArMzU3LDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYXNzZXJ0 KGkgPCAyKTsKIAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBzbGljZSAqLwogCQkJCWRmdCB8PSAxIDw8 IDA7IC8qIGVuYWJsZSAqLwotCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKDB4YjAzOCwgZGZ0KTsK KwkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIDB4YjAzOCwKKwkJCQkJ CSAgICAgZGZ0KTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3UnOgotCQkJCWludGVsX3JlZ2lzdGVy X3dyaXRlKDB4YjAzOCwgZGZ0ICYgfigxPDwwKSk7CisJCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUo aWd0X2dsb2JhbF9tbWlvLCAweGIwMzgsCisJCQkJCQkgICAgIGRmdCAmIH4oMSA8PCAwKSk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlICdMJzoKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3Rvb2xzL2lu dGVsX2xpZC5jIGIvdG9vbHMvaW50ZWxfbGlkLmMKaW5kZXggZjQ1NzU2ZTIuLmE0MTMyZDU2IDEw MDY0NAotLS0gYS90b29scy9pbnRlbF9saWQuYworKysgYi90b29scy9pbnRlbF9saWQuYwpAQCAt MTIyLDcgKzEyMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnRlbF9t bWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xKTsKIAogCXdoaWxlICgx KSB7Ci0JCXN3ZjE0ID0gSU5SRUcoU1dGMTQpOworCQlzd2YxNCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgU1dGMTQpOwogCiAJCXByaW50ZigiSW50ZWwgTFZEUyBMaWQgc3RhdHVzOlxuIik7CiAJ CXByaW50ZigiXHRTV0YxNCgweCV4KSA6ICVzXG4iLCBzd2YxNCwKZGlmZiAtLWdpdCBhL3Rvb2xz L2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKaW5kZXgg MTM3ZWY2MWEuLjI2ODQzZDdjIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIu YworKysgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwpAQCAtODQsMTIgKzg0LDEyIEBAIHN0 YXRpYyB2b2lkIHJlYWRfcGlwZV9pbmZvKGludCBpbnRlbF9waXBlLCBzdHJ1Y3QgcGlwZV9pbmZv ICppbmZvKQogewogCXVpbnQzMl90IGNvbmYsIHZ0b3RhbCwgaHRvdGFsLCBzcmMsIGN0cmwxLCB3 aW5fc3o7CiAKLQljb25mICAgPSBJTlJFRyhQSVBFQ09ORltpbnRlbF9waXBlXSk7Ci0JaHRvdGFs ID0gSU5SRUcoSFRPVEFMW2ludGVsX3BpcGVdKTsKLQl2dG90YWwgPSBJTlJFRyhWVE9UQUxbaW50 ZWxfcGlwZV0pOwotCXNyYyAgICA9IElOUkVHKFBJUEVTUkNbaW50ZWxfcGlwZV0pOwotCWN0cmwx ICA9IElOUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdKTsKLQl3aW5fc3ogPSBJTlJFRyhQRl9XSU5f U1pbaW50ZWxfcGlwZV0pOworCWNvbmYgICA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUElQRUNP TkZbaW50ZWxfcGlwZV0pOworCWh0b3RhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSFRPVEFM W2ludGVsX3BpcGVdKTsKKwl2dG90YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZUT1RBTFtp bnRlbF9waXBlXSk7CisJc3JjICAgID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBQSVBFU1JDW2lu dGVsX3BpcGVdKTsKKwljdHJsMSAgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX0NUUkwxW2lu dGVsX3BpcGVdKTsKKwl3aW5fc3ogPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9TWltp bnRlbF9waXBlXSk7CiAKIAlpbmZvLT5lbmFibGVkID0gKGNvbmYgJiBQSVBFQ09ORl9FTkFCTEUp ID8gdHJ1ZSA6IGZhbHNlOwogCWluZm8tPnRvdF93aWR0aCA9IChodG90YWwgJiBIVE9UQUxfQUNU SVZFX01BU0spICsgMTsKQEAgLTIzMiwyNCArMjMyLDI0IEBAIHN0YXRpYyBpbnQgY2hhbmdlX3Nj cmVlbl9zaXplKGludCBpbnRlbF9waXBlLCBpbnQgeCwgaW50IHkpCiAJCQlhc3NlcnQoMCk7CiAJ CX0KIAl9Ci0JT1VUUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdLCBjdHJsMV92YWwpOworCU9VVFJF RyhpZ3RfZ2xvYmFsX21taW8sIFBGX0NUUkwxW2ludGVsX3BpcGVdLCBjdHJsMV92YWwpOwogCiAJ d2luX3Bvc192YWwgPSBwb3NfeCA8PCAxNjsKIAl3aW5fcG9zX3ZhbCB8PSBwb3NfeTsKLQlPVVRS RUcoUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgd2luX3Bvc192YWwpOworCU9VVFJFRyhpZ3RfZ2xv YmFsX21taW8sIFBGX1dJTl9QT1NbaW50ZWxfcGlwZV0sIHdpbl9wb3NfdmFsKTsKIAogCXdpbl9z el92YWwgPSBkc3Rfd2lkdGggPDwgMTY7CiAJd2luX3N6X3ZhbCB8PSBkc3RfaGVpZ2h0OwotCU9V VFJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0sIHdpbl9zel92YWwpOworCU9VVFJFRyhpZ3RfZ2xv YmFsX21taW8sIFBGX1dJTl9TWltpbnRlbF9waXBlXSwgd2luX3N6X3ZhbCk7CiAKIAlyZXR1cm4g MDsKIH0KIAogc3RhdGljIGludCBkaXNhYmxlX3BhbmVsX2ZpdHRlcihpbnQgaW50ZWxfcGlwZSkK IHsKLQlPVVRSRUcoUEZfQ1RSTDFbaW50ZWxfcGlwZV0sIDApOwotCU9VVFJFRyhQRl9XSU5fUE9T W2ludGVsX3BpcGVdLCAwKTsKLQlPVVRSRUcoUEZfV0lOX1NaW2ludGVsX3BpcGVdLCAwKTsKKwlP VVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBQRl9DVFJMMVtpbnRlbF9waXBlXSwgMCk7CisJT1VUUkVH KGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgMCk7CisJT1VUUkVHKGln dF9nbG9iYWxfbW1pbywgUEZfV0lOX1NaW2ludGVsX3BpcGVdLCAwKTsKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jIGIvdG9vbHMvaW50ZWxf cGVyZl9jb3VudGVycy5jCmluZGV4IDUwYzRiY2U2Li5iZTU3M2I1NSAxMDA2NDQKLS0tIGEvdG9v bHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCisrKyBiL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMu YwpAQCAtNDg2LDkgKzQ4NiwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOwog CiAJCS8qIEVuYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRlbF9yZWdpc3Rlcl93 cml0ZShPQUNPTlRST0wsCi0JCQljb3VudGVyX2Zvcm1hdCA8PCBPQUNPTlRST0xfQ09VTlRFUl9T RUxFQ1RfU0hJRlQgfAotCQkJUEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOworCQlpbnRlbF9y ZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIE9BQ09OVFJPTCwKKwkJCQkgICAgIGNvdW50 ZXJfZm9ybWF0IDw8CisJCQkJICAgICBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAor CQkJCSAgICAgUEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwogCX0KIAogCXRvdGFscyA9IGNh bGxvYyhjb3VudGVyX2NvdW50LCBzaXplb2YodWludDMyX3QpKTsKQEAgLTUyMCw3ICs1MjEsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChvYWNvbnRyb2wpIHsKIAkJLyog RGlzYWJsZSBwZXJmb3JtYW5jZSBjb3VudGVycyAqLwotCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShP QUNPTlRST0wsIDApOworCQlpbnRlbF9yZWdpc3Rlcl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIE9B Q09OVFJPTCwgMCk7CiAKIAkJLyogRm9yY2V3YWtlICovCiAJCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19maW5pKCk7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWcuYyBiL3Rvb2xzL2ludGVsX3Jl Zy5jCmluZGV4IDk0N2VjMzc4Li5kZWJkOGM5YSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcmVn LmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnLmMKQEAgLTM2NCw3ICszNjQsOCBAQCBzdGF0aWMgaW50 IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVp bnQzMl90ICp2YWxwKQogCQlpZiAocmVnLT5lbmdpbmUpCiAJCQl2YWwgPSByZWdpc3Rlcl9zcm0o Y29uZmlnLCByZWcsIE5VTEwpOwogCQllbHNlCi0JCQl2YWwgPSBJTlJFRyhyZWctPm1taW9fb2Zm c2V0ICsgcmVnLT5hZGRyKTsKKwkJCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJCQkg ICAgcmVnLT5tbWlvX29mZnNldCArIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9Q T1JUSU9fVkdBOgogCQlpb3BsKDMpOwpAQCAtMzcyLDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgcmVh ZF9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcgKnJlZywgdWludDMy X3QgKnZhbHApCiAJCWlvcGwoMCk7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9NTUlPX1ZHQToKLQkJ dmFsID0gSU5SRUc4KHJlZy0+YWRkcik7CisJCXZhbCA9IElOUkVHOChpZ3RfZ2xvYmFsX21taW8s IHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9CVU5JVDoKIAljYXNlIFBPUlRfUFVO SVQ6CkBAIC0zODksNyArMzkwLDggQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBj b25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJCQlyZWct PnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQl2YWwgPSBpbnRlbF9pb3Nm X3NiX3JlYWQocmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5hZGRyKTsKKwkJdmFsID0gaW50ZWxf aW9zZl9zYl9yZWFkKGlndF9nbG9iYWxfbW1pbywgcmVnLT5wb3J0X2Rlc2MucG9ydCwKKwkJCQkJ IHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmludGYoc3RkZXJyLCAicG9y dCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0KTsKQEAgLTQyNCw3ICs0 MjYsOCBAQCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywg c3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwpCiAJCWlmIChyZWctPmVuZ2luZSkgewogCQkJ cmVnaXN0ZXJfc3JtKGNvbmZpZywgcmVnLCAmdmFsKTsKIAkJfSBlbHNlIHsKLQkJCU9VVFJFRyhy ZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyLCB2YWwpOworCQkJT1VUUkVHKGlndF9nbG9iYWxf bW1pbywKKwkJCSAgICAgICByZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyLCB2YWwpOwogCQl9 CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9QT1JUSU9fVkdBOgpAQCAtNDQzLDcgKzQ0Niw3IEBAIHN0 YXRpYyBpbnQgd3JpdGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVn ICpyZWcsIHVpbnQzMl90IHZhbCkKIAkJCQl2YWwsIHJlZy0+cG9ydF9kZXNjLm5hbWUpOwogCQkJ cmV0dXJuIC0xOwogCQl9Ci0JCU9VVFJFRzgocmVnLT5hZGRyLCB2YWwpOworCQlPVVRSRUc4KGln dF9nbG9iYWxfbW1pbywgcmVnLT5hZGRyLCB2YWwpOwogCQlicmVhazsKIAljYXNlIFBPUlRfQlVO SVQ6CiAJY2FzZSBQT1JUX1BVTklUOgpAQCAtNDYwLDcgKzQ2Myw4IEBAIHN0YXRpYyBpbnQgd3Jp dGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQz Ml90IHZhbCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQot CQlpbnRlbF9pb3NmX3NiX3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkciwgdmFs KTsKKwkJaW50ZWxfaW9zZl9zYl93cml0ZShpZ3RfZ2xvYmFsX21taW8sIHJlZy0+cG9ydF9kZXNj LnBvcnQsCisJCQkJICAgIHJlZy0+YWRkciwgdmFsKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ ZnByaW50ZihzdGRlcnIsICJwb3J0ICVkIG5vdCBzdXBwb3J0ZWRcbiIsIHJlZy0+cG9ydF9kZXNj LnBvcnQpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYyBiL3Rvb2xzL2lu dGVsX3JlZ19jaGVja2VyLmMKaW5kZXggOTJhODlhZTAuLjFkNDBjZDgyIDEwMDY0NAotLS0gYS90 b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCisrKyBiL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMK QEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBnZW47CiBzdGF0aWMgdWludDMyX3QKIHJlYWRf YW5kX3ByaW50X3JlZyhjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCByZWcpCiB7Ci0JdWludDMy X3QgdmFsID0gSU5SRUcocmVnKTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIHJlZyk7CiAKIAlwcmludGYoIiVzICgweCV4KTogMHglMDh4XG4iLCBuYW1lLCByZWcsIHZh bCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jIGIvdG9vbHMvaW50ZWxf d2F0ZXJtYXJrLmMKaW5kZXggZTcxYzNkOWMuLjM3Mjk0N2RlIDEwMDY0NAotLS0gYS90b29scy9p bnRlbF93YXRlcm1hcmsuYworKysgYi90b29scy9pbnRlbF93YXRlcm1hcmsuYwpAQCAtMzgsNyAr MzgsNyBAQCBzdGF0aWMgdWludDMyX3QgZGV2aWQ7CiAKIHN0YXRpYyB1aW50MzJfdCByZWFkX3Jl Zyh1aW50MzJfdCBhZGRyKQogewotCXJldHVybiBJTlJFRyhkaXNwbGF5X2Jhc2UgKyBhZGRyKTsK KwlyZXR1cm4gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBkaXNwbGF5X2Jhc2UgKyBhZGRyKTsKIH0K IAogc3RydWN0IGdtY2hfd20gewpAQCAtNjUwLDggKzY1MCw4IEBAIHN0YXRpYyB2b2lkIHZsdl93 bV9kdW1wKHZvaWQpCiAKIAkJZGRsMyA9IHJlYWRfcmVnKDB4NzAwNTgpOwogCi0JCWludGVsX3B1 bml0X3JlYWQoMHgzNiwgJmRzcF9zc19wbSk7Ci0JCWludGVsX3B1bml0X3JlYWQoMHgxMzksICZk ZHJfc2V0dXAyKTsKKwkJaW50ZWxfcHVuaXRfcmVhZChpZ3RfZ2xvYmFsX21taW8sIDB4MzYsICZk c3Bfc3NfcG0pOworCQlpbnRlbF9wdW5pdF9yZWFkKGlndF9nbG9iYWxfbW1pbywgMHgxMzksICZk ZHJfc2V0dXAyKTsKIAl9IGVsc2UgewogCQlmdzcgPSByZWFkX3JlZygweDcwMDdjKTsKIAl9Ci0t IAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==