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 1nKLFj-0004HH-HJ for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Feb 2022 14:25:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nKLFg-0002DB-SZ for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Feb 2022 14:25:52 +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 1nKLFf-0002Cv-Ap for pgsql-hackers@lists.postgresql.org; Wed, 16 Feb 2022 14:25:52 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nKLFY-0007iR-Jm for pgsql-hackers@postgresql.org; Wed, 16 Feb 2022 14:25:50 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id DFCC55C0390; Wed, 16 Feb 2022 09:25:42 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Wed, 16 Feb 2022 09:25:42 -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=fm2; bh=18DCh+CQhm89X7RtT CfhhbzDGrOzofPtfZblkCHMyOw=; b=H5MqI2UCVyMl4movCRYY0fKp1Kk0jHpB0 H7iOO3bhFfG+HR956UnUM16Z+JcUKjH12WVY3QhNtFnmQs2OiaAU3kjFstn+jsbK 6MurzI+8qf0BKGViKwXPIas9mi4UArrJUbzbA6EpbqP3GvqzsANxknThEO+Tdc8d jGLv0Vb2keB/Nmbh4bMcx4Gl6DwtRsv+GINxK0wzUOiEi1K182dWaa9jVnkA4ySb ZJMCjXsNnSQwe4Ghul5m1egduhvGy2F/CH+JvP39WbjCZLRLfoJnfiamKRPlvvBg +CTezaO4eSA53zsyvf07FOicrok9M3LtNE9m+YDC7odhpflhQ8Crw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrjeeigdeifecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffhvfhfjgesmhdtreertdefjeenucfhrhhomheprfgvthgvrhcu gfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrph hrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepkeetteefheevhfdvledtfeeg leeutdekkeekveeifeeuffevjeeujeehffejieejnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsegv nhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 16 Feb 2022 09:25:41 -0500 (EST) Content-Type: multipart/mixed; boundary="------------TQCUTDvIa3eUrHkGNuSAPWYg" Message-ID: <96a50803-72ba-8eec-948a-d87608ac15a0@enterprisedb.com> Date: Wed, 16 Feb 2022 15:25:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Subject: Re: ICU for global collation Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers Cc: Julien Rouhaud , Daniel Verite References: <20220110032508.4eyz6m6mpvt622la@jrouhaud> <20220110060027.egvaly4lskylo22f@jrouhaud> <20220111110852.t5oxfga57llm5cy2@jrouhaud> <20220118040246.dewl5pain2gkv2iv@jrouhaud> <171c5f7c-43ee-dbe9-31f9-5e3eb06a54cf@enterprisedb.com> <20220121135119.ywszwl4353v5dzh5@jrouhaud> <20220121161331.xn7fhtfg5j2ucilb@jrouhaud> <87e93704-b7f7-71f6-161d-8713e6334ed3@enterprisedb.com> <704405ed-f1fa-d2a7-b9f9-48a07fb45648@enterprisedb.com> In-Reply-To: <704405ed-f1fa-d2a7-b9f9-48a07fb45648@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. --------------TQCUTDvIa3eUrHkGNuSAPWYg Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 02.02.22 14:01, Peter Eisentraut wrote: > Here is the main patch rebased on the various changes that have been > committed in the meantime.  There is still some work to be done on the > user interfaces of initdb, createdb, etc. > > I have split out the database-level collation version tracking into a > separate patch [0].  I think we should get that one in first and then > refresh this one. All that preliminary work has been completed, so here is a new patch. There isn't actually much left here now except all the new DDL and command-line options to set this up and documentation for those. I have given all that another review and I hope it's more intuitive now, but I guess there will be other opinions. I have changed the terminology a bit to match ICU better. It's now called "ICU locale ID" and "locale provider" (instead of "collation"). It might actually cover things that are not strictly collations (such as the isalpha stuff in text search, maybe, in the future). One thing that is left that bothers me is that the invocations of get_collation_actual_version() have all gotten quite complicated. I'm thinking about ways to refactor that, but I haven't got a great idea yet. --------------TQCUTDvIa3eUrHkGNuSAPWYg Content-Type: text/plain; charset=UTF-8; name="v5-0001-Add-option-to-use-ICU-as-global-locale-provider.patch" Content-Disposition: attachment; filename*0="v5-0001-Add-option-to-use-ICU-as-global-locale-provider.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA2ZDI2NWUyY2Y3ODU0NmJjYzI1ZDAzMDMxZWEwM2YzOTdmMWMxYzFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxNiBGZWIgMjAyMiAxNToxMTowNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIEFkZCBvcHRpb24gdG8gdXNlIElDVSBhcyBnbG9iYWwgbG9jYWxlIHBy b3ZpZGVyCgpUaGlzIGFkZHMgdGhlIG9wdGlvbiB0byB1c2UgSUNVIGFzIHRoZSBkZWZhdWx0 IGxvY2FsZSBwcm92aWRlciBmb3IKZWl0aGVyIHRoZSB3aG9sZSBjbHVzdGVyIG9yIGEgZGF0 YWJhc2UuICBOZXcgb3B0aW9ucyBmb3IgaW5pdGRiLApjcmVhdGVkYiwgYW5kIENSRUFURSBE QVRBQkFTRSBhcmUgdXNlZCB0byBzZWxlY3QgdGhpcy4KCkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC81ZTc1NmRkNi0wZTkxLWQ3Nzgt OTZmZC1iMWJjYjA2YzE2MWElNDAybmRxdWFkcmFudC5jb20KClhYWCBjYXR2ZXJzaW9uIGJ1 bXAKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAg fCAgIDkgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbCAgICAgICAg IHwgIDI3ICsrKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5zZ21sICAgICAgICAgICAg ICAgIHwgIDE5ICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sICAgICAgICAgICAg ICAgICAgfCAgNzYgKysrKysrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9u LmMgICAgICAgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9u Y21kcy5jICAgICAgICAgIHwgIDk2ICsrKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9kYmNvbW1hbmRzLmMgICAgICAgICAgICAgfCAxNjIgKysrKysrKysrKysrKysrLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgfCAxNDQgKysr KysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgICAg ICAgICAgIHwgIDIxICsrLQogc3JjL2Jpbi9pbml0ZGIvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKy0tCiBzcmMvYmluL2luaXRkYi90LzAwMV9p bml0ZGIucGwgICAgICAgICAgICAgICAgfCAgMjUgKysrCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKysrLQogc3JjL2Jpbi9wZ191cGdy YWRlL2NoZWNrLmMgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrCiBzcmMvYmluL3BnX3Vw Z3JhZGUvaW5mby5jICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iaW4vcGdf dXBncmFkZS9wZ191cGdyYWRlLmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKystCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9i aW4vc2NyaXB0cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv YmluL3NjcmlwdHMvY3JlYXRlZGIuYyAgICAgICAgICAgICAgICAgICAgfCAgMjAgKysrCiBz cmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIucGwgICAgICAgICAgICAgfCAgMjggKysr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5kYXQgICAgICAgICAgfCAgIDMg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggICAgICAgICAgICB8ICAy MCArKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuZGF0ICAgICAgICAgICB8 ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5oICAgICAgICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgICAgICAg ICB8ICAgNSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAg ICAgfCAgMTAgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3Fs ICAgICB8ICAgOCArLQogMjggZmlsZXMgY2hhbmdlZCwgNzQxIGluc2VydGlvbnMoKyksIDE2 NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDVhMTYyN2EzOTQuLjhmZGUz MmRmYWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yMzg0LDYgKzIzODQsMTUgQEAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+ CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbGxpY3Vsb2NhbGU8L3N0 cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgSUNVIGxvY2FsZSBJRCBmb3IgdGhpcyBjb2xsYXRpb24gb2JqZWN0Cisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmNvbGx2ZXJzaW9uPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX2RhdGFiYXNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFz ZS5zZ21sCmluZGV4IGY3MGQwYzc1YjQuLjU0NGMxY2I0NDMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfZGF0YWJhc2Uuc2dtbApAQCAtMjgsNiArMjgsOCBAQAogICAgICAgICAgICBb IExPQ0FMRSBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxvY2FsZTwvcmVw bGFjZWFibGU+IF0KICAgICAgICAgICAgWyBMQ19DT0xMQVRFIFs9XSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bGNfY29sbGF0ZTwvcmVwbGFjZWFibGU+IF0KICAgICAgICAg ICAgWyBMQ19DVFlQRSBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxjX2N0 eXBlPC9yZXBsYWNlYWJsZT4gXQorICAgICAgICAgICBbIElDVV9MT0NBTEUgWz1dIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pY3VfbG9jYWxlPC9yZXBsYWNlYWJsZT4gXQor ICAgICAgICAgICBbIExPQ0FMRV9QUk9WSURFUiBbPV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmxvY2FsZV9wcm92aWRlcjwvcmVwbGFjZWFibGU+IF0KICAgICAgICAgICAg WyBDT0xMQVRJT05fVkVSU0lPTiA9IDxyZXBsYWNlYWJsZT5jb2xsYXRpb25fdmVyc2lvbjwv cmVwbGFjZWFibGU+IF0KICAgICAgICAgICAgWyBUQUJMRVNQQUNFIFs9XSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVzcGFjZV9uYW1lPC9yZXBsYWNlYWJsZT4gXQog ICAgICAgICAgICBbIEFMTE9XX0NPTk5FQ1RJT05TIFs9XSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YWxsb3djb25uPC9yZXBsYWNlYWJsZT4gXQpAQCAtMTYwLDYgKzE2Miwz MSBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmljdV9sb2NhbGU8L3JlcGxhY2VhYmxl PjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3Bl Y2lmaWVzIHRoZSBJQ1UgbG9jYWxlIGlmIHRoZSBJQ1UgbG9jYWxlIHByb3ZpZGVyIGlzIHVz ZWQuICBJZgorICAgICAgICB0aGlzIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBmcm9t IHRoZSA8bGl0ZXJhbD5MT0NBTEU8L2xpdGVyYWw+CisgICAgICAgIG9wdGlvbiBpcyB1c2Vk LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48cmVwbGFjZWFibGU+ bG9jYWxlX3Byb3ZpZGVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisKKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBwcm92aWRlciB0byB1 c2UgZm9yIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiBpbiB0aGlzCisgICAgICAgIGRhdGFiYXNl LiAgUG9zc2libGUgdmFsdWVzIGFyZToKKyAgICAgICAgPGxpdGVyYWw+aWN1PC9saXRlcmFs Piw8aW5kZXh0ZXJtPjxwcmltYXJ5PklDVTwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAg ICAgPGxpdGVyYWw+bGliYzwvbGl0ZXJhbD4uICA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPiBp cyB0aGUgZGVmYXVsdC4gIFRoZQorICAgICAgICBhdmFpbGFibGUgY2hvaWNlcyBkZXBlbmQg b24gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGJ1aWxkIG9wdGlvbnMuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg PHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZT5jb2xsYXRpb25fdmVy c2lvbjwvcmVwbGFjZWFibGU+PC90ZXJtPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZWRiLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwKaW5k ZXggODY0NzM0NTVjOS4uZWJlZDFkZjMwYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVkYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlZGIuc2dtbApA QCAtMTQ3LDYgKzE0NywyNSBAQCA8dGl0bGU+T3B0aW9uczwvdGl0bGU+CiAgICAgICA8L2xp c3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+PG9wdGlvbj4tLWljdS1sb2NhbGU9PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmxvY2FsZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgdGhlIElDVSBs b2NhbGUgc2V0dGluZyB0byBiZSB1c2VkIGluIHRoaXMgZGF0YWJhc2UsIGlmIHRoZQorICAg ICAgICBJQ1UgbG9jYWxlIHByb3ZpZGVyIGlzIHNlbGVjdGVkLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi0tbG9jYWxlLXByb3ZpZGVyPXs8bGl0 ZXJhbD5saWJjPC9saXRlcmFsPnw8bGl0ZXJhbD5pY3U8L2xpdGVyYWw+fTwvb3B0aW9uPjwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lm aWVzIHRoZSBsb2NhbGUgcHJvdmlkZXIgZm9yIHRoZSBkYXRhYmFzZSdzIGRlZmF1bHQgY29s bGF0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9u Pi1PIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vd25lcjwvcmVwbGFjZWFibGU+ PC9vcHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4tLW93bmVyPTxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vd25lcjwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90 ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKaW5kZXggOGY3MWM3Yzk2Mi4uMzFmNDQ1MDc1NSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2luaXRkYi5zZ21sCkBAIC04NiwzMCArODYsNDcgQEAgPHRpdGxlPkRlc2Ny aXB0aW9uPC90aXRsZT4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgPGNvbW1hbmQ+aW5p dGRiPC9jb21tYW5kPiBpbml0aWFsaXplcyB0aGUgZGF0YWJhc2UgY2x1c3RlcidzIGRlZmF1 bHQKLSAgIGxvY2FsZSBhbmQgY2hhcmFjdGVyIHNldCBlbmNvZGluZy4gVGhlIGNoYXJhY3Rl ciBzZXQgZW5jb2RpbmcsCi0gICBjb2xsYXRpb24gb3JkZXIgKDxsaXRlcmFsPkxDX0NPTExB VEU8L2xpdGVyYWw+KSBhbmQgY2hhcmFjdGVyIHNldCBjbGFzc2VzCi0gICAoPGxpdGVyYWw+ TENfQ1RZUEU8L2xpdGVyYWw+LCBlLmcuLCB1cHBlciwgbG93ZXIsIGRpZ2l0KSBjYW4gYmUg c2V0IHNlcGFyYXRlbHkKLSAgIGZvciBhIGRhdGFiYXNlIHdoZW4gaXQgaXMgY3JlYXRlZC4g PGNvbW1hbmQ+aW5pdGRiPC9jb21tYW5kPiBkZXRlcm1pbmVzCi0gICB0aG9zZSBzZXR0aW5n cyBmb3IgdGhlIHRlbXBsYXRlIGRhdGFiYXNlcywgd2hpY2ggd2lsbAotICAgc2VydmUgYXMg dGhlIGRlZmF1bHQgZm9yIGFsbCBvdGhlciBkYXRhYmFzZXMuCisgICA8Y29tbWFuZD5pbml0 ZGI8L2NvbW1hbmQ+IGluaXRpYWxpemVzIHRoZSBkYXRhYmFzZSBjbHVzdGVyJ3MgZGVmYXVs dCBsb2NhbGUKKyAgIGFuZCBjaGFyYWN0ZXIgc2V0IGVuY29kaW5nLiBUaGVzZSBjYW4gYWxz byBiZSBzZXQgc2VwYXJhdGVseSBmb3IgZWFjaAorICAgZGF0YWJhc2Ugd2hlbiBpdCBpcyBj cmVhdGVkLiA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IGRldGVybWluZXMgdGhvc2UKKyAg IHNldHRpbmdzIGZvciB0aGUgdGVtcGxhdGUgZGF0YWJhc2VzLCB3aGljaCB3aWxsIHNlcnZl IGFzIHRoZSBkZWZhdWx0IGZvcgorICAgYWxsIG90aGVyIGRhdGFiYXNlcy4gIEJ5IGRlZmF1 bHQsIDxjb21tYW5kPmluaXRkYjwvY29tbWFuZD4gdXNlcyB0aGUKKyAgIGxvY2FsZSBwcm92 aWRlciA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPiwgdGFrZXMgdGhlIGxvY2FsZSBzZXR0aW5n cyBmcm9tCisgICB0aGUgZW52aXJvbm1lbnQsIGFuZCBkZXRlcm1pbmVzIHRoZSBlbmNvZGlu ZyBmcm9tIHRoZSBsb2NhbGUgc2V0dGluZ3MuCisgICBUaGlzIGlzIGFsbW9zdCBhbHdheXMg c3VmZmljaWVudCwgdW5sZXNzIHRoZXJlIGFyZSBzcGVjaWFsIHJlcXVpcmVtZW50cy4KICAg PC9wYXJhPgogCiAgIDxwYXJhPgotICAgVG8gYWx0ZXIgdGhlIGRlZmF1bHQgY29sbGF0aW9u IG9yZGVyIG9yIGNoYXJhY3RlciBzZXQgY2xhc3NlcywgdXNlIHRoZQotICAgPG9wdGlvbj4t LWxjLWNvbGxhdGU8L29wdGlvbj4gYW5kIDxvcHRpb24+LS1sYy1jdHlwZTwvb3B0aW9uPiBv cHRpb25zLgotICAgQ29sbGF0aW9uIG9yZGVycyBvdGhlciB0aGFuIDxsaXRlcmFsPkM8L2xp dGVyYWw+IG9yIDxsaXRlcmFsPlBPU0lYPC9saXRlcmFsPiBhbHNvIGhhdmUKLSAgIGEgcGVy Zm9ybWFuY2UgcGVuYWx0eS4gIEZvciB0aGVzZSByZWFzb25zIGl0IGlzIGltcG9ydGFudCB0 byBjaG9vc2UgdGhlCi0gICByaWdodCBsb2NhbGUgd2hlbiBydW5uaW5nIDxjb21tYW5kPmlu aXRkYjwvY29tbWFuZD4uCisgICBUbyBjaG9vc2UgYSBkaWZmZXJlbnQgbG9jYWxlIGZvciB0 aGUgY2x1c3RlciwgdXNlIHRoZSBvcHRpb24KKyAgIDxvcHRpb24+LS1sb2NhbGU8L29wdGlv bj4uICBUaGVyZSBhcmUgYWxzbyBpbmRpdmlkdWFsIG9wdGlvbnMKKyAgIDxvcHRpb24+LS1s Yy0qPC9vcHRpb24+IChzZWUgYmVsb3cpIHRvIHNldCB2YWx1ZXMgZm9yIHRoZSBpbmRpdmlk dWFsIGxvY2FsZQorICAgY2F0ZWdvcmllcy4gIE5vdGUgdGhhdCBpbmNvbnNpc3RlbnQgc2V0 dGluZ3MgZm9yIGRpZmZlcmVudCBsb2NhbGUKKyAgIGNhdGVnb3JpZXMgY2FuIGdpdmUgbm9u c2Vuc2ljYWwgcmVzdWx0cywgc28gdGhpcyBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUuCiAg IDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSByZW1haW5pbmcgbG9jYWxlIGNhdGVnb3Jp ZXMgY2FuIGJlIGNoYW5nZWQgbGF0ZXIgd2hlbiB0aGUgc2VydmVyCi0gICBpcyBzdGFydGVk LiAgWW91IGNhbiBhbHNvIHVzZSA8b3B0aW9uPi0tbG9jYWxlPC9vcHRpb24+IHRvIHNldCB0 aGUKLSAgIGRlZmF1bHQgZm9yIGFsbCBsb2NhbGUgY2F0ZWdvcmllcywgaW5jbHVkaW5nIGNv bGxhdGlvbiBvcmRlciBhbmQKLSAgIGNoYXJhY3RlciBzZXQgY2xhc3Nlcy4gQWxsIHNlcnZl ciBsb2NhbGUgdmFsdWVzICg8bGl0ZXJhbD5sY18qPC9saXRlcmFsPikgY2FuCi0gICBiZSBk aXNwbGF5ZWQgdmlhIDxjb21tYW5kPlNIT1cgQUxMPC9jb21tYW5kPi4KLSAgIE1vcmUgZGV0 YWlscyBjYW4gYmUgZm91bmQgaW4gPHhyZWYgbGlua2VuZD0ibG9jYWxlIi8+LgorICAgQWx0 ZXJuYXRpdmVseSwgdGhlIElDVSBsaWJyYXJ5IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgbG9j YWxlIHNlcnZpY2VzLgorICAgKEFnYWluLCB0aGlzIG9ubHkgc2V0cyB0aGUgZGVmYXVsdCBm b3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQgZGF0YWJhc2VzLikgIFRvCisgICBzZWxlY3QgdGhp cyBvcHRpb24sIHNwZWNpZnkgPGxpdGVyYWw+LS1sb2NhbGUtcHJvdmlkZXI9aWN1PC9saXRl cmFsPi4KKyAgIFRvIGNob3NlIHRoZSBzcGVjaWZpYyBJQ1UgbG9jYWxlIElEIHRvIGFwcGx5 LCB1c2UgdGhlIG9wdGlvbgorICAgPG9wdGlvbj4tLWljdS1sb2NhbGU8L29wdGlvbj4uICBU aGUgSUNVIGxvY2FsZSBJRCBkZWZhdWx0cyB0bworICAgPG9wdGlvbj4tLWxvY2FsZTwvb3B0 aW9uPiBvciB0aGUgZW52aXJvbm1lbnQsIGFzIGFib3ZlICh3aXRoIHNvbWUgbmFtZQorICAg bWFuZ2xpbmcgYXBwbGllZCB0byBtYWtlIHRoZSBsb2NhbGUgbmFtaW5nIGFwcHJvcHJpYXRl IGZvciBJQ1UpLiAgTm90ZSB0aGF0CisgICBmb3IgaW1wbGVtZW50YXRpb24gcmVhc29ucyBh bmQgdG8gc3VwcG9ydCBsZWdhY3kgY29kZSwKKyAgIDxjb21tYW5kPmluaXRkYjwvY29tbWFu ZD4gd2lsbCBzdGlsbCBzZWxlY3QgYW5kIGluaXRpYWxpemUgbGliYyBsb2NhbGUKKyAgIHNl dHRpbmdzIHdoZW4gdGhlIElDVSBsb2NhbGUgcHJvdmlkZXIgaXMgdXNlZC4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgV2hlbiA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IHJ1bnMs IGl0IHdpbGwgcHJpbnQgb3V0IHRoZSBsb2NhbGUgc2V0dGluZ3MKKyAgIGl0IGhhcyBjaG9z ZW4uICBJZiB5b3UgaGF2ZSBjb21wbGV4IHJlcXVpcmVtZW50cyBvciBzcGVjaWZpZWQgbXVs dGlwbGUKKyAgIG9wdGlvbnMsIGl0IGlzIGFkdmlzYWJsZSB0byBjaGVjayB0aGF0IHRoZSBy ZXN1bHQgbWF0Y2hlcyB3aGF0IHdhcworICAgaW50ZW5kZWQuCisgIDwvcGFyYT4KKworICA8 cGFyYT4KKyAgIE1vcmUgZGV0YWlscyBhYm91dCBsb2NhbGUgc2V0dGluZ3MgY2FuIGJlIGZv dW5kIGluIDx4cmVmCisgICBsaW5rZW5kPSJsb2NhbGUiLz4uCiAgIDwvcGFyYT4KIAogICA8 cGFyYT4KQEAgLTIxMCw2ICsyMjcsMTcgQEAgPHRpdGxlPk9wdGlvbnM8L3RpdGxlPgogICAg ICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1pY3UtbG9jYWxlPTxyZXBsYWNlYWJsZT5s b2NhbGU8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBJQ1UgbG9jYWxlIGlmIHRo ZSBJQ1UgbG9jYWxlIHByb3ZpZGVyIGlzIHVzZWQuICBJZgorICAgICAgICB0aGlzIGlzIG5v dCBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBmcm9tIHRoZSA8b3B0aW9uPi0tbG9jYWxlPC9vcHRp b24+CisgICAgICAgIG9wdGlvbiBpcyB1c2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwv bGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkg aWQ9ImFwcC1pbml0ZGItZGF0YS1jaGVja3N1bXMiIHhyZWZsYWJlbD0iZGF0YSBjaGVja3N1 bXMiPgogICAgICAgPHRlcm0+PG9wdGlvbj4tazwvb3B0aW9uPjwvdGVybT4KICAgICAgIDx0 ZXJtPjxvcHRpb24+LS1kYXRhLWNoZWNrc3Vtczwvb3B0aW9uPjwvdGVybT4KQEAgLTI2NCw2 ICsyOTIsMTggQEAgPHRpdGxlPk9wdGlvbnM8L3RpdGxlPgogICAgICAgPC9saXN0aXRlbT4K ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0 ZXJtPjxvcHRpb24+LS1sb2NhbGUtcHJvdmlkZXI9ezxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+ fDxsaXRlcmFsPmljdTwvbGl0ZXJhbD59PC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBsb2Nh bGUgcHJvdmlkZXIgZm9yIGRhdGFiYXNlcyBjcmVhdGVkIGluIHRoZQorICAgICAgICBuZXcg Y2x1c3Rlci4gIEl0IGNhbiBiZSBvdmVycmlkZGVuIGluIHRoZSA8Y29tbWFuZD5DUkVBVEUK KyAgICAgICAgREFUQUJBU0U8L2NvbW1hbmQ+IGNvbW1hbmQgd2hlbiBuZXcgZGF0YWJhc2Vz IGFyZSBzdWJzZXF1ZW50bHkKKyAgICAgICAgY3JlYXRlZC4gIFRoZSBkZWZhdWx0IGlzIDxs aXRlcmFsPmxpYmM8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg ICA8dGVybT48b3B0aW9uPi1OPC9vcHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlv bj4tLW5vLXN5bmM8L29wdGlvbj48L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbGxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRp b24uYwppbmRleCBiZmMwMmQzMDM4Li45MzU0NTc4NmRmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfY29sbGF0aW9uLmMKQEAgLTQ5LDYgKzQ5LDcgQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0 IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAkJCQlib29sIGNvbGxpc2Rl dGVybWluaXN0aWMsCiAJCQkJaW50MzIgY29sbGVuY29kaW5nLAogCQkJCWNvbnN0IGNoYXIg KmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xsY3R5cGUsCisJCQkJY29uc3QgY2hhciAq Y29sbGljdWxvY2FsZSwKIAkJCQljb25zdCBjaGFyICpjb2xsdmVyc2lvbiwKIAkJCQlib29s IGlmX25vdF9leGlzdHMsCiAJCQkJYm9vbCBxdWlldCkKQEAgLTY2LDggKzY3LDcgQEAgQ29s bGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwK IAlBc3NlcnRBcmcoY29sbG5hbWUpOwogCUFzc2VydEFyZyhjb2xsbmFtZXNwYWNlKTsKIAlB c3NlcnRBcmcoY29sbG93bmVyKTsKLQlBc3NlcnRBcmcoY29sbGNvbGxhdGUpOwotCUFzc2Vy dEFyZyhjb2xsY3R5cGUpOworCUFzc2VydEFyZygoY29sbGNvbGxhdGUgJiYgY29sbGN0eXBl KSB8fCBjb2xsaWN1bG9jYWxlKTsKIAogCS8qCiAJICogTWFrZSBzdXJlIHRoZXJlIGlzIG5v IGV4aXN0aW5nIGNvbGxhdGlvbiBvZiBzYW1lIG5hbWUgJiBlbmNvZGluZy4KQEAgLTE2MSw4 ICsxNjEsMTggQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQg Y29sbG5hbWVzcGFjZSwKIAl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbHByb3ZpZGVy IC0gMV0gPSBDaGFyR2V0RGF0dW0oY29sbHByb3ZpZGVyKTsKIAl2YWx1ZXNbQW51bV9wZ19j b2xsYXRpb25fY29sbGlzZGV0ZXJtaW5pc3RpYyAtIDFdID0gQm9vbEdldERhdHVtKGNvbGxp c2RldGVybWluaXN0aWMpOwogCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsZW5jb2Rp bmcgLSAxXSA9IEludDMyR2V0RGF0dW0oY29sbGVuY29kaW5nKTsKLQl2YWx1ZXNbQW51bV9w Z19jb2xsYXRpb25fY29sbGNvbGxhdGUgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY29s bGNvbGxhdGUpOwotCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY3R5cGUgLSAxXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oY29sbGN0eXBlKTsKKwlpZiAoY29sbGNvbGxhdGUpCisJ CXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSAtIDFdID0gQ1N0cmluZ0dl dFRleHREYXR1bShjb2xsY29sbGF0ZSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX2NvbGxh dGlvbl9jb2xsY29sbGF0ZSAtIDFdID0gdHJ1ZTsKKwlpZiAoY29sbGN0eXBlKQorCQl2YWx1 ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBlIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGNvbGxjdHlwZSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xs Y3R5cGUgLSAxXSA9IHRydWU7CisJaWYgKGNvbGxpY3Vsb2NhbGUpCisJCXZhbHVlc1tBbnVt X3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVt KGNvbGxpY3Vsb2NhbGUpOworCWVsc2UKKwkJbnVsbHNbQW51bV9wZ19jb2xsYXRpb25fY29s bGljdWxvY2FsZSAtIDFdID0gdHJ1ZTsKIAlpZiAoY29sbHZlcnNpb24pCiAJCXZhbHVlc1tB bnVtX3BnX2NvbGxhdGlvbl9jb2xsdmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1 bShjb2xsdmVyc2lvbik7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29sbGF0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21k cy5jCmluZGV4IDEyZmMyMzE2ZjkuLjk3NzdiNjNmMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb2xsYXRpb25jbWRzLmMKQEAgLTY1LDYgKzY1LDcgQEAgRGVmaW5lQ29sbGF0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wg aWZfbm90X2UKIAlEZWZFbGVtICAgICp2ZXJzaW9uRWwgPSBOVUxMOwogCWNoYXIJICAgKmNv bGxjb2xsYXRlID0gTlVMTDsKIAljaGFyCSAgICpjb2xsY3R5cGUgPSBOVUxMOworCWNoYXIJ ICAgKmNvbGxpY3Vsb2NhbGUgPSBOVUxMOwogCWNoYXIJICAgKmNvbGxwcm92aWRlcnN0ciA9 IE5VTEw7CiAJYm9vbAkJY29sbGlzZGV0ZXJtaW5pc3RpYyA9IHRydWU7CiAJaW50CQkJY29s bGVuY29kaW5nID0gMDsKQEAgLTE1Myw2ICsxNTQsMTIgQEAgRGVmaW5lQ29sbGF0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wg aWZfbm90X2UKIAkJZWxzZQogCQkJY29sbGN0eXBlID0gTlVMTDsKIAorCQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGljdWxv Y2FsZSwgJmlzbnVsbCk7CisJCWlmICghaXNudWxsKQorCQkJY29sbGljdWxvY2FsZSA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQllbHNlCisJCQljb2xsaWN1bG9jYWxlID0g TlVMTDsKKwogCQlSZWxlYXNlU3lzQ2FjaGUodHApOwogCiAJCS8qCkBAIC0xNjgsMTggKzE3 NSw2IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVz LCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCQkJCSBlcnJtc2coImNvbGxh dGlvbiBcImRlZmF1bHRcIiBjYW5ub3QgYmUgY29waWVkIikpKTsKIAl9CiAKLQlpZiAobG9j YWxlRWwpCi0JewotCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhsb2NhbGVFbCk7Ci0J CWNvbGxjdHlwZSA9IGRlZkdldFN0cmluZyhsb2NhbGVFbCk7Ci0JfQotCi0JaWYgKGxjY29s bGF0ZUVsKQotCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhsY2NvbGxhdGVFbCk7Ci0K LQlpZiAobGNjdHlwZUVsKQotCQljb2xsY3R5cGUgPSBkZWZHZXRTdHJpbmcobGNjdHlwZUVs KTsKLQogCWlmIChwcm92aWRlckVsKQogCQljb2xscHJvdmlkZXJzdHIgPSBkZWZHZXRTdHJp bmcocHJvdmlkZXJFbCk7CiAKQEAgLTIwNCwxNSArMTk5LDQzIEBAIERlZmluZUNvbGxhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBi b29sIGlmX25vdF9lCiAJZWxzZSBpZiAoIWZyb21FbCkKIAkJY29sbHByb3ZpZGVyID0gQ09M TFBST1ZJREVSX0xJQkM7CiAKLQlpZiAoIWNvbGxjb2xsYXRlKQotCQllcmVwb3J0KEVSUk9S LAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0J CQkJIGVycm1zZygicGFyYW1ldGVyIFwibGNfY29sbGF0ZVwiIG11c3QgYmUgc3BlY2lmaWVk IikpKTsKKwlpZiAobG9jYWxlRWwpCisJeworCQlpZiAoY29sbHByb3ZpZGVyID09IENPTExQ Uk9WSURFUl9MSUJDKQorCQl7CisJCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhsb2Nh bGVFbCk7CisJCQljb2xsY3R5cGUgPSBkZWZHZXRTdHJpbmcobG9jYWxlRWwpOworCQl9CisJ CWVsc2UKKwkJCWNvbGxpY3Vsb2NhbGUgPSBkZWZHZXRTdHJpbmcobG9jYWxlRWwpOworCX0K IAotCWlmICghY29sbGN0eXBlKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJIGVycm1zZygicGFyYW1l dGVyIFwibGNfY3R5cGVcIiBtdXN0IGJlIHNwZWNpZmllZCIpKSk7CisJaWYgKGxjY29sbGF0 ZUVsKQorCQljb2xsY29sbGF0ZSA9IGRlZkdldFN0cmluZyhsY2NvbGxhdGVFbCk7CisKKwlp ZiAobGNjdHlwZUVsKQorCQljb2xsY3R5cGUgPSBkZWZHZXRTdHJpbmcobGNjdHlwZUVsKTsK KworCWlmIChjb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpCisJeworCQlpZiAo IWNvbGxjb2xsYXRlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygicGFyYW1ldGVy IFwibGNfY29sbGF0ZVwiIG11c3QgYmUgc3BlY2lmaWVkIikpKTsKKworCQlpZiAoIWNvbGxj dHlwZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxjX2N0 eXBlXCIgbXVzdCBiZSBzcGVjaWZpZWQiKSkpOworCX0KKworCWlmIChjb2xscHJvdmlkZXIg PT0gQ09MTFBST1ZJREVSX0lDVSkKKwl7CisJCWlmICghY29sbGljdWxvY2FsZSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxvY2FsZVwiIG11c3QgYmUg c3BlY2lmaWVkIikpKTsKKwl9CiAKIAkvKgogCSAqIE5vbmRldGVybWluaXN0aWMgY29sbGF0 aW9ucyBhcmUgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIHdpdGggSUNVCkBAIC0yNTUsNyAr Mjc4LDcgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFt ZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAl9CiAKIAlpZiAoIWNvbGx2 ZXJzaW9uKQotCQljb2xsdmVyc2lvbiA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24o Y29sbHByb3ZpZGVyLCBjb2xsY29sbGF0ZSk7CisJCWNvbGx2ZXJzaW9uID0gZ2V0X2NvbGxh dGlvbl9hY3R1YWxfdmVyc2lvbihjb2xscHJvdmlkZXIsIGNvbGxwcm92aWRlciA9PSBDT0xM UFJPVklERVJfSUNVID8gY29sbGljdWxvY2FsZSA6IGNvbGxjb2xsYXRlKTsKIAogCW5ld29p ZCA9IENvbGxhdGlvbkNyZWF0ZShjb2xsTmFtZSwKIAkJCQkJCQkgY29sbE5hbWVzcGFjZSwK QEAgLTI2NSw2ICsyODgsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJ CSBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJIGNvbGxjb2xsYXRlLAogCQkJCQkJCSBjb2xsY3R5 cGUsCisJCQkJCQkJIGNvbGxpY3Vsb2NhbGUsCiAJCQkJCQkJIGNvbGx2ZXJzaW9uLAogCQkJ CQkJCSBpZl9ub3RfZXhpc3RzLAogCQkJCQkJCSBmYWxzZSk7CS8qIG5vdCBxdWlldCAqLwpA QCAtMzQ3LDkgKzM3MSwxMSBAQCBBbHRlckNvbGxhdGlvbihBbHRlckNvbGxhdGlvblN0bXQg KnN0bXQpCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHVwLCBBbnVtX3Bn X2NvbGxhdGlvbl9jb2xsdmVyc2lvbiwgJmlzbnVsbCk7CiAJb2xkdmVyc2lvbiA9IGlzbnVs bCA/IE5VTEwgOiBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCWRhdHVtID0gU3lz Q2FjaGVHZXRBdHRyKENPTExPSUQsIHR1cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGNvbGxh dGUsICZpc251bGwpOwotCUFzc2VydCghaXNudWxsKTsKLQluZXd2ZXJzaW9uID0gZ2V0X2Nv bGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xsRm9ybS0+Y29sbHByb3ZpZGVyLCBUZXh0RGF0 dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9J RCwgdHVwLCBjb2xsRm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UgPyBB bnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlIDogQW51bV9wZ19jb2xsYXRpb25fY29s bGNvbGxhdGUsICZpc251bGwpOworCWlmICghaXNudWxsKQorCQluZXd2ZXJzaW9uID0gZ2V0 X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xsRm9ybS0+Y29sbHByb3ZpZGVyLCBUZXh0 RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisJZWxzZQorCQluZXd2ZXJzaW9uID0gTlVMTDsK IAogCS8qIGNhbm5vdCBjaGFuZ2UgZnJvbSBOVUxMIHRvIG5vbi1OVUxMIG9yIHZpY2UgdmVy c2EgKi8KIAlpZiAoKCFvbGR2ZXJzaW9uICYmIG5ld3ZlcnNpb24pIHx8IChvbGR2ZXJzaW9u ICYmICFuZXd2ZXJzaW9uKSkKQEAgLTQwOSw5ICs0MzUsMTEgQEAgcGdfY29sbGF0aW9uX2Fj dHVhbF92ZXJzaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAljb2xscHJvdmlkZXIgPSAoKEZv cm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbHByb3ZpZGVyOwogCi0JZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2Nv bGxjb2xsYXRlLCAmaXNudWxsKTsKLQlBc3NlcnQoIWlzbnVsbCk7Ci0JdmVyc2lvbiA9IGdl dF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oY29sbHByb3ZpZGVyLCBUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKSk7CisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAs IGNvbGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVID8gQW51bV9wZ19jb2xsYXRpb25f Y29sbGljdWxvY2FsZSA6IEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxs KTsKKwlpZiAoIWlzbnVsbCkKKwkJdmVyc2lvbiA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3Zl cnNpb24oY29sbHByb3ZpZGVyLCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisJZWxz ZQorCQl2ZXJzaW9uID0gTlVMTDsKIAogCVJlbGVhc2VTeXNDYWNoZSh0cCk7CiAKQEAgLTYz OCw3ICs2NjYsNyBAQCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05f QVJHUykKIAkJCSAqLwogCQkJY29sbGlkID0gQ29sbGF0aW9uQ3JlYXRlKGxvY2FsZWJ1Ziwg bnNwaWQsIEdldFVzZXJJZCgpLAogCQkJCQkJCQkJIENPTExQUk9WSURFUl9MSUJDLCB0cnVl LCBlbmMsCi0JCQkJCQkJCQkgbG9jYWxlYnVmLCBsb2NhbGVidWYsCisJCQkJCQkJCQkgbG9j YWxlYnVmLCBsb2NhbGVidWYsIE5VTEwsCiAJCQkJCQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1 YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElCQywgbG9jYWxlYnVmKSwKIAkJCQkJCQkJCSB0 cnVlLCB0cnVlKTsKIAkJCWlmIChPaWRJc1ZhbGlkKGNvbGxpZCkpCkBAIC02OTksNyArNzI3 LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAkJCWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShhbGlhcywgbnNwaWQsIEdldFVzZXJJZCgp LAogCQkJCQkJCQkJIENPTExQUk9WSURFUl9MSUJDLCB0cnVlLCBlbmMsCi0JCQkJCQkJCQkg bG9jYWxlLCBsb2NhbGUsCisJCQkJCQkJCQkgbG9jYWxlLCBsb2NhbGUsIE5VTEwsCiAJCQkJ CQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElCQywg bG9jYWxlKSwKIAkJCQkJCQkJCSB0cnVlLCB0cnVlKTsKIAkJCWlmIChPaWRJc1ZhbGlkKGNv bGxpZCkpCkBAIC03NDAsNyArNzY4LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25z KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljb25zdCBjaGFyICpuYW1lOwogCQkJY2hhcgkgICAq bGFuZ3RhZzsKIAkJCWNoYXIJICAgKmljdWNvbW1lbnQ7Ci0JCQljb25zdCBjaGFyICpjb2xs Y29sbGF0ZTsKKwkJCWNvbnN0IGNoYXIgKmljdWxvY3N0cjsKIAkJCU9pZAkJCWNvbGxpZDsK IAogCQkJaWYgKGkgPT0gLTEpCkBAIC03NDksMjAgKzc3NywyMCBAQCBwZ19pbXBvcnRfc3lz dGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQluYW1lID0gdWxvY19nZXRB dmFpbGFibGUoaSk7CiAKIAkJCWxhbmd0YWcgPSBnZXRfaWN1X2xhbmd1YWdlX3RhZyhuYW1l KTsKLQkJCWNvbGxjb2xsYXRlID0gVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTQgPyBs YW5ndGFnIDogbmFtZTsKKwkJCWljdWxvY3N0ciA9IFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVN ID49IDU0ID8gbGFuZ3RhZyA6IG5hbWU7CiAKIAkJCS8qCiAJCQkgKiBCZSBwYXJhbm9pZCBh Ym91dCBub3QgYWxsb3dpbmcgYW55IG5vbi1BU0NJSSBzdHJpbmdzIGludG8KIAkJCSAqIHBn X2NvbGxhdGlvbgogCQkJICovCi0JCQlpZiAoIXBnX2lzX2FzY2lpKGxhbmd0YWcpIHx8ICFw Z19pc19hc2NpaShjb2xsY29sbGF0ZSkpCisJCQlpZiAoIXBnX2lzX2FzY2lpKGxhbmd0YWcp IHx8ICFwZ19pc19hc2NpaShpY3Vsb2NzdHIpKQogCQkJCWNvbnRpbnVlOwogCiAJCQljb2xs aWQgPSBDb2xsYXRpb25DcmVhdGUocHNwcmludGYoIiVzLXgtaWN1IiwgbGFuZ3RhZyksCiAJ CQkJCQkJCQkgbnNwaWQsIEdldFVzZXJJZCgpLAogCQkJCQkJCQkJIENPTExQUk9WSURFUl9J Q1UsIHRydWUsIC0xLAotCQkJCQkJCQkJIGNvbGxjb2xsYXRlLCBjb2xsY29sbGF0ZSwKLQkJ CQkJCQkJCSBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKENPTExQUk9WSURFUl9JQ1Us IGNvbGxjb2xsYXRlKSwKKwkJCQkJCQkJCSBOVUxMLCBOVUxMLCBpY3Vsb2NzdHIsCisJCQkJ CQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfSUNVLCBp Y3Vsb2NzdHIpLAogCQkJCQkJCQkJIHRydWUsIHRydWUpOwogCQkJaWYgKE9pZElzVmFsaWQo Y29sbGlkKSkKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29t bWFuZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCBjMzdl M2M5YTlhLi42NTk4YTkxZWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBA IC04Niw3ICs4Niw4IEBAIHN0YXRpYyBib29sIGdldF9kYl9pbmZvKGNvbnN0IGNoYXIgKm5h bWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJT2lkICpkYklkUCwgT2lkICpvd25lcklk UCwKIAkJCQkJCWludCAqZW5jb2RpbmdQLCBib29sICpkYklzVGVtcGxhdGVQLCBib29sICpk YkFsbG93Q29ublAsCiAJCQkJCQlUcmFuc2FjdGlvbklkICpkYkZyb3plblhpZFAsIE11bHRp WGFjdElkICpkYk1pbk11bHRpUCwKLQkJCQkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoq ZGJDb2xsYXRlLCBjaGFyICoqZGJDdHlwZSwKKwkJCQkJCU9pZCAqZGJUYWJsZXNwYWNlLCBj aGFyICoqZGJDb2xsYXRlLCBjaGFyICoqZGJDdHlwZSwgY2hhciAqKmRiSWN1bG9jYWxlLAor CQkJCQkJY2hhciAqZGJMb2NQcm92aWRlciwKIAkJCQkJCWNoYXIgKipkYkNvbGx2ZXJzaW9u KTsKIHN0YXRpYyBib29sIGhhdmVfY3JlYXRlZGJfcHJpdmlsZWdlKHZvaWQpOwogc3RhdGlj IHZvaWQgcmVtb3ZlX2RidGFibGVzcGFjZXMoT2lkIGRiX2lkKTsKQEAgLTEwNyw2ICsxMDgs OCBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAq c3RtdCkKIAlpbnQJCQlzcmNfZW5jb2RpbmcgPSAtMTsKIAljaGFyCSAgICpzcmNfY29sbGF0 ZSA9IE5VTEw7CiAJY2hhcgkgICAqc3JjX2N0eXBlID0gTlVMTDsKKwljaGFyCSAgICpzcmNf aWN1bG9jYWxlID0gTlVMTDsKKwljaGFyCQlzcmNfbG9jcHJvdmlkZXI7CiAJY2hhcgkgICAq c3JjX2NvbGx2ZXJzaW9uID0gTlVMTDsKIAlib29sCQlzcmNfaXN0ZW1wbGF0ZTsKIAlib29s CQlzcmNfYWxsb3djb25uOwpAQCAtMTI4LDYgKzEzMSw4IEBAIGNyZWF0ZWRiKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCURlZkVsZW0gICAgKmRs b2NhbGUgPSBOVUxMOwogCURlZkVsZW0gICAgKmRjb2xsYXRlID0gTlVMTDsKIAlEZWZFbGVt ICAgICpkY3R5cGUgPSBOVUxMOworCURlZkVsZW0gICAgKmRpY3Vsb2NhbGUgPSBOVUxMOwor CURlZkVsZW0JICAgKmRsb2Nwcm92aWRlciA9IE5VTEw7CiAJRGVmRWxlbSAgICAqZGlzdGVt cGxhdGUgPSBOVUxMOwogCURlZkVsZW0gICAgKmRhbGxvd2Nvbm5lY3Rpb25zID0gTlVMTDsK IAlEZWZFbGVtICAgICpkY29ubmxpbWl0ID0gTlVMTDsKQEAgLTEzNyw2ICsxNDIsOCBAQCBj cmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkK IAljb25zdCBjaGFyICpkYnRlbXBsYXRlID0gTlVMTDsKIAljaGFyCSAgICpkYmNvbGxhdGUg PSBOVUxMOwogCWNoYXIJICAgKmRiY3R5cGUgPSBOVUxMOworCWNoYXIJICAgKmRiaWN1bG9j YWxlID0gTlVMTDsKKwljaGFyCQlkYmxvY3Byb3ZpZGVyID0gJ1wwJzsKIAljaGFyCSAgICpj YW5vbm5hbWU7CiAJaW50CQkJZW5jb2RpbmcgPSAtMTsKIAlib29sCQlkYmlzdGVtcGxhdGUg PSBmYWxzZTsKQEAgLTE5NCw2ICsyMDEsMjEgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCQkJZXJyb3JDb25mbGljdGluZ0Rl ZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJCQlkY3R5cGUgPSBkZWZlbDsKIAkJfQorCQllbHNl IGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJpY3VfbG9jYWxlIikgPT0gMCkKKwkJewor CQkJaWYgKGRpY3Vsb2NhbGUpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWws IHBzdGF0ZSk7CisJCQlkaWN1bG9jYWxlID0gZGVmZWw7CisJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAibG9jYWxlX3Byb3ZpZGVyIikgPT0gMCkKKwkJeworCQkJ aWYgKGRsb2Nwcm92aWRlcikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IG9wdGlvbnMiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkZWZlbC0+bG9jYXRpb24pKSk7CisJCQlkbG9jcHJvdmlkZXIgPSBkZWZlbDsKKwkJfQog CQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJpc190ZW1wbGF0ZSIpID09IDAp CiAJCXsKIAkJCWlmIChkaXN0ZW1wbGF0ZSkKQEAgLTI1NywxMiArMjc5LDYgQEAgY3JlYXRl ZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CiAJfQog Ci0JaWYgKGRsb2NhbGUgJiYgKGRjb2xsYXRlIHx8IGRjdHlwZSkpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2co ImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIiksCi0JCQkJIGVycmRldGFpbCgi TE9DQUxFIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBMQ19DT0xMQVRFIG9y IExDX0NUWVBFLiIpKSk7Ci0KIAlpZiAoZG93bmVyICYmIGRvd25lci0+YXJnKQogCQlkYm93 bmVyID0gZGVmR2V0U3RyaW5nKGRvd25lcik7CiAJaWYgKGR0ZW1wbGF0ZSAmJiBkdGVtcGxh dGUtPmFyZykKQEAgLTMwNCw2ICszMjAsMzEgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCWRiY29sbGF0ZSA9IGRlZkdldFN0 cmluZyhkY29sbGF0ZSk7CiAJaWYgKGRjdHlwZSAmJiBkY3R5cGUtPmFyZykKIAkJZGJjdHlw ZSA9IGRlZkdldFN0cmluZyhkY3R5cGUpOworCWlmIChkaWN1bG9jYWxlICYmIGRpY3Vsb2Nh bGUtPmFyZykKKwkJZGJpY3Vsb2NhbGUgPSBkZWZHZXRTdHJpbmcoZGljdWxvY2FsZSk7CisJ aWYgKGRsb2Nwcm92aWRlciAmJiBkbG9jcHJvdmlkZXItPmFyZykKKwl7CisJCWNoYXIJICAg KmxvY3Byb3ZpZGVyc3RyID0gZGVmR2V0U3RyaW5nKGRsb2Nwcm92aWRlcik7CisKKwkJaWYg KHBnX3N0cmNhc2VjbXAobG9jcHJvdmlkZXJzdHIsICJpY3UiKSA9PSAwKQorCQkJZGJsb2Nw cm92aWRlciA9IENPTExQUk9WSURFUl9JQ1U7CisJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAo bG9jcHJvdmlkZXJzdHIsICJsaWJjIikgPT0gMCkKKwkJCWRibG9jcHJvdmlkZXIgPSBDT0xM UFJPVklERVJfTElCQzsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygi dW5yZWNvZ25pemVkIGxvY2FsZSBwcm92aWRlcjogJXMiLAorCQkJCQkJCWxvY3Byb3ZpZGVy c3RyKSkpOworCX0KKwlpZiAoZGljdWxvY2FsZSAmJiBkYmxvY3Byb3ZpZGVyICE9IENPTExQ Uk9WSURFUl9JQ1UpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJJQ1UgbG9jYWxlIGNh bm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGxvY2FsZSBwcm92aWRlciBpcyBJQ1UiKSkpOwor CWlmIChkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UgJiYgIWRiaWN1bG9jYWxl KQorCXsKKwkJaWYgKGRsb2NhbGUgJiYgZGxvY2FsZS0+YXJnKQorCQkJZGJpY3Vsb2NhbGUg PSBkZWZHZXRTdHJpbmcoZGxvY2FsZSk7CisJfQogCWlmIChkaXN0ZW1wbGF0ZSAmJiBkaXN0 ZW1wbGF0ZS0+YXJnKQogCQlkYmlzdGVtcGxhdGUgPSBkZWZHZXRCb29sZWFuKGRpc3RlbXBs YXRlKTsKIAlpZiAoZGFsbG93Y29ubmVjdGlvbnMgJiYgZGFsbG93Y29ubmVjdGlvbnMtPmFy ZykKQEAgLTM1NSw3ICszOTYsOCBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJICZzcmNfZGJvaWQsICZzcmNfb3duZXIs ICZzcmNfZW5jb2RpbmcsCiAJCQkJCSAmc3JjX2lzdGVtcGxhdGUsICZzcmNfYWxsb3djb25u LAogCQkJCQkgJnNyY19mcm96ZW54aWQsICZzcmNfbWlubXhpZCwgJnNyY19kZWZ0YWJsZXNw YWNlLAotCQkJCQkgJnNyY19jb2xsYXRlLCAmc3JjX2N0eXBlLCAmc3JjX2NvbGx2ZXJzaW9u KSkKKwkJCQkJICZzcmNfY29sbGF0ZSwgJnNyY19jdHlwZSwgJnNyY19pY3Vsb2NhbGUsICZz cmNfbG9jcHJvdmlkZXIsCisJCQkJCSAmc3JjX2NvbGx2ZXJzaW9uKSkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCiAJCQkJ IGVycm1zZygidGVtcGxhdGUgZGF0YWJhc2UgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKQEAg LTM4MSw2ICs0MjMsMTAgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBD cmVhdGVkYlN0bXQgKnN0bXQpCiAJCWRiY29sbGF0ZSA9IHNyY19jb2xsYXRlOwogCWlmIChk YmN0eXBlID09IE5VTEwpCiAJCWRiY3R5cGUgPSBzcmNfY3R5cGU7CisJaWYgKGRiaWN1bG9j YWxlID09IE5VTEwpCisJCWRiaWN1bG9jYWxlID0gc3JjX2ljdWxvY2FsZTsKKwlpZiAoZGJs b2Nwcm92aWRlciA9PSAnXDAnKQorCQlkYmxvY3Byb3ZpZGVyID0gc3JjX2xvY3Byb3ZpZGVy OwogCiAJLyogU29tZSBlbmNvZGluZ3MgYXJlIGNsaWVudCBvbmx5ICovCiAJaWYgKCFQR19W QUxJRF9CRV9FTkNPRElORyhlbmNvZGluZykpCkBAIC00MDIsNiArNDQ4LDM3IEBAIGNyZWF0 ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCiAJ Y2hlY2tfZW5jb2RpbmdfbG9jYWxlX21hdGNoZXMoZW5jb2RpbmcsIGRiY29sbGF0ZSwgZGJj dHlwZSk7CiAKKwlpZiAoZGJsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCXsK KwkJLyoKKwkJICogVGhpcyB3b3VsZCBoYXBwZW4gaWYgdGVtcGxhdGUwIHVzZXMgdGhlIGxp YmMgcHJvdmlkZXIgYnV0IHRoZSBuZXcKKwkJICogZGF0YWJhc2UgdXNlcyBpY3UuCisJCSAq LworCQlpZiAoIWRiaWN1bG9jYWxlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIklD VSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZpZWQiKSkpOworCX0KKworCWlmIChkYmxvY3Byb3Zp ZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJeworI2lmZGVmIFVTRV9JQ1UKKwkJVUVycm9y Q29kZSAgc3RhdHVzOworCisJCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKKwkJdWNvbF9vcGVu KGRiaWN1bG9jYWxlLCAmc3RhdHVzKTsKKwkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiY291bGQgbm90IG9wZW4gY29sbGF0b3Ig Zm9yIGxvY2FsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCQlkYmljdWxvY2FsZSwgdV9lcnJvck5h bWUoc3RhdHVzKSkpKTsKKyNlbHNlCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIklDVSBpcyBu b3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQiKSwgXAorCQkJCSBlcnJoaW50KCJZb3UgbmVl ZCB0byByZWJ1aWxkIFBvc3RncmVTUUwgdXNpbmcgJXMuIiwgIi0td2l0aC1pY3UiKSkpOwor I2VuZGlmCisJfQorCiAJLyoKIAkgKiBDaGVjayB0aGF0IHRoZSBuZXcgZW5jb2RpbmcgYW5k IGxvY2FsZSBzZXR0aW5ncyBtYXRjaCB0aGUgc291cmNlCiAJICogZGF0YWJhc2UuICBXZSBp bnNpc3Qgb24gdGhpcyBiZWNhdXNlIHdlIHNpbXBseSBjb3B5IHRoZSBzb3VyY2UgZGF0YSAt LS0KQEAgLTQzNSw2ICs1MTIsMjUgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBj b25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCQkJCSBlcnJtc2coIm5ldyBMQ19DVFlQRSAo JXMpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBMQ19DVFlQRSBvZiB0aGUgdGVtcGxhdGUg ZGF0YWJhc2UgKCVzKSIsCiAJCQkJCQkJZGJjdHlwZSwgc3JjX2N0eXBlKSwKIAkJCQkJIGVy cmhpbnQoIlVzZSB0aGUgc2FtZSBMQ19DVFlQRSBhcyBpbiB0aGUgdGVtcGxhdGUgZGF0YWJh c2UsIG9yIHVzZSB0ZW1wbGF0ZTAgYXMgdGVtcGxhdGUuIikpKTsKKworCQlpZiAoZGJsb2Nw cm92aWRlciAhPSBzcmNfbG9jcHJvdmlkZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1z ZygibmV3IGxvY2FsZSBwcm92aWRlciAoJWMpIGRvZXMgbm90IG1hdGNoIGxvY2FsZSBwcm92 aWRlciBvZiB0aGUgdGVtcGxhdGUgZGF0YWJhc2UgKCVjKSIsCisJCQkJCQkJZGJsb2Nwcm92 aWRlciwgc3JjX2xvY3Byb3ZpZGVyKSwKKwkJCQkJIGVycmhpbnQoIlVzZSB0aGUgc2FtZSBs b2NhbGUgcHJvdmlkZXIgYXMgaW4gdGhlIHRlbXBsYXRlIGRhdGFiYXNlLCBvciB1c2UgdGVt cGxhdGUwIGFzIHRlbXBsYXRlLiIpKSk7CisKKwkJaWYgKGRibG9jcHJvdmlkZXIgPT0gQ09M TFBST1ZJREVSX0lDVSkKKwkJeworCQkJQXNzZXJ0KGRiaWN1bG9jYWxlKTsKKwkJCUFzc2Vy dChzcmNfaWN1bG9jYWxlKTsKKwkJCWlmIChzdHJjbXAoZGJpY3Vsb2NhbGUsIHNyY19pY3Vs b2NhbGUpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygibmV3IElDVSBs b2NhbGUgKCVzKSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgSUNVIGxvY2FsZSBvZiB0aGUg dGVtcGxhdGUgZGF0YWJhc2UgKCVzKSIsCisJCQkJCQkJCWRiaWN1bG9jYWxlLCBzcmNfaWN1 bG9jYWxlKSwKKwkJCQkJCSBlcnJoaW50KCJVc2UgdGhlIHNhbWUgSUNVIGxvY2FsZSBhcyBp biB0aGUgdGVtcGxhdGUgZGF0YWJhc2UsIG9yIHVzZSB0ZW1wbGF0ZTAgYXMgdGVtcGxhdGUu IikpKTsKKwkJfQogCX0KIAogCS8qCkBAIC00NTMsNyArNTQ5LDcgQEAgY3JlYXRlZGIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJewogCQljaGFy CSAgICphY3R1YWxfdmVyc2lvbnN0cjsKIAotCQlhY3R1YWxfdmVyc2lvbnN0ciA9IGdldF9j b2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIGRiY29sbGF0ZSk7 CisJCWFjdHVhbF92ZXJzaW9uc3RyID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihk YmxvY3Byb3ZpZGVyLCBkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UgPyBkYmlj dWxvY2FsZSA6IGRiY29sbGF0ZSk7CiAJCWlmICghYWN0dWFsX3ZlcnNpb25zdHIpCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkoZXJybXNnKCJ0ZW1wbGF0ZSBkYXRhYmFzZSBcIiVzXCIg aGFzIGEgY29sbGF0aW9uIHZlcnNpb24sIGJ1dCBubyBhY3R1YWwgY29sbGF0aW9uIHZlcnNp b24gY291bGQgYmUgZGV0ZXJtaW5lZCIsCkBAIC00ODEsNyArNTc3LDcgQEAgY3JlYXRlZGIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJICogY29s bGF0aW9uIHZlcnNpb24sIHdoaWNoIGlzIG5vcm1hbGx5IG9ubHkgdGhlIGNhc2UgZm9yIHRl bXBsYXRlMC4KIAkgKi8KIAlpZiAoZGJjb2xsdmVyc2lvbiA9PSBOVUxMKQotCQlkYmNvbGx2 ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElC QywgZGJjb2xsYXRlKTsKKwkJZGJjb2xsdmVyc2lvbiA9IGdldF9jb2xsYXRpb25fYWN0dWFs X3ZlcnNpb24oZGJsb2Nwcm92aWRlciwgZGJsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVID8gZGJpY3Vsb2NhbGUgOiBkYmNvbGxhdGUpOwogCiAJLyogUmVzb2x2ZSBkZWZhdWx0 IHRhYmxlc3BhY2UgZm9yIG5ldyBkYXRhYmFzZSAqLwogCWlmIChkdGFibGVzcGFjZW5hbWUg JiYgZHRhYmxlc3BhY2VuYW1lLT5hcmcpCkBAIC02MjAsNiArNzE2LDkgQEAgY3JlYXRlZGIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJICogYmxv Y2sgb24gdGhlIHVuaXF1ZSBpbmRleCwgYW5kIGZhaWwgYWZ0ZXIgd2UgY29tbWl0KS4KIAkg Ki8KIAorCUFzc2VydCgoZGJsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVICYmIGRi aWN1bG9jYWxlKSB8fAorCQkgICAoZGJsb2Nwcm92aWRlciAhPSBDT0xMUFJPVklERVJfSUNV ICYmICFkYmljdWxvY2FsZSkpOworCiAJLyogRm9ybSB0dXBsZSAqLwogCU1lbVNldChuZXdf cmVjb3JkLCAwLCBzaXplb2YobmV3X3JlY29yZCkpOwogCU1lbVNldChuZXdfcmVjb3JkX251 bGxzLCBmYWxzZSwgc2l6ZW9mKG5ld19yZWNvcmRfbnVsbHMpKTsKQEAgLTYyOSw2ICs3Mjgs NyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAq c3RtdCkKIAkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4sIENTdHJpbmdHZXREYXR1bShk Ym5hbWUpKTsKIAluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0ZGJhIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKGRhdGRiYSk7CiAJbmV3X3JlY29yZFtBbnVtX3BnX2RhdGFiYXNl X2VuY29kaW5nIC0gMV0gPSBJbnQzMkdldERhdHVtKGVuY29kaW5nKTsKKwluZXdfcmVjb3Jk W0FudW1fcGdfZGF0YWJhc2VfZGF0bG9jcHJvdmlkZXIgLSAxXSA9IENoYXJHZXREYXR1bShk YmxvY3Byb3ZpZGVyKTsKIAluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0aXN0ZW1w bGF0ZSAtIDFdID0gQm9vbEdldERhdHVtKGRiaXN0ZW1wbGF0ZSk7CiAJbmV3X3JlY29yZFtB bnVtX3BnX2RhdGFiYXNlX2RhdGFsbG93Y29ubiAtIDFdID0gQm9vbEdldERhdHVtKGRiYWxs b3djb25uZWN0aW9ucyk7CiAJbmV3X3JlY29yZFtBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbm5s aW1pdCAtIDFdID0gSW50MzJHZXREYXR1bShkYmNvbm5saW1pdCk7CkBAIC02MzcsNiArNzM3 LDEwIEBAIGNyZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10 ICpzdG10KQogCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXR0YWJsZXNwYWNlIC0g MV0gPSBPYmplY3RJZEdldERhdHVtKGRzdF9kZWZ0YWJsZXNwYWNlKTsKIAluZXdfcmVjb3Jk W0FudW1fcGdfZGF0YWJhc2VfZGF0Y29sbGF0ZSAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1 bShkYmNvbGxhdGUpOwogCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSAt IDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShkYmN0eXBlKTsKKwlpZiAoZGJpY3Vsb2NhbGUp CisJCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9kYXRpY3Vsb2NhbGUgLSAxXSA9IENT dHJpbmdHZXRUZXh0RGF0dW0oZGJpY3Vsb2NhbGUpOworCWVsc2UKKwkJbmV3X3JlY29yZF9u dWxsc1tBbnVtX3BnX2RhdGFiYXNlX2RhdGljdWxvY2FsZSAtIDFdID0gdHJ1ZTsKIAlpZiAo ZGJjb2xsdmVyc2lvbikKIAkJbmV3X3JlY29yZFtBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGx2 ZXJzaW9uIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGRiY29sbHZlcnNpb24pOwogCWVs c2UKQEAgLTkwNyw3ICsxMDExLDcgQEAgZHJvcGRiKGNvbnN0IGNoYXIgKmRibmFtZSwgYm9v bCBtaXNzaW5nX29rLCBib29sIGZvcmNlKQogCXBnZGJyZWwgPSB0YWJsZV9vcGVuKERhdGFi YXNlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlpZiAoIWdldF9kYl9pbmZv KGRibmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywgJmRiX2lkLCBOVUxMLCBOVUxMLAotCQkJ CQkgJmRiX2lzdGVtcGxhdGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwpKQorCQkJCQkgJmRiX2lzdGVtcGxhdGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQogCXsKIAkJaWYgKCFtaXNzaW5nX29r KQogCQl7CkBAIC0xMTA5LDcgKzEyMTMsNyBAQCBSZW5hbWVEYXRhYmFzZShjb25zdCBjaGFy ICpvbGRuYW1lLCBjb25zdCBjaGFyICpuZXduYW1lKQogCXJlbCA9IHRhYmxlX29wZW4oRGF0 YWJhc2VSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCWlmICghZ2V0X2RiX2lu Zm8ob2xkbmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywgJmRiX2lkLCBOVUxMLCBOVUxMLAot CQkJCQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkp CisJCQkJCSBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9EQVRBQkFTRSksCiAJCQkJIGVycm1zZygiZGF0YWJhc2UgXCIlc1wiIGRv ZXMgbm90IGV4aXN0Iiwgb2xkbmFtZSkpKTsKQEAgLTEyMjIsNyArMTMyNiw3IEBAIG1vdmVk Yihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnRibHNwY25hbWUpCiAJcGdkYnJl bCA9IHRhYmxlX29wZW4oRGF0YWJhc2VSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAogCWlmICghZ2V0X2RiX2luZm8oZGJuYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCAmZGJf aWQsIE5VTEwsIE5VTEwsCi0JCQkJCSBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAmc3JjX3Ri bHNwY29pZCwgTlVMTCwgTlVMTCwgTlVMTCkpCisJCQkJCSBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCAmc3JjX3RibHNwY29pZCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfREFUQUJB U0UpLAogCQkJCSBlcnJtc2coImRhdGFiYXNlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGRi bmFtZSkpKTsKQEAgLTE3NTUsOSArMTg1OSwxMSBAQCBBbHRlckRhdGFiYXNlUmVmcmVzaENv bGwoQWx0ZXJEYXRhYmFzZVJlZnJlc2hDb2xsU3RtdCAqc3RtdCkKIAlkYXR1bSA9IGhlYXBf Z2V0YXR0cih0dXBsZSwgQW51bV9wZ19kYXRhYmFzZV9kYXRjb2xsdmVyc2lvbiwgUmVsYXRp b25HZXREZXNjcihyZWwpLCAmaXNudWxsKTsKIAlvbGR2ZXJzaW9uID0gaXNudWxsID8gTlVM TCA6IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwogCi0JZGF0dW0gPSBoZWFwX2dldGF0 dHIodHVwbGUsIEFudW1fcGdfZGF0YWJhc2VfZGF0Y29sbGF0ZSwgUmVsYXRpb25HZXREZXNj cihyZWwpLCAmaXNudWxsKTsKLQlBc3NlcnQoIWlzbnVsbCk7Ci0JbmV3dmVyc2lvbiA9IGdl dF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pKTsKKwlkYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZSwgZGF0 Rm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSA/IEFudW1fcGdfZGF0 YWJhc2VfZGF0aWN1bG9jYWxlIDogQW51bV9wZ19kYXRhYmFzZV9kYXRjb2xsYXRlLCBSZWxh dGlvbkdldERlc2NyKHJlbCksICZpc251bGwpOworCWlmICghaXNudWxsKQorCQluZXd2ZXJz aW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihkYXRGb3JtLT5kYXRsb2Nwcm92 aWRlciwgVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpOworCWVsc2UKKwkJbmV3dmVyc2lv biA9IE5VTEw7CiAKIAkvKiBjYW5ub3QgY2hhbmdlIGZyb20gTlVMTCB0byBub24tTlVMTCBv ciB2aWNlIHZlcnNhICovCiAJaWYgKCghb2xkdmVyc2lvbiAmJiBuZXd2ZXJzaW9uKSB8fCAo b2xkdmVyc2lvbiAmJiAhbmV3dmVyc2lvbikpCkBAIC0xOTQzLDYgKzIwNDksNyBAQCBwZ19k YXRhYmFzZV9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIHsK IAlPaWQJCQlkYmlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlIZWFwVHVwbGUJdHA7CisJY2hh cgkJZGF0bG9jcHJvdmlkZXI7CiAJRGF0dW0JCWRhdHVtOwogCWJvb2wJCWlzbnVsbDsKIAlj aGFyCSAgICp2ZXJzaW9uOwpAQCAtMTk1Myw5ICsyMDYwLDEzIEBAIHBnX2RhdGFiYXNlX2Nv bGxhdGlvbl9hY3R1YWxfdmVyc2lvbihQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCiAJCQkJIGVycm1zZygiZGF0YWJhc2Ugd2l0 aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBkYmlkKSkpOwogCi0JZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoREFUQUJBU0VPSUQsIHRwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGxhdGUs ICZpc251bGwpOwotCUFzc2VydCghaXNudWxsKTsKLQl2ZXJzaW9uID0gZ2V0X2NvbGxhdGlv bl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElCQywgVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYXR1bSkpOworCWRhdGxvY3Byb3ZpZGVyID0gKChGb3JtX3BnX2RhdGFiYXNlKSBHRVRT VFJVQ1QodHApKS0+ZGF0bG9jcHJvdmlkZXI7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 cihEQVRBQkFTRU9JRCwgdHAsIGRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1Ug PyBBbnVtX3BnX2RhdGFiYXNlX2RhdGljdWxvY2FsZSA6IEFudW1fcGdfZGF0YWJhc2VfZGF0 Y29sbGF0ZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJCXZlcnNpb24gPSBnZXRfY29s bGF0aW9uX2FjdHVhbF92ZXJzaW9uKGRhdGxvY3Byb3ZpZGVyLCBUZXh0RGF0dW1HZXRDU3Ry aW5nKGRhdHVtKSk7CisJZWxzZQorCQl2ZXJzaW9uID0gTlVMTDsKIAogCVJlbGVhc2VTeXND YWNoZSh0cCk7CiAKQEAgLTE5ODEsNyArMjA5Miw4IEBAIGdldF9kYl9pbmZvKGNvbnN0IGNo YXIgKm5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJT2lkICpkYklkUCwgT2lkICpvd25l cklkUCwKIAkJCWludCAqZW5jb2RpbmdQLCBib29sICpkYklzVGVtcGxhdGVQLCBib29sICpk YkFsbG93Q29ublAsCiAJCQlUcmFuc2FjdGlvbklkICpkYkZyb3plblhpZFAsIE11bHRpWGFj dElkICpkYk1pbk11bHRpUCwKLQkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJDb2xs YXRlLCBjaGFyICoqZGJDdHlwZSwKKwkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJD b2xsYXRlLCBjaGFyICoqZGJDdHlwZSwgY2hhciAqKmRiSWN1bG9jYWxlLAorCQkJY2hhciAq ZGJMb2NQcm92aWRlciwKIAkJCWNoYXIgKipkYkNvbGx2ZXJzaW9uKQogewogCWJvb2wJCXJl c3VsdCA9IGZhbHNlOwpAQCAtMjA3NSw2ICsyMTg3LDggQEAgZ2V0X2RiX2luZm8oY29uc3Qg Y2hhciAqbmFtZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJaWYgKGRiVGFibGVzcGFjZSkK IAkJCQkJKmRiVGFibGVzcGFjZSA9IGRiZm9ybS0+ZGF0dGFibGVzcGFjZTsKIAkJCQkvKiBk ZWZhdWx0IGxvY2FsZSBzZXR0aW5ncyBmb3IgdGhpcyBkYXRhYmFzZSAqLworCQkJCWlmIChk YkxvY1Byb3ZpZGVyKQorCQkJCQkqZGJMb2NQcm92aWRlciA9IGRiZm9ybS0+ZGF0bG9jcHJv dmlkZXI7CiAJCQkJaWYgKGRiQ29sbGF0ZSkKIAkJCQl7CiAJCQkJCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwgQW51bV9wZ19kYXRhYmFzZV9kYXRjb2xs YXRlLCAmaXNudWxsKTsKQEAgLTIwODcsNiArMjIwMSwxNCBAQCBnZXRfZGJfaW5mbyhjb25z dCBjaGFyICpuYW1lLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJQXNzZXJ0KCFpc251bGwp OwogCQkJCQkqZGJDdHlwZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwogCQkJCX0K KwkJCQlpZiAoZGJJY3Vsb2NhbGUpCisJCQkJeworCQkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUsIEFudW1fcGdfZGF0YWJhc2VfZGF0aWN1bG9jYWxl LCAmaXNudWxsKTsKKwkJCQkJaWYgKGlzbnVsbCkKKwkJCQkJCSpkYkljdWxvY2FsZSA9IE5V TEw7CisJCQkJCWVsc2UKKwkJCQkJCSpkYkljdWxvY2FsZSA9IFRleHREYXR1bUdldENTdHJp bmcoZGF0dW0pOworCQkJCX0KIAkJCQlpZiAoZGJDb2xsdmVyc2lvbikKIAkJCQl7CiAJCQkJ CWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwgQW51bV9wZ19k YXRhYmFzZV9kYXRjb2xsdmVyc2lvbiwgJmlzbnVsbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf bG9jYWxlLmMKaW5kZXggODcxYTcxMDk2Ny4uMmNhNzUzMzBlZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYwpAQCAtMTI4OCwyNiArMTI4OCwzNyBAQCBsb29rdXBfY29sbGF0 aW9uX2NhY2hlKE9pZCBjb2xsYXRpb24sIGJvb2wgc2V0X2ZsYWdzKQogCXsKIAkJLyogQXR0 ZW1wdCB0byBzZXQgdGhlIGZsYWdzICovCiAJCUhlYXBUdXBsZQl0cDsKLQkJRGF0dW0JCWRh dHVtOwotCQlib29sCQlpc251bGw7Ci0JCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOwotCQlj b25zdCBjaGFyICpjb2xsY3R5cGU7CisJCUZvcm1fcGdfY29sbGF0aW9uIGNvbGxmb3JtOwog CiAJCXRwID0gU2VhcmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0oY29s bGF0aW9uKSk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCiAJCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29sbGF0aW9uICV1IiwgY29sbGF0aW9uKTsK KwkJY29sbGZvcm0gPSAoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCk7CiAKLQkJ ZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9u X2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKLQkJQXNzZXJ0KCFpc251bGwpOwotCQljb2xsY29s bGF0ZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwotCQlkYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBlLCAmaXNu dWxsKTsKLQkJQXNzZXJ0KCFpc251bGwpOwotCQljb2xsY3R5cGUgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKTsKLQotCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gKChzdHJj bXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkgfHwKLQkJCQkJCQkJCSAoc3RyY21wKGNvbGxj b2xsYXRlLCAiUE9TSVgiKSA9PSAwKSk7Ci0JCWNhY2hlX2VudHJ5LT5jdHlwZV9pc19jID0g KChzdHJjbXAoY29sbGN0eXBlLCAiQyIpID09IDApIHx8Ci0JCQkJCQkJCSAgIChzdHJjbXAo Y29sbGN0eXBlLCAiUE9TSVgiKSA9PSAwKSk7CisJCWlmIChjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyID09IENPTExQUk9WSURFUl9MSUJDKQorCQl7CisJCQlEYXR1bQkJZGF0dW07CisJCQli b29sCQlpc251bGw7CisJCQljb25zdCBjaGFyICpjb2xsY29sbGF0ZTsKKwkJCWNvbnN0IGNo YXIgKmNvbGxjdHlwZTsKKworCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwg dHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwkJCUFzc2Vy dCghaXNudWxsKTsKKwkJCWNvbGxjb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1 bSk7CisJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19j b2xsYXRpb25fY29sbGN0eXBlLCAmaXNudWxsKTsKKwkJCUFzc2VydCghaXNudWxsKTsKKwkJ CWNvbGxjdHlwZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCisJCQljYWNoZV9l bnRyeS0+Y29sbGF0ZV9pc19jID0gKChzdHJjbXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkg fHwKKwkJCQkJCQkJCQkgKHN0cmNtcChjb2xsY29sbGF0ZSwgIlBPU0lYIikgPT0gMCkpOwor CQkJY2FjaGVfZW50cnktPmN0eXBlX2lzX2MgPSAoKHN0cmNtcChjb2xsY3R5cGUsICJDIikg PT0gMCkgfHwKKwkJCQkJCQkJCSAgIChzdHJjbXAoY29sbGN0eXBlLCAiUE9TSVgiKSA9PSAw KSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0g ZmFsc2U7CisJCQljYWNoZV9lbnRyeS0+Y3R5cGVfaXNfYyA9IGZhbHNlOworCQl9CiAKIAkJ Y2FjaGVfZW50cnktPmZsYWdzX3ZhbGlkID0gdHJ1ZTsKIApAQCAtMTM0MCw2ICsxMzUxLDkg QEAgbGNfY29sbGF0ZV9pc19jKE9pZCBjb2xsYXRpb24pCiAJCXN0YXRpYyBpbnQJcmVzdWx0 ID0gLTE7CiAJCWNoYXIJICAgKmxvY2FsZXB0cjsKIAorCQlpZiAoZGVmYXVsdF9sb2NhbGUu cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJCXJldHVybiBmYWxzZTsKKwogCQlp ZiAocmVzdWx0ID49IDApCiAJCQlyZXR1cm4gKGJvb2wpIHJlc3VsdDsKIAkJbG9jYWxlcHRy ID0gc2V0bG9jYWxlKExDX0NPTExBVEUsIE5VTEwpOwpAQCAtMTM5MCw2ICsxNDA0LDkgQEAg bGNfY3R5cGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCQlzdGF0aWMgaW50CXJlc3VsdCA9IC0x OwogCQljaGFyCSAgICpsb2NhbGVwdHI7CiAKKwkJaWYgKGRlZmF1bHRfbG9jYWxlLnByb3Zp ZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlyZXR1cm4gZmFsc2U7CisKIAkJaWYgKHJl c3VsdCA+PSAwKQogCQkJcmV0dXJuIChib29sKSByZXN1bHQ7CiAJCWxvY2FsZXB0ciA9IHNl dGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CkBAIC0xNDE4LDYgKzE0MzUsMzggQEAgbGNfY3R5 cGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCXJldHVybiAobG9va3VwX2NvbGxhdGlvbl9jYWNo ZShjb2xsYXRpb24sIHRydWUpKS0+Y3R5cGVfaXNfYzsKIH0KIAorc3RydWN0IHBnX2xvY2Fs ZV9zdHJ1Y3QgZGVmYXVsdF9sb2NhbGU7CisKK3ZvaWQKK21ha2VfaWN1X2NvbGxhdG9yKGNv bnN0IGNoYXIgKmljdWxvY3N0ciwKKwkJCQkgIHN0cnVjdCBwZ19sb2NhbGVfc3RydWN0ICpy ZXN1bHRwKQoreworI2lmZGVmIFVTRV9JQ1UKKwlVQ29sbGF0b3IgICpjb2xsYXRvcjsKKwlV RXJyb3JDb2RlCXN0YXR1czsKKworCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKKwljb2xsYXRv ciA9IHVjb2xfb3BlbihpY3Vsb2NzdHIsICZzdGF0dXMpOworCWlmIChVX0ZBSUxVUkUoc3Rh dHVzKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBj b2xsYXRvciBmb3IgbG9jYWxlIFwiJXNcIjogJXMiLAorCQkJCQkJaWN1bG9jc3RyLCB1X2Vy cm9yTmFtZShzdGF0dXMpKSkpOworCisJaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDwg NTQpCisJCWljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoY29sbGF0b3IsIGljdWxvY3N0 cik7CisKKwkvKiBXZSB3aWxsIGxlYWsgdGhpcyBzdHJpbmcgaWYgd2UgZ2V0IGFuIGVycm9y IGJlbG93IDotKCAqLworCXJlc3VsdHAtPmluZm8uaWN1LmxvY2FsZSA9IE1lbW9yeUNvbnRl eHRTdHJkdXAoVG9wTWVtb3J5Q29udGV4dCwgaWN1bG9jc3RyKTsKKwlyZXN1bHRwLT5pbmZv LmljdS51Y29sID0gY29sbGF0b3I7CisjZWxzZQkJCQkJCQkvKiBub3QgVVNFX0lDVSAqLwor CS8qIGNvdWxkIGdldCBoZXJlIGlmIGEgY29sbGF0aW9uIHdhcyBjcmVhdGVkIGJ5IGEgYnVp bGQgd2l0aCBJQ1UgKi8KKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gdGhpcyBidWlsZCIpLCBcCisJCQkgZXJyaGludCgiWW91IG5lZWQgdG8gcmVidWls ZCBQb3N0Z3JlU1FMIHVzaW5nICVzLiIsICItLXdpdGgtaWN1IikpKTsKKyNlbmRpZgkJCQkJ CQkvKiBub3QgVVNFX0lDVSAqLworfQorCiAKIC8qIHNpbXBsZSBzdWJyb3V0aW5lIGZvciBy ZXBvcnRpbmcgZXJyb3JzIGZyb20gbmV3bG9jYWxlKCkgKi8KICNpZmRlZiBIQVZFX0xPQ0FM RV9UCkBAIC0xNDc1LDcgKzE1MjQsMTIgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KE9pZCBjb2xsaWQpCiAJQXNzZXJ0KE9pZElzVmFsaWQoY29sbGlkKSk7CiAKIAlpZiAoY29s bGlkID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJcmV0dXJuIChwZ19sb2NhbGVfdCkg MDsKKwl7CisJCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJf SUNVKQorCQkJcmV0dXJuICZkZWZhdWx0X2xvY2FsZTsKKwkJZWxzZQorCQkJcmV0dXJuIChw Z19sb2NhbGVfdCkgMDsKKwl9CiAKIAljYWNoZV9lbnRyeSA9IGxvb2t1cF9jb2xsYXRpb25f Y2FjaGUoY29sbGlkLCBmYWxzZSk7CiAKQEAgLTE0ODQsOCArMTUzOCw2IEBAIHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQogCQkvKiBXZSBoYXZlbid0IGNvbXB1 dGVkIHRoaXMgeWV0IGluIHRoaXMgc2Vzc2lvbiwgc28gZG8gaXQgKi8KIAkJSGVhcFR1cGxl CXRwOwogCQlGb3JtX3BnX2NvbGxhdGlvbiBjb2xsZm9ybTsKLQkJY29uc3QgY2hhciAqY29s bGNvbGxhdGU7Ci0JCWNvbnN0IGNoYXIgKmNvbGxjdHlwZSBwZ19hdHRyaWJ1dGVfdW51c2Vk KCk7CiAJCXN0cnVjdCBwZ19sb2NhbGVfc3RydWN0IHJlc3VsdDsKIAkJcGdfbG9jYWxlX3Qg cmVzdWx0cDsKIAkJRGF0dW0JCWRhdHVtOwpAQCAtMTQ5NiwxMyArMTU0OCw2IEBAIHBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQogCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiAldSIsIGNvbGxpZCk7CiAJCWNvbGxm b3JtID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApOwogCi0JCWRhdHVtID0g U3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29s bGF0ZSwgJmlzbnVsbCk7Ci0JCUFzc2VydCghaXNudWxsKTsKLQkJY29sbGNvbGxhdGUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKLQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo Q09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlwZSwgJmlzbnVsbCk7Ci0J CUFzc2VydCghaXNudWxsKTsKLQkJY29sbGN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhk YXR1bSk7Ci0KIAkJLyogV2UnbGwgZmlsbCBpbiB0aGUgcmVzdWx0IHN0cnVjdCBsb2NhbGx5 IGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSAqLwogCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6 ZW9mKHJlc3VsdCkpOwogCQlyZXN1bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyOwpAQCAtMTUxMSw4ICsxNTU2LDE3IEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlv bihPaWQgY29sbGlkKQogCQlpZiAoY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJP VklERVJfTElCQykKIAkJewogI2lmZGVmIEhBVkVfTE9DQUxFX1QKKwkJCWNvbnN0IGNoYXIg KmNvbGxjb2xsYXRlOworCQkJY29uc3QgY2hhciAqY29sbGN0eXBlIHBnX2F0dHJpYnV0ZV91 bnVzZWQoKTsKIAkJCWxvY2FsZV90CWxvYzsKIAorCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxs KTsKKwkJCUFzc2VydCghaXNudWxsKTsKKwkJCWNvbGxjb2xsYXRlID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhkYXR1bSk7CisJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0 cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0eXBlLCAmaXNudWxsKTsKKwkJCUFzc2VydCgh aXNudWxsKTsKKwkJCWNvbGxjdHlwZSA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwor CiAJCQlpZiAoc3RyY21wKGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpID09IDApCiAJCQl7CiAJ CQkJLyogTm9ybWFsIGNhc2Ugd2hlcmUgdGhleSdyZSB0aGUgc2FtZSAqLwpAQCAtMTU2Mywz NiArMTYxNywxMiBAQCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkK IAkJfQogCQllbHNlIGlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpCiAJCXsKLSNpZmRlZiBVU0VfSUNVCi0JCQlVQ29sbGF0b3IgICpjb2xsYXRvcjsK LQkJCVVFcnJvckNvZGUJc3RhdHVzOwotCi0JCQlpZiAoc3RyY21wKGNvbGxjb2xsYXRlLCBj b2xsY3R5cGUpICE9IDApCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImNvbGxhdGlv bnMgd2l0aCBkaWZmZXJlbnQgY29sbGF0ZSBhbmQgY3R5cGUgdmFsdWVzIGFyZSBub3Qgc3Vw cG9ydGVkIGJ5IElDVSIpKSk7Ci0KLQkJCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQkJCWNv bGxhdG9yID0gdWNvbF9vcGVuKGNvbGxjb2xsYXRlLCAmc3RhdHVzKTsKLQkJCWlmIChVX0ZB SUxVUkUoc3RhdHVzKSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycm1zZygiY291 bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCQkJ Y29sbGNvbGxhdGUsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQljb25zdCBjaGFyICpp Y3Vsb2NzdHI7CiAKLQkJCWlmIChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA8IDU0KQotCQkJ CWljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoY29sbGF0b3IsIGNvbGxjb2xsYXRlKTsK LQotCQkJLyogV2Ugd2lsbCBsZWFrIHRoaXMgc3RyaW5nIGlmIHdlIGdldCBhbiBlcnJvciBi ZWxvdyA6LSggKi8KLQkJCXJlc3VsdC5pbmZvLmljdS5sb2NhbGUgPSBNZW1vcnlDb250ZXh0 U3RyZHVwKFRvcE1lbW9yeUNvbnRleHQsCi0JCQkJCQkJCQkJCQkJCSBjb2xsY29sbGF0ZSk7 Ci0JCQlyZXN1bHQuaW5mby5pY3UudWNvbCA9IGNvbGxhdG9yOwotI2Vsc2UJCQkJCQkJLyog bm90IFVTRV9JQ1UgKi8KLQkJCS8qIGNvdWxkIGdldCBoZXJlIGlmIGEgY29sbGF0aW9uIHdh cyBjcmVhdGVkIGJ5IGEgYnVpbGQgd2l0aCBJQ1UgKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0J CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVy cm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCIpLCBcCi0JCQkJCSBl cnJoaW50KCJZb3UgbmVlZCB0byByZWJ1aWxkIFBvc3RncmVTUUwgdXNpbmcgJXMuIiwgIi0t d2l0aC1pY3UiKSkpOwotI2VuZGlmCQkJCQkJCS8qIG5vdCBVU0VfSUNVICovCisJCQlkYXR1 bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29s bGljdWxvY2FsZSwgJmlzbnVsbCk7CisJCQlBc3NlcnQoIWlzbnVsbCk7CisJCQlpY3Vsb2Nz dHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJCW1ha2VfaWN1X2NvbGxhdG9y KGljdWxvY3N0ciwgJnJlc3VsdCk7CiAJCX0KIAogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24sCkBAIC0xNjA0 LDcgKzE2MzQsMTEgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQp CiAKIAkJCWNvbGx2ZXJzaW9uc3RyID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CiAK LQkJCWFjdHVhbF92ZXJzaW9uc3RyID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihj b2xsZm9ybS0+Y29sbHByb3ZpZGVyLCBjb2xsY29sbGF0ZSk7CisJCQlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihDT0xMT0lELCB0cCwgY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xM UFJPVklERVJfSUNVID8gQW51bV9wZ19jb2xsYXRpb25fY29sbGljdWxvY2FsZSA6IEFudW1f cGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwkJCUFzc2VydCghaXNudWxs KTsKKworCQkJYWN0dWFsX3ZlcnNpb25zdHIgPSBnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJz aW9uKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIsCisJCQkJCQkJCQkJCQkJCQkgVGV4dERhdHVt R2V0Q1N0cmluZyhkYXR1bSkpOwogCQkJaWYgKCFhY3R1YWxfdmVyc2lvbnN0cikKIAkJCXsK IAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IGUyMjA4MTUxZTQu LjM3YjAyMTA2ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTMxOCw2 ICszMTgsNyBAQCBDaGVja015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9z dXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxsb3dfY29ubmVjdAogCWJvb2wJCWlzbnVsbDsK IAljaGFyCSAgICpjb2xsYXRlOwogCWNoYXIJICAgKmN0eXBlOworCWNoYXIJICAgKmljdWxv Y2FsZTsKIAogCS8qIEZldGNoIG91ciBwZ19kYXRhYmFzZSByb3cgbm9ybWFsbHksIHZpYSBz eXNjYWNoZSAqLwogCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShEQVRBQkFTRU9JRCwgT2JqZWN0 SWRHZXREYXR1bShNeURhdGFiYXNlSWQpKTsKQEAgLTQyMCw2ICs0MjEsMjQgQEAgQ2hlY2tN eURhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYW1fc3VwZXJ1c2VyLCBib29sIG92 ZXJyaWRlX2FsbG93X2Nvbm5lY3QKIAkJCQkJCSAgICIgd2hpY2ggaXMgbm90IHJlY29nbml6 ZWQgYnkgc2V0bG9jYWxlKCkuIiwgY3R5cGUpLAogCQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0 aGUgZGF0YWJhc2Ugd2l0aCBhbm90aGVyIGxvY2FsZSBvciBpbnN0YWxsIHRoZSBtaXNzaW5n IGxvY2FsZS4iKSkpOwogCisJaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0lDVSkKKwl7CisJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lE LCB0dXAsIEFudW1fcGdfZGF0YWJhc2VfZGF0aWN1bG9jYWxlLCAmaXNudWxsKTsKKwkJQXNz ZXJ0KCFpc251bGwpOworCQlpY3Vsb2NhbGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVt KTsKKwkJbWFrZV9pY3VfY29sbGF0b3IoaWN1bG9jYWxlLCAmZGVmYXVsdF9sb2NhbGUpOwor CX0KKwllbHNlCisJCWljdWxvY2FsZSA9IE5VTEw7CisKKwlkZWZhdWx0X2xvY2FsZS5wcm92 aWRlciA9IGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXI7CisJLyoKKwkgKiBEZWZhdWx0IGxvY2Fs ZSBpcyBjdXJyZW50bHkgYWx3YXlzIGRldGVybWluaXN0aWMuICBOb25kZXRlcm1pbmlzdGlj CisJICogbG9jYWxlcyBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBwYXR0ZXJuIG1hdGNoaW5n LCB3aGljaCB3b3VsZCBicmVhayBhCisJICogbG90IG9mIHRoaW5ncyBpZiBhcHBsaWVkIGds b2JhbGx5LgorCSAqLworCWRlZmF1bHRfbG9jYWxlLmRldGVybWluaXN0aWMgPSB0cnVlOwor CiAJLyoKIAkgKiBDaGVjayBjb2xsYXRpb24gdmVyc2lvbi4gIFNlZSBzaW1pbGFyIGNvZGUg aW4KIAkgKiBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oKS4gIE5vdGUgdGhhdCBoZXJl IHdlIHdhcm4gaW5zdGVhZCBvZiBlcnJvcgpAQCAtNDM0LDcgKzQ1Myw3IEBAIENoZWNrTXlE YXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBib29sIGFtX3N1cGVydXNlciwgYm9vbCBvdmVy cmlkZV9hbGxvd19jb25uZWN0CiAKIAkJY29sbHZlcnNpb25zdHIgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKTsKIAotCQlhY3R1YWxfdmVyc2lvbnN0ciA9IGdldF9jb2xsYXRpb25f YWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIGNvbGxhdGUpOworCQlhY3R1YWxf dmVyc2lvbnN0ciA9IGdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oZGJmb3JtLT5kYXRs b2Nwcm92aWRlciwgZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNV ID8gaWN1bG9jYWxlIDogY29sbGF0ZSk7CiAJCWlmICghYWN0dWFsX3ZlcnNpb25zdHIpCiAJ CQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShlcnJtc2coImRhdGFiYXNlIFwiJXNcIiBoYXMg bm8gYWN0dWFsIGNvbGxhdGlvbiB2ZXJzaW9uLCBidXQgYSB2ZXJzaW9uIHdhcyByZWNvcmRl ZCIsCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9NYWtlZmlsZSBiL3NyYy9iaW4vaW5p dGRiL01ha2VmaWxlCmluZGV4IGViYTI4MjI2N2EuLjhkZDI1ZTdhZmMgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vaW5pdGRiL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vaW5pdGRiL01ha2VmaWxl CkBAIC00MCw3ICs0MCw3IEBAIE9CSlMgPSBcCiBhbGw6IGluaXRkYgogCiBpbml0ZGI6ICQo T0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdm ZXV0aWxzCi0JJChDQykgJChDRkxBR1MpICQoT0JKUykgJChMREZMQUdTKSAkKExERkxBR1Nf RVgpICQoTElCUykgLW8gJEAkKFgpCisJJChDQykgJChDRkxBR1MpICQoT0JKUykgJChMREZM QUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgJChJQ1VfTElCUykgLW8gJEAkKFgpCiAKICMg V2UgbXVzdCBwdWxsIGluIGxvY2FsdGltZS5jIGZyb20gc3JjL3RpbWV6b25lcwogbG9jYWx0 aW1lLmM6ICUgOiAkKHRvcF9zcmNkaXIpL3NyYy90aW1lem9uZS8lCkBAIC02Miw2ICs2Miw4 IEBAIGNsZWFuIGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgogIyBlbnN1cmUgdGhhdCBj aGFuZ2VzIGluIGRhdGFkaXIgcHJvcGFnYXRlIGludG8gb2JqZWN0IGZpbGUKIGluaXRkYi5v OiBpbml0ZGIuYyAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitleHBv cnQgd2l0aF9pY3UKKwogY2hlY2s6CiAJJChwcm92ZV9jaGVjaykKIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRl eCA5N2YxNTk3MWUyLi5hMGZkNjhlNzM5IDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9p bml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAtNTUsNiArNTUsMTAg QEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKKyNpZmRlZiBV U0VfSUNVCisjaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+CisjZW5kaWYKKwogI2lmZGVmIEhB VkVfU0hNX09QRU4KICNpbmNsdWRlICJzeXMvbW1hbi5oIgogI2VuZGlmCkBAIC0xMzIsNiAr MTM2LDggQEAgc3RhdGljIGNoYXIgKmxjX21vbmV0YXJ5ID0gTlVMTDsKIHN0YXRpYyBjaGFy ICpsY19udW1lcmljID0gTlVMTDsKIHN0YXRpYyBjaGFyICpsY190aW1lID0gTlVMTDsKIHN0 YXRpYyBjaGFyICpsY19tZXNzYWdlcyA9IE5VTEw7CitzdGF0aWMgY2hhciBsb2NhbGVfcHJv dmlkZXIgPSBDT0xMUFJPVklERVJfTElCQzsKK3N0YXRpYyBjaGFyICppY3VfbG9jYWxlID0g TlVMTDsKIHN0YXRpYyBjb25zdCBjaGFyICpkZWZhdWx0X3RleHRfc2VhcmNoX2NvbmZpZyA9 IE5VTEw7CiBzdGF0aWMgY2hhciAqdXNlcm5hbWUgPSBOVUxMOwogc3RhdGljIGJvb2wgcHdw cm9tcHQgPSBmYWxzZTsKQEAgLTE0MDUsNiArMTQxMSwxMiBAQCBib290c3RyYXBfdGVtcGxh dGUxKHZvaWQpCiAJYmtpX2xpbmVzID0gcmVwbGFjZV90b2tlbihia2lfbGluZXMsICJMQ19D VFlQRSIsCiAJCQkJCQkJICBlc2NhcGVfcXVvdGVzX2JraShsY19jdHlwZSkpOwogCisJYmtp X2xpbmVzID0gcmVwbGFjZV90b2tlbihia2lfbGluZXMsICJJQ1VfTE9DQUxFIiwKKwkJCQkJ CQkgIGxvY2FsZV9wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVID8gZXNjYXBlX3F1b3Rl c19ia2koaWN1X2xvY2FsZSkgOiAiX251bGxfIik7CisKKwlzcHJpbnRmKGJ1ZiwgIiVjIiwg bG9jYWxlX3Byb3ZpZGVyKTsKKwlia2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5l cywgIkxPQ0FMRV9QUk9WSURFUiIsIGJ1Zik7CisKIAkvKiBBbHNvIGVuc3VyZSBiYWNrZW5k IGlzbid0IGNvbmZ1c2VkIGJ5IHRoaXMgZW52aXJvbm1lbnQgdmFyOiAqLwogCXVuc2V0ZW52 KCJQR0NMSUVOVEVOQ09ESU5HIik7CiAKQEAgLTIxNjUsNyArMjE3Nyw2IEBAIHNldGxvY2Fs ZXModm9pZCkKIAkgKiBjYW5vbmljYWxpemUgbG9jYWxlIG5hbWVzLCBhbmQgb2J0YWluIGFu eSBtaXNzaW5nIHZhbHVlcyBmcm9tIG91cgogCSAqIGN1cnJlbnQgZW52aXJvbm1lbnQKIAkg Ki8KLQogCWNoZWNrX2xvY2FsZV9uYW1lKExDX0NUWVBFLCBsY19jdHlwZSwgJmNhbm9ubmFt ZSk7CiAJbGNfY3R5cGUgPSBjYW5vbm5hbWU7CiAJY2hlY2tfbG9jYWxlX25hbWUoTENfQ09M TEFURSwgbGNfY29sbGF0ZSwgJmNhbm9ubmFtZSk7CkBAIC0yMTg0LDYgKzIxOTUsNTAgQEAg c2V0bG9jYWxlcyh2b2lkKQogCWNoZWNrX2xvY2FsZV9uYW1lKExDX0NUWVBFLCBsY19tZXNz YWdlcywgJmNhbm9ubmFtZSk7CiAJbGNfbWVzc2FnZXMgPSBjYW5vbm5hbWU7CiAjZW5kaWYK KworCWlmIChsb2NhbGVfcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwl7CisJCWlm ICghaWN1X2xvY2FsZSAmJiBsb2NhbGUpCisJCQlpY3VfbG9jYWxlID0gbG9jYWxlOworCisJ CS8qCisJCSAqIElmIElDVSBpcyBzZWxlY3RlZCBidXQgbm8gSUNVIGxvY2FsZSBoYXMgYmVl biBnaXZlbiwgdGFrZSB0aGUKKwkJICogbGNfY29sbGF0ZSBsb2NhbGUgYW5kIGNob3Agb2Zm IGFueSBlbmNvZGluZyBzdWZmaXguICBUaGlzIHNob3VsZAorCQkgKiBnaXZlIHRoZSB1c2Vy IGEgY29uZmlndXJhdGlvbiB0aGF0IHJlc2VtYmxlcyB0aGVpciBvcGVyYXRpbmcKKwkJICog c3lzdGVtJ3MgbG9jYWxlIHNldHVwLgorCQkgKgorCQkgKiBTZWUKKwkJICogPGh0dHBzOi8v dW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvbG9jYWxlLyN0aGUtbG9jYWxl LWNvbmNlcHQ+CisJCSAqIGZvciB0aGUgSUNVIGxvY2FsZSBJRCBmb3JtYXQuCisJCSAqLwor CQlpZiAoIWljdV9sb2NhbGUpCisJCXsKKwkJCWljdV9sb2NhbGUgPSBwZ19zdHJkdXAobGNf Y29sbGF0ZSk7CisJCQlpY3VfbG9jYWxlW3N0cmNzcG4oaWN1X2xvY2FsZSwgIi4iKV0gPSAn XDAnOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgSUNVIGxvY2FsZSBuYW1lCisJCSAqLwor I2lmZGVmIFVTRV9JQ1UKKwkJeworCQkJVUVycm9yQ29kZQlzdGF0dXM7CisKKwkJCXN0YXR1 cyA9IFVfWkVST19FUlJPUjsKKwkJCXVjb2xfb3BlbihpY3VfbG9jYWxlLCAmc3RhdHVzKTsK KwkJCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBvcGVuIGNvbGxhdG9yIGZvciBsb2NhbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJ IGljdV9sb2NhbGUsIHVfZXJyb3JOYW1lKHN0YXR1cykpOworCQkJCWV4aXQoMSk7CisJCQl9 CisJCX0KKyNlbHNlCisJCXBnX2xvZ19lcnJvcigiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4g dGhpcyBidWlsZCIpOworCQlmcHJpbnRmKHN0ZGVyciwgXygiWW91IG5lZWQgdG8gcmVidWls ZCBQb3N0Z3JlU1FMIHVzaW5nICVzLlxuIiksICItLXdpdGgtaWN1Iik7CisJCWV4aXQoMSk7 CisjZW5kaWYKKwl9CiB9CiAKIC8qCkBAIC0yMjAyLDYgKzIyNTcsNyBAQCB1c2FnZShjb25z dCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiIFstRCwgLS1wZ2RhdGE9XURBVEFESVIg ICAgIGxvY2F0aW9uIGZvciB0aGlzIGRhdGFiYXNlIGNsdXN0ZXJcbiIpKTsKIAlwcmludGYo XygiICAtRSwgLS1lbmNvZGluZz1FTkNPRElORyAgIHNldCBkZWZhdWx0IGVuY29kaW5nIGZv ciBuZXcgZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWcsIC0tYWxsb3ctZ3JvdXAt YWNjZXNzICBhbGxvdyBncm91cCByZWFkL2V4ZWN1dGUgb24gZGF0YSBkaXJlY3RvcnlcbiIp KTsKKwlwcmludGYoXygiICAgICAgLS1pY3UtbG9jYWxlICAgICAgICAgIHNldCBJQ1UgbG9j YWxlIGZvciBuZXcgZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWssIC0tZGF0YS1j aGVja3N1bXMgICAgICB1c2UgZGF0YSBwYWdlIGNoZWNrc3Vtc1xuIikpOwogCXByaW50Zihf KCIgICAgICAtLWxvY2FsZT1MT0NBTEUgICAgICAgc2V0IGRlZmF1bHQgbG9jYWxlIGZvciBu ZXcgZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tbGMtY29sbGF0ZT0sIC0t bGMtY3R5cGU9LCAtLWxjLW1lc3NhZ2VzPUxPQ0FMRVxuIgpAQCAtMjIwOSw2ICsyMjY1LDgg QEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJCQkgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXQgZGVmYXVsdCBsb2NhbGUgaW4gdGhlIHJlc3BlY3RpdmUgY2F0ZWdv cnkgZm9yXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZGF0YWJh c2VzIChkZWZhdWx0IHRha2VuIGZyb20gZW52aXJvbm1lbnQpXG4iKSk7CiAJcHJpbnRmKF8o IiAgICAgIC0tbm8tbG9jYWxlICAgICAgICAgICBlcXVpdmFsZW50IHRvIC0tbG9jYWxlPUNc biIpKTsKKwlwcmludGYoXygiICAgICAgLS1sb2NhbGUtcHJvdmlkZXI9e2xpYmN8aWN1fVxu IgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGRlZmF1bHQgbG9jYWxl IHByb3ZpZGVyIGZvciBuZXcgZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0t cHdmaWxlPUZJTEUgICAgICAgICByZWFkIHBhc3N3b3JkIGZvciB0aGUgbmV3IHN1cGVydXNl ciBmcm9tIGZpbGVcbiIpKTsKIAlwcmludGYoXygiICAtVCwgLS10ZXh0LXNlYXJjaC1jb25m aWc9Q0ZHXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHRl eHQgc2VhcmNoIGNvbmZpZ3VyYXRpb25cbiIpKTsKQEAgLTIzNzIsMjEgKzI0MzAsMjYgQEAg c2V0dXBfbG9jYWxlX2VuY29kaW5nKHZvaWQpCiB7CiAJc2V0bG9jYWxlcygpOwogCi0JaWYg KHN0cmNtcChsY19jdHlwZSwgbGNfY29sbGF0ZSkgPT0gMCAmJgorCWlmIChsb2NhbGVfcHJv dmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMgJiYKKwkJc3RyY21wKGxjX2N0eXBlLCBsY19j b2xsYXRlKSA9PSAwICYmCiAJCXN0cmNtcChsY19jdHlwZSwgbGNfdGltZSkgPT0gMCAmJgog CQlzdHJjbXAobGNfY3R5cGUsIGxjX251bWVyaWMpID09IDAgJiYKIAkJc3RyY21wKGxjX2N0 eXBlLCBsY19tb25ldGFyeSkgPT0gMCAmJgotCQlzdHJjbXAobGNfY3R5cGUsIGxjX21lc3Nh Z2VzKSA9PSAwKQorCQlzdHJjbXAobGNfY3R5cGUsIGxjX21lc3NhZ2VzKSA9PSAwICYmCisJ CSghaWN1X2xvY2FsZSB8fCBzdHJjbXAobGNfY3R5cGUsIGljdV9sb2NhbGUpID09IDApKQog CQlwcmludGYoXygiVGhlIGRhdGFiYXNlIGNsdXN0ZXIgd2lsbCBiZSBpbml0aWFsaXplZCB3 aXRoIGxvY2FsZSBcIiVzXCIuXG4iKSwgbGNfY3R5cGUpOwogCWVsc2UKIAl7Ci0JCXByaW50 ZihfKCJUaGUgZGF0YWJhc2UgY2x1c3RlciB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggbG9j YWxlc1xuIgotCQkJCSAiICBDT0xMQVRFOiAgJXNcbiIKLQkJCQkgIiAgQ1RZUEU6ICAgICVz XG4iCi0JCQkJICIgIE1FU1NBR0VTOiAlc1xuIgotCQkJCSAiICBNT05FVEFSWTogJXNcbiIK LQkJCQkgIiAgTlVNRVJJQzogICVzXG4iCi0JCQkJICIgIFRJTUU6ICAgICAlc1xuIiksCisJ CXByaW50ZihfKCJUaGUgZGF0YWJhc2UgY2x1c3RlciB3aWxsIGJlIGluaXRpYWxpemVkIHdp dGggdGhpcyBsb2NhbGUgY29uZmlndXJhdGlvbjpcbiIpKTsKKwkJcHJpbnRmKF8oIiAgcHJv dmlkZXI6ICAgICVzXG4iKSwgY29sbHByb3ZpZGVyX25hbWUobG9jYWxlX3Byb3ZpZGVyKSk7 CisJCWlmIChpY3VfbG9jYWxlKQorCQkJcHJpbnRmKF8oIiAgSUNVIGxvY2FsZTogICVzXG4i KSwgaWN1X2xvY2FsZSk7CisJCXByaW50ZihfKCIgIExDX0NPTExBVEU6ICAlc1xuIgorCQkJ CSAiICBMQ19DVFlQRTogICAgJXNcbiIKKwkJCQkgIiAgTENfTUVTU0FHRVM6ICVzXG4iCisJ CQkJICIgIExDX01PTkVUQVJZOiAlc1xuIgorCQkJCSAiICBMQ19OVU1FUklDOiAgJXNcbiIK KwkJCQkgIiAgTENfVElNRTogICAgICVzXG4iKSwKIAkJCSAgIGxjX2NvbGxhdGUsCiAJCQkg ICBsY19jdHlwZSwKIAkJCSAgIGxjX21lc3NhZ2VzLApAQCAtMjM5NSw3ICsyNDU4LDkgQEAg c2V0dXBfbG9jYWxlX2VuY29kaW5nKHZvaWQpCiAJCQkgICBsY190aW1lKTsKIAl9CiAKLQlp ZiAoIWVuY29kaW5nKQorCWlmICghZW5jb2RpbmcgJiYgbG9jYWxlX3Byb3ZpZGVyID09IENP TExQUk9WSURFUl9JQ1UpCisJCWVuY29kaW5naWQgPSBQR19VVEY4OworCWVsc2UgaWYgKCFl bmNvZGluZykKIAl7CiAJCWludAkJCWN0eXBlX2VuYzsKIApAQCAtMjg5OSw2ICsyOTY0LDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl7ImRhdGEtY2hlY2tzdW1zIiwg bm9fYXJndW1lbnQsIE5VTEwsICdrJ30sCiAJCXsiYWxsb3ctZ3JvdXAtYWNjZXNzIiwgbm9f YXJndW1lbnQsIE5VTEwsICdnJ30sCiAJCXsiZGlzY2FyZC1jYWNoZXMiLCBub19hcmd1bWVu dCwgTlVMTCwgMTR9LAorCQl7ImxvY2FsZS1wcm92aWRlciIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCAxNX0sCisJCXsiaWN1LWxvY2FsZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxM LCAxNn0sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTMwNDUsNiArMzExMiwy MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJCQkJCQkJIGV4dHJhX29w dGlvbnMsCiAJCQkJCQkJCQkJICItYyBkZWJ1Z19kaXNjYXJkX2NhY2hlcz0xIik7CiAJCQkJ YnJlYWs7CisJCQljYXNlIDE1OgorCQkJCWlmIChzdHJjbXAob3B0YXJnLCAiaWN1IikgPT0g MCkKKwkJCQkJbG9jYWxlX3Byb3ZpZGVyID0gQ09MTFBST1ZJREVSX0lDVTsKKwkJCQllbHNl IGlmIChzdHJjbXAob3B0YXJnLCAibGliYyIpID09IDApCisJCQkJCWxvY2FsZV9wcm92aWRl ciA9IENPTExQUk9WSURFUl9MSUJDOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCXBnX2xvZ19l cnJvcigidW5yZWNvZ25pemVkIGxvY2FsZSBwcm92aWRlcjogJXMiLCBvcHRhcmcpOworCQkJ CQlleGl0KDEpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgMTY6CisJCQkJaWN1X2xv Y2FsZSA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJ CQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KIAkJCQlm cHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRp b24uXG4iKSwKQEAgLTMwNzMsNiArMzE1NCwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJCWV4aXQoMSk7CiAJfQogCisJaWYgKGljdV9sb2NhbGUgJiYgbG9jYWxlX3By b3ZpZGVyICE9IENPTExQUk9WSURFUl9JQ1UpCisJeworCQlwZ19sb2dfZXJyb3IoIiVzIGNh bm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGxvY2FsZSBwcm92aWRlciBcIiVzXCIgaXMgY2hv c2VuIiwKKwkJCQkJICItLWljdS1sb2NhbGUiLCAiaWN1Iik7CisJCWV4aXQoMSk7CisJfQor CiAJYXRleGl0KGNsZWFudXBfZGlyZWN0b3JpZXNfYXRleGl0KTsKIAogCS8qIElmIHdlIG9u bHkgbmVlZCB0byBmc3luYywganVzdCBkbyBpdCBhbmQgZXhpdCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsIGIvc3JjL2Jpbi9pbml0ZGIvdC8wMDFf aW5pdGRiLnBsCmluZGV4IDdkYzhjZGQ4NTUuLmI3ZWNmZjE3ZDggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbAorKysgYi9zcmMvYmluL2luaXRkYi90LzAw MV9pbml0ZGIucGwKQEAgLTkzLDQgKzkzLDI5IEBACiAJCSdjaGVjayBQR0RBVEEgcGVybWlz c2lvbnMnKTsKIH0KIAorIyBMb2NhbGUgcHJvdmlkZXIgdGVzdHMKKworaWYgKCRFTlZ7d2l0 aF9pY3V9IGVxICd5ZXMnKQoreworCWNvbW1hbmRfb2soWydpbml0ZGInLCAnLS1uby1zeW5j JywgJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICIkdGVtcGRpci9kYXRhMiJdLAorCQkJICAg J2xvY2FsZSBwcm92aWRlciBJQ1UnKTsKKworCWNvbW1hbmRfb2soWydpbml0ZGInLCAnLS1u by1zeW5jJywgJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICctLWljdS1sb2NhbGU9ZW4nLCAi JHRlbXBkaXIvZGF0YTMiXSwKKwkJJ29wdGlvbiAtLWljdS1sb2NhbGUnKTsKKworCWNvbW1h bmRfZmFpbHMoWydpbml0ZGInLCAnLS1uby1zeW5jJywgJy0tbG9jYWxlLXByb3ZpZGVyPWlj dScsICctLWljdS1sb2NhbGU9QGNvbE51bWVyaWM9bG93ZXInLCAiJHRlbXBkaXIvZGF0YVgi XSwKKwkJJ2ZhaWxzIGZvciBpbnZhbGlkIElDVSBsb2NhbGUnKTsKK30KK2Vsc2UKK3sKKwlj b21tYW5kX2ZhaWxzKFsnaW5pdGRiJywgJy0tbm8tc3luYycsICctLWxvY2FsZS1wcm92aWRl cj1pY3UnLCAiJHRlbXBkaXIvZGF0YTIiXSwKKwkJCQkgICdsb2NhbGUgcHJvdmlkZXIgSUNV IGZhaWxzIHNpbmNlIG5vIElDVSBzdXBwb3J0Jyk7Cit9CisKK2NvbW1hbmRfZmFpbHMoWydp bml0ZGInLCAnLS1uby1zeW5jJywgJy0tbG9jYWxlLXByb3ZpZGVyPXh5eicsICIkdGVtcGRp ci9kYXRhWCJdLAorCQkJICAnZmFpbHMgZm9yIGludmFsaWQgbG9jYWxlIHByb3ZpZGVyJyk7 CisKK2NvbW1hbmRfZmFpbHMoWydpbml0ZGInLCAnLS1uby1zeW5jJywgJy0tbG9jYWxlLXBy b3ZpZGVyPWxpYmMnLCAnLS1pY3UtbG9jYWxlPWVuJywgIiR0ZW1wZGlyL2RhdGFYIl0sCisJ CQkgICdmYWlscyBmb3IgaW52YWxpZCBvcHRpb24gY29tYmluYXRpb24nKTsKKwogZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0NDg1ZWE4M2IxLi5hM2Q1M2MyNWM5IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTI3NTMsOCArMjc1MywxMCBAQCBkdW1wRGF0YWJhc2UoQXJj aGl2ZSAqZm91dCkKIAkJCQlpX2RhdG5hbWUsCiAJCQkJaV9kYXRkYmEsCiAJCQkJaV9lbmNv ZGluZywKKwkJCQlpX2RhdGxvY3Byb3ZpZGVyLAogCQkJCWlfY29sbGF0ZSwKIAkJCQlpX2N0 eXBlLAorCQkJCWlfZGF0aWN1bG9jYWxlLAogCQkJCWlfZnJvemVueGlkLAogCQkJCWlfbWlu bXhpZCwKIAkJCQlpX2RhdGFjbCwKQEAgLTI3NjksOCArMjc3MSwxMCBAQCBkdW1wRGF0YWJh c2UoQXJjaGl2ZSAqZm91dCkKIAljb25zdCBjaGFyICpkYXRuYW1lLAogCQkJICAgKmRiYSwK IAkJCSAgICplbmNvZGluZywKKwkJCSAgICpkYXRsb2Nwcm92aWRlciwKIAkJCSAgICpjb2xs YXRlLAogCQkJICAgKmN0eXBlLAorCQkJICAgKmljdWxvY2FsZSwKIAkJCSAgICpkYXRpc3Rl bXBsYXRlLAogCQkJICAgKmRhdGNvbm5saW1pdCwKIAkJCSAgICp0YWJsZXNwYWNlOwpAQCAt Mjc5NCw5ICsyNzk4LDkgQEAgZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZvdXQpCiAJZWxzZQog CQlhcHBlbmRQUUV4cEJ1ZmZlcihkYlFyeSwgIjAgQVMgZGF0bWlubXhpZCwgIik7CiAJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQotCQlhcHBlbmRQUUV4cEJ1ZmZlcihk YlFyeSwgImRhdGNvbGx2ZXJzaW9uLCAiKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoZGJRcnks ICJkYXRsb2Nwcm92aWRlciwgZGF0aWN1bG9jYWxlLCBkYXRjb2xsdmVyc2lvbiwgIik7CiAJ ZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlcihkYlFyeSwgIk5VTEwgQVMgZGF0Y29sbHZlcnNp b24sICIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihkYlFyeSwgIidjJyBBUyBkYXRsb2Nwcm92 aWRlciwgTlVMTCBBUyBkYXRpY3Vsb2NhbGUsIE5VTEwgQVMgZGF0Y29sbHZlcnNpb24sICIp OwogCWFwcGVuZFBRRXhwQnVmZmVyKGRiUXJ5LAogCQkJCQkgICIoU0VMRUNUIHNwY25hbWUg RlJPTSBwZ190YWJsZXNwYWNlIHQgV0hFUkUgdC5vaWQgPSBkYXR0YWJsZXNwYWNlKSBBUyB0 YWJsZXNwYWNlLCAiCiAJCQkJCSAgInNob2JqX2Rlc2NyaXB0aW9uKG9pZCwgJ3BnX2RhdGFi YXNlJykgQVMgZGVzY3JpcHRpb24gIgpAQCAtMjgxMCw4ICsyODE0LDEwIEBAIGR1bXBEYXRh YmFzZShBcmNoaXZlICpmb3V0KQogCWlfZGF0bmFtZSA9IFBRZm51bWJlcihyZXMsICJkYXRu YW1lIik7CiAJaV9kYXRkYmEgPSBQUWZudW1iZXIocmVzLCAiZGF0ZGJhIik7CiAJaV9lbmNv ZGluZyA9IFBRZm51bWJlcihyZXMsICJlbmNvZGluZyIpOworCWlfZGF0bG9jcHJvdmlkZXIg PSBQUWZudW1iZXIocmVzLCAiZGF0bG9jcHJvdmlkZXIiKTsKIAlpX2NvbGxhdGUgPSBQUWZu dW1iZXIocmVzLCAiZGF0Y29sbGF0ZSIpOwogCWlfY3R5cGUgPSBQUWZudW1iZXIocmVzLCAi ZGF0Y3R5cGUiKTsKKwlpX2RhdGljdWxvY2FsZSA9IFBRZm51bWJlcihyZXMsICJkYXRpY3Vs b2NhbGUiKTsKIAlpX2Zyb3plbnhpZCA9IFBRZm51bWJlcihyZXMsICJkYXRmcm96ZW54aWQi KTsKIAlpX21pbm14aWQgPSBQUWZudW1iZXIocmVzLCAiZGF0bWlubXhpZCIpOwogCWlfZGF0 YWNsID0gUFFmbnVtYmVyKHJlcywgImRhdGFjbCIpOwpAQCAtMjgyNiw4ICsyODMyLDEzIEBA IGR1bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KQogCWRhdG5hbWUgPSBQUWdldHZhbHVlKHJl cywgMCwgaV9kYXRuYW1lKTsKIAlkYmEgPSBnZXRSb2xlTmFtZShQUWdldHZhbHVlKHJlcywg MCwgaV9kYXRkYmEpKTsKIAllbmNvZGluZyA9IFBRZ2V0dmFsdWUocmVzLCAwLCBpX2VuY29k aW5nKTsKKwlkYXRsb2Nwcm92aWRlciA9IFBRZ2V0dmFsdWUocmVzLCAwLCBpX2RhdGxvY3By b3ZpZGVyKTsKIAljb2xsYXRlID0gUFFnZXR2YWx1ZShyZXMsIDAsIGlfY29sbGF0ZSk7CiAJ Y3R5cGUgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9jdHlwZSk7CisJaWYgKCFQUWdldGlzbnVs bChyZXMsIDAsIGlfZGF0aWN1bG9jYWxlKSkKKwkJaWN1bG9jYWxlID0gUFFnZXR2YWx1ZShy ZXMsIDAsIGlfZGF0aWN1bG9jYWxlKTsKKwllbHNlCisJCWljdWxvY2FsZSA9IE5VTEw7CiAJ ZnJvemVueGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCAwLCBpX2Zyb3plbnhpZCkpOwog CW1pbm14aWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIDAsIGlfbWlubXhpZCkpOwogCWRi ZGFjbC5hY2wgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9kYXRhY2wpOwpAQCAtMjg1OSw2ICsy ODcwLDE3IEBAIGR1bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihjcmVhUXJ5LCAiIEVOQ09ESU5HID0gIik7CiAJCWFwcGVuZFN0cmluZ0xpdGVy YWxBSChjcmVhUXJ5LCBlbmNvZGluZywgZm91dCk7CiAJfQorCWlmIChzdHJsZW4oZGF0bG9j cHJvdmlkZXIpID4gMCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNyZWFRcnksICIg TE9DQUxFX1BST1ZJREVSID0gIik7CisJCWlmIChkYXRsb2Nwcm92aWRlclswXSA9PSAnYycp CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihjcmVhUXJ5LCAibGliYyIpOworCQllbHNlIGlm IChkYXRsb2Nwcm92aWRlclswXSA9PSAnaScpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihj cmVhUXJ5LCAiaWN1Iik7CisJCWVsc2UKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgbG9jYWxl IHByb3ZpZGVyOiAlcyIsCisJCQkJICBkYXRsb2Nwcm92aWRlcik7CisJfQogCWlmIChzdHJs ZW4oY29sbGF0ZSkgPiAwICYmIHN0cmNtcChjb2xsYXRlLCBjdHlwZSkgPT0gMCkKIAl7CiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKGNyZWFRcnksICIgTE9DQUxFID0gIik7CkBAIC0yODc3 LDYgKzI4OTksMTEgQEAgZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZvdXQpCiAJCQlhcHBlbmRT dHJpbmdMaXRlcmFsQUgoY3JlYVFyeSwgY3R5cGUsIGZvdXQpOwogCQl9CiAJfQorCWlmIChp Y3Vsb2NhbGUpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihjcmVhUXJ5LCAiIElDVV9M T0NBTEUgPSAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKGNyZWFRcnksIGljdWxvY2Fs ZSwgZm91dCk7CisJfQogCiAJLyoKIAkgKiBGb3IgYmluYXJ5IHVwZ3JhZGUsIGNhcnJ5IG92 ZXIgdGhlIGNvbGxhdGlvbiB2ZXJzaW9uLiAgRm9yIG5vcm1hbApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYwpp bmRleCAwMTliY2I2YzdiLi5jZjNiMzk4ZDllIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Vw Z3JhZGUvY2hlY2suYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYwpAQCAtMTAs NiArMTAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2F1dGhpZF9kLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIK ICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJtYi9wZ193 Y2hhci5oIgogI2luY2x1ZGUgInBnX3VwZ3JhZGUuaCIKQEAgLTM0OSw2ICszNTAsMTggQEAg Y2hlY2tfbG9jYWxlX2FuZF9lbmNvZGluZyhEYkluZm8gKm9sZGRiLCBEYkluZm8gKm5ld2Ri KQogCWlmICghZXF1aXZhbGVudF9sb2NhbGUoTENfQ1RZUEUsIG9sZGRiLT5kYl9jdHlwZSwg bmV3ZGItPmRiX2N0eXBlKSkKIAkJcGdfZmF0YWwoImxjX2N0eXBlIHZhbHVlcyBmb3IgZGF0 YWJhc2UgXCIlc1wiIGRvIG5vdCBtYXRjaDogIG9sZCBcIiVzXCIsIG5ldyBcIiVzXCJcbiIs CiAJCQkJIG9sZGRiLT5kYl9uYW1lLCBvbGRkYi0+ZGJfY3R5cGUsIG5ld2RiLT5kYl9jdHlw ZSk7CisJaWYgKG9sZGRiLT5kYl9jb2xscHJvdmlkZXIgIT0gbmV3ZGItPmRiX2NvbGxwcm92 aWRlcikKKwkJcGdfZmF0YWwoImxvY2FsZSBwcm92aWRlcnMgZm9yIGRhdGFiYXNlIFwiJXNc IiBkbyBub3QgbWF0Y2g6ICBvbGQgXCIlc1wiLCBuZXcgXCIlc1wiXG4iLAorCQkJCSBvbGRk Yi0+ZGJfbmFtZSwKKwkJCQkgY29sbHByb3ZpZGVyX25hbWUob2xkZGItPmRiX2NvbGxwcm92 aWRlciksCisJCQkJIGNvbGxwcm92aWRlcl9uYW1lKG5ld2RiLT5kYl9jb2xscHJvdmlkZXIp KTsKKwlpZiAoKG9sZGRiLT5kYl9pY3Vsb2NhbGUgPT0gTlVMTCAmJiBuZXdkYi0+ZGJfaWN1 bG9jYWxlICE9IE5VTEwpIHx8CisJCShvbGRkYi0+ZGJfaWN1bG9jYWxlICE9IE5VTEwgJiYg bmV3ZGItPmRiX2ljdWxvY2FsZSA9PSBOVUxMKSB8fAorCQkob2xkZGItPmRiX2ljdWxvY2Fs ZSAhPSBOVUxMICYmIG5ld2RiLT5kYl9pY3Vsb2NhbGUgIT0gTlVMTCAmJiBzdHJjbXAob2xk ZGItPmRiX2ljdWxvY2FsZSwgbmV3ZGItPmRiX2ljdWxvY2FsZSkgIT0gMCkpCisJCXBnX2Zh dGFsKCJJQ1UgbG9jYWxlIHZhbHVlcyBmb3IgZGF0YWJhc2UgXCIlc1wiIGRvIG5vdCBtYXRj aDogIG9sZCBcIiVzXCIsIG5ldyBcIiVzXCJcbiIsCisJCQkJIG9sZGRiLT5kYl9uYW1lLAor CQkJCSBvbGRkYi0+ZGJfaWN1bG9jYWxlID8gb2xkZGItPmRiX2ljdWxvY2FsZSA6ICIobnVs bCkiLAorCQkJCSBuZXdkYi0+ZGJfaWN1bG9jYWxlID8gbmV3ZGItPmRiX2ljdWxvY2FsZSA6 ICIobnVsbCkiKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9p bmZvLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvaW5mby5jCmluZGV4IDY5ZWYyMzExOWYuLjVj Mzk2OGUwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMKKysrIGIv c3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYwpAQCAtMzEyLDExICszMTIsMjAgQEAgZ2V0X2Ri X2luZm9zKENsdXN0ZXJJbmZvICpjbHVzdGVyKQogCQkJCWlfZW5jb2RpbmcsCiAJCQkJaV9k YXRjb2xsYXRlLAogCQkJCWlfZGF0Y3R5cGUsCisJCQkJaV9kYXRsb2Nwcm92aWRlciwKKwkJ CQlpX2RhdGljdWxvY2FsZSwKIAkJCQlpX3NwY2xvY2F0aW9uOwogCWNoYXIJCXF1ZXJ5W1FV RVJZX0FMTE9DXTsKIAogCXNucHJpbnRmKHF1ZXJ5LCBzaXplb2YocXVlcnkpLAotCQkJICJT RUxFQ1QgZC5vaWQsIGQuZGF0bmFtZSwgZC5lbmNvZGluZywgZC5kYXRjb2xsYXRlLCBkLmRh dGN0eXBlLCAiCisJCQkgIlNFTEVDVCBkLm9pZCwgZC5kYXRuYW1lLCBkLmVuY29kaW5nLCBk LmRhdGNvbGxhdGUsIGQuZGF0Y3R5cGUsICIpOworCWlmIChHRVRfTUFKT1JfVkVSU0lPTihv bGRfY2x1c3Rlci5tYWpvcl92ZXJzaW9uKSA8PSAxNTAwKQorCQlzbnByaW50ZihxdWVyeSAr IHN0cmxlbihxdWVyeSksIHNpemVvZihxdWVyeSkgLSBzdHJsZW4ocXVlcnkpLAorCQkJCSAi J2MnIEFTIGRhdGxvY3Byb3ZpZGVyLCBOVUxMIEFTIGRhdGljdWxvY2FsZSwgIik7CisJZWxz ZQorCQlzbnByaW50ZihxdWVyeSArIHN0cmxlbihxdWVyeSksIHNpemVvZihxdWVyeSkgLSBz dHJsZW4ocXVlcnkpLAorCQkJCSAiZGF0bG9jcHJvdmlkZXIsIGRhdGljdWxvY2FsZSwgIik7 CisJc25wcmludGYocXVlcnkgKyBzdHJsZW4ocXVlcnkpLCBzaXplb2YocXVlcnkpIC0gc3Ry bGVuKHF1ZXJ5KSwKIAkJCSAicGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlX2xvY2F0aW9uKHQu b2lkKSBBUyBzcGNsb2NhdGlvbiAiCiAJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19kYXRhYmFz ZSBkICIKIAkJCSAiIExFRlQgT1VURVIgSk9JTiBwZ19jYXRhbG9nLnBnX3RhYmxlc3BhY2Ug dCAiCkBAIC0zMzEsNiArMzQwLDggQEAgZ2V0X2RiX2luZm9zKENsdXN0ZXJJbmZvICpjbHVz dGVyKQogCWlfZW5jb2RpbmcgPSBQUWZudW1iZXIocmVzLCAiZW5jb2RpbmciKTsKIAlpX2Rh dGNvbGxhdGUgPSBQUWZudW1iZXIocmVzLCAiZGF0Y29sbGF0ZSIpOwogCWlfZGF0Y3R5cGUg PSBQUWZudW1iZXIocmVzLCAiZGF0Y3R5cGUiKTsKKwlpX2RhdGxvY3Byb3ZpZGVyID0gUFFm bnVtYmVyKHJlcywgImRhdGxvY3Byb3ZpZGVyIik7CisJaV9kYXRpY3Vsb2NhbGUgPSBQUWZu dW1iZXIocmVzLCAiZGF0aWN1bG9jYWxlIik7CiAJaV9zcGNsb2NhdGlvbiA9IFBRZm51bWJl cihyZXMsICJzcGNsb2NhdGlvbiIpOwogCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKQEAg LTM0Myw2ICszNTQsMTEgQEAgZ2V0X2RiX2luZm9zKENsdXN0ZXJJbmZvICpjbHVzdGVyKQog CQlkYmluZm9zW3R1cG51bV0uZGJfZW5jb2RpbmcgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCB0 dXBudW0sIGlfZW5jb2RpbmcpKTsKIAkJZGJpbmZvc1t0dXBudW1dLmRiX2NvbGxhdGUgPSBw Z19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIHR1cG51bSwgaV9kYXRjb2xsYXRlKSk7CiAJCWRi aW5mb3NbdHVwbnVtXS5kYl9jdHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgdHVw bnVtLCBpX2RhdGN0eXBlKSk7CisJCWRiaW5mb3NbdHVwbnVtXS5kYl9jb2xscHJvdmlkZXIg PSBQUWdldHZhbHVlKHJlcywgdHVwbnVtLCBpX2RhdGxvY3Byb3ZpZGVyKVswXTsKKwkJaWYg KFBRZ2V0aXNudWxsKHJlcywgdHVwbnVtLCBpX2RhdGljdWxvY2FsZSkpCisJCQlkYmluZm9z W3R1cG51bV0uZGJfaWN1bG9jYWxlID0gTlVMTDsKKwkJZWxzZQorCQkJZGJpbmZvc1t0dXBu dW1dLmRiX2ljdWxvY2FsZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgdHVwbnVtLCBp X2RhdGljdWxvY2FsZSkpOwogCQlzbnByaW50ZihkYmluZm9zW3R1cG51bV0uZGJfdGFibGVz cGFjZSwgc2l6ZW9mKGRiaW5mb3NbdHVwbnVtXS5kYl90YWJsZXNwYWNlKSwgIiVzIiwKIAkJ CQkgUFFnZXR2YWx1ZShyZXMsIHR1cG51bSwgaV9zcGNsb2NhdGlvbikpOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3Vw Z3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IDBhY2EwYTc3YWEuLjkzYzMxZmJjMjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMTcxLDYgKzE3MSw4IEBAIHR5cGVkZWYgc3Ry dWN0CiAJCQkJCQkJCQkJCSAqIHBhdGggKi8KIAljaGFyCSAgICpkYl9jb2xsYXRlOwogCWNo YXIJICAgKmRiX2N0eXBlOworCWNoYXIJCWRiX2NvbGxwcm92aWRlcjsKKwljaGFyCSAgICpk Yl9pY3Vsb2NhbGU7CiAJaW50CQkJZGJfZW5jb2Rpbmc7CiAJUmVsSW5mb0FycglyZWxfYXJy OwkJLyogYXJyYXkgb2YgYWxsIHVzZXIgcmVsaW5mb3MgKi8KIH0gRGJJbmZvOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwppbmRleCA2NTRlZjJkN2MzLi4yMGQ2NTRlOWZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtODk2LDYg Kzg5NiwxOCBAQCBsaXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSkKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkVuY29kaW5nIiksCiAJCQkJCSAgZ2V0dGV4dF9u b29wKCJDb2xsYXRlIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJDdHlwZSIpKTsKKwlpZiAo cHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkgICIgICAgICAgZC5kYXRpY3Vsb2NhbGUgYXMgXCIlc1wiLFxuIgorCQkJCQkJICAi ICAgICAgIENBU0UgZC5kYXRsb2Nwcm92aWRlciBXSEVOICdjJyBUSEVOICdsaWJjJyBXSEVO ICdpJyBUSEVOICdpY3UnIEVORCBBUyBcIiVzXCIsXG4iLAorCQkJCQkJICBnZXR0ZXh0X25v b3AoIklDVSBMb2NhbGUiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJMb2NhbGUgUHJvdmlk ZXIiKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiICAg ICAgIGQuZGF0Y29sbGF0ZSBhcyBcIiVzXCIsXG4iCisJCQkJCQkgICIgICAgICAgJ2xpYmMn IEFTIFwiJXNcIixcbiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiSUNVIExvY2FsZSIpLAor CQkJCQkJICBnZXR0ZXh0X25vb3AoIkxvY2FsZSBQcm92aWRlciIpKTsKIAlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmYnVmLCAiICAgICAgICIpOwogCXByaW50QUNMQ29sdW1uKCZidWYsICJk LmRhdGFjbCIpOwogCWlmICh2ZXJib3NlKQpAQCAtNDYxNCw3ICs0NjI2LDcgQEAgbGlzdENv bGxhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dT eXN0ZW0pCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQlzdGF0aWMgY29uc3QgYm9vbCB0cmFu c2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg dHJ1ZSwgZmFsc2V9OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10g PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFs c2V9OwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBAIC00NjI4LDYgKzQ2NDAsMTUg QEAgbGlzdENvbGxhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBi b29sIHNob3dTeXN0ZW0pCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJDb2xsYXRlIiksCiAJCQkJ CSAgZ2V0dGV4dF9ub29wKCJDdHlwZSIpKTsKIAorCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1 MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAgICAgICBj LmNvbGxpY3Vsb2NhbGUgQVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJQ1Ug TG9jYWxlIikpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAg IixcbiAgICAgICBjLmNvbGxjb2xsYXRlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRf bm9vcCgiSUNVIExvY2FsZSIpKTsKKwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDEwMDAwMCkK IAkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgICAgICBDQVNFIGMu Y29sbHByb3ZpZGVyIFdIRU4gJ2QnIFRIRU4gJ2RlZmF1bHQnIFdIRU4gJ2MnIFRIRU4gJ2xp YmMnIFdIRU4gJ2knIFRIRU4gJ2ljdScgRU5EIEFTIFwiJXNcIiIsCmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKaW5kZXggMDEwZWRiNjg1Zi4uYWRkMTNmN2RlOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpA QCAtMjcyNCw3ICsyNzI0LDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiT1dORVIiLCAiVEVNUExB VEUiLCAiRU5DT0RJTkciLCAiVEFCTEVTUEFDRSIsCiAJCQkJCSAgIklTX1RFTVBMQVRFIiwK IAkJCQkJICAiQUxMT1dfQ09OTkVDVElPTlMiLCAiQ09OTkVDVElPTiBMSU1JVCIsCi0JCQkJ CSAgIkxDX0NPTExBVEUiLCAiTENfQ1RZUEUiLCAiTE9DQUxFIiwgIk9JRCIpOworCQkJCQkg ICJMQ19DT0xMQVRFIiwgIkxDX0NUWVBFIiwgIkxPQ0FMRSIsICJPSUQiLAorCQkJCQkgICJM T0NBTEVfUFJPVklERVIiLCAiSUNVX0xPQ0FMRSIpOwogCiAJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIkRBVEFCQVNFIiwgTWF0Y2hBbnksICJURU1QTEFURSIpKQogCQlDT01QTEVU RV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RlbXBsYXRlX2RhdGFiYXNlcyk7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvTWFrZWZpbGUgYi9zcmMvYmluL3NjcmlwdHMv TWFrZWZpbGUKaW5kZXggYjgzMzEwOWRhNi4uMjVlN2RhM2QzZiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9zY3JpcHRzL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9NYWtlZmlsZQpA QCAtNTMsNiArNTMsOCBAQCBjbGVhbiBkaXN0Y2xlYW4gbWFpbnRhaW5lci1jbGVhbjoKIAly bSAtZiBjb21tb24ubyAkKFdJTjMyUkVTKQogCXJtIC1yZiB0bXBfY2hlY2sKIAorZXhwb3J0 IHdpdGhfaWN1CisKIGNoZWNrOgogCSQocHJvdmVfY2hlY2spCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMK aW5kZXggYjBjNjgwNWJjOS4uNmY2MTJhYmY3YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3Jp cHRzL2NyZWF0ZWRiLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKQEAgLTM4 LDYgKzM4LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl7ImxjLWN0eXBl IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDJ9LAogCQl7ImxvY2FsZSIsIHJlcXVpcmVk X2FyZ3VtZW50LCBOVUxMLCAnbCd9LAogCQl7Im1haW50ZW5hbmNlLWRiIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsIDN9LAorCQl7ImxvY2FsZS1wcm92aWRlciIsIHJlcXVpcmVkX2Fy Z3VtZW50LCBOVUxMLCA0fSwKKwkJeyJpY3UtbG9jYWxlIiwgcmVxdWlyZWRfYXJndW1lbnQs IE5VTEwsIDV9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC02MSw2ICs2Myw4 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljaGFyCSAgICpsY19jb2xsYXRl ID0gTlVMTDsKIAljaGFyCSAgICpsY19jdHlwZSA9IE5VTEw7CiAJY2hhcgkgICAqbG9jYWxl ID0gTlVMTDsKKwljaGFyCSAgICpsb2NhbGVfcHJvdmlkZXIgPSBOVUxMOworCWNoYXIJICAg KmljdV9sb2NhbGUgPSBOVUxMOwogCiAJUFFFeHBCdWZmZXJEYXRhIHNxbDsKIApAQCAtMTE5 LDYgKzEyMywxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlIDM6 CiAJCQkJbWFpbnRlbmFuY2VfZGIgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQlicmVhazsK KwkJCWNhc2UgNDoKKwkJCQlsb2NhbGVfcHJvdmlkZXIgPSBwZ19zdHJkdXAob3B0YXJnKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgNToKKwkJCQlpY3VfbG9jYWxlID0gcGdfc3RyZHVwKG9w dGFyZyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWZwcmludGYoc3RkZXJyLCBf KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFt ZSk7CiAJCQkJZXhpdCgxKTsKQEAgLTIxNyw2ICsyMjcsMTMgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmc3FsLCAiIExDX0NUWVBF ICIpOwogCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubigmc3FsLCBsY19jdHlwZSwgY29ubik7 CiAJfQorCWlmIChsb2NhbGVfcHJvdmlkZXIpCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZzcWws ICIgTE9DQUxFX1BST1ZJREVSICVzIiwgbG9jYWxlX3Byb3ZpZGVyKTsKKwlpZiAoaWN1X2xv Y2FsZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZzcWwsICIgSUNVX0xPQ0FMRSAi KTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbENvbm4oJnNxbCwgaWN1X2xvY2FsZSwgY29ubik7 CisJfQogCiAJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZzcWwsICc7Jyk7CiAKQEAgLTI3Myw2 ICsyOTAsOSBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50ZihfKCIgIC1s LCAtLWxvY2FsZT1MT0NBTEUgICAgICAgICAgbG9jYWxlIHNldHRpbmdzIGZvciB0aGUgZGF0 YWJhc2VcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1sYy1jb2xsYXRlPUxPQ0FMRSAgICAg IExDX0NPTExBVEUgc2V0dGluZyBmb3IgdGhlIGRhdGFiYXNlXG4iKSk7CiAJcHJpbnRmKF8o IiAgICAgIC0tbGMtY3R5cGU9TE9DQUxFICAgICAgICBMQ19DVFlQRSBzZXR0aW5nIGZvciB0 aGUgZGF0YWJhc2VcbiIpKTsKKwlwcmludGYoXygiICAgICAgLS1pY3UtbG9jYWxlPUxPQ0FM RSAgICAgIElDVSBsb2NhbGUgc2V0dGluZyBmb3IgdGhlIGRhdGFiYXNlXG4iKSk7CisJcHJp bnRmKF8oIiAgICAgIC0tbG9jYWxlLXByb3ZpZGVyPXtsaWJjfGljdX1cbiIKKwkJCSAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSBwcm92aWRlciBmb3IgdGhlIGRh dGFiYXNlJ3MgZGVmYXVsdCBjb2xsYXRpb25cbiIpKTsKIAlwcmludGYoXygiICAtTywgLS1v d25lcj1PV05FUiAgICAgICAgICAgIGRhdGFiYXNlIHVzZXIgdG8gb3duIHRoZSBuZXcgZGF0 YWJhc2VcbiIpKTsKIAlwcmludGYoXygiICAtVCwgLS10ZW1wbGF0ZT1URU1QTEFURSAgICAg IHRlbXBsYXRlIGRhdGFiYXNlIHRvIGNvcHlcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12 ZXJzaW9uICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVu IGV4aXRcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVk Yi5wbCBiL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbAppbmRleCA2MzkyNDU0 NjZlLi4zNWRlZWM5YTkyIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3Jl YXRlZGIucGwKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCkBAIC0y NSw5ICsyNSwzNyBAQAogCXFyL3N0YXRlbWVudDogQ1JFQVRFIERBVEFCQVNFIGZvb2JhcjIg RU5DT0RJTkcgJ0xBVElOMScvLAogCSdjcmVhdGUgZGF0YWJhc2Ugd2l0aCBlbmNvZGluZycp OwogCitpZiAoJEVOVnt3aXRoX2ljdX0gZXEgJ3llcycpCit7CisJIyBUaGlzIGZhaWxzIGJl Y2F1c2UgdGVtcGxhdGUwIHVzZXMgbGliYyBwcm92aWRlciBhbmQgaGFzIG5vIElDVQorCSMg bG9jYWxlIHNldC4gIEl0IHdvdWxkIHN1Y2NlZWQgaWYgdGVtcGxhdGUwIHVzZWQgdGhlIGlj dQorCSMgcHJvdmlkZXIuICBYWFggTWF5YmUgc3BsaXQgaW50byBtdWx0aXBsZSB0ZXN0cz8K Kwkkbm9kZS0+Y29tbWFuZF9mYWlscygKKwkJWyAnY3JlYXRlZGInLCAnLVQnLCAndGVtcGxh dGUwJywgJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICdmb29iYXI0JyBdLAorCQknY3JlYXRl IGRhdGFiYXNlIHdpdGggSUNVIGZhaWxzIHdpdGhvdXQgSUNVIGxvY2FsZSBzcGVjaWZpZWQn KTsKKworCSRub2RlLT5pc3N1ZXNfc3FsX2xpa2UoCisJCVsgJ2NyZWF0ZWRiJywgJy1UJywg J3RlbXBsYXRlMCcsICctLWxvY2FsZS1wcm92aWRlcj1pY3UnLCAnLS1pY3UtbG9jYWxlPWVu JywgJ2Zvb2JhcjUnIF0sCisJCXFyL3N0YXRlbWVudDogQ1JFQVRFIERBVEFCQVNFIGZvb2Jh cjUgLiogTE9DQUxFX1BST1ZJREVSIGljdSBJQ1VfTE9DQUxFICdlbicvLAorCQknY3JlYXRl IGRhdGFiYXNlIHdpdGggSUNVIGxvY2FsZSBzcGVjaWZpZWQnKTsKKworCSRub2RlLT5jb21t YW5kX2ZhaWxzKAorCQlbICdjcmVhdGVkYicsICctVCcsICd0ZW1wbGF0ZTAnLCAnLS1sb2Nh bGUtcHJvdmlkZXI9aWN1JywgJy0taWN1LWxvY2FsZT1AY29sTnVtZXJpYz1sb3dlcicsICdm b29iYXJYJyBdLAorCQknZmFpbHMgZm9yIGludmFsaWQgSUNVIGxvY2FsZScpOworfQorZWxz ZQoreworCSRub2RlLT5jb21tYW5kX2ZhaWxzKAorCQlbICdjcmVhdGVkYicsICctVCcsICd0 ZW1wbGF0ZTAnLCAnLS1sb2NhbGUtcHJvdmlkZXI9aWN1JywgJ2Zvb2JhcjQnIF0sCisJCSdj cmVhdGUgZGF0YWJhc2Ugd2l0aCBJQ1UgZmFpbHMgc2luY2Ugbm8gSUNVIHN1cHBvcnQnKTsK K30KKwogJG5vZGUtPmNvbW1hbmRfZmFpbHMoWyAnY3JlYXRlZGInLCAnZm9vYmFyMScgXSwK IAknZmFpbHMgaWYgZGF0YWJhc2UgYWxyZWFkeSBleGlzdHMnKTsKIAorJG5vZGUtPmNvbW1h bmRfZmFpbHMoWyAnY3JlYXRlZGInLCAnLVQnLCAndGVtcGxhdGUwJywgJy0tbG9jYWxlLXBy b3ZpZGVyPXh5eicsICdmb29iYXJYJyBdLAorCSdmYWlscyBmb3IgaW52YWxpZCBsb2NhbGUg cHJvdmlkZXInKTsKKwogIyBDaGVjayB1c2Ugb2YgdGVtcGxhdGVzIHdpdGggc2hhcmVkIGRl cGVuZGVuY2llcyBjb3BpZWQgZnJvbSB0aGUgdGVtcGxhdGUuCiBteSAoJHJldCwgJHN0ZG91 dCwgJHN0ZGVycikgPSAkbm9kZS0+cHNxbCgKIAknZm9vYmFyMicsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbGxhdGlvbi5kYXQKaW5kZXggNGI1NjgyNWQ4Mi4uZjc0NzBlYWQ0OSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmRhdApAQCAtMTQsOCArMTQsNyBAQAog CiB7IG9pZCA9PiAnMTAwJywgb2lkX3N5bWJvbCA9PiAnREVGQVVMVF9DT0xMQVRJT05fT0lE JywKICAgZGVzY3IgPT4gJ2RhdGFiYXNlXCdzIGRlZmF1bHQgY29sbGF0aW9uJywKLSAgY29s bG5hbWUgPT4gJ2RlZmF1bHQnLCBjb2xscHJvdmlkZXIgPT4gJ2QnLCBjb2xsZW5jb2Rpbmcg PT4gJy0xJywKLSAgY29sbGNvbGxhdGUgPT4gJycsIGNvbGxjdHlwZSA9PiAnJyB9LAorICBj b2xsbmFtZSA9PiAnZGVmYXVsdCcsIGNvbGxwcm92aWRlciA9PiAnZCcsIGNvbGxlbmNvZGlu ZyA9PiAnLTEnIH0sCiB7IG9pZCA9PiAnOTUwJywgb2lkX3N5bWJvbCA9PiAnQ19DT0xMQVRJ T05fT0lEJywKICAgZGVzY3IgPT4gJ3N0YW5kYXJkIEMgY29sbGF0aW9uJywKICAgY29sbG5h bWUgPT4gJ0MnLCBjb2xscHJvdmlkZXIgPT4gJ2MnLCBjb2xsZW5jb2RpbmcgPT4gJy0xJywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCmluZGV4IDg3NjNkZDQwODAuLmM2NDJj M2JiOTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaApAQCAtNDAsOCArNDAs OSBAQCBDQVRBTE9HKHBnX2NvbGxhdGlvbiwzNDU2LENvbGxhdGlvblJlbGF0aW9uSWQpCiAJ Ym9vbAkJY29sbGlzZGV0ZXJtaW5pc3RpYyBCS0lfREVGQVVMVCh0KTsKIAlpbnQzMgkJY29s bGVuY29kaW5nOwkvKiBlbmNvZGluZyBmb3IgdGhpcyBjb2xsYXRpb247IC0xID0gImFsbCIg Ki8KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMg c3RhcnQgaGVyZSAqLwotCXRleHQJCWNvbGxjb2xsYXRlIEJLSV9GT1JDRV9OT1RfTlVMTDsJ CS8qIExDX0NPTExBVEUgc2V0dGluZyAqLwotCXRleHQJCWNvbGxjdHlwZSBCS0lfRk9SQ0Vf Tk9UX05VTEw7CQkvKiBMQ19DVFlQRSBzZXR0aW5nICovCisJdGV4dAkJY29sbGNvbGxhdGUg QktJX0RFRkFVTFQoX251bGxfKTsJLyogTENfQ09MTEFURSBzZXR0aW5nICovCisJdGV4dAkJ Y29sbGN0eXBlIEJLSV9ERUZBVUxUKF9udWxsXyk7CQkvKiBMQ19DVFlQRSBzZXR0aW5nICov CisJdGV4dAkJY29sbGljdWxvY2FsZSBCS0lfREVGQVVMVChfbnVsbF8pOwkvKiBJQ1UgbG9j YWxlIElEICovCiAJdGV4dAkJY29sbHZlcnNpb24gQktJX0RFRkFVTFQoX251bGxfKTsJLyog cHJvdmlkZXItZGVwZW5kZW50CiAJCQkJCQkJCQkJCQkJICogdmVyc2lvbiBvZiBjb2xsYXRp b24KIAkJCQkJCQkJCQkJCQkgKiBkYXRhICovCkBAIC02Niw2ICs2NywyMCBAQCBERUNMQVJF X1VOSVFVRV9JTkRFWF9QS0VZKHBnX2NvbGxhdGlvbl9vaWRfaW5kZXgsIDMwODUsIENvbGxh dGlvbk9pZEluZGV4SWQsIG9uCiAjZGVmaW5lIENPTExQUk9WSURFUl9JQ1UJCSdpJwogI2Rl ZmluZSBDT0xMUFJPVklERVJfTElCQwkJJ2MnCiAKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hh ciAqCitjb2xscHJvdmlkZXJfbmFtZShjaGFyIGMpCit7CisJc3dpdGNoIChjKQorCXsKKwkJ Y2FzZSBDT0xMUFJPVklERVJfSUNVOgorCQkJcmV0dXJuICJpY3UiOworCQljYXNlIENPTExQ Uk9WSURFUl9MSUJDOgorCQkJcmV0dXJuICJsaWJjIjsKKwkJZGVmYXVsdDoKKwkJCXJldHVy biAiPz8/IjsKKwl9Cit9CisKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NP REUgKi8KIAogCkBAIC03NSw2ICs5MCw3IEBAIGV4dGVybiBPaWQJQ29sbGF0aW9uQ3JlYXRl KGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAkJCQkJCQlib29s IGNvbGxpc2RldGVybWluaXN0aWMsCiAJCQkJCQkJaW50MzIgY29sbGVuY29kaW5nLAogCQkJ CQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpjb2xsY3R5cGUsCisJ CQkJCQkJY29uc3QgY2hhciAqY29sbGljdWxvY2FsZSwKIAkJCQkJCQljb25zdCBjaGFyICpj b2xsdmVyc2lvbiwKIAkJCQkJCQlib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJYm9vbCBx dWlldCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RhdGFiYXNlLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuZGF0CmluZGV4IGU3ZTQyZDYw MjMuLjVmZWVkZmY3YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0 YWJhc2UuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuZGF0CkBA IC0xNCw5ICsxNCw5IEBACiAKIHsgb2lkID0+ICcxJywgb2lkX3N5bWJvbCA9PiAnVGVtcGxh dGVEYk9pZCcsCiAgIGRlc2NyID0+ICdkZWZhdWx0IHRlbXBsYXRlIGZvciBuZXcgZGF0YWJh c2VzJywKLSAgZGF0bmFtZSA9PiAndGVtcGxhdGUxJywgZW5jb2RpbmcgPT4gJ0VOQ09ESU5H JywgZGF0aXN0ZW1wbGF0ZSA9PiAndCcsCisgIGRhdG5hbWUgPT4gJ3RlbXBsYXRlMScsIGVu Y29kaW5nID0+ICdFTkNPRElORycsIGRhdGxvY3Byb3ZpZGVyID0+ICdMT0NBTEVfUFJPVklE RVInLCBkYXRpc3RlbXBsYXRlID0+ICd0JywKICAgZGF0YWxsb3djb25uID0+ICd0JywgZGF0 Y29ubmxpbWl0ID0+ICctMScsIGRhdGZyb3plbnhpZCA9PiAnMCcsCiAgIGRhdG1pbm14aWQg PT4gJzEnLCBkYXR0YWJsZXNwYWNlID0+ICdwZ19kZWZhdWx0JywgZGF0Y29sbGF0ZSA9PiAn TENfQ09MTEFURScsCi0gIGRhdGN0eXBlID0+ICdMQ19DVFlQRScsIGRhdGFjbCA9PiAnX251 bGxfJyB9LAorICBkYXRjdHlwZSA9PiAnTENfQ1RZUEUnLCBkYXRpY3Vsb2NhbGUgPT4gJ0lD VV9MT0NBTEUnLCBkYXRhY2wgPT4gJ19udWxsXycgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19kYXRhYmFzZS5oCmluZGV4IDc2YWRiZDRhYWQuLmE5ZjRhODA3MWYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2RhdGFiYXNlLmgKQEAgLTQwLDYgKzQwLDkgQEAgQ0FUQUxPRyhwZ19kYXRh YmFzZSwxMjYyLERhdGFiYXNlUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lf Uk9XVFlQRV9PSUQKIAkvKiBjaGFyYWN0ZXIgZW5jb2RpbmcgKi8KIAlpbnQzMgkJZW5jb2Rp bmc7CiAKKwkvKiBsb2NhbGUgcHJvdmlkZXIsIHNlZSBwZ19jb2xsYXRpb24uY29sbHByb3Zp ZGVyICovCisJY2hhcgkJZGF0bG9jcHJvdmlkZXI7CisKIAkvKiBhbGxvd2VkIGFzIENSRUFU RSBEQVRBQkFTRSB0ZW1wbGF0ZT8gKi8KIAlib29sCQlkYXRpc3RlbXBsYXRlOwogCkBAIC02 NSw2ICs2OCw5IEBAIENBVEFMT0cocGdfZGF0YWJhc2UsMTI2MixEYXRhYmFzZVJlbGF0aW9u SWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPV1RZUEVfT0lECiAJLyogTENfQ1RZUEUg c2V0dGluZyAqLwogCXRleHQJCWRhdGN0eXBlIEJLSV9GT1JDRV9OT1RfTlVMTDsKIAorCS8q IElDVSBsb2NhbGUgSUQgKi8KKwl0ZXh0CQlkYXRpY3Vsb2NhbGU7CisKIAkvKiBwcm92aWRl ci1kZXBlbmRlbnQgdmVyc2lvbiBvZiBjb2xsYXRpb24gZGF0YSAqLwogCXRleHQJCWRhdGNv bGx2ZXJzaW9uIEJLSV9ERUZBVUxUKF9udWxsXyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgK aW5kZXggMzBlNDIzYWYwZS4uOWIxNThmMjRhMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgK QEAgLTEwMyw2ICsxMDMsMTEgQEAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QKIAogdHlwZWRl ZiBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCAqcGdfbG9jYWxlX3Q7CiAKK2V4dGVybiBzdHJ1 Y3QgcGdfbG9jYWxlX3N0cnVjdCBkZWZhdWx0X2xvY2FsZTsKKworZXh0ZXJuIHZvaWQgbWFr ZV9pY3VfY29sbGF0b3IoY29uc3QgY2hhciAqaWN1bG9jc3RyLAorCQkJCQkJCSAgc3RydWN0 IHBnX2xvY2FsZV9zdHJ1Y3QgKnJlc3VsdHApOworCiBleHRlcm4gcGdfbG9jYWxlX3QgcGdf bmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQpOwogCiBleHRlcm4gY2hhciAq Z2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjaGFyIGNvbGxwcm92aWRlciwgY29uc3Qg Y2hhciAqY29sbGNvbGxhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29sbGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggOTY5OWNhMTZjZi4uZDRjOGM2ZGUzOCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0 CkBAIC0xMDI5LDE0ICsxMDI5LDEyIEBAIENSRUFURSBDT0xMQVRJT04gdGVzdDAgRlJPTSAi QyI7IC0tIGZhaWwsIGR1cGxpY2F0ZSBuYW1lCiBFUlJPUjogIGNvbGxhdGlvbiAidGVzdDAi IGFscmVhZHkgZXhpc3RzCiBkbyAkJAogQkVHSU4KLSAgRVhFQ1VURSAnQ1JFQVRFIENPTExB VElPTiB0ZXN0MSAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnIHx8Ci0gICAgICAg ICAgcXVvdGVfbGl0ZXJhbChjdXJyZW50X3NldHRpbmcoJ2xjX2NvbGxhdGUnKSkgfHwKLSAg ICAgICAgICAnLCBsY19jdHlwZSA9ICcgfHwKLSAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1 cnJlbnRfc2V0dGluZygnbGNfY3R5cGUnKSkgfHwgJyk7JzsKKyAgRVhFQ1VURSAnQ1JFQVRF IENPTExBVElPTiB0ZXN0MSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICcgfHwKKyAgICAg ICAgICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAn KTsnOwogRU5ECiAkJDsKLUNSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1 LCBsY19jb2xsYXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZCBsY19jdHlwZQot RVJST1I6ICBwYXJhbWV0ZXIgImxjX2N0eXBlIiBtdXN0IGJlIHNwZWNpZmllZAorQ1JFQVRF IENPTExBVElPTiB0ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnZW5fVVMu dXRmOCcpOyAtLSBmYWlsLCBuZWVkcyAibG9jYWxlIgorRVJST1I6ICBwYXJhbWV0ZXIgImxv Y2FsZSIgbXVzdCBiZSBzcGVjaWZpZWQKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3Zp ZGVyID0gaWN1LCBsb2NhbGUgPSAnbm9uc2Vuc2UnKTsgLyogbmV2ZXIgZmFpbHMgd2l0aCBJ Q1UgKi8gIERST1AgQ09MTEFUSU9OIHRlc3R4OwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBG Uk9NIG5vbnNlbnNlOwogRVJST1I6ICBjb2xsYXRpb24gIm5vbnNlbnNlIiBmb3IgZW5jb2Rp bmcgIlVURjgiIGRvZXMgbm90IGV4aXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUuaWN1LnV0Zjguc3FsCmluZGV4IDI0MmE3Y2U2YjcuLmIwZGRjN2RiNDQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC0zNjYsMTMgKzM2 NiwxMSBAQCBDUkVBVEUgU0NIRU1BIHRlc3Rfc2NoZW1hOwogQ1JFQVRFIENPTExBVElPTiB0 ZXN0MCBGUk9NICJDIjsgLS0gZmFpbCwgZHVwbGljYXRlIG5hbWUKIGRvICQkCiBCRUdJTgot ICBFWEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGljdSwgbGNf Y29sbGF0ZSA9ICcgfHwKLSAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGlu ZygnbGNfY29sbGF0ZScpKSB8fAotICAgICAgICAgICcsIGxjX2N0eXBlID0gJyB8fAotICAg ICAgICAgIHF1b3RlX2xpdGVyYWwoY3VycmVudF9zZXR0aW5nKCdsY19jdHlwZScpKSB8fCAn KTsnOworICBFWEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QxIChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJyB8fAorICAgICAgICAgIHF1b3RlX2xpdGVyYWwoY3VycmVudF9zZXR0 aW5nKCdsY19jb2xsYXRlJykpIHx8ICcpOyc7CiBFTkQKICQkOwotQ1JFQVRFIENPTExBVElP TiB0ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnZW5fVVMudXRmOCcpOyAt LSBmYWlsLCBuZWVkIGxjX2N0eXBlCitDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRl ciA9IGljdSwgbGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJs b2NhbGUiCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxl ID0gJ25vbnNlbnNlJyk7IC8qIG5ldmVyIGZhaWxzIHdpdGggSUNVICovICBEUk9QIENPTExB VElPTiB0ZXN0eDsKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwoK YmFzZS1jb21taXQ6IDI3ZDE5NWE1Nzg0OWZiY2ZiMmVmNDU1ZDQwZTE5MDFiNTAwMmI1MDUK LS0gCjIuMzUuMQoK --------------TQCUTDvIa3eUrHkGNuSAPWYg--