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 1l6ecd-0008Hb-Vp for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Feb 2021 19:12:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l6ecb-0007E5-Q4 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Feb 2021 19:12:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l6eca-0007Dr-QP for pgsql-hackers@lists.postgresql.org; Mon, 01 Feb 2021 19:12:25 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l6ecP-00076R-PQ for pgsql-hackers@lists.postgresql.org; Mon, 01 Feb 2021 19:12:23 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 785BA5C015A; Mon, 1 Feb 2021 14:12:12 -0500 (EST) Received: from imap21 ([10.202.2.71]) by compute2.internal (MEProxy); Mon, 01 Feb 2021 14:12:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= mime-version:message-id:in-reply-to:references:date:from:to:cc :subject:content-type; s=fm3; bh=ZZGHcgBWKuy0urC1LoieNR55/FIfoQ8 6dIQscBqTWTo=; b=imnSDtFjdlteyZXTVdAD/ovcMbF25f6k6Afa1iR04NLjIPH G+lvObtFZSYXcDwhRQeDa/dRIRRUL+HR03+IaaIVsdzyJR2EHloX8y+3sEu1OJS1 Rkl3YM7u+LnVucdHM3700UfcLIy3mxiMRJ507rpPY3lv2KSpqrzYlmMzQKqS57pj 3sveiGo+nHqyiB5nghelxne55ru1IAq1vhGeAeeGziPtXjV7QnOSkbLtNtnnbqQY K7RyqYQet4kZ4Qe8DW/b/tyC/PbNK6kC1zgEPrGSLVds7WPE8EjneJm2EZswkXa2 gdHqCZ8GD2jAoV6ZREfUW0kqx0Opl653t324aRA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=ZZGHcg BWKuy0urC1LoieNR55/FIfoQ86dIQscBqTWTo=; b=YerkANum7by9lL/Xd7eO1y vS5C16jDI1MY3VgDhbWnFU6PdQIvBe8DdmZdcbDV3ffi1MXm8Penhvy8J+gcT/KB 2ZEBm2k/iy4gyE7FUEFxF7/2Ch+erAySfeNfIY9mdLq9B+jC4LSNR8WTdnVEygpj oNWTl4yhYUt/VIVar1Az85Vy7TfS99a5Izr7Azlhkqjo7vEL9HNnwAtX7ajWwIm5 5j+12ZIbMuuplHsBZ1u2pjIMOQI1nyIKNPOHZUzF6eJk9S1rBpKi6WQ8P9gGQyCG v0sOp9ZcvWhtEWzC4idZ+Xj39UCZXGN3JLHNRGf41l0uDRqJZRC+5palXFvE6Z2A == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfeekgdduvddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesmhdtreerreertdenucfhrhhomhepfdfguhhl vghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtf frrghtthgvrhhnpefhvdelgfekvdetjeejtefhudejfeeileetjeeufeetffegjedtvdeu kedtgeffgeenucffohhmrghinhepvghnthgvrhhprhhishgvuggsrdgtohhmnecuvehluh hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvghulhgvrhesvghu lhgvrhhtohdrtghomh X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id F2F7B51C0081; Mon, 1 Feb 2021 14:12:10 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-84-gfc141fe8b8-fm-20210125.001-gfc141fe8 Mime-Version: 1.0 Message-Id: <5b9fceed-8f91-467f-a64e-2134c5c3f496@www.fastmail.com> In-Reply-To: References: <156921474237.1442.4182373664494053231.pgcf@coridan.postgresql.org> <20191128023201.GH237562@paquier.xyz> <20200116215730.vq6ark7uycmvwxtx@development> <2963266d-07b5-aed3-7cbe-2d5f2bc0b453@pgmasters.net> <8cf1ea71-b609-00e8-b8f0-c85ba61b7312@pgmasters.net> <4dbad191-9b40-4bb6-8940-d18f2e93c3ce@www.fastmail.com> Date: Mon, 01 Feb 2021 16:11:50 -0300 From: "Euler Taveira" To: japin Cc: =?UTF-8?Q?=C3=96nder_Kalac=C4=B1?= , "David Steele" , "Craig Ringer" , "Tomas Vondra" , "Michael Paquier" , "Amit Langote" , "movead li" , pgsql-hackers@lists.postgresql.org Subject: Re: row filtering for logical replication Content-Type: multipart/mixed; boundary=282c6f46d8fe408e912efdbc08c7b0f8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --282c6f46d8fe408e912efdbc08c7b0f8 Content-Type: multipart/alternative; boundary=3a40dcfc07d944a8acd7d8a9f17184bb --3a40dcfc07d944a8acd7d8a9f17184bb Content-Type: text/plain On Mon, Feb 1, 2021, at 6:11 AM, japin wrote: > Thanks for updating the patch. Here are some comments: Thanks for your review. I updated the documentation accordingly. > The documentation says: > > > Columns used in the WHERE clause must be part of the > > primary key or be covered by REPLICA IDENTITY otherwise > > UPDATE and DELETE operations will not > > be replicated. The UPDATE is an oversight from a previous version. > > Does the publication only load the REPLICA IDENTITY columns into oldtuple when we > execute DELETE? So the pgoutput_row_filter() cannot find non REPLICA IDENTITY > columns, which cause it return false, right? If that's right, the UPDATE might > not be limitation by REPLICA IDENTITY, because all columns are in newtuple, > isn't it? No. oldtuple could possibly be available for UPDATE and DELETE. However, row filter consider only one tuple for filtering. INSERT has only newtuple; row filter uses it. UPDATE has newtuple and optionally oldtuple (if it has PK or REPLICA IDENTITY); row filter uses newtuple. DELETE optionally has only oldtuple; row filter uses it (if available). Keep in mind, if the expression evaluates to NULL, it returns false and the row won't be replicated. After the commit 3696a600e2, the last patch does not apply cleanly. I'm attaching another version to address the documentation issues. -- Euler Taveira EnterpriseDB: https://www.enterprisedb.com/ --3a40dcfc07d944a8acd7d8a9f17184bb Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Mon, Fe= b 1, 2021, at 6:11 AM, japin wrote:
Thanks for updating the patch.  Here are s= ome comments:
Thanks for your review. I updat= ed the documentation accordingly.

The documentation says:
<= div>
>  Columns used in the <literal>WHERE&l= t;/literal> clause must be part of the
>  prima= ry key or be covered by <literal>REPLICA IDENTITY</literal> = otherwise
>  <command>UPDATE</command>= and <command>DELETE</command> operations will not
=
>  be replicated.
The UPDATE is = an oversight from a previous version.


Does the public= ation only load the REPLICA IDENTITY columns into oldtuple when we
execute DELETE? So the pgoutput_row_filter() cannot find non RE= PLICA IDENTITY
columns, which cause it return false, right= ?  If that's right, the UPDATE might
not be limitatio= n by REPLICA IDENTITY, because all columns are in newtuple,
isn't it?
No. oldtuple could possibly be av= ailable for UPDATE and DELETE. However, row
filter conside= r only one tuple for filtering. INSERT has only newtuple; row
<= div>filter uses it.  UPDATE has newtuple and optionally oldtuple (i= f it has PK or
REPLICA IDENTITY); row filter uses newtuple= . DELETE optionally has only
oldtuple; row filter uses it = (if available). Keep in mind, if the expression
evaluates = to NULL, it returns false and the row won't be replicated.

After the commit 3696a600e2, the last patch does not app= ly cleanly. I'm
attaching another version to address the d= ocumentation issues.


--
Euler Taveira
EnterpriseDB:  <= a href=3D"https://www.enterprisedb.com/">https://www.enterprisedb.com/

