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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3517C433E0 for ; Fri, 8 Jan 2021 15:42:45 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 909A92388A for ; Fri, 8 Jan 2021 15:42:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 909A92388A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D71B6E834; Fri, 8 Jan 2021 15:42:45 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2056.outbound.protection.outlook.com [40.107.92.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 228846E834 for ; Fri, 8 Jan 2021 15:42:44 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eniub6FPW+DhebSwWIkfJ4m4vu7+IPnyiPd7p/n7uzn8r5JscEdWHgz993pG8yR4gGsh4AmXMkaAmKMyP1TrTBe7h6aVH7f1H7vZsGS8W/GTXG29eSHkeOf2kjhQYlQFID9ezJivwgcbLBRo1pkBYUcVIg+dZpYdbbsPuAux20DR6SyANaWE4GqDEt9P4uFl47zJKQANlFNfVXwakQC1RfzaLgNwlpoFh14cHvjdYqFOugh6nAiKd3j37bUS6SNZM7Atxnq0Vn8O+PDbdhBKb7zzpod5f3jHKkDjzpAbiXgQrSZFa1zJ5J4BIfOSZqBL4XpBXeigeGyWNTu5XMehjA== 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-SenderADCheck; bh=ftfdEmF+GiERI2cP7ECnmaKKJY+s3dYQ20xVyj/V9EI=; b=TKnn45wwhPvwm0bzn0x8ZdtEAs9SEw5mZ9LePUJn/CsKsbk5/2Fi1mobPnd0STQMvCyV6dOjoTeKoIa2fNWuNGhNBqFArGP49F8QhAv9uHS/kfWZeFhzPDUtUnSX8jstTWI+M3BcddamUIE2kFY1+zC2c6YbeAv6gLORf2GhRnBdqw0CgrdvyXxxxLlYizbSn0q0v+ZcqpARZomhJHWF6LoZesbG697A0bcKlW2MlK+U3qP5V7YCloBos9d3XYJ6FjStOtXSbUgmxU/992lcG0GSjSilh9bdmv1BAdzBNRED2OuleHrd/WReeCI9aokVkUJjIsIYSWdOyQrEOpxVSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ftfdEmF+GiERI2cP7ECnmaKKJY+s3dYQ20xVyj/V9EI=; b=ygv4v3/4KkqIDk3CYttACxxFleOknm/7DEqvLlVdk1N8qCbeLF5Sei4s0ViysauJJJkxoOM5kh833oAlyWGk9RWoZz+VsQ6y5VwGidUgsZHMgv9sC+y2WZk+GWZUzoyFLPzOvgCpxez8hl1bk2s5OxwRLoGlnocamPVLNokR9MM= Authentication-Results: lists.freedesktop.org; dkim=none (message not signed) header.d=none; lists.freedesktop.org; dmarc=none action=none header.from=amd.com; Received: from DM6PR12MB3916.namprd12.prod.outlook.com (2603:10b6:5:1ca::21) by DM5PR12MB2519.namprd12.prod.outlook.com (2603:10b6:4:b5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 15:42:41 +0000 Received: from DM6PR12MB3916.namprd12.prod.outlook.com ([fe80::f872:3677:28c3:660b]) by DM6PR12MB3916.namprd12.prod.outlook.com ([fe80::f872:3677:28c3:660b%5]) with mapi id 15.20.3721.024; Fri, 8 Jan 2021 15:42:41 +0000 Subject: Re: [PATCH v2 1/1] drm/amdgpu: cleanup vce,vcn,uvd ring selftests To: =?UTF-8?Q?Christian_K=c3=b6nig?= , Nirmoy Das , amd-gfx@lists.freedesktop.org References: <6ef74186-56a2-6f38-b73b-b618fd1b5db0@amd.com> <20201218144024.4994-1-nirmoy.das@amd.com> <7c54d56f-5fe3-e874-6749-d08efa1a9f29@amd.com> From: Nirmoy Message-ID: Date: Fri, 8 Jan 2021 16:42:34 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 In-Reply-To: <7c54d56f-5fe3-e874-6749-d08efa1a9f29@amd.com> Content-Language: en-US X-Originating-IP: [93.229.47.23] X-ClientProxiedBy: AM3PR05CA0144.eurprd05.prod.outlook.com (2603:10a6:207:3::22) To DM6PR12MB3916.namprd12.prod.outlook.com (2603:10b6:5:1ca::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (93.229.47.23) by AM3PR05CA0144.eurprd05.prod.outlook.com (2603:10a6:207:3::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 15:42:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ba61c5c7-63ac-4b99-e97d-08d8b3ec089d X-MS-TrafficTypeDiagnostic: DM5PR12MB2519: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7bWsEc1CRf/xgvLiQmpvlz2JIdoo9nDEaJH34wdJrCXiCmP+jBz3Nyb80mTtl5/lM4y57xanZsN54svE8y2hUDHIZD78AtF5TyqX5LVDaw7U1Ud8NI1tUQT2xSr5/YEGPMKlMi1llpJ0WyA/Kgi5Opifr8Gi/r0MZERRgaGTvfPKOQ5jM63KGjBsS7kL+EUNIkKHTpMNFCXo4fCmI1godD3DCCw0ea/nFGZbIfz6iV59Lx6YRmmBpKdGzmsYxv+ntBGzQ6QoMKIg7VE9poAil7L1B6fh4x/G5bxKphLSUqCLn13PPu74srdHJtiqbVvi4gVWrvMM/zYWr+7RjB7Wsz67RX80NHa+0CTycYdJ3pPFoqBvB6qYIvMNyPexKan/dt7qgj9cNz/jXmtu4kvAx+3nN79cOYAEuEHBuwIXtJg/bp3kFmynAe0pHPwlHnGsmjuNPvcMWce7JmjKn94WQsfMb8JoTuE2vjZtW+jiPkU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB3916.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39860400002)(346002)(366004)(376002)(396003)(26005)(66574015)(16526019)(66946007)(5660300002)(83380400001)(31696002)(110136005)(31686004)(66556008)(52116002)(66476007)(6512007)(6486002)(186003)(2906002)(478600001)(956004)(2616005)(36756003)(6666004)(6506007)(30864003)(8936002)(53546011)(316002)(8676002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UVJIWkg2dm1uOUZXUTg4QTRZSlZUWmxGeFJHcXhLZU85OXN4OG1XSTJrVU5T?= =?utf-8?B?ejdCM1hJZjRvWUtMeXBsM0l1RVE2VlFlM05LNjZ3dGtaaDlhcW5SWTZOMHE4?= =?utf-8?B?czhiNEdoMGhGYVVNeE1JZXFDSkxGSFUxUUEvc3ozcXUweWZyRk9sOG9UWGpQ?= =?utf-8?B?UFhLQUpuZDY3M29yM0QwR2V5TjBPeUMxcjBZMnNWK21ReGhPSVVhNDQwZHpR?= =?utf-8?B?alFhbmpVdWt3NEJTVzRpb1dDMDI3aVhaa3k2VGh5NlZCaWpjM2RhV1o4cGpO?= =?utf-8?B?U28rRXZVazJpemppTkxSRlAyZEN0MGNjblhVOENUWjRlUk1MamVKWEttalY5?= =?utf-8?B?WC8vMEhFbjBObDVvRGdUazA3eWdxdFpsWE1zb3JYN0ZEUDhiR2YyQ0lsNDho?= =?utf-8?B?S2hYUnF4NmdpSDVNMGVuT1RKWllra0ErQnRtMjYyYWI5a0VqSDI4WTJ0UWRL?= =?utf-8?B?NVVMWlJybkpQeDlYZEJkTktIVWpPQUpuSlRmSnpkaFdCTk5uMnFybzE4eEhr?= =?utf-8?B?ampvNllxSStzdmhUNkpEVlkwd0hMWEpQd3MvRWJ6MlpITHkwaW5leEVDKytu?= =?utf-8?B?OTViNkdCdVQvajZWQUhEbm9jbFpaWEZ5VGp2WFZmUkdDcXVUbEVQNGpoYVFh?= =?utf-8?B?KzNaMWNWSVVDcGlJOTdZWUZ1QVJlUEJpYmdwazBHditXY2ZUekFKWXdJU1hI?= =?utf-8?B?L2U1Nm5vVUJzZkpZV2VYeTlDaEM2T2NVSlQ0OEpTSlFaNDZ4RkpibzFTMzlZ?= =?utf-8?B?ZVdFbndWSXlSTWZ3ekw1UDlXd3RSL2U3LzJkc04xWXZlYlFvcTlzVzcxbWVo?= =?utf-8?B?SnIxOWtLdTRrUW90T3RMMXpaclNzU0FaZTB2TFFVTTUwNjBXdnV1RkdYbVpk?= =?utf-8?B?RGdabEVjUkRwNzMvUytTSGpJSWpERXlMRitmSFV5YTN5Wk90MmErU0JEa1l6?= =?utf-8?B?cUtVYk1YelYyQlNSZG95aTBDYnlUa2YwR0Zzb29DbnRPYmxpLzY5R2Nxd0t2?= =?utf-8?B?dGExWm5JWUgyTHdHQmw4MHFvbndDTUlGR1Q3S2ZCMDQ0K0dJM0dXMEQ3bTgv?= =?utf-8?B?NlppMTRQa1pxckNHMzZNMTl0NjZsR2MyRnl3SGExYTlBMjJRWFpUc0JhZGpr?= =?utf-8?B?akZxNWtiZFoydklaOEtIeS9sTlR5cVBlZDA5czZLTlBzVjBLMEI3amZKa1By?= =?utf-8?B?elBJWVhQZzZQd0hkNUZQR2hkVnI5WUliR242MG02TEpJL3VtTTJwamZCNXlT?= =?utf-8?B?NFE1UjV1eFl6cVh5VE9uaFZqL0FQVWoyS2FubEtldS8vVVhBbzhRR2dIWGhQ?= =?utf-8?Q?CqAp/CuFCHEaNHdi2fnJtwYIMr/VM7u6zs?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB3916.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2021 15:42:40.9896 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-Network-Message-Id: ba61c5c7-63ac-4b99-e97d-08d8b3ec089d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K9ib4pwfBD3ifDoFsgVFBzQi+7YTB4Ub4mQA3WmhclgA+PdHxaU01oLBKLKLJJ5ksedGha/HU4SvrF87sOgnEQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB2519 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Ck9uIDEvOC8yMSA0OjI1IFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+IEFtIDE4LjEyLjIw IHVtIDE1OjQwIHNjaHJpZWIgTmlybW95IERhczoKPj4gVXNlIGFtZGdwdV9zYV9ibyBpbnN0ZWFk IG9mIGFtZGdwdV9iby4KPj4KPj4gdjI6Cj4+ICogZG8gbm90IGluaXRpYWxpemUgYm8gdG8gZ2V0 IGhpbnQgZnJvbSBjb21waWxlciBmb3IgLVd1bmluaXRpYWxpemVkCj4+ICogcGFzcyBOVUxMIGZl bmNlIHRvIGFtZGdwdV9zYV9ib19mcmVlIGlmIGZlbmNlIGlzIHVuZGVmaW5lZC4KPgo+IEZvdW5k IGEgbWFqb3IgYnVnIGluIHRoaXMgd2hpY2ggaXMgcHJvYmFibHkgdGhlIHJlYXNvbiB3aHkgdGhh dCBuZXZlciAKPiB3b3JrZWQgYmVmb3JlLgo+Cj4gU2VlIGJlbG93Lgo+Cj4+Cj4+IFNpZ25lZC1v ZmYtYnk6IE5pcm1veSBEYXMgPG5pcm1veS5kYXNAYW1kLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYyB8IDU2ICsrKysrKystLS0tLS0tLS0t LS0tLS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jIHwg MTcgKysrKy0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5j IHwgNDcgKysrKysrKysrKy0tLS0tLS0tLS0tCj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5z ZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3V2ZC5jCj4+IGluZGV4IDhiOTg5NjcwZWQ2Ni4uMTM0NTBhM2RmMDQ0IDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jCj4+IEBAIC0xMDU3 LDcgKzEwNTcsNyBAQCBpbnQgYW1kZ3B1X3V2ZF9yaW5nX3BhcnNlX2NzKHN0cnVjdCAKPj4gYW1k Z3B1X2NzX3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBpYl9pZHgpCj4+IMKgwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+IMKgIH0KPj4KPj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21zZyhzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCAKPj4gYW1kZ3B1X2JvICpibywKPj4gK3N0YXRp YyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVj dCAKPj4gYW1kZ3B1X3NhX2JvICpibywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBib29sIGRpcmVjdCwgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiDCoCB7 Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+ PiBAQCAtMTA3MSwxOSArMTA3MSw2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21zZyhz dHJ1Y3QgCj4+IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gwqDC oMKgwqDCoCB1bnNpZ25lZCBvZmZzZXRfaWR4ID0gMDsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBv ZmZzZXRbM10gPSB7IFVWRF9CQVNFX1NJLCAwLCAwIH07Cj4+Cj4+IC3CoMKgwqAgYW1kZ3B1X2Jv X2t1bm1hcChibyk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucGluKGJvKTsKPj4gLQo+PiAtwqDC oMKgIGlmICghcmluZy0+YWRldi0+dXZkLmFkZHJlc3NfNjRfYml0KSB7Cj4+IC3CoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyB0cnVlLCBmYWxzZSB9Owo+PiAt Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fcGxhY2VtZW50X2Zyb21fZG9tYWluKGJvLCBB TURHUFVfR0VNX0RPTUFJTl9WUkFNKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV91dmRfZm9y Y2VfaW50b191dmRfc2VnbWVudChibyk7Cj4+IC3CoMKgwqDCoMKgwqDCoCByID0gdHRtX2JvX3Zh bGlkYXRlKCZiby0+dGJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7Cj4+IC3CoMKgwqDCoMKgwqDC oCBpZiAocikKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+IC3CoMKgwqAg fQo+PiAtCj4+IMKgwqDCoMKgwqAgciA9IGFtZGdwdV9qb2JfYWxsb2Nfd2l0aF9pYihhZGV2LCA2 NCwgZGlyZWN0ID8gCj4+IEFNREdQVV9JQl9QT09MX0RJUkVDVCA6Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9JQl9QT09MX0RFTEFZRUQsICZq b2IpOwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiBAQCAtMTEwMSw3ICsxMDg4LDcgQEAgc3RhdGlj IGludCBhbWRncHVfdXZkX3NlbmRfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcsIHN0 cnVjdCBhbWRncHVfYm8gKmJvLAo+PiDCoMKgwqDCoMKgIGRhdGFbM10gPSBQQUNLRVQwKG9mZnNl dFtvZmZzZXRfaWR4XSArIFVWRF9OT19PUCwgMCk7Cj4+Cj4+IMKgwqDCoMKgwqAgaWIgPSAmam9i LT5pYnNbMF07Cj4+IC3CoMKgwqAgYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPj4g K8KgwqDCoCBhZGRyID0gYW1kZ3B1X3NhX2JvX2dwdV9hZGRyKGJvKTsKPj4gwqDCoMKgwqDCoCBp Yi0+cHRyWzBdID0gZGF0YVswXTsKPj4gwqDCoMKgwqDCoCBpYi0+cHRyWzFdID0gYWRkcjsKPj4g wqDCoMKgwqDCoCBpYi0+cHRyWzJdID0gZGF0YVsxXTsKPj4gQEAgLTExMTUsMzMgKzExMDIsMTcg QEAgc3RhdGljIGludCBhbWRncHVfdXZkX3NlbmRfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3Jpbmcg KnJpbmcsIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+PiDCoMKgwqDCoMKgIGliLT5sZW5ndGhfZHcg PSAxNjsKPj4KPj4gwqDCoMKgwqDCoCBpZiAoZGlyZWN0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBy ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlLCBm YWxzZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtc2Vjc190b19qaWZmaWVzKDEwKSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAociA9 PSAwKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByID0gLUVUSU1FRE9VVDsKPj4gLcKgwqDC oMKgwqDCoMKgIGlmIChyIDwgMCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJf ZnJlZTsKPj4gLQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV9qb2Jfc3VibWl0X2Rp cmVjdChqb2IsIHJpbmcsICZmKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9mcmVlOwo+PiDCoMKgwqDCoMKgIH0gZWxz ZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5z eW5jLCBiby0+dGJvLmJhc2UucmVzdiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQU1ER1BVX1NZTkNfQUxXQVlTLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVEKTsKPj4gLcKg wqDCoMKgwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9m cmVlOwo+PiAtCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X2pvYl9zdWJtaXQoam9i LCAmYWRldi0+dXZkLmVudGl0eSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVELCAmZik7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBl cnJfZnJlZTsKPj4gwqDCoMKgwqDCoCB9Cj4+Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX2ZlbmNlKGJv LCBmLCBmYWxzZSk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+IC3CoMKg wqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2ZyZWUoYWRl diwgJmJvLCBmKTsKPj4KPj4gwqDCoMKgwqDCoCBpZiAoZmVuY2UpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCAqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KGYpOwo+PiBAQCAtMTE1Myw4ICsxMTI0LDcgQEAg c3RhdGljIGludCBhbWRncHVfdXZkX3NlbmRfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJp bmcsIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+PiDCoMKgwqDCoMKgIGFtZGdwdV9qb2JfZnJlZShq b2IpOwo+Pgo+PiDCoCBlcnI6Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+ IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2Zy ZWUoYWRldiwgJmJvLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqAgfQo+Pgo+ PiBAQCAtMTE2NSwxNiArMTEzNSwxNyBAQCBpbnQgYW1kZ3B1X3V2ZF9nZXRfY3JlYXRlX21zZyhz dHJ1Y3QgCj4+IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBoYW5kbGUsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkK Pj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+ YWRldjsKPj4gLcKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IE5VTEw7Cj4+ICvCoMKgwqAg c3RydWN0IGFtZGdwdV9zYV9ibyAqYm87Cj4+IMKgwqDCoMKgwqAgdWludDMyX3QgKm1zZzsKPj4g wqDCoMKgwqDCoCBpbnQgciwgaTsKPj4KPj4gLcKgwqDCoCByID0gYW1kZ3B1X2JvX2NyZWF0ZV9y ZXNlcnZlZChhZGV2LCAxMDI0LCBQQUdFX1NJWkUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSwKPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYm8sIE5VTEwsICh2b2lkICoqKSZt c2cpOwo+PiArwqDCoMKgIHIgPSBhbWRncHVfc2FfYm9fbmV3KCZhZGV2LT5pYl9wb29sc1tBTURH UFVfSUJfUE9PTF9ESVJFQ1RdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JmJvLCAxMDI0LCBQQUdFX1NJWkUpOwo+Cj4gVGhpcyAxMDI0IGhlcmUgaXMgd3JvbmcuIFRoZSBz aXplIGlzIGluIGJ5dGVzIGFuZCBub3QgZG91YmxlIHdvcmRzLiBTbyAKPiB0aGlzIG5lZWRzIHRv IGJlIDQwOTYuCj4KPiBUaGlzIG9ubHkgd29ya2VkIGJlY2F1c2UgYW1kZ3B1X2JvX2NyZWF0ZV9y ZXNlcnZlZCBhbHdheXMgYWxsb2NhdGVkIGEgCj4gZnVsbCBwYWdlIGluc3RlYWQgb2YgMTAyNCBi eXRlcy4KPgo+IFNhbWUgcHJvYmxlbSBvbiBhbGwgb3RoZXIgb2NjYXNpb25zLgoKCkkgd29uZGVy IHdoeSBpdCB3b3JrZWQgb24gbmV3ZXIgY2FyZHMuCgoKPgo+IEFkZGl0aW9uYWwgdG8gdGhhdCB0 aGUgZGlyZWN0IHBvb2wgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB3ZSBzdWJtaXQgCj4gZGlyZWN0 bHksIGUuZy4gZHVyaW5nIGEgR1BVIHJlc2V0Lgo+Cj4gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gdXNl IHRoZSBub3JtYWwgcG9vbC4KCgpJIHdpbGwgcmVzZW5kIHdpdGggYWJvdmUgY2hhbmdlcy4KCgpU aGFua3MsCgpOaXJtb3kKCgo+Cj4gUmVnYXJkcywKPiBDaHJpc3RpYW4uCj4KPgo+PiArCj4+IMKg wqDCoMKgwqAgaWYgKHIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4KPj4gK8Kg wqDCoCBtc2cgPSBhbWRncHVfc2FfYm9fY3B1X2FkZHIoYm8pOwo+PiDCoMKgwqDCoMKgIC8qIHN0 aXRjaCB0b2dldGhlciBhbiBVVkQgY3JlYXRlIG1zZyAqLwo+PiDCoMKgwqDCoMKgIG1zZ1swXSA9 IGNwdV90b19sZTMyKDB4MDAwMDBkZTQpOwo+PiDCoMKgwqDCoMKgIG1zZ1sxXSA9IGNwdV90b19s ZTMyKDB4MDAwMDAwMDApOwo+PiBAQCAtMTE5NywxNiArMTE2OCwxNyBAQCBpbnQgYW1kZ3B1X3V2 ZF9nZXRfZGVzdHJveV9tc2coc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3Qg aGFuZGxlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wg ZGlyZWN0LCBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+IC3CoMKgwqAgc3RydWN0 IGFtZGdwdV9ibyAqYm8gPSBOVUxMOwo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKmJv Owo+PiDCoMKgwqDCoMKgIHVpbnQzMl90ICptc2c7Cj4+IMKgwqDCoMKgwqAgaW50IHIsIGk7Cj4+ Cj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19jcmVhdGVfcmVzZXJ2ZWQoYWRldiwgMTAyNCwgUEFH RV9TSVpFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFN REdQVV9HRU1fRE9NQUlOX1ZSQU0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJmJvLCBOVUxMLCAodm9pZCAqKikmbXNnKTsKPj4gK8KgwqDCoCByID0gYW1k Z3B1X3NhX2JvX25ldygmYWRldi0+aWJfcG9vbHNbQU1ER1BVX0lCX1BPT0xfRElSRUNUXSwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZibywgMTAyNCwgUEFHRV9TSVpFKTsK Pj4gKwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7 Cj4+Cj4+ICvCoMKgwqAgbXNnID0gYW1kZ3B1X3NhX2JvX2NwdV9hZGRyKGJvKTsKPj4gwqDCoMKg wqDCoCAvKiBzdGl0Y2ggdG9nZXRoZXIgYW4gVVZEIGRlc3Ryb3kgbXNnICovCj4+IMKgwqDCoMKg wqAgbXNnWzBdID0gY3B1X3RvX2xlMzIoMHgwMDAwMGRlNCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzFd ID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAwMik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdmNlLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZjZS5jCj4+IGluZGV4IDBkNTI4NGI5MzZlNC4uYmNlMjlkNjk3NWQzIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNlLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCj4+IEBAIC04MSw3ICs4 MSw3IEBAIE1PRFVMRV9GSVJNV0FSRShGSVJNV0FSRV9WRUdBMjApOwo+Pgo+PiDCoCBzdGF0aWMg dm9pZCBhbWRncHVfdmNlX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y ayk7Cj4+IMKgIHN0YXRpYyBpbnQgYW1kZ3B1X3ZjZV9nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIAo+PiB1aW50MzJfdCBoYW5kbGUsCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3NhX2JvICpi bywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRtYV9mZW5jZSAqKmZlbmNlKTsKPj4gwqAgc3RhdGljIGludCBhbWRncHVfdmNlX2dldF9kZXN0 cm95X21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+PiB1aW50MzJfdCBoYW5kbGUsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBkaXJl Y3QsIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7Cj4+IEBAIC00MzcsNyArNDM3LDcgQEAgdm9p ZCBhbWRncHVfdmNlX2ZyZWVfaGFuZGxlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4gKmFkZXYs IHN0cnVjdCBkcm1fZmlsZSAqZmlscCkKPj4gwqDCoCAqIE9wZW4gdXAgYSBzdHJlYW0gZm9yIEhX IHRlc3QKPj4gwqDCoCAqLwo+PiDCoCBzdGF0aWMgaW50IGFtZGdwdV92Y2VfZ2V0X2NyZWF0ZV9t c2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCAKPj4gdWludDMyX3QgaGFuZGxlLAo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpi bywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFt ZGdwdV9zYV9ibyAqYm8sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIGNv bnN0IHVuc2lnbmVkIGliX3NpemVfZHcgPSAxMDI0Owo+PiBAQCAtNDU0LDcgKzQ1NCw3IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X3ZjZV9nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgCj4+IGFtZGdwdV9yaW5n ICpyaW5nLCB1aW50MzJfdCBoYW5kbGUsCj4+Cj4+IMKgwqDCoMKgwqAgaWIgPSAmam9iLT5pYnNb MF07Cj4+Cj4+IC3CoMKgwqAgYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPj4gK8Kg wqDCoCBhZGRyID0gYW1kZ3B1X3NhX2JvX2dwdV9hZGRyKGJvKTsKPj4KPj4gwqDCoMKgwqDCoCAv KiBzdGl0Y2ggdG9nZXRoZXIgYW4gVkNFIGNyZWF0ZSBtc2cgKi8KPj4gwqDCoMKgwqDCoCBpYi0+ bGVuZ3RoX2R3ID0gMDsKPj4gQEAgLTExMzAsMTYgKzExMzAsMTYgQEAgaW50IGFtZGdwdV92Y2Vf cmluZ190ZXN0X3Jpbmcoc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZykKPj4gwqAgaW50IGFt ZGdwdV92Y2VfcmluZ190ZXN0X2liKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgbG9uZyB0aW1l b3V0KQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxM Owo+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvID0gTlVMTDsKPj4gK8KgwqDCoCBzdHJ1 Y3QgYW1kZ3B1X3NhX2JvICpibyA9IE5VTEw7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiDCoMKgwqDCoMKgIGxvbmcgcjsKPj4KPj4gwqDCoMKg wqDCoCAvKiBza2lwIHZjZSByaW5nMS8yIGliIHRlc3QgZm9yIG5vdywgc2luY2UgaXQncyBub3Qg cmVsaWFibGUgKi8KPj4gwqDCoMKgwqDCoCBpZiAocmluZyAhPSAmcmluZy0+YWRldi0+dmNlLnJp bmdbMF0pCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4KPj4gLcKgwqDCoCByID0g YW1kZ3B1X2JvX2NyZWF0ZV9yZXNlcnZlZChyaW5nLT5hZGV2LCA1MTIsIFBBR0VfU0laRSwKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RP TUFJTl9WUkFNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICZibywgTlVMTCwgTlVMTCk7Cj4+ICvCoMKgwqAgciA9IGFtZGdwdV9zYV9ib19uZXcoJmFkZXYt PmliX3Bvb2xzW0FNREdQVV9JQl9QT09MX0RJUkVDVF0sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAmYm8sIDUxMiwgUEFHRV9TSVpFKTsKPj4gwqDCoMKgwqDCoCBpZiAocikK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pgo+PiBAQCAtMTE1OCw4ICsxMTU4LDcg QEAgaW50IGFtZGdwdV92Y2VfcmluZ190ZXN0X2liKHN0cnVjdCBhbWRncHVfcmluZyAKPj4gKnJp bmcsIGxvbmcgdGltZW91dCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSAwOwo+Pgo+PiDCoCBl cnJvcjoKPj4gK8KgwqDCoCBhbWRncHVfc2FfYm9fZnJlZShhZGV2LCAmYm8sIGZlbmNlKTsKPj4g wqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPj4gLcKgwqDCoCBhbWRncHVfYm9fdW5y ZXNlcnZlKGJvKTsKPj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsKPj4gwqDCoMKgwqDC oCByZXR1cm4gcjsKPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3Zjbi5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92Y24uYwo+PiBpbmRleCA0YTc3Yzc0MjRkZmMuLjFlNDZiMmY4OTViYSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uYwo+PiBAQCAtNDg4LDcgKzQ4OCw3IEBA IGludCBhbWRncHVfdmNuX2RlY19zd19yaW5nX3Rlc3RfcmluZyhzdHJ1Y3QgCj4+IGFtZGdwdV9y aW5nICpyaW5nKQo+PiDCoCB9Cj4+Cj4+IMKgIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2Vu ZF9tc2coc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKmJvLAo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5j ZSkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmlu Zy0+YWRldjsKPj4gQEAgLTUwNCw3ICs1MDQsOCBAQCBzdGF0aWMgaW50IGFtZGdwdV92Y25fZGVj X3NlbmRfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGVycjsKPj4KPj4gwqDCoMKgwqDCoCBpYiA9ICZqb2ItPmlic1swXTsKPj4gLcKg wqDCoCBhZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoYm8pOwo+PiArwqDCoMKgIGFkZHIgPSBh bWRncHVfc2FfYm9fZ3B1X2FkZHIoYm8pOwo+PiArCj4+IMKgwqDCoMKgwqAgaWItPnB0clswXSA9 IFBBQ0tFVDAoYWRldi0+dmNuLmludGVybmFsLmRhdGEwLCAwKTsKPj4gwqDCoMKgwqDCoCBpYi0+ cHRyWzFdID0gYWRkcjsKPj4gwqDCoMKgwqDCoCBpYi0+cHRyWzJdID0gUEFDS0VUMChhZGV2LT52 Y24uaW50ZXJuYWwuZGF0YTEsIDApOwo+PiBAQCAtNTIxLDkgKzUyMiw3IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2coc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZywKPj4g wqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2ZyZWU7Cj4+ Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX2ZlbmNlKGJvLCBmLCBmYWxzZSk7Cj4+IC3CoMKgwqAgYW1k Z3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+ ICvCoMKgwqAgYW1kZ3B1X3NhX2JvX2ZyZWUoYWRldiwgJmJvLCBmKTsKPj4KPj4gwqDCoMKgwqDC oCBpZiAoZmVuY2UpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0 KGYpOwo+PiBAQCAtNTM1LDI1ICs1MzQsMjcgQEAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19z ZW5kX21zZyhzdHJ1Y3QgCj4+IGFtZGdwdV9yaW5nICpyaW5nLAo+PiDCoMKgwqDCoMKgIGFtZGdw dV9qb2JfZnJlZShqb2IpOwo+Pgo+PiDCoCBlcnI6Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVz ZXJ2ZShibyk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+ICvCoMKgwqAgYW1k Z3B1X3NhX2JvX2ZyZWUoYWRldiwgJmJvLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCByZXR1cm4gcjsK Pj4gwqAgfQo+Pgo+PiDCoCBzdGF0aWMgaW50IGFtZGdwdV92Y25fZGVjX2dldF9jcmVhdGVfbXNn KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgCj4+IHVpbnQzMl90IGhhbmRsZSwKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqKmJv KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1k Z3B1X3NhX2JvICoqYm8pCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+IMKgwqDCoMKgwqAgdWludDMyX3QgKm1zZzsKPj4gwqDC oMKgwqDCoCBpbnQgciwgaTsKPj4KPj4gwqDCoMKgwqDCoCAqYm8gPSBOVUxMOwo+PiAtwqDCoMKg IHIgPSBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkKGFkZXYsIDEwMjQsIFBBR0VfU0laRSwKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RP TUFJTl9WUkFNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJvLCBOVUxMLCAodm9pZCAqKikmbXNnKTsKPj4gKwo+PiArwqDCoMKgIHIgPSBhbWRncHVfc2Ff Ym9fbmV3KCZhZGV2LT5pYl9wb29sc1tBTURHUFVfSUJfUE9PTF9ESVJFQ1RdLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm8sIDEwMjQsIFBBR0VfU0laRSk7Cj4+ICsKPj4g wqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pgo+PiAr wqDCoMKgIG1zZyA9IGFtZGdwdV9zYV9ib19jcHVfYWRkcigqYm8pOwo+PiArCj4+IMKgwqDCoMKg wqAgbXNnWzBdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAyOCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzFd ID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAzOCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzJdID0gY3B1X3Rv X2xlMzIoMHgwMDAwMDAwMSk7Cj4+IEBAIC01NzUsMTggKzU3NiwxOSBAQCBzdGF0aWMgaW50IGFt ZGdwdV92Y25fZGVjX2dldF9jcmVhdGVfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcs IHVpbnQzMl90IGhhbmQKPj4gwqAgfQo+Pgo+PiDCoCBzdGF0aWMgaW50IGFtZGdwdV92Y25fZGVj X2dldF9kZXN0cm95X21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+PiB1aW50MzJfdCBo YW5kbGUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGFtZGdwdV9ibyAqKmJvKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfc2FfYm8gKipibykKPj4gwqAgewo+PiDCoMKgwqDCoMKg IHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPj4gwqDCoMKgwqDCoCB1 aW50MzJfdCAqbXNnOwo+PiDCoMKgwqDCoMKgIGludCByLCBpOwo+Pgo+PiDCoMKgwqDCoMKgICpi byA9IE5VTEw7Cj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19jcmVhdGVfcmVzZXJ2ZWQoYWRldiwg MTAyNCwgUEFHRV9TSVpFLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEFNREdQVV9HRU1fRE9NQUlOX1ZSQU0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYm8sIE5VTEwsICh2b2lkICoqKSZtc2cpOwo+PiArwqDCoMKg IHIgPSBhbWRncHVfc2FfYm9fbmV3KCZhZGV2LT5pYl9wb29sc1tBTURHUFVfSUJfUE9PTF9ESVJF Q1RdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm8sIDEwMjQsIFBBR0Vf U0laRSk7Cj4+ICsKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiByOwo+PiArwqDCoMKgIG1zZyA9IGFtZGdwdV9zYV9ib19jcHVfYWRkcigqYm8pOwo+Pgo+ PiDCoMKgwqDCoMKgIG1zZ1swXSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMjgpOwo+PiDCoMKgwqDC oMKgIG1zZ1sxXSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMTgpOwo+PiBAQCAtNjAzLDcgKzYwNSw3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfZ2V0X2Rlc3Ryb3lfbXNnKHN0cnVjdCAKPj4g YW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGhhbgo+PiDCoCBpbnQgYW1kZ3B1X3Zjbl9kZWNf cmluZ190ZXN0X2liKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgbG9uZyAKPj4gdGltZW91dCkK Pj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gTlVMTDsKPj4g LcKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKPj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3Nh X2JvICpibzsKPj4gwqDCoMKgwqDCoCBsb25nIHI7Cj4+Cj4+IMKgwqDCoMKgwqAgciA9IGFtZGdw dV92Y25fZGVjX2dldF9jcmVhdGVfbXNnKHJpbmcsIDEsICZibyk7Cj4+IEBAIC02MzMsNyArNjM1 LDcgQEAgaW50IGFtZGdwdV92Y25fZGVjX3JpbmdfdGVzdF9pYihzdHJ1Y3QgCj4+IGFtZGdwdV9y aW5nICpyaW5nLCBsb25nIHRpbWVvdXQpCj4+IMKgIH0KPj4KPj4gwqAgc3RhdGljIGludCBhbWRn cHVfdmNuX2RlY19zd19zZW5kX21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqYm8sCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9i byAqYm8sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV92 Y25fZGVjb2RlX2J1ZmZlciAqZGVjb2RlX2J1ZmZlciA9IE5VTEw7Cj4+IEBAIC02NTEsNyArNjUz LDcgQEAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19zd19zZW5kX21zZyhzdHJ1Y3QgCj4+IGFt ZGdwdV9yaW5nICpyaW5nLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+Cj4+IMKg wqDCoMKgwqAgaWIgPSAmam9iLT5pYnNbMF07Cj4+IC3CoMKgwqAgYWRkciA9IGFtZGdwdV9ib19n cHVfb2Zmc2V0KGJvKTsKPj4gK8KgwqDCoCBhZGRyID0gYW1kZ3B1X3NhX2JvX2dwdV9hZGRyKGJv KTsKPj4gwqDCoMKgwqDCoCBpYi0+bGVuZ3RoX2R3ID0gMDsKPj4KPj4gwqDCoMKgwqDCoCBpYi0+ cHRyW2liLT5sZW5ndGhfZHcrK10gPSBzaXplb2Yoc3RydWN0IAo+PiBhbWRncHVfdmNuX2RlY29k ZV9idWZmZXIpICsgODsKPj4gQEAgLTY3MSw5ICs2NzMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92 Y25fZGVjX3N3X3NlbmRfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IMKgwqDC oMKgwqAgaWYgKHIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9mcmVlOwo+Pgo+PiAt wqDCoMKgIGFtZGdwdV9ib19mZW5jZShibywgZiwgZmFsc2UpOwo+PiAtwqDCoMKgIGFtZGdwdV9i b191bnJlc2VydmUoYm8pOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+PiArwqDC oMKgIGFtZGdwdV9zYV9ib19mcmVlKGFkZXYsICZibywgZik7Cj4+Cj4+IMKgwqDCoMKgwqAgaWYg KGZlbmNlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKmZlbmNlID0gZG1hX2ZlbmNlX2dldChmKTsK Pj4gQEAgLTY4NSwxNSArNjg1LDE0IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc3dfc2Vu ZF9tc2coc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZywKPj4gwqDCoMKgwqDCoCBhbWRncHVf am9iX2ZyZWUoam9iKTsKPj4KPj4gwqAgZXJyOgo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2Vy dmUoYm8pOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+PiArwqDCoMKgIGFtZGdw dV9zYV9ib19mcmVlKGFkZXYsICZibywgTlVMTCk7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+ IMKgIH0KPj4KPj4gwqAgaW50IGFtZGdwdV92Y25fZGVjX3N3X3JpbmdfdGVzdF9pYihzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgCj4+IHRpbWVvdXQpCj4+IMKgIHsKPj4gwqDCoMKgwqDC oCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IE5VTEw7Cj4+IC3CoMKgwqAgc3RydWN0IGFtZGdw dV9ibyAqYm87Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9zYV9ibyAqYm87Cj4+IMKgwqDCoMKg wqAgbG9uZyByOwo+Pgo+PiDCoMKgwqDCoMKgIHIgPSBhbWRncHVfdmNuX2RlY19nZXRfY3JlYXRl X21zZyhyaW5nLCAxLCAmYm8pOwo+PiAtLSAKPj4gMi4yOS4yCj4+Cj4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==