From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29484 invoked by alias); 16 Jan 2013 23:57:28 -0000 Received: (qmail 29469 invoked by uid 22791); 16 Jan 2013 23:57:27 -0000 X-SWARE-Spam-Status: No, hits=-5.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-lb0-f182.google.com (HELO mail-lb0-f182.google.com) (209.85.217.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 16 Jan 2013 23:57:21 +0000 Received: by mail-lb0-f182.google.com with SMTP id gg6so834638lbb.13 for ; Wed, 16 Jan 2013 15:57:19 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.112.40.129 with SMTP id x1mr1398867lbk.95.1358380639429; Wed, 16 Jan 2013 15:57:19 -0800 (PST) Received: by 10.112.125.71 with HTTP; Wed, 16 Jan 2013 15:57:19 -0800 (PST) In-Reply-To: References: Date: Wed, 16 Jan 2013 23:57:00 -0000 Message-ID: Subject: Re: [patch] Fix libstdc++/55043 - issue with nesting unordered_map containing unique_ptr into vector From: Jonathan Wakely To: "libstdc++" , gcc-patches Content-Type: multipart/mixed; boundary=e0cb4efe323e7ba70c04d370a39f 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 X-SW-Source: 2013-01/txt/msg00886.txt.bz2 --e0cb4efe323e7ba70c04d370a39f Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2128 Here's another attempt to fix this regression, I hope this time it doesn't cause more problems than it solves. Instead of specializing is_copy_constructible for the unordered containers this causes their copy constructors to be deleted if the value_type is not CopyInsertable into the container. This makes is_copy_constructible naturally give the right result, and so __move_if_noexcept does the right thing and the testcase in the PR passes. Yay. As Daniel pointed out in the PR comments, the unfortunate side effect of this approach is that we can no longer support instantiating unordered containers with incomplete types. That's undefined behaviour, but was allowed as QoI. Conformance trumps QoI, I'm afraid. If someday we have noexcept move constructors for the unordered containers we could allow incomplete types again. PR libstdc++/55043 (again) * include/bits/alloc_traits.h (allocator_traits::construct): Disable unless construction would be well-formed. (__allow_copy_cons, __check_copy_constructible): Define. * include/bits/unordered_map.h (__check_copy_constructible): Use as base class so copy constructor will be deleted if appropriate. (is_copy_constructible): Remove specialization. * include/bits/unordered_set.h: Likewise. * include/debug/unordered_map.h: Undo previous commit. Default copy and move constructors. * include/debug/unordered_set.h: Likewise. * include/profile/unordered_map.h: Undo previous commit. * include/profile/unordered_set.h: Likewise. * testsuite/23_containers/unordered_map/55043.cc: Fix test. * testsuite/23_containers/unordered_multimap/55043.cc: Likewise. * testsuite/23_containers/unordered_multiset/55043.cc: Likewise. * testsuite/23_containers/unordered_set/55043.cc: Likewise. * testsuite/23_containers/unordered_map/requirements/53339.cc: XFAIL, cannot support incomplete types. * testsuite/23_containers/unordered_multimap/requirements/53339.cc: Likewise. Tested x86_86-linux, committed to trunk. --e0cb4efe323e7ba70c04d370a39f Content-Type: text/plain; charset=US-ASCII; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hc14pqlf0 Content-length: 26491 Y29tbWl0IDIwZWU4ZGYyM2JjOTk5YzhjZjg4NzZiODhhMTg4YzRmNTFmYjc2 NjUKQXV0aG9yOiBKb25hdGhhbiBXYWtlbHkgPGp3YWtlbHkuZ2NjQGdtYWls LmNvbT4KRGF0ZTogICBXZWQgSmFuIDE2IDA5OjUwOjQ3IDIwMTMgKzAwMDAK CiAgICAJUFIgbGlic3RkYysrLzU1MDQzIChhZ2FpbikKICAgIAkqIGluY2x1 ZGUvYml0cy9hbGxvY190cmFpdHMuaCAoYWxsb2NhdG9yX3RyYWl0czo6Y29u c3RydWN0KTogRGlzYWJsZQogICAgCXVubGVzcyBjb25zdHJ1Y3Rpb24gd291 bGQgYmUgd2VsbC1mb3JtZWQuCiAgICAJKF9fYWxsb3dfY29weV9jb25zLCBf X2NoZWNrX2NvcHlfY29uc3RydWN0aWJsZSk6IERlZmluZS4KICAgIAkqIGlu Y2x1ZGUvYml0cy91bm9yZGVyZWRfbWFwLmggKF9fY2hlY2tfY29weV9jb25z dHJ1Y3RpYmxlKTogVXNlIGFzCiAgICAJYmFzZSBjbGFzcyBzbyBjb3B5IGNv bnN0cnVjdG9yIHdpbGwgYmUgZGVsZXRlZCBpZiBhcHByb3ByaWF0ZS4KICAg IAkoaXNfY29weV9jb25zdHJ1Y3RpYmxlKTogUmVtb3ZlIHNwZWNpYWxpemF0 aW9uLgogICAgCSogaW5jbHVkZS9iaXRzL3Vub3JkZXJlZF9zZXQuaDogTGlr ZXdpc2UuCiAgICAJKiBpbmNsdWRlL2RlYnVnL3Vub3JkZXJlZF9tYXAuaDog VW5kbyBwcmV2aW91cyBjb21taXQuIERlZmF1bHQgY29weQogICAgCWFuZCBt b3ZlIGNvbnN0cnVjdG9ycy4KICAgIAkqIGluY2x1ZGUvZGVidWcvdW5vcmRl cmVkX3NldC5oOiBMaWtld2lzZS4KICAgIAkqIGluY2x1ZGUvcHJvZmlsZS91 bm9yZGVyZWRfbWFwLmg6IFVuZG8gcHJldmlvdXMgY29tbWl0LgogICAgCSog aW5jbHVkZS9wcm9maWxlL3Vub3JkZXJlZF9zZXQuaDogTGlrZXdpc2UuCiAg ICAJKiB0ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbWFwLzU1 MDQzLmNjOiBGaXggdGVzdC4KICAgIAkqIHRlc3RzdWl0ZS8yM19jb250YWlu ZXJzL3Vub3JkZXJlZF9tdWx0aW1hcC81NTA0My5jYzogTGlrZXdpc2UuCiAg ICAJKiB0ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbXVsdGlz ZXQvNTUwNDMuY2M6IExpa2V3aXNlLgogICAgCSogdGVzdHN1aXRlLzIzX2Nv bnRhaW5lcnMvdW5vcmRlcmVkX3NldC81NTA0My5jYzogTGlrZXdpc2UuCiAg ICAJKiB0ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbWFwL3Jl cXVpcmVtZW50cy81MzMzOS5jYzogWEZBSUwsCiAgICAJY2Fubm90IHN1cHBv cnQgaW5jb21wbGV0ZSB0eXBlcy4KICAgIAkqIHRlc3RzdWl0ZS8yM19jb250 YWluZXJzL3Vub3JkZXJlZF9tdWx0aW1hcC9yZXF1aXJlbWVudHMvNTMzMzku Y2M6CiAgICAJTGlrZXdpc2UuCgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L2luY2x1ZGUvYml0cy9hbGxvY190cmFpdHMuaCBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvYWxsb2NfdHJhaXRzLmgKaW5kZXggYzYyNTlhMS4uMjZj NjRmMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9h bGxvY190cmFpdHMuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRz L2FsbG9jX3RyYWl0cy5oCkBAIC0yNTcsNyArMjU3LDggQEAgX0dMSUJDWFhf QUxMT0NfVFJfTkVTVEVEX1RZUEUocHJvcGFnYXRlX29uX2NvbnRhaW5lcl9z d2FwLAogCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l Li4uIF9BcmdzPgogCXN0YXRpYyB0eXBlbmFtZQotICAgICAgIAllbmFibGVf aWY8IV9fY29uc3RydWN0X2hlbHBlcjxfVHAsIF9BcmdzLi4uPjo6dmFsdWUs IHZvaWQ+Ojp0eXBlCisJZW5hYmxlX2lmPF9fYW5kXzxfX25vdF88X19jb25z dHJ1Y3RfaGVscGVyPF9UcCwgX0FyZ3MuLi4+PiwKKwkJCSBpc19jb25zdHJ1 Y3RpYmxlPF9UcCwgX0FyZ3MuLi4+Pjo6dmFsdWUsIHZvaWQ+Ojp0eXBlCiAg ICAgICAgCV9TX2NvbnN0cnVjdChfQWxsb2MmLCBfVHAqIF9fcCwgX0FyZ3Mm Ji4uLiBfX2FyZ3MpCiAJeyA6Om5ldygodm9pZCopX19wKSBfVHAoc3RkOjpm b3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQogCkBAIC0zODksNyArMzkw LDggQEAgX0dMSUJDWFhfQUxMT0NfVFJfTkVTVEVEX1RZUEUocHJvcGFnYXRl X29uX2NvbnRhaW5lcl9zd2FwLAogICAgICAgICogIGFyZ3VtZW50cyBAYSBf X2FyZ3MuLi4KICAgICAgICovCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf VHAsIHR5cGVuYW1lLi4uIF9BcmdzPgotCXN0YXRpYyB2b2lkIGNvbnN0cnVj dChfQWxsb2MmIF9fYSwgX1RwKiBfX3AsIF9BcmdzJiYuLi4gX19hcmdzKQor CXN0YXRpYyBhdXRvIGNvbnN0cnVjdChfQWxsb2MmIF9fYSwgX1RwKiBfX3As IF9BcmdzJiYuLi4gX19hcmdzKQorCS0+IGRlY2x0eXBlKF9TX2NvbnN0cnVj dChfX2EsIF9fcCwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSkK IAl7IF9TX2NvbnN0cnVjdChfX2EsIF9fcCwgc3RkOjpmb3J3YXJkPF9Bcmdz PihfX2FyZ3MpLi4uKTsgfQogCiAgICAgICAvKioKQEAgLTUyNiw5ICs1Mjgs MTAgQEAgX0dMSUJDWFhfQUxMT0NfVFJfTkVTVEVEX1RZUEUocHJvcGFnYXRl X29uX2NvbnRhaW5lcl9zd2FwLAogCV9NX3NlbGVjdCguLi4pOwogCiAgICAg cHVibGljOgotCXR5cGVkZWYgZGVjbHR5cGUoX01fc2VsZWN0PHR5cGVuYW1l IF9BbGxvYzo6dmFsdWVfdHlwZT4oMCkpIHR5cGU7CisgICAgICB0eXBlZGVm IGRlY2x0eXBlKF9NX3NlbGVjdDx0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5 cGU+KDApKSB0eXBlOwogICAgIH07CiAKKyAgLy8gdHJ1ZSBpZiBfQWxsb2M6 OnZhbHVlX3R5cGUgaXMgQ29weUluc2VydGFibGUgaW50byBjb250YWluZXJz IHVzaW5nIF9BbGxvYwogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAg ICAgc3RydWN0IF9faXNfY29weV9pbnNlcnRhYmxlCiAgICAgOiBfX2lzX2Nv cHlfaW5zZXJ0YWJsZV9pbXBsPF9BbGxvYz46OnR5cGUKQEAgLTU0MCw5ICs1 NDMsMjMgQEAgX0dMSUJDWFhfQUxMT0NfVFJfTkVTVEVEX1RZUEUocHJvcGFn YXRlX29uX2NvbnRhaW5lcl9zd2FwLAogICAgIDogaXNfY29weV9jb25zdHJ1 Y3RpYmxlPF9UcD4KICAgICB7IH07CiAKLSAgdGVtcGxhdGU8dHlwZW5hbWUg X0NvbnRhaW5lcj4KLSAgICB1c2luZyBfX2hhc19jb3B5X2luc2VydGFibGVf dmFsCi0gICAgICA9IF9faXNfY29weV9pbnNlcnRhYmxlPHR5cGVuYW1lIF9D b250YWluZXI6OmFsbG9jYXRvcl90eXBlPjsKKyAgLy8gVXNlZCB0byBhbGxv dyBjb3B5IGNvbnN0cnVjdGlvbiBvZiB1bm9yZGVyZWQgY29udGFpbmVycwor ICB0ZW1wbGF0ZTxib29sPiBzdHJ1Y3QgX19hbGxvd19jb3B5X2NvbnMgeyB9 OworCisgIC8vIFVzZWQgdG8gZGVsZXRlIGNvcHkgY29uc3RydWN0b3Igb2Yg dW5vcmRlcmVkIGNvbnRhaW5lcnMKKyAgdGVtcGxhdGU8PgorICAgIHN0cnVj dCBfX2FsbG93X2NvcHlfY29uczxmYWxzZT4KKyAgICB7CisgICAgICBfX2Fs bG93X2NvcHlfY29ucygpID0gZGVmYXVsdDsKKyAgICAgIF9fYWxsb3dfY29w eV9jb25zKGNvbnN0IF9fYWxsb3dfY29weV9jb25zJikgPSBkZWxldGU7Cisg ICAgICBfX2FsbG93X2NvcHlfY29ucyhfX2FsbG93X2NvcHlfY29ucyYmKSA9 IGRlZmF1bHQ7CisgICAgICBfX2FsbG93X2NvcHlfY29ucyYgb3BlcmF0b3I9 KGNvbnN0IF9fYWxsb3dfY29weV9jb25zJikgPSBkZWZhdWx0OworICAgICAg X19hbGxvd19jb3B5X2NvbnMmIG9wZXJhdG9yPShfX2FsbG93X2NvcHlfY29u cyYmKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQWxsb2M+CisgICAgdXNpbmcgX19jaGVja19jb3B5X2NvbnN0cnVjdGli bGUKKyAgICAgID0gX19hbGxvd19jb3B5X2NvbnM8X19pc19jb3B5X2luc2Vy dGFibGU8X0FsbG9jPjo6dmFsdWU+OwogCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlIHN0ZApkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy91bm9yZGVyZWRfbWFwLmggYi9s aWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3Vub3JkZXJlZF9tYXAuaAppbmRl eCAwMjM1YTk5Li5iZTIxM2UwIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv aW5jbHVkZS9iaXRzL3Vub3JkZXJlZF9tYXAuaAorKysgYi9saWJzdGRjKyst djMvaW5jbHVkZS9iaXRzL3Vub3JkZXJlZF9tYXAuaApAQCAtOTQsNyArOTQs NyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ09OVEFJTkVSCiAJICAg Y2xhc3MgX0hhc2ggPSBoYXNoPF9LZXk+LAogCSAgIGNsYXNzIF9QcmVkID0g c3RkOjplcXVhbF90bzxfS2V5PiwKIAkgICBjbGFzcyBfQWxsb2MgPSBzdGQ6 OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgX0tleSwgX1RwPiA+ID4KLSAg ICBjbGFzcyB1bm9yZGVyZWRfbWFwCisgICAgY2xhc3MgdW5vcmRlcmVkX21h cCA6IF9fY2hlY2tfY29weV9jb25zdHJ1Y3RpYmxlPF9BbGxvYz4KICAgICB7 CiAgICAgICB0eXBlZGVmIF9fdW1hcF9oYXNodGFibGU8X0tleSwgX1RwLCBf SGFzaCwgX1ByZWQsIF9BbGxvYz4gIF9IYXNodGFibGU7CiAgICAgICBfSGFz aHRhYmxlIF9NX2g7CkBAIC03NzUsNyArNzc1LDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX0NPTlRBSU5FUgogCSAgIGNsYXNzIF9IYXNoID0gaGFz aDxfS2V5PiwKIAkgICBjbGFzcyBfUHJlZCA9IHN0ZDo6ZXF1YWxfdG88X0tl eT4sCiAJICAgY2xhc3MgX0FsbG9jID0gc3RkOjphbGxvY2F0b3I8c3RkOjpw YWlyPGNvbnN0IF9LZXksIF9UcD4gPiA+Ci0gICAgY2xhc3MgdW5vcmRlcmVk X211bHRpbWFwCisgICAgY2xhc3MgdW5vcmRlcmVkX211bHRpbWFwIDogX19j aGVja19jb3B5X2NvbnN0cnVjdGlibGU8X0FsbG9jPgogICAgIHsKICAgICAg IHR5cGVkZWYgX191bW1hcF9oYXNodGFibGU8X0tleSwgX1RwLCBfSGFzaCwg X1ByZWQsIF9BbGxvYz4gIF9IYXNodGFibGU7CiAgICAgICBfSGFzaHRhYmxl IF9NX2g7CkBAIC0xNDA4LDI2ICsxNDA4LDYgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX0NPTlRBSU5FUgogICAgIHsgcmV0dXJuICEoX194ID09IF9f eSk7IH0KIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DT05UQUlORVIKLQot ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVHAsIHR5cGVu YW1lIF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwKLQkgICB0eXBlbmFtZSBfQWxs b2M+Ci0gICAgc3RydWN0Ci0gICAgaXNfY29weV9jb25zdHJ1Y3RpYmxlPF9H TElCQ1hYX1NURF9DOjp1bm9yZGVyZWRfbWFwPF9LZXksIF9UcCwgX0hhc2gs Ci0JCQkJCQkJX1ByZWQsIF9BbGxvYz4+Ci0gICAgOiBfX2hhc19jb3B5X2lu c2VydGFibGVfdmFsPF9HTElCQ1hYX1NURF9DOjp1bm9yZGVyZWRfbWFwPF9L ZXksIF9UcCwgX0hhc2gsCi0JCQkJCQkJICAgICAgX1ByZWQsIF9BbGxvYz4+ Ci0gICAgeyB9OwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVu YW1lIF9UcCwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9QcmVkLAotCSAg IHR5cGVuYW1lIF9BbGxvYz4KLSAgICBzdHJ1Y3QKLSAgICBpc19jb3B5X2Nv bnN0cnVjdGlibGU8X0dMSUJDWFhfU1REX0M6OnVub3JkZXJlZF9tdWx0aW1h cDxfS2V5LCBfVHAsIF9IYXNoLAotCQkJCQkJCSAgICAgX1ByZWQsIF9BbGxv Yz4+Ci0gICAgOiBfX2hhc19jb3B5X2luc2VydGFibGVfdmFsPF9HTElCQ1hY X1NURF9DOjp1bm9yZGVyZWRfbXVsdGltYXA8X0tleSwgX1RwLAotCQkJCQkJ CQkgICBfSGFzaCwgX1ByZWQsCi0JCQkJCQkJCSAgIF9BbGxvYz4+Ci0gICAg eyB9OwotCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogI2VuZGlmIC8qIF9VTk9S REVSRURfTUFQX0ggKi8KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL2JpdHMvdW5vcmRlcmVkX3NldC5oIGIvbGlic3RkYysrLXYzL2luY2x1 ZGUvYml0cy91bm9yZGVyZWRfc2V0LmgKaW5kZXggMmFkYTYzZC4uNTBjMjMz ZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy91bm9y ZGVyZWRfc2V0LmgKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy91 bm9yZGVyZWRfc2V0LmgKQEAgLTkwLDcgKzkwLDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX0NPTlRBSU5FUgogCSAgIGNsYXNzIF9IYXNoID0gaGFz aDxfVmFsdWU+LAogCSAgIGNsYXNzIF9QcmVkID0gc3RkOjplcXVhbF90bzxf VmFsdWU+LAogCSAgIGNsYXNzIF9BbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPF9W YWx1ZT4gPgotICAgIGNsYXNzIHVub3JkZXJlZF9zZXQKKyAgICBjbGFzcyB1 bm9yZGVyZWRfc2V0IDogX19jaGVja19jb3B5X2NvbnN0cnVjdGlibGU8X0Fs bG9jPgogICAgIHsKICAgICAgIHR5cGVkZWYgX191c2V0X2hhc2h0YWJsZTxf VmFsdWUsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPiAgX0hhc2h0YWJsZTsKICAg ICAgIF9IYXNodGFibGUgX01faDsKQEAgLTY5NSw3ICs2OTUsNyBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ09OVEFJTkVSCiAJICAgY2xhc3MgX0hh c2ggPSBoYXNoPF9WYWx1ZT4sCiAJICAgY2xhc3MgX1ByZWQgPSBzdGQ6OmVx dWFsX3RvPF9WYWx1ZT4sCiAJICAgY2xhc3MgX0FsbG9jID0gc3RkOjphbGxv Y2F0b3I8X1ZhbHVlPiA+Ci0gICAgY2xhc3MgdW5vcmRlcmVkX211bHRpc2V0 CisgICAgY2xhc3MgdW5vcmRlcmVkX211bHRpc2V0IDogX19jaGVja19jb3B5 X2NvbnN0cnVjdGlibGU8X0FsbG9jPgogICAgIHsKICAgICAgIHR5cGVkZWYg X191bXNldF9oYXNodGFibGU8X1ZhbHVlLCBfSGFzaCwgX1ByZWQsIF9BbGxv Yz4gIF9IYXNodGFibGU7CiAgICAgICBfSGFzaHRhYmxlIF9NX2g7CkBAIC0x MjkxLDIzICsxMjkxLDYgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NP TlRBSU5FUgogICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KIAogX0dM SUJDWFhfRU5EX05BTUVTUEFDRV9DT05UQUlORVIKLQotICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1ByZWQs IHR5cGVuYW1lIF9BbGxvYz4KLSAgICBzdHJ1Y3QgaXNfY29weV9jb25zdHJ1 Y3RpYmxlPF9HTElCQ1hYX1NURF9DOjp1bm9yZGVyZWRfc2V0PF9LZXksIF9I YXNoLAotCQkJCQkJCSAgICAgICBfUHJlZCwgX0FsbG9jPj4KLSAgICA6IF9f aGFzX2NvcHlfaW5zZXJ0YWJsZV92YWw8X0dMSUJDWFhfU1REX0M6OnVub3Jk ZXJlZF9zZXQ8X0tleSwgX0hhc2gsCi0JCQkJCQkJICAgICAgX1ByZWQsIF9B bGxvYz4+Ci0gICAgeyB9OwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXks IHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwgdHlwZW5hbWUgX0Fs bG9jPgotICAgIHN0cnVjdAotICAgIGlzX2NvcHlfY29uc3RydWN0aWJsZTxf R0xJQkNYWF9TVERfQzo6dW5vcmRlcmVkX211bHRpc2V0PF9LZXksIF9IYXNo LAotCQkJCQkJCSAgICAgX1ByZWQsIF9BbGxvYz4+Ci0gICAgOiBfX2hhc19j b3B5X2luc2VydGFibGVfdmFsPF9HTElCQ1hYX1NURF9DOjp1bm9yZGVyZWRf bXVsdGlzZXQ8X0tleSwgX0hhc2gsCi0JCQkJCQkJCSAgIF9QcmVkLAotCQkJ CQkJCQkgICBfQWxsb2M+PgotICAgIHsgfTsKLQogfSAvLyBuYW1lc3BhY2Ug c3RkCiAKICNlbmRpZiAvKiBfVU5PUkRFUkVEX1NFVF9IICovCmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy91bm9yZGVyZWRfbWFw IGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvdW5vcmRlcmVkX21hcApp bmRleCAxMTVhYmI1Li4yODQ0NTBmIDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvaW5jbHVkZS9kZWJ1Zy91bm9yZGVyZWRfbWFwCisrKyBiL2xpYnN0ZGMr Ky12My9pbmNsdWRlL2RlYnVnL3Vub3JkZXJlZF9tYXAKQEAgLTk2LDE0ICs5 NiwxMiBAQCBuYW1lc3BhY2UgX19kZWJ1ZwogCQlfX2dudV9kZWJ1Zzo6X19i YXNlKF9fbGFzdCksIF9fbiwKIAkJX19oZiwgX19lcWwsIF9fYSkgeyB9CiAK LSAgICAgIHVub3JkZXJlZF9tYXAoY29uc3QgdW5vcmRlcmVkX21hcCYgX194 KSAKLSAgICAgIDogX0Jhc2UoX194KSB7IH0KKyAgICAgIHVub3JkZXJlZF9t YXAoY29uc3QgdW5vcmRlcmVkX21hcCYgX194KSA9IGRlZmF1bHQ7CiAKICAg ICAgIHVub3JkZXJlZF9tYXAoY29uc3QgX0Jhc2UmIF9feCkKICAgICAgIDog X0Jhc2UoX194KSB7IH0KIAotICAgICAgdW5vcmRlcmVkX21hcCh1bm9yZGVy ZWRfbWFwJiYgX194KQotICAgICAgOiBfQmFzZShzdGQ6Om1vdmUoX194KSkg eyB9CisgICAgICB1bm9yZGVyZWRfbWFwKHVub3JkZXJlZF9tYXAmJiBfX3gp ID0gZGVmYXVsdDsKIAogICAgICAgdW5vcmRlcmVkX21hcChpbml0aWFsaXpl cl9saXN0PHZhbHVlX3R5cGU+IF9fbCwKIAkJICAgIHNpemVfdHlwZSBfX24g PSAwLApAQCAtNTQ3LDE0ICs1NDUsMTIgQEAgbmFtZXNwYWNlIF9fZGVidWcK IAkJX19nbnVfZGVidWc6Ol9fYmFzZShfX2xhc3QpLCBfX24sCiAJCV9faGYs IF9fZXFsLCBfX2EpIHsgfQogCi0gICAgICB1bm9yZGVyZWRfbXVsdGltYXAo Y29uc3QgdW5vcmRlcmVkX211bHRpbWFwJiBfX3gpIAotICAgICAgOiBfQmFz ZShfX3gpIHsgfQorICAgICAgdW5vcmRlcmVkX211bHRpbWFwKGNvbnN0IHVu b3JkZXJlZF9tdWx0aW1hcCYgX194KSA9IGRlZmF1bHQ7CiAKICAgICAgIHVu b3JkZXJlZF9tdWx0aW1hcChjb25zdCBfQmFzZSYgX194KSAKICAgICAgIDog X0Jhc2UoX194KSB7IH0KIAotICAgICAgdW5vcmRlcmVkX211bHRpbWFwKHVu b3JkZXJlZF9tdWx0aW1hcCYmIF9feCkKLSAgICAgIDogX0Jhc2Uoc3RkOjpt b3ZlKF9feCkpIHsgfQorICAgICAgdW5vcmRlcmVkX211bHRpbWFwKHVub3Jk ZXJlZF9tdWx0aW1hcCYmIF9feCkgPSBkZWZhdWx0OwogCiAgICAgICB1bm9y ZGVyZWRfbXVsdGltYXAoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBf X2wsCiAJCQkgc2l6ZV90eXBlIF9fbiA9IDAsCkBAIC05MzgsMzAgKzkzNCw2 IEBAIG5hbWVzcGFjZSBfX2RlYnVnCiAgICAgeyByZXR1cm4gIShfX3ggPT0g X195KTsgfQogCiB9IC8vIG5hbWVzcGFjZSBfX2RlYnVnCi0KLV9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0KLSAgdGVtcGxhdGU8dHlwZW5h bWUgX0tleSwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5h bWUgX1ByZWQsCi0JICAgdHlwZW5hbWUgX0FsbG9jPgotICAgIHN0cnVjdAot ICAgIGlzX2NvcHlfY29uc3RydWN0aWJsZTxfX2RlYnVnOjp1bm9yZGVyZWRf bWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLAotCQkJCQkJIF9BbGxvYz4+ Ci0gICAgOiBpc19jb3B5X2NvbnN0cnVjdGlibGU8IF9HTElCQ1hYX1NURF9D Ojp1bm9yZGVyZWRfbWFwPF9LZXksIF9UcCwKLQkJCQkJCQkgICBfSGFzaCwg X1ByZWQsCi0JCQkJCQkJICAgX0FsbG9jPiA+Ci0gICAgeyB9OwotCi0gIHRl bXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg X0hhc2gsIHR5cGVuYW1lIF9QcmVkLAotCSAgIHR5cGVuYW1lIF9BbGxvYz4K LSAgICBzdHJ1Y3QKLSAgICBpc19jb3B5X2NvbnN0cnVjdGlibGU8X19kZWJ1 Zzo6dW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVk LAotCQkJCQkJICAgICAgX0FsbG9jPj4KLSAgICA6IGlzX2NvcHlfY29uc3Ry dWN0aWJsZTwgX0dMSUJDWFhfU1REX0M6OnVub3JkZXJlZF9tdWx0aW1hcDxf S2V5LCBfVHAsCi0JCQkJCQkJCV9IYXNoLCBfUHJlZCwKLQkJCQkJCQkJX0Fs bG9jPiA+Ci0gICAgeyB9OwotCi1fR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiAjZW5kaWYgLy8gQysrMTEK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL3Vub3Jk ZXJlZF9zZXQgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy91bm9yZGVy ZWRfc2V0CmluZGV4IDg5NWM5NDMuLjJmZTcxZTQgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL3Vub3JkZXJlZF9zZXQKKysrIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvdW5vcmRlcmVkX3NldApAQCAt OTYsMTQgKzk2LDEyIEBAIG5hbWVzcGFjZSBfX2RlYnVnCiAJCV9fZ251X2Rl YnVnOjpfX2Jhc2UoX19sYXN0KSwgX19uLAogCQlfX2hmLCBfX2VxbCwgX19h KSB7IH0KIAotICAgICAgdW5vcmRlcmVkX3NldChjb25zdCB1bm9yZGVyZWRf c2V0JiBfX3gpIAotICAgICAgOiBfQmFzZShfX3gpIHsgfQorICAgICAgdW5v cmRlcmVkX3NldChjb25zdCB1bm9yZGVyZWRfc2V0JiBfX3gpID0gZGVmYXVs dDsKIAogICAgICAgdW5vcmRlcmVkX3NldChjb25zdCBfQmFzZSYgX194KSAK ICAgICAgIDogX0Jhc2UoX194KSB7IH0KIAotICAgICAgdW5vcmRlcmVkX3Nl dCh1bm9yZGVyZWRfc2V0JiYgX194KQotICAgICAgOiBfQmFzZShzdGQ6Om1v dmUoX194KSkgeyB9CisgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9z ZXQmJiBfX3gpID0gZGVmYXVsdDsKIAogICAgICAgdW5vcmRlcmVkX3NldChp bml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9fbCwKIAkJICAgIHNpemVf dHlwZSBfX24gPSAwLApAQCAtNTQyLDE0ICs1NDAsMTIgQEAgbmFtZXNwYWNl IF9fZGVidWcKIAkJX19nbnVfZGVidWc6Ol9fYmFzZShfX2xhc3QpLCBfX24s CiAJCV9faGYsIF9fZXFsLCBfX2EpIHsgfQogCi0gICAgICB1bm9yZGVyZWRf bXVsdGlzZXQoY29uc3QgdW5vcmRlcmVkX211bHRpc2V0JiBfX3gpIAotICAg ICAgOiBfQmFzZShfX3gpIHsgfQorICAgICAgdW5vcmRlcmVkX211bHRpc2V0 KGNvbnN0IHVub3JkZXJlZF9tdWx0aXNldCYgX194KSA9IGRlZmF1bHQ7CiAK ICAgICAgIHVub3JkZXJlZF9tdWx0aXNldChjb25zdCBfQmFzZSYgX194KSAK ICAgICAgIDogX0Jhc2UoX194KSB7IH0KIAotICAgICAgdW5vcmRlcmVkX211 bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCYmIF9feCkKLSAgICAgIDogX0Jh c2Uoc3RkOjptb3ZlKF9feCkpIHsgfQorICAgICAgdW5vcmRlcmVkX211bHRp c2V0KHVub3JkZXJlZF9tdWx0aXNldCYmIF9feCkgPSBkZWZhdWx0OwogCiAg ICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1 ZV90eXBlPiBfX2wsCiAJCQkgc2l6ZV90eXBlIF9fbiA9IDAsCkBAIC05MjAs MjcgKzkxNiw2IEBAIG5hbWVzcGFjZSBfX2RlYnVnCiAgICAgeyByZXR1cm4g IShfX3ggPT0gX195KTsgfQogCiB9IC8vIG5hbWVzcGFjZSBfX2RlYnVnCi0K LV9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0KLSAgdGVtcGxh dGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9Q cmVkLCB0eXBlbmFtZSBfQWxsb2M+Ci0gICAgc3RydWN0Ci0gICAgaXNfY29w eV9jb25zdHJ1Y3RpYmxlPF9fZGVidWc6OnVub3JkZXJlZF9zZXQ8X0tleSwg X0hhc2gsIF9QcmVkLCBfQWxsb2M+PgotICAgIDogaXNfY29weV9jb25zdHJ1 Y3RpYmxlPCBfR0xJQkNYWF9TVERfQzo6dW5vcmRlcmVkX3NldDxfS2V5LAot CQkJCQkJCSAgIF9IYXNoLCBfUHJlZCwKLQkJCQkJCQkgICBfQWxsb2M+ID4K LSAgICB7IH07Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5h bWUgX0hhc2gsIHR5cGVuYW1lIF9QcmVkLCB0eXBlbmFtZSBfQWxsb2M+Ci0g ICAgc3RydWN0Ci0gICAgaXNfY29weV9jb25zdHJ1Y3RpYmxlPF9fZGVidWc6 OnVub3JkZXJlZF9tdWx0aXNldDxfS2V5LCBfSGFzaCwgX1ByZWQsCi0JCQkJ CQkgICAgICBfQWxsb2M+PgotICAgIDogaXNfY29weV9jb25zdHJ1Y3RpYmxl PCBfR0xJQkNYWF9TVERfQzo6dW5vcmRlcmVkX211bHRpc2V0PF9LZXksCi0J CQkJCQkJCV9IYXNoLCBfUHJlZCwKLQkJCQkJCQkJX0FsbG9jPiA+Ci0gICAg eyB9OwotCi1fR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8g bmFtZXNwYWNlIHN0ZAogCiAjZW5kaWYgLy8gQysrMTEKZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My9pbmNsdWRlL3Byb2ZpbGUvdW5vcmRlcmVkX21hcCBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL3Byb2ZpbGUvdW5vcmRlcmVkX21hcApp bmRleCA1ZWJjYmY2Li4wZmVlMTc2IDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvaW5jbHVkZS9wcm9maWxlL3Vub3JkZXJlZF9tYXAKKysrIGIvbGlic3Rk YysrLXYzL2luY2x1ZGUvcHJvZmlsZS91bm9yZGVyZWRfbWFwCkBAIC0zMzks MjUgKzMzOSwxMSBAQCBuYW1lc3BhY2UgX19wcm9maWxlCiAJICAgICAgIGNv bnN0IHVub3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9B bGxvYz4mIF9feSkKICAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CiAK LX0gLy8gbmFtZXNwYWNlIF9fcHJvZmlsZQotCi1fR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgotICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0 eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwK LQkgICB0eXBlbmFtZSBfQWxsb2M+Ci0gICAgc3RydWN0Ci0gICAgaXNfY29w eV9jb25zdHJ1Y3RpYmxlPF9fcHJvZmlsZTo6dW5vcmRlcmVkX21hcDxfS2V5 LCBfVHAsIF9IYXNoLAotCQkJCQkJICAgX1ByZWQsIF9BbGxvYz4+Ci0gICAg OiBpc19jb3B5X2NvbnN0cnVjdGlibGU8IF9HTElCQ1hYX1NURF9CQVNFID4K LSAgICB7IH07Ci1fR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KLQog I3VuZGVmIF9HTElCQ1hYX0JBU0UKICN1bmRlZiBfR0xJQkNYWF9TVERfQkFT RQogI2RlZmluZSBfR0xJQkNYWF9CQVNFIHVub3JkZXJlZF9tdWx0aW1hcDxf S2V5LCBfVHAsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPgogI2RlZmluZSBfR0xJ QkNYWF9TVERfQkFTRSBfR0xJQkNYWF9TVERfQzo6X0dMSUJDWFhfQkFTRQog Ci1uYW1lc3BhY2UgX19wcm9maWxlCi17CiAgIC8vLyBDbGFzcyBzdGQ6OnVu b3JkZXJlZF9tdWx0aW1hcCB3cmFwcGVyIHdpdGggcGVyZm9ybWFuY2UgaW5z dHJ1bWVudGF0aW9uLgogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBl bmFtZSBfVHAsCiAJICAgdHlwZW5hbWUgX0hhc2ggID0gc3RkOjpoYXNoPF9L ZXk+LApAQCAtNjIzLDE4ICs2MDksNiBAQCBuYW1lc3BhY2UgX19wcm9maWxl CiAgICAgeyByZXR1cm4gIShfX3ggPT0gX195KTsgfQogCiB9IC8vIG5hbWVz cGFjZSBfX3Byb2ZpbGUKLQotX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBf VHAsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwKLQkgICB0eXBl bmFtZSBfQWxsb2M+Ci0gICAgc3RydWN0Ci0gICAgaXNfY29weV9jb25zdHJ1 Y3RpYmxlPF9fcHJvZmlsZTo6dW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9U cCwgX0hhc2gsCi0JCQkJCQkJX1ByZWQsIF9BbGxvYz4+Ci0gICAgOiBpc19j b3B5X2NvbnN0cnVjdGlibGU8IF9HTElCQ1hYX1NURF9CQVNFID4KLSAgICB7 IH07Ci0KLV9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBu YW1lc3BhY2Ugc3RkCiAKICN1bmRlZiBfR0xJQkNYWF9CQVNFCmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9wcm9maWxlL3Vub3JkZXJlZF9z ZXQgYi9saWJzdGRjKystdjMvaW5jbHVkZS9wcm9maWxlL3Vub3JkZXJlZF9z ZXQKaW5kZXggZWJlMWM3ZC4uNzM3YjZlYyAxMDA2NDQKLS0tIGEvbGlic3Rk YysrLXYzL2luY2x1ZGUvcHJvZmlsZS91bm9yZGVyZWRfc2V0CisrKyBiL2xp YnN0ZGMrKy12My9pbmNsdWRlL3Byb2ZpbGUvdW5vcmRlcmVkX3NldApAQCAt MzA1LDIzICszMDUsMTEgQEAgbmFtZXNwYWNlIF9fcHJvZmlsZQogCSAgICAg ICBjb25zdCB1bm9yZGVyZWRfc2V0PF9LZXksIF9IYXNoLCBfUHJlZCwgX0Fs bG9jPiYgX195KQogICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KIAot fSAvLyBuYW1lc3BhY2UgX19wcm9maWxlCi0KLV9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCi0gIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5 cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwgdHlwZW5hbWUgX0FsbG9j PgotICAgIHN0cnVjdAotICAgIGlzX2NvcHlfY29uc3RydWN0aWJsZTxfX3By b2ZpbGU6OnVub3JkZXJlZF9zZXQ8X0tleSwgX0hhc2gsIF9QcmVkLCBfQWxs b2M+PgotICAgIDogaXNfY29weV9jb25zdHJ1Y3RpYmxlPCBfR0xJQkNYWF9T VERfQkFTRSA+Ci0gICAgeyB9OwotX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9W RVJTSU9OCi0KICN1bmRlZiBfR0xJQkNYWF9CQVNFCiAjdW5kZWYgX0dMSUJD WFhfU1REX0JBU0UKICNkZWZpbmUgX0dMSUJDWFhfU1REX0JBU0UgX0dMSUJD WFhfU1REX0M6Ol9HTElCQ1hYX0JBU0UKICNkZWZpbmUgX0dMSUJDWFhfQkFT RSB1bm9yZGVyZWRfbXVsdGlzZXQ8X1ZhbHVlLCBfSGFzaCwgX1ByZWQsIF9B bGxvYz4KIAotbmFtZXNwYWNlIF9fcHJvZmlsZQotewogICAvKiogQGJyaWVm IFVub3JkZXJlZF9tdWx0aXNldCB3cmFwcGVyIHdpdGggcGVyZm9ybWFuY2Ug aW5zdHJ1bWVudGF0aW9uLiAgKi8KICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zh bHVlLAogICAgICAgIHR5cGVuYW1lIF9IYXNoICA9IHN0ZDo6aGFzaDxfVmFs dWU+LApAQCAtNTgwLDE3ICs1NjgsNiBAQCBuYW1lc3BhY2UgX19wcm9maWxl CiAgICAgeyByZXR1cm4gIShfX3ggPT0gX195KTsgfQogCiB9IC8vIG5hbWVz cGFjZSBfX3Byb2ZpbGUKLQotX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1l IF9IYXNoLCB0eXBlbmFtZSBfUHJlZCwgdHlwZW5hbWUgX0FsbG9jPgotICAg IHN0cnVjdAotICAgIGlzX2NvcHlfY29uc3RydWN0aWJsZTxfX3Byb2ZpbGU6 OnVub3JkZXJlZF9tdWx0aXNldDxfVmFsdWUsIF9IYXNoLAotCQkJCQkJCV9Q cmVkLCBfQWxsb2M+PgotICAgIDogaXNfY29weV9jb25zdHJ1Y3RpYmxlPCBf R0xJQkNYWF9TVERfQkFTRSA+Ci0gICAgeyB9OwotCi1fR0xJQkNYWF9FTkRf TkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiAjdW5k ZWYgX0dMSUJDWFhfQkFTRQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3JkZXJlZF9tYXAvNTUwNDMuY2Mg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMvdW5vcmRl cmVkX21hcC81NTA0My5jYwppbmRleCAxMGQzNmEwLi41MGU1NDM3IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMv dW5vcmRlcmVkX21hcC81NTA0My5jYworKysgYi9saWJzdGRjKystdjMvdGVz dHN1aXRlLzIzX2NvbnRhaW5lcnMvdW5vcmRlcmVkX21hcC81NTA0My5jYwpA QCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgQWxsb2MgOiBzdGQ6OmFsbG9jYXRv cjxUPgogCiAvLyB2ZXJpZnkgaXNfY29weV9jb25zdHJ1Y3RpYmxlIGRlcGVu ZHMgb24gYWxsb2NhdG9yCiB0eXBlZGVmIHRlc3RfdHlwZTxBbGxvYzxNb3Zl T25seSwgdHJ1ZT4+IHVpbV9ydmFsOwotc3RhdGljX2Fzc2VydChzdGQ6Omlz X2NvcHlfY29uc3RydWN0aWJsZTx1aW1fcnZhbD46OnZhbHVlLCAiaXMgbm90 IGNvcHlhYmxlIik7CitzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2NvcHlfY29u c3RydWN0aWJsZTx1aW1fcnZhbD46OnZhbHVlLCAiaXMgbm90IGNvcHlhYmxl Iik7CiAKIHR5cGVkZWYgdGVzdF90eXBlPEFsbG9jPE1vdmVPbmx5LCBmYWxz ZT4+IHVpbV9sdmFsOwogc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29u c3RydWN0aWJsZTx1aW1fbHZhbD46OnZhbHVlLCAiaXMgY29weWFibGUiKTsK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFp bmVycy91bm9yZGVyZWRfbWFwL3JlcXVpcmVtZW50cy81MzMzOS5jYyBiL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRf bWFwL3JlcXVpcmVtZW50cy81MzMzOS5jYwppbmRleCA0ZGY0NDkzLi4xMDQw NGNlIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2Nv bnRhaW5lcnMvdW5vcmRlcmVkX21hcC9yZXF1aXJlbWVudHMvNTMzMzkuY2MK KysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vu b3JkZXJlZF9tYXAvcmVxdWlyZW1lbnRzLzUzMzM5LmNjCkBAIC0xLDcgKzEs OSBAQAotLy8geyBkZy1kbyBjb21waWxlIH0KKy8vIFhGQUlMIGJlY2F1c2Ug b2YgUFIgbGlic3RkYysrLzU1MDQzIGZpeAorLy8geyBkZy1kbyBjb21waWxl IHsgeGZhaWwgKi0qLSogfSB9CisvLyB7IGRnLWV4Y2Vzcy1lcnJvcnMgIiIg fQogLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMTEiIH0KIAotLy8gQ29w eXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorLy8gQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiAvLwogLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJl ZQogLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlCmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMvdW5vcmRlcmVkX211bHRpbWFw LzU1MDQzLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWlu ZXJzL3Vub3JkZXJlZF9tdWx0aW1hcC81NTA0My5jYwppbmRleCA5YWU5MTJl ZjYuLmFmZWVjYWEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbXVsdGltYXAvNTUwNDMuY2MK KysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vu b3JkZXJlZF9tdWx0aW1hcC81NTA0My5jYwpAQCAtNjMsNyArNjMsNyBAQCBz dHJ1Y3QgQWxsb2MgOiBzdGQ6OmFsbG9jYXRvcjxUPgogCiAvLyB2ZXJpZnkg aXNfY29weV9jb25zdHJ1Y3RpYmxlIGRlcGVuZHMgb24gYWxsb2NhdG9yCiB0 eXBlZGVmIHRlc3RfdHlwZTxBbGxvYzxNb3ZlT25seSwgdHJ1ZT4+IHVpbV9y dmFsOwotc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJs ZTx1aW1fcnZhbD46OnZhbHVlLCAiaXMgbm90IGNvcHlhYmxlIik7CitzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx1aW1fcnZh bD46OnZhbHVlLCAiaXMgbm90IGNvcHlhYmxlIik7CiAKIHR5cGVkZWYgdGVz dF90eXBlPEFsbG9jPE1vdmVPbmx5LCBmYWxzZT4+IHVpbV9sdmFsOwogc3Rh dGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx1aW1fbHZh bD46OnZhbHVlLCAiaXMgY29weWFibGUiKTsKZGlmZiAtLWdpdCBhL2xpYnN0 ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbXVs dGltYXAvcmVxdWlyZW1lbnRzLzUzMzM5LmNjIGIvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3JkZXJlZF9tdWx0aW1hcC9yZXF1 aXJlbWVudHMvNTMzMzkuY2MKaW5kZXggNTc0NTYxOC4uY2NjZDJhOCAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJz L3Vub3JkZXJlZF9tdWx0aW1hcC9yZXF1aXJlbWVudHMvNTMzMzkuY2MKKysr IGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3Jk ZXJlZF9tdWx0aW1hcC9yZXF1aXJlbWVudHMvNTMzMzkuY2MKQEAgLTEsNyAr MSw5IEBACi0vLyB7IGRnLWRvIGNvbXBpbGUgfQorLy8gWEZBSUwgYmVjYXVz ZSBvZiBQUiBsaWJzdGRjKysvNTUwNDMgZml4CisvLyB7IGRnLWRvIGNvbXBp bGUgeyB4ZmFpbCAqLSotKiB9IH0KKy8vIHsgZGctZXhjZXNzLWVycm9ycyAi IiB9CiAvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysxMSIgfQogCi0vLyBD b3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KIC8vCiAvLyBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBm cmVlCiAvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdCB1bmRlciB0aGUKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbXVsdGlz ZXQvNTUwNDMuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRh aW5lcnMvdW5vcmRlcmVkX211bHRpc2V0LzU1MDQzLmNjCmluZGV4IGViYjhj YjguLjQ0NWU0ZTQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfbXVsdGlzZXQvNTUwNDMuY2MK KysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vu b3JkZXJlZF9tdWx0aXNldC81NTA0My5jYwpAQCAtNjcsNyArNjcsNyBAQCBz dHJ1Y3QgQWxsb2MgOiBzdGQ6OmFsbG9jYXRvcjxUPgogCiAvLyB2ZXJpZnkg aXNfY29weV9jb25zdHJ1Y3RpYmxlIGRlcGVuZHMgb24gYWxsb2NhdG9yCiB0 eXBlZGVmIHRlc3RfdHlwZTxBbGxvYzxNb3ZlT25seSwgdHJ1ZT4+IHVpbV9y dmFsOwotc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJs ZTx1aW1fcnZhbD46OnZhbHVlLCAiaXMgbm90IGNvcHlhYmxlIik7CitzdGF0 aWNfYXNzZXJ0KCFzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx1aW1fcnZh bD46OnZhbHVlLCAiaXMgbm90IGNvcHlhYmxlIik7CiAKIHR5cGVkZWYgdGVz dF90eXBlPEFsbG9jPE1vdmVPbmx5LCBmYWxzZT4+IHVpbV9sdmFsOwogc3Rh dGljX2Fzc2VydChzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx1aW1fbHZh bD46OnZhbHVlLCAiaXMgY29weWFibGUiKTsKZGlmZiAtLWdpdCBhL2xpYnN0 ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRfc2V0 LzU1MDQzLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWlu ZXJzL3Vub3JkZXJlZF9zZXQvNTUwNDMuY2MKaW5kZXggM2IwYjk3My4uZTVi YTA2NSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19j b250YWluZXJzL3Vub3JkZXJlZF9zZXQvNTUwNDMuY2MKKysrIGIvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3JkZXJlZF9zZXQv NTUwNDMuY2MKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IEFsbG9jIDogc3Rk OjphbGxvY2F0b3I8VD4KIAogLy8gdmVyaWZ5IGlzX2NvcHlfY29uc3RydWN0 aWJsZSBkZXBlbmRzIG9uIGFsbG9jYXRvcgogdHlwZWRlZiB0ZXN0X3R5cGU8 QWxsb2M8TW92ZU9ubHksIHRydWU+PiB1aW1fcnZhbDsKLXN0YXRpY19hc3Nl cnQoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8dWltX3J2YWw+Ojp2YWx1 ZSwgImlzIG5vdCBjb3B5YWJsZSIpOworc3RhdGljX2Fzc2VydCghc3RkOjpp c19jb3B5X2NvbnN0cnVjdGlibGU8dWltX3J2YWw+Ojp2YWx1ZSwgImlzIG5v dCBjb3B5YWJsZSIpOwogCiB0eXBlZGVmIHRlc3RfdHlwZTxBbGxvYzxNb3Zl T25seSwgZmFsc2U+PiB1aW1fbHZhbDsKIHN0YXRpY19hc3NlcnQoc3RkOjpp c19jb3B5X2NvbnN0cnVjdGlibGU8dWltX2x2YWw+Ojp2YWx1ZSwgImlzIGNv cHlhYmxlIik7Cg== --e0cb4efe323e7ba70c04d370a39f--