From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 807353858D32; Sun, 13 Aug 2023 19:51:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 807353858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-3fe45481edfso37647125e9.1; Sun, 13 Aug 2023 12:51:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691956269; x=1692561069; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=rEEqHbeOLUpxXzrJ+GDVn/FJwpulLDAlKcWiOIr5pVI=; b=cUUGy+GIJOoMsbG4vrtTaTDJ61HN376g8vwiZ7SvsklWK+13g7oY+qcrZBt386Tibo SSVd6c4gLDXi89HoIjYUp6IO/RHbWGFvxb5L/y4sCyIaiH7KK966UKWd2CQLb7moLZqR /H7LdZLDBoIDGx+pc959jXoYb+8Imvzb/xqqnBIHPhFP//R+3KFNyQY/kp3opv+v9dsR f/jXWNaTHtq2sZ3jKFcSJLhlP1Y37ixeckbHZGLpbByfi85TW8pMd+mUaRtmHHZT1Dks iNC8mCPDXEmyviMnHcUKDjSt4fdderkxqz9vI3KTMScyBfhhzgJjnuGCK8P6I0LXzHCZ BiWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691956269; x=1692561069; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rEEqHbeOLUpxXzrJ+GDVn/FJwpulLDAlKcWiOIr5pVI=; b=LIzMk+FxrruZ1q2kGs02d2arNjG4AFT6vsU0HL0zNKI/iHCN433BBMBYhVSqgDEjxz iwHVf3qLAS59CCufhM26OYTiO5V8KGZ5DrJv6O0CE/3exfEVQnowaDC/sUJjKzgXUf1w i4lP/1UfJvupnOLvATaopUlGcR4yKQY18Zpne+vkQ5GITPgxQvYq8uEmQa5HVaJ2VDRN 2ncCcbQCEt0YafyDuPr8UcB5e6DbFAnvEtRqmmsRGD5rqxAbFHHpquUEipN7Zpi7YrPC xrjCz6pug21MdAp+7+9J3wou+1I8dWn8IhWSg9ReXHvISessFA540bGXeVcFrBgNyHlN fXEA== X-Gm-Message-State: AOJu0Ywg2yDukIZTE/kbF8Pd3VgwqFeqDIcjScryVIfu3SW8IEDSvSrD UZsLbXoN2WgMGSBTsCGin7s= X-Google-Smtp-Source: AGHT+IHg/2NGgihUNY6S4k6tqvQxbnzSBrufPVxXivv1vokBWIXOLxEAJv9kbsNczLYm3W/kKivp2w== X-Received: by 2002:a7b:ca52:0:b0:3fe:2e0d:b715 with SMTP id m18-20020a7bca52000000b003fe2e0db715mr6041885wml.18.1691956268298; Sun, 13 Aug 2023 12:51:08 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:f2e8:1d68:1a02:3fe8? ([2a01:e0a:1dc:b1c0:f2e8:1d68:1a02:3fe8]) by smtp.gmail.com with ESMTPSA id q10-20020adfcd8a000000b0031753073abcsm12167541wrj.36.2023.08.13.12.51.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 13 Aug 2023 12:51:07 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------oFnB7rz4D2EcFxy52VzQ096e" Message-ID: <5191c46c-2a2b-750f-b3cc-e4445dc16f8a@gmail.com> Date: Sun, 13 Aug 2023 21:51:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] sso-string@gnu-versioned-namespace [PR83077] Content-Language: en-US From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: Jonathan Wakely Cc: libstdc++ , gcc-patches References: <1dc681f4-41b7-d171-02ac-b0194617bdee@gmail.com> <91dc6383-6bff-ce6c-b24d-81cd2ab2dce8@gmail.com> In-Reply-To: <91dc6383-6bff-ce6c-b24d-81cd2ab2dce8@gmail.com> X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------oFnB7rz4D2EcFxy52VzQ096e Content-Type: multipart/alternative; boundary="------------rEr9ft2PgJHB4NjLV0lkCwu8" --------------rEr9ft2PgJHB4NjLV0lkCwu8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Here is another version with enhanced sizeof/alignof static_assert in string-inst.cc for the std::__cow_string definition from . The assertions in cow-stdexcept.cc are now checking the definition which is in the same file. On 13/08/2023 15:27, François Dumont wrote: > > Here is the fixed patch tested in all 3 modes: > > - _GLIBCXX_USE_DUAL_ABI > > - !_GLIBCXX_USE_DUAL_ABI && !_GLIBCXX_USE_CXX11_ABI > > - !_GLIBCXX_USE_DUAL_ABI && _GLIBCXX_USE_CXX11_ABI > > I don't know what you have in mind for the change below but I wanted > to let you know that I tried to put COW std::basic_string into a > nested __cow namespace when _GLIBCXX_USE_CXX11_ABI. But it had more > impact on string-inst.cc so I preferred the macro substitution approach. > > There are some test failing when !_GLIBCXX_USE_CXX11_ABI that are > unrelated with my changes. I'll propose fixes in coming days. > >     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] > >     Use cxx11 abi when activating versioned namespace mode. To do support >     a new configuration mode where !_GLIBCXX_USE_DUAL_ABI and > _GLIBCXX_USE_CXX11_ABI. > >     The main change is that std::__cow_string is now defined whenever > _GLIBCXX_USE_DUAL_ABI >     or _GLIBCXX_USE_CXX11_ABI is true. Implementation is using > available std::string in >     case of dual abi and a subset of it when it's not. > >     On the other side std::__sso_string is defined only when > _GLIBCXX_USE_DUAL_ABI is true >     and _GLIBCXX_USE_CXX11_ABI is false. Meaning that > std::__sso_string is a typedef for the >     cow std::string implementation when dual abi is disabled and cow > string is being used. > >     libstdcxx-v3/ChangeLog: > >             PR libstdc++/83077 >             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: > Default to "new" libstdcxx abi. >             * config/locale/dragonfly/monetary_members.cc > [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >             members. >             * config/locale/generic/monetary_members.cc > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >             * config/locale/gnu/monetary_members.cc > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >             * config/locale/gnu/numeric_members.cc >             [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >             * configure: Regenerate. >             * include/bits/c++config >             [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, > _GLIBCXX_BEGIN_NAMESPACE_CXX11): >             Define empty. > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, > _GLIBCXX_DEFAULT_ABI_TAG): >             Likewise. >             * include/bits/cow_string.h [!_GLIBCXX_USE_CXX11_ABI]: > Define a light version of COW >             basic_string as __std_cow_string for use in stdexcept. >             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: Define > __cow_string. >             (__cow_string(const char*)): New. >             (__cow_string::c_str()): New. >             * python/libstdcxx/v6/printers.py > (StdStringPrinter::__init__): Set self.new_string to True >             when std::__8::basic_string type is found. >             * src/Makefile.am > [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): Define empty. >             * src/Makefile.in: Regenerate. >             * src/c++11/Makefile.am (cxx11_abi_sources): Rename into... >             (dual_abi_sources): ...this. Also move cow-local_init.cc, > cxx11-hash_tr1.cc, >             cxx11-ios_failure.cc entries to... >             (sources): ...this. >             (extra_string_inst_sources): Move cow-fstream-inst.cc, > cow-sstream-inst.cc, cow-string-inst.cc, >             cow-string-io-inst.cc, cow-wtring-inst.cc, > cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >             cxx11-wlocale-inst.cc entries to... >             (inst_sources): ...this. >             * src/c++11/Makefile.in: Regenerate. >             * src/c++11/cow-fstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cow-locale_init.cc [_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cow-sstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cow-stdexcept.cc [_GLIBCXX_USE_CXX11_ABI]: > Include . >             [_GLIBCXX_USE_DUAL_ABI || > _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before >             including . Define > _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that >             __cow_string definition in is skipped. >             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS > definitions. >             Move static_assert to check std::_cow_string abi layout to... >             * src/c++11/string-inst.cc: ...here. >             (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define > following _GLIBCXX_USE_CXX11_ABI >             value. >             [_GLIBCXX_USE_CXX11_ABI && > !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. > Include . >             Define basic_string as __std_cow_string for the current > translation unit. >             * src/c++11/cow-string-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cow-string-io-inst.cc > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >             * src/c++11/cow-wstring-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cow-wstring-io-inst.cc > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >             * src/c++11/cxx11-hash_tr1.cc [!_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cxx11-ios_failure.cc > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >             * src/c++11/cxx11-locale-inst.cc: Cleanup, just include > locale-inst.cc. >             * src/c++11/cxx11-stdexcept.cc [!_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++11/cxx11-wlocale-inst.cc > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >             * src/c++11/locale-inst-numeric.h > [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, > std::use_facet>): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, > std::has_facet>): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](std::num_get istreambuf_iterator>): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](std::num_put ostreambuf_iterator>): Instantiate. >             * src/c++11/locale-inst.cc [!_GLIBCXX_USE_DUAL_ABI]: Build > only when configured >             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >             [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): > Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): > Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](time_put ostreambuf_iterator>): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](time_put_byname ostreambuf_iterator>): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base): > Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname mbstate_t>): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](use_facet mbstate_t>>(const locale&)): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const locale&)): > Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): > Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](has_facet mbstate_t>>(const locale&)): Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const locale&)): > Instantiate. > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): > Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >             [!_GLIBCXX_USE_DUAL_ABI](__pad>): > Instantiate. >             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, > const C*, >             ios_base::fmtflags, bool)): Define. >             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long > long, const C*, >             ios_base::fmtflags, bool)): Define. >             * src/c++11/wlocale-inst.cc [!_GLIBCXX_USE_CXX11_ABI]: > Skip definitions. >             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, > unique cow-istream-string.cc entry >             move to... >             (inst_sources): ...this. >             * src/c++98/Makefile.in: Regenerate. >             * src/c++98/cow-istream-string.cc: Include . >             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: Skip > definitions. >             * src/c++98/ios_failure.cc > [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. >             * src/c++98/istream-string.cc [!_GLIBCXX_USE_DUAL_ABI]: > Build only when configured >             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >             * src/c++98/locale_facets.cc > [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >             * src/c++98/stdexcept.cc >             [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): > Remove. >             [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >             [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): > Remove. >             [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): > Remove. > > Ok to commit ? > > François > > On 11/08/2023 09:51, Jonathan Wakely wrote: >> >> >> On Fri, 11 Aug 2023, 06:44 François Dumont via Libstdc++, >> > wrote: >> >> I hadn't tested the most basic default configuration and it is >> failing, >> >> >> I did wonder about that when you said which configurations you had >> tested :) >> >> >> >> >> I need some more time yet. >> >> >> OK, no problem. >> >> I actually have an idea for replacing the __cow_string hack with >> something better, which I will try to work on next week. That might >> make things simpler for you, as you won't need the __std_cow_string >> macro. >> >> >> >> >> >> François >> >> >> On 10/08/2023 07:13, François Dumont wrote: >> > Hi >> > >> > I've eventually completed this work. >> > >> > This evolution will allow to build libstdc++ without dual abi and >> > using cxx11 abi. For the moment such a config is only accessible >> > through the --enable-symvers=gnu-versioned-namespace configuration. >> > >> >     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] >> > >> >     Use cxx11 abi when activating versioned namespace mode. >> > >> >     libstdcxx-v3/ChangeLog: >> > >> >             PR libstdc++/83077 >> >             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: >> > Default to "new" libstdcxx abi. >> >             * config/locale/dragonfly/monetary_members.cc >> > [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >> >             members. >> >             * config/locale/generic/monetary_members.cc >> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >> >             * config/locale/gnu/monetary_members.cc >> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >> >             * config/locale/gnu/numeric_members.cc >> > [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >> >             * configure: Regenerate. >> >             * include/bits/c++config >> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, >> > _GLIBCXX_BEGIN_NAMESPACE_CXX11): >> >             Define empty. >> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, >> > _GLIBCXX_DEFAULT_ABI_TAG): >> >             Likewise. >> >             * include/bits/cow_string.h [!_GLIBCXX_USE_CXX11_ABI]: >> > Define a light version of COW >> >             basic_string as __std_cow_string for use in stdexcept. >> >             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: >> Define >> > __cow_string. >> >             (__cow_string(const char*)): New. >> >             (__cow_string::c_str()): New. >> >             * python/libstdcxx/v6/printers.py >> > (StdStringPrinter::__init__): Set self.new_string to True >> >             when std::__8::basic_string type is found. >> >             * src/Makefile.am >> > [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): >> Define empty. >> >             * src/Makefile.in: Regenerate. >> >             * src/c++11/Makefile.am (cxx11_abi_sources): Rename >> into... >> >             (dual_abi_sources): ...this. Also move >> cow-local_init.cc, >> > cxx11-hash_tr1.cc, >> >             cxx11-ios_failure.cc entries to... >> >             (sources): ...this. >> >             (extra_string_inst_sources): Move cow-fstream-inst.cc, >> > cow-sstream-inst.cc, cow-string-inst.cc, >> >             cow-string-io-inst.cc, cow-wtring-inst.cc, >> > cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >> >             cxx11-wlocale-inst.cc entries to... >> >             (inst_sources): ...this. >> >             * src/c++11/Makefile.in: Regenerate. >> >             * src/c++11/cow-fstream-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cow-locale_init.cc >> [_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cow-sstream-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cow-stdexcept.cc [_GLIBCXX_USE_CXX11_ABI]: >> > Include . >> >             [_GLIBCXX_USE_DUAL_ABI || >> > _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before including >> >             . Define >> > _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that __cow_string >> definition >> >             in is skipped. >> >             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS >> > definitions. >> >             * src/c++11/cow-string-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cow-string-io-inst.cc >> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >> >             * src/c++11/cow-wstring-inst.cc >> [_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cow-wstring-io-inst.cc >> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >> >             * src/c++11/cxx11-hash_tr1.cc >> [!_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cxx11-ios_failure.cc >> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >> >             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >> >             * src/c++11/cxx11-locale-inst.cc: Cleanup, just >> include >> > locale-inst.cc. >> >             * src/c++11/cxx11-stdexcept.cc >> [!_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++11/cxx11-wlocale-inst.cc >> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >> >             * src/c++11/locale-inst-numeric.h >> > [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, >> > std::use_facet>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, >> > std::has_facet>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](std::num_get> > istreambuf_iterator>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](std::num_put> > ostreambuf_iterator>): Instantiate. >> >             * src/c++11/locale-inst.cc >> [!_GLIBCXX_USE_DUAL_ABI]: Build >> > only when configured >> >             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >> >             [!_GLIBCXX_USE_DUAL_ABI](time_put> > ostreambuf_iterator>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](time_put_byname> > ostreambuf_iterator>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base> > mbstate_t>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname> > mbstate_t>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname> > mbstate_t>): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](use_facet> > mbstate_t>>(const locale&)): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const >> locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](has_facet> > mbstate_t>>(const locale&)): Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const >> locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >> >             [!_GLIBCXX_USE_DUAL_ABI](__pad>): >> > Instantiate. >> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, >> > const C*, >> >             ios_base::fmtflags, bool)): Define. >> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long >> > long, const C*, >> >             ios_base::fmtflags, bool)): Define. >> >             * src/c++11/string-inst.cc >> > (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define following >> >             _GLIBCXX_USE_CXX11_ABI value. >> >             [_GLIBCXX_USE_CXX11_ABI && >> > !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >> >             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. >> > Include . >> >             Define basic_string as __std_cow_string for the >> current >> > translation unit. >> >             * src/c++11/wlocale-inst.cc [!_GLIBCXX_USE_CXX11_ABI]: >> > Skip definitions. >> >             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, >> > unique cow-istream-string.cc entry >> >             move to... >> >             (inst_sources): ...this. >> >             * src/c++98/Makefile.in: Regenerate. >> >             * src/c++98/cow-istream-string.cc: Include >> > . >> >             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >> >             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: Skip >> > definitions. >> >             * src/c++98/ios_failure.cc >> > [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. >> >             * src/c++98/istream-string.cc >> [!_GLIBCXX_USE_DUAL_ABI]: >> > Build only when configured >> >             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >> >             * src/c++98/locale_facets.cc >> > [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >> >             * src/c++98/stdexcept.cc >> > [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >> > [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remove. >> > [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): >> > Remove. >> > [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remove. >> > [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remove. >> > [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): >> > Remove. >> > [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >> > [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): >> > Remove. >> > [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): >> > Remove. >> > >> > Tested under linux x86_64 with following configs: >> > >> > --enable-symvers=gnu-versioned-namespace >> > >> > --disable-libstdcxx-dual-abi >> > >> > Ok to commit ? >> > >> > François >> > >> > >> --------------rEr9ft2PgJHB4NjLV0lkCwu8-- --------------oFnB7rz4D2EcFxy52VzQ096e Content-Type: text/x-patch; charset=UTF-8; name="cxx11_gnu-versioned-ns.patch" Content-Disposition: attachment; filename="cxx11_gnu-versioned-ns.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJz dGRjKystdjMvYWNpbmNsdWRlLm00CmluZGV4IGIyNTM3OGVhYWNlLi4zMjJm MWU0MjYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5t NAorKysgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CkBAIC00ODc1LDEy ICs0ODc1LDE2IEBAIGRubAogQUNfREVGVU4oW0dMSUJDWFhfRU5BQkxFX0xJ QlNURENYWF9EVUFMX0FCSV0sIFsKICAgR0xJQkNYWF9FTkFCTEUobGlic3Rk Y3h4LWR1YWwtYWJpLCQxLCxbc3VwcG9ydCB0d28gdmVyc2lvbnMgb2Ygc3Rk OjpzdHJpbmddKQogICBpZiB0ZXN0IHgkZW5hYmxlX3N5bXZlcnMgPSB4Z251 LXZlcnNpb25lZC1uYW1lc3BhY2U7IHRoZW4KLSAgICAjIGdudS12ZXJzaW9u ZWQtbmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFC SS4KLSAgICBlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpPSJubyIKLSAgZmkK LSAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpIiAhPSB4 eWVzOyB0aGVuCisgICAgIyBnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZSBpcyBp bmNvbXBhdGlibGUgd2l0aCB0aGUgZHVhbCBBQkkuLi4KICAgICBBQ19NU0df Tk9USUNFKFtkdWFsIEFCSSBpcyBkaXNhYmxlZF0pCi0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtkdWFs IEFCSSBpcyBkaXNhYmxlZF0pCisgICAgICBkZWZhdWx0X2xpYnN0ZGN4eF9h Ymk9ImdjYzQtY29tcGF0aWJsZSIKKyAgICBmaQogICBmaQogICBHTElCQ1hY X0NPTkRJVElPTkFMKEVOQUJMRV9EVUFMX0FCSSwgdGVzdCAkZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaSA9IHllcykKIF0pCmRpZmYgLS1naXQgYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9kcmFnb25mbHkvbW9uZXRhcnlfbWVt YmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdvbmZs eS9tb25ldGFyeV9tZW1iZXJzLmNjCmluZGV4IGY1MzRiYmU0YWViLi4zZjk2 ZjJiOWYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2Nh bGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJlcnMuY2MKKysrIGIvbGlic3Rk YysrLXYzL2NvbmZpZy9sb2NhbGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJl cnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KIAogLy8gVGhpcyBmaWxlIG1pZ2h0IGJlIGNvbXBpbGVk IHR3aWNlLCBidXQgd2Ugb25seSB3YW50IHRvIGRlZmluZSB0aGUgbWVtYmVy cwogLy8gb2YgbW9uZXlfYmFzZSBvbmNlLgotI2lmICEgX0dMSUJDWFhfVVNF X0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIC8vIENvbnN0cnVjdCBhbmQg cmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJp bmF0aW9uIG9mOgogICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVl CkBAIC0yMDcsNyArMjA3LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gX19yZXQ7CiAgIH0KLSNl bmRpZgorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIHRlbXBsYXRlPD4KICAgICB2 b2lkCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9n ZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29u ZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MKaW5kZXgg MmMxY2ZlZmYwOTQuLmExYWUxMzZiZTA0IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMu Y2MKKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9t b25ldGFyeV9tZW1iZXJzLmNjCkBAIC0zNiw3ICszNiw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdo dCBiZSBjb21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZp bmUgdGhlIG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBD b25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcg b2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1i b2wgc2lnbiB2YWx1ZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZp Zy9sb2NhbGUvZ251L21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKyst djMvY29uZmlnL2xvY2FsZS9nbnUvbW9uZXRhcnlfbWVtYmVycy5jYwppbmRl eCAxZjQ2ZWEyZjUzZi4uODc1NjFiY2M4MjEgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFyeV9tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFy eV9tZW1iZXJzLmNjCkBAIC0zNyw3ICszNyw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBj b21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhl IG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBDb25zdHJ1 Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29t ZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1ib2wgc2ln biB2YWx1ZQpAQCAtMjA1LDcgKzIwNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0Owog ICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICBleHRlcm4gY2hh ciBfX25hcnJvd19tdWx0aWJ5dGVfY2hhcnMoY29uc3QgY2hhciogcywgX19s b2NhbGVfdCBjbG9jKTsKIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2Nv bmZpZy9sb2NhbGUvZ251L251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMr Ky12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmljX21lbWJlcnMuY2MKaW5k ZXggMjIwYTBmOGM1MTAuLmNiODA5NWU2YWM3IDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9nbnUvbnVtZXJpY19tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmlj X21lbWJlcnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgZXh0ZXJuIGNoYXIgX19uYXJyb3dfbXVs dGlieXRlX2NoYXJzKGNvbnN0IGNoYXIqIHMsIF9fbG9jYWxlX3QgY2xvYyk7 CiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBjb21waWxlZCB0d2ljZSwgYnV0 IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhpcyBvbmNlLgotI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBjaGFyCiAgIF9f bmFycm93X211bHRpYnl0ZV9jaGFycyhjb25zdCBjaGFyKiBzLCBfX2xvY2Fs ZV90IGNsb2MpCiAgIHsKQEAgLTg0LDcgKzg0LDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gJ1ww JzsKICAgfQotI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAKICAgdGVtcGxh dGU8PgogICAgIHZvaWQKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25m aWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCmluZGV4IGM0ZGE1NmMz MDQyLi5mZDQzMWYyODU0NyAxMDA3NTUKLS0tIGEvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZQorKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCkBAIC03MDcw MiwxMyArNzA3MDIsMTggQEAgZmkKIAogCiAgIGlmIHRlc3QgeCRlbmFibGVf c3ltdmVycyA9IHhnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZTsgdGhlbgotICAg ICMgZ251LXZlcnNpb25lZC1uYW1lc3BhY2UgaXMgaW5jb21wYXRpYmxlIHdp dGggdGhlIGR1YWwgQUJJLgotICAgIGVuYWJsZV9saWJzdGRjeHhfZHVhbF9h Ymk9Im5vIgotICBmaQotICBpZiB0ZXN0IHgiJGVuYWJsZV9saWJzdGRjeHhf ZHVhbF9hYmkiICE9IHh5ZXM7IHRoZW4KKyAgICAjIGdudS12ZXJzaW9uZWQt bmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFCSS4u LgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNQogJGFzX2VjaG8gIiRhc19t ZTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNjt9Ci0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjUKKyRhc19lY2hvICIkYXNfbWU6IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjY7fQorICAgICAgZGVmYXVsdF9saWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBh dGlibGUiCisgICAgZmkKICAgZmkKIAogCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvaW5jbHVkZS9iaXRzL2MrK2NvbmZpZyBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvYysrY29uZmlnCmluZGV4IGRkNDdmMjc0ZDVmLi5iOTBl ZmM4MWQzMyAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9jKytjb25maWcKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9j Kytjb25maWcKQEAgLTMzNywyNiArMzM3LDYgQEAgbmFtZXNwYWNlIHN0ZAog I2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjZW5kaWYKIAotI2lm IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKLW5hbWVzcGFjZSBzdGQKLXsKLSAg aW5saW5lIG5hbWVzcGFjZSBfX2N4eDExIF9fYXR0cmlidXRlX18oKF9fYWJp X3RhZ19fICgiY3h4MTEiKSkpIHsgfQotfQotbmFtZXNwYWNlIF9fZ251X2N4 eAotewotICBpbmxpbmUgbmFtZXNwYWNlIF9fY3h4MTEgX19hdHRyaWJ1dGVf XygoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkgeyB9Ci19Ci0jIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEgX19jeHgxMTo6Ci0jIGRlZmluZSBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEgbmFtZXNwYWNlIF9fY3h4 MTEgewotIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DWFgxMSB9 Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcgX0dMSUJDWFhf QUJJX1RBR19DWFgxMQotI2Vsc2UKLSMgZGVmaW5lIF9HTElCQ1hYX05BTUVT UEFDRV9DWFgxMQotIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X0NYWDExCi0jIGRlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDEx Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcKLSNlbmRpZgot CiAvLyBOb24temVybyBpZiBpbmxpbmUgbmFtZXNwYWNlcyBhcmUgdXNlZCBm b3IgdmVyc2lvbmluZyB0aGUgZW50aXJlIGxpYnJhcnkuCiAjZGVmaW5lIF9H TElCQ1hYX0lOTElORV9WRVJTSU9OIAogCkBAIC00MTUsNyArMzk1LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgLy8gTm9uLWlu bGluZSBuYW1lc3BhY2UgZm9yIGNvbXBvbmVudHMgcmVwbGFjZWQgYnkgYWx0 ZXJuYXRlcyBpbiBhY3RpdmUgbW9kZS4KICAgbmFtZXNwYWNlIF9fY3h4MTk5 OAogICB7Ci0jIGlmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaWYgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJT SU9OCiAgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJpYnV0ZV9f KChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KICMgZW5kaWYKICAgfQpA QCAtNDQ1LDYgKzQyNSwyNiBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KICMgZW5kaWYKICNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJTSU9OCituYW1lc3Bh Y2Ugc3RkCit7CisgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJp YnV0ZV9fKChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KK30KK25hbWVz cGFjZSBfX2dudV9jeHgKK3sKKyAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDEx IF9fYXR0cmlidXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQor fQorIyBkZWZpbmUgX0dMSUJDWFhfTkFNRVNQQUNFX0NYWDExIF9fY3h4MTE6 OgorIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExIG5h bWVzcGFjZSBfX2N4eDExIHsKKyMgZGVmaW5lIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfQ1hYMTEgfQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHIF9HTElCQ1hYX0FCSV9UQUdfQ1hYMTEKKyNlbHNlCisjIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEKKyMgZGVmaW5lIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05B TUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHCisjZW5kaWYKKwogLy8gTWFjcm9zIGZvciBuYW1lc3BhY2Ugc2NvcGUu IEVpdGhlciBuYW1lc3BhY2Ugc3RkOjogb3IgdGhlIG5hbWUKIC8vIG9mIHNv bWUgbmVzdGVkIG5hbWVzcGFjZSB3aXRoaW4gaXQgY29ycmVzcG9uZGluZyB0 byB0aGUgYWN0aXZlIG1vZGUuCiAvLyBfR0xJQkNYWF9TVERfQQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jb3dfc3RyaW5nLmgg Yi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Nvd19zdHJpbmcuaAppbmRl eCBlNWYwOTRmZDEzZS4uZDViOThkMzBhNzAgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCkBAIC0zMiw4ICsz Miw2IEBACiAjaWZuZGVmIF9DT1dfU1RSSU5HX0gKICNkZWZpbmUgX0NPV19T VFJJTkdfSCAxCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKLQog I2luY2x1ZGUgPGV4dC9hdG9taWNpdHkuaD4gLy8gX0F0b21pY193b3JkLCBf X2lzX3NpbmdsZV90aHJlYWRlZAogCiAjaWZkZWYgX19jcHBfbGliX2lzX2Nv bnN0YW50X2V2YWx1YXRlZApAQCAtNDQsNiArNDIsMTAgQEAKICMgZGVmaW5l IF9fY3BwX2xpYl9jb25zdGV4cHJfc3RyaW5nIDIwMTYxMUwKICNlbmRpZgog CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBkZWZpbmUgYmFzaWNf c3RyaW5nIF9fc3RkX2Nvd19zdHJpbmcKKyNlbmRpZgorCiBuYW1lc3BhY2Ug c3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC04MzUsNiArODM3LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVuZCgp IGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUCiAgICAgICB7IHJldHVybiBjb25z dF9pdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CiAKKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8qKgogICAgICAg ICogIFJldHVybnMgYSByZWFkL3dyaXRlIHJldmVyc2UgaXRlcmF0b3IgdGhh dCBwb2ludHMgdG8gdGhlIGxhc3QKICAgICAgICAqICBjaGFyYWN0ZXIgaW4g dGhlICVzdHJpbmcuICBJdGVyYXRpb24gaXMgZG9uZSBpbiByZXZlcnNlIGVs ZW1lbnQKQEAgLTkwNiw2ICs5MDksNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogICAgICAgY3JlbmQoKSBjb25zdCBub2V4Y2VwdAog ICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5i ZWdpbigpKTsgfQogI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJCiAKICAgICBwdWJsaWM6CiAgICAgICAvLyBDYXBhY2l0eToK QEAgLTkzMyw2ICs5MzcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICAgICAgbWF4X3NpemUoKSBjb25zdCBfR0xJQkNYWF9OT0VY Q0VQVAogICAgICAgeyByZXR1cm4gX1JlcDo6X1NfbWF4X3NpemU7IH0KIAor I2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAgICAgLyoqCiAgICAg ICAgKiAgQGJyaWVmICBSZXNpemVzIHRoZSAlc3RyaW5nIHRvIHRoZSBzcGVj aWZpZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgICAgICAgKiAgQHBhcmFt ICBfX24gIE51bWJlciBvZiBjaGFyYWN0ZXJzIHRoZSAlc3RyaW5nIHNob3Vs ZCBjb250YWluLgpAQCAtOTY5LDcgKzk3NCw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICB7IHJlc2VydmUoKTsgfQogI3By YWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgotCisjZW5kaWYgLy8g ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgICAgICAvKioKICAgICAgICAq ICBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0 IHRoZSAlc3RyaW5nIGNhbiBob2xkCiAgICAgICAgKiAgYmVmb3JlIG5lZWRp bmcgdG8gYWxsb2NhdGUgbW9yZSBtZW1vcnkuCkBAIC05NzgsNiArOTgzLDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGNh cGFjaXR5KCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0 dXJuIF9NX3JlcCgpLT5fTV9jYXBhY2l0eTsgfQogCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYg IEF0dGVtcHQgdG8gcHJlYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Igc3Bl Y2lmaWVkIG51bWJlciBvZgogICAgICAgICogICAgICAgICAgY2hhcmFjdGVy cy4KQEAgLTEwMjYsNiArMTAzMiw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVT UEFDRV9WRVJTSU9OCiAgICAgICBjbGVhcigpCiAgICAgICB7IF9NX211dGF0 ZSgwLCB0aGlzLT5zaXplKCksIDApOyB9CiAjZW5kaWYKKyNlbmRpZiAvLyAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogICAgICAgLyoqCiAgICAgICAg KiAgUmV0dXJucyB0cnVlIGlmIHRoZSAlc3RyaW5nIGlzIGVtcHR5LiAgRXF1 aXZhbGVudCB0bwpAQCAtMTAzNSw2ICsxMDQyLDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVtcHR5KCkgY29uc3QgX0dM SUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0dXJuIHRoaXMtPnNpemUoKSA9 PSAwOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAg IC8vIEVsZW1lbnQgYWNjZXNzOgogICAgICAgLyoqCiAgICAgICAgKiAgQGJy aWVmICBTdWJzY3JpcHQgYWNjZXNzIHRvIHRoZSBkYXRhIGNvbnRhaW5lZCBp biB0aGUgJXN0cmluZy4KQEAgLTEzNDUsNiArMTM1Myw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJdHJhaXRzX3R5cGU6OmFzc2ln bihfTV9kYXRhKClbdGhpcy0+c2l6ZSgpXSwgX19jKTsKIAlfTV9yZXAoKS0+ X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19sZW4pOwogICAgICAgfQor I2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAgICAgICAv KioKICAgICAgICAqICBAYnJpZWYgIFNldCB2YWx1ZSB0byBjb250ZW50cyBv ZiBhbm90aGVyIHN0cmluZy4KQEAgLTE0ODksNiArMTQ5OCw3IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJfQogI2VuZGlmIC8vIEMr KzE3CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8q KgogICAgICAgICogIEBicmllZiAgSW5zZXJ0IG11bHRpcGxlIGNoYXJhY3Rl cnMuCiAgICAgICAgKiAgQHBhcmFtIF9fcCAgSXRlcmF0b3IgcmVmZXJlbmNp bmcgbG9jYXRpb24gaW4gc3RyaW5nIHRvIGluc2VydCBhdC4KQEAgLTIxMDcs NiArMjExNyw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAJICByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gYmVnaW4oKSwgX19p MiAtIF9faTEsIF9fc3YpOwogCX0KICNlbmRpZiAvLyBDKysxNworI2VuZGlm IC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAgICAgcHJpdmF0ZToK ICAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnRlZ2VyPgpAQCAtMjE3OCw2ICsy MTg5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAog ICAgIHB1YmxpYzoKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQog ICAgICAgLyoqCiAgICAgICAgKiAgQGJyaWVmICBDb3B5IHN1YnN0cmluZyBp bnRvIEMgc3RyaW5nLgogICAgICAgICogIEBwYXJhbSBfX3MgIEMgc3RyaW5n IHRvIGNvcHkgdmFsdWUgaW50by4KQEAgLTIxOTIsNiArMjIwNCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICAqLwogICAg ICAgc2l6ZV90eXBlCiAgICAgICBjb3B5KF9DaGFyVCogX19zLCBzaXplX3R5 cGUgX19uLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdDsKKyNlbmRpZgog CiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYgIFN3YXAgY29udGVudHMg d2l0aCBhbm90aGVyIHN0cmluZy4KQEAgLTIyNDksNiArMjI2Miw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBnZXRfYWxs b2NhdG9yKCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0 dXJuIF9NX2RhdGFwbHVzOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgICAgIC8qKgogICAgICAgICogIEBicmllZiAgRmluZCBwb3Np dGlvbiBvZiBhIEMgc3Vic3RyaW5nLgogICAgICAgICogIEBwYXJhbSBfX3Mg IEMgc3RyaW5nIHRvIGxvY2F0ZS4KQEAgLTMwNTQsNiArMzA2OCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBjb250YWlu cyhjb25zdCBfQ2hhclQqIF9feCkgY29uc3Qgbm9leGNlcHQKICAgICAgIHsg cmV0dXJuIF9fc3ZfdHlwZSh0aGlzLT5kYXRhKCksIHRoaXMtPnNpemUoKSku Y29udGFpbnMoX194KTsgfQogI2VuZGlmIC8vIEMrKzIzCisjZW5kaWYgLy8g ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKICMgaWZkZWYgX0dMSUJDWFhf VE1fVFNfSU5URVJOQUwKICAgICAgIGZyaWVuZCB2b2lkCkBAIC0zMjU3LDYg KzMyNzIsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgog CX0KICAgICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAg IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg dHlwZW5hbWUgX0FsbG9jPgogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U cmFpdHMsIF9BbGxvYz4mCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry YWl0cywgX0FsbG9jPjo6CkBAIC0zNDIwLDYgKzM0MzYsNyBAQCBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCSAgIHJldHVybiBfTV9yZXBs YWNlX3NhZmUoX19wb3MsIF9fbjEsIF9fdG1wLl9NX2RhdGEoKSwgX19uMik7 CiAJIH0KICAgICAgfQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQogCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIHZvaWQKQEAgLTM0ODEs NiArMzQ5OCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUo X19uZXdfc2l6ZSk7CiAgICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIHZvaWQKICAgICBiYXNp Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKQEAgLTM1MDYs NiArMzUyNCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBfTV9yZXAoKS0+X01fZGlzcG9zZShfX2EpOwogICAgICAgX01f ZGF0YShfX3RtcCk7CiAgICAgfQorI2VuZGlmCiAKICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs b2M+CiAgICAgdm9pZApAQCAtMzYyOSw2ICszNjQ4LDcgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIHJldHVybiBfX3ItPl9N X3JlZmRhdGEoKTsKICAgICB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICAgdm9pZAogICAgIGJhc2lj X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgpAQCAtMzY0Miw2 ICszNjYyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K IAl0aGlzLT5lcmFzZShfX24pOwogICAgICAgLy8gZWxzZSBub3RoaW5nIChp biBwYXJ0aWN1bGFyLCBhdm9pZCBjYWxsaW5nIF9NX211dGF0ZSgpIHVubmVj ZXNzYXJpbHkuKQogICAgIH0KKyAgI2VuZGlmCiAKICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs b2M+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CkBA IC0zNjgyLDYgKzM3MDMsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorI2lmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAg ICB2b2lkCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs bG9jPjo6CkBAIC0zNzE2LDcgKzM3MzgsMTEgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIC8vIDIxLjMuNS43IHBhciAzOiBk byBub3QgYXBwZW5kIG51bGwuICAoZ29vZC4pCiAgICAgICByZXR1cm4gX19u OwogICAgIH0KKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK IF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3Bh Y2Ugc3RkCi0jZW5kaWYgIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQor CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyB1bmRlZiBiYXNpY19z dHJpbmcKKyNlbmRpZgogI2VuZGlmICAvLyBfQ09XX1NUUklOR19ICmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0IGIv bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3N0ZGV4Y2VwdAppbmRleCA2NmM4 NTcyZDBjZC4uMzMzMDY1MDg2OTUgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9pbmNsdWRlL3N0ZC9zdGRleGNlcHQKKysrIGIvbGlic3RkYysrLXYzL2lu Y2x1ZGUvc3RkL3N0ZGV4Y2VwdApAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKLSNpZiBfR0xJQkNYWF9V U0VfRFVBTF9BQkkKLSNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYg X0dMSUJDWFhfVVNFX0RVQUxfQUJJIHx8IF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKKyNpZiAhIF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfSU5TVEFOVElB VElPTlMKICAgLy8gRW11bGF0ZXMgYW4gb2xkIENPVyBzdHJpbmcgd2hlbiB0 aGUgbmV3IHN0ZDo6c3RyaW5nIGlzIGluIHVzZS4KICAgc3RydWN0IF9fY293 X3N0cmluZwogICB7CkBAIC01NCw2ICs1NCw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKICAgICBfX2Nvd19zdHJpbmcoKTsKICAg ICBfX2Nvd19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICBfX2Nv d19zdHJpbmcoY29uc3QgY2hhciopOwogICAgIF9fY293X3N0cmluZyhjb25z dCBjaGFyKiwgc2l6ZV90KTsKICAgICBfX2Nvd19zdHJpbmcoY29uc3QgX19j b3dfc3RyaW5nJikgX0dMSUJDWFhfTk9USFJPVzsKICAgICBfX2Nvd19zdHJp bmcmIG9wZXJhdG9yPShjb25zdCBfX2Nvd19zdHJpbmcmKSBfR0xJQkNYWF9O T1RIUk9XOwpAQCAtNjIsMTIgKzYzLDE0IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmlu ZyYmKSBub2V4Y2VwdDsKICAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShf X2Nvd19zdHJpbmcmJikgbm9leGNlcHQ7CiAjZW5kaWYKKyAgICBjb25zdCBj aGFyKiBjX3N0cigpIGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUOwogICB9Owot Ci0gIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fc3NvX3N0cmluZzsK LSNlbHNlIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNlbmRpZiAvLyAh IF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfSU5TVEFOVElBVElPTlMKKyNl bHNlCiAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fY293X3N0cmlu ZzsKKyNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJICYmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAvLyBFbXVsYXRlcyBhIG5ldyBT U08gc3RyaW5nIHdoZW4gdGhlIG9sZCBzdGQ6OnN0cmluZyBpcyBpbiB1c2Uu CiAgIHN0cnVjdCBfX3Nzb19zdHJpbmcKICAgewpAQCAtOTQsMTAgKzk3LDgg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBfX3Nz b19zdHJpbmcmIG9wZXJhdG9yPShfX3Nzb19zdHJpbmcmJikgbm9leGNlcHQ7 CiAjZW5kaWYKICAgfTsKLSNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCi0jZWxzZSAgLy8gX0dMSUJDWFhfVVNFX0RVQUxfQUJJCisjZWxzZQog ICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBfX3Nzb19zdHJpbmc7Ci0g IHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fY293X3N0cmluZzsKICNl bmRpZgogCiAgIC8qKgpAQCAtMTI3LDcgKzEyOCw3IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgbG9naWNfZXJyb3ImIG9wZXJh dG9yPShsb2dpY19lcnJvciYmKSBub2V4Y2VwdDsKICNlbmRpZgogCi0jaWYg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCBfR0xJQkNYWF9ERUZJTkVfU1RE RVhDRVBUX0NPUFlfT1BTCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8 fCBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBUX0lOU1RBTlRJQVRJT05TCiAg ICAgbG9naWNfZXJyb3IoY29uc3QgbG9naWNfZXJyb3ImKSBfR0xJQkNYWF9O T1RIUk9XOwogICAgIGxvZ2ljX2Vycm9yJiBvcGVyYXRvcj0oY29uc3QgbG9n aWNfZXJyb3ImKSBfR0xJQkNYWF9OT1RIUk9XOwogI2VsaWYgX19jcGx1c3Bs dXMgPj0gMjAxMTAzTApAQCAtMjMzLDcgKzIzNCw3IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcnVudGltZV9lcnJvciYgb3Bl cmF0b3I9KHJ1bnRpbWVfZXJyb3ImJikgbm9leGNlcHQ7CiAjZW5kaWYKIAot I2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgX0dMSUJDWFhfREVGSU5F X1NUREVYQ0VQVF9DT1BZX09QUworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgX0dMSUJDWFhfREVGSU5FX1NUREVYQ0VQVF9JTlNUQU5USUFUSU9O UwogICAgIHJ1bnRpbWVfZXJyb3IoY29uc3QgcnVudGltZV9lcnJvciYpIF9H TElCQ1hYX05PVEhST1c7CiAgICAgcnVudGltZV9lcnJvciYgb3BlcmF0b3I9 KGNvbnN0IHJ1bnRpbWVfZXJyb3ImKSBfR0xJQkNYWF9OT1RIUk9XOwogI2Vs aWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTApkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRlcnMucHkgYi9saWJz dGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQppbmRl eCBiNGM0MjdkNDg3Yy4uYTQzYmYxMDUzMDggMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJzLnB5CisrKyBi L2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJzLnB5 CkBAIC05NjMsNiArOTYzLDggQEAgY2xhc3MgU3RkU3RyaW5nUHJpbnRlcjoK ICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZW5hbWUsIHZhbCk6CiAgICAg ICAgIHNlbGYudmFsID0gdmFsCiAgICAgICAgIHNlbGYubmV3X3N0cmluZyA9 IHR5cGVuYW1lLmZpbmQoIjo6X19jeHgxMTo6YmFzaWNfc3RyaW5nIikgIT0g LTEKKyAgICAgICAgaWYgbm90IHNlbGYubmV3X3N0cmluZyBhbmQgX3ZlcnNp b25lZF9uYW1lc3BhY2U6CisgICAgICAgICAgICBzZWxmLm5ld19zdHJpbmcg PSB0eXBlbmFtZS5maW5kKCI6OiIgKyBfdmVyc2lvbmVkX25hbWVzcGFjZSAr ICJiYXNpY19zdHJpbmciKSAhPSAtMQogCiAgICAgZGVmIHRvX3N0cmluZyhz ZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgJnN0cmluZyB3b3JrcywgdG9v LgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbSBi L2xpYnN0ZGMrKy12My9zcmMvTWFrZWZpbGUuYW0KaW5kZXggNWI5YWY0MWNk YjkuLmVjMGM1MDJlY2IxIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3Jj L01ha2VmaWxlLmFtCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvTWFrZWZpbGUu YW0KQEAgLTg5LDYgKzg5LDkgQEAgZWxzZQogbGRibF9jb21wYXRfc291cmNl cyA9CiBlbmRpZgogCitpZiBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNF CitsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9CitlbHNlCiBpZiBHTElC Q1hYX0xEQkxfQUxUMTI4X0NPTVBBVAogaWYgRU5BQkxFX0RVQUxfQUJJCiBs ZGJsX2FsdDEyOF9jb21wYXRfY3h4MTFfc291cmNlcyA9IFwKQEAgLTEwMiw2 ICsxMDUsNyBAQCBsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9IFwKIGVs c2UKIGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0KIGVuZGlmCitlbmRp ZgogCiBpZiBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNFCiBjeHgweF9j b21wYXRfc291cmNlcyA9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3Jj L01ha2VmaWxlLmluIGIvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5pbgpp bmRleCBmNDJkOTU3YWYzNi4uYzljMWI2NWRiNTIgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9zcmMvTWFrZWZpbGUuaW4KKysrIGIvbGlic3RkYysrLXYz L3NyYy9NYWtlZmlsZS5pbgpAQCAtMTU3LDEwICsxNTcsOSBAQCBhbV9fb2Jq ZWN0c18yID0gY29tcGF0aWJpbGl0eS5sbyBjb21wYXRpYmlsaXR5LWRlYnVn X2xpc3QubG8gXAogQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VACWNvbXBhdGliaWxpdHktY2hyb25vLmxvIFwKIEBFTkFCTEVfU1lNVkVS U19HTlVfTkFNRVNQQUNFX0ZBTFNFQAljb21wYXRpYmlsaXR5LWNvbmR2YXIu bG8gXAogQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VACWNv bXBhdGliaWxpdHktdGhyZWFkLWMrKzB4LmxvCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAYW1fX29i amVjdHNfNCA9IGNvbXBhdGliaWxpdHktbGRibC1hbHQxMjgtY3h4MTEubG8K LUBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGFtX19vYmplY3Rz XzUgPSAgXAotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACWNv bXBhdGliaWxpdHktbGRibC1hbHQxMjgubG8gXAotQEdMSUJDWFhfTERCTF9B TFQxMjhfQ09NUEFUX1RSVUVACSQoYW1fX29iamVjdHNfNCkKK0BFTkFCTEVf RFVBTF9BQklfVFJVRUBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9G QUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUBhbV9fb2Jq ZWN0c180ID0gY29tcGF0aWJpbGl0eS1sZGJsLWFsdDEyOC1jeHgxMS5sbwor QEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhf TERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAYW1fX29iamVjdHNfNSA9IGNvbXBh dGliaWxpdHktbGRibC1hbHQxMjgubG8gXAorQEVOQUJMRV9TWU1WRVJTX0dO VV9OQU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFU X1RSVUVACSQoYW1fX29iamVjdHNfNCkKIGFtX19vYmplY3RzXzYgPSAkKGFt X19vYmplY3RzXzMpICQoYW1fX29iamVjdHNfNSkKIEBHTElCQ1hYX0hPU1RF RF9UUlVFQGFtX2xpYnN0ZGNfX19sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0 c18yKSBcCiBAR0xJQkNYWF9IT1NURURfVFJVRUAJJChhbV9fb2JqZWN0c182 KQpAQCAtNTEwLDE0ICs1MDksMTUgQEAgU1VCRElSUyA9IGMrKzk4IGMrKzEx IGMrKzE3IGMrKzIwICQoZmlsZXN5c3RlbV9kaXIpICQoYmFja3RyYWNlX2Rp cikgJChleHBlcmltZW4KIAogQEdMSUJDWFhfTERCTF9DT01QQVRfRkFMU0VA bGRibF9jb21wYXRfc291cmNlcyA9IAogQEdMSUJDWFhfTERCTF9DT01QQVRf VFJVRUBsZGJsX2NvbXBhdF9zb3VyY2VzID0gY29tcGF0aWJpbGl0eS1sZGJs LmNjCi1ARU5BQkxFX0RVQUxfQUJJX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxU MTI4X0NPTVBBVF9UUlVFQGxkYmxfYWx0MTI4X2NvbXBhdF9jeHgxMV9zb3Vy Y2VzID0gCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAQEdMSUJDWFhfTERCTF9B TFQxMjhfQ09NUEFUX1RSVUVAbGRibF9hbHQxMjhfY29tcGF0X2N4eDExX3Nv dXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAQEdMSUJDWFhfTERC TF9BTFQxMjhfQ09NUEFUX1RSVUVACWNvbXBhdGliaWxpdHktbGRibC1hbHQx MjgtY3h4MTEuY2MKLQotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX0ZB TFNFQGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gCi1AR0xJQkNYWF9M REJMX0FMVDEyOF9DT01QQVRfVFJVRUBsZGJsX2FsdDEyOF9jb21wYXRfc291 cmNlcyA9IFwKLUBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQAlj b21wYXRpYmlsaXR5LWxkYmwtYWx0MTI4LmNjIFwKLUBHTElCQ1hYX0xEQkxf QUxUMTI4X0NPTVBBVF9UUlVFQAkke2xkYmxfYWx0MTI4X2NvbXBhdF9jeHgx MV9zb3VyY2VzfQorQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX0ZBTFNFQGxkYmxfYWx0 MTI4X2NvbXBhdF9zb3VyY2VzID0gCitARU5BQkxFX1NZTVZFUlNfR05VX05B TUVTUEFDRV9GQUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJV RUBsZGJsX2FsdDEyOF9jb21wYXRfc291cmNlcyA9IFwKK0BFTkFCTEVfU1lN VkVSU19HTlVfTkFNRVNQQUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4 X0NPTVBBVF9UUlVFQAljb21wYXRpYmlsaXR5LWxkYmwtYWx0MTI4LmNjIFwK K0BFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNFX0ZBTFNFQEBHTElCQ1hY X0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQAkke2xkYmxfYWx0MTI4X2NvbXBh dF9jeHgxMV9zb3VyY2VzfQorCitARU5BQkxFX1NZTVZFUlNfR05VX05BTUVT UEFDRV9UUlVFQGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gCitARU5B QkxFX0RVQUxfQUJJX0ZBTFNFQEBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQ QUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGxk YmxfYWx0MTI4X2NvbXBhdF9jeHgxMV9zb3VyY2VzID0gCitARU5BQkxFX0RV QUxfQUJJX1RSVUVAQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFM U0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAbGRibF9hbHQx MjhfY29tcGF0X2N4eDExX3NvdXJjZXMgPSBcCitARU5BQkxFX0RVQUxfQUJJ X1RSVUVAQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdM SUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACWNvbXBhdGliaWxpdHkt bGRibC1hbHQxMjgtY3h4MTEuY2MKIAogQEVOQUJMRV9TWU1WRVJTX0dOVV9O QU1FU1BBQ0VfRkFMU0VAY3h4MHhfY29tcGF0X3NvdXJjZXMgPSBcCiBARU5B QkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9GQUxTRUAJY29tcGF0aWJpbGl0 eS1hdG9taWMtYysrMHguY2MgXApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvTWFrZWZpbGUuYW0KaW5kZXggNjgyYmUxNjY5YTQuLjgyMjI3MzM4Nzk4 IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2VmaWxl LmFtCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvTWFrZWZpbGUuYW0K QEAgLTQwLDE1ICs0MCwxMSBAQCBjdHlwZV9tZW1iZXJzLmNjOiAke2dsaWJj eHhfc3JjZGlyfS8kKENDVFlQRV9DQykKIAkkKExOX1MpICR7Z2xpYmN4eF9z cmNkaXJ9LyQoQ0NUWVBFX0NDKSAuIHx8IHRydWUKIAogaWYgRU5BQkxFX0RV QUxfQUJJCi1jeHgxMV9hYmlfc291cmNlcyA9IFwKLQljb3ctbG9jYWxlX2lu aXQuY2MgXAorZHVhbF9hYmlfc291cmNlcyA9IFwKIAljb3ctc2hpbV9mYWNl dHMuY2MgXAotCWN4eDExLWhhc2hfdHIxLmNjIFwKLQljeHgxMS1pb3NfZmFp bHVyZS5jYyBcCi0JY3h4MTEtc2hpbV9mYWNldHMuY2MgXAotCWN4eDExLXN0 ZGV4Y2VwdC5jYworCWN4eDExLXNoaW1fZmFjZXRzLmNjCiBlbHNlCi1jeHgx MV9hYmlfc291cmNlcyA9CitkdWFsX2FiaV9zb3VyY2VzID0KIGVuZGlmCiAK IHNvdXJjZXNfZnJlZXN0YW5kaW5nID0gXApAQCAtNTksOCArNTUsMTIgQEAg c291cmNlcyA9IFwKIAljaHJvbm8uY2MgXAogCWNvZGVjdnQuY2MgXAogCWNv bmRpdGlvbl92YXJpYWJsZS5jYyBcCisJY293LWxvY2FsZV9pbml0LmNjIFwK IAljb3ctc3RkZXhjZXB0LmNjIFwKIAljdHlwZS5jYyBcCisJY3h4MTEtaGFz aF90cjEuY2MgXAorCWN4eDExLWlvc19mYWlsdXJlLmNjIFwKKwljeHgxMS1z dGRleGNlcHQuY2MgXAogCWRlYnVnLmNjIFwKIAlmdW5jdGV4Y2VwdC5jYyBc CiAJZnVuY3Rpb25hbC5jYyBcCkBAIC03NywxOSArNzcsMTEgQEAgc291cmNl cyA9IFwKIAlzbnByaW50Zl9saXRlLmNjIFwKIAlzeXN0ZW1fZXJyb3IuY2Mg XAogCXRocmVhZC5jYyBcCi0JJHtjeHgxMV9hYmlfc291cmNlc30gXAorCSR7 ZHVhbF9hYmlfc291cmNlc30gXAogCSR7aG9zdF9zb3VyY2VzfQogCiBpZiBF TkFCTEVfRFVBTF9BQkkKIGV4dHJhX3N0cmluZ19pbnN0X3NvdXJjZXMgPSBc Ci0JY293LWZzdHJlYW0taW5zdC5jYyBcCi0JY293LXNzdHJlYW0taW5zdC5j YyBcCi0JY293LXN0cmluZy1pbnN0LmNjIFwKLQljb3ctc3RyaW5nLWlvLWlu c3QuY2MgXAotCWNvdy13c3RyaW5nLWluc3QuY2MgXAotCWNvdy13c3RyaW5n LWlvLWluc3QuY2MgXAotCWN4eDExLWxvY2FsZS1pbnN0LmNjIFwKLQljeHgx MS13bG9jYWxlLWluc3QuY2MgXAogCXNzb19zdHJpbmcuY2MKIGVsc2UKIGV4 dHJhX3N0cmluZ19pbnN0X3NvdXJjZXMgPQpAQCAtOTksNiArOTEsMTQgQEAg aWYgRU5BQkxFX0VYVEVSTl9URU1QTEFURQogIyBYVEVNUExBVEVfRkxBR1Mg PSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcwogaW5zdF9zb3VyY2VzID0gXAog CSQoZXh0cmFfc3RyaW5nX2luc3Rfc291cmNlcykgXAorCWNvdy1mc3RyZWFt LWluc3QuY2MgXAorCWNvdy1zc3RyZWFtLWluc3QuY2MgXAorCWNvdy1zdHJp bmctaW5zdC5jYyBcCisJY293LXN0cmluZy1pby1pbnN0LmNjIFwKKwljb3ct d3N0cmluZy1pbnN0LmNjIFwKKwljb3ctd3N0cmluZy1pby1pbnN0LmNjIFwK KwljeHgxMS1sb2NhbGUtaW5zdC5jYyBcCisJY3h4MTEtd2xvY2FsZS1pbnN0 LmNjIFwKIAlleHQxMS1pbnN0LmNjIFwKIAlmc3RyZWFtLWluc3QuY2MgXAog CWlvcy1pbnN0LmNjIFwKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMv YysrMTEvTWFrZWZpbGUuaW4gYi9saWJzdGRjKystdjMvc3JjL2MrKzExL01h a2VmaWxlLmluCmluZGV4IGU3YTA5ZmUzMjQ2Li4yZDk0NDI1NDgwYiAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9NYWtlZmlsZS5pbgor KysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2VmaWxlLmluCkBAIC0x MjIsMjUgKzEyMiwyNiBAQCBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQog TFRMSUJSQVJJRVMgPSAkKG5vaW5zdF9MVExJQlJBUklFUykKIGxpYmNfXzEx Y29udmVuaWVuY2VfbGFfTElCQUREID0KIGFtX19vYmplY3RzXzEgPSBsaW1p dHMubG8gcGxhY2Vob2xkZXJzLmxvCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVA YW1fX29iamVjdHNfMiA9IGNvdy1sb2NhbGVfaW5pdC5sbyBcCi1ARU5BQkxF X0RVQUxfQUJJX1RSVUVACWNvdy1zaGltX2ZhY2V0cy5sbyBjeHgxMS1oYXNo X3RyMS5sbyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLWlvc19m YWlsdXJlLmxvIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtc2hp bV9mYWNldHMubG8gY3h4MTEtc3RkZXhjZXB0LmxvCitARU5BQkxFX0RVQUxf QUJJX1RSVUVAYW1fX29iamVjdHNfMiA9IGNvdy1zaGltX2ZhY2V0cy5sbyBc CitARU5BQkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLXNoaW1fZmFjZXRzLmxv CiBhbV9fb2JqZWN0c18zID0gY3R5cGVfY29uZmlndXJlX2NoYXIubG8gY3R5 cGVfbWVtYmVycy5sbwogYW1fX29iamVjdHNfNCA9IGNocm9uby5sbyBjb2Rl Y3Z0LmxvIGNvbmRpdGlvbl92YXJpYWJsZS5sbyBcCi0JY293LXN0ZGV4Y2Vw dC5sbyBjdHlwZS5sbyBkZWJ1Zy5sbyBmdW5jdGV4Y2VwdC5sbyBcCi0JZnVu Y3Rpb25hbC5sbyBmdXRleC5sbyBmdXR1cmUubG8gaGFzaF9jKysweC5sbyBc CisJY293LWxvY2FsZV9pbml0LmxvIGNvdy1zdGRleGNlcHQubG8gY3R5cGUu bG8gY3h4MTEtaGFzaF90cjEubG8gXAorCWN4eDExLWlvc19mYWlsdXJlLmxv IGN4eDExLXN0ZGV4Y2VwdC5sbyBkZWJ1Zy5sbyBcCisJZnVuY3RleGNlcHQu bG8gZnVuY3Rpb25hbC5sbyBmdXRleC5sbyBmdXR1cmUubG8gaGFzaF9jKysw eC5sbyBcCiAJaGFzaHRhYmxlX2MrKzB4LmxvIGlvcy5sbyBpb3NfZXJyY2F0 LmxvIG11dGV4LmxvIHJhbmRvbS5sbyBcCiAJcmVnZXgubG8gc2hhcmVkX3B0 ci5sbyBzbnByaW50Zl9saXRlLmxvIHN5c3RlbV9lcnJvci5sbyBcCiAJdGhy ZWFkLmxvICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKQotQEVO QUJMRV9EVUFMX0FCSV9UUlVFQGFtX19vYmplY3RzXzUgPSBjb3ctZnN0cmVh bS1pbnN0LmxvIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXNzdHJl YW0taW5zdC5sbyBjb3ctc3RyaW5nLWluc3QubG8gXAotQEVOQUJMRV9EVUFM X0FCSV9UUlVFQAljb3ctc3RyaW5nLWlvLWluc3QubG8gXAotQEVOQUJMRV9E VUFMX0FCSV9UUlVFQAljb3ctd3N0cmluZy1pbnN0LmxvIFwKLUBFTkFCTEVf RFVBTF9BQklfVFJVRUAJY293LXdzdHJpbmctaW8taW5zdC5sbyBcCi1ARU5B QkxFX0RVQUxfQUJJX1RSVUVACWN4eDExLWxvY2FsZS1pbnN0LmxvIFwKLUBF TkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtd2xvY2FsZS1pbnN0LmxvIHNz b19zdHJpbmcubG8KK0BFTkFCTEVfRFVBTF9BQklfVFJVRUBhbV9fb2JqZWN0 c181ID0gc3NvX3N0cmluZy5sbwogQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVf VFJVRUBhbV9fb2JqZWN0c182ID0gJChhbV9fb2JqZWN0c181KSBcCitARU5B QkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAljb3ctZnN0cmVhbS1pbnN0Lmxv IFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy1zc3RyZWFt LWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293 LXN0cmluZy1pbnN0LmxvIFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RS VUVACWNvdy1zdHJpbmctaW8taW5zdC5sbyBcCitARU5BQkxFX0VYVEVSTl9U RU1QTEFURV9UUlVFQAljb3ctd3N0cmluZy1pbnN0LmxvIFwKK0BFTkFCTEVf RVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy13c3RyaW5nLWlvLWluc3QubG8g XAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY3h4MTEtbG9jYWxl LWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY3h4 MTEtd2xvY2FsZS1pbnN0LmxvIFwKIEBFTkFCTEVfRVhURVJOX1RFTVBMQVRF X1RSVUVACWV4dDExLWluc3QubG8gZnN0cmVhbS1pbnN0LmxvIFwKIEBFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWlvcy1pbnN0LmxvIGlvc3RyZWFt LWluc3QubG8gXAogQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJaXN0 cmVhbS1pbnN0LmxvIGxvY2FsZS1pbnN0LmxvIFwKQEAgLTQ2MSwxNCArNDYy LDEwIEBAIGhvc3Rfc291cmNlcyA9IFwKIAljdHlwZV9jb25maWd1cmVfY2hh ci5jYyBcCiAJY3R5cGVfbWVtYmVycy5jYwogCi1ARU5BQkxFX0RVQUxfQUJJ X0ZBTFNFQGN4eDExX2FiaV9zb3VyY2VzID0gCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVAY3h4MTFfYWJpX3NvdXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVACWNvdy1sb2NhbGVfaW5pdC5jYyBcCitARU5BQkxFX0RVQUxfQUJJ X0ZBTFNFQGR1YWxfYWJpX3NvdXJjZXMgPSAKK0BFTkFCTEVfRFVBTF9BQklf VFJVRUBkdWFsX2FiaV9zb3VyY2VzID0gXAogQEVOQUJMRV9EVUFMX0FCSV9U UlVFQAljb3ctc2hpbV9mYWNldHMuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9U UlVFQAljeHgxMS1oYXNoX3RyMS5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVACWN4eDExLWlvc19mYWlsdXJlLmNjIFwKLUBFTkFCTEVfRFVBTF9BQklf VFJVRUAJY3h4MTEtc2hpbV9mYWNldHMuY2MgXAotQEVOQUJMRV9EVUFMX0FC SV9UUlVFQAljeHgxMS1zdGRleGNlcHQuY2MKK0BFTkFCTEVfRFVBTF9BQklf VFJVRUAJY3h4MTEtc2hpbV9mYWNldHMuY2MKIAogc291cmNlc19mcmVlc3Rh bmRpbmcgPSBcCiAJbGltaXRzLmNjIFwKQEAgLTQ3OCw4ICs0NzUsMTIgQEAg c291cmNlcyA9IFwKIAljaHJvbm8uY2MgXAogCWNvZGVjdnQuY2MgXAogCWNv bmRpdGlvbl92YXJpYWJsZS5jYyBcCisJY293LWxvY2FsZV9pbml0LmNjIFwK IAljb3ctc3RkZXhjZXB0LmNjIFwKIAljdHlwZS5jYyBcCisJY3h4MTEtaGFz aF90cjEuY2MgXAorCWN4eDExLWlvc19mYWlsdXJlLmNjIFwKKwljeHgxMS1z dGRleGNlcHQuY2MgXAogCWRlYnVnLmNjIFwKIAlmdW5jdGV4Y2VwdC5jYyBc CiAJZnVuY3Rpb25hbC5jYyBcCkBAIC00OTYsMTkgKzQ5NywxMSBAQCBzb3Vy Y2VzID0gXAogCXNucHJpbnRmX2xpdGUuY2MgXAogCXN5c3RlbV9lcnJvci5j YyBcCiAJdGhyZWFkLmNjIFwKLQkke2N4eDExX2FiaV9zb3VyY2VzfSBcCisJ JHtkdWFsX2FiaV9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXN9CiAKIEBF TkFCTEVfRFVBTF9BQklfRkFMU0VAZXh0cmFfc3RyaW5nX2luc3Rfc291cmNl cyA9IAogQEVOQUJMRV9EVUFMX0FCSV9UUlVFQGV4dHJhX3N0cmluZ19pbnN0 X3NvdXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWNvdy1mc3Ry ZWFtLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAljb3ctc3N0 cmVhbS1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXN0 cmluZy1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXN0 cmluZy1pby1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293 LXdzdHJpbmctaW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWNv dy13c3RyaW5nLWlvLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVF QAljeHgxMS1sb2NhbGUtaW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVACWN4eDExLXdsb2NhbGUtaW5zdC5jYyBcCiBARU5BQkxFX0RVQUxfQUJJ X1RSVUVACXNzb19zdHJpbmcuY2MKIAogIyBYVEVNUExBVEVfRkxBR1MgPQpA QCAtNTE3LDYgKzUxMCwxNCBAQCBzb3VyY2VzID0gXAogIyBYVEVNUExBVEVf RkxBR1MgPSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcwogQEVOQUJMRV9FWFRF Uk5fVEVNUExBVEVfVFJVRUBpbnN0X3NvdXJjZXMgPSBcCiBARU5BQkxFX0VY VEVSTl9URU1QTEFURV9UUlVFQAkkKGV4dHJhX3N0cmluZ19pbnN0X3NvdXJj ZXMpIFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy1mc3Ry ZWFtLWluc3QuY2MgXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJ Y293LXNzdHJlYW0taW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFU RV9UUlVFQAljb3ctc3RyaW5nLWluc3QuY2MgXAorQEVOQUJMRV9FWFRFUk5f VEVNUExBVEVfVFJVRUAJY293LXN0cmluZy1pby1pbnN0LmNjIFwKK0BFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy13c3RyaW5nLWluc3QuY2Mg XAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293LXdzdHJpbmct aW8taW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAlj eHgxMS1sb2NhbGUtaW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFU RV9UUlVFQAljeHgxMS13bG9jYWxlLWluc3QuY2MgXAogQEVOQUJMRV9FWFRF Uk5fVEVNUExBVEVfVFJVRUAJZXh0MTEtaW5zdC5jYyBcCiBARU5BQkxFX0VY VEVSTl9URU1QTEFURV9UUlVFQAlmc3RyZWFtLWluc3QuY2MgXAogQEVOQUJM RV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJaW9zLWluc3QuY2MgXApkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0 LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0 LmNjCmluZGV4IDA1NjJiYzZjOWNiLi44MTUzMzg3ZGFlYSAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVhbS1pbnN0LmNj CisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWZzdHJlYW0taW5z dC5jYwpAQCAtMjksMTAgKzI5LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNF X0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8ZnN0cmVhbT4KIAotI2lmICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQg bm90IGJlIGNvbXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5k aWYKLQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFtZXNwYWNl IHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgpAQCAtNzYsMyArNzMsNCBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiBfR0xJQkNYWF9F TkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxvY2Fs ZV9pbml0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctbG9jYWxl X2luaXQuY2MKaW5kZXggODUyNzc3NjM0MjcuLjY4MzNmOTAzZjQ3IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1sb2NhbGVfaW5p dC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1sb2NhbGVf aW5pdC5jYwpAQCAtMjQsMTAgKzI0LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhf VVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8bG9jYWxlPgogCi0jaWYgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3Vs ZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNl bmRpZgotCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC0xNjUsNiArMTYyLDcg QEAgbmFtZXNwYWNlCiAjZW5kaWYKICAgfQogCisjaWYgX0dMSUJDWFhfVVNF X0RVQUxfQUJJCiAvLyBUT0RPIHNob3VsZCBiZSBpbiBhbm90aGVyIGZpbGUK ICAgc3RyaW5nCiAgIGxvY2FsZTo6bmFtZSgpIGNvbnN0CkBAIC0xOTAsNiAr MTg4LDggQEAgbmFtZXNwYWNlCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0 OwogICB9CisjZW5kaWYKIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJT SU9OCiB9CisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCmRp ZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFt LWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFt LWluc3QuY2MKaW5kZXggMDM1YTI2N2Q5ZDguLjc2OTkxNzBkMTNkIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zc3RyZWFtLWlu c3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3N0cmVh bS1pbnN0LmNjCkBAIC0yNyw4ICsyNyw4IEBACiAvLwogCiAjZGVmaW5lIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgMAotI2luY2x1ZGUgInNzdHJlYW0taW5z dC5jYyIKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgogCi0jaWYgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3Vs ZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaW5jbHVkZSAic3N0cmVh bS1pbnN0LmNjIgogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv c3JjL2MrKzExL2Nvdy1zdGRleGNlcHQuY2MgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL2Nvdy1zdGRleGNlcHQuY2MKaW5kZXggOGQxY2M0NjA1ZDQuLjIz Zjg1M2VhZGFjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzEx L2Nvdy1zdGRleGNlcHQuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysx MS9jb3ctc3RkZXhjZXB0LmNjCkBAIC00MywxMSArNDMsNTIgQEAgX3R4bmFs X3J1bnRpbWVfZXJyb3JfZ2V0X21zZyh2b2lkKiBlKTsKIAogLy8gQWxsIGV4 Y2VwdGlvbiBjbGFzc2VzIHN0aWxsIHVzZSB0aGUgY2xhc3NpYyBDT1cgc3Rk OjpzdHJpbmcuCiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAot I2RlZmluZSBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBUX0NPUFlfT1BTIDEK LSNkZWZpbmUgX19jb3dfc3RyaW5nIF9fY293X3N0cmluZ3h4eAorI2luY2x1 ZGUgPHN0cmluZz4KKworI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSB8fCBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGlmIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKKyMgIGluY2x1ZGUgPGJpdHMvY293X3N0cmluZy5oPgorIyBlbmRp ZgorCituYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVs dCkKK3sKK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCisKKyMg aWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorICB0eXBlZGVmIHN0ZDo6X19z dGRfY293X3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LAor CQkJCXN0ZDo6YWxsb2NhdG9yPGNoYXI+PiBjb3dzdHI7CisjIGVsc2UKKyAg dHlwZWRlZiBzdGQ6OnN0cmluZyBjb3dzdHI7CisjIGVuZGlmCisKKyAgLy8g UmVkZWZpbmUgX19jb3dfc3RyaW5nIHNvIHRoYXQgd2UgY2FuIGRlZmluZSBh bmQgZXhwb3J0IGl0cyBtZW1iZXJzCisgIC8vIGluIHRlcm1zIG9mIHRoZSBD T1cgc3RkOjpzdHJpbmcuCisgIHN0cnVjdCBfX2Nvd19zdHJpbmcKKyAgewor ICAgIHVuaW9uIHsKKyAgICAgIGNvbnN0IGNoYXIqIF9NX3A7CisgICAgICBj aGFyIF9NX2J5dGVzW3NpemVvZihfTV9wKV07CisgICAgICBjb3dzdHIgX01f c3RyOworICAgIH07CisKKyAgICBfX2Nvd19zdHJpbmcoKTsKKyAgICBfX2Nv d19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpOworICAgIF9fY293X3N0 cmluZyhjb25zdCBjaGFyKik7CisgICAgX19jb3dfc3RyaW5nKGNvbnN0IGNo YXIqLCBzaXplX3QpOworICAgIF9fY293X3N0cmluZyhjb25zdCBfX2Nvd19z dHJpbmcmKSBub2V4Y2VwdDsKKyAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9y PShjb25zdCBfX2Nvd19zdHJpbmcmKSBub2V4Y2VwdDsKKyAgICB+X19jb3df c3RyaW5nKCk7CisgICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmluZyYmKSBu b2V4Y2VwdDsKKyAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShfX2Nvd19z dHJpbmcmJikgbm9leGNlcHQ7CisgICAgY29uc3QgY2hhciogY19zdHIoKSBj b25zdCBub2V4Y2VwdDsKKyAgfTsKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0Vf VkVSU0lPTgorfQorI2VuZGlmCisKKyNkZWZpbmUgX0dMSUJDWFhfREVGSU5F X1NUREVYQ0VQVF9JTlNUQU5USUFUSU9OUyAxCiAjaW5jbHVkZSA8c3RkZXhj ZXB0PgogI2luY2x1ZGUgPHN5c3RlbV9lcnJvcj4KLSN1bmRlZiBfX2Nvd19z dHJpbmcKIAogbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRl ZmF1bHQpCiB7CkBAIC0xMTQsMzAgKzE1NSwxNiBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogICAvLyBDb252ZXJ0aW5nIGNvbnN0cnVj dG9yIGZyb20gQ09XIHN0ZDo6c3RyaW5nIHRvIFNTTyBzdHJpbmcuCiAgIF9f c3NvX3N0cmluZzo6X19zc29fc3RyaW5nKGNvbnN0IHN0cmluZyYgcykKICAg OiBfX3Nzb19zdHJpbmcocy5jX3N0cigpLCBzLmxlbmd0aCgpKSB7IH0KKyNl bmRpZgogCi0gIC8vIFJlZGVmaW5lIF9fY293X3N0cmluZyBzbyB0aGF0IHdl IGNhbiBkZWZpbmUgYW5kIGV4cG9ydCBpdHMgbWVtYmVycwotICAvLyBpbiB0 ZXJtcyBvZiB0aGUgQ09XIHN0ZDo6c3RyaW5nLgotICBzdHJ1Y3QgX19jb3df c3RyaW5nCi0gIHsKLSAgICB1bmlvbiB7Ci0gICAgICBjb25zdCBjaGFyKiBf TV9wOwotICAgICAgY2hhciBfTV9ieXRlc1tzaXplb2YoX01fcCldOwotICAg ICAgc3RkOjpzdHJpbmcgX01fc3RyOwotICAgIH07Ci0KLSAgICBfX2Nvd19z dHJpbmcoKTsKLSAgICBfX2Nvd19zdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm IHMpOwotICAgIF9fY293X3N0cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IG4p OwotICAgIF9fY293X3N0cmluZyhjb25zdCBfX2Nvd19zdHJpbmcmKSBub2V4 Y2VwdDsKLSAgICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShjb25zdCBfX2Nv d19zdHJpbmcmKSBub2V4Y2VwdDsKLSAgICB+X19jb3dfc3RyaW5nKCk7Ci0g ICAgX19jb3dfc3RyaW5nKF9fY293X3N0cmluZyYmKSBub2V4Y2VwdDsKLSAg ICBfX2Nvd19zdHJpbmcmIG9wZXJhdG9yPShfX2Nvd19zdHJpbmcmJikgbm9l eGNlcHQ7Ci0gIH07Ci0KKyNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgfHwg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICBfX2Nvd19zdHJpbmc6Ol9fY293 X3N0cmluZygpIDogX01fc3RyKCkgeyB9CiAKKyNpZiAhX0dMSUJDWFhfVVNF X0NYWDExX0FCSQogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmluZyhjb25z dCBzdGQ6OnN0cmluZyYgcykgOiBfTV9zdHIocykgeyB9CisjZW5kaWYKKwor ICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmluZyhjb25zdCBjaGFyKiBzKSA6 IF9NX3N0cihzKSB7IH0KIAogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0cmlu Zyhjb25zdCBjaGFyKiBzLCBzaXplX3QgbikgOiBfTV9zdHIocywgbikgeyB9 CiAKQEAgLTE1MSw3ICsxNzgsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0VfVkVSU0lPTgogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIF9fY293 X3N0cmluZzo6fl9fY293X3N0cmluZygpIHsgX01fc3RyLn5iYXNpY19zdHJp bmcoKTsgfQorICBfX2Nvd19zdHJpbmc6On5fX2Nvd19zdHJpbmcoKSB7IF9N X3N0ci5+Y293c3RyKCk7IH0KIAogICBfX2Nvd19zdHJpbmc6Ol9fY293X3N0 cmluZyhfX2Nvd19zdHJpbmcmJiBzKSBub2V4Y2VwdAogICA6IF9NX3N0cihz dGQ6Om1vdmUocy5fTV9zdHIpKSB7IH0KQEAgLTE2MywxMiArMTkwLDE3IEBA IF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcmV0dXJu ICp0aGlzOwogICB9CiAKLSAgc3RhdGljX2Fzc2VydChzaXplb2YoX19jb3df c3RyaW5nKSA9PSBzaXplb2Yoc3RkOjpzdHJpbmcpLAorICBjb25zdCBjaGFy KgorICBfX2Nvd19zdHJpbmc6OmNfc3RyKCkgY29uc3Qgbm9leGNlcHQKKyAg eyByZXR1cm4gX01fc3RyLmNfc3RyKCk7IH0KKworICBzdGF0aWNfYXNzZXJ0 KHNpemVvZihfX2Nvd19zdHJpbmcpID09IHNpemVvZihjb3dzdHIpLAogICAg ICAgICAgICAgICAgICJzaXplb2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2Vk Iik7Ci0gIHN0YXRpY19hc3NlcnQoYWxpZ25vZihfX2Nvd19zdHJpbmcpID09 IGFsaWdub2Yoc3RkOjpzdHJpbmcpLAorICBzdGF0aWNfYXNzZXJ0KGFsaWdu b2YoX19jb3dfc3RyaW5nKSA9PSBhbGlnbm9mKGNvd3N0ciksCiAgICAgICAg ICAgICAgICAgImFsaWdub2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2VkIik7 Ci0jZW5kaWYKKyNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAK KyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgLy8gUmV0dXJuIGVy cm9yX2NhdGVnb3J5OjptZXNzYWdlKCkgYXMgYW4gU1NPIHN0cmluZwogICBf X3Nzb19zdHJpbmcKICAgZXJyb3JfY2F0ZWdvcnk6Ol9NX21lc3NhZ2UoaW50 IGkpIGNvbnN0CkBAIC0xNzYsMTAgKzIwOCwxMiBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIHN0cmluZyBtc2cgPSB0aGlzLT5t ZXNzYWdlKGkpOwogICAgIHJldHVybiB7bXNnLmNfc3RyKCksIG1zZy5sZW5n dGgoKX07CiAgIH0KKyNlbmRpZgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNF X1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCiAKKyNpZiAhIF9HTElCQ1hYX1VT RV9DWFgxMV9BQkkKIC8vIFN1cHBvcnQgZm9yIHRoZSBUcmFuc2FjdGlvbmFs IE1lbW9yeSBUUyAoTjQ1MTQpLgogLy8KIC8vIGxvZ2ljX2Vycm9yIGFuZCBy dW50aW1lX2Vycm9yIGJvdGggY2FycnkgYSBtZXNzYWdlIGluIHRoZSBmb3Jt IG9mIGEgQ09XCkBAIC00NjMsMyArNDk3LDQgQEAgQ1RPUkRUT1IoMTV1bmRl cmZsb3dfZXJyb3IsIHN0ZDo6dW5kZXJmbG93X2Vycm9yLCBydW50aW1lX2Vy cm9yKQogCiAjZW5kaWYgIC8vIF9HTElCQ1hYX1VTRV9DOTlfU1RESU5UCiAj ZW5kaWYgIC8vIF9HTElCQ1hYX1VTRV9XRUFLX1JFRgorI2VuZGlmICAvLyAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvY293LXN0cmluZy1pbnN0LmNjIGIvbGlic3RkYysr LXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWluc3QuY2MKaW5kZXggNWEyYjhm ZmE1NjguLjU3YzI4MTI5ZjAwIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv c3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYworKysgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYwpAQCAtMjksMTAgKzI5 LDcgQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCiAjaW5j bHVkZSAic3RyaW5nLWluc3QuY2MiCiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9E VUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBjb21w aWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCi0KKyNpZiBf R0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAjaW5jbHVkZSA8cmFuZG9tPgogCiBuYW1lc3BhY2Ugc3RkIF9HTElC Q1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKQEAgLTQ1LDMgKzQyLDQgQEAgbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiAgIHJh bmRvbV9kZXZpY2U6Ol9NX2luaXRfcHJldHIxKGNvbnN0IHN0ZDo6c3RyaW5n JiB0b2tlbikKICAgeyBfTV9pbml0KHRva2VuLmNfc3RyKCksIHRva2VuLmxl bmd0aCgpKTsgfQogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWlvLWluc3Qu Y2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW8taW5z dC5jYwppbmRleCA1MDViYzlkZDM4NC4uOWFiYzliNDdlNTIgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1pby1pbnN0 LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1p by1pbnN0LmNjCkBAIC0zMCwxMCArMzAsNyBAQAogI2luY2x1ZGUgPGlzdHJl YW0+CiAjaW5jbHVkZSA8b3N0cmVhbT4KIAotI2lmICEgX0dMSUJDWFhfVVNF X0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNv bXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYKLQorI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFtZXNwYWNlIHN0ZCBfR0xJ QkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgpAQCAtNTcsMyArNTQsNCBAQCBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisjZW5kaWYKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5j YyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5j YwppbmRleCBjZTUzM2VhOGZhNS4uZDNjM2IwYzI5N2UgMTAwNjQ0Ci0tLSBh L2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmctaW5zdC5jYwor KysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWluc3Qu Y2MKQEAgLTI5LDEyICsyOSw5IEBACiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkgMAogI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiAKKyNp ZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpZmRlZiBfR0xJQkNYWF9V U0VfV0NIQVJfVAogI2RlZmluZSBDIHdjaGFyX3QKICNpbmNsdWRlICJzdHJp bmctaW5zdC5jYyIKLQotI2lmICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCi0j IGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGZvciB0 aGlzIGNvbmZpZ3VyYXRpb24uCiAjZW5kaWYKLQogI2VuZGlmCmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlvLWlu c3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlv LWluc3QuY2MKaW5kZXggNDkzOTRiMGUyNzUuLjBlNmNjNDkwZmE0IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy13c3RyaW5nLWlv LWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0 cmluZy1pby1pbnN0LmNjCkBAIC0yOSwxNCArMjksMTEgQEAKICNkZWZpbmUg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytj b25maWcuaD4KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogI2lm ZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCiAjaW5jbHVkZSA8b3N0cmVhbT4K ICNpbmNsdWRlIDxpc3RyZWFtPgogCi0jaWYgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29tcGls ZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgotCiBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC02MSwzICs1OCw0IEBA IF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiBfR0xJQkNYWF9F TkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCiAjZW5kaWYK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9j eHgxMS1oYXNoX3RyMS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtaGFzaF90cjEuY2MKaW5kZXggMjJhNzY4NWVlY2EuLjBiOWZjMjhjZWFh IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWhh c2hfdHIxLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEt aGFzaF90cjEuY2MKQEAgLTI1LDkgKzI1LDcgQEAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAxCiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaWYg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNo b3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4K LSNlbmRpZgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogI2luY2x1 ZGUgPHRyMS9mdW5jdGlvbmFsPgogbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9W SVNJQklMSVRZKGRlZmF1bHQpCkBAIC01NywzICs1NSw1IEBAIG5hbWVzcGFj ZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogI2VuZGlmCiAg IH0KIH0KKworI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtaW9zX2Zh aWx1cmUuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWlvc19m YWlsdXJlLmNjCmluZGV4IGUwZTgxNmI0NTNiLi40NmJmZGEzMjlkZSAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1pb3NfZmFp bHVyZS5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWlv c19mYWlsdXJlLmNjCkBAIC0zOCw5ICszOCw3IEBACiAjIGRlZmluZSBfKG1z Z2lkKSAgIChtc2dpZCkKICNlbmRpZgogCi0jaWYgISBfR0xJQkNYWF9VU0Vf RFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29t cGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgorI2lmIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogbmFtZXNwYWNlIHN0ZCBfR0xJQkNY WF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CkBAIC02Miw3ICs2MCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIGlvc19iYXNlOjpm YWlsdXJlOjp3aGF0KCkgY29uc3QgdGhyb3coKQogICB7IHJldHVybiBydW50 aW1lX2Vycm9yOjp3aGF0KCk7IH0KIAotI2lmIF9fY3BwX3J0dGkKKyNpZiBf R0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgX19jcHBfcnR0aQogICAvLyBUaGVz ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gc3JjL2MrKzk4L2lvc19mYWls dXJlLmNjCiAgIGV4dGVybiB2b2lkIF9fY29uc3RydWN0X2lvc19mYWlsdXJl KHZvaWQqLCBjb25zdCBjaGFyKik7CiAgIGV4dGVybiB2b2lkIF9fZGVzdHJv eV9pb3NfZmFpbHVyZSh2b2lkKik7CkBAIC0xMTgsNyArMTE2LDcgQEAgX0dM SUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAvLyBPdGhlcndp c2UgcHJvY2VlZCBhcyBub3JtYWwgdG8gc2VlIGlmIHRoZSBoYW5kbGVyIG1h dGNoZXMuCiAgICAgcmV0dXJuIF9fY2xhc3NfdHlwZV9pbmZvOjpfX2RvX3Vw Y2FzdChkc3RfdHlwZSwgb2JqX3B0cik7CiAgIH0KLSNlbHNlIC8vICEgX19j cHBfcnR0aQorI2Vsc2UgLy8gISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgfHwg ISBfX2NwcF9ydHRpCiAgIHVzaW5nIF9faW9zX2ZhaWx1cmUgPSBpb3M6OmZh aWx1cmU7CiAjZW5kaWYKIApAQCAtMTM2LDMgKzEzNCw1IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvY3h4MTEtbG9jYWxlLWluc3QuY2MgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2N4eDExLWxvY2FsZS1pbnN0LmNjCmluZGV4IDk0YjE4 MTg4NmQzLi5lMjFjYzU1NDhiZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9jeHgxMS1sb2NhbGUtaW5zdC5jYworKysgYi9saWJzdGRj KystdjMvc3JjL2MrKzExL2N4eDExLWxvY2FsZS1pbnN0LmNjCkBAIC0yNywx MSArMjcsNSBAQAogLy8gRmFjZXQgaW5zdGFudGlhdGlvbnMgdXNpbmcgbmV3 IEFCSSBzdHJpbmdzLgogCiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgMQotI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0jaWYgISBfR0xJ QkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBu b3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRp ZgogCi0jZGVmaW5lIEMgY2hhcgotI2RlZmluZSBDX2lzX2NoYXIKLSMgaW5j bHVkZSAibG9jYWxlLWluc3QuY2MiCisjaW5jbHVkZSAibG9jYWxlLWluc3Qu Y2MiCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDEx LXN0ZGV4Y2VwdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEt c3RkZXhjZXB0LmNjCmluZGV4IDc0YzA3MGMwNDM5Li4yNTIzNmE3OTk1MCAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1zdGRl eGNlcHQuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1z dGRleGNlcHQuY2MKQEAgLTI5LDkgKzI5LDcgQEAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAxCiAjaW5jbHVkZSA8c3RkZXhjZXB0PgogCi0j aWYgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxl IHNob3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlv bi4KLSNlbmRpZgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CkBA IC03MCw5ICs2OCwxMyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVS U0lPTgogICB1bmRlcmZsb3dfZXJyb3I6OnVuZGVyZmxvd19lcnJvcihjb25z dCBzdHJpbmcmIF9fYXJnKQogICA6IHJ1bnRpbWVfZXJyb3IoX19hcmcpIHsg fQogCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAgIC8vIENvbnZlcnRp bmcgY29uc3RydWN0b3IgZnJvbSBBQkktdGFnZ2VkIHN0ZDo6c3RyaW5nIHRv IENPVyBzdHJpbmcuCiAgIF9fY293X3N0cmluZzo6X19jb3dfc3RyaW5nKGNv bnN0IHN0cmluZyYgcykKICAgOiBfX2Nvd19zdHJpbmcocy5jX3N0cigpLCBz Lmxlbmd0aCgpKSB7IH0KKyNlbmRpZgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv c3JjL2MrKzExL2N4eDExLXdsb2NhbGUtaW5zdC5jYyBiL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvY3h4MTEtd2xvY2FsZS1pbnN0LmNjCmluZGV4IDExZmIx NWQ5NjAyLi5mYWZmMjM2YzFkZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9jeHgxMS13bG9jYWxlLWluc3QuY2MKKysrIGIvbGlic3Rk YysrLXYzL3NyYy9jKysxMS9jeHgxMS13bG9jYWxlLWluc3QuY2MKQEAgLTI4 LDExICsyOCwxMCBAQAogCiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgMQogI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0jaWYgISBfR0xJ QkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBu b3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRp ZgogCi0jaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSNkZWZpbmUgQyB3 Y2hhcl90Ci0jaW5jbHVkZSAibG9jYWxlLWluc3QuY2MiCisjaWYgX0dMSUJD WFhfVVNFX0NYWDExX0FCSQorIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJf VAorIyAgZGVmaW5lIEMgd2NoYXJfdAorIyAgaW5jbHVkZSAibG9jYWxlLWlu c3QuY2MiCisjIGVuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvbG9jYWxlLWluc3QtbnVtZXJpYy5oIGIvbGlic3Rk YysrLXYzL3NyYy9jKysxMS9sb2NhbGUtaW5zdC1udW1lcmljLmgKaW5kZXgg YjkxN2ZlNTgwMmUuLjIxMWUxOWM3ZmY5IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LW51bWVyaWMuaAorKysgYi9s aWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LW51bWVyaWMuaApA QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJ U0lCSUxJVFkoZGVmYXVsdCkKIHsKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJ QkNYWF9VU0VfRFVBTF9BQkkKIC8vIHVzZV9mYWNldCBhbmQgaGFzX2ZhY2V0 IGluc3RhbnRpYXRpb25zCiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMo bnVtX2dldDxDPik7CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobnVt X3B1dDxDPik7CkBAIC0zOCw3ICszOCw3IEBAIElOU1RBTlRJQVRFX0ZBQ0VU X0FDQ0VTU09SUyhudW1fcHV0PEM+KTsKIAogX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX0xEQkwKIAotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQor I2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VT RV9EVUFMX0FCSQogICB0ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0PEMsIGlzdHJl YW1idWZfaXRlcmF0b3I8Qz4gPjsKICAgdGVtcGxhdGUgY2xhc3MgbnVtX3B1 dDxDLCBvc3RyZWFtYnVmX2l0ZXJhdG9yPEM+ID47CiAjZW5kaWYKQEAgLTg4 LDcgKzg4LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0xEQkwKIAkJ ICAgdW5zaWduZWQgbG9uZyBsb25nJikgY29uc3Q7CiAjZW5kaWYKIAotI2lm ICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNF X0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICAvLyBu dW1fcHV0IG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZXMKICAgdGVtcGxhdGUK ICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPEM+CmRpZmYgLS1naXQgYS9saWJz dGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1pbnN0LmNjIGIvbGlic3RkYysr LXYzL3NyYy9jKysxMS9sb2NhbGUtaW5zdC5jYwppbmRleCAzYTVjNjg0NGYx Yi4uZWUzMzc1ZDcwNDAgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMv YysrMTEvbG9jYWxlLWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9j KysxMS9sb2NhbGUtaW5zdC5jYwpAQCAtMzUsOCArMzUsMTcgQEAKICMgZGVm aW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAogI2VuZGlmCiAKLSNpbmNs dWRlIDxsb2NhbGU+CisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBk ZWZpbmUgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJIDEKKyNlbHNlCisjIGRl ZmluZSBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkgMAorI2VuZGlmCisKKyNp bmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgogCisjaWYgX0dMSUJDWFhfQlVJ TERfQ1hYMTFfQUJJID09IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKworI2lu Y2x1ZGUgPGxvY2FsZT4KIC8vIEluc3RhbnRpYXRpb24gY29uZmlndXJhdGlv bi4KICNpZm5kZWYgQwogIyBkZWZpbmUgQyBjaGFyCkBAIC01Miw3ICs2MSw3 IEBAIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0 KQogX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogICAvLyBt b25leXB1bmN0LCBtb25leV9nZXQsIGFuZCBtb25leV9wdXQKLSNpZiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgdGVtcGxhdGUg c3RydWN0IF9fbW9uZXlwdW5jdF9jYWNoZTxDLCBmYWxzZT47CiAgIHRlbXBs YXRlIHN0cnVjdCBfX21vbmV5cHVuY3RfY2FjaGU8QywgdHJ1ZT47CiAjZW5k aWYKQEAgLTY0LDcgKzczLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X0NYWDExCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDExCiAKICAgLy8g bnVtcHVuY3QsIG51bXB1bmN0X2J5bmFtZSwgbnVtX2dldCwgYW5kIG51bV9w dXQKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkK ICAgdGVtcGxhdGUgc3RydWN0IF9fbnVtcHVuY3RfY2FjaGU8Qz47CiAjZW5k aWYKIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9DWFgxMQpAQCAtNzMsNyAr ODIsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEKIF9HTElC Q1hYX0VORF9OQU1FU1BBQ0VfQ1hYMTEKIAogICAvLyB0aW1lX2dldCBhbmQg dGltZV9wdXQKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVB TF9BQkkKICAgdGVtcGxhdGUgY2xhc3MgX190aW1lcHVuY3Q8Qz47CiAgIHRl bXBsYXRlIHN0cnVjdCBfX3RpbWVwdW5jdF9jYWNoZTxDPjsKICAgdGVtcGxh dGUgY2xhc3MgdGltZV9wdXQ8Qywgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxDPiA+ OwpAQCAtOTcsMTMgKzEwNiwxMyBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNF X0NYWDExCiAgIGN0eXBlX2J5bmFtZTxDPjo6Y3R5cGVfYnluYW1lKGNvbnN0 IHN0cmluZyYgX19zLCBzaXplX3QgX19yZWZzKQogICA6IGN0eXBlX2J5bmFt ZShfX3MuY19zdHIoKSwgX19yZWZzKSB7IH0KIAotI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8 fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBpbmxpbmUgdGVtcGxhdGUg Y2xhc3MgX19jdHlwZV9hYnN0cmFjdF9iYXNlPEM+OwogICB0ZW1wbGF0ZSBj bGFzcyBjdHlwZV9ieW5hbWU8Qz47CiAjZW5kaWYKIAogICAvLyBjb2RlY3Z0 Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAg IGlubGluZSB0ZW1wbGF0ZSBjbGFzcyBfX2NvZGVjdnRfYWJzdHJhY3RfYmFz ZTxDLCBjaGFyLCBtYnN0YXRlX3Q+OwogICB0ZW1wbGF0ZSBjbGFzcyBjb2Rl Y3Z0X2J5bmFtZTxDLCBjaGFyLCBtYnN0YXRlX3Q+OwogI2Vsc2UKQEAgLTEx OCw3ICsxMjcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEK IF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfQ1hYMTEKIAogLy8gdXNlX2ZhY2V0 IGFuZCBoYXNfZmFjZXQgaW5zdGFudGlhdGlvbnMKLSNpZiAhIF9HTElCQ1hY X1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkg fHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIElOU1RBTlRJQVRFX0ZBQ0VU X0FDQ0VTU09SUyhjdHlwZTxDPik7CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NF U1NPUlMoY29kZWN2dDxDLCBjaGFyLCBtYnN0YXRlX3Q+KTsKICNlbmRpZgpA QCAtMTI3LDE0ICsxMzYsMTQgQEAgSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNT T1JTKG51bXB1bmN0PEM+KTsKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09S Uyhtb25leXB1bmN0PEMsIGZhbHNlPik7CiAvLyBObyBleHBsaWNpdCBpbnN0 YW50aWF0aW9uIG9mIGhhc19mYWNldDxtb25leXB1bmN0PEMsIHRydWU+PiBm b3Igc29tZSByZWFzb24uCiBJTlNUQU5USUFURV9VU0VfRkFDRVQgICAgICAo bW9uZXlwdW5jdDxDLCB0cnVlPik7Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NP UlMoX190aW1lcHVuY3Q8Qz4pOwogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNT T1JTKHRpbWVfcHV0PEM+KTsKICNlbmRpZgogSU5TVEFOVElBVEVfRkFDRVRf QUNDRVNTT1JTKHRpbWVfZ2V0PEM+KTsKIElOU1RBTlRJQVRFX0ZBQ0VUX0FD Q0VTU09SUyhtZXNzYWdlczxDPik7CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgLy8gbG9jYWxlIGZ1bmN0aW9ucy4K ICAgdGVtcGxhdGUKICAgICBDKgpAQCAtMTYzLDMgKzE3Miw1IEBAIF9HTElC Q1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogI2lmIGRlZmluZWQgX0dMSUJD WFhfTE9OR19ET1VCTEVfQ09NUEFUICYmICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQogI2luY2x1ZGUgImNvbXBhdGliaWxpdHktbGRibC1mYWNldHMtYWxp YXNlcy5oIgogI2VuZGlmIC8vIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBB VAorCisjZW5kaWYgLy8gIF9HTElCQ1hYX0JVSUxEX0NYWDExX0FCSSA9PSBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvc3JjL2MrKzExL3N0cmluZy1pbnN0LmNjIGIvbGlic3RkYysrLXYzL3Ny Yy9jKysxMS9zdHJpbmctaW5zdC5jYwppbmRleCBkZGFhZmMwODE5OS4uZjI5 MTc2ZGZjODggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEv c3RyaW5nLWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9z dHJpbmctaW5zdC5jYwpAQCAtMzUsNiArMzUsMTIgQEAKICMgZGVmaW5lIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgMQogI2VuZGlmCiAKKyNpZiBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCisjIGRlZmluZSBfR0xJQkNYWF9ERUZJTklOR19D WFgxMV9BQklfSU5TVEFOVElBVElPTlMgMQorI2Vsc2UKKyMgZGVmaW5lIF9H TElCQ1hYX0RFRklOSU5HX0NYWDExX0FCSV9JTlNUQU5USUFUSU9OUyAwCisj ZW5kaWYKKwogLy8gUHJldmVudCB0aGUgYmFzaWNfc3RyaW5nKGNvbnN0IF9D aGFyVCosIGNvbnN0IF9BbGxvYyYpIGFuZAogLy8gYmFzaWNfc3RyaW5nKHNp emVfdHlwZSwgX0NoYXJULCBjb25zdCBfQWxsb2MmKSBjb25zdHJ1Y3RvcnMg ZnJvbSBiZWluZwogLy8gcmVwbGFjZWQgYnkgY29uc3RyYWluZWQgZnVuY3Rp b24gdGVtcGxhdGVzLCBzbyB0aGF0IHdlIGluc3RhbnRpYXRlIHRoZQpAQCAt NDUsNiArNTEsMjkgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2lmIF9H TElCQ1hYX1VTRV9EVUFMX0FCSSB8fCBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorCisjaWYgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQorIyBpbmNsdWRlIDxiaXRzL2Nvd19zdHJpbmcuaD4KK3R5cGVk ZWYgc3RkOjpfX3N0ZF9jb3dfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFp dHM8Y2hhcj4sCisJCQkgICAgICBzdGQ6OmFsbG9jYXRvcjxjaGFyPj4gY293 c3RyOworI2Vsc2UKK3R5cGVkZWYgc3RkOjpzdHJpbmcgY293c3RyOworI2Vu ZGlmCisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0ZDo6X19jb3dfc3RyaW5n KSA9PSBzaXplb2YoY293c3RyKSwKKwkgICAgICAic2l6ZW9mKHN0ZDo6c3Ry aW5nKSBoYXMgY2hhbmdlZCIpOworc3RhdGljX2Fzc2VydChhbGlnbm9mKHN0 ZDo6X19jb3dfc3RyaW5nKSA9PSBhbGlnbm9mKGNvd3N0ciksCisJICAgICAg ImFsaWdub2Yoc3RkOjpzdHJpbmcpIGhhcyBjaGFuZ2VkIik7CisjZW5kaWYg Ly8gX0dMSUJDWFhfVVNFX0RVQUxfQUJJIHx8IF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKKworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgJiYgISBfR0xJ QkNYWF9ERUZJTklOR19DWFgxMV9BQklfSU5TVEFOVElBVElPTlMKKyMgZGVm aW5lIF9HTElCQ1hYX0RFRklOSU5HX0NPV19TVFJJTkdfSU5TVEFOVElBVElP TlMgMQorIyBpbmNsdWRlIDxiaXRzL2Nvd19zdHJpbmcuaD4KKyMgZGVmaW5l IGJhc2ljX3N0cmluZyBfX3N0ZF9jb3dfc3RyaW5nCisjZW5kaWYKKwogLy8g SW5zdGFudGlhdGlvbiBjb25maWd1cmF0aW9uLgogI2lmbmRlZiBDCiAjIGRl ZmluZSBDIGNoYXIKQEAgLTU0LDEyICs4MywxNCBAQCBuYW1lc3BhY2Ugc3Rk IF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKLSAgdHlwZWRlZiBiYXNpY19zdHJp bmc8Qz4gUzsKK3R5cGVkZWYgYmFzaWNfc3RyaW5nPEMsIHN0ZDo6Y2hhcl90 cmFpdHM8Qz4sIHN0ZDo6YWxsb2NhdG9yPEM+PiBTOwogCi0gIHRlbXBsYXRl IGNsYXNzIGJhc2ljX3N0cmluZzxDPjsKKyAgdGVtcGxhdGUgY2xhc3MgYmFz aWNfc3RyaW5nPEMsIHN0ZDo6Y2hhcl90cmFpdHM8Qz4sIHN0ZDo6YWxsb2Nh dG9yPEM+PjsKKyNpZiAhIF9HTElCQ1hYX0RFRklOSU5HX0NPV19TVFJJTkdf SU5TVEFOVElBVElPTlMKICAgdGVtcGxhdGUgUyBvcGVyYXRvcisoY29uc3Qg QyosIGNvbnN0IFMmKTsKICAgdGVtcGxhdGUgUyBvcGVyYXRvcisoQywgY29u c3QgUyYpOwogICB0ZW1wbGF0ZSBTIG9wZXJhdG9yKyhjb25zdCBTJiwgY29u c3QgUyYpOworI2VuZGlmCiAKICAgLy8gT25seSBvbmUgdGVtcGxhdGUga2V5 d29yZCBhbGxvd2VkIGhlcmUuCiAgIC8vIFNlZSBjb3JlIGlzc3VlICM0NiAo TkFEKQpAQCAtNzMsNyArMTA0LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KICAgdGVtcGxhdGUKICAgICBTOjpiYXNpY19zdHJpbmco Uzo6aXRlcmF0b3IsIFM6Oml0ZXJhdG9yLCBjb25zdCBhbGxvY2F0b3I8Qz4m KTsKIAotI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJICYmICEgX0dMSUJDWFhfREVGSU5JTkdfQ09XX1NU UklOR19JTlNUQU5USUFUSU9OUwogICB0ZW1wbGF0ZQogICAgIHZvaWQKICAg ICBTOjpfTV9jb25zdHJ1Y3QoUzo6aXRlcmF0b3IsIFM6Oml0ZXJhdG9yLCBm b3J3YXJkX2l0ZXJhdG9yX3RhZyk7CkBAIC05MSw3ICsxMjIsNyBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIHZvaWQKICAgICBT OjpfTV9jb25zdHJ1Y3QoY29uc3QgQyosIGNvbnN0IEMqLCBmb3J3YXJkX2l0 ZXJhdG9yX3RhZyk7CiAKLSNlbHNlIC8vICFfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCisjZWxzZSAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgX0dM SUJDWFhfREVGSU5JTkdfQ09XX1NUUklOR19JTlNUQU5USUFUSU9OUwogCiAg IHRlbXBsYXRlCiAgICAgQyoKQEAgLTExMSw2ICsxNDIsNyBAQCBfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogX0dMSUJDWFhfRU5EX05BTUVT UEFDRV9WRVJTSU9OCiB9IC8vIG5hbWVzcGFjZQogCisjaWYgISBfR0xJQkNY WF9ERUZJTklOR19DT1dfU1RSSU5HX0lOU1RBTlRJQVRJT05TCiBuYW1lc3Bh Y2UgX19nbnVfY3h4IF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsK IF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC0xMjEsMyAr MTUzLDQgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAog X0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiB9IC8vIG5hbWVzcGFj ZQorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzEx L3dsb2NhbGUtaW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvd2xv Y2FsZS1pbnN0LmNjCmluZGV4IGRjMmQyMzQ5MDU1Li5iNWM3OThiZmU2NCAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS93bG9jYWxlLWlu c3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS93bG9jYWxlLWlu c3QuY2MKQEAgLTMwLDcgKzMwLDkgQEAKICNkZWZpbmUgX0dMSUJDWFhfVVNF X0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KIAot I2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0jZGVmaW5lIEMgd2NoYXJf dAotI2luY2x1ZGUgImxvY2FsZS1pbnN0LmNjIgotI2VuZGlmIC8vIF9HTElC Q1hYX1VTRV9XQ0hBUl9UCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CisjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCisjICBkZWZpbmUgQyB3 Y2hhcl90CisjICBpbmNsdWRlICJsb2NhbGUtaW5zdC5jYyIKKyMgZW5kaWYg Ly8gX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMr Ky12My9zcmMvYysrOTgvTWFrZWZpbGUuYW0KaW5kZXggMjg0ZmZkYTM0NDMu LmViMjQzMjVhZjY3IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L01ha2VmaWxlLmFtCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgv TWFrZWZpbGUuYW0KQEAgLTkwLDEzICs5MCw2IEBAIGMrK2xvY2FsZS5jYzog JHtnbGliY3h4X3NyY2Rpcn0vJChDTE9DQUxFX0NDKQogYmFzaWNfZmlsZS5j YzogJHtnbGliY3h4X3NyY2Rpcn0vJChCQVNJQ19GSUxFX0NDKQogCSQoTE5f UykgJHtnbGliY3h4X3NyY2Rpcn0vJChCQVNJQ19GSUxFX0NDKSAuLyRAIHx8 IHRydWUKIAotaWYgRU5BQkxFX0RVQUxfQUJJCi1jeHgxMV9hYmlfc291cmNl cyA9IFwKLQljb3ctaXN0cmVhbS1zdHJpbmcuY2MKLWVsc2UKLWN4eDExX2Fi aV9zb3VyY2VzID0KLWVuZGlmCi0KIGlmIEVOQUJMRV9FWFRFUk5fVEVNUExB VEUKICMgWFRFTVBMQVRFX0ZMQUdTID0gLWZuby1pbXBsaWNpdC10ZW1wbGF0 ZXMKIGluc3Rfc291cmNlcyA9IFwKQEAgLTExOCw2ICsxMTEsNyBAQCBzb3Vy Y2VzID0gXAogCW10X2FsbG9jYXRvci5jYyBcCiAJY29kZWN2dC5jYyBcCiAJ Y29tcGxleF9pby5jYyBcCisJY293LWlzdHJlYW0tc3RyaW5nLmNjIFwKIAln bG9iYWxzX2lvLmNjIFwKIAloYXNoX3RyMS5jYyBcCiAJaGFzaHRhYmxlX3Ry MS5jYyBcCkBAIC0xNDIsNyArMTM2LDYgQEAgc291cmNlcyA9IFwKIAlpc3Ry ZWFtLXN0cmluZy5jYyBcCiAJc3RyZWFtYnVmLmNjIFwKIAl2YWxhcnJheS5j YyBcCi0JJHtjeHgxMV9hYmlfc291cmNlc30gXAogCSR7aG9zdF9zb3VyY2Vz fSBcCiAJJHtob3N0X3NvdXJjZXNfZXh0cmF9CiAKZGlmZiAtLWdpdCBhL2xp YnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZpbGUuaW4gYi9saWJzdGRjKyst djMvc3JjL2MrKzk4L01ha2VmaWxlLmluCmluZGV4IGExMDBkZjc3YTZkLi5k MmVkMmEyMjFmMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5 OC9NYWtlZmlsZS5pbgorKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L01h a2VmaWxlLmluCkBAIC0xMjEsMzEgKzEyMSwzMCBAQCBDT05GSUdfQ0xFQU5f RklMRVMgPQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KIExUTElCUkFS SUVTID0gJChub2luc3RfTFRMSUJSQVJJRVMpCiBsaWJjX185OGNvbnZlbmll bmNlX2xhX0xJQkFERCA9Ci1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAYW1fX29i amVjdHNfMSA9IGNvdy1pc3RyZWFtLXN0cmluZy5sbwotQEVOQUJMRV9EVUFM X0FCSV9UUlVFQGFtX19vYmplY3RzXzIgPSBjb2xsYXRlX21lbWJlcnNfY293 LmxvIFwKK0BFTkFCTEVfRFVBTF9BQklfVFJVRUBhbV9fb2JqZWN0c18xID0g Y29sbGF0ZV9tZW1iZXJzX2Nvdy5sbyBcCiBARU5BQkxFX0RVQUxfQUJJX1RS VUVACW1lc3NhZ2VzX21lbWJlcnNfY293LmxvIFwKIEBFTkFCTEVfRFVBTF9B QklfVFJVRUAJbW9uZXRhcnlfbWVtYmVyc19jb3cubG8gXAogQEVOQUJMRV9E VUFMX0FCSV9UUlVFQAludW1lcmljX21lbWJlcnNfY293LmxvCi1hbV9fb2Jq ZWN0c18zID0gJChhbV9fb2JqZWN0c18yKSBjb2RlY3Z0X21lbWJlcnMubG8g Y29sbGF0ZV9tZW1iZXJzLmxvIFwKK2FtX19vYmplY3RzXzIgPSAkKGFtX19v YmplY3RzXzEpIGNvZGVjdnRfbWVtYmVycy5sbyBjb2xsYXRlX21lbWJlcnMu bG8gXAogCW1lc3NhZ2VzX21lbWJlcnMubG8gbW9uZXRhcnlfbWVtYmVycy5s byBudW1lcmljX21lbWJlcnMubG8gXAogCXRpbWVfbWVtYmVycy5sbwotQEVO QUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUBhbV9fb2JqZWN0c180ID0gYWxs b2NhdG9yLWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJV RUBhbV9fb2JqZWN0c18zID0gYWxsb2NhdG9yLWluc3QubG8gXAogQEVOQUJM RV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY29uY2VwdC1pbnN0LmxvIGV4dC1p bnN0LmxvIFwKIEBFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACW1pc2Mt aW5zdC5sbwotYW1fX29iamVjdHNfNSA9IHBhcmFsbGVsX3NldHRpbmdzLmxv Ci1hbV9fb2JqZWN0c182ID0gYmFzaWNfZmlsZS5sbyBjKytsb2NhbGUubG8g JChhbV9fb2JqZWN0c180KSBcCi0JJChhbV9fb2JqZWN0c181KQotYW1fX29i amVjdHNfNyA9IGJpdG1hcF9hbGxvY2F0b3IubG8gcG9vbF9hbGxvY2F0b3Iu bG8gbXRfYWxsb2NhdG9yLmxvIFwKLQljb2RlY3Z0LmxvIGNvbXBsZXhfaW8u bG8gZ2xvYmFsc19pby5sbyBoYXNoX3RyMS5sbyBcCi0JaGFzaHRhYmxlX3Ry MS5sbyBpb3NfZmFpbHVyZS5sbyBpb3NfaW5pdC5sbyBpb3NfbG9jYWxlLmxv IFwKLQlsaXN0LmxvIGxpc3QtYXV4LmxvIGxpc3QtYXV4LTIubG8gbGlzdF9h c3NvY2lhdGVkLmxvIFwKLQlsaXN0X2Fzc29jaWF0ZWQtMi5sbyBsb2NhbGUu bG8gbG9jYWxlX2luaXQubG8gbG9jYWxlX2ZhY2V0cy5sbyBcCi0JbG9jYWxl bmFtZS5sbyBtYXRoX3N0dWJzX2Zsb2F0LmxvIG1hdGhfc3R1YnNfbG9uZ19k b3VibGUubG8gXAotCXN0ZGV4Y2VwdC5sbyBzdHJzdHJlYW0ubG8gdHJlZS5s byBpc3RyZWFtLmxvIGlzdHJlYW0tc3RyaW5nLmxvIFwKLQlzdHJlYW1idWYu bG8gdmFsYXJyYXkubG8gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3Rz XzMpIFwKLQkkKGFtX19vYmplY3RzXzYpCithbV9fb2JqZWN0c180ID0gcGFy YWxsZWxfc2V0dGluZ3MubG8KK2FtX19vYmplY3RzXzUgPSBiYXNpY19maWxl LmxvIGMrK2xvY2FsZS5sbyAkKGFtX19vYmplY3RzXzMpIFwKKwkkKGFtX19v YmplY3RzXzQpCithbV9fb2JqZWN0c182ID0gYml0bWFwX2FsbG9jYXRvci5s byBwb29sX2FsbG9jYXRvci5sbyBtdF9hbGxvY2F0b3IubG8gXAorCWNvZGVj dnQubG8gY29tcGxleF9pby5sbyBjb3ctaXN0cmVhbS1zdHJpbmcubG8gZ2xv YmFsc19pby5sbyBcCisJaGFzaF90cjEubG8gaGFzaHRhYmxlX3RyMS5sbyBp b3NfZmFpbHVyZS5sbyBpb3NfaW5pdC5sbyBcCisJaW9zX2xvY2FsZS5sbyBs aXN0LmxvIGxpc3QtYXV4LmxvIGxpc3QtYXV4LTIubG8gXAorCWxpc3RfYXNz b2NpYXRlZC5sbyBsaXN0X2Fzc29jaWF0ZWQtMi5sbyBsb2NhbGUubG8gXAor CWxvY2FsZV9pbml0LmxvIGxvY2FsZV9mYWNldHMubG8gbG9jYWxlbmFtZS5s byBcCisJbWF0aF9zdHVic19mbG9hdC5sbyBtYXRoX3N0dWJzX2xvbmdfZG91 YmxlLmxvIHN0ZGV4Y2VwdC5sbyBcCisJc3Ryc3RyZWFtLmxvIHRyZWUubG8g aXN0cmVhbS5sbyBpc3RyZWFtLXN0cmluZy5sbyBzdHJlYW1idWYubG8gXAor CXZhbGFycmF5LmxvICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c181 KQogQEdMSUJDWFhfSE9TVEVEX1RSVUVAYW1fbGliY19fOThjb252ZW5pZW5j ZV9sYV9PQkpFQ1RTID0gIFwKLUBHTElCQ1hYX0hPU1RFRF9UUlVFQAkkKGFt X19vYmplY3RzXzcpCitAR0xJQkNYWF9IT1NURURfVFJVRUAJJChhbV9fb2Jq ZWN0c182KQogbGliY19fOThjb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChh bV9saWJjX185OGNvbnZlbmllbmNlX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0g JChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BB TV9ERUZBVUxUX1ZAKQpAQCAtNDcxLDEwICs0NzAsNiBAQCBob3N0X3NvdXJj ZXNfZXh0cmEgPSBcCiAJYmFzaWNfZmlsZS5jYyBjKytsb2NhbGUuY2MgXAog CSR7aW5zdF9zb3VyY2VzfSAke3BhcmFsbGVsX3NvdXJjZXN9CiAKLUBFTkFC TEVfRFVBTF9BQklfRkFMU0VAY3h4MTFfYWJpX3NvdXJjZXMgPSAKLUBFTkFC TEVfRFVBTF9BQklfVFJVRUBjeHgxMV9hYmlfc291cmNlcyA9IFwKLUBFTkFC TEVfRFVBTF9BQklfVFJVRUAJY293LWlzdHJlYW0tc3RyaW5nLmNjCi0KICMg WFRFTVBMQVRFX0ZMQUdTID0KIEBFTkFCTEVfRVhURVJOX1RFTVBMQVRFX0ZB TFNFQGluc3Rfc291cmNlcyA9IAogCkBAIC00OTQsNiArNDg5LDcgQEAgc291 cmNlcyA9IFwKIAltdF9hbGxvY2F0b3IuY2MgXAogCWNvZGVjdnQuY2MgXAog CWNvbXBsZXhfaW8uY2MgXAorCWNvdy1pc3RyZWFtLXN0cmluZy5jYyBcCiAJ Z2xvYmFsc19pby5jYyBcCiAJaGFzaF90cjEuY2MgXAogCWhhc2h0YWJsZV90 cjEuY2MgXApAQCAtNTE4LDcgKzUxNCw2IEBAIHNvdXJjZXMgPSBcCiAJaXN0 cmVhbS1zdHJpbmcuY2MgXAogCXN0cmVhbWJ1Zi5jYyBcCiAJdmFsYXJyYXku Y2MgXAotCSR7Y3h4MTFfYWJpX3NvdXJjZXN9IFwKIAkke2hvc3Rfc291cmNl c30gXAogCSR7aG9zdF9zb3VyY2VzX2V4dHJhfQogCmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvc3JjL2MrKzk4L2Nvdy1pc3RyZWFtLXN0cmluZy5jYyBi L2xpYnN0ZGMrKy12My9zcmMvYysrOTgvY293LWlzdHJlYW0tc3RyaW5nLmNj CmluZGV4IDQwNWY5ZWNiNzgxLi5mMDBjYmMwOWY2OSAxMDA2NDQKLS0tIGEv bGlic3RkYysrLXYzL3NyYy9jKys5OC9jb3ctaXN0cmVhbS1zdHJpbmcuY2MK KysrIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9jb3ctaXN0cmVhbS1zdHJp bmcuY2MKQEAgLTI3LDQgKzI3LDggQEAKIC8vCiAKICNkZWZpbmUgX0dMSUJD WFhfVVNFX0NYWDExX0FCSSAwCi0jaW5jbHVkZSAiaXN0cmVhbS1zdHJpbmcu Y2MiCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKworI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorIyBpbmNsdWRlICJpc3RyZWFtLXN0cmlu Zy5jYyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9oYXNoX3RyMS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaGFz aF90cjEuY2MKaW5kZXggZTEzMmMwMWJmOGUuLmEyY2QyYzUwOWYzIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2hhc2hfdHIxLmNjCisr KyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaGFzaF90cjEuY2MKQEAgLTI4 LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgImhhc2gtbG9uZy1kb3VibGUtdHIx LWF1eC5jYyIKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiAg IG5hbWVzcGFjZSB0cjEKQEAgLTU3LDMgKzU4LDQgQEAgbmFtZXNwYWNlIHN0 ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiAjZW5kaWYKICAgfQog fQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9pb3NfZmFpbHVyZS5jYyBi L2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaW9zX2ZhaWx1cmUuY2MKaW5kZXgg Mjc0NzZlY2NiZGIuLjQzMjkxODcxMTk2IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvc3JjL2MrKzk4L2lvc19mYWlsdXJlLmNjCisrKyBiL2xpYnN0ZGMr Ky12My9zcmMvYysrOTgvaW9zX2ZhaWx1cmUuY2MKQEAgLTI5LDIyICsyOSwy NCBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNs dWRlIDxpb3M+CiAKLSNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgJiYgX19j cHBfcnR0aQotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2luY2x1ZGUgPHR5cGVp bmZvPgotI2VuZGlmCi0KLSNpZmRlZiBfR0xJQkNYWF9VU0VfTkxTCi0jIGlu Y2x1ZGUgPGxpYmludGwuaD4KLSMgZGVmaW5lIF8obXNnaWQpICAgZ2V0dGV4 dCAobXNnaWQpCi0jZWxzZQotIyBkZWZpbmUgXyhtc2dpZCkgICAobXNnaWQp Ci0jZW5kaWYKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKKyMgaWYgX0dMSUJDWFhfVVNFX0RVQUxf QUJJICYmIF9fY3BwX3J0dGkKKyMgIGluY2x1ZGUgPGN4eGFiaS5oPgorIyAg aW5jbHVkZSA8dHlwZWluZm8+CisjIGVuZGlmCisKKyMgaWZkZWYgX0dMSUJD WFhfVVNFX05MUworIyAgaW5jbHVkZSA8bGliaW50bC5oPgorIyAgZGVmaW5l IF8obXNnaWQpICAgZ2V0dGV4dCAobXNnaWQpCisjIGVsc2UKKyMgIGRlZmlu ZSBfKG1zZ2lkKSAgIChtc2dpZCkKKyMgZW5kaWYKIAogbmFtZXNwYWNlIHN0 ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCisjaWYgISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJCiAgIGlvc19iYXNlOjpmYWlsdXJlOjpmYWlsdXJlKGNvbnN0 IHN0cmluZyYgX19zdHIpIHRocm93KCkKICAgOiBfTV9tc2coX19zdHIpIHsg fQogCkBAIC01NCw2ICs1Niw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgIGNvbnN0IGNoYXIqCiAgIGlvc19iYXNlOjpmYWlsdXJl Ojp3aGF0KCkgY29uc3QgdGhyb3coKQogICB7IHJldHVybiBfTV9tc2cuY19z dHIoKTsgfQorI2VuZGlmCiAKICNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkK ICAgLy8gV2hlbiB0aGUgZHVhbCBBQkkgaXMgZW5hYmxlZCBfX3Rocm93X2lv c19mYWlsdXJlKCkgaXMgZGVmaW5lZCBpbgpAQCAtODIsNyArODUsNyBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICB9CiAjZW5kaWYg Ly8gX19jcHBfcnR0aQogCi0jZWxzZSAvLyAhIF9HTElCQ1hYX1VTRV9EVUFM X0FCSQorI2VsaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKICAgdm9p ZAogICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIF9fcyBfX2F0 dHJpYnV0ZV9fKCh1bnVzZWQpKSkKQEAgLTkyLDcgKzk1LDkgQEAgX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgX190aHJvd19pb3NfZmFp bHVyZShjb25zdCBjaGFyKiBzdHIsIGludCkKICAgeyBfX3Rocm93X2lvc19m YWlsdXJlKHN0cik7IH0KIAotI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9EVUFM X0FCSQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiBf R0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNl CisKKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBf R0xJQkNYWF9VU0VfRFVBTF9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrOTgvaXN0cmVhbS1zdHJpbmcuY2MgYi9saWJzdGRjKystdjMv c3JjL2MrKzk4L2lzdHJlYW0tc3RyaW5nLmNjCmluZGV4IDQ4NTk5ODdmY2My Li5iNjQzNDdmNzk2ZSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9pc3RyZWFtLXN0cmluZy5jYworKysgYi9saWJzdGRjKystdjMvc3Jj L2MrKzk4L2lzdHJlYW0tc3RyaW5nLmNjCkBAIC0zMSw2ICszMSwxNiBAQAog Ly8gYnkgYW5vdGhlciBmaWxlIHdoaWNoIGRlZmluZXMgX0dMSUJDWFhfVVNF X0NYWDExX0FCST0wLgogIyBkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAxCiAjZW5kaWYKKworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMg ZGVmaW5lIF9HTElCQ1hYX0JVSUxEX0NYWDExX0FCSSAxCisjZWxzZQorIyBk ZWZpbmUgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJIDAKKyNlbmRpZgorCisj aW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKworI2lmIF9HTElCQ1hYX0JV SUxEX0NYWDExX0FCSSA9PSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjaW5j bHVkZSA8aXN0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKQEAgLTI4OSwz ICsyOTksNCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgog CiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNw YWNlCisjZW5kaWYgLy8gX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJID09IF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrOTgvbG9jYWxlX2ZhY2V0cy5jYyBiL2xpYnN0ZGMrKy12My9z cmMvYysrOTgvbG9jYWxlX2ZhY2V0cy5jYwppbmRleCBjMGJiN2ZkMTgxZC4u N2E5MjlkNTFiZTQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysr OTgvbG9jYWxlX2ZhY2V0cy5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2Mr Kzk4L2xvY2FsZV9mYWNldHMuY2MKQEAgLTEyNSw2ICsxMjUsNyBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIHJldHVybiBfX3Rl c3Q7CiAgIH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICBi b29sCiAgIF9fdmVyaWZ5X2dyb3VwaW5nKGNvbnN0IGNoYXIqIF9fZ3JvdXBp bmcsIHNpemVfdCBfX2dyb3VwaW5nX3NpemUsCiAJCSAgICBjb25zdCBzdHJp bmcmIF9fZ3JvdXBpbmdfdG1wKSB0aHJvdygpCkBAIC0xMzMsNiArMTM0LDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dyb3VwaW5nX3RtcC5jX3N0 cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3Jv dXBpbmdfdG1wLnNpemUoKSk7CiAgIH0KKyNlbmRpZgogCiAgIG5hbWVzcGFj ZQogICB7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L3N0 ZGV4Y2VwdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvc3RkZXhjZXB0 LmNjCmluZGV4IGU4YzkxZjVjMWNkLi5lODI1NTRlMGFlYyAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9zdGRleGNlcHQuY2MKKysrIGIv bGlic3RkYysrLXYzL3NyYy9jKys5OC9zdGRleGNlcHQuY2MKQEAgLTM1LDgg KzM1LDEwIEBAIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShk ZWZhdWx0KQogewogX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K IAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICBsb2dpY19lcnJv cjo6bG9naWNfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBleGNl cHRpb24oKSwgX01fbXNnKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIGxvZ2lj X2Vycm9yOjp+bG9naWNfZXJyb3IoKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQg eyB9CiAKQEAgLTQ0LDI4ICs0NiwzOCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogICBsb2dpY19lcnJvcjo6d2hhdCgpIGNvbnN0IF9H TElCQ1hYX1VTRV9OT0VYQ0VQVAogICB7IHJldHVybiBfTV9tc2cuY19zdHIo KTsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGRvbWFp bl9lcnJvcjo6ZG9tYWluX2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpCiAg IDogbG9naWNfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgZG9tYWlu X2Vycm9yOjp+ZG9tYWluX2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBU IHsgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGludmFs aWRfYXJndW1lbnQ6OmludmFsaWRfYXJndW1lbnQoY29uc3Qgc3RyaW5nJiBf X2FyZykKICAgOiBsb2dpY19lcnJvcihfX2FyZykgeyB9CisjZW5kaWYKIAog ICBpbnZhbGlkX2FyZ3VtZW50Ojp+aW52YWxpZF9hcmd1bWVudCgpIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQogICBsZW5ndGhfZXJyb3I6Omxlbmd0aF9lcnJvcihjb25zdCBz dHJpbmcmIF9fYXJnKQogICA6IGxvZ2ljX2Vycm9yKF9fYXJnKSB7IH0KKyNl bmRpZgogCiAgIGxlbmd0aF9lcnJvcjo6fmxlbmd0aF9lcnJvcigpIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQogICBvdXRfb2ZfcmFuZ2U6Om91dF9vZl9yYW5nZShjb25zdCBz dHJpbmcmIF9fYXJnKQogICA6IGxvZ2ljX2Vycm9yKF9fYXJnKSB7IH0KKyNl bmRpZgogCiAgIG91dF9vZl9yYW5nZTo6fm91dF9vZl9yYW5nZSgpIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAorI2lmICEgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQogICBydW50aW1lX2Vycm9yOjpydW50aW1lX2Vycm9yKGNvbnN0 IHN0cmluZyYgX19hcmcpCiAgIDogZXhjZXB0aW9uKCksIF9NX21zZyhfX2Fy ZykgeyB9CisjZW5kaWYKIAogICBydW50aW1lX2Vycm9yOjp+cnVudGltZV9l cnJvcigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIApAQCAtNzMsMTgg Kzg1LDI0IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAg IHJ1bnRpbWVfZXJyb3I6OndoYXQoKSBjb25zdCBfR0xJQkNYWF9VU0VfTk9F WENFUFQKICAgeyByZXR1cm4gX01fbXNnLmNfc3RyKCk7IH0KIAorI2lmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICByYW5nZV9lcnJvcjo6cmFuZ2Vf ZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBydW50aW1lX2Vycm9y KF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIHJhbmdlX2Vycm9yOjp+cmFuZ2Vf ZXJyb3IoKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQgeyB9CiAKKyNpZiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgb3ZlcmZsb3dfZXJyb3I6Om92ZXJm bG93X2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpCiAgIDogcnVudGltZV9l cnJvcihfX2FyZykgeyB9CisjZW5kaWYKIAogICBvdmVyZmxvd19lcnJvcjo6 fm92ZXJmbG93X2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQog CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHVuZGVyZmxvd19l cnJvcjo6dW5kZXJmbG93X2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpCiAg IDogcnVudGltZV9lcnJvcihfX2FyZykgeyB9CisjZW5kaWYKIAogICB1bmRl cmZsb3dfZXJyb3I6On51bmRlcmZsb3dfZXJyb3IoKSBfR0xJQkNYWF9VU0Vf Tk9FWENFUFQgeyB9CiAK --------------oFnB7rz4D2EcFxy52VzQ096e--