Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3877927pxf; Mon, 22 Mar 2021 18:33:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtjLZygyrEWvEnMGMwGPpi6ch3AHujp+Rwtz8bgTtMXow6OggJnPUgxjd4E08bbu2FQnSj X-Received: by 2002:a17:906:8308:: with SMTP id j8mr2357663ejx.339.1616463198889; Mon, 22 Mar 2021 18:33:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616463198; cv=none; d=google.com; s=arc-20160816; b=HqT33J9A799Lc5FUW2q7miD7/Jr0mIrK5I1OcwcncpGumza6xfy7a73Ru4w8XIlCie goWtXwhjxWv6mVvVaSWU6lhHnyHqb22C883zM76E/+6Yr2yzGDXw+brwbawcnhtFCgiB 0UzQsNhO+9OtyEQK9c9HJ1eVYg4bwgiDFjPN86kNhnIvtMPD0Y2kv3RxyhzqQBqVJZbr o/LkQyuTyTgh/ElQGk5yL3TCBaG4qIbqirW35EAeb5HdjPhHiQu85FTcGUzwsjs+LZeq sZjYzI2jy7dyotrHmY8ERpBVAUuwrPoNyrKh6YznpFghW3w4QsvuEXlCyY08d2E36ZOk Bokw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=D3MRch+3HHADWdZuuqMVGoczUEZ3xqM2Qrv9spq4h+A=; b=ch8OuNkPqRxR3AJ6DrEYdW7i2dLo07YkInxhu4jt2g/tLGwos1Gf2eVfqoEn9Bs6V7 kulZM7WL9FLfdoL88afydwPMOLL2Mb4505QktSP9TzlMwGccwT0CRB0JolcDedH28Rhh aFMwa1ROeD2mNdBRS1Xiv3DGeXxBlSwZzrAH1pgtMNLKVlt4rJbhf9pJQDlH9D9iHb0v iLoHpeZXNl7vLl2temERb4I5ZAVkNN82t7QWq6DslQ3fyHmk0e/GB6HxFrlZloSywx4Z nq56Y1q5IT2nTwa00chYysYgPPfiJIMcaf/wd81BrlyNiJMrVw79UVxJszb0nvF5TPM/ +dvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=TdilqhQK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v18si12601735ejy.223.2021.03.22.18.32.56; Mon, 22 Mar 2021 18:33:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=TdilqhQK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231483AbhCWBb5 (ORCPT + 99 others); Mon, 22 Mar 2021 21:31:57 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:64402 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S231475AbhCWBbr (ORCPT ); Mon, 22 Mar 2021 21:31:47 -0400 X-UUID: 215e10f20cde42318b5bce1b75b11a8f-20210323 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=D3MRch+3HHADWdZuuqMVGoczUEZ3xqM2Qrv9spq4h+A=; b=TdilqhQK0XAJYsKDDAuj9pV7hZPI85K1Ch18pO0PakJXg1N+lcCXYevGvIqWijav+z+ruXo+TtE2ybx8Xofa+818OGSz4kdf28XY+Z9y1D3UKsXHIDCaQM8564yJ5M/iq179jXiae/DcYREJZtj4Hh4hdCaFTnoB8BmlMDENGiQ=; X-UUID: 215e10f20cde42318b5bce1b75b11a8f-20210323 Received: from mtkcas34.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 892500371; Tue, 23 Mar 2021 09:31:38 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 23 Mar 2021 09:31:35 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 23 Mar 2021 09:31:35 +0800 Message-ID: <1616463094.25961.8.camel@mhfsdcap03> Subject: Re: [v8,3/7] PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192 From: Jianjun Wang To: Pali =?ISO-8859-1?Q?Roh=E1r?= CC: Bjorn Helgaas , Rob Herring , , Lorenzo Pieralisi , Ryder Lee , Philipp Zabel , "Matthias Brugger" , , , , , , "Sj Huang" , , , , , , , Date: Tue, 23 Mar 2021 09:31:34 +0800 In-Reply-To: <20210319185341.nyxmo7nwii5fzsxc@pali> References: <20210224061132.26526-1-jianjun.wang@mediatek.com> <20210224061132.26526-4-jianjun.wang@mediatek.com> <20210311123844.qzl264ungtk7b6xz@pali> <1615621394.25662.70.camel@mhfsdcap03> <20210318000211.ykjsfavfc7suu2sb@pali> <1616046487.31760.16.camel@mhfsdcap03> <20210319185341.nyxmo7nwii5fzsxc@pali> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 91D249D8BDDFA4ED928831934E57E932E6934767DAD82CC7D4C4E939375283C22000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gRnJpLCAyMDIxLTAzLTE5IGF0IDE5OjUzICswMTAwLCBQYWxpIFJvaMOhciB3cm90ZToNCj4g T24gVGh1cnNkYXkgMTggTWFyY2ggMjAyMSAxMzo0ODowNyBKaWFuanVuIFdhbmcgd3JvdGU6DQo+ ID4gT24gVGh1LCAyMDIxLTAzLTE4IGF0IDAxOjAyICswMTAwLCBQYWxpIFJvaMOhciB3cm90ZToN Cj4gPiA+IE9uIFNhdHVyZGF5IDEzIE1hcmNoIDIwMjEgMTU6NDM6MTQgSmlhbmp1biBXYW5nIHdy b3RlOg0KPiA+ID4gPiBPbiBUaHUsIDIwMjEtMDMtMTEgYXQgMTM6MzggKzAxMDAsIFBhbGkgUm9o w6FyIHdyb3RlOg0KPiA+ID4gPiA+IE9uIFdlZG5lc2RheSAyNCBGZWJydWFyeSAyMDIxIDE0OjEx OjI4IEppYW5qdW4gV2FuZyB3cm90ZToNCj4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IG10a19wY2ll X3N0YXJ0dXBfcG9ydChzdHJ1Y3QgbXRrX3BjaWVfcG9ydCAqcG9ydCkNCj4gPiA+ID4gPiA+ICt7 DQo+ID4gPiA+ID4gLi4uDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCS8qIERlbGF5IDEw MG1zIHRvIHdhaXQgdGhlIHJlZmVyZW5jZSBjbG9ja3MgYmVjb21lIHN0YWJsZSAqLw0KPiA+ID4g PiA+ID4gKwltc2xlZXAoMTAwKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJLyogRGUt YXNzZXJ0IFBFUlNUIyBzaWduYWwgKi8NCj4gPiA+ID4gPiA+ICsJdmFsICY9IH5QQ0lFX1BFX1JT VEI7DQo+ID4gPiA+ID4gPiArCXdyaXRlbF9yZWxheGVkKHZhbCwgcG9ydC0+YmFzZSArIFBDSUVf UlNUX0NUUkxfUkVHKTsNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBIZWxsbyEgVGhpcyBpcyBhIG5l dyBkcml2ZXIgd2hpY2ggaW50cm9kdWNlIHlldCBhbm90aGVyIGN1c3RvbSB0aW1lb3V0DQo+ID4g PiA+ID4gcHJpb3IgUEVSU1QjIHNpZ25hbCBmb3IgUENJZSBjYXJkIGlzIGRlLWFzc2VydGVkLiBU aW1lb3V0cyBmb3Igb3RoZXINCj4gPiA+ID4gPiBkcml2ZXJzIEkgY29sbGVjdGVkIGluIG9sZGVy IGVtYWlsIFsyXS4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBQbGVhc2UgbG9vayBhdCBteSBlbWFp bCBbMV0gYWJvdXQgUENJZSBXYXJtIFJlc2V0IGlmIHlvdSBoYXZlIGFueSBjbHVlDQo+ID4gPiA+ ID4gYWJvdXQgaXQuIExvcmVuem8gYW5kIFJvYiBhbHJlYWR5IGV4cHJlc3NlZCB0aGF0IHRoaXMg dGltZW91dCBzaG91bGQgbm90DQo+ID4gPiA+ID4gYmUgZHJpdmVyIHNwZWNpZmljLiBCdXQgbm9i b2R5IHdhcyBhYmxlIHRvICJkZWNvZGUiIGFuZCAidW5kZXJzdGFuZCINCj4gPiA+ID4gPiBQQ0ll IHNwZWMgeWV0IGFib3V0IHRoZXNlIHRpbWVvdXRzLg0KPiA+ID4gPiANCj4gPiA+ID4gSGkgUGFs aSwNCj4gPiA+ID4gDQo+ID4gPiA+IEkgdGhpbmsgdGhpcyBpcyBtb3JlIGxpa2UgYSBwbGF0Zm9y bSBzcGVjaWZpYyB0aW1lb3V0LCB3aGljaCBpcyB1c2VkIHRvDQo+ID4gPiA+IHdhaXQgZm9yIHRo ZSByZWZlcmVuY2UgY2xvY2tzIHRvIGJlY29tZSBzdGFibGUgYW5kIGZpbmlzaCB0aGUgcmVzZXQg Zmxvdw0KPiA+ID4gPiBvZiBIVyBibG9ja3MuDQo+ID4gPiA+IA0KPiA+ID4gPiBIZXJlIGlzIHRo ZSBzdGVwcyB0byBzdGFydCBhIGxpbmsgdHJhaW5pbmcgaW4gdGhpcyBIVzoNCj4gPiA+ID4gDQo+ ID4gPiA+IDEuIEFzc2VydCBhbGwgcmVzZXQgc2lnbmFscyB3aGljaCBpbmNsdWRpbmcgdGhlIHRy YW5zYWN0aW9uIGxheWVyLCBQSVBFDQo+ID4gPiA+IGludGVyZmFjZSBhbmQgaW50ZXJuYWwgYnVz IGludGVyZmFjZTsNCj4gPiA+ID4gDQo+ID4gPiA+IDIuIERlLWFzc2VydCByZXNldCBzaWduYWxz IGV4Y2VwdCB0aGUgUEVSU1QjLCB0aGlzIHdpbGwgbWFrZSB0aGUNCj4gPiA+ID4gcGh5c2ljYWwg bGF5ZXIgYWN0aXZlIGFuZCBzdGFydCB0byBvdXRwdXQgdGhlIHJlZmVyZW5jZSBjbG9jaywgYnV0 IHRoZQ0KPiA+ID4gPiBFUCBkZXZpY2UgcmVtYWlucyBpbiB0aGUgcmVzZXQgc3RhdGUuDQo+ID4g PiA+ICAgIEJlZm9yZSByZWxlYXNpbmcgdGhlIFBFUlNUIyBzaWduYWwsIHRoZSBIVyBibG9ja3Mg bmVlZHMgYXQgbGVhc3QgMTBtcw0KPiA+ID4gPiB0byBmaW5pc2ggdGhlIHJlc2V0IGZsb3csIGFu ZCByZWYtY2xrIG5lZWRzIGFib3V0IDMwdXMgdG8gYmVjb21lIHN0YWJsZS4NCj4gPiA+ID4gDQo+ ID4gPiA+IDMuIERlLWFzc2VydCBQRVJTVCMgc2lnbmFsLCB3YWl0IExUU1NNIGVudGVyIEwwIHN0 YXRlLg0KPiA+ID4gPiANCj4gPiA+ID4gVGhpcyAxMDBtcyB0aW1lb3V0IGlzIHJlZmVyZW5jZSB0 byBUUFZQRVJMIGluIHRoZSBQQ0llIENFTSBzcGVjLiBTaW5jZQ0KPiA+ID4gPiB3ZSBhcmUgaW4g dGhlIGtlcm5lbCBzdGFnZSwgdGhlIHBvd2VyIHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGVkLCB0 aGlzDQo+ID4gPiA+IHRpbWVvdXQgbWF5IG5vdCB0YWtlIHRoYXQgbG9uZy4NCj4gPiA+IA0KPiA+ ID4gSSB0aGluayB0aGF0IHRoaXMgaXMgbm90IHBsYXRmb3JtIHNwZWNpZmljIHRpbWVvdXQgb3Ig cGxhdGZvcm0gc3BlY2lmaWMNCj4gPiA+IHN0ZXBzLiBUaGlzIG1hdGNoZXMgZ2VuZXJpYyBzdGVw cyBhcyBkZWZpbmVkIGluIFBDSWUgQ0VNIHNwZWMsIHNlY3Rpb24NCj4gPiA+IDIuMi4xLiBJbml0 aWFsIFBvd2VyLVVwIChHMyB0byBTMCkuDQo+ID4gPiANCj4gPiA+IFdoYXQgaXMgcGxhdGZvcm0g c3BlY2lmaWMgaXMganVzdCBob3cgdG8gYWNoaWV2ZSB0aGVzZSBzdGVwcy4NCj4gPiA+IA0KPiA+ ID4gQW0gSSByaWdodD8NCj4gPiA+IA0KPiA+ID4gLi4uDQo+ID4gPiANCj4gPiA+IFRQVlBFUkwg aXMgb25lIG9mIG15IHRpbWVvdXQgY2FuZGlkYXRlcyBhcyBtaW5pbWFsIHJlcXVpcmVkIHRpbWVv dXQgZm9yDQo+ID4gPiBXYXJtIFJlc2V0LiBJIGhhdmUgd3JvdGUgaXQgaW4gZW1haWw6DQo+ID4g PiANCj4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBjaS8yMDIwMDQzMDA4MjI0 NS54Ymx2Yjd4ZWFtbTRlMzM2QHBhbGkvDQo+ID4gPiANCj4gPiA+IEJ1dCBJJ20gbm90IHN1cmUg YXMgc3BlY2lhbGx5IGluIG5vbmUgZGlhZ3JhbSBpcyBkZXNjcmliZWQganVzdCB3YXJtDQo+ID4g PiByZXNldCBhcyBkZWZpbmVkIGluIG1QQ0llIENFTSAoMy4yLjQuMy4gUEVSU1QjIFNpZ25hbCku DQo+ID4gPiANCj4gPiA+IC4uLg0KPiA+ID4gDQo+ID4gPiBBbnl3YXksIEkgd291bGQgc3VnZ2Vz dCB0byBkZWZpbmUgY29uc3RhbnRzIGZvciB0aG9zZSB0aW1lb3V0cy4gSSBndWVzcw0KPiA+ID4g dGhhdCBpbiBmdXR1cmUgd2UgY291bGQgYmUgYWJsZSB0byBkZWZpbmUgImdlbmVyaWMiIHRpbWVv dXQgY29uc3RhbnRzDQo+ID4gPiB3aGljaCB3b3VsZCBub3QgYmUgaW4gcHJpdmF0ZSBkcml2ZXIg c2VjdGlvbiwgYnV0IGluIHNvbWUgY29tbW9uIGhlYWRlcg0KPiA+ID4gZmlsZS4NCj4gPiANCj4g PiBJIGFncmVlIHdpdGggdGhpcywgYnV0IEknbSBub3Qgc3VyZSBpZiB3ZSByZWFsbHkgbmVlZCB0 aGF0IGxvbmcgdGltZSBpbg0KPiA+IHRoZSBrZXJuZWwgc3RhZ2UsIGJlY2F1c2UgdGhlIHBvd2Vy IHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGUgYW5kIGl0J3MNCj4gPiByZWFsbHkgaW1wYWN0IHRo ZSBib290IHRpbWUsIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGxhdGZvcm0gaGF2ZSBtdWx0aQ0KPiA+ IHBvcnRzIGFuZCBub3QgY29ubmVjdCBhbnkgRVAgZGV2aWNlLCB3ZSBuZWVkIHRvIHdhaXQgMjAw bXMgZm9yIGVhY2ggcG9ydA0KPiA+IHdoZW4gc3lzdGVtIGJvb3R1cC4NCj4gDQo+IFBvcnRzIGFy ZSBpbmRlcGVuZGVudC4gU28geW91IGNhbiBpbml0aWFsaXplIHRoZW0gaW4gcGFyYWxsZWwsIHJp Z2h0Pw0KPiANCj4gSWYgeW91IGluaXRpYWxpemUgZWFjaCBwb3J0IGluIHNlcGFyYXRlIHdvcmtl ciB0aGVuIGR1cmluZyBtc2xlZXAgY2FsbHMNCj4ga2VybmVsIGNhbiBzY2hlZHVsZSBvdGhlciBr ZXJuZWwgdGhyZWFkIHRvIHJ1biBhbmQgc28gaXQgZG9lcyBub3QNCj4gaW5jcmVhc2UgYm9vdCB0 aW1lLiBXaGlsZSBwY2llIGlzIHNsZWVwaW5nIGtlcm5lbCBjYW4gZG8gb3RoZXIgdGhpbmdzLg0K PiBTbyB0aGUgcmVzdWx0IGlzIHRoYXQgd2hvbGUgYm9vdCB0aW1lIGlzIG5vdCBpbmNyZWFzZWQs IGp1c3QgcmVvcmRlcmVkLg0KPiANCj4gPiBGb3IgdGhpcyBQQ0llIGNvbnRyb2xsZXIgZHJpdmVy LCBJIHdvdWxkIGxpa2UgdG8gY2hhbmdlIHRoZSB0aW1lb3V0DQo+ID4gdmFsdWUgdG8gMTBtcyB0 byBjb21wbHkgd2l0aCB0aGUgSFcgZGVzaWduLCBhbmQgc2F2ZSBzb21lIGJvb3QgdGltZS4NCj4g DQo+IEluIGNhc2UgeW91IGNhbiBjb25uZWN0IF9hbnlfIFBDSWUgY2FyZCB0byB5b3VyIEhXIHRo ZW4geW91IGNhbm5vdA0KPiBkZWNyZWFzZSBvciBjaGFuZ2UgdGltZW91dHMgcmVxdWlyZWQgYnkg UENJZSBzcGVjcy4gT3RoZXJ3aXNlIHRoZXJlIGNhbg0KPiBiZSBhIGNhcmQgd2hpY2ggd291bGQg bm90IGJlIGluaXRpYWxpemVkIGNvcnJlY3RseS4NCj4gDQo+IEknbSBkZWJ1Z2dpbmcgZHJpdmVy IGZvciBhYXJkdmFyayBQQ0llIGNvbnRyb2xsZXIgYW5kIEkgc2VlIHRoYXQgQ29tcGV4DQo+IGNh cmRzIHJlYWxseSBuZWVkcyB0aGVzZSB0aW1lb3V0cywgb3RoZXJ3aXNlIGxpbmsgaXMgZG93biBh bmQgY2FyZA0KPiBjYW5ub3QgYmUgZGV0ZWN0ZWQuDQo+IA0KPiBTbyBJIGd1ZXNzIHRoYXQgdGhl cmUgY2FuIGJlIGFsc28gb3RoZXIgY2FyZHMgd2hpY2ggcmVxdWlyZXMgb3RoZXINCj4gdGltZW91 dHMgYXMgc3BlY2lmaWVkIGluIFBDSWUgc3BlY3MuDQoNCk9LLCBJJ2xsIGtlZXAgdGhpcyB0aW1l b3V0IHZhbHVlLiANCg0KT25lIG1vcmUgcXVlc3Rpb24sIGlzIHRoZXJlIGFueSBjaGFuY2UgdGhh dCB3ZSBjYW4gcHV0IHRoaXMgbGlua3VwIGZsb3cNCnRvIGEgbW9yZSAic3RhbmRhcmQiIHdheSwg c3VjaCBhcyBkcml2ZXJzIHByb3ZpZGVzIHRoZSBvcHMgb2YgdGhlIFBFUlNUIw0KcGluIGFuZCBs ZXQgdGhlIGZyYW1ld29yayB0byBkZWNpZGUgaG93IHRvIHN0YXJ0IGEgbGluayB0cmFpbmluZywg b3Igd2UNCmp1c3QgdXNlIG1hY3JvIHRvIHJlcGxhY2UgdGhpcyB0aW1lb3V0IHZhbHVlIGluIHRo ZSBmdXR1cmU/DQoNClRoYW5rcy4NCg0KPiANCj4gPiA+IA0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKwkvKiBDaGVjayBpZiB0aGUgbGluayBpcyB1cCBvciBub3QgKi8NCj4gPiA+ID4gPiA+ ICsJZXJyID0gcmVhZGxfcG9sbF90aW1lb3V0KHBvcnQtPmJhc2UgKyBQQ0lFX0xJTktfU1RBVFVT X1JFRywgdmFsLA0KPiA+ID4gPiA+ID4gKwkJCQkgISEodmFsICYgUENJRV9QT1JUX0xJTktVUCks IDIwLA0KPiA+ID4gPiA+ID4gKwkJCQkgNTAgKiBVU0VDX1BFUl9NU0VDKTsNCj4gPiA+ID4gPiAN Cj4gPiA+ID4gPiBJSVJDLCB5b3UgbmVlZCB0byB3YWl0IGF0IGxlYXN0IDEwMG1zIGFmdGVyIGRl LWFzc2VydGluZyBQRVJTVCMgc2lnbmFsDQo+ID4gPiA+ID4gYXMgaXQgaXMgcmVxdWlyZWQgYnkg UENJZSBzcGVjcyBhbmQgYWxzbyBiZWNhdXNlIGV4cGVyaW1lbnRzIHByb3ZlZCB0aGF0DQo+ID4g PiA+ID4gc29tZSBDb21wZXggd2lmaSBjYXJkcyAoZS5nLiBXTEU5MDBWWCkgYXJlIG5vdCBkZXRl Y3RlZCBpZiB5b3UgZG8gbm90DQo+ID4gPiA+ID4gd2FpdCB0aGlzIG1pbmltYWwgdGltZS4NCj4g PiA+ID4gDQo+ID4gPiA+IFllcywgdGhpcyBzaG91bGQgYmUgMTAwbXMsIEkgd2lsbCBmaXggaXQg YXQgbmV4dCB2ZXJzaW9uLCB0aGFua3MgZm9yDQo+ID4gPiA+IHlvdXIgcmV2aWV3Lg0KPiA+ID4g DQo+ID4gPiBJbiBwYXN0IEJqb3JuIHN1Z2dlc3RlZCB0byB1c2UgbXNsZWVwKFBDSV9QTV9EM0NP TERfV0FJVCk7IG1hY3JvIGZvcg0KPiA+ID4gdGhpcyBzdGVwIGR1cmluZyByZXZpZXdpbmcgYWFy ZHZhcmsgZHJpdmVyLg0KPiA+ID4gDQo+ID4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51 eC1wY2kvMjAxOTA0MjYxNjEwNTAuR0ExODk5NjRAZ29vZ2xlLmNvbS8NCj4gPiA+IA0KPiA+ID4g QW5kIG5leHQgaXRlcmF0aW9uIHVzZWQgdGhpcyBQQ0lfUE1fRDNDT0xEX1dBSVQgbWFjcm8gaW5z dGVhZCBvZiAxMDA6DQo+ID4gPiANCj4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4 LXBjaS8yMDE5MDUyMjIxMzM1MS4yMTM2Ni0yLXJlcGtAdHJpcGxlZmF1Lmx0Lw0KPiA+IA0KPiA+ IFN1cmUsIEkgd2lsbCB1c2UgUENJX1BNX0QzQ09MRF9XQUlUIG1hY3JvIGluc3RlYWQgaW4gdGhl IG5leHQgdmVyc2lvbi4NCj4gPiANCj4gPiBUaGFua3MuDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4g VGhhbmtzLg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gKwlpZiAoZXJyKSB7DQo+ID4gPiA+ID4g PiArCQl2YWwgPSByZWFkbF9yZWxheGVkKHBvcnQtPmJhc2UgKyBQQ0lFX0xUU1NNX1NUQVRVU19S RUcpOw0KPiA+ID4gPiA+ID4gKwkJZGV2X2Vycihwb3J0LT5kZXYsICJQQ0llIGxpbmsgZG93biwg bHRzc20gcmVnIHZhbDogJSN4XG4iLCB2YWwpOw0KPiA+ID4gPiA+ID4gKwkJcmV0dXJuIGVycjsN Cj4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFsxXSAtIGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2xpbnV4LXBjaS8yMDIxMDMxMDExMDUzNS56aDRwbm40dnBtdnp3bDVxQHBh bGkvDQo+ID4gPiA+ID4gWzJdIC0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNpLzIw MjAwNDI0MDkyNTQ2LjI1cDNoZHRrZWhvaGUzeHdAcGFsaS8NCj4gPiA+ID4gDQo+ID4gDQo+IA0K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBMaW51 eC1tZWRpYXRlayBtYWlsaW5nIGxpc3QNCj4gTGludXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFk Lm9yZw0KPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LW1lZGlhdGVrDQoNCg==