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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 27300C6FA99 for ; Mon, 6 Mar 2023 15:44:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230387AbjCFPob (ORCPT ); Mon, 6 Mar 2023 10:44:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229842AbjCFPo2 (ORCPT ); Mon, 6 Mar 2023 10:44:28 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37D48659E; Mon, 6 Mar 2023 07:43:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1678117438; x=1709653438; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=B+mkbATHozGRW9CJ7BsyEdZyJ1teZvLB5xOhrzcCc80=; b=Fqotx8LnVD980qv9PWB6ae14TWq1gt4m1MA3CoTvvpZSu8F822QcxnJj tCWr+929KVE00qFFuwMq+EqW6OHzCycxWqgScdnoumwwv4nYKB7Qr9PmV NF7xfT30+6uuqXDn223ic9ZkK0emzBBAe+h2er7UQbaZSZ1XAHpvYpVeZ tM06KFjiKUoDcNsIwIWGrcgcALGF2JL3yKi+ptCQ/aus5FunAnRxp54l2 bS8r7ENjEeSmLOtafK6uz0q/XIaJOEabcaXBQi4hxT9nx2EggDS/7Kh51 tMtyYe+ArEfVNbg4vxoysIDdu2msEZNm5VAp7NRBT5NW/Zq75jxBlK/1+ g==; X-IronPort-AV: E=Sophos;i="5.98,238,1673938800"; d="scan'208";a="203863771" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Mar 2023 08:42:58 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex02.mchp-main.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 6 Mar 2023 08:42:57 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 6 Mar 2023 08:42:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NM61+mbCJDXQYUhbBWgyEQx3uUHLVzuuJG4HVpEQ1rRWLME83nXE23S/R6d4mOjOtnyT15PeDUS5sKyX4wKnFowNsOAgYiXaKQLzWzYu7ktAIjWiiZAM0acoSJvSOMWAWtfn0PqxnfVAcd8eFi2uZZnPEhMZ/95mdHZLecOGo8YrWGsKQLFzoNLz5LSem2giPeZn9PQE+nTbl0hjJe2een2PghEQJx7+AmY+J0FvYjpwvRsTcZnKKN34YWREaHrfsgg8lPSXnVC2qc+6LCxKFFbZ/QNuXmRik/QbjjVe3HurNmTm4b8q9FTO9uJlTqw41d61FVgOGSlXvsQP5chK/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B+mkbATHozGRW9CJ7BsyEdZyJ1teZvLB5xOhrzcCc80=; b=Fz70Oh6k806JFw6t12FDNQnzXjJaylwxjYdCAye5Ii/KhvBZTYkmTyR1GTfoH16rplgCQUXCYZDYGkAtwul/5DDgQDGrOk14+YKeO37+gsOm3utzZwR5bpc5oCBhfRA1Lp4K6+0Rudbr1K7YcUDNXMvaF92qS2hVekbK2f6odpjDgTj1T2ylw++RGF4i9ykDGb/I/ADHYOETbBVfhrbL5sMwd0m5db1kW7ZeBZmzg+xq7ZS1sJEPhVT1v8SBy43I/0ycXUlzP/Yjdla6TATLf+AfMiRqHbJBHmUsDtPHy2lyuNDeW1UIPW7L5OhAxY8GNn2T+etU5XQ0tBkCI+1hhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B+mkbATHozGRW9CJ7BsyEdZyJ1teZvLB5xOhrzcCc80=; b=XkXd+rTdMf8FQyBFhNE+Hb+ljRX0wA8IaVyipPa9UdgnX0kiowDwfjeZsPIAgC7DKSr/aWLXqxCD6K/9RXLoHsYbYQWKR+0zunpDm2gTgWgdxBh1V2qAC5R1Fd5ihR7ctLXNvqEvnQ6wM/aR9UZ+YqJ/i1r6tbsTOfFnLpADg/0= Received: from IA1PR11MB6395.namprd11.prod.outlook.com (2603:10b6:208:3ac::14) by CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.25; Mon, 6 Mar 2023 15:42:55 +0000 Received: from IA1PR11MB6395.namprd11.prod.outlook.com ([fe80::bd74:bb77:f00d:7524]) by IA1PR11MB6395.namprd11.prod.outlook.com ([fe80::bd74:bb77:f00d:7524%4]) with mapi id 15.20.6156.028; Mon, 6 Mar 2023 15:42:54 +0000 From: To: CC: , , , , Subject: Re: [PATCH v1 2/2] iio: adc: adding support for pac193x Thread-Topic: [PATCH v1 2/2] iio: adc: adding support for pac193x Thread-Index: AQHZRSeCrijxJxjQlUenEfDaIA7ypK7gE/WAgA3mXIA= Date: Mon, 6 Mar 2023 15:42:54 +0000 Message-ID: <807dc4f8d30f6b20a81e64ef4ae72fb9741e16a3.camel@microchip.com> References: <20230220123232.413029-1-marius.cristea@microchip.com> <20230220123232.413029-3-marius.cristea@microchip.com> <20230225192701.79df7fd0@jic23-huawei> In-Reply-To: <20230225192701.79df7fd0@jic23-huawei> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR11MB6395:EE_|CO1PR11MB4930:EE_ x-ms-office365-filtering-correlation-id: 4ea960df-06f5-4987-9f1c-08db1e5973f0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fgo2D7UlM6Hev/1fXrtd+BSMq2chAIBkqbr5pXKcazRq8DgPu+TK3y2WuSS6JHT+BFqxtlrRXpqr1cJDibqMzyJsvAUsbyUblAeLf35GIq+N+3UQmdOb8/sY22Vl7vQF9yiT3h4j+BdU5yFOgeN3jkH6PL9bxnLUR3pRYmXymEp3ObJ3auREecv+TpsDPnAPG0iz+w8na8vEaUl4MRyehhdPjCHmKVRuHxhABDkDYAK9wxWtTchSFPfBAQxebPwWNX5oVzvy7hXG8W0Paa6UlzaTmoWfIGqPKYG/TdpQ+Z6AEzXAN3FPj9o0i01+0txwBtK2oozHG7mMVB4ytnfTQxZSVhDp4gzjkzGWI9eKBFLFYeYQSE8HNtWb1lqPlkooWi+N//JeKatz6bsDb4Pt9FIcQYIU2x8UKN3/NwxT9xq5tRAaM9l1uoYD+C59BBKxLxTlJWe2LRV3/UtpzG93+pFn5S7BNyxH/kGBfevp7kdjhyWceUzulYLH7UpNjJm44MupUkTk4j+8Im54Hmvszocjq1rRoXEldW+gBGv8TlFCSU9SLb9eKDFRuAs9xIVHMA2d/Cs8kpc++yoEAoHuqao28aPVxP0c5uwq8U4QwsAYWEpSrqdNgvJ9Or7/5fojIjmyqWLYfV4ZoVRtngeOfd8I+CS8XDTKlvEVTnN9EhPJ9P7ExF7st3XmneoDtk2K x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA1PR11MB6395.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(136003)(346002)(376002)(39860400002)(396003)(366004)(451199018)(36756003)(6506007)(186003)(6486002)(966005)(2616005)(26005)(6512007)(6916009)(316002)(4326008)(41300700001)(54906003)(76116006)(66946007)(30864003)(8676002)(66446008)(91956017)(64756008)(66476007)(66556008)(45080400002)(8936002)(5660300002)(71200400001)(478600001)(38100700002)(122000001)(2906002)(38070700005)(86362001)(83380400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MVFna2ZhbkRWaFhUVnRuUTNVMlN1TVpMbjRwck1tUk10WkI5SHZJUVZIRTNq?= =?utf-8?B?Q0RHZys0d0lBQ2xhY25LVGpmeFAxUHZ1OUc0RSs2b0hkKzg0Mmp6eWlITU9K?= =?utf-8?B?akxBbUpjVVA2SFkrQWFSL1dyQitsZlAzNnZ6NDBqa3BGLzNJczk4bVZwRkJ1?= =?utf-8?B?QUVHN3h4bGlJMzhwOElyYjBPV0UrN3lXUENFVm9VQXVmOHV4OXVsQWV6QUxR?= =?utf-8?B?eVNldThwbTR5Q1I2Q3orOTJ5NUkxN0JZcStWQS9zK2RPUDRKbkVQZ1lXYmxs?= =?utf-8?B?aVF3SDZMakVxdFVWUjJCUSs0Y0JUL2pNZlVNUDV5eFdBVlp3VkdMdHp5d1Nm?= =?utf-8?B?VXVzZC9aUlZyaWw0Z1pMR2g0UTRYcnBuUGU1WWxOcDN2eStIdFBqWlBFTkd2?= =?utf-8?B?WGxrTXNsQzR1c0dOM1p2VWRCZy9tMU1BVlpzVDNvWUdvdzhoZ0R0NkZ2ME1C?= =?utf-8?B?ZzdoeDRnQVB0dHYrVXZWeEgvYmZEdENZcnhOaEVYTzBQMVkwZmFhWGdtNXlH?= =?utf-8?B?TDVHUEJ2aSs3aVBodDVpUy81T3graStGYkFoam5mVnVIZWtjc1JISUxRbkZF?= =?utf-8?B?ZUVPN295Z1RuTUQxUTZ3cXYzaHVoakJtckY4YlU3UFFhUStkMTYzMWRlWEtl?= =?utf-8?B?NVFMNkRETlBvblVEdjdhbHZJSnVPMXQyK2R0TVUrQndDbEZIL2FWWmJHVHdY?= =?utf-8?B?bU45ZDJVWFFVK3dMNjdidFpJRmtWc1pjeVZvc0lWU1dCV1pQcFd6Mm1QSGdV?= =?utf-8?B?OVhZYWZDdjRwWmNhaUJtSzJhazM1MXlFTVRteTZpVSt1VmJDOVNaenY0cjVz?= =?utf-8?B?RU83REt3S0JId25LYlU2S3IwOHNHLy80VEV2RkhmeWhSL0dlZStaUE5ZaGJj?= =?utf-8?B?cTZJVXBLeDQyQnN5dFF0RUMxY3VpR1pyRkx3dUlTdDNlZ01yck82WHRSL1FJ?= =?utf-8?B?MzIySU1WamJXcWhLTFkzWlpMRTJldHRxOXJ3b2toVkpTNnU0dTg3YW1oQkE5?= =?utf-8?B?QTRpc3BDVGdTTk9nNUdPSVBQbjNjNUNzZVdZbU5Hbk1HeVV0Q2xvdFFGUVI4?= =?utf-8?B?VGRiTFhvVmxYMEV5OStPNDJiZ1VxNWUzRWN4ODcwVnhEMkVXYU1Xc2ZXMTVa?= =?utf-8?B?OTdNeGtrUC81cDcydjA0UlBWcnZ5aURkNEF3aW9CUVFoeHBrL0lKcmx6WVlJ?= =?utf-8?B?QURjTVRoTTlMajkzRGNsSHoybE4wbzVXTmZUL3hySzkvSVN0ZXo3eDl4UExV?= =?utf-8?B?QkRoUjRKdjhBTWNyMUE2NXpNRWVDZGhzUWNBcmNqNHd4STZMa1B0aXM5Wk8v?= =?utf-8?B?L3JMTUo2VW9oWW1NTFlnaUFJaFI5TWRPL2ZDRGUrb2s4aUZWWGFSMmFrVTRX?= =?utf-8?B?Z0hJMnZhMW5YRVJwMWo2VlRzVTJsakJ4cTVKSkdra3djN0ZUT1A2QTZxNVNV?= =?utf-8?B?S2dtVmhGMUYxWTFHWjBYSnVXV08rc2NyVy9oSHQ2aVhNZVQxM1YzbDljVWU2?= =?utf-8?B?bFg5NEpWQi9PSDU1WUhqZnBLUVpqeE5JSUdvSkVCS0dObXF1QnhRR0YwQ25h?= =?utf-8?B?ait1L0krN3ZPMHVUT2o5eGdCR2xraEQvQ3JMZ1hjZEdmTzFZSFVDczFpK3JY?= =?utf-8?B?Uzg5eEZ0RUtMZHRSRmpMcjlMa2dseWlBckZNWFZyTTI0RllTUE51NUE4Zzky?= =?utf-8?B?R2FMcDR2aktjSThzMHptWDhRRWE1TXNXZFB3OGhWYjR1VlJlRXZaRVp3U0tu?= =?utf-8?B?Qy9XRGVQR3dKTDR5ZmZETk56eFhmQXJhZE1xQ1d0eGJUdkNVc0h4bU54ekox?= =?utf-8?B?bVNnd0xjaWpPc1N0YlAzV01YOWUyMk5XSnkyUnJISjJZNjlwR0NsTUFESVRJ?= =?utf-8?B?TFpuT252bHV1V0o1R0JPSExCNlltMVcvcEpEenlWaWJESDk3TUczdG9xWmVB?= =?utf-8?B?cDJPQUdIMmpYOTl2SEZ4cmNZd21mb01aN0MrbXpYbkp1S2VLN1VuTmMyUmJr?= =?utf-8?B?ak0vakVrU3VnWWMwMHRXQzBDUXNyYncvdlRORWVPenlwTU1aUnBDVHRZZ0la?= =?utf-8?B?OHdqb1VlOG9GSWtOeUNxaXlzZjhkRlJOQk1RbzZ5QjgwMkpEeUZ5QmlHdU5X?= =?utf-8?B?OXIxQmNHREFET25CeVRCczMxdTI2eFcxc3ViK1RmK1llQklXYjhwY3RYdDRI?= =?utf-8?Q?I0HyO1gH9SuqFGtizIQGAGo=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB6395.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ea960df-06f5-4987-9f1c-08db1e5973f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Mar 2023 15:42:54.8660 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7g0KWLhlpr9etGaNtP0+PvBDM4q7ZoYaxFl4h2BtFQZcVje1/Z49gzZl/Bw1JdAEAeiXZXiThvqc4SkSIWjhPZ8Xx9prB+9BsfFU9seBIFo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4930 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgSm9uYXRoYW4sCgogIFBsZWFzZSBzZWUgbXkgY29tbWVudHMgYmVsb3cuIChJIHdpbGwgdGFr ZSBvdXQgc2VjdGlvbiB0aGF0IEkgYWxyZWFkeQphZ3JlZSB3aXRoKToKCgpPbiBTYXQsIDIwMjMt MDItMjUgYXQgMTk6MjcgKzAwMDAsIEpvbmF0aGFuIENhbWVyb24gd3JvdGU6Cj4gCj4gYSByZXBy ZXNlbnRhdGl2ZSBwYXJ0IGZyb20gdGhlIGxpc3QgLSBpZiBubyBvdGhlciBiYXNpcyB0byBjaG9z ZSBnbwo+IHdpdGggdGhlCj4gbG93ZXN0IG51bWJlciBjdXJyZW50bHkgc3VwcG9ydGVkLgo+IAo+ IFRoZSBjdXN0b20gQUJJIGluIGhlcmUgbmVlZHMgZG9jdW1lbnRhdGlvbiBiZWZvcmUgd2UgY2Fu IHJldmlldyBpdAo+IHByb3Blcmx5Lgo+IAoKSSB3aWxsIGNvbW1lbnQgYWxsIG5ldyBBQkkgdGhh dCBJIGhhdmUgYWRkZWQuCgoKPiBDb21tZW50cyBpbmxpbmUuCj4gCj4gSXQncyBhIGJpZyBkcml2 ZXIsIHNvIEknbSBzdXJlIG1vcmUgc3R1ZmYgd2lsbCBjb21lIHVwIG5leHQgcm91bmQKPiBqdXN0 IGR1ZSB0bwo+IG1lbnRhbCBleGhhdXN0aW9uIHJldmlld2luZyBpdCBpbiBvbmUgZ28hCj4gCj4g Cj4gCj4gCj4gCgoKCgo+IAo+IAo+ID4gQklUKElJT19DSEFOX0lORk9fU0FNUF9GUkVRKSzCoMKg wqDCoMKgIFwKPiA+ICvCoMKgwqDCoCAuc2Nhbl9pbmRleCA9Cj4gPiAoX3NpKSzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgIC5zY2Fu X3R5cGUgPQo+ID4ge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zaWduID0KPiA+ ICd1JyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAucmVhbGJpdHMgPQo+ID4gUEFDMTkzWF9QT1dFUl9V X1JFUyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zdG9yYWdlYml0cyA9 Cj4gPiAzMizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAuc2hpZnQgPQo+ID4gNCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5l bmRpYW5uZXNzID0KPiA+IElJT19DUFUswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAr wqDCoMKgwqAKPiA+IH3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IMKgwqDCoMKgIFwKPiA+ICt9Cj4g PiArCj4gPiArI2RlZmluZSBQQUMxOTNYX1NPRlRfVElNRVNUQU1QKF9pbmRleCkKPiA+IHvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgIC50eXBlID0KPiA+IElJT19USU1FU1RBTVAswqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgIC5j aGFubmVsID0gLQo+ID4gMSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXAo+IAo+IFdoYXQgaXMgdGhpcyBmb3I/Cj4gCgogIEkgd2lsbCB0 YWtlIGl0IG91dC4gSW5pdGlhbGx5IEkgd2FudCB0byBoYXZlIGFsc28gImRhdGEgYnVmZmVyaW5n IgppbnRvIHRoZSBkcml2ZXIsIGJ1dCB0aGlzIGZ1bmN0aW9uYWxpdHkgSSB3aWxsIGFkZCBpdCBs YXRlci4gRGF0YQpidWZmZXJpbmcgKGNvbnRhaW5pbmcgdGltZXN0YW1wKSB3aWxsIGJlIHVzZWZ1 bCB3aGVuIHByb2ZpbGluZyBwb3dlcgpjb25zdW1wdGlvbi4KCgoKPiAKPiAKPiAKPiA+ICsKPiA+ ICvCoMKgwqDCoCBsZW4gKz0gc3ByaW50ZihidWYsICIldVxuIiwgY2hpcF9pbmZvLT5zaHVudHNb dGFyZ2V0XSk7Cj4gPiArCj4gPiArwqDCoMKgwqAgcmV0dXJuIGxlbjsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHNzaXplX3QgY2hhbm5lbF9uYW1lX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ IAo+IExvb2tzIGxpa2UgcGVyIGNoYW5uZWwgbGFiZWwgc3VwcG9ydCBwcm92aWRlZCBieSB0aGUg cmVhZF9sYWJlbAo+IGlpb19pbmZvIGNhbGxiYWNrLgo+IAoKSSB3YXMgdHJ5aW5nIHRvIHVzZSB0 aGUgcmVhZF9sYWJlbCBpaW9faW5mbyBjYWxsYmFjayBidXQgSSBlbmQgaXQgdXAKaW50byBhIHN5 c2ZzIGVycm9yIHJlbGF0ZWQgdG8gZHVwbGljYXRlZCBsYWJlbHMuCgpBbHNvIEknbSBub3Qgc3Vy ZSBpZiB0aGlzIHJlYWRfbGFiZWwgd2lsbCBoZWxwIG1lIGluIHRoZSBlbmQuIFdoYXQgSQp3YXMg YWltaW5nIHRvIG9idGFpbiBoZXJlIHdpdGggdGhlICJjaGFubmVsX25hbWVfc2hvdyIgYW5kIHRo ZSBjdXN0b20KSUlPIGF0dHJpYnV0ZSB3YXMgdG8gaGF2ZSAiYW4gdW1icmVsbGEiIG5hbWUvbGFi ZWwgZm9yIG11bHRpcGxlIElJTwpjaGFubmVscy4gRm9yIGV4YW1wbGUgb24gcGh5c2ljYWwgImNo YW5uZWwgMSIgd2Ugd2lsbCBtZWFzdXJlIHRoZQp2b2x0YWdlLCB0aGUgY3VycmVudCBhbmQgdGhl IHBvd2VyIGJlY2F1c2UgYWxsIG9mIHRob3NlIElJTyBjaGFubmVscwp3aWxsIHBvaW50IHRvIG9u ZSBib2FyZCBwb3dlciBzdXBwbHkgKGxpa2UgVkRELCBWSU8sIFZfR1BVLCBWX0REUiwKZXRjKS4K CgoKCgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGFyICpi dWYpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZf dG9faWlvX2RldihkZXYpOwo+ID4gK8KgwqDCoMKgIHN0cnVjdCBwYWMxOTN4X2NoaXBfaW5mbyAq Y2hpcF9pbmZvID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ICvCoMKgwqDCoCBpbnQgbGVuID0g MDsKPiA+ICvCoMKgwqDCoCBpbnQgdGFyZ2V0ID0gKGludCkoYXR0ci0+YXR0ci5uYW1lW3N0cmxl bihhdHRyLT5hdHRyLm5hbWUpIC0KPiA+IDFdIC0gJzAnKSAtIDE7Cj4gPiArCj4gPiArwqDCoMKg wqAgbGVuICs9IHNwcmludGYoYnVmLCAiJXNcbiIsIGNoaXBfaW5mby0KPiA+ID5jaGFubmVsX25h bWVzW3RhcmdldF0pOwo+ID4gKwo+ID4gK8KgwqDCoMKgIHJldHVybiBsZW47Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyBzc2l6ZV90IHNodW50X3ZhbHVlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRl diwKPiAKPiBTaHVudCB2YWx1ZXMgYXJlbid0IG5vcm1hbGx5IGR5bmFtaWMuwqAgV2h5IGRvIHlv dSBuZWVkIHRvIHdyaXRlIGl0Cj4gZnJvbQo+IHVzZXJzcGFjZT8gSSdkIGV4cGVjdCB0aGF0IHRv IGNvbWUgZnJvbSBmaXJtd2FyZS4KPiAKPiBJZiBpdCdzIG5lZWRlZCB0aGUgZXh0X2luZm8gZnJh bWV3b3JrIG1pZ2h0IGJlIGEgYmV0dGVyIGZpdCB0aGFuCj4gZGlyZWN0IGltcGxlbWVudGF0aW9u IG9mIHRoZSBhdHRyaWJ1dGUuCgoKWWVzLCB1c3VhbGx5IHRoZSBzaHVudCBhcmVuJ3Qgbm9ybWFs bHkgZHluYW1pYywgYnV0IHdoYXQgSSdtIGFpbWluZyB0bwpnZXQgaGVyZSBpcyB0byBsZXQgdGhl IHVzZXIgdG8gb3ZlcndyaXRlIHRoZSB2YWx1ZSBhZnRlciBhIGNhbGlicmF0aW9uCm9mIHRoZSBz eXN0ZW0uIFRoaXMgd2lsbCBpbXByb3ZlIHRoZSBhY2N1cmFjeSBvZiB0aGUgcmVhZGluZyBldmVu IGluCnRoZSBjYXNlIHRoZSBzaHVudHMgYXJlIG5vdCBvZiBoaWdoIHByZWNpc2lvbiBvbmVzLgoK Cj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFBB QzE5M1hfVlBPV0VSXzRfQUREUjoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqdmFsID0gY2hpcF9pbmZvLQo+ID4gPmNoaXBfcmVn X2RhdGEudnBvd2VyW2NoYW5uZWxdOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBJSU9fVkFMX0lOVDsKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FSU5WQUw7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBJSU9fRU5FUkdZOgo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChjaGFuLT5hZGRyZXNzKSB7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFBBQzE5 M1hfVlBPV0VSX0FDQ18xX0FERFI6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjYXNlIFBBQzE5M1hfVlBPV0VSX0FDQ18yX0FERFI6Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFBBQzE5M1hfVlBPV0VSX0FDQ18z X0FERFI6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNl IFBBQzE5M1hfVlBPV0VSX0FDQ180X0FERFI6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZXhwcmVzc2VzIHRo ZSA2NCBiaXQgZW5lcmd5IHZhbHVlCj4gPiBhcyBhIDMyIGJpdCBpbnRlZ2VyIHBhcnQgYW5kCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIDMyIGJpdHMgKHJlcHJlc2VudGluZyA4IGRpZ2l0cykKPiA+IGZyYWN0aW9uYWwgdmFs dWUKPiAKPiBJJ20gbG9zdC7CoCBTbyBpdCdzIGEgNjQgYml0IHZhbHVlPwo+IFdlIGhhdmUgSUlP X1ZBTF9JTlRfNjQuIERvZXMgdGhhdCBub3Qgd29yayBoZXJlPwo+IAoKWWVzLCB3ZSBoYXZlIHRo ZSBJSU9fVkFMX0lOVF82NCBhbmQgaXQgd2lsbCB3b3JrIGhlcmUuIFRoZSAiaXNzdWUiIHdhcwp0 aGF0IHRoZSBJSU9fVkFMX0lOVF82NCBpcyBub3QgYXZhaWxhYmxlIGJlZm9yZSBrZXJuZWwgdjYu MCBhbmQgd2UKYWxyZWFkeSByZWxlYXNlIHNvbWV0aGluZyB0byBjdXN0b21lcnMgc3VwcG9ydGlu ZyBMaW51eCBrZXJuZWwgdjQuNyBhbmQKdjUuMTUuIEFsc28gb3VyIGxhdGVzdCByZWxlYXNlIG9m IExpbnV4NFNhbSBpcyBiYXNlZCBvbiB0aGUgTGludXgKa2VybmVsIHY1LjE1ICh3ZSBhcmUgd29y a2luZyB0byBoYXZlIGEgcmVsZWFzZSBiYXNlZCBvbiB2Ni4xKS4KCk1heWJlIEknbSB0b3RhbGx5 IHdyb25nIGhlcmUgYnV0IG15IGlkZWEgd2FzIHRvIGhhdmUgc29tZXRoaW5nICJtb3JlCmdlbmVy aWMiIHRoYXQgY291bGQgYmUgZWFzaWx5IGJhY2twb3J0ZWQgdG8gYW4gb2xkZXIga2VybmVsIGFu ZCB0bwpjaGFuZ2UgdGhpcyB0byBJSU9fVkFMX0lOVF82NCBsYXRlci4gCgoKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3Vycl9lbmVyZ3kgPSBjaGlwX2luZm8tCj4gPiA+Y2hpcF9yZWdfZGF0YS5lbmVyZ3lfc2Vj X2FjY1tjaGFubmVsXTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRfcGFydCA9IGRpdl9zNjRfcmVtKGN1cnJfZW5lcmd5LAo+ ID4gMTAwMDAwMDAwLCAmcmVtKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiByZXNjYWxlIHJlbWluZGVyIHRvIGJl IHByaW50ZWQgYXMKPiA+ICJuYW5vIiB2YWx1ZSAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlbSA9IHJlbSAqIDEwOwo+ID4g Kwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICp2YWwgPSBpbnRfcGFydDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqdmFsMiA9IHJlbTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gSUlP X1ZBTF9JTlRfUExVU19OQU5POwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGVmYXVsdDoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZWZhdWx0Ogo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiArwqDCoMKgwqAgY2FzZSBJSU9fQ0hBTl9JTkZP X0FWRVJBR0VfUkFXOgo+IAo+IEknZCBmb3Jnb3R0ZW4gd2UgaGFkIHRoaXMgQUJJIGFuZCBoYWQg dG8gbG9vayB1cCB0aGUgZG9jcy7CoMKgIEhtbS4KPiBJdCdzIGEgYml0IGNsdW5reSBidXQgSSBn dWVzcwo+IHN0aWxsIHVzZWZ1bCBpbiB0aGlzIGNhc2UuwqAgTG9uZ2VyIHRlcm0gd2Ugc2hvdWxk IHRoaW5rIGFib3V0IGhvdyB0bwo+IGRlc2NyaWJlIHRoYXQgYW5kIGhvdyBpdAo+IGlzIGRpZmZl cmVudCBmcm9tIG92ZXJzYW1wbGluZy4gVGhlIHByb2JsZW0gd2l0aCBvdmVyc2FtcGxpbmcgaXMg aXQKPiBhZmZlY3RzIHRoZSBtYWluIGNoYW5uZWwKPiBzbyB3ZSBjYW4ndCBlYXNpbHkgYXNzb2Np YXRlIGJvdGggYW4gYXZlcmFnZWQgdmFsdWXCoCBhbmQgYSByYXcgb25lCj4gbGlrZSB5b3UgaGF2 ZSBoZXJlLgo+IAo+IEdpdmVuIGxvdHMgb2Ygb3RoZXIgY2hhbmdlcyByZXF1ZXN0ZWQgYW5kIGVh cmx5IGluIHRoaXMga2VybmVsIGN5Y2xlLAo+IHBlcmhhcHMgaXQgd2lsbCBtYWtlIHNlbnNlIHRv IHJldmlzaXQKPiB0aGlzIHF1ZXN0aW9uIGF0IGEgbGF0ZXIgdmVyc2lvbiBvZiB0aGlzIHBhdGNo IChvciBtYXliZSBqdXN0IGxlYXZlCj4gaXQgYWxvbmUgYXMgdG9vIGhhcmQKPiB0byBkbyBiZXR0 ZXIhKQoKCkhlcmUgSSB3YXMgdHJ5aW5nIHRvIG1hcCB0aGUgSUlPIEFCSSB0byB0aGUgUEFDIGlu dGVybmFsIHJlZ2lzdGVycy4gV2UKaGF2ZSBzb21lIGhhcmR3YXJlIHJlZ2lzdGVycyB0aGF0IHdp bGwgZG8gYW4gYXZlcmFnZSBmb3IgdXMuIFVzdWFsbHkKd2l0aCBvdmVyc2FtcGxpbmcgc29tZW9u ZSBjb3VsZCBpbmNyZWFzZSB0aGUgYml0IG51bWJlciBvZiB0aGUKbWVhc3VyZW1lbnQsIHRoZSBh dmVyYWdlIGlzIGp1c3QgdGhlIHN1bSBvZiB0aGUgbnVtYmVycyBkaXZpZGVkIGJ5IGhvdwptYW55 IG51bWJlcnMgYXJlIGFuZCBpdCBjYW4gZWxpbWluYXRlIHNvbWUgbm9pc2Ugb3V0IG9mIHRoZQpt ZWFzdXJlbWVudHMuCgoKSGVyZSB0aGUgZGV2aWNlIGhhcyByZWdpc3RlcnMgdGhhdCB3aWxsIGtl ZXAgdGhlIGN1cnJlbnQgdmFsdWVzIChhbmQKd2lsbCBjYWxjdWxhdGUgdGhlIHBvd2VyIGJhc2Vk IG9uIHRob3NlIHZhbHVlcykgYW5kIGFsc28gc29tZSBhdmVyYWdlCm1lYXN1cmVtZW50cyByZWdp c3RlcnMgKGtlZXBpbmcgdGhlIHNhbWUgcHJlY2lzaW9uKSB0aGF0IGNvdWxkIGhlbHAgdGhlCnVz ZXIgdG8gaWRlbnRpZmllcyB0cmVuZHMuCgoKPiAKCgoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY3RybF9yZWcgPSBQQUMxOTNYX0NSVExfU0FNUExFX1JBVEVfU0VUKGNoaXBfaW5mby0K PiA+ID5jcnRfc2FtcF9zcGRfYml0ZmllbGQpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFBBQzE5M1hfQ0hBTl9BTEVSVF9FTjsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0ID0gcGFjMTkzeF9pMmNfd3JpdGVfYnl0ZShjbGllbnQsCj4gPiBQ QUMxOTNYX0NUUkxfUkVHLCBjdHJsX3JlZyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChyZXQpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRldl9lcnIoJmNsaWVudC0+ZGV2LCAiJXMgLSBjYW4ndCB1cGRhdGUKPiA+IHNhbXBsZSByYXRl XG4iLCBfX2Z1bmNfXyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjaGlwX2luZm8tPnNhbXBsZV9yYXRlX3ZhbHVlID0gb2xkX3NhbXBfcmF0ZTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmY2hp cF9pbmZvLT5sb2NrKTsKPiAKPiBGdW4gdGhpbmcgYWJvdXQgaTJjIGJ1cyB3cml0ZSBmYWlsdXJl cy4gWW91IGhhdmUgbm8gaWRlYSB3aGF0IGZhaWxlZC4KPiBUaGUgdmFsdWUgbWlnaHQgYmUKPiB0 aGUgb2xkIHZhbHVlIG9yIHRoZSBuZXcgb25lIGFmdGVyIHRoZSBmYWlsZWQgd3JpdGUuLi4gU28g bm9ybWFsbHkgd2UKPiBkb24ndCBib3RoZXIgdG9vIG11Y2ggaWYgb3VyIHZhbHVlcyBhcmUKPiBv dXQgb2Ygc3luYy4gYW5kIHRoYXQgbGVhZHMgdG8gZWFzaWVyIHVud2luZGluZy7CoCBIb3dldmVy LCBpZiB5b3UKPiB3YW50IHRvIGtlZXAgdGhpcyBhcyBpdAo+IGlzIHRoZW4gdGhhdCdzIGZpbmUu Cj4gCgoKSSB3b3VsZCBsaWtlIHRvIGtlZXAgaXQsIG1heWJlIHRoZXJlIGFyZSBzb21lIGNvcm5l ciBjYXNlcyB3aGVuIGl0IHdpbGwKaGVscCBkZWJ1Z2dpbmcgKGdvb2QgdG8ga25vdyBpbiBjYXNl IG9mIGludGVybWl0dGVudCBpc3N1ZXMpCgoKPiA+ICtzdGF0aWMgdm9pZCBwYWMxOTN4X3dvcmtf cGVyaW9kaWNfcmZzaChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiArewo+ID4gK8KgwqDC oMKgIHN0cnVjdCBwYWMxOTN4X2NoaXBfaW5mbyAqY2hpcF9pbmZvID0KPiA+IHRvX3BhYzE5M3hf Y2hpcF9pbmZvKHdvcmspOwo+ID4gKwo+ID4gK8KgwqDCoMKgIC8qIGRvIGEgUkVGUkVTSCwgdGhl biByZWFkICovCj4gPiArwqDCoMKgwqAgcGFjMTkzeF9yZWdfc25hcHNob3QoY2hpcF9pbmZvLCB0 cnVlLCBmYWxzZSwKPiA+IFBBQzE5M1hfTUlOX1VQREFURV9XQUlUX1RJTUVfTVMpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwYWMxOTN4X3JlYWRfcmVnX3RpbWVvdXQoc3RydWN0IHRp bWVyX2xpc3QgKnQpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0cnVjdCBwYWMxOTN4X2NoaXBfaW5m byAqY2hpcF9pbmZvID0gZnJvbV90aW1lcihjaGlwX2luZm8sCj4gPiB0LCB0bXJfZm9yY2VkX3Vw ZGF0ZSk7Cj4gPiArCj4gPiArwqDCoMKgwqAgbW9kX3RpbWVyKCZjaGlwX2luZm8tPnRtcl9mb3Jj ZWRfdXBkYXRlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgamlmZmllcyArCj4g PiBtc2Vjc190b19qaWZmaWVzKFBBQzE5M1hfTUFYX1JGU0hfTElNSVRfTVMpKTsKPiA+ICsKPiA+ ICvCoMKgwqDCoCAvKiBzY2hlZHVsZSB0aGUgcGVyaW9kaWMgcmVhZGluZyBmcm9tIHRoZSBjaGlw ICovCj4gPiArwqDCoMKgwqAgcXVldWVfd29yayhjaGlwX2luZm8tPndxX2NoaXAsICZjaGlwX2lu Zm8tPndvcmtfY2hpcF9yZnNoKTsKPiAKPiBXaHkgbm90IHF1ZXVlX2RlbGF5ZWRfd29yaygpPwo+ IAoKCkkgd2lsbCBuZWVkIHRvIGxvb2sgZGVlcGVyLgoKCj4gCj4gCj4gCj4gCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHJldmlzaW9uLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBmdW5jdGlvbikKPiA+ ICt7Cj4gPiArwqDCoMKgwqAgYWNwaV9zdGF0dXMgc3RhdHVzOwo+ID4gK8KgwqDCoMKgIHN0cnVj dCBhY3BpX2J1ZmZlciBidWZmZXIgPSB7QUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEx9Owo+ID4g K8KgwqDCoMKgIHVuaW9uIGFjcGlfb2JqZWN0IGFyZ3NbUEFDMTkzWF9BQ1BJX0FSR19DT1VOVF07 Cj4gPiArwqDCoMKgwqAgc3RydWN0IGFjcGlfb2JqZWN0X2xpc3QgYXJnc19saXN0Owo+ID4gK8Kg wqDCoMKgIHV1aWRfdCB1dWlkOwo+ID4gKwo+ID4gK8KgwqDCoMKgIHV1aWRfcGFyc2UoUEFDMTkz WF9EU01fVVVJRCwgJnV1aWQpOwo+ID4gKwo+ID4gK8KgwqDCoMKgIGFyZ3NbMF0udHlwZSA9IEFD UElfVFlQRV9CVUZGRVI7Cj4gPiArwqDCoMKgwqAgYXJnc1swXS5idWZmZXIubGVuZ3RoID0gc2l6 ZW9mKHN0cnVjdCBwYWMxOTN4X3V1aWRfZm9ybWF0KTsKPiA+ICvCoMKgwqDCoCBhcmdzWzBdLmJ1 ZmZlci5wb2ludGVyID0gKHU4ICopJnV1aWQ7Cj4gPiArCj4gPiArwqDCoMKgwqAgYXJnc1sxXS50 eXBlID0gQUNQSV9UWVBFX0lOVEVHRVI7Cj4gPiArwqDCoMKgwqAgYXJnc1sxXS5pbnRlZ2VyLnZh bHVlID0gcmV2aXNpb247Cj4gPiArCj4gPiArwqDCoMKgwqAgYXJnc1syXS50eXBlID0gQUNQSV9U WVBFX0lOVEVHRVI7Cj4gPiArwqDCoMKgwqAgYXJnc1syXS5pbnRlZ2VyLnZhbHVlID0gZnVuY3Rp b247Cj4gPiArCj4gPiArwqDCoMKgwqAgYXJnc1szXS50eXBlID0gQUNQSV9UWVBFX1BBQ0tBR0U7 Cj4gPiArwqDCoMKgwqAgYXJnc1szXS5wYWNrYWdlLmNvdW50ID0gMDsKPiA+ICsKPiA+ICvCoMKg wqDCoCBhcmdzX2xpc3QuY291bnQgPSBQQUMxOTNYX0FDUElfQVJHX0NPVU5UOwo+ID4gK8KgwqDC oMKgIGFyZ3NfbGlzdC5wb2ludGVyID0gJmFyZ3NbMF07Cj4gPiArCj4gPiArwqDCoMKgwqAgc3Rh dHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCAiX0RTTSIsICZhcmdzX2xpc3QsCj4g PiAmYnVmZmVyKTsKPiA+ICsKPiA+ICvCoMKgwqDCoCBpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykp IHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPiA+ICvCoMKgwqDCoCB9 Cj4gPiArCj4gPiArwqDCoMKgwqAgcmV0dXJuIGJ1ZmZlci5wb2ludGVyOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgY2hhciAqcGFjMTkzeF9hY3BpX2dldF9hY3BpX21hdGNoX2VudHJ5KGFjcGlf aGFuZGxlIGhhbmRsZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgYWNwaV9zdGF0dXMgc3RhdHVzOwo+ ID4gK8KgwqDCoMKgIHVuaW9uIGFjcGlfb2JqZWN0ICpuYW1lX29iamVjdDsKPiA+ICvCoMKgwqDC oCBzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmZmVyID0ge0FDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxM fTsKPiA+ICsKPiA+ICvCoMKgwqDCoCBzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5k bGUsICJfSElEIiwgTlVMTCwgJmJ1ZmZlcik7Cj4gPiArwqDCoMKgwqAgbmFtZV9vYmplY3QgPSBi dWZmZXIucG9pbnRlcjsKPiA+ICsKPiA+ICvCoMKgwqDCoCByZXR1cm4gbmFtZV9vYmplY3QtPnN0 cmluZy5wb2ludGVyOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqcGFjMTkz eF9tYXRjaF9hY3BpX2RldmljZShzdHJ1Y3QgaTJjX2NsaWVudAo+ID4gKmNsaWVudCwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwYWMxOTN4X2NoaXBfaW5mbwo+ID4gKmNo aXBfaW5mbykKPiA+ICt7Cj4gPiArwqDCoMKgwqAgY2hhciAqbmFtZTsKPiA+ICvCoMKgwqDCoCBh Y3BpX2hhbmRsZSBoYW5kbGU7Cj4gPiArwqDCoMKgwqAgdW5pb24gYWNwaV9vYmplY3QgKnJlejsK PiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBzaG9ydCBiaV9kaXJfbWFzazsKPiA+ICvCoMKgwqDCoCBp bnQgaWR4LCBpOwo+ID4gKwo+IAo+IEFueSBkb2NzIGZvciB0aGUgQUNQSSBzdHVmZj8KPiBJdCBs b29rcyBwbGF1c2libGUsIGJ1dCBhbiBleGFtcGxlIERTRFQgYmxvYiB3b3VsZCBtYWtlIGl0IGVh c2llciB0bwo+IHJldmlldy4KPiAKCkhlcmUgd2UgaGF2ZToKaHR0cHM6Ly93dzEubWljcm9jaGlw LmNvbS9kb3dubG9hZHMvYWVtRG9jdW1lbnRzL2RvY3VtZW50cy9PVEgvQXBwbGljYXRpb25Ob3Rl cy9BcHBsaWNhdGlvbk5vdGVzL1BBQzE5M1gtSW50ZWdyYXRpb24tTm90ZXMtZm9yLU1pY3Jvc29m dC1XaW5kb3dzLTEwLWFuZC1XaW5kb3dzLTExLURyaXZlci1TdXBwb3J0LURTMDAwMDI1MzQucGRm CgoKPiAKPiAKPiA+ICvCoMKgwqDCoCAvKgo+ID4gK8KgwqDCoMKgwqAgKiBjb3VudCBob3cgbWFu eSBjaGFubmVscyBhcmUgZW5hYmxlZCBhbmQgc3RvcmUKPiA+ICvCoMKgwqDCoMKgICogdGhpcyBp bmZvcm1hdGlvbiB3aXRoaW4gdGhlIGRyaXZlciBkYXRhCj4gPiArwqDCoMKgwqDCoCAqLwo+ID4g K8KgwqDCoMKgIGNudCA9IDA7Cj4gPiArwqDCoMKgwqAgY2hpcF9pbmZvLT5jaGlwX3JlZ19kYXRh Lm51bV9lbmFibGVkX2NoYW5uZWxzID0gMDsKPiA+ICvCoMKgwqDCoCB3aGlsZSAoY250IDwgY2hp cF9pbmZvLT5waHlzX2NoYW5uZWxzKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChjaGlwX2luZm8tPmFjdGl2ZV9jaGFubmVsc1tjbnRdKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2hpcF9pbmZvLQo+ID4gPmNoaXBfcmVnX2RhdGEubnVt X2VuYWJsZWRfY2hhbm5lbHMrKzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY250Kys7 Cj4gPiArwqDCoMKgwqAgfQo+ID4gKwo+ID4gK8KgwqDCoMKgIC8qCj4gPiArwqDCoMKgwqDCoCAq IHJlYWQgd2hhdGV2ZXIgaW5mb3JtYXRpb24gd2FzIGdhdGhlcmVkIGJlZm9yZSB0aGUgZHJpdmVy Cj4gPiB3YXMgbG9hZGVkCj4gPiArwqDCoMKgwqDCoCAqIGVzdGFibGlzaCB3aGljaCBjaGFubmVs cyBhcmUgZW5hYmxlZC9kaXNhYmxlZCBhbmQgdGhlbgo+ID4gZXN0YWJsaXNoIHRoZQo+ID4gK8Kg wqDCoMKgwqAgKiBpbmZvcm1hdGlvbiByZXRyaWV2YWwgbW9kZSAodXNpbmcgU0tJUCBvciBubyku Cj4gCj4gSXQncyB1bnVzdWFsIHRvIGhhdmUgYSBkcml2ZXIgY2Fycnkgb24gd2l0aCBleGlzdGlu ZyB2YWx1ZXMuwqAgTXVjaAo+IG1vcmUgY29tbW9uCj4gdG8gZWl0aGVyIGhhdmUgaXQgcmVzZXQg dGhlIGRldmljZSAodG8ga25vd24gZGVmYXVsdCBzdGF0ZSkgb3Igd3JpdGUKPiBhbGwgdGhlCj4g cmVnaXN0ZXJzIGlmIHN1Y2ggYSByZXNldCBkb2Vzbid0IGV4aXN0Lgo+IAo+IE9uZSByZWFzb24g Zm9yIHRoYXQgZmxvdyBpcyB0aGF0IHdlIHJlYWxseSBkb24ndCB0cnVzdCBvdGhlciBzb2Z0d2Fy ZQo+IDopCj4gQW5vdGhlciBpcyB0aGF0IG9mdGVuIHdlIGRvbid0IGtub3cgaWYgdGhlIGRldmlj ZSBoYWQgYW55IHBvd2VyIHVudGlsCj4gd2UgdHVybmVkIGl0Cj4gb24uwqAgU28gaXQncyBtdWNo IGVhc2llciB0byByZXZpZXcgY29kZSB3aGVyZSB3ZSBjb250cm9sIGFsbCB0aGUKPiBzdGF0ZS4K PiAKPiBJZiB0aGVyZSBpcyBhIHN0cm9uZyByZWFzb24gZm9yIGNhcnJ5aW5nIG9uIHdpdGggZXhp c3Rpbmcgc2V0dGluZ3MKPiBwbGVhc2UgYWRkCj4gY29tbWVudHMgaGVyZSBhbmQgc29tZXRoaW5n IHRvIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiB0byBwb2ludCBvdXQKPiB0aGlzIHVudXN1YWwKPiBi ZWhhdmlvdXIuCj4gCgpUaGVyZSBhcmUgc29tZSBjdXN0b21lcnMgYXNraW5nIHRvIG1lYXN1cmUg dGhlIHRvdGFsIHBvd2VyIGV4Y2hhbmdlZApmcm9tIHRoZSBwb3dlci11cCBvZiB0aGUgc3lzdGVt IChsaWtlIGlmIHlvdSBhcmUgc3BlbmRpbmcgYSBsb3Qgb2YgdGltZQppbnRvIHRoZSBib290bG9h ZGVyIGFuZCBkcmFpbiB0aGUgYmF0dGVyeSkuCgoKCgo+IAo+IAo+IAo+IAo+ID4gc2h1bnRfdmFs dWVfc3RvcmUsIDApOwo+ID4gK3N0YXRpYyBJSU9fREVWSUNFX0FUVFIoc2h1bnRfdmFsdWVfMiwg MDY0NCwgc2h1bnRfdmFsdWVfc2hvdywKPiA+IHNodW50X3ZhbHVlX3N0b3JlLCAwKTsKPiA+ICtz dGF0aWMgSUlPX0RFVklDRV9BVFRSKHNodW50X3ZhbHVlXzMsIDA2NDQsIHNodW50X3ZhbHVlX3No b3csCj4gPiBzaHVudF92YWx1ZV9zdG9yZSwgMCk7Cj4gPiArc3RhdGljIElJT19ERVZJQ0VfQVRU UihzaHVudF92YWx1ZV80LCAwNjQ0LCBzaHVudF92YWx1ZV9zaG93LAo+ID4gc2h1bnRfdmFsdWVf c3RvcmUsIDApOwo+ID4gKwo+ID4gK3N0YXRpYyBJSU9fREVWSUNFX0FUVFIoY2hhbm5lbF9uYW1l XzEsIDA0NDQsIGNoYW5uZWxfbmFtZV9zaG93LAo+ID4gTlVMTCwgMCk7Cj4gPiArc3RhdGljIElJ T19ERVZJQ0VfQVRUUihjaGFubmVsX25hbWVfMiwgMDQ0NCwgY2hhbm5lbF9uYW1lX3Nob3csCj4g PiBOVUxMLCAwKTsKPiA+ICtzdGF0aWMgSUlPX0RFVklDRV9BVFRSKGNoYW5uZWxfbmFtZV8zLCAw NDQ0LCBjaGFubmVsX25hbWVfc2hvdywKPiA+IE5VTEwsIDApOwo+ID4gK3N0YXRpYyBJSU9fREVW SUNFX0FUVFIoY2hhbm5lbF9uYW1lXzQsIDA0NDQsIGNoYW5uZWxfbmFtZV9zaG93LAo+ID4gTlVM TCwgMCk7Cj4gPiArCj4gPiArc3RhdGljIElJT19ERVZJQ0VfQVRUUihyZXNldF9hY2N1bXVsYXRv cnMsIDAyMDAsIE5VTEwsCj4gPiByZXNldF9hY2N1bXVsYXRvcnNfc3RvcmUsIDApOwo+ID4gKwo+ ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpwYWMxOTN4X2FsbF9hdHRyaWJ1dGVzW10gPSB7 Cj4gPiArwqDCoMKgwqAgUEFDMTkzWF9ERVZfQVRUUihzaHVudF92YWx1ZV8xKSwKPiAKPiBUaGVz ZSBhbGwgbmVlZCBBQkkgZG9jdW1lbnRhdGlvbiBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgcmV2aWV3 IHdoYXQKPiB0aGV5IGRvLgo+IERvY3VtZW5hdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlv LXBhYzE5MzEKPiBOb3RlIHRoYXQgaWYgdGhleSBvdmVybGFwIHdpdGggQUJJIHVzZWQgZWxzZXdo ZXJlIHdlIG1heSBuZWVkIHRvIG1vdmUKPiBpdCB0byBhIG1vcmUKPiBnZW5lcmljIHBsYWNlICh0 aGVyZSBjYW4ndCBiZSB0d28gbG90cyBvZiBkb2NzIGZvciB0aGUgc2FtZSBBQkkKPiBlbGVtZW50 KQo+IAoKSSB3aWxsIGFkZCBjb21tZW50cyBpbnRvIHRoZSBjb2RlLiBUaGUgInNodW50X3ZhbHVl X3Nob3ciIHdpbGwgcHJpbnQKdGhlIHNodW50IHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIGN1cnJl bnQgYW5kIHBvd2VyLgpUaGUgImNoYW5uZWxfbmFtZV9zaG93IiBpcyB0aGUgbmFtZSBvZiB0aGUg ZGV2aWNlIGNoYW5uZWwgdXNlZCB0bwplYXNpbHkgaWRlbnRpZnkgd2hhdCB3ZSBhcmUgbWVhc3Vy aW5nIChWX0REUiwgVl9HUFUsIFZfSU8sIGV0YykgYW5kCml0J3MgYW4gInVtYnJlbGxhIiBmb3Ig bXVsdGlwbGUgSUlPIG1lYXN1cmVtZW50cyAodm9sdGFnZSwgY3VycmVudCBhbmQKcG93ZXIpCgoi cmVzZXRfYWNjdW11bGF0b3JzIiB3aWxsIGhlbHAgdGhlIHVzZXIgdG8gcmVpbml0aWFsaXplIHRo ZSBwb3dlciBvbgphbGwgY2hhbm5lbHMuCgoKPiA+ICvCoMKgwqDCoCBpZiAoIWluZGlvX2Rldikg ewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyX3Byb2JlKCZpbmRpb19kZXYt PmRldiwgUFRSX0VSUihpbmRpb19kZXYpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkNhbid0IGFsbG9jYXRlIGlpbyBkZXZpY2VcbiIp Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPiA+ICvCoMKg wqDCoCB9Cj4gPiArCj4gPiArwqDCoMKgwqAgY2hpcF9pbmZvID0gaWlvX3ByaXYoaW5kaW9fZGV2 KTsKPiA+ICsKPiA+ICvCoMKgwqDCoCBpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBpbmRpb19k ZXYpOwo+IAo+IEFzc3VtaW5nIHlvdSBmb2xsb3cgc3VnZ2VzdGlvbiB0byBnbyBmdWxseSBkZXZt IG1hbmFnZWQgaGFuZGxpbmcgb2YKPiByZW1vdmUsIEkgZG9uJ3QgaHRpbmsKPiB5b3Ugd2lsbCBu ZWVkIHRoaXMuCj4gCj4gPiArwqDCoMKgwqAgY2hpcF9pbmZvLT5jbGllbnQgPSBjbGllbnQ7Cj4g PiArCj4gPiArwqDCoMKgwqAgbWVtc2V0KCZjaGlwX2luZm8tPmNoaXBfcmVnX2RhdGEsIDAsIHNp emVvZihjaGlwX2luZm8tCj4gPiA+Y2hpcF9yZWdfZGF0YSkpOwo+IAo+IFRoZSBpaW9fcHJpdiBz cGFjZSBpcyBhbGxvY2F0ZWQgd2l0aCBremFsbG9jIHNvIG5vIG5lZWQgdG8gemVybyBoZXJlLgo+ IAo+ID4gKwo+ID4gK8KgwqDCoMKgIGlmIChBQ1BJX0hBTkRMRSgmY2xpZW50LT5kZXYpKSB7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhYzE5M3hfZ2V0X3ZhcmlhbnQoY2hpcF9pbmZv KTsKPiAKPiBXaHkgaXMgdGhpcyBBQ1BJIHNwZWNpZmljPwoKTm90IHJlYWxseS4gSSB3aWxsIGNo YW5nZSBpdCB0byB3b3JrIGluIGJvdGggY2FzZXMuCgo+IAo+IElmIHlvdSBjYW4gcXVlcnkgdGhl IHZhcmlhbnQgZnJvbSB0aGUgaGFyZHdhcmUsIHRoYXQgaXMgdGhlIHJpZ2h0Cj4gdGhpbmcgdG8g dXNlCj4gZm9yIGFsbCByZWdpc3RyYXRpb24gdHlwZXMuwqAgSXQgY2FuIGJlIGhlbHBmdWwgdG8g Y2FsbCBvdXQgaWYgdGhlcmUKPiBpcwo+IGEgbWlzbWF0Y2ggdGhvdWdoIHdpdGggYSB3YXJuaW5n IHByaW50LCBzbyBjb21wYXJpbmcgdGhlIHJlc3VsdCBvZgo+IHRoZSBpMmMgY2FsbCB3aXRoIHRo ZSBkYXRhIGlzIGZpbmUuCj4gCj4gPiArwqDCoMKgwqAgfSBlbHNlIHsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZGV2X2lkID0gaWQtPmRyaXZlcl9kYXRhOwo+ID4gKwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBzdG9yZSB0aGUgdHlwZSBvZiBjaGlwICovCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoaXBfaW5mby0+Y2hpcF92YXJpYW50ID0gZGV2X2lkOwo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBnZXQgdGhlIG1heGltdW0gbnVt YmVyIG9mIGNoYW5uZWxzIGZvciB0aGUgZ2l2ZW4KPiA+IGNoaXAgaWQgKi8KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2hpcF9pbmZvLT5waHlzX2NoYW5uZWxzID0KPiA+IHBhYzE5M3hf Y2hpcF9jb25maWdbZGV2X2lkXS5waHlzX2NoYW5uZWxzOwo+ID4gK8KgwqDCoMKgIH0KPiA+ICsK PiA+ICvCoMKgwqDCoCAvKgo+ID4gK8KgwqDCoMKgwqAgKiBsb2FkIGRlZmF1bHQgc2V0dGluZ3Mg LSBhbGwgY2hhbm5lbHMgZGlzYWJsZWQsCj4gPiArwqDCoMKgwqDCoCAqIHVuaSBkaXJlY3Rpb25h bCBmbG93LCBkZWZhdWx0IHNodW50IHZhbHVlcwo+IAo+IFRoZSBjb25jZXB0IG9mIGEgZGVmYXVs dCBzaHVudCB2YWx1ZSBib3RoZXJzIG1lIGEgbGl0dGxlIGlmIHRoaXMgaXMKPiBhbiBleHRlcm5h bCByZXNpc3Rvci7CoCBIb3cgaXMgdGhlcmUgaW4gYW55IHJlYWwgc2Vuc2UgYSBkZWZhdWx0Pwo+ IENhbiB3ZSBqdXN0IGZhaWwgaWYgaXQncyBub3QgcHJvdmlkZWQgLSBvciB3cmFwIHRoZSBkZWZh dWx0IHVwIGZvcgo+IGp1c3QgQUNQSSBjYXNlIHdoZXJlIEkgZ3Vlc3MgdGhlcmUgbWlnaHQgYmUg ZmlybXdhcmUgdGhhdCBkb2Vzbid0Cj4gc3BlY2lmeSBpdD8KCkknbSBkb2luZyBzb21lIG1hdGgg d2l0aCB0aGF0IHJlc2lzdG9yIGxhdGVyIGluIGNvZGUgYW5kIEkgd2FzIGp1c3QKbWFraW5nIHN1 cmUgdGhhdCBJIHdpbGwgbm90IGRpdmlkZSBieSAwLCBidXQgaW5kZWVkIEkgY291bGQganVzdCBl eGl0CmluIGNhc2UgdGhlIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2V0LgoKPiAKClRoYW5rcywK TWFyaXVzCgo=