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.133.124]) by sourceware.org (Postfix) with ESMTPS id A53B53858D28 for ; Tue, 11 Apr 2023 20:58:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A53B53858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681246707; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=6eCg4cRN1c3Xew0T28YaInTd4fY2KIy2z96BwTSMPZM=; b=XtvAA2ZM3ZDibHUiCuH+x2TIi9pUPpoOLwNIcwtuiYghuSGic2qGBXH68cqNk+zV7hs1/A KFUZrFImn59rZVXbCFcXQGtonbJE69G9HjJLJFrt94ZICQ3G6Gkd8la1Q4VlfzIxU+uPle H4Y27QOPWZM5+uMSHwrI7MNYdN9wHTc= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-594-sGdv_UFOO827FdJey4CcRw-1; Tue, 11 Apr 2023 16:58:21 -0400 X-MC-Unique: sGdv_UFOO827FdJey4CcRw-1 Received: by mail-qt1-f198.google.com with SMTP id l20-20020a05622a051400b003e6d92a606bso2670639qtx.14 for ; Tue, 11 Apr 2023 13:58:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681246701; x=1683838701; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=2TDwN7ccHuLbCxFcHdysoHOK8H8nBsyw6u7bsiEPYgI=; b=3Mo70B7/6SIhpuvQ/DrNVFMn4PE8i/Dh3uvidb4/cUkdGUTzR81TDgNZdkWGPDEoFg vA1NY47Z7SXllYr7PXXkrM0V4vuCw2Xh6eFUTwmo02iyQsiWxQuweQlm1oSVt2ECs7Yh dF0pIuFhBMp9K/hufa6Vh7GPYVqpqxsfAwI0JRPMwy6CkO1tIY1cXf1idKPtFrY2el8S OjPnXSu6zi2oATZIOjsSYv2Bixyl3zb/msgnZDl5Bh31XSavAV+o/bgFu2ni7FyRZV6/ X1Xe8SNsPojUw08lGGlNT1ZE1ffFP4myeqlXgebQZk+HMNhljCzmJfSUMnOAHF7Zlnzj 0W+A== X-Gm-Message-State: AAQBX9c0cpf1zHh8Lo2r/9gjE0oFmzd5cqaawro907MscfhbwKxyBUOM woKSz+V9sMXMRZls7hTSTf+4kJcz6pSOO60NTl3+ITE3XZxKnq4v4XmAnr7cAlIrMkZFPuFB9qo Emt002U8EPpJ/zw6cTA== X-Received: by 2002:ac8:5e0f:0:b0:3e6:332a:70db with SMTP id h15-20020ac85e0f000000b003e6332a70dbmr19429502qtx.37.1681246701402; Tue, 11 Apr 2023 13:58:21 -0700 (PDT) X-Google-Smtp-Source: AKy350YaSgowGCTLDzNAK4K2TQPR18XrltvOPX1YWKWgLQGwN9Uo7J8kAtNpR/6BD6PxMLd3QO+6tQ== X-Received: by 2002:ac8:5e0f:0:b0:3e6:332a:70db with SMTP id h15-20020ac85e0f000000b003e6332a70dbmr19429489qtx.37.1681246701136; Tue, 11 Apr 2023 13:58:21 -0700 (PDT) Received: from ?IPV6:2607:fea8:51dd:1100::345b? ([2607:fea8:51dd:1100::345b]) by smtp.gmail.com with ESMTPSA id r83-20020a37a856000000b0074aaf4a0c6asm765735qke.67.2023.04.11.13.58.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Apr 2023 13:58:20 -0700 (PDT) Message-ID: <7ad17002-8df2-c268-03f5-902ed57f3a97@redhat.com> Date: Tue, 11 Apr 2023 16:58:19 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [RFC PATCH] range-op-float: Fix up op1_op2_relation of comparisons To: Jakub Jelinek , Aldy Hernandez Cc: gcc-patches@gcc.gnu.org References: From: Andrew MacLeod In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------4I6nkCkuCFwDFlW0kHm0he0j" Content-Language: en-US X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------4I6nkCkuCFwDFlW0kHm0he0j Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 4/11/23 04:21, Jakub Jelinek wrote: > Hi! > > This patch was what I've tried first before the currently committed > PR109386 fix. Still, I think it is the right thing until we have proper > full set of VREL_* relations for NANs (though it would be really nice > if op1_op2_relation could be passed either type of the comparison > operands, or even better ranges of the two operands, such that > we could choose if inversion of say VREL_LT is VREL_GE (if !MODE_HONOR_NANS > (TYPE_MODE (type))) or rhs1/rhs2 ranges are guaranteed not to include > NANs (!known_isnan && !maybe_isnan for both), or VREL_UNGE, etc. > Anyway, the current state is that for the LE/LT/GE/GT comparisons > we pretend the inverse is like for integral comparisons, which is > true only if NANs can't appear in operands, while for UNLE/UNLT/UNGE/UNGT > we don't override op1_op2_relation (so it always yields VREL_VARYING). > > Though, this patch regresses the > FAIL: gcc.dg/tree-ssa/vrp-float-6.c scan-tree-dump-times evrp "Folding predicate x_.* <= y_.* to 1" 1 > test, so am not sure what to do with it. The test has explicit > !isnan tests around it, so e.g. having the ranges passed to op1_op2_relation > would also fix it. I see no reason op1_op2_relation can't have ranges provided to it for op1 and op2.  There was no need originally.  There are times when we don't have a range handy and we want the simple answer, but if the ranges are available, we could utilize them. Attached is a patch which added op1 and op2 ranges to the routine.  GORI will utilize and pass on real ranges (which I think is the core part you want), but the consumers in fold_using_range at this point will simply pass in varying.  There are 2 consumers in fold_using_range.. one is a combiner for logicals, and the other is for export outgoing relations that are not on the branch condition.  The combiner could use real ranges, but until I fix dispatch up it is very awkward to get them.  The export one simply doesn't have them without going to an calculating them.. which would probably be expensive.. Regardless, you can at least try your enhancement using real ranges and see if this works for you. This bootstraps and has no regressions, and is fine by me if you want to use it., Andrew --------------4I6nkCkuCFwDFlW0kHm0he0j Content-Type: text/x-patch; charset=UTF-8; name="rel.patch" Content-Disposition: attachment; filename="rel.patch" Content-Transfer-Encoding: base64 Y29tbWl0IDM3MTUyMzRmMmNiYTIxZjJiOWVjNmM2MDliNmYwNThkMWQ4YWY1MDAKQXV0aG9yOiBB bmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KRGF0ZTogICBUdWUgQXByIDExIDEy OjI1OjQ5IDIwMjMgLTA0MDAKCiAgICBBZGQgb3AxIGFuZCBvcDIgcmFuZ2VzIHRvIG9wMV9vcDJf cmVsYXRpb24uCiAgICAKICAgICAgICAgICAgKiBnaW1wbGUtcmFuZ2UtZm9sZC5jYyAoZm9sZF91 c2luZ19yYW5nZTo6cmVsYXRpb25fZm9sZF9hbmRfb3IpOgogICAgICAgICAgICBQcm92aWRlIFZB UllJTkcgZm9yIG9wMSBhbmQgb3AyIHdoZW4gY2FsbGluZyBvcDFfb3AyX3JlbGF0aW9uLgogICAg ICAgICAgICAoZnVyX3NvdXJjZTo6cmVnaXN0ZXJfb3V0Z29pbmdfZWRnZXMpOiBEaXR0by4KICAg ICAgICAgICAgKiBnaW1wbGUtcmFuZ2UtZ29yaS5jYyAoZ29yaV9jb21wdXRlOjpjb21wdXRlX29w ZXJhbmQxX3JhbmdlKToKICAgICAgICAgICAgUGFzcyBvcDEgYW5kIG9wMiByYW5nZXMgdG8gb3Ax X29wMl9yZWxhdGlvbi4KICAgICAgICAgICAgKGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5k Ml9yYW5nZSk6IERpdHRvLgogICAgICAgICAgICAqIHJhbmdlLW9wLWZsb2F0LmNjICgqOjpvcDFf b3AyX3JlbGF0aW9uKTogQWRqdXN0IHBhcmFtcy4KICAgICAgICAgICAgKiByYW5nZS1vcC5jYyAo Kjo6b3AxX29wMl9yZWxhdGlvbik6IEFkanVzdCBwYXJhbXMuCiAgICAgICAgICAgICogcmFuZ2Ut b3AuaCAoKjo6b3AxX29wMl9yZWxhdGlvbik6IEFkanVzdCBwYXJhbXMuCgpkaWZmIC0tZ2l0IGEv Z2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjCmluZGV4 IGU4MWY2YjM2OTllLi4zMTcwYjFlNzFhMSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1m b2xkLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZm9sZC5jYwpAQCAtMTA1MSw5ICsxMDUxLDEx IEBAIGZvbGRfdXNpbmdfcmFuZ2U6OnJlbGF0aW9uX2ZvbGRfYW5kX29yIChpcmFuZ2UmIGxoc19y YW5nZSwgZ2ltcGxlICpzLAogICAgIHJldHVybjsKIAogICBpbnRfcmFuZ2U8Mj4gYm9vbF9vbmUg KGJvb2xlYW5fdHJ1ZV9ub2RlLCBib29sZWFuX3RydWVfbm9kZSk7CisgIFZhbHVlX1JhbmdlIG9w IChUUkVFX1RZUEUgKHNzYTEpKTsKKyAgb3Auc2V0X3ZhcnlpbmcgKFRSRUVfVFlQRSAoc3NhMSkp OwogCi0gIHJlbGF0aW9uX2tpbmQgcmVsYXRpb24xID0gaGFuZGxlcjEub3AxX29wMl9yZWxhdGlv biAoYm9vbF9vbmUpOwotICByZWxhdGlvbl9raW5kIHJlbGF0aW9uMiA9IGhhbmRsZXIyLm9wMV9v cDJfcmVsYXRpb24gKGJvb2xfb25lKTsKKyAgcmVsYXRpb25fa2luZCByZWxhdGlvbjEgPSBoYW5k bGVyMS5vcDFfb3AyX3JlbGF0aW9uIChib29sX29uZSwgb3AsIG9wKTsKKyAgcmVsYXRpb25fa2lu ZCByZWxhdGlvbjIgPSBoYW5kbGVyMi5vcDFfb3AyX3JlbGF0aW9uIChib29sX29uZSwgb3AsIG9w KTsKICAgaWYgKHJlbGF0aW9uMSA9PSBWUkVMX1ZBUllJTkcgfHwgcmVsYXRpb24yID09IFZSRUxf VkFSWUlORykKICAgICByZXR1cm47CiAKQEAgLTExMjUsMTUgKzExMjcsMTcgQEAgZnVyX3NvdXJj ZTo6cmVnaXN0ZXJfb3V0Z29pbmdfZWRnZXMgKGdjb25kICpzLCBpcmFuZ2UgJmxoc19yYW5nZSwg ZWRnZSBlMCwgZWRnZQogICB0cmVlIHNzYTIgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIu b3BlcmFuZDIgKCkpOwogICBpZiAoc3NhMSAmJiBzc2EyKQogICAgIHsKKyAgICAgIFZhbHVlX1Jh bmdlIG9wIChUUkVFX1RZUEUgKHNzYTEpKTsKKyAgICAgIG9wLnNldF92YXJ5aW5nIChUUkVFX1RZ UEUgKHNzYTEpKTsKICAgICAgIGlmIChlMCkKIAl7Ci0JICByZWxhdGlvbl9raW5kIHJlbGF0aW9u ID0gaGFuZGxlci5vcDFfb3AyX3JlbGF0aW9uIChlMF9yYW5nZSk7CisJICByZWxhdGlvbl9raW5k IHJlbGF0aW9uID0gaGFuZGxlci5vcDFfb3AyX3JlbGF0aW9uIChlMF9yYW5nZSwgb3AsIG9wKTsK IAkgIGlmIChyZWxhdGlvbiAhPSBWUkVMX1ZBUllJTkcpCiAJICAgIHJlZ2lzdGVyX3JlbGF0aW9u IChlMCwgcmVsYXRpb24sIHNzYTEsIHNzYTIpOwogCX0KICAgICAgIGlmIChlMSkKIAl7Ci0JICBy ZWxhdGlvbl9raW5kIHJlbGF0aW9uID0gaGFuZGxlci5vcDFfb3AyX3JlbGF0aW9uIChlMV9yYW5n ZSk7CisJICByZWxhdGlvbl9raW5kIHJlbGF0aW9uID0gaGFuZGxlci5vcDFfb3AyX3JlbGF0aW9u IChlMV9yYW5nZSwgb3AsIG9wKTsKIAkgIGlmIChyZWxhdGlvbiAhPSBWUkVMX1ZBUllJTkcpCiAJ ICAgIHJlZ2lzdGVyX3JlbGF0aW9uIChlMSwgcmVsYXRpb24sIHNzYTEsIHNzYTIpOwogCX0KQEAg LTExNjAsMTcgKzExNjQsMTkgQEAgZnVyX3NvdXJjZTo6cmVnaXN0ZXJfb3V0Z29pbmdfZWRnZXMg KGdjb25kICpzLCBpcmFuZ2UgJmxoc19yYW5nZSwgZWRnZSBlMCwgZWRnZQogICAgICAgVmFsdWVf UmFuZ2UgciAoVFJFRV9UWVBFIChuYW1lKSk7CiAgICAgICBpZiAoc3NhMSAmJiBzc2EyKQogCXsK KwkgIFZhbHVlX1JhbmdlIG9wIChUUkVFX1RZUEUgKHNzYTEpKTsKKwkgIG9wLnNldF92YXJ5aW5n IChUUkVFX1RZUEUgKHNzYTEpKTsKIAkgIGlmIChlMCAmJiBnb3JpICgpLT5vdXRnb2luZ19lZGdl X3JhbmdlX3AgKHIsIGUwLCBuYW1lLCAqbV9xdWVyeSkKIAkgICAgICAmJiByLnNpbmdsZXRvbl9w ICgpKQogCSAgICB7Ci0JICAgICAgcmVsYXRpb25fa2luZCByZWxhdGlvbiA9IGhhbmRsZXIub3Ax X29wMl9yZWxhdGlvbiAocik7CisJICAgICAgcmVsYXRpb25fa2luZCByZWxhdGlvbiA9IGhhbmRs ZXIub3AxX29wMl9yZWxhdGlvbiAociwgb3AsIG9wKTsKIAkgICAgICBpZiAocmVsYXRpb24gIT0g VlJFTF9WQVJZSU5HKQogCQlyZWdpc3Rlcl9yZWxhdGlvbiAoZTAsIHJlbGF0aW9uLCBzc2ExLCBz c2EyKTsKIAkgICAgfQogCSAgaWYgKGUxICYmIGdvcmkgKCktPm91dGdvaW5nX2VkZ2VfcmFuZ2Vf cCAociwgZTEsIG5hbWUsICptX3F1ZXJ5KQogCSAgICAgICYmIHIuc2luZ2xldG9uX3AgKCkpCiAJ ICAgIHsKLQkgICAgICByZWxhdGlvbl9raW5kIHJlbGF0aW9uID0gaGFuZGxlci5vcDFfb3AyX3Jl bGF0aW9uIChyKTsKKwkgICAgICByZWxhdGlvbl9raW5kIHJlbGF0aW9uID0gaGFuZGxlci5vcDFf b3AyX3JlbGF0aW9uIChyLCBvcCwgb3ApOwogCSAgICAgIGlmIChyZWxhdGlvbiAhPSBWUkVMX1ZB UllJTkcpCiAJCXJlZ2lzdGVyX3JlbGF0aW9uIChlMSwgcmVsYXRpb24sIHNzYTEsIHNzYTIpOwog CSAgICB9CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXJhbmdlLWdvcmkuY2MgYi9nY2MvZ2ltcGxl LXJhbmdlLWdvcmkuY2MKaW5kZXggZDc3ZTFmNTFhYzIuLmE0ODhjMjMwZjZjIDEwMDY0NAotLS0g YS9nY2MvZ2ltcGxlLXJhbmdlLWdvcmkuY2MKKysrIGIvZ2NjL2dpbXBsZS1yYW5nZS1nb3JpLmNj CkBAIC0xMTA1LDcgKzExMDUsOCBAQCBnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3BlcmFuZDFfcmFu Z2UgKHZyYW5nZSAmciwKICAgICAgIC8vIFRoaXMgYWxsb3dzIG11bHRpcGxlIHJlbGF0aW9ucyB0 byBiZSBwcm9jZXNzZWQgaW4gY29tcG91bmQgbG9naWNhbHMuCiAgICAgICBpZiAoZ2ltcGxlX3Jh bmdlX3NzYV9wIChvcDEpICYmIGdpbXBsZV9yYW5nZV9zc2FfcCAob3AyKSkKIAl7Ci0JICByZWxh dGlvbl9raW5kIGsgPSBoYW5kbGVyLm9wMV9vcDJfcmVsYXRpb24gKGxocyk7CisJICByZWxhdGlv bl9raW5kIGsgPSBoYW5kbGVyLm9wMV9vcDJfcmVsYXRpb24gKGxocywgb3AxX3JhbmdlLAorCQkJ CQkJICAgICAgb3AyX3JhbmdlKTsKIAkgIGlmIChrICE9IFZSRUxfVkFSWUlORykKIAkgICAgewog CSAgICAgIG9wX29wID0gazsKQEAgLTEyMTAsNyArMTIxMSw3IEBAIGdvcmlfY29tcHV0ZTo6Y29t cHV0ZV9vcGVyYW5kMl9yYW5nZSAodnJhbmdlICZyLAogICAvLyBUaGlzIGFsbG93cyBtdWx0aXBs ZSByZWxhdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIGluIGNvbXBvdW5kIGxvZ2ljYWxzLgogICBpZiAo Z2ltcGxlX3JhbmdlX3NzYV9wIChvcDEpICYmIGdpbXBsZV9yYW5nZV9zc2FfcCAob3AyKSkKICAg ICB7Ci0gICAgICByZWxhdGlvbl9raW5kIGsgPSBoYW5kbGVyLm9wMV9vcDJfcmVsYXRpb24gKGxo cyk7CisgICAgICByZWxhdGlvbl9raW5kIGsgPSBoYW5kbGVyLm9wMV9vcDJfcmVsYXRpb24gKGxo cywgb3AxX3JhbmdlLCBvcDJfcmFuZ2UpOwogICAgICAgaWYgKGsgIT0gVlJFTF9WQVJZSU5HKQog CXsKIAkgIG9wX29wID0gazsKZGlmZiAtLWdpdCBhL2djYy9yYW5nZS1vcC1mbG9hdC5jYyBiL2dj Yy9yYW5nZS1vcC1mbG9hdC5jYwppbmRleCBlMGU5MWJhZDQ0ZC4uNzJkZThmMmE4NTYgMTAwNjQ0 Ci0tLSBhL2djYy9yYW5nZS1vcC1mbG9hdC5jYworKysgYi9nY2MvcmFuZ2Utb3AtZmxvYXQuY2MK QEAgLTIzMywxMyArMjMzLDE3IEBAIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpsaHNfb3AyX3JlbGF0 aW9uIChjb25zdCBmcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VELAogfQogCiByZWxhdGlvbl9r aW5kCi1yYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdl ICZsaHMgQVRUUklCVVRFX1VOVVNFRCkgY29uc3QKK3JhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFf b3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VELAorCQkJCQlj b25zdCBmcmFuZ2UgJm9wMSBBVFRSSUJVVEVfVU5VU0VELAorCQkJCQljb25zdCBmcmFuZ2UgJm9w MiBBVFRSSUJVVEVfVU5VU0VEKSBjb25zdAogewogICByZXR1cm4gVlJFTF9WQVJZSU5HOwogfQog CiByZWxhdGlvbl9raW5kCi1yYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX29wMl9yZWxhdGlvbiAo Y29uc3QgZnJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCkgY29uc3QKK3JhbmdlX29wZXJhdG9y X2Zsb2F0OjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBmcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5V U0VELAorCQkJCQljb25zdCBmcmFuZ2UgJm9wMSBBVFRSSUJVVEVfVU5VU0VELAorCQkJCQljb25z dCBmcmFuZ2UgJm9wMiBBVFRSSUJVVEVfVU5VU0VEKSBjb25zdAogewogICByZXR1cm4gVlJFTF9W QVJZSU5HOwogfQpAQCAtNTc4LDcgKzU4Miw4IEBAIHB1YmxpYzoKICAgYm9vbCBmb2xkX3Jhbmdl IChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZy YW5nZSAmb3AyLAogCQkgICByZWxhdGlvbl90cmlvID0gVFJJT19WQVJZSU5HKSBjb25zdCBmaW5h bCBvdmVycmlkZTsKLSAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFu Z2UgJmxocykgY29uc3QgZmluYWwgb3ZlcnJpZGUKKyAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3Jl bGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocywgY29uc3QgZnJhbmdlICYsCisJCQkJICBjb25zdCBm cmFuZ2UgJikgY29uc3QgZmluYWwgb3ZlcnJpZGUKICAgewogICAgIHJldHVybiBlcXVhbF9vcDFf b3AyX3JlbGF0aW9uIChsaHMpOwogICB9CkBAIC03MDYsNyArNzExLDggQEAgcHVibGljOgogICBi b29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkgICBjb25zdCBmcmFuZ2Ug Jm9wMSwgY29uc3QgZnJhbmdlICZvcDIsCiAJCSAgIHJlbGF0aW9uX3RyaW8gcmVsID0gVFJJT19W QVJZSU5HKSBjb25zdCBmaW5hbCBvdmVycmlkZTsKLSAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3Jl bGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykgY29uc3QgZmluYWwgb3ZlcnJpZGUKKyAgcmVsYXRp b25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocywgY29uc3QgZnJhbmdl ICYsCisJCQkJICBjb25zdCBmcmFuZ2UgJikgY29uc3QgZmluYWwgb3ZlcnJpZGUKICAgewogICAg IHJldHVybiBub3RfZXF1YWxfb3AxX29wMl9yZWxhdGlvbiAobGhzKTsKICAgfQpAQCAtODI5LDcg KzgzNSw4IEBAIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlw ZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmb3AyLAogCQkgICByZWxh dGlvbl90cmlvID0gVFJJT19WQVJZSU5HKSBjb25zdCBmaW5hbCBvdmVycmlkZTsKLSAgcmVsYXRp b25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykgY29uc3QgZmluYWwg b3ZlcnJpZGUKKyAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2Ug JmxocywgY29uc3QgZnJhbmdlICYsCisJCQkJICBjb25zdCBmcmFuZ2UgJikgY29uc3QgZmluYWwg b3ZlcnJpZGUKICAgewogICAgIHJldHVybiBsdF9vcDFfb3AyX3JlbGF0aW9uIChsaHMpOwogICB9 CkBAIC05NDUsNyArOTUyLDggQEAgcHVibGljOgogICBib29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAm ciwgdHJlZSB0eXBlLAogCQkgICBjb25zdCBmcmFuZ2UgJm9wMSwgY29uc3QgZnJhbmdlICZvcDIs CiAJCSAgIHJlbGF0aW9uX3RyaW8gcmVsID0gVFJJT19WQVJZSU5HKSBjb25zdCBmaW5hbCBvdmVy cmlkZTsKLSAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxo cykgY29uc3QgZmluYWwgb3ZlcnJpZGUKKyAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9u IChjb25zdCBpcmFuZ2UgJmxocywgY29uc3QgZnJhbmdlICYsCisJCQkJICBjb25zdCBmcmFuZ2Ug JikgY29uc3QgZmluYWwgb3ZlcnJpZGUKICAgewogICAgIHJldHVybiBsZV9vcDFfb3AyX3JlbGF0 aW9uIChsaHMpOwogICB9CkBAIC0xMDU1LDcgKzEwNjMsOCBAQCBwdWJsaWM6CiAgIGJvb2wgZm9s ZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0IGZyYW5nZSAmb3AxLCBj b25zdCBmcmFuZ2UgJm9wMiwKIAkJICAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29u c3QgZmluYWwgb3ZlcnJpZGU7Ci0gIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29u c3QgaXJhbmdlICZsaHMpIGNvbnN0IGZpbmFsIG92ZXJyaWRlCisgIHJlbGF0aW9uX2tpbmQgb3Ax X29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMsIGNvbnN0IGZyYW5nZSAmLAorCQkJCSAg Y29uc3QgZnJhbmdlICYpIGNvbnN0IGZpbmFsIG92ZXJyaWRlCiAgIHsKICAgICByZXR1cm4gZ3Rf b3AxX29wMl9yZWxhdGlvbiAobGhzKTsKICAgfQpAQCAtMTE3NSw3ICsxMTg0LDggQEAgcHVibGlj OgogICBib29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkgICBjb25zdCBm cmFuZ2UgJm9wMSwgY29uc3QgZnJhbmdlICZvcDIsCiAJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklP X1ZBUllJTkcpIGNvbnN0IGZpbmFsIG92ZXJyaWRlOwotICByZWxhdGlvbl9raW5kIG9wMV9vcDJf cmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKSBjb25zdCBmaW5hbCBvdmVycmlkZQorICByZWxh dGlvbl9raW5kIG9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzLCBjb25zdCBmcmFu Z2UgJiwKKwkJCQkgIGNvbnN0IGZyYW5nZSAmKSBjb25zdCBmaW5hbCBvdmVycmlkZQogICB7CiAg ICAgcmV0dXJuIGdlX29wMV9vcDJfcmVsYXRpb24gKGxocyk7CiAgIH0KZGlmZiAtLWdpdCBhL2dj Yy9yYW5nZS1vcC5jYyBiL2djYy9yYW5nZS1vcC5jYwppbmRleCBmOTBlNzhkY2ZiYy4uODc2NzQ3 MTEwYTkgMTAwNjQ0Ci0tLSBhL2djYy9yYW5nZS1vcC5jYworKysgYi9nY2MvcmFuZ2Utb3AuY2MK QEAgLTM2OCwxMSArMzY4LDE0IEBAIHJhbmdlX29wZXJhdG9yOjpsaHNfb3AyX3JlbGF0aW9uIChj b25zdCBpcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VELAogfQogCiByZWxhdGlvbl9raW5kCi1y YW5nZV9vcGVyYXRvcjo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMgQVRUUklC VVRFX1VOVVNFRCkgY29uc3QKK3JhbmdlX29wZXJhdG9yOjpvcDFfb3AyX3JlbGF0aW9uIChjb25z dCBpcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VELAorCQkJCSAgY29uc3QgaXJhbmdlICZvcDEg QVRUUklCVVRFX1VOVVNFRCwKKwkJCQkgIGNvbnN0IGlyYW5nZSAmb3AyIEFUVFJJQlVURV9VTlVT RUQpIGNvbnN0CiB7CiAgIHJldHVybiBWUkVMX1ZBUllJTkc7CiB9CiAKKwogLy8gRGVmYXVsdCBp cyBubyByZWxhdGlvbiBhZmZlY3RzIHRoZSBMSFMuCiAKIGJvb2wKQEAgLTU2NSw3ICs1NjgsOSBA QCBwdWJsaWM6CiAJCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAogCQkJICBjb25zdCBpcmFuZ2UgJnZh bCwKIAkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7Ci0gIHZpcnR1YWwg cmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykgY29uc3Q7 CisgIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2Ug JmxocywKKwkJCQkJICBjb25zdCBpcmFuZ2UgJiwKKwkJCQkJICBjb25zdCBpcmFuZ2UgJikgY29u c3Q7CiB9IG9wX2VxdWFsOwogCiAvLyBDaGVjayBpZiB0aGUgTEhTIHJhbmdlIGluZGljYXRlcyBh IHJlbGF0aW9uIGJldHdlZW4gT1AxIGFuZCBPUDIuCkBAIC01ODcsNyArNTkyLDggQEAgZXF1YWxf b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMpCiB9CiAKIHJlbGF0aW9uX2tpbmQK LW9wZXJhdG9yX2VxdWFsOjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykgY29u c3QKK29wZXJhdG9yX2VxdWFsOjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocywg Y29uc3QgaXJhbmdlICYsCisJCQkJICBjb25zdCBpcmFuZ2UgJikgY29uc3QKIHsKICAgcmV0dXJu IGVxdWFsX29wMV9vcDJfcmVsYXRpb24gKGxocyk7CiB9CkBAIC02ODUsNyArNjkxLDggQEAgcHVi bGljOgogCQkJICBjb25zdCBpcmFuZ2UgJmxocywKIAkJCSAgY29uc3QgaXJhbmdlICZvcDEsCiAJ CQkgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFsIHJlbGF0 aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMpIGNvbnN0OworICB2 aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMs IGNvbnN0IGlyYW5nZSAmLAorCQkJCQkgIGNvbnN0IGlyYW5nZSAmKSBjb25zdDsKIH0gb3Bfbm90 X2VxdWFsOwogCiAvLyBDaGVjayBpZiB0aGUgTEhTIHJhbmdlIGluZGljYXRlcyBhIHJlbGF0aW9u IGJldHdlZW4gT1AxIGFuZCBPUDIuCkBAIC03MDcsNyArNzE0LDggQEAgbm90X2VxdWFsX29wMV9v cDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKQogfQogCiByZWxhdGlvbl9raW5kCi1vcGVy YXRvcl9ub3RfZXF1YWw6Om9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKSBjb25z dAorb3BlcmF0b3Jfbm90X2VxdWFsOjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxo cywgY29uc3QgaXJhbmdlICYsCisJCQkJICAgICAgY29uc3QgaXJhbmdlICYpIGNvbnN0CiB7CiAg IHJldHVybiBub3RfZXF1YWxfb3AxX29wMl9yZWxhdGlvbiAobGhzKTsKIH0KQEAgLTg2NSw3ICs4 NzMsOCBAQCBwdWJsaWM6CiAJCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAogCQkJICBjb25zdCBpcmFu Z2UgJm9wMSwKIAkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7Ci0gIHZp cnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykg Y29uc3Q7CisgIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBp cmFuZ2UgJmxocywgY29uc3QgaXJhbmdlICYsCisJCQkJCSAgY29uc3QgaXJhbmdlICYpIGNvbnN0 OwogfSBvcF9sdDsKIAogLy8gQ2hlY2sgaWYgdGhlIExIUyByYW5nZSBpbmRpY2F0ZXMgYSByZWxh dGlvbiBiZXR3ZWVuIE9QMSBhbmQgT1AyLgpAQCAtODg3LDcgKzg5Niw4IEBAIGx0X29wMV9vcDJf cmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKQogfQogCiByZWxhdGlvbl9raW5kCi1vcGVyYXRv cl9sdDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMpIGNvbnN0CitvcGVyYXRv cl9sdDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMsIGNvbnN0IGlyYW5nZSAm LAorCQkJICAgICAgIGNvbnN0IGlyYW5nZSAmKSBjb25zdAogewogICByZXR1cm4gbHRfb3AxX29w Ml9yZWxhdGlvbiAobGhzKTsKIH0KQEAgLTk4NSw3ICs5OTUsOCBAQCBwdWJsaWM6CiAJCQkgIGNv bnN0IGlyYW5nZSAmbGhzLAogCQkJICBjb25zdCBpcmFuZ2UgJm9wMSwKIAkJCSAgcmVsYXRpb25f dHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7Ci0gIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFf b3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocykgY29uc3Q7CisgIHZpcnR1YWwgcmVsYXRp b25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocywgY29uc3QgaXJhbmdl ICYsCisJCQkJCSAgY29uc3QgaXJhbmdlICYpIGNvbnN0OwogfSBvcF9sZTsKIAogLy8gQ2hlY2sg aWYgdGhlIExIUyByYW5nZSBpbmRpY2F0ZXMgYSByZWxhdGlvbiBiZXR3ZWVuIE9QMSBhbmQgT1Ay LgpAQCAtMTAwNyw3ICsxMDE4LDggQEAgbGVfb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdl ICZsaHMpCiB9CiAKIHJlbGF0aW9uX2tpbmQKLW9wZXJhdG9yX2xlOjpvcDFfb3AyX3JlbGF0aW9u IChjb25zdCBpcmFuZ2UgJmxocykgY29uc3QKK29wZXJhdG9yX2xlOjpvcDFfb3AyX3JlbGF0aW9u IChjb25zdCBpcmFuZ2UgJmxocywgY29uc3QgaXJhbmdlICYsCisJCQkgICAgICAgY29uc3QgaXJh bmdlICYpIGNvbnN0CiB7CiAgIHJldHVybiBsZV9vcDFfb3AyX3JlbGF0aW9uIChsaHMpOwogfQpA QCAtMTEwMiw3ICsxMTE0LDggQEAgcHVibGljOgogCQkJICBjb25zdCBpcmFuZ2UgJmxocywKIAkJ CSAgY29uc3QgaXJhbmdlICZvcDEsCiAJCQkgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcp IGNvbnN0OwotICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3Qg aXJhbmdlICZsaHMpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxh dGlvbiAoY29uc3QgaXJhbmdlICZsaHMsIGNvbnN0IGlyYW5nZSAmLAorCQkJCQkgIGNvbnN0IGly YW5nZSAmKSBjb25zdDsKIH0gb3BfZ3Q7CiAKIC8vIENoZWNrIGlmIHRoZSBMSFMgcmFuZ2UgaW5k aWNhdGVzIGEgcmVsYXRpb24gYmV0d2VlbiBPUDEgYW5kIE9QMi4KQEAgLTExMjQsNyArMTEzNyw4 IEBAIGd0X29wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKQogfQogCiByZWxhdGlv bl9raW5kCi1vcGVyYXRvcl9ndDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMp IGNvbnN0CitvcGVyYXRvcl9ndDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMs IGNvbnN0IGlyYW5nZSAmLAorCQkJICAgICAgIGNvbnN0IGlyYW5nZSAmKSBjb25zdAogewogICBy ZXR1cm4gZ3Rfb3AxX29wMl9yZWxhdGlvbiAobGhzKTsKIH0KQEAgLTEyMTgsNyArMTIzMiw4IEBA IHB1YmxpYzoKIAkJCSAgY29uc3QgaXJhbmdlICZsaHMsCiAJCQkgIGNvbnN0IGlyYW5nZSAmb3Ax LAogCQkJICByZWxhdGlvbl90cmlvID0gVFJJT19WQVJZSU5HKSBjb25zdDsKLSAgdmlydHVhbCBy ZWxhdGlvbl9raW5kIG9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKSBjb25zdDsK KyAgdmlydHVhbCByZWxhdGlvbl9raW5kIG9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAm bGhzLCBjb25zdCBpcmFuZ2UgJiwKKwkJCQkJICBjb25zdCBpcmFuZ2UgJikgY29uc3Q7CiB9IG9w X2dlOwogCiAvLyBDaGVjayBpZiB0aGUgTEhTIHJhbmdlIGluZGljYXRlcyBhIHJlbGF0aW9uIGJl dHdlZW4gT1AxIGFuZCBPUDIuCkBAIC0xMjQwLDcgKzEyNTUsOCBAQCBnZV9vcDFfb3AyX3JlbGF0 aW9uIChjb25zdCBpcmFuZ2UgJmxocykKIH0KIAogcmVsYXRpb25fa2luZAotb3BlcmF0b3JfZ2U6 Om9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzKSBjb25zdAorb3BlcmF0b3JfZ2U6 Om9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzLCBjb25zdCBpcmFuZ2UgJiwKKwkJ CSAgICAgICBjb25zdCBpcmFuZ2UgJikgY29uc3QKIHsKICAgcmV0dXJuIGdlX29wMV9vcDJfcmVs YXRpb24gKGxocyk7CiB9CkBAIC00ODQ1LDE0ICs0ODYxLDIxIEBAIHJhbmdlX29wX2hhbmRsZXI6 Omxoc19vcDJfcmVsYXRpb24gKGNvbnN0IHZyYW5nZSAmbGhzLAogfQogCiByZWxhdGlvbl9raW5k Ci1yYW5nZV9vcF9oYW5kbGVyOjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCB2cmFuZ2UgJmxocykg Y29uc3QKK3JhbmdlX29wX2hhbmRsZXI6Om9wMV9vcDJfcmVsYXRpb24gKGNvbnN0IHZyYW5nZSAm bGhzLCBjb25zdCB2cmFuZ2UgJm9wMSwKKwkJCQkgICAgY29uc3QgdnJhbmdlICZvcDIpIGNvbnN0 CiB7CiAgIGdjY19jaGVja2luZ19hc3NlcnQgKG1fdmFsaWQpOwogICBpZiAobV9pbnQpCi0gICAg cmV0dXJuIG1faW50LT5vcDFfb3AyX3JlbGF0aW9uIChhc19hIDxpcmFuZ2U+IChsaHMpKTsKKyAg ICByZXR1cm4gbV9pbnQtPm9wMV9vcDJfcmVsYXRpb24gKGFzX2EgPGlyYW5nZT4gKGxocyksCisJ CQkJICAgIGFzX2EgPGlyYW5nZT4gKG9wMSksCisJCQkJICAgIGFzX2EgPGlyYW5nZT4gKG9wMikp OwogICBpZiAoaXNfYSA8aXJhbmdlPiAobGhzKSkKLSAgICByZXR1cm4gbV9mbG9hdC0+b3AxX29w Ml9yZWxhdGlvbiAoYXNfYSA8aXJhbmdlPiAobGhzKSk7Ci0gIHJldHVybiBtX2Zsb2F0LT5vcDFf b3AyX3JlbGF0aW9uIChhc19hIDxmcmFuZ2U+IChsaHMpKTsKKyAgICByZXR1cm4gbV9mbG9hdC0+ b3AxX29wMl9yZWxhdGlvbiAoYXNfYSA8aXJhbmdlPiAobGhzKSwKKwkJCQkgICAgICBhc19hIDxm cmFuZ2U+IChvcDEpLAorCQkJCSAgICAgIGFzX2EgPGZyYW5nZT4gKG9wMikpOworICByZXR1cm4g bV9mbG9hdC0+b3AxX29wMl9yZWxhdGlvbiAoYXNfYSA8ZnJhbmdlPiAobGhzKSwKKwkJCQkgICAg YXNfYSA8ZnJhbmdlPiAob3AxKSwKKwkJCQkgICAgYXNfYSA8ZnJhbmdlPiAob3AyKSk7CiB9CiAK IC8vIENhc3QgdGhlIHJhbmdlIGluIFIgdG8gVFlQRS4KZGlmZiAtLWdpdCBhL2djYy9yYW5nZS1v cC5oIGIvZ2NjL3JhbmdlLW9wLmgKaW5kZXggMDNlZjZiOTg1NDIuLjMxMDMwMmI0ZWM5IDEwMDY0 NAotLS0gYS9nY2MvcmFuZ2Utb3AuaAorKysgYi9nY2MvcmFuZ2Utb3AuaApAQCAtODksNyArODks OSBAQCBwdWJsaWM6CiAJCQkJCSAgY29uc3QgaXJhbmdlICZvcDEsCiAJCQkJCSAgY29uc3QgaXJh bmdlICZvcDIsCiAJCQkJCSAgcmVsYXRpb25fa2luZCA9IFZSRUxfVkFSWUlORykgY29uc3Q7Ci0g IHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxo cykgY29uc3Q7CisgIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25z dCBpcmFuZ2UgJmxocywKKwkJCQkJICBjb25zdCBpcmFuZ2UgJm9wMSwKKwkJCQkJICBjb25zdCBp cmFuZ2UgJm9wMikgY29uc3Q7CiBwcm90ZWN0ZWQ6CiAgIC8vIFBlcmZvcm0gYW4gaW50ZWdyYWwg b3BlcmF0aW9uIGJldHdlZW4gMiBzdWItcmFuZ2VzIGFuZCByZXR1cm4gaXQuCiAgIHZpcnR1YWwg dm9pZCB3aV9mb2xkIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKQEAgLTE3OCw4ICsxODAsMTIgQEAg cHVibGljOgogCQkJCQkgIGNvbnN0IGZyYW5nZSAmb3AxLAogCQkJCQkgIGNvbnN0IGZyYW5nZSAm b3AyLAogCQkJCQkgIHJlbGF0aW9uX2tpbmQgPSBWUkVMX1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0 dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMpIGNv bnN0OwotICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgZnJh bmdlICZsaHMpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlv biAoY29uc3QgaXJhbmdlICZsaHMsCisJCQkJCSAgY29uc3QgZnJhbmdlICZvcDEsCisJCQkJCSAg Y29uc3QgZnJhbmdlICZvcDIpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29w Ml9yZWxhdGlvbiAoY29uc3QgZnJhbmdlICZsaHMsCisJCQkJCSAgY29uc3QgZnJhbmdlICZvcDEs CisJCQkJCSAgY29uc3QgZnJhbmdlICZvcDIpIGNvbnN0OwogfTsKIAogY2xhc3MgcmFuZ2Vfb3Bf aGFuZGxlcgpAQCAtMjA5LDcgKzIxNSw4IEBAIHB1YmxpYzoKIAkJCQkgIGNvbnN0IHZyYW5nZSAm b3AxLAogCQkJCSAgY29uc3QgdnJhbmdlICZvcDIsCiAJCQkJICByZWxhdGlvbl9raW5kID0gVlJF TF9WQVJZSU5HKSBjb25zdDsKLSAgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25z dCB2cmFuZ2UgJmxocykgY29uc3Q7CisgIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAo Y29uc3QgdnJhbmdlICZsaHMsIGNvbnN0IHZyYW5nZSAmb3AxLAorCQkJCSAgY29uc3QgdnJhbmdl ICZvcDIpIGNvbnN0OwogcHJvdGVjdGVkOgogICB2b2lkIHNldF9vcF9oYW5kbGVyIChlbnVtIHRy ZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpOwogICBib29sIG1fdmFsaWQ7Cg== --------------4I6nkCkuCFwDFlW0kHm0he0j--