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 1wchOJ-003YSv-19 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 10:33:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wchOH-004v0m-34 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 10:33:01 +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 1wchOH-004v0b-1v for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 10:33:01 +0000 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wchOE-00000000BPr-3HCV for pgsql-hackers@postgresql.org; Thu, 25 Jun 2026 10:33:01 +0000 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-447e3abe5edso510001fac.0 for ; Thu, 25 Jun 2026 03:32:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782383575; cv=none; d=google.com; s=arc-20260327; b=CyDjIrInO5pSPT42ItG/fffsxc2M+bidC5GAe5xyt/2ADpRq9G274HEIpZQJ+d+5vX 8H02FWRKFLfsQZFYDu6xl8LVMsgk9KGCl3vY+Ykk0F+Y0qjN7tTIbH1Id3pHygIH2OfA Zdt7hvtRZScthCI5W2miUL8tW6U5dag935x/H15saMoe7FKpi0kpHQQ/F3nbwdvBU+vy ZU33vCSJ4Qn077btHXlWOGIf5J8EaIwk7ZeUiFocxAzotaeD03b1kx4QUZYfaQGS+TMg M5UiIBgKo42O3yYdh93dFtqxrEJEQMoF3avHHJzWaPcHZimzJWurQu2NXhBEg2IQgbWJ MjBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=uefF1Si6v22SKSzfOsCRdaETC++JnhHLx82vAnyvWe4=; fh=DeaPdnU4bHT1qQIZSByS26qaXvQXkELvZKhJvP99VSw=; b=UzNtCdhjeU9MYaWftMh0TiDhe0Egj0BoqHDd4mzDvd3Fp07/O+s9M8lzuja41i9mXs dExPA0wo5buSCLSWMw0dZfVn6PtmiE047cT6tFRc7yhf97PKGxlIBxQOVGcKqFv84GQY thoBMxDiZuGmKBaVD5UdXG7lzbg9nMKURk/7kEg1PW9PRqxzZ9hx/Nd+P6QuG9pB7rmx fXO9ZXBiYkVNWSszRj1yUoANofiPEKpnkzFi5cJUB7kqy7Eu/YUc2iucjzDziPpkOITl Nf1qJtiWnfJqfo+4VTM4dJtEPEsXSwzreEOl3hGdtFsx/2wYskrl4pH8M15y1oGhFvQr J8mQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1782383575; x=1782988375; darn=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=uefF1Si6v22SKSzfOsCRdaETC++JnhHLx82vAnyvWe4=; b=ImEqVAvBKT+JKK8SkSPJBJCP50tzt27t8BSyo3vUO7y6e+rq6upZCTvckcutPNvEVX o7kC8TjMk5JAuVWgHYdbuMwws7X3DQYDTCH91aMxmv0RICs5w5OCBVGLZ28tSXTiGitx n1fZqdOgpXoM2Ea9ukNUnlNWWPgVwN2SZP20faUzCwQQEp7nEi6F+OSB/++BbJ+Dq3e4 cpIvO3CUEz7FBuyx+5TFjsLGl/2bp/zao9tRKKK25TKUtqAAKWJTx2+SG/POQXfZ6QM6 zOQ1HOFx7lmTz6KhBxwMBma5V5IsvXcvg6e012r3h5Z55ovjT3J2QhfFWQPAYJOxsueF wx1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782383575; x=1782988375; 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=uefF1Si6v22SKSzfOsCRdaETC++JnhHLx82vAnyvWe4=; b=SB6Wg2O5Wiy5mwu8KnKqbT4hkIn/9gqIr7c2DpYFrGo0Qh2jCPfbYoX5wGq4d6g7bw VBE/tXiAWx8z9kZ6NgmVODsChHCP5xiwdV589CmMbt7VNajKcdvCoHZH0tgCPB8ALoUH Mfntbq5lrndfOmzzRiXEDN9RYhyfJFbAxgt4a+yfMAsbgo7iJSCH56+X3vflAQ0A4rLu GNrFYQrg7RPcvnIG7EcNM3a/1CJJhafuLKksUGM1w+EG7TTLS5oeLr1nkoVzex1203OS Ao/Ua2TsLFW9GMjKpip5FdmMxUohBC9ILb5Eo7cX4OuZmtqgo3qr/jvOrn94MI1vOrCy kwmQ== X-Gm-Message-State: AOJu0Yybq+G4sfQh04VYr0TuhQcexKvouaEP++Gptb7SG5qLtTSxZYrv gzfjgv8lFkYkbPpl/t3OyQW83+yil6Ju52TEdm7bfLeeoGUNFDmBZfw9jCYxNvP6y8pHprTBThZ waJBCXaJC+9/oMVwSIQ6uOHMy/yok1EMFUWyHO1sKpGrAwyedBORVLYWH5Q== X-Gm-Gg: AfdE7clTgDwBr5tZXHp6NNN0GTeOqELLdhlXgcHbjQ7YqgtRzrnKdgkpG0eFGjC5CNW vta1zhQ8egy5H01QLLbTzocx5zNRzS5j81QDnaGkU9WPElBgDJH72RZcMZBFRkA8g/vOEJ7fcez fmYDTS2rd96oWjIwMXgpPGlXhsdHuqvPvUgZ76dCoQCydfDXGxM0PlwNH2rDQFORhzKCwCTMjZI j7hSELvb6WBQqquHH98ZpLXKlArp0ctjqzwyjuZi0CBvXb0fH/j1hJn9awtmK5EbnOipBGwD+uF RUkMa9qtDokGOz3OhAJDDQBIrT1ATXFOuwRyqKN+ZXrThwwz1L4ALuDO X-Received: by 2002:a05:6870:8318:b0:43d:1c8a:5977 with SMTP id 586e51a60fabf-447aae2025emr7134122fac.24.1782383575566; Thu, 25 Jun 2026 03:32:55 -0700 (PDT) MIME-Version: 1.0 References: <626986.1776785090@sss.pgh.pa.us> <84f20d0d-3bc8-4843-bd7e-21bce20f8582@eisentraut.org> In-Reply-To: From: Aleksander Alekseev Date: Thu, 25 Jun 2026 13:32:43 +0300 X-Gm-Features: AVVi8Cf92Nl5rsZyxVIh0flwRFFoPX4W8q-3IGnasmPLjmtpUrOLDqIyRKcai5U Message-ID: Subject: Re: [PATCH] Fix null pointer dereference in PG19 To: PostgreSQL Development Cc: Paul A Jungwirth , Tom Lane , Peter Eisentraut , jian he Content-Type: multipart/mixed; boundary="000000000000e0354e06551183f7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e0354e06551183f7 Content-Type: text/plain; charset="UTF-8" Hi Paul, > > > I definitely don't like checking volatility at parse time, though. > > > > So.... the last comment from Tom was that he is not happy :) but I'm > > not sure about the actionable items. Tom, could you please elaborate a > > bit? > > Here is the thread for moving checks out of analysis: > https://www.postgresql.org/message-id/CA%2BrenyUte0_UJsJiDJQi82oaBsMJn%3Dcct0Wn%3DvOqXtuDn%3DYYJA%40mail.gmail.com Thanks for the clarification! So if my understanding is correct this is out of scope of the fix under question. > I don't think forbidding INSTEAD OF triggers with FOR PORTION OF is > the right solution. It seems too heavy-handed. But we *should* skip > trying to insert temporal leftovers. After all if you did something > *instead of* the update/delete, we can't know what the leftovers > should be. Or another way of putting it: the trigger function runs > instead of the original command, but inserting leftovers is part of > that original command. Skipping temporal leftovers is implemented in > my v5 patch on this thread from April 22: > https://www.postgresql.org/message-id/CA%2BrenyUoTRnn0o4Pnfy2AOdtqMH3%2Bn29_AfD4Aih3ifwMX9vyA%40mail.gmail.com This patch rotted and needed a rebase (attached as .txt). Also it's incorrect, it only masks the crash: ``` CREATE TABLE t (id int, valid_at daterange, val int); INSERT INTO t VALUES (1, '[2024-01-01,2025-01-01)', 100); CREATE VIEW v AS SELECT * FROM t; CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'UPDATE OLD: %, NEW: %', OLD, NEW; RETURN NEW; END; $$; CREATE TRIGGER trig INSTEAD OF UPDATE ON v FOR EACH ROW EXECUTE FUNCTION trig_fn(); UPDATE v FOR PORTION OF valid_at FROM '2024-04-01' TO '2024-08-01' SET val = 999 WHERE id = 1; server closed the connection unexpectedly ``` v1-0001 passes the tests successfully: ``` =# UPDATE v FOR PORTION OF valid_at FROM '2024-04-01' TO '2024-08-01' SET val = 999 WHERE id = 1; ERROR: views with INSTEAD OF triggers do not support FOR PORTION OF LINE 1: UPDATE v FOR PORTION OF valid_at FROM '2024-04-01' TO '2024-... ``` IMO it's a little bit late in the PG19 cycle for making this work. This is an implementation of a new feature which is not present at the moment which to my knowledge we don't do after the feature freeze. Our goal is to fix the crash and leave the rest for the PG20 cycle. Clearly the feature needs more discussion and thorough testing. -- Best regards, Aleksander Alekseev --000000000000e0354e06551183f7 Content-Type: text/plain; charset="US-ASCII"; name="rebased.txt" Content-Disposition: attachment; filename="rebased.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqtctghh0 RnJvbSBiZTUxNWQwOTFiNDkyM2MyOWNkODQ3N2MxYzdhNWViNzI3M2EyZjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTQgQXByIDIwMjYgMTI6MTA6MDkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 XSBTa2lwIEZPUiBQT1JUSU9OIE9GIGxlZnRvdmVycyBhZnRlciBJTlNURUFEIE9GIHRyaWdnZXIK CldlIHNob3VsZCBub3QgdHJ5IHRvIGluc2VydCB0ZW1wb3JhbCBsZWZ0b3ZlcnMgZm9sbG93aW5n IGFuIElOU1RFQUQgT0YgdHJpZ2dlci4KRm9yIG9uZSB0aGluZywgdGhlIHJlc3VsdFJlbCBpcyB0 aGUgdmlldywgbm90IHRoZSBiYXNlIHJlbGF0aW9uLCBzbyB3ZSBjYW4ndApsb29rIHVwIHRoZSBw cmUtdXBkYXRlL2RlbGV0ZSByb3cuIEJ1dCBhbHNvLCB0aGUgSU5TVEVBRCBPRiB0cmlnZ2VyIGlz CnJlc3BvbnNpYmxlIGZvciBkb2luZyB0aGUgd29yaywgYW5kIHdlIGRvbid0IGtub3cgd2hhdCBp dCByZWFsbHkgZGlkLiBJZiBpdAp3YW50cyBsZWZ0b3ZlcnMsIGl0IHNob3VsZCBpbnNlcnQgdGhl bSBvciB1c2UgRk9SIFBPUlRJT04gT0YgaXRzZWxmLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQUhnJTJCUURkNzRmbmQ0b2JDUk1xVlMwQVZXZiUzRGNTRkglM0RDdjd0clRKV2dt JTJCX2JoVEs2dyU0MG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FKN2M2VE1FJTJCaXg2VlJmLTJUUG5WVHNqOHFuX2h5NnNZQU9tTWhaRWl2d3N1MndTNmcl NDBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9kbWwuc2dtbCAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDcgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgICAgICAgfCAyMCArKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9w b3J0aW9uX29mLm91dCB8IDQxICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgICAgICB8IDMzICsrKysrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvZG1sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZG1sLnNnbWwKaW5kZXggNDI5 YWFlOWJkN2IuLjRiMjllNjc1ZjJlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZG1sLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2RtbC5zZ21sCkBAIC0zODksNiArMzg5LDEzIEBAIERFTEVURSBG Uk9NIHByb2R1Y3RzCiAgICBhcmUgbm90LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0 aGUgdXBkYXRlZCB0YWJsZSBoYXMgYW4gPGxpdGVyYWw+SU5TVEVBRCBPRjwvbGl0ZXJhbD4gdHJp Z2dlciwgdGhlbgorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBza2lw cyB1cGRhdGluZyB0aGUgc3RhcnQvZW5kIHRpbWVzCisgICBvciBpbnNlcnRpbmcgdGVtcG9yYWwg bGVmdG92ZXJzLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRyaWdnZXIKKyAgIHRv IG1ha2Ugd2hhdGV2ZXIgY2hhbmdlcyBhcmUgZGVzaXJlZC4KKyAgPC9wYXJhPgorCiAgIDxwYXJh PgogICAgV2hlbiB0ZW1wb3JhbCBsZWZ0b3ZlcnMgYXJlIGluc2VydGVkLCBhbGwgPGxpdGVyYWw+ SU5TRVJUPC9saXRlcmFsPgogICAgdHJpZ2dlcnMgYXJlIGZpcmVkLCBidXQgcGVybWlzc2lvbiBj aGVja3MgZm9yIGluc2VydGluZyByb3dzIGFyZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYwppbmRleCA4NDZkYzUxNmI0My4uMDU1ODU2YmEzZDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xODE0LDcgKzE4MTQsMTUgQEAgRXhlY0RlbGV0ZUVw aWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAogCS8qIENvbXB1dGUgdGVtcG9yYWwgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9O IE9GICovCiAJaWYgKCgoTW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbikt PmZvclBvcnRpb25PZikKLQkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBlc3Rh dGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQpOworCXsKKwkJLyoKKwkJICogU2tpcCBsZWZ0b3Zl cnMgaWYgdGhlcmUgd2VyZSBJTlNURUFEIE9GIHRyaWdnZXJzLgorCQkgKiBXZSB3b3VsZCBoYXZl IG5vIHdheSBvZiBhY2Nlc3NpbmcgdGhlIG9sZCByb3cuCisJCSAqLworCQlpZiAoIXJlc3VsdFJl bEluZm8tPnJpX1RyaWdEZXNjIHx8CisJCQkhcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRy aWdfZGVsZXRlX2luc3RlYWRfcm93KQorCQkJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoY29u dGV4dCwgZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwl9CiAKIAkvKiBBRlRFUiBS T1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRlVHJpZ2dlcnMoZXN0YXRlLCByZXN1 bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKQEAgLTI2MTksNyArMjYyNywxNSBAQCBFeGVj VXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250ZXh0 ICp1cGRhdGVDeHQsCiAKIAkvKiBDb21wdXRlIHRlbXBvcmFsIGxlZnRvdmVycyBpbiBGT1IgUE9S VElPTiBPRiAqLwogCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQtPm10c3RhdGUtPnBzLnBs YW4pLT5mb3JQb3J0aW9uT2YpCi0JCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoY29udGV4dCwg Y29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwl7CisJCS8qCisJCSAq IFNraXAgbGVmdG92ZXJzIGlmIHRoZXJlIHdlcmUgSU5TVEVBRCBPRiB0cmlnZ2Vycy4KKwkJICog V2Ugd291bGQgaGF2ZSBubyB3YXkgb2YgYWNjZXNzaW5nIHRoZSBvbGQgcm93LgorCQkgKi8KKwkJ aWYgKCFyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyB8fAorCQkJIXJlc3VsdFJlbEluZm8tPnJp X1RyaWdEZXNjLT50cmlnX2RlbGV0ZV9pbnN0ZWFkX3JvdykKKwkJCUV4ZWNGb3JQb3J0aW9uT2ZM ZWZ0b3ZlcnMoY29udGV4dCwgY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlk KTsKKwl9CiAKIAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJzICovCiAJRXhlY0FSVXBkYXRl VHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAppbmRleCA0MzQwODk3MjExNy4uNjFmNTg4 ZWEzODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25f b2Yub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 CkBAIC0yNDQ2LDQgKzI0NDYsNDUgQEAgTk9USUNFOiAgZnBvX2JlZm9yZV9yb3cxOiBCRUZPUkUg VVBEQVRFIFJPVzoKIE5PVElDRTogICAgb2xkOiBbMTAsMTAwKQogTk9USUNFOiAgICBuZXc6IFsz MCw3MCkKIERST1AgVEFCTEUgZnBvX3VwZGF0ZV9vZl90cmlnZ2VyOworLS0gSW5zZXJ0aW5nIGxl ZnRvdmVycyBzaG91bGQgYmUgc2tpcHBlZCBvbiB2aWV3cyB3aXRoIElOU1RFQUQgT0YgdHJpZ2dl cnMKK0NSRUFURSBUQUJMRSBmcG9faW5zdGVhZF9iYXNlIChpZCBpbnQsIHZhbGlkX2F0IGRhdGVy YW5nZSwgdmFsIGludCk7CitJTlNFUlQgSU5UTyBmcG9faW5zdGVhZF9iYXNlIFZBTFVFUyAoMSwg J1syMDI0LTAxLTAxLDIwMjUtMDEtMDEpJywgMTAwKTsKK0NSRUFURSBWSUVXIGZwb19pbnN0ZWFk X3ZpZXcgQVMgU0VMRUNUICogRlJPTSBmcG9faW5zdGVhZF9iYXNlOworQ1JFQVRFIEZVTkNUSU9O IGZwb19pbnN0ZWFkX3RyaWdfZm4oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBB UyAkJAorQkVHSU4KKyAgICAgIGlmIFRHX09QID0gJ1VQREFURScgdGhlbgorICAgICAgICAgIHJh aXNlIE5PVElDRSAnVVBEQVRFIE9MRDogJSwgTkVXOiAlJywgT0xELCBORVc7CisgICAgICAgICAg UkVUVVJOIE5FVzsKKyAgICAgIGVsc2lmIFRHX09QID0gJ0lOU0VSVCcgdGhlbgorICAgICAgICAg IHJhaXNlIE5PVElDRSAnSU5TRVJUIE5FVzogJScsIE5FVzsKKyAgICAgICAgICBSRVRVUk4gTkVX OworICAgICAgZWxzaWYgVEdfT1AgPSAnREVMRVRFJyB0aGVuCisgICAgICAgICAgcmFpc2UgTk9U SUNFICdERUxFVEU6IE9MRDogJScsIE9MRDsKKyAgICAgICAgICBSRVRVUk4gT0xEOworICAgICAg ZW5kIGlmOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJDsKK0NSRUFURSBUUklHR0VSIGZwb19p bnN0ZWFkX3RyaWcgSU5TVEVBRCBPRiBVUERBVEUgT1IgREVMRVRFIE9OIGZwb19pbnN0ZWFkX3Zp ZXcKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gZnBvX2luc3RlYWRfdHJpZ19mbigp OworVVBEQVRFIGZwb19pbnN0ZWFkX3ZpZXcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAyNC0wNC0wMScgVE8gJzIwMjQtMDgtMDEnCisgICAgU0VUIHZhbCA9IDk5OSBXSEVSRSBpZCA9 IDE7CitOT1RJQ0U6ICBVUERBVEUgT0xEOiAoMSwiWzIwMjQtMDEtMDEsMjAyNS0wMS0wMSkiLDEw MCksIE5FVzogKDEsIlsyMDI0LTAxLTAxLDIwMjUtMDEtMDEpIiw5OTkpCitTRUxFQ1QgKiBGUk9N IGZwb19pbnN0ZWFkX3ZpZXc7CisgaWQgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHZhbCAK Ky0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLQorICAxIHwgWzIwMjQtMDEtMDEs MjAyNS0wMS0wMSkgfCAxMDAKKygxIHJvdykKKworREVMRVRFIEZST00gZnBvX2luc3RlYWRfdmll dyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDI0LTA0LTAxJyBUTyAnMjAyNC0wOC0w MScKKyAgICBXSEVSRSBpZCA9IDE7CitOT1RJQ0U6ICBERUxFVEU6IE9MRDogKDEsIlsyMDI0LTAx LTAxLDIwMjUtMDEtMDEpIiwxMDApCitTRUxFQ1QgKiBGUk9NIGZwb19pbnN0ZWFkX3ZpZXc7Cisg aWQgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHZhbCAKKy0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLQorICAxIHwgWzIwMjQtMDEtMDEsMjAyNS0wMS0wMSkgfCAxMDAKKygx IHJvdykKKworRFJPUCBWSUVXIGZwb19pbnN0ZWFkX3ZpZXc7CitEUk9QIFRBQkxFIGZwb19pbnN0 ZWFkX2Jhc2U7CiBSRVNFVCBkYXRlc3R5bGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlv bl9vZi5zcWwKaW5kZXggN2IwOGY4Y2Y0NWUuLmEzOTc4MzhhM2M2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCkBAIC0xNTkxLDQgKzE1OTEsMzcgQEAgVVBEQVRFIGZw b191cGRhdGVfb2ZfdHJpZ2dlcgogICBTRVQgaWQgPSAyOwogRFJPUCBUQUJMRSBmcG9fdXBkYXRl X29mX3RyaWdnZXI7CiAKKy0tIEluc2VydGluZyBsZWZ0b3ZlcnMgc2hvdWxkIGJlIHNraXBwZWQg b24gdmlld3Mgd2l0aCBJTlNURUFEIE9GIHRyaWdnZXJzCitDUkVBVEUgVEFCTEUgZnBvX2luc3Rl YWRfYmFzZSAoaWQgaW50LCB2YWxpZF9hdCBkYXRlcmFuZ2UsIHZhbCBpbnQpOworSU5TRVJUIElO VE8gZnBvX2luc3RlYWRfYmFzZSBWQUxVRVMgKDEsICdbMjAyNC0wMS0wMSwyMDI1LTAxLTAxKScs IDEwMCk7CitDUkVBVEUgVklFVyBmcG9faW5zdGVhZF92aWV3IEFTIFNFTEVDVCAqIEZST00gZnBv X2luc3RlYWRfYmFzZTsKK0NSRUFURSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2ZuKCkgUkVU VVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgICBpZiBUR19P UCA9ICdVUERBVEUnIHRoZW4KKyAgICAgICAgICByYWlzZSBOT1RJQ0UgJ1VQREFURSBPTEQ6ICUs IE5FVzogJScsIE9MRCwgTkVXOworICAgICAgICAgIFJFVFVSTiBORVc7CisgICAgICBlbHNpZiBU R19PUCA9ICdJTlNFUlQnIHRoZW4KKyAgICAgICAgICByYWlzZSBOT1RJQ0UgJ0lOU0VSVCBORVc6 ICUnLCBORVc7CisgICAgICAgICAgUkVUVVJOIE5FVzsKKyAgICAgIGVsc2lmIFRHX09QID0gJ0RF TEVURScgdGhlbgorICAgICAgICAgIHJhaXNlIE5PVElDRSAnREVMRVRFOiBPTEQ6ICUnLCBPTEQ7 CisgICAgICAgICAgUkVUVVJOIE9MRDsKKyAgICAgIGVuZCBpZjsKKyAgICBSRVRVUk4gTkVXOwor RU5EOworJCQ7CitDUkVBVEUgVFJJR0dFUiBmcG9faW5zdGVhZF90cmlnIElOU1RFQUQgT0YgVVBE QVRFIE9SIERFTEVURSBPTiBmcG9faW5zdGVhZF92aWV3CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IEZVTkNUSU9OIGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKKworVVBEQVRFIGZwb19pbnN0ZWFkX3Zp ZXcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNC0wNC0wMScgVE8gJzIwMjQtMDgt MDEnCisgICAgU0VUIHZhbCA9IDk5OSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGZwb19p bnN0ZWFkX3ZpZXc7CisKK0RFTEVURSBGUk9NIGZwb19pbnN0ZWFkX3ZpZXcgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAyNC0wNC0wMScgVE8gJzIwMjQtMDgtMDEnCisgICAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBmcG9faW5zdGVhZF92aWV3OworCitEUk9QIFZJRVcgZnBv X2luc3RlYWRfdmlldzsKK0RST1AgVEFCTEUgZnBvX2luc3RlYWRfYmFzZTsKKwogUkVTRVQgZGF0 ZXN0eWxlOwotLSAKMi40My4wCgo= --000000000000e0354e06551183f7--