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 1v8zmr-008JHh-IB for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Oct 2025 11:35:20 +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 1v8zmq-00681u-GG for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Oct 2025 11:35:19 +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.94.2) (envelope-from ) id 1v8zmq-00681m-3L for pgsql-hackers@lists.postgresql.org; Wed, 15 Oct 2025 11:35:19 +0000 Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v8zmm-002Jal-1g for pgsql-hackers@lists.postgresql.org; Wed, 15 Oct 2025 11:35:18 +0000 Received: by mail-ua1-x92f.google.com with SMTP id a1e0cc1a2514c-930ff50d181so44626241.1 for ; Wed, 15 Oct 2025 04:35:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760528115; x=1761132915; 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=QR8MUWzn4ImvAdFBS2vHzU1VD7/nUGYUMMXKT+BLWTs=; b=GY7uDLQAdvuFIUyULGy4EEH8Qa1T9Aq0lw6A4Nn8H+cZzIFuBFWG62NEfVbhIy4N3t XL6QYsuL6Q9sut/4xaYBH841XRXy2b00lTqzOH+GE6r+/w5YjfFzLj7okXt4iqnvShp+ YqofqVOeO9AYBRjteiXx8MEk8dxd2sSX7kT6KO1PC/McpeNvZxOytKPWkWLrzx2nQxJu nJRB3QxCXImwP9jH1r1qsbUeGlAbivs2RdRwssfYYR4A0Gdd60FwZI7POZLj1gfNNtMJ s/fk7ubmQJg+BRZLeKqGfikEmTbgGfBnAU4xvc4+62szkhZVwuHGwGkcyF0yNhyr0USy hfuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760528115; x=1761132915; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=QR8MUWzn4ImvAdFBS2vHzU1VD7/nUGYUMMXKT+BLWTs=; b=rmc7/HDHNEl3jKRdiENsvDCuNx1prXglDh5kGxHDe3J5iB7jeZ74l5sIySbvs2w9Sa UQsoiwRpolii9yoMRJFmTQq4ng5DzdbE+iWLW90PK7ihg9cza+Dvd99b/EUVZfYZgo8y kz+cr4EdaczrlXh1tY5tADsi8PJsCc1FZ/kORIr5UYY8TGVuRucxhaG3ajrQetJ5XI9R XccGeSlYix5EV8H0E+FCh0FY06abUgx/IZUT+S1OEj3l6nFtzdK0tFP2vMSfNAXYdQzO I6G3cbWrWhlNWAXvwJgMV9Y6m9QOgOjot81rNDUfr8fXjupKVgdrtq+NZEO6I4V7ZOc4 zMtA== X-Gm-Message-State: AOJu0YzzhByaqiDoZy8SOX+JgxT8QZD5Khl2hRSTjl9QQeeEfk6XOjPT WO4RTRfd3Rd12I/pFGDlZZi/3nrNa3M5FSKzpyKZ+RzTdvNReoLzys/XT4gfJD2oAD/+qi6pymB zz2MPjOUcf0JIoN0iujCdCBeU8jgwJ2jf7f6eLE7bQQ== X-Gm-Gg: ASbGncuZ2Oa4B2K2PMgqEUyFLfHdHaNlCgJrHAjMHFm/mfmolddZU6Dkd561UET7/KU +7Jmcod7/sSFe62kx7DjyQdJQOceE2APThFcpGWHZKwkYE77gQj0GJZwKEpi76SJazQTGYkksWM zeX/snP7mJCpFMoHfMfrwlxv94mUSUp45rUbkdFkDXBEm8zMv5jdgdCRdzhequy13i5Q7V4JVRA Rl1MItFhdmh5jBuPIRDA1+ZF2ifoFQZZMFwMA/bpu5g3CcfEsKderZH4L93jnYj2fcYdu5SIqhh EU8atMbRlZENFHsffL4IbaTaPi4oQH70ccsXvfQmdJ2jzDZ1+z0UbC9NLCj1xyXEIC0N9VbqKQx nVhEc7tpSPYBheDDTlzoHTKf4cJam54lcuhaLNJFQ2EDedrVlAbTnhg== X-Google-Smtp-Source: AGHT+IGlD4LpeNRr1Ei/R3pSlJb2aq9CpVQz6HLFOLKRZSy8C8ZGy8vMQwdQxmil/GKuRry+/tk52TtCuRt/0A2RZV0= X-Received: by 2002:a05:6102:4bc8:b0:5d7:bd54:974c with SMTP id ada2fe7eead31-5d7bd5497f9mr1044467137.26.1760528114834; Wed, 15 Oct 2025 04:35:14 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> In-Reply-To: From: jian he Date: Wed, 15 Oct 2025 19:34:37 +0800 X-Gm-Features: AS18NWB95H7IrKAo6fg6zjsKl4brmVg6voeYaGnVf6PD92X1Ni8m65qRGNkNWcY Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e70498064130e4b4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e70498064130e4b4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable hi. please check the attach doc refactor for v62-0001. if (found_whole_row && attribute->attgenerated !=3D '\0') ereport(ERROR, errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot convert whole-row table reference"), errdetail("Generation expression for column \"%s\" contains a whole-row reference to table \"%s\".", NameStr(attribute->attname), RelationGetRelationName(parent_rel))); here ereport should be elog(ERROR...). since this error should be unreachable. see check_nested_generated, cookDef= ault. /* * For the moment we have to reject whole-row variables (as for LIK= E * and inheritances). */ if (found_whole_row) elog(ERROR, "Constraint \"%s\" contains a whole-row reference to table \"%s\".", ccname, RelationGetRelationName(parent_rel)); "table \"%s\".", we don't need that extra period. "(as for LIKE and inheritances)": I think you meant, =E2=80=9CCREATE TABLE LIKE and table inheritance reject whole-row check constraint, here we will do the same=E2=80=9D. maybe change to ""(as for CREATE TABLE LIKE and inheritances)". Overall, I found v62-0001 code makes sense to me. --000000000000e70498064130e4b4 Content-Type: application/octet-stream; name="v62-0001-doc-refactor-alter-table-merge-partitions-v62.no-cfbot" Content-Disposition: attachment; filename="v62-0001-doc-refactor-alter-table-merge-partitions-v62.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgrwy1cj0 RnJvbSA5ODUxZjVkMjg1MzU5MDdmNmFkZDhjMDJmMjVlNTEzYzYyMGRkYWNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTUgT2N0IDIwMjUgMTk6MjM6NTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 MiAxLzFdIGRvYyByZWZhY3RvciBhbHRlciB0YWJsZSBtZXJnZSBwYXJ0aXRpb25zIHY2MgoKZG9j IGNoYW5nZXMuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2M3M2ExNzQ2LTBjZDAt NmJkZC02YjIzLTNhZTBiN2MwYzU4MiU0MHBvc3RncmVzcHJvLnJ1Ci0tLQogZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sIHwgNzcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCAzMGRkNWVmODQ2Ni4uZjhkYzJhMTAyMDkgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTExNjYsMzIgKzExNjYsMzQgQEAgV0lUSCAo IE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGZvcm0gbWVyZ2VzIHNl dmVyYWwgcGFydGl0aW9ucyBvZiB0aGUgdGFyZ2V0IHRhYmxlIGludG8gYSBuZXcgcGFydGl0aW9u LgogICAgICAgSGFzaC1wYXJ0aXRpb25lZCB0YXJnZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4K KyAgICAgIE9ubHkgc2ltcGxlLCBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVy Z2VkLgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KQorICAgICAgY2FuIGhhdmUgdGhlIHNh bWUgbmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zCisgICAgICAoPGxpdGVyYWw+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl08L2xpdGVyYWw+KS4KKyAgICAgPC9wYXJhPgorCisgICAg IDxwYXJhPgogICAgICAgSWYgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlv biBpcyBub3QgaW4gdGhlCi0gICAgICBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAotICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+ IFssIC4uLl06CisgICAgICBsaXN0IG9mIG1lcmdlZCBwYXJ0aXRpb25zOgogICAgICAgPGl0ZW1p emVkbGlzdD4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAgRm9y IHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiB0aGUgcGFydGl0aW9ucwot ICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LAotICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQotICAgICAgICAgbXVzdCBiZSBhZGph Y2VudCBpbiBvcmRlciB0byBiZSBtZXJnZWQuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZQot ICAgICAgICAgcmFpc2VkLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmVkIHJhbmdlIHdpbGwgYmUgdGhl IG5ldyBwYXJ0aXRpb24gYm91bmQKLSAgICAgICAgIGZvciB0aGUgcGFydGl0aW9uIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAg ICAgICAgRm9yIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiBtZXJnZWQg cGFydGl0aW9ucworICAgICAgICAgbXVzdCBiZSBhZGphY2VudCBpbiBvcmRlciB0byBiZSBtZXJn ZWQuCisgICAgICAgICBUaGUgcGFydGl0aW9uIGJvdW5kcyBvZiBtZXJnZWQgcGFydGl0aW9ucyBh cmUgY29tYmluZWQgdG8gZm9ybSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LgogICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8bGlzdGl0 ZW0+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIGxpc3QtcGFydGl0aW9uZWQgdGFibGVz LCB0aGUgcGFydGl0aW9uIGJvdW5kcyBvZgotICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAotICAgICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCBb Li4uXQotICAgICAgICAgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhlIG5ldyBwYXJ0aXRpb24gYm91 bmQgZm9yCisgICAgICAgICBtZXJnZWQgcGFydGl0aW9ucyBhcmUgY29tYmluZWQgdG8gZm9ybSB0 aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKICAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgogICAgICAgICA8L3BhcmE+ CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgSWYgdGhl IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBw YXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8 L3JlcGxhY2VhYmxlPiwKLSAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgSWYgdGhlIDxsaXRlcmFs PkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBtZXJnZWQgcGFy dGl0aW9uczoKICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAg ICA8cGFyYT4KQEAgLTEyMDEsNDIgKzEyMDMsNDEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgPHBhcmE+Ci0g ICAgICAgICBUaGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb25zIGZvciBhbGwgcGFydGl0 aW9ucy0KLSAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTE8L3JlcGxhY2VhYmxlPiwKLSAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KLSAgICAgICAgIGNhbiBi ZSBhcmJpdHJhcnkuCisgICAgICAgICBUaGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb25z IGZvciBtZXJnZWQgcGFydGl0aW9ucyBjYW4gYmUgYXJiaXRyYXJ5LgogICAgICAgICA8L3BhcmE+ CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgVGhlIG5l dyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4KLSAgICAgIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRo ZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1wbGUsCi0gICAgICBub24tcGFydGl0aW9uZWQg cGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAg ICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBkaWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3 aWxsIGJlIGdlbmVyYXRlZC4KLSAgICAgIFRoZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlv bnMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCi0gICAgICBJdCBpcyB0 aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4g b24gdGhlCisgICAgICBBbGwgbWVyZ2VkIHBhcnRpdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIG93 bmVyLgorICAgICAgVGhlIG93bmVyIG9mIG1lcmdlZCBwYXJ0aXRpb25zIHdpbGwgYmUgdGhlIG93 bmVyIG9mIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25z aWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5BQ0w8L2Fjcm9ueW0+IG9uCiAgICAgICBuZXcgcGFy dGl0aW9uLgogICAgICA8L3BhcmE+CisKICAgICAgPHBhcmE+Ci0gICAgICBUaGUgaW5kZXhlcyBh bmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmluZyB0aGUgZGF0YQotICAg ICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KLSAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJl bid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCi0g ICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KLSAgICAg IFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0 aG9kLCBwZXJzaXN0ZW5jZQotICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVu dCB0YWJsZS4KKyAgICAgICA8Y29tbWFuZD5BTFRFUiBUQUJMRSBNRVJHRSBQQVJUSVRJT048L2Nv bW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZgorICAgICAgIGFzIHRoZSB0 ZW1wbGF0ZSB0byBjb25zdHJ1Y3QgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICAgVGhlIG5ldyBw YXJ0aXRpb24gd2lsbCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFjY2VzcyBtZXRob2QsIHBlcnNp c3RlbmNlCisgICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcnRpdGlvbmVkIHRh YmxlLgorCisgICAgICAgQ29uc3RyYWludHMsIGNvbHVtbiBkZWZhdWx0cywgY29sdW1uIGdlbmVy YXRpb24gZXhwcmVzc2lvbnMsIGlkZW50aXR5IGNvbHVtbnMsCisgICAgICAgaW5kZXhlcywgdHJp Z2dlcnMgYXJlIGNvcGllZCBmcm9tIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSB0byB0aGUgbmV3Cisg ICAgICAgcGFydGl0aW9uLiAgQnV0IGV4dGVuZGVkIHN0YXRpc3RpY3MsIHNlY3VyaXR5IHBvbGlj aWVzIGV0YyB3b24ndCBjb3BpZWQgZnJvbQorICAgICAgIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4K KyAgICAgICBJbmRleGVzIGFuZCBpZGVudGl0eSBjb2x1bW5zIGNvcGllZCBmcm9tIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZSB3aWxsIGJlCisgICAgICAgY3JlYXRlZCBhZnRlcndhcmQsIG9uY2UgdGhl IGRhdGEgaGFzIGJlZW4gbW92ZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KICAgICAgPC9wYXJh PgorCiAgICAgIDxwYXJhPgotICAgICAgV2hlbiBwYXJ0aXRpb25zIGFyZSBtZXJnZWQsIGFueSBp bmRpdmlkdWFsIG9iamVjdHMgYmVsb25naW5nIHRvIHRob3NlCi0gICAgICBwYXJ0aXRpb25zLCBz dWNoIGFzIGNvbnN0cmFpbnRzIG9yIHN0YXRpc3RpY3MsIHdpbGwgYmUgZHJvcHBlZC4gVGhpcyBv Y2N1cnMKLSAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9O UzwvY29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmIGFzIHRoZQotICAg ICAgdGVtcGxhdGUgdG8gZGVmaW5lIHRoZXNlIG9iamVjdHMuCi0gICAgIDwvcGFyYT4KLSAgICAg PHBhcmE+Ci0gICAgICBJZiBtZXJnZWQgcGFydGl0aW9ucyBoYXZlIHNvbWUgb2JqZWN0cyBkZXBl bmRlbnQgb24gdGhlbSwgdGhlIGNvbW1hbmQgY2FuCi0gICAgICBub3QgYmUgZG9uZSAoPGxpdGVy YWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90IHVzZWQsIGFuZCBhbiBlcnJvciB3aWxsCi0gICAg ICBiZSByZXR1cm5lZCkuCisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IG9i amVjdHMgZGVwZW5kIG9uIHRoaXMgcGFydGl0aW9uLCBzdWNoIGFzCisgICAgICBjb25zdHJhaW50 cywgdHJpZ2dlcnMsIGV4dGVuZGVkIHN0YXRpc3RpY3MgZXRjIHdpbGwgYmUgZHJvcHBlZC4KKyAg ICAgIEV2ZW50dWFsbHkgd2Ugd2lsbCBkcm9wIGFsbCB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgKHVz aW5nIDxsaXRlcmFsPlJFU1RSSUNUPC9saXRlcmFsPiBtb2RlKSB0b28sCisgICAgICB0aGVyZWZv cmUgaWYgYW55IG9iamVjdHMgc3RpbGwgZGVwZW5kZW50IG9uIGl0LAorICAgICAgPGNvbW1hbmQ+ QUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OPC9jb21tYW5kPiB3b3VsZCBmYWlsLgorICAgICAg KHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtZGVwZW5kIi8+KS4KICAgICAgPC9wYXJhPgorCiAgICAg IDxub3RlPgogICAgICAgPHBhcmE+CiAgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFjcXVpcmVz IGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KLS0gCjIuMzQu MQoK --000000000000e70498064130e4b4--