From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752408AbaBNJOO (ORCPT ); Fri, 14 Feb 2014 04:14:14 -0500 Received: from mail-wi0-f177.google.com ([209.85.212.177]:48404 "EHLO mail-wi0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752266AbaBNJNu (ORCPT ); Fri, 14 Feb 2014 04:13:50 -0500 Date: Fri, 14 Feb 2014 09:13:43 +0000 From: Lee Jones To: Laszlo Papp Cc: Guenter Roeck , Jean Delvare , LKML , lm-sensors@lm-sensors.org Subject: Re: [lm-sensors] [RFC PATCH] hwmon: (max6650) Convert to be a platform driver Message-ID: <20140214091343.GE3403@lee--X1> References: <1392281438-31836-1-git-send-email-lpapp@kde.org> <20140213095817.GD32508@lee--X1> <20140213111530.2a2b4982@endymion.delvare> <20140213113313.GL32508@lee--X1> <52FCEFEF.80707@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > >>>>>>>> -static int max6650_probe(struct i2c_client *client, > >>>>>>>> - const struct i2c_device_id *id); > >>>>>>>> -static int max6650_init_client(struct i2c_client *client); > >>>>>>>> -static int max6650_remove(struct i2c_client *client); > >>>>>>>> +static int max6650_probe(struct platform_device *pdev); > >>>>>>>> +static int max6650_init_client(struct platform_device *pdev); > >>>>>>>> +static int max6650_remove(struct platform_device *pdev); > >>>>>>>> static struct max6650_data *max6650_update_device(struct device > >>>>>>>> *dev); > >>>>>>> > >>>>>>> > >>>>>>> It would be good to remove these forward declarations in the future. > >>>>>>> > >>>>>>> If no one volunteers I'll happily do it. > >>>>>> > >>>>>> > >>>>>> Guenter just did: > >>>>>> > >>>>>> > >>>>>> http://lists.lm-sensors.org/pipermail/lm-sensors/2014-February/041224.html > >>>>>> > >>>>>> Any change to the max6650 driver should go on top of his patch series > >>>>>> to avoid conflicts: > >>>>>> > >>>>>> > >>>>>> http://lists.lm-sensors.org/pipermail/lm-sensors/2014-February/041223.html > >>>>> > >>>>> > >>>> As far as I can see, that patch set was not even tested, so how can it > >>>> go in? I was told that any patch should be _runtime_ tested, too. > >>>> Fwiw, I do not have time to test those personally, he would need to > >>>> find someone else if that requirement really holds true. > >>>> > >>>> I would not really like to fix bugs appearing in that code to get my > >>>> features in. > >>>> > >>>> Also, since my change has been around for 2-3 months now, I would > >>>> really prefer not to be forced to rewrite it again from scratch. > >>>> Surely, you can wait with those, more or less, cosmetic non-runtime > >>>> tested changes? > >>>> > >>>> This would impose me a lot of additional work again, and I personally > >>>> do not see the benefit of it. In my book at least, feature is over > >>>> internal polishing. > >>> > >>> > >>> Right, I've had enough. I'm removing your patch from the MFD tree. > >>> > >>> I've asked too many people to give you a second chance and asked you > >>> privately to behave yourself and treat others with respect. So far I > >>> haven't seen an ounce of self control or depomacy from you. > >>> > >>> This is how it's going to work from now on: > >>> > >>> - You submit a patch > >>> - It gets reviewed <----\ > >>> - You fix up the review comments as requested -----/ > >>> - Non-compliance or arguments with the _experts_ results in: > >>> `$INTEREST > /dev/null || \ > >>> grep "From: Laszio Papp" ~/.mail | xargs rm -rf` > >> > >> > >> http://comments.gmane.org/gmane.linux.kernel/1645251 > >> > >> Step 2 did not happen. I did not get any review for my change. I > >> literally submitted that within a couple of hours after the request. > >> > > > > If you had tested your patch on real or simulated hardware, > > you might have noticed a crash whenever you accessed any > > of the attributes. So you did not test your patch. > > > > Instead of trying to educate you how the conversion to the > > new API works, I decided to help you out a bit and do > > the conversion myself. > > I am afraid that with this attitude and approach towards potential new > contributors, you will put more and more work on you making it more > difficult to get things done at large. "Educating" new people is a win > in the long run, and this is a general practice out there before > claiming that I am crazy (e.g. someone even told me in the kernel > circles that is "rude"). > > I am surprised that mentoring new people is considered bad idea in > here. Since there is no guarantee you would not do it next time if I > tried to put effort into contributing, I feel more comfortable to skip > this project for now, and work where I know this cannot happen. > Currently, I do not feel inclusive in this project due to this > approach. > > I do not even claim that you would be this to me intentionally, but it > has happened either way. I agree that if Guenter was to go ahead and convert this driver to an MFD one, then that would be rude conduct. However, the work undertaken by him was 'add-on' work which you clearly weren't comfortable with. I think he was genuinely doing you a favour rather than 'stealing your thunder'. His work has paved the way for yours and should make your work easier in the long run. NB: Rebasing on top of different HEADs and other people's work is just a fact of life in the kernel. If you find it difficult, stick around. You'll get better at it with practice. > > I did some cleanup before, since > > that made the actual feature patch easier for me to implement, > > and I did some more cleanup afterwards just because I like > > cleaning up code. > > IMO, it is not worth making the git history noisy with needless > re-arranging like forward headers, but that is just my opinion. Please > do not say, it is rude and not respectful. I definitely respect your > opinion, I just do not agree with it, but that is fine, you are a > maintainer so you get to decide, I guess. That being said, perhaps I > missed something why such re-arranging outweighs the git history > disadvantage. =:-D We have nearly half a million commits in the Mainline kernel since v2.6.12. I don't think Git history is even a consideration here. Also, we really don't like forward declarations in the kernel. Guenter's clean-ups where good ones. We can't stop cleaning up and developing in the fear that someone else is working on that same driver. We have lots of people making changes to the same files all over the kernel. Get good at `git rebase`ing and there is no issue, it's just another day in the life of a Kernel Developer. If you'd spend more time rebasing and coding as you do writing emails, you'd have had this done by now. :) -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Date: Fri, 14 Feb 2014 09:13:43 +0000 Subject: Re: [lm-sensors] [RFC PATCH] hwmon: (max6650) Convert to be a platform driver Message-Id: <20140214091343.GE3403@lee--X1> List-Id: References: <1392281438-31836-1-git-send-email-lpapp@kde.org> <20140213095817.GD32508@lee--X1> <20140213111530.2a2b4982@endymion.delvare> <20140213113313.GL32508@lee--X1> <52FCEFEF.80707@roeck-us.net> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Laszlo Papp Cc: Guenter Roeck , Jean Delvare , LKML , lm-sensors@lm-sensors.org PiA+Pj4+Pj4+PiAtc3RhdGljIGludCBtYXg2NjUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQsCj4gPj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGkyY19k ZXZpY2VfaWQgKmlkKTsKPiA+Pj4+Pj4+PiAtc3RhdGljIGludCBtYXg2NjUwX2luaXRfY2xpZW50 KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+ID4+Pj4+Pj4+IC1zdGF0aWMgaW50IG1heDY2 NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+ID4+Pj4+Pj4+ICtzdGF0aWMg aW50IG1heDY2NTBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7Cj4gPj4+Pj4+ Pj4gK3N0YXRpYyBpbnQgbWF4NjY1MF9pbml0X2NsaWVudChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KTsKPiA+Pj4+Pj4+PiArc3RhdGljIGludCBtYXg2NjUwX3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KTsKPiA+Pj4+Pj4+PiAgIHN0YXRpYyBzdHJ1Y3QgbWF4NjY1MF9k YXRhICptYXg2NjUwX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZQo+ID4+Pj4+Pj4+ICpkZXYp Owo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBJdCB3b3VsZCBiZSBnb29kIHRvIHJlbW92 ZSB0aGVzZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiB0aGUgZnV0dXJlLgo+ID4+Pj4+Pj4KPiA+ Pj4+Pj4+IElmIG5vIG9uZSB2b2x1bnRlZXJzIEknbGwgaGFwcGlseSBkbyBpdC4KPiA+Pj4+Pj4K PiA+Pj4+Pj4KPiA+Pj4+Pj4gR3VlbnRlciBqdXN0IGRpZDoKPiA+Pj4+Pj4KPiA+Pj4+Pj4KPiA+ Pj4+Pj4gaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL3BpcGVybWFpbC9sbS1zZW5zb3JzLzIw MTQtRmVicnVhcnkvMDQxMjI0Lmh0bWwKPiA+Pj4+Pj4KPiA+Pj4+Pj4gQW55IGNoYW5nZSB0byB0 aGUgbWF4NjY1MCBkcml2ZXIgc2hvdWxkIGdvIG9uIHRvcCBvZiBoaXMgcGF0Y2ggc2VyaWVzCj4g Pj4+Pj4+IHRvIGF2b2lkIGNvbmZsaWN0czoKPiA+Pj4+Pj4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gaHR0 cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL3BpcGVybWFpbC9sbS1zZW5zb3JzLzIwMTQtRmVicnVh cnkvMDQxMjIzLmh0bWwKPiA+Pj4+Pgo+ID4+Pj4+Cj4gPj4+PiBBcyBmYXIgYXMgSSBjYW4gc2Vl LCB0aGF0IHBhdGNoIHNldCB3YXMgbm90IGV2ZW4gdGVzdGVkLCBzbyBob3cgY2FuIGl0Cj4gPj4+ PiBnbyBpbj8gSSB3YXMgdG9sZCB0aGF0IGFueSBwYXRjaCBzaG91bGQgYmUgX3J1bnRpbWVfIHRl c3RlZCwgdG9vLgo+ID4+Pj4gRndpdywgSSBkbyBub3QgaGF2ZSB0aW1lIHRvIHRlc3QgdGhvc2Ug cGVyc29uYWxseSwgaGUgd291bGQgbmVlZCB0bwo+ID4+Pj4gZmluZCBzb21lb25lIGVsc2UgaWYg dGhhdCByZXF1aXJlbWVudCByZWFsbHkgaG9sZHMgdHJ1ZS4KPiA+Pj4+Cj4gPj4+PiBJIHdvdWxk IG5vdCByZWFsbHkgbGlrZSB0byBmaXggYnVncyBhcHBlYXJpbmcgaW4gdGhhdCBjb2RlIHRvIGdl dCBteQo+ID4+Pj4gZmVhdHVyZXMgaW4uCj4gPj4+Pgo+ID4+Pj4gQWxzbywgc2luY2UgbXkgY2hh bmdlIGhhcyBiZWVuIGFyb3VuZCBmb3IgMi0zIG1vbnRocyBub3csIEkgd291bGQKPiA+Pj4+IHJl YWxseSBwcmVmZXIgbm90IHRvIGJlIGZvcmNlZCB0byByZXdyaXRlIGl0IGFnYWluIGZyb20gc2Ny YXRjaC4KPiA+Pj4+IFN1cmVseSwgeW91IGNhbiB3YWl0IHdpdGggdGhvc2UsIG1vcmUgb3IgbGVz cywgY29zbWV0aWMgbm9uLXJ1bnRpbWUKPiA+Pj4+IHRlc3RlZCBjaGFuZ2VzPwo+ID4+Pj4KPiA+ Pj4+IFRoaXMgd291bGQgaW1wb3NlIG1lIGEgbG90IG9mIGFkZGl0aW9uYWwgd29yayBhZ2Fpbiwg YW5kIEkgcGVyc29uYWxseQo+ID4+Pj4gZG8gbm90IHNlZSB0aGUgYmVuZWZpdCBvZiBpdC4gSW4g bXkgYm9vayBhdCBsZWFzdCwgZmVhdHVyZSBpcyBvdmVyCj4gPj4+PiBpbnRlcm5hbCBwb2xpc2hp bmcuCj4gPj4+Cj4gPj4+Cj4gPj4+IFJpZ2h0LCBJJ3ZlIGhhZCBlbm91Z2guIEknbSByZW1vdmlu ZyB5b3VyIHBhdGNoIGZyb20gdGhlIE1GRCB0cmVlLgo+ID4+Pgo+ID4+PiBJJ3ZlIGFza2VkIHRv byBtYW55IHBlb3BsZSB0byBnaXZlIHlvdSBhIHNlY29uZCBjaGFuY2UgYW5kIGFza2VkIHlvdQo+ ID4+PiBwcml2YXRlbHkgdG8gYmVoYXZlIHlvdXJzZWxmIGFuZCB0cmVhdCBvdGhlcnMgd2l0aCBy ZXNwZWN0LiBTbyBmYXIgSQo+ID4+PiBoYXZlbid0IHNlZW4gYW4gb3VuY2Ugb2Ygc2VsZiBjb250 cm9sIG9yIGRlcG9tYWN5IGZyb20geW91Lgo+ID4+Pgo+ID4+PiBUaGlzIGlzIGhvdyBpdCdzIGdv aW5nIHRvIHdvcmsgZnJvbSBub3cgb246Cj4gPj4+Cj4gPj4+ICAgLSBZb3Ugc3VibWl0IGEgcGF0 Y2gKPiA+Pj4gICAtIEl0IGdldHMgcmV2aWV3ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC0tLS1cCj4gPj4+ICAgLSBZb3UgZml4IHVwIHRoZSByZXZpZXcgY29tbWVudHMgYXMgcmVxdWVz dGVkIC0tLS0tLwo+ID4+PiAgIC0gTm9uLWNvbXBsaWFuY2Ugb3IgYXJndW1lbnRzIHdpdGggdGhl IF9leHBlcnRzXyByZXN1bHRzIGluOgo+ID4+PiAgICAgIGAkSU5URVJFU1QgPiAvZGV2L251bGwg fHwgXAo+ID4+PiAgICAgICAgZ3JlcCAiRnJvbTogTGFzemlvIFBhcHAiIH4vLm1haWwgfCB4YXJn cyBybSAtcmZgCj4gPj4KPiA+Pgo+ID4+IGh0dHA6Ly9jb21tZW50cy5nbWFuZS5vcmcvZ21hbmUu bGludXgua2VybmVsLzE2NDUyNTEKPiA+Pgo+ID4+IFN0ZXAgMiBkaWQgbm90IGhhcHBlbi4gSSBk aWQgbm90IGdldCBhbnkgcmV2aWV3IGZvciBteSBjaGFuZ2UuIEkKPiA+PiBsaXRlcmFsbHkgc3Vi bWl0dGVkIHRoYXQgd2l0aGluIGEgY291cGxlIG9mIGhvdXJzIGFmdGVyIHRoZSByZXF1ZXN0Lgo+ ID4+Cj4gPgo+ID4gSWYgeW91IGhhZCB0ZXN0ZWQgeW91ciBwYXRjaCBvbiByZWFsIG9yIHNpbXVs YXRlZCBoYXJkd2FyZSwKPiA+IHlvdSBtaWdodCBoYXZlIG5vdGljZWQgYSBjcmFzaCB3aGVuZXZl ciB5b3UgYWNjZXNzZWQgYW55Cj4gPiBvZiB0aGUgYXR0cmlidXRlcy4gU28geW91IGRpZCBub3Qg dGVzdCB5b3VyIHBhdGNoLgo+ID4KPiA+IEluc3RlYWQgb2YgdHJ5aW5nIHRvIGVkdWNhdGUgeW91 IGhvdyB0aGUgY29udmVyc2lvbiB0byB0aGUKPiA+IG5ldyBBUEkgd29ya3MsIEkgZGVjaWRlZCB0 byBoZWxwIHlvdSBvdXQgYSBiaXQgYW5kIGRvCj4gPiB0aGUgY29udmVyc2lvbiBteXNlbGYuCj4g Cj4gSSBhbSBhZnJhaWQgdGhhdCB3aXRoIHRoaXMgYXR0aXR1ZGUgYW5kIGFwcHJvYWNoIHRvd2Fy ZHMgcG90ZW50aWFsIG5ldwo+IGNvbnRyaWJ1dG9ycywgeW91IHdpbGwgcHV0IG1vcmUgYW5kIG1v cmUgd29yayBvbiB5b3UgbWFraW5nIGl0IG1vcmUKPiBkaWZmaWN1bHQgdG8gZ2V0IHRoaW5ncyBk b25lIGF0IGxhcmdlLiAiRWR1Y2F0aW5nIiBuZXcgcGVvcGxlIGlzIGEgd2luCj4gaW4gdGhlIGxv bmcgcnVuLCBhbmQgdGhpcyBpcyBhIGdlbmVyYWwgcHJhY3RpY2Ugb3V0IHRoZXJlIGJlZm9yZQo+ IGNsYWltaW5nIHRoYXQgSSBhbSBjcmF6eSAoZS5nLiBzb21lb25lIGV2ZW4gdG9sZCBtZSBpbiB0 aGUga2VybmVsCj4gY2lyY2xlcyB0aGF0IGlzICJydWRlIikuCj4gCj4gSSBhbSBzdXJwcmlzZWQg dGhhdCBtZW50b3JpbmcgbmV3IHBlb3BsZSBpcyBjb25zaWRlcmVkIGJhZCBpZGVhIGluCj4gaGVy ZS4gU2luY2UgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHlvdSB3b3VsZCBub3QgZG8gaXQgbmV4dCB0 aW1lIGlmIEkKPiB0cmllZCB0byBwdXQgZWZmb3J0IGludG8gY29udHJpYnV0aW5nLCBJIGZlZWwg bW9yZSBjb21mb3J0YWJsZSB0byBza2lwCj4gdGhpcyBwcm9qZWN0IGZvciBub3csIGFuZCB3b3Jr IHdoZXJlIEkga25vdyB0aGlzIGNhbm5vdCBoYXBwZW4uCj4gQ3VycmVudGx5LCBJIGRvIG5vdCBm ZWVsIGluY2x1c2l2ZSBpbiB0aGlzIHByb2plY3QgZHVlIHRvIHRoaXMKPiBhcHByb2FjaC4KPiAK PiBJIGRvIG5vdCBldmVuIGNsYWltIHRoYXQgeW91IHdvdWxkIGJlIHRoaXMgdG8gbWUgaW50ZW50 aW9uYWxseSwgYnV0IGl0Cj4gaGFzIGhhcHBlbmVkIGVpdGhlciB3YXkuCgpJIGFncmVlIHRoYXQg aWYgR3VlbnRlciB3YXMgdG8gZ28gYWhlYWQgYW5kIGNvbnZlcnQgdGhpcyBkcml2ZXIgdG8gYW4K TUZEIG9uZSwgdGhlbiB0aGF0IHdvdWxkIGJlIHJ1ZGUgY29uZHVjdC4gSG93ZXZlciwgdGhlIHdv cmsgdW5kZXJ0YWtlbgpieSBoaW0gd2FzICdhZGQtb24nIHdvcmsgd2hpY2ggeW91IGNsZWFybHkg d2VyZW4ndCBjb21mb3J0YWJsZSB3aXRoLiBJCnRoaW5rIGhlIHdhcyBnZW51aW5lbHkgZG9pbmcg eW91IGEgZmF2b3VyIHJhdGhlciB0aGFuICdzdGVhbGluZyB5b3VyCnRodW5kZXInLiBIaXMgd29y ayBoYXMgcGF2ZWQgdGhlIHdheSBmb3IgeW91cnMgYW5kIHNob3VsZCBtYWtlIHlvdXIKd29yayBl YXNpZXIgaW4gdGhlIGxvbmcgcnVuLgoKTkI6IFJlYmFzaW5nIG9uIHRvcCBvZiBkaWZmZXJlbnQg SEVBRHMgYW5kIG90aGVyIHBlb3BsZSdzIHdvcmsgaXMganVzdAphIGZhY3Qgb2YgbGlmZSBpbiB0 aGUga2VybmVsLiBJZiB5b3UgZmluZCBpdCBkaWZmaWN1bHQsIHN0aWNrCmFyb3VuZC4gWW91J2xs IGdldCBiZXR0ZXIgYXQgaXQgd2l0aCBwcmFjdGljZS4KCj4gPiBJIGRpZCBzb21lIGNsZWFudXAg YmVmb3JlLCBzaW5jZQo+ID4gdGhhdCBtYWRlIHRoZSBhY3R1YWwgZmVhdHVyZSBwYXRjaCBlYXNp ZXIgZm9yIG1lIHRvIGltcGxlbWVudCwKPiA+IGFuZCBJIGRpZCBzb21lIG1vcmUgY2xlYW51cCBh ZnRlcndhcmRzIGp1c3QgYmVjYXVzZSBJIGxpa2UKPiA+IGNsZWFuaW5nIHVwIGNvZGUuCj4gCj4g SU1PLCBpdCBpcyBub3Qgd29ydGggbWFraW5nIHRoZSBnaXQgaGlzdG9yeSBub2lzeSB3aXRoIG5l ZWRsZXNzCj4gcmUtYXJyYW5naW5nIGxpa2UgZm9yd2FyZCBoZWFkZXJzLCBidXQgdGhhdCBpcyBq dXN0IG15IG9waW5pb24uIFBsZWFzZQo+IGRvIG5vdCBzYXksIGl0IGlzIHJ1ZGUgYW5kIG5vdCBy ZXNwZWN0ZnVsLiBJIGRlZmluaXRlbHkgcmVzcGVjdCB5b3VyCj4gb3BpbmlvbiwgSSBqdXN0IGRv IG5vdCBhZ3JlZSB3aXRoIGl0LCBidXQgdGhhdCBpcyBmaW5lLCB5b3UgYXJlIGEKPiBtYWludGFp bmVyIHNvIHlvdSBnZXQgdG8gZGVjaWRlLCBJIGd1ZXNzLiBUaGF0IGJlaW5nIHNhaWQsIHBlcmhh cHMgSQo+IG1pc3NlZCBzb21ldGhpbmcgd2h5IHN1Y2ggcmUtYXJyYW5naW5nIG91dHdlaWdocyB0 aGUgZ2l0IGhpc3RvcnkKPiBkaXNhZHZhbnRhZ2UuCgo9Oi1ECgpXZSBoYXZlIG5lYXJseSBoYWxm IGEgbWlsbGlvbiBjb21taXRzIGluIHRoZSBNYWlubGluZSBrZXJuZWwgc2luY2UKdjIuNi4xMi4g SSBkb24ndCB0aGluayBHaXQgaGlzdG9yeSBpcyBldmVuIGEgY29uc2lkZXJhdGlvbiBoZXJlLiBB bHNvLAp3ZSByZWFsbHkgZG9uJ3QgbGlrZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiB0aGUga2Vy bmVsLiBHdWVudGVyJ3MKY2xlYW4tdXBzIHdoZXJlIGdvb2Qgb25lcy4gV2UgY2FuJ3Qgc3RvcCBj bGVhbmluZyB1cCBhbmQgZGV2ZWxvcGluZyBpbgp0aGUgZmVhciB0aGF0IHNvbWVvbmUgZWxzZSBp cyB3b3JraW5nIG9uIHRoYXQgc2FtZSBkcml2ZXIuIFdlIGhhdmUKbG90cyBvZiBwZW9wbGUgbWFr aW5nIGNoYW5nZXMgdG8gdGhlIHNhbWUgZmlsZXMgYWxsIG92ZXIgdGhlIGtlcm5lbC4KR2V0IGdv b2QgYXQgYGdpdCByZWJhc2VgaW5nIGFuZCB0aGVyZSBpcyBubyBpc3N1ZSwgaXQncyBqdXN0IGFu b3RoZXIKZGF5IGluIHRoZSBsaWZlIG9mIGEgS2VybmVsIERldmVsb3Blci4KCklmIHlvdSdkIHNw ZW5kIG1vcmUgdGltZSByZWJhc2luZyBhbmQgY29kaW5nIGFzIHlvdSBkbyB3cml0aW5nIGVtYWls cywKeW91J2QgaGF2ZSBoYWQgdGhpcyBkb25lIGJ5IG5vdy4gOikKCi0tIApMZWUgSm9uZXMKTGlu YXJvIFNUTWljcm9lbGVjdHJvbmljcyBMYW5kaW5nIFRlYW0gTGVhZApMaW5hcm8ub3JnIOKUgiBP cGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQVJNIFNvQ3MKRm9sbG93IExpbmFybzogRmFjZWJvb2sg fCBUd2l0dGVyIHwgQmxvZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9y ZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz