From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21743 invoked by alias); 18 Feb 2020 06:46:23 -0000 Mailing-List: contact libstdc++-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libstdc++-owner@gcc.gnu.org Received: (qmail 21676 invoked by uid 89); 18 Feb 2020 06:46:18 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=H*c:HHHHHHH, solicit, H*M:zimbra, H*c:PHrt X-HELO: us-smtp-delivery-1.mimecast.com Received: from us-smtp-2.mimecast.com (HELO us-smtp-delivery-1.mimecast.com) (205.139.110.61) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 18 Feb 2020 06:46:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582008373; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to; bh=uNwD42bLzSWQf3NBvB7mdWWelDMGt3NhDGlAUbrkWZk=; b=JPckFg+6BZ7wsHLZ7L/vEyBlqGSb0k+0ZOlougPWJ2Du/Ac9dxGwEpjy5V30kMkpiLbjYT sReSf10i8VuzrBiPJ5K3B4iQubm3ur/F98zkdXIklNU7Uxq41DLXjngm5aTnuRjHyTc0ze fMSO0fkUOdclvBcQK/20rOXigD1A46E= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-268-mK34bCpANCSLuqBmpzDAQw-1; Tue, 18 Feb 2020 01:46:11 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 36475800D48; Tue, 18 Feb 2020 06:46:10 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2A2E287056; Tue, 18 Feb 2020 06:46:10 +0000 (UTC) Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 091F318095FF; Tue, 18 Feb 2020 06:46:09 +0000 (UTC) Date: Tue, 18 Feb 2020 06:46:00 -0000 From: Thomas Rodgers To: gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org Message-ID: <1291008602.5930779.1582008369882.JavaMail.zimbra@redhat.com> In-Reply-To: <381004109.5930741.1582008200673.JavaMail.zimbra@redhat.com> Subject: [PATCH] Add c++2a binary_semaphore MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="----=_Part_5930777_1858357215.1582008369878" X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00099.txt.bz2 ------=_Part_5930777_1858357215.1582008369878 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 713 This patch adds the c++2a semaphore header and binary_semaphore type. The implementation is not complete, this patch is just to solicit initial feedback. * include/std/semaphore: New file. * include/std/version (__cpp_lib_semaphore): Add feature test macro. * include/Makefile.am (std_headers): add semaphore. * include/Makefile.in: Regenerate. * testsuite/30_threads/semaphore/1.cc: New test. * testsuite/30_threads/semaphore/2.cc: New test. * testsuite/30_threads/semaphore/binary_semaphore.cc: New test. * testsuite/30_threads/semaphore/try_acquire.cc: New test. * testsuite/30_threads/semaphore/try_acquire_for.cc: New test. * testsuite/30_threads/semaphore/try_acquire_until.cc: New test. ------=_Part_5930777_1858357215.1582008369878 Content-Type: text/x-patch; name=0001-Add-c-2a-binary_semaphore.patch Content-Disposition: attachment; filename=0001-Add-c-2a-binary_semaphore.patch Content-Transfer-Encoding: base64 Content-length: 23522 RnJvbSA4Y2U0MjUyNjA1MzYxZWQzM2IzODlhOTFmYjdlM2FlZWM1MjlkOWFj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgUm9kZ2Vy cyA8cm9kZ2VydEB0aHVmaXIuYXBwbGlhbnRvbG9neS5sb2NhbD4KRGF0ZTog TW9uLCAxNyBGZWIgMjAyMCAxOTo1ODo1NyAtMDgwMApTdWJqZWN0OiBbUEFU Q0hdIEFkZCBjKysyYSBiaW5hcnlfc2VtYXBob3JlCgogICAgKiBpbmNsdWRl L3N0ZC9zZW1hcGhvcmU6IE5ldyBmaWxlLgogICAgKiBpbmNsdWRlL3N0ZC92 ZXJzaW9uIChfX2NwcF9saWJfc2VtYXBob3JlKTogQWRkIGZlYXR1cmUgdGVz dCBtYWNyby4KICAgICogaW5jbHVkZS9NYWtlZmlsZS5hbSAoc3RkX2hlYWRl cnMpOiBhZGQgc2VtYXBob3JlLgogICAgKiBpbmNsdWRlL01ha2VmaWxlLmlu OiBSZWdlbmVyYXRlLgogICAgKiB0ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1h cGhvcmUvMS5jYzogTmV3IHRlc3QuCiAgICAqIHRlc3RzdWl0ZS8zMF90aHJl YWRzL3NlbWFwaG9yZS8yLmNjOiBOZXcgdGVzdC4KICAgICogdGVzdHN1aXRl LzMwX3RocmVhZHMvc2VtYXBob3JlL2JpbmFyeV9zZW1hcGhvcmUuY2M6IE5l dyB0ZXN0LgogICAgKiB0ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUv dHJ5X2FjcXVpcmUuY2M6IE5ldyB0ZXN0LgogICAgKiB0ZXN0c3VpdGUvMzBf dGhyZWFkcy9zZW1hcGhvcmUvdHJ5X2FjcXVpcmVfZm9yLmNjOiBOZXcgdGVz dC4KICAgICogdGVzdHN1aXRlLzMwX3RocmVhZHMvc2VtYXBob3JlL3RyeV9h Y3F1aXJlX3VudGlsLmNjOiBOZXcgdGVzdC4KLS0tCiBsaWJzdGRjKystdjMv aW5jbHVkZS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAgIDEgKwogbGli c3RkYysrLXYzL2luY2x1ZGUvTWFrZWZpbGUuaW4gICAgICAgICAgICAgIHwg ICAxICsKIGxpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9zZW1hcGhvcmUgICAg ICAgICAgICB8IDEzMSArKysrKysrKysrKysrKysrKysKIGxpYnN0ZGMrKy12 My9pbmNsdWRlL3N0ZC92ZXJzaW9uICAgICAgICAgICAgICB8ICAgMSArCiAu Li4vdGVzdHN1aXRlLzMwX3RocmVhZHMvc2VtYXBob3JlLzEuY2MgICAgICAg fCAgMjcgKysrKwogLi4uL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9y ZS8yLmNjICAgICAgIHwgIDI3ICsrKysKIC4uLi8zMF90aHJlYWRzL3NlbWFw aG9yZS9iaW5hcnlfc2VtYXBob3JlLmNjICB8ICA0NyArKysrKysrCiAuLi4v MzBfdGhyZWFkcy9zZW1hcGhvcmUvdHJ5X2FjcXVpcmUuY2MgICAgICAgfCAg MzYgKysrKysKIC4uLi8zMF90aHJlYWRzL3NlbWFwaG9yZS90cnlfYWNxdWly ZV9mb3IuY2MgICB8ICA3MiArKysrKysrKysrCiAuLi4vMzBfdGhyZWFkcy9z ZW1hcGhvcmUvdHJ5X2FjcXVpcmVfdW50aWwuY2MgfCAgNzQgKysrKysrKysr KwogMTAgZmlsZXMgY2hhbmdlZCwgNDE3IGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc2VtYXBo b3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8zMF90aHJlYWRzL3NlbWFwaG9yZS8xLmNjCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9y ZS8yLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL3Rlc3Rz dWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9yZS9iaW5hcnlfc2VtYXBob3JlLmNj CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8z MF90aHJlYWRzL3NlbWFwaG9yZS90cnlfYWNxdWlyZS5jYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9z ZW1hcGhvcmUvdHJ5X2FjcXVpcmVfZm9yLmNjCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9y ZS90cnlfYWNxdWlyZV91bnRpbC5jYwoKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9pbmNsdWRlL01ha2VmaWxlLmFtIGIvbGlic3RkYysrLXYzL2luY2x1 ZGUvTWFrZWZpbGUuYW0KaW5kZXggODk4MzU3NTkwNjkuLjJkYmI3ZDNhNmIx IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9NYWtlZmlsZS5h bQorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9NYWtlZmlsZS5hbQpAQCAt NjksNiArNjksNyBAQCBzdGRfaGVhZGVycyA9IFwKIAkke3N0ZF9zcmNkaXJ9 L3JhdGlvIFwKIAkke3N0ZF9zcmNkaXJ9L3JlZ2V4IFwKIAkke3N0ZF9zcmNk aXJ9L3Njb3BlZF9hbGxvY2F0b3IgXAorICAke3N0ZF9zcmNkaXJ9L3NlbWFw aG9yZSBcCiAJJHtzdGRfc3JjZGlyfS9zZXQgXAogCSR7c3RkX3NyY2Rpcn0v c2hhcmVkX211dGV4IFwKIAkke3N0ZF9zcmNkaXJ9L3NwYW4gXApkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvTWFrZWZpbGUuaW4gYi9saWJz dGRjKystdjMvaW5jbHVkZS9NYWtlZmlsZS5pbgppbmRleCAxMjNkMjRiYjFj Ni4uOGYyNzgwYzg2Y2UgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL01ha2VmaWxlLmluCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL01h a2VmaWxlLmluCkBAIC00MTQsNiArNDE0LDcgQEAgc3RkX2hlYWRlcnMgPSBc CiAJJHtzdGRfc3JjZGlyfS9yYXRpbyBcCiAJJHtzdGRfc3JjZGlyfS9yZWdl eCBcCiAJJHtzdGRfc3JjZGlyfS9zY29wZWRfYWxsb2NhdG9yIFwKKyAgJHtz dGRfc3JjZGlyfS9zZW1hcGhvcmUgXAogCSR7c3RkX3NyY2Rpcn0vc2V0IFwK IAkke3N0ZF9zcmNkaXJ9L3NoYXJlZF9tdXRleCBcCiAJJHtzdGRfc3JjZGly fS9zcGFuIFwKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0 ZC9zZW1hcGhvcmUgYi9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc2VtYXBo b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5l M2U4OGE1MGVlYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL3N0ZC9zZW1hcGhvcmUKQEAgLTAsMCArMSwxMzEgQEAKKy8vIDxz dG9wX3Rva2VuPiAtKi0gQysrIC0qLQorCisvLyBDb3B5cmlnaHQgKEMpIDIw MTktMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisv LyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFy eS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUK Ky8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8v IGFueSBsYXRlciB2ZXJzaW9uLgorCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK Ky8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisv LyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91 IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1pc3Npb25zIGRlc2Ny aWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZl cnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFu ZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2Vw dGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8vIHNlZSB0aGUgZmls ZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHku ICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCisvKiogQGZpbGUgaW5jbHVkZS9zdG9wX3Rva2VuCisgKiAgVGhp cyBpcyBhIFN0YW5kYXJkIEMrKyBMaWJyYXJ5IGhlYWRlci4KKyAqLworCisj aWZuZGVmIF9HTElCQ1hYX1NFTUFQSE9SRQorI2RlZmluZSBfR0xJQkNYWF9T RU1BUEhPUkUKKworI2lmIF9fY3BsdXNwbHVzID4gMjAxNzAzTAorI2RlZmlu ZSBfX2NwcF9saWJfc2VtYXBob3JlIDIwMTkwN0wKKworI2luY2x1ZGUgPGNz dGRkZWY+CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGNocm9ubz4K KworbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQp Cit7CitfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorCisgIC8v IFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIGEgcmVhbCBpbXBsZW1lbnRhdGlv biBvZiBzdGQ6OmJpbmFyeV9zZW1hcGhvcmUKKyAgc3RydWN0IGJpbmFyeV9z ZW1hcGhvcmUKK3sKKyAgZXhwbGljaXQgYmluYXJ5X3NlbWFwaG9yZShpbnQg X19kKSA6IF9NX2NvdW50ZXIoX19kID4gMCkgeyB9CisKKyAgc3RhdGljIGNv bnN0ZXhwciBzdGQ6OnB0cmRpZmZfdAorICBtYXgoKSBub2V4Y2VwdAorICB7 CisgICByZXR1cm4gMTsKKyAgfQorCisgIHZvaWQgcmVsZWFzZSgpIHsgX01f Y291bnRlci5mZXRjaF9hZGQoMSwgbWVtb3J5X29yZGVyOjpyZWxlYXNlKTsg fQorCisgIHZvaWQgYWNxdWlyZSgpCisgIHsKKyAgIHdoaWxlICghX01fdHJ5 X2FjcXVpcmUoKSkKKyAgICAgeworICAgICAgX1NfeWllbGQoKTsKKyAgICAg fQorICB9CisKKyAgYm9vbAorICB0cnlfYWNxdWlyZSgpIG5vZXhjZXB0Cisg IHsKKyAgIHJldHVybiBfTV90cnlfYWNxdWlyZSgxdSk7CisgIH0KKworICB0 ZW1wbGF0ZTxjbGFzcyBfUmVwLCBjbGFzcyBfUGVyaW9kPgorICBib29sIHRy eV9hY3F1aXJlX2Zvcihjb25zdCBzdGQ6OmNocm9ubzo6ZHVyYXRpb248X1Jl cCwgX1BlcmlvZD4mIF9fcmVsX3RpbWUpCisgIHsKKyAgIGF1dG8gX19hYnN0 ID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgKyBfX3JlbF90 aW1lOworICAgcmV0dXJuIHRyeV9hY3F1aXJlX3VudGlsKF9fYWJzdCk7Cisg IH0KKworICB0ZW1wbGF0ZTxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlv bj4KKyAgYm9vbCB0cnlfYWNxdWlyZV91bnRpbChjb25zdCBzdGQ6OmNocm9u bzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbj4mIF9fYWJzX3RpbWUp CisgIHsKKyAgIGRvCisgICAgIHsKKyAgICAgIGlmIChfTV90cnlfYWNxdWly ZSgpKQorICAgICAgICB7CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgfQorICAgICB9IHdoaWxlIChzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2Nr Ojpub3coKSA8IF9fYWJzX3RpbWUpOworICAgcmV0dXJuIGZhbHNlOworICB9 CisKK3ByaXZhdGU6CisgIHN0YXRpYyB2b2lkCisgIF9TX3lpZWxkKCkgbm9l eGNlcHQKKyAgeworI2lmIGRlZmluZWQgX19pMzg2X18gfHwgZGVmaW5lZCBf X3g4Nl82NF9fCisgICBfX2J1aWx0aW5faWEzMl9wYXVzZSgpOworI2VsaWYg ZGVmaW5lZCBfR0xJQkNYWF9VU0VfU0NIRURfWUlFTEQKKyAgIF9fZ3RocmVh ZF95aWVsZCgpOworI2VuZGlmCisgIH0KKworICBib29sCisgIF9NX3RyeV9h Y3F1aXJlKHVuc2lnbmVkIF9fc3Bpbl9jdCkKKyAgeworICAgaW50IF9fb2xk ID0gMTsKKyAgIHdoaWxlICghX01fY291bnRlci5jb21wYXJlX2V4Y2hhbmdl X3dlYWsoX19vbGQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbW9yeV9vcmRlcjo6YWNxdWlyZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5 X29yZGVyOjpyZWxheGVkKSkKKyAgICAgeworICAgICAgIGlmICgtLV9fc3Bp bl9jdCA9PSAwKQorICAgICAgICAgeworICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICB9CisgICAgICBfX29sZCA9IDE7CisgICAgIH0KKyAg IHJldHVybiB0cnVlOworICB9CisKKyAgc3RhdGljIGNvbnN0ZXhwciB1bnNp Z25lZCBfU19zcGluX2N0ID0gNjR1OworICBib29sCisgIF9NX3RyeV9hY3F1 aXJlKCkKKyAgeworICAgIHJldHVybiBfTV90cnlfYWNxdWlyZSgxKTsKKyAg fQorCisgIGF0b21pYzxpbnQ+IF9NX2NvdW50ZXI7Cit9OworCitfR0xJQkNY WF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KK30gLy8gbmFtZXNwYWNlCisjZW5k aWYgLy8gX19jcGx1c3BsdXMgPiAyMDE3MDNMCisjZW5kaWYgLy8gX0dMSUJD WFhfU1RPUF9UT0tFTgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1 ZGUvc3RkL3ZlcnNpb24gYi9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvdmVy c2lvbgppbmRleCBkOGE5Nzc2NzQ1My4uNDY1NDgzMGI2MTQgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC92ZXJzaW9uCisrKyBiL2xp YnN0ZGMrKy12My9pbmNsdWRlL3N0ZC92ZXJzaW9uCkBAIC0xODgsNiArMTg4 LDcgQEAKICNkZWZpbmUgX19jcHBfbGliX2ludGVycG9sYXRlIDIwMTkwMkwK ICNpZmRlZiBfR0xJQkNYWF9IQVNfR1RIUkVBRFMKICMgZGVmaW5lIF9fY3Bw X2xpYl9qdGhyZWFkIDIwMTkwN0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9zZW1h cGhvcmUgMjAxOTA3TAogI2VuZGlmCiAjZGVmaW5lIF9fY3BwX2xpYl9saXN0 X3JlbW92ZV9yZXR1cm5fdHlwZSAyMDE4MDZMCiAjZGVmaW5lIF9fY3BwX2xp Yl9tYXRoX2NvbnN0YW50cyAyMDE5MDdMCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvdGVzdHN1aXRlLzMwX3RocmVhZHMvc2VtYXBob3JlLzEuY2MgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzMwX3RocmVhZHMvc2VtYXBob3JlLzEu Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFi YmNhNjg3ZmMzCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9yZS8xLmNjCkBAIC0wLDAgKzEs MjcgQEAKKy8vIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVl CisvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9y IChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorCisv LyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisv LyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisvLyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhbG9uZworLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls ZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKworLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsr MmEiIH0KKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyYSB9IH0K KworI2luY2x1ZGUgPHNlbWFwaG9yZT4KKworI2lmbmRlZiBfX2NwcF9saWJf c2VtYXBob3JlCisjIGVycm9yICJGZWF0dXJlLXRlc3QgbWFjcm8gZm9yIHNl bWFwaG9yZSBtaXNzaW5nIGluIDxzZW1hcGhvcmU+IgorI2VsaWYgX19jcHBf bGliX3NlbWFwaG9yZSAhPSAyMDE5MDdMCisjIGVycm9yICJGZWF0dXJlLXRl c3QgbWFjcm8gZm9yIHNlbWFwaG9yZSBoYXMgd3JvbmcgdmFsdWUgaW4gPHNl bWFwaG9yZT4iCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUvMi5jYyBiL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUvMi5jYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk2YjhhNTlj NjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRl LzMwX3RocmVhZHMvc2VtYXBob3JlLzIuY2MKQEAgLTAsMCArMSwyNyBAQAor Ly8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQor Ly8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworLy8g VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8g TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworLy8gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYWxvbmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnUrKzJh IiB9CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMmEgfSB9CisK KyNpbmNsdWRlIDx2ZXJzaW9uPgorCisjaWZuZGVmIF9fY3BwX2xpYl9zZW1h cGhvcmUKKyMgZXJyb3IgIkZlYXR1cmUtdGVzdCBtYWNybyBmb3Igc2VtYXBo b3JlIG1pc3NpbmcgaW4gPHZlcnNpb24+IgorI2VsaWYgX19jcHBfbGliX3Nl bWFwaG9yZSAhPSAyMDE5MDdMCisjIGVycm9yICJGZWF0dXJlLXRlc3QgbWFj cm8gZm9yIHNlbWFwaG9yZSBoYXMgd3JvbmcgdmFsdWUgaW4gPHZlcnNpb24+ IgorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRl LzMwX3RocmVhZHMvc2VtYXBob3JlL2JpbmFyeV9zZW1hcGhvcmUuY2MgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzMwX3RocmVhZHMvc2VtYXBob3JlL2Jp bmFyeV9zZW1hcGhvcmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjFhNDJkMzIzY2EwCi0tLSAvZGV2L251bGwKKysrIGIv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9yZS9i aW5hcnlfc2VtYXBob3JlLmNjCkBAIC0wLDAgKzEsNDcgQEAKKy8vIENvcHly aWdodCAoQykgMjAxOS0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNP IEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIg b3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisKKy8vIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25n CisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysyYSAtcHRocmVh ZCIgfQorLy8geyBkZy1kbyBydW4geyB0YXJnZXQgYysrMmEgfSB9CisvLyB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBwdGhyZWFkIH0KKy8vIHsg ZGctcmVxdWlyZS1ndGhyZWFkcyAiIiB9CisKKyNpbmNsdWRlIDxzZW1hcGhv cmU+CisjaW5jbHVkZSA8Y2hyb25vPgorI2luY2x1ZGUgPHRocmVhZD4KKwor I2luY2x1ZGUgPHRlc3RzdWl0ZV9ob29rcy5oPgorCitpbnQgbWFpbigpCit7 CisgIHN0ZDo6YmluYXJ5X3NlbWFwaG9yZSBzKDEpOworCisgIGF1dG8gYXIg PSBbJl0oKSB7CisgICAgICAgICAgICAgIGZvcihhdXRvIGkgPSAwdTsgaSA8 IDUxMjsgKytpKSB7CisgICAgICAgICAgICAgICAgcy5hY3F1aXJlKCk7Cisg ICAgICAgICAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKHN0 ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMoMSkpOworICAgICAgICAgICAgICAg IHMucmVsZWFzZSgpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 OworCisgIHN0ZDo6dGhyZWFkIHQoYXIpOworICBhcigpOworCisgIHQuam9p bigpOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9yZS90cnlfYWNxdWly ZS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1h cGhvcmUvdHJ5X2FjcXVpcmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjI5NWNmYTliY2E4Ci0tLSAvZGV2L251bGwKKysr IGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL3NlbWFwaG9y ZS90cnlfYWNxdWlyZS5jYwpAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmln aHQgKEMpIDIwMTktMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBD KysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9w dGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorCisvLyBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwor Ly8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKworLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEgLXB0aHJlYWQi IH0KKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzJhIH0gfQorLy8geyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcHRocmVhZCB9CisvLyB7IGRn LXJlcXVpcmUtZ3RocmVhZHMgIiIgfQorCisjaW5jbHVkZSA8c2VtYXBob3Jl PgorCitpbnQgbWFpbigpCit7CisgIHN0ZDo6YmluYXJ5X3NlbWFwaG9yZSBz KDEpOworCisgIHMuYWNxdWlyZSgpOworICBpZiAocy50cnlfYWNxdWlyZSgp KQorICAgIHJldHVybiAtMTsKKyAgcy5yZWxlYXNlKCk7CisgIGlmICghcy50 cnlfYWNxdWlyZSgpKQorICAgIHJldHVybiAtMTsKKyAgcmV0dXJuIDA7Cit9 CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzMwX3RocmVh ZHMvc2VtYXBob3JlL3RyeV9hY3F1aXJlX2Zvci5jYyBiL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUvdHJ5X2FjcXVpcmVf Zm9yLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5hMDRiMzliNTQwMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUvdHJ5X2FjcXVpcmVf Zm9yLmNjCkBAIC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx OS0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8v IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5 LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQor Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8g YW55IGxhdGVyIHZlcnNpb24uCisKKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor Ly8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRo aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisvLyB7 IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysyYSAtcHRocmVhZCIgfQorLy8geyBk Zy1kbyBydW4geyB0YXJnZXQgYysrMmEgfSB9CisvLyB7IGRnLXJlcXVpcmUt ZWZmZWN0aXZlLXRhcmdldCBwdGhyZWFkIH0KKy8vIHsgZGctcmVxdWlyZS1n dGhyZWFkcyAiIiB9CisKKyNpbmNsdWRlIDxzZW1hcGhvcmU+CisjaW5jbHVk ZSA8Y2hyb25vPgorI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDxtdXRl eD4KKyNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CisKK2ludCBtYWlu KCkKK3sKKyAgdXNpbmcgbG9ja190eXBlID0gc3RkOjp1bmlxdWVfbG9jazxz dGQ6Om11dGV4PjsKKworICBib29sIHJlYWR5ID0gZmFsc2U7CisgIGxvY2tf dHlwZTo6bXV0ZXhfdHlwZSBtOworICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJs ZSBjdjsKKworICBzdGQ6OmJpbmFyeV9zZW1hcGhvcmUgcygxKTsKKyAgYXV0 byBhciA9WyZdIHsKKyAgICAgICAgICAgICBzLmFjcXVpcmUoKTsKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICBsb2NrX3R5cGUgbChtKTsKKyAg ICAgICAgICAgICAgIHJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgY3Yubm90aWZ5X29uZSgpOworICAgICAgICAgICAgIHN0 ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6OmNocm9ubzo6bWlsbGlz ZWNvbmRzKDUwMCkpOworICAgICAgICAgICAgIHMucmVsZWFzZSgpOworICAg ICAgICAgICB9OworCisgIHN0ZDo6dGhyZWFkIHQxKGFyKTsKKyAgeworICAg IGxvY2tfdHlwZSBsKG0sIHN0ZDo6ZGVmZXJfbG9jayk7CisgICAgY3Yud2Fp dChsLCBbJl0geyByZXR1cm4gcmVhZHk7IH0pOworCisgICAgaWYgKHMudHJ5 X2FjcXVpcmVfZm9yKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMTAwKSkp CisgICAgICByZXR1cm4gLTE7CisgICAgdDEuam9pbigpOworICAgIGlmICgh cy50cnlfYWNxdWlyZSgpKQorICAgICAgcmV0dXJuIC0xOworICAgIHMucmVs ZWFzZSgpOworICAgIHJlYWR5ID0gZmFsc2U7CisgIH0KKworICBzdGQ6OnRo cmVhZCB0Mihhcik7CisgIHsKKyAgICBsb2NrX3R5cGUgbChtLCBzdGQ6OmRl ZmVyX2xvY2spOworICAgIGN2LndhaXQobCwgWyZdIHsgcmV0dXJuIHJlYWR5 OyB9KTsKKyAgICBpZiAoIXMudHJ5X2FjcXVpcmVfZm9yKHN0ZDo6Y2hyb25v OjptaWxsaXNlY29uZHMoMTAwOSkpKQorICAgICAgcmV0dXJuIC0xOworICAg IHQyLmpvaW4oKTsKKyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUv dHJ5X2FjcXVpcmVfdW50aWwuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRl LzMwX3RocmVhZHMvc2VtYXBob3JlL3RyeV9hY3F1aXJlX3VudGlsLmNjCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ODdiNjU1 YTZkYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMzBfdGhyZWFkcy9zZW1hcGhvcmUvdHJ5X2FjcXVpcmVfdW50aWwuY2MK QEAgLTAsMCArMSw3NCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlz IGxpYnJhcnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworLy8g WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKy8vIHdpdGggdGhpcyBsaWJy YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisvLyA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy8vIHsgZGctb3B0 aW9ucyAiLXN0ZD1nbnUrKzJhIC1wdGhyZWFkIiB9CisvLyB7IGRnLWRvIHJ1 biB7IHRhcmdldCBjKysyYSB9IH0KKy8vIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IHB0aHJlYWQgfQorLy8geyBkZy1yZXF1aXJlLWd0aHJlYWRz ICIiIH0KKworI2luY2x1ZGUgPHNlbWFwaG9yZT4KKyNpbmNsdWRlIDxjaHJv bm8+CisjaW5jbHVkZSA8dGhyZWFkPgorI2luY2x1ZGUgPG11dGV4PgorI2lu Y2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KKworaW50IG1haW4oKQorewor ICB1c2luZyBsb2NrX3R5cGUgPSBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0 ZXg+OworCisgIGJvb2wgcmVhZHkgPSBmYWxzZTsKKyAgbG9ja190eXBlOjpt dXRleF90eXBlIG07CisgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGN2Owor CisgIGF1dG8gYWJzdCA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5v dygpOworCisgIHN0ZDo6YmluYXJ5X3NlbWFwaG9yZSBzKDEpOworICBhdXRv IGFyID1bJl0geworICAgICAgICAgICAgIHMuYWNxdWlyZSgpOworICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgIGxvY2tfdHlwZSBsKG0pOworICAg ICAgICAgICAgICAgcmVhZHkgPSB0cnVlOworICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICBjdi5ub3RpZnlfb25lKCk7CisgICAgICAgICAgICAgc3Rk Ojp0aGlzX3RocmVhZDo6c2xlZXBfdW50aWwoYWJzdCArIHN0ZDo6Y2hyb25v OjptaWxsaXNlY29uZHMoNTAwKSk7CisgICAgICAgICAgICAgcy5yZWxlYXNl KCk7CisgICAgICAgICAgIH07CisKKyAgc3RkOjp0aHJlYWQgdDEoYXIpOwor ICB7CisgICAgbG9ja190eXBlIGwobSwgc3RkOjpkZWZlcl9sb2NrKTsKKyAg ICBjdi53YWl0KGwsIFsmXSB7IHJldHVybiByZWFkeTsgfSk7CisKKyAgICBp ZiAocy50cnlfYWNxdWlyZV91bnRpbChhYnN0ICsgc3RkOjpjaHJvbm86Om1p bGxpc2Vjb25kcygxMDApKSkKKyAgICAgIHJldHVybiAtMTsKKyAgICB0MS5q b2luKCk7CisgICAgaWYgKCFzLnRyeV9hY3F1aXJlKCkpCisgICAgICByZXR1 cm4gLTE7CisgICAgcy5yZWxlYXNlKCk7CisgICAgcmVhZHkgPSBmYWxzZTsK KyAgfQorCisgIHN0ZDo6dGhyZWFkIHQyKGFyKTsKKyAgeworICAgIGxvY2tf dHlwZSBsKG0sIHN0ZDo6ZGVmZXJfbG9jayk7CisgICAgY3Yud2FpdChsLCBb Jl0geyByZXR1cm4gcmVhZHk7IH0pOworICAgIGlmICghcy50cnlfYWNxdWly ZV91bnRpbChhYnN0ICsgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygxMDA5 KSkpCisgICAgICByZXR1cm4gLTE7CisgICAgdDIuam9pbigpOworICB9Cisg IHJldHVybiAwOworfQotLSAKMi4yNC4xCgo= ------=_Part_5930777_1858357215.1582008369878--