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 1waxSx-002ByU-1q for pgsql-bugs@arkaria.postgresql.org; Sat, 20 Jun 2026 15:18:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1waxSw-001nlj-0B for pgsql-bugs@arkaria.postgresql.org; Sat, 20 Jun 2026 15:18:38 +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 1waxSv-001nlb-2T for pgsql-bugs@lists.postgresql.org; Sat, 20 Jun 2026 15:18:37 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1waxSt-00000001RfR-1qRh for pgsql-bugs@lists.postgresql.org; Sat, 20 Jun 2026 15:18:37 +0000 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-486621f0adbso2062261b6e.2 for ; Sat, 20 Jun 2026 08:18:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781968713; cv=none; d=google.com; s=arc-20240605; b=Ad2H8SOw3XOZsoLBkcruy38KeNvdiEE0eejTp2bdc2sALNYsjvRlLwj2RmgTrt2Z4l EqBh7qckDV37YcBPg/0hPoH1XU3YBN191GwlhPS/N1mjf9AdEMPgM7YGaWO26Q+2uBIB MV0/3qXoeNbdBBLogPXPGv/R5D7IrWGPqKJq7bqaJqYtwhAz5sZOU56iB+9wLawQkqsk rDgl+SWZ4L9QhhUhJPFgDjU3nLvnnVd3f2Zw3BhqfUXVkysQkQQTL7zkGJF0ZnZuoRO2 AStWKxe1anXBBRXUp/CwawiSHga5zABHfpYlocCr5kQ2dP/dRED2X118/NXjWpFAjQ/L pTuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=9Whh+4FwJFYeRL7BQXZlug6w/TZMFqPeZPmxHmtDolM=; fh=L7M1BXaOU6QD90DsBro1cutbWClKkcHT0wg7+2d3Raw=; b=IxrtfcMbY9hTpjR3thN6ISrlcIm5K3XuO+7RvEyBB1hnjrRiXNuVXpsSLYkWERhDkt WV3gI1deFTwcifAelA+6RbQI1K3kWElF5EHgw0+R5mst7gGSyUkrH0h7XZNkxUN4LA31 lqGBOMEAew+1VPDvoCxZ9xp3Xodcx6HRarrnElQWFzVi8rSSDQQrLKCSmpuV31LmKBrk uINL2pucQJYvLfkLD2mHCGJtcjAPKqxlebBID22Y/lSypYpD7KmcYTTvQaaPTdnX+ig9 V7L7yTic8GuxNMJ8dyUqmaeZZrcTGRbcSDa+JtLhAbVai0bUFHlK1BZg31E7KdYniGtY qr+w==; 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=1781968713; x=1782573513; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=9Whh+4FwJFYeRL7BQXZlug6w/TZMFqPeZPmxHmtDolM=; b=oolgQdMiBIqRm5QJiFmak1mKerJWZ46GwuQmoR5YKqKqaLsL64sYT49EpZj/Mk4IF4 bQrEL8zfA8+CDwCvMOJ3iLh/oigDiEev6kUexue2vf6n2HtVJX43vQAS9xiGHvrPDdGs JrFfbCe52a0o1wEWd/gFAqxXvTk3+KSXeQ5SFVlTziyqkgd83ovhOP2IsZQuqjkIcquj XKcZsNjm2wbfBOr0SPBgULBLkMtxOVMCh1F+bohPh6tnxVoa0Z/55NHMDECAZZH3uD3v FldWfe4ejTJdp0yc3DbfUKvCULfS7YTNayg2xQrVhSMDSifwm5KTZa4B5EW+5qQvIlJY FS0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781968713; x=1782573513; h=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=9Whh+4FwJFYeRL7BQXZlug6w/TZMFqPeZPmxHmtDolM=; b=Zo+niBsaMYj9WnaQjw9FQc2CIeZXoCKXxbVd9K+YknFFXm4D3fFCjXXWnfgTUFyBjx /rZchAAMMNsxmLpXUvFfUNvc0xOzb1ZX9VKiep/t+RmoTEyLtF+1vI1H8ictMHZeCQji G+ETI1lsYZuQE5deq/fjsQ0+K96Wcz1sqVhHTn6BJW9ijh9+QT4vOSooxK+LOwfGeave mWx/bGjk5nfOOEc5I1K1LzefgXL2JICTgluhsR3Ai1glpxUbYa6jLE+AQrZKtBVp8spl 7kfYvkN7CAju8YvJFrMOgsNL4RwrDHd9gHSRJ0RnuxZLjKRJUQhXkh6FTUbMCQBw923V onIQ== X-Forwarded-Encrypted: i=1; AFNElJ/KPTHMSDRJvPrTaIcKyEIC17na6MQHEsGRENR77VqAZX1IpTsh4s23I95DmSjy0L36AKfNwR4VoDdR@lists.postgresql.org X-Gm-Message-State: AOJu0Yx3pFpr40CFEoYlT8wB6fYxkxDTyo0mBZNJ5bvUyKXc/1uHNmDN voVJ+nUxgm2/gcxY9P0FqO/a3zlcp+pgLvZ28WQ9MY3aL22LKnAcpc79eFjtmJw9siegLVBfsmi ii7x6YWn8svRZMioxWrgPJPTTeC6LpMOp1qyg3Y34Lg== X-Gm-Gg: AfdE7cm9vqKkYNm0PPTnwA3qBgL39kZ51AZNz+AjooU+cGD8gQ/++SVaQrRLsa89rf/ aQz8567fUMX43NXMY9sbeFp80BFNBEzGwEd4f+NmrWrMVUpo7nSgzCW22NMr2SS21er2WzLfm06 TRFBHlPIbdBcIw9WT9+++fs3ZrLbWrS708Gkc5sThx2rudCMXUrXd2XuwmnL2do5Km7ZnjnqkLn d54ixCyKNWP9g+qqRC/hTmO77+zAPqq/tVWreFmTrunpMSZiUBby0/rDqV5AFK6BR1wffy3/65V 66LMitzzSaTKHnL0zJqCng25DCxQfcogBjEfJ7nIhsFP0yrHJyA0PZU7T6HyTyAovyYZIB3pGW6 +JQ7ER3qtWBzP X-Received: by 2002:a05:6808:c2be:b0:485:7c3d:3829 with SMTP id 5614622812f47-4896aa79fd2mr6491588b6e.13.1781968713140; Sat, 20 Jun 2026 08:18:33 -0700 (PDT) MIME-Version: 1.0 References: <19528-7290dd7e6f7dcc22@postgresql.org> In-Reply-To: <19528-7290dd7e6f7dcc22@postgresql.org> From: Fujii Masao Date: Sun, 21 Jun 2026 00:18:19 +0900 X-Gm-Features: AVVi8CcbXCB-DFBxndgWc0UshNmy-8VVAUVo65JiFwaahgjxj8AOdY5R1jdhw8w Message-ID: Subject: Re: BUG #19528: Assert failure in generate_normalized_query() via Squashed Array Literals To: 3020001251@tju.edu.cn, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000025e25f0654b0ec18" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000025e25f0654b0ec18 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Jun 20, 2026 at 7:53=E2=80=AFPM PG Bug reporting form wrote: > `" /*, ... */"` is 11 bytes, so a squashed entry writes `"$N"` (2 bytes) > plus `" /*, ... */"` (11 bytes) =3D 13 bytes to replace a 1-byte constant= , a > net expansion of 12 bytes. The budget of 10 bytes is exceeded by 2 bytes = per > squashed location. With N squashed array elements the buffer overflows by= 2N > bytes. This analysis doesn't seem correct to me. For "ARRAY[1,2]", the recorded location covers the entire list text, "1,2" (3 bytes), which is replaced with "$n /*, ... */". For a single-digit placeholder, "$1 /*, ... */" is 13 bytes, so replacing "1,2" results in a net growth of 10 bytes. That still fits within the existing budget. The budget is first exceeded when the placeholder number reaches two digits: "$10 /*, ... */" is 14 bytes, giving a net growth of 11 bytes. Therefore, the smallest reproducer is 10 squashed "ARRAY[1,2]" entries, where the shortfall seems only 1 byte overall, not 2 bytes per squashed location. > ### Fix > > Account for the extra 11 bytes appended when a squashed suffix is written= . > One correct approach: > > ```c > norm_query_buflen =3D query_len + jstate->clocations_count * > (10 + (jstate->has_squashed_lists ? 11 : 0)); > ``` > > A simpler conservative fix that covers the worst case (`"$2147483648 /*, = ... > */"` =3D 22 bytes replacing a 1-byte constant, net 21 bytes): > > ```c > norm_query_buflen =3D query_len + jstate->clocations_count * 22; > ``` How about keeping the current "clocations_count * 10" budget for ordinary replacements, counting squashed entries separately, and adding only the extra space they may need, for example: clocations_count * 10 + squashed_count * 9 The existing "+10" already covers ordinary placeholders. For squashed entries, the worst-case additional overhead is 9 bytes, from replacing the shortest possible source text "1,2" (3 bytes) with the longest possible placeholder "$2147483647 /*, ... */" (22 bytes), for a total growth of 19 bytes. Attached patch implements this approach. Thoughts? Regards, --=20 Fujii Masao --00000000000025e25f0654b0ec18 Content-Type: application/octet-stream; name="v1-0001-pg_stat_statements-add-room-for-squashed-placehol.patch" Content-Disposition: attachment; filename="v1-0001-pg_stat_statements-add-room-for-squashed-placehol.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqmi5i020 RnJvbSAwYjIyZDcxMzBkN2YxMzE1YWEzZDkxNjUyMGYyZGQ0YWEwY2ZhOTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFNhdCwgMjAgSnVuIDIwMjYgMjM6MTE6NDEgKzA5MDAKU3ViamVjdDogW1BBVENIIHYxXSBw Z19zdGF0X3N0YXRlbWVudHM6IGFkZCByb29tIGZvciBzcXVhc2hlZCBwbGFjZWhvbGRlcnMKCi0t LQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zcXVhc2hpbmcub3V0IHwgMjQgKysr KysrKysrKysrKysrKysrKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYyAgIHwgMTcgKysrKysrKysrKysrLQogY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3Fs L3NxdWFzaGluZy5zcWwgIHwgIDcgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9leHBlY3RlZC9zcXVhc2hpbmcub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvc3F1YXNoaW5nLm91dAppbmRleCA4NDM4MjM1YTJjZS4uMDU3ZjU2YzQ3NDEgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NxdWFzaGluZy5v dXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc3F1YXNoaW5nLm91 dApAQCAtNzksNiArNzksMzAgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1QgcGdfc3RhdF9zdGF0 ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdCAgICB8ICAgICAxCiAoMyByb3dzKQogCist LSBzbWFsbCBhcnJheSBsaXRlcmFscyBzdGlsbCBmaXQgb25jZSBzcXVhc2hlZCBwbGFjZWhvbGRl cnMgcmVhY2ggMiBkaWdpdHMKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBO T1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBBUlJBWVsxLDJd IEFTIGExLCBBUlJBWVsxLDJdIEFTIGEyLCBBUlJBWVsxLDJdIEFTIGEzLCBBUlJBWVsxLDJdIEFT IGE0LAorICAgICAgIEFSUkFZWzEsMl0gQVMgYTUsIEFSUkFZWzEsMl0gQVMgYTYsIEFSUkFZWzEs Ml0gQVMgYTcsIEFSUkFZWzEsMl0gQVMgYTgsCisgICAgICAgQVJSQVlbMSwyXSBBUyBhOSwgQVJS QVlbMSwyXSBBUyBhMTA7CisgIGExICAgfCAgYTIgICB8ICBhMyAgIHwgIGE0ICAgfCAgYTUgICB8 ICBhNiAgIHwgIGE3ICAgfCAgYTggICB8ICBhOSAgIHwgIGExMCAgCistLS0tLS0tKy0tLS0tLS0r LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLS0tCisgezEsMn0gfCB7MSwyfSB8IHsxLDJ9IHwgezEsMn0gfCB7MSwyfSB8IHsxLDJ9IHwg ezEsMn0gfCB7MSwyfSB8IHsxLDJ9IHwgezEsMn0KKygxIHJvdykKKworU0VMRUNUIHF1ZXJ5LCBj YWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFNFTEVDVCBBUlJBWVskMSAvKiwgLi4u ICovXSBBUyBhMSwgQVJSQVlbJDIgLyosIC4uLiAqL10gQVMgYTIsIEFSUkFZWyQzIC8qLCAuLi4g Ki9dIEFTIGEzLCBBUlJBWVskNCAvKiwgLi4uICovXSBBUyBhNCwrfCAgICAgMQorICAgICAgICBB UlJBWVskNSAvKiwgLi4uICovXSBBUyBhNSwgQVJSQVlbJDYgLyosIC4uLiAqL10gQVMgYTYsIEFS UkFZWyQ3IC8qLCAuLi4gKi9dIEFTIGE3LCBBUlJBWVskOCAvKiwgLi4uICovXSBBUyBhOCwrfCAK KyAgICAgICAgQVJSQVlbJDkgLyosIC4uLiAqL10gQVMgYTksIEFSUkFZWyQxMCAvKiwgLi4uICov XSBBUyBhMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgCisgU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAxCisoMiByb3dzKQorCiAtLSBidWlsdC1pbiBmdW5jdGlv bnMgd2lsbCBiZSBzcXVhc2hlZAogLS0gdGhlIElOIGFuZCBBUlJBWSBmb3JtcyBvZiB0aGlzIHN0 YXRlbWVudCB3aWxsIGhhdmUgdGhlIHNhbWUgcXVlcnlJZAogU0VMRUNUIHBnX3N0YXRfc3RhdGVt ZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDkyMzE1NjI3OTE2Li5iZDc5YTdkMTQ3 MCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKQEAgLTI4MjIsNiArMjgyMiw3IEBAIGdlbmVyYXRlX25vcm1hbGl6ZWRfcXVlcnkoY29uc3Qg SnVtYmxlU3RhdGUgKmpzdGF0ZSwgY29uc3QgY2hhciAqcXVlcnksCiAJCQkJbGFzdF9vZmYgPSAw LAkvKiBPZmZzZXQgZnJvbSBzdGFydCBmb3IgcHJldmlvdXMgdG9rICovCiAJCQkJbGFzdF90b2tf bGVuID0gMDsJLyogTGVuZ3RoIChpbiBieXRlcykgb2YgdGhhdCB0b2sgKi8KIAlpbnQJCQludW1f Y29uc3RhbnRzX3JlcGxhY2VkID0gMDsKKwlpbnQJCQlzcXVhc2hlZF9jb3VudCA9IDA7CiAJTG9j YXRpb25MZW4gKmxvY3MgPSBOVUxMOwogCiAJLyoKQEAgLTI4MzcsOCArMjgzOCwyMiBAQCBnZW5l cmF0ZV9ub3JtYWxpemVkX3F1ZXJ5KGNvbnN0IEp1bWJsZVN0YXRlICpqc3RhdGUsIGNvbnN0IGNo YXIgKnF1ZXJ5LAogCSAqIGNlcnRhaW5seSBpc24ndCBtb3JlIHRoYW4gMTEgYnl0ZXMsIGV2ZW4g aWYgbiByZWFjaGVzIElOVF9NQVguICBXZQogCSAqIGNvdWxkIHJlZmluZSB0aGF0IGxpbWl0IGJh c2VkIG9uIHRoZSBtYXggdmFsdWUgb2YgbiBmb3IgdGhlIGN1cnJlbnQKIAkgKiBxdWVyeSwgYnV0 IGl0IGhhcmRseSBzZWVtcyB3b3J0aCBhbnkgZXh0cmEgZWZmb3J0IHRvIGRvIHNvLgorCSAqCisJ ICogU3F1YXNoZWQgbGlzdHMgbmVlZCBhIGxpdHRsZSBtb3JlIHJvb20uIFRoZSBzaG9ydGVzdCBz cXVhc2hlZCBzb3VyY2UKKwkgKiB0ZXh0IGlzICIxLDIiICh0aHJlZSBieXRlcyksIHdoaWxlIHRo ZSBsb25nZXN0IHNxdWFzaGVkIHBsYWNlaG9sZGVyIGlzCisJICogMjIgYnl0ZXMgbG9uZyAoYW4g SU5UX01BWCBwbGFjZWhvbGRlciBwbHVzIHRoZSBzcXVhc2ggbWFya2VyKSwgc28gZWFjaAorCSAq IHNxdWFzaGVkIGxpc3QgY2FuIG5lZWQgdXAgdG8gOSBieXRlcyBtb3JlIHRoYW4gdGhlIGJhc2Ug YWxsb3dhbmNlIG9mIDEwCisJICogYnl0ZXMgcGVyIGVudHJ5LgogCSAqLwotCW5vcm1fcXVlcnlf YnVmbGVuID0gcXVlcnlfbGVuICsganN0YXRlLT5jbG9jYXRpb25zX2NvdW50ICogMTA7CisJZm9y IChpbnQgaSA9IDA7IGkgPCBqc3RhdGUtPmNsb2NhdGlvbnNfY291bnQ7IGkrKykKKwl7CisJCS8q IElnbm9yZSBkdXBsaWNhdGUgbG9jYXRpb25zIHRoYXQgQ29tcHV0ZUNvbnN0YW50TGVuZ3Rocygp IGRpc2FibGVkICovCisJCWlmIChsb2NzW2ldLnNxdWFzaGVkICYmIGxvY3NbaV0ubGVuZ3RoID49 IDApCisJCQlzcXVhc2hlZF9jb3VudCsrOworCX0KKworCW5vcm1fcXVlcnlfYnVmbGVuID0gcXVl cnlfbGVuICsganN0YXRlLT5jbG9jYXRpb25zX2NvdW50ICogMTAgKworCQlzcXVhc2hlZF9jb3Vu dCAqIDk7CiAKIAkvKiBBbGxvY2F0ZSByZXN1bHQgYnVmZmVyICovCiAJbm9ybV9xdWVyeSA9IHBh bGxvYyhub3JtX3F1ZXJ5X2J1ZmxlbiArIDEpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0 X3N0YXRlbWVudHMvc3FsL3NxdWFzaGluZy5zcWwgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9zcWwvc3F1YXNoaW5nLnNxbAppbmRleCBmYzllNjU3Mzg3My4uMmJkMjZiMjRlZWMgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zcXVhc2hpbmcuc3FsCisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zcXVhc2hpbmcuc3FsCkBAIC0yNCw2ICsy NCwxMyBAQCBTRUxFQ1QgQVJSQVlbMSwgMiwgMywgNF07CiBTRUxFQ1QgQVJSQVlbMSwgMiwgMywg NCwgNV07CiBTRUxFQ1QgcXVlcnksIGNhbGxzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVS IEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogCistLSBzbWFsbCBhcnJheSBsaXRlcmFscyBzdGlsbCBm aXQgb25jZSBzcXVhc2hlZCBwbGFjZWhvbGRlcnMgcmVhY2ggMiBkaWdpdHMKK1NFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworU0VMRUNUIEFSUkFZWzEs Ml0gQVMgYTEsIEFSUkFZWzEsMl0gQVMgYTIsIEFSUkFZWzEsMl0gQVMgYTMsIEFSUkFZWzEsMl0g QVMgYTQsCisgICAgICAgQVJSQVlbMSwyXSBBUyBhNSwgQVJSQVlbMSwyXSBBUyBhNiwgQVJSQVlb MSwyXSBBUyBhNywgQVJSQVlbMSwyXSBBUyBhOCwKKyAgICAgICBBUlJBWVsxLDJdIEFTIGE5LCBB UlJBWVsxLDJdIEFTIGExMDsKK1NFTEVDVCBxdWVyeSwgY2FsbHMgRlJPTSBwZ19zdGF0X3N0YXRl bWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKIC0tIGJ1aWx0LWluIGZ1bmN0aW9u cyB3aWxsIGJlIHNxdWFzaGVkCiAtLSB0aGUgSU4gYW5kIEFSUkFZIGZvcm1zIG9mIHRoaXMgc3Rh dGVtZW50IHdpbGwgaGF2ZSB0aGUgc2FtZSBxdWVyeUlkCiBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1l bnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKLS0gCjIuNTMuMAoK --00000000000025e25f0654b0ec18--