--3a40dcfc07d944a8acd7d8a9f17184bb-- --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0001-Remove-unused-column-from-initial-table-synchronizat.patch" Content-Type: text/x-patch; name="v10-0001-Remove-unused-column-from-initial-table-synchronizat.patch" Content-Transfer-Encoding: BASE64 RnJvbSBmYjQ1MTQwZWZhY2VhMGNmYzk0NzhmMmMzNzQ3ZDlhNGU1Y2VjYmQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTE6MTM6MjMgLTAzMDAK U3ViamVjdDogW1BBVENIIDEvN10gUmVtb3ZlIHVudXNlZCBjb2x1bW4gZnJvbSBpbml0aWFs IHRhYmxlIHN5bmNocm9uaXphdGlvbgoKQ29sdW1uIGF0dHR5cG1vZCB3YXMgYWRkZWQgaW4g dGhlIGNvbW1pdCA3YzRmNTI0MDlhLCBidXQgaXQgaXMgbm90IHVzZWQuClRoZSByZW1vdmFs IGlzIHNhZmUgYmVjYXVzZSBDT1BZIGZyb20gcHVibGlzaGVyIGRvZXMgbm90IG5lZWQgc3Vj aAppbmZvcm1hdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jIHwgNSArKy0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwppbmRleCA4NjNkMTk2ZmQ3Li5hMThmODQ3YWRlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTY0MCw3ICs2NDAs NyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxu YW1lLAogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKIAlP aWQJCQl0YWJsZVJvd1tdID0ge09JRE9JRCwgQ0hBUk9JRCwgQ0hBUk9JRH07Ci0JT2lkCQkJ YXR0clJvd1tdID0ge1RFWFRPSUQsIE9JRE9JRCwgSU5UNE9JRCwgQk9PTE9JRH07CisJT2lk CQkJYXR0clJvd1tdID0ge1RFWFRPSUQsIE9JRE9JRCwgQk9PTE9JRH07CiAJYm9vbAkJaXNu dWxsOwogCWludAkJCW5hdHQ7CiAKQEAgLTY4NSw3ICs2ODUsNiBAQCBmZXRjaF9yZW1vdGVf dGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWFwcGVuZFN0cmlu Z0luZm8oJmNtZCwKIAkJCQkJICJTRUxFQ1QgYS5hdHRuYW1lLCIKIAkJCQkJICIgICAgICAg YS5hdHR0eXBpZCwiCi0JCQkJCSAiICAgICAgIGEuYXR0dHlwbW9kLCIKIAkJCQkJICIgICAg ICAgYS5hdHRudW0gPSBBTlkoaS5pbmRrZXkpIgogCQkJCQkgIiAgRlJPTSBwZ19jYXRhbG9n LnBnX2F0dHJpYnV0ZSBhIgogCQkJCQkgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfaW5k ZXggaSIKQEAgLTcxOCw3ICs3MTcsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFy ICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCQlBc3NlcnQoIWlzbnVsbCk7CiAJCWxyZWwt PmF0dHR5cHNbbmF0dF0gPSBEYXR1bUdldE9iamVjdElkKHNsb3RfZ2V0YXR0cihzbG90LCAy LCAmaXNudWxsKSk7CiAJCUFzc2VydCghaXNudWxsKTsKLQkJaWYgKERhdHVtR2V0Qm9vbChz bG90X2dldGF0dHIoc2xvdCwgNCwgJmlzbnVsbCkpKQorCQlpZiAoRGF0dW1HZXRCb29sKHNs b3RfZ2V0YXR0cihzbG90LCAzLCAmaXNudWxsKSkpCiAJCQlscmVsLT5hdHRrZXlzID0gYm1z X2FkZF9tZW1iZXIobHJlbC0+YXR0a2V5cywgbmF0dCk7CiAKIAkJLyogU2hvdWxkIG5ldmVy IGhhcHBlbi4gKi8KLS0gCjIuMjAuMQoK --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0002-Rename-a-WHERE-node.patch" Content-Type: text/x-patch; name="v10-0002-Rename-a-WHERE-node.patch" Content-Transfer-Encoding: BASE64 RnJvbSA0OTAyMzIzZmNhMGVmYTgwMjRkZTYwMDg1MzY3MGIyYTFmMGUzY2EwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTE6NTM6MzQgLTAzMDAK U3ViamVjdDogW1BBVENIIDIvN10gUmVuYW1lIGEgV0hFUkUgbm9kZQoKQSBXSEVSRSBjbGF1 c2Ugd2lsbCBiZSB1c2VkIGZvciByb3cgZmlsdGVyaW5nIGluIGxvZ2ljYWwgcmVwbGljYXRp b24uIFdlCmFscmVhZHkgaGF2ZSBhIHNpbWlsYXIgbm9kZTogJ1dIRVJFIChjb25kaXRpb24g aGVyZSknLiBMZXQncyByZW5hbWUgdGhlCm5vZGUgdG8gYSBnZW5lcmljIG5hbWUgYW5kIHVz ZSBpdCBmb3Igcm93IGZpbHRlcmluZyB0b28uCi0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGRkNzJhOWZjM2MuLmVjZmQ5OGJhNWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdoZXJlX2NsYXVz ZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQogCQkJCWFfZXhwciBiX2V4cHIgY19leHByIEFl eHByQ29uc3QgaW5kaXJlY3Rpb25fZWwgb3B0X3NsaWNlX2JvdW5kCiAJCQkJY29sdW1ucmVm IGluX2V4cHIgaGF2aW5nX2NsYXVzZSBmdW5jX3RhYmxlIHhtbHRhYmxlIGFycmF5X2V4cHIK LQkJCQlFeGNsdXNpb25XaGVyZUNsYXVzZSBvcGVyYXRvcl9kZWZfYXJnCisJCQkJT3B0V2hl cmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZwogJXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0g cm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9saXN0CiAldHlwZSA8Ym9vbGVhbj4gb3B0X29y ZGluYWxpdHkKICV0eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNp b25Db25zdHJhaW50RWxlbQpAQCAtMzgwNiw3ICszODA2LDcgQEAgQ29uc3RyYWludEVsZW06 CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCXwgRVhDTFVERSBhY2Nlc3NfbWV0 aG9kX2NsYXVzZSAnKCcgRXhjbHVzaW9uQ29uc3RyYWludExpc3QgJyknCi0JCQkJb3B0X2Nf aW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZSAgRXhjbHVzaW9uV2hl cmVDbGF1c2UKKwkJCQlvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJs ZVNwYWNlICBPcHRXaGVyZUNsYXVzZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJ CQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC0z OTA4LDcgKzM5MDgsNyBAQCBFeGNsdXNpb25Db25zdHJhaW50RWxlbTogaW5kZXhfZWxlbSBX SVRIIGFueV9vcGVyYXRvcgogCQkJfQogCQk7CiAKLUV4Y2x1c2lvbldoZXJlQ2xhdXNlOgor T3B0V2hlcmVDbGF1c2U6CiAJCQlXSEVSRSAnKCcgYV9leHByICcpJwkJCQkJeyAkJCA9ICQz OyB9CiAJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwotLSAKMi4y MC4xCgo= --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0003-Row-filter-for-logical-replication.patch" Content-Type: text/x-patch; name="v10-0003-Row-filter-for-logical-replication.patch" Content-Transfer-Encoding: BASE64 RnJvbSBhMzY5M2RjMzcwZTgwMTY2YzVmYjhiYTA4Yzc2NWExNTU5YWFmODljIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTI6MDc6NTEgLTAzMDAK U3ViamVjdDogW1BBVENIIDMvN10gUm93IGZpbHRlciBmb3IgbG9naWNhbCByZXBsaWNhdGlv bgoKVGhpcyBmZWF0dXJlIGFkZHMgcm93IGZpbHRlciBmb3IgcHVibGljYXRpb24gdGFibGVz LiBXaGVuIHlvdSBkZWZpbmUgb3IKbW9kaWZ5IGEgcHVibGljYXRpb24geW91IGNhbiBvcHRp b25hbGx5IGZpbHRlciByb3dzIHRoYXQgZG9lcyBub3QKc2F0aXNmeSBhIFdIRVJFIGNvbmRp dGlvbi4gSXQgYWxsb3dzIHlvdSB0byBwYXJ0aWFsbHkgcmVwbGljYXRlIGEKZGF0YWJhc2Ug b3Igc2V0IG9mIHRhYmxlcy4gVGhlIHJvdyBmaWx0ZXIgaXMgcGVyIHRhYmxlIHdoaWNoIG1l YW5zIHRoYXQKeW91IGNhbiBkZWZpbmUgZGlmZmVyZW50IHJvdyBmaWx0ZXJzIGZvciBkaWZm ZXJlbnQgdGFibGVzLiBBIG5ldyByb3cKZmlsdGVyIGNhbiBiZSBhZGRlZCBzaW1wbHkgYnkg aW5mb3JtaW5nIHRoZSBXSEVSRSBjbGF1c2UgYWZ0ZXIgdGhlIHRhYmxlCm5hbWUuIFRoZSBX SEVSRSBleHByZXNzaW9uIG11c3QgYmUgZW5jbG9zZWQgYnkgcGFyZW50aGVzZXMuCgpUaGUg V0hFUkUgY2xhdXNlIHNob3VsZCBjb250YWluIG9ubHkgY29sdW1ucyB0aGF0IGFyZSBwYXJ0 IG9mIHRoZQpwcmltYXJ5IGtleSBvciB0aGF0IGFyZSBjb3ZlcmVkIGJ5IFJFUExJQ0EgSURF TlRJVFkuIE90aGVyd2lzZSwgVVBEQVRFcwphbmQgREVMRVRFcyB3b24ndCBiZSByZXBsaWNh dGVkLiBGb3Igc2ltcGxpY2l0eSwgZnVuY3Rpb25zIGFyZSBub3QKYWxsb3dlZDsgaXQgY291 bGQgcG9zc2libHkgYmUgYWRkcmVzc2VkIGluIGFub3RoZXIgcGF0Y2guCgpJZiB5b3UgY2hv b3NlIHRvIGRvIHRoZSBpbml0aWFsIHRhYmxlIHN5bmNocm9uaXphdGlvbiwgb25seSBkYXRh IHRoYXQKc2F0aXNmaWVzIHRoZSByb3cgZmlsdGVycyBpcyBzZW50LiBJZiB0aGUgc3Vic2Ny aXB0aW9uIGhhcyBzZXZlcmFsCnB1YmxpY2F0aW9ucyBpbiB3aGljaCBhIHRhYmxlIGhhcyBi ZWVuIHB1Ymxpc2hlZCB3aXRoIGRpZmZlcmVudCBXSEVSRQpjbGF1c2VzLCByb3dzIG11c3Qg c2F0aXNmeSBhbGwgZXhwcmVzc2lvbnMgdG8gYmUgY29waWVkLgoKSWYgeW91ciBwdWJsaWNh dGlvbiBjb250YWlucyBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlIHBhcmFtZXRlcgpwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCBkZXRlcm1pbmVzIGlmIGl0IHVzZXMgdGhlIHBhcnRpdGlv biByb3cKZmlsdGVyIChpZiB0aGUgcGFyYW1ldGVyIGlzIGZhbHNlIC0tIGRlZmF1bHQpIG9y IHRoZSBwYXJ0aXRpb25lZCB0YWJsZQpyb3cgZmlsdGVyLgotLS0KIGRvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDggKwogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICB8ICAzNiArKystCiBkb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgIHwgMTEwICsrKysrKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICA5NiArKysrKyst LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDI4 ICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICB8ICAx MCArKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICB8ICAx MyArKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICB8ICAg MyArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIHwgIDkz ICsrKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg ICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgfCAxNzkgKysrKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmggICAgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uX3JlbC5oICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscmVsYXRpb24uaCAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0ICAgfCAgMzIgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsICAgICAgICB8ICAyMyArKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy MF9yb3dfZmlsdGVyLnBsICAgfCAxOTAgKysrKysrKysrKysrKysrKysrKysKIDIyIGZpbGVz IGNoYW5nZWQsIDgwMCBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbAoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKaW5kZXggODY1ZTgyNmZiMC4uMWVhNDA3NjIxOSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKQEAgLTU0OTMsNiArNTQ5MywxNCBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJs ZT4mbAogICAgICAgIGFyZSBzaW1wbGUgcmVmZXJlbmNlcy4KICAgICAgIDwvcGFyYT48L2Vu dHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3Rm aWVsZD5wcnF1YWw8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+ cGdfbm9kZV90cmVlPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAg ICAgIDxlbnRyeT5FeHByZXNzaW9uIHRyZWUgKGluIDxmdW5jdGlvbj5ub2RlVG9TdHJpbmco KTwvZnVuY3Rpb24+CisgICAgICByZXByZXNlbnRhdGlvbikgZm9yIHRoZSByZWxhdGlvbidz IHF1YWxpZnlpbmcgY29uZGl0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9k eT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sCmluZGV4IGZhYTExNGIyYzYuLmNhMDkxYWFlMzMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIxLDggKzIxLDggQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3Bz aXM+Ci1BTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IEFERCBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFssIC4uLl0K LUFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VUIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uXQorQUxU RVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBBREQgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFdIRVJFICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0g WywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFdI RVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiApIF0gWywgLi4uXQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBEUk9QIFRBQkxFIFsgT05MWSBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyAqIF0gWywgLi4uXQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFss IC4uLiBdICkKIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGU+bmV3X293 bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUgfCBDVVJSRU5UX1VTRVIgfCBTRVNT SU9OX1VTRVIgfQpAQCAtOTIsNyArOTIsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8g PHIKICAgICAgIHRhYmxlIG5hbWUsIG9ubHkgdGhhdCB0YWJsZSBpcyBhZmZlY3RlZC4gIElm IDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdAogICAgICAgc3BlY2lmaWVkLCB0aGUg dGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCB0YWJsZXMgKGlmIGFueSkgYXJlCiAgICAg ICBhZmZlY3RlZC4gIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZSBz cGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlCi0gICAgICBuYW1lIHRvIGV4cGxpY2l0bHkgaW5k aWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUgaW5jbHVkZWQuCisgICAgICBuYW1l IHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUgaW5j bHVkZWQuIElmIHRoZQorICAgICAgb3B0aW9uYWwgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+ IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgdGhhdCBkbyBub3QKKyAgICAgIHNhdGlzZnkg dGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gd2lsbAorICAgICAgbm90IGJlIHB1Ymxpc2hlZC4gTm90ZSB0aGF0IHBhcmVudGhl c2VzIGFyZSByZXF1aXJlZCBhcm91bmQgdGhlCisgICAgICBleHByZXNzaW9uLiBUaGUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPgor ICAgICAgaXMgZXhlY3V0ZWQgd2l0aCB0aGUgcm9sZSB1c2VkIGZvciB0aGUgcmVwbGljYXRp b24gY29ubmVjdGlvbi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1Ymxp Y2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21s CmluZGV4IGZmODJmYmNhNTUuLjIxMzY1NDViMDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjIsNyArMjIsNyBAQCBQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CiBDUkVBVEUgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgotICAgIFsgRk9SIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uXQorICAgIFsg Rk9SIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLl0KICAg ICAgIHwgRk9SIEFMTCBUQUJMRVMgXQogICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywg Li4uIF0gKSBdCiA8L3N5bm9wc2lzPgpAQCAtNzEsNiArNzEsMTAgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4KICAgICAgIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gYSBwYXJ0aXRpb25lZCB0YWJsZSwg aG93ZXZlci4gIFRoZSBwYXJ0aXRpb25zIG9mCiAgICAgICBhIHBhcnRpdGlvbmVkIHRhYmxl IGFyZSBhbHdheXMgaW1wbGljaXRseSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlCiAgICAgICBw dWJsaWNhdGlvbiwgc28gdGhleSBhcmUgbmV2ZXIgZXhwbGljaXRseSBhZGRlZCB0byB0aGUg cHVibGljYXRpb24uCisgICAgICBJZiB0aGUgb3B0aW9uYWwgPGxpdGVyYWw+V0hFUkU8L2xp dGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgdGhhdCBkbyAKKyAgICAgIG5vdCBz YXRpc2Z5IHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IAorICAgICAgd2lsbCBub3QgYmUgcHVibGlzaGVkLiBOb3RlIHRoYXQg cGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUgCisgICAgICBleHByZXNzaW9u LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0xMzEsOSArMTM1LDE1IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+CiAgICAgICAgICAgb24gaXRzIHBhcnRpdGlvbnMpIGNvbnRhaW5lZCBp biB0aGUgcHVibGljYXRpb24gd2lsbCBiZSBwdWJsaXNoZWQKICAgICAgICAgICB1c2luZyB0 aGUgaWRlbnRpdHkgYW5kIHNjaGVtYSBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgcmF0aGVy IHRoYW4KICAgICAgICAgICB0aGF0IG9mIHRoZSBpbmRpdmlkdWFsIHBhcnRpdGlvbnMgdGhh dCBhcmUgYWN0dWFsbHkgY2hhbmdlZDsgdGhlCi0gICAgICAgICAgbGF0dGVyIGlzIHRoZSBk ZWZhdWx0LiAgRW5hYmxpbmcgdGhpcyBhbGxvd3MgdGhlIGNoYW5nZXMgdG8gYmUKLSAgICAg ICAgICByZXBsaWNhdGVkIGludG8gYSBub24tcGFydGl0aW9uZWQgdGFibGUgb3IgYSBwYXJ0 aXRpb25lZCB0YWJsZQotICAgICAgICAgIGNvbnNpc3Rpbmcgb2YgYSBkaWZmZXJlbnQgc2V0 IG9mIHBhcnRpdGlvbnMuCisgICAgICAgICAgbGF0dGVyIGlzIHRoZSBkZWZhdWx0ICg8bGl0 ZXJhbD5mYWxzZTwvbGl0ZXJhbD4pLiAgRW5hYmxpbmcgdGhpcworICAgICAgICAgIGFsbG93 cyB0aGUgY2hhbmdlcyB0byBiZSByZXBsaWNhdGVkIGludG8gYSBub24tcGFydGl0aW9uZWQg dGFibGUgb3IgYQorICAgICAgICAgIHBhcnRpdGlvbmVkIHRhYmxlIGNvbnNpc3Rpbmcgb2Yg YSBkaWZmZXJlbnQgc2V0IG9mIHBhcnRpdGlvbnMuCisgICAgICAgICA8L3BhcmE+CisKKyAg ICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVyIGlzIDxsaXRlcmFs PmZhbHNlPC9saXRlcmFsPiwgaXQgdXNlcyB0aGUKKyAgICAgICAgICA8bGl0ZXJhbD5XSEVS RTwvbGl0ZXJhbD4gY2xhdXNlIGZyb20gdGhlIHBhcnRpdGlvbjsgb3RoZXJ3aXNlLCB0aGUK KyAgICAgICAgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGZyb20gdGhlIHBh cnRpdGlvbmVkIHRhYmxlIGlzIHVzZWQuCiAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAg IDxwYXJhPgpAQCAtMTgyLDYgKzE5MiwxMiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgZGlzYWxs b3dlZCBvbiB0aG9zZSB0YWJsZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIENvbHVt bnMgdXNlZCBpbiB0aGUgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBtdXN0IGJl IHBhcnQgb2YgdGhlCisgICBwcmltYXJ5IGtleSBvciBiZSBjb3ZlcmVkIGJ5IDxsaXRlcmFs PlJFUExJQ0EgSURFTlRJVFk8L2xpdGVyYWw+IG90aGVyd2lzZQorICAgPGNvbW1hbmQ+REVM RVRFPC9jb21tYW5kPiBvcGVyYXRpb25zIHdpbGwgbm90IGJlIHJlcGxpY2F0ZWQuCisgIDwv cGFyYT4KKwogICA8cGFyYT4KICAgIEZvciBhbiA8Y29tbWFuZD5JTlNFUlQgLi4uIE9OIENP TkZMSUNUPC9jb21tYW5kPiBjb21tYW5kLCB0aGUgcHVibGljYXRpb24gd2lsbAogICAgcHVi bGlzaCB0aGUgb3BlcmF0aW9uIHRoYXQgYWN0dWFsbHkgcmVzdWx0cyBmcm9tIHRoZSBjb21t YW5kLiAgU28gZGVwZW5kaW5nCkBAIC0xOTcsNiArMjEzLDExIEBAIENSRUFURSBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgIDxwYXJhPgogICAgPGFjcm9ueW0+RERMPC9hY3JvbnltPiBvcGVyYXRpb25zIGFyZSBu b3QgcHVibGlzaGVkLgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+ V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBleHByZXNzaW9uIGlzIGV4ZWN1dGVkIHdpdGggdGhl IHJvbGUgdXNlZAorICAgZm9yIHRoZSByZXBsaWNhdGlvbiBjb25uZWN0aW9uLgorICA8L3Bh cmE+CiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KQEAgLTIwOSw2ICsyMzAsMTMgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gRk9SIFRBQkxFIHVzZXJzLCBkZXBh cnRtZW50czsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAg IENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGZyb20g YWN0aXZlIGRlcGFydG1lbnRzOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FU SU9OIGFjdGl2ZV9kZXBhcnRtZW50cyBGT1IgVEFCTEUgZGVwYXJ0bWVudHMgV0hFUkUgKGFj dGl2ZSBJUyBUUlVFKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFy YT4KICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2Vz IGluIGFsbCB0YWJsZXM6CiA8cHJvZ3JhbWxpc3Rpbmc+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGU4MTJiZWVlMzcuLmI4ZjRlYTU2MDMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0x MDIsNyArMTAyLDEzIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICA8 cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0aGUgZXhpc3RpbmcgZGF0YSBp biB0aGUgcHVibGljYXRpb25zIHRoYXQgYXJlCiAgICAgICAgICAgYmVpbmcgc3Vic2NyaWJl ZCB0byBzaG91bGQgYmUgY29waWVkIG9uY2UgdGhlIHJlcGxpY2F0aW9uIHN0YXJ0cy4KLSAg ICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPi4KKyAgICAg ICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPi4gSWYgYW55IHRh YmxlIGluIHRoZQorICAgICAgICAgIHB1YmxpY2F0aW9ucyBoYXMgYSA8bGl0ZXJhbD5XSEVS RTwvbGl0ZXJhbD4gY2xhdXNlLCByb3dzIHRoYXQgZG8gbm90CisgICAgICAgICAgc2F0aXNm eSB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPgorICAgICAgICAgIHdpbGwgbm90IGJlIGNvcGllZC4gSWYgdGhlIHN1YnNjcmlw dGlvbiBoYXMgc2V2ZXJhbCBwdWJsaWNhdGlvbnMgaW4KKyAgICAgICAgICB3aGljaCBhIHRh YmxlIGhhcyBiZWVuIHB1Ymxpc2hlZCB3aXRoIGRpZmZlcmVudAorICAgICAgICAgIDxsaXRl cmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2VzLCByb3dzIG11c3Qgc2F0aXNmeSBhbGwgZXhw cmVzc2lvbnMKKyAgICAgICAgICB0byBiZSBjb3BpZWQuCiAgICAgICAgICA8L3BhcmE+CiAg ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggODRkMmVmY2ZkMi4uZmQ5NTQ5YTYzMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMzMsNiArMzMsMTEg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xh dXNlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKwogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5o IgpAQCAtMTQxLDE4ICsxNDYsMjAgQEAgcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoUEdf RlVOQ1RJT05fQVJHUykKICAqIEluc2VydCBuZXcgcHVibGljYXRpb24gLyByZWxhdGlvbiBt YXBwaW5nLgogICovCiBPYmplY3RBZGRyZXNzCi1wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24o T2lkIHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCitwdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbGF0aW9uUXVhbCAqdGFyZ2V0cmVsLAogCQkJ CQkJIGJvb2wgaWZfbm90X2V4aXN0cykKIHsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxl CXR1cDsKIAlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uX3JlbF07CiAJYm9v bAkJbnVsbHNbTmF0dHNfcGdfcHVibGljYXRpb25fcmVsXTsKLQlPaWQJCQlyZWxpZCA9IFJl bGF0aW9uR2V0UmVsaWQodGFyZ2V0cmVsKTsKIAlPaWQJCQlwcnJlbGlkOwogCVB1YmxpY2F0 aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbihwdWJpZCk7CiAJT2JqZWN0QWRkcmVzcyBteXNl bGYsCiAJCQkJcmVmZXJlbmNlZDsKKwlQYXJzZVN0YXRlICpwc3RhdGU7CisJUGFyc2VOYW1l c3BhY2VJdGVtICpuc2l0ZW07CisJTm9kZQkgICAqd2hlcmVjbGF1c2U7CiAKIAlyZWwgPSB0 YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CiAKQEAgLTE2MSw3ICsxNjgsNyBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1 YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1 c3QgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2Uu IFRoZSByZWFsIHByb3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cu CiAJICovCi0JaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwg T2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQ VUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bSh0YXJnZXRyZWwtPnJlbGlkKSwK IAkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKSkKIAl7CiAJCXRhYmxlX2Nsb3Nl KHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CkBAIC0xNzIsMTAgKzE3OSwyNyBAQCBwdWJsaWNh dGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwK IAkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVi bGljYXRpb24gXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdl dHJlbCksIHB1Yi0+bmFtZSkpKTsKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRh cmdldHJlbC0+cmVsYXRpb24pLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGlj YXRpb25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbCk7CisJY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKHRhcmdldHJlbC0+cmVsYXRpb24pOworCisJLyogU2V0IHVwIGEgcHN0YXRl IHRvIHBhcnNlIHdpdGggKi8KKwlwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisJ cHN0YXRlLT5wX3NvdXJjZXRleHQgPSBub2RlVG9TdHJpbmcodGFyZ2V0cmVsLT53aGVyZUNs YXVzZSk7CisKKwluc2l0ZW0gPSBhZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxhdGlvbihwc3Rh dGUsIHRhcmdldHJlbC0+cmVsYXRpb24sCisJCQkJCQkJCQkJQWNjZXNzU2hhcmVMb2NrLAor CQkJCQkJCQkJCU5VTEwsIGZhbHNlLCBmYWxzZSk7CisJYWRkTlNJdGVtVG9RdWVyeShwc3Rh dGUsIG5zaXRlbSwgZmFsc2UsIHRydWUsIHRydWUpOworCisJd2hlcmVjbGF1c2UgPSB0cmFu c2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCisJCQkJCQkJCQkgICBjb3B5T2JqZWN0KHRhcmdl dHJlbC0+d2hlcmVDbGF1c2UpLAorCQkJCQkJCQkJICAgRVhQUl9LSU5EX1BVQkxJQ0FUSU9O X1dIRVJFLAorCQkJCQkJCQkJICAgIlBVQkxJQ0FUSU9OIik7CisKKwkvKiBGaXggdXAgY29s bGF0aW9uIGluZm9ybWF0aW9uICovCisJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUs IHdoZXJlY2xhdXNlKTsKIAogCS8qIEZvcm0gYSB0dXBsZS4gKi8KIAltZW1zZXQodmFsdWVz LCAwLCBzaXplb2YodmFsdWVzKSk7CkBAIC0xODcsNyArMjExLDEzIEBAIHB1YmxpY2F0aW9u X2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFJlbGF0aW9uIHRhcmdldHJlbCwKIAl2YWx1ZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJwdWJpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXRE YXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQg LSAxXSA9Ci0JCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCQlPYmplY3RJZEdldERhdHVt KHRhcmdldHJlbC0+cmVsaWQpOworCisJLyogQWRkIHF1YWxpZmljYXRpb25zLCBpZiBhdmFp bGFibGUgKi8KKwlpZiAod2hlcmVjbGF1c2UpCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3JlbF9wcnF1YWwgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5n KHdoZXJlY2xhdXNlKSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3Jl bF9wcnF1YWwgLSAxXSA9IHRydWU7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRp b25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtMjAyLDE0ICsyMzIsMjAg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFyZ2V0 cmVsLAogCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5E RU5DWV9BVVRPKTsKIAogCS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSByZWxhdGlvbiAqLwot CU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCByZWxp ZCk7CisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IHRhcmdldHJlbC0+cmVsaWQpOwogCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVm ZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKIAorCS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRo ZSBvYmplY3RzIG1lbnRpb25lZCBpbiB0aGUgcXVhbGlmaWNhdGlvbnMgKi8KKwlpZiAod2hl cmVjbGF1c2UpCisJCXJlY29yZERlcGVuZGVuY3lPbkV4cHIoJm15c2VsZiwgd2hlcmVjbGF1 c2UsIHBzdGF0ZS0+cF9ydGFibGUsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCWZyZWVfcGFy c2VzdGF0ZShwc3RhdGUpOworCiAJLyogQ2xvc2UgdGhlIHRhYmxlLiAqLwogCXRhYmxlX2Ns b3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKiBJbnZhbGlkYXRlIHJlbGNhY2hl IHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwotCUNhY2hlSW52YWxp ZGF0ZVJlbGNhY2hlKHRhcmdldHJlbCk7CisJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGUodGFy Z2V0cmVsLT5yZWxhdGlvbik7CiAKIAlyZXR1cm4gbXlzZWxmOwogfQpAQCAtMzA0LDYgKzM0 MCw2NCBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0 cyBsaXN0IG9mIFB1YmxpY2F0aW9uUmVsYXRpb25RdWFscyBmb3IgYSBwdWJsaWNhdGlvbi4K KyAqLworTGlzdCAqCitHZXRQdWJsaWNhdGlvblJlbGF0aW9uUXVhbHMoT2lkIHB1YmlkKQor eworCUxpc3QJICAgKnJlc3VsdDsKKwlSZWxhdGlvbglwdWJyZWxzcmVsOworCVNjYW5LZXlE YXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwOworCisJ LyogRmluZCBhbGwgcHVibGljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVsYXRpb24u ICovCisJcHVicmVsc3JlbCA9IHRhYmxlX29wZW4oUHVibGljYXRpb25SZWxSZWxhdGlvbklk LCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJnNjYW5rZXksCisJCQkJQW51 bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJwdWJpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCisJc2NhbiA9 IHN5c3RhYmxlX2JlZ2luc2NhbihwdWJyZWxzcmVsLCBQdWJsaWNhdGlvblJlbFBycmVsaWRQ cnB1YmlkSW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKKwor CXJlc3VsdCA9IE5JTDsKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJs ZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJl bDsKKwkJUHVibGljYXRpb25SZWxhdGlvblF1YWwgKnBycTsKKwkJRGF0dW0JCXZhbHVlX2Rh dHVtOworCQljaGFyCSAgICpxdWFsX3ZhbHVlOworCQlOb2RlCSAgICpxdWFsX2V4cHI7CisJ CWJvb2wJCWlzbnVsbDsKKworCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwp IEdFVFNUUlVDVCh0dXApOworCisJCXZhbHVlX2RhdHVtID0gaGVhcF9nZXRhdHRyKHR1cCwg QW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLCBSZWxhdGlvbkdldERlc2NyKHB1YnJl bHNyZWwpLCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCXsKKwkJCXF1YWxfdmFsdWUg PSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbHVlX2RhdHVtKTsKKwkJCXF1YWxfZXhwciA9IChO b2RlICopIHN0cmluZ1RvTm9kZShxdWFsX3ZhbHVlKTsKKwkJfQorCQllbHNlCisJCQlxdWFs X2V4cHIgPSBOVUxMOworCisJCXBycSA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxh dGlvblF1YWwpKTsKKwkJcHJxLT5yZWxpZCA9IHB1YnJlbC0+cHJyZWxpZDsKKwkJLyogdGFi bGUgd2lsbCBiZSBvcGVuZWQgaW4gQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyAqLworCQlwcnEt PnJlbGF0aW9uID0gTlVMTDsKKwkJcHJxLT53aGVyZUNsYXVzZSA9IHF1YWxfZXhwcjsKKwkJ cmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIHBycSk7CisJfQorCisJc3lzdGFibGVfZW5kc2Nh bihzY2FuKTsKKwl0YWJsZV9jbG9zZShwdWJyZWxzcmVsLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlv biBvaWRzIGZvciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBBTEwgVEFCTEVTLgogICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDk1YzI1M2M4 ZTAuLmE1ZWNjYmJmYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCkBAIC0zNzIsNiArMzcyLDI4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIFJlbGF0aW9uIHJlbCwKIAogCUFzc2VydChsaXN0X2xl bmd0aChzdG10LT50YWJsZXMpID4gMCk7CiAKKwkvKgorCSAqIEFsdGhvdWdoIEFMVEVSIFBV QkxJQ0FUSU9OIGdyYW1tYXIgYWxsb3dzIFdIRVJFIGNsYXVzZSB0byBiZSBzcGVjaWZpZWQK KwkgKiBmb3IgRFJPUCBUQUJMRSBhY3Rpb24sIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBh bGxvdyBpdC4gV2UgaW1wbGVtZW50CisJICogdGhpcyByZXN0cmljdGlvbiBoZXJlLCBpbnN0 ZWFkIG9mIGNvbXBsaWNhdGluZyB0aGUgZ3JhbW1hciB0byBlbmZvcmNlCisJICogaXQuCisJ ICovCisJaWYgKHN0bXQtPnRhYmxlQWN0aW9uID09IERFRkVMRU1fRFJPUCkKKwl7CisJCUxp c3RDZWxsICAgKmxjOworCisJCWZvcmVhY2gobGMsIHN0bXQtPnRhYmxlcykKKwkJeworCQkJ UHVibGljYXRpb25UYWJsZSAqdCA9IGxmaXJzdChsYyk7CisKKwkJCWlmICh0LT53aGVyZUNs YXVzZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJjYW5ub3Qg dXNlIGEgV0hFUkUgY2xhdXNlIHdoZW4gcmVtb3ZpbmcgdGFibGUgZnJvbSBwdWJsaWNhdGlv biBcIiVzXCIiLAorCQkJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSkpOworCQl9 CisJfQorCiAJcmVscyA9IE9wZW5UYWJsZUxpc3Qoc3RtdC0+dGFibGVzKTsKIAogCWlmIChz dG10LT50YWJsZUFjdGlvbiA9PSBERUZFTEVNX0FERCkKQEAgLTM4OSwyNyArNDExLDIyIEBA IEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIFJl bGF0aW9uIHJlbCwKIAkJZm9yZWFjaChvbGRsYywgb2xkcmVsaWRzKQogCQl7CiAJCQlPaWQJ CQlvbGRyZWxpZCA9IGxmaXJzdF9vaWQob2xkbGMpOwotCQkJTGlzdENlbGwgICAqbmV3bGM7 Ci0JCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJUHVibGljYXRpb25SZWxhdGlvblF1YWwg Km9sZHJlbDsKIAotCQkJZm9yZWFjaChuZXdsYywgcmVscykKLQkJCXsKLQkJCQlSZWxhdGlv bgluZXdyZWwgPSAoUmVsYXRpb24pIGxmaXJzdChuZXdsYyk7CisJCQkvKgorCQkJICogUmVt b3ZlIGFsbCBwdWJsaWNhdGlvbi10YWJsZSBtYXBwaW5ncy4gIFdlIGNvdWxkIHBvc3NpYmx5 CisJCQkgKiByZW1vdmUgKGkpIHRhYmxlcyB0aGF0IGFyZSBub3QgZm91bmQgaW4gdGhlIG5l dyB0YWJsZSBsaXN0IGFuZAorCQkJICogKGlpKSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgcmUt YWRkZWQgd2l0aCBhIGRpZmZlcmVudCBxdWFsCisJCQkgKiBleHByZXNzaW9uLiBGb3IgKGlp KSwgc2ltcGx5IHVwZGF0aW5nIHRoZSBleGlzdGluZyB0dXBsZSBpcyBub3QKKwkJCSAqIGVu b3VnaCwgYmVjYXVzZSBvZiBxdWFsIGV4cHJlc3Npb24gZGVwZW5kZW5jaWVzLgorCQkJICov CisJCQlvbGRyZWwgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVsYXRpb25RdWFsKSk7 CisJCQlvbGRyZWwtPnJlbGlkID0gb2xkcmVsaWQ7CisJCQlvbGRyZWwtPndoZXJlQ2xhdXNl ID0gTlVMTDsKKwkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbC0+cmVs aWQsCisJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCi0JCQkJaWYg KFJlbGF0aW9uR2V0UmVsaWQobmV3cmVsKSA9PSBvbGRyZWxpZCkKLQkJCQl7Ci0JCQkJCWZv dW5kID0gdHJ1ZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCi0JCQlpZiAoIWZvdW5k KQotCQkJewotCQkJCVJlbGF0aW9uCW9sZHJlbCA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCi0J CQkJCQkJCQkJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwotCi0JCQkJZGVscmVscyA9 IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKLQkJCX0KKwkJCWRlbHJlbHMgPSBsYXBwZW5k KGRlbHJlbHMsIG9sZHJlbCk7CiAJCX0KIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwpAQCAt NTA5LDEzICs1MjYsMTUgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJTGlzdAkg ICAqcmVsaWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CiAJTGlzdENlbGwgICAq bGM7CisJUHVibGljYXRpb25SZWxhdGlvblF1YWwgKnBycTsKIAogCS8qCiAJICogT3Blbiwg c2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0aGUgZXhwbGljaXRseS1zcGVjaWZpZWQgcmVs YXRpb25zCiAJICovCiAJZm9yZWFjaChsYywgdGFibGVzKQogCXsKLQkJUmFuZ2VWYXIgICAq cnYgPSBjYXN0Tm9kZShSYW5nZVZhciwgbGZpcnN0KGxjKSk7CisJCVB1YmxpY2F0aW9uVGFi bGUgKnQgPSBsZmlyc3QobGMpOworCQlSYW5nZVZhciAgICpydiA9IGNhc3ROb2RlKFJhbmdl VmFyLCB0LT5yZWxhdGlvbik7CiAJCWJvb2wJCXJlY3Vyc2UgPSBydi0+aW5oOwogCQlSZWxh dGlvbglyZWw7CiAJCU9pZAkJCW15cmVsaWQ7CkBAIC01MzgsOCArNTU3LDExIEBAIE9wZW5U YWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQkJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVwZGF0 ZUV4Y2x1c2l2ZUxvY2spOwogCQkJY29udGludWU7CiAJCX0KLQotCQlyZWxzID0gbGFwcGVu ZChyZWxzLCByZWwpOworCQlwcnEgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVsYXRp b25RdWFsKSk7CisJCXBycS0+cmVsaWQgPSBteXJlbGlkOworCQlwcnEtPnJlbGF0aW9uID0g cmVsOworCQlwcnEtPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CisJCXJlbHMgPSBs YXBwZW5kKHJlbHMsIHBycSk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgbXly ZWxpZCk7CiAKIAkJLyoKQEAgLTU3Miw3ICs1OTQsMTIgQEAgT3BlblRhYmxlTGlzdChMaXN0 ICp0YWJsZXMpCiAKIAkJCQkvKiBmaW5kX2FsbF9pbmhlcml0b3JzIGFscmVhZHkgZ290IGxv Y2sgKi8KIAkJCQlyZWwgPSB0YWJsZV9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7Ci0JCQkJ cmVscyA9IGxhcHBlbmQocmVscywgcmVsKTsKKwkJCQlwcnEgPSBwYWxsb2Moc2l6ZW9mKFB1 YmxpY2F0aW9uUmVsYXRpb25RdWFsKSk7CisJCQkJcHJxLT5yZWxpZCA9IGNoaWxkcmVsaWQ7 CisJCQkJcHJxLT5yZWxhdGlvbiA9IHJlbDsKKwkJCQkvKiBjaGlsZCBpbmhlcml0cyBXSEVS RSBjbGF1c2UgZnJvbSBwYXJlbnQgKi8KKwkJCQlwcnEtPndoZXJlQ2xhdXNlID0gdC0+d2hl cmVDbGF1c2U7CisJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHJxKTsKIAkJCQlyZWxpZHMg PSBsYXBwZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCQkJfQogCQl9CkBAIC01OTMs MTAgKzYyMCwxMiBAQCBDbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKQogCiAJZm9yZWFjaChs YywgcmVscykKIAl7Ci0JCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxjKTsK KwkJUHVibGljYXRpb25SZWxhdGlvblF1YWwgKnBycSA9IChQdWJsaWNhdGlvblJlbGF0aW9u UXVhbCAqKSBsZmlyc3QobGMpOwogCi0JCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJ dGFibGVfY2xvc2UocHJxLT5yZWxhdGlvbiwgTm9Mb2NrKTsKIAl9CisKKwlsaXN0X2ZyZWVf ZGVlcChyZWxzKTsKIH0KIAogLyoKQEAgLTYxMiwxNSArNjQxLDE1IEBAIFB1YmxpY2F0aW9u QWRkVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAog CiAJZm9yZWFjaChsYywgcmVscykKIAl7Ci0JCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlvbikg bGZpcnN0KGxjKTsKKwkJUHVibGljYXRpb25SZWxhdGlvblF1YWwgKnBycSA9IChQdWJsaWNh dGlvblJlbGF0aW9uUXVhbCAqKSBsZmlyc3QobGMpOwogCQlPYmplY3RBZGRyZXNzIG9iajsK IAogCQkvKiBNdXN0IGJlIG93bmVyIG9mIHRoZSB0YWJsZSBvciBzdXBlcnVzZXIuICovCi0J CWlmICghcGdfY2xhc3Nfb3duZXJjaGVjayhSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdldFVz ZXJJZCgpKSkKLQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3Jl bGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCi0JCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKwkJaWYgKCFwZ19jbGFzc19vd25lcmNoZWNrKHBy cS0+cmVsaWQsIEdldFVzZXJJZCgpKSkKKwkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05P VF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShwcnEtPnJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQpLAorCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHJxLT5yZWxhdGlv bikpOwogCi0JCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwdWJpZCwgcmVsLCBp Zl9ub3RfZXhpc3RzKTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1Ymlk LCBwcnEsIGlmX25vdF9leGlzdHMpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmln Z2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKQEAg LTY0NCwxMSArNjczLDEwIEBAIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExp c3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIAogCWZvcmVhY2gobGMsIHJlbHMpCiAJewot CQlSZWxhdGlvbglyZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsYyk7Ci0JCU9pZAkJCXJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uUXVhbCAq cHJxID0gKFB1YmxpY2F0aW9uUmVsYXRpb25RdWFsICopIGxmaXJzdChsYyk7CiAKIAkJcHJp ZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfb2lkLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHJxLT5yZWxpZCksCiAJCQkJCQkJICAgT2JqZWN0 SWRHZXREYXR1bShwdWJpZCkpOwogCQlpZiAoIU9pZElzVmFsaWQocHJpZCkpCiAJCXsKQEAg LTY1OCw3ICs2ODYsNyBAQCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0 ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJCQkgZXJybXNnKCJyZWxhdGlv biBcIiVzXCIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIiwKLQkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHBycS0+cmVsYXRpb24pKSkpOwogCQl9CiAKIAkJT2JqZWN0QWRkcmVzc1NldChv YmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJpZCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCBlY2ZkOThiYTViLi41NGQ4ZjI2YTY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQxNiwxMiAr NDE2LDEyIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3JtX2Vs ZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25z IFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QKKwkJCQlkcm9wX29wdGlv bl9saXN0IHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAogJXR5cGUgPGxpc3Q+CWdyb3VwX2J5 X2xpc3QKICV0eXBlIDxub2RlPglncm91cF9ieV9pdGVtIGVtcHR5X2dyb3VwaW5nX3NldCBy b2xsdXBfY2xhdXNlIGN1YmVfY2xhdXNlCiAldHlwZSA8bm9kZT4JZ3JvdXBpbmdfc2V0c19j bGF1c2UKLSV0eXBlIDxub2RlPglvcHRfcHVibGljYXRpb25fZm9yX3RhYmxlcyBwdWJsaWNh dGlvbl9mb3JfdGFibGVzCisldHlwZSA8bm9kZT4Jb3B0X3B1YmxpY2F0aW9uX2Zvcl90YWJs ZXMgcHVibGljYXRpb25fZm9yX3RhYmxlcyBwdWJsaWNhdGlvbl90YWJsZV9lbGVtCiAKICV0 eXBlIDxsaXN0PglvcHRfZmR3X29wdGlvbnMgZmR3X29wdGlvbnMKICV0eXBlIDxkZWZlbHQ+ CWZkd19vcHRpb24KQEAgLTM4MDYsNyArMzgwNiw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJ CQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJCQl8IEVYQ0xVREUgYWNjZXNzX21ldGhvZF9j bGF1c2UgJygnIEV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0ICcpJwotCQkJCW9wdF9jX2luY2x1 ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UgIE9wdFdoZXJlQ2xhdXNlCisJ CQkJb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZSBPcHRX aGVyZUNsYXVzZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlD b25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC05NDk5LDcgKzk0OTks NyBAQCBvcHRfcHVibGljYXRpb25fZm9yX3RhYmxlczoKIAkJOwogCiBwdWJsaWNhdGlvbl9m b3JfdGFibGVzOgotCQkJRk9SIFRBQkxFIHJlbGF0aW9uX2V4cHJfbGlzdAorCQkJRk9SIFRB QkxFIHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikg JDM7CiAJCQkJfQpAQCAtOTUzMCw3ICs5NTMwLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6 CiAJCQkJCW4tPm9wdGlvbnMgPSAkNTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQot CQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIEFERF9QIFRBQkxFIHJlbGF0aW9uX2V4cHJf bGlzdAorCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIEFERF9QIFRBQkxFIHB1YmxpY2F0 aW9uX3RhYmxlX2xpc3QKIAkJCQl7CiAJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0g bWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOwogCQkJCQluLT5wdWJuYW1lID0gJDM7 CkBAIC05NTM4LDcgKzk1MzgsNyBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+ dGFibGVBY3Rpb24gPSBERUZFTEVNX0FERDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJ fQotCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFNFVCBUQUJMRSByZWxhdGlvbl9leHBy X2xpc3QKKwkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgVEFCTEUgcHVibGljYXRp b25fdGFibGVfbGlzdAogCQkJCXsKIAkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBt YWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsK QEAgLTk1NDYsNyArOTU0Niw3IEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT50 YWJsZUFjdGlvbiA9IERFRkVMRU1fU0VUOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9 Ci0JCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBUQUJMRSByZWxhdGlvbl9leHBy X2xpc3QKKwkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBEUk9QIFRBQkxFIHB1YmxpY2F0 aW9uX3RhYmxlX2xpc3QKIAkJCQl7CiAJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0g bWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOwogCQkJCQluLT5wdWJuYW1lID0gJDM7 CkBAIC05NTU2LDYgKzk1NTYsMjAgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJfQog CQk7CiAKK3B1YmxpY2F0aW9uX3RhYmxlX2xpc3Q6CisJCQlwdWJsaWNhdGlvbl90YWJsZV9l bGVtCQkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1YmxpY2F0aW9u X3RhYmxlX2xpc3QgJywnIHB1YmxpY2F0aW9uX3RhYmxlX2VsZW0JCXsgJCQgPSBsYXBwZW5k KCQxLCAkMyk7IH0KKwkJOworCitwdWJsaWNhdGlvbl90YWJsZV9lbGVtOiByZWxhdGlvbl9l eHByIE9wdFdoZXJlQ2xhdXNlCisJCQkJeworCQkJCQlQdWJsaWNhdGlvblRhYmxlICpuID0g bWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJCW4tPnJlbGF0aW9uID0gJDE7CisJ CQkJCW4tPndoZXJlQ2xhdXNlID0gJDI7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9 CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQ1JFQVRFIFNVQlND UklQVElPTiBuYW1lIC4uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IGZkMDhiOWVl ZmYuLjA2YjE4NGY0MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9h Z2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU0NCw2ICs1 NDQsMTMgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKmV4cHIpCiAJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gQ09QWSBGUk9NIFdIRVJFIGNvbmRpdGlvbnMiKTsKIAogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJaWYgKGlz QWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJy ID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHVibGljYXRp b24gV0hFUkUgZXhwcmVzc2lvbnMiKTsKKworCQkJYnJlYWs7CiAKIAkJY2FzZSBFWFBSX0tJ TkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwpAQCAtOTQwLDYgKzk0Nyw5IEBA IHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVu YyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0g dHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToK KwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1Ymxp Y2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAq IFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggNmM4Nzc4M2IyYy4uNGI0ZmIw ZGM0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xMTksNiArMTE5LDEzIEBA IHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikK IAkvKiBHdWFyZCBhZ2FpbnN0IHN0YWNrIG92ZXJmbG93IGR1ZSB0byBvdmVybHkgY29tcGxl eCBleHByZXNzaW9ucyAqLwogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKKwkvKiBGdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGNsYXVzZXMgKi8KKwlp ZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUg JiYgbm9kZVRhZyhleHByKSA9PSBUX0Z1bmNDYWxsKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNn KCJmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJl c3Npb25zIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlv bihleHByKSkpKTsKKwogCXN3aXRjaCAobm9kZVRhZyhleHByKSkKIAl7CiAJCWNhc2UgVF9D b2x1bW5SZWY6CkBAIC01MDgsNiArNTE1LDcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9DT1BZ X1dIRVJFOgogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQljYXNlIEVY UFJfS0lORF9DWUNMRV9NQVJLOgorCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVS RToKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCkBAIC0xNzY1LDYgKzE3NzMsOSBAQCB0 cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykK IAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNhbm5v dCB1c2Ugc3VicXVlcnkgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJZXJyID0g XygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9u Iik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkg bm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzA0OCw2ICszMDU5LDgg QEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVy biAiR0VORVJBVEVEIEFTIjsKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCXJl dHVybiAiQ1lDTEUiOworCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJ CXJldHVybiAicHVibGljYXRpb24gZXhwcmVzc2lvbiI7CiAKIAkJCS8qCiAJCQkgKiBUaGVy ZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDM3Y2ViYzdkODIuLmJmOTA5ZDZlZDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjUzMCw2ICsyNTMwLDkgQEAgY2hl Y2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9z cmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVy cmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9O X1dIRVJFOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsK IAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKaW5kZXggYTE4Zjg0N2FkZS4uNjNkMDBhNzVlZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC02MzAsMTkg KzYzMCwyNSBAQCBjb3B5X3JlYWRfZGF0YSh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBp bnQgbWF4cmVhZCkKIAogLyoKICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCByZW1vdGUgcmVs YXRpb24gaW4gc2ltaWxhciBmYXNoaW9uIHRoZSBSRUxBVElPTgotICogbWVzc2FnZSBwcm92 aWRlcyBkdXJpbmcgcmVwbGljYXRpb24uCisgKiBtZXNzYWdlIHByb3ZpZGVzIGR1cmluZyBy ZXBsaWNhdGlvbi4gVGhpcyBmdW5jdGlvbiBhbHNvIHJldHVybnMgdGhlIHJlbGF0aW9uCisg KiBxdWFsaWZpY2F0aW9ucyB0byBiZSB1c2VkIGluIENPUFkgY29tbWFuZC4KICAqLwogc3Rh dGljIHZvaWQKIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIg KnJlbG5hbWUsCi0JCQkJCQlMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwpCisJCQkJCQlMb2dp Y2FsUmVwUmVsYXRpb24gKmxyZWwsIExpc3QgKipxdWFsKQogewogCVdhbFJjdkV4ZWNSZXN1 bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7 CiAJT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUR9OwogCU9p ZAkJCWF0dHJSb3dbXSA9IHtURVhUT0lELCBPSURPSUQsIEJPT0xPSUR9OworCU9pZAkJCXF1 YWxSb3dbXSA9IHtURVhUT0lEfTsKIAlib29sCQlpc251bGw7CiAJaW50CQkJbmF0dDsKKwlM aXN0Q2VsbCAgICpsYzsKKwlib29sCQlmaXJzdDsKKworCW1lbXNldChscmVsLCAwLCBzaXpl b2YoTG9naWNhbFJlcFJlbGF0aW9uKSk7CiAKIAlscmVsLT5uc3BuYW1lID0gbnNwbmFtZTsK IAlscmVsLT5yZWxuYW1lID0gcmVsbmFtZTsKQEAgLTczMSw2ICs3MzcsNTEgQEAgZmV0Y2hf cmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAogCWxy ZWwtPm5hdHRzID0gbmF0dDsKIAorCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKworCS8q IEdldCByZWxhdGlvbiBxdWFsICovCisJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVu ZFN0cmluZ0luZm8oJmNtZCwKKwkJCQkJICJTRUxFQ1QgcGdfZ2V0X2V4cHIocHJxdWFsLCBw cnJlbGlkKSAiCisJCQkJCSAiICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAgIgorCQkJCQkgIiAg SU5ORVIgSk9JTiBwZ19wdWJsaWNhdGlvbl9yZWwgcHIgIgorCQkJCQkgIiAgICAgICBPTiAo cC5vaWQgPSBwci5wcnB1YmlkKSAiCisJCQkJCSAiIFdIRVJFIHByLnBycmVsaWQgPSAldSAi CisJCQkJCSAiICAgQU5EIHAucHVibmFtZSBJTiAoIiwgbHJlbC0+cmVtb3RlaWQpOworCisJ Zmlyc3QgPSB0cnVlOworCWZvcmVhY2gobGMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlv bnMpCisJeworCQljaGFyCSAgICpwdWJuYW1lID0gc3RyVmFsKGxmaXJzdChsYykpOworCisJ CWlmIChmaXJzdCkKKwkJCWZpcnN0ID0gZmFsc2U7CisJCWVsc2UKKwkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmNtZCwgIiwgIik7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLCBxdW90ZV9saXRlcmFsX2NzdHIocHVibmFtZSkpOworCX0KKwlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmY21kLCAnKScpOworCisJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25uLCBjbWQu ZGF0YSwgMSwgcXVhbFJvdyk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RV UExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgZmV0Y2gg cmVsYXRpb24gcXVhbGlmaWNhdGlvbnMgZm9yIHRhYmxlIFwiJXMuJXNcIiBmcm9tIHB1Ymxp c2hlcjogJXMiLAorCQkJCQkJbnNwbmFtZSwgcmVsbmFtZSwgcmVzLT5lcnIpKSk7CisKKwlz bG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3Bz TWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50 dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkpCisJeworCQlEYXR1bQkJcmYgPSBzbG90 X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCk7CisKKwkJaWYgKCFpc251bGwpCisJCQkqcXVh bCA9IGxhcHBlbmQoKnF1YWwsIG1ha2VTdHJpbmcoVGV4dERhdHVtR2V0Q1N0cmluZyhyZikp KTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChzbG90KTsKKwogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKIAlwZnJl ZShjbWQuZGF0YSk7CiB9CkBAIC03NDUsNiArNzk2LDcgQEAgY29weV90YWJsZShSZWxhdGlv biByZWwpCiB7CiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKIAlMb2dp Y2FsUmVwUmVsYXRpb24gbHJlbDsKKwlMaXN0CSAgICpxdWFsID0gTklMOwogCVdhbFJjdkV4 ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJQ29weUZyb21TdGF0ZSBj c3RhdGU7CkBAIC03NTMsNyArODA1LDcgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAK IAkvKiBHZXQgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwogCWZldGNoX3JlbW90 ZV90YWJsZV9pbmZvKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShy ZWwpKSwKLQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCk7CisJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwsICZxdWFsKTsKIAog CS8qIFB1dCB0aGUgcmVsYXRpb24gaW50byByZWxtYXAuICovCiAJbG9naWNhbHJlcF9yZWxt YXBfdXBkYXRlKCZscmVsKTsKQEAgLTc2MiwxNiArODE0LDIzIEBAIGNvcHlfdGFibGUoUmVs YXRpb24gcmVsKQogCXJlbG1hcGVudHJ5ID0gbG9naWNhbHJlcF9yZWxfb3BlbihscmVsLnJl bW90ZWlkLCBOb0xvY2spOwogCUFzc2VydChyZWwgPT0gcmVsbWFwZW50cnktPmxvY2FscmVs KTsKIAorCS8qIExpc3Qgb2YgY29sdW1ucyBmb3IgQ09QWSAqLworCWF0dG5hbWVsaXN0ID0g bWFrZV9jb3B5X2F0dG5hbWVsaXN0KHJlbG1hcGVudHJ5KTsKKwogCS8qIFN0YXJ0IGNvcHkg b24gdGhlIHB1Ymxpc2hlci4gKi8KIAlpbml0U3RyaW5nSW5mbygmY21kKTsKLQlpZiAobHJl bC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pCisKKwkvKiBSZWd1bGFyIHRhYmxlIHdp dGggbm8gcm93IGZpbHRlciAqLworCWlmIChscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9SRUxB VElPTiAmJiBsaXN0X2xlbmd0aChxdWFsKSA9PSAwKQogCQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsICJDT1BZICVzIFRPIFNURE9VVCIsCiAJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50 aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKIAllbHNlCiAJewogCQkvKgog CQkgKiBGb3Igbm9uLXRhYmxlcywgd2UgbmVlZCB0byBkbyBDT1BZIChTRUxFQ1QgLi4uKSwg YnV0IHdlIGNhbid0IGp1c3QKLQkJICogZG8gU0VMRUNUICogYmVjYXVzZSB3ZSBuZWVkIHRv IG5vdCBjb3B5IGdlbmVyYXRlZCBjb2x1bW5zLgorCQkgKiBkbyBTRUxFQ1QgKiBiZWNhdXNl IHdlIG5lZWQgdG8gbm90IGNvcHkgZ2VuZXJhdGVkIGNvbHVtbnMuIEZvcgorCQkgKiB0YWJs ZXMgd2l0aCBhbnkgcm93IGZpbHRlcnMsIGJ1aWxkIGEgU0VMRUNUIHF1ZXJ5IHdpdGggQU5E J2VkIHJvdworCQkgKiBmaWx0ZXJzIGZvciBDT1BZLgogCQkgKi8KIAkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLCAiQ09QWSAoU0VMRUNUICIpOwogCQlmb3IgKGludCBpID0gMDsg aSA8IGxyZWwubmF0dHM7IGkrKykKQEAgLTc4MCw5ICs4MzksMzEgQEAgY29weV90YWJsZShS ZWxhdGlvbiByZWwpCiAJCQlpZiAoaSA8IGxyZWwubmF0dHMgLSAxKQogCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgIik7CiAJCX0KLQkJYXBwZW5kU3RyaW5nSW5mbygm Y21kLCAiIEZST00gJXMpIFRPIFNURE9VVCIsCisJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwg IiBGUk9NICVzIiwKIAkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihscmVsLm5z cG5hbWUsIGxyZWwucmVsbmFtZSkpOworCQkvKiBsaXN0IG9mIEFORCdlZCBmaWx0ZXJzICov CisJCWlmIChsaXN0X2xlbmd0aChxdWFsKSA+IDApCisJCXsKKwkJCUxpc3RDZWxsICAgKmxj OworCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZjbWQsICIgV0hFUkUgIik7CisJCQlmb3JlYWNoKGxjLCBxdWFsKQorCQkJeworCQkJCWNo YXIJICAgKnEgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisKKwkJCQlpZiAoZmlyc3QpCisJCQkJ CWZpcnN0ID0gZmFsc2U7CisJCQkJZWxzZQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZjbWQsICIgQU5EICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiVzIiwgcSk7 CisJCQl9CisJCQlsaXN0X2ZyZWVfZGVlcChxdWFsKTsKKwkJfQorCisJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmNtZCwgIikgVE8gU1RET1VUIik7CiAJfQorCiAJcmVzID0gd2FscmN2 X2V4ZWMod3Jjb25uLCBjbWQuZGF0YSwgMCwgTlVMTCk7CiAJcGZyZWUoY21kLmRhdGEpOwog CWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9PVVQpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBlYjdkYjg5Y2VmLi42MDkyYWUw ZGYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAg LTM0MCw4ICszNDAsOCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJl cE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAgKgogICogVGhpcyBpcyBiYXNlZCBv biBzaW1pbGFyIGNvZGUgaW4gY29weS5jCiAgKi8KLXN0YXRpYyBFU3RhdGUgKgotY3JlYXRl X2VzdGF0ZV9mb3JfcmVsYXRpb24oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCitFU3Rh dGUgKgorY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogewogCUVT dGF0ZQkgICAqZXN0YXRlOwogCVJhbmdlVGJsRW50cnkgKnJ0ZTsKQEAgLTM1MCw4ICszNTAs OCBAQCBjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbCkKIAogCXJ0ZSA9IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkpOwogCXJ0ZS0+cnRla2lu ZCA9IFJURV9SRUxBVElPTjsKLQlydGUtPnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwt PmxvY2FscmVsKTsKLQlydGUtPnJlbGtpbmQgPSByZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJl bGtpbmQ7CisJcnRlLT5yZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwlydGUtPnJl bGtpbmQgPSByZWwtPnJkX3JlbC0+cmVsa2luZDsKIAlydGUtPnJlbGxvY2ttb2RlID0gQWNj ZXNzU2hhcmVMb2NrOwogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEo cnRlKSk7CiAKQEAgLTExNzYsNyArMTE3Niw3IEBAIGFwcGx5X2hhbmRsZV9pbnNlcnQoU3Ry aW5nSW5mbyBzKQogCX0KIAogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAq LwotCWVzdGF0ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJlbCk7CisJZXN0YXRl ID0gY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24ocmVsLT5sb2NhbHJlbCk7CiAJcmVtb3Rl c2xvdCA9IEV4ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLAogCQkJCQkJCQkJCVJlbGF0 aW9uR2V0RGVzY3IocmVsLT5sb2NhbHJlbCksCiAJCQkJCQkJCQkJJlRUU09wc1ZpcnR1YWwp OwpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZv IHMpCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKIAkvKiBJbml0aWFsaXpl IHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KLQllc3RhdGUgPSBjcmVhdGVfZXN0YXRlX2Zvcl9y ZWxhdGlvbihyZWwpOworCWVzdGF0ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJl bC0+bG9jYWxyZWwpOwogCXJlbW90ZXNsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVz dGF0ZSwKIAkJCQkJCQkJCQlSZWxhdGlvbkdldERlc2NyKHJlbC0+bG9jYWxyZWwpLAogCQkJ CQkJCQkJCSZUVFNPcHNWaXJ0dWFsKTsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIGFwcGx5X2hh bmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShy ZWwpOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCi0JZXN0YXRl ID0gY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24ocmVsKTsKKwllc3RhdGUgPSBjcmVhdGVf ZXN0YXRlX2Zvcl9yZWxhdGlvbihyZWwtPmxvY2FscmVsKTsKIAlyZW1vdGVzbG90ID0gRXhl Y0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsCiAJCQkJCQkJCQkJUmVsYXRpb25HZXREZXNj cihyZWwtPmxvY2FscmVsKSwKIAkJCQkJCQkJCQkmVFRTT3BzVmlydHVhbCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA3OTc2NWY5 Njk2Li5kZDZmM2JkYTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0 cHV0L3Bnb3V0cHV0LmMKQEAgLTE1LDEyICsxNSwyMiBAQAogI2luY2x1ZGUgImFjY2Vzcy90 dXBjb252ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgog I2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKyNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5o IgorI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIv cGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Bnb3V0cHV0LmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9pbnQ4LmgiCiAjaW5jbHVkZSAidXRpbHMv aW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKQEAgLTU3LDYgKzY3LDgg QEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiBzdGF0aWMgdm9pZCBwZ291dHB1dF9zdHJlYW1fY29tbWl0 KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJICAgWExvZ1JlY1B0ciBjb21taXRfbHNuKTsK K3N0YXRpYyBib29sIHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhl YXBUdXBsZSBvbGR0dXBsZSwKKwkJCQkJCQkJSGVhcFR1cGxlIG5ld3R1cGxlLCBMaXN0ICpy b3dmaWx0ZXIpOwogCiBzdGF0aWMgYm9vbCBwdWJsaWNhdGlvbnNfdmFsaWQ7CiBzdGF0aWMg Ym9vbCBpbl9zdHJlYW1pbmc7CkBAIC05OCw2ICsxMTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBS ZWxhdGlvblN5bmNFbnRyeQogCiAJYm9vbAkJcmVwbGljYXRlX3ZhbGlkOwogCVB1YmxpY2F0 aW9uQWN0aW9ucyBwdWJhY3Rpb25zOworCUxpc3QJICAgKnF1YWw7CiAKIAkvKgogCSAqIE9J RCBvZiB0aGUgcmVsYXRpb24gdG8gcHVibGlzaCBjaGFuZ2VzIGFzLiAgRm9yIGEgcGFydGl0 aW9uLCB0aGlzIG1heQpAQCAtMTIxLDcgKzEzNCw3IEBAIHN0YXRpYyBIVEFCICpSZWxhdGlv blN5bmNDYWNoZSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIGluaXRfcmVsX3N5bmNfY2FjaGUo TWVtb3J5Q29udGV4dCBkZWNvZGluZ19jb250ZXh0KTsKIHN0YXRpYyB2b2lkIGNsZWFudXBf cmVsX3N5bmNfY2FjaGUoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNfY29tbWl0KTsKLXN0 YXRpYyBSZWxhdGlvblN5bmNFbnRyeSAqZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgT2lkIHJlbGlkKTsKK3N0YXRpYyBSZWxhdGlvblN5bmNFbnRyeSAqZ2V0X3Jl bF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsKTsKIHN0YXRp YyB2b2lkIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlk KTsKIHN0YXRpYyB2b2lkIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFy ZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJICB1aW50MzIgaGFzaHZhbHVlKTsKQEAgLTQ4 OSw2ICs1MDIsOTkgQEAgc2VuZF9yZWxhdGlvbl9hbmRfYXR0cnMoUmVsYXRpb24gcmVsYXRp b24sIFRyYW5zYWN0aW9uSWQgeGlkLAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgZmFsc2Up OwogfQogCisvKgorICogRXZhbHVhdGVzIHJvdyBmaWx0ZXIuCisgKgorICogSWYgdGhlIHJv dyBmaWx0ZXIgZXZhbHVhdGVzIHRvIE5VTEwsIGl0IGlzIHRha2VuIGFzIGZhbHNlIGkuZS4g dGhlIGNoYW5nZQorICogaXNuJ3QgcmVwbGljYXRlZC4KKyAqLworc3RhdGljIGlubGluZSBi b29sCitwZ291dHB1dF9yb3dfZmlsdGVyX2V4ZWNfZXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJRGF0dW0JCXJldDsKKwlib29sCQlpc251bGw7 CisKKwlBc3NlcnQoc3RhdGUgIT0gTlVMTCk7CisKKwlyZXQgPSBFeGVjRXZhbEV4cHJTd2l0 Y2hDb250ZXh0KHN0YXRlLCBlY29udGV4dCwgJmlzbnVsbCk7CisKKwlpZiAoaXNudWxsKQor CQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gRGF0dW1HZXRCb29sKHJldCk7Cit9CisKKy8q CisgKiBDaGFuZ2UgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByb3cgZmlsdGVyLCBpZiBhbnku CisgKgorICogSWYgaXQgcmV0dXJucyB0cnVlLCB0aGUgY2hhbmdlIGlzIHJlcGxpY2F0ZWQs IG90aGVyd2lzZSwgaXQgaXMgbm90LgorICovCitzdGF0aWMgYm9vbAorcGdvdXRwdXRfcm93 X2ZpbHRlcihSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLCBIZWFwVHVw bGUgbmV3dHVwbGUsIExpc3QgKnJvd2ZpbHRlcikKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsK KwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWN4dDsKKwlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQlyZXN1bHQgPSB0cnVlOwor CisJLyogQmFpbCBvdXQgaWYgdGhlcmUgaXMgbm8gcm93IGZpbHRlciAqLworCWlmIChsaXN0 X2xlbmd0aChyb3dmaWx0ZXIpID09IDApCisJCXJldHVybiB0cnVlOworCisJdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCisJZXN0YXRlID0gY3JlYXRlX2VzdGF0 ZV9mb3JfcmVsYXRpb24ocmVsYXRpb24pOworCisJLyogUHJlcGFyZSBjb250ZXh0IHBlciB0 dXBsZSAqLworCWVjeHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwll Y3h0LT5lY3h0X3NjYW50dXBsZSA9IEV4ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLCB0 dXBkZXNjLCAmVFRTT3BzSGVhcFR1cGxlKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKKworCUV4ZWNTdG9yZUhlYXBUdXBsZShuZXd0dXBsZSA/IG5ld3R1cGxlIDogb2xk dHVwbGUsIGVjeHQtPmVjeHRfc2NhbnR1cGxlLCBmYWxzZSk7CisKKwkvKgorCSAqIElmIHRo ZSBzdWJzY3JpcHRpb24gaGFzIG11bHRpcGxlIHB1YmxpY2F0aW9ucyBhbmQgdGhlIHNhbWUg dGFibGUgaGFzIGEKKwkgKiBkaWZmZXJlbnQgcm93IGZpbHRlciBpbiB0aGVzZSBwdWJsaWNh dGlvbnMsIGFsbCByb3cgZmlsdGVycyBtdXN0IGJlCisJICogbWF0Y2hlZCBpbiBvcmRlciB0 byByZXBsaWNhdGUgdGhpcyBjaGFuZ2UuCisJICovCisJZm9yZWFjaChsYywgcm93ZmlsdGVy KQorCXsKKwkJTm9kZQkgICAqcmZub2RlID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKwkJT2lk CQkJZXhwcnR5cGU7CisJCUV4cHIJICAgKmV4cHI7CisJCUV4cHJTdGF0ZSAgKmV4cHJzdGF0 ZTsKKworCQkvKiBQcmVwYXJlIGV4cHJlc3Npb24gZm9yIGV4ZWN1dGlvbiAqLworCQlleHBy dHlwZSA9IGV4cHJUeXBlKHJmbm9kZSk7CisJCWV4cHIgPSAoRXhwciAqKSBjb2VyY2VfdG9f dGFyZ2V0X3R5cGUoTlVMTCwgcmZub2RlLCBleHBydHlwZSwgQk9PTE9JRCwgLTEsIENPRVJD SU9OX0FTU0lHTk1FTlQsIENPRVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisKKwkJaWYgKGV4 cHIgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf Q0FOTk9UX0NPRVJDRSksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgcmV0dXJucyB0eXBl ICVzIHRoYXQgY2Fubm90IGJlIGNvZXJjZWQgdG8gdGhlIGV4cGVjdGVkIHR5cGUgJXMiLAor CQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJ0eXBlKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9i ZShCT09MT0lEKSksCisJCQkJCSBlcnJoaW50KCJZb3Ugd2lsbCBuZWVkIHRvIHJld3JpdGUg dGhlIHJvdyBmaWx0ZXIuIikpKTsKKworCQlleHByc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIo ZXhwciwgZXN0YXRlKTsKKworCQkvKiBFdmFsdWF0ZXMgcm93IGZpbHRlciAqLworCQlyZXN1 bHQgPSBwZ291dHB1dF9yb3dfZmlsdGVyX2V4ZWNfZXhwcihleHByc3RhdGUsIGVjeHQpOwor CisJCS8qIElmIHRoZSB0dXBsZSBkb2VzIG5vdCBtYXRjaCBvbmUgb2YgdGhlIHJvdyBmaWx0 ZXJzLCBiYWlsIG91dCAqLworCQlpZiAoIXJlc3VsdCkKKwkJCWJyZWFrOworCX0KKworCVJl c2V0RXhwckNvbnRleHQoZWN4dCk7CisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBTZW5kcyB0aGUgZGVjb2RlZCBETUwgb3Zl ciB3aXJlLgogICoKQEAgLTUxNiw3ICs2MjIsNyBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJaWYgKGlu X3N0cmVhbWluZykKIAkJeGlkID0gY2hhbmdlLT50eG4tPnhpZDsKIAotCXJlbGVudHJ5ID0g Z2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKTsK KwlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCByZWxhdGlvbik7CiAKIAkv KiBGaXJzdCBjaGVjayB0aGUgdGFibGUgZmlsdGVyICovCiAJc3dpdGNoIChjaGFuZ2UtPmFj dGlvbikKQEAgLTU2MCw2ICs2NjYsMTAgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJdHVwbGUg PSBleGVjdXRlX2F0dHJfbWFwX3R1cGxlKHR1cGxlLCByZWxlbnRyeS0+bWFwKTsKIAkJCQl9 CiAKKwkJCQkvKiBDaGVjayByb3cgZmlsdGVyLiAqLworCQkJCWlmICghcGdvdXRwdXRfcm93 X2ZpbHRlcihyZWxhdGlvbiwgTlVMTCwgdHVwbGUsIHJlbGVudHJ5LT5xdWFsKSkKKwkJCQkJ cmV0dXJuOworCiAJCQkJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CiAJ CQkJbG9naWNhbHJlcF93cml0ZV9pbnNlcnQoY3R4LT5vdXQsIHhpZCwgcmVsYXRpb24sIHR1 cGxlLAogCQkJCQkJCQkJCWRhdGEtPmJpbmFyeSk7CkBAIC01ODYsNiArNjk2LDEwIEBAIHBn b3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAkJCQkJfQogCQkJCX0KIAorCQkJCS8qIENoZWNrIHJvdyBmaWx0ZXIu ICovCisJCQkJaWYgKCFwZ291dHB1dF9yb3dfZmlsdGVyKHJlbGF0aW9uLCBvbGR0dXBsZSwg bmV3dHVwbGUsIHJlbGVudHJ5LT5xdWFsKSkKKwkJCQkJcmV0dXJuOworCiAJCQkJT3V0cHV0 UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CiAJCQkJbG9naWNhbHJlcF93cml0ZV91 cGRhdGUoY3R4LT5vdXQsIHhpZCwgcmVsYXRpb24sIG9sZHR1cGxlLAogCQkJCQkJCQkJCW5l d3R1cGxlLCBkYXRhLT5iaW5hcnkpOwpAQCAtNjA4LDYgKzcyMiwxMCBAQCBwZ291dHB1dF9j aGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCiAJCQkJCQlvbGR0dXBsZSA9IGV4ZWN1dGVfYXR0cl9tYXBfdHVwbGUob2xkdHVwbGUs IHJlbGVudHJ5LT5tYXApOwogCQkJCX0KIAorCQkJCS8qIENoZWNrIHJvdyBmaWx0ZXIuICov CisJCQkJaWYgKCFwZ291dHB1dF9yb3dfZmlsdGVyKHJlbGF0aW9uLCBvbGR0dXBsZSwgTlVM TCwgcmVsZW50cnktPnF1YWwpKQorCQkJCQlyZXR1cm47CisKIAkJCQlPdXRwdXRQbHVnaW5Q cmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKIAkJCQlsb2dpY2FscmVwX3dyaXRlX2RlbGV0ZShj dHgtPm91dCwgeGlkLCByZWxhdGlvbiwgb2xkdHVwbGUsCiAJCQkJCQkJCQkJZGF0YS0+Ymlu YXJ5KTsKQEAgLTY1NSwxMiArNzczLDExIEBAIHBnb3V0cHV0X3RydW5jYXRlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWZvciAoaSA9 IDA7IGkgPCBucmVsYXRpb25zOyBpKyspCiAJewogCQlSZWxhdGlvbglyZWxhdGlvbiA9IHJl bGF0aW9uc1tpXTsKLQkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9u KTsKIAogCQlpZiAoIWlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKHJlbGF0aW9uKSkKIAkJCWNv bnRpbnVlOwogCi0JCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGlk KTsKKwkJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24pOwog CiAJCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUpCiAJCQljb250aW51 ZTsKQEAgLTY3MCwxMCArNzg3LDEwIEBAIHBnb3V0cHV0X3RydW5jYXRlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkgKiByb290IHRh YmxlcyB0aHJvdWdoIGl0LgogCQkgKi8KIAkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlz cGFydGl0aW9uICYmCi0JCQlyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSByZWxpZCkK KwkJCXJlbGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkICE9IHJlbGVudHJ5LT5yZWxpZCkKIAkJ CWNvbnRpbnVlOwogCi0JCXJlbGlkc1tucmVsaWRzKytdID0gcmVsaWQ7CisJCXJlbGlkc1tu cmVsaWRzKytdID0gcmVsZW50cnktPnJlbGlkOwogCQltYXliZV9zZW5kX3NjaGVtYShjdHgs IHR4biwgY2hhbmdlLCByZWxhdGlvbiwgcmVsZW50cnkpOwogCX0KIApAQCAtOTQxLDE2ICsx MDU4LDIxIEBAIHNldF9zY2hlbWFfc2VudF9pbl9zdHJlYW1lZF90eG4oUmVsYXRpb25TeW5j RW50cnkgKmVudHJ5LCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIHdoZW4gcHVibGlzaGluZy4K ICAqLwogc3RhdGljIFJlbGF0aW9uU3luY0VudHJ5ICoKLWdldF9yZWxfc3luY19lbnRyeShQ R091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKK2dldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbCkKIHsKIAlSZWxhdGlvblN5bmNFbnRyeSAq ZW50cnk7Ci0JYm9vbAkJYW1fcGFydGl0aW9uID0gZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihy ZWxpZCk7Ci0JY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CisJT2lk CQkJcmVsaWQ7CisJYm9vbAkJYW1fcGFydGl0aW9uOworCWNoYXIJCXJlbGtpbmQ7CiAJYm9v bAkJZm91bmQ7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKIAlBc3NlcnQoUmVsYXRpb25T eW5jQ2FjaGUgIT0gTlVMTCk7CiAKKwlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsK KwlhbV9wYXJ0aXRpb24gPSBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKHJlbGlkKTsKKwlyZWxr aW5kID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKKwogCS8qIEZpbmQgY2FjaGVkIHJlbGF0 aW9uIGluZm8sIGNyZWF0aW5nIGlmIG5vdCBmb3VuZCAqLwogCWVudHJ5ID0gKFJlbGF0aW9u U3luY0VudHJ5ICopIGhhc2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLAogCQkJCQkJCQkJ CQkgICh2b2lkICopICZyZWxpZCwKQEAgLTk2Niw2ICsxMDg4LDcgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQllbnRyeS0+cmVwbGlj YXRlX3ZhbGlkID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IGVu dHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9CiAJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRy eS0+cXVhbCA9IE5JTDsKIAkJZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgPSBJbnZhbGlkT2lk OwogCX0KIApAQCAtOTk3LDYgKzExMjAsOSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJCXsKIAkJCVB1YmxpY2F0aW9uICpwdWIgPSBs Zmlyc3QobGMpOwogCQkJYm9vbAkJcHVibGlzaCA9IGZhbHNlOworCQkJSGVhcFR1cGxlCXJm dHVwbGU7CisJCQlEYXR1bQkJcmZkYXR1bTsKKwkJCWJvb2wJCXJmaXNudWxsOwogCiAJCQlp ZiAocHViLT5hbGx0YWJsZXMpCiAJCQl7CkBAIC0xMDU2LDkgKzExODIsMjkgQEAgZ2V0X3Jl bF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQkJCWVudHJ5 LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0 ZTsKIAkJCX0KIAotCQkJaWYgKGVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCAmJiBlbnRy eS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgJiYKLQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZWxldGUgJiYgZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUpCi0JCQkJYnJlYWs7CisJ CQkvKgorCQkJICogQ2FjaGUgcm93IGZpbHRlciwgaWYgYXZhaWxhYmxlLiBBbGwgcHVibGlj YXRpb24tdGFibGUgbWFwcGluZ3MKKwkJCSAqIG11c3QgYmUgY2hlY2tlZC4gSWYgaXQgaXMg YSBwYXJ0aXRpb24gYW5kIHB1YnZpYXJvb3QgaXMgdHJ1ZSwKKwkJCSAqIHVzZSB0aGUgcm93 IGZpbHRlciBvZiB0aGUgdG9wbW9zdCBwYXJ0aXRpb25lZCB0YWJsZSBpbnN0ZWFkIG9mCisJ CQkgKiB0aGUgcm93IGZpbHRlciBvZiBpdHMgb3duIHBhcnRpdGlvbi4KKwkJCSAqLworCQkJ cmZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRH ZXREYXR1bShwdWJsaXNoX2FzX3JlbGlkKSwgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkp OworCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkpCisJCQl7CisJCQkJcmZkYXR1 bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwgQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLCAmcmZpc251bGwpOworCisJCQkJaWYgKCFyZmlz bnVsbCkKKwkJCQl7CisJCQkJCU5vZGUJICAgKnJmbm9kZTsKKworCQkJCQlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJCQkJcmZub2Rl ID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcocmZkYXR1bSkpOworCQkJCQll bnRyeS0+cXVhbCA9IGxhcHBlbmQoZW50cnktPnF1YWwsIHJmbm9kZSk7CisJCQkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJCX0KKworCQkJCVJlbGVhc2VTeXNDYWNo ZShyZnR1cGxlKTsKKwkJCX0KIAkJfQogCiAJCWxpc3RfZnJlZShwdWJpZHMpOwpAQCAtMTE2 NCw2ICsxMzEwLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwogCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKKwlNZW1vcnlDb250ZXh0IG9s ZGN0eDsKIAogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRoZSBwbHVnaW4gd2FzIHVz ZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKQEAgLTExNzMsNiArMTMyMCw4IEBAIHJlbF9z eW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQz MiBoYXNodmFsdWUpCiAJaWYgKFJlbGF0aW9uU3luY0NhY2hlID09IE5VTEwpCiAJCXJldHVy bjsKIAorCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRl eHQpOworCiAJLyoKIAkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZmluZCB3aGljaCBlbnRyeSBp biBvdXIgY2FjaGUgdGhlIGhhc2ggYmVsb25ncyB0byBzbwogCSAqIG1hcmsgdGhlIHdob2xl IGNhY2hlIGFzIGludmFsaWQuCkBAIC0xMTkwLDUgKzEzMzksMTEgQEAgcmVsX3N5bmNfY2Fj aGVfcHVibGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2 YWx1ZSkKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5 LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5w dWJ0cnVuY2F0ZSA9IGZhbHNlOworCisJCWlmIChsaXN0X2xlbmd0aChlbnRyeS0+cXVhbCkg PiAwKQorCQkJbGlzdF9mcmVlX2RlZXAoZW50cnktPnF1YWwpOworCQllbnRyeS0+cXVhbCA9 IE5JTDsKIAl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA0MTI3NjExZjVhLi4wMjYzYmFm NzJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC04NSw2ICs4 NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbgogCVB1YmxpY2F0aW9uQWN0aW9u cyBwdWJhY3Rpb25zOwogfSBQdWJsaWNhdGlvbjsKIAordHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25SZWxhdGlvblF1YWwKK3sKKwlPaWQJCQlyZWxpZDsKKwlSZWxhdGlvbglyZWxhdGlv bjsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKK30gUHVibGljYXRpb25SZWxhdGlvblF1YWw7 CisKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4 dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVi bmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhPaWQgcmVsaWQpOwpAQCAtMTA2LDExICsxMTMsMTIgQEAgdHlwZWRlZiBlbnVt IFB1YmxpY2F0aW9uUGFydE9wdAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKIGV4dGVybiBM aXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlv blF1YWxzKE9pZCBwdWJpZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRp b25zKHZvaWQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRp b25zKGJvb2wgcHVidmlhcm9vdCk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3Jl bGF0aW9uKFJlbGF0aW9uIHJlbCk7Ci1leHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlv bl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCitleHRlcm4g T2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJs aWNhdGlvblJlbGF0aW9uUXVhbCAqdGFyZ2V0cmVsLAogCQkJCQkJCQkJCQkgIGJvb2wgaWZf bm90X2V4aXN0cyk7CiAKIGV4dGVybiBPaWQJZ2V0X3B1YmxpY2F0aW9uX29pZChjb25zdCBj aGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb25fcmVsLmgKaW5kZXggYzc5YjdmYjQ4Ny4uZDI2NjczYTExMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICsz MSwxMCBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZDsJ CS8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlPaWQJCQlwcnJlbGlkOwkJLyogT2lk IG9mIHRoZSByZWxhdGlvbiAqLworCisjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKwlwZ19ub2RlX3RyZWUgcHJxdWFs OwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KKyNlbmRpZgogfSBGb3JtRGF0YV9wZ19wdWJsaWNh dGlvbl9yZWw7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTQwLDYgKzQ0LDggQEAgQ0FU QUxPRyhwZ19wdWJsaWNhdGlvbl9yZWwsNjEwNixQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQp CiAgKi8KIHR5cGVkZWYgRm9ybURhdGFfcGdfcHVibGljYXRpb25fcmVsICpGb3JtX3BnX3B1 YmxpY2F0aW9uX3JlbDsKIAorREVDTEFSRV9UT0FTVChwZ19wdWJsaWNhdGlvbl9yZWwsIDgy ODcsIDgyODgpOworCiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3B1YmxpY2F0aW9u X3JlbF9vaWRfaW5kZXgsIDYxMTIsIG9uIHBnX3B1YmxpY2F0aW9uX3JlbCB1c2luZyBidHJl ZShvaWQgb2lkX29wcykpOwogI2RlZmluZSBQdWJsaWNhdGlvblJlbE9iamVjdEluZGV4SWQg NjExMgogREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcHVibGljYXRpb25fcmVsX3BycmVsaWRf cHJwdWJpZF9pbmRleCwgNjExMywgb24gcGdfcHVibGljYXRpb25fcmVsIHVzaW5nIGJ0cmVl KHBycmVsaWQgb2lkX29wcywgcHJwdWJpZCBvaWRfb3BzKSk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRl eCA0MGFlNDg5YzIzLi5jYWJkYTZmM2M0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTQ4Miw2ICs0 ODIsNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfUGFydGl0aW9uUmFuZ2VEYXR1bSwK IAlUX1BhcnRpdGlvbkNtZCwKIAlUX1ZhY3V1bVJlbGF0aW9uLAorCVRfUHVibGljYXRpb25U YWJsZSwKIAogCS8qCiAJICogVEFHUyBGT1IgUkVQTElDQVRJT04gR1JBTU1BUiBQQVJTRSBO T0RFUyAocmVwbG5vZGVzLmgpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjM2ODMy YTJjYS4uNjVmN2E4ODg0ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzU0Mywx MiArMzU0MywxOSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQK IH0gQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10OwogCiAKK3R5cGVkZWYgc3RydWN0IFB1Ymxp Y2F0aW9uVGFibGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnJlbGF0aW9u OwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCisJTm9kZQkgICAqd2hlcmVDbGF1 c2U7CS8qIHF1YWxpZmljYXRpb25zICovCit9IFB1YmxpY2F0aW9uVGFibGU7CisKIHR5cGVk ZWYgc3RydWN0IENyZWF0ZVB1YmxpY2F0aW9uU3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAJ Y2hhcgkgICAqcHVibmFtZTsJCS8qIE5hbWUgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJTGlz dAkgICAqb3B0aW9uczsJCS8qIExpc3Qgb2YgRGVmRWxlbSBub2RlcyAqLwotCUxpc3QJICAg KnRhYmxlczsJCQkvKiBPcHRpb25hbCBsaXN0IG9mIHRhYmxlcyB0byBhZGQgKi8KKwlMaXN0 CSAgICp0YWJsZXM7CQkJLyogT3B0aW9uYWwgbGlzdCBvZiBQdWJsaWNhdGlvblRhYmxlIHRv IGFkZCAqLwogCWJvb2wJCWZvcl9hbGxfdGFibGVzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9u IGZvciBhbGwgdGFibGVzIGluIGRiICovCiB9IENyZWF0ZVB1YmxpY2F0aW9uU3RtdDsKIApA QCAtMzU2MSw3ICszNTY4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJQdWJsaWNhdGlvblN0 bXQKIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCiAK IAkvKiBwYXJhbWV0ZXJzIHVzZWQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQvRFJP UCBUQUJMRSAqLwotCUxpc3QJICAgKnRhYmxlczsJCQkvKiBMaXN0IG9mIHRhYmxlcyB0byBh ZGQvZHJvcCAqLworCUxpc3QJICAgKnRhYmxlczsJCQkvKiBMaXN0IG9mIFB1YmxpY2F0aW9u VGFibGUgdG8gYWRkL2Ryb3AgKi8KIAlib29sCQlmb3JfYWxsX3RhYmxlczsgLyogU3BlY2lh bCBwdWJsaWNhdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiBkYiAqLwogCURlZkVsZW1BY3Rpb24g dGFibGVBY3Rpb247CS8qIFdoYXQgYWN0aW9uIHRvIHBlcmZvcm0gd2l0aCB0aGUgdGFibGVz ICovCiB9IEFsdGVyUHVibGljYXRpb25TdG10OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgK aW5kZXggMTc2YjlmMzdjMS4uZWRiODBmYmU1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oCkBAIC03OSw2ICs3OSw3IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQ Ul9LSU5EX0NPUFlfV0hFUkUsCQkvKiBXSEVSRSBjb25kaXRpb24gaW4gQ09QWSBGUk9NICov CiAJRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4sIC8qIGdlbmVyYXRpb24gZXhwcmVzc2lv biBmb3IgYSBjb2x1bW4gKi8KIAlFWFBSX0tJTkRfQ1lDTEVfTUFSSywJCS8qIGN5Y2xlIG1h cmsgdmFsdWUgKi8KKwlFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUgLyogV0hFUkUgY29u ZGl0aW9uIGZvciBhIHRhYmxlIGluIFBVQkxJQ0FUSU9OICovCiB9IFBhcnNlRXhwcktpbmQ7 CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0 aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAppbmRl eCAzZjBiM2RlZWZiLi5hNTlhZDJjOWM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscmVsYXRpb24uaApAQCAtNDksNCArNDksNiBAQCBleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfdHlwbWFwX3VwZGF0ZShMb2dpY2FsUmVwVHlwICpyZW1vdGV0eXAp OwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfdHlwbWFwX2dldHR5cG5hbWUoT2lkIHJlbW90 ZWlkKTsKIAorZXh0ZXJuIEVTdGF0ZSAqY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24oUmVs YXRpb24gcmVsKTsKKwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxSRUxBVElPTl9IICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDYzZDZh YjdhNGUuLmM4Y2YxYjY4NWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CkBAIC0xNTYsNiArMTU2LDM4IEBAIFRhYmxlczoKIAogRFJPUCBUQUJM RSB0ZXN0cHViX3BhcnRlZDE7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVk LCB0ZXN0cHViX2ZvcnBhcnRlZDE7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIChh IGludGVnZXIsIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl90YmwyIChjIHRl eHQsIGQgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIChlIGludGVn ZXIpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCAoZyB0ZXh0KTsKK1NFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMg PD4gJ3Rlc3QnIEFORCBkIDwgNSk7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVS RSAoZSA+IDEwMDAgQU5EIGUgPCAyMDAwKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOworLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJs MSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNz aW9uKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZf dGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCk7CistLSBmYWlsIC0gZnVuY3Rpb25z IGRpc2FsbG93ZWQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0 cHViX3JmX3RibDQgV0hFUkUgKGxlbmd0aChnKSA8IDYpOworRVJST1I6ICBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zCitMSU5F IDE6IC4uLklDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCBXSEVS RSAobGVuZ3RoKGcpIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIGZhaWwgLSBXSEVSRSBub3QgYWxsb3dl ZCBpbiBEUk9QCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMyBXSEVSRSAoZSA8IDI3KTsKK0VSUk9SOiAgY2Fubm90IHVzZSBhIFdIRVJF IGNsYXVzZSB3aGVuIHJlbW92aW5nIHRhYmxlIGZyb20gcHVibGljYXRpb24gInRlc3RwdWI1 IgorXGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1 Yl9yZl90YmwzIiAgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1MDApKQorCitEUk9QIFRB QkxFIHRlc3RwdWJfcmZfdGJsMTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOworRFJP UCBUQUJMRSB0ZXN0cHViX3JmX3RibDM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsNDsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjU7CiAtLSBmYWlsIC0gdmlldwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGJsIEZPUiBUQUJMRSB0ZXN0cHViX3ZpZXc7CiBFUlJP UjogICJ0ZXN0cHViX3ZpZXciIGlzIG5vdCBhIHRhYmxlCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKaW5kZXggZDg0NDA3NTM2OC4uMzUyMTFjNTZmNiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtOTMsNiArOTMsMjkgQEAgQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IHRydWUpOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDE7CiBEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkLCB0ZXN0cHViX2ZvcnBhcnRlZDE7CiAKK0NS RUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDEgKGEgaW50ZWdlciwgYiB0ZXh0KTsKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3JmX3RibDIgKGMgdGV4dCwgZCBpbnRlZ2VyKTsKK0NSRUFURSBU QUJMRSB0ZXN0cHViX3JmX3RibDMgKGUgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9yZl90Ymw0IChnIHRleHQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3Ri bDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1KTsKK1JF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBB REQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQgZSA8IDIwMDAp OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDI7CistLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1Yl9yZl90Ymwz IGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMzAwIEFORCBl IDwgNTAwKTsKKy0tIGZhaWwgLSBmdW5jdGlvbnMgZGlzYWxsb3dlZAorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCBXSEVSRSAobGVuZ3Ro KGcpIDwgNik7CistLSBmYWlsIC0gV0hFUkUgbm90IGFsbG93ZWQgaW4gRFJPUAorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUg KGUgPCAyNyk7CitcZFJwKyB0ZXN0cHViNQorCitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJs MTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOworRFJPUCBUQUJMRSB0ZXN0cHViX3Jm X3RibDM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsNDsKK0RST1AgUFVCTElDQVRJT04g dGVzdHB1YjU7CisKIC0tIGZhaWwgLSB2aWV3CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YmwgRk9SIFRBQkxFIHRlc3RwdWJfdmlldzsKIFNFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy MF9yb3dfZmlsdGVyLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0 ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjhjMDU5ZDQ0 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMF9yb3df ZmlsdGVyLnBsCkBAIC0wLDAgKzEsMTkwIEBACisjIFRlc3QgbG9naWNhbCByZXBsaWNhdGlv biBiZWhhdmlvciB3aXRoIHJvdyBmaWx0ZXJpbmcKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fybmlu Z3M7Cit1c2UgUG9zdGdyZXNOb2RlOwordXNlIFRlc3RMaWI7Cit1c2UgVGVzdDo6TW9yZSB0 ZXN0cyA9PiA2OworCisjIGNyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlz aGVyID0gZ2V0X25ld19ub2RlKCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0 YXJ0OworCisjIGNyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIg PSBnZXRfbmV3X25vZGUoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3Rh cnQ7CisKKyMgc2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJf MSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyXzIgKGMg aW50IHByaW1hcnkga2V5KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMyAoYSBpbnQgcHJpbWFyeSBr ZXksIGIgYm9vbGVhbikiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIChhIGludCBw cmltYXJ5IGtleSwgYiBpbnRlZ2VyKSBQQVJUSVRJT04gQlkgUkFOR0UoYSkiCispOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRh Yl9yb3dmaWx0ZXJfbGVzc18xMGsgKExJS0UgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCki KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0YWJfcm93 ZmlsdGVyX2xlc3NfMTBrIEZPUiBWQUxVRVMgRlJPTSAoTUlOVkFMVUUpIFRPICgxMDAwMCki CispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHRhYl9yb3dmaWx0ZXJfZ3JlYXRlcl8xMGsgKExJS0UgdGFiX3Jvd2ZpbHRlcl9w YXJ0aXRpb25lZCkiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFS VElUSU9OIHRhYl9yb3dmaWx0ZXJfZ3JlYXRlcl8xMGsgRk9SIFZBTFVFUyBGUk9NICgxMDAw MCkgVE8gKE1BWFZBTFVFKSIKKyk7CisKKyMgc2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmli ZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdGFiX3Jvd2ZpbHRlcl8xIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KSIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJM RSB0YWJfcm93ZmlsdGVyXzIgKGMgaW50IHByaW1hcnkga2V5KSIpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93Zmls dGVyXzMgKGEgaW50IHByaW1hcnkga2V5LCBiIGJvb2xlYW4pIik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0 ZXJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIGludGVnZXIpIFBBUlRJVElP TiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsgKExJS0UgdGFi X3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVk IEFUVEFDSCBQQVJUSVRJT04gdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayBGT1IgVkFMVUVTIEZS T00gKE1JTlZBTFVFKSBUTyAoMTAwMDApIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9ncmVhdGVy XzEwayAoTElLRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIKKyk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGFiX3Jvd2Zp bHRlcl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRhYl9yb3dmaWx0ZXJfZ3JlYXRl cl8xMGsgRk9SIFZBTFVFUyBGUk9NICgxMDAwMCkgVE8gKE1BWFZBTFVFKSIKKyk7CisKKyMg c2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMSBGT1IgVEFCTEUg dGFiX3Jvd2ZpbHRlcl8xIFdIRVJFIChhID4gMTAwMCBBTkQgYiA8PiAnZmlsdGVyZWQnKSIK Kyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFBVQkxJQ0FUSU9OIHRhcF9wdWJfMSBBREQgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8yIFdIRVJF IChjICUgNyA9IDApIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8xIFNFVCBUQUJMRSB0YWJfcm93 ZmlsdGVyXzEgV0hFUkUgKGEgPiAxMDAwIEFORCBiIDw+ICdmaWx0ZXJlZCcpLCB0YWJfcm93 ZmlsdGVyXzIgV0hFUkUgKGMgJSAyID0gMCksIHRhYl9yb3dmaWx0ZXJfMyIKKyk7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViXzIgRk9SIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMiBXSEVSRSAoYyAlIDMg PSAwKSIKKyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViXzMgRk9SIFRBQkxFIHRhYl9yb3dmaWx0ZXJf cGFydGl0aW9uZWQgV0hFUkUgKGEgPCA1MDAwKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViXzMgQURE IFRBQkxFIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsgV0hFUkUgKGEgPCA2MDAwKSIKKyk7CisK KyMgdGVzdCByb3cgZmlsdGVyaW5nCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAo MSwgJ25vdCByZXBsaWNhdGVkJykiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVT ICgxNTAwLCAnZmlsdGVyZWQnKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8xIChhLCBiKSBWQUxVRVMg KDE5ODAsICdub3QgZmlsdGVyZWQnKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8xIChhLCBiKSBTRUxF Q1QgeCwgJ3Rlc3QgJyB8fCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDk5MCwxMDAyKSB4Igor KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHRhYl9yb3dmaWx0ZXJfMiAoYykgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAyMCki KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHRhYl9yb3dmaWx0ZXJfMyAoYSwgYikgU0VMRUNUIHgsICh4ICUgMyA9IDApIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSB4IgorKTsKKyMgdXNlIHBhcnRpdGlvbiByb3cgZmls dGVyOgorIyAtIHJlcGxpY2F0ZSAoMSwgMTAwKSBiZWNhdXNlIDEgPCA2MDAwIGlzIHRydWUK KyMgLSBkb24ndCByZXBsaWNhdGUgKDgwMDAsIDEwMSkgYmVjYXVzZSA4MDAwIDwgNjAwMCBp cyBmYWxzZQorIyAtIHJlcGxpY2F0ZSAoMTUwMDAsIDEwMikgYmVjYXVzZSBwYXJ0aXRpb24g dGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBkb2Vzbid0IGhhdmUgcm93IGZpbHRlcgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFi X3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCAoYSwgYikgVkFMVUVTKDEsIDEwMCksKDgwMDAsIDEw MSksKDE1MDAwLCAxMDIpIgorKTsKKyMgaW5zZXJ0IGRpcmVjdGx5IGludG8gcGFydGl0aW9u CisjIHVzZSBwYXJ0aXRpb24gcm93IGZpbHRlcjogcmVwbGljYXRlICgyLCAyMDApIGJlY2F1 c2UgMiA8IDYwMDAgaXMgdHJ1ZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayAoYSwgYikgVkFM VUVTKDIsIDIwMCkiKTsKKyMgdXNlIHBhcnRpdGlvbiByb3cgZmlsdGVyOiByZXBsaWNhdGUg KDU1MDAsIDMwMCkgYmVjYXVzZSA1NTAwIDwgNjAwMCBpcyB0cnVlCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVy X3BhcnRpdGlvbmVkIChhLCBiKSBWQUxVRVMoNTUwMCwgMzAwKSIpOworCitteSAkcHVibGlz aGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0 Z3Jlcyc7CitteSAkYXBwbmFtZSAgICAgICAgICAgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViXzEsIHRhcF9wdWJfMiwgdGFwX3B1Yl8z IgorKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworIyB3YWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCitteSAkc3luY2Vk X3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25f cmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElOICgncicsICdzJyk7IjsKKyRub2RlX3N1YnNj cmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAg b3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5j aHJvbml6ZSBkYXRhIjsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0ZXJf MSBPUkRFUiBCWSAxLCAyIik7CitpcyggJHJlc3VsdCwgcXEoMTAwMXx0ZXN0IDEwMDEKKzEw MDJ8dGVzdCAxMDAyCisxOTgwfG5vdCBmaWx0ZXJlZCksICdjaGVjayBmaWx0ZXJlZCBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudChjKSwgbWlu KGMpLCBtYXgoYykgRlJPTSB0YWJfcm93ZmlsdGVyXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDN8 NnwxOCksICdjaGVjayBmaWx0ZXJlZCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBjb3VudChhKSBGUk9NIHRhYl9yb3dmaWx0ZXJfMyIpOworaXMoJHJl c3VsdCwgcXEoMTApLCAnY2hlY2sgZmlsdGVyZWQgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsg T1JERVIgQlkgMSwgMiIpOworaXMoICRyZXN1bHQsIHFxKDF8MTAwCisyfDIwMAorNTUwMHwz MDApLCAnY2hlY2sgZmlsdGVyZWQgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0ZXJfZ3JlYXRlcl8xMGsgT1JERVIg QlkgMSwgMiIpOworaXMoJHJlc3VsdCwgcXEoMTUwMDB8MTAyKSwgJ2NoZWNrIGZpbHRlcmVk IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyMgcHVibGlzaCB1c2luZyBw YXJ0aXRpb25lZCB0YWJsZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8zIFNFVCAocHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSB0cnVlKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlRSVU5DQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQi KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIFdJVEggKGNvcHlfZGF0 YSA9IHRydWUpIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSByb3cgZmlsdGVyOiByZXBs aWNhdGUsIDQwMDAgPCA1MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQg KGEsIGIpIFZBTFVFUyg0MDAwLCA0MDApIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBy b3cgZmlsdGVyOiByZXBsaWNhdGUsIDQ1MDAgPCA1MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0 ZXJfbGVzc18xMGsgKGEsIGIpIFZBTFVFUyg0NTAwLCA0NTApIik7CisjIHVzZSBwYXJ0aXRp b25lZCB0YWJsZSByb3cgZmlsdGVyOiBkb24ndCByZXBsaWNhdGUsIDU2MDAgPCA1MDAwIGlz IGZhbHNlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoNTYwMCwgMTIz KSIpOworIyB1c2UgcGFydGl0aW9uZWQgdGFibGUgcm93IGZpbHRlcjogZG9uJ3QgcmVwbGlj YXRlLCAxNjAwMCA8IDUwMDAgaXMgZmFsc2UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfZ3JlYXRlcl8xMGsg KGEsIGIpIFZBTFVFUygxNjAwMCwgMTk1MCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dm aWx0ZXJfcGFydGl0aW9uZWQgT1JERVIgQlkgMSwgMiIpOworaXMoICRyZXN1bHQsIHFxKDF8 MTAwCisyfDIwMAorNDAwMHw0MDAKKzQ1MDB8NDUwKSwgJ2NoZWNrIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290IGJlaGF2aW9yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zh c3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwotLSAKMi4yMC4xCgo= --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0004-Print-publication-WHERE-condition-in-psql.patch" Content-Type: text/x-patch; name="v10-0004-Print-publication-WHERE-condition-in-psql.patch" Content-Transfer-Encoding: BASE64 RnJvbSA5NmY1YzU3YmNjYjRiZDljYWU4NTQ2ZWNlZmNjYTQ1NGI2MjhlOTI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTI6MDk6MTkgLTAzMDAK U3ViamVjdDogW1BBVENIIDQvN10gUHJpbnQgcHVibGljYXRpb24gV0hFUkUgY29uZGl0aW9u IGluIHBzcWwKCi0tLQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgfCA3ICsrKysrKy0KIDEg ZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IDIwYWY1YTkyYjQuLjhhNzExM2NlMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02MDExLDcg KzYwMTEsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQog CQlpZiAoIXB1YmFsbHRhYmxlcykKIAkJewogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK LQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lLCBjLnJlbG5hbWVcbiIKKwkJCQkJCQkgICJT RUxFQ1Qgbi5uc3BuYW1lLCBjLnJlbG5hbWUsXG4iCisJCQkJCQkJICAiICBwZ19nZXRfZXhw cihwci5wcnF1YWwsIGMub2lkKVxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjLFxuIgogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2Ugbixc biIKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4i CkBAIC02MDQxLDYgKzYwNDIsMTAgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJCQkJCQkJICBQUWdldHZhbHVlKHRhYnJlcywgaiwgMCksCiAJCQkJ CQkJCSAgUFFnZXR2YWx1ZSh0YWJyZXMsIGosIDEpKTsKIAorCQkJCWlmICghUFFnZXRpc251 bGwodGFicmVzLCBqLCAyKSkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgV0hF UkUgJXMiLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHRhYnJlcywgaiwgMikpOworCiAJCQkJ cHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOwogCQkJfQogCQkJUFFjbGVh cih0YWJyZXMpOwotLSAKMi4yMC4xCgo= --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0005-Publication-WHERE-condition-support-for-pg_dump.patch" Content-Type: text/x-patch; name="v10-0005-Publication-WHERE-condition-support-for-pg_dump.patch" Content-Transfer-Encoding: BASE64 RnJvbSAzNWI4Y2MxZTBkOWNhOGUwZTU0MzEwNzNjYzEwYjgwZjVmMTY5NzJlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTQ6Mjk6NTkgLTAzMDAK U3ViamVjdDogW1BBVENIIDUvN10gUHVibGljYXRpb24gV0hFUkUgY29uZGl0aW9uIHN1cHBv cnQgZm9yIHBnX2R1bXAKCi0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyB8IDE0ICsr KysrKysrKysrKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIHwgIDEgKwogMiBmaWxl cyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IDM5ZGE3NDJlMzIuLjUwMzg4YWU4Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAt NDA4MCw2ICs0MDgwLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpbnQJCQlpX29pZDsKIAlp bnQJCQlpX3BycHViaWQ7CiAJaW50CQkJaV9wcnJlbGlkOworCWludAkJCWlfcHJyZWxxdWFs OwogCWludAkJCWksCiAJCQkJaiwKIAkJCQludHVwczsKQEAgLTQwOTEsNyArNDA5Miw4IEBA IGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZv W10sIGludCBudW1UYWJsZXMpCiAKIAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1i ZXJzaGlwIGluZm8uICovCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkg IlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkICIKKwkJCQkJCSAiU0VM RUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKKwkJCQkJCSAicGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBycmVscXVhbCAiCiAJCQkJ CQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwiKTsKIAlyZXMgPSBFeGVj dXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKQEAg LTQxMDEsNiArNDEwMyw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9vaWQgPSBQUWZudW1i ZXIocmVzLCAib2lkIik7CiAJaV9wcnB1YmlkID0gUFFmbnVtYmVyKHJlcywgInBycHViaWQi KTsKIAlpX3BycmVsaWQgPSBQUWZudW1iZXIocmVzLCAicHJyZWxpZCIpOworCWlfcHJyZWxx dWFsID0gUFFmbnVtYmVyKHJlcywgInBycmVscXVhbCIpOwogCiAJLyogdGhpcyBhbGxvY2F0 aW9uIG1heSBiZSBtb3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnJpbmZvID0gcGdfbWFsbG9j KG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOwpAQCAtNDE0MSw2ICs0MTQ0 LDEwIEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0 YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCXB1YnJpbmZvW2pdLmRvYmoubmFtZSA9IHRi aW5mby0+ZG9iai5uYW1lOwogCQlwdWJyaW5mb1tqXS5wdWJsaWNhdGlvbiA9IHB1YmluZm87 CiAJCXB1YnJpbmZvW2pdLnB1YnRhYmxlID0gdGJpbmZvOworCQlpZiAoUFFnZXRpc251bGwo cmVzLCBpLCBpX3BycmVscXVhbCkpCisJCQlwdWJyaW5mb1tqXS5wdWJyZWxxdWFsID0gTlVM TDsKKwkJZWxzZQorCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9wcnJlbHF1YWwpKTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3 ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVQdWJsaWNhdGlvblRhYmxl KCYocHVicmluZm9bal0uZG9iaiksIGZvdXQpOwpAQCAtNDE3Myw4ICs0MTgwLDExIEBAIGR1 bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIFB1YmxpY2F0aW9uUmVsSW5mbyAq cHVicmluZm8pCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBVQkxJQ0FU SU9OICVzIEFERCBUQUJMRSBPTkxZIiwKIAkJCQkJICBmbXRJZChwdWJpbmZvLT5kb2JqLm5h bWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAlcztcbiIsCisJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICIgJXMiLAogCQkJCQkgIGZtdFF1YWxpZmllZER1bXBhYmxlKHRi aW5mbykpOworCWlmIChwdWJyaW5mby0+cHVicmVscXVhbCkKKwkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksICIgV0hFUkUgJXMiLCBwdWJyaW5mby0+cHVicmVscXVhbCk7CisJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICI7XG4iKTsKIAogCS8qCiAJICogVGhlcmUgaXMgbm8g cG9pbnQgaW4gY3JlYXRpbmcgYSBkcm9wIHF1ZXJ5IGFzIHRoZSBkcm9wIGlzIGRvbmUgYnkg dGFibGUKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDEyOTBmOTY1OWIuLjc5MjcwMzlkMWQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaApAQCAtNjI1LDYgKzYyNSw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNh dGlvblJlbEluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCVB1YmxpY2F0aW9uSW5mbyAq cHVibGljYXRpb247CiAJVGFibGVJbmZvICAqcHVidGFibGU7CisJY2hhcgkgICAqcHVicmVs cXVhbDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiAvKgotLSAKMi4yMC4xCgo= --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0006-Debug-messages.patch" Content-Type: text/x-patch; name="v10-0006-Debug-messages.patch" Content-Transfer-Encoding: BASE64 RnJvbSA3YTg1NWRmMzJjNDU2ZWFkOGYwNjM0ZjEyMmM1NjljODIwMjJiYTg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IEZyaSwgMjkgSmFuIDIwMjEgMjM6Mjg6MTMgLTAzMDAK U3ViamVjdDogW1BBVENIIDYvN10gRGVidWcgbWVzc2FnZXMKCi0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8IDE0ICsrKysrKysrKysrKysrCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbCAgIHwgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggZGQ2ZjNiZGEzYS4uMTdhNzI4YzBi ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CkBAIC01MTgsNiArNTE4LDEwIEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAogCXJldCA9IEV4ZWNF dmFsRXhwclN3aXRjaENvbnRleHQoc3RhdGUsIGVjb250ZXh0LCAmaXNudWxsKTsKIAorCWVs b2coREVCVUcyLCAicGdvdXRwdXRfcm93X2ZpbHRlcl9leGVjX2V4cHI6IHJldDogJWQgOyBp c251bGw6ICVkIiwKKwkJIERhdHVtR2V0Qm9vbChyZXQpID8gMSA6IDAsCisJCSBpc251bGwg PyAxIDogMCk7CisKIAlpZiAoaXNudWxsKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTU0Myw2 ICs1NDcsOCBAQCBwZ291dHB1dF9yb3dfZmlsdGVyKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBsZSwgTAogCWlmIChsaXN0X2xlbmd0 aChyb3dmaWx0ZXIpID09IDApCiAJCXJldHVybiB0cnVlOwogCisJZWxvZyhERUJVRzEsICJ0 YWJsZSAlcyBoYXMgcm93IGZpbHRlciIsIGdldF9yZWxfbmFtZShyZWxhdGlvbi0+cmRfaWQp KTsKKwogCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKIAogCWVzdGF0 ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJlbGF0aW9uKTsKQEAgLTU2Niw2ICs1 NzIsNyBAQCBwZ291dHB1dF9yb3dfZmlsdGVyKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVw bGUgb2xkdHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBsZSwgTAogCQlPaWQJCQlleHBydHlwZTsK IAkJRXhwcgkgICAqZXhwcjsKIAkJRXhwclN0YXRlICAqZXhwcnN0YXRlOworCQljaGFyCSAg ICpzID0gTlVMTDsKIAogCQkvKiBQcmVwYXJlIGV4cHJlc3Npb24gZm9yIGV4ZWN1dGlvbiAq LwogCQlleHBydHlwZSA9IGV4cHJUeXBlKHJmbm9kZSk7CkBAIC01ODUsNiArNTkyLDEzIEBA IHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0 dXBsZSwgSGVhcFR1cGxlIG5ld3R1cGxlLCBMCiAJCXJlc3VsdCA9IHBnb3V0cHV0X3Jvd19m aWx0ZXJfZXhlY19leHByKGV4cHJzdGF0ZSwgZWN4dCk7CiAKIAkJLyogSWYgdGhlIHR1cGxl IGRvZXMgbm90IG1hdGNoIG9uZSBvZiB0aGUgcm93IGZpbHRlcnMsIGJhaWwgb3V0ICovCisJ CXMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4 cHIsIENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHJmbm9kZSkpLCBPYmplY3RJ ZEdldERhdHVtKHJlbGF0aW9uLT5yZF9pZCkpKTsKKwkJaWYgKHJlc3VsdCkKKwkJCWVsb2co REVCVUcyLCAicGdvdXRwdXRfcm93X2ZpbHRlcjogcm93IGZpbHRlciBcIiVzXCIgbWF0Y2hl ZCIsIHMpOworCQllbHNlCisJCQllbG9nKERFQlVHMiwgInBnb3V0cHV0X3Jvd19maWx0ZXI6 IHJvdyBmaWx0ZXIgXCIlc1wiIG5vdCBtYXRjaGVkIiwgcyk7CisJCXBmcmVlKHMpOworCiAJ CWlmICghcmVzdWx0KQogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjBfcm93X2ZpbHRlci5wbAppbmRleCBiOGMwNTlkNDRiLi5lYTFkN2MzMGFlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbApAQCAtOCw2ICs4 LDcgQEAgdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNjsKICMgY3JlYXRlIHB1Ymxpc2hlciBu b2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBnZXRfbmV3X25vZGUoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK KyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdsb2df bWluX21lc3NhZ2VzID0gREVCVUcyJyk7CiAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogCiAj IGNyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKLS0gCjIuMjAuMQoK --282c6f46d8fe408e912efdbc08c7b0f8 Content-Disposition: attachment;filename="v10-0007-Measure-row-filter-overhead.patch" Content-Type: text/x-patch; name="v10-0007-Measure-row-filter-overhead.patch" Content-Transfer-Encoding: BASE64 RnJvbSBhODYxMTQ1MTc1YzA0YzI1ZmM3ZGI2NjJiNTVkZDdhOWNmZGRiY2NkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFN1biwgMzEgSmFuIDIwMjEgMjA6NDg6NDMgLTAzMDAK U3ViamVjdDogW1BBVENIIDcvN10gTWVhc3VyZSByb3cgZmlsdGVyIG92ZXJoZWFkCgotLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgfCA5ICsrKysr KysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDE3YTcyOGMwYmYuLmVi ZDQ1YzFjODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwpAQCAtNTQyLDYgKzU0Miw4IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXBsZSwgSGVhcFR1cGxlIG5ld3R1cGxlLCBM CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJTGlzdENlbGwgICAqbGM7CiAJYm9vbAkJcmVz dWx0ID0gdHJ1ZTsKKwlpbnN0cl90aW1lCXN0YXJ0X3RpbWU7CisJaW5zdHJfdGltZQllbmRf dGltZTsKIAogCS8qIEJhaWwgb3V0IGlmIHRoZXJlIGlzIG5vIHJvdyBmaWx0ZXIgKi8KIAlp ZiAobGlzdF9sZW5ndGgocm93ZmlsdGVyKSA9PSAwKQpAQCAtNTQ5LDYgKzU1MSw4IEBAIHBn b3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXBs ZSwgSGVhcFR1cGxlIG5ld3R1cGxlLCBMCiAKIAllbG9nKERFQlVHMSwgInRhYmxlICVzIGhh cyByb3cgZmlsdGVyIiwgZ2V0X3JlbF9uYW1lKHJlbGF0aW9uLT5yZF9pZCkpOwogCisJSU5T VFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1lKTsKKwogCXR1cGRlc2MgPSBSZWxhdGlv bkdldERlc2NyKHJlbGF0aW9uKTsKIAogCWVzdGF0ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3Jl bGF0aW9uKHJlbGF0aW9uKTsKQEAgLTYwNiw2ICs2MTAsMTEgQEAgcGdvdXRwdXRfcm93X2Zp bHRlcihSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLCBIZWFwVHVwbGUg bmV3dHVwbGUsIEwKIAlSZXNldEV4cHJDb250ZXh0KGVjeHQpOwogCUZyZWVFeGVjdXRvclN0 YXRlKGVzdGF0ZSk7CiAKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZF90aW1lKTsKKwlJ TlNUUl9USU1FX1NVQlRSQUNUKGVuZF90aW1lLCBzdGFydF90aW1lKTsKKworCWVsb2coREVC VUcyLCAicm93IGZpbHRlciB0aW1lOiAlMC4zZiB1cyIsIElOU1RSX1RJTUVfR0VUX0RPVUJM RShlbmRfdGltZSkgKiAxZTYpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAKMi4yMC4x Cgo= --282c6f46d8fe408e912efdbc08c7b0f8--