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 1stohP-001sc7-U8 for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Sep 2024 13:38:28 +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 1stohO-008ktU-V7 for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Sep 2024 13:38:26 +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 1stohO-008ksl-I3 for pgsql-hackers@lists.postgresql.org; Thu, 26 Sep 2024 13:38:26 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1stohJ-001CMS-Dv for pgsql-hackers@lists.postgresql.org; Thu, 26 Sep 2024 13:38:25 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id EA82261A7A; Thu, 26 Sep 2024 22:38:18 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_d00ea6586414bad7f00cdee039c9e7ed" Content-Transfer-Encoding: 7bit Date: Thu, 26 Sep 2024 22:38:18 +0900 From: torikoshia To: Fujii Masao Cc: zhjwpku@gmail.com, pgsql-hackers@lists.postgresql.org Subject: Re: Add new COPY option REJECT_LIMIT In-Reply-To: References: <63f99327aa6b404cc951217fa3e61fe4@oss.nttdata.com> <6e3dcdc6-8e18-4716-a23b-3bee316aeaa7@oss.nttdata.com> <979c6d306343f3d665d14eab2cd1b7bc@oss.nttdata.com> <920a29a36032befbeb355cbdfbbe0f63@oss.nttdata.com> <54bea7dd-94b1-41f1-a4e9-c5c53cc82ce7@oss.nttdata.com> <644a094c-2c0c-4b5f-b151-3677c7de4ee7@oss.nttdata.com> <5f807fcf3a36df7ba41464ab40b5c37d@oss.nttdata.com> <056a5728cf733685cff7d9b5a8fbb0ad@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_d00ea6586414bad7f00cdee039c9e7ed Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-09-25 02:22, Fujii Masao wrote: Thanks for your review! Attached v5 patch. > On 2024/09/24 14:25, torikoshia wrote: >> Updated the patch. > > Thanks for updating the patch! > > + REJECT_LIMIT { class="parameter">integer } > > The curly braces {} seem unnecessary here. > > + When a positive integer value is specified, > COPY limits > + the maximum tolerable number of errors while converting a > column's input > + value into its data type. > + If input data caused more errors than the specified value, > entire > + COPY fails. > + Otherwise, COPY discards the input row and > continues > + with the next one. > + This option must be used with ON_ERROR to be > set to > + ignore. > + Just setting ON_ERROR to > ignore > + tolerates unlimited number of errors. > > Regarding the description of REJECT_LIMIT, how about clarifying what > the option specifies up front, like this: > > ---------------- > Specifies the maximum number of errors tolerated while converting a > column's > input value to its data type, when on_error is set to "ignore." If the > input > causes more errors than the specified value, the COPY command fails, > even with on_error set to "ignore." This value must be positive and > used with > on_error="ignore". If not specified, on_error="ignore" allows an > unlimited > number of errors, meaning COPY will skip all erroneous data. > ---------------- Thanks for writing it. It seems better. > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("number for REJECT_LIMIT must be greater than zero"))); > + } > + else > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("value for REJECT_LIMIT must be positive integer"))); > > The phrases "number for" and "value for" seem unnecessary in the error > messages. > Also, "positive number" should be "a positive number." Would it be > better to display > the actual specified value in the error message, like: > errmsg("REJECT_LIMIT (%s) must > be a positive number", value)? Agreed. > Lastly, during my testing, if nothing is specified for REJECT_LIMIT > (e.g., COPY ... WITH (..., REJECT_LIMIT)), the COPY command caused a > segmentation fault. Oh, thanks for finding it. Fixed. > > >>> I'd like to hear if anyone has an opinion on the need for supporting >>> ratio. >> >> Since there was no opinion about it, attached a patch only for >> REJECT_LIMIT specifying number. > > +1 > >> As there are no opposing opinions, removed 'INFINITY' as well. > > +1 > > Regards, -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation --=_d00ea6586414bad7f00cdee039c9e7ed Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v5-0001-Add-new-COPY-option-REJECT_LIMIT.patch Content-Disposition: attachment; filename=v5-0001-Add-new-COPY-option-REJECT_LIMIT.patch; size=9024 RnJvbSBlNDBlMzc4YWM2ZWI4NTgzYjhjZmJhYzA3ZWM0NTlhY2MwM2ZjNGIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMjYgU2VwIDIwMjQgMjI6MDU6MjggKzA5MDAKU3ViamVjdDog W1BBVENIIHY1XSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVAoKOWUyZDg3MCBlbmFi bGVkIHRoZSBDT1BZIEZST00gY29tbWFuZCB0byBza2lwIHNvZnQgZXJyb3JzLCBidXQgdGhlcmUK d2FzIG5vIGxpbWl0YXRpb24gYWJvdXQgdGhlIG51bWJlciBvZiBlcnJvcnMgYW5kIHNraXBwZWQg YWxsIHRoZSBzb2Z0CmVycm9ycy4KSW4gc29tZSBjYXNlcyB0aGVyZSB3b3VsZCBiZSBhIGxpbWl0 YXRpb24gaG93IG1hbnkgZXJyb3JzIGFyZQp0b2xlcmFibGUuIFRoaXMgcGF0Y2ggaW50cm9kdWNl cyBSRUpFQ1RfTElNSVQgdG8gc3BlY2lmeSBob3cgbWFueQplcnJvcnMgY2FuIGJlIHNraXBwZWQu Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgfCAxOCArKysrKysrKysr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDUxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICB8ICA1 ICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAgfCAgMSArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCB8IDEwICsrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29weTIuc3FsICAgICAgfCAyMSArKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg MTA2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDE1MThhZjhhMDQuLjA4MTM5MTE2 ZDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY29weS5zZ21sCkBAIC00NCw2ICs0NCw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFi bGUKICAgICBGT1JDRV9OT1RfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTlVM TCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAgT05fRVJST1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+CisgICAgUkVKRUNUX0xJTUlUIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4KICAgICBF TkNPRElORyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuY29kaW5nX25hbWU8L3Jl cGxhY2VhYmxlPicKICAgICBMT0dfVkVSQk9TSVRZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52ZXJib3NpdHk8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KQEAgLTQxMSw2ICs0MTIs MjMgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5SRUpFQ1Rf TElNSVQ8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVycm9ycyB0b2xlcmF0ZWQgd2hpbGUg Y29udmVydGluZyBhCisgICAgICBjb2x1bW4ncyBpbnB1dCB2YWx1ZSB0byBpdHMgZGF0YSB0eXBl LCB3aGVuIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBpcworICAgICAgc2V0IHRvIDxsaXRl cmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisgICAgICBJZiB0aGUgaW5wdXQgY2F1c2VzIG1vcmUgZXJy b3JzIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSwgdGhlIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+ CisgICAgICBjb21tYW5kIGZhaWxzLCBldmVuIHdpdGggPGxpdGVyYWw+T05fRVJST1I8L2xpdGVy YWw+IHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+LgorICAgICAgVGhpcyB2YWx1ZSBt dXN0IGJlIHBvc2l0aXZlIGFuZCB1c2VkIHdpdGggPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+ PTxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisgICAgICBJZiBub3Qgc3BlY2lmaWVkLCA8bGl0 ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD49PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAg YWxsb3dzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgZXJyb3JzLCBtZWFuaW5nIDxjb21tYW5kPkNP UFk8L2NvbW1hbmQ+IHdpbGwKKyAgICAgIHNraXAgYWxsIGVycm9uZW91cyBkYXRhLgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlz dGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkVOQ09ESU5HPC9saXRlcmFsPjwvdGVybT4KICAg ICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggM2JiNTc5YTNhNC4uMzk4ZDFhMmFkZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHkuYwpAQCAtNDE4LDYgKzQxOCw0MCBAQCBkZWZHZXRDb3B5T25FcnJvckNo b2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3RhdGUgKnBzdGF0ZSwgYm9vbCBpc19mcm9tKQogCXJl dHVybiBDT1BZX09OX0VSUk9SX1NUT1A7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KIAor LyoKKyAqIEV4dHJhY3QgUkVKRUNUX0xJTUlUIHZhbHVlIGZyb20gYSBEZWZFbGVtLgorICovCitz dGF0aWMgaW50NjQKK2RlZkdldENvcHlSZWplY3RMaW1pdE9wdGlvbnMoRGVmRWxlbSAqZGVmKQor eworCWludDY0CQkJCQlyZWplY3RfbGltaXQ7CisKKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ IGVycm1zZygiUkVKRUNUX0xJTUlUIHJlcXVpcmVzIGEgcG9zaXRpdmUgaW50ZWdlciIpKSk7CisK KwlpZiAobm9kZVRhZyhkZWYtPmFyZykgPT0gVF9JbnRlZ2VyKQorCXsKKwkJcmVqZWN0X2xpbWl0 ID0gZGVmR2V0SW50NjQoZGVmKTsKKwkJaWYgKHJlamVjdF9saW1pdCA8PSAwKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkgZXJybXNnKCJSRUpFQ1RfTElNSVQgKCVsbGQpIG11c3QgYmUgZ3JlYXRlciB0aGFuIHpl cm8iLAorCQkJCQkgKGxvbmcgbG9uZykgcmVqZWN0X2xpbWl0KSkpOworCX0KKwllbHNlCisJewor CQljaGFyCSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisJCWVyZXBvcnQoRVJST1IsCisJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCSBlcnJtc2co IlJFSkVDVF9MSU1JVCAoJXMpIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIiwKKwkJCQkgc3Zh bCkpKTsKKwl9CisKKwlyZXR1cm4gcmVqZWN0X2xpbWl0OworfQorCiAvKgogICogRXh0cmFjdCBh IENvcHlMb2dWZXJib3NpdHlDaG9pY2UgdmFsdWUgZnJvbSBhIERlZkVsZW0uCiAgKi8KQEAgLTQ3 MCw2ICs1MDQsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJv b2wJCWhlYWRlcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQg PSBmYWxzZTsKIAlib29sCQlsb2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJ CXJlamVjdF9saW1pdF9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAK IAkvKiBTdXBwb3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpA QCAtNjM2LDYgKzY3MSwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJbG9nX3ZlcmJvc2l0eV9zcGVjaWZpZWQgPSB0cnVlOwogCQkJb3B0c19vdXQtPmxvZ192 ZXJib3NpdHkgPSBkZWZHZXRDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlKGRlZmVsLCBwc3RhdGUpOwog CQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJlamVjdF9saW1pdCIpID09 IDApCisJCXsKKwkJCWlmIChyZWplY3RfbGltaXRfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxp Y3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOworCQkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9 IHRydWU7CisJCQlvcHRzX291dC0+cmVqZWN0X2xpbWl0ID0gZGVmR2V0Q29weVJlamVjdExpbWl0 T3B0aW9ucyhkZWZlbCk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNjY5LDYgKzcxMSwxNSBAQCBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBp biBCSU5BUlkgbW9kZSIpKSk7CiAKKwlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0 c19vdXQtPm9uX2Vycm9yKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkvKi0gdHJhbnNsYXRvcjogZmlyc3QgYW5kIHNl Y29uZCAlcyBhcmUgdGhlIG5hbWVzIG9mIENPUFkKKwkJICogb3B0aW9uLCBlLmcuIE9OX0VSUk9S LCB0aGlyZCBpcyB0aGUgdmFsdWUgb2YgdGhlIENPUFkgb3B0aW9uLAorCQkgKiBlLmcuIElHTk9S RSAqLworCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMgJXMgdG8gYmUgc2V0IHRvICVzIiwK KwkJCQkJCSAiUkVKRUNUX0xJTUlUIiwgIk9OX0VSUk9SIiwgIklHTk9SRSIpKSk7CisKIAkvKiBT ZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19vdXQtPmRlbGlt KQogCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIgOiAiXHQiOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMmQzNDYyOTEzZS4uYzE3ZmJmNzFiYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xMDI0LDYgKzEwMjQsMTEgQEAgQ29weUZyb20oQ29weUZy b21TdGF0ZSBjc3RhdGUpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NPUFlfVFVQTEVTX1NLSVBQRUQsCiAJCQkJCQkJCQkJICsrc2tpcHBlZCk7CiAKKwkJCWlmIChj c3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0ICYmIHNraXBwZWQgPiBjc3RhdGUtPm9wdHMucmVqZWN0 X2xpbWl0KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQkgZXJybXNnKCJza2lwcGVkIG1vcmUgdGhh biBSRUpFQ1RfTElNSVQgcm93czogXCIlbGxkXCIsIiwKKwkJCQkJCQkJKGxvbmcgbG9uZykgY3N0 YXRlLT5vcHRzLnJlamVjdF9saW1pdCkpKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaAppbmRleCAxNDFmZDQ4ZGMxLi5jM2E3NjEzNzc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC04 Myw2ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJYm9vbAkJY29u dmVydF9zZWxlY3RpdmVseTsJLyogZG8gc2VsZWN0aXZlIGJpbmFyeSBjb252ZXJzaW9uPyAqLwog CUNvcHlPbkVycm9yQ2hvaWNlIG9uX2Vycm9yOyAvKiB3aGF0IHRvIGRvIHdoZW4gZXJyb3IgaGFw cGVuZWQgKi8KIAlDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlIGxvZ192ZXJib3NpdHk7CS8qIHZlcmJv c2l0eSBvZiBsb2dnZWQgbWVzc2FnZXMgKi8KKwlpbnQ2NAkJcmVqZWN0X2xpbWl0OwkvKiBtYXhp bXVtIHRvbGVyYWJsZSBudW1iZXIgb2YgZXJyb3JzICovCiAJTGlzdAkgICAqY29udmVydF9zZWxl Y3Q7IC8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzIChjYW4gYmUgTklMKSAqLwogfSBDb3B5Rm9ybWF0 T3B0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dAppbmRleCA2MWExOWNkYzRj Li44ZmIyN2QxZDVmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHky Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dApAQCAtMTE2LDYg KzExNiwxMCBAQCBDT1BZIHggdG8gc3Rkb3V0IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsK IEVSUk9SOiAgQ09QWSBMT0dfVkVSQk9TSVRZICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQK IExJTkUgMTogQ09QWSB4IHRvIHN0ZG91dCAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIHdpdGggKHJlamVj dF9saW1pdCAxKTsKK0VSUk9SOiAgQ09QWSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1Ig dG8gYmUgc2V0IHRvIElHTk9SRQorQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdu b3JlLCByZWplY3RfbGltaXQgMCk7CitFUlJPUjogIFJFSkVDVF9MSU1JVCAoMCkgbXVzdCBiZSBn cmVhdGVyIHRoYW4gemVybwogLS0gdG9vIG1hbnkgY29sdW1ucyBpbiBjb2x1bW4gbGlzdDogc2hv dWxkIGZhaWwKIENPUFkgeCAoYSwgYiwgYywgZCwgZSwgZCwgYykgZnJvbSBzdGRpbjsKIEVSUk9S OiAgY29sdW1uICJkIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKQEAgLTc4OSw2ICs3OTMsMTIg QEAgQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VyciwgbGluZSAxOiAiMQl7MX0iCiBDT1BZIGNo ZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBl eHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1uCiBDT05URVhUOiAgQ09QWSBjaGVj a19pZ25fZXJyLCBsaW5lIDE6ICIxCXsxfQkzCWFiYyIKKy0tIHRlc3RzIGZvciByZWplY3RfbGlt aXQgb3B0aW9uCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBp Z25vcmUsIHJlamVjdF9saW1pdCAzKTsKK0VSUk9SOiAgc2tpcHBlZCBtb3JlIHRoYW4gUkVKRUNU X0xJTUlUIHJvd3M6ICIzIiwKK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgNSwg Y29sdW1uIG46ICIiCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJv ciBpZ25vcmUsIHJlamVjdF9saW1pdCA0KTsKK05PVElDRTogIDQgcm93cyB3ZXJlIHNraXBwZWQg ZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxF IGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvcHkyLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAppbmRl eCA4YjE0OTYyMTk0Li4yZDc3NWQ5Yzk3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC04Miw2 ICs4Miw4IEBAIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBURVhULCBmb3JjZV9udWxsKGEpKTsK IENPUFkgeCB0byBzdGRpbiAoZm9ybWF0IENTViwgZm9yY2VfbnVsbChhKSk7CiBDT1BZIHggdG8g c3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIENPUFkgeCB0byBz dGRvdXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOworQ09QWSB4IGZyb20gc3RkaW4gd2l0 aCAocmVqZWN0X2xpbWl0IDEpOworQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdu b3JlLCByZWplY3RfbGltaXQgMCk7CiAKIC0tIHRvbyBtYW55IGNvbHVtbnMgaW4gY29sdW1uIGxp c3Q6IHNob3VsZCBmYWlsCiBDT1BZIHggKGEsIGIsIGMsIGQsIGUsIGQsIGMpIGZyb20gc3RkaW47 CkBAIC01NTcsNiArNTU5LDI1IEBAIENPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIGlnbm9yZSk7CiAxCXsxfQkzCWFiYwogXC4KIAorLS0gdGVzdHMgZm9yIHJlamVj dF9saW1pdCBvcHRpb24KK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDMpOworNgl7Nn0JNgorYQl7N30JNworOAl7OH0JODg4 ODg4ODg4OAorOQl7YSwgOX0JOQorCisxMAl7MTB9CTEwCitcLgorCitDT1BZIGNoZWNrX2lnbl9l cnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCA0KTsKKzYJ ezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4ODg4ODg4ODgKKzkJe2EsIDl9CTkKKworMTAJezEwfQkx MAorXC4KKwogLS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJMRSB2 aXN0ZXN0OwoKYmFzZS1jb21taXQ6IGQ2NjU3MmQ5ZmVkYjYzMmFmNWRmNjVjZTUxM2QwNGRjMmEx NjgyYTMKLS0gCjIuMzkuMgoK --=_d00ea6586414bad7f00cdee039c9e7ed--