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 1tCE97-00ENSS-IS for pgsql-hackers@arkaria.postgresql.org; Sat, 16 Nov 2024 08:27:09 +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 1tCE94-00DXCP-DB for pgsql-hackers@arkaria.postgresql.org; Sat, 16 Nov 2024 08:27:06 +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 1tCE94-00DXCH-0Y for pgsql-hackers@lists.postgresql.org; Sat, 16 Nov 2024 08:27:06 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tCE90-002Dwk-5A for pgsql-hackers@lists.postgresql.org; Sat, 16 Nov 2024 08:27:06 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-50d34db4edeso1839008e0c.0 for ; Sat, 16 Nov 2024 00:27:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731745621; x=1732350421; 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=Wh4q2kAGr1XwgvKll7AodUrBI0fmU1uqV6dW05G5pZE=; b=JQLCn2X+hHvGGI95E9ey2aF0Yf+k8tWnk4dwEEIeyryz7rZCm38iXohA/UvhUu9lOx zxaDbmQjlaKKoJ4u7akAROT8lh8lU5SVbkbglHP3R1OShMl8gObLhofLX7O0k/Igm+v+ lFL4hg3XtvpOLGQqCxTL5vc27WUsLm63EhxFsRAmVz5yUvgiedb4daxTpz0fnC92ne72 bIqw3UkGqQxH3cwSN64f2tpz7hA+jLFQUjz4LRxO21TqVF2at0XxEHLwvNcOax8AD81d RwBPnHGZEu4DHWYqZXjNWkMLynPbwvXnnPRbddsZMSErsE/oNsEdEh+JWNKEUHZ1qXs/ s24g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731745621; x=1732350421; 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=Wh4q2kAGr1XwgvKll7AodUrBI0fmU1uqV6dW05G5pZE=; b=IQDgqzjaNTnu73DaHGIwgF4hVYT1UNGhm1K2JDWDF9tPjzNMEL/0uVc6MVMq7r28kl V5MDyNax3e1XUmg3r30fcDSq93ADmlHrwMQxjY+bt32b2AfavGe1oY2Wsw7DNOm5H9tG vLHEqyNTHOVWHZukrVuG/KW+3xqKjnjuwHpHGiLB/dh+bLmo49znJ3pAbH2gCa0CwWaH SZDMimqLKD84x+wgmTH9b6TpKNvxrkEMUw8sSVmwMVXUAVWMzgWEo3f9MgBKUNiutNUS /riHzWsr1R05n9O9tJAOvoLz7P+R53+tyg7KPbehjCzcb1eTDEmrcKEDEUZRKc0uF7eA NfAw== X-Forwarded-Encrypted: i=1; AJvYcCXCRERlV1QU8I5Fssjg1x9UXUZZ+CDoHsnmqlAA3Vrd/dSujXZFlLeTXgOHP1+ypnYFFTiw0vKMLT3TGH6p@lists.postgresql.org X-Gm-Message-State: AOJu0YwDt63jAN+uRjGV5OBRgtb4WYwLZqVnHOUiNOjBYLT9VKV182k8 BbhDB3OFhtNhae0psIU89OizMvzQWZINQxIYSnSRd6g1reLbj7KqTUeafYt9UxJR2DgXYYr0U3m D/nDLnJJ7vJ5S1rROjl129jVzhY0= X-Google-Smtp-Source: AGHT+IG0PinLl2Sq5oxRzihE7VL095yFXd3QwRVp02qsHf7tCoN5dSP7Iwvrg8KItCw098+xnDpgLcy4ky7bCg0FND8= X-Received: by 2002:a05:6122:511c:20b0:50d:2aca:3b13 with SMTP id 71dfb90a1353d-514651d5d2amr6763158e0c.3.1731745621420; Sat, 16 Nov 2024 00:27:01 -0800 (PST) MIME-Version: 1.0 References: <04bf425ad1b15a4daefe96c478a5253b@oss.nttdata.com> <20240206191937.72eaf0ccc20cfea37944b422@sraoss.co.jp> <76da9fcc-93c5-4053-872e-12932a95356d@uni-muenster.de> <6eac5b45-7f45-4c7a-aae1-e90db8be2e08@uni-muenster.de> <3d6b5885-16a1-475d-b56f-41701c48d9d4@uni-muenster.de> <63595e8f-a245-4335-aa22-7e449a70e210@oss.nttdata.com> <07587c36-18b3-4ccb-b5fb-579bcb04ed37@oss.nttdata.com> In-Reply-To: From: jian he Date: Sat, 16 Nov 2024 16:26:00 +0800 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Kirill Reshke Cc: Fujii Masao , Jim Jones , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009bae030627037227" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009bae030627037227 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Nov 9, 2024 at 8:55=E2=80=AFPM Kirill Reshke wrote: > > > > But while I was trying to implement that, I realized that I don't > > > understand v4 of this patch. My misunderstanding is about > > > `t_on_error_null` tests. We are allowed to insert a NULL value for th= e > > > first column of t_on_error_null using COPY ON_ERROR SET_TO_NULL. Why > > > do we do that? My thought is we should try to execute > > > InputFunctionCallSafe with NULL value (i mean, here [1]) for the > > > column after we failed to insert the input value. And, if this second > > > call is successful, we do replacement, otherwise we count the row as > > > erroneous. > > > > Your concern is valid. Allowing NULL to be stored in a column with a NO= T NULL > > constraint via COPY ON_ERROR=3DSET_TO_NULL does seem unexpected. As you= suggested, > > NULL values set by SET_TO_NULL should probably be re-evaluated. > > Thank you. I updated the patch with a NULL re-evaluation. > take me sometime to understand your change with InputFunctionCallSafe. it actually works fine with domain, i think mainly because domain_in proisstrict is false and all other type input function proisstrict is true! --case1 create table t1(a dnn); copy t1 from stdin(on_error set_to_null); A \. --case2 create table t2(a int not null); copy t2 from stdin(on_error set_to_null); A \. I think it should be to either let domains with not-null behave the same as column level not-null or just insert NULL to a column with domain not-null constraint. in doc[1], we already mentioned that a column with a not-null domain is possible to have null value . https://www.postgresql.org/docs/current/sql-createdomain.html attached v8, based on your v7, main change it NextCopyFrom, InputFunctionCallSafe. The idea is when InputFunctionCallSafe fails, on_error set_to_null needs to check if this is a type as not-null domain. pass NULL string to InputFunctionCallSafe again to check if this type allows null or not. If not allow null then error out (ereport(ERROR)). i think this will align with column level not-null constraint, what do you guys think? i am mainly change copyfromparse.c's for now. other places no change, same as v7. --0000000000009bae030627037227 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0001-COPY-option-on_error-set_to_null.patch" Content-Disposition: attachment; filename="v8-0001-COPY-option-on_error-set_to_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3jw6v3s0 RnJvbSBkMDU1M2VjNzQ0NmYwZjM1MmEyODFjNTkxZGIyMjgwMjljMDk0NmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTYgTm92IDIwMjQgMTU6NTc6NTkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY4 IDEvMV0gQ09QWSBvcHRpb24gb25fZXJyb3Igc2V0X3RvX251bGwKCmV4dGVudCAib25fZXJyb3Ig YWN0aW9uIiwgaW50cm9kdWNlIG5ldyBvcHRpb246IG9uX2Vycm9yIHNldF90b19udWxsLgoKRHVl IHRvIGN1cnJlbnQgZ3JhbW1hciwgd2UgY2Fubm90IHVzZSAib25fZXJyb3IgbnVsbCIsIHNvIEkg Y2hvb3NlIG9uX2Vycm9yCnNldF90b19udWxsLgoKYW55IGRhdGEgdHlwZSBjb252ZXJzaW9uIGVy cm9ycyB3aGlsZSB0aGUgQ09QWSBGUk9NIHByb2Nlc3Mgd2lsbCBzZXQgdGhhdCBjb2x1bW4KdmFs dWUgdG8gYmUgTlVMTC4gIHRoaXMgd2lsbCBvbmx5IHdvcmsgd2l0aCBDT1BZIEZST00gYW5kIG5v bi1iaW5hcnkgZm9ybWF0LgoKSG93ZXZlciB0aGlzIHdpbGwgcmVzcGVjdCB0aGUgbm90LW51bGwg Y29uc3RyYWludCwgbWVhbmluZywgaWYgeW91IGFjdHVhbGx5CmNvbnZlcnRlZCBlcnJvciB0byBu dWxsLCBidXQgdGhlIGNvbHVtbiBoYXMgbm90LW51bGwgY29uc3RyYWludCwgbm90LW51bGwKY29u c3RyYWludCB2aW9sYXRpb24gRVJST1Igd2lsbCBiZSByYWlzZWQuCgp0aGlzIGFsc28gcmVzcGVj dCBub3QtbnVsbCBjb25zdHJhaW50IG9uIGRvbWFpbiwgbWVhbmluZyBvbl9lcnJvciBzZXRfdG9f bnVsbAptYXkgcmFpc2UgRVJST1IgZm9yIGZhaWxlZCBkb21haW5faW4gZnVuY3Rpb24gY2FsbAoK ZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUtGUXV3YXd5MWU2WVI0Uz1qK3k3cFhx Z19EdzFXQlZyZ3ZmPUJQM2QxX2FTZmVfK1FAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgfCAgNyArLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYyAgICAgICAgICB8IDEyICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jICAgICAgfCAzOSArKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b21wYXJzZS5jIHwgNDAgKysrKysrKysrKysrKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYyAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAg fCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCAgfCA4MCArKysrKysr KysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAg ICAgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjM5 IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggODM5NDQw MmYwOS4uZGNiZmExN2EzYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTM5NCwxMiArMzk0LDEzIEBAIENP UFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIFNwZWNpZmllcyBob3cgdG8gYmVoYXZlIHdoZW4g ZW5jb3VudGVyaW5nIGFuIGVycm9yIGNvbnZlcnRpbmcgYSBjb2x1bW4ncwogICAgICAgaW5wdXQg dmFsdWUgaW50byBpdHMgZGF0YSB0eXBlLgogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCi0gICAgICA8bGl0 ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQotICAgICAg PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5k IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgorICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJh bD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwKKyAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJh bD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0 IG9uZSwgYW5kCisgICAgICA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4gbWVhbnMgcmVw bGFjZSBjb2x1bW5zIGNvbnRhaW5pbmcgZXJyb25lb3VzIGlucHV0IHZhbHVlcyB3aXRoIDxsaXRl cmFsPm51bGw8L2xpdGVyYWw+IGFuZCBtb3ZlIHRvIHRoZSBuZXh0IHJvdy4KICAgICAgIFRoZSBk ZWZhdWx0IGlzIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxw YXJhPgotICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uIGlzIGFwcGxp Y2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgorICAgICAgVGhlIDxs aXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNldF90b19udWxsPC9saXRlcmFs PiBvcHRpb25zIGFyZSBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5kPkNPUFkgRlJPTTwvY29t bWFuZD4KICAgICAgIHdoZW4gdGhlIDxsaXRlcmFsPkZPUk1BVDwvbGl0ZXJhbD4gaXMgPGxpdGVy YWw+dGV4dDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Y3N2PC9saXRlcmFsPi4KICAgICAgPC9wYXJh PgogICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAzNDg1YmE4NjYzLi4zMDQwMjJjZDg2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weS5jCkBAIC00MDMsMTIgKzQwMywxNCBAQCBkZWZHZXRDb3B5T25FcnJv ckNob2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3RhdGUgKnBzdGF0ZSwgYm9vbCBpc19mcm9tKQog CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWYtPmxvY2F0aW9uKSkpOwogCiAJLyoK LQkgKiBBbGxvdyAic3RvcCIsIG9yICJpZ25vcmUiIHZhbHVlcy4KKwkgKiBBbGxvdyAic3RvcCIs ICJpZ25vcmUiLCAic2V0X3RvX251bGwiIHZhbHVlcy4KIAkgKi8KIAlpZiAocGdfc3RyY2FzZWNt cChzdmFsLCAic3RvcCIpID09IDApCiAJCXJldHVybiBDT1BZX09OX0VSUk9SX1NUT1A7CiAJaWYg KHBnX3N0cmNhc2VjbXAoc3ZhbCwgImlnbm9yZSIpID09IDApCiAJCXJldHVybiBDT1BZX09OX0VS Uk9SX0lHTk9SRTsKKwlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAic2V0X3RvX251bGwiKSA9PSAw KQorCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9OVUxMOwogCiAJZXJlcG9ydChFUlJPUiwKIAkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTA0LDEzICs5MDYs MTMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygib25seSBPTl9FUlJPUiBTVE9Q IGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5yZWplY3Rf bGltaXQgJiYgIW9wdHNfb3V0LT5vbl9lcnJvcikKKwlpZiAob3B0c19vdXQtPnJlamVjdF9saW1p dCAmJiAhKG9wdHNfb3V0LT5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwgfHwgb3B0c19v dXQtPm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJLyotIHRy YW5zbGF0b3I6IGZpcnN0IGFuZCBzZWNvbmQgJXMgYXJlIHRoZSBuYW1lcyBvZiBDT1BZIG9wdGlv biwgZS5nLgotCQkgKiBPTl9FUlJPUiwgdGhpcmQgaXMgdGhlIHZhbHVlIG9mIHRoZSBDT1BZIG9w dGlvbiwgZS5nLiBJR05PUkUgKi8KLQkJCQkgZXJybXNnKCJDT1BZICVzIHJlcXVpcmVzICVzIHRv IGJlIHNldCB0byAlcyIsCi0JCQkJCQkiUkVKRUNUX0xJTUlUIiwgIk9OX0VSUk9SIiwgIklHTk9S RSIpKSk7CisJCSAqIE9OX0VSUk9SLCB0aGlyZCBpcyB0aGUgdmFsdWUgb2YgdGhlIENPUFkgb3B0 aW9uLCBlLmcuIElHTk9SRSBvciBTRVRfVE9fTlVMTCAqLworCQkJCSBlcnJtc2coIkNPUFkgJXMg cmVxdWlyZXMgJXMgdG8gYmUgc2V0IHRvICVzIG9yICVzIiwKKwkJCQkJCSJSRUpFQ1RfTElNSVQi LCAiT05fRVJST1IiLCAiSUdOT1JFIiwgIlNFVF9UT19OVUxMIikpKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jCmluZGV4IDA3Y2JkNWQyMmIuLmYwMGYzODNiYWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weWZyb20uYwpAQCAtMTAwMyw3ICsxMDAzLDcgQEAgQ29weUZyb20oQ29weUZyb21TdGF0 ZSBjc3RhdGUpCiAJCWlmICghTmV4dENvcHlGcm9tKGNzdGF0ZSwgZWNvbnRleHQsIG15c2xvdC0+ dHRzX3ZhbHVlcywgbXlzbG90LT50dHNfaXNudWxsKSkKIAkJCWJyZWFrOwogCi0JCWlmIChjc3Rh dGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgJiYKKwkJaWYgKChjc3Rh dGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgfHwgY3N0YXRlLT5vcHRz Lm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfTlVMTCkgJiYKIAkJCWNzdGF0ZS0+ZXNjb250ZXh0 LT5lcnJvcl9vY2N1cnJlZCkKIAkJewogCQkJLyoKQEAgLTEwMTgsMTIgKzEwMTgsMjggQEAgQ29w eUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NPUFlfVFVQTEVTX1NLSVBQRUQsCiAJCQkJCQkJCQkJIGNzdGF0ZS0+bnVt X2Vycm9ycyk7CiAKLQkJCWlmIChjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0ID4gMCAmJiBcCi0J CQkJY3N0YXRlLT5udW1fZXJyb3JzID4gY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCkKLQkJCQll cmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVT RU5UQVRJT04pLAotCQkJCQkJIGVycm1zZygic2tpcHBlZCBtb3JlIHRoYW4gUkVKRUNUX0xJTUlU ICglbGxkKSByb3dzIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkJ KGxvbmcgbG9uZykgY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCkpKTsKKwkJCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQl7CisJCQkJaWYgKGNz dGF0ZS0+b3B0cy5yZWplY3RfbGltaXQgPiAwICYmIGNzdGF0ZS0+bnVtX2Vycm9ycyA+IGNzdGF0 ZS0+b3B0cy5yZWplY3RfbGltaXQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJCWVycm1zZygi c2tpcHBlZCBtb3JlIHRoYW4gUkVKRUNUX0xJTUlUICglbGxkKSByb3dzIGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJCShsb25nIGxvbmcpIGNzdGF0ZS0+b3B0cy5y ZWplY3RfbGltaXQpKSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogUHJvdmlkZSBkaWZm ZXJlbnQgZXJyb3IgbXNnIGlmIHJlamVjdF9saW1pdCBpcyB6ZXJvICovCisJCQkJaWYgKGNzdGF0 ZS0+b3B0cy5yZWplY3RfbGltaXQgPT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQkJZXJy bXNnKCJmYWlsZWQgdG8gcmVwbGFjZSBjb2x1bW4gY29udGFpbmluZyBlcnJvbmVvdXMgZGF0YSB3 aXRoIG51bGwiKSwKKwkJCQkJCQllcnJoaW50KCJDb25zaWRlciBzcGVjaWZ5aW5nIHRoZSBSRUpF Q1QgTElNSVQgb3B0aW9uIHRvIHNraXAgZXJyb25lb3VzIHJvd3MuIikpKTsKKwkJCQllbHNlIGlm IChjc3RhdGUtPm51bV9lcnJvcnMgPiBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KQorCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJF U0VOVEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImVuY291bnRlcmVkIG1vcmUgdGhhbiBSRUpFQ1Rf TElNSVQgKCVsbGQpIHJvd3Mgd2l0aCBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJ CQkJCShsb25nIGxvbmcpIGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXQpKSk7CisJCQl9CiAKIAkJ CS8qIFJlcGVhdCBOZXh0Q29weUZyb20oKSB1bnRpbCBubyBzb2Z0IGVycm9yIG9jY3VycyAqLwog CQkJY29udGludWU7CkBAIC0xMzIxLDcgKzEzMzcsNyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRl IGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09Q WV9PTl9FUlJPUl9TVE9QICYmCisJaWYgKChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9P Tl9FUlJPUl9JR05PUkUgfHwgY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf TlVMTCkgJiYKIAkJY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgogCQljc3RhdGUtPm9wdHMubG9n X3ZlcmJvc2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKIAkJZXJlcG9ydChOT1RJ Q0UsCkBAIC0xNDc0LDEwICsxNDkwLDExIEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKIAogCQkv KgotCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLiBX ZSdsbCBhZGQgb3RoZXIKLQkJICogb3B0aW9ucyBsYXRlcgorCQkgKiBDdXJyZW50bHkgd2Ugb25s eSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLCBDT1BZX09OX0VSUk9SX05VTEwuCisJCSAq IFdlJ2xsIGFkZCBvdGhlciBvcHRpb25zIGxhdGVyCiAJCSAqLwotCQlpZiAoY3N0YXRlLT5vcHRz Lm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQorCQlpZiAoY3N0YXRlLT5vcHRzLm9u X2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFIHx8CisJCQljc3RhdGUtPm9wdHMub25fZXJy b3IgPT0gQ09QWV9PTl9FUlJPUl9OVUxMKQogCQkJY3N0YXRlLT5lc2NvbnRleHQtPmRldGFpbHNf d2FudGVkID0gZmFsc2U7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2Uu YwppbmRleCBkMWQ0M2I1M2Q4Li4xNDJmZGYzZmJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b21wYXJzZS5jCkBAIC05NjAsNiArOTYwLDQ2IEBAIE5leHRDb3B5RnJvbShDb3B5RnJvbVN0YXRl IGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAogCQkJewogCQkJCUFzc2VydChjc3RhdGUt Pm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKTsKIAorCQkJCS8qCisJCQkJKiBX ZSBlbmNvdW50ZXJlZCBhbiBlcnJvciB3aGlsZSBwYXJzaW5nIG9uZSBvZiBhdHRyaWJ1dGVzLgor CQkJCSovCisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05V TEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkqIFRlbXBvcmFyeSB1bnNldCBlcnJvcl9vY2N1cnJl ZC4gZm9yIGJhc2V0eXBlLCBudWxsIHZhbHVlCisJCQkJCSogaXMgYWxsb3dlZCwgZm9yIGRvbWFp biB0eXBlLCB3ZSBtYXkgaGF2ZSBub3QtbnVsbAorCQkJCQkqIGNvbnN0cmFpbnQuIHdlIHBhc3Mg TlVMTCB0byBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUgdG8gY2hlY2sKKwkJCQkJKiBpZiB0aGlzIHR5 cGUgaGF2ZSBub3QtbnVsbCBjb25zdHJhaW50IG9yIG5vdC4gSWYgaXQncworCQkJCQkqIGRvbWFp biB3aXRoIG5vdC1udWxsIGNvbnN0cmFpbnQsIHRoZW4gd2UgaGF2ZSB0byBlcnJvcgorCQkJCQkq IG91dCwgdGhhdCB3b3VsZCBiZWhhdmUgY29uc2lzdGVudCB3aXRoIGNvbHVtbiBsZXZlbAorCQkJ CQkqIG5vdC1udWxsIGNvbnN0cmFpbnQKKwkJCQkJKi8KKwkJCQkJY3N0YXRlLT5lc2NvbnRleHQt PmVycm9yX29jY3VycmVkID0gZmFsc2U7CisKKwkJCQkJaWYgKCFJbnB1dEZ1bmN0aW9uQ2FsbFNh ZmUoJmluX2Z1bmN0aW9uc1ttXSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJdHlwaW9w YXJhbXNbbV0sCisJCQkJCQkJCQkJCWF0dC0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCQkoTm9kZSAq KSBjc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQkJJnZhbHVlc1ttXSkpCisJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX05PVF9OVUxMX1ZJT0xBVElPTiks CisJCQkJCQkJCSBlcnJtc2coImRvbWFpbiAlcyBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcyIs CisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaW9wYXJhbXNbbV0pKSwKKwkJCQkJCQkJIGVy cmRhdGF0eXBlKHR5cGlvcGFyYW1zW21dKSkpOworCisJCQkJCS8qIElmIGRhdGF0eXBlIGlmIG9r YXkgd2l0aCBOVUxMLCByZXBsYWNlCisJCQkJCSogd2l0aCBudWxsCisJCQkJCSovCisJCQkJCW51 bGxzW21dID0gdHJ1ZTsKKwkJCQkJdmFsdWVzW21dID0gKERhdHVtKSAwOworCQkJCQljb250aW51 ZTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSogVXBkYXRlIGNvcHkgc3RhdGUgY291bnRlciBmb3Ig bnVtYmVyIG9mIGVycm9uZW91cyByb3dzCisJCQkJKiBhcyB3ZSBhcmUgZ29pbmcgdG8gcmV0dXJu IGZyb20gZnVuY3Rpb24uCisJCQkJKi8KIAkJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKIAogCQkJ CWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVS Qk9TRSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBmYWQyMjc3OTkxLi5jMjkwMmZmYzMzIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zMjM1LDcgKzMyMzUsNyBAQCBtYXRjaF9wcmV2aW91 c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiRk9STUFUIiwgIkZSRUVa RSIsICJERUxJTUlURVIiLCAiTlVMTCIsCiAJCQkJCSAgIkhFQURFUiIsICJRVU9URSIsICJFU0NB UEUiLCAiRk9SQ0VfUVVPVEUiLAogCQkJCQkgICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxM IiwgIkVOQ09ESU5HIiwgIkRFRkFVTFQiLAotCQkJCQkgICJPTl9FUlJPUiIsICJMT0dfVkVSQk9T SVRZIik7CisJCQkJCSAgIk9OX0VSUk9SIiwgIlNFVF9UT19OVUxMIiwgIkxPR19WRVJCT1NJVFki KTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGT1JN QVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJPTXxU TyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4 IDQwMDJhN2Y1MzguLjA1MWNhMTJkMTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTM4LDYgKzM4LDcg QEAgdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9PTl9FUlJPUl9TVE9Q ID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAqLwogCUNPUFlfT05f RVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlfT05fRVJST1JfTlVMTCwJ CQkvKiBzZXQgZXJyb3IgZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25FcnJvckNob2ljZTsKIAog LyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXggNjRlYTMzYWVhZS4uNjJjYmUw YzJiMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEwIEBA IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBF UlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBm cm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIChv bl9lcnJvciBzZXRfdG9fbnVsbCwgb25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBjb25m bGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucworTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAo b25fZXJyb3Igc2V0X3RvX251bGwsIG9uX2Vycm9yIHNldF90b19udWwuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRp biAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogRVJST1I6 ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBz dGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmIuLi4KQEAgLTky LDYgKzk2LDggQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsK IEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZyb20g c3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIG9ubHkgT05f RVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitDT1BZIHggZnJvbSBzdGRpbiAo Zm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBvbmx5IE9OX0VS Uk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZyb20gc3RkaW4gKG9u X2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9FUlJPUiAidW5zdXBwb3J0ZWQi IG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1 cHBvcnRlZCk7CkBAIC0xMjQsMTIgKzEzMCwxNiBAQCBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQg QklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgY2Fu bm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCiBMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGZvcm1h dCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorQ09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVs bCk7CitFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCitM SU5FIDE6IENPUFkgeCB0byBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwpOworICAgICAgICAg ICAgICAgICAgICAgICAgIF4KIENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVuc3Vw cG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBMT0dfVkVSQk9TSVRZICJ1bnN1cHBvcnRlZCIgbm90IHJl Y29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBw b3J0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4g d2l0aCAocmVqZWN0X2xpbWl0IDEpOwotRVJST1I6ICBDT1BZIFJFSkVDVF9MSU1JVCByZXF1aXJl cyBPTl9FUlJPUiB0byBiZSBzZXQgdG8gSUdOT1JFCitFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlU IHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUgb3IgU0VUX1RPX05VTEwKIENP UFkgeCBmcm9tIHN0ZGluIHdpdGggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDApOwog RVJST1I6ICBSRUpFQ1RfTElNSVQgKDApIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8KIC0tIHRv byBtYW55IGNvbHVtbnMgaW4gY29sdW1uIGxpc3Q6IHNob3VsZCBmYWlsCkBAIC03NjksNiArNzc5 LDQ2IEBAIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIHNraXBwaW5nIHJv dyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAi ayI6ICJhIgogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAgNiByb3dzIHdl cmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorQ1JFQVRFIERPTUFJ TiBkX2ludF9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEwgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFU RSBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbCBBUyBJTlQgQ0hFQ0sodmFsdWUgPiAw KTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9yX251bGwgKGEgZF9pbnRfbm90X251bGwsIGIgZF9p bnRfcG9zaXRpdmVfbWF5YmVfbnVsbCwgYyBJTlQpOworLS1vaworQ09QWSB0X29uX2Vycm9yX251 bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CistLW9rCitDT1BZIHRf b25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKy0t IGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1RBQkxFIHRfb25fZXJyb3JfbnVsbDsKKyBhICB8IGIg IHwgYyAgCistLS0tKy0tLS0rLS0tLQorIDExIHwgICAgfCAxMgorICAxIHwgMTEgfCAgIAorKDIg cm93cykKKworLS1mYWlsLiB3ZSBkbyBjaGVjayBkb21haW4gbm90LW51bGwgY29uc3RyYWludAor Q09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVs bCk7CitFUlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZh bHVlcworQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAi YSIKKy0tZmFpbC4gZmlyc3QgY2hlY2sgY29uc3RyYWludCBmYWlscywgdGhlbiB3ZSBjb252ZXJ0 IGNvbHVtbiBhIHZhbHVlIHRvIG51bGwKKy0tIGJ5IG9uX2Vycm9yIHNldF90b19udWwgYnV0IGNv bHVtbiBhIGRvbWFpbiB0eXBlIG5vdCBhbGxvdyBudWxsIHZhbHVlLgorQ09QWSB0X29uX2Vycm9y X251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGRv bWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDog IENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAiLTEiCistLW9rLiBDaGVj ayBpbnRlcmFjdGlvbiB3aXRoIFJFSkVDVCBMSU1JVAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIpOworRVJS T1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYTogIi0xIgorLS0g Y2hlY2sgaW5zZXJ0ZWQgY29udGVudAorVEFCTEUgdF9vbl9lcnJvcl9udWxsOworIGEgIHwgYiAg fCBjICAKKy0tLS0rLS0tLSstLS0tCisgMTEgfCAgICB8IDEyCisgIDEgfCAxMSB8ICAgCisoMiBy b3dzKQorCistLWZhaWwuIENoZWNrIGludGVyYWN0aW9uIHdpdGggUkVKRUNUIExJTUlUCitDT1BZ IHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsLCBy ZWplY3RfbGltaXQgMik7CitFUlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBh bGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEs IGNvbHVtbiBhOiAiLTEiCiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Igb3B0aW9uIHdpdGggbG9nX3Zl cmJvc2l0eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4KIENSRUFURSBET01BSU4gZGNo ZWNrX2lnbl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JFQVRFIFRBQkxFIGNoZWNrX2ln bl9lcnIyIChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNrX2lnbl9lcnIyKTsKQEAgLTc3 Niw2ICs4MjYsMTAgQEAgQ09QWSBjaGVja19pZ25fZXJyMiBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIE5PVElDRTogIHNraXBwaW5nIHJv dyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDIgZm9yIGNvbHVtbiAi bCI6IG51bGwgaW5wdXQKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIyCiBOT1RJQ0U6ICAx IHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorLS0gY2hl Y2sgbnVsbCBzdWJzdGl0dXRpb24gbWFzc2FnZXMuCitDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00g U1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyLCBsb2dfdmVy Ym9zaXR5IHZlcmJvc2UpOworRVJST1I6ICBkb21haW4gZGNoZWNrX2lnbl9lcnIyIGRvZXMgbm90 IGFsbG93IG51bGwgdmFsdWVzCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyMiwgbGluZSAy LCBjb2x1bW4gbDogbnVsbCBpbnB1dAogQ09QWSBjaGVja19pZ25fZXJyMiBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSBzaWxlbnQpOwogLS0gcmVzZXQgY29u dGV4dCBjaG9pY2UKIFxzZXQgU0hPV19DT05URVhUIGVycm9ycwpAQCAtODEzLDYgKzg2NywyOCBA QCBFUlJPUjogIHNraXBwZWQgbW9yZSB0aGFuIFJFSkVDVF9MSU1JVCAoMykgcm93cyBkdWUgdG8g ZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2Vyciwg bGluZSA1LCBjb2x1bW4gbjogIiIKIENPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDQpOwogTk9USUNFOiAgNCByb3dzIHdlcmUg c2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorLS0gdGVzdHMgZm9yIG9u X2Vycm9yIHNldF90b19udWxsIG9wdGlvbgordHJ1bmNhdGUgY2hlY2tfaWduX2VycjsKK0NPUFkg Y2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKK1xw c2V0IG51bGwgTlVMTAorU0VMRUNUICogRlJPTSBjaGVja19pZ25fZXJyOworICBuICAgfCAgbSAg fCAgayAgIAorLS0tLS0tKy0tLS0tKy0tLS0tLQorICAgIDEgfCB7MX0gfCBOVUxMCisgICAgMiB8 IHsyfSB8ICAgIDEKKyAgICAzIHwgezN9IHwgICAgMgorICAgIDQgfCB7NH0gfCBOVUxMCisgTlVM TCB8IHs1fSB8IE5VTEwKKyg1IHJvd3MpCisKKy0tc2hvdWxkIGZhaWwuCitDT1BZIGNoZWNrX2ln bl9lcnIgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfdG9fbnVs bCk7CitFUlJPUjogIG1pc3NpbmcgZGF0YSBmb3IgY29sdW1uICJrIgorQ09OVEVYVDogIENPUFkg Y2hlY2tfaWduX2VyciwgbGluZSAxLCBjb2x1bW4gbTogIiIKKy0tc2hvdWxkIGZhaWwuCitDT1BZ IGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBz ZXRfdG9fbnVsbCk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBjb2x1 bW4KK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMTogIjEsezF9LDEsMSIKIC0t IGNsZWFuIHVwCiBEUk9QIFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKQEAg LTgyOCw2ICs5MDQsOCBAQCBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXc7CiBE Uk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXdfMjsKIERST1AgRlVOQ1RJT04gZnVu X2luc3RlYWRfb2ZfaW5zZXJ0X3RibCgpOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyOworRFJP UCBUQUJMRSB0X29uX2Vycm9yX251bGw7CitEUk9QIERPTUFJTiBkX2ludF9ub3RfbnVsbDsKIERS T1AgVEFCTEUgY2hlY2tfaWduX2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBE Uk9QIFRBQkxFIGhhcmRfZXJyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eTIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDQ1MjczNTU3Y2Uu LmM5ODg0Y2MxNjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTY3LDEyICs2NywxNCBAQCBD T1BZIHggZnJvbSBzdGRpbiAoZm9yY2VfbnVsbCAoYSksIGZvcmNlX251bGwgKGIpKTsKIENPUFkg eCBmcm9tIHN0ZGluIChjb252ZXJ0X3NlbGVjdGl2ZWx5IChhKSwgY29udmVydF9zZWxlY3RpdmVs eSAoYikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGVuY29kaW5nICdzcWxfYXNjaWknLCBlbmNvZGlu ZyAnc3FsX2FzY2lpJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9l cnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBv bl9lcnJvciBzZXRfdG9fbnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBk ZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJlY3Qgb3B0aW9ucwog Q09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogQ09QWSB4 IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkgeCBmcm9tIHN0ZGlu IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKGZv cm1hdCBCSU5BUlksIG9uX2Vycm9yIHNldF90b19udWxsKTsKIENPUFkgeCBmcm9tIHN0ZGluIChv bl9lcnJvciB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZv cmNlX3F1b3RlKGEpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVv dGUgKik7CkBAIC04Nyw2ICs4OSw3IEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwg Zm9yY2VfbnVsbCAqKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251bGwo YSkpOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVsbCAqKTsKIENPUFkg eCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKK0NPUFkg eCB0byBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxv Z192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0 X2xpbWl0IDEpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWpl Y3RfbGltaXQgMCk7CkBAIC01MzQsNiArNTM3LDUxIEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAK K0NSRUFURSBET01BSU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVl ID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENI RUNLKHZhbHVlID4gMCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25v dF9udWxsLCBiIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsKKworLS1vaworQ09Q WSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7 CisxMQlhCTEyCitcLgorCistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEJMTEJZAorXC4KKworLS0gY2hlY2sgaW5zZXJ0 ZWQgY29udGVudAorVEFCTEUgdF9vbl9lcnJvcl9udWxsOworCistLWZhaWwuIHdlIGRvIGNoZWNr IGRvbWFpbiBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNU RElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKK2EJMTEJMTQKK1wuCisKKy0tZmFpbC4g Zmlyc3QgY2hlY2sgY29uc3RyYWludCBmYWlscywgdGhlbiB3ZSBjb252ZXJ0IGNvbHVtbiBhIHZh bHVlIHRvIG51bGwKKy0tIGJ5IG9uX2Vycm9yIHNldF90b19udWwgYnV0IGNvbHVtbiBhIGRvbWFp biB0eXBlIG5vdCBhbGxvdyBudWxsIHZhbHVlLgorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CistMQkxMQkxMworXC4KKworLS1vay4g Q2hlY2sgaW50ZXJhY3Rpb24gd2l0aCBSRUpFQ1QgTElNSVQKK0NPUFkgdF9vbl9lcnJvcl9udWxs IEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyKTsK Ky0xCTExCTEzCithCTExCTE0CisxCTExCTE0CitcLgorCistLSBjaGVjayBpbnNlcnRlZCBjb250 ZW50CitUQUJMRSB0X29uX2Vycm9yX251bGw7CisKKy0tZmFpbC4gQ2hlY2sgaW50ZXJhY3Rpb24g d2l0aCBSRUpFQ1QgTElNSVQKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAo b25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyKTsKKy0xCTExCTEzCithCTExCTE0 CitcTgkxMQkxNAorXC4KKwogLS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192 ZXJib3NpdHkgYW5kIG51bGwgY29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRj aGVja19pZ25fZXJyMiB2YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19p Z25fZXJyMiAobiBpbnQsIG0gaW50W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC01 NDEsNiArNTg5LDEyIEBAIENPUFkgY2hlY2tfaWduX2VycjIgRlJPTSBTVERJTiBXSVRIIChvbl9l cnJvciBpZ25vcmUsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CiAxCXsxfQkxCSdmb28nCiAyCXsy fQkyCVxOCiBcLgorLS0gY2hlY2sgbnVsbCBzdWJzdGl0dXRpb24gbWFzc2FnZXMuCitDT1BZIGNo ZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVj dF9saW1pdCAyLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOworMQl7MX0JZm9vCSdmb28nCisyCXsy fQkyCVxOCisyCXsyfQkyCSdmb29vb29vb29vb29vb29vbycKK1wuCiBDT1BZIGNoZWNrX2lnbl9l cnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCBsb2dfdmVyYm9zaXR5IHNpbGVu dCk7CiAzCXszfQkzCSdiYXInCiA0CXs0fQk0CVxOCkBAIC01ODgsNiArNjQyLDI5IEBAIGEJezd9 CTcKIDEwCXsxMH0JMTAKIFwuCiAKKy0tIHRlc3RzIGZvciBvbl9lcnJvciBzZXRfdG9fbnVsbCBv cHRpb24KK3RydW5jYXRlIGNoZWNrX2lnbl9lcnI7CitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CisxCXsxfQlhCisyCXsyfQkxCiszCXsz fQkyCis0CXs0fQliCithCXs1fQljCitcLgorCitccHNldCBudWxsIE5VTEwKK1NFTEVDVCAqIEZS T00gY2hlY2tfaWduX2VycjsKKworLS1zaG91bGQgZmFpbC4KK0NPUFkgY2hlY2tfaWduX2VyciBG Uk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEs CitcLgorCistLXNob3VsZCBmYWlsLgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lU SCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3RvX251bGwpOworMSx7MX0sMSwxCitcLgor CiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7 CkBAIC02MDMsNiArNjgwLDggQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3 OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9O IGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsK K0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7 CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIy OwogRFJPUCBUQUJMRSBoYXJkX2VycjsKLS0gCjIuMzQuMQoK --0000000000009bae030627037227--