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 1tCFWf-00ErT4-GF for pgsql-hackers@arkaria.postgresql.org; Sat, 16 Nov 2024 09:55:33 +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 1tCFWa-00Di7j-Lk for pgsql-hackers@arkaria.postgresql.org; Sat, 16 Nov 2024 09:55:29 +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 1tCFWa-00Di7R-6w for pgsql-hackers@lists.postgresql.org; Sat, 16 Nov 2024 09:55:28 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tCFWV-002EbW-0l for pgsql-hackers@lists.postgresql.org; Sat, 16 Nov 2024 09:55:26 +0000 Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2fb5740a03bso27523801fa.1 for ; Sat, 16 Nov 2024 01:55:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731750923; x=1732355723; 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=2le6Hoo/+Yuy/4fyjSIXd1TtxQnWqzlf5USBiNdOE1U=; b=SIanY4UXmO0l+L9iuQiZTJik/deRtlgUuYRwlh/VV4ICQoojAVXeruj3jyxrR+iHwU LdTJn2tPhiccGfE25wv9chq93fgbHfDrKF2er12sJmcK0tGNrCJasAhFE8DAkl6Vwfbn QpsyyqRagm+r8aE4lvhlwJB/4R5mqgOKbrZVIRkexWH4OcwymXM55YZqZOa96JY90eGa PjkZHmFHzqliOBnC2tlFxGCp0N+YBmTximbx9OHEL0ctN3wEGu85TqF7xbC9ktMzQsYH HHrPYjb8sJcE5XUZ+bwxzVMNoAzsv2dbMyBEmC4zLkzkdBXwD73o/7xS1rWUbF1JN5zx bImw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731750923; x=1732355723; 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=2le6Hoo/+Yuy/4fyjSIXd1TtxQnWqzlf5USBiNdOE1U=; b=DJEsw+lsBDsXRBjuPkJvG5ONXAYiUEu5GzUG/yz7qpmMYRzbc9DG47BC7gzTs872Zz sN1/a5EAA/COEpqi7iY5LBn8hjzWP+q/Q1b58xLxhRt7KM02OHutKO9UHNZ6kAejDXv+ enlGji+RSnaBeDDIqAGXw/t4uBc2a6khdcefQy61idnyu+s5TC8Bq68nyTF6OsP95gid dtE9VygcEEF//43Cx+EkJG6S+yW1k2j0eiMaKJ/NYwDei2jdVoiE5zh8ngxhH3qS13Wg RRxY7/hRbpDLjv/BR+iTYnJ0szfIzGoUw+xZ5p5fefXzNnqGHlilJuhUwV/blAt5CbSp CZDw== X-Forwarded-Encrypted: i=1; AJvYcCWW95+U/nu+gUbTJ/kH1K32MyzNViAGLtmDOqVppgqNwy39XFtxEEqlBvmAK5t3addD0iF//WygRbnRpQqt@lists.postgresql.org X-Gm-Message-State: AOJu0YytsDv84DKBCcoZFasQXuHgtvplviD0HkyBxTx7oePhYsbI6go9 Q8+lTKdTymmmz7IOSttPNOvdU54L1P+jkg4BXWs6+/SaDLmtqQnSAevg6aUpdnEO5HokEyZXjOp bs4HUILQnAIUC4F7/I8I7aMHEArk= X-Google-Smtp-Source: AGHT+IFJHSBfuYWljAZoH3uFWqJ1mKL+320Pcx7IZVfZt4Naw8v1YDjfFIQARM7fvx0v4SYlVWi8dPJafVn1hHit910= X-Received: by 2002:a05:651c:50b:b0:2fb:4a63:92c0 with SMTP id 38308e7fff4ca-2ff6062b005mr31455491fa.14.1731750922205; Sat, 16 Nov 2024 01:55:22 -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: Kirill Reshke Date: Sat, 16 Nov 2024 14:55:10 +0500 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: jian he Cc: Fujii Masao , Jim Jones , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000008ee552062704aea6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008ee552062704aea6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 16 Nov 2024 at 13:27, jian he wrote: > > 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 = the > > > > first column of t_on_error_null using COPY ON_ERROR SET_TO_NULL. Wh= y > > > > 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 seco= nd > > > > call is successful, we do replacement, otherwise we count the row a= s > > > > erroneous. > > > > > > Your concern is valid. Allowing NULL to be stored in a column with a = NOT NULL > > > constraint via COPY ON_ERROR=3DSET_TO_NULL does seem unexpected. As y= ou 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. Hello. I received your email just as I was ready to send my version eight of this thread. Your patch does not apply due to 9a70f67. ``` reshke@ygp-jammy:~/pg$ git apply v8-0001-COPY-option-on_error-set_to_null.p= atch error: patch failed: src/backend/commands/copyfrom.c:1018 error: src/backend/commands/copyfrom.c: patch does not apply ``` 1) Your v8 does not fix tab-complete issue mentioned by Atsushi Torikoshi in [1]. 2) Your version does not address discussion about SET_TO_NULL vs REJECT_LIMIT (see [2] & [3]). I am leaning towards option 1 from [3], and my v8 implements that. ``` reshke=3D# create domain dd as int not null; CREATE DOMAIN reshke=3D# create table tt(i dd); CREATE TABLE reshke=3D# copy tt from stdin with (on_error set_to_null, log_verbosity verbose, reject_limit 2); Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. >> s >> 1 >> \. ERROR: domain dd does not allow null values CONTEXT: COPY tt, line 1, column i: "s" reshke=3D# ``` I expect no error here, as reject_limit is specified. Regression test that checks for this in v7 were changed, in my opinion, incorrectly. I am attaching my v8 for reference. [1] https://www.postgresql.org/message-id/501dd655ddb04693c15baeb6485bc601%= 40oss.nttdata.com [2] https://www.postgresql.org/message-id/07587c36-18b3-4ccb-b5fb-579bcb04e= d37%40oss.nttdata.com [3] https://www.postgresql.org/message-id/1462d79784b2475f1c714c65a6f25652%= 40oss.nttdata.com --=20 Best regards, Kirill Reshke --0000000000008ee552062704aea6 Content-Type: application/octet-stream; name="v8-0001-Introduce-COPY-option-to-replace-columns-containi.patch" Content-Disposition: attachment; filename="v8-0001-Introduce-COPY-option-to-replace-columns-containi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3jyv5qr0 RnJvbSBkZjM5YjM4NTg5ZmM4Mzg0ZTA1OTBkNzZmOGIwZTJlNDI5NWY2ZjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTc6MDc6MDIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY4 XSBJbnRyb2R1Y2UgQ09QWSBvcHRpb24gdG8gcmVwbGFjZSBjb2x1bW5zIGNvbnRhaW5pbmcKIGVy cm9uZW91cyBkYXRhIHdpdGggbnVsbAoKZXh0ZW50ICJvbl9lcnJvciBhY3Rpb24iLCBpbnRyb2R1 Y2UgbmV3IG9wdGlvbjogb25fZXJyb3Igc2V0X3RvX251bGwuCgpEdWUgdG8gY3VycmVudCBncmFt bWFyLCB3ZSBjYW5ub3QgdXNlICJvbl9lcnJvciBudWxsIiwKc28gSSBjaG9vc2Ugb25fZXJyb3Ig c2V0X3RvX251bGwuCgphbnkgZGF0YSB0eXBlIGNvbnZlcnNpb24gZXJyb3JzIHdoaWxlIHRoZSBD T1BZIEZST00gcHJvY2VzcyB3aWxsIHNldCB0aGF0IGNvbHVtbiB2YWx1ZSB0byBiZSBOVUxMLgp0 aGlzIHdpbGwgb25seSB3b3JrIHdpdGggQ09QWSBGUk9NIGFuZCBub24tYmluYXJ5IGZvcm1hdC4K Ckhvd2V2ZXIgdGhpcyB3aWxsIHJlc3BlY3QgdGhlIG5vdC1udWxsIGNvbnN0cmFpbnQsIG1lYW5p bmcsIGlmIHlvdSBhY3R1YWxseSBjb252ZXJ0ZWQgZXJyb3IgdG8gbnVsbCwKYnV0IHRoZSBjb2x1 bW4gaGFzIG5vdC1udWxsIGNvbnN0cmFpbnQsIG5vdC1udWxsIGNvbnN0cmFpbnQgdmlvbGF0aW9u IEVSUk9SIHdpbGwgYmUgcmFpc2VkLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9D QUtGUXV3YXd5MWU2WVI0Uz1qK3k3cFhxZ19EdzFXQlZyZ3ZmPUJQM2QxX2FTZmVfK1FAbWFpbC5n bWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgfCAgIDkg Ky0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgfCAgMTIgKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgIHwgIDUzICsrKysrKysrKysrLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgfCAgNjkgKysrKysrKysrKysrKysr KystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgfCAgIDIgKy0KIHNyYy9p bmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHkyLm91dCAgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKystCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAgICAgfCAgODIgKysrKysrKysrKysrKysr KysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAzMDMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbAppbmRleCA4Mzk0NDAyZjA5Ni4uYmNlMTBlYTYyZTUgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29w eS5zZ21sCkBAIC0zOTQsMTIgKzM5NCwxMyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAg ICBTcGVjaWZpZXMgaG93IHRvIGJlaGF2ZSB3aGVuIGVuY291bnRlcmluZyBhbiBlcnJvciBjb252 ZXJ0aW5nIGEgY29sdW1uJ3MKICAgICAgIGlucHV0IHZhbHVlIGludG8gaXRzIGRhdGEgdHlwZS4K ICAgICAgIEFuIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3Jl cGxhY2VhYmxlPiB2YWx1ZSBvZgotICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMg ZmFpbCB0aGUgY29tbWFuZCwgd2hpbGUKLSAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4g bWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9u ZS4KKyAgICAgIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+IG1lYW5zIGZhaWwgdGhlIGNvbW1hbmQs CisgICAgICA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG1lYW5zIGRpc2NhcmQgdGhlIGlucHV0 IHJvdyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmUsIGFuZAorICAgICAgPGxpdGVyYWw+ c2V0X3RvX251bGw8L2xpdGVyYWw+IG1lYW5zIHJlcGxhY2UgY29sdW1ucyBjb250YWluaW5nIGVy cm9uZW91cyBpbnB1dCB2YWx1ZXMgd2l0aCA8bGl0ZXJhbD5udWxsPC9saXRlcmFsPiBhbmQgbW92 ZSB0byB0aGUgbmV4dCByb3cuCiAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5zdG9wPC9s aXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRoZSA8bGl0ZXJhbD5p Z25vcmU8L2xpdGVyYWw+IG9wdGlvbiBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5kPkNP UFkgRlJPTTwvY29tbWFuZD4KKyAgICAgIFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4gb3B0aW9ucyBhcmUgYXBwbGljYWJsZSBv bmx5IGZvciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CiAgICAgICB3aGVuIHRoZSA8bGl0 ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGlzIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPmNzdjwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CkBAIC00MjIsNyAr NDIzLDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU3BlY2lmaWVzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBlcnJvcnMgdG9sZXJhdGVkIHdoaWxlIGNvbnZlcnRpbmcgYQogICAgICAg Y29sdW1uJ3MgaW5wdXQgdmFsdWUgdG8gaXRzIGRhdGEgdHlwZSwgd2hlbiA8bGl0ZXJhbD5PTl9F UlJPUjwvbGl0ZXJhbD4gaXMKICAgICAgIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+ LgotICAgICAgSWYgdGhlIGlucHV0IGNhdXNlcyBtb3JlIGVycm9ycyB0aGFuIHRoZSBzcGVjaWZp ZWQgdmFsdWUsIHRoZSA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPgorICAgICAgSWYgdGhlIGlucHV0 IGNvbnRhaW5zIG1vcmUgZXJyb25lb3VzIHJvd3MgdGhhbiB0aGUgc3BlY2lmaWVkIHZhbHVlLCB0 aGUgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4KICAgICAgIGNvbW1hbmQgZmFpbHMsIGV2ZW4gd2l0 aCA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0 ZXJhbD4uCiAgICAgICBUaGlzIGNsYXVzZSBtdXN0IGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5PTl9F UlJPUjwvbGl0ZXJhbD49PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPgogICAgICAgYW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXhlcnJvcjwvcmVwbGFjZWFibGU+IG11c3QgYmUg cG9zaXRpdmUgPHR5cGU+YmlnaW50PC90eXBlPi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAzNDg1YmE4 NjYzZi4uMzA0MDIyY2Q4NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHku YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTQwMywxMiArNDAzLDE0IEBA IGRlZkdldENvcHlPbkVycm9yQ2hvaWNlKERlZkVsZW0gKmRlZiwgUGFyc2VTdGF0ZSAqcHN0YXRl LCBib29sIGlzX2Zyb20pCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZi0+bG9j YXRpb24pKSk7CiAKIAkvKgotCSAqIEFsbG93ICJzdG9wIiwgb3IgImlnbm9yZSIgdmFsdWVzLgor CSAqIEFsbG93ICJzdG9wIiwgImlnbm9yZSIsICJzZXRfdG9fbnVsbCIgdmFsdWVzLgogCSAqLwog CWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJzdG9wIikgPT0gMCkKIAkJcmV0dXJuIENPUFlfT05f RVJST1JfU1RPUDsKIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiaWdub3JlIikgPT0gMCkKIAkJ cmV0dXJuIENPUFlfT05fRVJST1JfSUdOT1JFOworCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJz ZXRfdG9fbnVsbCIpID09IDApCisJCXJldHVybiBDT1BZX09OX0VSUk9SX05VTEw7CiAKIAllcmVw b3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC05MDQsMTMgKzkwNiwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJv bmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAKLQlpZiAo b3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCWlmIChvcHRz X291dC0+cmVqZWN0X2xpbWl0ICYmICEob3B0c19vdXQtPm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfTlVMTCB8fCBvcHRzX291dC0+b25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkvKi0gdHJhbnNsYXRvcjogZmlyc3QgYW5kIHNlY29uZCAlcyBhcmUgdGhlIG5h bWVzIG9mIENPUFkgb3B0aW9uLCBlLmcuCi0JCSAqIE9OX0VSUk9SLCB0aGlyZCBpcyB0aGUgdmFs dWUgb2YgdGhlIENPUFkgb3B0aW9uLCBlLmcuIElHTk9SRSAqLwotCQkJCSBlcnJtc2coIkNPUFkg JXMgcmVxdWlyZXMgJXMgdG8gYmUgc2V0IHRvICVzIiwKLQkJCQkJCSJSRUpFQ1RfTElNSVQiLCAi T05fRVJST1IiLCAiSUdOT1JFIikpKTsKKwkJICogT05fRVJST1IsIHRoaXJkIGlzIHRoZSB2YWx1 ZSBvZiB0aGUgQ09QWSBvcHRpb24sIGUuZy4gSUdOT1JFIG9yIFNFVF9UT19OVUxMICovCisJCQkJ IGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyAlcyB0byBiZSBzZXQgdG8gJXMgb3IgJXMiLAorCQkJ CQkJIlJFSkVDVF9MSU1JVCIsICJPTl9FUlJPUiIsICJJR05PUkUiLCAiU0VUX1RPX05VTEwiKSkp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggNzU0Y2I0OTYxNjkuLjU1N2Iw MDI2NmZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTEwMDMsNyArMTAwMyw3IEBAIENv cHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQlpZiAoIU5leHRDb3B5RnJvbShjc3RhdGUs IGVjb250ZXh0LCBteXNsb3QtPnR0c192YWx1ZXMsIG15c2xvdC0+dHRzX2lzbnVsbCkpCiAJCQli cmVhazsKIAotCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdO T1JFICYmCisJCWlmICgoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdO T1JFIHx8IGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpICYmCiAJ CQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQpCiAJCXsKIAkJCS8qCkBAIC0xMDE4 LDEyICsxMDE4LDMwIEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQkJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DT1BZX1RVUExFU19TS0lQUEVELAogCQkJ CQkJCQkJCSBjc3RhdGUtPm51bV9lcnJvcnMpOwogCi0JCQlpZiAoY3N0YXRlLT5vcHRzLnJlamVj dF9saW1pdCA+IDAgJiYKLQkJCQljc3RhdGUtPm51bV9lcnJvcnMgPiBjc3RhdGUtPm9wdHMucmVq ZWN0X2xpbWl0KQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCi0JCQkJCQkgZXJybXNnKCJza2lwcGVkIG1vcmUg dGhhbiBSRUpFQ1RfTElNSVQgKCVsbGQpIHJvd3MgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGli aWxpdHkiLAotCQkJCQkJCQkobG9uZyBsb25nKSBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KSkp OworCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkK KwkJCXsKKwkJCQlpZiAoY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCA+IDAgJiYKKwkJCQkJY3N0 YXRlLT5udW1fZXJyb3JzID4gY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCkKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRB VElPTiksCisJCQkJCQkJZXJybXNnKCJza2lwcGVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgKCVs bGQpIHJvd3MgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkJKGxv bmcgbG9uZykgY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCkpKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQkvKiBQcm92aWRlIGRpZmZlcmVudCBlcnJvciBtc2cgaWYgcmVqZWN0X2xpbWl0IGlz IHplcm8gKi8KKwkJCQlpZiAoY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCA9PSAwKQorCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJF U0VOVEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImZhaWxlZCB0byByZXBsYWNlIGNvbHVtbiBjb250 YWluaW5nIGVycm9uZW91cyBkYXRhIHdpdGggbnVsbCIsCisJCQkJCQkJCQkobG9uZyBsb25nKSBj c3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KSwKKwkJCQkJCQllcnJoaW50KCJDb25zaWRlciBzcGVj aWZ5aW5nIHRoZSBSRUpFQ1RfTElNSVQgb3B0aW9uIHRvIHNraXAgZXJyb25lb3VzIHJvd3MuIikp KTsKKwkJCQllbHNlIGlmIChjc3RhdGUtPm51bV9lcnJvcnMgPiBjc3RhdGUtPm9wdHMucmVqZWN0 X2xpbWl0KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImVuY291bnRlcmVkIG1v cmUgdGhhbiBSRUpFQ1RfTElNSVQgKCVsbGQpIHJvd3Mgd2l0aCBkYXRhIHR5cGUgaW5jb21wYXRp YmlsaXR5IiwKKwkJCQkJCQkJCShsb25nIGxvbmcpIGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXQp KSk7CisJCQl9CiAKIAkJCS8qIFJlcGVhdCBOZXh0Q29weUZyb20oKSB1bnRpbCBubyBzb2Z0IGVy cm9yIG9jY3VycyAqLwogCQkJY29udGludWU7CkBAIC0xMzIxLDcgKzEzMzksNyBAQCBDb3B5RnJv bShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2Nv bnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUtPm9wdHMu b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCisJaWYgKGNzdGF0ZS0+b3B0cy5vbl9l cnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSAmJgogCQljc3RhdGUtPm51bV9lcnJvcnMgPiAw ICYmCiAJCWNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID49IENPUFlfTE9HX1ZFUkJPU0lUWV9E RUZBVUxUKQogCQllcmVwb3J0KE5PVElDRSwKQEAgLTEzMzAsNiArMTM0OCwxOCBAQCBDb3B5RnJv bShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNz dGF0ZS0+bnVtX2Vycm9ycywKIAkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+ bnVtX2Vycm9ycykpOwogCisJLyogSW4gY2FzZSBvbl9lcnJvciBTRVRfVE9fTlVMTCwgaWYgQ09Q WSBzdWNjZWVkLCBpdCBtZWFucyB0aGF0CisJICogYWxsIGVycm9uZW91cyByb3dzIGF0dHJpYnV0 ZXMgZmlsbGVkIHdpdGggTlVMTAorCSAqLworCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0g Q09QWV9PTl9FUlJPUl9OVUxMICYmCisJCWNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKKwkJY3N0 YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPj0gQ09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQpCisJ CWVyZXBvcnQoTk9USUNFLAorCQkJCWVycm1zZ19wbHVyYWwoIkVycm9uZW91cyB2YWx1ZXMgaW4g JWxsdSByb3cgd2VyZSByZXBsYWNlZCB3aXRoIE5VTEwiLAorCQkJCQkJCSAgIkVycm9uZW91cyB2 YWx1ZXMgaW4gJWxsdSByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBOVUxMIiwKKwkJCQkJCQkgICh1 bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVtX2Vycm9ycywKKwkJCQkJCQkgICh1bnNpZ25l ZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVtX2Vycm9ycykpOworCiAJaWYgKGJpc3RhdGUgIT0gTlVM TCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKIApAQCAtMTQ3NCwxMCArMTUwNCwx MSBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJY3N0YXRlLT5lc2NvbnRl eHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CiAKIAkJLyoKLQkJICogQ3VycmVudGx5IHdlIG9u bHkgc3VwcG9ydCBDT1BZX09OX0VSUk9SX0lHTk9SRS4gV2UnbGwgYWRkIG90aGVyCi0JCSAqIG9w dGlvbnMgbGF0ZXIKKwkJICogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBDT1BZX09OX0VSUk9S X0lHTk9SRSwgQ09QWV9PTl9FUlJPUl9OVUxMLgorCQkgKiBXZSdsbCBhZGQgb3RoZXIgb3B0aW9u cyBsYXRlcgogCQkgKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VS Uk9SX0lHTk9SRSkKKwkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9S X0lHTk9SRSB8fAorCQkJY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfTlVM TCkKIAkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5kZXRhaWxzX3dhbnRlZCA9IGZhbHNlOwogCX0KIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggZDFkNDNiNTNkODMuLjk0 MzkyNmFkMWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC04NzEsNiAr ODcxLDcgQEAgTmV4dENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsCiAJCWludAkJCWZsZGN0OwogCQlpbnQJCQlmaWVsZG5vOwogCQljaGFyCSAgICpz dHJpbmc7CisJCWJvb2wJCWN1cnJlbnRfcm93X2Vycm9uZW91cyA9IGZhbHNlOwogCiAJCS8qIHJl YWQgcmF3IGZpZWxkcyBpbiB0aGUgbmV4dCBsaW5lICovCiAJCWlmICghTmV4dENvcHlGcm9tUmF3 RmllbGRzKGNzdGF0ZSwgJmZpZWxkX3N0cmluZ3MsICZmbGRjdCkpCkBAIC05NDksNyArOTUwLDgg QEAgTmV4dENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRl eHQsCiAKIAkJCS8qCiAJCQkgKiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZpZWQgd2l0aCBJR05PUkUs IHNraXAgcm93cyB3aXRoIHNvZnQKLQkJCSAqIGVycm9ycworCQkJICogZXJyb3JzLiBJZiBPTl9F UlJPUiBpcyBzcGVjaWZpZWQgd2l0aCBTRVRfVE9fTlVMTCwgdHJ5CisJCQkgKiB0byByZXBsYWNl IGF0dHJpYnV0ZSB2YWx1ZSB3aXRoIE5VTEwuCiAJCQkgKi8KIAkJCWVsc2UgaWYgKCFJbnB1dEZ1 bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9uc1ttXSwKIAkJCQkJCQkJCQkJc3RyaW5nLApAQCAt OTYwLDkgKzk2Miw2MyBAQCBOZXh0Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwKIAkJCXsKIAkJCQlBc3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9y ICE9IENPUFlfT05fRVJST1JfU1RPUCk7CiAKLQkJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJ CQkvKgorCQkJCSogUmVnYXJkbGVzcyBvZiBOVUxMIHN1YnN0cml0aW9uIHN1Y2Nlc3MsIHdlIGNv dW50CisJCQkJKiBjdXJyZW50IHJvdyBhcyBlcnJvbmVvdXMKKwkJCQkqLworCQkJCWN1cnJlbnRf cm93X2Vycm9uZW91cyA9IHRydWU7CiAKLQkJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3Np dHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCisJCQkJLyoKKwkJCQkqIFdlIGVuY291 bnRlcmVkIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgb25lIG9mIGF0dHJpYnV0ZXMuCisJCQkJKgor CQkJCSovCisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05V TEwgJiYgc3RyaW5nICE9IE5VTEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkqIFRlbXBvcmFyeSB1 bnNldCBlcnJvcl9vY2N1cnJlZCwgZm9yIG5leHQgSW5wdXRGdW5jdGlvbkNhbGxTYWZlCisJCQkJ CSogc2FuaXR5LiBJZiBudWxsIHN1YnN0aXR1dGlvbiBmb3IgdGhpcyBhdHRyaWJ1dGUgd2lsbAor CQkJCQkqIHN1Y2NlZWQsIHdlIHdpbGwgYWNjZXB0IHRoaXMgcm93LgorCQkJCQkqLworCQkJCQlj c3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKworCQkJCQlpZiAoSW5w dXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCisJCQkJCQkJCQkJCU5VTEwsCisJ CQkJCQkJCQkJCXR5cGlvcGFyYW1zW21dLAorCQkJCQkJCQkJCQlhdHQtPmF0dHR5cG1vZCwKKwkJ CQkJCQkJCQkJKE5vZGUgKikgY3N0YXRlLT5lc2NvbnRleHQsCisJCQkJCQkJCQkJCSZ2YWx1ZXNb bV0pKQorCQkJCQl7CisJCQkJCQkvKiBJZiBkYXRhdHlwZSBpZiBva2F5IHdpdGggTlVMTCwgcmVw bGFjZQorCQkJCQkJKiB3aXRoIG51bGwKKwkJCQkJCSovCisJCQkJCQludWxsc1ttXSA9IHRydWU7 CisKKwkJCQkJCWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJC T1NJVFlfVkVSQk9TRSkKKwkJCQkJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJCQkJCWVycm1zZygi cmVwbGFjZWQgcm93IGF0dHJpYnV0ZSBcIiVzXCIgd2l0aCBOVUxMIGR1ZSB0byBkYXRhIHR5cGUg aW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJWxsdS4iLAorCQkJCQkJCQkJCWNzdGF0ZS0+Y3VyX2F0 dG5hbWUsICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+Y3VyX2xpbmVubykpOworCQkJCQkJ Y29udGludWU7CisJCQkJCX0KKworCQkJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkg PT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCisJCQkJCQllcmVwb3J0KE5PVElDRSwKKwkJ CQkJCQkJZXJybXNnKCJmYWlsZWQgdG8gcmVwbGFjZSByb3cgYXR0cmlidXRlIFwiJXNcIiB3aXRo IE5VTEwgYXQgbGluZSAlbGx1LiIsCisJCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9hdHRuYW1lLCAo dW5zaWduZWQgbG9uZyBsb25nKWNzdGF0ZS0+Y3VyX2xpbmVubykpOworCQkJCX0KKworCQkJCS8q CisJCQkJKiBIZXJlIHdlIGVuZCBwcm9jZXNzaW5nIG9mIGN1cnJlbnQgQ09QWSByb3cuCisJCQkJ KiBVcGRhdGUgY29weSBzdGF0ZSBjb3VudGVyIGZvciBudW1iZXIgb2YgZXJyb25lb3VzIHJvd3Mu CisJCQkJKi8KKwkJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJCQljc3RhdGUtPmVzY29udGV4 dC0+ZXJyb3Jfb2NjdXJyZWQgPSB0cnVlOworCisJCQkJLyogT25seSBwcmludCB0aGlzIE5PVElD RSBtZXNzYWdlLCBpZiBpdCB3aWxsIG5vdCBiZSBmb2xsb3dlZCBieSBFUlJPUiAqLworCQkJCWlm IChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9T RSAmJgorCQkJCQkgKAorCQkJCQkJIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9F UlJPUl9OVUxMICYmIGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXQgPiAwICYmIGNzdGF0ZS0+bnVt X2Vycm9ycyA8PSBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KSB8fAorCQkJCQkJIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgJiYgKGNzdGF0ZS0+b3B0cy5y ZWplY3RfbGltaXQgPT0gIDAgfHwgY3N0YXRlLT5udW1fZXJyb3JzIDw9IGNzdGF0ZS0+b3B0cy5y ZWplY3RfbGltaXQpKQorCQkJCQkgKSkKIAkJCQl7CiAJCQkJCS8qCiAJCQkJCSAqIFNpbmNlIHdl IGVtaXQgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBpbmZvIGluIHRoZSBiZWxvdwpAQCAtMTAwMSw2 ICsxMDU3LDEzIEBAIE5leHRDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LAogCQkJY3N0YXRlLT5jdXJfYXR0dmFsID0gTlVMTDsKIAkJfQogCisJCS8q CisJCSogVXBkYXRlIGNvcHkgc3RhdGUgY291bnRlciBmb3IgbnVtYmVyIG9mIGVycm9uZW91cyBy b3dzLgorCQkqIEJ1dCBkbyBub3Qgc2V0IGVycm9yX29jY3VycmVkLCBzaW5jZSByb3cgd2FzIGFj dHVhbGx5IGFjY2VwdGVkCisJCSovCisJCWlmIChjdXJyZW50X3Jvd19lcnJvbmVvdXMpCisJCQlj c3RhdGUtPm51bV9lcnJvcnMrKzsKKwogCQlBc3NlcnQoZmllbGRubyA9PSBhdHRyX2NvdW50KTsK IAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGZhZDIyNzc5OTFkLi5jMjkwMmZm YzMzOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzIzNSw3ICszMjM1LDcgQEAgbWF0Y2hf cHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkZPUk1BVCIs ICJGUkVFWkUiLCAiREVMSU1JVEVSIiwgIk5VTEwiLAogCQkJCQkgICJIRUFERVIiLCAiUVVPVEUi LCAiRVNDQVBFIiwgIkZPUkNFX1FVT1RFIiwKIAkJCQkJICAiRk9SQ0VfTk9UX05VTEwiLCAiRk9S Q0VfTlVMTCIsICJFTkNPRElORyIsICJERUZBVUxUIiwKLQkJCQkJICAiT05fRVJST1IiLCAiTE9H X1ZFUkJPU0lUWSIpOworCQkJCQkgICJPTl9FUlJPUiIsICJTRVRfVE9fTlVMTCIsICJMT0dfVkVS Qk9TSVRZIik7CiAKIAkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmlsZW5hbWUgV0lU SCAoRk9STUFUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwg IkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJGT1JNQVQiKSkKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aAppbmRleCA0MDAyYTdmNTM4Mi4uMDUxY2ExMmQxMDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTM4 LDYgKzM4LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9PTl9F UlJPUl9TVE9QID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAqLwog CUNPUFlfT05fRVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlfT05fRVJS T1JfTlVMTCwJCQkvKiBzZXQgZXJyb3IgZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25FcnJvckNo b2ljZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXggNjRlYTMzYWVh ZTguLmQ5ZDY0MDgyNDc4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dApAQCAtODEs NiArODEsMTAgQEAgQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3Ig aWdub3JlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUg MTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdub3JlKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB4IGZy b20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitF UlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCitMSU5FIDE6IENPUFkgeCBm cm9tIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgb25fZXJyb3Igc2V0X3RvX251bC4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIENPUFkg eCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9z ZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENP UFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVy Yi4uLgpAQCAtOTIsNiArOTYsOCBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwg bnVsbCAneCcpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEJJTkFSWSBtb2RlCiBD T1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgaWdub3JlKTsKIEVSUk9S OiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkgeCBm cm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjog IG9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCiBDT1BZIHggZnJv bSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIE9OX0VSUk9SICJ1 bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9u X2Vycm9yIHVuc3VwcG9ydGVkKTsKQEAgLTEyNCwxMiArMTMwLDE2IEBAIENPUFkgeCB0byBzdGRv dXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBP Tl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KIExJTkUgMTogQ09QWSB4IHRvIHN0 ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitDT1BZIHggdG8gc3RkaW4gKG9uX2Vycm9y IHNldF90b19udWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRo IENPUFkgVE8KK0xJTkUgMTogQ09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJi b3NpdHkgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJVFkgInVuc3VwcG9y dGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJv c2l0eSB1bnN1cHBvcnRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHgg ZnJvbSBzdGRpbiB3aXRoIChyZWplY3RfbGltaXQgMSk7Ci1FUlJPUjogIENPUFkgUkVKRUNUX0xJ TUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUKK0VSUk9SOiAgQ09QWSBS RUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRSBvciBTRVRf VE9fTlVMTAogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3Rf bGltaXQgMCk7CiBFUlJPUjogIFJFSkVDVF9MSU1JVCAoMCkgbXVzdCBiZSBncmVhdGVyIHRoYW4g emVybwogLS0gdG9vIG1hbnkgY29sdW1ucyBpbiBjb2x1bW4gbGlzdDogc2hvdWxkIGZhaWwKQEAg LTc2OSw2ICs3NzksNTAgQEAgQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAg c2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgOCBm b3IgY29sdW1uICJrIjogImEiCiBDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6 ICA2IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitD UkVBVEUgRE9NQUlOIGRfaW50X25vdF9udWxsIEFTIElOVCBOT1QgTlVMTCBDSEVDSyh2YWx1ZSA+ IDApOworQ1JFQVRFIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxsIEFTIElOVCBDSEVD Syh2YWx1ZSA+IDApOworQ1JFQVRFIFRBQkxFIHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3Rf bnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxsLCBjIElOVCk7CitccHNldCBudWxsIE5V TEwKKy0tb2sKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig c2V0X3RvX251bGwpOworTk9USUNFOiAgRXJyb25lb3VzIHZhbHVlcyBpbiAxIHJvdyB3ZXJlIHJl cGxhY2VkIHdpdGggTlVMTAorLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBX SVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitOT1RJQ0U6ICBFcnJvbmVvdXMgdmFsdWVzIGlu IDEgcm93IHdlcmUgcmVwbGFjZWQgd2l0aCBOVUxMCistLSBjaGVjayBpbnNlcnRlZCBjb250ZW50 CitUQUJMRSB0X29uX2Vycm9yX251bGw7CisgYSAgfCAgYiAgIHwgIGMgICAKKy0tLS0rLS0tLS0t Ky0tLS0tLQorIDExIHwgTlVMTCB8ICAgMTIKKyAgMSB8ICAgMTEgfCBOVUxMCisoMiByb3dzKQor CistLWZhaWwKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig c2V0X3RvX251bGwpOworRVJST1I6ICBmYWlsZWQgdG8gcmVwbGFjZSBjb2x1bW4gY29udGFpbmlu ZyBlcnJvbmVvdXMgZGF0YSB3aXRoIG51bGwKK0hJTlQ6ICBDb25zaWRlciBzcGVjaWZ5aW5nIHRo ZSBSRUpFQ1QgTElNSVQgb3B0aW9uIHRvIHNraXAgZXJyb25lb3VzIHJvd3MuCitDT05URVhUOiAg Q09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6ICJhIgorLS1mYWlsCitDT1BZ IHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsK K0VSUk9SOiAgZmFpbGVkIHRvIHJlcGxhY2UgY29sdW1uIGNvbnRhaW5pbmcgZXJyb25lb3VzIGRh dGEgd2l0aCBudWxsCitISU5UOiAgQ29uc2lkZXIgc3BlY2lmeWluZyB0aGUgUkVKRUNUIExJTUlU IG9wdGlvbiB0byBza2lwIGVycm9uZW91cyByb3dzLgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJv cl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAiLTEiCistLW9rLiBDaGVjayBpbnRlcmFjdGlvbiB3 aXRoIFJFSkVDVCBMSU1JVAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChv bl9lcnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIpOworTk9USUNFOiAgRXJyb25lb3Vz IHZhbHVlcyBpbiAyIHJvd3Mgd2VyZSByZXBsYWNlZCB3aXRoIE5VTEwKKy0tIGNoZWNrIGluc2Vy dGVkIGNvbnRlbnQKK1RBQkxFIHRfb25fZXJyb3JfbnVsbDsKKyBhICB8ICBiICAgfCAgYyAgIAor LS0tLSstLS0tLS0rLS0tLS0tCisgMTEgfCBOVUxMIHwgICAxMgorICAxIHwgICAxMSB8IE5VTEwK KyAgMSB8ICAgMTEgfCAgIDE0CisoMyByb3dzKQorCistLWZhaWwuIENoZWNrIGludGVyYWN0aW9u IHdpdGggUkVKRUNUIExJTUlUCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIHNldF90b19udWxsLCByZWplY3RfbGltaXQgMik7CitFUlJPUjogIGVuY291bnRl cmVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgKDIpIHJvd3Mgd2l0aCBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5CitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMywgY29sdW1u IGE6IG51bGwgaW5wdXQKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0aCBsb2dfdmVy Ym9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERPTUFJTiBkY2hl Y2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUgY2hlY2tfaWdu X2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIpOwpAQCAtNzc2 LDYgKzgzMCwyNiBAQCBDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJy b3IgaWdub3JlLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogTk9USUNFOiAgc2tpcHBpbmcgcm93 IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMiBmb3IgY29sdW1uICJs IjogbnVsbCBpbnB1dAogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VycjIKIE5PVElDRTogIDEg cm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CistLSBjaGVj ayBudWxsIHN1YnN0aXR1dGlvbiBtYXNzYWdlcy4KK0NPUFkgY2hlY2tfaWduX2VycjIgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsK K05PVElDRTogIGZhaWxlZCB0byByZXBsYWNlIHJvdyBhdHRyaWJ1dGUgImwiIHdpdGggTlVMTCBh dCBsaW5lIDEuCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyMiwgbGluZSAxLCBjb2x1bW4g bDogIidmb29vb29vb29vb29vb29vbyciCitFUlJPUjogIGZhaWxlZCB0byByZXBsYWNlIGNvbHVt biBjb250YWluaW5nIGVycm9uZW91cyBkYXRhIHdpdGggbnVsbAorSElOVDogIENvbnNpZGVyIHNw ZWNpZnlpbmcgdGhlIFJFSkVDVCBMSU1JVCBvcHRpb24gdG8gc2tpcCBlcnJvbmVvdXMgcm93cy4K K0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIyLCBsaW5lIDEsIGNvbHVtbiBsOiAiJ2Zvb29v b29vb29vb29vb29vJyIKK0NPUFkgY2hlY2tfaWduX2VycjIgRlJPTSBTVERJTiBXSVRIIChvbl9l cnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7 CitOT1RJQ0U6ICBmYWlsZWQgdG8gcmVwbGFjZSByb3cgYXR0cmlidXRlICJsIiB3aXRoIE5VTEwg YXQgbGluZSAxLgorQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VycjIsIGxpbmUgMSwgY29sdW1u IGw6ICInZm9vb29vb29vb29vb29vb28nIgorTk9USUNFOiAgc2tpcHBpbmcgcm93IGR1ZSB0byBk YXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMSBmb3IgY29sdW1uICJsIjogIidmb29v b29vb29vb29vb29vbyciCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyMgorTk9USUNFOiAg ZmFpbGVkIHRvIHJlcGxhY2Ugcm93IGF0dHJpYnV0ZSAibCIgd2l0aCBOVUxMIGF0IGxpbmUgMi4K K0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIyLCBsaW5lIDIsIGNvbHVtbiBsOiAiJ2Zvb29v b29vb29vb29vb29vJyIKK05PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSBhdCBsaW5lIDIgZm9yIGNvbHVtbiAibCI6ICInZm9vb29vb29vb29vb29v b28nIgorQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VycjIKK05PVElDRTogIGZhaWxlZCB0byBy ZXBsYWNlIHJvdyBhdHRyaWJ1dGUgImwiIHdpdGggTlVMTCBhdCBsaW5lIDMuCitDT05URVhUOiAg Q09QWSBjaGVja19pZ25fZXJyMiwgbGluZSAzLCBjb2x1bW4gbDogIidmb29vb29vb29vb29vb29v byciCitFUlJPUjogIGVuY291bnRlcmVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgKDIpIHJvd3Mg d2l0aCBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitDT05URVhUOiAgQ09QWSBjaGVja19pZ25f ZXJyMiwgbGluZSAzLCBjb2x1bW4gbDogIidmb29vb29vb29vb29vb29vbyciCiBDT1BZIGNoZWNr X2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCBsb2dfdmVyYm9zaXR5 IHNpbGVudCk7CiAtLSByZXNldCBjb250ZXh0IGNob2ljZQogXHNldCBTSE9XX0NPTlRFWFQgZXJy b3JzCkBAIC04MTMsNiArODg3LDI4IEBAIEVSUk9SOiAgc2tpcHBlZCBtb3JlIHRoYW4gUkVKRUNU X0xJTUlUICgzKSByb3dzIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiBDT05URVhU OiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDUsIGNvbHVtbiBuOiAiIgogQ09QWSBjaGVja19p Z25fZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgNCk7 CiBOT1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRp YmlsaXR5CistLSB0ZXN0cyBmb3Igb25fZXJyb3Igc2V0X3RvX251bGwgb3B0aW9uCit0cnVuY2F0 ZSBjaGVja19pZ25fZXJyOworQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAob25f ZXJyb3Igc2V0X3RvX251bGwpOworTk9USUNFOiAgRXJyb25lb3VzIHZhbHVlcyBpbiAzIHJvd3Mg d2VyZSByZXBsYWNlZCB3aXRoIE5VTEwKK1NFTEVDVCAqIEZST00gY2hlY2tfaWduX2VycjsKKyAg biAgIHwgIG0gIHwgIGsgICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAgICAxIHwgezF9IHwgTlVM TAorICAgIDIgfCB7Mn0gfCAgICAxCisgICAgMyB8IHszfSB8ICAgIDIKKyAgICA0IHwgezR9IHwg TlVMTAorIE5VTEwgfCB7NX0gfCBOVUxMCisoNSByb3dzKQorCistLXNob3VsZCBmYWlsLgorQ09Q WSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Ig c2V0X3RvX251bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiayIKK0NPTlRF WFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMSwgY29sdW1uIG06ICIiCistLXNob3VsZCBm YWlsLgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywg b25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhw ZWN0ZWQgY29sdW1uCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDE6ICIxLHsx fSwxLDEiCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZp c3Rlc3Q7CkBAIC04MjgsNiArOTI0LDggQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3Ri bF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZV TkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWdu X2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90 X251bGw7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2ln bl9lcnIyOwogRFJPUCBUQUJMRSBoYXJkX2VycjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkyLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAppbmRleCA0 NTI3MzU1N2NlMC4uZDFkZDYxYjRiZjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTY3LDEy ICs2NywxNCBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9yY2VfbnVsbCAoYSksIGZvcmNlX251bGwg KGIpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChjb252ZXJ0X3NlbGVjdGl2ZWx5IChhKSwgY29udmVy dF9zZWxlY3RpdmVseSAoYikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGVuY29kaW5nICdzcWxfYXNj aWknLCBlbmNvZGluZyAnc3FsX2FzY2lpJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Ig aWdub3JlLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNl dF90b19udWxsLCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9n X3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJl Y3Qgb3B0aW9ucwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAn LCcpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkg eCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZy b20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHNldF90b19udWxsKTsKIENPUFkgeCBm cm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9y bWF0IFRFWFQsIGZvcmNlX3F1b3RlKGEpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVY VCwgZm9yY2VfcXVvdGUgKik7CkBAIC04Nyw2ICs4OSw3IEBAIENPUFkgeCBmcm9tIHN0ZGluIChm b3JtYXQgVEVYVCwgZm9yY2VfbnVsbCAqKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBDU1Ys IGZvcmNlX251bGwoYSkpOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVs bCAqKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9y dGVkKTsKK0NPUFkgeCB0byBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwpOwogQ09QWSB4IGZy b20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4g d2l0aCAocmVqZWN0X2xpbWl0IDEpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3Ig aWdub3JlLCByZWplY3RfbGltaXQgMCk7CkBAIC01MzQsNiArNTM3LDUyIEBAIGEJezJ9CTIKIDgJ ezh9CTgKIFwuCiAKK0NSRUFURSBET01BSU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxM IENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251 bGwgQVMgSU5UIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxs IChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsK KworXHBzZXQgbnVsbCBOVUxMCisKKy0tb2sKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RE SU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworMTEJYQkxMgorXC4KKworLS1vaworQ09Q WSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7 CisxCTExCWQKK1wuCisKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1RBQkxFIHRfb25fZXJy b3JfbnVsbDsKKworLS1mYWlsCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIHNldF90b19udWxsKTsKK2EJMTEJMTQKK1wuCisKKy0tZmFpbAorQ09QWSB0X29u X2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CistMQkx MQkxMworXC4KKworLS1vay4gQ2hlY2sgaW50ZXJhY3Rpb24gd2l0aCBSRUpFQ1QgTElNSVQKK0NP UFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGws IHJlamVjdF9saW1pdCAyKTsKKy0xCTExCTEzCithCTExCTE0CisxCTExCTE0CitcLgorCistLSBj aGVjayBpbnNlcnRlZCBjb250ZW50CitUQUJMRSB0X29uX2Vycm9yX251bGw7CisKKy0tZmFpbC4g Q2hlY2sgaW50ZXJhY3Rpb24gd2l0aCBSRUpFQ1QgTElNSVQKK0NPUFkgdF9vbl9lcnJvcl9udWxs IEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyKTsK Ky0xCTExCTEzCithCTExCTE0CitcTgkxMQkxNAorXC4KKwogLS0gdGVzdHMgZm9yIG9uX2Vycm9y IG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29uc3RyYWludCB2aWEgZG9tYWlu CiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENS RUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50W10sIGsgaW50LCBsIGRjaGVj a19pZ25fZXJyMik7CkBAIC01NDEsNiArNTkwLDE1IEBAIENPUFkgY2hlY2tfaWduX2VycjIgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CiAx CXsxfQkxCSdmb28nCiAyCXsyfQkyCVxOCiBcLgorLS0gY2hlY2sgbnVsbCBzdWJzdGl0dXRpb24g bWFzc2FnZXMuCitDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig c2V0X3RvX251bGwsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CisyCXsyfQkyCSdmb29vb29vb29v b29vb29vbycKK1wuCitDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJy b3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwor Mgl7Mn0JMgknZm9vb29vb29vb29vb29vb28nCisyCXsyfQkyCSdmb29vb29vb29vb29vb29vbycK KzIJezJ9CTIJJ2Zvb29vb29vb29vb29vb29vJworXC4KIENPUFkgY2hlY2tfaWduX2VycjIgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIGxvZ192ZXJib3NpdHkgc2lsZW50KTsKIDMJ ezN9CTMJJ2JhcicKIDQJezR9CTQJXE4KQEAgLTU4OCw2ICs2NDYsMjggQEAgYQl7N30JNwogMTAJ ezEwfQkxMAogXC4KIAorLS0gdGVzdHMgZm9yIG9uX2Vycm9yIHNldF90b19udWxsIG9wdGlvbgor dHJ1bmNhdGUgY2hlY2tfaWduX2VycjsKK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEJezF9CWEKKzIJezJ9CTEKKzMJezN9CTIKKzQJ ezR9CWIKK2EJezV9CWMKK1wuCisKK1NFTEVDVCAqIEZST00gY2hlY2tfaWduX2VycjsKKworLS1z aG91bGQgZmFpbC4KK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKGRlbGltaXRl ciAnLCcsIG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEsCitcLgorCistLXNob3VsZCBmYWlsLgor Q09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJy b3Igc2V0X3RvX251bGwpOworMSx7MX0sMSwxCitcLgorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJM RSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CkBAIC02MDMsNiArNjgzLDggQEAgRFJP UCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2Zf aW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90 YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9u dWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9l cnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBUQUJMRSBoYXJkX2VycjsK LS0gCjIuMzQuMQoK --0000000000008ee552062704aea6--