From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87730 invoked by alias); 17 Jun 2019 13:27:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 87715 invoked by uid 89); 17 Jun 2019 13:27:53 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-12.8 required=5.0 tests=AWL,BAYES_20,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_NUMSUBJECT,KAM_SHORT,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=Environment, validated, registration, dimensions X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 17 Jun 2019 13:27:30 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-MBX-04.mgc.mentorg.com) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1hcrfR-0001qy-E4 from Kwok_Yeung@mentor.com for gcc-patches@gcc.gnu.org; Mon, 17 Jun 2019 06:27:26 -0700 Received: from [172.30.65.52] (137.202.0.90) by SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Mon, 17 Jun 2019 14:27:20 +0100 From: Kwok Cheung Yeung Subject: [PATCH, og9] Port OpenACC profiling interface to OG9 To: Thomas Schwinge , CC: Catherine Moore Message-ID: Date: Mon, 17 Jun 2019 13:27:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------07B02AA404F2D74F124954F7" X-SW-Source: 2019-06/txt/msg00946.txt.bz2 --------------07B02AA404F2D74F124954F7 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 431 Hello This is a straightforward port of the OpenACC profiling interface from OG8 to OG9, with a few tweaks to compensate for patches that have not been carried over to OG9. I have also bundled in the profiling hooks and documentation updates that have been added since the original patch in OG8. This has been tested on x86_64 with no regressions on the libgomp testsuite. Okay to push to openacc-gcc-9-branch? Thanks Kwok --------------07B02AA404F2D74F124954F7 Content-Type: text/plain; charset="UTF-8"; name="0001-OpenACC-2.6-Profiling-Interface.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-OpenACC-2.6-Profiling-Interface.patch" Content-length: 249486 RnJvbSA4YWY1NTBkY2ZjNmMzMzllMTkyOTNkNTk2OTJjYjU5NWEyY2IyZDY5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgU2Nod2lu Z2UgPHRob21hc0Bjb2Rlc291cmNlcnkuY29tPgpEYXRlOiBUdWUsIDI4IEZl YiAyMDE3IDE3OjM2OjAzICswMDAwClN1YmplY3Q6IFtQQVRDSF0gT3BlbkFD QyAyLjYgUHJvZmlsaW5nIEludGVyZmFjZQoKCWxpYmdvbXAvCgkqIGFjY19w cm9mLmg6IE5ldyBmaWxlLgoJKiBvYWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0 ZXJfbGlicmFyeS5jOiBMaWtld2lzZS4KCSogb2FjYy1wcm9maWxpbmcuYzog TGlrZXdpc2UuCgkqIE1ha2VmaWxlLmFtIChub2Rpc3RfbGlic3ViaW5jbHVk ZV9IRUFERVJTLCBsaWJnb21wX2xhX1NPVVJDRVMpOgoJQWRkIHRoZXNlLCBy ZXNwZWN0aXZlbHkuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBs aWJnb21wL2NvbmZpZy9udnB0eC9vYWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0 ZXJfbGlicmFyeS5jOgoJTmV3IGVtcHR5IGZpbGUuCgkqIGxpYmdvbXAvY29u ZmlnL252cHR4L29hY2MtcHJvZmlsaW5nLmM6IExpa2V3aXNlLgoJKiBlbnYu YyAoaW5pdGlhbGl6ZV9lbnYpOiBDYWxsIGdvYWNjX3Byb2ZpbGluZ19pbml0 aWFsaXplLgoJKiBsaWJnb21wLXBsdWdpbi5jOiBOZXcgZnVuY3Rpb24KCUdP TVBfUExVR0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaC4KCSogbGliZ29t cC1wbHVnaW4uaDogRGVjbGFyZSBmdW5jdGlvbgoJR09NUF9QTFVHSU5fZ29h Y2NfcHJvZmlsaW5nX2Rpc3BhdGNoLgoJKiBvYWNjLXBsdWdpbi5jOiBOZXcg ZnVuY3Rpb24gR09NUF9QTFVHSU5fZ29hY2NfdGhyZWFkLgoJKiBvYWNjLXBs dWdpbi5oOiBEZWNsYXJlIGZ1bmN0aW9uIEdPTVBfUExVR0lOX2dvYWNjX3Ro cmVhZC4KCSogbGliZ29tcC5tYXAgKE9BQ0NfMi41KTogQWRkIGFjY19wcm9m X2xvb2t1cCwgYWNjX3Byb2ZfcmVnaXN0ZXIsCglhY2NfcHJvZl91bnJlZ2lz dGVyLCBhbmQgYWNjX3JlZ2lzdGVyX2xpYnJhcnkuCglBZGQgR09NUF9QTFVH SU5fZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoLCBhbmQKCUdPTVBfUExVR0lO X2dvYWNjX3RocmVhZCB3aXRoIG5ldyBHT01QX1BMVUdJTl8xLjMgc3ltYm9s IHZlcnNpb24uCgkqIG9hY2MtaW50LmggKHN0cnVjdCBnb2FjY190aHJlYWQp OiBBZGQgImFjY19wcm9mX2luZm8KCSpwcm9mX2luZm8iLCAiYWNjX2FwaV9p bmZvICphcGlfaW5mbyIsIGFuZCAiYm9vbAoJcHJvZl9jYWxsYmFja3NfZW5h YmxlZCIgbWVtYmVycy4KCURlY2xhcmUgZnVuY3Rpb25zIGdvYWNjX3Byb2Zp bGluZ19pbml0aWFsaXplLAoJZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoX3As IGFuZCBnb2FjY19wcm9maWxpbmdfZGlzcGF0Y2guCgkqIG9hY2MtaW5pdC5j IChhY2NfaW5pdF8xKTogQWRkICJhY2NfY29uc3RydWN0X3QiLCBhbmQgImlu dCIKCWZvcm1hbCBwYXJhbWV0ZXJzLiAgQWRqdXN0IGFsbCB1c2Vycy4KCShn b2FjY19sYXp5X2luaXRpYWxpemUpOiBEb24ndCBjYWxsIGFjY19pbml0OyBj b3B5IGNvZGUgaGVyZSwKCWluc3RlYWQuCgkoYWNjX2luaXRfMSwgZ29hY2Nf YXR0YWNoX2hvc3RfdGhyZWFkX3RvX2RldmljZSwgYWNjX2luaXQpCgkoZ29h Y2NfbGF6eV9pbml0aWFsaXplKTogVXBkYXRlIGZvciBPcGVuQUNDIFByb2Zp bGluZyBJbnRlcmZhY2UuCgkqIG9hY2MtcGFyYWxsZWwuYyAoR09BQ0NfcGFy YWxsZWxfa2V5ZWQpOiBMaWtld2lzZS4KCSogcGx1Z2luL3BsdWdpbi1udnB0 eC5jIChjdWRhX21hcF9jcmVhdGUsIGN1ZGFfbWFwX2Rlc3Ryb3kpCgkobWFw X2luaXQsIG1hcF9maW5pLCBtYXBfcG9wLCBtYXBfcHVzaCk6IEFkZCAic3Ry dWN0IGdvYWNjX3RocmVhZAoJKiIgZm9ybWFsIHBhcmFtZXRlci4gIEFkanVz dCBhbGwgdXNlcnMuCgkoc2VsZWN0X3N0cmVhbV9mb3JfYXN5bmMsIGV2ZW50 X2djLCBudnB0eF9leGVjLCBudnB0eF9ob3N0MmRldikKCShudnB0eF9kZXYy aG9zdCwgbnZwdHhfc2V0X2N1ZGFfc3RyZWFtKTogQ2FsbAoJR09NUF9QTFVH SU5fZ29hY2NfdGhyZWFkIGluc3RlYWQgb2YgbnZwdHhfdGhyZWFkLgoJKGN1 ZGFfbWFwX2NyZWF0ZSwgY3VkYV9tYXBfZGVzdHJveSwgbnZwdHhfZXhlYywg bnZwdHhfYWxsb2MpCgkobnZwdHhfZnJlZSwgbnZwdHhfaG9zdDJkZXYsIG52 cHR4X2RldjJob3N0KTogVXBkYXRlIGZvciBPcGVuQUNDCglQcm9maWxpbmcg SW50ZXJmYWNlLgoJKiBsaWJnb21wLnRleGk6IE5ldyBjaGFwdGVyICJPcGVu QUNDIFByb2ZpbGluZyBJbnRlcmZhY2UiLgoJKiB0ZXN0c3VpdGUvbGliZ29t cC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJvZi1kaXNwYXRjaC0xLmM6IE5l dwoJZmlsZS4KCSogdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21t b24vYWNjX3Byb2YtaW5pdC0xLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUv bGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJvZi1rZXJuZWxzLTEu YzoKCUxpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysr LWNvbW1vbi9hY2NfcHJvZi1wYXJhbGxlbC0xLmM6CglMaWtld2lzZS4KCSog dGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21tb24vYWNjX3Byb2Yt dmFsaWRfYnl0ZXMtMS5jOgoJTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9saWJn b21wLm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLXZlcnNpb24tMS5jOgoJ TGlrZXdpc2UuCgoJbGliZ29tcC8KCSogb2FjYy1hc3luYy5jIChhY2NfYXN5 bmNfdGVzdCwgYWNjX2FzeW5jX3Rlc3RfYWxsLCBhY2Nfd2FpdCkKCShhY2Nf d2FpdF9hc3luYywgYWNjX3dhaXRfYWxsLCBhY2Nfd2FpdF9hbGxfYXN5bmMp OiBTZXQgdXAKCXByb2ZpbGluZy4KCSogb2FjYy1jdWRhLmMgKGFjY19nZXRf Y3VycmVudF9jdWRhX2RldmljZSkKCShhY2NfZ2V0X2N1cnJlbnRfY3VkYV9j b250ZXh0LCBhY2NfZ2V0X2N1ZGFfc3RyZWFtKQoJKGFjY19zZXRfY3VkYV9z dHJlYW0pOiBMaWtld2lzZS4KCSogb2FjYy1pbml0LmMgKGFjY19zZXRfZGV2 aWNlX3R5cGUsIGFjY19nZXRfZGV2aWNlX3R5cGUpCgkoYWNjX2dldF9kZXZp Y2VfbnVtKTogTGlrZXdpc2UuCgkqIG9hY2MtbWVtLmMgKGFjY19tYWxsb2Ms IGFjY19mcmVlLCBtZW1jcHlfdG9mcm9tX2RldmljZSkKCShhY2NfbWFwX2Rh dGEsIGFjY191bm1hcF9kYXRhLCBwcmVzZW50X2NyZWF0ZV9jb3B5KQoJKGRl bGV0ZV9jb3B5b3V0LCB1cGRhdGVfZGV2X2hvc3QpOiBMaWtld2lzZS4KCSog b2FjYy1wYXJhbGxlbC5jIChHT0FDQ19kYXRhX3N0YXJ0LCBHT0FDQ19kYXRh X2VuZCkKCShHT0FDQ19lbnRlcl9leGl0X2RhdGEsIEdPQUNDX3VwZGF0ZSwg R09BQ0Nfd2FpdCk6IExpa2V3aXNlLgoJKiBvYWNjLXByb2ZpbGluZy5jIChn b2FjY19wcm9maWxpbmdfc2V0dXBfcCk6IE5ldyBmdW5jdGlvbi4KCShnb2Fj Y19wcm9maWxpbmdfZGlzcGF0Y2hfcCk6IEFkZCBhICJib29sIiBmb3JtYWwg cGFyYW1ldGVyLgoJQWRqdXN0IGFsbCB1c2Vycy4KCSogb2FjYy1pbnQuaCAo Z29hY2NfcHJvZmlsaW5nX3NldHVwX3ApCgkoZ29hY2NfcHJvZmlsaW5nX2Rp c3BhdGNoX3ApOiBVcGRhdGUuCgkqIHBsdWdpbi9wbHVnaW4tbnZwdHguYyAo bnZwdHhfZXhlYywgbnZwdHhfd2FpdCwgbnZwdHhfd2FpdF9hbGwpOgoJR2Vu ZXJhdGUgbW9yZSBwcm9maWxpbmcgZXZlbnRzLgoJKiBsaWJnb21wLnRleGkg KE9wZW5BQ0MgRW52aXJvbm1lbnQgVmFyaWFibGVzKTogTWVudGlvbgoJIkFD Q19QUk9GTElCIi4KCShPcGVuQUNDIFByb2ZpbGluZyBJbnRlcmZhY2UpOiBV cGRhdGUuCgoJbGliZ29tcC8KCSogb2FjYy1pbml0LmMgKGdldF9wcm9wZXJ0 eV9hbnkpOiBBZGQgcHJvZmlsaW5nIGNvZGUuCgoJbGliZ29tcC8KCSogYWNj X3Byb2YuaCAoX0FDQ19QUk9GX0lORk9fVkVSU0lPTik6IFVwZGF0ZSB0byAy MDE3MTEuCgkqIGxpYmdvbXAudGV4aTogVXBkYXRlIG1lbnRpb25zIG9mIE9w ZW5BQ0MgdmVyc2lvbiB0byAyLjYuCgkqIHRlc3RzdWl0ZS9saWJnb21wLm9h Y2MtYy1jKystY29tbW9uL2FjY19wcm9mLXZlcnNpb24tMS5jCgkoY2JfYW55 X2V2ZW50KTogVXBkYXRlIGV4cGVjdGVkIHByb2ZpbGluZyBpbmZvIHZlcnNp b24gdG8gMjAxNzExLgotLS0KIGxpYmdvbXAvQ2hhbmdlTG9nLm9wZW5hY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDk2ICsrKwogbGliZ29tcC9N YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDMgKy0KIGxpYmdvbXAvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDE0ICstCiBsaWJnb21wL2FjY19wcm9mLmggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIzNyArKysrKysrCiAu Li4vbnZwdHgvb2FjYy1wcm9maWxpbmctYWNjX3JlZ2lzdGVyX2xpYnJhcnku YyAgICB8ICAgMAogbGliZ29tcC9jb25maWcvbnZwdHgvb2FjYy1wcm9maWxp bmcuYyAgICAgICAgICAgICAgfCAgIDAKIGxpYmdvbXAvZW52LmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGxpYmdv bXAvbGliZ29tcC1wbHVnaW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA5ICsKIGxpYmdvbXAvbGliZ29tcC1wbHVnaW4uaCAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICsKIGxpYmdvbXAvbGliZ29tcC5tYXAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKIGxpYmdv bXAvbGliZ29tcC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMzA4ICsrKysrKysrKwogbGliZ29tcC9vYWNjLWFzeW5jLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxMTQgKysrLQogbGliZ29tcC9v YWNjLWN1ZGEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ODcgKystCiBsaWJnb21wL29hY2MtaW5pdC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwMyArKysrKy0KIGxpYmdvbXAvb2FjYy1pbnQu aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsKIGxp YmdvbXAvb2FjYy1tZW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTU0ICsrKystCiBsaWJnb21wL29hY2MtcGFyYWxsZWwuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDQ3NSArKysrKysrKysrKysrLQog bGliZ29tcC9vYWNjLXBsdWdpbi5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTMgKwogbGliZ29tcC9vYWNjLXBsdWdpbi5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogbGliZ29tcC9vYWNjLXBy b2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGlicmFyeS5jICAgICAgfCAgMzkgKysK IGxpYmdvbXAvb2FjYy1wcm9maWxpbmcuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNjY2ICsrKysrKysrKysrKysrKysrKysrCiBsaWJnb21wL3Bs dWdpbi9wbHVnaW4tbnZwdHguYyAgICAgICAgICAgICAgICAgICAgICB8IDE3 OCArKysrKysKIC4uLi9hY2NfcHJvZi1kaXNwYXRjaC0xLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMzQ0ICsrKysrKysrKysKIC4uLi9saWJnb21w Lm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLWluaXQtMS5jICAgIHwgMzA2 ICsrKysrKysrKwogLi4uL2xpYmdvbXAub2FjYy1jLWMrKy1jb21tb24vYWNj X3Byb2Yta2VybmVscy0xLmMgfCAyNTMgKysrKysrKysKIC4uLi9hY2NfcHJv Zi1wYXJhbGxlbC0xLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjk4 ICsrKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY19wcm9mLXZhbGlkX2J5 dGVzLTEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxNzIgKysrKysKIC4u Li9saWJnb21wLm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLXZlcnNpb24t MS5jIHwgIDU1ICsrCiAyOCBmaWxlcyBjaGFuZ2VkLCA0Mzk5IGluc2VydGlv bnMoKyksIDYxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp YmdvbXAvYWNjX3Byb2YuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdvbXAv Y29uZmlnL252cHR4L29hY2MtcHJvZmlsaW5nLWFjY19yZWdpc3Rlcl9saWJy YXJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21wL2NvbmZpZy9udnB0 eC9vYWNjLXByb2ZpbGluZy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ29t cC9vYWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGlicmFyeS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliZ29tcC9vYWNjLXByb2ZpbGluZy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNj LWMtYysrLWNvbW1vbi9hY2NfcHJvZi1kaXNwYXRjaC0xLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9hY2MtYy1j KystY29tbW9uL2FjY19wcm9mLWluaXQtMS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1v bi9hY2NfcHJvZi1rZXJuZWxzLTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp YmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21tb24vYWNj X3Byb2YtcGFyYWxsZWwtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJv Zi12YWxpZF9ieXRlcy0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9m LXZlcnNpb24tMS5jCgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9DaGFuZ2VMb2cu b3BlbmFjYyBiL2xpYmdvbXAvQ2hhbmdlTG9nLm9wZW5hY2MKaW5kZXggYjNi Y2IzMS4uYmNjYTQ5NCAxMDA2NDQKLS0tIGEvbGliZ29tcC9DaGFuZ2VMb2cu b3BlbmFjYworKysgYi9saWJnb21wL0NoYW5nZUxvZy5vcGVuYWNjCkBAIC0x LDMgKzEsOTkgQEAKKzIwMTktMDEtMDkgIEp1bGlhbiBCcm93biAgPGp1bGlh bkBjb2Rlc291cmNlcnkuY29tPgorCisJKiBhY2NfcHJvZi5oIChfQUNDX1BS T0ZfSU5GT19WRVJTSU9OKTogVXBkYXRlIHRvIDIwMTcxMS4KKwkqIGxpYmdv bXAudGV4aTogVXBkYXRlIG1lbnRpb25zIG9mIE9wZW5BQ0MgdmVyc2lvbiB0 byAyLjYuCisJKiB0ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1v bi9hY2NfcHJvZi12ZXJzaW9uLTEuYworCShjYl9hbnlfZXZlbnQpOiBVcGRh dGUgZXhwZWN0ZWQgcHJvZmlsaW5nIGluZm8gdmVyc2lvbiB0byAyMDE3MTEu CisKKzIwMTgtMTItMjAgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AY29k ZXNvdXJjZXJ5LmNvbT4KKworCSogb2FjYy1pbml0LmMgKGdldF9wcm9wZXJ0 eV9hbnkpOiBBZGQgcHJvZmlsaW5nIGNvZGUuCisKKzIwMTctMDUtMTUgIFRo b21hcyBTY2h3aW5nZSAgPHRob21hc0Bjb2Rlc291cmNlcnkuY29tPgorCisJ KiBvYWNjLWFzeW5jLmMgKGFjY19hc3luY190ZXN0LCBhY2NfYXN5bmNfdGVz dF9hbGwsIGFjY193YWl0KQorCShhY2Nfd2FpdF9hc3luYywgYWNjX3dhaXRf YWxsLCBhY2Nfd2FpdF9hbGxfYXN5bmMpOiBTZXQgdXAKKwlwcm9maWxpbmcu CisJKiBvYWNjLWN1ZGEuYyAoYWNjX2dldF9jdXJyZW50X2N1ZGFfZGV2aWNl KQorCShhY2NfZ2V0X2N1cnJlbnRfY3VkYV9jb250ZXh0LCBhY2NfZ2V0X2N1 ZGFfc3RyZWFtKQorCShhY2Nfc2V0X2N1ZGFfc3RyZWFtKTogTGlrZXdpc2Uu CisJKiBvYWNjLWluaXQuYyAoYWNjX3NldF9kZXZpY2VfdHlwZSwgYWNjX2dl dF9kZXZpY2VfdHlwZSkKKwkoYWNjX2dldF9kZXZpY2VfbnVtKTogTGlrZXdp c2UuCisJKiBvYWNjLW1lbS5jIChhY2NfbWFsbG9jLCBhY2NfZnJlZSwgbWVt Y3B5X3RvZnJvbV9kZXZpY2UpCisJKGFjY19tYXBfZGF0YSwgYWNjX3VubWFw X2RhdGEsIHByZXNlbnRfY3JlYXRlX2NvcHkpCisJKGRlbGV0ZV9jb3B5b3V0 LCB1cGRhdGVfZGV2X2hvc3QpOiBMaWtld2lzZS4KKwkqIG9hY2MtcGFyYWxs ZWwuYyAoR09BQ0NfZGF0YV9zdGFydCwgR09BQ0NfZGF0YV9lbmQpCisJKEdP QUNDX2VudGVyX2V4aXRfZGF0YSwgR09BQ0NfdXBkYXRlLCBHT0FDQ193YWl0 KTogTGlrZXdpc2UuCisJKiBvYWNjLXByb2ZpbGluZy5jIChnb2FjY19wcm9m aWxpbmdfc2V0dXBfcCk6IE5ldyBmdW5jdGlvbi4KKwkoZ29hY2NfcHJvZmls aW5nX2Rpc3BhdGNoX3ApOiBBZGQgYSAiYm9vbCIgZm9ybWFsIHBhcmFtZXRl ci4KKwlBZGp1c3QgYWxsIHVzZXJzLgorCSogb2FjYy1pbnQuaCAoZ29hY2Nf cHJvZmlsaW5nX3NldHVwX3ApCisJKGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRj aF9wKTogVXBkYXRlLgorCSogcGx1Z2luL3BsdWdpbi1udnB0eC5jIChudnB0 eF9leGVjLCBudnB0eF93YWl0LCBudnB0eF93YWl0X2FsbCk6CisJR2VuZXJh dGUgbW9yZSBwcm9maWxpbmcgZXZlbnRzLgorCSogbGliZ29tcC50ZXhpIChP cGVuQUNDIEVudmlyb25tZW50IFZhcmlhYmxlcyk6IE1lbnRpb24KKwkiQUND X1BST0ZMSUIiLgorCShPcGVuQUNDIFByb2ZpbGluZyBJbnRlcmZhY2UpOiBV cGRhdGUuCisKKzIwMTctMDUtMTQgIFRob21hcyBTY2h3aW5nZSAgPHRob21h c0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiB0ZXN0c3VpdGUvbGliZ29tcC5v YWNjLWMtYy1jb21tb24vYWNjX3Byb2Yta2VybmVscy0xLmM6IE5ldworCWZp bGUuCisKKzIwMTctMDItMjggIFRob21hcyBTY2h3aW5nZSAgPHRob21hc0Bj b2Rlc291cmNlcnkuY29tPgorCisJKiBhY2NfcHJvZi5oOiBOZXcgZmlsZS4K KwkqIG9hY2MtcHJvZmlsaW5nLWFjY19yZWdpc3Rlcl9saWJyYXJ5LmM6IExp a2V3aXNlLgorCSogb2FjYy1wcm9maWxpbmcuYzogTGlrZXdpc2UuCisJKiBN YWtlZmlsZS5hbSAobm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUywgbGli Z29tcF9sYV9TT1VSQ0VTKToKKwlBZGQgdGhlc2UsIHJlc3BlY3RpdmVseS4K KwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogbGliZ29tcC9jb25m aWcvbnZwdHgvb2FjYy1wcm9maWxpbmctYWNjX3JlZ2lzdGVyX2xpYnJhcnku YzoKKwlOZXcgZW1wdHkgZmlsZS4KKwkqIGxpYmdvbXAvY29uZmlnL252cHR4 L29hY2MtcHJvZmlsaW5nLmM6IExpa2V3aXNlLgorCSogZW52LmMgKGluaXRp YWxpemVfZW52KTogQ2FsbCBnb2FjY19wcm9maWxpbmdfaW5pdGlhbGl6ZS4K KwkqIGxpYmdvbXAtcGx1Z2luLmM6IE5ldyBmdW5jdGlvbgorCUdPTVBfUExV R0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaC4KKwkqIGxpYmdvbXAtcGx1 Z2luLmg6IERlY2xhcmUgZnVuY3Rpb24KKwlHT01QX1BMVUdJTl9nb2FjY19w cm9maWxpbmdfZGlzcGF0Y2guCisJKiBvYWNjLXBsdWdpbi5jOiBOZXcgZnVu Y3Rpb24gR09NUF9QTFVHSU5fZ29hY2NfdGhyZWFkLgorCSogb2FjYy1wbHVn aW4uaDogRGVjbGFyZSBmdW5jdGlvbiBHT01QX1BMVUdJTl9nb2FjY190aHJl YWQuCisJKiBsaWJnb21wLm1hcCAoT0FDQ18yLjUpOiBBZGQgYWNjX3Byb2Zf bG9va3VwLCBhY2NfcHJvZl9yZWdpc3RlciwKKwlhY2NfcHJvZl91bnJlZ2lz dGVyLCBhbmQgYWNjX3JlZ2lzdGVyX2xpYnJhcnkuCisJQWRkIEdPTVBfUExV R0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCwgYW5kCisJR09NUF9QTFVH SU5fZ29hY2NfdGhyZWFkIHdpdGggbmV3IEdPTVBfUExVR0lOXzEuMyBzeW1i b2wgdmVyc2lvbi4KKwkqIG9hY2MtaW50LmggKHN0cnVjdCBnb2FjY190aHJl YWQpOiBBZGQgImFjY19wcm9mX2luZm8KKwkqcHJvZl9pbmZvIiwgImFjY19h cGlfaW5mbyAqYXBpX2luZm8iLCBhbmQgImJvb2wKKwlwcm9mX2NhbGxiYWNr c19lbmFibGVkIiBtZW1iZXJzLgorCURlY2xhcmUgZnVuY3Rpb25zIGdvYWNj X3Byb2ZpbGluZ19pbml0aWFsaXplLAorCWdvYWNjX3Byb2ZpbGluZ19kaXNw YXRjaF9wLCBhbmQgZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoLgorCSogb2Fj Yy1pbml0LmMgKGFjY19pbml0XzEpOiBBZGQgImFjY19jb25zdHJ1Y3RfdCIs IGFuZCAiaW50IgorCWZvcm1hbCBwYXJhbWV0ZXJzLiAgQWRqdXN0IGFsbCB1 c2Vycy4KKwkoZ29hY2NfbGF6eV9pbml0aWFsaXplKTogRG9uJ3QgY2FsbCBh Y2NfaW5pdDsgY29weSBjb2RlIGhlcmUsCisJaW5zdGVhZC4KKwkoYWNjX2lu aXRfMSwgZ29hY2NfYXR0YWNoX2hvc3RfdGhyZWFkX3RvX2RldmljZSwgYWNj X2luaXQpCisJKGdvYWNjX2xhenlfaW5pdGlhbGl6ZSk6IFVwZGF0ZSBmb3Ig T3BlbkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlLgorCSogb2FjYy1wYXJhbGxl bC5jIChHT0FDQ19wYXJhbGxlbF9rZXllZCk6IExpa2V3aXNlLgorCSogcGx1 Z2luL3BsdWdpbi1udnB0eC5jIChjdWRhX21hcF9jcmVhdGUsIGN1ZGFfbWFw X2Rlc3Ryb3kpCisJKG1hcF9pbml0LCBtYXBfZmluaSwgbWFwX3BvcCwgbWFw X3B1c2gpOiBBZGQgInN0cnVjdCBnb2FjY190aHJlYWQKKwkqIiBmb3JtYWwg cGFyYW1ldGVyLiAgQWRqdXN0IGFsbCB1c2Vycy4KKwkoc2VsZWN0X3N0cmVh bV9mb3JfYXN5bmMsIGV2ZW50X2djLCBudnB0eF9leGVjLCBudnB0eF9ob3N0 MmRldikKKwkobnZwdHhfZGV2Mmhvc3QsIG52cHR4X3NldF9jdWRhX3N0cmVh bSk6IENhbGwKKwlHT01QX1BMVUdJTl9nb2FjY190aHJlYWQgaW5zdGVhZCBv ZiBudnB0eF90aHJlYWQuCisJKGN1ZGFfbWFwX2NyZWF0ZSwgY3VkYV9tYXBf ZGVzdHJveSwgbnZwdHhfZXhlYywgbnZwdHhfYWxsb2MpCisJKG52cHR4X2Zy ZWUsIG52cHR4X2hvc3QyZGV2LCBudnB0eF9kZXYyaG9zdCk6IFVwZGF0ZSBm b3IgT3BlbkFDQworCVByb2ZpbGluZyBJbnRlcmZhY2UuCisJKiBsaWJnb21w LnRleGk6IE5ldyBjaGFwdGVyICJPcGVuQUNDIFByb2ZpbGluZyBJbnRlcmZh Y2UiLgorCSogdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMtY29tbW9uL2Fj Y19wcm9mLWRpc3BhdGNoLTEuYzogTmV3CisJZmlsZS4KKwkqIHRlc3RzdWl0 ZS9saWJnb21wLm9hY2MtYy1jLWNvbW1vbi9hY2NfcHJvZi1pbml0LTEuYzog TGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYy1jb21t b24vYWNjX3Byb2YtcGFyYWxsZWwtMS5jOgorCUxpa2V3aXNlLgorCSogdGVz dHN1aXRlL2xpYmdvbXAub2FjYy1jLWMtY29tbW9uL2FjY19wcm9mLXZhbGlk X2J5dGVzLTEuYzoKKwlMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJnb21w Lm9hY2MtYy1jLWNvbW1vbi9hY2NfcHJvZi12ZXJzaW9uLTEuYzoKKwlMaWtl d2lzZS4KKwogMjAxOS0wNS0yOCAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNv ZGVzb3VyY2VyeS5jb20+CiAKIAkqIHRlc3RzdWl0ZS9saWJnb21wLm9hY2Mt Zm9ydHJhbi9nYW5ncHJpdmF0ZS1hdHRyaWItMi5mOTA6IE5ldyB0ZXN0Lgpk aWZmIC0tZ2l0IGEvbGliZ29tcC9NYWtlZmlsZS5hbSBiL2xpYmdvbXAvTWFr ZWZpbGUuYW0KaW5kZXggMmRiMzg2NS4uYTM4YjY2ZWYgMTAwNjQ0Ci0tLSBh L2xpYmdvbXAvTWFrZWZpbGUuYW0KKysrIGIvbGliZ29tcC9NYWtlZmlsZS5h bQpAQCAtNzIsNiArNzIsNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxv Yy5jIGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIGVycm9y LmMgXAogCXByb2MuYyBzZW0uYyBiYXIuYyBwdHJsb2NrLmMgdGltZS5jIGZv cnRyYW4uYyBhZmZpbml0eS5jIHRhcmdldC5jIFwKIAlzcGxheS10cmVlLmMg bGliZ29tcC1wbHVnaW4uYyBvYWNjLXBhcmFsbGVsLmMgb2FjYy1ob3N0LmMg b2FjYy1pbml0LmMgXAogCW9hY2MtbWVtLmMgb2FjYy1hc3luYy5jIG9hY2Mt cGx1Z2luLmMgb2FjYy1jdWRhLmMgcHJpb3JpdHlfcXVldWUuYyBcCisJb2Fj Yy1wcm9maWxpbmcuYyBvYWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGli cmFyeS5jIFwKIAlhZmZpbml0eS1mbXQuYyB0ZWFtcy5jCiAKIGluY2x1ZGUg JCh0b3Bfc3JjZGlyKS9wbHVnaW4vTWFrZWZyYWcuYW0KQEAgLTgxLDcgKzgy LDcgQEAgbGliZ29tcF9sYV9TT1VSQ0VTICs9IG9wZW5hY2MuZjkwCiBlbmRp ZgogCiBub2Rpc3Rfbm9pbnN0X0hFQURFUlMgPSBsaWJnb21wX2YuaAotbm9k aXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IG9tcC5oIG9wZW5hY2MuaAor bm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IGFjY19wcm9mLmggb21w Lmggb3BlbmFjYy5oCiBpZiBVU0VfRk9SVFJBTgogbm9kaXN0X2ZpbmNsdWRl X0hFQURFUlMgPSBvbXBfbGliLmggb21wX2xpYi5mOTAgb21wX2xpYi5tb2Qg b21wX2xpYl9raW5kcy5tb2QgXAogCW9wZW5hY2NfbGliLmggb3BlbmFjYy5m OTAgb3BlbmFjYy5tb2Qgb3BlbmFjY19raW5kcy5tb2QKZGlmZiAtLWdpdCBh L2xpYmdvbXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01ha2VmaWxlLmluCmlu ZGV4IDgyMGE1NzYuLmQ4MWUzZDggMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvTWFr ZWZpbGUuaW4KKysrIGIvbGliZ29tcC9NYWtlZmlsZS5pbgpAQCAtMTYsNyAr MTYsNyBAQAogCiAjIFBsdWdpbnMgZm9yIG9mZmxvYWQgZXhlY3V0aW9uLCBN YWtlZmlsZS5hbSBmcmFnbWVudC4KICMKLSMgQ29weXJpZ2h0IChDKSAyMDE0 LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHly aWdodCAoQykgMjAxNC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogIwogIyBDb250cmlidXRlZCBieSBNZW50b3IgRW1iZWRkZWQuCiAj CkBAIC0yMTUsOCArMjE1LDkgQEAgYW1fbGliZ29tcF9sYV9PQkpFQ1RTID0g YWxsb2MubG8gYXRvbWljLmxvIGJhcnJpZXIubG8gY3JpdGljYWwubG8gXAog CXNlbS5sbyBiYXIubG8gcHRybG9jay5sbyB0aW1lLmxvIGZvcnRyYW4ubG8g YWZmaW5pdHkubG8gXAogCXRhcmdldC5sbyBzcGxheS10cmVlLmxvIGxpYmdv bXAtcGx1Z2luLmxvIG9hY2MtcGFyYWxsZWwubG8gXAogCW9hY2MtaG9zdC5s byBvYWNjLWluaXQubG8gb2FjYy1tZW0ubG8gb2FjYy1hc3luYy5sbyBcCi0J b2FjYy1wbHVnaW4ubG8gb2FjYy1jdWRhLmxvIHByaW9yaXR5X3F1ZXVlLmxv IGFmZmluaXR5LWZtdC5sbyBcCi0JdGVhbXMubG8gJChhbV9fb2JqZWN0c18x KQorCW9hY2MtcGx1Z2luLmxvIG9hY2MtY3VkYS5sbyBwcmlvcml0eV9xdWV1 ZS5sbyBcCisJb2FjYy1wcm9maWxpbmcubG8gb2FjYy1wcm9maWxpbmctYWNj X3JlZ2lzdGVyX2xpYnJhcnkubG8gXAorCWFmZmluaXR5LWZtdC5sbyB0ZWFt cy5sbyAkKGFtX19vYmplY3RzXzEpCiBsaWJnb21wX2xhX09CSkVDVFMgPSAk KGFtX2xpYmdvbXBfbGFfT0JKRUNUUykKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9A QU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkK QEAgLTUyNCw3ICs1MjUsNyBAQCBzZWFyY2hfcGF0aCA9ICQoYWRkcHJlZml4 ICQodG9wX3NyY2RpcikvY29uZmlnLywgJChjb25maWdfcGF0aCkpICQodG9w X3NyY2RpcikgXAogCiBmaW5jbHVkZWRpciA9ICQobGliZGlyKS9nY2MvJCh0 YXJnZXRfYWxpYXMpLyQoZ2NjX3ZlcnNpb24pJChNVUxUSVNVQkRJUikvZmlu Y2x1ZGUKIGxpYnN1YmluY2x1ZGVkaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFy Z2V0X2FsaWFzKS8kKGdjY192ZXJzaW9uKS9pbmNsdWRlCi1saWJnb21wX2xh X0xJQkFERCA9ICQoTElCRkZJKQorQFVTRV9MSUJGRklfVFJVRUBsaWJnb21w X2xhX0xJQkFERCA9ICQoTElCRkZJKQogQU1fQ1BQRkxBR1MgPSAkKGFkZHBy ZWZpeCAtSSwgJChzZWFyY2hfcGF0aCkpICQoTElCRkZJSU5DUykKIEFNX0NG TEFHUyA9ICQoWENGTEFHUykKIEFNX0xERkxBR1MgPSAkKFhMREZMQUdTKSAk KFNFQ1RJT05fTERGTEFHUykgJChPUFRfTERGTEFHUykKQEAgLTU1Myw2ICs1 NTQsNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5jIGF0b21pYy5j IGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIFwKIAlhZmZpbml0eS5jIHRh cmdldC5jIHNwbGF5LXRyZWUuYyBsaWJnb21wLXBsdWdpbi5jIFwKIAlvYWNj LXBhcmFsbGVsLmMgb2FjYy1ob3N0LmMgb2FjYy1pbml0LmMgb2FjYy1tZW0u YyBcCiAJb2FjYy1hc3luYy5jIG9hY2MtcGx1Z2luLmMgb2FjYy1jdWRhLmMg cHJpb3JpdHlfcXVldWUuYyBcCisJb2FjYy1wcm9maWxpbmcuYyBvYWNjLXBy b2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGlicmFyeS5jIFwKIAlhZmZpbml0eS1m bXQuYyB0ZWFtcy5jICQoYW1fX2FwcGVuZF8zKQogCiAjIE52aWRpYSBQVFgg T3BlbkFDQyBwbHVnaW4uCkBAIC01NzcsNyArNTc5LDcgQEAgbGliZ29tcF9s YV9TT1VSQ0VTID0gYWxsb2MuYyBhdG9taWMuYyBiYXJyaWVyLmMgY3JpdGlj YWwuYyBlbnYuYyBcCiBAUExVR0lOX0hTQV9UUlVFQGxpYmdvbXBfcGx1Z2lu X2hzYV9sYV9MSUJBREQgPSBsaWJnb21wLmxhICQoUExVR0lOX0hTQV9MSUJT KQogQFBMVUdJTl9IU0FfVFJVRUBsaWJnb21wX3BsdWdpbl9oc2FfbGFfTElC VE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMKIG5vZGlzdF9ub2lu c3RfSEVBREVSUyA9IGxpYmdvbXBfZi5oCi1ub2Rpc3RfbGlic3ViaW5jbHVk ZV9IRUFERVJTID0gb21wLmggb3BlbmFjYy5oCitub2Rpc3RfbGlic3ViaW5j bHVkZV9IRUFERVJTID0gYWNjX3Byb2YuaCBvbXAuaCBvcGVuYWNjLmgKIEBV U0VfRk9SVFJBTl9UUlVFQG5vZGlzdF9maW5jbHVkZV9IRUFERVJTID0gb21w X2xpYi5oIG9tcF9saWIuZjkwIG9tcF9saWIubW9kIG9tcF9saWJfa2luZHMu bW9kIFwKIEBVU0VfRk9SVFJBTl9UUlVFQAlvcGVuYWNjX2xpYi5oIG9wZW5h Y2MuZjkwIG9wZW5hY2MubW9kIG9wZW5hY2Nfa2luZHMubW9kCiAKQEAgLTc1 NSw2ICs3NTcsOCBAQCBkaXN0Y2xlYW4tY29tcGlsZToKIEBBTURFUF9UUlVF QEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9vYWNjLW1l bS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBA YW1fX3F1b3RlQC4vJChERVBESVIpL29hY2MtcGFyYWxsZWwuUGxvQGFtX19x dW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAu LyQoREVQRElSKS9vYWNjLXBsdWdpbi5QbG9AYW1fX3F1b3RlQAorQEFNREVQ X1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29h Y2MtcHJvZmlsaW5nLWFjY19yZWdpc3Rlcl9saWJyYXJ5LlBsb0BhbV9fcXVv dGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8k KERFUERJUikvb2FjYy1wcm9maWxpbmcuUGxvQGFtX19xdW90ZUAKIEBBTURF UF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9v cmRlcmVkLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1 ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcGFyYWxsZWwuUGxvQGFtX19x dW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAu LyQoREVQRElSKS9wcmlvcml0eV9xdWV1ZS5QbG9AYW1fX3F1b3RlQApkaWZm IC0tZ2l0IGEvbGliZ29tcC9hY2NfcHJvZi5oIGIvbGliZ29tcC9hY2NfcHJv Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMTFk NGIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL2FjY19wcm9mLmgKQEAg LTAsMCArMSwyMzcgQEAKKy8qIE9wZW5BQ0MgUnVudGltZSBMaWJyYXJ5OiBQ cm9maWxpbmcgSW50ZXJmYWNlCisKKyAgIENvcHlyaWdodCAoQykgMjAxNyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgQ29udHJpYnV0 ZWQgYnkgTWVudG9yIEVtYmVkZGVkLgorCisgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3Npbmcg TGlicmFyeQorICAgKGxpYmdvbXApLgorCisgICBMaWJnb21wIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgTGli Z29tcCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MKKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBt b3JlIGRldGFpbHMuCisKKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVy c2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlz c2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4 Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJl c3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIF9BQ0NfUFJPRl9ICisj ZGVmaW5lIF9BQ0NfUFJPRl9IIDEKKworLyogVGhlIE9wZW5BQ0Mgc3RhbmRh cmQgZG9lc24ndCBzYXkgc28gZXhwbGljaXRseSwgYnV0IGFzIGl0cyBQcm9m aWxpbmcKKyAgIEludGVyZmFjZSBtYWtlcyB1c2Ugb2YsIGZvciBleGFtcGxl LCA8b3BlbmFjYy5oPidzIGFjY19kZXZpY2VfdCwgd2UKKyAgIHN1cHBvc2Vk bHkgYXJlIHRvICNpbmNsdWRlIHRoYXQgZmlsZSBoZXJlLiAgKi8KKyNpbmNs dWRlIDxvcGVuYWNjLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu ICJDIiB7CisjZW5kaWYKKworLyogT3BlbkFDQyAyLjUsIDUuIFByb2ZpbGlu ZyBJbnRlcmZhY2UsIDUuMS4gRXZlbnRzLiAgKi8KKwordHlwZWRlZiBlbnVt IGFjY19ldmVudF90Cit7CisgIGFjY19ldl9ub25lID0gMCwKKyAgYWNjX2V2 X2RldmljZV9pbml0X3N0YXJ0LAorICBhY2NfZXZfZGV2aWNlX2luaXRfZW5k LAorICBhY2NfZXZfZGV2aWNlX3NodXRkb3duX3N0YXJ0LAorICBhY2NfZXZf ZGV2aWNlX3NodXRkb3duX2VuZCwKKyAgYWNjX2V2X3J1bnRpbWVfc2h1dGRv d24sCisgIGFjY19ldl9jcmVhdGUsCisgIGFjY19ldl9kZWxldGUsCisgIGFj Y19ldl9hbGxvYywKKyAgYWNjX2V2X2ZyZWUsCisgIGFjY19ldl9lbnRlcl9k YXRhX3N0YXJ0LAorICBhY2NfZXZfZW50ZXJfZGF0YV9lbmQsCisgIGFjY19l dl9leGl0X2RhdGFfc3RhcnQsCisgIGFjY19ldl9leGl0X2RhdGFfZW5kLAor ICBhY2NfZXZfdXBkYXRlX3N0YXJ0LAorICBhY2NfZXZfdXBkYXRlX2VuZCwK KyAgYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0LAorICBhY2NfZXZf Y29tcHV0ZV9jb25zdHJ1Y3RfZW5kLAorICBhY2NfZXZfZW5xdWV1ZV9sYXVu Y2hfc3RhcnQsCisgIGFjY19ldl9lbnF1ZXVlX2xhdW5jaF9lbmQsCisgIGFj Y19ldl9lbnF1ZXVlX3VwbG9hZF9zdGFydCwKKyAgYWNjX2V2X2VucXVldWVf dXBsb2FkX2VuZCwKKyAgYWNjX2V2X2VucXVldWVfZG93bmxvYWRfc3RhcnQs CisgIGFjY19ldl9lbnF1ZXVlX2Rvd25sb2FkX2VuZCwKKyAgYWNjX2V2X3dh aXRfc3RhcnQsCisgIGFjY19ldl93YWl0X2VuZCwKKyAgYWNjX2V2X2xhc3QK K30gYWNjX2V2ZW50X3Q7CisKKworLyogT3BlbkFDQyAyLjUsIDUuIFByb2Zp bGluZyBJbnRlcmZhY2UsIDUuMi4gQ2FsbGJhY2tzIFNpZ25hdHVyZS4gICov CisKKy8vVE9ETworLyogJ0luIGFsbCBjYXNlcywgYSBkYXRhdHlwZSBvZiAi c2l6ZV90IiBtZWFucyBhIDMyLWJpdCBpbnRlZ2VyIGZvciBhIDMyLWJpdAor ICAgYmluYXJ5IGFuZCBhIDY0LWJpdCBpbnRlZ2VyIGZvciBhIDY0LWJpdCBi aW5hcnksIGFuZCBhIGRhdGF0eXBlICJpbnQiIG1lYW5zCisgICBhIDMyLWJp dCBpbnRlZ2VyIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGJpbmFyaWVz Jy4gICovCit0eXBlZGVmIGxvbmcgaW50IF9hY2NfcHJvZl9zaXplX3Q7Cit0 eXBlZGVmIGludCBfYWNjX3Byb2ZfaW50X3Q7CisKKy8qIEludGVybmFsIGhl bHBlcnM6IGEgc3RydWN0J3MgInZhbGlkX2J5dGVzIiBtYXkgYmUgbGVzcyB0 aGFuIGl0cyAic2l6ZW9mIi4gICovCisjZGVmaW5lIF9BQ0NfUFJPRl9WQUxJ RF9CWVRFU19TVFJVQ1QoX3N0cnVjdCwgX2xhc3RmaWVsZCwgX3ZhbGlkX2J5 dGVzX2xhc3RmaWVsZCkgXAorICBvZmZzZXRvZiAoX3N0cnVjdCwgX2xhc3Rm aWVsZCkgKyAoX3ZhbGlkX2J5dGVzX2xhc3RmaWVsZCkKKyNpZiAwIC8qIFVu dGVzdGVkLiAgKi8KKyNkZWZpbmUgX0FDQ19QUk9GX1ZBTElEX0JZVEVTX1RZ UEVfTihfdHlwZSwgX24sIF92YWxpZF9ieXRlc190eXBlKSBcCisgICgoX24g LSAxKSAqIHNpemVvZiAoX3R5cGUpICsgKF92YWxpZF9ieXRlc190eXBlKSkK KyNlbmRpZgorI2RlZmluZSBfQUNDX1BST0ZfVkFMSURfQllURVNfQkFTSUNU WVBFKF9iYXNpY3R5cGUpIFwKKyAgKHNpemVvZiAoX2Jhc2ljdHlwZSkpCisK K3R5cGVkZWYgc3RydWN0IGFjY19wcm9mX2luZm8KK3sKKyAgYWNjX2V2ZW50 X3QgZXZlbnRfdHlwZTsKKyAgX2FjY19wcm9mX2ludF90IHZhbGlkX2J5dGVz OworICBfYWNjX3Byb2ZfaW50X3QgdmVyc2lvbjsKKyAgYWNjX2RldmljZV90 IGRldmljZV90eXBlOworICBfYWNjX3Byb2ZfaW50X3QgZGV2aWNlX251bWJl cjsKKyAgX2FjY19wcm9mX2ludF90IHRocmVhZF9pZDsKKyAgX2FjY19wcm9m X3NpemVfdCBhc3luYzsKKyAgX2FjY19wcm9mX3NpemVfdCBhc3luY19xdWV1 ZTsKKyAgY2hhciAqc3JjX2ZpbGU7CisgIGNoYXIgKmZ1bmNfbmFtZTsKKyAg X2FjY19wcm9mX2ludF90IGxpbmVfbm8sIGVuZF9saW5lX25vOworICBfYWNj X3Byb2ZfaW50X3QgZnVuY19saW5lX25vLCBmdW5jX2VuZF9saW5lX25vOwor I2RlZmluZSBfQUNDX1BST0ZfSU5GT19WQUxJRF9CWVRFUyBcCisgIF9BQ0Nf UFJPRl9WQUxJRF9CWVRFU19TVFJVQ1QgKGFjY19wcm9mX2luZm8sIGZ1bmNf ZW5kX2xpbmVfbm8sIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllURVNfQkFT SUNUWVBFIChfYWNjX3Byb2ZfaW50X3QpKQorfSBhY2NfcHJvZl9pbmZvOwor CisvKiBXZSBpbXBsZW1lbnQgdGhlIE9wZW5BQ0MgMi42IFByb2ZpbGluZyBJ bnRlcmZhY2UuICAqLworI2RlZmluZSBfQUNDX1BST0ZfSU5GT19WRVJTSU9O IDIwMTcxMQorCit0eXBlZGVmIGVudW0gYWNjX2NvbnN0cnVjdF90Cit7Cisg IGFjY19jb25zdHJ1Y3RfcGFyYWxsZWwgPSAwLAorICBhY2NfY29uc3RydWN0 X2tlcm5lbHMsCisgIGFjY19jb25zdHJ1Y3RfbG9vcCwKKyAgYWNjX2NvbnN0 cnVjdF9kYXRhLAorICBhY2NfY29uc3RydWN0X2VudGVyX2RhdGEsCisgIGFj Y19jb25zdHJ1Y3RfZXhpdF9kYXRhLAorICBhY2NfY29uc3RydWN0X2hvc3Rf ZGF0YSwKKyAgYWNjX2NvbnN0cnVjdF9hdG9taWMsCisgIGFjY19jb25zdHJ1 Y3RfZGVjbGFyZSwKKyAgYWNjX2NvbnN0cnVjdF9pbml0LAorICBhY2NfY29u c3RydWN0X3NodXRkb3duLAorICBhY2NfY29uc3RydWN0X3NldCwKKyAgYWNj X2NvbnN0cnVjdF91cGRhdGUsCisgIGFjY19jb25zdHJ1Y3Rfcm91dGluZSwK KyAgYWNjX2NvbnN0cnVjdF93YWl0LAorICBhY2NfY29uc3RydWN0X3J1bnRp bWVfYXBpCit9IGFjY19jb25zdHJ1Y3RfdDsKKwordHlwZWRlZiBzdHJ1Y3Qg YWNjX2RhdGFfZXZlbnRfaW5mbworeworICBhY2NfZXZlbnRfdCBldmVudF90 eXBlOworICBfYWNjX3Byb2ZfaW50X3QgdmFsaWRfYnl0ZXM7CisgIGFjY19j b25zdHJ1Y3RfdCBwYXJlbnRfY29uc3RydWN0OworICBfYWNjX3Byb2ZfaW50 X3QgaW1wbGljaXQ7CisgIHZvaWQgKnRvb2xfaW5mbzsKKyAgY2hhciAqdmFy X25hbWU7CisgIF9hY2NfcHJvZl9zaXplX3QgYnl0ZXM7CisgIHZvaWQgKmhv c3RfcHRyOworICB2b2lkICpkZXZpY2VfcHRyOworI2RlZmluZSBfQUNDX0RB VEFfRVZFTlRfSU5GT19WQUxJRF9CWVRFUyBcCisgIF9BQ0NfUFJPRl9WQUxJ RF9CWVRFU19TVFJVQ1QgKGFjY19kYXRhX2V2ZW50X2luZm8sIGRldmljZV9w dHIsIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllURVNfQkFTSUNUWVBFICh2 b2lkICopKQorfSBhY2NfZGF0YV9ldmVudF9pbmZvOworCit0eXBlZGVmIHN0 cnVjdCBhY2NfbGF1bmNoX2V2ZW50X2luZm8KK3sKKyAgYWNjX2V2ZW50X3Qg ZXZlbnRfdHlwZTsKKyAgX2FjY19wcm9mX2ludF90IHZhbGlkX2J5dGVzOwor ICBhY2NfY29uc3RydWN0X3QgcGFyZW50X2NvbnN0cnVjdDsKKyAgX2FjY19w cm9mX2ludF90IGltcGxpY2l0OworICB2b2lkICp0b29sX2luZm87CisgIGNo YXIgKmtlcm5lbF9uYW1lOworICBfYWNjX3Byb2Zfc2l6ZV90IG51bV9nYW5n cywgbnVtX3dvcmtlcnMsIHZlY3Rvcl9sZW5ndGg7CisjZGVmaW5lIF9BQ0Nf TEFVTkNIX0VWRU5UX0lORk9fVkFMSURfQllURVMgXAorICBfQUNDX1BST0Zf VkFMSURfQllURVNfU1RSVUNUIChhY2NfbGF1bmNoX2V2ZW50X2luZm8sIHZl Y3Rvcl9sZW5ndGgsIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllURVNfQkFT SUNUWVBFIChfYWNjX3Byb2Zfc2l6ZV90KSkKK30gYWNjX2xhdW5jaF9ldmVu dF9pbmZvOworCit0eXBlZGVmIHN0cnVjdCBhY2Nfb3RoZXJfZXZlbnRfaW5m bworeworICBhY2NfZXZlbnRfdCBldmVudF90eXBlOworICBfYWNjX3Byb2Zf aW50X3QgdmFsaWRfYnl0ZXM7CisgIGFjY19jb25zdHJ1Y3RfdCBwYXJlbnRf Y29uc3RydWN0OworICBfYWNjX3Byb2ZfaW50X3QgaW1wbGljaXQ7CisgIHZv aWQgKnRvb2xfaW5mbzsKKyNkZWZpbmUgX0FDQ19PVEhFUl9FVkVOVF9JTkZP X1ZBTElEX0JZVEVTIFwKKyAgX0FDQ19QUk9GX1ZBTElEX0JZVEVTX1NUUlVD VCAoYWNjX290aGVyX2V2ZW50X2luZm8sIHRvb2xfaW5mbywgXAorCQkJCV9B Q0NfUFJPRl9WQUxJRF9CWVRFU19CQVNJQ1RZUEUgKHZvaWQgKikpCit9IGFj Y19vdGhlcl9ldmVudF9pbmZvOworCit0eXBlZGVmIHVuaW9uIGFjY19ldmVu dF9pbmZvCit7CisgIGFjY19ldmVudF90IGV2ZW50X3R5cGU7CisgIGFjY19k YXRhX2V2ZW50X2luZm8gZGF0YV9ldmVudDsKKyAgYWNjX2xhdW5jaF9ldmVu dF9pbmZvIGxhdW5jaF9ldmVudDsKKyAgYWNjX290aGVyX2V2ZW50X2luZm8g b3RoZXJfZXZlbnQ7Cit9IGFjY19ldmVudF9pbmZvOworCisvL1RPRE86IHNo b3VsZCB0aGVzZSByZWxhdGUgdG8gYWNjX2RldmljZV90IHZhbHVlcz8KK3R5 cGVkZWYgZW51bSBhY2NfZGV2aWNlX2FwaQoreworICBhY2NfZGV2aWNlX2Fw aV9ub25lID0gMCwKKyAgYWNjX2RldmljZV9hcGlfY3VkYSwKKyAgYWNjX2Rl dmljZV9hcGlfb3BlbmNsLAorICBhY2NfZGV2aWNlX2FwaV9jb2ksCisgIGFj Y19kZXZpY2VfYXBpX290aGVyCit9IGFjY19kZXZpY2VfYXBpOworCit0eXBl ZGVmIHN0cnVjdCBhY2NfYXBpX2luZm8KK3sKKyAgYWNjX2RldmljZV9hcGkg ZGV2aWNlX2FwaTsKKyAgX2FjY19wcm9mX2ludF90IHZhbGlkX2J5dGVzOwor ICBhY2NfZGV2aWNlX3QgZGV2aWNlX3R5cGU7CisgIF9hY2NfcHJvZl9pbnRf dCB2ZW5kb3I7CisgIHZvaWQgKmRldmljZV9oYW5kbGU7CisgIHZvaWQgKmNv bnRleHRfaGFuZGxlOworICB2b2lkICphc3luY19oYW5kbGU7CisjZGVmaW5l IF9BQ0NfQVBJX0lORk9fVkFMSURfQllURVMgXAorICBfQUNDX1BST0ZfVkFM SURfQllURVNfU1RSVUNUIChhY2NfYXBpX2luZm8sIGFzeW5jX2hhbmRsZSwg XAorCQkJCV9BQ0NfUFJPRl9WQUxJRF9CWVRFU19CQVNJQ1RZUEUgKHZvaWQg KikpCit9IGFjY19hcGlfaW5mbzsKKwordHlwZWRlZiB2b2lkICgqYWNjX3By b2ZfY2FsbGJhY2spIChhY2NfcHJvZl9pbmZvICosIGFjY19ldmVudF9pbmZv ICosCisJCQkJICAgYWNjX2FwaV9pbmZvICopOworCisKKy8qIE9wZW5BQ0Mg Mi41LCA1LiBQcm9maWxpbmcgSW50ZXJmYWNlLCA1LjMuIExvYWRpbmcgdGhl IExpYnJhcnkuICAqLworCit0eXBlZGVmIGVudW0gYWNjX3JlZ2lzdGVyX3QK K3sKKyAgYWNjX3JlZyA9IDAsCisgIGFjY190b2dnbGUgPSAxLAorICBhY2Nf dG9nZ2xlX3Blcl90aHJlYWQgPSAyCit9IGFjY19yZWdpc3Rlcl90OworCit0 eXBlZGVmIHZvaWQgKCphY2NfcHJvZl9yZWcpIChhY2NfZXZlbnRfdCwgYWNj X3Byb2ZfY2FsbGJhY2ssIGFjY19yZWdpc3Rlcl90KTsKK2V4dGVybiB2b2lk IGFjY19wcm9mX3JlZ2lzdGVyIChhY2NfZXZlbnRfdCwgYWNjX3Byb2ZfY2Fs bGJhY2ssIGFjY19yZWdpc3Rlcl90KSBfX0dPQUNDX05PVEhST1c7CitleHRl cm4gdm9pZCBhY2NfcHJvZl91bnJlZ2lzdGVyIChhY2NfZXZlbnRfdCwgYWNj X3Byb2ZfY2FsbGJhY2ssIGFjY19yZWdpc3Rlcl90KSBfX0dPQUNDX05PVEhS T1c7Cit0eXBlZGVmIHZvaWQgKCphY2NfcXVlcnlfZm4pICgpOwordHlwZWRl ZiBhY2NfcXVlcnlfZm4gKCphY2NfcHJvZl9sb29rdXBfZnVuYykgKGNvbnN0 IGNoYXIgKik7CitleHRlcm4gYWNjX3F1ZXJ5X2ZuIGFjY19wcm9mX2xvb2t1 cCAoY29uc3QgY2hhciAqKSBfX0dPQUNDX05PVEhST1c7CisvKiBEb24ndCB0 YWcgImFjY19yZWdpc3Rlcl9saWJyYXJ5IiBhcyAiX19HT0FDQ19OT1RIUk9X IjogdGhpcyBmdW5jdGlvbiBjYW4gYmUKKyAgIG92ZXJyaWRkZW4gYnkgdGhl IGFwcGxpY2F0aW9uLCBhbmQgbXVzdCBiZSBleHBlY3RlZCB0byBkbyAiZXZl cnl0aGluZyIuICAqLworZXh0ZXJuIHZvaWQgYWNjX3JlZ2lzdGVyX2xpYnJh cnkgKGFjY19wcm9mX3JlZywgYWNjX3Byb2ZfcmVnLCBhY2NfcHJvZl9sb29r dXBfZnVuYyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK KyNlbmRpZiAvKiBfQUNDX1BST0ZfSCAqLwpkaWZmIC0tZ2l0IGEvbGliZ29t cC9jb25maWcvbnZwdHgvb2FjYy1wcm9maWxpbmctYWNjX3JlZ2lzdGVyX2xp YnJhcnkuYyBiL2xpYmdvbXAvY29uZmlnL252cHR4L29hY2MtcHJvZmlsaW5n LWFjY19yZWdpc3Rlcl9saWJyYXJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9j b25maWcvbnZwdHgvb2FjYy1wcm9maWxpbmcuYyBiL2xpYmdvbXAvY29uZmln L252cHR4L29hY2MtcHJvZmlsaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9l bnYuYyBiL2xpYmdvbXAvZW52LmMKaW5kZXggNzkzN2ZiYi4uMjlkOWY1OCAx MDA2NDQKLS0tIGEvbGliZ29tcC9lbnYuYworKysgYi9saWJnb21wL2Vudi5j CkBAIC0xNDI1LDUgKzE0MjUsNyBAQCBpbml0aWFsaXplX2VudiAodm9pZCkK ICAgcGFyc2VfZ29tcF9vcGVuYWNjX2RpbSAoKTsKIAogICBnb2FjY19ydW50 aW1lX2luaXRpYWxpemUgKCk7CisKKyAgZ29hY2NfcHJvZmlsaW5nX2luaXRp YWxpemUgKCk7CiB9CiAjZW5kaWYgLyogTElCR09NUF9PRkZMT0FERURfT05M WSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLXBsdWdpbi5jIGIv bGliZ29tcC9saWJnb21wLXBsdWdpbi5jCmluZGV4IDViNzdhNTMuLmY5Zjc3 YjEgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uYworKysg Yi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmMKQEAgLTI5LDYgKzI5LDcgQEAK ICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2luY2x1ZGUgImxpYmdvbXAuaCIK KyNpbmNsdWRlICJvYWNjLWludC5oIgogI2luY2x1ZGUgImxpYmdvbXAtcGx1 Z2luLmgiCiAKIHZvaWQgKgpAQCAtNzgsMyArNzksMTEgQEAgR09NUF9QTFVH SU5fZmF0YWwgKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogICBnb21wX3ZmYXRh bCAobXNnLCBhcCk7CiAgIHZhX2VuZCAoYXApOwogfQorCit2b2lkCitHT01Q X1BMVUdJTl9nb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKGFjY19wcm9mX2lu Zm8gKnByb2ZfaW5mbywKKwkJCQkgICAgICBhY2NfZXZlbnRfaW5mbyAqZXZl bnRfaW5mbywKKwkJCQkgICAgICBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQor eworICBnb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKHByb2ZfaW5mbywgZXZl bnRfaW5mbywgYXBpX2luZm8pOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9s aWJnb21wLXBsdWdpbi5oIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCmlu ZGV4IGRhOGNlMjYuLjgxODE5ZGIgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGli Z29tcC1wbHVnaW4uaAorKysgYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgK QEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs dWRlIDxzdGRpbnQuaD4KIAorI2luY2x1ZGUgImFjY19wcm9mLmgiCisKICNp ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTk1 LDYgKzk3LDEwIEBAIGV4dGVybiB2b2lkIEdPTVBfUExVR0lOX2Vycm9yIChj b25zdCBjaGFyICosIC4uLikKIGV4dGVybiB2b2lkIEdPTVBfUExVR0lOX2Zh dGFsIChjb25zdCBjaGFyICosIC4uLikKIAlfX2F0dHJpYnV0ZV9fICgobm9y ZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogCitleHRlcm4gdm9p ZCBHT01QX1BMVUdJTl9nb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKGFjY19w cm9mX2luZm8gKiwKKwkJCQkJCSAgYWNjX2V2ZW50X2luZm8gKiwKKwkJCQkJ CSAgYWNjX2FwaV9pbmZvICopOworCiAvKiBQcm90b3R5cGVzIGZvciBmdW5j dGlvbnMgaW1wbGVtZW50ZWQgYnkgbGliZ29tcCBwbHVnaW5zLiAgKi8KIGV4 dGVybiBjb25zdCBjaGFyICpHT01QX09GRkxPQURfZ2V0X25hbWUgKHZvaWQp OwogZXh0ZXJuIHVuc2lnbmVkIGludCBHT01QX09GRkxPQURfZ2V0X2NhcHMg KHZvaWQpOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLm1hcCBiL2xp YmdvbXAvbGliZ29tcC5tYXAKaW5kZXggNzE3YWU2Ni4uZDA3ZjRmZSAxMDA2 NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLm1hcAorKysgYi9saWJnb21wL2xp YmdvbXAubWFwCkBAIC00NjYsNiArNDY2LDEwIEBAIE9BQ0NfMi41IHsKIAlh Y2NfZGVsZXRlX2ZpbmFsaXplX2FzeW5jX2FycmF5X2hfOwogCWFjY19tZW1j cHlfZnJvbV9kZXZpY2VfYXN5bmM7CiAJYWNjX21lbWNweV90b19kZXZpY2Vf YXN5bmM7CisJYWNjX3Byb2ZfbG9va3VwOworCWFjY19wcm9mX3JlZ2lzdGVy OworCWFjY19wcm9mX3VucmVnaXN0ZXI7CisJYWNjX3JlZ2lzdGVyX2xpYnJh cnk7CiAJYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmM7CiAJYWNjX3VwZGF0ZV9k ZXZpY2VfYXN5bmNfMzJfaF87CiAJYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmNf NjRfaF87CkBAIC01MzYsMyArNTQwLDEwIEBAIEdPTVBfUExVR0lOXzEuMiB7 CiAgIGdsb2JhbDoKIAlHT01QX1BMVUdJTl9hY2NfZGVmYXVsdF9kaW07CiB9 IEdPTVBfUExVR0lOXzEuMTsKKworIyBUT0RPCitHT01QX1BMVUdJTl8xLjMg eworICBnbG9iYWw6CisJR09NUF9QTFVHSU5fZ29hY2NfcHJvZmlsaW5nX2Rp c3BhdGNoOworCUdPTVBfUExVR0lOX2dvYWNjX3RocmVhZDsKK30gR09NUF9Q TFVHSU5fMS4yOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLnRleGkg Yi9saWJnb21wL2xpYmdvbXAudGV4aQppbmRleCA3NTM4ODQ2Li4yNWMxN2Uw IDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAudGV4aQorKysgYi9saWJn b21wL2xpYmdvbXAudGV4aQpAQCAtMTExLDYgKzExMSw3IEBAIGNoYW5nZWQg dG8gR05VIE9mZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgUnVudGlt ZSBMaWJyYXJ5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFz eW5jaHJvbm91cyBvcGVyYXRpb25zLgogKiBPcGVuQUNDIExpYnJhcnkgSW50 ZXJvcGVyYWJpbGl0eTo6IE9wZW5BQ0MgbGlicmFyeSBpbnRlcm9wZXJhYmls aXR5IHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlZJRElBIENVQkxBUyBsaWJyYXJ5LgorKiBPcGVuQUNDIFByb2ZpbGluZyBJ bnRlcmZhY2U6OgogKiBUaGUgbGliZ29tcCBBQkk6OiAgICAgICAgICAgIE5v dGVzIG9uIHRoZSBleHRlcm5hbCBBQkkgcHJlc2VudGVkIGJ5IGxpYmdvbXAu CiAqIFJlcG9ydGluZyBCdWdzOjogICAgICAgICAgICAgSG93IHRvIHJlcG9y dCBidWdzIGluIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNdWx0aSBQcm9jZXNzaW5nIFJ1bnRpbWUg TGlicmFyeS4KQEAgLTI4NzQsMTEgKzI4NzUsMTQgQEAgQS4yLjEuNC4KIAog VGhlIHZhcmlhYmxlcyBAZW52e0FDQ19ERVZJQ0VfVFlQRX0gYW5kIEBlbnZ7 QUNDX0RFVklDRV9OVU19CiBhcmUgZGVmaW5lZCBieSBzZWN0aW9uIDQgb2Yg dGhlIE9wZW5BQ0Mgc3BlY2lmaWNhdGlvbiBpbiB2ZXJzaW9uIDIuNi4KK1Ro ZSB2YXJpYWJsZSBAY29kZXtBQ0NfUFJPRkxJQn0gaXMgZGVmaW5lZCBieSBz ZWN0aW9uIDQgb2YgdGhlIE9wZW5BQ0MKK3NwZWNpZmljYXRpb24gaW4gdmVy c2lvbiAyLjYuCiBUaGUgdmFyaWFibGUgQGVudntHQ0NfQUNDX05PVElGWX0g aXMgdXNlZCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4KIAogQG1lbnUKICog QUNDX0RFVklDRV9UWVBFOjoKICogQUNDX0RFVklDRV9OVU06OgorKiBBQ0Nf UFJPRkxJQjo6CiAqIEdDQ19BQ0NfTk9USUZZOjoKIEBlbmQgbWVudQogCkBA IC0yOTA0LDYgKzI5MDgsMTkgQEAgVGhlIHZhcmlhYmxlIEBlbnZ7R0NDX0FD Q19OT1RJRll9IGlzIHVzZWQgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuCiAK IAogCitAbm9kZSBBQ0NfUFJPRkxJQgorQHNlY3Rpb24gQGNvZGV7QUNDX1BS T0ZMSUJ9CitAdGFibGUgQGFzaXMKK0BpdGVtIEBlbXBoe1NlZSBhbHNvfToK K0ByZWZ7T3BlbkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlfQorCitAaXRlbSBA ZW1waHtSZWZlcmVuY2V9OgorQHVyZWZ7aHR0cHM6Ly93d3cub3BlbmFjYy5v cmcsIE9wZW5BQ0Mgc3BlY2lmaWNhdGlvbiB2Mi42fSwgc2VjdGlvbgorNC4z LgorQGVuZCB0YWJsZQorCisKKwogQG5vZGUgR0NDX0FDQ19OT1RJRlkKIEBz ZWN0aW9uIEBjb2Rle0dDQ19BQ0NfTk9USUZZfQogQHRhYmxlIEBhc2lzCkBA IC0zMTIwLDYgKzMxMzcsMjk3IEBAIEFwcGxpY2F0aW9uIFByb2dyYW1taW5n IEludGVyZmFjZeKAnSwgVmVyc2lvbiAyLjYufQogCiAKIEBjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQGMgT3BlbkFDQyBQcm9maWxpbmcgSW50ZXJm YWNlCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgT3Bl bkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlCitAY2hhcHRlciBPcGVuQUNDIFBy b2ZpbGluZyBJbnRlcmZhY2UKKworQHNlY3Rpb24gSW1wbGVtZW50YXRpb24g U3RhdHVzIGFuZCBJbXBsZW1lbnRhdGlvbi1EZWZpbmVkIEJlaGF2aW9yCisK K1dlJ3JlIGltcGxlbWVudGluZyBtb3N0IG9mIHRoZSBQcm9maWxpbmcgSW50 ZXJmYWNlIGFzIGRlZmluZWQgYnkKK3RoZSBPcGVuQUNDIDIuNiBzcGVjaWZp Y2F0aW9uLiAgVGhlIHNwZWNpZmljYXRpb24gZG9lc24ndAorY2xlYXJseSBk ZWZpbmUgc29tZSBhc3BlY3RzIG9mIGl0cyBQcm9maWxpbmcgSW50ZXJmYWNl LCBzbyB3ZSdyZQorY2xhcmlmeWluZyB0aGVzZSBhcyBAZW1waHtpbXBsZW1l bnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yfSBoZXJlLiAgV2UKK2FscmVhZHkg aGF2ZSByZXBvcnRlZCB0byB0aGUgT3BlbkFDQyBUZWNobmljYWwgQ29tbWl0 dGVlIHNvbWUgaXNzdWVzLAorYW5kIHdpbGwgcmVwb3J0IG1vcmUsIGxhdGVy IG9uLgorCitUaGlzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPcGVuQUNDIFBy b2ZpbGluZyBJbnRlcmZhY2UgaXMgdHVuZWQgdG8KK2tlZXAgdGhlIHBlcmZv cm1hbmNlIGltcGFjdCBhcyBsb3cgYXMgcG9zc2libGUgd2hlbiBpdCdzIG5v dCBpbiB1c2UuCitUaGlzIGlzIHJlbGV2YW50LCBhcyB0aGUgUHJvZmlsaW5n IEludGVyZmFjZSBhZmZlY3RzIGFsbCB0aGUKK0BlbXBoe2hvdH0gY29kZSBw YXRocyAoaW4gdGhlIHRhcmdldCBjb2RlLCBub3QgaW4gdGhlIG9mZmxvYWRl ZCBjb2RlKS4KK1VzZXJzIG9mIHRoZSBPcGVuQUNDIFByb2ZpbGluZyBJbnRl cmZhY2UgY2FuIGJlIGV4cGVjdGVkIHRvIHVuZGVyc3RhbmQKK3RoYXQgcGVy Zm9ybWFuY2Ugd2lsbCBhbHdheXMgYmUgaW1wYWN0ZWQgdG8gc29tZSBkZWdy ZWU6IGZvciBleGFtcGxlLAorYmVjYXVzZSBvZiB0aGUgQGVtcGh7cnVudGlt ZX0gKGxpYmdvbXApIGNhbGxpbmcgaW50byBhIHRoaXJkLXBhcnR5CitAZW1w aHtsaWJyYXJ5fSBmb3IgZXZlcnkgZXZlbnQgdGhhdCBoYXMgYmVlbiByZWdp c3RlcmVkLgorCitUaGlzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPcGVuQUND IFByb2ZpbGluZyBJbnRlcmZhY2UgaGFzIG5vdCB5ZXQKK2JlZW4gdmFsaWRh dGVkIGZvciB1c2UgaW4gbXVsdGktdGhyZWFkZWQgY29kZS4gIFRoaXMgaXMg YSBtb3JlIGdlbmVyYWwKK2lzc3VlOyBzZWUgQ1NUUy0xMTAgQGNpdGV7TWFr ZSBzdXJlIGFsbCBPcGVuQUNDIGVudHJ5IHBvaW50cyBpbgorbGliZ29tcCBh cmUgdGhyZWFkLXNhZmV9LgorCitUaGUgQGNvZGV7YWNjX3Byb2ZfbG9va3Vw fSBpbnRlcmZhY2UgaXMgbm90IGltcGxlbWVudGVkLCBhbmQKK0Bjb2Rle2Fj Y19yZWdpc3Rlcl9saWJyYXJ5fSB3aWxsIHJlY2VpdmUgQGNvZGV7TlVMTH0g Zm9yIGl0cworQGNvZGV7bG9va3VwfSBwYXJhbWV0ZXIuCisKK1JlbWFya3Mg YWJvdXQgZGF0YSBwcm92aWRlZCB0byBjYWxsYmFja3M6CisKK0B0YWJsZSBA YXNpcworCitAaXRlbSBAY29kZXthY2NfcHJvZl9pbmZvLmV2ZW50X3R5cGV9 CitJdCBpcyBub3QgY2xlYXIgaWYgZm9yIEBlbXBoe25lc3RlZH0gZXZlbnQg Y2FsbGJhY2tzIChmb3IgZXhhbXBsZSwKK0Bjb2Rle2FjY19ldl9lbnF1ZXVl X2xhdW5jaF9zdGFydH0gYXMgcGFydCBvZiBhIHBhcmVudCBjb21wdXRlCitj b25zdHJ1Y3QpLCB0aGlzIHNob3VsZCBiZSBzZXQgZm9yIHRoZSBuZXN0ZWQg ZXZlbnQKKyhAY29kZXthY2NfZXZfZW5xdWV1ZV9sYXVuY2hfc3RhcnR9KSwg b3IgaWYgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQKK2NvbnN0cnVjdCBzaG91 bGQgcmVtYWluIChAY29kZXthY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3Rh cnR9KS4gIEluCit0aGlzIGltcGxlbWVudGF0aW9uLCB0aGUgdmFsdWUgd2ls bCBnZW5lcmFsbHkgY29ycmVzcG9uZCB0byB0aGUKK2lubmVybW9zdCBuZXN0 ZWQgZXZlbnQgdHlwZS4KKworQGl0ZW0gQGNvZGV7YWNjX3Byb2ZfaW5mby5k ZXZpY2VfdHlwZX0KK0BpdGVtaXplCisKK0BpdGVtCitGb3IgQGNvZGV7YWNj X2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0fSwgYW5kIGluIHByZXNlbmNl IG9mIGFuCitAY29kZXtpZn0gY2xhdXNlIHdpdGggQGVtcGh7ZmFsc2V9IGFy Z3VtZW50LCB0aGlzIHdpbGwgc3RpbGwgcmVmZXIgdG8KK3RoZSBvZmZsb2Fk aW5nIGRldmljZSB0eXBlOyB1bnN1cmUgd2hldGhlciB0aGF0J3MgdGhlIGV4 cGVjdGVkCitiZWhhdmlvci4KKworQGl0ZW0KK0NvbXBsZW1lbnRhcnkgdG8g dGhlIGl0ZW0gYmVmb3JlLCBmb3IKK0Bjb2Rle2FjY19ldl9jb21wdXRlX2Nv bnN0cnVjdF9lbmR9LCB0aGlzIGlzIHNldCB0bworQGNvZGV7YWNjX2Rldmlj ZV9ob3N0fSBpbiBwcmVzZW5jZSBvZiBhbiBAY29kZXtpZn0gY2xhdXNlIHdp dGgKK0BlbXBoe2ZhbHNlfSBhcmd1bWVudCwgdW5zdXJlIHdoZXRoZXIgdGhh dCdzIHRoZSBleHBlY3RlZCBiZWhhdmlvci4KKworQGVuZCBpdGVtaXplCisK K0BpdGVtIEBjb2Rle2FjY19wcm9mX2luZm8udGhyZWFkX2lkfQorQWx3YXlz IEBjb2Rley0xfTsgbm90IHlldCBpbXBsZW1lbnRlZC4KKworQGl0ZW0gQGNv ZGV7YWNjX3Byb2ZfaW5mby5hc3luY30KK0BpdGVtaXplCisKK0BpdGVtCitO b3QgeWV0IGltcGxlbWVudGVkIGNvcnJlY3RseSBmb3IKK0Bjb2Rle2FjY19l dl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydH0uCisKK0BpdGVtCitJbiBhIGNv bXB1dGUgY29uc3RydWN0LCBmb3IgaG9zdC1mYWxsYmFjaworZXhlY3V0aW9u L0Bjb2Rle2FjY19kZXZpY2VfaG9zdH0gaXQgd2lsbCBhbHdheXMgYmUKK0Bj b2Rle2FjY19hc3luY19zeW5jfTsgdW5zdXJlIGlmIHRoYXQgaXMgdGhlIGV4 cGVjdGVkIGJlaGF2aW9yLgorCitAaXRlbQorRm9yIEBjb2Rle2FjY19ldl9k ZXZpY2VfaW5pdF9zdGFydH0gYW5kIEBjb2Rle2FjY19ldl9kZXZpY2VfaW5p dF9lbmR9LAoraXQgd2lsbCBhbHdheXMgYmUgQGNvZGV7YWNjX2FzeW5jX3N5 bmN9OyB1bnN1cmUgaWYgdGhhdCBpcyB0aGUKK2V4cGVjdGVkIGJlaGF2aW9y LgorCitAZW5kIGl0ZW1pemUKKworQGl0ZW0gQGNvZGV7YWNjX3Byb2ZfaW5m by5hc3luY19xdWV1ZX0KK1RoZXJlIGlzIG5vIEBjaXRle2xpbWl0ZWQgbnVt YmVyIG9mIGFzeW5jaHJvbm91cyBxdWV1ZXN9IGluIGxpYmdvbXAuCitXZSBk ZWZpbmUgdGhpcyB0byBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcwor QGNvZGV7YWNjX3Byb2ZfaW5mby5hc3luY30uCisKK0BpdGVtIEBjb2Rle2Fj Y19wcm9mX2luZm8uZmlsZX0KK0Fsd2F5cyBAY29kZXtOVUxMfTsgbm90IHll dCBpbXBsZW1lbnRlZC4KKworQGl0ZW0gQGNvZGV7YWNjX3Byb2ZfaW5mby5m dW5jX25hbWV9CitBbHdheXMgQGNvZGV7TlVMTH07IG5vdCB5ZXQgaW1wbGVt ZW50ZWQuCisKK0BpdGVtIEBjb2Rle2FjY19wcm9mX2luZm8ubGluZV9ub30K K0Fsd2F5cyBAY29kZXstMX07IG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKK0Bp dGVtIEBjb2Rle2FjY19wcm9mX2luZm8uZW5kX2xpbmVfbm99CitBbHdheXMg QGNvZGV7LTF9OyBub3QgeWV0IGltcGxlbWVudGVkLgorCitAaXRlbSBAY29k ZXthY2NfcHJvZl9pbmZvLmZ1bmNfbGluZV9ub30KK0Fsd2F5cyBAY29kZXst MX07IG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKK0BpdGVtIEBjb2Rle2FjY19w cm9mX2luZm8uZnVuY19lbmRfbGluZV9ub30KK0Fsd2F5cyBAY29kZXstMX07 IG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKK0BpdGVtIEBjb2Rle2FjY19ldmVu dF9pbmZvLmV2ZW50X3R5cGV9LCBAY29kZXthY2NfZXZlbnRfaW5mby4qLmV2 ZW50X3R5cGV9CitSZWxhdGluZyB0byBAY29kZXthY2NfcHJvZl9pbmZvLmV2 ZW50X3R5cGV9IGRpc2N1c3NlZCBhYm92ZSwgaW4gdGhpcworaW1wbGVtZW50 YXRpb24sIHRoaXMgd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgdmFsdWUgYXMK K0Bjb2Rle2FjY19wcm9mX2luZm8uZXZlbnRfdHlwZX0uCisKK0BpdGVtIEBj b2Rle2FjY19ldmVudF9pbmZvLioucGFyZW50X2NvbnN0cnVjdH0KK0BpdGVt aXplCisKK0BpdGVtCitXaWxsIGJlIEBjb2Rle2FjY19jb25zdHJ1Y3RfcGFy YWxsZWx9IGZvciBPcGVuQUNDIGtlcm5lbHMgY29uc3RydWN0czsKK3Nob3Vs ZCBiZSBAY29kZXthY2NfY29uc3RydWN0X2tlcm5lbHN9LgorCitAaXRlbQor V2lsbCBiZSBAY29kZXthY2NfY29uc3RydWN0X2VudGVyX2RhdGF9IG9yCitA Y29kZXthY2NfY29uc3RydWN0X2V4aXRfZGF0YX0gd2hlbiBwcm9jZXNzaW5n IHZhcmlhYmxlIG1hcHBpbmdzCitzcGVjaWZpZWQgaW4gT3BlbkFDQyBkZWNs YXJlIGRpcmVjdGl2ZXM7IHNob3VsZCBiZQorQGNvZGV7YWNjX2NvbnN0cnVj dF9kZWNsYXJlfS4KKworQGl0ZW0KK0ZvciBpbXBsaWNpdCBAY29kZXthY2Nf ZXZfZGV2aWNlX2luaXRfc3RhcnR9LAorQGNvZGV7YWNjX2V2X2RldmljZV9p bml0X2VuZH0sIGFuZCBleHBsaWNpdCBhcyB3ZWxsIGFzIGltcGxpY2l0CitA Y29kZXthY2NfZXZfYWxsb2N9LCBAY29kZXthY2NfZXZfZnJlZX0sCitAY29k ZXthY2NfZXZfZW5xdWV1ZV91cGxvYWRfc3RhcnR9LCBAY29kZXthY2NfZXZf ZW5xdWV1ZV91cGxvYWRfZW5kfSwKK0Bjb2Rle2FjY19ldl9lbnF1ZXVlX2Rv d25sb2FkX3N0YXJ0fSwKK0Bjb2Rle2FjY19ldl9lbnF1ZXVlX2Rvd25sb2Fk X2VuZH0sIEBjb2Rle2FjY19ldl93YWl0X3N0YXJ0fSwgYW5kCitAY29kZXth Y2NfZXZfd2FpdF9lbmR9LCB3aWxsIGJlCitAY29kZXthY2NfY29uc3RydWN0 X3BhcmFsbGVsfTsgc2hvdWxkIHJlZmxlY3QgdGhlIHJlYWwgcGFyZW50Citj b25zdHJ1Y3QuCisKK0BlbmQgaXRlbWl6ZQorCitAaXRlbSBAY29kZXthY2Nf ZXZlbnRfaW5mby4qLmltcGxpY2l0fQorRm9yIEBjb2Rle2FjY19ldl9hbGxv Y30sIEBjb2Rle2FjY19ldl9mcmVlfSwKK0Bjb2Rle2FjY19ldl9lbnF1ZXVl X3VwbG9hZF9zdGFydH0sIEBjb2Rle2FjY19ldl9lbnF1ZXVlX3VwbG9hZF9l bmR9LAorQGNvZGV7YWNjX2V2X2VucXVldWVfZG93bmxvYWRfc3RhcnR9LAor QGNvZGV7YWNjX2V2X2VucXVldWVfZG93bmxvYWRfZW5kfSwgQGNvZGV7YWNj X2V2X3dhaXRfc3RhcnR9LCBhbmQKK0Bjb2Rle2FjY19ldl93YWl0X2VuZH0s IHRoaXMgY3VycmVudGx5IHdpbGwgYmUgQGNvZGV7MX0KK2Fsc28gZm9yIGV4 cGxpY2l0IHVzYWdlLgorCitAaXRlbSBAY29kZXthY2NfZXZlbnRfaW5mby5k YXRhX2V2ZW50LnZhcl9uYW1lfQorQWx3YXlzIEBjb2Rle05VTEx9OyBub3Qg eWV0IGltcGxlbWVudGVkLgorCitAaXRlbSBAY29kZXthY2NfZXZlbnRfaW5m by5kYXRhX2V2ZW50Lmhvc3RfcHRyfQorRm9yIEBjb2Rle2FjY19ldl9hbGxv Y30sIGFuZCBAY29kZXthY2NfZXZfZnJlZX0sIHRoaXMgaXMgYWx3YXlzCitA Y29kZXtOVUxMfS4KKworQGl0ZW0gQGNvZGV7dHlwZWRlZiB1bmlvbiBhY2Nf YXBpX2luZm99CitAZG90c3t9IGFzIHByaW50ZWQgaW4gQGNpdGV7NS4yLjMu IFRoaXJkIEFyZ3VtZW50OiBBUEktU3BlY2lmaWMKK0luZm9ybWF0aW9ufSwg c2hvdWxkIG9idmlvdXNseSBiZSBAY29kZXt0eXBlZGVmIEBlbXBoe3N0cnVj dH0KK2FjY19hcGlfaW5mb30uCisKK0BpdGVtIEBjb2Rle2FjY19hcGlfaW5m by5kZXZpY2VfYXBpfQorUG9zc2libHkgbm90IHlldCBpbXBsZW1lbnRlZCBj b3JyZWN0bHkgZm9yCitAY29kZXthY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rf c3RhcnR9LAorQGNvZGV7YWNjX2V2X2RldmljZV9pbml0X3N0YXJ0fSwgQGNv ZGV7YWNjX2V2X2RldmljZV9pbml0X2VuZH06Cit3aWxsIGFsd2F5cyBiZSBA Y29kZXthY2NfZGV2aWNlX2FwaV9ub25lfSBmb3IgdGhlc2UgZXZlbnQgdHlw ZXMuCitGb3IgQGNvZGV7YWNjX2V2X2VudGVyX2RhdGFfc3RhcnR9LCBpdCB3 aWxsIGJlCitAY29kZXthY2NfZGV2aWNlX2FwaV9ub25lfSBpbiBzb21lIGNh c2VzLgorCitAaXRlbSBAY29kZXthY2NfYXBpX2luZm8uZGV2aWNlX3R5cGV9 CitBbHdheXMgdGhlIHNhbWUgYXMgQGNvZGV7YWNjX3Byb2ZfaW5mby5kZXZp Y2VfdHlwZX0uCisKK0BpdGVtIEBjb2Rle2FjY19hcGlfaW5mby52ZW5kb3J9 CitBbHdheXMgQGNvZGV7LTF9OyBub3QgeWV0IGltcGxlbWVudGVkLgorCitA aXRlbSBAY29kZXthY2NfYXBpX2luZm8uZGV2aWNlX2hhbmRsZX0KK0Fsd2F5 cyBAY29kZXtOVUxMfTsgbm90IHlldCBpbXBsZW1lbnRlZC4KKworQGl0ZW0g QGNvZGV7YWNjX2FwaV9pbmZvLmNvbnRleHRfaGFuZGxlfQorQWx3YXlzIEBj b2Rle05VTEx9OyBub3QgeWV0IGltcGxlbWVudGVkLgorCitAaXRlbSBAY29k ZXthY2NfYXBpX2luZm8uYXN5bmNfaGFuZGxlfQorQWx3YXlzIEBjb2Rle05V TEx9OyBub3QgeWV0IGltcGxlbWVudGVkLgorCitAZW5kIHRhYmxlCisKK1Jl bWFya3MgYWJvdXQgY2VydGFpbiBldmVudCB0eXBlczoKKworQHRhYmxlIEBh c2lzCisKK0BpdGVtIEBjb2Rle2FjY19ldl9kZXZpY2VfaW5pdF9zdGFydH0s IEBjb2Rle2FjY19ldl9kZXZpY2VfaW5pdF9lbmR9CitAaXRlbWl6ZQorCitA aXRlbQorQGMgU2VlIERFVklDRV9JTklUX0lOU0lERV9DT01QVVRFX0NPTlNU UlVDVCBpbgorQGMgbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJv Zi1wYXJhbGxlbC0xLmMuCitXaGFuIGEgY29tcHV0ZSBjb25zdHJ1Y3QgdHJp Z2dlcnMgaW1wbGljaXQKK0Bjb2Rle2FjY19ldl9kZXZpY2VfaW5pdF9zdGFy dH0gYW5kIEBjb2Rle2FjY19ldl9kZXZpY2VfaW5pdF9lbmR9CitldmVudHMs IHRoZXkgY3VycmVudGx5IGFyZW4ndCBAZW1waHtuZXN0ZWQgd2l0aGlufSB0 aGUgY29ycmVzcG9uZGluZworQGNvZGV7YWNjX2V2X2NvbXB1dGVfY29uc3Ry dWN0X3N0YXJ0fSBhbmQKK0Bjb2Rle2FjY19ldl9jb21wdXRlX2NvbnN0cnVj dF9lbmR9LCBidXQgdGhleSdyZSBjdXJyZW50bHkgb2JzZXJ2ZWQKK0BlbXBo e2JlZm9yZX0gQGNvZGV7YWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0 fS4gIEl0IGlzIG5vdCBjbGVhcgord2hhdCB0byBkbzogdGhlIHN0YW5kYXJk IGFza3MgdXMgcHJvdmlkZSBhIGxvdCBvZiBkZXRhaWxzIHRvIHRoZQorQGNv ZGV7YWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0fSBjYWxsYmFjaywg d2l0aG91dCAoaW1wbGljaXRseSkKK2luaXRpYWxpemluZyBhIGRldmljZSBi ZWZvcmU/CisKK0BpdGVtCitDYWxsYmFja3MgZm9yIHRoZXNlIGV2ZW50IHR5 cGVzIHdpbGwgbm90IGJlIGludm9rZWQgZm9yIGNhbGxzIHRvIHRoZQorQGNv ZGV7YWNjX3NldF9kZXZpY2VfdHlwZX0gYW5kIEBjb2Rle2FjY19zZXRfZGV2 aWNlX251bX0gZnVuY3Rpb25zOworaXQncyBub3QgY2xlYXIgaWYgdGhleSBz aG91bGQgYmUuCisKK0BlbmQgaXRlbWl6ZQorCitAaXRlbSBAY29kZXthY2Nf ZXZfZW50ZXJfZGF0YV9zdGFydH0sIEBjb2Rle2FjY19ldl9lbnRlcl9kYXRh X2VuZH0sIEBjb2Rle2FjY19ldl9leGl0X2RhdGFfc3RhcnR9LCBAY29kZXth Y2NfZXZfZXhpdF9kYXRhX2VuZH0KK0BpdGVtaXplCisKK0BpdGVtCitDYWxs YmFja3MgZm9yIHRoZXNlIGV2ZW50IHR5cGVzIHdpbGwgYWxzbyBiZSBpbnZv a2VkIGZvciBPcGVuQUNDCitob3N0X2RhdGEgY29uc3RydWN0czsgaXQncyBu b3QgY2xlYXIgaWYgdGhleSBzaG91bGQgYmUuCisKK0BpdGVtCitDYWxsYmFj a3MgZm9yIHRoZXNlIGV2ZW50IHR5cGVzIHdpbGwgYWxzbyBiZSBpbnZva2Vk IHdoZW4gcHJvY2Vzc2luZwordmFyaWFibGUgbWFwcGluZ3Mgc3BlY2lmaWVk IGluIE9wZW5BQ0MgZGVjbGFyZSBkaXJlY3RpdmVzOyBpdCdzIG5vdAorY2xl YXIgaWYgdGhleSBzaG91bGQgYmUuCisKK0BlbmQgaXRlbWl6ZQorCitAZW5k IHRhYmxlCisKK0NhbGxiYWNrcyBmb3IgdGhlIGZvbGxvd2luZyBldmVudCB0 eXBlcyB3aWxsIGJlIGludm9rZWQsIGJ1dCBkaXNwYXRjaAorYW5kIGluZm9y bWF0aW9uIHByb3ZpZGVkIHRoZXJlaW4gaGFzIG5vdCB5ZXQgYmVlbiB0aG9y b3VnaGx5IHJldmlld2VkOgorCitAaXRlbWl6ZQorQGl0ZW0gQGNvZGV7YWNj X2V2X2FsbG9jfQorQGl0ZW0gQGNvZGV7YWNjX2V2X2ZyZWV9CitAaXRlbSBA Y29kZXthY2NfZXZfdXBkYXRlX3N0YXJ0fSwgQGNvZGV7YWNjX2V2X3VwZGF0 ZV9lbmR9CitAaXRlbSBAY29kZXthY2NfZXZfZW5xdWV1ZV91cGxvYWRfc3Rh cnR9LCBAY29kZXthY2NfZXZfZW5xdWV1ZV91cGxvYWRfZW5kfQorQGl0ZW0g QGNvZGV7YWNjX2V2X2VucXVldWVfZG93bmxvYWRfc3RhcnR9LCBAY29kZXth Y2NfZXZfZW5xdWV1ZV9kb3dubG9hZF9lbmR9CitAaXRlbSBAY29kZXthY2Nf ZXZfd2FpdF9zdGFydH0sIEBjb2Rle2FjY19ldl93YWl0X2VuZH0KK0BlbmQg aXRlbWl6ZQorCitEdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBhbmQg ZmluYWxpemF0aW9uLCByZXNwZWN0aXZlbHksCitjYWxsYmFja3MgZm9yIHRo ZSBmb2xsb3dpbmcgZXZlbnQgdHlwZXMgd2lsbCBub3QgeWV0IGJlIGludm9r ZWQ6CisKK0BpdGVtaXplCitAaXRlbSBAY29kZXthY2NfZXZfYWxsb2N9CitA aXRlbSBAY29kZXthY2NfZXZfZnJlZX0KK0BlbmQgaXRlbWl6ZQorCitDYWxs YmFja3MgZm9yIHRoZSBmb2xsb3dpbmcgZXZlbnQgdHlwZXMgaGF2ZSBub3Qg eWV0IGJlZW4gaW1wbGVtZW50ZWQsCitzbyBjdXJyZW50bHkgd29uJ3QgYmUg aW52b2tlZDoKKworQGl0ZW1pemUKK0BpdGVtIEBjb2Rle2FjY19ldl9kZXZp Y2Vfc2h1dGRvd25fc3RhcnR9LCBAY29kZXthY2NfZXZfZGV2aWNlX3NodXRk b3duX2VuZH0KK0BpdGVtIEBjb2Rle2FjY19ldl9ydW50aW1lX3NodXRkb3du fQorQGl0ZW0gQGNvZGV7YWNjX2V2X2NyZWF0ZX0sIEBjb2Rle2FjY19ldl9k ZWxldGV9CitAZW5kIGl0ZW1pemUKKworRm9yIHRoZSBmb2xsb3dpbmcgcnVu dGltZSBsaWJyYXJ5IGZ1bmN0aW9ucywgbm90IGFsbCBleHBlY3RlZAorY2Fs bGJhY2tzIHdpbGwgYmUgaW52b2tlZCAobW9zdGx5IGNvbmNlcm5pbmcgaW1w bGljaXQgZGV2aWNlCitpbml0aWFsaXphdGlvbik6CisKK0BpdGVtaXplCitA aXRlbSBAY29kZXthY2NfZ2V0X251bV9kZXZpY2VzfQorQGl0ZW0gQGNvZGV7 YWNjX3NldF9kZXZpY2VfdHlwZX0KK0BpdGVtIEBjb2Rle2FjY19nZXRfZGV2 aWNlX3R5cGV9CitAaXRlbSBAY29kZXthY2Nfc2V0X2RldmljZV9udW19CitA aXRlbSBAY29kZXthY2NfZ2V0X2RldmljZV9udW19CitAaXRlbSBAY29kZXth Y2NfaW5pdH0KK0BpdGVtIEBjb2Rle2FjY19zaHV0ZG93bn0KK0BlbmQgaXRl bWl6ZQorCitBc2lkZSBmcm9tIGltcGxpY2l0IGRldmljZSBpbml0aWFsaXph dGlvbiwgZm9yIHRoZSBmb2xsb3dpbmcgcnVudGltZQorbGlicmFyeSBmdW5j dGlvbnMsIG5vIGNhbGxiYWNrcyB3aWxsIGJlIGludm9rZWQgZm9yIHNoYXJl ZC1tZW1vcnkKK29mZmxvYWRpbmcgZGV2aWNlcyAoaXQncyBub3QgY2xlYXIg aWYgdGhleSBzaG91bGQgYmUpOgorCitAaXRlbWl6ZQorQGl0ZW0gQGNvZGV7 YWNjX21hbGxvY30KK0BpdGVtIEBjb2Rle2FjY19mcmVlfQorQGl0ZW0gQGNv ZGV7YWNjX2NvcHlpbn0sIEBjb2Rle2FjY19wcmVzZW50X29yX2NvcHlpbn0s IEBjb2Rle2FjY19jb3B5aW5fYXN5bmN9CitAaXRlbSBAY29kZXthY2NfY3Jl YXRlfSwgQGNvZGV7YWNjX3ByZXNlbnRfb3JfY3JlYXRlfSwgQGNvZGV7YWNj X2NyZWF0ZV9hc3luY30KK0BpdGVtIEBjb2Rle2FjY19jb3B5b3V0fSwgQGNv ZGV7YWNjX2NvcHlvdXRfYXN5bmN9CitAaXRlbSBAY29kZXthY2NfZGVsZXRl fSwgQGNvZGV7YWNjX2RlbGV0ZV9hc3luY30KK0BpdGVtIEBjb2Rle2FjY191 cGRhdGVfZGV2aWNlfSwgQGNvZGV7YWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmN9 CitAaXRlbSBAY29kZXthY2NfdXBkYXRlX3NlbGZ9LCBAY29kZXthY2NfdXBk YXRlX3NlbGZfYXN5bmN9CitAaXRlbSBAY29kZXthY2NfbWFwX2RhdGF9LCBA Y29kZXthY2NfdW5tYXBfZGF0YX0KK0BpdGVtIEBjb2Rle2FjY19tZW1jcHlf dG9fZGV2aWNlfSwgQGNvZGV7YWNjX21lbWNweV90b19kZXZpY2VfYXN5bmN9 CitAaXRlbSBAY29kZXthY2NfbWVtY3B5X2Zyb21fZGV2aWNlfSwgQGNvZGV7 YWNjX21lbWNweV9mcm9tX2RldmljZV9hc3luY30KK0BlbmQgaXRlbWl6ZQor CisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBAYyBUaGUgbGli Z29tcCBBQkkKIEBjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYg LS1naXQgYS9saWJnb21wL29hY2MtYXN5bmMuYyBiL2xpYmdvbXAvb2FjYy1h c3luYy5jCmluZGV4IDUxYmI2NzYuLmJmNTY1NjAgMTAwNjQ0Ci0tLSBhL2xp YmdvbXAvb2FjYy1hc3luYy5jCisrKyBiL2xpYmdvbXAvb2FjYy1hc3luYy5j CkBAIC0xMjUsNyArMTI1LDcgQEAgbG9va3VwX2dvYWNjX2FzeW5jcXVldWUg KHN0cnVjdCBnb2FjY190aHJlYWQgKnRociwgYm9vbCBjcmVhdGUsIGludCBh c3luYykKIAogICByZXRfYXEgPSBkZXYtPm9wZW5hY2MuYXN5bmMuYXN5bmNx dWV1ZVthc3luY107CiAKLSBlbmQ6CitlbmQ6CiAgIGdvbXBfbXV0ZXhfdW5s b2NrICgmZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2spOwogICByZXR1cm4gcmV0 X2FxOwogfQpAQCAtMTQ5LDExICsxNDksMzAgQEAgYWNjX2FzeW5jX3Rlc3Qg KGludCBhc3luYykKICAgaWYgKCF0aHIgfHwgIXRoci0+ZGV2KQogICAgIGdv bXBfZmF0YWwgKCJubyBkZXZpY2UgYWN0aXZlIik7CiAKKyAgYWNjX3Byb2Zf aW5mbyBwcm9mX2luZm87CisgIGFjY19hcGlfaW5mbyBhcGlfaW5mbzsKKyAg Ym9vbCBwcm9maWxpbmdfc2V0dXBfcAorICAgID0gX19idWlsdGluX2V4cGVj dCAoZ29hY2NfcHJvZmlsaW5nX3NldHVwX3AgKHRociwgJnByb2ZfaW5mbywg JmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsKKyAgaWYgKHByb2ZpbGluZ19zZXR1 cF9wKQorICAgIHsKKyAgICAgIHByb2ZfaW5mby5hc3luYyA9IGFzeW5jOyAv L1RPRE8KKyAgICAgIC8qIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL09wZW5B Q0Mvb3BlbmFjYy1zcGVjL2lzc3Vlcy83MT4uICAqLworICAgICAgcHJvZl9p bmZvLmFzeW5jX3F1ZXVlID0gcHJvZl9pbmZvLmFzeW5jOworICAgIH0KKwog ICBnb2FjY19hcSBhcSA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIs IGZhbHNlLCBhc3luYyk7Ci0gIGlmICghYXEpCi0gICAgcmV0dXJuIDE7Ci0g IGVsc2UKLSAgICByZXR1cm4gdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMudGVz dF9mdW5jIChhcSk7CisgIGludCByZXMgPSAxOworICBpZiAoYXEpCisgICAg cmVzID0gdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMudGVzdF9mdW5jIChhcSk7 CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAgIHRo ci0+cHJvZl9pbmZvID0gTlVMTDsKKyAgICAgIHRoci0+YXBpX2luZm8gPSBO VUxMOworICAgIH0KKworICByZXR1cm4gcmVzOwogfQogCiBpbnQKQEAgLTE2 MSw2ICsxODAsMTIgQEAgYWNjX2FzeW5jX3Rlc3RfYWxsICh2b2lkKQogewog ICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnZXRfZ29hY2NfdGhyZWFk ICgpOwogCisgIGFjY19wcm9mX2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBp X2luZm8gYXBpX2luZm87CisgIGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAg ICA9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9w ICh0aHIsICZwcm9mX2luZm8sICZhcGlfaW5mbyksCisJCQlmYWxzZSk7CisK ICAgaW50IHJldCA9IDE7CiAgIGdvbXBfbXV0ZXhfbG9jayAoJnRoci0+ZGV2 LT5vcGVuYWNjLmFzeW5jLmxvY2spOwogICBmb3IgKGdvYWNjX2FxX2xpc3Qg bCA9IHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmFjdGl2ZTsgbDsgbCA9IGwt Pm5leHQpCkBAIC0xNzAsNiArMTk1LDEzIEBAIGFjY19hc3luY190ZXN0X2Fs bCAodm9pZCkKIAlicmVhazsKICAgICAgIH0KICAgZ29tcF9tdXRleF91bmxv Y2sgKCZ0aHItPmRldi0+b3BlbmFjYy5hc3luYy5sb2NrKTsKKworICBpZiAo cHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5wcm9mX2lu Zm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAg fQorCiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE3OCw5ICsyMTAsMjcgQEAg YWNjX3dhaXQgKGludCBhc3luYykKIHsKICAgc3RydWN0IGdvYWNjX3RocmVh ZCAqdGhyID0gZ2V0X2dvYWNjX3RocmVhZCAoKTsKIAorICBhY2NfcHJvZl9p bmZvIHByb2ZfaW5mbzsKKyAgYWNjX2FwaV9pbmZvIGFwaV9pbmZvOworICBi b29sIHByb2ZpbGluZ19zZXR1cF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0 IChnb2FjY19wcm9maWxpbmdfc2V0dXBfcCAodGhyLCAmcHJvZl9pbmZvLCAm YXBpX2luZm8pLAorCQkJZmFsc2UpOworICBpZiAocHJvZmlsaW5nX3NldHVw X3ApCisgICAgeworICAgICAgcHJvZl9pbmZvLmFzeW5jID0gYXN5bmM7IC8v VE9ETworICAgICAgLyogU2VlIDxodHRwczovL2dpdGh1Yi5jb20vT3BlbkFD Qy9vcGVuYWNjLXNwZWMvaXNzdWVzLzcxPi4gICovCisgICAgICBwcm9mX2lu Zm8uYXN5bmNfcXVldWUgPSBwcm9mX2luZm8uYXN5bmM7CisgICAgfQorCiAg IGdvYWNjX2FxIGFxID0gbG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwg ZmFsc2UsIGFzeW5jKTsKICAgaWYgKGFxICYmICF0aHItPmRldi0+b3BlbmFj Yy5hc3luYy5zeW5jaHJvbml6ZV9mdW5jIChhcSkpCiAgICAgZ29tcF9mYXRh bCAoIndhaXQgb24gJWQgZmFpbGVkIiwgYXN5bmMpOworCisgIGlmIChwcm9m aWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHItPnByb2ZfaW5mbyA9 IE5VTEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVMTDsKKyAgICB9CiB9 CiAKIC8qIGFjY19hc3luY193YWl0IGlzIGFuIE9wZW5BQ0MgMS4wIGNvbXBh dGliaWxpdHkgbmFtZSBmb3IgYWNjX3dhaXQuICAqLwpAQCAtMTk5LDE2ICsy NDksMjggQEAgYWNjX3dhaXRfYXN5bmMgKGludCBhc3luYzEsIGludCBhc3lu YzIpCiB7CiAgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdldF9nb2Fj Y190aHJlYWQgKCk7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87Cisg IGFjY19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0 dXBfcAorICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5n X3NldHVwX3AgKHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZh bHNlKTsKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAg IHByb2ZfaW5mby5hc3luYyA9IGFzeW5jMjsgLy9UT0RPCisgICAgICAvKiBT ZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9p c3N1ZXMvNzE+LiAgKi8KKyAgICAgIHByb2ZfaW5mby5hc3luY19xdWV1ZSA9 IHByb2ZfaW5mby5hc3luYzsKKyAgICB9CisKICAgZ29hY2NfYXEgYXExID0g bG9va3VwX2dvYWNjX2FzeW5jcXVldWUgKHRociwgZmFsc2UsIGFzeW5jMSk7 CiAgIC8qIFRPRE86IElzIHRoaXMgYWxzbyBjb3JyZWN0IGZvciBhY2NfYXN5 bmNfc3luYywgYXNzdW1pbmcgdGhhdCBpbiB0aGlzIGNhc2UsCiAgICAgIHdl J2xsIGFsd2F5cyBiZSBzeW5jaHJvbm91cyBhbnl3YXlzPyAgKi8KICAgaWYg KCFhcTEpCi0gICAgcmV0dXJuOworICAgIGdvdG8gZW5kOwogCiAgIGdvYWNj X2FxIGFxMiA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0aHIsIHRydWUs IGFzeW5jMik7CiAgIC8qIEFuIGFzeW5jIHF1ZXVlIGlzIGFsd2F5cyBzeW5j aHJvbml6ZWQgd2l0aCBpdHNlbGYuICAqLwogICBpZiAoYXExID09IGFxMikK LSAgICByZXR1cm47CisgICAgZ290byBlbmQ7CiAKICAgaWYgKGFxMikKICAg ICB7CkBAIC0yMjIsMTIgKzI4NCwyNiBAQCBhY2Nfd2FpdF9hc3luYyAoaW50 IGFzeW5jMSwgaW50IGFzeW5jMikKICAgICAgIGlmICghdGhyLT5kZXYtPm9w ZW5hY2MuYXN5bmMuc3luY2hyb25pemVfZnVuYyAoYXExKSkKIAlnb21wX2Zh dGFsICgid2FpdCBvbiAlZCBmYWlsZWQiLCBhc3luYzEpOwogICAgIH0KKwor ZW5kOgorICBpZiAocHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAg dGhyLT5wcm9mX2luZm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9 IE5VTEw7CisgICAgfQogfQogCiB2b2lkCiBhY2Nfd2FpdF9hbGwgKHZvaWQp CiB7CiAgIHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2ID0gZ2V0X2dv YWNjX3RocmVhZF9kZXZpY2UgKCk7CisgIHN0cnVjdCBnb2FjY190aHJlYWQg KnRociA9IGdvYWNjX3RocmVhZCAoKTsKKworICBhY2NfcHJvZl9pbmZvIHBy b2ZfaW5mbzsKKyAgYWNjX2FwaV9pbmZvIGFwaV9pbmZvOworICBib29sIHBy b2ZpbGluZ19zZXR1cF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2Fj Y19wcm9maWxpbmdfc2V0dXBfcCAodGhyLCAmcHJvZl9pbmZvLCAmYXBpX2lu Zm8pLAorCQkJZmFsc2UpOwogCiAgIGJvb2wgcmV0ID0gdHJ1ZTsKICAgZ29t cF9tdXRleF9sb2NrICgmZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2spOwpAQCAt MjM3LDYgKzMxMywxMiBAQCBhY2Nfd2FpdF9hbGwgKHZvaWQpCiAKICAgaWYg KCFyZXQpCiAgICAgZ29tcF9mYXRhbCAoIndhaXQgYWxsIGZhaWxlZCIpOwor CisgIGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHIt PnByb2ZfaW5mbyA9IE5VTEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVM TDsKKyAgICB9CiB9CiAKIC8qIGFjY19hc3luY193YWl0X2FsbCBpcyBhbiBP cGVuQUNDIDEuMCBjb21wYXRpYmlsaXR5IG5hbWUgZm9yIGFjY193YWl0X2Fs bC4gICovCkBAIC0yNTUsNiArMzM3LDE4IEBAIGFjY193YWl0X2FsbF9hc3lu YyAoaW50IGFzeW5jKQogewogICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIg PSBnZXRfZ29hY2NfdGhyZWFkICgpOwogCisgIGFjY19wcm9mX2luZm8gcHJv Zl9pbmZvOworICBhY2NfYXBpX2luZm8gYXBpX2luZm87CisgIGJvb2wgcHJv ZmlsaW5nX3NldHVwX3AKKyAgICA9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNj X3Byb2ZpbGluZ19zZXR1cF9wICh0aHIsICZwcm9mX2luZm8sICZhcGlfaW5m byksCisJCQlmYWxzZSk7CisgIGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAg ICB7CisgICAgICBwcm9mX2luZm8uYXN5bmMgPSBhc3luYzsgLy9UT0RPCisg ICAgICAvKiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUNDL29wZW5h Y2Mtc3BlYy9pc3N1ZXMvNzE+LiAgKi8KKyAgICAgIHByb2ZfaW5mby5hc3lu Y19xdWV1ZSA9IHByb2ZfaW5mby5hc3luYzsKKyAgICB9CisKICAgZ29hY2Nf YXEgd2FpdGluZ19xdWV1ZSA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVlICh0 aHIsIHRydWUsIGFzeW5jKTsKIAogICBib29sIHJldCA9IHRydWU7CkBAIC0y NzIsNiArMzY2LDEyIEBAIGFjY193YWl0X2FsbF9hc3luYyAoaW50IGFzeW5j KQogCiAgIGlmICghcmV0KQogICAgIGdvbXBfZmF0YWwgKCJ3YWl0IGFsbCBh c3luYyglZCkgZmFpbGVkIiwgYXN5bmMpOworCisgIGlmIChwcm9maWxpbmdf c2V0dXBfcCkKKyAgICB7CisgICAgICB0aHItPnByb2ZfaW5mbyA9IE5VTEw7 CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVMTDsKKyAgICB9CiB9CiAKIGF0 dHJpYnV0ZV9oaWRkZW4gdm9pZApkaWZmIC0tZ2l0IGEvbGliZ29tcC9vYWNj LWN1ZGEuYyBiL2xpYmdvbXAvb2FjYy1jdWRhLmMKaW5kZXggMWNhNzE0OS4u NGJhMGJiMyAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLWN1ZGEuYworKysg Yi9saWJnb21wL29hY2MtY3VkYS5jCkBAIC0zNywxMCArMzcsMjMgQEAgYWNj X2dldF9jdXJyZW50X2N1ZGFfZGV2aWNlICh2b2lkKQogewogICBzdHJ1Y3Qg Z29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CiAKKyAgYWNj X3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFjY19hcGlfaW5mbyBhcGlfaW5m bzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBfcAorICAgID0gX19idWlsdGlu X2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3NldHVwX3AgKHRociwgJnByb2Zf aW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsKKworICB2b2lkICpyZXQg PSBOVUxMOwogICBpZiAodGhyICYmIHRoci0+ZGV2ICYmIHRoci0+ZGV2LT5v cGVuYWNjLmN1ZGEuZ2V0X2N1cnJlbnRfZGV2aWNlX2Z1bmMpCi0gICAgcmV0 dXJuIHRoci0+ZGV2LT5vcGVuYWNjLmN1ZGEuZ2V0X2N1cnJlbnRfZGV2aWNl X2Z1bmMgKCk7CisgICAgcmV0ID0gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5n ZXRfY3VycmVudF9kZXZpY2VfZnVuYyAoKTsKKworICBpZiAocHJvZmlsaW5n X3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5wcm9mX2luZm8gPSBOVUxM OworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAgfQogCi0gIHJl dHVybiBOVUxMOworICByZXR1cm4gcmV0OwogfQogCiB2b2lkICoKQEAgLTQ4 LDEwICs2MSwyMyBAQCBhY2NfZ2V0X2N1cnJlbnRfY3VkYV9jb250ZXh0ICh2 b2lkKQogewogICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190 aHJlYWQgKCk7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFj Y19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBf cAorICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3Nl dHVwX3AgKHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNl KTsKKworICB2b2lkICpyZXQgPSBOVUxMOwogICBpZiAodGhyICYmIHRoci0+ ZGV2ICYmIHRoci0+ZGV2LT5vcGVuYWNjLmN1ZGEuZ2V0X2N1cnJlbnRfY29u dGV4dF9mdW5jKQotICAgIHJldHVybiB0aHItPmRldi0+b3BlbmFjYy5jdWRh LmdldF9jdXJyZW50X2NvbnRleHRfZnVuYyAoKTsKLSAKLSAgcmV0dXJuIE5V TEw7CisgICAgcmV0ID0gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5nZXRfY3Vy cmVudF9jb250ZXh0X2Z1bmMgKCk7CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1 cF9wKQorICAgIHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gTlVMTDsKKyAg ICAgIHRoci0+YXBpX2luZm8gPSBOVUxMOworICAgIH0KKworICByZXR1cm4g cmV0OwogfQogCiB2b2lkICoKQEAgLTYyLDE0ICs4OCwzMyBAQCBhY2NfZ2V0 X2N1ZGFfc3RyZWFtIChpbnQgYXN5bmMpCiAgIGlmICghYXN5bmNfdmFsaWRf cCAoYXN5bmMpKQogICAgIHJldHVybiBOVUxMOwogCisgIGFjY19wcm9mX2lu Zm8gcHJvZl9pbmZvOworICBhY2NfYXBpX2luZm8gYXBpX2luZm87CisgIGJv b2wgcHJvZmlsaW5nX3NldHVwX3AKKyAgICA9IF9fYnVpbHRpbl9leHBlY3Qg KGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9wICh0aHIsICZwcm9mX2luZm8sICZh cGlfaW5mbyksCisJCQlmYWxzZSk7CisgIGlmIChwcm9maWxpbmdfc2V0dXBf cCkKKyAgICB7CisgICAgICBwcm9mX2luZm8uYXN5bmMgPSBhc3luYzsgLy9U T0RPCisgICAgICAvKiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUND L29wZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+LiAgKi8KKyAgICAgIHByb2ZfaW5m by5hc3luY19xdWV1ZSA9IHByb2ZfaW5mby5hc3luYzsKKyAgICB9CisKKyAg dm9pZCAqcmV0ID0gTlVMTDsKICAgaWYgKHRociAmJiB0aHItPmRldiAmJiB0 aHItPmRldi0+b3BlbmFjYy5jdWRhLmdldF9zdHJlYW1fZnVuYykKICAgICB7 CiAgICAgICBnb2FjY19hcSBhcSA9IGxvb2t1cF9nb2FjY19hc3luY3F1ZXVl ICh0aHIsIGZhbHNlLCBhc3luYyk7CiAgICAgICBpZiAoYXEpCi0JcmV0dXJu IHRoci0+ZGV2LT5vcGVuYWNjLmN1ZGEuZ2V0X3N0cmVhbV9mdW5jIChhcSk7 CisJcmV0ID0gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5nZXRfc3RyZWFtX2Z1 bmMgKGFxKTsKICAgICB9CiAgCi0gIHJldHVybiBOVUxMOworICBpZiAocHJv ZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5wcm9mX2luZm8g PSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAgfQor CisgIHJldHVybiByZXQ7CiB9CiAKIC8qIEFzIG9mIE9wZW5BQ0MgMi42LCB0 aGUgcmV0dXJuIGNvZGUgb2YgdGhpcyBmdW5jdGlvbiBhcHBlYXJzIHRvIGJl CkBAIC04Nyw2ICsxMzIsMTggQEAgYWNjX3NldF9jdWRhX3N0cmVhbSAoaW50 IGFzeW5jLCB2b2lkICpzdHJlYW0pCiAKICAgdGhyID0gZ29hY2NfdGhyZWFk ICgpOwogCisgIGFjY19wcm9mX2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBp X2luZm8gYXBpX2luZm87CisgIGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAg ICA9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9w ICh0aHIsICZwcm9mX2luZm8sICZhcGlfaW5mbyksCisJCQlmYWxzZSk7Cisg IGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICBwcm9mX2lu Zm8uYXN5bmMgPSBhc3luYzsgLy9UT0RPCisgICAgICAvKiBTZWUgPGh0dHBz Oi8vZ2l0aHViLmNvbS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+ LiAgKi8KKyAgICAgIHByb2ZfaW5mby5hc3luY19xdWV1ZSA9IHByb2ZfaW5m by5hc3luYzsKKyAgICB9CisKICAgaW50IHJldCA9IDA7CiAgIGlmICh0aHIg JiYgdGhyLT5kZXYgJiYgdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5zZXRfc3Ry ZWFtX2Z1bmMpCiAgICAgewpAQCAtOTgsMTEgKzE1NSwxOSBAQCBhY2Nfc2V0 X2N1ZGFfc3RyZWFtIChpbnQgYXN5bmMsIHZvaWQgKnN0cmVhbSkKIAkgIGFz c2VydCAoYXN5bmMgPT0gYWNjX2FzeW5jX3N5bmMpOwogCSAgZ29tcF9kZWJ1 ZyAoMCwgIlJlZnVzaW5nIHJlcXVlc3QgdG8gc2V0IENVREEgc3RyZWFtIGFz c29jaWF0ZWQiCiAJCSAgICAgICIgd2l0aCBcImFjY19hc3luY19zeW5jXCJc biIpOwotCSAgcmV0dXJuIDA7CiAJfQotICAgICAgZ29tcF9tdXRleF9sb2Nr ICgmdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmMubG9jayk7Ci0gICAgICByZXQg PSB0aHItPmRldi0+b3BlbmFjYy5jdWRhLnNldF9zdHJlYW1fZnVuYyAoYXEs IHN0cmVhbSk7Ci0gICAgICBnb21wX211dGV4X3VubG9jayAoJnRoci0+ZGV2 LT5vcGVuYWNjLmFzeW5jLmxvY2spOworICAgICAgZWxzZQorCXsKKwkgIGdv bXBfbXV0ZXhfbG9jayAoJnRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jLmxvY2sp OworCSAgcmV0ID0gdGhyLT5kZXYtPm9wZW5hY2MuY3VkYS5zZXRfc3RyZWFt X2Z1bmMgKGFxLCBzdHJlYW0pOworCSAgZ29tcF9tdXRleF91bmxvY2sgKCZ0 aHItPmRldi0+b3BlbmFjYy5hc3luYy5sb2NrKTsKKwl9CisgICAgfQorCisg IGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHItPnBy b2ZfaW5mbyA9IE5VTEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVMTDsK ICAgICB9CiAKICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2xpYmdvbXAv b2FjYy1pbml0LmMgYi9saWJnb21wL29hY2MtaW5pdC5jCmluZGV4IDBjZDY3 M2UuLjU3YjNiODcgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb2FjYy1pbml0LmMK KysrIGIvbGliZ29tcC9vYWNjLWluaXQuYwpAQCAtMjI4LDggKzIyOCw3MCBA QCBhY2NfZGV2X251bV9vdXRfb2ZfcmFuZ2UgKGFjY19kZXZpY2VfdCBkLCBp bnQgb3JkLCBpbnQgbmRldnMpCiAgICBoZWxkIGJlZm9yZSBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uICAqLwogCiBzdGF0aWMgc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICoKLWFjY19pbml0XzEgKGFjY19kZXZpY2VfdCBkKQorYWNjX2lu aXRfMSAoYWNjX2RldmljZV90IGQsIGFjY19jb25zdHJ1Y3RfdCBwYXJlbnRf Y29uc3RydWN0LCBpbnQgaW1wbGljaXQpCiB7CisgIGJvb2wgY2hlY2tfbm90 X25lc3RlZF9wOworICBpZiAoaW1wbGljaXQpCisgICAgeworICAgICAgLyog SW4gdGhlIGltcGxpY2l0IGNhc2UsIHRoZXJlIHNob3VsZCAoVE9ETzogbXVz dD8pIGFscmVhZHkgYmUgc29tZXRoaW5nCisJIGhhdmUgYmVlbiBzZXQgdXAg Zm9yIGFuIG91dGVyIGNvbnN0cnVjdC4gICovCisgICAgICBjaGVja19ub3Rf bmVzdGVkX3AgPSBmYWxzZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAg ICBjaGVja19ub3RfbmVzdGVkX3AgPSB0cnVlOworICAgICAgLyogVE9ETzog c2hvdWxkIHdlIHNldCAidGhyLT5wcm9mX2luZm8iIGV0Yy4gaW4gdGhpcyBj YXNlIChhY2NfaW5pdCk/CisJIFRoZSBwcm9ibGVtIGlzLCB0aGF0IHdlIGRv bid0IGhhdmUgInRociIgeWV0PyAgKFNvLAorCSAiY2hlY2tfbm90X25lc3Rl ZF9wID0gdHJ1ZSIgYWxzbyBpcyBwb2ludGxlc3MgYWN0dWFsbHkuKSAgKi8K KyAgICB9CisgIGJvb2wgcHJvZmlsaW5nX2Rpc3BhdGNoX3AKKyAgICA9IF9f YnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaF9wIChj aGVja19ub3RfbmVzdGVkX3ApLAorCQkJZmFsc2UpOworCisgIGFjY19wcm9m X2luZm8gcHJvZl9pbmZvOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3Ap CisgICAgeworICAgICAgcHJvZl9pbmZvLmV2ZW50X3R5cGUgPSBhY2NfZXZf ZGV2aWNlX2luaXRfc3RhcnQ7CisgICAgICBwcm9mX2luZm8udmFsaWRfYnl0 ZXMgPSBfQUNDX1BST0ZfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAgIHByb2Zf aW5mby52ZXJzaW9uID0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTjsKKyAgICAg IHByb2ZfaW5mby5kZXZpY2VfdHlwZSA9IGQ7CisgICAgICBwcm9mX2luZm8u ZGV2aWNlX251bWJlciA9IGdvYWNjX2RldmljZV9udW07CisgICAgICBwcm9m X2luZm8udGhyZWFkX2lkID0gLTE7IC8vVE9ETworICAgICAgcHJvZl9pbmZv LmFzeW5jID0gYWNjX2FzeW5jX3N5bmM7IC8vVE9ETworICAgICAgLyogU2Vl IDxodHRwczovL2dpdGh1Yi5jb20vT3BlbkFDQy9vcGVuYWNjLXNwZWMvaXNz dWVzLzcxPi4gICovCisgICAgICBwcm9mX2luZm8uYXN5bmNfcXVldWUgPSBw cm9mX2luZm8uYXN5bmM7CisgICAgICBwcm9mX2luZm8uc3JjX2ZpbGUgPSBO VUxMOyAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby5mdW5jX25hbWUgPSBOVUxM OyAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby5saW5lX25vID0gLTE7IC8vVE9E TworICAgICAgcHJvZl9pbmZvLmVuZF9saW5lX25vID0gLTE7IC8vVE9ETwor ICAgICAgcHJvZl9pbmZvLmZ1bmNfbGluZV9ubyA9IC0xOyAvL1RPRE8KKyAg ICAgIHByb2ZfaW5mby5mdW5jX2VuZF9saW5lX25vID0gLTE7IC8vVE9ETwor ICAgIH0KKyAgYWNjX2V2ZW50X2luZm8gZGV2aWNlX2luaXRfZXZlbnRfaW5m bzsKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAg IGRldmljZV9pbml0X2V2ZW50X2luZm8ub3RoZXJfZXZlbnQuZXZlbnRfdHlw ZSA9IHByb2ZfaW5mby5ldmVudF90eXBlOworICAgICAgZGV2aWNlX2luaXRf ZXZlbnRfaW5mby5vdGhlcl9ldmVudC52YWxpZF9ieXRlcworCT0gX0FDQ19P VEhFUl9FVkVOVF9JTkZPX1ZBTElEX0JZVEVTOworICAgICAgZGV2aWNlX2lu aXRfZXZlbnRfaW5mby5vdGhlcl9ldmVudC5wYXJlbnRfY29uc3RydWN0ID0g cGFyZW50X2NvbnN0cnVjdDsKKyAgICAgIGRldmljZV9pbml0X2V2ZW50X2lu Zm8ub3RoZXJfZXZlbnQuaW1wbGljaXQgPSBpbXBsaWNpdDsKKyAgICAgIGRl dmljZV9pbml0X2V2ZW50X2luZm8ub3RoZXJfZXZlbnQudG9vbF9pbmZvID0g TlVMTDsKKyAgICB9CisgIGFjY19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgaWYg KHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAgIGFwaV9pbmZv LmRldmljZV9hcGkgPSBhY2NfZGV2aWNlX2FwaV9ub25lOyAvL1RPRE8KKyAg ICAgIGFwaV9pbmZvLnZhbGlkX2J5dGVzID0gX0FDQ19BUElfSU5GT19WQUxJ RF9CWVRFUzsKKyAgICAgIGFwaV9pbmZvLmRldmljZV90eXBlID0gcHJvZl9p bmZvLmRldmljZV90eXBlOworICAgICAgYXBpX2luZm8udmVuZG9yID0gLTE7 IC8vVE9ETworICAgICAgYXBpX2luZm8uZGV2aWNlX2hhbmRsZSA9IE5VTEw7 IC8vVE9ETworICAgICAgYXBpX2luZm8uY29udGV4dF9oYW5kbGUgPSBOVUxM OyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmFzeW5jX2hhbmRsZSA9IE5VTEw7 IC8vVE9ETworICAgIH0KKworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3Ap CisgICAgZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoICgmcHJvZl9pbmZvLCAm ZGV2aWNlX2luaXRfZXZlbnRfaW5mbywgJmFwaV9pbmZvKTsKKwogICBzdHJ1 Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmJhc2VfZGV2LCAqYWNjX2RldjsKICAg aW50IG5kZXZzOwogCkBAIC0yNjEsNiArMzIzLDE0IEBAIGFjY19pbml0XzEg KGFjY19kZXZpY2VfdCBkKQogICBhY2NfaW5pdF9zdGF0ZSA9IGluaXRpYWxp emVkOwogICBnb21wX211dGV4X3VubG9jayAoJmFjY19pbml0X3N0YXRlX2xv Y2spOwogCisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkKKyAgICB7Cisg ICAgICBwcm9mX2luZm8uZXZlbnRfdHlwZSA9IGFjY19ldl9kZXZpY2VfaW5p dF9lbmQ7CisgICAgICBkZXZpY2VfaW5pdF9ldmVudF9pbmZvLm90aGVyX2V2 ZW50LmV2ZW50X3R5cGUgPSBwcm9mX2luZm8uZXZlbnRfdHlwZTsKKyAgICAg IGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAoJnByb2ZfaW5mbywgJmRldmlj ZV9pbml0X2V2ZW50X2luZm8sCisJCQkJJmFwaV9pbmZvKTsKKyAgICB9CisK ICAgcmV0dXJuIGJhc2VfZGV2OwogfQogCkBAIC00NTQsNyArNTI0LDExIEBA IGdvYWNjX2F0dGFjaF9ob3N0X3RocmVhZF90b19kZXZpY2UgKGludCBvcmQp CiAgIHRoci0+ZGV2ID0gYWNjX2RldiA9ICZiYXNlX2RldltvcmRdOwogICB0 aHItPnNhdmVkX2JvdW5kX2RldiA9IE5VTEw7CiAgIHRoci0+bWFwcGVkX2Rh dGEgPSBOVUxMOwotICAKKyAgdGhyLT5wcm9mX2luZm8gPSBOVUxMOworICB0 aHItPmFwaV9pbmZvID0gTlVMTDsKKyAgLyogSW5pdGlhbGx5LCBhbGwgY2Fs bGJhY2tzIGZvciBhbGwgZXZlbnRzIGFyZSBlbmFibGVkLiAgKi8KKyAgdGhy LT5wcm9mX2NhbGxiYWNrc19lbmFibGVkID0gdHJ1ZTsKKwogICB0aHItPnRh cmdldF90bHMKICAgICA9IGFjY19kZXYtPm9wZW5hY2MuY3JlYXRlX3RocmVh ZF9kYXRhX2Z1bmMgKG9yZCk7CiB9CkBAIC00NjgsOSArNTQyLDcgQEAgYWNj X2luaXQgKGFjY19kZXZpY2VfdCBkKQogICBnb21wX2luaXRfdGFyZ2V0c19v bmNlICgpOwogCiAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19kZXZpY2VfbG9j ayk7Ci0KLSAgY2FjaGVkX2Jhc2VfZGV2ID0gYWNjX2luaXRfMSAoZCk7Ci0K KyAgY2FjaGVkX2Jhc2VfZGV2ID0gYWNjX2luaXRfMSAoZCwgYWNjX2NvbnN0 cnVjdF9ydW50aW1lX2FwaSwgMCk7CiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgm YWNjX2RldmljZV9sb2NrKTsKICAgCiAgIGdvYWNjX2F0dGFjaF9ob3N0X3Ro cmVhZF90b19kZXZpY2UgKC0xKTsKQEAgLTQ5NSwxMSArNTY3LDIxIEBAIGlh bGlhcyAoYWNjX3NodXRkb3duKQogaW50CiBhY2NfZ2V0X251bV9kZXZpY2Vz IChhY2NfZGV2aWNlX3QgZCkKIHsKKyNpZiAwIC8vVE9ETworICBhY2NfcHJv Zl9pbmZvIHByb2ZfaW5mbzsKKyAgYWNjX2FwaV9pbmZvIGFwaV9pbmZvOwor ICBib29sIHByb2ZpbGluZ19zZXR1cF9wCisgICAgPSBfX2J1aWx0aW5fZXhw ZWN0IChnb2FjY19wcm9maWxpbmdfc2V0dXBfcCAodGhyLCAmcHJvZl9pbmZv LCAmYXBpX2luZm8pLAorCQkJZmFsc2UpOworICBpZiAocHJvZmlsaW5nX3Nl dHVwX3ApCisgICAgcHJvZl9pbmZvLmRldmljZV90eXBlID0gZDsgLy9UT0RP CisjZW5kaWYKKwogICBpbnQgbiA9IDA7CiAgIHN0cnVjdCBnb21wX2Rldmlj ZV9kZXNjciAqYWNjX2RldjsKIAogICBpZiAoZCA9PSBhY2NfZGV2aWNlX25v bmUpCi0gICAgcmV0dXJuIDA7CisgICAgZ290byBvdXQ7CiAKICAgZ29tcF9p bml0X3RhcmdldHNfb25jZSAoKTsKIApAQCAtNTA4LDEyICs1OTAsMjEgQEAg YWNjX2dldF9udW1fZGV2aWNlcyAoYWNjX2RldmljZV90IGQpCiAgIGdvbXBf bXV0ZXhfdW5sb2NrICgmYWNjX2RldmljZV9sb2NrKTsKIAogICBpZiAoIWFj Y19kZXYpCi0gICAgcmV0dXJuIDA7CisgICAgZ290byBvdXQ7CiAKICAgbiA9 IGFjY19kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgpOwogICBpZiAobiA8 IDApCiAgICAgbiA9IDA7CiAKKyBvdXQ6CisjaWYgMCAvL1RPRE8KKyAgaWYg KHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAgIHRoci0+cHJvZl9p bmZvID0gTlVMTDsKKyAgICAgIHRoci0+YXBpX2luZm8gPSBOVUxMOworICAg IH0KKyNlbmRpZgorCiAgIHJldHVybiBuOwogfQogCkBAIC01MjksNiArNjIw LDE0IEBAIGFjY19zZXRfZGV2aWNlX3R5cGUgKGFjY19kZXZpY2VfdCBkKQog ICBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmJhc2VfZGV2LCAqYWNjX2Rl djsKICAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFk ICgpOwogCisgIGFjY19wcm9mX2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBp X2luZm8gYXBpX2luZm87CisgIGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAg ICA9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9w ICh0aHIsICZwcm9mX2luZm8sICZhcGlfaW5mbyksCisJCQlmYWxzZSk7Cisg IGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAgICBwcm9mX2luZm8uZGV2aWNl X3R5cGUgPSBkOyAvL1RPRE8KKwogICBnb21wX2luaXRfdGFyZ2V0c19vbmNl ICgpOwogCiAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19kZXZpY2VfbG9jayk7 CkBAIC01NTMsNiArNjUyLDEyIEBAIGFjY19zZXRfZGV2aWNlX3R5cGUgKGFj Y19kZXZpY2VfdCBkKQogICAgIH0KIAogICBnb2FjY19hdHRhY2hfaG9zdF90 aHJlYWRfdG9fZGV2aWNlICgtMSk7CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1 cF9wKQorICAgIHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gTlVMTDsKKyAg ICAgIHRoci0+YXBpX2luZm8gPSBOVUxMOworICAgIH0KIH0KIAogaWFsaWFz IChhY2Nfc2V0X2RldmljZV90eXBlKQpAQCAtNTg4LDEyICs2OTMsMjUgQEAg YWNjX2dldF9kZXZpY2VfdHlwZSAodm9pZCkKICAgICA7CiAgIGVsc2UKICAg ICB7CisgICAgICBhY2NfcHJvZl9pbmZvIHByb2ZfaW5mbzsKKyAgICAgIGFj Y19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgICAgIGJvb2wgcHJvZmlsaW5nX3Nl dHVwX3AKKwk9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19z ZXR1cF9wICh0aHIsCisJCQkJCQkgICAgICZwcm9mX2luZm8sICZhcGlfaW5m byksCisJCQkgICAgZmFsc2UpOworCiAgICAgICBnb21wX2luaXRfdGFyZ2V0 c19vbmNlICgpOwogCiAgICAgICBnb21wX211dGV4X2xvY2sgKCZhY2NfZGV2 aWNlX2xvY2spOwogICAgICAgZGV2ID0gcmVzb2x2ZV9kZXZpY2UgKGFjY19k ZXZpY2VfZGVmYXVsdCwgdHJ1ZSk7CiAgICAgICBnb21wX211dGV4X3VubG9j ayAoJmFjY19kZXZpY2VfbG9jayk7CiAgICAgICByZXMgPSBhY2NfZGV2aWNl X3R5cGUgKGRldi0+dHlwZSk7CisKKyAgICAgIGlmIChwcm9maWxpbmdfc2V0 dXBfcCkKKwl7CisJICB0aHItPnByb2ZfaW5mbyA9IE5VTEw7CisJICB0aHIt PmFwaV9pbmZvID0gTlVMTDsKKwl9CiAgICAgfQogCiAgIGFzc2VydCAocmVz ICE9IGFjY19kZXZpY2VfZGVmYXVsdApAQCAtNjExLDYgKzcyOSwxNCBAQCBh Y2NfZ2V0X2RldmljZV9udW0gKGFjY19kZXZpY2VfdCBkKQogICBjb25zdCBz dHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldjsKICAgc3RydWN0IGdvYWNj X3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOwogCisgIGFjY19wcm9m X2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBpX2luZm8gYXBpX2luZm87Cisg IGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAgICA9IF9fYnVpbHRpbl9leHBl Y3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9wICh0aHIsICZwcm9mX2luZm8s ICZhcGlfaW5mbyksCisJCQlmYWxzZSk7CisgIGlmIChwcm9maWxpbmdfc2V0 dXBfcCkKKyAgICBwcm9mX2luZm8uZGV2aWNlX3R5cGUgPSBkOyAvL1RPRE8K KwogICBpZiAoZCA+PSBfQUNDX2RldmljZV9od20pCiAgICAgZ29tcF9mYXRh bCAoInVua25vd24gZGV2aWNlIHR5cGUgJXUiLCAodW5zaWduZWQpIGQpOwog CkBAIC02MjAsNiArNzQ2LDEyIEBAIGFjY19nZXRfZGV2aWNlX251bSAoYWNj X2RldmljZV90IGQpCiAgIGRldiA9IHJlc29sdmVfZGV2aWNlIChkLCB0cnVl KTsKICAgZ29tcF9tdXRleF91bmxvY2sgKCZhY2NfZGV2aWNlX2xvY2spOwog CisgIGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHIt PnByb2ZfaW5mbyA9IE5VTEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVM TDsKKyAgICB9CisKICAgaWYgKHRociAmJiB0aHItPmJhc2VfZGV2ID09IGRl diAmJiB0aHItPmRldikKICAgICByZXR1cm4gdGhyLT5kZXYtPnRhcmdldF9p ZDsKIApAQCAtNjMxLDYgKzc2MywxOSBAQCBpYWxpYXMgKGFjY19nZXRfZGV2 aWNlX251bSkKIHZvaWQKIGFjY19zZXRfZGV2aWNlX251bSAoaW50IG9yZCwg YWNjX2RldmljZV90IGQpCiB7CisjaWYgMCAvL1RPRE8KKyAgYWNjX3Byb2Zf aW5mbyBwcm9mX2luZm87CisgIGFjY19hcGlfaW5mbyBhcGlfaW5mbzsKKyAg Ym9vbCBwcm9maWxpbmdfc2V0dXBfcAorICAgID0gX19idWlsdGluX2V4cGVj dCAoZ29hY2NfcHJvZmlsaW5nX3NldHVwX3AgKHRociwgJnByb2ZfaW5mbywg JmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsKKyAgaWYgKHByb2ZpbGluZ19zZXR1 cF9wKQorICAgIHsKKyAgICAgIHByb2ZfaW5mby5kZXZpY2VfdHlwZSA9IGQ7 IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmRldmljZV90eXBlID0gb3JkOyAv L1RPRE8KKyAgICB9CisjZW5kaWYKKwogICBzdHJ1Y3QgZ29tcF9kZXZpY2Vf ZGVzY3IgKmJhc2VfZGV2LCAqYWNjX2RldjsKICAgaW50IG51bV9kZXZpY2Vz OwogCkBAIC02NjgsNiArODEzLDE0IEBAIGFjY19zZXRfZGV2aWNlX251bSAo aW50IG9yZCwgYWNjX2RldmljZV90IGQpCiAgICAgfQogICAKICAgZ29hY2Nf ZGV2aWNlX251bSA9IG9yZDsKKworI2lmIDAgLy9UT0RPCisgIGlmIChwcm9m aWxpbmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHItPnByb2ZfaW5mbyA9 IE5VTEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVMTDsKKyAgICB9Cisj ZW5kaWYKIH0KIAogaWFsaWFzIChhY2Nfc2V0X2RldmljZV9udW0pCkBAIC02 ODgsMTQgKzg0MSwzMiBAQCBnZXRfcHJvcGVydHlfYW55IChpbnQgb3JkLCBh Y2NfZGV2aWNlX3QgZCwgYWNjX2RldmljZV9wcm9wZXJ0eV90IHByb3ApCiAg IGlmIChkID09IGFjY19kZXZpY2VfY3VycmVudCAmJiAoIXRociB8fCAhdGhy LT5kZXYpKQogICAgIHJldHVybiAodW5pb24gZ29tcF9kZXZpY2VfcHJvcGVy dHlfdmFsdWUpIHsgLnZhbCA9IDAgfTsKIAorICBhY2NfcHJvZl9pbmZvIHBy b2ZfaW5mbzsKKyAgYWNjX2FwaV9pbmZvIGFwaV9pbmZvOworICBib29sIHBy b2ZpbGluZ19zZXR1cF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2Fj Y19wcm9maWxpbmdfc2V0dXBfcCAodGhyLCAmcHJvZl9pbmZvLCAmYXBpX2lu Zm8pLAorCQkJZmFsc2UpOworCiAgIGlmIChkID09IGFjY19kZXZpY2VfY3Vy cmVudCkKICAgICB7CisgICAgICBpZiAocHJvZmlsaW5nX3NldHVwX3ApCisJ eworCSAgcHJvZl9pbmZvLmRldmljZV90eXBlID0gYWNjX2RldmljZV90eXBl ICh0aHItPmRldi0+dHlwZSk7CisJICBwcm9mX2luZm8uZGV2aWNlX251bWJl ciA9IHRoci0+ZGV2LT50YXJnZXRfaWQ7CisJfQorCiAgICAgICBkZXYgPSB0 aHItPmRldjsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBpbnQgbnVt X2RldmljZXM7CiAKKyAgICAgIGlmIChwcm9maWxpbmdfc2V0dXBfcCkKKwl7 CisJICBwcm9mX2luZm8uZGV2aWNlX3R5cGUgPSBkOworCSAgcHJvZl9pbmZv LmRldmljZV9udW1iZXIgPSBvcmQ7CisJfQorCiAgICAgICBnb21wX211dGV4 X2xvY2sgKCZhY2NfZGV2aWNlX2xvY2spOwogCiAgICAgICBkZXYgPSByZXNv bHZlX2RldmljZSAoZCwgZmFsc2UpOwpAQCAtNzE5LDYgKzg5MCwxMiBAQCBn ZXRfcHJvcGVydHlfYW55IChpbnQgb3JkLCBhY2NfZGV2aWNlX3QgZCwgYWNj X2RldmljZV9wcm9wZXJ0eV90IHByb3ApCiAKICAgcHJvcHZhbCA9IGRldi0+ Z2V0X3Byb3BlcnR5X2Z1bmMgKGRldi0+dGFyZ2V0X2lkLCBwcm9wKTsKIAor ICBpZiAocHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5w cm9mX2luZm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7 CisgICAgfQorCiAgIHJldHVybiBwcm9wdmFsOwogfQogCkBAIC04MDksMTIg Kzk4NiwxNiBAQCBhdHRyaWJ1dGVfaGlkZGVuIHZvaWQKIGdvYWNjX2xhenlf aW5pdGlhbGl6ZSAodm9pZCkKIHsKICAgc3RydWN0IGdvYWNjX3RocmVhZCAq dGhyID0gZ29hY2NfdGhyZWFkICgpOwotCiAgIGlmICh0aHIgJiYgdGhyLT5k ZXYpCiAgICAgcmV0dXJuOwogCisgIGdvbXBfaW5pdF90YXJnZXRzX29uY2Ug KCk7CisKKyAgZ29tcF9tdXRleF9sb2NrICgmYWNjX2RldmljZV9sb2NrKTsK ICAgaWYgKCFjYWNoZWRfYmFzZV9kZXYpCi0gICAgYWNjX2luaXQgKGFjY19k ZXZpY2VfZGVmYXVsdCk7Ci0gIGVsc2UKLSAgICBnb2FjY19hdHRhY2hfaG9z dF90aHJlYWRfdG9fZGV2aWNlICgtMSk7CisgICAgY2FjaGVkX2Jhc2VfZGV2 ID0gYWNjX2luaXRfMSAoYWNjX2RldmljZV9kZWZhdWx0LAorCQkJCSAgLyog VE9ETyAqLyBhY2NfY29uc3RydWN0X3BhcmFsbGVsLCAxKTsKKyAgZ29tcF9t dXRleF91bmxvY2sgKCZhY2NfZGV2aWNlX2xvY2spOworCisgIGdvYWNjX2F0 dGFjaF9ob3N0X3RocmVhZF90b19kZXZpY2UgKC0xKTsKIH0KZGlmZiAtLWdp dCBhL2xpYmdvbXAvb2FjYy1pbnQuaCBiL2xpYmdvbXAvb2FjYy1pbnQuaApp bmRleCBlNGI2ZWE2Li45ODBjZjMyIDEwMDY0NAotLS0gYS9saWJnb21wL29h Y2MtaW50LmgKKysrIGIvbGliZ29tcC9vYWNjLWludC5oCkBAIC00MCw2ICs0 MCw3IEBACiAKICNpbmNsdWRlICJvcGVuYWNjLmgiCiAjaW5jbHVkZSAiY29u ZmlnLmgiCisjaW5jbHVkZSAiYWNjX3Byb2YuaCIKICNpbmNsdWRlIDxzdGRk ZWYuaD4KICNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVkZSA8c3RkYXJn Lmg+CkBAIC02OCw2ICs2OSwxMiBAQCBzdHJ1Y3QgZ29hY2NfdGhyZWFkCiAg ICAgIHN0cmljdGx5IHB1c2gvcG9wIHNlbWFudGljcyBhY2NvcmRpbmcgdG8g bGV4aWNhbCBzY29wZS4gICovCiAgIHN0cnVjdCB0YXJnZXRfbWVtX2Rlc2Mg Km1hcHBlZF9kYXRhOwogCisgIC8qIERhdGEgb2YgdGhlIE9wZW5BQ0MgUHJv ZmlsaW5nIEludGVyZmFjZS4gICovCisgIGFjY19wcm9mX2luZm8gKnByb2Zf aW5mbzsKKyAgYWNjX2FwaV9pbmZvICphcGlfaW5mbzsKKyAgLyogUGVyLXRo cmVhZCB0b2dnbGUgb2YgT3BlbkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlIGNh bGxiYWNrcy4gICovCisgIGJvb2wgcHJvZl9jYWxsYmFja3NfZW5hYmxlZDsK KwogICAvKiBUaGVzZSBzdHJ1Y3R1cmVzIGZvcm0gYSBsaXN0OiB0aGlzIGlz IHRoZSBuZXh0IHRocmVhZCBpbiB0aGF0IGxpc3QuICAqLwogICBzdHJ1Y3Qg Z29hY2NfdGhyZWFkICpuZXh0OwogCkBAIC0xMjgsNiArMTM1LDEzIEBAIGFz eW5jX3N5bmNocm9ub3VzX3AgKGludCBhc3luYykKICAgcmV0dXJuIGFzeW5j ID09IGFjY19hc3luY19zeW5jOwogfQogCit2b2lkIGdvYWNjX3Byb2ZpbGlu Z19pbml0aWFsaXplICh2b2lkKTsKK2Jvb2wgZ29hY2NfcHJvZmlsaW5nX3Nl dHVwX3AgKHN0cnVjdCBnb2FjY190aHJlYWQgKiwKKwkJCSAgICAgIGFjY19w cm9mX2luZm8gKiwgYWNjX2FwaV9pbmZvICopOworYm9vbCBnb2FjY19wcm9m aWxpbmdfZGlzcGF0Y2hfcCAoYm9vbCk7Cit2b2lkIGdvYWNjX3Byb2ZpbGlu Z19kaXNwYXRjaCAoYWNjX3Byb2ZfaW5mbyAqLCBhY2NfZXZlbnRfaW5mbyAq LAorCQkJICAgICAgIGFjY19hcGlfaW5mbyAqKTsKKwogI2lmZGVmIEhBVkVf QVRUUklCVVRFX1ZJU0lCSUxJVFkKICMgcHJhZ21hIEdDQyB2aXNpYmlsaXR5 IHBvcAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJnb21wL29hY2MtbWVtLmMg Yi9saWJnb21wL29hY2MtbWVtLmMKaW5kZXggYjNiMzc3Ny4uMTkyMmYzOCAx MDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLW1lbS5jCisrKyBiL2xpYmdvbXAv b2FjYy1tZW0uYwpAQCAtOTksMTIgKzk5LDMwIEBAIGFjY19tYWxsb2MgKHNp emVfdCBzKQogCiAgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNj X3RocmVhZCAoKTsKIAorICBhY2NfcHJvZl9pbmZvIHByb2ZfaW5mbzsKKyAg YWNjX2FwaV9pbmZvIGFwaV9pbmZvOworICBib29sIHByb2ZpbGluZ19zZXR1 cF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2FjY19wcm9maWxpbmdf c2V0dXBfcCAodGhyLCAmcHJvZl9pbmZvLCAmYXBpX2luZm8pLAorCQkJZmFs c2UpOworCiAgIGFzc2VydCAodGhyLT5kZXYpOwogCisgIHZvaWQgKnJldDsK ICAgaWYgKHRoci0+ZGV2LT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURf Q0FQX1NIQVJFRF9NRU0pCi0gICAgcmV0dXJuIG1hbGxvYyAocyk7CisgICAg eworICAgICAgLyogVE9ETzogU2hvdWxkIHdlIGFsc28gZ2VuZXJhdGUgYWNj X2V2X2FsbG9jIGhlcmU/ICAqLworICAgICAgcmV0ID0gbWFsbG9jIChzKTsK KyAgICB9CisgIGVsc2UKKyAgICByZXQgPSB0aHItPmRldi0+YWxsb2NfZnVu YyAodGhyLT5kZXYtPnRhcmdldF9pZCwgcyk7CisKKyAgaWYgKHByb2ZpbGlu Z19zZXR1cF9wKQorICAgIHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gTlVM TDsKKyAgICAgIHRoci0+YXBpX2luZm8gPSBOVUxMOworICAgIH0KIAotICBy ZXR1cm4gdGhyLT5kZXYtPmFsbG9jX2Z1bmMgKHRoci0+ZGV2LT50YXJnZXRf aWQsIHMpOworICByZXR1cm4gcmV0OwogfQogCiAvKiBPcGVuQUNDIDIuMGEg KDMuMi4xNikgZG9lc24ndCBzcGVjaWZ5IHdoYXQgdG8gZG8gaW4gdGhlIGV2 ZW50CkBAIC0xMjAsMTIgKzEzOCwyMyBAQCBhY2NfZnJlZSAodm9pZCAqZCkK IAogICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQg KCk7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFjY19hcGlf aW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBfcAorICAg ID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3NldHVwX3Ag KHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsKKwog ICBhc3NlcnQgKHRociAmJiB0aHItPmRldik7CiAKICAgc3RydWN0IGdvbXBf ZGV2aWNlX2Rlc2NyICphY2NfZGV2ID0gdGhyLT5kZXY7CiAKICAgaWYgKGFj Y19kZXYtPmNhcGFiaWxpdGllcyAmIEdPTVBfT0ZGTE9BRF9DQVBfU0hBUkVE X01FTSkKLSAgICByZXR1cm4gZnJlZSAoZCk7CisgICAgeworICAgICAgLyog VE9ETzogU2hvdWxkIHdlIGFsc28gZ2VuZXJhdGUgYWNjX2V2X2ZyZWUgaGVy ZT8gICovCisgICAgICBmcmVlIChkKTsKKworICAgICAgZ290byBvdXQ7Cisg ICAgfQogCiAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19kZXYtPmxvY2spOwog CkBAIC0xNDcsNiArMTc2LDEzIEBAIGFjY19mcmVlICh2b2lkICpkKQogCiAg IGlmICghYWNjX2Rldi0+ZnJlZV9mdW5jIChhY2NfZGV2LT50YXJnZXRfaWQs IGQpKQogICAgIGdvbXBfZmF0YWwgKCJlcnJvciBpbiBmcmVlaW5nIGRldmlj ZSBtZW1vcnkgaW4gJXMiLCBfX0ZVTkNUSU9OX18pOworCisgb3V0OgorICBp ZiAocHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5wcm9m X2luZm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7Cisg ICAgfQogfQogCiBzdGF0aWMgdm9pZApAQCAtMTU3LDE1ICsxOTMsMzEgQEAg bWVtY3B5X3RvZnJvbV9kZXZpY2UgKGJvb2wgZnJvbSwgdm9pZCAqZCwgdm9p ZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYywKICAgICAgYmVlbiBvYnRhaW5l ZCBmcm9tIGEgcm91dGluZSB0aGF0IGRpZCB0aGF0LiAgKi8KICAgc3RydWN0 IGdvYWNjX3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOwogCisgIGFj Y19wcm9mX2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBpX2luZm8gYXBpX2lu Zm87CisgIGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAgICA9IF9fYnVpbHRp bl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9wICh0aHIsICZwcm9m X2luZm8sICZhcGlfaW5mbyksCisJCQlmYWxzZSk7CisgIGlmIChwcm9maWxp bmdfc2V0dXBfcCkKKyAgICB7CisgICAgICBwcm9mX2luZm8uYXN5bmMgPSBh c3luYzsgLy9UT0RPCisgICAgICAvKiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNv bS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+LiAgKi8KKyAgICAg IHByb2ZfaW5mby5hc3luY19xdWV1ZSA9IHByb2ZfaW5mby5hc3luYzsKKyAg ICB9CisKICAgYXNzZXJ0ICh0aHIgJiYgdGhyLT5kZXYpOwogCiAgIGlmICh0 aHItPmRldi0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NBUF9TSEFS RURfTUVNKQogICAgIHsKKyAgICAgIC8qIFRPRE86IFNob3VsZCB3ZSBhbHNv IGdlbmVyYXRlCisJIGFjY19ldl9lbnF1ZXVlX3VwbG9hZF9zdGFydC9hY2Nf ZXZfZW5xdWV1ZV91cGxvYWRfZW5kIG9yCisJIGFjY19ldl9lbnF1ZXVlX2Rv d25sb2FkX3N0YXJ0L2FjY19ldl9lbnF1ZXVlX2Rvd25sb2FkX2VuZCBoZXJl PyAgKi8KICAgICAgIGlmIChmcm9tKQogCW1lbW1vdmUgKGgsIGQsIHMpOwog ICAgICAgZWxzZQogCW1lbW1vdmUgKGQsIGgsIHMpOwotICAgICAgcmV0dXJu OworCisgICAgICBnb3RvIG91dDsKICAgICB9CiAKICAgZ29hY2NfYXEgYXEg PSBnZXRfZ29hY2NfYXN5bmNxdWV1ZSAoYXN5bmMpOwpAQCAtMTczLDYgKzIy NSwxMyBAQCBtZW1jcHlfdG9mcm9tX2RldmljZSAoYm9vbCBmcm9tLCB2b2lk ICpkLCB2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jLAogICAgIGdvbXBf Y29weV9kZXYyaG9zdCAodGhyLT5kZXYsIGFxLCBoLCBkLCBzKTsKICAgZWxz ZQogICAgIGdvbXBfY29weV9ob3N0MmRldiAodGhyLT5kZXYsIGFxLCBkLCBo LCBzLCAvKiBUT0RPOiBjYnVmPyAqLyBOVUxMKTsKKworb3V0OgorICBpZiAo cHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgdGhyLT5wcm9mX2lu Zm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAg fQogfQogCiB2b2lkCkBAIC0yMTcsNiArMjc2LDkgQEAgYWNjX2RldmljZXB0 ciAodm9pZCAqaCkKICAgaWYgKHRoci0+ZGV2LT5jYXBhYmlsaXRpZXMgJiBH T01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0pCiAgICAgcmV0dXJuIGg7CiAK KyAgLyogSW4gdGhlIGZvbGxvd2luZywgbm8gT3BlbkFDQyBQcm9maWxpbmcg SW50ZXJmYWNlIGV2ZW50cyBjYW4gcG9zc2libHkgYmUKKyAgICAgZ2VuZXJh dGVkLiAgKi8KKwogICBnb21wX211dGV4X2xvY2sgKCZkZXYtPmxvY2spOwog CiAgIG4gPSBsb29rdXBfaG9zdCAoZGV2LCBoLCAxKTsKQEAgLTI1NCw2ICsz MTYsOSBAQCBhY2NfaG9zdHB0ciAodm9pZCAqZCkKICAgaWYgKHRoci0+ZGV2 LT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0p CiAgICAgcmV0dXJuIGQ7CiAKKyAgLyogSW4gdGhlIGZvbGxvd2luZywgbm8g T3BlbkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlIGV2ZW50cyBjYW4gcG9zc2li bHkgYmUKKyAgICAgZ2VuZXJhdGVkLiAgKi8KKwogICBnb21wX211dGV4X2xv Y2sgKCZhY2NfZGV2LT5sb2NrKTsKIAogICBuID0gbG9va3VwX2RldiAoJmFj Y19kZXYtPm1lbV9tYXAsIGQsIDEpOwpAQCAtMjkxLDYgKzM1Niw5IEBAIGFj Y19pc19wcmVzZW50ICh2b2lkICpoLCBzaXplX3QgcykKICAgaWYgKHRoci0+ ZGV2LT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX1NIQVJFRF9N RU0pCiAgICAgcmV0dXJuIGggIT0gTlVMTDsKIAorICAvKiBJbiB0aGUgZm9s bG93aW5nLCBubyBPcGVuQUNDIFByb2ZpbGluZyBJbnRlcmZhY2UgZXZlbnRz IGNhbiBwb3NzaWJseSBiZQorICAgICBnZW5lcmF0ZWQuICAqLworCiAgIGdv bXBfbXV0ZXhfbG9jayAoJmFjY19kZXYtPmxvY2spOwogCiAgIG4gPSBsb29r dXBfaG9zdCAoYWNjX2RldiwgaCwgcyk7CkBAIC0zMjIsNiArMzkwLDEyIEBA IGFjY19tYXBfZGF0YSAodm9pZCAqaCwgdm9pZCAqZCwgc2l6ZV90IHMpCiAg IHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsK ICAgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICphY2NfZGV2ID0gdGhyLT5k ZXY7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFjY19hcGlf aW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBfcAorICAg ID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3NldHVwX3Ag KHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsKKwog ICBpZiAoYWNjX2Rldi0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NB UF9TSEFSRURfTUVNKQogICAgIHsKICAgICAgIGlmIChkICE9IGgpCkBAIC0z NTcsNiArNDMxLDEyIEBAIGFjY19tYXBfZGF0YSAodm9pZCAqaCwgdm9pZCAq ZCwgc2l6ZV90IHMpCiAJCQkgICAma2luZHMsIHRydWUsIEdPTVBfTUFQX1ZB UlNfT1BFTkFDQyk7CiAgICAgICB0Z3QtPmxpc3RbMF0ua2V5LT5yZWZjb3Vu dCA9IFJFRkNPVU5UX0lORklOSVRZOwogICAgIH0KKworICAgaWYgKHByb2Zp bGluZ19zZXR1cF9wKQorICAgICB7CisgICAgICAgdGhyLT5wcm9mX2luZm8g PSBOVUxMOworICAgICAgIHRoci0+YXBpX2luZm8gPSBOVUxMOworICAgICB9 CiB9CiAKIHZvaWQKQEAgLTM3Miw2ICs0NTIsMTIgQEAgYWNjX3VubWFwX2Rh dGEgKHZvaWQgKmgpCiAgIGlmIChhY2NfZGV2LT5jYXBhYmlsaXRpZXMgJiBH T01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0pCiAgICAgcmV0dXJuOwogCisg IGFjY19wcm9mX2luZm8gcHJvZl9pbmZvOworICBhY2NfYXBpX2luZm8gYXBp X2luZm87CisgIGJvb2wgcHJvZmlsaW5nX3NldHVwX3AKKyAgICA9IF9fYnVp bHRpbl9leHBlY3QgKGdvYWNjX3Byb2ZpbGluZ19zZXR1cF9wICh0aHIsICZw cm9mX2luZm8sICZhcGlfaW5mbyksCisJCQlmYWxzZSk7CisKICAgZ29tcF9t dXRleF9sb2NrICgmYWNjX2Rldi0+bG9jayk7CiAKICAgY3VyX25vZGUuaG9z dF9zdGFydCA9ICh1aW50cHRyX3QpIGg7CkBAIC00MDUsNiArNDkxLDEyIEBA IGFjY191bm1hcF9kYXRhICh2b2lkICpoKQogICAgIH0KIAogICBnb21wX211 dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOworCisgIGlmIChwcm9maWxp bmdfc2V0dXBfcCkKKyAgICB7CisgICAgICB0aHItPnByb2ZfaW5mbyA9IE5V TEw7CisgICAgICB0aHItPmFwaV9pbmZvID0gTlVMTDsKKyAgICB9CiB9CiAK ICNkZWZpbmUgRkxBR19QUkVTRU5UICgxIDw8IDApCkBAIC00MjgsNiArNTIw LDE4IEBAIHByZXNlbnRfY3JlYXRlX2NvcHkgKHVuc2lnbmVkIGYsIHZvaWQg KmgsIHNpemVfdCBzLCBpbnQgYXN5bmMpCiAgIGlmIChhY2NfZGV2LT5jYXBh YmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0pCiAgICAg cmV0dXJuIGg7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFj Y19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBf cAorICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3Nl dHVwX3AgKHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNl KTsKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAgIHBy b2ZfaW5mby5hc3luYyA9IGFzeW5jOyAvL1RPRE8KKyAgICAgIC8qIFNlZSA8 aHR0cHM6Ly9naXRodWIuY29tL09wZW5BQ0Mvb3BlbmFjYy1zcGVjL2lzc3Vl cy83MT4uICAqLworICAgICAgcHJvZl9pbmZvLmFzeW5jX3F1ZXVlID0gcHJv Zl9pbmZvLmFzeW5jOworICAgIH0KKwogICBnb21wX211dGV4X2xvY2sgKCZh Y2NfZGV2LT5sb2NrKTsKIAogICBuID0gbG9va3VwX2hvc3QgKGFjY19kZXYs IGgsIHMpOwpAQCAtNDg5LDYgKzU5MywxMiBAQCBwcmVzZW50X2NyZWF0ZV9j b3B5ICh1bnNpZ25lZCBmLCB2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5j KQogICAgICAgZ29tcF9tdXRleF91bmxvY2sgKCZhY2NfZGV2LT5sb2NrKTsK ICAgICB9CiAKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAg ICAgIHRoci0+cHJvZl9pbmZvID0gTlVMTDsKKyAgICAgIHRoci0+YXBpX2lu Zm8gPSBOVUxMOworICAgIH0KKwogICByZXR1cm4gZDsKIH0KIApAQCAtNTY5 LDYgKzY3OSwxOCBAQCBkZWxldGVfY29weW91dCAodW5zaWduZWQgZiwgdm9p ZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYywgY29uc3QgY2hhciAqbGliZm5u YW1lKQogICBpZiAoYWNjX2Rldi0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZM T0FEX0NBUF9TSEFSRURfTUVNKQogICAgIHJldHVybjsKIAorICBhY2NfcHJv Zl9pbmZvIHByb2ZfaW5mbzsKKyAgYWNjX2FwaV9pbmZvIGFwaV9pbmZvOwor ICBib29sIHByb2ZpbGluZ19zZXR1cF9wCisgICAgPSBfX2J1aWx0aW5fZXhw ZWN0IChnb2FjY19wcm9maWxpbmdfc2V0dXBfcCAodGhyLCAmcHJvZl9pbmZv LCAmYXBpX2luZm8pLAorCQkJZmFsc2UpOworICBpZiAocHJvZmlsaW5nX3Nl dHVwX3ApCisgICAgeworICAgICAgcHJvZl9pbmZvLmFzeW5jID0gYXN5bmM7 IC8vVE9ETworICAgICAgLyogU2VlIDxodHRwczovL2dpdGh1Yi5jb20vT3Bl bkFDQy9vcGVuYWNjLXNwZWMvaXNzdWVzLzcxPi4gICovCisgICAgICBwcm9m X2luZm8uYXN5bmNfcXVldWUgPSBwcm9mX2luZm8uYXN5bmM7CisgICAgfQor CiAgIGdvbXBfbXV0ZXhfbG9jayAoJmFjY19kZXYtPmxvY2spOwogCiAgIG4g PSBsb29rdXBfaG9zdCAoYWNjX2RldiwgaCwgcyk7CkBAIC02MjcsNiArNzQ5 LDEyIEBAIGRlbGV0ZV9jb3B5b3V0ICh1bnNpZ25lZCBmLCB2b2lkICpoLCBz aXplX3QgcywgaW50IGFzeW5jLCBjb25zdCBjaGFyICpsaWJmbm5hbWUpCiAg ICAgfQogCiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7 CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAgIHRo ci0+cHJvZl9pbmZvID0gTlVMTDsKKyAgICAgIHRoci0+YXBpX2luZm8gPSBO VUxMOworICAgIH0KIH0KIAogdm9pZApAQCAtNzAwLDYgKzgyOCwxOCBAQCB1 cGRhdGVfZGV2X2hvc3QgKGludCBpc19kZXYsIHZvaWQgKmgsIHNpemVfdCBz LCBpbnQgYXN5bmMpCiAKICAgZ29tcF9tdXRleF9sb2NrICgmYWNjX2Rldi0+ bG9jayk7CiAKKyAgYWNjX3Byb2ZfaW5mbyBwcm9mX2luZm87CisgIGFjY19h cGlfaW5mbyBhcGlfaW5mbzsKKyAgYm9vbCBwcm9maWxpbmdfc2V0dXBfcAor ICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX3NldHVw X3AgKHRociwgJnByb2ZfaW5mbywgJmFwaV9pbmZvKSwKKwkJCWZhbHNlKTsK KyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAgICAgIHByb2Zf aW5mby5hc3luYyA9IGFzeW5jOyAvL1RPRE8KKyAgICAgIC8qIFNlZSA8aHR0 cHM6Ly9naXRodWIuY29tL09wZW5BQ0Mvb3BlbmFjYy1zcGVjL2lzc3Vlcy83 MT4uICAqLworICAgICAgcHJvZl9pbmZvLmFzeW5jX3F1ZXVlID0gcHJvZl9p bmZvLmFzeW5jOworICAgIH0KKwogICBuID0gbG9va3VwX2hvc3QgKGFjY19k ZXYsIGgsIHMpOwogCiAgIGlmICghbikKQEAgLTcxOSw2ICs4NTksMTIgQEAg dXBkYXRlX2Rldl9ob3N0IChpbnQgaXNfZGV2LCB2b2lkICpoLCBzaXplX3Qg cywgaW50IGFzeW5jKQogICAgIGdvbXBfY29weV9kZXYyaG9zdCAoYWNjX2Rl diwgYXEsIGgsIGQsIHMpOwogCiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNj X2Rldi0+bG9jayk7CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAg IHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gTlVMTDsKKyAgICAgIHRoci0+ YXBpX2luZm8gPSBOVUxMOworICAgIH0KIH0KIAogdm9pZApkaWZmIC0tZ2l0 IGEvbGliZ29tcC9vYWNjLXBhcmFsbGVsLmMgYi9saWJnb21wL29hY2MtcGFy YWxsZWwuYwppbmRleCBiOTQ5NTk5Li42NzBjNjJjIDEwMDY0NAotLS0gYS9s aWJnb21wL29hY2MtcGFyYWxsZWwuYworKysgYi9saWJnb21wL29hY2MtcGFy YWxsZWwuYwpAQCAtMjA1LDIyICsyMDUsODEgQEAgR09BQ0NfcGFyYWxsZWxf a2V5ZWRfaW50ZXJuYWwgKGludCBmbGFnc19tLCBpbnQgcGFyYW1zLCB2b2lk ICgqZm4pICh2b2lkICopLAogICB0aHIgPSBnb2FjY190aHJlYWQgKCk7CiAg IGFjY19kZXYgPSB0aHItPmRldjsKIAorICBib29sIHByb2ZpbGluZ19kaXNw YXRjaF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2FjY19wcm9maWxp bmdfZGlzcGF0Y2hfcCAodHJ1ZSksIGZhbHNlKTsKKworICBhY2NfcHJvZl9p bmZvIHByb2ZfaW5mbzsKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQor ICAgIHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gJnByb2ZfaW5mbzsKKwor ICAgICAgcHJvZl9pbmZvLmV2ZW50X3R5cGUgPSBhY2NfZXZfY29tcHV0ZV9j b25zdHJ1Y3Rfc3RhcnQ7CisgICAgICBwcm9mX2luZm8udmFsaWRfYnl0ZXMg PSBfQUNDX1BST0ZfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAgIHByb2ZfaW5m by52ZXJzaW9uID0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTjsKKyAgICAgIHBy b2ZfaW5mby5kZXZpY2VfdHlwZSA9IGFjY19kZXZpY2VfdHlwZSAoYWNjX2Rl di0+dHlwZSk7CisgICAgICBwcm9mX2luZm8uZGV2aWNlX251bWJlciA9IGFj Y19kZXYtPnRhcmdldF9pZDsKKyAgICAgIHByb2ZfaW5mby50aHJlYWRfaWQg PSAtMTsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uYXN5bmMgPSBhc3luYzsK KyAgICAgIC8qIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL09wZW5BQ0Mvb3Bl bmFjYy1zcGVjL2lzc3Vlcy83MT4uICAqLworICAgICAgcHJvZl9pbmZvLmFz eW5jX3F1ZXVlID0gcHJvZl9pbmZvLmFzeW5jOworICAgICAgcHJvZl9pbmZv LnNyY19maWxlID0gTlVMTDsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uZnVu Y19uYW1lID0gTlVMTDsgLy9UT0RPCisgICAgICBwcm9mX2luZm8ubGluZV9u byA9IC0xOyAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby5lbmRfbGluZV9ubyA9 IC0xOyAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby5mdW5jX2xpbmVfbm8gPSAt MTsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uZnVuY19lbmRfbGluZV9ubyA9 IC0xOyAvL1RPRE8KKyAgICB9CisgIGFjY19ldmVudF9pbmZvIGNvbXB1dGVf Y29uc3RydWN0X2V2ZW50X2luZm87CisgIGlmIChwcm9maWxpbmdfZGlzcGF0 Y2hfcCkKKyAgICB7CisgICAgICBjb21wdXRlX2NvbnN0cnVjdF9ldmVudF9p bmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUKKwk9IHByb2ZfaW5mby5ldmVu dF90eXBlOworICAgICAgY29tcHV0ZV9jb25zdHJ1Y3RfZXZlbnRfaW5mby5v dGhlcl9ldmVudC52YWxpZF9ieXRlcworCT0gX0FDQ19PVEhFUl9FVkVOVF9J TkZPX1ZBTElEX0JZVEVTOworICAgICAgY29tcHV0ZV9jb25zdHJ1Y3RfZXZl bnRfaW5mby5vdGhlcl9ldmVudC5wYXJlbnRfY29uc3RydWN0CisJPSBhY2Nf Y29uc3RydWN0X3BhcmFsbGVsOyAvL1RPRE86IGtlcm5lbHMuLi4KKyAgICAg IGNvbXB1dGVfY29uc3RydWN0X2V2ZW50X2luZm8ub3RoZXJfZXZlbnQuaW1w bGljaXQgPSAwOworICAgICAgY29tcHV0ZV9jb25zdHJ1Y3RfZXZlbnRfaW5m by5vdGhlcl9ldmVudC50b29sX2luZm8gPSBOVUxMOworICAgIH0KKyAgYWNj X2FwaV9pbmZvIGFwaV9pbmZvOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNo X3ApCisgICAgeworICAgICAgdGhyLT5hcGlfaW5mbyA9ICZhcGlfaW5mbzsK KworICAgICAgYXBpX2luZm8uZGV2aWNlX2FwaSA9IGFjY19kZXZpY2VfYXBp X25vbmU7CisgICAgICBhcGlfaW5mby52YWxpZF9ieXRlcyA9IF9BQ0NfQVBJ X0lORk9fVkFMSURfQllURVM7CisgICAgICBhcGlfaW5mby5kZXZpY2VfdHlw ZSA9IHByb2ZfaW5mby5kZXZpY2VfdHlwZTsKKyAgICAgIGFwaV9pbmZvLnZl bmRvciA9IC0xOyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmRldmljZV9oYW5k bGUgPSBOVUxMOyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmNvbnRleHRfaGFu ZGxlID0gTlVMTDsgLy9UT0RPCisgICAgICBhcGlfaW5mby5hc3luY19oYW5k bGUgPSBOVUxMOyAvL1RPRE8KKyAgICB9CisKKyAgaWYgKHByb2ZpbGluZ19k aXNwYXRjaF9wKQorICAgIGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAoJnBy b2ZfaW5mbywgJmNvbXB1dGVfY29uc3RydWN0X2V2ZW50X2luZm8sCisJCQkg ICAgICAmYXBpX2luZm8pOworCiAgIGhhbmRsZV9mdG5fcG9pbnRlcnMgKG1h cG51bSwgaG9zdGFkZHJzLCBzaXplcywga2luZHMpOwogCiAgIC8qIEhvc3Qg ZmFsbGJhY2sgaWYgImlmIiBjbGF1c2UgaXMgZmFsc2Ugb3IgaWYgdGhlIGN1 cnJlbnQgZGV2aWNlIGlzIHNldCB0bwogICAgICB0aGUgaG9zdC4gICovCiAg IGlmIChmbGFncyAmIEdPQUNDX0ZMQUdfSE9TVF9GQUxMQkFDSykKICAgICB7 CisgICAgICAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby5kZXZpY2VfdHlwZSA9 IGFjY19kZXZpY2VfaG9zdDsKKyAgICAgIGFwaV9pbmZvLmRldmljZV90eXBl ID0gcHJvZl9pbmZvLmRldmljZV90eXBlOwogICAgICAgZ29hY2Nfc2F2ZV9h bmRfc2V0X2JpbmQgKGFjY19kZXZpY2VfaG9zdCk7CiAgICAgICBnb2FjY19j YWxsX2hvc3RfZm4gKGZuLCBtYXBudW0sIGhvc3RhZGRycywgcGFyYW1zKTsK ICAgICAgIGdvYWNjX3Jlc3RvcmVfYmluZCAoKTsKLSAgICAgIHJldHVybjsK KyAgICAgIGdvdG8gb3V0OwogICAgIH0KICAgZWxzZSBpZiAoYWNjX2Rldmlj ZV90eXBlIChhY2NfZGV2LT50eXBlKSA9PSBhY2NfZGV2aWNlX2hvc3QpCiAg ICAgewogICAgICAgZ29hY2NfY2FsbF9ob3N0X2ZuIChmbiwgbWFwbnVtLCBo b3N0YWRkcnMsIHBhcmFtcyk7Ci0gICAgICByZXR1cm47CisgICAgICBnb3Rv IG91dDsKICAgICB9CisgIGVsc2UgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9w KQorICAgIGFwaV9pbmZvLmRldmljZV9hcGkgPSBhY2NfZGV2aWNlX2FwaV9j dWRhOwogCiAgIC8qIERlZmF1bHQ6IGxldCB0aGUgcnVudGltZSBjaG9vc2Uu ICAqLwogICBmb3IgKGkgPSAwOyBpICE9IEdPTVBfRElNX01BWDsgaSsrKQpA QCAtMjUyLDYgKzMxMSwxNCBAQCBHT0FDQ19wYXJhbGxlbF9rZXllZF9pbnRl cm5hbCAoaW50IGZsYWdzX20sIGludCBwYXJhbXMsIHZvaWQgKCpmbikgKHZv aWQgKiksCiAKIAkgICAgaWYgKGFzeW5jID09IEdPTVBfTEFVTkNIX09QX01B WCkKIAkgICAgICBhc3luYyA9IHZhX2FyZyAoKmFwLCB1bnNpZ25lZCk7CisK KwkgICAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorCSAgICAgIHsKKwkJ cHJvZl9pbmZvLmFzeW5jID0gYXN5bmM7CisJCS8qIFNlZSA8aHR0cHM6Ly9n aXRodWIuY29tL09wZW5BQ0Mvb3BlbmFjYy1zcGVjL2lzc3Vlcy83MT4uICAq LworCQlwcm9mX2luZm8uYXN5bmNfcXVldWUgPSBwcm9mX2luZm8uYXN5bmM7 CisJICAgICAgfQorCiAJICAgIGJyZWFrOwogCSAgfQogCkBAIC0yODQsMTAg KzM1MSwzNCBAQCBHT0FDQ19wYXJhbGxlbF9rZXllZF9pbnRlcm5hbCAoaW50 IGZsYWdzX20sIGludCBwYXJhbXMsIHZvaWQgKCpmbikgKHZvaWQgKiksCiAg IGVsc2UKICAgICB0Z3RfZm4gPSAodm9pZCAoKikpIGZuOwogCisgIGFjY19l dmVudF9pbmZvIGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvOworICBpZiAo cHJvZmlsaW5nX2Rpc3BhdGNoX3ApCisgICAgeworICAgICAgcHJvZl9pbmZv LmV2ZW50X3R5cGUgPSBhY2NfZXZfZW50ZXJfZGF0YV9zdGFydDsKKyAgICAg IGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50 X3R5cGUKKwk9IHByb2ZfaW5mby5ldmVudF90eXBlOworICAgICAgZW50ZXJf ZXhpdF9kYXRhX2V2ZW50X2luZm8ub3RoZXJfZXZlbnQudmFsaWRfYnl0ZXMK Kwk9IF9BQ0NfT1RIRVJfRVZFTlRfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAg IGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LnBhcmVu dF9jb25zdHJ1Y3QKKwk9IGNvbXB1dGVfY29uc3RydWN0X2V2ZW50X2luZm8u b3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVjdDsKKyAgICAgIGVudGVyX2V4 aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LmltcGxpY2l0ID0gMTsK KyAgICAgIGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50 LnRvb2xfaW5mbyA9IE5VTEw7CisgICAgICBnb2FjY19wcm9maWxpbmdfZGlz cGF0Y2ggKCZwcm9mX2luZm8sICZlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5m bywKKwkJCQkmYXBpX2luZm8pOworICAgIH0KKwogICBnb2FjY19hcSBhcSA9 IGdldF9nb2FjY19hc3luY3F1ZXVlIChhc3luYyk7CiAKICAgdGd0ID0gZ29t cF9tYXBfdmFyc19hc3luYyAoYWNjX2RldiwgYXEsIG1hcG51bSwgaG9zdGFk ZHJzLCBOVUxMLCBzaXplcywga2luZHMsCiAJCQkgICAgIHRydWUsIEdPTVBf TUFQX1ZBUlNfT1BFTkFDQyk7CisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hf cCkKKyAgICB7CisgICAgICBwcm9mX2luZm8uZXZlbnRfdHlwZSA9IGFjY19l dl9lbnRlcl9kYXRhX2VuZDsKKyAgICAgIGVudGVyX2V4aXRfZGF0YV9ldmVu dF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUKKwk9IHByb2ZfaW5mby5l dmVudF90eXBlOworICAgICAgZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoICgm cHJvZl9pbmZvLCAmZW50ZXJfZXhpdF9kYXRhX2V2ZW50X2luZm8sCisJCQkJ JmFwaV9pbmZvKTsKKyAgICB9CiAKICNpZmRlZiBSQ19DSEVDS0lORwogICBn b21wX211dGV4X2xvY2sgKCZhY2NfZGV2LT5sb2NrKTsKQEAgLTMxMCw4ICs0 MDEsMjUgQEAgR09BQ0NfcGFyYWxsZWxfa2V5ZWRfaW50ZXJuYWwgKGludCBm bGFnc19tLCBpbnQgcGFyYW1zLCB2b2lkICgqZm4pICh2b2lkICopLAogICAg ICAgZWxzZQogCWFjY19kZXYtPm9wZW5hY2MuZXhlY19mdW5jICh0Z3RfZm4s IG1hcG51bSwgaG9zdGFkZHJzLCBkZXZhZGRycywKIAkJCQkgICAgZGltcywg dGd0KTsKKyAgICAgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkKKwl7CisJ ICBwcm9mX2luZm8uZXZlbnRfdHlwZSA9IGFjY19ldl9leGl0X2RhdGFfc3Rh cnQ7CisJICBlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5mby5vdGhlcl9ldmVu dC5ldmVudF90eXBlCisJICAgID0gcHJvZl9pbmZvLmV2ZW50X3R5cGU7CisJ ICBlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5mby5vdGhlcl9ldmVudC50b29s X2luZm8gPSBOVUxMOworCSAgZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoICgm cHJvZl9pbmZvLCAmZW50ZXJfZXhpdF9kYXRhX2V2ZW50X2luZm8sCisJCQkJ ICAgICZhcGlfaW5mbyk7CisJfQogICAgICAgLyogSWYgcnVubmluZyBzeW5j aHJvbm91c2x5LCB1bm1hcCBpbW1lZGlhdGVseS4gICovCiAgICAgICBnb21w X3VubWFwX3ZhcnMgKHRndCwgdHJ1ZSk7CisgICAgICBpZiAocHJvZmlsaW5n X2Rpc3BhdGNoX3ApCisJeworCSAgcHJvZl9pbmZvLmV2ZW50X3R5cGUgPSBh Y2NfZXZfZXhpdF9kYXRhX2VuZDsKKwkgIGVudGVyX2V4aXRfZGF0YV9ldmVu dF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUKKwkgICAgPSBwcm9mX2lu Zm8uZXZlbnRfdHlwZTsKKwkgIGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAo JnByb2ZfaW5mbywgJmVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLAorCQkJ CSAgICAmYXBpX2luZm8pOworCX0KICAgICB9CiAgIGVsc2UKICAgICB7CkBA IC0zMjksNiArNDM3LDE5IEBAIEdPQUNDX3BhcmFsbGVsX2tleWVkX2ludGVy bmFsIChpbnQgZmxhZ3NfbSwgaW50IHBhcmFtcywgdm9pZCAoKmZuKSAodm9p ZCAqKSwKICAgZ29tcF9yY19jaGVjayAoYWNjX2RldiwgdGhyLT5tYXBwZWRf ZGF0YSk7CiAgIGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7 CiAjZW5kaWYKKworb3V0OgorICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3Ap CisgICAgeworICAgICAgcHJvZl9pbmZvLmV2ZW50X3R5cGUgPSBhY2NfZXZf Y29tcHV0ZV9jb25zdHJ1Y3RfZW5kOworICAgICAgY29tcHV0ZV9jb25zdHJ1 Y3RfZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBlCisJPSBwcm9m X2luZm8uZXZlbnRfdHlwZTsKKyAgICAgIGdvYWNjX3Byb2ZpbGluZ19kaXNw YXRjaCAoJnByb2ZfaW5mbywgJmNvbXB1dGVfY29uc3RydWN0X2V2ZW50X2lu Zm8sCisJCQkJJmFwaV9pbmZvKTsKKworICAgICAgdGhyLT5wcm9mX2luZm8g PSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAgfQog fQogCiB2b2lkCkBAIC0zOTAsNiArNTExLDcyIEBAIEdPQUNDX2RhdGFfc3Rh cnQgKGludCBmbGFnc19tLCBzaXplX3QgbWFwbnVtLAogICBzdHJ1Y3QgZ29h Y2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CiAgIHN0cnVjdCBn b21wX2RldmljZV9kZXNjciAqYWNjX2RldiA9IHRoci0+ZGV2OwogCisgIGJv b2wgcHJvZmlsaW5nX2Rpc3BhdGNoX3AKKyAgICA9IF9fYnVpbHRpbl9leHBl Y3QgKGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaF9wICh0cnVlKSwgZmFsc2Up OworCisgIGFjY19wcm9mX2luZm8gcHJvZl9pbmZvOworICBpZiAocHJvZmls aW5nX2Rpc3BhdGNoX3ApCisgICAgeworICAgICAgdGhyLT5wcm9mX2luZm8g PSAmcHJvZl9pbmZvOworCisgICAgICBwcm9mX2luZm8uZXZlbnRfdHlwZSA9 IGFjY19ldl9lbnRlcl9kYXRhX3N0YXJ0OworICAgICAgcHJvZl9pbmZvLnZh bGlkX2J5dGVzID0gX0FDQ19QUk9GX0lORk9fVkFMSURfQllURVM7CisgICAg ICBwcm9mX2luZm8udmVyc2lvbiA9IF9BQ0NfUFJPRl9JTkZPX1ZFUlNJT047 CisgICAgICBwcm9mX2luZm8uZGV2aWNlX3R5cGUgPSBhY2NfZGV2aWNlX3R5 cGUgKGFjY19kZXYtPnR5cGUpOworICAgICAgcHJvZl9pbmZvLmRldmljZV9u dW1iZXIgPSBhY2NfZGV2LT50YXJnZXRfaWQ7CisgICAgICBwcm9mX2luZm8u dGhyZWFkX2lkID0gLTE7IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmFzeW5j ID0gYWNjX2FzeW5jX3N5bmM7IC8qIEFsd2F5cyBzeW5jaHJvbm91cy4gICov CisgICAgICAvKiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUNDL29w ZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+LiAgKi8KKyAgICAgIHByb2ZfaW5mby5h c3luY19xdWV1ZSA9IHByb2ZfaW5mby5hc3luYzsKKyAgICAgIHByb2ZfaW5m by5zcmNfZmlsZSA9IE5VTEw7IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmZ1 bmNfbmFtZSA9IE5VTEw7IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmxpbmVf bm8gPSAtMTsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uZW5kX2xpbmVfbm8g PSAtMTsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uZnVuY19saW5lX25vID0g LTE7IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmZ1bmNfZW5kX2xpbmVfbm8g PSAtMTsgLy9UT0RPCisgICAgfQorICBhY2NfZXZlbnRfaW5mbyBlbnRlcl9k YXRhX2V2ZW50X2luZm87CisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkK KyAgICB7CisgICAgICBlbnRlcl9kYXRhX2V2ZW50X2luZm8ub3RoZXJfZXZl bnQuZXZlbnRfdHlwZQorCT0gcHJvZl9pbmZvLmV2ZW50X3R5cGU7CisgICAg ICBlbnRlcl9kYXRhX2V2ZW50X2luZm8ub3RoZXJfZXZlbnQudmFsaWRfYnl0 ZXMKKwk9IF9BQ0NfT1RIRVJfRVZFTlRfSU5GT19WQUxJRF9CWVRFUzsKKyAg ICAgIGVudGVyX2RhdGFfZXZlbnRfaW5mby5vdGhlcl9ldmVudC5wYXJlbnRf Y29uc3RydWN0ID0gYWNjX2NvbnN0cnVjdF9kYXRhOworICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBtYXBudW07ICsraSkKKwlpZiAoa2luZHNbaV0gPT0g R09NUF9NQVBfVVNFX0RFVklDRV9QVFIpCisJICB7CisJICAgIC8qIElmIHRo ZXJlIGlzIG9uZSBzdWNoIGRhdGEgbWFwcGluZyBraW5kLCB0aGVuIHRoaXMg aXMgYWN0dWFsbHkgYW4KKwkgICAgICAgT3BlbkFDQyBob3N0X2RhdGEgY29u c3RydWN0LiAgKEdDQyBtYXBzIHRoZSBPcGVuQUNDIGhvc3RfZGF0YQorCSAg ICAgICBjb25zdHJ1Y3QgdG8gdGhlIE9wZW5BQ0MgZGF0YSBjb25zdHJ1Y3Qu KSAgQXBhcnQgZnJvbSBhcnRpZmljaWFsCisJICAgICAgIHRlc3QgY2FzZXMg KHN1Y2ggYXMgYW4gT3BlbkFDQyBob3N0X2RhdGEgY29uc3RydWN0J3MgKGlt cGxpY2l0KQorCSAgICAgICBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiB0 aGVyZSBoYXNuJ3QgYmVlbiBhbnkgZGV2aWNlIGRhdGEgYmUKKwkgICAgICAg c2V0IHVwIGJlZm9yZS4uLiksIHRoZXJlIGNhbid0IHJlYWxseSBhbnkgbWVh bmluZ2Z1bCBldmVudHMgYmUKKwkgICAgICAgZ2VuZXJhdGVkIGZyb20gT3Bl bkFDQyBob3N0X2RhdGEgY29uc3RydWN0cywgdGhvdWdoLiAgKi8KKwkgICAg ZW50ZXJfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LnBhcmVudF9jb25z dHJ1Y3QKKwkgICAgICA9IGFjY19jb25zdHJ1Y3RfaG9zdF9kYXRhOworCSAg ICBicmVhazsKKwkgIH0KKyAgICAgIGVudGVyX2RhdGFfZXZlbnRfaW5mby5v dGhlcl9ldmVudC5pbXBsaWNpdCA9IDA7CisgICAgICBlbnRlcl9kYXRhX2V2 ZW50X2luZm8ub3RoZXJfZXZlbnQudG9vbF9pbmZvID0gTlVMTDsKKyAgICB9 CisgIGFjY19hcGlfaW5mbyBhcGlfaW5mbzsKKyAgaWYgKHByb2ZpbGluZ19k aXNwYXRjaF9wKQorICAgIHsKKyAgICAgIHRoci0+YXBpX2luZm8gPSAmYXBp X2luZm87CisKKyAgICAgIGFwaV9pbmZvLmRldmljZV9hcGkgPSBhY2NfZGV2 aWNlX2FwaV9ub25lOworICAgICAgYXBpX2luZm8udmFsaWRfYnl0ZXMgPSBf QUNDX0FQSV9JTkZPX1ZBTElEX0JZVEVTOworICAgICAgYXBpX2luZm8uZGV2 aWNlX3R5cGUgPSBwcm9mX2luZm8uZGV2aWNlX3R5cGU7CisgICAgICBhcGlf aW5mby52ZW5kb3IgPSAtMTsgLy9UT0RPCisgICAgICBhcGlfaW5mby5kZXZp Y2VfaGFuZGxlID0gTlVMTDsgLy9UT0RPCisgICAgICBhcGlfaW5mby5jb250 ZXh0X2hhbmRsZSA9IE5VTEw7IC8vVE9ETworICAgICAgYXBpX2luZm8uYXN5 bmNfaGFuZGxlID0gTlVMTDsgLy9UT0RPCisgICAgfQorCisgIGlmIChwcm9m aWxpbmdfZGlzcGF0Y2hfcCkKKyAgICBnb2FjY19wcm9maWxpbmdfZGlzcGF0 Y2ggKCZwcm9mX2luZm8sICZlbnRlcl9kYXRhX2V2ZW50X2luZm8sICZhcGlf aW5mbyk7CisKICAgaGFuZGxlX2Z0bl9wb2ludGVycyAobWFwbnVtLCBob3N0 YWRkcnMsIHNpemVzLCBraW5kcyk7CiAKICAgZW51bSBnb21wX21hcF92YXJz X2tpbmQgcHJhZ21hX2tpbmQ7CkBAIC00MDIsMTEgKzU4OSwxNCBAQCBHT0FD Q19kYXRhX3N0YXJ0IChpbnQgZmxhZ3NfbSwgc2l6ZV90IG1hcG51bSwKICAg aWYgKChhY2NfZGV2LT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQ X1NIQVJFRF9NRU0pCiAgICAgICB8fCAoZmxhZ3MgJiBHT0FDQ19GTEFHX0hP U1RfRkFMTEJBQ0spKQogICAgIHsKKyAgICAgIC8vVE9ETworICAgICAgcHJv Zl9pbmZvLmRldmljZV90eXBlID0gYWNjX2RldmljZV9ob3N0OworICAgICAg YXBpX2luZm8uZGV2aWNlX3R5cGUgPSBwcm9mX2luZm8uZGV2aWNlX3R5cGU7 CiAgICAgICB0Z3QgPSBnb21wX21hcF92YXJzIChOVUxMLCAwLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCB0cnVlLCBwcmFnbWFfa2luZCk7CiAgICAgICB0 Z3QtPnByZXYgPSB0aHItPm1hcHBlZF9kYXRhOwogICAgICAgdGhyLT5tYXBw ZWRfZGF0YSA9IHRndDsKIAotICAgICAgcmV0dXJuOworICAgICAgZ290byBv dXQ7CiAgICAgfQogCiAgIGdvbXBfZGVidWcgKDAsICIgICVzOiBwcmVwYXJl IG1hcHBpbmdzXG4iLCBfX0ZVTkNUSU9OX18pOwpAQCAtNDIxLDE0ICs2MTEs NzggQEAgR09BQ0NfZGF0YV9zdGFydCAoaW50IGZsYWdzX20sIHNpemVfdCBt YXBudW0sCiAgIGdvbXBfcmNfY2hlY2sgKGFjY19kZXYsIHRoci0+bWFwcGVk X2RhdGEpOwogICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2sp OwogI2VuZGlmCisKK291dDoKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9w KQorICAgIHsKKyAgICAgIHByb2ZfaW5mby5ldmVudF90eXBlID0gYWNjX2V2 X2VudGVyX2RhdGFfZW5kOworICAgICAgZW50ZXJfZGF0YV9ldmVudF9pbmZv Lm90aGVyX2V2ZW50LmV2ZW50X3R5cGUgPSBwcm9mX2luZm8uZXZlbnRfdHlw ZTsKKyAgICAgIGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAoJnByb2ZfaW5m bywgJmVudGVyX2RhdGFfZXZlbnRfaW5mbywgJmFwaV9pbmZvKTsKKworICAg ICAgdGhyLT5wcm9mX2luZm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5m byA9IE5VTEw7CisgICAgfQogfQogCiB2b2lkCiBHT0FDQ19kYXRhX2VuZCAo dm9pZCkKIHsKICAgc3RydWN0IGdvYWNjX3RocmVhZCAqdGhyID0gZ29hY2Nf dGhyZWFkICgpOworICBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmFjY19k ZXYgPSB0aHItPmRldjsKICAgc3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0 ID0gdGhyLT5tYXBwZWRfZGF0YTsKIAorICBib29sIHByb2ZpbGluZ19kaXNw YXRjaF9wCisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2FjY19wcm9maWxp bmdfZGlzcGF0Y2hfcCAodHJ1ZSksIGZhbHNlKTsKKworICBhY2NfcHJvZl9p bmZvIHByb2ZfaW5mbzsKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQor ICAgIHsKKyAgICAgIHRoci0+cHJvZl9pbmZvID0gJnByb2ZfaW5mbzsKKwor ICAgICAgcHJvZl9pbmZvLmV2ZW50X3R5cGUgPSBhY2NfZXZfZXhpdF9kYXRh X3N0YXJ0OworICAgICAgcHJvZl9pbmZvLnZhbGlkX2J5dGVzID0gX0FDQ19Q Uk9GX0lORk9fVkFMSURfQllURVM7CisgICAgICBwcm9mX2luZm8udmVyc2lv biA9IF9BQ0NfUFJPRl9JTkZPX1ZFUlNJT047CisgICAgICBwcm9mX2luZm8u ZGV2aWNlX3R5cGUgPSBhY2NfZGV2aWNlX3R5cGUgKGFjY19kZXYtPnR5cGUp OworICAgICAgcHJvZl9pbmZvLmRldmljZV9udW1iZXIgPSBhY2NfZGV2LT50 YXJnZXRfaWQ7CisgICAgICBwcm9mX2luZm8udGhyZWFkX2lkID0gLTE7IC8v VE9ETworICAgICAgcHJvZl9pbmZvLmFzeW5jID0gYWNjX2FzeW5jX3N5bmM7 IC8qIEFsd2F5cyBzeW5jaHJvbm91cy4gICovCisgICAgICAvKiBTZWUgPGh0 dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMv NzE+LiAgKi8KKyAgICAgIHByb2ZfaW5mby5hc3luY19xdWV1ZSA9IHByb2Zf aW5mby5hc3luYzsKKyAgICAgIHByb2ZfaW5mby5zcmNfZmlsZSA9IE5VTEw7 IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmZ1bmNfbmFtZSA9IE5VTEw7IC8v VE9ETworICAgICAgcHJvZl9pbmZvLmxpbmVfbm8gPSAtMTsgLy9UT0RPCisg ICAgICBwcm9mX2luZm8uZW5kX2xpbmVfbm8gPSAtMTsgLy9UT0RPCisgICAg ICBwcm9mX2luZm8uZnVuY19saW5lX25vID0gLTE7IC8vVE9ETworICAgICAg cHJvZl9pbmZvLmZ1bmNfZW5kX2xpbmVfbm8gPSAtMTsgLy9UT0RPCisgICAg fQorICBhY2NfZXZlbnRfaW5mbyBleGl0X2RhdGFfZXZlbnRfaW5mbzsKKyAg aWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAgIGV4aXRf ZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUKKwk9IHBy b2ZfaW5mby5ldmVudF90eXBlOworICAgICAgZXhpdF9kYXRhX2V2ZW50X2lu Zm8ub3RoZXJfZXZlbnQudmFsaWRfYnl0ZXMKKwk9IF9BQ0NfT1RIRVJfRVZF TlRfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAgIGV4aXRfZGF0YV9ldmVudF9p bmZvLm90aGVyX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPSBhY2NfY29uc3Ry dWN0X2RhdGE7CisgICAgICBleGl0X2RhdGFfZXZlbnRfaW5mby5vdGhlcl9l dmVudC5pbXBsaWNpdCA9IDA7CisgICAgICBleGl0X2RhdGFfZXZlbnRfaW5m by5vdGhlcl9ldmVudC50b29sX2luZm8gPSBOVUxMOworICAgIH0KKyAgYWNj X2FwaV9pbmZvIGFwaV9pbmZvOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNo X3ApCisgICAgeworICAgICAgdGhyLT5hcGlfaW5mbyA9ICZhcGlfaW5mbzsK KworICAgICAgYXBpX2luZm8uZGV2aWNlX2FwaSA9IGFjY19kZXZpY2VfYXBp X25vbmU7CisgICAgICBhcGlfaW5mby52YWxpZF9ieXRlcyA9IF9BQ0NfQVBJ X0lORk9fVkFMSURfQllURVM7CisgICAgICBhcGlfaW5mby5kZXZpY2VfdHlw ZSA9IHByb2ZfaW5mby5kZXZpY2VfdHlwZTsKKyAgICAgIGFwaV9pbmZvLnZl bmRvciA9IC0xOyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmRldmljZV9oYW5k bGUgPSBOVUxMOyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmNvbnRleHRfaGFu ZGxlID0gTlVMTDsgLy9UT0RPCisgICAgICBhcGlfaW5mby5hc3luY19oYW5k bGUgPSBOVUxMOyAvL1RPRE8KKyAgICB9CisKKyAgaWYgKHByb2ZpbGluZ19k aXNwYXRjaF9wKQorICAgIGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAoJnBy b2ZfaW5mbywgJmV4aXRfZGF0YV9ldmVudF9pbmZvLCAmYXBpX2luZm8pOwor CiAgIGdvbXBfZGVidWcgKDAsICIgICVzOiByZXN0b3JlIG1hcHBpbmdzXG4i LCBfX0ZVTkNUSU9OX18pOwogICB0aHItPm1hcHBlZF9kYXRhID0gdGd0LT5w cmV2OwogICBnb21wX3VubWFwX3ZhcnMgKHRndCwgdHJ1ZSk7CkBAIC00Mzks NiArNjkzLDE2IEBAIEdPQUNDX2RhdGFfZW5kICh2b2lkKQogICBnb21wX3Jj X2NoZWNrICh0aHItPmRldiwgdGhyLT5tYXBwZWRfZGF0YSk7CiAgIGdvbXBf bXV0ZXhfdW5sb2NrICgmdGhyLT5kZXYtPmxvY2spOwogI2VuZGlmCisKKyAg aWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAgIHByb2Zf aW5mby5ldmVudF90eXBlID0gYWNjX2V2X2V4aXRfZGF0YV9lbmQ7CisgICAg ICBleGl0X2RhdGFfZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBl ID0gcHJvZl9pbmZvLmV2ZW50X3R5cGU7CisgICAgICBnb2FjY19wcm9maWxp bmdfZGlzcGF0Y2ggKCZwcm9mX2luZm8sICZleGl0X2RhdGFfZXZlbnRfaW5m bywgJmFwaV9pbmZvKTsKKworICAgICAgdGhyLT5wcm9mX2luZm8gPSBOVUxM OworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7CisgICAgfQogfQogCiB2 b2lkCkBAIC00NTMsMjQgKzcxNyw2IEBAIEdPQUNDX2VudGVyX2V4aXRfZGF0 YSAoaW50IGZsYWdzX20sIHNpemVfdCBtYXBudW0sCiAgIGJvb2wgZGF0YV9l bnRlciA9IGZhbHNlOwogICBzaXplX3QgaTsKIAotICBnb2FjY19sYXp5X2lu aXRpYWxpemUgKCk7Ci0KLSAgdGhyID0gZ29hY2NfdGhyZWFkICgpOwotICBh Y2NfZGV2ID0gdGhyLT5kZXY7Ci0KLSAgaWYgKChhY2NfZGV2LT5jYXBhYmls aXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0pCi0gICAgICB8 fCAoZmxhZ3MgJiBHT0FDQ19GTEFHX0hPU1RfRkFMTEJBQ0spKQotICAgIHJl dHVybjsKLQotICBpZiAobnVtX3dhaXRzKQotICAgIHsKLSAgICAgIHZhX2xp c3QgYXA7Ci0KLSAgICAgIHZhX3N0YXJ0IChhcCwgbnVtX3dhaXRzKTsKLSAg ICAgIGdvYWNjX3dhaXQgKGFzeW5jLCBudW1fd2FpdHMsICZhcCk7Ci0gICAg ICB2YV9lbmQgKGFwKTsKLSAgICB9Ci0KICAgLyogRGV0ZXJtaW5lIHdoZXRo ZXIgImZpbmFsaXplIiBzZW1hbnRpY3MgYXBwbHkgdG8gYWxsIG1hcHBpbmdz IG9mIHRoaXMKICAgICAgT3BlbkFDQyBkaXJlY3RpdmUuICAqLwogICBib29s IGZpbmFsaXplID0gZmFsc2U7CkBAIC01MjEsNiArNzY3LDg2IEBAIEdPQUND X2VudGVyX2V4aXRfZGF0YSAoaW50IGZsYWdzX20sIHNpemVfdCBtYXBudW0s CiAJCSAgICAgIGtpbmQpOwogICAgIH0KIAorICBnb2FjY19sYXp5X2luaXRp YWxpemUgKCk7CisKKyAgdGhyID0gZ29hY2NfdGhyZWFkICgpOworICBhY2Nf ZGV2ID0gdGhyLT5kZXY7CisKKyAgYm9vbCBwcm9maWxpbmdfZGlzcGF0Y2hf cAorICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX2Rp c3BhdGNoX3AgKHRydWUpLCBmYWxzZSk7CisKKyAgYWNjX3Byb2ZfaW5mbyBw cm9mX2luZm87CisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkKKyAgICB7 CisgICAgICB0aHItPnByb2ZfaW5mbyA9ICZwcm9mX2luZm87CisKKyAgICAg IHByb2ZfaW5mby5ldmVudF90eXBlCisJPSBkYXRhX2VudGVyID8gYWNjX2V2 X2VudGVyX2RhdGFfc3RhcnQgOiBhY2NfZXZfZXhpdF9kYXRhX3N0YXJ0Owor ICAgICAgcHJvZl9pbmZvLnZhbGlkX2J5dGVzID0gX0FDQ19QUk9GX0lORk9f VkFMSURfQllURVM7CisgICAgICBwcm9mX2luZm8udmVyc2lvbiA9IF9BQ0Nf UFJPRl9JTkZPX1ZFUlNJT047CisgICAgICBwcm9mX2luZm8uZGV2aWNlX3R5 cGUgPSBhY2NfZGV2aWNlX3R5cGUgKGFjY19kZXYtPnR5cGUpOworICAgICAg cHJvZl9pbmZvLmRldmljZV9udW1iZXIgPSBhY2NfZGV2LT50YXJnZXRfaWQ7 CisgICAgICBwcm9mX2luZm8udGhyZWFkX2lkID0gLTE7IC8vVE9ETworICAg ICAgcHJvZl9pbmZvLmFzeW5jID0gYXN5bmM7CisgICAgICAvKiBTZWUgPGh0 dHBzOi8vZ2l0aHViLmNvbS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMv NzE+LiAgKi8KKyAgICAgIHByb2ZfaW5mby5hc3luY19xdWV1ZSA9IHByb2Zf aW5mby5hc3luYzsKKyAgICAgIHByb2ZfaW5mby5zcmNfZmlsZSA9IE5VTEw7 IC8vVE9ETworICAgICAgcHJvZl9pbmZvLmZ1bmNfbmFtZSA9IE5VTEw7IC8v VE9ETworICAgICAgcHJvZl9pbmZvLmxpbmVfbm8gPSAtMTsgLy9UT0RPCisg ICAgICBwcm9mX2luZm8uZW5kX2xpbmVfbm8gPSAtMTsgLy9UT0RPCisgICAg ICBwcm9mX2luZm8uZnVuY19saW5lX25vID0gLTE7IC8vVE9ETworICAgICAg cHJvZl9pbmZvLmZ1bmNfZW5kX2xpbmVfbm8gPSAtMTsgLy9UT0RPCisgICAg fQorICBhY2NfZXZlbnRfaW5mbyBlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5m bzsKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAg IGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50 X3R5cGUKKwk9IHByb2ZfaW5mby5ldmVudF90eXBlOworICAgICAgZW50ZXJf ZXhpdF9kYXRhX2V2ZW50X2luZm8ub3RoZXJfZXZlbnQudmFsaWRfYnl0ZXMK Kwk9IF9BQ0NfT1RIRVJfRVZFTlRfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAg IGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LnBhcmVu dF9jb25zdHJ1Y3QKKwk9IGRhdGFfZW50ZXIgPyBhY2NfY29uc3RydWN0X2Vu dGVyX2RhdGEgOiBhY2NfY29uc3RydWN0X2V4aXRfZGF0YTsKKyAgICAgIGVu dGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVyX2V2ZW50LmltcGxpY2l0 ID0gMDsKKyAgICAgIGVudGVyX2V4aXRfZGF0YV9ldmVudF9pbmZvLm90aGVy X2V2ZW50LnRvb2xfaW5mbyA9IE5VTEw7CisgICAgfQorICBhY2NfYXBpX2lu Zm8gYXBpX2luZm87CisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkKKyAg ICB7CisgICAgICB0aHItPmFwaV9pbmZvID0gJmFwaV9pbmZvOworCisgICAg ICBhcGlfaW5mby5kZXZpY2VfYXBpID0gYWNjX2RldmljZV9hcGlfbm9uZTsK KyAgICAgIGFwaV9pbmZvLnZhbGlkX2J5dGVzID0gX0FDQ19BUElfSU5GT19W QUxJRF9CWVRFUzsKKyAgICAgIGFwaV9pbmZvLmRldmljZV90eXBlID0gcHJv Zl9pbmZvLmRldmljZV90eXBlOworICAgICAgYXBpX2luZm8udmVuZG9yID0g LTE7IC8vVE9ETworICAgICAgYXBpX2luZm8uZGV2aWNlX2hhbmRsZSA9IE5V TEw7IC8vVE9ETworICAgICAgYXBpX2luZm8uY29udGV4dF9oYW5kbGUgPSBO VUxMOyAvL1RPRE8KKyAgICAgIGFwaV9pbmZvLmFzeW5jX2hhbmRsZSA9IE5V TEw7IC8vVE9ETworICAgIH0KKworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNo X3ApCisgICAgZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoICgmcHJvZl9pbmZv LCAmZW50ZXJfZXhpdF9kYXRhX2V2ZW50X2luZm8sCisJCQkgICAgICAmYXBp X2luZm8pOworCisgIGlmICgoYWNjX2Rldi0+Y2FwYWJpbGl0aWVzICYgR09N UF9PRkZMT0FEX0NBUF9TSEFSRURfTUVNKQorICAgICAgfHwgKGZsYWdzICYg R09BQ0NfRkxBR19IT1NUX0ZBTExCQUNLKSkKKyAgICB7CisgICAgICAvL1RP RE8KKyAgICAgIHByb2ZfaW5mby5kZXZpY2VfdHlwZSA9IGFjY19kZXZpY2Vf aG9zdDsKKyAgICAgIGFwaV9pbmZvLmRldmljZV90eXBlID0gcHJvZl9pbmZv LmRldmljZV90eXBlOworICAgICAgZ290byBvdXQ7CisgICAgfQorCisgIGlm IChudW1fd2FpdHMgPiAwKQorICAgIHsKKyAgICAgIHZhX2xpc3QgYXA7CisK KyAgICAgIHZhX3N0YXJ0IChhcCwgbnVtX3dhaXRzKTsKKyAgICAgIGdvYWNj X3dhaXQgKGFzeW5jLCBudW1fd2FpdHMsICZhcCk7CisgICAgICB2YV9lbmQg KGFwKTsKKyAgICB9CisgIGVsc2UgaWYgKG51bV93YWl0cyA9PSBhY2NfYXN5 bmNfbm92YWwpCisgICAgYWNjX3dhaXRfYWxsX2FzeW5jIChhc3luYyk7CisK ICAgLyogSW4gYywgbm9uLXBvaW50ZXJzIGFuZCBhcnJheXMgYXJlIHJlcHJl c2VudGVkIGJ5IGEgc2luZ2xlIGRhdGEgY2xhdXNlLgogICAgICBEeW5hbWlj YWxseSBhbGxvY2F0ZWQgYXJyYXlzIGFuZCBzdWJhcnJheXMgYXJlIHJlcHJl c2VudGVkIGJ5IGEgZGF0YQogICAgICBjbGF1c2UgZm9sbG93ZWQgYnkgYW4g aW50ZXJuYWwgR09NUF9NQVBfUE9JTlRFUi4KQEAgLTczOSw2ICsxMDY1LDE4 IEBAIEdPQUNDX2VudGVyX2V4aXRfZGF0YSAoaW50IGZsYWdzX20sIHNpemVf dCBtYXBudW0sCiAgIGdvbXBfcmNfY2hlY2sgKGFjY19kZXYsIHRoci0+bWFw cGVkX2RhdGEpOwogICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxv Y2spOwogI2VuZGlmCisKK291dDoKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRj aF9wKQorICAgIHsKKyAgICAgIHByb2ZfaW5mby5ldmVudF90eXBlID0gZGF0 YV9lbnRlciA/IGFjY19ldl9lbnRlcl9kYXRhX2VuZDogYWNjX2V2X2V4aXRf ZGF0YV9lbmQ7CisgICAgICBlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5mby5v dGhlcl9ldmVudC5ldmVudF90eXBlID0gcHJvZl9pbmZvLmV2ZW50X3R5cGU7 CisgICAgICBnb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKCZwcm9mX2luZm8s ICZlbnRlcl9leGl0X2RhdGFfZXZlbnRfaW5mbywKKwkJCQkmYXBpX2luZm8p OworCisgICAgICB0aHItPnByb2ZfaW5mbyA9IE5VTEw7CisgICAgICB0aHIt PmFwaV9pbmZvID0gTlVMTDsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBA IC03ODcsOSArMTEyNSw2NiBAQCBHT0FDQ191cGRhdGUgKGludCBmbGFnc19t LCBzaXplX3QgbWFwbnVtLAogICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIg PSBnb2FjY190aHJlYWQgKCk7CiAgIHN0cnVjdCBnb21wX2RldmljZV9kZXNj ciAqYWNjX2RldiA9IHRoci0+ZGV2OwogCisgIGJvb2wgcHJvZmlsaW5nX2Rp c3BhdGNoX3AKKyAgICA9IF9fYnVpbHRpbl9leHBlY3QgKGdvYWNjX3Byb2Zp bGluZ19kaXNwYXRjaF9wICh0cnVlKSwgZmFsc2UpOworCisgIGFjY19wcm9m X2luZm8gcHJvZl9pbmZvOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3Ap CisgICAgeworICAgICAgdGhyLT5wcm9mX2luZm8gPSAmcHJvZl9pbmZvOwor CisgICAgICBwcm9mX2luZm8uZXZlbnRfdHlwZSA9IGFjY19ldl91cGRhdGVf c3RhcnQ7CisgICAgICBwcm9mX2luZm8udmFsaWRfYnl0ZXMgPSBfQUNDX1BS T0ZfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAgIHByb2ZfaW5mby52ZXJzaW9u ID0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTjsKKyAgICAgIHByb2ZfaW5mby5k ZXZpY2VfdHlwZSA9IGFjY19kZXZpY2VfdHlwZSAoYWNjX2Rldi0+dHlwZSk7 CisgICAgICBwcm9mX2luZm8uZGV2aWNlX251bWJlciA9IGFjY19kZXYtPnRh cmdldF9pZDsKKyAgICAgIHByb2ZfaW5mby50aHJlYWRfaWQgPSAtMTsgLy9U T0RPCisgICAgICBwcm9mX2luZm8uYXN5bmMgPSBhc3luYzsKKyAgICAgIC8q IFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL09wZW5BQ0Mvb3BlbmFjYy1zcGVj L2lzc3Vlcy83MT4uICAqLworICAgICAgcHJvZl9pbmZvLmFzeW5jX3F1ZXVl ID0gcHJvZl9pbmZvLmFzeW5jOworICAgICAgcHJvZl9pbmZvLnNyY19maWxl ID0gTlVMTDsgLy9UT0RPCisgICAgICBwcm9mX2luZm8uZnVuY19uYW1lID0g TlVMTDsgLy9UT0RPCisgICAgICBwcm9mX2luZm8ubGluZV9ubyA9IC0xOyAv L1RPRE8KKyAgICAgIHByb2ZfaW5mby5lbmRfbGluZV9ubyA9IC0xOyAvL1RP RE8KKyAgICAgIHByb2ZfaW5mby5mdW5jX2xpbmVfbm8gPSAtMTsgLy9UT0RP CisgICAgICBwcm9mX2luZm8uZnVuY19lbmRfbGluZV9ubyA9IC0xOyAvL1RP RE8KKyAgICB9CisgIGFjY19ldmVudF9pbmZvIHVwZGF0ZV9ldmVudF9pbmZv OworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3ApCisgICAgeworICAgICAg dXBkYXRlX2V2ZW50X2luZm8ub3RoZXJfZXZlbnQuZXZlbnRfdHlwZQorCT0g cHJvZl9pbmZvLmV2ZW50X3R5cGU7CisgICAgICB1cGRhdGVfZXZlbnRfaW5m by5vdGhlcl9ldmVudC52YWxpZF9ieXRlcworCT0gX0FDQ19PVEhFUl9FVkVO VF9JTkZPX1ZBTElEX0JZVEVTOworICAgICAgdXBkYXRlX2V2ZW50X2luZm8u b3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVjdCA9IGFjY19jb25zdHJ1Y3Rf dXBkYXRlOworICAgICAgdXBkYXRlX2V2ZW50X2luZm8ub3RoZXJfZXZlbnQu aW1wbGljaXQgPSAwOworICAgICAgdXBkYXRlX2V2ZW50X2luZm8ub3RoZXJf ZXZlbnQudG9vbF9pbmZvID0gTlVMTDsKKyAgICB9CisgIGFjY19hcGlfaW5m byBhcGlfaW5mbzsKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAg IHsKKyAgICAgIHRoci0+YXBpX2luZm8gPSAmYXBpX2luZm87CisKKyAgICAg IGFwaV9pbmZvLmRldmljZV9hcGkgPSBhY2NfZGV2aWNlX2FwaV9ub25lOwor ICAgICAgYXBpX2luZm8udmFsaWRfYnl0ZXMgPSBfQUNDX0FQSV9JTkZPX1ZB TElEX0JZVEVTOworICAgICAgYXBpX2luZm8uZGV2aWNlX3R5cGUgPSBwcm9m X2luZm8uZGV2aWNlX3R5cGU7CisgICAgICBhcGlfaW5mby52ZW5kb3IgPSAt MTsgLy9UT0RPCisgICAgICBhcGlfaW5mby5kZXZpY2VfaGFuZGxlID0gTlVM TDsgLy9UT0RPCisgICAgICBhcGlfaW5mby5jb250ZXh0X2hhbmRsZSA9IE5V TEw7IC8vVE9ETworICAgICAgYXBpX2luZm8uYXN5bmNfaGFuZGxlID0gTlVM TDsgLy9UT0RPCisgICAgfQorCisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hf cCkKKyAgICBnb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKCZwcm9mX2luZm8s ICZ1cGRhdGVfZXZlbnRfaW5mbywgJmFwaV9pbmZvKTsKKwogICBpZiAoKGFj Y19kZXYtPmNhcGFiaWxpdGllcyAmIEdPTVBfT0ZGTE9BRF9DQVBfU0hBUkVE X01FTSkKICAgICAgIHx8IChmbGFncyAmIEdPQUNDX0ZMQUdfSE9TVF9GQUxM QkFDSykpCi0gICAgcmV0dXJuOworICAgIHsKKyAgICAgIC8vVE9ETworICAg ICAgcHJvZl9pbmZvLmRldmljZV90eXBlID0gYWNjX2RldmljZV9ob3N0Owor ICAgICAgYXBpX2luZm8uZGV2aWNlX3R5cGUgPSBwcm9mX2luZm8uZGV2aWNl X3R5cGU7CisgICAgICBnb3RvIG91dDsKKyAgICB9CiAKICAgaWYgKG51bV93 YWl0cykKICAgICB7CkBAIC04NjEsMTEgKzEyNTYsNDEgQEAgR09BQ0NfdXBk YXRlIChpbnQgZmxhZ3NfbSwgc2l6ZV90IG1hcG51bSwKIAkgIGJyZWFrOwog CX0KICAgICB9CisKK291dDoKKyAgaWYgKHByb2ZpbGluZ19kaXNwYXRjaF9w KQorICAgIHsKKyAgICAgIHByb2ZfaW5mby5ldmVudF90eXBlID0gYWNjX2V2 X3VwZGF0ZV9lbmQ7CisgICAgICB1cGRhdGVfZXZlbnRfaW5mby5vdGhlcl9l dmVudC5ldmVudF90eXBlID0gcHJvZl9pbmZvLmV2ZW50X3R5cGU7CisgICAg ICBnb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKCZwcm9mX2luZm8sICZ1cGRh dGVfZXZlbnRfaW5mbywgJmFwaV9pbmZvKTsKKworICAgICAgdGhyLT5wcm9m X2luZm8gPSBOVUxMOworICAgICAgdGhyLT5hcGlfaW5mbyA9IE5VTEw7Cisg ICAgfQogfQogCiB2b2lkCiBHT0FDQ193YWl0IChpbnQgYXN5bmMsIGludCBu dW1fd2FpdHMsIC4uLikKIHsKKyAgZ29hY2NfbGF6eV9pbml0aWFsaXplICgp OworCisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVh ZCAoKTsKKworICAvKiBObyBuZXN0aW5nLiAgKi8KKyAgYXNzZXJ0ICh0aHIt PnByb2ZfaW5mbyA9PSBOVUxMKTsKKyAgYXNzZXJ0ICh0aHItPmFwaV9pbmZv ID09IE5VTEwpOworICBhY2NfcHJvZl9pbmZvIHByb2ZfaW5mbzsKKyAgYWNj X2FwaV9pbmZvIGFwaV9pbmZvOworICBib29sIHByb2ZpbGluZ19zZXR1cF9w CisgICAgPSBfX2J1aWx0aW5fZXhwZWN0IChnb2FjY19wcm9maWxpbmdfc2V0 dXBfcCAodGhyLCAmcHJvZl9pbmZvLCAmYXBpX2luZm8pLAorCQkJZmFsc2Up OworICBpZiAocHJvZmlsaW5nX3NldHVwX3ApCisgICAgeworICAgICAgcHJv Zl9pbmZvLmFzeW5jID0gYXN5bmM7CisgICAgICAvKiBTZWUgPGh0dHBzOi8v Z2l0aHViLmNvbS9PcGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+LiAg Ki8KKyAgICAgIHByb2ZfaW5mby5hc3luY19xdWV1ZSA9IHByb2ZfaW5mby5h c3luYzsKKyAgICB9CisKICAgaWYgKG51bV93YWl0cykKICAgICB7CiAgICAg ICB2YV9saXN0IGFwOwpAQCAtODc4LDYgKzEzMDMsMTIgQEAgR09BQ0Nfd2Fp dCAoaW50IGFzeW5jLCBpbnQgbnVtX3dhaXRzLCAuLi4pCiAgICAgYWNjX3dh aXRfYWxsICgpOwogICBlbHNlCiAgICAgYWNjX3dhaXRfYWxsX2FzeW5jIChh c3luYyk7CisKKyAgaWYgKHByb2ZpbGluZ19zZXR1cF9wKQorICAgIHsKKyAg ICAgIHRoci0+cHJvZl9pbmZvID0gTlVMTDsKKyAgICAgIHRoci0+YXBpX2lu Zm8gPSBOVUxMOworICAgIH0KIH0KIAogaW50CmRpZmYgLS1naXQgYS9saWJn b21wL29hY2MtcGx1Z2luLmMgYi9saWJnb21wL29hY2MtcGx1Z2luLmMKaW5k ZXggNTQ4MGMxZC4uYTA0YWJiMCAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNj LXBsdWdpbi5jCisrKyBiL2xpYmdvbXAvb2FjYy1wbHVnaW4uYwpAQCAtNDcs NiArNDcsMTkgQEAgR09NUF9QTFVHSU5fYWNjX3RocmVhZCAodm9pZCkKICAg cmV0dXJuIHRociA/IHRoci0+dGFyZ2V0X3RscyA6IE5VTEw7CiB9CiAKKy8q IFJldHVybiB0aGUgVExTIGRhdGEgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4g ICovCisvKiBUT0RPLiAgU2hvdWxkIHdlIGJlIGFibGUgdG8gZGlyZWN0bHkg Y2FsbCAodGhlIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24pCisgICBnb2FjY190 aHJlYWQgZnJvbSB3aXRoaW4gcGx1Z2luIGNvZGU/ICBJIGRpZG4ndCBtYW5h Z2UgdG8gZ2V0IHRoZQorICAgImdvYWNjX3Rsc19kYXRhIiBzeW1ib2wgY29u ZmlndXJlZCBjb3JyZWN0bHk6ICJbLi4uXS9sZDoKKyAgIC5saWJzL2xpYmdv bXAtcGx1Z2luLW52cHR4LnNvLjEuMC4wOiBoaWRkZW4gc3ltYm9sIGBnb2Fj Y190bHNfZGF0YScgaXNuJ3QKKyAgIGRlZmluZWQiLiAgKi8KKworc3RydWN0 IGdvYWNjX3RocmVhZCAqCitHT01QX1BMVUdJTl9nb2FjY190aHJlYWQgKHZv aWQpCit7CisgIHJldHVybiBnb2FjY190aHJlYWQgKCk7Cit9CisKIGludAog R09NUF9QTFVHSU5fYWNjX2RlZmF1bHRfZGltICh1bnNpZ25lZCBpbnQgaSkK IHsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1wbHVnaW4uaCBiL2xpYmdv bXAvb2FjYy1wbHVnaW4uaAppbmRleCAxMTJkNGE1OS4uMTEyZDNjZCAxMDA2 NDQKLS0tIGEvbGliZ29tcC9vYWNjLXBsdWdpbi5oCisrKyBiL2xpYmdvbXAv b2FjYy1wbHVnaW4uaApAQCAtMjcsOCArMjcsMTEgQEAKICNpZm5kZWYgT0FD Q19QTFVHSU5fSAogI2RlZmluZSBPQUNDX1BMVUdJTl9IIDEKIAorI2luY2x1 ZGUgIm9hY2MtaW50LmgiCisKIGV4dGVybiB2b2lkIEdPTVBfUExVR0lOX2Fz eW5jX3VubWFwX3ZhcnMgKHZvaWQgKiwgaW50KTsKIGV4dGVybiB2b2lkICpH T01QX1BMVUdJTl9hY2NfdGhyZWFkICh2b2lkKTsKK2V4dGVybiBzdHJ1Y3Qg Z29hY2NfdGhyZWFkICpHT01QX1BMVUdJTl9nb2FjY190aHJlYWQgKHZvaWQp OwogZXh0ZXJuIGludCBHT01QX1BMVUdJTl9hY2NfZGVmYXVsdF9kaW0gKHVu c2lnbmVkIGludCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliZ29tcC9v YWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGlicmFyeS5jIGIvbGliZ29t cC9vYWNjLXByb2ZpbGluZy1hY2NfcmVnaXN0ZXJfbGlicmFyeS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjQ4MmIKLS0tIC9k ZXYvbnVsbAorKysgYi9saWJnb21wL29hY2MtcHJvZmlsaW5nLWFjY19yZWdp c3Rlcl9saWJyYXJ5LmMKQEAgLTAsMCArMSwzOSBAQAorLyogQ29weXJpZ2h0 IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg ICBDb250cmlidXRlZCBieSBNZW50b3IgRW1iZWRkZWQuCisKKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgT2ZmbG9hZGluZyBhbmQgTXVsdGkg UHJvY2Vzc2luZyBMaWJyYXJ5CisgICAobGliZ29tcCkuCisKKyAgIExpYmdv bXAgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBMaWJnb21wIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorICAgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICAgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKyAgIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIgU2VjdGlvbiA3 IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFRoaXMgZmls ZSBwcm92aWRlcyBhbiBzdHViIGFjY19yZWdpc3Rlcl9saWJyYXJ5IGZ1bmN0 aW9uLiAgSXQncyBpbiBhCisgICBzZXBhcmF0ZSBmaWxlIHNvIHRoYXQgdGhp cyBmdW5jdGlvbiBjYW4gZWFzaWx5IGJlIG92ZXJyaWRkZW4gd2hlbiBsaW5r aW5nCisgICBzdGF0aWNhbGx5LiAgKi8KKworI2luY2x1ZGUgImxpYmdvbXAu aCIKKyNpbmNsdWRlICJhY2NfcHJvZi5oIgorCit2b2lkCithY2NfcmVnaXN0 ZXJfbGlicmFyeSAoYWNjX3Byb2ZfcmVnIHJlZywgYWNjX3Byb2ZfcmVnIHVu cmVnLAorCQkgICAgICBhY2NfcHJvZl9sb29rdXBfZnVuYyBsb29rdXApCit7 CisgIGdvbXBfZGVidWcgKDAsICJkdW1teSAlc1xuIiwgX19GVU5DVElPTl9f KTsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1wcm9maWxpbmcuYyBi L2xpYmdvbXAvb2FjYy1wcm9maWxpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41NTQyZDZhCi0tLSAvZGV2L251bGwKKysrIGIv bGliZ29tcC9vYWNjLXByb2ZpbGluZy5jCkBAIC0wLDAgKzEsNjY2IEBACisv KiBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisKKyAgIENvbnRyaWJ1dGVkIGJ5IE1lbnRvciBFbWJlZGRlZC4K KworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5n IGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4K KworICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxh dGVyIHZlcnNpb24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgICBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorCisgICBVbmRl ciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVk IGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUg R0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMu MSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5 IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNl ZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor LyogT3BlbkFDQyBQcm9maWxpbmcgSW50ZXJmYWNlLiAgKi8KKworI2luY2x1 ZGUgImxpYmdvbXAuaCIKKyNpbmNsdWRlICJvYWNjLWludC5oIgorI2luY2x1 ZGUgImFjY19wcm9mLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaWZkZWYg SEFWRV9TVFJJTkdfSAorIyBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgor I2lmZGVmIFBMVUdJTl9TVVBQT1JUCisjIGluY2x1ZGUgPGRsZmNuLmg+Cisj ZW5kaWYKKworI2RlZmluZSBTVEFUSUNfQVNTRVJUKGV4cHIpIF9TdGF0aWNf YXNzZXJ0IChleHByLCAiISgiICNleHByICIpIikKKworLyogU3RhdGljYWxs eSBhc3NlcnQgdGhhdCB0aGUgbGF5b3V0IG9mIHRoZSBjb21tb24gZmllbGRz IGluIHRoZQorICAgImFjY19ldmVudF9pbmZvIiB2YXJpYW50cyBtYXRjaGVz LiAgKi8KKy8qIGV2ZW50X3R5cGUgKi8KK1NUQVRJQ19BU1NFUlQgKG9mZnNl dG9mIChhY2NfZXZlbnRfaW5mbywgZXZlbnRfdHlwZSkKKwkgICAgICAgPT0g b2Zmc2V0b2YgKGFjY19ldmVudF9pbmZvLCBkYXRhX2V2ZW50LmV2ZW50X3R5 cGUpKTsKK1NUQVRJQ19BU1NFUlQgKG9mZnNldG9mIChhY2NfZXZlbnRfaW5m bywgZGF0YV9ldmVudC5ldmVudF90eXBlKQorCSAgICAgICA9PSBvZmZzZXRv ZiAoYWNjX2V2ZW50X2luZm8sIGxhdW5jaF9ldmVudC5ldmVudF90eXBlKSk7 CitTVEFUSUNfQVNTRVJUIChvZmZzZXRvZiAoYWNjX2V2ZW50X2luZm8sIGRh dGFfZXZlbnQuZXZlbnRfdHlwZSkKKwkgICAgICAgPT0gb2Zmc2V0b2YgKGFj Y19ldmVudF9pbmZvLCBvdGhlcl9ldmVudC5ldmVudF90eXBlKSk7CisvKiB2 YWxpZF9ieXRlcyAqLworU1RBVElDX0FTU0VSVCAob2Zmc2V0b2YgKGFjY19l dmVudF9pbmZvLCBkYXRhX2V2ZW50LnZhbGlkX2J5dGVzKQorCSAgICAgICA9 PSBvZmZzZXRvZiAoYWNjX2V2ZW50X2luZm8sIGxhdW5jaF9ldmVudC52YWxp ZF9ieXRlcykpOworU1RBVElDX0FTU0VSVCAob2Zmc2V0b2YgKGFjY19ldmVu dF9pbmZvLCBkYXRhX2V2ZW50LnZhbGlkX2J5dGVzKQorCSAgICAgICA9PSBv ZmZzZXRvZiAoYWNjX2V2ZW50X2luZm8sIG90aGVyX2V2ZW50LnZhbGlkX2J5 dGVzKSk7CisvKiBwYXJlbnRfY29uc3RydWN0ICovCitTVEFUSUNfQVNTRVJU IChvZmZzZXRvZiAoYWNjX2V2ZW50X2luZm8sIGRhdGFfZXZlbnQucGFyZW50 X2NvbnN0cnVjdCkKKwkgICAgICAgPT0gb2Zmc2V0b2YgKGFjY19ldmVudF9p bmZvLCBsYXVuY2hfZXZlbnQucGFyZW50X2NvbnN0cnVjdCkpOworU1RBVElD X0FTU0VSVCAob2Zmc2V0b2YgKGFjY19ldmVudF9pbmZvLCBkYXRhX2V2ZW50 LnBhcmVudF9jb25zdHJ1Y3QpCisJICAgICAgID09IG9mZnNldG9mIChhY2Nf ZXZlbnRfaW5mbywgb3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVjdCkpOwor LyogaW1wbGljaXQgKi8KK1NUQVRJQ19BU1NFUlQgKG9mZnNldG9mIChhY2Nf ZXZlbnRfaW5mbywgZGF0YV9ldmVudC5pbXBsaWNpdCkKKwkgICAgICAgPT0g b2Zmc2V0b2YgKGFjY19ldmVudF9pbmZvLCBsYXVuY2hfZXZlbnQuaW1wbGlj aXQpKTsKK1NUQVRJQ19BU1NFUlQgKG9mZnNldG9mIChhY2NfZXZlbnRfaW5m bywgZGF0YV9ldmVudC5pbXBsaWNpdCkKKwkgICAgICAgPT0gb2Zmc2V0b2Yg KGFjY19ldmVudF9pbmZvLCBvdGhlcl9ldmVudC5pbXBsaWNpdCkpOworLyog dG9vbF9pbmZvICovCitTVEFUSUNfQVNTRVJUIChvZmZzZXRvZiAoYWNjX2V2 ZW50X2luZm8sIGRhdGFfZXZlbnQudG9vbF9pbmZvKQorCSAgICAgICA9PSBv ZmZzZXRvZiAoYWNjX2V2ZW50X2luZm8sIGxhdW5jaF9ldmVudC50b29sX2lu Zm8pKTsKK1NUQVRJQ19BU1NFUlQgKG9mZnNldG9mIChhY2NfZXZlbnRfaW5m bywgZGF0YV9ldmVudC50b29sX2luZm8pCisJICAgICAgID09IG9mZnNldG9m IChhY2NfZXZlbnRfaW5mbywgb3RoZXJfZXZlbnQudG9vbF9pbmZvKSk7CisK K3N0cnVjdCBnb2FjY19wcm9mX2NhbGxiYWNrX2VudHJ5Cit7CisgIGFjY19w cm9mX2NhbGxiYWNrIGNiOworICBpbnQgcmVmOworICBib29sIGVuYWJsZWQ7 CisgIHN0cnVjdCBnb2FjY19wcm9mX2NhbGxiYWNrX2VudHJ5ICpuZXh0Owor fTsKKworLyogZ29hY2NfcHJvZl9jYWxsYmFja3NfZW5hYmxlZFthY2NfZXZf bm9uZV0gYWN0cyBhcyBhIGdsb2JhbCB0b2dnbGUuICAqLworc3RhdGljIGJv b2wgZ29hY2NfcHJvZl9jYWxsYmFja3NfZW5hYmxlZFthY2NfZXZfbGFzdF07 CitzdGF0aWMgc3RydWN0IGdvYWNjX3Byb2ZfY2FsbGJhY2tfZW50cnkgKmdv YWNjX3Byb2ZfY2FsbGJhY2tfZW50cmllc1thY2NfZXZfbGFzdF07CisKKy8q IFRoaXMgbG9jayBpcyB1c2VkIHRvIHByb3RlY3QgYWNjZXNzIHRvIGdvYWNj X3Byb2ZfY2FsbGJhY2tzX2VuYWJsZWQsIGFuZAorICAgZ29hY2NfcHJvZl9j YWxsYmFja19lbnRyaWVzLiAgKi8KK3N0YXRpYyBnb21wX211dGV4X3QgZ29h Y2NfcHJvZl9sb2NrOworCit2b2lkCitnb2FjY19wcm9maWxpbmdfaW5pdGlh bGl6ZSAodm9pZCkKK3sKKyAgZ29tcF9tdXRleF9pbml0ICgmZ29hY2NfcHJv Zl9sb2NrKTsKKworICAvKiBJbml0aWFsbHksIGFsbCBjYWxsYmFja3MgZm9y IGFsbCBldmVudHMgYXJlIGVuYWJsZWQuICAqLworICBmb3IgKGludCBpID0g MDsgaSA8IGFjY19ldl9sYXN0OyArK2kpCisgICAgZ29hY2NfcHJvZl9jYWxs YmFja3NfZW5hYmxlZFtpXSA9IHRydWU7CisKKyAgLyogV2UgYXJlIHRvIGlu dm9rZSBhbiBleHRlcm5hbCBhY2NfcmVnaXN0ZXJfbGlicmFyeSByb3V0aW5l LCBkZWZhdWx0aW5nIHRvCisgICAgIG91ciBzdHViIG9hY2MtcHJvZmlsaW5n LWFjY19yZWdpc3Rlcl9saWJyYXJ5LmM6YWNjX3JlZ2lzdGVyX2xpYnJhcnkK KyAgICAgaW1wbGVtZW50YXRpb24uICAqLworICBnb21wX2RlYnVnICgwLCAi JXM6IGNhbGxpbmcgYWNjX3JlZ2lzdGVyX2xpYnJhcnlcbiIsIF9fRlVOQ1RJ T05fXyk7CisgIC8vVE9ETy4KKyAgYWNjX3JlZ2lzdGVyX2xpYnJhcnkgKGFj Y19wcm9mX3JlZ2lzdGVyLCBhY2NfcHJvZl91bnJlZ2lzdGVyLCBOVUxMKTsK KyNpZmRlZiBQTFVHSU5fU1VQUE9SVAorICBjaGFyICphY2NfcHJvZmxpYnMg PSBnZXRlbnYgKCJBQ0NfUFJPRkxJQiIpOworICB3aGlsZSAoYWNjX3Byb2Zs aWJzICE9IE5VTEwgJiYgYWNjX3Byb2ZsaWJzWzBdICE9ICdcMCcpCisgICAg eworICAgICAgY2hhciAqYWNjX3Byb2ZsaWJzX3NlcCA9IHN0cmNociAoYWNj X3Byb2ZsaWJzLCAnOycpOworICAgICAgY2hhciAqYWNjX3Byb2ZsaWI7Cisg ICAgICBpZiAoYWNjX3Byb2ZsaWJzX3NlcCA9PSBhY2NfcHJvZmxpYnMpCisJ eworCSAgLyogU3RyYXkgIjsiIHNlcGFyYXRvcjogbWFrZSBzdXJlIHdlIGRv bid0IGRsb3BlbiB0aGUgbWFpbgorCSAgICAgcHJvZ3JhbS4gICovCisJICBh Y2NfcHJvZmxpYiA9IE5VTEw7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlm IChhY2NfcHJvZmxpYnNfc2VwICE9IE5VTEwpCisJICAgIHsKKwkgICAgICAv KiBTaW5nbGUgb3V0IHRoZSBmaXJzdCBsaWJyYXJ5LiAgKi8KKwkgICAgICBh Y2NfcHJvZmxpYiA9IGdvbXBfbWFsbG9jIChhY2NfcHJvZmxpYnNfc2VwIC0g YWNjX3Byb2ZsaWJzICsgMSk7CisJICAgICAgbWVtY3B5IChhY2NfcHJvZmxp YiwgYWNjX3Byb2ZsaWJzLAorCQkgICAgICBhY2NfcHJvZmxpYnNfc2VwIC0g YWNjX3Byb2ZsaWJzKTsKKwkgICAgICBhY2NfcHJvZmxpYlthY2NfcHJvZmxp YnNfc2VwIC0gYWNjX3Byb2ZsaWJzXSA9ICdcMCc7CisJICAgIH0KKwkgIGVs c2UKKwkgICAgeworCSAgICAgIC8qIE5vICI7IiBzZXBhcmF0b3IsIHNvIG9u bHkgb25lIGxpYnJhcnkuICAqLworCSAgICAgIGFjY19wcm9mbGliID0gYWNj X3Byb2ZsaWJzOworCSAgICB9CisKKwkgIGdvbXBfZGVidWcgKDAsICIlczog ZGxvcGVuKCVzKVxuIiwgX19GVU5DVElPTl9fLCBhY2NfcHJvZmxpYik7CisJ ICB2b2lkICpkbF9oYW5kbGUgPSBkbG9wZW4gKGFjY19wcm9mbGliLCBSVExE X0xBWlkpOworCSAgaWYgKGRsX2hhbmRsZSAhPSBOVUxMKQorCSAgICB7CisJ ICAgICAgdHlwZW9mICgmYWNjX3JlZ2lzdGVyX2xpYnJhcnkpIGFfcl9sCisJ CT0gZGxzeW0gKGRsX2hhbmRsZSwgImFjY19yZWdpc3Rlcl9saWJyYXJ5Iik7 CisJICAgICAgaWYgKGFfcl9sID09IE5VTEwpCisJCWdvdG8gZGxfZmFpbDsK KwkgICAgICAvKiBBdm9pZCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uLCBmb3Ig ZXhhbXBsZSBpZiB0aGUgc2FtZSBzaGFyZWQKKwkJIGxpYnJhcnkgaXMgc3Bl Y2lmaWVkIGluIExEX1BSRUxPQUQgYW5kIEFDQ19QUk9GTElCIC0tIHdoaWNo CisJCSBUQVUgMi4yNiBkb2VzIHdoZW4gdXNpbmcgInRhdV9leGVjIC1vcGVu YWNjIi4gICovCisJICAgICAgaWYgKGFfcl9sICE9IGFjY19yZWdpc3Rlcl9s aWJyYXJ5KQorCQl7CisJCSAgZ29tcF9kZWJ1ZyAoMCwgIiAgJXM6IGNhbGxp bmcgJXM6YWNjX3JlZ2lzdGVyX2xpYnJhcnlcbiIsCisJCQkgICAgICBfX0ZV TkNUSU9OX18sIGFjY19wcm9mbGliKTsKKwkJICAvL1RPRE8uCisJCSAgYV9y X2wgKGFjY19wcm9mX3JlZ2lzdGVyLCBhY2NfcHJvZl91bnJlZ2lzdGVyLCBO VUxMKTsKKwkJfQorCSAgICAgIGVsc2UKKwkJZ29tcF9kZWJ1ZyAoMCwgIiAg JXM6IHNraXBwaW5nIGR1cGxpY2F0ZSIKKwkJCSAgICAiICVzOmFjY19yZWdp c3Rlcl9saWJyYXJ5XG4iLAorCQkJICAgIF9fRlVOQ1RJT05fXywgYWNjX3By b2ZsaWIpOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgZGxfZmFp bDoKKwkgICAgICBnb21wX2Vycm9yICgid2hpbGUgbG9hZGluZyBBQ0NfUFJP RkxJQiAlczogJXMiLAorCQkJICBhY2NfcHJvZmxpYiwgZGxlcnJvciAoKSk7 CisJICAgICAgaWYgKGRsX2hhbmRsZSAhPSBOVUxMKQorCQl7CisJCSAgaW50 IGVyciA9IGRsY2xvc2UgKGRsX2hhbmRsZSk7CisJCSAgZGxfaGFuZGxlID0g TlVMTDsKKwkJICBpZiAoZXJyICE9IDApCisJCSAgICBnb3RvIGRsX2ZhaWw7 CisJCX0KKwkgICAgfQorCX0KKworICAgICAgaWYgKGFjY19wcm9mbGliICE9 IGFjY19wcm9mbGlicykKKwl7CisJICBmcmVlIChhY2NfcHJvZmxpYik7CisK KwkgIGFjY19wcm9mbGlicyA9IGFjY19wcm9mbGlic19zZXAgKyAxOworCX0K KyAgICAgIGVsc2UKKwlhY2NfcHJvZmxpYnMgPSBOVUxMOworICAgIH0KKyNl bmRpZiAvKiBQTFVHSU5fU1VQUE9SVCAqLworfQorCit2b2lkCithY2NfcHJv Zl9yZWdpc3RlciAoYWNjX2V2ZW50X3QgZXYsIGFjY19wcm9mX2NhbGxiYWNr IGNiLCBhY2NfcmVnaXN0ZXJfdCByZWcpCit7CisgIC8vVE9ETworICBnb21w X2RlYnVnICgwLCAiJXM6IGV2PSVkLCBjYj0lcCwgcmVnPSVkXG4iLAorCSAg ICAgIF9fRlVOQ1RJT05fXywgKGludCkgZXYsICh2b2lkICopIGNiLCAoaW50 KSByZWcpOworCisgIGVudW0KKyAgeworICAgIEVWRU5UX0tJTkRfQk9HVVMs CisgICAgRVZFTlRfS0lORF9OT1JNQUwsCisgICAgLyogQXMgZW5kIGV2ZW50 cyBpbnZva2UgY2FsbGJhY2tzIGluIHRoZSByZXZlcnNlIG9yZGVyLCB3ZSBy ZWdpc3RlciB0aGVzZQorICAgICAgIGluIHRoZSByZXZlcnNlIG9yZGVyIGhl cmUuICAqLworICAgIEVWRU5UX0tJTkRfRU5ELAorICB9IGV2ZW50X2tpbmQg PSBFVkVOVF9LSU5EX0JPR1VTOworICBzd2l0Y2ggKGV2KQorICAgIHsKKyAg ICBjYXNlIGFjY19ldl9ub25lOgorICAgIGNhc2UgYWNjX2V2X2RldmljZV9p bml0X3N0YXJ0OgorICAgIGNhc2UgYWNjX2V2X2RldmljZV9zaHV0ZG93bl9z dGFydDoKKyAgICBjYXNlIGFjY19ldl9ydW50aW1lX3NodXRkb3duOgorICAg IGNhc2UgYWNjX2V2X2NyZWF0ZToKKyAgICBjYXNlIGFjY19ldl9kZWxldGU6 CisgICAgY2FzZSBhY2NfZXZfYWxsb2M6CisgICAgY2FzZSBhY2NfZXZfZnJl ZToKKyAgICBjYXNlIGFjY19ldl9lbnRlcl9kYXRhX3N0YXJ0OgorICAgIGNh c2UgYWNjX2V2X2V4aXRfZGF0YV9zdGFydDoKKyAgICBjYXNlIGFjY19ldl91 cGRhdGVfc3RhcnQ6CisgICAgY2FzZSBhY2NfZXZfY29tcHV0ZV9jb25zdHJ1 Y3Rfc3RhcnQ6CisgICAgY2FzZSBhY2NfZXZfZW5xdWV1ZV9sYXVuY2hfc3Rh cnQ6CisgICAgY2FzZSBhY2NfZXZfZW5xdWV1ZV91cGxvYWRfc3RhcnQ6Cisg ICAgY2FzZSBhY2NfZXZfZW5xdWV1ZV9kb3dubG9hZF9zdGFydDoKKyAgICBj YXNlIGFjY19ldl93YWl0X3N0YXJ0OgorICAgICAgZXZlbnRfa2luZCA9IEVW RU5UX0tJTkRfTk9STUFMOworICAgICAgYnJlYWs7CisgICAgY2FzZSBhY2Nf ZXZfZGV2aWNlX2luaXRfZW5kOgorICAgIGNhc2UgYWNjX2V2X2RldmljZV9z aHV0ZG93bl9lbmQ6CisgICAgY2FzZSBhY2NfZXZfZW50ZXJfZGF0YV9lbmQ6 CisgICAgY2FzZSBhY2NfZXZfZXhpdF9kYXRhX2VuZDoKKyAgICBjYXNlIGFj Y19ldl91cGRhdGVfZW5kOgorICAgIGNhc2UgYWNjX2V2X2NvbXB1dGVfY29u c3RydWN0X2VuZDoKKyAgICBjYXNlIGFjY19ldl9lbnF1ZXVlX2xhdW5jaF9l bmQ6CisgICAgY2FzZSBhY2NfZXZfZW5xdWV1ZV91cGxvYWRfZW5kOgorICAg IGNhc2UgYWNjX2V2X2VucXVldWVfZG93bmxvYWRfZW5kOgorICAgIGNhc2Ug YWNjX2V2X3dhaXRfZW5kOgorICAgICAgZXZlbnRfa2luZCA9IEVWRU5UX0tJ TkRfRU5EOworICAgICAgYnJlYWs7CisgICAgY2FzZSBhY2NfZXZfbGFzdDoK KyAgICAgIGJyZWFrOworICAgIH0KKyAgaWYgKGV2ZW50X2tpbmQgPT0gRVZF TlRfS0lORF9CT0dVUykKKyAgICB7CisgICAgICAvL1RPRE86IHNob3VsZCB0 aGlzIGJlIGEgZmF0YWwgZXJyb3I/ICBPciwgc2hvdWxkIHdlIChzaWxlbnRs eT8pIGlnbm9yZSB0aGVzZSwgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eT8K KyAgICAgIGdvbXBfZXJyb3IgKCJpZ25vcmluZyAlcyByZXF1ZXN0IGZvciBU T0RPaW52YWxpZCBhY2NfZXZlbnRfdCAlZCIsCisJCSAgX19GVU5DVElPTl9f LCAvKiBUT0RPICovIChpbnQpIGV2KTsKKyAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgYm9vbCBib2d1cyA9IHRydWU7CisgIHN3aXRjaCAocmVnKQorICAg IHsKKyAgICBjYXNlIGFjY19yZWc6CisgICAgY2FzZSBhY2NfdG9nZ2xlOgor ICAgIGNhc2UgYWNjX3RvZ2dsZV9wZXJfdGhyZWFkOgorICAgICAgYm9ndXMg PSBmYWxzZTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgaWYgKGJvZ3VzKQor ICAgIHsKKyAgICAgIC8vVE9ETzogc2hvdWxkIHRoaXMgYmUgYSBmYXRhbCBl cnJvcj8gIE9yLCBzaG91bGQgd2UgKHNpbGVudGx5PykgaWdub3JlIHRoZXNl LCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5PworICAgICAgZ29tcF9lcnJv ciAoImlnbm9yaW5nICVzIHJlcXVlc3Qgd2l0aCBUT0RPaW52YWxpZCBhY2Nf cmVnaXN0ZXJfdCAlZCIsCisJCSAgX19GVU5DVElPTl9fLCAvKiBUT0RPICov IChpbnQpIHJlZyk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIC8qIFNw ZWNpYWwgY2FzZXMuICAqLworICBpZiAocmVnID09IGFjY190b2dnbGUpCisg ICAgeworICAgICAgaWYgKGNiID09IE5VTEwpCisJeworCSAgZ29tcF9kZWJ1 ZyAoMCwgIiAgZ2xvYmFsbHkgZW5hYmxpbmcgY2FsbGJhY2tzXG4iKTsKKwkg IGdvbXBfbXV0ZXhfbG9jayAoJmdvYWNjX3Byb2ZfbG9jayk7CisJICAvKiBn b2FjY19wcm9mX2NhbGxiYWNrc19lbmFibGVkW2FjY19ldl9ub25lXSBhY3Rz IGFzIGEgZ2xvYmFsCisJICAgICB0b2dnbGUuICAqLworCSAgZ29hY2NfcHJv Zl9jYWxsYmFja3NfZW5hYmxlZFtldl0gPSB0cnVlOworCSAgZ29tcF9tdXRl eF91bmxvY2sgKCZnb2FjY19wcm9mX2xvY2spOworCSAgcmV0dXJuOworCX0K KyAgICAgIGVsc2UgaWYgKGV2ID09IGFjY19ldl9ub25lICYmIGNiICE9IE5V TEwpCisJeworCSAgZ29tcF9kZWJ1ZyAoMCwgIiAgaWdub3JpbmcgcmVxdWVz dFxuIik7CisJICAvKiBTaWxlbnRseSBpZ25vcmUgcmVxdWVzdC4gICovCisJ ICByZXR1cm47CisJfQorICAgIH0KKyAgZWxzZSBpZiAocmVnID09IGFjY190 b2dnbGVfcGVyX3RocmVhZCkKKyAgICB7CisgICAgICBpZiAoZXYgPT0gYWNj X2V2X25vbmUgJiYgY2IgPT0gTlVMTCkKKwl7CisJICBnb21wX2RlYnVnICgw LCAiICB0aHJlYWQ6IGVuYWJsaW5nIGNhbGxiYWNrc1xuIik7CisJICBnb2Fj Y19sYXp5X2luaXRpYWxpemUgKCk7CisJICBzdHJ1Y3QgZ29hY2NfdGhyZWFk ICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CisJICB0aHItPnByb2ZfY2FsbGJh Y2tzX2VuYWJsZWQgPSB0cnVlOworCSAgcmV0dXJuOworCX0KKyAgICAgIC8v VE9ETzogc2hvdWxkIHRoaXMgYmUgYSBmYXRhbCBlcnJvcj8gIE9yLCBzaG91 bGQgd2UgKHNpbGVudGx5PykgaWdub3JlIHRoZXNlPworICAgICAgZ29tcF9l cnJvciAoImlnbm9yaW5nICVzIHJlcXVlc3QgZm9yIGFjY190b2dnbGVfcGVy X3RocmVhZCB3aXRoIFRPRE8iLAorCQkgIF9fRlVOQ1RJT05fXyk7CisgICAg ICByZXR1cm47CisgICAgfQorCisgIGdvbXBfbXV0ZXhfbG9jayAoJmdvYWNj X3Byb2ZfbG9jayk7CisKKyAgc3RydWN0IGdvYWNjX3Byb2ZfY2FsbGJhY2tf ZW50cnkgKml0LCAqaXRfcDsKKyAgaXQgPSBnb2FjY19wcm9mX2NhbGxiYWNr X2VudHJpZXNbZXZdOworICBpdF9wID0gTlVMTDsKKyAgd2hpbGUgKGl0KQor ICAgIHsKKyAgICAgIGlmIChpdC0+Y2IgPT0gY2IpCisJYnJlYWs7CisgICAg ICBpdF9wID0gaXQ7CisgICAgICBpdCA9IGl0LT5uZXh0OworICAgIH0KKwor ICBzd2l0Y2ggKHJlZykKKyAgICB7CisgICAgY2FzZSBhY2NfcmVnOgorICAg ICAgLyogSWYgd2UgYWxyZWFkeSBoYXZlIHRoaXMgY2FsbGJhY2sgcmVnaXN0 ZXJlZCwganVzdCBpbmNyZW1lbnQgaXRzIHJlZgorCSBjb3VudC4gICovCisg ICAgICBpZiAoaXQgIT0gTlVMTCkKKwl7CisJICBpdC0+cmVmKys7CisJICBn b21wX2RlYnVnICgwLCAiICBhbHJlYWR5IHJlZ2lzdGVyZWQ7IgorCQkgICAg ICAiIGluY3JlbWVudGluZyByZWYgY291bnQgdG86ICVkXG4iLCBpdC0+cmVm KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgc3RydWN0IGdvYWNjX3Byb2Zf Y2FsbGJhY2tfZW50cnkgKmUKKwkgICAgPSBnb21wX21hbGxvYyAoc2l6ZW9m IChzdHJ1Y3QgZ29hY2NfcHJvZl9jYWxsYmFja19lbnRyeSkpOworCSAgZS0+ Y2IgPSBjYjsKKwkgIGUtPnJlZiA9IDE7CisJICBlLT5lbmFibGVkID0gdHJ1 ZTsKKwkgIGJvb2wgcHJlcGVuZCA9IChldmVudF9raW5kID09IEVWRU5UX0tJ TkRfRU5EKTsKKwkgIC8qIElmIHdlIGRvbid0IGhhdmUgYW55IGNhbGxiYWNr IHJlZ2lzdGVyZWQgeWV0LCBhbHNvIHVzZSB0aGUKKwkgICAgICJwcmVwZW5k IiBjb2RlIHBhdGguICAqLworCSAgaWYgKGl0X3AgPT0gTlVMTCkKKwkgICAg cHJlcGVuZCA9IHRydWU7CisJICBpZiAocHJlcGVuZCkKKwkgICAgeworCSAg ICAgIGdvbXBfZGVidWcgKDAsICIgIHByZXBlbmRpbmdcbiIpOworCSAgICAg IGUtPm5leHQgPSBnb2FjY19wcm9mX2NhbGxiYWNrX2VudHJpZXNbZXZdOwor CSAgICAgIGdvYWNjX3Byb2ZfY2FsbGJhY2tfZW50cmllc1tldl0gPSBlOwor CSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBnb21wX2RlYnVnICgw LCAiICBhcHBlbmRpbmdcbiIpOworCSAgICAgIGUtPm5leHQgPSBOVUxMOwor CSAgICAgIGl0X3AtPm5leHQgPSBlOworCSAgICB9CisJfQorICAgICAgYnJl YWs7CisKKyAgICBjYXNlIGFjY190b2dnbGU6CisgICAgICBpZiAoaXQgPT0g TlVMTCkKKwl7CisJICAvKiBTaWxlbnRseSBpZ25vcmUgYWNjX3RvZ2dsZSBy ZXF1ZXN0IGlmIG5vdCByZWdpc3RlcmVkLiAgKi8KKwkgIGdvbXBfZGVidWcg KDAsICIgIG5vdCBlbmFibGluZzsgbm90IHJlZ2lzdGVyZWRcbiIpOworCX0K KyAgICAgIGVsc2UKKwl7CisJICBnb21wX2RlYnVnICgwLCAiICBlbmFibGlu Z1xuIik7CisJICBpdC0+ZW5hYmxlZCA9IHRydWU7CisJfQorICAgICAgYnJl YWs7CisKKyAgICBjYXNlIGFjY190b2dnbGVfcGVyX3RocmVhZDoKKyAgICAg IF9fYnVpbHRpbl91bnJlYWNoYWJsZSAoKTsKKyAgICB9CisKKyAgZ29tcF9t dXRleF91bmxvY2sgKCZnb2FjY19wcm9mX2xvY2spOworfQorCit2b2lkCith Y2NfcHJvZl91bnJlZ2lzdGVyIChhY2NfZXZlbnRfdCBldiwgYWNjX3Byb2Zf Y2FsbGJhY2sgY2IsIGFjY19yZWdpc3Rlcl90IHJlZykKK3sKKyAgLy9UT0RP CisgIGdvbXBfZGVidWcgKDAsICIlczogZXY9JWQsIGNiPSVwLCByZWc9JWRc biIsCisJICAgICAgX19GVU5DVElPTl9fLCAoaW50KSBldiwgKHZvaWQgKikg Y2IsIChpbnQpIHJlZyk7CisKKyAgaWYgKGV2IDwgYWNjX2V2X25vbmUKKyAg ICAgIHx8IGV2ID49IGFjY19ldl9sYXN0KQorICAgIHsKKyAgICAgIC8vVE9E Tzogc2hvdWxkIHRoaXMgYmUgYSBmYXRhbCBlcnJvcj8gIE9yLCBzaG91bGQg d2UgKHNpbGVudGx5PykgaWdub3JlIHRoZXNlLCBmb3IgZm9yd2FyZCBjb21w YXRpYmlsaXR5PworICAgICAgZ29tcF9lcnJvciAoImlnbm9yaW5nICVzIHJl cXVlc3QgZm9yIFRPRE9pbnZhbGlkIGFjY19ldmVudF90ICVkIiwKKwkJICBf X0ZVTkNUSU9OX18sIC8qIFRPRE8gKi8gKGludCkgZXYpOworICAgICAgcmV0 dXJuOworICAgIH0KKworICBib29sIGJvZ3VzID0gdHJ1ZTsKKyAgc3dpdGNo IChyZWcpCisgICAgeworICAgIGNhc2UgYWNjX3JlZzoKKyAgICBjYXNlIGFj Y190b2dnbGU6CisgICAgY2FzZSBhY2NfdG9nZ2xlX3Blcl90aHJlYWQ6Cisg ICAgICBib2d1cyA9IGZhbHNlOworICAgICAgYnJlYWs7CisgICAgfQorICBp ZiAoYm9ndXMpCisgICAgeworICAgICAgLy9UT0RPOiBzaG91bGQgdGhpcyBi ZSBhIGZhdGFsIGVycm9yPyAgT3IsIHNob3VsZCB3ZSAoc2lsZW50bHk/KSBp Z25vcmUgdGhlc2UsIGZvciBmb3J3YXJkIGNvbXBhdGliaWxpdHk/CisgICAg ICBnb21wX2Vycm9yICgiaWdub3JpbmcgJXMgcmVxdWVzdCB3aXRoIFRPRE9p bnZhbGlkIGFjY19yZWdpc3Rlcl90ICVkIiwKKwkJICBfX0ZVTkNUSU9OX18s IC8qIFRPRE8gKi8gKGludCkgcmVnKTsKKyAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgLyogU3BlY2lhbCBjYXNlcy4gICovCisgIGlmIChyZWcgPT0gYWNj X3RvZ2dsZSkKKyAgICB7CisgICAgICBpZiAoY2IgPT0gTlVMTCkKKwl7CisJ ICBnb21wX2RlYnVnICgwLCAiICBnbG9iYWxseSBkaXNhYmxpbmcgY2FsbGJh Y2tzXG4iKTsKKwkgIGdvbXBfbXV0ZXhfbG9jayAoJmdvYWNjX3Byb2ZfbG9j ayk7CisJICAvKiBnb2FjY19wcm9mX2NhbGxiYWNrc19lbmFibGVkW2FjY19l dl9ub25lXSBhY3RzIGFzIGEgZ2xvYmFsCisJICAgICB0b2dnbGUuICAqLwor CSAgZ29hY2NfcHJvZl9jYWxsYmFja3NfZW5hYmxlZFtldl0gPSBmYWxzZTsK KwkgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZ29hY2NfcHJvZl9sb2NrKTsKKwkg IHJldHVybjsKKwl9CisgICAgICBlbHNlIGlmIChldiA9PSBhY2NfZXZfbm9u ZSAmJiBjYiAhPSBOVUxMKQorCXsKKwkgIGdvbXBfZGVidWcgKDAsICIgIGln bm9yaW5nIHJlcXVlc3RcbiIpOworCSAgLyogU2lsZW50bHkgaWdub3JlIHJl cXVlc3QuICAqLworCSAgcmV0dXJuOworCX0KKyAgICB9CisgIGVsc2UgaWYg KHJlZyA9PSBhY2NfdG9nZ2xlX3Blcl90aHJlYWQpCisgICAgeworICAgICAg aWYgKGV2ID09IGFjY19ldl9ub25lICYmIGNiID09IE5VTEwpCisJeworCSAg Z29tcF9kZWJ1ZyAoMCwgIiAgdGhyZWFkOiBkaXNhYmxpbmcgY2FsbGJhY2tz XG4iKTsKKwkgIGdvYWNjX2xhenlfaW5pdGlhbGl6ZSAoKTsKKwkgIHN0cnVj dCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsKKwkgIHRo ci0+cHJvZl9jYWxsYmFja3NfZW5hYmxlZCA9IGZhbHNlOworCSAgcmV0dXJu OworCX0KKyAgICAgIC8vVE9ETzogc2hvdWxkIHRoaXMgYmUgYSBmYXRhbCBl cnJvcj8gIE9yLCBzaG91bGQgd2UgKHNpbGVudGx5PykgaWdub3JlIHRoZXNl PworICAgICAgZ29tcF9lcnJvciAoImlnbm9yaW5nICVzIHJlcXVlc3QgZm9y IGFjY190b2dnbGVfcGVyX3RocmVhZCB3aXRoIFRPRE8iLAorCQkgIF9fRlVO Q1RJT05fXyk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIGdvbXBfbXV0 ZXhfbG9jayAoJmdvYWNjX3Byb2ZfbG9jayk7CisKKyAgc3RydWN0IGdvYWNj X3Byb2ZfY2FsbGJhY2tfZW50cnkgKml0LCAqaXRfcDsKKyAgaXQgPSBnb2Fj Y19wcm9mX2NhbGxiYWNrX2VudHJpZXNbZXZdOworICBpdF9wID0gTlVMTDsK KyAgd2hpbGUgKGl0KQorICAgIHsKKyAgICAgIGlmIChpdC0+Y2IgPT0gY2Ip CisJYnJlYWs7CisgICAgICBpdF9wID0gaXQ7CisgICAgICBpdCA9IGl0LT5u ZXh0OworICAgIH0KKworICBzd2l0Y2ggKHJlZykKKyAgICB7CisgICAgY2Fz ZSBhY2NfcmVnOgorICAgICAgaWYgKGl0ID09IE5VTEwpCisJeworCSAgLy9U T0RPOiBzaG91bGQgdGhpcyBiZSBhIGZhdGFsIGVycm9yPyAgT3IsIHNob3Vs ZCB3ZSAoc2lsZW50bHk/KSBpZ25vcmUgdGhlc2U/CisJICBnb21wX2Vycm9y ICgiaWdub3JpbmcgJXMgcmVxdWVzdCBmb3IgYWNjX2V2ZW50X3QgJWQ6IG5v dCByZWdpc3RlcmVkIiwKKwkJICAgICAgX19GVU5DVElPTl9fLCAvKiBUT0RP ICovIChpbnQpIGV2KTsKKwkgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZ29hY2Nf cHJvZl9sb2NrKTsKKwkgIHJldHVybjsKKwl9CisgICAgICBpdC0+cmVmLS07 CisgICAgICBnb21wX2RlYnVnICgwLCAiICBkZWNyZW1lbnRpbmcgcmVmIGNv dW50IHRvOiAlZFxuIiwgaXQtPnJlZik7CisgICAgICBpZiAoaXQtPnJlZiA9 PSAwKQorCXsKKwkgIGlmIChpdF9wID09IE5VTEwpCisJICAgIGdvYWNjX3By b2ZfY2FsbGJhY2tfZW50cmllc1tldl0gPSBpdC0+bmV4dDsKKwkgIGVsc2UK KwkgICAgaXRfcC0+bmV4dCA9IGl0LT5uZXh0OworCSAgZnJlZSAoaXQpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBhY2NfdG9nZ2xlOgorICAg ICAgaWYgKGl0ID09IE5VTEwpCisJeworCSAgLyogU2lsZW50bHkgaWdub3Jl IGFjY190b2dnbGUgcmVxdWVzdCBpZiBub3QgcmVnaXN0ZXJlZC4gICovCisJ ICBnb21wX2RlYnVnICgwLCAiICBub3QgZGlzYWJsaW5nOyBub3QgcmVnaXN0 ZXJlZFxuIik7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGdvbXBfZGVidWcg KDAsICIgIGRpc2FibGluZ1xuIik7CisJICBpdC0+ZW5hYmxlZCA9IGZhbHNl OworCX0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBhY2NfdG9nZ2xlX3Bl cl90aHJlYWQ6CisgICAgICBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCk7Cisg ICAgfQorCisgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZ29hY2NfcHJvZl9sb2Nr KTsKK30KKworLyogU2V0IHVwIHRvIGRpc3BhdGNoIGV2ZW50cz8gICovCisK K2Jvb2wKK2dvYWNjX3Byb2ZpbGluZ19zZXR1cF9wIChzdHJ1Y3QgZ29hY2Nf dGhyZWFkICp0aHIsCisJCQkgYWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvLCBh Y2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICAvL1RPRE8KKyAgZ29tcF9k ZWJ1ZyAoMCwgIiVzICglcClcbiIsIF9fRlVOQ1RJT05fXywgdGhyKTsKKwor ICAvKiBJZiB3ZSBkb24ndCBoYXZlIGFueSBwZXItdGhyZWFkIHN0YXRlIHll dCwgd2UgY2FuJ3QgcmVnaXN0ZXIgcHJvZl9pbmZvIGFuZAorICAgICBhcGlf aW5mby4gICovCisgIC8qIFRPRE86IEluIHRoaXMgY2FzZSwgc2hvdWxkIHdl IGFjdHVhbGx5IGNhbGwgZ29hY2NfbGF6eV9pbml0aWFsaXplIGhlcmUsCisg ICAgIGFuZCByZXR1cm4gdGhlICJ0aHIiIGZyb20gZ29hY2NfcHJvZmlsaW5n X3NldHVwX3A/ICAqLworICBpZiAoX19idWlsdGluX2V4cGVjdCAodGhyID09 IE5VTEwsIGZhbHNlKSkKKyAgICB7CisgICAgICAvL1RPRE8KKyAgICAgIGdv bXBfZGVidWcgKDAsICJDYW4ndCBnZW5lcmF0ZSBPcGVuQUNDIFByb2ZpbGlu ZyBJbnRlcmZhY2UgZXZlbnRzIGZvciIKKwkJICAiIHRoZSBjdXJyZW50IGNh bGwsIGNvbnN0cnVjdCwgb3IgZGlyZWN0aXZlXG4iKTsKKyAgICAgIHJldHVy biBmYWxzZTsKKyAgICB9CisKKyAgYm9vbCBwcm9maWxpbmdfZGlzcGF0Y2hf cAorICAgID0gX19idWlsdGluX2V4cGVjdCAoZ29hY2NfcHJvZmlsaW5nX2Rp c3BhdGNoX3AgKGZhbHNlKSwgZmFsc2UpOworICBpZiAodGhyLT5wcm9mX2lu Zm8gIT0gTlVMTCkKKyAgICB7CisgICAgICBhc3NlcnQgKHByb2ZpbGluZ19k aXNwYXRjaF9wKTsgLy9UT0RPCisgICAgICAvKiBQcm9maWxpbmcgaGFzIGFs cmVhZHkgYmVlbiBzZXQgdXAgZm9yIGFuIG91dGVyIGNvbnN0cnVjdC4gIElu IHRoaXMKKwkgY2FzZSwgd2UgY29udGludWUgdG8gdXNlIHRoZSBleGlzdGlu ZyBpbmZvcm1hdGlvbiwgYW5kIHRodXMgcmV0dXJuCisJICJmYWxzZSIgaGVy ZS4KKworCSBUaGlzIGNhbiBoYXBwZW4sIGZvciBleGFtcGxlLCBmb3IgYW4g ZW50ZXIgZGF0YSBkaXJlY3RpdmUsIHdoaWNoIHNldHMKKwkgdXAgcHJvZmls aW5nLCB0aGVuIGNhbGxzIGludG8gYWNjX2NvcHlpbiwgd2hpY2ggc2hvdWxk IG5vdCBhZ2FpbiBzZXQKKwkgdXAgcHJvZmlsaW5nLCBzaG91bGQgbm90IG92 ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24uICAqLworICAgICAg Ly9UT0RPOiBJcyB0aGlzIGFsbCBrb3NoZXI/CisgICAgICByZXR1cm4gZmFs c2U7CisgICAgfQorCisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkKKyAg ICB7CisgICAgICB0aHItPnByb2ZfaW5mbyA9IHByb2ZfaW5mbzsKKworICAg ICAgcHJvZl9pbmZvLT5ldmVudF90eXBlID0gLTE7IC8qIE11c3QgYmUgc2V0 IGxhdGVyLiAgKi8KKyAgICAgIHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPSBf QUNDX1BST0ZfSU5GT19WQUxJRF9CWVRFUzsKKyAgICAgIHByb2ZfaW5mby0+ dmVyc2lvbiA9IF9BQ0NfUFJPRl9JTkZPX1ZFUlNJT047CisgICAgICAvL1RP RE8KKyAgICAgIGlmICh0aHItPmRldikKKwl7CisJICBwcm9mX2luZm8tPmRl dmljZV90eXBlID0gYWNjX2RldmljZV90eXBlICh0aHItPmRldi0+dHlwZSk7 CisJICBwcm9mX2luZm8tPmRldmljZV9udW1iZXIgPSB0aHItPmRldi0+dGFy Z2V0X2lkOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBwcm9mX2luZm8tPmRl dmljZV90eXBlID0gLTE7CisJICBwcm9mX2luZm8tPmRldmljZV9udW1iZXIg PSAtMTsKKwl9CisgICAgICBwcm9mX2luZm8tPnRocmVhZF9pZCA9IC0xOyAv L1RPRE8KKyAgICAgIHByb2ZfaW5mby0+YXN5bmMgPSBhY2NfYXN5bmNfc3lu YzsgLy9UT0RPCisgICAgICAvKiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9P cGVuQUNDL29wZW5hY2Mtc3BlYy9pc3N1ZXMvNzE+LiAgKi8KKyAgICAgIHBy b2ZfaW5mby0+YXN5bmNfcXVldWUgPSBwcm9mX2luZm8tPmFzeW5jOworICAg ICAgcHJvZl9pbmZvLT5zcmNfZmlsZSA9IE5VTEw7IC8vVE9ETworICAgICAg cHJvZl9pbmZvLT5mdW5jX25hbWUgPSBOVUxMOyAvL1RPRE8KKyAgICAgIHBy b2ZfaW5mby0+bGluZV9ubyA9IC0xOyAvL1RPRE8KKyAgICAgIHByb2ZfaW5m by0+ZW5kX2xpbmVfbm8gPSAtMTsgLy9UT0RPCisgICAgICBwcm9mX2luZm8t PmZ1bmNfbGluZV9ubyA9IC0xOyAvL1RPRE8KKyAgICAgIHByb2ZfaW5mby0+ ZnVuY19lbmRfbGluZV9ubyA9IC0xOyAvL1RPRE8KKworICAgICAgdGhyLT5h cGlfaW5mbyA9IGFwaV9pbmZvOworCisgICAgICBhcGlfaW5mby0+ZGV2aWNl X2FwaSA9IGFjY19kZXZpY2VfYXBpX25vbmU7IC8vVE9ETworICAgICAgYXBp X2luZm8tPnZhbGlkX2J5dGVzID0gX0FDQ19BUElfSU5GT19WQUxJRF9CWVRF UzsKKyAgICAgIGFwaV9pbmZvLT5kZXZpY2VfdHlwZSA9IHByb2ZfaW5mby0+ ZGV2aWNlX3R5cGU7CisgICAgICBhcGlfaW5mby0+dmVuZG9yID0gLTE7IC8v VE9ETworICAgICAgYXBpX2luZm8tPmRldmljZV9oYW5kbGUgPSBOVUxMOyAv L1RPRE8KKyAgICAgIGFwaV9pbmZvLT5jb250ZXh0X2hhbmRsZSA9IE5VTEw7 IC8vVE9ETworICAgICAgYXBpX2luZm8tPmFzeW5jX2hhbmRsZSA9IE5VTEw7 IC8vVE9ETworICAgIH0KKworICByZXR1cm4gcHJvZmlsaW5nX2Rpc3BhdGNo X3A7Cit9CisKKy8qIFByZXBhcmUgdG8gZGlzcGF0Y2ggZXZlbnRzPyAgKi8K KworYm9vbAorZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoX3AgKGJvb2wgY2hl Y2tfbm90X25lc3RlZF9wKQoreworICAvL1RPRE8KKyAgZ29tcF9kZWJ1ZyAo MCwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCisgIHN0cnVjdCBnb2FjY190 aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAoKTsKKyAgaWYgKF9fYnVpbHRp bl9leHBlY3QgKHRociA9PSBOVUxMLCBmYWxzZSkpCisgICAgeworICAgICAg LyogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVyLXRocmVhZCBzdGF0ZSB5ZXQs IHRoYXQgbWVhbnMgdGhhdCBwZXItdGhyZWFkCisJIGNhbGxiYWNrIGRpc3Bh dGNoIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IGRpc2FibGVkICh3aGljaCBv bmx5IGEgY2FsbAorCSB0byBhY2NfcHJvZl91bnJlZ2lzdGVyIHdpdGggYWNj X3RvZ2dsZV9wZXJfdGhyZWFkIHdpbGwgZG8sIGFuZCB0aGF0CisJIHdvdWxk IGhhdmUgYWxsb2NhdGVkIHBlci10aHJlYWQgc3RhdGUgdmlhIGdvYWNjX2xh enlfaW5pdGlhbGl6ZSk7CisJIGluaXRpYWxseSwgYWxsIGNhbGxiYWNrcyBm b3IgYWxsIGV2ZW50cyBhcmUgZW5hYmxlZC4gICovCisgICAgICAvL1RPRE8K KyAgICAgIGdvbXBfZGVidWcgKDAsICIgICVzOiBkb24ndCBoYXZlIGFueSBw ZXItdGhyZWFkIHN0YXRlIHlldFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoY2hlY2tfbm90X25lc3RlZF9w KQorCXsKKwkgIC8qIE5vIG5lc3RpbmcuICAqLworCSAgYXNzZXJ0ICh0aHIt PnByb2ZfaW5mbyA9PSBOVUxMKTsKKwkgIGFzc2VydCAodGhyLT5hcGlfaW5m byA9PSBOVUxMKTsKKwl9CisKKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0 ICghdGhyLT5wcm9mX2NhbGxiYWNrc19lbmFibGVkLCB0cnVlKSkKKwl7CisJ ICAvL1RPRE8KKwkgIGdvbXBfZGVidWcgKDAsICIgICVzOiBkaXNhYmxlZCBm b3IgdGhpcyB0aHJlYWRcbiIsIF9fRlVOQ1RJT05fXyk7CisJICByZXR1cm4g ZmFsc2U7CisJfQorICAgIH0KKworICBnb21wX211dGV4X2xvY2sgKCZnb2Fj Y19wcm9mX2xvY2spOworCisgIC8qIGdvYWNjX3Byb2ZfY2FsbGJhY2tzX2Vu YWJsZWRbYWNjX2V2X25vbmVdIGFjdHMgYXMgYSBnbG9iYWwgdG9nZ2xlLiAg Ki8KKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCFnb2FjY19wcm9mX2NhbGxi YWNrc19lbmFibGVkW2FjY19ldl9ub25lXSwgdHJ1ZSkpCisgICAgeworICAg ICAgLy9UT0RPCisgICAgICBnb21wX2RlYnVnICgwLCAiICAlczogZGlzYWJs ZWQgZ2xvYmFsbHlcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICBnb21wX211 dGV4X3VubG9jayAoJmdvYWNjX3Byb2ZfbG9jayk7CisgICAgICByZXR1cm4g ZmFsc2U7CisgICAgfQorCisgIGdvbXBfbXV0ZXhfdW5sb2NrICgmZ29hY2Nf cHJvZl9sb2NrKTsKKworICByZXR1cm4gdHJ1ZTsKK30KKworLyogRGlzcGF0 Y2ggZXZlbnRzLgorCisgICBUT0RPLgorICAgVGhpcyBtdXN0IG9ubHkgYmUg Y2FsbGVkIGlmIGdvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaF9wIHJldHVybmVk IGEgdHJ1ZQorICAgcmVzdWx0LiAgKi8KKwordm9pZAorZ29hY2NfcHJvZmls aW5nX2Rpc3BhdGNoIChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19l dmVudF9pbmZvICpldmVudF9pbmZvLAorCQkJICBhY2NfYXBpX2luZm8gKmFw dF9pbmZvKQoreworICBhY2NfZXZlbnRfdCBldmVudF90eXBlID0gZXZlbnRf aW5mby0+ZXZlbnRfdHlwZTsKKyAgLy9UT0RPCisgIGdvbXBfZGVidWcgKDAs ICIlczogZXZlbnRfdHlwZT0lZFxuIiwgX19GVU5DVElPTl9fLCAoaW50KSBl dmVudF90eXBlKTsKKyAgLy9UT0RPCisgIGFzc2VydCAoZXZlbnRfdHlwZSA+ IGFjY19ldl9ub25lCisJICAmJiBldmVudF90eXBlIDwgYWNjX2V2X2xhc3Qp OworCisgIGdvbXBfbXV0ZXhfbG9jayAoJmdvYWNjX3Byb2ZfbG9jayk7CisK KyAgaWYgKCFnb2FjY19wcm9mX2NhbGxiYWNrc19lbmFibGVkW2V2ZW50X3R5 cGVdKQorICAgIHsKKyAgICAgIC8vVE9ETworICAgICAgZ29tcF9kZWJ1ZyAo MCwgIiAgJXM6IGRpc2FibGVkIGZvciB0aGlzIGV2ZW50IHR5cGVcbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICBnb21wX211dGV4X3VubG9jayAoJmdvYWNj X3Byb2ZfbG9jayk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIGZvciAo c3RydWN0IGdvYWNjX3Byb2ZfY2FsbGJhY2tfZW50cnkgKmUKKwkgPSBnb2Fj Y19wcm9mX2NhbGxiYWNrX2VudHJpZXNbZXZlbnRfdHlwZV07CisgICAgICAg ZSAhPSBOVUxMOworICAgICAgIGUgPSBlLT5uZXh0KQorICAgIHsKKyAgICAg IGlmICghZS0+ZW5hYmxlZCkKKwl7CisJICAvL1RPRE8KKwkgIGdvbXBfZGVi dWcgKDAsICIgICVzOiBkaXNhYmxlZCBmb3IgY2FsbGJhY2sgJXBcbiIsCisJ CSAgICAgIF9fRlVOQ1RJT05fXywgZS0+Y2IpOworCSAgY29udGludWU7CisJ fQorCisgICAgICAvL1RPRE8KKyAgICAgIGdvbXBfZGVidWcgKDAsICIgICVz OiBjYWxsaW5nIGNhbGxiYWNrICVwXG4iLCBfX0ZVTkNUSU9OX18sIGUtPmNi KTsKKyAgICAgIGUtPmNiIChwcm9mX2luZm8sIGV2ZW50X2luZm8sIGFwdF9p bmZvKTsKKyAgICB9CisKKyAgZ29tcF9tdXRleF91bmxvY2sgKCZnb2FjY19w cm9mX2xvY2spOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9wbHVnaW4vcGx1 Z2luLW52cHR4LmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwpp bmRleCBjYjE4ZTg3Li4xYjZmMmQ0IDEwMDY0NAotLS0gYS9saWJnb21wL3Bs dWdpbi9wbHVnaW4tbnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVn aW4tbnZwdHguYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImxpYmdv bXAtcGx1Z2luLmgiCiAjaW5jbHVkZSAib2FjYy1wbHVnaW4uaCIKICNpbmNs dWRlICJnb21wLWNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm9hY2MtaW50Lmgi CiAKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8Y3VkYS5oPgpA QCAtOTAzLDExICs5MDQsNTQgQEAgbnZwdHhfZXhlYyAodm9pZCAoKmZuKSwg c2l6ZV90IG1hcG51bSwgdm9pZCAqKmhvc3RhZGRycywgdm9pZCAqKmRldmFk ZHJzLAogICAvLyBudW1fZ2FuZ3MJCW5jdGFpZC54CiAgIC8vIG51bV93b3Jr ZXJzCW50aWQueQogICAvLyB2ZWN0b3IgbGVuZ3RoCW50aWQueAorCisgIHN0 cnVjdCBnb2FjY190aHJlYWQgKnRociA9IEdPTVBfUExVR0lOX2dvYWNjX3Ro cmVhZCAoKTsKKyAgYWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvID0gdGhyLT5w cm9mX2luZm87CisgIGFjY19ldmVudF9pbmZvIGVucXVldWVfbGF1bmNoX2V2 ZW50X2luZm87CisgIGFjY19hcGlfaW5mbyAqYXBpX2luZm8gPSB0aHItPmFw aV9pbmZvOworICBib29sIHByb2ZpbGluZ19kaXNwYXRjaF9wID0gX19idWls dGluX2V4cGVjdCAocHJvZl9pbmZvICE9IE5VTEwsIGZhbHNlKTsKKyAgaWYg KHByb2ZpbGluZ19kaXNwYXRjaF9wKQorICAgIHsKKyAgICAgIHByb2ZfaW5m by0+ZXZlbnRfdHlwZSA9IGFjY19ldl9lbnF1ZXVlX2xhdW5jaF9zdGFydDsK KworICAgICAgZW5xdWV1ZV9sYXVuY2hfZXZlbnRfaW5mby5sYXVuY2hfZXZl bnQuZXZlbnRfdHlwZQorCT0gcHJvZl9pbmZvLT5ldmVudF90eXBlOworICAg ICAgZW5xdWV1ZV9sYXVuY2hfZXZlbnRfaW5mby5sYXVuY2hfZXZlbnQudmFs aWRfYnl0ZXMKKwk9IF9BQ0NfTEFVTkNIX0VWRU5UX0lORk9fVkFMSURfQllU RVM7CisgICAgICBlbnF1ZXVlX2xhdW5jaF9ldmVudF9pbmZvLmxhdW5jaF9l dmVudC5wYXJlbnRfY29uc3RydWN0CisJLyogVE9ETyA9IGNvbXB1dGVfY29u c3RydWN0X2V2ZW50X2luZm8ub3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVj dCAqLworCT0gYWNjX2NvbnN0cnVjdF9wYXJhbGxlbDsgLy9UT0RPOiBrZXJu ZWxzLi4uCisgICAgICBlbnF1ZXVlX2xhdW5jaF9ldmVudF9pbmZvLmxhdW5j aF9ldmVudC5pbXBsaWNpdCA9IDE7CisgICAgICBlbnF1ZXVlX2xhdW5jaF9l dmVudF9pbmZvLmxhdW5jaF9ldmVudC50b29sX2luZm8gPSBOVUxMOworICAg ICAgZW5xdWV1ZV9sYXVuY2hfZXZlbnRfaW5mby5sYXVuY2hfZXZlbnQua2Vy bmVsX25hbWUKKwk9IC8qIFRPRE8gKi8gKGNoYXIgKikgLyogVE9ETyAqLyB0 YXJnX2ZuLT5sYXVuY2gtPmZuOworICAgICAgZW5xdWV1ZV9sYXVuY2hfZXZl bnRfaW5mby5sYXVuY2hfZXZlbnQubnVtX2dhbmdzCisJPSBkaW1zW0dPTVBf RElNX0dBTkddOworICAgICAgZW5xdWV1ZV9sYXVuY2hfZXZlbnRfaW5mby5s YXVuY2hfZXZlbnQubnVtX3dvcmtlcnMKKwk9IGRpbXNbR09NUF9ESU1fV09S S0VSXTsKKyAgICAgIGVucXVldWVfbGF1bmNoX2V2ZW50X2luZm8ubGF1bmNo X2V2ZW50LnZlY3Rvcl9sZW5ndGgKKwk9IGRpbXNbR09NUF9ESU1fVkVDVE9S XTsKKworICAgICAgYXBpX2luZm8tPmRldmljZV9hcGkgPSBhY2NfZGV2aWNl X2FwaV9jdWRhOworCisgICAgICBHT01QX1BMVUdJTl9nb2FjY19wcm9maWxp bmdfZGlzcGF0Y2ggKHByb2ZfaW5mbywgJmVucXVldWVfbGF1bmNoX2V2ZW50 X2luZm8sCisJCQkJCSAgICBhcGlfaW5mbyk7CisgICAgfQorCiAgIENVREFf Q0FMTF9BU1NFUlQgKGN1TGF1bmNoS2VybmVsLCBmdW5jdGlvbiwKIAkJICAg IGRpbXNbR09NUF9ESU1fR0FOR10sIDEsIDEsCiAJCSAgICBkaW1zW0dPTVBf RElNX1ZFQ1RPUl0sIGRpbXNbR09NUF9ESU1fV09SS0VSXSwgMSwKIAkJICAg IDAsIHN0cmVhbSwga2FyZ3MsIDApOwogCisgIGlmIChwcm9maWxpbmdfZGlz cGF0Y2hfcCkKKyAgICB7CisgICAgICBwcm9mX2luZm8tPmV2ZW50X3R5cGUg PSBhY2NfZXZfZW5xdWV1ZV9sYXVuY2hfZW5kOworICAgICAgZW5xdWV1ZV9s YXVuY2hfZXZlbnRfaW5mby5sYXVuY2hfZXZlbnQuZXZlbnRfdHlwZQorCT0g cHJvZl9pbmZvLT5ldmVudF90eXBlOworICAgICAgR09NUF9QTFVHSU5fZ29h Y2NfcHJvZmlsaW5nX2Rpc3BhdGNoIChwcm9mX2luZm8sICZlbnF1ZXVlX2xh dW5jaF9ldmVudF9pbmZvLAorCQkJCQkgICAgYXBpX2luZm8pOworICAgIH0K KwogICBHT01QX1BMVUdJTl9kZWJ1ZyAoMCwgIiAgJXM6IGtlcm5lbCAlczog ZmluaXNoZWRcbiIsIF9fRlVOQ1RJT05fXywKIAkJICAgICB0YXJnX2ZuLT5s YXVuY2gtPmZuKTsKIH0KQEAgLTkyMCw2ICs5NjQsMzYgQEAgbnZwdHhfYWxs b2MgKHNpemVfdCBzKQogICBDVWRldmljZXB0ciBkOwogCiAgIENVREFfQ0FM TF9FUkVUIChOVUxMLCBjdU1lbUFsbG9jLCAmZCwgcyk7CisKKyAgc3RydWN0 IGdvYWNjX3RocmVhZCAqdGhyID0gR09NUF9QTFVHSU5fZ29hY2NfdGhyZWFk ICgpOworICBib29sIHByb2ZpbGluZ19kaXNwYXRjaF9wCisgICAgPSBfX2J1 aWx0aW5fZXhwZWN0ICh0aHIgIT0gTlVMTCAmJiB0aHItPnByb2ZfaW5mbyAh PSBOVUxMLCBmYWxzZSk7CisgIGlmIChwcm9maWxpbmdfZGlzcGF0Y2hfcCkK KyAgICB7CisgICAgICBhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8gPSB0aHIt PnByb2ZfaW5mbzsKKyAgICAgIGFjY19ldmVudF9pbmZvIGRhdGFfZXZlbnRf aW5mbzsKKyAgICAgIGFjY19hcGlfaW5mbyAqYXBpX2luZm8gPSB0aHItPmFw aV9pbmZvOworCisgICAgICBwcm9mX2luZm8tPmV2ZW50X3R5cGUgPSBhY2Nf ZXZfYWxsb2M7CisKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50 LmV2ZW50X3R5cGUgPSBwcm9mX2luZm8tPmV2ZW50X3R5cGU7CisgICAgICBk YXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC52YWxpZF9ieXRlcworCT0gX0FD Q19EQVRBX0VWRU5UX0lORk9fVkFMSURfQllURVM7CisgICAgICBkYXRhX2V2 ZW50X2luZm8uZGF0YV9ldmVudC5wYXJlbnRfY29uc3RydWN0CisJPSBhY2Nf Y29uc3RydWN0X3BhcmFsbGVsOyAvL1RPRE8KKyAgICAgIGRhdGFfZXZlbnRf aW5mby5kYXRhX2V2ZW50LmltcGxpY2l0ID0gMTsgLy9UT0RPCisgICAgICBk YXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC50b29sX2luZm8gPSBOVUxMOwor ICAgICAgZGF0YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQudmFyX25hbWUgPSBO VUxMOyAvL1RPRE8KKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50 LmJ5dGVzID0gczsKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50 Lmhvc3RfcHRyID0gTlVMTDsKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRh X2V2ZW50LmRldmljZV9wdHIgPSAodm9pZCAqKSBkOworCisgICAgICBhcGlf aW5mby0+ZGV2aWNlX2FwaSA9IGFjY19kZXZpY2VfYXBpX2N1ZGE7CisKKyAg ICAgIEdPTVBfUExVR0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaCAocHJv Zl9pbmZvLCAmZGF0YV9ldmVudF9pbmZvLAorCQkJCQkgICAgYXBpX2luZm8p OworICAgIH0KKwogICByZXR1cm4gKHZvaWQgKikgZDsKIH0KIApAQCAtOTUw LDYgKzEwMjQsMzYgQEAgbnZwdHhfZnJlZSAodm9pZCAqcCwgc3RydWN0IHB0 eF9kZXZpY2UgKnB0eF9kZXYpCiAgICAgfQogCiAgIENVREFfQ0FMTCAoY3VN ZW1GcmVlLCAoQ1VkZXZpY2VwdHIpIHApOworCisgIHN0cnVjdCBnb2FjY190 aHJlYWQgKnRociA9IEdPTVBfUExVR0lOX2dvYWNjX3RocmVhZCAoKTsKKyAg Ym9vbCBwcm9maWxpbmdfZGlzcGF0Y2hfcAorICAgID0gX19idWlsdGluX2V4 cGVjdCAodGhyICE9IE5VTEwgJiYgdGhyLT5wcm9mX2luZm8gIT0gTlVMTCwg ZmFsc2UpOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3ApCisgICAgewor ICAgICAgYWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvID0gdGhyLT5wcm9mX2lu Zm87CisgICAgICBhY2NfZXZlbnRfaW5mbyBkYXRhX2V2ZW50X2luZm87Cisg ICAgICBhY2NfYXBpX2luZm8gKmFwaV9pbmZvID0gdGhyLT5hcGlfaW5mbzsK KworICAgICAgcHJvZl9pbmZvLT5ldmVudF90eXBlID0gYWNjX2V2X2ZyZWU7 CisKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50LmV2ZW50X3R5 cGUgPSBwcm9mX2luZm8tPmV2ZW50X3R5cGU7CisgICAgICBkYXRhX2V2ZW50 X2luZm8uZGF0YV9ldmVudC52YWxpZF9ieXRlcworCT0gX0FDQ19EQVRBX0VW RU5UX0lORk9fVkFMSURfQllURVM7CisgICAgICBkYXRhX2V2ZW50X2luZm8u ZGF0YV9ldmVudC5wYXJlbnRfY29uc3RydWN0CisJPSBhY2NfY29uc3RydWN0 X3BhcmFsbGVsOyAvL1RPRE8KKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRh X2V2ZW50LmltcGxpY2l0ID0gMTsgLy9UT0RPCisgICAgICBkYXRhX2V2ZW50 X2luZm8uZGF0YV9ldmVudC50b29sX2luZm8gPSBOVUxMOworICAgICAgZGF0 YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQudmFyX25hbWUgPSBOVUxMOyAvL1RP RE8KKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50LmJ5dGVzID0g cHM7CisgICAgICBkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5ob3N0X3B0 ciA9IE5VTEw7CisgICAgICBkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5k ZXZpY2VfcHRyID0gcDsKKworICAgICAgYXBpX2luZm8tPmRldmljZV9hcGkg PSBhY2NfZGV2aWNlX2FwaV9jdWRhOworCisgICAgICBHT01QX1BMVUdJTl9n b2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKHByb2ZfaW5mbywgJmRhdGFfZXZl bnRfaW5mbywKKwkJCQkJICAgIGFwaV9pbmZvKTsKKyAgICB9CisKICAgcmV0 dXJuIHRydWU7CiB9CiAKQEAgLTEzNTUsMTAgKzE0NTksNDcgQEAgb3BlbmFj Y19leGVjX2ludGVybmFsICh2b2lkICgqZm4pICh2b2lkICopLCBpbnQgcGFy YW1zLCBzaXplX3QgbWFwbnVtLAogCiAgIC8qIENvcHkgdGhlIChkZXZpY2Up IHBvaW50ZXJzIHRvIGFyZ3VtZW50cyB0byB0aGUgZGV2aWNlIChkcCBhbmQg aHAgbWlnaHQgaW4KICAgICAgZmFjdCBoYXZlIHRoZSBzYW1lIHZhbHVlIG9u IGEgdW5pZmllZC1tZW1vcnkgc3lzdGVtKS4gICovCisgIHN0cnVjdCBnb2Fj Y190aHJlYWQgKnRociA9IEdPTVBfUExVR0lOX2dvYWNjX3RocmVhZCAoKTsK KyAgYWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvID0gdGhyLT5wcm9mX2luZm87 CisgIGFjY19ldmVudF9pbmZvIGRhdGFfZXZlbnRfaW5mbzsKKyAgYWNjX2Fw aV9pbmZvICphcGlfaW5mbyA9IHRoci0+YXBpX2luZm87CisgIGJvb2wgcHJv ZmlsaW5nX2Rpc3BhdGNoX3AgPSBfX2J1aWx0aW5fZXhwZWN0IChwcm9mX2lu Zm8gIT0gTlVMTCwgZmFsc2UpOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNo X3ApCisgICAgeworICAgICAgcHJvZl9pbmZvLT5ldmVudF90eXBlID0gYWNj X2V2X2VucXVldWVfdXBsb2FkX3N0YXJ0OworCisgICAgICBkYXRhX2V2ZW50 X2luZm8uZGF0YV9ldmVudC5ldmVudF90eXBlID0gcHJvZl9pbmZvLT5ldmVu dF90eXBlOworICAgICAgZGF0YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQudmFs aWRfYnl0ZXMKKwk9IF9BQ0NfREFUQV9FVkVOVF9JTkZPX1ZBTElEX0JZVEVT OworICAgICAgZGF0YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQucGFyZW50X2Nv bnN0cnVjdAorCT0gYWNjX2NvbnN0cnVjdF9wYXJhbGxlbDsgLy9UT0RPCisg ICAgICAvKiBBbHdheXMgaW1wbGljaXQgZm9yICJkYXRhIG1hcHBpbmcgYXJn dW1lbnRzIGZvciBjdUxhdW5jaEtlcm5lbCIuICAqLworICAgICAgZGF0YV9l dmVudF9pbmZvLmRhdGFfZXZlbnQuaW1wbGljaXQgPSAxOworICAgICAgZGF0 YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQudG9vbF9pbmZvID0gTlVMTDsKKyAg ICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50LnZhcl9uYW1lID0gTlVM TDsgLy9UT0RPCisgICAgICBkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5i eXRlcyA9IG1hcG51bSAqIHNpemVvZiAodm9pZCAqKTsKKyAgICAgIGRhdGFf ZXZlbnRfaW5mby5kYXRhX2V2ZW50Lmhvc3RfcHRyID0gaHA7CisgICAgICBp ZiAoIXBhcmFtcykKKwlkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5kZXZp Y2VfcHRyID0gKHZvaWQgKikgZHA7CisKKyAgICAgIGFwaV9pbmZvLT5kZXZp Y2VfYXBpID0gYWNjX2RldmljZV9hcGlfY3VkYTsKKworICAgICAgR09NUF9Q TFVHSU5fZ29hY2NfcHJvZmlsaW5nX2Rpc3BhdGNoIChwcm9mX2luZm8sICZk YXRhX2V2ZW50X2luZm8sCisJCQkJCSAgICBhcGlfaW5mbyk7CisgICB9CisK ICAgaWYgKCFwYXJhbXMgJiYgbWFwbnVtID4gMCkKICAgICBDVURBX0NBTExf QVNTRVJUIChjdU1lbWNweUh0b0QsIGRwLCAodm9pZCAqKSBocCwKIAkJICAg ICAgbWFwbnVtICogc2l6ZW9mICh2b2lkICopKTsKIAorICBpZiAocHJvZmls aW5nX2Rpc3BhdGNoX3ApCisgICAgeworICAgICAgcHJvZl9pbmZvLT5ldmVu dF90eXBlID0gYWNjX2V2X2VucXVldWVfdXBsb2FkX2VuZDsKKyAgICAgIGRh dGFfZXZlbnRfaW5mby5kYXRhX2V2ZW50LmV2ZW50X3R5cGUgPSBwcm9mX2lu Zm8tPmV2ZW50X3R5cGU7CisgICAgICBHT01QX1BMVUdJTl9nb2FjY19wcm9m aWxpbmdfZGlzcGF0Y2ggKHByb2ZfaW5mbywgJmRhdGFfZXZlbnRfaW5mbywK KwkJCQkJICAgIGFwaV9pbmZvKTsKKyAgICB9CisKICAgaWYgKHBhcmFtcykK ICAgICBudnB0eF9leGVjIChmbiwgbWFwbnVtLCBob3N0YWRkcnMsIGRldmFk ZHJzLCBkaW1zLCB0YXJnX21lbV9kZXNjLAogCQlocCwgTlVMTCk7CkBAIC0x NDM5LDYgKzE1ODAsMzUgQEAgb3BlbmFjY19hc3luY19leGVjX2ludGVybmFs ICh2b2lkICgqZm4pICh2b2lkICopLCBpbnQgcGFyYW1zLCBzaXplX3QgbWFw bnVtLAogCiAgIC8qIENvcHkgdGhlIChkZXZpY2UpIHBvaW50ZXJzIHRvIGFy Z3VtZW50cyB0byB0aGUgZGV2aWNlIChkcCBhbmQgaHAgbWlnaHQgaW4KICAg ICAgZmFjdCBoYXZlIHRoZSBzYW1lIHZhbHVlIG9uIGEgdW5pZmllZC1tZW1v cnkgc3lzdGVtKS4gICovCisgIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9 IEdPTVBfUExVR0lOX2dvYWNjX3RocmVhZCAoKTsKKyAgYWNjX3Byb2ZfaW5m byAqcHJvZl9pbmZvID0gdGhyLT5wcm9mX2luZm87CisgIGFjY19ldmVudF9p bmZvIGRhdGFfZXZlbnRfaW5mbzsKKyAgYWNjX2FwaV9pbmZvICphcGlfaW5m byA9IHRoci0+YXBpX2luZm87CisgIGJvb2wgcHJvZmlsaW5nX2Rpc3BhdGNo X3AgPSBfX2J1aWx0aW5fZXhwZWN0IChwcm9mX2luZm8gIT0gTlVMTCwgZmFs c2UpOworICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3ApCisgICAgeworICAg ICAgcHJvZl9pbmZvLT5ldmVudF90eXBlID0gYWNjX2V2X2VucXVldWVfdXBs b2FkX3N0YXJ0OworCisgICAgICBkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVu dC5ldmVudF90eXBlID0gcHJvZl9pbmZvLT5ldmVudF90eXBlOworICAgICAg ZGF0YV9ldmVudF9pbmZvLmRhdGFfZXZlbnQudmFsaWRfYnl0ZXMKKwk9IF9B Q0NfREFUQV9FVkVOVF9JTkZPX1ZBTElEX0JZVEVTOworICAgICAgZGF0YV9l dmVudF9pbmZvLmRhdGFfZXZlbnQucGFyZW50X2NvbnN0cnVjdAorCT0gYWNj X2NvbnN0cnVjdF9wYXJhbGxlbDsgLy9UT0RPCisgICAgICAvKiBBbHdheXMg aW1wbGljaXQgZm9yICJkYXRhIG1hcHBpbmcgYXJndW1lbnRzIGZvciBjdUxh dW5jaEtlcm5lbCIuICAqLworICAgICAgZGF0YV9ldmVudF9pbmZvLmRhdGFf ZXZlbnQuaW1wbGljaXQgPSAxOworICAgICAgZGF0YV9ldmVudF9pbmZvLmRh dGFfZXZlbnQudG9vbF9pbmZvID0gTlVMTDsKKyAgICAgIGRhdGFfZXZlbnRf aW5mby5kYXRhX2V2ZW50LnZhcl9uYW1lID0gTlVMTDsgLy9UT0RPCisgICAg ICBkYXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5ieXRlcyA9IG1hcG51bSAq IHNpemVvZiAodm9pZCAqKTsKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRh X2V2ZW50Lmhvc3RfcHRyID0gaHA7CisgICAgICBpZiAoIXBhcmFtcykKKwlk YXRhX2V2ZW50X2luZm8uZGF0YV9ldmVudC5kZXZpY2VfcHRyID0gKHZvaWQg KikgZHA7CisKKyAgICAgIGFwaV9pbmZvLT5kZXZpY2VfYXBpID0gYWNjX2Rl dmljZV9hcGlfY3VkYTsKKworICAgICAgR09NUF9QTFVHSU5fZ29hY2NfcHJv ZmlsaW5nX2Rpc3BhdGNoIChwcm9mX2luZm8sICZkYXRhX2V2ZW50X2luZm8s CisJCQkJCSAgICBhcGlfaW5mbyk7CisgICAgfQorCiAgIGlmICghcGFyYW1z ICYmIG1hcG51bSA+IDApCiAgICAgewogICAgICAgQ1VEQV9DQUxMX0FTU0VS VCAoY3VNZW1jcHlIdG9EQXN5bmMsIGRwLCAodm9pZCAqKSBocCwKQEAgLTE0 NTAsNiArMTYyMCwxNCBAQCBvcGVuYWNjX2FzeW5jX2V4ZWNfaW50ZXJuYWwg KHZvaWQgKCpmbikgKHZvaWQgKiksIGludCBwYXJhbXMsIHNpemVfdCBtYXBu dW0sCiAgICAgICBibG9ja1sxXSA9ICh2b2lkICopIG52dGhkLT5wdHhfZGV2 OwogICAgIH0KIAorICBpZiAocHJvZmlsaW5nX2Rpc3BhdGNoX3ApCisgICAg eworICAgICAgcHJvZl9pbmZvLT5ldmVudF90eXBlID0gYWNjX2V2X2VucXVl dWVfdXBsb2FkX2VuZDsKKyAgICAgIGRhdGFfZXZlbnRfaW5mby5kYXRhX2V2 ZW50LmV2ZW50X3R5cGUgPSBwcm9mX2luZm8tPmV2ZW50X3R5cGU7CisgICAg ICBHT01QX1BMVUdJTl9nb2FjY19wcm9maWxpbmdfZGlzcGF0Y2ggKHByb2Zf aW5mbywgJmRhdGFfZXZlbnRfaW5mbywKKwkJCQkJICAgIGFwaV9pbmZvKTsK KyAgICB9CisKICAgaWYgKHBhcmFtcykKICAgICBudnB0eF9leGVjIChmbiwg bWFwbnVtLCBob3N0YWRkcnMsIGRldmFkZHJzLCBkaW1zLCB0YXJnX21lbV9k ZXNjLAogCQlocCwgYXEtPmN1ZGFfc3RyZWFtKTsKZGlmZiAtLWdpdCBhL2xp YmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21tb24vYWNj X3Byb2YtZGlzcGF0Y2gtMS5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJvZi1kaXNwYXRjaC0xLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxZjJiYgotLS0g L2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2Fj Yy1jLWMrKy1jb21tb24vYWNjX3Byb2YtZGlzcGF0Y2gtMS5jCkBAIC0wLDAg KzEsMzQ0IEBACisvKiBUZXN0IGRpc3BhdGNoIG9mIGV2ZW50cyB0byBjYWxs YmFja3MuICAqLworCisjdW5kZWYgTkRFQlVHCisjaW5jbHVkZSA8YXNzZXJ0 Lmg+CisKKyNpbmNsdWRlIDxhY2NfcHJvZi5oPgorCisvKiBVc2UgZXhwbGlj aXQgY29weWluIGNsYXVzZXMsIHRvIHdvcmsgYXJvdW5kIGZpcnN0cHJpdmF0 ZSBvcHRpbWl6YXRpb25zLAorICAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgdmFs dWUgYXQgdGhlIHBvaW50IG9mIGNhbGwgdG8gYmUgdXNlZCAoKmJlZm9yZSog YW55CisgICBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBkb25lIGluIGNhbGxi YWNrcyksIGFzIG9wcG9zZWQgdG8gaXRzIGFkZHJlc3MgYmVpbmcKKyAgIHRh a2VuLCB3aGljaCB0aGVuIGxhdGVyIGdldHMgZGVyZWZlcmVuY2VkICgqYWZ0 ZXIqIGFueSBtb2RpZmljYXRpb25zIGRvbmUgaW4KKyAgIGNhbGxiYWNrcyku ICAqLworI2RlZmluZSBDT1BZSU4oLi4uKSBjb3B5aW4oX19WQV9BUkdTX18p CisKKyNkZWZpbmUgREVCVUdfcHJpbnRmKC4uLikgLy9fX2J1aWx0aW5fcHJp bnRmIChfX1ZBX0FSR1NfXykKKworc3RhdGljIGludCBzdGF0ZSA9IC0xOwor I2RlZmluZSBTVEFURV9PUChzdGF0ZSwgb3ApXAorICBkbyBcCisgICAgeyBc CisgICAgICB0eXBlb2YgKHN0YXRlKSBzdGF0ZV9vID0gKHN0YXRlKTsgXAor ICAgICAgKHZvaWQpIHN0YXRlX287IFwKKyAgICAgIChzdGF0ZSlvcDsgXAor ICAgICAgREVCVUdfcHJpbnRmKCJzdGF0ZTogJWQgLT4gJWRcbiIsIHN0YXRl X28sIChzdGF0ZSkpOyBcCisgICAgfSBcCisgIHdoaWxlICgwKQorCit2b2lk IGNiX2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0XzEgKGFjY19wcm9mX2luZm8g KnByb2ZfaW5mbywgYWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8sIGFjY19h cGlfaW5mbyAqYXBpX2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzXG4i LCBfX0ZVTkNUSU9OX18pOworCisgIGFzc2VydCAoc3RhdGUgPT0gMAorCSAg fHwgc3RhdGUgPT0gMTAKKwkgIHx8IHN0YXRlID09IDMwCisJICB8fCBzdGF0 ZSA9PSA0MQorCSAgfHwgc3RhdGUgPT0gNTEKKwkgIHx8IHN0YXRlID09IDkx CisJICB8fCBzdGF0ZSA9PSAxMDEKKwkgIHx8IHN0YXRlID09IDE1MSk7Cisg IFNUQVRFX09QIChzdGF0ZSwgKyspOworfQorCit2b2lkIGNiX2NvbXB1dGVf Y29uc3RydWN0X3N0YXJ0XzIgKGFjY19wcm9mX2luZm8gKnByb2ZfaW5mbywg YWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8sIGFjY19hcGlfaW5mbyAqYXBp X2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzXG4iLCBfX0ZVTkNUSU9O X18pOworCisgIGFzc2VydCAoc3RhdGUgPT0gMQorCSAgfHwgc3RhdGUgPT0g MTEKKwkgIHx8IHN0YXRlID09IDQwCisJICB8fCBzdGF0ZSA9PSA1MAorCSAg fHwgc3RhdGUgPT0gOTAKKwkgIHx8IHN0YXRlID09IDEwMAorCSAgfHwgc3Rh dGUgPT0gMTUwKTsKKyAgU1RBVEVfT1AgKHN0YXRlLCArKyk7Cit9CisKK3Zv aWQgY2JfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kXzEgKGFjY19wcm9mX2luZm8g KnByb2ZfaW5mbywgYWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8sIGFjY19h cGlfaW5mbyAqYXBpX2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzXG4i LCBfX0ZVTkNUSU9OX18pOworCisgIGFzc2VydCAoc3RhdGUgPT0gMTQKKwkg IHx8IHN0YXRlID09IDIxCisJICB8fCBzdGF0ZSA9PSAzMgorCSAgfHwgc3Rh dGUgPT0gNDIKKwkgIHx8IHN0YXRlID09IDgwCisJICB8fCBzdGF0ZSA9PSAx MDMKKwkgIHx8IHN0YXRlID09IDE1Mik7CisgIFNUQVRFX09QIChzdGF0ZSwg KyspOworfQorCit2b2lkIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8yIChh Y2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVu dF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19w cmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworICBhc3NlcnQgKHN0 YXRlID09IDEzCisJICB8fCBzdGF0ZSA9PSA0MworCSAgfHwgc3RhdGUgPT0g MTAyCisJICB8fCBzdGF0ZSA9PSAxNTQpOworICBTVEFURV9PUCAoc3RhdGUs ICsrKTsKK30KKwordm9pZCBjYl9jb21wdXRlX2NvbnN0cnVjdF9lbmRfMyAo YWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZl bnRfaW5mbywgYWNjX2FwaV9pbmZvICphcGlfaW5mbykKK3sKKyAgREVCVUdf cHJpbnRmICgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKyAgYXNzZXJ0IChz dGF0ZSA9PSAxMgorCSAgfHwgc3RhdGUgPT0gMjAKKwkgIHx8IHN0YXRlID09 IDMxCisJICB8fCBzdGF0ZSA9PSA0NAorCSAgfHwgc3RhdGUgPT0gODEKKwkg IHx8IHN0YXRlID09IDEwNAorCSAgfHwgc3RhdGUgPT0gMTUzKTsKKyAgU1RB VEVfT1AgKHN0YXRlLCArKyk7Cit9CisKK3N0YXRpYyBhY2NfcHJvZl9yZWcg cmVnOworc3RhdGljIGFjY19wcm9mX3JlZyB1bnJlZzsKK3N0YXRpYyBhY2Nf cHJvZl9sb29rdXBfZnVuYyBsb29rdXA7Cit2b2lkIGFjY19yZWdpc3Rlcl9s aWJyYXJ5IChhY2NfcHJvZl9yZWcgcmVnXywgYWNjX3Byb2ZfcmVnIHVucmVn XywgYWNjX3Byb2ZfbG9va3VwX2Z1bmMgbG9va3VwXykKK3sKKyAgREVCVUdf cHJpbnRmICgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKyAgcmVnID0gcmVn XzsKKyAgdW5yZWcgPSB1bnJlZ187CisgIGxvb2t1cCA9IGxvb2t1cF87Cit9 CisKK2ludCBtYWluKCkKK3sKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDApOwor ICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCwgY2JfY29t cHV0ZV9jb25zdHJ1Y3Rfc3RhcnRfMSwgYWNjX3JlZyk7CisgIHJlZyAoYWNj X2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0LCBjYl9jb21wdXRlX2NvbnN0 cnVjdF9zdGFydF8xLCBhY2NfcmVnKTsKKyAgcmVnIChhY2NfZXZfY29tcHV0 ZV9jb25zdHJ1Y3Rfc3RhcnQsIGNiX2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0 XzIsIGFjY19yZWcpOworICB7CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJh Z21hIGFjYyBwYXJhbGxlbCBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVf aW5pdCkKKyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAg fQorICAgIGFzc2VydCAoc3RhdGVfaW5pdCA9PSAyKTsKKyAgfQorICBhc3Nl cnQgKHN0YXRlID09IDIpOworCisgIFNUQVRFX09QIChzdGF0ZSwgPSAxMCk7 CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X2VuZCwgY2JfY29t cHV0ZV9jb25zdHJ1Y3RfZW5kXzEsIGFjY19yZWcpOworICByZWcgKGFjY19l dl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0 X2VuZF8yLCBhY2NfcmVnKTsKKyAgcmVnIChhY2NfZXZfY29tcHV0ZV9jb25z dHJ1Y3RfZW5kLCBjYl9jb21wdXRlX2NvbnN0cnVjdF9lbmRfMywgYWNjX3Jl Zyk7CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X2VuZCwgY2Jf Y29tcHV0ZV9jb25zdHJ1Y3RfZW5kXzIsIGFjY19yZWcpOworICByZWcgKGFj Y19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3Ry dWN0X2VuZF8zLCBhY2NfcmVnKTsKKyAgcmVnIChhY2NfZXZfY29tcHV0ZV9j b25zdHJ1Y3RfZW5kLCBjYl9jb21wdXRlX2NvbnN0cnVjdF9lbmRfMywgYWNj X3JlZyk7CisgIHsKKyAgICBpbnQgc3RhdGVfaW5pdDsKKyNwcmFnbWEgYWNj IHBhcmFsbGVsIENPUFlJTihzdGF0ZSkgY29weW91dChzdGF0ZV9pbml0KQor ICAgIHsKKyAgICAgIHN0YXRlX2luaXQgPSBzdGF0ZTsKKyAgICB9CisgICAg YXNzZXJ0IChzdGF0ZV9pbml0ID09IDEyKTsKKyAgfQorICBhc3NlcnQgKHN0 YXRlID09IDE1KTsKKworICBTVEFURV9PUCAoc3RhdGUsID0gMjApOworICB1 bnJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0LCBjYl9jb21w dXRlX2NvbnN0cnVjdF9zdGFydF8xLCBhY2NfdG9nZ2xlKTsKKyAgdW5yZWcg KGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCwgY2JfY29tcHV0ZV9j b25zdHJ1Y3Rfc3RhcnRfMiwgYWNjX3RvZ2dsZSk7CisgIHVucmVnIChhY2Nf ZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQsIGNiX2NvbXB1dGVfY29uc3Ry dWN0X3N0YXJ0XzEsIGFjY19yZWcpOworICB1bnJlZyAoYWNjX2V2X2NvbXB1 dGVfY29uc3RydWN0X3N0YXJ0LCBjYl9jb21wdXRlX2NvbnN0cnVjdF9zdGFy dF8yLCBhY2NfcmVnKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0 cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8xLCBhY2NfdG9n Z2xlKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQs IGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8yLCBhY2NfdG9nZ2xlKTsKKyAg dW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1 dGVfY29uc3RydWN0X2VuZF8zLCBhY2NfdG9nZ2xlKTsKKyAgdW5yZWcgKGFj Y19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3Ry dWN0X2VuZF8yLCBhY2NfcmVnKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRl X2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8yLCBh Y2NfcmVnKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9l bmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8yLCBhY2NfdG9nZ2xlKTsK KyAgcmVnIChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kLCBjYl9jb21w dXRlX2NvbnN0cnVjdF9lbmRfMiwgYWNjX3RvZ2dsZSk7CisgIHsKKyAgICBp bnQgc3RhdGVfaW5pdDsKKyNwcmFnbWEgYWNjIHBhcmFsbGVsIENPUFlJTihz dGF0ZSkgY29weW91dChzdGF0ZV9pbml0KQorICAgIHsKKyAgICAgIHN0YXRl X2luaXQgPSBzdGF0ZTsKKyAgICB9CisgICAgYXNzZXJ0IChzdGF0ZV9pbml0 ID09IDIwKTsKKyAgfQorICBhc3NlcnQgKHN0YXRlID09IDIwKTsKKworICBT VEFURV9PUCAoc3RhdGUsID0gMzApOworICByZWcgKGFjY19ldl9jb21wdXRl X2NvbnN0cnVjdF9zdGFydCwgY2JfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnRf MSwgYWNjX3RvZ2dsZSk7CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3Ry dWN0X3N0YXJ0LCBjYl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydF8yLCBhY2Nf dG9nZ2xlKTsKKyAgcmVnIChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5k LCBjYl9jb21wdXRlX2NvbnN0cnVjdF9lbmRfMSwgYWNjX3RvZ2dsZSk7Cisg IHJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X2VuZCwgY2JfY29tcHV0 ZV9jb25zdHJ1Y3RfZW5kXzIsIGFjY190b2dnbGUpOworICByZWcgKGFjY19l dl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0 X2VuZF8zLCBhY2NfdG9nZ2xlKTsKKyAgeworICAgIGludCBzdGF0ZV9pbml0 OworI3ByYWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5b3V0 KHN0YXRlX2luaXQpCisgICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRl OworICAgIH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gMzEpOworICB9 CisgIGFzc2VydCAoc3RhdGUgPT0gMzMpOworCisgIFNUQVRFX09QIChzdGF0 ZSwgPSA0MCk7CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0 YXJ0LCBjYl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydF8yLCBhY2NfcmVnKTsK KyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCwgY2Jf Y29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnRfMSwgYWNjX3JlZyk7CisgIHJlZyAo YWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0LCBjYl9jb21wdXRlX2Nv bnN0cnVjdF9zdGFydF8xLCBhY2NfcmVnKTsKKyAgdW5yZWcgKGFjY19ldl9j b21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2Vu ZF8zLCBhY2NfcmVnKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0 cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8zLCBhY2NfcmVn KTsKKyAgcmVnIChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kLCBjYl9j b21wdXRlX2NvbnN0cnVjdF9lbmRfMiwgYWNjX3JlZyk7CisgIHVucmVnIChh Y2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kLCBjYl9jb21wdXRlX2NvbnN0 cnVjdF9lbmRfMSwgYWNjX3JlZyk7CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVf Y29uc3RydWN0X2VuZCwgY2JfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kXzEsIGFj Y19yZWcpOworICB7CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJhZ21hIGFj YyBwYXJhbGxlbCBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVfaW5pdCkK KyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAgfQorICAg IGFzc2VydCAoc3RhdGVfaW5pdCA9PSA0Mik7CisgIH0KKyAgYXNzZXJ0IChz dGF0ZSA9PSA0NSk7CisKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDUwKTsKKyAg dW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIE5VTEwsIGFj Y190b2dnbGUpOworICB7CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJhZ21h IGFjYyBwYXJhbGxlbCBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVfaW5p dCkKKyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAgfQor ICAgIGFzc2VydCAoc3RhdGVfaW5pdCA9PSA1Mik7CisgIH0KKyAgYXNzZXJ0 IChzdGF0ZSA9PSA1Mik7CisKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDYwKTsK KyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIE5VTEws IGFjY190b2dnbGUpOworICB1bnJlZyAoLyogVE9ETyAqLyAoYWNjX2V2ZW50 X3QpIDAsIE5VTEwsIGFjY190b2dnbGVfcGVyX3RocmVhZCk7CisgIHVucmVn ICgvKiBUT0RPICovIChhY2NfZXZlbnRfdCkgMCwgTlVMTCwgYWNjX3RvZ2ds ZV9wZXJfdGhyZWFkKTsKKyAgeworICAgIGludCBzdGF0ZV9pbml0OworI3By YWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0YXRl X2luaXQpCisgICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRlOworICAg IH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gNjApOworICB9CisgIGFz c2VydCAoc3RhdGUgPT0gNjApOworCisgIFNUQVRFX09QIChzdGF0ZSwgPSA3 MCk7CisgIHVucmVnIChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQs IE5VTEwsIGFjY190b2dnbGUpOworICByZWcgKC8qIFRPRE8gKi8gKGFjY19l dmVudF90KSAwLCBOVUxMLCBhY2NfdG9nZ2xlX3Blcl90aHJlYWQpOworICB7 CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJhZ21hIGFjYyBwYXJhbGxlbCBD T1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVfaW5pdCkKKyAgICB7CisgICAg ICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAgfQorICAgIGFzc2VydCAoc3Rh dGVfaW5pdCA9PSA3MCk7CisgIH0KKyAgYXNzZXJ0IChzdGF0ZSA9PSA3MCk7 CisKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDgwKTsKKyAgdW5yZWcgKGFjY19l dl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0 X2VuZF8yLCBhY2NfcmVnKTsKKyAgcmVnIChhY2NfZXZfY29tcHV0ZV9jb25z dHJ1Y3RfZW5kLCBOVUxMLCBhY2NfdG9nZ2xlKTsKKyAgcmVnICgvKiBUT0RP ICovIChhY2NfZXZlbnRfdCkgMCwgTlVMTCwgYWNjX3RvZ2dsZV9wZXJfdGhy ZWFkKTsKKyAgeworICAgIGludCBzdGF0ZV9pbml0OworI3ByYWdtYSBhY2Mg cGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0YXRlX2luaXQpCisg ICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRlOworICAgIH0KKyAgICBh c3NlcnQgKHN0YXRlX2luaXQgPT0gODApOworICB9CisgIGFzc2VydCAoc3Rh dGUgPT0gODIpOworCisgIFNUQVRFX09QIChzdGF0ZSwgPSA5MCk7CisgIHJl ZyAoYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0LCBOVUxMLCBhY2Nf dG9nZ2xlKTsKKyAgdW5yZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9l bmQsIE5VTEwsIGFjY190b2dnbGUpOworICByZWcgKGFjY19ldl9jb21wdXRl X2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29uc3RydWN0X2VuZF8yLCBh Y2NfcmVnKTsKKyAgeworICAgIGludCBzdGF0ZV9pbml0OworI3ByYWdtYSBh Y2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0YXRlX2luaXQp CisgICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRlOworICAgIH0KKyAg ICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gOTIpOworICB9CisgIGFzc2VydCAo c3RhdGUgPT0gOTIpOworCisgIFNUQVRFX09QIChzdGF0ZSwgPSAxMDApOwor ICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIE5VTEwsIGFj Y190b2dnbGUpOworICB7CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJhZ21h IGFjYyBwYXJhbGxlbCBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVfaW5p dCkKKyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAgfQor ICAgIGFzc2VydCAoc3RhdGVfaW5pdCA9PSAxMDIpOworICB9CisgIGFzc2Vy dCAoc3RhdGUgPT0gMTA1KTsKKworICBTVEFURV9PUCAoc3RhdGUsID0gMTEw KTsKKyAgdW5yZWcgKC8qIFRPRE8gKi8gKGFjY19ldmVudF90KSAwLCBOVUxM LCBhY2NfdG9nZ2xlKTsKKyAgdW5yZWcgKC8qIFRPRE8gKi8gKGFjY19ldmVu dF90KSAwLCBOVUxMLCBhY2NfdG9nZ2xlKTsKKyAgeworICAgIGludCBzdGF0 ZV9pbml0OworI3ByYWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBj b3B5b3V0KHN0YXRlX2luaXQpCisgICAgeworICAgICAgc3RhdGVfaW5pdCA9 IHN0YXRlOworICAgIH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gMTEw KTsKKyAgfQorICBhc3NlcnQgKHN0YXRlID09IDExMCk7CisKKyAgU1RBVEVf T1AgKHN0YXRlLCA9IDEyMCk7CisgIHVucmVnICgvKiBUT0RPICovIChhY2Nf ZXZlbnRfdCkgMCwgTlVMTCwgYWNjX3RvZ2dsZV9wZXJfdGhyZWFkKTsKKyAg eworICAgIGludCBzdGF0ZV9pbml0OworI3ByYWdtYSBhY2MgcGFyYWxsZWwg Q09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0YXRlX2luaXQpCisgICAgeworICAg ICAgc3RhdGVfaW5pdCA9IHN0YXRlOworICAgIH0KKyAgICBhc3NlcnQgKHN0 YXRlX2luaXQgPT0gMTIwKTsKKyAgfQorICBhc3NlcnQgKHN0YXRlID09IDEy MCk7CisKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDEzMCk7CisgIHVucmVnIChh Y2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kLCBjYl9jb21wdXRlX2NvbnN0 cnVjdF9lbmRfMywgYWNjX3JlZyk7CisgIHJlZyAoYWNjX2V2X2NvbXB1dGVf Y29uc3RydWN0X2VuZCwgY2JfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kXzMsIGFj Y19yZWcpOworICByZWcgKC8qIFRPRE8gKi8gKGFjY19ldmVudF90KSAwLCBO VUxMLCBhY2NfdG9nZ2xlKTsKKyAgeworICAgIGludCBzdGF0ZV9pbml0Owor I3ByYWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0 YXRlX2luaXQpCisgICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRlOwor ICAgIH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gMTMwKTsKKyAgfQor ICBhc3NlcnQgKHN0YXRlID09IDEzMCk7CisKKyAgU1RBVEVfT1AgKHN0YXRl LCA9IDE0MCk7CisgIHVucmVnIChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rf c3RhcnQsIGNiX2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0XzEsIGFjY19yZWcp OworICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCwgY2Jf Y29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnRfMSwgYWNjX3JlZyk7CisgIHVucmVn IChhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kLCBjYl9jb21wdXRlX2Nv bnN0cnVjdF9lbmRfMSwgYWNjX3JlZyk7CisgIHJlZyAoYWNjX2V2X2NvbXB1 dGVfY29uc3RydWN0X2VuZCwgY2JfY29tcHV0ZV9jb25zdHJ1Y3RfZW5kXzEs IGFjY19yZWcpOworICB7CisgICAgaW50IHN0YXRlX2luaXQ7CisjcHJhZ21h IGFjYyBwYXJhbGxlbCBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3RhdGVfaW5p dCkKKyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7CisgICAgfQor ICAgIGFzc2VydCAoc3RhdGVfaW5pdCA9PSAxNDApOworICB9CisgIGFzc2Vy dCAoc3RhdGUgPT0gMTQwKTsKKworICBTVEFURV9PUCAoc3RhdGUsID0gMTUw KTsKKyAgcmVnICgvKiBUT0RPICovIChhY2NfZXZlbnRfdCkgMCwgTlVMTCwg YWNjX3RvZ2dsZV9wZXJfdGhyZWFkKTsKKyAgeworICAgIGludCBzdGF0ZV9p bml0OworI3ByYWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0YXRlKSBjb3B5 b3V0KHN0YXRlX2luaXQpCisgICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0 YXRlOworICAgIH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gMTUyKTsK KyAgfQorICBhc3NlcnQgKHN0YXRlID09IDE1NSk7CisKKyAgcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9h Y2MtYy1jKystY29tbW9uL2FjY19wcm9mLWluaXQtMS5jIGIvbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJvZi1p bml0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 MzZmNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJvZi1pbml0LTEuYwpA QCAtMCwwICsxLDMwNiBAQAorLyogVGVzdCBkaXNwYXRjaCBvZiBldmVudHMg dG8gY2FsbGJhY2tzLiAgKi8KKworI3VuZGVmIE5ERUJVRworI2luY2x1ZGUg PGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0 cmluZy5oPgorCisjaW5jbHVkZSA8YWNjX3Byb2YuaD4KKworLyogVXNlIGV4 cGxpY2l0IGNvcHlpbiBjbGF1c2VzLCB0byB3b3JrIGFyb3VuZCBmaXJzdHBy aXZhdGUgb3B0aW1pemF0aW9ucywKKyAgIHdoaWNoIHdpbGwgY2F1c2UgdGhl IHZhbHVlIGF0IHRoZSBwb2ludCBvZiBjYWxsIHRvIGJlIHVzZWQgKCpiZWZv cmUqIGFueQorICAgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMgZG9uZSBpbiBj YWxsYmFja3MpLCBhcyBvcHBvc2VkIHRvIGl0cyBhZGRyZXNzIGJlaW5nCisg ICB0YWtlbiwgd2hpY2ggdGhlbiBsYXRlciBnZXRzIGRlcmVmZXJlbmNlZCAo KmFmdGVyKiBhbnkgbW9kaWZpY2F0aW9ucyBkb25lIGluCisgICBjYWxsYmFj a3MpLiAgKi8KKyNkZWZpbmUgQ09QWUlOKC4uLikgY29weWluKF9fVkFfQVJH U19fKQorCisjZGVmaW5lIERFQlVHX3ByaW50ZiguLi4pIC8vX19idWlsdGlu X3ByaW50ZiAoX19WQV9BUkdTX18pCisKK3N0YXRpYyBpbnQgc3RhdGUgPSAt MTsKKyNkZWZpbmUgU1RBVEVfT1Aoc3RhdGUsIG9wKVwKKyAgZG8gXAorICAg IHsgXAorICAgICAgdHlwZW9mIChzdGF0ZSkgc3RhdGVfbyA9IChzdGF0ZSk7 IFwKKyAgICAgICh2b2lkKSBzdGF0ZV9vOyBcCisgICAgICAoc3RhdGUpb3A7 IFwKKyAgICAgIERFQlVHX3ByaW50Zigic3RhdGU6ICVkIC0+ICVkXG4iLCBz dGF0ZV9vLCAoc3RhdGUpKTsgXAorICAgIH0gXAorICB3aGlsZSAoMCkKKwor c3RhdGljIGFjY19kZXZpY2VfdCBhY2NfZGV2aWNlX3R5cGU7CitzdGF0aWMg aW50IGFjY19kZXZpY2VfbnVtOworc3RhdGljIGludCBhY2NfYXN5bmM7CisK K3N0cnVjdCB0b29sX2luZm8KK3sKKyAgYWNjX2V2ZW50X2luZm8gZXZlbnRf aW5mbzsKKyAgc3RydWN0IHRvb2xfaW5mbyAqbmVzdGVkOworfTsKK3N0cnVj dCB0b29sX2luZm8gKnRvb2xfaW5mbzsKKwordm9pZCBjYl9kZXZpY2VfaW5p dF9zdGFydCAoYWNjX3Byb2ZfaW5mbyAqcHJvZl9pbmZvLCBhY2NfZXZlbnRf aW5mbyAqZXZlbnRfaW5mbywgYWNjX2FwaV9pbmZvICphcGlfaW5mbykKK3sK KyAgREVCVUdfcHJpbnRmICgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKyAg YXNzZXJ0IChzdGF0ZSA9PSAwCisJICB8fCBzdGF0ZSA9PSAxMDApOworICBT VEFURV9PUCAoc3RhdGUsICsrKTsKKworICBhc3NlcnQgKHRvb2xfaW5mbyA9 PSBOVUxMKTsKKyAgdG9vbF9pbmZvID0gKHN0cnVjdCB0b29sX2luZm8gKikg bWFsbG9jKHNpemVvZiAqdG9vbF9pbmZvKTsKKyAgYXNzZXJ0ICh0b29sX2lu Zm8gIT0gTlVMTCk7CisgIHRvb2xfaW5mby0+bmVzdGVkID0gTlVMTDsKKwor ICBhc3NlcnQgKHByb2ZfaW5mby0+ZXZlbnRfdHlwZSA9PSBhY2NfZXZfZGV2 aWNlX2luaXRfc3RhcnQpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmFsaWRf Ynl0ZXMgPT0gX0FDQ19QUk9GX0lORk9fVkFMSURfQllURVMpOworICBhc3Nl cnQgKHByb2ZfaW5mby0+dmVyc2lvbiA9PSBfQUNDX1BST0ZfSU5GT19WRVJT SU9OKTsKKyAgaWYgKHN0YXRlID09IDEpCisgICAgYXNzZXJ0IChwcm9mX2lu Zm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfaG9zdCk7CisgIGVsc2UK KyAgICBhc3NlcnQgKHByb2ZfaW5mby0+ZGV2aWNlX3R5cGUgPT0gYWNjX2Rl dmljZV9kZWZhdWx0KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmRldmljZV9u dW1iZXIgPT0gYWNjX2RldmljZV9udW0pOworICBhc3NlcnQgKHByb2ZfaW5m by0+dGhyZWFkX2lkID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmFz eW5jID09IGFjY19hc3luY19zeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8t PmFzeW5jX3F1ZXVlID09IHByb2ZfaW5mby0+YXN5bmMpOworICBhc3NlcnQg KHByb2ZfaW5mby0+c3JjX2ZpbGUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJv Zl9pbmZvLT5mdW5jX25hbWUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9p bmZvLT5saW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmVu ZF9saW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNf bGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX2Vu ZF9saW5lX25vID09IC0xKTsKKworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90 aGVyX2V2ZW50LmV2ZW50X3R5cGUgPT0gcHJvZl9pbmZvLT5ldmVudF90eXBl KTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC52YWxpZF9i eXRlcyA9PSBfQUNDX09USEVSX0VWRU5UX0lORk9fVkFMSURfQllURVMpOwor ICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnBhcmVudF9jb25z dHJ1Y3QgPT0gYWNjX2NvbnN0cnVjdF9ydW50aW1lX2FwaSk7CisgIGFzc2Vy dCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQuaW1wbGljaXQgPT0gMCk7Cisg IGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQudG9vbF9pbmZvID09 IE5VTEwpOworCisgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9hcGkgPT0g YWNjX2RldmljZV9hcGlfbm9uZSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZh bGlkX2J5dGVzID09IF9BQ0NfQVBJX0lORk9fVkFMSURfQllURVMpOworICBh c3NlcnQgKGFwaV9pbmZvLT5kZXZpY2VfdHlwZSA9PSBwcm9mX2luZm8tPmRl dmljZV90eXBlKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmVuZG9yID09IC0x KTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2hhbmRsZSA9PSBOVUxM KTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+Y29udGV4dF9oYW5kbGUgPT0gTlVM TCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmFzeW5jX2hhbmRsZSA9PSBOVUxM KTsKKworICB0b29sX2luZm8tPmV2ZW50X2luZm8ub3RoZXJfZXZlbnQuZXZl bnRfdHlwZSA9IGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmV2ZW50X3R5cGU7 CisgIGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnRvb2xfaW5mbyA9IHRvb2xf aW5mbzsKK30KKwordm9pZCBjYl9kZXZpY2VfaW5pdF9lbmQgKGFjY19wcm9m X2luZm8gKnByb2ZfaW5mbywgYWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8s IGFjY19hcGlfaW5mbyAqYXBpX2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAo IiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCisgIGFzc2VydCAoc3RhdGUgPT0g MQorCSAgfHwgc3RhdGUgPT0gMTAxKTsKKyAgU1RBVEVfT1AgKHN0YXRlLCAr Kyk7CisKKyAgYXNzZXJ0ICh0b29sX2luZm8gIT0gTlVMTCk7CisgIGFzc2Vy dCAodG9vbF9pbmZvLT5ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5 cGUgPT0gYWNjX2V2X2RldmljZV9pbml0X3N0YXJ0KTsKKworICBhc3NlcnQg KHByb2ZfaW5mby0+ZXZlbnRfdHlwZSA9PSBhY2NfZXZfZGV2aWNlX2luaXRf ZW5kKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnZhbGlkX2J5dGVzID09IF9B Q0NfUFJPRl9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChwcm9mX2lu Zm8tPnZlcnNpb24gPT0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTik7CisgIGlm IChzdGF0ZSA9PSAyKQorICAgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2Vf dHlwZSA9PSBhY2NfZGV2aWNlX2hvc3QpOworICBlbHNlCisgICAgYXNzZXJ0 IChwcm9mX2luZm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfZGVmYXVs dCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09IGFj Y19kZXZpY2VfbnVtKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVhZF9p ZCA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSBhY2Nf YXN5bmNfc3luYyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5hc3luY19xdWV1 ZSA9PSBwcm9mX2luZm8tPmFzeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8t PnNyY19maWxlID09IE5VTEwpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVu Y19uYW1lID09IE5VTEwpOworICBhc3NlcnQgKHByb2ZfaW5mby0+bGluZV9u byA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5lbmRfbGluZV9ubyA9 PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX2xpbmVfbm8gPT0g LTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19lbmRfbGluZV9ubyA9 PSAtMSk7CisKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC5l dmVudF90eXBlID09IHByb2ZfaW5mby0+ZXZlbnRfdHlwZSk7CisgIGFzc2Vy dCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQudmFsaWRfYnl0ZXMgPT0gX0FD Q19PVEhFUl9FVkVOVF9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChl dmVudF9pbmZvLT5vdGhlcl9ldmVudC5wYXJlbnRfY29uc3RydWN0ID09IGFj Y19jb25zdHJ1Y3RfcnVudGltZV9hcGkpOworICBhc3NlcnQgKGV2ZW50X2lu Zm8tPm90aGVyX2V2ZW50LmltcGxpY2l0ID09IDApOworICBhc3NlcnQgKGV2 ZW50X2luZm8tPm90aGVyX2V2ZW50LnRvb2xfaW5mbyA9PSB0b29sX2luZm8p OworCisgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9hcGkgPT0gYWNjX2Rl dmljZV9hcGlfbm9uZSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZhbGlkX2J5 dGVzID09IF9BQ0NfQVBJX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQg KGFwaV9pbmZvLT5kZXZpY2VfdHlwZSA9PSBwcm9mX2luZm8tPmRldmljZV90 eXBlKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmVuZG9yID09IC0xKTsKKyAg YXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2hhbmRsZSA9PSBOVUxMKTsKKyAg YXNzZXJ0IChhcGlfaW5mby0+Y29udGV4dF9oYW5kbGUgPT0gTlVMTCk7Cisg IGFzc2VydCAoYXBpX2luZm8tPmFzeW5jX2hhbmRsZSA9PSBOVUxMKTsKKwor ICBmcmVlICh0b29sX2luZm8pOworICB0b29sX2luZm8gPSBOVUxMOworfQor Cit2b2lkIGNiX2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0IChhY2NfcHJvZl9p bmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVudF9pbmZvLCBh Y2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19wcmludGYgKCIl c1xuIiwgX19GVU5DVElPTl9fKTsKKworICBhc3NlcnQgKHN0YXRlID09IDEw CisJICB8fCBzdGF0ZSA9PSAxMTApOworICBTVEFURV9PUCAoc3RhdGUsICsr KTsKKworICBhc3NlcnQgKHRvb2xfaW5mbyA9PSBOVUxMKTsKKyAgdG9vbF9p bmZvID0gKHN0cnVjdCB0b29sX2luZm8gKikgbWFsbG9jKHNpemVvZiAqdG9v bF9pbmZvKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8gIT0gTlVMTCk7CisgIHRv b2xfaW5mby0+bmVzdGVkID0gTlVMTDsKKworICBhc3NlcnQgKHByb2ZfaW5m by0+ZXZlbnRfdHlwZSA9PSBhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3Rh cnQpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FD Q19QUk9GX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKHByb2ZfaW5m by0+dmVyc2lvbiA9PSBfQUNDX1BST0ZfSU5GT19WRVJTSU9OKTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfdHlw ZSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09IGFj Y19kZXZpY2VfbnVtKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVhZF9p ZCA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSAvKiBU T0RPIGFjY19hc3luYyAqLyBhY2NfYXN5bmNfc3luYyk7CisgIGFzc2VydCAo cHJvZl9pbmZvLT5hc3luY19xdWV1ZSA9PSBwcm9mX2luZm8tPmFzeW5jKTsK KyAgYXNzZXJ0IChwcm9mX2luZm8tPnNyY19maWxlID09IE5VTEwpOworICBh c3NlcnQgKHByb2ZfaW5mby0+ZnVuY19uYW1lID09IE5VTEwpOworICBhc3Nl cnQgKHByb2ZfaW5mby0+bGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAocHJv Zl9pbmZvLT5lbmRfbGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9p bmZvLT5mdW5jX2xpbmVfbm8gPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5m by0+ZnVuY19lbmRfbGluZV9ubyA9PSAtMSk7CisKKyAgYXNzZXJ0IChldmVu dF9pbmZvLT5vdGhlcl9ldmVudC5ldmVudF90eXBlID09IHByb2ZfaW5mby0+ ZXZlbnRfdHlwZSk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZl bnQudmFsaWRfYnl0ZXMgPT0gX0FDQ19PVEhFUl9FVkVOVF9JTkZPX1ZBTElE X0JZVEVTKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC5w YXJlbnRfY29uc3RydWN0ID09IGFjY19jb25zdHJ1Y3RfcGFyYWxsZWwpOwor ICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmltcGxpY2l0ID09 IDApOworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnRvb2xf aW5mbyA9PSBOVUxMKTsKKworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2Vf YXBpID09IGFjY19kZXZpY2VfYXBpX25vbmUpOworICBhc3NlcnQgKGFwaV9p bmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX0FQSV9JTkZPX1ZBTElEX0JZVEVT KTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX3R5cGUgPT0gcHJvZl9p bmZvLT5kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZlbmRv ciA9PSAtMSk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9oYW5kbGUg PT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmNvbnRleHRfaGFuZGxl ID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZvLT5hc3luY19oYW5kbGUg PT0gTlVMTCk7CisKKyAgdG9vbF9pbmZvLT5ldmVudF9pbmZvLm90aGVyX2V2 ZW50LmV2ZW50X3R5cGUgPSBldmVudF9pbmZvLT5vdGhlcl9ldmVudC5ldmVu dF90eXBlOworICBldmVudF9pbmZvLT5vdGhlcl9ldmVudC50b29sX2luZm8g PSB0b29sX2luZm87Cit9CisKK3ZvaWQgY2JfY29tcHV0ZV9jb25zdHJ1Y3Rf ZW5kIChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZv ICpldmVudF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBE RUJVR19wcmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworICBhc3Nl cnQgKHN0YXRlID09IDExCisJICB8fCBzdGF0ZSA9PSAxMTEpOworICBTVEFU RV9PUCAoc3RhdGUsICsrKTsKKworICBhc3NlcnQgKHRvb2xfaW5mbyAhPSBO VUxMKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPmV2ZW50X2luZm8ub3RoZXJf ZXZlbnQuZXZlbnRfdHlwZSA9PSBhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rf c3RhcnQpOworICBhc3NlcnQgKHRvb2xfaW5mby0+bmVzdGVkID09IE5VTEwp OworCisgIGFzc2VydCAocHJvZl9pbmZvLT5ldmVudF90eXBlID09IGFjY19l dl9jb21wdXRlX2NvbnN0cnVjdF9lbmQpOworICBhc3NlcnQgKHByb2ZfaW5m by0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19QUk9GX0lORk9fVkFMSURfQllURVMp OworICBhc3NlcnQgKHByb2ZfaW5mby0+dmVyc2lvbiA9PSBfQUNDX1BST0Zf SU5GT19WRVJTSU9OKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmRldmljZV90 eXBlID09IGFjY19kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAocHJvZl9pbmZv LT5kZXZpY2VfbnVtYmVyID09IGFjY19kZXZpY2VfbnVtKTsKKyAgYXNzZXJ0 IChwcm9mX2luZm8tPnRocmVhZF9pZCA9PSAtMSk7CisgIGlmIChhY2NfZGV2 aWNlX3R5cGUgPT0gYWNjX2RldmljZV9ob3N0KQorICAgIGFzc2VydCAocHJv Zl9pbmZvLT5hc3luYyA9PSBhY2NfYXN5bmNfc3luYyk7CisgIGVsc2UKKyAg ICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmMgPT0gYWNjX2FzeW5jKTsKKyAg YXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jX3F1ZXVlID09IHByb2ZfaW5mby0+ YXN5bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+c3JjX2ZpbGUgPT0gTlVM TCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX25hbWUgPT0gTlVMTCk7 CisgIGFzc2VydCAocHJvZl9pbmZvLT5saW5lX25vID09IC0xKTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPmVuZF9saW5lX25vID09IC0xKTsKKyAgYXNzZXJ0 IChwcm9mX2luZm8tPmZ1bmNfbGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAo cHJvZl9pbmZvLT5mdW5jX2VuZF9saW5lX25vID09IC0xKTsKKworICBhc3Nl cnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmV2ZW50X3R5cGUgPT0gcHJv Zl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5v dGhlcl9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX09USEVSX0VWRU5UX0lO Rk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVy X2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0gYWNjX2NvbnN0cnVjdF9wYXJh bGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQuaW1w bGljaXQgPT0gMCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZl bnQudG9vbF9pbmZvID09IHRvb2xfaW5mbyk7CisKKyAgaWYgKGFjY19kZXZp Y2VfdHlwZSA9PSBhY2NfZGV2aWNlX2hvc3QpCisgICAgYXNzZXJ0IChhcGlf aW5mby0+ZGV2aWNlX2FwaSA9PSBhY2NfZGV2aWNlX2FwaV9ub25lKTsKKyAg ZWxzZQorICAgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9hcGkgPT0gYWNj X2RldmljZV9hcGlfY3VkYSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZhbGlk X2J5dGVzID09IF9BQ0NfQVBJX0lORk9fVkFMSURfQllURVMpOworICBhc3Nl cnQgKGFwaV9pbmZvLT5kZXZpY2VfdHlwZSA9PSBwcm9mX2luZm8tPmRldmlj ZV90eXBlKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmVuZG9yID09IC0xKTsK KyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2hhbmRsZSA9PSBOVUxMKTsK KyAgYXNzZXJ0IChhcGlfaW5mby0+Y29udGV4dF9oYW5kbGUgPT0gTlVMTCk7 CisgIGFzc2VydCAoYXBpX2luZm8tPmFzeW5jX2hhbmRsZSA9PSBOVUxMKTsK KworICBmcmVlICh0b29sX2luZm8pOworICB0b29sX2luZm8gPSBOVUxMOwor fQorCitzdGF0aWMgYWNjX3Byb2ZfcmVnIHJlZzsKK3N0YXRpYyBhY2NfcHJv Zl9yZWcgdW5yZWc7CitzdGF0aWMgYWNjX3Byb2ZfbG9va3VwX2Z1bmMgbG9v a3VwOwordm9pZCBhY2NfcmVnaXN0ZXJfbGlicmFyeSAoYWNjX3Byb2ZfcmVn IHJlZ18sIGFjY19wcm9mX3JlZyB1bnJlZ18sIGFjY19wcm9mX2xvb2t1cF9m dW5jIGxvb2t1cF8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzXG4iLCBfX0ZV TkNUSU9OX18pOworCisgIHJlZyA9IHJlZ187CisgIHVucmVnID0gdW5yZWdf OworICBsb29rdXAgPSBsb29rdXBfOworfQorCitpbnQgbWFpbigpCit7Cisg IFNUQVRFX09QIChzdGF0ZSwgPSAwKTsKKyAgcmVnIChhY2NfZXZfZGV2aWNl X2luaXRfc3RhcnQsIGNiX2RldmljZV9pbml0X3N0YXJ0LCBhY2NfcmVnKTsK KyAgcmVnIChhY2NfZXZfZGV2aWNlX2luaXRfZW5kLCBjYl9kZXZpY2VfaW5p dF9lbmQsIGFjY19yZWcpOworICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0 cnVjdF9zdGFydCwgY2JfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQsIGFjY19y ZWcpOworICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNi X2NvbXB1dGVfY29uc3RydWN0X2VuZCwgYWNjX3JlZyk7CisgIGFzc2VydCAo c3RhdGUgPT0gMCk7CisKKyAgYWNjX2luaXQgKGFjY19kZXZpY2VfaG9zdCk7 CisgIGFzc2VydCAoc3RhdGUgPT0gMik7CisKKyAgU1RBVEVfT1AgKHN0YXRl LCA9IDEwKTsKKworICBhY2NfZGV2aWNlX3R5cGUgPSBhY2NfZ2V0X2Rldmlj ZV90eXBlICgpOworICBhY2NfZGV2aWNlX251bSA9IGFjY19nZXRfZGV2aWNl X251bSAoYWNjX2RldmljZV90eXBlKTsKKyAgYWNjX2FzeW5jID0gMTI7CisK KyAgeworICAgIGludCBzdGF0ZV9pbml0OworI3ByYWdtYSBhY2MgcGFyYWxs ZWwgYXN5bmMoYWNjX2FzeW5jKSBDT1BZSU4oc3RhdGUpIGNvcHlvdXQoc3Rh dGVfaW5pdCkKKyAgICB7CisgICAgICBzdGF0ZV9pbml0ID0gc3RhdGU7Cisg ICAgfQorI3ByYWdtYSBhY2Mgd2FpdAorICAgIGFzc2VydCAoc3RhdGVfaW5p dCA9PSAxMSk7CisgIH0KKyAgYXNzZXJ0IChzdGF0ZSA9PSAxMik7CisKKyAg U1RBVEVfT1AgKHN0YXRlLCA9IDkwKTsKKyAgYWNjX3NodXRkb3duIChhY2Nf ZGV2aWNlX2hvc3QpOworICBhc3NlcnQgKHN0YXRlID09IDkwKTsKKworCisg IFNUQVRFX09QIChzdGF0ZSwgPSAxMDApOworICBhY2NfaW5pdCAoYWNjX2Rl dmljZV9kZWZhdWx0KTsKKyAgYXNzZXJ0IChzdGF0ZSA9PSAxMDIpOworCisg IFNUQVRFX09QIChzdGF0ZSwgPSAxMTApOworCisgIGFjY19kZXZpY2VfdHlw ZSA9IGFjY19nZXRfZGV2aWNlX3R5cGUgKCk7CisgIGFjY19kZXZpY2VfbnVt ID0gYWNjX2dldF9kZXZpY2VfbnVtIChhY2NfZGV2aWNlX3R5cGUpOworICBh Y2NfYXN5bmMgPSAxMjsKKworICB7CisgICAgaW50IHN0YXRlX2luaXQ7Cisj cHJhZ21hIGFjYyBwYXJhbGxlbCBhc3luYyhhY2NfYXN5bmMpIENPUFlJTihz dGF0ZSkgY29weW91dChzdGF0ZV9pbml0KQorICAgIHsKKyAgICAgIHN0YXRl X2luaXQgPSBzdGF0ZTsKKyAgICB9CisjcHJhZ21hIGFjYyB3YWl0CisgICAg YXNzZXJ0IChzdGF0ZV9pbml0ID09IDExMSk7CisgIH0KKyAgYXNzZXJ0IChz dGF0ZSA9PSAxMTIpOworCisgIFNUQVRFX09QIChzdGF0ZSwgPSAxOTApOwor ICBhY2Nfc2h1dGRvd24gKGFjY19kZXZpY2VfZGVmYXVsdCk7CisgIGFzc2Vy dCAoc3RhdGUgPT0gMTkwKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdp dCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21t b24vYWNjX3Byb2Yta2VybmVscy0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLWtlcm5lbHMtMS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNWI1ZmIK LS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w Lm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLWtlcm5lbHMtMS5jCkBAIC0w LDAgKzEsMjUzIEBACisvKiBUZXN0IGRpc3BhdGNoIG9mIGV2ZW50cyB0byBj YWxsYmFja3MuICAqLworCisjdW5kZWYgTkRFQlVHCisjaW5jbHVkZSA8YXNz ZXJ0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5n Lmg+CisKKyNpbmNsdWRlIDxhY2NfcHJvZi5oPgorCisvKiBVc2UgZXhwbGlj aXQgY29weWluIGNsYXVzZXMsIHRvIHdvcmsgYXJvdW5kIGZpcnN0cHJpdmF0 ZSBvcHRpbWl6YXRpb25zLAorICAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgdmFs dWUgYXQgdGhlIHBvaW50IG9mIGNhbGwgdG8gYmUgdXNlZCAoKmJlZm9yZSog YW55CisgICBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBkb25lIGluIGNhbGxi YWNrcyksIGFzIG9wcG9zZWQgdG8gaXRzIGFkZHJlc3MgYmVpbmcKKyAgIHRh a2VuLCB3aGljaCB0aGVuIGxhdGVyIGdldHMgZGVyZWZlcmVuY2VkICgqYWZ0 ZXIqIGFueSBtb2RpZmljYXRpb25zIGRvbmUgaW4KKyAgIGNhbGxiYWNrcyku ICAqLworI2RlZmluZSBDT1BZSU4oLi4uKSBjb3B5aW4oX19WQV9BUkdTX18p CisKKy8qIFNlZSB0aGUgIkRFVklDRV9JTklUX0lOU0lERV9DT01QVVRFX0NP TlNUUlVDVCIgcmVmZXJlbmNlIGluCisgICBsaWJnb21wLnRleGkuICAqLwor I2RlZmluZSBERVZJQ0VfSU5JVF9JTlNJREVfQ09NUFVURV9DT05TVFJVQ1Qg MAorCisjZGVmaW5lIERFQlVHX3ByaW50ZiguLi4pIC8vX19idWlsdGluX3By aW50ZiAoX19WQV9BUkdTX18pCisKK3N0YXRpYyBpbnQgc3RhdGUgPSAtMTsK KyNkZWZpbmUgU1RBVEVfT1Aoc3RhdGUsIG9wKVwKKyAgZG8gXAorICAgIHsg XAorICAgICAgdHlwZW9mIChzdGF0ZSkgc3RhdGVfbyA9IChzdGF0ZSk7IFwK KyAgICAgICh2b2lkKSBzdGF0ZV9vOyBcCisgICAgICAoc3RhdGUpb3A7IFwK KyAgICAgIERFQlVHX3ByaW50Zigic3RhdGU6ICVkIC0+ICVkXG4iLCBzdGF0 ZV9vLCAoc3RhdGUpKTsgXAorICAgIH0gXAorICB3aGlsZSAoMCkKKworc3Rh dGljIGFjY19kZXZpY2VfdCBhY2NfZGV2aWNlX3R5cGU7CitzdGF0aWMgaW50 IGFjY19kZXZpY2VfbnVtOworc3RhdGljIGludCBudW1fZ2FuZ3MsIG51bV93 b3JrZXJzLCB2ZWN0b3JfbGVuZ3RoOworc3RhdGljIGludCBhc3luYzsKKwor dm9pZCBjYl9lbnF1ZXVlX2xhdW5jaF9zdGFydCAoYWNjX3Byb2ZfaW5mbyAq cHJvZl9pbmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZlbnRfaW5mbywgYWNjX2Fw aV9pbmZvICphcGlfaW5mbykKK3sKKyAgREVCVUdfcHJpbnRmICgiJXNcbiIs IF9fRlVOQ1RJT05fXyk7CisKKyAgYXNzZXJ0IChhY2NfZGV2aWNlX3R5cGUg IT0gYWNjX2RldmljZV9ob3N0KTsKKworICBhc3NlcnQgKHN0YXRlID09IDAp OworICBTVEFURV9PUCAoc3RhdGUsID0gMSk7CisKKyAgYXNzZXJ0IChwcm9m X2luZm8tPmV2ZW50X3R5cGUgPT0gYWNjX2V2X2VucXVldWVfbGF1bmNoX3N0 YXJ0KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnZhbGlkX2J5dGVzID09IF9B Q0NfUFJPRl9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChwcm9mX2lu Zm8tPnZlcnNpb24gPT0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTik7CisgIGFz c2VydCAocHJvZl9pbmZvLT5kZXZpY2VfdHlwZSA9PSBhY2NfZGV2aWNlX3R5 cGUpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZGV2aWNlX251bWJlciA9PSBh Y2NfZGV2aWNlX251bSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT50aHJlYWRf aWQgPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmMgPT0gYXN5 bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmNfcXVldWUgPT0gcHJv Zl9pbmZvLT5hc3luYyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5zcmNfZmls ZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbmFtZSA9 PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmxpbmVfbm8gPT0gLTEp OworICBhc3NlcnQgKHByb2ZfaW5mby0+ZW5kX2xpbmVfbm8gPT0gLTEpOwor ICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19saW5lX25vID09IC0xKTsKKyAg YXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfZW5kX2xpbmVfbm8gPT0gLTEpOwor CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50LmV2ZW50X3R5 cGUgPT0gcHJvZl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNzZXJ0IChldmVu dF9pbmZvLT5sYXVuY2hfZXZlbnQudmFsaWRfYnl0ZXMgPT0gX0FDQ19MQVVO Q0hfRVZFTlRfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoZXZlbnRf aW5mby0+bGF1bmNoX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0gYWNjX2Nv bnN0cnVjdF9wYXJhbGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1 bmNoX2V2ZW50LmltcGxpY2l0ID09IDEpOworICBhc3NlcnQgKGV2ZW50X2lu Zm8tPmxhdW5jaF9ldmVudC50b29sX2luZm8gPT0gTlVMTCk7CisgIGFzc2Vy dCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50Lmtlcm5lbF9uYW1lICE9IE5V TEwpOworICB7CisgICAgY2hhciAqcyA9IHN0cnN0ciAoZXZlbnRfaW5mby0+ bGF1bmNoX2V2ZW50Lmtlcm5lbF9uYW1lLCAibWFpbiIpOworICAgIGFzc2Vy dCAocyAhPSBOVUxMKTsKKyAgICBzID0gc3Ryc3RyIChzLCAib21wX2ZuIik7 CisgICAgYXNzZXJ0IChzICE9IE5VTEwpOworICB9CisgIGlmIChudW1fZ2Fu Z3MgPCAxKQorICAgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50 Lm51bV9nYW5ncyA+PSAxKTsKKyAgZWxzZQorICAgIHsKKyNpZmRlZiBfX09Q VElNSVpFX18KKyAgICAgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2 ZW50Lm51bV9nYW5ncyA9PSBudW1fZ2FuZ3MpOworI2Vsc2UKKyAgICAgIC8q IE5vIHBhcmFsbGVsaXplZCBPcGVuQUNDIGtlcm5lbHMgY29uc3RydWN0cywg YW5kIHVucGFyYWxsZWxpemVkIE9wZW5BQ0MKKwkga2VybmVscyBjb25zdHJ1 Y3RzIG11c3QgZ2V0IGxhdW5jaGVkIGFzIDEgeCAxIHggMSBrZXJuZWxzLiAg Ki8KKyAgICAgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50Lm51 bV9nYW5ncyA9PSAxKTsKKyNlbmRpZgorICAgIH0KKyAgaWYgKG51bV93b3Jr ZXJzIDwgMSkKKyAgICBhc3NlcnQgKGV2ZW50X2luZm8tPmxhdW5jaF9ldmVu dC5udW1fd29ya2VycyA+PSAxKTsKKyAgZWxzZQorICAgIHsKKyNpZmRlZiBf X09QVElNSVpFX18KKyAgICAgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNo X2V2ZW50Lm51bV93b3JrZXJzID09IG51bV93b3JrZXJzKTsKKyNlbHNlCisg ICAgICAvKiBTZWUgbnVtX2dhbmdzIGFib3ZlLiAgKi8KKyAgICAgIGFzc2Vy dCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50Lm51bV93b3JrZXJzID09IDEp OworI2VuZGlmCisgICAgfQorICBpZiAodmVjdG9yX2xlbmd0aCA8IDEpCisg ICAgYXNzZXJ0IChldmVudF9pbmZvLT5sYXVuY2hfZXZlbnQudmVjdG9yX2xl bmd0aCA+PSAxKTsKKyAgZWxzZSBpZiAoYWNjX2RldmljZV90eXBlID09IGFj Y19kZXZpY2VfbnZpZGlhKSAvKiAuLi4gaXMgc3BlY2lhbC4gICovCisgICAg YXNzZXJ0IChldmVudF9pbmZvLT5sYXVuY2hfZXZlbnQudmVjdG9yX2xlbmd0 aCA9PSAzMik7CisgIGVsc2UKKyAgICB7CisjaWZkZWYgX19PUFRJTUlaRV9f CisgICAgICBhc3NlcnQgKGV2ZW50X2luZm8tPmxhdW5jaF9ldmVudC52ZWN0 b3JfbGVuZ3RoID09IHZlY3Rvcl9sZW5ndGgpOworI2Vsc2UKKyAgICAgIC8q IFNlZSBudW1fZ2FuZ3MgYWJvdmUuICAqLworICAgICAgYXNzZXJ0IChldmVu dF9pbmZvLT5sYXVuY2hfZXZlbnQudmVjdG9yX2xlbmd0aCA9PSAxKTsKKyNl bmRpZgorICAgIH0KKworICBpZiAoYWNjX2RldmljZV90eXBlID09IGFjY19k ZXZpY2VfaG9zdCkKKyAgICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2VfYXBp ID09IGFjY19kZXZpY2VfYXBpX25vbmUpOworICBlbHNlCisgICAgYXNzZXJ0 IChhcGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBhY2NfZGV2aWNlX2FwaV9jdWRh KTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19B UElfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRl dmljZV90eXBlID09IHByb2ZfaW5mby0+ZGV2aWNlX3R5cGUpOworICBhc3Nl cnQgKGFwaV9pbmZvLT52ZW5kb3IgPT0gLTEpOworICBhc3NlcnQgKGFwaV9p bmZvLT5kZXZpY2VfaGFuZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9p bmZvLT5jb250ZXh0X2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlf aW5mby0+YXN5bmNfaGFuZGxlID09IE5VTEwpOworfQorCitzdGF0aWMgYWNj X3Byb2ZfcmVnIHJlZzsKK3N0YXRpYyBhY2NfcHJvZl9yZWcgdW5yZWc7Citz dGF0aWMgYWNjX3Byb2ZfbG9va3VwX2Z1bmMgbG9va3VwOwordm9pZCBhY2Nf cmVnaXN0ZXJfbGlicmFyeSAoYWNjX3Byb2ZfcmVnIHJlZ18sIGFjY19wcm9m X3JlZyB1bnJlZ18sIGFjY19wcm9mX2xvb2t1cF9mdW5jIGxvb2t1cF8pCit7 CisgIERFQlVHX3ByaW50ZiAoIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCisg IHJlZyA9IHJlZ187CisgIHVucmVnID0gdW5yZWdfOworICBsb29rdXAgPSBs b29rdXBfOworfQorCitpbnQgbWFpbigpCit7CisgIFNUQVRFX09QIChzdGF0 ZSwgPSAwKTsKKyAgcmVnIChhY2NfZXZfZW5xdWV1ZV9sYXVuY2hfc3RhcnQs IGNiX2VucXVldWVfbGF1bmNoX3N0YXJ0LCBhY2NfcmVnKTsKKyAgYXNzZXJ0 IChzdGF0ZSA9PSAwKTsKKworICBhY2NfZGV2aWNlX3R5cGUgPSBhY2NfZ2V0 X2RldmljZV90eXBlICgpOworICBhY2NfZGV2aWNlX251bSA9IGFjY19nZXRf ZGV2aWNlX251bSAoYWNjX2RldmljZV90eXBlKTsKKyAgYXNzZXJ0IChzdGF0 ZSA9PSAwKTsKKworICBTVEFURV9PUCAoc3RhdGUsID0gMCk7CisgIC8qIElt cGxpY2l0IGFzeW5jLiAgKi8KKyAgYXN5bmMgPSBhY2NfYXN5bmNfbm92YWw7 CisgIC8qIFBhcmFsbGVsaXNtIGRpbWVuc2lvbnM6IGNvbXBpbGVyL3J1bnRp bWUgZGVjaWRlcy4gICovCisgIG51bV9nYW5ncyA9IG51bV93b3JrZXJzID0g dmVjdG9yX2xlbmd0aCA9IDA7CisgIHsKKyNkZWZpbmUgTiAxMDAKKyAgICBp bnQgeFtOXTsKKyNwcmFnbWEgYWNjIGtlcm5lbHMKKyAgICB7CisgICAgICBm b3IgKGludCBpID0gMDsgaSA8IE47ICsraSkKKwl4W2ldID0gaSAqIGk7Cisg ICAgfQorI2lmZGVmIF9fT1BUSU1JWkVfXworICAgIC8qIFRPRE8uICBXaXRo IC1PMiBvcHRpbWl6YXRpb25zIGVuYWJsZWQsIHRoZSBjb21waWxlciBiZWxp ZXZlcyB0aGF0IGhlcmUKKyAgICAgICAic3RhdGUgPT0gMCIgc3RpbGwgaG9s ZHMuICBJdCdzIG5vdCB5ZXQgY2xlYXIgd2hhdCdzIGdvaW5nIG9uLgorICAg ICAgIE1pcy1vcHRpbWl6YXRpb24gYWNyb3NzIHRoZSBHT01QIGZ1bmN0aW9u IGNhbGwgYm91bmRhcnk/ICBQZXIgaXRzCisgICAgICAgZ2NjL29tcC1idWls dGlucy5kZWYgZGVmaW5pdGlvbiwgQlVJTFRfSU5fR09BQ0NfUEFSQUxMRUwK KyAgICAgICAiR09BQ0NfcGFyYWxsZWxfa2V5ZWQiIGRvZXNuJ3QgaGF2ZSBh ICJsZWFmIiBhdHRyaWJ1dGUsIHNvIHRoZSBjb21waWxlcgorICAgICAgIG11 c3QgZXhwZWN0IGNhbGxzIGJhY2sgaW50byB0aGlzIGNvbXBpbGF0aW9uIHVu aXQ/ICAqLworICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6IDogIm1lbW9yeSIp OworI2VuZGlmCisgICAgaWYgKGFjY19kZXZpY2VfdHlwZSA9PSBhY2NfZGV2 aWNlX2hvc3QpCisgICAgICBhc3NlcnQgKHN0YXRlID09IDApOyAvKiBObyBh Y2NfZXZfZW5xdWV1ZV9sYXVuY2hfc3RhcnQuICAqLworICAgIGVsc2UKKyAg ICAgIGFzc2VydCAoc3RhdGUgPT0gMSk7CisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBOOyArK2kpCisgICAgICBpZiAoeFtpXSAhPSBpICogaSkKKwlfX2J1 aWx0aW5fYWJvcnQgKCk7CisjdW5kZWYgTgorICB9CisKKyAgU1RBVEVfT1Ag KHN0YXRlLCA9IDApOworICAvKiBFeHBsaWNpdCBhc3luYzogd2l0aG91dCBh cmd1bWVudC4gICovCisgIGFzeW5jID0gYWNjX2FzeW5jX25vdmFsOworICAv KiBQYXJhbGxlbGlzbSBkaW1lbnNpb25zOiBsaXRlcmFsLiAgKi8KKyAgbnVt X2dhbmdzID0gMzA7CisgIG51bV93b3JrZXJzID0gMzsKKyAgdmVjdG9yX2xl bmd0aCA9IDU7CisgIHsKKyNkZWZpbmUgTiAxMDAKKyAgICBpbnQgeFtOXTsK KyNwcmFnbWEgYWNjIGtlcm5lbHMgXAorICBhc3luYyBcCisgIG51bV9nYW5n cyAoMzApIG51bV93b3JrZXJzICgzKSB2ZWN0b3JfbGVuZ3RoICg1KQorICAg IC8qIHsgZGctcHJ1bmUtb3V0cHV0ICJ1c2luZyB2ZWN0b3JfbGVuZ3RoIFxc KDMyXFwpLCBpZ25vcmluZyA1IiB9ICovCisgICAgeworICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBOOyArK2kpCisJeFtpXSA9IGkgKiBpOworICAgIH0K KyNpZmRlZiBfX09QVElNSVpFX18KKyAgICAvKiBUT0RPLiAgV2l0aCAtTzIg b3B0aW1pemF0aW9ucyBlbmFibGVkLCB0aGUgY29tcGlsZXIgYmVsaWV2ZXMg dGhhdCBoZXJlCisgICAgICAgInN0YXRlID09IDAiIHN0aWxsIGhvbGRzLiAg SXQncyBub3QgeWV0IGNsZWFyIHdoYXQncyBnb2luZyBvbi4KKyAgICAgICBN aXMtb3B0aW1pemF0aW9uIGFjcm9zcyB0aGUgR09NUCBmdW5jdGlvbiBjYWxs IGJvdW5kYXJ5PyAgUGVyIGl0cworICAgICAgIGdjYy9vbXAtYnVpbHRpbnMu ZGVmIGRlZmluaXRpb24sIEJVSUxUX0lOX0dPQUNDX1BBUkFMTEVMCisgICAg ICAgIkdPQUNDX3BhcmFsbGVsX2tleWVkIiBkb2Vzbid0IGhhdmUgYSAibGVh ZiIgYXR0cmlidXRlLCBzbyB0aGUgY29tcGlsZXIKKyAgICAgICBtdXN0IGV4 cGVjdCBjYWxscyBiYWNrIGludG8gdGhpcyBjb21waWxhdGlvbiB1bml0PyAg Ki8KKyAgICBhc20gdm9sYXRpbGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKKyNl bmRpZgorICAgIGlmIChhY2NfZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9o b3N0KQorICAgICAgYXNzZXJ0IChzdGF0ZSA9PSAwKTsgLyogTm8gYWNjX2V2 X2VucXVldWVfbGF1bmNoX3N0YXJ0LiAgKi8KKyAgICBlbHNlCisgICAgICBh c3NlcnQgKHN0YXRlID09IDEpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg TjsgKytpKQorICAgICAgaWYgKHhbaV0gIT0gaSAqIGkpCisJX19idWlsdGlu X2Fib3J0ICgpOworI3VuZGVmIE4KKyAgfQorCisgIFNUQVRFX09QIChzdGF0 ZSwgPSAwKTsKKyAgLyogRXhwbGljaXQgYXN5bmM6IHZhcmlhYmxlLiAgKi8K KyAgYXN5bmMgPSAxMjM7CisgIC8qIFBhcmFsbGVsaXNtIGRpbWVuc2lvbnM6 IHZhcmlhYmxlLiAgKi8KKyAgbnVtX2dhbmdzID0gMjI7CisgIG51bV93b3Jr ZXJzID0gNTsKKyAgdmVjdG9yX2xlbmd0aCA9IDc7CisgIHsKKyNkZWZpbmUg TiAxMDAKKyAgICBpbnQgeFtOXTsKKyNwcmFnbWEgYWNjIGtlcm5lbHMgXAor ICBhc3luYyAoYXN5bmMpIFwKKyAgbnVtX2dhbmdzIChudW1fZ2FuZ3MpIG51 bV93b3JrZXJzIChudW1fd29ya2VycykgdmVjdG9yX2xlbmd0aCAodmVjdG9y X2xlbmd0aCkKKyAgICAvKiB7IGRnLXBydW5lLW91dHB1dCAidXNpbmcgdmVj dG9yX2xlbmd0aCBcXCgzMlxcKSwgaWdub3JpbmcgcnVudGltZSBzZXR0aW5n IiB9ICovCisgICAgeworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyAr K2kpCisJeFtpXSA9IGkgKiBpOworICAgIH0KKyNpZmRlZiBfX09QVElNSVpF X18KKyAgICAvKiBUT0RPLiAgV2l0aCAtTzIgb3B0aW1pemF0aW9ucyBlbmFi bGVkLCB0aGUgY29tcGlsZXIgYmVsaWV2ZXMgdGhhdCBoZXJlCisgICAgICAg InN0YXRlID09IDAiIHN0aWxsIGhvbGRzLiAgSXQncyBub3QgeWV0IGNsZWFy IHdoYXQncyBnb2luZyBvbi4KKyAgICAgICBNaXMtb3B0aW1pemF0aW9uIGFj cm9zcyB0aGUgR09NUCBmdW5jdGlvbiBjYWxsIGJvdW5kYXJ5PyAgUGVyIGl0 cworICAgICAgIGdjYy9vbXAtYnVpbHRpbnMuZGVmIGRlZmluaXRpb24sIEJV SUxUX0lOX0dPQUNDX1BBUkFMTEVMCisgICAgICAgIkdPQUNDX3BhcmFsbGVs X2tleWVkIiBkb2Vzbid0IGhhdmUgYSAibGVhZiIgYXR0cmlidXRlLCBzbyB0 aGUgY29tcGlsZXIKKyAgICAgICBtdXN0IGV4cGVjdCBjYWxscyBiYWNrIGlu dG8gdGhpcyBjb21waWxhdGlvbiB1bml0PyAgKi8KKyAgICBhc20gdm9sYXRp bGUgKCIiIDogOiA6ICJtZW1vcnkiKTsKKyNlbmRpZgorICAgIGlmIChhY2Nf ZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9ob3N0KQorICAgICAgYXNzZXJ0 IChzdGF0ZSA9PSAwKTsgLyogTm8gYWNjX2V2X2VucXVldWVfbGF1bmNoX3N0 YXJ0LiAgKi8KKyAgICBlbHNlCisgICAgICBhc3NlcnQgKHN0YXRlID09IDEp OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQorICAgICAgaWYg KHhbaV0gIT0gaSAqIGkpCisJX19idWlsdGluX2Fib3J0ICgpOworI3VuZGVm IE4KKyAgfQorCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJv Zi1wYXJhbGxlbC0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9h Y2MtYy1jKystY29tbW9uL2FjY19wcm9mLXBhcmFsbGVsLTEuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjM3YWU5Ci0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMt YysrLWNvbW1vbi9hY2NfcHJvZi1wYXJhbGxlbC0xLmMKQEAgLTAsMCArMSw2 OTggQEAKKy8qIFRlc3QgZGlzcGF0Y2ggb2YgZXZlbnRzIHRvIGNhbGxiYWNr cy4gICovCisKKyN1bmRlZiBOREVCVUcKKyNpbmNsdWRlIDxhc3NlcnQuaD4K KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwor I2luY2x1ZGUgPGFjY19wcm9mLmg+CisKKy8qIFVzZSBleHBsaWNpdCBjb3B5 aW4gY2xhdXNlcywgdG8gd29yayBhcm91bmQgZmlyc3Rwcml2YXRlIG9wdGlt aXphdGlvbnMsCisgICB3aGljaCB3aWxsIGNhdXNlIHRoZSB2YWx1ZSBhdCB0 aGUgcG9pbnQgb2YgY2FsbCB0byBiZSB1c2VkICgqYmVmb3JlKiBhbnkKKyAg IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIGRvbmUgaW4gY2FsbGJhY2tzKSwg YXMgb3Bwb3NlZCB0byBpdHMgYWRkcmVzcyBiZWluZworICAgdGFrZW4sIHdo aWNoIHRoZW4gbGF0ZXIgZ2V0cyBkZXJlZmVyZW5jZWQgKCphZnRlciogYW55 IG1vZGlmaWNhdGlvbnMgZG9uZSBpbgorICAgY2FsbGJhY2tzKS4gICovCisj ZGVmaW5lIENPUFlJTiguLi4pIGNvcHlpbihfX1ZBX0FSR1NfXykKKworLyog U2VlIHRoZSAiREVWSUNFX0lOSVRfSU5TSURFX0NPTVBVVEVfQ09OU1RSVUNU IiByZWZlcmVuY2UgaW4KKyAgIGxpYmdvbXAudGV4aS4gICovCisjZGVmaW5l IERFVklDRV9JTklUX0lOU0lERV9DT01QVVRFX0NPTlNUUlVDVCAwCisKKyNk ZWZpbmUgREVCVUdfcHJpbnRmKC4uLikgLy9fX2J1aWx0aW5fcHJpbnRmIChf X1ZBX0FSR1NfXykKKworc3RhdGljIGludCBzdGF0ZSA9IC0xOworI2RlZmlu ZSBTVEFURV9PUChzdGF0ZSwgb3ApXAorICBkbyBcCisgICAgeyBcCisgICAg ICB0eXBlb2YgKHN0YXRlKSBzdGF0ZV9vID0gKHN0YXRlKTsgXAorICAgICAg KHZvaWQpIHN0YXRlX287IFwKKyAgICAgIChzdGF0ZSlvcDsgXAorICAgICAg REVCVUdfcHJpbnRmKCJzdGF0ZTogJWQgLT4gJWRcbiIsIHN0YXRlX28sIChz dGF0ZSkpOyBcCisgICAgfSBcCisgIHdoaWxlICgwKQorCitzdGF0aWMgYWNj X2RldmljZV90IGFjY19kZXZpY2VfdHlwZTsKK3N0YXRpYyBpbnQgYWNjX2Rl dmljZV9udW07CitzdGF0aWMgaW50IGFjY19hc3luYzsKKworc3RydWN0IHRv b2xfaW5mbworeworICBhY2NfZXZlbnRfaW5mbyBldmVudF9pbmZvOworICBz dHJ1Y3QgdG9vbF9pbmZvICpuZXN0ZWQ7Cit9Oworc3RydWN0IHRvb2xfaW5m byAqdG9vbF9pbmZvOworCit2b2lkIGNiX2RldmljZV9pbml0X3N0YXJ0IChh Y2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVu dF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19w cmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworI2lmIERFVklDRV9J TklUX0lOU0lERV9DT01QVVRFX0NPTlNUUlVDVAorICBhc3NlcnQgKHN0YXRl ID09IDEKKwkgIHx8IHN0YXRlID09IDEwMSk7CisgIFNUQVRFX09QIChzdGF0 ZSwgKyspOworCisgIGFzc2VydCAodG9vbF9pbmZvICE9IE5VTEwpOworICBh c3NlcnQgKHRvb2xfaW5mby0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVu dF90eXBlID09IGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCk7Cisg IGFzc2VydCAodG9vbF9pbmZvLT5uZXN0ZWQgPT0gTlVMTCk7CisgIHRvb2xf aW5mby0+bmVzdGVkID0gKHN0cnVjdCB0b29sX2luZm8gKikgbWFsbG9jKHNp emVvZiAqdG9vbF9pbmZvKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPm5lc3Rl ZCAhPSBOVUxMKTsKKyAgdG9vbF9pbmZvLT5uZXN0ZWQtPm5lc3RlZCA9IE5V TEw7CisjZWxzZQorICBhc3NlcnQgKHN0YXRlID09IDAKKwkgIHx8IHN0YXRl ID09IDEwMCk7CisgIFNUQVRFX09QIChzdGF0ZSwgKyspOworCisgIGFzc2Vy dCAodG9vbF9pbmZvID09IE5VTEwpOworICB0b29sX2luZm8gPSAoc3RydWN0 IHRvb2xfaW5mbyAqKSBtYWxsb2Moc2l6ZW9mICp0b29sX2luZm8pOworICBh c3NlcnQgKHRvb2xfaW5mbyAhPSBOVUxMKTsKKyAgdG9vbF9pbmZvLT5uZXN0 ZWQgPSBOVUxMOworI2VuZGlmCisKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmV2 ZW50X3R5cGUgPT0gYWNjX2V2X2RldmljZV9pbml0X3N0YXJ0KTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfUFJPRl9JTkZP X1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnZlcnNpb24g PT0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTik7CisgIGFzc2VydCAocHJvZl9p bmZvLT5kZXZpY2VfdHlwZSA9PSBhY2NfZGV2aWNlX2RlZmF1bHQpOworICBh c3NlcnQgKHByb2ZfaW5mby0+ZGV2aWNlX251bWJlciA9PSBhY2NfZGV2aWNl X251bSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT50aHJlYWRfaWQgPT0gLTEp OworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmMgPT0gYWNjX2FzeW5jX3N5 bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmNfcXVldWUgPT0gcHJv Zl9pbmZvLT5hc3luYyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5zcmNfZmls ZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbmFtZSA9 PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmxpbmVfbm8gPT0gLTEp OworICBhc3NlcnQgKHByb2ZfaW5mby0+ZW5kX2xpbmVfbm8gPT0gLTEpOwor ICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19saW5lX25vID09IC0xKTsKKyAg YXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfZW5kX2xpbmVfbm8gPT0gLTEpOwor CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQuZXZlbnRfdHlw ZSA9PSBwcm9mX2luZm8tPmV2ZW50X3R5cGUpOworICBhc3NlcnQgKGV2ZW50 X2luZm8tPm90aGVyX2V2ZW50LnZhbGlkX2J5dGVzID09IF9BQ0NfT1RIRVJf RVZFTlRfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoZXZlbnRfaW5m by0+b3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVjdCA9PSBhY2NfY29uc3Ry dWN0X3BhcmFsbGVsKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9l dmVudC5pbXBsaWNpdCA9PSAxKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5v dGhlcl9ldmVudC50b29sX2luZm8gPT0gTlVMTCk7CisKKyAgYXNzZXJ0IChh cGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBhY2NfZGV2aWNlX2FwaV9ub25lKTsK KyAgYXNzZXJ0IChhcGlfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19BUElf SU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRldmlj ZV90eXBlID09IHByb2ZfaW5mby0+ZGV2aWNlX3R5cGUpOworICBhc3NlcnQg KGFwaV9pbmZvLT52ZW5kb3IgPT0gLTEpOworICBhc3NlcnQgKGFwaV9pbmZv LT5kZXZpY2VfaGFuZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZv LT5jb250ZXh0X2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlfaW5m by0+YXN5bmNfaGFuZGxlID09IE5VTEwpOworCisjaWYgREVWSUNFX0lOSVRf SU5TSURFX0NPTVBVVEVfQ09OU1RSVUNUCisgIHRvb2xfaW5mby0+bmVzdGVk LT5ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUgPSBldmVudF9p bmZvLT5vdGhlcl9ldmVudC5ldmVudF90eXBlOworICBldmVudF9pbmZvLT5v dGhlcl9ldmVudC50b29sX2luZm8gPSB0b29sX2luZm8tPm5lc3RlZDsKKyNl bHNlCisgIHRvb2xfaW5mby0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVu dF90eXBlID0gZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQuZXZlbnRfdHlwZTsK KyAgZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQudG9vbF9pbmZvID0gdG9vbF9p bmZvOworI2VuZGlmCit9CisKK3ZvaWQgY2JfZGV2aWNlX2luaXRfZW5kIChh Y2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVu dF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19w cmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworI2lmIERFVklDRV9J TklUX0lOU0lERV9DT01QVVRFX0NPTlNUUlVDVAorICBhc3NlcnQgKHN0YXRl ID09IDIKKwkgIHx8IHN0YXRlID09IDEwMik7CisgIFNUQVRFX09QIChzdGF0 ZSwgKyspOworCisgIGFzc2VydCAodG9vbF9pbmZvICE9IE5VTEwpOworICBh c3NlcnQgKHRvb2xfaW5mby0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVu dF90eXBlID09IGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCk7Cisg IGFzc2VydCAodG9vbF9pbmZvLT5uZXN0ZWQgIT0gTlVMTCk7CisgIGFzc2Vy dCAodG9vbF9pbmZvLT5uZXN0ZWQtPmV2ZW50X2luZm8ub3RoZXJfZXZlbnQu ZXZlbnRfdHlwZSA9PSBhY2NfZXZfZGV2aWNlX2luaXRfc3RhcnQpOworI2Vs c2UKKyAgYXNzZXJ0IChzdGF0ZSA9PSAxCisJICB8fCBzdGF0ZSA9PSAxMDEp OworICBTVEFURV9PUCAoc3RhdGUsICsrKTsKKworICBhc3NlcnQgKHRvb2xf aW5mbyAhPSBOVUxMKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPmV2ZW50X2lu Zm8ub3RoZXJfZXZlbnQuZXZlbnRfdHlwZSA9PSBhY2NfZXZfZGV2aWNlX2lu aXRfc3RhcnQpOworI2VuZGlmCisKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmV2 ZW50X3R5cGUgPT0gYWNjX2V2X2RldmljZV9pbml0X2VuZCk7CisgIGFzc2Vy dCAocHJvZl9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX1BST0ZfSU5GT19W QUxJRF9CWVRFUyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT52ZXJzaW9uID09 IF9BQ0NfUFJPRl9JTkZPX1ZFUlNJT04pOworICBhc3NlcnQgKHByb2ZfaW5m by0+ZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9kZWZhdWx0KTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPmRldmljZV9udW1iZXIgPT0gYWNjX2RldmljZV9u dW0pOworICBhc3NlcnQgKHByb2ZfaW5mby0+dGhyZWFkX2lkID09IC0xKTsK KyAgYXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jID09IGFjY19hc3luY19zeW5j KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jX3F1ZXVlID09IHByb2Zf aW5mby0+YXN5bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+c3JjX2ZpbGUg PT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX25hbWUgPT0g TlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5saW5lX25vID09IC0xKTsK KyAgYXNzZXJ0IChwcm9mX2luZm8tPmVuZF9saW5lX25vID09IC0xKTsKKyAg YXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbGluZV9ubyA9PSAtMSk7CisgIGFz c2VydCAocHJvZl9pbmZvLT5mdW5jX2VuZF9saW5lX25vID09IC0xKTsKKwor ICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmV2ZW50X3R5cGUg PT0gcHJvZl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNzZXJ0IChldmVudF9p bmZvLT5vdGhlcl9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX09USEVSX0VW RU5UX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGV2ZW50X2luZm8t Pm90aGVyX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0gYWNjX2NvbnN0cnVj dF9wYXJhbGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZl bnQuaW1wbGljaXQgPT0gMSk7CisjaWYgREVWSUNFX0lOSVRfSU5TSURFX0NP TVBVVEVfQ09OU1RSVUNUCisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJf ZXZlbnQudG9vbF9pbmZvID09IHRvb2xfaW5mby0+bmVzdGVkKTsKKyNlbHNl CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQudG9vbF9pbmZv ID09IHRvb2xfaW5mbyk7CisjZW5kaWYKKworICBhc3NlcnQgKGFwaV9pbmZv LT5kZXZpY2VfYXBpID09IGFjY19kZXZpY2VfYXBpX25vbmUpOworICBhc3Nl cnQgKGFwaV9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX0FQSV9JTkZPX1ZB TElEX0JZVEVTKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX3R5cGUg PT0gcHJvZl9pbmZvLT5kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAoYXBpX2lu Zm8tPnZlbmRvciA9PSAtMSk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRldmlj ZV9oYW5kbGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmNvbnRl eHRfaGFuZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZvLT5hc3lu Y19oYW5kbGUgPT0gTlVMTCk7CisKKyNpZiBERVZJQ0VfSU5JVF9JTlNJREVf Q09NUFVURV9DT05TVFJVQ1QKKyAgZnJlZSAodG9vbF9pbmZvLT5uZXN0ZWQp OworICB0b29sX2luZm8tPm5lc3RlZCA9IE5VTEw7CisjZWxzZQorICBmcmVl ICh0b29sX2luZm8pOworICB0b29sX2luZm8gPSBOVUxMOworI2VuZGlmCit9 CisKK3ZvaWQgY2JfZW50ZXJfZGF0YV9zdGFydCAoYWNjX3Byb2ZfaW5mbyAq cHJvZl9pbmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZlbnRfaW5mbywgYWNjX2Fw aV9pbmZvICphcGlfaW5mbykKK3sKKyAgREVCVUdfcHJpbnRmICgiJXNcbiIs IF9fRlVOQ1RJT05fXyk7CisKKyAgYXNzZXJ0IChzdGF0ZSA9PSAzCisJICB8 fCBzdGF0ZSA9PSAxMDMpOworICBTVEFURV9PUCAoc3RhdGUsICsrKTsKKwor ICBhc3NlcnQgKHRvb2xfaW5mbyAhPSBOVUxMKTsKKyAgYXNzZXJ0ICh0b29s X2luZm8tPmV2ZW50X2luZm8ub3RoZXJfZXZlbnQuZXZlbnRfdHlwZSA9PSBh Y2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQpOworICBhc3NlcnQgKHRv b2xfaW5mby0+bmVzdGVkID09IE5VTEwpOworICB0b29sX2luZm8tPm5lc3Rl ZCA9IChzdHJ1Y3QgdG9vbF9pbmZvICopIG1hbGxvYyhzaXplb2YgKnRvb2xf aW5mbyk7CisgIGFzc2VydCAodG9vbF9pbmZvLT5uZXN0ZWQgIT0gTlVMTCk7 CisgIHRvb2xfaW5mby0+bmVzdGVkLT5uZXN0ZWQgPSBOVUxMOworCisgIGFz c2VydCAocHJvZl9pbmZvLT5ldmVudF90eXBlID09IGFjY19ldl9lbnRlcl9k YXRhX3N0YXJ0KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnZhbGlkX2J5dGVz ID09IF9BQ0NfUFJPRl9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChw cm9mX2luZm8tPnZlcnNpb24gPT0gX0FDQ19QUk9GX0lORk9fVkVSU0lPTik7 CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfdHlwZSA9PSBhY2NfZGV2 aWNlX3R5cGUpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZGV2aWNlX251bWJl ciA9PSBhY2NfZGV2aWNlX251bSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT50 aHJlYWRfaWQgPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmMg PT0gYWNjX2FzeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jX3F1 ZXVlID09IHByb2ZfaW5mby0+YXN5bmMpOworICBhc3NlcnQgKHByb2ZfaW5m by0+c3JjX2ZpbGUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5m dW5jX25hbWUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5saW5l X25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmVuZF9saW5lX25v ID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbGluZV9ubyA9 PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX2VuZF9saW5lX25v ID09IC0xKTsKKworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50 LmV2ZW50X3R5cGUgPT0gcHJvZl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNz ZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC52YWxpZF9ieXRlcyA9PSBf QUNDX09USEVSX0VWRU5UX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQg KGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0g YWNjX2NvbnN0cnVjdF9wYXJhbGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5m by0+b3RoZXJfZXZlbnQuaW1wbGljaXQgPT0gMSk7CisgIGFzc2VydCAoZXZl bnRfaW5mby0+b3RoZXJfZXZlbnQudG9vbF9pbmZvID09IE5VTEwpOworCisg IGFzc2VydCAoYXBpX2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfQVBJX0lO Rk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2Vf dHlwZSA9PSBwcm9mX2luZm8tPmRldmljZV90eXBlKTsKKyAgYXNzZXJ0IChh cGlfaW5mby0+dmVuZG9yID09IC0xKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ ZGV2aWNlX2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ Y29udGV4dF9oYW5kbGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8t PmFzeW5jX2hhbmRsZSA9PSBOVUxMKTsKKworICB0b29sX2luZm8tPm5lc3Rl ZC0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBlID0gZXZlbnRf aW5mby0+b3RoZXJfZXZlbnQuZXZlbnRfdHlwZTsKKyAgZXZlbnRfaW5mby0+ b3RoZXJfZXZlbnQudG9vbF9pbmZvID0gdG9vbF9pbmZvLT5uZXN0ZWQ7Cit9 CisKK3ZvaWQgY2JfZW50ZXJfZGF0YV9lbmQgKGFjY19wcm9mX2luZm8gKnBy b2ZfaW5mbywgYWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8sIGFjY19hcGlf aW5mbyAqYXBpX2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzXG4iLCBf X0ZVTkNUSU9OX18pOworCisgIGFzc2VydCAoc3RhdGUgPT0gNAorCSAgfHwg c3RhdGUgPT0gMTA0KTsKKyAgU1RBVEVfT1AgKHN0YXRlLCArKyk7CisKKyAg YXNzZXJ0ICh0b29sX2luZm8gIT0gTlVMTCk7CisgIGFzc2VydCAodG9vbF9p bmZvLT5ldmVudF9pbmZvLm90aGVyX2V2ZW50LmV2ZW50X3R5cGUgPT0gYWNj X2V2X2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0KTsKKyAgYXNzZXJ0ICh0b29s X2luZm8tPm5lc3RlZCAhPSBOVUxMKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8t Pm5lc3RlZC0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBlID09 IGFjY19ldl9lbnRlcl9kYXRhX3N0YXJ0KTsKKworICBhc3NlcnQgKHByb2Zf aW5mby0+ZXZlbnRfdHlwZSA9PSBhY2NfZXZfZW50ZXJfZGF0YV9lbmQpOwor ICBhc3NlcnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19QUk9G X0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmVy c2lvbiA9PSBfQUNDX1BST0ZfSU5GT19WRVJTSU9OKTsKKyAgYXNzZXJ0IChw cm9mX2luZm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfdHlwZSk7Cisg IGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09IGFjY19kZXZp Y2VfbnVtKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVhZF9pZCA9PSAt MSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSBhY2NfYXN5bmMp OworICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmNfcXVldWUgPT0gcHJvZl9p bmZvLT5hc3luYyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5zcmNfZmlsZSA9 PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbmFtZSA9PSBO VUxMKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmxpbmVfbm8gPT0gLTEpOwor ICBhc3NlcnQgKHByb2ZfaW5mby0+ZW5kX2xpbmVfbm8gPT0gLTEpOworICBh c3NlcnQgKHByb2ZfaW5mby0+ZnVuY19saW5lX25vID09IC0xKTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPmZ1bmNfZW5kX2xpbmVfbm8gPT0gLTEpOworCisg IGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQuZXZlbnRfdHlwZSA9 PSBwcm9mX2luZm8tPmV2ZW50X3R5cGUpOworICBhc3NlcnQgKGV2ZW50X2lu Zm8tPm90aGVyX2V2ZW50LnZhbGlkX2J5dGVzID09IF9BQ0NfT1RIRVJfRVZF TlRfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+ b3RoZXJfZXZlbnQucGFyZW50X2NvbnN0cnVjdCA9PSBhY2NfY29uc3RydWN0 X3BhcmFsbGVsKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVu dC5pbXBsaWNpdCA9PSAxKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhl cl9ldmVudC50b29sX2luZm8gPT0gdG9vbF9pbmZvLT5uZXN0ZWQpOworCisg IGlmIChhY2NfZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9ob3N0KQorICAg IGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9hcGkgPT0gYWNjX2RldmljZV9h cGlfbm9uZSk7CisgIGVsc2UKKyAgICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZp Y2VfYXBpID09IGFjY19kZXZpY2VfYXBpX2N1ZGEpOworICBhc3NlcnQgKGFw aV9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX0FQSV9JTkZPX1ZBTElEX0JZ VEVTKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX3R5cGUgPT0gcHJv Zl9pbmZvLT5kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZl bmRvciA9PSAtMSk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9oYW5k bGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmNvbnRleHRfaGFu ZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZvLT5hc3luY19oYW5k bGUgPT0gTlVMTCk7CisKKyAgZnJlZSAodG9vbF9pbmZvLT5uZXN0ZWQpOwor ICB0b29sX2luZm8tPm5lc3RlZCA9IE5VTEw7Cit9CisKK3ZvaWQgY2JfZXhp dF9kYXRhX3N0YXJ0IChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19l dmVudF9pbmZvICpldmVudF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZv KQoreworICBERUJVR19wcmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsK KworICBhc3NlcnQgKHN0YXRlID09IDcpOworICBTVEFURV9PUCAoc3RhdGUs ICsrKTsKKworICBhc3NlcnQgKHRvb2xfaW5mbyAhPSBOVUxMKTsKKyAgYXNz ZXJ0ICh0b29sX2luZm8tPmV2ZW50X2luZm8ub3RoZXJfZXZlbnQuZXZlbnRf dHlwZSA9PSBhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQpOworICBh c3NlcnQgKHRvb2xfaW5mby0+bmVzdGVkID09IE5VTEwpOworICB0b29sX2lu Zm8tPm5lc3RlZCA9IChzdHJ1Y3QgdG9vbF9pbmZvICopIG1hbGxvYyhzaXpl b2YgKnRvb2xfaW5mbyk7CisgIGFzc2VydCAodG9vbF9pbmZvLT5uZXN0ZWQg IT0gTlVMTCk7CisgIHRvb2xfaW5mby0+bmVzdGVkLT5uZXN0ZWQgPSBOVUxM OworCisgIGFzc2VydCAocHJvZl9pbmZvLT5ldmVudF90eXBlID09IGFjY19l dl9leGl0X2RhdGFfc3RhcnQpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmFs aWRfYnl0ZXMgPT0gX0FDQ19QUk9GX0lORk9fVkFMSURfQllURVMpOworICBh c3NlcnQgKHByb2ZfaW5mby0+dmVyc2lvbiA9PSBfQUNDX1BST0ZfSU5GT19W RVJTSU9OKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmRldmljZV90eXBlID09 IGFjY19kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZp Y2VfbnVtYmVyID09IGFjY19kZXZpY2VfbnVtKTsKKyAgYXNzZXJ0IChwcm9m X2luZm8tPnRocmVhZF9pZCA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZv LT5hc3luYyA9PSBhY2NfYXN5bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ YXN5bmNfcXVldWUgPT0gcHJvZl9pbmZvLT5hc3luYyk7CisgIGFzc2VydCAo cHJvZl9pbmZvLT5zcmNfZmlsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9m X2luZm8tPmZ1bmNfbmFtZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChwcm9mX2lu Zm8tPmxpbmVfbm8gPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZW5k X2xpbmVfbm8gPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19s aW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfZW5k X2xpbmVfbm8gPT0gLTEpOworCisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3Ro ZXJfZXZlbnQuZXZlbnRfdHlwZSA9PSBwcm9mX2luZm8tPmV2ZW50X3R5cGUp OworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnZhbGlkX2J5 dGVzID09IF9BQ0NfT1RIRVJfRVZFTlRfSU5GT19WQUxJRF9CWVRFUyk7Cisg IGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQucGFyZW50X2NvbnN0 cnVjdCA9PSBhY2NfY29uc3RydWN0X3BhcmFsbGVsKTsKKyAgYXNzZXJ0IChl dmVudF9pbmZvLT5vdGhlcl9ldmVudC5pbXBsaWNpdCA9PSAxKTsKKyAgYXNz ZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC50b29sX2luZm8gPT0gTlVM TCk7CisKKyAgaWYgKGFjY19kZXZpY2VfdHlwZSA9PSBhY2NfZGV2aWNlX2hv c3QpCisgICAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBhY2Nf ZGV2aWNlX2FwaV9ub25lKTsKKyAgZWxzZQorICAgIGFzc2VydCAoYXBpX2lu Zm8tPmRldmljZV9hcGkgPT0gYWNjX2RldmljZV9hcGlfY3VkYSk7CisgIGFz c2VydCAoYXBpX2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfQVBJX0lORk9f VkFMSURfQllURVMpOworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2VfdHlw ZSA9PSBwcm9mX2luZm8tPmRldmljZV90eXBlKTsKKyAgYXNzZXJ0IChhcGlf aW5mby0+dmVuZG9yID09IC0xKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2 aWNlX2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+Y29u dGV4dF9oYW5kbGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmFz eW5jX2hhbmRsZSA9PSBOVUxMKTsKKworICB0b29sX2luZm8tPm5lc3RlZC0+ ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBlID0gZXZlbnRfaW5m by0+b3RoZXJfZXZlbnQuZXZlbnRfdHlwZTsKKyAgZXZlbnRfaW5mby0+b3Ro ZXJfZXZlbnQudG9vbF9pbmZvID0gdG9vbF9pbmZvLT5uZXN0ZWQ7Cit9CisK K3ZvaWQgY2JfZXhpdF9kYXRhX2VuZCAoYWNjX3Byb2ZfaW5mbyAqcHJvZl9p bmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZlbnRfaW5mbywgYWNjX2FwaV9pbmZv ICphcGlfaW5mbykKK3sKKyAgREVCVUdfcHJpbnRmICgiJXNcbiIsIF9fRlVO Q1RJT05fXyk7CisKKyAgYXNzZXJ0IChzdGF0ZSA9PSA4KTsKKyAgU1RBVEVf T1AgKHN0YXRlLCArKyk7CisKKyAgYXNzZXJ0ICh0b29sX2luZm8gIT0gTlVM TCk7CisgIGFzc2VydCAodG9vbF9pbmZvLT5ldmVudF9pbmZvLm90aGVyX2V2 ZW50LmV2ZW50X3R5cGUgPT0gYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0X3N0 YXJ0KTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPm5lc3RlZCAhPSBOVUxMKTsK KyAgYXNzZXJ0ICh0b29sX2luZm8tPm5lc3RlZC0+ZXZlbnRfaW5mby5vdGhl cl9ldmVudC5ldmVudF90eXBlID09IGFjY19ldl9leGl0X2RhdGFfc3RhcnQp OworCisgIGFzc2VydCAocHJvZl9pbmZvLT5ldmVudF90eXBlID09IGFjY19l dl9leGl0X2RhdGFfZW5kKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnZhbGlk X2J5dGVzID09IF9BQ0NfUFJPRl9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPnZlcnNpb24gPT0gX0FDQ19QUk9GX0lORk9fVkVS U0lPTik7CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfdHlwZSA9PSBh Y2NfZGV2aWNlX3R5cGUpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZGV2aWNl X251bWJlciA9PSBhY2NfZGV2aWNlX251bSk7CisgIGFzc2VydCAocHJvZl9p bmZvLT50aHJlYWRfaWQgPT0gLTEpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ YXN5bmMgPT0gYWNjX2FzeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmFz eW5jX3F1ZXVlID09IHByb2ZfaW5mby0+YXN5bmMpOworICBhc3NlcnQgKHBy b2ZfaW5mby0+c3JjX2ZpbGUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9p bmZvLT5mdW5jX25hbWUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZv LT5saW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmVuZF9s aW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbGlu ZV9ubyA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX2VuZF9s aW5lX25vID09IC0xKTsKKworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVy X2V2ZW50LmV2ZW50X3R5cGUgPT0gcHJvZl9pbmZvLT5ldmVudF90eXBlKTsK KyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC52YWxpZF9ieXRl cyA9PSBfQUNDX09USEVSX0VWRU5UX0lORk9fVkFMSURfQllURVMpOworICBh c3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnBhcmVudF9jb25zdHJ1 Y3QgPT0gYWNjX2NvbnN0cnVjdF9wYXJhbGxlbCk7CisgIGFzc2VydCAoZXZl bnRfaW5mby0+b3RoZXJfZXZlbnQuaW1wbGljaXQgPT0gMSk7CisgIGFzc2Vy dCAoZXZlbnRfaW5mby0+b3RoZXJfZXZlbnQudG9vbF9pbmZvID09IHRvb2xf aW5mby0+bmVzdGVkKTsKKworICBpZiAoYWNjX2RldmljZV90eXBlID09IGFj Y19kZXZpY2VfaG9zdCkKKyAgICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2Vf YXBpID09IGFjY19kZXZpY2VfYXBpX25vbmUpOworICBlbHNlCisgICAgYXNz ZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBhY2NfZGV2aWNlX2FwaV9j dWRhKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FD Q19BUElfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoYXBpX2luZm8t PmRldmljZV90eXBlID09IHByb2ZfaW5mby0+ZGV2aWNlX3R5cGUpOworICBh c3NlcnQgKGFwaV9pbmZvLT52ZW5kb3IgPT0gLTEpOworICBhc3NlcnQgKGFw aV9pbmZvLT5kZXZpY2VfaGFuZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFw aV9pbmZvLT5jb250ZXh0X2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChh cGlfaW5mby0+YXN5bmNfaGFuZGxlID09IE5VTEwpOworCisgIGZyZWUgKHRv b2xfaW5mby0+bmVzdGVkKTsKKyAgdG9vbF9pbmZvLT5uZXN0ZWQgPSBOVUxM OworfQorCit2b2lkIGNiX2NvbXB1dGVfY29uc3RydWN0X3N0YXJ0IChhY2Nf cHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVudF9p bmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19wcmlu dGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworI2lmIERFVklDRV9JTklU X0lOU0lERV9DT01QVVRFX0NPTlNUUlVDVAorICBhc3NlcnQgKHN0YXRlID09 IDAKKwkgIHx8IHN0YXRlID09IDEwMCk7CisgIGlmIChzdGF0ZSA9PSAxMDAp CisgICAgeworICAgICAgLyogQ29tcGVuc2F0ZSBmb3IgdGhlIG1pc3Npbmcg YWNjX2V2X2RldmljZV9pbml0X3N0YXJ0IGFuZAorCSBhY2NfZXZfZGV2aWNl X2luaXRfZW5kLiAgKi8KKyAgICAgIHN0YXRlICs9IDI7CisgICAgfQorI2Vs c2UKKyAgaWYgKHN0YXRlID09IDEwMCkKKyAgICB7CisgICAgICAvKiBDb21w ZW5zYXRlIGZvciB0aGUgbWlzc2luZyBhY2NfZXZfZGV2aWNlX2luaXRfc3Rh cnQgYW5kCisJIGFjY19ldl9kZXZpY2VfaW5pdF9lbmQuICAqLworICAgICAg c3RhdGUgKz0gMjsKKyAgICB9CisgIGFzc2VydCAoc3RhdGUgPT0gMgorCSAg fHwgc3RhdGUgPT0gMTAyKTsKKyNlbmRpZgorICBTVEFURV9PUCAoc3RhdGUs ICsrKTsKKworICBhc3NlcnQgKHRvb2xfaW5mbyA9PSBOVUxMKTsKKyAgdG9v bF9pbmZvID0gKHN0cnVjdCB0b29sX2luZm8gKikgbWFsbG9jKHNpemVvZiAq dG9vbF9pbmZvKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8gIT0gTlVMTCk7Cisg IHRvb2xfaW5mby0+bmVzdGVkID0gTlVMTDsKKworICBhc3NlcnQgKHByb2Zf aW5mby0+ZXZlbnRfdHlwZSA9PSBhY2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rf c3RhcnQpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0g X0FDQ19QUk9GX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKHByb2Zf aW5mby0+dmVyc2lvbiA9PSBfQUNDX1BST0ZfSU5GT19WRVJTSU9OKTsKKyAg YXNzZXJ0IChwcm9mX2luZm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2Vf dHlwZSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09 IGFjY19kZXZpY2VfbnVtKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVh ZF9pZCA9PSAtMSk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSAv KiBUT0RPIGFjY19hc3luYyAqLyBhY2NfYXN5bmNfc3luYyk7CisgIGFzc2Vy dCAocHJvZl9pbmZvLT5hc3luY19xdWV1ZSA9PSBwcm9mX2luZm8tPmFzeW5j KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnNyY19maWxlID09IE5VTEwpOwor ICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19uYW1lID09IE5VTEwpOworICBh c3NlcnQgKHByb2ZfaW5mby0+bGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAo cHJvZl9pbmZvLT5lbmRfbGluZV9ubyA9PSAtMSk7CisgIGFzc2VydCAocHJv Zl9pbmZvLT5mdW5jX2xpbmVfbm8gPT0gLTEpOworICBhc3NlcnQgKHByb2Zf aW5mby0+ZnVuY19lbmRfbGluZV9ubyA9PSAtMSk7CisKKyAgYXNzZXJ0IChl dmVudF9pbmZvLT5vdGhlcl9ldmVudC5ldmVudF90eXBlID09IHByb2ZfaW5m by0+ZXZlbnRfdHlwZSk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3RoZXJf ZXZlbnQudmFsaWRfYnl0ZXMgPT0gX0FDQ19PVEhFUl9FVkVOVF9JTkZPX1ZB TElEX0JZVEVTKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVu dC5wYXJlbnRfY29uc3RydWN0ID09IGFjY19jb25zdHJ1Y3RfcGFyYWxsZWwp OworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmltcGxpY2l0 ID09IDApOworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LnRv b2xfaW5mbyA9PSBOVUxMKTsKKworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZp Y2VfYXBpID09IGFjY19kZXZpY2VfYXBpX25vbmUpOworICBhc3NlcnQgKGFw aV9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX0FQSV9JTkZPX1ZBTElEX0JZ VEVTKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX3R5cGUgPT0gcHJv Zl9pbmZvLT5kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAoYXBpX2luZm8tPnZl bmRvciA9PSAtMSk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9oYW5k bGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmNvbnRleHRfaGFu ZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZvLT5hc3luY19oYW5k bGUgPT0gTlVMTCk7CisKKyAgdG9vbF9pbmZvLT5ldmVudF9pbmZvLm90aGVy X2V2ZW50LmV2ZW50X3R5cGUgPSBldmVudF9pbmZvLT5vdGhlcl9ldmVudC5l dmVudF90eXBlOworICBldmVudF9pbmZvLT5vdGhlcl9ldmVudC50b29sX2lu Zm8gPSB0b29sX2luZm87CisKKyAgaWYgKGFjY19kZXZpY2VfdHlwZSA9PSBh Y2NfZGV2aWNlX2hvc3QpCisgICAgeworICAgICAgLyogQ29tcGVuc2F0ZSBm b3IgdGhlIG1pc3NpbmcgYWNjX2V2X2VudGVyX2RhdGFfc3RhcnQuICAqLwor ICAgICAgc3RhdGUgKz0gMTsKKyAgICB9Cit9CisKK3ZvaWQgY2JfY29tcHV0 ZV9jb25zdHJ1Y3RfZW5kIChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFj Y19ldmVudF9pbmZvICpldmVudF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9p bmZvKQoreworICBERUJVR19wcmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9f KTsKKworICBpZiAoYWNjX2RldmljZV90eXBlID09IGFjY19kZXZpY2VfaG9z dCkKKyAgICB7CisgICAgICAvKiBDb21wZW5zYXRlIGZvciB0aGUgbWlzc2lu ZyBhY2NfZXZfZW50ZXJfZGF0YV9lbmQuICAqLworICAgICAgc3RhdGUgKz0g MTsKKyAgICAgIC8qIENvbXBlbnNhdGUgZm9yIHRoZSBtaXNzaW5nIGFjY19l dl9lbnF1ZXVlX2xhdW5jaF9zdGFydCBhbmQKKwkgYWNjX2V2X2VucXVldWVf bGF1bmNoX2VuZC4gICovCisgICAgICBzdGF0ZSArPSAyOworICAgICAgLyog Q29tcGVuc2F0ZSBmb3IgdGhlIG1pc3NpbmcgYWNjX2V2X2V4aXRfZGF0YV9z dGFydCBhbmQKKwkgYWNjX2V2X2V4aXRfZGF0YV9lbmQuICAqLworICAgICAg c3RhdGUgKz0gMjsKKyAgICB9CisgIGVsc2UgaWYgKGFjY19hc3luYyAhPSBh Y2NfYXN5bmNfc3luYykKKyAgICB7CisgICAgICAvKiBDb21wZW5zYXRlIGZv ciB0aGUgbWlzc2luZyBhY2NfZXZfZXhpdF9kYXRhX3N0YXJ0IGFuZAorCSBh Y2NfZXZfZXhpdF9kYXRhX2VuZC4gICovCisgICAgICBzdGF0ZSArPSAyOwor ICAgIH0KKyAgYXNzZXJ0IChzdGF0ZSA9PSA5CisJICB8fCBzdGF0ZSA9PSAx MDkpOworICBTVEFURV9PUCAoc3RhdGUsICsrKTsKKworICBhc3NlcnQgKHRv b2xfaW5mbyAhPSBOVUxMKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPmV2ZW50 X2luZm8ub3RoZXJfZXZlbnQuZXZlbnRfdHlwZSA9PSBhY2NfZXZfY29tcHV0 ZV9jb25zdHJ1Y3Rfc3RhcnQpOworICBhc3NlcnQgKHRvb2xfaW5mby0+bmVz dGVkID09IE5VTEwpOworCisgIGFzc2VydCAocHJvZl9pbmZvLT5ldmVudF90 eXBlID09IGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQpOworICBhc3Nl cnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19QUk9GX0lORk9f VkFMSURfQllURVMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmVyc2lvbiA9 PSBfQUNDX1BST0ZfSU5GT19WRVJTSU9OKTsKKyAgYXNzZXJ0IChwcm9mX2lu Zm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfdHlwZSk7CisgIGFzc2Vy dCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09IGFjY19kZXZpY2VfbnVt KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVhZF9pZCA9PSAtMSk7Cisg IGlmIChhY2NfZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9ob3N0KQorICAg IGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSBhY2NfYXN5bmNfc3luYyk7 CisgIGVsc2UKKyAgICBhc3NlcnQgKHByb2ZfaW5mby0+YXN5bmMgPT0gYWNj X2FzeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jX3F1ZXVlID09 IHByb2ZfaW5mby0+YXN5bmMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+c3Jj X2ZpbGUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX25h bWUgPT0gTlVMTCk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5saW5lX25vID09 IC0xKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmVuZF9saW5lX25vID09IC0x KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbGluZV9ubyA9PSAtMSk7 CisgIGFzc2VydCAocHJvZl9pbmZvLT5mdW5jX2VuZF9saW5lX25vID09IC0x KTsKKworICBhc3NlcnQgKGV2ZW50X2luZm8tPm90aGVyX2V2ZW50LmV2ZW50 X3R5cGUgPT0gcHJvZl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNzZXJ0IChl dmVudF9pbmZvLT5vdGhlcl9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX09U SEVSX0VWRU5UX0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGV2ZW50 X2luZm8tPm90aGVyX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0gYWNjX2Nv bnN0cnVjdF9wYXJhbGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+b3Ro ZXJfZXZlbnQuaW1wbGljaXQgPT0gMCk7CisgIGFzc2VydCAoZXZlbnRfaW5m by0+b3RoZXJfZXZlbnQudG9vbF9pbmZvID09IHRvb2xfaW5mbyk7CisKKyAg aWYgKGFjY19kZXZpY2VfdHlwZSA9PSBhY2NfZGV2aWNlX2hvc3QpCisgICAg YXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBhY2NfZGV2aWNlX2Fw aV9ub25lKTsKKyAgZWxzZQorICAgIGFzc2VydCAoYXBpX2luZm8tPmRldmlj ZV9hcGkgPT0gYWNjX2RldmljZV9hcGlfY3VkYSk7CisgIGFzc2VydCAoYXBp X2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfQVBJX0lORk9fVkFMSURfQllU RVMpOworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2VfdHlwZSA9PSBwcm9m X2luZm8tPmRldmljZV90eXBlKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmVu ZG9yID09IC0xKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2hhbmRs ZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+Y29udGV4dF9oYW5k bGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmFzeW5jX2hhbmRs ZSA9PSBOVUxMKTsKKworICBmcmVlICh0b29sX2luZm8pOworICB0b29sX2lu Zm8gPSBOVUxMOworfQorCit2b2lkIGNiX2VucXVldWVfbGF1bmNoX3N0YXJ0 IChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpl dmVudF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJV R19wcmludGYgKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworICBhc3NlcnQg KGFjY19kZXZpY2VfdHlwZSAhPSBhY2NfZGV2aWNlX2hvc3QpOworCisgIGFz c2VydCAoc3RhdGUgPT0gNQorCSAgfHwgc3RhdGUgPT0gMTA1KTsKKyAgU1RB VEVfT1AgKHN0YXRlLCArKyk7CisKKyAgYXNzZXJ0ICh0b29sX2luZm8gIT0g TlVMTCk7CisgIGFzc2VydCAodG9vbF9pbmZvLT5ldmVudF9pbmZvLm90aGVy X2V2ZW50LmV2ZW50X3R5cGUgPT0gYWNjX2V2X2NvbXB1dGVfY29uc3RydWN0 X3N0YXJ0KTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPm5lc3RlZCA9PSBOVUxM KTsKKyAgdG9vbF9pbmZvLT5uZXN0ZWQgPSAoc3RydWN0IHRvb2xfaW5mbyAq KSBtYWxsb2Moc2l6ZW9mICp0b29sX2luZm8pOworICBhc3NlcnQgKHRvb2xf aW5mby0+bmVzdGVkICE9IE5VTEwpOworICB0b29sX2luZm8tPm5lc3RlZC0+ bmVzdGVkID0gTlVMTDsKKworICBhc3NlcnQgKHByb2ZfaW5mby0+ZXZlbnRf dHlwZSA9PSBhY2NfZXZfZW5xdWV1ZV9sYXVuY2hfc3RhcnQpOworICBhc3Nl cnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19QUk9GX0lORk9f VkFMSURfQllURVMpOworICBhc3NlcnQgKHByb2ZfaW5mby0+dmVyc2lvbiA9 PSBfQUNDX1BST0ZfSU5GT19WRVJTSU9OKTsKKyAgYXNzZXJ0IChwcm9mX2lu Zm8tPmRldmljZV90eXBlID09IGFjY19kZXZpY2VfdHlwZSk7CisgIGFzc2Vy dCAocHJvZl9pbmZvLT5kZXZpY2VfbnVtYmVyID09IGFjY19kZXZpY2VfbnVt KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnRocmVhZF9pZCA9PSAtMSk7Cisg IGFzc2VydCAocHJvZl9pbmZvLT5hc3luYyA9PSBhY2NfYXN5bmMpOworICBh c3NlcnQgKHByb2ZfaW5mby0+YXN5bmNfcXVldWUgPT0gcHJvZl9pbmZvLT5h c3luYyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT5zcmNfZmlsZSA9PSBOVUxM KTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmZ1bmNfbmFtZSA9PSBOVUxMKTsK KyAgYXNzZXJ0IChwcm9mX2luZm8tPmxpbmVfbm8gPT0gLTEpOworICBhc3Nl cnQgKHByb2ZfaW5mby0+ZW5kX2xpbmVfbm8gPT0gLTEpOworICBhc3NlcnQg KHByb2ZfaW5mby0+ZnVuY19saW5lX25vID09IC0xKTsKKyAgYXNzZXJ0IChw cm9mX2luZm8tPmZ1bmNfZW5kX2xpbmVfbm8gPT0gLTEpOworCisgIGFzc2Vy dCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50LmV2ZW50X3R5cGUgPT0gcHJv Zl9pbmZvLT5ldmVudF90eXBlKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5s YXVuY2hfZXZlbnQudmFsaWRfYnl0ZXMgPT0gX0FDQ19MQVVOQ0hfRVZFTlRf SU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1 bmNoX2V2ZW50LnBhcmVudF9jb25zdHJ1Y3QgPT0gYWNjX2NvbnN0cnVjdF9w YXJhbGxlbCk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50 LmltcGxpY2l0ID09IDEpOworICBhc3NlcnQgKGV2ZW50X2luZm8tPmxhdW5j aF9ldmVudC50b29sX2luZm8gPT0gTlVMTCk7CisgIGFzc2VydCAoZXZlbnRf aW5mby0+bGF1bmNoX2V2ZW50Lmtlcm5lbF9uYW1lICE9IE5VTEwpOworICB7 CisgICAgY2hhciAqcyA9IHN0cnN0ciAoZXZlbnRfaW5mby0+bGF1bmNoX2V2 ZW50Lmtlcm5lbF9uYW1lLCAibWFpbiIpOworICAgIGFzc2VydCAocyAhPSBO VUxMKTsKKyAgICBzID0gc3Ryc3RyIChzLCAib21wX2ZuIik7CisgICAgYXNz ZXJ0IChzICE9IE5VTEwpOworICB9CisgIGFzc2VydCAoZXZlbnRfaW5mby0+ bGF1bmNoX2V2ZW50Lm51bV9nYW5ncyA+PSAxKTsKKyAgYXNzZXJ0IChldmVu dF9pbmZvLT5sYXVuY2hfZXZlbnQubnVtX3dvcmtlcnMgPj0gMSk7CisgIGFz c2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50LnZlY3Rvcl9sZW5ndGgg Pj0gMSk7CisKKyAgaWYgKGFjY19kZXZpY2VfdHlwZSA9PSBhY2NfZGV2aWNl X2hvc3QpCisgICAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX2FwaSA9PSBh Y2NfZGV2aWNlX2FwaV9ub25lKTsKKyAgZWxzZQorICAgIGFzc2VydCAoYXBp X2luZm8tPmRldmljZV9hcGkgPT0gYWNjX2RldmljZV9hcGlfY3VkYSk7Cisg IGFzc2VydCAoYXBpX2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfQVBJX0lO Rk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGFwaV9pbmZvLT5kZXZpY2Vf dHlwZSA9PSBwcm9mX2luZm8tPmRldmljZV90eXBlKTsKKyAgYXNzZXJ0IChh cGlfaW5mby0+dmVuZG9yID09IC0xKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ ZGV2aWNlX2hhbmRsZSA9PSBOVUxMKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ Y29udGV4dF9oYW5kbGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8t PmFzeW5jX2hhbmRsZSA9PSBOVUxMKTsKKworICB0b29sX2luZm8tPm5lc3Rl ZC0+ZXZlbnRfaW5mby5sYXVuY2hfZXZlbnQuZXZlbnRfdHlwZSA9IGV2ZW50 X2luZm8tPmxhdW5jaF9ldmVudC5ldmVudF90eXBlOworICB0b29sX2luZm8t Pm5lc3RlZC0+ZXZlbnRfaW5mby5sYXVuY2hfZXZlbnQua2VybmVsX25hbWUg PSBzdHJkdXAgKGV2ZW50X2luZm8tPmxhdW5jaF9ldmVudC5rZXJuZWxfbmFt ZSk7CisgIHRvb2xfaW5mby0+bmVzdGVkLT5ldmVudF9pbmZvLmxhdW5jaF9l dmVudC5udW1fZ2FuZ3MgPSBldmVudF9pbmZvLT5sYXVuY2hfZXZlbnQubnVt X2dhbmdzOworICB0b29sX2luZm8tPm5lc3RlZC0+ZXZlbnRfaW5mby5sYXVu Y2hfZXZlbnQubnVtX3dvcmtlcnMgPSBldmVudF9pbmZvLT5sYXVuY2hfZXZl bnQubnVtX3dvcmtlcnM7CisgIHRvb2xfaW5mby0+bmVzdGVkLT5ldmVudF9p bmZvLmxhdW5jaF9ldmVudC52ZWN0b3JfbGVuZ3RoID0gZXZlbnRfaW5mby0+ bGF1bmNoX2V2ZW50LnZlY3Rvcl9sZW5ndGg7CisgIGV2ZW50X2luZm8tPm90 aGVyX2V2ZW50LnRvb2xfaW5mbyA9IHRvb2xfaW5mby0+bmVzdGVkOworfQor Cit2b2lkIGNiX2VucXVldWVfbGF1bmNoX2VuZCAoYWNjX3Byb2ZfaW5mbyAq cHJvZl9pbmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZlbnRfaW5mbywgYWNjX2Fw aV9pbmZvICphcGlfaW5mbykKK3sKKyAgREVCVUdfcHJpbnRmICgiJXNcbiIs IF9fRlVOQ1RJT05fXyk7CisKKyAgYXNzZXJ0IChhY2NfZGV2aWNlX3R5cGUg IT0gYWNjX2RldmljZV9ob3N0KTsKKworICBhc3NlcnQgKHN0YXRlID09IDYK KwkgIHx8IHN0YXRlID09IDEwNik7CisgIFNUQVRFX09QIChzdGF0ZSwgKysp OworCisgIGFzc2VydCAodG9vbF9pbmZvICE9IE5VTEwpOworICBhc3NlcnQg KHRvb2xfaW5mby0+ZXZlbnRfaW5mby5vdGhlcl9ldmVudC5ldmVudF90eXBl ID09IGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCk7CisgIGFzc2Vy dCAodG9vbF9pbmZvLT5uZXN0ZWQgIT0gTlVMTCk7CisgIGFzc2VydCAodG9v bF9pbmZvLT5uZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50LmV2ZW50 X3R5cGUgPT0gYWNjX2V2X2VucXVldWVfbGF1bmNoX3N0YXJ0KTsKKyAgYXNz ZXJ0ICh0b29sX2luZm8tPm5lc3RlZC0+ZXZlbnRfaW5mby5sYXVuY2hfZXZl bnQua2VybmVsX25hbWUgIT0gTlVMTCk7CisgIGFzc2VydCAodG9vbF9pbmZv LT5uZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50Lm51bV9nYW5ncyA+ PSAxKTsKKyAgYXNzZXJ0ICh0b29sX2luZm8tPm5lc3RlZC0+ZXZlbnRfaW5m by5sYXVuY2hfZXZlbnQubnVtX3dvcmtlcnMgPj0gMSk7CisgIGFzc2VydCAo dG9vbF9pbmZvLT5uZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50LnZl Y3Rvcl9sZW5ndGggPj0gMSk7CisKKyAgYXNzZXJ0IChwcm9mX2luZm8tPmV2 ZW50X3R5cGUgPT0gYWNjX2V2X2VucXVldWVfbGF1bmNoX2VuZCk7CisgIGFz c2VydCAocHJvZl9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX1BST0ZfSU5G T19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAocHJvZl9pbmZvLT52ZXJzaW9u ID09IF9BQ0NfUFJPRl9JTkZPX1ZFUlNJT04pOworICBhc3NlcnQgKHByb2Zf aW5mby0+ZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV90eXBlKTsKKyAgYXNz ZXJ0IChwcm9mX2luZm8tPmRldmljZV9udW1iZXIgPT0gYWNjX2RldmljZV9u dW0pOworICBhc3NlcnQgKHByb2ZfaW5mby0+dGhyZWFkX2lkID09IC0xKTsK KyAgYXNzZXJ0IChwcm9mX2luZm8tPmFzeW5jID09IGFjY19hc3luYyk7Cisg IGFzc2VydCAocHJvZl9pbmZvLT5hc3luY19xdWV1ZSA9PSBwcm9mX2luZm8t PmFzeW5jKTsKKyAgYXNzZXJ0IChwcm9mX2luZm8tPnNyY19maWxlID09IE5V TEwpOworICBhc3NlcnQgKHByb2ZfaW5mby0+ZnVuY19uYW1lID09IE5VTEwp OworICBhc3NlcnQgKHByb2ZfaW5mby0+bGluZV9ubyA9PSAtMSk7CisgIGFz c2VydCAocHJvZl9pbmZvLT5lbmRfbGluZV9ubyA9PSAtMSk7CisgIGFzc2Vy dCAocHJvZl9pbmZvLT5mdW5jX2xpbmVfbm8gPT0gLTEpOworICBhc3NlcnQg KHByb2ZfaW5mby0+ZnVuY19lbmRfbGluZV9ubyA9PSAtMSk7CisKKyAgYXNz ZXJ0IChldmVudF9pbmZvLT5sYXVuY2hfZXZlbnQuZXZlbnRfdHlwZSA9PSBw cm9mX2luZm8tPmV2ZW50X3R5cGUpOworICBhc3NlcnQgKGV2ZW50X2luZm8t PmxhdW5jaF9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX0xBVU5DSF9FVkVO VF9JTkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5s YXVuY2hfZXZlbnQucGFyZW50X2NvbnN0cnVjdCA9PSBhY2NfY29uc3RydWN0 X3BhcmFsbGVsKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5sYXVuY2hfZXZl bnQuaW1wbGljaXQgPT0gMSk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1 bmNoX2V2ZW50LnRvb2xfaW5mbyA9PSB0b29sX2luZm8tPm5lc3RlZCk7Cisg IGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50Lmtlcm5lbF9uYW1l ICE9IE5VTEwpOworICBhc3NlcnQgKHN0cmNtcCAoZXZlbnRfaW5mby0+bGF1 bmNoX2V2ZW50Lmtlcm5lbF9uYW1lLCB0b29sX2luZm8tPm5lc3RlZC0+ZXZl bnRfaW5mby5sYXVuY2hfZXZlbnQua2VybmVsX25hbWUpID09IDApOworICBh c3NlcnQgKGV2ZW50X2luZm8tPmxhdW5jaF9ldmVudC5udW1fZ2FuZ3MgPT0g dG9vbF9pbmZvLT5uZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50Lm51 bV9nYW5ncyk7CisgIGFzc2VydCAoZXZlbnRfaW5mby0+bGF1bmNoX2V2ZW50 Lm51bV93b3JrZXJzID09IHRvb2xfaW5mby0+bmVzdGVkLT5ldmVudF9pbmZv LmxhdW5jaF9ldmVudC5udW1fd29ya2Vycyk7CisgIGFzc2VydCAoZXZlbnRf aW5mby0+bGF1bmNoX2V2ZW50LnZlY3Rvcl9sZW5ndGggPT0gdG9vbF9pbmZv LT5uZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50LnZlY3Rvcl9sZW5n dGgpOworCisgIGlmIChhY2NfZGV2aWNlX3R5cGUgPT0gYWNjX2RldmljZV9o b3N0KQorICAgIGFzc2VydCAoYXBpX2luZm8tPmRldmljZV9hcGkgPT0gYWNj X2RldmljZV9hcGlfbm9uZSk7CisgIGVsc2UKKyAgICBhc3NlcnQgKGFwaV9p bmZvLT5kZXZpY2VfYXBpID09IGFjY19kZXZpY2VfYXBpX2N1ZGEpOworICBh c3NlcnQgKGFwaV9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUNDX0FQSV9JTkZP X1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+ZGV2aWNlX3R5 cGUgPT0gcHJvZl9pbmZvLT5kZXZpY2VfdHlwZSk7CisgIGFzc2VydCAoYXBp X2luZm8tPnZlbmRvciA9PSAtMSk7CisgIGFzc2VydCAoYXBpX2luZm8tPmRl dmljZV9oYW5kbGUgPT0gTlVMTCk7CisgIGFzc2VydCAoYXBpX2luZm8tPmNv bnRleHRfaGFuZGxlID09IE5VTEwpOworICBhc3NlcnQgKGFwaV9pbmZvLT5h c3luY19oYW5kbGUgPT0gTlVMTCk7CisKKyAgZnJlZSAodG9vbF9pbmZvLT5u ZXN0ZWQtPmV2ZW50X2luZm8ubGF1bmNoX2V2ZW50Lmtlcm5lbF9uYW1lKTsK KyAgZnJlZSAodG9vbF9pbmZvLT5uZXN0ZWQpOworICB0b29sX2luZm8tPm5l c3RlZCA9IE5VTEw7Cit9CisKK3N0YXRpYyBhY2NfcHJvZl9yZWcgcmVnOwor c3RhdGljIGFjY19wcm9mX3JlZyB1bnJlZzsKK3N0YXRpYyBhY2NfcHJvZl9s b29rdXBfZnVuYyBsb29rdXA7Cit2b2lkIGFjY19yZWdpc3Rlcl9saWJyYXJ5 IChhY2NfcHJvZl9yZWcgcmVnXywgYWNjX3Byb2ZfcmVnIHVucmVnXywgYWNj X3Byb2ZfbG9va3VwX2Z1bmMgbG9va3VwXykKK3sKKyAgREVCVUdfcHJpbnRm ICgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKyAgcmVnID0gcmVnXzsKKyAg dW5yZWcgPSB1bnJlZ187CisgIGxvb2t1cCA9IGxvb2t1cF87Cit9CisKK2lu dCBtYWluKCkKK3sKKyAgU1RBVEVfT1AgKHN0YXRlLCA9IDApOworICByZWcg KGFjY19ldl9kZXZpY2VfaW5pdF9zdGFydCwgY2JfZGV2aWNlX2luaXRfc3Rh cnQsIGFjY19yZWcpOworICByZWcgKGFjY19ldl9kZXZpY2VfaW5pdF9lbmQs IGNiX2RldmljZV9pbml0X2VuZCwgYWNjX3JlZyk7CisgIHJlZyAoYWNjX2V2 X2VudGVyX2RhdGFfc3RhcnQsIGNiX2VudGVyX2RhdGFfc3RhcnQsIGFjY19y ZWcpOworICByZWcgKGFjY19ldl9lbnRlcl9kYXRhX2VuZCwgY2JfZW50ZXJf ZGF0YV9lbmQsIGFjY19yZWcpOworICByZWcgKGFjY19ldl9leGl0X2RhdGFf c3RhcnQsIGNiX2V4aXRfZGF0YV9zdGFydCwgYWNjX3JlZyk7CisgIHJlZyAo YWNjX2V2X2V4aXRfZGF0YV9lbmQsIGNiX2V4aXRfZGF0YV9lbmQsIGFjY19y ZWcpOworICByZWcgKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9zdGFydCwg Y2JfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQsIGFjY19yZWcpOworICByZWcg KGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNiX2NvbXB1dGVfY29u c3RydWN0X2VuZCwgYWNjX3JlZyk7CisgIHJlZyAoYWNjX2V2X2VucXVldWVf bGF1bmNoX3N0YXJ0LCBjYl9lbnF1ZXVlX2xhdW5jaF9zdGFydCwgYWNjX3Jl Zyk7CisgIHJlZyAoYWNjX2V2X2VucXVldWVfbGF1bmNoX2VuZCwgY2JfZW5x dWV1ZV9sYXVuY2hfZW5kLCBhY2NfcmVnKTsKKyAgYXNzZXJ0IChzdGF0ZSA9 PSAwKTsKKworICBhY2NfZGV2aWNlX3R5cGUgPSBhY2NfZ2V0X2RldmljZV90 eXBlICgpOworICBhY2NfZGV2aWNlX251bSA9IGFjY19nZXRfZGV2aWNlX251 bSAoYWNjX2RldmljZV90eXBlKTsKKyAgYWNjX2FzeW5jID0gYWNjX2FzeW5j X3N5bmM7CisgIGFzc2VydCAoc3RhdGUgPT0gMCk7CisKKyAgeworICAgIGlu dCBzdGF0ZV9pbml0OworI3ByYWdtYSBhY2MgcGFyYWxsZWwgQ09QWUlOKHN0 YXRlKSBjb3B5b3V0KHN0YXRlX2luaXQpCisgICAgeworICAgICAgc3RhdGVf aW5pdCA9IHN0YXRlOworICAgIH0KKyAgICBhc3NlcnQgKHN0YXRlX2luaXQg PT0gNCk7CisgIH0KKyNpZmRlZiBfX09QVElNSVpFX18KKyAgLyogVE9ETy4g IFdpdGggLU8yIG9wdGltaXphdGlvbnMgZW5hYmxlZCwgdGhlIGNvbXBpbGVy IGJlbGlldmVzIHRoYXQgaGVyZQorICAgICAic3RhdGUgPT0gMCIgc3RpbGwg aG9sZHMuICBJdCdzIG5vdCB5ZXQgY2xlYXIgd2hhdCdzIGdvaW5nIG9uLgor ICAgICBNaXMtb3B0aW1pemF0aW9uIGFjcm9zcyB0aGUgR09NUCBmdW5jdGlv biBjYWxsIGJvdW5kYXJ5PyAgUGVyIGl0cworICAgICBnY2Mvb21wLWJ1aWx0 aW5zLmRlZiBkZWZpbml0aW9uLCBCVUlMVF9JTl9HT0FDQ19QQVJBTExFTAor ICAgICAiR09BQ0NfcGFyYWxsZWxfa2V5ZWQiIGRvZXNuJ3QgaGF2ZSBhICJs ZWFmIiBhdHRyaWJ1dGUsIHNvIHRoZSBjb21waWxlcgorICAgICBtdXN0IGV4 cGVjdCBjYWxscyBiYWNrIGludG8gdGhpcyBjb21waWxhdGlvbiB1bml0PyAg Ki8KKyAgYXNtIHZvbGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7CisjZW5k aWYKKyAgYXNzZXJ0IChzdGF0ZSA9PSAxMCk7CisKKyAgU1RBVEVfT1AgKHN0 YXRlLCA9IDEwMCk7CisKKyAgYWNjX2FzeW5jID0gMTI7CisgIHsKKyAgICBp bnQgc3RhdGVfaW5pdDsKKyNwcmFnbWEgYWNjIHBhcmFsbGVsIGFzeW5jKGFj Y19hc3luYykgQ09QWUlOKHN0YXRlKSBjb3B5b3V0KHN0YXRlX2luaXQpCisg ICAgeworICAgICAgc3RhdGVfaW5pdCA9IHN0YXRlOworICAgIH0KKyNwcmFn bWEgYWNjIHdhaXQKKyAgICBhc3NlcnQgKHN0YXRlX2luaXQgPT0gMTA0KTsK KyAgfQorICBhc3NlcnQgKHN0YXRlID09IDExMCk7CisKKyAgcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9h Y2MtYy1jKystY29tbW9uL2FjY19wcm9mLXZhbGlkX2J5dGVzLTEuYyBiL2xp YmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1jb21tb24vYWNj X3Byb2YtdmFsaWRfYnl0ZXMtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmE5NTJjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLm9hY2MtYy1jKystY29tbW9uL2FjY19w cm9mLXZhbGlkX2J5dGVzLTEuYwpAQCAtMCwwICsxLDE3MiBAQAorLyogVGVz dCB0aGUgInZhbGlkX2J5dGVzIiBtYWdpYy4gICovCisKKyN1bmRlZiBOREVC VUcKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUgPGFjY19wcm9m Lmg+CisKKyNkZWZpbmUgREVCVUdfcHJpbnRmKC4uLikgLy9fX2J1aWx0aW5f cHJpbnRmIChfX1ZBX0FSR1NfXykKKwordm9pZCBjYl9kYXRhX2V2ZW50IChh Y2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpldmVu dF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJVR19w cmludGYgKCIlcyAlZFxuIiwgX19GVU5DVElPTl9fLCBwcm9mX2luZm8tPmV2 ZW50X3R5cGUpOworCisgIGFzc2VydCAocHJvZl9pbmZvLT52YWxpZF9ieXRl cyA9PSBfQUNDX1BST0ZfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAo ZXZlbnRfaW5mby0+ZGF0YV9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX0RB VEFfRVZFTlRfSU5GT19WQUxJRF9CWVRFUyk7CisgIGFzc2VydCAoYXBpX2lu Zm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfQVBJX0lORk9fVkFMSURfQllURVMp OworfQorCit2b2lkIGNiX2xhdW5jaF9ldmVudCAoYWNjX3Byb2ZfaW5mbyAq cHJvZl9pbmZvLCBhY2NfZXZlbnRfaW5mbyAqZXZlbnRfaW5mbywgYWNjX2Fw aV9pbmZvICphcGlfaW5mbykKK3sKKyAgREVCVUdfcHJpbnRmICgiJXMgJWRc biIsIF9fRlVOQ1RJT05fXywgcHJvZl9pbmZvLT5ldmVudF90eXBlKTsKKwor ICBhc3NlcnQgKHByb2ZfaW5mby0+dmFsaWRfYnl0ZXMgPT0gX0FDQ19QUk9G X0lORk9fVkFMSURfQllURVMpOworICBhc3NlcnQgKGV2ZW50X2luZm8tPmxh dW5jaF9ldmVudC52YWxpZF9ieXRlcyA9PSBfQUNDX0xBVU5DSF9FVkVOVF9J TkZPX1ZBTElEX0JZVEVTKTsKKyAgYXNzZXJ0IChhcGlfaW5mby0+dmFsaWRf Ynl0ZXMgPT0gX0FDQ19BUElfSU5GT19WQUxJRF9CWVRFUyk7Cit9CisKK3Zv aWQgY2Jfb3RoZXJfZXZlbnQgKGFjY19wcm9mX2luZm8gKnByb2ZfaW5mbywg YWNjX2V2ZW50X2luZm8gKmV2ZW50X2luZm8sIGFjY19hcGlfaW5mbyAqYXBp X2luZm8pCit7CisgIERFQlVHX3ByaW50ZiAoIiVzICVkXG4iLCBfX0ZVTkNU SU9OX18sIHByb2ZfaW5mby0+ZXZlbnRfdHlwZSk7CisKKyAgYXNzZXJ0IChw cm9mX2luZm8tPnZhbGlkX2J5dGVzID09IF9BQ0NfUFJPRl9JTkZPX1ZBTElE X0JZVEVTKTsKKyAgYXNzZXJ0IChldmVudF9pbmZvLT5vdGhlcl9ldmVudC52 YWxpZF9ieXRlcyA9PSBfQUNDX09USEVSX0VWRU5UX0lORk9fVkFMSURfQllU RVMpOworICBhc3NlcnQgKGFwaV9pbmZvLT52YWxpZF9ieXRlcyA9PSBfQUND X0FQSV9JTkZPX1ZBTElEX0JZVEVTKTsKK30KKwordm9pZCBhY2NfcmVnaXN0 ZXJfbGlicmFyeSAoYWNjX3Byb2ZfcmVnIHJlZ18sIGFjY19wcm9mX3JlZyB1 bnJlZ18sIGFjY19wcm9mX2xvb2t1cF9mdW5jIGxvb2t1cF8pCit7CisgIERF QlVHX3ByaW50ZiAoIiVzXG4iLCBfX0ZVTkNUSU9OX18pOworCisgIHJlZ18g KGFjY19ldl9kZXZpY2VfaW5pdF9zdGFydCwgY2Jfb3RoZXJfZXZlbnQsIGFj Y19yZWcpOworICByZWdfIChhY2NfZXZfZGV2aWNlX2luaXRfZW5kLCBjYl9v dGhlcl9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl9kZXZpY2Vf c2h1dGRvd25fc3RhcnQsIGNiX290aGVyX2V2ZW50LCBhY2NfcmVnKTsKKyAg cmVnXyAoYWNjX2V2X2RldmljZV9zaHV0ZG93bl9lbmQsIGNiX290aGVyX2V2 ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X3J1bnRpbWVfc2h1dGRv d24sIGNiX290aGVyX2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2 X2NyZWF0ZSwgY2JfZGF0YV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFj Y19ldl9kZWxldGUsIGNiX2RhdGFfZXZlbnQsIGFjY19yZWcpOworICByZWdf IChhY2NfZXZfYWxsb2MsIGNiX2RhdGFfZXZlbnQsIGFjY19yZWcpOworICBy ZWdfIChhY2NfZXZfZnJlZSwgY2JfZGF0YV9ldmVudCwgYWNjX3JlZyk7Cisg IHJlZ18gKGFjY19ldl9lbnRlcl9kYXRhX3N0YXJ0LCBjYl9vdGhlcl9ldmVu dCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl9lbnRlcl9kYXRhX2VuZCwg Y2Jfb3RoZXJfZXZlbnQsIGFjY19yZWcpOworICByZWdfIChhY2NfZXZfZXhp dF9kYXRhX3N0YXJ0LCBjYl9vdGhlcl9ldmVudCwgYWNjX3JlZyk7CisgIHJl Z18gKGFjY19ldl9leGl0X2RhdGFfZW5kLCBjYl9vdGhlcl9ldmVudCwgYWNj X3JlZyk7CisgIHJlZ18gKGFjY19ldl91cGRhdGVfc3RhcnQsIGNiX290aGVy X2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X3VwZGF0ZV9lbmQs IGNiX290aGVyX2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2Nv bXB1dGVfY29uc3RydWN0X3N0YXJ0LCBjYl9vdGhlcl9ldmVudCwgYWNjX3Jl Zyk7CisgIHJlZ18gKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9lbmQsIGNi X290aGVyX2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2VucXVl dWVfbGF1bmNoX3N0YXJ0LCBjYl9sYXVuY2hfZXZlbnQsIGFjY19yZWcpOwor ICByZWdfIChhY2NfZXZfZW5xdWV1ZV9sYXVuY2hfZW5kLCBjYl9sYXVuY2hf ZXZlbnQsIGFjY19yZWcpOworICByZWdfIChhY2NfZXZfZW5xdWV1ZV91cGxv YWRfc3RhcnQsIGNiX2RhdGFfZXZlbnQsIGFjY19yZWcpOworICByZWdfIChh Y2NfZXZfZW5xdWV1ZV91cGxvYWRfZW5kLCBjYl9kYXRhX2V2ZW50LCBhY2Nf cmVnKTsKKyAgcmVnXyAoYWNjX2V2X2VucXVldWVfZG93bmxvYWRfc3RhcnQs IGNiX2RhdGFfZXZlbnQsIGFjY19yZWcpOworICByZWdfIChhY2NfZXZfZW5x dWV1ZV9kb3dubG9hZF9lbmQsIGNiX2RhdGFfZXZlbnQsIGFjY19yZWcpOwor ICByZWdfIChhY2NfZXZfd2FpdF9zdGFydCwgY2Jfb3RoZXJfZXZlbnQsIGFj Y19yZWcpOworICByZWdfIChhY2NfZXZfd2FpdF9lbmQsIGNiX290aGVyX2V2 ZW50LCBhY2NfcmVnKTsKK30KKworLyogQmFzaWMgc3RydWN0LiAgKi8KK3R5 cGVkZWYgc3RydWN0IEEKK3sKKyAgaW50IGE7CisgIGludCBiOworI2RlZmlu ZSBWQUxJRF9CWVRFU19BIFwKKyAgX0FDQ19QUk9GX1ZBTElEX0JZVEVTX1NU UlVDVCAoQSwgYiwgXAorCQkJCV9BQ0NfUFJPRl9WQUxJRF9CWVRFU19CQVNJ Q1RZUEUgKGludCkpCit9IEE7CisKKy8qIEFkZCBhICJjaGFyIiBmaWVsZC4g ICovCit0eXBlZGVmIHN0cnVjdCBCCit7CisgIGludCBhOworICBpbnQgYjsK KyAgY2hhciBjOworI2RlZmluZSBWQUxJRF9CWVRFU19CIFwKKyAgX0FDQ19Q Uk9GX1ZBTElEX0JZVEVTX1NUUlVDVCAoQiwgYywgXAorCQkJCV9BQ0NfUFJP Rl9WQUxJRF9CWVRFU19CQVNJQ1RZUEUgKGNoYXIpKQorfSBCOworCisvKiBB ZGQgYW5vdGhlciAiY2hhciIgZmllbGQuICAqLwordHlwZWRlZiBzdHJ1Y3Qg QworeworICBpbnQgYTsKKyAgaW50IGI7CisgIGNoYXIgYywgZDsKKyNkZWZp bmUgVkFMSURfQllURVNfQyBcCisgIF9BQ0NfUFJPRl9WQUxJRF9CWVRFU19T VFJVQ1QgKEMsIGQsIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllURVNfQkFT SUNUWVBFIChjaGFyKSkKK30gQzsKKworLyogQWRkIHR3byAidm9pZCAqIiBm aWVsZHMuICAqLwordHlwZWRlZiBzdHJ1Y3QgRAoreworICBpbnQgYTsKKyAg aW50IGI7CisgIGNoYXIgYywgZDsKKyAgdm9pZCAqZTsKKyAgdm9pZCAqZjsK KyNkZWZpbmUgVkFMSURfQllURVNfRCBcCisgIF9BQ0NfUFJPRl9WQUxJRF9C WVRFU19TVFJVQ1QgKEQsIGYsIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllU RVNfQkFTSUNUWVBFICh2b2lkICopKQorfSBEOworCisvKiBBZGQgYW5vdGhl ciB0aHJlZSAiY2hhciIgZmllbGRzLiAgKi8KK3R5cGVkZWYgc3RydWN0IEUK K3sKKyAgaW50IGE7CisgIGludCBiOworICBjaGFyIGMsIGQ7CisgIHZvaWQg KmU7CisgIHZvaWQgKmY7CisgIGNoYXIgZywgaCwgaTsKKyNkZWZpbmUgVkFM SURfQllURVNfRSBcCisgIF9BQ0NfUFJPRl9WQUxJRF9CWVRFU19TVFJVQ1Qg KEUsIGksIFwKKwkJCQlfQUNDX1BST0ZfVkFMSURfQllURVNfQkFTSUNUWVBF IChjaGFyKSkKK30gRTsKKworaW50IG1haW4oKQoreworICBBIEExOworICBE RUJVR19wcmludGYgKCJzPSV6ZCwgdmI9JXpkXG4iLCBzaXplb2YgQTEsIFZB TElEX0JZVEVTX0EpOworICBhc3NlcnQgKFZBTElEX0JZVEVTX0EgPD0gc2l6 ZW9mIEExKTsKKyAgREVCVUdfcHJpbnRmICgiJkExPSVwLCAmQTEuYj0lcFxu IiwgJkExLCAmQTEuYik7CisgIGFzc2VydCAoKChjaGFyICopICZBMSkgKyBW QUxJRF9CWVRFU19BID09IChjaGFyICopICgmQTEuYiArIDEpKTsKKworICBC IEIxOworICBERUJVR19wcmludGYgKCJzPSV6ZCwgdmI9JXpkXG4iLCBzaXpl b2YgQjEsIFZBTElEX0JZVEVTX0IpOworICBhc3NlcnQgKFZBTElEX0JZVEVT X0IgPD0gc2l6ZW9mIEIxKTsKKyAgREVCVUdfcHJpbnRmICgiJkIxPSVwLCAm QjEuYz0lcFxuIiwgJkIxLCAmQjEuYyk7CisgIGFzc2VydCAoKChjaGFyICop ICZCMSkgKyBWQUxJRF9CWVRFU19CID09IChjaGFyICopICgmQjEuYyArIDEp KTsKKworICBhc3NlcnQgKFZBTElEX0JZVEVTX0IgPT0gVkFMSURfQllURVNf QSArIDEgKiBzaXplb2YgKGNoYXIpKTsKKworICBDIEMxOworICBERUJVR19w cmludGYgKCJzPSV6ZCwgdmI9JXpkXG4iLCBzaXplb2YgQzEsIFZBTElEX0JZ VEVTX0MpOworICBhc3NlcnQgKFZBTElEX0JZVEVTX0MgPD0gc2l6ZW9mIEMx KTsKKyAgREVCVUdfcHJpbnRmICgiJkMxPSVwLCAmQzEuZD0lcFxuIiwgJkMx LCAmQzEuZCk7CisgIGFzc2VydCAoKChjaGFyICopICZDMSkgKyBWQUxJRF9C WVRFU19DID09IChjaGFyICopICgmQzEuZCArIDEpKTsKKworICBhc3NlcnQg KFZBTElEX0JZVEVTX0MgPT0gVkFMSURfQllURVNfQiArIDEgKiBzaXplb2Yg KGNoYXIpKTsKKworICBEIEQxOworICBERUJVR19wcmludGYgKCJzPSV6ZCwg dmI9JXpkXG4iLCBzaXplb2YgRDEsIFZBTElEX0JZVEVTX0QpOworICBhc3Nl cnQgKFZBTElEX0JZVEVTX0QgPD0gc2l6ZW9mIEQxKTsKKyAgREVCVUdfcHJp bnRmICgiJkQxPSVwLCAmRDEuZj0lcFxuIiwgJkQxLCAmRDEuZik7CisgIGFz c2VydCAoKChjaGFyICopICZEMSkgKyBWQUxJRF9CWVRFU19EID09IChjaGFy ICopICgmRDEuZiArIDEpKTsKKworICBhc3NlcnQgKFZBTElEX0JZVEVTX0Qg PiBWQUxJRF9CWVRFU19DKTsKKworICBFIEUxOworICBERUJVR19wcmludGYg KCJzPSV6ZCwgdmI9JXpkXG4iLCBzaXplb2YgRTEsIFZBTElEX0JZVEVTX0Up OworICBhc3NlcnQgKFZBTElEX0JZVEVTX0UgPD0gc2l6ZW9mIEUxKTsKKyAg REVCVUdfcHJpbnRmICgiJkUxPSVwLCAmRTEuaT0lcFxuIiwgJkUxLCAmRTEu aSk7CisgIGFzc2VydCAoKChjaGFyICopICZFMSkgKyBWQUxJRF9CWVRFU19F ID09IChjaGFyICopICgmRTEuaSArIDEpKTsKKworICBhc3NlcnQgKFZBTElE X0JZVEVTX0UgPT0gVkFMSURfQllURVNfRCArIDMgKiBzaXplb2YgKGNoYXIp KTsKKworI3ByYWdtYSBhY2MgcGFyYWxsZWwKKyAgeworICB9CisKKyAgcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLm9hY2MtYy1jKystY29tbW9uL2FjY19wcm9mLXZlcnNpb24tMS5jIGIv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9h Y2NfcHJvZi12ZXJzaW9uLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xMWUzYWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hY2NfcHJv Zi12ZXJzaW9uLTEuYwpAQCAtMCwwICsxLDU1IEBACisvKiBUZXN0ICJhY2Nf cHJvZl9pbmZvIidzICAidmVyc2lvbiIgZmllbGQuICAqLworCisjdW5kZWYg TkRFQlVHCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpbmNsdWRlIDxhY2Nf cHJvZi5oPgorCisjZGVmaW5lIERFQlVHX3ByaW50ZiguLi4pIC8vX19idWls dGluX3ByaW50ZiAoX19WQV9BUkdTX18pCisKK3ZvaWQgY2JfYW55X2V2ZW50 IChhY2NfcHJvZl9pbmZvICpwcm9mX2luZm8sIGFjY19ldmVudF9pbmZvICpl dmVudF9pbmZvLCBhY2NfYXBpX2luZm8gKmFwaV9pbmZvKQoreworICBERUJV R19wcmludGYgKCIlcyAlZFxuIiwgX19GVU5DVElPTl9fLCBwcm9mX2luZm8t PmV2ZW50X3R5cGUpOworCisgIGFzc2VydCAocHJvZl9pbmZvLT52ZXJzaW9u ID09IDIwMTcxMSk7Cit9CisKK3ZvaWQgYWNjX3JlZ2lzdGVyX2xpYnJhcnkg KGFjY19wcm9mX3JlZyByZWdfLCBhY2NfcHJvZl9yZWcgdW5yZWdfLCBhY2Nf cHJvZl9sb29rdXBfZnVuYyBsb29rdXBfKQoreworICBERUJVR19wcmludGYg KCIlc1xuIiwgX19GVU5DVElPTl9fKTsKKworICByZWdfIChhY2NfZXZfZGV2 aWNlX2luaXRfc3RhcnQsIGNiX2FueV9ldmVudCwgYWNjX3JlZyk7CisgIHJl Z18gKGFjY19ldl9kZXZpY2VfaW5pdF9lbmQsIGNiX2FueV9ldmVudCwgYWNj X3JlZyk7CisgIHJlZ18gKGFjY19ldl9kZXZpY2Vfc2h1dGRvd25fc3RhcnQs IGNiX2FueV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl9kZXZp Y2Vfc2h1dGRvd25fZW5kLCBjYl9hbnlfZXZlbnQsIGFjY19yZWcpOworICBy ZWdfIChhY2NfZXZfcnVudGltZV9zaHV0ZG93biwgY2JfYW55X2V2ZW50LCBh Y2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2NyZWF0ZSwgY2JfYW55X2V2ZW50 LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2RlbGV0ZSwgY2JfYW55X2V2 ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2FsbG9jLCBjYl9hbnlf ZXZlbnQsIGFjY19yZWcpOworICByZWdfIChhY2NfZXZfZnJlZSwgY2JfYW55 X2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2VudGVyX2RhdGFf c3RhcnQsIGNiX2FueV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19l dl9lbnRlcl9kYXRhX2VuZCwgY2JfYW55X2V2ZW50LCBhY2NfcmVnKTsKKyAg cmVnXyAoYWNjX2V2X2V4aXRfZGF0YV9zdGFydCwgY2JfYW55X2V2ZW50LCBh Y2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2V4aXRfZGF0YV9lbmQsIGNiX2Fu eV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl91cGRhdGVfc3Rh cnQsIGNiX2FueV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl91 cGRhdGVfZW5kLCBjYl9hbnlfZXZlbnQsIGFjY19yZWcpOworICByZWdfIChh Y2NfZXZfY29tcHV0ZV9jb25zdHJ1Y3Rfc3RhcnQsIGNiX2FueV9ldmVudCwg YWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl9jb21wdXRlX2NvbnN0cnVjdF9l bmQsIGNiX2FueV9ldmVudCwgYWNjX3JlZyk7CisgIHJlZ18gKGFjY19ldl9l bnF1ZXVlX2xhdW5jaF9zdGFydCwgY2JfYW55X2V2ZW50LCBhY2NfcmVnKTsK KyAgcmVnXyAoYWNjX2V2X2VucXVldWVfbGF1bmNoX2VuZCwgY2JfYW55X2V2 ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2VucXVldWVfdXBsb2Fk X3N0YXJ0LCBjYl9hbnlfZXZlbnQsIGFjY19yZWcpOworICByZWdfIChhY2Nf ZXZfZW5xdWV1ZV91cGxvYWRfZW5kLCBjYl9hbnlfZXZlbnQsIGFjY19yZWcp OworICByZWdfIChhY2NfZXZfZW5xdWV1ZV9kb3dubG9hZF9zdGFydCwgY2Jf YW55X2V2ZW50LCBhY2NfcmVnKTsKKyAgcmVnXyAoYWNjX2V2X2VucXVldWVf ZG93bmxvYWRfZW5kLCBjYl9hbnlfZXZlbnQsIGFjY19yZWcpOworICByZWdf IChhY2NfZXZfd2FpdF9zdGFydCwgY2JfYW55X2V2ZW50LCBhY2NfcmVnKTsK KyAgcmVnXyAoYWNjX2V2X3dhaXRfZW5kLCBjYl9hbnlfZXZlbnQsIGFjY19y ZWcpOworfQorCitpbnQgbWFpbigpCit7CisjcHJhZ21hIGFjYyBwYXJhbGxl bAorICB7CisgIH0KKworICByZXR1cm4gMDsKK30KLS0gCjIuOC4xCgo= --------------07B02AA404F2D74F124954F7--