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 1vYY1a-006gNw-0g for pgsql-bugs@arkaria.postgresql.org; Wed, 24 Dec 2025 23:12:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vYY1Y-005olY-35 for pgsql-bugs@arkaria.postgresql.org; Wed, 24 Dec 2025 23:12:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYY1Y-005olQ-1d for pgsql-bugs@lists.postgresql.org; Wed, 24 Dec 2025 23:12:09 +0000 Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vYY1X-002Swf-0S for pgsql-bugs@lists.postgresql.org; Wed, 24 Dec 2025 23:12:08 +0000 Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-3fa139e5d90so2190615fac.3 for ; Wed, 24 Dec 2025 15:12:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766617925; x=1767222725; 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=+i1QP4LFWTVVPppbWXs2LrJZcamI9Zatq34RSscq7aQ=; b=hpTc8OKWK5/VUyPKPHwLCWuI6c04Rp4Z8HHv/Co2j5+gmKTOyNx/+ywFjMOBfqZkzM iz7BkPm1gIkV1bYOyFFjtAvbXrYktJLBuOHvOeJ9R67eh/GsoSjQ7Tc68qkeVbgLKi08 cxBaUUSD8fdvgYsOQYtULqvMGtHi7xLQy8FqIz8LJ97q5wgYHGRn18STHS3wzfUNu8SQ 1ucivTzRoIsn2/9DMlvxTWdYLJ7Lb3rvnBFPY7Blomb35t+qkpPfFPHPdLWML9rqPDXp sn2Oypt3g5UT+JNyt47vWRMEbocLt2jZs0o22LYcz2Nm6qWGFMSPJ8xwAOfT3tsTPYnM 52ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766617925; x=1767222725; 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=+i1QP4LFWTVVPppbWXs2LrJZcamI9Zatq34RSscq7aQ=; b=k2DB0qe7VDBqJ+q5SIiZKNKSMVu8SKM/jBMjiThI05s1dwCIIBbxsKYiS/z7e5Su11 6vRUjEjDstedl6Dq39siG1e10dZ2olKy8UATQ9XZriIa2XIoVxIsNqJjQlkFsE80u//w Qni5XouBsT4rHej19RFe1tmuuni8Q5YNYWHLmZ/wGTKBBhkCXNGxIopjxKs61u9Ujudn hVnPPUHXfS/Xt4P+5ioMOjl20S/896rjdMeL7eXxF6fyOy056W3nO5K4thxUwN/QL5kY gKdVI9jtnOfSL5REVXB0+c6HjQhaTUn2dKtaBgWS0KLIQa7VgU3O4zaeH4K/n+H8PDWU CJsg== X-Forwarded-Encrypted: i=1; AJvYcCUsRVclcLF5gB6gVGget19JEX2EVqghYCCqRuVuo1UzqToiBixf0UzLEY6cwYAJELjNuCS7DqQBqNSV@lists.postgresql.org X-Gm-Message-State: AOJu0YzF3k0NiP1hiAgdijPv4wV/zzdiDFzc3Re3z0u4y1nMW8DUh7Ya m/MJsLS4nEW/FzXHj0Lqwc2PvikYztjKNyJIM3WvfXtoou7qqGBC8TCaGQpDKO53FKy20FfBChm fSpRtpWkqa+l53gayOF5HcwppK6jWpgo= X-Gm-Gg: AY/fxX5v36AS1aHZ/bHy22ByNSsioi/dbklRnewDpUoeQkO1npPIEfnLT8vXly6X8I4 zgLB9InBdxE+CP/jE1d8H0HHgwn4+7JuFwAqLY9O4gPefVomhqK1SokeDysQNBtDckMlWV2/O6l 9VvoTCojPCAIJZLnctNLOi6UrqTkbyjjSrzUx4UG6SY5KR6KFM5ws9z7bfvT1csdPI+FU7v1oFw +nUnaxynIZudaw43mYTD1ROtiSlkA3OlUEYTY6ZGdAjx6y9u4C8fQwoegE+YybzxfLnDLUZQuHG D2nox3Mb4E3z3kwHRN8hluTJyfc90yoZcpu4v2tF X-Google-Smtp-Source: AGHT+IFQ5CbrfTFk1sYV0O8u+XI1bn9D3pOId7mekHHF1WAcpsYO+lMHE6fuRv8TKQmovUPyRnkMmPkKrgw/MilETs8= X-Received: by 2002:a4a:cb0f:0:b0:659:9a49:8dcf with SMTP id 006d021491bc7-65d0e9e7f76mr5454603eaf.17.1766617925146; Wed, 24 Dec 2025 15:12:05 -0800 (PST) MIME-Version: 1.0 References: <19355-57d7d52ea4980dc6@postgresql.org> <868ff2a518820c8864b6d28510294b2457a126af.camel@cybertec.at> In-Reply-To: From: Dean Rasheed Date: Wed, 24 Dec 2025 23:11:53 +0000 X-Gm-Features: AQt7F2rKI0LY0ivroCGxUBXbUIN1NVVadNr4IFTUo2WYqOh4CKsvxvaFgqg-taQ Message-ID: Subject: Re: BUG #19355: Attempt to insert data unexpectedly during concurrent update To: Tender Wang Cc: Amit Langote , Bh W , Laurenz Albe , pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000e24dbb0646bac9c7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e24dbb0646bac9c7 Content-Type: text/plain; charset="UTF-8" On Wed, 24 Dec 2025 at 12:07, Tender Wang wrote: > > I did some debugging, and I found that: > In add_rte_to_flat_rtable(), the RTE of value was not added into glob->AllRelids, because below codes: > ..... > the estate->es_unpruned_relids equals with result->unprunableRelids contains. So the rowMark was skipped incorrectly. > > I did a quick fix as the attached patch. > Any thoughts? Yes. However, it's not sufficient to only add RTE_VALUES RTEs to what gets included in PlannerGlobal.allRelids. Rowmarks can be attached to other kinds of RTEs. An obvious example is an RTE_SUBQUERY RTE that is an actual subquery that did not come from a view. So, for this approach to work robustly, it really should include *all* RTEs in PlannerGlobal.allRelids. I took a slightly different approach, which was to change the test in InitPlan() (and also in ExecInitLockRows() and ExecInitModifyTable()) to only ignore rowmarks for pruned relations that are plain RTE_RELATION relations, since those are the only relations that are ever actually pruned. So rowmarks attached to any other kind of RTE are not ignored. I also added an isolation test case. I'm somewhat conflicted as to which approach is better. I think maybe there is less chance of other unintended side-effects if the set of RTEs included in PlannerGlobal.allRelids, unprunableRelids, and es_unpruned_relids is not changed. However, as it stands, PlannerGlobal.allRelids is misnamed (it should probably have been called "relationRelids", in line with the "relationOids" field). Making it actually include all RTEs would solve that. Regards, Dean --000000000000e24dbb0646bac9c7 Content-Type: text/x-patch; charset="US-ASCII"; name="fix-rowmark-skipping-for-pruned-relations.patch" Content-Disposition: attachment; filename="fix-rowmark-skipping-for-pruned-relations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjkmh5cp0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5N2Q4YjEu LjAxZGZmZGUKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04ODAsMjEgKzg4MCwyNSBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFnCiAJCWZvcmVhY2gobCwgcGxhbm5lZHN0 bXQtPnJvd01hcmtzKQogCQl7CiAJCQlQbGFuUm93TWFyayAqcmMgPSAoUGxhblJvd01hcmsgKikg bGZpcnN0KGwpOworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChyYy0+cnRp LCBlc3RhdGUpOwogCQkJT2lkCQkJcmVsaWQ7CiAJCQlSZWxhdGlvbglyZWxhdGlvbjsKIAkJCUV4 ZWNSb3dNYXJrICplcm07CiAKKwkJCS8qIGlnbm9yZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBh cmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCisJCQlpZiAocmMtPmlzUGFyZW50KQorCQkJCWNv bnRpbnVlOworCiAJCQkvKgotCQkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNl IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQKLQkJCSAqIHJ1bnRpbWUuICBBbHNvIGlnbm9yZSB0aGUg cm93bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcwotCQkJICogdGhhdCBoYXZlIGJlZW4g cHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisJCQkgKiBBbHNvIGlnbm9yZSByb3dt YXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzIHRoYXQgaGF2ZSBiZWVuCisJCQkgKiBwcnVu ZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KIAkJCSAqLwotCQkJaWYgKHJjLT5pc1BhcmVu dCB8fAorCQkJaWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gJiYKIAkJCQkhYm1zX2lz X21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCiAJCQkJY29udGlu dWU7CiAKIAkJCS8qIGdldCByZWxhdGlvbidzIE9JRCAod2lsbCBwcm9kdWNlIEludmFsaWRPaWQg aWYgc3VicXVlcnkpICovCi0JCQlyZWxpZCA9IGV4ZWNfcnRfZmV0Y2gocmMtPnJ0aSwgZXN0YXRl KS0+cmVsaWQ7CisJCQlyZWxpZCA9IHJ0ZS0+cmVsaWQ7CiAKIAkJCS8qIG9wZW4gcmVsYXRpb24s IGlmIHdlIG5lZWQgdG8gYWNjZXNzIGl0IGZvciB0aGlzIG1hcmsgdHlwZSAqLwogCQkJc3dpdGNo IChyYy0+bWFya1R5cGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGE4YWZiZjkuLjVkMzhiZDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dz LmMKQEAgLTM0NCwxNSArMzQ0LDE5IEBAIEV4ZWNJbml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUs IEVTdGF0ZQogCWZvcmVhY2gobGMsIG5vZGUtPnJvd01hcmtzKQogCXsKIAkJUGxhblJvd01hcmsg KnJjID0gbGZpcnN0X25vZGUoUGxhblJvd01hcmssIGxjKTsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gZXhlY19ydF9mZXRjaChyYy0+cnRpLCBlc3RhdGUpOwogCQlFeGVjUm93TWFyayAqZXJtOwog CQlFeGVjQXV4Um93TWFyayAqYWVybTsKIAorCQkvKiBpZ25vcmUgInBhcmVudCIgcm93bWFya3M7 IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLworCQlpZiAocmMtPmlzUGFyZW50KQor CQkJY29udGludWU7CisKIAkJLyoKLQkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNh dXNlIHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZS4KLQkJICogQWxzbyBpZ25vcmUgdGhl IHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMgdGhhdCBoYXZlIGJlZW4KKwkJICog QWxzbyBpZ25vcmUgcm93bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcyB0aGF0IGhhdmUg YmVlbgogCQkgKiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KIAkJICovCi0JCWlm IChyYy0+aXNQYXJlbnQgfHwKKwkJaWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gJiYK IAkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkK IAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NGI3MWUuLjkwNjZhNTgKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKQEAgLTUwOTIsMTUgKzUwOTIsMTkgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRQogCWZvcmVhY2gobCwgbm9kZS0+cm93TWFya3MpCiAJewog CQlQbGFuUm93TWFyayAqcmMgPSBsZmlyc3Rfbm9kZShQbGFuUm93TWFyaywgbCk7CisJCVJhbmdl VGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2gocmMtPnJ0aSwgZXN0YXRlKTsKIAkJRXhlY1Jv d01hcmsgKmVybTsKIAkJRXhlY0F1eFJvd01hcmsgKmFlcm07CiAKKwkJLyogaWdub3JlICJwYXJl bnQiIHJvd21hcmtzOyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KKwkJaWYgKHJj LT5pc1BhcmVudCkKKwkJCWNvbnRpbnVlOworCiAJCS8qCi0JCSAqIElnbm9yZSAicGFyZW50IiBy b3dtYXJrcywgYmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUuCi0JCSAqIEFs c28gaWdub3JlIHRoZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzIHRoYXQgaGF2 ZSBiZWVuCisJCSAqIEFsc28gaWdub3JlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJs ZXMgdGhhdCBoYXZlIGJlZW4KIAkJICogcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCku CiAJCSAqLwotCQlpZiAocmMtPmlzUGFyZW50IHx8CisJCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRF X1JFTEFUSU9OICYmCiAJCQkhYm1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkcykpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL2V2YWwtcGxhbi1xdWFsLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9ldmFsLXBsYW4tcXVhbC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmZmZl MC4uYTEyMjA0NwotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZXZhbC1wbGFuLXF1 YWwub3V0CisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ldmFsLXBsYW4tcXVhbC5v dXQKQEAgLTE0NzMsMyArMTQ3MywyMyBAQCBzdGVwIHMycHA0OiBERUxFVEUgRlJPTSBhbm90aGVy X3BhcnR0YmwKIHN0ZXAgYzE6IENPTU1JVDsKIHN0ZXAgczJwcDQ6IDwuLi4gY29tcGxldGVkPgog c3RlcCBjMjogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogdXBkYXRlZm9ybWVyZ2V2 YWx1ZXMgbWVyZ2V2YWx1ZXMgYzEgYzIgcmVhZAorc3RlcCB1cGRhdGVmb3JtZXJnZXZhbHVlczog VVBEQVRFIGFjY291bnRzIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIDEwMDsKK3N0ZXAgbWVyZ2V2 YWx1ZXM6IAorCU1FUkdFIElOVE8gYWNjb3VudHMKKwlVU0lORyAoVkFMVUVTICgnY2hlY2tpbmcn LCA2MTApLCAoJ3NhdmluZ3MnLCA2MjApKSB2KGFjY291bnRpZCwgYmFsYW5jZSkKKwlPTiB2LmFj Y291bnRpZCA9IGFjY291bnRzLmFjY291bnRpZAorCVdIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBT RVQgYmFsYW5jZSA9IHYuYmFsYW5jZQorCVdIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFM VUVTICgndW5tYXRjaGVkJywgLTEpOworIDx3YWl0aW5nIC4uLj4KK3N0ZXAgYzE6IENPTU1JVDsK K3N0ZXAgbWVyZ2V2YWx1ZXM6IDwuLi4gY29tcGxldGVkPgorc3RlcCBjMjogQ09NTUlUOworc3Rl cCByZWFkOiBTRUxFQ1QgKiBGUk9NIGFjY291bnRzIE9SREVSIEJZIGFjY291bnRpZDsKK2FjY291 bnRpZHxiYWxhbmNlfGJhbGFuY2UyCistLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLQorY2hlY2tp bmcgfCAgICA2MTB8ICAgIDEyMjAKK3NhdmluZ3MgIHwgICAgNjIwfCAgICAxMjQwCisoMiByb3dz KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZXZhbC1wbGFuLXF1YWwu c3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ldmFsLXBsYW4tcXVhbC5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZTFlNmIuLmZiNTdmYjIKLS0tIGEvc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL2V2YWwtcGxhbi1xdWFsLnNwZWMKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9u L3NwZWNzL2V2YWwtcGxhbi1xdWFsLnNwZWMKQEAgLTIwNiw2ICsyMDYsOCBAQCBzdGVwIHN5czEJ ewogCiBzdGVwIHMxcHAxIHsgVVBEQVRFIGFub3RoZXJfcGFydHRibCBTRVQgYiA9IGIgKyAxIFdI RVJFIGEgPSAxOyB9CiAKK3N0ZXAgdXBkYXRlZm9ybWVyZ2V2YWx1ZXMgeyBVUERBVEUgYWNjb3Vu dHMgU0VUIGJhbGFuY2UgPSBiYWxhbmNlICsgMTAwOyB9CisKIHNlc3Npb24gczIKIHNldHVwCQl7 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRUFEIENPTU1JVFRFRDsgfQogc3RlcCB3eDIJeyBVUERB VEUgYWNjb3VudHMgU0VUIGJhbGFuY2UgPSBiYWxhbmNlICsgNDUwIFdIRVJFIGFjY291bnRpZCA9 ICdjaGVja2luZycgUkVUVVJOSU5HIGJhbGFuY2U7IH0KQEAgLTMxOCw2ICszMjAsMTQgQEAgc3Rl cCBzMnBwMiB7IFBSRVBBUkUgZXBkIEFTIERFTEVURSBGUk9NCiBzdGVwIHMycHAzIHsgRVhFQ1VU RSBlcGQoMSk7IH0KIHN0ZXAgczJwcDQgeyBERUxFVEUgRlJPTSBhbm90aGVyX3BhcnR0YmwgV0hF UkUgYSA9IChTRUxFQ1QgMSk7IH0KIAorc3RlcCBtZXJnZXZhbHVlcyB7CisJTUVSR0UgSU5UTyBh Y2NvdW50cworCVVTSU5HIChWQUxVRVMgKCdjaGVja2luZycsIDYxMCksICgnc2F2aW5ncycsIDYy MCkpIHYoYWNjb3VudGlkLCBiYWxhbmNlKQorCU9OIHYuYWNjb3VudGlkID0gYWNjb3VudHMuYWNj b3VudGlkCisJV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCBiYWxhbmNlID0gdi5iYWxhbmNl CisJV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKCd1bm1hdGNoZWQnLCAtMSk7 Cit9CisKIHNlc3Npb24gczMKIHNldHVwCQl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRUFEIENP TU1JVFRFRDsgfQogc3RlcCByZWFkCXsgU0VMRUNUICogRlJPTSBhY2NvdW50cyBPUkRFUiBCWSBh Y2NvdW50aWQ7IH0KQEAgLTQyNSwzICs0MzUsNiBAQCBwZXJtdXRhdGlvbiBzeXMxIHN5c21lcmdl MiBjMSBjMgogIyBFeGVyY2lzZSBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBjb2RlIGluIGFu IEVQUSByZWNoZWNrCiBwZXJtdXRhdGlvbiBzMXBwMSBzMnBwMSBzMnBwMiBzMnBwMyBjMSBjMgog cGVybXV0YXRpb24gczFwcDEgczJwcDQgYzEgYzIKKworIyB0ZXN0IEVQUSByZWNoZWNrIGluIE1F UkdFIGZyb20gVkFMVUVTX1JURSwgY2YgYnVnICMxOTM1NQorcGVybXV0YXRpb24gdXBkYXRlZm9y bWVyZ2V2YWx1ZXMgbWVyZ2V2YWx1ZXMgYzEgYzIgcmVhZAo= --000000000000e24dbb0646bac9c7--