Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pB5dU-0005gr-EF for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Dec 2022 03:00:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pB5dR-0001ex-Pb for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Dec 2022 03:00:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pB5dR-0001dV-CQ for pgsql-hackers@lists.postgresql.org; Fri, 30 Dec 2022 03:00:41 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pB5dP-0001Mv-4j for pgsql-hackers@postgresql.org; Fri, 30 Dec 2022 03:00:40 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 82so13492218pgc.0 for ; Thu, 29 Dec 2022 19:00:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=OoiGiEea441/y8H5jcJRM9HjM4lUEr2/2MOhYG4rQUY=; b=JJF9trOY9Ka9rDH0YTlCadWvTtSc010ebPqX/klLHbFOlCO1H52YU4uADuKgs2Lo7A FHTrNum89wIoQGAkwovh+WcLJlrIAvkKX3kwJ2BrgwPiPa5CaWaieDgZsweh1Bd2ihFJ 9zOoy1DOKOui2ca+LXuVk8MduA91Qj/USft0ME8UKuTNV47hpwjk8OCKI7FBLtSQcBb/ H7N+R/zDVgww4CKMp53SSy+u6Rvhk1Fc+Qp8P2O1q48S+20CipugipI2kBlXcHOOoWSD 9UDJkc8ne2FhCW0ZJocyWP8x4+iODt0FFvm0pCuizLjoZMTPt3IJRvIlf9mwRjrtl41n GKTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OoiGiEea441/y8H5jcJRM9HjM4lUEr2/2MOhYG4rQUY=; b=1ft3zx+3xQkFoyiRcaEULZOBq56BsjzZPp8LoO5FM40/1coR3ThdLtHLVvV55lU90B mJQIrmjpVmC1Hga9ZfrAcckWV4XjBPTBgZ86eX4c30RrO5HcUM/KFabeqX/UTC4kNhHs W4STRmL7CCt+TrGqaNlw4JPu+ytSJM7p4+tTuYA65Nn8TsDpbU7hmu+HMTY3bCv2hDtX 9IiQuE64sE5YaWyoqgmIWbteAFZ8KpyNYASbRboSYeLANSDWvVGbqllZmxKQsXBfjs/T 0ypsyiPMZoxWc+wXeHJvQgmwGU/n9VxFqOSbui47EC+NbYAXi5AxIN1+Y+ptacBH1gRa +fLg== X-Gm-Message-State: AFqh2kr8Zvb3yv4gkvS245Vy9jndpEeWCC1Xq4KE7zzhtMXjnf1dFpNA NvifYDAfCgBuyE0K3/FaC76KYISn3C+sAZjrO6u4sERMUOQ= X-Google-Smtp-Source: AMrXdXvM5DhW22VASyFDR0qHwaXfxUZmaL54iw+pRn18aXXCsZiHkP+mXBYNcRjfU3FZK/qDtxJXmMXYgmdSMNW8iSU= X-Received: by 2002:a05:6a00:708:b0:577:5c3:5de5 with SMTP id 8-20020a056a00070800b0057705c35de5mr1759535pfl.4.1672369236445; Thu, 29 Dec 2022 19:00:36 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Richard Guo Date: Fri, 30 Dec 2022 11:00:25 +0800 Message-ID: Subject: Re: Check lateral references within PHVs for memoize cache keys To: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000045dc2905f102ce43" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000045dc2905f102ce43 Content-Type: multipart/alternative; boundary="00000000000045dc2505f102ce41" --00000000000045dc2505f102ce41 Content-Type: text/plain; charset="UTF-8" On Fri, Dec 9, 2022 at 5:16 PM Richard Guo wrote: > Actually we do have checked PHVs for lateral references, earlier in > create_lateral_join_info. But that time we only marked lateral_relids > and direct_lateral_relids, without remembering the lateral expressions. > So I'm wondering whether we can fix that by fetching Vars (or PHVs) of > lateral references within PlaceHolderVars and remembering them in the > baserel's lateral_vars. > > Attach a draft patch to show my thoughts. > Update the patch to fix test failures. Thanks Richard --00000000000045dc2505f102ce41 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Fri, Dec 9, 2022 at 5:16 PM Richard Gu= o <guofenglinux@gmail.com&= gt; wrote:
Actually we do have checked PHVs for lateral references, earlier i= n
create_lateral_join_info.=C2=A0 But that time we only marked lateral_r= elids
and direct_lateral_relids, without remembering the lateral express= ions.
So I'm wondering whether we can fix that by fetching Vars (or = PHVs) of
lateral references within PlaceHolderVars and remembering them = in the
baserel's lateral_vars.

