Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9DAg-001GZi-2m for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 02:25:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9DAf-001CqY-18 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 02:25:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9DAe-001CqP-2h for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 02:25:05 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9DAb-00000000ew8-3iNQ for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 02:25:04 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-68313a00e79so749378eaf.2 for ; Sat, 04 Apr 2026 19:25:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775355901; cv=none; d=google.com; s=arc-20240605; b=NKFbNe9rG3rht9O/iVJbesDG1kMiqocWG9c4q7t84IeQPxlAX/A0YexSXKgO18rtvE DExHyJGcioCpb86Pv+4Kfh9J/wNCsokBVuKTGa1KisJ6VVAnEgcWLdbg15TsFjkNGyW7 yZdZhtwd6WHQYMTWf8u4w69WDwD9iEaFg5gS2NgceK9SBGrSnovuV42POJYQQ4JJKqVj iWc6Z43O8/y18+YFrGc9/mRys/lUp4ThKylmEqgJEeGRWqsg0x5lw+VqypSCdVYY7qBi 5LmUrbO6vNRqlS4dZ65t5go9rN/oChgj3IPEEueZatXiBoDIVl+ZBycKXZud9lWah6EB IaTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=yat0l1kXO5TpKNWS+u2711xRpCjjyfo0Kd39kC0ypog=; fh=RVqgAPMGUp48x9yz3OjxV0ZPYobbm7RLYUPphDDw2hY=; b=gp82apajmP7BYLbz4FC8NGwnvD1Zlx4asNyDeeFbaXGIWN6lBtQiRg/K4dd8qfp8l4 u/IaMjbFEdi/Rm0G+FEsjkVieBu5g7HmSMbhYC36WlE622BU8eFo2iA+7WUVDZKiczv/ sfAZW57fvt/Jkd0Wh780qkSRmnBSTMfHzl+iyiXhJ2vs1/mlTdEmICt6mv4rRv1ciFr5 g7kGWf8N3LlGzNFzhdX8UJNBdfmTVh19KtfwaKj7VodPz1lpC1KQKb6hxNliCqi2x7qO KBsAQOCBjlne6pWucUTWVksdIsadRvghLykS3RBgNVSMH9Q/bhytWobYVpkl9qsexg+/ 6BFg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775355901; x=1775960701; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yat0l1kXO5TpKNWS+u2711xRpCjjyfo0Kd39kC0ypog=; b=Z4oIjANYby3MUlILvtvBhtGdZarnoNPSEnrWdU52sO6SYHSRFBmgPUDgCK8ZQOfbNc 7qWneGfKmp9MUevdUOvZt43KN1jBwciLLpgoyQ61w7tIFmG5fbZsAkbWlXRLKrYx+mII XzTM9IKSBHaNSaDkb4az1TjR+n6mVBWS71bp/BhfgSO+rnrowyEEgucIMYVU5vzOkTFT 5sjQFupfuA81va8WvllyMBi2GynDPNrW9BnwaEXshfdiz4pTVY67PQI67IczGwTob+Kn tQb4f894TpHvfZ1teIuVMqAlUfQdq01ZFshLd9Tj9fFW6AjZRDYrBDPn7A/EPkC4iUtz 4UZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775355901; x=1775960701; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yat0l1kXO5TpKNWS+u2711xRpCjjyfo0Kd39kC0ypog=; b=ahDnJmg9W62e6vyLwSSLvPo7yPgu9+UmZmE5WxQN/0laWPCJnaJnc8GbbHTutOkRpr YDQlhpvcfMOAiLBFo/cS7pW4mP0x/6v0sO7sKy7hgml/fPGE1P0xz5JhRGNbB4GhL/SW vcFRD4ANKhMfzkk3y32OL6XsCNoB1NrbwGXFjbqYGbylXZysKmroHgA3dkMbAYjkXfDX mv2CfhHNjMUMl1LU1Vml9vNcybAK8MJMGS+vETa/vz8LB3ARRMKbbvI4RBGjhg1Ll01y WhFYSFIQuNPbUtHil0Ex3CnYlNbUTVxoIk/nKd4mm1Y3KYWe9A+Rug4yIybjqFBz4vPV yc6A== X-Forwarded-Encrypted: i=1; AJvYcCVP3RNCJpuo8p8oYQ83Fgp4MPez5hZ/uCPW5w36GQTfnlT+ApvIVVBFRju9llHUUUgrFzXLxO6DDizPa/4Z@postgresql.org X-Gm-Message-State: AOJu0YyPGQv5oRBrJn9ytYf6t7tPMgicTDSzouSy4WAPI1e/cmxspSuw qDvuHubLKptp8Rl9abqz0R3mtaXKDze6xvW7UcuY+sB3DOP/3LnHw6r0A0EMzncfJ3dWdhyVe7e lTMNVOUNZGW0mZoUxbCqLTnpz9eWdWVAgoNP2w4M= X-Gm-Gg: AeBDievCPKnf0R29nSmhUXkFUGUtU/NPrr60yLHlMWNgtfaxWmel8JKF3XbYd3hZxX3 0g5A5WfL5dJrTklBVT7LKfdTdQzdEtarU+yVWNfnfUUjdUd1mMCtE7Z0ejfcBLUImQJEJ1bLqJF F94/PuptMVgIBD/Uc9FFBdL35DIOwrfEP8ltSCtI1pRVcdYjhWihLztTyZl20kXiIMVuxxc8nTc WHICpvhW0noJR0c4vWntNi7S+Dm1I5xUwwlqEX3i92KZBm0eCgBRYB9GnYHSPy9A664nH/QBuRr 3nBB9GPyST4ryOrRwxgj2vTt7iL52+oPwUqY4XjA/ulphsmNFkcCsA3H5JDpOJSf4pPg8rLL8Z4 fvpXW1iGxZT59gziAPeYmwZ86EHMcO21ZXoM7t4I= X-Received: by 2002:a05:6820:221c:b0:685:1f41:b235 with SMTP id 006d021491bc7-6851f41b4f5mr358289eaf.53.1775355900635; Sat, 04 Apr 2026 19:25:00 -0700 (PDT) MIME-Version: 1.0 References: <59be194c5a409fb9fc9f2031581b8a44@postgrespro.ru> <2fb1d9923b6995492e7b163e6cb95402@postgrespro.ru> <782a968c8e01ec6db3b2da2120adf73b@postgrespro.ru> <554a73f7ffea8b22b3f81a4804b5fc34@postgrespro.ru> <42a9a941-e768-4fd8-8067-12958c5a1d70@gmail.com> In-Reply-To: <42a9a941-e768-4fd8-8067-12958c5a1d70@gmail.com> From: Alexander Korotkov Date: Sun, 5 Apr 2026 05:24:48 +0300 X-Gm-Features: AQROBzBA09XO8bUbfuEZSJRR0Pd1OsdqIJ3iF5tjFz7jA7XEZJVw0c3IidHuO9w Message-ID: Subject: Re: Asynchronous MergeAppend To: Matheus Alcantara Cc: Alexander Pyhalov , Pgsql Hackers Content-Type: multipart/mixed; boundary="000000000000ced44b064ead416c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ced44b064ead416c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Mon, Mar 30, 2026 at 3:25=E2=80=AFPM Matheus Alcantara wrote: > On 29/03/26 22:20, Alexander Korotkov wrote: > > Thank you for your work on this subject. > > I have revised the patchset. I think it would be better if common > > infrastructure goes first. Otherwise we commit async merge append and > > immediately revise it. I also did some minor improvements. > > > > I was thinking about this but did not managed to spent time on it. > Thanks for re-organizing the patches, it looks better and I think that > it make more sense on this order. > > I also agree with the minor improvements. I made more work on the patchset. Patch #1 now considers IncrementalSort as exclusion alongside with Sort. Exclusion check is now on the top of the switch(). Patch #2 is split into 3 patches: common structures, common sync append logic, and common async append logic. New structs are now named AppendBase/AppendBaseState, corresponding fields are "ab" and "as". Most importantly I noted that this patchset actually only makes initial heap filling asynchronous. The steady work after that is still syncnronous. Even that it used async infrastructure, it fetched tuples from children subplans one-by-one: effectively synchronous but paying for asynchronous infrastructure. I think even with this limitation, this patchset is valuable: the startup cost for children foreignscans can be high. But this understanding allowed me to significantly simplify the main patch including: 1) After initial heap filling, use ExecProcNode() to fetch from children pl= ans. 2) Remove ms_has_asyncresults entirely. Async responses store directly into ms_slots[] (the existing heap slot array), which serves as both the merge state and the "result arrived" indicator via TupIsNull(). 3) Removed needrequest usage from MergeAppend. Since MergeAppend only fires initial requests (via ExecAppendBaseAsyncBegin()) and never sends follow-up requests, needrequest tracking is unnecessary. ExecMergeAppendAsyncRequest() was eliminated entirely. 4) ExecMergeAppendAsyncGetNext() reduced to a simple wait loop: 5) asyncresults allocation reduced back to nasyncplans. MergeAppend doesn't use it (stores in ms_slots), and Append only needs nasyncplans entries for its stack. Additionally, I made the following changes. 1) WAIT_EVENT_MERGE_APPEND_READY wait event instead of extending WAIT_EVENT_APPEND_READY. That should be less confusing for monitoring purposes. 2) More tests: error handling with broken partition, plan-time partition pruning, and run-time partition pruning tests for async MergeAppend. I'm going to went through this patchset another time tomorrow and push it on Monday if there are no objections. ------ Regards, Alexander Korotkov Supabase --000000000000ced44b064ead416c Content-Type: application/octet-stream; name="v17-0005-MergeAppend-should-support-Async-Foreign-Scan-su.patch" Content-Disposition: attachment; filename="v17-0005-MergeAppend-should-support-Async-Foreign-Scan-su.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnl4h7lc4 RnJvbSA3Y2ViYzBkYTlkYTgwZjk3M2U5ODVjYmQxNmNiYzRlMzJjNDBiNWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjQ3OjEwICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgNS81XSBNZXJnZUFwcGVuZCBzaG91bGQgc3VwcG9ydCBBc3luYyBGb3JlaWduIFNj YW4KIHN1YnBsYW5zCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGNvbW1p dCBtYWtlcyB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBhc3luYy1jYXBhYmxlLCBzaW1pbGFyIHRvIHRo ZSBleGlzdGluZwphc3luYyBzdXBwb3J0IGZvciBBcHBlbmQgbm9kZXMuIFdoZW4gdGhlIHBsYW5u ZXIgY2hvb3NlcyBNZXJnZUFwcGVuZCBmb3IKcGFydGl0aW9uZWQgdGFibGVzIHdpdGggZm9yZWln biBwYXJ0aXRpb25zLCBhc3luY2hyb25vdXMgZXhlY3V0aW9uIGlzIG5vdwpwb3NzaWJsZS4KClRo ZSBwcmltYXJ5IGJlbmVmaXQgaXMgZHVyaW5nIHRoZSBpbml0aWFsIGhlYXAgZmlsbDogYWxsIGFz eW5jIHN1YnBsYW5zIGFyZQpraWNrZWQgb2ZmIGNvbmN1cnJlbnRseSwgc28gdGhlaXIgZmlyc3Qg dHVwbGVzIGFyZSBmZXRjaGVkIGluIHBhcmFsbGVsIHJhdGhlcgp0aGFuIHNlcXVlbnRpYWxseS4g SW4gc3RlYWR5IHN0YXRlLCBob3dldmVyLCB0aGUgaGVhcCBtZXJnZSBhbGdvcml0aG0gbmVlZHMK dGhlIG5leHQgdHVwbGUgZnJvbSBvbmUgc3BlY2lmaWMgc3VicGxhbiAodGhlIGhlYXAgdG9wKSwg c28gZXhlY3V0aW9uIGF0CnRoYXQgcG9pbnQgaXMgZWZmZWN0aXZlbHkgc3luY2hyb25vdXMg4oCU IHdlIGJsb2NrIHVudGlsIHRoYXQgcGFydGljdWxhcgpzdWJwbGFuIGRlbGl2ZXJzIGl0cyByZXN1 bHQuCgpBIG5ldyBHVUMgZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCBjb250cm9scyB0aGlzIGZl YXR1cmUgKGRlZmF1bHQgb24pLgpBIG5ldyB3YWl0IGV2ZW50IE1FUkdFX0FQUEVORF9SRUFEWSBp cyBhZGRlZCAoc2VwYXJhdGUgZnJvbSBBUFBFTkRfUkVBRFkpCnNvIHRoYXQgbW9uaXRvcmluZyB0 b29scyBjYW4gZGlzdGluZ3Vpc2ggdGhlIHR3byBub2RlIHR5cGVzLgoKVGhlIHBvc3RncmVzX2Zk dyBpcyB1cGRhdGVkIHRvIHdvcmsgZ2VuZXJpY2FsbHkgd2l0aCBib3RoIEFwcGVuZCBhbmQKTWVy Z2VBcHBlbmQgcmVxdWVzdG9ycyBieSBjYXN0aW5nIHRvIHRoZSBzaGFyZWQgQXBwZW5kQmFzZVN0 YXRlIHR5cGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzU5YmUxOTRjNWE0MDlm YjlmYzlmMjAzMTU4MWI4YTQ0JTQwcG9zdGdyZXNwcm8ucnUKQXV0aG9yOiBBbGV4YW5kZXIgUHlo YWxvdiA8YS5weWhhbG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNh bnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZW5hIFJ5YmFr aW5hIDxhLnJ5YmFraW5hQHBvc3RncmVzcHJvLnJ1PgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDM1MyArKysrKysrKysrKysrKysrKysKIGNvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgNiArLQogY29udHJp Yi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgMTA1ICsrKysrKwogZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgICAgfCAxNjggKysrKysrKysrCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICA5ICsKIC4uLi91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvb3B0 aW1pemVyL2Nvc3QuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogMTUgZmlsZXMgY2hhbmdlZCwg Njc0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMGY1MjcxZDQ3NmUuLmUzZjgwZTc1 MmY3IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQKQEAgLTExNTc1LDEyICsxMTU3NSw1NiBAQCBTRUxFQ1QgKiBGUk9NIHJlc3VsdF90YmwgT1JE RVIgQlkgYTsKICgyIHJvd3MpCiAKIERFTEVURSBGUk9NIHJlc3VsdF90Ymw7CistLSBUZXN0IE1l cmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBh c3luY19wdCBXSEVSRSBiICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBNZXJnZSBBcHBlbmQKKyAgIFNvcnQgS2V5OiBhc3luY19wdC5iLCBhc3lu Y19wdC5hCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMSBhc3lu Y19wdF8xCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzEuYSwgYXN5bmNfcHRfMS5iLCBhc3lu Y19wdF8xLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGlj LmJhc2VfdGJsMSBXSEVSRSAoKChiICUgMTAwKSA9IDApKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBM QVNULCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1Ymxp Yy5hc3luY19wMiBhc3luY19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzIuYSwgYXN5 bmNfcHRfMi5iLCBhc3luY19wdF8yLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBi LCBjIEZST00gcHVibGljLmJhc2VfdGJsMiBXSEVSRSAoKChiICUgMTAwKSA9IDApKSBPUkRFUiBC WSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisoOCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgJSAxMDAgPSAwIE9SREVSIEJZIGIsIGE7CisgIGEgICB8 ICBiICB8ICBjICAgCistLS0tLS0rLS0tLS0rLS0tLS0tCisgMTAwMCB8ICAgMCB8IDAwMDAKKyAy MDAwIHwgICAwIHwgMDAwMAorIDExMDAgfCAxMDAgfCAwMTAwCisgMjEwMCB8IDEwMCB8IDAxMDAK KyAxMjAwIHwgMjAwIHwgMDIwMAorIDIyMDAgfCAyMDAgfCAwMjAwCisgMTMwMCB8IDMwMCB8IDAz MDAKKyAyMzAwIHwgMzAwIHwgMDMwMAorIDE0MDAgfCA0MDAgfCAwNDAwCisgMjQwMCB8IDQwMCB8 IDA0MDAKKyAxNTAwIHwgNTAwIHwgMDUwMAorIDI1MDAgfCA1MDAgfCAwNTAwCisgMTYwMCB8IDYw MCB8IDA2MDAKKyAyNjAwIHwgNjAwIHwgMDYwMAorIDE3MDAgfCA3MDAgfCAwNzAwCisgMjcwMCB8 IDcwMCB8IDA3MDAKKyAxODAwIHwgODAwIHwgMDgwMAorIDI4MDAgfCA4MDAgfCAwODAwCisgMTkw MCB8IDkwMCB8IDA5MDAKKyAyOTAwIHwgOTAwIHwgMDkwMAorKDIwIHJvd3MpCisKIC0tIFRlc3Qg ZXJyb3IgaGFuZGxpbmcsIGlmIGFjY2Vzc2luZyBvbmUgb2YgdGhlIGZvcmVpZ24gcGFydGl0aW9u cyBlcnJvcnMgb3V0CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBhc3luY19wX2Jyb2tlbiBQQVJUSVRJ T04gT0YgYXN5bmNfcHQgRk9SIFZBTFVFUyBGUk9NICgxMDAwMCkgVE8gKDEwMDAxKQogICBTRVJW RVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnbm9uX2V4aXN0ZW50X3RhYmxlJyk7CiBT RUxFQ1QgKiBGUk9NIGFzeW5jX3B0OwogRVJST1I6ICByZWxhdGlvbiAicHVibGljLm5vbl9leGlz dGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKIENPTlRFWFQ6ICByZW1vdGUgU1FMIGNvbW1hbmQ6 IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLm5vbl9leGlzdGVudF90YWJsZQorLS0gVGVzdCBl cnJvciBoYW5kbGluZyBmb3IgYXN5bmMgTWVyZ2UgQXBwZW5kCitTRUxFQ1QgKiBGUk9NIGFzeW5j X3B0IE9SREVSIEJZIGIsIGE7CitFUlJPUjogIHJlbGF0aW9uICJwdWJsaWMubm9uX2V4aXN0ZW50 X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorQ09OVEVYVDogIHJlbW90ZSBTUUwgY29tbWFuZDogU0VM RUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMubm9uX2V4aXN0ZW50X3RhYmxlIE9SREVSIEJZIGIgQVND IE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKIERST1AgRk9SRUlHTiBUQUJMRSBhc3luY19w X2Jyb2tlbjsKIC0tIENoZWNrIGNhc2Ugd2hlcmUgbXVsdGlwbGUgcGFydGl0aW9ucyB1c2UgdGhl IHNhbWUgY29ubmVjdGlvbgogQ1JFQVRFIFRBQkxFIGJhc2VfdGJsMyAoYSBpbnQsIGIgaW50LCBj IHRleHQpOwpAQCAtMTE2MjMsNiArMTE2NjcsNzYgQEAgQ09QWSBhc3luY19wdCBUTyBzdGRvdXQ7 IC0tZXJyb3IKIEVSUk9SOiAgY2Fubm90IGNvcHkgZnJvbSBmb3JlaWduIHRhYmxlICJhc3luY19w MSIKIERFVEFJTDogIFBhcnRpdGlvbiAiYXN5bmNfcDEiIGlzIGEgZm9yZWlnbiB0YWJsZSBpbiBw YXJ0aXRpb25lZCB0YWJsZSAiYXN5bmNfcHQiCiBISU5UOiAgVHJ5IHRoZSBDT1BZIChTRUxFQ1Qg Li4uKSBUTyB2YXJpYW50LgorLS0gVGVzdCBNZXJnZSBBcHBlbmQKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVS IEJZIGIsIGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEFw cGVuZAorICAgU29ydCBLZXk6IGFzeW5jX3B0LmIsIGFzeW5jX3B0LmEKKyAgIC0+ICBBc3luYyBG b3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgIE91dHB1 dDogYXN5bmNfcHRfMS5hLCBhc3luY19wdF8xLmIsIGFzeW5jX3B0XzEuYworICAgICAgICAgRmls dGVyOiAoYXN5bmNfcHRfMS5iID09PSA1MDUpCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1Qg YSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDEgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwg YSBBU0MgTlVMTFMgTEFTVAorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5 bmNfcDIgYXN5bmNfcHRfMgorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8yLmEsIGFzeW5jX3B0 XzIuYiwgYXN5bmNfcHRfMi5jCisgICAgICAgICBGaWx0ZXI6IChhc3luY19wdF8yLmIgPT09IDUw NSkKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2Vf dGJsMiBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAg QXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMyBhc3luY19wdF8zCisgICAgICAg ICBPdXRwdXQ6IGFzeW5jX3B0XzMuYSwgYXN5bmNfcHRfMy5iLCBhc3luY19wdF8zLmMKKyAgICAg ICAgIEZpbHRlcjogKGFzeW5jX3B0XzMuYiA9PT0gNTA1KQorICAgICAgICAgUmVtb3RlIFNRTDog U0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwzIE9SREVSIEJZIGIgQVNDIE5VTExT IExBU1QsIGEgQVNDIE5VTExTIExBU1QKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGFzeW5j X3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBhOworICBhICAgfCAgYiAgfCAgYyAgIAor LS0tLS0tKy0tLS0tKy0tLS0tLQorIDE1MDUgfCA1MDUgfCAwNTA1CisgMjUwNSB8IDUwNSB8IDA1 MDUKKyAzNTA1IHwgNTA1IHwgMDUwNQorKDMgcm93cykKKworLS0gVGVzdCBhc3luYyBNZXJnZSBB cHBlbmQgcmVzY2FuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QKKwlBUlJB WShTRUxFQ1QgZi5pIEZST00gKFNFTEVDVCBiICsgZy5pIEZST00gYXN5bmNfcHQgV0hFUkUgYSA+ IGcuaSBPUkRFUiBCWSBiKSBmKGkpIE9SREVSIEJZIGYuaSBMSU1JVCAxMCkKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIGcoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBnCisgICBPdXRw dXQ6IEFSUkFZKFN1YlBsYW4gYXJyYXlfMSkKKyAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3Nl cmllcygxLCAzKQorICAgU3ViUGxhbiBhcnJheV8xCisgICAgIC0+ICBMaW1pdAorICAgICAgICAg ICBPdXRwdXQ6IGYuaQorICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICBPdXRw dXQ6IGYuaQorICAgICAgICAgICAgICAgICBTb3J0IEtleTogZi5pCisgICAgICAgICAgICAgICAg IC0+ICBTdWJxdWVyeSBTY2FuIG9uIGYKKyAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBm LmkKKyAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEFwcGVuZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTb3J0IEtleTogYXN5bmNfcHQuYgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMSBhc3lu Y19wdF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogKGFzeW5j X3B0XzEuYiArIGcuaSksIGFzeW5jX3B0XzEuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiBGUk9NIHB1YmxpYy5iYXNlX3RibDEgV0hFUkUg KChhID4gJDE6OmludGVnZXIpKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNUCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5j X3AyIGFzeW5jX3B0XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiAoYXN5bmNfcHRfMi5iICsgZy5pKSwgYXN5bmNfcHRfMi5iCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGljLmJhc2VfdGJs MiBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJs aWMuYXN5bmNfcDMgYXN5bmNfcHRfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IChhc3luY19wdF8zLmIgKyBnLmkpLCBhc3luY19wdF8zLmIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGIgRlJPTSBwdWJsaWMu YmFzZV90YmwzIFdIRVJFICgoYSA+ICQxOjppbnRlZ2VyKSkgT1JERVIgQlkgYiBBU0MgTlVMTFMg TEFTVAorKDIyIHJvd3MpCisKK1NFTEVDVAorCUFSUkFZKFNFTEVDVCBmLmkgRlJPTSAoU0VMRUNU IGIgKyBnLmkgRlJPTSBhc3luY19wdCBXSEVSRSBhID4gZy5pIE9SREVSIEJZIGIpIGYoaSkgT1JE RVIgQlkgZi5pIExJTUlUIDEwKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZyhpKTsKKyAg ICAgICAgICAgYXJyYXkgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ezEsMSwxLDYsNiw2LDExLDExLDExLDE2fQorIHsyLDIsMiw3LDcsNywxMiwxMiwxMiwxN30KKyB7 MywzLDMsOCw4LDgsMTMsMTMsMTMsMTh9CisoMyByb3dzKQorCiBEUk9QIEZPUkVJR04gVEFCTEUg YXN5bmNfcDM7CiBEUk9QIFRBQkxFIGJhc2VfdGJsMzsKIC0tIENoZWNrIGNhc2Ugd2hlcmUgdGhl IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBsb2NhbC9yZW1vdGUgcGFydGl0aW9ucwpAQCAtMTE2NTgs NiArMTE3NzIsMzcgQEAgU0VMRUNUICogRlJPTSByZXN1bHRfdGJsIE9SREVSIEJZIGE7CiAoMyBy b3dzKQogCiBERUxFVEUgRlJPTSByZXN1bHRfdGJsOworLS0gVGVzdCBNZXJnZSBBcHBlbmQKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUg YiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6IGFzeW5jX3B0LmIsIGFzeW5jX3B0LmEK KyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AxIGFzeW5jX3B0XzEK KyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMS5hLCBhc3luY19wdF8xLmIsIGFzeW5jX3B0XzEu YworICAgICAgICAgRmlsdGVyOiAoYXN5bmNfcHRfMS5iID09PSA1MDUpCisgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDEgT1JERVIgQlkgYiBB U0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNfcHRfMgorICAgICAgICAgT3V0cHV0OiBhc3luY19w dF8yLmEsIGFzeW5jX3B0XzIuYiwgYXN5bmNfcHRfMi5jCisgICAgICAgICBGaWx0ZXI6IChhc3lu Y19wdF8yLmIgPT09IDUwNSkKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZS T00gcHVibGljLmJhc2VfdGJsMiBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxM UyBMQVNUCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8zLmEsIGFzeW5j X3B0XzMuYiwgYXN5bmNfcHRfMy5jCisgICAgICAgICBTb3J0IEtleTogYXN5bmNfcHRfMy5iLCBh c3luY19wdF8zLmEKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDMgYXN5 bmNfcHRfMworICAgICAgICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8zLmEsIGFzeW5jX3B0XzMu YiwgYXN5bmNfcHRfMy5jCisgICAgICAgICAgICAgICBGaWx0ZXI6IChhc3luY19wdF8zLmIgPT09 IDUwNSkKKygxNiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUw NSBPUkRFUiBCWSBiLCBhOworICBhICAgfCAgYiAgfCAgYyAgIAorLS0tLS0tKy0tLS0tKy0tLS0t LQorIDE1MDUgfCA1MDUgfCAwNTA1CisgMjUwNSB8IDUwNSB8IDA1MDUKKyAzNTA1IHwgNTA1IHwg MDUwNQorKDMgcm93cykKKwogLS0gcGFydGl0aW9ud2lzZSBqb2lucwogU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKIENSRUFURSBUQUJMRSBqb2luX3RibCAoYTEgaW50LCBi MSBpbnQsIGMxIHRleHQsIGEyIGludCwgYjIgaW50LCBjMiB0ZXh0KTsKQEAgLTExODUzLDYgKzEx OTk4LDIxIEBAIFNFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYSA8IDIwMDA7CiAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDEgV0hFUkUgKChhIDwg MjAwMCkpCiAoMyByb3dzKQogCistLSBUZXN0IGludGVyYWN0aW9uIG9mIGFzeW5jIE1lcmdlIEFw cGVuZCB3aXRoIHBsYW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBhIDwgMzAwMCBPUkRFUiBC WSBiLCBhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6IGFz eW5jX3B0LmIsIGFzeW5jX3B0LmEKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGlj LmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMS5hLCBhc3lu Y19wdF8xLmIsIGFzeW5jX3B0XzEuYworICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIs IGMgRlJPTSBwdWJsaWMuYmFzZV90YmwxIFdIRVJFICgoYSA8IDMwMDApKSBPUkRFUiBCWSBiIEFT QyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2Fu IG9uIHB1YmxpYy5hc3luY19wMiBhc3luY19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0 XzIuYSwgYXN5bmNfcHRfMi5iLCBhc3luY19wdF8yLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMiBXSEVSRSAoKGEgPCAzMDAwKSkgT1JE RVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAorKDggcm93cykKKwogLS0g VGVzdCBpbnRlcmFjdGlvbiBvZiBhc3luYyBleGVjdXRpb24gd2l0aCBydW4tdGltZSBwYXJ0aXRp b24gcHJ1bmluZwogU0VUIHBsYW5fY2FjaGVfbW9kZSBUTyBmb3JjZV9nZW5lcmljX3BsYW47CiBQ UkVQQVJFIGFzeW5jX3B0X3F1ZXJ5IChpbnQsIGludCkgQVMKQEAgLTExOTA0LDYgKzEyMDY0LDUy IEBAIFNFTEVDVCAqIEZST00gcmVzdWx0X3RibCBPUkRFUiBCWSBhOwogKDEgcm93KQogCiBERUxF VEUgRlJPTSByZXN1bHRfdGJsOworLS0gVGVzdCBpbnRlcmFjdGlvbiBvZiBhc3luYyBNZXJnZSBB cHBlbmQgd2l0aCBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZworUFJFUEFSRSBhc3luY19wdF9t ZXJnZV9xdWVyeSAoaW50LCBpbnQpIEFTCisgIFNFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUg YSA8ICQxIEFORCBiID09PSAkMiBPUkRFUiBCWSBiLCBhOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorRVhFQ1VURSBhc3luY19wdF9tZXJnZV9xdWVyeSAoMzAwMCwgNTA1KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6IGFz eW5jX3B0LmIsIGFzeW5jX3B0LmEKKyAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBBc3lu YyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgIE91 dHB1dDogYXN5bmNfcHRfMS5hLCBhc3luY19wdF8xLmIsIGFzeW5jX3B0XzEuYworICAgICAgICAg RmlsdGVyOiAoYXN5bmNfcHRfMS5iID09PSAkMikKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVD VCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMSBXSEVSRSAoKGEgPCAkMTo6aW50ZWdlcikp IE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKKyAgIC0+ICBBc3lu YyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AyIGFzeW5jX3B0XzIKKyAgICAgICAgIE91 dHB1dDogYXN5bmNfcHRfMi5hLCBhc3luY19wdF8yLmIsIGFzeW5jX3B0XzIuYworICAgICAgICAg RmlsdGVyOiAoYXN5bmNfcHRfMi5iID09PSAkMikKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVD VCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMiBXSEVSRSAoKGEgPCAkMTo6aW50ZWdlcikp IE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKKygxMSByb3dzKQor CitFWEVDVVRFIGFzeW5jX3B0X21lcmdlX3F1ZXJ5ICgzMDAwLCA1MDUpOworICBhICAgfCAgYiAg fCAgYyAgIAorLS0tLS0tKy0tLS0tKy0tLS0tLQorIDE1MDUgfCA1MDUgfCAwNTA1CisgMjUwNSB8 IDUwNSB8IDA1MDUKKygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK0VY RUNVVEUgYXN5bmNfcHRfbWVyZ2VfcXVlcnkgKDIwMDAsIDUwNSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBBcHBlbmQKKyAgIFNvcnQgS2V5OiBhc3luY19wdC5iLCBh c3luY19wdC5hCisgICBTdWJwbGFucyBSZW1vdmVkOiAyCisgICAtPiAgQXN5bmMgRm9yZWlnbiBT Y2FuIG9uIHB1YmxpYy5hc3luY19wMSBhc3luY19wdF8xCisgICAgICAgICBPdXRwdXQ6IGFzeW5j X3B0XzEuYSwgYXN5bmNfcHRfMS5iLCBhc3luY19wdF8xLmMKKyAgICAgICAgIEZpbHRlcjogKGFz eW5jX3B0XzEuYiA9PT0gJDIpCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBG Uk9NIHB1YmxpYy5iYXNlX3RibDEgV0hFUkUgKChhIDwgJDE6OmludGVnZXIpKSBPUkRFUiBCWSBi IEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisoNyByb3dzKQorCitFWEVDVVRFIGFz eW5jX3B0X21lcmdlX3F1ZXJ5ICgyMDAwLCA1MDUpOworICBhICAgfCAgYiAgfCAgYyAgIAorLS0t LS0tKy0tLS0tKy0tLS0tLQorIDE1MDUgfCA1MDUgfCAwNTA1CisoMSByb3cpCisKIFJFU0VUIHBs YW5fY2FjaGVfbW9kZTsKIENSRUFURSBUQUJMRSBsb2NhbF90YmwoYSBpbnQsIGIgaW50LCBjIHRl eHQpOwogSU5TRVJUIElOVE8gbG9jYWxfdGJsIFZBTFVFUyAoMTUwNSwgNTA1LCAnZm9vJyksICgy NTA1LCA1MDUsICdiYXInKTsKQEAgLTEyNDQwLDYgKzEyNjQ2LDE1MyBAQCBTRUxFQ1QgYSBGUk9N IGJhc2VfdGJsIFdIRVJFIChhLCByYW5kb20oKSA+IDApIElOIChTRUxFQ1QgYSwgcmFuZG9tKCkg PiAwIEZST00gZgogRFJPUCBGT1JFSUdOIFRBQkxFIGZvcmVpZ25fdGJsIENBU0NBREU7CiBOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIGZvcmVpZ24gdGFibGUgZm9yZWlnbl90YmwyCiBEUk9QIFRB QkxFIGJhc2VfdGJsOworLS0gVGVzdCBhc3luYyBNZXJnZSBBcHBlbmQKK0NSRUFURSBUQUJMRSBk aXN0cjEgKGkgaW50LCBqIGludCwgayB0ZXh0KSBQQVJUSVRJT04gQlkgSEFTSCAoaSk7CitDUkVB VEUgVEFCTEUgYmFzZTEgKGkgaW50LCBqIGludCwgayB0ZXh0KTsKK0NSRUFURSBUQUJMRSBiYXNl MiAoaSBpbnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIxX3Ax IFBBUlRJVElPTiBPRiBkaXN0cjEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAwKQorU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2UxJyk7CitDUkVB VEUgRk9SRUlHTiBUQUJMRSBkaXN0cjFfcDIgUEFSVElUSU9OIE9GIGRpc3RyMSBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAnYmFzZTInKTsKK0NSRUFURSBUQUJMRSBkaXN0cjIgKGkgaW50LCBqIGludCwg ayB0ZXh0KSBQQVJUSVRJT04gQlkgSEFTSCAoaSk7CitDUkVBVEUgVEFCTEUgYmFzZTMgKGkgaW50 LCBqIGludCwgayB0ZXh0KTsKK0NSRUFURSBUQUJMRSBiYXNlNCAoaSBpbnQsIGogaW50LCBrIHRl eHQpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIyX3AxIFBBUlRJVElPTiBPRiBkaXN0cjIg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKQorU0VSVkVSIGxvb3BiYWNr IE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2UzJyk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0 cjJfcDIgUEFSVElUSU9OIE9GIGRpc3RyMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVN QUlOREVSIDEpCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTQnKTsK K0lOU0VSVCBJTlRPIGRpc3RyMQorU0VMRUNUIGksIGkqMTAsICdkYXRhXycgfHwgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZGlzdHIyCitTRUxFQ1QgaSwg aSoxMCwgJ2RhdGFfJyB8fCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgaTsKK0FOQUxZ WkUgZGlzdHIxX3AxOworQU5BTFlaRSBkaXN0cjFfcDI7CitBTkFMWVpFIGRpc3RyMl9wMTsKK0FO QUxZWkUgZGlzdHIyX3AyOworU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gT047Cist LSBUZXN0IGpvaW5zIHdpdGggYXN5bmMgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSwgZGlzdHIyIFdIRVJFIGRpc3RyMS5pPWRp c3RyMi5pIEFORCBkaXN0cjIuaiA+IDkwIGFuZCBkaXN0cjIuayBsaWtlICdkYXRhJScKK09SREVS IEJZIGRpc3RyMi5pIExJTUlUIDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExpbWl0 CisgICBPdXRwdXQ6IGRpc3RyMS5pLCBkaXN0cjEuaiwgZGlzdHIxLmssIGRpc3RyMi5pLCBkaXN0 cjIuaiwgZGlzdHIyLmsKKyAgIC0+ICBNZXJnZSBBcHBlbmQKKyAgICAgICAgIFNvcnQgS2V5OiBk aXN0cjEuaQorICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAg T3V0cHV0OiBkaXN0cjFfMS5pLCBkaXN0cjFfMS5qLCBkaXN0cjFfMS5rLCBkaXN0cjJfMS5pLCBk aXN0cjJfMS5qLCBkaXN0cjJfMS5rCisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IChwdWJsaWMu ZGlzdHIxX3AxIGRpc3RyMV8xKSBJTk5FUiBKT0lOIChwdWJsaWMuZGlzdHIyX3AxIGRpc3RyMl8x KQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIHIzLmksIHIzLmosIHIzLmssIHI1 LmksIHI1LmosIHI1LmsgRlJPTSAocHVibGljLmJhc2UxIHIzIElOTkVSIEpPSU4gcHVibGljLmJh c2UzIHI1IE9OICgoKHIzLmkgPSByNS5pKSkgQU5EICgocjUuaiA+IDkwKSkgQU5EICgocjUuayB+ fiAnZGF0YSUnKSkpKSBPUkRFUiBCWSByMy5pIEFTQyBOVUxMUyBMQVNUCisgICAgICAgICAtPiAg QXN5bmMgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICBPdXRwdXQ6IGRpc3RyMV8yLmksIGRp c3RyMV8yLmosIGRpc3RyMV8yLmssIGRpc3RyMl8yLmksIGRpc3RyMl8yLmosIGRpc3RyMl8yLmsK KyAgICAgICAgICAgICAgIFJlbGF0aW9uczogKHB1YmxpYy5kaXN0cjFfcDIgZGlzdHIxXzIpIElO TkVSIEpPSU4gKHB1YmxpYy5kaXN0cjJfcDIgZGlzdHIyXzIpCisgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgcjQuaSwgcjQuaiwgcjQuaywgcjYuaSwgcjYuaiwgcjYuayBGUk9NIChw dWJsaWMuYmFzZTIgcjQgSU5ORVIgSk9JTiBwdWJsaWMuYmFzZTQgcjYgT04gKCgocjQuaSA9IHI2 LmkpKSBBTkQgKChyNi5qID4gOTApKSBBTkQgKChyNi5rIH5+ICdkYXRhJScpKSkpIE9SREVSIEJZ IHI0LmkgQVNDIE5VTExTIExBU1QKKygxMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSwg ZGlzdHIyIFdIRVJFIGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0cjIuaiA+IDkwIGFuZCBkaXN0 cjIuayBsaWtlICdkYXRhJScKK09SREVSIEJZIGRpc3RyMi5pIExJTUlUIDEwOworIGkgIHwgIGog IHwgICAgayAgICB8IGkgIHwgIGogIHwgICAgayAgICAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tKy0t LS0rLS0tLS0rLS0tLS0tLS0tCisgMTAgfCAxMDAgfCBkYXRhXzEwIHwgMTAgfCAxMDAgfCBkYXRh XzEwCisgMTEgfCAxMTAgfCBkYXRhXzExIHwgMTEgfCAxMTAgfCBkYXRhXzExCisgMTIgfCAxMjAg fCBkYXRhXzEyIHwgMTIgfCAxMjAgfCBkYXRhXzEyCisgMTMgfCAxMzAgfCBkYXRhXzEzIHwgMTMg fCAxMzAgfCBkYXRhXzEzCisgMTQgfCAxNDAgfCBkYXRhXzE0IHwgMTQgfCAxNDAgfCBkYXRhXzE0 CisgMTUgfCAxNTAgfCBkYXRhXzE1IHwgMTUgfCAxNTAgfCBkYXRhXzE1CisgMTYgfCAxNjAgfCBk YXRhXzE2IHwgMTYgfCAxNjAgfCBkYXRhXzE2CisgMTcgfCAxNzAgfCBkYXRhXzE3IHwgMTcgfCAx NzAgfCBkYXRhXzE3CisgMTggfCAxODAgfCBkYXRhXzE4IHwgMTggfCAxODAgfCBkYXRhXzE4Cisg MTkgfCAxOTAgfCBkYXRhXzE5IHwgMTkgfCAxOTAgfCBkYXRhXzE5CisoMTAgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBkaXN0cjEgTEVGVCBKT0lO IGRpc3RyMiBPTiBkaXN0cjEuaT1kaXN0cjIuaSBBTkQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnIFdI RVJFICBkaXN0cjEuaSA+IDkwCitPUkRFUiBCWSBkaXN0cjEuaSBMSU1JVCAyMDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIExpbWl0CisgICBPdXRwdXQ6IGRpc3RyMS5pLCBkaXN0cjEu aiwgZGlzdHIxLmssIGRpc3RyMi5pLCBkaXN0cjIuaiwgZGlzdHIyLmsKKyAgIC0+ICBNZXJnZSBB cHBlbmQKKyAgICAgICAgIFNvcnQgS2V5OiBkaXN0cjEuaQorICAgICAgICAgLT4gIEFzeW5jIEZv cmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiBkaXN0cjFfMS5pLCBkaXN0cjFfMS5q LCBkaXN0cjFfMS5rLCBkaXN0cjJfMS5pLCBkaXN0cjJfMS5qLCBkaXN0cjJfMS5rCisgICAgICAg ICAgICAgICBSZWxhdGlvbnM6IChwdWJsaWMuZGlzdHIxX3AxIGRpc3RyMV8xKSBMRUZUIEpPSU4g KHB1YmxpYy5kaXN0cjJfcDEgZGlzdHIyXzEpCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgcjQuaSwgcjQuaiwgcjQuaywgcjYuaSwgcjYuaiwgcjYuayBGUk9NIChwdWJsaWMuYmFz ZTEgcjQgTEVGVCBKT0lOIHB1YmxpYy5iYXNlMyByNiBPTiAoKChyNC5pID0gcjYuaSkpIEFORCAo KHI2Lmsgfn4gJ2RhdGElJykpKSkgV0hFUkUgKChyNC5pID4gOTApKSBPUkRFUiBCWSByNC5pIEFT QyBOVUxMUyBMQVNUCisgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuCisgICAgICAgICAg ICAgICBPdXRwdXQ6IGRpc3RyMV8yLmksIGRpc3RyMV8yLmosIGRpc3RyMV8yLmssIGRpc3RyMl8y LmksIGRpc3RyMl8yLmosIGRpc3RyMl8yLmsKKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogKHB1 YmxpYy5kaXN0cjFfcDIgZGlzdHIxXzIpIExFRlQgSk9JTiAocHVibGljLmRpc3RyMl9wMiBkaXN0 cjJfMikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCByNS5pLCByNS5qLCByNS5r LCByNy5pLCByNy5qLCByNy5rIEZST00gKHB1YmxpYy5iYXNlMiByNSBMRUZUIEpPSU4gcHVibGlj LmJhc2U0IHI3IE9OICgoKHI1LmkgPSByNy5pKSkgQU5EICgocjcuayB+fiAnZGF0YSUnKSkpKSBX SEVSRSAoKHI1LmkgPiA5MCkpIE9SREVSIEJZIHI1LmkgQVNDIE5VTExTIExBU1QKKygxMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSBMRUZUIEpPSU4gZGlzdHIyIE9OICBkaXN0cjEuaT1k aXN0cjIuaSBBTkQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnIFdIRVJFIGRpc3RyMS5pID4gOTAKK09S REVSIEJZIGRpc3RyMS5pIExJTUlUIDIwOworICBpICB8ICBqICAgfCAgICBrICAgICB8ICBpICB8 ICBqICAgfCAgICBrICAgICAKKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSst LS0tLS0tLS0tCisgIDkxIHwgIDkxMCB8IGRhdGFfOTEgIHwgIDkxIHwgIDkxMCB8IGRhdGFfOTEK KyAgOTIgfCAgOTIwIHwgZGF0YV85MiAgfCAgOTIgfCAgOTIwIHwgZGF0YV85MgorICA5MyB8ICA5 MzAgfCBkYXRhXzkzICB8ICA5MyB8ICA5MzAgfCBkYXRhXzkzCisgIDk0IHwgIDk0MCB8IGRhdGFf OTQgIHwgIDk0IHwgIDk0MCB8IGRhdGFfOTQKKyAgOTUgfCAgOTUwIHwgZGF0YV85NSAgfCAgOTUg fCAgOTUwIHwgZGF0YV85NQorICA5NiB8ICA5NjAgfCBkYXRhXzk2ICB8ICA5NiB8ICA5NjAgfCBk YXRhXzk2CisgIDk3IHwgIDk3MCB8IGRhdGFfOTcgIHwgIDk3IHwgIDk3MCB8IGRhdGFfOTcKKyAg OTggfCAgOTgwIHwgZGF0YV85OCAgfCAgOTggfCAgOTgwIHwgZGF0YV85OAorICA5OSB8ICA5OTAg fCBkYXRhXzk5ICB8ICA5OSB8ICA5OTAgfCBkYXRhXzk5CisgMTAwIHwgMTAwMCB8IGRhdGFfMTAw IHwgMTAwIHwgMTAwMCB8IGRhdGFfMTAwCisgMTAxIHwgMTAxMCB8IGRhdGFfMTAxIHwgICAgIHwg ICAgICB8IAorIDEwMiB8IDEwMjAgfCBkYXRhXzEwMiB8ICAgICB8ICAgICAgfCAKKyAxMDMgfCAx MDMwIHwgZGF0YV8xMDMgfCAgICAgfCAgICAgIHwgCisgMTA0IHwgMTA0MCB8IGRhdGFfMTA0IHwg ICAgIHwgICAgICB8IAorIDEwNSB8IDEwNTAgfCBkYXRhXzEwNSB8ICAgICB8ICAgICAgfCAKKyAx MDYgfCAxMDYwIHwgZGF0YV8xMDYgfCAgICAgfCAgICAgIHwgCisgMTA3IHwgMTA3MCB8IGRhdGFf MTA3IHwgICAgIHwgICAgICB8IAorIDEwOCB8IDEwODAgfCBkYXRhXzEwOCB8ICAgICB8ICAgICAg fCAKKyAxMDkgfCAxMDkwIHwgZGF0YV8xMDkgfCAgICAgfCAgICAgIHwgCisgMTEwIHwgMTEwMCB8 IGRhdGFfMTEwIHwgICAgIHwgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIFRlc3QgcHJ1bmluZyB3 aXRoIGFzeW5jIE1lcmdlIEFwcGVuZAorREVMRVRFIEZST00gZGlzdHIyOworSU5TRVJUIElOVE8g ZGlzdHIyCitTRUxFQ1QgaSUxMCwgaSoxMCwgJ2RhdGFfJyB8fCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDApIGk7CitERUFMTE9DQVRFIEFMTDsKK1NFVCBwbGFuX2NhY2hlX21vZGUgVE8g Zm9yY2VfZ2VuZXJpY19wbGFuOworUFJFUEFSRSBhc3luY19wdF9xdWVyeSAoaW50LCBpbnQpIEFT CisgIFNFTEVDVCAqIEZST00gZGlzdHIyIFdIRVJFIGkgPSBBTlkoQVJSQVlbJDEsICQyXSkKKyAg T1JERVIgQlkgaSxqCisgIExJTUlUIDEwOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor CUVYRUNVVEUgYXN5bmNfcHRfcXVlcnkoMSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIExpbWl0CisgICBPdXRwdXQ6IGRpc3RyMi5pLCBkaXN0cjIuaiwgZGlzdHIyLmsKKyAg IC0+ICBNZXJnZSBBcHBlbmQKKyAgICAgICAgIFNvcnQgS2V5OiBkaXN0cjIuaSwgZGlzdHIyLmoK KyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgICAgICAgIC0+ICBBc3luYyBGb3JlaWdu IFNjYW4gb24gcHVibGljLmRpc3RyMl9wMSBkaXN0cjJfMQorICAgICAgICAgICAgICAgT3V0cHV0 OiBkaXN0cjJfMS5pLCBkaXN0cjJfMS5qLCBkaXN0cjJfMS5rCisgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgaSwgaiwgayBGUk9NIHB1YmxpYy5iYXNlMyBXSEVSRSAoKGkgPSBBTlkg KEFSUkFZWyQxOjppbnRlZ2VyLCAkMjo6aW50ZWdlcl0pKSkgT1JERVIgQlkgaSBBU0MgTlVMTFMg TEFTVCwgaiBBU0MgTlVMTFMgTEFTVAorKDggcm93cykKKworRVhFQ1VURSBhc3luY19wdF9xdWVy eSgxLCAxKTsKKyBpIHwgIGogIHwgICAgayAgICAKKy0tLSstLS0tLSstLS0tLS0tLS0KKyAxIHwg IDEwIHwgZGF0YV8xCisgMSB8IDExMCB8IGRhdGFfMTEKKyAxIHwgMjEwIHwgZGF0YV8yMQorIDEg fCAzMTAgfCBkYXRhXzMxCisgMSB8IDQxMCB8IGRhdGFfNDEKKyAxIHwgNTEwIHwgZGF0YV81MQor IDEgfCA2MTAgfCBkYXRhXzYxCisgMSB8IDcxMCB8IGRhdGFfNzEKKyAxIHwgODEwIHwgZGF0YV84 MQorIDEgfCA5MTAgfCBkYXRhXzkxCisoMTAgcm93cykKKworUkVTRVQgcGxhbl9jYWNoZV9tb2Rl OworUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKK0RST1AgVEFCTEUgZGlzdHIxLCBk aXN0cjIsIGJhc2UxLCBiYXNlMiwgYmFzZTMsIGJhc2U0OwogQUxURVIgU0VSVkVSIGxvb3BiYWNr IE9QVElPTlMgKERST1AgYXN5bmNfY2FwYWJsZSk7CiBBTFRFUiBTRVJWRVIgbG9vcGJhY2syIE9Q VElPTlMgKERST1AgYXN5bmNfY2FwYWJsZSk7CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGVmYzcwYTQ5YTg2Li5jOGM3OTNhZTBlMiAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTcyMTQsOCArNzIxNCw4IEBAIHBvc3RncmVzRm9y ZWlnbkFzeW5jQ29uZmlndXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiAJRm9yZWlnblNjYW5T dGF0ZSAqbm9kZSA9IChGb3JlaWduU2NhblN0YXRlICopIGFyZXEtPnJlcXVlc3RlZTsKIAlQZ0Zk d1NjYW5TdGF0ZSAqZnNzdGF0ZSA9IChQZ0Zkd1NjYW5TdGF0ZSAqKSBub2RlLT5mZHdfc3RhdGU7 CiAJQXN5bmNSZXF1ZXN0ICpwZW5kaW5nQXJlcSA9IGZzc3RhdGUtPmNvbm5fc3RhdGUtPnBlbmRp bmdBcmVxOwotCUFwcGVuZFN0YXRlICpyZXF1ZXN0b3IgPSAoQXBwZW5kU3RhdGUgKikgYXJlcS0+ cmVxdWVzdG9yOwotCVdhaXRFdmVudFNldCAqc2V0ID0gcmVxdWVzdG9yLT5hcy5ldmVudHNldDsK KwlBcHBlbmRCYXNlU3RhdGUgICpyZXF1ZXN0b3IgPSAoQXBwZW5kQmFzZVN0YXRlICopIGFyZXEt PnJlcXVlc3RvcjsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IHJlcXVlc3Rvci0+ZXZlbnRzZXQ7CiAK IAkvKiBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIHVubGVzcyBjYWxsYmFja19wZW5kaW5nICov CiAJQXNzZXJ0KGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOwpAQCAtNzI1Nyw3ICs3MjU3LDcgQEAg cG9zdGdyZXNGb3JlaWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJ ICogYmVsb3csIGJlY2F1c2Ugd2UgbWlnaHQgb3RoZXJ3aXNlIGVuZCB1cCB3aXRoIG5vIGNvbmZp Z3VyZWQgZXZlbnRzCiAJCSAqIG90aGVyIHRoYW4gdGhlIHBvc3RtYXN0ZXIgZGVhdGggZXZlbnQu CiAJCSAqLwotCQlpZiAoIWJtc19pc19lbXB0eShyZXF1ZXN0b3ItPmFzLm5lZWRyZXF1ZXN0KSkK KwkJaWYgKCFibXNfaXNfZW1wdHkocmVxdWVzdG9yLT5uZWVkcmVxdWVzdCkpCiAJCQlyZXR1cm47 CiAJCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhzZXQpID4gMSkKIAkJCXJldHVybjsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggNDllZDc5N2U4 ZWYuLjAxYmQxOGNlOWJiIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3 LnNxbApAQCAtMzk0MywxMCArMzk0MywxNyBAQCBJTlNFUlQgSU5UTyByZXN1bHRfdGJsIFNFTEVD VCBhLCBiLCAnQUFBJyB8fCBjIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1OwogU0VMRUNU ICogRlJPTSByZXN1bHRfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByZXN1bHRfdGJsOwog CistLSBUZXN0IE1lcmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworU0VM RUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworCiAt LSBUZXN0IGVycm9yIGhhbmRsaW5nLCBpZiBhY2Nlc3Npbmcgb25lIG9mIHRoZSBmb3JlaWduIHBh cnRpdGlvbnMgZXJyb3JzIG91dAogQ1JFQVRFIEZPUkVJR04gVEFCTEUgYXN5bmNfcF9icm9rZW4g UEFSVElUSU9OIE9GIGFzeW5jX3B0IEZPUiBWQUxVRVMgRlJPTSAoMTAwMDApIFRPICgxMDAwMSkK ICAgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ25vbl9leGlzdGVudF90YWJs ZScpOwogU0VMRUNUICogRlJPTSBhc3luY19wdDsKKy0tIFRlc3QgZXJyb3IgaGFuZGxpbmcgZm9y IGFzeW5jIE1lcmdlIEFwcGVuZAorU0VMRUNUICogRlJPTSBhc3luY19wdCBPUkRFUiBCWSBiLCBh OwogRFJPUCBGT1JFSUdOIFRBQkxFIGFzeW5jX3BfYnJva2VuOwogCiAtLSBDaGVjayBjYXNlIHdo ZXJlIG11bHRpcGxlIHBhcnRpdGlvbnMgdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24KQEAgLTM5NjYs NiArMzk3MywyMCBAQCBERUxFVEUgRlJPTSByZXN1bHRfdGJsOwogLS0gVGVzdCBDT1BZIFRPIHdo ZW4gZm9yZWlnbiB0YWJsZSBpcyBwYXJ0aXRpb24KIENPUFkgYXN5bmNfcHQgVE8gc3Rkb3V0OyAt LWVycm9yCiAKKy0tIFRlc3QgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBh OworU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsK KworLS0gVGVzdCBhc3luYyBNZXJnZSBBcHBlbmQgcmVzY2FuCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QKKwlBUlJBWShTRUxFQ1QgZi5pIEZST00gKFNFTEVDVCBiICsgZy5p IEZST00gYXN5bmNfcHQgV0hFUkUgYSA+IGcuaSBPUkRFUiBCWSBiKSBmKGkpIE9SREVSIEJZIGYu aSBMSU1JVCAxMCkKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGcoaSk7CitTRUxFQ1QKKwlB UlJBWShTRUxFQ1QgZi5pIEZST00gKFNFTEVDVCBiICsgZy5pIEZST00gYXN5bmNfcHQgV0hFUkUg YSA+IGcuaSBPUkRFUiBCWSBiKSBmKGkpIE9SREVSIEJZIGYuaSBMSU1JVCAxMCkKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMpIGcoaSk7CisKIERST1AgRk9SRUlHTiBUQUJMRSBhc3luY19wMzsK IERST1AgVEFCTEUgYmFzZV90YmwzOwogCkBAIC0zOTgxLDYgKzQwMDIsMTEgQEAgSU5TRVJUIElO VE8gcmVzdWx0X3RibCBTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNTsKIFNF TEVDVCAqIEZST00gcmVzdWx0X3RibCBPUkRFUiBCWSBhOwogREVMRVRFIEZST00gcmVzdWx0X3Ri bDsKIAorLS0gVGVzdCBNZXJnZSBBcHBlbmQKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CitT RUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBhOworCiAt LSBwYXJ0aXRpb253aXNlIGpvaW5zCiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0 cnVlOwogCkBAIC00MDIxLDYgKzQwNDcsMTAgQEAgU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVS RSBhIDwgMzAwMDsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00g YXN5bmNfcHQgV0hFUkUgYSA8IDIwMDA7CiAKKy0tIFRlc3QgaW50ZXJhY3Rpb24gb2YgYXN5bmMg TWVyZ2UgQXBwZW5kIHdpdGggcGxhbi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGEgPCAzMDAw IE9SREVSIEJZIGIsIGE7CisKIC0tIFRlc3QgaW50ZXJhY3Rpb24gb2YgYXN5bmMgZXhlY3V0aW9u IHdpdGggcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcKIFNFVCBwbGFuX2NhY2hlX21vZGUgVE8g Zm9yY2VfZ2VuZXJpY19wbGFuOwogCkBAIC00MDQxLDYgKzQwNzEsMTggQEAgRVhFQ1VURSBhc3lu Y19wdF9xdWVyeSAoMjAwMCwgNTA1KTsKIFNFTEVDVCAqIEZST00gcmVzdWx0X3RibCBPUkRFUiBC WSBhOwogREVMRVRFIEZST00gcmVzdWx0X3RibDsKIAorLS0gVGVzdCBpbnRlcmFjdGlvbiBvZiBh c3luYyBNZXJnZSBBcHBlbmQgd2l0aCBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZworUFJFUEFS RSBhc3luY19wdF9tZXJnZV9xdWVyeSAoaW50LCBpbnQpIEFTCisgIFNFTEVDVCAqIEZST00gYXN5 bmNfcHQgV0hFUkUgYSA8ICQxIEFORCBiID09PSAkMiBPUkRFUiBCWSBiLCBhOworCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitFWEVDVVRFIGFzeW5jX3B0X21lcmdlX3F1ZXJ5ICgzMDAw LCA1MDUpOworRVhFQ1VURSBhc3luY19wdF9tZXJnZV9xdWVyeSAoMzAwMCwgNTA1KTsKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorRVhFQ1VURSBhc3luY19wdF9tZXJnZV9xdWVyeSAo MjAwMCwgNTA1KTsKK0VYRUNVVEUgYXN5bmNfcHRfbWVyZ2VfcXVlcnkgKDIwMDAsIDUwNSk7CisK IFJFU0VUIHBsYW5fY2FjaGVfbW9kZTsKIAogQ1JFQVRFIFRBQkxFIGxvY2FsX3RibChhIGludCwg YiBpbnQsIGMgdGV4dCk7CkBAIC00MjE5LDYgKzQyNjEsNjkgQEAgU0VMRUNUIGEgRlJPTSBiYXNl X3RibCBXSEVSRSAoYSwgcmFuZG9tKCkgPiAwKSBJTiAoU0VMRUNUIGEsIHJhbmRvbSgpID4gMCBG Uk9NIGYKIERST1AgRk9SRUlHTiBUQUJMRSBmb3JlaWduX3RibCBDQVNDQURFOwogRFJPUCBUQUJM RSBiYXNlX3RibDsKIAorLS0gVGVzdCBhc3luYyBNZXJnZSBBcHBlbmQKK0NSRUFURSBUQUJMRSBk aXN0cjEgKGkgaW50LCBqIGludCwgayB0ZXh0KSBQQVJUSVRJT04gQlkgSEFTSCAoaSk7CitDUkVB VEUgVEFCTEUgYmFzZTEgKGkgaW50LCBqIGludCwgayB0ZXh0KTsKK0NSRUFURSBUQUJMRSBiYXNl MiAoaSBpbnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIxX3Ax IFBBUlRJVElPTiBPRiBkaXN0cjEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAwKQorU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2UxJyk7CitDUkVB VEUgRk9SRUlHTiBUQUJMRSBkaXN0cjFfcDIgUEFSVElUSU9OIE9GIGRpc3RyMSBGT1IgVkFMVUVT IFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAnYmFzZTInKTsKKworQ1JFQVRFIFRBQkxFIGRpc3RyMiAoaSBpbnQsIGogaW50 LCBrIHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChpKTsKK0NSRUFURSBUQUJMRSBiYXNlMyAoaSBp bnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRFIFRBQkxFIGJhc2U0IChpIGludCwgaiBpbnQsIGsg dGV4dCk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0cjJfcDEgUEFSVElUSU9OIE9GIGRpc3Ry MiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApCitTRVJWRVIgbG9vcGJh Y2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTMnKTsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIGRp c3RyMl9wMiBQQVJUSVRJT04gT0YgZGlzdHIyIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBS RU1BSU5ERVIgMSkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdiYXNlNCcp OworCitJTlNFUlQgSU5UTyBkaXN0cjEKK1NFTEVDVCBpLCBpKjEwLCAnZGF0YV8nIHx8IGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworSU5TRVJUIElOVE8gZGlzdHIyCitTRUxF Q1QgaSwgaSoxMCwgJ2RhdGFfJyB8fCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgaTsK KworQU5BTFlaRSBkaXN0cjFfcDE7CitBTkFMWVpFIGRpc3RyMV9wMjsKK0FOQUxZWkUgZGlzdHIy X3AxOworQU5BTFlaRSBkaXN0cjJfcDI7CisKK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2lu IFRPIE9OOworCistLSBUZXN0IGpvaW5zIHdpdGggYXN5bmMgTWVyZ2UgQXBwZW5kCitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSwgZGlzdHIyIFdIRVJF IGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0cjIuaiA+IDkwIGFuZCBkaXN0cjIuayBsaWtlICdk YXRhJScKK09SREVSIEJZIGRpc3RyMi5pIExJTUlUIDEwOworU0VMRUNUICogRlJPTSBkaXN0cjEs IGRpc3RyMiBXSEVSRSBkaXN0cjEuaT1kaXN0cjIuaSBBTkQgZGlzdHIyLmogPiA5MCBhbmQgZGlz dHIyLmsgbGlrZSAnZGF0YSUnCitPUkRFUiBCWSBkaXN0cjIuaSBMSU1JVCAxMDsKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBkaXN0cjEgTEVGVCBKT0lOIGRp c3RyMiBPTiBkaXN0cjEuaT1kaXN0cjIuaSBBTkQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnIFdIRVJF ICBkaXN0cjEuaSA+IDkwCitPUkRFUiBCWSBkaXN0cjEuaSBMSU1JVCAyMDsKK1NFTEVDVCAqIEZS T00gZGlzdHIxIExFRlQgSk9JTiBkaXN0cjIgT04gIGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0 cjIuayBsaWtlICdkYXRhJScgV0hFUkUgZGlzdHIxLmkgPiA5MAorT1JERVIgQlkgZGlzdHIxLmkg TElNSVQgMjA7CisKKy0tIFRlc3QgcHJ1bmluZyB3aXRoIGFzeW5jIE1lcmdlIEFwcGVuZAorREVM RVRFIEZST00gZGlzdHIyOworSU5TRVJUIElOVE8gZGlzdHIyCitTRUxFQ1QgaSUxMCwgaSoxMCwg J2RhdGFfJyB8fCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CisKK0RFQUxMT0NB VEUgQUxMOworU0VUIHBsYW5fY2FjaGVfbW9kZSBUTyBmb3JjZV9nZW5lcmljX3BsYW47CitQUkVQ QVJFIGFzeW5jX3B0X3F1ZXJ5IChpbnQsIGludCkgQVMKKyAgU0VMRUNUICogRlJPTSBkaXN0cjIg V0hFUkUgaSA9IEFOWShBUlJBWVskMSwgJDJdKQorICBPUkRFUiBCWSBpLGoKKyAgTElNSVQgMTA7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCisJRVhFQ1VURSBhc3luY19wdF9xdWVyeSgx LCAxKTsKK0VYRUNVVEUgYXN5bmNfcHRfcXVlcnkoMSwgMSk7CitSRVNFVCBwbGFuX2NhY2hlX21v ZGU7CisKK1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CisKK0RST1AgVEFCTEUgZGlz dHIxLCBkaXN0cjIsIGJhc2UxLCBiYXNlMiwgYmFzZTMsIGJhc2U0OworCiBBTFRFUiBTRVJWRVIg bG9vcGJhY2sgT1BUSU9OUyAoRFJPUCBhc3luY19jYXBhYmxlKTsKIEFMVEVSIFNFUlZFUiBsb29w YmFjazIgT1BUSU9OUyAoRFJPUCBhc3luY19jYXBhYmxlKTsKIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDIyOWY0 MTM1M2ViLi5kYzIwZmU3NzBkZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTU1Niw2ICs1NTU2LDIwIEBAIEFO WSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAo IDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLWFzeW5jLW1lcmdlLWFw cGVuZCIgeHJlZmxhYmVsPSJlbmFibGVfYXN5bmNfbWVyZ2VfYXBwZW5kIj4KKyAgICAgIDx0ZXJt Pjx2YXJuYW1lPmVuYWJsZV9hc3luY19tZXJnZV9hcHBlbmQ8L3Zhcm5hbWU+ICg8dHlwZT5ib29s ZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ ZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUg cXVlcnkgcGxhbm5lcidzIHVzZSBvZiBhc3luYy1hd2FyZQorICAgICAgICBtZXJnZSBhcHBlbmQg cGxhbiB0eXBlcy4gVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAg IDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtYml0bWFwc2NhbiIgeHJlZmxhYmVsPSJlbmFi bGVfYml0bWFwc2NhbiI+CiAgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfYml0bWFwc2Nhbjwv dmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0FzeW5jLmMKaW5kZXggY2Y3ZGRiYjAxZjQuLmY4MzlmNWYyNTVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjQXN5bmMuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKKyNpbmNsdWRlICJleGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uaCIKIAogLyoKQEAgLTEy Miw2ICsxMjMsOSBAQCBFeGVjQXN5bmNSZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpCiAJCWNh c2UgVF9BcHBlbmRTdGF0ZToKIAkJCUV4ZWNBc3luY0FwcGVuZFJlc3BvbnNlKGFyZXEpOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9NZXJnZUFwcGVuZFN0YXRlOgorCQkJRXhlY0FzeW5jTWVyZ2VBcHBl bmRSZXNwb25zZShhcmVxKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyogSWYgdGhlIG5v ZGUgZG9lc24ndCBzdXBwb3J0IGFzeW5jLCBjYWxsZXIgbWVzc2VkIHVwLiAqLwogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lcmdlQXBwZW5kLmMKaW5kZXggNTkxYmUxMDE4ZDguLmRlODc4NGRjZGY3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMjQsNiArMjQsMTUgQEAKICAqCQl0byBh IGNvbW1vbiBzb3J0IGtleS4gIFRoZSBNZXJnZUFwcGVuZCBub2RlIG1lcmdlcyB0aGVzZSBzdHJl YW1zCiAgKgkJdG8gcHJvZHVjZSBvdXRwdXQgc29ydGVkIHRoZSBzYW1lIHdheS4KICAqCisgKgkJ TWVyZ2VBcHBlbmQgc3VwcG9ydHMgYXN5bmMtY2FwYWJsZSBzdWJwbGFucyAoZS5nLiBmb3JlaWdu IHNjYW5zKS4KKyAqCQlBc3luYyBleGVjdXRpb24gaXMgYmVuZWZpY2lhbCBkdXJpbmcgdGhlIGlu aXRpYWwgaGVhcCBmaWxsLCB3aGVyZQorICoJCWFsbCBhc3luYyBzdWJwbGFucyBhcmUga2lja2Vk IG9mZiBjb25jdXJyZW50bHkgYW5kIHRoZWlyIGZpcnN0CisgKgkJdHVwbGVzIGFyZSBmZXRjaGVk IGluIHBhcmFsbGVsLiAgSW4gc3RlYWR5IHN0YXRlLCBob3dldmVyLCB0aGUKKyAqCQloZWFwIGFs Z29yaXRobSByZXF1aXJlcyB0aGUgbmV4dCB0dXBsZSBmcm9tIG9uZSBzcGVjaWZpYyBzdWJwbGFu CisgKgkJKHRoZSBvbmUgYXQgdGhlIGhlYXAgdG9wKSwgc28gZXhlY3V0aW9uIGlzIGVmZmVjdGl2 ZWx5IHN5bmNocm9ub3VzCisgKgkJYXQgdGhhdCBwb2ludCDigJQgd2UgbXVzdCBibG9jayB1bnRp bCB0aGF0IHBhcnRpY3VsYXIgc3VicGxhbgorICoJCWRlbGl2ZXJzIGl0cyBuZXh0IHR1cGxlLgor ICoKICAqCQlNZXJnZUFwcGVuZCBub2RlcyBkb24ndCBtYWtlIHVzZSBvZiB0aGVpciBsZWZ0IGFu ZCByaWdodAogICoJCXN1YnRyZWVzLCByYXRoZXIgdGhleSBtYWludGFpbiBhIGxpc3Qgb2Ygc3Vi cGxhbnMgc28KICAqCQlhIHR5cGljYWwgTWVyZ2VBcHBlbmQgbm9kZSBsb29rcyBsaWtlIHRoaXMg aW4gdGhlIHBsYW4gdHJlZToKQEAgLTQ1LDYgKzU0LDcgQEAKICNpbmNsdWRlICJsaWIvYmluYXJ5 aGVhcC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBw b3J0LmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiAvKgogICogV2UgaGF2ZSBv bmUgc2xvdCBmb3IgZWFjaCBpdGVtIGluIHRoZSBoZWFwIGFycmF5LiAgV2UgdXNlIFNsb3ROdW1i ZXIKQEAgLTU2LDYgKzY2LDExIEBAIHR5cGVkZWYgaW50MzIgU2xvdE51bWJlcjsKIHN0YXRpYyBU dXBsZVRhYmxlU2xvdCAqRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKTsKIHN0YXRp YyBpbnQJaGVhcF9jb21wYXJlX3Nsb3RzKERhdHVtIGEsIERhdHVtIGIsIHZvaWQgKmFyZyk7CiAK K3N0YXRpYyB2b2lkIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKE1lcmdlQXBwZW5kU3RhdGUg Km5vZGUpOworc3RhdGljIHZvaWQgRXhlY01lcmdlQXBwZW5kQXN5bmNCZWdpbihNZXJnZUFwcGVu ZFN0YXRlICpub2RlKTsKK3N0YXRpYyB2b2lkIEV4ZWNNZXJnZUFwcGVuZEFzeW5jR2V0TmV4dChN ZXJnZUFwcGVuZFN0YXRlICpub2RlLCBpbnQgbXBsYW4pOworc3RhdGljIHZvaWQgRXhlY01lcmdl QXBwZW5kQXN5bmNFdmVudFdhaXQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSk7CisKIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCUV4ZWNJbml0TWVyZ2VBcHBlbmQKQEAgLTg3LDEwICsxMDIsMTUgQEAgRXhlY0lu aXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCSAgIC0xLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChtZXJnZXN0YXRlLT5hcy5u YXN5bmNwbGFucyA+IDAgJiYgbWVyZ2VzdGF0ZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmll ZCkKKwkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobWVyZ2VzdGF0ZSk7CisKIAltZXJnZXN0 YXRlLT5tc19zbG90cyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbWVyZ2VzdGF0 ZS0+YXMubnBsYW5zKTsKIAltZXJnZXN0YXRlLT5tc19oZWFwID0gYmluYXJ5aGVhcF9hbGxvY2F0 ZShtZXJnZXN0YXRlLT5hcy5ucGxhbnMsIGhlYXBfY29tcGFyZV9zbG90cywKIAkJCQkJCQkJCQkJ ICBtZXJnZXN0YXRlKTsKIAorCW1lcmdlc3RhdGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsKKwog CS8qCiAJICogaW5pdGlhbGl6ZSBzb3J0LWtleSBpbmZvcm1hdGlvbgogCSAqLwpAQCAtMTU3LDgg KzE3NywxMyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCQlub2RlLT5h cy52YWxpZF9zdWJwbGFucyA9CiAJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFz LnBydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCQlub2RlLT5hcy52YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkID0gdHJ1ZTsKKwkJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwog CQl9CiAKKwkJLyogSWYgdGhlcmUgYXJlIGFueSBhc3luYyBzdWJwbGFucywgYmVnaW4gZXhlY3V0 aW5nIHRoZW0uICovCisJCWlmIChub2RlLT5hcy5uYXN5bmNwbGFucyA+IDApCisJCQlFeGVjTWVy Z2VBcHBlbmRBc3luY0JlZ2luKG5vZGUpOworCiAJCS8qCiAJCSAqIEZpcnN0IHRpbWUgdGhyb3Vn aDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBsYW4sCiAJCSAqIGFu ZCBzZXQgdXAgdGhlIGhlYXAuCkBAIC0xNzAsNiArMTk1LDE2IEBAIEV4ZWNNZXJnZUFwcGVuZChQ bGFuU3RhdGUgKnBzdGF0ZSkKIAkJCWlmICghVHVwSXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkK IAkJCQliaW5hcnloZWFwX2FkZF91bm9yZGVyZWQobm9kZS0+bXNfaGVhcCwgSW50MzJHZXREYXR1 bShpKSk7CiAJCX0KKworCQkvKiBMb29rIGF0IHZhbGlkIGFzeW5jIHN1YnBsYW5zICovCisJCWkg PSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLnZhbGlkX2FzeW5j cGxhbnMsIGkpKSA+PSAwKQorCQl7CisJCQlFeGVjTWVyZ2VBcHBlbmRBc3luY0dldE5leHQobm9k ZSwgaSk7CisJCQlpZiAoIVR1cElzTnVsbChub2RlLT5tc19zbG90c1tpXSkpCisJCQkJYmluYXJ5 aGVhcF9hZGRfdW5vcmRlcmVkKG5vZGUtPm1zX2hlYXAsIEludDMyR2V0RGF0dW0oaSkpOworCQl9 CisKIAkJYmluYXJ5aGVhcF9idWlsZChub2RlLT5tc19oZWFwKTsKIAkJbm9kZS0+bXNfaW5pdGlh bGl6ZWQgPSB0cnVlOwogCX0KQEAgLTI2NCw4ICsyOTksMTQxIEBAIEV4ZWNFbmRNZXJnZUFwcGVu ZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQogdm9pZAogRXhlY1JlU2Nhbk1lcmdlQXBwZW5kKE1l cmdlQXBwZW5kU3RhdGUgKm5vZGUpCiB7CisJaW50CQkJbmFzeW5jcGxhbnMgPSBub2RlLT5hcy5u YXN5bmNwbGFuczsKKwogCUV4ZWNSZVNjYW5BcHBlbmRCYXNlKCZub2RlLT5hcyk7CiAKKwkvKiBS ZXNldCBNZXJnZUFwcGVuZC1zcGVjaWZpYyBzdGF0ZSAqLworCWlmIChuYXN5bmNwbGFucyA+IDAp CisJeworCQlibXNfZnJlZShub2RlLT5tc19hc3luY3JlbWFpbik7CisJCW5vZGUtPm1zX2FzeW5j cmVtYWluID0gTlVMTDsKKwl9CiAJYmluYXJ5aGVhcF9yZXNldChub2RlLT5tc19oZWFwKTsKIAlu b2RlLT5tc19pbml0aWFsaXplZCA9IGZhbHNlOwogfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJY2xhc3Np ZnlfbWF0Y2hpbmdfc3VicGxhbnMKKyAqCisgKgkJQ2xhc3NpZnkgdGhlIG5vZGUncyBtc192YWxp ZF9zdWJwbGFucyBpbnRvIHN5bmMgb25lcyBhbmQKKyAqCQlhc3luYyBvbmVzLCBhZGp1c3QgaXQg dG8gY29udGFpbiBzeW5jIG9uZXMgb25seSwgYW5kIHNhdmUKKyAqCQlhc3luYyBvbmVzIGluIHRo ZSBub2RlJ3MgYXMudmFsaWRfYXN5bmNwbGFucy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZv aWQKK2NsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCit7 CisJQXNzZXJ0KG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpOworCisJLyogTm90 aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gdmFsaWQgc3VicGxhbnMuICovCisJaWYgKGJtc19p c19lbXB0eShub2RlLT5hcy52YWxpZF9zdWJwbGFucykpCisJeworCQlub2RlLT5tc19hc3luY3Jl bWFpbiA9IE5VTEw7CisJCXJldHVybjsKKwl9CisKKwkvKiBObyB2YWxpZCBhc3luYyBzdWJwbGFu cyBpZGVudGlmaWVkLiAqLworCWlmICghY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNfY29tbW9u KCZub2RlLT5hcy52YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJCQkgICBub2RlLT5hcy5hc3luY3Bs YW5zLAorCQkJCQkJCQkJCSAgICZub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zKSkKKwkJbm9kZS0+ bXNfYXN5bmNyZW1haW4gPSBOVUxMOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY01lcmdlQXBw ZW5kQXN5bmNCZWdpbgorICoKKyAqCQlCZWdpbiBleGVjdXRpbmcgZGVzaWduZWQgYXN5bmMtY2Fw YWJsZSBzdWJwbGFucy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNNZXJnZUFw cGVuZEFzeW5jQmVnaW4oTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKK3sKKwkvKiBFeGVjTWVyZ2VB cHBlbmQoKSBpZGVudGlmaWVzIHZhbGlkIHN1YnBsYW5zICovCisJQXNzZXJ0KG5vZGUtPmFzLnZh bGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpOworCisJLyogSW5pdGlhbGl6ZSBzdGF0ZSB2YXJpYWJs ZXMuICovCisJbm9kZS0+bXNfYXN5bmNyZW1haW4gPSBibXNfY29weShub2RlLT5hcy52YWxpZF9h c3luY3BsYW5zKTsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIGFz eW5jIHN1YnBsYW5zLiAqLworCWlmIChibXNfaXNfZW1wdHkobm9kZS0+bXNfYXN5bmNyZW1haW4p KQorCQlyZXR1cm47CisKKwlFeGVjQXBwZW5kQmFzZUFzeW5jQmVnaW4oJm5vZGUtPmFzKTsKK30K KworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoJCUV4ZWNNZXJnZUFwcGVuZEFzeW5jR2V0TmV4dAorICoKKyAqCQlH ZXQgdGhlIG5leHQgdHVwbGUgZnJvbSBzcGVjaWZpZWQgYXN5bmNocm9ub3VzIHN1YnBsYW4uCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjTWVyZ2VBcHBlbmRBc3luY0dldE5leHQo TWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSwgaW50IG1wbGFuKQoreworCS8qCisJICogQWxsIGluaXRp YWwgYXN5bmMgcmVxdWVzdHMgd2VyZSBmaXJlZCBieSBFeGVjQXBwZW5kQmFzZUFzeW5jQmVnaW4u CisJICogVGhlIHJlc3VsdCBtYXkgYWxyZWFkeSBiZSBjYWNoZWQgZnJvbSBhIHByaW9yIGV2ZW50 IHdhaXQg4oCUIGlmIHNvLAorCSAqIG5vdGhpbmcgdG8gZG8uICBPdGhlcndpc2UsIHdhaXQgZm9y IHRoZSBzcGVjaWZpYyBzdWJwbGFuIHRvIGRlbGl2ZXIKKwkgKiBhIHR1cGxlIG9yIHJlcG9ydCBl eGhhdXN0aW9uLgorCSAqLworCXdoaWxlIChUdXBJc051bGwobm9kZS0+bXNfc2xvdHNbbXBsYW5d KSAmJgorCQkgICBibXNfaXNfbWVtYmVyKG1wbGFuLCBub2RlLT5tc19hc3luY3JlbWFpbikpCisJ eworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQlFeGVjTWVyZ2VBcHBlbmRBc3luY0V2ZW50 V2FpdChub2RlKTsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjQXN5bmNNZXJnZUFwcGVu ZFJlc3BvbnNlCisgKgorICoJCVJlY2VpdmUgYSByZXNwb25zZSBmcm9tIGFuIGFzeW5jaHJvbm91 cyByZXF1ZXN0IHdlIG1hZGUuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNBc3luY01lcmdl QXBwZW5kUmVzcG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQoreworCU1lcmdlQXBwZW5kU3RhdGUg Km5vZGUgPSAoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBhcmVxLT5yZXF1ZXN0b3I7CisJVHVwbGVUYWJs ZVNsb3QgKnNsb3QgPSBhcmVxLT5yZXN1bHQ7CisKKwkvKiBUaGUgcmVzdWx0IHNob3VsZCBiZSBh IFR1cGxlVGFibGVTbG90IG9yIE5VTEwuICovCisJQXNzZXJ0KHNsb3QgPT0gTlVMTCB8fCBJc0Eo c2xvdCwgVHVwbGVUYWJsZVNsb3QpKTsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHJlcXVl c3QgaXMgcGVuZGluZy4gKi8KKwlpZiAoIWFyZXEtPnJlcXVlc3RfY29tcGxldGUpCisJeworCQkv KiBUaGUgcmVxdWVzdCB3b3VsZCBoYXZlIGJlZW4gcGVuZGluZyBmb3IgYSBjYWxsYmFjay4gKi8K KwkJQXNzZXJ0KGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOworCQlyZXR1cm47CisJfQorCisJLyog SWYgdGhlIHJlc3VsdCBpcyBOVUxMIG9yIGFuIGVtcHR5IHNsb3QsIHRoZSBzdWJwbGFuIGlzIGV4 aGF1c3RlZC4gKi8KKwlpZiAoVHVwSXNOdWxsKHNsb3QpKQorCXsKKwkJLyogVGhlIGVuZGluZyBz dWJwbGFuIHdvdWxkbid0IGhhdmUgYmVlbiBwZW5kaW5nIGZvciBhIGNhbGxiYWNrLiAqLworCQlB c3NlcnQoIWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOworCQlub2RlLT5tc19hc3luY3JlbWFpbiA9 IGJtc19kZWxfbWVtYmVyKG5vZGUtPm1zX2FzeW5jcmVtYWluLAorCQkJCQkJCQkJCQkgIGFyZXEt PnJlcXVlc3RfaW5kZXgpOworCQlyZXR1cm47CisJfQorCisJLyogU2F2ZSByZXN1bHQgZGlyZWN0 bHkgaW50byB0aGUgbWVyZ2Ugc2xvdCBhcnJheS4gKi8KKwlub2RlLT5tc19zbG90c1thcmVxLT5y ZXF1ZXN0X2luZGV4XSA9IHNsb3Q7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTWVyZ2VBcHBl bmRBc3luY0V2ZW50V2FpdAorICoKKyAqCQlXYWl0IG9yIHBvbGwgZm9yIGZpbGUgZGVzY3JpcHRv ciBldmVudHMgYW5kIGZpcmUgY2FsbGJhY2tzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9p ZAorRXhlY01lcmdlQXBwZW5kQXN5bmNFdmVudFdhaXQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkK K3sKKwkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHZhbGlk IGFzeW5jIHN1YnBsYW5zLiAqLworCUFzc2VydChibXNfbnVtX21lbWJlcnMobm9kZS0+bXNfYXN5 bmNyZW1haW4pID4gMCk7CisKKwlFeGVjQXBwZW5kQmFzZUFzeW5jRXZlbnRXYWl0KCZub2RlLT5h cywgLTEgLyogbm8gdGltZW91dCAqLyAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVSR0VfQVBQRU5E X1JFQURZKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDFjNTc1 ZTU2ZmY2Li5iNjEwOWU1YjkxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvY29zdHNpemUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5j CkBAIC0xNjQsNiArMTY0LDcgQEAgYm9vbAkJZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSB0cnVlOwog Ym9vbAkJZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9wcmVz b3J0ZWRfYWdncmVnYXRlID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9hc3luY19hcHBlbmQgPSB0cnVl OworYm9vbAkJZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCA9IHRydWU7CiAKIHR5cGVkZWYgc3Ry dWN0CiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMjJiZDkz NTk2ZWUuLmE3MjdkMDYzZjc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxh bi5jCkBAIC0xNDUxLDYgKzE0NTEsNyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCUxpc3QJICAgKnN1YnBs YW5zID0gTklMOwogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCVJlbE9wdEluZm8gKnJlbCA9IGJl c3RfcGF0aC0+cGF0aC5wYXJlbnQ7CisJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKIAog CS8qCiAJICogV2UgZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFw cGVuZCBub2RlIHNwbGl0IG91dApAQCAtMTQ2Niw2ICsxNDY3LDEwIEBAIGNyZWF0ZV9tZXJnZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgs CiAJbm9kZS0+YWIuYXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7CiAJbm9kZS0+YWIuY2hpbGRfYXBw ZW5kX3JlbGlkX3NldHMgPSBiZXN0X3BhdGgtPmNoaWxkX2FwcGVuZF9yZWxpZF9zZXRzOwogCisJ Y29uc2lkZXJfYXN5bmMgPSAoZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCAmJgorCQkJCQkgICFi ZXN0X3BhdGgtPnBhdGgucGFyYWxsZWxfc2FmZSAmJgorCQkJCQkgIGxpc3RfbGVuZ3RoKGJlc3Rf cGF0aC0+c3VicGF0aHMpID4gMSk7CisKIAkvKgogCSAqIENvbXB1dGUgc29ydCBjb2x1bW4gaW5m bywgYW5kIGFkanVzdCBNZXJnZUFwcGVuZCdzIHRsaXN0IGFzIG5lZWRlZC4KIAkgKiBCZWNhdXNl IHdlIHBhc3MgYWRqdXN0X3RsaXN0X2luX3BsYWNlID0gdHJ1ZSwgd2UgbWF5IGlnbm9yZSB0aGUK QEAgLTE1NjYsNiArMTU3MSwxMCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQkJc3VicGxhbiA9IHNvcnRf cGxhbjsKIAkJfQogCisJCS8qIElmIG5lZWRlZCwgY2hlY2sgdG8gc2VlIGlmIHN1YnBsYW4gY2Fu IGJlIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5ICovCisJCWlmIChjb25zaWRlcl9hc3luYykKKwkJ CW1hcmtfYXN5bmNfY2FwYWJsZV9wbGFuKHN1YnBsYW4sIHN1YnBhdGgpOworCiAJCXN1YnBsYW5z ID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CmluZGV4IDZiZTgwZDJkYWFkLi45OGI4 YzhkMTc3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9u YW1lcy50eHQKQEAgLTEzOSw2ICsxMzksNyBAQCBMT0dJQ0FMX0FQUExZX1NFTkRfREFUQQkiV2Fp dGluZyBmb3IgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIGxlYWRlciBhcHBseSBwcm9jZXNzCiBMT0dJ Q0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRQkiV2FpdGluZyBmb3IgYSBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3MgdG8gY2hhbmdlIHN0YXRlLiIKIExPR0lD QUxfU1lOQ19EQVRBCSJXYWl0aW5nIGZvciBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcmVtb3RlIHNl cnZlciB0byBzZW5kIGRhdGEgZm9yIGluaXRpYWwgdGFibGUgc3luY2hyb25pemF0aW9uLiIKIExP R0lDQUxfU1lOQ19TVEFURV9DSEFOR0UJIldhaXRpbmcgZm9yIGEgbG9naWNhbCByZXBsaWNhdGlv biByZW1vdGUgc2VydmVyIHRvIGNoYW5nZSBzdGF0ZS4iCitNRVJHRV9BUFBFTkRfUkVBRFkJIldh aXRpbmcgZm9yIHN1YnBsYW4gbm9kZXMgb2YgYSA8bGl0ZXJhbD5NZXJnZUFwcGVuZDwvbGl0ZXJh bD4gcGxhbiBub2RlIHRvIGJlIHJlYWR5LiIKIE1FU1NBR0VfUVVFVUVfSU5URVJOQUwJIldhaXRp bmcgZm9yIGFub3RoZXIgcHJvY2VzcyB0byBiZSBhdHRhY2hlZCB0byBhIHNoYXJlZCBtZXNzYWdl IHF1ZXVlLiIKIE1FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UJIldhaXRpbmcgdG8gd3JpdGUgYSBw cm90b2NvbCBtZXNzYWdlIHRvIGEgc2hhcmVkIG1lc3NhZ2UgcXVldWUuIgogTUVTU0FHRV9RVUVV RV9SRUNFSVZFCSJXYWl0aW5nIHRvIHJlY2VpdmUgYnl0ZXMgZnJvbSBhIHNoYXJlZCBtZXNzYWdl IHF1ZXVlLiIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRl cnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXgg MGE4NjI2OTNmY2QuLjk4NDg5NjRiMDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdApAQCAtODYxLDYgKzg2MSwxNCBAQAogICBib290X3ZhbCA9PiAndHJ1ZScs CiB9LAogCit7IG5hbWUgPT4gJ2VuYWJsZV9hc3luY19tZXJnZV9hcHBlbmQnLCB0eXBlID0+ICdi b29sJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllfVFVOSU5HX01F VEhPRCcsCisgIHNob3J0X2Rlc2MgPT4gJ0VuYWJsZXMgdGhlIHBsYW5uZXJcJ3MgdXNlIG9mIGFz eW5jIG1lcmdlIGFwcGVuZCBwbGFucy4nLAorICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLAorICB2 YXJpYWJsZSA9PiAnZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCcsCisgIGJvb3RfdmFsID0+ICd0 cnVlJywKK30sCisKKwogeyBuYW1lID0+ICdlbmFibGVfYml0bWFwc2NhbicsIHR5cGUgPT4gJ2Jv b2wnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdRVUVSWV9UVU5JTkdfTUVU SE9EJywKICAgc2hvcnRfZGVzYyA9PiAnRW5hYmxlcyB0aGUgcGxhbm5lclwncyB1c2Ugb2YgYml0 bWFwLXNjYW4gcGxhbnMuJywKICAgZmxhZ3MgPT4gJ0dVQ19FWFBMQUlOJywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBjZjE1NTk3Mzg1Yi4u OWI4ZGU4NTgxYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKQEAgLTQxMyw2ICs0MTMsNyBAQAogIyAtIFBsYW5uZXIgTWV0aG9kIENvbmZpZ3Vy YXRpb24gLQogCiAjZW5hYmxlX2FzeW5jX2FwcGVuZCA9IG9uCisjZW5hYmxlX2FzeW5jX21lcmdl X2FwcGVuZCA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgogI2VuYWJsZV9nYXRoZXJtZXJn ZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuaAppbmRleCBkZmNmNDUwOTliYS4uMjI1NWNjNjhiMjEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5oCkBAIC0xOSw1ICsxOSw2IEBACiBleHRlcm4gTWVyZ2VBcHBl bmRTdGF0ZSAqRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdl QXBwZW5kU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nhbk1lcmdlQXBwZW5kKE1l cmdlQXBwZW5kU3RhdGUgKm5vZGUpOworZXh0ZXJuIHZvaWQgRXhlY0FzeW5jTWVyZ2VBcHBlbmRS ZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpOwogCiAjZW5kaWYJCQkJCQkJLyogTk9ERU1FUkdF QVBQRU5EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNzJiODBhNGE5NzUuLjc3NGY1YzZk MWRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU4MCw2ICsxNTgwLDkgQEAgdHlwZWRlZiBz dHJ1Y3QgTWVyZ2VBcHBlbmRTdGF0ZQogCVR1cGxlVGFibGVTbG90ICoqbXNfc2xvdHM7CS8qIGFy cmF5IG9mIGxlbmd0aCBtc19ucGxhbnMgKi8KIAlzdHJ1Y3QgYmluYXJ5aGVhcCAqbXNfaGVhcDsg LyogYmluYXJ5IGhlYXAgb2Ygc2xvdCBpbmRpY2VzICovCiAJYm9vbAkJbXNfaW5pdGlhbGl6ZWQ7 IC8qIGFyZSBzdWJwbGFucyBzdGFydGVkPyAqLworCisJLyogTWVyZ2Utc3BlY2lmaWMgYXN5bmMg dHJhY2tpbmcgKi8KKwlCaXRtYXBzZXQgICptc19hc3luY3JlbWFpbjsgLyogcmVtYWluaW5nIGFz eW5jaHJvbm91cyBwbGFucyAqLwogfSBNZXJnZUFwcGVuZFN0YXRlOwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL2Nvc3QuaAppbmRleCBmMmZkNWQzMTUwNy4uNzk4YWYxZmNkNWMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL2Nvc3QuaApAQCAtNzAsNiArNzAsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9v bCBlbmFibGVfcGFyYWxsZWxfaGFzaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9w YXJ0aXRpb25fcHJ1bmluZzsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9wcmVzb3J0 ZWRfYWdncmVnYXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2FzeW5jX2FwcGVu ZDsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9hc3luY19tZXJnZV9hcHBlbmQ7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IGNvbnN0cmFpbnRfZXhjbHVzaW9uOwogCiBleHRlcm4gZG91 YmxlIGluZGV4X3BhZ2VzX2ZldGNoZWQoZG91YmxlIHR1cGxlc19mZXRjaGVkLCBCbG9ja051bWJl ciBwYWdlcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggMTMyYjU2 YTU4NjQuLjQyMmNhOGI3ZDFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91 dApAQCAtMTU2LDYgKzE1Niw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGlu Z3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICAgICAgICAgICAgICAgbmFtZSAgICAgICAg ICAgICAgfCBzZXR0aW5nIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tCiAgZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAgIHwgb24KKyBlbmFibGVfYXN5bmNf bWVyZ2VfYXBwZW5kICAgICAgfCBvbgogIGVuYWJsZV9iaXRtYXBzY2FuICAgICAgICAgICAgICB8 IG9uCiAgZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfZWFnZXJf YWdncmVnYXRlICAgICAgICAgfCBvbgpAQCAtMTgwLDcgKzE4MSw3IEBAIHNlbGVjdCBuYW1lLCBz ZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFi bGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAg ICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyNSBy b3dzKQorKDI2IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlw dGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuICBJbmplY3Rpb25Qb2ludAogLS0gbWF5IGJlIHByZXNl bnQgb3IgYWJzZW50LCBkZXBlbmRpbmcgb24gaGlzdG9yeSBzaW5jZSBsYXN0IHBvc3RtYXN0ZXIg c3RhcnQuCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000ced44b064ead416c Content-Type: application/octet-stream; name="v17-0003-Extract-common-Append-MergeAppend-executor-logic.patch" Content-Disposition: attachment; filename="v17-0003-Extract-common-Append-MergeAppend-executor-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnl4h7l92 RnJvbSBlZmQxZDU5YTgzZTE0NDEyNmNjZjcyNmZhMGIxNTdlN2EzY2ZiMTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDAzOjUzOjEzICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMy81XSBFeHRyYWN0IGNvbW1vbiBBcHBlbmQvTWVyZ2VBcHBlbmQgZXhlY3V0b3Ig bG9naWMgaW50bwogZXhlY0FwcGVuZC5jCgpFeHRyYWN0IHNoYXJlZCBub24tYXN5bmMgZXhlY3V0 b3Igb3BlcmF0aW9ucyBmb3IgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZApub2RlcyBpbnRvIGEgbmV3 IGV4ZWNBcHBlbmQuYyBmaWxlLCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uLgoKVGhlIGV4dHJh Y3RlZCBmdW5jdGlvbnMgb3BlcmF0ZSBvbiB0aGUgY29tbW9uIEFwcGVuZEJhc2VTdGF0ZSBiYXNl IHR5cGUKaW50cm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgY29tbWl0OgoKICAtIEV4ZWNJbml0QXBw ZW5kQmFzZSgpOiBzaGFyZWQgc3VicGxhbiBpbml0aWFsaXphdGlvbiwgcGFydGl0aW9uIHBydW5p bmcKICAgIHNldHVwLCBhbmQgcmVzdWx0IHR1cGxlIHNsb3QgY3JlYXRpb24uCiAgLSBFeGVjRW5k QXBwZW5kQmFzZSgpOiBzaHV0IGRvd24gYWxsIHN1YnBsYW4gbm9kZXMuCiAgLSBFeGVjUmVTY2Fu QXBwZW5kQmFzZSgpOiBwcm9wYWdhdGUgcmVzY2FuIHRvIHN1YnBsYW5zIGFuZCByZXNldCBwcnVu aW5nLgoKQXN5bmMgc3VicGxhbiBkZXRlY3Rpb24sIHNldHVwLCBhbmQgZXhlY3V0aW9uIHJlbWFp biBpbiBub2RlQXBwZW5kLmMsCnNpbmNlIE1lcmdlQXBwZW5kIGRvZXMgbm90IHlldCBzdXBwb3J0 IGFzeW5jLiAgVGhlIHR1cGxlLWZldGNoaW5nIGxvZ2ljCmFsc28gcmVtYWlucyBzcGVjaWZpYyB0 byBlYWNoIG5vZGUgdHlwZSwgcHJlc2VydmluZyB0aGVpciBkaXN0aW5jdApleGVjdXRpb24gc2Vt YW50aWNzIChzZXF1ZW50aWFsIGl0ZXJhdGlvbiBmb3IgQXBwZW5kLCBiaW5hcnkgaGVhcCBtZXJn ZQpmb3IgTWVyZ2VBcHBlbmQpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81OWJl MTk0YzVhNDA5ZmI5ZmM5ZjIwMzE1ODFiOGE0NCU0MHBvc3RncmVzcHJvLnJ1CkF1dGhvcjogTWF0 aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6 IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTog QWxlbmEgUnliYWtpbmEgPGEucnliYWtpbmFAcG9zdGdyZXNwcm8ucnU+Ci0tLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0FwcGVuZC5jICAgICAgfCAyMDggKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICB8IDIxNiArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyB8IDE1MSArKy0tLS0tLS0t LS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oICAgICAgfCAgMjYgKysr CiA2IGZpbGVzIGNoYW5nZWQsIDI4MiBpbnNlcnRpb25zKCspLCAzMjEgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FwcGVuZC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9NYWtlZmlsZQppbmRleCAxMTExOGQwY2UwMi4uMmIxMmExZWIxN2UgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01h a2VmaWxlCkBAIC0xNCw2ICsxNCw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIAogT0JKUyA9IFwKIAlleGVjQW1pLm8gXAorCWV4ZWNBcHBlbmQubyBcCiAJ ZXhlY0FzeW5jLm8gXAogCWV4ZWNDdXJyZW50Lm8gXAogCWV4ZWNFeHByLm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0FwcGVuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45 NTk5ZDEwYTk1MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNB cHBlbmQuYwpAQCAtMCwwICsxLDIwOCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhl Y0FwcGVuZC5jCisgKgkgIFRoaXMgY29kZSBwcm92aWRlcyBzdXBwb3J0IGZ1bmN0aW9ucyBmb3Ig ZXhlY3V0aW5nIE1lcmdlQXBwZW5kIGFuZAorICoJICBBcHBlbmQgbm9kZXMuCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQu YworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKwor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBcHBlbmQuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVj UGFydGl0aW9uLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKworLyogIEJlZ2lu IGFsbCBvZiB0aGUgc3Vic2NhbnMgb2YgYW4gQXBwZW5kQmFzZSBub2RlLiAqLwordm9pZAorRXhl Y0luaXRBcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqc3RhdGUsCisJCQkJICAgQXBwZW5kQmFz ZSAqbm9kZSwKKwkJCQkgICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkgICBpbnQgZWZsYWdzLAorCQkJ CSAgIGludCBmaXJzdF9wYXJ0aWFsX3BsYW4sCisJCQkJICAgaW50ICpmaXJzdF92YWxpZF9wYXJ0 aWFsX3BsYW4pCit7CisJUGxhblN0YXRlICoqYXBwZW5kcGxhbnN0YXRlczsKKwljb25zdCBUdXBs ZVRhYmxlU2xvdE9wcyAqYXBwZW5kb3BzOworCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnM7CisJ aW50CQkJbnBsYW5zOworCWludAkJCWZpcnN0dmFsaWQ7CisJaW50CQkJaSwKKwkJCQlqOworCisJ LyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhh dCB1cCBub3cgKi8KKwlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCXsKKwkJUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKworCQkvKgorCQkgKiBTZXQgdXAgcHJ1bmlu ZyBkYXRhIHN0cnVjdHVyZS4gIFRoaXMgYWxzbyBpbml0aWFsaXplcyB0aGUgc2V0IG9mCisJCSAq IHN1YnBsYW5zIHRvIGluaXRpYWxpemUgKHZhbGlkc3VicGxhbnMpIGJ5IHRha2luZyBpbnRvIGFj Y291bnQgdGhlCisJCSAqIHJlc3VsdCBvZiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZyBpZiBh bnkuCisJCSAqLworCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygm c3RhdGUtPnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5zdWJwbGFucyksCisJ CQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCQkgIG5vZGUt PmFwcHJlbGlkcywKKwkJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlzdGF0ZS0+cHJ1 bmVfc3RhdGUgPSBwcnVuZXN0YXRlOworCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRz dWJwbGFucyk7CisKKwkJLyoKKwkJICogV2hlbiBubyBydW4tdGltZSBwcnVuaW5nIGlzIHJlcXVp cmVkIGFuZCB0aGVyZSdzIGF0IGxlYXN0IG9uZQorCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCB2 YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZyBsYXRlcgorCQkgKiBjYWxscyB0 byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCisJCSAqLworCQlpZiAoIXBydW5lc3RhdGUtPmRv X2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJeworCQkJc3RhdGUtPnZhbGlkX3N1YnBsYW5z ID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKKwkJCXN0YXRlLT52YWxpZF9z dWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJfQorCX0KKwllbHNlCisJeworCQlucGxhbnMg PSBsaXN0X2xlbmd0aChub2RlLT5zdWJwbGFucyk7CisKKwkJLyoKKwkJICogV2hlbiBydW4tdGlt ZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBub3QgZW5hYmxlZCB3ZSBjYW4ganVzdCBtYXJrIGFsbAor CQkgKiBzdWJwbGFucyBhcyB2YWxpZDsgdGhleSBtdXN0IGFsc28gYWxsIGJlIGluaXRpYWxpemVk LgorCQkgKi8KKwkJQXNzZXJ0KG5wbGFucyA+IDApOworCQlzdGF0ZS0+dmFsaWRfc3VicGxhbnMg PSB2YWxpZHN1YnBsYW5zID0KKwkJCWJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7 CisJCXN0YXRlLT52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJc3RhdGUtPnBy dW5lX3N0YXRlID0gTlVMTDsKKwl9CisKKwlhcHBlbmRwbGFuc3RhdGVzID0gcGFsbG9jMF9hcnJh eShQbGFuU3RhdGUgKiwgbnBsYW5zKTsKKworCS8qCisJICogY2FsbCBFeGVjSW5pdE5vZGUgb24g ZWFjaCBvZiB0aGUgdmFsaWQgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUKKwkgKiB0aGUg cmVzdWx0cyBpbnRvIHRoZSBhcHBlbmRwbGFuc3RhdGVzIGFycmF5LgorCSAqCisJICogV2hpbGUg YXQgaXQsIGZpbmQgb3V0IHRoZSBmaXJzdCB2YWxpZCBwYXJ0aWFsIHBsYW4uCisJICovCisJaiA9 IDA7CisJZmlyc3R2YWxpZCA9IG5wbGFuczsKKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25l eHRfbWVtYmVyKHZhbGlkc3VicGxhbnMsIGkpKSA+PSAwKQorCXsKKwkJUGxhbgkgICAqaW5pdE5v ZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5zdWJwbGFucywgaSk7CisKKwkJLyoKKwkJICog UmVjb3JkIHRoZSBsb3dlc3QgYXBwZW5kcGxhbnMgaW5kZXggd2hpY2ggaXMgYSB2YWxpZCBwYXJ0 aWFsIHBsYW4uCisJCSAqLworCQlpZiAoaSA+PSBmaXJzdF9wYXJ0aWFsX3BsYW4gJiYgaiA8IGZp cnN0dmFsaWQpCisJCQlmaXJzdHZhbGlkID0gajsKKworCQlhcHBlbmRwbGFuc3RhdGVzW2orK10g PSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwl9CisKKwlpZiAoZmly c3RfdmFsaWRfcGFydGlhbF9wbGFuKQorCQkqZmlyc3RfdmFsaWRfcGFydGlhbF9wbGFuID0gZmly c3R2YWxpZDsKKworCXN0YXRlLT5wbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7CisJc3RhdGUtPm5w bGFucyA9IG5wbGFuczsKKworCS8qCisJICogSW5pdGlhbGl6ZSBBcHBlbmQncyByZXN1bHQgdHVw bGUgdHlwZSBhbmQgc2xvdC4gIElmIHRoZSBjaGlsZCBwbGFucyBhbGwKKwkgKiBwcm9kdWNlIHRo ZSBzYW1lIGZpeGVkIHNsb3QgdHlwZSwgd2UgY2FuIHVzZSB0aGF0IHNsb3QgdHlwZTsgb3RoZXJ3 aXNlCisJICogbWFrZSBhIHZpcnR1YWwgc2xvdC4gIChOb3RlIHRoYXQgdGhlIHJlc3VsdCBzbG90 IGl0c2VsZiBpcyB1c2VkIG9ubHkgdG8KKwkgKiByZXR1cm4gYSBudWxsIHR1cGxlIGF0IGVuZCBv ZiBleGVjdXRpb247IHJlYWwgdHVwbGVzIGFyZSByZXR1cm5lZCB0bworCSAqIHRoZSBjYWxsZXIg aW4gdGhlIGNoaWxkcmVuJ3Mgb3duIHJlc3VsdCBzbG90cy4gIFdoYXQgd2UgYXJlIGRvaW5nIGhl cmUKKwkgKiBpcyBhbGxvd2luZyB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byBvcHRpbWl6ZSBpZiB0 aGUgQXBwZW5kIHdpbGwgcmV0dXJuCisJICogb25seSBvbmUga2luZCBvZiBzbG90LikKKwkgKi8K KwlhcHBlbmRvcHMgPSBFeGVjR2V0Q29tbW9uU2xvdE9wcyhhcHBlbmRwbGFuc3RhdGVzLCBqKTsK KwlpZiAoYXBwZW5kb3BzICE9IE5VTEwpCisJeworCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRM KCZzdGF0ZS0+cHMsIGFwcGVuZG9wcyk7CisJfQorCWVsc2UKKwl7CisJCUV4ZWNJbml0UmVzdWx0 VHVwbGVTbG90VEwoJnN0YXRlLT5wcywgJlRUU09wc1ZpcnR1YWwpOworCQkvKiBzaG93IHRoYXQg dGhlIG91dHB1dCBzbG90IHR5cGUgaXMgbm90IGZpeGVkICovCisJCXN0YXRlLT5wcy5yZXN1bHRv cHNzZXQgPSB0cnVlOworCQlzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKKwl9CisK KwkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlIHRvIHNhZmUgZGVmYXVsdHMgKi8KKwlzdGF0ZS0+ YXN5bmNwbGFucyA9IE5VTEw7CisJc3RhdGUtPm5hc3luY3BsYW5zID0gMDsKKwlzdGF0ZS0+YXN5 bmNyZXF1ZXN0cyA9IE5VTEw7CisJc3RhdGUtPmFzeW5jcmVzdWx0cyA9IE5VTEw7CisJc3RhdGUt Pm5lZWRyZXF1ZXN0ID0gTlVMTDsKKwlzdGF0ZS0+ZXZlbnRzZXQgPSBOVUxMOworCXN0YXRlLT52 YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKKworCS8qCisJICogTWlzY2VsbGFuZW91cyBpbml0aWFs aXphdGlvbgorCSAqLworCXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7Cit9CisKK3ZvaWQK K0V4ZWNSZVNjYW5BcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSkKK3sKKwlpbnQJCQlp OworCisJLyoKKwkgKiBJZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMgdXNlZCBpbiBwcnVuaW5nIGV4 cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgorCSAqIHdlJ2QgYmV0dGVyIHVuc2V0IHRoZSB2 YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQgZm9yCisJICogdGhlIG5l dyBwYXJhbWV0ZXIgdmFsdWVzLgorCSAqLworCWlmIChub2RlLT5wcnVuZV9zdGF0ZSAmJgorCQli bXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKKwkJCQkJbm9kZS0+cHJ1bmVfc3RhdGUtPmV4 ZWNwYXJhbWlkcykpCisJeworCQlub2RlLT52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gZmFs c2U7CisJCWJtc19mcmVlKG5vZGUtPnZhbGlkX3N1YnBsYW5zKTsKKwkJbm9kZS0+dmFsaWRfc3Vi cGxhbnMgPSBOVUxMOworCQlibXNfZnJlZShub2RlLT52YWxpZF9hc3luY3BsYW5zKTsKKwkJbm9k ZS0+dmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5vZGUt Pm5wbGFuczsgaSsrKQorCXsKKwkJUGxhblN0YXRlICAqc3Vibm9kZSA9IG5vZGUtPnBsYW5zW2ld OworCisJCS8qCisJCSAqIEV4ZWNSZVNjYW4gZG9lc24ndCBrbm93IGFib3V0IG15IHN1YnBsYW5z LCBzbyBJIGhhdmUgdG8gZG8KKwkJICogY2hhbmdlZC1wYXJhbWV0ZXIgc2lnbmFsaW5nIG15c2Vs Zi4KKwkJICovCisJCWlmIChub2RlLT5wcy5jaGdQYXJhbSAhPSBOVUxMKQorCQkJVXBkYXRlQ2hh bmdlZFBhcmFtU2V0KHN1Ym5vZGUsIG5vZGUtPnBzLmNoZ1BhcmFtKTsKKworCQkvKgorCQkgKiBJ ZiBjaGdQYXJhbSBvZiBzdWJub2RlIGlzIG5vdCBudWxsIHRoZW4gcGxhbiB3aWxsIGJlIHJlLXNj YW5uZWQgYnkKKwkJICogZmlyc3QgRXhlY1Byb2NOb2RlLgorCQkgKi8KKwkJaWYgKHN1Ym5vZGUt PmNoZ1BhcmFtID09IE5VTEwpCisJCQlFeGVjUmVTY2FuKHN1Ym5vZGUpOworCX0KK30KKworLyog IFNodXRzIGRvd24gdGhlIHN1YnBsYW5zIG9mIGFuIEFwcGVuZEJhc2Ugbm9kZS4gKi8KK3ZvaWQK K0V4ZWNFbmRBcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSkKK3sKKwlQbGFuU3RhdGUg KipzdWJwbGFuczsKKwlpbnQJCQlucGxhbnM7CisJaW50CQkJaTsKKworCS8qCisJICogZ2V0IGlu Zm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKKwkgKi8KKwlzdWJwbGFucyA9IG5vZGUtPnBsYW5zOwor CW5wbGFucyA9IG5vZGUtPm5wbGFuczsKKworCS8qCisJICogc2h1dCBkb3duIGVhY2ggb2YgdGhl IHN1YnNjYW5zCisJICovCisJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCQlFeGVjRW5k Tm9kZShzdWJwbGFuc1tpXSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCmluZGV4IGRjNDVi ZTBiMmNlLi5jMmYyNjFmZjIyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVz b24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQKQEAgLTIsNiAr Miw3IEBACiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2V4ZWNBbWkuYycsCisgICdl eGVjQXBwZW5kLmMnLAogICAnZXhlY0FzeW5jLmMnLAogICAnZXhlY0N1cnJlbnQuYycsCiAgICdl eGVjRXhwci5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAyNzJiZjUyZmMyZC4u ZjI2N2ZmZTEzZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTU3LDYgKzU3LDcg QEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjQXBw ZW5kLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FzeW5jLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC0x MTEsMTUgKzExMiwxMCBAQCBBcHBlbmRTdGF0ZSAqCiBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCUFwcGVuZFN0YXRlICphcHBlbmRz dGF0ZSA9IG1ha2VOb2RlKEFwcGVuZFN0YXRlKTsKLQlQbGFuU3RhdGUgKiphcHBlbmRwbGFuc3Rh dGVzOwotCWNvbnN0IFR1cGxlVGFibGVTbG90T3BzICphcHBlbmRvcHM7Ci0JQml0bWFwc2V0ICAq dmFsaWRzdWJwbGFuczsKIAlCaXRtYXBzZXQgICphc3luY3BsYW5zOwotCWludAkJCW5wbGFuczsK IAlpbnQJCQluYXN5bmNwbGFuczsKLQlpbnQJCQlmaXJzdHZhbGlkOwotCWludAkJCWksCi0JCQkJ ajsKKwlpbnQJCQlucGxhbnM7CisJaW50CQkJaTsKIAogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRl ZCBmbGFncyAqLwogCUFzc2VydCghKGVmbGFncyAmIEVYRUNfRkxBR19NQVJLKSk7CkBAIC0xMzYs MTI0ICsxMzIsMzggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfc3luY2RvbmUgPSBmYWxzZTsKIAlhcHBl bmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAotCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBw cnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPmFi LnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKLQl7Ci0JCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5l c3RhdGU7CisJLyogSW5pdGlhbGl6ZSBjb21tb24gZmllbGRzICovCisJRXhlY0luaXRBcHBlbmRC YXNlKCZhcHBlbmRzdGF0ZS0+YXMsCisJCQkJCSAgICZub2RlLT5hYiwKKwkJCQkJICAgZXN0YXRl LAorCQkJCQkgICBlZmxhZ3MsCisJCQkJCSAgIG5vZGUtPmZpcnN0X3BhcnRpYWxfcGxhbiwKKwkJ CQkJICAgJmFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4pOwogCi0JCS8qCi0JCSAq IFNldCB1cCBwcnVuaW5nIGRhdGEgc3RydWN0dXJlLiAgVGhpcyBhbHNvIGluaXRpYWxpemVzIHRo ZSBzZXQgb2YKLQkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykgYnkg dGFraW5nIGludG8gYWNjb3VudCB0aGUKLQkJICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlh bCBwcnVuaW5nIGlmIGFueS4KLQkJICovCi0JCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlv bkV4ZWNQcnVuaW5nKCZhcHBlbmRzdGF0ZS0+YXMucHMsCi0JCQkJCQkJCQkJCQkgIGxpc3RfbGVu Z3RoKG5vZGUtPmFiLnN1YnBsYW5zKSwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+YWIucGFydF9wcnVu ZV9pbmRleCwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+YWIuYXBwcmVsaWRzLAotCQkJCQkJCQkJCQkJ ICAmdmFsaWRzdWJwbGFucyk7Ci0JCWFwcGVuZHN0YXRlLT5hcy5wcnVuZV9zdGF0ZSA9IHBydW5l c3RhdGU7Ci0JCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKLQotCQkv KgotCQkgKiBXaGVuIG5vIHJ1bi10aW1lIHBydW5pbmcgaXMgcmVxdWlyZWQgYW5kIHRoZXJlJ3Mg YXQgbGVhc3Qgb25lCi0JCSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBsYW5z IGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCi0JCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucy4KLQkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAm JiBucGxhbnMgPiAwKQotCQl7Ci0JCQlhcHBlbmRzdGF0ZS0+YXMudmFsaWRfc3VicGxhbnMgPSBi bXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwotCQkJYXBwZW5kc3RhdGUtPmFzLnZh bGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCW5w bGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFiLnN1YnBsYW5zKTsKLQotCQkvKgotCQkgKiBXaGVu IHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIG5vdCBlbmFibGVkIHdlIGNhbiBqdXN0IG1h cmsgYWxsCi0JCSAqIHN1YnBsYW5zIGFzIHZhbGlkOyB0aGV5IG11c3QgYWxzbyBhbGwgYmUgaW5p dGlhbGl6ZWQuCi0JCSAqLwotCQlBc3NlcnQobnBsYW5zID4gMCk7Ci0JCWFwcGVuZHN0YXRlLT5h cy52YWxpZF9zdWJwbGFucyA9IHZhbGlkc3VicGxhbnMgPQotCQkJYm1zX2FkZF9yYW5nZShOVUxM LCAwLCBucGxhbnMgLSAxKTsKLQkJYXBwZW5kc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50 aWZpZWQgPSB0cnVlOwotCQlhcHBlbmRzdGF0ZS0+YXMucHJ1bmVfc3RhdGUgPSBOVUxMOwotCX0K LQotCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICoKLQkJ CQkJCQkJCQkJIHNpemVvZihQbGFuU3RhdGUgKikpOworCW5wbGFucyA9IGFwcGVuZHN0YXRlLT5h cy5ucGxhbnM7CiAKIAkvKgotCSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZh bGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlCi0JICogdGhlIHJlc3VsdHMgaW50byB0 aGUgYXBwZW5kcGxhbnN0YXRlcyBhcnJheS4KLQkgKgotCSAqIFdoaWxlIGF0IGl0LCBmaW5kIG91 dCB0aGUgZmlyc3QgdmFsaWQgcGFydGlhbCBwbGFuLgorCSAqIERldGVjdCBhc3luYy1jYXBhYmxl IHN1YnBsYW5zLiAgV2hlbiBleGVjdXRpbmcgRXZhbFBsYW5RdWFsLCB3ZSB0cmVhdAorCSAqIHRo ZW0gYXMgc3luYyBvbmVzOyBkb24ndCBkbyB0aGlzIHdoZW4gaW5pdGlhbGl6aW5nIGFuIEV2YWxQ bGFuUXVhbCBwbGFuCisJICogdHJlZS4KIAkgKi8KLQlqID0gMDsKIAlhc3luY3BsYW5zID0gTlVM TDsKIAluYXN5bmNwbGFucyA9IDA7Ci0JZmlyc3R2YWxpZCA9IG5wbGFuczsKLQlpID0gLTE7Ci0J d2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHZhbGlkc3VicGxhbnMsIGkpKSA+PSAwKQorCWZv ciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKIAl7Ci0JCVBsYW4JICAgKmluaXROb2RlID0gKFBs YW4gKikgbGlzdF9udGgobm9kZS0+YWIuc3VicGxhbnMsIGkpOwotCi0JCS8qCi0JCSAqIFJlY29y ZCBhc3luYyBzdWJwbGFucy4gIFdoZW4gZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJlYXQg dGhlbQotCQkgKiBhcyBzeW5jIG9uZXM7IGRvbid0IGRvIHRoaXMgd2hlbiBpbml0aWFsaXppbmcg YW4gRXZhbFBsYW5RdWFsIHBsYW4KLQkJICogdHJlZS4KLQkJICovCi0JCWlmIChpbml0Tm9kZS0+ YXN5bmNfY2FwYWJsZSAmJiBlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKKwkJaWYgKGFw cGVuZHN0YXRlLT5hcy5wbGFuc1tpXS0+cGxhbi0+YXN5bmNfY2FwYWJsZSAmJgorCQkJZXN0YXRl LT5lc19lcHFfYWN0aXZlID09IE5VTEwpCiAJCXsKLQkJCWFzeW5jcGxhbnMgPSBibXNfYWRkX21l bWJlcihhc3luY3BsYW5zLCBqKTsKKwkJCWFzeW5jcGxhbnMgPSBibXNfYWRkX21lbWJlcihhc3lu Y3BsYW5zLCBpKTsKIAkJCW5hc3luY3BsYW5zKys7CiAJCX0KLQotCQkvKgotCQkgKiBSZWNvcmQg dGhlIGxvd2VzdCBhcHBlbmRwbGFucyBpbmRleCB3aGljaCBpcyBhIHZhbGlkIHBhcnRpYWwgcGxh bi4KLQkJICovCi0JCWlmIChpID49IG5vZGUtPmZpcnN0X3BhcnRpYWxfcGxhbiAmJiBqIDwgZmly c3R2YWxpZCkKLQkJCWZpcnN0dmFsaWQgPSBqOwotCi0JCWFwcGVuZHBsYW5zdGF0ZXNbaisrXSA9 IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCX0KLQotCWFwcGVuZHN0 YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBmaXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5h cy5wbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7Ci0JYXBwZW5kc3RhdGUtPmFzLm5wbGFucyA9IG5w bGFuczsKLQotCS8qCi0JICogSW5pdGlhbGl6ZSBBcHBlbmQncyByZXN1bHQgdHVwbGUgdHlwZSBh bmQgc2xvdC4gIElmIHRoZSBjaGlsZCBwbGFucyBhbGwKLQkgKiBwcm9kdWNlIHRoZSBzYW1lIGZp eGVkIHNsb3QgdHlwZSwgd2UgY2FuIHVzZSB0aGF0IHNsb3QgdHlwZTsgb3RoZXJ3aXNlCi0JICog bWFrZSBhIHZpcnR1YWwgc2xvdC4gIChOb3RlIHRoYXQgdGhlIHJlc3VsdCBzbG90IGl0c2VsZiBp cyB1c2VkIG9ubHkgdG8KLQkgKiByZXR1cm4gYSBudWxsIHR1cGxlIGF0IGVuZCBvZiBleGVjdXRp b247IHJlYWwgdHVwbGVzIGFyZSByZXR1cm5lZCB0bwotCSAqIHRoZSBjYWxsZXIgaW4gdGhlIGNo aWxkcmVuJ3Mgb3duIHJlc3VsdCBzbG90cy4gIFdoYXQgd2UgYXJlIGRvaW5nIGhlcmUKLQkgKiBp cyBhbGxvd2luZyB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byBvcHRpbWl6ZSBpZiB0aGUgQXBwZW5k IHdpbGwgcmV0dXJuCi0JICogb25seSBvbmUga2luZCBvZiBzbG90LikKLQkgKi8KLQlhcHBlbmRv cHMgPSBFeGVjR2V0Q29tbW9uU2xvdE9wcyhhcHBlbmRwbGFuc3RhdGVzLCBqKTsKLQlpZiAoYXBw ZW5kb3BzICE9IE5VTEwpCi0JewotCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZhcHBlbmRz dGF0ZS0+YXMucHMsIGFwcGVuZG9wcyk7Ci0JfQotCWVsc2UKLQl7Ci0JCUV4ZWNJbml0UmVzdWx0 VHVwbGVTbG90VEwoJmFwcGVuZHN0YXRlLT5hcy5wcywgJlRUU09wc1ZpcnR1YWwpOwotCQkvKiBz aG93IHRoYXQgdGhlIG91dHB1dCBzbG90IHR5cGUgaXMgbm90IGZpeGVkICovCi0JCWFwcGVuZHN0 YXRlLT5hcy5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwotCQlhcHBlbmRzdGF0ZS0+YXMucHMucmVz dWx0b3BzZml4ZWQgPSBmYWxzZTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICov CiAJYXBwZW5kc3RhdGUtPmFzLmFzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwogCWFwcGVuZHN0YXRl LT5hcy5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwotCWFwcGVuZHN0YXRlLT5hcy5hc3luY3Jl cXVlc3RzID0gTlVMTDsKLQlhcHBlbmRzdGF0ZS0+YXMuYXN5bmNyZXN1bHRzID0gTlVMTDsKIAlh cHBlbmRzdGF0ZS0+YXNfbmFzeW5jcmVzdWx0cyA9IDA7CiAJYXBwZW5kc3RhdGUtPmFzX25hc3lu Y3JlbWFpbiA9IDA7Ci0JYXBwZW5kc3RhdGUtPmFzLm5lZWRyZXF1ZXN0ID0gTlVMTDsKLQlhcHBl bmRzdGF0ZS0+YXMuZXZlbnRzZXQgPSBOVUxMOwotCWFwcGVuZHN0YXRlLT5hcy52YWxpZF9hc3lu Y3BsYW5zID0gTlVMTDsKIAogCWlmIChuYXN5bmNwbGFucyA+IDApCiAJewpAQCAtMjY3LDcgKzE3 Nyw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAKIAkJCWFyZXEgPSBwYWxsb2Nfb2JqZWN0KEFzeW5jUmVxdWVzdCk7CiAJCQlhcmVx LT5yZXF1ZXN0b3IgPSAoUGxhblN0YXRlICopIGFwcGVuZHN0YXRlOwotCQkJYXJlcS0+cmVxdWVz dGVlID0gYXBwZW5kcGxhbnN0YXRlc1tpXTsKKwkJCWFyZXEtPnJlcXVlc3RlZSA9IGFwcGVuZHN0 YXRlLT5hcy5wbGFuc1tpXTsKIAkJCWFyZXEtPnJlcXVlc3RfaW5kZXggPSBpOwogCQkJYXJlcS0+ Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwogCQkJYXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZh bHNlOwpAQCAtMjgzLDEyICsxOTMsNiBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMo YXBwZW5kc3RhdGUpOwogCX0KIAotCS8qCi0JICogTWlzY2VsbGFuZW91cyBpbml0aWFsaXphdGlv bgotCSAqLwotCi0JYXBwZW5kc3RhdGUtPmFzLnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKLQogCS8q IEZvciBwYXJhbGxlbCBxdWVyeSwgdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gbGF0ZXIuICovCiAJ YXBwZW5kc3RhdGUtPmNob29zZV9uZXh0X3N1YnBsYW4gPSBjaG9vc2VfbmV4dF9zdWJwbGFuX2xv Y2FsbHk7CiAKQEAgLTQwMiw2NyArMzA2LDIxIEBAIEV4ZWNBcHBlbmQoUGxhblN0YXRlICpwc3Rh dGUpCiB2b2lkCiBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0 ZSAqKmFwcGVuZHBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWFwcGVuZHBsYW5zID0gbm9kZS0+ YXMucGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+YXMubnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRv d24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBp KyspCi0JCUV4ZWNFbmROb2RlKGFwcGVuZHBsYW5zW2ldKTsKKwlFeGVjRW5kQXBwZW5kQmFzZSgm bm9kZS0+YXMpOwogfQogCiB2b2lkCiBFeGVjUmVTY2FuQXBwZW5kKEFwcGVuZFN0YXRlICpub2Rl KQogewogCWludAkJCW5hc3luY3BsYW5zID0gbm9kZS0+YXMubmFzeW5jcGxhbnM7Ci0JaW50CQkJ aTsKLQotCS8qCi0JICogSWYgYW55IFBBUkFNX0VYRUMgUGFyYW1zIHVzZWQgaW4gcHJ1bmluZyBl eHByZXNzaW9ucyBoYXZlIGNoYW5nZWQsIHRoZW4KLQkgKiB3ZSdkIGJldHRlciB1bnNldCB0aGUg dmFsaWQgc3VicGxhbnMgc28gdGhhdCB0aGV5IGFyZSByZXNlbGVjdGVkIGZvcgotCSAqIHRoZSBu ZXcgcGFyYW1ldGVyIHZhbHVlcy4KLQkgKi8KLQlpZiAobm9kZS0+YXMucHJ1bmVfc3RhdGUgJiYK LQkJYm1zX292ZXJsYXAobm9kZS0+YXMucHMuY2hnUGFyYW0sCi0JCQkJCW5vZGUtPmFzLnBydW5l X3N0YXRlLT5leGVjcGFyYW1pZHMpKQotCXsKLQkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRl bnRpZmllZCA9IGZhbHNlOwotCQlibXNfZnJlZShub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7Ci0J CW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gTlVMTDsKLQkJYm1zX2ZyZWUobm9kZS0+YXMudmFs aWRfYXN5bmNwbGFucyk7Ci0JCW5vZGUtPmFzLnZhbGlkX2FzeW5jcGxhbnMgPSBOVUxMOwotCX0K LQotCWZvciAoaSA9IDA7IGkgPCBub2RlLT5hcy5ucGxhbnM7IGkrKykKLQl7Ci0JCVBsYW5TdGF0 ZSAgKnN1Ym5vZGUgPSBub2RlLT5hcy5wbGFuc1tpXTsKLQotCQkvKgotCQkgKiBFeGVjUmVTY2Fu IGRvZXNuJ3Qga25vdyBhYm91dCBteSBzdWJwbGFucywgc28gSSBoYXZlIHRvIGRvCi0JCSAqIGNo YW5nZWQtcGFyYW1ldGVyIHNpZ25hbGluZyBteXNlbGYuCi0JCSAqLwotCQlpZiAobm9kZS0+YXMu cHMuY2hnUGFyYW0gIT0gTlVMTCkKLQkJCVVwZGF0ZUNoYW5nZWRQYXJhbVNldChzdWJub2RlLCBu b2RlLT5hcy5wcy5jaGdQYXJhbSk7CiAKLQkJLyoKLQkJICogSWYgY2hnUGFyYW0gb2Ygc3Vibm9k ZSBpcyBub3QgbnVsbCB0aGVuIHBsYW4gd2lsbCBiZSByZS1zY2FubmVkIGJ5Ci0JCSAqIGZpcnN0 IEV4ZWNQcm9jTm9kZSBvciBieSBmaXJzdCBFeGVjQXN5bmNSZXF1ZXN0LgotCQkgKi8KLQkJaWYg KHN1Ym5vZGUtPmNoZ1BhcmFtID09IE5VTEwpCi0JCQlFeGVjUmVTY2FuKHN1Ym5vZGUpOwotCX0K KwlFeGVjUmVTY2FuQXBwZW5kQmFzZSgmbm9kZS0+YXMpOwogCiAJLyogUmVzZXQgYXN5bmMgc3Rh dGUgKi8KIAlpZiAobmFzeW5jcGxhbnMgPiAwKQogCXsKKwkJaW50CQkJaTsKKwogCQlpID0gLTE7 CiAJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy5hc3luY3BsYW5zLCBpKSkg Pj0gMCkKIAkJewpAQCAtODc4LDE3ICs3MzYsNiBAQCBtYXJrX2ludmFsaWRfc3VicGxhbnNfYXNf ZmluaXNoZWQoQXBwZW5kU3RhdGUgKm5vZGUpCiBzdGF0aWMgdm9pZAogRXhlY0FwcGVuZEFzeW5j QmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JaW50CQkJaTsKLQotCS8qIEJhY2t3YXJkIHNj YW4gaXMgbm90IHN1cHBvcnRlZCBieSBhc3luYy1hd2FyZSBBcHBlbmRzLiAqLwotCUFzc2VydChT Y2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmFzLnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKTsK LQotCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gc3VicGxh bnMgKi8KLQlBc3NlcnQobm9kZS0+YXMubnBsYW5zID4gMCk7Ci0KLQkvKiBXZSBzaG91bGQgbmV2 ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIGFzeW5jIHN1YnBsYW5zLiAqLwotCUFzc2Vy dChub2RlLT5hcy5uYXN5bmNwbGFucyA+IDApOwotCiAJLyogSWYgd2UndmUgeWV0IHRvIGRldGVy bWluZSB0aGUgdmFsaWQgc3VicGxhbnMgdGhlbiBkbyBzbyBub3cuICovCiAJaWYgKCFub2RlLT5h cy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKQEAgLTkwOCwxNiArNzU1LDE5IEBAIEV4 ZWNBcHBlbmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCQlyZXR1cm47CiAKIAkvKiBN YWtlIGEgcmVxdWVzdCBmb3IgZWFjaCBvZiB0aGUgdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCi0J aSA9IC0xOwotCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy52YWxpZF9hc3lu Y3BsYW5zLCBpKSkgPj0gMCkKIAl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFz eW5jcmVxdWVzdHNbaV07CisJCWludAkJCWkgPSAtMTsKIAotCQlBc3NlcnQoYXJlcS0+cmVxdWVz dF9pbmRleCA9PSBpKTsKLQkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19wZW5kaW5nKTsKKwkJd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLnZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+ PSAwKQorCQl7CisJCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hcy5hc3luY3JlcXVlc3Rz W2ldOwogCi0JCS8qIERvIHRoZSBhY3R1YWwgd29yay4gKi8KLQkJRXhlY0FzeW5jUmVxdWVzdChh cmVxKTsKKwkJCUFzc2VydChhcmVxLT5yZXF1ZXN0X2luZGV4ID09IGkpOworCQkJQXNzZXJ0KCFh cmVxLT5jYWxsYmFja19wZW5kaW5nKTsKKworCQkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwor CQkJRXhlY0FzeW5jUmVxdWVzdChhcmVxKTsKKwkJfQogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBkN2QyZGUwODE0Ny4uNjkyODE1MmYxNmYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0zOCw2ICszOCw3IEBACiAKICNp bmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FwcGVuZC5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oIgpAQCAtNjYs MTIgKzY3LDcgQEAgTWVyZ2VBcHBlbmRTdGF0ZSAqCiBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdl QXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlNZXJnZUFwcGVu ZFN0YXRlICptZXJnZXN0YXRlID0gbWFrZU5vZGUoTWVyZ2VBcHBlbmRTdGF0ZSk7Ci0JUGxhblN0 YXRlICoqbWVyZ2VwbGFuc3RhdGVzOwotCWNvbnN0IFR1cGxlVGFibGVTbG90T3BzICptZXJnZW9w czsKLQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlp LAotCQkJCWo7CisJaW50CQkJaTsKIAogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBmbGFncyAq LwogCUFzc2VydCghKGVmbGFncyAmIChFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFS SykpKTsKQEAgLTgzLDk0ICs3OSwxOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5hcy5wcy5z dGF0ZSA9IGVzdGF0ZTsKIAltZXJnZXN0YXRlLT5hcy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVy Z2VBcHBlbmQ7CiAKLQkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVk LCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5hYi5wYXJ0X3BydW5lX2luZGV4 ID49IDApCi0JewotCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwotCi0JCS8qCi0J CSAqIFNldCB1cCBwcnVuaW5nIGRhdGEgc3RydWN0dXJlLiAgVGhpcyBhbHNvIGluaXRpYWxpemVz IHRoZSBzZXQgb2YKLQkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykg YnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKLQkJICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5p dGlhbCBwcnVuaW5nIGlmIGFueS4KLQkJICovCi0JCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRp dGlvbkV4ZWNQcnVuaW5nKCZtZXJnZXN0YXRlLT5hcy5wcywKLQkJCQkJCQkJCQkJCSAgbGlzdF9s ZW5ndGgobm9kZS0+YWIuc3VicGxhbnMpLAotCQkJCQkJCQkJCQkJICBub2RlLT5hYi5wYXJ0X3By dW5lX2luZGV4LAotCQkJCQkJCQkJCQkJICBub2RlLT5hYi5hcHByZWxpZHMsCi0JCQkJCQkJCQkJ CQkgICZ2YWxpZHN1YnBsYW5zKTsKLQkJbWVyZ2VzdGF0ZS0+YXMucHJ1bmVfc3RhdGUgPSBwcnVu ZXN0YXRlOwotCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7Ci0KLQkJ LyoKLQkJICogV2hlbiBubyBydW4tdGltZSBwcnVuaW5nIGlzIHJlcXVpcmVkIGFuZCB0aGVyZSdz IGF0IGxlYXN0IG9uZQotCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBtc192YWxpZF9zdWJwbGFu cyBpbW1lZGlhdGVseSwgcHJldmVudGluZwotCQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMuCi0JCSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUg JiYgbnBsYW5zID4gMCkKLQkJCW1lcmdlc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gYm1zX2Fk ZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQl9Ci0JZWxzZQotCXsKLQkJbnBsYW5zID0g bGlzdF9sZW5ndGgobm9kZS0+YWIuc3VicGxhbnMpOworCS8qIEluaXRpYWxpemUgY29tbW9uIGZp ZWxkcyAqLworCUV4ZWNJbml0QXBwZW5kQmFzZSgmbWVyZ2VzdGF0ZS0+YXMsCisJCQkJCSAgICZu b2RlLT5hYiwKKwkJCQkJICAgZXN0YXRlLAorCQkJCQkgICBlZmxhZ3MsCisJCQkJCSAgIC0xLAor CQkJCQkgICBOVUxMKTsKIAotCQkvKgotCQkgKiBXaGVuIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGlzIG5vdCBlbmFibGVkIHdlIGNhbiBqdXN0IG1hcmsgYWxsCi0JCSAqIHN1YnBsYW5zIGFz IHZhbGlkOyB0aGV5IG11c3QgYWxzbyBhbGwgYmUgaW5pdGlhbGl6ZWQuCi0JCSAqLwotCQlBc3Nl cnQobnBsYW5zID4gMCk7Ci0JCW1lcmdlc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gdmFsaWRz dWJwbGFucyA9Ci0JCQlibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwotCQltZXJn ZXN0YXRlLT5hcy5wcnVuZV9zdGF0ZSA9IE5VTEw7Ci0JfQotCi0JbWVyZ2VwbGFuc3RhdGVzID0g cGFsbG9jX2FycmF5KFBsYW5TdGF0ZSAqLCBucGxhbnMpOwotCW1lcmdlc3RhdGUtPmFzLnBsYW5z ID0gbWVyZ2VwbGFuc3RhdGVzOwotCW1lcmdlc3RhdGUtPmFzLm5wbGFucyA9IG5wbGFuczsKLQot CW1lcmdlc3RhdGUtPm1zX3Nsb3RzID0gcGFsbG9jMF9hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBu cGxhbnMpOwotCW1lcmdlc3RhdGUtPm1zX2hlYXAgPSBiaW5hcnloZWFwX2FsbG9jYXRlKG5wbGFu cywgaGVhcF9jb21wYXJlX3Nsb3RzLAorCW1lcmdlc3RhdGUtPm1zX3Nsb3RzID0gcGFsbG9jMF9h cnJheShUdXBsZVRhYmxlU2xvdCAqLCBtZXJnZXN0YXRlLT5hcy5ucGxhbnMpOworCW1lcmdlc3Rh dGUtPm1zX2hlYXAgPSBiaW5hcnloZWFwX2FsbG9jYXRlKG1lcmdlc3RhdGUtPmFzLm5wbGFucywg aGVhcF9jb21wYXJlX3Nsb3RzLAogCQkJCQkJCQkJCQkgIG1lcmdlc3RhdGUpOwogCi0JLyoKLQkg KiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBlYWNoIG9mIHRoZSB2YWxpZCBwbGFucyB0byBiZSBleGVj dXRlZCBhbmQgc2F2ZQotCSAqIHRoZSByZXN1bHRzIGludG8gdGhlIG1lcmdlcGxhbnN0YXRlcyBh cnJheS4KLQkgKi8KLQlqID0gMDsKLQlpID0gLTE7Ci0Jd2hpbGUgKChpID0gYm1zX25leHRfbWVt YmVyKHZhbGlkc3VicGxhbnMsIGkpKSA+PSAwKQotCXsKLQkJUGxhbgkgICAqaW5pdE5vZGUgPSAo UGxhbiAqKSBsaXN0X250aChub2RlLT5hYi5zdWJwbGFucywgaSk7Ci0KLQkJbWVyZ2VwbGFuc3Rh dGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQl9Ci0K LQkvKgotCSAqIEluaXRpYWxpemUgTWVyZ2VBcHBlbmQncyByZXN1bHQgdHVwbGUgdHlwZSBhbmQg c2xvdC4gIElmIHRoZSBjaGlsZAotCSAqIHBsYW5zIGFsbCBwcm9kdWNlIHRoZSBzYW1lIGZpeGVk IHNsb3QgdHlwZSwgd2UgY2FuIHVzZSB0aGF0IHNsb3QgdHlwZTsKLQkgKiBvdGhlcndpc2UgbWFr ZSBhIHZpcnR1YWwgc2xvdC4gIChOb3RlIHRoYXQgdGhlIHJlc3VsdCBzbG90IGl0c2VsZiBpcwot CSAqIHVzZWQgb25seSB0byByZXR1cm4gYSBudWxsIHR1cGxlIGF0IGVuZCBvZiBleGVjdXRpb247 IHJlYWwgdHVwbGVzIGFyZQotCSAqIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW4gdGhlIGNoaWxk cmVuJ3Mgb3duIHJlc3VsdCBzbG90cy4gIFdoYXQgd2UgYXJlCi0JICogZG9pbmcgaGVyZSBpcyBh bGxvd2luZyB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byBvcHRpbWl6ZSBpZiB0aGUKLQkgKiBNZXJn ZUFwcGVuZCB3aWxsIHJldHVybiBvbmx5IG9uZSBraW5kIG9mIHNsb3QuKQotCSAqLwotCW1lcmdl b3BzID0gRXhlY0dldENvbW1vblNsb3RPcHMobWVyZ2VwbGFuc3RhdGVzLCBqKTsKLQlpZiAobWVy Z2VvcHMgIT0gTlVMTCkKLQl7Ci0JCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJm1lcmdlc3Rh dGUtPmFzLnBzLCBtZXJnZW9wcyk7Ci0JfQotCWVsc2UKLQl7Ci0JCUV4ZWNJbml0UmVzdWx0VHVw bGVTbG90VEwoJm1lcmdlc3RhdGUtPmFzLnBzLCAmVFRTT3BzVmlydHVhbCk7Ci0JCS8qIHNob3cg dGhhdCB0aGUgb3V0cHV0IHNsb3QgdHlwZSBpcyBub3QgZml4ZWQgKi8KLQkJbWVyZ2VzdGF0ZS0+ YXMucHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKLQkJbWVyZ2VzdGF0ZS0+YXMucHMucmVzdWx0b3Bz Zml4ZWQgPSBmYWxzZTsKLQl9Ci0KLQkvKgotCSAqIE1pc2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRp b24KLQkgKi8KLQltZXJnZXN0YXRlLT5hcy5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7Ci0KIAkvKgog CSAqIGluaXRpYWxpemUgc29ydC1rZXkgaW5mb3JtYXRpb24KIAkgKi8KQEAgLTMzNSw1OSArMjU1 LDE0IEBAIGhlYXBfY29tcGFyZV9zbG90cyhEYXR1bSBhLCBEYXR1bSBiLCB2b2lkICphcmcpCiB2 b2lkCiBFeGVjRW5kTWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlQbGFu U3RhdGUgKiptZXJnZXBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkg KiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCW1lcmdlcGxhbnMgPSBub2Rl LT5hcy5wbGFuczsKLQlucGxhbnMgPSBub2RlLT5hcy5ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQg ZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucwotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7 IGkrKykKLQkJRXhlY0VuZE5vZGUobWVyZ2VwbGFuc1tpXSk7CisJRXhlY0VuZEFwcGVuZEJhc2Uo Jm5vZGUtPmFzKTsKIH0KIAogdm9pZAogRXhlY1JlU2Nhbk1lcmdlQXBwZW5kKE1lcmdlQXBwZW5k U3RhdGUgKm5vZGUpCiB7Ci0JaW50CQkJaTsKKwlFeGVjUmVTY2FuQXBwZW5kQmFzZSgmbm9kZS0+ YXMpOwogCi0JLyoKLQkgKiBJZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMgdXNlZCBpbiBwcnVuaW5n IGV4cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgotCSAqIHdlJ2QgYmV0dGVyIHVuc2V0IHRo ZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQgZm9yCi0JICogdGhl IG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgotCSAqLwotCWlmIChub2RlLT5hcy5wcnVuZV9zdGF0ZSAm JgotCQlibXNfb3ZlcmxhcChub2RlLT5hcy5wcy5jaGdQYXJhbSwKLQkJCQkJbm9kZS0+YXMucHJ1 bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCi0JewotCQlibXNfZnJlZShub2RlLT5hcy52YWxpZF9z dWJwbGFucyk7Ci0JCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gTlVMTDsKLQl9Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgbm9kZS0+YXMubnBsYW5zOyBpKyspCi0JewotCQlQbGFuU3RhdGUgICpzdWJu b2RlID0gbm9kZS0+YXMucGxhbnNbaV07Ci0KLQkJLyoKLQkJICogRXhlY1JlU2NhbiBkb2Vzbid0 IGtub3cgYWJvdXQgbXkgc3VicGxhbnMsIHNvIEkgaGF2ZSB0byBkbwotCQkgKiBjaGFuZ2VkLXBh cmFtZXRlciBzaWduYWxpbmcgbXlzZWxmLgotCQkgKi8KLQkJaWYgKG5vZGUtPmFzLnBzLmNoZ1Bh cmFtICE9IE5VTEwpCi0JCQlVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoc3Vibm9kZSwgbm9kZS0+YXMu cHMuY2hnUGFyYW0pOwotCi0JCS8qCi0JCSAqIElmIGNoZ1BhcmFtIG9mIHN1Ym5vZGUgaXMgbm90 IG51bGwgdGhlbiBwbGFuIHdpbGwgYmUgcmUtc2Nhbm5lZCBieQotCQkgKiBmaXJzdCBFeGVjUHJv Y05vZGUuCi0JCSAqLwotCQlpZiAoc3Vibm9kZS0+Y2hnUGFyYW0gPT0gTlVMTCkKLQkJCUV4ZWNS ZVNjYW4oc3Vibm9kZSk7Ci0JfQogCWJpbmFyeWhlYXBfcmVzZXQobm9kZS0+bXNfaGVhcCk7CiAJ bm9kZS0+bXNfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYThmNDFiYWQ5MjEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQXBwZW5kLmgKQEAgLTAs MCArMSwyNiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBleGVjQXBwZW5kLmgKKyAqCQlTdXBw b3J0IGZ1bmN0aW9ucyBmb3IgTWVyZ2VBcHBlbmQgYW5kIEFwcGVuZCBub2Rlcy4KKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQXBwZW5k LmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgRVhFQ0FQUEVORF9ICisjZGVm aW5lIEVYRUNBUFBFTkRfSAorCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisKK2V4dGVy biB2b2lkIEV4ZWNJbml0QXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKnN0YXRlLAorCQkJCQkJ CSAgIEFwcGVuZEJhc2UgKm5vZGUsCisJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJ ICAgaW50IGVmbGFncywKKwkJCQkJCQkgICBpbnQgZmlyc3RfcGFydGlhbF9wbGFuLAorCQkJCQkJ CSAgIGludCAqZmlyc3RfdmFsaWRfcGFydGlhbF9wbGFuKTsKK2V4dGVybiB2b2lkIEV4ZWNFbmRB cHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjUmVTY2Fu QXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKm5vZGUpOworCisjZW5kaWYJCQkJCQkJLyogRVhF Q0FQUEVORF9IICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000ced44b064ead416c Content-Type: application/octet-stream; name="v17-0004-Move-async-infrastructure-into-shared-AppendBase.patch" Content-Disposition: attachment; filename="v17-0004-Move-async-infrastructure-into-shared-AppendBase.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnl4h7la3 RnJvbSA0NjgyOTFmYTg1NDFiZGJiNDE3MTU4MTUwMjcwZDFkZTg5MWFjZTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjQyOjMyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgNC81XSBNb3ZlIGFzeW5jIGluZnJhc3RydWN0dXJlIGludG8gc2hhcmVkIEFwcGVu ZEJhc2UKIGZ1bmN0aW9ucwoKTW92ZSBhbGwgYXN5bmMtcmVsYXRlZCBjb2RlIGZyb20gbm9kZUFw cGVuZC5jIGludG8gdGhlIHNoYXJlZApleGVjQXBwZW5kLmMsIHByZXBhcmluZyBNZXJnZUFwcGVu ZCB0byBzdXBwb3J0IGFzeW5jIGZvcmVpZ24gc2NhbgpzdWJwbGFucy4KCiAgLSBFeGVjSW5pdEFw cGVuZEJhc2UoKSBub3cgZGV0ZWN0cyBhc3luYy1jYXBhYmxlIHN1YnBsYW5zIGFuZCBhbGxvY2F0 ZXMKICAgIGFzeW5jIHJlcXVlc3QvcmVzdWx0IHN0YXRlLgogIC0gRXhlY1JlU2NhbkFwcGVuZEJh c2UoKSBub3cgcmVzZXRzIGFzeW5jIHJlcXVlc3Qgc3RhdGUuCiAgLSBFeGVjQXBwZW5kQmFzZUFz eW5jQmVnaW4oKTogZmlyZSBhc3luYyByZXF1ZXN0cyAobW92ZWQgZnJvbQogICAgbm9kZUFwcGVu ZC5jJ3MgRXhlY0FwcGVuZEFzeW5jQmVnaW4pLgogIC0gRXhlY0FwcGVuZEJhc2VBc3luY0V2ZW50 V2FpdCgpOiB3YWl0L3BvbGwgZm9yIGFzeW5jIGV2ZW50cyAobW92ZWQKICAgIGZyb20gbm9kZUFw cGVuZC5jJ3MgRXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KS4KICAtIGNsYXNzaWZ5X21hdGNoaW5n X3N1YnBsYW5zX2NvbW1vbigpOiBuZXcgaGVscGVyIHRvIHNwbGl0IHZhbGlkCiAgICBzdWJwbGFu cyBpbnRvIHN5bmMgYW5kIGFzeW5jIHNldHMuCiAgLSBNZXJnZUFwcGVuZCBub3cgdXNlcyB2YWxp ZF9zdWJwbGFuc19pZGVudGlmaWVkIGZsYWcgaW5zdGVhZCBvZgogICAgY2hlY2tpbmcgdmFsaWRf c3VicGxhbnMgPT0gTlVMTC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNTliZTE5 NGM1YTQwOWZiOWZjOWYyMDMxNTgxYjhhNDQlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IE1hdGhl dXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBB bGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxl eGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IEFs ZW5hIFJ5YmFraW5hIDxhLnJ5YmFraW5hQHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYyAgICAgIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgIHwgMjA4ICsrLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIHwg ICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQXBwZW5kLmggICAgICB8ICAgNyArCiA0 IGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRpb25zKCspLCAyMDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FwcGVuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0FwcGVuZC5jCmluZGV4IDk1OTlkMTBhOTUyLi5kNmJlYmFiYmQzMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FwcGVuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYwpAQCAtMTQsOCArMTQsMTQgQEAKICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FwcGVuZC5oIgorI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWNBc3luYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVu dHNldC5oIgorCisjZGVmaW5lIEVWRU5UX0JVRkZFUl9TSVpFCQkJMTYKIAogLyogIEJlZ2luIGFs bCBvZiB0aGUgc3Vic2NhbnMgb2YgYW4gQXBwZW5kQmFzZSBub2RlLiAqLwogdm9pZApAQCAtMjks NyArMzUsOSBAQCBFeGVjSW5pdEFwcGVuZEJhc2UoQXBwZW5kQmFzZVN0YXRlICpzdGF0ZSwKIAlQ bGFuU3RhdGUgKiphcHBlbmRwbGFuc3RhdGVzOwogCWNvbnN0IFR1cGxlVGFibGVTbG90T3BzICph cHBlbmRvcHM7CiAJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFuczsKKwlCaXRtYXBzZXQgICphc3lu Y3BsYW5zOwogCWludAkJCW5wbGFuczsKKwlpbnQJCQluYXN5bmNwbGFuczsKIAlpbnQJCQlmaXJz dHZhbGlkOwogCWludAkJCWksCiAJCQkJajsKQEAgLTg3LDEyICs5NSwyNSBAQCBFeGVjSW5pdEFw cGVuZEJhc2UoQXBwZW5kQmFzZVN0YXRlICpzdGF0ZSwKIAkgKiBXaGlsZSBhdCBpdCwgZmluZCBv dXQgdGhlIGZpcnN0IHZhbGlkIHBhcnRpYWwgcGxhbi4KIAkgKi8KIAlqID0gMDsKKwlhc3luY3Bs YW5zID0gTlVMTDsKKwluYXN5bmNwbGFucyA9IDA7CiAJZmlyc3R2YWxpZCA9IG5wbGFuczsKIAlp ID0gLTE7CiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHZhbGlkc3VicGxhbnMsIGkpKSA+ PSAwKQogCXsKIAkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5z dWJwbGFucywgaSk7CiAKKwkJLyoKKwkJICogUmVjb3JkIGFzeW5jIHN1YnBsYW5zLiAgV2hlbiBl eGVjdXRpbmcgRXZhbFBsYW5RdWFsLCB3ZSB0cmVhdCB0aGVtCisJCSAqIGFzIHN5bmMgb25lczsg ZG9uJ3QgZG8gdGhpcyB3aGVuIGluaXRpYWxpemluZyBhbiBFdmFsUGxhblF1YWwgcGxhbgorCQkg KiB0cmVlLgorCQkgKi8KKwkJaWYgKGluaXROb2RlLT5hc3luY19jYXBhYmxlICYmIGVzdGF0ZS0+ ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQorCQl7CisJCQlhc3luY3BsYW5zID0gYm1zX2FkZF9tZW1i ZXIoYXN5bmNwbGFucywgaik7CisJCQluYXN5bmNwbGFucysrOworCQl9CisKIAkJLyoKIAkJICog UmVjb3JkIHRoZSBsb3dlc3QgYXBwZW5kcGxhbnMgaW5kZXggd2hpY2ggaXMgYSB2YWxpZCBwYXJ0 aWFsIHBsYW4uCiAJCSAqLwpAQCAtMTMwLDE1ICsxNTEsMzggQEAgRXhlY0luaXRBcHBlbmRCYXNl KEFwcGVuZEJhc2VTdGF0ZSAqc3RhdGUsCiAJCXN0YXRlLT5wcy5yZXN1bHRvcHNmaXhlZCA9IGZh bHNlOwogCX0KIAotCS8qIEluaXRpYWxpemUgYXN5bmMgc3RhdGUgdG8gc2FmZSBkZWZhdWx0cyAq LwotCXN0YXRlLT5hc3luY3BsYW5zID0gTlVMTDsKLQlzdGF0ZS0+bmFzeW5jcGxhbnMgPSAwOwor CS8qIEluaXRpYWxpemUgYXN5bmMgc3RhdGUgKi8KKwlzdGF0ZS0+YXN5bmNwbGFucyA9IGFzeW5j cGxhbnM7CisJc3RhdGUtPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJc3RhdGUtPmFzeW5j cmVxdWVzdHMgPSBOVUxMOwogCXN0YXRlLT5hc3luY3Jlc3VsdHMgPSBOVUxMOwogCXN0YXRlLT5u ZWVkcmVxdWVzdCA9IE5VTEw7CiAJc3RhdGUtPmV2ZW50c2V0ID0gTlVMTDsKIAlzdGF0ZS0+dmFs aWRfYXN5bmNwbGFucyA9IE5VTEw7CiAKKwlpZiAobmFzeW5jcGxhbnMgPiAwKQorCXsKKwkJc3Rh dGUtPmFzeW5jcmVxdWVzdHMgPSBwYWxsb2MwX2FycmF5KEFzeW5jUmVxdWVzdCAqLCBucGxhbnMp OworCisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKGFzeW5jcGxhbnMs IGkpKSA+PSAwKQorCQl7CisJCQlBc3luY1JlcXVlc3QgKmFyZXE7CisKKwkJCWFyZXEgPSBwYWxs b2Nfb2JqZWN0KEFzeW5jUmVxdWVzdCk7CisJCQlhcmVxLT5yZXF1ZXN0b3IgPSAoUGxhblN0YXRl ICopIHN0YXRlOworCQkJYXJlcS0+cmVxdWVzdGVlID0gYXBwZW5kcGxhbnN0YXRlc1tpXTsKKwkJ CWFyZXEtPnJlcXVlc3RfaW5kZXggPSBpOworCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZh bHNlOworCQkJYXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOworCQkJYXJlcS0+cmVzdWx0 ID0gTlVMTDsKKworCQkJc3RhdGUtPmFzeW5jcmVxdWVzdHNbaV0gPSBhcmVxOworCQl9CisKKwkJ c3RhdGUtPmFzeW5jcmVzdWx0cyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbmFz eW5jcGxhbnMpOworCX0KKwogCS8qCiAJICogTWlzY2VsbGFuZW91cyBpbml0aWFsaXphdGlvbgog CSAqLwpAQCAtMTQ5LDYgKzE5Myw3IEBAIHZvaWQKIEV4ZWNSZVNjYW5BcHBlbmRCYXNlKEFwcGVu ZEJhc2VTdGF0ZSAqbm9kZSkKIHsKIAlpbnQJCQlpOworCWludAkJCW5hc3luY3BsYW5zID0gbm9k ZS0+bmFzeW5jcGxhbnM7CiAKIAkvKgogCSAqIElmIGFueSBQQVJBTV9FWEVDIFBhcmFtcyB1c2Vk IGluIHBydW5pbmcgZXhwcmVzc2lvbnMgaGF2ZSBjaGFuZ2VkLCB0aGVuCkBAIC0xODQsNiArMjI5 LDE4NyBAQCBFeGVjUmVTY2FuQXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKm5vZGUpCiAJCWlm IChzdWJub2RlLT5jaGdQYXJhbSA9PSBOVUxMKQogCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKIAl9 CisKKwkvKiBSZXNldCBhc3luYyBzdGF0ZSAqLworCWlmIChuYXN5bmNwbGFucyA+IDApCisJewor CQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc3luY3BsYW5z LCBpKSkgPj0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXN5bmNyZXF1 ZXN0c1tpXTsKKworCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOworCQkJYXJlcS0+ cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOworCQkJYXJlcS0+cmVzdWx0ID0gTlVMTDsKKwkJfQor CisJCWJtc19mcmVlKG5vZGUtPm5lZWRyZXF1ZXN0KTsKKwkJbm9kZS0+bmVlZHJlcXVlc3QgPSBO VUxMOworCX0KK30KKworLyogIFdhaXQgb3IgcG9sbCBmb3IgZmlsZSBkZXNjcmlwdG9yIGV2ZW50 cyBhbmQgZmlyZSBjYWxsYmFja3MuICovCit2b2lkCitFeGVjQXBwZW5kQmFzZUFzeW5jRXZlbnRX YWl0KEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSwgaW50IHRpbWVvdXQsCisJCQkJCQkJIHVpbnQzMiB3 YWl0X2V2ZW50X2luZm8pCit7CisJaW50CQkJbmV2ZW50cyA9IG5vZGUtPm5hc3luY3BsYW5zICsg MjsJLyogb25lIGZvciBQTSBkZWF0aCBhbmQKKwkJCQkJCQkJCQkJCQkgKiBvbmUgZm9yIGxhdGNo ICovCisJaW50CQkJbm9jY3VycmVkOworCWludAkJCWk7CisJV2FpdEV2ZW50CW9jY3VycmVkX2V2 ZW50W0VWRU5UX0JVRkZFUl9TSVpFXTsKKworCUFzc2VydChub2RlLT5ldmVudHNldCA9PSBOVUxM KTsKKworCW5vZGUtPmV2ZW50c2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJj ZU93bmVyLCBuZXZlbnRzKTsKKwlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5ldmVudHNldCwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJICBOVUxMLCBOVUxMKTsK KworCS8qIEdpdmUgZWFjaCB3YWl0aW5nIHN1YnBsYW4gYSBjaGFuY2UgdG8gYWRkIGFuIGV2ZW50 LiAqLworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXN5bmNw bGFucywgaSkpID49IDApCisJeworCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hc3luY3Jl cXVlc3RzW2ldOworCisJCWlmIChhcmVxLT5jYWxsYmFja19wZW5kaW5nKQorCQkJRXhlY0FzeW5j Q29uZmlndXJlV2FpdChhcmVxKTsKKwl9CisKKwkvKgorCSAqIE5vIG5lZWQgZm9yIGZ1cnRoZXIg cHJvY2Vzc2luZyBpZiBub25lIG9mIHRoZSBzdWJwbGFucyBjb25maWd1cmVkIGFueQorCSAqIGV2 ZW50cy4KKwkgKi8KKwlpZiAoR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMobm9kZS0+ZXZlbnRz ZXQpID09IDEpCisJeworCQlGcmVlV2FpdEV2ZW50U2V0KG5vZGUtPmV2ZW50c2V0KTsKKwkJbm9k ZS0+ZXZlbnRzZXQgPSBOVUxMOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBBZGQgdGhlIHBy b2Nlc3MgbGF0Y2ggdG8gdGhlIHNldCwgc28gdGhhdCB3ZSB3YWtlIHVwIHRvIHByb2Nlc3MgdGhl CisJICogc3RhbmRhcmQgaW50ZXJydXB0cyB3aXRoIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJ ICoKKwkgKiBOT1RFOiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdCdzIGltcG9ydGFudCB0aGF0 IHRoaXMgaXMgYWRkZWQgdG8gdGhlCisJICogV2FpdEV2ZW50U2V0IGFmdGVyIHRoZSBFeGVjQXN5 bmNDb25maWd1cmVXYWl0KCkgY2FsbHMuICBOYW1lbHksCisJICogcG9zdGdyZXNfZmR3IGNhbGxz ICJHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhzZXQpID09IDEiIHRvIGNoZWNrIGlmCisJICog YW55IG90aGVyIGV2ZW50cyBhcmUgaW4gdGhlIHNldC4gIFRoYXQncyBhIHBvb3IgZGVzaWduLCBp dCdzCisJICogcXVlc3Rpb25hYmxlIGZvciBwb3N0Z3Jlc19mZHcgdG8gYmUgZG9pbmcgdGhhdCBp biB0aGUgZmlyc3QgcGxhY2UsIGJ1dAorCSAqIHdlIGNhbm5vdCBjaGFuZ2UgaXQgbm93LiAgVGhl IHBhdHRlcm4gaGFzIHBvc3NpYmx5IGJlZW4gY29waWVkIHRvIG90aGVyCisJICogZXh0ZW5zaW9u cyB0b28uCisJICovCisJQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+ZXZlbnRzZXQsIFdMX0xBVENI X1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJICBNeUxhdGNoLCBOVUxMKTsKKworCS8qIFJl dHVybiBhdCBtb3N0IEVWRU5UX0JVRkZFUl9TSVpFIGV2ZW50cyBpbiBvbmUgY2FsbC4gKi8KKwlp ZiAobmV2ZW50cyA+IEVWRU5UX0JVRkZFUl9TSVpFKQorCQluZXZlbnRzID0gRVZFTlRfQlVGRkVS X1NJWkU7CisKKwkvKgorCSAqIElmIHRoZSB0aW1lb3V0IGlzIC0xLCB3YWl0IHVudGlsIGF0IGxl YXN0IG9uZSBldmVudCBvY2N1cnMuICBJZiB0aGUKKwkgKiB0aW1lb3V0IGlzIDAsIHBvbGwgZm9y IGV2ZW50cywgYnV0IGRvIG5vdCB3YWl0IGF0IGFsbC4KKwkgKi8KKwlub2NjdXJyZWQgPSBXYWl0 RXZlbnRTZXRXYWl0KG5vZGUtPmV2ZW50c2V0LCB0aW1lb3V0LCBvY2N1cnJlZF9ldmVudCwKKwkJ CQkJCQkJIG5ldmVudHMsIHdhaXRfZXZlbnRfaW5mbyk7CisJRnJlZVdhaXRFdmVudFNldChub2Rl LT5ldmVudHNldCk7CisJbm9kZS0+ZXZlbnRzZXQgPSBOVUxMOworCWlmIChub2NjdXJyZWQgPT0g MCkKKwkJcmV0dXJuOworCisJLyogRGVsaXZlciBub3RpZmljYXRpb25zLiAqLworCWZvciAoaSA9 IDA7IGkgPCBub2NjdXJyZWQ7IGkrKykKKwl7CisJCVdhaXRFdmVudCAgKncgPSAmb2NjdXJyZWRf ZXZlbnRbaV07CisKKwkJLyoKKwkJICogRWFjaCB3YWl0aW5nIHN1YnBsYW4gc2hvdWxkIGhhdmUg cmVnaXN0ZXJlZCBpdHMgd2FpdCBldmVudCB3aXRoCisJCSAqIHVzZXJfZGF0YSBwb2ludGluZyBi YWNrIHRvIGl0cyBBc3luY1JlcXVlc3QuCisJCSAqLworCQlpZiAoKHctPmV2ZW50cyAmIFdMX1NP Q0tFVF9SRUFEQUJMRSkgIT0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gKEFzeW5j UmVxdWVzdCAqKSB3LT51c2VyX2RhdGE7CisKKwkJCWlmIChhcmVxLT5jYWxsYmFja19wZW5kaW5n KQorCQkJeworCQkJCS8qCisJCQkJICogTWFyayBpdCBhcyBubyBsb25nZXIgbmVlZGluZyBhIGNh bGxiYWNrLiAgV2UgbXVzdCBkbyB0aGlzCisJCQkJICogYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBj YWxsYmFjayBpbiBjYXNlIHRoZSBjYWxsYmFjayByZXNldHMKKwkJCQkgKiB0aGUgZmxhZy4KKwkJ CQkgKi8KKwkJCQlhcmVxLT5jYWxsYmFja19wZW5kaW5nID0gZmFsc2U7CisKKwkJCQkvKiBEbyB0 aGUgYWN0dWFsIHdvcmsuICovCisJCQkJRXhlY0FzeW5jTm90aWZ5KGFyZXEpOworCQkJfQorCQl9 CisKKwkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgKi8KKwkJaWYgKCh3LT5ldmVudHMg JiBXTF9MQVRDSF9TRVQpICE9IDApCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisJfQorfQorCisvKiAgQmVnaW4gZXhlY3V0aW5n IGFzeW5jLWNhcGFibGUgc3VicGxhbnMuICovCit2b2lkCitFeGVjQXBwZW5kQmFzZUFzeW5jQmVn aW4oQXBwZW5kQmFzZVN0YXRlICpub2RlKQoreworCWludAkJCWk7CisKKwkvKiBCYWNrd2FyZCBz Y2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYXN5bmMtYXdhcmUgQXBwZW5kcy4gKi8KKwlBc3NlcnQo U2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5wcy5zdGF0ZS0+ZXNfZGlyZWN0aW9uKSk7CisK KwkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHN1YnBsYW5z ICovCisJQXNzZXJ0KG5vZGUtPm5wbGFucyA+IDApOworCisJLyogV2Ugc2hvdWxkIG5ldmVyIGJl IGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBhc3luYyBzdWJwbGFucy4gKi8KKwlBc3NlcnQobm9k ZS0+bmFzeW5jcGxhbnMgPiAwKTsKKworCS8qIE1ha2UgYSByZXF1ZXN0IGZvciBlYWNoIG9mIHRo ZSB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25l eHRfbWVtYmVyKG5vZGUtPnZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQorCXsKKwkJQXN5bmNS ZXF1ZXN0ICphcmVxID0gbm9kZS0+YXN5bmNyZXF1ZXN0c1tpXTsKKworCQlBc3NlcnQoYXJlcS0+ cmVxdWVzdF9pbmRleCA9PSBpKTsKKwkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19wZW5kaW5nKTsK KworCQkvKiBEbyB0aGUgYWN0dWFsIHdvcmsuICovCisJCUV4ZWNBc3luY1JlcXVlc3QoYXJlcSk7 CisJfQorfQorCisvKgorICogY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNfY29tbW9uCisgKgkJ Q29tbW9uIHBhcnQgb2YgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoKSBmb3IgQXBwZW5kIGFu ZCBNZXJnZUFwcGVuZC4KKyAqCisgKiBTcGxpdHMgdmFsaWRfc3VicGxhbnMgaW50byBzeW5jIGFu ZCBhc3luYyBzZXRzLiAgUmV0dXJucyBmYWxzZSBpZiB0aGVyZQorICogYXJlIG5vIHZhbGlkIGFz eW5jIHN1YnBsYW5zLCB0cnVlIG90aGVyd2lzZS4KKyAqLworYm9vbAorY2xhc3NpZnlfbWF0Y2hp bmdfc3VicGxhbnNfY29tbW9uKEJpdG1hcHNldCAqKnZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkg IEJpdG1hcHNldCAqYXN5bmNwbGFucywKKwkJCQkJCQkJICBCaXRtYXBzZXQgKip2YWxpZF9hc3lu Y3BsYW5zKQoreworCUFzc2VydCgqdmFsaWRfYXN5bmNwbGFucyA9PSBOVUxMKTsKKworCS8qIENo ZWNrZWQgYnkgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoKSAqLworCUFzc2VydCghYm1zX2lz X2VtcHR5KCp2YWxpZF9zdWJwbGFucykpOworCisJLyogTm90aGluZyB0byBkbyBpZiB0aGVyZSBh cmUgbm8gdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCisJaWYgKCFibXNfb3ZlcmxhcCgqdmFsaWRf c3VicGxhbnMsIGFzeW5jcGxhbnMpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBHZXQgdmFsaWQg YXN5bmMgc3VicGxhbnMuICovCisJKnZhbGlkX2FzeW5jcGxhbnMgPSBibXNfaW50ZXJzZWN0KGFz eW5jcGxhbnMsCisJCQkJCQkJCQkgICp2YWxpZF9zdWJwbGFucyk7CisKKwkvKiBBZGp1c3QgdGhl IHZhbGlkIHN1YnBsYW5zIHRvIGNvbnRhaW4gc3luYyBzdWJwbGFucyBvbmx5LiAqLworCSp2YWxp ZF9zdWJwbGFucyA9IGJtc19kZWxfbWVtYmVycygqdmFsaWRfc3VicGxhbnMsCisJCQkJCQkJCQkg ICp2YWxpZF9hc3luY3BsYW5zKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyogIFNodXRzIGRvd24g dGhlIHN1YnBsYW5zIG9mIGFuIEFwcGVuZEJhc2Ugbm9kZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYwppbmRleCBmMjY3ZmZlMTNmYS4uOTVlZDRkODZlMjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMKQEAgLTg0LDcgKzg0LDYgQEAgc3RydWN0IFBhcmFsbGVsQXBwZW5kU3RhdGUK IH07CiAKICNkZWZpbmUgSU5WQUxJRF9TVUJQTEFOX0lOREVYCQktMQotI2RlZmluZSBFVkVOVF9C VUZGRVJfU0laRQkJCTE2CiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY0FwcGVuZChQbGFu U3RhdGUgKnBzdGF0ZSk7CiBzdGF0aWMgYm9vbCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHko QXBwZW5kU3RhdGUgKm5vZGUpOwpAQCAtMTEyLDEwICsxMTEsNiBAQCBBcHBlbmRTdGF0ZSAqCiBF eGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog ewogCUFwcGVuZFN0YXRlICphcHBlbmRzdGF0ZSA9IG1ha2VOb2RlKEFwcGVuZFN0YXRlKTsKLQlC aXRtYXBzZXQgICphc3luY3BsYW5zOwotCWludAkJCW5hc3luY3BsYW5zOwotCWludAkJCW5wbGFu czsKLQlpbnQJCQlpOwogCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNz ZXJ0KCEoZWZsYWdzICYgRVhFQ19GTEFHX01BUkspKTsKQEAgLTE0MCw1OSArMTM1LDExIEBAIEV4 ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CQkJCSAgIG5vZGUtPmZpcnN0X3BhcnRpYWxfcGxhbiwKIAkJCQkJICAgJmFwcGVuZHN0YXRlLT5h c19maXJzdF9wYXJ0aWFsX3BsYW4pOwogCi0JbnBsYW5zID0gYXBwZW5kc3RhdGUtPmFzLm5wbGFu czsKKwlpZiAoYXBwZW5kc3RhdGUtPmFzLm5hc3luY3BsYW5zID4gMCAmJiBhcHBlbmRzdGF0ZS0+ YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxh bnMoYXBwZW5kc3RhdGUpOwogCi0JLyoKLQkgKiBEZXRlY3QgYXN5bmMtY2FwYWJsZSBzdWJwbGFu cy4gIFdoZW4gZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJlYXQKLQkgKiB0aGVtIGFzIHN5 bmMgb25lczsgZG9uJ3QgZG8gdGhpcyB3aGVuIGluaXRpYWxpemluZyBhbiBFdmFsUGxhblF1YWwg cGxhbgotCSAqIHRyZWUuCi0JICovCi0JYXN5bmNwbGFucyA9IE5VTEw7Ci0JbmFzeW5jcGxhbnMg PSAwOwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQl7Ci0JCWlmIChhcHBlbmRzdGF0 ZS0+YXMucGxhbnNbaV0tPnBsYW4tPmFzeW5jX2NhcGFibGUgJiYKLQkJCWVzdGF0ZS0+ZXNfZXBx X2FjdGl2ZSA9PSBOVUxMKQotCQl7Ci0JCQlhc3luY3BsYW5zID0gYm1zX2FkZF9tZW1iZXIoYXN5 bmNwbGFucywgaSk7Ci0JCQluYXN5bmNwbGFucysrOwotCQl9Ci0JfQotCi0JLyogSW5pdGlhbGl6 ZSBhc3luYyBzdGF0ZSAqLwotCWFwcGVuZHN0YXRlLT5hcy5hc3luY3BsYW5zID0gYXN5bmNwbGFu czsKLQlhcHBlbmRzdGF0ZS0+YXMubmFzeW5jcGxhbnMgPSBuYXN5bmNwbGFuczsKLQlhcHBlbmRz dGF0ZS0+YXNfbmFzeW5jcmVzdWx0cyA9IDA7CiAJYXBwZW5kc3RhdGUtPmFzX25hc3luY3JlbWFp biA9IDA7CiAKLQlpZiAobmFzeW5jcGxhbnMgPiAwKQotCXsKLQkJYXBwZW5kc3RhdGUtPmFzLmFz eW5jcmVxdWVzdHMgPSAoQXN5bmNSZXF1ZXN0ICoqKQotCQkJcGFsbG9jMChucGxhbnMgKiBzaXpl b2YoQXN5bmNSZXF1ZXN0ICopKTsKLQotCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihhc3luY3BsYW5zLCBpKSkgPj0gMCkKLQkJewotCQkJQXN5bmNSZXF1ZXN0ICphcmVx OwotCi0JCQlhcmVxID0gcGFsbG9jX29iamVjdChBc3luY1JlcXVlc3QpOwotCQkJYXJlcS0+cmVx dWVzdG9yID0gKFBsYW5TdGF0ZSAqKSBhcHBlbmRzdGF0ZTsKLQkJCWFyZXEtPnJlcXVlc3RlZSA9 IGFwcGVuZHN0YXRlLT5hcy5wbGFuc1tpXTsKLQkJCWFyZXEtPnJlcXVlc3RfaW5kZXggPSBpOwot CQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwotCQkJYXJlcS0+cmVxdWVzdF9jb21w bGV0ZSA9IGZhbHNlOwotCQkJYXJlcS0+cmVzdWx0ID0gTlVMTDsKLQotCQkJYXBwZW5kc3RhdGUt PmFzLmFzeW5jcmVxdWVzdHNbaV0gPSBhcmVxOwotCQl9Ci0KLQkJYXBwZW5kc3RhdGUtPmFzLmFz eW5jcmVzdWx0cyA9IChUdXBsZVRhYmxlU2xvdCAqKikKLQkJCXBhbGxvYzAobmFzeW5jcGxhbnMg KiBzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikpOwotCi0JCWlmIChhcHBlbmRzdGF0ZS0+YXMudmFs aWRfc3VicGxhbnNfaWRlbnRpZmllZCkKLQkJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKGFw cGVuZHN0YXRlKTsKLQl9Ci0KIAkvKiBGb3IgcGFyYWxsZWwgcXVlcnksIHRoaXMgd2lsbCBiZSBv dmVycmlkZGVuIGxhdGVyLiAqLwogCWFwcGVuZHN0YXRlLT5jaG9vc2VfbmV4dF9zdWJwbGFuID0g Y2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5OwogCkBAIC0zMTIsMjkgKzI1OSwxNiBAQCBFeGVj RW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogdm9pZAogRXhlY1JlU2NhbkFwcGVuZChBcHBl bmRTdGF0ZSAqbm9kZSkKIHsKKwogCWludAkJCW5hc3luY3BsYW5zID0gbm9kZS0+YXMubmFzeW5j cGxhbnM7CiAKIAlFeGVjUmVTY2FuQXBwZW5kQmFzZSgmbm9kZS0+YXMpOwogCi0JLyogUmVzZXQg YXN5bmMgc3RhdGUgKi8KKwkvKiBSZXNldCBBcHBlbmQtc3BlY2lmaWMgc3RhdGUgKi8KIAlpZiAo bmFzeW5jcGxhbnMgPiAwKQogCXsKLQkJaW50CQkJaTsKLQotCQlpID0gLTE7Ci0JCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy5hc3luY3BsYW5zLCBpKSkgPj0gMCkKLQkJewot CQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKLQotCQkJ YXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwotCQkJYXJlcS0+cmVxdWVzdF9jb21wbGV0 ZSA9IGZhbHNlOwotCQkJYXJlcS0+cmVzdWx0ID0gTlVMTDsKLQkJfQotCiAJCW5vZGUtPmFzX25h c3luY3Jlc3VsdHMgPSAwOwogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAwOwotCQlibXNfZnJl ZShub2RlLT5hcy5uZWVkcmVxdWVzdCk7Ci0JCW5vZGUtPmFzLm5lZWRyZXF1ZXN0ID0gTlVMTDsK IAl9CiAKIAkvKiBMZXQgY2hvb3NlX25leHRfc3VicGxhbl8qIGZ1bmN0aW9uIGhhbmRsZSBzZXR0 aW5nIHRoZSBmaXJzdCBzdWJwbGFuICovCkBAIC03NTQsMjEgKzY4OCw3IEBAIEV4ZWNBcHBlbmRB c3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCWlmIChub2RlLT5hc19uYXN5bmNyZW1haW4g PT0gMCkKIAkJcmV0dXJuOwogCi0JLyogTWFrZSBhIHJlcXVlc3QgZm9yIGVhY2ggb2YgdGhlIHZh bGlkIGFzeW5jIHN1YnBsYW5zLiAqLwotCXsKLQkJaW50CQkJaSA9IC0xOwotCi0JCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zLCBpKSkgPj0gMCkK LQkJewotCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsK LQotCQkJQXNzZXJ0KGFyZXEtPnJlcXVlc3RfaW5kZXggPT0gaSk7Ci0JCQlBc3NlcnQoIWFyZXEt PmNhbGxiYWNrX3BlbmRpbmcpOwotCi0JCQkvKiBEbyB0aGUgYWN0dWFsIHdvcmsuICovCi0JCQlF eGVjQXN5bmNSZXF1ZXN0KGFyZXEpOwotCQl9Ci0JfQorCUV4ZWNBcHBlbmRCYXNlQXN5bmNCZWdp bigmbm9kZS0+YXMpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04ODMsMTA1ICs4MDMsMTIgQEAgRXhl Y0FwcGVuZEFzeW5jUmVxdWVzdChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipy ZXN1bHQpCiBzdGF0aWMgdm9pZAogRXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRl ICpub2RlKQogewotCWludAkJCW5ldmVudHMgPSBub2RlLT5hcy5uYXN5bmNwbGFucyArIDI7CiAJ bG9uZwkJdGltZW91dCA9IG5vZGUtPmFzX3N5bmNkb25lID8gLTEgOiAwOwotCVdhaXRFdmVudAlv Y2N1cnJlZF9ldmVudFtFVkVOVF9CVUZGRVJfU0laRV07Ci0JaW50CQkJbm9jY3VycmVkOwotCWlu dAkJCWk7CiAKIAkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5v IHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwogCUFzc2VydChub2RlLT5hc19uYXN5bmNyZW1haW4g PiAwKTsKIAotCUFzc2VydChub2RlLT5hcy5ldmVudHNldCA9PSBOVUxMKTsKLQlub2RlLT5hcy5l dmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50 cyk7Ci0JQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+YXMuZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1f REVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7Ci0KLQkvKiBHaXZl IGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4gKi8KLQlpID0g LTE7Ci0Jd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLmFzeW5jcGxhbnMsIGkp KSA+PSAwKQotCXsKLQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0 c1tpXTsKLQotCQlpZiAoYXJlcS0+Y2FsbGJhY2tfcGVuZGluZykKLQkJCUV4ZWNBc3luY0NvbmZp Z3VyZVdhaXQoYXJlcSk7Ci0JfQotCi0JLyoKLQkgKiBObyBuZWVkIGZvciBmdXJ0aGVyIHByb2Nl c3NpbmcgaWYgbm9uZSBvZiB0aGUgc3VicGxhbnMgY29uZmlndXJlZCBhbnkKLQkgKiBldmVudHMu Ci0JICovCi0JaWYgKEdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKG5vZGUtPmFzLmV2ZW50c2V0 KSA9PSAxKQotCXsKLQkJRnJlZVdhaXRFdmVudFNldChub2RlLT5hcy5ldmVudHNldCk7Ci0JCW5v ZGUtPmFzLmV2ZW50c2V0ID0gTlVMTDsKLQkJcmV0dXJuOwotCX0KLQotCS8qCi0JICogQWRkIHRo ZSBwcm9jZXNzIGxhdGNoIHRvIHRoZSBzZXQsIHNvIHRoYXQgd2Ugd2FrZSB1cCB0byBwcm9jZXNz IHRoZQotCSAqIHN0YW5kYXJkIGludGVycnVwdHMgd2l0aCBDSEVDS19GT1JfSU5URVJSVVBUUygp LgotCSAqCi0JICogTk9URTogRm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXQncyBpbXBvcnRhbnQg dGhhdCB0aGlzIGlzIGFkZGVkIHRvIHRoZQotCSAqIFdhaXRFdmVudFNldCBhZnRlciB0aGUgRXhl Y0FzeW5jQ29uZmlndXJlV2FpdCgpIGNhbGxzLiAgTmFtZWx5LAotCSAqIHBvc3RncmVzX2ZkdyBj YWxscyAiR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoc2V0KSA9PSAxIiB0byBjaGVjayBpZgot CSAqIGFueSBvdGhlciBldmVudHMgYXJlIGluIHRoZSBzZXQuICBUaGF0J3MgYSBwb29yIGRlc2ln biwgaXQncwotCSAqIHF1ZXN0aW9uYWJsZSBmb3IgcG9zdGdyZXNfZmR3IHRvIGJlIGRvaW5nIHRo YXQgaW4gdGhlIGZpcnN0IHBsYWNlLCBidXQKLQkgKiB3ZSBjYW5ub3QgY2hhbmdlIGl0IG5vdy4g IFRoZSBwYXR0ZXJuIGhhcyBwb3NzaWJseSBiZWVuIGNvcGllZCB0byBvdGhlcgotCSAqIGV4dGVu c2lvbnMgdG9vLgotCSAqLwotCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzLmV2ZW50c2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTXlMYXRjaCwgTlVMTCk7Ci0K LQkvKiBSZXR1cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwu ICovCi0JaWYgKG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0laRSkKLQkJbmV2ZW50cyA9IEVWRU5U X0JVRkZFUl9TSVpFOwotCi0JLyoKLQkgKiBJZiB0aGUgdGltZW91dCBpcyAtMSwgd2FpdCB1bnRp bCBhdCBsZWFzdCBvbmUgZXZlbnQgb2NjdXJzLiAgSWYgdGhlCi0JICogdGltZW91dCBpcyAwLCBw b2xsIGZvciBldmVudHMsIGJ1dCBkbyBub3Qgd2FpdCBhdCBhbGwuCi0JICovCi0Jbm9jY3VycmVk ID0gV2FpdEV2ZW50U2V0V2FpdChub2RlLT5hcy5ldmVudHNldCwgdGltZW91dCwgb2NjdXJyZWRf ZXZlbnQsCi0JCQkJCQkJCSBuZXZlbnRzLCBXQUlUX0VWRU5UX0FQUEVORF9SRUFEWSk7Ci0JRnJl ZVdhaXRFdmVudFNldChub2RlLT5hcy5ldmVudHNldCk7Ci0Jbm9kZS0+YXMuZXZlbnRzZXQgPSBO VUxMOwotCWlmIChub2NjdXJyZWQgPT0gMCkKLQkJcmV0dXJuOwotCi0JLyogRGVsaXZlciBub3Rp ZmljYXRpb25zLiAqLwotCWZvciAoaSA9IDA7IGkgPCBub2NjdXJyZWQ7IGkrKykKLQl7Ci0JCVdh aXRFdmVudCAgKncgPSAmb2NjdXJyZWRfZXZlbnRbaV07Ci0KLQkJLyoKLQkJICogRWFjaCB3YWl0 aW5nIHN1YnBsYW4gc2hvdWxkIGhhdmUgcmVnaXN0ZXJlZCBpdHMgd2FpdCBldmVudCB3aXRoCi0J CSAqIHVzZXJfZGF0YSBwb2ludGluZyBiYWNrIHRvIGl0cyBBc3luY1JlcXVlc3QuCi0JCSAqLwot CQlpZiAoKHctPmV2ZW50cyAmIFdMX1NPQ0tFVF9SRUFEQUJMRSkgIT0gMCkKLQkJewotCQkJQXN5 bmNSZXF1ZXN0ICphcmVxID0gKEFzeW5jUmVxdWVzdCAqKSB3LT51c2VyX2RhdGE7Ci0KLQkJCWlm IChhcmVxLT5jYWxsYmFja19wZW5kaW5nKQotCQkJewotCQkJCS8qCi0JCQkJICogTWFyayBpdCBh cyBubyBsb25nZXIgbmVlZGluZyBhIGNhbGxiYWNrLiAgV2UgbXVzdCBkbyB0aGlzCi0JCQkJICog YmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBjYWxsYmFjayBpbiBjYXNlIHRoZSBjYWxsYmFjayByZXNl dHMKLQkJCQkgKiB0aGUgZmxhZy4KLQkJCQkgKi8KLQkJCQlhcmVxLT5jYWxsYmFja19wZW5kaW5n ID0gZmFsc2U7Ci0KLQkJCQkvKiBEbyB0aGUgYWN0dWFsIHdvcmsuICovCi0JCQkJRXhlY0FzeW5j Tm90aWZ5KGFyZXEpOwotCQkJfQotCQl9Ci0KLQkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVw dHMgKi8KLQkJaWYgKCh3LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpICE9IDApCi0JCXsKLQkJCVJl c2V0TGF0Y2goTXlMYXRjaCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9Ci0JfQor CUV4ZWNBcHBlbmRCYXNlQXN5bmNFdmVudFdhaXQoJm5vZGUtPmFzLCB0aW1lb3V0LCBXQUlUX0VW RU5UX0FQUEVORF9SRUFEWSk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMzksMTAgKzg2Niw3IEBA IEV4ZWNBc3luY0FwcGVuZFJlc3BvbnNlKEFzeW5jUmVxdWVzdCAqYXJlcSkKIHN0YXRpYyB2b2lk CiBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlCaXRt YXBzZXQgICp2YWxpZF9hc3luY3BsYW5zOwotCiAJQXNzZXJ0KG5vZGUtPmFzLnZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQpOwotCUFzc2VydChub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID09IE5V TEwpOwogCiAJLyogTm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gdmFsaWQgc3VicGxhbnMu ICovCiAJaWYgKGJtc19pc19lbXB0eShub2RlLT5hcy52YWxpZF9zdWJwbGFucykpCkBAIC0xMDUy LDIxICs4NzYsOSBAQCBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhBcHBlbmRTdGF0ZSAqbm9k ZSkKIAkJcmV0dXJuOwogCX0KIAotCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZh bGlkIGFzeW5jIHN1YnBsYW5zLiAqLwotCWlmICghYm1zX292ZXJsYXAobm9kZS0+YXMudmFsaWRf c3VicGxhbnMsIG5vZGUtPmFzLmFzeW5jcGxhbnMpKQotCXsKKwkvKiBObyB2YWxpZCBhc3luYyBz dWJwbGFucyBpZGVudGlmaWVkLiAqLworCWlmICghY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNf Y29tbW9uKCZub2RlLT5hcy52YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJCQkgICBub2RlLT5hcy5h c3luY3BsYW5zLAorCQkJCQkJCQkJCSAgICZub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zKSkKIAkJ bm9kZS0+YXNfbmFzeW5jcmVtYWluID0gMDsKLQkJcmV0dXJuOwotCX0KLQotCS8qIEdldCB2YWxp ZCBhc3luYyBzdWJwbGFucy4gKi8KLQl2YWxpZF9hc3luY3BsYW5zID0gYm1zX2ludGVyc2VjdChu b2RlLT5hcy5hc3luY3BsYW5zLAotCQkJCQkJCQkJIG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zKTsK LQotCS8qIEFkanVzdCB0aGUgdmFsaWQgc3VicGxhbnMgdG8gY29udGFpbiBzeW5jIHN1YnBsYW5z IG9ubHkuICovCi0Jbm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPSBibXNfZGVsX21lbWJlcnMobm9k ZS0+YXMudmFsaWRfc3VicGxhbnMsCi0JCQkJCQkJCQkJCSAgdmFsaWRfYXN5bmNwbGFucyk7Ci0K LQkvKiBTYXZlIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwotCW5vZGUtPmFzLnZhbGlkX2FzeW5j cGxhbnMgPSB2YWxpZF9hc3luY3BsYW5zOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwppbmRleCA2OTI4MTUyZjE2Zi4uNTkxYmUxMDE4ZDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0xNTIsOSArMTUyLDEyIEBAIEV4ZWNNZXJnZUFwcGVu ZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICogcnVuLXRpbWUgcHJ1bmluZyBpcyBkaXNhYmxlZCB0 aGVuIHRoZSB2YWxpZCBzdWJwbGFucyB3aWxsIGFsd2F5cyBiZQogCQkgKiBzZXQgdG8gYWxsIHN1 YnBsYW5zLgogCQkgKi8KLQkJaWYgKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID09IE5VTEwpCisJ CWlmICghbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwkJewogCQkJbm9kZS0+ YXMudmFsaWRfc3VicGxhbnMgPQogCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5h cy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOworCQkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNf aWRlbnRpZmllZCA9IHRydWU7CisJCX0KIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6 IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0FwcGVuZC5oCmluZGV4IGE4ZjQxYmFkOTIxLi43ZjUzYWQ4OTIxMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNBcHBlbmQuaApAQCAtMjIsNSArMjIsMTIgQEAgZXh0ZXJuIHZvaWQgRXhlY0lu aXRBcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJICAgaW50ICpmaXJz dF92YWxpZF9wYXJ0aWFsX3BsYW4pOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEFwcGVuZEJhc2UoQXBw ZW5kQmFzZVN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5BcHBlbmRCYXNlKEFw cGVuZEJhc2VTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQXBwZW5kQmFzZUFzeW5jQmVn aW4oQXBwZW5kQmFzZVN0YXRlICpub2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNBcHBlbmRCYXNlQXN5 bmNFdmVudFdhaXQoQXBwZW5kQmFzZVN0YXRlICpub2RlLAorCQkJCQkJCQkJCSBpbnQgdGltZW91 dCwKKwkJCQkJCQkJCQkgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4gYm9vbCBjbGFz c2lmeV9tYXRjaGluZ19zdWJwbGFuc19jb21tb24oQml0bWFwc2V0ICoqdmFsaWRfc3VicGxhbnMs CisJCQkJCQkJCQkJCSAgQml0bWFwc2V0ICphc3luY3BsYW5zLAorCQkJCQkJCQkJCQkgIEJpdG1h cHNldCAqKnZhbGlkX2FzeW5jcGxhbnMpOwogCiAjZW5kaWYJCQkJCQkJLyogRVhFQ0FQUEVORF9I ICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000ced44b064ead416c Content-Type: application/octet-stream; name="v17-0001-mark_async_capable-subpath-should-match-subplan.patch" Content-Disposition: attachment; filename="v17-0001-mark_async_capable-subpath-should-match-subplan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnl4h7l10 RnJvbSBjZTBlMDMyYTE0ZThmZjM3NzkxZGRiODYwMzNiZjc3ZjE4MzI0YWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDAzOjU4OjIzICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMS81XSBtYXJrX2FzeW5jX2NhcGFibGUoKTogc3VicGF0aCBzaG91bGQgbWF0Y2gg c3VicGxhbgoKbWFya19hc3luY19jYXBhYmxlKCkgYmVsaWV2ZXMgdGhhdCB0aGUgcGF0aCBjb3Jy ZXNwb25kcyB0byB0aGUgcGxhbi4gIFRoaXMgaXMKbm90IHRydWUgd2hlbiBjcmVhdGluZ19bbWVy Z2VfXWFwcGVuZF9wbGFuKCkgaW5zZXJ0cyAoSW5jcmVtZW50YWwpU29ydCBub2RlLgpJbiB0aGlz IGNhc2UsICBtYXJrX2FzeW5jX2NhcGFibGUoKSBjYW4gdHJlYXQgdGhlIFNvcnQgcGxhbiBub2Rl IGFzIHNvbWUgb3RoZXIKbm9kZSBhbmQgY3Jhc2guICBGaXggdGhpcyBieSBleHBsaWNpdGx5IGhh bmRsaW5nIHRoZSAoSW5jcmVtZW50YWwpU29ydCBub2RlcwphcyBub3QgYXN5bmMtY2FwYWJsZS4g IEFsc28sIG1vdmUgdGhpcyBjaGVjayBvbiB0b3Agb2YgdGhlIHN3aXRjaCgpIGFzIGl0CnJlcGVh dHMgaW4gYWxsIHRoZSBjYXNlcy4KClRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgdGhlIE1lcmdlQXBw ZW5kIG5vZGUgYXN5bmMtY2FwYWJsZSwgd2hpY2ggd2lsbCBiZQppbXBsZW1lbnRlZCBpbiB0aGUg c3Vic2VxdWVudCBjb21taXRzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81OWJl MTk0YzVhNDA5ZmI5ZmM5ZjIwMzE1ODFiOGE0NCU0MHBvc3RncmVzcHJvLnJ1CkF1dGhvcjogQWxl eGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IE1h dGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0Z3Jlc3Byby5ydT4KLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAzMSArKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggNTBiMGUxMDMwOGIuLjMy NjY2MTVhNzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0x MTMxLDE5ICsxMTMxLDIxIEBAIGNyZWF0ZV9qb2luX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEpv aW5QYXRoICpiZXN0X3BhdGgpCiBzdGF0aWMgYm9vbAogbWFya19hc3luY19jYXBhYmxlX3BsYW4o UGxhbiAqcGxhbiwgUGF0aCAqcGF0aCkKIHsKKwkvKgorCSAqIElmIHRoZSBnZW5lcmF0ZWQgcGxh biBub2RlIGluY2x1ZGVzIGEgZ2F0aW5nIFJlc3VsdCBub2RlLAorCSAqIGEgU29ydCBub2RlLCBv ciBhbiBJbmNyZW1lbnRhbFNvcnQgbm9kZSwgd2UgY2FuJ3QgZXhlY3V0ZQorCSAqIGl0IGFzeW5j aHJvbm91c2x5LgorCSAqLworCWlmIChJc0EocGxhbiwgUmVzdWx0KSB8fCBJc0EocGxhbiwgU29y dCkgfHwKKwkJSXNBKHBsYW4sIEluY3JlbWVudGFsU29ydCkpCisJCXJldHVybiBmYWxzZTsKKwog CXN3aXRjaCAobm9kZVRhZyhwYXRoKSkKIAl7CiAJCWNhc2UgVF9TdWJxdWVyeVNjYW5QYXRoOgog CQkJewogCQkJCVN1YnF1ZXJ5U2NhbiAqc2Nhbl9wbGFuID0gKFN1YnF1ZXJ5U2NhbiAqKSBwbGFu OwogCi0JCQkJLyoKLQkJCQkgKiBJZiB0aGUgZ2VuZXJhdGVkIHBsYW4gbm9kZSBpbmNsdWRlcyBh IGdhdGluZyBSZXN1bHQgbm9kZSwKLQkJCQkgKiB3ZSBjYW4ndCBleGVjdXRlIGl0IGFzeW5jaHJv bm91c2x5LgotCQkJCSAqLwotCQkJCWlmIChJc0EocGxhbiwgUmVzdWx0KSkKLQkJCQkJcmV0dXJu IGZhbHNlOwotCiAJCQkJLyoKIAkJCQkgKiBJZiBhIFN1YnF1ZXJ5U2NhbiBub2RlIGF0b3Agb2Yg YW4gYXN5bmMtY2FwYWJsZSBwbGFuIG5vZGUKIAkJCQkgKiBpcyBkZWxldGFibGUsIGNvbnNpZGVy IGl0IGFzIGFzeW5jLWNhcGFibGUuCkBAIC0xMTU4LDEzICsxMTYwLDYgQEAgbWFya19hc3luY19j YXBhYmxlX3BsYW4oUGxhbiAqcGxhbiwgUGF0aCAqcGF0aCkKIAkJCXsKIAkJCQlGZHdSb3V0aW5l ICpmZHdyb3V0aW5lID0gcGF0aC0+cGFyZW50LT5mZHdyb3V0aW5lOwogCi0JCQkJLyoKLQkJCQkg KiBJZiB0aGUgZ2VuZXJhdGVkIHBsYW4gbm9kZSBpbmNsdWRlcyBhIGdhdGluZyBSZXN1bHQgbm9k ZSwKLQkJCQkgKiB3ZSBjYW4ndCBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5LgotCQkJCSAqLwot CQkJCWlmIChJc0EocGxhbiwgUmVzdWx0KSkKLQkJCQkJcmV0dXJuIGZhbHNlOwotCiAJCQkJQXNz ZXJ0KGZkd3JvdXRpbmUgIT0gTlVMTCk7CiAJCQkJaWYgKGZkd3JvdXRpbmUtPklzRm9yZWlnblBh dGhBc3luY0NhcGFibGUgIT0gTlVMTCAmJgogCQkJCQlmZHdyb3V0aW5lLT5Jc0ZvcmVpZ25QYXRo QXN5bmNDYXBhYmxlKChGb3JlaWduUGF0aCAqKSBwYXRoKSkKQEAgLTExNzIsMTQgKzExNjcsNiBA QCBtYXJrX2FzeW5jX2NhcGFibGVfcGxhbihQbGFuICpwbGFuLCBQYXRoICpwYXRoKQogCQkJCXJl dHVybiBmYWxzZTsKIAkJCX0KIAkJY2FzZSBUX1Byb2plY3Rpb25QYXRoOgotCi0JCQkvKgotCQkJ ICogSWYgdGhlIGdlbmVyYXRlZCBwbGFuIG5vZGUgaW5jbHVkZXMgYSBSZXN1bHQgbm9kZSBmb3Ig dGhlCi0JCQkgKiBwcm9qZWN0aW9uLCB3ZSBjYW4ndCBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5 LgotCQkJICovCi0JCQlpZiAoSXNBKHBsYW4sIFJlc3VsdCkpCi0JCQkJcmV0dXJuIGZhbHNlOwot CiAJCQkvKgogCQkJICogY3JlYXRlX3Byb2plY3Rpb25fcGxhbigpIHdvdWxkIGhhdmUgcHVsbGVk IHVwIHRoZSBzdWJwbGFuLCBzbwogCQkJICogY2hlY2sgdGhlIGNhcGFiaWxpdHkgdXNpbmcgdGhl IHN1YnBhdGguCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000ced44b064ead416c Content-Type: application/octet-stream; name="v17-0002-Introduce-AppendBase-AppendBaseState-base-types-.patch" Content-Disposition: attachment; filename="v17-0002-Introduce-AppendBase-AppendBaseState-base-types-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnl4h7l71 RnJvbSBlMzRlNWFiYjlhYjhhMzg4OWQ4N2E0YmJlMzIyNWI3OTU0YjgwMmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjAwOjE1ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTcgMi81XSBJbnRyb2R1Y2UgQXBwZW5kQmFzZS9BcHBlbmRCYXNlU3RhdGUgYmFzZSB0 eXBlcyBmb3IKIEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQKCkludHJvZHVjZSBjb21tb24gYmFzZSB0 eXBlcyBBcHBlbmRCYXNlIChwbGFuIG5vZGUpIGFuZCBBcHBlbmRCYXNlU3RhdGUKKGV4ZWN1dG9y IHN0YXRlKSB0byB1bmlmeSB0aGUgZmllbGRzIHNoYXJlZCBiZXR3ZWVuIEFwcGVuZC9NZXJnZUFw cGVuZCBhbmQKQXBwZW5kU3RhdGUvTWVyZ2VBcHBlbmRTdGF0ZS4KCkFwcGVuZEJhc2UgaG9sZHMg dGhlIHN1YnBsYW4gbGlzdCwgYXBwZW5kcmVsIGlkZW50aWZpZXJzLCBhbmQgcGFydGl0aW9uCnBy dW5pbmcgaW5kZXguICBBcHBlbmRCYXNlU3RhdGUgaG9sZHMgdGhlIHN1YnBsYW4gc3RhdGUgYXJy YXksIGFzeW5jaHJvbm91cwpleGVjdXRpb24gaW5mcmFzdHJ1Y3R1cmUsIGFuZCBwYXJ0aXRpb24g cHJ1bmluZyBzdGF0ZS4KCkFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm93IGVtYmVkIEFwcGVuZEJh c2UgYXMgdGhlaXIgZmlyc3QgZmllbGQgKGFiKSwKd2hpbGUgQXBwZW5kU3RhdGUgYW5kIE1lcmdl QXBwZW5kU3RhdGUgYm90aCBlbWJlZCBBcHBlbmRCYXNlU3RhdGUgYXMKdGhlaXIgZmlyc3QgZmll bGQgKGFzKS4gIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBDIHN0cnVjdCBpbmhlcml0YW5jZQpwYXR0 ZXJuIHVzZWQgYnkgU2Nhbi9TY2FuU3RhdGUgYW5kIEpvaW4vSm9pblN0YXRlIHRocm91Z2hvdXQg dGhlCmNvZGViYXNlLiAgVGhlIG5hbWUgIkFwcGVuZEJhc2UiIHdhcyBjaG9zZW4gYmVjYXVzZSBq dXN0ICJBcHBlbmQiIGlzIGFscmVhZHkKdGFrZW4uCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tLzU5YmUxOTRjNWE0MDlmYjlmYzlmMjAzMTU4MWI4YTQ0JTQwcG9zdGdyZXNwcm8ucnUK QXV0aG9yOiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21haWwuY29tPgpDby1h dXRob3JlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IEFsZXhhbmRlciBQeWhhbG92IDxhLnB5aGFsb3ZAcG9zdGdyZXNwcm8ucnU+ClJl dmlld2VkLWJ5OiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0Z3Jlc3Byby5ydT4KLS0t CiBjb250cmliL3BnX292ZXJleHBsYWluL3BnX292ZXJleHBsYWluLmMgfCAgIDggKy0KIGNvbnRy aWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMgICAgICB8ICAgNCArLQogY29udHJpYi9wZ19w bGFuX2FkdmljZS9wZ3BhX3dhbGtlci5jICAgIHwgICA4ICstCiBjb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYyAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgICAgICB8ICAyNiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBbWkuYyAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0N1cnJlbnQuYyAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICB8IDI4NCArKysrKysr KysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j ICB8ICA4MiArKystLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICA0NiAr Ky0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgNDggKystLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMgIHwgICA0ICstCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICB8ICA2MyArKysrLS0KIHNyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICA2NiArKystLS0KIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICB8ICAgMiArCiAxOCBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0 aW9ucygrKSwgMzMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfb3ZlcmV4 cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYyBiL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4 cGxhaW4uYwppbmRleCBiNGU5MDkwOTI4OS4uMjY3ZjAxOTI3YTIgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYworKysgYi9jb250cmliL3BnX292ZXJl eHBsYWluL3BnX292ZXJleHBsYWluLmMKQEAgLTIzMiwxOCArMjMyLDE4IEBAIG92ZXJleHBsYWlu X3Blcl9ub2RlX2hvb2soUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJ CQlicmVhazsKIAkJCWNhc2UgVF9BcHBlbmQ6CiAJCQkJb3ZlcmV4cGxhaW5fYml0bWFwc2V0KCJB cHBlbmQgUlRJcyIsCi0JCQkJCQkJCQkgICgoQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHMsCisJ CQkJCQkJCQkgICgoQXBwZW5kICopIHBsYW4pLT5hYi5hcHByZWxpZHMsCiAJCQkJCQkJCQkgIGVz KTsKIAkJCQlvdmVyZXhwbGFpbl9iaXRtYXBzZXRfbGlzdCgiQ2hpbGQgQXBwZW5kIFJUSXMiLAot CQkJCQkJCQkJCSAgICgoQXBwZW5kICopIHBsYW4pLT5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0cywK KwkJCQkJCQkJCQkgICAoKEFwcGVuZCAqKSBwbGFuKS0+YWIuY2hpbGRfYXBwZW5kX3JlbGlkX3Nl dHMsCiAJCQkJCQkJCQkJICAgZXMpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBUX01lcmdlQXBwZW5k OgogCQkJCW92ZXJleHBsYWluX2JpdG1hcHNldCgiQXBwZW5kIFJUSXMiLAotCQkJCQkJCQkJICAo KE1lcmdlQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHMsCisJCQkJCQkJCQkgICgoTWVyZ2VBcHBl bmQgKikgcGxhbiktPmFiLmFwcHJlbGlkcywKIAkJCQkJCQkJCSAgZXMpOwogCQkJCW92ZXJleHBs YWluX2JpdG1hcHNldF9saXN0KCJDaGlsZCBBcHBlbmQgUlRJcyIsCi0JCQkJCQkJCQkJICAgKChN ZXJnZUFwcGVuZCAqKSBwbGFuKS0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHMsCisJCQkJCQkJCQkJ ICAgKChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+YWIuY2hpbGRfYXBwZW5kX3JlbGlkX3NldHMsCiAJ CQkJCQkJCQkJICAgZXMpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBUX1Jlc3VsdDoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMgYi9jb250cmliL3BnX3BsYW5f YWR2aWNlL3BncGFfc2Nhbi5jCmluZGV4IDA0NjdmOWIxMmJhLi43NjhhYjM1ZTZiMyAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3NjYW4uYworKysgYi9jb250cmliL3Bn X3BsYW5fYWR2aWNlL3BncGFfc2Nhbi5jCkBAIC0xNDksNyArMTQ5LDcgQEAgcGdwYV9idWlsZF9z Y2FuKHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyLCBQbGFuICpwbGFuLAogCiAJCQkJ LyogQmUgc3VyZSB0byBhY2NvdW50IGZvciBwdWxsZWQtdXAgc2NhbnMuICovCiAJCQkJY2hpbGRf YXBwZW5kX3JlbGlkX3NldHMgPQotCQkJCQkoKEFwcGVuZCAqKSBwbGFuKS0+Y2hpbGRfYXBwZW5k X3JlbGlkX3NldHM7CisJCQkJCSgoQXBwZW5kICopIHBsYW4pLT5hYi5jaGlsZF9hcHBlbmRfcmVs aWRfc2V0czsKIAkJCQlicmVhazsKIAkJCWNhc2UgVF9NZXJnZUFwcGVuZDoKIAkJCQkvKiBTYW1l IGxvZ2ljIGhlcmUgYXMgZm9yIEFwcGVuZCwgYWJvdmUuICovCkBAIC0xNjEsNyArMTYxLDcgQEAg cGdwYV9idWlsZF9zY2FuKHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyLCBQbGFuICpw bGFuLAogCiAJCQkJLyogQmUgc3VyZSB0byBhY2NvdW50IGZvciBwdWxsZWQtdXAgc2NhbnMuICov CiAJCQkJY2hpbGRfYXBwZW5kX3JlbGlkX3NldHMgPQotCQkJCQkoKE1lcmdlQXBwZW5kICopIHBs YW4pLT5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0czsKKwkJCQkJKChNZXJnZUFwcGVuZCAqKSBwbGFu KS0+YWIuY2hpbGRfYXBwZW5kX3JlbGlkX3NldHM7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogog CQkJCXN0cmF0ZWd5ID0gUEdQQV9TQ0FOX09SRElOQVJZOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ3BhX3dhbGtlci5jIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3Bh X3dhbGtlci5jCmluZGV4IGUzMjY4NGQyMDc1Li5mMmEzNGExY2Y3NiAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3dhbGtlci5jCisrKyBiL2NvbnRyaWIvcGdfcGxhbl9h ZHZpY2UvcGdwYV93YWxrZXIuYwpAQCAtNDQwLDE0ICs0NDAsMTQgQEAgcGdwYV93YWxrX3JlY3Vy c2l2ZWx5KHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyLCBQbGFuICpwbGFuLAogCQkJ ewogCQkJCUFwcGVuZAkgICAqYXBsYW4gPSAoQXBwZW5kICopIHBsYW47CiAKLQkJCQlleHRyYXBs YW5zID0gYXBsYW4tPmFwcGVuZHBsYW5zOworCQkJCWV4dHJhcGxhbnMgPSBhcGxhbi0+YWIuc3Vi cGxhbnM7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBUX01lcmdlQXBwZW5kOgogCQkJewogCQkJ CU1lcmdlQXBwZW5kICptYXBsYW4gPSAoTWVyZ2VBcHBlbmQgKikgcGxhbjsKIAotCQkJCWV4dHJh cGxhbnMgPSBtYXBsYW4tPm1lcmdlcGxhbnM7CisJCQkJZXh0cmFwbGFucyA9IG1hcGxhbi0+YWIu c3VicGxhbnM7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1hcEFuZDoKQEAgLTU3MCw5 ICs1NzAsOSBAQCBwZ3BhX3JlbGlkcyhQbGFuICpwbGFuKQogCWVsc2UgaWYgKElzQShwbGFuLCBG b3JlaWduU2NhbikpCiAJCXJldHVybiAoKEZvcmVpZ25TY2FuICopIHBsYW4pLT5mc19yZWxpZHM7 CiAJZWxzZSBpZiAoSXNBKHBsYW4sIEFwcGVuZCkpCi0JCXJldHVybiAoKEFwcGVuZCAqKSBwbGFu KS0+YXBwcmVsaWRzOworCQlyZXR1cm4gKChBcHBlbmQgKikgcGxhbiktPmFiLmFwcHJlbGlkczsK IAllbHNlIGlmIChJc0EocGxhbiwgTWVyZ2VBcHBlbmQpKQotCQlyZXR1cm4gKChNZXJnZUFwcGVu ZCAqKSBwbGFuKS0+YXBwcmVsaWRzOworCQlyZXR1cm4gKChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+ YWIuYXBwcmVsaWRzOwogCiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jCmluZGV4IDQxZTQ3Y2M3OTViLi5lZmM3MGE0OWE4NiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKQEAgLTI0MTMsOCArMjQxMyw4IEBAIGZpbmRfbW9kaWZ5dGFibGVfc3Vi cGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAl7CiAJCUFwcGVuZAkgICAqYXBwZW5kcGxhbiA9IChB cHBlbmQgKikgc3VicGxhbjsKIAotCQlpZiAoc3VicGxhbl9pbmRleCA8IGxpc3RfbGVuZ3RoKGFw cGVuZHBsYW4tPmFwcGVuZHBsYW5zKSkKLQkJCXN1YnBsYW4gPSAoUGxhbiAqKSBsaXN0X250aChh cHBlbmRwbGFuLT5hcHBlbmRwbGFucywgc3VicGxhbl9pbmRleCk7CisJCWlmIChzdWJwbGFuX2lu ZGV4IDwgbGlzdF9sZW5ndGgoYXBwZW5kcGxhbi0+YWIuc3VicGxhbnMpKQorCQkJc3VicGxhbiA9 IChQbGFuICopIGxpc3RfbnRoKGFwcGVuZHBsYW4tPmFiLnN1YnBsYW5zLCBzdWJwbGFuX2luZGV4 KTsKIAl9CiAJZWxzZSBpZiAoSXNBKHN1YnBsYW4sIFJlc3VsdCkgJiYKIAkJCSBvdXRlclBsYW4o c3VicGxhbikgIT0gTlVMTCAmJgpAQCAtMjQyMiw4ICsyNDIyLDggQEAgZmluZF9tb2RpZnl0YWJs ZV9zdWJwbGFuKFBsYW5uZXJJbmZvICpyb290LAogCXsKIAkJQXBwZW5kCSAgICphcHBlbmRwbGFu ID0gKEFwcGVuZCAqKSBvdXRlclBsYW4oc3VicGxhbik7CiAKLQkJaWYgKHN1YnBsYW5faW5kZXgg PCBsaXN0X2xlbmd0aChhcHBlbmRwbGFuLT5hcHBlbmRwbGFucykpCi0JCQlzdWJwbGFuID0gKFBs YW4gKikgbGlzdF9udGgoYXBwZW5kcGxhbi0+YXBwZW5kcGxhbnMsIHN1YnBsYW5faW5kZXgpOwor CQlpZiAoc3VicGxhbl9pbmRleCA8IGxpc3RfbGVuZ3RoKGFwcGVuZHBsYW4tPmFiLnN1YnBsYW5z KSkKKwkJCXN1YnBsYW4gPSAoUGxhbiAqKSBsaXN0X250aChhcHBlbmRwbGFuLT5hYi5zdWJwbGFu cywgc3VicGxhbl9pbmRleCk7CiAJfQogCiAJLyogTm93LCBoYXZlIHdlIGdvdCBhIEZvcmVpZ25T Y2FuIG9uIHRoZSBkZXNpcmVkIHJlbD8gKi8KQEAgLTcyMTUsNyArNzIxNSw3IEBAIHBvc3RncmVz Rm9yZWlnbkFzeW5jQ29uZmlndXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiAJUGdGZHdTY2Fu U3RhdGUgKmZzc3RhdGUgPSAoUGdGZHdTY2FuU3RhdGUgKikgbm9kZS0+ZmR3X3N0YXRlOwogCUFz eW5jUmVxdWVzdCAqcGVuZGluZ0FyZXEgPSBmc3N0YXRlLT5jb25uX3N0YXRlLT5wZW5kaW5nQXJl cTsKIAlBcHBlbmRTdGF0ZSAqcmVxdWVzdG9yID0gKEFwcGVuZFN0YXRlICopIGFyZXEtPnJlcXVl c3RvcjsKLQlXYWl0RXZlbnRTZXQgKnNldCA9IHJlcXVlc3Rvci0+YXNfZXZlbnRzZXQ7CisJV2Fp dEV2ZW50U2V0ICpzZXQgPSByZXF1ZXN0b3ItPmFzLmV2ZW50c2V0OwogCiAJLyogVGhpcyBzaG91 bGQgbm90IGJlIGNhbGxlZCB1bmxlc3MgY2FsbGJhY2tfcGVuZGluZyAqLwogCUFzc2VydChhcmVx LT5jYWxsYmFja19wZW5kaW5nKTsKQEAgLTcyNTcsNyArNzI1Nyw3IEBAIHBvc3RncmVzRm9yZWln bkFzeW5jQ29uZmlndXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiAJCSAqIGJlbG93LCBiZWNh dXNlIHdlIG1pZ2h0IG90aGVyd2lzZSBlbmQgdXAgd2l0aCBubyBjb25maWd1cmVkIGV2ZW50cwog CQkgKiBvdGhlciB0aGFuIHRoZSBwb3N0bWFzdGVyIGRlYXRoIGV2ZW50LgogCQkgKi8KLQkJaWYg KCFibXNfaXNfZW1wdHkocmVxdWVzdG9yLT5hc19uZWVkcmVxdWVzdCkpCisJCWlmICghYm1zX2lz X2VtcHR5KHJlcXVlc3Rvci0+YXMubmVlZHJlcXVlc3QpKQogCQkJcmV0dXJuOwogCQlpZiAoR2V0 TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoc2V0KSA+IDEpCiAJCQlyZXR1cm47CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMKaW5kZXggZTRiNzAxNjZiMGUuLjcwYTM1ZDNjZTM0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCkBAIC0xMjI4LDExICsxMjI4LDExIEBAIEV4cGxhaW5QcmVTY2FuTm9kZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgQml0bWFwc2V0ICoqcmVsc191c2VkKQogCQkJYnJlYWs7CiAJCWNhc2Ug VF9BcHBlbmQ6CiAJCQkqcmVsc191c2VkID0gYm1zX2FkZF9tZW1iZXJzKCpyZWxzX3VzZWQsCi0J CQkJCQkJCQkJICgoQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHMpOworCQkJCQkJCQkJCSAoKEFw cGVuZCAqKSBwbGFuKS0+YWIuYXBwcmVsaWRzKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfTWVyZ2VB cHBlbmQ6CiAJCQkqcmVsc191c2VkID0gYm1zX2FkZF9tZW1iZXJzKCpyZWxzX3VzZWQsCi0JCQkJ CQkJCQkJICgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPmFwcHJlbGlkcyk7CisJCQkJCQkJCQkJICgo TWVyZ2VBcHBlbmQgKikgcGxhbiktPmFiLmFwcHJlbGlkcyk7CiAJCQlicmVhazsKIAkJY2FzZSBU X1Jlc3VsdDoKIAkJCSpyZWxzX3VzZWQgPSBibXNfYWRkX21lbWJlcnMoKnJlbHNfdXNlZCwKQEAg LTEyNzYsNyArMTI3Niw3IEBAIHBsYW5faXNfZGlzYWJsZWQoUGxhbiAqcGxhbikKIAkJICogaW5j bHVkZXMgYW55IHJ1bi10aW1lIHBydW5lZCBjaGlsZHJlbi4gIElnbm9yaW5nIHRob3NlIGNvdWxk IGdpdmUKIAkJICogdXMgdGhlIGluY29ycmVjdCBudW1iZXIgb2YgZGlzYWJsZWQgbm9kZXMuCiAJ CSAqLwotCQlmb3JlYWNoKGxjLCBhcGxhbi0+YXBwZW5kcGxhbnMpCisJCWZvcmVhY2gobGMsIGFw bGFuLT5hYi5zdWJwbGFucykKIAkJewogCQkJUGxhbgkgICAqc3VicGxhbiA9IGxmaXJzdChsYyk7 CiAKQEAgLTEyOTMsNyArMTI5Myw3IEBAIHBsYW5faXNfZGlzYWJsZWQoUGxhbiAqcGxhbikKIAkJ ICogaW5jbHVkZXMgYW55IHJ1bi10aW1lIHBydW5lZCBjaGlsZHJlbi4gIElnbm9yaW5nIHRob3Nl IGNvdWxkIGdpdmUKIAkJICogdXMgdGhlIGluY29ycmVjdCBudW1iZXIgb2YgZGlzYWJsZWQgbm9k ZXMuCiAJCSAqLwotCQlmb3JlYWNoKGxjLCBtYXBsYW4tPm1lcmdlcGxhbnMpCisJCWZvcmVhY2go bGMsIG1hcGxhbi0+YWIuc3VicGxhbnMpCiAJCXsKIAkJCVBsYW4JICAgKnN1YnBsYW4gPSBsZmly c3QobGMpOwogCkBAIC0yMzQwLDEzICsyMzQwLDEzIEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJc3dpdGNoIChub2RlVGFnKHBsYW4pKQogCXsK IAkJY2FzZSBUX0FwcGVuZDoKLQkJCUV4cGxhaW5NaXNzaW5nTWVtYmVycygoKEFwcGVuZFN0YXRl ICopIHBsYW5zdGF0ZSktPmFzX25wbGFucywKLQkJCQkJCQkJICBsaXN0X2xlbmd0aCgoKEFwcGVu ZCAqKSBwbGFuKS0+YXBwZW5kcGxhbnMpLAorCQkJRXhwbGFpbk1pc3NpbmdNZW1iZXJzKCgoQXBw ZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMubnBsYW5zLAorCQkJCQkJCQkgIGxpc3RfbGVuZ3Ro KCgoQXBwZW5kICopIHBsYW4pLT5hYi5zdWJwbGFucyksCiAJCQkJCQkJCSAgZXMpOwogCQkJYnJl YWs7CiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoKLQkJCUV4cGxhaW5NaXNzaW5nTWVtYmVycygoKE1l cmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+bXNfbnBsYW5zLAotCQkJCQkJCQkgIGxpc3Rf bGVuZ3RoKCgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPm1lcmdlcGxhbnMpLAorCQkJRXhwbGFpbk1p c3NpbmdNZW1iZXJzKCgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5hcy5ucGxhbnMs CisJCQkJCQkJCSAgbGlzdF9sZW5ndGgoKChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+YWIuc3VicGxh bnMpLAogCQkJCQkJCQkgIGVzKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMjM5MCwxMyAr MjM5MCwxMyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0 b3JzLAogCXN3aXRjaCAobm9kZVRhZyhwbGFuKSkKIAl7CiAJCWNhc2UgVF9BcHBlbmQ6Ci0JCQlF eHBsYWluTWVtYmVyTm9kZXMoKChBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5hcHBlbmRwbGFu cywKLQkJCQkJCQkgICAoKEFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPmFzX25wbGFucywKKwkJ CUV4cGxhaW5NZW1iZXJOb2RlcygoKEFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPmFzLnBsYW5z LAorCQkJCQkJCSAgICgoQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMubnBsYW5zLAogCQkJ CQkJCSAgIGFuY2VzdG9ycywgZXMpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoK LQkJCUV4cGxhaW5NZW1iZXJOb2RlcygoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+ bWVyZ2VwbGFucywKLQkJCQkJCQkgICAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+ bXNfbnBsYW5zLAorCQkJRXhwbGFpbk1lbWJlck5vZGVzKCgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBw bGFuc3RhdGUpLT5hcy5wbGFucywKKwkJCQkJCQkgICAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxh bnN0YXRlKS0+YXMubnBsYW5zLAogCQkJCQkJCSAgIGFuY2VzdG9ycywgZXMpOwogCQkJYnJlYWs7 CiAJCWNhc2UgVF9CaXRtYXBBbmQ6CkBAIC0yNjEwLDcgKzI2MTAsNyBAQCBzdGF0aWMgdm9pZAog c2hvd19tZXJnZV9hcHBlbmRfa2V5cyhNZXJnZUFwcGVuZFN0YXRlICptc3RhdGUsIExpc3QgKmFu Y2VzdG9ycywKIAkJCQkJICAgRXhwbGFpblN0YXRlICplcykKIHsKLQlNZXJnZUFwcGVuZCAqcGxh biA9IChNZXJnZUFwcGVuZCAqKSBtc3RhdGUtPnBzLnBsYW47CisJTWVyZ2VBcHBlbmQgKnBsYW4g PSAoTWVyZ2VBcHBlbmQgKikgbXN0YXRlLT5hcy5wcy5wbGFuOwogCiAJc2hvd19zb3J0X2dyb3Vw X2tleXMoKFBsYW5TdGF0ZSAqKSBtc3RhdGUsICJTb3J0IEtleSIsCiAJCQkJCQkgcGxhbi0+bnVt Q29scywgMCwgcGxhbi0+c29ydENvbElkeCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNBbWkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBbWkuYwppbmRleCAzN2Zl MDNmZGMzNy4uMmQ4ZTYyMTIwOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNBbWkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMKQEAgLTUzOCw3ICs1 MzgsNyBAQCBFeGVjU3VwcG9ydHNCYWNrd2FyZFNjYW4oUGxhbiAqbm9kZSkKIAkJCQlpZiAoKChB cHBlbmQgKikgbm9kZSktPm5hc3luY3BsYW5zID4gMCkKIAkJCQkJcmV0dXJuIGZhbHNlOwogCi0J CQkJZm9yZWFjaChsLCAoKEFwcGVuZCAqKSBub2RlKS0+YXBwZW5kcGxhbnMpCisJCQkJZm9yZWFj aChsLCAoKEFwcGVuZCAqKSBub2RlKS0+YWIuc3VicGxhbnMpCiAJCQkJewogCQkJCQlpZiAoIUV4 ZWNTdXBwb3J0c0JhY2t3YXJkU2NhbigoUGxhbiAqKSBsZmlyc3QobCkpKQogCQkJCQkJcmV0dXJu IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0N1cnJlbnQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNDdXJyZW50LmMKaW5kZXggOTlmMmIyZDBjNmYuLjM3 ZjVjN2ZkMmM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQ3VycmVudC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNDdXJyZW50LmMKQEAgLTM3NSw5ICszNzUs OSBAQCBzZWFyY2hfcGxhbl90cmVlKFBsYW5TdGF0ZSAqbm9kZSwgT2lkIHRhYmxlX29pZCwKIAkJ CQlBcHBlbmRTdGF0ZSAqYXN0YXRlID0gKEFwcGVuZFN0YXRlICopIG5vZGU7CiAJCQkJaW50CQkJ aTsKIAotCQkJCWZvciAoaSA9IDA7IGkgPCBhc3RhdGUtPmFzX25wbGFuczsgaSsrKQorCQkJCWZv ciAoaSA9IDA7IGkgPCBhc3RhdGUtPmFzLm5wbGFuczsgaSsrKQogCQkJCXsKLQkJCQkJU2NhblN0 YXRlICAqZWxlbSA9IHNlYXJjaF9wbGFuX3RyZWUoYXN0YXRlLT5hcHBlbmRwbGFuc1tpXSwKKwkJ CQkJU2NhblN0YXRlICAqZWxlbSA9IHNlYXJjaF9wbGFuX3RyZWUoYXN0YXRlLT5hcy5wbGFuc1tp XSwKIAkJCQkJCQkJCQkJCQkJdGFibGVfb2lkLAogCQkJCQkJCQkJCQkJCQlwZW5kaW5nX3Jlc2Nh bik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZDM1OTc2OTI1YWUuLjk5 ZThlOGI2ZjhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtOTExLDggKzkx MSw4IEBAIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAq Y2hpbGRfbm9kZSkKIAkJQXBwZW5kU3RhdGUgKmFTdGF0ZSA9IChBcHBlbmRTdGF0ZSAqKSBjaGls ZF9ub2RlOwogCQlpbnQJCQlpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBhU3RhdGUtPmFzX25wbGFu czsgaSsrKQotCQkJRXhlY1NldFR1cGxlQm91bmQodHVwbGVzX25lZWRlZCwgYVN0YXRlLT5hcHBl bmRwbGFuc1tpXSk7CisJCWZvciAoaSA9IDA7IGkgPCBhU3RhdGUtPmFzLm5wbGFuczsgaSsrKQor CQkJRXhlY1NldFR1cGxlQm91bmQodHVwbGVzX25lZWRlZCwgYVN0YXRlLT5hcy5wbGFuc1tpXSk7 CiAJfQogCWVsc2UgaWYgKElzQShjaGlsZF9ub2RlLCBNZXJnZUFwcGVuZFN0YXRlKSkKIAl7CkBA IC05MjQsOCArOTI0LDggQEAgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwg UGxhblN0YXRlICpjaGlsZF9ub2RlKQogCQlNZXJnZUFwcGVuZFN0YXRlICptYVN0YXRlID0gKE1l cmdlQXBwZW5kU3RhdGUgKikgY2hpbGRfbm9kZTsKIAkJaW50CQkJaTsKIAotCQlmb3IgKGkgPSAw OyBpIDwgbWFTdGF0ZS0+bXNfbnBsYW5zOyBpKyspCi0JCQlFeGVjU2V0VHVwbGVCb3VuZCh0dXBs ZXNfbmVlZGVkLCBtYVN0YXRlLT5tZXJnZXBsYW5zW2ldKTsKKwkJZm9yIChpID0gMDsgaSA8IG1h U3RhdGUtPmFzLm5wbGFuczsgaSsrKQorCQkJRXhlY1NldFR1cGxlQm91bmQodHVwbGVzX25lZWRl ZCwgbWFTdGF0ZS0+YXMucGxhbnNbaV0pOwogCX0KIAllbHNlIGlmIChJc0EoY2hpbGRfbm9kZSwg UmVzdWx0U3RhdGUpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA4NWM4NTU2 OWI1ZS4uMjcyYmY1MmZjMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEyNyw5 ICsxMjcsOSBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCS8qCiAJICogY3JlYXRlIG5ldyBBcHBlbmRTdGF0ZSBmb3Igb3VyIGFwcGVu ZCBub2RlCiAJICovCi0JYXBwZW5kc3RhdGUtPnBzLnBsYW4gPSAoUGxhbiAqKSBub2RlOwotCWFw cGVuZHN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKLQlhcHBlbmRzdGF0ZS0+cHMuRXhlY1Byb2NO b2RlID0gRXhlY0FwcGVuZDsKKwlhcHBlbmRzdGF0ZS0+YXMucHMucGxhbiA9IChQbGFuICopIG5v ZGU7CisJYXBwZW5kc3RhdGUtPmFzLnBzLnN0YXRlID0gZXN0YXRlOworCWFwcGVuZHN0YXRlLT5h cy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjQXBwZW5kOwogCiAJLyogTGV0IGNob29zZV9uZXh0X3N1 YnBsYW5fKiBmdW5jdGlvbiBoYW5kbGUgc2V0dGluZyB0aGUgZmlyc3Qgc3VicGxhbiAqLwogCWFw cGVuZHN0YXRlLT5hc193aGljaHBsYW4gPSBJTlZBTElEX1NVQlBMQU5fSU5ERVg7CkBAIC0xMzcs NyArMTM3LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1 bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93 ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwlpZiAobm9kZS0+YWIucGFy dF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZTsKIApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAo dmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKIAkJICogcmVzdWx0IG9m IHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KIAkJICovCi0JCXBydW5lc3RhdGUg PSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCZhcHBlbmRzdGF0ZS0+cHMsCi0JCQkJCQkJ CQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwKLQkJCQkJCQkJCQkJCSAgbm9k ZS0+cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAorCQlw cnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmYXBwZW5kc3RhdGUtPmFz LnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJwbGFucyksCisJCQkJ CQkJCQkJCQkgIG5vZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCQkgIG5vZGUt PmFiLmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwotCQlhcHBlbmRz dGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOworCQlhcHBlbmRzdGF0ZS0+YXMucHJ1 bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRz dWJwbGFucyk7CiAKIAkJLyoKQEAgLTE2MSwyMyArMTYxLDIzIEBAIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqLwogCQlpZiAoIXBy dW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKIAkJewotCQkJYXBwZW5kc3Rh dGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAx KTsKLQkJCWFwcGVuZHN0YXRlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsK KwkJCWFwcGVuZHN0YXRlLT5hcy52YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwg MCwgbnBsYW5zIC0gMSk7CisJCQlhcHBlbmRzdGF0ZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRp ZmllZCA9IHRydWU7CiAJCX0KIAl9CiAJZWxzZQogCXsKLQkJbnBsYW5zID0gbGlzdF9sZW5ndGgo bm9kZS0+YXBwZW5kcGxhbnMpOworCQlucGxhbnMgPSBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJw bGFucyk7CiAKIAkJLyoKIAkJICogV2hlbiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBu b3QgZW5hYmxlZCB3ZSBjYW4ganVzdCBtYXJrIGFsbAogCQkgKiBzdWJwbGFucyBhcyB2YWxpZDsg dGhleSBtdXN0IGFsc28gYWxsIGJlIGluaXRpYWxpemVkLgogCQkgKi8KIAkJQXNzZXJ0KG5wbGFu cyA+IDApOwotCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxhbnMgPSB2YWxpZHN1YnBsYW5z ID0KKwkJYXBwZW5kc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gdmFsaWRzdWJwbGFucyA9CiAJ CQlibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwotCQlhcHBlbmRzdGF0ZS0+YXNf dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7Ci0JCWFwcGVuZHN0YXRlLT5hc19wcnVu ZV9zdGF0ZSA9IE5VTEw7CisJCWFwcGVuZHN0YXRlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlm aWVkID0gdHJ1ZTsKKwkJYXBwZW5kc3RhdGUtPmFzLnBydW5lX3N0YXRlID0gTlVMTDsKIAl9CiAK IAlhcHBlbmRwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5wbGFucyAqCkBAIC0x OTYsNyArMTk2LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAlpID0gLTE7CiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHZh bGlkc3VicGxhbnMsIGkpKSA+PSAwKQogCXsKLQkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAq KSBsaXN0X250aChub2RlLT5hcHBlbmRwbGFucywgaSk7CisJCVBsYW4JICAgKmluaXROb2RlID0g KFBsYW4gKikgbGlzdF9udGgobm9kZS0+YWIuc3VicGxhbnMsIGkpOwogCiAJCS8qCiAJCSAqIFJl Y29yZCBhc3luYyBzdWJwbGFucy4gIFdoZW4gZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJl YXQgdGhlbQpAQCAtMjE5LDggKzIxOSw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJfQogCiAJYXBwZW5kc3RhdGUtPmFzX2ZpcnN0 X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7Ci0JYXBwZW5kc3RhdGUtPmFwcGVuZHBsYW5zID0g YXBwZW5kcGxhbnN0YXRlczsKLQlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5zID0gbnBsYW5zOworCWFw cGVuZHN0YXRlLT5hcy5wbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7CisJYXBwZW5kc3RhdGUtPmFz Lm5wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBBcHBlbmQncyByZXN1bHQg dHVwbGUgdHlwZSBhbmQgc2xvdC4gIElmIHRoZSBjaGlsZCBwbGFucyBhbGwKQEAgLTIzNCwzMCAr MjM0LDMwIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJYXBwZW5kb3BzID0gRXhlY0dldENvbW1vblNsb3RPcHMoYXBwZW5kcGxhbnN0 YXRlcywgaik7CiAJaWYgKGFwcGVuZG9wcyAhPSBOVUxMKQogCXsKLQkJRXhlY0luaXRSZXN1bHRU dXBsZVNsb3RUTCgmYXBwZW5kc3RhdGUtPnBzLCBhcHBlbmRvcHMpOworCQlFeGVjSW5pdFJlc3Vs dFR1cGxlU2xvdFRMKCZhcHBlbmRzdGF0ZS0+YXMucHMsIGFwcGVuZG9wcyk7CiAJfQogCWVsc2UK IAl7Ci0JCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJmFwcGVuZHN0YXRlLT5wcywgJlRUU09w c1ZpcnR1YWwpOworCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZhcHBlbmRzdGF0ZS0+YXMu cHMsICZUVFNPcHNWaXJ0dWFsKTsKIAkJLyogc2hvdyB0aGF0IHRoZSBvdXRwdXQgc2xvdCB0eXBl IGlzIG5vdCBmaXhlZCAqLwotCQlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsK LQkJYXBwZW5kc3RhdGUtPnBzLnJlc3VsdG9wc2ZpeGVkID0gZmFsc2U7CisJCWFwcGVuZHN0YXRl LT5hcy5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOworCQlhcHBlbmRzdGF0ZS0+YXMucHMucmVzdWx0 b3BzZml4ZWQgPSBmYWxzZTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCi0J YXBwZW5kc3RhdGUtPmFzX2FzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwotCWFwcGVuZHN0YXRlLT5h c19uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwotCWFwcGVuZHN0YXRlLT5hc19hc3luY3JlcXVl c3RzID0gTlVMTDsKLQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXN1bHRzID0gTlVMTDsKKwlhcHBl bmRzdGF0ZS0+YXMuYXN5bmNwbGFucyA9IGFzeW5jcGxhbnM7CisJYXBwZW5kc3RhdGUtPmFzLm5h c3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CisJYXBwZW5kc3RhdGUtPmFzLmFzeW5jcmVxdWVzdHMg PSBOVUxMOworCWFwcGVuZHN0YXRlLT5hcy5hc3luY3Jlc3VsdHMgPSBOVUxMOwogCWFwcGVuZHN0 YXRlLT5hc19uYXN5bmNyZXN1bHRzID0gMDsKIAlhcHBlbmRzdGF0ZS0+YXNfbmFzeW5jcmVtYWlu ID0gMDsKLQlhcHBlbmRzdGF0ZS0+YXNfbmVlZHJlcXVlc3QgPSBOVUxMOwotCWFwcGVuZHN0YXRl LT5hc19ldmVudHNldCA9IE5VTEw7Ci0JYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX2FzeW5jcGxhbnMg PSBOVUxMOworCWFwcGVuZHN0YXRlLT5hcy5uZWVkcmVxdWVzdCA9IE5VTEw7CisJYXBwZW5kc3Rh dGUtPmFzLmV2ZW50c2V0ID0gTlVMTDsKKwlhcHBlbmRzdGF0ZS0+YXMudmFsaWRfYXN5bmNwbGFu cyA9IE5VTEw7CiAKIAlpZiAobmFzeW5jcGxhbnMgPiAwKQogCXsKLQkJYXBwZW5kc3RhdGUtPmFz X2FzeW5jcmVxdWVzdHMgPSAoQXN5bmNSZXF1ZXN0ICoqKQorCQlhcHBlbmRzdGF0ZS0+YXMuYXN5 bmNyZXF1ZXN0cyA9IChBc3luY1JlcXVlc3QgKiopCiAJCQlwYWxsb2MwKG5wbGFucyAqIHNpemVv ZihBc3luY1JlcXVlc3QgKikpOwogCiAJCWkgPSAtMTsKQEAgLTI3MywxMyArMjczLDEzIEBAIEV4 ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CQlhcmVxLT5yZXF1ZXN0X2NvbXBsZXRlID0gZmFsc2U7CiAJCQlhcmVxLT5yZXN1bHQgPSBOVUxM OwogCi0JCQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXSA9IGFyZXE7CisJCQlhcHBl bmRzdGF0ZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXSA9IGFyZXE7CiAJCX0KIAotCQlhcHBlbmRzdGF0 ZS0+YXNfYXN5bmNyZXN1bHRzID0gKFR1cGxlVGFibGVTbG90ICoqKQorCQlhcHBlbmRzdGF0ZS0+ YXMuYXN5bmNyZXN1bHRzID0gKFR1cGxlVGFibGVTbG90ICoqKQogCQkJcGFsbG9jMChuYXN5bmNw bGFucyAqIHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSk7CiAKLQkJaWYgKGFwcGVuZHN0YXRlLT5h c192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQorCQlpZiAoYXBwZW5kc3RhdGUtPmFzLnZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhhcHBl bmRzdGF0ZSk7CiAJfQogCkBAIC0yODcsNyArMjg3LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBNaXNjZWxsYW5lb3VzIGlu aXRpYWxpemF0aW9uCiAJICovCiAKLQlhcHBlbmRzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxM OworCWFwcGVuZHN0YXRlLT5hcy5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CiAKIAkvKiBGb3IgcGFy YWxsZWwgcXVlcnksIHRoaXMgd2lsbCBiZSBvdmVycmlkZGVuIGxhdGVyLiAqLwogCWFwcGVuZHN0 YXRlLT5jaG9vc2VfbmV4dF9zdWJwbGFuID0gY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5OwpA QCAtMzE3LDExICszMTcsMTEgQEAgRXhlY0FwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJQXNz ZXJ0KCFub2RlLT5hc19zeW5jZG9uZSk7CiAKIAkJLyogTm90aGluZyB0byBkbyBpZiB0aGVyZSBh cmUgbm8gc3VicGxhbnMgKi8KLQkJaWYgKG5vZGUtPmFzX25wbGFucyA9PSAwKQotCQkJcmV0dXJu IEV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCWlmIChub2Rl LT5hcy5ucGxhbnMgPT0gMCkKKwkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5hcy5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwogCiAJCS8qIElmIHRoZXJlIGFyZSBhbnkgYXN5bmMgc3VicGxh bnMsIGJlZ2luIGV4ZWN1dGluZyB0aGVtLiAqLwotCQlpZiAobm9kZS0+YXNfbmFzeW5jcGxhbnMg PiAwKQorCQlpZiAobm9kZS0+YXMubmFzeW5jcGxhbnMgPiAwKQogCQkJRXhlY0FwcGVuZEFzeW5j QmVnaW4obm9kZSk7CiAKIAkJLyoKQEAgLTMyOSwxMSArMzI5LDExIEBAIEV4ZWNBcHBlbmQoUGxh blN0YXRlICpwc3RhdGUpCiAJCSAqIHByb2NlZWRpbmcuCiAJCSAqLwogCQlpZiAoIW5vZGUtPmNo b29zZV9uZXh0X3N1YnBsYW4obm9kZSkgJiYgbm9kZS0+YXNfbmFzeW5jcmVtYWluID09IDApCi0J CQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwkJ CXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5hcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwog CiAJCUFzc2VydChub2RlLT5hc19zeW5jZG9uZSB8fAogCQkJICAgKG5vZGUtPmFzX3doaWNocGxh biA+PSAwICYmCi0JCQkJbm9kZS0+YXNfd2hpY2hwbGFuIDwgbm9kZS0+YXNfbnBsYW5zKSk7CisJ CQkJbm9kZS0+YXNfd2hpY2hwbGFuIDwgbm9kZS0+YXMubnBsYW5zKSk7CiAKIAkJLyogQW5kIHdl J3JlIGluaXRpYWxpemVkLiAqLwogCQlub2RlLT5hc19iZWd1biA9IHRydWU7CkBAIC0zNDgsMTkg KzM0OCwxOSBAQCBFeGVjQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkvKgogCQkgKiB0cnkg dG8gZ2V0IGEgdHVwbGUgZnJvbSBhbiBhc3luYyBzdWJwbGFuIGlmIGFueQogCQkgKi8KLQkJaWYg KG5vZGUtPmFzX3N5bmNkb25lIHx8ICFibXNfaXNfZW1wdHkobm9kZS0+YXNfbmVlZHJlcXVlc3Qp KQorCQlpZiAobm9kZS0+YXNfc3luY2RvbmUgfHwgIWJtc19pc19lbXB0eShub2RlLT5hcy5uZWVk cmVxdWVzdCkpCiAJCXsKIAkJCWlmIChFeGVjQXBwZW5kQXN5bmNHZXROZXh0KG5vZGUsICZyZXN1 bHQpKQogCQkJCXJldHVybiByZXN1bHQ7CiAJCQlBc3NlcnQoIW5vZGUtPmFzX3N5bmNkb25lKTsK LQkJCUFzc2VydChibXNfaXNfZW1wdHkobm9kZS0+YXNfbmVlZHJlcXVlc3QpKTsKKwkJCUFzc2Vy dChibXNfaXNfZW1wdHkobm9kZS0+YXMubmVlZHJlcXVlc3QpKTsKIAkJfQogCiAJCS8qCiAJCSAq IGZpZ3VyZSBvdXQgd2hpY2ggc3luYyBzdWJwbGFuIHdlIGFyZSBjdXJyZW50bHkgcHJvY2Vzc2lu ZwogCQkgKi8KLQkJQXNzZXJ0KG5vZGUtPmFzX3doaWNocGxhbiA+PSAwICYmIG5vZGUtPmFzX3do aWNocGxhbiA8IG5vZGUtPmFzX25wbGFucyk7Ci0JCXN1Ym5vZGUgPSBub2RlLT5hcHBlbmRwbGFu c1tub2RlLT5hc193aGljaHBsYW5dOworCQlBc3NlcnQobm9kZS0+YXNfd2hpY2hwbGFuID49IDAg JiYgbm9kZS0+YXNfd2hpY2hwbGFuIDwgbm9kZS0+YXMubnBsYW5zKTsKKwkJc3Vibm9kZSA9IG5v ZGUtPmFzLnBsYW5zW25vZGUtPmFzX3doaWNocGxhbl07CiAKIAkJLyoKIAkJICogZ2V0IGEgdHVw bGUgZnJvbSB0aGUgc3VicGxhbgpAQCAtMzg3LDcgKzM4Nyw3IEBAIEV4ZWNBcHBlbmQoUGxhblN0 YXRlICpwc3RhdGUpCiAKIAkJLyogY2hvb3NlIG5ldyBzeW5jIHN1YnBsYW47IGlmIG5vIHN5bmMv YXN5bmMgc3VicGxhbnMsIHdlJ3JlIGRvbmUgKi8KIAkJaWYgKCFub2RlLT5jaG9vc2VfbmV4dF9z dWJwbGFuKG5vZGUpICYmIG5vZGUtPmFzX25hc3luY3JlbWFpbiA9PSAwKQotCQkJcmV0dXJuIEV4 ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCQlyZXR1cm4gRXhl Y0NsZWFyVHVwbGUobm9kZS0+YXMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAl9CiB9CiAKQEAg LTQwOSw4ICs0MDksOCBAQCBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogCS8qCiAJ ICogZ2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKIAkgKi8KLQlhcHBlbmRwbGFucyA9IG5v ZGUtPmFwcGVuZHBsYW5zOwotCW5wbGFucyA9IG5vZGUtPmFzX25wbGFuczsKKwlhcHBlbmRwbGFu cyA9IG5vZGUtPmFzLnBsYW5zOworCW5wbGFucyA9IG5vZGUtPmFzLm5wbGFuczsKIAogCS8qCiAJ ICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCkBAIC00MjIsNyArNDIyLDcgQEAgRXhl Y0VuZEFwcGVuZChBcHBlbmRTdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNSZVNjYW5BcHBlbmQoQXBw ZW5kU3RhdGUgKm5vZGUpCiB7Ci0JaW50CQkJbmFzeW5jcGxhbnMgPSBub2RlLT5hc19uYXN5bmNw bGFuczsKKwlpbnQJCQluYXN5bmNwbGFucyA9IG5vZGUtPmFzLm5hc3luY3BsYW5zOwogCWludAkJ CWk7CiAKIAkvKgpAQCAtNDMwLDI3ICs0MzAsMjcgQEAgRXhlY1JlU2NhbkFwcGVuZChBcHBlbmRT dGF0ZSAqbm9kZSkKIAkgKiB3ZSdkIGJldHRlciB1bnNldCB0aGUgdmFsaWQgc3VicGxhbnMgc28g dGhhdCB0aGV5IGFyZSByZXNlbGVjdGVkIGZvcgogCSAqIHRoZSBuZXcgcGFyYW1ldGVyIHZhbHVl cy4KIAkgKi8KLQlpZiAobm9kZS0+YXNfcHJ1bmVfc3RhdGUgJiYKLQkJYm1zX292ZXJsYXAobm9k ZS0+cHMuY2hnUGFyYW0sCi0JCQkJCW5vZGUtPmFzX3BydW5lX3N0YXRlLT5leGVjcGFyYW1pZHMp KQorCWlmIChub2RlLT5hcy5wcnVuZV9zdGF0ZSAmJgorCQlibXNfb3ZlcmxhcChub2RlLT5hcy5w cy5jaGdQYXJhbSwKKwkJCQkJbm9kZS0+YXMucHJ1bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCiAJ ewotCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gZmFsc2U7Ci0JCWJtc19m cmVlKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zKTsKLQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMg PSBOVUxMOwotCQlibXNfZnJlZShub2RlLT5hc192YWxpZF9hc3luY3BsYW5zKTsKLQkJbm9kZS0+ YXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lk ZW50aWZpZWQgPSBmYWxzZTsKKwkJYm1zX2ZyZWUobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpOwor CQlub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9IE5VTEw7CisJCWJtc19mcmVlKG5vZGUtPmFzLnZh bGlkX2FzeW5jcGxhbnMpOworCQlub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKIAl9 CiAKLQlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+YXNfbnBsYW5zOyBpKyspCisJZm9yIChpID0gMDsg aSA8IG5vZGUtPmFzLm5wbGFuczsgaSsrKQogCXsKLQkJUGxhblN0YXRlICAqc3Vibm9kZSA9IG5v ZGUtPmFwcGVuZHBsYW5zW2ldOworCQlQbGFuU3RhdGUgICpzdWJub2RlID0gbm9kZS0+YXMucGxh bnNbaV07CiAKIAkJLyoKIAkJICogRXhlY1JlU2NhbiBkb2Vzbid0IGtub3cgYWJvdXQgbXkgc3Vi cGxhbnMsIHNvIEkgaGF2ZSB0byBkbwogCQkgKiBjaGFuZ2VkLXBhcmFtZXRlciBzaWduYWxpbmcg bXlzZWxmLgogCQkgKi8KLQkJaWYgKG5vZGUtPnBzLmNoZ1BhcmFtICE9IE5VTEwpCi0JCQlVcGRh dGVDaGFuZ2VkUGFyYW1TZXQoc3Vibm9kZSwgbm9kZS0+cHMuY2hnUGFyYW0pOworCQlpZiAobm9k ZS0+YXMucHMuY2hnUGFyYW0gIT0gTlVMTCkKKwkJCVVwZGF0ZUNoYW5nZWRQYXJhbVNldChzdWJu b2RlLCBub2RlLT5hcy5wcy5jaGdQYXJhbSk7CiAKIAkJLyoKIAkJICogSWYgY2hnUGFyYW0gb2Yg c3Vibm9kZSBpcyBub3QgbnVsbCB0aGVuIHBsYW4gd2lsbCBiZSByZS1zY2FubmVkIGJ5CkBAIC00 NjQsOSArNDY0LDkgQEAgRXhlY1JlU2NhbkFwcGVuZChBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAo bmFzeW5jcGxhbnMgPiAwKQogCXsKIAkJaSA9IC0xOwotCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9t ZW1iZXIobm9kZS0+YXNfYXN5bmNwbGFucywgaSkpID49IDApCisJCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcihub2RlLT5hcy5hc3luY3BsYW5zLCBpKSkgPj0gMCkKIAkJewotCQkJQXN5bmNS ZXF1ZXN0ICphcmVxID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJCUFzeW5jUmVxdWVz dCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07CiAKIAkJCWFyZXEtPmNhbGxiYWNr X3BlbmRpbmcgPSBmYWxzZTsKIAkJCWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKQEAg LTQ3NSw4ICs0NzUsOCBAQCBFeGVjUmVTY2FuQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogCiAJ CW5vZGUtPmFzX25hc3luY3Jlc3VsdHMgPSAwOwogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAw OwotCQlibXNfZnJlZShub2RlLT5hc19uZWVkcmVxdWVzdCk7Ci0JCW5vZGUtPmFzX25lZWRyZXF1 ZXN0ID0gTlVMTDsKKwkJYm1zX2ZyZWUobm9kZS0+YXMubmVlZHJlcXVlc3QpOworCQlub2RlLT5h cy5uZWVkcmVxdWVzdCA9IE5VTEw7CiAJfQogCiAJLyogTGV0IGNob29zZV9uZXh0X3N1YnBsYW5f KiBmdW5jdGlvbiBoYW5kbGUgc2V0dGluZyB0aGUgZmlyc3Qgc3VicGxhbiAqLwpAQCAtNTAzLDcg KzUwMyw3IEBAIEV4ZWNBcHBlbmRFc3RpbWF0ZShBcHBlbmRTdGF0ZSAqbm9kZSwKIHsKIAlub2Rl LT5wc3RhdGVfbGVuID0KIAkJYWRkX3NpemUob2Zmc2V0b2YoUGFyYWxsZWxBcHBlbmRTdGF0ZSwg cGFfZmluaXNoZWQpLAotCQkJCSBzaXplb2YoYm9vbCkgKiBub2RlLT5hc19ucGxhbnMpOworCQkJ CSBzaXplb2YoYm9vbCkgKiBub2RlLT5hcy5ucGxhbnMpOwogCiAJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBub2RlLT5wc3RhdGVfbGVuKTsKIAlzaG1fdG9jX2VzdGlt YXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CkBAIC01MjUsNyArNTI1LDcgQEAgRXhlY0Fw cGVuZEluaXRpYWxpemVEU00oQXBwZW5kU3RhdGUgKm5vZGUsCiAJcHN0YXRlID0gc2htX3RvY19h bGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzdGF0ZV9sZW4pOwogCW1lbXNldChwc3RhdGUsIDAs IG5vZGUtPnBzdGF0ZV9sZW4pOwogCUxXTG9ja0luaXRpYWxpemUoJnBzdGF0ZS0+cGFfbG9jaywg TFdUUkFOQ0hFX1BBUkFMTEVMX0FQUEVORCk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBu b2RlLT5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIHBzdGF0ZSk7CisJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBub2RlLT5hcy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIHBzdGF0ZSk7CiAKIAlub2Rl LT5hc19wc3RhdGUgPSBwc3RhdGU7CiAJbm9kZS0+Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29z ZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcjsKQEAgLTU0Myw3ICs1NDMsNyBAQCBFeGVjQXBwZW5k UmVJbml0aWFsaXplRFNNKEFwcGVuZFN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJUGFyYWxsZWxBcHBlbmRTdGF0ZSAqcHN0YXRlID0gbm9kZS0+YXNfcHN0YXRlOwogCiAJcHN0 YXRlLT5wYV9uZXh0X3BsYW4gPSAwOwotCW1lbXNldChwc3RhdGUtPnBhX2ZpbmlzaGVkLCAwLCBz aXplb2YoYm9vbCkgKiBub2RlLT5hc19ucGxhbnMpOworCW1lbXNldChwc3RhdGUtPnBhX2Zpbmlz aGVkLCAwLCBzaXplb2YoYm9vbCkgKiBub2RlLT5hcy5ucGxhbnMpOwogfQogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC01NTYsNyArNTU2LDcgQEAgRXhlY0FwcGVuZFJlSW5pdGlhbGl6ZURTTShBcHBlbmRTdGF0 ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogdm9pZAogRXhlY0FwcGVuZEluaXRpYWxp emVXb3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUsIFBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQp CiB7Ci0Jbm9kZS0+YXNfcHN0YXRlID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+ cHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CisJbm9kZS0+YXNfcHN0YXRlID0gc2htX3Rv Y19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+YXMucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxz ZSk7CiAJbm9kZS0+Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29zZV9uZXh0X3N1YnBsYW5fZm9y X3dvcmtlcjsKIH0KIApAQCAtNTc0LDcgKzU3NCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9j YWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpbnQJCQluZXh0cGxhbjsKIAogCS8qIFdlIHNob3Vs ZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gc3VicGxhbnMgKi8KLQlBc3NlcnQo bm9kZS0+YXNfbnBsYW5zID4gMCk7CisJQXNzZXJ0KG5vZGUtPmFzLm5wbGFucyA+IDApOwogCiAJ LyogTm90aGluZyB0byBkbyBpZiBzeW5jZG9uZSAqLwogCWlmIChub2RlLT5hc19zeW5jZG9uZSkK QEAgLTU4OSwzMyArNTg5LDMzIEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseShBcHBlbmRT dGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAod2hpY2hwbGFuID09IElOVkFMSURfU1VCUExBTl9JTkRF WCkKIAl7Ci0JCWlmIChub2RlLT5hc19uYXN5bmNwbGFucyA+IDApCisJCWlmIChub2RlLT5hcy5u YXN5bmNwbGFucyA+IDApCiAJCXsKIAkJCS8qIFdlJ2QgaGF2ZSBmaWxsZWQgYXNfdmFsaWRfc3Vi cGxhbnMgYWxyZWFkeSAqLwotCQkJQXNzZXJ0KG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50 aWZpZWQpOworCQkJQXNzZXJ0KG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpOwog CQl9Ci0JCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQorCQll bHNlIGlmICghbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJewotCQkJbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2Rl LT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwotCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCA9IHRydWU7CisJCQlub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9CisJCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzLnBydW5lX3N0YXRlLCBmYWxzZSwgTlVM TCk7CisJCQlub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAkJfQog CiAJCXdoaWNocGxhbiA9IC0xOwogCX0KIAogCS8qIEVuc3VyZSB3aGljaHBsYW4gaXMgd2l0aGlu IHRoZSBleHBlY3RlZCByYW5nZSAqLwotCUFzc2VydCh3aGljaHBsYW4gPj0gLTEgJiYgd2hpY2hw bGFuIDw9IG5vZGUtPmFzX25wbGFucyk7CisJQXNzZXJ0KHdoaWNocGxhbiA+PSAtMSAmJiB3aGlj aHBsYW4gPD0gbm9kZS0+YXMubnBsYW5zKTsKIAotCWlmIChTY2FuRGlyZWN0aW9uSXNGb3J3YXJk KG5vZGUtPnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKQotCQluZXh0cGxhbiA9IGJtc19uZXh0X21l bWJlcihub2RlLT5hc192YWxpZF9zdWJwbGFucywgd2hpY2hwbGFuKTsKKwlpZiAoU2NhbkRpcmVj dGlvbklzRm9yd2FyZChub2RlLT5hcy5wcy5zdGF0ZS0+ZXNfZGlyZWN0aW9uKSkKKwkJbmV4dHBs YW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMudmFsaWRfc3VicGxhbnMsIHdoaWNocGxhbik7 CiAJZWxzZQotCQluZXh0cGxhbiA9IGJtc19wcmV2X21lbWJlcihub2RlLT5hc192YWxpZF9zdWJw bGFucywgd2hpY2hwbGFuKTsKKwkJbmV4dHBsYW4gPSBibXNfcHJldl9tZW1iZXIobm9kZS0+YXMu dmFsaWRfc3VicGxhbnMsIHdoaWNocGxhbik7CiAKIAlpZiAobmV4dHBsYW4gPCAwKQogCXsKIAkJ LyogU2V0IGFzX3N5bmNkb25lIGlmIGluIGFzeW5jIG1vZGUgKi8KLQkJaWYgKG5vZGUtPmFzX25h c3luY3BsYW5zID4gMCkKKwkJaWYgKG5vZGUtPmFzLm5hc3luY3BsYW5zID4gMCkKIAkJCW5vZGUt PmFzX3N5bmNkb25lID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTYzOSwxMCArNjM5 LDEwIEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRTdGF0ZSAqbm9kZSkK IAlQYXJhbGxlbEFwcGVuZFN0YXRlICpwc3RhdGUgPSBub2RlLT5hc19wc3RhdGU7CiAKIAkvKiBC YWNrd2FyZCBzY2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgcGFyYWxsZWwtYXdhcmUgcGxhbnMgKi8K LQlBc3NlcnQoU2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5wcy5zdGF0ZS0+ZXNfZGlyZWN0 aW9uKSk7CisJQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+YXMucHMuc3RhdGUt PmVzX2RpcmVjdGlvbikpOwogCiAJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRo ZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCUFzc2VydChub2RlLT5hc19ucGxhbnMgPiAwKTsKKwlB c3NlcnQobm9kZS0+YXMubnBsYW5zID4gMCk7CiAKIAlMV0xvY2tBY3F1aXJlKCZwc3RhdGUtPnBh X2xvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTY1NCwxOCArNjU0LDE4IEBAIGNob29zZV9uZXh0 X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAllbHNlCiAJewogCQkvKiBT dGFydCB3aXRoIGxhc3Qgc3VicGxhbi4gKi8KLQkJbm9kZS0+YXNfd2hpY2hwbGFuID0gbm9kZS0+ YXNfbnBsYW5zIC0gMTsKKwkJbm9kZS0+YXNfd2hpY2hwbGFuID0gbm9kZS0+YXMubnBsYW5zIC0g MTsKIAogCQkvKgogCQkgKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJw bGFucyB0aGVuIGRvIHNvIG5vdy4gIElmCiAJCSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgZGlzYWJs ZWQgdGhlbiB0aGUgdmFsaWQgc3VicGxhbnMgd2lsbCBhbHdheXMgYmUKIAkJICogc2V0IHRvIGFs bCBzdWJwbGFucy4KIAkJICovCi0JCWlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRp ZmllZCkKKwkJaWYgKCFub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCQl7Ci0J CQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z KG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7Ci0JCQlub2RlLT5hc192YWxpZF9z dWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0K KwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMucHJ1bmVfc3RhdGUsIGZhbHNl LCBOVUxMKTsKKwkJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwog CiAJCQkvKgogCQkJICogTWFyayBlYWNoIGludmFsaWQgcGxhbiBhcyBmaW5pc2hlZCB0byBhbGxv dyB0aGUgbG9vcCBiZWxvdyB0bwpAQCAtNzIxLDEwICs3MjEsMTAgQEAgY2hvb3NlX25leHRfc3Vi cGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCVBhcmFsbGVsQXBwZW5kU3RhdGUg KnBzdGF0ZSA9IG5vZGUtPmFzX3BzdGF0ZTsKIAogCS8qIEJhY2t3YXJkIHNjYW4gaXMgbm90IHN1 cHBvcnRlZCBieSBwYXJhbGxlbC1hd2FyZSBwbGFucyAqLwotCUFzc2VydChTY2FuRGlyZWN0aW9u SXNGb3J3YXJkKG5vZGUtPnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKTsKKwlBc3NlcnQoU2NhbkRp cmVjdGlvbklzRm9yd2FyZChub2RlLT5hcy5wcy5zdGF0ZS0+ZXNfZGlyZWN0aW9uKSk7CiAKIAkv KiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHN1YnBsYW5zICov Ci0JQXNzZXJ0KG5vZGUtPmFzX25wbGFucyA+IDApOworCUFzc2VydChub2RlLT5hcy5ucGxhbnMg PiAwKTsKIAogCUxXTG9ja0FjcXVpcmUoJnBzdGF0ZS0+cGFfbG9jaywgTFdfRVhDTFVTSVZFKTsK IApAQCAtNzM3LDExICs3MzcsMTEgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFw cGVuZFN0YXRlICpub2RlKQogCSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgZGlzYWJsZWQgdGhlbiB0 aGUgdmFsaWQgc3VicGxhbnMgd2lsbCBhbHdheXMgYmUgc2V0CiAJICogdG8gYWxsIHN1YnBsYW5z LgogCSAqLwotCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQor CWVsc2UgaWYgKCFub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKLQkJbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUt PmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7Ci0JCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z X2lkZW50aWZpZWQgPSB0cnVlOworCQlub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9CisJCQlFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMucHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsK KwkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJbWFya19p bnZhbGlkX3N1YnBsYW5zX2FzX2ZpbmlzaGVkKG5vZGUpOwogCX0KQEAgLTc2MSw3ICs3NjEsNyBA QCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJewog CQlpbnQJCQluZXh0cGxhbjsKIAotCQluZXh0cGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5h c192YWxpZF9zdWJwbGFucywKKwkJbmV4dHBsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMu dmFsaWRfc3VicGxhbnMsCiAJCQkJCQkJCSAgIHBzdGF0ZS0+cGFfbmV4dF9wbGFuKTsKIAkJaWYg KG5leHRwbGFuID49IDApCiAJCXsKQEAgLTc3NCw3ICs3NzQsNyBAQCBjaG9vc2VfbmV4dF9zdWJw bGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCQkgKiBUcnkgbG9vcGluZyBiYWNr IHRvIHRoZSBmaXJzdCB2YWxpZCBwYXJ0aWFsIHBsYW4sIGlmIHRoZXJlIGlzCiAJCQkgKiBvbmUu ICBJZiB0aGVyZSBpc24ndCwgYXJyYW5nZSB0byBiYWlsIG91dCBiZWxvdy4KIAkJCSAqLwotCQkJ bmV4dHBsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsCisJCQlu ZXh0cGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy52YWxpZF9zdWJwbGFucywKIAkJCQkJ CQkJCSAgIG5vZGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbiAtIDEpOwogCQkJcHN0YXRlLT5wYV9u ZXh0X3BsYW4gPQogCQkJCW5leHRwbGFuIDwgMCA/IG5vZGUtPmFzX3doaWNocGxhbiA6IG5leHRw bGFuOwpAQCAtNzk5LDcgKzc5OSw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihB cHBlbmRTdGF0ZSAqbm9kZSkKIAogCS8qIFBpY2sgdGhlIHBsYW4gd2UgZm91bmQsIGFuZCBhZHZh bmNlIHBhX25leHRfcGxhbiBvbmUgbW9yZSB0aW1lLiAqLwogCW5vZGUtPmFzX3doaWNocGxhbiA9 IHBzdGF0ZS0+cGFfbmV4dF9wbGFuOwotCXBzdGF0ZS0+cGFfbmV4dF9wbGFuID0gYm1zX25leHRf bWVtYmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAorCXBzdGF0ZS0+cGFfbmV4dF9wbGFuID0g Ym1zX25leHRfbWVtYmVyKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zLAogCQkJCQkJCQkJCSAgIHBz dGF0ZS0+cGFfbmV4dF9wbGFuKTsKIAogCS8qCkBAIC04MDgsNyArODA4LDcgQEAgY2hvb3NlX25l eHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCSAqLwogCWlmIChwc3Rh dGUtPnBhX25leHRfcGxhbiA8IDApCiAJewotCQlpbnQJCQluZXh0cGxhbiA9IGJtc19uZXh0X21l bWJlcihub2RlLT5hc192YWxpZF9zdWJwbGFucywKKwkJaW50CQkJbmV4dHBsYW4gPSBibXNfbmV4 dF9tZW1iZXIobm9kZS0+YXMudmFsaWRfc3VicGxhbnMsCiAJCQkJCQkJCQkJCSAgIG5vZGUtPmFz X2ZpcnN0X3BhcnRpYWxfcGxhbiAtIDEpOwogCiAJCWlmIChuZXh0cGxhbiA+PSAwKQpAQCAtODUw LDE2ICs4NTAsMTYgQEAgbWFya19pbnZhbGlkX3N1YnBsYW5zX2FzX2ZpbmlzaGVkKEFwcGVuZFN0 YXRlICpub2RlKQogCUFzc2VydChub2RlLT5hc19wc3RhdGUpOwogCiAJLyogU2hvdWxkbid0IGhh dmUgYmVlbiBjYWxsZWQgd2hlbiBydW4tdGltZSBwcnVuaW5nIGlzIG5vdCBlbmFibGVkICovCi0J QXNzZXJ0KG5vZGUtPmFzX3BydW5lX3N0YXRlKTsKKwlBc3NlcnQobm9kZS0+YXMucHJ1bmVfc3Rh dGUpOwogCiAJLyogTm90aGluZyB0byBkbyBpZiBhbGwgcGxhbnMgYXJlIHZhbGlkICovCi0JaWYg KGJtc19udW1fbWVtYmVycyhub2RlLT5hc192YWxpZF9zdWJwbGFucykgPT0gbm9kZS0+YXNfbnBs YW5zKQorCWlmIChibXNfbnVtX21lbWJlcnMobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpID09IG5v ZGUtPmFzLm5wbGFucykKIAkJcmV0dXJuOwogCiAJLyogTWFyayBhbGwgbm9uLXZhbGlkIHBsYW5z IGFzIGZpbmlzaGVkICovCi0JZm9yIChpID0gMDsgaSA8IG5vZGUtPmFzX25wbGFuczsgaSsrKQor CWZvciAoaSA9IDA7IGkgPCBub2RlLT5hcy5ucGxhbnM7IGkrKykKIAl7Ci0JCWlmICghYm1zX2lz X21lbWJlcihpLCBub2RlLT5hc192YWxpZF9zdWJwbGFucykpCisJCWlmICghYm1zX2lzX21lbWJl cihpLCBub2RlLT5hcy52YWxpZF9zdWJwbGFucykpCiAJCQlub2RlLT5hc19wc3RhdGUtPnBhX2Zp bmlzaGVkW2ldID0gdHJ1ZTsKIAl9CiB9CkBAIC04ODEsMjcgKzg4MSwyNyBAQCBFeGVjQXBwZW5k QXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpbnQJCQlpOwogCiAJLyogQmFja3dhcmQg c2NhbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFzeW5jLWF3YXJlIEFwcGVuZHMuICovCi0JQXNzZXJ0 KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpOwor CUFzc2VydChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmFzLnBzLnN0YXRlLT5lc19kaXJl Y3Rpb24pKTsKIAogCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUg bm8gc3VicGxhbnMgKi8KLQlBc3NlcnQobm9kZS0+YXNfbnBsYW5zID4gMCk7CisJQXNzZXJ0KG5v ZGUtPmFzLm5wbGFucyA+IDApOwogCiAJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVu IHRoZXJlIGFyZSBubyBhc3luYyBzdWJwbGFucy4gKi8KLQlBc3NlcnQobm9kZS0+YXNfbmFzeW5j cGxhbnMgPiAwKTsKKwlBc3NlcnQobm9kZS0+YXMubmFzeW5jcGxhbnMgPiAwKTsKIAogCS8qIElm IHdlJ3ZlIHlldCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkIHN1YnBsYW5zIHRoZW4gZG8gc28gbm93 LiAqLwotCWlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwlpZiAoIW5v ZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJewotCQlub2RlLT5hc192YWxpZF9z dWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKLQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9 IHRydWU7CisJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0KKwkJCUV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhub2RlLT5hcy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOworCQlub2RlLT5hcy52 YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQljbGFzc2lmeV9tYXRjaGluZ19z dWJwbGFucyhub2RlKTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIHN0YXRlIHZhcmlhYmxlcy4gKi8K LQlub2RlLT5hc19zeW5jZG9uZSA9IGJtc19pc19lbXB0eShub2RlLT5hc192YWxpZF9zdWJwbGFu cyk7Ci0Jbm9kZS0+YXNfbmFzeW5jcmVtYWluID0gYm1zX251bV9tZW1iZXJzKG5vZGUtPmFzX3Zh bGlkX2FzeW5jcGxhbnMpOworCW5vZGUtPmFzX3N5bmNkb25lID0gYm1zX2lzX2VtcHR5KG5vZGUt PmFzLnZhbGlkX3N1YnBsYW5zKTsKKwlub2RlLT5hc19uYXN5bmNyZW1haW4gPSBibXNfbnVtX21l bWJlcnMobm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucyk7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlm IHRoZXJlIGFyZSBubyB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KIAlpZiAobm9kZS0+YXNfbmFz eW5jcmVtYWluID09IDApCkBAIC05MDksOSArOTA5LDkgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4o QXBwZW5kU3RhdGUgKm5vZGUpCiAKIAkvKiBNYWtlIGEgcmVxdWVzdCBmb3IgZWFjaCBvZiB0aGUg dmFsaWQgYXN5bmMgc3VicGxhbnMuICovCiAJaSA9IC0xOwotCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihub2RlLT5hc192YWxpZF9hc3luY3BsYW5zLCBpKSkgPj0gMCkKKwl3aGlsZSAoKGkg PSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucywgaSkpID49IDApCiAJ ewotCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hc19hc3luY3JlcXVlc3RzW2ldOworCQlB c3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hcy5hc3luY3JlcXVlc3RzW2ldOwogCiAJCUFzc2Vy dChhcmVxLT5yZXF1ZXN0X2luZGV4ID09IGkpOwogCQlBc3NlcnQoIWFyZXEtPmNhbGxiYWNrX3Bl bmRpbmcpOwpAQCAtOTYzLDcgKzk2Myw3IEBAIEV4ZWNBcHBlbmRBc3luY0dldE5leHQoQXBwZW5k U3RhdGUgKm5vZGUsIFR1cGxlVGFibGVTbG90ICoqcmVzdWx0KQogCWlmIChub2RlLT5hc19zeW5j ZG9uZSkKIAl7CiAJCUFzc2VydChub2RlLT5hc19uYXN5bmNyZW1haW4gPT0gMCk7Ci0JCSpyZXN1 bHQgPSBFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOworCQkqcmVz dWx0ID0gRXhlY0NsZWFyVHVwbGUobm9kZS0+YXMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAkJ cmV0dXJuIHRydWU7CiAJfQogCkBAIC05ODMsNyArOTgzLDcgQEAgRXhlY0FwcGVuZEFzeW5jUmVx dWVzdChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQpCiAJaW50CQkJ aTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIGFzeW5jIHN1YnBsYW5zIG5l ZWRpbmcgYSBuZXcgcmVxdWVzdC4gKi8KLQlpZiAoYm1zX2lzX2VtcHR5KG5vZGUtPmFzX25lZWRy ZXF1ZXN0KSkKKwlpZiAoYm1zX2lzX2VtcHR5KG5vZGUtPmFzLm5lZWRyZXF1ZXN0KSkKIAl7CiAJ CUFzc2VydChub2RlLT5hc19uYXN5bmNyZXN1bHRzID09IDApOwogCQlyZXR1cm4gZmFsc2U7CkBA IC05OTYsMTcgKzk5NiwxNyBAQCBFeGVjQXBwZW5kQXN5bmNSZXF1ZXN0KEFwcGVuZFN0YXRlICpu b2RlLCBUdXBsZVRhYmxlU2xvdCAqKnJlc3VsdCkKIAlpZiAobm9kZS0+YXNfbmFzeW5jcmVzdWx0 cyA+IDApCiAJewogCQktLW5vZGUtPmFzX25hc3luY3Jlc3VsdHM7Ci0JCSpyZXN1bHQgPSBub2Rl LT5hc19hc3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0c107CisJCSpyZXN1bHQgPSBu b2RlLT5hcy5hc3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0c107CiAJCXJldHVybiB0 cnVlOwogCX0KIAogCS8qIE1ha2UgYSBuZXcgcmVxdWVzdCBmb3IgZWFjaCBvZiB0aGUgYXN5bmMg c3VicGxhbnMgdGhhdCBuZWVkIGl0LiAqLwotCW5lZWRyZXF1ZXN0ID0gbm9kZS0+YXNfbmVlZHJl cXVlc3Q7Ci0Jbm9kZS0+YXNfbmVlZHJlcXVlc3QgPSBOVUxMOworCW5lZWRyZXF1ZXN0ID0gbm9k ZS0+YXMubmVlZHJlcXVlc3Q7CisJbm9kZS0+YXMubmVlZHJlcXVlc3QgPSBOVUxMOwogCWkgPSAt MTsKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobmVlZHJlcXVlc3QsIGkpKSA+PSAwKQog CXsKLQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJ QXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKIAogCQkvKiBE byB0aGUgYWN0dWFsIHdvcmsuICovCiAJCUV4ZWNBc3luY1JlcXVlc3QoYXJlcSk7CkBAIC0xMDE3 LDcgKzEwMTcsNyBAQCBFeGVjQXBwZW5kQXN5bmNSZXF1ZXN0KEFwcGVuZFN0YXRlICpub2RlLCBU dXBsZVRhYmxlU2xvdCAqKnJlc3VsdCkKIAlpZiAobm9kZS0+YXNfbmFzeW5jcmVzdWx0cyA+IDAp CiAJewogCQktLW5vZGUtPmFzX25hc3luY3Jlc3VsdHM7Ci0JCSpyZXN1bHQgPSBub2RlLT5hc19h c3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0c107CisJCSpyZXN1bHQgPSBub2RlLT5h cy5hc3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0c107CiAJCXJldHVybiB0cnVlOwog CX0KIApAQCAtMTAzMyw3ICsxMDMzLDcgQEAgRXhlY0FwcGVuZEFzeW5jUmVxdWVzdChBcHBlbmRT dGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQpCiBzdGF0aWMgdm9pZAogRXhlY0Fw cGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogewotCWludAkJCW5ldmVudHMg PSBub2RlLT5hc19uYXN5bmNwbGFucyArIDI7CisJaW50CQkJbmV2ZW50cyA9IG5vZGUtPmFzLm5h c3luY3BsYW5zICsgMjsKIAlsb25nCQl0aW1lb3V0ID0gbm9kZS0+YXNfc3luY2RvbmUgPyAtMSA6 IDA7CiAJV2FpdEV2ZW50CW9jY3VycmVkX2V2ZW50W0VWRU5UX0JVRkZFUl9TSVpFXTsKIAlpbnQJ CQlub2NjdXJyZWQ7CkBAIC0xMDQyLDE2ICsxMDQyLDE2IEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50 V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdo ZW4gdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwogCUFzc2VydChub2RlLT5h c19uYXN5bmNyZW1haW4gPiAwKTsKIAotCUFzc2VydChub2RlLT5hc19ldmVudHNldCA9PSBOVUxM KTsKLQlub2RlLT5hc19ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3Vy Y2VPd25lciwgbmV2ZW50cyk7Ci0JQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+YXNfZXZlbnRzZXQs IFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCisJQXNzZXJ0KG5vZGUtPmFz LmV2ZW50c2V0ID09IE5VTEwpOworCW5vZGUtPmFzLmV2ZW50c2V0ID0gQ3JlYXRlV2FpdEV2ZW50 U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLCBuZXZlbnRzKTsKKwlBZGRXYWl0RXZlbnRUb1NldChu b2RlLT5hcy5ldmVudHNldCwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwK IAkJCQkJICBOVUxMLCBOVUxMKTsKIAogCS8qIEdpdmUgZWFjaCB3YWl0aW5nIHN1YnBsYW4gYSBj aGFuY2UgdG8gYWRkIGFuIGV2ZW50LiAqLwogCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIobm9kZS0+YXNfYXN5bmNwbGFucywgaSkpID49IDApCisJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKG5vZGUtPmFzLmFzeW5jcGxhbnMsIGkpKSA+PSAwKQogCXsKLQkJQXN5bmNS ZXF1ZXN0ICphcmVxID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJQXN5bmNSZXF1ZXN0 ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKIAogCQlpZiAoYXJlcS0+Y2FsbGJh Y2tfcGVuZGluZykKIAkJCUV4ZWNBc3luY0NvbmZpZ3VyZVdhaXQoYXJlcSk7CkBAIC0xMDYxLDEw ICsxMDYxLDEwIEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkK IAkgKiBObyBuZWVkIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYgbm9uZSBvZiB0aGUgc3VicGxh bnMgY29uZmlndXJlZCBhbnkKIAkgKiBldmVudHMuCiAJICovCi0JaWYgKEdldE51bVJlZ2lzdGVy ZWRXYWl0RXZlbnRzKG5vZGUtPmFzX2V2ZW50c2V0KSA9PSAxKQorCWlmIChHZXROdW1SZWdpc3Rl cmVkV2FpdEV2ZW50cyhub2RlLT5hcy5ldmVudHNldCkgPT0gMSkKIAl7Ci0JCUZyZWVXYWl0RXZl bnRTZXQobm9kZS0+YXNfZXZlbnRzZXQpOwotCQlub2RlLT5hc19ldmVudHNldCA9IE5VTEw7CisJ CUZyZWVXYWl0RXZlbnRTZXQobm9kZS0+YXMuZXZlbnRzZXQpOworCQlub2RlLT5hcy5ldmVudHNl dCA9IE5VTEw7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEwODAsNyArMTA4MCw3IEBAIEV4ZWNBcHBl bmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiB3ZSBjYW5ub3QgY2hhbmdl IGl0IG5vdy4gIFRoZSBwYXR0ZXJuIGhhcyBwb3NzaWJseSBiZWVuIGNvcGllZCB0byBvdGhlcgog CSAqIGV4dGVuc2lvbnMgdG9vLgogCSAqLwotCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzX2V2 ZW50c2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCisJQWRkV2FpdEV2ZW50VG9T ZXQobm9kZS0+YXMuZXZlbnRzZXQsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKIAkJ CQkJICBNeUxhdGNoLCBOVUxMKTsKIAogCS8qIFJldHVybiBhdCBtb3N0IEVWRU5UX0JVRkZFUl9T SVpFIGV2ZW50cyBpbiBvbmUgY2FsbC4gKi8KQEAgLTEwOTEsMTAgKzEwOTEsMTAgQEAgRXhlY0Fw cGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCSAqIElmIHRoZSB0aW1lb3V0 IGlzIC0xLCB3YWl0IHVudGlsIGF0IGxlYXN0IG9uZSBldmVudCBvY2N1cnMuICBJZiB0aGUKIAkg KiB0aW1lb3V0IGlzIDAsIHBvbGwgZm9yIGV2ZW50cywgYnV0IGRvIG5vdCB3YWl0IGF0IGFsbC4K IAkgKi8KLQlub2NjdXJyZWQgPSBXYWl0RXZlbnRTZXRXYWl0KG5vZGUtPmFzX2V2ZW50c2V0LCB0 aW1lb3V0LCBvY2N1cnJlZF9ldmVudCwKKwlub2NjdXJyZWQgPSBXYWl0RXZlbnRTZXRXYWl0KG5v ZGUtPmFzLmV2ZW50c2V0LCB0aW1lb3V0LCBvY2N1cnJlZF9ldmVudCwKIAkJCQkJCQkJIG5ldmVu dHMsIFdBSVRfRVZFTlRfQVBQRU5EX1JFQURZKTsKLQlGcmVlV2FpdEV2ZW50U2V0KG5vZGUtPmFz X2V2ZW50c2V0KTsKLQlub2RlLT5hc19ldmVudHNldCA9IE5VTEw7CisJRnJlZVdhaXRFdmVudFNl dChub2RlLT5hcy5ldmVudHNldCk7CisJbm9kZS0+YXMuZXZlbnRzZXQgPSBOVUxMOwogCWlmIChu b2NjdXJyZWQgPT0gMCkKIAkJcmV0dXJuOwogCkBAIC0xMTY3LDE0ICsxMTY3LDE0IEBAIEV4ZWNB c3luY0FwcGVuZFJlc3BvbnNlKEFzeW5jUmVxdWVzdCAqYXJlcSkKIAl9CiAKIAkvKiBTYXZlIHJl c3VsdCBzbyB3ZSBjYW4gcmV0dXJuIGl0LiAqLwotCUFzc2VydChub2RlLT5hc19uYXN5bmNyZXN1 bHRzIDwgbm9kZS0+YXNfbmFzeW5jcGxhbnMpOwotCW5vZGUtPmFzX2FzeW5jcmVzdWx0c1tub2Rl LT5hc19uYXN5bmNyZXN1bHRzKytdID0gc2xvdDsKKwlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVz dWx0cyA8IG5vZGUtPmFzLm5hc3luY3BsYW5zKTsKKwlub2RlLT5hcy5hc3luY3Jlc3VsdHNbbm9k ZS0+YXNfbmFzeW5jcmVzdWx0cysrXSA9IHNsb3Q7CiAKIAkvKgogCSAqIE1hcmsgdGhlIHN1YnBs YW4gdGhhdCByZXR1cm5lZCBhIHJlc3VsdCBhcyByZWFkeSBmb3IgYSBuZXcgcmVxdWVzdC4gIFdl CiAJICogZG9uJ3QgbGF1bmNoIGFub3RoZXIgb25lIGhlcmUgaW1tZWRpYXRlbHkgYmVjYXVzZSBp dCBtaWdodCBjb21wbGV0ZS4KIAkgKi8KLQlub2RlLT5hc19uZWVkcmVxdWVzdCA9IGJtc19hZGRf bWVtYmVyKG5vZGUtPmFzX25lZWRyZXF1ZXN0LAorCW5vZGUtPmFzLm5lZWRyZXF1ZXN0ID0gYm1z X2FkZF9tZW1iZXIobm9kZS0+YXMubmVlZHJlcXVlc3QsCiAJCQkJCQkJCQkJICBhcmVxLT5yZXF1 ZXN0X2luZGV4KTsKIH0KIApAQCAtMTE5MSwxMSArMTE5MSwxMSBAQCBjbGFzc2lmeV9tYXRjaGlu Z19zdWJwbGFucyhBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKIAlCaXRtYXBzZXQgICp2YWxpZF9hc3lu Y3BsYW5zOwogCi0JQXNzZXJ0KG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpOwot CUFzc2VydChub2RlLT5hc192YWxpZF9hc3luY3BsYW5zID09IE5VTEwpOworCUFzc2VydChub2Rl LT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsKKwlBc3NlcnQobm9kZS0+YXMudmFsaWRf YXN5bmNwbGFucyA9PSBOVUxMKTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5v IHZhbGlkIHN1YnBsYW5zLiAqLwotCWlmIChibXNfaXNfZW1wdHkobm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMpKQorCWlmIChibXNfaXNfZW1wdHkobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpKQogCXsK IAkJbm9kZS0+YXNfc3luY2RvbmUgPSB0cnVlOwogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAw OwpAQCAtMTIwMywyMCArMTIwMywyMCBAQCBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhBcHBl bmRTdGF0ZSAqbm9kZSkKIAl9CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyB2 YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KLQlpZiAoIWJtc19vdmVybGFwKG5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zLCBub2RlLT5hc19hc3luY3BsYW5zKSkKKwlpZiAoIWJtc19vdmVybGFwKG5vZGUt PmFzLnZhbGlkX3N1YnBsYW5zLCBub2RlLT5hcy5hc3luY3BsYW5zKSkKIAl7CiAJCW5vZGUtPmFz X25hc3luY3JlbWFpbiA9IDA7CiAJCXJldHVybjsKIAl9CiAKIAkvKiBHZXQgdmFsaWQgYXN5bmMg c3VicGxhbnMuICovCi0JdmFsaWRfYXN5bmNwbGFucyA9IGJtc19pbnRlcnNlY3Qobm9kZS0+YXNf YXN5bmNwbGFucywKLQkJCQkJCQkJCSBub2RlLT5hc192YWxpZF9zdWJwbGFucyk7CisJdmFsaWRf YXN5bmNwbGFucyA9IGJtc19pbnRlcnNlY3Qobm9kZS0+YXMuYXN5bmNwbGFucywKKwkJCQkJCQkJ CSBub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7CiAKIAkvKiBBZGp1c3QgdGhlIHZhbGlkIHN1YnBs YW5zIHRvIGNvbnRhaW4gc3luYyBzdWJwbGFucyBvbmx5LiAqLwotCW5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zID0gYm1zX2RlbF9tZW1iZXJzKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAorCW5vZGUt PmFzLnZhbGlkX3N1YnBsYW5zID0gYm1zX2RlbF9tZW1iZXJzKG5vZGUtPmFzLnZhbGlkX3N1YnBs YW5zLAogCQkJCQkJCQkJCQkgIHZhbGlkX2FzeW5jcGxhbnMpOwogCiAJLyogU2F2ZSB2YWxpZCBh c3luYyBzdWJwbGFucy4gKi8KLQlub2RlLT5hc192YWxpZF9hc3luY3BsYW5zID0gdmFsaWRfYXN5 bmNwbGFuczsKKwlub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gdmFsaWRfYXN5bmNwbGFuczsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggNzJlZWJkNTBiZGYu LmQ3ZDJkZTA4MTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAt NzksMTIgKzc5LDEyIEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qCiAJICogY3JlYXRlIG5ldyBNZXJnZUFwcGVu ZFN0YXRlIGZvciBvdXIgbm9kZQogCSAqLwotCW1lcmdlc3RhdGUtPnBzLnBsYW4gPSAoUGxhbiAq KSBub2RlOwotCW1lcmdlc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwotCW1lcmdlc3RhdGUtPnBz LkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKKwltZXJnZXN0YXRlLT5hcy5wcy5wbGFu ID0gKFBsYW4gKikgbm9kZTsKKwltZXJnZXN0YXRlLT5hcy5wcy5zdGF0ZSA9IGVzdGF0ZTsKKwlt ZXJnZXN0YXRlLT5hcy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKIAkvKiBJ ZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVw IG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJaWYgKG5vZGUtPmFi LnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5l c3RhdGU7CiAKQEAgLTkzLDEyICs5MywxMiBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbnMgdG8g aW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKIAkJ ICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KIAkJICovCi0J CXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCZtZXJnZXN0YXRlLT5w cywKLQkJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCi0JCQkJCQkJ CQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCi0JCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJl bGlkcywKKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoJm1lcmdl c3RhdGUtPmFzLnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJwbGFu cyksCisJCQkJCQkJCQkJCQkgIG5vZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJ CQkgIG5vZGUtPmFiLmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwot CQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CisJCW1lcmdlc3RhdGUt PmFzLnBydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJz KHZhbGlkc3VicGxhbnMpOwogCiAJCS8qCkBAIC0xMDcsMjUgKzEwNywyNSBAQCBFeGVjSW5pdE1l cmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KIAkJ aWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCi0JCQltZXJnZXN0 YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0g MSk7CisJCQltZXJnZXN0YXRlLT5hcy52YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVM TCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKIAl7Ci0JCW5wbGFucyA9IGxpc3RfbGVuZ3Ro KG5vZGUtPm1lcmdlcGxhbnMpOworCQlucGxhbnMgPSBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJw bGFucyk7CiAKIAkJLyoKIAkJICogV2hlbiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBu b3QgZW5hYmxlZCB3ZSBjYW4ganVzdCBtYXJrIGFsbAogCQkgKiBzdWJwbGFucyBhcyB2YWxpZDsg dGhleSBtdXN0IGFsc28gYWxsIGJlIGluaXRpYWxpemVkLgogCQkgKi8KIAkJQXNzZXJ0KG5wbGFu cyA+IDApOwotCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IHZhbGlkc3VicGxhbnMg PQorCQltZXJnZXN0YXRlLT5hcy52YWxpZF9zdWJwbGFucyA9IHZhbGlkc3VicGxhbnMgPQogCQkJ Ym1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQkJbWVyZ2VzdGF0ZS0+bXNfcHJ1 bmVfc3RhdGUgPSBOVUxMOworCQltZXJnZXN0YXRlLT5hcy5wcnVuZV9zdGF0ZSA9IE5VTEw7CiAJ fQogCiAJbWVyZ2VwbGFuc3RhdGVzID0gcGFsbG9jX2FycmF5KFBsYW5TdGF0ZSAqLCBucGxhbnMp OwotCW1lcmdlc3RhdGUtPm1lcmdlcGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7Ci0JbWVyZ2VzdGF0 ZS0+bXNfbnBsYW5zID0gbnBsYW5zOworCW1lcmdlc3RhdGUtPmFzLnBsYW5zID0gbWVyZ2VwbGFu c3RhdGVzOworCW1lcmdlc3RhdGUtPmFzLm5wbGFucyA9IG5wbGFuczsKIAogCW1lcmdlc3RhdGUt Pm1zX3Nsb3RzID0gcGFsbG9jMF9hcnJheShUdXBsZVRhYmxlU2xvdCAqLCBucGxhbnMpOwogCW1l cmdlc3RhdGUtPm1zX2hlYXAgPSBiaW5hcnloZWFwX2FsbG9jYXRlKG5wbGFucywgaGVhcF9jb21w YXJlX3Nsb3RzLApAQCAtMTM5LDcgKzEzOSw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWkgPSAtMTsKIAl3aGls ZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFucywgaSkpID49IDApCiAJewotCQlQ bGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkp OworCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPmFiLnN1YnBs YW5zLCBpKTsKIAogCQltZXJnZXBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9k ZSwgZXN0YXRlLCBlZmxhZ3MpOwogCX0KQEAgLTE1NiwyMCArMTU2LDIwIEBAIEV4ZWNJbml0TWVy Z2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CW1lcmdlb3BzID0gRXhlY0dldENvbW1vblNsb3RPcHMobWVyZ2VwbGFuc3RhdGVzLCBqKTsKIAlp ZiAobWVyZ2VvcHMgIT0gTlVMTCkKIAl7Ci0JCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJm1l cmdlc3RhdGUtPnBzLCBtZXJnZW9wcyk7CisJCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJm1l cmdlc3RhdGUtPmFzLnBzLCBtZXJnZW9wcyk7CiAJfQogCWVsc2UKIAl7Ci0JCUV4ZWNJbml0UmVz dWx0VHVwbGVTbG90VEwoJm1lcmdlc3RhdGUtPnBzLCAmVFRTT3BzVmlydHVhbCk7CisJCUV4ZWNJ bml0UmVzdWx0VHVwbGVTbG90VEwoJm1lcmdlc3RhdGUtPmFzLnBzLCAmVFRTT3BzVmlydHVhbCk7 CiAJCS8qIHNob3cgdGhhdCB0aGUgb3V0cHV0IHNsb3QgdHlwZSBpcyBub3QgZml4ZWQgKi8KLQkJ bWVyZ2VzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKLQkJbWVyZ2VzdGF0ZS0+cHMucmVz dWx0b3BzZml4ZWQgPSBmYWxzZTsKKwkJbWVyZ2VzdGF0ZS0+YXMucHMucmVzdWx0b3Bzc2V0ID0g dHJ1ZTsKKwkJbWVyZ2VzdGF0ZS0+YXMucHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAl9CiAK IAkvKgogCSAqIE1pc2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRpb24KIAkgKi8KLQltZXJnZXN0YXRl LT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CisJbWVyZ2VzdGF0ZS0+YXMucHMucHNfUHJvakluZm8g PSBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvcnQta2V5IGluZm9ybWF0aW9uCkBAIC0y MjQsMjYgKzIyNCwyNiBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJaWYg KCFub2RlLT5tc19pbml0aWFsaXplZCkKIAl7CiAJCS8qIE5vdGhpbmcgdG8gZG8gaWYgYWxsIHN1 YnBsYW5zIHdlcmUgcHJ1bmVkICovCi0JCWlmIChub2RlLT5tc19ucGxhbnMgPT0gMCkKLQkJCXJl dHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOworCQlpZiAo bm9kZS0+YXMubnBsYW5zID09IDApCisJCQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+YXMu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCQkvKgogCQkgKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0 ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFucyB0aGVuIGRvIHNvIG5vdy4gIElmCiAJCSAqIHJ1bi10 aW1lIHBydW5pbmcgaXMgZGlzYWJsZWQgdGhlbiB0aGUgdmFsaWQgc3VicGxhbnMgd2lsbCBhbHdh eXMgYmUKIAkJICogc2V0IHRvIGFsbCBzdWJwbGFucy4KIAkJICovCi0JCWlmIChub2RlLT5tc192 YWxpZF9zdWJwbGFucyA9PSBOVUxMKQotCQkJbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPQotCQkJ CUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5V TEwpOworCQlpZiAobm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKKwkJCW5vZGUtPmFz LnZhbGlkX3N1YnBsYW5zID0KKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMu cHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91 Z2g6IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLAogCQkgKiBh bmQgc2V0IHVwIHRoZSBoZWFwLgogCQkgKi8KIAkJaSA9IC0xOwotCQl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMsIGkpKSA+PSAwKQorCQl3aGlsZSAo KGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMudmFsaWRfc3VicGxhbnMsIGkpKSA+PSAwKQog CQl7Ci0JCQlub2RlLT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5tZXJnZXBsYW5z W2ldKTsKKwkJCW5vZGUtPm1zX3Nsb3RzW2ldID0gRXhlY1Byb2NOb2RlKG5vZGUtPmFzLnBsYW5z W2ldKTsKIAkJCWlmICghVHVwSXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKIAkJCQliaW5hcnlo ZWFwX2FkZF91bm9yZGVyZWQobm9kZS0+bXNfaGVhcCwgSW50MzJHZXREYXR1bShpKSk7CiAJCX0K QEAgLTI2MSw3ICsyNjEsNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJ CSAqIHRvIG5vdCBwdWxsIHR1cGxlcyB1bnRpbCBuZWNlc3NhcnkuKQogCQkgKi8KIAkJaSA9IERh dHVtR2V0SW50MzIoYmluYXJ5aGVhcF9maXJzdChub2RlLT5tc19oZWFwKSk7Ci0JCW5vZGUtPm1z X3Nsb3RzW2ldID0gRXhlY1Byb2NOb2RlKG5vZGUtPm1lcmdlcGxhbnNbaV0pOworCQlub2RlLT5t c19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5hcy5wbGFuc1tpXSk7CiAJCWlmICghVHVw SXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKIAkJCWJpbmFyeWhlYXBfcmVwbGFjZV9maXJzdChu b2RlLT5tc19oZWFwLCBJbnQzMkdldERhdHVtKGkpKTsKIAkJZWxzZQpAQCAtMjcxLDcgKzI3MSw3 IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAlpZiAoYmluYXJ5aGVhcF9l bXB0eShub2RlLT5tc19oZWFwKSkKIAl7CiAJCS8qIEFsbCB0aGUgc3VicGxhbnMgYXJlIGV4aGF1 c3RlZCwgYW5kIHNvIGlzIHRoZSBoZWFwICovCi0JCXJlc3VsdCA9IEV4ZWNDbGVhclR1cGxlKG5v ZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCXJlc3VsdCA9IEV4ZWNDbGVhclR1cGxlKG5v ZGUtPmFzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJfQogCWVsc2UKIAl7CkBAIC0zNDIsOCAr MzQyLDggQEAgRXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiAJLyoK IAkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQogCSAqLwotCW1lcmdlcGxhbnMgPSBu b2RlLT5tZXJnZXBsYW5zOwotCW5wbGFucyA9IG5vZGUtPm1zX25wbGFuczsKKwltZXJnZXBsYW5z ID0gbm9kZS0+YXMucGxhbnM7CisJbnBsYW5zID0gbm9kZS0+YXMubnBsYW5zOwogCiAJLyoKIAkg KiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKQEAgLTM2MiwyNCArMzYyLDI0IEBAIEV4 ZWNSZVNjYW5NZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQogCSAqIHdlJ2QgYmV0 dGVyIHVuc2V0IHRoZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQg Zm9yCiAJICogdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgogCSAqLwotCWlmIChub2RlLT5tc19w cnVuZV9zdGF0ZSAmJgotCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKLQkJCQkJbm9k ZS0+bXNfcHJ1bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCisJaWYgKG5vZGUtPmFzLnBydW5lX3N0 YXRlICYmCisJCWJtc19vdmVybGFwKG5vZGUtPmFzLnBzLmNoZ1BhcmFtLAorCQkJCQlub2RlLT5h cy5wcnVuZV9zdGF0ZS0+ZXhlY3BhcmFtaWRzKSkKIAl7Ci0JCWJtc19mcmVlKG5vZGUtPm1zX3Zh bGlkX3N1YnBsYW5zKTsKLQkJbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBOVUxMOworCQlibXNf ZnJlZShub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7CisJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5z ID0gTlVMTDsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bXNfbnBsYW5zOyBpKyspCisJ Zm9yIChpID0gMDsgaSA8IG5vZGUtPmFzLm5wbGFuczsgaSsrKQogCXsKLQkJUGxhblN0YXRlICAq c3Vibm9kZSA9IG5vZGUtPm1lcmdlcGxhbnNbaV07CisJCVBsYW5TdGF0ZSAgKnN1Ym5vZGUgPSBu b2RlLT5hcy5wbGFuc1tpXTsKIAogCQkvKgogCQkgKiBFeGVjUmVTY2FuIGRvZXNuJ3Qga25vdyBh Ym91dCBteSBzdWJwbGFucywgc28gSSBoYXZlIHRvIGRvCiAJCSAqIGNoYW5nZWQtcGFyYW1ldGVy IHNpZ25hbGluZyBteXNlbGYuCiAJCSAqLwotCQlpZiAobm9kZS0+cHMuY2hnUGFyYW0gIT0gTlVM TCkKLQkJCVVwZGF0ZUNoYW5nZWRQYXJhbVNldChzdWJub2RlLCBub2RlLT5wcy5jaGdQYXJhbSk7 CisJCWlmIChub2RlLT5hcy5wcy5jaGdQYXJhbSAhPSBOVUxMKQorCQkJVXBkYXRlQ2hhbmdlZFBh cmFtU2V0KHN1Ym5vZGUsIG5vZGUtPmFzLnBzLmNoZ1BhcmFtKTsKIAogCQkvKgogCQkgKiBJZiBj aGdQYXJhbSBvZiBzdWJub2RlIGlzIG5vdCBudWxsIHRoZW4gcGxhbiB3aWxsIGJlIHJlLXNjYW5u ZWQgYnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNmE4NTAzNDljZjcuLjNjNzVhODQ3MDViIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtNDgyNSwxNCArNDgyNSwxNCBAQCBwbGFuc3RhdGVfdHJl ZV93YWxrZXJfaW1wbChQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlzd2l0Y2ggKG5vZGVUYWcocGxh bikpCiAJewogCQljYXNlIFRfQXBwZW5kOgotCQkJaWYgKHBsYW5zdGF0ZV93YWxrX21lbWJlcnMo KChBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5hcHBlbmRwbGFucywKLQkJCQkJCQkJCSAgICgo QXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXNfbnBsYW5zLAorCQkJaWYgKHBsYW5zdGF0ZV93 YWxrX21lbWJlcnMoKChBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5hcy5wbGFucywKKwkJCQkJ CQkJCSAgICgoQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMubnBsYW5zLAogCQkJCQkJCQkJ ICAgd2Fsa2VyLCBjb250ZXh0KSkKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCWJyZWFrOwogCQljYXNl IFRfTWVyZ2VBcHBlbmQ6Ci0JCQlpZiAocGxhbnN0YXRlX3dhbGtfbWVtYmVycygoKE1lcmdlQXBw ZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+bWVyZ2VwbGFucywKLQkJCQkJCQkJCSAgICgoTWVyZ2VB cHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5tc19ucGxhbnMsCisJCQlpZiAocGxhbnN0YXRlX3dh bGtfbWVtYmVycygoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMucGxhbnMsCisJ CQkJCQkJCQkgICAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMubnBsYW5zLAog CQkJCQkJCQkJICAgd2Fsa2VyLCBjb250ZXh0KSkKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDMyNjY2MTVhNzk2 Li4yMmJkOTM1OTZlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpA QCAtMTI0NiwxMiArMTI0NiwxMiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCSAqIGNoaWxkIHBsYW5zLCB0 byBtYWtlIGNyb3NzLWNoZWNraW5nIHRoZSBzb3J0IGluZm8gZWFzaWVyLgogCSAqLwogCXBsYW4g PSBtYWtlTm9kZShBcHBlbmQpOwotCXBsYW4tPnBsYW4udGFyZ2V0bGlzdCA9IHRsaXN0OwotCXBs YW4tPnBsYW4ucXVhbCA9IE5JTDsKLQlwbGFuLT5wbGFuLmxlZnR0cmVlID0gTlVMTDsKLQlwbGFu LT5wbGFuLnJpZ2h0dHJlZSA9IE5VTEw7Ci0JcGxhbi0+YXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7 Ci0JcGxhbi0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHMgPSBiZXN0X3BhdGgtPmNoaWxkX2FwcGVu ZF9yZWxpZF9zZXRzOworCXBsYW4tPmFiLnBsYW4udGFyZ2V0bGlzdCA9IHRsaXN0OworCXBsYW4t PmFiLnBsYW4ucXVhbCA9IE5JTDsKKwlwbGFuLT5hYi5wbGFuLmxlZnR0cmVlID0gTlVMTDsKKwlw bGFuLT5hYi5wbGFuLnJpZ2h0dHJlZSA9IE5VTEw7CisJcGxhbi0+YWIuYXBwcmVsaWRzID0gcmVs LT5yZWxpZHM7CisJcGxhbi0+YWIuY2hpbGRfYXBwZW5kX3JlbGlkX3NldHMgPSBiZXN0X3BhdGgt PmNoaWxkX2FwcGVuZF9yZWxpZF9zZXRzOwogCiAJaWYgKHBhdGhrZXlzICE9IE5JTCkKIAl7CkBA IC0xMjcwLDcgKzEyNzAsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs IEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQkJCQkJCQkJCSAgJm5vZGVTb3J0 T3BlcmF0b3JzLAogCQkJCQkJCQkJCSAgJm5vZGVDb2xsYXRpb25zLAogCQkJCQkJCQkJCSAgJm5v ZGVOdWxsc0ZpcnN0KTsKLQkJdGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9sZW5ndGgg IT0gbGlzdF9sZW5ndGgocGxhbi0+cGxhbi50YXJnZXRsaXN0KSk7CisJCXRsaXN0X3dhc19jaGFu Z2VkID0gKG9yaWdfdGxpc3RfbGVuZ3RoICE9IGxpc3RfbGVuZ3RoKHBsYW4tPmFiLnBsYW4udGFy Z2V0bGlzdCkpOwogCX0KIAogCS8qIElmIGFwcHJvcHJpYXRlLCBjb25zaWRlciBhc3luYyBhcHBl bmQgKi8KQEAgLTEzODAsNyArMTM4MCw3IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJfQogCiAJLyogU2V0 IGJlbG93IGlmIHdlIGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5l ICovCi0JcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9IC0xOworCXBsYW4tPmFiLnBhcnRfcHJ1bmVf aW5kZXggPSAtMTsKIAogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1 c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgpAQCAtMTQwNSwxNiArMTQwNSwxNiBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwbGFu LT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwK LQkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkJCSAg cHJ1bmVxdWFsKTsKKwkJCXBsYW4tPmFiLnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlv bl9wcnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBh dGhzLAorCQkJCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOwogCX0KIAotCXBsYW4tPmFwcGVuZHBs YW5zID0gc3VicGxhbnM7CisJcGxhbi0+YWIuc3VicGxhbnMgPSBzdWJwbGFuczsKIAlwbGFuLT5u YXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3BhcnRpYWxfcGxhbiA9IGJl c3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwogCi0JY29weV9nZW5lcmljX3BhdGhfaW5mbygm cGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKKwljb3B5X2dlbmVyaWNfcGF0aF9pbmZv KCZwbGFuLT5hYi5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOwogCiAJLyoKIAkgKiBJZiBwcmVw YXJlX3NvcnRfZnJvbV9wYXRoa2V5cyBhZGRlZCBzb3J0IGNvbHVtbnMsIGJ1dCB3ZSB3ZXJlIHRv bGQgdG8KQEAgLTE0MjMsOSArMTQyMyw5IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJICovCiAJaWYgKHRs aXN0X3dhc19jaGFuZ2VkICYmIChmbGFncyAmIChDUF9FWEFDVF9UTElTVCB8IENQX1NNQUxMX1RM SVNUKSkpCiAJewotCQl0bGlzdCA9IGxpc3RfY29weV9oZWFkKHBsYW4tPnBsYW4udGFyZ2V0bGlz dCwgb3JpZ190bGlzdF9sZW5ndGgpOworCQl0bGlzdCA9IGxpc3RfY29weV9oZWFkKHBsYW4tPmFi LnBsYW4udGFyZ2V0bGlzdCwgb3JpZ190bGlzdF9sZW5ndGgpOwogCQlyZXR1cm4gaW5qZWN0X3By b2plY3Rpb25fcGxhbigoUGxhbiAqKSBwbGFuLCB0bGlzdCwKLQkJCQkJCQkJCSAgcGxhbi0+cGxh bi5wYXJhbGxlbF9zYWZlKTsKKwkJCQkJCQkJCSAgcGxhbi0+YWIucGxhbi5wYXJhbGxlbF9zYWZl KTsKIAl9CiAJZWxzZQogCQlyZXR1cm4gKFBsYW4gKikgcGxhbjsKQEAgLTE0NDMsNyArMTQ0Myw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJCQkJCQkgaW50IGZsYWdzKQogewogCU1lcmdlQXBwZW5kICpu b2RlID0gbWFrZU5vZGUoTWVyZ2VBcHBlbmQpOwotCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+cGxh bjsKKwlQbGFuCSAgICpwbGFuID0gJm5vZGUtPmFiLnBsYW47CiAJTGlzdAkgICAqdGxpc3QgPSBi dWlsZF9wYXRoX3RsaXN0KHJvb3QsICZiZXN0X3BhdGgtPnBhdGgpOwogCWludAkJCW9yaWdfdGxp c3RfbGVuZ3RoID0gbGlzdF9sZW5ndGgodGxpc3QpOwogCWJvb2wJCXRsaXN0X3dhc19jaGFuZ2Vk OwpAQCAtMTQ2Myw4ICsxNDYzLDggQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAlwbGFuLT5xdWFsID0gTklM OwogCXBsYW4tPmxlZnR0cmVlID0gTlVMTDsKIAlwbGFuLT5yaWdodHRyZWUgPSBOVUxMOwotCW5v ZGUtPmFwcHJlbGlkcyA9IHJlbC0+cmVsaWRzOwotCW5vZGUtPmNoaWxkX2FwcGVuZF9yZWxpZF9z ZXRzID0gYmVzdF9wYXRoLT5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0czsKKwlub2RlLT5hYi5hcHBy ZWxpZHMgPSByZWwtPnJlbGlkczsKKwlub2RlLT5hYi5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0cyA9 IGJlc3RfcGF0aC0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHM7CiAKIAkvKgogCSAqIENvbXB1dGUg c29ydCBjb2x1bW4gaW5mbywgYW5kIGFkanVzdCBNZXJnZUFwcGVuZCdzIHRsaXN0IGFzIG5lZWRl ZC4KQEAgLTE1NzAsNyArMTU3MCw3IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJfQogCiAJLyogU2V0IGJl bG93IGlmIHdlIGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICov Ci0Jbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IC0xOworCW5vZGUtPmFiLnBhcnRfcHJ1bmVfaW5k ZXggPSAtMTsKIAogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2Vm dWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgpAQCAtMTU4NywxMiArMTU4NywxMiBAQCBj cmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0 aCAqYmVzdF9wYXRoLAogCQlBc3NlcnQoYmVzdF9wYXRoLT5wYXRoLnBhcmFtX2luZm8gPT0gTlVM TCk7CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlub2RlLT5wYXJ0X3BydW5lX2luZGV4 ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJCQkJCSAg YmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKKwkJCW5v ZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwg cmVsLAorCQkJCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJCQkJ CQkJCSBwcnVuZXF1YWwpOwogCX0KIAotCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFuczsKKwlu b2RlLT5hYi5zdWJwbGFucyA9IHN1YnBsYW5zOwogCiAJLyoKIAkgKiBJZiBwcmVwYXJlX3NvcnRf ZnJvbV9wYXRoa2V5cyBhZGRlZCBzb3J0IGNvbHVtbnMsIGJ1dCB3ZSB3ZXJlIHRvbGQgdG8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBmZjBlODc1ZjJhMi4uYWY3Y2VjY2I4 YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE4ODEsMTAgKzE4ODEs MTAgQEAgc2V0X2FwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCSAqIGNoZWNr IHF1YWxzLiAgSWYgaXQncyBnb3QgZXhhY3RseSBvbmUgY2hpbGQgcGxhbiwgdGhlbiBpdCdzIG5v dCBkb2luZwogCSAqIGFueXRoaW5nIHVzZWZ1bCBhdCBhbGwsIGFuZCB3ZSBjYW4gc3RyaXAgaXQg b3V0LgogCSAqLwotCUFzc2VydChhcGxhbi0+cGxhbi5xdWFsID09IE5JTCk7CisJQXNzZXJ0KGFw bGFuLT5hYi5wbGFuLnF1YWwgPT0gTklMKTsKIAogCS8qIEZpcnN0LCB3ZSBnb3R0YSByZWN1cnNl IG9uIHRoZSBjaGlsZHJlbiAqLwotCWZvcmVhY2gobCwgYXBsYW4tPmFwcGVuZHBsYW5zKQorCWZv cmVhY2gobCwgYXBsYW4tPmFiLnN1YnBsYW5zKQogCXsKIAkJbGZpcnN0KGwpID0gc2V0X3BsYW5f cmVmcyhyb290LCAoUGxhbiAqKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKIAl9CkBAIC0xODk3LDEx ICsxODk3LDExIEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkg KiBwbGFuIG1heSBleGVjdXRlIHRoZSBub24tcGFyYWxsZWwgYXdhcmUgY2hpbGQgbXVsdGlwbGUg dGltZXMuICAoSWYgeW91CiAJICogY2hhbmdlIHRoZXNlIHJ1bGVzLCB1cGRhdGUgY3JlYXRlX2Fw cGVuZF9wYXRoIHRvIG1hdGNoLikKIAkgKi8KLQlpZiAobGlzdF9sZW5ndGgoYXBsYW4tPmFwcGVu ZHBsYW5zKSA9PSAxKQorCWlmIChsaXN0X2xlbmd0aChhcGxhbi0+YWIuc3VicGxhbnMpID09IDEp CiAJewotCQlQbGFuCSAgICpwID0gKFBsYW4gKikgbGluaXRpYWwoYXBsYW4tPmFwcGVuZHBsYW5z KTsKKwkJUGxhbgkgICAqcCA9IChQbGFuICopIGxpbml0aWFsKGFwbGFuLT5hYi5zdWJwbGFucyk7 CiAKLQkJaWYgKHAtPnBhcmFsbGVsX2F3YXJlID09IGFwbGFuLT5wbGFuLnBhcmFsbGVsX2F3YXJl KQorCQlpZiAocC0+cGFyYWxsZWxfYXdhcmUgPT0gYXBsYW4tPmFiLnBsYW4ucGFyYWxsZWxfYXdh cmUpCiAJCXsKIAkJCVBsYW4JICAgKnJlc3VsdDsKIApAQCAtMTkwOSw3ICsxOTA5LDcgQEAgc2V0 X2FwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJCQkvKiBSZW1lbWJlciB0 aGF0IHdlIHJlbW92ZWQgYW4gQXBwZW5kICovCiAJCQlyZWNvcmRfZWxpZGVkX25vZGUocm9vdC0+ Z2xvYiwgcC0+cGxhbl9ub2RlX2lkLCBUX0FwcGVuZCwKLQkJCQkJCQkgICBvZmZzZXRfcmVsaWRf c2V0KGFwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KSk7CisJCQkJCQkJICAgb2Zmc2V0X3JlbGlk X3NldChhcGxhbi0+YWIuYXBwcmVsaWRzLCBydG9mZnNldCkpOwogCiAJCQlyZXR1cm4gcmVzdWx0 OwogCQl9CkBAIC0xOTIyLDE5ICsxOTIyLDE5IEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFu bmVySW5mbyAqcm9vdCwKIAkgKi8KIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAq KSBhcGxhbiwgcnRvZmZzZXQpOwogCi0JYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9z ZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWFwbGFuLT5hYi5hcHByZWxpZHMgPSBv ZmZzZXRfcmVsaWRfc2V0KGFwbGFuLT5hYi5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAogCS8qCiAJ ICogQWRkIFBhcnRpdGlvblBydW5lSW5mbywgaWYgYW55LCB0byBQbGFubmVyR2xvYmFsIGFuZCB1 cGRhdGUgdGhlIGluZGV4LgogCSAqIEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQg aW4gaXQgdG8gYWRkIHRoZSBvZmZzZXQuCiAJICovCi0JaWYgKGFwbGFuLT5wYXJ0X3BydW5lX2lu ZGV4ID49IDApCi0JCWFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KLQkJCXJlZ2lzdGVyX3BhcnRw cnVuZWluZm8ocm9vdCwgYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsKKwlpZiAo YXBsYW4tPmFiLnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwkJYXBsYW4tPmFiLnBhcnRfcHJ1bmVf aW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhyb290LCBhcGxhbi0+YWIucGFydF9w cnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRv IGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KLQlBc3NlcnQoYXBsYW4tPnBsYW4ubGVmdHRy ZWUgPT0gTlVMTCk7Ci0JQXNzZXJ0KGFwbGFuLT5wbGFuLnJpZ2h0dHJlZSA9PSBOVUxMKTsKKwlB c3NlcnQoYXBsYW4tPmFiLnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CisJQXNzZXJ0KGFwbGFuLT5h Yi5wbGFuLnJpZ2h0dHJlZSA9PSBOVUxMKTsKIAogCXJldHVybiAoUGxhbiAqKSBhcGxhbjsKIH0K QEAgLTE5NTgsMTAgKzE5NTgsMTAgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5l ckluZm8gKnJvb3QsCiAJICogb3IgY2hlY2sgcXVhbHMuICBJZiBpdCdzIGdvdCBleGFjdGx5IG9u ZSBjaGlsZCBwbGFuLCB0aGVuIGl0J3Mgbm90CiAJICogZG9pbmcgYW55dGhpbmcgdXNlZnVsIGF0 IGFsbCwgYW5kIHdlIGNhbiBzdHJpcCBpdCBvdXQuCiAJICovCi0JQXNzZXJ0KG1wbGFuLT5wbGFu LnF1YWwgPT0gTklMKTsKKwlBc3NlcnQobXBsYW4tPmFiLnBsYW4ucXVhbCA9PSBOSUwpOwogCiAJ LyogRmlyc3QsIHdlIGdvdHRhIHJlY3Vyc2Ugb24gdGhlIGNoaWxkcmVuICovCi0JZm9yZWFjaChs LCBtcGxhbi0+bWVyZ2VwbGFucykKKwlmb3JlYWNoKGwsIG1wbGFuLT5hYi5zdWJwbGFucykKIAl7 CiAJCWxmaXJzdChsKSA9IHNldF9wbGFuX3JlZnMocm9vdCwgKFBsYW4gKikgbGZpcnN0KGwpLCBy dG9mZnNldCk7CiAJfQpAQCAtMTk3NSwxMSArMTk3NSwxMSBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBtdWx0aXBsZSB0aW1lcy4gIChJZiB5b3Ug Y2hhbmdlIHRoZXNlIHJ1bGVzLCB1cGRhdGUKIAkgKiBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BhdGgg dG8gbWF0Y2guKQogCSAqLwotCWlmIChsaXN0X2xlbmd0aChtcGxhbi0+bWVyZ2VwbGFucykgPT0g MSkKKwlpZiAobGlzdF9sZW5ndGgobXBsYW4tPmFiLnN1YnBsYW5zKSA9PSAxKQogCXsKLQkJUGxh bgkgICAqcCA9IChQbGFuICopIGxpbml0aWFsKG1wbGFuLT5tZXJnZXBsYW5zKTsKKwkJUGxhbgkg ICAqcCA9IChQbGFuICopIGxpbml0aWFsKG1wbGFuLT5hYi5zdWJwbGFucyk7CiAKLQkJaWYgKHAt PnBhcmFsbGVsX2F3YXJlID09IG1wbGFuLT5wbGFuLnBhcmFsbGVsX2F3YXJlKQorCQlpZiAocC0+ cGFyYWxsZWxfYXdhcmUgPT0gbXBsYW4tPmFiLnBsYW4ucGFyYWxsZWxfYXdhcmUpCiAJCXsKIAkJ CVBsYW4JICAgKnJlc3VsdDsKIApAQCAtMTk4Nyw3ICsxOTg3LDcgQEAgc2V0X21lcmdlYXBwZW5k X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkJCS8qIFJlbWVtYmVyIHRoYXQgd2Ug cmVtb3ZlZCBhIE1lcmdlQXBwZW5kICovCiAJCQlyZWNvcmRfZWxpZGVkX25vZGUocm9vdC0+Z2xv YiwgcC0+cGxhbl9ub2RlX2lkLCBUX01lcmdlQXBwZW5kLAotCQkJCQkJCSAgIG9mZnNldF9yZWxp ZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpKTsKKwkJCQkJCQkgICBvZmZzZXRfcmVs aWRfc2V0KG1wbGFuLT5hYi5hcHByZWxpZHMsIHJ0b2Zmc2V0KSk7CiAKIAkJCXJldHVybiByZXN1 bHQ7CiAJCX0KQEAgLTIwMDAsMTkgKzIwMDAsMTkgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJICovCiAJc2V0X2R1bW15X3RsaXN0X3JlZmVyZW5jZXMo KFBsYW4gKikgbXBsYW4sIHJ0b2Zmc2V0KTsKIAotCW1wbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRf cmVsaWRfc2V0KG1wbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKKwltcGxhbi0+YWIuYXBwcmVs aWRzID0gb2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YWIuYXBwcmVsaWRzLCBydG9mZnNldCk7CiAK IAkvKgogCSAqIEFkZCBQYXJ0aXRpb25QcnVuZUluZm8sIGlmIGFueSwgdG8gUGxhbm5lckdsb2Jh bCBhbmQgdXBkYXRlIHRoZSBpbmRleC4KIAkgKiBBbHNvIHVwZGF0ZSB0aGUgUlQgaW5kZXhlcyBw cmVzZW50IGluIGl0IHRvIGFkZCB0aGUgb2Zmc2V0LgogCSAqLwotCWlmIChtcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQotCQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9Ci0JCQlyZWdpc3Rl cl9wYXJ0cHJ1bmVpbmZvKHJvb3QsIG1wbGFuLT5wYXJ0X3BydW5lX2luZGV4LCBydG9mZnNldCk7 CisJaWYgKG1wbGFuLT5hYi5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJCW1wbGFuLT5hYi5wYXJ0 X3BydW5lX2luZGV4ID0KKwkJCXJlZ2lzdGVyX3BhcnRwcnVuZWluZm8ocm9vdCwgbXBsYW4tPmFi LnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVj dXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUgLi4uICovCi0JQXNzZXJ0KG1wbGFuLT5wbGFu LmxlZnR0cmVlID09IE5VTEwpOwotCUFzc2VydChtcGxhbi0+cGxhbi5yaWdodHRyZWUgPT0gTlVM TCk7CisJQXNzZXJ0KG1wbGFuLT5hYi5wbGFuLmxlZnR0cmVlID09IE5VTEwpOworCUFzc2VydCht cGxhbi0+YWIucGxhbi5yaWdodHRyZWUgPT0gTlVMTCk7CiAKIAlyZXR1cm4gKFBsYW4gKikgbXBs YW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3Qu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3N1YnNlbGVjdC5jCmluZGV4IGNjZWMxZWFh N2ZlLi5lMjFlYjBmODcyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c3Vic2VsZWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMK QEAgLTI5MDQsNyArMjkwNCw3IEBAIGZpbmFsaXplX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFBs YW4gKnBsYW4sCiAKIAkJY2FzZSBUX0FwcGVuZDoKIAkJCXsKLQkJCQlmb3JlYWNoKGwsICgoQXBw ZW5kICopIHBsYW4pLT5hcHBlbmRwbGFucykKKwkJCQlmb3JlYWNoKGwsICgoQXBwZW5kICopIHBs YW4pLT5hYi5zdWJwbGFucykKIAkJCQl7CiAJCQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJ Ym1zX2FkZF9tZW1iZXJzKGNvbnRleHQucGFyYW1pZHMsCkBAIC0yOTE5LDcgKzI5MTksNyBAQCBm aW5hbGl6ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLAogCiAJCWNhc2UgVF9N ZXJnZUFwcGVuZDoKIAkJCXsKLQkJCQlmb3JlYWNoKGwsICgoTWVyZ2VBcHBlbmQgKikgcGxhbikt Pm1lcmdlcGxhbnMpCisJCQkJZm9yZWFjaChsLCAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hYi5z dWJwbGFucykKIAkJCQl7CiAJCQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJYm1zX2FkZF9t ZW1iZXJzKGNvbnRleHQucGFyYW1pZHMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg ZTVmMmI2MDgyY2UuLjc1ZTBmZTRkNDcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBA IC01NTIwLDkgKzU1MjAsOSBAQCBzZXRfZGVwYXJzZV9wbGFuKGRlcGFyc2VfbmFtZXNwYWNlICpk cG5zLCBQbGFuICpwbGFuKQogCSAqIG5hdHVyYWwgY2hvaWNlLgogCSAqLwogCWlmIChJc0EocGxh biwgQXBwZW5kKSkKLQkJZHBucy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoQXBwZW5kICopIHBs YW4pLT5hcHBlbmRwbGFucyk7CisJCWRwbnMtPm91dGVyX3BsYW4gPSBsaW5pdGlhbCgoKEFwcGVu ZCAqKSBwbGFuKS0+YWIuc3VicGxhbnMpOwogCWVsc2UgaWYgKElzQShwbGFuLCBNZXJnZUFwcGVu ZCkpCi0JCWRwbnMtPm91dGVyX3BsYW4gPSBsaW5pdGlhbCgoKE1lcmdlQXBwZW5kICopIHBsYW4p LT5tZXJnZXBsYW5zKTsKKwkJZHBucy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoTWVyZ2VBcHBl bmQgKikgcGxhbiktPmFiLnN1YnBsYW5zKTsKIAllbHNlCiAJCWRwbnMtPm91dGVyX3BsYW4gPSBv dXRlclBsYW4ocGxhbik7CiAKQEAgLTg0OTgsMTAgKzg0OTgsMTAgQEAgcmVzb2x2ZV9zcGVjaWFs X3Zhcm5vKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAogCQlpZiAoSXNB KGRwbnMtPnBsYW4sIEFwcGVuZCkpCiAJCQljb250ZXh0LT5hcHBlbmRwYXJlbnRzID0gYm1zX3Vu aW9uKGNvbnRleHQtPmFwcGVuZHBhcmVudHMsCi0JCQkJCQkJCQkJCSAgICgoQXBwZW5kICopIGRw bnMtPnBsYW4pLT5hcHByZWxpZHMpOworCQkJCQkJCQkJCQkgICAoKEFwcGVuZCAqKSBkcG5zLT5w bGFuKS0+YWIuYXBwcmVsaWRzKTsKIAkJZWxzZSBpZiAoSXNBKGRwbnMtPnBsYW4sIE1lcmdlQXBw ZW5kKSkKIAkJCWNvbnRleHQtPmFwcGVuZHBhcmVudHMgPSBibXNfdW5pb24oY29udGV4dC0+YXBw ZW5kcGFyZW50cywKLQkJCQkJCQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+ YXBwcmVsaWRzKTsKKwkJCQkJCQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+ YWIuYXBwcmVsaWRzKTsKIAogCQlwdXNoX2NoaWxkX3BsYW4oZHBucywgZHBucy0+b3V0ZXJfcGxh biwgJnNhdmVfZHBucyk7CiAJCXJlc29sdmVfc3BlY2lhbF92YXJubygoTm9kZSAqKSB0bGUtPmV4 cHIsIGNvbnRleHQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDY4NGUzOThmODI0Li43MmI4MGE0 YTk3NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE0ODQsNiArMTQ4NCwzOSBAQCB0eXBlZGVm IHN0cnVjdCBNb2RpZnlUYWJsZVN0YXRlCiAJTGlzdAkgICAqbXRfbWVyZ2VKb2luQ29uZGl0aW9u czsKIH0gTW9kaWZ5VGFibGVTdGF0ZTsKIAorLyogLS0tLS0tLS0tLS0tLS0tLQorICoJIEFwcGVu ZEJhc2VTdGF0ZSBpbmZvcm1hdGlvbgorICoKKyAqCQlDb21tb24gYmFzZSBmb3IgQXBwZW5kU3Rh dGUgYW5kIE1lcmdlQXBwZW5kU3RhdGUuCisgKgkJQ29udGFpbnMgZmllbGRzIHNoYXJlZCBieSBi b3RoIG5vZGUgdHlwZXM6IHRoZSBhcnJheSBvZiBzdWJwbGFuCisgKgkJc3RhdGVzLCBhc3luY2hy b25vdXMgZXhlY3V0aW9uIGluZnJhc3RydWN0dXJlLCBhbmQgcGFydGl0aW9uCisgKgkJcHJ1bmlu ZyBzdGF0ZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwZW5k QmFzZVN0YXRlCit7CisJcGdfbm9kZV9hdHRyKGFic3RyYWN0KQorCisJUGxhblN0YXRlCXBzOwkJ CQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLworCVBsYW5TdGF0ZSAqKnBsYW5zOwkJ CS8qIGFycmF5IG9mIFBsYW5TdGF0ZXMgZm9yIG15IGlucHV0cyAqLworCWludAkJCW5wbGFuczsK KworCS8qIEFzeW5jaHJvbm91cyBleGVjdXRpb24gc3RhdGUgKi8KKwlCaXRtYXBzZXQgICphc3lu Y3BsYW5zOwkJLyogYXN5bmNocm9ub3VzIHBsYW5zIGluZGV4ZXMgKi8KKwlpbnQJCQluYXN5bmNw bGFuczsJLyogIyBvZiBhc3luY2hyb25vdXMgcGxhbnMgKi8KKwlBc3luY1JlcXVlc3QgKiphc3lu Y3JlcXVlc3RzOwkvKiBhcnJheSBvZiBBc3luY1JlcXVlc3RzICovCisJVHVwbGVUYWJsZVNsb3Qg Kiphc3luY3Jlc3VsdHM7CS8qIHVucmV0dXJuZWQgcmVzdWx0cyBvZiBhc3luYyBwbGFucyAqLwor CUJpdG1hcHNldCAgKm5lZWRyZXF1ZXN0OwkvKiBhc3luY2hyb25vdXMgcGxhbnMgbmVlZGluZyBh IG5ldyByZXF1ZXN0ICovCisJc3RydWN0IFdhaXRFdmVudFNldCAqZXZlbnRzZXQ7CS8qIFdhaXRF dmVudFNldCB1c2VkIHRvIGNvbmZpZ3VyZSBmaWxlCisJCQkJCQkJCQkgKiBkZXNjcmlwdG9yIHdh aXQgZXZlbnRzICovCisKKwkvKiBQYXJ0aXRpb24gcHJ1bmluZyBzdGF0ZSAqLworCXN0cnVjdCBQ YXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZV9zdGF0ZTsKKwlib29sCQl2YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkOwkvKiBpcyB2YWxpZF9hc3luY3BsYW5zIHZhbGlkPyAqLworCUJpdG1hcHNldCAg KnZhbGlkX3N1YnBsYW5zOworCUJpdG1hcHNldCAgKnZhbGlkX2FzeW5jcGxhbnM7CS8qIHZhbGlk IGFzeW5jaHJvbm91cyBwbGFucyBpbmRleGVzICovCit9IEFwcGVuZEJhc2VTdGF0ZTsKKwogLyog LS0tLS0tLS0tLS0tLS0tLQogICoJIEFwcGVuZFN0YXRlIGluZm9ybWF0aW9uCiAgKgpAQCAtMTUw NSwzMCArMTUzOCwyMSBAQCBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAogc3RydWN0IEFw cGVuZFN0YXRlCiB7Ci0JUGxhblN0YXRlCXBzOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9k ZVRhZyAqLwotCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zOwkvKiBhcnJheSBvZiBQbGFuU3RhdGVz IGZvciBteSBpbnB1dHMgKi8KLQlpbnQJCQlhc19ucGxhbnM7CisJQXBwZW5kQmFzZVN0YXRlIGFz OwkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2RlVGFnICovCisKIAlpbnQJCQlhc193aGljaHBs YW47CiAJYm9vbAkJYXNfYmVndW47CQkvKiBmYWxzZSBtZWFucyBuZWVkIHRvIGluaXRpYWxpemUg Ki8KLQlCaXRtYXBzZXQgICphc19hc3luY3BsYW5zOwkvKiBhc3luY2hyb25vdXMgcGxhbnMgaW5k ZXhlcyAqLwotCWludAkJCWFzX25hc3luY3BsYW5zOyAvKiAjIG9mIGFzeW5jaHJvbm91cyBwbGFu cyAqLwotCUFzeW5jUmVxdWVzdCAqKmFzX2FzeW5jcmVxdWVzdHM7CS8qIGFycmF5IG9mIEFzeW5j UmVxdWVzdHMgKi8KLQlUdXBsZVRhYmxlU2xvdCAqKmFzX2FzeW5jcmVzdWx0czsJLyogdW5yZXR1 cm5lZCByZXN1bHRzIG9mIGFzeW5jIHBsYW5zICovCi0JaW50CQkJYXNfbmFzeW5jcmVzdWx0czsJ LyogIyBvZiB2YWxpZCBlbnRyaWVzIGluIGFzX2FzeW5jcmVzdWx0cyAqLworCWludAkJCWFzX25h c3luY3Jlc3VsdHM7CS8qICMgb2YgdmFsaWQgZW50cmllcyBpbiBhc3luY3Jlc3VsdHMgKi8KIAli b29sCQlhc19zeW5jZG9uZTsJLyogdHJ1ZSBpZiBhbGwgc3luY2hyb25vdXMgcGxhbnMgZG9uZSBp bgogCQkJCQkJCQkgKiBhc3luY2hyb25vdXMgbW9kZSwgZWxzZSBmYWxzZSAqLwogCWludAkJCWFz X25hc3luY3JlbWFpbjsJLyogIyBvZiByZW1haW5pbmcgYXN5bmNocm9ub3VzIHBsYW5zICovCi0J Qml0bWFwc2V0ICAqYXNfbmVlZHJlcXVlc3Q7IC8qIGFzeW5jaHJvbm91cyBwbGFucyBuZWVkaW5n IGEgbmV3IHJlcXVlc3QgKi8KLQlzdHJ1Y3QgV2FpdEV2ZW50U2V0ICphc19ldmVudHNldDsJLyog V2FpdEV2ZW50U2V0IHVzZWQgdG8gY29uZmlndXJlIGZpbGUKLQkJCQkJCQkJCQkgKiBkZXNjcmlw dG9yIHdhaXQgZXZlbnRzICovCi0JaW50CQkJYXNfZmlyc3RfcGFydGlhbF9wbGFuOwkvKiBJbmRl eCBvZiAnYXBwZW5kcGxhbnMnIGNvbnRhaW5pbmcKKwlpbnQJCQlhc19maXJzdF9wYXJ0aWFsX3Bs YW47CS8qIEluZGV4IG9mICdhcy5wbGFucycgY29udGFpbmluZwogCQkJCQkJCQkJCSAqIHRoZSBm aXJzdCBwYXJ0aWFsIHBsYW4gKi8KKworCS8qIFBhcmFsbGVsIGFwcGVuZCBzcGVjaWZpYyAqLwog CVBhcmFsbGVsQXBwZW5kU3RhdGUgKmFzX3BzdGF0ZTsgLyogcGFyYWxsZWwgY29vcmRpbmF0aW9u IGluZm8gKi8KIAlTaXplCQlwc3RhdGVfbGVuOwkJLyogc2l6ZSBvZiBwYXJhbGxlbCBjb29yZGlu YXRpb24gaW5mbyAqLwotCXN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlICphc19wcnVuZV9zdGF0 ZTsKLQlib29sCQlhc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkOwkvKiBpcyBhc192YWxpZF9z dWJwbGFucyB2YWxpZD8gKi8KLQlCaXRtYXBzZXQgICphc192YWxpZF9zdWJwbGFuczsKLQlCaXRt YXBzZXQgICphc192YWxpZF9hc3luY3BsYW5zOwkvKiB2YWxpZCBhc3luY2hyb25vdXMgcGxhbnMg aW5kZXhlcyAqLworCiAJYm9vbAkJKCpjaG9vc2VfbmV4dF9zdWJwbGFuKSAoQXBwZW5kU3RhdGUg Kik7CiB9OwogCkBAIC0xNTQ5LDE2ICsxNTczLDEzIEBAIHN0cnVjdCBBcHBlbmRTdGF0ZQogICov CiB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZFN0YXRlCiB7Ci0JUGxhblN0YXRlCXBzOwkJCQkv KiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLwotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnM7 CQkvKiBhcnJheSBvZiBQbGFuU3RhdGVzIGZvciBteSBpbnB1dHMgKi8KLQlpbnQJCQltc19ucGxh bnM7CisJQXBwZW5kQmFzZVN0YXRlIGFzOwkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2RlVGFn ICovCisKIAlpbnQJCQltc19ua2V5czsKIAlTb3J0U3VwcG9ydCBtc19zb3J0a2V5czsJLyogYXJy YXkgb2YgbGVuZ3RoIG1zX25rZXlzICovCiAJVHVwbGVUYWJsZVNsb3QgKiptc19zbG90czsJLyog YXJyYXkgb2YgbGVuZ3RoIG1zX25wbGFucyAqLwogCXN0cnVjdCBiaW5hcnloZWFwICptc19oZWFw OyAvKiBiaW5hcnkgaGVhcCBvZiBzbG90IGluZGljZXMgKi8KIAlib29sCQltc19pbml0aWFsaXpl ZDsgLyogYXJlIHN1YnBsYW5zIHN0YXJ0ZWQ/ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lU3Rh dGUgKm1zX3BydW5lX3N0YXRlOwotCUJpdG1hcHNldCAgKm1zX3ZhbGlkX3N1YnBsYW5zOwogfSBN ZXJnZUFwcGVuZFN0YXRlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CmluZGV4IGUyYzAwNTc2ZDQxLi5lNjFmNzYyMDhiNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAg LTM4OSwzOCArMzg5LDQ4IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiBzdHJ1Y3QgUGFy dGl0aW9uUHJ1bmVJbmZvOwkJLyogZm9yd2FyZCByZWZlcmVuY2UgdG8gc3RydWN0IGJlbG93ICov CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLSAqCSBBcHBlbmQgbm9kZSAtCi0gKgkJR2VuZXJhdGUg dGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHJlc3VsdHMgb2Ygc3ViLXBsYW5zLgorICoJIEFwcGVu ZEJhc2Ugbm9kZSAtCisgKgkJQ29tbW9uIGJhc2UgZm9yIEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQg cGxhbiBub2Rlcy4KKyAqCQlDb250YWlucyBmaWVsZHMgc2hhcmVkIGJ5IGJvdGggbm9kZSB0eXBl czogdGhlIGxpc3Qgb2Ygc3VicGxhbnMsCisgKgkJYXBwZW5kcmVsIGlkZW50aWZpZXJzLCBhbmQg cnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaW5mby4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAq LwotdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCit0eXBlZGVmIHN0cnVjdCBBcHBlbmRCYXNlCiB7Ci0J UGxhbgkJcGxhbjsKKwlwZ19ub2RlX2F0dHIoYWJzdHJhY3QpCiAKLQkvKiBSVElzIG9mIGFwcGVu ZHJlbChzKSBmb3JtZWQgYnkgdGhpcyBub2RlICovCi0JQml0bWFwc2V0ICAqYXBwcmVsaWRzOwor CVBsYW4JCXBsYW47CQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KKwlCaXRtYXBz ZXQgICphcHByZWxpZHM7CQkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBmb3JtZWQgYnkgdGhpcyBu b2RlICovCisJTGlzdAkgICAqY2hpbGRfYXBwZW5kX3JlbGlkX3NldHM7CS8qIHNldHMgb2YgUlRJ cyBvZiBhcHBlbmRyZWxzCisJCQkJCQkJCQkJCSAqIGNvbnNvbGlkYXRlZCBpbnRvIHRoaXMgbm9k ZSAqLworCUxpc3QJICAgKnN1YnBsYW5zOwkJLyogTGlzdCBvZiBQbGFucyAoZm9ybWVybHkKKwkJ CQkJCQkJICogYXBwZW5kcGxhbnMvbWVyZ2VwbGFucykgKi8KIAotCS8qIHNldHMgb2YgUlRJcyBv ZiBhcHBlbmRyZWxzIGNvbnNvbGlkYXRlZCBpbnRvIHRoaXMgbm9kZSAqLwotCUxpc3QJICAgKmNo aWxkX2FwcGVuZF9yZWxpZF9zZXRzOworCS8qCisJICogSW5kZXggaW50byBQbGFubmVkU3RtdC5w YXJ0UHJ1bmVJbmZvcyBhbmQgcGFyYWxsZWwgbGlzdHMgaW4gRVN0YXRlOgorCSAqIGVzX3BhcnRf cHJ1bmVfc3RhdGVzIGFuZCBlc19wYXJ0X3BydW5lX3Jlc3VsdHMuIFNldCB0byAtMSBpZiBubwor CSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgdXNlZC4KKwkgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2lu ZGV4OworfSBBcHBlbmRCYXNlOwogCi0JLyogcGxhbnMgdG8gcnVuICovCi0JTGlzdAkgICAqYXBw ZW5kcGxhbnM7CisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkgQXBwZW5kIG5vZGUgLQorICoJCUdl bmVyYXRlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSByZXN1bHRzIG9mIHN1Yi1wbGFucy4KKyAq IC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCit7CisJQXBwZW5k QmFzZQlhYjsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KIAogCS8qICMgb2Yg YXN5bmNocm9ub3VzIHBsYW5zICovCiAJaW50CQkJbmFzeW5jcGxhbnM7CiAKIAkvKgotCSAqIEFs bCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24tcGFydGlhbCBwbGFu cy4gQWxsCi0JICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253YXJkcyBhcmUgcGFy dGlhbCBwbGFucy4KKwkgKiBBbGwgJ3N1YnBsYW5zJyBwcmVjZWRpbmcgdGhpcyBpbmRleCBhcmUg bm9uLXBhcnRpYWwgcGxhbnMuIEFsbAorCSAqICdzdWJwbGFucycgZnJvbSB0aGlzIGluZGV4IG9u d2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFu OwotCi0JLyoKLQkgKiBJbmRleCBpbnRvIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGFuZCBw YXJhbGxlbCBsaXN0cyBpbiBFU3RhdGU6Ci0JICogZXNfcGFydF9wcnVuZV9zdGF0ZXMgYW5kIGVz X3BhcnRfcHJ1bmVfcmVzdWx0cy4gU2V0IHRvIC0xIGlmIG5vCi0JICogcnVuLXRpbWUgcHJ1bmlu ZyBpcyB1c2VkLgotCSAqLwotCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IEFwcGVuZDsKIAog LyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDMwLDE2ICs0NDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBB cHBlbmQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmQKIHsKLQlQbGFuCQlwbGFuOwot Ci0JLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLwotCUJpdG1h cHNldCAgKmFwcHJlbGlkczsKLQotCS8qIHNldHMgb2YgUlRJcyBvZiBhcHBlbmRyZWxzIGNvbnNv bGlkYXRlZCBpbnRvIHRoaXMgbm9kZSAqLwotCUxpc3QJICAgKmNoaWxkX2FwcGVuZF9yZWxpZF9z ZXRzOwotCi0JLyogcGxhbnMgdG8gcnVuICovCi0JTGlzdAkgICAqbWVyZ2VwbGFuczsKKwlBcHBl bmRCYXNlCWFiOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLwogCiAJLyogdGhl c2UgZmllbGRzIGFyZSBqdXN0IGxpa2UgdGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6 ICovCiAKQEAgLTQ1NywxMyArNDU4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmQKIAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwotCi0JLyoKLQkgKiBJbmRleCBpbnRv IFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGFuZCBwYXJhbGxlbCBsaXN0cyBpbiBFU3RhdGU6 Ci0JICogZXNfcGFydF9wcnVuZV9zdGF0ZXMgYW5kIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gU2V0 IHRvIC0xIGlmIG5vCi0JICogcnVuLXRpbWUgcHJ1bmluZyBpcyB1c2VkLgotCSAqLwotCWludAkJ CXBhcnRfcHJ1bmVfaW5kZXg7CiB9IE1lcmdlQXBwZW5kOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhlOWMwNjU0N2Q2Li4xNTkwODNkNGU2NiAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNiw2ICsxMjYsOCBAQCBBbmxFeHByRGF0 YQogQW5sSW5kZXhEYXRhCiBBbnlBcnJheVR5cGUKIEFwcGVuZAorQXBwZW5kQmFzZQorQXBwZW5k QmFzZVN0YXRlCiBBcHBlbmRQYXRoCiBBcHBlbmRQYXRoSW5wdXQKIEFwcGVuZFJlbEluZm8KLS0g CjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000ced44b064ead416c--