From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2036 invoked by alias); 24 Apr 2014 13:25:36 -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 2024 invoked by uid 89); 24 Apr 2014 13:25:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.8 required=5.0 tests=AWL,BAYES_99,BAYES_999,KAM_STOCKTIP,RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mail3-relais-sop.national.inria.fr Received: from mail3-relais-sop.national.inria.fr (HELO mail3-relais-sop.national.inria.fr) (192.134.164.104) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (CAMELLIA256-SHA encrypted) ESMTPS; Thu, 24 Apr 2014 13:25:33 +0000 Received: from stedding.saclay.inria.fr ([193.55.250.194]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/AES128-SHA; 24 Apr 2014 15:25:13 +0200 Received: from glisse (helo=localhost) by stedding.saclay.inria.fr with local-esmtp (Exim 4.82) (envelope-from ) id 1WdJeL-0005zd-6j; Thu, 24 Apr 2014 15:25:13 +0200 Date: Thu, 24 Apr 2014 13:25:00 -0000 From: Marc Glisse To: ramrad01@arm.com cc: Richard Henderson , gcc-patches , Jason Merrill Subject: Re: [c++] typeinfo for target types In-Reply-To: Message-ID: References: <53580A7D.5070800@redhat.com> User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-790126091-1398345913=:23719" X-SW-Source: 2014-04/txt/msg01549.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-790126091-1398345913=:23719 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Content-length: 5413 On Thu, 24 Apr 2014, Ramana Radhakrishnan wrote: > On Wed, Apr 23, 2014 at 8:43 PM, Marc Glisse wrote: >> On Wed, 23 Apr 2014, Richard Henderson wrote: >> >>> On 04/13/2014 01:41 AM, Marc Glisse wrote: >>>> >>>> Hello, >>>> >>>> this patch generates typeinfo for target types. On x86_64, it adds these >>>> 6 >>>> lines to nm -C libsupc++.a. A follow-up patch will be needed to export >>>> and >>>> version those in the shared library. >>>> >>>> +0000000000000000 V typeinfo for __float128 >>>> +0000000000000000 V typeinfo for __float128 const* >>>> +0000000000000000 V typeinfo for __float128* >>>> +0000000000000000 V typeinfo name for __float128 >>>> +0000000000000000 V typeinfo name for __float128 const* >>>> +0000000000000000 V typeinfo name for __float128* >>>> >>>> Bootstrap and testsuite on x86_64-linux-gnu (a bit of noise in >>>> tsan/tls_race.c). >>>> >>>> 2014-04-13 Marc Glisse >>>> >>>> PR libstdc++/43622 >>>> gcc/c-family/ >>>> * c-common.c (registered_builtin_types): Make non-static. >>>> * c-common.h (registered_builtin_types): Declare. >>>> gcc/cp/ >>>> * rtti.c (emit_support_tinfo_1): New function, extracted from >>>> emit_support_tinfos. >>>> (emit_support_tinfos): Call it and iterate on >>>> registered_builtin_types. >>>> >>> >>> This is causing aarch64 builds to break. >> >> >> If it is causing too much trouble, we could ifdef out the last 2 lines of >> emit_support_tinfos and revert the libstdc++ changes (or even revert the >> whole thing). >> >> >>> Any c++ compilation aborts at >> >> >> That's surprising, the code I touched is only ever supposed to run while >> compiling one file in libsupc++, if I understand correctly. >> >> >>> #0 fancy_abort (file=0x14195c8 "../../git-rh/gcc/cp/mangle.c", line=2303, >>> function=0x1419ff8 >>> "write_builtin_type") at ../../git-rh/gcc/diagnostic.c:1190 >>> #1 0x00000000007ce2b4 in write_builtin_type ( >>> type=) >>> at ../../git-rh/gcc/cp/mangle.c:2303 >>> #2 0x00000000007cc85c in write_type ( >>> type=) >>> at ../../git-rh/gcc/cp/mangle.c:1969 >>> #3 0x00000000007d4d98 in mangle_special_for_type ( >>> type=, >>> code=0x1419a98 "TI") at ../../git-rh/gcc/cp/mangle.c:3569 >>> #4 0x00000000007d4dcc in mangle_typeinfo_for_type ( >>> type=) >>> at ../../git-rh/gcc/cp/mangle.c:3585 >>> #5 0x000000000070618c in get_tinfo_decl ( >>> type=) >>> at ../../git-rh/gcc/cp/rtti.c:422 >>> #6 0x0000000000709ff0 in emit_support_tinfo_1 ( >>> bltn=) >>> at ../../git-rh/gcc/cp/rtti.c:1485 >>> #7 0x000000000070a344 in emit_support_tinfos () >>> at ../../git-rh/gcc/cp/rtti.c:1550 >>> >>> Presumably the backend needs to grow some mangling support for its >>> builtins, >> >> >> aarch64 has complicated builtins... __builtin_aarch64_simd_df uses >> double_aarch64_type_node which is not the same as double_type_node. I mostly >> looked at the x86 backend, so I didn't notice that aarch64 registers a lot >> more builtins. >> >> >>> but in the meantime can we do something less drastic than abort? >> >> >> Sounds good, but I am not sure how exactly. We could use a separate hook >> (register_builtin_type_for_typeinfo?) so back-ends have to explicitly say >> they want typeinfo, but it is ugly having to register types multiple times. >> We could add a parameter to the existing register_builtin_type saying >> whether we want typeinfo, but that means updating all back-ends. We could also make typeinfo_in_lib_p more strict so for REAL_TYPE it only returns true for the types listed in fundamentals. > Well some of these scalar types are not really user visible which is > where I believe the problem is coming from and prima-facie I don't > think we should be inventing mangling for some of these "internal" > types. If the types are not user-visible, it is not clear to me why they need to be registered with the front-end... >> We could >> get the mangling functions to take a parameter that says whether errors >> should be fatal and skip generating the typeinfo when we can't mangle, but >> there is no convenient way to communicate this mangling failure (0 bytes >> written?). >> >> Would mangling the aarch64 builtins be a lot of work? Did other platforms >> break as well? > > It's not a lot of work but I'd like to make sure we're doing the right > thing on both AArch32 and AArch64. So, for now can we just revert this > till the thing is sorted out. Ok, I'll commit the attached as soon as I've checked it isn't too broken. It is not a complete revert: splitting the rtti function is still cleaner, and the int128 symbols are still there. 2014-04-24 Marc Glisse PR libstdc++/43622 gcc/cp/ * rtti.c (emit_support_tinfos): Do not iterate on registered_builtin_types (partial revert). libstdc++/ * config/abi/pre/gnu.ver (CXXABI_1.3.9): Remove __float128 symbols. * config/abi/pre/gnu-versioned-namespace.ver: Likewise. * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. -- Marc Glisse --8323329-790126091-1398345913=:23719 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=p22 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: inline; filename=p22 Content-length: 10696 SW5kZXg6IGdjYy9jcC9ydHRpLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBnY2MvY3AvcnR0aS5jCShyZXZpc2lvbiAyMDk3NDcpDQorKysgZ2Nj L2NwL3J0dGkuYwkod29ya2luZyBjb3B5KQ0KQEAgLTE1MzksMjIgKzE1Mzks MjAgQEAgZW1pdF9zdXBwb3J0X3RpbmZvcyAodm9pZCkNCiAJCQkvKnRhZ19z Y29wZT0qL3RzX2N1cnJlbnQsIGZhbHNlKTsNCiAgIHBvcF9hYmlfbmFtZXNw YWNlICgpOw0KICAgaWYgKCFDT01QTEVURV9UWVBFX1AgKGJsdG5fdHlwZSkp DQogICAgIHJldHVybjsNCiAgIGR0b3IgPSBDTEFTU1RZUEVfREVTVFJVQ1RP UlMgKGJsdG5fdHlwZSk7DQogICBpZiAoIWR0b3IgfHwgREVDTF9FWFRFUk5B TCAoZHRvcikpDQogICAgIHJldHVybjsNCiAgIGRvaW5nX3J1bnRpbWUgPSAx Ow0KICAgZm9yIChpeCA9IDA7IGZ1bmRhbWVudGFsc1tpeF07IGl4KyspDQog ICAgIGVtaXRfc3VwcG9ydF90aW5mb18xICgqZnVuZGFtZW50YWxzW2l4XSk7 DQotICBmb3IgKHRyZWUgdCA9IHJlZ2lzdGVyZWRfYnVpbHRpbl90eXBlczsg dDsgdCA9IFRSRUVfQ0hBSU4gKHQpKQ0KLSAgICBlbWl0X3N1cHBvcnRfdGlu Zm9fMSAoVFJFRV9WQUxVRSAodCkpOw0KIH0NCiANCiAvKiBGaW5pc2ggYSB0 eXBlIGluZm8gZGVjbC4gREVDTF9QVFIgaXMgYSBwb2ludGVyIHRvIGFuIHVu ZW1pdHRlZA0KICAgIHRpbmZvIGRlY2wuICBEZXRlcm1pbmUgd2hldGhlciBp dCBuZWVkcyBlbWl0dGluZywgYW5kIGlmIHNvDQogICAgZ2VuZXJhdGUgdGhl IGluaXRpYWxpemVyLiAgKi8NCiANCiBib29sDQogZW1pdF90aW5mb19kZWNs ICh0cmVlIGRlY2wpDQogew0KICAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChE RUNMX05BTUUgKGRlY2wpKTsNCkluZGV4OiBsaWJzdGRjKystdjMvY29uZmln L2FiaS9wb3N0L3g4Nl82NC1saW51eC1nbnUvYmFzZWxpbmVfc3ltYm9scy50 eHQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaWJzdGRjKystdjMv Y29uZmlnL2FiaS9wb3N0L3g4Nl82NC1saW51eC1nbnUvYmFzZWxpbmVfc3lt Ym9scy50eHQJKHJldmlzaW9uIDIwOTc0NykNCisrKyBsaWJzdGRjKystdjMv Y29uZmlnL2FiaS9wb3N0L3g4Nl82NC1saW51eC1nbnUvYmFzZWxpbmVfc3lt Ym9scy50eHQJKHdvcmtpbmcgY29weSkNCkBAIC0yNjE4LDIxICsyNjE4LDIw IEBAIE9CSkVDVDoxNjpfWlRJU3QxNm5lc3RlZF9leGNlcHRpb25AQENYWEEN CiBPQkpFQ1Q6MTY6X1pUSVN0OGlvc19iYXNlQEBHTElCQ1hYXzMuNA0KIE9C SkVDVDoxNjpfWlRJU3Q5ZXhjZXB0aW9uQEBHTElCQ1hYXzMuNA0KIE9CSkVD VDoxNjpfWlRJU3Q5dGltZV9iYXNlQEBHTElCQ1hYXzMuNA0KIE9CSkVDVDox NjpfWlRJU3Q5dHlwZV9pbmZvQEBHTElCQ1hYXzMuNA0KIE9CSkVDVDoxNjpf WlRJYUBAQ1hYQUJJXzEuMw0KIE9CSkVDVDoxNjpfWlRJYkBAQ1hYQUJJXzEu Mw0KIE9CSkVDVDoxNjpfWlRJY0BAQ1hYQUJJXzEuMw0KIE9CSkVDVDoxNjpf WlRJZEBAQ1hYQUJJXzEuMw0KIE9CSkVDVDoxNjpfWlRJZUBAQ1hYQUJJXzEu Mw0KIE9CSkVDVDoxNjpfWlRJZkBAQ1hYQUJJXzEuMw0KLU9CSkVDVDoxNjpf WlRJZ0BAQ1hYQUJJXzEuMy45DQogT0JKRUNUOjE2Ol9aVEloQEBDWFhBQklf MS4zDQogT0JKRUNUOjE2Ol9aVElpQEBDWFhBQklfMS4zDQogT0JKRUNUOjE2 Ol9aVElqQEBDWFhBQklfMS4zDQogT0JKRUNUOjE2Ol9aVElsQEBDWFhBQklf MS4zDQogT0JKRUNUOjE2Ol9aVEltQEBDWFhBQklfMS4zDQogT0JKRUNUOjE2 Ol9aVEluQEBDWFhBQklfMS4zLjUNCiBPQkpFQ1Q6MTY6X1pUSW9AQENYWEFC SV8xLjMuNQ0KIE9CSkVDVDoxNjpfWlRJc0BAQ1hYQUJJXzEuMw0KIE9CSkVD VDoxNjpfWlRJdEBAQ1hYQUJJXzEuMw0KIE9CSkVDVDoxNjpfWlRJdkBAQ1hY QUJJXzEuMw0KQEAgLTMxMTksMjEgKzMxMTgsMjAgQEAgT0JKRUNUOjI6X1pO U3QxMGN0eXBlX2Jhc2U1cHJpbnRFQEBHTElCQw0KIE9CSkVDVDoyOl9aTlN0 MTBjdHlwZV9iYXNlNXB1bmN0RUBAR0xJQkNYWF8zLjQNCiBPQkpFQ1Q6Mjpf Wk5TdDEwY3R5cGVfYmFzZTVzcGFjZUVAQEdMSUJDWFhfMy40DQogT0JKRUNU OjI6X1pOU3QxMGN0eXBlX2Jhc2U1dXBwZXJFQEBHTElCQ1hYXzMuNA0KIE9C SkVDVDoyOl9aTlN0MTBjdHlwZV9iYXNlNnhkaWdpdEVAQEdMSUJDWFhfMy40 DQogT0JKRUNUOjI6X1pUU2FAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MjpfWlRT YkBAQ1hYQUJJXzEuMw0KIE9CSkVDVDoyOl9aVFNjQEBDWFhBQklfMS4zDQog T0JKRUNUOjI6X1pUU2RAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MjpfWlRTZUBA Q1hYQUJJXzEuMw0KIE9CSkVDVDoyOl9aVFNmQEBDWFhBQklfMS4zDQotT0JK RUNUOjI6X1pUU2dAQENYWEFCSV8xLjMuOQ0KIE9CSkVDVDoyOl9aVFNoQEBD WFhBQklfMS4zDQogT0JKRUNUOjI6X1pUU2lAQENYWEFCSV8xLjMNCiBPQkpF Q1Q6MjpfWlRTakBAQ1hYQUJJXzEuMw0KIE9CSkVDVDoyOl9aVFNsQEBDWFhB QklfMS4zDQogT0JKRUNUOjI6X1pUU21AQENYWEFCSV8xLjMNCiBPQkpFQ1Q6 MjpfWlRTbkBAQ1hYQUJJXzEuMy45DQogT0JKRUNUOjI6X1pUU29AQENYWEFC SV8xLjMuOQ0KIE9CSkVDVDoyOl9aVFNzQEBDWFhBQklfMS4zDQogT0JKRUNU OjI6X1pUU3RAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MjpfWlRTdkBAQ1hYQUJJ XzEuMw0KQEAgLTMxNTMsNDEgKzMxNTEsMzkgQEAgT0JKRUNUOjMyOl9aVElQ S0RlQEBDWFhBQklfMS4zLjQNCiBPQkpFQ1Q6MzI6X1pUSVBLRGZAQENYWEFC SV8xLjMuNA0KIE9CSkVDVDozMjpfWlRJUEtEaUBAQ1hYQUJJXzEuMy4zDQog T0JKRUNUOjMyOl9aVElQS0RuQEBDWFhBQklfMS4zLjUNCiBPQkpFQ1Q6MzI6 X1pUSVBLRHNAQENYWEFCSV8xLjMuMw0KIE9CSkVDVDozMjpfWlRJUEthQEBD WFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQS2JAQENYWEFCSV8xLjMNCiBP QkpFQ1Q6MzI6X1pUSVBLY0BAQ1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJ UEtkQEBDWFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQS2VAQENYWEFCSV8x LjMNCiBPQkpFQ1Q6MzI6X1pUSVBLZkBAQ1hYQUJJXzEuMw0KLU9CSkVDVDoz MjpfWlRJUEtnQEBDWFhBQklfMS4zLjkNCiBPQkpFQ1Q6MzI6X1pUSVBLaEBA Q1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUEtpQEBDWFhBQklfMS4zDQog T0JKRUNUOjMyOl9aVElQS2pAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzI6X1pU SVBLbEBAQ1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUEttQEBDWFhBQklf MS4zDQogT0JKRUNUOjMyOl9aVElQS25AQENYWEFCSV8xLjMuNQ0KIE9CSkVD VDozMjpfWlRJUEtvQEBDWFhBQklfMS4zLjUNCiBPQkpFQ1Q6MzI6X1pUSVBL c0BAQ1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUEt0QEBDWFhBQklfMS4z DQogT0JKRUNUOjMyOl9aVElQS3ZAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzI6 X1pUSVBLd0BAQ1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUEt4QEBDWFhB QklfMS4zDQogT0JKRUNUOjMyOl9aVElQS3lAQENYWEFCSV8xLjMNCiBPQkpF Q1Q6MzI6X1pUSVBhQEBDWFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQYkBA Q1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUGNAQENYWEFCSV8xLjMNCiBP QkpFQ1Q6MzI6X1pUSVBkQEBDWFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQ ZUBAQ1hYQUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUGZAQENYWEFCSV8xLjMN Ci1PQkpFQ1Q6MzI6X1pUSVBnQEBDWFhBQklfMS4zLjkNCiBPQkpFQ1Q6MzI6 X1pUSVBoQEBDWFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQaUBAQ1hYQUJJ XzEuMw0KIE9CSkVDVDozMjpfWlRJUGpAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6 MzI6X1pUSVBsQEBDWFhBQklfMS4zDQogT0JKRUNUOjMyOl9aVElQbUBAQ1hY QUJJXzEuMw0KIE9CSkVDVDozMjpfWlRJUG5AQENYWEFCSV8xLjMuNQ0KIE9C SkVDVDozMjpfWlRJUG9AQENYWEFCSV8xLjMuNQ0KIE9CSkVDVDozMjpfWlRJ UHNAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzI6X1pUSVB0QEBDWFhBQklfMS4z DQogT0JKRUNUOjMyOl9aVElQdkBAQ1hYQUJJXzEuMw0KQEAgLTMyMjgsMjEg KzMyMjQsMjAgQEAgT0JKRUNUOjM5Ol9aVFNTdDEzYmFzaWNfZmlsZWJ1Zkl3 U3QxMWNoYQ0KIE9CSkVDVDozOTpfWlRTU3QxM2Jhc2ljX2ZzdHJlYW1JY1N0 MTFjaGFyX3RyYWl0c0ljRUVAQEdMSUJDWFhfMy40DQogT0JKRUNUOjM5Ol9a VFNTdDEzYmFzaWNfZnN0cmVhbUl3U3QxMWNoYXJfdHJhaXRzSXdFRUBAR0xJ QkNYWF8zLjQNCiBPQkpFQ1Q6Mzk6X1pUU1N0MTNiYXNpY19pc3RyZWFtSXdT dDExY2hhcl90cmFpdHNJd0VFQEBHTElCQ1hYXzMuNA0KIE9CSkVDVDozOTpf WlRTU3QxM2Jhc2ljX29zdHJlYW1Jd1N0MTFjaGFyX3RyYWl0c0l3RUVAQEdM SUJDWFhfMy40DQogT0JKRUNUOjM6X1pUU1BhQEBDWFhBQklfMS4zDQogT0JK RUNUOjM6X1pUU1BiQEBDWFhBQklfMS4zDQogT0JKRUNUOjM6X1pUU1BjQEBD WFhBQklfMS4zDQogT0JKRUNUOjM6X1pUU1BkQEBDWFhBQklfMS4zDQogT0JK RUNUOjM6X1pUU1BlQEBDWFhBQklfMS4zDQogT0JKRUNUOjM6X1pUU1BmQEBD WFhBQklfMS4zDQotT0JKRUNUOjM6X1pUU1BnQEBDWFhBQklfMS4zLjkNCiBP QkpFQ1Q6MzpfWlRTUGhAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzpfWlRTUGlA QENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzpfWlRTUGpAQENYWEFCSV8xLjMNCiBP QkpFQ1Q6MzpfWlRTUGxAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzpfWlRTUG1A QENYWEFCSV8xLjMNCiBPQkpFQ1Q6MzpfWlRTUG5AQENYWEFCSV8xLjMuOQ0K IE9CSkVDVDozOl9aVFNQb0BAQ1hYQUJJXzEuMy45DQogT0JKRUNUOjM6X1pU U1BzQEBDWFhBQklfMS4zDQogT0JKRUNUOjM6X1pUU1B0QEBDWFhBQklfMS4z DQogT0JKRUNUOjM6X1pUU1B2QEBDWFhBQklfMS4zDQpAQCAtMzU1OCwyMSAr MzU1MywyMCBAQCBPQkpFQ1Q6NDpfWk5TdDhpb3NfYmFzZThzaG93YmFzZUVA QEdMSUJDDQogT0JKRUNUOjQ6X1pOU3Q4aW9zX2Jhc2U5YmFzZWZpZWxkRUBA R0xJQkNYWF8zLjQNCiBPQkpFQ1Q6NDpfWk5TdDhpb3NfYmFzZTlib29sYWxw aGFFQEBHTElCQ1hYXzMuNA0KIE9CSkVDVDo0Ol9aTlN0OGlvc19iYXNlOXNo b3dwb2ludEVAQEdMSUJDWFhfMy40DQogT0JKRUNUOjQ6X1pOU3Q4aW9zX2Jh c2U5dXBwZXJjYXNlRUBAR0xJQkNYWF8zLjQNCiBPQkpFQ1Q6NDpfWlRTUEth QEBDWFhBQklfMS4zDQogT0JKRUNUOjQ6X1pUU1BLYkBAQ1hYQUJJXzEuMw0K IE9CSkVDVDo0Ol9aVFNQS2NAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6NDpfWlRT UEtkQEBDWFhBQklfMS4zDQogT0JKRUNUOjQ6X1pUU1BLZUBAQ1hYQUJJXzEu Mw0KIE9CSkVDVDo0Ol9aVFNQS2ZAQENYWEFCSV8xLjMNCi1PQkpFQ1Q6NDpf WlRTUEtnQEBDWFhBQklfMS4zLjkNCiBPQkpFQ1Q6NDpfWlRTUEtoQEBDWFhB QklfMS4zDQogT0JKRUNUOjQ6X1pUU1BLaUBAQ1hYQUJJXzEuMw0KIE9CSkVD VDo0Ol9aVFNQS2pAQENYWEFCSV8xLjMNCiBPQkpFQ1Q6NDpfWlRTUEtsQEBD WFhBQklfMS4zDQogT0JKRUNUOjQ6X1pUU1BLbUBAQ1hYQUJJXzEuMw0KIE9C SkVDVDo0Ol9aVFNQS25AQENYWEFCSV8xLjMuOQ0KIE9CSkVDVDo0Ol9aVFNQ S29AQENYWEFCSV8xLjMuOQ0KIE9CSkVDVDo0Ol9aVFNQS3NAQENYWEFCSV8x LjMNCiBPQkpFQ1Q6NDpfWlRTUEt0QEBDWFhBQklfMS4zDQogT0JKRUNUOjQ6 X1pUU1BLdkBAQ1hYQUJJXzEuMw0KSW5kZXg6IGxpYnN0ZGMrKy12My9jb25m aWcvYWJpL3ByZS9nbnUtdmVyc2lvbmVkLW5hbWVzcGFjZS52ZXINCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSBsaWJzdGRjKystdjMvY29uZmlnL2Fi aS9wcmUvZ251LXZlcnNpb25lZC1uYW1lc3BhY2UudmVyCShyZXZpc2lvbiAy MDk3NDcpDQorKysgbGlic3RkYysrLXYzL2NvbmZpZy9hYmkvcHJlL2dudS12 ZXJzaW9uZWQtbmFtZXNwYWNlLnZlcgkod29ya2luZyBjb3B5KQ0KQEAgLTMx NCwyNCArMzE0LDI0IEBAIENYWEFCSV8yLjAgew0KICAgICAjIHR5cGVpbmZv IGZvciBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IHR5cGVzDQogICAgIF9aVElE W2ZkZV07DQogICAgIF9aVElQRFtmZGVdOw0KICAgICBfWlRJUEtEW2ZkZV07 DQogDQogICAgICMgdHlwZWluZm8gZm9yIGRlY2x0eXBlKG51bGxwdHIpDQog ICAgIF9aVElEbjsNCiAgICAgX1pUSVBEbjsNCiAgICAgX1pUSVBLRG47DQog DQotICAgICMgdHlwZWluZm8gZm9yIF9faW50MTI4LCB1bnNpZ25lZCBfX2lu dDEyOCBhbmQgX19mbG9hdDEyOA0KLSAgICBfWlRJW2dub107DQotICAgIF9a VElQW2dub107DQotICAgIF9aVElQS1tnbm9dOw0KKyAgICAjIHR5cGVpbmZv IGZvciBfX2ludDEyOCBhbmQgdW5zaWduZWQgX19pbnQxMjgNCisgICAgX1pU SVtub107DQorICAgIF9aVElQW25vXTsNCisgICAgX1pUSVBLW25vXTsNCiAN CiAgICAgIyB2aXJ0dWFsIHRhYmxlDQogICAgIF9aVFZOMTBfX2N4eGFiaXYx MTdfX2FycmF5X3R5cGVfaW5mb0U7DQogICAgIF9aVFZOMTBfX2N4eGFiaXYx MTdfX2NsYXNzX3R5cGVfaW5mb0U7DQogICAgIF9aVFZOMTBfX2N4eGFiaXYx MTZfX2VudW1fdHlwZV9pbmZvRTsNCiAgICAgX1pUVk4xMF9fY3h4YWJpdjEy MF9fZnVuY3Rpb25fdHlwZV9pbmZvRTsNCiAgICAgX1pUVk4xMF9fY3h4YWJp djEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRTsNCiAgICAgX1pUVk4xMF9f Y3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRTsNCiAgICAgX1pUVk4xMF9f Y3h4YWJpdjEyOV9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvRTsNCiAg ICAgX1pUVk4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FOw0K SW5kZXg6IGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3ByZS9nbnUudmVyDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGlic3RkYysrLXYzL2NvbmZp Zy9hYmkvcHJlL2dudS52ZXIJKHJldmlzaW9uIDIwOTc0NykNCisrKyBsaWJz dGRjKystdjMvY29uZmlnL2FiaS9wcmUvZ251LnZlcgkod29ya2luZyBjb3B5 KQ0KQEAgLTE1NzksMjkgKzE1NzksMjQgQEAgQ1hYQUJJXzEuMy44IHsNCiAg ICAgX1oxNl9fVkxUUmVnaXN0ZXJTZXQqOw0KICAgICBfWjIxX19WTFRSZWdp c3RlclNldERlYnVnKjsNCiAgICAgX1oyNF9fVkxUVmVyaWZ5VnRhYmxlUG9p bnRlcio7DQogICAgIF9aMjlfX1ZMVFZlcmlmeVZ0YWJsZVBvaW50ZXJEZWJ1 Zyo7DQogICAgIF9fVkxUQ2hhbmdlUGVybWlzc2lvbjsNCiANCiB9IENYWEFC SV8xLjMuNzsNCiANCiBDWFhBQklfMS4zLjkgew0KIA0KLSAgICAjIHR5cGVp bmZvIG5hbWUgZm9yIF9faW50MTI4LCB1bnNpZ25lZCBfX2ludDEyOCBhbmQg X19mbG9hdDEyOA0KLSAgICBfWlRTW2dub107DQotICAgIF9aVFNQW2dub107 DQotICAgIF9aVFNQS1tnbm9dOw0KLQ0KLSAgICAjIHR5cGVpbmZvIGZvciBf X2Zsb2F0MTI4DQotICAgIF9aVElnOw0KLSAgICBfWlRJUGc7DQotICAgIF9a VElQS2c7DQorICAgICMgdHlwZWluZm8gbmFtZSBmb3IgX19pbnQxMjggYW5k IHVuc2lnbmVkIF9faW50MTI4DQorICAgIF9aVFNbbm9dOw0KKyAgICBfWlRT UFtub107DQorICAgIF9aVFNQS1tub107DQogDQogfSBDWFhBQklfMS4zLjg7 DQogDQogIyBTeW1ib2xzIGluIHRoZSBzdXBwb3J0IGxpYnJhcnkgKGxpYnN1 cGMrKykgc3VwcG9ydGluZyB0cmFuc2FjdGlvbmFsIG1lbW9yeS4NCiBDWFhB QklfVE1fMSB7DQogDQogICBnbG9iYWw6DQogICAgIF9fY3hhX3RtX2NsZWFu dXA7DQogDQogfTsNCg== --8323329-790126091-1398345913=:23719--