From dev-return-19532-apmail-apr-dev-archive=apr.apache.org@apr.apache.org Thu Nov 29 19:11:56 2007 Return-Path: Delivered-To: apmail-apr-dev-archive@www.apache.org Received: (qmail 4993 invoked from network); 29 Nov 2007 19:11:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 29 Nov 2007 19:11:56 -0000 Received: (qmail 60095 invoked by uid 500); 29 Nov 2007 19:11:43 -0000 Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 59728 invoked by uid 500); 29 Nov 2007 19:11:42 -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 59717 invoked by uid 99); 29 Nov 2007 19:11:42 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 29 Nov 2007 11:11:42 -0800 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [64.224.219.79] (HELO mail5.atl.registeredsite.com) (64.224.219.79) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 29 Nov 2007 19:11:39 +0000 Received: from dataq.com (r37-58-dsl.sea.lightrealm.net [216.122.58.37]) by mail5.atl.registeredsite.com (8.12.11.20060308/8.12.11) with ESMTP id lATJBEoe021242 for ; Thu, 29 Nov 2007 14:11:14 -0500 Received: from [192.168.0.9] (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 lATJBDb54165 for ; Thu, 29 Nov 2007 19:11:14 GMT (envelope-from ipopescu@dataq.com) Message-ID: <474F0ECC.8050602@dataq.com> Date: Thu, 29 Nov 2007 14:11:08 -0500 From: Ioan Popescu User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: APR-Dev Subject: [PATCH] WinCE X-Enigmail-Version: 0.95.5 Content-Type: multipart/mixed; boundary="------------060704020209050202050507" X-Virus-Checked: Checked by ClamAV on apache.org This is a multi-part message in MIME format. --------------060704020209050202050507 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Is there any chance someone can review and commit these patches for APR to have better support on WinCE? They're against trunk. It's basically the same set as before, but only of the bare libraries. No tests, makefiles, etc. Also, I didn't change the network_io to use WSA (like last time) because I haven't spent enough time to get it working. I needed the following "system" defines to compile: _WINDOWS, WIN32, UNDER_CE, WINCE, ARM, _ARM_, _WIN32_WCE=0x500, UNICODE, _UNICODE the following linker flags: /subsystem:windowsce,5.00 /machine:thumb /nodefaultlib:oldnames.lib and linked against the following system libraries: coredll.lib corelibc.lib I have the VS2005 project files and other makefiles that can be dropped in to get a clean compile. I can send those to anyone requesting them, since the mailing list rejects them. Ioan --------------060704020209050202050507 Content-Type: text/plain; name="libaprutil-trunk-ce.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libaprutil-trunk-ce.patch" SW5kZXg6IGluY2x1ZGUvYXByX2xkYXAuaHcNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBpbmNsdWRl L2Fwcl9sZGFwLmh3CShyZXZpc2lvbiA1OTkxNDApDQorKysgaW5jbHVkZS9hcHJfbGRhcC5o dwkod29ya2luZyBjb3B5KQ0KQEAgLTYzLDEwICs2MywxOSBAQA0KIC8qCiAgKiBJbmNsdWRl IHRoZSBzdGFuZGFyZCBMREFQIGhlYWRlciBmaWxlcy4KICAqLwotCisjaWZuZGVmIF9XSU4z Ml9XQ0UKICNpbmNsdWRlIDx3aW5sZGFwLmg+CisjZWxzZQorLyogQ0UgaXMgVW5pY29kZSBi eSBkZWZhdWx0LCBidXQgTERBUCBoYXMgQVNDSUkgZnVuY3Rpb25zLCBpbmNsdWRlIHRoZQor ICogbm9uLVVuaWNvZGUgdmVyc2lvbiBvZiB0aGUgTERBUCBoZWFkZXIuCisgKi8KKyN1bmRl ZiBVTklDT0RFCisjdW5kZWYgX1VOSUNPREUKKyNpbmNsdWRlIDx3aW5sZGFwLmg+CisjZGVm aW5lIFVOSUNPREUKKyNkZWZpbmUgX1VOSUNPREUKKyNlbmRpZgogCi0KIC8qCiAgKiBEZXRl Y3RlZCBzdGFuZGFyZCBmdW5jdGlvbnMKICAqLwpJbmRleDogaW5jbHVkZS9wcml2YXRlL2Fw dV9jb25maWcuaHcNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBpbmNsdWRlL3ByaXZhdGUvYXB1X2Nv bmZpZy5odwkocmV2aXNpb24gNTk5MTQwKQ0KKysrIGluY2x1ZGUvcHJpdmF0ZS9hcHVfY29u ZmlnLmh3CSh3b3JraW5nIGNvcHkpDQpAQCAtMzQsNiArMzQsMTIgQEANCiAvKiBkZWZpbmUg aWYgRXhwYXQgMS4wIG9yIDEuMSB3YXMgZm91bmQgKi8KIC8qICN1bmRlZiBBUFJfSEFWRV9P TERfRVhQQVQgKi8KIAorLyogTmVlZGVkIENFIGVycm5vIGRlZmluZXMuICovCisjaWZkZWYg X1dJTjMyX1dDRQorI2RlZmluZSBFMkJJRyA3CisjZGVmaW5lIEVJTlZBTCAyMgorI2RlZmlu ZSBFSUxTRVEgNDIKKyNlbmRpZgogCiAjZW5kaWYgLyogQVBVX0NPTkZJR19IICovCiAjZW5k aWYgLyogV0lOMzIgKi8K --------------060704020209050202050507 Content-Type: text/plain; name="libapriconv-trunk-ce.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libapriconv-trunk-ce.patch" SW5kZXg6IGxpYi9jaGFyc2V0X2FsaWFzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaWIvY2hh cnNldF9hbGlhcy5oCShyZXZpc2lvbiA1OTkxNDApDQorKysgbGliL2NoYXJzZXRfYWxpYXMu aAkod29ya2luZyBjb3B5KQ0KQEAgLTQyMSw2ICs0MjEsNDkgQEANCiBzdGF0aWMgY29uc3Qg c2l6ZV90IGNoYXJzZXRfYWxpYXNfY291bnQgPQogICAgIHNpemVvZihjaGFyc2V0X2FsaWFz X2xpc3QpL3NpemVvZihjaGFyc2V0X2FsaWFzX2xpc3RbMF0pIC0gMTsKIAorI2lmZGVmIF9X SU4zMl9XQ0UKK3ZvaWQgKmJzZWFyY2goY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpi YXNlLCBzaXplX3QgbnVtLCBzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgIGludCAoX19j ZGVjbCAqY29tcGFyZSkoIGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpKQoreworICB1 bnNpZ25lZCBjaGFyICpsb3cgPSAodW5zaWduZWQgY2hhciAqKWJhc2U7CisgIHVuc2lnbmVk IGNoYXIgKmhpZ2ggPSAodW5zaWduZWQgY2hhciAqKWJhc2UgKyAobnVtIC0gMSkgKiB3aWR0 aDsKKyAgdW5zaWduZWQgY2hhciAqbWlkID0gTlVMTDsKKyAgc2l6ZV90IGhhbGYgPSAwOwor ICBpbnQgcmVzdWx0ID0gMDsKKworICBBU1NFUlQoYmFzZSAhPSBOVUxMKTsKKyAgQVNTRVJU KG51bSA8PSBJTlRfTUFYKTsKKyAgQVNTRVJUKGNvbXBhcmUgIT0gTlVMTCk7CisKKyAgd2hp bGUobG93IDw9IGhpZ2gpCisgIHsKKyAgICBoYWxmID0gbnVtOworICAgIGlmKGhhbGYgLyAy ICE9IDApCisgICAgeworICAgICAgbWlkID0gbG93ICsgKG51bSAmIDEgPyBoYWxmIDogKGhh bGYgLSAxKSkgKiB3aWR0aDsKKyAgICAgIHJlc3VsdCA9IGNvbXBhcmUoa2V5LCBtaWQpOwor ICAgICAgaWYoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG1pZDsKKyAgICAgIGVsc2UgaWYo cmVzdWx0IDwgMCkKKyAgICAgIHsKKyAgICAgICAgaGlnaCA9IG1pZCAtIHdpZHRoOworICAg ICAgICBudW0gPSBudW0gJiAxID8gaGFsZiA6IGhhbGYgLSAxOworICAgICAgfQorICAgICAg ZWxzZQorICAgICAgeworICAgICAgICBsb3cgPSBtaWQgKyB3aWR0aDsKKyAgICAgICAgbnVt ID0gaGFsZjsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZihudW0pCisgICAgICByZXR1 cm4gY29tcGFyZShrZXksIGxvdykgPyBOVUxMIDogbG93OworICAgIGVsc2UKKyAgICAgIGJy ZWFrOworICB9CisgIHJldHVybiBOVUxMOworfQorI2VuZGlmIC8qIF9XSU4zMl9XQ0UgKi8K KwogLyogQ29tcGFyZSB0d28gYWxpYXNlcy4gKi8KIHN0YXRpYyBpbnQgY2hhcnNldF9hbGlh c19jb21wYXJlIChjb25zdCB2b2lkICp1LCBjb25zdCB2b2lkICp2KQogewpJbmRleDogbGli L2ljb252X21vZHVsZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGliL2ljb252X21vZHVsZS5j CShyZXZpc2lvbiA1OTkxNDApDQorKysgbGliL2ljb252X21vZHVsZS5jCSh3b3JraW5nIGNv cHkpDQpAQCAtNDMsOSArNDMsMTggQEANCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNs dWRlIDxzdGRsaWIuaD4KKyNpZiBBUFJfSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5 cy90eXBlcy5oPgorI2VuZGlmCisjaWZuZGVmIF9XSU4zMl9XQ0UKICNpbmNsdWRlIDxzeXMv c3RhdC5oPgorI2VuZGlmCiAKKyNpZmRlZiBfV0lOMzJfV0NFCisjZGVmaW5lIEVJTlZBTCAy MgorI2RlZmluZSBFTk9NRU0gMTIKKyNlbmRpZgorCiAjaWZkZWYgQVBJX1VTRV9CVUlMVElO X0FMSUFTRVMKICNpbmNsdWRlICJjaGFyc2V0X2FsaWFzLmgiCiAjZW5kaWYK --------------060704020209050202050507 Content-Type: text/plain; name="libapr-trunk-ce.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libapr-trunk-ce.patch" SW5kZXg6IGRzby93aW4zMi9kc28uYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGRzby93aW4zMi9k c28uYwkocmV2aXNpb24gNTk5NDUyKQ0KKysrIGRzby93aW4zMi9kc28uYwkod29ya2luZyBj b3B5KQ0KQEAgLTE0MSw3ICsxNDEsNyBAQA0KICAgICBhcHJfd2NoYXJfdCB3c3ltbmFtZVsy NTZdOwogICAgIGFwcl9zdGF0dXNfdCBydjsKIAotICAgIHJ2ID0gYXByX2NvbnZfdXRmOF90 b191Y3MyKHdzeW1uYW1lLCAmd3N5bWxlbiwgc3ltbmFtZSwgJnN5bWxlbik7CisgICAgcnYg PSBhcHJfY29udl91dGY4X3RvX3VjczIoc3ltbmFtZSwgJnN5bWxlbiwgd3N5bW5hbWUsICZ3 c3ltbGVuKTsKICAgICBpZiAocnYgIT0gQVBSX1NVQ0NFU1MpIHsKICAgICAgICAgcmV0dXJu IHJ2OwogICAgIH0KSW5kZXg6IGZpbGVfaW8vdW5peC90ZW1wZGlyLmMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCi0tLSBmaWxlX2lvL3VuaXgvdGVtcGRpci5jCShyZXZpc2lvbiA1OTk0NTIpDQorKysg ZmlsZV9pby91bml4L3RlbXBkaXIuYwkod29ya2luZyBjb3B5KQ0KQEAgLTE3LDggKzE3LDgg QEANCiAjaW5jbHVkZSAiYXByX2ZpbGVfaW8uaCIKICNpbmNsdWRlICJhcHJfc3RyaW5ncy5o IgogI2luY2x1ZGUgImFwcl9lbnYuaCIKKyNpbmNsdWRlICJhcHJfYXJjaF9maWxlX2lvLmgi CiAKLQogLyogVHJ5IHRvIG9wZW4gYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdGVtcG9yYXJ5 IGRpciwgd3JpdGUgdG8gaXQsCiAgICBhbmQgdGhlbiBjbG9zZSBpdC4gKi8KIHN0YXRpYyBp bnQgdGVzdF90ZW1wZGlyKGNvbnN0IGNoYXIgKnRlbXBfZGlyLCBhcHJfcG9vbF90ICpwKQpA QCAtNDEsNiArNDEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcHJfcG9vbF90ICpwKQogewogICAgIGFwcl9zdGF0dXNfdCBhcHJfZXJyOwor I2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgY29uc3QgY2hhciAqdHJ5X2RpcnNbXSA9IHsgIi90 bXAiLCAiL3Vzci90bXAiLCAiL3Zhci90bXAiIH07CiAgICAgY29uc3QgY2hhciAqdHJ5X2Vu dnNbXSA9IHsgIlRNUCIsICJURU1QIiwgIlRNUERJUiIgfTsKICAgICBjb25zdCBjaGFyICpk aXI7CkBAIC0xMjYsNSArMTI3LDIyIEBADQogCiBlbmQ6CiAgICAgKnRlbXBfZGlyID0gYXBy X3BzdHJkdXAocCwgZGlyKTsKKyNlbHNlCisgICAgY2hhciAqZGlyOworICAgIGFwcl93Y2hh cl90IHdkaXJbQVBSX1BBVEhfTUFYXSA9IHswfTsKKyAgICBEV09SRCBsZW47CisKKyAgICBs ZW4gPSBHZXRUZW1wUGF0aFcoQVBSX1BBVEhfTUFYLCB3ZGlyKTsKKyAgICBpZiAoIWxlbikK KyAgICAgICAgcmV0dXJuIEFQUl9FR0VORVJBTDsKKyAgICAvKiBOZWVkIHRvIHJlbW92ZSB0 aGUgdHJhaWxpbmcgYmFjay1zbGFzaC4gKi8KKyAgICB3ZGlyW2xlbi0xXSA9IDA7CisgICAg ZGlyID0gYXByX3BjYWxsb2MocCwgQVBSX1BBVEhfTUFYKTsKKyAgICBhcHJfZXJyID0gdW5p Y29kZV90b191dGY4X3BhdGgoZGlyLCBBUFJfUEFUSF9NQVgsIHdkaXIpOworICAgIGlmIChh cHJfZXJyICE9IEFQUl9TVUNDRVNTKQorICAgICAgICByZXR1cm4gYXByX2VycjsKKyAgICBp ZiAodGVzdF90ZW1wZGlyKGRpciwgcCkpCisgICAgICAgICp0ZW1wX2RpciA9IGRpcjsKKyNl bmRpZgogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0KSW5kZXg6IGZpbGVfaW8vd2luMzIv ZGlyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCi0tLSBmaWxlX2lvL3dpbjMyL2Rpci5jCShyZXZpc2lv biA1OTk0NTIpDQorKysgZmlsZV9pby93aW4zMi9kaXIuYwkod29ya2luZyBjb3B5KQ0KQEAg LTk1LDcgKzk1LDE3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgYXByX3Bvb2xfY2xl YW51cF9udWxsKTsKIAogICAgIHJ2ID0gYXByX2Rpcl9yZWFkKE5VTEwsIDAsICpuZXcpOwor I2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgaWYgKHJ2ICE9IEFQUl9TVUNDRVNTKSB7CisjZWxz ZQorICAgIC8qIENFIGZhaWxzIGFwcl9kaXJfcmVhZCgpIG9uIGFuICplbXB0eSogZGlyZWN0 b3J5CisgICAgICogKG5vICIuIiBub3IgIi4uIiBmaWxlcykuCisgICAgICovCisgICAgaWYg KHJ2ID09IEFQUl9GUk9NX09TX0VSUk9SKEVSUk9SX05PX01PUkVfRklMRVMpKSB7CisgICAg ICAgIHJ2ID0gQVBSX1NVQ0NFU1M7CisgICAgfQorICAgIGVsc2UgaWYgKHJ2ICE9IEFQUl9T VUNDRVNTKSB7CisjZW5kaWYKICAgICAgICAgZGlyX2NsZWFudXAoKm5ldyk7CiAgICAgICAg ICpuZXcgPSBOVUxMOwogICAgIH0KQEAgLTI2Niw4ICsyNzYsMTcgQEANCiAgICAgICovCiAg ICAgcnYgPSBkaXJfY2xlYW51cChkaXIpOwogCi0gICAgaWYgKHJ2ID09IEFQUl9TVUNDRVNT KQorICAgIGlmIChydiA9PSBBUFJfU1VDQ0VTUykgewogICAgICAgICBydiA9IGFwcl9kaXJf cmVhZChOVUxMLCAwLCBkaXIpOworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICAgICAgLyogQ0Ug ZmFpbHMgYXByX2Rpcl9yZWFkKCkgb24gYW4gKmVtcHR5KiBkaXJlY3RvcnkKKyAgICAgICAg ICogKG5vICIuIiBub3IgIi4uIiBmaWxlcykuCisgICAgICAgICAqLworICAgICAgICBpZiAo cnYgPT0gQVBSX0ZST01fT1NfRVJST1IoRVJST1JfTk9fTU9SRV9GSUxFUykpIHsKKyAgICAg ICAgICAgIHJ2ID0gQVBSX1NVQ0NFU1M7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KIAog ICAgIHJldHVybiBydjsKIH0KSW5kZXg6IGZpbGVfaW8vd2luMzIvZmlsZWR1cC5jDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gZmlsZV9pby93aW4zMi9maWxlZHVwLmMJKHJldmlzaW9uIDU5OTQ1 MikNCisrKyBmaWxlX2lvL3dpbjMyL2ZpbGVkdXAuYwkod29ya2luZyBjb3B5KQ0KQEAgLTIw LDcgKzIwLDkgQEANCiAjaW5jbHVkZSAiYXByX3N0cmluZ3MuaCIKICNpbmNsdWRlIDxzdHJp bmcuaD4KICNpbmNsdWRlICJhcHJfYXJjaF9pbmhlcml0LmgiCisjaWZuZGVmIF9XSU4zMl9X Q0UKICNpbmNsdWRlIDxpby5oPiAvKiBmb3IgW19vcGVuL19nZXRdX29zZmhhbmRsZSAqLwor I2VuZGlmCiAKIAogQVBSX0RFQ0xBUkUoYXByX3N0YXR1c190KSBhcHJfZmlsZV9kdXAoYXBy X2ZpbGVfdCAqKm5ld19maWxlLApJbmRleDogZmlsZV9pby93aW4zMi9maWxlcGF0aC5jDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gZmlsZV9pby93aW4zMi9maWxlcGF0aC5jCShyZXZpc2lvbiA1 OTk0NTIpDQorKysgZmlsZV9pby93aW4zMi9maWxlcGF0aC5jCSh3b3JraW5nIGNvcHkpDQpA QCAtMjY1LDcgKzI2NSw4IEBADQogICAgICAgICAgICAgcmV0dXJuIEFQUl9FSU5DT01QTEVU RTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIExlZnQgd2l0aCBhIHBhdGggb2YgJy8nLCB3 aGF0IGRyaXZlIGFyZSB3ZSBhc2tpbmcgYWJvdXQ/IAorI2lmbmRlZiBfV0lOMzJfV0NFCisg ICAgICAgIC8qIExlZnQgd2l0aCBhIHBhdGggb2YgJy8nLCB3aGF0IGRyaXZlIGFyZSB3ZSBh c2tpbmcgYWJvdXQ/CiAgICAgICAgICAqLwogICAgICAgICAqaW5wYXRoID0gdGVzdHBhdGgg KyAxOwogICAgICAgICBuZXdwYXRoID0gYXByX3BhbGxvYyhwLCAyKTsKQEAgLTI3Niw4ICsy NzcsMzcgQEANCiAgICAgICAgIG5ld3BhdGhbMV0gPSAnXDAnOwogICAgICAgICAqcm9vdHBh dGggPSBuZXdwYXRoOwogICAgICAgICByZXR1cm4gQVBSX0VJTkNPTVBMRVRFOworI2Vsc2UK KyAgICAgICAgLyogRXZhbHVhdGUgcGF0aCBvZiAnLycgKHJvb3Qgb24gQ0UpLiAqLworICAg ICAgICBkbyB7CisgICAgICAgICAgICBhcHJfc3RhdHVzX3QgcnY7CisgICAgICAgICAgICAv KiBWYWxpZGF0ZSB0aGF0ICcvJyBkcml2ZSBleGlzdHMsIHRlc3QgbXVzdCBiZSByb290ZWQK KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmV3cGF0aCA9IGFwcl9wYWxsb2MocCwg Mik7CisgICAgICAgICAgICBuZXdwYXRoWzBdID0gc2VwZXJhdG9yWzBdOworICAgICAgICAg ICAgbmV3cGF0aFsxXSA9ICdcMCc7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBBUFJfRklM RVBBVEhfVFJVRU5BTUUpIHsKKyAgICAgICAgICAgICAgICBydiA9IGZpbGVwYXRoX3Jvb3Rf dGVzdChuZXdwYXRoLCBwKTsKKyAgICAgICAgICAgICAgICBpZiAocnYpCisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBydjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyog c3RyaXAgb2ZmIHJlbWFpbmluZyBzbGFzaGVzIHRoYXQgZGVzaWduYXRlIHRoZSByb290LAor ICAgICAgICAgICAgICogZ2l2ZSB0aGUgY2FsbGVyIGJhY2sgdGhlaXIgb3JpZ2luYWwgY2hv aWNlIG9mIHNsYXNoCisgICAgICAgICAgICAgKiB1bmxlc3MgdGhpcyBpcyBOQVRJVkVEJ2Vk CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICppbnBhdGggPSB0ZXN0cGF0aCArIDE7 CisgICAgICAgICAgICB3aGlsZSAoKippbnBhdGggPT0gJy8nIHx8ICoqaW5wYXRoID09ICdc XCcpCisgICAgICAgICAgICAgICAgKysqaW5wYXRoOworICAgICAgICAgICAgaWYgKCEoZmxh Z3MgJiBBUFJfRklMRVBBVEhfTkFUSVZFKSkKKyAgICAgICAgICAgICAgICBuZXdwYXRoWzBd ID0gdGVzdHBhdGhbMF07CisgICAgICAgICAgICAqcm9vdHBhdGggPSBuZXdwYXRoOworICAg ICAgICAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOworICAgICAgICB9IHdoaWxlKDApOworI2Vu ZGlmCiAgICAgfQogCisjaWZuZGVmIF9XSU4zMl9XQ0UKICAgICAvKiBFdmFsdWF0ZSBwYXRo IG9mICdkOlsvXScgKi8KICAgICBpZiAoSVNfRk5DSEFSKCp0ZXN0cGF0aCkgJiYgdGVzdHBh dGhbMV0gPT0gJzonKSAKICAgICB7CkBAIC0zMjAsNiArMzUwLDcgQEANCiAgICAgICAgICpy b290cGF0aCA9IG5ld3BhdGg7CiAgICAgICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKICAgICB9 CisjZW5kaWYKIAogICAgIC8qIE5vdGhpbmcgaW50ZXJlc3RpbmcgKi8KICAgICByZXR1cm4g QVBSX0VSRUxBVElWRTsKSW5kZXg6IGZpbGVfaW8vd2luMzIvZmlsZXN0YXQuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KLS0tIGZpbGVfaW8vd2luMzIvZmlsZXN0YXQuYwkocmV2aXNpb24gNTk5NDUy KQ0KKysrIGZpbGVfaW8vd2luMzIvZmlsZXN0YXQuYwkod29ya2luZyBjb3B5KQ0KQEAgLTE1 LDE1ICsxNSwxOSBAQA0KICAqLwogCiAjaW5jbHVkZSAiYXByLmgiCisjaW5jbHVkZSAiYXBy X3ByaXZhdGUuaCIKKyNpZiBIQVZFX0FDTEFQSQogI2luY2x1ZGUgPGFjbGFwaS5oPgotI2lu Y2x1ZGUgImFwcl9wcml2YXRlLmgiCisjZW5kaWYKICNpbmNsdWRlICJhcHJfYXJjaF9maWxl X2lvLmgiCiAjaW5jbHVkZSAiYXByX2ZpbGVfaW8uaCIKICNpbmNsdWRlICJhcHJfZ2VuZXJh bC5oIgogI2luY2x1ZGUgImFwcl9zdHJpbmdzLmgiCiAjaW5jbHVkZSAiYXByX2Vycm5vLmgi CiAjaW5jbHVkZSAiYXByX3RpbWUuaCIKKyNpZm5kZWYgX1dJTjMyX1dDRQogI2luY2x1ZGUg PHN5cy9zdGF0Lmg+CisjZW5kaWYKICNpbmNsdWRlICJhcHJfYXJjaF9hdGltZS5oIgogI2lu Y2x1ZGUgImFwcl9hcmNoX21pc2MuaCIKIApAQCAtNTAsNiArNTQsNyBAQA0KICAgICByZXR1 cm4gQVBSX1NVQ0NFU1M7CiB9CiAKKyNpZm5kZWYgX1dJTjMyX1dDRQogc3RhdGljIGFwcl9z dGF0dXNfdCBmcmVlX2xvY2FsaGVhcCh2b2lkICpoZWFwKSB7CiAgICAgTG9jYWxGcmVlKGhl YXApOwogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKQEAgLTY0LDYgKzY5LDcgQEANCiAgICAg ICAgIHdvcmxkaWQgPSBOVUxMOwogICAgIH0KIH0KKyNlbmRpZgogCiAvKiBMZWZ0IGJpdCBz aGlmdHMgZnJvbSBXb3JsZCBzY29wZSB0byBnaXZlbiBzY29wZSAqLwogdHlwZWRlZiBlbnVt IHByb3Rfc2NvcGVfZSB7CkBAIC04OCw2ICs5NCw3IEBADQogICAgIHJldHVybiAocHJvdCA8 PCBzY29wZSk7CiB9CiAKKyNpZm5kZWYgX1dJTjMyX1dDRQogc3RhdGljIHZvaWQgcmVzb2x2 ZV9wcm90KGFwcl9maW5mb190ICpmaW5mbywgYXByX2ludDMyX3Qgd2FudGVkLCBQQUNMIGRh Y2wpCiB7CiAgICAgVFJVU1RFRV9XIGlkZW50ID0ge05VTEwsIE5PX01VTFRJUExFX1RSVVNU RUUsIFRSVVNURUVfSVNfU0lEfTsKQEAgLTEzOCw2ICsxNDUsNyBAQA0KICAgICAgICAgfQog ICAgIH0KIH0KKyNlbmRpZgogCiBzdGF0aWMgYXByX3N0YXR1c190IHJlc29sdmVfaWRlbnQo YXByX2ZpbmZvX3QgKmZpbmZvLCBjb25zdCBjaGFyICpmbmFtZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcHJfaW50MzJfdCB3YW50ZWQsIGFwcl9wb29sX3QgKnBv b2wpCkBAIC0yMTMsMTQgKzIyMSwxNyBAQA0KIGFwcl9zdGF0dXNfdCBtb3JlX2ZpbmZvKGFw cl9maW5mb190ICpmaW5mbywgY29uc3Qgdm9pZCAqdWZpbGUsIAogICAgICAgICAgICAgICAg ICAgICAgICAgYXByX2ludDMyX3Qgd2FudGVkLCBpbnQgd2hhdGZpbGUpCiB7CisjaWZuZGVm IF9XSU4zMl9XQ0UKICAgICBQU0lEIHVzZXIgPSBOVUxMLCBncnAgPSBOVUxMOwogICAgIFBB Q0wgZGFjbCA9IE5VTEw7CiAgICAgYXByX3N0YXR1c190IHJ2OworI2VuZGlmCiAKICAgICBp ZiAoYXByX29zX2xldmVsIDwgQVBSX1dJTl9OVCkKICAgICAgICAgcmV0dXJuIGd1ZXNzX3By b3RlY3Rpb25fYml0cyhmaW5mbywgd2FudGVkKTsKIAotICAgIGlmICh3YW50ZWQgJiAoQVBS X0ZJTkZPX1BST1QgfCBBUFJfRklORk9fT1dORVIpKQorI2lmbmRlZiBfV0lOMzJfV0NFCisg ICAgZWxzZSBpZiAod2FudGVkICYgKEFQUl9GSU5GT19QUk9UIHwgQVBSX0ZJTkZPX09XTkVS KSkKICAgICB7CiAgICAgICAgIC8qIE9uIE5UIHRoaXMgcmVxdWVzdCBpcyBpbmNyZWRpYmx5 IGV4cGVuc2l2ZSwgYnV0IGFjY3VyYXRlLgogICAgICAgICAgKiBTaW5jZSB0aGUgV2luTlQt b25seSBmdW5jdGlvbnMgYmVsb3cgYXJlIHByb3RlY3RlZCBieSB0aGUKQEAgLTI5Miw3ICsz MDMsNiBAQA0KICAgICAgICAgZWxzZSBpZiAod2FudGVkICYgQVBSX0ZJTkZPX1BST1QpCiAg ICAgICAgICAgICBndWVzc19wcm90ZWN0aW9uX2JpdHMoZmluZm8sIHdhbnRlZCk7CiAgICAg fQotCiAgICAgaWYgKChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl8yMDAwKSAmJiAod2FudGVk ICYgQVBSX0ZJTkZPX0NTSVpFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiYgKGZpbmZvLT5maWxldHlwZSA9PSBBUFJfUkVHKSkKICAgICB7CkBAIC0zMzMs NiArMzQzLDggQEANCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYK KwogICAgIHJldHVybiAoKHdhbnRlZCAmIH5maW5mby0+dmFsaWQpID8gQVBSX0lOQ09NUExF VEUgOiBBUFJfU1VDQ0VTUyk7CiB9CiAKQEAgLTQzMyw2ICs0NDUsNyBAQA0KIAogICAgIGlm IChmaW5mby0+ZmlsZXR5cGUgPT0gQVBSX1JFRykKICAgICB7CisjaWZuZGVmIF9XSU4zMl9X Q0UKICAgICAgICAgLyogR28gdGhlIGV4dHJhIG1pbGUgdG8gYmUgLWNlcnRhaW4tIHRoYXQg d2UgaGF2ZSBhIHJlYWwsIHJlZ3VsYXIKICAgICAgICAgICogZmlsZSwgc2luY2UgdGhlIGF0 dHJpYnV0ZSBiaXRzIGFyZW4ndCBhIGNlcnRhaW4gdGhpbmcuICBFdmVuCiAgICAgICAgICAq IHRob3VnaCBmaWxsaW4gc2hvdWxkIGhhdmUgaGludGVkIGlmIHdlICptdXN0KiBkbyB0aGlz LCB3ZQpAQCAtNDQ5LDYgKzQ2Miw3IEBADQogICAgICAgICAgICAgLyogT3RoZXJ3aXNlIGxl YXZlIHRoZSBvcmlnaW5hbCBjb25jbHVzaW9uIGFsb25lIAogICAgICAgICAgICAgICovCiAg ICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIGZpbmZvLT5wb29sID0gdGhlZmlsZS0+ cG9vbDsKQEAgLTYyMyw2ICs2MzcsNyBAQA0KICAgICAgICAgaWYgKGZpbGxpbl9maWxlaW5m byhmaW5mbywgKFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgKikgJkZpbGVJbmZvLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB3YW50ZWQpKQogICAgICAgICB7CisjaWZu ZGVmIF9XSU4zMl9XQ0UKICAgICAgICAgICAgIC8qIEdvIHRoZSBleHRyYSBtaWxlIHRvIGFz c3VyZSB3ZSBoYXZlIGEgZmlsZS4gIFdpbk5ULzIwMDAgc2VlbXMKICAgICAgICAgICAgICAq IHRvIHJlbGlhYmx5IHRyYW5zbGF0ZSBjaGFyIGRldmljZXMgdG8gdGhlIHBhdGggJ1xcLlxk ZXZpY2UnCiAgICAgICAgICAgICAgKiBzbyBnbyBhc2sgZm9yIHRoZSBmdWxsIHBhdGguCkBA IC02NzgsNiArNjkzLDkgQEANCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg ICBmaW5mby0+dmFsaWQgJj0gfkFQUl9GSU5GT19UWVBFOwogICAgICAgICAgICAgfQorI2Vs c2UKKyAgICAgICAgICAgIGZpbmZvLT52YWxpZCAmPSB+QVBSX0ZJTkZPX1RZUEU7CisjZW5k aWYKICAgICAgICAgfQogICAgICAgICBmaW5mby0+cG9vbCA9IHBvb2w7CiAgICAgfQpAQCAt NjkwLDcgKzcwOCw3IEBADQogICAgIGlmICh3YW50ZWQgJj0gfmZpbmZvLT52YWxpZCkgewog ICAgICAgICAvKiBDYWxsZXIgd2FudHMgbW9yZSB0aGFuIEFQUl9GSU5GT19NSU4gfCBBUFJf RklORk9fTkFNRSAqLwogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwotICAgICAgICBpZiAoYXBy X29zX2xldmVsID49IEFQUl9XSU5fTlQpCisgICAgICAgIGlmIChhcHJfb3NfbGV2ZWwgPiBB UFJfV0lOX1VOSUNPREUpCiAgICAgICAgICAgICByZXR1cm4gbW9yZV9maW5mbyhmaW5mbywg d2ZuYW1lLCB3YW50ZWQsIE1PUkVfT0ZfV0ZTUEVDKTsKICNlbmRpZgogICAgICAgICByZXR1 cm4gbW9yZV9maW5mbyhmaW5mbywgZm5hbWUsIHdhbnRlZCwgTU9SRV9PRl9GU1BFQyk7Cklu ZGV4OiBmaWxlX2lvL3dpbjMyL2ZpbGVzeXMuYw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGZpbGVf aW8vd2luMzIvZmlsZXN5cy5jCShyZXZpc2lvbiA1OTk0NTIpDQorKysgZmlsZV9pby93aW4z Mi9maWxlc3lzLmMJKHdvcmtpbmcgY29weSkNCkBAIC02Niw2ICs2Niw3IEBADQogYXByX3N0 YXR1c190IGZpbGVwYXRoX3Jvb3RfdGVzdChjaGFyICpwYXRoLCBhcHJfcG9vbF90ICpwKQog ewogICAgIGFwcl9zdGF0dXNfdCBydjsKKyNpZm5kZWYgX1dJTjMyX1dDRQogI2lmIEFQUl9I QVNfVU5JQ09ERV9GUwogICAgIGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkKICAg ICB7CkBAIC04MSw2ICs4MiwxOSBAQA0KIAogICAgIGlmIChydiA9PSBEUklWRV9VTktOT1dO IHx8IHJ2ID09IERSSVZFX05PX1JPT1RfRElSKQogICAgICAgICByZXR1cm4gQVBSX0VCQURQ QVRIOworI2Vsc2UKKyAgICBhcHJfd2NoYXJfdCB3cGF0aFtBUFJfUEFUSF9NQVhdOworICAg IGlmIChydiA9IHV0ZjhfdG9fdW5pY29kZV9wYXRoKHdwYXRoLCBzaXplb2Yod3BhdGgpCisg ICAgICAgIC8gc2l6ZW9mKGFwcl93Y2hhcl90KSwgcGF0aCkpCisgICAgICAgIHJldHVybiBy djsKKyAgICBpZiAoIUNlR2V0Q2Fub25pY2FsUGF0aE5hbWVXKHdwYXRoLCB3cGF0aCwgc2l6 ZW9mKHdwYXRoKSAvIHNpemVvZihhcHJfd2NoYXJfdCksIDApKQorICAgICAgICByZXR1cm4g YXByX2dldF9vc19lcnJvcigpOworICAgIC8qIENFIGRvZXNuJ3QgaGF2ZSAiZHJpdmVzIjsg aW5zdGVhZCwgaXQgdXNlcyB1bml4LXN0eWxlIHBhdGhzIHdpdGggYSByb290LiBDaGVjawor ICAgICAqIGZvciB0aGUgcm9vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY2Fub25pY2FsIHBh dGguCisgICAgICovCisgICAgaWYgKHdwYXRoWzBdICE9IEwnXFwnICYmIHdwYXRoWzBdICE9 IEwnLycpCisgICAgICAgIHJldHVybiBBUFJfRUJBRFBBVEg7CisjZW5kaWYKICAgICByZXR1 cm4gQVBSX1NVQ0NFU1M7CiB9CiAKQEAgLTkyLDEwICsxMDYsMTEgQEANCiAjaWYgQVBSX0hB U19VTklDT0RFX0ZTCiAgICAgSUZfV0lOX09TX0lTX1VOSUNPREUKICAgICB7CisgICAgICAg IGFwcl93Y2hhcl90IHdwYXRoW0FQUl9QQVRIX01BWF07CisgICAgICAgIGFwcl9zdGF0dXNf dCBydjsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgICAgICBhcHJfd2NoYXJfdCAqaWdub3Jl ZDsKICAgICAgICAgYXByX3djaGFyX3Qgd2RyaXZlWzhdOwotICAgICAgICBhcHJfd2NoYXJf dCB3cGF0aFtBUFJfUEFUSF9NQVhdOwotICAgICAgICBhcHJfc3RhdHVzX3QgcnY7CiAgICAg ICAgIC8qID8/PzogVGhpcyBuZWVkcyByZXZpZXcsIGFwcGFyZW50bHkgIlxcP1xkOi4iIHJl dHVybnMgIlxcP1xkOiIgCiAgICAgICAgICAqIGFzIGlmIHRoYXQgaXMgdXNlZnVsIGZvciBh bnl0aGluZy4KICAgICAgICAgICovCkBAIC0xMDMsNiArMTE4LDEzIEBADQogICAgICAgICB3 ZHJpdmVbMF0gPSAoYXByX3djaGFyX3QpKHVuc2lnbmVkIGNoYXIpZHJpdmU7CiAgICAgICAg IGlmICghR2V0RnVsbFBhdGhOYW1lVyh3ZHJpdmUsIHNpemVvZih3cGF0aCkgLyBzaXplb2Yo YXByX3djaGFyX3QpLCB3cGF0aCwgJmlnbm9yZWQpKQogICAgICAgICAgICAgcmV0dXJuIGFw cl9nZXRfb3NfZXJyb3IoKTsKKyNlbHNlCisgICAgICAgIGFwcl93Y2hhcl90IHdwYXRoMltB UFJfUEFUSF9NQVhdOworICAgICAgICBpZiAoKHJ2ID0gdXRmOF90b191bmljb2RlX3BhdGgo d3BhdGgyLCBzaXplb2Yod3BhdGgyKSAvIHNpemVvZihhcHJfd2NoYXJfdCksICpyb290cGF0 aCkpKQorICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICBpZiAoIUNlR2V0Q2Fub25p Y2FsUGF0aE5hbWVXKHdwYXRoMiwgd3BhdGgsIHNpemVvZih3cGF0aDIpIC8gc2l6ZW9mKGFw cl93Y2hhcl90KSwgMCkpCisgICAgICAgICAgICByZXR1cm4gYXByX2dldF9vc19lcnJvcigp OworI2VuZGlmCiAgICAgICAgIGlmICgocnYgPSB1bmljb2RlX3RvX3V0ZjhfcGF0aChwYXRo LCBzaXplb2YocGF0aCksIHdwYXRoKSkpCiAgICAgICAgICAgICByZXR1cm4gcnY7CiAgICAg fQpAQCAtMTM2LDcgKzE1OCw5IEBADQogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwogICAgIElG X1dJTl9PU19JU19VTklDT0RFCiAgICAgeworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAg IGFwcl93Y2hhcl90ICppZ25vcmVkOworI2VuZGlmCiAgICAgICAgIGFwcl93Y2hhcl90IHdw YXRoW0FQUl9QQVRIX01BWF07CiAgICAgICAgIGFwcl9zdGF0dXNfdCBydjsKICAgICAgICAg YXByX3djaGFyX3Qgd3Jvb3RbQVBSX1BBVEhfTUFYXTsKQEAgLTE0Niw4ICsxNzAsMTMgQEAN CiAgICAgICAgIGlmIChydiA9IHV0ZjhfdG9fdW5pY29kZV9wYXRoKHdyb290LCBzaXplb2Yo d3Jvb3QpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8g c2l6ZW9mKGFwcl93Y2hhcl90KSwgcm9vdCkpCiAgICAgICAgICAgICByZXR1cm4gcnY7Cisj aWZuZGVmIF9XSU4zMl9XQ0UKICAgICAgICAgaWYgKCFHZXRGdWxsUGF0aE5hbWVXKHdyb290 LCBzaXplb2Yod3BhdGgpIC8gc2l6ZW9mKGFwcl93Y2hhcl90KSwgd3BhdGgsICZpZ25vcmVk KSkKICAgICAgICAgICAgIHJldHVybiBhcHJfZ2V0X29zX2Vycm9yKCk7CisjZWxzZQorICAg ICAgICBpZiAoIUNlR2V0Q2Fub25pY2FsUGF0aE5hbWVXKHdyb290LCB3cGF0aCwgc2l6ZW9m KHdwYXRoKSAvIHNpemVvZihhcHJfd2NoYXJfdCksIDApKQorICAgICAgICAgICAgcmV0dXJu IGFwcl9nZXRfb3NfZXJyb3IoKTsKKyNlbmRpZgogCiAgICAgICAgIC8qIEJvcnJvdyB3cm9v dCBhcyBhIGNoYXIgYnVmZmVyICh0d2ljZSBhcyBiaWcgYXMgbmVjZXNzYXJ5KSAKICAgICAg ICAgICovCkBAIC0xNzMsNiArMjAyLDkgQEANCiBBUFJfREVDTEFSRShhcHJfc3RhdHVzX3Qp IGFwcl9maWxlcGF0aF9nZXQoY2hhciAqKnJvb3RwYXRoLCBhcHJfaW50MzJfdCBmbGFncywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHJfcG9vbF90 ICpwKQogeworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICByZXR1cm4gQVBSX0VOT1RJTVBMOwor I2Vsc2UKICAgICBjaGFyIHBhdGhbQVBSX1BBVEhfTUFYXTsKICNpZiBBUFJfSEFTX1VOSUNP REVfRlMKICAgICBJRl9XSU5fT1NfSVNfVU5JQ09ERQpAQCAtMjAwLDEyICsyMzIsMTYgQEAN CiAgICAgfQogICAgICpyb290cGF0aCA9IGFwcl9wc3RyZHVwKHAsIHBhdGgpOwogICAgIHJl dHVybiBBUFJfU1VDQ0VTUzsKKyNlbmRpZgogfQogCiAKIEFQUl9ERUNMQVJFKGFwcl9zdGF0 dXNfdCkgYXByX2ZpbGVwYXRoX3NldChjb25zdCBjaGFyICpyb290cGF0aCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHJfcG9vbF90ICpwKQogewor I2lmZGVmIF9XSU4zMl9XQ0UKKyAgICByZXR1cm4gQVBSX0VOT1RJTVBMOworI2Vsc2UKICNp ZiBBUFJfSEFTX1VOSUNPREVfRlMKICAgICBJRl9XSU5fT1NfSVNfVU5JQ09ERQogICAgIHsK QEAgLTIyNiw0ICsyNjIsNSBAQA0KICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gQVBSX1NV Q0NFU1M7CisjZW5kaWYKIH0KSW5kZXg6IGZpbGVfaW8vd2luMzIvZmxvY2suYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KLS0tIGZpbGVfaW8vd2luMzIvZmxvY2suYwkocmV2aXNpb24gNTk5NDUyKQ0K KysrIGZpbGVfaW8vd2luMzIvZmxvY2suYwkod29ya2luZyBjb3B5KQ0KQEAgLTE4LDIzICsx OCwyMCBAQA0KIAogQVBSX0RFQ0xBUkUoYXByX3N0YXR1c190KSBhcHJfZmlsZV9sb2NrKGFw cl9maWxlX3QgKnRoZWZpbGUsIGludCB0eXBlKQogewotI2lmZGVmIF9XSU4zMl9XQ0UKLSAg ICAvKiBUaGUgRmlsZSBsb2NraW5nIGlzIHVuc3Vwb3J0ZWQgb24gV0NFICovCi0gICAgcmV0 dXJuIEFQUl9FTk9USU1QTDsKLSNlbHNlCiAgICAgY29uc3QgRFdPUkQgbGVuID0gMHhmZmZm ZmZmZjsKICAgICBEV09SRCBmbGFnczsgCiAKICAgICBmbGFncyA9ICgodHlwZSAmIEFQUl9G TE9DS19OT05CTE9DSykgPyBMT0NLRklMRV9GQUlMX0lNTUVESUFURUxZIDogMCkKICAgICAg ICAgICArICgoKHR5cGUgJiBBUFJfRkxPQ0tfVFlQRU1BU0spID09IEFQUl9GTE9DS19TSEFS RUQpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwIDogTE9D S0ZJTEVfRVhDTFVTSVZFX0xPQ0spOwotICAgIGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJ Tl9OVCkgeworICAgIGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9DRV81KSB7CiAgICAg ICAgIC8qIFN5bnRheCBpcyBjb3JyZWN0LCBsZW4gaXMgcGFzc2VkIGZvciBMZW5ndGhMb3cg YW5kIExlbmd0aEhpZ2gqLwogICAgICAgICBPVkVSTEFQUEVEIG9mZnNldDsKICAgICAgICAg bWVtc2V0ICgmb2Zmc2V0LCAwLCBzaXplb2Yob2Zmc2V0KSk7CiAgICAgICAgIGlmICghTG9j a0ZpbGVFeCh0aGVmaWxlLT5maWxlaGFuZCwgZmxhZ3MsIDAsIGxlbiwgbGVuLCAmb2Zmc2V0 KSkKICAgICAgICAgICAgIHJldHVybiBhcHJfZ2V0X29zX2Vycm9yKCk7CiAgICAgfQorI2lm bmRlZiBfV0lOMzJfV0NFCiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE9uIFdpbjl4LCBMb2Nr RmlsZSgpIG5ldmVyIGJsb2Nrcy4gIEhhY2sgaW4gYSBjcnVmdHkgcG9sbC4KICAgICAgICAg ICoKQEAgLTU3LDMwICs1NCwzNiBAQA0KICAgICAgICAgICAgIHJldHVybiBBUFJfRlJPTV9P U19FUlJPUihlcnIpOwogICAgICAgICB9CiAgICAgfQorI2Vsc2UKKyAgICBlbHNlIHsKKyAg ICAgICAgcmV0dXJuIEFQUl9FTk9USU1QTDsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVy biBBUFJfU1VDQ0VTUzsKLSNlbmRpZiAvKiAhZGVmaW5lZChfV0lOMzJfV0NFKSAqLwogfQog CiBBUFJfREVDTEFSRShhcHJfc3RhdHVzX3QpIGFwcl9maWxlX3VubG9jayhhcHJfZmlsZV90 ICp0aGVmaWxlKQogewotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICByZXR1cm4gQVBSX0VOT1RJ TVBMOwotI2Vsc2UKICAgICBEV09SRCBsZW4gPSAweGZmZmZmZmZmOwogCi0gICAgaWYgKGFw cl9vc19sZXZlbCA+PSBBUFJfV0lOX05UKSB7CisgICAgaWYgKGFwcl9vc19sZXZlbCA+PSBB UFJfV0lOX0NFXzUpIHsKICAgICAgICAgLyogU3ludGF4IGlzIGNvcnJlY3QsIGxlbiBpcyBw YXNzZWQgZm9yIExlbmd0aExvdyBhbmQgTGVuZ3RoSGlnaCovCiAgICAgICAgIE9WRVJMQVBQ RUQgb2Zmc2V0OwogICAgICAgICBtZW1zZXQgKCZvZmZzZXQsIDAsIHNpemVvZihvZmZzZXQp KTsKICAgICAgICAgaWYgKCFVbmxvY2tGaWxlRXgodGhlZmlsZS0+ZmlsZWhhbmQsIDAsIGxl biwgbGVuLCAmb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBhcHJfZ2V0X29zX2Vycm9y KCk7CiAgICAgfQorI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgZWxzZSB7CiAgICAgICAgIGlm ICghVW5sb2NrRmlsZSh0aGVmaWxlLT5maWxlaGFuZCwgMCwgMCwgbGVuLCAwKSkKICAgICAg ICAgICAgIHJldHVybiBhcHJfZ2V0X29zX2Vycm9yKCk7CiAgICAgfQorI2Vsc2UKKyAgICBl bHNlIHsKKyAgICAgICAgcmV0dXJuIEFQUl9FTk9USU1QTDsKKyAgICB9CisjZW5kaWYKIAog ICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKLSNlbmRpZiAvKiAhZGVmaW5lZChfV0lOMzJfV0NF KSAqLwogfQpJbmRleDogZmlsZV9pby93aW4zMi9vcGVuLmMNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t LSBmaWxlX2lvL3dpbjMyL29wZW4uYwkocmV2aXNpb24gNTk5NDUyKQ0KKysrIGZpbGVfaW8v d2luMzIvb3Blbi5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNyArMzEsOSBAQA0KICNlbmRp ZgogI2luY2x1ZGUgImFwcl9hcmNoX21pc2MuaCIKICNpbmNsdWRlICJhcHJfYXJjaF9pbmhl cml0LmgiCisjaWZuZGVmIF9XSU4zMl9XQ0UKICNpbmNsdWRlIDxpby5oPgorI2VuZGlmCiAj aW5jbHVkZSA8V2luSW9DdGwuaD4KIAogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwpAQCAtMjI0 LDYgKzIyNiw5IEBADQogI2lmIEFQUl9IQVNfVU5JQ09ERV9GUwogc3RhdGljIGFwcl9zdGF0 dXNfdCBtYWtlX3NwYXJzZV9maWxlKGFwcl9maWxlX3QgKmZpbGUpCiB7CisjaWZkZWYgX1dJ TjMyX1dDRQorICAgIHJldHVybiBBUFJfRU5PVElNUEw7CisjZWxzZQogICAgIEJZX0hBTkRM RV9GSUxFX0lORk9STUFUSU9OIGluZm87CiAgICAgYXByX3N0YXR1c190IHJ2OwogICAgIERX T1JEIGJ5dGVzcmVhZCA9IDA7CkBAIC0yNzAsNiArMjc1LDcgQEANCiAgICAgICAgIH0KICAg ICB9CiAgICAgcmV0dXJuIHJ2OworI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtMjkyLDYgKzI5 OCw3IEBADQogICAgICAgICAgKi8KICAgICAgICAgaWYgKGZpbGUtPmZsYWdzICYgQVBSX1NU RF9GTEFHUykKICAgICAgICAgeworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgICAgICBp ZiAoKGZpbGUtPmZsYWdzICYgQVBSX1NURF9GTEFHUykgPT0gQVBSX1NUREVSUl9GTEFHKSB7 CiAgICAgICAgICAgICAgICAgX2Nsb3NlKDIpOwogICAgICAgICAgICAgICAgIFNldFN0ZEhh bmRsZShTVERfRVJST1JfSEFORExFLCBJTlZBTElEX0hBTkRMRV9WQUxVRSk7CkBAIC0zMDQs NiArMzExLDcgQEANCiAgICAgICAgICAgICAgICAgX2Nsb3NlKDApOwogICAgICAgICAgICAg ICAgIFNldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFORExFLCBJTlZBTElEX0hBTkRMRV9WQUxV RSk7CiAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg ICAgICAgICAgICBDbG9zZUhhbmRsZShmaWxlLT5maWxlaGFuZCk7CkBAIC0zMzQsOCArMzQy LDEwIEBADQogICAgIGlmIChmbGFnICYgQVBSX1dSSVRFKSB7CiAgICAgICAgIG9mbGFncyB8 PSBHRU5FUklDX1dSSVRFOwogICAgIH0KLSAgICBpZiAoZmxhZyAmIEFQUl9XUklURUFUVFJT KSB7Ci0gICAgICAgIG9mbGFncyB8PSBGSUxFX1dSSVRFX0FUVFJJQlVURVM7CisgICAgaWYg KGFwcl9vc19sZXZlbCA8IEFQUl9XSU5fQ0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJ Tl9OVCkgeworICAgICAgICBpZiAoZmxhZyAmIEFQUl9XUklURUFUVFJTKSB7CisgICAgICAg ICAgICBvZmxhZ3MgfD0gRklMRV9XUklURV9BVFRSSUJVVEVTOworICAgICAgICB9CiAgICAg fQogCiAgICAgaWYgKGFwcl9vc19sZXZlbCA+PSBBUFJfV0lOX05UKSAKQEAgLTM2NCwxMiAr Mzc0LDE0IEBADQogICAgICAgICByZXR1cm4gQVBSX0VBQ0NFUzsKICAgICB9ICAgCiAgICAg Ci0gICAgaWYgKGZsYWcgJiBBUFJfREVMT05DTE9TRSkgewotICAgICAgICBhdHRyaWJ1dGVz IHw9IEZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0U7Ci0gICAgfQorICAgIGlmIChhcHJfb3Nf bGV2ZWwgPCBBUFJfV0lOX0NFXzMgfHwgYXByX29zX2xldmVsID49IEFQUl9XSU5fTlQpIHsK KyAgICAgICAgaWYgKGZsYWcgJiBBUFJfREVMT05DTE9TRSkgeworICAgICAgICAgICAgYXR0 cmlidXRlcyB8PSBGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFOworICAgICAgICB9CiAKLSAg ICBpZiAoZmxhZyAmIEFQUl9PUEVOTElOSykgewotICAgICAgIGF0dHJpYnV0ZXMgfD0gRklM RV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVDsKKyAgICAgICAgaWYgKGZsYWcgJiBBUFJfT1BF TkxJTkspIHsKKyAgICAgICAgICAgYXR0cmlidXRlcyB8PSBGSUxFX0ZMQUdfT1BFTl9SRVBB UlNFX1BPSU5UOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogV2l0aG91dCBSRUFEIG9y IFdSSVRFLCB3ZSBmYWlsIHVubGVzcyBhcHIgY2FsbGVkIGFwcl9maWxlX29wZW4KQEAgLTM4 OCwxNSArNDAwLDE5IEBADQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJldHVybiBB UFJfRUFDQ0VTOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmbGFnICYgQVBSX1JFQURDT05U Uk9MKQotICAgICAgICAgICAgb2ZsYWdzIHw9IFJFQURfQ09OVFJPTDsKKyAgICAgICAgaWYg KGFwcl9vc19sZXZlbCA8IEFQUl9XSU5fQ0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJ Tl9OVCkgeworICAgICAgICAgICAgaWYgKGZsYWcgJiBBUFJfUkVBRENPTlRST0wpCisgICAg ICAgICAgICAgICAgb2ZsYWdzIHw9IFJFQURfQ09OVFJPTDsKKyAgICAgICAgfQogICAgIH0K IAotICAgIGlmIChmbGFnICYgQVBSX1hUSFJFQUQpIHsKLSAgICAgICAgLyogVGhpcyB3aW4z MiBzcGVjaWZpYyBmZWF0dXJlIGlzIHJlcXVpcmVkIAotICAgICAgICAgKiB0byBhbGxvdyBt dWx0aXBsZSB0aHJlYWRzIHRvIHdvcmsgd2l0aCB0aGUgZmlsZS4KLSAgICAgICAgICovCi0g ICAgICAgIGF0dHJpYnV0ZXMgfD0gRklMRV9GTEFHX09WRVJMQVBQRUQ7CisgICAgaWYgKGFw cl9vc19sZXZlbCA8IEFQUl9XSU5fQ0VfMyB8fCBhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9O VCkgeworICAgICAgICBpZiAoZmxhZyAmIEFQUl9YVEhSRUFEKSB7CisgICAgICAgICAgICAv KiBUaGlzIHdpbjMyIHNwZWNpZmljIGZlYXR1cmUgaXMgcmVxdWlyZWQgCisgICAgICAgICAg ICAgKiB0byBhbGxvdyBtdWx0aXBsZSB0aHJlYWRzIHRvIHdvcmsgd2l0aCB0aGUgZmlsZS4K KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBGSUxFX0ZMQUdf T1ZFUkxBUFBFRDsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIEFQUl9IQVNfVU5JQ09ERV9G UwpAQCAtNTQ0LDYgKzU2MCwyMyBAQA0KICAgICAgICAgaWYgKE1vdmVGaWxlRXhXKHdmcm9t cGF0aCwgd3RvcGF0aCwgTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyB8CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PVkVGSUxFX0NPUFlfQUxMT1dF RCkpCiAjZWxzZQorICAgICAgICAvKiBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgTW92 ZUZpbGVFeCwgc28gd2UnbGwgdXNlCisgICAgICAgICAqIHRoZSBvbGQgTW92ZUZpbGUgZnVu Y3Rpb24uICBIb3dldmVyLCBNb3ZlRmlsZSByZXF1aXJlcyB0aGF0CisgICAgICAgICAqIHRo ZSBuZXcgZmlsZSBub3QgYWxyZWFkeSBleGlzdC4uLnNvIHdlIGhhdmUgdG8gZGVsZXRlIHRo YXQKKyAgICAgICAgICogZmlsZSBpZiBpdCBkb2VzLiAgUGVyaGFwcyB3ZSBzaG91bGQgYmFj ayB1cCB0aGUgdG8tYmUtZGVsZXRlZAorICAgICAgICAgKiBmaWxlIGluIGNhc2Ugc29tZXRo aW5nIGhhcHBlbnM/CisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBI QU5ETEUgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisKKyAgICAgICAgICAgIGlm ICgoaGFuZGxlID0gQ3JlYXRlRmlsZVcod3RvcGF0aCwgR0VORVJJQ19XUklURSwgMCwgMCwg IAorICAgICAgICAgICAgICAgIE9QRU5fRVhJU1RJTkcsIDAsIDAgKSkgIT0gSU5WQUxJRF9I QU5ETEVfVkFMVUUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENsb3NlSGFu ZGxlKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgaWYgKCFEZWxldGVGaWxlVyh3dG9wYXRo KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmIChNb3ZlRmls ZVcod2Zyb21wYXRoLCB3dG9wYXRoKSkKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEFQ Ul9TVUNDRVNTOwpAQCAtNjQyLDU3ICs2NzUsNTcgQEANCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9pbnQzMl90IGZsYWdzLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXByX3Bvb2xfdCAqcG9vbCkKIHsKLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgcmV0dXJuIEFQ Ul9FTk9USU1QTDsKLSNlbHNlCiAgICAgYXByX29zX2ZpbGVfdCBmaWxlX2hhbmRsZTsKIAog ICAgIGFwcl9zZXRfb3NfZXJyb3IoQVBSX1NVQ0NFU1MpOworI2lmbmRlZiBfV0lOMzJfV0NF CiAgICAgZmlsZV9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX0VSUk9SX0hBTkRMRSk7Cisj ZWxzZQorICAgIGZpbGVfaGFuZGxlID0gU1RERVJSX0ZJTEVOTzsKKyNlbmRpZgogICAgIGlm ICghZmlsZV9oYW5kbGUpCiAgICAgICAgIGZpbGVfaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVf VkFMVUU7CiAKICAgICByZXR1cm4gYXByX29zX2ZpbGVfcHV0KHRoZWZpbGUsICZmaWxlX2hh bmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHwgQVBSX1dSSVRFIHwg QVBSX1NUREVSUl9GTEFHLCBwb29sKTsKLSNlbmRpZgogfQogCiBBUFJfREVDTEFSRShhcHJf c3RhdHVzX3QpIGFwcl9maWxlX29wZW5fZmxhZ3Nfc3Rkb3V0KGFwcl9maWxlX3QgKip0aGVm aWxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXByX2ludDMyX3QgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9wb29sX3QgKnBvb2wpCiB7Ci0jaWZkZWYg X1dJTjMyX1dDRQotICAgIHJldHVybiBBUFJfRU5PVElNUEw7Ci0jZWxzZQogICAgIGFwcl9v c19maWxlX3QgZmlsZV9oYW5kbGU7CiAKICAgICBhcHJfc2V0X29zX2Vycm9yKEFQUl9TVUND RVNTKTsKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIGZpbGVfaGFuZGxlID0gR2V0U3RkSGFu ZGxlKFNURF9PVVRQVVRfSEFORExFKTsKKyNlbHNlCisgICAgZmlsZV9oYW5kbGUgPSBTVERP VVRfRklMRU5POworI2VuZGlmCiAgICAgaWYgKCFmaWxlX2hhbmRsZSkKICAgICAgICAgZmls ZV9oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIAogICAgIHJldHVybiBhcHJfb3Nf ZmlsZV9wdXQodGhlZmlsZSwgJmZpbGVfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmxhZ3MgfCBBUFJfV1JJVEUgfCBBUFJfU1RET1VUX0ZMQUcsIHBvb2wpOwotI2Vu ZGlmCiB9CiAKIEFQUl9ERUNMQVJFKGFwcl9zdGF0dXNfdCkgYXByX2ZpbGVfb3Blbl9mbGFn c19zdGRpbihhcHJfZmlsZV90ICoqdGhlZmlsZSwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX2ludDMyX3QgZmxhZ3MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX3Bv b2xfdCAqcG9vbCkKIHsKLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgcmV0dXJuIEFQUl9FTk9U SU1QTDsKLSNlbHNlCiAgICAgYXByX29zX2ZpbGVfdCBmaWxlX2hhbmRsZTsKIAogICAgIGFw cl9zZXRfb3NfZXJyb3IoQVBSX1NVQ0NFU1MpOworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAg ZmlsZV9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSk7CisjZWxzZQor ICAgIGZpbGVfaGFuZGxlID0gU1RESU5fRklMRU5POworI2VuZGlmCiAgICAgaWYgKCFmaWxl X2hhbmRsZSkKICAgICAgICAgZmlsZV9oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsK IAogICAgIHJldHVybiBhcHJfb3NfZmlsZV9wdXQodGhlZmlsZSwgJmZpbGVfaGFuZGxlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfCBBUFJfUkVBRCB8IEFQUl9TVERJ Tl9GTEFHLCBwb29sKTsKLSNlbmRpZgogfQogCiBBUFJfREVDTEFSRShhcHJfc3RhdHVzX3Qp IGFwcl9maWxlX29wZW5fc3RkZXJyKGFwcl9maWxlX3QgKip0aGVmaWxlLCBhcHJfcG9vbF90 ICpwb29sKQpJbmRleDogZmlsZV9pby93aW4zMi9yZWFkd3JpdGUuYw0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KLS0tIGZpbGVfaW8vd2luMzIvcmVhZHdyaXRlLmMJKHJldmlzaW9uIDU5OTQ1MikNCisr KyBmaWxlX2lvL3dpbjMyL3JlYWR3cml0ZS5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNyAr MzEsOSBAQA0KIHN0YXRpYyBhcHJfc3RhdHVzX3QgcmVhZF93aXRoX3RpbWVvdXQoYXByX2Zp bGVfdCAqZmlsZSwgdm9pZCAqYnVmLCBhcHJfc2l6ZV90IGxlbl9pbiwgYXByX3NpemVfdCAq bmJ5dGVzKQogewogICAgIGFwcl9zdGF0dXNfdCBydjsKKyNpZm5kZWYgX1dJTjMyX1dDRQog ICAgIERXT1JEIHJlczsKKyNlbmRpZgogICAgIERXT1JEIGxlbiA9IChEV09SRClsZW5faW47 CiAgICAgRFdPUkQgYnl0ZXNyZWFkID0gMDsKIApAQCAtNDEsNiArNDMsNyBAQA0KICAgICAg ICAgICogSWYgZGF0YSBpcyBhdmFpbGFibGUsIGdvIGFoZWFkIGFuZCByZWFkIGl0LgogICAg ICAgICAgKi8KICAgICAgICAgaWYgKGZpbGUtPnBpcGUpIHsKKyNpZm5kZWYgX1dJTjMyX1dD RQogICAgICAgICAgICAgRFdPUkQgYnl0ZXM7CiAgICAgICAgICAgICBpZiAoIVBlZWtOYW1l ZFBpcGUoZmlsZS0+ZmlsZWhhbmQsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpIHsK ICAgICAgICAgICAgICAgICBydiA9IGFwcl9nZXRfb3NfZXJyb3IoKTsKQEAgLTU5LDYgKzYy LDcgQEANCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVzOwogICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGVsc2Ug ewogICAgICAgICAgICAgLyogVG9EbzogSGFuZGxlIHplcm8gdGltZW91dCBub24tYmxvY2tp bmcgZmlsZSBpL28gCkBAIC03MywxMiArNzcsMTggQEANCiAgICAgICAgIGZpbGUtPnBPdmVy bGFwcGVkLT5PZmZzZXRIaWdoID0gKERXT1JEKShmaWxlLT5maWxlUHRyID4+IDMyKTsKICAg ICB9CiAKKyNpZm5kZWYgX1dJTjMyX1dDRQogICAgIGlmIChSZWFkRmlsZShmaWxlLT5maWxl aGFuZCwgYnVmLCBsZW4sIAogICAgICAgICAgICAgICAgICAmYnl0ZXNyZWFkLCBmaWxlLT5w T3ZlcmxhcHBlZCkpIHsKKyNlbHNlCisgICAgaWYgKFJlYWRGaWxlKGZpbGUtPmZpbGVoYW5k LCBidWYsIGxlbiwgCisgICAgICAgICAgICAgICAgICZieXRlc3JlYWQsIE5VTEwpKSB7Cisj ZW5kaWYKICAgICAgICAgcnYgPSBBUFJfU1VDQ0VTUzsKICAgICB9CiAgICAgZWxzZSB7CiAg ICAgICAgIHJ2ID0gYXByX2dldF9vc19lcnJvcigpOworI2lmbmRlZiBfV0lOMzJfV0NFCiAg ICAgICAgIGlmIChydiA9PSBBUFJfRlJPTV9PU19FUlJPUihFUlJPUl9JT19QRU5ESU5HKSkg ewogICAgICAgICAgICAgLyogV2FpdCBmb3IgdGhlIHBlbmRpbmcgaS9vLCB0aW1lb3V0IGNv bnZlcnRlZCBmcm9tIHVzIHRvIG1zCiAgICAgICAgICAgICAgKiBOb3RlIHRoYXQgd2UgbG9v cCBpZiBzb21lb25lIGdpdmVzIHVwIHRoZSBldmVudCwgc2luY2UKQEAgLTEyMCw2ICsxMzAs NyBAQA0KICAgICAgICAgICAgICAgICAgICAgcnYgPSBBUFJfVElNRVVQOwogICAgICAgICAg ICAgfQogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKHJ2ID09IEFQUl9GUk9NX09T X0VSUk9SKEVSUk9SX0JST0tFTl9QSVBFKSkgewogICAgICAgICAgICAgLyogQXNzdW1lIEVS Uk9SX0JST0tFTl9QSVBFIHNpZ25hbHMgYW4gRU9GIHJlYWRpbmcgZnJvbSBhIHBpcGUgKi8K ICAgICAgICAgICAgIHJ2ID0gQVBSX0VPRjsKQEAgLTE1MCw2ICsxNjEsMTAgQEANCiAgICAg ICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKICAgICB9CiAKKyAgICAvKiBDRSBkb2Vzbid0IHN1 cHBvcnQgb3ZlcmxhcHBlZCBJL08sIGJ1dCAic3VwcG9ydHMiIHRocmVhZC1zYWZlCisgICAg ICogZmlsZSBhY2Nlc3MgbmF0aXZlbHkuCisgICAgICovCisjaWZuZGVmIF9XSU4zMl9XQ0UK ICAgICAvKiBJZiB0aGUgZmlsZSBpcyBvcGVuIGZvciB4dGhyZWFkIHN1cHBvcnQsIGFsbG9j YXRlIGFuZAogICAgICAqIGluaXRpYWxpemUgdGhlIG92ZXJsYXBwZWQgYW5kIGlvIGNvbXBs ZXRpb24gZXZlbnQgKGhFdmVudCkuIAogICAgICAqIFRocmVhZHMgc2hvdWxkIE5PVCBzaGFy ZSBhbiBhcHJfZmlsZV90IG9yIGl0cyBoRXZlbnQuCkBAIC0xNjMsNiArMTc4LDcgQEANCiAg ICAgICAgICAgICByZXR1cm4gcnY7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKIAogICAg IC8qIEhhbmRsZSB0aGUgdW5nZXRjaGFyIGlmIHRoZXJlIGlzIG9uZSAqLwogICAgIGlmICh0 aGVmaWxlLT51bmdldGNoYXIgIT0gLTEpIHsKQEAgLTI0MSw2ICsyNTcsMTAgQEANCiAgICAg YXByX3N0YXR1c190IHJ2OwogICAgIERXT1JEIGJ3cm90ZTsKIAorICAgIC8qIENFIGRvZXNu J3Qgc3VwcG9ydCBvdmVybGFwcGVkIEkvTywgYnV0ICJzdXBwb3J0cyIgdGhyZWFkLXNhZmUK KyAgICAgKiBmaWxlIGFjY2VzcyBuYXRpdmVseS4KKyAgICAgKi8KKyNpZm5kZWYgX1dJTjMy X1dDRQogICAgIC8qIElmIHRoZSBmaWxlIGlzIG9wZW4gZm9yIHh0aHJlYWQgc3VwcG9ydCwg YWxsb2NhdGUgYW5kCiAgICAgICogaW5pdGlhbGl6ZSB0aGUgb3ZlcmxhcHBlZCBhbmQgaW8g Y29tcGxldGlvbiBldmVudCAoaEV2ZW50KS4gCiAgICAgICogVGhyZWFkcyBzaG91bGQgTk9U IHNoYXJlIGFuIGFwcl9maWxlX3Qgb3IgaXRzIGhFdmVudC4KQEAgLTI1NCw2ICsyNzQsNyBA QA0KICAgICAgICAgICAgIHJldHVybiBydjsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgog CiAgICAgaWYgKHRoZWZpbGUtPmJ1ZmZlcmVkKSB7CiAgICAgICAgIGNoYXIgKnBvcyA9IChj aGFyICopYnVmOwpAQCAtMzE0LDE2ICszMzUsMzcgQEANCiAgICAgICAgICAgICAgICAgdGhl ZmlsZS0+cE92ZXJsYXBwZWQtPk9mZnNldCAgICAgPSAoRFdPUkQpdGhlZmlsZS0+ZmlsZVB0 cjsKICAgICAgICAgICAgICAgICB0aGVmaWxlLT5wT3ZlcmxhcHBlZC0+T2Zmc2V0SGlnaCA9 IChEV09SRCkodGhlZmlsZS0+ZmlsZVB0ciA+PiAzMik7CiAgICAgICAgICAgICB9CisjaWZu ZGVmIF9XSU4zMl9XQ0UKICAgICAgICAgICAgIHJ2ID0gV3JpdGVGaWxlKHRoZWZpbGUtPmZp bGVoYW5kLCBidWYsIChEV09SRCkqbmJ5dGVzLCAmYndyb3RlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlZmlsZS0+cE92ZXJsYXBwZWQpOworI2Vsc2UKKyAgICAgICAgICAg IHJ2ID0gV3JpdGVGaWxlKHRoZWZpbGUtPmZpbGVoYW5kLCBidWYsIChEV09SRCkqbmJ5dGVz LCAmYndyb3RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAg ICAgICAvKiBXcml0ZUZpbGUoKSBmYWlscyB1cG9uIHdyaXRpbmcgemVybyBhbW91bnQgd2hl biAiYXBwZW5kaW5nIiB0bworICAgICAgICAgICAgICogYSBmaWxlLiBTdWNjZWVkcyBpbiB3 cml0aW5nIHplcm8gYW1vdW50IGluIGFsbCBvdGhlciBjYXNlcy4KKyAgICAgICAgICAgICAq IE1vc3QgbGlrZWx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBTZXRGaWxlUG9pbnRlcigp IGJlaW5nCisgICAgICAgICAgICAgKiBjYWxsZWQuIFRyaWVkIHVzaW5nIFNldEVuZE9mRmls ZSgpLCBidXQgZGlkbid0IGhlbHAuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICog SnVzdCBwcmV0ZW5kIGl0IHN1Y2NlZWRlZCBpbiwgZXNzZW50aWFsbHksIG5vdCBkb2luZyBh bnl0aGluZy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHJ2ID09IDAgJiYg Km5ieXRlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgcnYgPSAxOworICAgICAgICAgICAg ICAgIGJ3cm90ZSA9IDA7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIGlm ICh0aGVmaWxlLT5hcHBlbmQpIHsKICAgICAgICAgICAgICAgICBhcHJfZmlsZV91bmxvY2so dGhlZmlsZSk7CiAgICAgICAgICAgICAgICAgYXByX3RocmVhZF9tdXRleF91bmxvY2sodGhl ZmlsZS0+bXV0ZXgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2Ug eworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgICAgICAgICBydiA9IFdyaXRlRmlsZSh0aGVm aWxlLT5maWxlaGFuZCwgYnVmLCAoRFdPUkQpKm5ieXRlcywgJmJ3cm90ZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZWZpbGUtPnBPdmVybGFwcGVkKTsKKyNlbHNlCisgICAg ICAgICAgICBydiA9IFdyaXRlRmlsZSh0aGVmaWxlLT5maWxlaGFuZCwgYnVmLCAoRFdPUkQp Km5ieXRlcywgJmJ3cm90ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor I2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2KSB7CiAgICAgICAgICAgICAqbmJ5 dGVzID0gYndyb3RlOwpAQCAtMzMyLDYgKzM3NCw3IEBADQogICAgICAgICBlbHNlIHsKICAg ICAgICAgICAgICgqbmJ5dGVzKSA9IDA7CiAgICAgICAgICAgICBydiA9IGFwcl9nZXRfb3Nf ZXJyb3IoKTsKKyNpZm5kZWYgX1dJTjMyX1dDRQogCiAgICAgICAgICAgICAvKiBYWFg6IFRo aXMgbXVzdCBiZSBjb3JyZWN0ZWQsIHBlciB0aGUgYXByX2ZpbGVfcmVhZCBsb2dpYyEhISAq LwogICAgICAgICAgICAgaWYgKHJ2ID09IEFQUl9GUk9NX09TX0VSUk9SKEVSUk9SX0lPX1BF TkRJTkcpKSB7CkBAIC0zNzAsNiArNDEzLDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAg ICBDYW5jZWxJbyh0aGVmaWxlLT5maWxlaGFuZCk7CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IEFQUl9T VUNDRVNTICYmIHRoZWZpbGUtPnBPdmVybGFwcGVkICYmICF0aGVmaWxlLT5waXBlKSB7CiAg ICAgICAgICAgICB0aGVmaWxlLT5maWxlUHRyICs9ICpuYnl0ZXM7CkBAIC01MDEsNiArNTQ1 LDEwIEBADQogICAgICAgICAgICAgICAgIGJ5dGVzbGVmdCAtPSB3cml0dGVuOwogICAgICAg ICAgICAgICAgIGJ1ZmZlciArPSB3cml0dGVuOwogCisgICAgICAgICAgICAgICAgaWYgKCFG bHVzaEZpbGVCdWZmZXJzKHRoZWZpbGUtPmZpbGVoYW5kKSkgeworICAgICAgICAgICAgICAg ICAgcmMgPSBhcHJfZ2V0X29zX2Vycm9yKCk7CisgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IHdoaWxlIChieXRlc2xlZnQgPiAw KTsKIAogICAgICAgICAgICAgaWYgKHJjID09IDApCkluZGV4OiBmaWxlX2lvL3dpbjMyL3Nl ZWsuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLS0tIGZpbGVfaW8vd2luMzIvc2Vlay5jCShyZXZpc2lv biA1OTk0NTIpDQorKysgZmlsZV9pby93aW4zMi9zZWVrLmMJKHdvcmtpbmcgY29weSkNCkBA IC0xNiw3ICsxNiw5IEBADQogCiAjaW5jbHVkZSAiYXByX2FyY2hfZmlsZV9pby5oIgogI2lu Y2x1ZGUgImFwcl9maWxlX2lvLmgiCisjaWYgQVBSX0hBVkVfRVJSTk9fSAogI2luY2x1ZGUg PGVycm5vLmg+CisjZW5kaWYKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogc3RhdGljIGFwcl9z dGF0dXNfdCBzZXRwdHIoYXByX2ZpbGVfdCAqdGhlZmlsZSwgYXByX29mZl90IHBvcyApCkBA IC0xMDAsNiArMTAyLDEwIEBADQogICAgICAgICAqb2Zmc2V0ID0gdGhlZmlsZS0+ZmlsZVB0 ciAtIHRoZWZpbGUtPmRhdGFSZWFkICsgdGhlZmlsZS0+YnVmcG9zOwogICAgICAgICByZXR1 cm4gcmM7CiAgICAgfQorICAgIC8qIENFIGRvZXNuJ3Qgc3VwcG9ydCBvdmVybGFwcGVkIGkv bywgdGhlcmVmb3JlLCBmYWxsYmFjayB0byBsZXR0aW5nIHRoZQorICAgICAqIE9TIGhhbmRs ZSB0aGUgZmlsZSBwb2ludGVyLgorICAgICAqLworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAg LyogQSBmaWxlIG9wZW5lZCB3aXRoIEFQUl9YVEhSRUFEIGhhcyBiZWVuIG9wZW5lZCBmb3Ig b3ZlcmxhcHBlZCBpL28uIAogICAgICAqIEFQUiBtdXN0IGV4cGxpY2l0bHkgdHJhY2sgdGhl IGZpbGUgcG9pbnRlciBpbiB0aGlzIGNhc2UuCiAgICAgICovCkBAIC0xMjUsNiArMTMxLDcg QEANCiAgICAgICAgICpvZmZzZXQgPSB0aGVmaWxlLT5maWxlUHRyOwogICAgICAgICByZXR1 cm4gcmM7CiAgICAgfQorI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIERXT1JEIGhvd21v dmU7CiAgICAgICAgIERXT1JEIG9mZmxvID0gKERXT1JEKSpvZmZzZXQ7CkluZGV4OiBpbmNs dWRlL2Fwci5odw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGluY2x1ZGUvYXByLmh3CShyZXZpc2lv biA1OTk0NTIpDQorKysgaW5jbHVkZS9hcHIuaHcJKHdvcmtpbmcgY29weSkNCkBAIC05Niwx MyArOTYsOSBAQA0KICAqIHdpbnNvY2sgaGVhZGVycyB3ZXJlIGV4Y2x1ZGVkIGJ5IFdJTjMy X0xFQU5fQU5EX01FQU4sIHNvIGluY2x1ZGUgdGhlbSBub3cKICAqLwogI2RlZmluZSBTV19I SURFICAgICAgICAgICAgIDAKLSNpZm5kZWYgX1dJTjMyX1dDRQogI2luY2x1ZGUgPHdpbnNv Y2syLmg+CiAjaW5jbHVkZSA8bXN3c29jay5oPgogI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0j ZWxzZQotI2luY2x1ZGUgPHdpbnNvY2suaD4KLSNlbmRpZgogI2VuZGlmIC8qICFfV0lORE9X U18gKi8KIAogLyoqCkBAIC0yMzEsMTQgKzIyNywxMiBAQA0KICNkZWZpbmUgQVBSX0hBVkVf U1RSVUNUX1JMSU1JVCAgMAogI2RlZmluZSBBUFJfSEFWRV9VTklPTl9TRU1VTiAgICAwCiAj ZGVmaW5lIEFQUl9IQVZFX1NDVFAgICAgICAgICAgIDAKLQotI2lmbmRlZiBfV0lOMzJfV0NF CiAjZGVmaW5lIEFQUl9IQVZFX1NUUklDTVAgICAgICAgIDEKICNkZWZpbmUgQVBSX0hBVkVf U1RSTklDTVAgICAgICAgMQorCisjaWZuZGVmIF9XSU4zMl9XQ0UKICNkZWZpbmUgQVBSX1BS T0NBVFRSX1VTRVJfU0VUX1JFUVVJUkVTX1BBU1NXT1JEIDEKICNlbHNlCi0jZGVmaW5lIEFQ Ul9IQVZFX1NUUklDTVAgICAgICAgIDAKLSNkZWZpbmUgQVBSX0hBVkVfU1RSTklDTVAgICAg ICAgMAogI2RlZmluZSBBUFJfUFJPQ0FUVFJfVVNFUl9TRVRfUkVRVUlSRVNfUEFTU1dPUkQg MAogI2VuZGlmCiAKQEAgLTU2OCw3ICs1NjIsNyBAQA0KICNkZWZpbmUgU1RET1VUX0ZJTEVO TyAxCiAjZGVmaW5lIFNUREVSUl9GSUxFTk8gMgogCi0jaWYgQVBSX0hBU19VTklDT0RFX0ZT CisjaWYgQVBSX0hBU19VTklDT0RFX0ZTICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCiAvKiBB biBhcmJpdHJhcnkgc2l6ZSB0aGF0IGlzIGRpZ2VzdGFibGUuIFRydWUgbWF4IGlzIGEgYml0 IGxlc3MgdGhhbiAzMjAwMCAqLwogI2RlZmluZSBBUFJfUEFUSF9NQVggODE5MgogI2Vsc2Ug LyogIUFQUl9IQVNfVU5JQ09ERV9GUyAqLwpJbmRleDogaW5jbHVkZS9hcHJfZXJybm8uaA0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIGluY2x1ZGUvYXByX2Vycm5vLmgJKHJldmlzaW9uIDU5OTQ1 MikNCisrKyBpbmNsdWRlL2Fwcl9lcnJuby5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDA1LDkg KzQwNSwxMyBAQA0KICAqIEFQUiB3YXMgdW5hYmxlIHRvIG9wZW4gdGhlIGRzbyBvYmplY3Qu ICAKICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGNhbGwgYXByX2Rzb19lcnJvcigpLgogICov Ci0jaWYgZGVmaW5lZChXSU4zMikKKyNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCiAjZGVmaW5l IEFQUl9TVEFUVVNfSVNfRURTT09QRU4ocykgICAgICAgKChzKSA9PSBBUFJfRURTT09QRU4g XAorICAgICAgICAgICAgICAgICAgICAgICB8fCBBUFJfVE9fT1NfRVJST1IocykgPT0gRVJS T1JfSU5WQUxJRF9QQVJBTUVURVIgXAogICAgICAgICAgICAgICAgICAgICAgICB8fCBBUFJf VE9fT1NfRVJST1IocykgPT0gRVJST1JfTU9EX05PVF9GT1VORCkKKyNlbGlmIGRlZmluZWQo V0lOMzIpCisjZGVmaW5lIEFQUl9TVEFUVVNfSVNfRURTT09QRU4ocykgICAgICAgKChzKSA9 PSBBUFJfRURTT09QRU4gXAorICAgICAgICAgICAgICAgICAgICAgICB8fCBBUFJfVE9fT1Nf RVJST1IocykgPT0gRVJST1JfTU9EX05PVF9GT1VORCkKICNlbHNlCiAjZGVmaW5lIEFQUl9T VEFUVVNfSVNfRURTT09QRU4ocykgICAgICAgKChzKSA9PSBBUFJfRURTT09QRU4pCiAjZW5k aWYKQEAgLTQyNiw5ICs0MzAsMTMgQEANCiAvKiogQ291bGQgbm90IGZpbmQgdGhlIHJlcXVl c3RlZCBzeW1ib2wuCiAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBjYWxsIGFwcl9kc29fZXJy b3IoKS4KICAqLwotI2lmIGRlZmluZWQoV0lOMzIpCisjaWYgZGVmaW5lZChfV0lOMzJfV0NF KQogI2RlZmluZSBBUFJfU1RBVFVTX0lTX0VTWU1OT1RGT1VORChzKSAgICgocykgPT0gQVBS X0VTWU1OT1RGT1VORCBcCisgICAgICAgICAgICAgICAgICAgICAgIHx8IEFQUl9UT19PU19F UlJPUihzKSA9PSBFUlJPUl9JTlZBTElEX0hBTkRMRSBcCiAgICAgICAgICAgICAgICAgICAg ICAgIHx8IEFQUl9UT19PU19FUlJPUihzKSA9PSBFUlJPUl9QUk9DX05PVF9GT1VORCkKKyNl bGlmIGRlZmluZWQoV0lOMzIpCisjZGVmaW5lIEFQUl9TVEFUVVNfSVNfRVNZTU5PVEZPVU5E KHMpICAgKChzKSA9PSBBUFJfRVNZTU5PVEZPVU5EIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgfHwgQVBSX1RPX09TX0VSUk9SKHMpID09IEVSUk9SX1BST0NfTk9UX0ZPVU5EKQogI2Vs c2UKICNkZWZpbmUgQVBSX1NUQVRVU19JU19FU1lNTk9URk9VTkQocykgICAoKHMpID09IEFQ Ul9FU1lNTk9URk9VTkQpCiAjZW5kaWYKSW5kZXg6IGluY2x1ZGUvYXByX2dlbmVyYWwuaA0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIGluY2x1ZGUvYXByX2dlbmVyYWwuaAkocmV2aXNpb24gNTk5 NDUyKQ0KKysrIGluY2x1ZGUvYXByX2dlbmVyYWwuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEx NSwxMyArMTE1LDIxIEBADQogICogaGF2ZSBpdAogICovCiAjaWYgKCFBUFJfSEFWRV9TVFJD QVNFQ01QKSAmJiAoQVBSX0hBVkVfU1RSSUNNUCkgCisjaWZkZWYgX1dJTjMyX1dDRQorI2Rl ZmluZSBzdHJjYXNlY21wKHMxLCBzMikgX3N0cmljbXAoczEsIHMyKQorI2Vsc2UKICNkZWZp bmUgc3RyY2FzZWNtcChzMSwgczIpIHN0cmljbXAoczEsIHMyKQorI2VuZGlmCiAjZWxpZiAo IUFQUl9IQVZFX1NUUkNBU0VDTVApCiBpbnQgc3RyY2FzZWNtcChjb25zdCBjaGFyICphLCBj b25zdCBjaGFyICpiKTsKICNlbmRpZgogCiAjaWYgKCFBUFJfSEFWRV9TVFJOQ0FTRUNNUCkg JiYgKEFQUl9IQVZFX1NUUk5JQ01QKQorI2lmZGVmIF9XSU4zMl9XQ0UKKyNkZWZpbmUgc3Ry bmNhc2VjbXAoczEsIHMyLCBuKSBfc3RybmljbXAoczEsIHMyLCBuKQorI2Vsc2UKICNkZWZp bmUgc3RybmNhc2VjbXAoczEsIHMyLCBuKSBzdHJuaWNtcChzMSwgczIsIG4pCisjZW5kaWYK ICNlbGlmICghQVBSX0hBVkVfU1RSTkNBU0VDTVApCiBpbnQgc3RybmNhc2VjbXAoY29uc3Qg Y2hhciAqYSwgY29uc3QgY2hhciAqYiwgc2l6ZV90IG4pOwogI2VuZGlmCkluZGV4OiBpbmNs dWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbWlzYy5oDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gaW5j bHVkZS9hcmNoL3dpbjMyL2Fwcl9hcmNoX21pc2MuaAkocmV2aXNpb24gNTk5NDUyKQ0KKysr IGluY2x1ZGUvYXJjaC93aW4zMi9hcHJfYXJjaF9taXNjLmgJKHdvcmtpbmcgY29weSkNCkBA IC04NSw5ICs4NSwxMiBAQA0KIAlBUFJfV0lOX1VOSUNPREUgPSAgMjAsIC8qIFByaW9yIHZl cnNpb25zIHN1cHBvcnQgb25seSBuYXJyb3cgY2hhcnMgKi8KIAogICAgICAgICBBUFJfV0lO X0NFXzMgPSAgICAgMjMsIC8qIENFIGlzIGFuIG9kZCBiZWFzdCwgbm90IHN1cHBvcnRpbmcg Ki8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzb21lIHByZS1OVCBmZWF0 dXJlcywgc3VjaCBhcyB0aGUgICAgKi8KLSAgICAgICAgQVBSX1dJTl9OVCA9ICAgICAgIDMw LCAvKiBuYXJyb3cgY2hhcnNldCBBUElzIChmb29BIGZucyksIHdoaWxlICAqLwotICAgICAg ICBBUFJfV0lOX05UXzNfNSA9ICAgMzUsIC8qIG5vdCBzdXBwb3J0aW5nIHNvbWUgTlQtZmFt aWx5IGZlYXR1cmVzLiAgKi8KKyAgICAgICAgQVBSX1dJTl9DRV80ID0gICAgIDI0LCAvKiBz b21lIHByZS1OVCBmZWF0dXJlcywgc3VjaCBhcyB0aGUgICAgKi8KKyAgICAgICAgQVBSX1dJ Tl9DRV81ID0gICAgIDI1LCAvKiBuYXJyb3cgY2hhcnNldCBBUElzIChmb29BIGZucyksIHdo aWxlICAqLworICAgICAgICBBUFJfV0lOX0NFXzYgPSAgICAgMjYsIC8qIG5vdCBzdXBwb3J0 aW5nIHNvbWUgTlQtZmFtaWx5IGZlYXR1cmVzLiAgKi8KKworICAgICAgICBBUFJfV0lOX05U ID0gICAgICAgMzAsCisgICAgICAgIEFQUl9XSU5fTlRfM181ID0gICAzNSwKICAgICAgICAg QVBSX1dJTl9OVF8zXzUxID0gIDM2LAogCiAgICAgICAgIEFQUl9XSU5fTlRfNCA9ICAgICA0 MCwKQEAgLTE5MSw4ICsxOTQsOSBAQA0KICAgICB7ICAgaWYgKCFhcHJfd2luYXBpX3Bmbl8j I2ZuKSBcCiAgICAgICAgICAgICBhcHJfd2luYXBpX3Bmbl8jI2ZuID0gKGFwcl93aW5hcGlf ZnB0XyMjZm4pIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBy X2xvYWRfZGxsX2Z1bmMobGliLCAjZm4sIG9yZCk7IFwKLSAgICAgICAgcmV0dXJuICgqKGFw cl93aW5hcGlfcGZuXyMjZm4pKSBuYW1lczsgfTsgXAorICAgICAgICByZXR1cm4gKCooYXBy X3dpbmFwaV9wZm5fIyNmbikpIG5hbWVzOyB9OwogCisKIC8qIFByb3ZpZGUgbGF0ZSBib3Vu ZCBkZWNsYXJhdGlvbnMgb2YgZXZlcnkgQVBJIGZ1bmN0aW9uIG1pc3NpbmcgZnJvbQogICog b25lIG9yIG1vcmUgc3VwcG9ydGVkIHJlbGVhc2VzIG9mIHRoZSBXaW4zMiBBUEkKICAqCklu ZGV4OiBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29ya2lvLmgNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCi0tLSBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29ya2lvLmgJKHJl dmlzaW9uIDU5OTQ1MikNCisrKyBpbmNsdWRlL2FyY2gvd2luMzIvYXByX2FyY2hfbmV0d29y a2lvLmgJKHdvcmtpbmcgY29weSkNCkBAIC01Niw3ICs1Niw3IEBADQogICAgIGFwcl9wb2xs c2V0X3QgKnBvbGxzZXQ7CiB9OwogCi0jaWZkZWYgX1dJTjMyX1dDRQorI2lmIGRlZmluZWQo X1dJTjMyX1dDRSkgJiYgX1dJTjMyX1dDRSA8IDB4NTAwCiAjaWZuZGVmIFdTQUJVRgogdHlw ZWRlZiBzdHJ1Y3QgX1dTQUJVRiB7CiAgICAgdV9sb25nICAgICAgbGVuOyAgICAgLyogdGhl IGxlbmd0aCBvZiB0aGUgYnVmZmVyICovCkBAIC04OCwzICs4OCw0IEBADQogCiAjZW5kaWYg IC8qICEgTkVUV09SS19JT19IICovCiAKKwpJbmRleDogaW5jbHVkZS9hcmNoL3dpbjMyL2Fw cl9wcml2YXRlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBpbmNsdWRlL2FyY2gvd2luMzIvYXBy X3ByaXZhdGUuaAkocmV2aXNpb24gNTk5NDUyKQ0KKysrIGluY2x1ZGUvYXJjaC93aW4zMi9h cHJfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM0LDcgKzEzNCw5IEBADQogCiAj aWYgIUFQUl9IQVZFX0VSUk5PX0gKIEFQUl9ERUNMQVJFX0RBVEEgaW50IGVycm5vOwotI2Rl ZmluZSBFTk9TUEMgMQorI2RlZmluZSBFTk9TUEMgMjgKKyNkZWZpbmUgRUlOVkFMIDIyCisj ZGVmaW5lIEVSQU5HRSAzNAogI2VuZGlmCiAKICNpZiBBUFJfSEFWRV9JUFY2CkBAIC0xNjEs NiArMTYzLDEwIEBADQogI2VuZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBCVUZTSVoKKyNkZWZp bmUgQlVGU0laIDUxMgorI2VuZGlmCisKIC8qIHVzZWQgdG8gY2hlY2sgZm9yIERXT1JEIG92 ZXJmbG93IGluIDY0Yml0IGNvbXBpbGVzICovCiAjZGVmaW5lIEFQUl9EV09SRF9NQVggMHhG RkZGRkZGRlVMCiAKSW5kZXg6IG1pc2Mvd2luMzIvbWlzYy5jDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gbWlzYy93aW4zMi9taXNjLmMJKHJldmlzaW9uIDU5OTQ1MikNCisrKyBtaXNjL3dpbjMy L21pc2MuYwkod29ya2luZyBjb3B5KQ0KQEAgLTEwMyw3ICsxMDMsNyBAQA0KICAgICAgICAg ICAgICAgICBhcHJfb3NfbGV2ZWwgPSBBUFJfV0lOX1hQOwogICAgICAgICAgICAgfQogICAg ICAgICB9Ci0jaWZuZGVmIFdJTk5UCisjaWYgIWRlZmluZWQoV0lOTlQpICYmICFkZWZpbmVk KF9XSU4zMl9XQ0UpCiAgICAgICAgIGVsc2UgaWYgKG9zbGV2LmR3UGxhdGZvcm1JZCA9PSBW RVJfUExBVEZPUk1fV0lOMzJfV0lORE9XUykgewogICAgICAgICAgICAgVENIQVIgKnByZXZp c2lvbjsKICAgICAgICAgICAgIGlmIChwcmV2aXNpb24gPSBvc2xldi5zekNTRFZlcnNpb24p IHsKQEAgLTEzNiw5ICsxMzYsMTggQEANCiAgICAgICAgICAgICBpZiAob3NsZXYuZHdNYWpv clZlcnNpb24gPCAzKSB7CiAgICAgICAgICAgICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJ Tl9VTlNVUDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgZWxzZSBpZiAob3NsZXYuZHdNYWpvclZlcnNpb24gPCA0KSB7CiAgICAgICAgICAgICAg ICAgYXByX29zX2xldmVsID0gQVBSX1dJTl9DRV8zOwogICAgICAgICAgICAgfQorICAgICAg ICAgICAgZWxzZSBpZiAob3NsZXYuZHdNYWpvclZlcnNpb24gPCA1KSB7CisgICAgICAgICAg ICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJTl9DRV80OworICAgICAgICAgICAgfQorICAg ICAgICAgICAgZWxzZSBpZiAob3NsZXYuZHdNYWpvclZlcnNpb24gPCA2KSB7CisgICAgICAg ICAgICAgICAgYXByX29zX2xldmVsID0gQVBSX1dJTl9DRV81OworICAgICAgICAgICAgfQor ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXByX29zX2xldmVsID0gQVBS X1dJTl9DRV82OworICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg ZWxzZSB7CkBAIC0xNjAsMTUgKzE2OSwxNiBAQA0KICAqIG1pc3NpbmcgZnJvbSBvbmUgb3Ig bW9yZSByZWxlYXNlcyBvZiB0aGUgV2luMzIgQVBJCiAgKi8KIAotc3RhdGljIGNvbnN0IGNo YXIqIGNvbnN0IGxhdGVEbGxOYW1lW0RMTF9kZWZpbmVkXSA9IHsKLSAgICAia2VybmVsMzIi LCAiYWR2YXBpMzIiLCAibXN3c29jayIsICAid3MyXzMyIiwgInNoZWxsMzIiLCAibnRkbGwu ZGxsIiAgfTsKK3N0YXRpYyBjb25zdCBUQ0hBUiogY29uc3QgbGF0ZURsbE5hbWVbRExMX2Rl ZmluZWRdID0geworICAgIF9UKCJrZXJuZWwzMiIpLCBfVCgiYWR2YXBpMzIiKSwgX1QoIm1z d3NvY2siKSwKKyAgICBfVCgid3MyXzMyIiksIF9UKCJzaGVsbDMyIiksIF9UKCJudGRsbC5k bGwiKSAgfTsKIHN0YXRpYyBITU9EVUxFIGxhdGVEbGxIYW5kbGVbRExMX2RlZmluZWRdID0g ewogICAgICBOVUxMLCAgICAgICBOVUxMLCAgICAgICBOVUxMLCAgICAgICBOVUxMLCAgICAg TlVMTCwgICAgICAgTlVMTCAgICAgICB9OwogCiBGQVJQUk9DIGFwcl9sb2FkX2RsbF9mdW5j KGFwcl9kbGx0b2tlbl9lIGZuTGliLCBjaGFyKiBmbk5hbWUsIGludCBvcmRpbmFsKQogewog ICAgIGlmICghbGF0ZURsbEhhbmRsZVtmbkxpYl0pIHsgCi0gICAgICAgIGxhdGVEbGxIYW5k bGVbZm5MaWJdID0gTG9hZExpYnJhcnlBKGxhdGVEbGxOYW1lW2ZuTGliXSk7CisgICAgICAg IGxhdGVEbGxIYW5kbGVbZm5MaWJdID0gTG9hZExpYnJhcnkobGF0ZURsbE5hbWVbZm5MaWJd KTsKICAgICAgICAgaWYgKCFsYXRlRGxsSGFuZGxlW2ZuTGliXSkKICAgICAgICAgICAgIHJl dHVybiBOVUxMOwogICAgIH0KQEAgLTIxMCwxMSArMjIwLDIzIEBADQogICAgICAgICAoVGxz U2V0VmFsdWUpKHRsc2lkLCBzYnVmKTsKICAgICAgICAgc2J1ZlsxMDIzXSA9ICdcMCc7CiAg ICAgICAgIGlmICghZmgpIHsKLSAgICAgICAgICAgIChHZXRNb2R1bGVGaWxlTmFtZUEpKE5V TEwsIHNidWYsIDI1MCk7CisvKiBDRSBvbmx5IGhhcyBVbmljb2RlIEFQSS4gKi8KKyNpZmRl ZiBfV0lOMzJfV0NFCisgICAgICAgICAgICB3Y2hhcl90ICp3c2J1ZiA9IG1hbGxvYygxMDI0 KTsKKyAgICAgICAgICAgIHdzYnVmWzEwMjNdID0gTCdcMCc7CisgICAgICAgICAgICAoR2V0 TW9kdWxlRmlsZU5hbWVXKShOVUxMLCB3c2J1ZiwgMjUwKTsKKyAgICAgICAgICAgIHN3cHJp bnRmKHdjc2Nocih3c2J1ZiwgTCdcMCcpLCBMIi4lZCIsCisgICAgICAgICAgICAgICAgICAg IChHZXRDdXJyZW50UHJvY2Vzc0lkKSgpKTsKKyAgICAgICAgICAgIGZoID0gKENyZWF0ZUZp bGVXKSh3c2J1ZiwgR0VORVJJQ19XUklURSwgMCwgTlVMTCwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ1JFQVRFX0FMV0FZUywgMCwgTlVMTCk7CisgICAgICAgICAgICBmcmVl KHdzYnVmKTsKKyNlbHNlCisgICAgICAgICAgICAoR2V0TW9kdWxlRmlsZU5hbWUpKE5VTEws IHNidWYsIDI1MCk7CiAgICAgICAgICAgICBzcHJpbnRmKHN0cmNocihzYnVmLCAnXDAnKSwg Ii4lZCIsCiAgICAgICAgICAgICAgICAgICAgIChHZXRDdXJyZW50UHJvY2Vzc0lkKSgpKTsK LSAgICAgICAgICAgIGZoID0gKENyZWF0ZUZpbGVBKShzYnVmLCBHRU5FUklDX1dSSVRFLCAw LCBOVUxMLCAKKyAgICAgICAgICAgIGZoID0gKENyZWF0ZUZpbGUpKHNidWYsIEdFTkVSSUNf V1JJVEUsIDAsIE5VTEwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURV9B TFdBWVMsIDAsIE5VTEwpOworI2VuZGlmCiAgICAgICAgICAgICAoSW5pdGlhbGl6ZUNyaXRp Y2FsU2VjdGlvbikoJmNzKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IG1pc2Mvd2luMzIv cmFuZC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gbWlzYy93aW4zMi9yYW5kLmMJKHJldmlzaW9u IDU5OTQ1MikNCisrKyBtaXNjL3dpbjMyL3JhbmQuYwkod29ya2luZyBjb3B5KQ0KQEAgLTIw LDggKzIwLDEwIEBADQogI2luY2x1ZGUgImFwcl9nZW5lcmFsLmgiCiAjaW5jbHVkZSAiYXBy X3BvcnRhYmxlLmgiCiAjaW5jbHVkZSAiYXByX2FyY2hfbWlzYy5oIgorI2lmZGVmIF9XSU4z Ml9XQ0UKKyNpbmNsdWRlIDxvYmpiYXNlLmg+CisjZW5kaWYKIAotCiBBUFJfREVDTEFSRShh cHJfc3RhdHVzX3QpIGFwcl9nZW5lcmF0ZV9yYW5kb21fYnl0ZXModW5zaWduZWQgY2hhciAq IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcHJfc2l6ZV90IGxlbmd0aCkKIHsKQEAgLTMyLDcgKzM0LDEyIEBADQogICAgICAq IGFuZCB3aWxsIG9ubHkgd29yayBmb3IgV2luMksgYW5kIGxhdGVyLgogICAgICAqLwogICAg IERXT1JEIGZsYWdzID0gQ1JZUFRfVkVSSUZZQ09OVEVYVAorI2lmbmRlZiBfV0lOMzJfV0NF CiAgICAgICAgICAgICAgICAgfCAoKGFwcl9vc19sZXZlbCA+PSBBUFJfV0lOXzIwMDApID8g MHg0MCA6IDApOworI2Vsc2UKKyAgICAvKiBDUllQVF9TSUxFTlQgd29ya3Mgb24gQ0UgZnJv bSB0aGUgYmVnaW5uaW5nIG9mIENyeXB0QWNxdWlyZUNvbnRleHQoKS4gKi8KKyAgICAgICAg ICAgICAgICB8IENSWVBUX1NJTEVOVDsKKyNlbmRpZgogCiAgICAgaWYgKCFDcnlwdEFjcXVp cmVDb250ZXh0KCZoUHJvdiwgTlVMTCwgTlVMTCwgUFJPVl9SU0FfRlVMTCwgZmxhZ3MpKSB7 CiAJcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKQEAgLTYxLDcgKzY4LDExIEBADQogICAg ICAqIE5vdGUgdGhhdCBXaW4yMDAwLCBYUCBhbmQgbGF0ZXIgbm8gbG9uZ2VyIHN1ZmZlciBm cm9tIHRoaXMgcHJvYmxlbSwKICAgICAgKiBhIHNjcmFtYmxpbmcgZml4IGlzIG9ubHkgbmVl ZGVkIGZvciAoYXByX29zX2xldmVsIDwgQVBSX1dJTl8yMDAwKQogICAgICAqLworI2lmbmRl ZiBfV0lOMzJfV0NFCiAgICAgaWYgKEZBSUxFRChVdWlkQ3JlYXRlKChVVUlEICopdXVpZF9k YXRhKSkpIHsKKyNlbHNlCisgICAgaWYgKEZBSUxFRChDb0NyZWF0ZUd1aWQoKFVVSUQgKil1 dWlkX2RhdGEpKSkgeworI2VuZGlmCiAgICAgICAgIHJldHVybiBBUFJfRUdFTkVSQUw7CiAg ICAgfQogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKSW5kZXg6IG1tYXAvd2luMzIvbW1hcC5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gbW1hcC93aW4zMi9tbWFwLmMJKHJldmlzaW9uIDU5OTQ1 MikNCisrKyBtbWFwL3dpbjMyL21tYXAuYwkod29ya2luZyBjb3B5KQ0KQEAgLTc1LDYgKzc1 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 L211bHRpY2FzdC5jCShyZXZpc2lvbiA1OTk0NTIpDQorKysgbmV0d29ya19pby91bml4L211 bHRpY2FzdC5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMTYzLDcgKzE2MywxMSBAQA0KIAogICAg ICAgICAgICAgaWYgKHNldHNvY2tvcHQoc29jay0+c29ja2V0ZGVzLCBJUFBST1RPX0lQLCB0 eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJm1pcDQs IHNpemVvZihtaXA0KSkgPT0gLTEpIHsKKyNpZiBBUFJfSEFWRV9FUlJOT19ICiAgICAgICAg ICAgICAgICAgcnYgPSBlcnJubzsKKyNlbHNlCisgICAgICAgICAgICAgICAgcnYgPSBhcHJf Z2V0X25ldG9zX2Vycm9yKCk7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQog I2lmIEFQUl9IQVZFX0lQVjYgJiYgZGVmaW5lZChJUFY2X0pPSU5fR1JPVVApICYmIGRlZmlu ZWQoSVBWNl9MRUFWRV9HUk9VUCkKQEAgLTE4Miw3ICsxODYsMTEgQEANCiAKICAgICAgICAg ICAgIGlmIChzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgSVBQUk9UT19JUFY2LCB0eXBl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJm1pcDYsIHNp emVvZihtaXA2KSkgPT0gLTEpIHsKKyNpZiBBUFJfSEFWRV9FUlJOT19ICiAgICAgICAgICAg ICAgICAgcnYgPSBlcnJubzsKKyNlbHNlCisgICAgICAgICAgICAgICAgcnYgPSBhcHJfZ2V0 X25ldG9zX2Vycm9yKCk7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2Vu ZGlmCkBAIC0yMDEsNyArMjA5LDExIEBADQogICAgIGlmIChzb2NrX2lzX2lwdjQoc29jaykp IHsKICAgICAgICAgaWYgKHNldHNvY2tvcHQoc29jay0+c29ja2V0ZGVzLCBJUFBST1RPX0lQ LCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSAmdmFsdWUs IHNpemVvZih2YWx1ZSkpID09IC0xKSB7CisjaWYgQVBSX0hBVkVfRVJSTk9fSAogICAgICAg ICAgICAgcnYgPSBlcnJubzsKKyNlbHNlCisgICAgICAgICAgICBydiA9IGFwcl9nZXRfbmV0 b3NfZXJyb3IoKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogI2lmIEFQUl9IQVZFX0lQ VjYKQEAgLTIxMCw3ICsyMjIsMTEgQEANCiAgICAgICAgIHR5cGUgPSBJUFY2X01VTFRJQ0FT VF9MT09QOwogICAgICAgICBpZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJP VE9fSVBWNiwgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikg Jmxvb3BvcHQsIHNpemVvZihsb29wb3B0KSkgPT0gLTEpIHsKKyNpZiBBUFJfSEFWRV9FUlJO T19ICiAgICAgICAgICAgICBydiA9IGVycm5vOworI2Vsc2UKKyAgICAgICAgICAgIHJ2ID0g YXByX2dldF9uZXRvc19lcnJvcigpOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAgICAg ZWxzZSBpZiAoc29ja19pc19pcHY2KHNvY2spKSB7CkBAIC0yMjMsNyArMjM5LDExIEBADQog CiAgICAgICAgIGlmIChzZXRzb2Nrb3B0KHNvY2stPnNvY2tldGRlcywgSVBQUk9UT19JUFY2 LCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUsIHNpemVvZih2YWx1ZSkp ID09IC0xKSB7CisjaWYgQVBSX0hBVkVfRVJSTk9fSAogICAgICAgICAgICAgcnYgPSBlcnJu bzsKKyNlbHNlCisgICAgICAgICAgICBydiA9IGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKKyNl bmRpZgogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yODgsNyArMzA4LDExIEBADQog ICAgICAgICBpZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVAsIElQ X01VTFRJQ0FTVF9JRiwKICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikg JmlmYWNlLT5zYS5zaW4uc2luX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihpZmFjZS0+c2Euc2luLnNpbl9hZGRyKSkgPT0gLTEpIHsKKyNpZiBBUFJfSEFWRV9FUlJO T19ICiAgICAgICAgICAgICBydiA9IGVycm5vOworI2Vsc2UKKyAgICAgICAgICAgIHJ2ID0g YXByX2dldF9uZXRvc19lcnJvcigpOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAjaWYg QVBSX0hBVkVfSVBWNgpAQCAtMjk2LDcgKzMyMCwxMSBAQA0KICAgICAgICAgdW5zaWduZWQg aW50IGlkeCA9IGZpbmRfaWZfaW5kZXgoaWZhY2UpOwogICAgICAgICBpZiAoc2V0c29ja29w dChzb2NrLT5zb2NrZXRkZXMsIElQUFJPVE9fSVBWNiwgSVBWNl9NVUxUSUNBU1RfSUYsCiAg ICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopICZpZHgsIHNpemVvZihpZHgp KSA9PSAtMSkgeworI2lmIEFQUl9IQVZFX0VSUk5PX0gKICAgICAgICAgICAgIHJ2ID0gZXJy bm87CisjZWxzZQorICAgICAgICAgICAgcnYgPSBhcHJfZ2V0X25ldG9zX2Vycm9yKCk7Cisj ZW5kaWYKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpJbmRleDogbmV0d29ya19pby91bml4 L3NvY2thZGRyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBuZXR3b3JrX2lvL3VuaXgvc29ja2Fk ZHIuYwkocmV2aXNpb24gNTk5NDUyKQ0KKysrIG5ldHdvcmtfaW8vdW5peC9zb2NrYWRkci5j CSh3b3JraW5nIGNvcHkpDQpAQCAtNTgsNyArNTgsNyBAQA0KICNkZWZpbmUgR0VUSE9TVEJZ TkFNRV9CVUZMRU4gNTEyCiAjZW5kaWYKIAotI2lmZGVmIF9XSU4zMl9XQ0UKKyNpZiBkZWZp bmVkKF9XSU4zMl9XQ0UpICYmIF9XSU4zMl9XQ0UgPCAweDUwMAogLyogWFhYOiBCUyBzb2x1 dGlvbi4gIE5lZWQgYW4gSEFWRV9HRVRTRVJWQllOQU1FIGFuZCBhY3R1YWxseQogICogZG8g c29tZXRoaW5nIGhlcmUsIHRvIHByb3ZpZGUgdGhlIG9idmlvdXMgcHJvdG8gbWFwcGluZ3Mu CiAgKi8KQEAgLTcxNiw3ICs3MTYsMTEgQEANCiAgICAgICAgIHNvY2thZGRyLT5zYS5zaW4u c2luX3BvcnQgPSBzZS0+c19wb3J0OwogICAgICAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CiAg ICAgfQorI2lmIEFQUl9IQVZFX0VSUk5PX0gKICAgICByZXR1cm4gZXJybm87CisjZWxzZQor ICAgIHJldHVybiBhcHJfZ2V0X25ldG9zX2Vycm9yKCk7CisjZW5kaWYKIH0KIAogI2RlZmlu ZSBWNE1BUFBFRF9FUVVBTChhLGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCkluZGV4OiBuZXR3b3JrX2lvL3dpbjMyL3NlbmRyZWN2LmMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBuZXR3b3JrX2lvL3dpbjMyL3NlbmRyZWN2LmMJKHJldmlzaW9uIDU5OTQ1MikNCisr KyBuZXR3b3JrX2lvL3dpbjMyL3NlbmRyZWN2LmMJKHdvcmtpbmcgY29weSkNCkBAIC00MSw3 ICs0MSw2IEBADQogewogICAgIGFwcl9zc2l6ZV90IHJ2OwogICAgIFdTQUJVRiB3c2FEYXRh OwotICAgIGludCBsYXN0ZXJyb3I7CiAgICAgRFdPUkQgZHdCeXRlcyA9IDA7CiAKICAgICB3 c2FEYXRhLmxlbiA9ICh1X2xvbmcpKmxlbjsKQEAgLTU0LDkgKzUzLDggQEANCiAgICAgZHdC eXRlcyA9IHJ2OwogI2VuZGlmCiAgICAgaWYgKHJ2ID09IFNPQ0tFVF9FUlJPUikgewotICAg ICAgICBsYXN0ZXJyb3IgPSBhcHJfZ2V0X25ldG9zX2Vycm9yKCk7CiAgICAgICAgICpsZW4g PSAwOwotICAgICAgICByZXR1cm4gbGFzdGVycm9yOworICAgICAgICByZXR1cm4gYXByX2dl dF9uZXRvc19lcnJvcigpOwogICAgIH0KIAogICAgICpsZW4gPSBkd0J5dGVzOwpAQCAtNzAs NyArNjgsNiBAQA0KIHsKICAgICBhcHJfc3NpemVfdCBydjsKICAgICBXU0FCVUYgd3NhRGF0 YTsKLSAgICBpbnQgbGFzdGVycm9yOwogICAgIERXT1JEIGR3Qnl0ZXMgPSAwOwogICAgIERX T1JEIGZsYWdzID0gMDsKIApAQCAtODQsOSArODEsOCBAQA0KICAgICBkd0J5dGVzID0gcnY7 CiAjZW5kaWYKICAgICBpZiAocnYgPT0gU09DS0VUX0VSUk9SKSB7Ci0gICAgICAgIGxhc3Rl cnJvciA9IGFwcl9nZXRfbmV0b3NfZXJyb3IoKTsKICAgICAgICAgKmxlbiA9IDA7Ci0gICAg ICAgIHJldHVybiBsYXN0ZXJyb3I7CisgICAgICAgIHJldHVybiBhcHJfZ2V0X25ldG9zX2Vy cm9yKCk7CiAgICAgfQogCiAgICAgKmxlbiA9IGR3Qnl0ZXM7CkBAIC00NTYsMyArNDUyLDQg QEANCiAKICNlbmRpZgogCisKSW5kZXg6IG5ldHdvcmtfaW8vd2luMzIvc29ja29wdC5jDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gbmV0d29ya19pby93aW4zMi9zb2Nrb3B0LmMJKHJldmlzaW9u IDU5OTQ1MikNCisrKyBuZXR3b3JrX2lvL3dpbjMyL3NvY2tvcHQuYwkod29ya2luZyBjb3B5 KQ0KQEAgLTYzLDEyICs2MywxNCBAQA0KICAgICAgICAgewogICAgICAgICAgICAgLyogV2lu MzIgdGltZW91dHMgYXJlIGluIG1zZWMsIHJlcHJlc2VudGVkIGFzIGludCAqLwogICAgICAg ICAgICAgc29jay0+dGltZW91dF9tcyA9IChpbnQpYXByX3RpbWVfYXNfbXNlYyh0KTsKKyNp Zm5kZWYgX1dJTjMyX1dDRQogICAgICAgICAgICAgc2V0c29ja29wdChzb2NrLT5zb2NrZXRk ZXMsIFNPTF9TT0NLRVQsIFNPX1JDVlRJTUVPLCAKICAgICAgICAgICAgICAgICAgICAgICAg KGNoYXIgKikgJnNvY2stPnRpbWVvdXRfbXMsIAogICAgICAgICAgICAgICAgICAgICAgICBz aXplb2Yoc29jay0+dGltZW91dF9tcykpOwogICAgICAgICAgICAgc2V0c29ja29wdChzb2Nr LT5zb2NrZXRkZXMsIFNPTF9TT0NLRVQsIFNPX1NORFRJTUVPLCAKICAgICAgICAgICAgICAg ICAgICAgICAgKGNoYXIgKikgJnNvY2stPnRpbWVvdXRfbXMsIAogICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoc29jay0+dGltZW91dF9tcykpOworI2VuZGlmCiAgICAgICAgIH0K ICAgICB9CiAgICAgZWxzZSBpZiAodCA8IDApIHsKQEAgLTc2LDEwICs3OCwxMiBAQA0KICAg ICAgICAgLyogU2V0IHRoZSBzb2NrZXQgdG8gYmxvY2tpbmcgd2l0aCBpbmZpbml0ZSB0aW1l b3V0cyAqLwogICAgICAgICBpZiAoKHN0YXQgPSBzb2Jsb2NrKHNvY2stPnNvY2tldGRlcykp ICE9IEFQUl9TVUNDRVNTKQogICAgICAgICAgICAgcmV0dXJuIHN0YXQ7CisjaWZuZGVmIF9X SU4zMl9XQ0UKICAgICAgICAgc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIFNPTF9TT0NL RVQsIFNPX1JDVlRJTUVPLCAKICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSAmemVybywg c2l6ZW9mKHplcm8pKTsKICAgICAgICAgc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIFNP TF9TT0NLRVQsIFNPX1NORFRJTUVPLCAKICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSAm emVybywgc2l6ZW9mKHplcm8pKTsKKyNlbmRpZgogICAgIH0KICAgICBzb2NrLT50aW1lb3V0 ID0gdDsKICAgICByZXR1cm4gQVBSX1NVQ0NFU1M7CkBAIC0yNzEsMyArMjc1LDQgQEANCiAg ICAgcmV0dXJuIEFQUl9TVUNDRVNTOwogfQogCisKSW5kZXg6IHNobWVtL3dpbjMyL3NobS5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gc2htZW0vd2luMzIvc2htLmMJKHJldmlzaW9uIDU5OTQ1 MikNCisrKyBzaG1lbS93aW4zMi9zaG0uYwkod29ya2luZyBjb3B5KQ0KQEAgLTg2LDEyICs4 NiwxMSBAQA0KIAogICAgIGlmICghZmlsZSkgewogICAgICAgICAvKiBEbyBBbm9ueW1vdXMs IHdoaWNoIG11c3QgYmUgcGFzc2VkIGFzIGEgZHVwbGljYXRlZCBoYW5kbGUgKi8KLSNpZm5k ZWYgX1dJTjMyX1dDRQogICAgICAgICBoRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwot I2VuZGlmCiAgICAgICAgIG1hcGtleSA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgeworI2lm bmRlZiBfV0lOMzJfV0NFCiAgICAgICAgIC8qIERvIGZpbGUgYmFja2VkLCB3aGljaCBpcyBu b3QgYW4gaW5oZXJpdGVkIGhhbmRsZSAKICAgICAgICAgICogV2hpbGUgd2UgY291bGQgb3Bl biBBUFJfRVhDTCwgaXQgZG9lc24ndCBzZWVtIHRoYXQgVW5peAogICAgICAgICAgKiBldmVy IGRpZC4gIElnbm9yZSB0aGF0IGVycm9yIGhlcmUsIGJ1dCBmYWlsIGxhdGVyIHdoZW4KQEAg LTEwNSw3ICsxMDQsMjQgQEANCiAgICAgICAgICAgICByZXR1cm4gcnY7CiAgICAgICAgIH0K ICAgICAgICAgcnYgPSBhcHJfZmlsZV90cnVuYyhmLCBzaXplKTsKKyNlbHNlCisgICAgICAg IGFwcl93Y2hhcl90IHdmbmFtZVtBUFJfUEFUSF9NQVhdOwogCisgICAgICAgIHJ2ID0gdXRm OF90b191bmljb2RlX3BhdGgod2ZuYW1lLCBBUFJfUEFUSF9NQVgsIGZpbGUpOworICAgICAg ICBpZiAocnYgIT0gQVBSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHJldHVybiBydjsKKyAg ICAgICAgfQorICAgICAgICAvKiBOZWVkIHRvIHVzZSBDcmVhdGVGaWxlRm9yTWFwcGluZygp IG9uIENFIHRvIGVuc3VyZSBNTWFwIGZpbGVzCisgICAgICAgICAqIHdvcmsuIENFIGlnbm9y ZXMgdGhlIHNoYXJlbW9kZSBwYXJhbWV0ZXIuIEluc3RlYWQsIGl0IGdyYW50cworICAgICAg ICAgKiB0aGUgc2FtZSBzaGFyZSBtb2RlIGFzIHRoZSBkZXNpcmVkIGFjY2VzcyAob3Blbikg ZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVGb3JNYXBw aW5nVyh3Zm5hbWUsIEdFTkVSSUNfUkVBRAorICAgICAgICAgICAgfCBHRU5FUklDX1dSSVRF LCAwLCBOVUxMLCBPUEVOX0FMV0FZUywgMCwgTlVMTCk7CisgICAgICAgIGlmICghaEZpbGUg fHwgaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVy biBhcHJfZ2V0X29zX2Vycm9yKCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8q IHJlc19uYW1lX2Zyb21fZmlsZW5hbWUgdHVybnMgZmlsZSBpbnRvIGEgcHNldWRvLW5hbWUK ICAgICAgICAgICogd2l0aG91dCBzbGFzaGVzIG9yIGJhY2tzbGFzaGVzLCBhbmQgcHJlcGVu ZHMgdGhlIFxnbG9iYWwKICAgICAgICAgICogcHJlZml4IG9uIFdpbjJLIGFuZCBsYXRlcgpA QCAtMTI5LDkgKzE0NSwxMSBAQA0KICNlbmRpZgogICAgIGVyciA9IGFwcl9nZXRfb3NfZXJy b3IoKTsKIAorI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgaWYgKGZpbGUpIHsKICAgICAgICAg YXByX2ZpbGVfY2xvc2UoZik7CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAoaE1hcCAmJiBB UFJfU1RBVFVTX0lTX0VFWElTVChlcnIpKSB7CiAgICAgICAgIENsb3NlSGFuZGxlKGhNYXAp OwpAQCAtMzA3LDMgKzMyNSw0IEBADQogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0gICAg CiAKKwpJbmRleDogc3RyaW5ncy9hcHJfc3RyaW5ncy5jDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g c3RyaW5ncy9hcHJfc3RyaW5ncy5jCShyZXZpc2lvbiA1OTk0NTIpDQorKysgc3RyaW5ncy9h cHJfc3RyaW5ncy5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMjM5LDcgKzIzOSwxMyBAQA0KIHsK ICAgICBlcnJubyA9IDA7CiAgICAgKm9mZnNldCA9IEFQUl9PRkZfVF9TVFJGTihucHRyLCBl bmRwdHIsIGJhc2UpOworI2lmbmRlZiBfV0lOMzJfV0NFCiAgICAgcmV0dXJuIEFQUl9GUk9N X09TX0VSUk9SKGVycm5vKTsKKyNlbHNlCisgICAgaWYgKCpvZmZzZXQgPT0gTE9OR19NQVgg fHwgKm9mZnNldCA9PSBMT05HX01JTikKKyAgICAgICAgcmV0dXJuIEFQUl9GUk9NX09TX0VS Uk9SKEVSUk9SX0FSSVRITUVUSUNfT1ZFUkZMT1cpOworICAgIHJldHVybiBBUFJfU1VDQ0VT UzsKKyNlbmRpZgogfQogCiBBUFJfREVDTEFSRShhcHJfaW50NjRfdCkgYXByX3N0cnRvaTY0 KGNvbnN0IGNoYXIgKm5wdHIsIGNoYXIgKiplbmRwdHIsIGludCBiYXNlKQpAQCAtNDY0LDMg KzQ3MCw1IEBADQogICAgIH0gd2hpbGUgKDEpOwogfQogCisKKwpJbmRleDogdGhyZWFkcHJv Yy93aW4zMi9wcm9jLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0aHJlYWRwcm9jL3dpbjMyL3By b2MuYwkocmV2aXNpb24gNTk5NDUyKQ0KKysrIHRocmVhZHByb2Mvd2luMzIvcHJvYy5jCSh3 b3JraW5nIGNvcHkpDQpAQCAtNjM0LDkgKzYzNCwxMiBAQA0KICAgICAgICAgICAgICAqIGNv bXBsZXRlIGZpbGUgcGF0aC4gIFRoYXQgaXM7ICJjOlxiaW5cYXBydGVzdC5leGUiCiAgICAg ICAgICAgICAgKiB3b3VsZCBzdWNjZWVkLCBidXQgImM6XGJpblxhcHJ0ZXN0IiBvciAiYXBy dGVzdC5leGUiCiAgICAgICAgICAgICAgKiBjYW4gZmFpbC4KKyAgICAgICAgICAgICAqIEFw cGFyZW50bHksIENFIDUgYWxyZWFkeSBwYXNzZXMgdGhlIHByb2dyYW0gbmFtZSBhcyB0aGUg Zmlyc3QKKyAgICAgICAgICAgICAqIGFyZ3VtZW50LgogICAgICAgICAgICAgICovCi0gICAg ICAgICAgICBjbWRsaW5lID0gYXByX3BzdHJjYXQocG9vbCwgYXJndjAsIGNtZGxpbmUsIE5V TEwpOwotCisgICAgICAgICAgICBpZiAoYXByX29zX2xldmVsIDwgQVBSX1dJTl9DRV81KSB7 CisgICAgICAgICAgICAgICAgY21kbGluZSA9IGFwcl9wc3RyY2F0KHBvb2wsIGFyZ3YwLCBj bWRsaW5lLCBOVUxMKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhdHRyLT5j bWR0eXBlID09IEFQUl9QUk9HUkFNX1BBVEgpIHsKICAgICAgICAgICAgICAgICBwcm9nbmFt ZSA9IE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02NjgsNyArNjcxLDggQEANCiAgICAgICAg IHsKICAgICAgICAgICAgIGFwcl93Y2hhcl90ICpwTmV4dDsKICAgICAgICAgICAgIHBFbnZC bG9jayA9IChjaGFyICopYXByX3BhbGxvYyhwb29sLCBpRW52QmxvY2tMZW4gKiAyKTsKLSAg ICAgICAgICAgIGR3Q3JlYXRpb25GbGFncyB8PSBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVO VDsKKyAgICAgICAgICAgIGlmIChhcHJfb3NfbGV2ZWwgPj0gQVBSX1dJTl9OVCkKKyAgICAg ICAgICAgICAgICBkd0NyZWF0aW9uRmxhZ3MgfD0gQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1F TlQ7CiAKICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgcE5leHQgPSAoYXByX3dj aGFyX3QqKXBFbnZCbG9jazsKSW5kZXg6IHRocmVhZHByb2Mvd2luMzIvdGhyZWFkLmMNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCi0tLSB0aHJlYWRwcm9jL3dpbjMyL3RocmVhZC5jCShyZXZpc2lvbiA1 OTk0NTIpDQorKysgdGhyZWFkcHJvYy93aW4zMi90aHJlYWQuYwkod29ya2luZyBjb3B5KQ0K QEAgLTExNiw3ICsxMTYsOSBAQA0KICAgIGlmICgoaGFuZGxlID0gQ3JlYXRlVGhyZWFkKE5V TEwsCiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICYmIGF0dHItPnN0YWNrc2l6ZSA+ IDAgPyBhdHRyLT5zdGFja3NpemUgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgKHVu c2lnbmVkIGludCAoQVBSX1RIUkVBRF9GVU5DICopKHZvaWQgKikpZHVtbXlfd29ya2VyLAot ICAgICAgICAgICAgICAgICAgICAgICAgKCpuZXcpLCAwLCAmdGVtcCkpID09IDApIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICgqbmV3KSwgYXR0ciAmJiBhdHRyLT5zdGFja3NpemUg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICA/IFNUQUNLX1NJWkVfUEFSQU1fSVNfQV9S RVNFUlZBVElPTiA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAmdGVtcCkpID09IDAp IHsKICAgICAgICAgcmV0dXJuIGFwcl9nZXRfb3NfZXJyb3IoKTsKICAgICB9CiAjZW5kaWYK SW5kZXg6IHRpbWUvd2luMzIvdGltZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdGltZS93aW4z Mi90aW1lLmMJKHJldmlzaW9uIDU5OTQ1MikNCisrKyB0aW1lL3dpbjMyL3RpbWUuYwkod29y a2luZyBjb3B5KQ0KQEAgLTkxLDkgKzkxLDcgQEANCiAjaWZuZGVmIF9XSU4zMl9XQ0UKICAg ICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmdGltZSk7CiAjZWxzZQotICAgIFNZU1RFTVRJ TUUgc3Q7Ci0gICAgR2V0U3lzdGVtVGltZSgmc3QpOwotICAgIFN5c3RlbVRpbWVUb0ZpbGVU aW1lKCZzdCwgJnRpbWUpOworICAgIEdldEN1cnJlbnRGVCgmdGltZSk7CiAjZW5kaWYKICAg ICBGaWxlVGltZVRvQXByVGltZSgmYXBydGltZSwgJnRpbWUpOwogICAgIHJldHVybiBhcHJ0 aW1lOyAK --------------060704020209050202050507--