From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A257922EF0; Mon, 5 Feb 2024 13:52:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707141159; cv=none; b=hcQKAHiXRCQaCca56wMT382rCKd3dk7HOZsJah0QfqmnkKuUebLj4PFUnf64hNw5hUO08MdnXCcSJrwxxhCVYsHgLme3dx7efh7RKqVLgaObbKx3Ugi2c0/LeAgX82HpT5ztFVGxLeVQ5IjuvkwbmS1Tzm7TnKcutwtpW1BdCjI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707141159; c=relaxed/simple; bh=RIlH3Kpx0z44ko9l4/g3YofT/tlmNnchxQwVaNfQBxQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=rC9nqdxk66qfISpOOGkOHWT8yrzxyVKeHFala4fmTO9Kiil9sa2ynbMcIcYdR038SY3NVDTBVtCo9csPAraL03rnYDcsXOf2XKiX04P9dgo+6YBQScZ2fFsk7Xkk9zx5OmtczM6Vtpu+BpHtdFzM4XCubLbVUTbmBt5j6+7p8gM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 724901FB; Mon, 5 Feb 2024 05:53:18 -0800 (PST) Received: from pluto (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 75A3F3F5A1; Mon, 5 Feb 2024 05:52:31 -0800 (PST) Date: Mon, 5 Feb 2024 13:52:27 +0000 From: Cristian Marussi To: Peng Fan Cc: Sudeep Holla , Linus Walleij , "Peng Fan (OSS)" , "souvik.chakravarty@arm.com" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Oleksii Moisieiev , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , dl-linux-imx , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-gpio@vger.kernel.org" , AKASHI Takahiro , Rob Herring Subject: Re: [PATCH v3 0/6] firmware: arm_scmi: Add SCMI v3.2 pincontrol protocol basic support Message-ID: References: <20240121-pinctrl-scmi-v3-0-8d94ba79dca8@nxp.com> Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Sun, Feb 04, 2024 at 09:29:25AM +0000, Peng Fan wrote: > > Subject: Re: [PATCH v3 0/6] firmware: arm_scmi: Add SCMI v3.2 pincontrol > > protocol basic support > > > > On Thu, Feb 01, 2024 at 07:14:17AM +0000, Peng Fan wrote: > > > > Subject: Re: [PATCH v3 0/6] firmware: arm_scmi: Add SCMI v3.2 > > > > pincontrol protocol basic support > > > > > > > > Hi Peng, > > > > > > On Mon, Jan 29, 2024 at 1:37 PM Peng Fan > > wrote: > > > > > > > > > And for i.MX95 OEM extenstion, do you have any suggestions? > > > > > I have two points: > > > > > 1. use vendor compatible. This would also benefit when supporting > > > > > vendor protocol. > > > > > 2. Introduce a property saying supporting-generic-pinconf > > > > > > > > > > How do you think? > > > > > > > > While I don't know how OEM extensions to SCMI were designed, the pin > > > > control subsystem has the philosophy that extensions are for minor > > > > fringe stuff, such as a pin config option that no other silicon is > > > > using and thus have no use for anyone else. Well that is actually > > > > all the custom extensions we have. > > > > (This notion is even carried over to SCMI pinctrl.) > > > > > > > > The i.MX95 OEM extension is really odd to me, it looks like a > > > > reimplementation of the core aspects of SCMI pin control, and looks > > > > much more like the old i.MX drivers than like the SCMI driver. > > > > > > i.MX SCMI pin protocol conf settings follows non-SCMI pin conf settings. > > > > > > > It is not just a matter of using custom SCMI OEM types, it is the whole > > layout/definitions of the i.MX pin/groups/funcs DT bindings that deviates > > from the generic DT bindings layout as handled and expected by the Linux > > Pinctrl subsystem (AFAIU), while the SCMI Pinctrl driver as it stands in this > > series, was conceived, designed and implemented originally by Oleksii to just > > use the generic existing Pinctrl DT bindings; as a consequence, in your i.MX > > extensions, you had to add a dedicated i.MX DT parser to interpret the > > protocol@19 DT snippet in a completely different way, to try to stick your > > custom solution on top of the generic one. > > The two links shows the drop of i.MX generic pinconf > https://patchwork.ozlabs.org/project/linux-gpio/patch/1541149669-10857-7-git-send-email-aisheng.dong@nxp.com/ > https://lore.kernel.org/all/20230302072132.1051590-1-linux@rasmusvillemoes.dk/ > > For non-scmi platforms, the generic pinconf was supported > for i.MX7ULP for a while, and then dropped in the end per i.MX maintainers > and agreed by Linus. > > For i.MX95 SCMI platforms, the firmware design is simple and use similar > programming model to simplify firmware design. > > Using generic pinconf means the firmware needs exporting groups/functions/pins > and etc, the firmware design will be complicated and code size enlarged. > Understood. > I have no better ideas without introducing a compatible for dt map hook. > > Build exclusive is not acceptable for distro support. > Indeed, and I understand that, but in any case it wont be required for both the generic pinconf and the IMX way to coexist and live together on the same system/platform at runtime, right ? So, I was thinking as an alternative, while still building all (generic+IMX) in defconfig, wouldn't be possible to detect at runtime in the pinctrl-scmi probe() which is the type of binding used in the DT (i.e. generic VS imx), before registering with the core Pinctrl subsystem, and so act accordingly parsing and providing different callbacks based on that ? I mean, without any compatible addition, just looking up the protocol@19 node content @probe and switch to iMX callbacks if the fsl,pins binding is found ? Not sure is this is totally viable, nor clean or that it is not less horrific from the Pinctrl_subsystem/DT point of view for Linus ... just an idea to think about or discard. > So the last options is i.MX95 switch back to VENDOR protocol ID saying > 0x82. But this means to exports functions of pinctrl-scmi.c and reused > by pinctrl-scmi-imx.c. If you agree, I will ask firmware developer > switch back to a new SCMI ID, and I will use new ID for i.mx pinctrl > driver. > I dont think there is really any chance to upstream a vendor protocol that is a bare copy of a standard protocol just to workaround this...and if this is going to be the end-result you can just keep your current 2 small 'IMX custom-compatible' patches downstream. > But in the end I would think when more SCMI vendor protocols > comes in, saying vendor A and vendor B both use ID 0x81, > both use 0x81 as RTC functions, same issue will come back. > This wont be a problem once the RFC[1] I posted last week is in...unless someone objects, you will have to identify your vendor protocol module at build time ALSO with the vendor/sub_vendor ID string exposed by your fw... ...so each vendor will effectively have the full vendor protocol space number at their disposal. Indeed this week, I hope to review your series about custom protocols and the qualcomm ones and ask both for feedback on [1] and then to rework those series on some non-RFC similar to 1 that I will post afterwards. Thanks, Cristian [1]: https://lore.kernel.org/linux-arm-kernel/20240122122437.546621-1-cristian.marussi@arm.com/ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E2324C48295 for ; Mon, 5 Feb 2024 13:52:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nE+yNP5wBAS2f5P3skkfurF7PcJ4puhONlkyTYi4fUA=; b=LqHvdZONjpc7jn Gleirxt4yuHFrRl1pelSM8L/TGex4xbrjRkWplmWVxFxkReDJutmmGhBUWZKpzOwu6S3VzD3bf1eM tXc4ct9MIDryzYoRq+e276PrSV77wETZTMLKE/jeXtue26MUJtsJrzoA+tczC4nE68OgpMt0kkW1s PVVrKkiLkZloV0jMMxhvDJ4g9tnQi9g1qHUO8m4aCIOiaFthht69UP+GfCZpgI3Gf2O+7/ZdWiMEh 6ERuTxMbtokY7SF2gcERyV/I75hQxv2W7hWuOonATwjduY7E1B+pxiDjVJDjORhO79Z+yghg1TaVX FIkYtv35xvk2JEGj/L4Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWzOv-00000003UAA-0hkZ; Mon, 05 Feb 2024 13:52:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWzOs-00000003U9Y-2ZCy for linux-arm-kernel@lists.infradead.org; Mon, 05 Feb 2024 13:52:44 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 724901FB; Mon, 5 Feb 2024 05:53:18 -0800 (PST) Received: from pluto (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 75A3F3F5A1; Mon, 5 Feb 2024 05:52:31 -0800 (PST) Date: Mon, 5 Feb 2024 13:52:27 +0000 From: Cristian Marussi To: Peng Fan Cc: Sudeep Holla , Linus Walleij , "Peng Fan (OSS)" , "souvik.chakravarty@arm.com" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Oleksii Moisieiev , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , dl-linux-imx , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-gpio@vger.kernel.org" , AKASHI Takahiro , Rob Herring Subject: Re: [PATCH v3 0/6] firmware: arm_scmi: Add SCMI v3.2 pincontrol protocol basic support Message-ID: References: <20240121-pinctrl-scmi-v3-0-8d94ba79dca8@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240205_055242_771664_A6BA069B X-CRM114-Status: GOOD ( 46.18 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU3VuLCBGZWIgMDQsIDIwMjQgYXQgMDk6Mjk6MjVBTSArMDAwMCwgUGVuZyBGYW4gd3JvdGU6 Cj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDAvNl0gZmlybXdhcmU6IGFybV9zY21pOiBBZGQg U0NNSSB2My4yIHBpbmNvbnRyb2wKPiA+IHByb3RvY29sIGJhc2ljIHN1cHBvcnQKPiA+IAo+ID4g T24gVGh1LCBGZWIgMDEsIDIwMjQgYXQgMDc6MTQ6MTdBTSArMDAwMCwgUGVuZyBGYW4gd3JvdGU6 Cj4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAwLzZdIGZpcm13YXJlOiBhcm1fc2NtaTog QWRkIFNDTUkgdjMuMgo+ID4gPiA+IHBpbmNvbnRyb2wgcHJvdG9jb2wgYmFzaWMgc3VwcG9ydAo+ ID4gPiA+Cj4gPiAKPiA+IEhpIFBlbmcsCj4gPiAKPiA+ID4gPiBPbiBNb24sIEphbiAyOSwgMjAy NCBhdCAxOjM34oCvUE0gUGVuZyBGYW4gPHBlbmcuZmFuQG9zcy5ueHAuY29tPgo+ID4gd3JvdGU6 Cj4gPiA+ID4KPiA+ID4gPiA+IEFuZCBmb3IgaS5NWDk1IE9FTSBleHRlbnN0aW9uLCBkbyB5b3Ug aGF2ZSBhbnkgc3VnZ2VzdGlvbnM/Cj4gPiA+ID4gPiBJIGhhdmUgdHdvIHBvaW50czoKPiA+ID4g PiA+IDEuIHVzZSB2ZW5kb3IgY29tcGF0aWJsZS4gVGhpcyB3b3VsZCBhbHNvIGJlbmVmaXQgd2hl biBzdXBwb3J0aW5nCj4gPiA+ID4gPiB2ZW5kb3IgcHJvdG9jb2wuCj4gPiA+ID4gPiAyLiBJbnRy b2R1Y2UgYSBwcm9wZXJ0eSBzYXlpbmcgc3VwcG9ydGluZy1nZW5lcmljLXBpbmNvbmYKPiA+ID4g PiA+Cj4gPiA+ID4gPiBIb3cgZG8geW91IHRoaW5rPwo+ID4gPiA+Cj4gPiA+ID4gV2hpbGUgSSBk b24ndCBrbm93IGhvdyBPRU0gZXh0ZW5zaW9ucyB0byBTQ01JIHdlcmUgZGVzaWduZWQsIHRoZSBw aW4KPiA+ID4gPiBjb250cm9sIHN1YnN5c3RlbSBoYXMgdGhlIHBoaWxvc29waHkgdGhhdCBleHRl bnNpb25zIGFyZSBmb3IgbWlub3IKPiA+ID4gPiBmcmluZ2Ugc3R1ZmYsIHN1Y2ggYXMgYSBwaW4g Y29uZmlnIG9wdGlvbiB0aGF0IG5vIG90aGVyIHNpbGljb24gaXMKPiA+ID4gPiB1c2luZyBhbmQg dGh1cyBoYXZlIG5vIHVzZSBmb3IgYW55b25lIGVsc2UuIFdlbGwgdGhhdCBpcyBhY3R1YWxseQo+ ID4gPiA+IGFsbCB0aGUgY3VzdG9tIGV4dGVuc2lvbnMgd2UgaGF2ZS4KPiA+ID4gPiAoVGhpcyBu b3Rpb24gaXMgZXZlbiBjYXJyaWVkIG92ZXIgdG8gU0NNSSBwaW5jdHJsLikKPiA+ID4gPgo+ID4g PiA+IFRoZSBpLk1YOTUgT0VNIGV4dGVuc2lvbiBpcyByZWFsbHkgb2RkIHRvIG1lLCBpdCBsb29r cyBsaWtlIGEKPiA+ID4gPiByZWltcGxlbWVudGF0aW9uIG9mIHRoZSBjb3JlIGFzcGVjdHMgb2Yg U0NNSSBwaW4gY29udHJvbCwgYW5kIGxvb2tzCj4gPiA+ID4gbXVjaCBtb3JlIGxpa2UgdGhlIG9s ZCBpLk1YIGRyaXZlcnMgdGhhbiBsaWtlIHRoZSBTQ01JIGRyaXZlci4KPiA+ID4KPiA+ID4gaS5N WCBTQ01JIHBpbiBwcm90b2NvbCBjb25mIHNldHRpbmdzIGZvbGxvd3Mgbm9uLVNDTUkgcGluIGNv bmYgc2V0dGluZ3MuCj4gPiA+Cj4gPiAKPiA+IEl0IGlzIG5vdCBqdXN0IGEgbWF0dGVyIG9mIHVz aW5nIGN1c3RvbSBTQ01JIE9FTSB0eXBlcywgaXQgaXMgdGhlIHdob2xlCj4gPiBsYXlvdXQvZGVm aW5pdGlvbnMgb2YgdGhlIGkuTVggcGluL2dyb3Vwcy9mdW5jcyBEVCBiaW5kaW5ncyB0aGF0IGRl dmlhdGVzCj4gPiBmcm9tIHRoZSBnZW5lcmljIERUIGJpbmRpbmdzIGxheW91dCBhcyBoYW5kbGVk IGFuZCBleHBlY3RlZCBieSB0aGUgTGludXgKPiA+IFBpbmN0cmwgc3Vic3lzdGVtIChBRkFJVSks IHdoaWxlIHRoZSBTQ01JIFBpbmN0cmwgZHJpdmVyIGFzIGl0IHN0YW5kcyBpbiB0aGlzCj4gPiBz ZXJpZXMsIHdhcyBjb25jZWl2ZWQsIGRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZCBvcmlnaW5hbGx5 IGJ5IE9sZWtzaWkgdG8ganVzdAo+ID4gdXNlIHRoZSBnZW5lcmljIGV4aXN0aW5nIFBpbmN0cmwg RFQgYmluZGluZ3M7IGFzIGEgY29uc2VxdWVuY2UsIGluIHlvdXIgaS5NWAo+ID4gZXh0ZW5zaW9u cywgeW91IGhhZCB0byBhZGQgYSBkZWRpY2F0ZWQgaS5NWCBEVCBwYXJzZXIgdG8gaW50ZXJwcmV0 IHRoZQo+ID4gcHJvdG9jb2xAMTkgRFQgc25pcHBldCBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50 IHdheSwgdG8gdHJ5IHRvIHN0aWNrIHlvdXIKPiA+IGN1c3RvbSBzb2x1dGlvbiBvbiB0b3Agb2Yg dGhlIGdlbmVyaWMgb25lLgo+IAo+IFRoZSB0d28gbGlua3Mgc2hvd3MgdGhlIGRyb3Agb2YgaS5N WCBnZW5lcmljIHBpbmNvbmYKPiBodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3Qv bGludXgtZ3Bpby9wYXRjaC8xNTQxMTQ5NjY5LTEwODU3LTctZ2l0LXNlbmQtZW1haWwtYWlzaGVu Zy5kb25nQG54cC5jb20vCj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwMzAyMDcy MTMyLjEwNTE1OTAtMS1saW51eEByYXNtdXN2aWxsZW1vZXMuZGsvCj4gCj4gRm9yIG5vbi1zY21p IHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgcGluY29uZiB3YXMgc3VwcG9ydGVkCj4gZm9yIGkuTVg3 VUxQIGZvciBhIHdoaWxlLCBhbmQgdGhlbiBkcm9wcGVkIGluIHRoZSBlbmQgcGVyIGkuTVggbWFp bnRhaW5lcnMKPiBhbmQgYWdyZWVkIGJ5IExpbnVzLgo+IAo+IEZvciBpLk1YOTUgU0NNSSBwbGF0 Zm9ybXMsIHRoZSBmaXJtd2FyZSBkZXNpZ24gaXMgc2ltcGxlIGFuZCB1c2Ugc2ltaWxhcgo+IHBy b2dyYW1taW5nIG1vZGVsIHRvIHNpbXBsaWZ5IGZpcm13YXJlIGRlc2lnbi4KPiAKPiBVc2luZyBn ZW5lcmljIHBpbmNvbmYgbWVhbnMgdGhlIGZpcm13YXJlIG5lZWRzIGV4cG9ydGluZyBncm91cHMv ZnVuY3Rpb25zL3BpbnMKPiBhbmQgZXRjLCB0aGUgZmlybXdhcmUgZGVzaWduIHdpbGwgYmUgY29t cGxpY2F0ZWQgYW5kIGNvZGUgc2l6ZSBlbmxhcmdlZC4KPiAKClVuZGVyc3Rvb2QuCgo+IEkgaGF2 ZSBubyBiZXR0ZXIgaWRlYXMgd2l0aG91dCBpbnRyb2R1Y2luZyBhIGNvbXBhdGlibGUgZm9yIGR0 IG1hcCBob29rLgo+IAo+IEJ1aWxkIGV4Y2x1c2l2ZSBpcyBub3QgYWNjZXB0YWJsZSBmb3IgZGlz dHJvIHN1cHBvcnQuCj4gCgpJbmRlZWQsIGFuZCBJIHVuZGVyc3RhbmQgdGhhdCwgYnV0IGluIGFu eSBjYXNlIGl0IHdvbnQgYmUgcmVxdWlyZWQgZm9yCmJvdGggdGhlIGdlbmVyaWMgcGluY29uZiBh bmQgdGhlIElNWCB3YXkgdG8gY29leGlzdCBhbmQgbGl2ZSB0b2dldGhlciBvbgp0aGUgc2FtZSBz eXN0ZW0vcGxhdGZvcm0gYXQgcnVudGltZSwgcmlnaHQgPwoKU28sIEkgd2FzIHRoaW5raW5nIGFz IGFuIGFsdGVybmF0aXZlLCB3aGlsZSBzdGlsbCBidWlsZGluZyBhbGwKKGdlbmVyaWMrSU1YKSBp biBkZWZjb25maWcsIHdvdWxkbid0IGJlIHBvc3NpYmxlIHRvIGRldGVjdCBhdCBydW50aW1lIGlu IHRoZQpwaW5jdHJsLXNjbWkgcHJvYmUoKSB3aGljaCBpcyB0aGUgdHlwZSBvZiBiaW5kaW5nIHVz ZWQgaW4gdGhlIERUIChpLmUuCmdlbmVyaWMgVlMgaW14KSwgYmVmb3JlIHJlZ2lzdGVyaW5nIHdp dGggdGhlIGNvcmUgUGluY3RybCBzdWJzeXN0ZW0sIGFuZCBzbwphY3QgYWNjb3JkaW5nbHkgcGFy c2luZyBhbmQgcHJvdmlkaW5nIGRpZmZlcmVudCBjYWxsYmFja3MgYmFzZWQgb24gdGhhdCA/CgpJ IG1lYW4sIHdpdGhvdXQgYW55IGNvbXBhdGlibGUgYWRkaXRpb24sIGp1c3QgbG9va2luZyB1cCB0 aGUgcHJvdG9jb2xAMTkKbm9kZSBjb250ZW50IEBwcm9iZSBhbmQgc3dpdGNoIHRvIGlNWCBjYWxs YmFja3MgaWYgdGhlIGZzbCxwaW5zIGJpbmRpbmcKaXMgZm91bmQgPwoKTm90IHN1cmUgaXMgdGhp cyBpcyB0b3RhbGx5IHZpYWJsZSwgbm9yIGNsZWFuIG9yIHRoYXQgaXQgaXMgbm90IGxlc3MgaG9y cmlmaWMKZnJvbSB0aGUgUGluY3RybF9zdWJzeXN0ZW0vRFQgcG9pbnQgb2YgdmlldyBmb3IgTGlu dXMgLi4uIGp1c3QgYW4gaWRlYSB0byB0aGluawphYm91dCBvciBkaXNjYXJkLgoKPiBTbyB0aGUg bGFzdCBvcHRpb25zIGlzIGkuTVg5NSBzd2l0Y2ggYmFjayB0byBWRU5ET1IgcHJvdG9jb2wgSUQg c2F5aW5nCj4gMHg4Mi4gQnV0IHRoaXMgbWVhbnMgdG8gZXhwb3J0cyBmdW5jdGlvbnMgb2YgcGlu Y3RybC1zY21pLmMgYW5kIHJldXNlZAo+IGJ5IHBpbmN0cmwtc2NtaS1pbXguYy4gIElmIHlvdSBh Z3JlZSwgSSB3aWxsIGFzayBmaXJtd2FyZSBkZXZlbG9wZXIKPiBzd2l0Y2ggYmFjayB0byBhIG5l dyBTQ01JIElELCBhbmQgSSB3aWxsIHVzZSBuZXcgSUQgZm9yIGkubXggcGluY3RybAo+IGRyaXZl ci4KPiAKCkkgZG9udCB0aGluayB0aGVyZSBpcyByZWFsbHkgYW55IGNoYW5jZSB0byB1cHN0cmVh bSBhIHZlbmRvciBwcm90b2NvbCB0aGF0CmlzIGEgYmFyZSBjb3B5IG9mIGEgc3RhbmRhcmQgcHJv dG9jb2wganVzdCB0byB3b3JrYXJvdW5kIHRoaXMuLi5hbmQgaWYKdGhpcyBpcyBnb2luZyB0byBi ZSB0aGUgZW5kLXJlc3VsdCB5b3UgY2FuIGp1c3Qga2VlcCB5b3VyIGN1cnJlbnQgMgpzbWFsbCAn SU1YIGN1c3RvbS1jb21wYXRpYmxlJyBwYXRjaGVzIGRvd25zdHJlYW0uCgo+IEJ1dCBpbiB0aGUg ZW5kIEkgd291bGQgdGhpbmsgd2hlbiBtb3JlIFNDTUkgdmVuZG9yIHByb3RvY29scwo+IGNvbWVz IGluLCBzYXlpbmcgdmVuZG9yIEEgYW5kIHZlbmRvciBCIGJvdGggdXNlIElEIDB4ODEsCj4gYm90 aCB1c2UgMHg4MSBhcyBSVEMgZnVuY3Rpb25zLCBzYW1lIGlzc3VlIHdpbGwgY29tZSBiYWNrLgo+ CgpUaGlzIHdvbnQgYmUgYSBwcm9ibGVtIG9uY2UgdGhlIFJGQ1sxXSBJIHBvc3RlZCBsYXN0IHdl ZWsgaXMgaW4uLi51bmxlc3MKc29tZW9uZSBvYmplY3RzLCB5b3Ugd2lsbCBoYXZlIHRvIGlkZW50 aWZ5IHlvdXIgdmVuZG9yIHByb3RvY29sIG1vZHVsZQphdCBidWlsZCB0aW1lIEFMU08gd2l0aCB0 aGUgdmVuZG9yL3N1Yl92ZW5kb3IgSUQgc3RyaW5nIGV4cG9zZWQgYnkgeW91ciBmdy4uLgouLi5z byBlYWNoIHZlbmRvciB3aWxsIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGZ1bGwgdmVuZG9yIHByb3Rv Y29sIHNwYWNlCm51bWJlciBhdCB0aGVpciBkaXNwb3NhbC4KCkluZGVlZCB0aGlzIHdlZWssIEkg aG9wZSB0byByZXZpZXcgeW91ciBzZXJpZXMgYWJvdXQgY3VzdG9tIHByb3RvY29scwphbmQgdGhl IHF1YWxjb21tIG9uZXMgYW5kIGFzayBib3RoIGZvciBmZWVkYmFjayBvbiBbMV0gYW5kIHRoZW4g dG8KcmV3b3JrIHRob3NlIHNlcmllcyBvbiBzb21lIG5vbi1SRkMgc2ltaWxhciB0byAxIHRoYXQg SSB3aWxsIHBvc3QKYWZ0ZXJ3YXJkcy4KClRoYW5rcywKQ3Jpc3RpYW4KClsxXTogaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGludXgtYXJtLWtlcm5lbC8yMDI0MDEyMjEyMjQzNy41NDY2MjEtMS1j cmlzdGlhbi5tYXJ1c3NpQGFybS5jb20vCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==