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.94.2) (envelope-from ) id 1qLWTN-0001iW-D1 for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jul 2023 22:13:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qLWTK-00FaRI-0P for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jul 2023 22:13:38 +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.94.2) (envelope-from ) id 1qLWTJ-00FaJ1-0D for pgsql-hackers@lists.postgresql.org; Mon, 17 Jul 2023 22:13:37 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qLWTC-0000cQ-3a for pgsql-hackers@postgresql.org; Mon, 17 Jul 2023 22:13:34 +0000 Received: from [192.168.28.88] (unknown [192.168.28.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: s.kopikova@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id D819FE21011 for ; Tue, 18 Jul 2023 01:13:26 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1689632007; bh=BmIDaoS/WAAkrwofQa1tfCsZ6srReUDKg0Lt8AFOwRc=; h=Message-ID:Date:User-Agent:To:From:Subject:From; b=R8lOOwakv6raM2QyZl/trH+eK018mEKXl9so40P0djZfDIYR5LDdYdnxccZVYO0vJ 5V5YqM8j+Z6i5N2CR56uVr5rjJmi8TIiowdARvBACyGwb7jTR0WzIOZ0F40gfKQaNs 8uGeT9rgKoL2MNJGyfCdJ63gRYIbXCf1zRGwLs//HBGYvM1Pee6Q4KLeWdEf2jsOLD i7jOu3WnnSQHCsoesgQsQbuNRjuPocN7nxUDXoP+H4ftU5JbSp9hIZx2A0k1sY3A/G OUYsO3CrE4aPHq3hLohK0PGtHK7OBnosOwV2E06x008AM75O+FXyc0hM347C4R/cbA PA6L2vI98v7HQ== Content-Type: multipart/mixed; boundary="------------T7ztZEaVI9iPWvyS0N1jvGgK" Message-ID: Date: Tue, 18 Jul 2023 01:13:25 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: pgsql-hackers@postgresql.org From: Sofia Kopikova Subject: Add TOAST support for more system tables List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------T7ztZEaVI9iPWvyS0N1jvGgK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, hackers! I've tried sending this patch to community before, let me try it second time. Patch is revised and improved compared to previous version. This patch adds TOAST support for system tables pg_class, pg_attribute and pg_largeobject_metadata, as they include ACL columns, which may be potentially large in size. Patch fixes possible pg_upgrade bug (problem with seeing a non-empty new cluster). During code developing it turned out that heap_inplace_update function is not suitable for use with TOAST, so its work could lead to wrong statistics update (for example, during VACUUM). This problem is fixed by adding new heap_inplace_update_prepare_tuple function -- we assume TOASTed attributes are never changed by in-place update, and just replace them with old values. I also added pg_catalog_toast1 test that does check for "invalid tupple length" error when creating index with toasted pg_class. Test grants and drops roles on certain table many times to make ACL column long and then creates index on this table. I wonder what other bugs can happen there, but if anyone can give me a hint, I'll try to fix them. Anyway, in PostgresPro we didn't encounter any problems with this feature. First attempt here: https://www.postgresql.org/message-id/1643112264.186902312@f325.i.mail.ru This time I'll do it better -- Sofia Kopikova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------T7ztZEaVI9iPWvyS0N1jvGgK Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-TOAST-support-for-several-system-tables.patch" Content-Disposition: attachment; filename="0001-Add-TOAST-support-for-several-system-tables.patch" Content-Transfer-Encoding: base64 RnJvbSA2ODEyZTZjZDQ3YzAzZTIyZjk1MzczMmEyNDIyMzQxMWQ4MGQ2Yzk1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTb2ZpYSBLb3Bpa292YSA8cy5rb3Bpa292YUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNyBKdWwgMjAyMyAxMTo1NjoyNSArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIEFkZCBUT0FTVCBzdXBwb3J0IGZvciBzZXZlcmFsIHN5c3RlbSB0YWJs ZXMKCkFDTCBsaXN0cyBtYXkgaGF2ZSBsYXJnZSBzaXplLiBVc2luZyBUT0FTVCBmb3Igc3lz dGVtIHRhYmxlcyBwZ19jbGFzcywKcGdfYXR0cmlidXRlIGFuZCBwZ19sYXJnZW9iamVjdF9t ZXRhZGF0YSB3aXRoIGFjbGl0ZW1bXSBjb2x1bW5zLgoKSW4gOTZjZGVhZTA3Zjkgc29tZSBz eXN0ZW0gY2F0YWxvZ3Mgd2VyZSBleGNsdWRlZCBmcm9tIGFkZGluZyBUT0FUUyB0bwp0aGVt IGR1ZSB0byBzZXZlcmFsIHBvc3NpYmxlIGJ1Z3MuIEhlcmUgYnVnIHdpdGggcGdfdXBncmFk ZSBzZWVpbmcgYQpub24tZW1wdHkgbmV3IGNsdXN0ZXIgaXMgZml4ZWQuIEEgd29ya2Fyb3Vu ZCBpcyBhZGRlZCB0bwpoZWFwX2lucGxhY2VfdXBkYXRlIGZ1bmN0aW9uIGZvciBpdHMgY29y cmVjdCB3b3JrIHdpdGggVE9BU1QuIEFsc28gdGVzdApmb3IgImludmFsaWcgdHVwcGxlIGxl bmd0aCIgZXJyb3IgY2FzZSB3aGVuIGNyZWF0aW5nIGluZGV4IHdpdGggdG9hc3RlZApwZ19j bGFzcyBpcyBhZGRlZC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICAgICAgfCA2NCArKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL2NhdGFsb2cuYyAgICAgICAgICAgICAgICAgfCAgMiArCiBzcmMvYmluL3BnX3VwZ3Jh ZGUvY2hlY2suYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19hdHRyaWJ1dGUuaCAgICAgICAgICAgIHwgIDIgKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jbGFzcy5oICAgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19sYXJnZW9iamVjdF9tZXRhZGF0YS5oIHwgIDIgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQgICAgIHwgMzAgKysrKy0tLS0tCiAuLi4vcmVn cmVzcy9leHBlY3RlZC9wZ19jYXRhbG9nX3RvYXN0MS5vdXQgICAgfCAyNSArKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgIDMgKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19zYW5pdHkuc3FsICAgICAgICAgIHwgMTAgKy0t CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19jYXRhbG9nX3RvYXN0MS5zcWwgICAgfCAyMCAr KysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDEzNCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bn X2NhdGFsb2dfdG9hc3QxLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BnX2NhdGFsb2dfdG9hc3QxLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggN2VkNzJhYmU1OTcuLmUwNDNhOGU0NDAxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtNTg2MCw2ICs1ODYwLDUzIEBAIGhlYXBfYWJvcnRfc3BlY3VsYXRp dmUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCkKIAlwZ3N0YXRfY291bnRf aGVhcF9kZWxldGUocmVsYXRpb24pOwogfQogCisvKgorICogUHJlcGFyZSB0dXBsZSBmb3Ig aW5wbGFjZSB1cGRhdGUuICBUT0FTVGVkIGF0dHJpYnV0ZXMgY2FuJ3QgYmUgbW9kaWZpZWQK KyAqIGJ5IGluLXBsYWNlIHVwZ3JhZGUuICBTaW11bHRhbmVvdXNseSwgbmV3IHR1cGxlIGlz IGZsYXR0ZW4uICBTbywgd2UganVzdAorICogcmVwbGFjZSBUT0FTVGVkIGF0dHJpYnV0ZXMg d2l0aCB0aGVpciB2YWx1ZXMgb2Ygb2xkIHR1cGxlLgorICovCitzdGF0aWMgSGVhcFR1cGxl CitoZWFwX2lucGxhY2VfdXBkYXRlX3ByZXBhcmVfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24s CisJCQkJCQkJCSAgSGVhcFR1cGxlIG9sZHR1cCwKKwkJCQkJCQkJICBIZWFwVHVwbGUgbmV3 dHVwKQoreworCVR1cGxlRGVzYwlkZXNjID0gcmVsYXRpb24tPnJkX2F0dDsKKwlIZWFwVHVw bGUJcmVzdWx0OworCURhdHVtCSAgICpvbGR2YWxzLAorCQkJICAgKm5ld3ZhbHM7CisJYm9v bAkgICAqb2xkbnVsbHMsCisJCQkgICAqbmV3bnVsbHM7CisJaW50CQkJaSwKKwkJCQluYXR0 cyA9IGRlc2MtPm5hdHRzOworCisJb2xkdmFscyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9m KERhdHVtKSAqIG5hdHRzKTsKKwluZXd2YWxzID0gKERhdHVtICopIHBhbGxvYyhzaXplb2Yo RGF0dW0pICogbmF0dHMpOworCW9sZG51bGxzID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihi b29sKSAqIG5hdHRzKTsKKwluZXdudWxscyA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9v bCkgKiBuYXR0cyk7CisKKwloZWFwX2RlZm9ybV90dXBsZShvbGR0dXAsIGRlc2MsIG9sZHZh bHMsIG9sZG51bGxzKTsKKwloZWFwX2RlZm9ybV90dXBsZShuZXd0dXAsIGRlc2MsIG5ld3Zh bHMsIG5ld251bGxzKTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gJmRlc2MtPmF0dHJzW2ldOworCisJCWlmIChhdHQt PmF0dGxlbiA9PSAtMSAmJgorCQkJIW9sZG51bGxzW2ldICYmCisJCQlWQVJBVFRfSVNfRVhU RU5ERUQob2xkdmFsc1tpXSkpCisJCXsKKwkJCUFzc2VydCghbmV3bnVsbHNbaV0pOworCQkJ bmV3dmFsc1tpXSA9IG9sZHZhbHNbaV07CisJCX0KKwl9CisKKwlyZXN1bHQgPSBoZWFwX2Zv cm1fdHVwbGUoZGVzYywgbmV3dmFscywgbmV3bnVsbHMpOworCisJcmVzdWx0LT50X3NlbGYg PSBuZXd0dXAtPnRfc2VsZjsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBoZWFw X2lucGxhY2VfdXBkYXRlIC0gdXBkYXRlIGEgdHVwbGUgImluIHBsYWNlIiAoaWUsIG92ZXJ3 cml0ZSBpdCkKICAqCkBAIC01ODg5LDYgKzU5MzYsOCBAQCBoZWFwX2lucGxhY2VfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUpCiAJSGVhcFR1cGxlSGVhZGVy IGh0dXA7CiAJdWludDMyCQlvbGRsZW47CiAJdWludDMyCQluZXdsZW47CisJSGVhcFR1cGxl RGF0YSBvbGR0dXA7CisJSGVhcFR1cGxlCW5ld3R1cDsKIAogCS8qCiAJICogRm9yIG5vdywg d2UgZG9uJ3QgYWxsb3cgcGFyYWxsZWwgdXBkYXRlcy4gIFVubGlrZSBhIHJlZ3VsYXIgdXBk YXRlLApAQCAtNTkxNCwxNiArNTk2MywyMyBAQCBoZWFwX2lucGxhY2VfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUpCiAKIAlodHVwID0gKEhlYXBUdXBsZUhl YWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwogCisJb2xkdHVwLnRfdGFibGVPaWQgPSBS ZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwlvbGR0dXAudF9kYXRhID0gaHR1cDsKKwlv bGR0dXAudF9sZW4gPSBJdGVtSWRHZXRMZW5ndGgobHApOworCW9sZHR1cC50X3NlbGYgPSB0 dXBsZS0+dF9zZWxmOworCisJbmV3dHVwID0gaGVhcF9pbnBsYWNlX3VwZGF0ZV9wcmVwYXJl X3R1cGxlKHJlbGF0aW9uLCAmb2xkdHVwLCB0dXBsZSk7CisKIAlvbGRsZW4gPSBJdGVtSWRH ZXRMZW5ndGgobHApIC0gaHR1cC0+dF9ob2ZmOwotCW5ld2xlbiA9IHR1cGxlLT50X2xlbiAt IHR1cGxlLT50X2RhdGEtPnRfaG9mZjsKLQlpZiAob2xkbGVuICE9IG5ld2xlbiB8fCBodHVw LT50X2hvZmYgIT0gdHVwbGUtPnRfZGF0YS0+dF9ob2ZmKQorCW5ld2xlbiA9IG5ld3R1cC0+ dF9sZW4gLSBuZXd0dXAtPnRfZGF0YS0+dF9ob2ZmOworCWlmIChvbGRsZW4gIT0gbmV3bGVu IHx8IGh0dXAtPnRfaG9mZiAhPSBuZXd0dXAtPnRfZGF0YS0+dF9ob2ZmKQogCQllbG9nKEVS Uk9SLCAid3JvbmcgdHVwbGUgbGVuZ3RoIik7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBm cm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBsb2dnZWQgKi8KIAlTVEFSVF9DUklUX1NFQ1RJ T04oKTsKIAogCW1lbWNweSgoY2hhciAqKSBodHVwICsgaHR1cC0+dF9ob2ZmLAotCQkgICAo Y2hhciAqKSB0dXBsZS0+dF9kYXRhICsgdHVwbGUtPnRfZGF0YS0+dF9ob2ZmLAorCQkgICAo Y2hhciAqKSBuZXd0dXAtPnRfZGF0YSArIG5ld3R1cC0+dF9kYXRhLT50X2hvZmYsCiAJCSAg IG5ld2xlbik7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKQEAgLTU5MzQsNyArNTk5 MCw3IEBAIGhlYXBfaW5wbGFjZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBs ZSB0dXBsZSkKIAkJeGxfaGVhcF9pbnBsYWNlIHhscmVjOwogCQlYTG9nUmVjUHRyCXJlY3B0 cjsKIAotCQl4bHJlYy5vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVw bGUtPnRfc2VsZik7CisJCXhscmVjLm9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZuZXd0dXAtPnRfc2VsZik7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCVhMb2dS ZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwSW5wbGFjZSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvY2F0YWxvZy5jCmluZGV4IDFiZjZjNTYzM2NkLi4yZjQ2M2Y5MjE2ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9jYXRhbG9nLmMKQEAgLTI5Nyw2ICsyOTcsOCBAQCBJc1NoYXJlZFJlbGF0aW9u KE9pZCByZWxhdGlvbklkKQogCQlyZWxhdGlvbklkID09IFBnU2hzZWNsYWJlbFRvYXN0SW5k ZXggfHwKIAkJcmVsYXRpb25JZCA9PSBQZ1N1YnNjcmlwdGlvblRvYXN0VGFibGUgfHwKIAkJ cmVsYXRpb25JZCA9PSBQZ1N1YnNjcmlwdGlvblRvYXN0SW5kZXggfHwKKwkJcmVsYXRpb25J ZCA9PSBQZ0RhdGFiYXNlVG9hc3RUYWJsZSB8fAorCQlyZWxhdGlvbklkID09IFBnRGF0YWJh c2VUb2FzdEluZGV4IHx8CiAJCXJlbGF0aW9uSWQgPT0gUGdUYWJsZXNwYWNlVG9hc3RUYWJs ZSB8fAogCQlyZWxhdGlvbklkID09IFBnVGFibGVzcGFjZVRvYXN0SW5kZXgpCiAJCXJldHVy biB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMgYi9zcmMv YmluL3BnX3VwZ3JhZGUvY2hlY2suYwppbmRleCA2NDAyNGUzYjllYy4uZTk5OTQzNjc5OTUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9jaGVjay5jCisrKyBiL3NyYy9iaW4v cGdfdXBncmFkZS9jaGVjay5jCkBAIC0zNTgsNyArMzU4LDggQEAgY2hlY2tfbmV3X2NsdXN0 ZXJfaXNfZW1wdHkodm9pZCkKIAkJCSByZWxudW0rKykKIAkJewogCQkJLyogcGdfbGFyZ2Vv YmplY3QgYW5kIGl0cyBpbmRleCBzaG91bGQgYmUgc2tpcHBlZCAqLwotCQkJaWYgKHN0cmNt cChyZWxfYXJyLT5yZWxzW3JlbG51bV0ubnNwbmFtZSwgInBnX2NhdGFsb2ciKSAhPSAwKQor CQkJaWYgKHN0cmNtcChyZWxfYXJyLT5yZWxzW3JlbG51bV0ubnNwbmFtZSwgInBnX2NhdGFs b2ciKSAhPSAwICYmCisJCQkJc3RyY21wKHJlbF9hcnItPnJlbHNbcmVsbnVtXS5uc3BuYW1l LCAicGdfdG9hc3QiKSAhPSAwKQogCQkJCXBnX2ZhdGFsKCJOZXcgY2x1c3RlciBkYXRhYmFz ZSBcIiVzXCIgaXMgbm90IGVtcHR5OiBmb3VuZCByZWxhdGlvbiBcIiVzLiVzXCIiLAogCQkJ CQkJIG5ld19jbHVzdGVyLmRiYXJyLmRic1tkYm51bV0uZGJfbmFtZSwKIAkJCQkJCSByZWxf YXJyLT5yZWxzW3JlbG51bV0ubnNwbmFtZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0 ZS5oCmluZGV4IGYwMGRmNDg4Y2U3Li5lOTMyY2I4MjgzNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2F0dHJpYnV0ZS5oCkBAIC0yMDgsNiArMjA4LDggQEAgQ0FUQUxPRyhwZ19hdHRyaWJ1 dGUsMTI0OSxBdHRyaWJ1dGVSZWxhdGlvbklkKSBCS0lfQk9PVFNUUkFQIEJLSV9ST1dUWVBF X09JRCg3NSwKICAqLwogdHlwZWRlZiBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKkZvcm1fcGdf YXR0cmlidXRlOwogCitERUNMQVJFX1RPQVNUKHBnX2F0dHJpYnV0ZSwgOTAwMSwgOTAwMik7 CisKIERFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX2F0dHJpYnV0ZV9yZWxpZF9hdHRuYW1faW5k ZXgsIDI2NTgsIEF0dHJpYnV0ZVJlbGlkTmFtZUluZGV4SWQsIG9uIHBnX2F0dHJpYnV0ZSB1 c2luZyBidHJlZShhdHRyZWxpZCBvaWRfb3BzLCBhdHRuYW1lIG5hbWVfb3BzKSk7CiBERUNM QVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX2F0dHJpYnV0ZV9yZWxpZF9hdHRudW1faW5kZXgs IDI2NTksIEF0dHJpYnV0ZVJlbGlkTnVtSW5kZXhJZCwgb24gcGdfYXR0cmlidXRlIHVzaW5n IGJ0cmVlKGF0dHJlbGlkIG9pZF9vcHMsIGF0dG51bSBpbnQyX29wcykpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NsYXNzLmgKaW5kZXggMmQxYmI3YWYzYTkuLjliZGIwNThmZTc4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xNTIsNiArMTUyLDggQEAgQ0FUQUxPRyhwZ19jbGFz cywxMjU5LFJlbGF0aW9uUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9P SUQoODMsUmVsYXQKICAqLwogdHlwZWRlZiBGb3JtRGF0YV9wZ19jbGFzcyAqRm9ybV9wZ19j bGFzczsKIAorREVDTEFSRV9UT0FTVChwZ19jbGFzcywgOTAwMywgOTAwNCk7CisKIERFQ0xB UkVfVU5JUVVFX0lOREVYX1BLRVkocGdfY2xhc3Nfb2lkX2luZGV4LCAyNjYyLCBDbGFzc09p ZEluZGV4SWQsIG9uIHBnX2NsYXNzIHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CiBERUNM QVJFX1VOSVFVRV9JTkRFWChwZ19jbGFzc19yZWxuYW1lX25zcF9pbmRleCwgMjY2MywgQ2xh c3NOYW1lTnNwSW5kZXhJZCwgb24gcGdfY2xhc3MgdXNpbmcgYnRyZWUocmVsbmFtZSBuYW1l X29wcywgcmVsbmFtZXNwYWNlIG9pZF9vcHMpKTsKIERFQ0xBUkVfSU5ERVgocGdfY2xhc3Nf dGJsc3BjX3JlbGZpbGVub2RlX2luZGV4LCAzNDU1LCBDbGFzc1RibHNwY1JlbGZpbGVub2Rl SW5kZXhJZCwgb24gcGdfY2xhc3MgdXNpbmcgYnRyZWUocmVsdGFibGVzcGFjZSBvaWRfb3Bz LCByZWxmaWxlbm9kZSBvaWRfb3BzKSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2xhcmdlb2JqZWN0X21ldGFkYXRhLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2xhcmdlb2JqZWN0X21ldGFkYXRhLmgKaW5kZXggODBkYjkyNjA3OWYuLmMwYjk5ZjViMjk1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2xhcmdlb2JqZWN0X21ldGFk YXRhLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9tZXRhZGF0 YS5oCkBAIC00Niw2ICs0Niw4IEBAIENBVEFMT0cocGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEs Mjk5NSxMYXJnZU9iamVjdE1ldGFkYXRhUmVsYXRpb25JZCkKICAqLwogdHlwZWRlZiBGb3Jt RGF0YV9wZ19sYXJnZW9iamVjdF9tZXRhZGF0YSAqRm9ybV9wZ19sYXJnZW9iamVjdF9tZXRh ZGF0YTsKIAorREVDTEFSRV9UT0FTVChwZ19sYXJnZW9iamVjdF9tZXRhZGF0YSwgOTA0MCwg OTA0MSk7CisKIERFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfbGFyZ2VvYmplY3RfbWV0 YWRhdGFfb2lkX2luZGV4LCAyOTk2LCBMYXJnZU9iamVjdE1ldGFkYXRhT2lkSW5kZXhJZCwg b24gcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsK IAogI2VuZGlmCQkJCQkJCS8qIFBHX0xBUkdFT0JKRUNUX01FVEFEQVRBX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKaW5kZXggYTU3ZmQxNDJh OTQuLjIyNzVjNDhhZDNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L21pc2Nfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nf c2FuaXR5Lm91dApAQCAtMzUsMTEgKzM1LDExIEBAIFdIRVJFIHJlZmNsYXNzaWQgPSAwIE9S IHJlZm9iamlkID0gMCBPUgogLS0gTG9vayBmb3Igc3lzdGVtIHRhYmxlcyB3aXRoIHZhcmxl bmEgY29sdW1ucyBidXQgbm8gdG9hc3QgdGFibGUuIEFsbAogLS0gc3lzdGVtIHRhYmxlcyB3 aXRoIHRvYXN0YWJsZSBjb2x1bW5zIHNob3VsZCBoYXZlIHRvYXN0IHRhYmxlcywgd2l0aAog LS0gdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgotLS0gMS4gcGdfY2xhc3MsIHBnX2F0dHJp YnV0ZSwgYW5kIHBnX2luZGV4LCBkdWUgdG8gZmVhciBvZiByZWN1cnNpdmUKLS0tIGRlcGVu ZGVuY2llcyBhcyB0b2FzdCB0YWJsZXMgZGVwZW5kIG9uIHRoZW0uCi0tLSAyLiBwZ19sYXJn ZW9iamVjdCBhbmQgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEuICBMYXJnZSBvYmplY3QgY2F0 YWxvZ3MKLS0tIGFuZCB0b2FzdCB0YWJsZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbmQg bGFyZ2Ugb2JqZWN0IGRhdGEgaXMgaGFuZGxlZAotLS0gYXMgdXNlciBkYXRhIGJ5IHBnX3Vw Z3JhZGUsIHdoaWNoIHdvdWxkIGNhdXNlIGZhaWx1cmVzLgorLS0gMS4gcGdfaW5kZXguCist LSAyLiBwZ19sYXJnZW9iamVjdC4KKy0tIFRoZXNlIGFuZCBzb21lIG90aGVyIHRhYmxlcyB3 ZXJlIGV4Y2x1ZGVkIGluIFBvc3RncmVTUUwgZm9yIHZhcmlvdXMgcmVhc29ucywKKy0tIGJ1 dCBpbiBQb3N0Z3JlcyBQcm8gRW50ZXJwcmlzZSB3ZSBhZGRlZCB0b2FzdCB0YWJsZXMgZm9y IHN5c3RlbSB0YWJsZXMgd2l0aAorLS0gQUNMIGNvbHVtbnMuCiBTRUxFQ1QgcmVsbmFtZSwg YXR0bmFtZSwgYXR0dHlwaWQ6OnJlZ3R5cGUKIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2F0 dHJpYnV0ZSBhIE9OIGMub2lkID0gYXR0cmVsaWQKIFdIRVJFIGMub2lkIDwgMTYzODQgQU5E CkBAIC00NywyMCArNDcsMTIgQEAgV0hFUkUgYy5vaWQgPCAxNjM4NCBBTkQKICAgICAgIHJl bGtpbmQgPSAncicgQU5ECiAgICAgICBhdHRzdG9yYWdlICE9ICdwJwogT1JERVIgQlkgMSwg MjsKLSAgICAgICAgIHJlbG5hbWUgICAgICAgICB8ICAgIGF0dG5hbWUgICAgfCAgIGF0dHR5 cGlkICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLQotIHBnX2F0dHJpYnV0ZSAgICAgICAgICAgIHwgYXR0YWNsICAgICAgICB8 IGFjbGl0ZW1bXQotIHBnX2F0dHJpYnV0ZSAgICAgICAgICAgIHwgYXR0ZmR3b3B0aW9ucyB8 IHRleHRbXQotIHBnX2F0dHJpYnV0ZSAgICAgICAgICAgIHwgYXR0bWlzc2luZ3ZhbCB8IGFu eWFycmF5Ci0gcGdfYXR0cmlidXRlICAgICAgICAgICAgfCBhdHRvcHRpb25zICAgIHwgdGV4 dFtdCi0gcGdfY2xhc3MgICAgICAgICAgICAgICAgfCByZWxhY2wgICAgICAgIHwgYWNsaXRl bVtdCi0gcGdfY2xhc3MgICAgICAgICAgICAgICAgfCByZWxvcHRpb25zICAgIHwgdGV4dFtd Ci0gcGdfY2xhc3MgICAgICAgICAgICAgICAgfCByZWxwYXJ0Ym91bmQgIHwgcGdfbm9kZV90 cmVlCi0gcGdfaW5kZXggICAgICAgICAgICAgICAgfCBpbmRleHBycyAgICAgIHwgcGdfbm9k ZV90cmVlCi0gcGdfaW5kZXggICAgICAgICAgICAgICAgfCBpbmRwcmVkICAgICAgIHwgcGdf bm9kZV90cmVlCi0gcGdfbGFyZ2VvYmplY3QgICAgICAgICAgfCBkYXRhICAgICAgICAgIHwg Ynl0ZWEKLSBwZ19sYXJnZW9iamVjdF9tZXRhZGF0YSB8IGxvbWFjbCAgICAgICAgfCBhY2xp dGVtW10KLSgxMSByb3dzKQorICAgIHJlbG5hbWUgICAgIHwgYXR0bmFtZSAgfCAgIGF0dHR5 cGlkICAgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBw Z19pbmRleCAgICAgICB8IGluZGV4cHJzIHwgcGdfbm9kZV90cmVlCisgcGdfaW5kZXggICAg ICAgfCBpbmRwcmVkICB8IHBnX25vZGVfdHJlZQorIHBnX2xhcmdlb2JqZWN0IHwgZGF0YSAg ICAgfCBieXRlYQorKDMgcm93cykKIAogLS0gc3lzdGVtIGNhdGFsb2dzIHdpdGhvdXQgcHJp bWFyeSBrZXlzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w Z19jYXRhbG9nX3RvYXN0MS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BnX2Nh dGFsb2dfdG9hc3QxLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMTkxODM1MWZlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BnX2NhdGFsb2dfdG9hc3QxLm91dApAQCAtMCwwICsxLDI1IEBACitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiB0b2FzdF9hY2woKQorUkVUVVJOUyBCT09MRUFOIEFTICQk CitERUNMQVJFCisJSSBJTlRFR0VSIDo9MDsKK0JFR0lOCisJU0VUIExPQ0FMIENMSUVOVF9N SU5fTUVTU0FHRVM9V0FSTklORzsKKwlFWEVDVVRFICdEUk9QIFRBQkxFIElGIEVYSVNUUyB0 ZXN0MjUxMCc7CisJRVhFQ1VURSAnQ1JFQVRFIFRBQkxFIHRlc3QyNTEwIChhIElOVCknOwor CUZPUiBJIElOIDEuLjQwOTYgTE9PUAorCQlFWEVDVVRFICdEUk9QIFJPTEUgSUYgRVhJU1RT IHJvbGUnIHx8IEk7CisJCUVYRUNVVEUgJ0NSRUFURSBST0xFIHJvbGUnIHx8IEk7CisJCUVY RUNVVEUgJ0dSQU5UIEFMTCBPTiB0ZXN0MjUxMCBUTyByb2xlJyB8fCBJOworCUVORCBMT09Q OworCVJFU0VUIENMSUVOVF9NSU5fTUVTU0FHRVM7CisJUkVUVVJOIFRSVUU7CitFTkQ7Cisk JAorTEFOR1VBR0UgUExQR1NRTDsKK1NFTEVDVCB0b2FzdF9hY2woKTsKKyB0b2FzdF9hY2wg CistLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQ1JFQVRFIElOREVYIE9OIHRlc3QyNTEw IFVTSU5HIEJUUkVFKGEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXgg NGRmOWQ4NTAzYjkuLjA2NjIwZDc5ZWM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKQEAgLTEzMiwzICsxMzIsNiBAQCB0ZXN0OiBmYXN0X2RlZmF1bHQKICMgcnVuIHRh Ymxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3Bh Y2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgog dGVzdDogdGFibGVzcGFjZQorCisjY2hlY2sgZm9yICJpbnZhbGlnIHR1cHBsZSBsZW5ndGgi IGVycm9yIHdoZW4gY3JlYXRpbmcgaW5kZXggd2l0aCB0b2FzdGVkIHBnX2NsYXNzCit0ZXN0 OiBwZ19jYXRhbG9nX3RvYXN0MQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv bWlzY19zYW5pdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19zYW5pdHkuc3Fs CmluZGV4IDJjMGY4N2E2NTFmLi42NThmMTdmZWY5OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvbWlzY19zYW5pdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L21pc2Nfc2FuaXR5LnNxbApAQCAtMzgsMTEgKzM4LDExIEBAIFdIRVJFIHJlZmNsYXNzaWQg PSAwIE9SIHJlZm9iamlkID0gMCBPUgogLS0gTG9vayBmb3Igc3lzdGVtIHRhYmxlcyB3aXRo IHZhcmxlbmEgY29sdW1ucyBidXQgbm8gdG9hc3QgdGFibGUuIEFsbAogLS0gc3lzdGVtIHRh YmxlcyB3aXRoIHRvYXN0YWJsZSBjb2x1bW5zIHNob3VsZCBoYXZlIHRvYXN0IHRhYmxlcywg d2l0aAogLS0gdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgotLS0gMS4gcGdfY2xhc3MsIHBn X2F0dHJpYnV0ZSwgYW5kIHBnX2luZGV4LCBkdWUgdG8gZmVhciBvZiByZWN1cnNpdmUKLS0t IGRlcGVuZGVuY2llcyBhcyB0b2FzdCB0YWJsZXMgZGVwZW5kIG9uIHRoZW0uCi0tLSAyLiBw Z19sYXJnZW9iamVjdCBhbmQgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEuICBMYXJnZSBvYmpl Y3QgY2F0YWxvZ3MKLS0tIGFuZCB0b2FzdCB0YWJsZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2 ZSBhbmQgbGFyZ2Ugb2JqZWN0IGRhdGEgaXMgaGFuZGxlZAotLS0gYXMgdXNlciBkYXRhIGJ5 IHBnX3VwZ3JhZGUsIHdoaWNoIHdvdWxkIGNhdXNlIGZhaWx1cmVzLgorLS0gMS4gcGdfaW5k ZXguCistLSAyLiBwZ19sYXJnZW9iamVjdC4KKy0tIFRoZXNlIGFuZCBzb21lIG90aGVyIHRh YmxlcyB3ZXJlIGV4Y2x1ZGVkIGluIFBvc3RncmVTUUwgZm9yIHZhcmlvdXMgcmVhc29ucywK Ky0tIGJ1dCBpbiBQb3N0Z3JlcyBQcm8gRW50ZXJwcmlzZSB3ZSBhZGRlZCB0b2FzdCB0YWJs ZXMgZm9yIHN5c3RlbSB0YWJsZXMgd2l0aAorLS0gQUNMIGNvbHVtbnMuCiAKIFNFTEVDVCBy ZWxuYW1lLCBhdHRuYW1lLCBhdHR0eXBpZDo6cmVndHlwZQogRlJPTSBwZ19jbGFzcyBjIEpP SU4gcGdfYXR0cmlidXRlIGEgT04gYy5vaWQgPSBhdHRyZWxpZApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGdfY2F0YWxvZ190b2FzdDEuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGdfY2F0YWxvZ190b2FzdDEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5kMzMxMjIyMTRmZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BnX2NhdGFsb2dfdG9hc3QxLnNxbApAQCAtMCwwICsxLDIwIEBA CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0b2FzdF9hY2woKQorUkVUVVJOUyBCT09M RUFOIEFTICQkCitERUNMQVJFCisJSSBJTlRFR0VSIDo9MDsKK0JFR0lOCisJU0VUIExPQ0FM IENMSUVOVF9NSU5fTUVTU0FHRVM9V0FSTklORzsKKwlFWEVDVVRFICdEUk9QIFRBQkxFIElG IEVYSVNUUyB0ZXN0MjUxMCc7CisJRVhFQ1VURSAnQ1JFQVRFIFRBQkxFIHRlc3QyNTEwIChh IElOVCknOworCUZPUiBJIElOIDEuLjQwOTYgTE9PUAorCQlFWEVDVVRFICdEUk9QIFJPTEUg SUYgRVhJU1RTIHJvbGUnIHx8IEk7CisJCUVYRUNVVEUgJ0NSRUFURSBST0xFIHJvbGUnIHx8 IEk7CisJCUVYRUNVVEUgJ0dSQU5UIEFMTCBPTiB0ZXN0MjUxMCBUTyByb2xlJyB8fCBJOwor CUVORCBMT09QOworCVJFU0VUIENMSUVOVF9NSU5fTUVTU0FHRVM7CisJUkVUVVJOIFRSVUU7 CitFTkQ7CiskJAorTEFOR1VBR0UgUExQR1NRTDsKK1NFTEVDVCB0b2FzdF9hY2woKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0MjUxMCBVU0lORyBCVFJFRShhKTsKLS0gCjIuMjAuMQoK --------------T7ztZEaVI9iPWvyS0N1jvGgK--