From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0DDF9107BCD9 for ; Fri, 13 Mar 2026 20:26:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F8FF10E452; Fri, 13 Mar 2026 20:26:29 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="M1rQ+JkJ"; dkim-atps=neutral Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010057.outbound.protection.outlook.com [52.101.193.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id A3D7310E446 for ; Fri, 13 Mar 2026 20:26:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zQXUtZM7zExhmHrGxZXSp+g59knKMvlj31KaG6ve1bGBqASRm7aAga7Vta/6SyYDqe1MeJtFdjN1CPtTxSupjyceklhL+6tzT8SgyPzWLKqeTxHZrngWI0eIA8F4JxRvoj1UIdxtFKxOOUKPmXrFFWdIGz9IXd4tG4yqCwaI5BiGBLLnr+sippFyLziWdR3KZKbjvmJ0G8kk8Ca/3eM6WRLVAV+9acDXzG7PBY6jA9G1QijlR0plzkoWTNA8oU3hfWT2LbAXjLEgsUCySQ367Abc4VKyb/LWAt+fdjTkikldseIw7gGyM1NaeOsXz+szll+Q18zyaT1rnpv23joKNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=u+PhQCjYeOvUJpSBCxIiFubCqd3ScMbfDtr9Rclb5Cs=; b=UuMU02jHG9vJvMnMvTT+TjJj4qIfjZhU3RJN6fQsXiogiB54SqnM6sd7D92LV7s5+0iYVPks5WL4a7Zl2uvND+Vibz+VKhD5ujQqc5V4yest96mPNaWpDFKElwy1nON99qd5s8Wdt6oIOPbPRvm2w19abpqdwuCbxef0ujDm2BPtbk1iSXqmEGur8YA9+Rj5ViSDGyT8tj/C/ajRzVRkhzzomJ5P8vLEknU9S83uk2f4SYSgbGi1SFrkWE/JH/yBXPMfNZY8bxTkA1MRsKmQ3926GS4oD5kpALRbHkA5Zu1AI8dgPwF8JaLz42iD5+pf5PClV9wvYgI4juVwf0CdxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u+PhQCjYeOvUJpSBCxIiFubCqd3ScMbfDtr9Rclb5Cs=; b=M1rQ+JkJ7eWKossAKru4oc6l1B/wKXZ5W0jCv8b8tLYJxXcpoI+cmdAyeZbUDdAB7LcQRHRCClEpGud/hdcMR9cp4d8GGdXXo6lLfCIyHvXsJY82TNYqq5doTlDVDkwhC5Um+f6gD5qwFpMYPaf0XTvmRtEbzez9Av4Q/zFJt+0= Received: from PH7P220CA0098.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32d::9) by DS7PR12MB5982.namprd12.prod.outlook.com (2603:10b6:8:7d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.4; Fri, 13 Mar 2026 20:26:19 +0000 Received: from SN1PEPF00036F43.namprd05.prod.outlook.com (2603:10b6:510:32d:cafe::2f) by PH7P220CA0098.outlook.office365.com (2603:10b6:510:32d::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9700.16 via Frontend Transport; Fri, 13 Mar 2026 20:26:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by SN1PEPF00036F43.mail.protection.outlook.com (10.167.248.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.17 via Frontend Transport; Fri, 13 Mar 2026 20:26:19 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 13 Mar 2026 15:26:18 -0500 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 13 Mar 2026 13:26:18 -0700 Received: from [172.19.71.207] (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Fri, 13 Mar 2026 15:26:17 -0500 Message-ID: Date: Fri, 13 Mar 2026 13:26:17 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH V1] accel/amdxdna: Support retrieving hardware context debug information Content-Language: en-US To: Mario Limonciello , , , , CC: , , References: <20260313181413.1108841-1-lizhi.hou@amd.com> <5f7213f8-3daf-4cc0-9422-9ad2de814c8e@amd.com> From: Lizhi Hou In-Reply-To: <5f7213f8-3daf-4cc0-9422-9ad2de814c8e@amd.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF00036F43:EE_|DS7PR12MB5982:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c84f4fa-4bdc-40db-0c8c-08de813ec8f3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 5yZ3grRyg0ccpqiiniN0GgAQFUlAZsCqyt7YZlGZZ8+9o9IH3Rgdy3G680ACivnUwRpj3GAFu3hjVdXSfXZQgazlSIIJrq/nPXQN0z5UEDQuiktyCSvULl/sIRgnz3+VvLkVtzeRzH37GfzbAmfcEYeJY98OceGasmvma9tFVJQg/3ir/tE2qg0Kam1hZQ/MMtc9vqVTvt2vo0LxeM2uk97eFY30yEfze922KxUInOyOStru6qw0i7+ORQkb4UThfvyMziPzGoxGjyjiYe28Mgd/XuH86KTLpRl4jcZQFKi0NdzJ1o+zNKjrJ2w/RTPTrm8aMgMpjb2HUzhBv9I+KptQgErpgBXVzcegOmi+3lCSEObCsNwh8MB2W5g4YCBWJ46jqCC02FNsGge58V6eNLILNC7XmYn/L2+YvoOjQI4QNzMZREC5n7fbWw0eZsEOE1924vHZ4EIfT2IO2CsUb7qS77HmJWRY04Rmknnar7TYJD7NIniBJz5wa03v2AnOmiY6fYFN0Emj/quiQSUz11IdOyPf6sxN4Nm3WuekrLtPuIsxB37o5gb8Las5+Sgdk0ONhKWn8f3KnavZ6WtROFfwNoqhKd/lv1/DGCnfejWtkfUjtr3r4IYbd2LMMYDNb1RN4kZFjsc4HKZvgD0IhaNR3pWUsiXUxxWWCOFtL9+5jdosBrBw6jvWnPm11J8x1NpwmsE+kf72rseeBXXZDTNsCBux7nlA/JgwzAAXAe0GKzEDy2cn02ypbxRVX9v7Prg1iF+gNmhodXD+6bQVHw== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700016)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aTFPl6yc3OXXmonBCqa0mHBGh7pkcBQflay/pD7+O7XyuBVR5qt9gAxEO2dcaENLcI8dnbCV4FkLIJDjRKY/MPRLnw32KSPLxOUISD3usCHiqGTJJyhnD8xh+DID9FolP7WrhUvf7TtYdaOwOCwfKDepauKhI2UHdKxUg3HMvY9TqwJUqSrRNm57G93Up2LxO21ENLTjB6ovWijJExebYFCVv8RMADuXf97WG22lxhl1lbanBFnAwvmVEOh/0HpjL2yxn0SvCYh5Ko8gsk1siaczeswDvPWkYLC/higPAsqdXLftbtPzZWfCxEHj8qVolw4f7w5Aqs7PSi2/ir+sO/dMhrcKTPfVGI2bVa0/zdZHAoSlp3pICGZRS6KUku2y4IejdVtoswi0R9+4d7m5X2fn41XWQR49DmcCmivjIa0ghSdQUlzwlM9yeikL79JV X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2026 20:26:19.1871 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1c84f4fa-4bdc-40db-0c8c-08de813ec8f3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF00036F43.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5982 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDMvMTMvMjYgMTE6MzAsIE1hcmlvIExpbW9uY2llbGxvIHdyb3RlOgo+IE9uIDMvMTMvMjAy NiAxOjE0IFBNLCBMaXpoaSBIb3Ugd3JvdGU6Cj4+IFRoZSBmaXJtd2FyZSBpbXBsZW1lbnRzIHRo ZSBHRVRfQVBQX0hFQUxUSCBjb21tYW5kIHRvIGNvbGxlY3QgZGVidWcKPj4gaW5mb3JtYXRpb24g Zm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29udGV4dC4KPj4KPj4gV2hlbiBhIGNvbW1hbmQgdGlt ZXMgb3V0LCB0aGUgZHJpdmVyIGlzc3VlcyB0aGlzIGNvbW1hbmQgdG8gY29sbGVjdCB0aGUKPj4g cmVsZXZhbnQgZGVidWcgaW5mb3JtYXRpb24uIFVzZXIgc3BhY2UgdG9vbHMgY2FuIGFsc28gcmV0 cmlldmUgdGhpcwo+PiBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZSBoYXJkd2FyZSBjb250ZXh0IHF1 ZXJ5IElPQ1RMLgo+Cj4gQSBmZXcgdGhvdWdodHMgYWJvdXQgdGhpcy4KPgo+IDEpIERlcGVuZGlu ZyB1cG9uIHRoZSByZWFzb24gdGhlIGNvbW1hbmQgdGltZWQgb3V0LCBpdCdzIHBvc3NpYmxlIHRo ZSAKPiBnZXQgYXBwIGhlYWx0aCBjb21tYW5kIGFsc28gZmFpbHMuClRoZSB0aW1lZCBvdXQgY29t bWFuZCBtZWFucyB0aGUgSU8gY29tbWFuZCBzZW50IHRocm91Z2ggSU8gbWFpbGJveCAKY2hhbm5l bC4gVGhlIGdldCBhcHAgaGVhbHRoIGNvbW1hbmQgaXMgc2VudCB0aHJvdWdoIG1hbmFnZW1lbnQg Y2hhbm5lbC4gCkl0IHNob3VsZCBub3QgZmFpbCB1bmxlc3MgdGhlcmUgaXMgZmlybXdhcmUgYnVn Lgo+Cj4gMikgSSB0aGluayBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHB1dCB0aGlzIGluZm9ybWF0 aW9uIGludG8gCj4gZGV2Y29yZWR1bXAuIMKgVGhlbiB5b3UgZG9uJ3QgL25lZWQvIGEgdG9vbCB0 byByZWFkIGl0LgpUaGUgZXJyb3IgaW5mb3JtYXRpb24gaXMgcmV0dXJuIHRvIHRoZSBhcHBsaWNh dGlvbiB0aHJvdWdoIHRoZSBwYXlsb2FkIApvZiB0aGUgc2FtZSBjb21tYW5kLiBTbyB0aGUgYXBw bGljYXRpb24gbmVlZHMgdG8gZGVjaWRlIGhvdyB0byBpbnRlcnByZXQgCmFuZCBkZWFsIHdpdGgg dGhlIGluZm9ybWF0aW9uLiBJdCBqdXN0IGxpa2UgYW4gYXBwbGljYXRpb24gY2FsbHMgQVBJIGFu ZCAKZ2V0IGFuIGVycm9yIGluZm9ybWF0aW9uIGJ1ZmZlciByZXR1cm5lZC4gVGhlcmUgaXMgbm90 aGluZyB3cm9uZyB3aXRoIAp0aGUgZHJpdmVyLCBmaXJtd2FyZSBvciBoYXJkd2FyZS4KPgo+Pgo+ PiBTaWduZWQtb2ZmLWJ5OiBMaXpoaSBIb3UgPGxpemhpLmhvdUBhbWQuY29tPgo+PiAtLS0KPj4g wqAgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmPCoMKgwqDCoMKgIHwgODUgKysrKysr KysrKysrKysrKysrKysrKysrLS0tCj4+IMKgIGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX21l c3NhZ2UuY8KgIHwgNDEgKysrKysrKysrKysrKwo+PiDCoCBkcml2ZXJzL2FjY2VsL2FtZHhkbmEv YWllMl9tc2dfcHJpdi5oIHwgNTIgKysrKysrKysrKysrKysrKwo+PiDCoCBkcml2ZXJzL2FjY2Vs L2FtZHhkbmEvYWllMl9wY2kuY8KgwqDCoMKgwqAgfCAxNCArKysrKwo+PiDCoCBkcml2ZXJzL2Fj Y2VsL2FtZHhkbmEvYWllMl9wY2kuaMKgwqDCoMKgwqAgfMKgIDQgKysKPj4gwqAgZHJpdmVycy9h Y2NlbC9hbWR4ZG5hL2FtZHhkbmFfY3R4LmPCoMKgIHzCoCA2ICstCj4+IMKgIGRyaXZlcnMvYWNj ZWwvYW1keGRuYS9hbWR4ZG5hX2N0eC5owqDCoCB8IDExICsrKy0KPj4gwqAgZHJpdmVycy9hY2Nl bC9hbWR4ZG5hL25wdTRfcmVncy5jwqDCoMKgwqAgfMKgIDMgKy0KPj4gwqAgOCBmaWxlcyBjaGFu Z2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYyAKPj4gYi9kcml2ZXJzL2FjY2VsL2Ft ZHhkbmEvYWllMl9jdHguYwo+PiBpbmRleCA3NzlhYzcwZDYyZDcuLjhiNzM3NWQxM2UyOCAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKPj4gKysrIGIvZHJp dmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKPj4gQEAgLTI5LDYgKzI5LDE2IEBAIE1PRFVM RV9QQVJNX0RFU0MoZm9yY2VfY21kbGlzdCwgIkZvcmNlIHVzZSBjb21tYW5kIAo+PiBsaXN0IChE ZWZhdWx0IHRydWUpIik7Cj4+IMKgIMKgICNkZWZpbmUgSFdDVFhfTUFYX1RJTUVPVVTCoMKgwqAg NjAwMDAgLyogbWlsbGlzZWNvbmRzICovCj4+IMKgICtzdHJ1Y3QgYWllMl9jdHhfaGVhbHRoIHsK Pj4gK8KgwqDCoCBzdHJ1Y3QgYW1keGRuYV9jdHhfaGVhbHRoIGhlYWRlcjsKPj4gK8KgwqDCoCB1 MzIgdHhuX29wX2lkeDsKPj4gK8KgwqDCoCB1MzIgY3R4X3BjOwo+PiArwqDCoMKgIHUzMiBmYXRh bF9lcnJvcl90eXBlOwo+PiArwqDCoMKgIHUzMiBmYXRhbF9lcnJvcl9leGNlcHRpb25fdHlwZTsK Pj4gK8KgwqDCoCB1MzIgZmF0YWxfZXJyb3JfZXhjZXB0aW9uX3BjOwo+PiArwqDCoMKgIHUzMiBm YXRhbF9lcnJvcl9hcHBfbW9kdWxlOwo+PiArfTsKPj4gKwo+PiDCoCBzdGF0aWMgdm9pZCBhaWUy X2pvYl9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1 Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYjsKPj4gQEAgLTM5LDYgKzQ5LDcgQEAgc3RhdGljIHZv aWQgYWllMl9qb2JfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKQo+PiDCoMKgwqDCoMKgIHdha2Vf dXAoJmpvYi0+aHdjdHgtPnByaXYtPmpvYl9mcmVlX3dxKTsKPj4gwqDCoMKgwqDCoCBpZiAoam9i LT5vdXRfZmVuY2UpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGpvYi0+b3V0 X2ZlbmNlKTsKPj4gK8KgwqDCoCBrZnJlZShqb2ItPnByaXYpOwo+PiDCoMKgwqDCoMKgIGtmcmVl KGpvYik7Cj4+IMKgIH0KPj4gwqAgQEAgLTE3Niw2ICsxODcsNTAgQEAgYWllMl9zY2hlZF9ub3Rp Znkoc3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IpCj4+IMKgwqDCoMKgwqAgYWllMl9qb2Jf cHV0KGpvYik7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyB2b2lkIGFpZTJfc2V0X2NtZF90aW1lb3V0 KHN0cnVjdCBhbWR4ZG5hX3NjaGVkX2pvYiAqam9iKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBh aWUyX2N0eF9oZWFsdGggKmFpZTJfaGVhbHRoIF9fZnJlZShrZnJlZSkgPSBOVUxMOwo+PiArwqDC oMKgIHN0cnVjdCBhbWR4ZG5hX2RldiAqeGRuYSA9IGpvYi0+aHdjdHgtPmNsaWVudC0+eGRuYTsK Pj4gK8KgwqDCoCBzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICpjbWRfYWJvID0gam9iLT5jbWRfYm87 Cj4+ICvCoMKgwqAgc3RydWN0IGFwcF9oZWFsdGhfcmVwb3J0ICpyZXBvcnQgPSBqb2ItPnByaXY7 Cj4+ICvCoMKgwqAgdTMyIGZhaWxfY21kX2lkeCA9IDA7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIXJl cG9ydCkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gc2V0X3RpbWVvdXQ7Cj4+ICsKPj4gK8KgwqDC oCBYRE5BX0VSUih4ZG5hLCAiRmlybXdhcmUgdGltZW91dCBzdGF0ZSBjYXB0dXJlOiIpOwo+PiAr wqDCoMKgIFhETkFfRVJSKHhkbmEsICJcdFZlcnNpb246ICVkLiVkIiwgcmVwb3J0LT5tYWpvciwg cmVwb3J0LT5taW5vcik7Cj4+ICvCoMKgwqAgWEROQV9FUlIoeGRuYSwgIlx0UmVwb3J0IHNpemU6 IDB4JXgiLCByZXBvcnQtPnNpemUpOwo+PiArwqDCoMKgIFhETkFfRVJSKHhkbmEsICJcdENvbnRl eHQgSUQ6ICVkIiwgcmVwb3J0LT5jb250ZXh0X2lkKTsKPj4gK8KgwqDCoCBYRE5BX0VSUih4ZG5h LCAiXHREUFUgUEM6IDB4JXgiLCByZXBvcnQtPmRwdV9wYyk7Cj4+ICvCoMKgwqAgWEROQV9FUlIo eGRuYSwgIlx0VFhOIE9QIElEOiAweCV4IiwgcmVwb3J0LT50eG5fb3BfaWQpOwo+PiArwqDCoMKg IFhETkFfRVJSKHhkbmEsICJcdENvbnRleHQgUEM6IDB4JXgiLCByZXBvcnQtPmN0eF9wYyk7Cj4+ ICvCoMKgwqAgWEROQV9FUlIoeGRuYSwgIlx0RmF0YWwgZXJyb3IgdHlwZTogMHgleCIsIAo+PiBy ZXBvcnQtPmZhdGFsX2luZm8uZmF0YWxfdHlwZSk7Cj4+ICvCoMKgwqAgWEROQV9FUlIoeGRuYSwg Ilx0RmF0YWwgZXJyb3IgZXhjZXB0aW9uIHR5cGU6IDB4JXgiLCAKPj4gcmVwb3J0LT5mYXRhbF9p bmZvLmV4Y2VwdGlvbl90eXBlKTsKPj4gK8KgwqDCoCBYRE5BX0VSUih4ZG5hLCAiXHRGYXRhbCBl cnJvciBleGNlcHRpb24gUEM6IDB4JXgiLCAKPj4gcmVwb3J0LT5mYXRhbF9pbmZvLmV4Y2VwdGlv bl9wYyk7Cj4+ICvCoMKgwqAgWEROQV9FUlIoeGRuYSwgIlx0RmF0YWwgZXJyb3IgYXBwIG1vZHVs ZTogMHgleCIsIAo+PiByZXBvcnQtPmZhdGFsX2luZm8uYXBwX21vZHVsZSk7Cj4+ICvCoMKgwqAg WEROQV9FUlIoeGRuYSwgIlx0RmF0YWwgZXJyb3IgdGFzayBJRDogJWQiLCAKPj4gcmVwb3J0LT5m YXRhbF9pbmZvLnRhc2tfaW5kZXgpOwo+PiArwqDCoMKgIFhETkFfRVJSKHhkbmEsICJcdFRpbWVk IG91dCBzdWIgY29tbWFuZCBJRDogJWQiLCAKPj4gcmVwb3J0LT5ydW5fbGlzdF9pZCk7Cj4KPiBC YXNpY2FsbHkgYWxsIG9mIHRoaXMgaW5mb3JtYXRpb24gLT4gZGV2Y29yZWR1bXAgaW5zdGVhZAo+ Cj4gWW91IGNhbiByZWZlcmVuY2UgaG93IGFtZGdwdSBkb2VzIGl0LsKgIEJhc2ljYWxseSBpdCBz YXlzIHRoZXJlIGlzIGFuIAo+IGVycm9yLCBhbmQgaGVyZSdzIHdoZXJlIHRoZSBkZXZjb3JlZHVt cCB3aXRoIGFsbCB0aGUgaW5mbyBmb3IgdGhlIAo+IGVycm9yIGlzIHN0b3JlZC4KPgo+IFRoZW4g YSBwcm9jZXNzIGluIHVzZXJzcGFjZSBjYW4gbW9uaXRvciAoaW5vdGlmeT8pIGFuZCAKPiAoYXV0 b21hdGljYWxseT8pIGV2aWN0IGluZm9ybWF0aW9uIGZyb20gZGV2Y29yZWR1bXAuCkN1cnJlbnRs eSwgdGhlIGRtZXNnIGlzIGEgcGxhY2UgdG8gb2JzZXJ2ZSBpdCBpZiBhcHBsaWNhdGlvbiBpdHNl bGYgCmlnbm9yZXMgdGhlIGVycm9yIGRldGFpbC4gSXQgcmVtaW5kcyB0aGVyZSBpcyBhbiBlcnJv ciB3aXRoIHRoZSAKYXBwbGljYXRpb24gcnVubmluZyBvbiBoYXJkd2FyZSBhbmQgaXQgaGVscHMg YSBsb3QuIEkgd2lsbCBsb29rIGludG8gCmRldmNvcmVkdW1wLiBJIGZlZWwgaXQgY291bGQgYmUg YSBzZXBhcmF0ZWQgcGF0Y2ggaWYgd2Ugd291bGQgYWRkIGl0Lgo+Cj4+ICsKPj4gK8KgwqDCoCBm YWlsX2NtZF9pZHggPSByZXBvcnQtPnJ1bl9saXN0X2lkOwo+PiArwqDCoMKgIGFpZTJfaGVhbHRo ID0ga3phbGxvY19vYmooKmFpZTJfaGVhbHRoKTsKPj4gK8KgwqDCoCBpZiAoIWFpZTJfaGVhbHRo KQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBzZXRfdGltZW91dDsKPj4gKwo+PiArwqDCoMKgIGFp ZTJfaGVhbHRoLT5oZWFkZXIudmVyc2lvbiA9IEFNRFhETkFfQ01EX0NUWF9IRUFMVEhfVjE7Cj4+ ICvCoMKgwqAgYWllMl9oZWFsdGgtPmhlYWRlci5ucHVfZ2VuID0gQU1EWEROQV9DTURfQ1RYX0hF QUxUSF9BSUUyOwo+PiArwqDCoMKgIGFpZTJfaGVhbHRoLT50eG5fb3BfaWR4ID0gcmVwb3J0LT50 eG5fb3BfaWQ7Cj4+ICvCoMKgwqAgYWllMl9oZWFsdGgtPmN0eF9wYyA9IHJlcG9ydC0+Y3R4X3Bj Owo+PiArwqDCoMKgIGFpZTJfaGVhbHRoLT5mYXRhbF9lcnJvcl90eXBlID0gcmVwb3J0LT5mYXRh bF9pbmZvLmZhdGFsX3R5cGU7Cj4+ICvCoMKgwqAgYWllMl9oZWFsdGgtPmZhdGFsX2Vycm9yX2V4 Y2VwdGlvbl90eXBlID0gCj4+IHJlcG9ydC0+ZmF0YWxfaW5mby5leGNlcHRpb25fdHlwZTsKPj4g K8KgwqDCoCBhaWUyX2hlYWx0aC0+ZmF0YWxfZXJyb3JfZXhjZXB0aW9uX3BjID0gCj4+IHJlcG9y dC0+ZmF0YWxfaW5mby5leGNlcHRpb25fcGM7Cj4+ICvCoMKgwqAgYWllMl9oZWFsdGgtPmZhdGFs X2Vycm9yX2FwcF9tb2R1bGUgPSAKPj4gcmVwb3J0LT5mYXRhbF9pbmZvLmFwcF9tb2R1bGU7Cj4+ ICsKPj4gK3NldF90aW1lb3V0Ogo+PiArwqDCoMKgIGFtZHhkbmFfY21kX3NldF9lcnJvcihjbWRf YWJvLCBqb2IsIGZhaWxfY21kX2lkeCwgCj4+IEVSVF9DTURfU1RBVEVfVElNRU9VVCwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWllMl9oZWFsdGgsIHNpemVvZigqYWll Ml9oZWFsdGgpKTsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgaW50Cj4+IMKgIGFpZTJfc2NoZWRf cmVzcF9oYW5kbGVyKHZvaWQgKmhhbmRsZSwgdm9pZCBfX2lvbWVtICpkYXRhLCBzaXplX3Qgc2l6 ZSkKPj4gwqAgewo+PiBAQCAtMTg3LDEzICsyNDIsMTMgQEAgYWllMl9zY2hlZF9yZXNwX2hhbmRs ZXIodm9pZCAqaGFuZGxlLCB2b2lkIAo+PiBfX2lvbWVtICpkYXRhLCBzaXplX3Qgc2l6ZSkKPj4g wqDCoMKgwqDCoCBjbWRfYWJvID0gam9iLT5jbWRfYm87Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKHVu bGlrZWx5KGpvYi0+am9iX3RpbWVvdXQpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWR4ZG5hX2Nt ZF9zZXRfZXJyb3IoY21kX2Fibywgam9iLCAwLCBFUlRfQ01EX1NUQVRFX1RJTUVPVVQpOwo+PiAr wqDCoMKgwqDCoMKgwqAgYWllMl9zZXRfY21kX3RpbWVvdXQoam9iKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4g wqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KCFkYXRhKSB8fCB1bmxp a2VseShzaXplICE9IHNpemVvZih1MzIpKSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgYW1keGRuYV9j bWRfc2V0X2Vycm9yKGNtZF9hYm8sIGpvYiwgMCwgRVJUX0NNRF9TVEFURV9BQk9SVCk7Cj4+ICvC oMKgwqDCoMKgwqDCoCBhbWR4ZG5hX2NtZF9zZXRfZXJyb3IoY21kX2Fibywgam9iLCAwLCBFUlRf Q01EX1NUQVRFX0FCT1JULCAKPj4gTlVMTCwgMCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQg PSAtRUlOVkFMOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IMKgwqDCoMKgwqAg fQo+PiBAQCAtMjAzLDcgKzI1OCw3IEBAIGFpZTJfc2NoZWRfcmVzcF9oYW5kbGVyKHZvaWQgKmhh bmRsZSwgdm9pZCAKPj4gX19pb21lbSAqZGF0YSwgc2l6ZV90IHNpemUpCj4+IMKgwqDCoMKgwqAg aWYgKHN0YXR1cyA9PSBBSUUyX1NUQVRVU19TVUNDRVNTKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg YW1keGRuYV9jbWRfc2V0X3N0YXRlKGNtZF9hYm8sIEVSVF9DTURfU1RBVEVfQ09NUExFVEVEKTsK Pj4gwqDCoMKgwqDCoCBlbHNlCj4+IC3CoMKgwqDCoMKgwqDCoCBhbWR4ZG5hX2NtZF9zZXRfZXJy b3IoY21kX2Fibywgam9iLCAwLCBFUlRfQ01EX1NUQVRFX0VSUk9SKTsKPj4gK8KgwqDCoMKgwqDC oMKgIGFtZHhkbmFfY21kX3NldF9lcnJvcihjbWRfYWJvLCBqb2IsIDAsIEVSVF9DTURfU1RBVEVf RVJST1IsIAo+PiBOVUxMLCAwKTsKPj4gwqAgwqAgb3V0Ogo+PiDCoMKgwqDCoMKgIGFpZTJfc2No ZWRfbm90aWZ5KGpvYik7Cj4+IEBAIC0yMzcsMjEgKzI5MiwyMSBAQCBhaWUyX3NjaGVkX2NtZGxp c3RfcmVzcF9oYW5kbGVyKHZvaWQgKmhhbmRsZSwgCj4+IHZvaWQgX19pb21lbSAqZGF0YSwgc2l6 ZV90IHNpemUpCj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IgPSBo YW5kbGU7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqY21kX2FibzsKPj4g wqDCoMKgwqDCoCBzdHJ1Y3QgYW1keGRuYV9kZXYgKnhkbmE7Cj4+ICvCoMKgwqAgdTMyIGZhaWxf Y21kX2lkeCA9IDA7Cj4+IMKgwqDCoMKgwqAgdTMyIGZhaWxfY21kX3N0YXR1czsKPj4gLcKgwqDC oCB1MzIgZmFpbF9jbWRfaWR4Owo+PiDCoMKgwqDCoMKgIHUzMiBjbWRfc3RhdHVzOwo+PiDCoMKg wqDCoMKgIGludCByZXQgPSAwOwo+PiDCoCDCoMKgwqDCoMKgIGNtZF9hYm8gPSBqb2ItPmNtZF9i bzsKPj4gwqAgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoam9iLT5qb2JfdGltZW91dCkpIHsKPj4g LcKgwqDCoMKgwqDCoMKgIGFtZHhkbmFfY21kX3NldF9lcnJvcihjbWRfYWJvLCBqb2IsIDAsIEVS VF9DTURfU1RBVEVfVElNRU9VVCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBhaWUyX3NldF9jbWRfdGlt ZW91dChqb2IpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgwqDCoMKgwqDCoCBp ZiAodW5saWtlbHkoIWRhdGEpIHx8IHVubGlrZWx5KHNpemUgIT0gc2l6ZW9mKHUzMikgKiAzKSkg ewo+PiAtwqDCoMKgwqDCoMKgwqAgYW1keGRuYV9jbWRfc2V0X2Vycm9yKGNtZF9hYm8sIGpvYiwg MCwgRVJUX0NNRF9TVEFURV9BQk9SVCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBhbWR4ZG5hX2NtZF9z ZXRfZXJyb3IoY21kX2Fibywgam9iLCAwLCBFUlRfQ01EX1NUQVRFX0FCT1JULCAKPj4gTlVMTCwg MCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgZ290byBvdXQ7Cj4+IMKgwqDCoMKgwqAgfQo+PiBAQCAtMjcxLDEwICszMjYsMTAgQEAg YWllMl9zY2hlZF9jbWRsaXN0X3Jlc3BfaGFuZGxlcih2b2lkICpoYW5kbGUsIAo+PiB2b2lkIF9f aW9tZW0gKmRhdGEsIHNpemVfdCBzaXplKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWlsX2Nt ZF9pZHgsIGZhaWxfY21kX3N0YXR1cyk7Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKGZhaWxfY21kX3N0 YXR1cyA9PSBBSUUyX1NUQVRVU19TVUNDRVNTKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWR4ZG5h X2NtZF9zZXRfZXJyb3IoY21kX2Fibywgam9iLCBmYWlsX2NtZF9pZHgsIAo+PiBFUlRfQ01EX1NU QVRFX0FCT1JUKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGFtZHhkbmFfY21kX3NldF9lcnJvcihjbWRf YWJvLCBqb2IsIGZhaWxfY21kX2lkeCwgCj4+IEVSVF9DTURfU1RBVEVfQUJPUlQsIE5VTEwsIDAp Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsKPj4gwqDCoMKgwqDCoCB9IGVs c2Ugewo+PiAtwqDCoMKgwqDCoMKgwqAgYW1keGRuYV9jbWRfc2V0X2Vycm9yKGNtZF9hYm8sIGpv YiwgZmFpbF9jbWRfaWR4LCAKPj4gRVJUX0NNRF9TVEFURV9FUlJPUik7Cj4+ICvCoMKgwqDCoMKg wqDCoCBhbWR4ZG5hX2NtZF9zZXRfZXJyb3IoY21kX2Fibywgam9iLCBmYWlsX2NtZF9pZHgsIAo+ PiBFUlRfQ01EX1NUQVRFX0VSUk9SLCBOVUxMLCAwKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIMKg IG91dDoKPj4gQEAgLTM2MywxMiArNDE4LDI2IEBAIGFpZTJfc2NoZWRfam9iX3RpbWVkb3V0KHN0 cnVjdCBkcm1fc2NoZWRfam9iIAo+PiAqc2NoZWRfam9iKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAg c3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IgPSBkcm1fam9iX3RvX3hkbmFfam9iKHNjaGVk X2pvYik7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZHhkbmFfaHdjdHggKmh3Y3R4ID0gam9iLT5o d2N0eDsKPj4gK8KgwqDCoCBzdHJ1Y3QgYXBwX2hlYWx0aF9yZXBvcnQgKnJlcG9ydDsKPj4gwqDC oMKgwqDCoCBzdHJ1Y3QgYW1keGRuYV9kZXYgKnhkbmE7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4g wqAgwqDCoMKgwqDCoCB4ZG5hID0gaHdjdHgtPmNsaWVudC0+eGRuYTsKPj4gwqDCoMKgwqDCoCB0 cmFjZV94ZG5hX2pvYihzY2hlZF9qb2IsIGh3Y3R4LT5uYW1lLCAiam9iIHRpbWVkb3V0Iiwgam9i LT5zZXEpOwo+PiDCoMKgwqDCoMKgIGpvYi0+am9iX3RpbWVvdXQgPSB0cnVlOwo+PiArCj4+IMKg wqDCoMKgwqAgbXV0ZXhfbG9jaygmeGRuYS0+ZGV2X2xvY2spOwo+Cj4gQUZBSUNUIHlvdSBuZXZl ciB1bmxvY2sgdGhpcyBtdXRleC4KVGhlIHVubG9jayBpcyBub3QgaW4gdGhlIHBhdGNoIGJ1dCBi ZWZvcmUgdGhlIGZ1bmN0aW9uIGV4aXRzLgo+Cj4+ICvCoMKgwqAgcmVwb3J0ID0ga3phbGxvY19v YmooKnJlcG9ydCk7Cj4+ICvCoMKgwqAgaWYgKCFyZXBvcnQpCj4+ICvCoMKgwqDCoMKgwqDCoCBn b3RvIHJlc2V0X2h3Y3R4Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gYWllMl9xdWVyeV9hcHBfaGVh bHRoKHhkbmEtPmRldl9oYW5kbGUsIGh3Y3R4LT5md19jdHhfaWQsIAo+PiByZXBvcnQpOwo+PiAr wqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCBrZnJlZShyZXBvcnQpOwo+PiArwqDC oMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgIGpvYi0+cHJpdiA9IHJlcG9ydDsKPj4gKwo+PiAr cmVzZXRfaHdjdHg6Cj4+IMKgwqDCoMKgwqAgYWllMl9od2N0eF9zdG9wKHhkbmEsIGh3Y3R4LCBz Y2hlZF9qb2IpOwo+PiDCoCDCoMKgwqDCoMKgIGFpZTJfaHdjdHhfcmVzdGFydCh4ZG5hLCBod2N0 eCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9tZXNzYWdlLmMg Cj4+IGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfbWVzc2FnZS5jCj4+IGluZGV4IGZhMmYz M2MzMjJkNC4uYjc2NGM3ZTg4MTZhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2FjY2VsL2FtZHhk bmEvYWllMl9tZXNzYWdlLmMKPj4gKysrIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfbWVz c2FnZS5jCj4+IEBAIC0xMTYxLDMgKzExNjEsNDQgQEAgaW50IGFpZTJfY29uZmlnX2RlYnVnX2Jv KHN0cnVjdCBhbWR4ZG5hX2h3Y3R4IAo+PiAqaHdjdHgsIHN0cnVjdCBhbWR4ZG5hX3NjaGVkX2pv YiAqCj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIHhkbmFfbWFpbGJveF9zZW5kX21zZyhjaGFubiwg Jm1zZywgVFhfVElNRU9VVCk7Cj4+IMKgIH0KPj4gKwo+PiAraW50IGFpZTJfcXVlcnlfYXBwX2hl YWx0aChzdHJ1Y3QgYW1keGRuYV9kZXZfaGRsICpuZGV2LCB1MzIgY29udGV4dF9pZCwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhcHBfaGVhbHRoX3JlcG9ydCAqcmVwb3J0 KQo+PiArewo+PiArwqDCoMKgIERFQ0xBUkVfQUlFMl9NU0coZ2V0X2FwcF9oZWFsdGgsIE1TR19P UF9HRVRfQVBQX0hFQUxUSCk7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZHhkbmFfZGV2ICp4ZG5hID0g bmRldi0+eGRuYTsKPj4gK8KgwqDCoCBzdHJ1Y3QgYXBwX2hlYWx0aF9yZXBvcnQgKmJ1ZjsKPj4g K8KgwqDCoCBkbWFfYWRkcl90IGRtYV9hZGRyOwo+PiArwqDCoMKgIHUzMiBidWZfc2l6ZTsKPj4g K8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgaWYgKCFBSUUyX0ZFQVRVUkVfT04obmRl diwgQUlFMl9BUFBfSEVBTFRIKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgWEROQV9EQkcoeGRuYSwg IkFwcCBoZWFsdGggZmVhdHVyZSBub3Qgc3VwcG9ydGVkIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVPUE5PVFNVUFA7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgYnVmX3NpemUg PSBzaXplb2YoKnJlcG9ydCk7Cj4+ICvCoMKgwqAgYnVmID0gYWllMl9hbGxvY19tc2dfYnVmZmVy KG5kZXYsICZidWZfc2l6ZSwgJmRtYV9hZGRyKTsKPj4gK8KgwqDCoCBpZiAoSVNfRVJSKGJ1Zikp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIFhETkFfRVJSKHhkbmEsICJGYWlsZWQgdG8gYWxsb2NhdGUg YnVmZmVyIGZvciBhcHAgaGVhbHRoIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VS UihidWYpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJlcS5idWZfYWRkciA9IGRtYV9h ZGRyOwo+PiArwqDCoMKgIHJlcS5jb250ZXh0X2lkID0gY29udGV4dF9pZDsKPj4gK8KgwqDCoCBy ZXEuYnVmX3NpemUgPSBidWZfc2l6ZTsKPj4gKwo+PiArwqDCoMKgIGRybV9jbGZsdXNoX3ZpcnRf cmFuZ2UoYnVmLCBzaXplb2YoKnJlcG9ydCkpOwo+PiArwqDCoMKgIHJldCA9IGFpZTJfc2VuZF9t Z210X21zZ193YWl0KG5kZXYsICZtc2cpOwo+PiArwqDCoMKgIGlmIChyZXQpIHsKPj4gK8KgwqDC oMKgwqDCoMKgIFhETkFfRVJSKHhkbmEsICJHZXQgYXBwIGhlYWx0aCBmYWlsZWQsIHJldCAlZCBz dGF0dXMgMHgleCIsIAo+PiByZXQsIHJlc3Auc3RhdHVzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGdv dG8gZnJlZV9idWY7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgLyogQ29weSB0aGUgcmVw b3J0IHRvIGNhbGxlcidzIGJ1ZmZlciAqLwo+PiArwqDCoMKgIG1lbWNweShyZXBvcnQsIGJ1Ziwg c2l6ZW9mKCpyZXBvcnQpKTsKPj4gKwo+PiArZnJlZV9idWY6Cj4+ICvCoMKgwqAgYWllMl9mcmVl X21zZ19idWZmZXIobmRldiwgYnVmX3NpemUsIGJ1ZiwgZG1hX2FkZHIpOwo+PiArwqDCoMKgIHJl dHVybiByZXQ7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWll Ml9tc2dfcHJpdi5oIAo+PiBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX21zZ19wcml2LmgK Pj4gaW5kZXggNzI4ZWY1NmY3ZjBhLi5mMThlODlhMzllMzUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvYWNjZWwvYW1keGRuYS9haWUyX21zZ19wcml2LmgKPj4gKysrIGIvZHJpdmVycy9hY2NlbC9h bWR4ZG5hL2FpZTJfbXNnX3ByaXYuaAo+PiBAQCAtMzEsNiArMzEsNyBAQCBlbnVtIGFpZTJfbXNn X29wY29kZSB7Cj4+IMKgwqDCoMKgwqAgTVNHX09QX1NFVF9SVU5USU1FX0NPTkZJR8KgwqDCoMKg wqDCoMKgwqDCoCA9IDB4MTBBLAo+PiDCoMKgwqDCoMKgIE1TR19PUF9HRVRfUlVOVElNRV9DT05G SUfCoMKgwqDCoMKgwqDCoMKgwqAgPSAweDEwQiwKPj4gwqDCoMKgwqDCoCBNU0dfT1BfUkVHSVNU RVJfQVNZTkNfRVZFTlRfTVNHwqDCoMKgID0gMHgxMEMsCj4+ICvCoMKgwqAgTVNHX09QX0dFVF9B UFBfSEVBTFRIwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAweDExNCwKPj4gwqDCoMKgwqDC oCBNU0dfT1BfTUFYX0RSVl9PUENPREUsCj4+IMKgwqDCoMKgwqAgTVNHX09QX0dFVF9QUk9UT0NP TF9WRVJTSU9OwqDCoMKgwqDCoMKgwqAgPSAweDMwMSwKPj4gwqDCoMKgwqDCoCBNU0dfT1BfTUFY X09QQ09ERQo+PiBAQCAtNDUxLDQgKzQ1Miw1NSBAQCBzdHJ1Y3QgY29uZmlnX2RlYnVnX2JvX3Jl cSB7Cj4+IMKgIHN0cnVjdCBjb25maWdfZGVidWdfYm9fcmVzcCB7Cj4+IMKgwqDCoMKgwqAgZW51 bSBhaWUyX21zZ19zdGF0dXPCoMKgwqAgc3RhdHVzOwo+PiDCoCB9IF9fcGFja2VkOwo+PiArCj4+ ICtzdHJ1Y3QgZmF0YWxfZXJyb3JfaW5mbyB7Cj4+ICvCoMKgwqAgX191MzIgZmF0YWxfdHlwZTvC oMKgwqDCoMKgwqDCoMKgIC8qIEZhdGFsIGVycm9yIHR5cGUgKi8KPj4gK8KgwqDCoCBfX3UzMiBl eGNlcHRpb25fdHlwZTvCoMKgwqDCoCAvKiBPbmx5IHZhbGlkIGlmIGZhdGFsX3R5cGUgaXMgYSAK Pj4gc3BlY2lmaWMgdmFsdWUgKi8KPj4gK8KgwqDCoCBfX3UzMiBleGNlcHRpb25fYXJndW1lbnQ7 IC8qIEFyZ3VtZW50IGJhc2VkIG9uIGV4Y2VwdGlvbiB0eXBlICovCj4+ICvCoMKgwqAgX191MzIg ZXhjZXB0aW9uX3BjO8KgwqDCoMKgwqDCoCAvKiBQcm9ncmFtIENvdW50ZXIgYXQgdGhlIHRpbWUg b2YgdGhlIAo+PiBleGNlcHRpb24gKi8KPj4gK8KgwqDCoCBfX3UzMiBhcHBfbW9kdWxlO8KgwqDC oMKgwqDCoMKgwqAgLyogRXJyb3IgbW9kdWxlIG5hbWUgKi8KPj4gK8KgwqDCoCBfX3UzMiB0YXNr X2luZGV4O8KgwqDCoMKgwqDCoMKgwqAgLyogSW5kZXggb2YgdGhlIHRhc2sgaW4gd2hpY2ggdGhl IAo+PiBlcnJvciBvY2N1cnJlZCAqLwo+PiArwqDCoMKgIF9fdTMyIHJlc2VydmVkWzEyOF07Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3QgYXBwX2hlYWx0aF9yZXBvcnQgewo+PiArwqDCoMKgIF9fdTE2 IG1ham9yOwo+PiArwqDCoMKgIF9fdTE2IG1pbm9yOwo+PiArwqDCoMKgIF9fdTMyIHNpemU7Cj4+ ICvCoMKgwqAgX191MzIgY29udGV4dF9pZDsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBQ cm9ncmFtIENvdW50ZXIgKFBDKSBvZiB0aGUgbGFzdCBpbml0aWF0ZWQgRFBVIG9wY29kZSwgYXMg Cj4+IHJlcG9ydGVkIGJ5IHRoZSBFUlQKPj4gK8KgwqDCoMKgICogYXBwbGljYXRpb24uIEJlZm9y ZSBleGVjdXRpb24gYmVnaW5zIG9yIGFmdGVyIHN1Y2Nlc3NmdWwgCj4+IGNvbXBsZXRpb24sIHRo ZSB2YWx1ZSBpcyBzZXQKPj4gK8KgwqDCoMKgICogdG8gVUlOVF9NQVguIElmIGV4ZWN1dGlvbiBo YWx0cyBwcmVtYXR1cmVseSBkdWUgdG8gYW4gZXJyb3IsIAo+PiB0aGlzIGZpZWxkIHJldGFpbnMg dGhlCj4+ICvCoMKgwqDCoCAqIG9wY29kZSdzIFBDIHZhbHVlLgo+PiArwqDCoMKgwqAgKiBOb3Rl OiBUbyBvcHRpbWl6ZSBwZXJmb3JtYW5jZSwgdGhlIEVSVCBtYXkgc2ltcGxpZnkgY2VydGFpbiAK Pj4gYXNwZWN0cyBvZiByZXBvcnRpbmcuCj4+ICvCoMKgwqDCoCAqIFByb3BlciBpbnRlcnByZXRh dGlvbiByZXF1aXJlcyBmYW1pbGlhcml0eSB3aXRoIHRoZSAKPj4gaW1wbGVtZW50YXRpb24gZGV0 YWlscy4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgX191MzIgZHB1X3BjOwo+PiArwqDCoMKg IC8qCj4+ICvCoMKgwqDCoCAqIEluZGV4IG9mIHRoZSBsYXN0IGluaXRpYXRlZCBUWE4gb3Bjb2Rl Lgo+PiArwqDCoMKgwqAgKiBCZWZvcmUgZXhlY3V0aW9uIHN0YXJ0cyBvciBhZnRlciBzdWNjZXNz ZnVsIGNvbXBsZXRpb24sIHRoZSAKPj4gdmFsdWUgaXMgc2V0IHRvIFVJTlRfTUFYLgo+PiArwqDC oMKgwqAgKiBJZiBleGVjdXRpb24gaGFsdHMgcHJlbWF0dXJlbHkgZHVlIHRvIGFuIGVycm9yLCB0 aGlzIGZpZWxkIAo+PiByZXRhaW5zIHRoZSBvcGNvZGUncyBJRC4KPj4gK8KgwqDCoMKgICogTm90 ZTogVG8gb3B0aW1pemUgcGVyZm9ybWFuY2UsIHRoZSBFUlQgbWF5IHNpbXBsaWZ5IGNlcnRhaW4g Cj4+IGFzcGVjdHMgb2YgcmVwb3J0aW5nLgo+PiArwqDCoMKgwqAgKiBQcm9wZXIgaW50ZXJwcmV0 YXRpb24gcmVxdWlyZXMgZmFtaWxpYXJpdHkgd2l0aCB0aGUgCj4+IGltcGxlbWVudGF0aW9uIGRl dGFpbHMuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIF9fdTMyIHR4bl9vcF9pZDsKPj4gK8Kg wqDCoCAvKiBUaGUgUEMgb2YgdGhlIGNvbnRleHQgYXQgdGhlIHRpbWUgb2YgdGhlIHJlcG9ydCAq Lwo+PiArwqDCoMKgIF9fdTMyIGN0eF9wYzsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmF0YWxfZXJyb3Jf aW5mb8KgwqDCoMKgwqDCoMKgIGZhdGFsX2luZm87Cj4+ICvCoMKgwqAgLyogSW5kZXggb2YgdGhl IG1vc3QgcmVjZW50bHkgZXhlY3V0ZWQgcnVuIGxpc3QgZW50cnkuICovCj4+ICvCoMKgwqAgX191 MzIgcnVuX2xpc3RfaWQ7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZ2V0X2FwcF9oZWFsdGhfcmVx IHsKPj4gK8KgwqDCoCBfX3UzMiBjb250ZXh0X2lkOwo+PiArwqDCoMKgIF9fdTMyIGJ1Zl9zaXpl Owo+PiArwqDCoMKgIF9fdTY0IGJ1Zl9hZGRyOwo+PiArfSBfX3BhY2tlZDsKPj4gKwo+PiArc3Ry dWN0IGdldF9hcHBfaGVhbHRoX3Jlc3Agewo+PiArwqDCoMKgIGVudW0gYWllMl9tc2dfc3RhdHVz IHN0YXR1czsKPj4gK8KgwqDCoCBfX3UzMiByZXF1aXJlZF9idWZmZXJfc2l6ZTsKPj4gK8KgwqDC oCBfX3UzMiByZXNlcnZlZFs3XTsKPj4gK30gX19wYWNrZWQ7Cj4+IMKgICNlbmRpZiAvKiBfQUlF Ml9NU0dfUFJJVl9IXyAqLwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2Fp ZTJfcGNpLmMgCj4+IGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfcGNpLmMKPj4gaW5kZXgg ZGRkM2Q4MmYzNDI2Li45ZTM5YmZlNzU5NzEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvYWNjZWwv YW1keGRuYS9haWUyX3BjaS5jCj4+ICsrKyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX3Bj aS5jCj4+IEBAIC04NDYsNyArODQ2LDEwIEBAIHN0YXRpYyBpbnQgYWllMl9od2N0eF9zdGF0dXNf Y2Ioc3RydWN0IAo+PiBhbWR4ZG5hX2h3Y3R4ICpod2N0eCwgdm9pZCAqYXJnKQo+PiDCoMKgwqDC oMKgIHN0cnVjdCBhbWR4ZG5hX2RybV9od2N0eF9lbnRyeSAqdG1wIF9fZnJlZShrZnJlZSkgPSBO VUxMOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWR4ZG5hX2RybV9nZXRfYXJyYXkgKmFycmF5X2Fy Z3MgPSBhcmc7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZHhkbmFfZHJtX2h3Y3R4X2VudHJ5IF9f dXNlciAqYnVmOwo+PiArwqDCoMKgIHN0cnVjdCBhcHBfaGVhbHRoX3JlcG9ydCByZXBvcnQ7Cj4+ ICvCoMKgwqAgc3RydWN0IGFtZHhkbmFfZGV2X2hkbCAqbmRldjsKPj4gwqDCoMKgwqDCoCB1MzIg c2l6ZTsKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiDCoCDCoMKgwqDCoMKgIGlmICghYXJyYXlfYXJn cy0+bnVtX2VsZW1lbnQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4g QEAgLTg2OSw2ICs4NzIsMTcgQEAgc3RhdGljIGludCBhaWUyX2h3Y3R4X3N0YXR1c19jYihzdHJ1 Y3QgCj4+IGFtZHhkbmFfaHdjdHggKmh3Y3R4LCB2b2lkICphcmcpCj4+IMKgwqDCoMKgwqAgdG1w LT5sYXRlbmN5ID0gaHdjdHgtPnFvcy5sYXRlbmN5Owo+PiDCoMKgwqDCoMKgIHRtcC0+ZnJhbWVf ZXhlY190aW1lID0gaHdjdHgtPnFvcy5mcmFtZV9leGVjX3RpbWU7Cj4+IMKgwqDCoMKgwqAgdG1w LT5zdGF0ZSA9IEFNRFhETkFfSFdDVFhfU1RBVEVfQUNUSVZFOwo+PiArwqDCoMKgIG5kZXYgPSBo d2N0eC0+Y2xpZW50LT54ZG5hLT5kZXZfaGFuZGxlOwo+PiArwqDCoMKgIHJldCA9IGFpZTJfcXVl cnlfYXBwX2hlYWx0aChuZGV2LCBod2N0eC0+ZndfY3R4X2lkLCAmcmVwb3J0KTsKPj4gK8KgwqDC oCBpZiAoIXJldCkgewo+PiArwqDCoMKgwqDCoMKgwqAgLyogRmlsbCBpbiBhcHAgaGVhbHRoIHJl cG9ydCBmaWVsZHMgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHRtcC0+dHhuX29wX2lkeCA9IHJlcG9y dC50eG5fb3BfaWQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0bXAtPmN0eF9wYyA9IHJlcG9ydC5jdHhf cGM7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0bXAtPmZhdGFsX2Vycm9yX3R5cGUgPSByZXBvcnQuZmF0 YWxfaW5mby5mYXRhbF90eXBlOwo+PiArwqDCoMKgwqDCoMKgwqAgdG1wLT5mYXRhbF9lcnJvcl9l eGNlcHRpb25fdHlwZSA9IAo+PiByZXBvcnQuZmF0YWxfaW5mby5leGNlcHRpb25fdHlwZTsKPj4g K8KgwqDCoMKgwqDCoMKgIHRtcC0+ZmF0YWxfZXJyb3JfZXhjZXB0aW9uX3BjID0gcmVwb3J0LmZh dGFsX2luZm8uZXhjZXB0aW9uX3BjOwo+PiArwqDCoMKgwqDCoMKgwqAgdG1wLT5mYXRhbF9lcnJv cl9hcHBfbW9kdWxlID0gcmVwb3J0LmZhdGFsX2luZm8uYXBwX21vZHVsZTsKPj4gK8KgwqDCoCB9 Cj4+IMKgIMKgwqDCoMKgwqAgYnVmID0gdTY0X3RvX3VzZXJfcHRyKGFycmF5X2FyZ3MtPmJ1ZmZl cik7Cj4+IMKgwqDCoMKgwqAgc2l6ZSA9IG1pbihzaXplb2YoKnRtcCksIGFycmF5X2FyZ3MtPmVs ZW1lbnRfc2l6ZSk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9w Y2kuaCAKPj4gYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9wY2kuaAo+PiBpbmRleCA4ODVh ZTdlNmJmYzcuLjZjY2VkOGFiOTM2YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4 ZG5hL2FpZTJfcGNpLmgKPj4gKysrIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfcGNpLmgK Pj4gQEAgLTEwLDYgKzEwLDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2xpbWl0cy5oPgo+PiDC oCAjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+Cj4+IMKgICsjaW5jbHVkZSAiYWllMl9tc2df cHJpdi5oIgo+PiDCoCAjaW5jbHVkZSAiYW1keGRuYV9tYWlsYm94LmgiCj4+IMKgIMKgICNkZWZp bmUgQUlFMl9JTlRFUlZBTMKgwqDCoCAyMDAwMMKgwqDCoCAvKiB1cyAqLwo+PiBAQCAtMjYxLDYg KzI2Miw3IEBAIGVudW0gYWllMl9md19mZWF0dXJlIHsKPj4gwqDCoMKgwqDCoCBBSUUyX05QVV9D T01NQU5ELAo+PiDCoMKgwqDCoMKgIEFJRTJfUFJFRU1QVCwKPj4gwqDCoMKgwqDCoCBBSUUyX1RF TVBPUkFMX09OTFksCj4+ICvCoMKgwqAgQUlFMl9BUFBfSEVBTFRILAo+PiDCoMKgwqDCoMKgIEFJ RTJfRkVBVFVSRV9NQVgKPj4gwqAgfTsKPj4gwqAgQEAgLTM0MSw2ICszNDMsOCBAQCBpbnQgYWll Ml9xdWVyeV9haWVfdmVyc2lvbihzdHJ1Y3QgCj4+IGFtZHhkbmFfZGV2X2hkbCAqbmRldiwgc3Ry dWN0IGFpZV92ZXJzaW9uICp2ZXIKPj4gwqAgaW50IGFpZTJfcXVlcnlfYWllX21ldGFkYXRhKHN0 cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYsIHN0cnVjdCAKPj4gYWllX21ldGFkYXRhICptZXRh ZGF0YSk7Cj4+IMKgIGludCBhaWUyX3F1ZXJ5X2Zpcm13YXJlX3ZlcnNpb24oc3RydWN0IGFtZHhk bmFfZGV2X2hkbCAqbmRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgYW1keGRuYV9md192ZXIgKmZ3X3Zlcik7Cj4+ICtpbnQgYWllMl9xdWVyeV9hcHBfaGVh bHRoKHN0cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYsIHUzMiBjb250ZXh0X2lkLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFwcF9oZWFsdGhfcmVwb3J0ICpyZXBvcnQp Owo+PiDCoCBpbnQgYWllMl9jcmVhdGVfY29udGV4dChzdHJ1Y3QgYW1keGRuYV9kZXZfaGRsICpu ZGV2LCBzdHJ1Y3QgCj4+IGFtZHhkbmFfaHdjdHggKmh3Y3R4KTsKPj4gwqAgaW50IGFpZTJfZGVz dHJveV9jb250ZXh0KHN0cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYsIHN0cnVjdCAKPj4gYW1k eGRuYV9od2N0eCAqaHdjdHgpOwo+PiDCoCBpbnQgYWllMl9tYXBfaG9zdF9idWYoc3RydWN0IGFt ZHhkbmFfZGV2X2hkbCAqbmRldiwgdTMyIGNvbnRleHRfaWQsIAo+PiB1NjQgYWRkciwgdTY0IHNp emUpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfY3R4LmMg Cj4+IGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfY3R4LmMKPj4gaW5kZXggNjY2ZGZk N2IyYTgwLi40YjkyMTcxNTE3NmQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRu YS9hbWR4ZG5hX2N0eC5jCj4+ICsrKyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2N0 eC5jCj4+IEBAIC0xMzcsNyArMTM3LDggQEAgdTMyIGFtZHhkbmFfY21kX2dldF9jdV9pZHgoc3Ry dWN0IGFtZHhkbmFfZ2VtX29iaiAKPj4gKmFibykKPj4gwqAgwqAgaW50IGFtZHhkbmFfY21kX3Nl dF9lcnJvcihzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8sCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYiwgdTMyIGNtZF9pZHgs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIGVydF9jbWRfc3RhdGUgZXJyb3Jf c3RhdGUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIGVydF9jbWRfc3RhdGUg ZXJyb3Jfc3RhdGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICplcnJfZGF0 YSwgc2l6ZV90IHNpemUpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1keGRuYV9jbGll bnQgKmNsaWVudCA9IGpvYi0+aHdjdHgtPmNsaWVudDsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1k eGRuYV9jbWQgKmNtZCA9IGFiby0+bWVtLmt2YTsKPj4gQEAgLTE1Niw2ICsxNTcsOSBAQCBpbnQg YW1keGRuYV9jbWRfc2V0X2Vycm9yKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogCj4+ICphYm8sCj4+ IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIG1lbXNldChjbWQtPmRhdGEsIDB4ZmYsIGFi by0+bWVtLnNpemUgLSBzaXplb2YoKmNtZCkpOwo+PiArwqDCoMKgIGlmIChlcnJfZGF0YSkKPj4g K8KgwqDCoMKgwqDCoMKgIG1lbWNweShjbWQtPmRhdGEsIGVycl9kYXRhLCBtaW4oc2l6ZSwgYWJv LT5tZW0uc2l6ZSAtIAo+PiBzaXplb2YoKmNtZCkpKTsKPj4gKwo+PiDCoMKgwqDCoMKgIGlmIChj YykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFtZHhkbmFfZ2VtX3B1dF9vYmooYWJvKTsKPj4gwqAg ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2N0eC5oIAo+PiBiL2Ry aXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX2N0eC5oCj4+IGluZGV4IGZiZGY5ZDAwMDg3MS4u YzA2NzY4ODc1NWFmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRu YV9jdHguaAo+PiArKysgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9jdHguaAo+PiBA QCAtNzIsNiArNzIsMTMgQEAgc3RydWN0IGFtZHhkbmFfY21kX3ByZWVtcHRfZGF0YSB7Cj4+IMKg wqDCoMKgwqAgdTMyIHByb3BfYXJnc1tdO8KgwqDCoCAvKiBwcm9wZXJ0aWVzIGFuZCByZWd1bGFy IGtlcm5lbCBhcmd1bWVudHMgKi8KPj4gwqAgfTsKPj4gwqAgKyNkZWZpbmUgQU1EWEROQV9DTURf Q1RYX0hFQUxUSF9WMcKgwqDCoCAxCj4+ICsjZGVmaW5lIEFNRFhETkFfQ01EX0NUWF9IRUFMVEhf QUlFMsKgwqDCoCAwCj4+ICtzdHJ1Y3QgYW1keGRuYV9jdHhfaGVhbHRoIHsKPj4gK8KgwqDCoCB1 MzIgdmVyc2lvbjsKPj4gK8KgwqDCoCB1MzIgbnB1X2dlbjsKPj4gK307Cj4+ICsKPj4gwqAgLyog RXhlYyBidWZmZXIgY29tbWFuZCBoZWFkZXIgZm9ybWF0ICovCj4+IMKgICNkZWZpbmUgQU1EWERO QV9DTURfU1RBVEXCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDMsIDApCj4+IMKgICNkZWZpbmUgQU1E WEROQV9DTURfRVhUUkFfQ1VfTUFTS8KgwqDCoCBHRU5NQVNLKDExLCAxMCkKPj4gQEAgLTEzNiw2 ICsxNDMsNyBAQCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2Igewo+PiDCoMKgwqDCoMKgIHU2NMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VxOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWR4ZG5hX2Ry dl9jbWTCoMKgwqAgKmRydl9jbWQ7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZHhkbmFfZ2VtX29i asKgwqDCoCAqY21kX2JvOwo+PiArwqDCoMKgIHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpw cml2Owo+Cj4gQXJlIHlvdSBlbnZpc2lvbmluZyBvdmVybG9hZGluZyB0aGUgcHVycG9zZSBvZiB0 aGlzIG1lbWJlciBpbiB0aGUgCj4gZnV0dXJlP8KgIElmIG5vdCwgSSB0aGluayB5b3Ugc2hvdWxk IGV4cGxpY2l0bHkgc2V0IGl0IGFzClllcy4gaXQgY291bGQgYmUgdXNlZCBkaWZmZXJlbnRseSBm b3Igb3RoZXIgcGxhdGZvcm1zLiBJdCBpcyB1c2VkIGZvciAKYXBwX2hlYWx0aCBkYXRhIGZvciBB SUUyIHdoaWNoIG90aGVyIHBsYXRmb3JtcyBtYXkgbm90IGhhdmUuCj4KPiBzdHJ1Y3QgYXBwX2hl YWx0aF9yZXBvcnQgKmhlYWx0aF9yZXBvcnQ7Cj4KPiBUaGF0IHdpbGwgbWFrZSB0aGUgY29kZSBh IGxvdCBlYXNpZXIgdG8gZm9sbG93Lgo+Cj4+IMKgwqDCoMKgwqAgc2l6ZV90wqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBib19jbnQ7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9nZW1fb2JqZWN0wqDC oMKgICpib3NbXSBfX2NvdW50ZWRfYnkoYm9fY250KTsKPj4gwqAgfTsKPj4gQEAgLTE2OSw3ICsx NzcsOCBAQCB2b2lkICphbWR4ZG5hX2NtZF9nZXRfcGF5bG9hZChzdHJ1Y3QgCj4+IGFtZHhkbmFf Z2VtX29iaiAqYWJvLCB1MzIgKnNpemUpOwo+PiDCoCB1MzIgYW1keGRuYV9jbWRfZ2V0X2N1X2lk eChzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pOwo+PiDCoCBpbnQgYW1keGRuYV9jbWRfc2V0 X2Vycm9yKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogKmFibywKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBhbWR4ZG5hX3NjaGVkX2pvYiAqam9iLCB1MzIgY21kX2lkeCwK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gZXJ0X2NtZF9zdGF0ZSBlcnJvcl9z dGF0ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIGVydF9jbWRfc3RhdGUg ZXJyb3Jfc3RhdGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICplcnJfZGF0 YSwgc2l6ZV90IHNpemUpOwo+PiDCoCDCoCB2b2lkIGFtZHhkbmFfc2NoZWRfam9iX2NsZWFudXAo c3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IpOwo+PiDCoCB2b2lkIGFtZHhkbmFfaHdjdHhf cmVtb3ZlX2FsbChzdHJ1Y3QgYW1keGRuYV9jbGllbnQgKmNsaWVudCk7Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvbnB1NF9yZWdzLmMgCj4+IGIvZHJpdmVycy9hY2NlbC9h bWR4ZG5hL25wdTRfcmVncy5jCj4+IGluZGV4IGNlMjVlZWY1ZmMzNC4uZDQ0ZmU4ZmQ2Y2IwIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvbnB1NF9yZWdzLmMKPj4gKysrIGIv ZHJpdmVycy9hY2NlbC9hbWR4ZG5hL25wdTRfcmVncy5jCj4+IEBAIC05Myw3ICs5Myw4IEBAIGNv bnN0IHN0cnVjdCBhaWUyX2Z3X2ZlYXR1cmVfdGJsIAo+PiBucHU0X2Z3X2ZlYXR1cmVfdGFibGVb XSA9IHsKPj4gwqDCoMKgwqDCoCB7IC5mZWF0dXJlcyA9IEJJVF9VNjQoQUlFMl9OUFVfQ09NTUFO RCksIC5tYWpvciA9IDYsIC5taW5fbWlub3IgCj4+ID0gMTUgfSwKPj4gwqDCoMKgwqDCoCB7IC5m ZWF0dXJlcyA9IEJJVF9VNjQoQUlFMl9QUkVFTVBUKSwgLm1ham9yID0gNiwgLm1pbl9taW5vciA9 IAo+PiAxMiB9LAo+PiDCoMKgwqDCoMKgIHsgLmZlYXR1cmVzID0gQklUX1U2NChBSUUyX1RFTVBP UkFMX09OTFkpLCAubWFqb3IgPSA2LCAKPj4gLm1pbl9taW5vciA9IDEyIH0sCj4+IC3CoMKgwqAg eyAuZmVhdHVyZXMgPSBHRU5NQVNLX1VMTChBSUUyX1RFTVBPUkFMX09OTFksIEFJRTJfTlBVX0NP TU1BTkQpLCAKPj4gLm1ham9yID0gNyB9LAo+Cj4gVG8gYXZvaWQgYml0IGJhbmdpbmcgdGhpcyBs aW5lIGluIHRoZSBmdXR1cmUsIHdoYXQgaWYgeW91IHVzZWQ6Cj4KPiBHRU5NQVNLX1VMTChBSUUy X0ZFQVRVUkVfTUFYLTEpCgpHb29kIHBvaW50LiBUaGFua3MuCgpMaXpoaQoKPgo+PiArwqDCoMKg IHsgLmZlYXR1cmVzID0gQklUX1U2NChBSUUyX0FQUF9IRUFMVEgpLCAubWFqb3IgPSA2LCAubWlu X21pbm9yID0gCj4+IDE4IH0sCj4+ICvCoMKgwqAgeyAuZmVhdHVyZXMgPSBHRU5NQVNLX1VMTChB SUUyX0FQUF9IRUFMVEgsIEFJRTJfTlBVX0NPTU1BTkQpLCAKPj4gLm1ham9yID0gNyB9LAo+PiDC oMKgwqDCoMKgIHsgMCB9Cj4+IMKgIH07Cj4K