Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nAqTF-0001py-VV for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jan 2022 09:44:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nAqTE-0000KQ-Rk for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jan 2022 09:44:36 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nAqTD-0000KG-M3 for pgsql-hackers@lists.postgresql.org; Fri, 21 Jan 2022 09:44:36 +0000 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nAqT9-0000bA-Kp for pgsql-hackers@postgresql.org; Fri, 21 Jan 2022 09:44:34 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 9BCA45C0159; Fri, 21 Jan 2022 04:44:29 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Fri, 21 Jan 2022 04:44:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=Fgmn6l0+YTcnd8+eV 0dT9DlLoNtN6PkHz8BuT1B31ow=; b=GX3Q1fNH2tAXvtdK8IWv81AaORDlbCidm 3pH4wzd4ijUKHcK5s4xUAr9iX5exJ26ypfmnO5zN+Z+Mx4C0MREBZ2x5KtE7Fv2d KueFuZ5Y6end3JBhUwgORSv+zUZPcEEpaQINc9FPfmL9SU1uCc/7SR5dYidCUAth 8sROMGGCaFhM8kSZFYD2f0MAagGpaqp7hMmMx3evrHp691MkYAtJSmPZ1y2zbcx7 dw5yOeDHgYWZJS10nnffAD4LAUc7zxXZmiVU6YvQnjepeVgFrXqhvzDAcA401Xeg 7P3dGcqtkqqNSxiHHHGvDhUF/PZPobnIRG1xYpb/6+5vxX5WoB0cQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrvddtgddtjecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffhvfhfjgesmhdtreertdefjeenucfhrhhomheprfgvthgvrhcu gfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrph hrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepkeetteefheevhfdvledtfeeg leeutdekkeekveeifeeuffevjeeujeehffejieejnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsegv nhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 21 Jan 2022 04:44:26 -0500 (EST) Content-Type: multipart/mixed; boundary="------------AYXqPR9it7ea8an0LQdDMqLH" Message-ID: Date: Fri, 21 Jan 2022 10:44:24 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: ICU for global collation Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers Cc: Daniel Verite , Julien Rouhaud References: <525ef44f-52bf-505f-a491-07835d039424@enterprisedb.com> <20220110032508.4eyz6m6mpvt622la@jrouhaud> <20220110060027.egvaly4lskylo22f@jrouhaud> <20220111110852.t5oxfga57llm5cy2@jrouhaud> <20220118040246.dewl5pain2gkv2iv@jrouhaud> <171c5f7c-43ee-dbe9-31f9-5e3eb06a54cf@enterprisedb.com> In-Reply-To: <171c5f7c-43ee-dbe9-31f9-5e3eb06a54cf@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------AYXqPR9it7ea8an0LQdDMqLH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 18.01.22 13:54, Peter Eisentraut wrote: > On 18.01.22 05:02, Julien Rouhaud wrote: >>> If this is applied, then in my estimation all these hunks will >>> completely >>> disappear from the global ICU patch.  So this would be a significant >>> win. >> Agreed, the patch will be quite smaller and also easier to review. >> Are you >> planning to apply it on its own or add it to the default ICU patchset? > > My plan is to apply this patch in the next few days. This patch has been committed. Here is a second preparation patch: Change collate and ctype fields to type text. I think this is useful by itself because it allows longer locale names. ICU locale names with several options appended can be longer than 63 bytes. This case is probably broken right now. Also, it saves space in the typical case, since most locale names are not anywhere near 63 bytes. --------------AYXqPR9it7ea8an0LQdDMqLH Content-Type: text/plain; charset=UTF-8; name="0001-Change-collate-and-ctype-fields-to-type-text.patch" Content-Disposition: attachment; filename="0001-Change-collate-and-ctype-fields-to-type-text.patch" Content-Transfer-Encoding: base64 RnJvbSAxYzQ2YmYzMTM4YWQ0MjA3NDk3MWFhMzEzMDE0MjIzNmRlN2U2M2Y3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyMSBKYW4gMjAyMiAxMDowMToyNSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIENoYW5nZSBjb2xsYXRlIGFuZCBjdHlwZSBmaWVsZHMgdG8gdHlwZSB0ZXh0 CgpUaGlzIGNoYW5nZXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUgY2F0YWxvZyBmaWVsZHMgZGF0 Y29sbGF0ZSwgZGF0Y3R5cGUsCmNvbGxjb2xsYXRlLCBhbmQgY29sbGN0eXBlIGZyb20gbmFt ZSB0byB0ZXh0LiAgVGhlcmUgd2Fzbid0IGV2ZXIgYQpyZWFsbHkgZ29vZCByZWFzb24gZm9y IHRoZW0gdG8gYmUgb2YgdHlwZSBuYW1lOyBwcmVzdW1hYmx5IHRoaXMgd2FzCmp1c3QgY2Fy cmllZCBvdmVyIGZyb20gd2hlbiB0aGV5IHdlcmUgZml4ZWQtc2l6ZSBmaWVsZHMgaW4gcGdf Y29udHJvbCwKZmlyc3QgaW50byB0aGUgY29ycmVzcG9uZGluZyBwZ19kYXRhYmFzZSBmaWVs ZHMsIGFuZCB0aGVuIHRvCnBnX2NvbGxhdGlvbi4gIFRoZSB2YWx1ZXMgYXJlIG5vdCBpZGVu dGlmaWVycyBvciBvYmplY3QgbmFtZXMsIGFuZCB3ZQpkb24ndCBldmVyIGxvb2sgdGhlbSB1 cCB0aGF0IHdheS4KCkNoYW5naW5nIHRvIHR5cGUgdGV4dCBzYXZlcyBzcGFjZSBpbiB0aGUg dHlwaWNhbCBjYXNlLCBzaW5jZSBsb2NhbGUKbmFtZXMgYXJlIHR5cGljYWxseSBsZXNzIHRo YW4gMTAgYnl0ZXMgbG9uZy4gIEJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxlCnRoYXQgYW4gSUNV IGxvY2FsZSBuYW1lIHdpdGggc2V2ZXJhbCBjdXN0b21pemF0aW9uIG9wdGlvbnMgYXBwZW5k ZWQKY291bGQgYmUgbG9uZ2VyIHRoYW4gNjMgYnl0ZXMsIHNvIHRoaXMgYWxzbyBlbmFibGVz IHRoYXQgY2FzZSwgd2hpY2gKd2FzIHByZXZpb3VzbHkgcHJvYmFibHkgYnJva2VuLgoKRGlz Y3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzVl NzU2ZGQ2LTBlOTEtZDc3OC05NmZkLWIxYmNiMDZjMTYxYUAybmRxdWFkcmFudC5jb20KLS0t CiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgfCA0MCArKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMg ICB8IDEwICsrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyB8 IDQxICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2RiY29tbWFuZHMuYyAgICB8IDIxICsrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbG9jYWxlLmMgICAgfCAyOSArKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgIHwgMTEgKysrKysrLS0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggICB8ICA0ICstLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19kYXRhYmFzZS5oICAgIHwgMTIgKysrKy0tLS0KIHNyYy9pbmNsdWRlL3V0aWxz L3BnX2xvY2FsZS5oICAgICAgICB8ICAyICsrCiA5IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNl cnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDFlNjVj NDI2YjIuLjdkNWIwYjE2NTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yMzY4LDcgKzIzNjgs NyBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29sbGF0aW9uPC9zdHJ1Y3RuYW1lPiBDb2x1 bW5zPC90aXRsZT4KIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8 c3RydWN0ZmllbGQ+Y29sbGNvbGxhdGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBl PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb2xsY29sbGF0ZTwvc3RydWN0ZmllbGQ+IDx0eXBl PnRleHQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICA8c3lt Ym9sPkxDX0NPTExBVEU8L3N5bWJvbD4gZm9yIHRoaXMgY29sbGF0aW9uIG9iamVjdApAQCAt MjM3Nyw3ICsyMzc3LDcgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3Ry dWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPmNvbGxjdHlwZTwvc3RydWN0ZmllbGQ+IDx0eXBl Pm5hbWU8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbGxjdHlwZTwvc3RydWN0Zmll bGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAg ICAgICA8c3ltYm9sPkxDX0NUWVBFPC9zeW1ib2w+IGZvciB0aGlzIGNvbGxhdGlvbiBvYmpl Y3QKQEAgLTI5NTEsMjQgKzI5NTEsNiBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfZGF0YWJh c2U8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAgPC9wYXJhPjwvZW50cnk+ CiAgICAgIDwvcm93PgogCi0gICAgIDxyb3c+Ci0gICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAg IDxzdHJ1Y3RmaWVsZD5kYXRjb2xsYXRlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlw ZT4KLSAgICAgIDwvcGFyYT4KLSAgICAgIDxwYXJhPgotICAgICAgIExDX0NPTExBVEUgZm9y IHRoaXMgZGF0YWJhc2UKLSAgICAgIDwvcGFyYT48L2VudHJ5PgotICAgICA8L3Jvdz4KLQot ICAgICA8cm93PgotICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+ZGF0 Y3R5cGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgotICAgICAgPC9wYXJhPgot ICAgICAgPHBhcmE+Ci0gICAgICAgTENfQ1RZUEUgZm9yIHRoaXMgZGF0YWJhc2UKLSAgICAg IDwvcGFyYT48L2VudHJ5PgotICAgICA8L3Jvdz4KLQogICAgICA8cm93PgogICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0aXN0ZW1wbGF0ZTwvc3RydWN0Zmll bGQ+IDx0eXBlPmJvb2w8L3R5cGU+CkBAIC0zMDQzLDYgKzMwMjUsMjQgQEAgPHRpdGxlPjxz dHJ1Y3RuYW1lPnBnX2RhdGFiYXNlPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KICAg ICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZGF0Y29sbGF0ZTwvc3RydWN0Zmll bGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBMQ19DT0xMQVRFIGZvciB0aGlzIGRhdGFiYXNlCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmRhdGN0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIExDX0NUWVBFIGZvciB0 aGlzIGRhdGFiYXNlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmRhdGFj bDwvc3RydWN0ZmllbGQ+IDx0eXBlPmFjbGl0ZW1bXTwvdHlwZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2NvbGxhdGlvbi5jCmluZGV4IDViZTY2MDA2NTIuLmJmYzAyZDMwMzggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYwpAQCAtNTgsOSArNTgsNyBAQCBDb2xsYXRpb25D cmVhdGUoY29uc3QgY2hhciAqY29sbG5hbWUsIE9pZCBjb2xsbmFtZXNwYWNlLAogCUhlYXBU dXBsZQl0dXA7CiAJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19jb2xsYXRpb25dOwogCWJvb2wJ CW51bGxzW05hdHRzX3BnX2NvbGxhdGlvbl07Ci0JTmFtZURhdGEJbmFtZV9uYW1lLAotCQkJ CW5hbWVfY29sbGF0ZSwKLQkJCQluYW1lX2N0eXBlOworCU5hbWVEYXRhCW5hbWVfbmFtZTsK IAlPaWQJCQlvaWQ7CiAJT2JqZWN0QWRkcmVzcyBteXNlbGYsCiAJCQkJcmVmZXJlbmNlZDsK QEAgLTE2MywxMCArMTYxLDggQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxu YW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29s bHByb3ZpZGVyIC0gMV0gPSBDaGFyR2V0RGF0dW0oY29sbHByb3ZpZGVyKTsKIAl2YWx1ZXNb QW51bV9wZ19jb2xsYXRpb25fY29sbGlzZGV0ZXJtaW5pc3RpYyAtIDFdID0gQm9vbEdldERh dHVtKGNvbGxpc2RldGVybWluaXN0aWMpOwogCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9j b2xsZW5jb2RpbmcgLSAxXSA9IEludDMyR2V0RGF0dW0oY29sbGVuY29kaW5nKTsKLQluYW1l c3RyY3B5KCZuYW1lX2NvbGxhdGUsIGNvbGxjb2xsYXRlKTsKLQl2YWx1ZXNbQW51bV9wZ19j b2xsYXRpb25fY29sbGNvbGxhdGUgLSAxXSA9IE5hbWVHZXREYXR1bSgmbmFtZV9jb2xsYXRl KTsKLQluYW1lc3RyY3B5KCZuYW1lX2N0eXBlLCBjb2xsY3R5cGUpOwotCXZhbHVlc1tBbnVt X3BnX2NvbGxhdGlvbl9jb2xsY3R5cGUgLSAxXSA9IE5hbWVHZXREYXR1bSgmbmFtZV9jdHlw ZSk7CisJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlIC0gMV0gPSBDU3Ry aW5nR2V0VGV4dERhdHVtKGNvbGxjb2xsYXRlKTsKKwl2YWx1ZXNbQW51bV9wZ19jb2xsYXRp b25fY29sbGN0eXBlIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbGxjdHlwZSk7CiAJ aWYgKGNvbGx2ZXJzaW9uKQogCQl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNp b24gLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY29sbHZlcnNpb24pOwogCWVsc2UKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwppbmRleCA1Njc0ODU1MWRlLi4xMmZj MjMxNmY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC0xMjks MTggKzEyOSwzMCBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCXsKIAkJT2lkCQkJ Y29sbGlkOwogCQlIZWFwVHVwbGUJdHA7CisJCURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJaXNu dWxsOwogCiAJCWNvbGxpZCA9IGdldF9jb2xsYXRpb25fb2lkKGRlZkdldFF1YWxpZmllZE5h bWUoZnJvbUVsKSwgZmFsc2UpOwogCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShDT0xMT0lELCBP YmplY3RJZEdldERhdHVtKGNvbGxpZCkpOwogCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHAp KQogCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiAl dSIsIGNvbGxpZCk7CiAKLQkJY29sbGNvbGxhdGUgPSBwc3RyZHVwKE5hbWVTdHIoKChGb3Jt X3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjb2xsYXRlKSk7Ci0JCWNvbGxj dHlwZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1Qo dHApKS0+Y29sbGN0eXBlKSk7CiAJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9wZ19jb2xsYXRp b24pIEdFVFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CiAJCWNvbGxpc2RldGVybWluaXN0 aWMgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbGlzZGV0ZXJt aW5pc3RpYzsKIAkJY29sbGVuY29kaW5nID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RS VUNUKHRwKSktPmNvbGxlbmNvZGluZzsKIAorCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihD T0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGNvbGxhdGUsICZpc251bGwpOwor CQlpZiAoIWlzbnVsbCkKKwkJCWNvbGxjb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhk YXR1bSk7CisJCWVsc2UKKwkJCWNvbGxjb2xsYXRlID0gTlVMTDsKKworCQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBl LCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCQljb2xsY3R5cGUgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKTsKKwkJZWxzZQorCQkJY29sbGN0eXBlID0gTlVMTDsKKwogCQlS ZWxlYXNlU3lzQ2FjaGUodHApOwogCiAJCS8qCkBAIC0zMTQsNyArMzI2LDcgQEAgQWx0ZXJD b2xsYXRpb24oQWx0ZXJDb2xsYXRpb25TdG10ICpzdG10KQogCU9pZAkJCWNvbGxPaWQ7CiAJ SGVhcFR1cGxlCXR1cDsKIAlGb3JtX3BnX2NvbGxhdGlvbiBjb2xsRm9ybTsKLQlEYXR1bQkJ Y29sbHZlcnNpb247CisJRGF0dW0JCWRhdHVtOwogCWJvb2wJCWlzbnVsbDsKIAljaGFyCSAg ICpvbGR2ZXJzaW9uOwogCWNoYXIJICAgKm5ld3ZlcnNpb247CkBAIC0zMzIsMTEgKzM0NCwx MiBAQCBBbHRlckNvbGxhdGlvbihBbHRlckNvbGxhdGlvblN0bXQgKnN0bXQpCiAJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRpb24gJXUiLCBjb2xsT2lk KTsKIAogCWNvbGxGb3JtID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHVwKTsK LQljb2xsdmVyc2lvbiA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0dXAsIEFudW1fcGdf Y29sbGF0aW9uX2NvbGx2ZXJzaW9uLAotCQkJCQkJCQkgICZpc251bGwpOwotCW9sZHZlcnNp b24gPSBpc251bGwgPyBOVUxMIDogVGV4dERhdHVtR2V0Q1N0cmluZyhjb2xsdmVyc2lvbik7 CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHVwLCBBbnVtX3BnX2NvbGxh dGlvbl9jb2xsdmVyc2lvbiwgJmlzbnVsbCk7CisJb2xkdmVyc2lvbiA9IGlzbnVsbCA/IE5V TEwgOiBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCW5ld3ZlcnNpb24gPSBnZXRf Y29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNvbGxGb3JtLT5jb2xscHJvdmlkZXIsIE5hbWVT dHIoY29sbEZvcm0tPmNvbGxjb2xsYXRlKSk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo Q09MTE9JRCwgdHVwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSwgJmlzbnVsbCk7 CisJQXNzZXJ0KCFpc251bGwpOworCW5ld3ZlcnNpb24gPSBnZXRfY29sbGF0aW9uX2FjdHVh bF92ZXJzaW9uKGNvbGxGb3JtLT5jb2xscHJvdmlkZXIsIFRleHREYXR1bUdldENTdHJpbmco ZGF0dW0pKTsKIAogCS8qIGNhbm5vdCBjaGFuZ2UgZnJvbSBOVUxMIHRvIG5vbi1OVUxMIG9y IHZpY2UgdmVyc2EgKi8KIAlpZiAoKCFvbGR2ZXJzaW9uICYmIG5ld3ZlcnNpb24pIHx8IChv bGR2ZXJzaW9uICYmICFuZXd2ZXJzaW9uKSkKQEAgLTM4Myw4ICszOTYsOSBAQCBwZ19jb2xs YXRpb25fYWN0dWFsX3ZlcnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlPaWQJCQljb2xs aWQgPSBQR19HRVRBUkdfT0lEKDApOwogCUhlYXBUdXBsZQl0cDsKLQljaGFyCSAgICpjb2xs Y29sbGF0ZTsKIAljaGFyCQljb2xscHJvdmlkZXI7CisJRGF0dW0JCWRhdHVtOworCWJvb2wJ CWlzbnVsbDsKIAljaGFyCSAgICp2ZXJzaW9uOwogCiAJdHAgPSBTZWFyY2hTeXNDYWNoZTEo Q09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShjb2xsaWQpKTsKQEAgLTM5MywxMiArNDA3LDEz IEBAIHBnX2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihQR19GVU5DVElPTl9BUkdTKQogCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCiAJCQkJIGVycm1zZygiY29s bGF0aW9uIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0IiwgY29sbGlkKSkpOwogCi0JY29s bGNvbGxhdGUgPSBwc3RyZHVwKE5hbWVTdHIoKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RS VUNUKHRwKSktPmNvbGxjb2xsYXRlKSk7CiAJY29sbHByb3ZpZGVyID0gKChGb3JtX3BnX2Nv bGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxwcm92aWRlcjsKIAotCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1f cGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwlBc3NlcnQoIWlzbnVsbCk7 CisJdmVyc2lvbiA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oY29sbHByb3ZpZGVy LCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CiAKLQl2ZXJzaW9uID0gZ2V0X2NvbGxh dGlvbl9hY3R1YWxfdmVyc2lvbihjb2xscHJvdmlkZXIsIGNvbGxjb2xsYXRlKTsKKwlSZWxl YXNlU3lzQ2FjaGUodHApOwogCiAJaWYgKHZlcnNpb24pCiAJCVBHX1JFVFVSTl9URVhUX1Ao Y3N0cmluZ190b190ZXh0KHZlcnNpb24pKTsKQEAgLTU0Niw3ICs1NjEsNyBAQCBwZ19pbXBv cnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKICNpZmRlZiBSRUFEX0xP Q0FMRV9BX09VVFBVVAogCXsKIAkJRklMRQkgICAqbG9jYWxlX2FfaGFuZGxlOwotCQljaGFy CQlsb2NhbGVidWZbTkFNRURBVEFMRU5dOyAvKiB3ZSBhc3N1bWUgQVNDSUkgc28gdGhpcyBp cyBmaW5lICovCisJCWNoYXIJCWxvY2FsZWJ1ZltMT0NBTEVfTkFNRV9CVUZMRU5dOwogCQlp bnQJCQludmFsaWQgPSAwOwogCQlPaWQJCQljb2xsaWQ7CiAJCUNvbGxBbGlhc0RhdGEgKmFs aWFzZXM7CkBAIC01NzAsNyArNTg1LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25z KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXsKIAkJCXNpemVfdAkJbGVuOwogCQkJaW50CQkJZW5j OwotCQkJY2hhcgkJYWxpYXNbTkFNRURBVEFMRU5dOworCQkJY2hhcgkJYWxpYXNbTE9DQUxF X05BTUVfQlVGTEVOXTsKIAogCQkJbGVuID0gc3RybGVuKGxvY2FsZWJ1Zik7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCBkYTgzNDU1NjFkLi42NWI0MjBhZWE2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC01MjMsMTAgKzUyMyw4IEBAIGNy ZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQog CQlEaXJlY3RGdW5jdGlvbkNhbGwxKG5hbWVpbiwgQ1N0cmluZ0dldERhdHVtKGRibmFtZSkp OwogCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRkYmEgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0oZGF0ZGJhKTsKIAluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZW5jb2Rp bmcgLSAxXSA9IEludDMyR2V0RGF0dW0oZW5jb2RpbmcpOwotCW5ld19yZWNvcmRbQW51bV9w Z19kYXRhYmFzZV9kYXRjb2xsYXRlIC0gMV0gPQotCQlEaXJlY3RGdW5jdGlvbkNhbGwxKG5h bWVpbiwgQ1N0cmluZ0dldERhdHVtKGRiY29sbGF0ZSkpOwotCW5ld19yZWNvcmRbQW51bV9w Z19kYXRhYmFzZV9kYXRjdHlwZSAtIDFdID0KLQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1l aW4sIENTdHJpbmdHZXREYXR1bShkYmN0eXBlKSk7CisJbmV3X3JlY29yZFtBbnVtX3BnX2Rh dGFiYXNlX2RhdGNvbGxhdGUgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZGJjb2xsYXRl KTsKKwluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0Y3R5cGUgLSAxXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oZGJjdHlwZSk7CiAJbmV3X3JlY29yZFtBbnVtX3BnX2RhdGFiYXNl X2RhdGlzdGVtcGxhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShkYmlzdGVtcGxhdGUpOwogCW5l d19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRhbGxvd2Nvbm4gLSAxXSA9IEJvb2xHZXRE YXR1bShkYmFsbG93Y29ubmVjdGlvbnMpOwogCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFz ZV9kYXRjb25ubGltaXQgLSAxXSA9IEludDMyR2V0RGF0dW0oZGJjb25ubGltaXQpOwpAQCAt MTgyMCw2ICsxODE4LDkgQEAgZ2V0X2RiX2luZm8oY29uc3QgY2hhciAqbmFtZSwgTE9DS01P REUgbG9ja21vZGUsCiAKIAkJCWlmIChzdHJjbXAobmFtZSwgTmFtZVN0cihkYmZvcm0tPmRh dG5hbWUpKSA9PSAwKQogCQkJeworCQkJCURhdHVtCQlkYXR1bTsKKwkJCQlib29sCQlpc251 bGw7CisKIAkJCQkvKiBvaWQgb2YgdGhlIGRhdGFiYXNlICovCiAJCQkJaWYgKGRiSWRQKQog CQkJCQkqZGJJZFAgPSBkYk9pZDsKQEAgLTE4NDYsOSArMTg0NywxNyBAQCBnZXRfZGJfaW5m byhjb25zdCBjaGFyICpuYW1lLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJKmRiVGFibGVz cGFjZSA9IGRiZm9ybS0+ZGF0dGFibGVzcGFjZTsKIAkJCQkvKiBkZWZhdWx0IGxvY2FsZSBz ZXR0aW5ncyBmb3IgdGhpcyBkYXRhYmFzZSAqLwogCQkJCWlmIChkYkNvbGxhdGUpCi0JCQkJ CSpkYkNvbGxhdGUgPSBwc3RyZHVwKE5hbWVTdHIoZGJmb3JtLT5kYXRjb2xsYXRlKSk7CisJ CQkJeworCQkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUs IEFudW1fcGdfZGF0YWJhc2VfZGF0Y29sbGF0ZSwgJmlzbnVsbCk7CisJCQkJCUFzc2VydCgh aXNudWxsKTsKKwkJCQkJKmRiQ29sbGF0ZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0p OworCQkJCX0KIAkJCQlpZiAoZGJDdHlwZSkKLQkJCQkJKmRiQ3R5cGUgPSBwc3RyZHVwKE5h bWVTdHIoZGJmb3JtLT5kYXRjdHlwZSkpOworCQkJCXsKKwkJCQkJZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoREFUQUJBU0VPSUQsIHR1cGxlLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGN0eXBl LCAmaXNudWxsKTsKKwkJCQkJQXNzZXJ0KCFpc251bGwpOworCQkJCQkqZGJDdHlwZSA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQkJCX0KIAkJCQlSZWxlYXNlU3lzQ2FjaGUo dHVwbGUpOwogCQkJCXJlc3VsdCA9IHRydWU7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlLmMKaW5kZXggMzNjY2NjNWM2Yy4uYWVmYTA4MThkMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMTc5LDcgKzE3OSw3IEBAIHBnX3Blcm1fc2V0 bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlKQogCSAqLwogCWlmIChj YXRlZ29yeSA9PSBMQ19DVFlQRSkKIAl7Ci0JCXN0YXRpYyBjaGFyIHNhdmVfbGNfY3R5cGVb TkFNRURBVEFMRU4gKyAyMF07CisJCXN0YXRpYyBjaGFyIHNhdmVfbGNfY3R5cGVbTE9DQUxF X05BTUVfQlVGTEVOXTsKIAogCQkvKiBjb3B5IHNldGxvY2FsZSgpIHJldHVybiB2YWx1ZSBi ZWZvcmUgY2FsbGVlIGludm9rZXMgaXQgYWdhaW4gKi8KIAkJc3RybGNweShzYXZlX2xjX2N0 eXBlLCByZXN1bHQsIHNpemVvZihzYXZlX2xjX2N0eXBlKSk7CkBAIC0xMjg4LDE3ICsxMjg4 LDIxIEBAIGxvb2t1cF9jb2xsYXRpb25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRf ZmxhZ3MpCiAJewogCQkvKiBBdHRlbXB0IHRvIHNldCB0aGUgZmxhZ3MgKi8KIAkJSGVhcFR1 cGxlCXRwOwotCQlGb3JtX3BnX2NvbGxhdGlvbiBjb2xsZm9ybTsKKwkJRGF0dW0JCWRhdHVt OworCQlib29sCQlpc251bGw7CiAJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOwogCQljb25z dCBjaGFyICpjb2xsY3R5cGU7CiAKIAkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwg T2JqZWN0SWRHZXREYXR1bShjb2xsYXRpb24pKTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKIAkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRp b24gJXUiLCBjb2xsYXRpb24pOwotCQljb2xsZm9ybSA9IChGb3JtX3BnX2NvbGxhdGlvbikg R0VUU1RSVUNUKHRwKTsKIAotCQljb2xsY29sbGF0ZSA9IE5hbWVTdHIoY29sbGZvcm0tPmNv bGxjb2xsYXRlKTsKLQkJY29sbGN0eXBlID0gTmFtZVN0cihjb2xsZm9ybS0+Y29sbGN0eXBl KTsKKwkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29s bGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCQlj b2xsY29sbGF0ZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBl LCAmaXNudWxsKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCQljb2xsY3R5cGUgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAogCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0g KChzdHJjbXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkgfHwKIAkJCQkJCQkJCSAoc3RyY21w KGNvbGxjb2xsYXRlLCAiUE9TSVgiKSA9PSAwKSk7CkBAIC0xNDg0LDcgKzE0ODgsNyBAQCBw Z19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAkJY29uc3QgY2hhciAq Y29sbGN0eXBlIHBnX2F0dHJpYnV0ZV91bnVzZWQoKTsKIAkJc3RydWN0IHBnX2xvY2FsZV9z dHJ1Y3QgcmVzdWx0OwogCQlwZ19sb2NhbGVfdCByZXN1bHRwOwotCQlEYXR1bQkJY29sbHZl cnNpb247CisJCURhdHVtCQlkYXR1bTsKIAkJYm9vbAkJaXNudWxsOwogCiAJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0oY29sbGlkKSk7CkBAIC0x NDkyLDggKzE0OTYsMTIgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xs aWQpCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29sbGF0aW9u ICV1IiwgY29sbGlkKTsKIAkJY29sbGZvcm0gPSAoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNU UlVDVCh0cCk7CiAKLQkJY29sbGNvbGxhdGUgPSBOYW1lU3RyKGNvbGxmb3JtLT5jb2xsY29s bGF0ZSk7Ci0JCWNvbGxjdHlwZSA9IE5hbWVTdHIoY29sbGZvcm0tPmNvbGxjdHlwZSk7CisJ CWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlv bl9jb2xsY29sbGF0ZSwgJmlzbnVsbCk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJY29sbGNv bGxhdGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlwZSwgJmlz bnVsbCk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJY29sbGN0eXBlID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhkYXR1bSk7CiAKIAkJLyogV2UnbGwgZmlsbCBpbiB0aGUgcmVzdWx0IHN0cnVj dCBsb2NhbGx5IGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSAqLwogCQltZW1zZXQoJnJlc3Vs dCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwpAQCAtMTU4NywxMyArMTU5NSwxNSBAQCBwZ19uZXds b2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKICNlbmRpZgkJCQkJCQkvKiBub3Qg VVNFX0lDVSAqLwogCQl9CiAKLQkJY29sbHZlcnNpb24gPSBTeXNDYWNoZUdldEF0dHIoQ09M TE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9uLAorCQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNp b24sCiAJCQkJCQkJCQkgICZpc251bGwpOwogCQlpZiAoIWlzbnVsbCkKIAkJewogCQkJY2hh cgkgICAqYWN0dWFsX3ZlcnNpb25zdHI7CiAJCQljaGFyCSAgICpjb2xsdmVyc2lvbnN0cjsK IAorCQkJY29sbHZlcnNpb25zdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwog CQkJYWN0dWFsX3ZlcnNpb25zdHIgPSBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNv bGxmb3JtLT5jb2xscHJvdmlkZXIsIGNvbGxjb2xsYXRlKTsKIAkJCWlmICghYWN0dWFsX3Zl cnNpb25zdHIpCiAJCQl7CkBAIC0xNjA2LDcgKzE2MTYsNiBAQCBwZ19uZXdsb2NhbGVfZnJv bV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAkJCQkJCShlcnJtc2coImNvbGxhdGlvbiBcIiVz XCIgaGFzIG5vIGFjdHVhbCB2ZXJzaW9uLCBidXQgYSB2ZXJzaW9uIHdhcyBzcGVjaWZpZWQi LAogCQkJCQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSk7CiAJCQl9Ci0JCQlj b2xsdmVyc2lvbnN0ciA9IFRleHREYXR1bUdldENTdHJpbmcoY29sbHZlcnNpb24pOwogCiAJ CQlpZiAoc3RyY21wKGFjdHVhbF92ZXJzaW9uc3RyLCBjb2xsdmVyc2lvbnN0cikgIT0gMCkK IAkJCQllcmVwb3J0KFdBUk5JTkcsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5k ZXggMDIzNjE2NWY2MC4uZDA0NmNhYWJkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYwpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3luYy5oIgogI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKKyNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAg LTMwNiw2ICszMDcsOCBAQCBDaGVja015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9v bCBhbV9zdXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxsb3dfY29ubmVjdAogewogCUhlYXBU dXBsZQl0dXA7CiAJRm9ybV9wZ19kYXRhYmFzZSBkYmZvcm07CisJRGF0dW0JCWRhdHVtOwor CWJvb2wJCWlzbnVsbDsKIAljaGFyCSAgICpjb2xsYXRlOwogCWNoYXIJICAgKmN0eXBlOwog CkBAIC0zODksOCArMzkyLDEyIEBAIENoZWNrTXlEYXRhYmFzZShjb25zdCBjaGFyICpuYW1l LCBib29sIGFtX3N1cGVydXNlciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25uZWN0CiAJCQkJ CVBHQ19CQUNLRU5ELCBQR0NfU19EWU5BTUlDX0RFRkFVTFQpOwogCiAJLyogYXNzaWduIGxv Y2FsZSB2YXJpYWJsZXMgKi8KLQljb2xsYXRlID0gTmFtZVN0cihkYmZvcm0tPmRhdGNvbGxh dGUpOwotCWN0eXBlID0gTmFtZVN0cihkYmZvcm0tPmRhdGN0eXBlKTsKKwlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGNv bGxhdGUsICZpc251bGwpOworCUFzc2VydCghaXNudWxsKTsKKwljb2xsYXRlID0gVGV4dERh dHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoREFUQUJB U0VPSUQsIHR1cCwgQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSwgJmlzbnVsbCk7CisJQXNz ZXJ0KCFpc251bGwpOworCWN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CiAK IAlpZiAocGdfcGVybV9zZXRsb2NhbGUoTENfQ09MTEFURSwgY29sbGF0ZSkgPT0gTlVMTCkK IAkJZXJlcG9ydChGQVRBTCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29sbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCmluZGV4 IGJjNzQ2NTM3YzEuLjg3NjNkZDQwODAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29sbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRp b24uaApAQCAtMzksOSArMzksOSBAQCBDQVRBTE9HKHBnX2NvbGxhdGlvbiwzNDU2LENvbGxh dGlvblJlbGF0aW9uSWQpCiAJY2hhcgkJY29sbHByb3ZpZGVyOwkvKiBzZWUgY29uc3RhbnRz IGJlbG93ICovCiAJYm9vbAkJY29sbGlzZGV0ZXJtaW5pc3RpYyBCS0lfREVGQVVMVCh0KTsK IAlpbnQzMgkJY29sbGVuY29kaW5nOwkvKiBlbmNvZGluZyBmb3IgdGhpcyBjb2xsYXRpb247 IC0xID0gImFsbCIgKi8KLQlOYW1lRGF0YQljb2xsY29sbGF0ZTsJLyogTENfQ09MTEFURSBz ZXR0aW5nICovCi0JTmFtZURhdGEJY29sbGN0eXBlOwkJLyogTENfQ1RZUEUgc2V0dGluZyAq LwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlICovCisJdGV4dAkJY29sbGNvbGxhdGUgQktJX0ZPUkNFX05PVF9OVUxMOwkJ LyogTENfQ09MTEFURSBzZXR0aW5nICovCisJdGV4dAkJY29sbGN0eXBlIEJLSV9GT1JDRV9O T1RfTlVMTDsJCS8qIExDX0NUWVBFIHNldHRpbmcgKi8KIAl0ZXh0CQljb2xsdmVyc2lvbiBC S0lfREVGQVVMVChfbnVsbF8pOwkvKiBwcm92aWRlci1kZXBlbmRlbnQKIAkJCQkJCQkJCQkJ CQkgKiB2ZXJzaW9uIG9mIGNvbGxhdGlvbgogCQkJCQkJCQkJCQkJCSAqIGRhdGEgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuaAppbmRleCAxZmY2ZDNlNTBjLi45MGI0M2E0ZWNj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RhdGFiYXNlLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5oCkBAIC00MCwxMiArNDAsNiBAQCBD QVRBTE9HKHBnX2RhdGFiYXNlLDEyNjIsRGF0YWJhc2VSZWxhdGlvbklkKSBCS0lfU0hBUkVE X1JFTEFUSU9OIEJLSV9ST1dUWVBFX09JRAogCS8qIGNoYXJhY3RlciBlbmNvZGluZyAqLwog CWludDMyCQllbmNvZGluZzsKIAotCS8qIExDX0NPTExBVEUgc2V0dGluZyAqLwotCU5hbWVE YXRhCWRhdGNvbGxhdGU7Ci0KLQkvKiBMQ19DVFlQRSBzZXR0aW5nICovCi0JTmFtZURhdGEJ ZGF0Y3R5cGU7Ci0KIAkvKiBhbGxvd2VkIGFzIENSRUFURSBEQVRBQkFTRSB0ZW1wbGF0ZT8g Ki8KIAlib29sCQlkYXRpc3RlbXBsYXRlOwogCkBAIC02NSw2ICs1OSwxMiBAQCBDQVRBTE9H KHBnX2RhdGFiYXNlLDEyNjIsRGF0YWJhc2VSZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFU SU9OIEJLSV9ST1dUWVBFX09JRAogCU9pZAkJCWRhdHRhYmxlc3BhY2UgQktJX0xPT0tVUChw Z190YWJsZXNwYWNlKTsKIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisJLyogTENfQ09MTEFURSBzZXR0aW5nICov CisJdGV4dAkJZGF0Y29sbGF0ZSBCS0lfRk9SQ0VfTk9UX05VTEw7CisKKwkvKiBMQ19DVFlQ RSBzZXR0aW5nICovCisJdGV4dAkJZGF0Y3R5cGUgQktJX0ZPUkNFX05PVF9OVUxMOworCiAJ LyogYWNjZXNzIHBlcm1pc3Npb25zICovCiAJYWNsaXRlbQkJZGF0YWNsWzFdOwogI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oCmluZGV4IGI0YTI3NjU5ODMuLjMwZTQyM2FmMGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oCkBAIC0zNCw2ICszNCw4IEBACiAjZW5kaWYKICNlbmRp ZgogCisvKiB1c2UgZm9yIGxpYmMgbG9jYWxlIG5hbWVzICovCisjZGVmaW5lIExPQ0FMRV9O QU1FX0JVRkxFTiAxMjgKIAogLyogR1VDIHNldHRpbmdzICovCiBleHRlcm4gY2hhciAqbG9j YWxlX21lc3NhZ2VzOwotLSAKMi4zNC4xCgo= --------------AYXqPR9it7ea8an0LQdDMqLH--