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 1t9kzs-00C2Bo-9K for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Nov 2024 12:55:23 +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 1t9kzp-001DOl-E0 for pgsql-hackers@arkaria.postgresql.org; Sat, 09 Nov 2024 12:55:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t9kzo-001DOc-Oe for pgsql-hackers@lists.postgresql.org; Sat, 09 Nov 2024 12:55:21 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t9kzm-000yD9-FJ for pgsql-hackers@lists.postgresql.org; Sat, 09 Nov 2024 12:55:20 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2fb5111747cso25797951fa.2 for ; Sat, 09 Nov 2024 04:55:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731156916; x=1731761716; 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=ksGsKLhjcyAbheB2l10lsZI5rIYuwV9H9Y5l7HtDsZs=; b=J43/7yMYvaUXIYV04n2OHyVVUfqeCIThCD+qIafW0QmpIPNUxUw4IBNRk04iTu1Gxm vN1IZERJ7FTjpB/Zpwl08L1iDdClyGi9YcA6PpxS9f6vMY5h0Mk/yKMVmLsiJVwCAasP TMc9GQPzkyAKgKRVdMMBziAvfC/s/oFzoWrov54ErNLHxgHnbIVNdP9leqBJkdk/JIKy 02aPBvx3AXv7RbXxABAzJYKUGztdyepqaA5wQJ+0CaxYhBBMh1IIBxNMzZ63tJa9PoRl Ft7psZcauMVzjHN/e5FXvWkhlL9BFXZWKFX6ajXFPNhuHFvFLno5MaZ6fBQd7vzxvKPv WffQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731156916; x=1731761716; 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=ksGsKLhjcyAbheB2l10lsZI5rIYuwV9H9Y5l7HtDsZs=; b=r+mw16MCVskXnW3OEcqJIKY4Jy8KhNwrs6ecMMgxhjO4GVvNs759BJSTJFko97BBHP QOJ5LB0irvhRmwv3ZU88Ifz8FZCKgDCDYquYKdV87WzyzQ6olrIOSPxszZxjvX+7LQjf 2xVuvgx3vigaqr2UD4+1S2/DXefvvc4X/mPjpgdSZYIrQ63k6jQ007O4chXxTQ8701HJ 3KG/JGdtPvwg+s4qXzHFIKKz/AF5NKL6jkYWAspEPIpCS+UsacO8okOUvLrtDiCVwjPF 3j1GFRwv/UWJ7goofEc3xe/ZJr50DcMR8YY+aMQ1yrLtB0Ux+SzERvfyfCGK9mM0EYXI eUEA== X-Forwarded-Encrypted: i=1; AJvYcCV7RM8totWnKnv2A1R/aTkV890PrTX2vMKLrVS+Fk0D2tYdMmi0JOu8AOzp2YzjmCwz4hsxL/I/+Z6p7/j7@lists.postgresql.org X-Gm-Message-State: AOJu0YwekYLSOdchFa8ol8EFiaR13wQQgIauC7ZaQFCZtwqCTEBphvfO XhUEgTqVQpjUaG6UQ7kebqsWjq2yCArJsFFm4t6zFIeYgS49YS0jaHbmyoXbO5tE9J642HQ/KDf 4ZjShBa1lPYSL4Hv6pVHRhA0QOCk= X-Google-Smtp-Source: AGHT+IG3bZ8orBsWGiSr1c1iC1WKabCIV69DOFdZuKpQK04O1/5Zo554qMltbITu7iUbdQpSGDWVEY1qvaTnnwQk9Ik= X-Received: by 2002:a05:651c:50b:b0:2fb:4bee:47ec with SMTP id 38308e7fff4ca-2ff20307f37mr32281001fa.33.1731156916076; Sat, 09 Nov 2024 04:55:16 -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: <07587c36-18b3-4ccb-b5fb-579bcb04ed37@oss.nttdata.com> From: Kirill Reshke Date: Sat, 9 Nov 2024 17:55:04 +0500 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Fujii Masao Cc: jian he , Jim Jones , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000008a32706267a61f6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000008a32706267a61f6 Content-Type: text/plain; charset="UTF-8" On Thu, 7 Nov 2024 at 23:00, Fujii Masao wrote: > > > > On 2024/10/26 6:03, Kirill Reshke wrote: > > when the REJECT LIMIT is set to some non-zero number and the number of > > row NULL replacements exceeds the limit, is it OK to fail. Because > > there WAS errors, and we should not tolerate more than $limit errors . > > I do find this behavior to be consistent. > > +1 > > > > But what if we don't set a REJECT LIMIT, it is sane to do all > > replacements, as if REJECT LIMIT is inf. > > +1 After thinking for a while, I'm now more opposed to this approach. I think we should count rows with erroneous data as errors only if null substitution for these rows failed, not the total number of rows which were modified. Then, to respect the REJECT LIMIT option, we compare this number with the limit. This is actually simpler approach IMHO. What do You think? > > 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. 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 NOT NULL > constraint via COPY ON_ERROR=SET_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. PFA v7. I did not yet update the doc for this patch version, waiting for feedback about REJECT LIMIT + SET_TO_NULL behaviour. Best regards, Kirill Reshke --00000000000008a32706267a61f6 Content-Type: application/octet-stream; name="v7-0001-Incrtoduce-COPY-option-to-replace-columns-contain.patch" Content-Disposition: attachment; filename="v7-0001-Incrtoduce-COPY-option-to-replace-columns-contain.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3a628vn0 RnJvbSAwZTA0NjA2ZWQ1Yzc2ZjBmZTA3OWJjYjE1NzE5NGFiMDZmNzI3MmFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTc6MDc6MDIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 XSBJbmNydG9kdWNlIENPUFkgb3B0aW9uIHRvIHJlcGxhY2UgY29sdW1ucyBjb250YWluaW5nCiBl cnJvbmVvdXMgZGF0YSB3aXRoIG51bGwKCmV4dGVudCAib25fZXJyb3IgYWN0aW9uIiwgaW50cm9k dWNlIG5ldyBvcHRpb246IG9uX2Vycm9yIHNldF90b19udWxsLgoKRHVlIHRvIGN1cnJlbnQgZ3Jh bW1hciwgd2UgY2Fubm90IHVzZSAib25fZXJyb3IgbnVsbCIsCnNvIEkgY2hvb3NlIG9uX2Vycm9y IHNldF90b19udWxsLgoKYW55IGRhdGEgdHlwZSBjb252ZXJzaW9uIGVycm9ycyB3aGlsZSB0aGUg Q09QWSBGUk9NIHByb2Nlc3Mgd2lsbCBzZXQgdGhhdCBjb2x1bW4gdmFsdWUgdG8gYmUgTlVMTC4K dGhpcyB3aWxsIG9ubHkgd29yayB3aXRoIENPUFkgRlJPTSBhbmQgbm9uLWJpbmFyeSBmb3JtYXQu CgpIb3dldmVyIHRoaXMgd2lsbCByZXNwZWN0IHRoZSBub3QtbnVsbCBjb25zdHJhaW50LCBtZWFu aW5nLCBpZiB5b3UgYWN0dWFsbHkgY29udmVydGVkIGVycm9yIHRvIG51bGwsCmJ1dCB0aGUgY29s dW1uIGhhcyBub3QtbnVsbCBjb25zdHJhaW50LCBub3QtbnVsbCBjb25zdHJhaW50IHZpb2xhdGlv biBFUlJPUiB3aWxsIGJlIHJhaXNlZC4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9hU2ZlXytRQG1haWwu Z21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgIHwgIDcg KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgfCAxMiArKy0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCA0MCArKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8IDQ2ICsrKysrKysrKysrKysrCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weS5oICAgICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b3B5Mi5vdXQgIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weTIuc3FsICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrCiA4 IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29w eS5zZ21sCmluZGV4IDgzOTQ0MDJmMDk2Li5kY2JmYTE3YTNjZSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAg LTM5NCwxMiArMzk0LDEzIEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIFNwZWNpZmll cyBob3cgdG8gYmVoYXZlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGVycm9yIGNvbnZlcnRpbmcgYSBj b2x1bW4ncwogICAgICAgaW5wdXQgdmFsdWUgaW50byBpdHMgZGF0YSB0eXBlLgogICAgICAgQW4g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+ IHZhbHVlIG9mCi0gICAgICA8bGl0ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBj b21tYW5kLCB3aGlsZQotICAgICAgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNj YXJkIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgorICAgICAg PGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMgZmFpbCB0aGUgY29tbWFuZCwKKyAgICAgIDxs aXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUgaW5wdXQgcm93IGFuZCBj b250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSwgYW5kCisgICAgICA8bGl0ZXJhbD5zZXRfdG9fbnVs bDwvbGl0ZXJhbD4gbWVhbnMgcmVwbGFjZSBjb2x1bW5zIGNvbnRhaW5pbmcgZXJyb25lb3VzIGlu cHV0IHZhbHVlcyB3aXRoIDxsaXRlcmFsPm51bGw8L2xpdGVyYWw+IGFuZCBtb3ZlIHRvIHRoZSBu ZXh0IHJvdy4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+Lgog ICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0 ZXJhbD4gb3B0aW9uIGlzIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9NPC9j b21tYW5kPgorICAgICAgVGhlIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs PnNldF90b19udWxsPC9saXRlcmFsPiBvcHRpb25zIGFyZSBhcHBsaWNhYmxlIG9ubHkgZm9yIDxj b21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KICAgICAgIHdoZW4gdGhlIDxsaXRlcmFsPkZPUk1B VDwvbGl0ZXJhbD4gaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Y3N2PC9s aXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAz NDg1YmE4NjYzZi4uMzA0MDIyY2Q4NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTQwMywxMiArNDAz LDE0IEBAIGRlZkdldENvcHlPbkVycm9yQ2hvaWNlKERlZkVsZW0gKmRlZiwgUGFyc2VTdGF0ZSAq cHN0YXRlLCBib29sIGlzX2Zyb20pCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRl Zi0+bG9jYXRpb24pKSk7CiAKIAkvKgotCSAqIEFsbG93ICJzdG9wIiwgb3IgImlnbm9yZSIgdmFs dWVzLgorCSAqIEFsbG93ICJzdG9wIiwgImlnbm9yZSIsICJzZXRfdG9fbnVsbCIgdmFsdWVzLgog CSAqLwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJzdG9wIikgPT0gMCkKIAkJcmV0dXJuIENP UFlfT05fRVJST1JfU1RPUDsKIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiaWdub3JlIikgPT0g MCkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfSUdOT1JFOworCWlmIChwZ19zdHJjYXNlY21wKHN2 YWwsICJzZXRfdG9fbnVsbCIpID09IDApCisJCXJldHVybiBDT1BZX09OX0VSUk9SX05VTEw7CiAK IAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCkBAIC05MDQsMTMgKzkwNiwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJy bXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAK LQlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCWlm IChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYmICEob3B0c19vdXQtPm9uX2Vycm9yID09IENPUFlf T05fRVJST1JfTlVMTCB8fCBvcHRzX291dC0+b25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05P UkUpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkvKi0gdHJhbnNsYXRvcjogZmlyc3QgYW5kIHNlY29uZCAlcyBhcmUg dGhlIG5hbWVzIG9mIENPUFkgb3B0aW9uLCBlLmcuCi0JCSAqIE9OX0VSUk9SLCB0aGlyZCBpcyB0 aGUgdmFsdWUgb2YgdGhlIENPUFkgb3B0aW9uLCBlLmcuIElHTk9SRSAqLwotCQkJCSBlcnJtc2co IkNPUFkgJXMgcmVxdWlyZXMgJXMgdG8gYmUgc2V0IHRvICVzIiwKLQkJCQkJCSJSRUpFQ1RfTElN SVQiLCAiT05fRVJST1IiLCAiSUdOT1JFIikpKTsKKwkJICogT05fRVJST1IsIHRoaXJkIGlzIHRo ZSB2YWx1ZSBvZiB0aGUgQ09QWSBvcHRpb24sIGUuZy4gSUdOT1JFIG9yIFNFVF9UT19OVUxMICov CisJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyAlcyB0byBiZSBzZXQgdG8gJXMgb3IgJXMi LAorCQkJCQkJIlJFSkVDVF9MSU1JVCIsICJPTl9FUlJPUiIsICJJR05PUkUiLCAiU0VUX1RPX05V TEwiKSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMDdjYmQ1ZDIyYjgu LjVmYzlkODMyNzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTEwMDMsNyArMTAwMyw3 IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQlpZiAoIU5leHRDb3B5RnJvbShj c3RhdGUsIGVjb250ZXh0LCBteXNsb3QtPnR0c192YWx1ZXMsIG15c2xvdC0+dHRzX2lzbnVsbCkp CiAJCQlicmVhazsKIAotCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfSUdOT1JFICYmCisJCWlmICgoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJS T1JfSUdOT1JFIHx8IGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwp ICYmCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQpCiAJCXsKIAkJCS8qCkBA IC0xMDE4LDEyICsxMDE4LDI5IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQkJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DT1BZX1RVUExFU19TS0lQUEVE LAogCQkJCQkJCQkJCSBjc3RhdGUtPm51bV9lcnJvcnMpOwogCi0JCQlpZiAoY3N0YXRlLT5vcHRz LnJlamVjdF9saW1pdCA+IDAgJiYgXAotCQkJCWNzdGF0ZS0+bnVtX2Vycm9ycyA+IGNzdGF0ZS0+ b3B0cy5yZWplY3RfbGltaXQpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coInNraXBw ZWQgbW9yZSB0aGFuIFJFSkVDVF9MSU1JVCAoJWxsZCkgcm93cyBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJCShsb25nIGxvbmcpIGNzdGF0ZS0+b3B0cy5yZWplY3Rf bGltaXQpKSk7CisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf SUdOT1JFKQorCQkJeworCQkJCWlmIChjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0ID4gMCAmJiBj c3RhdGUtPm51bV9lcnJvcnMgPiBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VO VEFUSU9OKSwKKwkJCQkJCQllcnJtc2coInNraXBwZWQgbW9yZSB0aGFuIFJFSkVDVF9MSU1JVCAo JWxsZCkgcm93cyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCQko bG9uZyBsb25nKSBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KSkpOworCQkJfQorCQkJZWxzZQor CQkJeworCQkJCS8qIFByb3ZpZGUgZGlmZmVyZW50IGVycm9yIG1zZyBpZiByZWplY3RfbGltaXQg aXMgemVybyAqLworCQkJCWlmIChjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0ID09IDApCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQ UkVTRU5UQVRJT04pLAorCQkJCQkJCWVycm1zZygiZmFpbGVkIHRvIHJlcGxhY2UgY29sdW1uIGNv bnRhaW5pbmcgZXJyb25lb3VzIGRhdGEgd2l0aCBudWxsIiwKKwkJCQkJCQkJCShsb25nIGxvbmcp IGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXQpLAorCQkJCQkJCWVycmhpbnQoIkNvbnNpZGVyIHNw ZWNpZnlpbmcgdGhlIFJFSkVDVCBMSU1JVCBvcHRpb24gdG8gc2tpcCBlcnJvbmVvdXMgcm93cy4i KSkpOworCQkJCWVsc2UgaWYgKGNzdGF0ZS0+bnVtX2Vycm9ycyA+IGNzdGF0ZS0+b3B0cy5yZWpl Y3RfbGltaXQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJCWVycm1zZygiZW5jb3VudGVyZWQg bW9yZSB0aGFuIFJFSkVDVF9MSU1JVCAoJWxsZCkgcm93cyB3aXRoIGRhdGEgdHlwZSBpbmNvbXBh dGliaWxpdHkiLAorCQkJCQkJCQkJKGxvbmcgbG9uZykgY3N0YXRlLT5vcHRzLnJlamVjdF9saW1p dCkpKTsKKwkJCX0KIAogCQkJLyogUmVwZWF0IE5leHRDb3B5RnJvbSgpIHVudGlsIG5vIHNvZnQg ZXJyb3Igb2NjdXJzICovCiAJCQljb250aW51ZTsKQEAgLTEzMjEsNyArMTMzOCw3IEBAIENvcHlG cm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCS8qIERvbmUsIGNsZWFuIHVwICovCiAJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwogCi0JaWYgKGNzdGF0ZS0+b3B0 cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1AgJiYKKwlpZiAoKGNzdGF0ZS0+b3B0cy5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fCBjc3RhdGUtPm9wdHMub25fZXJyb3Ig PT0gQ09QWV9PTl9FUlJPUl9OVUxMKSAmJgogCQljc3RhdGUtPm51bV9lcnJvcnMgPiAwICYmCiAJ CWNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID49IENPUFlfTE9HX1ZFUkJPU0lUWV9ERUZBVUxU KQogCQllcmVwb3J0KE5PVElDRSwKQEAgLTE0NzQsMTAgKzE0OTEsMTEgQEAgQmVnaW5Db3B5RnJv bShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJl ZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9P Tl9FUlJPUl9JR05PUkUuIFdlJ2xsIGFkZCBvdGhlcgotCQkgKiBvcHRpb25zIGxhdGVyCisJCSAq IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUsIENPUFlfT05f RVJST1JfTlVMTC4KKwkJICogV2UnbGwgYWRkIG90aGVyIG9wdGlvbnMgbGF0ZXIKIAkJICovCi0J CWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCWlm IChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgfHwKKwkJCWNz dGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCiAJCQljc3RhdGUtPmVz Y29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGQxZDQzYjUzZDgzLi4xNTExYjQ0ZjRiYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpAQCAtOTYwLDYgKzk2MCw1MiBAQCBOZXh0Q29w eUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJCXsK IAkJCQlBc3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCk7 CiAKKwkJCQkvKiAKKwkJCQkqIFdlIGVuY291bnRlcmVkIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcg b25lIG9mIGF0dHJpYnV0ZXMuCisJCQkJKi8KKwkJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9y ID09IENPUFlfT05fRVJST1JfTlVMTCAmJiBzdHJpbmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8q CisJCQkJCSogVGVtcG9yYXJ5IHVuc2V0IGVycm9yX29jY3VycmVkLgorCQkJCQkqIElmIG51bGwg c3Vic3RpdHV0aW9uIGZvciB0aGlzIGF0dHJpYnV0ZSB3aWxsCisJCQkJCSogc3VjY2VlZCwgd2Ug ZG8gbm90IGNvdW50IHRoaXMgcm93IGFzIGVycm9uZW91cworCQkJCQkqLworCQkJCQljc3RhdGUt PmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKwkJCQkJCisJCQkJCWlmIChJbnB1 dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9uc1ttXSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJ CQkJCQkJCQkJdHlwaW9wYXJhbXNbbV0sCisJCQkJCQkJCQkJCWF0dC0+YXR0dHlwbW9kLAorCQkJ CQkJCQkJCQkoTm9kZSAqKSBjc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQkJJnZhbHVlc1tt XSkpCisJCQkJCXsKKwkJCQkJCS8qIElmIGRhdGF0eXBlIGlmIG9rYXkgd2l0aCBOVUxMLCByZXBs YWNlIAorCQkJCQkJKiB3aXRoIG51bGwKKwkJCQkJCSovCisJCQkJCQludWxsc1ttXSA9IHRydWU7 CisKKwkJCQkJCWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJC T1NJVFlfVkVSQk9TRSkKKwkJCQkJCXsKKwkJCQkJCQorCQkJCQkJCWVyZXBvcnQoTk9USUNFLAor CQkJCQkJCQkJZXJybXNnKCJyZXBsYWNlZCByb3cgYXR0cmlidXRlIFwiJXNcIiB3aXRoIE5VTEwg ZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlbGx1LiIsCisJCQkJCQkJ CQkJY3N0YXRlLT5jdXJfYXR0bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5jdXJf bGluZW5vKSk7CisJCQkJCQl9CisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCisJCQkJCWlmIChj c3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkK KwkJCQkJeworCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygiZmFpbGVkIHRv IHJlcGxhY2Ugcm93IGF0dHJpYnV0ZSBcIiVzXCIgd2l0aCBOVUxMIGF0IGxpbmUgJWxsdS4iLAor CQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyljc3Rh dGUtPmN1cl9saW5lbm8pKTsKKwkJCQkJfQorCQkJCX0KKworCQkJCS8qIAorCQkJCSogVXBkYXRl IGNvcHkgc3RhdGUgY291bnRlciBmb3IgbnVtYmVyIG9mIGVycm9uZW91cyByb3dzCisJCQkJKiBh cyB3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGZyb20gZnVuY3Rpb24uCisJCQkJKi8KIAkJCQljc3Rh dGUtPm51bV9lcnJvcnMrKzsKIAogCQkJCWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9 PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBm YWQyMjc3OTkxZC4uYzI5MDJmZmMzMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMyMzUs NyArMzIzNSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01Q TEVURV9XSVRIKCJGT1JNQVQiLCAiRlJFRVpFIiwgIkRFTElNSVRFUiIsICJOVUxMIiwKIAkJCQkJ ICAiSEVBREVSIiwgIlFVT1RFIiwgIkVTQ0FQRSIsICJGT1JDRV9RVU9URSIsCiAJCQkJCSAgIkZP UkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAiRU5DT0RJTkciLCAiREVGQVVMVCIsCi0JCQkJ CSAgIk9OX0VSUk9SIiwgIkxPR19WRVJCT1NJVFkiKTsKKwkJCQkJICAiT05fRVJST1IiLCAiU0VU X1RPX05VTEwiLCAiTE9HX1ZFUkJPU0lUWSIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBG Uk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8 XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9S TUFUIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggNDAwMmE3ZjUzODIuLjA1MWNhMTJkMTA3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weS5oCkBAIC0zOCw2ICszOCw3IEBAIHR5cGVkZWYgZW51bSBDb3B5T25FcnJvckNo b2ljZQogewogCUNPUFlfT05fRVJST1JfU1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0aHJvdyBl cnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09OX0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9yZSBlcnJv cnMgKi8KKwlDT1BZX09OX0VSUk9SX05VTEwsCQkJLyogc2V0IGVycm9yIGZpZWxkIHRvIG51bGwg Ki8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIu b3V0CmluZGV4IDY0ZWEzM2FlYWU4Li4yMjYwNWEwYWU0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEwIEBAIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJv ciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVu ZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUs IG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgb25fZXJy b3Igc2V0X3RvX251bGwpOworRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9u cworTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwsIG9uX2Vy cm9yIHNldF90b19udWwuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBs b2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQg b3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0 LCBsb2dfdmVyYm9zaXR5IHZlcmIuLi4KQEAgLTkyLDYgKzk2LDggQEAgQ09QWSB4IGZyb20gc3Rk aW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVM TCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vy cm9yIGlnbm9yZSk7CiBFUlJPUjogIG9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJ TkFSWSBtb2RlCitDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0 X3RvX251bGwpOworRVJST1I6ICBvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5B UlkgbW9kZQogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9S OiAgQ09QWSBPTl9FUlJPUiAidW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENP UFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CkBAIC0xMjQsMTIgKzEzMCwx NiBAQCBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRl ZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCiBM SU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9y dGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB4 IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIENPUFkgT05fRVJST1Ig Y2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCitMSU5FIDE6IENPUFkgeCB0byBzdGRpbiAob25f ZXJyb3Igc2V0X3RvX251bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgIF4KIENPUFkgeCBm cm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBMT0df VkVSQk9TSVRZICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZy b20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOwotRVJS T1I6ICBDT1BZIFJFSkVDVF9MSU1JVCByZXF1aXJlcyBPTl9FUlJPUiB0byBiZSBzZXQgdG8gSUdO T1JFCitFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNl dCB0byBJR05PUkUgb3IgU0VUX1RPX05VTEwKIENPUFkgeCBmcm9tIHN0ZGluIHdpdGggKG9uX2Vy cm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDApOwogRVJST1I6ICBSRUpFQ1RfTElNSVQgKDApIG11 c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8KIC0tIHRvbyBtYW55IGNvbHVtbnMgaW4gY29sdW1uIGxp c3Q6IHNob3VsZCBmYWlsCkBAIC03NjksNiArNzc5LDQ3IEBAIENPTlRFWFQ6ICBDT1BZIGNoZWNr X2lnbl9lcnIKIE5PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0 aWJpbGl0eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAiayI6ICJhIgogQ09OVEVYVDogIENPUFkgY2hl Y2tfaWduX2VycgogTk9USUNFOiAgNiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBl IGluY29tcGF0aWJpbGl0eQorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBJTlQgTk9U IE5VTEwgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5 YmVfbnVsbCBBUyBJTlQgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9y X251bGwgKGEgZF9pbnRfbm90X251bGwsIGIgZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbCwgYyBJ TlQpOworLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJv ciBzZXRfdG9fbnVsbCk7CistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1RB QkxFIHRfb25fZXJyb3JfbnVsbDsKKyBhICB8IGIgIHwgYyAgCistLS0tKy0tLS0rLS0tLQorIDEx IHwgICAgfCAxMgorICAxIHwgMTEgfCAgIAorKDIgcm93cykKKworLS1mYWlsCitDT1BZIHRfb25f ZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKK0VSUk9S OiAgZmFpbGVkIHRvIHJlcGxhY2UgY29sdW1uIGNvbnRhaW5pbmcgZXJyb25lb3VzIGRhdGEgd2l0 aCBudWxsCitISU5UOiAgQ29uc2lkZXIgc3BlY2lmeWluZyB0aGUgUkVKRUNUIExJTUlUIG9wdGlv biB0byBza2lwIGVycm9uZW91cyByb3dzLgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxs LCBsaW5lIDEsIGNvbHVtbiBhOiAiYSIKKy0tZmFpbAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGZhaWxlZCB0byBy ZXBsYWNlIGNvbHVtbiBjb250YWluaW5nIGVycm9uZW91cyBkYXRhIHdpdGggbnVsbAorSElOVDog IENvbnNpZGVyIHNwZWNpZnlpbmcgdGhlIFJFSkVDVCBMSU1JVCBvcHRpb24gdG8gc2tpcCBlcnJv bmVvdXMgcm93cy4KK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1 bW4gYTogIi0xIgorLS1vay4gQ2hlY2sgaW50ZXJhY3Rpb24gd2l0aCBSRUpFQ1QgTElNSVQKK0NP UFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGws IHJlamVjdF9saW1pdCAyKTsKK05PVElDRTogIDIgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRh dGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1RBQkxF IHRfb25fZXJyb3JfbnVsbDsKKyBhICB8IGIgIHwgYyAgCistLS0tKy0tLS0rLS0tLQorIDExIHwg ICAgfCAxMgorICAxIHwgMTEgfCAgIAorICAxIHwgMTEgfCAxNAorKDMgcm93cykKKworLS1mYWls LiBDaGVjayBpbnRlcmFjdGlvbiB3aXRoIFJFSkVDVCBMSU1JVAorQ09QWSB0X29uX2Vycm9yX251 bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIp OworRVJST1I6ICBlbmNvdW50ZXJlZCBtb3JlIHRoYW4gUkVKRUNUX0xJTUlUICgyKSByb3dzIHdp dGggZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9u dWxsLCBsaW5lIDMsIGNvbHVtbiBhOiBudWxsIGlucHV0CiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Ig b3B0aW9uIHdpdGggbG9nX3ZlcmJvc2l0eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4K IENSRUFURSBET01BSU4gZGNoZWNrX2lnbl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JF QVRFIFRBQkxFIGNoZWNrX2lnbl9lcnIyIChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNr X2lnbl9lcnIyKTsKQEAgLTc3Niw2ICs4MjcsMTcgQEAgQ09QWSBjaGVja19pZ25fZXJyMiBGUk9N IFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIE5P VElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBs aW5lIDIgZm9yIGNvbHVtbiAibCI6IG51bGwgaW5wdXQKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2ln bl9lcnIyCiBOT1RJQ0U6ICAxIHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eQorLS0gY2hlY2sgbnVsbCBzdWJzdGl0dXRpb24gbWFzc2FnZXMuCitDT1BZIGNo ZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVj dF9saW1pdCAyLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOworTk9USUNFOiAgcmVwbGFjZWQgcm93 IGF0dHJpYnV0ZSAiayIgd2l0aCBOVUxMIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5 IGF0IGxpbmUgMS4KK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIyLCBsaW5lIDEsIGNvbHVt biBrOiAiZm9vIgorTk9USUNFOiAgc2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5IGF0IGxpbmUgMiBmb3IgY29sdW1uICJsIjogbnVsbCBpbnB1dAorQ09OVEVYVDog IENPUFkgY2hlY2tfaWduX2VycjIKK05PVElDRTogIGZhaWxlZCB0byByZXBsYWNlIHJvdyBhdHRy aWJ1dGUgImwiIHdpdGggTlVMTCBhdCBsaW5lIDMuCitDT05URVhUOiAgQ09QWSBjaGVja19pZ25f ZXJyMiwgbGluZSAzLCBjb2x1bW4gbDogIidmb29vb29vb29vb29vb29vbyciCitOT1RJQ0U6ICBz a2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAzIGZv ciBjb2x1bW4gImwiOiAiJ2Zvb29vb29vb29vb29vb29vJyIKK0NPTlRFWFQ6ICBDT1BZIGNoZWNr X2lnbl9lcnIyCitOT1RJQ0U6ICAyIHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUg aW5jb21wYXRpYmlsaXR5CiBDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25f ZXJyb3IgaWdub3JlLCBsb2dfdmVyYm9zaXR5IHNpbGVudCk7CiAtLSByZXNldCBjb250ZXh0IGNo b2ljZQogXHNldCBTSE9XX0NPTlRFWFQgZXJyb3JzCkBAIC03OTEsOCArODUzLDkgQEAgU0VMRUNU ICogRlJPTSBjaGVja19pZ25fZXJyMjsKICBuIHwgIG0gIHwgayB8ICAgbCAgIAogLS0tKy0tLS0t Ky0tLSstLS0tLS0tCiAgMSB8IHsxfSB8IDEgfCAnZm9vJworIDEgfCB7MX0gfCAgIHwgJ2ZvbycK ICAzIHwgezN9IHwgMyB8ICdiYXInCi0oMiByb3dzKQorKDMgcm93cykKIAogLS0gdGVzdCBkYXRh dHlwZSBlcnJvciB0aGF0IGNhbid0IGJlIGhhbmRsZWQgYXMgc29mdDogc2hvdWxkIGZhaWwKIENS RUFURSBUQUJMRSBoYXJkX2Vycihmb28gd2lkZ2V0KTsKQEAgLTgxMyw2ICs4NzYsMjggQEAgRVJS T1I6ICBza2lwcGVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgKDMpIHJvd3MgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUg NSwgY29sdW1uIG46ICIiCiBDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9l cnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCA0KTsKIE5PVElDRTogIDQgcm93cyB3ZXJlIHNraXBw ZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKKy0tIHRlc3RzIGZvciBvbl9lcnJv ciBzZXRfdG9fbnVsbCBvcHRpb24KK3RydW5jYXRlIGNoZWNrX2lnbl9lcnI7CitDT1BZIGNoZWNr X2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitccHNldCBu dWxsIE5VTEwKK1NFTEVDVCAqIEZST00gY2hlY2tfaWduX2VycjsKKyAgbiAgIHwgIG0gIHwgIGsg ICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAgICAxIHwgezF9IHwgTlVMTAorICAgIDIgfCB7Mn0g fCAgICAxCisgICAgMyB8IHszfSB8ICAgIDIKKyAgICA0IHwgezR9IHwgTlVMTAorIE5VTEwgfCB7 NX0gfCBOVUxMCisoNSByb3dzKQorCistLXNob3VsZCBmYWlsLgorQ09QWSBjaGVja19pZ25fZXJy IEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3RvX251bGwpOwor RVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiayIKK0NPTlRFWFQ6ICBDT1BZIGNoZWNr X2lnbl9lcnIsIGxpbmUgMSwgY29sdW1uIG06ICIiCistLXNob3VsZCBmYWlsLgorQ09QWSBjaGVj a19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3Rv X251bGwpOworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1uCitD T05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDE6ICIxLHsxfSwxLDEiCiAtLSBjbGVh biB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CkBAIC04Mjgs NiArOTEzLDggQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBW SUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0 ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFC TEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CiBEUk9QIFRB QkxFIGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBU QUJMRSBoYXJkX2VycjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAppbmRleCA0NTI3MzU1N2NlMC4uZjI1 MjdkM2FlYWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTY3LDEyICs2NywxNCBAQCBDT1BZ IHggZnJvbSBzdGRpbiAoZm9yY2VfbnVsbCAoYSksIGZvcmNlX251bGwgKGIpKTsKIENPUFkgeCBm cm9tIHN0ZGluIChjb252ZXJ0X3NlbGVjdGl2ZWx5IChhKSwgY29udmVydF9zZWxlY3RpdmVseSAo YikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGVuY29kaW5nICdzcWxfYXNjaWknLCBlbmNvZGluZyAn c3FsX2FzY2lpJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9lcnJv ciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBvbl9l cnJvciBzZXRfdG9fbnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZh dWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJlY3Qgb3B0aW9ucwogQ09Q WSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogQ09QWSB4IGZy b20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChm b3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1h dCBCSU5BUlksIG9uX2Vycm9yIHNldF90b19udWxsKTsKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9l cnJvciB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNl X3F1b3RlKGEpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVvdGUg Kik7CkBAIC04Nyw2ICs4OSw3IEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9y Y2VfbnVsbCAqKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251bGwoYSkp OwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVsbCAqKTsKIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKK0NPUFkgeCB0 byBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192 ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xp bWl0IDEpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3Rf bGltaXQgMCk7CkBAIC01MzQsNiArNTM3LDUwIEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NS RUFURSBET01BSU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4g MCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNL KHZhbHVlID4gMCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9u dWxsLCBiIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsKKworLS1vaworQ09QWSB0 X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7Cisx MQlhCTEyCitcLgorCistLW9rCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEJMTEJZAorXC4KKworLS0gY2hlY2sgaW5zZXJ0ZWQg Y29udGVudAorVEFCTEUgdF9vbl9lcnJvcl9udWxsOworCistLWZhaWwKK0NPUFkgdF9vbl9lcnJv cl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworYQkxMQkxNAor XC4KKworLS1mYWlsCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIHNldF90b19udWxsKTsKKy0xCTExCTEzCitcLgorCistLW9rLiBDaGVjayBpbnRlcmFjdGlv biB3aXRoIFJFSkVDVCBMSU1JVAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRI IChvbl9lcnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIpOworLTEJMTEJMTMKK2EJMTEJ MTQKKzEJMTEJMTQKK1wuCisKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRlbnQKK1RBQkxFIHRfb25f ZXJyb3JfbnVsbDsKKworLS1mYWlsLiBDaGVjayBpbnRlcmFjdGlvbiB3aXRoIFJFSkVDVCBMSU1J VAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9f bnVsbCwgcmVqZWN0X2xpbWl0IDIpOworLTEJMTEJMTMKK2EJMTEJMTQKK1xOCTExCTE0CitcLgor CiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Igb3B0aW9uIHdpdGggbG9nX3ZlcmJvc2l0eSBhbmQgbnVs bCBjb25zdHJhaW50IHZpYSBkb21haW4KIENSRUFURSBET01BSU4gZGNoZWNrX2lnbl9lcnIyIHZh cmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JFQVRFIFRBQkxFIGNoZWNrX2lnbl9lcnIyIChuIGludCwg bSBpbnRbXSwgayBpbnQsIGwgZGNoZWNrX2lnbl9lcnIyKTsKQEAgLTU0MSw2ICs1ODgsMTIgQEAg Q09QWSBjaGVja19pZ25fZXJyMiBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgbG9n X3ZlcmJvc2l0eSB2ZXJib3NlKTsKIDEJezF9CTEJJ2ZvbycKIDIJezJ9CTIJXE4KIFwuCistLSBj aGVjayBudWxsIHN1YnN0aXR1dGlvbiBtYXNzYWdlcy4KK0NPUFkgY2hlY2tfaWduX2VycjIgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCwgcmVqZWN0X2xpbWl0IDIsIGxvZ192 ZXJib3NpdHkgdmVyYm9zZSk7CisxCXsxfQlmb28JJ2ZvbycKKzIJezJ9CTIJXE4KKzIJezJ9CTIJ J2Zvb29vb29vb29vb29vb29vJworXC4KIENPUFkgY2hlY2tfaWduX2VycjIgRlJPTSBTVERJTiBX SVRIIChvbl9lcnJvciBpZ25vcmUsIGxvZ192ZXJib3NpdHkgc2lsZW50KTsKIDMJezN9CTMJJ2Jh cicKIDQJezR9CTQJXE4KQEAgLTU4OCw2ICs2NDEsMjkgQEAgYQl7N30JNwogMTAJezEwfQkxMAog XC4KIAorLS0gdGVzdHMgZm9yIG9uX2Vycm9yIHNldF90b19udWxsIG9wdGlvbgordHJ1bmNhdGUg Y2hlY2tfaWduX2VycjsKK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIHNldF90b19udWxsKTsKKzEJezF9CWEKKzIJezJ9CTEKKzMJezN9CTIKKzQJezR9CWIKK2EJ ezV9CWMKK1wuCisKK1xwc2V0IG51bGwgTlVMTAorU0VMRUNUICogRlJPTSBjaGVja19pZ25fZXJy OworCistLXNob3VsZCBmYWlsLgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAo ZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0X3RvX251bGwpOworMSwKK1wuCisKKy0tc2hvdWxk IGZhaWwuCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywn LCBvbl9lcnJvciBzZXRfdG9fbnVsbCk7CisxLHsxfSwxLDEKK1wuCisKIC0tIGNsZWFuIHVwCiBE Uk9QIFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKQEAgLTYwMyw2ICs2Nzks OCBAQCBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXc7CiBEUk9QIFZJRVcgaW5z dGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXdfMjsKIERST1AgRlVOQ1RJT04gZnVuX2luc3RlYWRfb2Zf aW5zZXJ0X3RibCgpOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyOworRFJPUCBUQUJMRSB0X29u X2Vycm9yX251bGw7CitEUk9QIERPTUFJTiBkX2ludF9ub3RfbnVsbDsKIERST1AgVEFCTEUgY2hl Y2tfaWduX2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhh cmRfZXJyOwotLSAKMi4zNC4xCgo= --00000000000008a32706267a61f6--