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 X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ADC73C433E0 for ; Thu, 25 Jun 2020 06:13:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7EB8A206FA for ; Thu, 25 Jun 2020 06:13:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="iSqndLJ9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389566AbgFYGNI (ORCPT ); Thu, 25 Jun 2020 02:13:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727800AbgFYGNH (ORCPT ); Thu, 25 Jun 2020 02:13:07 -0400 Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08844C0613ED for ; Wed, 24 Jun 2020 23:13:07 -0700 (PDT) Received: by mail-wr1-x443.google.com with SMTP id q5so4528124wru.6 for ; Wed, 24 Jun 2020 23:13:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=iA2LoEFl42PAfMHt6BhD+YKFpB/tKVOEuCLtgIdaUcg=; b=iSqndLJ9qLVyw7p18ZTcH6bXibo55m/izg5YbG0MwtaVDbnfdmaUgYZF5S/7GFi/vt 5J+ZrctuzeZm4BNxufro5YRuDWIV2ZwNqpzDvJyC/hnMMeYG/Ml6HWwPLwFic4SzFOdP f/lRvuYn4Tl3ZtUnGVVXMfZJSCHj1b3emgXbCmHO4o3MR3i1O/8hzxeJ+fqjvkOtpF/c ul7g6TM1aAgS1z3hNo3TbqBmJ596IWY4D4OtKItMlAan8x5doJNvOd0X4KUK0BkTV8rf txQlU9JpqItgodRxWijXUBNAVRfCTAw7GLCjRh5Xvt9QCr1/75F2R0f7ld5hWzR3QsBv Ot8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=iA2LoEFl42PAfMHt6BhD+YKFpB/tKVOEuCLtgIdaUcg=; b=KtBHGXinnrAskYXcIfNbuNwPQu/qr41YCN4N0rPgAD7mAKCrAlf7jCHovKdXSRPNOc hiRx7vhbaVI8hvu9/C2gKne45GVOOxi3w/gMTbWzjAK+WxO9Fov5vWVfi9IHU8F/cGZK 99g9tCXVutEAZ3Gej241uebSGY4fEjwpkrn5fEDA4bz0JOjyaQzb/OtWbEVnJokt10SK Sy+IabRq2cgeZ23SKkU5CTXvQePcrSs3nB74u+l7rwmkmY4+dZL0cW5nkn98sT9husGh MtzET/MLUMyxjV9jJ45iWZaDMMSMTyc47TgYlTVaZf0IDT0RxCW4kes5XkVnvSwFcSHR Jihg== X-Gm-Message-State: AOAM532pRkbLeeQQYOQhOOxDZeFnutTCiT0PXe4RFmWULPPcSz3aTk6O c3W4EGoTkgjHz/hSfhCF8eFR9Q== X-Google-Smtp-Source: ABdhPJwq2swoxVQwWpcIMTGj0ih5YY/4JmDKH2eqYJuaBV/SepD18Aj4As76aHk2nf7cBTjKdyLEWQ== X-Received: by 2002:a5d:62cc:: with SMTP id o12mr27479942wrv.365.1593065585521; Wed, 24 Jun 2020 23:13:05 -0700 (PDT) Received: from dell ([2.27.35.144]) by smtp.gmail.com with ESMTPSA id j24sm28793190wrd.43.2020.06.24.23.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jun 2020 23:13:04 -0700 (PDT) Date: Thu, 25 Jun 2020 07:13:02 +0100 From: Lee Jones To: Frank Rowand Cc: Michael Walle , Rob Herring , Andy Shevchenko , Mark Brown , devicetree , Linux Kernel Mailing List , linux-arm Mailing List , Linus Walleij , Guenter Roeck , Andy Shevchenko , Robin Murphy , GregKroah-Hartman Subject: Re: [RFC] MFD's relationship with Device Tree (OF) Message-ID: <20200625061302.GK954398@dell> References: <20200609110136.GJ4106@dell> <0709f20bc61afb6656bc57312eb69f56@walle.cc> <970bf15b1106df3355b13e06e8dc6f01@walle.cc> <0e9e25cc-b3f2-926a-31dd-c6fafa7d581b@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <0e9e25cc-b3f2-926a-31dd-c6fafa7d581b@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 24 Jun 2020, Frank Rowand wrote: > On 2020-06-22 16:03, Michael Walle wrote: > > Am 2020-06-14 12:26, schrieb Michael Walle: > >> Hi Rob, > >> > >> Am 2020-06-10 00:03, schrieb Rob Herring: > >> [..] > >>> Yes, we should use 'reg' whenever possible. If we don't have 'reg', > >>> then you shouldn't have a unit-address either and you can simply match > >>> on the node name (standard DT driver matching is with compatible, > >>> device_type, and node name (w/o unit-address)). We've generally been > >>> doing 'classname-N' when there's no 'reg' to do 'classname@N'. > >>> Matching on 'classname-N' would work with node name matching as only > >>> unit-addresses are stripped. > >> > >> This still keeps me thinking. Shouldn't we allow the (MFD!) device > >> driver creator to choose between "classname@N" and "classname-N". > >> In most cases N might not be made up, but it is arbitrarily chosen; > >> for example you've chosen the bank for the ab8500 reg. It is not > >> a defined entity, like an I2C address if your parent is an I2C bus, > >> or a SPI chip select, or the memory address in case of MMIO. Instead > >> the device driver creator just chooses some "random" property from > >> the datasheet; another device creator might have chosen another > >> property. Wouldn't it make more sense, to just say this MFD provides > >> N pwm devices and the subnodes are matching based on pwm-{0,1..N-1}? > >> That would also be the logical consequence of the current MFD sub > >> device to OF node matching code, which just supports N=1. It's funny. You reiterate things like "arbitrarily chosen" and "randomly chosen from the datasheet" but yet your suggestion is just that. The only difference is that you wish to place the numerical differentiator in the node name, rather than the reg property. Worse still, you are suggesting that you wish to just enumerate them off sequentially from some arbitrary base (likely 0). I don't know of many cases off, the top of my head at least, where this is a problem. As you've mentioned, in the case of the AB8500, the bank is used which is semantically how the devices are actually addressed. It's not random, it's physical. How are the identical devices addressed/identified/differentiated from each other on your H/W? You must have a way of saying "I want PWM X to act in a different way from PWM Y". What is 'X' and 'Y' in your datasheet? -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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 X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6047AC433E0 for ; Thu, 25 Jun 2020 06:15:27 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2B4D7206FA for ; Thu, 25 Jun 2020 06:15:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="STgDu2gv"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="iSqndLJ9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2B4D7206FA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject: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=Hq98toJEZ4yGmEnMSGJcFkfvtk9aLcuErFbiMmHTOos=; b=STgDu2gvTcEfLmcNiFRzKjWzT VPWpMXtItumOnmRzaTfsNKwOCd/zNjieRnASZvMYYecPX5acI2doOCptGyk2KOEaHE9XPSd9Z0fsR QBHLS6E/Airwy3XXHcBMZ6QP9aO4GSzH5HJQC3M+68jjwTEK7hKCXdeyFiQf8YJac18XMKAbyglP6 cevu2Ow0QuuQJnG/LY4ze5qcxYxCOKGpxNE2LUiKYQHv2k07sOfcMKoxRr8w10Vh6+gU7mHi/WbQc 7K2ZD1HnNC6M+5hNsBJxV32YS8JXWLyMdhB9l+yUXqrisuv9+5Mqyw7EhLSy41ODMwacbVvvn3ukw 3z3yrv9cQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1joL8I-0001g5-L2; Thu, 25 Jun 2020 06:13:10 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1joL8F-0001fc-7P for linux-arm-kernel@lists.infradead.org; Thu, 25 Jun 2020 06:13:08 +0000 Received: by mail-wr1-x442.google.com with SMTP id o11so4518882wrv.9 for ; Wed, 24 Jun 2020 23:13:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=iA2LoEFl42PAfMHt6BhD+YKFpB/tKVOEuCLtgIdaUcg=; b=iSqndLJ9qLVyw7p18ZTcH6bXibo55m/izg5YbG0MwtaVDbnfdmaUgYZF5S/7GFi/vt 5J+ZrctuzeZm4BNxufro5YRuDWIV2ZwNqpzDvJyC/hnMMeYG/Ml6HWwPLwFic4SzFOdP f/lRvuYn4Tl3ZtUnGVVXMfZJSCHj1b3emgXbCmHO4o3MR3i1O/8hzxeJ+fqjvkOtpF/c ul7g6TM1aAgS1z3hNo3TbqBmJ596IWY4D4OtKItMlAan8x5doJNvOd0X4KUK0BkTV8rf txQlU9JpqItgodRxWijXUBNAVRfCTAw7GLCjRh5Xvt9QCr1/75F2R0f7ld5hWzR3QsBv Ot8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=iA2LoEFl42PAfMHt6BhD+YKFpB/tKVOEuCLtgIdaUcg=; b=lBftm8Vrf0aySD3+oGh48c5D3oOxlXRW+xW5MH6GoYVq1YXshGL9NWCyfHIqcVAjqi PNlaJ32wYP8DmbcWS2MRJZLmfvlNQMYDYSqWMnvSt3ou2+W+zv/WflQJX7JCCOyDKa0l tT2aT8QwEdZO4AAdPWVOoezEX7QZn+CMb+QN4jKje1b8FUgjY6QotlhEaIGcdH/x4I4S HxKNARuId0aHTF8/0E7bYt9mVVKF7Mwa+8DrqKRLyH1XwQrsAVzje8wsDIJF2ZbcsWue gG+BJ6t9zH5lb0G6QwtfhbmhOTulB1oOXb34Fkh+iICs4EOmoYqtNt+YzXJK2oKSy3wr w0CA== X-Gm-Message-State: AOAM531VmA4+2djadMn3TEmeMNaG027GpMxEG0uzHCeSjszaOExw4QhC 8hE+VbNd6bF9i/lptAVTe1nqrw== X-Google-Smtp-Source: ABdhPJwq2swoxVQwWpcIMTGj0ih5YY/4JmDKH2eqYJuaBV/SepD18Aj4As76aHk2nf7cBTjKdyLEWQ== X-Received: by 2002:a5d:62cc:: with SMTP id o12mr27479942wrv.365.1593065585521; Wed, 24 Jun 2020 23:13:05 -0700 (PDT) Received: from dell ([2.27.35.144]) by smtp.gmail.com with ESMTPSA id j24sm28793190wrd.43.2020.06.24.23.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jun 2020 23:13:04 -0700 (PDT) Date: Thu, 25 Jun 2020 07:13:02 +0100 From: Lee Jones To: Frank Rowand Subject: Re: [RFC] MFD's relationship with Device Tree (OF) Message-ID: <20200625061302.GK954398@dell> References: <20200609110136.GJ4106@dell> <0709f20bc61afb6656bc57312eb69f56@walle.cc> <970bf15b1106df3355b13e06e8dc6f01@walle.cc> <0e9e25cc-b3f2-926a-31dd-c6fafa7d581b@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <0e9e25cc-b3f2-926a-31dd-c6fafa7d581b@gmail.com> X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree , GregKroah-Hartman , Mark Brown , Andy Shevchenko , Linux Kernel Mailing List , Michael Walle , Rob Herring , Guenter Roeck , Andy Shevchenko , Robin Murphy , Linus Walleij , linux-arm Mailing List 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 T24gV2VkLCAyNCBKdW4gMjAyMCwgRnJhbmsgUm93YW5kIHdyb3RlOgo+IE9uIDIwMjAtMDYtMjIg MTY6MDMsIE1pY2hhZWwgV2FsbGUgd3JvdGU6Cj4gPiBBbSAyMDIwLTA2LTE0IDEyOjI2LCBzY2hy aWViIE1pY2hhZWwgV2FsbGU6Cj4gPj4gSGkgUm9iLAo+ID4+Cj4gPj4gQW0gMjAyMC0wNi0xMCAw MDowMywgc2NocmllYiBSb2IgSGVycmluZzoKPiA+PiBbLi5dCj4gPj4+IFllcywgd2Ugc2hvdWxk IHVzZSAncmVnJyB3aGVuZXZlciBwb3NzaWJsZS4gSWYgd2UgZG9uJ3QgaGF2ZSAncmVnJywKPiA+ Pj4gdGhlbiB5b3Ugc2hvdWxkbid0IGhhdmUgYSB1bml0LWFkZHJlc3MgZWl0aGVyIGFuZCB5b3Ug Y2FuIHNpbXBseSBtYXRjaAo+ID4+PiBvbiB0aGUgbm9kZSBuYW1lIChzdGFuZGFyZCBEVCBkcml2 ZXIgbWF0Y2hpbmcgaXMgd2l0aCBjb21wYXRpYmxlLAo+ID4+PiBkZXZpY2VfdHlwZSwgYW5kIG5v ZGUgbmFtZSAody9vIHVuaXQtYWRkcmVzcykpLiBXZSd2ZSBnZW5lcmFsbHkgYmVlbgo+ID4+PiBk b2luZyAnY2xhc3NuYW1lLU4nIHdoZW4gdGhlcmUncyBubyAncmVnJyB0byBkbyAnY2xhc3NuYW1l QE4nLgo+ID4+PiBNYXRjaGluZyBvbiAnY2xhc3NuYW1lLU4nIHdvdWxkIHdvcmsgd2l0aCBub2Rl IG5hbWUgbWF0Y2hpbmcgYXMgb25seQo+ID4+PiB1bml0LWFkZHJlc3NlcyBhcmUgc3RyaXBwZWQu Cj4gPj4KPiA+PiBUaGlzIHN0aWxsIGtlZXBzIG1lIHRoaW5raW5nLiBTaG91bGRuJ3Qgd2UgYWxs b3cgdGhlIChNRkQhKSBkZXZpY2UKPiA+PiBkcml2ZXIgY3JlYXRvciB0byBjaG9vc2UgYmV0d2Vl biAiY2xhc3NuYW1lQE4iIGFuZCAiY2xhc3NuYW1lLU4iLgo+ID4+IEluIG1vc3QgY2FzZXMgTiBt aWdodCBub3QgYmUgbWFkZSB1cCwgYnV0IGl0IGlzIGFyYml0cmFyaWx5IGNob3NlbjsKPiA+PiBm b3IgZXhhbXBsZSB5b3UndmUgY2hvc2VuIHRoZSBiYW5rIGZvciB0aGUgYWI4NTAwIHJlZy4gSXQg aXMgbm90Cj4gPj4gYSBkZWZpbmVkIGVudGl0eSwgbGlrZSBhbiBJMkMgYWRkcmVzcyBpZiB5b3Vy IHBhcmVudCBpcyBhbiBJMkMgYnVzLAo+ID4+IG9yIGEgU1BJIGNoaXAgc2VsZWN0LCBvciB0aGUg bWVtb3J5IGFkZHJlc3MgaW4gY2FzZSBvZiBNTUlPLiBJbnN0ZWFkCj4gPj4gdGhlIGRldmljZSBk cml2ZXIgY3JlYXRvciBqdXN0IGNob29zZXMgc29tZSAicmFuZG9tIiBwcm9wZXJ0eSBmcm9tCj4g Pj4gdGhlIGRhdGFzaGVldDsgYW5vdGhlciBkZXZpY2UgY3JlYXRvciBtaWdodCBoYXZlIGNob3Nl biBhbm90aGVyCj4gPj4gcHJvcGVydHkuIFdvdWxkbid0IGl0IG1ha2UgbW9yZSBzZW5zZSwgdG8g anVzdCBzYXkgdGhpcyBNRkQgcHJvdmlkZXMKPiA+PiBOIHB3bSBkZXZpY2VzIGFuZCB0aGUgc3Vi bm9kZXMgYXJlIG1hdGNoaW5nIGJhc2VkIG9uIHB3bS17MCwxLi5OLTF9Pwo+ID4+IFRoYXQgd291 bGQgYWxzbyBiZSB0aGUgbG9naWNhbCBjb25zZXF1ZW5jZSBvZiB0aGUgY3VycmVudCBNRkQgc3Vi Cj4gPj4gZGV2aWNlIHRvIE9GIG5vZGUgbWF0Y2hpbmcgY29kZSwgd2hpY2gganVzdCBzdXBwb3J0 cyBOPTEuCgpJdCdzIGZ1bm55LiAgWW91IHJlaXRlcmF0ZSB0aGluZ3MgbGlrZSAiYXJiaXRyYXJp bHkgY2hvc2VuIiBhbmQKInJhbmRvbWx5IGNob3NlbiBmcm9tIHRoZSBkYXRhc2hlZXQiIGJ1dCB5 ZXQgeW91ciBzdWdnZXN0aW9uIGlzIGp1c3QKdGhhdC4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMg dGhhdCB5b3Ugd2lzaCB0byBwbGFjZSB0aGUgbnVtZXJpY2FsCmRpZmZlcmVudGlhdG9yIGluIHRo ZSBub2RlIG5hbWUsIHJhdGhlciB0aGFuIHRoZSByZWcgcHJvcGVydHkuICBXb3JzZQpzdGlsbCwg eW91IGFyZSBzdWdnZXN0aW5nIHRoYXQgeW91IHdpc2ggdG8ganVzdCBlbnVtZXJhdGUgdGhlbSBv ZmYKc2VxdWVudGlhbGx5IGZyb20gc29tZSBhcmJpdHJhcnkgYmFzZSAobGlrZWx5IDApLgoKSSBk b24ndCBrbm93IG9mIG1hbnkgY2FzZXMgb2ZmLCB0aGUgdG9wIG9mIG15IGhlYWQgYXQgbGVhc3Qs IHdoZXJlCnRoaXMgaXMgYSBwcm9ibGVtLiAgQXMgeW91J3ZlIG1lbnRpb25lZCwgaW4gdGhlIGNh c2Ugb2YgdGhlIEFCODUwMCwKdGhlIGJhbmsgaXMgdXNlZCB3aGljaCBpcyBzZW1hbnRpY2FsbHkg aG93IHRoZSBkZXZpY2VzIGFyZSBhY3R1YWxseQphZGRyZXNzZWQuICBJdCdzIG5vdCByYW5kb20s IGl0J3MgcGh5c2ljYWwuCgpIb3cgYXJlIHRoZSBpZGVudGljYWwgZGV2aWNlcyBhZGRyZXNzZWQv aWRlbnRpZmllZC9kaWZmZXJlbnRpYXRlZApmcm9tIGVhY2ggb3RoZXIgb24geW91ciBIL1c/ICBZ b3UgbXVzdCBoYXZlIGEgd2F5IG9mIHNheWluZyAiSSB3YW50ClBXTSBYIHRvIGFjdCBpbiBhIGRp ZmZlcmVudCB3YXkgZnJvbSBQV00gWSIuICBXaGF0IGlzICdYJyBhbmQgJ1knIGluCnlvdXIgZGF0 YXNoZWV0PwoKLS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpTZW5pb3IgVGVjaG5pY2FsIExlYWQg LSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUg Zm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK