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 B78AC10F9307 for ; Tue, 31 Mar 2026 21:21:57 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A20810EBF5; Tue, 31 Mar 2026 21:21:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="bHUUHDhk"; dkim-atps=neutral Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013034.outbound.protection.outlook.com [40.107.201.34]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2670510EBEC; Tue, 31 Mar 2026 21:21:48 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S8peaxgPi1w+YxbNy4VENCfMP91mncLCpDaBqRaIFIG/fCDFkMLZLjNHoeLf/4f9hfPS8k75lJN5B4zFmuYL4B/lWejlpe/S9h746D/AhIEvelf9DLN8+4MtErDoXjz7Lia7bZYnEIWgclhvSlognZTMq3+nswziVqgmBgGDGSp/7lV2efO3wDZhgg7oubQH/7o6sa/fEBY1WDY53/qbTa4uKTCId2tdqSfBUrsgJeWtegHbcxpTL63l+BcvzssSDHDh32kY2uO3k10qfRq4LLDe6KwznQyQPkpidngtWLG2bUUYJ69zO0R/PkO49q69CJDhhc6QC4whK6LlJrqd5Q== 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=5URwu/INkQc/EEbvaxkXDIKt2ioiBByO8uTf5wNGMkg=; b=cy5pXHXBeLZ2XfIRQNHZTvQStbad8YY3ADX6ofvkT9cXHVrLzVAp8RBQI+oB0EpoVPaNt5YfAOdytyoNnjwfibCRoSd97EAgLVEw3kQQ3bDmRRg3yH9mYj/NX8E2Xln7D1dP/yoZ5x704gllefM0RZ3N1z+gJm4FZXoTM8vcCpsdDjz0QZrltW882F2071odcZrg476+SvOH3wj0c2MsAbLbXFbYUYHCWGl5OUSycxuPFOMxl7/ZF+KA4DXfEFswrSeP0/pNDU4KK/WKGFqh2+yqOf1tamE3jCKPnBtMkGzMOkLJq/VYFRuulVUZDTPqXZ/68EEkj4SrW90LKdPJVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5URwu/INkQc/EEbvaxkXDIKt2ioiBByO8uTf5wNGMkg=; b=bHUUHDhkQ6ULwFGmADp3h6zNFc1KJ+HxkBhgHoe3f0ehvZC3L92vMgChNtWApcBRX7VDAIkxIgaQYk1tAr2l5FrreAdwuk6Iew4oMjWVOKOzVziAj2WUuUT6PVXyLIsX9ZYo4dJjUnteKKsvfDdVXJFGTkkEa89oXI2UDxUPQh6rxZT0nAslBRNnuBuJXiVc/ltSwxjNsZ3d75RA7/oFRfT+dyQhkmm+J0WSRlJcuzIK8qbCHM6ekulVsnCXadQxnwgXN3wy0fu74ClUdQdYIj5a+BrkYmLRZe/v3VHyJtAwzKxfacN0b2yQ9hNYYVbTPpvlv1zN5mGPNIO9k45Njw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) by BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.8; Tue, 31 Mar 2026 21:21:42 +0000 Received: from DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33]) by DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33%4]) with mapi id 15.20.9769.014; Tue, 31 Mar 2026 21:21:42 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: Miguel Ojeda , Boqun Feng , Gary Guo , Bjorn Roy Baron , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Dave Airlie , Daniel Almeida , Koen Koning , dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, Nikola Djukic , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jonathan Corbet , Alex Deucher , Christian Koenig , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Lucas De Marchi , Thomas Hellstrom , Helge Deller , Alex Gaynor , Boqun Feng , John Hubbard , Alistair Popple , Timur Tabi , Edwin Peer , Alexandre Courbot , Andrea Righi , Andy Ritger , Zhi Wang , Balbir Singh , Philipp Stanner , Elle Rhumsaa , alexeyi@nvidia.com, Eliot Courtney , joel@joelfernandes.org, linux-doc@vger.kernel.org, amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Joel Fernandes Subject: [PATCH v10 19/21] gpu: nova-core: mm: Add BAR1 memory management self-tests Date: Tue, 31 Mar 2026 17:20:46 -0400 Message-Id: <20260331212048.2229260-20-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260331212048.2229260-1-joelagnelf@nvidia.com> References: <20260311004008.2208806-1-joelagnelf@nvidia.com> <20260331212048.2229260-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: BL0PR05CA0014.namprd05.prod.outlook.com (2603:10b6:208:91::24) To DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB6486:EE_|BL1PR12MB5849:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ef65465-fa4c-48c3-4cb1-08de8f6b810e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: /Zm+ZsZd56IvK/i7yOg3H0qfSQwjpOKo4JGgGcweA4D7y7rJytxJ3VcjfeXctlH/paj9420bZG1yqGcfg6dPyNfKncf2U3dbueCVWt4Hd4yyBJxgzxSAPyYwqjXPfJwTkZM8ZR0iCHTfFVhPIdNfa+YbB176mA1Qmy2O/2e5kW7u/4e0u2x8AK2OPi1Amprea2rXCzUXuwd3KDqcNBGFdh+V8l/XZRMYsvQYJt/694gmLze+MQywm34l+ShZ+rfGaaceHmFEbfq6ISlrhfgsfHtrX5cix8+WDvhfwe3xEgIDZtKvKqRznVXK3zrTtO9lE8qh8x3SXA0O8isDfXkdfC5oTF4qcy66dg9D6c//r3v16k51kcGD0OJyYgeddJGnBzdRnYGg0SvDbCP09+4NHgEHSf0wAMoTE97s6ceE5Uosb118YHpBLHfENeH5rqJQqZ9q2h60jMA8BuMvKvoHFjTbxjcUH421vyVSiQowfO37wO8watWIYVlu5Y+OuVi2/NZKzX8PqoV9KA7MJKM0YLBuEgAnRl2UJxJ+sKhMCI0yI3WVkAyjXMH/Dey+k4zqAdaBIIDcTSc2NOESRrrKV/ZGGOlmI8okUFCBucfhQghRgC+1NUO2D0liDSRP6hDweexivDGKFTSCUZ/VbnZ/B7D0tqmFt9qisnbasf9AGj3xqqIMN6wp5QKHKp2/sQzrRfpoI/m/6N1LOY0fB5fVpzeGMxDR1B8mbQD0i/REt0I= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR12MB6486.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YWQ5bmk1MStZb2xRVkcyV2QxNFJvUDkybWpaTmVpdWFoYXdnN3pzZ2JEWThj?= =?utf-8?B?cTBPQ3lwM2R0VVhDMVdDL0Z6dC9JN2FvM1VmclczSHYyNCtCNlluRk9GOHR0?= =?utf-8?B?SEZ5cFp0K2hDbEl1SXYzdTRqZkkyRXNpajRoRnVhQzVlTlp6b2ZvZW02K0U2?= =?utf-8?B?bHVuVWVSQTViVFF4ejZ2K2o4ZUFHcnRLWlpSTVlxcEVVM2pDeTZIc2VKVTgv?= =?utf-8?B?RWZBcDlaN3NsYzdJejVnc3JSbmFlemIwVmpFVWVHNmxUdzhreEdnUDVWdktu?= =?utf-8?B?d243UkZSMy9ocW1wMDBSMEtYM2gvalY0NlZ3RWVnRExWaHV6a21Lb3BZMFFh?= =?utf-8?B?eHV1S0d2aTdLVFFzbHduNmZnWFlQMXlNV2wrUzFmS3FYa3BaUUw3bWorTlFL?= =?utf-8?B?REhBUU05UEVuM1ZrcmEvcENmRzVnak9hK09STFNOenJIQ3B3OHRMT3U4OC82?= =?utf-8?B?WlF1eHpaZi93VlVsM3VOclRmZnRXWDkvaEN6QytVK1MwL05wbi9sd0NBOVBs?= =?utf-8?B?emZqalk5TXUxN2N6cC9NbDlSV2gyU2F4WnpZVFQvdWRUTjNhYUx2YW5GdlFC?= =?utf-8?B?NERIQXIvT0V4Mmg2L25pbjBlY3h6STM5WjkxVWM4V0pHWm9la1VaZDhVZ2Jt?= =?utf-8?B?cU94S01PZjJrWk1CNzJKM055R2wvcCtrdDh2OGlOaTFDdk1yRitjc1FBUzNi?= =?utf-8?B?cVZlbzdxdHk3dVAwaVBiUE5lNGphTUd0OG5ORWpYWFFJT3FXMWhXdGIyTHd4?= =?utf-8?B?VDROeTN6ZlZKWUVLcG42RDZGd1NBRmk1Z2ltOXFYandOMUx2anJwc2RuMVY3?= =?utf-8?B?Zm1xRWsyVFEvQ3NyTjNmb2wxZW82ZzJJalRiZlRrNFl1S05tVWdjYWNCYTJv?= =?utf-8?B?Um0xRWxoMGtUdC9haENHeC9zQVM3enVBbmxMTEIwa0FaL0xGLytjUDNQdE04?= =?utf-8?B?d3QyTkl5eklWaStXakY0K3RYd1BPbnRwcjZuREdPVm5pRTVzWkRBNlJweVlj?= =?utf-8?B?ZXZVTUh1MWFlNVBIQ3RKbG9TSEZNMmc1ZHhEZjNMZ3ZHSEh0USt5N3IvV090?= =?utf-8?B?SVVmYWxEaE04eG8zaXYwS0ZzRm5VMUkxTi9VZ0dVUUxKUmtzVEVvMkNIQk9Y?= =?utf-8?B?NjIwTzRtanQrdlgyNUtnNFFSQmNhOHZjTXRZbFBUek9HR2ZZZGVQT3Jpdi9C?= =?utf-8?B?dXlYcTNOd1lFeXZTMnZacUpzTS9EODJzQms5YjJydm9zVWt1a2xaTmxTWmtx?= =?utf-8?B?d0E1SjRTQkpMM0lVNlA5aFArZDZsTldUWnA3a3VhYkRCOFQ4cno5VFptcnFU?= =?utf-8?B?emtzN2F6OFBhUGJ0RisxT0tYOWt4NEhKZHBuRlBSNXpiNDBoTlBPcWRVMjlE?= =?utf-8?B?VW82U2h6YUVpZ1UzcGxtY05WN1hUc2VFOGRqS1VLTnJlWXpESktmVnBmczZo?= =?utf-8?B?YzhJaVNTUTkrRk81V2M2dEJYUmdFSE15ZUs4VGFnQzdYR3c3eUkxLzRybXAr?= =?utf-8?B?NW9NR3ZXc1BuVVdlSUxVTkpQTnY3Z3B2NjZJcXZkUmlleFo5QjlPY21PbGZC?= =?utf-8?B?OFRZSm9NTmRGUmVvVVJjYjIySEpJMEZLdHJKek5wT056cWp3T1o5WFpoRjM1?= =?utf-8?B?NWhuUW5xZ0VUZGFCeWF0N3FRN054L010QW0yNnhnVzlIbUtaSEM3NVBOYU1p?= =?utf-8?B?YlBtZE5WUGxrekhEbnBNaUU5cWZCQ0w3eFM1aDNkbkpHQnVIOWhHaG1Pdldk?= =?utf-8?B?QkhJR2p5UGtINVBsVVM5V1BFdkY1VEUzOUVJRXc1K3pkMGV6RXFieElRTmQz?= =?utf-8?B?Q0F0TXJTUkVFRlRLejFrUm5JNzdFemZMbTd5ei9uWUtCNnplUTEvb3dDQTZG?= =?utf-8?B?SXJVVzAvU2ZrN3hITXdDMHJWOFF5S1FXQ1FQeFNEL2llYlFjOVNHMVl5c2x2?= =?utf-8?B?ejVrU1diRFp1Z3p4bUVIMWVVMS9vMEhEc2dkam92QnpSZzA5ZUVVZHVuOUtC?= =?utf-8?B?QlJCRzAwelhDZkFpeExtMVVqamdOaDFseTd3ZjNHa24wS0o0YnVkQngwMU9Z?= =?utf-8?B?VC8zZHpmU0hmS0ZmekphY2hmUVVvK3REMTZKT2hCYUFzV3A5aENnZlA3Uis3?= =?utf-8?B?dXN3bWI5VERZOEJTakhrMEQrbi9pVWl5YU1menRic1ZDTWMzc2c2cDJESU0x?= =?utf-8?B?QnI5WnNhUVpwakRRaklyZkZZYnRDRTlxaWJJSitqQk5nalVDdDBGNTB6TDVr?= =?utf-8?B?NVBPOHBIUEpSSFA2ZHJOaTFjbzY4TUp0UkJvVXA1NWRKOWNhcWdXcjUyRjY4?= =?utf-8?B?NTlEUkZhWG1nZlpkL1p2czI4WEZDK1dLa2ZuNlN0OGJ6Z0I3OENDUT09?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ef65465-fa4c-48c3-4cb1-08de8f6b810e X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB6486.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2026 21:21:42.4315 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cUjnEchwz1iYRgvTjZ+MRLGXvDTwCK/8GLleo5yivAJsInMGQqYWBiPbWV5ZN8eMtEnP5SbFM3Oxtui0Eo0+dA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5849 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" QWRkIHNlbGYtdGVzdHMgZm9yIEJBUjEgYWNjZXNzIGR1cmluZyBkcml2ZXIgcHJvYmUgd2hlbgpD T05GSUdfTk9WQV9NTV9TRUxGVEVTVFMgaXMgZW5hYmxlZCAoZGVmYXVsdCBkaXNhYmxlZCkuIFRo aXMgcmVzdWx0cyBpbgp0ZXN0aW5nIHRoZSBWbW0sIEdQVSBidWRkeSBhbGxvY2F0b3IgYW5kIEJB UjEgcmVnaW9uIGFsbCBvZiB3aGljaCBzaG91bGQKZnVuY3Rpb24gY29ycmVjdGx5IGZvciB0aGUg dGVzdHMgdG8gcGFzcy4KCkNjOiBOaWtvbGEgRGp1a2ljIDxuZGp1a2ljQG52aWRpYS5jb20+ClNp Z25lZC1vZmYtYnk6IEpvZWwgRmVybmFuZGVzIDxqb2VsYWduZWxmQG52aWRpYS5jb20+Ci0tLQog ZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWcgICAgICAgIHwgIDEwICsrCiBkcml2ZXJzL2dw dS9ub3ZhLWNvcmUvZHJpdmVyLnJzICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvbm92YS1jb3Jl L2dwdS5ycyAgICAgICAgIHwgIDM2ICsrKysKIGRyaXZlcnMvZ3B1L25vdmEtY29yZS9tbS9iYXJf dXNlci5ycyB8IDIzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdl ZCwgMjg0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9LY29uZmlnCmluZGV4IDY1MTMwMDdiZjY2 Zi4uMzVkZTU1YWFiY2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZp ZworKysgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZwpAQCAtMTUsMyArMTUsMTMgQEAg Y29uZmlnIE5PVkFfQ09SRQogCSAgVGhpcyBkcml2ZXIgaXMgd29yayBpbiBwcm9ncmVzcyBhbmQg bWF5IG5vdCBiZSBmdW5jdGlvbmFsLgogCiAJICBJZiBNIGlzIHNlbGVjdGVkLCB0aGUgbW9kdWxl IHdpbGwgYmUgY2FsbGVkIG5vdmFfY29yZS4KKworY29uZmlnIE5PVkFfTU1fU0VMRlRFU1RTCisJ Ym9vbCAiTWVtb3J5IG1hbmFnZW1lbnQgc2VsZi10ZXN0cyIKKwlkZXBlbmRzIG9uIE5PVkFfQ09S RQorCWhlbHAKKwkgIEVuYWJsZSBzZWxmLXRlc3RzIGZvciB0aGUgbWVtb3J5IG1hbmFnZW1lbnQg c3Vic3lzdGVtLiBXaGVuIGVuYWJsZWQsCisJICB0ZXN0cyBhcmUgcnVuIGR1cmluZyBHUFUgcHJv YmUgdG8gdmVyaWZ5IFBSQU1JTiBhcGVydHVyZSBhY2Nlc3MsCisJICBwYWdlIHRhYmxlIHdhbGtp bmcsIGFuZCBCQVIxIHZpcnR1YWwgbWVtb3J5IG1hcHBpbmcgZnVuY3Rpb25hbGl0eS4KKworCSAg VGhpcyBpcyBhIHRlc3Rpbmcgb3B0aW9uIGFuZCBpcyBkZWZhdWx0LWRpc2FibGVkLgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycyBiL2RyaXZlcnMvZ3B1L25vdmEt Y29yZS9kcml2ZXIucnMKaW5kZXggM2JjMjY0YTA5OWRlLi5iMWFhZmFmZjBjZWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnMKKysrIGIvZHJpdmVycy9ncHUvbm92 YS1jb3JlL2RyaXZlci5ycwpAQCAtMTAxLDYgKzEwMSw4IEBAIGZuIHByb2JlKHBkZXY6ICZwY2k6 OkRldmljZTxDb3JlPiwgX2luZm86ICZTZWxmOjpJZEluZm8pIC0+IGltcGwgUGluSW5pdDxTZWxm LCBFCiAKICAgICAgICAgICAgIE9rKHRyeV9waW5faW5pdCEoU2VsZiB7CiAgICAgICAgICAgICAg ICAgZ3B1IDwtIEdwdTo6bmV3KHBkZXYsIGJhci5jbG9uZSgpLCBiYXIuYWNjZXNzKHBkZXYuYXNf cmVmKCkpPyksCisgICAgICAgICAgICAgICAgLy8gUnVuIG9wdGlvbmFsIEdQVSBzZWxmdGVzdHMu CisgICAgICAgICAgICAgICAgXzogeyBncHUucnVuX3NlbGZ0ZXN0cyhwZGV2KT8gfSwKICAgICAg ICAgICAgICAgICBfcmVnIDwtIGF1eGlsaWFyeTo6UmVnaXN0cmF0aW9uOjpuZXcoCiAgICAgICAg ICAgICAgICAgICAgIHBkZXYuYXNfcmVmKCksCiAgICAgICAgICAgICAgICAgICAgIGMibm92YS1k cm0iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2dwdS5ycyBiL2RyaXZlcnMv Z3B1L25vdmEtY29yZS9ncHUucnMKaW5kZXggMWNkMGYxNDc5OTRiLi4wMjFmYzdjYzcyNDcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9ncHUucnMKKysrIGIvZHJpdmVycy9ncHUv bm92YS1jb3JlL2dwdS5ycwpAQCAtMzQxLDQgKzM0MSw0MCBAQCBwdWIoY3JhdGUpIGZuIHVuYmlu ZCgmc2VsZiwgZGV2OiAmZGV2aWNlOjpEZXZpY2U8ZGV2aWNlOjpDb3JlPikgewogICAgICAgICAg ICAgLmluc3BlY3QofGJhcnwgc2VsZi5zeXNtZW1fZmx1c2gudW5yZWdpc3RlcihiYXIpKQogICAg ICAgICAgICAgLmlzX2VycigpKTsKICAgICB9CisKKyAgICAvLy8gUnVuIHNlbGZ0ZXN0cyBvbiB0 aGUgY29uc3RydWN0ZWQgW2BHcHVgXS4KKyAgICBwdWIoY3JhdGUpIGZuIHJ1bl9zZWxmdGVzdHMo CisgICAgICAgIG11dCBzZWxmOiBQaW48Jm11dCBTZWxmPiwKKyAgICAgICAgcGRldjogJnBjaTo6 RGV2aWNlPGRldmljZTo6Qm91bmQ+LAorICAgICkgLT4gUmVzdWx0IHsKKyAgICAgICAgc2VsZi5h c19tdXQoKS5ydW5fbW1fc2VsZnRlc3RzKHBkZXYpPzsKKyAgICAgICAgT2soKCkpCisgICAgfQor CisgICAgI1tjZmcoQ09ORklHX05PVkFfTU1fU0VMRlRFU1RTKV0KKyAgICBmbiBydW5fbW1fc2Vs ZnRlc3RzKHNlbGY6IFBpbjwmbXV0IFNlbGY+LCBwZGV2OiAmcGNpOjpEZXZpY2U8ZGV2aWNlOjpC b3VuZD4pIC0+IFJlc3VsdCB7CisgICAgICAgIHVzZSBjcmF0ZTo6ZHJpdmVyOjpCQVIxX1NJWkU7 CisKKyAgICAgICAgLy8gQkFSMSBzZWxmLXRlc3RzLgorICAgICAgICBsZXQgYmFyMSA9IEFyYzo6 cGluX2luaXQoCisgICAgICAgICAgICBwZGV2LmlvbWFwX3JlZ2lvbl9zaXplZDo6PEJBUjFfU0la RT4oMSwgYyJub3ZhLWNvcmUvYmFyMSIpLAorICAgICAgICAgICAgR0ZQX0tFUk5FTCwKKyAgICAg ICAgKT87CisgICAgICAgIGxldCBiYXIxX2FjY2VzcyA9IGJhcjEuYWNjZXNzKHBkZXYuYXNfcmVm KCkpPzsKKworICAgICAgICBjcmF0ZTo6bW06OmJhcl91c2VyOjpydW5fc2VsZl90ZXN0KAorICAg ICAgICAgICAgcGRldi5hc19yZWYoKSwKKyAgICAgICAgICAgICZzZWxmLm1tLAorICAgICAgICAg ICAgYmFyMV9hY2Nlc3MsCisgICAgICAgICAgICBzZWxmLmdzcF9zdGF0aWNfaW5mby5iYXIxX3Bk ZV9iYXNlLAorICAgICAgICAgICAgc2VsZi5zcGVjLmNoaXBzZXQsCisgICAgICAgICk/OworCisg ICAgICAgIE9rKCgpKQorICAgIH0KKworICAgICNbY2ZnKG5vdChDT05GSUdfTk9WQV9NTV9TRUxG VEVTVFMpKV0KKyAgICBmbiBydW5fbW1fc2VsZnRlc3RzKHNlbGY6IFBpbjwmbXV0IFNlbGY+LCBf cGRldjogJnBjaTo6RGV2aWNlPGRldmljZTo6Qm91bmQ+KSAtPiBSZXN1bHQgeworICAgICAgICBP aygoKSkKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbW0vYmFy X3VzZXIucnMgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbW0vYmFyX3VzZXIucnMKaW5kZXggNWY3 YzBlOWU1MWY5Li45MzM1MTI2MTA4MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L25vdmEtY29y ZS9tbS9iYXJfdXNlci5ycworKysgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbW0vYmFyX3VzZXIu cnMKQEAgLTE1MCwzICsxNTAsMjM5IEBAIGZuIGRyb3AoJm11dCBzZWxmKSB7CiAgICAgICAgIH0K ICAgICB9CiB9CisKKy8vLyBDaGVjayBpZiB0aGUgUERCIGhhcyB2YWxpZCwgVlJBTS1iYWNrZWQg cGFnZSB0YWJsZXMuCisvLy8KKy8vLyBSZXR1cm5zIGBFcnIoRU5PRU5UKWAgaWYgcGFnZSB0YWJs ZXMgYXJlIG1pc3Npbmcgb3Igbm90IGluIFZSQU0uCisjW2NmZyhDT05GSUdfTk9WQV9NTV9TRUxG VEVTVFMpXQorZm4gY2hlY2tfdmFsaWRfcGFnZV90YWJsZXMobW06ICZHcHVNbSwgcGRiX2FkZHI6 IFZyYW1BZGRyZXNzLCBjaGlwc2V0OiBDaGlwc2V0KSAtPiBSZXN1bHQgeworICAgIHVzZSBjcmF0 ZTo6bW06OnBhZ2V0YWJsZTo6QXBlcnR1cmVQZGU7CisKKyAgICBsZXQgbXV0IHdpbmRvdyA9IG1t LnByYW1pbigpLmdldF93aW5kb3coKT87CisgICAgbGV0IHBkYl9lbnRyeV9yYXcgPSB3aW5kb3cu dHJ5X3JlYWQ2NChwZGJfYWRkci5yYXcoKSk/OworICAgIGxldCBwZGJfZW50cnkgPSBjcmF0ZTo6 bW06OnBhZ2V0YWJsZTo6UGRlOjpuZXcoY2hpcHNldC5tbXVfdmVyc2lvbigpLCBwZGJfZW50cnlf cmF3KTsKKworICAgIGlmICFwZGJfZW50cnkuaXNfdmFsaWQoKSB7CisgICAgICAgIHJldHVybiBF cnIoRU5PRU5UKTsKKyAgICB9CisKKyAgICBpZiBwZGJfZW50cnkuYXBlcnR1cmUoKSAhPSBBcGVy dHVyZVBkZTo6VmlkZW9NZW1vcnkgeworICAgICAgICByZXR1cm4gRXJyKEVOT0VOVCk7CisgICAg fQorCisgICAgT2soKCkpCit9CisKKy8vLyBSdW4gTU0gc3Vic3lzdGVtIHNlbGYtdGVzdHMgZHVy aW5nIHByb2JlLgorLy8vCisvLy8gVGVzdHMgcGFnZSB0YWJsZSBpbmZyYXN0cnVjdHVyZSBhbmQg YEJBUjFgIE1NSU8gYWNjZXNzIHVzaW5nIHRoZSBgQkFSMWAKKy8vLyBhZGRyZXNzIHNwYWNlLiBV c2VzIHRoZSBgR3B1TW1gJ3MgYnVkZHkgYWxsb2NhdG9yIHRvIGFsbG9jYXRlIHBhZ2UgdGFibGVz CisvLy8gYW5kIHRlc3QgcGFnZXMgYXMgbmVlZGVkLgorI1tjZmcoQ09ORklHX05PVkFfTU1fU0VM RlRFU1RTKV0KK3B1YihjcmF0ZSkgZm4gcnVuX3NlbGZfdGVzdCgKKyAgICBkZXY6ICZrZXJuZWw6 OmRldmljZTo6RGV2aWNlLAorICAgIG1tOiAmR3B1TW0sCisgICAgYmFyMTogJmNyYXRlOjpkcml2 ZXI6OkJhcjEsCisgICAgYmFyMV9wZGI6IHU2NCwKKyAgICBjaGlwc2V0OiBDaGlwc2V0LAorKSAt PiBSZXN1bHQgeworICAgIHVzZSBrZXJuZWw6OmdwdTo6YnVkZHk6OnsKKyAgICAgICAgR3B1QnVk ZHlBbGxvY0ZsYWdzLAorICAgICAgICBHcHVCdWRkeUFsbG9jTW9kZSwgLy8KKyAgICB9OworICAg IHVzZSBrZXJuZWw6OnB0cjo6QWxpZ25tZW50OworICAgIHVzZSBrZXJuZWw6OnNpemVzOjp7Cisg ICAgICAgIFNaXzE2SywKKyAgICAgICAgU1pfMzJLLAorICAgICAgICBTWl80SywKKyAgICAgICAg U1pfNjRLLCAvLworICAgIH07CisKKyAgICAvLyBUZXN0IHBhdHRlcm5zLgorICAgIGNvbnN0IFBB VFRFUk5fUFJBTUlOOiB1MzIgPSAweERFQURfQkVFRjsKKyAgICBjb25zdCBQQVRURVJOX0JBUjE6 IHUzMiA9IDB4Q0FGRV9CQUJFOworCisgICAgZGV2X2luZm8hKGRldiwgIk1NOiBTdGFydGluZyBz ZWxmLXRlc3QuLi5cbiIpOworCisgICAgbGV0IHBkYl9hZGRyID0gVnJhbUFkZHJlc3M6Om5ldyhi YXIxX3BkYik7CisKKyAgICAvLyBDaGVjayBpZiBpbml0aWFsIHBhZ2UgdGFibGVzIGFyZSBpbiBW UkFNLgorICAgIGlmIGNoZWNrX3ZhbGlkX3BhZ2VfdGFibGVzKG1tLCBwZGJfYWRkciwgY2hpcHNl dCkuaXNfZXJyKCkgeworICAgICAgICBkZXZfaW5mbyEoZGV2LCAiTU06IFNlbGYtdGVzdCBTS0lQ UEVEIC0gbm8gdmFsaWQgVlJBTSBwYWdlIHRhYmxlc1xuIik7CisgICAgICAgIHJldHVybiBPaygo KSk7CisgICAgfQorCisgICAgLy8gU2V0IHVwIGEgdGVzdCBwYWdlIGZyb20gdGhlIGJ1ZGR5IGFs bG9jYXRvci4KKyAgICBsZXQgdGVzdF9wYWdlX2Jsb2NrcyA9IEtCb3g6OnBpbl9pbml0KAorICAg ICAgICBtbS5idWRkeSgpLmFsbG9jX2Jsb2NrcygKKyAgICAgICAgICAgIEdwdUJ1ZGR5QWxsb2NN b2RlOjpTaW1wbGUsCisgICAgICAgICAgICBTWl80Sy5pbnRvX3NhZmVfY2FzdCgpLAorICAgICAg ICAgICAgQWxpZ25tZW50OjpuZXc6OjxTWl80Sz4oKSwKKyAgICAgICAgICAgIEdwdUJ1ZGR5QWxs b2NGbGFnczo6ZGVmYXVsdCgpLAorICAgICAgICApLAorICAgICAgICBHRlBfS0VSTkVMLAorICAg ICk/OworICAgIGxldCB0ZXN0X3ZyYW1fb2Zmc2V0ID0gdGVzdF9wYWdlX2Jsb2Nrcy5pdGVyKCku bmV4dCgpLm9rX29yKEVOT01FTSk/Lm9mZnNldCgpOworICAgIGxldCB0ZXN0X3ZyYW0gPSBWcmFt QWRkcmVzczo6bmV3KHRlc3RfdnJhbV9vZmZzZXQpOworICAgIGxldCB0ZXN0X3BmbiA9IFBmbjo6 ZnJvbSh0ZXN0X3ZyYW0pOworCisgICAgLy8gQ3JlYXRlIGEgVk1NIG9mIHNpemUgNjRLIHRvIHRy YWNrIHZpcnR1YWwgbWVtb3J5IG1hcHBpbmdzLgorICAgIGxldCBtdXQgdm1tID0gVm1tOjpuZXco cGRiX2FkZHIsIGNoaXBzZXQubW11X3ZlcnNpb24oKSwgU1pfNjRLLmludG9fc2FmZV9jYXN0KCkp PzsKKworICAgIC8vIENyZWF0ZSBhIHRlc3QgbWFwcGluZy4KKyAgICBsZXQgbWFwcGVkID0gdm1t Lm1hcF9wYWdlcyhtbSwgJlt0ZXN0X3Bmbl0sIE5vbmUsIHRydWUpPzsKKyAgICBsZXQgdGVzdF92 Zm4gPSBtYXBwZWQudmZuX3N0YXJ0OworCisgICAgLy8gUHJlLWNvbXB1dGUgdGVzdCBhZGRyZXNz ZXMgZm9yIHRoZSBQUkFNSU4gdG8gQkFSMSByZWFkIHRlc3QuCisgICAgbGV0IHZmbl9vZmZzZXQ6 IHVzaXplID0gdGVzdF92Zm4ucmF3KCkuaW50b19zYWZlX2Nhc3QoKTsKKyAgICBsZXQgYmFyMV9i YXNlX29mZnNldCA9IHZmbl9vZmZzZXQuY2hlY2tlZF9tdWwoUEFHRV9TSVpFKS5va19vcihFT1ZF UkZMT1cpPzsKKyAgICBsZXQgYmFyMV9yZWFkX29mZnNldDogdXNpemUgPSBiYXIxX2Jhc2Vfb2Zm c2V0ICsgMHgxMDA7CisgICAgbGV0IHZyYW1fcmVhZF9hZGRyOiB1c2l6ZSA9IHRlc3RfdnJhbS5y YXcoKSArIDB4MTAwOworCisgICAgLy8gVGVzdCAxOiBXcml0ZSB2aWEgUFJBTUlOLCByZWFkIHZp YSBCQVIxLgorICAgIHsKKyAgICAgICAgbGV0IG11dCB3aW5kb3cgPSBtbS5wcmFtaW4oKS5nZXRf d2luZG93KCk/OworICAgICAgICB3aW5kb3cudHJ5X3dyaXRlMzIodnJhbV9yZWFkX2FkZHIsIFBB VFRFUk5fUFJBTUlOKT87CisgICAgfQorCisgICAgLy8gUmVhZCBiYWNrIHZpYSBCQVIxIGFwZXJ0 dXJlLgorICAgIGxldCBiYXIxX3ZhbHVlID0gYmFyMS50cnlfcmVhZDMyKGJhcjFfcmVhZF9vZmZz ZXQpPzsKKworICAgIGxldCB0ZXN0MV9wYXNzZWQgPSBpZiBiYXIxX3ZhbHVlID09IFBBVFRFUk5f UFJBTUlOIHsKKyAgICAgICAgdHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIhKAor ICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgIk1NOiBUZXN0IDEgRkFJTEVEIC0gRXhwZWN0 ZWQgezojMDEweH0sIGdvdCB7OiMwMTB4fVxuIiwKKyAgICAgICAgICAgIFBBVFRFUk5fUFJBTUlO LAorICAgICAgICAgICAgYmFyMV92YWx1ZQorICAgICAgICApOworICAgICAgICBmYWxzZQorICAg IH07CisKKyAgICAvLyBDbGVhbnVwIC0gaW52YWxpZGF0ZSBQVEUuCisgICAgdm1tLnVubWFwX3Bh Z2VzKG1tLCBtYXBwZWQpPzsKKworICAgIC8vIFRlc3QgMjogVHdvLXBoYXNlIHByZXBhcmUvZXhl Y3V0ZSBBUEkuCisgICAgbGV0IHByZXBhcmVkID0gdm1tLnByZXBhcmVfbWFwKG1tLCAxLCBOb25l KT87CisgICAgbGV0IG1hcHBlZDIgPSB2bW0uZXhlY3V0ZV9tYXAobW0sIHByZXBhcmVkLCAmW3Rl c3RfcGZuXSwgdHJ1ZSk/OworICAgIGxldCByZWFkYmFjayA9IHZtbS5yZWFkX21hcHBpbmcobW0s IG1hcHBlZDIudmZuX3N0YXJ0KT87CisgICAgbGV0IHRlc3QyX3Bhc3NlZCA9IGlmIHJlYWRiYWNr ID09IFNvbWUodGVzdF9wZm4pIHsKKyAgICAgICAgdHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAg IGRldl9lcnIhKGRldiwgIk1NOiBUZXN0IDIgRkFJTEVEIC0gVHdvLXBoYXNlIG1hcCByZWFkYmFj ayBtaXNtYXRjaFxuIik7CisgICAgICAgIGZhbHNlCisgICAgfTsKKyAgICB2bW0udW5tYXBfcGFn ZXMobW0sIG1hcHBlZDIpPzsKKworICAgIC8vIFRlc3QgMzogUmFuZ2UtY29uc3RyYWluZWQgYWxs b2NhdGlvbiB3aXRoIGEgaG9sZSDigJQgZXhlcmNpc2VzIGJsb2NrLnNpemUoKS1kcml2ZW4KKyAg ICAvLyBCQVIxIG1hcHBpbmcuIEEgNEsgaG9sZSBpcyBwdW5jaGVkIGF0IGJhc2UrMTZLLCB0aGVu IGEgc2luZ2xlIDMySyBhbGxvY2F0aW9uCisgICAgLy8gaXMgcmVxdWVzdGVkIHdpdGhpbiBbYmFz ZSwgYmFzZSszNkspLiBUaGUgYnVkZHkgYWxsb2NhdG9yIG11c3Qgc3BsaXQgYXJvdW5kIHRoZQor ICAgIC8vIGhvbGUsIHJldHVybmluZyBtdWx0aXBsZSBibG9ja3MgKGV4cGVjdGVkOiB7MTZLLCA0 SywgOEssIDRLfSA9IDMySyB0b3RhbCkuCisgICAgLy8gRWFjaCBibG9jayBpcyBtYXBwZWQgaW50 byBCQVIxIGFuZCB2ZXJpZmllZCB2aWEgUFJBTUlOIHJlYWQtYmFjay4KKyAgICAvLworICAgIC8v IEFkZHJlc3MgbGF5b3V0IChiYXNlID0gMHgxMDAwMCk6CisgICAgLy8gICBbICAgIDE2SyAgICBd IFtIT0xFIDRLXSBbNEtdIFsgOEsgXSBbNEtdCisgICAgLy8gICAweDEwMDAwICAgICAgIDB4MTQw MDAgIDB4MTUwMDAgMHgxNjAwMCAweDE4MDAwIDB4MTkwMDAKKyAgICBsZXQgcmFuZ2VfYmFzZTog dTY0ID0gU1pfNjRLLmludG9fc2FmZV9jYXN0KCk7CisgICAgbGV0IHN6XzRrOiB1NjQgPSBTWl80 Sy5pbnRvX3NhZmVfY2FzdCgpOworICAgIGxldCBzel8xNms6IHU2NCA9IFNaXzE2Sy5pbnRvX3Nh ZmVfY2FzdCgpOworICAgIGxldCBzel8zMmtfNGs6IHU2NCA9IChTWl8zMksgKyBTWl80SykuaW50 b19zYWZlX2Nhc3QoKTsKKworICAgIC8vIFB1bmNoIGEgNEsgaG9sZSBhdCBiYXNlKzE2SyBzbyB0 aGUgc3Vic2VxdWVudCAzMksgYWxsb2NhdGlvbiBtdXN0IHNwbGl0LgorICAgIGxldCBfaG9sZSA9 IEtCb3g6OnBpbl9pbml0KAorICAgICAgICBtbS5idWRkeSgpLmFsbG9jX2Jsb2NrcygKKyAgICAg ICAgICAgIEdwdUJ1ZGR5QWxsb2NNb2RlOjpSYW5nZShyYW5nZV9iYXNlICsgc3pfMTZrLi5yYW5n ZV9iYXNlICsgc3pfMTZrICsgc3pfNGspLAorICAgICAgICAgICAgU1pfNEsuaW50b19zYWZlX2Nh c3QoKSwKKyAgICAgICAgICAgIEFsaWdubWVudDo6bmV3Ojo8U1pfNEs+KCksCisgICAgICAgICAg ICBHcHVCdWRkeUFsbG9jRmxhZ3M6OmRlZmF1bHQoKSwKKyAgICAgICAgKSwKKyAgICAgICAgR0ZQ X0tFUk5FTCwKKyAgICApPzsKKworICAgIC8vIEFsbG9jYXRlIDMySyB3aXRoaW4gW2Jhc2UsIGJh c2UrMzZLKS4gVGhlIGhvbGUgZm9yY2VzIHRoZSBhbGxvY2F0b3IgdG8gcmV0dXJuCisgICAgLy8g c3BsaXQgYmxvY2tzIHdob3NlIHNpemVzIGFyZSBkZXRlcm1pbmVkIGJ5IGJ1ZGR5IGFsaWdubWVu dC4KKyAgICBsZXQgYmxvY2tzID0gS0JveDo6cGluX2luaXQoCisgICAgICAgIG1tLmJ1ZGR5KCku YWxsb2NfYmxvY2tzKAorICAgICAgICAgICAgR3B1QnVkZHlBbGxvY01vZGU6OlJhbmdlKHJhbmdl X2Jhc2UuLnJhbmdlX2Jhc2UgKyBzel8zMmtfNGspLAorICAgICAgICAgICAgU1pfMzJLLmludG9f c2FmZV9jYXN0KCksCisgICAgICAgICAgICBBbGlnbm1lbnQ6Om5ldzo6PFNaXzRLPigpLAorICAg ICAgICAgICAgR3B1QnVkZHlBbGxvY0ZsYWdzOjpkZWZhdWx0KCksCisgICAgICAgICksCisgICAg ICAgIEdGUF9LRVJORUwsCisgICAgKT87CisKKyAgICBsZXQgbXV0IHRlc3QzX3Bhc3NlZCA9IHRy dWU7CisgICAgbGV0IG11dCB0b3RhbF9zaXplID0gMHVzaXplOworCisgICAgZm9yIGJsb2NrIGlu IGJsb2Nrcy5pdGVyKCkgeworICAgICAgICB0b3RhbF9zaXplICs9IEludG9TYWZlQ2FzdDo6PHVz aXplPjo6aW50b19zYWZlX2Nhc3QoYmxvY2suc2l6ZSgpKTsKKworICAgICAgICAvLyBNYXAgYWxs IHBhZ2VzIG9mIHRoaXMgYmxvY2suCisgICAgICAgIGxldCBwYWdlX3NpemU6IHU2NCA9IFBBR0Vf U0laRS5pbnRvX3NhZmVfY2FzdCgpOworICAgICAgICBsZXQgbnVtX3BhZ2VzOiB1c2l6ZSA9IChi bG9jay5zaXplKCkgLyBwYWdlX3NpemUpLmludG9fc2FmZV9jYXN0KCk7CisKKyAgICAgICAgbGV0 IG11dCBwZm5zID0gS1ZlYzo6bmV3KCk7CisgICAgICAgIGZvciBqIGluIDAuLm51bV9wYWdlcyB7 CisgICAgICAgICAgICBsZXQgal91NjQ6IHU2NCA9IGouaW50b19zYWZlX2Nhc3QoKTsKKyAgICAg ICAgICAgIHBmbnMucHVzaCgKKyAgICAgICAgICAgICAgICBQZm46OmZyb20oVnJhbUFkZHJlc3M6 Om5ldygKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sub2Zmc2V0KCkgKyBqX3U2NC5jaGVja2Vk X211bChwYWdlX3NpemUpLm9rX29yKEVPVkVSRkxPVyk/LAorICAgICAgICAgICAgICAgICkpLAor ICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsCisgICAgICAgICAgICApPzsKKyAgICAgICAgfQor CisgICAgICAgIGxldCBtYXBwZWQgPSB2bW0ubWFwX3BhZ2VzKG1tLCAmcGZucywgTm9uZSwgdHJ1 ZSk/OworICAgICAgICBsZXQgYmFyMV9iYXNlX3ZmbjogdXNpemUgPSBtYXBwZWQudmZuX3N0YXJ0 LnJhdygpLmludG9fc2FmZV9jYXN0KCk7CisgICAgICAgIGxldCBiYXIxX2Jhc2UgPSBiYXIxX2Jh c2VfdmZuLmNoZWNrZWRfbXVsKFBBR0VfU0laRSkub2tfb3IoRU9WRVJGTE9XKT87CisKKyAgICAg ICAgZm9yIGogaW4gMC4ubnVtX3BhZ2VzIHsKKyAgICAgICAgICAgIGxldCBwYWdlX2JhcjFfb2Zm ID0gYmFyMV9iYXNlICsgaiAqIFBBR0VfU0laRTsKKyAgICAgICAgICAgIGxldCBqX3U2NDogdTY0 ID0gai5pbnRvX3NhZmVfY2FzdCgpOworICAgICAgICAgICAgbGV0IHBhZ2VfcGh5cyA9IGJsb2Nr Lm9mZnNldCgpCisgICAgICAgICAgICAgICAgKyBqX3U2NAorICAgICAgICAgICAgICAgICAgICAu Y2hlY2tlZF9tdWwoUEFHRV9TSVpFLmludG9fc2FmZV9jYXN0KCkpCisgICAgICAgICAgICAgICAg ICAgIC5va19vcihFT1ZFUkZMT1cpPzsKKworICAgICAgICAgICAgYmFyMS50cnlfd3JpdGUzMihQ QVRURVJOX0JBUjEsIHBhZ2VfYmFyMV9vZmYpPzsKKworICAgICAgICAgICAgbGV0IHByYW1pbl92 YWwgPSB7CisgICAgICAgICAgICAgICAgbGV0IG11dCB3aW5kb3cgPSBtbS5wcmFtaW4oKS5nZXRf d2luZG93KCk/OworICAgICAgICAgICAgICAgIHdpbmRvdy50cnlfcmVhZDMyKHBhZ2VfcGh5cy5p bnRvX3NhZmVfY2FzdCgpKT8KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIHByYW1p bl92YWwgIT0gUEFUVEVSTl9CQVIxIHsKKyAgICAgICAgICAgICAgICBkZXZfZXJyISgKKyAgICAg ICAgICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgICAgICAgICAiTU06IFRlc3QgMyBGQUlM RUQgYmxvY2sgb2Zmc2V0IHs6I3h9IHBhZ2Uge30gKHZhbD17OiN4fSlcbiIsCisgICAgICAgICAg ICAgICAgICAgIGJsb2NrLm9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBqLAorICAgICAg ICAgICAgICAgICAgICBwcmFtaW5fdmFsCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICB0ZXN0M19wYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg ICAgICAgIHZtbS51bm1hcF9wYWdlcyhtbSwgbWFwcGVkKT87CisgICAgfQorCisgICAgLy8gVmVy aWZ5IGFnZ3JlZ2F0ZTogYWxsIHJldHVybmVkIGJsb2NrIHNpemVzIG11c3Qgc3VtIHRvIGFsbG9j YXRpb24gc2l6ZS4KKyAgICBpZiB0b3RhbF9zaXplICE9IFNaXzMySyB7CisgICAgICAgIGRldl9l cnIhKAorICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgIk1NOiBUZXN0IDMgRkFJTEVEIC0g dG90YWwgc2l6ZSB7fSAhPSBleHBlY3RlZCB7fVxuIiwKKyAgICAgICAgICAgIHRvdGFsX3NpemUs CisgICAgICAgICAgICBTWl8zMksKKyAgICAgICAgKTsKKyAgICAgICAgdGVzdDNfcGFzc2VkID0g ZmFsc2U7CisgICAgfQorCisgICAgaWYgdGVzdDFfcGFzc2VkICYmIHRlc3QyX3Bhc3NlZCAmJiB0 ZXN0M19wYXNzZWQgeworICAgICAgICBkZXZfaW5mbyEoZGV2LCAiTU06IEFsbCBzZWxmLXRlc3Rz IFBBU1NFRFxuIik7CisgICAgICAgIE9rKCgpKQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9l cnIhKGRldiwgIk1NOiBTZWxmLXRlc3RzIEZBSUxFRFxuIik7CisgICAgICAgIEVycihFSU8pCisg ICAgfQorfQotLSAKMi4zNC4xCgo=