From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 6596F396E07C for ; Fri, 13 May 2022 14:55:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6596F396E07C Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-657-65ECtJZdOFurIdHaO3oASQ-1; Fri, 13 May 2022 10:55:32 -0400 X-MC-Unique: 65ECtJZdOFurIdHaO3oASQ-1 Received: by mail-qk1-f197.google.com with SMTP id bl27-20020a05620a1a9b00b0069994eeb30cso6522024qkb.11 for ; Fri, 13 May 2022 07:55:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:from:subject; bh=QpajR4IcIznblW4VJK/WMOaLx0zpMigzGhK+Wl9/408=; b=JO4Q7PKa7mJ1nyZUdzBGkpVOOJCCFLCmvM3MQ3LZfAvamLIwc6nsinyAF1kQ6Tmr+s MLRVPpA2DwvX8r/JPc2tHXAuZljaT4+rRjgSRDCH3MAXYxI857pwR1ad52MvtDGvP24q +JxtcpSTMVMgMHFUrT1lyBfBA0MqHDVxMqN6dYzJogG9lAvochRLJwSXEZrRakaCGSyj +BGeDTVB8+9uUN8bSZTlw6kqk9X0TfrDWCbugbBVEBDa/egoEQLwQysLLwmU1myXwQAY 0GlmIkH6O6qiVbwL/VD0R50y4XSqm28H6EovdiSic+2VmkQ5H7nKGujrBuLknpIQLE+d BEPw== X-Gm-Message-State: AOAM533kZeYTOV7FvR+4uGpftDeMACE+r89xwIoTQ8C3my88BuesbuNl 4dwus9/OBDwThemgQ+RvTmaJGDrMeAjpYXl2a+1l2uR2JymfL0Rt3+L5sgtLoa8qn6RC4GdT80L f8wHgWzW4IylMeJG1SFrMn6vQLzEgnjcKA6/dkmg2Qz/kdv8B85GaGHUDEH34pVrNvTAZqA== X-Received: by 2002:a05:620a:28ca:b0:6a0:a0a9:b2e6 with SMTP id l10-20020a05620a28ca00b006a0a0a9b2e6mr3691635qkp.638.1652453731994; Fri, 13 May 2022 07:55:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+PWlucNVJS4GGdWv1zoWOM4fALwx6PBAT089VGFb4pGQ9d1J574r4uo47uAatJlsXI1FyVg== X-Received: by 2002:a05:620a:28ca:b0:6a0:a0a9:b2e6 with SMTP id l10-20020a05620a28ca00b006a0a0a9b2e6mr3691613qkp.638.1652453731699; Fri, 13 May 2022 07:55:31 -0700 (PDT) Received: from ?IPV6:2607:fea8:a261:5e00::94b0? ([2607:fea8:a261:5e00::94b0]) by smtp.gmail.com with ESMTPSA id a75-20020a37664e000000b006a03cbb1323sm1434877qkc.65.2022.05.13.07.55.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 May 2022 07:55:31 -0700 (PDT) Message-ID: <4f2d262b-60c4-d194-565f-58effef1286f@redhat.com> Date: Fri, 13 May 2022 10:55:29 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 To: gcc-patches From: Andrew MacLeod Subject: [COMMITTED] Return a bool result for union, and add performance improvements. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------JDOtAyk5Ms3puotm4azMWS0x" Content-Language: en-CA X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 May 2022 14:55:36 -0000 This is a multi-part message in MIME format. --------------JDOtAyk5Ms3puotm4azMWS0x Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This does the same for union.. adds a return value indicating in the union call changes the range. It adds a routine for efficiency which performs a union between 2 single pairs, the most common case. Improvements are much nominal.. along the 0.1% range, but again, will be utilized by forthcoming changes as well. Bootstraps on x86_64-pc-linux-gnu with no regressions.  Pushed. --------------JDOtAyk5Ms3puotm4azMWS0x Content-Type: text/x-patch; charset=UTF-8; name="0007.patch" Content-Disposition: attachment; filename="0007.patch" Content-Transfer-Encoding: base64 Y29tbWl0IGYzMjA0Y2UxYWU2Yjk3ZjdlNzlkNjMzODQ0ZDYxZDAyMWRhODUwMmUKQXV0aG9yOiBB bmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gTWF5IDkgMTM6 MzI6MzEgMjAyMiAtMDQwMAoKICAgIFJldHVybiBhIGJvb2wgcmVzdWx0IGZvciB1bmlvbiwgYW5k IGFkZCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCiAgICAKICAgIFVuaW9uXyByZXR1cm5zIGEg Ym9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBvcGVyYXRpb24gY2hhbmdlcyB0aGUgcmFuZ2UuCiAg ICBBbHNvIG9wdGltaXplIHRoZSBjb21tb24gc2luZ2xlLXBhaXIgVU5JT04gc2luZ2xlLXBhaXIg Y2FzZS4KICAgIAogICAgICAgICAgICAqIGdpbXBsZS1yYW5nZS1lZGdlLmNjIChjYWxjX3N3aXRj aF9yYW5nZXMpOiBDaGVjayB1bmlvbiByZXR1cm4gdmFsdWUuCiAgICAgICAgICAgICogdmFsdWUt cmFuZ2UuY2MgKGlyYW5nZTo6bGVnYWN5X3ZlcmJvc2VfdW5pb25fKTogQWRkIHJldHVybiB2YWx1 ZS4KICAgICAgICAgICAgKGlyYW5nZTo6aXJhbmdlX3NpbmdsZV9wYWlyX3VuaW9uKTogTmV3Lgog ICAgICAgICAgICAoaXJhbmdlOjppcmFuZ2VfdW5pb24pOiBBZGQgcmV0dXJuIHZhbHVlLgogICAg ICAgICAgICAqIHZhbHVlLXJhbmdlLmggKGNsYXNzIGlyYW5nZSk6IEFkanVzdCBwcm90b3R5cGVz LgoKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtZWRnZS5jYyBiL2djYy9naW1wbGUtcmFu Z2UtZWRnZS5jYwppbmRleCA2Y2FhMDdjOGYwMi4uMGJlZTM4YmE3NzAgMTAwNjQ0Ci0tLSBhL2dj Yy9naW1wbGUtcmFuZ2UtZWRnZS5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLWVkZ2UuY2MKQEAg LTE1NCw3ICsxNTQsOSBAQCBnaW1wbGVfb3V0Z29pbmdfcmFuZ2U6OmNhbGNfc3dpdGNoX3Jhbmdl cyAoZ3N3aXRjaCAqc3cpCiAgICAgICBpcmFuZ2UgKiZzbG90ID0gbV9lZGdlX3RhYmxlLT5nZXRf b3JfaW5zZXJ0IChlLCAmZXhpc3RlZCk7CiAgICAgICBpZiAoZXhpc3RlZCkKIAl7Ci0JICBjYXNl X3JhbmdlLnVuaW9uXyAoKnNsb3QpOworCSAgLy8gSWYgdGhpcyBkb2Vzbid0IGNoYW5nZSB0aGUg dmFsdWUsIG1vdmUgb24uCisJICBpZiAoIWNhc2VfcmFuZ2UudW5pb25fICgqc2xvdCkpCisJICAg Y29udGludWU7CiAJICBpZiAoc2xvdC0+Zml0c19wIChjYXNlX3JhbmdlKSkKIAkgICAgewogCSAg ICAgICpzbG90ID0gY2FzZV9yYW5nZTsKZGlmZiAtLWdpdCBhL2djYy92YWx1ZS1yYW5nZS5jYyBi L2djYy92YWx1ZS1yYW5nZS5jYwppbmRleCAxOTBkN2ZiNmYyMi4uMmU3Mzg1YWVjYzIgMTAwNjQ0 Ci0tLSBhL2djYy92YWx1ZS1yYW5nZS5jYworKysgYi9nY2MvdmFsdWUtcmFuZ2UuY2MKQEAgLTE0 MzksOSArMTQzOSwxMCBAQCBpcmFuZ2U6OmxlZ2FjeV91bmlvbiAoaXJhbmdlICp2cjAsIGNvbnN0 IGlyYW5nZSAqdnIxKQogCiAvKiBNZWV0IG9wZXJhdGlvbiBmb3IgdmFsdWUgcmFuZ2VzLiAgR2l2 ZW4gdHdvIHZhbHVlIHJhbmdlcyBWUjAgYW5kCiAgICBWUjEsIHN0b3JlIGluIFZSMCBhIHJhbmdl IHRoYXQgY29udGFpbnMgYm90aCBWUjAgYW5kIFZSMS4gIFRoaXMKLSAgIG1heSBub3QgYmUgdGhl IHNtYWxsZXN0IHBvc3NpYmxlIHN1Y2ggcmFuZ2UuICAqLworICAgbWF5IG5vdCBiZSB0aGUgc21h bGxlc3QgcG9zc2libGUgc3VjaCByYW5nZS4KKyAgIFJldHVybiBUUlVFIGlmIHRoZSBvcmlnaW5h bCB2YWx1ZSBjaGFuZ2VzLiAgKi8KIAotdm9pZAorYm9vbAogaXJhbmdlOjpsZWdhY3lfdmVyYm9z ZV91bmlvbl8gKGNvbnN0IGlyYW5nZSAqb3RoZXIpCiB7CiAgIGlmIChsZWdhY3lfbW9kZV9wICgp KQpAQCAtMTQ1MCw3ICsxNDUxLDcgQEAgaXJhbmdlOjpsZWdhY3lfdmVyYm9zZV91bmlvbl8gKGNv bnN0IGlyYW5nZSAqb3RoZXIpCiAJewogCSAgaW50X3JhbmdlPDE+IHRtcCA9ICpvdGhlcjsKIAkg IGxlZ2FjeV91bmlvbiAodGhpcywgJnRtcCk7Ci0JICByZXR1cm47CisJICByZXR1cm4gdHJ1ZTsK IAl9CiAgICAgICBpZiAoZHVtcF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQog CXsKQEAgLTE0NjksMTYgKzE0NzAsMTYgQEAgaXJhbmdlOjpsZWdhY3lfdmVyYm9zZV91bmlvbl8g KGNvbnN0IGlyYW5nZSAqb3RoZXIpCiAJICBkdW1wX3ZhbHVlX3JhbmdlIChkdW1wX2ZpbGUsIHRo aXMpOwogCSAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG4iKTsKIAl9Ci0gICAgICByZXR1cm47Cisg ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgaWYgKG90aGVyLT5sZWdhY3lfbW9kZV9wICgp KQogICAgIHsKICAgICAgIGludF9yYW5nZTwyPiB3aWRlciA9ICpvdGhlcjsKLSAgICAgIGlyYW5n ZV91bmlvbiAod2lkZXIpOworICAgICAgcmV0dXJuIGlyYW5nZV91bmlvbiAod2lkZXIpOwogICAg IH0KICAgZWxzZQotICAgIGlyYW5nZV91bmlvbiAoKm90aGVyKTsKKyAgICByZXR1cm4gaXJhbmdl X3VuaW9uICgqb3RoZXIpOwogfQogCiBib29sCkBAIC0xNTIyLDIyICsxNTIzLDk1IEBAIGlyYW5n ZTo6bGVnYWN5X3ZlcmJvc2VfaW50ZXJzZWN0IChjb25zdCBpcmFuZ2UgKm90aGVyKQogICAgIHJl dHVybiBpcmFuZ2VfaW50ZXJzZWN0ICgqb3RoZXIpOwogfQogCisvLyBQZXJmb3JtIGFuIGVmZmlj aWVudCB1bmlvbiB3aXRoIFIgd2hlbiBib3RoIHJhbmdlcyBoYXZlIG9ubHkgYSBzaW5nbGUgcGFp ci4KKy8vIEV4Y2x1ZGVkIGFyZSBWQVJZSU5HIGFuZCBVTkRFRklORUQgcmFuZ2VzLgorCitib29s CitpcmFuZ2U6OmlyYW5nZV9zaW5nbGVfcGFpcl91bmlvbiAoY29uc3QgaXJhbmdlICZyKQorewor ICBnY2NfY2hlY2tpbmdfYXNzZXJ0ICghdW5kZWZpbmVkX3AgKCkgJiYgIXZhcnlpbmdfcCAoKSk7 CisgIGdjY19jaGVja2luZ19hc3NlcnQgKCFyLnVuZGVmaW5lZF9wICgpICYmICF2YXJ5aW5nX3Ag KCkpOworCisgIHNpZ25vcCBzaWduID0gVFlQRV9TSUdOIChUUkVFX1RZUEUgKG1fYmFzZVswXSkp OworICAvLyBDaGVjayBpZiBjdXJyZW50IGxvd2VyIGJvdW5kIGlzIGFsc28gdGhlIG5ldyBsb3dl ciBib3VuZC4KKyAgaWYgKHdpOjpsZV9wICh3aTo6dG9fd2lkZSAobV9iYXNlWzBdKSwgd2k6OnRv X3dpZGUgKHIubV9iYXNlWzBdKSwgc2lnbikpCisgICAgeworICAgICAgLy8gSWYgY3VycmVudCB1 cHBlciBib3VuZCBpcyBuZXcgdXBwZXIgYm91bmQsIHdlJ3JlIGRvbmUuCisgICAgICBpZiAod2k6 OmxlX3AgKHdpOjp0b193aWRlIChyLm1fYmFzZVsxXSksIHdpOjp0b193aWRlIChtX2Jhc2VbMV0p LCBzaWduKSkKKwlyZXR1cm4gZmFsc2U7CisgICAgICAvLyBPdGhlcndpc2UgUiBoYXMgdGhlIG5l dyB1cHBlciBib3VuZC4KKyAgICAgIC8vIENoZWNrIGZvciBvdmVybGFwL3RvdWNoaW5nIHJhbmdl cywgb3Igc2luZ2xlIHRhcmdldCByYW5nZS4KKyAgICAgIGlmIChtX21heF9yYW5nZXMgPT0gMQor CSAgfHwgd2k6OnRvX3dpZGVzdCAobV9iYXNlWzFdKSArIDEgPj0gd2k6OnRvX3dpZGVzdCAoci5t X2Jhc2VbMF0pKQorCXsKKwkgIG1fYmFzZVsxXSA9IHIubV9iYXNlWzFdOworCSAgaWYgKHZhcnlp bmdfY29tcGF0aWJsZV9wICgpKQorCSAgICBtX2tpbmQgPSBWUl9WQVJZSU5HOworCX0KKyAgICAg IGVsc2UKKwl7CisJICAvLyBUaGlzIGlzIGEgZHVhbCByYW5nZSByZXN1bHQuCisJICBtX2Jhc2Vb Ml0gPSByLm1fYmFzZVswXTsKKwkgIG1fYmFzZVszXSA9IHIubV9iYXNlWzFdOworCSAgbV9udW1f cmFuZ2VzID0gMjsKKwl9CisgICAgICBpZiAoZmxhZ19jaGVja2luZykKKwl2ZXJpZnlfcmFuZ2Ug KCk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgLy8gU2V0IHRoZSBuZXcgbG93ZXIg Ym91bmQgdG8gUidzIGxvd2VyIGJvdW5kLgorICB0cmVlIGxiID0gbV9iYXNlWzBdOworICBtX2Jh c2VbMF0gPSByLm1fYmFzZVswXTsKKworICAvLyBJZiBSIGZ1bGx5IGNvbnRhaW5zIFRISVMgcmFu Z2UsIGp1c3Qgc2V0IHRoZSB1cHBlciBib3VuZC4KKyAgaWYgKHdpOjpnZV9wICh3aTo6dG9fd2lk ZSAoci5tX2Jhc2VbMV0pLCB3aTo6dG9fd2lkZSAobV9iYXNlWzFdKSwgc2lnbikpCisgICAgbV9i YXNlWzFdID0gci5tX2Jhc2VbMV07CisgIC8vIENoZWNrIGZvciBvdmVybGFwcGluZyByYW5nZXMs IG9yIHRhcmdldCBsaW1pdGVkIHRvIGEgc2luZ2xlIHJhbmdlLgorICBlbHNlIGlmIChtX21heF9y YW5nZXMgPT0gMQorCSAgIHx8IHdpOjp0b193aWRlc3QgKHIubV9iYXNlWzFdKSArIDEgPj0gd2k6 OnRvX3dpZGVzdCAobGIpKQorICAgIHsKKyAgICAgIC8vIFRoaXMgaGFzIHRoZSBuZXcgdXBwZXIg Ym91bmQsIGp1c3QgY2hlY2sgZm9yIHZhcnlpbmcuCisgICAgICBpZiAodmFyeWluZ19jb21wYXRp YmxlX3AgKCkpCisJICBtX2tpbmQgPSBWUl9WQVJZSU5HOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIC8vIExlZnQgd2l0aCAyIHBhaXJzLgorICAgICAgbV9udW1fcmFuZ2VzID0gMjsKKyAg ICAgIG1fYmFzZVsyXSA9IGxiOworICAgICAgbV9iYXNlWzNdID0gbV9iYXNlWzFdOworICAgICAg bV9iYXNlWzFdID0gci5tX2Jhc2VbMV07CisgICAgfQorICBpZiAoZmxhZ19jaGVja2luZykKKyAg ICB2ZXJpZnlfcmFuZ2UgKCk7CisgIHJldHVybiB0cnVlOworfQorCiAvLyB1bmlvbl8gZm9yIG11 bHRpLXJhbmdlcy4KIAotdm9pZAorYm9vbAogaXJhbmdlOjppcmFuZ2VfdW5pb24gKGNvbnN0IGly YW5nZSAmcikKIHsKICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoIWxlZ2FjeV9tb2RlX3AgKCkgJiYg IXIubGVnYWN5X21vZGVfcCAoKSk7CiAKICAgaWYgKHIudW5kZWZpbmVkX3AgKCkgfHwgdmFyeWlu Z19wICgpKQotICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7CiAKICAgaWYgKHVuZGVmaW5l ZF9wICgpIHx8IHIudmFyeWluZ19wICgpKQogICAgIHsKICAgICAgIG9wZXJhdG9yPSAocik7Ci0g ICAgICByZXR1cm47CisgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgLy8gU3BlY2lhbCBj YXNlIG9uZSByYW5nZSB1bmlvbiBvbmUgcmFuZ2UuCisgIGlmIChtX251bV9yYW5nZXMgPT0gMSAm JiByLm1fbnVtX3JhbmdlcyA9PSAxKQorICAgIHJldHVybiBpcmFuZ2Vfc2luZ2xlX3BhaXJfdW5p b24gKHIpOworCisgIC8vIElmIHRoaXMgcmFuZ2VzIGZ1bGx5IGNvbnRhaW5zIFIsIHRoZW4gd2Ug bmVlZCBkbyBub3RoaW5nLgorICBpZiAoaXJhbmdlX2NvbnRhaW5zX3AgKHIpKQorICAgIHJldHVy biBmYWxzZTsKKwogICAvLyBEbyBub3Qgd29ycnkgYWJvdXQgbWVyZ2luZyBhbmQgc3VjaCBieSBy ZXNlcnZpbmcgdHdpY2UgYXMgbWFueQogICAvLyBwYWlycyBhcyBuZWVkZWQsIGFuZCB0aGVuIHNp bXBseSBzb3J0IHRoZSAyIHJhbmdlcyBpbnRvIHRoaXMKICAgLy8gaW50ZXJtZWRpYXRlIGZvcm0u CkBAIC0xNjI4LDYgKzE3MDIsNyBAQCBpcmFuZ2U6OmlyYW5nZV91bmlvbiAoY29uc3QgaXJhbmdl ICZyKQogCiAgIGlmIChmbGFnX2NoZWNraW5nKQogICAgIHZlcmlmeV9yYW5nZSAoKTsKKyAgcmV0 dXJuIHRydWU7CiB9CiAKIC8vIFJldHVybiBUUlVFIGlmIFRISVMgZnVsbHkgY29udGFpbnMgUi4g IE5vIHVuZGVmaW5lZCBvciB2YXJ5aW5nIGNhc2VzLgpkaWZmIC0tZ2l0IGEvZ2NjL3ZhbHVlLXJh bmdlLmggYi9nY2MvdmFsdWUtcmFuZ2UuaAppbmRleCA0MTk4NjAyNDdmYy4uZWM1OWQyZTRmMjMg MTAwNjQ0Ci0tLSBhL2djYy92YWx1ZS1yYW5nZS5oCisrKyBiL2djYy92YWx1ZS1yYW5nZS5oCkBA IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgYm9vbCBjb250YWluc19wICh0cmVlKSBjb25zdDsK IAogICAvLyBJbi1wbGFjZSBvcGVyYXRvcnMuCi0gIHZvaWQgdW5pb25fIChjb25zdCBpcmFuZ2Ug Jik7CisgIGJvb2wgdW5pb25fIChjb25zdCBpcmFuZ2UgJik7CiAgIGJvb2wgaW50ZXJzZWN0IChj b25zdCBpcmFuZ2UgJik7CiAgIHZvaWQgaW52ZXJ0ICgpOwogCkBAIC05Niw3ICs5Niw3IEBAIHB1 YmxpYzoKICAgYm9vbCBtYXlfY29udGFpbl9wICh0cmVlKSBjb25zdDsJCS8vIERFUFJFQ0FURUQK ICAgdm9pZCBzZXQgKHRyZWUpOwkJCQkvLyBERVBSRUNBVEVECiAgIGJvb2wgZXF1YWxfcCAoY29u c3QgaXJhbmdlICYpIGNvbnN0OwkJLy8gREVQUkVDQVRFRAotICB2b2lkIGxlZ2FjeV92ZXJib3Nl X3VuaW9uXyAoY29uc3QgY2xhc3MgaXJhbmdlICopOwkvLyBERVBSRUNBVEVECisgIGJvb2wgbGVn YWN5X3ZlcmJvc2VfdW5pb25fIChjb25zdCBjbGFzcyBpcmFuZ2UgKik7CS8vIERFUFJFQ0FURUQK ICAgYm9vbCBsZWdhY3lfdmVyYm9zZV9pbnRlcnNlY3QgKGNvbnN0IGlyYW5nZSAqKTsJLy8gREVQ UkVDQVRFRAogCiBwcm90ZWN0ZWQ6CkBAIC0xMDcsMTEgKzEwNywxMiBAQCBwcm90ZWN0ZWQ6CiAg IHRyZWUgdHJlZV91cHBlcl9ib3VuZCAoKSBjb25zdDsKIAogICAgLy8gSW4tcGxhY2Ugb3BlcmF0 b3JzLgotICB2b2lkIGlyYW5nZV91bmlvbiAoY29uc3QgaXJhbmdlICYpOworICBib29sIGlyYW5n ZV91bmlvbiAoY29uc3QgaXJhbmdlICYpOwogICBib29sIGlyYW5nZV9pbnRlcnNlY3QgKGNvbnN0 IGlyYW5nZSAmKTsKICAgdm9pZCBpcmFuZ2Vfc2V0ICh0cmVlLCB0cmVlKTsKICAgdm9pZCBpcmFu Z2Vfc2V0X2FudGlfcmFuZ2UgKHRyZWUsIHRyZWUpOwogICBib29sIGlyYW5nZV9jb250YWluc19w IChjb25zdCBpcmFuZ2UgJikgY29uc3Q7CisgIGJvb2wgaXJhbmdlX3NpbmdsZV9wYWlyX3VuaW9u IChjb25zdCBpcmFuZ2UgJnIpOwogCiAgIHZvaWQgbm9ybWFsaXplX2tpbmQgKCk7CiAKQEAgLTU0 NSwxMyArNTQ2LDE0IEBAIGlyYW5nZTo6dXBwZXJfYm91bmQgKCkgY29uc3QKICAgcmV0dXJuIHVw cGVyX2JvdW5kIChwYWlycyAtIDEpOwogfQogCi1pbmxpbmUgdm9pZAoraW5saW5lIGJvb2wKIGly YW5nZTo6dW5pb25fIChjb25zdCBpcmFuZ2UgJnIpCiB7CiAgIGR1bXBfZmxhZ3NfdCBtX2ZsYWdz ID0gZHVtcF9mbGFnczsKICAgZHVtcF9mbGFncyAmPSB+VERGX0RFVEFJTFM7Ci0gIGlyYW5nZTo6 bGVnYWN5X3ZlcmJvc2VfdW5pb25fICgmcik7CisgIGJvb2wgcmV0ID0gaXJhbmdlOjpsZWdhY3lf dmVyYm9zZV91bmlvbl8gKCZyKTsKICAgZHVtcF9mbGFncyA9IG1fZmxhZ3M7CisgIHJldHVybiBy ZXQ7CiB9CiAKIGlubGluZSBib29sCg== --------------JDOtAyk5Ms3puotm4azMWS0x--