From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 81094 invoked by alias); 2 Nov 2015 20:20:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 80446 invoked by uid 89); 2 Nov 2015 20:20:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-vk0-f44.google.com Received: from mail-vk0-f44.google.com (HELO mail-vk0-f44.google.com) (209.85.213.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 02 Nov 2015 20:20:33 +0000 Received: by vkex70 with SMTP id x70so92129469vke.3; Mon, 02 Nov 2015 12:20:30 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.31.15.84 with SMTP id 81mr5052548vkp.142.1446495630694; Mon, 02 Nov 2015 12:20:30 -0800 (PST) Received: by 10.103.112.68 with HTTP; Mon, 2 Nov 2015 12:20:30 -0800 (PST) In-Reply-To: <5637B784.6020403@oracle.com> References: <56377F0B.7070209@oracle.com> <5637B784.6020403@oracle.com> Date: Mon, 02 Nov 2015 20:20:00 -0000 Message-ID: Subject: Re: [v3 PATCH] Make the default constructors of tuple and pair conditionally explicit. From: Ville Voutilainen To: Paolo Carlini Cc: "gcc-patches@gcc.gnu.org" , libstdc++@gcc.gnu.org Content-Type: multipart/mixed; boundary=001a114377923cf8ff0523948237 X-SW-Source: 2015-11/txt/msg00120.txt.bz2 --001a114377923cf8ff0523948237 Content-Type: text/plain; charset=UTF-8 Content-length: 1650 On 2 November 2015 at 21:20, Paolo Carlini wrote: > Can we follow the terse style already used elsewhere (eg, > __is_direct_constructible_new_safe) thus directly inherit from __and_ and > avoid explicit integral_constant? Otherwise patch looks good to me. Sure. Tested again on Linux-PPC64, tests adjusted due to line changes, Changelog entry updated to have a correct date on it. 2015-11-02 Ville Voutilainen Make the default constructors of tuple and pair conditionally explicit. * include/std/type_traits ( __do_is_implicitly_default_constructible_impl, __is_implicitly_default_constructible_impl, __is_implicitly_default_constructible_safe, __is_implicitly_default_constructible): New. * include/bits/stl_pair.h (pair::pair()): Use it. * include/std/tuple (tuple<_T1, _T2>::tuple): Use it. * include/std/tuple (_ImplicitlyDefaultConstructibleTuple): New. * include/std/tuple (tuple<_Types...>::tuple()): Use it. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust. * testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc: New. * testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_implicitly_default_constructible/value.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise. * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise. --001a114377923cf8ff0523948237 Content-Type: text/plain; charset=US-ASCII; name="conditional-explicit-default-ctors-pair-tuple4.diff" Content-Disposition: attachment; filename="conditional-explicit-default-ctors-pair-tuple4.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_igie48g50 Content-length: 28841 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3Bh aXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaApp bmRleCBhNWE3ODk4Li5kZmNkMzU3IDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvaW5jbHVkZS9iaXRzL3N0bF9wYWlyLmgKKysrIGIvbGlic3RkYysrLXYz L2luY2x1ZGUvYml0cy9zdGxfcGFpci5oCkBAIC0xNDEsMTMgKzE0MSwyNyBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgdGVt cGxhdGUgPHR5cGVuYW1lIF9VMSA9IF9UMSwKICAgICAgICAgICAgICAgICB0 eXBlbmFtZSBfVTIgPSBfVDIsCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUg ZW5hYmxlX2lmPF9fYW5kXzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UxPiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZhdWx0 X2NvbnN0cnVjdGlibGU8X1UyPj4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1 Y3RpYmxlPF9VMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxf VTI+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnZh bHVlLCBib29sPjo6dHlwZSA9IHRydWU+CiAjZW5kaWYKICAgICAgIF9HTElC Q1hYX0NPTlNURVhQUiBwYWlyKCkKICAgICAgIDogZmlyc3QoKSwgc2Vjb25k KCkgeyB9CiAKKyNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCisgICAgICB0 ZW1wbGF0ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAorICAgICAgICAgICAgICAg IHR5cGVuYW1lIF9VMiA9IF9UMiwKKyAgICAgICAgICAgICAgICB0eXBlbmFt ZSBlbmFibGVfaWY8X19hbmRfPAorICAgICAgICAgICAgICAgICAgICAgICBp c19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UxPiwKKyAgICAgICAgICAgICAg ICAgICAgICAgaXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4sCisgICAg ICAgICAgICAgICAgICAgICAgIF9fbm90XzwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBfX2FuZF88X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3Ry dWN0aWJsZTxfVTE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4+ Pj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp2YWx1 ZSwgYm9vbD46OnR5cGUgPSBmYWxzZT4KKyAgICAgIGV4cGxpY2l0IGNvbnN0 ZXhwciBwYWlyKCkKKyAgICAgIDogZmlyc3QoKSwgc2Vjb25kKCkgeyB9Cisj ZW5kaWYKKwogICAgICAgLyoqIFR3byBvYmplY3RzIG1heSBiZSBwYXNzZWQg dG8gYSBAYyBwYWlyIGNvbnN0cnVjdG9yIHRvIGJlIGNvcGllZC4gICovCiAj aWYgX19jcGx1c3BsdXMgPCAyMDExMDNMCiAgICAgICBwYWlyKGNvbnN0IF9U MSYgX19hLCBjb25zdCBfVDImIF9fYikKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9pbmNsdWRlL3N0ZC90dXBsZSBiL2xpYnN0ZGMrKy12My9pbmNsdWRl L3N0ZC90dXBsZQppbmRleCA4YWYwMWY0Li5lNmMzMmIzIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvdHVwbGUKKysrIGIvbGlic3Rk YysrLXYzL2luY2x1ZGUvc3RkL3R1cGxlCkBAIC01NTEsMTYgKzU1MSwzMSBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgICB7 CiAgICAgICAgICAgcmV0dXJuIF9fYW5kXzxpc19kZWZhdWx0X2NvbnN0cnVj dGlibGU8X0VsZW1lbnRzPi4uLj46OnZhbHVlOwogICAgICAgICB9CisgICAg ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfSW1wbGljaXRseURlZmF1bHRD b25zdHJ1Y3RpYmxlVHVwbGUoKQorICAgICAgICB7CisgICAgICAgICAgcmV0 dXJuIF9fYW5kXzxfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3Rp YmxlPF9FbGVtZW50cz4uLi4+CisgICAgICAgICAgICA6OnZhbHVlOworICAg ICAgICB9CiAgICAgICB9OwogCiAgICAgcHVibGljOgogICAgICAgdGVtcGxh dGU8dHlwZW5hbWUgX0R1bW15ID0gdm9pZCwKICAgICAgICAgICAgICAgIHR5 cGVuYW1lIGVuYWJsZV9pZjxfVEMyPF9EdW1teT46OgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX0RlZmF1bHRDb25zdHJ1Y3RpYmxl VHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9JbXBsaWNpdGx5RGVmYXVsdENvbnN0cnVjdGlibGVUdXBsZSgpLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+Ojp0eXBlID0g dHJ1ZT4KICAgICAgIGNvbnN0ZXhwciB0dXBsZSgpCiAgICAgICA6IF9Jbmhl cml0ZWQoKSB7IH0KIAorICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0R1bW15 ID0gdm9pZCwKKyAgICAgICAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxf VEMyPF9EdW1teT46OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX0RlZmF1bHRDb25zdHJ1Y3RpYmxlVHVwbGUoKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIV9UQzI8X0R1bW15Pjo6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfSW1wbGljaXRseURlZmF1bHRD b25zdHJ1Y3RpYmxlVHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sPjo6dHlwZSA9IGZhbHNlPgorICAgICAgZXhwbGlj aXQgY29uc3RleHByIHR1cGxlKCkKKyAgICAgIDogX0luaGVyaXRlZCgpIHsg fQorCiAgICAgICAvLyBTaG9ydGN1dCBmb3IgdGhlIGNhc2VzIHdoZXJlIGNv bnN0cnVjdG9ycyB0YWtpbmcgX0VsZW1lbnRzLi4uCiAgICAgICAvLyBuZWVk IHRvIGJlIGNvbnN0cmFpbmVkLgogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg X0R1bW15PiB1c2luZyBfVENDID0KQEAgLTgzNywxMyArODUyLDI3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICB0ZW1wbGF0 ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAogICAgICAgICAgICAgICAgIHR5cGVu YW1lIF9VMiA9IF9UMiwKICAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbmFi bGVfaWY8X19hbmRfPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVTE+LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZmF1bHRfY29u c3RydWN0aWJsZTxfVTI+PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGli bGU8X1UxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6dmFsdWUs IGJvb2w+Ojp0eXBlID0gdHJ1ZT4KIAogICAgICAgY29uc3RleHByIHR1cGxl KCkKICAgICAgIDogX0luaGVyaXRlZCgpIHsgfQogCisgICAgICB0ZW1wbGF0 ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAorICAgICAgICAgICAgICAgIHR5cGVu YW1lIF9VMiA9IF9UMiwKKyAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbmFi bGVfaWY8CisgICAgICAgICAgICAgICAgICBfX2FuZF88CisgICAgICAgICAg ICAgICAgICAgIGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVTE+LAorICAg ICAgICAgICAgICAgICAgICBpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1Uy PiwKKyAgICAgICAgICAgICAgICAgICAgX19ub3RfPAorICAgICAgICAgICAg ICAgICAgICAgIF9fYW5kXzxfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25z dHJ1Y3RpYmxlPF9VMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UyPj4+ PgorICAgICAgICAgICAgICAgICAgOjp2YWx1ZSwgYm9vbD46OnR5cGUgPSBm YWxzZT4KKworICAgICAgZXhwbGljaXQgY29uc3RleHByIHR1cGxlKCkKKyAg ICAgIDogX0luaGVyaXRlZCgpIHsgfQorCiAgICAgICAvLyBTaG9ydGN1dCBm b3IgdGhlIGNhc2VzIHdoZXJlIGNvbnN0cnVjdG9ycyB0YWtpbmcgX1QxLCBf VDIKICAgICAgIC8vIG5lZWQgdG8gYmUgY29uc3RyYWluZWQuCiAgICAgICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfRHVtbXk+IHVzaW5nIF9UQ0MgPQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3R5cGVfdHJhaXRzIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3R5cGVfdHJhaXRzCmluZGV4IGUw ODEzMWIuLmNjYmFlODcgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL3N0ZC90eXBlX3RyYWl0cworKysgYi9saWJzdGRjKystdjMvaW5jbHVk ZS9zdGQvdHlwZV90cmFpdHMKQEAgLTEzMzcsNiArMTMzNywzNiBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIDogcHVibGljIGlz X3RyaXZpYWxseV9jb25zdHJ1Y3RpYmxlPF9UcD46OnR5cGUKICAgICB7IH07 CiAKKyAgc3RydWN0IF9fZG9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0 cnVjdGlibGVfaW1wbAorICB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9U cD4KKyAgICBzdGF0aWMgdm9pZCBfX2hlbHBlcihjb25zdCBfVHAmKTsKKwor ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHA+CisgICAgc3RhdGljIHRydWVf dHlwZSBfX3Rlc3QoY29uc3QgX1RwJiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWNsdHlwZShfX2hlbHBlcjxjb25zdCBfVHAmPih7fSkpKiA9 IDApOworCisgICAgc3RhdGljIGZhbHNlX3R5cGUgX190ZXN0KC4uLik7Cisg IH07CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgorICAgIHN0cnVjdCBf X2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGwKKyAg ICAgIDogcHVibGljIF9fZG9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0 cnVjdGlibGVfaW1wbAorICB7CisgICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rl c3QoZGVjbHZhbDxfVHA+KCkpKSB0eXBlOworICB9OworCisgIHRlbXBsYXRl PHR5cGVuYW1lIF9UcD4KKyAgICBzdHJ1Y3QgX19pc19pbXBsaWNpdGx5X2Rl ZmF1bHRfY29uc3RydWN0aWJsZV9zYWZlCisgICAgICA6IHB1YmxpYyBfX2lz X2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPjo6 dHlwZQorICB7IH07CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KKyAg ICBzdHJ1Y3QgX19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJs ZQorICAgICAgOiBwdWJsaWMgX19hbmRfPGlzX2RlZmF1bHRfY29uc3RydWN0 aWJsZTxfVHA+LAorICAgICAgICAgICAgICAgICAgICAgIF9faXNfaW1wbGlj aXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGVfc2FmZTxfVHA+PgorICB7IH07 CisKICAgLy8vIGlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGUKICAg dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgIHN0cnVjdCBpc190cml2aWFs bHlfY29weV9jb25zdHJ1Y3RpYmxlCmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIwX3V0aWwvZGVjbHZhbC9yZXF1aXJlbWVudHMvMV9u ZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvZGVjbHZh bC9yZXF1aXJlbWVudHMvMV9uZWcuY2MKaW5kZXggMjcyM2U1Yy4uNGU3ZGVk YSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGls L2RlY2x2YWwvcmVxdWlyZW1lbnRzLzFfbmVnLmNjCisrKyBiL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjBfdXRpbC9kZWNsdmFsL3JlcXVpcmVtZW50cy8x X25lZy5jYwpAQCAtMTksNyArMTksNyBAQAogLy8gd2l0aCB0aGlzIGxpYnJh cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIC8vIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotLy8geyBkZy1lcnJv ciAic3RhdGljIGFzc2VydGlvbiBmYWlsZWQiICIiIHsgdGFyZ2V0ICotKi0q IH0gMjIwOSB9CisvLyB7IGRnLWVycm9yICJzdGF0aWMgYXNzZXJ0aW9uIGZh aWxlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAyMjM5IH0KIAogI2luY2x1ZGUg PHV0aWxpdHk+CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJs ZS9yZXF1aXJlbWVudHMvZXhwbGljaXRfaW5zdGFudGlhdGlvbi5jYyBiL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2Rl ZmF1bHRfY29uc3RydWN0aWJsZS9yZXF1aXJlbWVudHMvZXhwbGljaXRfaW5z dGFudGlhdGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hY2M5ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYz L3Rlc3RzdWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25z dHJ1Y3RpYmxlL3JlcXVpcmVtZW50cy9leHBsaWNpdF9pbnN0YW50aWF0aW9u LmNjCkBAIC0wLDAgKzEsMjcgQEAKKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1n bnUrKzExIiB9CisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCisvLyBDb3B5cmln aHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisv LworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExp YnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg dGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24p CisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworLy8gVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKy8vIHdp dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBu b3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisK KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNlIHN0ZAorewor ICB0eXBlZGVmIHNob3J0IHRlc3RfdHlwZTsKKyAgdGVtcGxhdGUgc3RydWN0 IHN0ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTx0 ZXN0X3R5cGU+OworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3Rz dWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3Rp YmxlL3JlcXVpcmVtZW50cy90eXBlZGVmcy5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3Ry dWN0aWJsZS9yZXF1aXJlbWVudHMvdHlwZWRlZnMuY2MKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0YjA2YwotLS0gL2Rldi9udWxs CisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBs aWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZS9yZXF1aXJlbWVudHMvdHlw ZWRlZnMuY2MKQEAgLTAsMCArMSwzMiBAQAorLy8geyBkZy1vcHRpb25zICIt c3RkPWdudSsrMTEiIH0KKy8vIHsgZGctZG8gY29tcGlsZSB9CisKKy8vIENv cHlyaWdodCAoQykgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBD KysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9w dGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisvLworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworCit2b2lkIHRl c3QwMSgpCit7CisgIC8vIENoZWNrIGZvciByZXF1aXJlZCB0eXBlZGVmcwor ICB0eXBlZGVmIHN0ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3Ry dWN0aWJsZTxpbnQ+ICAgICAgICAgIHRlc3RfdHlwZTsKKyAgdHlwZWRlZiB0 ZXN0X3R5cGU6OnZhbHVlX3R5cGUgICAgICAgICAgICAgICAgICAgICB2YWx1 ZV90eXBlOworICB0eXBlZGVmIHRlc3RfdHlwZTo6dHlwZSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHR5cGU7CisgIHR5cGVkZWYgdGVzdF90eXBlOjp0 eXBlOjp2YWx1ZV90eXBlICAgICAgICAgICAgICAgdHlwZV92YWx1ZV90eXBl OworICB0eXBlZGVmIHRlc3RfdHlwZTo6dHlwZTo6dHlwZSAgICAgICAgICAg ICAgICAgICAgIHR5cGVfdHlwZTsKK30KZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRf Y29uc3RydWN0aWJsZS92YWx1ZS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJs ZS92YWx1ZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hZmY0OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1 Y3RpYmxlL3ZhbHVlLmNjCkBAIC0wLDAgKzEsNDQgQEAKKy8vIHsgZGctb3B0 aW9ucyAiLXN0ZD1nbnUrKzExIiB9CisvLyB7IGRnLWRvIGNvbXBpbGUgfQor CisvLyBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorLy8g c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFsb25nCisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl IENPUFlJTkczLiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKK3N0 cnVjdCBFeHBsaWNpdERlZmF1bHQKK3sKKyAgZXhwbGljaXQgRXhwbGljaXRE ZWZhdWx0KCkge30KK307CisKK3N0cnVjdCBFeHBsaWNpdERlZmF1bHREZWZh dWx0Cit7CisgIGV4cGxpY2l0IEV4cGxpY2l0RGVmYXVsdERlZmF1bHQoKSA9 IGRlZmF1bHQ7Cit9OworCit2b2lkIHRlc3QwMSgpCit7CisgIHVzaW5nIHN0 ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTsKKyAg Ly8gUG9zaXRpdmUgdGVzdHMuCisgIHN0YXRpY19hc3NlcnQoX19pc19pbXBs aWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxpbnQ+Ojp2YWx1ZSwgIiIp OworICAvLyBOZWdhdGl2ZSB0ZXN0cy4KKyAgc3RhdGljX2Fzc2VydCghX19p c19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxpbnQmPjo6dmFs dWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghX19pc19pbXBsaWNpdGx5X2Rl ZmF1bHRfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgICBFeHBsaWNp dERlZmF1bHQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KCFfX2lz X2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPAorICAgICAgICAg ICAgICAgIEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+Ojp2YWx1ZSwgIiIpOwor fQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGls L21ha2Vfc2lnbmVkL3JlcXVpcmVtZW50cy90eXBlZGVmc19uZWcuY2MgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV9zaWduZWQvcmVx dWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwppbmRleCA1MDc5MzBkLi44ZTVm ZTUzIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0 aWwvbWFrZV9zaWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwor KysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV9zaWdu ZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwpAQCAtNDgsNCArNDgs NCBAQCB2b2lkIHRlc3QwMSgpCiAvLyB7IGRnLWVycm9yICJyZXF1aXJlZCBm cm9tIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gNDAgfQogLy8geyBkZy1l cnJvciAicmVxdWlyZWQgZnJvbSBoZXJlIiAiIiB7IHRhcmdldCAqLSotKiB9 IDQyIH0KIAotLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2YgaW5jb21w bGV0ZSB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IDE4NzQgfQorLy8geyBk Zy1lcnJvciAiaW52YWxpZCB1c2Ugb2YgaW5jb21wbGV0ZSB0eXBlIiAiIiB7 IHRhcmdldCAqLSotKiB9IDE5MDQgfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2VfdW5zaWduZWQvcmVxdWlyZW1l bnRzL3R5cGVkZWZzX25lZy5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUv MjBfdXRpbC9tYWtlX3Vuc2lnbmVkL3JlcXVpcmVtZW50cy90eXBlZGVmc19u ZWcuY2MKaW5kZXggNjA4ZmQxYS4uNGNkMDMxMSAxMDA2NDQKLS0tIGEvbGli c3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2VfdW5zaWduZWQvcmVx dWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYworKysgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIwX3V0aWwvbWFrZV91bnNpZ25lZC9yZXF1aXJlbWVudHMv dHlwZWRlZnNfbmVnLmNjCkBAIC00OCw1ICs0OCw1IEBAIHZvaWQgdGVzdDAx KCkKIC8vIHsgZGctZXJyb3IgInJlcXVpcmVkIGZyb20gaGVyZSIgIiIgeyB0 YXJnZXQgKi0qLSogfSA0MCB9CiAvLyB7IGRnLWVycm9yICJyZXF1aXJlZCBm cm9tIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gNDIgfQogCi0vLyB7IGRn LWVycm9yICJpbnZhbGlkIHVzZSBvZiBpbmNvbXBsZXRlIHR5cGUiICIiIHsg dGFyZ2V0ICotKi0qIH0gMTc3MCB9Ci0vLyB7IGRnLWVycm9yICJkZWNsYXJh dGlvbiBvZiIgIiIgeyB0YXJnZXQgKi0qLSogfSAxNzI3IH0KKy8vIHsgZGct ZXJyb3IgImludmFsaWQgdXNlIG9mIGluY29tcGxldGUgdHlwZSIgIiIgeyB0 YXJnZXQgKi0qLSogfSAxODAwIH0KKy8vIHsgZGctZXJyb3IgImRlY2xhcmF0 aW9uIG9mIiAiIiB7IHRhcmdldCAqLSotKiB9IDE3NTcgfQpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3BhaXIvY29ucy9l eHBsaWNpdF9jb25zdHJ1Y3QuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRl LzIwX3V0aWwvcGFpci9jb25zL2V4cGxpY2l0X2NvbnN0cnVjdC5jYwppbmRl eCA1MGVkZGE5Li5hYzFkYzdlIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIwX3V0aWwvcGFpci9jb25zL2V4cGxpY2l0X2NvbnN0cnVj dC5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvcGFp ci9jb25zL2V4cGxpY2l0X2NvbnN0cnVjdC5jYwpAQCAtMjYsNiArMjYsMTYg QEAgc3RydWN0IEV4cGxpY2l0CiAgIGV4cGxpY2l0IEV4cGxpY2l0KGludCkg e30KIH07CiAKK3N0cnVjdCBFeHBsaWNpdERlZmF1bHQKK3sKKyAgZXhwbGlj aXQgRXhwbGljaXREZWZhdWx0KCkge30KK307CisKK3N0cnVjdCBFeHBsaWNp dERlZmF1bHREZWZhdWx0Cit7CisgIGV4cGxpY2l0IEV4cGxpY2l0RGVmYXVs dERlZmF1bHQoKSA9IGRlZmF1bHQ7Cit9OworCiBzdGQ6OnBhaXI8aW50LCBp bnQ+IGYxKCkge3JldHVybiB7MSwyfTt9CiAKIHN0ZDo6cGFpcjxFeHBsaWNp dCwgRXhwbGljaXQ+IGYyKCkge3JldHVybiB7MSwyfTt9IC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IiB9CkBAIC03Miw2ICs4MiwyMCBAQCB2b2lkIGY2KHN0 ZDo6cGFpcjxFeHBsaWNpdCwgRXhwbGljaXQ+KSB7fQogCiB2b2lkIGY3KHN0 ZDo6cGFpcjxsb25nLCBsb25nPikge30KIAorc3RkOjpwYWlyPEV4cGxpY2l0 RGVmYXVsdCwgaW50PiBmOCgpCit7CisgIHJldHVybiB7fTsgLy8geyBkZy1l cnJvciAiZXhwbGljaXQiIH0KK30KKworc3RkOjpwYWlyPEV4cGxpY2l0RGVm YXVsdERlZmF1bHQsIGludD4gZjkoKQoreworICByZXR1cm4ge307IC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IiB9Cit9CisKK3ZvaWQgZjEwKHN0ZDo6cGFp cjxFeHBsaWNpdERlZmF1bHQsIGludD4pIHt9CisKK3ZvaWQgZjExKHN0ZDo6 cGFpcjxFeHBsaWNpdERlZmF1bHREZWZhdWx0LCBpbnQ+KSB7fQorCiB2b2lk IHRlc3RfYXJnX3Bhc3NpbmcoKQogewogICBmNih2MCk7IC8vIHsgZGctZXJy b3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9CkBAIC04NCw2ICsxMDgsMTAgQEAg dm9pZCB0ZXN0X2FyZ19wYXNzaW5nKCkKICAgZjcoezEsMn0pOwogICBmNyhz dGQ6OnBhaXI8aW50LCBpbnQ+e30pOwogICBmNyhzdGQ6OnBhaXI8bG9uZywg bG9uZz57fSk7CisgIGYxMCh7fSk7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IiB9CisgIGYxMSh7fSk7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9Cisg IGYxMChzdGQ6OnBhaXI8RXhwbGljaXREZWZhdWx0LCBpbnQ+e30pOworICBm MTEoc3RkOjpwYWlyPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsIGludD57fSk7 CiB9CiAKIHN0cnVjdCBNb3ZlT25seQpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1cGxlL2NvbnMvZXhwbGljaXRfY29u c3RydWN0LmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1 cGxlL2NvbnMvZXhwbGljaXRfY29uc3RydWN0LmNjCmluZGV4IDExNGE0OTAu LjRkOTdjZmIgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUv MjBfdXRpbC90dXBsZS9jb25zL2V4cGxpY2l0X2NvbnN0cnVjdC5jYworKysg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvdHVwbGUvY29ucy9l eHBsaWNpdF9jb25zdHJ1Y3QuY2MKQEAgLTI4LDEzICsyOCwyNiBAQCBzdHJ1 Y3QgRXhwbGljaXQKICAgZXhwbGljaXQgRXhwbGljaXQoaW50KSB7fQogfTsK IAorc3RydWN0IEV4cGxpY2l0RGVmYXVsdAoreworICBleHBsaWNpdCBFeHBs aWNpdERlZmF1bHQoKSB7fQorfTsKKworc3RydWN0IEV4cGxpY2l0RGVmYXVs dERlZmF1bHQKK3sKKyAgZXhwbGljaXQgRXhwbGljaXREZWZhdWx0RGVmYXVs dCgpID0gZGVmYXVsdDsKK307CisKIHN0ZDo6dHVwbGU8aW50PiBmMWEoKSB7 cmV0dXJuIHsxfTt9CiBzdGQ6OnR1cGxlPGludCwgaW50PiBmMWIoKSB7cmV0 dXJuIHsxLDJ9O30KIHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD4gZjFjKCkg e3JldHVybiB7MSwyLDN9O30KIAotc3RkOjp0dXBsZTxFeHBsaWNpdD4gZjJf YSgpIHtyZXR1cm4gezF9O30gLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0K LXN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0PiBmMl9iKCkge3JldHVy biB7MSwyfTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9Ci1zdGQ6OnR1 cGxlPEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+IGYyX2MoKSB7cmV0 dXJuIHsxLDIsM307fSAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorc3Rk Ojp0dXBsZTxFeHBsaWNpdD4gZjJfYSgpCit7cmV0dXJuIHsxfTt9IC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0LCBF eHBsaWNpdD4gZjJfYigpCit7cmV0dXJuIHsxLDJ9O30gLy8geyBkZy1lcnJv ciAiZXhwbGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0 LCBFeHBsaWNpdD4gZjJfYygpCit7cmV0dXJuIHsxLDIsM307fSAvLyB7IGRn LWVycm9yICJleHBsaWNpdCIgfQogCiBzdGQ6OnR1cGxlPGxvbmc+IGYzX2Eo KSB7cmV0dXJuIHN0ZDo6dHVwbGU8aW50PnsxfTt9CiBzdGQ6OnR1cGxlPGxv bmcsIGxvbmc+IGYzX2IoKSB7cmV0dXJuIHN0ZDo6dHVwbGU8aW50LCBpbnQ+ ezEsMn07fQpAQCAtNTcsNiArNzAsMjQgQEAgc3RkOjp0dXBsZTxsb25nPiBm NV9hKCkge3JldHVybiB7MX07fQogc3RkOjp0dXBsZTxsb25nLCBsb25nPiBm NV9iKCkge3JldHVybiB7MSwyfTt9CiBzdGQ6OnR1cGxlPGxvbmcsIGxvbmcs IGxvbmc+IGY1X2MoKSB7cmV0dXJuIHsxLDIsM307fQogCitzdGQ6OnR1cGxl PEV4cGxpY2l0RGVmYXVsdD4gZjZfYSgpCit7cmV0dXJuIHt9O30gLy8geyBk Zy1lcnJvciAiZXhwbGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhwbGljaXREZWZh dWx0LCBFeHBsaWNpdERlZmF1bHQ+IGY2X2IoKQore3JldHVybiB7fTt9IC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0 RGVmYXVsdCwgRXhwbGljaXREZWZhdWx0LCBFeHBsaWNpdERlZmF1bHQ+IGY2 X2MoKQore3JldHVybiB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9 CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdCwgaW50PiBmNl9kKCkKK3ty ZXR1cm4ge307fSAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorCitzdGQ6 OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+IGY3X2EoKQore3JldHVy biB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxl PEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsIEV4cGxpY2l0RGVmYXVsdERlZmF1 bHQ+IGY3X2IoKQore3JldHVybiB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsCisg ICAgICAgICAgIEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsCisgICAgICAgICAg IEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+IGY3X2MoKQore3JldHVybiB7fTt9 IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CisKIHN0ZDo6dHVwbGU8aW50 LCBpbnQ+IGZwMSgpIHtyZXR1cm4gc3RkOjpwYWlyPGludCwgaW50PnsxLDJ9 OyB9CiBzdGQ6OnR1cGxlPGxvbmcsIGxvbmc+IGZwMigpIHtyZXR1cm4gc3Rk OjpwYWlyPGludCwgaW50PnsxLDJ9OyB9CiBzdGQ6OnR1cGxlPEV4cGxpY2l0 LCBFeHBsaWNpdD4gZnAzKCkKQEAgLTE2Myw3ICsxOTQsNyBAQCBzdGQ6OnR1 cGxlPGxvbmcsIGxvbmcsIGxvbmc+CiAgIHYzMV9je3N0ZDo6YWxsb2NhdG9y X2FyZywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCAxLDIsM307CiAKIHN0ZDo6 dHVwbGU8RXhwbGljaXQ+IHYzMl9hCi0gID0ge3N0ZDo6YWxsb2NhdG9yX2Fy Zywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCAxfTsgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQiIH0KKyAgPSB7c3RkOjphbGxvY2F0b3JfYXJnLCBzdGQ6OmFs bG9jYXRvcjxpbnQ+eyB9LCAxfTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQi IH0KIHN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0PiB2MzJfYgogICA9 IHtzdGQ6OmFsbG9jYXRvcl9hcmcsIHN0ZDo6YWxsb2NhdG9yPGludD57fSwg MSwgMn07IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CiBzdGQ6OnR1cGxl PEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+IHYzMl9jCkBAIC0xOTks NyArMjMwLDE5IEBAIHN0ZDo6dHVwbGU8aW50LCBpbnQ+IHY0MiA9IHtzdGQ6 OmFsbG9jYXRvcl9hcmcsIHN0ZDo6YWxsb2NhdG9yPGludD57fSwgdjIwfTsK IHN0ZDo6dHVwbGU8bG9uZywgbG9uZz4gdjQzID0ge3N0ZDo6YWxsb2NhdG9y X2FyZywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCB2MjB9OwogCiBzdGQ6OnR1 cGxlPEV4cGxpY2l0LCBFeHBsaWNpdD4gdjQ0Ci09IHtzdGQ6OmFsbG9jYXRv cl9hcmcsIHN0ZDo6YWxsb2NhdG9yPGludD57fSwgdjIwfTsgLy8geyBkZy1l cnJvciAiZXhwbGljaXQiIH0KKz0ge3N0ZDo6YWxsb2NhdG9yX2FyZywgc3Rk OjphbGxvY2F0b3I8aW50PnsgfSwgdjIwfTsgLy8geyBkZy1lcnJvciAiZXhw bGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhwbGljaXREZWZhdWx0PiB2NDVfYXt9 Oworc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHQsIGludD4gdjQ1X2J7fTsK Kworc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHQ+IHY0Nl9hID0ge307IC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0 RGVmYXVsdCwgaW50PiB2NDZfYiA9IHt9OyAvLyB7IGRnLWVycm9yICJleHBs aWNpdCIgfQorCitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+ IHY0N19he307CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQs IGludD4gdjQ3X2J7fTsKKworc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHRE ZWZhdWx0PiB2NDhfYSA9IHt9OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIg fQorc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHREZWZhdWx0LCBpbnQ+IHY0 OF9iID0geyB9OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorCiAKIHN0 cnVjdCBEZWxldGVkQ29weQogewpAQCAtMjI1LDU4ICsyNjgsNzMgQEAgc3Rk Ojp0dXBsZTxpbnQsIGludCwgU2FuaXR5PiB2NTAoc3RkOjphbGxvY2F0b3Jf YXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjph bGxvY2F0b3I8U2FuaXR5Pnt9LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMywgNCwgezQyfSk7CiAKLXZvaWQgZjZfYShzdGQ6OnR1cGxl PEV4cGxpY2l0Pikge30KLXZvaWQgZjZfYihzdGQ6OnR1cGxlPEV4cGxpY2l0 LCBFeHBsaWNpdD4pIHt9Ci12b2lkIGY2X2Moc3RkOjp0dXBsZTxFeHBsaWNp dCwgRXhwbGljaXQsIEV4cGxpY2l0Pikge30KK3ZvaWQgZjhfYShzdGQ6OnR1 cGxlPEV4cGxpY2l0Pikge30KK3ZvaWQgZjhfYihzdGQ6OnR1cGxlPEV4cGxp Y2l0LCBFeHBsaWNpdD4pIHt9Cit2b2lkIGY4X2Moc3RkOjp0dXBsZTxFeHBs aWNpdCwgRXhwbGljaXQsIEV4cGxpY2l0Pikge30KKwordm9pZCBmOV9hKHN0 ZDo6dHVwbGU8bG9uZz4pIHt9Cit2b2lkIGY5X2Ioc3RkOjp0dXBsZTxsb25n LCBsb25nPikge30KK3ZvaWQgZjlfYyhzdGQ6OnR1cGxlPGxvbmcsIGxvbmcs IGxvbmc+KSB7fQorCit2b2lkIGYxMF9hKHN0ZDo6dHVwbGU8RXhwbGljaXRE ZWZhdWx0Pikge30KK3ZvaWQgZjEwX2Ioc3RkOjp0dXBsZTxFeHBsaWNpdERl ZmF1bHQsIGludD4pIHt9CiAKLXZvaWQgZjdfYShzdGQ6OnR1cGxlPGxvbmc+ KSB7fQotdm9pZCBmN19iKHN0ZDo6dHVwbGU8bG9uZywgbG9uZz4pIHt9Ci12 b2lkIGY3X2Moc3RkOjp0dXBsZTxsb25nLCBsb25nLCBsb25nPikge30KK3Zv aWQgZjExX2Eoc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHREZWZhdWx0Pikg e30KK3ZvaWQgZjExX2Ioc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHREZWZh dWx0LCBpbnQ+KSB7fQogCiB2b2lkIHRlc3RfYXJnX3Bhc3NpbmcoKQogewot ICBmNl9hKHYwX2EpOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVy dCIgfQotICBmNl9iKHYwX2IpOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3Qg Y29udmVydCIgfQotICBmNl9jKHYwX2MpOyAvLyB7IGRnLWVycm9yICJjb3Vs ZCBub3QgY29udmVydCIgfQotICBmNl9iKHYyMCk7IC8vIHsgZGctZXJyb3Ig ImNvdWxkIG5vdCBjb252ZXJ0IiB9Ci0KLSAgZjZfYSh2MV9hKTsKLSAgZjZf Yih2MV9iKTsKLSAgZjZfYyh2MV9jKTsKLQotICBmNl9hKHsxfSk7IC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IiB9Ci0gIGY2X2IoezEsMn0pOyAvLyB7IGRn LWVycm9yICJleHBsaWNpdCIgfQotICBmNl9jKHsxLDIsM30pOyAvLyB7IGRn LWVycm9yICJleHBsaWNpdCIgfQotCi0gIGY2X2Eoc3RkOjp0dXBsZTxFeHBs aWNpdD57fSk7Ci0gIGY2X2Ioc3RkOjp0dXBsZTxFeHBsaWNpdCwgRXhwbGlj aXQ+e30pOwotICBmNl9jKHN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0 LCBFeHBsaWNpdD57fSk7Ci0KLSAgZjZfYShzdGQ6OnR1cGxlPGludD57fSk7 IC8vIHsgZGctZXJyb3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9Ci0gIGY2X2Io c3RkOjp0dXBsZTxpbnQsIGludD57fSk7IC8vIHsgZGctZXJyb3IgImNvdWxk IG5vdCBjb252ZXJ0IiB9Ci0gIGY2X2Moc3RkOjp0dXBsZTxpbnQsIGludCwg aW50Pnt9KTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0K LSAgZjZfYihzdGQ6OnBhaXI8aW50LCBpbnQ+e30pOyAvLyB7IGRnLWVycm9y ICJjb3VsZCBub3QgY29udmVydCIgfQotCi0gIGY3X2EodjBfYSk7Ci0gIGY3 X2IodjBfYik7Ci0gIGY3X2ModjBfYyk7Ci0gIGY3X2IodjIwKTsKLQotICBm N19hKHY2X2EpOwotICBmN19iKHY2X2IpOwotICBmN19jKHY2X2MpOwotCi0g IGY3X2EoezF9KTsKLSAgZjdfYih7MSwyfSk7Ci0gIGY3X2MoezEsMiwzfSk7 Ci0KLSAgZjdfYShzdGQ6OnR1cGxlPGludD57fSk7Ci0gIGY3X2Ioc3RkOjp0 dXBsZTxpbnQsIGludD57fSk7Ci0gIGY3X2Moc3RkOjp0dXBsZTxpbnQsIGlu dCwgaW50Pnt9KTsKLSAgZjdfYihzdGQ6OnBhaXI8aW50LCBpbnQ+e30pOwot Ci0KLSAgZjdfYShzdGQ6OnR1cGxlPGxvbmc+e30pOwotICBmN19iKHN0ZDo6 dHVwbGU8bG9uZywgbG9uZz57fSk7Ci0gIGY3X2Moc3RkOjp0dXBsZTxsb25n LCBsb25nLCBsb25nPnt9KTsKKyAgZjhfYSh2MF9hKTsgLy8geyBkZy1lcnJv ciAiY291bGQgbm90IGNvbnZlcnQiIH0KKyAgZjhfYih2MF9iKTsgLy8geyBk Zy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0KKyAgZjhfYyh2MF9jKTsg Ly8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0KKyAgZjhfYih2 MjApOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVydCIgfQorCisg IGY4X2EodjFfYSk7CisgIGY4X2IodjFfYik7CisgIGY4X2ModjFfYyk7CisK KyAgZjhfYSh7MX0pOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorICBm OF9iKHsxLDJ9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKyAgZjhf Yyh7MSwyLDN9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKworICBm OF9hKHN0ZDo6dHVwbGU8RXhwbGljaXQ+e30pOworICBmOF9iKHN0ZDo6dHVw bGU8RXhwbGljaXQsIEV4cGxpY2l0Pnt9KTsKKyAgZjhfYyhzdGQ6OnR1cGxl PEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+e30pOworCisgIGY4X2Eo c3RkOjp0dXBsZTxpbnQ+e30pOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3Qg Y29udmVydCIgfQorICBmOF9iKHN0ZDo6dHVwbGU8aW50LCBpbnQ+e30pOyAv LyB7IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVydCIgfQorICBmOF9jKHN0 ZDo6dHVwbGU8aW50LCBpbnQsIGludD57fSk7IC8vIHsgZGctZXJyb3IgImNv dWxkIG5vdCBjb252ZXJ0IiB9CisgIGY4X2Ioc3RkOjpwYWlyPGludCwgaW50 Pnt9KTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0KKwor ICBmOV9hKHYwX2EpOworICBmOV9iKHYwX2IpOworICBmOV9jKHYwX2MpOwor ICBmOV9iKHYyMCk7CisKKyAgZjlfYSh2Nl9hKTsKKyAgZjlfYih2Nl9iKTsK KyAgZjlfYyh2Nl9jKTsKKworICBmOV9hKHsxfSk7CisgIGY5X2IoezEsMn0p OworICBmOV9jKHsxLDIsM30pOworCisgIGY5X2Eoc3RkOjp0dXBsZTxpbnQ+ e30pOworICBmOV9iKHN0ZDo6dHVwbGU8aW50LCBpbnQ+e30pOworICBmOV9j KHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD57fSk7CisgIGY5X2Ioc3RkOjpw YWlyPGludCwgaW50Pnt9KTsKKworICBmOV9hKHN0ZDo6dHVwbGU8bG9uZz57 fSk7CisgIGY5X2Ioc3RkOjp0dXBsZTxsb25nLCBsb25nPnt9KTsKKyAgZjlf YyhzdGQ6OnR1cGxlPGxvbmcsIGxvbmcsIGxvbmc+e30pOworCisgIGYxMF9h KHt9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKyAgZjEwX2Ioe30p OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorICBmMTFfYSh7fSk7IC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CisgIGYxMV9iKHt9KTsgLy8geyBk Zy1lcnJvciAiZXhwbGljaXQiIH0KKworICBmMTBfYShzdGQ6OnR1cGxlPEV4 cGxpY2l0RGVmYXVsdD57fSk7CisgIGYxMF9iKHN0ZDo6dHVwbGU8RXhwbGlj aXREZWZhdWx0LCBpbnQ+e30pOworICBmMTFfYShzdGQ6OnR1cGxlPEV4cGxp Y2l0RGVmYXVsdERlZmF1bHQ+e30pOworICBmMTFfYihzdGQ6OnR1cGxlPEV4 cGxpY2l0RGVmYXVsdERlZmF1bHQsIGludD57fSk7CiB9Cg== --001a114377923cf8ff0523948237--