Attach a draft patch to show m= y thoughts.
=C2=A0
Update the patch to fix= test failures.

Thanks
Richard
--00000000000045dc2505f102ce41-- --00000000000045dc2905f102ce43 Content-Type: application/octet-stream; name="v2-0001-Check-lateral-refs-within-PHVs-for-memoize-cache-.patch" Content-Disposition: attachment; filename="v2-0001-Check-lateral-refs-within-PHVs-for-memoize-cache-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lc9xfu5d0 RnJvbSA0MjllNzVmMWViYzVhODhmODFjOGMzNzAyYjQzNDMyZWM0NDg5YzI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAzMCBEZWMgMjAyMiAxMDozNTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjJd IENoZWNrIGxhdGVyYWwgcmVmcyB3aXRoaW4gUEhWcyBmb3IgbWVtb2l6ZSBjYWNoZSBrZXlzCgot LS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDEyICsr Ky0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgICAgfCA1MSAr KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lbW9pemUub3V0 ICAgICAgICAgfCAzMSArKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5z cWwgICAgICAgICAgICAgIHwgMTEgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9l eHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQv cG9zdGdyZXNfZmR3Lm91dAppbmRleCAxYTJjMmE2NjVjLi4xNDVhZTM3YjFjIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTM2NTAsMTUg KzM2NTAsMTkgQEAgT1JERVIgQlkgcmVmXzAuIkMgMSI7CiAgICAgICAgICAtPiAgSW5kZXggU2Nh biB1c2luZyB0MV9wa2V5IG9uICJTIDEiLiJUIDEiIHJlZl8wCiAgICAgICAgICAgICAgICBPdXRw dXQ6IHJlZl8wLiJDIDEiLCByZWZfMC5jMiwgcmVmXzAuYzMsIHJlZl8wLmM0LCByZWZfMC5jNSwg cmVmXzAuYzYsIHJlZl8wLmM3LCByZWZfMC5jOAogICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHJlZl8wLiJDIDEiIDwgMTApCi0gICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5m dDEgcmVmXzEKLSAgICAgICAgICAgICAgIE91dHB1dDogcmVmXzEuYzMsIHJlZl8wLmMyCi0gICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzMgRlJPTSAiUyAxIi4iVCAxIiBXSEVSRSAo KGMzID0gJzAwMDAxJykpCisgICAgICAgICAtPiAgTWVtb2l6ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiByZWZfMS5jMywgKHJlZl8wLmMyKQorICAgICAgICAgICAgICAgQ2FjaGUgS2V5OiByZWZf MC5jMgorICAgICAgICAgICAgICAgQ2FjaGUgTW9kZTogYmluYXJ5CisgICAgICAgICAgICAgICAt PiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEgcmVmXzEKKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogcmVmXzEuYzMsIHJlZl8wLmMyCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUg U1FMOiBTRUxFQ1QgYzMgRlJPTSAiUyAxIi4iVCAxIiBXSEVSRSAoKGMzID0gJzAwMDAxJykpCiAg ICAtPiAgTWF0ZXJpYWxpemUKICAgICAgICAgIE91dHB1dDogcmVmXzMuYzMKICAgICAgICAgIC0+ ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZ0MiByZWZfMwogICAgICAgICAgICAgICAgT3V0cHV0 OiByZWZfMy5jMwogICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGMzIEZST00gIlMg MSIuIlQgMSIgV0hFUkUgKChjMyA9ICcwMDAwMScpKQotKDE1IHJvd3MpCisoMTkgcm93cykKIAog U0VMRUNUIHJlZl8wLmMyLCBzdWJxXzEuKgogRlJPTQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9p bml0c3BsYW4uYwppbmRleCBmZDhjYmIxZGM3Li42OGZmMDk3NWQxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtNTIzLDEyICs1MjMsNDkgQEAgY3JlYXRlX2xhdGVy YWxfam9pbl9pbmZvKFBsYW5uZXJJbmZvICpyb290KQogCQlQbGFjZUhvbGRlckluZm8gKnBoaW5m byA9IChQbGFjZUhvbGRlckluZm8gKikgbGZpcnN0KGxjKTsKIAkJUmVsaWRzCQlldmFsX2F0ID0g cGhpbmZvLT5waF9ldmFsX2F0OwogCQlpbnQJCQl2YXJubzsKKwkJTGlzdAkgICAqdmFyczsKKwkJ TGlzdAkgICAqcGhfbGF0ZXJhbF92YXJzOworCQlMaXN0Q2VsbCAgICpjZWxsOwogCiAJCWlmIChw aGluZm8tPnBoX2xhdGVyYWwgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwkJCS8qIFBIViBpcyB1bmlu dGVyZXN0aW5nIGlmIG5vIGxhdGVyYWwgcmVmcyAqLwogCiAJCWZvdW5kX2xhdGVyYWxzID0gdHJ1 ZTsKIAorCQkvKiBGZXRjaCBWYXJzIGFuZCBQSFZzIG9mIGxhdGVyYWwgcmVmZXJlbmNlcyB3aXRo aW4gUGxhY2VIb2xkZXJWYXJzICovCisJCXZhcnMgPSBwdWxsX3ZhcnNfb2ZfbGV2ZWwoKE5vZGUg KikgcGhpbmZvLT5waF92YXItPnBoZXhwciwgMCk7CisKKwkJcGhfbGF0ZXJhbF92YXJzID0gTklM OworCQlmb3JlYWNoKGNlbGwsIHZhcnMpCisJCXsKKwkJCU5vZGUJICAgKm5vZGUgPSAoTm9kZSAq KSBsZmlyc3QoY2VsbCk7CisKKwkJCW5vZGUgPSBjb3B5T2JqZWN0KG5vZGUpOworCQkJaWYgKElz QShub2RlLCBWYXIpKQorCQkJeworCQkJCVZhcgkJICAgKnZhciA9IChWYXIgKikgbm9kZTsKKwor CQkJCUFzc2VydCh2YXItPnZhcmxldmVsc3VwID09IDApOworCisJCQkJaWYgKGJtc19pc19tZW1i ZXIodmFyLT52YXJubywgcGhpbmZvLT5waF9sYXRlcmFsKSkKKwkJCQkJcGhfbGF0ZXJhbF92YXJz ID0gbGFwcGVuZChwaF9sYXRlcmFsX3ZhcnMsIG5vZGUpOworCQkJfQorCQkJZWxzZSBpZiAoSXNB KG5vZGUsIFBsYWNlSG9sZGVyVmFyKSkKKwkJCXsKKwkJCQlQbGFjZUhvbGRlclZhciAqcGh2ID0g KFBsYWNlSG9sZGVyVmFyICopIG5vZGU7CisKKwkJCQlBc3NlcnQocGh2LT5waGxldmVsc3VwID09 IDApOworCisJCQkJaWYgKGJtc19pc19zdWJzZXQoZmluZF9wbGFjZWhvbGRlcl9pbmZvKHJvb3Qs IHBodiktPnBoX2V2YWxfYXQsCisJCQkJCQkJCSAgcGhpbmZvLT5waF9sYXRlcmFsKSkKKwkJCQkJ cGhfbGF0ZXJhbF92YXJzID0gbGFwcGVuZChwaF9sYXRlcmFsX3ZhcnMsIG5vZGUpOworCQkJfQor CQkJZWxzZQorCQkJCUFzc2VydChmYWxzZSk7CisJCX0KKworCQlsaXN0X2ZyZWUodmFycyk7CisK IAkJaWYgKGJtc19nZXRfc2luZ2xldG9uX21lbWJlcihldmFsX2F0LCAmdmFybm8pKQogCQl7CiAJ CQkvKiBFdmFsdWF0aW9uIHNpdGUgaXMgYSBiYXNlcmVsICovCkBAIC01NDAsNiArNTc3LDEzIEBA IGNyZWF0ZV9sYXRlcmFsX2pvaW5faW5mbyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCWJyZWwtPmxh dGVyYWxfcmVsaWRzID0KIAkJCQlibXNfYWRkX21lbWJlcnMoYnJlbC0+bGF0ZXJhbF9yZWxpZHMs CiAJCQkJCQkJCXBoaW5mby0+cGhfbGF0ZXJhbCk7CisKKwkJCS8qCisJCQkgKiBSZW1lbWJlciB0 aGUgbGF0ZXJhbCByZWZlcmVuY2VzLiBXZSBuZWVkIHRoaXMgaW5mbyBmb3Igc2VhcmNoaW5nCisJ CQkgKiBtZW1vaXplIGNhY2hlIGtleXMuCisJCQkgKi8KKwkJCWJyZWwtPmxhdGVyYWxfdmFycyA9 CisJCQkJbGlzdF9jb25jYXQoYnJlbC0+bGF0ZXJhbF92YXJzLCBwaF9sYXRlcmFsX3ZhcnMpOwog CQl9CiAJCWVsc2UKIAkJewpAQCAtNTUxLDYgKzU5NSwxMyBAQCBjcmVhdGVfbGF0ZXJhbF9qb2lu X2luZm8oUGxhbm5lckluZm8gKnJvb3QpCiAKIAkJCQlicmVsLT5sYXRlcmFsX3JlbGlkcyA9IGJt c19hZGRfbWVtYmVycyhicmVsLT5sYXRlcmFsX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkgICBwaGlu Zm8tPnBoX2xhdGVyYWwpOworCisJCQkJLyoKKwkJCQkgKiBSZW1lbWJlciB0aGUgbGF0ZXJhbCBy ZWZlcmVuY2VzLiBXZSBuZWVkIHRoaXMgaW5mbyBmb3IKKwkJCQkgKiBzZWFyY2hpbmcgbWVtb2l6 ZSBjYWNoZSBrZXlzLgorCQkJCSAqLworCQkJCWJyZWwtPmxhdGVyYWxfdmFycyA9IGxpc3RfY29u Y2F0KGJyZWwtPmxhdGVyYWxfdmFycywKKwkJCQkJCQkJCQkJCSBwaF9sYXRlcmFsX3ZhcnMpOwog CQkJfQogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZW1v aXplLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWVtb2l6ZS5vdXQKaW5kZXggZGU0 M2FmYTc2ZS4uY2YyMzg2NjFkMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9tZW1vaXplLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lbW9pemUub3V0 CkBAIC05MCw2ICs5MCwzNyBAQCBXSEVSRSB0MS51bmlxdWUxIDwgMTAwMDsKICAgMTAwMCB8IDku NTAwMDAwMDAwMDAwMDAwMAogKDEgcm93KQogCistLSBUcnkgd2l0aCBMQVRFUkFMIHJlZmVyZW5j ZXMgd2l0aGluIFBsYWNlSG9sZGVyVmFycworU0VMRUNUIGV4cGxhaW5fbWVtb2l6ZSgnCitTRUxF Q1QgQ09VTlQoKiksQVZHKHQxLnR3ZW50eSkgRlJPTSB0ZW5rMSB0MSBMRUZUIEpPSU4KK0xBVEVS QUwgKFNFTEVDVCB0MS50d2VudHkgYXMgYzEsIHQyLnVuaXF1ZTEgYXMgYzIgRlJPTSB0ZW5rMSB0 MikgcyBvbiB0cnVlCitXSEVSRSBzLmMxID0gcy5jMiBhbmQgdDEudW5pcXVlMSA8IDEwMDA7Jywg ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX21l bW9pemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZSAoYWN0dWFsIHJvd3M9MSBsb29wcz1O KQorICAgLT4gIE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0xMDAwIGxvb3BzPU4pCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gdGVuazEgdDEgKGFjdHVhbCByb3dzPTEwMDAgbG9vcHM9TikKKyAg ICAgICAgICAgICAgIEZpbHRlcjogKHVuaXF1ZTEgPCAxMDAwKQorICAgICAgICAgICAgICAgUm93 cyBSZW1vdmVkIGJ5IEZpbHRlcjogOTAwMAorICAgICAgICAgLT4gIE1lbW9pemUgKGFjdHVhbCBy b3dzPTEgbG9vcHM9TikKKyAgICAgICAgICAgICAgIENhY2hlIEtleTogdDEudHdlbnR5CisgICAg ICAgICAgICAgICBDYWNoZSBNb2RlOiBiaW5hcnkKKyAgICAgICAgICAgICAgIEhpdHM6IDk4MCAg TWlzc2VzOiAyMCAgRXZpY3Rpb25zOiBaZXJvICBPdmVyZmxvd3M6IDAgIE1lbW9yeSBVc2FnZTog TmtCCisgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1 ZTEgb24gdGVuazEgdDIgKGFjdHVhbCByb3dzPTEgbG9vcHM9TikKKyAgICAgICAgICAgICAgICAg ICAgIEZpbHRlcjogKHQxLnR3ZW50eSA9IHVuaXF1ZTEpCisgICAgICAgICAgICAgICAgICAgICBS b3dzIFJlbW92ZWQgYnkgRmlsdGVyOiA5OTk5CisgICAgICAgICAgICAgICAgICAgICBIZWFwIEZl dGNoZXM6IE4KKygxMyByb3dzKQorCistLSBBbmQgY2hlY2sgd2UgZ2V0IHRoZSBleHBlY3RlZCBy ZXN1bHRzLgorU0VMRUNUIENPVU5UKCopLEFWRyh0MS50d2VudHkpIEZST00gdGVuazEgdDEgTEVG VCBKT0lOCitMQVRFUkFMIChTRUxFQ1QgdDEudHdlbnR5IGFzIGMxLCB0Mi51bmlxdWUxIGFzIGMy IEZST00gdGVuazEgdDIpIHMgb24gdHJ1ZQorV0hFUkUgcy5jMSA9IHMuYzIgYW5kIHQxLnVuaXF1 ZTEgPCAxMDAwOworIGNvdW50IHwgICAgICAgIGF2ZyAgICAgICAgIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLQorICAxMDAwIHwgOS41MDAwMDAwMDAwMDAwMDAwCisoMSByb3cpCisKIC0t IFJlZHVjZSB3b3JrX21lbSBhbmQgaGFzaF9tZW1fbXVsdGlwbGllciBzbyB0aGF0IHdlIHNlZSBz b21lIGNhY2hlIGV2aWN0aW9ucwogU0VUIHdvcmtfbWVtIFRPICc2NGtCJzsKIFNFVCBoYXNoX21l bV9tdWx0aXBsaWVyIFRPIDEuMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21l bW9pemUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5zcWwKaW5kZXggMTdjNWI0 YmZhYi4uNTEyYzZkZmViYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6 ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5zcWwKQEAgLTU1LDYgKzU1 LDE3IEBAIFNFTEVDVCBDT1VOVCgqKSxBVkcodDIudW5pcXVlMSkgRlJPTSB0ZW5rMSB0MSwKIExB VEVSQUwgKFNFTEVDVCB0Mi51bmlxdWUxIEZST00gdGVuazEgdDIgV0hFUkUgdDEudHdlbnR5ID0g dDIudW5pcXVlMSkgdDIKIFdIRVJFIHQxLnVuaXF1ZTEgPCAxMDAwOwogCistLSBUcnkgd2l0aCBM QVRFUkFMIHJlZmVyZW5jZXMgd2l0aGluIFBsYWNlSG9sZGVyVmFycworU0VMRUNUIGV4cGxhaW5f bWVtb2l6ZSgnCitTRUxFQ1QgQ09VTlQoKiksQVZHKHQxLnR3ZW50eSkgRlJPTSB0ZW5rMSB0MSBM RUZUIEpPSU4KK0xBVEVSQUwgKFNFTEVDVCB0MS50d2VudHkgYXMgYzEsIHQyLnVuaXF1ZTEgYXMg YzIgRlJPTSB0ZW5rMSB0MikgcyBvbiB0cnVlCitXSEVSRSBzLmMxID0gcy5jMiBhbmQgdDEudW5p cXVlMSA8IDEwMDA7JywgZmFsc2UpOworCistLSBBbmQgY2hlY2sgd2UgZ2V0IHRoZSBleHBlY3Rl ZCByZXN1bHRzLgorU0VMRUNUIENPVU5UKCopLEFWRyh0MS50d2VudHkpIEZST00gdGVuazEgdDEg TEVGVCBKT0lOCitMQVRFUkFMIChTRUxFQ1QgdDEudHdlbnR5IGFzIGMxLCB0Mi51bmlxdWUxIGFz IGMyIEZST00gdGVuazEgdDIpIHMgb24gdHJ1ZQorV0hFUkUgcy5jMSA9IHMuYzIgYW5kIHQxLnVu aXF1ZTEgPCAxMDAwOworCiAtLSBSZWR1Y2Ugd29ya19tZW0gYW5kIGhhc2hfbWVtX211bHRpcGxp ZXIgc28gdGhhdCB3ZSBzZWUgc29tZSBjYWNoZSBldmljdGlvbnMKIFNFVCB3b3JrX21lbSBUTyAn NjRrQic7CiBTRVQgaGFzaF9tZW1fbXVsdGlwbGllciBUTyAxLjA7Ci0tIAoyLjMxLjAKCg== --00000000000045dc2905f102ce43--