Return-Path: Delivered-To: apmail-apr-dev-archive@www.apache.org Received: (qmail 75547 invoked from network); 9 Oct 2007 16:20:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 Oct 2007 16:20:44 -0000 Received: (qmail 70346 invoked by uid 500); 9 Oct 2007 15:53:45 -0000 Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 70303 invoked by uid 500); 9 Oct 2007 15:53:45 -0000 Mailing-List: contact dev-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Id: Delivered-To: mailing list dev@apr.apache.org Received: (qmail 70289 invoked by uid 99); 9 Oct 2007 15:53:45 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Oct 2007 08:53:45 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [216.247.37.25] (HELO mail11.atl.registeredsite.com) (216.247.37.25) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Oct 2007 15:53:46 +0000 Received: from dataq.com (r37-58-dsl.sea.lightrealm.net [216.122.58.37]) by mail11.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id l99FqdVi002751 for ; Tue, 9 Oct 2007 11:52:40 -0400 Received: from [192.168.0.12] (rrcs-74-218-99-78.central.biz.rr.com [74.218.99.78]) by dataq.com (8.11.6/8.11.0) with ESMTP id l99FqcY27704 for ; Tue, 9 Oct 2007 15:52:38 GMT (envelope-from ipopescu@dataq.com) Message-ID: <470BA362.3020702@dataq.com> Date: Tue, 09 Oct 2007 11:50:58 -0400 From: Ioan Popescu User-Agent: Thunderbird 2.0.0.6 (Windows/20070728) MIME-Version: 1.0 To: APR-Dev Subject: [PATCH] libapr-1.2.11 on WinCE 5 X-Enigmail-Version: 0.95.3 Content-Type: multipart/mixed; boundary="------------060703010405040504030806" X-Virus-Checked: Checked by ClamAV on apache.org This is a multi-part message in MIME format. --------------060703010405040504030806 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit --------------060703010405040504030806 Content-Type: text/plain; name="libapr.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libapr.patch" SW5kZXg6IGRzby93aW4zMi9kc28uYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGRzby93aW4zMi9k c28uYwkocmV2aXNpb24gNTc0Mjg0KQ0KKysrIGRzby93aW4zMi9kc28uYwkod29ya2luZyBj b3B5KQ0KQEAgLTE0MSw3ICsxNDEsNyBAQA0KICAgICBhcHJfd2NoYXJfdCB3c3ltbmFtZVsy NTZdOwogICAgIGFwcl9zdGF0dXNfdCBydjsKIAotICAgIHJ2ID0gYXByX2NvbnZfdXRmOF90 b191Y3MyKHdzeW1uYW1lLCAmd3N5bWxlbiwgc3ltbmFtZSwgJnN5bWxlbik7CisgICAgcnYg PSBhcHJfY29udl91dGY4X3RvX3VjczIoc3ltbmFtZSwgJnN5bWxlbiwgd3N5bW5hbWUsICZ3 c3ltbGVuKTsKICAgICBpZiAocnYgIT0gQVBSX1NVQ0NFU1MpIHsKICAgICAgICAgcmV0dXJu IHJ2OwogICAgIH0KSW5kZXg6IGZpbGVfaW8vdW5peC90ZW1wZGlyLmMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCi0tLSBmaWxlX2lvL3VuaXgvdGVtcGRpci5jCShyZXZpc2lvbiA1NzQyODQpDQorKysg ZmlsZV9pby91bml4L3RlbXBkaXIuYwkod29ya2luZyBjb3B5KQ0KQEAgLTE3LDggKzE3LDgg QEANCiAjaW5jbHVkZSAiYXByX2ZpbGVfaW8uaCIKICNpbmNsdWRlICJhcHJfc3RyaW5ncy5o IgogI2luY2x1ZGUgImFwcl9lbnYuaCIKKyNpbmNsdWRlICJhcHJfYXJjaF9maWxlX2lvLmgi CiAKLQogLyogVHJ5IHRvIG9wZW4gYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdGVtcG9yYXJ5 IGRpciwgd3JpdGUgdG8gaXQsCiAgICBhbmQgdGhlbiBjbG9zZSBpdC4gKi8KIHN0YXRpYyBp bnQgdGVzdF90ZW1wZGlyKGNvbnN0IGNoYXIgKnRlbXBfZGlyLCBhcHJfcG9vbF90ICpwKQpA QCAtNDEsNiArNDEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcHJfcG9vbF90ICpwKQogewogICAgIGFwcl9zdGF0dXNfdCBhcHJfZXJyOwor I2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgY29uc3QgY2hhciAqdHJ5X2RpcnNbXSA9IHsgIi90 bXAiLCAiL3Vzci90bXAiLCAiL3Zhci90bXAiIH07CiAgICAgY29uc3QgY2hhciAqdHJ5X2Vu dnNbXSA9IHsgIlRNUCIsICJURU1QIiwgIlRNUERJUiIgfTsKICAgICBjb25zdCBjaGFyICpk aXI7CkBAIC0xMjYsNSArMTI3LDIyIEBADQogCiBlbmQ6CiAgICAgKnRlbXBfZGlyID0gYXBy X3BzdHJkdXAocCwgZGlyKTsKKyNlbHNlCisgICAgY2hhciAqZGlyOworICAgIGFwcl93Y2hh cl90IHdkaXJbQVBSX1BBVEhfTUFYXSA9IHswfTsKKyAgICBEV09SRCBsZW47CisKKyAgICBs ZW4gPSBHZXRUZW1wUGF0aFcoQVBSX1BBVEhfTUFYLCB3ZGlyKTsKKyAgICBpZiAoIWxlbikK KyAgICAgICAgcmV0dXJuIEFQUl9FR0VORVJBTDsKKyAgICAvKiBOZWVkIHRvIHJlbW92ZSB0 aGUgdHJhaWxpbmcgYmFjay1zbGFzaC4gKi8KKyAgICB3ZGlyW2xlbi0xXSA9IDA7CisgICAg ZGlyID0gYXByX3BjYWxsb2MocCwgQVBSX1BBVEhfTUFYKTsKKyAgICBhcHJfZXJyID0gdW5p Y29kZV90b191dGY4X3BhdGgoZGlyLCBBUFJfUEFUSF9NQVgsIHdkaXIpOworICAgIGlmIChh cHJfZXJyICE9IEFQUl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gYXByX2VycjsKKyAgICBp ZiAodGVzdF90ZW1wZGlyKGRpciwgcCkpCisgICAgICAgICp0ZW1wX2RpciA9IGRpcjsKKyNl bmRpZgogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0KSW5kZXg6IGZpbGVfaW8vd2luMzIv ZGlyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCi0tLSBmaWxlX2lvL3dpbjMyL2Rpci5jCShyZXZpc2lv biA1NzQyODQpDQorKysgZmlsZV9pby93aW4zMi9kaXIuYwkod29ya2luZyBjb3B5KQ0KQEAg LTk0LDggKzk0LDE0IEBADQogICAgIGFwcl9wb29sX2NsZWFudXBfcmVnaXN0ZXIoKCpuZXcp LT5wb29sLCAodm9pZCAqKSgqbmV3KSwgZGlyX2NsZWFudXAsCiAgICAgICAgICAgICAgICAg ICAgICAgICBhcHJfcG9vbF9jbGVhbnVwX251bGwpOwogCisgICAgLyogQ0UgZmFpbHMgYXBy X2Rpcl9yZWFkKCkgb24gYW4gKmVtcHR5KiBkaXJlY3RvcnkKKyAgICAgKiAobm8gIi4iIG5v ciAiLi4iIGZpbGVzKS4KKyAgICAgKi8KICAgICBydiA9IGFwcl9kaXJfcmVhZChOVUxMLCAw LCAqbmV3KTsKLSAgICBpZiAocnYgIT0gQVBSX1NVQ0NFU1MpIHsKKyAgICBpZiAocnYgPT0g QVBSX0ZST01fT1NfRVJST1IoRVJST1JfTk9fTU9SRV9GSUxFUykpIHsKKyAgICAgICAgcnYg PSBBUFJfU1VDQ0VTUzsKKyAgICB9CisgICAgZWxzZSBpZiAocnYgIT0gQVBSX1NVQ0NFU1Mp IHsKICAgICAgICAgZGlyX2NsZWFudXAoKm5ldyk7CiAgICAgICAgICpuZXcgPSBOVUxMOwog ICAgIH0KQEAgLTI2OCw2ICsyNzQsMTIgQEANCiAKICAgICBpZiAocnYgPT0gQVBSX1NVQ0NF U1MpCiAgICAgICAgIHJ2ID0gYXByX2Rpcl9yZWFkKE5VTEwsIDAsIGRpcik7CisgICAgLyog Q0UgZmFpbHMgYXByX2Rpcl9yZWFkKCkgb24gYW4gKmVtcHR5KiBkaXJlY3RvcnkKKyAgICAg KiAobm8gIi4iIG5vciAiLi4iIGZpbGVzKS4KKyAgICAgKi8KKyAgICBpZiAocnYgPT0gQVBS X0ZST01fT1NfRVJST1IoRVJST1JfTk9fTU9SRV9GSUxFUykpIHsKKyAgICAgICAgcnYgPSBB UFJfU1VDQ0VTUzsKKyAgICB9CiAKICAgICByZXR1cm4gcnY7CiB9CkluZGV4OiBmaWxlX2lv L3dpbjMyL2ZpbGVwYXRoLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBmaWxlX2lvL3dpbjMyL2Zp bGVwYXRoLmMJKHJldmlzaW9uIDU3NDI4NCkNCisrKyBmaWxlX2lvL3dpbjMyL2ZpbGVwYXRo LmMJKHdvcmtpbmcgY29weSkNCkBAIC0yNjUsNyArMjY1LDggQEANCiAgICAgICAgICAgICBy ZXR1cm4gQVBSX0VJTkNPTVBMRVRFOwogICAgICAgICB9CiAKLSAgICAgICAgLyogTGVmdCB3 aXRoIGEgcGF0aCBvZiAnLycsIHdoYXQgZHJpdmUgYXJlIHdlIGFza2luZyBhYm91dD8gCisj aWZuZGVmIF9XSU4zMl9XQ0UKKyAgICAgICAgLyogTGVmdCB3aXRoIGEgcGF0aCBvZiAnLycs IHdoYXQgZHJpdmUgYXJlIHdlIGFza2luZyBhYm91dD8KICAgICAgICAgICovCiAgICAgICAg ICppbnBhdGggPSB0ZXN0cGF0aCArIDE7CiAgICAgICAgIG5ld3BhdGggPSBhcHJfcGFsbG9j KHAsIDIpOwpAQCAtMjc2LDggKzI3NywzNyBAQA0KICAgICAgICAgbmV3cGF0aFsxXSA9ICdc MCc7CiAgICAgICAgICpyb290cGF0aCA9IG5ld3BhdGg7CiAgICAgICAgIHJldHVybiBBUFJf RUlOQ09NUExFVEU7CisjZWxzZQorICAgICAgICAvKiBFdmFsdWF0ZSBwYXRoIG9mICcvJyAo cm9vdCBvbiBDRSkuICovCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGFwcl9zdGF0dXNf dCBydjsKKyAgICAgICAgICAgIC8qIFZhbGlkYXRlIHRoYXQgJy8nIGRyaXZlIGV4aXN0cywg dGVzdCBtdXN0IGJlIHJvb3RlZAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXdw YXRoID0gYXByX3BhbGxvYyhwLCAyKTsKKyAgICAgICAgICAgIG5ld3BhdGhbMF0gPSBzZXBl cmF0b3JbMF07CisgICAgICAgICAgICBuZXdwYXRoWzFdID0gJ1wwJzsKKyAgICAgICAgICAg IGlmIChmbGFncyAmIEFQUl9GSUxFUEFUSF9UUlVFTkFNRSkgeworICAgICAgICAgICAgICAg IHJ2ID0gZmlsZXBhdGhfcm9vdF90ZXN0KG5ld3BhdGgsIHApOworICAgICAgICAgICAgICAg IGlmIChydikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICAgICAg fQorCisgICAgICAgICAgICAvKiBzdHJpcCBvZmYgcmVtYWluaW5nIHNsYXNoZXMgdGhhdCBk ZXNpZ25hdGUgdGhlIHJvb3QsCisgICAgICAgICAgICAgKiBnaXZlIHRoZSBjYWxsZXIgYmFj ayB0aGVpciBvcmlnaW5hbCBjaG9pY2Ugb2Ygc2xhc2gKKyAgICAgICAgICAgICAqIHVubGVz cyB0aGlzIGlzIE5BVElWRUQnZWQKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgKmlu cGF0aCA9IHRlc3RwYXRoICsgMTsKKyAgICAgICAgICAgIHdoaWxlICgqKmlucGF0aCA9PSAn LycgfHwgKippbnBhdGggPT0gJ1xcJykKKyAgICAgICAgICAgICAgICArKyppbnBhdGg7Cisg ICAgICAgICAgICBpZiAoIShmbGFncyAmIEFQUl9GSUxFUEFUSF9OQVRJVkUpKQorICAgICAg ICAgICAgICAgIG5ld3BhdGhbMF0gPSB0ZXN0cGF0aFswXTsKKyAgICAgICAgICAgICpyb290 cGF0aCA9IG5ld3BhdGg7CisgICAgICAgICAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CisgICAg ICAgIH0gd2hpbGUoMCk7CisjZW5kaWYKICAgICB9CiAKKyNpZm5kZWYgX1dJTjMyX1dDRQog ICAgIC8qIEV2YWx1YXRlIHBhdGggb2YgJ2Q6Wy9dJyAqLwogICAgIGlmIChJU19GTkNIQVIo KnRlc3RwYXRoKSAmJiB0ZXN0cGF0aFsxXSA9PSAnOicpIAogICAgIHsKQEAgLTMyMCw2ICsz NTAsNyBAQA0KICAgICAgICAgKnJvb3RwYXRoID0gbmV3cGF0aDsKICAgICAgICAgcmV0dXJu IEFQUl9TVUNDRVNTOwogICAgIH0KKyNlbmRpZgogCiAgICAgLyogTm90aGluZyBpbnRlcmVz dGluZyAqLwogICAgIHJldHVybiBBUFJfRVJFTEFUSVZFOwpJbmRleDogZmlsZV9pby93aW4z Mi9maWxlc3RhdC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gZmlsZV9pby93aW4zMi9maWxlc3Rh dC5jCShyZXZpc2lvbiA1NzQyODQpDQorKysgZmlsZV9pby93aW4zMi9maWxlc3RhdC5jCSh3 b3JraW5nIGNvcHkpDQpAQCAtMTUsMTUgKzE1LDE5IEBADQogICovCiAKICNpbmNsdWRlICJh cHIuaCIKKyNpbmNsdWRlICJhcHJfcHJpdmF0ZS5oIgorI2lmIEhBVkVfQUNMQVBJCiAjaW5j bHVkZSA8YWNsYXBpLmg+Ci0jaW5jbHVkZSAiYXByX3ByaXZhdGUuaCIKKyNlbmRpZgogI2lu Y2x1ZGUgImFwcl9hcmNoX2ZpbGVfaW8uaCIKICNpbmNsdWRlICJhcHJfZmlsZV9pby5oIgog I2luY2x1ZGUgImFwcl9nZW5lcmFsLmgiCiAjaW5jbHVkZSAiYXByX3N0cmluZ3MuaCIKICNp bmNsdWRlICJhcHJfZXJybm8uaCIKICNpbmNsdWRlICJhcHJfdGltZS5oIgorI2lmbmRlZiBf V0lOMzJfV0NFCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgogI2luY2x1ZGUgImFw cl9hcmNoX2F0aW1lLmgiCiAjaW5jbHVkZSAiYXByX2FyY2hfbWlzYy5oIgogCkBAIC01MCw2 ICs1NCw3IEBADQogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0KIAorI2lmbmRlZiBfV0lO MzJfV0NFCiBzdGF0aWMgYXByX3N0YXR1c190IGZyZWVfbG9jYWxoZWFwKHZvaWQgKmhlYXAp IHsKICAgICBMb2NhbEZyZWUoaGVhcCk7CiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwpAQCAt NjQsNiArNjksNyBAQA0KICAgICAgICAgd29ybGRpZCA9IE5VTEw7CiAgICAgfQogfQorI2Vu ZGlmCiAKIC8qIExlZnQgYml0IHNoaWZ0cyBmcm9tIFdvcmxkIHNjb3BlIHRvIGdpdmVuIHNj b3BlICovCiB0eXBlZGVmIGVudW0gcHJvdF9zY29wZV9lIHsKQEAgLTg4LDYgKzk0LDcgQEAN CiAgICAgcmV0dXJuIChwcm90IDw8IHNjb3BlKTsKIH0KIAorI2lmbmRlZiBfV0lOMzJfV0NF CiBzdGF0aWMgdm9pZCByZXNvbHZlX3Byb3QoYXByX2ZpbmZvX3QgKmZpbmZvLCBhcHJfaW50 MzJfdCB3YW50ZWQsIFBBQ0wgZGFjbCkKIHsKICAgICBUUlVTVEVFX1cgaWRlbnQgPSB7TlVM TCwgTk9fTVVMVElQTEVfVFJVU1RFRSwgVFJVU1RFRV9JU19TSUR9OwpAQCAtMTM4LDYgKzE0 NSw3IEBADQogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmCiAKIHN0YXRpYyBhcHJfc3Rh dHVzX3QgcmVzb2x2ZV9pZGVudChhcHJfZmluZm9fdCAqZmluZm8sIGNvbnN0IGNoYXIgKmZu YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9pbnQzMl90IHdh bnRlZCwgYXByX3Bvb2xfdCAqcG9vbCkKQEAgLTE1MiwxMiArMTYwLDEyIEBADQogICAgICAq IFdlIG11c3Qgb3BlbiB0aGUgZmlsZSB3aXRoIFJFQURfQ09OVFJPTCBpZiB3ZSBwbGFuIHRv IHJldHJpZXZlIHRoZQogICAgICAqIHVzZXIsIGdyb3VwIG9yIHBlcm1pc3Npb25zLgogICAg ICAqLwotICAgIAotICAgIGlmICgocnYgPSBhcHJfZmlsZV9vcGVuKCZ0aGVmaWxlLCBmbmFt ZSwgQVBSX09QRU5JTkZPCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCh3YW50ZWQg JiBBUFJfRklORk9fTElOSykgPyBBUFJfT1BFTkxJTksgOiAwKQotICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICgod2FudGVkICYgKEFQUl9GSU5GT19QUk9UIHwgQVBSX0ZJTkZPX09X TkVSKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBBUFJfUkVBRENPTlRS T0wgOiAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUFJfT1NfREVGQVVMVCwg cG9vbCkpID09IEFQUl9TVUNDRVNTKSB7CisgICAgcnYgPSBhcHJfZmlsZV9vcGVuKCZ0aGVm aWxlLCBmbmFtZSwgQVBSX09QRU5JTkZPCisgICAgICAgICAgICAgICAgICAgICAgIHwgKCh3 YW50ZWQgJiBBUFJfRklORk9fTElOSykgPyBBUFJfT1BFTkxJTksgOiAwKQorICAgICAgICAg ICAgICAgICAgICAgICB8ICgod2FudGVkICYgKEFQUl9GSU5GT19QUk9UIHwgQVBSX0ZJTkZP X09XTkVSKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQVBSX1JFQURDT05UUk9M IDogMCksCisgICAgICAgICAgICAgICAgICAgICAgIEFQUl9PU19ERUZBVUxULCBwb29sKTsK KyAgICBpZiAocnYgPT0gQVBSX1NVQ0NFU1MpIHsKICAgICAgICAgcnYgPSBhcHJfZmlsZV9p bmZvX2dldChmaW5mbywgd2FudGVkLCB0aGVmaWxlKTsKICAgICAgICAgZmluZm8tPmZpbGVo YW5kID0gTlVMTDsKICAgICAgICAgYXByX2ZpbGVfY2xvc2UodGhlZmlsZSk7CkBAIC0xNjcs OSArMTc1LDEwIEBADQogICAgICAgICAvKiBXZSBoYXZlIGEgYmFja3VwIHBsYW4uICBQZXJo YXBzIHdlIGNvdWxkbid0IGdyYWIgUkVBRF9DT05UUk9MPwogICAgICAgICAgKiBwcm9jZWVk IHdpdGhvdXQgYXNraW5nIGZvciB0aGF0IHBlcm1pc3Npb24uLi4KICAgICAgICAgICovCi0g ICAgICAgIGlmICgocnYgPSBhcHJfZmlsZV9vcGVuKCZ0aGVmaWxlLCBmbmFtZSwgQVBSX09Q RU5JTkZPCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgod2FudGVkICYgQVBS X0ZJTkZPX0xJTkspID8gQVBSX09QRU5MSU5LIDogMCksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFQUl9PU19ERUZBVUxULCBwb29sKSkgPT0gQVBSX1NVQ0NFU1MpIHsK KyAgICAgICAgcnYgPSBhcHJfZmlsZV9vcGVuKCZ0aGVmaWxlLCBmbmFtZSwgQVBSX09QRU5J TkZPCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgod2FudGVkICYgQVBSX0ZJTkZP X0xJTkspID8gQVBSX09QRU5MSU5LIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBBUFJfT1NfREVGQVVMVCwgcG9vbCk7CisgICAgICAgIGlmIChydiA9PSBBUFJfU1VDQ0VT UykgewogICAgICAgICAgICAgcnYgPSBhcHJfZmlsZV9pbmZvX2dldChmaW5mbywgd2FudGVk ICYgfihBUFJfRklORk9fUFJPVCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IEFQUl9GSU5GT19PV05FUiksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGVmaWxlKTsKQEAgLTIxMCwxMiArMjE5LDE1IEBADQogYXBy X3N0YXR1c190IG1vcmVfZmluZm8oYXByX2ZpbmZvX3QgKmZpbmZvLCBjb25zdCB2b2lkICp1 ZmlsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHJfaW50MzJfdCB3YW50ZWQsIGlu dCB3aGF0ZmlsZSkKIHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIFBTSUQgdXNlciA9IE5V TEwsIGdycCA9IE5VTEw7CiAgICAgUEFDTCBkYWNsID0gTlVMTDsKICAgICBhcHJfc3RhdHVz X3QgcnY7CisjZW5kaWYKIAogICAgIGlmIChhcHJfb3NfbGV2ZWwgPCBBUFJfV0lOX05UKQog ICAgICAgICBndWVzc19wcm90ZWN0aW9uX2JpdHMoZmluZm8pOworI2lmbmRlZiBfV0lOMzJf V0NFCiAgICAgZWxzZSBpZiAod2FudGVkICYgKEFQUl9GSU5GT19QUk9UIHwgQVBSX0ZJTkZP X09XTkVSKSkKICAgICB7CiAgICAgICAgIC8qIE9uIE5UIHRoaXMgcmVxdWVzdCBpcyBpbmNy ZWRpYmx5IGV4cGVuc2l2ZSwgYnV0IGFjY3VyYXRlLgpAQCAtMjg4LDYgKzMwMCw3IEBADQog ICAgICAgICBlbHNlIGlmICh3YW50ZWQgJiBBUFJfRklORk9fUFJPVCkKICAgICAgICAgICAg IGd1ZXNzX3Byb3RlY3Rpb25fYml0cyhmaW5mbyk7CiAgICAgfQorI2VuZGlmCiAKICAgICBy ZXR1cm4gKCh3YW50ZWQgJiB+ZmluZm8tPnZhbGlkKSA/IEFQUl9JTkNPTVBMRVRFIDogQVBS X1NVQ0NFU1MpOwogfQpAQCAtMzg5LDYgKzQwMiw3IEBADQogCiAgICAgaWYgKGZpbmZvLT5m aWxldHlwZSA9PSBBUFJfUkVHKQogICAgIHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAg ICAvKiBHbyB0aGUgZXh0cmEgbWlsZSB0byBiZSAtY2VydGFpbi0gdGhhdCB3ZSBoYXZlIGEg cmVhbCwgcmVndWxhcgogICAgICAgICAgKiBmaWxlLCBzaW5jZSB0aGUgYXR0cmlidXRlIGJp dHMgYXJlbid0IGEgY2VydGFpbiB0aGluZy4gIEV2ZW4KICAgICAgICAgICogdGhvdWdoIGZp bGxpbiBzaG91bGQgaGF2ZSBoaW50ZWQgaWYgd2UgKm11c3QqIGRvIHRoaXMsIHdlCkBAIC00 MDUsNiArNDE5LDcgQEANCiAgICAgICAgICAgICAvKiBPdGhlcndpc2UgbGVhdmUgdGhlIG9y aWdpbmFsIGNvbmNsdXNpb24gYWxvbmUgCiAgICAgICAgICAgICAgKi8KICAgICAgICAgfQor I2VuZGlmCiAgICAgfQogCiAgICAgZmluZm8tPnBvb2wgPSB0aGVmaWxlLT5wb29sOwpAQCAt NDgxLDcgKzQ5Niw3IEBADQogICAgICAgICAgICAgICogb24gYSBKdW5jdGlvbiBhbHdheXMg cmV0dXJucyB0aGUganVuY3Rpb24sIG9wZW5pbmcgdGhlIHRhcmdldAogICAgICAgICAgICAg ICogaXMgdGhlIG9ubHkgd2F5IHRvIHJlc29sdmUgdGhlIHRhcmdldCdzIGF0dHJpYnV0ZXMu CiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgoaWRlbnRfcnYgPSByZXNvbHZl X2lkZW50KGZpbmZvLCBmbmFtZSwgd2FudGVkLCBwb29sKSkgCisgICAgICAgICAgICBpZiAo KGlkZW50X3J2ID0gcmVzb2x2ZV9pZGVudChmaW5mbywgZm5hbWUsIHdhbnRlZCwgcG9vbCkp CiAgICAgICAgICAgICAgICAgICAgID09IEFQUl9TVUNDRVNTKQogICAgICAgICAgICAgICAg IHJldHVybiBpZGVudF9ydjsKICAgICAgICAgICAgIGVsc2UgaWYgKGlkZW50X3J2ID09IEFQ Ul9JTkNPTVBMRVRFKQpAQCAtNTc5LDYgKzU5NCw3IEBADQogICAgICAgICBpZiAoZmlsbGlu X2ZpbGVpbmZvKGZpbmZvLCAoV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSAqKSAmRmlsZUlu Zm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHdhbnRlZCkpCiAgICAgICAg IHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICAgICAgLyogR28gdGhlIGV4dHJhIG1p bGUgdG8gYXNzdXJlIHdlIGhhdmUgYSBmaWxlLiAgV2luTlQvMjAwMCBzZWVtcwogICAgICAg ICAgICAgICogdG8gcmVsaWFibHkgdHJhbnNsYXRlIGNoYXIgZGV2aWNlcyB0byB0aGUgcGF0 aCAnXFwuXGRldmljZScKICAgICAgICAgICAgICAqIHNvIGdvIGFzayBmb3IgdGhlIGZ1bGwg cGF0aC4KQEAgLTYzNCw2ICs2NTAsOSBAQA0KICAgICAgICAgICAgIGVsc2UgewogICAgICAg ICAgICAgICAgIGZpbmZvLT52YWxpZCAmPSB+QVBSX0ZJTkZPX1RZUEU7CiAgICAgICAgICAg ICB9CisjZWxzZQorICAgICAgICAgICAgZmluZm8tPnZhbGlkICY9IH5BUFJfRklORk9fVFlQ RTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGZpbmZvLT5wb29sID0gcG9vbDsKICAg ICB9CkBAIC02NDYsNyArNjY1LDcgQEANCiAgICAgaWYgKHdhbnRlZCAmPSB+ZmluZm8tPnZh bGlkKSB7CiAgICAgICAgIC8qIENhbGxlciB3YW50cyBtb3JlIHRoYW4gQVBSX0ZJTkZPX01J TiB8IEFQUl9GSU5GT19OQU1FICovCiAjaWYgQVBSX0hBU19VTklDT0RFX0ZTCi0gICAgICAg IGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkKKyAgICAgICAgaWYgKGFwcl9vc19s ZXZlbCA+IEFQUl9XSU5fVU5JQ09ERSkKICAgICAgICAgICAgIHJldHVybiBtb3JlX2ZpbmZv KGZpbmZvLCB3Zm5hbWUsIHdhbnRlZCwgTU9SRV9PRl9XRlNQRUMpOwogI2VuZGlmCiAgICAg ICAgIHJldHVybiBtb3JlX2ZpbmZvKGZpbmZvLCBmbmFtZSwgd2FudGVkLCBNT1JFX09GX0ZT UEVDKTsKSW5kZXg6IGZpbGVfaW8vd2luMzIvZmlsZXN5cy5jDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gZmlsZV9pby93aW4zMi9maWxlc3lzLmMJKHJldmlzaW9uIDU3NDI4NCkNCisrKyBmaWxl X2lvL3dpbjMyL2ZpbGVzeXMuYwkod29ya2luZyBjb3B5KQ0KQEAgLTY2LDYgKzY2LDcgQEAN CiBhcHJfc3RhdHVzX3QgZmlsZXBhdGhfcm9vdF90ZXN0KGNoYXIgKnBhdGgsIGFwcl9wb29s X3QgKnApCiB7CiAgICAgYXByX3N0YXR1c190IHJ2OworI2lmbmRlZiBfV0lOMzJfV0NFCiAj aWYgQVBSX0hBU19VTklDT0RFX0ZTCiAgICAgaWYgKGFwcl9vc19sZXZlbCA+PSBBUFJfV0lO X05UKQogICAgIHsKQEAgLTgxLDYgKzgyLDE5IEBADQogCiAgICAgaWYgKHJ2ID09IERSSVZF X1VOS05PV04gfHwgcnYgPT0gRFJJVkVfTk9fUk9PVF9ESVIpCiAgICAgICAgIHJldHVybiBB UFJfRUJBRFBBVEg7CisjZWxzZQorICAgIGFwcl93Y2hhcl90IHdwYXRoW0FQUl9QQVRIX01B WF07CisgICAgaWYgKHJ2ID0gdXRmOF90b191bmljb2RlX3BhdGgod3BhdGgsIHNpemVvZih3 cGF0aCkKKyAgICAgICAgLyBzaXplb2YoYXByX3djaGFyX3QpLCBwYXRoKSkKKyAgICAgICAg cmV0dXJuIHJ2OworICAgIGlmICghQ2VHZXRDYW5vbmljYWxQYXRoTmFtZVcod3BhdGgsIHdw YXRoLCBzaXplb2Yod3BhdGgpIC8gc2l6ZW9mKGFwcl93Y2hhcl90KSwgMCkpCisgICAgICAg IHJldHVybiBhcHJfZ2V0X29zX2Vycm9yKCk7CisgICAgLyogQ0UgZG9lc24ndCBoYXZlICJk cml2ZXMiOyBpbnN0ZWFkLCBpdCB1c2VzIHVuaXgtc3R5bGUgcGF0aHMgd2l0aCBhIHJvb3Qu IENoZWNrCisgICAgICogZm9yIHRoZSByb290IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjYW5v bmljYWwgcGF0aC4KKyAgICAgKi8KKyAgICBpZiAod3BhdGhbMF0gIT0gTCdcXCcgJiYgd3Bh dGhbMF0gIT0gTCcvJykKKyAgICAgICAgcmV0dXJuIEFQUl9FQkFEUEFUSDsKKyNlbmRpZgog ICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0KIApAQCAtOTIsMTAgKzEwNiwxMSBAQA0KICNp ZiBBUFJfSEFTX1VOSUNPREVfRlMKICAgICBJRl9XSU5fT1NfSVNfVU5JQ09ERQogICAgIHsK KyAgICAgICAgYXByX3djaGFyX3Qgd3BhdGhbQVBSX1BBVEhfTUFYXTsKKyAgICAgICAgYXBy X3N0YXR1c190IHJ2OworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgIGFwcl93Y2hhcl90 ICppZ25vcmVkOwogICAgICAgICBhcHJfd2NoYXJfdCB3ZHJpdmVbOF07Ci0gICAgICAgIGFw cl93Y2hhcl90IHdwYXRoW0FQUl9QQVRIX01BWF07Ci0gICAgICAgIGFwcl9zdGF0dXNfdCBy djsKICAgICAgICAgLyogPz8/OiBUaGlzIG5lZWRzIHJldmlldywgYXBwYXJlbnRseSAiXFw/ XGQ6LiIgcmV0dXJucyAiXFw/XGQ6IiAKICAgICAgICAgICogYXMgaWYgdGhhdCBpcyB1c2Vm dWwgZm9yIGFueXRoaW5nLgogICAgICAgICAgKi8KQEAgLTEwMyw2ICsxMTgsMTMgQEANCiAg ICAgICAgIHdkcml2ZVswXSA9IChhcHJfd2NoYXJfdCkodW5zaWduZWQgY2hhcilkcml2ZTsK ICAgICAgICAgaWYgKCFHZXRGdWxsUGF0aE5hbWVXKHdkcml2ZSwgc2l6ZW9mKHdwYXRoKSAv IHNpemVvZihhcHJfd2NoYXJfdCksIHdwYXRoLCAmaWdub3JlZCkpCiAgICAgICAgICAgICBy ZXR1cm4gYXByX2dldF9vc19lcnJvcigpOworI2Vsc2UKKyAgICAgICAgYXByX3djaGFyX3Qg d3BhdGgyW0FQUl9QQVRIX01BWF07CisgICAgICAgIGlmICgocnYgPSB1dGY4X3RvX3VuaWNv ZGVfcGF0aCh3cGF0aDIsIHNpemVvZih3cGF0aDIpIC8gc2l6ZW9mKGFwcl93Y2hhcl90KSwg KnJvb3RwYXRoKSkpCisgICAgICAgICAgICByZXR1cm4gcnY7CisgICAgICAgIGlmICghQ2VH ZXRDYW5vbmljYWxQYXRoTmFtZVcod3BhdGgyLCB3cGF0aCwgc2l6ZW9mKHdwYXRoMikgLyBz aXplb2YoYXByX3djaGFyX3QpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiBhcHJfZ2V0X29z X2Vycm9yKCk7CisjZW5kaWYKICAgICAgICAgaWYgKChydiA9IHVuaWNvZGVfdG9fdXRmOF9w YXRoKHBhdGgsIHNpemVvZihwYXRoKSwgd3BhdGgpKSkKICAgICAgICAgICAgIHJldHVybiBy djsKICAgICB9CkBAIC0xMzYsNyArMTU4LDkgQEANCiAjaWYgQVBSX0hBU19VTklDT0RFX0ZT CiAgICAgSUZfV0lOX09TX0lTX1VOSUNPREUKICAgICB7CisjaWZuZGVmIF9XSU4zMl9XQ0UK ICAgICAgICAgYXByX3djaGFyX3QgKmlnbm9yZWQ7CisjZW5kaWYKICAgICAgICAgYXByX3dj aGFyX3Qgd3BhdGhbQVBSX1BBVEhfTUFYXTsKICAgICAgICAgYXByX3N0YXR1c190IHJ2Owog ICAgICAgICBhcHJfd2NoYXJfdCB3cm9vdFtBUFJfUEFUSF9NQVhdOwpAQCAtMTQ2LDggKzE3 MCwxMyBAQA0KICAgICAgICAgaWYgKHJ2ID0gdXRmOF90b191bmljb2RlX3BhdGgod3Jvb3Qs IHNpemVvZih3cm9vdCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyBzaXplb2YoYXByX3djaGFyX3QpLCByb290KSkKICAgICAgICAgICAgIHJldHVy biBydjsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICBpZiAoIUdldEZ1bGxQYXRoTmFt ZVcod3Jvb3QsIHNpemVvZih3cGF0aCkgLyBzaXplb2YoYXByX3djaGFyX3QpLCB3cGF0aCwg Jmlnbm9yZWQpKQogICAgICAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKKyNl bHNlCisgICAgICAgIGlmICghQ2VHZXRDYW5vbmljYWxQYXRoTmFtZVcod3Jvb3QsIHdwYXRo LCBzaXplb2Yod3BhdGgpIC8gc2l6ZW9mKGFwcl93Y2hhcl90KSwgMCkpCisgICAgICAgICAg ICByZXR1cm4gYXByX2dldF9vc19lcnJvcigpOworI2VuZGlmCiAKICAgICAgICAgLyogQm9y cm93IHdyb290IGFzIGEgY2hhciBidWZmZXIgKHR3aWNlIGFzIGJpZyBhcyBuZWNlc3Nhcnkp IAogICAgICAgICAgKi8KQEAgLTE3Myw2ICsyMDIsOSBAQA0KIEFQUl9ERUNMQVJFKGFwcl9z dGF0dXNfdCkgYXByX2ZpbGVwYXRoX2dldChjaGFyICoqcm9vdHBhdGgsIGFwcl9pbnQzMl90 IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw cl9wb29sX3QgKnApCiB7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgIHJldHVybiBBUFJfRU5P VElNUEw7CisjZWxzZQogICAgIGNoYXIgcGF0aFtBUFJfUEFUSF9NQVhdOwogI2lmIEFQUl9I QVNfVU5JQ09ERV9GUwogICAgIElGX1dJTl9PU19JU19VTklDT0RFCkBAIC0yMDAsMTIgKzIz MiwxNiBAQA0KICAgICB9CiAgICAgKnJvb3RwYXRoID0gYXByX3BzdHJkdXAocCwgcGF0aCk7 CiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOworI2VuZGlmCiB9CiAKIAogQVBSX0RFQ0xBUkUo YXByX3N0YXR1c190KSBhcHJfZmlsZXBhdGhfc2V0KGNvbnN0IGNoYXIgKnJvb3RwYXRoLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9wb29sX3Qg KnApCiB7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgIHJldHVybiBBUFJfRU5PVElNUEw7Cisj ZWxzZQogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwogICAgIElGX1dJTl9PU19JU19VTklDT0RF CiAgICAgewpAQCAtMjI2LDQgKzI2Miw1IEBADQogICAgIH0KICNlbmRpZgogICAgIHJldHVy biBBUFJfU1VDQ0VTUzsKKyNlbmRpZgogfQpJbmRleDogZmlsZV9pby93aW4zMi9mbG9jay5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gZmlsZV9pby93aW4zMi9mbG9jay5jCShyZXZpc2lvbiA1 NzQyODQpDQorKysgZmlsZV9pby93aW4zMi9mbG9jay5jCSh3b3JraW5nIGNvcHkpDQpAQCAt MTgsMjMgKzE4LDIwIEBADQogCiBBUFJfREVDTEFSRShhcHJfc3RhdHVzX3QpIGFwcl9maWxl X2xvY2soYXByX2ZpbGVfdCAqdGhlZmlsZSwgaW50IHR5cGUpCiB7Ci0jaWZkZWYgX1dJTjMy X1dDRQotICAgIC8qIFRoZSBGaWxlIGxvY2tpbmcgaXMgdW5zdXBvcnRlZCBvbiBXQ0UgKi8K LSAgICByZXR1cm4gQVBSX0VOT1RJTVBMOwotI2Vsc2UKICAgICBjb25zdCBEV09SRCBsZW4g PSAweGZmZmZmZmZmOwogICAgIERXT1JEIGZsYWdzOyAKIAogICAgIGZsYWdzID0gKCh0eXBl ICYgQVBSX0ZMT0NLX05PTkJMT0NLKSA/IExPQ0tGSUxFX0ZBSUxfSU1NRURJQVRFTFkgOiAw KQogICAgICAgICAgICsgKCgodHlwZSAmIEFQUl9GTE9DS19UWVBFTUFTSykgPT0gQVBSX0ZM T0NLX1NIQVJFRCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IDAgOiBMT0NLRklMRV9FWENMVVNJVkVfTE9DSyk7Ci0gICAgaWYgKGFwcl9vc19sZXZlbCA+ PSBBUFJfV0lOX05UKSB7CisgICAgaWYgKGFwcl9vc19sZXZlbCA+PSBBUFJfV0lOX0NFXzUp IHsKICAgICAgICAgLyogU3ludGF4IGlzIGNvcnJlY3QsIGxlbiBpcyBwYXNzZWQgZm9yIExl bmd0aExvdyBhbmQgTGVuZ3RoSGlnaCovCiAgICAgICAgIE9WRVJMQVBQRUQgb2Zmc2V0Owog ICAgICAgICBtZW1zZXQgKCZvZmZzZXQsIDAsIHNpemVvZihvZmZzZXQpKTsKICAgICAgICAg aWYgKCFMb2NrRmlsZUV4KHRoZWZpbGUtPmZpbGVoYW5kLCBmbGFncywgMCwgbGVuLCBsZW4s ICZvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKICAg ICB9CisjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICBlbHNlIHsKICAgICAgICAgLyogT24gV2lu OXgsIExvY2tGaWxlKCkgbmV2ZXIgYmxvY2tzLiAgSGFjayBpbiBhIGNydWZ0eSBwb2xsLgog ICAgICAgICAgKgpAQCAtNTcsMzAgKzU0LDM2IEBADQogICAgICAgICAgICAgcmV0dXJuIEFQ Ul9GUk9NX09TX0VSUk9SKGVycik7CiAgICAgICAgIH0KICAgICB9CisjZWxzZQorICAgIGVs c2UgeworICAgICAgICByZXR1cm4gQVBSX0VOT1RJTVBMOworICAgIH0KKyNlbmRpZgogCiAg ICAgcmV0dXJuIEFQUl9TVUNDRVNTOwotI2VuZGlmIC8qICFkZWZpbmVkKF9XSU4zMl9XQ0Up ICovCiB9CiAKIEFQUl9ERUNMQVJFKGFwcl9zdGF0dXNfdCkgYXByX2ZpbGVfdW5sb2NrKGFw cl9maWxlX3QgKnRoZWZpbGUpCiB7Ci0jaWZkZWYgX1dJTjMyX1dDRQotICAgIHJldHVybiBB UFJfRU5PVElNUEw7Ci0jZWxzZQogICAgIERXT1JEIGxlbiA9IDB4ZmZmZmZmZmY7CiAKLSAg ICBpZiAoYXByX29zX2xldmVsID49IEFQUl9XSU5fTlQpIHsKKyAgICBpZiAoYXByX29zX2xl dmVsID49IEFQUl9XSU5fQ0VfNSkgewogICAgICAgICAvKiBTeW50YXggaXMgY29ycmVjdCwg bGVuIGlzIHBhc3NlZCBmb3IgTGVuZ3RoTG93IGFuZCBMZW5ndGhIaWdoKi8KICAgICAgICAg T1ZFUkxBUFBFRCBvZmZzZXQ7CiAgICAgICAgIG1lbXNldCAoJm9mZnNldCwgMCwgc2l6ZW9m KG9mZnNldCkpOwogICAgICAgICBpZiAoIVVubG9ja0ZpbGVFeCh0aGVmaWxlLT5maWxlaGFu ZCwgMCwgbGVuLCBsZW4sICZvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGFwcl9nZXRf b3NfZXJyb3IoKTsKICAgICB9CisjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICBlbHNlIHsKICAg ICAgICAgaWYgKCFVbmxvY2tGaWxlKHRoZWZpbGUtPmZpbGVoYW5kLCAwLCAwLCBsZW4sIDAp KQogICAgICAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKICAgICB9CisjZWxz ZQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQVBSX0VOT1RJTVBMOworICAgIH0KKyNl bmRpZgogCiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwotI2VuZGlmIC8qICFkZWZpbmVkKF9X SU4zMl9XQ0UpICovCiB9CkluZGV4OiBmaWxlX2lvL3dpbjMyL29wZW4uYw0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIGZpbGVfaW8vd2luMzIvb3Blbi5jCShyZXZpc2lvbiA1NzQyODQpDQorKysg ZmlsZV9pby93aW4zMi9vcGVuLmMJKHdvcmtpbmcgY29weSkNCkBAIC0yMjYsMTEgKzIyNiwx MSBAQA0KICAgICBhcHJfc3RhdHVzX3QgZmx1c2hfcnYgPSBBUFJfU1VDQ0VTUzsKIAogICAg IGlmIChmaWxlLT5maWxlaGFuZCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotCiAgICAg ICAgIC8qIEluIG9yZGVyIHRvIGF2b2lkIGxhdGVyIHNlZ2ZhdWx0cyB3aXRoIGhhbmRsZSAn cmV1c2UnLAogICAgICAgICAgKiB3ZSBtdXN0IHByb3RlY3QgYWdhaW5zdCB0aGUgY2FzZSB0 aGF0IGEgZHVwMidlZCBoYW5kbGUKICAgICAgICAgICogaXMgYmVpbmcgY2xvc2VkLCBhbmQg aW52YWxpZGF0ZSB0aGUgY29ycmVzcG9uZGluZyBTdGRIYW5kbGUgCiAgICAgICAgICAqLwor I2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgIGlmIChmaWxlLT5maWxlaGFuZCA9PSBHZXRT dGRIYW5kbGUoU1REX0VSUk9SX0hBTkRMRSkpIHsKICAgICAgICAgICAgIFNldFN0ZEhhbmRs ZShTVERfRVJST1JfSEFORExFLCBJTlZBTElEX0hBTkRMRV9WQUxVRSk7CiAgICAgICAgIH0K QEAgLTI0MCwxMiArMjQwLDIwIEBADQogICAgICAgICBpZiAoZmlsZS0+ZmlsZWhhbmQgPT0g R2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpKSB7CiAgICAgICAgICAgICBTZXRTdGRI YW5kbGUoU1REX0lOUFVUX0hBTkRMRSwgSU5WQUxJRF9IQU5ETEVfVkFMVUUpOwogICAgICAg ICB9Ci0KKyNlbmRpZgogICAgICAgICBpZiAoZmlsZS0+YnVmZmVyZWQpIHsKICAgICAgICAg ICAgIC8qIFhYWDogZmx1c2ggaGVyZSBpcyBub3QgbXV0ZXggcHJvdGVjdGVkICovCiAgICAg ICAgICAgICBmbHVzaF9ydiA9IGFwcl9maWxlX2ZsdXNoKChhcHJfZmlsZV90ICopdGhlZmls ZSk7CiAgICAgICAgIH0KKyNpZmRlZiBfV0lOMzJfV0NFCisgICAgICAgIGlmIChmaWxlLT5m aWxlaGFuZCAhPSBTVERJTl9GSUxFTk8KKyAgICAgICAgICAgICYmIGZpbGUtPmZpbGVoYW5k ICE9IFNURE9VVF9GSUxFTk8KKyAgICAgICAgICAgICYmIGZpbGUtPmZpbGVoYW5kICE9IFNU REVSUl9GSUxFTk8pIHsKKyAgICAgICAgICAgIENsb3NlSGFuZGxlKGZpbGUtPmZpbGVoYW5k KTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgQ2xvc2VIYW5kbGUoZmlsZS0+ZmlsZWhh bmQpOworI2VuZGlmCiAgICAgICAgIGZpbGUtPmZpbGVoYW5kID0gSU5WQUxJRF9IQU5ETEVf VkFMVUU7CiAgICAgfQogICAgIGlmIChmaWxlLT5wT3ZlcmxhcHBlZCAmJiBmaWxlLT5wT3Zl cmxhcHBlZC0+aEV2ZW50KSB7CkBAIC0yNzIsOCArMjgwLDEwIEBADQogICAgIGlmIChmbGFn ICYgQVBSX1dSSVRFKSB7CiAgICAgICAgIG9mbGFncyB8PSBHRU5FUklDX1dSSVRFOwogICAg IH0KLSAgICBpZiAoZmxhZyAmIEFQUl9XUklURUFUVFJTKSB7Ci0gICAgICAgIG9mbGFncyB8 PSBGSUxFX1dSSVRFX0FUVFJJQlVURVM7CisgICAgaWYgKGFwcl9vc19sZXZlbCA8IEFQUl9X SU5fQ0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkgeworICAgICAgICBpZiAo ZmxhZyAmIEFQUl9XUklURUFUVFJTKSB7CisgICAgICAgICAgICBvZmxhZ3MgfD0gRklMRV9X UklURV9BVFRSSUJVVEVTOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGFwcl9vc19s ZXZlbCA+PSBBUFJfV0lOX05UKSAKQEAgLTMwMiwxMiArMzEyLDE0IEBADQogICAgICAgICBy ZXR1cm4gQVBSX0VBQ0NFUzsKICAgICB9ICAgCiAgICAgCi0gICAgaWYgKGZsYWcgJiBBUFJf REVMT05DTE9TRSkgewotICAgICAgICBhdHRyaWJ1dGVzIHw9IEZJTEVfRkxBR19ERUxFVEVf T05fQ0xPU0U7Ci0gICAgfQorICAgIGlmIChhcHJfb3NfbGV2ZWwgPCBBUFJfV0lOX0NFXzMg fHwgYXByX29zX2xldmVsID49IEFQUl9XSU5fTlQpIHsKKyAgICAgICAgaWYgKGZsYWcgJiBB UFJfREVMT05DTE9TRSkgeworICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBGSUxFX0ZMQUdf REVMRVRFX09OX0NMT1NFOworICAgICAgICB9CiAKLSAgICBpZiAoZmxhZyAmIEFQUl9PUEVO TElOSykgewotICAgICAgIGF0dHJpYnV0ZXMgfD0gRklMRV9GTEFHX09QRU5fUkVQQVJTRV9Q T0lOVDsKKyAgICAgICAgaWYgKGZsYWcgJiBBUFJfT1BFTkxJTkspIHsKKyAgICAgICAgICAg YXR0cmlidXRlcyB8PSBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5UOworICAgICAgICB9 CiAgICAgfQogCiAgICAgLyogV2l0aG91dCBSRUFEIG9yIFdSSVRFLCB3ZSBmYWlsIHVubGVz cyBhcHIgY2FsbGVkIGFwcl9maWxlX29wZW4KQEAgLTMyNiwxNSArMzM4LDE5IEBADQogICAg ICAgICBlbHNlIHsKICAgICAgICAgICAgIHJldHVybiBBUFJfRUFDQ0VTOwogICAgICAgICB9 Ci0gICAgICAgIGlmIChmbGFnICYgQVBSX1JFQURDT05UUk9MKQotICAgICAgICAgICAgb2Zs YWdzIHw9IFJFQURfQ09OVFJPTDsKKyAgICAgICAgaWYgKGFwcl9vc19sZXZlbCA8IEFQUl9X SU5fQ0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkgeworICAgICAgICAgICAg aWYgKGZsYWcgJiBBUFJfUkVBRENPTlRST0wpCisgICAgICAgICAgICAgICAgb2ZsYWdzIHw9 IFJFQURfQ09OVFJPTDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChmbGFnICYgQVBS X1hUSFJFQUQpIHsKLSAgICAgICAgLyogVGhpcyB3aW4zMiBzcGVjaWZpYyBmZWF0dXJlIGlz IHJlcXVpcmVkIAotICAgICAgICAgKiB0byBhbGxvdyBtdWx0aXBsZSB0aHJlYWRzIHRvIHdv cmsgd2l0aCB0aGUgZmlsZS4KLSAgICAgICAgICovCi0gICAgICAgIGF0dHJpYnV0ZXMgfD0g RklMRV9GTEFHX09WRVJMQVBQRUQ7CisgICAgaWYgKGFwcl9vc19sZXZlbCA8IEFQUl9XSU5f Q0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkgeworICAgICAgICBpZiAoZmxh ZyAmIEFQUl9YVEhSRUFEKSB7CisgICAgICAgICAgICAvKiBUaGlzIHdpbjMyIHNwZWNpZmlj IGZlYXR1cmUgaXMgcmVxdWlyZWQgCisgICAgICAgICAgICAgKiB0byBhbGxvdyBtdWx0aXBs ZSB0aHJlYWRzIHRvIHdvcmsgd2l0aCB0aGUgZmlsZS4KKyAgICAgICAgICAgICAqLworICAg ICAgICAgICAgYXR0cmlidXRlcyB8PSBGSUxFX0ZMQUdfT1ZFUkxBUFBFRDsKKyAgICAgICAg fQogICAgIH0KIAogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwpAQCAtNDcwLDEwICs0ODYsMjgg QEANCiAjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICAgICAgaWYgKE1vdmVGaWxlRXhXKHdmcm9t cGF0aCwgd3RvcGF0aCwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyB8CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PVkVGSUxFX0NPUFlfQUxMT1dF RCkpCisgICAgICAgICAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CiAjZWxzZQorICAgICAgICAv KiBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgTW92ZUZpbGVFeCwgc28gd2UnbGwgdXNl CisgICAgICAgICAqIHRoZSBvbGQgTW92ZUZpbGUgZnVuY3Rpb24uICBIb3dldmVyLCBNb3Zl RmlsZSByZXF1aXJlcyB0aGF0CisgICAgICAgICAqIHRoZSBuZXcgZmlsZSBub3QgYWxyZWFk eSBleGlzdC4uLnNvIHdlIGhhdmUgdG8gZGVsZXRlIHRoYXQKKyAgICAgICAgICogZmlsZSBp ZiBpdCBkb2VzLiAgUGVyaGFwcyB3ZSBzaG91bGQgYmFjayB1cCB0aGUgdG8tYmUtZGVsZXRl ZAorICAgICAgICAgKiBmaWxlIGluIGNhc2Ugc29tZXRoaW5nIGhhcHBlbnM/CisgICAgICAg ICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBIQU5ETEUgaGFuZGxlID0gSU5WQUxJ RF9IQU5ETEVfVkFMVUU7CisKKyAgICAgICAgICAgIGlmICgoaGFuZGxlID0gQ3JlYXRlRmls ZVcod3RvcGF0aCwgR0VORVJJQ19XUklURSwgMCwgMCwgIAorICAgICAgICAgICAgICAgIE9Q RU5fRVhJU1RJTkcsIDAsIDAgKSkgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhhbmRsZSk7CisgICAgICAg ICAgICAgICAgaWYgKCFEZWxldGVGaWxlVyh3dG9wYXRoKSkKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fSB3aGlsZSAoMCk7CiAgICAgICAgIGlmIChNb3ZlRmlsZVcod2Zyb21wYXRoLCB3dG9wYXRo KSkKKyAgICAgICAgICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKICNlbmRpZgotICAgICAgICAg ICAgcmV0dXJuIEFQUl9TVUNDRVNTOwogI2Vsc2UKICAgICAgICAgaWYgKE1vdmVGaWxlRXgo ZnJvbXBhdGgsIHRvcGF0aCwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyB8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PVkVGSUxFX0NPUFlfQUxMT1dF RCkpCkBAIC01NjcsMTMgKzYwMSwxNCBAQA0KIAogQVBSX0RFQ0xBUkUoYXByX3N0YXR1c190 KSBhcHJfZmlsZV9vcGVuX3N0ZGVycihhcHJfZmlsZV90ICoqdGhlZmlsZSwgYXByX3Bvb2xf dCAqcG9vbCkKIHsKLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgcmV0dXJuIEFQUl9FTk9USU1Q TDsKLSNlbHNlCiAgICAgYXByX29zX2ZpbGVfdCBmaWxlX2hhbmRsZTsKIAogICAgIGFwcl9z ZXRfb3NfZXJyb3IoQVBSX1NVQ0NFU1MpOworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgZmls ZV9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX0VSUk9SX0hBTkRMRSk7CisjZWxzZQorICAg IGZpbGVfaGFuZGxlID0gU1RERVJSX0ZJTEVOTzsKKyNlbmRpZgogICAgIGlmICghZmlsZV9o YW5kbGUgfHwgKGZpbGVfaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSkgewogICAg ICAgICBhcHJfc3RhdHVzX3QgcnYgPSBhcHJfZ2V0X29zX2Vycm9yKCk7CiAgICAgICAgIGlm IChydiA9PSBBUFJfU1VDQ0VTUykgewpAQCAtNTgzLDE4ICs2MTgsMTggQEANCiAgICAgfQog CiAgICAgcmV0dXJuIGFwcl9vc19maWxlX3B1dCh0aGVmaWxlLCAmZmlsZV9oYW5kbGUsIDAs IHBvb2wpOwotI2VuZGlmCiB9CiAKIEFQUl9ERUNMQVJFKGFwcl9zdGF0dXNfdCkgYXByX2Zp bGVfb3Blbl9zdGRvdXQoYXByX2ZpbGVfdCAqKnRoZWZpbGUsIGFwcl9wb29sX3QgKnBvb2wp CiB7Ci0jaWZkZWYgX1dJTjMyX1dDRQotICAgIHJldHVybiBBUFJfRU5PVElNUEw7Ci0jZWxz ZQogICAgIGFwcl9vc19maWxlX3QgZmlsZV9oYW5kbGU7CiAKICAgICBhcHJfc2V0X29zX2Vy cm9yKEFQUl9TVUNDRVNTKTsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIGZpbGVfaGFuZGxl ID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKTsKKyNlbHNlCisgICAgZmlsZV9o YW5kbGUgPSBTVERPVVRfRklMRU5POworI2VuZGlmCiAgICAgaWYgKCFmaWxlX2hhbmRsZSB8 fCAoZmlsZV9oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKSB7CiAgICAgICAgIGFw cl9zdGF0dXNfdCBydiA9IGFwcl9nZXRfb3NfZXJyb3IoKTsKICAgICAgICAgaWYgKHJ2ID09 IEFQUl9TVUNDRVNTKSB7CkBAIC02MDQsMTggKzYzOSwxOCBAQA0KICAgICB9CiAKICAgICBy ZXR1cm4gYXByX29zX2ZpbGVfcHV0KHRoZWZpbGUsICZmaWxlX2hhbmRsZSwgMCwgcG9vbCk7 Ci0jZW5kaWYKIH0KIAogQVBSX0RFQ0xBUkUoYXByX3N0YXR1c190KSBhcHJfZmlsZV9vcGVu X3N0ZGluKGFwcl9maWxlX3QgKip0aGVmaWxlLCBhcHJfcG9vbF90ICpwb29sKQogewotI2lm ZGVmIF9XSU4zMl9XQ0UKLSAgICByZXR1cm4gQVBSX0VOT1RJTVBMOwotI2Vsc2UKICAgICBh cHJfb3NfZmlsZV90IGZpbGVfaGFuZGxlOwogCiAgICAgYXByX3NldF9vc19lcnJvcihBUFJf U1VDQ0VTUyk7CisjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICBmaWxlX2hhbmRsZSA9IEdldFN0 ZEhhbmRsZShTVERfSU5QVVRfSEFORExFKTsKKyNlbHNlCisgICAgZmlsZV9oYW5kbGUgPSBT VERJTl9GSUxFTk87CisjZW5kaWYKICAgICBpZiAoIWZpbGVfaGFuZGxlIHx8IChmaWxlX2hh bmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkpIHsKICAgICAgICAgYXByX3N0YXR1c190 IHJ2ID0gYXByX2dldF9vc19lcnJvcigpOwogICAgICAgICBpZiAocnYgPT0gQVBSX1NVQ0NF U1MpIHsKQEAgLTYyNSw3ICs2NjAsNiBAQA0KICAgICB9CiAKICAgICByZXR1cm4gYXByX29z X2ZpbGVfcHV0KHRoZWZpbGUsICZmaWxlX2hhbmRsZSwgMCwgcG9vbCk7Ci0jZW5kaWYKIH0K IAogQVBSX1BPT0xfSU1QTEVNRU5UX0FDQ0VTU09SKGZpbGUpOwpJbmRleDogZmlsZV9pby93 aW4zMi9yZWFkd3JpdGUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGZpbGVfaW8vd2luMzIvcmVh ZHdyaXRlLmMJKHJldmlzaW9uIDU3NDI4NCkNCisrKyBmaWxlX2lvL3dpbjMyL3JlYWR3cml0 ZS5jCSh3b3JraW5nIGNvcHkpDQpAQCAtNDAsNiArNDAsNyBAQA0KICAgICAgICAgICogSWYg ZGF0YSBpcyBhdmFpbGFibGUsIGdvIGFoZWFkIGFuZCByZWFkIGl0LgogICAgICAgICAgKi8K ICAgICAgICAgaWYgKGZpbGUtPnBpcGUpIHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAg ICAgICAgRFdPUkQgYnl0ZXM7CiAgICAgICAgICAgICBpZiAoIVBlZWtOYW1lZFBpcGUoZmls ZS0+ZmlsZWhhbmQsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpIHsKICAgICAgICAg ICAgICAgICBydiA9IGFwcl9nZXRfb3NfZXJyb3IoKTsKQEAgLTU4LDYgKzU5LDcgQEANCiAg ICAgICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVzOwogICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAg ICAgICAgLyogVG9EbzogSGFuZGxlIHplcm8gdGltZW91dCBub24tYmxvY2tpbmcgZmlsZSBp L28gCkBAIC03MiwxMyArNzQsMjAgQEANCiAgICAgICAgIGZpbGUtPnBPdmVybGFwcGVkLT5P ZmZzZXRIaWdoID0gKERXT1JEKShmaWxlLT5maWxlUHRyID4+IDMyKTsKICAgICB9CiAKKyNp Zm5kZWYgX1dJTjMyX1dDRQogICAgIHJ2ID0gUmVhZEZpbGUoZmlsZS0+ZmlsZWhhbmQsIGJ1 ZiwgbGVuLCAKICAgICAgICAgICAgICAgICAgICZieXRlc3JlYWQsIGZpbGUtPnBPdmVybGFw cGVkKTsKKyNlbHNlCisgICAgcnYgPSBSZWFkRmlsZShmaWxlLT5maWxlaGFuZCwgYnVmLCBs ZW4sIAorICAgICAgICAgICAgICAgICAgJmJ5dGVzcmVhZCwgTlVMTCk7CisjZW5kaWYKICAg ICAqbmJ5dGVzID0gYnl0ZXNyZWFkOwogCiAgICAgaWYgKCFydikgewogICAgICAgICBydiA9 IGFwcl9nZXRfb3NfZXJyb3IoKTsKLSAgICAgICAgaWYgKHJ2ID09IEFQUl9GUk9NX09TX0VS Uk9SKEVSUk9SX0lPX1BFTkRJTkcpKSB7CisgICAgICAgIGlmICgwKSB7fQorI2lmbmRlZiBf V0lOMzJfV0NFCisgICAgICAgIGVsc2UgaWYgKHJ2ID09IEFQUl9GUk9NX09TX0VSUk9SKEVS Uk9SX0lPX1BFTkRJTkcpKSB7CiAgICAgICAgICAgICAvKiBXYWl0IGZvciB0aGUgcGVuZGlu ZyBpL28gKi8KICAgICAgICAgICAgIGlmIChmaWxlLT50aW1lb3V0ID4gMCkgewogICAgICAg ICAgICAgICAgIC8qIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLi4uICovCkBAIC0xMTQsNiAr MTIzLDcgQEANCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9 CisjZW5kaWYKICAgICAgICAgZWxzZSBpZiAocnYgPT0gQVBSX0ZST01fT1NfRVJST1IoRVJS T1JfQlJPS0VOX1BJUEUpKSB7CiAgICAgICAgICAgICAvKiBBc3N1bWUgRVJST1JfQlJPS0VO X1BJUEUgc2lnbmFscyBhbiBFT0YgcmVhZGluZyBmcm9tIGEgcGlwZSAqLwogICAgICAgICAg ICAgcnYgPSBBUFJfRU9GOwpAQCAtMTQ0LDYgKzE1NCwxMCBAQA0KICAgICAgICAgcmV0dXJu IEFQUl9TVUNDRVNTOwogICAgIH0KIAorICAgIC8qIENFIGRvZXNuJ3Qgc3VwcG9ydCBvdmVy bGFwcGVkIEkvTywgYnV0ICJzdXBwb3J0cyIgdGhyZWFkLXNhZmUKKyAgICAgKiBmaWxlIGFj Y2VzcyBuYXRpdmVseS4KKyAgICAgKi8KKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIC8qIElm IHRoZSBmaWxlIGlzIG9wZW4gZm9yIHh0aHJlYWQgc3VwcG9ydCwgYWxsb2NhdGUgYW5kCiAg ICAgICogaW5pdGlhbGl6ZSB0aGUgb3ZlcmxhcHBlZCBhbmQgaW8gY29tcGxldGlvbiBldmVu dCAoaEV2ZW50KS4gCiAgICAgICogVGhyZWFkcyBzaG91bGQgTk9UIHNoYXJlIGFuIGFwcl9m aWxlX3Qgb3IgaXRzIGhFdmVudC4KQEAgLTE1Nyw2ICsxNzEsNyBAQA0KICAgICAgICAgICAg IHJldHVybiBydjsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogCiAgICAgLyogSGFuZGxl IHRoZSB1bmdldGNoYXIgaWYgdGhlcmUgaXMgb25lICovCiAgICAgaWYgKHRoZWZpbGUtPnVu Z2V0Y2hhciAhPSAtMSkgewpAQCAtMjM1LDYgKzI1MCwxMCBAQA0KICAgICBhcHJfc3RhdHVz X3QgcnY7CiAgICAgRFdPUkQgYndyb3RlOwogCisgICAgLyogQ0UgZG9lc24ndCBzdXBwb3J0 IG92ZXJsYXBwZWQgSS9PLCBidXQgInN1cHBvcnRzIiB0aHJlYWQtc2FmZQorICAgICAqIGZp bGUgYWNjZXNzIG5hdGl2ZWx5LgorICAgICAqLworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAg LyogSWYgdGhlIGZpbGUgaXMgb3BlbiBmb3IgeHRocmVhZCBzdXBwb3J0LCBhbGxvY2F0ZSBh bmQKICAgICAgKiBpbml0aWFsaXplIHRoZSBvdmVybGFwcGVkIGFuZCBpbyBjb21wbGV0aW9u IGV2ZW50IChoRXZlbnQpLiAKICAgICAgKiBUaHJlYWRzIHNob3VsZCBOT1Qgc2hhcmUgYW4g YXByX2ZpbGVfdCBvciBpdHMgaEV2ZW50LgpAQCAtMjQ4LDYgKzI2Nyw3IEBADQogICAgICAg ICAgICAgcmV0dXJuIHJ2OwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAo dGhlZmlsZS0+YnVmZmVyZWQpIHsKICAgICAgICAgY2hhciAqcG9zID0gKGNoYXIgKilidWY7 CkBAIC0zMDcsMTYgKzMyNywzNyBAQA0KICAgICAgICAgICAgICAgICB0aGVmaWxlLT5wT3Zl cmxhcHBlZC0+T2Zmc2V0ICAgICA9IChEV09SRCl0aGVmaWxlLT5maWxlUHRyOwogICAgICAg ICAgICAgICAgIHRoZWZpbGUtPnBPdmVybGFwcGVkLT5PZmZzZXRIaWdoID0gKERXT1JEKSh0 aGVmaWxlLT5maWxlUHRyID4+IDMyKTsKICAgICAgICAgICAgIH0KKyNpZm5kZWYgX1dJTjMy X1dDRQogICAgICAgICAgICAgcnYgPSBXcml0ZUZpbGUodGhlZmlsZS0+ZmlsZWhhbmQsIGJ1 ZiwgKERXT1JEKSpuYnl0ZXMsICZid3JvdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGVmaWxlLT5wT3ZlcmxhcHBlZCk7CisjZWxzZQorICAgICAgICAgICAgcnYgPSBXcml0 ZUZpbGUodGhlZmlsZS0+ZmlsZWhhbmQsIGJ1ZiwgKERXT1JEKSpuYnl0ZXMsICZid3JvdGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIC8qIFdy aXRlRmlsZSgpIGZhaWxzIHVwb24gd3JpdGluZyB6ZXJvIGFtb3VudCB3aGVuICJhcHBlbmRp bmciIHRvCisgICAgICAgICAgICAgKiBhIGZpbGUuIFN1Y2NlZWRzIGluIHdyaXRpbmcgemVy byBhbW91bnQgaW4gYWxsIG90aGVyIGNhc2VzLgorICAgICAgICAgICAgICogTW9zdCBsaWtl bHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIFNldEZpbGVQb2ludGVyKCkgYmVpbmcKKyAg ICAgICAgICAgICAqIGNhbGxlZC4gVHJpZWQgdXNpbmcgU2V0RW5kT2ZGaWxlKCksIGJ1dCBk aWRuJ3QgaGVscC4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBKdXN0IHByZXRl bmQgaXQgc3VjY2VlZGVkIGluLCBlc3NlbnRpYWxseSwgbm90IGRvaW5nIGFueXRoaW5nLgor ICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAocnYgPT0gMCAmJiAqbmJ5dGVzID09 IDApIHsKKyAgICAgICAgICAgICAgICBydiA9IDE7CisgICAgICAgICAgICAgICAgYndyb3Rl ID0gMDsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgaWYgKHRoZWZpbGUt PmFwcGVuZCkgewogICAgICAgICAgICAgICAgIGFwcl9maWxlX3VubG9jayh0aGVmaWxlKTsK ICAgICAgICAgICAgICAgICBhcHJfdGhyZWFkX211dGV4X3VubG9jayh0aGVmaWxlLT5tdXRl eCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisjaWZuZGVm IF9XSU4zMl9XQ0UKICAgICAgICAgICAgIHJ2ID0gV3JpdGVGaWxlKHRoZWZpbGUtPmZpbGVo YW5kLCBidWYsIChEV09SRCkqbmJ5dGVzLCAmYndyb3RlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlZmlsZS0+cE92ZXJsYXBwZWQpOworI2Vsc2UKKyAgICAgICAgICAgIHJ2 ID0gV3JpdGVGaWxlKHRoZWZpbGUtPmZpbGVoYW5kLCBidWYsIChEV09SRCkqbmJ5dGVzLCAm Yndyb3RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisjZW5kaWYKICAg ICAgICAgfQogICAgICAgICBpZiAocnYpIHsKICAgICAgICAgICAgICpuYnl0ZXMgPSBid3Jv dGU7CkBAIC0zMjUsNiArMzY2LDcgQEANCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg KCpuYnl0ZXMpID0gMDsKICAgICAgICAgICAgIHJ2ID0gYXByX2dldF9vc19lcnJvcigpOwor I2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgICAgICBpZiAocnYgPT0gQVBSX0ZST01fT1Nf RVJST1IoRVJST1JfSU9fUEVORElORykpIHsKICAKICAgICAgICAgICAgICAgICBEV09SRCB0 aW1lb3V0X21zOwpAQCAtMzYxLDYgKzQwMyw3IEBADQogICAgICAgICAgICAgICAgICAgICAg ICAgQ2FuY2VsSW8odGhlZmlsZS0+ZmlsZWhhbmQpOwogICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGlmIChydiA9PSBBUFJf U1VDQ0VTUyAmJiB0aGVmaWxlLT5wT3ZlcmxhcHBlZCAmJiAhdGhlZmlsZS0+cGlwZSkgewog ICAgICAgICAgICAgdGhlZmlsZS0+ZmlsZVB0ciArPSAqbmJ5dGVzOwpAQCAtNDkyLDYgKzUz NSwxMCBAQA0KICAgICAgICAgICAgICAgICBieXRlc2xlZnQgLT0gd3JpdHRlbjsKICAgICAg ICAgICAgICAgICBidWZmZXIgKz0gd3JpdHRlbjsKIAorICAgICAgICAgICAgICAgIGlmICgh Rmx1c2hGaWxlQnVmZmVycyh0aGVmaWxlLT5maWxlaGFuZCkpIHsKKyAgICAgICAgICAgICAg ICAgIHJjID0gYXByX2dldF9vc19lcnJvcigpOworICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSB3aGlsZSAoYnl0ZXNsZWZ0ID4g MCk7CiAKICAgICAgICAgICAgIGlmIChyYyA9PSAwKQpJbmRleDogZmlsZV9pby93aW4zMi9z ZWVrLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCi0tLSBmaWxlX2lvL3dpbjMyL3NlZWsuYwkocmV2aXNp b24gNTc0Mjg0KQ0KKysrIGZpbGVfaW8vd2luMzIvc2Vlay5jCSh3b3JraW5nIGNvcHkpDQpA QCAtMTYsNyArMTYsNiBAQA0KIAogI2luY2x1ZGUgIndpbjMyL2Fwcl9hcmNoX2ZpbGVfaW8u aCIKICNpbmNsdWRlICJhcHJfZmlsZV9pby5oIgotI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5j bHVkZSA8c3RyaW5nLmg+CiAKIHN0YXRpYyBhcHJfc3RhdHVzX3Qgc2V0cHRyKGFwcl9maWxl X3QgKnRoZWZpbGUsIGFwcl9vZmZfdCBwb3MgKQpAQCAtMTAxLDYgKzEwMCwxMCBAQA0KICAg ICAgICAgKm9mZnNldCA9IHRoZWZpbGUtPmZpbGVQdHIgLSB0aGVmaWxlLT5kYXRhUmVhZCAr IHRoZWZpbGUtPmJ1ZnBvczsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KKyAgICAvKiBD RSBkb2Vzbid0IHN1cHBvcnQgb3ZlcmxhcHBlZCBpL28sIHRoZXJlZm9yZSwgZmFsbGJhY2sg dG8gbGV0dGluZyB0aGUKKyAgICAgKiBPUyBoYW5kbGUgdGhlIGZpbGUgcG9pbnRlci4KKyAg ICAgKi8KKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIC8qIEEgZmlsZSBvcGVuZWQgd2l0aCBB UFJfWFRIUkVBRCBoYXMgYmVlbiBvcGVuZWQgZm9yIG92ZXJsYXBwZWQgaS9vLiAKICAgICAg KiBBUFIgbXVzdCBleHBsaWNpdGx5IHRyYWNrIHRoZSBmaWxlIHBvaW50ZXIgaW4gdGhpcyBj YXNlLgogICAgICAqLwpAQCAtMTI2LDYgKzEyOSw3IEBADQogICAgICAgICAqb2Zmc2V0ID0g dGhlZmlsZS0+ZmlsZVB0cjsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KKyNlbmRpZgog ICAgIGVsc2UgewogICAgICAgICBEV09SRCBob3dtb3ZlOwogICAgICAgICBEV09SRCBvZmZs byA9IChEV09SRCkqb2Zmc2V0OwpJbmRleDogaW5jbHVkZS9hcHIuaHcNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCi0tLSBpbmNsdWRlL2Fwci5odwkocmV2aXNpb24gNTc0Mjg0KQ0KKysrIGluY2x1ZGUv YXByLmh3CSh3b3JraW5nIGNvcHkpDQpAQCAtNzQsMTIgKzc0LDYgQEANCiAjaWZuZGVmIFdJ TjMyX0xFQU5fQU5EX01FQU4KICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogI2VuZGlm Ci0jaWZuZGVmIF9XSU4zMl9XSU5OVAotCi0vKiBSZXN0cmljdCB0aGUgc2VydmVyIHRvIGEg c3Vic2V0IG9mIFdpbmRvd3MgTlQgNC4wIGhlYWRlciBmaWxlcyBieSBkZWZhdWx0Ci0gKi8K LSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDQwMAotI2VuZGlmCiAjaWZuZGVmIE5PVVNFUgog I2RlZmluZSBOT1VTRVIKICNlbmRpZgpAQCAtOTYsMTMgKzkwLDkgQEANCiAgKiB3aW5zb2Nr IGhlYWRlcnMgd2VyZSBleGNsdWRlZCBieSBXSU4zMl9MRUFOX0FORF9NRUFOLCBzbyBpbmNs dWRlIHRoZW0gbm93CiAgKi8KICNkZWZpbmUgU1dfSElERSAgICAgICAgICAgICAwCi0jaWZu ZGVmIF9XSU4zMl9XQ0UKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPG1zd3Nv Y2suaD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgotI2Vsc2UKLSNpbmNsdWRlIDx3aW5zb2Nr Lmg+Ci0jZW5kaWYKICNlbmRpZiAvKiAhX1dJTkRPV1NfICovCiAKIC8qKgpAQCAtMjE3LDcg KzIwNyw3IEBADQogI2RlZmluZSBBUFJfSEFWRV9JTl9BRERSICAgICAgICAxCiAjZGVmaW5l IEFQUl9IQVZFX0lORVRfQUREUiAgICAgIDEKICNkZWZpbmUgQVBSX0hBVkVfSU5FVF9ORVRX T1JLICAgMAotI2RlZmluZSBBUFJfSEFWRV9JUFY2ICAgICAgICAgICAwCisjZGVmaW5lIEFQ Ul9IQVZFX0lQVjYgICAgICAgICAgIDEKICNkZWZpbmUgQVBSX0hBVkVfTUVNTU9WRSAgICAg ICAgMQogI2RlZmluZSBBUFJfSEFWRV9TRVRSTElNSVQgICAgICAwCiAjZGVmaW5lIEFQUl9I QVZFX1NJR0FDVElPTiAgICAgIDAKQEAgLTIzMSwxNCArMjIxLDEyIEBADQogI2RlZmluZSBB UFJfSEFWRV9TVFJVQ1RfUkxJTUlUICAwCiAjZGVmaW5lIEFQUl9IQVZFX1VOSU9OX1NFTVVO ICAgIDAKICNkZWZpbmUgQVBSX0hBVkVfU0NUUCAgICAgICAgICAgMAotCi0jaWZuZGVmIF9X SU4zMl9XQ0UKICNkZWZpbmUgQVBSX0hBVkVfU1RSSUNNUCAgICAgICAgMQogI2RlZmluZSBB UFJfSEFWRV9TVFJOSUNNUCAgICAgICAxCisKKyNpZm5kZWYgX1dJTjMyX1dDRQogI2RlZmlu ZSBBUFJfUFJPQ0FUVFJfVVNFUl9TRVRfUkVRVUlSRVNfUEFTU1dPUkQgMQogI2Vsc2UKLSNk ZWZpbmUgQVBSX0hBVkVfU1RSSUNNUCAgICAgICAgMAotI2RlZmluZSBBUFJfSEFWRV9TVFJO SUNNUCAgICAgICAwCiAjZGVmaW5lIEFQUl9QUk9DQVRUUl9VU0VSX1NFVF9SRVFVSVJFU19Q QVNTV09SRCAwCiAjZW5kaWYKIApAQCAtNTAzLDcgKzQ5MSw3IEBADQogI2RlZmluZSBTVERP VVRfRklMRU5PIDEKICNkZWZpbmUgU1RERVJSX0ZJTEVOTyAyCiAKLSNpZiBBUFJfSEFTX1VO SUNPREVfRlMKKyNpZiBBUFJfSEFTX1VOSUNPREVfRlMgJiYgIWRlZmluZWQoX1dJTjMyX1dD RSkKIC8qIEFuIGFyYml0cmFyeSBzaXplIHRoYXQgaXMgZGlnZXN0YWJsZS4gVHJ1ZSBtYXgg aXMgYSBiaXQgbGVzcyB0aGFuIDMyMDAwICovCiAjZGVmaW5lIEFQUl9QQVRIX01BWCA4MTky CiAjZWxzZSAvKiAhQVBSX0hBU19VTklDT0RFX0ZTICovCkluZGV4OiBpbmNsdWRlL2Fwcl9l cnJuby5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gaW5jbHVkZS9hcHJfZXJybm8uaAkocmV2aXNp b24gNTc0Mjg0KQ0KKysrIGluY2x1ZGUvYXByX2Vycm5vLmgJKHdvcmtpbmcgY29weSkNCkBA IC0zMjksOSArMzI5LDEzIEBADQogICogQVBSIHdhcyB1bmFibGUgdG8gb3BlbiB0aGUgZHNv IG9iamVjdC4gIAogICogRm9yIG1vcmUgaW5mb3JtYXRpb24gY2FsbCBhcHJfZHNvX2Vycm9y KCkuCiAgKi8KLSNpZiBkZWZpbmVkKFdJTjMyKQorI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkK ICNkZWZpbmUgQVBSX1NUQVRVU19JU19FRFNPT1BFTihzKSAgICAgICAoKHMpID09IEFQUl9F RFNPT1BFTiBcCisgICAgICAgICAgICAgICAgICAgICAgIHx8IEFQUl9UT19PU19FUlJPUihz KSA9PSBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUiBcCiAgICAgICAgICAgICAgICAgICAgICAg IHx8IEFQUl9UT19PU19FUlJPUihzKSA9PSBFUlJPUl9NT0RfTk9UX0ZPVU5EKQorI2VsaWYg ZGVmaW5lZChXSU4zMikKKyNkZWZpbmUgQVBSX1NUQVRVU19JU19FRFNPT1BFTihzKSAgICAg ICAoKHMpID09IEFQUl9FRFNPT1BFTiBcCisgICAgICAgICAgICAgICAgICAgICAgIHx8IEFQ Ul9UT19PU19FUlJPUihzKSA9PSBFUlJPUl9NT0RfTk9UX0ZPVU5EKQogI2Vsc2UKICNkZWZp bmUgQVBSX1NUQVRVU19JU19FRFNPT1BFTihzKSAgICAgICAoKHMpID09IEFQUl9FRFNPT1BF TikKICNlbmRpZgpAQCAtMzUwLDkgKzM1NCwxMyBAQA0KIC8qKiBDb3VsZCBub3QgZmluZCB0 aGUgcmVxdWVzdGVkIHN5bWJvbC4KICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGNhbGwgYXBy X2Rzb19lcnJvcigpLgogICovCi0jaWYgZGVmaW5lZChXSU4zMikKKyNpZiBkZWZpbmVkKF9X SU4zMl9XQ0UpCiAjZGVmaW5lIEFQUl9TVEFUVVNfSVNfRVNZTU5PVEZPVU5EKHMpICAgKChz KSA9PSBBUFJfRVNZTU5PVEZPVU5EIFwKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgQVBS X1RPX09TX0VSUk9SKHMpID09IEVSUk9SX0lOVkFMSURfSEFORExFIFwKICAgICAgICAgICAg ICAgICAgICAgICAgfHwgQVBSX1RPX09TX0VSUk9SKHMpID09IEVSUk9SX1BST0NfTk9UX0ZP VU5EKQorI2VsaWYgZGVmaW5lZChXSU4zMikKKyNkZWZpbmUgQVBSX1NUQVRVU19JU19FU1lN Tk9URk9VTkQocykgICAoKHMpID09IEFQUl9FU1lNTk9URk9VTkQgXAorICAgICAgICAgICAg ICAgICAgICAgICB8fCBBUFJfVE9fT1NfRVJST1IocykgPT0gRVJST1JfUFJPQ19OT1RfRk9V TkQpCiAjZWxzZQogI2RlZmluZSBBUFJfU1RBVFVTX0lTX0VTWU1OT1RGT1VORChzKSAgICgo cykgPT0gQVBSX0VTWU1OT1RGT1VORCkKICNlbmRpZgpJbmRleDogaW5jbHVkZS9hcHJfZ2Vu ZXJhbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gaW5jbHVkZS9hcHJfZ2VuZXJhbC5oCShyZXZp c2lvbiA1NzQyODQpDQorKysgaW5jbHVkZS9hcHJfZ2VuZXJhbC5oCSh3b3JraW5nIGNvcHkp DQpAQCAtMTE1LDEzICsxMTUsMjEgQEANCiAgKiBoYXZlIGl0CiAgKi8KICNpZiAoIUFQUl9I QVZFX1NUUkNBU0VDTVApICYmIChBUFJfSEFWRV9TVFJJQ01QKSAKKyNpZmRlZiBfV0lOMzJf V0NFCisjZGVmaW5lIHN0cmNhc2VjbXAoczEsIHMyKSBfc3RyaWNtcChzMSwgczIpCisjZWxz ZQogI2RlZmluZSBzdHJjYXNlY21wKHMxLCBzMikgc3RyaWNtcChzMSwgczIpCisjZW5kaWYK ICNlbGlmICghQVBSX0hBVkVfU1RSQ0FTRUNNUCkKIGludCBzdHJjYXNlY21wKGNvbnN0IGNo YXIgKmEsIGNvbnN0IGNoYXIgKmIpOwogI2VuZGlmCiAKICNpZiAoIUFQUl9IQVZFX1NUUk5D QVNFQ01QKSAmJiAoQVBSX0hBVkVfU1RSTklDTVApCisjaWZkZWYgX1dJTjMyX1dDRQorI2Rl ZmluZSBzdHJuY2FzZWNtcChzMSwgczIsIG4pIF9zdHJuaWNtcChzMSwgczIsIG4pCisjZWxz ZQogI2RlZmluZSBzdHJuY2FzZWNtcChzMSwgczIsIG4pIHN0cm5pY21wKHMxLCBzMiwgbikK KyNlbmRpZgogI2VsaWYgKCFBUFJfSEFWRV9TVFJOQ0FTRUNNUCkKIGludCBzdHJuY2FzZWNt cChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBzaXplX3Qgbik7CiAjZW5kaWYKSW5k ZXg6IGluY2x1ZGUvYXJjaC93aW4zMi9hcHJfYXJjaF9taXNjLmgNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbWlzYy5oCShyZXZpc2lvbiA1NzQy ODQpDQorKysgaW5jbHVkZS9hcmNoL3dpbjMyL2Fwcl9hcmNoX21pc2MuaAkod29ya2luZyBj b3B5KQ0KQEAgLTg1LDkgKzg1LDEyIEBADQogCUFQUl9XSU5fVU5JQ09ERSA9ICAyMCwgLyog UHJpb3IgdmVyc2lvbnMgc3VwcG9ydCBvbmx5IG5hcnJvdyBjaGFycyAqLwogCiAgICAgICAg IEFQUl9XSU5fQ0VfMyA9ICAgICAyMywgLyogQ0UgaXMgYW4gb2RkIGJlYXN0LCBub3Qgc3Vw cG9ydGluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNvbWUgcHJl LU5UIGZlYXR1cmVzLCBzdWNoIGFzIHRoZSAgICAqLwotICAgICAgICBBUFJfV0lOX05UID0g ICAgICAgMzAsIC8qIG5hcnJvdyBjaGFyc2V0IEFQSXMgKGZvb0EgZm5zKSwgd2hpbGUgICov Ci0gICAgICAgIEFQUl9XSU5fTlRfM181ID0gICAzNSwgLyogbm90IHN1cHBvcnRpbmcgc29t ZSBOVC1mYW1pbHkgZmVhdHVyZXMuICAqLworICAgICAgICBBUFJfV0lOX0NFXzQgPSAgICAg MjQsIC8qIHNvbWUgcHJlLU5UIGZlYXR1cmVzLCBzdWNoIGFzIHRoZSAgICAqLworICAgICAg ICBBUFJfV0lOX0NFXzUgPSAgICAgMjUsIC8qIG5hcnJvdyBjaGFyc2V0IEFQSXMgKGZvb0Eg Zm5zKSwgd2hpbGUgICovCisgICAgICAgIEFQUl9XSU5fQ0VfNiA9ICAgICAyNiwgLyogbm90 IHN1cHBvcnRpbmcgc29tZSBOVC1mYW1pbHkgZmVhdHVyZXMuICAqLworCisgICAgICAgIEFQ Ul9XSU5fTlQgPSAgICAgICAzMCwKKyAgICAgICAgQVBSX1dJTl9OVF8zXzUgPSAgIDM1LAog ICAgICAgICBBUFJfV0lOX05UXzNfNTEgPSAgMzYsCiAKICAgICAgICAgQVBSX1dJTl9OVF80 ID0gICAgIDQwLApAQCAtMTM4LDYgKzE0MSw4IEBADQogI2RlZmluZSBFTFNFX1dJTl9PU19J U19BTlNJCiAjZW5kaWYgLyogV0lOTlQgKi8KIAorI2lmICFkZWZpbmVkKF9XSU4zMl9XQ0Up CisKIHR5cGVkZWYgZW51bSB7CiAgICAgRExMX1dJTkJBU0VBUEkgPSAwLCAgICAvLyBrZXJu ZWwzMiBGcm9tIFdpbkJhc2UuaAogICAgIERMTF9XSU5BRFZBUEkgPSAxLCAgICAgLy8gYWR2 YXBpMzIgRnJvbSBXaW5CYXNlLmgKQEAgLTE1OSw4ICsxNjQsMTAgQEANCiAgICAgeyAgIGlm ICghYXByX3dpbmFwaV9wZm5fIyNmbikgXAogICAgICAgICAgICAgYXByX3dpbmFwaV9wZm5f IyNmbiA9IChhcHJfd2luYXBpX2ZwdF8jI2ZuKSBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFwcl9sb2FkX2RsbF9mdW5jKGxpYiwgI2ZuLCBvcmQpOyBcCi0g ICAgICAgIHJldHVybiAoKihhcHJfd2luYXBpX3Bmbl8jI2ZuKSkgbmFtZXM7IH07IFwKKyAg ICAgICAgcmV0dXJuICgqKGFwcl93aW5hcGlfcGZuXyMjZm4pKSBuYW1lczsgfTsKIAorI2Vu ZGlmIC8qICFkZWZpbmVkKF9XSU4zMl9XQ0UpICovCisKIC8qIFByb3ZpZGUgbGF0ZSBib3Vu ZCBkZWNsYXJhdGlvbnMgb2YgZXZlcnkgQVBJIGZ1bmN0aW9uIG1pc3NpbmcgZnJvbQogICog b25lIG9yIG1vcmUgc3VwcG9ydGVkIHJlbGVhc2VzIG9mIHRoZSBXaW4zMiBBUEkKICAqCklu ZGV4OiBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29ya2lvLmgNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCi0tLSBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29ya2lvLmgJKHJl dmlzaW9uIDU3NDI4NCkNCisrKyBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29y a2lvLmgJKHdvcmtpbmcgY29weSkNCkBAIC01MCwxMyArNTAsMTcgQEANCiAgICAgICovCiAg ICAgT1ZFUkxBUFBFRCAgICAgICAgICpvdmVybGFwcGVkOwogI2VuZGlmCisjaWYgX1dJTjMy X1dDRSA+IDB4NDAwCisgICAgLyogTmVlZGVkIGluIENFIHRvIGltcGxlbWVudCBibG9ja2lu ZyBzb2NrZXRzIHRoYXQgdGltZW91dC4gKi8KKyAgICBXU0FPVkVSTEFQUEVEICAgICAgKndz YW92ZXJsYXBwZWQ7CisjZW5kaWYKICAgICBzb2NrX3VzZXJkYXRhX3QgICAgKnVzZXJkYXRh OwogCiAgICAgLyogaWYgdGhlcmUgaXMgYSB0aW1lb3V0IHNldCwgdGhlbiB0aGlzIHBvbGxz ZXQgaXMgdXNlZCAqLwogICAgIGFwcl9wb2xsc2V0X3QgKnBvbGxzZXQ7CiB9OwogCi0jaWZk ZWYgX1dJTjMyX1dDRQorI2lmIF9XSU4zMl9XQ0UgPCAweDUwMAogI2lmbmRlZiBXU0FCVUYK IHR5cGVkZWYgc3RydWN0IF9XU0FCVUYgewogICAgIHVfbG9uZyAgICAgIGxlbjsgICAgIC8q IHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciAqLwpJbmRleDogaW5jbHVkZS9hcmNoL3dpbjMy L2Fwcl9wcml2YXRlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBpbmNsdWRlL2FyY2gvd2luMzIv YXByX3ByaXZhdGUuaAkocmV2aXNpb24gNTc0Mjg0KQ0KKysrIGluY2x1ZGUvYXJjaC93aW4z Mi9hcHJfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM0LDcgKzEzNCw5IEBADQog CiAjaWYgIUFQUl9IQVZFX0VSUk5PX0gKIEFQUl9ERUNMQVJFX0RBVEEgaW50IGVycm5vOwot I2RlZmluZSBFTk9TUEMgMQorI2RlZmluZSBFTk9TUEMgMjgKKyNkZWZpbmUgRUlOVkFMIDIy CisjZGVmaW5lIEVSQU5HRSAzNAogI2VuZGlmCiAKICNpZiBBUFJfSEFWRV9JUFY2CkBAIC0x NjEsNiArMTYzLDEwIEBADQogI2VuZGlmCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX1dJTjMy X1dDRSkgJiYgIWRlZmluZWQoQlVGU0laKQorI2RlZmluZSBCVUZTSVogNTEyCisjZW5kaWYK KwogLyogdXNlZCB0byBjaGVjayBmb3IgRFdPUkQgb3ZlcmZsb3cgaW4gNjRiaXQgY29tcGls ZXMgKi8KICNkZWZpbmUgQVBSX0RXT1JEX01BWCAweEZGRkZGRkZGVUwKIApJbmRleDogbWlz Yy93aW4zMi9pbnRlcm5hbC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbWlzYy93aW4zMi9pbnRl cm5hbC5jCShyZXZpc2lvbiA1NzQyODQpDQorKysgbWlzYy93aW4zMi9pbnRlcm5hbC5jCSh3 b3JraW5nIGNvcHkpDQpAQCAtMTgsNyArMTgsOSBAQA0KIAogI2luY2x1ZGUgImFwcl9hcmNo X21pc2MuaCIKICNpbmNsdWRlICJhcHJfYXJjaF9maWxlX2lvLmgiCisjaWZuZGVmIF9XSU4z Ml9XQ0UKICNpbmNsdWRlIDxjcnRkYmcuaD4KKyNlbmRpZgogI2luY2x1ZGUgPGFzc2VydC5o PgogCiAvKiBUaGlzIG1vZHVsZSBpcyB0aGUgc291cmNlIG9mIC1zdGF0aWMtIGhlbHBlciBm dW5jdGlvbnMgdGhhdCBhcmUKQEAgLTUyLDggKzU0LDEyIEBADQogICAgICAgICAgICAgOwog ICAgIH0KIAorI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgbmV3YXJyID0gX21hbGxvY19kYmco KGFyZ3MgKyAxKSAqIHNpemVvZihjaGFyICopLAogICAgICAgICAgICAgICAgICAgICAgICAg IF9DUlRfQkxPQ0ssIF9fRklMRV9fLCBfX0xJTkVfXyk7CisjZWxzZQorICAgIG5ld2FyciA9 IG1hbGxvYygoYXJncyArIDEpICogc2l6ZW9mKGNoYXIgKikpOworI2VuZGlmCiAKICAgICBm b3IgKGFyZyA9IDA7IGFyZyA8IGFyZ3M7ICsrYXJnKSB7CiAgICAgICAgIG5ld2Fyclthcmdd ID0gKHZvaWQqKSh3Y3NsZW4oYXJyW2FyZ10pICsgMSk7CkBAIC02Niw4ICs3MiwxMiBAQA0K ICAgICAgKiA0IHVjcyBieXRlcyB3aWxsIGhvbGQgYSB3Y2hhcl90IHBhaXIgdmFsdWUgKDIw IGJpdHMpCiAgICAgICovCiAgICAgZWxlc2l6ZSA9IGVsZXNpemUgKiAzICsgMTsKKyNpZm5k ZWYgX1dJTjMyX1dDRQogICAgIGVsZSA9IGVsZW1lbnRzID0gX21hbGxvY19kYmcoZWxlc2l6 ZSAqIHNpemVvZihjaGFyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf Q1JUX0JMT0NLLCBfX0ZJTEVfXywgX19MSU5FX18pOworI2Vsc2UKKyAgICBlbGUgPSBlbGVt ZW50cyA9IG1hbGxvYyhlbGVzaXplICogc2l6ZW9mKGNoYXIpKTsKKyNlbmRpZgogCiAgICAg Zm9yIChhcmcgPSAwOyBhcmcgPCBhcmdzOyArK2FyZykgewogICAgICAgICBhcHJfc2l6ZV90 IGxlbiA9IChhcHJfc2l6ZV90KW5ld2FyclthcmddOwpAQCAtODcsOCArOTcsMTIgQEANCiAK ICAgICAvKiBSZXR1cm4gdG8gdGhlIGZyZWUgc3RvcmUgaWYgdGhlIGhlYXAgcmVhbGxvYyBp cyB0aGUgbGVhc3QgYml0IG9wdGltaXplZAogICAgICAqLworI2lmbmRlZiBfV0lOMzJfV0NF CiAgICAgZWxlID0gX3JlYWxsb2NfZGJnKGVsZW1lbnRzLCBlbGUgLSBlbGVtZW50cywgCiAg ICAgICAgICAgICAgICAgICAgICAgIF9DUlRfQkxPQ0ssIF9fRklMRV9fLCBfX0xJTkVfXyk7 CisjZWxzZQorICAgIGVsZSA9IHJlYWxsb2MoZWxlbWVudHMsIGVsZSAtIGVsZW1lbnRzKTsK KyNlbmRpZgogCiAgICAgaWYgKGVsZSAhPSBlbGVtZW50cykgewogICAgICAgICBhcHJfc2l6 ZV90IGRpZmYgPSBlbGUgLSBlbGVtZW50czsKSW5kZXg6IG1pc2Mvd2luMzIvbWlzYy5jDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gbWlzYy93aW4zMi9taXNjLmMJKHJldmlzaW9uIDU3NDI4NCkN CisrKyBtaXNjL3dpbjMyL21pc2MuYwkod29ya2luZyBjb3B5KQ0KQEAgLTE2LDcgKzE2LDkg QEANCiAKICNpbmNsdWRlICJhcHJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFwcl9hcmNoX21p c2MuaCIKKyNpZm5kZWYgX1dJTjMyX1dDRQogI2luY2x1ZGUgImNydGRiZy5oIgorI2VuZGlm CiAjaW5jbHVkZSAiYXByX2FyY2hfZmlsZV9pby5oIgogI2luY2x1ZGUgImFzc2VydC5oIgog I2luY2x1ZGUgImFwcl9saWIuaCIKQEAgLTMxLDggKzMzLDEyIEBADQogICAgICAgICBvc2xl di5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOwogICAgICAg ICBHZXRWZXJzaW9uRXgoJm9zbGV2KTsKIAotICAgICAgICBpZiAob3NsZXYuZHdQbGF0Zm9y bUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVCkgCisgICAgICAgIGlmICgwKQogICAgICAg ICB7CisgICAgICAgIH0KKyNpZmRlZiBXSU5OVAorICAgICAgICBlbHNlIGlmIChvc2xldi5k d1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UKSAKKyAgICAgICAgewogICAg ICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBzZXJ2cGFjayA9IDA7CiAgICAgICAgICAg ICBjaGFyICpwc2VydnBhY2s7CiAgICAgICAgICAgICBpZiAocHNlcnZwYWNrID0gb3NsZXYu c3pDU0RWZXJzaW9uKSB7CkBAIC05Niw3ICsxMDIsNyBAQA0KICAgICAgICAgICAgICAgICBh cHJfb3NfbGV2ZWwgPSBBUFJfV0lOX1hQOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0j aWZuZGVmIFdJTk5UCisjZWxpZiAhZGVmaW5lZChXSU5OVCkgJiYgIWRlZmluZWQoX1dJTjMy X1dDRSkKICAgICAgICAgZWxzZSBpZiAob3NsZXYuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFU Rk9STV9XSU4zMl9XSU5ET1dTKSB7CiAgICAgICAgICAgICBjaGFyICpwcmV2aXNpb247CiAg ICAgICAgICAgICBpZiAocHJldmlzaW9uID0gb3NsZXYuc3pDU0RWZXJzaW9uKSB7CkBAIC0x MjIsMTYgKzEyOCwyNCBAQA0KICAgICAgICAgICAgICAgICBhcHJfb3NfbGV2ZWwgPSBBUFJf V0lOX01FOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0jZW5kaWYKLSNpZmRlZiBfV0lO MzJfV0NFCisjZWxpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCiAgICAgICAgIGVsc2UgaWYgKG9z bGV2LmR3UGxhdGZvcm1JZCA9PSBWRVJfUExBVEZPUk1fV0lOMzJfQ0UpIAogICAgICAgICB7 CiAgICAgICAgICAgICBpZiAob3NsZXYuZHdNYWpvclZlcnNpb24gPCAzKSB7CiAgICAgICAg ICAgICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJTl9VTlNVUDsKICAgICAgICAgICAgIH0K LSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZSBpZiAob3NsZXYuZHdNYWpv clZlcnNpb24gPCA0KSB7CiAgICAgICAgICAgICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJ Tl9DRV8zOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAob3NsZXYuZHdN YWpvclZlcnNpb24gPCA1KSB7CisgICAgICAgICAgICAgICAgYXByX29zX2xldmVsID0gQVBS X1dJTl9DRV80OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAob3NsZXYu ZHdNYWpvclZlcnNpb24gPCA2KSB7CisgICAgICAgICAgICAgICAgYXByX29zX2xldmVsID0g QVBSX1dJTl9DRV81OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg ICAgICAgICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJTl9DRV82OworICAgICAgICAgICAg fQogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgZWxzZSB7CkBAIC0xNDgsNyArMTYyLDcg QEANCiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwogfQogCi0KKyNpZiAhZGVmaW5lZChfV0lO MzJfV0NFKQogLyogVGhpcyBpcyB0aGUgaGVscGVyIGNvZGUgdG8gcmVzb2x2ZSBsYXRlIGJv dW5kIGVudHJ5IHBvaW50cyAKICAqIG1pc3NpbmcgZnJvbSBvbmUgb3IgbW9yZSByZWxlYXNl cyBvZiB0aGUgV2luMzIgQVBJCiAgKi8KQEAgLTE3MCw2ICsxODQsNyBAQA0KICAgICBlbHNl CiAgICAgICAgIHJldHVybiBHZXRQcm9jQWRkcmVzcyhsYXRlRGxsSGFuZGxlW2ZuTGliXSwg Zm5OYW1lKTsKIH0KKyNlbmRpZgogCiAvKiBEZWNsYXJlZCBpbiBpbmNsdWRlL2FyY2gvd2lu MzIvYXByX2RiZ193aW4zMl9oYW5kbGVzLmgKICAqLwpAQCAtMTk2LDExICsyMTEsMjMgQEAN CiAgICAgICAgIChUbHNTZXRWYWx1ZSkodGxzaWQsIHNidWYpOwogICAgICAgICBzYnVmWzEw MjNdID0gJ1wwJzsKICAgICAgICAgaWYgKCFmaCkgeworLyogQ0Ugb25seSBoYXMgVW5pY29k ZSBBUEkuICovCisjaWZkZWYgX1dJTjMyX1dDRQorICAgICAgICAgICAgd2NoYXJfdCAqd3Ni dWYgPSBtYWxsb2MoMTAyNCk7CisgICAgICAgICAgICB3c2J1ZlsxMDIzXSA9IEwnXDAnOwor ICAgICAgICAgICAgKEdldE1vZHVsZUZpbGVOYW1lVykoTlVMTCwgd3NidWYsIDI1MCk7Cisg ICAgICAgICAgICBzd3ByaW50Zih3Y3NjaHIod3NidWYsIEwnXDAnKSwgTCIuJWQiLAorICAg ICAgICAgICAgICAgICAgICAoR2V0Q3VycmVudFByb2Nlc3NJZCkoKSk7CisgICAgICAgICAg ICBmaCA9IChDcmVhdGVGaWxlVykod3NidWYsIEdFTkVSSUNfV1JJVEUsIDAsIE5VTEwsIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURV9BTFdBWVMsIDAsIE5VTEwpOwor ICAgICAgICAgICAgZnJlZSh3c2J1Zik7CisjZWxzZQogICAgICAgICAgICAgKEdldE1vZHVs ZUZpbGVOYW1lKShOVUxMLCBzYnVmLCAyNTApOwogICAgICAgICAgICAgc3ByaW50ZihzdHJj aHIoc2J1ZiwgJ1wwJyksICIuJWQiLAogICAgICAgICAgICAgICAgICAgICAoR2V0Q3VycmVu dFByb2Nlc3NJZCkoKSk7CiAgICAgICAgICAgICBmaCA9IChDcmVhdGVGaWxlKShzYnVmLCBH RU5FUklDX1dSSVRFLCAwLCBOVUxMLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD UkVBVEVfQUxXQVlTLCAwLCBOVUxMKTsKKyNlbmRpZgogICAgICAgICAgICAgKEluaXRpYWxp emVDcml0aWNhbFNlY3Rpb24pKCZjcyk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBtaXNj L3dpbjMyL3JhbmQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIG1pc2Mvd2luMzIvcmFuZC5jCShy ZXZpc2lvbiA1NzQyODQpDQorKysgbWlzYy93aW4zMi9yYW5kLmMJKHdvcmtpbmcgY29weSkN CkBAIC0yMCw4ICsyMCwxMCBAQA0KICNpbmNsdWRlICJhcHJfZ2VuZXJhbC5oIgogI2luY2x1 ZGUgImFwcl9wb3J0YWJsZS5oIgogI2luY2x1ZGUgImFwcl9hcmNoX21pc2MuaCIKKyNpZmRl ZiBfV0lOMzJfV0NFCisjaW5jbHVkZSA8b2JqYmFzZS5oPgorI2VuZGlmCiAKLQogQVBSX0RF Q0xBUkUoYXByX3N0YXR1c190KSBhcHJfZ2VuZXJhdGVfcmFuZG9tX2J5dGVzKHVuc2lnbmVk IGNoYXIgKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXByX3NpemVfdCBsZW5ndGgpCiB7CkBAIC0zMiw3ICszNCwxMiBAQA0K ICAgICAgKiBhbmQgd2lsbCBvbmx5IHdvcmsgZm9yIFdpbjJLIGFuZCBsYXRlci4KICAgICAg Ki8KICAgICBEV09SRCBmbGFncyA9IENSWVBUX1ZFUklGWUNPTlRFWFQKKyNpZm5kZWYgX1dJ TjMyX1dDRQogICAgICAgICAgICAgICAgIHwgKChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl8y MDAwKSA/IDB4NDAgOiAwKTsKKyNlbHNlCisgICAgLyogQ1JZUFRfU0lMRU5UIHdvcmtzIG9u IENFIGZyb20gdGhlIGJlZ2lubmluZyBvZiBDcnlwdEFjcXVpcmVDb250ZXh0KCkuICovCisg ICAgICAgICAgICAgICAgfCBDUllQVF9TSUxFTlQ7CisjZW5kaWYKIAogICAgIGlmICghQ3J5 cHRBY3F1aXJlQ29udGV4dCgmaFByb3YsIE5VTEwsIE5VTEwsIFBST1ZfUlNBX0ZVTEwsIGZs YWdzKSkgewogCXJldHVybiBhcHJfZ2V0X29zX2Vycm9yKCk7CkBAIC02MSw3ICs2OCwxMSBA QA0KICAgICAgKiBOb3RlIHRoYXQgV2luMjAwMCwgWFAgYW5kIGxhdGVyIG5vIGxvbmdlciBz dWZmZXIgZnJvbSB0aGlzIHByb2JsZW0sCiAgICAgICogYSBzY3JhbWJsaW5nIGZpeCBpcyBv bmx5IG5lZWRlZCBmb3IgKGFwcl9vc19sZXZlbCA8IEFQUl9XSU5fMjAwMCkKICAgICAgKi8K KyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIGlmIChGQUlMRUQoVXVpZENyZWF0ZSgoVVVJRCAq KXV1aWRfZGF0YSkpKSB7CisjZWxzZQorICAgIGlmIChGQUlMRUQoQ29DcmVhdGVHdWlkKChV VUlEICopdXVpZF9kYXRhKSkpIHsKKyNlbmRpZgogICAgICAgICByZXR1cm4gQVBSX0VHRU5F UkFMOwogICAgIH0KICAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CkluZGV4OiBtaXNjL3dpbjMy L3N0YXJ0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBtaXNjL3dpbjMyL3N0YXJ0LmMJKHJldmlz aW9uIDU3NDI4NCkNCisrKyBtaXNjL3dpbjMyL3N0YXJ0LmMJKHdvcmtpbmcgY29weSkNCkBA IC0yNCw3ICsyNCw5IEBADQogI2luY2x1ZGUgIndjaGFyLmgiCiAjaW5jbHVkZSAiYXByX2Fy Y2hfZmlsZV9pby5oIiAgICAvKiBicmluZyBpbiB1bmljb2RlLW5lc3MgKi8KICNpbmNsdWRl ICJhcHJfYXJjaF90aHJlYWRwcm9jLmgiIC8qIGJyaW5nIGluIGFwcl90aHJlYWRwcm9jX2lu aXQgKi8KKyNpZm5kZWYgX1dJTjMyX1dDRQogI2luY2x1ZGUgImNydGRiZy5oIgorI2VuZGlm CiAjaW5jbHVkZSAiYXNzZXJ0LmgiCiAKIC8qIFRoaXMgc3ltYm9sIGlzIF9wcml2YXRlXywg YWx0aG91Z2ggaXQgbXVzdCBiZSBleHBvcnRlZC4KSW5kZXg6IG1tYXAvd2luMzIvbW1hcC5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gbW1hcC93aW4zMi9tbWFwLmMJKHJldmlzaW9uIDU3NDI4 NCkNCisrKyBtbWFwL3dpbjMyL21tYXAuYwkod29ya2luZyBjb3B5KQ0KQEAgLTc1LDYgKzc1 LDEyIEBADQogICAgIERXT1JEIG12YWNjZXNzID0gMDsKICAgICBEV09SRCBvZmZsbzsKICAg ICBEV09SRCBvZmZoaTsKKyNpZmRlZiBfV0lOMzJfV0NFCisgICAgYXByX3djaGFyX3Qgd2Zu YW1lW0FQUl9QQVRIX01BWF07CisgICAgYXByX3N0YXR1c190IHJ2OworICAgIERXT1JEIG9m bGFncyA9IDA7CisgICAgSEFORExFIGZoYW5kbGU7CisjZW5kaWYKIAogICAgIGlmIChzaXpl ID09IDApCiAgICAgICAgIHJldHVybiBBUFJfRUlOVkFMOwpAQCAtMTA0LDEzICsxMTAsNDAg QEANCiAgICAgKCpuZXcpLT5wc3RhcnQgPSAob2Zmc2V0IC8gbWVtYmxvY2spICogbWVtYmxv Y2s7CiAgICAgKCpuZXcpLT5wb2Zmc2V0ID0gb2Zmc2V0IC0gKCpuZXcpLT5wc3RhcnQ7CiAg ICAgKCpuZXcpLT5wc2l6ZSA9IChhcHJfc2l6ZV90KSgoKm5ldyktPnBvZmZzZXQpICsgc2l6 ZTsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIC8qIFRoZSBzaXplIG9mIHRoZSBDcmVhdGVG aWxlTWFwcGluZyBvYmplY3QgaXMgdGhlIGN1cnJlbnQgc2l6ZQogICAgICAqIG9mIHRoZSBz aXplIG9mIHRoZSBtbWFwIG9iamVjdCAoZS5nLiBmaWxlIHNpemUpLCBub3QgdGhlIHNpemUg CiAgICAgICogb2YgdGhlIG1hcHBlZCByZWdpb24hCiAgICAgICovCi0KICAgICAoKm5ldykt Pm1oYW5kbGUgPSBDcmVhdGVGaWxlTWFwcGluZyhmaWxlLT5maWxlaGFuZCwgTlVMTCwgZm1h Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg TlVMTCk7CisjZWxzZQorICAgIHJ2ID0gdXRmOF90b191bmljb2RlX3BhdGgod2ZuYW1lLCBB UFJfUEFUSF9NQVgsIGZpbGUtPmZuYW1lKTsKKyAgICBpZiAocnYgIT0gQVBSX1NVQ0NFU1Mp IHsKKyAgICAgICAgKm5ldyA9IE5VTEw7CisgICAgICAgIHJldHVybiBydjsKKyAgICB9Cisg ICAgLyogTmVlZCB0byB1c2UgQ3JlYXRlRmlsZUZvck1hcHBpbmcoKSBvbiBDRSB0byBlbnN1 cmUgTU1hcCBmaWxlcyB3b3JrLgorICAgICAqIENFIGlnbm9yZXMgdGhlIHNoYXJlbW9kZSBw YXJhbWV0ZXIuIEluc3RlYWQsIGl0IGdyYW50cyB0aGUgc2FtZQorICAgICAqIHNoYXJlIG1v ZGUgYXMgdGhlIGRlc2lyZWQgYWNjZXNzIChvcGVuKSBmbGFncy4KKyAgICAgKi8KKyAgICBp ZiAoZmxhZyAmIEFQUl9NTUFQX1dSSVRFKQorICAgICAgICBvZmxhZ3MgPSBHRU5FUklDX1JF QUQgfCBHRU5FUklDX1dSSVRFOworICAgIGVsc2UgaWYgKGZsYWcgJiBBUFJfTU1BUF9SRUFE KQorICAgICAgICBvZmxhZ3MgfD0gR0VORVJJQ19SRUFEOworICAgIGZoYW5kbGUgPSBDcmVh dGVGaWxlRm9yTWFwcGluZ1cod2ZuYW1lLCBvZmxhZ3MsIDAsIE5VTEwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKKyAg ICBpZiAoIWZoYW5kbGUgfHwgZmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewor ICAgICAgICAqbmV3ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3Io KTsKKyAgICB9CisgICAgLyogVGhlIHNpemUgb2YgdGhlIENyZWF0ZUZpbGVNYXBwaW5nIG9i amVjdCBpcyB0aGUgY3VycmVudCBzaXplCisgICAgICogb2YgdGhlIHNpemUgb2YgdGhlIG1t YXAgb2JqZWN0IChlLmcuIGZpbGUgc2l6ZSksIG5vdCB0aGUgc2l6ZSAKKyAgICAgKiBvZiB0 aGUgbWFwcGVkIHJlZ2lvbiEKKyAgICAgKi8KKyAgICAoKm5ldyktPm1oYW5kbGUgPSBDcmVh dGVGaWxlTWFwcGluZyhmaGFuZGxlLCBOVUxMLCBmbWFjY2VzcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBOVUxMKTsKKyNlbmRpZgogICAgIGlm ICghKCpuZXcpLT5taGFuZGxlIHx8ICgqbmV3KS0+bWhhbmRsZSA9PSBJTlZBTElEX0hBTkRM RV9WQUxVRSkKICAgICB7CiAgICAgICAgICpuZXcgPSBOVUxMOwpJbmRleDogbmV0d29ya19p by91bml4L211bHRpY2FzdC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbmV0d29ya19pby91bml4 L211bHRpY2FzdC5jCShyZXZpc2lvbiA1NzQyODQpDQorKysgbmV0d29ya19pby91bml4L211 bHRpY2FzdC5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMTg1LDcgKzE4NSwxMSBAQA0KIAogICAg ICAgICAgICAgaWYgKHNldHNvY2tvcHQoc29jay0+c29ja2V0ZGVzLCBJUFBST1RPX0lQLCB0 eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJm1pcDQs IHNpemVvZihtaXA0KSkgPT0gLTEpIHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICAg ICAgICAgIHJ2ID0gZXJybm87CisjZWxzZQorICAgICAgICAgICAgICAgIHJ2ID0gYXByX2dl dF9uZXRvc19lcnJvcigpOworI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNp ZiBBUFJfSEFWRV9JUFY2ICYmIGRlZmluZWQoSVBWNl9KT0lOX0dST1VQKSAmJiBkZWZpbmVk KElQVjZfTEVBVkVfR1JPVVApCkBAIC0yMDQsNyArMjA4LDExIEBADQogCiAgICAgICAgICAg ICBpZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVBWNiwgdHlwZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaXA2LCBzaXplb2YobWlwNikpID09IC0x KSB7CisjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICAgICAgICAgICAgICBydiA9IGVycm5vOwor I2Vsc2UKKyAgICAgICAgICAgICAgICBydiA9IGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKKyNl bmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKQEAgLTIyOSw3ICsyMzcs MTEgQEANCiAgICAgaWYgKHNvY2tfaXNfaXB2NChzb2NrKSkgewogICAgICAgICBpZiAoc2V0 c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVAsIHR5cGUsCiAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zdCB2b2lkICopICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSkgPT0g LTEpIHsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICAgICAgcnYgPSBlcnJubzsKKyNl bHNlCisgICAgICAgICAgICBydiA9IGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKKyNlbmRpZgog ICAgICAgICB9CiAgICAgfQogI2lmIEFQUl9IQVZFX0lQVjYKQEAgLTIzOCw3ICsyNTAsMTEg QEANCiAgICAgICAgIHR5cGUgPSBJUFY2X01VTFRJQ0FTVF9MT09QOwogICAgICAgICBpZiAo c2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVBWNiwgdHlwZSwKICAgICAg ICAgICAgICAgICAgICAgICAgJmxvb3BvcHQsIHNpemVvZihsb29wb3B0KSkgPT0gLTEpIHsK KyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICAgICAgcnYgPSBlcnJubzsKKyNlbHNlCisg ICAgICAgICAgICBydiA9IGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKKyNlbmRpZgogICAgICAg ICB9CiAgICAgfQogICAgIGVsc2UgaWYgKHNvY2tfaXNfaXB2Nihzb2NrKSkgewpAQCAtMjUx LDcgKzI2NywxMSBAQA0KIAogICAgICAgICBpZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRk ZXMsIElQUFJPVE9fSVBWNiwgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVl LCBzaXplb2YodmFsdWUpKSA9PSAtMSkgeworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAg ICAgICBydiA9IGVycm5vOworI2Vsc2UKKyAgICAgICAgICAgIHJ2ID0gYXByX2dldF9uZXRv c19lcnJvcigpOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTMxNiw3 ICszMzYsMTEgQEANCiAgICAgICAgIGlmIChzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywg SVBQUk9UT19JUCwgSVBfTVVMVElDQVNUX0lGLAogICAgICAgICAgICAgICAgICAgICAgICAo Y29uc3Qgdm9pZCAqKSAmaWZhY2UtPnNhLnNpbi5zaW5fYWRkciwKICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKGlmYWNlLT5zYS5zaW4uc2luX2FkZHIpKSA9PSAtMSkgeworI2lm bmRlZiBfV0lOMzJfV0NFCiAgICAgICAgICAgICBydiA9IGVycm5vOworI2Vsc2UKKyAgICAg ICAgICAgIHJ2ID0gYXByX2dldF9uZXRvc19lcnJvcigpOworI2VuZGlmCiAgICAgICAgIH0K ICAgICB9CiAjaWYgQVBSX0hBVkVfSVBWNgpAQCAtMzI0LDcgKzM0OCwxMSBAQA0KICAgICAg ICAgdW5zaWduZWQgaW50IGlkeCA9IGZpbmRfaWZfaW5kZXgoaWZhY2UpOwogICAgICAgICBp ZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVBWNiwgSVBWNl9NVUxU SUNBU1RfSUYsCiAgICAgICAgICAgICAgICAgICAgICAgICZpZHgsIHNpemVvZihpZHgpKSA9 PSAtMSkgeworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgICAgICBydiA9IGVycm5vOwor I2Vsc2UKKyAgICAgICAgICAgIHJ2ID0gYXByX2dldF9uZXRvc19lcnJvcigpOworI2VuZGlm CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKSW5kZXg6IG5ldHdvcmtfaW8vdW5peC9zb2Nr YWRkci5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gbmV0d29ya19pby91bml4L3NvY2thZGRyLmMJ KHJldmlzaW9uIDU3NDI4NCkNCisrKyBuZXR3b3JrX2lvL3VuaXgvc29ja2FkZHIuYwkod29y a2luZyBjb3B5KQ0KQEAgLTU4LDE2ICs1OCw2IEBADQogI2RlZmluZSBHRVRIT1NUQllOQU1F X0JVRkxFTiA1MTIKICNlbmRpZgogCi0jaWZkZWYgX1dJTjMyX1dDRQotLyogWFhYOiBCUyBz b2x1dGlvbi4gIE5lZWQgYW4gSEFWRV9HRVRTRVJWQllOQU1FIGFuZCBhY3R1YWxseQotICog ZG8gc29tZXRoaW5nIGhlcmUsIHRvIHByb3ZpZGUgdGhlIG9idmlvdXMgcHJvdG8gbWFwcGlu Z3MuCi0gKi8KLXN0YXRpYyB2b2lkICpnZXRzZXJ2YnluYW1lKGNvbnN0IGNoYXIgKm5hbWUs IGNvbnN0IGNoYXIgKnByb3RvKQotewotICAgIHJldHVybiBOVUxMOwotfQotI2VuZGlmCi0K IHN0YXRpYyBhcHJfc3RhdHVzX3QgZ2V0X2xvY2FsX2FkZHIoYXByX3NvY2tldF90ICpzb2Nr KQogewogICAgIHNvY2stPmxvY2FsX2FkZHItPnNhbGVuID0gc2l6ZW9mKHNvY2stPmxvY2Fs X2FkZHItPnNhKTsKQEAgLTcwNiw3ICs2OTYsMTEgQEANCiAgICAgICAgIHNvY2thZGRyLT5z YS5zaW4uc2luX3BvcnQgPSBzZS0+c19wb3J0OwogICAgICAgICByZXR1cm4gQVBSX1NVQ0NF U1M7CiAgICAgfQorI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgcmV0dXJuIGVycm5vOworI2Vs c2UKKyAgICByZXR1cm4gYXByX2dldF9uZXRvc19lcnJvcigpOworI2VuZGlmCiB9CiAKICNk ZWZpbmUgVjRNQVBQRURfRVFVQUwoYSxiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXApJbmRleDogbmV0d29ya19pby93aW4zMi9zZW5kcmVjdi5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQotLS0gbmV0d29ya19pby93aW4zMi9zZW5kcmVjdi5jCShyZXZpc2lvbiA1NzQyODQp DQorKysgbmV0d29ya19pby93aW4zMi9zZW5kcmVjdi5jCSh3b3JraW5nIGNvcHkpDQpAQCAt NDEsMjIgKzQxLDUyIEBADQogewogICAgIGFwcl9zc2l6ZV90IHJ2OwogICAgIFdTQUJVRiB3 c2FEYXRhOwotICAgIGludCBsYXN0ZXJyb3I7CiAgICAgRFdPUkQgZHdCeXRlcyA9IDA7Cisg ICAgYXByX3N0YXR1c190IHdzYXJ2OwogCiAgICAgd3NhRGF0YS5sZW4gPSAodV9sb25nKSps ZW47CiAgICAgd3NhRGF0YS5idWYgPSAoY2hhciopIGJ1ZjsKIAogI2lmbmRlZiBfV0lOMzJf V0NFCiAgICAgcnYgPSBXU0FTZW5kKHNvY2stPnNvY2tldGRlcywgJndzYURhdGEsIDEsICZk d0J5dGVzLCAwLCBOVUxMLCBOVUxMKTsKKyNlbGlmIF9XSU4zMl9XQ0UgPiAweDQwMAorICAg IHJ2ID0gV1NBU2VuZChzb2NrLT5zb2NrZXRkZXMsICZ3c2FEYXRhLCAxLCAmZHdCeXRlcywg MCwKKyAgICAgICAgICAgICAgICAgc29jay0+d3Nhb3ZlcmxhcHBlZCwgTlVMTCk7CisgICAg aWYgKHJ2ID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgICB3c2FydiA9IGFwcl9nZXRfbmV0 b3NfZXJyb3IoKTsKKyAgICAgICAgaWYgKHdzYXJ2ID09IEFQUl9GUk9NX09TX0VSUk9SKFdT QV9JT19QRU5ESU5HKSkgeworICAgICAgICAgICAgcnYgPSBXU0FXYWl0Rm9yTXVsdGlwbGVF dmVudHMoMSwgJnNvY2stPndzYW92ZXJsYXBwZWQtPmhFdmVudCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBzb2NrLT50aW1lb3V0X21zID49 IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IHNvY2stPnRpbWVvdXRfbXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6IFdTQV9JTkZJTklURSwgRkFMU0UpOworICAgICAgICAgICAgaWYg KHJ2ID09IFdTQV9XQUlUX0VWRU5UXzApIHsKKyAgICAgICAgICAgICAgICBpZiAoV1NBUmVz ZXRFdmVudChzb2NrLT53c2FvdmVybGFwcGVkLT5oRXZlbnQpKSB7CisgICAgICAgICAgICAg ICAgICAgIERXT1JEIGZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFXU0FH ZXRPdmVybGFwcGVkUmVzdWx0KHNvY2stPnNvY2tldGRlcywKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNvY2stPndzYW92ZXJsYXBwZWQsICZkd0J5dGVzLCBGQUxTRSwgJmZsYWdzKSkg eworICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSBTT0NLRVRfRVJST1I7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgIHJ2ID0gU09DS0VUX0VSUk9SOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgICAgIGFwcl9zZXRfbmV0b3NfZXJyb3IocnYpOworICAgICAgICAgICAgICAgIHJ2ID0g U09DS0VUX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgYXByX3NldF9uZXRvc19lcnJvcih3c2Fydik7CisgICAgICAgIH0K KyAgICB9CiAjZWxzZQogICAgIHJ2ID0gc2VuZChzb2NrLT5zb2NrZXRkZXMsIHdzYURhdGEu YnVmLCB3c2FEYXRhLmxlbiwgMCk7CiAgICAgZHdCeXRlcyA9IHJ2OwogI2VuZGlmCiAgICAg aWYgKHJ2ID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBsYXN0ZXJyb3IgPSBhcHJfZ2V0 X25ldG9zX2Vycm9yKCk7CiAgICAgICAgICpsZW4gPSAwOwotICAgICAgICByZXR1cm4gbGFz dGVycm9yOworICAgICAgICByZXR1cm4gYXByX2dldF9uZXRvc19lcnJvcigpOwogICAgIH0K IAogICAgICpsZW4gPSBkd0J5dGVzOwpAQCAtNzAsMjMgKzEwMCw1MyBAQA0KIHsKICAgICBh cHJfc3NpemVfdCBydjsKICAgICBXU0FCVUYgd3NhRGF0YTsKLSAgICBpbnQgbGFzdGVycm9y OwogICAgIERXT1JEIGR3Qnl0ZXMgPSAwOwogICAgIERXT1JEIGZsYWdzID0gMDsKKyAgICBh cHJfc3RhdHVzX3Qgd3NhcnY7CiAKICAgICB3c2FEYXRhLmxlbiA9ICh1X2xvbmcpKmxlbjsK ICAgICB3c2FEYXRhLmJ1ZiA9IChjaGFyKikgYnVmOwogCiAjaWZuZGVmIF9XSU4zMl9XQ0UK ICAgICBydiA9IFdTQVJlY3Yoc29jay0+c29ja2V0ZGVzLCAmd3NhRGF0YSwgMSwgJmR3Qnl0 ZXMsICZmbGFncywgTlVMTCwgTlVMTCk7CisjZWxpZiBfV0lOMzJfV0NFID4gMHg0MDAKKyAg ICBydiA9IFdTQVJlY3Yoc29jay0+c29ja2V0ZGVzLCAmd3NhRGF0YSwgMSwgJmR3Qnl0ZXMs ICZmbGFncywKKyAgICAgICAgICAgICAgICAgc29jay0+d3Nhb3ZlcmxhcHBlZCwgTlVMTCk7 CisgICAgaWYgKHJ2ID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgICB3c2FydiA9IGFwcl9n ZXRfbmV0b3NfZXJyb3IoKTsKKyAgICAgICAgaWYgKHdzYXJ2ID09IEFQUl9GUk9NX09TX0VS Uk9SKFdTQV9JT19QRU5ESU5HKSkgeworICAgICAgICAgICAgcnYgPSBXU0FXYWl0Rm9yTXVs dGlwbGVFdmVudHMoMSwgJnNvY2stPndzYW92ZXJsYXBwZWQtPmhFdmVudCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBzb2NrLT50aW1lb3V0 X21zID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA/IHNvY2stPnRpbWVvdXRfbXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IFdTQV9JTkZJTklURSwgRkFMU0UpOworICAgICAgICAg ICAgaWYgKHJ2ID09IFdTQV9XQUlUX0VWRU5UXzApIHsKKyAgICAgICAgICAgICAgICBpZiAo V1NBUmVzZXRFdmVudChzb2NrLT53c2FvdmVybGFwcGVkLT5oRXZlbnQpKSB7CisgICAgICAg ICAgICAgICAgICAgIGZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFXU0FH ZXRPdmVybGFwcGVkUmVzdWx0KHNvY2stPnNvY2tldGRlcywKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNvY2stPndzYW92ZXJsYXBwZWQsICZkd0J5dGVzLCBGQUxTRSwgJmZsYWdzKSkg eworICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSBTT0NLRVRfRVJST1I7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgIHJ2ID0gU09DS0VUX0VSUk9SOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgICAgIGFwcl9zZXRfbmV0b3NfZXJyb3IocnYpOworICAgICAgICAgICAgICAgIHJ2ID0g U09DS0VUX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgYXByX3NldF9uZXRvc19lcnJvcih3c2Fydik7CisgICAgICAgIH0K KyAgICB9CiAjZWxzZQogICAgIHJ2ID0gcmVjdihzb2NrLT5zb2NrZXRkZXMsIHdzYURhdGEu YnVmLCB3c2FEYXRhLmxlbiwgMCk7CiAgICAgZHdCeXRlcyA9IHJ2OwogI2VuZGlmCiAgICAg aWYgKHJ2ID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBsYXN0ZXJyb3IgPSBhcHJfZ2V0 X25ldG9zX2Vycm9yKCk7CiAgICAgICAgICpsZW4gPSAwOwotICAgICAgICByZXR1cm4gbGFz dGVycm9yOworICAgICAgICByZXR1cm4gYXByX2dldF9uZXRvc19lcnJvcigpOwogICAgIH0K IAogICAgICpsZW4gPSBkd0J5dGVzOwpAQCAtMTQ1LDYgKzIwNSwzNCBAQA0KICAgICBpZiAo cnYgPT0gU09DS0VUX0VSUk9SKSB7CiAgICAgICAgIHJjID0gYXByX2dldF9uZXRvc19lcnJv cigpOwogICAgIH0KKyNlbGlmIF9XSU4zMl9XQ0UgPiAweDQwMAorICAgIHJ2ID0gV1NBU2Vu ZChzb2NrLT5zb2NrZXRkZXMsIHBXc2FCdWYsIG52ZWMsICZkd0J5dGVzLCAwLAorICAgICAg ICAgICAgICAgICBzb2NrLT53c2FvdmVybGFwcGVkLCBOVUxMKTsKKyAgICByYyA9IHJ2Owor ICAgIGlmIChydiA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgICAgcmMgPSBhcHJfZ2V0X25l dG9zX2Vycm9yKCk7CisgICAgICAgIGlmIChyYyA9PSBBUFJfRlJPTV9PU19FUlJPUihXU0Ff SU9fUEVORElORykpIHsKKyAgICAgICAgICAgIHJ2ID0gV1NBV2FpdEZvck11bHRpcGxlRXZl bnRzKDEsICZzb2NrLT53c2FvdmVybGFwcGVkLT5oRXZlbnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgc29jay0+dGltZW91dF9tcyA+PSAw CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBz b2NrLT50aW1lb3V0X21zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBXU0FfSU5GSU5JVEUsIEZBTFNFKTsKKyAgICAgICAgICAgIGlmIChy diA9PSBXU0FfV0FJVF9FVkVOVF8wKSB7CisgICAgICAgICAgICAgICAgaWYgKFdTQVJlc2V0 RXZlbnQoc29jay0+d3Nhb3ZlcmxhcHBlZC0+aEV2ZW50KSkgeworICAgICAgICAgICAgICAg ICAgICBEV09SRCBmbGFncyA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICghV1NBR2V0 T3ZlcmxhcHBlZFJlc3VsdChzb2NrLT5zb2NrZXRkZXMsCisgICAgICAgICAgICAgICAgICAg ICAgICBzb2NrLT53c2FvdmVybGFwcGVkLCAmZHdCeXRlcywgRkFMU0UsICZmbGFncykpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gYXByX2dldF9uZXRvc19lcnJvcigpOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByYyA9IGFwcl9nZXRfbmV0b3NfZXJy b3IoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl bHNlIHsKKyAgICAgICAgICAgICAgICByYyA9IHJ2OworICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgfQogI2Vsc2UKICAgICBmb3IgKGkgPSAwOyBpIDwgbnZlYzsgaSsrKSB7CiAg ICAgICAgIHJ2ID0gc2VuZChzb2NrLT5zb2NrZXRkZXMsIHBXc2FCdWZbaV0uYnVmLCBwV3Nh QnVmW2ldLmxlbiwgMCk7CkBAIC0xNjksMTAgKzI1Nyw1MiBAQA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX3NpemVfdCAqbGVuKQogewogICAg IGFwcl9zc2l6ZV90IHJ2OworI2lmIF9XSU4zMl9XQ0UgPiAweDQwMAorICAgIGFwcl9zdGF0 dXNfdCB3c2FydjsKKyAgICBXU0FCVUYgd3NhRGF0YTsKKyAgICBEV09SRCBkd0J5dGVzID0g MDsKIAorICAgIHdzYURhdGEubGVuID0gKHVfbG9uZykqbGVuOworICAgIHdzYURhdGEuYnVm ID0gKGNoYXIqKSBidWY7CisKKyAgICBydiA9IFdTQVNlbmRUbyhzb2NrLT5zb2NrZXRkZXMs ICZ3c2FEYXRhLCAxLCAmZHdCeXRlcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgKGNv bnN0IHN0cnVjdCBzb2NrYWRkciopJndoZXJlLT5zYSwgd2hlcmUtPnNhbGVuLAorICAgICAg ICAgICAgICAgICAgIHNvY2stPndzYW92ZXJsYXBwZWQsIE5VTEwpOworICAgIGlmIChydiA9 PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgICAgd3NhcnYgPSBhcHJfZ2V0X25ldG9zX2Vycm9y KCk7CisgICAgICAgIGlmICh3c2FydiA9PSBBUFJfRlJPTV9PU19FUlJPUihXU0FfSU9fUEVO RElORykpIHsKKyAgICAgICAgICAgIHJ2ID0gV1NBV2FpdEZvck11bHRpcGxlRXZlbnRzKDEs ICZzb2NrLT53c2FvdmVybGFwcGVkLT5oRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGQUxTRSwgc29jay0+dGltZW91dF9tcyA+PSAwCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzb2NrLT50 aW1lb3V0X21zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBXU0FfSU5GSU5JVEUsIEZBTFNFKTsKKyAgICAgICAgICAgIGlmIChydiA9PSBX U0FfV0FJVF9FVkVOVF8wKSB7CisgICAgICAgICAgICAgICAgaWYgKFdTQVJlc2V0RXZlbnQo c29jay0+d3Nhb3ZlcmxhcHBlZC0+aEV2ZW50KSkgeworICAgICAgICAgICAgICAgICAgICBp ZiAoV1NBR2V0T3ZlcmxhcHBlZFJlc3VsdChzb2NrLT5zb2NrZXRkZXMsCisgICAgICAgICAg ICAgICAgICAgICAgICBzb2NrLT53c2FvdmVybGFwcGVkLCAmZHdCeXRlcywgRkFMU0UsICZm bGFncykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2ID0gZHdCeXRlczsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJ2ID0gU09DS0VUX0VSUk9SOworICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg ICAgICAgICAgICAgICBydiA9IFNPQ0tFVF9FUlJPUjsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhcHJf c2V0X25ldG9zX2Vycm9yKHJ2KTsKKyAgICAgICAgICAgICAgICBydiA9IFNPQ0tFVF9FUlJP UjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg ICAgIGFwcl9zZXRfbmV0b3NfZXJyb3Iod3NhcnYpOworICAgICAgICB9CisgICAgfQorI2Vs c2UKICAgICBydiA9IHNlbmR0byhzb2NrLT5zb2NrZXRkZXMsIGJ1ZiwgKGludCkqbGVuLCBm bGFncywgCiAgICAgICAgICAgICAgICAgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciopJndoZXJl LT5zYSwgCiAgICAgICAgICAgICAgICAgd2hlcmUtPnNhbGVuKTsKKyNlbmRpZgogICAgIGlm IChydiA9PSBTT0NLRVRfRVJST1IpIHsKICAgICAgICAgKmxlbiA9IDA7CiAgICAgICAgIHJl dHVybiBhcHJfZ2V0X25ldG9zX2Vycm9yKCk7CkBAIC0xODksOSArMzE5LDU0IEBADQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1Ziwg YXByX3NpemVfdCAqbGVuKQogewogICAgIGFwcl9zc2l6ZV90IHJ2OworI2lmIF9XSU4zMl9X Q0UgPiAweDQwMAorICAgIGFwcl9zdGF0dXNfdCB3c2FydjsKKyAgICBXU0FCVUYgd3NhRGF0 YTsKKyAgICBEV09SRCBkd0J5dGVzID0gMDsKIAorICAgIHdzYURhdGEubGVuID0gKHVfbG9u ZykqbGVuOworICAgIHdzYURhdGEuYnVmID0gKGNoYXIqKSBidWY7CisKKyAgICBydiA9IFdT QVJlY3ZGcm9tKHNvY2stPnNvY2tldGRlcywgJndzYURhdGEsIDEsICZkd0J5dGVzLCAmZmxh Z3MsCisgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyKikmZnJvbS0+c2Es ICZmcm9tLT5zYWxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHNvY2stPndzYW92ZXJsYXBw ZWQsIE5VTEwpOworICAgIGlmIChydiA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgICAgd3Nh cnYgPSBhcHJfZ2V0X25ldG9zX2Vycm9yKCk7CisgICAgICAgIGlmICh3c2FydiA9PSBBUFJf RlJPTV9PU19FUlJPUihXU0FfSU9fUEVORElORykpIHsKKyAgICAgICAgICAgIHJ2ID0gV1NB V2FpdEZvck11bHRpcGxlRXZlbnRzKDEsICZzb2NrLT53c2FvdmVybGFwcGVkLT5oRXZlbnQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgc29j ay0+dGltZW91dF9tcyA+PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPyBzb2NrLT50aW1lb3V0X21zCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXU0FfSU5GSU5JVEUsIEZBTFNFKTsK KyAgICAgICAgICAgIGlmIChydiA9PSBXU0FfV0FJVF9FVkVOVF8wKSB7CisgICAgICAgICAg ICAgICAgaWYgKFdTQVJlc2V0RXZlbnQoc29jay0+d3Nhb3ZlcmxhcHBlZC0+aEV2ZW50KSkg eworICAgICAgICAgICAgICAgICAgICBpZiAoV1NBR2V0T3ZlcmxhcHBlZFJlc3VsdChzb2Nr LT5zb2NrZXRkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLT53c2FvdmVybGFw cGVkLCAmZHdCeXRlcywgRkFMU0UsICZmbGFncykpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJ2ID0gZHdCeXRlczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2ID0gU09DS0VUX0VS Uk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBydiA9IFNPQ0tFVF9FUlJP UjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl IHsKKyAgICAgICAgICAgICAgICBhcHJfc2V0X25ldG9zX2Vycm9yKHJ2KTsKKyAgICAgICAg ICAgICAgICBydiA9IFNPQ0tFVF9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFwcl9zZXRfbmV0b3NfZXJyb3Iod3NhcnYp OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBydiA9IGR3Qnl0ZXM7 CisgICAgfQorI2Vsc2UKICAgICBydiA9IHJlY3Zmcm9tKHNvY2stPnNvY2tldGRlcywgYnVm LCAoaW50KSpsZW4sIGZsYWdzLCAKICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2Fk ZHIqKSZmcm9tLT5zYSwgJmZyb20tPnNhbGVuKTsKKyNlbmRpZgogICAgIGlmIChydiA9PSBT T0NLRVRfRVJST1IpIHsKICAgICAgICAgKCpsZW4pID0gMDsKICAgICAgICAgcmV0dXJuIGFw cl9nZXRfbmV0b3NfZXJyb3IoKTsKSW5kZXg6IG5ldHdvcmtfaW8vd2luMzIvc29ja2V0cy5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gbmV0d29ya19pby93aW4zMi9zb2NrZXRzLmMJKHJldmlz aW9uIDU3NDI4NCkNCisrKyBuZXR3b3JrX2lvL3dpbjMyL3NvY2tldHMuYwkod29ya2luZyBj b3B5KQ0KQEAgLTQyLDYgKzQyLDEyIEBADQogICAgICAgICB0aGVzb2NrZXQtPm92ZXJsYXBw ZWQgPSBOVUxMOwogICAgIH0KICNlbmRpZgorI2lmIF9XSU4zMl9XQ0UgPiAweDQwMAorICAg IGlmICh0aGVzb2NrZXQtPndzYW92ZXJsYXBwZWQpIHsKKyAgICAgICAgV1NBQ2xvc2VFdmVu dCh0aGVzb2NrZXQtPndzYW92ZXJsYXBwZWQtPmhFdmVudCk7CisgICAgICAgIHRoZXNvY2tl dC0+d3Nhb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIEFQ Ul9TVUNDRVNTOwogfQogCkBAIC05MiwxMSArOTgsMjMgQEANCiAgICAgfQogCiAgICAgYWxs b2Nfc29ja2V0KG5ldywgY29udCk7CisjaWYgX1dJTjMyX1dDRSA+IDB4NDAwCisgICAgKCpu ZXcpLT53c2FvdmVybGFwcGVkID0gKFdTQU9WRVJMQVBQRUQgKilhcHJfcGNhbGxvYygoKm5l dyktPnBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoV1NBT1ZFUkxBUFBFRCkpOworICAgICgqbmV3KS0+d3Nh b3ZlcmxhcHBlZC0+aEV2ZW50ID0gV1NBQ3JlYXRlRXZlbnQoKTsKKyAgICBpZiAoKCpuZXcp LT53c2FvdmVybGFwcGVkLT5oRXZlbnQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gYXBy X2dldF9uZXRvc19lcnJvcigpOworICAgIH0KIAorICAgIC8qIE5lZWQgdG8gdXNlIG92ZXJs YXBwZWQgc29ja2V0cyB0byBzdXBwb3J0IGJsb2NraW5nIHdpdGggdGltZW91dC4gKi8KKyAg ICAoKm5ldyktPnNvY2tldGRlcyA9IFdTQVNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvY29s LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFdTQV9GTEFH X09WRVJMQVBQRUQpOworI2Vsc2UKICAgICAvKiBGb3IgcmlnaHQgbm93LCB3ZSBhcmUgbm90 IHVzaW5nIHNvY2tldCBncm91cHMuICBXZSBtYXkgbGF0ZXIuCiAgICAgICogTm8gZmxhZ3Mg dG8gdXNlIHdoZW4gY3JlYXRpbmcgYSBzb2NrZXQsIHNvIHVzZSAwIGZvciB0aGF0IHBhcmFt ZXRlciBhcyB3ZWxsLgogICAgICAqLwogICAgICgqbmV3KS0+c29ja2V0ZGVzID0gc29ja2V0 KGZhbWlseSwgdHlwZSwgcHJvdG9jb2wpOworI2VuZGlmCiAjaWYgQVBSX0hBVkVfSVBWNgog ICAgIGlmICgoKm5ldyktPnNvY2tldGRlcyA9PSBJTlZBTElEX1NPQ0tFVCAmJiBkb3duZ3Jh ZGUpIHsKICAgICAgICAgZmFtaWx5ID0gQUZfSU5FVDsKQEAgLTE3NywxMiArMTk1LDEwIEBA DQogICAgICAgICAgICAgcmV0dXJuIEFQUl9CQURBUkc7CiAgICAgfQogI2VuZGlmCi0gICAg aWYgKHNodXRkb3duKHRoZXNvY2tldC0+c29ja2V0ZGVzLCB3aW5ob3cpID09IDApIHsKLSAg ICAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAo c2h1dGRvd24odGhlc29ja2V0LT5zb2NrZXRkZXMsIHdpbmhvdykgIT0gMCkgewogICAgICAg ICByZXR1cm4gYXByX2dldF9uZXRvc19lcnJvcigpOwogICAgIH0KKyAgICByZXR1cm4gQVBS X1NVQ0NFU1M7CiB9CiAKIEFQUl9ERUNMQVJFKGFwcl9zdGF0dXNfdCkgYXByX3NvY2tldF9j bG9zZShhcHJfc29ja2V0X3QgKnRoZXNvY2tldCkKQEAgLTIzMCwxMiArMjQ2LDI0IEBADQog CiAgICAgLyogRG9uJ3QgYWxsb2NhdGUgdGhlIG1lbW9yeSB1bnRpbCBhZnRlciB3ZSBjYWxs IGFjY2VwdC4gVGhpcyBhbGxvd3MKICAgICAgICB1cyB0byB3b3JrIHdpdGggbm9uYmxvY2tp bmcgc29ja2V0cy4gKi8KKyNpZiBfV0lOMzJfV0NFID4gMHg0MDAKKyAgICBzID0gV1NBQWNj ZXB0KHNvY2stPnNvY2tldGRlcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzYSwgJnNhbGVuLCBO VUxMLCAwKTsKKyNlbHNlCiAgICAgcyA9IGFjY2VwdChzb2NrLT5zb2NrZXRkZXMsIChzdHJ1 Y3Qgc29ja2FkZHIgKikmc2EsICZzYWxlbik7CisjZW5kaWYKICAgICBpZiAocyA9PSBJTlZB TElEX1NPQ0tFVCkgewogICAgICAgICByZXR1cm4gYXByX2dldF9uZXRvc19lcnJvcigpOwog ICAgIH0KIAogICAgIGFsbG9jX3NvY2tldChuZXcsIHApOworI2lmIF9XSU4zMl9XQ0UgPiAw eDQwMAorICAgICgqbmV3KS0+d3Nhb3ZlcmxhcHBlZCA9IChXU0FPVkVSTEFQUEVEICopYXBy X3BjYWxsb2MoKCpuZXcpLT5wb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdTQU9WRVJMQVBQRUQpKTsKKyAg ICAoKm5ldyktPndzYW92ZXJsYXBwZWQtPmhFdmVudCA9IFdTQUNyZWF0ZUV2ZW50KCk7Cisg ICAgaWYgKCgqbmV3KS0+d3Nhb3ZlcmxhcHBlZC0+aEV2ZW50ID09IE5VTEwpIHsKKyAgICAg ICAgcmV0dXJuIGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKKyAgICB9CisjZW5kaWYKICAgICBz ZXRfc29ja2V0X3ZhcnMoKm5ldywgc29jay0+bG9jYWxfYWRkci0+c2Euc2luLnNpbl9mYW1p bHksIFNPQ0tfU1RSRUFNLCAKICAgICAgICAgICAgICAgICAgICAgc29jay0+cHJvdG9jb2wp OwogCkBAIC0zMDYsOSArMzM0LDEzIEBADQogICAgIGlmICgoc29jay0+c29ja2V0ZGVzID09 IElOVkFMSURfU09DS0VUKSB8fCAoIXNvY2stPmxvY2FsX2FkZHIpKSB7CiAgICAgICAgIHJl dHVybiBBUFJfRU5PVFNPQ0s7CiAgICAgfQotCisjaWYgX1dJTjMyX1dDRSA+IDB4NDAwCisg ICAgaWYgKFdTQUNvbm5lY3Qoc29jay0+c29ja2V0ZGVzLCAoY29uc3Qgc3RydWN0IHNvY2th ZGRyICopJnNhLT5zYS5zaW4sCisgICAgICAgICAgICAgICAgICAgc2EtPnNhbGVuLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMKSA9PSBTT0NLRVRfRVJST1IpIHsKKyNlbHNlCiAgICAgaWYg KGNvbm5lY3Qoc29jay0+c29ja2V0ZGVzLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJnNh LT5zYS5zaW4sCiAgICAgICAgICAgICAgICAgc2EtPnNhbGVuKSA9PSBTT0NLRVRfRVJST1Ip IHsKKyNlbmRpZgogICAgICAgICBpbnQgcmM7CiAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2 LCAqdHZwdHI7CiAgICAgICAgIGZkX3NldCB3ZmRzZXQsIGVmZHNldDsKSW5kZXg6IG5ldHdv cmtfaW8vd2luMzIvc29ja29wdC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbmV0d29ya19pby93 aW4zMi9zb2Nrb3B0LmMJKHJldmlzaW9uIDU3NDI4NCkNCisrKyBuZXR3b3JrX2lvL3dpbjMy L3NvY2tvcHQuYwkod29ya2luZyBjb3B5KQ0KQEAgLTI0LDcgKzI0LDEyIEBADQogewogICAg IHVfbG9uZyB6ZXJvID0gMDsKIAorI2lmIF9XSU4zMl9XQ0UgPiAweDQwMAorICAgIGlmIChX U0FJb2N0bChzZCwgRklPTkJJTywgJnplcm8sIHNpemVvZih6ZXJvKSwKKyAgICAgICAgICAg ICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgPT0gU09DS0VUX0VSUk9SKSB7Cisj ZWxzZQogICAgIGlmIChpb2N0bHNvY2tldChzZCwgRklPTkJJTywgJnplcm8pID09IFNPQ0tF VF9FUlJPUikgeworI2VuZGlmCiAgICAgICAgIHJldHVybiBhcHJfZ2V0X25ldG9zX2Vycm9y KCk7CiAgICAgfQogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKQEAgLTM0LDcgKzM5LDEyIEBA DQogewogICAgIHVfbG9uZyBvbmUgPSAxOwogCisjaWYgX1dJTjMyX1dDRSA+IDB4NDAwCisg ICAgaWYgKFdTQUlvY3RsKHNkLCBGSU9OQklPLCAmb25lLCBzaXplb2Yob25lKSwKKyAgICAg ICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgPT0gU09DS0VUX0VSUk9S KSB7CisjZWxzZQogICAgIGlmIChpb2N0bHNvY2tldChzZCwgRklPTkJJTywgJm9uZSkgPT0g U09DS0VUX0VSUk9SKSB7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGFwcl9nZXRfbmV0b3Nf ZXJyb3IoKTsKICAgICB9CiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwpAQCAtNjMsMTIgKzcz LDE0IEBADQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBXaW4zMiB0aW1lb3V0cyBhcmUg aW4gbXNlYywgcmVwcmVzZW50ZWQgYXMgaW50ICovCiAgICAgICAgICAgICBzb2NrLT50aW1l b3V0X21zID0gKGludClhcHJfdGltZV9hc19tc2VjKHQpOworI2lmbmRlZiBfV0lOMzJfV0NF CiAgICAgICAgICAgICBzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgU09MX1NPQ0tFVCwg U09fUkNWVElNRU8sIAogICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSAmc29jay0+ dGltZW91dF9tcywgCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzb2NrLT50aW1l b3V0X21zKSk7CiAgICAgICAgICAgICBzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgU09M X1NPQ0tFVCwgU09fU05EVElNRU8sIAogICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAq KSAmc29jay0+dGltZW91dF9tcywgCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz b2NrLT50aW1lb3V0X21zKSk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICBlbHNl IGlmICh0IDwgMCkgewpAQCAtNzYsMTAgKzg4LDEyIEBADQogICAgICAgICAvKiBTZXQgdGhl IHNvY2tldCB0byBibG9ja2luZyB3aXRoIGluZmluaXRlIHRpbWVvdXRzICovCiAgICAgICAg IGlmICgoc3RhdCA9IHNvYmxvY2soc29jay0+c29ja2V0ZGVzKSkgIT0gQVBSX1NVQ0NFU1Mp CiAgICAgICAgICAgICByZXR1cm4gc3RhdDsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAg ICBzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgU09MX1NPQ0tFVCwgU09fUkNWVElNRU8s IAogICAgICAgICAgICAgICAgICAgIChjaGFyICopICZ6ZXJvLCBzaXplb2YoemVybykpOwog ICAgICAgICBzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgU09MX1NPQ0tFVCwgU09fU05E VElNRU8sIAogICAgICAgICAgICAgICAgICAgIChjaGFyICopICZ6ZXJvLCBzaXplb2YoemVy bykpOworI2VuZGlmCiAgICAgfQogICAgIHNvY2stPnRpbWVvdXQgPSB0OwogICAgIHJldHVy biBBUFJfU1VDQ0VTUzsKSW5kZXg6IHNobWVtL3dpbjMyL3NobS5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQotLS0gc2htZW0vd2luMzIvc2htLmMJKHJldmlzaW9uIDU3NDI4NCkNCisrKyBzaG1lbS93 aW4zMi9zaG0uYwkod29ya2luZyBjb3B5KQ0KQEAgLTg2LDEyICs4NiwxMSBAQA0KIAogICAg IGlmICghZmlsZSkgewogICAgICAgICAvKiBEbyBBbm9ueW1vdXMsIHdoaWNoIG11c3QgYmUg cGFzc2VkIGFzIGEgZHVwbGljYXRlZCBoYW5kbGUgKi8KLSNpZm5kZWYgX1dJTjMyX1dDRQog ICAgICAgICBoRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotI2VuZGlmCiAgICAgICAg IG1hcGtleSA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgeworI2lmbmRlZiBfV0lOMzJfV0NF CiAgICAgICAgIC8qIERvIGZpbGUgYmFja2VkLCB3aGljaCBpcyBub3QgYW4gaW5oZXJpdGVk IGhhbmRsZSAKICAgICAgICAgICogV2hpbGUgd2UgY291bGQgb3BlbiBBUFJfRVhDTCwgaXQg ZG9lc24ndCBzZWVtIHRoYXQgVW5peAogICAgICAgICAgKiBldmVyIGRpZC4gIElnbm9yZSB0 aGF0IGVycm9yIGhlcmUsIGJ1dCBmYWlsIGxhdGVyIHdoZW4KQEAgLTEwNSw3ICsxMDQsMjQg QEANCiAgICAgICAgICAgICByZXR1cm4gcnY7CiAgICAgICAgIH0KICAgICAgICAgcnYgPSBh cHJfZmlsZV90cnVuYyhmLCBzaXplKTsKKyNlbHNlCisgICAgICAgIGFwcl93Y2hhcl90IHdm bmFtZVtBUFJfUEFUSF9NQVhdOwogCisgICAgICAgIHJ2ID0gdXRmOF90b191bmljb2RlX3Bh dGgod2ZuYW1lLCBBUFJfUEFUSF9NQVgsIGZpbGUpOworICAgICAgICBpZiAocnYgIT0gQVBS X1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHJldHVybiBydjsKKyAgICAgICAgfQorICAgICAg ICAvKiBOZWVkIHRvIHVzZSBDcmVhdGVGaWxlRm9yTWFwcGluZygpIG9uIENFIHRvIGVuc3Vy ZSBNTWFwIGZpbGVzCisgICAgICAgICAqIHdvcmsuIENFIGlnbm9yZXMgdGhlIHNoYXJlbW9k ZSBwYXJhbWV0ZXIuIEluc3RlYWQsIGl0IGdyYW50cworICAgICAgICAgKiB0aGUgc2FtZSBz aGFyZSBtb2RlIGFzIHRoZSBkZXNpcmVkIGFjY2VzcyAob3BlbikgZmxhZ3MuCisgICAgICAg ICAqLworICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVGb3JNYXBwaW5nVyh3Zm5hbWUsIEdF TkVSSUNfUkVBRAorICAgICAgICAgICAgfCBHRU5FUklDX1dSSVRFLCAwLCBOVUxMLCBPUEVO X0FMV0FZUywgMCwgTlVMTCk7CisgICAgICAgIGlmICghaEZpbGUgfHwgaEZpbGUgPT0gSU5W QUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBhcHJfZ2V0X29zX2Vy cm9yKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8qIHJlc19uYW1lX2Zyb21f ZmlsZW5hbWUgdHVybnMgZmlsZSBpbnRvIGEgcHNldWRvLW5hbWUKICAgICAgICAgICogd2l0 aG91dCBzbGFzaGVzIG9yIGJhY2tzbGFzaGVzLCBhbmQgcHJlcGVuZHMgdGhlIFxnbG9iYWwK ICAgICAgICAgICogcHJlZml4IG9uIFdpbjJLIGFuZCBsYXRlcgpAQCAtMTI5LDkgKzE0NSwx MSBAQA0KICNlbmRpZgogICAgIGVyciA9IGFwcl9nZXRfb3NfZXJyb3IoKTsKIAorI2lmbmRl ZiBfV0lOMzJfV0NFCiAgICAgaWYgKGZpbGUpIHsKICAgICAgICAgYXByX2ZpbGVfY2xvc2Uo Zik7CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAoaE1hcCAmJiBBUFJfU1RBVFVTX0lTX0VF WElTVChlcnIpKSB7CiAgICAgICAgIENsb3NlSGFuZGxlKGhNYXApOwpJbmRleDogc3RyaW5n cy9hcHJfc3RyaW5ncy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gc3RyaW5ncy9hcHJfc3RyaW5n cy5jCShyZXZpc2lvbiA1NzQyODQpDQorKysgc3RyaW5ncy9hcHJfc3RyaW5ncy5jCSh3b3Jr aW5nIGNvcHkpDQpAQCAtMjM5LDcgKzIzOSwxMyBAQA0KIHsKICAgICBlcnJubyA9IDA7CiAg ICAgKm9mZnNldCA9IEFQUl9PRkZfVF9TVFJGTihucHRyLCBlbmRwdHIsIGJhc2UpOworI2lm bmRlZiBfV0lOMzJfV0NFCiAgICAgcmV0dXJuIEFQUl9GUk9NX09TX0VSUk9SKGVycm5vKTsK KyNlbHNlCisgICAgaWYgKCpvZmZzZXQgPT0gTE9OR19NQVggfHwgKm9mZnNldCA9PSBMT05H X01JTikKKyAgICAgICAgcmV0dXJuIEFQUl9GUk9NX09TX0VSUk9SKEVSUk9SX0FSSVRITUVU SUNfT1ZFUkZMT1cpOworICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKKyNlbmRpZgogfQogCiBB UFJfREVDTEFSRShhcHJfaW50NjRfdCkgYXByX3N0cnRvaTY0KGNvbnN0IGNoYXIgKm5wdHIs IGNoYXIgKiplbmRwdHIsIGludCBiYXNlKQpJbmRleDogdGhyZWFkcHJvYy93aW4zMi9wcm9j LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSB0aHJlYWRwcm9jL3dpbjMyL3Byb2MuYwkocmV2aXNp b24gNTc0Mjg0KQ0KKysrIHRocmVhZHByb2Mvd2luMzIvcHJvYy5jCSh3b3JraW5nIGNvcHkp DQpAQCAtNjEzLDkgKzYxMywxMiBAQA0KICAgICAgICAgICAgICAqIGNvbXBsZXRlIGZpbGUg cGF0aC4gIFRoYXQgaXM7ICJjOlxiaW5cYXBydGVzdC5leGUiCiAgICAgICAgICAgICAgKiB3 b3VsZCBzdWNjZWVkLCBidXQgImM6XGJpblxhcHJ0ZXN0IiBvciAiYXBydGVzdC5leGUiCiAg ICAgICAgICAgICAgKiBjYW4gZmFpbC4KKyAgICAgICAgICAgICAqIEFwcGFyZW50bHksIENF IDUgYWxyZWFkeSBwYXNzZXMgdGhlIHByb2dyYW0gbmFtZSBhcyB0aGUgZmlyc3QKKyAgICAg ICAgICAgICAqIGFyZ3VtZW50LgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjbWRs aW5lID0gYXByX3BzdHJjYXQocG9vbCwgYXJndjAsIGNtZGxpbmUsIE5VTEwpOwotCisgICAg ICAgICAgICBpZiAoYXByX29zX2xldmVsIDwgQVBSX1dJTl9DRV81KSB7CisgICAgICAgICAg ICAgICAgY21kbGluZSA9IGFwcl9wc3RyY2F0KHBvb2wsIGFyZ3YwLCBjbWRsaW5lLCBOVUxM KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRyLT5jbWR0eXBlID09IEFQ Ul9QUk9HUkFNX1BBVEgpIHsKICAgICAgICAgICAgICAgICBwcm9nbmFtZSA9IE5VTEw7CiAg ICAgICAgICAgICB9CkBAIC02NDcsNyArNjUwLDggQEANCiAgICAgICAgIHsKICAgICAgICAg ICAgIGFwcl93Y2hhcl90ICpwTmV4dDsKICAgICAgICAgICAgIHBFbnZCbG9jayA9IChjaGFy ICopYXByX3BhbGxvYyhwb29sLCBpRW52QmxvY2tMZW4gKiAyKTsKLSAgICAgICAgICAgIGR3 Q3JlYXRpb25GbGFncyB8PSBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVDsKKyAgICAgICAg ICAgIGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkKKyAgICAgICAgICAgICAgICBk d0NyZWF0aW9uRmxhZ3MgfD0gQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1FTlQ7CiAKICAgICAg ICAgICAgIGkgPSAwOwogICAgICAgICAgICAgcE5leHQgPSAoYXByX3djaGFyX3QqKXBFbnZC bG9jazsKSW5kZXg6IHRocmVhZHByb2Mvd2luMzIvdGhyZWFkLmMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSB0aHJlYWRwcm9jL3dpbjMyL3RocmVhZC5jCShyZXZpc2lvbiA1NzQyODQpDQorKysg dGhyZWFkcHJvYy93aW4zMi90aHJlYWQuYwkod29ya2luZyBjb3B5KQ0KQEAgLTExNCwxMCAr MTE0LDEyIEBADQogICAgICAgICByZXR1cm4gQVBSX0ZST01fT1NfRVJST1IoX2Rvc2Vycm5v KTsKICAgICB9CiAjZWxzZQotICAgaWYgKChoYW5kbGUgPSBDcmVhdGVUaHJlYWQoTlVMTCwK KyAgICBpZiAoKGhhbmRsZSA9IENyZWF0ZVRocmVhZChOVUxMLAogICAgICAgICAgICAgICAg ICAgICAgICAgYXR0ciAmJiBhdHRyLT5zdGFja3NpemUgPiAwID8gYXR0ci0+c3RhY2tzaXpl IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQgKEFQUl9USFJF QURfRlVOQyAqKSh2b2lkICopKWR1bW15X3dvcmtlciwKLSAgICAgICAgICAgICAgICAgICAg ICAgICgqbmV3KSwgMCwgJnRlbXApKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAoKm5ldyksIGF0dHIgJiYgYXR0ci0+c3RhY2tzaXplID4gMAorICAgICAgICAgICAgICAg ICAgICAgICAgPyBTVEFDS19TSVpFX1BBUkFNX0lTX0FfUkVTRVJWQVRJT04gOiAwLAorICAg ICAgICAgICAgICAgICAgICAgICAgJnRlbXApKSA9PSAwKSB7CiAgICAgICAgIHJldHVybiBh cHJfZ2V0X29zX2Vycm9yKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiB0aW1lL3dpbjMyL3Rp bWUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRpbWUvd2luMzIvdGltZS5jCShyZXZpc2lvbiA1 NzQyODQpDQorKysgdGltZS93aW4zMi90aW1lLmMJKHdvcmtpbmcgY29weSkNCkBAIC05MSw5 ICs5MSw3IEBADQogI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgR2V0U3lzdGVtVGltZUFzRmls ZVRpbWUoJnRpbWUpOwogI2Vsc2UKLSAgICBTWVNURU1USU1FIHN0OwotICAgIEdldFN5c3Rl bVRpbWUoJnN0KTsKLSAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3QsICZ0aW1lKTsKKyAg ICBHZXRDdXJyZW50RlQoJnRpbWUpOwogI2VuZGlmCiAgICAgRmlsZVRpbWVUb0FwclRpbWUo JmFwcnRpbWUsICZ0aW1lKTsKICAgICByZXR1cm4gYXBydGltZTsgCg== --------------060703010405040504030806--