From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 04C173857C79 for ; Fri, 10 Dec 2021 17:31:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 04C173857C79 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: 9AC+09MUGvdtay7L675N6B4X48Aoye5+SAg0cbML9e9U6OL57NTdM96Prkv0cLKkhmkC/ULwAe nH60RSt+4E8okfsNpOldJWQPOMnD8Iei0M59tfrSH02a1E6tQ8Sf1n6mBeKjyLhBEVKtbOy6A+ U//+rAoou6gh052EzxA3aqyr6ENrfUBu+2N1xfgxDwgpWiXQMUhVyRJbzzyBC2O8lRUBPmb6Pe uOoFml85prYUbWaXp1+Pr+y/YAiQuJerPb4NXO07FhFl8v0Zsom0l5gqwThypomc+vjKDH24xG O0CEES3ZOr4dqWdYwS6Hd1K1 X-IronPort-AV: E=Sophos;i="5.88,196,1635235200"; d="scan'208,223";a="72064089" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 10 Dec 2021 09:31:52 -0800 IronPort-SDR: FKD0gW24bX1CsTvcUBH5Bk25ZBSn/QvEVgL49lwW1EpSYACntRkiRzzvXFuqPSjhI6ZP4cb1Ul nMB2gd0BaxmSbnY4dKqm//qOOzCQBeuIFqD3Uer0BGb/EQfgCfk6UVbp7pj6CHYQlUaZFI25J6 N9iB/V4FU7be2pvIqNlBzTT3BDH2ExOJ0TDIOzXWTHpELlnlIbfRJzwfDo0Wbq5NkP1Lan2D40 ge4CRb0+o3iPfRlIOmPG/QzLIh9+SMs6IzJYYeDPv17InJFdELG6wxqLzIc+AqcqDfEj0vHAhs 9Jo= Content-Type: multipart/mixed; boundary="------------06kuqVvY039pVD0mj1v3X7zS" Message-ID: <4a277a5e-6070-b287-7bc8-c2bcc72532a0@codesourcery.com> Date: Fri, 10 Dec 2021 17:31:08 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 To: gcc-patches , Jakub Jelinek References: Subject: [PATCH 1/7] openmp: Add C support for parsing metadirectives From: Kwok Cheung Yeung In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 17:31:58 -0000 --------------06kuqVvY039pVD0mj1v3X7zS Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch adds support for parsing metadirectives in the C parser. Metadirectives are represented by a OMP_METADIRECTIVE tree node. It has a single operand (accessed by OMP_METADIRECTIVE_CLAUSES) which contains a chain of TREE_LIST nodes, each one representing a clause from the metadirective. TREE_PURPOSE(clause) contains the selector of the clause, while TREE_VALUE(clause) contains another TREE_LIST - the TREE_PURPOSE contains the tree for the directive, while the TREE_VALUE contains the standalone body (if any). If an OMP directive has an associated body, it will be part of the tree at TREE_PURPOSE(TREE_VALUE(clause)) - the standalone body at TREE_VALUE(TREE_VALUE(clause) is only used for standalone directives that do not have an associated body (strictly speaking, it isn't a part of the directive variant at all). At present, all standalone bodies in a metadirective are shared, and will point to the same tree node. Labels in the statement body are handled by first scanning the body for labels, then enclosing the statements in a lexical block with the found labels declared as local using __label__. This prevents labels in the body interfering with each other when the body is re-parsed. I have removed support for the 'omp begin metadirective'..'omp end metadirective' form of the directive that was originally in the WIP patch. According to the spec, the only variant directives that can be used in this form must have an 'end ' form (apart from the 'nothing' directive), and in C/C++, the only directive that we support with an end form is 'declare target', which we currently forbid since it is declarative. Kwok --------------06kuqVvY039pVD0mj1v3X7zS Content-Type: text/plain; charset="UTF-8"; name="0001-openmp-Add-C-support-for-parsing-metadirectives.patch" Content-Disposition: attachment; filename="0001-openmp-Add-C-support-for-parsing-metadirectives.patch" Content-Transfer-Encoding: base64 RnJvbSBkYzg4NTU5YjAyOTUxMDQ0NzJhMGNiZjc5ZGUwM2IwNTQ5YmQzNWY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IE1vbiwgNiBEZWMgMjAyMSAxOToxNToyMyArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggMS83XSBvcGVubXA6IEFkZCBDIHN1cHBvcnQgZm9yIHBhcnNpbmcgbWV0YWRp cmVjdGl2ZXMKClRoaXMgcGF0Y2ggaW1wbGVtZW50cyBwYXJzaW5nIGZvciB0aGUgT3Blbk1Q IG1ldGFkaXJlY3RpdmUgaW50cm9kdWNlZCBpbgpPcGVuTVAgNS4wLiAgTWV0YWRpcmVjdGl2 ZXMgYXJlIHBhcnNlZCBpbnRvIGFuIE9NUF9NRVRBRElSRUNUSVZFIG5vZGUsCndpdGggdGhl IHZhcmlhbnQgY2xhdXNlcyBmb3JtaW5nIGEgY2hhaW4gYWNjZXNzaWJsZSB2aWEKT01QX01F VEFESVJFQ1RJVkVfQ0xBVVNFUy4gIEVhY2ggY2xhdXNlIGNvbnRhaW5zIHRoZSBjb250ZXh0 IHNlbGVjdG9yCmFuZCB0cmVlIGZvciB0aGUgdmFyaWFudC4KClVzZXIgY29uZGl0aW9ucyBp biB0aGUgc2VsZWN0b3IgYXJlIG5vdyBwZXJtaXR0ZWQgdG8gYmUgbm9uLWNvbnN0YW50IHdo ZW4KdXNlZCBpbiBtZXRhZGlyZWN0aXZlcyBhcyBzcGVjaWZpZWQgaW4gT3Blbk1QIDUuMS4K CjIwMjEtMTItMTAgIEt3b2sgQ2hldW5nIFlldW5nICA8a2N5QGNvZGVzb3VyY2VyeS5jb20+ CgoJZ2NjLwoJKiBvbXAtZ2VuZXJhbC5jIChvbXBfY29udGV4dF9zZWxlY3Rvcl9tYXRjaGVz KTogQWRkIGV4dHJhIGFyZ3VtZW50LgoJKG9tcF9yZXNvbHZlX21ldGFkaXJlY3RpdmUpOiBO ZXcgc3R1YiBmdW5jdGlvbi4KCSogb21wLWdlbmVyYWwuaCAoc3RydWN0IG9tcF9tZXRhZGly ZWN0aXZlX3ZhcmlhbnQpOiBOZXcuCgkob21wX2NvbnRleHRfc2VsZWN0b3JfbWF0Y2hlcyk6 IEFkZCBleHRyYSBhcmd1bWVudC4KCShvbXBfcmVzb2x2ZV9tZXRhZGlyZWN0aXZlKTogTmV3 IHByb3RvdHlwZS4KCSogdHJlZS5kZWYgKE9NUF9NRVRBRElSRUNUSVZFKTogTmV3LgoJKiB0 cmVlLmggKE9NUF9NRVRBRElSRUNUSVZFX0NMQVVTRVMpOiBOZXcgbWFjcm8uCgoJZ2NjL2Mv CgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3NraXBfdG9fZW5kX29mX2Jsb2NrX29yX3N0YXRl bWVudCk6IEhhbmRsZQoJcGFyZW50aGVzZXMgaW4gc3RhdGVtZW50LgoJKGNfcGFyc2VyX29t cF9tZXRhZGlyZWN0aXZlKTogTmV3IHByb3RvdHlwZS4KCShjX3BhcnNlcl9vbXBfY29udGV4 dF9zZWxlY3Rvcik6IEFkZCBleHRyYSBhcmd1bWVudC4gIEFsbG93Cglub24tY29uc3RhbnQg ZXhwcmVzc2lvbnMuCgkoY19wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNh dGlvbik6IEFkZCBleHRyYSBhcmd1bWVudCBhbmQKCXByb3BhZ2F0ZSBpdCB0byBjX3BhcnNl cl9vbXBfY29udGV4dF9zZWxlY3Rvci4KCShhbmFseXplX21ldGFkaXJlY3RpdmVfYm9keSk6 IE5ldy4KCShjX3BhcnNlcl9vbXBfbWV0YWRpcmVjdGl2ZSk6IE5ldy4KCShjX3BhcnNlcl9v bXBfY29uc3RydWN0KTogSGFuZGxlIFBSQUdNQV9PTVBfTUVUQURJUkVDVElWRS4KCglnY2Mv Yy1mYW1pbHkKCSogYy1jb21tb24uaCAoZW51bSBjX29tcF9kaXJlY3RpdmVfa2luZCk6IEFk ZCBDX09NUF9ESVJfTUVUQS4KCShjX29tcF9leHBhbmRfbWV0YWRpcmVjdGl2ZSk6IE5ldyBw cm90b3R5cGUuCgkqIGMtZ2ltcGxpZnkuYyAoZ2VuZXJpY2l6ZV9vbXBfbWV0YWRpcmVjdGl2 ZV9zdG10KTogTmV3LgoJKGNfZ2VuZXJpY2l6ZV9jb250cm9sX3N0bXQpOiBIYW5kbGUgT01Q X01FVEFESVJFQ1RJVkUgdHJlZSBub2Rlcy4KCSogYy1vbXAuYyAob21wX2RpcmVjdGl2ZXMp OiBDbGFzc2lmeSBtZXRhZGlyZWN0aXZlcyBhcyBDX09NUF9ESVJfTUVUQS4KCShjX29tcF9l eHBhbmRfbWV0YWRpcmVjdGl2ZSk6IE5ldyBzdHViIGZ1bmN0aW9uLgoJKiBjLXByYWdtYS5j IChvbXBfcHJhZ21hcyk6IEFkZCBlbnRyeSBmb3IgbWV0YWRpcmVjdGl2ZS4KCSogYy1wcmFn bWEuaCAoZW51bSBwcmFnbWFfa2luZCk6IEFkZCBQUkFHTUFfT01QX01FVEFESVJFQ1RJVkUu Ci0tLQogZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmggICB8ICAgNCArLQogZ2NjL2MtZmFtaWx5 L2MtZ2ltcGxpZnkuYyB8ICAyNSArKysKIGdjYy9jLWZhbWlseS9jLW9tcC5jICAgICAgfCAg MTQgKy0KIGdjYy9jLWZhbWlseS9jLXByYWdtYS5jICAgfCAgIDEgKwogZ2NjL2MtZmFtaWx5 L2MtcHJhZ21hLmggICB8ICAgMSArCiBnY2MvYy9jLXBhcnNlci5jICAgICAgICAgIHwgNDAz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBnY2Mvb21wLWdlbmVy YWwuYyAgICAgICAgIHwgIDE0ICstCiBnY2Mvb21wLWdlbmVyYWwuaCAgICAgICAgIHwgICA5 ICstCiBnY2MvdHJlZS5kZWYgICAgICAgICAgICAgIHwgICA1ICsKIGdjYy90cmVlLmggICAg ICAgICAgICAgICAgfCAgIDMgKwogMTAgZmlsZXMgY2hhbmdlZCwgNDY1IGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWNvbW1v bi5oIGIvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmgKaW5kZXggYzA4OWZkYTEyZTQuLmVmMzcw NTE3OTFmIDEwMDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy1jb21tb24uaAorKysgYi9nY2Mv Yy1mYW1pbHkvYy1jb21tb24uaApAQCAtMTI1Nyw3ICsxMjU3LDggQEAgZW51bSBjX29tcF9k aXJlY3RpdmVfa2luZCB7CiAgIENfT01QX0RJUl9DT05TVFJVQ1QsCiAgIENfT01QX0RJUl9E RUNMQVJBVElWRSwKICAgQ19PTVBfRElSX1VUSUxJVFksCi0gIENfT01QX0RJUl9JTkZPUk1B VElPTkFMCisgIENfT01QX0RJUl9JTkZPUk1BVElPTkFMLAorICBDX09NUF9ESVJfTUVUQQog fTsKIAogc3RydWN0IGNfb21wX2RpcmVjdGl2ZSB7CkBAIC0xMjcwLDYgKzEyNzEsNyBAQCBz dHJ1Y3QgY19vbXBfZGlyZWN0aXZlIHsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgY19vbXBfZGly ZWN0aXZlICpjX29tcF9jYXRlZ29yaXplX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqLAogCQkJ CQkJCQkgY29uc3QgY2hhciAqLAogCQkJCQkJCQkgY29uc3QgY2hhciAqKTsKK2V4dGVybiB0 cmVlIGNfb21wX2V4cGFuZF9tZXRhZGlyZWN0aXZlICh2ZWM8c3RydWN0IG9tcF9tZXRhZGly ZWN0aXZlX3ZhcmlhbnQ+ICYpOwogCiAvKiBSZXR1cm4gbmV4dCB0cmVlIGluIHRoZSBjaGFp biBmb3IgY2hhaW5fbmV4dCB3YWxraW5nIG9mIHRyZWUgbm9kZXMuICAqLwogc3RhdGljIGlu bGluZSB0cmVlCmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1naW1wbGlmeS5jIGIvZ2Nj L2MtZmFtaWx5L2MtZ2ltcGxpZnkuYwppbmRleCAwZDM4YjcwNmY0Yy4uNGM1ZmVkZGYwNDEg MTAwNjQ0Ci0tLSBhL2djYy9jLWZhbWlseS9jLWdpbXBsaWZ5LmMKKysrIGIvZ2NjL2MtZmFt aWx5L2MtZ2ltcGxpZnkuYwpAQCAtNDQ5LDYgKzQ0OSwyNiBAQCBnZW5lcmljaXplX29tcF9m b3Jfc3RtdCAodHJlZSAqc3RtdF9wLCBpbnQgKndhbGtfc3VidHJlZXMsIHZvaWQgKmRhdGEs CiAgIGZpbmlzaF9iY19ibG9jayAoJk9NUF9GT1JfQk9EWSAoc3RtdCksIGJjX2NvbnRpbnVl LCBjbGFiKTsKIH0KIAorLyogR2VuZXJpY2l6ZSBhIE9NUF9NRVRBRElSRUNUSVZFIG5vZGUg KlNUTVRfUC4gICovCisKK3N0YXRpYyB2b2lkCitnZW5lcmljaXplX29tcF9tZXRhZGlyZWN0 aXZlX3N0bXQgKHRyZWUgKnN0bXRfcCwgaW50ICp3YWxrX3N1YnRyZWVzLAorCQkJCSAgIHZv aWQgKmRhdGEsIHdhbGtfdHJlZV9mbiBmdW5jLAorCQkJCSAgIHdhbGtfdHJlZV9saCBsaCkK K3sKKyAgdHJlZSBzdG10ID0gKnN0bXRfcDsKKworICBmb3IgKHRyZWUgY2xhdXNlID0gT01Q X01FVEFESVJFQ1RJVkVfQ0xBVVNFUyAoc3RtdCk7CisgICAgICAgY2xhdXNlICE9IE5VTExf VFJFRTsKKyAgICAgICBjbGF1c2UgPSBUUkVFX0NIQUlOIChjbGF1c2UpKQorICAgIHsKKyAg ICAgIHRyZWUgdmFyaWFudCA9IFRSRUVfVkFMVUUgKGNsYXVzZSk7CisgICAgICB3YWxrX3Ry ZWVfMSAoJlRSRUVfUFVSUE9TRSAodmFyaWFudCksIGZ1bmMsIGRhdGEsIE5VTEwsIGxoKTsK KyAgICAgIHdhbGtfdHJlZV8xICgmVFJFRV9WQUxVRSAodmFyaWFudCksIGZ1bmMsIGRhdGEs IE5VTEwsIGxoKTsKKyAgICB9CisKKyAgKndhbGtfc3VidHJlZXMgPSAwOworfQogCiAvKiBM b3dlciBzdHJ1Y3R1cmVkIGNvbnRyb2wgZmxvdyB0cmVlIG5vZGVzLCBzdWNoIGFzIGxvb3Bz LiAgVGhlCiAgICBTVE1UX1AsIFdBTEtfU1VCVFJFRVMsIGFuZCBEQVRBIGFyZ3VtZW50cyBh cmUgYXMgZm9yIHRoZSB3YWxrX3RyZWVfZm4KQEAgLTQ5Nyw2ICs1MTcsMTEgQEAgY19nZW5l cmljaXplX2NvbnRyb2xfc3RtdCAodHJlZSAqc3RtdF9wLCBpbnQgKndhbGtfc3VidHJlZXMs IHZvaWQgKmRhdGEsCiAgICAgICBnZW5lcmljaXplX29tcF9mb3Jfc3RtdCAoc3RtdF9wLCB3 YWxrX3N1YnRyZWVzLCBkYXRhLCBmdW5jLCBsaCk7CiAgICAgICBicmVhazsKIAorICAgIGNh c2UgT01QX01FVEFESVJFQ1RJVkU6CisgICAgICBnZW5lcmljaXplX29tcF9tZXRhZGlyZWN0 aXZlX3N0bXQgKHN0bXRfcCwgd2Fsa19zdWJ0cmVlcywgZGF0YSwgZnVuYywKKwkJCQkJIGxo KTsKKyAgICAgIGJyZWFrOworCiAgICAgY2FzZSBTVEFURU1FTlRfTElTVDoKICAgICAgIGlm IChUUkVFX1NJREVfRUZGRUNUUyAoc3RtdCkpCiAJewpkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFt aWx5L2Mtb21wLmMgYi9nY2MvYy1mYW1pbHkvYy1vbXAuYwppbmRleCAzZjg0ZmQxYjVjYi4u OWE3YTY4MzRmMWIgMTAwNjQ0Ci0tLSBhL2djYy9jLWZhbWlseS9jLW9tcC5jCisrKyBiL2dj Yy9jLWZhbWlseS9jLW9tcC5jCkBAIC0zMTMzLDcgKzMxMzMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGNfb21wX2RpcmVjdGl2ZSBvbXBfZGlyZWN0aXZlc1tdID0gewogICAvKiB7ICJi ZWdpbiIsICJkZWNsYXJlIiwgInZhcmlhbnQiLCBQUkFHTUFfT01QX0JFR0lOLAogICAgIENf T01QX0RJUl9ERUNMQVJBVElWRSwgZmFsc2UgfSwgKi8KICAgLyogeyAiYmVnaW4iLCAibWV0 YWRpcmVjdGl2ZSIsIG51bGxwdHIsIFBSQUdNQV9PTVBfQkVHSU4sCi0gICAgQ19PTVBfRElS Xz8/PywgPz8/IH0sICAqLworICAgIENfT01QX0RJUl9NRVRBLCBmYWxzZSB9LCAgKi8KICAg eyAiY2FuY2VsIiwgbnVsbHB0ciwgbnVsbHB0ciwgUFJBR01BX09NUF9DQU5DRUwsCiAgICAg Q19PTVBfRElSX1NUQU5EQUxPTkUsIGZhbHNlIH0sCiAgIHsgImNhbmNlbGxhdGlvbiIsICJw b2ludCIsIG51bGxwdHIsIFBSQUdNQV9PTVBfQ0FOQ0VMTEFUSU9OX1BPSU5ULApAQCAtMzE2 Myw3ICszMTYzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjX29tcF9kaXJlY3RpdmUgb21w X2RpcmVjdGl2ZXNbXSA9IHsKICAgLyogeyAiZW5kIiwgImRlY2xhcmUiLCAidmFyaWFudCIs IFBSQUdNQV9PTVBfRU5ELAogICAgIENfT01QX0RJUl9ERUNMQVJBVElWRSwgZmFsc2UgfSwg Ki8KICAgLyogeyAiZW5kIiwgIm1ldGFkaXJlY3RpdmUiLCBudWxscHRyLCBQUkFHTUFfT01Q X0VORCwKLSAgICBDX09NUF9ESVJfPz8/LCA/Pz8gfSwgICovCisgICAgQ19PTVBfRElSX01F VEEsIGZhbHNlIH0sICAqLwogICAvKiBlcnJvciB3aXRoIGF0KGV4ZWN1dGlvbikgaXMgQ19P TVBfRElSX1NUQU5EQUxPTkUuICAqLwogICB7ICJlcnJvciIsIG51bGxwdHIsIG51bGxwdHIs IFBSQUdNQV9PTVBfRVJST1IsCiAgICAgQ19PTVBfRElSX1VUSUxJVFksIGZhbHNlIH0sCkBA IC0zMTc5LDggKzMxNzksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNfb21wX2RpcmVjdGl2 ZSBvbXBfZGlyZWN0aXZlc1tdID0gewogICAgIENfT01QX0RJUl9DT05TVFJVQ1QsIHRydWUg fSwKICAgeyAibWFzdGVyIiwgbnVsbHB0ciwgbnVsbHB0ciwgUFJBR01BX09NUF9NQVNURVIs CiAgICAgQ19PTVBfRElSX0NPTlNUUlVDVCwgdHJ1ZSB9LAotICAvKiB7ICJtZXRhZGlyZWN0 aXZlIiwgbnVsbHB0ciwgbnVsbHB0ciwgUFJBR01BX09NUF9NRVRBRElSRUNUSVZFLAotICAg IENfT01QX0RJUl8/Pz8sID8/PyB9LCAgKi8KKyAgeyAibWV0YWRpcmVjdGl2ZSIsIG51bGxw dHIsIG51bGxwdHIsIFBSQUdNQV9PTVBfTUVUQURJUkVDVElWRSwKKyAgICBDX09NUF9ESVJf TUVUQSwgZmFsc2UgfSwKICAgeyAibm90aGluZyIsIG51bGxwdHIsIG51bGxwdHIsIFBSQUdN QV9PTVBfTk9USElORywKICAgICBDX09NUF9ESVJfVVRJTElUWSwgZmFsc2UgfSwKICAgLyog b3JkZXJlZCB3aXRoIGRlcGVuZCBjbGF1c2UgaXMgQ19PTVBfRElSX1NUQU5EQUxPTkUuICAq LwpAQCAtMzI2MywzICszMjYzLDkgQEAgY19vbXBfY2F0ZWdvcml6ZV9kaXJlY3RpdmUgKGNv bnN0IGNoYXIgKmZpcnN0LCBjb25zdCBjaGFyICpzZWNvbmQsCiAgICAgfQogICByZXR1cm4g TlVMTDsKIH0KKwordHJlZQorY19vbXBfZXhwYW5kX21ldGFkaXJlY3RpdmUgKHZlYzxzdHJ1 Y3Qgb21wX21ldGFkaXJlY3RpdmVfdmFyaWFudD4gJikKK3sKKyAgcmV0dXJuIE5VTExfVFJF RTsKK30KZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLXByYWdtYS5jIGIvZ2NjL2MtZmFt aWx5L2MtcHJhZ21hLmMKaW5kZXggYzRlZDQyMDU4MjAuLmJkMjdkZTdmMTI2IDEwMDY0NAot LS0gYS9nY2MvYy1mYW1pbHkvYy1wcmFnbWEuYworKysgYi9nY2MvYy1mYW1pbHkvYy1wcmFn bWEuYwpAQCAtMTM2NSw2ICsxMzY1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvbXBfcHJh Z21hX2RlZiBvbXBfcHJhZ21hc1tdID0gewogICB7ICJlcnJvciIsIFBSQUdNQV9PTVBfRVJS T1IgfSwKICAgeyAiZW5kIiwgUFJBR01BX09NUF9FTkRfREVDTEFSRV9UQVJHRVQgfSwKICAg eyAiZmx1c2giLCBQUkFHTUFfT01QX0ZMVVNIIH0sCisgIHsgIm1ldGFkaXJlY3RpdmUiLCBQ UkFHTUFfT01QX01FVEFESVJFQ1RJVkUgfSwKICAgeyAibm90aGluZyIsIFBSQUdNQV9PTVBf Tk9USElORyB9LAogICB7ICJyZXF1aXJlcyIsIFBSQUdNQV9PTVBfUkVRVUlSRVMgfSwKICAg eyAic2NvcGUiLCBQUkFHTUFfT01QX1NDT1BFIH0sCmRpZmYgLS1naXQgYS9nY2MvYy1mYW1p bHkvYy1wcmFnbWEuaCBiL2djYy9jLWZhbWlseS9jLXByYWdtYS5oCmluZGV4IDBjNWIwN2Fi NGUxLi4xNDUyNjBlMGMyMCAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtcHJhZ21hLmgK KysrIGIvZ2NjL2MtZmFtaWx5L2MtcHJhZ21hLmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBw cmFnbWFfa2luZCB7CiAgIFBSQUdNQV9PTVBfTk9USElORywKICAgUFJBR01BX09NUF9NQVNL RUQsCiAgIFBSQUdNQV9PTVBfTUFTVEVSLAorICBQUkFHTUFfT01QX01FVEFESVJFQ1RJVkUs CiAgIFBSQUdNQV9PTVBfT1JERVJFRCwKICAgUFJBR01BX09NUF9QQVJBTExFTCwKICAgUFJB R01BX09NUF9SRVFVSVJFUywKZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmMgYi9nY2Mv Yy9jLXBhcnNlci5jCmluZGV4IGU5OWM4NDc3NmYxLi45Njg5YTIyMTk3NSAxMDA2NDQKLS0t IGEvZ2NjL2MvYy1wYXJzZXIuYworKysgYi9nY2MvYy9jLXBhcnNlci5jCkBAIC0xMzkwLDYg KzEzOTAsMTcgQEAgY19wYXJzZXJfc2tpcF90b19lbmRfb2ZfYmxvY2tfb3Jfc3RhdGVtZW50 IChjX3BhcnNlciAqcGFyc2VyKQogCSAgKytuZXN0aW5nX2RlcHRoOwogCSAgYnJlYWs7CiAK KwljYXNlIENQUF9PUEVOX1BBUkVOOgorCSAgLyogVHJhY2sgcGFyZW50aGVzZXMgaW4gY2Fz ZSB0aGUgc3RhdGVtZW50IGlzIGEgc3RhbmRhbG9uZSAnZm9yJworCSAgICAgc3RhdGVtZW50 IC0gd2Ugd2FudCB0byBza2lwIG92ZXIgdGhlIHNlbWljb2xvbnMgc2VwYXJhdGluZyB0aGUK KwkgICAgIG9wZXJhbmRzLiAgKi8KKwkgIG5lc3RpbmdfZGVwdGgrKzsKKwkgIGJyZWFrOwor CisJY2FzZSBDUFBfQ0xPU0VfUEFSRU46CisJICBuZXN0aW5nX2RlcHRoLS07CisJICBicmVh azsKKwogCWNhc2UgQ1BQX1BSQUdNQToKIAkgIC8qIElmIHdlIHNlZSBhIHByYWdtYSwgY29u c3VtZSB0aGUgd2hvbGUgdGhpbmcgYXQgb25jZS4gIFdlCiAJICAgICBoYXZlIHNvbWUgc2Fm ZWd1YXJkcyBhZ2FpbnN0IGNvbnN1bWluZyBwcmFnbWFzIHdpbGx5LW5pbGx5LgpAQCAtMTU4 Niw2ICsxNTk3LDggQEAgc3RhdGljIGJvb2wgY19wYXJzZXJfb21wX2NhbmNlbGxhdGlvbl9w b2ludCAoY19wYXJzZXIgKiwgZW51bSBwcmFnbWFfY29udGV4dCk7CiBzdGF0aWMgYm9vbCBj X3BhcnNlcl9vbXBfdGFyZ2V0IChjX3BhcnNlciAqLCBlbnVtIHByYWdtYV9jb250ZXh0LCBi b29sICopOwogc3RhdGljIHZvaWQgY19wYXJzZXJfb21wX2VuZF9kZWNsYXJlX3RhcmdldCAo Y19wYXJzZXIgKik7CiBzdGF0aWMgYm9vbCBjX3BhcnNlcl9vbXBfZGVjbGFyZSAoY19wYXJz ZXIgKiwgZW51bSBwcmFnbWFfY29udGV4dCk7CitzdGF0aWMgdHJlZSBjX3BhcnNlcl9vbXBf bWV0YWRpcmVjdGl2ZSAobG9jYXRpb25fdCwgY19wYXJzZXIgKiwgY2hhciAqLAorCQkJCQlv bXBfY2xhdXNlX21hc2ssIHRyZWUgKiwgYm9vbCAqKTsKIHN0YXRpYyB2b2lkIGNfcGFyc2Vy X29tcF9yZXF1aXJlcyAoY19wYXJzZXIgKik7CiBzdGF0aWMgYm9vbCBjX3BhcnNlcl9vbXBf ZXJyb3IgKGNfcGFyc2VyICosIGVudW0gcHJhZ21hX2NvbnRleHQpOwogc3RhdGljIGJvb2wg Y19wYXJzZXJfb21wX29yZGVyZWQgKGNfcGFyc2VyICosIGVudW0gcHJhZ21hX2NvbnRleHQs IGJvb2wgKik7CkBAIC0xOTE4Nyw2ICsxOTIwMCw3IEBAIGNfcGFyc2VyX29tcF9mb3JfbG9v cCAobG9jYXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsIGVudW0gdHJlZV9jb2RlIGNv ZGUsCiAgIGxvY2F0aW9uX3QgZm9yX2xvYzsKICAgYm9vbCB0aWxpbmcgPSBmYWxzZTsKICAg Ym9vbCBpbnNjYW4gPSBmYWxzZTsKKwogICB2ZWM8dHJlZSwgdmFfZ2M+ICpmb3JfYmxvY2sg PSBtYWtlX3RyZWVfdmVjdG9yICgpOwogCiAgIGZvciAoY2wgPSBjbGF1c2VzOyBjbDsgY2wg PSBPTVBfQ0xBVVNFX0NIQUlOIChjbCkpCkBAIC0yMTM5OCw3ICsyMTQxMiw4IEBAIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBvbXBfdXNlcl9zZWxlY3RvcnNbXSA9IHsKICAgICAgc2Nv cmUoc2NvcmUtZXhwcmVzc2lvbikgICovCiAKIHN0YXRpYyB0cmVlCi1jX3BhcnNlcl9vbXBf Y29udGV4dF9zZWxlY3RvciAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBzZXQsIHRyZWUgcGFy bXMpCitjX3BhcnNlcl9vbXBfY29udGV4dF9zZWxlY3RvciAoY19wYXJzZXIgKnBhcnNlciwg dHJlZSBzZXQsIHRyZWUgcGFybXMsCisJCQkgICAgICAgYm9vbCBtZXRhZGlyZWN0aXZlX3Ap CiB7CiAgIHRyZWUgcmV0ID0gTlVMTF9UUkVFOwogICBkbwpAQCAtMjE2MDYsMTAgKzIxNjIx LDE2IEBAIGNfcGFyc2VyX29tcF9jb250ZXh0X3NlbGVjdG9yIChjX3BhcnNlciAqcGFyc2Vy LCB0cmVlIHNldCwgdHJlZSBwYXJtcykKIAkJewogCQkgIG1hcmtfZXhwX3JlYWQgKHQpOwog CQkgIHQgPSBjX2Z1bGx5X2ZvbGQgKHQsIGZhbHNlLCBOVUxMKTsKLQkJICBpZiAoIUlOVEVH UkFMX1RZUEVfUCAoVFJFRV9UWVBFICh0KSkKLQkJICAgICAgfHwgIXRyZWVfZml0c19zaHdp X3AgKHQpKQorCQkgIGlmICghbWV0YWRpcmVjdGl2ZV9wCisJCSAgICAgICYmICghSU5URUdS QUxfVFlQRV9QIChUUkVFX1RZUEUgKHQpKQorCQkJICB8fCAhdHJlZV9maXRzX3Nod2lfcCAo dCkpKQogCQkgICAgZXJyb3JfYXQgKHRva2VuLT5sb2NhdGlvbiwgInByb3BlcnR5IG11c3Qg YmUgIgotCQkJICAgICAgImNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIpOworCQkJCQkg ICAgICAgImNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIpOworCQkgIGVsc2UgaWYgKG1l dGFkaXJlY3RpdmVfcAorCQkJICAgJiYgIUlOVEVHUkFMX1RZUEVfUCAoVFJFRV9UWVBFICh0 KSkpCisJCSAgICAvKiBBbGxvdyBub24tY29uc3RhbnQgdXNlciBleHByZXNzaW9ucyBpbiBt ZXRhZGlyZWN0aXZlcy4gICovCisJCSAgICBlcnJvcl9hdCAodG9rZW4tPmxvY2F0aW9uLCAi cHJvcGVydHkgbXVzdCBiZSAiCisJCQkJCSAgICAgICAiaW50ZWdlciBleHByZXNzaW9uIik7 CiAJCSAgZWxzZQogCQkgICAgcHJvcGVydGllcyA9IHRyZWVfY29ucyAoTlVMTF9UUkVFLCB0 LCBwcm9wZXJ0aWVzKTsKIAkJfQpAQCAtMjE2NzUsNyArMjE2OTYsOCBAQCBjX3BhcnNlcl9v bXBfY29udGV4dF9zZWxlY3RvciAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBzZXQsIHRyZWUg cGFybXMpCiAgICAgIHVzZXIgICovCiAKIHN0YXRpYyB0cmVlCi1jX3BhcnNlcl9vbXBfY29u dGV4dF9zZWxlY3Rvcl9zcGVjaWZpY2F0aW9uIChjX3BhcnNlciAqcGFyc2VyLCB0cmVlIHBh cm1zKQorY19wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNhdGlvbiAoY19w YXJzZXIgKnBhcnNlciwgdHJlZSBwYXJtcywKKwkJCQkJICAgICBib29sIG1ldGFkaXJlY3Rp dmVfcCA9IGZhbHNlKQogewogICB0cmVlIHJldCA9IE5VTExfVFJFRTsKICAgZG8KQEAgLTIx NzIxLDcgKzIxNzQzLDggQEAgY19wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lm aWNhdGlvbiAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBwYXJtcykKICAgICAgIGlmICghYnJh Y2VzLnJlcXVpcmVfb3BlbiAocGFyc2VyKSkKIAlyZXR1cm4gZXJyb3JfbWFya19ub2RlOwog Ci0gICAgICB0cmVlIHNlbGVjdG9ycyA9IGNfcGFyc2VyX29tcF9jb250ZXh0X3NlbGVjdG9y IChwYXJzZXIsIHNldCwgcGFybXMpOworICAgICAgdHJlZSBzZWxlY3RvcnMgPSBjX3BhcnNl cl9vbXBfY29udGV4dF9zZWxlY3RvciAocGFyc2VyLCBzZXQsIHBhcm1zLAorCQkJCQkJICAg ICAgbWV0YWRpcmVjdGl2ZV9wKTsKICAgICAgIGlmIChzZWxlY3RvcnMgPT0gZXJyb3JfbWFy a19ub2RlKQogCXJldCA9IGVycm9yX21hcmtfbm9kZTsKICAgICAgIGVsc2UgaWYgKHJldCAh PSBlcnJvcl9tYXJrX25vZGUpCkBAIC0yMjkzMCw2ICsyMjk1MywzNjggQEAgY19wYXJzZXJf b21wX2Vycm9yIChjX3BhcnNlciAqcGFyc2VyLCBlbnVtIHByYWdtYV9jb250ZXh0IGNvbnRl eHQpCiAgIHJldHVybiBmYWxzZTsKIH0KIAorLyogSGVscGVyIGZ1bmN0aW9uIGZvciBjX3Bh cnNlcl9vbXBfbWV0YWRpcmVjdGl2ZS4gICovCisKK3N0YXRpYyB2b2lkCithbmFseXplX21l dGFkaXJlY3RpdmVfYm9keSAoY19wYXJzZXIgKnBhcnNlciwKKwkJCSAgICB2ZWM8Y190b2tl bj4gJnRva2VucywKKwkJCSAgICB2ZWM8dHJlZT4gJmxhYmVscykKK3sKKyAgaW50IG5lc3Rp bmdfZGVwdGggPSAwOworICBpbnQgYnJhY2tldF9kZXB0aCA9IDA7CisgIGJvb2wgaWdub3Jl X2xhYmVsID0gZmFsc2U7CisKKyAgLyogUmVhZCBpbiB0aGUgYm9keSB0b2tlbnMgdG8gdGhl IHRva2VucyBmb3IgZWFjaCBjYW5kaWRhdGUgZGlyZWN0aXZlLiAgKi8KKyAgd2hpbGUgKDEp CisgICAgeworICAgICAgY190b2tlbiAqdG9rZW4gPSBjX3BhcnNlcl9wZWVrX3Rva2VuIChw YXJzZXIpOworICAgICAgYm9vbCBzdG9wID0gZmFsc2U7CisKKyAgICAgIGlmIChjX3BhcnNl cl9uZXh0X3Rva2VuX2lzX2tleXdvcmQgKHBhcnNlciwgUklEX0NBU0UpKQorCWlnbm9yZV9s YWJlbCA9IHRydWU7CisKKyAgICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpCisJeworCWNhc2Ug Q1BQX0VPRjoKKwkgIGJyZWFrOworCWNhc2UgQ1BQX05BTUU6CisJICBpZiAoIWlnbm9yZV9s YWJlbAorCSAgICAgICYmIGNfcGFyc2VyX3BlZWtfMm5kX3Rva2VuIChwYXJzZXIpLT50eXBl ID09IENQUF9DT0xPTikKKwkgICAgbGFiZWxzLnNhZmVfcHVzaCAodG9rZW4tPnZhbHVlKTsK KwkgIGdvdG8gYWRkOworCWNhc2UgQ1BQX09QRU5fQlJBQ0U6CisJICArK25lc3RpbmdfZGVw dGg7CisJICBnb3RvIGFkZDsKKwljYXNlIENQUF9DTE9TRV9CUkFDRToKKwkgIGlmICgtLW5l c3RpbmdfZGVwdGggPT0gMCkKKwkgICAgc3RvcCA9IHRydWU7CisJICBnb3RvIGFkZDsKKwlj YXNlIENQUF9PUEVOX1BBUkVOOgorCSAgKyticmFja2V0X2RlcHRoOworCSAgZ290byBhZGQ7 CisJY2FzZSBDUFBfQ0xPU0VfUEFSRU46CisJICAtLWJyYWNrZXRfZGVwdGg7CisJICBnb3Rv IGFkZDsKKwljYXNlIENQUF9DT0xPTjoKKwkgIGlnbm9yZV9sYWJlbCA9IGZhbHNlOworCSAg Z290byBhZGQ7CisJY2FzZSBDUFBfU0VNSUNPTE9OOgorCSAgaWYgKG5lc3RpbmdfZGVwdGgg PT0gMCAmJiBicmFja2V0X2RlcHRoID09IDApCisJICAgIHN0b3AgPSB0cnVlOworCSAgZ290 byBhZGQ7CisJZGVmYXVsdDoKKwlhZGQ6CisJICB0b2tlbnMuc2FmZV9wdXNoICgqdG9rZW4p OworCSAgaWYgKHRva2VuLT50eXBlID09IENQUF9QUkFHTUEpCisJICAgIGNfcGFyc2VyX2Nv bnN1bWVfcHJhZ21hIChwYXJzZXIpOworCSAgZWxzZSBpZiAodG9rZW4tPnR5cGUgPT0gQ1BQ X1BSQUdNQV9FT0wpCisJICAgIGNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2Vy KTsKKwkgIGVsc2UKKwkgICAgY19wYXJzZXJfY29uc3VtZV90b2tlbiAocGFyc2VyKTsKKwkg IGlmIChzdG9wKQorCSAgICBicmVhazsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIGJyZWFr OworICAgIH0KK30KKworLyogT3Blbk1QIDUuMDoKKworICAjIHByYWdtYSBvbXAgbWV0YWRp cmVjdGl2ZSBbY2xhdXNlWywgY2xhdXNlXV0KKyovCisKK3N0YXRpYyB0cmVlCitjX3BhcnNl cl9vbXBfbWV0YWRpcmVjdGl2ZSAobG9jYXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIs CisJCQkgICAgY2hhciAqcF9uYW1lLCBvbXBfY2xhdXNlX21hc2ssIHRyZWUgKiwKKwkJCSAg ICBib29sICppZl9wKQoreworICB0cmVlIHJldDsKKyAgYXV0b192ZWM8Y190b2tlbj4gZGly ZWN0aXZlX3Rva2VuczsKKyAgYXV0b192ZWM8Y190b2tlbj4gYm9keV90b2tlbnM7CisgIGF1 dG9fdmVjPHRyZWU+IGJvZHlfbGFiZWxzOworICBhdXRvX3ZlYzxjb25zdCBzdHJ1Y3QgY19v bXBfZGlyZWN0aXZlICo+IGRpcmVjdGl2ZXM7CisgIGF1dG9fdmVjPHRyZWU+IGN0eHM7Cisg IHZlYzxzdHJ1Y3Qgb21wX21ldGFkaXJlY3RpdmVfdmFyaWFudD4gY2FuZGlkYXRlczsKKyAg Ym9vbCBkZWZhdWx0X3NlZW4gPSBmYWxzZTsKKyAgaW50IGRpcmVjdGl2ZV90b2tlbl9pZHgg PSAwOworICB0cmVlIHN0YW5kYWxvbmVfYm9keSA9IE5VTExfVFJFRTsKKworICByZXQgPSBt YWtlX25vZGUgKE9NUF9NRVRBRElSRUNUSVZFKTsKKyAgU0VUX0VYUFJfTE9DQVRJT04gKHJl dCwgbG9jKTsKKyAgVFJFRV9UWVBFIChyZXQpID0gdm9pZF90eXBlX25vZGU7CisgIE9NUF9N RVRBRElSRUNUSVZFX0NMQVVTRVMgKHJldCkgPSBOVUxMX1RSRUU7CisgIHN0cmNhdCAocF9u YW1lLCAiIG1ldGFkaXJlY3RpdmUiKTsKKworICB3aGlsZSAoY19wYXJzZXJfbmV4dF90b2tl bl9pc19ub3QgKHBhcnNlciwgQ1BQX1BSQUdNQV9FT0wpKQorICAgIHsKKyAgICAgIGlmIChj X3BhcnNlcl9uZXh0X3Rva2VuX2lzX25vdCAocGFyc2VyLCBDUFBfTkFNRSkKKwkgICYmIGNf cGFyc2VyX25leHRfdG9rZW5faXNfbm90IChwYXJzZXIsIENQUF9LRVlXT1JEKSkKKwl7CisJ ICBjX3BhcnNlcl9lcnJvciAocGFyc2VyLCAiZXhwZWN0ZWQgJTx3aGVuJT4gb3IgJTxkZWZh dWx0JT4iKTsKKwkgIGdvdG8gZXJyb3I7CisJfQorCisgICAgICBsb2NhdGlvbl90IG1hdGNo X2xvYyA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlciktPmxvY2F0aW9uOworICAgICAg Y29uc3QgY2hhciAqcCA9IElERU5USUZJRVJfUE9JTlRFUiAoY19wYXJzZXJfcGVla190b2tl biAocGFyc2VyKS0+dmFsdWUpOworICAgICAgY19wYXJzZXJfY29uc3VtZV90b2tlbiAocGFy c2VyKTsKKyAgICAgIGJvb2wgZGVmYXVsdF9wID0gc3RyY21wIChwLCAiZGVmYXVsdCIpID09 IDA7CisgICAgICBpZiAoZGVmYXVsdF9wKQorCXsKKwkgIGlmIChkZWZhdWx0X3NlZW4pCisJ ICAgIHsKKwkgICAgICBjX3BhcnNlcl9lcnJvciAocGFyc2VyLCAidGhlcmUgY2FuIG9ubHkg YmUgb25lIGRlZmF1bHQgY2xhdXNlICIKKwkJCQkgICAgICAiaW4gYSBtZXRhZGlyZWN0aXZl Iik7CisJICAgICAgZ290byBlcnJvcjsKKwkgICAgfQorCSAgZGVmYXVsdF9zZWVuID0gdHJ1 ZTsKKwl9CisgICAgICBpZiAoIShzdHJjbXAgKHAsICJ3aGVuIikgPT0gMCB8fCBkZWZhdWx0 X3ApKQorCXsKKwkgIGNfcGFyc2VyX2Vycm9yIChwYXJzZXIsICJleHBlY3RlZCAlPHdoZW4l PiBvciAlPGRlZmF1bHQlPiIpOworCSAgZ290byBlcnJvcjsKKwl9CisKKyAgICAgIG1hdGNo aW5nX3BhcmVucyBwYXJlbnM7CisgICAgICB0cmVlIGN0eCA9IE5VTExfVFJFRTsKKyAgICAg IGJvb2wgc2tpcCA9IGZhbHNlOworCisgICAgICBpZiAoIXBhcmVucy5yZXF1aXJlX29wZW4g KHBhcnNlcikpCisJZ290byBlcnJvcjsKKworICAgICAgaWYgKCFkZWZhdWx0X3ApCisJewor CSAgY3R4ID0gY19wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNhdGlvbiAo cGFyc2VyLAorCQkJCQkJCSAgICAgTlVMTF9UUkVFLCB0cnVlKTsKKwkgIGlmIChjdHggPT0g ZXJyb3JfbWFya19ub2RlKQorCSAgICBnb3RvIGVycm9yOworCSAgY3R4ID0gb21wX2NoZWNr X2NvbnRleHRfc2VsZWN0b3IgKG1hdGNoX2xvYywgY3R4KTsKKwkgIGlmIChjdHggPT0gZXJy b3JfbWFya19ub2RlKQorCSAgICBnb3RvIGVycm9yOworCisJICAvKiBSZW1vdmUgdGhlIHNl bGVjdG9yIGZyb20gZnVydGhlciBjb25zaWRlcmF0aW9uIGlmIGNhbiBiZQorCSAgICAgZXZh bHVhdGVkIGFzIGEgbm9uLW1hdGNoIGF0IHRoaXMgcG9pbnQuICAqLworCSAgc2tpcCA9IChv bXBfY29udGV4dF9zZWxlY3Rvcl9tYXRjaGVzIChjdHgsIHRydWUpID09IDApOworCisJICBp ZiAoY19wYXJzZXJfbmV4dF90b2tlbl9pc19ub3QgKHBhcnNlciwgQ1BQX0NPTE9OKSkKKwkg ICAgeworCSAgICAgIGNfcGFyc2VyX2Vycm9yIChwYXJzZXIsICJleHBlY3RlZCBjb2xvbiIp OworCSAgICAgIGdvdG8gZXJyb3I7CisJICAgIH0KKwkgIGNfcGFyc2VyX2NvbnN1bWVfdG9r ZW4gKHBhcnNlcik7CisJfQorCisgICAgICAvKiBSZWFkIGluIHRoZSBkaXJlY3RpdmUgdHlw ZSBhbmQgY3JlYXRlIGEgZHVtbXkgcHJhZ21hIHRva2VuIGZvcgorCSBpdC4gICovCisgICAg ICBsb2NhdGlvbl90IGxvYyA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlciktPmxvY2F0 aW9uOworCisgICAgICBwID0gTlVMTDsKKyAgICAgIGlmIChjX3BhcnNlcl9uZXh0X3Rva2Vu X2lzIChwYXJzZXIsIENQUF9DTE9TRV9QQVJFTikpCisJcCA9ICJub3RoaW5nIjsKKyAgICAg IGVsc2UgaWYgKGNfcGFyc2VyX25leHRfdG9rZW5faXNfa2V5d29yZCAocGFyc2VyLCBSSURf Rk9SKSkKKwl7CisJICBwID0gImZvciI7CisJICBjX3BhcnNlcl9jb25zdW1lX3Rva2VuIChw YXJzZXIpOworCX0KKyAgICAgIGVsc2UgaWYgKGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBh cnNlciwgQ1BQX05BTUUpKQorCXsKKwkgIHAgPSBJREVOVElGSUVSX1BPSU5URVIgKGNfcGFy c2VyX3BlZWtfdG9rZW4gKHBhcnNlciktPnZhbHVlKTsKKwkgIGNfcGFyc2VyX2NvbnN1bWVf dG9rZW4gKHBhcnNlcik7CisJfQorCisgICAgICBpZiAocCA9PSBOVUxMKQorCXsKKwkgIGNf cGFyc2VyX2Vycm9yIChwYXJzZXIsICJleHBlY3RlZCBkaXJlY3RpdmUgbmFtZSIpOworCSAg Z290byBlcnJvcjsKKwl9CisKKyAgICAgIGNvbnN0IHN0cnVjdCBjX29tcF9kaXJlY3RpdmUg Km9tcF9kaXJlY3RpdmUKKwk9IGNfb21wX2NhdGVnb3JpemVfZGlyZWN0aXZlIChwLCBOVUxM LCBOVUxMKTsKKworICAgICAgaWYgKG9tcF9kaXJlY3RpdmUgPT0gTlVMTCkKKwl7CisJICBj X3BhcnNlcl9lcnJvciAocGFyc2VyLCAidW5rbm93biBkaXJlY3RpdmUgbmFtZSIpOworCSAg Z290byBlcnJvcjsKKwl9CisgICAgICBpZiAob21wX2RpcmVjdGl2ZS0+aWQgPT0gUFJBR01B X09NUF9NRVRBRElSRUNUSVZFKQorCXsKKwkgIGNfcGFyc2VyX2Vycm9yIChwYXJzZXIsCisJ CQkgICJtZXRhZGlyZWN0aXZlcyBjYW5ub3QgYmUgdXNlZCBhcyBkaXJlY3RpdmUgIgorCQkJ ICAidmFyaWFudHMiKTsKKwkgIGdvdG8gZXJyb3I7CisJfQorICAgICAgaWYgKG9tcF9kaXJl Y3RpdmUtPmtpbmQgPT0gQ19PTVBfRElSX0RFQ0xBUkFUSVZFKQorCXsKKwkgIHNvcnJ5X2F0 IChsb2MsICJkZWNsYXJhdGl2ZSBkaXJlY3RpdmUgdmFyaWFudHMgYXJlIG5vdCBzdXBwb3J0 ZWQiKTsKKwkgIGdvdG8gZXJyb3I7CisJfQorCisgICAgICBpZiAoIXNraXApCisJeworCSAg Y190b2tlbiBwcmFnbWFfdG9rZW47CisJICBwcmFnbWFfdG9rZW4udHlwZSA9IENQUF9QUkFH TUE7CisJICBwcmFnbWFfdG9rZW4ubG9jYXRpb24gPSBsb2M7CisJICBwcmFnbWFfdG9rZW4u cHJhZ21hX2tpbmQgPSAoZW51bSBwcmFnbWFfa2luZCkgb21wX2RpcmVjdGl2ZS0+aWQ7CisK KwkgIGRpcmVjdGl2ZXMuc2FmZV9wdXNoIChvbXBfZGlyZWN0aXZlKTsKKwkgIGRpcmVjdGl2 ZV90b2tlbnMuc2FmZV9wdXNoIChwcmFnbWFfdG9rZW4pOworCSAgY3R4cy5zYWZlX3B1c2gg KGN0eCk7CisJfQorCisgICAgICAvKiBSZWFkIGluIHRva2VucyBmb3IgdGhlIGRpcmVjdGl2 ZSBjbGF1c2VzLiAgKi8KKyAgICAgIGludCBuZXN0aW5nX2RlcHRoID0gMDsKKyAgICAgIHdo aWxlICgxKQorCXsKKwkgIGNfdG9rZW4gKnRva2VuID0gY19wYXJzZXJfcGVla190b2tlbiAo cGFyc2VyKTsKKwkgIHN3aXRjaCAodG9rZW4tPnR5cGUpCisJICAgIHsKKwkgICAgY2FzZSBD UFBfRU9GOgorCSAgICBjYXNlIENQUF9QUkFHTUFfRU9MOgorCSAgICAgIGJyZWFrOworCSAg ICBjYXNlIENQUF9PUEVOX1BBUkVOOgorCSAgICAgICsrbmVzdGluZ19kZXB0aDsKKwkgICAg ICBnb3RvIGFkZDsKKwkgICAgY2FzZSBDUFBfQ0xPU0VfUEFSRU46CisJICAgICAgaWYgKG5l c3RpbmdfZGVwdGgtLSA9PSAwKQorCQlicmVhazsKKwkgICAgICBnb3RvIGFkZDsKKwkgICAg ZGVmYXVsdDoKKwkgICAgYWRkOgorCSAgICAgIGlmICghc2tpcCkKKwkJZGlyZWN0aXZlX3Rv a2Vucy5zYWZlX3B1c2ggKCp0b2tlbik7CisJICAgICAgY19wYXJzZXJfY29uc3VtZV90b2tl biAocGFyc2VyKTsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCSAgYnJlYWs7CisJfQor CisgICAgICBjX3BhcnNlcl9jb25zdW1lX3Rva2VuIChwYXJzZXIpOworCisgICAgICBpZiAo IXNraXApCisJeworCSAgY190b2tlbiBlb2xfdG9rZW47CisJICBtZW1zZXQgKCZlb2xfdG9r ZW4sIDAsIHNpemVvZiAoZW9sX3Rva2VuKSk7CisJICBlb2xfdG9rZW4udHlwZSA9IENQUF9Q UkFHTUFfRU9MOworCSAgZGlyZWN0aXZlX3Rva2Vucy5zYWZlX3B1c2ggKGVvbF90b2tlbik7 CisJfQorICAgIH0KKyAgY19wYXJzZXJfc2tpcF90b19wcmFnbWFfZW9sIChwYXJzZXIpOwor CisgIGlmICghZGVmYXVsdF9zZWVuKQorICAgIHsKKyAgICAgIC8qIEFkZCBhIGRlZmF1bHQg Y2xhdXNlIHRoYXQgZXZhbHVhdGVzIHRvICdvbXAgbm90aGluZycuICAqLworICAgICAgY29u c3Qgc3RydWN0IGNfb21wX2RpcmVjdGl2ZSAqb21wX2RpcmVjdGl2ZQorCT0gY19vbXBfY2F0 ZWdvcml6ZV9kaXJlY3RpdmUgKCJub3RoaW5nIiwgTlVMTCwgTlVMTCk7CisKKyAgICAgIGNf dG9rZW4gcHJhZ21hX3Rva2VuOworICAgICAgcHJhZ21hX3Rva2VuLnR5cGUgPSBDUFBfUFJB R01BOworICAgICAgcHJhZ21hX3Rva2VuLmxvY2F0aW9uID0gVU5LTk9XTl9MT0NBVElPTjsK KyAgICAgIHByYWdtYV90b2tlbi5wcmFnbWFfa2luZCA9IFBSQUdNQV9PTVBfTk9USElORzsK KworICAgICAgZGlyZWN0aXZlcy5zYWZlX3B1c2ggKG9tcF9kaXJlY3RpdmUpOworICAgICAg ZGlyZWN0aXZlX3Rva2Vucy5zYWZlX3B1c2ggKHByYWdtYV90b2tlbik7CisgICAgICBjdHhz LnNhZmVfcHVzaCAoTlVMTF9UUkVFKTsKKworICAgICAgY190b2tlbiBlb2xfdG9rZW47Cisg ICAgICBtZW1zZXQgKCZlb2xfdG9rZW4sIDAsIHNpemVvZiAoZW9sX3Rva2VuKSk7CisgICAg ICBlb2xfdG9rZW4udHlwZSA9IENQUF9QUkFHTUFfRU9MOworICAgICAgZGlyZWN0aXZlX3Rv a2Vucy5zYWZlX3B1c2ggKGVvbF90b2tlbik7CisgICAgfQorCisgIGFuYWx5emVfbWV0YWRp cmVjdGl2ZV9ib2R5IChwYXJzZXIsIGJvZHlfdG9rZW5zLCBib2R5X2xhYmVscyk7CisKKyAg LyogUHJvY2VzcyBlYWNoIGNhbmRpZGF0ZSBkaXJlY3RpdmUuICAqLworICB1bnNpZ25lZCBp OworICB0cmVlIGN0eDsKKworICBGT1JfRUFDSF9WRUNfRUxUIChjdHhzLCBpLCBjdHgpCisg ICAgeworICAgICAgYXV0b192ZWM8Y190b2tlbj4gdG9rZW5zOworCisgICAgICAvKiBBZGQg dGhlIGRpcmVjdGl2ZSB0b2tlbnMuICAqLworICAgICAgZG8KKwl0b2tlbnMuc2FmZV9wdXNo IChkaXJlY3RpdmVfdG9rZW5zIFtkaXJlY3RpdmVfdG9rZW5faWR4KytdKTsKKyAgICAgIHdo aWxlICh0b2tlbnMubGFzdCAoKS50eXBlICE9IENQUF9QUkFHTUFfRU9MKTsKKworICAgICAg LyogQWRkIHRoZSBib2R5IHRva2Vucy4gICovCisgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw OyBqIDwgYm9keV90b2tlbnMubGVuZ3RoICgpOyBqKyspCisJdG9rZW5zLnNhZmVfcHVzaCAo Ym9keV90b2tlbnNbal0pOworCisgICAgICAvKiBNYWtlIHN1cmUgbm90aGluZyB0cmllcyB0 byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgdG9rZW5zLiAgKi8KKyAgICAgIGNfdG9rZW4g ZW9mX3Rva2VuOworICAgICAgbWVtc2V0ICgmZW9mX3Rva2VuLCAwLCBzaXplb2YgKGVvZl90 b2tlbikpOworICAgICAgZW9mX3Rva2VuLnR5cGUgPSBDUFBfRU9GOworICAgICAgdG9rZW5z LnNhZmVfcHVzaCAoZW9mX3Rva2VuKTsKKyAgICAgIHRva2Vucy5zYWZlX3B1c2ggKGVvZl90 b2tlbik7CisKKyAgICAgIHVuc2lnbmVkIGludCBvbGRfdG9rZW5zX2F2YWlsID0gcGFyc2Vy LT50b2tlbnNfYXZhaWw7CisgICAgICBjX3Rva2VuICpvbGRfdG9rZW5zID0gcGFyc2VyLT50 b2tlbnM7CisKKyAgICAgIHBhcnNlci0+dG9rZW5zID0gdG9rZW5zLmFkZHJlc3MgKCk7Cisg ICAgICBwYXJzZXItPnRva2Vuc19hdmFpbCA9IHRva2Vucy5sZW5ndGggKCk7CisKKyAgICAg IHRyZWUgZGlyZWN0aXZlID0gY19iZWdpbl9jb21wb3VuZF9zdG10ICh0cnVlKTsKKworICAg ICAgLyogRGVjbGFyZSBhbGwgbm9uLWxvY2FsIGxhYmVscyB0aGF0IG9jY3VyIHdpdGhpbiB0 aGUgZGlyZWN0aXZlIGJvZHkKKwkgYXMgbG9jYWwuICAqLworICAgICAgZm9yICh1bnNpZ25l ZCBqID0gMDsgaiA8IGJvZHlfbGFiZWxzLmxlbmd0aCAoKTsgaisrKQorCXsKKwkgIHRyZWUg bGFiZWwgPSBkZWNsYXJlX2xhYmVsIChib2R5X2xhYmVsc1tqXSk7CisKKwkgIENfREVDTEFS RURfTEFCRUxfRkxBRyAobGFiZWwpID0gMTsKKwkgIGFkZF9zdG10IChidWlsZF9zdG10IChs b2MsIERFQ0xfRVhQUiwgbGFiZWwpKTsKKwl9CisKKyAgICAgIGNfcGFyc2VyX3ByYWdtYSAo cGFyc2VyLCBwcmFnbWFfY29tcG91bmQsIGlmX3ApOworICAgICAgZGlyZWN0aXZlID0gY19l bmRfY29tcG91bmRfc3RtdCAobG9jLCBkaXJlY3RpdmUsIHRydWUpOworICAgICAgYm9vbCBz dGFuZGFsb25lX3AKKwk9IGRpcmVjdGl2ZXNbaV0tPmtpbmQgPT0gQ19PTVBfRElSX1NUQU5E QUxPTkUKKwkgIHx8IGRpcmVjdGl2ZXNbaV0tPmtpbmQgPT0gQ19PTVBfRElSX1VUSUxJVFk7 CisgICAgICBpZiAoc3RhbmRhbG9uZV9wKQorCXsKKwkgIC8qIFBhcnNpbmcgc3RhbmRhbG9u ZSBkaXJlY3RpdmVzIHdpbGwgbm90IGNvbnN1bWUgdGhlIGJvZHkKKwkgICAgIHRva2Vucywg c28gZG8gdGhhdCBoZXJlLiAgKi8KKwkgIGlmIChzdGFuZGFsb25lX2JvZHkgPT0gTlVMTF9U UkVFKQorCSAgICB7CisJICAgICAgc3RhbmRhbG9uZV9ib2R5ID0gcHVzaF9zdG10X2xpc3Qg KCk7CisJICAgICAgY19wYXJzZXJfc3RhdGVtZW50IChwYXJzZXIsIGlmX3ApOworCSAgICAg IHN0YW5kYWxvbmVfYm9keSA9IHBvcF9zdG10X2xpc3QgKHN0YW5kYWxvbmVfYm9keSk7CisJ ICAgIH0KKwkgIGVsc2UKKwkgICAgY19wYXJzZXJfc2tpcF90b19lbmRfb2ZfYmxvY2tfb3Jf c3RhdGVtZW50IChwYXJzZXIpOworCX0KKworICAgICAgdHJlZSBib2R5ID0gc3RhbmRhbG9u ZV9wID8gc3RhbmRhbG9uZV9ib2R5IDogTlVMTF9UUkVFOworICAgICAgdHJlZSB2YXJpYW50 ID0gYnVpbGRfdHJlZV9saXN0IChjdHgsIGJ1aWxkX3RyZWVfbGlzdCAoZGlyZWN0aXZlLCBi b2R5KSk7CisgICAgICBPTVBfTUVUQURJUkVDVElWRV9DTEFVU0VTIChyZXQpCisJPSBjaGFp bm9uIChPTVBfTUVUQURJUkVDVElWRV9DTEFVU0VTIChyZXQpLCB2YXJpYW50KTsKKworICAg ICAgLyogQ2hlY2sgdGhhdCBhbGwgdmFsaWQgdG9rZW5zIGhhdmUgYmVlbiBjb25zdW1lZC4g ICovCisgICAgICBnY2NfYXNzZXJ0IChwYXJzZXItPnRva2Vuc19hdmFpbCA9PSAyKTsKKyAg ICAgIGdjY19hc3NlcnQgKGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBhcnNlciwgQ1BQX0VP RikpOworICAgICAgZ2NjX2Fzc2VydCAoY19wYXJzZXJfcGVla18ybmRfdG9rZW4gKHBhcnNl ciktPnR5cGUgPT0gQ1BQX0VPRik7CisKKyAgICAgIHBhcnNlci0+dG9rZW5zID0gb2xkX3Rv a2VuczsKKyAgICAgIHBhcnNlci0+dG9rZW5zX2F2YWlsID0gb2xkX3Rva2Vuc19hdmFpbDsK KyAgICB9CisKKyAgLyogVHJ5IHRvIHJlc29sdmUgdGhlIG1ldGFkaXJlY3RpdmUgZWFybHku ICAqLworICBjYW5kaWRhdGVzID0gb21wX3Jlc29sdmVfbWV0YWRpcmVjdGl2ZSAocmV0KTsK KyAgaWYgKCFjYW5kaWRhdGVzLmlzX2VtcHR5ICgpKQorICAgIHJldCA9IGNfb21wX2V4cGFu ZF9tZXRhZGlyZWN0aXZlIChjYW5kaWRhdGVzKTsKKworICBhZGRfc3RtdCAocmV0KTsKKwor ICByZXR1cm4gcmV0OworCitlcnJvcjoKKyAgaWYgKHBhcnNlci0+aW5fcHJhZ21hKQorICAg IGNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2VyKTsKKyAgY19wYXJzZXJfc2tp cF90b19lbmRfb2ZfYmxvY2tfb3Jfc3RhdGVtZW50IChwYXJzZXIpOworCisgIHJldHVybiBO VUxMX1RSRUU7Cit9CisKIC8qIE1haW4gZW50cnkgcG9pbnQgdG8gcGFyc2luZyBtb3N0IE9w ZW5NUCBwcmFnbWFzLiAgKi8KIAogc3RhdGljIHZvaWQKQEAgLTIzMDAzLDYgKzIzMzg4LDEx IEBAIGNfcGFyc2VyX29tcF9jb25zdHJ1Y3QgKGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgKmlm X3ApCiAgICAgICBzdHJjcHkgKHBfbmFtZSwgIiNwcmFnbWEgb21wIik7CiAgICAgICBzdG10 ID0gY19wYXJzZXJfb21wX21hc3RlciAobG9jLCBwYXJzZXIsIHBfbmFtZSwgbWFzaywgTlVM TCwgaWZfcCk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBSQUdNQV9PTVBfTUVUQURJUkVD VElWRToKKyAgICAgIHN0cmNweSAocF9uYW1lLCAiI3ByYWdtYSBvbXAiKTsKKyAgICAgIHN0 bXQgPSBjX3BhcnNlcl9vbXBfbWV0YWRpcmVjdGl2ZSAobG9jLCBwYXJzZXIsIHBfbmFtZSwg bWFzaywgTlVMTCwKKwkJCQkJIGlmX3ApOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUkFH TUFfT01QX1BBUkFMTEVMOgogICAgICAgc3RyY3B5IChwX25hbWUsICIjcHJhZ21hIG9tcCIp OwogICAgICAgc3RtdCA9IGNfcGFyc2VyX29tcF9wYXJhbGxlbCAobG9jLCBwYXJzZXIsIHBf bmFtZSwgbWFzaywgTlVMTCwgaWZfcCk7CkBAIC0yMzA0Myw3ICsyMzQzMyw2IEBAIGNfcGFy c2VyX29tcF9jb25zdHJ1Y3QgKGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgKmlmX3ApCiAgICAg Z2NjX2Fzc2VydCAoRVhQUl9MT0NBVElPTiAoc3RtdCkgIT0gVU5LTk9XTl9MT0NBVElPTik7 CiB9CiAKLQogLyogT3Blbk1QIDIuNToKICAgICMgcHJhZ21hIG9tcCB0aHJlYWRwcml2YXRl ICh2YXJpYWJsZS1saXN0KSAqLwogCmRpZmYgLS1naXQgYS9nY2Mvb21wLWdlbmVyYWwuYyBi L2djYy9vbXAtZ2VuZXJhbC5jCmluZGV4IDhmY2NhNzMwNDcxLi45OTI2Y2ZkOWQ1ZiAxMDA2 NDQKLS0tIGEvZ2NjL29tcC1nZW5lcmFsLmMKKysrIGIvZ2NjL29tcC1nZW5lcmFsLmMKQEAg LTEyNjAsNyArMTI2MCw3IEBAIG9tcF9jb250ZXh0X25hbWVfbGlzdF9wcm9wICh0cmVlIHBy b3ApCiAgICBJUEEsIG90aGVycyB1bnRpbCB2ZWN0b3JpemF0aW9uLiAgKi8KIAogaW50Ci1v bXBfY29udGV4dF9zZWxlY3Rvcl9tYXRjaGVzICh0cmVlIGN0eCkKK29tcF9jb250ZXh0X3Nl bGVjdG9yX21hdGNoZXMgKHRyZWUgY3R4LCBib29sKQogewogICBpbnQgcmV0ID0gMTsKICAg Zm9yICh0cmVlIHQxID0gY3R4OyB0MTsgdDEgPSBUUkVFX0NIQUlOICh0MSkpCkBAIC0yNjI0 LDYgKzI2MjQsMTggQEAgb21wX2x0b19pbnB1dF9kZWNsYXJlX3ZhcmlhbnRfYWx0IChsdG9f aW5wdXRfYmxvY2sgKmliLCBjZ3JhcGhfbm9kZSAqbm9kZSwKIAkJCQkJCSBJTlNFUlQpID0g ZW50cnlwOwogfQogCisvKiBSZXR1cm4gYSB2ZWN0b3Igb2YgZHluYW1pYyByZXBsYWNlbWVu dCBjYW5kaWRhdGVzIGZvciB0aGUgbWV0YWRpcmVjdGl2ZQorICAgc3RhdGVtZW50IGluIE1F VEFESVJFQ1RJVkUuICBSZXR1cm4gYW4gZW1wdHkgdmVjdG9yIGlmIHRoZSBtZXRhZGlyZWN0 aXZlCisgICBjYW5ub3QgYmUgcmVzb2x2ZWQuICAqLworCit2ZWM8c3RydWN0IG9tcF9tZXRh ZGlyZWN0aXZlX3ZhcmlhbnQ+CitvbXBfcmVzb2x2ZV9tZXRhZGlyZWN0aXZlICh0cmVlKQor eworICB2ZWM8c3RydWN0IG9tcF9tZXRhZGlyZWN0aXZlX3ZhcmlhbnQ+IHZhcmlhbnRzID0g e307CisKKyAgcmV0dXJuIHZhcmlhbnRzOworfQorCiAvKiBFbmNvZGUgYW4gb2FjYyBsYXVu Y2ggYXJndW1lbnQuICBUaGlzIG1hdGNoZXMgdGhlIEdPTVBfTEFVTkNIX1BBQ0sKICAgIG1h Y3JvIG9uIGdvbXAtY29uc3RhbnRzLmguICBXZSBkbyBub3QgY2hlY2sgZm9yIG92ZXJmbG93 LiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL29tcC1nZW5lcmFsLmggYi9nY2Mvb21wLWdlbmVy YWwuaAppbmRleCBhMGM3YzcxMTQ4Yy4uOGM2MDA5ZTk4NTQgMTAwNjQ0Ci0tLSBhL2djYy9v bXAtZ2VuZXJhbC5oCisrKyBiL2djYy9vbXAtZ2VuZXJhbC5oCkBAIC04OSw2ICs4OSwxMiBA QCBzdHJ1Y3Qgb21wX2Zvcl9kYXRhCiAgIHRyZWUgYWRqbjE7CiB9OwogCisvKiBBIHN0cnVj dHVyZSBkZXNjcmliaW5nIGEgdmFyaWFudCBpbiBhIG1ldGFkaXJlY3RpdmUuICAqLworCitz dHJ1Y3Qgb21wX21ldGFkaXJlY3RpdmVfdmFyaWFudAoreworfTsKKwogI2RlZmluZSBPQUND X0ZOX0FUVFJJQiAib2FjYyBmdW5jdGlvbiIKIAogZXh0ZXJuIHRyZWUgb21wX2ZpbmRfY2xh dXNlICh0cmVlIGNsYXVzZXMsIGVudW0gb21wX2NsYXVzZV9jb2RlIGtpbmQpOwpAQCAtMTA4 LDEwICsxMTQsMTEgQEAgZXh0ZXJuIGludCBvbXBfY29uc3RydWN0b3JfdHJhaXRzX3RvX2Nv ZGVzICh0cmVlLCBlbnVtIHRyZWVfY29kZSAqKTsKIGV4dGVybiB0cmVlIG9tcF9jaGVja19j b250ZXh0X3NlbGVjdG9yIChsb2NhdGlvbl90IGxvYywgdHJlZSBjdHgpOwogZXh0ZXJuIHZv aWQgb21wX21hcmtfZGVjbGFyZV92YXJpYW50IChsb2NhdGlvbl90IGxvYywgdHJlZSB2YXJp YW50LAogCQkJCSAgICAgIHRyZWUgY29uc3RydWN0KTsKLWV4dGVybiBpbnQgb21wX2NvbnRl eHRfc2VsZWN0b3JfbWF0Y2hlcyAodHJlZSk7CitleHRlcm4gaW50IG9tcF9jb250ZXh0X3Nl bGVjdG9yX21hdGNoZXMgKHRyZWUsIGJvb2wgPSBmYWxzZSk7CiBleHRlcm4gaW50IG9tcF9j b250ZXh0X3NlbGVjdG9yX3NldF9jb21wYXJlIChjb25zdCBjaGFyICosIHRyZWUsIHRyZWUp OwogZXh0ZXJuIHRyZWUgb21wX2dldF9jb250ZXh0X3NlbGVjdG9yICh0cmVlLCBjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdHJlZSBvbXBfcmVzb2x2ZV9kZWNsYXJl X3ZhcmlhbnQgKHRyZWUpOworZXh0ZXJuIHZlYzxzdHJ1Y3Qgb21wX21ldGFkaXJlY3RpdmVf dmFyaWFudD4gb21wX3Jlc29sdmVfbWV0YWRpcmVjdGl2ZSAodHJlZSk7CiBleHRlcm4gdHJl ZSBvYWNjX2xhdW5jaF9wYWNrICh1bnNpZ25lZCBjb2RlLCB0cmVlIGRldmljZSwgdW5zaWdu ZWQgb3ApOwogZXh0ZXJuIHRyZWUgb2FjY19yZXBsYWNlX2ZuX2F0dHJpYl9hdHRyICh0cmVl IGF0dHJpYnMsIHRyZWUgZGltcyk7CiBleHRlcm4gdm9pZCBvYWNjX3JlcGxhY2VfZm5fYXR0 cmliICh0cmVlIGZuLCB0cmVlIGRpbXMpOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuZGVmIGIv Z2NjL3RyZWUuZGVmCmluZGV4IGUyN2JjM2UyYjFmLi45MWY4YzRkYjFlMyAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUuZGVmCisrKyBiL2djYy90cmVlLmRlZgpAQCAtMTI3NCw2ICsxMjc0LDEx IEBAIERFRlRSRUVDT0RFIChPTVBfVEFSR0VUX0VOVEVSX0RBVEEsICJvbXBfdGFyZ2V0X2Vu dGVyX2RhdGEiLCB0Y2Nfc3RhdGVtZW50LCAxKQogICAgT3BlcmFuZCAwOiBPTVBfVEFSR0VU X0VYSVRfREFUQV9DTEFVU0VTOiBMaXN0IG9mIGNsYXVzZXMuICAqLwogREVGVFJFRUNPREUg KE9NUF9UQVJHRVRfRVhJVF9EQVRBLCAib21wX3RhcmdldF9leGl0X2RhdGEiLCB0Y2Nfc3Rh dGVtZW50LCAxKQogCisvKiBPcGVuTVAgLSAjcHJhZ21hIG9tcCBtZXRhZGlyZWN0aXZlIFtj bGF1c2UxIC4uLiBjbGF1c2VOXQorICAgT3BlcmFuZCAwOiBPTVBfTUVUQURJUkVDVElWRV9D TEFVU0VTOiBMaXN0IG9mIHNlbGVjdG9ycyBhbmQgZGlyZWN0aXZlCisJdmFyaWFudHMuICAq LworREVGVFJFRUNPREUgKE9NUF9NRVRBRElSRUNUSVZFLCAib21wX21ldGFkaXJlY3RpdmUi LCB0Y2Nfc3RhdGVtZW50LCAxKQorCiAvKiBPTVBfQVRPTUlDIHRocm91Z2ggT01QX0FUT01J Q19DQVBUVVJFX05FVyBtdXN0IGJlIGNvbnNlY3V0aXZlLAogICAgb3IgT01QX0FUT01JQ19T RVFfQ1NUIG5lZWRzIGFkanVzdGluZy4gICovCiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLmgg Yi9nY2MvdHJlZS5oCmluZGV4IDA5NDUwMWJkOWIxLi4wNmM4MTQwZTAxMSAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUuaAorKysgYi9nY2MvdHJlZS5oCkBAIC0xNDcxLDYgKzE0NzEsOSBAQCBj bGFzcyBhdXRvX3N1cHByZXNzX2xvY2F0aW9uX3dyYXBwZXJzCiAjZGVmaW5lIE9NUF9UQVJH RVRfRVhJVF9EQVRBX0NMQVVTRVMoTk9ERSlcCiAgIFRSRUVfT1BFUkFORCAoT01QX1RBUkdF VF9FWElUX0RBVEFfQ0hFQ0sgKE5PREUpLCAwKQogCisjZGVmaW5lIE9NUF9NRVRBRElSRUNU SVZFX0NMQVVTRVMoTk9ERSkgXAorICBUUkVFX09QRVJBTkQgKE9NUF9NRVRBRElSRUNUSVZF X0NIRUNLIChOT0RFKSwgMCkKKwogI2RlZmluZSBPTVBfU0NBTl9CT0RZKE5PREUpCVRSRUVf T1BFUkFORCAoT01QX1NDQU5fQ0hFQ0sgKE5PREUpLCAwKQogI2RlZmluZSBPTVBfU0NBTl9D TEFVU0VTKE5PREUpCVRSRUVfT1BFUkFORCAoT01QX1NDQU5fQ0hFQ0sgKE5PREUpLCAxKQog Ci0tIAoyLjI1LjEKCg== --------------06kuqVvY039pVD0mj1v3X7zS--