Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPUMH-000lU5-1t for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 00:00:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPUMD-005PQE-37 for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 00:00:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPUMD-005PQ6-27 for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 00:00:18 +0000 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPUMB-00000000SNl-3z28 for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 00:00:18 +0000 Received: by mail-qt1-x834.google.com with SMTP id d75a77b69052e-516389a9b70so47546251cf.3 for ; Tue, 19 May 2026 17:00:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779235214; cv=none; d=google.com; s=arc-20240605; b=ig9Sn0ZkSdvlCHUjHMsdTe8Yzz8zGypVcOiTuvMuyRYRlpc8cZz/zS2RwH4wbmjNOO 02CvKdWVXIXbyG4z271qQ+0u9Js3QB2JdBYLTQ+udhEaZzPfl3CaoYQgp8X1auFjLqwe Uip5cYk3EIyBSw0Pu+xONAr/sKBKQ0Ma0HEEkq4XjLo1n907g8F0z7Ufd0FMOSQYLsYQ kR+BerlFWhbaiVJJrUzHpYRlDavL628dMYm5SQkrDcmfY0V38PtmZwiWToxKVzi8+eUO VJtOp5kFwrh/yg39NSpsCsPn/jRkcmaugRcUYJkfQCVh2xmxdGmwrfye+8kFnEHHo0OK bmyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=+AR+t7OW+MyZmI3QEkJiKuRaFrpgoihwP/Aark3KgTc=; fh=eGhD8NE58EmIgD6b+gPO+CvU80MO/Q+yy1QKus3+4M4=; b=l2K5PkJa+RjXhd2271NPo4L8osxOE/V7Iq8ZIpp9tdku34FkMmpfQ+Np9iW/0hK9bN fl3onlICoGFiAUxNUCcuTUiIQupL4ptUN6t316rAyPi3YQaJ1mUetXsbSfHpYziY4TFK J4q2TfjmzC+J3MIAliXmnv5pykrnOT0Ai6qPLh0hBL8AWKnZUT5E2GaQtnzecF5y7rUS 3rJ4bOZY4KknxJrWelBKKDsUyn13ssPr4VKI4WHUQPsrZBNo4to4cybDQqEiZL8Wxx7a DdznjI8wojskwA23cgCiarOWL3Xey8g+LCSX+SmmWmH80MCwHBfN+8aQJD6/N7vBsLlZ CV8g==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779235214; x=1779840014; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+AR+t7OW+MyZmI3QEkJiKuRaFrpgoihwP/Aark3KgTc=; b=H3Y+kvOLFpUwp1hNK8Nre2573ks61uVTto0LCNmUORE+ll5sgMQ+OiIFNRwv8Z/b+X GOs6J2UPaeKbjRCoP/ohOP85f1rZ0Hzqmrh5P4leBh4XlWxqvPOi95n+v3wcvmakfwjp YM0OAwIhsN/hBwoMHuXM4HY+7tq2WhLaJtBxi4DCRFY8udiwam9pID2kgYFkFFnIJT/i lPsd43DJjk2FZ1F8b3ty2zGjT6tE0L9xPQi/GDNy+UTwHX19zTnjwBwp3CdIL+zvDoZ9 ++h6OO8LXiqd3BRH3MZrfoL+D43CDEH5maUKn/NBau5jVeEaYLip/yFmlAkQxdxeUWoz QRbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779235214; x=1779840014; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+AR+t7OW+MyZmI3QEkJiKuRaFrpgoihwP/Aark3KgTc=; b=sW7dXYutcF/F4Zx3YEjX0tnSEsbxvlaFVoah/jxpmr3kM8IKoVxoFcnp/9htIYL7+J QHQNm2edzU+5i789w1eWU2PEB8oWMo1b01b7ALpXI+A7KgXK3xcSaBISwIgcZb5vldfJ oKQ637LVSHhXn+p4KGG0sVuFJLNfr3REZgFrKFtZ8ygFCR6UmSlKOySUKlb7Zc47BRjX FnkK6Is9LVLMAqfT1AmG/0yd1xQ+xZwvYKwyJlKrvZUc++km8XDOHSVI/avMXh3Hr9Dd 4hIFB04gzZnObzOqugVLTTVbVWrZnTiIlaT9jhJfj8ztDYbCkZv9a/eZww5mjqxe7nhB 8UGA== X-Gm-Message-State: AOJu0Yxp74K6llGaD1mXVuYa4CtsMJC6dqeOb7bO/HrZaJ0xpAPop3zd h+LynbSg+VbMgC/5PAx3tWcg7j+q1a0c3mJwSWf6bBidGl12fjze6gmB/bLL4oVfY3twA2HF7wk /bKZEksHsLBk98eBYhFDpszX9IxVtseQ= X-Gm-Gg: Acq92OENiCi9L/0d9Gp7ton6/9W/MYZ6idia7xm7t0AYEnKFgcz/sVKe1MuqUzw63BJ wUrKBWhjdNp7D2dyrT6Se5n47QYyDzp150nv5eeokpxKUIVEW/vsyDNDE3lcsGUdmEMgMqgLVnl 1M7bCGUa2Zki3W5zQlL/POZXNg4PyVvgAtCCBnAcHH/mMLKkn/6VlOtZ1p2mHJ5wl9V4c/9lMPk MsA6sRjCZmCmgqSTIRzD8MeiMdsMC3ff/uD9eeqr8pp8OCuwHiYf9Eq+0Mseco4sZqJkSbJITv3 ++MCnbUNdKZqgaI7kw== X-Received: by 2002:a05:622a:1dcc:b0:50e:5b04:810b with SMTP id d75a77b69052e-5165a0a4091mr314400601cf.32.1779235213760; Tue, 19 May 2026 17:00:13 -0700 (PDT) MIME-Version: 1.0 References: <5420ddcb-7b55-4a73-b8c5-3602abfac78b@uni-muenster.de> <1b1c88ce-2c61-4faf-b647-496525fc177f@uni-muenster.de> In-Reply-To: <1b1c88ce-2c61-4faf-b647-496525fc177f@uni-muenster.de> From: Peter Smith Date: Wed, 20 May 2026 09:59:46 +1000 X-Gm-Features: AVHnY4L48wGFoAxTn7ZJxHZKA8vSxL9WpZGe1S07pZzTCmjGsq_qjAsYp4Iv7O0 Message-ID: Subject: Re: PSQL - prevent describe listing tables that are already in listed schemas To: Jim Jones Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e3e1d80652347aee" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e3e1d80652347aee Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, May 19, 2026 at 10:08=E2=80=AFPM Jim Jones wrote: > > On 19/05/2026 09:08, Peter Smith wrote: > > Thanks for reviewing and testing my patch. PSA v2 with that missing \n = restored. > > LGTM. > > In the same light, we might also want to take a look at \d+. Currently > it can display the publication twice: > > postgres=3D# \d+ s.t2 > Table "s.t2" > Column | Type | Collation | Nullable | Default | Storage | > Compression | Stats target | Description > --------+---------+-----------+----------+---------+---------+-----------= --+--------------+------------- > c | integer | | | | plain | > | | > Included in publications: > "pub1" WHERE (c > 42) > "pub1" > Access method: heap > > > Adding a similar logic to describeOneTableDetails might do the trick: > > " AND NOT EXISTS (\n" > " SELECT 1\n" > " FROM pg_catalog.pg_publication_namespace pn\n" > " WHERE pn.pnpubid =3D p.oid\n" > " AND pn.pnnspid =3D c.relnamespace)\n", > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > Example: > > postgres=3D# CREATE SCHEMA s; > CREATE TABLE public.t1(c int); > CREATE TABLE s.t2(c int); > CREATE TABLE s.t3(c int); > CREATE TABLE s.t4(c int); > CREATE PUBLICATION pub1 FOR > TABLES IN SCHEMA s, > TABLE s.t3, s.t4, > s.t2 WHERE (c > 42), > public.t1; > > postgres=3D# \d+ s.t2 > Table "s.t2" > Column | Type | Collation | Nullable | Default | Storage | > Compression | Stats target | Description > --------+---------+-----------+----------+---------+---------+-----------= --+--------------+------------- > c | integer | | | | plain | > | | > Included in publications: > "pub1" > Access method: heap > > postgres=3D# CREATE PUBLICATION pub2 FOR TABLE s.t2; > CREATE PUBLICATION > postgres=3D# \d+ s.t2 > Table "s.t2" > Column | Type | Collation | Nullable | Default | Storage | > Compression | Stats target | Description > --------+---------+-----------+----------+---------+---------+-----------= --+--------------+------------- > c | integer | | | | plain | > | | > Included in publications: > "pub1" > "pub2" > Access method: heap > > postgres=3D# \d+ s.t3 > Table "s.t3" > Column | Type | Collation | Nullable | Default | Storage | > Compression | Stats target | Description > --------+---------+-----------+----------+---------+---------+-----------= --+--------------+------------- > c | integer | | | | plain | > | | > Included in publications: > "pub1" > Access method: heap > > postgres=3D# \d public.t1 > Table "public.t1" > Column | Type | Collation | Nullable | Default > --------+---------+-----------+----------+--------- > c | integer | | | > Included in publications: > "pub1" > > > What do you think? > PSA a POC in v3-0002. > I agree we should address that \d+ quirk at the same time. Thanks for finding/fixing it in v3-0002. Your 0002 patch works for me, although I'm thinking those SQL fixes ought to be made more similar: 1. Both use "n.oid NOT IN (SELECT pn.pnnspid ..." 2. Or both use "AND NOT EXISTS (SELECT 1 FROM ... WHERE ...)" ~ PSA v4, where I have combined the patches, and chosen your SQL style for my previous \dRp+ fix. Apparently, there was no existing test case to demonstrate that \d+ case you found. Do we need to bother adding one? =3D=3D=3D=3D=3D=3D Kind Regards, Peter Smith. Fujitsu Australia --000000000000e3e1d80652347aee Content-Type: application/octet-stream; name="v4-0001-Fix-psql-duplicate-items-for-dRp-and-d.patch" Content-Disposition: attachment; filename="v4-0001-Fix-psql-duplicate-items-for-dRp-and-d.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpdan9lc0 RnJvbSA0ZTI5NWQ1MGUyNTBkNWU5NTVmOWQyZWJiZTI1OTM1ODU4YjgzYTI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBTbWl0aCA8cGV0ZXIuYi5zbWl0aEBmdWppdHN1LmNv bT4KRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwOToyNDo1NyArMTAwMApTdWJqZWN0OiBbUEFUQ0gg djRdIEZpeCBwc3FsIGR1cGxpY2F0ZSBpdGVtcyBmb3IgXGRScCsgYW5kIFxkKwoKV2hlbiBhIHB1 YmxpY2F0aW9uIHB1YjEgaXMgZGVmaW5lZCB1c2luZyBib3RoICJUQUJMRVMgSU4gU0NIRU1BIG15 c2NoZW1hIiwgYW5kCiJUQUJMRSBteXNjaGVtYS50MSIsIGl0IGNhdXNlZCBkdXBsaWNhdGVkIGl0 ZW1zIGluIHRoZSBwc3FsIGRlc2NyaWJlIG91dHB1dC4KClRoaXMgcGF0Y2ggc2ltcGxpZmllcyB0 aGUgb3V0cHV0IGFuZCBhbGlnbnMgYmV0dGVyIHdpdGggdGhlIGRvY3VtZW50YXRpb24uCgpOb3c6 CiJcZFJwKyBwdWIxIiAgc2hvd3Mgb25seSBTY2hlbWEgIm15c2NoZW1hIiwgbm90IGFsc28gVGFi bGUgIm15c2NoZW1hLnQxIgoiXGQrIHQxIiAgICAgIHNob3dzIFB1YmxpY2F0aW9uICJwdWIxIiBv bmx5IG9uY2UKCkF1dGhvcjogUGV0ZXIgU21pdGggPHNtaXRocGIyMjUwQGdtYWlsLmNvbT4KQ28t YXV0aG9yOiBKaW0gSm9uZXMgPGppbS5qb25lc0B1bmktbXVlbnN0ZXIuZGU+CkRpc2N1c3Npb246 IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUh1dCUyQlB2U09t UnJRWCUyQlZyRllIdEZpcFY5aE0lM0RwOTlGZU93WUN6a3VVMkJPYUx1N1ElNDBtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgIHwgMTUg KysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dCB8ICA2IC0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggZTE0NDk2NTRmOTYuLmUzMjZkYWY2MzJmIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpA QCAtMzE5OSw3ICszMTk5LDEyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBw XG4iCiAJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUg cHIucHJyZWxpZCA9ICclcydcbiIsCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMn XG4iCisJCQkJCQkJCSAgIiAgQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkgICIgICAgIFNF TEVDVCAxXG4iCisJCQkJCQkJCSAgIiAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X25hbWVzcGFjZSBwblxuIgorCQkJCQkJCQkgICIgICAgIFdIRVJFIHBuLnBucHViaWQgPSBwLm9p ZFxuIgorCQkJCQkJCQkgICIgICAgICAgQU5EIHBuLnBubnNwaWQgPSBjLnJlbG5hbWVzcGFjZSlc biIsCiAJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CiAKIAkJCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxOTAwMDApCkBAIC03MDE1LDcgKzcwMjAsMTMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fcmVsIHByXG4iCiAJCQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgog CQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHBy LnBycHViaWQgPSAnJXMnXG4iLCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9 ICclcydcbiIKKwkJCQkJCQkgICIgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkgICIgICAg IFNFTEVDVCAxXG4iCisJCQkJCQkJICAiICAgICBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fbmFtZXNwYWNlIHBuXG4iCisJCQkJCQkJICAiICAgICBXSEVSRSBwbi5wbnB1YmlkID0gcHIu cHJwdWJpZFxuIgorCQkJCQkJCSAgIiAgICAgICBBTkQgcG4ucG5uc3BpZCA9IGMucmVsbmFtZXNw YWNlKVxuIiwKKwkJCQkJCQkgIHB1YmlkKTsKIAogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkw MDAwKQogCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgIEFORCBOT1QgcHIucHJleGNl cHRcbiIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAy OWU1NGIyMTRhMC4uYjI5YjZiNTMxMTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CkBAIC0xNDYsOCArMTQ2LDYgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBj b2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAKLVRhYmxlczoKLSAgICAicHViX3Rlc3QudGVzdHB1Yl9u b3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2Nyw4ICsx NjUsNiBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9ub3BrOwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAotVGFibGVzOgotICAgICJw dWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dCIKIApAQCAtODMyLDggKzgyOCw2IEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8 IFZpYSByb290IHwgRGVzY3JpcHRpb24gCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCiAg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgCi1UYWJsZXM6Ci0gICAgInRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHVi X3JmX3RibDYiIFdIRVJFIChpIDwgOTkpCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJ0ZXN0 cHViX3JmX3NjaGVtYTIiCiAKLS0gCjIuNDcuMwoK --000000000000e3e1d80652347aee--