From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E989947EBC for ; Sun, 31 Dec 2023 08:20:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 29A7668CCCB; Sun, 31 Dec 2023 10:20:09 +0200 (EET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2068.outbound.protection.outlook.com [40.92.52.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F0E8268CCAF for ; Sun, 31 Dec 2023 10:20:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N+EgstoeDSC1skxVLtVw0q5y9Oaswb+wXzaFD/1n582yqPhAYy4H4LA+uvtI9fPhnRu/L9ogjpVilXv1NdaK9ytiQ88XcS55XsSM2sIB5hw7D7Lf2eyVkRQxAH23II0a73eSdAbbnlZ9h/Yu/sV04vZONdtz+RSHD6kAh9284P6UKTClXO1wlJO0oCG5DE8kf32EKATSEpxmCDLkesxSXklp0s/VPtgOkkcK3XeGGM06I1oMzOsUQzuHq5yFUTutSMAsTZQByr6T4WG3d/EEL8/yQd+7C08w5o28jVGHbI1u4i0JhA4umXVDwb+UGxHw0X16+ITyjA3J7KpvPPYLTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=osjIk5UhfAtn1p3Vw0//DPkNtahaqHM3FX+JXCY9S6Q=; b=k/+ZYd4BHVyD/W3KeZBrUTExsn8jlmiBJxgaJh1bFAC9z/R4VHMkpnlHZwsnHhB2ubIvD/mWwjpbUKYe55TX7XWb0G17Z+l7G4r3t3T4BSAP5Ss2DurNg2z3H5ZMR7o0tGw5bUzP2cgkvzVpITzXC+e5dkZvGiZgi42m8l75aGENAjMQUnH2CCCPM8bUgSJuPha/HhyLstaHE+mtoWCxXiIL336GBvZgpHOSMn1GHzqNwh9azzfuheqGnJaNNCyu6K2Mt8cmzmIKm4ie041KO92Ror/DNdPccSjUuspbR6KOtY6wn2fNzjCWwVpbeFsm5ZXA9a0W3Xl8LmUp1pDazA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=osjIk5UhfAtn1p3Vw0//DPkNtahaqHM3FX+JXCY9S6Q=; b=HIqrlQBOW2RJz8hZUwuALy6whp6zBPAMTHgUFtQGmBBTOufmAV2at8MCbrDowJWQtS9h41BXoZsz6Jyu1iDFR8NLV6zIOKK0BQvHejy0qFohMwy2zW26f+Z/Vbid9IJ6vWlCXt2MoxaWKdhDwiud7n8VJrGo+dg8kbepl2dMeQoo/ExiuCg3VaIjSYRS3jpYcYvgbpxFBr67BHaLq/XNiOUJLYRM8Chuk2kWxEpTIXLan0p3H3RkBbw2GVJFzWbgLpVzXBhiuZek9W3vmruGqd6mfQCzIr04vDaDuzLcAADNVhwQxIjFJsFXvSHER/zElJ/ty9EMsYgCH7GTXF/XBw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by JH0PR06MB6367.apcprd06.prod.outlook.com (2603:1096:990:c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.21; Sun, 31 Dec 2023 08:19:46 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7%6]) with mapi id 15.20.7135.023; Sun, 31 Dec 2023 08:19:46 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 Dec 2023 16:18:48 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231231081858.1704-1-nuomi2021@gmail.com> References: <20231231081858.1704-1-nuomi2021@gmail.com> X-TMN: [U+Lb/bS3MVTVNRsNdcwjhTYZnmqKqaEF] X-ClientProxiedBy: SI2PR02CA0039.apcprd02.prod.outlook.com (2603:1096:4:196::9) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20231231081858.1704-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|JH0PR06MB6367:EE_ X-MS-Office365-Filtering-Correlation-Id: cb5c2088-d0af-42b3-35c3-08dc09d93f74 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6G4zUqss7oSBrOzSdax5CLddALBSt3O3uQ7BT7/P7FMb+SzLTBOPA2CeXujHnjipWlW4NG9L6MkqPk5vnYHSam+Z6hoF2ODfnnOOc2futYlM9XdA5dUjhDmb6RdUJ33rKsxd3MXY6jEyQF09+sj9FCIGd8J+aoPZzheaLLtt+rJ1FqomaId+uGZViNOoP/celsf2x1vTgoSv0lhPjOUJyxNlj4dYrwqCgdyBTR1H9UXczO/KtTS+Ab//oX4Por6l2FIEeWXyBy4Or3A98YtRj4pPYfkfETr5OH1veKQH40UcIiCH4Wpv7IutYraCjY5yt+dx43yTgtF1yySuaAi1KgUloMuv+gEj4/tNOI0Uhw7LleeGWrGQWivdyQS1Vt1wZii8QO1h6KtB0KNxScGsmoznZRifNzrQUKdydtGDTjWbx7cpNQBGE15fksTTG9Fp5uXCER3I39DF508Cg23+sHJ7eTahNDCxPCrUC/JVWg7S3ogxz7G+ppNJ9xfSCJaz7xhxCaC8g9rwzawKujm+9zYRfeKM9ra/5I0mxAq6lKCcdTwfoqJGyEE+KXgm8Act4rY++J1sEklN77E31iC2oak/x/sMaRrB+tRLMXaWKfRJ1I2nqbajYpOVCroriNtT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QTA2QnB5LzFPOENzWEoyNWJwN1JMRFdxVHBzbkhGb29zUHZobzFZLzZaNVBI?= =?utf-8?B?c1lvTWgvdndlV0MxMnVtUmxaKzJ1R3FEMXQ1T1F4RElMTkZKMG1JbFNZKzBO?= =?utf-8?B?SmJWNjgraGQxa0tIWkNKSEtqQjQ3ZUFvaExVc21SUHdIa2VFTTNJNXgySUVQ?= =?utf-8?B?T3V3bStOUm5XWlo3WkNJSUlmQ2t1M1F4ZUZoY1hIT3ByYjFqMlpEMlFaNFQr?= =?utf-8?B?SDZkOE1aZDNpYktDcTdhMnlYMTBKV3g2b2k4amRYRGl5dys0dWN2NVdUeFJK?= =?utf-8?B?RzR6Y3lOS21JVEFNZ2lvdHhYcHk3TWZ6TElvT0w2S2dpQ014dGJoL1dUSDhU?= =?utf-8?B?N3ZFbWpVTzdQdkZDcXhwa1NaWEYwSnVqSmdldmI2NHlFeXAzZzVWdVIxZllJ?= =?utf-8?B?UzNXaFVwUTRwa2Q0c1BXWUxhVGRNTVp4Z2d2ZWNaTkhIVXVoOE96L1FkNnhw?= =?utf-8?B?aGo4OVdHb1RsUVhucVBlUnYyWGFINWtVenRrWGM4WGpqZ0MyMFVkWGtkOTUz?= =?utf-8?B?Skx3Z2Q1SHhpUlhhQWtDOXdVSHFTUmZML3VpUFUyeTduVFhUL2lMUWx3KzBx?= =?utf-8?B?YVRHNmxnUTdQRGt5emNmTWdGREp6Nk5mTENmNnZMQVJuakVxMUhtN3BxUVQx?= =?utf-8?B?aEZWT09zeVR2dmxTZW1kQ2oydHFRaHVBdzV0dHJ3Q3JtcXYxaUY4VjVHbVNY?= =?utf-8?B?M0FHd3BoSWVzelJQbzA1WjkyaTlleDJGUVV2N0NSeWpOWFhtMkxlSEdUWWNw?= =?utf-8?B?aEtwUitZODlLVlNnbzB2UGRzQ2VlTVBEMlhJUE15RWhZUnFRdE9TdXJXbXNp?= =?utf-8?B?Wjd0bTNLQnA1QjZrK29LSzEvVFNManZoODdLTk0xdWJRcUtwM0ZTSTRlREFm?= =?utf-8?B?ZmJTQ0wyakNIRVZTYUh5cWwrNFRVbmR3M29lT0Yrb2ZSQklXOGQ2R01WMUJM?= =?utf-8?B?UzBQOUZnWVpOMkRaakxkOXo5bUdvSGlEdW1qQ0g0REIxbXUrNlNWZCtkTXBz?= =?utf-8?B?Rmc2TVlGRG1pZk9ZZVN6SlI0ZTR5aHIwZ1NMaUpBL2tycDUwM0dsYmxSN3RR?= =?utf-8?B?VXlPRit5MUNZalJ1TVRyZkt1bjRJd1ZNOWw2VWR5U0c2MW1QWnhRci9BZE9a?= =?utf-8?B?R3MwTUk3OE9rK25BTit4ajR5M0RNL1dtZ3pqZmUrbUo0dWovQ0toOFZmZnYv?= =?utf-8?B?MUxsK1F4YnNsMFhjaUdDR0xrRS9Ub1RSNkxYR1hWRi8xRlRKNU9qQ2tVVjBX?= =?utf-8?B?bE9zN2tyQXNjNVZlK0M0VkVDRm5xYjJJRWNUc2NFRCtXcGk0VmdNOXBJOGlk?= =?utf-8?B?ckVIdDNPQi9zenVrNXhEd0hKYWJGZUwrcFdEYnJtV0JZbG0wNlVhUDFxaUUw?= =?utf-8?B?Vi9yS2J5OCtoVkFpbzNwNG42WDJZbUNCZ3J5NktwYWxaTUdJRDZFM2I0SHp6?= =?utf-8?B?S0lHUmVFTjZoSFpRdHBWdWdVTW8rSjFocCtmOVJ0T1VvVGloblZ6MXhNUk1O?= =?utf-8?B?QVMxMzlDM0RVNU9GM0IrVXJueVFwcUowYWVtTUNUM3pGTFF6bmJZU0U5TUh3?= =?utf-8?B?VU5tM09Vcld5aGp6OUtBWEg2a2lEam9uaEVxZ2pQYnNpK0ZNL2dsMzl6REpW?= =?utf-8?B?VXEvQTJyTzlnOXMzbk4yN05YZkF0TVVPSHEvcm9XVUVCQmR3RjErVFFNcVdU?= =?utf-8?Q?7sxnsUFoHuGdZhhcjkbM?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb5c2088-d0af-42b3-35c3-08dc09d93f74 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2023 08:19:46.0103 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR06MB6367 Subject: [FFmpeg-devel] [PATCH v8 03/13] vvcdec: add cabac decoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nuo Mi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgNCArLQogbGli YXZjb2RlYy92dmMvdnZjX2NhYmFjLmMgfCAyNDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmggfCAgMTI2ICsrCiBsaWJhdmNv ZGVjL3Z2Yy92dmNfY3R1LmMgICB8ICAgMzIgKwogbGliYXZjb2RlYy92dmMvdnZjX2N0dS5oICAg fCAgNDY0ICsrKysrKysKIGxpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oICAgIHwgICAgNyArCiA2IGZp bGVzIGNoYW5nZWQsIDMxMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L3Z2Yy92dmNfY3R1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1 LmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvdnZj L01ha2VmaWxlCmluZGV4IGE0ZjZhMGI1OGEuLjIwY2JlOGVhZTEgMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvdnZjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCkBAIC0xLDQg KzEsNiBAQAogY2xlYW46OiAgICAkKFJNKSAkKENMRUFOU1VGRklYRVM6JT1saWJhdmNvZGVjL3Z2 Yy8lKQogCi1PQkpTLSQoQ09ORklHX1ZWQ19ERUNPREVSKSAgICAgICAgICArPSAgdnZjL3Z2Y19k YXRhLm8gICAgICAgICAgXAorT0JKUy0kKENPTkZJR19WVkNfREVDT0RFUikgICAgICAgICAgKz0g IHZ2Yy92dmNfY2FiYWMubyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2dmMvdnZjX2N0dS5vICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnZjL3Z2Y19kYXRhLm8gICAgICAgICAgXAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfcHMubyAgICAgICAgICAgIFwK ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jIGIvbGliYXZjb2RlYy92dmMv dnZjX2NhYmFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDM0MmRm YzM0MgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCkBAIC0w LDAgKzEsMjQ3OCBAQAorLyoKKyAqIFZWQyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0 IChDKSAyMDIxIE51byBNaQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAq CisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLwor I2luY2x1ZGUgImxpYmF2Y29kZWMvY2FiYWNfZnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJ2dmNf Y2FiYWMuaCIKKyNpbmNsdWRlICJ2dmNfY3R1LmgiCisjaW5jbHVkZSAidnZjX2RhdGEuaCIKKwor I2RlZmluZSBDQUJBQ19NQVhfQklOIDMxCisKKyNkZWZpbmUgQ05VIDM1CisKK2VudW0gU3ludGF4 RWxlbWVudCB7CisgICAgQUxGX0NUQl9GTEFHICAgICAgICAgICAgICAgICAgICA9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICBBTEZfVVNFX0FQU19GTEFHICAgICAgICAg ICAgICAgID0gQUxGX0NUQl9GTEFHICAgICAgICAgICAgICAgICAgKyA5LAorICAgIEFMRl9DVEJf Q0NfQ0JfSURDLAorICAgIEFMRl9DVEJfQ0NfQ1JfSURDICAgICAgICAgICAgICAgPSBBTEZfQ1RC X0NDX0NCX0lEQyAgICAgICAgICAgICArIDMsCisgICAgQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAg ICAgICAgICA9IEFMRl9DVEJfQ0NfQ1JfSURDICAgICAgICAgICAgICsgMywKKyAgICBTQU9fTUVS R0VfRkxBRyAgICAgICAgICAgICAgICAgID0gQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAg KyAyLAorICAgIFNBT19UWVBFX0lEWCwKKyAgICBTUExJVF9DVV9GTEFHLAorICAgIFNQTElUX1FU X0ZMQUcgICAgICAgICAgICAgICAgICAgPSBTUExJVF9DVV9GTEFHICAgICAgICAgICAgICAgICAr IDksCisgICAgTVRUX1NQTElUX0NVX1ZFUlRJQ0FMX0ZMQUcgICAgICA9IFNQTElUX1FUX0ZMQUcg ICAgICAgICAgICAgICAgICsgNiwKKyAgICBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICAg ID0gTVRUX1NQTElUX0NVX1ZFUlRJQ0FMX0ZMQUcgICAgKyA1LAorICAgIE5PTl9JTlRFUl9GTEFH ICAgICAgICAgICAgICAgICAgPSBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICArIDQsCisg ICAgQ1VfU0tJUF9GTEFHICAgICAgICAgICAgICAgICAgICA9IE5PTl9JTlRFUl9GTEFHICAgICAg ICAgICAgICAgICsgMiwKKyAgICBQUkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICAgID0gQ1Vf U0tJUF9GTEFHICAgICAgICAgICAgICAgICAgKyAzLAorICAgIFBSRURfTU9ERV9GTEFHICAgICAg ICAgICAgICAgICAgPSBQUkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICArIDMsCisgICAgUFJF RF9NT0RFX1BMVF9GTEFHICAgICAgICAgICAgICA9IFBSRURfTU9ERV9GTEFHICAgICAgICAgICAg ICAgICsgMiwKKyAgICBDVV9BQ1RfRU5BQkxFRF9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFf RkxBRywKKyAgICBJTlRSQV9CRFBDTV9MVU1BX0RJUl9GTEFHLAorICAgIElOVFJBX01JUF9GTEFH LAorICAgIElOVFJBX0xVTUFfUkVGX0lEWCAgICAgICAgICAgICAgPSBJTlRSQV9NSVBfRkxBRyAg ICAgICAgICAgICAgICArIDQsCisgICAgSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcgICA9 IElOVFJBX0xVTUFfUkVGX0lEWCAgICAgICAgICAgICsgMiwKKyAgICBJTlRSQV9TVUJQQVJUSVRJ T05TX1NQTElUX0ZMQUcsCisgICAgSU5UUkFfTFVNQV9NUE1fRkxBRywKKyAgICBJTlRSQV9MVU1B X05PVF9QTEFOQVJfRkxBRywKKyAgICBJTlRSQV9CRFBDTV9DSFJPTUFfRkxBRyAgICAgICAgID0g SU5UUkFfTFVNQV9OT1RfUExBTkFSX0ZMQUcgICAgKyAyLAorICAgIElOVFJBX0JEUENNX0NIUk9N QV9ESVJfRkxBRywKKyAgICBDQ0xNX01PREVfRkxBRywKKyAgICBDQ0xNX01PREVfSURYLAorICAg IElOVFJBX0NIUk9NQV9QUkVEX01PREUsCisgICAgR0VORVJBTF9NRVJHRV9GTEFHLAorICAgIElO VEVSX1BSRURfSURDLAorICAgIElOVEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICAgPSBJTlRF Ul9QUkVEX0lEQyAgICAgICAgICAgICAgICArIDYsCisgICAgQ1VfQUZGSU5FX1RZUEVfRkxBRyAg ICAgICAgICAgICA9IElOVEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICsgMywKKyAgICBTWU1f TVZEX0ZMQUcsCisgICAgUkVGX0lEWF9MWCwKKyAgICBNVlBfTFhfRkxBRyAgICAgICAgICAgICAg ICAgICAgID0gUkVGX0lEWF9MWCAgICAgICAgICAgICAgICAgICAgKyAyLAorICAgIEFNVlJfRkxB RywKKyAgICBBTVZSX1BSRUNJU0lPTl9JRFggICAgICAgICAgICAgID0gQU1WUl9GTEFHICAgICAg ICAgICAgICAgICAgICAgKyAyLAorICAgIEJDV19JRFggICAgICAgICAgICAgICAgICAgICAgICAg PSBBTVZSX1BSRUNJU0lPTl9JRFggICAgICAgICAgICArIDMsCisgICAgQ1VfQ09ERURfRkxBRywK KyAgICBDVV9TQlRfRkxBRywKKyAgICBDVV9TQlRfUVVBRF9GTEFHICAgICAgICAgICAgICAgID0g Q1VfU0JUX0ZMQUcgICAgICAgICAgICAgICAgICAgKyAyLAorICAgIENVX1NCVF9IT1JJWk9OVEFM X0ZMQUcsCisgICAgQ1VfU0JUX1BPU19GTEFHICAgICAgICAgICAgICAgICA9IENVX1NCVF9IT1JJ Wk9OVEFMX0ZMQUcgICAgICAgICsgMywKKyAgICBMRk5TVF9JRFgsCisgICAgTVRTX0lEWCAgICAg ICAgICAgICAgICAgICAgICAgICA9IExGTlNUX0lEWCAgICAgICAgICAgICAgICAgICAgICsgMywK KyAgICBDT1BZX0FCT1ZFX1BBTEVUVEVfSU5ESUNFU19GTEFHID0gTVRTX0lEWCAgICAgICAgICAg ICAgICAgICAgICAgKyA0LAorICAgIFBBTEVUVEVfVFJBTlNQT1NFX0ZMQUcsCisgICAgUlVOX0NP UFlfRkxBRywKKyAgICBSRUdVTEFSX01FUkdFX0ZMQUcgICAgICAgICAgICAgID0gUlVOX0NPUFlf RkxBRyAgICAgICAgICAgICAgICAgKyA4LAorICAgIE1NVkRfTUVSR0VfRkxBRyAgICAgICAgICAg ICAgICAgPSBSRUdVTEFSX01FUkdFX0ZMQUcgICAgICAgICAgICArIDIsCisgICAgTU1WRF9DQU5E X0ZMQUcsCisgICAgTU1WRF9ESVNUQU5DRV9JRFgsCisgICAgQ0lJUF9GTEFHLAorICAgIE1FUkdF X1NVQkJMT0NLX0ZMQUcsCisgICAgTUVSR0VfU1VCQkxPQ0tfSURYICAgICAgICAgICAgICA9IE1F UkdFX1NVQkJMT0NLX0ZMQUcgICAgICAgICAgICsgMywKKyAgICBNRVJHRV9JRFgsCisgICAgQUJT X01WRF9HUkVBVEVSMF9GTEFHLAorICAgIEFCU19NVkRfR1JFQVRFUjFfRkxBRywKKyAgICBUVV9Z X0NPREVEX0ZMQUcsCisgICAgVFVfQ0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICA9IFRVX1lf Q09ERURfRkxBRyAgICAgICAgICAgICAgICsgNCwKKyAgICBUVV9DUl9DT0RFRF9GTEFHICAgICAg ICAgICAgICAgID0gVFVfQ0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgKyAyLAorICAgIENVX1FQ X0RFTFRBX0FCUyAgICAgICAgICAgICAgICAgPSBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAg ICArIDMsCisgICAgQ1VfQ0hST01BX1FQX09GRlNFVF9GTEFHICAgICAgICA9IENVX1FQX0RFTFRB X0FCUyAgICAgICAgICAgICAgICsgMiwKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0lEWCwKKyAg ICBUUkFOU0ZPUk1fU0tJUF9GTEFHLAorICAgIFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAg ICAgPSBUUkFOU0ZPUk1fU0tJUF9GTEFHICAgICAgICAgICArIDIsCisgICAgTEFTVF9TSUdfQ09F RkZfWF9QUkVGSVggICAgICAgICA9IFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICsgMywK KyAgICBMQVNUX1NJR19DT0VGRl9ZX1BSRUZJWCAgICAgICAgID0gTEFTVF9TSUdfQ09FRkZfWF9Q UkVGSVggICAgICAgKzIzLAorICAgIFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICAgPSBM QVNUX1NJR19DT0VGRl9ZX1BSRUZJWCAgICAgICArMjMsCisgICAgU0lHX0NPRUZGX0ZMQUcgICAg ICAgICAgICAgICAgICA9IFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICsgNywKKyAgICBQ QVJfTEVWRUxfRkxBRyAgICAgICAgICAgICAgICAgID0gU0lHX0NPRUZGX0ZMQUcgICAgICAgICAg ICAgICAgKzYzLAorICAgIEFCU19MRVZFTF9HVFhfRkxBRyAgICAgICAgICAgICAgPSBQQVJfTEVW RUxfRkxBRyAgICAgICAgICAgICAgICArMzMsCisgICAgQ09FRkZfU0lHTl9GTEFHICAgICAgICAg ICAgICAgICA9IEFCU19MRVZFTF9HVFhfRkxBRyAgICAgICAgICAgICs3MiwKKyAgICBTWU5UQVhf RUxFTUVOVF9MQVNUICAgICAgICAgICAgID0gQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAg KyA2LAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgaW5pdF92YWx1ZXNbNF1bU1lOVEFYX0VM RU1FTlRfTEFTVF0gPSB7CisgICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICA2 MiwgIDM5LCAgMzksICA1NCwgIDM5LCAgMzksICAzMSwgIDM5LCAgMzksCisgICAgICAgIC8vYWxm X3VzZV9hcHNfZmxhZworICAgICAgICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYwor ICAgICAgICAxOCwgIDMwLCAgMzEsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAg ICAgMTgsICAzMCwgIDMxLAorICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAg ICAgMTEsICAxMSwKKyAgICAgICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2Vf dXBfZmxhZworICAgICAgICA2MCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2Fv X3R5cGVfaWR4X2Nocm9tYQorICAgICAgICAxMywKKyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisg ICAgICAgIDE5LCAgMjgsICAzOCwgIDI3LCAgMjksICAzOCwgIDIwLCAgMzAsICAzMSwKKyAgICAg ICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDI3LCAgIDYsICAxNSwgIDI1LCAgMTksICAzNywK KyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0MywgIDQyLCAg MjksICAyNywgIDQ0LAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAg ICAzNiwgIDQ1LCAgMzYsICA0NSwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZworICAgICAgICBD TlUsIENOVSwKKyAgICAgICAgLy9jdV9za2lwX2ZsYWcKKyAgICAgICAgMCwgIDI2LCAgMjgsCisg ICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgIDE3LCAgNDIsICAzNiwKKyAgICAg ICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9wcmVkX21v ZGVfcGx0X2ZsYWcKKyAgICAgICAgMjUsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZwor ICAgICAgICA1MiwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgMTks CisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAzNSwKKyAgICAg ICAgLy9pbnRyYV9taXBfZmxhZworICAgICAgICAzMywgIDQ5LCAgNTAsICAyNSwKKyAgICAgICAg Ly9pbnRyYV9sdW1hX3JlZl9pZHgKKyAgICAgICAgMjUsICA2MCwKKyAgICAgICAgLy9pbnRyYV9z dWJwYXJ0aXRpb25zX21vZGVfZmxhZworICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJw YXJ0aXRpb25zX3NwbGl0X2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vaW50cmFfbHVtYV9t cG1fZmxhZworICAgICAgICA0NSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxh ZworICAgICAgICAxMywgIDI4LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisg ICAgICAgICAxLAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAg ICAyNywKKyAgICAgICAgLy9jY2xtX21vZGVfZmxhZworICAgICAgICA1OSwKKyAgICAgICAgLy9j Y2xtX21vZGVfaWR4CisgICAgICAgIDI3LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21v ZGUKKyAgICAgICAgMzQsCisgICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDI2 LAorICAgICAgICAvL2ludGVyX3ByZWRfaWRjCisgICAgICAgIENOVSwgQ05VLCBDTlUsIENOVSwg Q05VLCBDTlUsCisgICAgICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUs IENOVSwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgIENOVSwKKyAgICAg ICAgLy9zeW1fbXZkX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5k IHJlZl9pZHhfbDEKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5k IG12cF9sMV9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAgICBD TlUsIENOVSwKKyAgICAgICAgLy9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgMzUsICAzNCwg IDM1LAorICAgICAgICAvL2Jjd19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2NvZGVk X2ZsYWcKKyAgICAgICAgIDYsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgQ05VLCBD TlUsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8v Y3Vfc2J0X2hvcml6b250YWxfZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAgICAgICAv L2N1X3NidF9wb3NfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAg ICAgIDI4LCAgNTIsICA0MiwKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDI5LCAgIDAsICAy OCwgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAg ICAgNDIsCisgICAgICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICA0MiwKKyAg ICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAgIDUwLCAgMzcsICA0NSwgIDMwLCAgNDYsICA0 NSwgIDM4LCAgNDYsCisgICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIENOVSwg Q05VLAorICAgICAgICAvL21tdmRfbWVyZ2VfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8v bW12ZF9jYW5kX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4 CisgICAgICAgIENOVSwKKyAgICAgICAgLy9jaWlwX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAg ICAvL21lcmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAg Ly9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX2lkeCwg bWVyZ2VfZ3BtX2lkeDAsIGFuZCBtZXJnZV9ncG1faWR4MQorICAgICAgICAzNCwKKyAgICAgICAg Ly9hYnNfbXZkX2dyZWF0ZXIwX2ZsYWcKKyAgICAgICAgMTQsCisgICAgICAgIC8vYWJzX212ZF9n cmVhdGVyMV9mbGFnCisgICAgICAgIDQ1LAorICAgICAgICAvL3R1X3lfY29kZWRfZmxhZworICAg ICAgICAxNSwgIDEyLCAgIDUsICAgNywKKyAgICAgICAgLy90dV9jYl9jb2RlZF9mbGFnCisgICAg ICAgIDEyLCAgMjEsCisgICAgICAgIC8vdHVfY3JfY29kZWRfZmxhZworICAgICAgICAzMywgIDI4 LCAgMzYsCisgICAgICAgIC8vY3VfcXBfZGVsdGFfYWJzCisgICAgICAgIENOVSwgQ05VLAorICAg ICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8v Y3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL3RyYW5zZm9y bV9za2lwX2ZsYWcKKyAgICAgICAgMjUsICAgOSwKKyAgICAgICAgLy90dV9qb2ludF9jYmNyX3Jl c2lkdWFsX2ZsYWcKKyAgICAgICAgMTIsICAyMSwgIDM1LAorICAgICAgICAvL2xhc3Rfc2lnX2Nv ZWZmX3hfcHJlZml4CisgICAgICAgIDEzLCAgIDUsICAgNCwgIDIxLCAgMTQsICAgNCwgICA2LCAg MTQsICAyMSwgIDExLCAgMTQsICAgNywgIDE0LCAgIDUsICAxMSwgIDIxLAorICAgICAgICAzMCwg IDIyLCAgMTMsICA0MiwgIDEyLCAgIDQsICAgMywKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl95 X3ByZWZpeAorICAgICAgICAxMywgICA1LCAgIDQsICAgNiwgIDEzLCAgMTEsICAxNCwgICA2LCAg IDUsICAgMywgIDE0LCAgMjIsICAgNiwgICA0LCAgIDMsICAgNiwKKyAgICAgICAgMjIsICAyOSwg IDIwLCAgMzQsICAxMiwgICA0LCAgIDMsCisgICAgICAgIC8vc2JfY29kZWRfZmxhZworICAgICAg ICAxOCwgIDMxLCAgMjUsICAxNSwgIDE4LCAgMjAsICAzOCwKKyAgICAgICAgLy9zaWdfY29lZmZf ZmxhZworICAgICAgICAyNSwgIDE5LCAgMjgsICAxNCwgIDI1LCAgMjAsICAyOSwgIDMwLCAgMTks ICAzNywgIDMwLCAgMzgsICAxMSwgIDM4LCAgNDYsICA1NCwKKyAgICAgICAgMjcsICAzOSwgIDM5 LCAgMzksICA0NCwgIDM5LCAgMzksICAzOSwgIDE4LCAgMzksICAzOSwgIDM5LCAgMjcsICAzOSwg IDM5LCAgMzksCisgICAgICAgICAwLCAgMzksICAzOSwgIDM5LCAgMjUsICAyNywgIDI4LCAgMzcs ICAzNCwgIDUzLCAgNTMsICA0NiwgIDE5LCAgNDYsICAzOCwgIDM5LAorICAgICAgICA1MiwgIDM5 LCAgMzksICAzOSwgIDExLCAgMzksICAzOSwgIDM5LCAgMTksICAzOSwgIDM5LCAgMzksICAyNSwg IDI4LCAgMzgsCisgICAgICAgIC8vcGFyX2xldmVsX2ZsYWcKKyAgICAgICAgMzMsICAyNSwgIDE4 LCAgMjYsICAzNCwgIDI3LCAgMjUsICAyNiwgIDE5LCAgNDIsICAzNSwgIDMzLCAgMTksICAyNywg IDM1LCAgMzUsCisgICAgICAgIDM0LCAgNDIsICAyMCwgIDQzLCAgMjAsICAzMywgIDI1LCAgMjYs ICA0MiwgIDE5LCAgMjcsICAyNiwgIDUwLCAgMzUsICAyMCwgIDQzLAorICAgICAgICAxMSwKKyAg ICAgICAgLy9hYnNfbGV2ZWxfZ3R4X2ZsYWcKKyAgICAgICAgMjUsICAyNSwgIDExLCAgMjcsICAy MCwgIDIxLCAgMzMsICAxMiwgIDI4LCAgMjEsICAyMiwgIDM0LCAgMjgsICAyOSwgIDI5LCAgMzAs CisgICAgICAgIDM2LCAgMjksICA0NSwgIDMwLCAgMjMsICA0MCwgIDMzLCAgMjcsICAyOCwgIDIx LCAgMzcsICAzNiwgIDM3LCAgNDUsICAzOCwgIDQ2LAorICAgICAgICAyNSwgICAxLCAgNDAsICAy NSwgIDMzLCAgMTEsICAxNywgIDI1LCAgMjUsICAxOCwgICA0LCAgMTcsICAzMywgIDI2LCAgMTks ICAxMywKKyAgICAgICAgMzMsICAxOSwgIDIwLCAgMjgsICAyMiwgIDQwLCAgIDksICAyNSwgIDE4 LCAgMjYsICAzNSwgIDI1LCAgMjYsICAzNSwgIDI4LCAgMzcsCisgICAgICAgIDExLCAgIDUsICAg NSwgIDE0LCAgMTAsICAgMywgICAzLCAgIDMsCisgICAgICAgIC8vY29lZmZfc2lnbl9mbGFnCisg ICAgICAgIDEyLCAgMTcsICA0NiwgIDI4LCAgMjUsICA0NiwKKyAgICB9LAorICAgIHsKKyAgICAg ICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgMTMsICAyMywgIDQ2LCAgIDQsICA2MSwgIDU0LCAg MTksICA0NiwgIDU0LAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAgICAgICAgNDYsCisg ICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAgICAg ICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgIDE4LCAgMjEsICAzOCwKKyAgICAgICAgLy9h bGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgIDIwLCAgMTIsCisgICAgICAgIC8vc2FvX21l cmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAgNjAsCisgICAgICAg IC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgNSwK KyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDExLCAgMzUsICA1MywgIDEyLCAgIDYs ICAzMCwgIDEzLCAgMTUsICAzMSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDIw LCAgMTQsICAyMywgIDE4LCAgMTksICAgNiwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGlj YWxfZmxhZworICAgICAgICA0MywgIDM1LCAgMzcsICAzNCwgIDUyLAorICAgICAgICAvL210dF9z cGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAgICA0MywgIDM3LCAgMjEsICAyMiwKKyAgICAgICAg Ly9ub25faW50ZXJfZmxhZworICAgICAgICAyNSwgIDEyLAorICAgICAgICAvL2N1X3NraXBfZmxh ZworICAgICAgICA1NywgIDU5LCAgNDUsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisg ICAgICAgICAwLCAgNTcsICA0NCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0 MCwgIDM1LAorICAgICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAwLAorICAgICAg ICAvL2N1X2FjdF9lbmFibGVkX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vaW50cmFfYmRw Y21fbHVtYV9mbGFnCisgICAgICAgIDQwLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZGly X2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbWlwX2ZsYWcKKyAgICAgICAgNDEs ICA1NywgIDU4LCAgMjYsCisgICAgICAgIC8vaW50cmFfbHVtYV9yZWZfaWR4CisgICAgICAgIDI1 LCAgNTgsCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcKKyAgICAgICAg MzMsCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19zcGxpdF9mbGFnCisgICAgICAgIDM2 LAorICAgICAgICAvL2ludHJhX2x1bWFfbXBtX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8v aW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcKKyAgICAgICAgMTIsICAyMCwKKyAgICAgICAgLy9p bnRyYV9iZHBjbV9jaHJvbWFfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9pbnRyYV9iZHBj bV9jaHJvbWFfZGlyX2ZsYWcKKyAgICAgICAgMTMsCisgICAgICAgIC8vY2NsbV9tb2RlX2ZsYWcK KyAgICAgICAgMzQsCisgICAgICAgIC8vY2NsbV9tb2RlX2lkeAorICAgICAgICAyNywKKyAgICAg ICAgLy9pbnRyYV9jaHJvbWFfcHJlZF9tb2RlCisgICAgICAgIDI1LAorICAgICAgICAvL2dlbmVy YWxfbWVyZ2VfZmxhZworICAgICAgICAyMSwKKyAgICAgICAgLy9pbnRlcl9wcmVkX2lkYworICAg ICAgICAgNywgICA2LCAgIDUsICAxMiwgICA0LCAgNDAsCisgICAgICAgIC8vaW50ZXJfYWZmaW5l X2ZsYWcKKyAgICAgICAgMTIsICAxMywgIDE0LAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2Zs YWcKKyAgICAgICAgMzUsCisgICAgICAgIC8vc3ltX212ZF9mbGFnCisgICAgICAgIDI4LAorICAg ICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAgICAgICAgMjAsICAzNSwKKyAgICAg ICAgLy9tdnBfbDBfZmxhZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgMzQsCisgICAgICAgIC8v YW12cl9mbGFnCisgICAgICAgIDU5LCAgNTgsCisgICAgICAgIC8vYW12cl9wcmVjaXNpb25faWR4 CisgICAgICAgIDYwLCAgNDgsICA2MCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICA0LAor ICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8vY3Vfc2J0X2Zs YWcKKyAgICAgICAgNTYsICA1NywKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAg IDQyLAorICAgICAgICAvL2N1X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgMjAsICA0Mywg IDEyLAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9s Zm5zdF9pZHgKKyAgICAgICAgMzcsICA0NSwgIDI3LAorICAgICAgICAvL210c19pZHgKKyAgICAg ICAgNDUsICA0MCwgIDI3LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGlj ZXNfZmxhZworICAgICAgICA1OSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisg ICAgICAgIDQyLAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTEsICAzMCwgIDMw LCAgMzgsICAyMywgIDM4LCAgNTMsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcK KyAgICAgICAgMzgsICAgNywKKyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgMjYs CisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vbW12ZF9k aXN0YW5jZV9pZHgKKyAgICAgICAgNjAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgIDU3 LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgNDgsICA1NywgIDQ0LAor ICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9tZXJn ZV9pZHgsIG1lcmdlX2dwbV9pZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgMjAsCisg ICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMF9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2Fi c19tdmRfZ3JlYXRlcjFfZmxhZworICAgICAgICA0MywKKyAgICAgICAgLy90dV95X2NvZGVkX2Zs YWcKKyAgICAgICAgMjMsICAgNSwgIDIwLCAgIDcsCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxh ZworICAgICAgICAyNSwgIDI4LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAg MjUsICAyOSwgIDQ1LAorICAgICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICBDTlUsIENO VSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAgICAgQ05VLAorICAg ICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfaWR4CisgICAgICAgIENOVSwKKyAgICAgICAgLy90 cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgICAgIDI1LCAgIDksCisgICAgICAgIC8vdHVfam9pbnRf Y2Jjcl9yZXNpZHVhbF9mbGFnCisgICAgICAgIDI3LCAgMzYsICA0NSwKKyAgICAgICAgLy9sYXN0 X3NpZ19jb2VmZl94X3ByZWZpeAorICAgICAgICAgNiwgIDEzLCAgMTIsICAgNiwgICA2LCAgMTIs ICAxNCwgIDE0LCAgMTMsICAxMiwgIDI5LCAgIDcsICAgNiwgIDEzLCAgMzYsICAyOCwKKyAgICAg ICAgMTQsICAxMywgICA1LCAgMjYsICAxMiwgICA0LCAgMTgsCisgICAgICAgIC8vbGFzdF9zaWdf Y29lZmZfeV9wcmVmaXgKKyAgICAgICAgIDUsICAgNSwgIDEyLCAgIDYsICAgNiwgICA0LCAgIDYs ICAxNCwgICA1LCAgMTIsICAxNCwgICA3LCAgMTMsICAgNSwgIDEzLCAgMjEsCisgICAgICAgIDE0 LCAgMjAsICAxMiwgIDM0LCAgMTEsICAgNCwgIDE4LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcK KyAgICAgICAgMjUsICAzMCwgIDI1LCAgNDUsICAxOCwgIDEyLCAgMjksCisgICAgICAgIC8vc2ln X2NvZWZmX2ZsYWcKKyAgICAgICAgMTcsICA0MSwgIDQyLCAgMjksICAyNSwgIDQ5LCAgNDMsICAz NywgIDMzLCAgNTgsICA1MSwgIDMwLCAgMTksICAzOCwgIDM4LCAgNDYsCisgICAgICAgIDM0LCAg NTQsICA1NCwgIDM5LCAgIDYsICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgNTQsICAzOSwgIDE5 LCAgMzksICAzOSwgIDM5LAorICAgICAgICA1NiwgIDM5LCAgMzksICAzOSwgIDE3LCAgMzQsICAz NSwgIDIxLCAgNDEsICA1OSwgIDYwLCAgMzgsICAzNSwgIDQ1LCAgNTMsICA1NCwKKyAgICAgICAg NDQsICAzOSwgIDM5LCAgMzksICAzNCwgIDM4LCAgNjIsICAzOSwgIDI2LCAgMzksICAzOSwgIDM5 LCAgNDAsICAzNSwgIDQ0LAorICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgIDE4LCAg MTcsICAzMywgIDE4LCAgMjYsICA0MiwgIDI1LCAgMzMsICAyNiwgIDQyLCAgMjcsICAyNSwgIDM0 LCAgNDIsICA0MiwgIDM1LAorICAgICAgICAyNiwgIDI3LCAgNDIsICAyMCwgIDIwLCAgMjUsICAy NSwgIDI2LCAgMTEsICAxOSwgIDI3LCAgMzMsICA0MiwgIDM1LCAgMzUsICA0MywKKyAgICAgICAg IDMsCisgICAgICAgIC8vYWJzX2xldmVsX2d0eF9mbGFnCisgICAgICAgICAwLCAgMTcsICAyNiwg IDE5LCAgMzUsICAyMSwgIDI1LCAgMzQsICAyMCwgIDI4LCAgMjksICAzMywgIDI3LCAgMjgsICAy OSwgIDIyLAorICAgICAgICAzNCwgIDI4LCAgNDQsICAzNywgIDM4LCAgIDAsICAyNSwgIDE5LCAg MjAsICAxMywgIDE0LCAgNTcsICA0NCwgIDMwLCAgMzAsICAyMywKKyAgICAgICAgMTcsICAgMCwg ICAxLCAgMTcsICAyNSwgIDE4LCAgIDAsICAgOSwgIDI1LCAgMzMsICAzNCwgICA5LCAgMjUsICAx OCwgIDI2LCAgMjAsCisgICAgICAgIDI1LCAgMTgsICAxOSwgIDI3LCAgMjksICAxNywgICA5LCAg MjUsICAxMCwgIDE4LCAgIDQsICAxNywgIDMzLCAgMTksICAyMCwgIDI5LAorICAgICAgICAxOCwg IDExLCAgIDQsICAyOCwgICAyLCAgMTAsICAgMywgICAzLAorICAgICAgICAvL2NvZWZmX3NpZ25f ZmxhZworICAgICAgICAgNSwgIDEwLCAgNTMsICA0MywgIDI1LCAgNDYsCisgICAgfSwKKyAgICB7 CisgICAgICAgIC8vYWxmX2N0Yl9mbGFnCisgICAgICAgIDMzLCAgNTIsICA0NiwgIDI1LCAgNjEs ICA1NCwgIDI1LCAgNjEsICA1NCwKKyAgICAgICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAg IDQ2LAorICAgICAgICAvL2FsZl9jdGJfY2NfY2JfaWRjCisgICAgICAgIDI1LCAgMzUsICAzOCwK KyAgICAgICAgLy9hbGZfY3RiX2NjX2NyX2lkYworICAgICAgICAyNSwgIDI4LCAgMzgsCisgICAg ICAgIC8vYWxmX2N0Yl9maWx0ZXJfYWx0X2lkeAorICAgICAgICAxMSwgIDI2LAorICAgICAgICAv L3Nhb19tZXJnZV9sZWZ0X2ZsYWcgYW5kIHNhb19tZXJnZV91cF9mbGFnCisgICAgICAgIDIsCisg ICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAg ICAgMiwKKyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDE4LCAgMjcsICAxNSwgIDE4 LCAgMjgsICA0NSwgIDI2LCAgIDcsICAyMywKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAg ICAgIDI2LCAgMzYsICAzOCwgIDE4LCAgMzQsICAyMSwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3Vf dmVydGljYWxfZmxhZworICAgICAgICA0MywgIDQyLCAgMzcsICA0MiwgIDQ0LAorICAgICAgICAv L210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAgICAyOCwgIDI5LCAgMjgsICAyOSwKKyAg ICAgICAgLy9ub25faW50ZXJfZmxhZworICAgICAgICAyNSwgIDIwLAorICAgICAgICAvL2N1X3Nr aXBfZmxhZworICAgICAgICA1NywgIDYwLCAgNDYsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19m bGFnCisgICAgICAgICAwLCAgNDMsICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAg ICAgICA0MCwgIDM1LAorICAgICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAxNywK KyAgICAgICAgLy9jdV9hY3RfZW5hYmxlZF9mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2lu dHJhX2JkcGNtX2x1bWFfZmxhZworICAgICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9s dW1hX2Rpcl9mbGFnCisgICAgICAgIDIxLAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAg ICAgIDU2LCAgNTcsICA1MCwgIDI2LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAg ICAgICAyNSwgIDU5LAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisg ICAgICAgIDMzLAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAg ICAgICA0MywKKyAgICAgICAgLy9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ0LAorICAg ICAgICAvL2ludHJhX2x1bWFfbm90X3BsYW5hcl9mbGFnCisgICAgICAgIDEzLCAgIDYsCisgICAg ICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vaW50 cmFfYmRwY21fY2hyb21hX2Rpcl9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL2NjbG1fbW9k ZV9mbGFnCisgICAgICAgIDI2LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcs CisgICAgICAgIC8vaW50cmFfY2hyb21hX3ByZWRfbW9kZQorICAgICAgICAyNSwKKyAgICAgICAg Ly9nZW5lcmFsX21lcmdlX2ZsYWcKKyAgICAgICAgIDYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9p ZGMKKyAgICAgICAgMTQsICAxMywgICA1LCAgIDQsICAgMywgIDQwLAorICAgICAgICAvL2ludGVy X2FmZmluZV9mbGFnCisgICAgICAgIDE5LCAgMTMsICAgNiwKKyAgICAgICAgLy9jdV9hZmZpbmVf dHlwZV9mbGFnCisgICAgICAgIDM1LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAy OCwKKyAgICAgICAgLy9yZWZfaWR4X2wwIGFuZCByZWZfaWR4X2wxCisgICAgICAgICA1LCAgMzUs CisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAgICAgIDM0LAorICAg ICAgICAvL2FtdnJfZmxhZworICAgICAgICA1OSwgIDUwLAorICAgICAgICAvL2FtdnJfcHJlY2lz aW9uX2lkeAorICAgICAgICAzOCwgIDI2LCAgNjAsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAg ICAgNSwKKyAgICAgICAgLy9jdV9jb2RlZF9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2N1 X3NidF9mbGFnCisgICAgICAgIDQxLCAgNTcsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRfZmxhZwor ICAgICAgICA0MiwKKyAgICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIDM1 LCAgNTEsICAyNywKKyAgICAgICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMjgsCisgICAg ICAgIC8vbGZuc3RfaWR4CisgICAgICAgIDUyLCAgMzcsICAyNywKKyAgICAgICAgLy9tdHNfaWR4 CisgICAgICAgIDQ1LCAgMjUsICAyNywgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0 ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgNTAsCisgICAgICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2Vf ZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAgIDU4LCAg NDUsICA0NSwgIDMwLCAgMzgsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIC8vcmVndWxhcl9tZXJn ZV9mbGFnCisgICAgICAgIDQ2LCAgMTUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAg ICAgIDI1LAorICAgICAgICAvL21tdmRfY2FuZF9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAv L21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgIDU5LAorICAgICAgICAvL2NpaXBfZmxhZworICAg ICAgICA1NywKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgIDI1LCAgNTgs ICA0NSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDQsCisgICAgICAg IC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAg IDE4LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICA1MSwKKyAgICAg ICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vdHVfeV9j b2RlZF9mbGFnCisgICAgICAgIDE1LCAgIDYsICAgNSwgIDE0LAorICAgICAgICAvL3R1X2NiX2Nv ZGVkX2ZsYWcKKyAgICAgICAgMjUsICAzNywKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisg ICAgICAgICA5LCAgMzYsICA0NSwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAg Q05VLCBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENO VSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAg ICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAyNSwgIDE3LAorICAgICAgICAvL3R1 X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICA0MiwgIDQzLCAgNTIsCisgICAgICAg IC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgIDYsICAgNiwgIDEyLCAgMTQsICAg NiwgICA0LCAgMTQsICAgNywgICA2LCAgIDQsICAyOSwgICA3LCAgIDYsICAgNiwgIDEyLCAgMjgs CisgICAgICAgICA3LCAgMTMsICAxMywgIDM1LCAgMTksICAgNSwgICA0LAorICAgICAgICAvL2xh c3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgICA1LCAgIDUsICAyMCwgIDEzLCAgMTMsICAx OSwgIDIxLCAgIDYsICAxMiwgIDEyLCAgMTQsICAxNCwgICA1LCAgIDQsICAxMiwgIDEzLAorICAg ICAgICAgNywgIDEzLCAgMTIsICA0MSwgIDExLCAgIDUsICAyNywKKyAgICAgICAgLy9zYl9jb2Rl ZF9mbGFnCisgICAgICAgIDI1LCAgNDUsICAyNSwgIDE0LCAgMTgsICAzNSwgIDQ1LAorICAgICAg ICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDE3LCAgNDEsICA0OSwgIDM2LCAgIDEsICA0OSwg IDUwLCAgMzcsICA0OCwgIDUxLCAgNTgsICA0NSwgIDI2LCAgNDUsICA1MywgIDQ2LAorICAgICAg ICA0OSwgIDU0LCAgNjEsICAzOSwgIDM1LCAgMzksICAzOSwgIDM5LCAgMTksICA1NCwgIDM5LCAg MzksICA1MCwgIDM5LCAgMzksICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAgOSwg IDQ5LCAgNTAsICAzNiwgIDQ4LCAgNTksICA1OSwgIDM4LCAgMzQsICA0NSwgIDM4LCAgMzEsCisg ICAgICAgIDU4LCAgMzksICAzOSwgIDM5LCAgMzQsICAzOCwgIDU0LCAgMzksICA0MSwgIDM5LCAg MzksICAzOSwgIDI1LCAgNTAsICAzNywKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAg ICAzMywgIDQwLCAgMjUsICA0MSwgIDI2LCAgNDIsICAyNSwgIDMzLCAgMjYsICAzNCwgIDI3LCAg MjUsICA0MSwgIDQyLCAgNDIsICAzNSwKKyAgICAgICAgMzMsICAyNywgIDM1LCAgNDIsICA0Mywg IDMzLCAgMjUsICAyNiwgIDM0LCAgMTksICAyNywgIDMzLCAgNDIsICA0MywgIDM1LCAgNDMsCisg ICAgICAgIDExLAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgMCwgICAw LCAgMzMsICAzNCwgIDM1LCAgMjEsICAyNSwgIDM0LCAgMzUsICAyOCwgIDI5LCAgNDAsICA0Miwg IDQzLCAgMjksICAzMCwKKyAgICAgICAgNDksICAzNiwgIDM3LCAgNDUsICAzOCwgICAwLCAgNDAs ICAzNCwgIDQzLCAgMzYsICAzNywgIDU3LCAgNTIsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1 LCAgIDAsICAgMCwgIDE3LCAgMjUsICAyNiwgICAwLCAgIDksICAyNSwgIDMzLCAgMTksICAgMCwg IDI1LCAgMzMsICAyNiwgIDIwLAorICAgICAgICAyNSwgIDMzLCAgMjcsICAzNSwgIDIyLCAgMjUs ICAgMSwgIDI1LCAgMzMsICAyNiwgIDEyLCAgMjUsICAzMywgIDI3LCAgMjgsICAzNywKKyAgICAg ICAgMTksICAxMSwgICA0LCAgIDYsICAgMywgICA0LCAgIDQsICAgNSwKKyAgICAgICAgLy9jb2Vm Zl9zaWduX2ZsYWcKKyAgICAgICAgMzUsICAyNSwgIDQ2LCAgMjgsICAzMywgIDM4LAorICAgIH0s CisgICAgLy9zaGlmdElkeAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAg IDAsICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLAorICAgICAgICAvL2Fs Zl91c2VfYXBzX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMK KyAgICAgICAgIDQsICAgMSwgICA0LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAg ICAgICA0LCAgIDEsICAgNCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAg ICAgICAwLCAgIDAsCisgICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdl X3VwX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNh b190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgIDQsCisgICAgICAgIC8vc3BsaXRfY3VfZmxhZwor ICAgICAgICAxMiwgIDEzLCAgIDgsICAgOCwgIDEzLCAgMTIsICAgNSwgICA5LCAgIDksCisgICAg ICAgIC8vc3BsaXRfcXRfZmxhZworICAgICAgICAgMCwgICA4LCAgIDgsICAxMiwgIDEyLCAgIDgs CisgICAgICAgIC8vbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcKKyAgICAgICAgIDksICAgOCwg ICA5LCAgIDgsICAgNSwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcKKyAgICAg ICAgMTIsICAxMywgIDEyLCAgMTMsCisgICAgICAgIC8vbm9uX2ludGVyX2ZsYWcKKyAgICAgICAg IDEsICAgMCwKKyAgICAgICAgLy9jdV9za2lwX2ZsYWcKKyAgICAgICAgIDUsICAgNCwgICA4LAor ICAgICAgICAvL3ByZWRfbW9kZV9pYmNfZmxhZworICAgICAgICAgMSwgICA1LCAgIDgsCisgICAg ICAgIC8vcHJlZF9tb2RlX2ZsYWcKKyAgICAgICAgIDUsICAgMSwKKyAgICAgICAgLy9wcmVkX21v ZGVfcGx0X2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZwor ICAgICAgICAgMSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgIDEs CisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAgNCwKKyAgICAg ICAgLy9pbnRyYV9taXBfZmxhZworICAgICAgICAgOSwgIDEwLCAgIDksICAgNiwKKyAgICAgICAg Ly9pbnRyYV9sdW1hX3JlZl9pZHgKKyAgICAgICAgIDUsICAgOCwKKyAgICAgICAgLy9pbnRyYV9z dWJwYXJ0aXRpb25zX21vZGVfZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9pbnRyYV9zdWJw YXJ0aXRpb25zX3NwbGl0X2ZsYWcKKyAgICAgICAgIDIsCisgICAgICAgIC8vaW50cmFfbHVtYV9t cG1fZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxh ZworICAgICAgICAgMSwgICA1LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisg ICAgICAgICAxLAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAg ICAgMCwKKyAgICAgICAgLy9jY2xtX21vZGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9j Y2xtX21vZGVfaWR4CisgICAgICAgICA5LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21v ZGUKKyAgICAgICAgIDUsCisgICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgICA0 LAorICAgICAgICAvL2ludGVyX3ByZWRfaWRjCisgICAgICAgICAwLCAgIDAsICAgMSwgICA0LCAg IDQsICAgMCwKKyAgICAgICAgLy9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICAgNCwgICAwLCAg IDAsCisgICAgICAgIC8vY3VfYWZmaW5lX3R5cGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAg Ly9zeW1fbXZkX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVm X2lkeF9sMQorICAgICAgICAgMCwgICA0LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBf bDFfZmxhZworICAgICAgICAxMiwKKyAgICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgIDAsICAg MCwKKyAgICAgICAgLy9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgIDQsICAgNSwgIDAsCisg ICAgICAgIC8vYmN3X2lkeAorICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9jb2RlZF9mbGFnCisg ICAgICAgICA0LAorICAgICAgICAvL2N1X3NidF9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAg ICAgIC8vY3Vfc2J0X3F1YWRfZmxhZworICAgICAgICAxMCwKKyAgICAgICAgLy9jdV9zYnRfaG9y aXpvbnRhbF9mbGFnCisgICAgICAgICA4LCAgIDQsICAgMSwKKyAgICAgICAgLy9jdV9zYnRfcG9z X2ZsYWcKKyAgICAgICAgMTMsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgICA5LCAgIDks ICAxMCwKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgICA4LCAgIDAsICAgOSwgICAwLAorICAg ICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgIDksCisgICAg ICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9ydW5f Y29weV9mbGFnCisgICAgICAgICA5LCAgIDYsICAgOSwgIDEwLCAgIDUsICAgMCwgICA5LCAgIDUs CisgICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgICA1LCAgIDUsCisgICAgICAg IC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgICA0LAorICAgICAgICAvL21tdmRfY2FuZF9mbGFn CisgICAgICAgIDEwLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgICAwLAor ICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICAgMSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9j a19mbGFnCisgICAgICAgICA0LCAgIDQsICAgNCwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19p ZHgKKyAgICAgICAgIDAsCisgICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5k IG1lcmdlX2dwbV9pZHgxCisgICAgICAgICA0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBf ZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAg ICAgIDUsCisgICAgICAgIC8vdHVfeV9jb2RlZF9mbGFnCisgICAgICAgICA1LCAgIDEsICAgOCwg ICA5LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAgMCwKKyAgICAg ICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAgICAyLCAgIDEsICAgMCwKKyAgICAgICAgLy9j dV9xcF9kZWx0YV9hYnMKKyAgICAgICAgIDgsICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBf b2Zmc2V0X2ZsYWcKKyAgICAgICAgIDgsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9p ZHgKKyAgICAgICAgIDgsCisgICAgICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAg MSwgICAxLAorICAgICAgICAvL3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAg MSwgICAxLCAgIDAsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAg IDgsICAgNSwgICA0LCAgIDUsICAgNCwgICA0LCAgIDUsICAgNCwgICAxLCAgIDAsICAgNCwgICAx LCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDUsICAg NCwgICA0LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgICA4LCAg IDUsICAgOCwgICA1LCAgIDUsICAgNCwgICA1LCAgIDUsICAgNCwgICAwLCAgIDUsICAgNCwgICAx LCAgIDAsICAgMCwgICAxLAorICAgICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDUsICAg NSwKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFnCisgICAgICAgICA4LCAgIDUsICAgNSwgICA4LCAg IDUsICAgOCwgICA4LAorICAgICAgICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDEyLCAgIDks ICAgOSwgIDEwLCAgIDksICAgOSwgICA5LCAgMTAsICAgOCwgICA4LCAgIDgsICAxMCwgICA5LCAg MTMsICAgOCwgICA4LAorICAgICAgICAgOCwgICA4LCAgIDgsICAgNSwgICA4LCAgIDAsICAgMCwg ICAwLCAgIDgsICAgOCwgICA4LCAgIDgsICAgOCwgICAwLCAgIDQsICAgNCwKKyAgICAgICAgIDAs ICAgMCwgICAwLCAgIDAsICAxMiwgIDEyLCAgIDksICAxMywgICA0LCAgIDUsICAgOCwgICA5LCAg IDgsICAxMiwgIDEyLCAgIDgsCisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwg ICA4LCAgIDgsICAgNCwgICAwLCAgIDAsICAgMCwgIDEzLCAgMTMsICAgOCwKKyAgICAgICAgLy9w YXJfbGV2ZWxfZmxhZworICAgICAgICAgOCwgICA5LCAgMTIsICAxMywgIDEzLCAgMTMsICAxMCwg IDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgMTAs ICAxMywgIDEzLCAgMTMsICAxMywgICA4LCAgMTIsICAxMiwgIDEyLCAgMTMsICAxMywgIDEzLCAg MTMsICAxMywgIDEzLCAgMTMsCisgICAgICAgICA2LAorICAgICAgICAvL2Fic19sZXZlbF9ndHhf ZmxhZworICAgICAgICAgOSwgICA1LCAgMTAsICAxMywgIDEzLCAgMTAsICAgOSwgIDEwLCAgMTMs ICAxMywgIDEzLCAgIDksICAxMCwgIDEwLCAgMTAsICAxMywKKyAgICAgICAgIDgsICAgOSwgIDEw LCAgMTAsICAxMywgICA4LCAgIDgsICAgOSwgIDEyLCAgMTIsICAxMCwgICA1LCAgIDksICAgOSwg ICA5LCAgMTMsCisgICAgICAgICAxLCAgIDUsICAgOSwgICA5LCAgIDksICAgNiwgICA1LCAgIDks ICAxMCwgIDEwLCAgIDksICAgOSwgICA5LCAgIDksICAgOSwgICA5LAorICAgICAgICAgNiwgICA4 LCAgIDksICAgOSwgIDEwLCAgIDEsICAgNSwgICA4LCAgIDgsICAgOSwgICA2LCAgIDYsICAgOSwg ICA4LCAgIDgsICAgOSwKKyAgICAgICAgIDQsICAgMiwgICAxLCAgIDYsICAgMSwgICAxLCAgIDEs ICAgMSwKKyAgICAgICAgLy9jb2VmZl9zaWduX2ZsYWcKKyAgICAgICAgIDEsICAgNCwgICA0LCAg IDUsICAgOCwgICA4LAorICAgIH0KK307CisKKyNkZWZpbmUgTUFYX1NVQl9CTE9DS1MgMTYKKyNk ZWZpbmUgTUFYX1NVQl9CTE9DS19TSVpFIDQKKyNkZWZpbmUgTUFYX1RCX1NJWkUgNjQKKwordHlw ZWRlZiBzdHJ1Y3QgUmVzaWR1YWxDb2RpbmcgeworICAgIC8vY29tbW9uIGZvciB0cyBhbmQgbm9u IHRzCisgICAgVHJhbnNmb3JtQmxvY2sgKnRiOworCisgICAgaW50IGxvZzJfc2JfdzsKKyAgICBp bnQgbG9nMl9zYl9oOworICAgIGludCBsYXN0X3N1Yl9ibG9jazsKKyAgICBpbnQgaGlzdF92YWx1 ZTsKKyAgICBpbnQgdXBkYXRlX2hpc3Q7CisgICAgaW50IG51bV9zYl9jb2VmZjsKKyAgICBpbnQg cmVtX2JpbnNfcGFzczE7CisKKyAgICBpbnQgd2lkdGhfaW5fc2JzOworICAgIGludCBoZWlnaHRf aW5fc2JzOworICAgIGludCBuYl9zYnM7CisKKyAgICBjb25zdCB1aW50OF90ICpzYl9zY2FuX3hf b2ZmOworICAgIGNvbnN0IHVpbnQ4X3QgKnNiX3NjYW5feV9vZmY7CisgICAgY29uc3QgdWludDhf dCAqc2Nhbl94X29mZjsKKyAgICBjb25zdCB1aW50OF90ICpzY2FuX3lfb2ZmOworCisgICAgdWlu dDhfdCBzYl9jb2RlZF9mbGFnW01BWF9TVUJfQkxPQ0tTICogTUFYX1NVQl9CTE9DS1NdOworICAg IGludCBzaWdfY29lZmZfZmxhZ1tNQVhfVEJfU0laRSAqIE1BWF9UQl9TSVpFXTsKKyAgICBpbnQg YWJzX2xldmVsX3Bhc3MxW01BWF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOyAgICAgICAgICAgICAg Ly8vPCBBYnNMZXZlbFBhc3MxW11bXQorICAgIGludCBhYnNfbGV2ZWxbTUFYX1RCX1NJWkUgKiBN QVhfVEJfU0laRV07CisKKyAgICAvL2ZvciB0cyBvbmx5CisgICAgdWludDhfdCBpbmZlcl9zYl9j YmY7CisgICAgaW50IGNvZWZmX3NpZ25fbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07 ICAgICAgICAgICAgIC8vLzwgQ29lZmZTaWduTGV2ZWxbXVtdCisKKyAgICAvL2ZvciBub24gdHMg b25seQorICAgIGludCBxc3RhdGU7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3M7CisgICAgaW50IGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeDsKKyAgICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95 OworfSBSZXNpZHVhbENvZGluZzsKKworc3RhdGljIGludCBjYWJhY19yZWluaXQoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gc2tpcF9ieXRlcygmbGMtPmVwLT5jYywgMCkgPT0g TlVMTCA/IEFWRVJST1JfSU5WQUxJRERBVEEgOiAwOworfQorCitzdGF0aWMgdm9pZCBjYWJhY19p bml0X3N0YXRlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMg ICAgICAgICAgICAgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFk ZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsKKyAgICBjb25zdCBpbnQgcXAgICAgICAgICAgICAgICAg ICA9IGF2X2NsaXBfdWludHAyKGxjLT5zYy0+c2guc2xpY2VfcXBfeSwgNik7CisgICAgaW50IGlu aXRfdHlwZSAgICAgICAgICAgICAgICAgPSAyIC0gcnNoLT5zaF9zbGljZV90eXBlOworCisgICAg YXZfYXNzZXJ0MChWVkNfQ09OVEVYVFMgPT0gU1lOVEFYX0VMRU1FTlRfTEFTVCk7CisKKyAgICBm Zl92dmNfZXBfaW5pdF9zdGF0X2NvZWZmKGxjLT5lcCwgc3BzLT5iaXRfZGVwdGgsIHNwcy0+ci0+ c3BzX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2VuYWJsZWRfZmxhZyk7CisKKyAgICBpZiAo cnNoLT5zaF9jYWJhY19pbml0X2ZsYWcgJiYgIUlTX0kocnNoKSkKKyAgICAgICAgaW5pdF90eXBl IF49IDM7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFZWQ19DT05URVhUUzsgaSsrKSB7Cisg ICAgICAgIFZWQ0NhYmFjU3RhdGUgKnN0YXRlID0gJmxjLT5lcC0+Y2FiYWNfc3RhdGVbaV07Cisg ICAgICAgIGNvbnN0IGludCBpbml0X3ZhbHVlID0gaW5pdF92YWx1ZXNbaW5pdF90eXBlXVtpXTsK KyAgICAgICAgY29uc3QgaW50IHNoaWZ0X2lkeCAgPSBpbml0X3ZhbHVlc1szXVtpXTsKKyAgICAg ICAgY29uc3QgaW50IG0gPSAoaW5pdF92YWx1ZSA+PiAzKSAtIDQ7CisgICAgICAgIGNvbnN0IGlu dCBuID0gKChpbml0X3ZhbHVlICYgNykgKiAxOCkgKyAxOworICAgICAgICBjb25zdCBpbnQgcHJl ID0gYXZfY2xpcCgoKG0gKiAocXAgLSAxNikpID4+IDEpICsgbiwgMSwgMTI3KTsKKworICAgICAg ICBzdGF0ZS0+c3RhdGVbMF0gPSBwcmUgPDwgMzsKKyAgICAgICAgc3RhdGUtPnN0YXRlWzFdID0g cHJlIDw8IDc7CisgICAgICAgIHN0YXRlLT5zaGlmdFswXSA9IChzaGlmdF9pZHggPj4gMiApICsg MjsKKyAgICAgICAgc3RhdGUtPnNoaWZ0WzFdID0gKHNoaWZ0X2lkeCAmIDMgKSArIDMgKyBzdGF0 ZS0+c2hpZnRbMF07CisgICAgfQorfQorCitpbnQgZmZfdnZjX2NhYmFjX2luaXQoVlZDTG9jYWxD b250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgY3R1X2lkeCwgY29uc3QgaW50IHJ4LCBjb25zdCBp bnQgcnkpCit7CisgICAgaW50IHJldCA9IDA7CisgICAgY29uc3QgVlZDUFBTICpwcHMgICAgICAg ICAgICA9IGxjLT5mYy0+cHMucHBzOworICAgIGNvbnN0IGludCBmaXJzdF9jdGJfaW5fc2xpY2Ug PSAhY3R1X2lkeDsKKyAgICBjb25zdCBpbnQgZmlyc3RfY3RiX2luX3RpbGUgID0gcnggPT0gcHBz LT5jdGJfdG9fY29sX2JkW3J4XSAmJiByeSA9PSBwcHMtPmN0Yl90b19yb3dfYmRbcnldOworCisg ICAgaWYgKGZpcnN0X2N0Yl9pbl9zbGljZXx8IGZpcnN0X2N0Yl9pbl90aWxlKSB7CisgICAgICAg IGlmIChsYy0+c2MtPm5iX2VwcyA9PSAxICYmICFmaXJzdF9jdGJfaW5fc2xpY2UpCisgICAgICAg ICAgICByZXQgPSBjYWJhY19yZWluaXQobGMpOworICAgICAgICBpZiAoIXJldCkKKyAgICAgICAg ICAgIGNhYmFjX2luaXRfc3RhdGUobGMpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCisv L2ZpeG1lCitzdGF0aWMgdm9pZCB2dmNfcmVmaWxsMihDQUJBQ0NvbnRleHQqIGMpIHsKKyAgICBp bnQgaTsKKyAgICB1bnNpZ25lZCB4OworI2lmICFIQVZFX0ZBU1RfQ0xaCisgICAgeCA9IGMtPmxv dyBeIChjLT5sb3cgLSAxKTsKKyAgICBpID0gNyAtIGZmX2gyNjRfbm9ybV9zaGlmdFt4ID4+IChD QUJBQ19CSVRTIC0gMSldOworI2Vsc2UKKyAgICBpID0gZmZfY3R6KGMtPmxvdykgLSBDQUJBQ19C SVRTOworI2VuZGlmCisKKyAgICB4ID0gLUNBQkFDX01BU0s7CisKKyNpZiBDQUJBQ19CSVRTID09 IDE2CisgICAgeCArPSAoYy0+Ynl0ZXN0cmVhbVswXSA8PCA5KSArIChjLT5ieXRlc3RyZWFtWzFd IDw8IDEpOworI2Vsc2UKKyAgICB4ICs9IGMtPmJ5dGVzdHJlYW1bMF0gPDwgMTsKKyNlbmRpZgor CisgICAgYy0+bG93ICs9IHggPDwgaTsKKyNpZiAhVU5DSEVDS0VEX0JJVFNUUkVBTV9SRUFERVIK KyAgICBpZiAoYy0+Ynl0ZXN0cmVhbSA8IGMtPmJ5dGVzdHJlYW1fZW5kKQorI2VuZGlmCisgICAg ICAgIGMtPmJ5dGVzdHJlYW0gKz0gQ0FCQUNfQklUUyAvIDg7Cit9CisKK3N0YXRpYyBpbnQgaW5s aW5lIHZ2Y19nZXRfY2FiYWMoQ0FCQUNDb250ZXh0ICpjLCBWVkNDYWJhY1N0YXRlKiBiYXNlLCBj b25zdCBpbnQgY3R4KQoreworICAgIFZWQ0NhYmFjU3RhdGUgKnMgPSBiYXNlICsgY3R4OworICAg IGNvbnN0IGludCBxUmFuZ2VJZHggPSBjLT5yYW5nZSA+PiA1OworICAgIGNvbnN0IGludCBwU3Rh dGUgPSBzLT5zdGF0ZVsxXSArIChzLT5zdGF0ZVswXSA8PCA0KTsKKyAgICBjb25zdCBpbnQgdmFs TXBzID0gcFN0YXRlID4+IDE0OworICAgIGNvbnN0IGludCBSYW5nZUxQUyA9IChxUmFuZ2VJZHgg KiAoKHZhbE1wcyA/IDMyNzY3IC0gcFN0YXRlIDogcFN0YXRlKSA+PiA5ICkgPj4gMSkgKyA0Owor ICAgIGludCBiaXQsIGxwc19tYXNrOworCisgICAgYy0+cmFuZ2UgLT0gUmFuZ2VMUFM7CisgICAg bHBzX21hc2sgPSAoKGMtPnJhbmdlPDwoQ0FCQUNfQklUUysxKSkgLSBjLT5sb3cpPj4zMTsKKwor ICAgIGMtPmxvdyAtPSAoYy0+cmFuZ2U8PChDQUJBQ19CSVRTKzEpKSAmIGxwc19tYXNrOworICAg IGMtPnJhbmdlICs9IChSYW5nZUxQUyAtIGMtPnJhbmdlKSAmIGxwc19tYXNrOworCisgICAgYml0 ID0gdmFsTXBzIF4gKGxwc19tYXNrICYgMSk7CisKKyAgICBscHNfbWFzayA9IGZmX2gyNjRfbm9y bV9zaGlmdFtjLT5yYW5nZV07CisgICAgYy0+cmFuZ2UgPDw9IGxwc19tYXNrOworICAgIGMtPmxv dyAgPDw9IGxwc19tYXNrOworCisgICAgaWYgKCEoYy0+bG93ICYgQ0FCQUNfTUFTSykpCisgICAg ICAgIHZ2Y19yZWZpbGwyKGMpOworICAgIHMtPnN0YXRlWzBdID0gcy0+c3RhdGVbMF0gLSAocy0+ c3RhdGVbMF0gPj4gcy0+c2hpZnRbMF0pICsgKDEwMjMgKiBiaXQgPj4gcy0+c2hpZnRbMF0pOwor ICAgIHMtPnN0YXRlWzFdID0gcy0+c3RhdGVbMV0gLSAocy0+c3RhdGVbMV0gPj4gcy0+c2hpZnRb MV0pICsgKDE2MzgzICogYml0ID4+IHMtPnNoaWZ0WzFdKTsKKyAgICByZXR1cm4gYml0OworfQor CisjZGVmaW5lIEdFVF9DQUJBQyhjdHgpIHZ2Y19nZXRfY2FiYWMoJmxjLT5lcC0+Y2MsIGxjLT5l cC0+Y2FiYWNfc3RhdGUsIGN0eCkKKworLy85LjMuMy40IFRydW5jYXRlZCBiaW5hcnkgKFRCKSBi aW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCB0cnVuY2F0ZWRfYmluYXJ5X2RlY29kZShW VkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgY29uc3QgaW50IG4g PSBjX21heCArIDE7CisgICAgY29uc3QgaW50IGsgPSBhdl9sb2cyKG4pOworICAgIGNvbnN0IGlu dCB1ID0gKDEgPDwgKGsrMSkpIC0gbjsKKyAgICBpbnQgdiA9IDA7CisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBrOyBpKyspCisgICAgICAgIHYgPSAodiA8PCAxKSB8IGdldF9jYWJhY19ieXBhc3Mo JmxjLT5lcC0+Y2MpOworICAgIGlmICh2ID49IHUpIHsKKyAgICAgICAgdiA9ICh2IDw8IDEpIHwg Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgICAgIHYgLT0gdTsKKyAgICB9Cisg ICAgcmV0dXJuIHY7Cit9CisKKy8vIDkuMy4zLjYgTGltaXRlZCBrLXRoIG9yZGVyIEV4cC1Hb2xv bWIgYmluYXJpemF0aW9uIHByb2Nlc3MKK3N0YXRpYyBpbnQgbGltaXRlZF9rdGhfb3JkZXJfZWdr X2RlY29kZShDQUJBQ0NvbnRleHQgKmMsIGNvbnN0IGludCBrLCBjb25zdCBpbnQgbWF4X3ByZV9l eHRfbGVuLCBjb25zdCBpbnQgdHJ1bmNfc3VmZml4X2xlbikKK3sKKyAgICBpbnQgcHJlX2V4dF9s ZW4gPSAwOworICAgIGludCBlc2NhcGVfbGVuZ3RoOworICAgIGludCB2YWwgPSAwOworICAgIHdo aWxlICgocHJlX2V4dF9sZW4gPCBtYXhfcHJlX2V4dF9sZW4pICYmIGdldF9jYWJhY19ieXBhc3Mo YykpCisgICAgICAgIHByZV9leHRfbGVuKys7CisgICAgaWYgKHByZV9leHRfbGVuID09IG1heF9w cmVfZXh0X2xlbikKKyAgICAgICAgZXNjYXBlX2xlbmd0aCA9IHRydW5jX3N1ZmZpeF9sZW47Cisg ICAgZWxzZQorICAgICAgICBlc2NhcGVfbGVuZ3RoID0gcHJlX2V4dF9sZW4gKyBrOworICAgIHdo aWxlIChlc2NhcGVfbGVuZ3RoLS0gPiAwKSB7CisgICAgICAgIHZhbCA9ICh2YWwgPDwgMSkgKyBn ZXRfY2FiYWNfYnlwYXNzKGMpOworICAgIH0KKyAgICB2YWwgKz0gKCgxIDw8IHByZV9leHRfbGVu KSAtIDEpIDw8IGs7CisgICAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxp bmUKK3ZvaWQgZ2V0X2xlZnRfdG9wKGNvbnN0IFZWQ0xvY2FsQ29udGV4dCAqbGMsIHVpbnQ4X3Qg KmxlZnQsIHVpbnQ4X3QgKnRvcCwKKyAgICBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwgY29u c3QgdWludDhfdCAqbGVmdF9jdHgsIGNvbnN0IHVpbnQ4X3QgKnRvcF9jdHgpCit7CisgICAgY29u c3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBjb25zdCBWVkNTUFMgKnNwcyAg ICAgICAgID0gZmMtPnBzLnNwczsKKyAgICBjb25zdCBpbnQgbWluX2NiX3dpZHRoICAgID0gZmMt PnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAgIGNvbnN0IGludCB4MGIgPSBhdl9tb2RfdWludHAy KHgwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAgY29uc3QgaW50IHkwYiA9IGF2X21vZF91 aW50cDIoeTAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICBjb25zdCBpbnQgeF9jYiA9IHgw ID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgIGNvbnN0IGludCB5X2NiID0geTAgPj4g c3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisKKyAgICBpZiAobGMtPmN0Yl9sZWZ0X2ZsYWcgfHwg eDBiKQorICAgICAgICAqbGVmdCA9IFNBTVBMRV9DVEIobGVmdF9jdHgsIHhfY2IgLSAxLCB5X2Ni KTsKKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnIHx8IHkwYikKKyAgICAgICAgKnRvcCA9IFNBTVBM RV9DVEIodG9wX2N0eCwgeF9jYiwgeV9jYiAtIDEpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lu bGluZQordWludDhfdCBnZXRfaW5jKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3Qg KmN0eCkKK3sKKyAgICB1aW50OF90IGxlZnQgPSAwLCB0b3AgPSAwOworICAgIGdldF9sZWZ0X3Rv cChsYywgJmxlZnQsICZ0b3AsIGxjLT5jdS0+eDAsIGxjLT5jdS0+eTAsIGN0eCwgY3R4KTsKKyAg ICByZXR1cm4gbGVmdCArIHRvcDsKK30KKworaW50IGZmX3Z2Y19zYW9fbWVyZ2VfZmxhZ19kZWNv ZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFNBT19NRVJH RV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29u dGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoU0FPX1RZUEVfSURYKSkKKyAgICAgICAg cmV0dXJuIFNBT19OT1RfQVBQTElFRDsKKworICAgIGlmICghZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYykpCisgICAgICAgIHJldHVybiBTQU9fQkFORDsKKyAgICByZXR1cm4gU0FPX0VER0U7 Cit9CisKK2ludCBmZl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgaW50IHZhbHVlID0gZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7 CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgdmFsdWUgPSAodmFs dWUgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFs dWU7Cit9CisKK2ludCBmZl92dmNfc2FvX29mZnNldF9hYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgaW50IGkgPSAwOworICAgIGNvbnN0IGludCBsZW5ndGggPSAoMSA8PCAo RkZNSU4obGMtPmZjLT5wcy5zcHMtPmJpdF9kZXB0aCwgMTApIC0gNSkpIC0gMTsKKworICAgIHdo aWxlIChpIDwgbGVuZ3RoICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAg ICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWduX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNfYnlwYXNz KCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19zYW9fZW9fY2xhc3NfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IHJldCA9IGdldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpIDw8IDE7CisgICAgcmV0ICAgIHw9IGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2Mp OworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBmZl92dmNfYWxmX2N0Yl9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IGludCByeCwgY29uc3QgaW50IHJ5LCBjb25zdCBpbnQgY19pZHgp Cit7CisgICAgaW50IGluYyA9IGNfaWR4ICogMzsKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQg KmZjID0gbGMtPmZjOworICAgIGlmIChsYy0+Y3RiX2xlZnRfZmxhZykgeworICAgICAgICBjb25z dCBBTEZQYXJhbXMgKmxlZnQgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCAtIDEsIHJ5KTsKKyAgICAg ICAgaW5jICs9IGxlZnQtPmN0Yl9mbGFnW2NfaWR4XTsKKyAgICB9CisgICAgaWYgKGxjLT5jdGJf dXBfZmxhZykgeworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmFib3ZlID0gJkNUQihmYy0+dGFi LmFsZiwgcngsIHJ5IC0gMSk7CisgICAgICAgIGluYyArPSBhYm92ZS0+Y3RiX2ZsYWdbY19pZHhd OworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKEFMRl9DVEJfRkxBRyArIGluYyk7Cit9CisK K2ludCBmZl92dmNfYWxmX3VzZV9hcHNfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IHJldHVybiBHRVRfQ0FCQUMoQUxGX1VTRV9BUFNfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfYWxm X2x1bWFfcHJldl9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJu IHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCBsYy0+c2MtPnNoLnItPnNoX251bV9hbGZfYXBz X2lkc19sdW1hIC0gMSk7Cit9CisKK2ludCBmZl92dmNfYWxmX2x1bWFfZml4ZWRfZmlsdGVyX2lk eChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB0cnVuY2F0ZWRfYmluYXJ5X2Rl Y29kZShsYywgMTUpOworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGNfaWR4LCBjb25zdCBpbnQgbnVtX2Nocm9tYV9m aWx0ZXJzKQoreworICAgIGludCBpID0gMDsKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gbnVtX2No cm9tYV9maWx0ZXJzIC0gMTsKKworICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIEdFVF9DQUJBQyhB TEZfQ1RCX0ZJTFRFUl9BTFRfSURYICsgY19pZHggLSAxKSkKKyAgICAgICAgaSsrOworICAgIHJl dHVybiBpOworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfY2NfaWRjKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCByeCwgY29uc3QgaW50IHJ5LCBjb25zdCBpbnQgaWR4LCBjb25zdCBpbnQg Y2NfZmlsdGVyc19zaWduYWxsZWQpCit7CisgICAgaW50IGluYyA9ICFpZHggPyBBTEZfQ1RCX0ND X0NCX0lEQyA6IEFMRl9DVEJfQ0NfQ1JfSURDOworICAgIGludCBpID0gMDsKKyAgICBjb25zdCBW VkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGlmIChsYy0+Y3RiX2xlZnRfZmxhZykg eworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmxlZnQgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCAt IDEsIHJ5KTsKKyAgICAgICAgaW5jICs9IGxlZnQtPmN0Yl9jY19pZGNbaWR4XSAhPSAwOworICAg IH0KKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAq YWJvdmUgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCwgcnkgLSAxKTsKKyAgICAgICAgaW5jICs9IGFi b3ZlLT5jdGJfY2NfaWRjW2lkeF0gIT0gMDsKKyAgICB9CisKKyAgICBpZiAoIUdFVF9DQUJBQyhp bmMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpKys7CisgICAgd2hpbGUgKGkgPCBjY19maWx0 ZXJzX3NpZ25hbGxlZCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAg aSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3NwbGl0X2N1X2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAsCisgICAgY29uc3QgaW50 IGNiX3dpZHRoLCBjb25zdCBpbnQgY2JfaGVpZ2h0LCBjb25zdCBpbnQgaXNfY2hyb21hLCBjb25z dCBWVkNBbGxvd2VkU3BsaXQgKmEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9 IGxjLT5mYzsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgICAgICAgID0gZmMtPnBzLnBwczsKKyAg ICBjb25zdCBpbnQgaXNfaW5zaWRlICAgICAgID0gKHgwICsgY2Jfd2lkdGggPD0gcHBzLT53aWR0 aCkgJiYgKHkwICsgY2JfaGVpZ2h0IDw9IHBwcy0+aGVpZ2h0KTsKKworICAgIGlmICgoYS0+YnR2 IHx8IGEtPmJ0aCB8fCBhLT50dHYgfHwgYS0+dHRoIHx8IGEtPnF0KSAmJiBpc19pbnNpZGUpCisg ICAgeworICAgICAgICB1aW50OF90IGluYyA9IDAsIGxlZnRfaGVpZ2h0ID0gY2JfaGVpZ2h0LCB0 b3Bfd2lkdGggPSBjYl93aWR0aDsKKworICAgICAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2hl aWdodCwgJnRvcF93aWR0aCwgeDAsIHkwLCBmYy0+dGFiLmNiX2hlaWdodFtpc19jaHJvbWFdLCBm Yy0+dGFiLmNiX3dpZHRoW2lzX2Nocm9tYV0pOworICAgICAgICBpbmMgKz0gbGVmdF9oZWlnaHQg PCBjYl9oZWlnaHQ7CisgICAgICAgIGluYyArPSB0b3Bfd2lkdGggICA8IGNiX3dpZHRoOworICAg ICAgICBpbmMgKz0gKGEtPmJ0diArIGEtPmJ0aCArIGEtPnR0diArIGEtPnR0aCArIDIgKiBhLT5x dCAtIDEpIC8gMiAqIDM7CisKKyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhTUExJVF9DVV9GTEFH ICsgaW5jKTsKKworICAgIH0KKyAgICByZXR1cm4gIWlzX2luc2lkZTsKK30KKworc3RhdGljIGlu dCBzcGxpdF9xdF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAs IGNvbnN0IGludCB5MCwgY29uc3QgaW50IGNoX3R5cGUsIGNvbnN0IGludCBjcXRfZGVwdGgpCit7 CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBpbnQgaW5jID0g MDsKKyAgICB1aW50OF90IGRlcHRoX2xlZnQgPSAwLCBkZXB0aF90b3AgPSAwOworCisgICAgZ2V0 X2xlZnRfdG9wKGxjLCAgJmRlcHRoX2xlZnQsICZkZXB0aF90b3AsIHgwLCB5MCwgZmMtPnRhYi5j cXRfZGVwdGhbY2hfdHlwZV0sIGZjLT50YWIuY3F0X2RlcHRoW2NoX3R5cGVdKTsKKyAgICBpbmMg Kz0gZGVwdGhfbGVmdCA+IGNxdF9kZXB0aDsKKyAgICBpbmMgKz0gZGVwdGhfdG9wICA+IGNxdF9k ZXB0aDsKKyAgICBpbmMgKz0gKGNxdF9kZXB0aCA+PSAyKSAqIDM7CisKKyAgICByZXR1cm4gR0VU X0NBQkFDKFNQTElUX1FUX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9j dV92ZXJ0aWNhbF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAs IGNvbnN0IGludCB5MCwKKyAgICBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWln aHQsIGNvbnN0IGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQqIGEpCit7CisgICAg aWYgKChhLT5idGggfHwgYS0+dHRoKSAmJiAoYS0+YnR2IHx8IGEtPnR0dikpIHsKKyAgICAgICAg aW50IGluYzsKKyAgICAgICAgY29uc3QgaW50IHYgPSBhLT5idHYgKyBhLT50dHY7CisgICAgICAg IGNvbnN0IGludCBoID0gYS0+YnRoICsgYS0+dHRoOworICAgICAgICBpZiAodiA+IGgpCisgICAg ICAgICAgICBpbmMgPSA0OworICAgICAgICBlbHNlIGlmICh2IDwgaCkKKyAgICAgICAgICAgIGlu YyA9IDM7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0 ICpmYyA9IGxjLT5mYzsKKyAgICAgICAgICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAgPSBm Yy0+cHMuc3BzOworICAgICAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0aCAgICA9IGZjLT5w cy5wcHMtPm1pbl9jYl93aWR0aDsKKyAgICAgICAgICAgIGNvbnN0IGludCB4MGIgICAgICAgICAg ICAgPSBhdl9tb2RfdWludHAyKHgwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAgICAgICAg ICBjb25zdCBpbnQgeTBiICAgICAgICAgICAgID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5jdGJf bG9nMl9zaXplX3kpOworICAgICAgICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICAgICA9IHgw ID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAgICAgICAgY29uc3QgaW50IHlfY2Ig ICAgICAgICAgICA9IHkwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAgICAgICAg Y29uc3QgaW50IGF2YWlsYWJsZV9hICAgICA9IGxjLT5jdGJfdXBfZmxhZyB8fCB5MGI7CisgICAg ICAgICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2wgICAgID0gbGMtPmN0Yl9sZWZ0X2ZsYWcgfHwg eDBiOworICAgICAgICAgICAgY29uc3QgaW50IGRhICAgICAgICAgICAgICA9IGNiX3dpZHRoICAv IChhdmFpbGFibGVfYSA/IFNBTVBMRV9DVEIoZmMtPnRhYi5jYl93aWR0aFtjaF90eXBlXSwgeF9j YiwgeV9jYiAtIDEpIDogMSk7CisgICAgICAgICAgICBjb25zdCBpbnQgZGwgICAgICAgICAgICAg ID0gY2JfaGVpZ2h0IC8gKGF2YWlsYWJsZV9sID8gU0FNUExFX0NUQihmYy0+dGFiLmNiX2hlaWdo dFtjaF90eXBlXSwgeF9jYiAtIDEsIHlfY2IpIDogMSk7CisKKyAgICAgICAgICAgIGlmIChkYSA9 PSBkbCB8fCAhYXZhaWxhYmxlX2EgfHwgIWF2YWlsYWJsZV9sKQorICAgICAgICAgICAgICAgIGlu YyA9IDA7CisgICAgICAgICAgICBlbHNlIGlmIChkYSA8IGRsKQorICAgICAgICAgICAgICAgIGlu YyA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5jID0gMjsKKyAgICAg ICAgfQorICAgICAgICByZXR1cm4gR0VUX0NBQkFDKE1UVF9TUExJVF9DVV9WRVJUSUNBTF9GTEFH ICsgaW5jKTsKKyAgICB9CisgICAgcmV0dXJuICEoYS0+YnRoIHx8IGEtPnR0aCk7Cit9CisKK3N0 YXRpYyBpbnQgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQg KmxjLCBjb25zdCBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcsIGNvbnN0IGludCBtdHRf ZGVwdGgpCit7CisgICAgY29uc3QgaW50IGluYyA9ICgyICogbXR0X3NwbGl0X2N1X3ZlcnRpY2Fs X2ZsYWcpICsgKChtdHRfZGVwdGggPD0gMSkgPyAxIDogMCk7CisgICAgcmV0dXJuIEdFVF9DQUJB QyhNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgKyBpbmMpOworfQorCitWVkNTcGxpdE1vZGUgZmZf dnZjX3NwbGl0X21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBp bnQgeTAsIGNvbnN0IGludCBjYl93aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwKKyAgICBjb25z dCBpbnQgY3F0X2RlcHRoLCBjb25zdCBpbnQgbXR0X2RlcHRoLCBjb25zdCBpbnQgY2hfdHlwZSwg Y29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKQoreworICAgIGNvbnN0IGludCBhbGxvd19ub19xdCA9 IGEtPmJ0diB8fCBhLT5idGggfHwgYS0+dHR2IHx8IGEtPnR0aDsKKyAgICBpbnQgc3BsaXRfcXRf ZmxhZzsKKyAgICBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgaW50IG10dF9z cGxpdF9jdV9iaW5hcnlfZmxhZzsKKyAgICBjb25zdCBWVkNTcGxpdE1vZGUgbXR0X3NwbGl0X21v ZGVzW10gPSB7CisgICAgICAgIFNQTElUX1RUX0hPUiwgU1BMSVRfQlRfSE9SLCBTUExJVF9UVF9W RVIsIFNQTElUX0JUX1ZFUiwKKyAgICB9OworICAgIGlmIChhbGxvd19ub19xdCAmJiBhLT5xdCkg eworICAgICAgICBzcGxpdF9xdF9mbGFnID0gc3BsaXRfcXRfZmxhZ19kZWNvZGUobGMsIHgwLCB5 MCwgY2hfdHlwZSwgY3F0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzcGxpdF9xdF9m bGFnID0gIWFsbG93X25vX3F0IHx8IGEtPnF0OworICAgIH0KKyAgICBpZiAoc3BsaXRfcXRfZmxh ZykKKyAgICAgICAgcmV0dXJuIFNQTElUX1FUOworICAgIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9m bGFnID0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWdfZGVjb2RlKGxjLCB4MCwgeTAsIGNiX3dp ZHRoLCBjYl9oZWlnaHQsIGNoX3R5cGUsIGEpOworICAgIGlmICgoYS0+YnR2ICYmIGEtPnR0diAm JiBtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZykgfHwKKyAgICAgICAgKGEtPmJ0aCAmJiBhLT50 dGggJiYgIW10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSkgeworICAgICAgICBtdHRfc3BsaXRf Y3VfYmluYXJ5X2ZsYWcgPSBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWdfZGVjb2RlKGxjLCBtdHRf c3BsaXRfY3VfdmVydGljYWxfZmxhZywgbXR0X2RlcHRoKTsKKyAgICB9IGVsc2UgeworICAgICAg ICBpZiAoIWEtPmJ0diAmJiAhYS0+YnRoKQorICAgICAgICAgICAgbXR0X3NwbGl0X2N1X2JpbmFy eV9mbGFnID0gMDsKKyAgICAgICAgZWxzZSBpZiAoIWEtPnR0diAmJiAhYS0+dHRoKQorICAgICAg ICAgICAgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gMTsKKyAgICAgICAgZWxzZSBpZiAoYS0+ YnRoICYmIGEtPnR0dikKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDEg LSBtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg bXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7Cisg ICAgfQorICAgIHJldHVybiBtdHRfc3BsaXRfbW9kZXNbKG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9m bGFnIDw8IDEpICsgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnXTsKK30KKworaW50IGZmX3Z2Y19u b25faW50ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGlu dCB5MCwgY29uc3QgaW50IGNoX3R5cGUpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpm YyA9IGxjLT5mYzsKKyAgICB1aW50OF90IGluYywgbGVmdCA9IDAsIHRvcCA9IDA7CisKKyAgICBn ZXRfbGVmdF90b3AobGMsICZsZWZ0LCAmdG9wLCB4MCwgeTAsIGZjLT50YWIuY3BtW2NoX3R5cGVd LCBmYy0+dGFiLmNwbVtjaF90eXBlXSk7CisgICAgaW5jID0gbGVmdCB8fCB0b3A7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhOT05fSU5URVJfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJl ZF9tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2Nocm9tYSkKK3sK KyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGNvbnN0IENvZGlu Z1VuaXQgKmN1ICAgICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBpbmMsIGxlZnQgPSAwLCB0b3Ag PSAwOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgY3UtPngwLCBjdS0+eTAs IGZjLT50YWIuY3BtW2lzX2Nocm9tYV0sIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0pOworICAgIGlu YyA9IGxlZnQgfHwgdG9wOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX0ZMQUcgKyBp bmMpOworfQorCitpbnQgZmZfdnZjX3ByZWRfbW9kZV9wbHRfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX1BMVF9GTEFHKTsKK30KKwor aW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0xVTUFfRkxBRyk7Cit9CisKK2ludCBm Zl92dmNfaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9ESVJfRkxBRyk7Cit9CisKK2lu dCBmZl92dmNfaW50cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9GTEFHKTsKK30KKworaW50 IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxBRyk7Cit9 CisKK2ludCBmZl92dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVp bnQ4X3QgKmN1X3NraXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2luYyhsYywg Y3Vfc2tpcF9mbGFnKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NLSVBfRkxBRyArIGluYyk7 Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX2liY19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IGludCBpc19jaHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9 IGxjLT5mYzsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgID0gbGMtPmN1OworICAgIHVp bnQ4X3QgbGVmdF9tb2RlID0gTU9ERV9JTlRFUiwgdG9wX21vZGUgPSBNT0RFX0lOVEVSOworICAg IGludCBpbmM7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X21vZGUsICZ0b3BfbW9kZSwg Y3UtPngwLCBjdS0+eTAsIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0sIGZjLT50YWIuY3BtW2lzX2No cm9tYV0pOworICAgIGluYyA9IChsZWZ0X21vZGUgPT0gTU9ERV9JQkMpICsgKHRvcF9tb2RlID09 IE1PREVfSUJDKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKFBSRURfTU9ERV9JQkNfRkxBRyArIGlu Yyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgdWludDhfdCAqaW50cmFfbWlwX2ZsYWcpCit7CisgICAgY29uc3QgaW50IHcgICA9IGxj LT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGggICA9IGxjLT5jdS0+Y2JfaGVpZ2h0Owor ICAgIGNvbnN0IGludCBpbmMgPSAgKHcgPiBoICogMiB8fCBoID4gdyAqIDIpID8gMyA6IGdldF9p bmMobGMsIGludHJhX21pcF9mbGFnKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX01JUF9G TEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9taXBfdHJhbnNwb3NlZF9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgY29uc3QgaW50IHcgICAgID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25z dCBpbnQgaCAgICAgPSBsYy0+Y3UtPmNiX2hlaWdodDsKKyAgICBjb25zdCBpbnQgY19tYXggPSAo dyA9PSA0ICYmIGggPT0gNCkgPyAxNSA6CisgICAgICAgICgodyA9PSA0IHx8IGggPT0gNCkgfHwg KHcgPT0gOCAmJiBoID09IDgpKSA/IDc6IDU7CisgICAgcmV0dXJuIHRydW5jYXRlZF9iaW5hcnlf ZGVjb2RlKGxjLCBjX21heCk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9yZWZfaWR4KFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDI7 IGkrKykgeworICAgICAgICBpZiAoIUdFVF9DQUJBQyhJTlRSQV9MVU1BX1JFRl9JRFggKyBpKSkK KyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZm X3Z2Y19pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcpOwor fQorCitlbnVtIElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZykKK3sKKyAgICBpZiAo IWludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKQorICAgICAgICByZXR1cm4gSVNQX05PX1NQ TElUOworICAgIHJldHVybiAxICsgR0VUX0NBQkFDKElOVFJBX1NVQlBBUlRJVElPTlNfU1BMSVRf RkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfTFVNQV9NUE1fRkxBRyk7Cit9 CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoSU5UUkFfTFVNQV9OT1RfUExBTkFSX0ZMQUcgKyAhaW50cmFfc3VicGFy dGl0aW9uc19tb2RlX2ZsYWcpOworfQorCitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCA0 ICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAgIC8qIG5vdGhp bmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fcmVt YWluZGVyKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHRydW5jYXRlZF9iaW5h cnlfZGVjb2RlKGxjLCA2MCk7Cit9CisKK2ludCBmZl92dmNfY2NsbV9tb2RlX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKENDTE1fTU9ERV9GTEFHKTsK K30KKworaW50IGZmX3Z2Y19jY2xtX21vZGVfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgaWYgKCFHRVRfQ0FCQUMoQ0NMTV9NT0RFX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAg IHJldHVybiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSArIDE7Cit9CisKK2ludCBmZl92 dmNfaW50cmFfY2hyb21hX3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGlm ICghR0VUX0NBQkFDKElOVFJBX0NIUk9NQV9QUkVEX01PREUpKQorICAgICAgICByZXR1cm4gNDsK KyAgICByZXR1cm4gKGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8IDEpIHwgZ2V0X2Nh YmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfZ2VuZXJhbF9tZXJnZV9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhHRU5FUkFM X01FUkdFX0ZMQUcpOworfQorCitzdGF0aWMgaW50IGdldF9pbnRlcl9mbGFnX2luYyhWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCkKK3sKKyAgICB1aW50OF90 IGxlZnRfbWVyZ2UgPSAwLCAgdG9wX21lcmdlID0gMDsKKyAgICB1aW50OF90IGxlZnRfYWZmaW5l ID0gMCwgdG9wX2FmZmluZSA9IDA7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxj LT5mYzsKKworICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfbWVyZ2UsICZ0b3BfbWVyZ2UsIHgw LCB5MCwgZmMtPnRhYi5tc2YsIGZjLT50YWIubXNmKTsKKyAgICBnZXRfbGVmdF90b3AobGMsICZs ZWZ0X2FmZmluZSwgJnRvcF9hZmZpbmUsIHgwLCB5MCwgZmMtPnRhYi5pYWYsIGZjLT50YWIuaWFm KTsKKyAgICByZXR1cm4gKGxlZnRfbWVyZ2UgfHwgbGVmdF9hZmZpbmUpICsgKHRvcF9tZXJnZSAr IHRvcF9hZmZpbmUpOworfQorCitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2ludGVyX2ZsYWdfaW5j KGxjLCBsYy0+Y3UtPngwLCBsYy0+Y3UtPnkwKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1FUkdF X1NVQkJMT0NLX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lk eChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgbWF4X251bV9zdWJibG9ja19tZXJnZV9j YW5kKQoreworICAgIGludCBpOworICAgIGlmICghR0VUX0NBQkFDKE1FUkdFX1NVQkJMT0NLX0lE WCkpCisgICAgICAgIHJldHVybiAwOworICAgIGZvciAoaSA9IDE7IGkgPCBtYXhfbnVtX3N1YmJs b2NrX21lcmdlX2NhbmQgLSAxICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKysp CisgICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNf cmVndWxhcl9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBjdV9za2lw X2ZsYWcpCit7CisgICAgaW50IGluYyA9ICFjdV9za2lwX2ZsYWc7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhSRUdVTEFSX01FUkdFX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX21tdmRfbWVy Z2VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoTU1W RF9NRVJHRV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19tbXZkX2NhbmRfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoTU1WRF9DQU5EX0ZMQUcpOworfQor CitzdGF0aWMgaW50IG1tdmRfZGlzdGFuY2VfaWR4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIGludCBpOworICAgIGlmICghR0VUX0NBQkFDKE1NVkRfRElTVEFOQ0VfSURYKSkK KyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChpID0gMTsgaSA8IDcgJiYgZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1 cm4gaTsKK30KKworc3RhdGljIGludCBtbXZkX2RpcmVjdGlvbl9pZHhfZGVjb2RlKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIChnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNj KSA8PCAxKSB8IGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCit2b2lkIGZmX3Z2 Y19tbXZkX29mZnNldF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgTXYgKm1tdmRfb2Zmc2V0 LCBjb25zdCBpbnQgcGhfbW12ZF9mdWxscGVsX29ubHlfZmxhZykKK3sKKyAgICBjb25zdCBpbnQg c2hpZnQgPSBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnID8gNCA6IDI7CisgICAgY29uc3QgaW50 IG1tdmRfZGlzdGFuY2UgPSAxIDw8IChtbXZkX2Rpc3RhbmNlX2lkeF9kZWNvZGUobGMpICsgc2hp ZnQpOworICAgIGNvbnN0IGludCBtbXZkX2RpcmVjdGlvbl9pZHggPSBtbXZkX2RpcmVjdGlvbl9p ZHhfZGVjb2RlKGxjKTsKKyAgICBjb25zdCBpbnQgbW12ZF9zaWduc1tdWzJdID0geyB7MSwgMH0s IHstMSwgMH0sIHswLCAxfSwgezAsIC0xfSB9OworICAgIG1tdmRfb2Zmc2V0LT54ID0gbW12ZF9k aXN0YW5jZSAqIG1tdmRfc2lnbnNbbW12ZF9kaXJlY3Rpb25faWR4XVswXTsKKyAgICBtbXZkX29m ZnNldC0+eSA9IG1tdmRfZGlzdGFuY2UgKiBtbXZkX3NpZ25zW21tdmRfZGlyZWN0aW9uX2lkeF1b MV07Cit9CisKK3N0YXRpYyBQcmVkTW9kZSBnZXRfbHVtYV9wcmVkX21vZGUoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAg IGNvbnN0IENvZGluZ1VuaXQgKmN1ICAgICAgPSBsYy0+Y3U7CisgICAgUHJlZE1vZGUgcHJlZF9t b2RlOworCisgICAgaWYgKGN1LT50cmVlX3R5cGUgIT0gRFVBTF9UUkVFX0NIUk9NQSkgeworICAg ICAgICBwcmVkX21vZGUgPSBjdS0+cHJlZF9tb2RlOworICAgIH0gZWxzZSB7CisgICAgICAgIGNv bnN0IGludCB4X2NiICAgICAgICAgPSBjdS0+eDAgPj4gZmMtPnBzLnNwcy0+bWluX2NiX2xvZzJf c2l6ZV95OworICAgICAgICBjb25zdCBpbnQgeV9jYiAgICAgICAgID0gY3UtPnkwID4+IGZjLT5w cy5zcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0 aCA9IGZjLT5wcy5wcHMtPm1pbl9jYl93aWR0aDsKKyAgICAgICAgcHJlZF9tb2RlID0gU0FNUExF X0NUQihmYy0+dGFiLmNwbVswXSwgeF9jYiwgeV9jYik7CisgICAgfQorICAgIHJldHVybiBwcmVk X21vZGU7Cit9CisKK2ludCBmZl92dmNfbWVyZ2VfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBpbnQg aXNfaWJjID0gZ2V0X2x1bWFfcHJlZF9tb2RlKGxjKSA9PSBNT0RFX0lCQzsKKyAgICBjb25zdCBp bnQgY19tYXggPSAoaXNfaWJjID8gc3BzLT5tYXhfbnVtX2liY19tZXJnZV9jYW5kIDogc3BzLT5t YXhfbnVtX21lcmdlX2NhbmQpIC0gMTsKKyAgICBpbnQgaTsKKworICAgIGlmICghR0VUX0NBQkFD KE1FUkdFX0lEWCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChpID0gMTsgaSA8IGNf bWF4ICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAgIC8qIG5v dGhpbmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX3BhcnRp dGlvbl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaSA9IDA7CisKKyAgICBm b3IgKGludCBqID0gMDsgaiA8IDY7IGorKykKKyAgICAgICAgaSA9IChpIDw8IDEpIHwgZ2V0X2Nh YmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2 Y19tZXJnZV9ncG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpZHgpCit7Cisg ICAgY29uc3QgaW50IGNfbWF4ID0gbGMtPmZjLT5wcy5zcHMtPm1heF9udW1fZ3BtX21lcmdlX2Nh bmQgLSBpZHggLSAxOworICAgIGludCBpOworCisgICAgaWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURY KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAxOyBpIDwgY19tYXggJiYgZ2V0 X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsK KworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2NpaXBfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ0lJUF9GTEFHKTsKK30KKworUHJlZEZs YWcgZmZfdnZjX3ByZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaXNfYikK K3sKKyAgICBjb25zdCBpbnQgdyA9IGxjLT5jdS0+Y2Jfd2lkdGg7CisgICAgY29uc3QgaW50IGgg PSBsYy0+Y3UtPmNiX2hlaWdodDsKKyAgICBpZiAoIWlzX2IpCisgICAgICAgIHJldHVybiAgUEZf TDA7CisgICAgaWYgKHcgKyBoID4gMTIpIHsKKyAgICAgICAgY29uc3QgaW50IGxvZzIgPSBhdl9s b2cyKHcpICsgYXZfbG9nMihoKTsKKyAgICAgICAgY29uc3QgaW50IGluYyA9IDcgLSAoKDEgKyBs b2cyKT4+MSk7CisgICAgICAgIGlmIChHRVRfQ0FCQUMoSU5URVJfUFJFRF9JREMgKyBpbmMpKQor ICAgICAgICAgICAgcmV0dXJuIFBGX0JJOworICAgIH0KKyAgICByZXR1cm4gUEZfTDAgKyBHRVRf Q0FCQUMoSU5URVJfUFJFRF9JREMgKyA1KTsKK30KKworaW50IGZmX3Z2Y19pbnRlcl9hZmZpbmVf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBpbmMgPSBnZXRfaW50 ZXJfZmxhZ19pbmMobGMsIGxjLT5jdS0+eDAsIGxjLT5jdS0+eTApOworICAgIHJldHVybiBHRVRf Q0FCQUMoSU5URVJfQUZGSU5FX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX2N1X2FmZmlu ZV90eXBlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KENVX0FGRklORV9UWVBFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3N5bV9tdmRfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoU1lNX01WRF9GTEFHKTsK K30KKworaW50IGZmX3Z2Y19yZWZfaWR4X2x4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVp bnQ4X3QgbmJfcmVmcykKK3sKKyAgICBjb25zdCBpbnQgY19tYXggPSBuYl9yZWZzIC0gMTsKKyAg ICBjb25zdCBpbnQgbWF4X2N0eCA9IEZGTUlOKGNfbWF4LCAyKTsKKyAgICBpbnQgaSA9IDA7CisK KyAgICB3aGlsZSAoaSA8IG1heF9jdHggJiYgR0VUX0NBQkFDKFJFRl9JRFhfTFggKyBpKSkKKyAg ICAgICAgaSsrOworICAgIGlmIChpID09IDIpIHsKKyAgICAgICAgd2hpbGUgKGkgPCBjX21heCAm JiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICB9 CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMF9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNfTVZEX0dSRUFU RVIwX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjFfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX01WRF9HUkVBVEVSMV9G TEFHKTsKK30KKworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIHJldHVybiBsaW1pdGVkX2t0aF9vcmRlcl9lZ2tfZGVjb2RlKCZsYy0+ZXAtPmNj LCAxLCAxNSwgMTcpOworfQorCitpbnQgZmZfdnZjX212ZF9zaWduX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9 CisKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBy ZXR1cm4gR0VUX0NBQkFDKE1WUF9MWF9GTEFHKTsKK30KKworc3RhdGljIGludCBhbXZyX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmluZV9mbGFnKQoreworICAg IHJldHVybiBHRVRfQ0FCQUMoQU1WUl9GTEFHICsgaW50ZXJfYWZmaW5lX2ZsYWcpOworfQorCitz dGF0aWMgaW50IGFtdnJfcHJlY2lzaW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBp bnQgaW5jLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgaW50IGkgPSAwOworICAgIGlmICghR0VU X0NBQkFDKEFNVlJfUFJFQ0lTSU9OX0lEWCArIGluYykpCisgICAgICAgIHJldHVybiAwOworICAg IGkrKzsKKyAgICBpZiAoaSA8IGNfbWF4ICYmIEdFVF9DQUJBQyhBTVZSX1BSRUNJU0lPTl9JRFgg KyAxKSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2FtdnJf c2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludGVyX2FmZmluZV9mbGFnLAor ICAgIGNvbnN0IFByZWRNb2RlIHByZWRfbW9kZSwgY29uc3QgaW50IGhhc19hbXZyX2ZsYWcpCit7 CisgICAgaW50IGFtdnJfc2hpZnQgPSAyOworICAgIGlmIChoYXNfYW12cl9mbGFnKSB7CisgICAg ICAgIGlmIChhbXZyX2ZsYWcobGMsIGludGVyX2FmZmluZV9mbGFnKSkgeworICAgICAgICAgICAg aW50IGlkeDsKKyAgICAgICAgICAgIGlmIChpbnRlcl9hZmZpbmVfZmxhZykgeworICAgICAgICAg ICAgICAgIGlkeCA9IGFtdnJfcHJlY2lzaW9uX2lkeChsYywgMiwgMSk7CisgICAgICAgICAgICAg ICAgYW12cl9zaGlmdCA9IGlkeCAqIDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByZWRfbW9k ZSA9PSBNT0RFX0lCQykgeworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJlY2lzaW9uX2lk eChsYywgMSwgMSk7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IDQgKyBpZHggKiAyOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNo aWZ0c1tdID0gezMsIDQsIDZ9OworICAgICAgICAgICAgICAgIGlkeCA9IGFtdnJfcHJlY2lzaW9u X2lkeChsYywgMCwgMik7CisgICAgICAgICAgICAgICAgYW12cl9zaGlmdCA9IHNoaWZ0c1tpZHhd OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBhbXZyX3NoaWZ0 OworfQorCitpbnQgZmZfdnZjX2Jjd19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50 IG5vX2JhY2t3YXJkX3ByZWRfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgY19tYXggPSBub19iYWNr d2FyZF9wcmVkX2ZsYWcgPyA0IDogMjsKKyAgICBpbnQgaSA9IDE7CisgICAgaWYgKCFHRVRfQ0FC QUMoQkNXX0lEWCkpCisgICAgICAgIHJldHVybiAwOworICAgIHdoaWxlIChpIDwgY19tYXggJiYg Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4g aTsKK30KKworaW50IGZmX3Z2Y190dV9jYl9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp Cit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhUVV9DQl9DT0RFRF9GTEFHICsgbGMtPmN1LT5iZHBj bV9mbGFnWzFdKTsKK30KKworaW50IGZmX3Z2Y190dV9jcl9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGludCB0dV9jYl9jb2RlZF9mbGFnKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMo VFVfQ1JfQ09ERURfRkxBRyArIChsYy0+Y3UtPmJkcGNtX2ZsYWdbMV0gPyAyIDogdHVfY2JfY29k ZWRfZmxhZykpOworfQorCitpbnQgZmZfdnZjX3R1X3lfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKQoreworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ID0gbGMtPmN1OworICAgIGludCBp bmM7CisgICAgaWYgKGN1LT5iZHBjbV9mbGFnWzBdKQorICAgICAgICBpbmMgPSAxOworICAgIGVs c2UgaWYgKGN1LT5pc3Bfc3BsaXRfdHlwZSA9PSBJU1BfTk9fU1BMSVQpCisgICAgICAgIGluYyA9 IDA7CisgICAgZWxzZQorICAgICAgICBpbmMgPSAyICsgbGMtPnBhcnNlLnByZXZfdHVfY2JmX3k7 CisgICAgbGMtPnBhcnNlLnByZXZfdHVfY2JmX3kgPSBHRVRfQ0FCQUMoVFVfWV9DT0RFRF9GTEFH ICsgaW5jKTsKKyAgICByZXR1cm4gbGMtPnBhcnNlLnByZXZfdHVfY2JmX3k7Cit9CisKK2ludCBm Zl92dmNfY3VfcXBfZGVsdGFfYWJzKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IHYs IGksIGs7CisgICAgaWYgKCFHRVRfQ0FCQUMoQ1VfUVBfREVMVEFfQUJTKSkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICAvLyBwcmVmaXhWYWwKKyAgICBmb3IgKHYgPSAxOyB2IDwgNSAmJiBHRVRf Q0FCQUMoQ1VfUVBfREVMVEFfQUJTICsgMSk7IHYrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsK KyAgICBpZiAodiA8IDUpCisgICAgICAgIHJldHVybiB2OworCisgICAgLy8gOS4zLjMuNSBrLXRo IG9yZGVyIEV4cC1Hb2xvbWIgYmluYXJpemF0aW9uIHByb2Nlc3MKKyAgICAvLyBzdWZmaXhWYWwK KworICAgIC8vIEN1UXBEZWx0YVZhbCBzaGFsbCBpbiB0aGUgcmFuZ2Ugb2Yg4oiSKCAzMiArIFFw QmRPZmZzZXQgLyAyICkgdG8gKyggMzEgKyBRcEJkT2Zmc2V0IC8gMiApCisgICAgLy8gc28gayA9 IDYgc2hvdWxkIGVub3VnaAorICAgIGZvciAoayA9IDA7IGsgPCA2ICYmIGdldF9jYWJhY19ieXBh c3MoJmxjLT5lcC0+Y2MpOyBrKyspCisgICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgaSA9ICgx IDw8IGspIC0gMTsKKyAgICB2ID0gMDsKKyAgICB3aGlsZSAoay0tKQorICAgICAgICB2ID0gKHYg PDwgMSkgKyBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICB2ICs9IGk7CisKKyAg ICByZXR1cm4gdiArIDU7Cit9CisKK2ludCBmZl92dmNfY3VfcXBfZGVsdGFfc2lnbl9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfQ0hST01BX1FQX09GRlNF VF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeChWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBjX21heCA9IGxjLT5mYy0+cHMucHBzLT5y LT5wcHNfY2hyb21hX3FwX29mZnNldF9saXN0X2xlbl9taW51czE7CisgICAgaW50IGk7CisgICAg Zm9yIChpID0gMDsgaSA8IGNfbWF4ICYmIEdFVF9DQUJBQyhDVV9DSFJPTUFfUVBfT0ZGU0VUX0lE WCk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworc3Rh dGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeHlfcHJlZml4 KFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJfc2l6ZSwgY29uc3Qg aW50IGxvZzJfem9fdGJfc2l6ZSwgY29uc3QgaW50IGNfaWR4LCBjb25zdCBpbnQgY3R4KQorewor ICAgIGludCBpID0gMDsKKyAgICBpbnQgbWF4ID0gKGxvZzJfem9fdGJfc2l6ZSA8PCAxKSAtIDE7 CisgICAgaW50IGN0eF9vZmZzZXQsIGN0eF9zaGlmdDsKKyAgICBpZiAoIWxvZzJfdGJfc2l6ZSkK KyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFjX2lkeCkgeworICAgICAgICBjb25zdCBpbnQg b2Zmc2V0X3lbXSA9IHswLCAwLCAzLCA2LCAxMCwgMTV9OworICAgICAgICBjdHhfb2Zmc2V0ID0g b2Zmc2V0X3lbbG9nMl90Yl9zaXplIC0gMV07CisgICAgICAgIGN0eF9zaGlmdCAgPSAobG9nMl90 Yl9zaXplICsgMSkgPj4gMjsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgc2hpZnRz W10gPSB7MCwgMCwgMCwgMSwgMiwgMiwgMn07CisgICAgICAgIGN0eF9vZmZzZXQgPSAyMDsKKyAg ICAgICAgY3R4X3NoaWZ0ICA9IHNoaWZ0c1tsb2cyX3RiX3NpemVdOworICAgIH0KKyAgICB3aGls ZSAoaSA8IG1heCAmJiBHRVRfQ0FCQUMoY3R4ICsgKGkgPj4gY3R4X3NoaWZ0KSArIGN0eF9vZmZz ZXQpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK3N0YXRpYyBhdl9hbHdheXNf aW5saW5lIGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3hfcHJlZml4X2RlY29kZShWVkNMb2Nh bENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsb2cyX3RiX3dpZHRoLCBjb25zdCBpbnQgbG9n Ml96b190Yl93aWR0aCwgY29uc3QgaW50IGNfaWR4KQoreworICAgIHJldHVybiBsYXN0X3NpZ25p ZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9nMl90Yl93aWR0aCwgbG9nMl96b190Yl93aWR0 aCwgY19pZHgsIExBU1RfU0lHX0NPRUZGX1hfUFJFRklYKTsKK30KKworc3RhdGljIGF2X2Fsd2F5 c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeV9wcmVmaXhfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJfaGVpZ2h0LCBjb25zdCBpbnQg bG9nMl96b190Yl9oZWlnaHQsIGNvbnN0IGludCBjX2lkeCkKK3sKKyAgICByZXR1cm4gbGFzdF9z aWduaWZpY2FudF9jb2VmZl94eV9wcmVmaXgobGMsIGxvZzJfdGJfaGVpZ2h0LCBsb2cyX3pvX3Ri X2hlaWdodCwgY19pZHgsIExBU1RfU0lHX0NPRUZGX1lfUFJFRklYKTsKK30KKworc3RhdGljIGF2 X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUoVlZDTG9jYWxD b250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZp eCkKK3sKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeV9w cmVmaXggPj4gMSkgLSAxOworICAgIGludCB2YWx1ZSA9IGdldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAg dmFsdWUgPSAodmFsdWUgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAg ICByZXR1cm4gdmFsdWU7Cit9CisKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB0dV9jYl9jb2RlZF9mbGFnLCBjb25z dCBpbnQgdHVfY3JfY29kZWRfZmxhZykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0pPSU5U X0NCQ1JfUkVTSURVQUxfRkxBRyArIDIgKiB0dV9jYl9jb2RlZF9mbGFnICsgdHVfY3JfY29kZWRf ZmxhZyAtIDEpOworfQorCitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRSQU5T Rk9STV9TS0lQX0ZMQUcgKyBpbmMpOworfQorCisvLzkuMy40LjIuNyBEZXJpdmF0aW9uIHByb2Nl c3MgZm9yIHRoZSB2YXJpYWJsZXMgbG9jTnVtU2lnLCBsb2NTdW1BYnNQYXNzMQorc3RhdGljIGlu dCBnZXRfbG9jYWxfc3VtKGNvbnN0IGludCAqbGV2ZWwsIGNvbnN0IGludCB3LCBjb25zdCBpbnQg aCwKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50IGhpc3RfdmFsdWUp Cit7CisgICAgaW50IGxvY19zdW0gPSAzICogaGlzdF92YWx1ZTsKKyAgICBsZXZlbCArPSB3ICog eWMgKyB4YzsKKyAgICBpZiAoeGMgPCB3IC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxldmVs WzFdOworICAgICAgICBpZiAoeGMgPCB3IC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2 ZWxbMl0gLSBoaXN0X3ZhbHVlOworICAgICAgICBpZiAoeWMgPCBoIC0gMSkKKyAgICAgICAgICAg IGxvY19zdW0gKz0gbGV2ZWxbdyArIDFdIC0gaGlzdF92YWx1ZTsKKyAgICB9CisgICAgaWYgKHlj IDwgaCAtIDEpIHsKKyAgICAgICAgbG9jX3N1bSArPSBsZXZlbFt3XTsKKyAgICAgICAgaWYgKHlj IDwgaCAtIDIpCisgICAgICAgICAgICBsb2Nfc3VtICs9IGxldmVsW3cgPDwgMV0gLSBoaXN0X3Zh bHVlOworICAgIH0KKyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworLy85LjMuNC4yLjcgRGVyaXZh dGlvbiBwcm9jZXNzIGZvciB0aGUgdmFyaWFibGVzIGxvY051bVNpZywgbG9jU3VtQWJzUGFzczEK K3N0YXRpYyBpbnQgZ2V0X2xvY2FsX3N1bV90cyhjb25zdCBpbnQgKmxldmVsLCBjb25zdCBpbnQg dywgY29uc3QgaW50IGgsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGludCBs b2Nfc3VtID0gMDsKKyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMgPiAwKQor ICAgICAgICBsb2Nfc3VtICs9IGxldmVsWy0xXTsKKyAgICBpZiAoeWMgPiAwKQorICAgICAgICBs b2Nfc3VtICs9IGxldmVsWy13XTsKKyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworc3RhdGljIGlu dCBnZXRfZ3R4X2ZsYWdfaW5jKGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhj LCBjb25zdCBpbnQgeWMsIGNvbnN0IGludCBsYXN0KQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJs b2NrICp0YiA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworICAgIGlmIChsYXN0KSB7CisgICAgICAg IGNvbnN0IGludCBpbmNzW10gPSB7MCwgMjEsIDIxfTsKKyAgICAgICAgaW5jID0gIGluY3NbdGIt PmNfaWR4XTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7Cisg ICAgICAgIGNvbnN0IGludCBsb2NhbF9zdW1fc2lnID0gZ2V0X2xvY2FsX3N1bShyYy0+c2lnX2Nv ZWZmX2ZsYWcsCisgICAgICAgICAgICAgICAgdGItPnRiX3dpZHRoLHRiLT50Yl9oZWlnaHQsIHhj LCB5YywgcmMtPmhpc3RfdmFsdWUpOworICAgICAgICBjb25zdCBpbnQgbG9jX3N1bV9hYnNfcGFz czEgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNfbGV2ZWxfcGFzczEsCisgICAgICAgICAgICAgICAg dGItPnRiX3dpZHRoLCB0Yi0+dGJfaGVpZ2h0LCB4YywgeWMsIHJjLT5oaXN0X3ZhbHVlKTsKKyAg ICAgICAgY29uc3QgaW50IG9mZnNldCA9IEZGTUlOKGxvY19zdW1fYWJzX3Bhc3MxIC0gbG9jYWxf c3VtX3NpZywgNCk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpCisgICAgICAgICAgICBpbmMg PSAgMSArIG9mZnNldCArICghZCA/IDE1IDogKGQgPCAzID8gMTAgOiAoZCA8IDEwID8gNSA6IDAp KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluYyA9IDIyICsgb2Zmc2V0ICsgKCFkID8g NSA6IDApOworICAgIH0KKyAgICByZXR1cm4gaW5jOworfQorCitzdGF0aWMgaW50IGFic19sZXZl bF9ndHhfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sK KyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0 YXRpYyBpbnQgcGFyX2xldmVsX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0 IGludCBpbmMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxfRkxBRyArIGluYyk7 Cit9CisKK3N0YXRpYyBpbnQgcGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgY29uc3QgaW50IGluYyA9IDMyOworICAgIHJldHVybiBHRVRfQ0FCQUMo UEFSX0xFVkVMX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IHNiX2NvZGVkX2ZsYWdfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcsCisg ICAgY29uc3QgUmVzaWR1YWxDb2RpbmcgKnJjLCBjb25zdCBpbnQgeHMsIGNvbnN0IGludCB5cykK K3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsKKyAg ICBjb25zdCBUcmFuc2Zvcm1CbG9jayAqdGIgICAgICA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQg dyAgICAgICAgICAgICAgICAgICA9IHJjLT53aWR0aF9pbl9zYnM7CisgICAgY29uc3QgaW50IGgg ICAgICAgICAgICAgICAgICAgPSByYy0+aGVpZ2h0X2luX3NiczsKKyAgICBpbnQgaW5jOworCisg ICAgaWYgKHRiLT50cyAmJiAhcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxh ZykgeworICAgICAgICBjb25zdCBpbnQgbGVmdCAgPSB4cyA+IDAgPyBzYl9jb2RlZF9mbGFnWy0x XSA6IDA7CisgICAgICAgIGNvbnN0IGludCBhYm92ZSA9IHlzID4gMCA/IHNiX2NvZGVkX2ZsYWdb LXddIDogMDsKKyAgICAgICAgaW5jID0gbGVmdCArIGFib3ZlICsgNDsKKyAgICB9IGVsc2Ugewor ICAgICAgICBjb25zdCBpbnQgcmlnaHQgID0gKHhzIDwgdyAtIDEpID8gc2JfY29kZWRfZmxhZ1sx XSA6IDA7CisgICAgICAgIGNvbnN0IGludCBib3R0b20gPSAoeXMgPCBoIC0gMSkgPyBzYl9jb2Rl ZF9mbGFnW3ddIDogMDsKKyAgICAgICAgaW5jID0gKHJpZ2h0IHwgYm90dG9tKSArICh0Yi0+Y19p ZHggPyAyIDogMCk7CisgICAgfQorICAgIHJldHVybiBHRVRfQ0FCQUMoU0JfQ09ERURfRkxBRyAr IGluYyk7Cit9CisKK3N0YXRpYyBpbnQgc2lnX2NvZWZmX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBp bnQgeWMpCit7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggPSBsYy0+c2MtPnNo LnI7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiICAgICAgPSByYy0+dGI7CisgICAgaW50 IGluYzsKKworICAgIGlmICh0Yi0+dHMgJiYgIXJzaC0+c2hfdHNfcmVzaWR1YWxfY29kaW5nX2Rp c2FibGVkX2ZsYWcpIHsKKyAgICAgICAgY29uc3QgaW50IGxvY2FsX251bV9zaWcgPSBnZXRfbG9j YWxfc3VtX3RzKHJjLT5zaWdfY29lZmZfZmxhZywgdGItPnRiX3dpZHRoLCB0Yi0+dGJfaGVpZ2h0 LCB4YywgeWMpOworICAgICAgICBpbmMgPSA2MCArIGxvY2FsX251bV9zaWc7CisgICAgfSBlbHNl IHsKKyAgICAgICAgY29uc3QgaW50IGQgPSB4YyArIHljOworICAgICAgICBjb25zdCBpbnQgbG9j X3N1bV9hYnNfcGFzczEgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNfbGV2ZWxfcGFzczEsCisgICAg ICAgICAgICAgICAgdGItPnRiX3dpZHRoLCB0Yi0+dGJfaGVpZ2h0LCB4YywgeWMsIDApOworCisg ICAgICAgIGlmICghdGItPmNfaWR4KSB7CisgICAgICAgICAgICBpbmMgPSAxMiAqIEZGTUFYKDAs IHJjLT5xc3RhdGUgLSAxKSArIEZGTUlOKChsb2Nfc3VtX2Fic19wYXNzMSArIDEpID4+IDEsIDMp ICsgKChkIDwgMikgPyA4IDogKGQgPCA1ID8gNCA6IDApKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIGluYyA9IDM2ICsgOCAqIEZGTUFYKDAsIHJjLT5xc3RhdGUgLSAxKSArIEZGTUlO KChsb2Nfc3VtX2Fic19wYXNzMSArIDEpID4+IDEsIDMpICsgKGQgPCAyID8gNCA6IDApOworICAg ICAgICB9CisgICAgfQorICAgIHJldHVybiBHRVRfQ0FCQUMoU0lHX0NPRUZGX0ZMQUcgKyBpbmMp OworfQorCitzdGF0aWMgaW50IGFic19nZXRfcmljZV9wYXJhbShWVkNMb2NhbENvbnRleHQgKmxj LCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50IGJhc2VfbGV2ZWwpCit7Cisg ICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBUcmFuc2Zv cm1CbG9jayogdGIgPSByYy0+dGI7CisgICAgY29uc3QgaW50IHJpY2VfcGFyYW1zW10gPSB7Cisg ICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDIsCisg ICAgICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsCisg ICAgfTsKKyAgICBpbnQgbG9jX3N1bV9hYnM7CisgICAgaW50IHNoaWZ0X3ZhbDsKKworICAgIGxv Y19zdW1fYWJzID0gZ2V0X2xvY2FsX3N1bShyYy0+YWJzX2xldmVsLCB0Yi0+dGJfd2lkdGgsIHRi LT50Yl9oZWlnaHQsIHhjLAorICAgICAgICAgICAgeWMsIHJjLT5oaXN0X3ZhbHVlKTsKKworICAg IGlmICghc3BzLT5yLT5zcHNfcnJjX3JpY2VfZXh0ZW5zaW9uX2ZsYWcpIHsKKyAgICAgICAgc2hp ZnRfdmFsID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBzaGlmdF92YWwgPSAoYXZfbG9nMihG Rk1BWChGRk1JTihsb2Nfc3VtX2FicywgMjA0OCksIDgpKSAtIDMpICYgfjE7CisgICAgfQorCisg ICAgbG9jX3N1bV9hYnMgPSBhdl9jbGlwX3VpbnRwMigobG9jX3N1bV9hYnMgPj4gc2hpZnRfdmFs KSAtIGJhc2VfbGV2ZWwgKiA1LCA1KTsKKworICAgIHJldHVybiByaWNlX3BhcmFtc1tsb2Nfc3Vt X2Fic10gKyBzaGlmdF92YWw7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2RlY29kZShWVkNMb2NhbENv bnRleHQgKmxjLCBjb25zdCBpbnQgY19yaWNlX3BhcmFtKQoreworICAgIGNvbnN0IFZWQ1NQUyAq c3BzID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29uc3QgaW50IE1BWF9CSU4gPSA2OworICAgIGlu dCBwcmVmaXggPSAwOworICAgIGludCBzdWZmaXggPSAwOworCisgICAgd2hpbGUgKHByZWZpeCA8 IE1BWF9CSU4gJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIHByZWZp eCsrOworICAgIGlmIChwcmVmaXggPCBNQVhfQklOKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgY19yaWNlX3BhcmFtOyBpKyspIHsKKyAgICAgICAgICAgIHN1ZmZpeCA9IChzdWZmaXgg PDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAgfQorICAgIH0g ZWxzZSB7CisgICAgICAgIHN1ZmZpeCA9IGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNvZGUoJmxj LT5lcC0+Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y19yaWNlX3BhcmFtICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAyNiAtIHNwcy0+bG9nMl90cmFuc2Zvcm1fcmFuZ2UsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BzLT5sb2cyX3RyYW5zZm9ybV9yYW5nZSk7 CisgICAgfQorICAgIHJldHVybiBzdWZmaXggKyAocHJlZml4IDw8IGNfcmljZV9wYXJhbSk7Cit9 CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sK KyAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgICA9IGxjLT5mYy0+cHMuc3BzOworICAg IGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0 IGludCBiYXNlX2xldmVsW11bMl1bMl0gID0geworICAgICAgICB7IHs0LCA0fSwgezQsIDR9IH0s CisgICAgICAgIHsgezMsIDJ9LCB7MiwgMX0gfQorICAgIH07CisgICAgY29uc3QgaW50IGNfcmlj ZV9wYXJhbSA9IGFic19nZXRfcmljZV9wYXJhbShsYywgcmMsIHhjLCB5YywKKyAgICAgICAgYmFz ZV9sZXZlbFtzcHMtPnItPnNwc19ycmNfcmljZV9leHRlbnNpb25fZmxhZ11bc3BzLT5iaXRfZGVw dGggPiAxMl1bSVNfSShyc2gpXSk7CisgICAgY29uc3QgaW50IHJlbSA9IGFic19kZWNvZGUobGMs IGNfcmljZV9wYXJhbSk7CisKKyAgICByZXR1cm4gcmVtOworfQorCitzdGF0aWMgaW50IGFic19y ZW1haW5kZXJfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29k aW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgSDI2NlJh d1NsaWNlSGVhZGVyICpyc2ggPSBsYy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IGNfcmljZV9w YXJhbSA9IHJzaC0+c2hfdHNfcmVzaWR1YWxfY29kaW5nX3JpY2VfaWR4X21pbnVzMSArIDE7Cisg ICAgY29uc3QgaW50IHJlbSA9IGFic19kZWNvZGUobGMsIGNfcmljZV9wYXJhbSk7CisKKyAgICBy ZXR1cm4gcmVtOworfQorCitzdGF0aWMgaW50IGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5j Yyk7Cit9CisKKy8vOS4zLjQuMi4xMCBEZXJpdmF0aW9uIHByb2Nlc3Mgb2YgY3R4SW5jIGZvciB0 aGUgc3ludGF4IGVsZW1lbnQgY29lZmZfc2lnbl9mbGFnIGZvciB0cmFuc2Zvcm0gc2tpcCBtb2Rl CitzdGF0aWMgaW50IGNvZWZmX3NpZ25fZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICps YywgY29uc3QgQ29kaW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3Qg aW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiID0g cmMtPnRiOworICAgIGNvbnN0IGludCB3ICAgICAgICAgICAgICA9IHRiLT50Yl93aWR0aDsKKyAg ICBjb25zdCBpbnQgKmxldmVsICAgICAgICAgPSByYy0+Y29lZmZfc2lnbl9sZXZlbCArIHljICog dyArIHhjOworICAgIGNvbnN0IGludCBsZWZ0X3NpZ24gICAgICA9IHhjID8gbGV2ZWxbLTFdIDog MDsKKyAgICBjb25zdCBpbnQgYWJvdmVfc2lnbiAgICAgPSB5YyA/IGxldmVsWy13XSA6IDA7Cisg ICAgY29uc3QgaW50IGJkcGNtX2ZsYWcgICAgID0gY3UtPmJkcGNtX2ZsYWdbdGItPmNfaWR4XTsK KyAgICBpbnQgaW5jOworCisgICAgaWYgKGxlZnRfc2lnbiA9PSAtYWJvdmVfc2lnbikKKyAgICAg ICAgaW5jID0gYmRwY21fZmxhZyA/IDMgOiAwOworICAgIGVsc2UgaWYgKGxlZnRfc2lnbiA+PSAw ICYmIGFib3ZlX3NpZ24gPj0gMCkKKyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA/IDQgOiAxOwor ICAgIGVsc2UKKyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA/IDUgOiAyOworICAgIHJldHVybiBH RVRfQ0FCQUMoQ09FRkZfU0lHTl9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGludCBhYnNfbGV2 ZWxfZ3QxX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IENvZGluZ1Vu aXQgKmN1LCBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50 IHljKQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsKKyAgICBjb25z dCBpbnQgKnNpZ19jb2VmZl9mbGFnID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgeWMgKiB0Yi0+dGJf d2lkdGggKyB4YzsKKyAgICBpbnQgaW5jOworCisgICAgaWYgKGN1LT5iZHBjbV9mbGFnW3RiLT5j X2lkeF0pIHsKKyAgICAgICAgaW5jID0gNjc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3Qg aW50IGwgPSB4YyA+IDAgPyBzaWdfY29lZmZfZmxhZ1stMV0gOiAwOworICAgICAgICBjb25zdCBp bnQgYSA9IHljID4gMCA/IHNpZ19jb2VmZl9mbGFnWy10Yi0+dGJfd2lkdGhdIDogMDsKKyAgICAg ICAgaW5jID0gNjQgKyBhICsgbDsKKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNfTEVW RUxfR1RYX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9ndHhfZmxhZ190 c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGopCit7CisgICAgY29uc3Qg aW50IGluYyA9IDY3ICsgajsKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZFTF9HVFhfRkxB RyArIGluYyk7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50OF90IHFzdGF0ZV90cmFuc2xhdGVfdGFi bGVbXVsyXSA9IHsKKyAgICB7IDAsIDIgfSwgeyAyLCAwIH0sIHsgMSwgMyB9LCB7IDMsIDEgfQor fTsKKworc3RhdGljIGludCBkZWNfYWJzX2xldmVsX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxj LCBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsCisgICAgY29uc3QgaW50IHhjLCBjb25zdCBpbnQg eWMsIGludCAqYWJzX2xldmVsKQoreworICAgIGNvbnN0IGludCBjX3JpY2VfcGFyYW0gID0gYWJz X2dldF9yaWNlX3BhcmFtKGxjLCByYywgeGMsIHljLCAwKTsKKyAgICBjb25zdCBpbnQgZGVjX2Fi c19sZXZlbCA9ICBhYnNfZGVjb2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIGNvbnN0IGludCB6 ZXJvX3BvcyAgICAgID0gKHJjLT5xc3RhdGUgPCAyID8gMSA6IDIpIDw8IGNfcmljZV9wYXJhbTsK KworICAgICphYnNfbGV2ZWwgPSAwOworICAgIGlmIChkZWNfYWJzX2xldmVsICE9IHplcm9fcG9z KSB7CisgICAgICAgICphYnNfbGV2ZWwgPSBkZWNfYWJzX2xldmVsOworICAgICAgICBpZiAoZGVj X2Fic19sZXZlbCA8IHplcm9fcG9zKQorICAgICAgICAgICAgKmFic19sZXZlbCArPSAxOworICAg IH0KKyAgICByZXR1cm4gZGVjX2Fic19sZXZlbDsKK30KKworc3RhdGljIHZvaWQgZXBfdXBkYXRl X2hpc3QoRW50cnlQb2ludCAqZXAsIFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBjb25zdCBpbnQg cmVtYWluZGVyLCBjb25zdCBpbnQgYWRkaW4pCit7CisgICAgaW50ICpzdGF0ID0gZXAtPnN0YXRf Y29lZmYgKyByYy0+dGItPmNfaWR4OworICAgIGlmIChyYy0+dXBkYXRlX2hpc3QgJiYgcmVtYWlu ZGVyID4gMCkgeworICAgICAgICAqc3RhdCA9ICgqc3RhdCArIGF2X2xvZzIocmVtYWluZGVyKSAr IGFkZGluKSA+PiAxOworICAgICAgICByYy0+dXBkYXRlX2hpc3QgPSAwOworICAgIH0KK30KKwor c3RhdGljIHZvaWQgaW5pdF9yZXNpZHVhbF9jb2RpbmcoY29uc3QgVlZDTG9jYWxDb250ZXh0ICps YywgUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBj b25zdCBpbnQgbG9nMl96b190Yl9oZWlnaHQsCisgICAgVHJhbnNmb3JtQmxvY2sgKnRiKQorewor ICAgIGNvbnN0IFZWQ1NQUyAqc3BzID0gbGMtPmZjLT5wcy5zcHM7CisgICAgaW50IGxvZzJfc2Jf dyAgICAgPSAoRkZNSU4obG9nMl96b190Yl93aWR0aCwgbG9nMl96b190Yl9oZWlnaHQgKSA8IDIg PyAxIDogMiApOworICAgIGludCBsb2cyX3NiX2ggICAgID0gbG9nMl9zYl93OworCisgICAgaWYg KCBsb2cyX3pvX3RiX3dpZHRoICsgbG9nMl96b190Yl9oZWlnaHQgPiAzICkgeworICAgICAgICBp ZiAoIGxvZzJfem9fdGJfd2lkdGggPCAyICkgeworICAgICAgICAgICAgbG9nMl9zYl93ID0gbG9n Ml96b190Yl93aWR0aDsKKyAgICAgICAgICAgIGxvZzJfc2JfaCA9IDQgLSBsb2cyX3NiX3c7Cisg ICAgICAgIH0gZWxzZSBpZiAoIGxvZzJfem9fdGJfaGVpZ2h0IDwgMiApIHsKKyAgICAgICAgICAg IGxvZzJfc2JfaCA9IGxvZzJfem9fdGJfaGVpZ2h0OworICAgICAgICAgICAgbG9nMl9zYl93ID0g NCAtIGxvZzJfc2JfaDsKKyAgICAgICAgfQorICAgIH0KKyAgICByYy0+bG9nMl9zYl93ID0gbG9n Ml9zYl93OworICAgIHJjLT5sb2cyX3NiX2ggPSBsb2cyX3NiX2g7CisgICAgcmMtPm51bV9zYl9j b2VmZiAgID0gMSA8PCAobG9nMl9zYl93ICsgbG9nMl9zYl9oKTsKKyAgICByYy0+bGFzdF9zdWJf YmxvY2sgPSAoIDEgPDwgKCBsb2cyX3pvX3RiX3dpZHRoICsgbG9nMl96b190Yl9oZWlnaHQgLSAo bG9nMl9zYl93ICsgbG9nMl9zYl9oKSkpIC0gMTsKKyAgICByYy0+aGlzdF92YWx1ZSAgICAgPSBz cHMtPnItPnNwc19wZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcgPyAoMSA8 PCBsYy0+ZXAtPnN0YXRfY29lZmZbdGItPmNfaWR4XSkgOiAwOworICAgIHJjLT51cGRhdGVfaGlz dCAgICA9IHNwcy0+ci0+c3BzX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2VuYWJsZWRfZmxh ZyA/IDEgOiAwOworICAgIHJjLT5yZW1fYmluc19wYXNzMSA9ICgoIDEgPDwgKCBsb2cyX3pvX3Ri X3dpZHRoICsgbG9nMl96b190Yl9oZWlnaHQpKSAqIDcgKSA+PiAyOworCisKKyAgICByYy0+c2Jf c2Nhbl94X29mZiA9IGZmX3Z2Y19kaWFnX3NjYW5feFtsb2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9z Yl93XVtsb2cyX3pvX3RiX2hlaWdodCAtIGxvZzJfc2JfaF07CisgICAgcmMtPnNiX3NjYW5feV9v ZmYgPSBmZl92dmNfZGlhZ19zY2FuX3lbbG9nMl96b190Yl93aWR0aCAtIGxvZzJfc2Jfd11bbG9n Ml96b190Yl9oZWlnaHQgLSBsb2cyX3NiX2hdOworCisgICAgcmMtPnNjYW5feF9vZmYgPSBmZl92 dmNfZGlhZ19zY2FuX3hbbG9nMl9zYl93XVtsb2cyX3NiX2hdOworICAgIHJjLT5zY2FuX3lfb2Zm ID0gZmZfdnZjX2RpYWdfc2Nhbl95W2xvZzJfc2Jfd11bbG9nMl9zYl9oXTsKKworICAgIHJjLT5p bmZlcl9zYl9jYmYgPSAxOworCisgICAgcmMtPndpZHRoX2luX3NicyAgPSAoMSA8PCAobG9nMl96 b190Yl93aWR0aCAtIGxvZzJfc2JfdykpOworICAgIHJjLT5oZWlnaHRfaW5fc2JzID0gKDEgPDwg KGxvZzJfem9fdGJfaGVpZ2h0IC0gbG9nMl9zYl9oKSk7CisgICAgcmMtPm5iX3NicyAgICAgICAg PSByYy0+d2lkdGhfaW5fc2JzICogcmMtPmhlaWdodF9pbl9zYnM7CisKKyAgICByYy0+bGFzdF9z Y2FuX3BvcyA9IHJjLT5udW1fc2JfY29lZmY7CisgICAgcmMtPnFzdGF0ZSAgICAgICAgPSAwOwor CisgICAgcmMtPnRiID0gdGI7Cit9CisKK3N0YXRpYyBpbnQgcmVzaWR1YWxfdHNfY29kaW5nX3N1 YmJsb2NrKFZWQ0xvY2FsQ29udGV4dCAqbGMsIFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50 IGkpCit7CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgICA9IGxjLT5jdTsKKyAgICBUcmFuc2Zv cm1CbG9jayAqdGIgICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCBiZHBjbV9mbGFnICAgPSBj dS0+YmRwY21fZmxhZ1t0Yi0+Y19pZHhdOworICAgIGNvbnN0IGludCB4cyAgICAgICAgICAgPSBy Yy0+c2Jfc2Nhbl94X29mZltpXTsKKyAgICBjb25zdCBpbnQgeXMgICAgICAgICAgID0gcmMtPnNi X3NjYW5feV9vZmZbaV07CisgICAgdWludDhfdCAqc2JfY29kZWRfZmxhZyA9IHJjLT5zYl9jb2Rl ZF9mbGFnICsgeXMgKiByYy0+d2lkdGhfaW5fc2JzICsgeHM7CisgICAgaW50IGluZmVyX3NiX3Np Z19jb2VmZl9mbGFnID0gMTsKKyAgICBpbnQgbGFzdF9zY2FuX3Bvc19wYXNzMSA9IC0xLCBsYXN0 X3NjYW5fcG9zX3Bhc3MyID0gLTEsIG47CisgICAgaW50IGFic19sZXZlbF9ndHhfZmxhZ1tNQVhf U1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGludCBhYnNfbGV2ZWxf cGFzczJbTUFYX1NVQl9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFXTsgICAgICAgLy8v PCBBYnNMZXZlbFBhc3MyCisKKyAgICBpZiAoaSAhPSByYy0+bGFzdF9zdWJfYmxvY2sgfHwgIXJj LT5pbmZlcl9zYl9jYmYpCisgICAgICAgICpzYl9jb2RlZF9mbGFnID0gc2JfY29kZWRfZmxhZ19k ZWNvZGUobGMsIHNiX2NvZGVkX2ZsYWcsIHJjLCB4cywgeXMpOworICAgIGVsc2UKKyAgICAgICAg KnNiX2NvZGVkX2ZsYWcgPSAxOworICAgIGlmICgqc2JfY29kZWRfZmxhZyAmJiBpIDwgcmMtPmxh c3Rfc3ViX2Jsb2NrKQorICAgICAgICByYy0+aW5mZXJfc2JfY2JmID0gMDsKKworICAgIC8vZmly c3Qgc2NhbiBwYXNzCisgICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2JfY29lZmYgJiYgcmMt PnJlbV9iaW5zX3Bhc3MxID49IDQ7IG4rKykgeworICAgICAgICBjb25zdCBpbnQgeGMgPSAoeHMg PDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50 IHljID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAg IGNvbnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBpbnQgKnNp Z19jb2VmZl9mbGFnICAgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyBvZmY7CisgICAgICAgIGludCAq YWJzX2xldmVsX3Bhc3MxICA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAgIGlu dCAqY29lZmZfc2lnbl9sZXZlbCA9IHJjLT5jb2VmZl9zaWduX2xldmVsICsgb2ZmOworICAgICAg ICBpbnQgcGFyX2xldmVsX2ZsYWcgICAgPSAwOworCisgICAgICAgIGFic19sZXZlbF9ndHhfZmxh Z1tuXSA9IDA7CisgICAgICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczEgPSBuOworICAgICAgICBpZiAo KnNiX2NvZGVkX2ZsYWcgJiYgKG4gIT0gcmMtPm51bV9zYl9jb2VmZiAtIDEgfHwgIWluZmVyX3Ni X3NpZ19jb2VmZl9mbGFnKSkgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9mbGFnID0gc2lnX2Nv ZWZmX2ZsYWdfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmlu c19wYXNzMS0tOworICAgICAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykKKyAgICAgICAgICAg ICAgICBpbmZlcl9zYl9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSAobiA9PSByYy0+bnVtX3NiX2NvZWZmIC0gMSkgJiYg aW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgJiYgKnNiX2NvZGVkX2ZsYWc7CisgICAgICAgIH0KKyAg ICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAwOworICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFn KSB7CisgICAgICAgICAgICAqY29lZmZfc2lnbl9sZXZlbCA9IDEgLSAyICogY29lZmZfc2lnbl9m bGFnX3RzX2RlY29kZShsYywgY3UsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgYWJzX2xldmVs X2d0eF9mbGFnW25dID0gYWJzX2xldmVsX2d0MV9mbGFnX3RzX2RlY29kZShsYywgY3UsIHJjLCB4 YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAgICAg ICBpZiAoYWJzX2xldmVsX2d0eF9mbGFnW25dKSB7CisgICAgICAgICAgICAgICAgcGFyX2xldmVs X2ZsYWcgPSBwYXJfbGV2ZWxfZmxhZ190c19kZWNvZGUobGMpOworICAgICAgICAgICAgICAgIHJj LT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICph YnNfbGV2ZWxfcGFzczEgPSAqc2lnX2NvZWZmX2ZsYWcgKyBwYXJfbGV2ZWxfZmxhZyArIGFic19s ZXZlbF9ndHhfZmxhZ1tuXTsKKyAgICB9CisKKyAgICAvL2dyZWF0ZXIgdGhhbiB4IHNjYW4gcGFz cworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmICYmIHJjLT5yZW1fYmluc19w YXNzMSA+PSA0OyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+bG9n Ml9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0gKHlz IDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGlu dCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworCisgICAgICAgIGFic19sZXZlbF9wYXNz MltuXSA9IHJjLT5hYnNfbGV2ZWxfcGFzczFbb2ZmXTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDE7 IGogPCA1ICYmIGFic19sZXZlbF9ndHhfZmxhZ1tuXTsgaisrKSB7CisgICAgICAgICAgICBhYnNf bGV2ZWxfZ3R4X2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfdHNfZGVjb2RlKGxjLCBqKTsK KyAgICAgICAgICAgIGFic19sZXZlbF9wYXNzMltuXSArPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0g PDwgMTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICB9CisgICAg ICAgIGxhc3Rfc2Nhbl9wb3NfcGFzczIgPSBuOworICAgIH0KKworICAgIC8qIHJlbWFpbmRlciBz Y2FuIHBhc3MgKi8KKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZjsgbisrKSB7 CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nh bl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9o KSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+ dGJfd2lkdGggKyB4YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWxfcGFzczEgPSByYy0+ YWJzX2xldmVsX3Bhc3MxICsgb2ZmOworICAgICAgICBpbnQgKmFic19sZXZlbCAgICAgICAgICAg ICA9IHJjLT5hYnNfbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCAqY29lZmZfc2lnbl9sZXZlbCAg ICAgID0gcmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCBhYnNfcmVtYWlu ZGVyICAgICAgICAgID0gMDsKKworICAgICAgICBpZiAoKG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNz MiAmJiBhYnNfbGV2ZWxfcGFzczJbbl0gPj0gMTApIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rf c2Nhbl9wb3NfcGFzczIgJiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxICYmCisgICAgICAgICAg ICAqYWJzX2xldmVsX3Bhc3MxID49IDIpIHx8CisgICAgICAgICAgICAobiA+IGxhc3Rfc2Nhbl9w b3NfcGFzczEgJiYgICpzYl9jb2RlZF9mbGFnKSkKKyAgICAgICAgICAgIGFic19yZW1haW5kZXIg PSBhYnNfcmVtYWluZGVyX3RzX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgIGlmIChu IDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczIpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSBhYnNf bGV2ZWxfcGFzczJbbl0gKyAyICogYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgfSBlbHNlIGlmIChu IDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczEpIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSAqYWJz X2xldmVsX3Bhc3MxICsgMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAqYWJzX2xldmVsID0gYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgICAgIGlmIChhYnNf cmVtYWluZGVyKSB7CisgICAgICAgICAgICAgICAgLy9uID4gbGFzdFNjYW5Qb3NQYXNzMQorICAg ICAgICAgICAgICAgICpjb2VmZl9zaWduX2xldmVsID0gMSAtIDIgKiBjb2VmZl9zaWduX2ZsYWdf ZGVjb2RlKGxjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJkcGNt X2ZsYWcgJiYgbiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxKSB7CisgICAgICAgICAgICBjb25zdCBp bnQgbGVmdCAgPSB4YyA+IDAgPyBhYnNfbGV2ZWxbLTFdIDogMDsKKyAgICAgICAgICAgIGNvbnN0 IGludCBhYm92ZSA9IHljID4gMCA/IGFic19sZXZlbFstdGItPnRiX3dpZHRoXSA6IDA7CisgICAg ICAgICAgICBjb25zdCBpbnQgcHJlZCAgPSBGRk1BWChsZWZ0LCBhYm92ZSk7CisKKyAgICAgICAg ICAgIGlmICgqYWJzX2xldmVsID09IDEgJiYgcHJlZCA+IDApCisgICAgICAgICAgICAgICAgKmFi c19sZXZlbCA9IHByZWQ7CisgICAgICAgICAgICBlbHNlIGlmICgqYWJzX2xldmVsID4gMCAmJiAq YWJzX2xldmVsIDw9IHByZWQpCisgICAgICAgICAgICAgICAgKCphYnNfbGV2ZWwpLS07CisgICAg ICAgIH0KKyAgICAgICAgaWYgKCphYnNfbGV2ZWwpIHsKKyAgICAgICAgICAgIHRiLT5jb2VmZnNb b2ZmXSA9ICpjb2VmZl9zaWduX2xldmVsICogKmFic19sZXZlbDsKKyAgICAgICAgICAgIHRiLT5t YXhfc2Nhbl94ID0gRkZNQVgoeGMsIHRiLT5tYXhfc2Nhbl94KTsKKyAgICAgICAgICAgIHRiLT5t YXhfc2Nhbl95ID0gRkZNQVgoeWMsIHRiLT5tYXhfc2Nhbl95KTsKKyAgICAgICAgICAgIHRiLT5t aW5fc2Nhbl94ID0gRkZNSU4oeGMsIHRiLT5taW5fc2Nhbl94KTsKKyAgICAgICAgICAgIHRiLT5t aW5fc2Nhbl95ID0gRkZNSU4oeWMsIHRiLT5taW5fc2Nhbl95KTsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIHRiLT5jb2VmZnNbb2ZmXSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBobHNfcmVzaWR1YWxfdHNfY29kaW5nKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBSZXNpZHVhbENvZGlu ZyByYzsKKyAgICB0Yi0+bWluX3NjYW5feCA9IHRiLT5taW5fc2Nhbl95ID0gSU5UX01BWDsKKyAg ICBpbml0X3Jlc2lkdWFsX2NvZGluZyhsYywgJnJjLCB0Yi0+bG9nMl90Yl93aWR0aCwgdGItPmxv ZzJfdGJfaGVpZ2h0LCB0Yik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmMubGFzdF9zdWJf YmxvY2s7IGkrKykgeworICAgICAgICBpbnQgcmV0ID0gcmVzaWR1YWxfdHNfY29kaW5nX3N1YmJs b2NrKGxjLCAmcmMsIGkpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVy biByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHJl c2lkdWFsX2NvZGluZ19zdWJibG9jayhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGlu ZyAqcmMsIGNvbnN0IGludCBpKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNo ID0gbGMtPnNjLT5zaC5yOworICAgIFRyYW5zZm9ybUJsb2NrICp0YiAgICAgICAgICAgID0gcmMt PnRiOworICAgIGludCBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IsIGxhc3Rfc2lnX3NjYW5fcG9zX3Ni OworICAgIGludCBmaXJzdF9wb3NfbW9kZTAsIGZpcnN0X3Bvc19tb2RlMTsKKyAgICBpbnQgaW5m ZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgIGludCBuLCBzaWdfaGlkZGVuX2ZsYWcs IHN1bSA9IDA7CisgICAgaW50IGFic19sZXZlbF9ndDJfZmxhZ1tNQVhfU1VCX0JMT0NLX1NJWkUg KiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGNvbnN0IGludCBzdGFydF9xc3RhdGVfc2IgPSBy Yy0+cXN0YXRlOworICAgIGNvbnN0IGludCB4cyA9IHJjLT5zYl9zY2FuX3hfb2ZmW2ldOworICAg IGNvbnN0IGludCB5cyA9IHJjLT5zYl9zY2FuX3lfb2ZmW2ldOworICAgIHVpbnQ4X3QgKnNiX2Nv ZGVkX2ZsYWcgPSByYy0+c2JfY29kZWRfZmxhZyArIHlzICogcmMtPndpZHRoX2luX3NicyArIHhz OworCisKKyAgICBhdl9hc3NlcnQwKHJjLT5udW1fc2JfY29lZmYgPD0gTUFYX1NVQl9CTE9DS19T SVpFICogTUFYX1NVQl9CTE9DS19TSVpFKTsKKyAgICBpZiAoaSA8IHJjLT5sYXN0X3N1Yl9ibG9j ayAmJiBpID4gMCkgeworICAgICAgICAqc2JfY29kZWRfZmxhZyA9IHNiX2NvZGVkX2ZsYWdfZGVj b2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsKKyAgICAgICAgaW5mZXJfc2JfZGNf c2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgICpzYl9jb2RlZF9mbGFn ID0gMTsKKyAgICB9CisgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYmICh4cyA+IDMgfHwgeXMgPiAz KSAmJiAhdGItPmNfaWR4KQorICAgICAgICBsYy0+cGFyc2UubXRzX3plcm9fb3V0X3NpZ19jb2Vm Zl9mbGFnID0gMDsKKworICAgIGlmICghKnNiX2NvZGVkX2ZsYWcpCisgICAgICAgIHJldHVybiAw OworCisgICAgZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID0gcmMtPm51bV9zYl9jb2VmZjsKKyAgICBs YXN0X3NpZ19zY2FuX3Bvc19zYiA9IC0xOworICAgIGZpcnN0X3Bvc19tb2RlMCA9IChpID09IHJj LT5sYXN0X3N1Yl9ibG9jayA/IHJjLT5sYXN0X3NjYW5fcG9zIDogcmMtPm51bV9zYl9jb2VmZiAt MSk7CisgICAgZmlyc3RfcG9zX21vZGUxID0gZmlyc3RfcG9zX21vZGUwOworICAgIGZvciAobiA9 IGZpcnN0X3Bvc19tb2RlMDsgbiA+PSAwICYmIHJjLT5yZW1fYmluc19wYXNzMSA+PSA0OyBuLS0p IHsKKyAgICAgICAgY29uc3QgaW50IHhjICAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+ c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICAgPSAoeXMgPDwgcmMtPmxvZzJf c2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IGxhc3QgPSAoeGMg PT0gcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCAmJiB5YyA9PSByYy0+bGFzdF9zaWduaWZp Y2FudF9jb2VmZl95KTsKKyAgICAgICAgaW50ICphYnNfbGV2ZWxfcGFzczEgPSByYy0+YWJzX2xl dmVsX3Bhc3MxICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgaW50ICpzaWdfY29l ZmZfZmxhZyAgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOwor CisgICAgICAgIGlmICgobiA+IDAgfHwgIWluZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnICkgJiYg IWxhc3QpIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZfZmxhZyA9IHNpZ19jb2VmZl9mbGFnX2Rl Y29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsK KyAgICAgICAgICAgIGlmICgqc2lnX2NvZWZmX2ZsYWcpCisgICAgICAgICAgICAgICAgaW5mZXJf c2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg KnNpZ19jb2VmZl9mbGFnID0gbGFzdCB8fCAoIXJjLT5zY2FuX3hfb2ZmW25dICYmICFyYyAtPnNj YW5feV9vZmZbbl0gJiYKKyAgICAgICAgICAgICAgICBpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxh Zyk7CisgICAgICAgIH0KKyAgICAgICAgKmFic19sZXZlbF9wYXNzMSA9IDA7CisgICAgICAgIGlm ICgqc2lnX2NvZWZmX2ZsYWcpIHsKKyAgICAgICAgICAgIGludCBhYnNfbGV2ZWxfZ3QxX2ZsYWcs IHBhcl9sZXZlbF9mbGFnID0gMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBpbmMgPSBnZXRfZ3R4 X2ZsYWdfaW5jKHJjLCB4YywgeWMsIGxhc3QpOworICAgICAgICAgICAgYWJzX2xldmVsX2d0MV9m bGFnID0gYWJzX2xldmVsX2d0eF9mbGFnX2RlY29kZShsYywgaW5jKTsKKyAgICAgICAgICAgIHJj LT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICAgICAgaWYgKGFic19sZXZlbF9ndDFfZmxhZykg eworICAgICAgICAgICAgICAgIHBhcl9sZXZlbF9mbGFnID0gcGFyX2xldmVsX2ZsYWdfZGVjb2Rl KGxjLCBpbmMpOworICAgICAgICAgICAgICAgIGFic19sZXZlbF9ndDJfZmxhZ1tuXSA9IGFic19s ZXZlbF9ndHhfZmxhZ19kZWNvZGUobGMsIGluYyArIDMyKTsKKyAgICAgICAgICAgICAgICByYy0+ cmVtX2JpbnNfcGFzczEgLT0gMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgYWJzX2xldmVsX2d0Ml9mbGFnW25dID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IGlmIChsYXN0X3NpZ19zY2FuX3Bvc19zYiA9PSAtMSkKKyAgICAgICAgICAgICAgICBsYXN0X3Np Z19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgICAgICBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IgPSBu OworCisgICAgICAgICAgICAqYWJzX2xldmVsX3Bhc3MxID0KKyAgICAgICAgICAgICAgICAxICAr IHBhcl9sZXZlbF9mbGFnICsgYWJzX2xldmVsX2d0MV9mbGFnICsgKGFic19sZXZlbF9ndDJfZmxh Z1tuXSA8PCAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFic19sZXZlbF9ndDJf ZmxhZ1tuXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAocnNoLT5zaF9kZXBfcXVhbnRf dXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0ZSA9IHFzdGF0ZV90cmFuc2xhdGVfdGFi bGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbF9wYXNzMSAmIDFdOworCisgICAgICAgIGZpcnN0X3Bv c19tb2RlMSA9IG4gLSAxOworICAgIH0KKyAgICBmb3IgKG4gPSBmaXJzdF9wb3NfbW9kZTA7IG4g PiBmaXJzdF9wb3NfbW9kZTE7IG4tLSkgeworICAgICAgICBjb25zdCBpbnQgeGMgPSAoeHMgPDwg cmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHlj ID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNv bnN0IGludCAqYWJzX2xldmVsX3Bhc3MxID0gcmMtPmFic19sZXZlbF9wYXNzMSArIHljICogdGIt PnRiX3dpZHRoICsgeGM7CisgICAgICAgIGludCAqYWJzX2xldmVsICAgICAgICAgICAgID0gcmMt PmFic19sZXZlbCArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgKmFic19sZXZl bCA9ICphYnNfbGV2ZWxfcGFzczE7CisgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0p IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBhYnNfcmVtYWluZGVyID0gYWJzX3JlbWFpbmRlcl9k ZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgZXBfdXBkYXRlX2hpc3QobGMtPmVw LCByYywgYWJzX3JlbWFpbmRlciwgMik7CisgICAgICAgICAgICAqYWJzX2xldmVsICs9IDIgKiBh YnNfcmVtYWluZGVyOworICAgICAgICB9CisgICAgfQorICAgIGZvciAobiA9IGZpcnN0X3Bvc19t b2RlMTsgbiA+PSAwOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjICAgPSAoeHMgPDwgcmMt PmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICAg PSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgaW50 ICphYnNfbGV2ZWwgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKwor ICAgICAgICBpZiAoKnNiX2NvZGVkX2ZsYWcpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBkZWNf YWJzX2xldmVsID0gZGVjX2Fic19sZXZlbF9kZWNvZGUobGMsIHJjLCB4YywgeWMsIGFic19sZXZl bCk7CisgICAgICAgICAgICBlcF91cGRhdGVfaGlzdChsYy0+ZXAsIHJjLCBkZWNfYWJzX2xldmVs LCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmFic19sZXZlbCA+IDApIHsKKyAgICAgICAg ICAgIGlmIChsYXN0X3NpZ19zY2FuX3Bvc19zYiA9PSAtMSkKKyAgICAgICAgICAgICAgICBsYXN0 X3NpZ19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgICAgICBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2Ig PSBuOworICAgICAgICB9CisgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2VkX2ZsYWcp CisgICAgICAgICAgICByYy0+cXN0YXRlID0gcXN0YXRlX3RyYW5zbGF0ZV90YWJsZVtyYy0+cXN0 YXRlXVsqYWJzX2xldmVsICYgMV07CisgICAgfQorICAgIHNpZ19oaWRkZW5fZmxhZyA9IHJzaC0+ c2hfc2lnbl9kYXRhX2hpZGluZ191c2VkX2ZsYWcgJiYKKyAgICAgICAgKGxhc3Rfc2lnX3NjYW5f cG9zX3NiIC0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID4gMyA/IDEgOiAwKTsKKworICAgIGlmIChy c2gtPnNoX2RlcF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgIHJjLT5xc3RhdGUgPSBzdGFydF9x c3RhdGVfc2I7CisgICAgbiA9IChpID09IHJjLT5sYXN0X3N1Yl9ibG9jayA/IHJjLT5sYXN0X3Nj YW5fcG9zIDogcmMtPm51bV9zYl9jb2VmZiAtMSk7CisgICAgZm9yICgvKiBub3RoaW5nICovOyBu ID49IDA7IG4tLSkgeworICAgICAgICBpbnQgdHJhbnNfY29lZmZfbGV2ZWw7CisgICAgICAgIGNv bnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsK KyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2Fu X3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJfd2lkdGggKyB4 YzsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWwgPSByYy0+YWJzX2xldmVsICsgb2ZmOwor CisgICAgICAgIGlmICgqYWJzX2xldmVsID4gMCkgeworICAgICAgICAgICAgaW50IHNpZ24gPSAx OworICAgICAgICAgICAgaWYgKCFzaWdfaGlkZGVuX2ZsYWcgfHwgKG4gIT0gZmlyc3Rfc2lnX3Nj YW5fcG9zX3NiKSkKKyAgICAgICAgICAgICAgICBzaWduID0gMSAtIDIgKiBjb2VmZl9zaWduX2Zs YWdfZGVjb2RlKGxjKTsKKyAgICAgICAgICAgIGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2VkX2Zs YWcpIHsKKyAgICAgICAgICAgICAgICB0cmFuc19jb2VmZl9sZXZlbCA9ICgyICogKmFic19sZXZl bCAtIChyYy0+cXN0YXRlID4gMSkpICogc2lnbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAqYWJzX2xldmVsICogc2lnbjsKKyAgICAg ICAgICAgICAgICBpZiAoc2lnX2hpZGRlbl9mbGFnKSB7CisgICAgICAgICAgICAgICAgICAgIHN1 bSArPSAqYWJzX2xldmVsOworICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSBmaXJzdF9zaWdf c2Nhbl9wb3Nfc2IgJiYgKHN1bSAlIDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNf Y29lZmZfbGV2ZWwgPSAtdHJhbnNfY29lZmZfbGV2ZWw7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfQorICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gdHJhbnNfY29lZmZfbGV2 ZWw7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feCA9IEZGTUFYKHhjLCB0Yi0+bWF4X3NjYW5f eCk7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feSA9IEZGTUFYKHljLCB0Yi0+bWF4X3NjYW5f eSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJzaC0+c2hfZGVwX3F1YW50X3VzZWRfZmxhZykK KyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRlX3RhYmxlW3JjLT5xc3Rh dGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgZGVyaXZlX2xhc3Rfc2Nhbl9wb3MoUmVzaWR1YWxDb2RpbmcgKnJjKQoreworICAgIGlu dCB4YywgeWMsIHhzLCB5czsKKyAgICBkbyB7CisgICAgICAgIGlmICghcmMtPmxhc3Rfc2Nhbl9w b3MpIHsKKyAgICAgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMtPm51bV9zYl9jb2VmZjsK KyAgICAgICAgICAgIHJjLT5sYXN0X3N1Yl9ibG9jay0tOworICAgICAgICB9CisgICAgICAgIHJj LT5sYXN0X3NjYW5fcG9zLS07CisgICAgICAgIHhzID0gcmMtPnNiX3NjYW5feF9vZmZbcmMtPmxh c3Rfc3ViX2Jsb2NrXTsKKyAgICAgICAgeXMgPSByYy0+c2Jfc2Nhbl95X29mZltyYy0+bGFzdF9z dWJfYmxvY2tdOworICAgICAgICB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2Fu X3hfb2ZmW3JjLT5sYXN0X3NjYW5fcG9zXTsKKyAgICAgICAgeWMgPSAoeXMgPDwgcmMtPmxvZzJf c2JfaCkgKyByYy0+c2Nhbl95X29mZltyYy0+bGFzdF9zY2FuX3Bvc107CisgICAgfSB3aGlsZSAo KHhjICE9IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3gpIHx8ICh5YyAhPSByYy0+bGFzdF9z aWduaWZpY2FudF9jb2VmZl95KSk7Cit9CisKK3N0YXRpYyB2b2lkIGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeF95X2RlY29kZShSZXNpZHVhbENvZGluZyAqcmMsIFZWQ0xvY2FsQ29udGV4dCAqbGMs CisgICAgY29uc3QgaW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hl aWdodCkKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gu cjsKKyAgICBjb25zdCBUcmFuc2Zvcm1CbG9jayAqdGIgICAgICA9IHJjLT50YjsKKyAgICBpbnQg bGFzdF9zaWduaWZpY2FudF9jb2VmZl94LCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3k7CisKKyAg ICBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3hfcHJl Zml4X2RlY29kZShsYywKKyAgICAgICAgICAgIHRiLT5sb2cyX3RiX3dpZHRoLCBsb2cyX3pvX3Ri X3dpZHRoLCB0Yi0+Y19pZHgpOworCisgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gbGFz dF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeF9kZWNvZGUobGMsCisgICAgICAgIHRiLT5sb2cy X3RiX2hlaWdodCwgbG9nMl96b190Yl9oZWlnaHQsIHRiLT5jX2lkeCk7CisKKyAgICBpZiAobGFz dF9zaWduaWZpY2FudF9jb2VmZl94ID4gMykgeworICAgICAgICBpbnQgc3VmZml4ID0gbGFzdF9z aWdfY29lZmZfc3VmZml4X2RlY29kZShsYywgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94KTsKKyAg ICAgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0gKDEgPDwgKChsYXN0X3NpZ25pZmljYW50 X2NvZWZmX3ggPj4gMSkgLSAxKSkgKgorICAgICAgICAgICAgKDIgKyAobGFzdF9zaWduaWZpY2Fu dF9jb2VmZl94ICYgMSkpICsgc3VmZml4OworICAgIH0KKyAgICBpZiAobGFzdF9zaWduaWZpY2Fu dF9jb2VmZl95ID4gMykgeworICAgICAgICBpbnQgc3VmZml4ID0gbGFzdF9zaWdfY29lZmZfc3Vm Zml4X2RlY29kZShsYywgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95KTsKKyAgICAgICAgbGFzdF9z aWduaWZpY2FudF9jb2VmZl95ID0gKDEgPDwgKChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPj4g MSkgLSAxKSkgKgorICAgICAgICAgICAgKDIgKyAobGFzdF9zaWduaWZpY2FudF9jb2VmZl95ICYg MSkpICsgc3VmZml4OworICAgIH0KKyAgICBpZiAocnNoLT5zaF9yZXZlcnNlX2xhc3Rfc2lnX2Nv ZWZmX2ZsYWcpIHsKKyAgICAgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0gKDEgPDwgbG9n Ml96b190Yl93aWR0aCkgLSAxIC0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgICAgICBs YXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPSAoMSA8PCBsb2cyX3pvX3RiX2hlaWdodCkgLSAxIC0g bGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworICAgIH0KKyAgICByYy0+bGFzdF9zaWduaWZpY2Fu dF9jb2VmZl94ID0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgIHJjLT5sYXN0X3NpZ25p ZmljYW50X2NvZWZmX3kgPSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3k7Cit9CisKK3N0YXRpYyBp bnQgaGxzX3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9j ayAqdGIpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgID0gbGMtPmZjLT5wcy5zcHM7 CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgICAgID0gbGMtPmN1OworICAgIGNvbnN0IGludCBs b2cyX3RiX3dpZHRoICA9IHRiLT5sb2cyX3RiX3dpZHRoOworICAgIGNvbnN0IGludCBsb2cyX3Ri X2hlaWdodCA9IHRiLT5sb2cyX3RiX2hlaWdodDsKKyAgICBjb25zdCBpbnQgY19pZHggICAgICAg ICAgPSB0Yi0+Y19pZHg7CisgICAgaW50IGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVp Z2h0OworICAgIFJlc2lkdWFsQ29kaW5nIHJjOworCisgICAgaWYgKHNwcy0+ci0+c3BzX210c19l bmFibGVkX2ZsYWcgJiYgY3UtPnNidF9mbGFnICYmICFjX2lkeCAmJiBsb2cyX3RiX3dpZHRoID09 IDUgJiYgbG9nMl90Yl9oZWlnaHQgPCA2KQorICAgICAgICBsb2cyX3pvX3RiX3dpZHRoID0gNDsK KyAgICBlbHNlCisgICAgICAgIGxvZzJfem9fdGJfd2lkdGggPSBGRk1JTihsb2cyX3RiX3dpZHRo LCA1ICk7CisKKyAgICBpZiAoc3BzLT5yLT5zcHNfbXRzX2VuYWJsZWRfZmxhZyAmJiBjdS0+c2J0 X2ZsYWcgJiYgIWNfaWR4ICYmIGxvZzJfdGJfd2lkdGggPCA2ICYmIGxvZzJfdGJfaGVpZ2h0ID09 IDUgKQorICAgICAgICBsb2cyX3pvX3RiX2hlaWdodCA9IDQ7CisgICAgZWxzZQorICAgICAgICBs b2cyX3pvX3RiX2hlaWdodCA9IEZGTUlOKGxvZzJfdGJfaGVpZ2h0LCA1KTsKKworICAgIGluaXRf cmVzaWR1YWxfY29kaW5nKGxjLCAmcmMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVp Z2h0LCB0Yik7CisgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94X3lfZGVjb2RlKCZyYywgbGMs IGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKyAgICBkZXJpdmVfbGFzdF9z Y2FuX3BvcygmcmMpOworCisgICAgaWYgKCFyYy5sYXN0X3N1Yl9ibG9jayAmJiBsb2cyX3RiX3dp ZHRoID49IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiAmJiAhdGItPnRzICYmIHJjLmxhc3Rfc2Nh bl9wb3MgPiAwKQorICAgICAgICBsYy0+cGFyc2UubGZuc3RfZGNfb25seSA9IDA7CisgICAgaWYg KChyYy5sYXN0X3N1Yl9ibG9jayA+IDAgJiYgbG9nMl90Yl93aWR0aCA+PSAyICYmIGxvZzJfdGJf aGVpZ2h0ID49IDIgKSB8fAorICAgICAgICAgKHJjLmxhc3Rfc2Nhbl9wb3MgPiA3ICYmIChsb2cy X3RiX3dpZHRoID09IDIgfHwgbG9nMl90Yl93aWR0aCA9PSAzICkgJiYKKyAgICAgICAgIGxvZzJf dGJfd2lkdGggPT0gbG9nMl90Yl9oZWlnaHQpKQorICAgICAgICBsYy0+cGFyc2UubGZuc3RfemVy b19vdXRfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgIGlmICgocmMubGFzdF9zdWJfYmxvY2sgPiAw IHx8IHJjLmxhc3Rfc2Nhbl9wb3MgPiAwICkgJiYgIWNfaWR4KQorICAgICAgICBsYy0+cGFyc2Uu bXRzX2RjX29ubHkgPSAwOworCisgICAgbWVtc2V0KHRiLT5jb2VmZnMsIDAsIHRiLT50Yl93aWR0 aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YoKnRiLT5jb2VmZnMpKTsKKyAgICBtZW1zZXQocmMu YWJzX2xldmVsLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLmFi c19sZXZlbFswXSkpOworICAgIG1lbXNldChyYy5zYl9jb2RlZF9mbGFnLCAwLCByYy5uYl9zYnMp OworICAgIG1lbXNldChyYy5hYnNfbGV2ZWxfcGFzczEsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50 Yl9oZWlnaHQgKiBzaXplb2YocmMuYWJzX2xldmVsX3Bhc3MxWzBdKSk7CisgICAgbWVtc2V0KHJj LnNpZ19jb2VmZl9mbGFnLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9m KHJjLnNpZ19jb2VmZl9mbGFnWzBdKSk7CisKKyAgICBmb3IgKGludCBpID0gcmMubGFzdF9zdWJf YmxvY2s7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGludCByZXQgPSByZXNpZHVhbF9jb2Rpbmdf c3ViYmxvY2sobGMsICZyYywgaSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAg cmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGZmX3Z2Y19yZXNp ZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKQorewor ICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoID0gbGMtPnNjLT5zaC5yOworICAgIGNv bnN0IGludCB0cyAgICAgICAgICAgICAgICAgID0gIXJzaC0+c2hfdHNfcmVzaWR1YWxfY29kaW5n X2Rpc2FibGVkX2ZsYWcgJiYgdGItPnRzOworCisgICAgcmV0dXJuIHRzID8gaGxzX3Jlc2lkdWFs X3RzX2NvZGluZyhsYywgdGIpIDogaGxzX3Jlc2lkdWFsX2NvZGluZyhsYywgdGIpOworfQorCitp bnQgZmZfdnZjX2N1X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKENVX0NPREVEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3NidF9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IHcgICA9IGxjLT5jdS0+Y2Jfd2lk dGg7CisgICAgY29uc3QgaW50IGggICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0IGlu dCBpbmMgPSB3ICogaCA8PSAyNTY7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRfRkxBRyAr IGluYyk7Cit9CisKK2ludCBmZl92dmNfc2J0X3F1YWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX1FVQURfRkxBRyk7Cit9CisKK2ludCBm Zl92dmNfc2J0X2hvcml6b250YWxfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNv bnN0IGludCB3ID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25zdCBpbnQgaCA9IGxjLT5jdS0+ Y2JfaGVpZ2h0OworICAgIGNvbnN0IGludCBpbmMgPSAodyA9PSBoKSA/IDAgOiAoKHcgPCBoKSA/ IDEgOiAyKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcgKyBp bmMpOworfQorCitpbnQgZmZfdnZjX3NidF9wb3NfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX1BPU19GTEFHKTsKK30KKworaW50IGZmX3Z2 Y19sZm5zdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICBp ZiAoIUdFVF9DQUJBQyhMRk5TVF9JRFggKyBpbmMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBp ZiAoIUdFVF9DQUJBQyhMRk5TVF9JRFggKyAyKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0 dXJuIDI7Cit9CisKK2ludCBmZl92dmNfbXRzX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgaWYgKCFH RVRfQ0FCQUMoTVRTX0lEWCArIGkpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAg IHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2VuZF9vZl9zbGljZV9mbGFnX2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNfdGVybWluYXRlKCZsYy0+ ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19lbmRfb2ZfdGlsZV9vbmVfYml0KFZWQ0xvY2FsQ29u dGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY190ZXJtaW5hdGUoJmxjLT5lcC0+Y2Mp OworfQorCitpbnQgZmZfdnZjX2VuZF9vZl9zdWJzZXRfb25lX2JpdChWVkNMb2NhbENvbnRleHQg KmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNfdGVybWluYXRlKCZsYy0+ZXAtPmNjKTsKK30K ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5oIGIvbGliYXZjb2RlYy92dmMv dnZjX2NhYmFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTcyYWIy NzJmZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5oCkBAIC0w LDAgKzEsMTI2IEBACisvKgorICogVlZDIENBQkFDIGRlY29kZXIKKyAqCisgKiBDb3B5cmlnaHQg KEMpIDIwMjIgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoK KyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisK KyNpZm5kZWYgQVZDT0RFQ19WVkNfVlZDX0NBQkFDX0gKKyNkZWZpbmUgQVZDT0RFQ19WVkNfVlZD X0NBQkFDX0gKKworI2luY2x1ZGUgInZ2Y19jdHUuaCIKKworaW50IGZmX3Z2Y19jYWJhY19pbml0 KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdHVfaWR4LCBpbnQgcngsIGludCByeSk7CisKKy8v c2FvCitpbnQgZmZfdnZjX3Nhb19tZXJnZV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfc2FvX3R5cGVfaWR4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMp OworaW50IGZmX3Z2Y19zYW9fb2Zmc2V0X2Fic19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfc2lnbl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX3Nhb19lb19jbGFzc19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisK Ky8vYWxmCitpbnQgZmZfdnZjX2FsZl9jdGJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQg cngsIGludCByeSwgaW50IGNfaWR4KTsKK2ludCBmZl92dmNfYWxmX3VzZV9hcHNfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWxmX2x1bWFfcHJldl9maWx0ZXJfaWR4KFZW Q0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfbHVtYV9maXhlZF9maWx0ZXJfaWR4 KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4 KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjX2lkeCwgaW50IG51bV9jaHJvbWFfZmlsdGVycyk7 CitpbnQgZmZfdnZjX2FsZl9jdGJfY2NfaWRjKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCByeCwg aW50IHJ5LCBpbnQgaWR4LCBpbnQgY2NfZmlsdGVyc19zaWduYWxsZWQpOworCisvL2NvZGluZ190 cmVlCitpbnQgZmZfdnZjX3NwbGl0X2N1X2ZsYWcoVlZDTG9jYWxDb250ZXh0KiBsYywgaW50IHgw LCBpbnQgeTAsIGludCBjYl93aWR0aCwgaW50IGNiX2hlaWdodCwKKyAgICBpbnQgY2hfdHlwZSwg Y29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKTsKK1ZWQ1NwbGl0TW9kZSBmZl92dmNfc3BsaXRfbW9k ZShWVkNMb2NhbENvbnRleHQgKmxjLCAgaW50IHgwLCBpbnQgeTAsIGludCBjYl93aWR0aCwgaW50 IGNiX2hlaWdodCwKKyAgICBpbnQgY3F0X2RlcHRoLCBpbnQgbXR0X2RlcHRoLCBpbnQgY2hfdHlw ZSwgY29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKTsKK2ludCBmZl92dmNfbm9uX2ludGVyX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHgwLCBpbnQgeTAsIGludCBjaF90eXBlKTsKKworLy9j b2RpbmcgdW5pdAoraW50IGZmX3Z2Y19wcmVkX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj LCBpbnQgaXNfY2hyb21hKTsKK2ludCBmZl92dmNfcHJlZF9tb2RlX3BsdF9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZGlyX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3NraXBfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBjb25zdCB1aW50OF90ICpjdV9za2lwX2ZsYWcpOworaW50IGZmX3Z2Y19wcmVk X21vZGVfaWJjX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNoX3R5cGUpOworaW50IGZm X3Z2Y19jdV9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jdV9x cF9kZWx0YV9hYnMoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3FwX2RlbHRh X3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3NidF9xdWFkX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3NidF9ob3Jpem9udGFsX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX3NidF9wb3NfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKKwor Ly9pbnRyYQoraW50IGZmX3Z2Y19pbnRyYV9taXBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCB1aW50OF90ICppbnRyYV9taXBfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX21pcF90cmFu c3Bvc2VkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX21pcF9t b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX3JlZl9pZHgo VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX3N1YnBhcnRpdGlvbnNfbW9k ZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworZW51bSBJc3BUeXBlIGZmX3Z2Y19pc3Bfc3Bs aXRfdHlwZShWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2Rl X2ZsYWcpOworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMpOworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpOworaW50IGZmX3Z2Y19p bnRyYV9sdW1hX21wbV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJh X2x1bWFfbXBtX3JlbWFpbmRlcihWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY2Ns bV9tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2NjbG1fbW9kZV9p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2Nocm9tYV9wcmVkX21v ZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKKy8vaW50ZXIKK2ludCBmZl92dmNfZ2VuZXJhbF9t ZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19tZXJnZV9zdWJibG9j a19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19tZXJnZV9zdWJibG9ja19p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IG1heF9udW1fc3ViYmxvY2tfbWVyZ2VfY2FuZCk7 CitpbnQgZmZfdnZjX3JlZ3VsYXJfbWVyZ2VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQg Y3Vfc2tpcF9mbGFnKTsKK2ludCBmZl92dmNfbWVyZ2VfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMp OworaW50IGZmX3Z2Y19tbXZkX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQg ZmZfdnZjX21tdmRfY2FuZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOwordm9pZCBmZl92dmNf bW12ZF9vZmZzZXRfY29kaW5nKFZWQ0xvY2FsQ29udGV4dCAqbGMsIE12ICptdmRfb2Zmc2V0LCBp bnQgcGhfbW12ZF9mdWxscGVsX29ubHlfZmxhZyk7CitpbnQgZmZfdnZjX2NpaXBfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX3BhcnRpdGlvbl9pZHgoVlZD TG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdlX2dwbV9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYywgaW50IGlkeCk7CitQcmVkRmxhZyBmZl92dmNfcHJlZF9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGludCBpc19iKTsKK2ludCBmZl92dmNfaW50ZXJfYWZmaW5lX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X2FmZmluZV90eXBlX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3N5bV9tdmRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfcmVmX2lkeF9seChWVkNMb2NhbENvbnRleHQgKmxjLCB1aW50OF90IG5i X3JlZnMpOworaW50IGZmX3Z2Y19hYnNfbXZkX2dyZWF0ZXIwX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjFfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9taW51czIoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citp bnQgZmZfdnZjX212ZF9zaWduX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZj X212cF9seF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbXZyX3NoaWZ0 KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRlcl9hZmZpbmVfZmxhZywgUHJlZE1vZGUgcHJl ZF9tb2RlLCBpbnQgaGFzX2FtdnJfZmxhZyk7CitpbnQgZmZfdnZjX2Jjd19pZHgoVlZDTG9jYWxD b250ZXh0ICpsYywgaW50IG5vX2JhY2t3YXJkX3ByZWRfZmxhZyk7CisKKy8vdHJhbnNmb3JtCitp bnQgZmZfdnZjX3R1X2NiX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX3R1X2NyX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHR1X2NiX2NvZGVk X2ZsYWcpOworaW50IGZmX3Z2Y190dV95X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9pZHgoVlZDTG9jYWxDb250ZXh0ICps Yyk7CitpbnQgZmZfdnZjX3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZywgaW50IHR1X2NyX2NvZGVkX2ZsYWcpOworaW50 IGZmX3Z2Y190cmFuc2Zvcm1fc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdHgp OworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgVHJhbnNm b3JtQmxvY2sgKnRiKTsKK2ludCBmZl92dmNfbGZuc3RfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMs IGludCBpbmMpOworaW50IGZmX3Z2Y19tdHNfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworCitp bnQgZmZfdnZjX2VuZF9vZl9zbGljZV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfZW5kX29mX3RpbGVfb25lX2JpdChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2lu dCBmZl92dmNfZW5kX29mX3N1YnNldF9vbmVfYml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworCisj ZW5kaWYgLy9BVkNPREVDX1ZWQ19WVkNfQ0FCQUNfSApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92 dmMvdnZjX2N0dS5jIGIvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc4YjEzZmZiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9saWJh dmNvZGVjL3Z2Yy92dmNfY3R1LmMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIFZWQyBDVFUoQ29k aW5nIFRyZWUgVW5pdCkgcGFyc2VyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQor ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAidnZjX2N0 dS5oIgorCit2b2lkIGZmX3Z2Y19lcF9pbml0X3N0YXRfY29lZmYoRW50cnlQb2ludCAqZXAsCisJ Y29uc3QgaW50IGJpdF9kZXB0aCwgY29uc3QgaW50IHBlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9u X2VuYWJsZWRfZmxhZykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEZGX0FSUkFZX0VM RU1TKGVwLT5zdGF0X2NvZWZmKTsgKytpKSB7CisgICAgICAgIGVwLT5zdGF0X2NvZWZmW2ldID0K KyAgICAgICAgICAgIHBlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2VuYWJsZWRfZmxhZyA/IDIg KiAoYXZfbG9nMihiaXRfZGVwdGggLSAxMCkpIDogMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmggYi9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2NmOWQ5ZjA0NQotLS0gL2Rldi9udWxs CisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaApAQCAtMCwwICsxLDQ2NCBAQAorLyoKKyAq IFZWQyBDVFUoQ29kaW5nIFRyZWUgVW5pdCkgcGFyc2VyCisgKgorICogQ29weXJpZ2h0IChDKSAy MDIyIE51byBNaQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZu ZGVmIEFWQ09ERUNfVlZDX1ZWQ19DVFVfSAorI2RlZmluZSBBVkNPREVDX1ZWQ19WVkNfQ1RVX0gK KworI2luY2x1ZGUgImxpYmF2Y29kZWMvY2FiYWMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVt X2ludGVybmFsLmgiCisKKyNpbmNsdWRlICJ2dmNkZWMuaCIKKworI2RlZmluZSBNQVhfQ1RVX1NJ WkUgICAgICAgICAgICAxMjgKKworI2RlZmluZSBNQVhfQ1VfU0laRSAgICAgICAgICAgICBNQVhf Q1RVX1NJWkUKKyNkZWZpbmUgTUlOX0NVX1NJWkUgICAgICAgICAgICAgNAorI2RlZmluZSBNSU5f Q1VfTE9HMiAgICAgICAgICAgICAyCisjZGVmaW5lIE1BWF9DVV9ERVBUSCAgICAgICAgICAgIDcK KworI2RlZmluZSBNQVhfUEFSVFNfSU5fQ1RVICAgICAgICAoKE1BWF9DVFVfU0laRSA+PiBNSU5f Q1VfTE9HMikgKiAoTUFYX0NUVV9TSVpFID4+IE1JTl9DVV9MT0cyKSkKKworI2RlZmluZSBNSU5f UFVfU0laRSAgICAgICAgICAgICA0CisKKyNkZWZpbmUgTUFYX1RCX1NJWkUgICAgICAgICAgICAg NjQKKyNkZWZpbmUgTUlOX1RVX1NJWkUgICAgICAgICAgICAgNAorI2RlZmluZSBNQVhfVFVTX0lO X0NVICAgICAgICAgICA2NAorCisjZGVmaW5lIE1BWF9RUCAgICAgICAgICAgICAgICAgIDYzCisK KyNkZWZpbmUgTUFYX1BCX1NJWkUgICAgICAgICAgICAgMTI4CisjZGVmaW5lIEVER0VfRU1VX0JV RkZFUl9TVFJJREUgIChNQVhfUEJfU0laRSArIDMyKQorCisjZGVmaW5lIENIUk9NQV9FWFRSQV9C RUZPUkUgICAgIDEKKyNkZWZpbmUgQ0hST01BX0VYVFJBX0FGVEVSICAgICAgMgorI2RlZmluZSBD SFJPTUFfRVhUUkEgICAgICAgICAgICAzCisjZGVmaW5lIExVTUFfRVhUUkFfQkVGT1JFICAgICAg IDMKKyNkZWZpbmUgTFVNQV9FWFRSQV9BRlRFUiAgICAgICAgNAorI2RlZmluZSBMVU1BX0VYVFJB ICAgICAgICAgICAgICA3CisjZGVmaW5lIEJJTElORUFSX0VYVFJBX0JFRk9SRSAgIDAKKyNkZWZp bmUgQklMSU5FQVJfRVhUUkFfQUZURVIgICAgMQorI2RlZmluZSBCSUxJTkVBUl9FWFRSQSAgICAg ICAgICAxCisKKyNkZWZpbmUgTUFYX0NPTlRST0xfUE9JTlRTICAgICAgMworCisjZGVmaW5lIEFG RklORV9NSU5fQkxPQ0tfU0laRSAgIDQKKworI2RlZmluZSBNUkdfTUFYX05VTV9DQU5EUyAgICAg ICA2CisjZGVmaW5lIE1BWF9OVU1fSE1WUF9DQU5EUyAgICAgIDUKKworI2RlZmluZSBTQU9fUEFE RElOR19TSVpFICAgICAgICAxCisKKyNkZWZpbmUgQUxGX1BBRERJTkdfU0laRSAgICAgICAgOAor I2RlZmluZSBBTEZfQkxPQ0tfU0laRSAgICAgICAgICA0CisKKyNkZWZpbmUgQUxGX0JPUkRFUl9M VU1BICAgICAgICAgMworI2RlZmluZSBBTEZfQk9SREVSX0NIUk9NQSAgICAgICAyCisKKyNkZWZp bmUgQUxGX1ZCX1BPU19BQk9WRV9MVU1BICAgNAorI2RlZmluZSBBTEZfVkJfUE9TX0FCT1ZFX0NI Uk9NQSAyCisKKyNkZWZpbmUgQUxGX0dSQURJRU5UX1NURVAgICAgICAgMgorI2RlZmluZSBBTEZf R1JBRElFTlRfQk9SREVSICAgICAyCisjZGVmaW5lIEFMRl9HUkFESUVOVF9TSVpFICAgICAgICgo TUFYX0NVX1NJWkUgKyBBTEZfR1JBRElFTlRfQk9SREVSICogMikgLyBBTEZfR1JBRElFTlRfU1RF UCkKKyNkZWZpbmUgQUxGX05VTV9ESVIgICAgICAgICAgICAgNAorCisKKy8qKgorICogVmFsdWUg b2YgdGhlIGx1bWEgc2FtcGxlIGF0IHBvc2l0aW9uICh4LCB5KSBpbiB0aGUgMkQgYXJyYXkgdGFi LgorICovCisjZGVmaW5lIFNBTVBMRSh0YWIsIHgsIHkpICgodGFiKVsoeSkgKiBzLT5zcHMtPndp ZHRoICsgKHgpXSkKKyNkZWZpbmUgU0FNUExFX0NUQih0YWIsIHgsIHkpICgodGFiKVsoeSkgKiBt aW5fY2Jfd2lkdGggKyAoeCldKQorI2RlZmluZSBDVEIodGFiLCB4LCB5KSAoKHRhYilbKHkpICog ZmMtPnBzLnBwcy0+Y3RiX3dpZHRoICsgKHgpXSkKKworZW51bSBTQU9UeXBlIHsKKyAgICBTQU9f Tk9UX0FQUExJRUQgPSAwLAorICAgIFNBT19CQU5ELAorICAgIFNBT19FREdFLAorfTsKKworZW51 bSBTQU9FT0NsYXNzIHsKKyAgICBTQU9fRU9fSE9SSVogPSAwLAorICAgIFNBT19FT19WRVJULAor ICAgIFNBT19FT18xMzVELAorICAgIFNBT19FT180NUQsCit9OworCit0eXBlZGVmIHN0cnVjdCBO ZWlnaGJvdXJBdmFpbGFibGUgeworICAgIGludCBjYW5kX2xlZnQ7CisgICAgaW50IGNhbmRfdXA7 CisgICAgaW50IGNhbmRfdXBfbGVmdDsKKyAgICBpbnQgY2FuZF91cF9yaWdodDsKKyAgICBpbnQg Y2FuZF91cF9yaWdodF9zYXA7Cit9IE5laWdoYm91ckF2YWlsYWJsZTsKKworZW51bSBJc3BUeXBl eworICAgIElTUF9OT19TUExJVCwKKyAgICBJU1BfSE9SX1NQTElULAorICAgIElTUF9WRVJfU1BM SVQsCit9OworCit0eXBlZGVmIGVudW0gVlZDU3BsaXRNb2RlIHsKKyAgICBTUExJVF9OT05FLAor ICAgIFNQTElUX1RUX0hPUiwKKyAgICBTUExJVF9CVF9IT1IsCisgICAgU1BMSVRfVFRfVkVSLAor ICAgIFNQTElUX0JUX1ZFUiwKKyAgICBTUExJVF9RVCwKK30gVlZDU3BsaXRNb2RlOworCit0eXBl ZGVmIGVudW0gTXRzSWR4IHsKKyAgICBNVFNfRENUMl9EQ1QyLAorICAgIE1UU19EU1Q3X0RTVDcs CisgICAgTVRTX0RTVDdfRENUOCwKKyAgICBNVFNfRENUOF9EU1Q3LAorICAgIE1UU19EQ1Q4X0RD VDgsCit9IE10c0lkeDsKKwordHlwZWRlZiBzdHJ1Y3QgVHJhbnNmb3JtQmxvY2sgeworICAgIHVp bnQ4X3QgaGFzX2NvZWZmczsKKyAgICB1aW50OF90IGNfaWR4OworICAgIHVpbnQ4X3QgdHM7ICAg ICAgICAgICAgIC8vLzwgIHRyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICBpbnQgeDA7CisgICAgaW50 IHkwOworCisgICAgaW50IHRiX3dpZHRoOworICAgIGludCB0Yl9oZWlnaHQ7CisgICAgaW50IGxv ZzJfdGJfd2lkdGg7CisgICAgaW50IGxvZzJfdGJfaGVpZ2h0OworCisgICAgaW50IG1heF9zY2Fu X3g7CisgICAgaW50IG1heF9zY2FuX3k7CisgICAgaW50IG1pbl9zY2FuX3g7CisgICAgaW50IG1p bl9zY2FuX3k7CisKKyAgICBpbnQgcXA7CisgICAgaW50IHJlY3Rfbm9uX3RzX2ZsYWc7CisgICAg aW50IGJkX3NoaWZ0OworICAgIGludCBiZF9vZmZzZXQ7CisKKyAgICBpbnQgKmNvZWZmczsKK30g VHJhbnNmb3JtQmxvY2s7CisKK3R5cGVkZWYgZW51bSBWVkNUcmVlVHlwZSB7CisgICAgU0lOR0xF X1RSRUUsCisgICAgRFVBTF9UUkVFX0xVTUEsCisgICAgRFVBTF9UUkVFX0NIUk9NQSwKK30gVlZD VHJlZVR5cGU7CisKK3R5cGVkZWYgc3RydWN0IFRyYW5zZm9ybVVuaXQgeworICAgIGludCB4MDsK KyAgICBpbnQgeTA7CisgICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisKKyAgICB1aW50 OF90IGpvaW50X2NiY3JfcmVzaWR1YWxfZmxhZzsgICAgICAgICAgICAgICAgICAgLy8vPCB0dV9q b2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKworICAgIHVpbnQ4X3QgY29kZWRfZmxhZ1tWVkNfTUFY X1NBTVBMRV9BUlJBWVNdOyAgICAgICAgICAvLy88IHR1X3lfY29kZWRfZmxhZywgdHVfY2JfY29k ZWRfZmxhZywgdHVfY3JfY29kZWRfZmxhZworICAgIHVpbnQ4X3QgbmJfdGJzOworICAgIFRyYW5z Zm9ybUJsb2NrIHRic1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOworCisgICAgc3RydWN0IFRyYW5z Zm9ybVVuaXQgKm5leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJl ZmVyZW5jZQorfSBUcmFuc2Zvcm1Vbml0OworCit0eXBlZGVmIGVudW0gUHJlZE1vZGUgeworICAg IE1PREVfSU5URVIsCisgICAgTU9ERV9JTlRSQSwKKyAgICBNT0RFX1NLSVAsCisgICAgTU9ERV9Q TFQsCisgICAgTU9ERV9JQkMsCit9IFByZWRNb2RlOworCit0eXBlZGVmIHN0cnVjdCBNdiB7Cisg ICAgaW50IHg7ICAvLy88IGhvcml6b250YWwgY29tcG9uZW50IG9mIG1vdGlvbiB2ZWN0b3IKKyAg ICBpbnQgeTsgIC8vLzwgdmVydGljYWwgY29tcG9uZW50IG9mIG1vdGlvbiB2ZWN0b3IKK30gTXY7 CisKK3R5cGVkZWYgc3RydWN0IE12RmllbGQgeworICAgIERFQ0xBUkVfQUxJR05FRCg0LCBNdiwg bXYpWzJdOyAgLy8vPCBtdkwwLCB2dkwxCisgICAgaW50OF90ICByZWZfaWR4WzJdOyAgICAgICAg ICAgICAvLy88IHJlZklkeEwwLCByZWZJZHhMMQorICAgIHVpbnQ4X3QgaHBlbF9pZl9pZHg7ICAg ICAgICAgICAgLy8vPCBocGVsSWZJZHgKKyAgICB1aW50OF90IGJjd19pZHg7ICAgICAgICAgICAg ICAgIC8vLzwgYmN3SWR4CisgICAgdWludDhfdCBwcmVkX2ZsYWc7CisgICAgdWludDhfdCBjaWlw X2ZsYWc7ICAgICAgICAgICAgICAvLy88IGNpaXBfZmxhZworfSBNdkZpZWxkOworCit0eXBlZGVm IHN0cnVjdCBETVZSSW5mbyB7CisgICAgREVDTEFSRV9BTElHTkVEKDQsIE12LCBtdilbMl07ICAv Ly88IG12TDAsIHZ2TDEKKyAgICB1aW50OF90IGRtdnJfZW5hYmxlZDsKK30gRE1WUkluZm87CisK K3R5cGVkZWYgZW51bSBNb3Rpb25Nb2RlbElkYyB7CisgICAgTU9USU9OX1RSQU5TTEFUSU9OLAor ICAgIE1PVElPTl80X1BBUkFNU19BRkZJTkUsCisgICAgTU9USU9OXzZfUEFSQU1TX0FGRklORSwK K30gTW90aW9uTW9kZWxJZGM7CisKK3R5cGVkZWYgZW51bSBQcmVkRmxhZyB7CisgICAgUEZfSU5U UkEgPSAweDAsCisgICAgUEZfTDAgICAgPSAweDEsCisgICAgUEZfTDEgICAgPSAweDIsCisgICAg UEZfQkkgICAgPSAweDMsCit9IFByZWRGbGFnOworCit0eXBlZGVmIGVudW0gSW50cmFQcmVkTW9k ZSB7CisgICAgSU5UUkFfSU5WQUxJRCAgID0gLTEsCisgICAgSU5UUkFfUExBTkFSICAgID0gMCwK KyAgICBJTlRSQV9EQywKKyAgICBJTlRSQV9IT1JaICAgICAgPSAxOCwKKyAgICBJTlRSQV9ESUFH ICAgICAgPSAzNCwKKyAgICBJTlRSQV9WRVJUICAgICAgPSA1MCwKKyAgICBJTlRSQV9WRElBRyAg ICAgPSA2NiwKKyAgICBJTlRSQV9MVF9DQ0xNICAgPSA4MSwKKyAgICBJTlRSQV9MX0NDTE0sCisg ICAgSU5UUkFfVF9DQ0xNCit9IEludHJhUHJlZE1vZGU7CisKK3R5cGVkZWYgc3RydWN0IE1vdGlv bkluZm8geworICAgIE1vdGlvbk1vZGVsSWRjIG1vdGlvbl9tb2RlbF9pZGM7IC8vLzwgTW90aW9u TW9kZWxJZGMKKyAgICBpbnQ4X3QgICByZWZfaWR4WzJdOyAgICAgICAgICAgICAvLy88IHJlZklk eEwwLCByZWZJZHhMMQorICAgIHVpbnQ4X3QgIGhwZWxfaWZfaWR4OyAgICAgICAgICAgIC8vLzwg aHBlbElmSWR4CisgICAgdWludDhfdCAgYmN3X2lkeDsgICAgICAgICAgICAgICAgLy8vPCBiY3dJ ZHgKKyAgICBQcmVkRmxhZyBwcmVkX2ZsYWc7CisKKyAgICBNdiBtdlsyXVtNQVhfQ09OVFJPTF9Q T0lOVFNdOworCisgICAgaW50IG51bV9zYl94LCBudW1fc2JfeTsKK30gTW90aW9uSW5mbzsKKwor dHlwZWRlZiBzdHJ1Y3QgUHJlZGljdGlvblVuaXQgeworICAgIHVpbnQ4X3QgZ2VuZXJhbF9tZXJn ZV9mbGFnOworICAgIHVpbnQ4X3QgbW12ZF9tZXJnZV9mbGFnOworICAgIC8vSW50ZXJQcmVkSWRj IGludGVyX3ByZWRfaWRjOworICAgIHVpbnQ4X3QgaW50ZXJfYWZmaW5lX2ZsYWc7CisKKyAgICAv L3N1YmJsb2NrIHByZWRpY3QKKyAgICB1aW50OF90IG1lcmdlX3N1YmJsb2NrX2ZsYWc7CisKKyAg ICB1aW50OF90IG1lcmdlX2dwbV9mbGFnOworICAgIHVpbnQ4X3QgZ3BtX3BhcnRpdGlvbl9pZHg7 CisgICAgTXZGaWVsZCBncG1fbXZbMl07CisKKyAgICBpbnQgc3ltX212ZF9mbGFnOworCisgICAg TW90aW9uSW5mbyBtaTsKKworICAgIC8vIGZvciByZWd1bGFyIHByZWRpY3Rpb24gb25seQorICAg IHVpbnQ4X3QgZG12cl9mbGFnOworICAgIHVpbnQ4X3QgYmRvZl9mbGFnOworCisgICAgaW50MTZf dCBkaWZmX212X3hbMl1bQUZGSU5FX01JTl9CTE9DS19TSVpFICogQUZGSU5FX01JTl9CTE9DS19T SVpFXTsgICAvLy88IGRpZmZNdkxYCisgICAgaW50MTZfdCBkaWZmX212X3lbMl1bQUZGSU5FX01J Tl9CTE9DS19TSVpFICogQUZGSU5FX01JTl9CTE9DS19TSVpFXTsgICAvLy88IGRpZmZNdkxYCisg ICAgaW50IGNiX3Byb2ZfZmxhZ1syXTsKK30gUHJlZGljdGlvblVuaXQ7CisKK3R5cGVkZWYgc3Ry dWN0IENvZGluZ1VuaXQgeworICAgIFZWQ1RyZWVUeXBlIHRyZWVfdHlwZTsKKyAgICBpbnQgeDA7 CisgICAgaW50IHkwOworICAgIGludCBjYl93aWR0aDsKKyAgICBpbnQgY2JfaGVpZ2h0OworICAg IGludCBjaF90eXBlOworICAgIGludCBjcXRfZGVwdGg7CisKKyAgICB1aW50OF90IGNvZGVkX2Zs YWc7CisKKyAgICB1aW50OF90IHNidF9mbGFnOworICAgIHVpbnQ4X3Qgc2J0X2hvcml6b250YWxf ZmxhZzsKKyAgICB1aW50OF90IHNidF9wb3NfZmxhZzsKKworICAgIGludCBsZm5zdF9pZHg7Cisg ICAgTXRzSWR4IG10c19pZHg7CisKKyAgICB1aW50OF90IGFjdF9lbmFibGVkX2ZsYWc7CisKKyAg ICB1aW50OF90IGludHJhX2x1bWFfcmVmX2lkeDsgICAgICAgICAgICAgICAgICAgICAvLy88IElu dHJhTHVtYVJlZkxpbmVJZHhbXVtdCisgICAgdWludDhfdCBpbnRyYV9taXBfZmxhZzsgICAgICAg ICAgICAgICAgICAgICAgICAgLy8vPCBpbnRyYV9taXBfZmxhZworICAgIHVpbnQ4X3Qgc2tpcF9m bGFnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgY3Vfc2tpcF9mbGFnOworCisg ICAgLy9pbnRlcgorICAgIHVpbnQ4X3QgY2lpcF9mbGFnOworCisgICAgLy8gSW5mZXJyZWQgcGFy YW1ldGVycworICAgIGVudW0gSXNwVHlwZSBpc3Bfc3BsaXRfdHlwZTsgICAgICAgICAgICAgICAg ICAgIC8vLzwgSW50cmFTdWJQYXJ0aXRpb25zU3BsaXRUeXBlCisKKyAgICBlbnVtIFByZWRNb2Rl IHByZWRfbW9kZTsgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFByZWRNb2RlCisKKyAgICBp bnQgbnVtX2ludHJhX3N1YnBhcnRpdGlvbnM7CisKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3By ZWRfbW9kZV95OyAgICAgICAgICAgICAgICAvLy88IEludHJhUHJlZE1vZGVZCisgICAgSW50cmFQ cmVkTW9kZSBpbnRyYV9wcmVkX21vZGVfYzsgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVByZWRN b2RlQworICAgIGludCBtaXBfY2hyb21hX2RpcmVjdF9mbGFnOyAgICAgICAgICAgICAgICAgICAg IC8vLzwgTWlwQ2hyb21hRGlyZWN0RmxhZworCisgICAgaW50IGJkcGNtX2ZsYWdbVlZDX01BWF9T QU1QTEVfQVJSQVlTXTsgICAgICAgICAgLy8vPCBCZHBjbUZsYWcKKworICAgIGludCBhcHBseV9s Zm5zdF9mbGFnW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgIC8vLzwgQXBwbHlMZm5zdEZsYWdb XQorCisgICAgc3RydWN0IHsKKyAgICAgICAgVHJhbnNmb3JtVW5pdCAqaGVhZDsgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2UKKyAgICAgICAgVHJhbnNmb3Jt VW5pdCAqdGFpbDsgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVu Y2UKKyAgICB9IHR1czsKKworICAgIGludDhfdCBxcFs0XTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vLzwgUXBZLCBRcOKAskNiLCBRcOKAskNyLCBRcOKAskNiQ3IKKworICAg IFByZWRpY3Rpb25Vbml0IHB1OworCisgICAgc3RydWN0IENvZGluZ1VuaXQgKm5leHQ7ICAgICAg ICAgICAgICAgICAgICAgICAgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCit9IENvZGluZ1VuaXQ7 CisKK3R5cGVkZWYgc3RydWN0IENUVSB7CisgICAgQ29kaW5nVW5pdCAqY3VzOworICAgIGludCBt YXhfeVsyXVtWVkNfTUFYX1JFRl9FTlRSSUVTXTsKKyAgICBpbnQgbWF4X3lfaWR4WzJdOworICAg IGludCBoYXNfZG12cjsKK30gQ1RVOworCit0eXBlZGVmIHN0cnVjdCBSZWNvbnN0cnVjdGVkQXJl YSB7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IHc7CisgICAgaW50IGg7Cit9IFJl Y29uc3RydWN0ZWRBcmVhOworCit0eXBlZGVmIHN0cnVjdCBWVkNDYWJhY1N0YXRlIHsKKyAgICB1 aW50MTZfdCBzdGF0ZVsyXTsKKyAgICB1aW50OF90ICBzaGlmdFsyXTsKK30gVlZDQ2FiYWNTdGF0 ZTsKKworLy8gVlZDX0NPTlRFWFRTIG1hdGNoZWQgd2l0aCBTWU5UQVhfRUxFTUVOVF9MQVNULCBp dCdzIGNoZWNrZWQgYnkgY2FiYWNfaW5pdF9zdGF0ZS4KKyNkZWZpbmUgVlZDX0NPTlRFWFRTIDM3 OAordHlwZWRlZiBzdHJ1Y3QgRW50cnlQb2ludCB7CisgICAgaW50OF90IHFwX3k7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBRcFkKKworICAgIGludCBzdGF0X2NvZWZm W1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgICAgICAgIC8vLzwgU3RhdENvZWZmCisKKyAgICBW VkNDYWJhY1N0YXRlIGNhYmFjX3N0YXRlW1ZWQ19DT05URVhUU107CisgICAgQ0FCQUNDb250ZXh0 IGNjOworCisgICAgaW50IGN0dV9zdGFydDsKKyAgICBpbnQgY3R1X2VuZDsKKworICAgIHVpbnQ4 X3QgaXNfZmlyc3RfcWc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IHF1YW50 aXphdGlvbiBncm91cAorICAgIE12RmllbGQgaG12cFtNQVhfTlVNX0hNVlBfQ0FORFNdOyAgICAg ICAgICAgICAgIC8vLzwgSG12cENhbmRMaXN0CisgICAgaW50ICAgICBudW1faG12cDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBOdW1IbXZwQ2FuZAorfSBFbnRyeVBvaW50Owor Cit0eXBlZGVmIHN0cnVjdCBWVkNMb2NhbENvbnRleHQgeworICAgIHVpbnQ4X3QgY3RiX2xlZnRf ZmxhZzsKKyAgICB1aW50OF90IGN0Yl91cF9mbGFnOworICAgIHVpbnQ4X3QgY3RiX3VwX3JpZ2h0 X2ZsYWc7CisgICAgdWludDhfdCBjdGJfdXBfbGVmdF9mbGFnOworICAgIGludCAgICAgZW5kX29m X3RpbGVzX3g7CisgICAgaW50ICAgICBlbmRfb2ZfdGlsZXNfeTsKKworICAgIC8qICs3IGlzIGZv ciBzdWJwaXhlbCBpbnRlcnBvbGF0aW9uLCAqMiBmb3IgaGlnaCBiaXQgZGVwdGhzICovCisgICAg REVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBlZGdlX2VtdV9idWZmZXIpWyhNQVhfUEJfU0la RSArIDcpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJdOworICAgIC8qIFRoZSBleHRlbmRl ZCBzaXplIGJldHdlZW4gdGhlIG5ldyBlZGdlIGVtdSBidWZmZXIgaXMgYWJ1c2VkIGJ5IFNBTyAq LworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgZWRnZV9lbXVfYnVmZmVyMilbKE1B WF9QQl9TSVpFICsgNykgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFS RV9BTElHTkVEKDMyLCBpbnQxNl90LCB0bXApW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkVdOwor ICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MTZfdCwgdG1wMSlbTUFYX1BCX1NJWkUgKiBNQVhf UEJfU0laRV07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCBpbnQxNl90LCB0bXAyKVtNQVhfUEJf U0laRSAqIE1BWF9QQl9TSVpFXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGNp aXBfdG1wMSlbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRSAqIDJdOworICAgIERFQ0xBUkVfQUxJ R05FRCgzMiwgdWludDhfdCwgY2lpcF90bXAyKVtNQVhfUEJfU0laRSAqIE1BWF9QQl9TSVpFICog Ml07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBzYW9fYnVmZmVyKVsoTUFYX0NU VV9TSVpFICsgMiAqIFNBT19QQURESU5HX1NJWkUpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAq IDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgYWxmX2J1ZmZlcl9sdW1hKVso TUFYX0NUVV9TSVpFICsgMiAqIEFMRl9QQURESU5HX1NJWkUpICogRURHRV9FTVVfQlVGRkVSX1NU UklERSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgYWxmX2J1ZmZlcl9j aHJvbWEpWyhNQVhfQ1RVX1NJWkUgKyAyICogQUxGX1BBRERJTkdfU0laRSkgKiBFREdFX0VNVV9C VUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCBpbnQzMl90LCBhbGZf Z3JhZGllbnRfdG1wKVtBTEZfR1JBRElFTlRfU0laRSAqIEFMRl9HUkFESUVOVF9TSVpFICogQUxG X05VTV9ESVJdOworCisgICAgc3RydWN0IHsKKyAgICAgICAgaW50IHNidF9udW1fZm91cnRoc190 YjA7ICAgICAgICAgICAgICAgIC8vLzwgU2J0TnVtRm91cnRoc1RiMAorCisgICAgICAgIHVpbnQ4 X3QgaXNfY3VfcXBfZGVsdGFfY29kZWQ7ICAgICAgICAgICAvLy88IElzQ3VRcERlbHRhQ29kZWQK KyAgICAgICAgaW50IGN1X3FnX3RvcF9sZWZ0X3g7ICAgICAgICAgICAgICAgICAgIC8vLzwgQ3VR Z1RvcExlZnRYCisgICAgICAgIGludCBjdV9xZ190b3BfbGVmdF95OyAgICAgICAgICAgICAgICAg ICAvLy88IEN1UWdUb3BMZWZ0WQorICAgICAgICBpbnQgaXNfY3VfY2hyb21hX3FwX29mZnNldF9j b2RlZDsgICAgICAgLy8vPCBJc0N1Q2hyb21hUXBPZmZzZXRDb2RlZAorICAgICAgICBpbnQgY2hy b21hX3FwX29mZnNldFszXTsgICAgICAgICAgICAgICAgLy8vPCBDdVFwT2Zmc2V0Q2IsIEN1UXBP ZmZzZXRDciwgQ3VRcE9mZnNldENiQ3IKKworICAgICAgICBpbnQgaW5mZXJfdHVfY2JmX2x1bWE7 ICAgICAgICAgICAgICAgICAgLy8vPCBJbmZlclR1Q2JmTHVtYQorICAgICAgICBpbnQgcHJldl90 dV9jYmZfeTsgICAgICAgICAgICAgICAgICAgICAgLy8vPCBwcmV2VHVDYmZZOworCisgICAgICAg IGludCBsZm5zdF9kY19vbmx5OyAgICAgICAgICAgICAgICAgICAgICAvLy88IExmbnN0RGNPbmx5 CisgICAgICAgIGludCBsZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxhZzsgICAgICAvLy88IExm bnN0WmVyb091dFNpZ0NvZWZmRmxhZworCisgICAgICAgIGludCBtdHNfZGNfb25seTsgICAgICAg ICAgICAgICAgICAgICAgICAvLy88IE10c0RjT25seQorICAgICAgICBpbnQgbXRzX3plcm9fb3V0 X3NpZ19jb2VmZl9mbGFnOyAgICAgICAgLy8vPCBNdHNaZXJvT3V0U2lnQ29lZmZGbGFnOworICAg IH0gcGFyc2U7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICAvLyBsbWNzIGNhY2hlLCBmb3IgcmVj b24gb25seQorICAgICAgICBpbnQgY2hyb21hX3NjYWxlOworICAgICAgICBpbnQgeF92cGR1Owor ICAgICAgICBpbnQgeV92cGR1OworICAgIH0gbG1jczsKKworICAgIENvZGluZ1VuaXQgKmN1Owor ICAgIFJlY29uc3RydWN0ZWRBcmVhIHJhc1syXVtNQVhfUEFSVFNfSU5fQ1RVXTsKKyAgICBpbnQg bnVtX3Jhc1syXTsKKworICAgIE5laWdoYm91ckF2YWlsYWJsZSBuYTsKKworI2RlZmluZSBCT1VO REFSWV9MRUZUX1NMSUNFICAgICAoMSA8PCAwKQorI2RlZmluZSBCT1VOREFSWV9MRUZUX1RJTEUg ICAgICAoMSA8PCAxKQorI2RlZmluZSBCT1VOREFSWV9VUFBFUl9TTElDRSAgICAoMSA8PCAyKQor I2RlZmluZSBCT1VOREFSWV9VUFBFUl9USUxFICAgICAoMSA8PCAzKQorICAgIC8qIHByb3BlcnRp ZXMgb2YgdGhlIGJvdW5kYXJ5IG9mIHRoZSBjdXJyZW50IENUQiBmb3IgdGhlIHB1cnBvc2VzCisg ICAgICogb2YgdGhlIGRlYmxvY2tpbmcgZmlsdGVyICovCisgICAgaW50IGJvdW5kYXJ5X2ZsYWdz OworCisgICAgU2xpY2VDb250ZXh0ICpzYzsKKyAgICBWVkNGcmFtZUNvbnRleHQgKmZjOworICAg IEVudHJ5UG9pbnQgKmVwOworICAgIGludCAqY29lZmZzOworfSBWVkNMb2NhbENvbnRleHQ7CisK K3R5cGVkZWYgc3RydWN0IFZWQ0FsbG93ZWRTcGxpdCB7CisgICAgaW50IHF0OworICAgIGludCBi dHY7CisgICAgaW50IGJ0aDsKKyAgICBpbnQgdHR2OworICAgIGludCB0dGg7Cit9IFZWQ0FsbG93 ZWRTcGxpdDsKKwordHlwZWRlZiBzdHJ1Y3QgU0FPUGFyYW1zIHsKKyAgICBpbnQgb2Zmc2V0X2Fi c1szXVs0XTsgICAgICAgICAgICAgICAvLy88IHNhb19vZmZzZXRfYWJzCisgICAgaW50IG9mZnNl dF9zaWduWzNdWzRdOyAgICAgICAgICAgICAgLy8vPCBzYW9fb2Zmc2V0X3NpZ24KKworICAgIHVp bnQ4X3QgYmFuZF9wb3NpdGlvblszXTsgICAgICAgICAgIC8vLzwgc2FvX2JhbmRfcG9zaXRpb24K KworICAgIGludCBlb19jbGFzc1szXTsgICAgICAgICAgICAgICAgICAgIC8vLzwgc2FvX2VvX2Ns YXNzCisKKyAgICBpbnQxNl90IG9mZnNldF92YWxbM11bNV07ICAgICAgICAgICAvLy88IFNhb09m ZnNldFZhbAorCisgICAgdWludDhfdCB0eXBlX2lkeFszXTsgICAgICAgICAgICAgICAgLy8vPCBz YW9fdHlwZV9pZHgKK30gU0FPUGFyYW1zOworCit0eXBlZGVmIHN0cnVjdCBBTEZQYXJhbXMgewor ICAgIHVpbnQ4X3QgY3RiX2ZsYWdbM107ICAgICAgICAgICAgICAgIC8vLzwgYWxmX2N0Yl9mbGFn W10KKyAgICB1aW50OF90IGN0Yl9maWx0X3NldF9pZHhfeTsgICAgICAgICAvLy88IEFsZkN0YkZp bHRTZXRJZHhZCisgICAgdWludDhfdCBhbGZfY3RiX2ZpbHRlcl9hbHRfaWR4WzJdOyAgLy8vPCBh bGZfY3RiX2ZpbHRlcl9hbHRfaWR4W10KKyAgICB1aW50OF90IGN0Yl9jY19pZGNbMl07ICAgICAg ICAgICAgICAvLy88IGFsZl9jdGJfY2NfY2JfaWRjLCBhbGZfY3RiX2NjX2NyX2lkYworCisgICAg dWludDhfdCBhcHBsaWVkWzNdOworfSBBTEZQYXJhbXM7CisKK3ZvaWQgZmZfdnZjX2VwX2luaXRf c3RhdF9jb2VmZihFbnRyeVBvaW50ICplcCwgaW50IGJpdF9kZXB0aCwgaW50IHBlcnNpc3RlbnRf cmljZV9hZGFwdGF0aW9uX2VuYWJsZWRfZmxhZyk7CisKKyNlbmRpZiAvLyBBVkNPREVDX1ZWQ19W VkNfQ1RVX0gKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oIGIvbGliYXZjb2Rl Yy92dmMvdnZjZGVjLmgKaW5kZXggY2RlOWIyYzk2NS4uMTVlY2UyYTgzYyAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy92dmMvdnZjZGVjLmgKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjZGVjLmgKQEAg LTgwLDYgKzgwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVlZDRnJhbWUgewogCiB0eXBlZGVmIHN0cnVj dCBTbGljZUNvbnRleHQgewogICAgIGludCBzbGljZV9pZHg7CisgICAgVlZDU0ggc2g7CiAgICAg c3RydWN0IEVudHJ5UG9pbnQgKmVwczsKICAgICBpbnQgbmJfZXBzOwogICAgIFJlZlBpY0xpc3Qg KnJwbDsKQEAgLTk1LDYgKzk2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVlZDRnJhbWVDb250ZXh0IHsK ICAgICBzdHJ1Y3QgQVZGcmFtZSAqZnJhbWU7CiAgICAgc3RydWN0IEFWRnJhbWUgKm91dHB1dF9m cmFtZTsKIAorICAgIFZWQ0ZyYW1lUGFyYW1TZXRzIHBzOworCiAgICAgU2xpY2VDb250ZXh0ICAq KnNsaWNlczsKICAgICBpbnQgbmJfc2xpY2VzOwogICAgIGludCBuYl9zbGljZXNfYWxsb2NhdGVk OwpAQCAtMTE0LDYgKzExNywxMCBAQCB0eXBlZGVmIHN0cnVjdCBWVkNGcmFtZUNvbnRleHQgewog ICAgIHN0cnVjdCB7CiAgICAgICAgIGludDE2X3QgKnNsaWNlX2lkeDsKIAorICAgICAgICBEQlBh cmFtcyAgKmRlYmxvY2s7CisgICAgICAgIHN0cnVjdCBTQU9QYXJhbXMgKnNhbzsKKyAgICAgICAg c3RydWN0IEFMRlBhcmFtcyAqYWxmOworCiAgICAgICAgIGludCAgICAgKmNiX3Bvc194WzJdOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NYW11bXVtdCiAgICAgICAgIGludCAg ICAgKmNiX3Bvc195WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NZW11b XVtdCiAgICAgICAgIHVpbnQ4X3QgKmNiX3dpZHRoWzJdOyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vLzwgQ2JXaWR0aFtdW11bXQotLSAKMi4yNS4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cg==