From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 800 invoked by alias); 24 Aug 2016 11:00:44 -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 783 invoked by uid 89); 24 Aug 2016 11:00:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.0 required=5.0 tests=BAYES_40,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=sau, chip, U*thomas.preudhomme, Preud'homme X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 Aug 2016 11:00:33 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 357DA2F for ; Wed, 24 Aug 2016 04:02:11 -0700 (PDT) Received: from [10.2.206.221] (e107157-lin.cambridge.arm.com [10.2.206.221]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4F2B53F220 for ; Wed, 24 Aug 2016 04:00:30 -0700 (PDT) Subject: [PATCHv2 1/7, GCC, ARM, V8M] Add support for ARMv8-M's Secure Extensions flag and intrinsics To: gcc-patches@gcc.gnu.org References: <5796116C.6010100@arm.com> <579611FF.4090807@arm.com> From: "Andre Vieira (lists)" Message-ID: <57BD7E4C.5080809@arm.com> Date: Wed, 24 Aug 2016 11:00:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <579611FF.4090807@arm.com> Content-Type: multipart/mixed; boundary="------------070006050101020606000205" X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg01708.txt.bz2 This is a multi-part message in MIME format. --------------070006050101020606000205 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 4345 On 25/07/16 14:19, Andre Vieira (lists) wrote: > This patch adds the support of the '-mcmse' option to enable ARMv8-M's > Security Extensions and supports the following intrinsics: > cmse_TT > cmse_TT_fptr > cmse_TTT > cmse_TTT_fptr > cmse_TTA > cmse_TTA_fptr > cmse_TTAT > cmse_TTAT_fptr > cmse_check_address_range > cmse_check_pointed_object > cmse_is_nsfptr > cmse_nsfptr_create > > It also defines the mandatory cmse_address_info struct and the > __ARM_FEATURE_CMSE macro. > See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security > Extensions: Requirements on Development Tools > (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). > > *** gcc/ChangeLog *** > 2016-07-25 Andre Vieira > Thomas Preud'homme > > * config.gcc (extra_headers): Added arm_cmse.h. > * config/arm/arm-arches.def (ARM_ARCH): > (armv8-m): Add FL2_CMSE. > (armv8-m.main): Likewise. > (armv8-m.main+dsp): Likewise. > * config/arm/arm-c.c > (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. > * config/arm/arm-protos.h > (arm_is_constant_pool_ref): Define FL2_CMSE. > * config/arm.c (arm_arch_cmse): New. > (arm_option_override): New error for unsupported cmse target. > * config/arm/arm.h (arm_arch_cmse): New. > * config/arm/arm.opt (mcmse): New. > * doc/invoke.texi (ARM Options): Add -mcmse. > * config/arm/arm_cmse.h: New file. > > *** libgcc/ChangeLog *** > 2016-07-25 Andre Vieira > Thomas Preud'homme > > * config/arm/cmse.c: Likewise. > * config/arm/t-arm (HAVE_CMSE): New. > > *** gcc/testsuite/ChangeLog *** > 2016-07-25 Andre Vieira > Thomas Preud'homme > > * gcc.target/arm/cmse/cmse.exp: New. > * gcc.target/arm/cmse/cmse-1.c: New. > * gcc.target/arm/cmse/cmse-12.c: New. > * lib/target-supports.exp > (check_effective_target_arm_cmse_ok): New. > Added more documentation as requested. This patch adds the support of the '-mcmse' option to enable ARMv8-M's Security Extensions and supports the following intrinsics: cmse_TT cmse_TT_fptr cmse_TTT cmse_TTT_fptr cmse_TTA cmse_TTA_fptr cmse_TTAT cmse_TTAT_fptr cmse_check_address_range cmse_check_pointed_object cmse_is_nsfptr cmse_nsfptr_create It also defines the mandatory cmse_address_info struct and the __ARM_FEATURE_CMSE macro. See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security Extensions: Requirements on Development Tools (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). *** gcc/ChangeLog *** 2016-07-xx Andre Vieira Thomas Preud'homme * config.gcc (extra_headers): Added arm_cmse.h. * config/arm/arm-arches.def (ARM_ARCH): (armv8-m): Add FL2_CMSE. (armv8-m.main): Likewise. (armv8-m.main+dsp): Likewise. * config/arm/arm-c.c (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. * config/arm/arm-protos.h (arm_is_constant_pool_ref): Define FL2_CMSE. * config/arm.c (arm_arch_cmse): New. (arm_option_override): New error for unsupported cmse target. * config/arm/arm.h (arm_arch_cmse): New. * config/arm/arm.opt (mcmse): New. * doc/invoke.texi (ARM Options): Add -mcmse. * doc/extend.texi (ARM ARMv8-M Security Extensions): Add section. * config/arm/arm_cmse.h: New file. *** libgcc/ChangeLog *** 2016-07-xx Andre Vieira Thomas Preud'homme * config/arm/cmse.c: Likewise. * config/arm/t-arm (HAVE_CMSE): New. *** gcc/testsuite/ChangeLog *** 2016-07-xx Andre Vieira Thomas Preud'homme * gcc.target/arm/cmse/cmse.exp: New. * gcc.target/arm/cmse/cmse-1.c: New. * gcc.target/arm/cmse/cmse-12.c: New. * lib/target-supports.exp (check_effective_target_arm_cmse_ok): New. --------------070006050101020606000205 Content-Type: text/plain; charset=UTF-8; name="diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff" Content-length: 31895 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MK aW5kZXggMWY3NWYxNzg3NzMzNGMyYmI2MWNkMTZiNjk1MzllYzc1MTRkYjhh ZS4uODU1NWJiZjE5ZDgxYjUxNzQ5M2M4NmIzOGFmZjMxYTYzM2FjNTBlYiAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5n Y2MKQEAgLTMyMCw3ICszMjAsNyBAQCBhcmMqLSotKikKIGFybSotKi0qKQog CWNwdV90eXBlPWFybQogCWV4dHJhX29ianM9ImFybS1idWlsdGlucy5vIGFh cmNoLWNvbW1vbi5vIgotCWV4dHJhX2hlYWRlcnM9Im1taW50cmluLmggYXJt X25lb24uaCBhcm1fYWNsZS5oIgorCWV4dHJhX2hlYWRlcnM9Im1taW50cmlu LmggYXJtX25lb24uaCBhcm1fYWNsZS5oIGFybV9jbXNlLmgiCiAJdGFyZ2V0 X3R5cGVfZm9ybWF0X2NoYXI9JyUnCiAJY190YXJnZXRfb2Jqcz0iYXJtLWMu byIKIAljeHhfdGFyZ2V0X29ianM9ImFybS1jLm8iCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2FybS9hcm0tYXJjaGVzLmRlZiBiL2djYy9jb25maWcvYXJt L2FybS1hcmNoZXMuZGVmCmluZGV4IGJlNDY1MjFjOWVhZWE1NGY5YWQ3OGE5 Mjg3NDU2NzU4OTI4OWRiZGYuLjBlNTIzOTU5NTUxY2MzYjFkYTMxNDExY2Nk ZDExMDViODMwZGI4NDUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2Fy bS1hcmNoZXMuZGVmCisrKyBiL2djYy9jb25maWcvYXJtL2FybS1hcmNoZXMu ZGVmCkBAIC02MywxMSArNjMsMTEgQEAgQVJNX0FSQ0goImFybXY4LjEtYStj cmMiLGNvcnRleGE1MywgOEEsCiAJICBBUk1fRlNFVF9NQUtFIChGTF9DT19Q Uk9DIHwgRkxfQ1JDMzIgfCBGTF9GT1JfQVJDSDhBLAogCQkJIEZMMl9GT1Jf QVJDSDhfMUEpKQogQVJNX0FSQ0goImFybXY4LW0uYmFzZSIsIGNvcnRleG0w LCA4TV9CQVNFLAotCSBBUk1fRlNFVF9NQUtFX0NQVTEgKAkJCSAgICAgIEZM X0ZPUl9BUkNIOE1fQkFTRSkpCisJIEFSTV9GU0VUX01BS0UgKAkJCSAgRkxf Rk9SX0FSQ0g4TV9CQVNFLCBGTDJfQ01TRSkpCiBBUk1fQVJDSCgiYXJtdjgt bS5tYWluIiwgY29ydGV4bTcsIDhNX01BSU4sCi0JIEFSTV9GU0VUX01BS0Vf Q1BVMShGTF9DT19QUk9DIHwJICAgICAgRkxfRk9SX0FSQ0g4TV9NQUlOKSkK KwkgQVJNX0ZTRVRfTUFLRSAoRkxfQ09fUFJPQyB8CQkgIEZMX0ZPUl9BUkNI OE1fTUFJTiwgRkwyX0NNU0UpKQogQVJNX0FSQ0goImFybXY4LW0ubWFpbitk c3AiLCBjb3J0ZXhtNywgOE1fTUFJTiwKLQkgQVJNX0ZTRVRfTUFLRV9DUFUx KEZMX0NPX1BST0MgfCBGTF9BUkNIN0VNIHwgRkxfRk9SX0FSQ0g4TV9NQUlO KSkKKwkgQVJNX0ZTRVRfTUFLRSAoRkxfQ09fUFJPQyB8IEZMX0FSQ0g3RU0g fCBGTF9GT1JfQVJDSDhNX01BSU4sIEZMMl9DTVNFKSkKIEFSTV9BUkNIKCJp d21teHQiLCAgaXdtbXh0LCAgICAgNVRFLAlBUk1fRlNFVF9NQUtFX0NQVTEg KEZMX0xEU0NIRUQgfCBGTF9TVFJPTkcgfCBGTF9GT1JfQVJDSDVURSB8IEZM X1hTQ0FMRSB8IEZMX0lXTU1YVCkpCiBBUk1fQVJDSCgiaXdtbXh0MiIsIGl3 bW14dDIsICAgIDVURSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVE IHwgRkxfU1RST05HIHwgRkxfRk9SX0FSQ0g1VEUgfCBGTF9YU0NBTEUgfCBG TF9JV01NWFQgfCBGTF9JV01NWFQyKSkKIApkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9hcm0vYXJtLWMuYyBiL2djYy9jb25maWcvYXJtL2FybS1jLmMKaW5k ZXggYjk4NDcwZmZmNDViMjBhNTM5OGMyNTM0YmMzYmIzZWRmYjdiZmQwMS4u YWQyZmIwOWQxZjljYTE0MzAwYzYyODNmMzgzMWE1MjdkYjY1NjI2NyAxMDA2 NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWMuYworKysgYi9nY2MvY29u ZmlnL2FybS9hcm0tYy5jCkBAIC03Niw2ICs3NiwxNCBAQCBhcm1fY3B1X2J1 aWx0aW5zIChzdHJ1Y3QgY3BwX3JlYWRlciogcGZpbGUpCiAKICAgZGVmX29y X3VuZGVmX21hY3JvIChwZmlsZSwgIl9fQVJNXzMyQklUX1NUQVRFIiwgVEFS R0VUXzMyQklUKTsKIAorICBpZiAoYXJtX2FyY2g4ICYmICFhcm1fYXJjaF9u b3RtKQorICAgIHsKKyAgICAgIGlmIChhcm1fYXJjaF9jbXNlICYmIHVzZV9j bXNlKQorCWJ1aWx0aW5fZGVmaW5lX3dpdGhfaW50X3ZhbHVlICgiX19BUk1f RkVBVFVSRV9DTVNFIiwgMyk7CisgICAgICBlbHNlCisJYnVpbHRpbl9kZWZp bmUgKCJfX0FSTV9GRUFUVVJFX0NNU0UiKTsKKyAgICB9CisKICAgaWYgKFRB UkdFVF9BUk1fRkVBVFVSRV9MRFJFWCkKICAgICBidWlsdGluX2RlZmluZV93 aXRoX2ludF92YWx1ZSAoIl9fQVJNX0ZFQVRVUkVfTERSRVgiLAogCQkJCSAg IFRBUkdFVF9BUk1fRkVBVFVSRV9MRFJFWCk7CmRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL2FybS9hcm0tcHJvdG9zLmggYi9nY2MvY29uZmlnL2FybS9hcm0t cHJvdG9zLmgKaW5kZXggNDljM2E5MmRiYTgwZGIzMmI2OThhMGI0NGFkNzJk NTYxMTFjMTM1OC4uMDc1NGZiNzI1MmE4Yjg2ZmZhY2MwY2VlNDU5ODY4Njc1 MmFmNmU1NiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLXByb3Rv cy5oCisrKyBiL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaApAQCAtMzkx LDYgKzM5MSw3IEBAIGV4dGVybiBib29sIGFybV9pc19jb25zdGFudF9wb29s X3JlZiAocnR4KTsKICNkZWZpbmUgRkxfQVJDSDZLWiAgICAoMSA8PCAzMSkg ICAgICAgLyogQVJNdjZLWiBhcmNoaXRlY3R1cmUuICAqLwogCiAjZGVmaW5l IEZMMl9BUkNIOF8xICAgKDEgPDwgMCkJICAgICAgLyogQXJjaGl0ZWN0dXJl IDguMS4gICovCisjZGVmaW5lIEZMMl9DTVNFICAgICAgKDEgPDwgMSkJICAg ICAgLyogQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNpb25zLiAgKi8KIAogLyog RmxhZ3MgdGhhdCBvbmx5IGVmZmVjdCB0dW5pbmcsIG5vdCBhdmFpbGFibGUg aW5zdHJ1Y3Rpb25zLiAgKi8KICNkZWZpbmUgRkxfVFVORQkJKEZMX1dCVUYg fCBGTF9WRlBWMiB8IEZMX1NUUk9ORyB8IEZMX0xEU0NIRUQgXApkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmggYi9nY2MvY29uZmlnL2FybS9h cm0uaAppbmRleCAzMTc4ODVjZjcxOTdiNjc1NWM0ZDliNTcxN2FmZTYxNjYy NjI2Nzg2Li5lMzY5N2JiY2I0MjU5OTlkYjMxYWMyYjRmNDdlMTRiYjNmMmZm YTg5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9hcm0uaAorKysgYi9n Y2MvY29uZmlnL2FybS9hcm0uaApAQCAtNTA5LDYgKzUwOSw5IEBAIGV4dGVy biBib29sIGFybV9kaXNhYmxlX2xpdGVyYWxfcG9vbDsKIC8qIE5vbnplcm8g aWYgY2hpcCBzdXBwb3J0cyB0aGUgQVJNdjggQ1JDIGluc3RydWN0aW9ucy4g ICovCiBleHRlcm4gaW50IGFybV9hcmNoX2NyYzsKIAorLyogTm9uemVybyBp ZiBjaGlwIHN1cHBvcnRzIHRoZSBBUk12OC1NIFNlY3VyaXR5IEV4dGVuc2lv bnMuICAqLworZXh0ZXJuIGludCBhcm1fYXJjaF9jbXNlOworCiAjaWZuZGVm IFRBUkdFVF9ERUZBVUxUCiAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUICAoTUFT S19BUENTX0ZSQU1FKQogI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2FybS5jCmluZGV4IDE5NWRl NDgyMmM4ZjI2YWNiZDY3ZTA4NjA0NzE5MzY1YjNkNjg1MzQuLjk5MDNkOWNk OGM1ZmY2OGEyMzE4YTY0M2JkZjMxY2Y0ODAxNmViYTQgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvYXJtL2FybS5jCisrKyBiL2djYy9jb25maWcvYXJtL2Fy bS5jCkBAIC04ODksNiArODg5LDkgQEAgaW50IGFybV9jb25kZXhlY19tYXNr bGVuID0gMDsKIC8qIE5vbnplcm8gaWYgY2hpcCBzdXBwb3J0cyB0aGUgQVJN djggQ1JDIGluc3RydWN0aW9ucy4gICovCiBpbnQgYXJtX2FyY2hfY3JjID0g MDsKIAorLyogTm9uemVybyBpZiBjaGlwIHN1cHBvcnRzIHRoZSBBUk12OC1N IHNlY3VyaXR5IGV4dGVuc2lvbnMuICAqLworaW50IGFybV9hcmNoX2Ntc2Ug PSAwOworCiAvKiBOb256ZXJvIGlmIHRoZSBjb3JlIGhhcyBhIHZlcnkgc21h bGwsIGhpZ2gtbGF0ZW5jeSwgbXVsdGlwbHkgdW5pdC4gICovCiBpbnQgYXJt X21fcHJvZmlsZV9zbWFsbF9tdWwgPSAwOwogCkBAIC0zMjMyLDYgKzMyMzUs NyBAQCBhcm1fb3B0aW9uX292ZXJyaWRlICh2b2lkKQogICBhcm1fYXJjaF9u b192b2xhdGlsZV9jZSA9IEFSTV9GU0VUX0hBU19DUFUxIChpbnNuX2ZsYWdz LCBGTF9OT19WT0xBVElMRV9DRSk7CiAgIGFybV90dW5lX2NvcnRleF9hOSA9 IChhcm1fdHVuZSA9PSBjb3J0ZXhhOSkgIT0gMDsKICAgYXJtX2FyY2hfY3Jj ID0gQVJNX0ZTRVRfSEFTX0NQVTEgKGluc25fZmxhZ3MsIEZMX0NSQzMyKTsK KyAgYXJtX2FyY2hfY21zZSA9IEFSTV9GU0VUX0hBU19DUFUyIChpbnNuX2Zs YWdzLCBGTDJfQ01TRSk7CiAgIGFybV9tX3Byb2ZpbGVfc21hbGxfbXVsID0g QVJNX0ZTRVRfSEFTX0NQVTEgKGluc25fZmxhZ3MsIEZMX1NNQUxMTVVMKTsK IAogICAvKiBWNSBjb2RlIHdlIGdlbmVyYXRlIGlzIGNvbXBsZXRlbHkgaW50 ZXJ3b3JraW5nIGNhcGFibGUsIHNvIHdlIHR1cm4gb2ZmCkBAIC0zNDk0LDYg KzM0OTgsOSBAQCBhcm1fb3B0aW9uX292ZXJyaWRlICh2b2lkKQogICBpZiAo dGFyZ2V0X3Nsb3dfZmxhc2hfZGF0YSkKICAgICBhcm1fZGlzYWJsZV9saXRl cmFsX3Bvb2wgPSB0cnVlOwogCisgIGlmICh1c2VfY21zZSAmJiAhYXJtX2Fy Y2hfY21zZSkKKyAgICBlcnJvciAoInRhcmdldCBDUFUgZG9lcyBub3Qgc3Vw cG9ydCBBUk12OC1NIFNlY3VyaXR5IEV4dGVuc2lvbnMiKTsKKwogICAvKiBE aXNhYmxlIHNjaGVkdWxpbmcgZnVzaW9uIGJ5IGRlZmF1bHQgaWYgaXQncyBu b3QgYXJtdjcgcHJvY2Vzc29yCiAgICAgIG9yIGRvZXNuJ3QgcHJlZmVyIGxk cmQvc3RyZC4gICovCiAgIGlmIChmbGFnX3NjaGVkdWxlX2Z1c2lvbiA9PSAy CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0ub3B0IGIvZ2NjL2Nv bmZpZy9hcm0vYXJtLm9wdAppbmRleCAwZWJlMDE3NDM5MDE2N2I3OWE2NDU4 M2MzNWEzZjhmYjAxOGY2NTM4Li5jYjk1NjYzMmUyM2Y0NDY0YzI2ZjE4MGQ2 MzNiMjAwOTFmMjEyYTM3IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9h cm0ub3B0CisrKyBiL2djYy9jb25maWcvYXJtL2FybS5vcHQKQEAgLTEwOSw2 ICsxMDksMTAgQEAgbWZsb2F0LWFiaT0KIFRhcmdldCBSZWplY3ROZWdhdGl2 ZSBKb2luZWQgRW51bShmbG9hdF9hYmlfdHlwZSkgVmFyKGFybV9mbG9hdF9h YmkpIEluaXQoVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJKQogU3BlY2lmeSBp ZiBmbG9hdGluZyBwb2ludCBoYXJkd2FyZSBzaG91bGQgYmUgdXNlZC4KIAor bWNtc2UKK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIodXNlX2Ntc2UpCitT cGVjaWZ5IHRoYXQgdGhlIGNvbXBpbGVyIHNob3VsZCB0YXJnZXQgc2VjdXJl IGNvZGUgYXMgcGVyIEFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9ucy4KKwog RW51bQogTmFtZShmbG9hdF9hYmlfdHlwZSkgVHlwZShlbnVtIGZsb2F0X2Fi aV90eXBlKQogS25vd24gZmxvYXRpbmctcG9pbnQgQUJJcyAoZm9yIHVzZSB3 aXRoIHRoZSAtbWZsb2F0LWFiaT0gb3B0aW9uKToKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJtL2FybV9jbXNlLmggYi9nY2MvY29uZmlnL2FybS9hcm1f Y21zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MjMyOTM3YzZhZTA0 NzU0YTZiYmM1MTNiMTQzNjcyYTRiZTU1MzAKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvY29uZmlnL2FybS9hcm1fY21zZS5oCkBAIC0wLDAgKzEsMTkyIEBA CisvKiBBUk12OC1NIFNlY3VyZSBFeHRlbnNpb25zIGludHJpbnNpY3MgaW5j bHVkZSBmaWxlLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5 IEFSTSBMdGQuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKwor ICAgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisg ICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91cgorICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgICBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkKKyAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIgU2VjdGlvbiA3 IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKworI2lmbmRlZiBf R0NDX0FSTV9DTVNFX0gKKyNkZWZpbmUgX0dDQ19BUk1fQ01TRV9ICisKKyNp ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lm IF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEKKworI2luY2x1ZGUgPHN0ZGRlZi5o PgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaWZkZWYgX19BUk1fQklHX0VO RElBTgorCit0eXBlZGVmIHVuaW9uIHsKKyAgc3RydWN0IGNtc2VfYWRkcmVz c19pbmZvIHsKKyNpZiBfX0FSTV9GRUFUVVJFX0NNU0UgJiAyCisgICAgdW5z aWduZWQgaWRhdV9yZWdpb246ODsKKyAgICB1bnNpZ25lZCBpZGF1X3JlZ2lv bl92YWxpZDoxOworICAgIHVuc2lnbmVkIHNlY3VyZToxOworICAgIHVuc2ln bmVkIG5vbnNlY3VyZV9yZWFkd3JpdGVfb2s6MTsKKyAgICB1bnNpZ25lZCBu b25zZWN1cmVfcmVhZF9vazoxOworI2Vsc2UKKyAgICB1bnNpZ25lZCA6MTI7 CisjZW5kaWYKKyAgICB1bnNpZ25lZCByZWFkd3JpdGVfb2s6MTsKKyAgICB1 bnNpZ25lZCByZWFkX29rOjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYg MgorICAgIHVuc2lnbmVkIHNhdV9yZWdpb25fdmFsaWQ6MTsKKyNlbHNlCisg ICAgdW5zaWduZWQgOjE7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBtcHVfcmVn aW9uX3ZhbGlkOjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAg IHVuc2lnbmVkIHNhdV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQg Ojg7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uOjg7CisgIH0g ZmxhZ3M7CisgIHVuc2lnbmVkIHZhbHVlOworfSBjbXNlX2FkZHJlc3NfaW5m b190OworCisjZWxzZQorCit0eXBlZGVmIHVuaW9uIHsKKyAgc3RydWN0IGNt c2VfYWRkcmVzc19pbmZvIHsKKyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uOjg7 CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVkIHNh dV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQgOjg7CisjZW5kaWYK KyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uX3ZhbGlkOjE7CisjaWYgX19BUk1f RkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVkIHNhdV9yZWdpb25fdmFs aWQ6MTsKKyNlbHNlCisgICAgdW5zaWduZWQgOjE7CisjZW5kaWYKKyAgICB1 bnNpZ25lZCByZWFkX29rOjE7CisgICAgdW5zaWduZWQgcmVhZHdyaXRlX29r OjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVk IG5vbnNlY3VyZV9yZWFkX29rOjE7CisgICAgdW5zaWduZWQgbm9uc2VjdXJl X3JlYWR3cml0ZV9vazoxOworICAgIHVuc2lnbmVkIHNlY3VyZToxOworICAg IHVuc2lnbmVkIGlkYXVfcmVnaW9uX3ZhbGlkOjE7CisgICAgdW5zaWduZWQg aWRhdV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQgOjEyOworI2Vu ZGlmCisgIH0gZmxhZ3M7CisgIHVuc2lnbmVkIHZhbHVlOworfSBjbXNlX2Fk ZHJlc3NfaW5mb190OworCisjZW5kaWYgLyogX19BUk1fQklHX0VORElBTiAq LworCisjZGVmaW5lIGNtc2VfVFRfZnB0cihwKSAoX19jbXNlX1RUX2ZwdHIg KChfX2Ntc2VfZnB0cikocCkpKQorCit0eXBlZGVmIHZvaWQgKCpfX2Ntc2Vf ZnB0cikodm9pZCk7CisKKyNkZWZpbmUgX19DTVNFX1RUX0FTTShmbGFncykg XAoreyBcCisgIGNtc2VfYWRkcmVzc19pbmZvX3QgX19yZXN1bHQ7IFwKKyAg IF9fYXNtX18gKCJ0dCIgIyBmbGFncyAiICUwLCUxIiBcCisJICAgOiAiPXIi KF9fcmVzdWx0KSBcCisJICAgOiAiciIoX19wKSBcCisJICAgOiAibWVtb3J5 Iik7IFwKKyAgcmV0dXJuIF9fcmVzdWx0OyBcCit9CisKK19fZXh0ZW5zaW9u X18gc3RhdGljIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19p bmxpbmVfXykpCitjbXNlX2FkZHJlc3NfaW5mb190CitfX2Ntc2VfVFRfZnB0 ciAoX19jbXNlX2ZwdHIgX19wKQorX19DTVNFX1RUX0FTTSAoKQorCitfX2V4 dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h bHdheXNfaW5saW5lX18pKQorY21zZV9hZGRyZXNzX2luZm9fdAorY21zZV9U VCAodm9pZCAqX19wKQorX19DTVNFX1RUX0FTTSAoKQorCisjZGVmaW5lIGNt c2VfVFRUX2ZwdHIocCkgKF9fY21zZV9UVFRfZnB0ciAoKF9fY21zZV9mcHRy KShwKSkpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIF9fYXR0 cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitjbXNlX2FkZHJlc3Nf aW5mb190CitfX2Ntc2VfVFRUX2ZwdHIgKF9fY21zZV9mcHRyIF9fcCkKK19f Q01TRV9UVF9BU00gKHQpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5s aW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitjbXNl X2FkZHJlc3NfaW5mb190CitjbXNlX1RUVCAodm9pZCAqX19wKQorX19DTVNF X1RUX0FTTSAodCkKKworI2lmIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDIKKwor I2RlZmluZSBjbXNlX1RUQV9mcHRyKHApIChfX2Ntc2VfVFRBX2ZwdHIgKChf X2Ntc2VfZnB0cikocCkpKQorCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQorY21z ZV9hZGRyZXNzX2luZm9fdAorX19jbXNlX1RUQV9mcHRyIChfX2Ntc2VfZnB0 ciBfX3ApCitfX0NNU0VfVFRfQVNNIChhKQorCitfX2V4dGVuc2lvbl9fIHN0 YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5l X18pKQorY21zZV9hZGRyZXNzX2luZm9fdAorY21zZV9UVEEgKHZvaWQgKl9f cCkKK19fQ01TRV9UVF9BU00gKGEpCisKKyNkZWZpbmUgY21zZV9UVEFUX2Zw dHIocCkgKF9fY21zZV9UVEFUX2ZwdHIgKChfX2Ntc2VfZnB0cikocCkpKQor CitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBjbXNlX2FkZHJlc3Nf aW5mb190CitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQor X19jbXNlX1RUQVRfZnB0ciAoX19jbXNlX2ZwdHIgX19wKQorX19DTVNFX1RU X0FTTSAoYXQpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIGNt c2VfYWRkcmVzc19pbmZvX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19p bmxpbmVfXykpCitjbXNlX1RUQVQgKHZvaWQgKl9fcCkKK19fQ01TRV9UVF9B U00gKGF0KQorCisjZGVmaW5lIENNU0VfQVVfTk9OU0VDVVJFCTIKKyNkZWZp bmUgQ01TRV9NUFVfTk9OU0VDVVJFCTE2CisjZGVmaW5lIENNU0VfTk9OU0VD VVJFCQkxOAorCisjZW5kaWYgLyogX19BUk1fRkVBVFVSRV9DTVNFICYgMiAq LworCisjZGVmaW5lIENNU0VfTVBVX1VOUFJJVgkJNAorI2RlZmluZSBDTVNF X01QVV9SRUFEV1JJVEUJMQorI2RlZmluZSBDTVNFX01QVV9SRUFECQk4CisK K19fZXh0ZW5zaW9uX18gdm9pZCAqCitjbXNlX2NoZWNrX2FkZHJlc3NfcmFu Z2UgKHZvaWQgKiwgc2l6ZV90LCBpbnQpOworCisjZGVmaW5lIGNtc2VfY2hl Y2tfcG9pbnRlZF9vYmplY3QocCwgZikgXAorICAoKHR5cGVvZiAoKHApKSkg Y21zZV9jaGVja19hZGRyZXNzX3JhbmdlICgocCksIHNpemVvZiAoKihwKSks IChmKSkpCisKKyNkZWZpbmUgY21zZV9uc2ZwdHJfY3JlYXRlKHApICgodHlw ZW9mICgocCkpKSAoKGludHB0cl90KSAocCkgJiB+MSkpCisKKyNkZWZpbmUg Y21zZV9pc19uc2ZwdHIocCkgKCEoKGludHB0cl90KSAocCkgJiAxKSkKKwor I2VuZGlmIC8qIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEgKi8KKworI2lmZGVm IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9HQ0NfQVJN X0NNU0VfSCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBi L2djYy9kb2MvZXh0ZW5kLnRleGkKaW5kZXggNWI5ZTYxNzRjZmE1YmNmYTNh NTgwNTVjNzYxMDcyNWQ5ZWQzZGUyZC4uODVlZmVmMjliOTljMjYzNTBhNjcw NzljMGZiY2FlMDJiMDM2YWMyMCAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRl bmQudGV4aQorKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC0xMTU2Nyw2 ICsxMTU2Nyw3IEBAIGluc3RydWN0aW9ucywgYnV0IGFsbG93IHRoZSBjb21w aWxlciB0byBzY2hlZHVsZSB0aG9zZSBjYWxscy4KICogQVJNIGlXTU1YdCBC dWlsdC1pbiBGdW5jdGlvbnM6OgogKiBBUk0gQyBMYW5ndWFnZSBFeHRlbnNp b25zIChBQ0xFKTo6CiAqIEFSTSBGbG9hdGluZyBQb2ludCBTdGF0dXMgYW5k IENvbnRyb2wgSW50cmluc2ljczo6CisqIEFSTSBBUk12OC1NIFNlY3VyaXR5 IEV4dGVuc2lvbnM6OgogKiBBVlIgQnVpbHQtaW4gRnVuY3Rpb25zOjoKICog QmxhY2tmaW4gQnVpbHQtaW4gRnVuY3Rpb25zOjoKICogRlItViBCdWlsdC1p biBGdW5jdGlvbnM6OgpAQCAtMTI0MTIsNiArMTI0MTMsMzEgQEAgdW5zaWdu ZWQgaW50IF9fYnVpbHRpbl9hcm1fZ2V0X2Zwc2NyICgpCiB2b2lkIF9fYnVp bHRpbl9hcm1fc2V0X2Zwc2NyICh1bnNpZ25lZCBpbnQpCiBAZW5kIHNtYWxs ZXhhbXBsZQogCitAbm9kZSBBUk0gQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zCitAc3Vic2VjdGlvbiBBUk0gQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zCisKK0dDQyBpbXBsZW1lbnRzIHRoZSBBUk12OC1NIFNlY3VyaXR5IEV4 dGVuc2lvbnMgYXMgZGVzY3JpYmVkIGluIHRoZSBBUk12OC1NCitTZWN1cml0 eSBFeHRlbnNpb25zOiBSZXF1aXJlbWVuZXRzIG9uIERldmVsb3BtZW50IFRv b2xzIEVuZ2luZWVyaW5nCitTcGVjaWZpY2F0aW9uLCB3aGljaCBjYW4gYmUg Zm91bmQgYXQKK0B1cmVme2h0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVs cC90b3BpYy9jb20uYXJtLmRvYy5lY20wMzU5ODE4L0VDTTAzNTk4MThfYXJt djhtX3NlY3VyaXR5X2V4dGVuc2lvbnNfcmVxc19vbl9kZXZfdG9vbHNfMV8w LnBkZn0uCisKK0FzIHBhcnQgb2YgdGhlIFNlY3VyaXR5IEV4dGVuc2lvbnMg R0NDIGltcGxlbWVudHMgdGhlIGludHJpbnNpY3MgYmVsb3cuICBGUFRSCitp cyB1c2VkIGhlcmUgdG8gbWVhbiBhbnkgZnVuY3Rpb24gcG9pbnRlciB0eXBl LgorCitAc21hbGxleGFtcGxlCitjbXNlX2FkZHJlc3NfaW5mb190IGNtc2Vf VFQgKHZvaWQgKikKK2Ntc2VfYWRkcmVzc19pbmZvX3QgY21zZV9UVF9mcHRy IChGUFRSKQorY21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUVCAodm9pZCAq KQorY21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUVF9mcHRyIChGUFRSKQor Y21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUQSAodm9pZCAqKQorY21zZV9h ZGRyZXNzX2luZm9fdCBjbXNlX1RUQV9mcHRyIChGUFRSKQorY21zZV9hZGRy ZXNzX2luZm9fdCBjbXNlX1RUQVQgKHZvaWQgKikKK2Ntc2VfYWRkcmVzc19p bmZvX3QgY21zZV9UVEFUX2ZwdHIgKEZQVFIpCit2b2lkICogY21zZV9jaGVj a19hZGRyZXNzX3JhbmdlICh2b2lkICosIHNpemVfdCwgaW50KQordHlwZW9m KHApIGNtc2VfbnNmcHRyX2NyZWF0ZSAoRlBUUiBwKQoraW50cHRyX3QgY21z ZV9pc19uc2ZwdHIgKEZQVFIpCitAZW5kIHNtYWxsZXhhbXBsZQorCiBAbm9k ZSBBVlIgQnVpbHQtaW4gRnVuY3Rpb25zCiBAc3Vic2VjdGlvbiBBVlIgQnVp bHQtaW4gRnVuY3Rpb25zCiAKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tl LnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCmluZGV4IDlhNGRiMzg4YTNi M2RjNjQ0YjBjNTU1ZjFhMTEyMWNlZjE0ZWYyZGYuLjUzOWRiYTBjY2UwYzUz MWJjMWNjZDRmNWZhOTU2MmYxZTIwNjk0ZTUgMTAwNjQ0Ci0tLSBhL2djYy9k b2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAt NjM5LDcgKzYzOSw4IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysr IERpYWxlY3RzfS4KIC1tbmVvbi1mb3ItNjRiaXRzIEBnb2wKIC1tc2xvdy1m bGFzaC1kYXRhIEBnb2wKIC1tYXNtLXN5bnRheC11bmlmaWVkIEBnb2wKLS1t cmVzdHJpY3QtaXR9CistbXJlc3RyaWN0LWl0IEBnb2wKKy1tY21zZX0KIAog QGVtcGh7QVZSIE9wdGlvbnN9CiBAZ2Njb3B0bGlzdHstbW1jdT1AdmFye21j dX0gLW1hY2N1bXVsYXRlLWFyZ3MgLW1icmFuY2gtY29zdD1AdmFye2Nvc3R9 IEBnb2wKQEAgLTE0NTI3LDYgKzE0NTI4LDEyIEBAIFByaW50IENQVSB0dW5p bmcgaW5mb3JtYXRpb24gYXMgY29tbWVudCBpbiBhc3NlbWJsZXIgZmlsZS4g IFRoaXMgaXMKIGFuIG9wdGlvbiB1c2VkIG9ubHkgZm9yIHJlZ3Jlc3Npb24g dGVzdGluZyBvZiB0aGUgY29tcGlsZXIgYW5kIG5vdAogaW50ZW5kZWQgZm9y IG9yZGluYXJ5IHVzZSBpbiBjb21waWxpbmcgY29kZS4gIFRoaXMgb3B0aW9u IGlzIGRpc2FibGVkCiBieSBkZWZhdWx0LgorCitAaXRlbSAtbWNtc2UKK0Bv cGluZGV4IG1jbXNlCitHZW5lcmF0ZSBzZWN1cmUgY29kZSBhcyBwZXIgdGhl ICJBUk12OC1NIFNlY3VyaXR5IEV4dGVuc2lvbnM6IFJlcXVpcmVtZW50cyBv bgorRGV2ZWxvcG1lbnQgVG9vbHMgRW5naW5lZXJpbmcgU3BlY2lmaWNhdGlv biIsIHdoaWNoIGNhbiBiZSBmb3VuZCBvbgorQHVybHtodHRwOi8vaW5mb2Nl bnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuZWNtMDM1OTgx OC9FQ00wMzU5ODE4X2FybXY4bV9zZWN1cml0eV9leHRlbnNpb25zX3JlcXNf b25fZGV2X3Rvb2xzXzFfMC5wZGZ9LgogQGVuZCB0YWJsZQogCiBAbm9kZSBB VlIgT3B0aW9ucwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL2Ntc2UtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL2Ntc2UtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmQ1YjlhMmQ5ZDU5NTY5ZGUxNzBkYTgxNGFlNjYwZTlmYjJiOTQzZTcKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJt L2Ntc2UvY21zZS0xLmMKQEAgLTAsMCArMSw2NyBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU9zIC1tY21zZSAtZmR1 bXAtcnRsLWV4cGFuZCIgfSAgKi8KKworI2luY2x1ZGUgPGFybV9jbXNlLmg+ CisKK2V4dGVybiBpbnQgYTsKK2V4dGVybiBpbnQgYmFyICh2b2lkKTsKKwor aW50IGZvbyAoY2hhciAqIHApCit7CisgIGNtc2VfYWRkcmVzc19pbmZvX3Qg Y2FpdDsKKworICBjYWl0ID0gY21zZV9UVCAoJmEpOworICBpZiAoY2FpdC5m bGFncy5tcHVfcmVnaW9uKQorICAgIGErKzsKKworICBjYWl0ID0gY21zZV9U VF9mcHRyICgmYmFyKTsKKyAgaWYgKGNhaXQuZmxhZ3MubXB1X3JlZ2lvbikK KyAgICBhKz0gYmFyICgpOworCisgIGNhaXQgPSBjbXNlX1RUQSAoJmEpOwor ICBpZiAoY2FpdC5mbGFncy5tcHVfcmVnaW9uKQorICAgIGErKzsKKworICBj YWl0ID0gY21zZV9UVEFfZnB0ciAoJmJhcik7CisgIGlmIChjYWl0LmZsYWdz Lm1wdV9yZWdpb24pCisgICAgYSs9IGJhciAoKTsKKworICBjYWl0ID0gY21z ZV9UVFQgKCZhKTsKKyAgaWYgKGNhaXQuZmxhZ3MubXB1X3JlZ2lvbikKKyAg ICBhKys7CisKKyAgY2FpdCA9IGNtc2VfVFRUX2ZwdHIgKCZiYXIpOworICBp ZiAoY2FpdC5mbGFncy5tcHVfcmVnaW9uKQorICAgIGErPSBiYXIgKCk7CisK KyAgY2FpdCA9IGNtc2VfVFRBVCAoJmEpOworICBpZiAoY2FpdC5mbGFncy5t cHVfcmVnaW9uKQorICAgIGErKzsKKworICBjYWl0ID0gY21zZV9UVEFUX2Zw dHIgKCZiYXIpOworICBpZiAoY2FpdC5mbGFncy5tcHVfcmVnaW9uKQorICAg IGErPSBiYXIgKCk7CisKKyAgcCA9IChjaGFyICopIGNtc2VfY2hlY2tfYWRk cmVzc19yYW5nZSAoKHZvaWQgKikgcCwgc2l6ZW9mIChjaGFyKSwgMCk7Cisg IHAgPSAoY2hhciAqKSBjbXNlX2NoZWNrX2FkZHJlc3NfcmFuZ2UgKCh2b2lk ICopIHAsIHNpemVvZiAoY2hhciksCisJCQkJCSBDTVNFX01QVV9VTlBSSVYp OworICBwID0gKGNoYXIgKikgY21zZV9jaGVja19hZGRyZXNzX3JhbmdlICgo dm9pZCAqKSBwLCBzaXplb2YgKGNoYXIpLAorCQkJCQkgQ01TRV9NUFVfUkVB RFdSSVRFKTsKKyAgcCA9IChjaGFyICopIGNtc2VfY2hlY2tfYWRkcmVzc19y YW5nZSAoKHZvaWQgKikgcCwgc2l6ZW9mIChjaGFyKSwKKwkJCQkJIENNU0Vf TVBVX1VOUFJJViB8IENNU0VfTVBVX1JFQUQpOworICBwID0gKGNoYXIgKikg Y21zZV9jaGVja19hZGRyZXNzX3JhbmdlICgodm9pZCAqKSBwLCBzaXplb2Yg KGNoYXIpLAorCQkJCQkgQ01TRV9BVV9OT05TRUNVUkUKKwkJCQkJIHwgQ01T RV9NUFVfTk9OU0VDVVJFKTsKKyAgcCA9IChjaGFyICopIGNtc2VfY2hlY2tf YWRkcmVzc19yYW5nZSAoKHZvaWQgKikgcCwgc2l6ZW9mIChjaGFyKSwKKwkJ CQkJIENNU0VfTk9OU0VDVVJFIHwgQ01TRV9NUFVfVU5QUklWKTsKKworICBw ID0gKGNoYXIgKikgY21zZV9jaGVja19wb2ludGVkX29iamVjdCAocCwgQ01T RV9OT05TRUNVUkUgfCBDTVNFX01QVV9VTlBSSVYpOworCisgIHJldHVybiBh OworfQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJc dHR0ICIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAidHR0ICIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAidHRhICIgMiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidHRhdCAiIDIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJsLmNtc2Vf Y2hlY2tfYWRkcmVzc19yYW5nZSIgNyB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgImNtc2VfY2hlY2tfcG9pbnRlZF9vYmpl Y3QiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL2Ntc2UtMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hcm0vY21zZS9jbXNlLTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uODdhMmYxMzYzYTRlNGJkODE3NTAzZTc5ZTUwNDk4MDIxMGU3MjJjMwot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h cm0vY21zZS9jbXNlLTEyLmMKQEAgLTAsMCArMSwxNCBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIiB9ICAq LworI2luY2x1ZGUgPGFybV9jbXNlLmg+CisKK2NoYXIgKgorZm9vIChjaGFy ICogcCkKK3sKKyAgaWYgKCFjbXNlX2lzX25zZnB0ciAocCkpCisgICAgcmV0 dXJuIGNtc2VfbnNmcHRyX2NyZWF0ZSAocCk7Cit9CisKKy8qIENoZWNrcyBm b3Igc2F2aW5nIGFuZCBjbGVhcmluZyBwcmlvciB0byBmdW5jdGlvbiBjYWxs LiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNt c2VfaXNfbnNmcHRyIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci1ub3QgImNtc2VfbnNmcHRyX2NyZWF0ZSIgfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21z ZS5leHAgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21z ZS5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc5N2RiYTE5MDE3MjBl MDQyNDlkNjEwNzhjMWNiZjJhM2U0MzZhOQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNlLmV4cApA QCAtMCwwICsxLDUwIEBACisjICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0 aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyMgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjIEdDQyB0ZXN0c3VpdGUgZm9yIEFS TXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9ucyB1c2luZyB0aGUgYGRnLmV4cCcg ZHJpdmVyLgorCisjIExvYWQgc3VwcG9ydCBwcm9jcy4KK2xvYWRfbGliIGdj Yy1kZy5leHAKKworIyBFeGl0IGltbWVkaWF0ZWx5IGlmIHRoZSB0YXJnZXQg ZG9lcyBub3Qgc3VwcG9ydCAtbWNtc2UuCitpZiAhW2NoZWNrX2VmZmVjdGl2 ZV90YXJnZXRfYXJtX2Ntc2Vfb2tdIHRoZW4geworICAgIHJldHVybgorfQor CisjIElmIGEgdGVzdGNhc2UgZG9lc24ndCBoYXZlIHNwZWNpYWwgb3B0aW9u cywgdXNlIHRoZXNlLgorZ2xvYmFsIERFRkFVTFRfQ0ZMQUdTCitpZiAhW2lu Zm8gZXhpc3RzIERFRkFVTFRfQ0ZMQUdTXSB0aGVuIHsKKyAgICBzZXQgREVG QVVMVF9DRkxBR1MgIiAtYW5zaSAtcGVkYW50aWMtZXJyb3JzIgorfQorCisj IEluaXRpYWxpemUgYGRnJy4KK2RnLWluaXQKKworc2V0IHNhdmVkLWRnLWRv LXdoYXQtZGVmYXVsdCAke2RnLWRvLXdoYXQtZGVmYXVsdH0KK3NldCBkZy1k by13aGF0LWRlZmF1bHQgImFzc2VtYmxlIgorCitzZXQgc2F2ZWQtbHRvX3Rv cnR1cmVfb3B0aW9ucyAke0xUT19UT1JUVVJFX09QVElPTlN9CitzZXQgTFRP X1RPUlRVUkVfT1BUSU9OUyAiIgorCisjIFRoZXNlIGFyZSBmb3IgYm90aCBi YXNlbGluZSBhbmQgbWFpbmxpbmUuCitnY2MtZGctcnVudGVzdCBbbHNvcnQg W2dsb2IgJHNyY2Rpci8kc3ViZGlyLyouY11dIFwKKwkiIiAkREVGQVVMVF9D RkxBR1MKKworc2V0IExUT19UT1JUVVJFX09QVElPTlMgJHtzYXZlZC1sdG9f dG9ydHVyZV9vcHRpb25zfQorc2V0IGRnLWRvLXdoYXQtZGVmYXVsdCAke3Nh dmVkLWRnLWRvLXdoYXQtZGVmYXVsdH0KKworIyBBbGwgZG9uZS4KK2RnLWZp bmlzaApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1 cHBvcnRzLmV4cCBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0 cy5leHAKaW5kZXggYjk5MDlhZGE3MzRjMDhhNDZhZjg4NmI1MTkwYmU5ZWE5 MmZkOThlNS4uMDUxYTlkNjhhNWRiN2Y5NDE3NDg2YmVjOWI4ZjNhZDM4MTJi YWU3OSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1 cHBvcnRzLmV4cAorKysgYi9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3Vw cG9ydHMuZXhwCkBAIC0zNTE5LDYgKzM1MTksMTkgQEAgcHJvYyBjaGVja19l ZmZlY3RpdmVfdGFyZ2V0X2FybV90aHVtYjFfY2J6X29rIHt9IHsKICAgICB9 CiB9CiAKKyMgUmV0dXJuIDEgaWYgdGhpcyBpcyBhbiBBUk0gdGFyZ2V0IHdo ZXJlIEFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9ucyBpcworIyBhdmFpbGFi bGUuCisKK3Byb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hcm1fY21zZV9v ayB7fSB7CisgICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdl cyBhcm1fY21zZSBvYmplY3QgeworCWludAorCWZvbyAodm9pZCkKKwl7CisJ ICBhc20gKCJieG5zIHIwIik7CisJfQorICAgIH0gIi1tY21zZSJdOworfQor CiAjIFJldHVybiAxIGlmIHRoaXMgY29tcGlsYXRpb24gdHVybnMgb24gc3Ry aW5nX29wc19wcmVmZXJfbmVvbiBvbi4KIAogcHJvYyBjaGVja19lZmZlY3Rp dmVfdGFyZ2V0X2FybV90dW5lX3N0cmluZ19vcHNfcHJlZmVyX25lb24geyB9 IHsKZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvYXJtL2Ntc2UuYyBiL2xp YmdjYy9jb25maWcvYXJtL2Ntc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5mZTNhMjI5NjdjODUzNmYyYThjMDViNTg2MjdmOTY0ZDNmYjFkMzQ1Ci0t LSAvZGV2L251bGwKKysrIGIvbGliZ2NjL2NvbmZpZy9hcm0vY21zZS5jCkBA IC0wLDAgKzEsMTA4IEBACisvKiBBUk12OC1NIFNlY3VyaXR5IEV4dGVuc2lv bnMgcm91dGluZXMuCisgICBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5 IEFSTSBMdGQuCisKKyAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkKKyAgIGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgZmlsZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQKKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5 b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVz Y3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwg dmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YW5kCisgICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRoZSBm aWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVs eS4gIElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCisKKyNpZiBfX0FSTV9GRUFUVVJFX0NNU0UgJiAxCisK KyNpbmNsdWRlIDxhcm1fY21zZS5oPgorCisvKiBBUk0gaW50cmluc2ljIGZ1 bmN0aW9uIHRvIHBlcmZvcm0gYSBwZXJtaXNzaW9uIGNoZWNrIG9uIGEgZ2l2 ZW4KKyAgIGFkZHJlc3MgcmFuZ2UuICBTZWUgQUNMRSBjaGFuZ2VzIGZvciBB Uk12OC1NLiAgKi8KKwordm9pZCAqCitjbXNlX2NoZWNrX2FkZHJlc3NfcmFu Z2UgKHZvaWQgKnAsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpCit7CisgIGNt c2VfYWRkcmVzc19pbmZvX3QgcGVybWIsIHBlcm1lOworICBjaGFyICpwYiA9 IChjaGFyICopIHAsICpwZTsKKworICAvKiBDaGVjayBpZiB0aGUgcmFuZ2Ug d3JhcHMgYXJvdW5kLiAgKi8KKyAgaWYgKFVJTlRQVFJfTUFYIC0gKHVpbnRw dHJfdCkgcCA8IHNpemUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogQ2hl Y2sgaWYgYW4gdW5rbm93biBmbGFnIGlzIHByZXNlbnQuICAqLworICBpbnQg a25vd24gPSBDTVNFX01QVV9VTlBSSVYgfCBDTVNFX01QVV9SRUFEV1JJVEUg fCBDTVNFX01QVV9SRUFEOworICBpbnQga25vd25fc2VjdXJlX2xldmVsID0g Q01TRV9NUFVfVU5QUklWOworI2lmIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDIK KyAga25vd24gfD0gQ01TRV9BVV9OT05TRUNVUkUgfCBDTVNFX01QVV9OT05T RUNVUkU7CisgIGtub3duX3NlY3VyZV9sZXZlbCB8PSBDTVNFX01QVV9OT05T RUNVUkU7CisjZW5kaWYKKyAgaWYgKGZsYWdzICYgKH5rbm93bikpCisgICAg cmV0dXJuIE5VTEw7CisKKyAgLyogRXhlY3V0ZSB0aGUgcmlnaHQgdmFyaWFu dCBvZiB0aGUgVFQgaW5zdHJ1Y3Rpb25zLiAgKi8KKyAgcGUgPSBwYiArIHNp emUgLSAxOworICBjb25zdCBpbnQgc2luZ2xlQ2hlY2sgPSAoKCh1aW50cHRy X3QpIHBiIF4gKHVpbnRwdHJfdCkgcGUpIDwgMzIpOworICBzd2l0Y2ggKGZs YWdzICYga25vd25fc2VjdXJlX2xldmVsKQorICAgIHsKKyAgICBjYXNlIDA6 CisgICAgICBwZXJtYiA9IGNtc2VfVFQgKHBiKTsKKyAgICAgIHBlcm1lID0g c2luZ2xlQ2hlY2sgPyBwZXJtYiA6IGNtc2VfVFQgKHBlKTsKKyAgICAgIGJy ZWFrOworICAgIGNhc2UgQ01TRV9NUFVfVU5QUklWOgorICAgICAgcGVybWIg PSBjbXNlX1RUVCAocGIpOworICAgICAgcGVybWUgPSBzaW5nbGVDaGVjayA/ IHBlcm1iIDogY21zZV9UVFQgKHBlKTsKKyAgICAgIGJyZWFrOworI2lmIF9f QVJNX0ZFQVRVUkVfQ01TRSAmIDIKKyAgICBjYXNlIENNU0VfTVBVX05PTlNF Q1VSRToKKyAgICAgIHBlcm1iID0gY21zZV9UVEEgKHBiKTsKKyAgICAgIHBl cm1lID0gc2luZ2xlQ2hlY2sgPyBwZXJtYiA6IGNtc2VfVFRBIChwZSk7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIENNU0VfTVBVX1VOUFJJViB8IENNU0Vf TVBVX05PTlNFQ1VSRToKKyAgICAgIHBlcm1iID0gY21zZV9UVEFUIChwYik7 CisgICAgICBwZXJtZSA9IHNpbmdsZUNoZWNrID8gcGVybWIgOiBjbXNlX1RU QVQgKHBlKTsKKyAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoK KyAgICAgIC8qIEludmFsaWQgZmxhZywgZWcuICBDTVNFX01QVV9OT05TRUNV UkUgc3BlY2lmaWVkIGJ1dAorCSBfX0FSTV9GRUFUVVJFX0NNU0UgJiAyID09 IDAuICAqLworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIC8qIENo ZWNrIHRoYXQgdGhlIHJhbmdlIGRvZXMgbm90IGNyb3NzIE1QVSwgU0FVLCBv ciBJREFVIGJvdW5kYXJpZXMuICAqLworICBpZiAocGVybWIudmFsdWUgIT0g cGVybWUudmFsdWUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogQ2hlY2sg dGhlIHBlcm1pc3Npb25zIG9uIHRoZSByYW5nZS4gICovCisgIHN3aXRjaCAo ZmxhZ3MgJiAofmtub3duX3NlY3VyZV9sZXZlbCkpCisgICAgeworI2lmIF9f QVJNX0ZFQVRVUkVfQ01TRSAmIDIKKyAgICBjYXNlIENNU0VfTVBVX1JFQUQg fCBDTVNFX01QVV9SRUFEV1JJVEUgfCBDTVNFX0FVX05PTlNFQ1VSRToKKyAg ICBjYXNlCQkgQ01TRV9NUFVfUkVBRFdSSVRFIHwgQ01TRV9BVV9OT05TRUNV UkU6CisgICAgICByZXR1cm4gcGVybWIuZmxhZ3Mubm9uc2VjdXJlX3JlYWR3 cml0ZV9vawk/IHAgOiBOVUxMOworICAgIGNhc2UgQ01TRV9NUFVfUkVBRCB8 IENNU0VfQVVfTk9OU0VDVVJFOgorICAgICAgcmV0dXJuIHBlcm1iLmZsYWdz Lm5vbnNlY3VyZV9yZWFkX29rCT8gcCA6IE5VTEw7CisgICAgY2FzZSBDTVNF X0FVX05PTlNFQ1VSRToKKyAgICAgIHJldHVybiBwZXJtYi5mbGFncy5zZWN1 cmUJCQk/IE5VTEwgOiBwOworI2VuZGlmCisgICAgY2FzZSBDTVNFX01QVV9S RUFEIHwgQ01TRV9NUFVfUkVBRFdSSVRFOgorICAgIGNhc2UJCSBDTVNFX01Q VV9SRUFEV1JJVEU6CisgICAgICByZXR1cm4gcGVybWIuZmxhZ3MucmVhZHdy aXRlX29rCQk/IHAgOiBOVUxMOworICAgIGNhc2UgQ01TRV9NUFVfUkVBRDoK KyAgICAgIHJldHVybiBwZXJtYi5mbGFncy5yZWFkX29rCQk/IHAgOiBOVUxM OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9 CisKKworI2VuZGlmIC8qIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEuICAqLwpk aWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9hcm0vdC1hcm0gYi9saWJnY2Mv Y29uZmlnL2FybS90LWFybQppbmRleCA0ZTE3ZTk5YjRhNTNiYmFmYzBmMWY4 ZGRkZDAyMDAwZjBlOGY0ZjQ4Li41NjE4MTQzYmZkMGYwMmIxNzBkYjNmOWU0 YzBhMTVjZWNiNDAzY2VjIDEwMDY0NAotLS0gYS9saWJnY2MvY29uZmlnL2Fy bS90LWFybQorKysgYi9saWJnY2MvY29uZmlnL2FybS90LWFybQpAQCAtMSwz ICsxLDE1IEBACiBMSUIxQVNNU1JDID0gYXJtL2xpYjFmdW5jcy5TCiBMSUIx QVNNRlVOQ1MgPSBfdGh1bWIxX2Nhc2Vfc3FpIF90aHVtYjFfY2FzZV91cWkg X3RodW1iMV9jYXNlX3NoaSBcCiAJX3RodW1iMV9jYXNlX3VoaSBfdGh1bWIx X2Nhc2Vfc2kKKworSEFWRV9DTVNFOj0kKGZpbmRzdHJpbmcgX19BUk1fRkVB VFVSRV9DTVNFLCQoc2hlbGwgJChnY2NfY29tcGlsZV9iYXJlKSAtZE0gLUUg LSA8L2Rldi9udWxsKSkKK2lmbmVxICgkKHNoZWxsICQoZ2NjX2NvbXBpbGVf YmFyZSkgLUUgLW1jbXNlIC0gPC9kZXYvbnVsbCAyPi9kZXYvbnVsbCksKQor Q01TRV9PUFRTOj0tbWNtc2UKK2VuZGlmCisKK2lmZGVmIEhBVkVfQ01TRQor bGliZ2NjLW9iamVjdHMgKz0gY21zZS5vIGNtc2Vfbm9uc2VjdXJlX2NhbGwu bworCitjbXNlLm86ICQoc3JjZGlyKS9jb25maWcvYXJtL2Ntc2UuYworCSQo Z2NjX2NvbXBpbGUpIC1jICQoQ01TRV9PUFRTKSAkPAorZW5kaWYK --------------070006050101020606000205--