Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp2053020ybe; Thu, 12 Sep 2019 03:52:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqzxu+VUrUZhUi5MEKyBcjvEfhQulZSzNFeYI24ejww6INIz9C7776+l4MPkNXfRS7EGI7Cp X-Received: by 2002:a05:6402:b11:: with SMTP id bm17mr41192581edb.31.1568285562922; Thu, 12 Sep 2019 03:52:42 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i10si10409879ejc.83.2019.09.12.03.52.18; Thu, 12 Sep 2019 03:52:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=d3mLksyt; dkim=fail header.i=@synopsys.onmicrosoft.com header.s=selector2-synopsys-onmicrosoft-com header.b=A2rxbc9k; arc=fail (signature failed); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731208AbfILKtR (ORCPT + 99 others); Thu, 12 Sep 2019 06:49:17 -0400 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142]:55410 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730470AbfILKtR (ORCPT ); Thu, 12 Sep 2019 06:49:17 -0400 Received: from mailhost.synopsys.com (dc2-mailhost2.synopsys.com [10.12.135.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 7AB70C57F5; Thu, 12 Sep 2019 10:49:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1568285355; bh=E+hLXm2MjNUlAiMJyzCu5La9dzTV3HfJajXNxBeKH/E=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=d3mLksyt8bxFvYcHpgNCfsLaA0vi8UOVJzIBiH8YYXZ21rylLyWIMRCJMfCs9GcOH rk+fz085foMy9c5rHGUnvoIxJcBfuICoZstUIIlO2kThmyAIdD+7aHHIaMPvi5sTpA o+66GUNo1t/ziYwrmaYkhtjMc6wfxhieNZu/ZIz2chv7Fe4/LwPzTRWoXPba1F60qo juolzTMA55IkEFcvWgmlrTtQ1vYBLIi/8BAQVVoAFHYaG6VYZvFfeQSCCUW0HmIaJu iYNqyoetEmMR8g5cA5Z6HmSGpEJxOTNlqHiVS0XFeGj6XAgSKQGsN/iToTm8m8JPNp vk6IRw/BZNXLg== Received: from US01WEHTC2.internal.synopsys.com (us01wehtc2.internal.synopsys.com [10.12.239.237]) (using TLSv1.2 with cipher AES128-SHA256 (128/128 bits)) (No client certificate requested) by mailhost.synopsys.com (Postfix) with ESMTPS id 0B579A0091; Thu, 12 Sep 2019 10:49:13 +0000 (UTC) Received: from US01HYBRID2.internal.synopsys.com (10.15.246.24) by US01WEHTC2.internal.synopsys.com (10.12.239.237) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 12 Sep 2019 03:49:13 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (10.13.134.195) by mrs.synopsys.com (10.15.246.24) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 12 Sep 2019 03:49:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LBSrqXs8C1BxKpeXAhrOdiA/MgeDrEMMitqtZXVvKqkaOqaRyxC2pI3mJxSj+gefdrrM+lMFWMZRkaHtDbTP2gK5M7UyiqUxjQFsuzgf622kPbgvxL6+iayIVmtvu4E+0mAbIo27DtSbnnaJo2j81O2p4CIYQEoEE7a/cz4+OF4TSonm4KpCf4bwaY+AtJERzgrn4/4t5XjUXnMJjbnMAB51TUWFEc3niS742xZoGpnT1UCVTqhO1FC8V7nubBJ+iXyJunoi8INJWJgeHnU9FoW1uZ7nXAbbfVy/i08ke/UzGWKt6/RlxTNs/l8en2eGePUVCH/LDu02Qi/otNCZBQ== 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=E+hLXm2MjNUlAiMJyzCu5La9dzTV3HfJajXNxBeKH/E=; b=Nm7QjnAfPE42Pe04L9Ve4Ae7lyccD3ZGXtMCOW8zCny0Fg/V79mXLIDOom0YA0FVlOOHCY2ZFD47khqX9e3AuVsYfnn22YeahgKd2/w+1UnwtFNJvmopeW2sHZ1DHwSquwxkwkmqkvqol8vql/M4ZJDyT8uE9zrTuPd60I35xwdZaIzxTxlx5iIBNFcEdxZBans/q0rObNoIhq0cDrw3ctkgb6ZOtl65LA2vDl4h7bb1LRiI9HM/Mxaevf7eSOaiRLhjbtqGN1GzsaTDIpvjJpzJnjhQBLNoMogITQXx7tJBnII5o8wD+Q5eaWFhkES8LbK2VEHFYiQLgrvVUEWm0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=synopsys.com; dmarc=pass action=none header.from=synopsys.com; dkim=pass header.d=synopsys.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=synopsys.onmicrosoft.com; s=selector2-synopsys-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E+hLXm2MjNUlAiMJyzCu5La9dzTV3HfJajXNxBeKH/E=; b=A2rxbc9kJb2vfgWnXhfEQ96uOz8Bya8sJKqZ1IABjWsZVb5rsBQEqcT9zy9sNF1s06+8Bu++bE7nWNHPTFRZ0umYG9QRAkCUi6r2yi1GOL1WZuTC3K/3iLEf+6suyIsM2RShmX1wFf66qH4pO0BGQSkpmBIMrZRUdkNWktDnDkc= Received: from DM6PR12MB4010.namprd12.prod.outlook.com (10.255.175.83) by DM6PR12MB3659.namprd12.prod.outlook.com (10.255.76.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.15; Thu, 12 Sep 2019 10:49:11 +0000 Received: from DM6PR12MB4010.namprd12.prod.outlook.com ([fe80::dd4:2e5:e564:8684]) by DM6PR12MB4010.namprd12.prod.outlook.com ([fe80::dd4:2e5:e564:8684%5]) with mapi id 15.20.2263.016; Thu, 12 Sep 2019 10:49:11 +0000 From: Gustavo Pimentel To: Dilip Kota , Andrew Murray , "gustavo.pimentel@synopsys.com" CC: "jingoohan1@gmail.com" , "lorenzo.pieralisi@arm.com" , "robh@kernel.org" , "martin.blumenstingl@googlemail.com" , "linux-pci@vger.kernel.org" , "hch@infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "andriy.shevchenko@intel.com" , "cheol.yong.kim@intel.com" , "chuanhua.lei@linux.intel.com" , "qi-ming.wu@intel.com" Subject: RE: [PATCH v3 2/2] dwc: PCI: intel: Intel PCIe RC controller driver Thread-Topic: [PATCH v3 2/2] dwc: PCI: intel: Intel PCIe RC controller driver Thread-Index: AQHVYwk7IoMGcgls5Eici0FC35/YNKcc5/EAgAGV7oCAAAZOgIAEa6SAgAAcAwCAAYXBgIABwFmAgAFXCYCAABguAIAAEESAgAAIDUA= Date: Thu, 12 Sep 2019 10:49:11 +0000 Message-ID: References: <35316bac59d3bc681e76d33e0345f4ef950c4414.1567585181.git.eswara.kota@linux.intel.com> <20190905104517.GX9720@e119886-lin.cambridge.arm.com> <3a3d040e-e57a-3efd-0337-2c2d0b27ad1a@linux.intel.com> <20190906112044.GF9720@e119886-lin.cambridge.arm.com> <959a5f9b-2646-96e3-6a0f-0af1051ae1cb@linux.intel.com> <20190909083117.GH9720@e119886-lin.cambridge.arm.com> <22857835-1f98-b251-c94b-16b4b0a6dba2@linux.intel.com> <20190911103058.GP9720@e119886-lin.cambridge.arm.com> <20190912082517.GA9720@e119886-lin.cambridge.arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: =?utf-8?B?UEcxbGRHRStQR0YwSUc1dFBTSmliMlI1TG5SNGRDSWdjRDBpWXpwY2RYTmxj?= =?utf-8?B?bk5jWjNWemRHRjJiMXhoY0hCa1lYUmhYSEp2WVcxcGJtZGNNRGxrT0RRNVlq?= =?utf-8?B?WXRNekprTXkwMFlUUXdMVGcxWldVdE5tSTROR0poTWpsbE16VmlYRzF6WjNO?= =?utf-8?B?Y2JYTm5MV1l3TUdFd01URmlMV1ExTkdFdE1URmxPUzA1T0RobUxXWTRPVFJq?= =?utf-8?B?TWpjek9EQTBNbHhoYldVdGRHVnpkRnhtTURCaE1ERXhZeTFrTlRSaExURXha?= =?utf-8?B?VGt0T1RnNFppMW1PRGswWXpJM016Z3dOREppYjJSNUxuUjRkQ0lnYzNvOUlq?= =?utf-8?B?SXhOemM0SWlCMFBTSXhNekl4TWpjMU9EazBPVE00TkRBM01qRWlJR2c5SW5W?= =?utf-8?B?R1drWk5PWGhRYlhSeFZESlhiRGhaVkVOeFZFRXlZMDlUWXowaUlHbGtQU0lp?= =?utf-8?B?SUdKc1BTSXdJaUJpYnowaU1TSWdZMms5SW1OQlFVRkJSVkpJVlRGU1UxSlZS?= =?utf-8?B?azVEWjFWQlFVSlJTa0ZCUWxKSE9Dc3dWakp1VmtGWVFrWjVZbEIxTkdWWU9H?= =?utf-8?B?TkZXRXB6S3pkb05XWjNUMEZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRklRVUZCUVVOclEwRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGRlFVRlJRVUpCUVVGQkwwaHZjMmxSUVVGQlFVRkJRVUZCUVVGQlFVRkJT?= =?utf-8?B?alJCUVVGQ2JVRkhhMEZpWjBKb1FVYzBRVmwzUW14QlJqaEJZMEZDYzBGSFJV?= =?utf-8?B?RmlaMEoxUVVkclFXSm5RbTVCUmpoQlpIZENhRUZJVVVGYVVVSjVRVWN3UVZs?= =?utf-8?B?UlFubEJSM05CUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVWQlFVRkJRVUZCUVVG?= =?utf-8?B?QlowRkJRVUZCUVc1blFVRkJSMWxCWW5kQ01VRkhORUZhUVVKNVFVaHJRVmgz?= =?utf-8?B?UW5kQlIwVkJZMmRDTUVGSE5FRmFVVUo1UVVoTlFWaDNRbTVCUjFsQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRlJR?= =?utf-8?B?VUZCUVVGQlFVRkJRMEZCUVVGQlFVTmxRVUZCUVZwblFuWkJTRlZCWW1kQ2Ew?= =?utf-8?B?RklTVUZsVVVKbVFVaEJRVmxSUW5sQlNGRkJZbWRDYkVGSVNVRmpkMEptUVVo?= =?utf-8?B?TlFWbFJRblJCU0UxQlpGRkNkVUZIWTBGWWQwSnFRVWM0UVdKblFtMUJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZDUVVGQlFVRkJRVUZCUVVsQlFVRkJRVUZLTkVGQlFVSnRRVWM0?= =?utf-8?B?UVdSUlFuVkJSMUZCWTJkQ05VRkdPRUZqUVVKb1FVaEpRV1JCUW5WQlIxVkJZ?= =?utf-8?B?MmRDZWtGR09FRmpkMEpvUVVjd1FXTjNRakZCUnpSQlduZENaa0ZJU1VGYVVV?= =?utf-8?B?SjZRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlJVRkJRVUZCUVVGQlFVRm5RVUZCUVVGQmJt?= =?utf-8?B?ZEJRVUZIV1VGaWQwSXhRVWMwUVZwQlFubEJTR3RCV0hkQ2QwRkhSVUZqWjBJ?= =?utf-8?B?d1FVYzBRVnBSUW5sQlNFMUJXSGRDZWtGSE1FRmhVVUpxUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVkZCUVVGQlFVRkJRVUZE?= =?utf-8?B?UVVGQlFVRkJRMlZCUVVGQldtZENka0ZJVlVGaVowSnJRVWhKUVdWUlFtWkJT?= =?utf-8?B?RUZCV1ZGQ2VVRklVVUZpWjBKc1FVaEpRV04zUW1aQlNFMUJaRUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVKQlFV?= =?utf-8?B?RkJRVUZCUVVGQlNVRkJRVUZCUVVvMFFVRkJRbTFCUnpoQlpGRkNkVUZIVVVG?= =?utf-8?B?alowSTFRVVk0UVdOQlFtaEJTRWxCWkVGQ2RVRkhWVUZqWjBKNlFVWTRRV1JC?= =?utf-8?B?UW5wQlJ6QkJXWGRCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkZRVUZCUVVGQlFVRkJRV2RCUVVGQlFVRnVaMEZCUVVkWlFXSjNR?= =?utf-8?B?akZCUnpSQldrRkNlVUZJYTBGWWQwSjNRVWRGUVdOblFqQkJSelJCV2xGQ2VV?= =?utf-8?B?RklUVUZZZDBJeFFVY3dRVmwzUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCVVVGQlFVRkJRVUZCUVVOQlFVRkJRVUZEWlVG?= =?utf-8?B?QlFVRmFkMEl3UVVoTlFWaDNRbmRCU0VsQlluZENhMEZJVlVGWmQwSXdRVVk0?= =?utf-8?B?UVdSQlFubEJSMFZCWVZGQ2RVRkhhMEZpWjBKdVFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFrRkJRVUZCUVVGQlFVRkpR?= =?utf-8?B?VUZCUVVGQlNqUkJRVUZDZWtGSFJVRmlRVUpzUVVoTlFWaDNRbWhCUjAxQldY?= =?utf-8?B?ZENka0ZJVlVGaVowSXdRVVk0UVdOQlFuTkJSMFZCWW1kQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVVZCUVVG?= =?utf-8?B?QlFVRkJRVUZCWjBGQlFVRkJRVzVuUVVGQlNFMUJXVkZDYzBGSFZVRmpkMEpt?= =?utf-8?B?UVVoRlFXUlJRblpCU0ZGQldsRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGUlFVRkJRVUZCUVVGQlEwRkJRVUZCUVVObFFVRkJRV04zUW5WQlNF?= =?utf-8?B?RkJZM2RDWmtGSGQwRmhVVUpxUVVkVlFXSm5RbnBCUjFWQldIZENNRUZIVlVG?= =?utf-8?B?alowSjBRVVk0UVUxUlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkNRVUZCUVVGQlFVRkJRVWxCUVVGQlFVRktORUZC?= =?utf-8?B?UVVKNlFVYzBRV05CUW5wQlJqaEJZa0ZDY0VGSFRVRmFVVUoxUVVoTlFWcFJR?= =?utf-8?B?bVpCU0ZGQldsRkNlVUZITUVGWWQwSjZRVWhSUVdSUlFtdEJSMVZCWW1kQ01F?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUlVGQlFVRkJRVUZCUVVGblFV?= =?utf-8?B?RkJRVUZCYm1kQlFVRklXVUZhZDBKbVFVZHpRVnBSUWpWQlNHTkJZbmRDZVVG?= =?utf-8?B?SFVVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZC?= =?utf-8?B?UVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJR?= =?utf-8?B?VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV?= =?utf-8?B?RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVG?= =?utf-8?B?QlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFWRkJRVUZC?= =?utf-8?Q?QUFBQUFDQUFBQUFBQT0iLz48L21ldGE+?= authentication-results: spf=none (sender IP is ) smtp.mailfrom=gustavo@synopsys.com; x-originating-ip: [198.182.37.200] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ea9cb7b4-e08c-43db-64b1-08d7376ed877 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:DM6PR12MB3659; x-ms-traffictypediagnostic: DM6PR12MB3659: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:923; x-forefront-prvs: 01583E185C x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(136003)(39850400004)(376002)(396003)(366004)(199004)(189003)(53946003)(66066001)(8936002)(74316002)(9686003)(53546011)(55016002)(305945005)(53936002)(6506007)(102836004)(229853002)(26005)(6436002)(76176011)(478600001)(66476007)(66556008)(64756008)(66446008)(4326008)(76116006)(66946007)(6246003)(52536014)(186003)(33656002)(7736002)(316002)(2906002)(5660300002)(2501003)(8676002)(81156014)(7416002)(110136005)(81166006)(6636002)(30864003)(3846002)(86362001)(6116002)(54906003)(99286004)(7696005)(486006)(256004)(14444005)(11346002)(71200400001)(71190400001)(14454004)(25786009)(446003)(476003)(579004);DIR:OUT;SFP:1102;SCL:1;SRVR:DM6PR12MB3659;H:DM6PR12MB4010.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: synopsys.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: UcZYGm0TNDGJNLjmr+orQuceCQkYsM5a/78JXgSNl7s+pxSnb/nUL3Utf5V+SVfm69JquIUfaAvBU+KnCunm3jZByokU/6YsmM1axrWQov5FealTjCcMAslfhse8yFbVYQpvCg3eZtdxgQFWiqUJscnLMwy61k3GdUL3GnHHvJAiYciEqDMc3hcF1ZDGapChIN5RjTMrDpl1pH9rqrh7pYLf+u6XYmO3VSFGVvsOhk9egB7fjrc0wbImW2HVIbx96qzL4g3XZD0FwIjSTWnUuW12JXYpY24qMXzNtL5yXBNdZyphqdFLr3mf7Y6lvmecFHLfh1tY/lW02YWVp3DDDwUh+LVMzIr5IdJ6PoExNlVl5JT/2yuAGsz4YcCVOwblygQQ+z/tbXQxiwE/u30nGFBMPzRJtH50OF9HooZ25HY= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: ea9cb7b4-e08c-43db-64b1-08d7376ed877 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2019 10:49:11.2528 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c33c9f88-1eb7-4099-9700-16013fd9e8aa X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: INePD9IM3HBrM8dWDoNf6s+JDixni7L85QZwTQyXJo2ImfXhCm/qJ7wsGN/VqcjXDKJ59KgF9nH1JVSIDhB8GQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3659 X-OriginatorOrg: synopsys.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVGh1LCBTZXAgMTIsIDIwMTkgYXQgMTA6MjM6MzEsIERpbGlwIEtvdGEgDQo8ZXN3YXJhLmtv dGFAbGludXguaW50ZWwuY29tPiB3cm90ZToNCg0KPiBRdW90aW5nIEFuZHJldyBNdXJyYXk6DQo+ IFF1b3RpbmcgR3VzdGF2byBQaW1lbnRlbDoNCj4gDQo+IE9uIDkvMTIvMjAxOSA0OjI1IFBNLCBB bmRyZXcgTXVycmF5IHdyb3RlOg0KPiA+IFsuLi5dDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyB2b2lk IGludGVsX3BjaWVfbWF4X2xpbmtfd2lkdGhfc2V0dXAoc3RydWN0IGludGVsX3BjaWVfcG9ydCAq bHBwKQ0KPiA+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwl1MzIgbWFzaywgdmFsOw0KPiA+ Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCS8qIEhXIGF1dG8gYmFuZHdpZHRoIG5lZ290aWF0 aW9uIG11c3QgYmUgZW5hYmxlZCAqLw0KPiA+Pj4+Pj4+Pj4+ICsJcGNpZV9yY19jZmdfd3JfbWFz ayhscHAsIFBDSUVfTENUTFNUU19IV19BV19ESVMsIDAsIFBDSUVfTENUTFNUUyk7DQo+ID4+Pj4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJbWFzayA9IFBDSUVfRElSRUNUX0xJTktfV0lEVEhfQ0hB TkdFIHwgUENJRV9UQVJHRVRfTElOS19XSURUSDsNCj4gPj4+Pj4+Pj4+PiArCXZhbCA9IFBDSUVf RElSRUNUX0xJTktfV0lEVEhfQ0hBTkdFIHwgbHBwLT5sYW5lczsNCj4gPj4+Pj4+Pj4+PiArCXBj aWVfcmNfY2ZnX3dyX21hc2sobHBwLCBtYXNrLCB2YWwsIFBDSUVfTVVMVElfTEFORV9DVFJMKTsN Cj4gPj4+Pj4+Pj4+IElzIHRoaXMgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHdyaXRp bmcgb2YgUENJRV9QT1JUX0xJTktfQ09OVFJPTA0KPiA+Pj4+Pj4+Pj4gaW4gZHdfcGNpZV9zZXR1 cD8NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBJIGFzayBiZWNhdXNlIGlmIHRoZSB1c2VyIHNl dHMgbnVtLWxhbmVzIGluIHRoZSBEVCwgd2lsbCBpdCBoYXZlIHRoZQ0KPiA+Pj4+Pj4+Pj4gZGVz aXJlZCBlZmZlY3Q/DQo+ID4+Pj4+Pj4+IGludGVsX3BjaWVfbWF4X2xpbmtfd2lkdGhfc2V0dXAo KSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBzeXNmcyBhdHRyaWJ1dGUgcGNpZV93aWR0aF9z dG9yZSgpIHRvIGNoYW5nZSBvbiB0aGUgZmx5Lg0KPiA+Pj4+Pj4+IEluZGVlZCwgYnV0IGEgdXNl ciBtYXkgYWxzbyBzZXQgbnVtLWxhbmVzIGluIHRoZSBkZXZpY2UgdHJlZS4gSSdtIHdvbmRlcmlu Zw0KPiA+Pj4+Pj4+IGlmLCB3aGVuIHNldCBpbiBkZXZpY2UtdHJlZSwgaXQgd2lsbCBoYXZlIHRo ZSBkZXNpcmVkIGVmZmVjdC4gQmVjYXVzZSBJIGRvbid0DQo+ID4+Pj4+Pj4gc2VlIGFueXRoaW5n IHNpbWlsYXIgdG8gUENJRV9MQ1RMU1RTX0hXX0FXX0RJUyBpbiBkd19wY2llX3NldHVwIHdoaWNo IGlzIHdoYXQNCj4gPj4+Pj4+PiB5b3VyIGZ1bmN0aW9uIGRvZXMgaGVyZS4NCj4gPj4+Pj4+Pg0K PiA+Pj4+Pj4+IEkgZ3Vlc3MgSSdtIHRyeWluZyB0byBhdm9pZCB0aGUgc3VpdGF0aW9uIHdoZXJl IG51bS1sYW5lcyBkb2Vzbid0IGhhdmUgdGhlDQo+ID4+Pj4+Pj4gZGVzaXJlZCBlZmZlY3QgYW5k IHRoZSBvbmx5IHdheSB0byBzZXQgdGhlIG51bS1sYW5lcyBpcyB0aHJvdWdodCB0aGUgc3lzZnMN Cj4gPj4+Pj4+PiBjb250cm9sLg0KPiA+Pj4+Pj4gSSB3aWxsIGNoZWNrIHRoaXMgYW5kIGdldCBi YWNrIHRvIHlvdS4NCj4gPj4+PiBpbnRlbF9wY2llX21heF9saW5rX3dpZHRoX3NldHVwKCkgaXMg ZG9pbmcgdGhlIGxhbmUgcmVzaXppbmcgd2hpY2ggaXMNCj4gPj4+PiBkaWZmZXJlbnQgZnJvbSB0 aGUgbGluayB1cC9lc3RhYmxpc2htZW50IGhhcHBlbmluZyBkdXJpbmcgcHJvYmUuIEFsc28NCj4g Pj4+PiBQQ0lFX0xDVExTVFNfSFdfQVdfRElTIGRlZmF1bHQgdmFsdWUgaXMgMCBzbyBub3Qgc2V0 dGluZyBkdXJpbmcgdGhlIHByb2JlIG9yDQo+ID4+Pj4gZHdfcGNpZV9zZXR1cC4NCj4gPj4+Pg0K PiA+Pj4+IGludGVsX3BjaWVfbWF4X2xpbmtfd2lkdGhfc2V0dXAoKSBpcyBwcm9ncmFtbWluZyBh cyBwZXIgdGhlIGRlc2lnbndhcmUgUENJZQ0KPiA+Pj4+IGNvbnRyb2xsZXIgZGF0YWJvb2sgaW5z dHJ1Y3Rpb25zIGZvciBsYW5lIHJlc2l6aW5nLg0KPiA+Pj4+DQo+ID4+Pj4gQmVsb3cgbGluZXMg YXJlIGZyb20gRGVzaWdud2FyZSBQQ0llIGRhdGFib29rIGZvciBsYW5lIHJlc2l6aW5nLg0KPiA+ Pj4+DQo+ID4+Pj4gICDCoFByb2dyYW0gdGhlIFRBUkdFVF9MSU5LX1dJRFRIWzU6MF0gZmllbGQg b2YgdGhlIE1VTFRJX0xBTkVfQ09OVFJPTF9PRkYNCj4gPj4+PiByZWdpc3Rlci4NCj4gPj4+PiAg IMKgUHJvZ3JhbSB0aGUgRElSRUNUX0xJTktfV0lEVEhfQ0hBTkdFMiBmaWVsZCBvZiB0aGUgTVVM VElfTEFORV9DT05UUk9MX09GRg0KPiA+Pj4+IHJlZ2lzdGVyLg0KPiA+Pj4+IEl0IGlzIGFzc3Vt ZWQgdGhhdCB0aGUgUENJRV9DQVBfSFdfQVVUT19XSURUSF9ESVNBQkxFIGZpZWxkIGluIHRoZQ0K PiA+Pj4+IExJTktfQ09OVFJPTF9MSU5LX1NUQVRVU19SRUcgcmVnaXN0ZXIgaXMgMC4NCj4gPj4+ IE9LLCBzbyB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBpbml0aWFsIHRyYWluaW5nIGFu ZCB0aGVuIHJlc2l6aW5nDQo+ID4+PiBvZiB0aGUgbGluay4gR2l2ZW4gdGhhdCB0aGlzIGlzIG5v dCBJbnRlbCBzcGVjaWZpYywgc2hvdWxkIHRoaXMgZnVuY3Rpb24NCj4gPj4+IGV4aXN0IHdpdGhp biB0aGUgZGVzaWdud2FyZSBkcml2ZXIgZm9yIHRoZSBiZW5lZml0IG9mIG90aGVycz8NCj4gPj4g SSBhbSBvayB0byBhZGQgaWYgbWFpbnRhaW5lciBhZ3JlZXMgd2l0aCBpdC4NCj4gDQo+IEd1c3Rh dm8gUGltZW50ZWwsDQo+IA0KPiBDb3VsZCB5b3UgcGxlYXNlIGxldCB1cyBrbm93IHlvdXIgb3Bp bmlvbiBvbiB0aGlzLg0KDQpIaSwgSSBqdXN0IHJldHVybiBmcm9tIHBhcmVudGFsIGxlYXZlLCB0 aGVyZWZvcmUgSSBzdGlsbCB0cnlpbmcgdG8gZ2V0IA0KdGhlIHBhY2UgaW4gbWFpbGluZyBsaXN0 IGRpc2N1c3Npb24uDQoNCkhvd2V2ZXIgeW91ciBzdWdnZXN0aW9uIGxvb2tzIGdvb2QsIEkgYWdy ZWUgdGhhdCBjYW4gZ28gaW50byBEZXNpZ25XYXJlIA0KZHJpdmVyIHRvIGJlIGF2YWlsYWJsZSB0 byBhbGwuDQoNCkp1c3QgYSBzbWFsbCByZXF1ZXN0LCBwbGVhc2UgZG8gaW4gZ2VuZXJhbDoNCnMv ZGVzaWdud2FyZS9EZXNpZ25XYXJlDQoNClJlZ2FyZHMsDQpHdXN0YXZvDQoNCj4gDQo+IFsuLi5d DQo+IA0KPiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICtzdGF0 aWMgdm9pZCBpbnRlbF9wY2llX3BvcnRfbG9naWNfc2V0dXAoc3RydWN0IGludGVsX3BjaWVfcG9y dCAqbHBwKQ0KPiA+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwl1MzIgdmFsLCBtYXNrLCBm dHM7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJc3dpdGNoIChscHAtPm1heF9zcGVl ZCkgew0KPiA+Pj4+Pj4+Pj4+ICsJY2FzZSBQQ0lFX0xJTktfU1BFRURfR0VOMToNCj4gPj4+Pj4+ Pj4+PiArCWNhc2UgUENJRV9MSU5LX1NQRUVEX0dFTjI6DQo+ID4+Pj4+Pj4+Pj4gKwkJZnRzID0g UENJRV9BRlJfR0VOMTJfRlRTX05VTV9ERlQ7DQo+ID4+Pj4+Pj4+Pj4gKwkJYnJlYWs7DQo+IFsu Li5dDQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKGRldmljZV9wcm9wZXJ0eV9y ZWFkX3UzMihkZXYsICJtYXgtbGluay1zcGVlZCIsICZscHAtPmxpbmtfZ2VuKSkNCj4gPj4+Pj4+ Pj4+PiArCQlscHAtPmxpbmtfZ2VuID0gMDsgLyogRmFsbGJhY2sgdG8gYXV0byAqLw0KPiA+Pj4+ Pj4+Pj4gSXMgaXQgcG9zc2libGUgdG8gdXNlIG9mX3BjaV9nZXRfbWF4X2xpbmtfc3BlZWQgaGVy ZSBpbnN0ZWFkPw0KPiA+Pj4+Pj4+PiBUaGFua3MgZm9yIHBvaW50aW5nIGl0LiBvZl9wY2lfZ2V0 X21heF9saW5rX3NwZWVkKCkgY2FuIGJlIHVzZWQgaGVyZS4gSSB3aWxsDQo+ID4+Pj4+Pj4+IHVw ZGF0ZSBpdCBpbiB0aGUgbmV4dCBwYXRjaCByZXZpc2lvbi4NCj4gPj4+PiBJIGp1c3QgcmVtZW1i ZXIsIGVhcmxpZXIgd2Ugd2VyZSB1c2luZ8KgIG9mX3BjaV9nZXRfbWF4X2xpbmtfc3BlZWQoKSBp dHNlbGYuDQo+ID4+Pj4gQXMgcGVyIHJldmlld2VyIGNvbW1lbnRzIGNoYW5nZWQgdG8gZGV2aWNl X3Byb3BlcnR5X3JlYWRfdTMyKCkgdG8gbWFpbnRhaW4NCj4gPj4+PiBzeW1tZXRyeSBpbiBwYXJz aW5nIGRldmljZSB0cmVlIHByb3BlcnRpZXMgZnJvbSBkZXZpY2Ugbm9kZS4NCj4gPj4+PiBMZXQg bWUga25vdyB5b3VyIHZpZXcuDQo+ID4+PiBJIGNvdWxkbid0IGZpbmQgYW4gZWFybGllciB2ZXJz aW9uIG9mIHRoaXMgc2VyaWVzIHRoYXQgdXNlZCBvZl9wY2lfZ2V0X21heF9saW5rX3NwZWVkLA0K PiA+Pj4gaGF2ZSBJIG1pc3NlZCBpdCBzb21ld2hlcmU/DQo+ID4+IEl0IGhhcHBlbmVkIGluIG91 ciBpbnRlcm5hbCByZXZpZXcuDQo+ID4+IFdoYXQncyB5b3VyIHN1Z2dlc3Rpb24gcGxlYXNlLCBl aXRoZXIgdG8gZ28gd2l0aCBzeW1tZXRyeSBpbiBwYXJzaW5nDQo+ID4+ICJkZXZpY2VfcHJvcGVy dHlfcmVhZF91MzIoKSIgb3Igd2l0aCBwY2kgaGVscGVyIGZ1bmN0aW9uDQo+ID4+ICJvZl9wY2lf Z2V0X21heF9saW5rX3NwZWVkIj8NCj4gPiBJJ2QgcHJlZmVyIHRoZSBoZWxwZXIsIHRoZSBhZGRl ZCBiZW5lZml0IG9mIHRoaXMgaXMgYWRkaXRpb25hbCBlcnJvciBjaGVja2luZy4NCj4gPiBJdCBh bHNvIG1lYW5zIHVzZXJzIGNhbiBiZSBjb25maWRlbnQgdGhhdCBtYXgtbGluay1zcGVlZCB3aWxs IGJlaGF2ZSBpbiB0aGUNCj4gPiBzYW1lIHdheSBhcyBvdGhlciBob3N0IGNvbnRyb2xsZXJzIHRo YXQgdXNlIHRoaXMgZmllbGQuDQo+IE9rLCBpIHdpbGwgdXBkYXRlIGl0IGluIHRoZSBuZXh0IHBh dGNoIHZlcnNpb24uDQo+IA0KPiANCj4gUmVnYXJkcywNCj4gDQo+IERpbGlwDQo+IA0KPiA+DQo+ ID4gVGhhbmtzLA0KPiA+DQo+ID4gQW5kcmV3IE11cnJheQ0KPiA+DQo+ID4+Pj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+Pj4+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgImFwcCIpOw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKCFyZXMpDQo+ID4+Pj4+ Pj4+Pj4gKwkJcmV0dXJuIC1FTlhJTzsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwls cHAtPmFwcF9iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4gPj4+Pj4+ Pj4+PiArCWlmIChJU19FUlIobHBwLT5hcHBfYmFzZSkpDQo+ID4+Pj4+Pj4+Pj4gKwkJcmV0dXJu IFBUUl9FUlIobHBwLT5hcHBfYmFzZSk7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJ cmV0ID0gaW50ZWxfcGNpZV9lcF9yc3RfaW5pdChscHApOw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKHJl dCkNCj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+Pj4+Pj4+Pj4gR2l2ZW4gdGhhdCB0 aGlzIGlzIGNhbGxlZCBmcm9tIGEgZnVuY3Rpb24gJy4uLl9nZXRfcmVzb3VyY2VzJyBJIGRvbid0 IHRoaW5rDQo+ID4+Pj4+Pj4+PiB3ZSBzaG91bGQgYmUgcmVzZXR0aW5nIGFueXRoaW5nIGhlcmUu DQo+ID4+Pj4+Pj4+IEFncmVlLiBJIHdpbGwgbW92ZSBpdCBvdXQgb2YgZ2V0X3Jlc291cmNlcygp Lg0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCWxwcC0+cGh5ID0gZGV2bV9waHlfZ2V0 KGRldiwgInBjaWVwaHkiKTsNCj4gPj4+Pj4+Pj4+PiArCWlmIChJU19FUlIobHBwLT5waHkpKSB7 DQo+ID4+Pj4+Pj4+Pj4gKwkJcmV0ID0gUFRSX0VSUihscHAtPnBoeSk7DQo+ID4+Pj4+Pj4+Pj4g KwkJaWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQ0KPiA+Pj4+Pj4+Pj4+ICsJCQlkZXZfZXJyKGRl diwgImNvdWxkbid0IGdldCBwY2llLXBoeTogJWRcbiIsIHJldCk7DQo+ID4+Pj4+Pj4+Pj4gKwkJ cmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArCX0NCj4gPj4+Pj4+Pj4+PiArCXJldHVybiAwOw0K PiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICtzdGF0aWMgdm9p ZCBpbnRlbF9wY2llX2RlaW5pdF9waHkoc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwKQ0KPiA+ Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwlwaHlfZXhpdChscHAtPnBoeSk7DQo+ID4+Pj4+ Pj4+Pj4gK30NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyBpbnQgaW50ZWxf cGNpZV93YWl0X2wyKHN0cnVjdCBpbnRlbF9wY2llX3BvcnQgKmxwcCkNCj4gPj4+Pj4+Pj4+PiAr ew0KPiA+Pj4+Pj4+Pj4+ICsJdTMyIHZhbHVlOw0KPiA+Pj4+Pj4+Pj4+ICsJaW50IHJldDsNCj4g Pj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlpZiAobHBwLT5tYXhfc3BlZWQgPCBQQ0lFX0xJ TktfU1BFRURfR0VOMykNCj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gMDsNCj4gPj4+Pj4+Pj4+PiAr DQo+ID4+Pj4+Pj4+Pj4gKwkvKiBTZW5kIFBNRV9UVVJOX09GRiBtZXNzYWdlICovDQo+ID4+Pj4+ Pj4+Pj4gKwlwY2llX2FwcF93cl9tYXNrKGxwcCwgUENJRV9BUFBfTVNHX1hNVF9QTV9UVVJOT0ZG LA0KPiA+Pj4+Pj4+Pj4+ICsJCQkgUENJRV9BUFBfTVNHX1hNVF9QTV9UVVJOT0ZGLCBQQ0lFX0FQ UF9NU0dfQ1IpOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCS8qIFJlYWQgUE1DIHN0 YXR1cyBhbmQgd2FpdCBmb3IgZmFsbGluZyBpbnRvIEwyIGxpbmsgc3RhdGUgKi8NCj4gPj4+Pj4+ Pj4+PiArCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChscHAtPmFwcF9iYXNlICsgUENJRV9BUFBf UE1DLCB2YWx1ZSwNCj4gPj4+Pj4+Pj4+PiArCQkJCSAodmFsdWUgJiBQQ0lFX0FQUF9QTUNfSU5f TDIpLCAyMCwNCj4gPj4+Pj4+Pj4+PiArCQkJCSBqaWZmaWVzX3RvX3VzZWNzKDUgKiBIWikpOw0K PiA+Pj4+Pj4+Pj4+ICsJaWYgKHJldCkNCj4gPj4+Pj4+Pj4+PiArCQlkZXZfZXJyKGxwcC0+cGNp LmRldiwgIlBDSWUgbGluayBlbnRlciBMMiB0aW1lb3V0IVxuIik7DQo+ID4+Pj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+Pj4+ICsJcmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ ICsNCj4gPj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgaW50ZWxfcGNpZV90dXJuX29mZihzdHJ1Y3Qg aW50ZWxfcGNpZV9wb3J0ICpscHApDQo+ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCWlm IChkd19wY2llX2xpbmtfdXAoJmxwcC0+cGNpKSkNCj4gPj4+Pj4+Pj4+PiArCQlpbnRlbF9wY2ll X3dhaXRfbDIobHBwKTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwkvKiBQdXQgRVAg aW4gcmVzZXQgc3RhdGUgKi8NCj4gPj4+Pj4+Pj4+IEVQPw0KPiA+Pj4+Pj4+PiBFbmQgcG9pbnQg ZGV2aWNlLiBJIHdpbGwgdXBkYXRlIGl0Lg0KPiA+Pj4+Pj4+IElzIHRoaXMgbm90IGEgaG9zdCBi cmlkZ2UgY29udHJvbGxlcj8NCj4gPj4+Pj4+IEl0IGlzIFBFUlNUIywgc2lnbmFscyBoYXJkd2Fy ZSByZXNldCB0byB0aGUgRW5kIHBvaW50IC4NCj4gPj4+Pj4+ICAgIMKgwqDCoMKgwqDCoMKgIC8q IFB1dCBFUCBpbiByZXNldCBzdGF0ZSAqLw0KPiA+Pj4+Pj4gICAgwqDCoMKgwqDCoMKgwqAgaW50 ZWxfcGNpZV9kZXZpY2VfcnN0X2Fzc2VydChscHApOw0KPiA+Pj4+PiBPSy4NCj4gPj4+Pj4NCj4g Pj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfZGV2aWNlX3JzdF9hc3NlcnQobHBwKTsNCj4gPj4+Pj4+ Pj4+PiArCXBjaWVfcmNfY2ZnX3dyX21hc2sobHBwLCBQQ0lfQ09NTUFORF9NRU1PUlksIDAsIFBD SV9DT01NQU5EKTsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+ PiArc3RhdGljIGludCBpbnRlbF9wY2llX2hvc3Rfc2V0dXAoc3RydWN0IGludGVsX3BjaWVfcG9y dCAqbHBwKQ0KPiA+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4+ Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfY29yZV9yc3RfYXNzZXJ0KGxwcCk7 DQo+ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX2RldmljZV9yc3RfYXNzZXJ0KGxwcCk7DQo+ID4+ Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJcmV0ID0gcGh5X2luaXQobHBwLT5waHkpOw0KPiA+ Pj4+Pj4+Pj4+ICsJaWYgKHJldCkNCj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+Pj4+ Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfY29yZV9yc3RfZGVhc3NlcnQobHBw KTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUobHBwLT5jb3JlX2Nsayk7DQo+ID4+Pj4+Pj4+Pj4gKwlpZiAocmV0KSB7DQo+ID4+Pj4+Pj4+ Pj4gKwkJZGV2X2VycihscHAtPnBjaS5kZXYsICJDb3JlIGNsb2NrIGVuYWJsZSBmYWlsZWQ6ICVk XG4iLCByZXQpOw0KPiA+Pj4+Pj4+Pj4+ICsJCWdvdG8gY2xrX2VycjsNCj4gPj4+Pj4+Pj4+PiAr CX0NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX3JjX3NldHVwKGxw cCk7DQo+ID4+Pj4+Pj4+Pj4gKwlyZXQgPSBpbnRlbF9wY2llX2FwcF9sb2dpY19zZXR1cChscHAp Ow0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKHJldCkNCj4gPj4+Pj4+Pj4+PiArCQlnb3RvIGFwcF9pbml0 X2VycjsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlyZXQgPSBpbnRlbF9wY2llX3Nl dHVwX2lycShscHApOw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKCFyZXQpDQo+ID4+Pj4+Pj4+Pj4gKwkJ cmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX3R1 cm5fb2ZmKGxwcCk7DQo+ID4+Pj4+Pj4+Pj4gK2FwcF9pbml0X2VycjoNCj4gPj4+Pj4+Pj4+PiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShscHAtPmNvcmVfY2xrKTsNCj4gPj4+Pj4+Pj4+PiArY2xr X2VycjoNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfY29yZV9yc3RfYXNzZXJ0KGxwcCk7DQo+ ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX2RlaW5pdF9waHkobHBwKTsNCj4gPj4+Pj4+Pj4+PiAr CXJldHVybiByZXQ7DQo+ID4+Pj4+Pj4+Pj4gK30NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ Pj4gK3N0YXRpYyBzc2l6ZV90DQo+ID4+Pj4+Pj4+Pj4gK3BjaWVfbGlua19zdGF0dXNfc2hvdyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiA+Pj4+ Pj4+Pj4+ICsJCSAgICAgIGNoYXIgKmJ1ZikNCj4gPj4+Pj4+Pj4+PiArew0KPiA+Pj4+Pj4+Pj4+ ICsJdTMyIHJlZywgd2lkdGgsIGdlbjsNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBpbnRlbF9wY2ll X3BvcnQgKmxwcDsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlscHAgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlyZWcgPSBwY2ll X3JjX2NmZ19yZChscHAsIFBDSUVfTENUTFNUUyk7DQo+ID4+Pj4+Pj4+Pj4gKwl3aWR0aCA9IEZJ RUxEX0dFVChQQ0lFX0xDVExTVFNfTkVHT1RJQVRFRF9MSU5LX1dJRFRILCByZWcpOw0KPiA+Pj4+ Pj4+Pj4+ICsJZ2VuID0gRklFTERfR0VUKFBDSUVfTENUTFNUU19MSU5LX1NQRUVELCByZWcpOw0K PiA+Pj4+Pj4+Pj4+ICsJaWYgKGdlbiA+IGxwcC0+bWF4X3NwZWVkKQ0KPiA+Pj4+Pj4+Pj4+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiBz cHJpbnRmKGJ1ZiwgIlBvcnQgJTJ1IFdpZHRoIHgldSBTcGVlZCAlcyBHVC9zXG4iLCBscHAtPmlk LA0KPiA+Pj4+Pj4+Pj4+ICsJCSAgICAgICB3aWR0aCwgcGNpZV9saW5rX2dlbl90b19zdHIoZ2Vu KSk7DQo+ID4+Pj4+Pj4+Pj4gK30NCj4gPj4+Pj4+Pj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JP KHBjaWVfbGlua19zdGF0dXMpOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArc3RhdGlj IHNzaXplX3QgcGNpZV9zcGVlZF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4+Pj4+Pj4+ Pj4gKwkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4gPj4+Pj4+Pj4+PiArCQkJ CWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikNCj4gPj4+Pj4+Pj4+PiArew0KPiA+Pj4+Pj4+ Pj4+ICsJc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwOw0KPiA+Pj4+Pj4+Pj4+ICsJdW5zaWdu ZWQgbG9uZyB2YWw7DQo+ID4+Pj4+Pj4+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4g Pj4+Pj4+Pj4+PiArCWxwcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+PiArCXJldCA9IGtzdHJ0b3VsKGJ1ZiwgMTAsICZ2YWwpOw0KPiA+Pj4+Pj4+ Pj4+ICsJaWYgKHJldCkNCj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+Pj4+Pj4+Pj4+ ICsNCj4gPj4+Pj4+Pj4+PiArCWlmICh2YWwgPiBscHAtPm1heF9zcGVlZCkNCj4gPj4+Pj4+Pj4+ PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlscHAt PmxpbmtfZ2VuID0gdmFsOw0KPiA+Pj4+Pj4+Pj4+ICsJaW50ZWxfcGNpZV9tYXhfc3BlZWRfc2V0 dXAobHBwKTsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfc3BlZWRfY2hhbmdlX2Rpc2FibGUo bHBwKTsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfc3BlZWRfY2hhbmdlX2VuYWJsZShscHAp Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiBsZW47DQo+ID4+Pj4+Pj4+ Pj4gK30NCj4gPj4+Pj4+Pj4+PiArc3RhdGljIERFVklDRV9BVFRSX1dPKHBjaWVfc3BlZWQpOw0K PiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArLyoNCj4gPj4+Pj4+Pj4+PiArICogTGluayB3 aWR0aCBjaGFuZ2Ugb24gdGhlIGZseSBpcyBub3QgYWx3YXlzIHN1Y2Nlc3NmdWwuDQo+ID4+Pj4+ Pj4+Pj4gKyAqIEl0IGFsc28gZGVwZW5kcyBvbiB0aGUgcGFydG5lci4NCj4gPj4+Pj4+Pj4+PiAr ICovDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyBzc2l6ZV90IHBjaWVfd2lkdGhfc3RvcmUoc3RydWN0 IGRldmljZSAqZGV2LA0KPiA+Pj4+Pj4+Pj4+ICsJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsDQo+ID4+Pj4+Pj4+Pj4gKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pDQo+ ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBpbnRlbF9wY2llX3BvcnQgKmxw cDsNCj4gPj4+Pj4+Pj4+PiArCXVuc2lnbmVkIGxvbmcgdmFsOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4g Pj4+Pj4+Pj4+PiArCWxwcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+PiArCWlmIChrc3RydG91bChidWYsIDEwLCAmdmFsKSkNCj4gPj4+Pj4+Pj4+ PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlpZiAo dmFsID4gbHBwLT5tYXhfd2lkdGgpDQo+ID4+Pj4+Pj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJbHBwLT5sYW5lcyA9IHZhbDsNCj4gPj4+Pj4+ Pj4+PiArCWludGVsX3BjaWVfbWF4X2xpbmtfd2lkdGhfc2V0dXAobHBwKTsNCj4gPj4+Pj4+Pj4+ PiArDQo+ID4+Pj4+Pj4+Pj4gKwlyZXR1cm4gbGVuOw0KPiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+ Pj4+Pj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9XTyhwY2llX3dpZHRoKTsNCj4gPj4+Pj4+Pj4+IFlv dSBtZW50aW9uZWQgdGhhdCBhIHVzZS1jYXNlIGZvciBjaGFuZ2luZyB3aWR0aC9zcGVlZCBvbiB0 aGUgZmx5IHdhcyB0bw0KPiA+Pj4+Pj4+Pj4gY29udHJvbCBwb3dlciBjb25zdW1wdGlvbiAoYW5k IHRoaXMgYWxzbyBoZWxwcyBkZWJ1Z2dpbmcgaXNzdWVzKS4gQXMgSQ0KPiA+Pj4+Pj4+Pj4gdW5k ZXJzdGFuZCB0aGVyZSBpcyBubyBjdXJyZW50IHN1cHBvcnQgZm9yIHRoaXMgaW4gdGhlIGtlcm5l bCAtIHlldCBpdCBpcw0KPiA+Pj4+Pj4+Pj4gc29tZXRoaW5nIHRoYXQgd291bGQgcHJvdmlkZSB2 YWx1ZS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBJIGhhdmVuJ3QgbG9va2VkIGluIG11Y2gg ZGV0YWlsLCBob3dldmVyIGFzIEkgdW5kZXJzdGFuZCB0aGUgUENJIHNwZWMNCj4gPj4+Pj4+Pj4+ IGFsbG93cyBhbiB1cHN0cmVhbSBwYXJ0bmVyIHRvIGNoYW5nZSB0aGUgbGluayBzcGVlZCBhbmQg cmV0cmFpbi4gKEknbSBub3QNCj4gPj4+Pj4+Pj4+IHN1cmUgYWJvdXQgbGluayB3aWR0aCkuIEdp dmVuIHRoYXQgd2UgYWxyZWFkeSBoYXZlDQo+ID4+Pj4+Pj4+PiBbY3VycmVudCxtYXhdX2xpbmtf W3NwZWVkLHdpZHRoXSBpcyBzeXNmcyBmb3IgZWFjaCBQQ0kgZGV2aWNlLCBpdCB3b3VsZA0KPiA+ Pj4+Pj4+Pj4gc2VlbSBuYXR1cmFsIHRvIGV4dGVuZCB0aGlzIHRvIGFsbG93IGZvciB3cml0aW5n IGEgbWF4IHdpZHRoIG9yIHNwZWVkLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFNvIGlkZWFs bHkgdGhpcyB0eXBlIG9mIHRoaW5nIHdvdWxkIGJlIG1vdmVkIHRvIHRoZSBjb3JlIG9yIGF0IGxl YXN0IGluDQo+ID4+Pj4+Pj4+PiB0aGUgZHdjIGRyaXZlci4gVGhpcyB3YXkgdGhlIGJlbmVmaXRz IGNhbiBiZSBhcHBsaWVkIHRvIG1vcmUgZGV2aWNlcyBvbg0KPiA+Pj4+Pj4+Pj4gbGFyZ2VyIFBD SSBmYWJyaWNzIC0gVGhvdWdoIHBlcmhhcHMgb3RoZXJzIGhlcmUgd2lsbCBoYXZlIGEgZGlmZmVy ZW50IHZpZXcNCj4gPj4+Pj4+Pj4+IGFuZCBJJ20ga2VlbiB0byBoZWFyIHRoZW0uDQo+ID4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSSdtIGtlZW4gdG8gbGltaXQgdGhlIGRpZmZlcmVuY2VzIGJldHdl ZW4gdGhlIERXQyBjb250cm9sbGVyIGRyaXZlcnMgYW5kDQo+ID4+Pj4+Pj4+PiB1bmlmeSBjb21t b24gY29kZSAtIHRodXMgaXQgd291bGQgYmUgaGVscGZ1bCB0byBoYXZlIGEganVzdGlmaWNhdGlv biBhcyB0bw0KPiA+Pj4+Pj4+Pj4gd2h5IHRoaXMgaXMgb25seSByZWxldmFudCBmb3IgdGhpcyBj b250cm9sbGVyLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEZvciB1c2VyLXNwYWNlIG9ubHkg Y29udHJvbCwgaXQgaXMgcG9zc2libGUgdG8gYWNoaWV2ZSB3aGF0IHlvdSBoYXZlIGhlcmUNCj4g Pj4+Pj4+Pj4+IHdpdGggdXNlcnNwYWNlIHV0aWxpdGllcyAoc29tZXRoaW5nIGxpa2Ugc2V0cGNp KSAoYXNzdW1pbmcgdGhlIHN0YW5kYXJkDQo+ID4+Pj4+Pj4+PiBsb29raW5nIHJlZ2lzdGVycyB5 b3UgY3VycmVudGx5IGFjY2VzcyBhcmUgZXhwb3NlZCBpbiB0aGUgbm9ybWFsIGNvbmZpZw0KPiA+ Pj4+Pj4+Pj4gc3BhY2Ugd2F5IC0gdGhvdWdoIFBDSWUgY2FwYWJpbGl0aWVzKS4NCj4gPj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+PiBNeSBzdWdnZXN0aW9uIHdvdWxkIGJlIHRvIGRyb3AgdGhlc2UgY2hh bmdlcyBhbmQgbGF0ZXIgYWRkIHNvbWV0aGluZyB0aGF0DQo+ID4+Pj4+Pj4+PiBjYW4gYmVuZWZp dCBtb3JlIGRldmljZXMuIEluIGFueSBjYXNlIGlmIHRoZXNlIGNoYW5nZXMgc3RheSB3aXRoaW4g dGhpcw0KPiA+Pj4+Pj4+Pj4gZHJpdmVyIHRoZW4gaXQgd291bGQgYmUgaGVscGZ1bCB0byBtb3Zl IHRoZW0gdG8gYSBzZXBhcmF0ZSBwYXRjaC4NCj4gPj4+Pj4+Pj4gU3VyZSwgaSB3aWxsIHN1Ym1p dCB0aGVzZSBlbnRpdHkgaW4gc2VwYXJhdGUgcGF0Y2guDQo+ID4+Pj4+Pj4gUGxlYXNlIGVuc3Vy ZSB0aGF0IGFsbCBzdXBwb3J0aW5nIG1hY3JvcywgZnVuY3Rpb25zIGFuZCBkZWZpbmVzIGdvIHdp dGggdGhhdA0KPiA+Pj4+Pj4+IG90aGVyIHBhdGNoIGFzIHdlbGwgcGxlYXNlLg0KPiA+Pj4+Pj4g U3VyZS4NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICpwY2llX2NmZ19hdHRyc1tdID0gew0KPiA+Pj4+Pj4+Pj4+ICsJJmRldl9hdHRyX3BjaWVf bGlua19zdGF0dXMuYXR0ciwNCj4gPj4+Pj4+Pj4+PiArCSZkZXZfYXR0cl9wY2llX3NwZWVkLmF0 dHIsDQo+ID4+Pj4+Pj4+Pj4gKwkmZGV2X2F0dHJfcGNpZV93aWR0aC5hdHRyLA0KPiA+Pj4+Pj4+ Pj4+ICsJTlVMTCwNCj4gPj4+Pj4+Pj4+PiArfTsNCj4gPj4+Pj4+Pj4+PiArQVRUUklCVVRFX0dS T1VQUyhwY2llX2NmZyk7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICtzdGF0aWMgaW50 IGludGVsX3BjaWVfc3lzZnNfaW5pdChzdHJ1Y3QgaW50ZWxfcGNpZV9wb3J0ICpscHApDQo+ID4+ Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiBkZXZtX2RldmljZV9hZGRfZ3JvdXBz KGxwcC0+cGNpLmRldiwgcGNpZV9jZmdfZ3JvdXBzKTsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+ Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgX19pbnRlbF9wY2llX3JlbW92ZShz dHJ1Y3QgaW50ZWxfcGNpZV9wb3J0ICpscHApDQo+ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+ PiArCXBjaWVfcmNfY2ZnX3dyX21hc2sobHBwLCBQQ0lfQ09NTUFORF9NRU1PUlkgfCBQQ0lfQ09N TUFORF9NQVNURVIsDQo+ID4+Pj4+Pj4+Pj4gKwkJCSAgICAwLCBQQ0lfQ09NTUFORCk7DQo+ID4+ Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX2NvcmVfaXJxX2Rpc2FibGUobHBwKTsNCj4gPj4+Pj4+Pj4+ PiArCWludGVsX3BjaWVfdHVybl9vZmYobHBwKTsNCj4gPj4+Pj4+Pj4+PiArCWNsa19kaXNhYmxl X3VucHJlcGFyZShscHAtPmNvcmVfY2xrKTsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfY29y ZV9yc3RfYXNzZXJ0KGxwcCk7DQo+ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX2RlaW5pdF9waHko bHBwKTsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArc3Rh dGljIGludCBpbnRlbF9wY2llX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiA+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfcGNpZV9wb3J0ICps cHAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBw Y2llX3BvcnQgKnBwID0gJmxwcC0+cGNpLnBwOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+ PiArCWR3X3BjaWVfaG9zdF9kZWluaXQocHApOw0KPiA+Pj4+Pj4+Pj4+ICsJX19pbnRlbF9wY2ll X3JlbW92ZShscHApOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiAwOw0K PiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICtzdGF0aWMgaW50 IF9fbWF5YmVfdW51c2VkIGludGVsX3BjaWVfc3VzcGVuZF9ub2lycShzdHJ1Y3QgZGV2aWNlICpk ZXYpDQo+ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBpbnRlbF9wY2llX3Bv cnQgKmxwcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+Pj4+Pj4+Pj4+ICsJaW50IHJldDsN Cj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gKwlpbnRlbF9wY2llX2NvcmVfaXJxX2Rpc2Fi bGUobHBwKTsNCj4gPj4+Pj4+Pj4+PiArCXJldCA9IGludGVsX3BjaWVfd2FpdF9sMihscHApOw0K PiA+Pj4+Pj4+Pj4+ICsJaWYgKHJldCkNCj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+ Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCWludGVsX3BjaWVfZGVpbml0X3BoeShscHApOw0K PiA+Pj4+Pj4+Pj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGxwcC0+Y29yZV9jbGspOw0KPiA+ Pj4+Pj4+Pj4+ICsJcmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+PiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpbnRlbF9wY2llX3Jlc3Vt ZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+ PiArCXN0cnVjdCBpbnRlbF9wY2llX3BvcnQgKmxwcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0K PiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiBpbnRlbF9wY2llX2hvc3Rfc2V0 dXAobHBwKTsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiAr c3RhdGljIGludCBpbnRlbF9wY2llX3JjX2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHApDQo+ID4+ Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19w Y2llX2Zyb21fcHAocHApOw0KPiA+Pj4+Pj4+Pj4+ICsJc3RydWN0IGludGVsX3BjaWVfcG9ydCAq bHBwID0gZGV2X2dldF9kcnZkYXRhKHBjaS0+ZGV2KTsNCj4gPj4+Pj4+Pj4+PiArCWludCByZXQ7 DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJLyogUkMvaG9zdCBpbml0aWFsaXphdGlv biAqLw0KPiA+Pj4+Pj4+Pj4+ICsJcmV0ID0gaW50ZWxfcGNpZV9ob3N0X3NldHVwKGxwcCk7DQo+ ID4+Pj4+Pj4+Pj4gKwlpZiAocmV0KQ0KPiA+Pj4+Pj4+Pj4+ICsJCXJldHVybiByZXQ7DQo+ID4+ Pj4+Pj4+PiBJbnNlcnQgbmV3IGxpbmUgaGVyZS4NCj4gPj4+Pj4+Pj4gT2suDQo+ID4+Pj4+Pj4+ Pj4gKwlyZXQgPSBpbnRlbF9wY2llX3N5c2ZzX2luaXQobHBwKTsNCj4gPj4+Pj4+Pj4+PiArCWlm IChyZXQpDQo+ID4+Pj4+Pj4+Pj4gKwkJX19pbnRlbF9wY2llX3JlbW92ZShscHApOw0KPiA+Pj4+ Pj4+Pj4+ICsJcmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+Pj4+ICsNCj4g Pj4+Pj4+Pj4+PiAraW50IGludGVsX3BjaWVfbXNpX2luaXQoc3RydWN0IHBjaWVfcG9ydCAqcHAp DQo+ID4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0 b19kd19wY2llX2Zyb21fcHAocHApOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArCWRl dl9kYmcocGNpLT5kZXYsICJQQ0llIE1TSS9NU0l4IGlzIGhhbmRsZWQgYnkgTVNJIGluIHg4NiBw cm9jZXNzb3JcbiIpOw0KPiA+Pj4+Pj4+Pj4gV2hhdCBhYm91dCBvdGhlciBwcm9jZXNzb3JzPyAo Tm90aW5nIHRoYXQgdGhpcyBkcml2ZXIgZG9lc24ndCBkZXBlbmQgb24NCj4gPj4+Pj4+Pj4+IGFu eSBzcGVjaWZpYyBBUkNIIGluIHRoZSBLQ29uZmlnKS4NCj4gPj4+Pj4+Pj4gQWdyZWUuIGkgd2ls bCBtYXJrIHRoZSBkZXBlbmRlbmN5IGluIEtjb25maWcuDQo+ID4+Pj4+Pj4gT0ssIHBsZWFzZSBh bHNvIHNlZSBob3cgb3RoZXIgZHJpdmVycyB1c2UgdGhlIENPTVBJTEVfVEVTVCBLY29uZmlnIG9w dGlvbi4NCj4gPj4+Pj4+IE9rIHN1cmUuDQo+ID4+Pj4+Pj4gSSdkIHN1Z2dlc3QgdGhhdCB0aGUg ZGV2X2RiZyBqdXN0IGJlY29tZXMgYSBjb2RlIGNvbW1lbnQuDQo+ID4+Pj4gT2sNCj4gPj4+Pj4+ Pj4+PiArCXJldHVybiAwOw0KPiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+ Pj4+Pj4+ICt1NjQgaW50ZWxfcGNpZV9jcHVfYWRkcihzdHJ1Y3QgZHdfcGNpZSAqcGNpZSwgdTY0 IGNwdV9hZGRyKQ0KPiA+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4gKwlyZXR1cm4gY3B1X2Fk ZHIgKyBCVVNfSUFUVV9PRkZTOw0KPiA+Pj4+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR3X3BjaWVfb3BzIGludGVsX3BjaWVfb3Bz ID0gew0KPiA+Pj4+Pj4+Pj4+ICsJLmNwdV9hZGRyX2ZpeHVwID0gaW50ZWxfcGNpZV9jcHVfYWRk ciwNCj4gPj4+Pj4+Pj4+PiArfTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9ob3N0X29wcyBpbnRlbF9wY2llX2R3X29wcyA9IHsNCj4g Pj4+Pj4+Pj4+PiArCS5ob3N0X2luaXQgPQkJaW50ZWxfcGNpZV9yY19pbml0LA0KPiA+Pj4+Pj4+ Pj4+ICsJLm1zaV9ob3N0X2luaXQgPQlpbnRlbF9wY2llX21zaV9pbml0LA0KPiA+Pj4+Pj4+Pj4+ ICt9Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBp bnRlbF9wY2llX3NvYyBwY2llX2RhdGEgPSB7DQo+ID4+Pj4+Pj4+Pj4gKwkucGNpZV92ZXIgPQkJ MHg1MjBBLA0KPiA+Pj4+Pj4+Pj4+ICsJLnBjaWVfYXR1X29mZnNldCA9CTB4QzAwMDAsDQo+ID4+ Pj4+Pj4+Pj4gKwkubnVtX3ZpZXdwb3J0ID0JCTMsDQo+ID4+Pj4+Pj4+Pj4gK307DQo+ID4+Pj4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICtzdGF0aWMgaW50IGludGVsX3BjaWVfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPj4+Pj4+Pj4+PiArew0KPiA+Pj4+Pj4+Pj4+ICsJ Y29uc3Qgc3RydWN0IGludGVsX3BjaWVfc29jICpkYXRhOw0KPiA+Pj4+Pj4+Pj4+ICsJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBpbnRlbF9w Y2llX3BvcnQgKmxwcDsNCj4gPj4+Pj4+Pj4+PiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiA+ Pj4+Pj4+Pj4+ICsJc3RydWN0IGR3X3BjaWUgKnBjaTsNCj4gPj4+Pj4+Pj4+PiArCWludCByZXQ7 DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJbHBwID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCpscHApLCBHRlBfS0VSTkVMKTsNCj4gPj4+Pj4+Pj4+PiArCWlmICghbHBwKQ0KPiA+ Pj4+Pj4+Pj4+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+ PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGxwcCk7DQo+ID4+Pj4+Pj4+Pj4gKwlwY2kg PSAmbHBwLT5wY2k7DQo+ID4+Pj4+Pj4+Pj4gKwlwY2ktPmRldiA9IGRldjsNCj4gPj4+Pj4+Pj4+ PiArCXBwID0gJnBjaS0+cHA7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJcmV0ID0g aW50ZWxfcGNpZV9nZXRfcmVzb3VyY2VzKHBkZXYpOw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKHJldCkN Cj4gPj4+Pj4+Pj4+PiArCQlyZXR1cm4gcmV0Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+ PiArCWRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gPj4+Pj4+Pj4+PiArCXBj aS0+b3BzID0gJmludGVsX3BjaWVfb3BzOw0KPiA+Pj4+Pj4+Pj4+ICsJcGNpLT52ZXJzaW9uID0g ZGF0YS0+cGNpZV92ZXI7DQo+ID4+Pj4+Pj4+Pj4gKwlwY2ktPmF0dV9iYXNlID0gcGNpLT5kYmlf YmFzZSArIGRhdGEtPnBjaWVfYXR1X29mZnNldDsNCj4gPj4+Pj4+Pj4+PiArCXBwLT5vcHMgPSAm aW50ZWxfcGNpZV9kd19vcHM7DQo+ID4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ICsJcmV0ID0g ZHdfcGNpZV9ob3N0X2luaXQocHApOw0KPiA+Pj4+Pj4+Pj4+ICsJaWYgKHJldCkgew0KPiA+Pj4+ Pj4+Pj4+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGluaXRpYWxpemUgaG9zdFxuIik7DQo+ID4+ Pj4+Pj4+Pj4gKwkJcmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4+PiArCX0NCj4gPj4+Pj4+Pj4+IEFk ZCBhIG5ldyBsaW5lIGFmdGVyIHRoZSBjbG9zaW5nIGJyYWNlLg0KPiA+Pj4+Pj4+PiBPaw0KPiA+ Pj4+Pj4+Pj4+ICsJLyogSW50ZWwgUENJZSBkb2Vzbid0IGNvbmZpZ3VyZSBJTyByZWdpb24sIHNv IGNvbmZpZ3VyZQ0KPiA+Pj4+Pj4+Pj4+ICsJICogdmlld3BvcnQgdG8gbm90IHRvIGFjY2VzcyBJ TyByZWdpb24gZHVyaW5nIHJlZ2lzdGVyDQo+ID4+Pj4+Pj4+Pj4gKwkgKiByZWFkIHdyaXRlIG9w ZXJhdGlvbnMuDQo+ID4+Pj4+Pj4+Pj4gKwkgKi8NCj4gPj4+Pj4+Pj4+PiArCXBjaS0+bnVtX3Zp ZXdwb3J0ID0gZGF0YS0+bnVtX3ZpZXdwb3J0Ow0KPiA+Pj4+Pj4+Pj4+ICsJZGV2X2luZm8oZGV2 LA0KPiA+Pj4+Pj4+Pj4+ICsJCSAiSW50ZWwgQVhJIFBDSWUgUm9vdCBDb21wbGV4IFBvcnQgJWQg SW5pdCBEb25lXG4iLCBscHAtPmlkKTsNCj4gPj4+Pj4+Pj4+PiArCXJldHVybiByZXQ7DQo+ID4+ Pj4+Pj4+Pj4gK30NCj4gPj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyBpbnRlbF9wY2llX3BtX29wcyA9IHsNCj4gPj4+Pj4+Pj4+PiArCVNF VF9OT0lSUV9TWVNURU1fU0xFRVBfUE1fT1BTKGludGVsX3BjaWVfc3VzcGVuZF9ub2lycSwNCj4g Pj4+Pj4+Pj4+PiArCQkJCSAgICAgIGludGVsX3BjaWVfcmVzdW1lX25vaXJxKQ0KPiA+Pj4+Pj4+ Pj4+ICt9Ow0KPiA+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgb2ZfaW50ZWxfcGNpZV9tYXRjaFtdID0gew0KPiA+Pj4+Pj4+Pj4+ICsJ eyAuY29tcGF0aWJsZSA9ICJpbnRlbCxsZ20tcGNpZSIsIC5kYXRhID0gJnBjaWVfZGF0YSB9LA0K PiA+Pj4+Pj4+Pj4+ICsJe30NCj4gPj4+Pj4+Pj4+PiArfTsNCj4gPj4+Pj4+Pj4+PiArDQo+ID4+ Pj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX3BjaWVfZHJpdmVy ID0gew0KPiA+Pj4+Pj4+Pj4+ICsJLnByb2JlID0gaW50ZWxfcGNpZV9wcm9iZSwNCj4gPj4+Pj4+ Pj4+PiArCS5yZW1vdmUgPSBpbnRlbF9wY2llX3JlbW92ZSwNCj4gPj4+Pj4+Pj4+PiArCS5kcml2 ZXIgPSB7DQo+ID4+Pj4+Pj4+Pj4gKwkJLm5hbWUgPSAiaW50ZWwtbGdtLXBjaWUiLA0KPiA+Pj4+ Pj4+Pj4gSXMgdGhlcmUgYSByZWFzb24gd2h5IHRoZSB3ZSB1c2UgaW50ZWwtbGdtLXBjaWUgaGVy ZSBhbmQgcGNpZS1pbnRlbC1heGkNCj4gPj4+Pj4+Pj4+IGVsc2V3aGVyZT8gV2hhdCBkb2VzIGxn bSBtZWFuPw0KPiA+Pj4+Pj4+PiBsZ20gaXMgdGhlIG5hbWUgb2YgaW50ZWwgU29DLsKgIEkgd2ls bCBuYW1lIGl0IHRvIHBjaWUtaW50ZWwtYXhpIHRvIGJlDQo+ID4+Pj4+Pj4+IGdlbmVyaWMuDQo+ ID4+Pj4+Pj4gSSdtIGtlZW4gdG8gZW5zdXJlIHRoYXQgaXQgaXMgY29uc2lzdGVudGx5IG5hbWVk LiBJJ3ZlIHNlZW4gb3RoZXIgY29tbWVudHMNCj4gPj4+Pj4+PiByZWdhcmRpbmcgd2hhdCB0aGUg bmFtZSBzaG91bGQgYmUgLSBJIGRvbid0IGhhdmUgYSBzdHJvbmcgb3BpbmlvbiB0aG91Z2gNCj4g Pj4+Pj4+PiBJIGRvIHRoaW5rIHRoYXQgKi1heGkgbWF5IGJlIHRvbyBnZW5lcmljLg0KPiA+Pj4+ IFRoaXMgUENJZSBkcml2ZXIgaXMgZm9yIHRoZSBJbnRlbCBHYXRld2F5IFNvQ3MuIFNvIGhvdyBh Ym91dCBuYW1pbmcgaXQgaXMgYXMNCj4gPj4+PiAicGNpZS1pbnRlbC1ndyI7IHBjaWUtaW50ZWwt Z3cuYyBhbmQgS2NvbmZpZyBhcyBQQ0lFX0lOVEVMX0dXLg0KPiA+Pj4gSSBkb24ndCBoYXZlIGEg cHJvYmxlbSB3aXRoIHRoaXMsIHRob3VnaCBvdGhlcnMgbWF5IGhhdmUgZGlmZmVyaW5nIHZpZXdz Lg0KPiA+PiBTdXJlLiB0aGFuayB5b3UuDQo+ID4+PiBUaGFua3MsDQo+ID4+Pg0KPiA+Pj4gQW5k cmV3IE11cnJheQ0KPiA+Pj4NCj4gPj4+PiBSZWdhcmRzLA0KPiA+Pj4+IERpbGlwDQo+ID4+Pj4N Cj4gPj4+Pj4+IE9rLCBpIHdpbGwgY2hlY2sgYW5kIGdldCBiYWNrIHRvIHlvdSBvbiB0aGlzLg0K PiA+Pj4+Pj4gUmVnYXJkcywNCj4gPj4+Pj4gVGhhbmtzLA0KPiA+Pj4+Pg0KPiA+Pj4+PiBBbmRy ZXcgTXVycmF5DQo+ID4+Pj4+DQo+ID4+Pj4+PiBEaWxpcA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+PiBU aGFua3MsDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBBbmRyZXcgTXVycmF5DQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+IFRoYW5rcywNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBBbmRyZXcgTXVycmF5 DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG9mX2ludGVs X3BjaWVfbWF0Y2gsDQo+ID4+Pj4+Pj4+Pj4gKwkJLnBtID0gJmludGVsX3BjaWVfcG1fb3BzLA0K PiA+Pj4+Pj4+Pj4+ICsJfSwNCj4gPj4+Pj4+Pj4+PiArfTsNCj4gPj4+Pj4+Pj4+PiArYnVpbHRp bl9wbGF0Zm9ybV9kcml2ZXIoaW50ZWxfcGNpZV9kcml2ZXIpOw0KPiA+Pj4+Pj4+Pj4+IC0tIA0K PiA+Pj4+Pj4+Pj4+IDIuMTEuMA0KPiA+Pj4+Pj4+Pj4+DQoNCg0K