From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4344 invoked by alias); 20 Oct 2010 22:56:54 -0000 Received: (qmail 4331 invoked by uid 22791); 20 Oct 2010 22:56:50 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 20 Oct 2010 22:56:43 +0000 Received: from kpbe19.cbf.corp.google.com (kpbe19.cbf.corp.google.com [172.25.105.83]) by smtp-out.google.com with ESMTP id o9KMuf91014224 for ; Wed, 20 Oct 2010 15:56:41 -0700 Received: from gye5 (gye5.prod.google.com [10.243.50.5]) by kpbe19.cbf.corp.google.com with ESMTP id o9KMuSj7030445 for ; Wed, 20 Oct 2010 15:56:40 -0700 Received: by gye5 with SMTP id 5so179525gye.24 for ; Wed, 20 Oct 2010 15:56:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.42.26.210 with SMTP id g18mr6115195icc.462.1287615399866; Wed, 20 Oct 2010 15:56:39 -0700 (PDT) Received: by 10.220.118.2 with HTTP; Wed, 20 Oct 2010 15:56:39 -0700 (PDT) In-Reply-To: <83bp6q9g4r.fsf@gnu.org> References: <20101019155311.038842461AD@ruffy.mtv.corp.google.com> <83bp6q9g4r.fsf@gnu.org> Date: Wed, 20 Oct 2010 22:56:00 -0000 Message-ID: Subject: Re: [doc RFA] Clean up coding standards, add python coding standards. From: Doug Evans To: Eli Zaretskii Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf304353e284321604931452f3 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-10/txt/msg00322.txt.bz2 --20cf304353e284321604931452f3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2695 On Tue, Oct 19, 2010 at 11:44 AM, Eli Zaretskii wrote: > > > Date: Tue, 19 Oct 2010 08:53:10 -0700 (PDT) > > From: dje@google.com (Doug Evans) > > > > I think it is wrong that a discussion of cleanups appears in the same > > chapter as coding standards. =A0Ditto for a few other subsections > > in the existing Coding chapter. > > > > This patch creates a new Coding Standards chapter to put such things in, > > and I've added a section on Python coding standards. > > Thanks. > > > I'm not happy with the name "Miscellaneous Coding Guidelines" but it > > works well enough for me. =A0Feel free to suggest an alternatives. > > "Misc Guidelines"? =A0In general, node names should be short, because > they are displayed on the mode line and header line of the Info > readers, where space is at premium. =A0(Section names, OTOH, can be > longer.) > > > Ok to check in? > > Could you tell me if you made any changes in the "Internal Error > Handling" part, or just moved it without any changes? =A0If you just > moved it, I won't need to review that part. > > > -* Coding:: > > +* Miscellaneous Coding Guidelines:: > > +* Coding Standards:: > > I think "Coding Standards" should be before the new "Misc" section. > > > +@value{GDBN} follows the published @code{Python} coding standards in > > +@code{PEP008}. > > +See @uref{http://www.python.org/dev/peps/pep-0008/, PEP008}. > > This is suboptimal usage of @uref. =A0I suggest this instead: > > =A0@value{GDBN} follows the published @code{Python} coding standards in > =A0@uref{http://www.python.org/dev/peps/pep-0008/, @code{PEP008}}. > > > +In addition, the Google standards are also followed where they do not > > +conflict with @code{PEP008}. > > +See @uref{http://google-styleguide.googlecode.com/svn/trunk/pyguide.ht= ml, > > +Google Python Style Guide}. > > Same here: > > =A0In addition, the guidelines in the > =A0@uref{http://google-styleguide.googlecode.com/svn/trunk/pyguide.html, > =A0Google Python Style Guide} are also followed where they do not > =A0conflict with @code{PEP008}. > > Okay with those changes (assuming that the "Internal Error Handling" > stuff was moved without any change). > > Thanks for taking care of this. Here is the patch I checked in. Besides making the requested changes, I noticed that some sections in "Misc Guidelines" were marked as subsections and fixed them too. 2010-10-20 Doug Evans * gdbint.texinfo (Misc Guidelines): Renamed from Coding. All references updated. Correct sections marked as subsections. (Coding Standards): New chapter. Move the coding standard related subsections here. Add section on Python coding standards. --20cf304353e284321604931452f3 Content-Type: text/plain; charset=US-ASCII; name="gdb-101020-python-coding-2.patch.txt" Content-Disposition: attachment; filename="gdb-101020-python-coding-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gfisy0n10 Content-length: 26316 MjAxMC0xMC0yMCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog Z2RiaW50LnRleGluZm8gKE1pc2MgR3VpZGVsaW5lcyk6IFJlbmFtZWQgZnJv bSBDb2RpbmcuCglBbGwgcmVmZXJlbmNlcyB1cGRhdGVkLiAgQ29ycmVjdCBz ZWN0aW9ucyBtYXJrZWQgYXMgc3Vic2VjdGlvbnMuCgkoQ29kaW5nIFN0YW5k YXJkcyk6IE5ldyBjaGFwdGVyLiAgTW92ZSB0aGUgY29kaW5nIHN0YW5kYXJk IHJlbGF0ZWQKCXN1YnNlY3Rpb25zIGhlcmUuICBBZGQgc2VjdGlvbiBvbiBQ eXRob24gY29kaW5nIHN0YW5kYXJkcy4KCkluZGV4OiBnZGJpbnQudGV4aW5m bwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4zMjYKZGlmZiAtdSAtcCAtcjEuMzI2IGdkYmludC50ZXhpbmZvCi0t LSBnZGJpbnQudGV4aW5mbwkyMiBKdW4gMjAxMCAwNTowMzoxOSAtMDAwMAkx LjMyNgorKysgZ2RiaW50LnRleGluZm8JMjAgT2N0IDIwMTAgMjI6NDk6NDYg LTAwMDAKQEAgLTgzLDcgKzgzLDggQEAgYXMgdGhlIG1lY2hhbmlzbXMgdGhh dCBhZGFwdCBAdmFsdWV7R0RCTgogKiBUYXJnZXQgVmVjdG9yIERlZmluaXRp b246OgogKiBOYXRpdmUgRGVidWdnaW5nOjoKICogU3VwcG9ydCBMaWJyYXJp ZXM6OgotKiBDb2Rpbmc6OgorKiBDb2RpbmcgU3RhbmRhcmRzOjoKKyogTWlz YyBHdWlkZWxpbmVzOjoKICogUG9ydGluZyBHREI6OgogKiBWZXJzaW9ucyBh bmQgQnJhbmNoZXM6OgogKiBTdGFydCBvZiBOZXcgWWVhciBQcm9jZWR1cmU6 OgpAQCAtMTMyMiw5ICsxMzIzLDkgQEAgYmUgc2lnbmFsZWQuCiAKIEBkZWZ0 eXBlZnVuIHtzdHJ1Y3QgY2xlYW51cCAqfSBtYWtlX2NsZWFudXBfdWlfb3V0 X3R1cGxlX2JlZ2luX2VuZCAoc3RydWN0IHVpX291dCAqQHZhcnt1aW91dH0s IGNvbnN0IGNoYXIgKkB2YXJ7aWR9KQogVGhpcyBmdW5jdGlvbiBmaXJzdCBv cGVucyB0aGUgdHVwbGUgYW5kIHRoZW4gZXN0YWJsaXNoZXMgYSBjbGVhbnVw Ci0oQHB4cmVme0NvZGluZywgQ2xlYW51cHN9KSB0byBjbG9zZSB0aGUgdHVw bGUuICBJdCBwcm92aWRlcyBhIGNvbnZlbmllbnQKLWFuZCBjb3JyZWN0IGlt cGxlbWVudGF0aW9uIG9mIHRoZSBub24tcG9ydGFibGVAZm9vdG5vdGV7VGhl IGZ1bmN0aW9uCi1jYXN0IGlzIG5vdCBwb3J0YWJsZSBJU08gQy59IGNvZGUg c2VxdWVuY2U6CisoQHB4cmVme01pc2MgR3VpZGVsaW5lcywgQ2xlYW51cHN9 KSB0byBjbG9zZSB0aGUgdHVwbGUuCitJdCBwcm92aWRlcyBhIGNvbnZlbmll bnQgYW5kIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhlCitub24tcG9y dGFibGVAZm9vdG5vdGV7VGhlIGZ1bmN0aW9uIGNhc3QgaXMgbm90IHBvcnRh YmxlIElTTyBDLn0gY29kZSBzZXF1ZW5jZToKIEBzbWFsbGV4YW1wbGUKIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cDsKIHVpX291dF90dXBsZV9iZWdp biAodWlvdXQsICIuLi4iKTsKQEAgLTEzNDksNyArMTM1MCw4IEBAIGJlIHNp Z25hbGVkLgogCiBAZGVmdHlwZWZ1biB7c3RydWN0IGNsZWFudXAgKn0gbWFr ZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2luX2VuZCAoc3RydWN0IHVpX291 dCAqQHZhcnt1aW91dH0sIGNvbnN0IGNoYXIgKkB2YXJ7aWR9KQogU2ltaWxh ciB0byBAY29kZXttYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2Vu ZH0sIHRoaXMgZnVuY3Rpb24KLW9wZW5zIGEgbGlzdCBhbmQgdGhlbiBlc3Rh Ymxpc2hlcyBjbGVhbnVwIChAcHhyZWZ7Q29kaW5nLCBDbGVhbnVwc30pCitv cGVucyBhIGxpc3QgYW5kIHRoZW4gZXN0YWJsaXNoZXMgY2xlYW51cAorKEBw eHJlZntNaXNjIEd1aWRlbGluZXMsIENsZWFudXBzfSkKIHRoYXQgd2lsbCBj bG9zZSB0aGUgbGlzdC4KIEBlbmQgZGVmdHlwZWZ1bgogCkBAIC01NzU2LDkg KzU3NTgsMjM1IEBAIEJpbmFyeSBzZWFyY2ggdGhlIGFycmF5LgogCiBAc2Vj dGlvbiBpbmNsdWRlCiAKLUBub2RlIENvZGluZworQG5vZGUgQ29kaW5nIFN0 YW5kYXJkcwogCi1AY2hhcHRlciBDb2RpbmcKK0BjaGFwdGVyIENvZGluZyBT dGFuZGFyZHMKK0BjaW5kZXggY29kaW5nIHN0YW5kYXJkcworCitAc2VjdGlv biBAdmFsdWV7R0RCTn0gQyBDb2RpbmcgU3RhbmRhcmRzCisKK0B2YWx1ZXtH REJOfSBmb2xsb3dzIHRoZSBHTlUgY29kaW5nIHN0YW5kYXJkcywgYXMgZGVz Y3JpYmVkIGluCitAZmlsZXtldGMvc3RhbmRhcmRzLnRleGl9LiAgVGhpcyBm aWxlIGlzIGFsc28gYXZhaWxhYmxlIGZvciBhbm9ueW1vdXMKK0ZUUCBmcm9t IEdOVSBhcmNoaXZlIHNpdGVzLiAgQHZhbHVle0dEQk59IHRha2VzIGEgc3Ry aWN0IGludGVycHJldGF0aW9uCitvZiB0aGUgc3RhbmRhcmQ7IGluIGdlbmVy YWwsIHdoZW4gdGhlIEdOVSBzdGFuZGFyZCByZWNvbW1lbmRzIGEgcHJhY3Rp Y2UKK2J1dCBkb2VzIG5vdCByZXF1aXJlIGl0LCBAdmFsdWV7R0RCTn0gcmVx dWlyZXMgaXQuCisKK0B2YWx1ZXtHREJOfSBmb2xsb3dzIGFuIGFkZGl0aW9u YWwgc2V0IG9mIGNvZGluZyBzdGFuZGFyZHMgc3BlY2lmaWMgdG8KK0B2YWx1 ZXtHREJOfSwgYXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlv bnMuCisKK0BzdWJzZWN0aW9uIElTTyBDCisKK0B2YWx1ZXtHREJOfSBhc3N1 bWVzIGFuIElTTy9JRUMgOTg5OToxOTkwIChhLmsuYS5AOiBJU08gQzkwKSBj b21wbGlhbnQKK2NvbXBpbGVyLgorCitAdmFsdWV7R0RCTn0gZG9lcyBub3Qg YXNzdW1lIGFuIElTTyBDIG9yIFBPU0lYIGNvbXBsaWFudCBDIGxpYnJhcnku CisKK0BzdWJzZWN0aW9uIEZvcm1hdHRpbmcKKworQGNpbmRleCBzb3VyY2Ug Y29kZSBmb3JtYXR0aW5nCitUaGUgc3RhbmRhcmQgR05VIHJlY29tbWVuZGF0 aW9ucyBmb3IgZm9ybWF0dGluZyBtdXN0IGJlIGZvbGxvd2VkCitzdHJpY3Rs eS4KKworQSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBzaG91bGQgbm90IGhhdmUg aXRzIG5hbWUgaW4gY29sdW1uIHplcm8uICBBCitmdW5jdGlvbiBkZWZpbml0 aW9uIHNob3VsZCBoYXZlIGl0cyBuYW1lIGluIGNvbHVtbiB6ZXJvLgorCitA c21hbGxleGFtcGxlCisvKiBEZWNsYXJhdGlvbiAqLworc3RhdGljIHZvaWQg Zm9vICh2b2lkKTsKKy8qIERlZmluaXRpb24gKi8KK3ZvaWQKK2ZvbyAodm9p ZCkKK0B7CitAfQorQGVuZCBzbWFsbGV4YW1wbGUKKworQGVtcGh7UHJhZ21h dGljczogVGhpcyBzaW1wbGlmaWVzIHNjcmlwdGluZy4gIEZ1bmN0aW9uIGRl ZmluaXRpb25zIGNhbgorYmUgZm91bmQgdXNpbmcgQHNhbXB7XmZ1bmN0aW9u LW5hbWV9Ln0KKworVGhlcmUgbXVzdCBiZSBhIHNwYWNlIGJldHdlZW4gYSBm dW5jdGlvbiBvciBtYWNybyBuYW1lIGFuZCB0aGUgb3BlbmluZworcGFyZW50 aGVzaXMgb2YgaXRzIGFyZ3VtZW50IGxpc3QgKGV4Y2VwdCBmb3IgbWFjcm8g ZGVmaW5pdGlvbnMsIGFzCityZXF1aXJlZCBieSBDKS4gIFRoZXJlIG11c3Qg bm90IGJlIGEgc3BhY2UgYWZ0ZXIgYW4gb3BlbiBwYXJlbi9icmFja2V0Citv ciBiZWZvcmUgYSBjbG9zZSBwYXJlbi9icmFja2V0LgorCitXaGlsZSBhZGRp dGlvbmFsIHdoaXRlc3BhY2UgaXMgZ2VuZXJhbGx5IGhlbHBmdWwgZm9yIHJl YWRpbmcsIGRvIG5vdCB1c2UKK21vcmUgdGhhbiBvbmUgYmxhbmsgbGluZSB0 byBzZXBhcmF0ZSBibG9ja3MsIGFuZCBhdm9pZCBhZGRpbmcgd2hpdGVzcGFj ZQorYWZ0ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0gbGluZSAoYXMgb2YgMS85 OSwgc29tZSA2MDAgbGluZXMgaGFkCit3aGl0ZXNwYWNlIGFmdGVyIHRoZSBz ZW1pY29sb24pLiAgRXhjZXNzIHdoaXRlc3BhY2UgY2F1c2VzIGRpZmZpY3Vs dGllcworZm9yIEBjb2Rle2RpZmZ9IGFuZCBAY29kZXtwYXRjaH0gdXRpbGl0 aWVzLgorCitQb2ludGVycyBhcmUgZGVjbGFyZWQgdXNpbmcgdGhlIHRyYWRp dGlvbmFsIEsmUiBDIHN0eWxlOgorCitAc21hbGxleGFtcGxlCit2b2lkICpm b287CitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRlbnQKK2FuZCBub3Q6 CisKK0BzbWFsbGV4YW1wbGUKK3ZvaWQgKiBmb287Cit2b2lkKiBmb287CitA ZW5kIHNtYWxsZXhhbXBsZQorCitAc3Vic2VjdGlvbiBDb21tZW50cworCitA Y2luZGV4IGNvbW1lbnQgZm9ybWF0dGluZworVGhlIHN0YW5kYXJkIEdOVSBy ZXF1aXJlbWVudHMgb24gY29tbWVudHMgbXVzdCBiZSBmb2xsb3dlZCBzdHJp Y3RseS4KKworQmxvY2sgY29tbWVudHMgbXVzdCBhcHBlYXIgaW4gdGhlIGZv bGxvd2luZyBmb3JtLCB3aXRoIG5vIEBjb2Rley8qfS0gb3IKK0Bjb2Rleyov fS1vbmx5IGxpbmVzLCBhbmQgbm8gbGVhZGluZyBAY29kZXsqfToKKworQHNt YWxsZXhhbXBsZQorLyogV2FpdCBmb3IgY29udHJvbCB0byByZXR1cm4gZnJv bSBpbmZlcmlvciB0byBkZWJ1Z2dlci4gIElmIGluZmVyaW9yCisgICBnZXRz IGEgc2lnbmFsLCB3ZSBtYXkgZGVjaWRlIHRvIHN0YXJ0IGl0IHVwIGFnYWlu IGluc3RlYWQgb2YKKyAgIHJldHVybmluZy4gIFRoYXQgaXMgd2h5IHRoZXJl IGlzIGEgbG9vcCBpbiB0aGlzIGZ1bmN0aW9uLiAgV2hlbgorICAgdGhpcyBm dW5jdGlvbiBhY3R1YWxseSByZXR1cm5zIGl0IG1lYW5zIHRoZSBpbmZlcmlv ciBzaG91bGQgYmUgbGVmdAorICAgc3RvcHBlZCBhbmQgQHZhbHVle0dEQk59 IHNob3VsZCByZWFkIG1vcmUgY29tbWFuZHMuICAqLworQGVuZCBzbWFsbGV4 YW1wbGUKKworKE5vdGUgdGhhdCB0aGlzIGZvcm1hdCBpcyBlbmNvdXJhZ2Vk IGJ5IEVtYWNzOyB0YWJiaW5nIGZvciBhIG11bHRpLWxpbmUKK2NvbW1lbnQg d29ya3MgY29ycmVjdGx5LCBhbmQgQGtiZHtNLXF9IGZpbGxzIHRoZSBibG9j ayBjb25zaXN0ZW50bHkuKQorCitQdXQgYSBibGFuayBsaW5lIGJldHdlZW4g dGhlIGJsb2NrIGNvbW1lbnRzIHByZWNlZGluZyBmdW5jdGlvbiBvcgordmFy aWFibGUgZGVmaW5pdGlvbnMsIGFuZCB0aGUgZGVmaW5pdGlvbiBpdHNlbGYu CisKK0luIGdlbmVyYWwsIHB1dCBmdW5jdGlvbi1ib2R5IGNvbW1lbnRzIG9u IGxpbmVzIGJ5IHRoZW1zZWx2ZXMsIHJhdGhlcgordGhhbiB0cnlpbmcgdG8g Zml0IHRoZW0gaW50byB0aGUgMjAgY2hhcmFjdGVycyBsZWZ0IGF0IHRoZSBl bmQgb2YgYQorbGluZSwgc2luY2UgZWl0aGVyIHRoZSBjb21tZW50IG9yIHRo ZSBjb2RlIHdpbGwgaW5ldml0YWJseSBnZXQgbG9uZ2VyCit0aGFuIHdpbGwg Zml0LCBhbmQgdGhlbiBzb21lYm9keSB3aWxsIGhhdmUgdG8gbW92ZSBpdCBh bnlob3cuCisKK0BzdWJzZWN0aW9uIEMgVXNhZ2UKKworQGNpbmRleCBDIGRh dGEgdHlwZXMKK0NvZGUgbXVzdCBub3QgZGVwZW5kIG9uIHRoZSBzaXplcyBv ZiBDIGRhdGEgdHlwZXMsIHRoZSBmb3JtYXQgb2YgdGhlCitob3N0J3MgZmxv YXRpbmcgcG9pbnQgbnVtYmVycywgdGhlIGFsaWdubWVudCBvZiBhbnl0aGlu Zywgb3IgdGhlIG9yZGVyCitvZiBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25z LgorCitAY2luZGV4IGZ1bmN0aW9uIHVzYWdlCitVc2UgZnVuY3Rpb25zIGZy ZWVseS4gIFRoZXJlIGFyZSBvbmx5IGEgaGFuZGZ1bCBvZiBjb21wdXRlLWJv dW5kIGFyZWFzCitpbiBAdmFsdWV7R0RCTn0gdGhhdCBtaWdodCBiZSBhZmZl Y3RlZCBieSB0aGUgb3ZlcmhlYWQgb2YgYSBmdW5jdGlvbgorY2FsbCwgbWFp bmx5IGluIHN5bWJvbCByZWFkaW5nLiAgTW9zdCBvZiBAdmFsdWV7R0RCTn0n cyBwZXJmb3JtYW5jZSBpcworbGltaXRlZCBieSB0aGUgdGFyZ2V0IGludGVy ZmFjZSAod2hldGhlciBzZXJpYWwgbGluZSBvciBzeXN0ZW0gY2FsbCkuCisK K0hvd2V2ZXIsIHVzZSBmdW5jdGlvbnMgd2l0aCBtb2RlcmF0aW9uLiAgQSB0 aG91c2FuZCBvbmUtbGluZSBmdW5jdGlvbnMKK2FyZSBqdXN0IGFzIGhhcmQg dG8gdW5kZXJzdGFuZCBhcyBhIHNpbmdsZSB0aG91c2FuZC1saW5lIGZ1bmN0 aW9uLgorCitAZW1waHtNYWNyb3MgYXJlIGJhZCwgTSdrYXkufQorKEJ1dCBp ZiB5b3UgaGF2ZSB0byB1c2UgYSBtYWNybywgbWFrZSBzdXJlIHRoYXQgdGhl IG1hY3JvIGFyZ3VtZW50cyBhcmUKK3Byb3RlY3RlZCB3aXRoIHBhcmVudGhl c2VzLikKKworQGNpbmRleCB0eXBlcworCitEZWNsYXJhdGlvbnMgbGlrZSBA c2FtcHtzdHJ1Y3QgZm9vICp9IHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVu Y2UgdG8KK2RlY2xhcmF0aW9ucyBsaWtlIEBzYW1we3R5cGVkZWYgc3RydWN0 IGZvbyBAeyBAZG90c3t9IEB9ICpmb29fcHRyfS4KKworQHN1YnNlY3Rpb24g RnVuY3Rpb24gUHJvdG90eXBlcworQGNpbmRleCBmdW5jdGlvbiBwcm90b3R5 cGVzCisKK1Byb3RvdHlwZXMgbXVzdCBiZSB1c2VkIHdoZW4gYm90aCBAZW1w aHtkZWNsYXJpbmd9IGFuZCBAZW1waHtkZWZpbmluZ30KK2EgZnVuY3Rpb24u ICBQcm90b3R5cGVzIGZvciBAdmFsdWV7R0RCTn0gZnVuY3Rpb25zIG11c3Qg aW5jbHVkZSBib3RoIHRoZQorYXJndW1lbnQgdHlwZSBhbmQgbmFtZSwgd2l0 aCB0aGUgbmFtZSBtYXRjaGluZyB0aGF0IHVzZWQgaW4gdGhlIGFjdHVhbAor ZnVuY3Rpb24gZGVmaW5pdGlvbi4KKworQWxsIGV4dGVybmFsIGZ1bmN0aW9u cyBzaG91bGQgaGF2ZSBhIGRlY2xhcmF0aW9uIGluIGEgaGVhZGVyIGZpbGUg dGhhdAorY2FsbGVycyBpbmNsdWRlLCBleGNlcHQgZm9yIEBjb2Rle19pbml0 aWFsaXplXyp9IGZ1bmN0aW9ucywgd2hpY2ggbXVzdAorYmUgZXh0ZXJuYWwg c28gdGhhdCBAZmlsZXtpbml0LmN9IGNvbnN0cnVjdGlvbiB3b3JrcywgYnV0 IHNob3VsZG4ndCBiZQordmlzaWJsZSB0byByYW5kb20gc291cmNlIGZpbGVz LgorCitXaGVyZSBhIHNvdXJjZSBmaWxlIG5lZWRzIGEgZm9yd2FyZCBkZWNs YXJhdGlvbiBvZiBhIHN0YXRpYyBmdW5jdGlvbiwKK3RoYXQgZGVjbGFyYXRp b24gbXVzdCBhcHBlYXIgaW4gYSBibG9jayBuZWFyIHRoZSB0b3Agb2YgdGhl IHNvdXJjZSBmaWxlLgorCitAc3Vic2VjdGlvbiBGaWxlIE5hbWVzCisKK0Fu eSBmaWxlIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgY29yZSBvZiBAdmFsdWV7 R0RCTn0gbXVzdCBiZSBpbiBsb3dlcgorY2FzZS4gIEFueSBmaWxlIHVzZWQg d2hlbiBidWlsZGluZyB0aGUgY29yZSBvZiBAdmFsdWV7R0RCTn0gbXVzdCBi ZSA4LjMKK3VuaXF1ZS4gIFRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byBi b3RoIHNvdXJjZSBhbmQgZ2VuZXJhdGVkIGZpbGVzLgorCitAZW1waHtQcmFn bWF0aWNzOiBUaGUgY29yZSBvZiBAdmFsdWV7R0RCTn0gbXVzdCBiZSBidWls ZGFibGUgb24gbWFueQorcGxhdGZvcm1zIGluY2x1ZGluZyBESkdQUCBhbmQg TWFjT1MvSEZTLiAgRXZlcnkgdGltZSBhbiB1bmZyaWVuZGx5IGZpbGUKK2lz IGludHJvZHVjZWQgdG8gdGhlIGJ1aWxkIHByb2Nlc3MgYm90aCBAZmlsZXtN YWtlZmlsZS5pbn0gYW5kCitAZmlsZXtjb25maWd1cmUuaW59IG5lZWQgdG8g YmUgbW9kaWZpZWQgYWNjb3JkaW5nbHkuICBDb21wYXJlIHRoZQorY29udm9s dXRlZCBjb252ZXJzaW9uIHByb2Nlc3MgbmVlZGVkIHRvIHRyYW5zZm9ybSBA ZmlsZXtDT1BZSU5HfSBpbnRvCitAZmlsZXtjb3B5aW5nLmN9IHdpdGggdGhl IGNvbnZlcnNpb24gbmVlZGVkIHRvIHRyYW5zZm9ybQorQGZpbGV7dmVyc2lv bi5pbn0gaW50byBAZmlsZXt2ZXJzaW9uLmN9Ln0KKworQW55IGZpbGUgbm9u IDguMyBjb21wbGlhbnQgZmlsZSAodGhhdCBpcyBub3QgdXNlZCB3aGVuIGJ1 aWxkaW5nIHRoZSBjb3JlCitvZiBAdmFsdWV7R0RCTn0pIG11c3QgYmUgYWRk ZWQgdG8gQGZpbGV7Z2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3R9Lgor CitAZW1waHtQcmFnbWF0aWNzOiBUaGlzIGlzIGNsZWFybHkgYSBjb21wcm9t aXNlLn0KKworV2hlbiBAdmFsdWV7R0RCTn0gaGFzIGEgbG9jYWwgdmVyc2lv biBvZiBhIHN5c3RlbSBoZWFkZXIgZmlsZSAoZXgKK0BmaWxle3N0cmluZy5o fSkgdGhlIGZpbGUgbmFtZSBiYXNlZCBvbiB0aGUgUE9TSVggaGVhZGVyIHBy ZWZpeGVkIHdpdGgKK0BmaWxle2dkYl99IChAZmlsZXtnZGJfc3RyaW5nLmh9 KS4gIFRoZXNlIGhlYWRlcnMgc2hvdWxkIGJlIHJlbGF0aXZlbHkKK2luZGVw ZW5kZW50OiB0aGV5IHNob3VsZCB1c2Ugb25seSBtYWNyb3MgZGVmaW5lZCBi eSBAZmlsZXtjb25maWd1cmV9LAordGhlIGNvbXBpbGVyLCBvciB0aGUgaG9z dDsgdGhleSBzaG91bGQgaW5jbHVkZSBvbmx5IHN5c3RlbSBoZWFkZXJzOyB0 aGV5CitzaG91bGQgcmVmZXIgb25seSB0byBzeXN0ZW0gdHlwZXMuICBUaGV5 IG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZQorcHJvZ3JhbXMsIGUu Zy5AOiBAdmFsdWV7R0RCTn0gYW5kIEBzY3tnZGJzZXJ2ZXJ9LgorCitGb3Ig b3RoZXIgZmlsZXMgQHNhbXB7LX0gaXMgdXNlZCBhcyB0aGUgc2VwYXJhdG9y LgorCitAc3Vic2VjdGlvbiBJbmNsdWRlIEZpbGVzCisKK0EgQGZpbGV7LmN9 IGZpbGUgc2hvdWxkIGluY2x1ZGUgQGZpbGV7ZGVmcy5ofSBmaXJzdC4KKwor QSBAZmlsZXsuY30gZmlsZSBzaG91bGQgZGlyZWN0bHkgaW5jbHVkZSB0aGUg QGNvZGV7Lmh9IGZpbGUgb2YgZXZlcnkKK2RlY2xhcmF0aW9uIGFuZC9vciBk ZWZpbml0aW9uIGl0IGRpcmVjdGx5IHJlZmVycyB0by4gIEl0IGNhbm5vdCBy ZWx5IG9uCitpbmRpcmVjdCBpbmNsdXNpb24uCisKK0EgQGZpbGV7Lmh9IGZp bGUgc2hvdWxkIGRpcmVjdGx5IGluY2x1ZGUgdGhlIEBjb2Rley5ofSBmaWxl IG9mIGV2ZXJ5CitkZWNsYXJhdGlvbiBhbmQvb3IgZGVmaW5pdGlvbiBpdCBk aXJlY3RseSByZWZlcnMgdG8uICBJdCBjYW5ub3QgcmVseSBvbgoraW5kaXJl Y3QgaW5jbHVzaW9uLiAgRXhjZXB0aW9uOiBUaGUgZmlsZSBAZmlsZXtkZWZz Lmh9IGRvZXMgbm90IG5lZWQgdG8KK2JlIGRpcmVjdGx5IGluY2x1ZGVkLgor CitBbiBleHRlcm5hbCBkZWNsYXJhdGlvbiBzaG91bGQgb25seSBhcHBlYXIg aW4gb25lIGluY2x1ZGUgZmlsZS4KKworQW4gZXh0ZXJuYWwgZGVjbGFyYXRp b24gc2hvdWxkIG5ldmVyIGFwcGVhciBpbiBhIEBjb2Rley5jfSBmaWxlLgor RXhjZXB0aW9uOiBhIGRlY2xhcmF0aW9uIGZvciB0aGUgQGNvZGV7X2luaXRp YWxpemV9IGZ1bmN0aW9uIHRoYXQKK3BhY2lmaWVzIEBvcHRpb257LVdtaXNz aW5nLWRlY2xhcmF0aW9ufS4KKworQSBAY29kZXt0eXBlZGVmfSBkZWZpbml0 aW9uIHNob3VsZCBvbmx5IGFwcGVhciBpbiBvbmUgaW5jbHVkZSBmaWxlLgor CitBbiBvcGFxdWUgQGNvZGV7c3RydWN0fSBkZWNsYXJhdGlvbiBjYW4gYXBw ZWFyIGluIG11bHRpcGxlIEBmaWxley5ofQorZmlsZXMuICBXaGVyZSBwb3Nz aWJsZSwgYSBAZmlsZXsuaH0gZmlsZSBzaG91bGQgdXNlIGFuIG9wYXF1ZQor QGNvZGV7c3RydWN0fSBkZWNsYXJhdGlvbiBpbnN0ZWFkIG9mIGFuIGluY2x1 ZGUuCisKK0FsbCBAZmlsZXsuaH0gZmlsZXMgc2hvdWxkIGJlIHdyYXBwZWQg aW46CisKK0BzbWFsbGV4YW1wbGUKKyNpZm5kZWYgSU5DTFVERV9GSUxFX05B TUVfSAorI2RlZmluZSBJTkNMVURFX0ZJTEVfTkFNRV9ICitoZWFkZXIgYm9k eQorI2VuZGlmCitAZW5kIHNtYWxsZXhhbXBsZQorCitAc2VjdGlvbiBAdmFs dWV7R0RCTn0gUHl0aG9uIENvZGluZyBTdGFuZGFyZHMKKworQHZhbHVle0dE Qk59IGZvbGxvd3MgdGhlIHB1Ymxpc2hlZCBAY29kZXtQeXRob259IGNvZGlu ZyBzdGFuZGFyZHMgaW4KK0B1cmVme2h0dHA6Ly93d3cucHl0aG9uLm9yZy9k ZXYvcGVwcy9wZXAtMDAwOC8sIEBjb2Rle1BFUDAwOH19LgorCitJbiBhZGRp dGlvbiwgdGhlIGd1aWRlbGluZXMgaW4gdGhlCitAdXJlZntodHRwOi8vZ29v Z2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL3B5Z3Vp ZGUuaHRtbCwKK0dvb2dsZSBQeXRob24gU3R5bGUgR3VpZGV9IGFyZSBhbHNv IGZvbGxvd2VkIHdoZXJlIHRoZXkgZG8gbm90Citjb25mbGljdCB3aXRoIEBj b2Rle1BFUDAwOH0uCisKK0BzdWJzZWN0aW9uIEB2YWx1ZXtHREJOfS1zcGVj aWZpYyBleGNlcHRpb25zCisKK1RoZXJlIGFyZSBhIGZldyBleGNlcHRpb25z IHRvIHRoZSBwdWJsaXNoZWQgc3RhbmRhcmRzLgorVGhleSBleGlzdCBtYWlu bHkgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIEBjb2Rle0N9IHN0YW5kYXJk cy4KKworQGMgSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGVyZSBhcmUgYSBmZXcg bW9yZSBleGNlcHRpb25zLAorQGMgc28gd2UgdXNlIGl0ZW1pemUgaGVyZS4K KworQGl0ZW1pemUgQGJ1bGxldAorCitAaXRlbQorVXNlIEBjb2Rle0ZJWE1F fSBpbnN0ZWFkIG9mIEBjb2Rle1RPRE99LgorCitAZW5kIGl0ZW1pemUKKwor QG5vZGUgTWlzYyBHdWlkZWxpbmVzCisKK0BjaGFwdGVyIE1pc2MgR3VpZGVs aW5lcwogCiBUaGlzIGNoYXB0ZXIgY292ZXJzIHRvcGljcyB0aGF0IGFyZSBs b3dlci1sZXZlbCB0aGFuIHRoZSBtYWpvcgogYWxnb3JpdGhtcyBvZiBAdmFs dWV7R0RCTn0uCkBAIC01OTk1LDI4ICs2MjIzLDcgQEAgZmluaXNoIGJ5IHBy aW50aW5nIGEgbmV3bGluZSwgdG8gZmx1c2ggdAogdG8gdW5maWx0ZXJlZCAo QGNvZGV7cHJpbnRmfSkgb3V0cHV0LiAgU3ltYm9sIHJlYWRpbmcgcm91dGlu ZXMgdGhhdAogcHJpbnQgd2FybmluZ3MgYXJlIGEgZ29vZCBleGFtcGxlLgog Ci1Ac2VjdGlvbiBAdmFsdWV7R0RCTn0gQ29kaW5nIFN0YW5kYXJkcwotQGNp bmRleCBjb2Rpbmcgc3RhbmRhcmRzCi0KLUB2YWx1ZXtHREJOfSBmb2xsb3dz IHRoZSBHTlUgY29kaW5nIHN0YW5kYXJkcywgYXMgZGVzY3JpYmVkIGluCi1A ZmlsZXtldGMvc3RhbmRhcmRzLnRleGl9LiAgVGhpcyBmaWxlIGlzIGFsc28g YXZhaWxhYmxlIGZvciBhbm9ueW1vdXMKLUZUUCBmcm9tIEdOVSBhcmNoaXZl IHNpdGVzLiAgQHZhbHVle0dEQk59IHRha2VzIGEgc3RyaWN0IGludGVycHJl dGF0aW9uCi1vZiB0aGUgc3RhbmRhcmQ7IGluIGdlbmVyYWwsIHdoZW4gdGhl IEdOVSBzdGFuZGFyZCByZWNvbW1lbmRzIGEgcHJhY3RpY2UKLWJ1dCBkb2Vz IG5vdCByZXF1aXJlIGl0LCBAdmFsdWV7R0RCTn0gcmVxdWlyZXMgaXQuCi0K LUB2YWx1ZXtHREJOfSBmb2xsb3dzIGFuIGFkZGl0aW9uYWwgc2V0IG9mIGNv ZGluZyBzdGFuZGFyZHMgc3BlY2lmaWMgdG8KLUB2YWx1ZXtHREJOfSwgYXMg ZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0KLQotQHN1 YnNlY3Rpb24gSVNPIEMKLQotQHZhbHVle0dEQk59IGFzc3VtZXMgYW4gSVNP L0lFQyA5ODk5OjE5OTAgKGEuay5hLkA6IElTTyBDOTApIGNvbXBsaWFudAot Y29tcGlsZXIuCi0KLUB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhc3N1bWUgYW4g SVNPIEMgb3IgUE9TSVggY29tcGxpYW50IEMgbGlicmFyeS4KLQotCi1Ac3Vi c2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudAorQHNlY3Rpb24gTWVtb3J5IE1h bmFnZW1lbnQKIAogQHZhbHVle0dEQk59IGRvZXMgbm90IHVzZSB0aGUgZnVu Y3Rpb25zIEBjb2Rle21hbGxvY30sIEBjb2Rle3JlYWxsb2N9LAogQGNvZGV7 Y2FsbG9jfSwgQGNvZGV7ZnJlZX0gYW5kIEBjb2Rle2FzcHJpbnRmfS4KQEAg LTYwNTQsNyArNjI2MSw3IEBAIGZ1bmN0aW9ucyBzdWNoIGFzIEBjb2Rle3Nw cmludGZ9IGFyZSB2ZXIKIGVycm9ycy59CiAKIAotQHN1YnNlY3Rpb24gQ29t cGlsZXIgV2FybmluZ3MKK0BzZWN0aW9uIENvbXBpbGVyIFdhcm5pbmdzCiBA Y2luZGV4IGNvbXBpbGVyIHdhcm5pbmdzCiAKIFdpdGggZmV3IGV4Y2VwdGlv bnMsIGRldmVsb3BlcnMgc2hvdWxkIGF2b2lkIHRoZSBjb25maWd1cmF0aW9u IG9wdGlvbgpAQCAtNjEwOSwxMjQgKzYzMTYsNyBAQCBjdXJyZW50bHkgdG9v IG5vaXN5IHRvIGVuYWJsZSB3aXRoIEBzYW1wCiAKIEBlbmQgdGFibGUKIAot QHN1YnNlY3Rpb24gRm9ybWF0dGluZwotCi1AY2luZGV4IHNvdXJjZSBjb2Rl IGZvcm1hdHRpbmcKLVRoZSBzdGFuZGFyZCBHTlUgcmVjb21tZW5kYXRpb25z IGZvciBmb3JtYXR0aW5nIG11c3QgYmUgZm9sbG93ZWQKLXN0cmljdGx5Lgot Ci1BIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHNob3VsZCBub3QgaGF2ZSBpdHMg bmFtZSBpbiBjb2x1bW4gemVyby4gIEEKLWZ1bmN0aW9uIGRlZmluaXRpb24g c2hvdWxkIGhhdmUgaXRzIG5hbWUgaW4gY29sdW1uIHplcm8uCi0KLUBzbWFs bGV4YW1wbGUKLS8qIERlY2xhcmF0aW9uICovCi1zdGF0aWMgdm9pZCBmb28g KHZvaWQpOwotLyogRGVmaW5pdGlvbiAqLwotdm9pZAotZm9vICh2b2lkKQot QHsKLUB9Ci1AZW5kIHNtYWxsZXhhbXBsZQotCi1AZW1waHtQcmFnbWF0aWNz OiBUaGlzIHNpbXBsaWZpZXMgc2NyaXB0aW5nLiAgRnVuY3Rpb24gZGVmaW5p dGlvbnMgY2FuCi1iZSBmb3VuZCB1c2luZyBAc2FtcHteZnVuY3Rpb24tbmFt ZX0ufQotCi1UaGVyZSBtdXN0IGJlIGEgc3BhY2UgYmV0d2VlbiBhIGZ1bmN0 aW9uIG9yIG1hY3JvIG5hbWUgYW5kIHRoZSBvcGVuaW5nCi1wYXJlbnRoZXNp cyBvZiBpdHMgYXJndW1lbnQgbGlzdCAoZXhjZXB0IGZvciBtYWNybyBkZWZp bml0aW9ucywgYXMKLXJlcXVpcmVkIGJ5IEMpLiAgVGhlcmUgbXVzdCBub3Qg YmUgYSBzcGFjZSBhZnRlciBhbiBvcGVuIHBhcmVuL2JyYWNrZXQKLW9yIGJl Zm9yZSBhIGNsb3NlIHBhcmVuL2JyYWNrZXQuCi0KLVdoaWxlIGFkZGl0aW9u YWwgd2hpdGVzcGFjZSBpcyBnZW5lcmFsbHkgaGVscGZ1bCBmb3IgcmVhZGlu ZywgZG8gbm90IHVzZQotbW9yZSB0aGFuIG9uZSBibGFuayBsaW5lIHRvIHNl cGFyYXRlIGJsb2NrcywgYW5kIGF2b2lkIGFkZGluZyB3aGl0ZXNwYWNlCi1h ZnRlciB0aGUgZW5kIG9mIGEgcHJvZ3JhbSBsaW5lIChhcyBvZiAxLzk5LCBz b21lIDYwMCBsaW5lcyBoYWQKLXdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHNlbWlj b2xvbikuICBFeGNlc3Mgd2hpdGVzcGFjZSBjYXVzZXMgZGlmZmljdWx0aWVz Ci1mb3IgQGNvZGV7ZGlmZn0gYW5kIEBjb2Rle3BhdGNofSB1dGlsaXRpZXMu Ci0KLVBvaW50ZXJzIGFyZSBkZWNsYXJlZCB1c2luZyB0aGUgdHJhZGl0aW9u YWwgSyZSIEMgc3R5bGU6Ci0KLUBzbWFsbGV4YW1wbGUKLXZvaWQgKmZvbzsK LUBlbmQgc21hbGxleGFtcGxlCi0KLUBub2luZGVudAotYW5kIG5vdDoKLQot QHNtYWxsZXhhbXBsZQotdm9pZCAqIGZvbzsKLXZvaWQqIGZvbzsKLUBlbmQg c21hbGxleGFtcGxlCi0KLUBzdWJzZWN0aW9uIENvbW1lbnRzCi0KLUBjaW5k ZXggY29tbWVudCBmb3JtYXR0aW5nCi1UaGUgc3RhbmRhcmQgR05VIHJlcXVp cmVtZW50cyBvbiBjb21tZW50cyBtdXN0IGJlIGZvbGxvd2VkIHN0cmljdGx5 LgotCi1CbG9jayBjb21tZW50cyBtdXN0IGFwcGVhciBpbiB0aGUgZm9sbG93 aW5nIGZvcm0sIHdpdGggbm8gQGNvZGV7Lyp9LSBvcgotQGNvZGV7Ki99LW9u bHkgbGluZXMsIGFuZCBubyBsZWFkaW5nIEBjb2Rleyp9OgotCi1Ac21hbGxl eGFtcGxlCi0vKiBXYWl0IGZvciBjb250cm9sIHRvIHJldHVybiBmcm9tIGlu ZmVyaW9yIHRvIGRlYnVnZ2VyLiAgSWYgaW5mZXJpb3IKLSAgIGdldHMgYSBz aWduYWwsIHdlIG1heSBkZWNpZGUgdG8gc3RhcnQgaXQgdXAgYWdhaW4gaW5z dGVhZCBvZgotICAgcmV0dXJuaW5nLiAgVGhhdCBpcyB3aHkgdGhlcmUgaXMg YSBsb29wIGluIHRoaXMgZnVuY3Rpb24uICBXaGVuCi0gICB0aGlzIGZ1bmN0 aW9uIGFjdHVhbGx5IHJldHVybnMgaXQgbWVhbnMgdGhlIGluZmVyaW9yIHNo b3VsZCBiZSBsZWZ0Ci0gICBzdG9wcGVkIGFuZCBAdmFsdWV7R0RCTn0gc2hv dWxkIHJlYWQgbW9yZSBjb21tYW5kcy4gICovCi1AZW5kIHNtYWxsZXhhbXBs ZQotCi0oTm90ZSB0aGF0IHRoaXMgZm9ybWF0IGlzIGVuY291cmFnZWQgYnkg RW1hY3M7IHRhYmJpbmcgZm9yIGEgbXVsdGktbGluZQotY29tbWVudCB3b3Jr cyBjb3JyZWN0bHksIGFuZCBAa2Jke00tcX0gZmlsbHMgdGhlIGJsb2NrIGNv bnNpc3RlbnRseS4pCi0KLVB1dCBhIGJsYW5rIGxpbmUgYmV0d2VlbiB0aGUg YmxvY2sgY29tbWVudHMgcHJlY2VkaW5nIGZ1bmN0aW9uIG9yCi12YXJpYWJs ZSBkZWZpbml0aW9ucywgYW5kIHRoZSBkZWZpbml0aW9uIGl0c2VsZi4KLQot SW4gZ2VuZXJhbCwgcHV0IGZ1bmN0aW9uLWJvZHkgY29tbWVudHMgb24gbGlu ZXMgYnkgdGhlbXNlbHZlcywgcmF0aGVyCi10aGFuIHRyeWluZyB0byBmaXQg dGhlbSBpbnRvIHRoZSAyMCBjaGFyYWN0ZXJzIGxlZnQgYXQgdGhlIGVuZCBv ZiBhCi1saW5lLCBzaW5jZSBlaXRoZXIgdGhlIGNvbW1lbnQgb3IgdGhlIGNv ZGUgd2lsbCBpbmV2aXRhYmx5IGdldCBsb25nZXIKLXRoYW4gd2lsbCBmaXQs IGFuZCB0aGVuIHNvbWVib2R5IHdpbGwgaGF2ZSB0byBtb3ZlIGl0IGFueWhv dy4KLQotQHN1YnNlY3Rpb24gQyBVc2FnZQotCi1AY2luZGV4IEMgZGF0YSB0 eXBlcwotQ29kZSBtdXN0IG5vdCBkZXBlbmQgb24gdGhlIHNpemVzIG9mIEMg ZGF0YSB0eXBlcywgdGhlIGZvcm1hdCBvZiB0aGUKLWhvc3QncyBmbG9hdGlu ZyBwb2ludCBudW1iZXJzLCB0aGUgYWxpZ25tZW50IG9mIGFueXRoaW5nLCBv ciB0aGUgb3JkZXIKLW9mIGV2YWx1YXRpb24gb2YgZXhwcmVzc2lvbnMuCi0K LUBjaW5kZXggZnVuY3Rpb24gdXNhZ2UKLVVzZSBmdW5jdGlvbnMgZnJlZWx5 LiAgVGhlcmUgYXJlIG9ubHkgYSBoYW5kZnVsIG9mIGNvbXB1dGUtYm91bmQg YXJlYXMKLWluIEB2YWx1ZXtHREJOfSB0aGF0IG1pZ2h0IGJlIGFmZmVjdGVk IGJ5IHRoZSBvdmVyaGVhZCBvZiBhIGZ1bmN0aW9uCi1jYWxsLCBtYWlubHkg aW4gc3ltYm9sIHJlYWRpbmcuICBNb3N0IG9mIEB2YWx1ZXtHREJOfSdzIHBl cmZvcm1hbmNlIGlzCi1saW1pdGVkIGJ5IHRoZSB0YXJnZXQgaW50ZXJmYWNl ICh3aGV0aGVyIHNlcmlhbCBsaW5lIG9yIHN5c3RlbSBjYWxsKS4KLQotSG93 ZXZlciwgdXNlIGZ1bmN0aW9ucyB3aXRoIG1vZGVyYXRpb24uICBBIHRob3Vz YW5kIG9uZS1saW5lIGZ1bmN0aW9ucwotYXJlIGp1c3QgYXMgaGFyZCB0byB1 bmRlcnN0YW5kIGFzIGEgc2luZ2xlIHRob3VzYW5kLWxpbmUgZnVuY3Rpb24u Ci0KLUBlbXBoe01hY3JvcyBhcmUgYmFkLCBNJ2theS59Ci0oQnV0IGlmIHlv dSBoYXZlIHRvIHVzZSBhIG1hY3JvLCBtYWtlIHN1cmUgdGhhdCB0aGUgbWFj cm8gYXJndW1lbnRzIGFyZQotcHJvdGVjdGVkIHdpdGggcGFyZW50aGVzZXMu KQotCi1AY2luZGV4IHR5cGVzCi0KLURlY2xhcmF0aW9ucyBsaWtlIEBzYW1w e3N0cnVjdCBmb28gKn0gc2hvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0 bwotZGVjbGFyYXRpb25zIGxpa2UgQHNhbXB7dHlwZWRlZiBzdHJ1Y3QgZm9v IEB7IEBkb3Rze30gQH0gKmZvb19wdHJ9LgotCi0KLUBzdWJzZWN0aW9uIEZ1 bmN0aW9uIFByb3RvdHlwZXMKLUBjaW5kZXggZnVuY3Rpb24gcHJvdG90eXBl cwotCi1Qcm90b3R5cGVzIG11c3QgYmUgdXNlZCB3aGVuIGJvdGggQGVtcGh7 ZGVjbGFyaW5nfSBhbmQgQGVtcGh7ZGVmaW5pbmd9Ci1hIGZ1bmN0aW9uLiAg UHJvdG90eXBlcyBmb3IgQHZhbHVle0dEQk59IGZ1bmN0aW9ucyBtdXN0IGlu Y2x1ZGUgYm90aCB0aGUKLWFyZ3VtZW50IHR5cGUgYW5kIG5hbWUsIHdpdGgg dGhlIG5hbWUgbWF0Y2hpbmcgdGhhdCB1c2VkIGluIHRoZSBhY3R1YWwKLWZ1 bmN0aW9uIGRlZmluaXRpb24uCi0KLUFsbCBleHRlcm5hbCBmdW5jdGlvbnMg c2hvdWxkIGhhdmUgYSBkZWNsYXJhdGlvbiBpbiBhIGhlYWRlciBmaWxlIHRo YXQKLWNhbGxlcnMgaW5jbHVkZSwgZXhjZXB0IGZvciBAY29kZXtfaW5pdGlh bGl6ZV8qfSBmdW5jdGlvbnMsIHdoaWNoIG11c3QKLWJlIGV4dGVybmFsIHNv IHRoYXQgQGZpbGV7aW5pdC5jfSBjb25zdHJ1Y3Rpb24gd29ya3MsIGJ1dCBz aG91bGRuJ3QgYmUKLXZpc2libGUgdG8gcmFuZG9tIHNvdXJjZSBmaWxlcy4K LQotV2hlcmUgYSBzb3VyY2UgZmlsZSBuZWVkcyBhIGZvcndhcmQgZGVjbGFy YXRpb24gb2YgYSBzdGF0aWMgZnVuY3Rpb24sCi10aGF0IGRlY2xhcmF0aW9u IG11c3QgYXBwZWFyIGluIGEgYmxvY2sgbmVhciB0aGUgdG9wIG9mIHRoZSBz b3VyY2UgZmlsZS4KLQotCi1Ac3Vic2VjdGlvbiBJbnRlcm5hbCBFcnJvciBS ZWNvdmVyeQorQHNlY3Rpb24gSW50ZXJuYWwgRXJyb3IgUmVjb3ZlcnkKIAog RHVyaW5nIGl0cyBleGVjdXRpb24sIEB2YWx1ZXtHREJOfSBjYW4gZW5jb3Vu dGVyIHR3byB0eXBlcyBvZiBlcnJvcnMuCiBVc2VyIGVycm9ycyBhbmQgaW50 ZXJuYWwgZXJyb3JzLiAgVXNlciBlcnJvcnMgaW5jbHVkZSBub3Qgb25seSBh IHVzZXIKQEAgLTYyNDUsNzYgKzYzMzUsMTEgQEAgdGhlIGNvZGUgZGV0ZWN0 ZWQgYSB1c2VyIGVycm9yLCByZWNvdmVyZQogQGNvZGV7d2FybmluZ30gb3Ig dGhlIGNvZGUgZmFpbGVkIHRvIGNvcnJlY3RseSByZWNvdmVyIGZyb20gdGhl IHVzZXIKIGVycm9yIGFuZCBpc3N1ZWQgYW4gQGNvZGV7aW50ZXJuYWxfZXJy b3J9Ln0KIAotQHN1YnNlY3Rpb24gQ29tbWFuZCBOYW1lcworQHNlY3Rpb24g Q29tbWFuZCBOYW1lcwogCiBHREIgVS9JIGNvbW1hbmRzIGFyZSB3cml0dGVu IEBzYW1we2Zvby1iYXJ9LCBub3QgQHNhbXB7Zm9vX2Jhcn0uCiAKLUBzdWJz ZWN0aW9uIEZpbGUgTmFtZXMKLQotQW55IGZpbGUgdXNlZCB3aGVuIGJ1aWxk aW5nIHRoZSBjb3JlIG9mIEB2YWx1ZXtHREJOfSBtdXN0IGJlIGluIGxvd2Vy Ci1jYXNlLiAgQW55IGZpbGUgdXNlZCB3aGVuIGJ1aWxkaW5nIHRoZSBjb3Jl IG9mIEB2YWx1ZXtHREJOfSBtdXN0IGJlIDguMwotdW5pcXVlLiAgVGhlc2Ug cmVxdWlyZW1lbnRzIGFwcGx5IHRvIGJvdGggc291cmNlIGFuZCBnZW5lcmF0 ZWQgZmlsZXMuCi0KLUBlbXBoe1ByYWdtYXRpY3M6IFRoZSBjb3JlIG9mIEB2 YWx1ZXtHREJOfSBtdXN0IGJlIGJ1aWxkYWJsZSBvbiBtYW55Ci1wbGF0Zm9y bXMgaW5jbHVkaW5nIERKR1BQIGFuZCBNYWNPUy9IRlMuICBFdmVyeSB0aW1l IGFuIHVuZnJpZW5kbHkgZmlsZQotaXMgaW50cm9kdWNlZCB0byB0aGUgYnVp bGQgcHJvY2VzcyBib3RoIEBmaWxle01ha2VmaWxlLmlufSBhbmQKLUBmaWxl e2NvbmZpZ3VyZS5pbn0gbmVlZCB0byBiZSBtb2RpZmllZCBhY2NvcmRpbmds eS4gIENvbXBhcmUgdGhlCi1jb252b2x1dGVkIGNvbnZlcnNpb24gcHJvY2Vz cyBuZWVkZWQgdG8gdHJhbnNmb3JtIEBmaWxle0NPUFlJTkd9IGludG8KLUBm aWxle2NvcHlpbmcuY30gd2l0aCB0aGUgY29udmVyc2lvbiBuZWVkZWQgdG8g dHJhbnNmb3JtCi1AZmlsZXt2ZXJzaW9uLmlufSBpbnRvIEBmaWxle3ZlcnNp b24uY30ufQotCi1BbnkgZmlsZSBub24gOC4zIGNvbXBsaWFudCBmaWxlICh0 aGF0IGlzIG5vdCB1c2VkIHdoZW4gYnVpbGRpbmcgdGhlIGNvcmUKLW9mIEB2 YWx1ZXtHREJOfSkgbXVzdCBiZSBhZGRlZCB0byBAZmlsZXtnZGIvY29uZmln L2RqZ3BwL2ZuY2hhbmdlLmxzdH0uCi0KLUBlbXBoe1ByYWdtYXRpY3M6IFRo aXMgaXMgY2xlYXJseSBhIGNvbXByb21pc2UufQotCi1XaGVuIEB2YWx1ZXtH REJOfSBoYXMgYSBsb2NhbCB2ZXJzaW9uIG9mIGEgc3lzdGVtIGhlYWRlciBm aWxlIChleAotQGZpbGV7c3RyaW5nLmh9KSB0aGUgZmlsZSBuYW1lIGJhc2Vk IG9uIHRoZSBQT1NJWCBoZWFkZXIgcHJlZml4ZWQgd2l0aAotQGZpbGV7Z2Ri X30gKEBmaWxle2dkYl9zdHJpbmcuaH0pLiAgVGhlc2UgaGVhZGVycyBzaG91 bGQgYmUgcmVsYXRpdmVseQotaW5kZXBlbmRlbnQ6IHRoZXkgc2hvdWxkIHVz ZSBvbmx5IG1hY3JvcyBkZWZpbmVkIGJ5IEBmaWxle2NvbmZpZ3VyZX0sCi10 aGUgY29tcGlsZXIsIG9yIHRoZSBob3N0OyB0aGV5IHNob3VsZCBpbmNsdWRl IG9ubHkgc3lzdGVtIGhlYWRlcnM7IHRoZXkKLXNob3VsZCByZWZlciBvbmx5 IHRvIHN5c3RlbSB0eXBlcy4gIFRoZXkgbWF5IGJlIHNoYXJlZCBiZXR3ZWVu IG11bHRpcGxlCi1wcm9ncmFtcywgZS5nLkA6IEB2YWx1ZXtHREJOfSBhbmQg QHNje2dkYnNlcnZlcn0uCi0KLUZvciBvdGhlciBmaWxlcyBAc2FtcHstfSBp cyB1c2VkIGFzIHRoZSBzZXBhcmF0b3IuCi0KLQotQHN1YnNlY3Rpb24gSW5j bHVkZSBGaWxlcwotCi1BIEBmaWxley5jfSBmaWxlIHNob3VsZCBpbmNsdWRl IEBmaWxle2RlZnMuaH0gZmlyc3QuCi0KLUEgQGZpbGV7LmN9IGZpbGUgc2hv dWxkIGRpcmVjdGx5IGluY2x1ZGUgdGhlIEBjb2Rley5ofSBmaWxlIG9mIGV2 ZXJ5Ci1kZWNsYXJhdGlvbiBhbmQvb3IgZGVmaW5pdGlvbiBpdCBkaXJlY3Rs eSByZWZlcnMgdG8uICBJdCBjYW5ub3QgcmVseSBvbgotaW5kaXJlY3QgaW5j bHVzaW9uLgotCi1BIEBmaWxley5ofSBmaWxlIHNob3VsZCBkaXJlY3RseSBp bmNsdWRlIHRoZSBAY29kZXsuaH0gZmlsZSBvZiBldmVyeQotZGVjbGFyYXRp b24gYW5kL29yIGRlZmluaXRpb24gaXQgZGlyZWN0bHkgcmVmZXJzIHRvLiAg SXQgY2Fubm90IHJlbHkgb24KLWluZGlyZWN0IGluY2x1c2lvbi4gIEV4Y2Vw dGlvbjogVGhlIGZpbGUgQGZpbGV7ZGVmcy5ofSBkb2VzIG5vdCBuZWVkIHRv Ci1iZSBkaXJlY3RseSBpbmNsdWRlZC4KLQotQW4gZXh0ZXJuYWwgZGVjbGFy YXRpb24gc2hvdWxkIG9ubHkgYXBwZWFyIGluIG9uZSBpbmNsdWRlIGZpbGUu Ci0KLUFuIGV4dGVybmFsIGRlY2xhcmF0aW9uIHNob3VsZCBuZXZlciBhcHBl YXIgaW4gYSBAY29kZXsuY30gZmlsZS4KLUV4Y2VwdGlvbjogYSBkZWNsYXJh dGlvbiBmb3IgdGhlIEBjb2Rle19pbml0aWFsaXplfSBmdW5jdGlvbiB0aGF0 Ci1wYWNpZmllcyBAb3B0aW9uey1XbWlzc2luZy1kZWNsYXJhdGlvbn0uCi0K LUEgQGNvZGV7dHlwZWRlZn0gZGVmaW5pdGlvbiBzaG91bGQgb25seSBhcHBl YXIgaW4gb25lIGluY2x1ZGUgZmlsZS4KLQotQW4gb3BhcXVlIEBjb2Rle3N0 cnVjdH0gZGVjbGFyYXRpb24gY2FuIGFwcGVhciBpbiBtdWx0aXBsZSBAZmls ZXsuaH0KLWZpbGVzLiAgV2hlcmUgcG9zc2libGUsIGEgQGZpbGV7Lmh9IGZp bGUgc2hvdWxkIHVzZSBhbiBvcGFxdWUKLUBjb2Rle3N0cnVjdH0gZGVjbGFy YXRpb24gaW5zdGVhZCBvZiBhbiBpbmNsdWRlLgotCi1BbGwgQGZpbGV7Lmh9 IGZpbGVzIHNob3VsZCBiZSB3cmFwcGVkIGluOgotCi1Ac21hbGxleGFtcGxl Ci0jaWZuZGVmIElOQ0xVREVfRklMRV9OQU1FX0gKLSNkZWZpbmUgSU5DTFVE RV9GSUxFX05BTUVfSAotaGVhZGVyIGJvZHkKLSNlbmRpZgotQGVuZCBzbWFs bGV4YW1wbGUKLQotCi1Ac3Vic2VjdGlvbiBDbGVhbiBEZXNpZ24gYW5kIFBv cnRhYmxlIEltcGxlbWVudGF0aW9uCitAc2VjdGlvbiBDbGVhbiBEZXNpZ24g YW5kIFBvcnRhYmxlIEltcGxlbWVudGF0aW9uCiAKIEBjaW5kZXggZGVzaWdu CiBJbiBhZGRpdGlvbiB0byBnZXR0aW5nIHRoZSBzeW50YXggcmlnaHQsIHRo ZXJlJ3MgdGhlIGxpdHRsZSBxdWVzdGlvbiBvZgpAQCAtNjQ0OCw3ICs2NDcz LDYgQEAgQWxsIGRlYnVnZ2luZyBjb2RlIG11c3QgYmUgY29udHJvbGxhYmxl IAogbWVzc2FnZXMuICBVc2UgQGNvZGV7ZnByaW50Zl91bmZpbHRlcmVkKGdk Yl9zdGRsb2csIC4uLn0uICBEbyBub3QgdXNlCiBAY29kZXsjaWZkZWYgREVC VUd9LgogCi0KIEBub2RlIFBvcnRpbmcgR0RCCiAKIEBjaGFwdGVyIFBvcnRp bmcgQHZhbHVle0dEQk59Cg== --20cf304353e284321604931452f3--