From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Subject: Re: [PATCH] qemu: include generated files with <> and not "" Date: Tue, 20 Mar 2018 09:44:06 +0000 Message-ID: <20180320094406.GD4530@redhat.com> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , "Michael S. Tsirkin" , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, BALATON Zoltan , Keith Busch , Max Filippov , Gerd Hoffmann , "Edgar E. Iglesias" , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang Return-path: Content-Disposition: inline In-Reply-To: <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" List-Id: kvm.vger.kernel.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDk6NTg6MjNBTSArMDEwMCwgTGF1cmVudCBWaXZpZXIg d3JvdGU6Cj4gTGUgMjAvMDMvMjAxOCDDoCAwMjo1NCwgTWljaGFlbCBTLiBUc2lya2luIGEgw6lj cml0wqA6Cj4gPiBRRU1VIGNvZGluZyBzdHlsZSBhdCB0aGUgbW9tZW50IGFza3MgZm9yIGFsbCBu b24tc3lzdGVtCj4gPiBpbmNsdWRlIGZpbGVzIHRvIGJlIHVzZWQgd2l0aCAjaW5jbHVkZSAiZm9v LmgiLgo+ID4gSG93ZXZlciB0aGlzIHJ1bGUgYWN0dWFsbHkgZG9lcyBub3QgbWFrZSBzZW5zZSBh bmQKPiA+IGNyZWF0ZXMgaXNzdWVzIGZvciB3aGVuIHRoZSBpbmNsdWRlZCBmaWxlIGlzIGdlbmVy YXRlZC4KPiAKPiBJZiB5b3UgY2hhbmdlIHRoYXQsIHdlIGNhbiBoYXZlIGlzc3VlIHdoZW4gYSBz eXN0ZW0gaW5jbHVkZSBoYXMgdGhlIHNhbWUKPiBuYW1lIGFzIG91ciBsb2NhbCBpbmNsdWRlLiBX aXRoICI8RklMRT4iLCBzeXN0ZW0gaGVhZGVyIGFyZSB0YWtlbiBmaXJzdC4KCj4gPiBJbiBDLCBp bmNsdWRlICJmaWxlIiBtZWFucyBsb29rIGluIGN1cnJlbnQgZGlyZWN0b3J5LAo+ID4gdGhlbiBv biBpbmNsdWRlIHNlYXJjaCBwYXRoLiBDdXJyZW50IGRpcmVjdG9yeSBoZXJlCj4gPiBtZWFucyB0 aGUgc291cmNlIGZpbGUgZGlyZWN0b3J5Lgo+ID4gQnkgY29tcGFyaXNvbiBpbmNsdWRlIDxmaWxl PiBtZWFucyBsb29rIG9uIGluY2x1ZGUgc2VhcmNoIHBhdGguCj4gCj4gTm90IGV4YWN0bHksIHRo ZXJlIGlzIHRoZSBub3Rpb24gb2YgInN5c3RlbSBoZWFkZXIiIHRvby4KPiAKPiBodHRwczovL2dj Yy5nbnUub3JnL29ubGluZWRvY3MvY3BwL0luY2x1ZGUtU3ludGF4Lmh0bWwKPiAKPiAjaW5jbHVk ZSA8ZmlsZT4KPiBUaGlzIHZhcmlhbnQgaXMgdXNlZCBmb3Igc3lzdGVtIGhlYWRlciBmaWxlcy4g SXQgc2VhcmNoZXMgZm9yIGEgZmlsZQo+IG5hbWVkIGZpbGUgaW4gYSBzdGFuZGFyZCBsaXN0IG9m IHN5c3RlbSBkaXJlY3Rvcmllcy4gWW91IGNhbiBwcmVwZW5kCj4gZGlyZWN0b3JpZXMgdG8gdGhp cyBsaXN0IHdpdGggdGhlIC1JIG9wdGlvbiAoc2VlIEludm9jYXRpb24pLgo+IAo+ICNpbmNsdWRl ICJmaWxlIgo+IFRoaXMgdmFyaWFudCBpcyB1c2VkIGZvciBoZWFkZXIgZmlsZXMgb2YgeW91ciBv d24gcHJvZ3JhbS4gSXQgc2VhcmNoZXMKPiBmb3IgYSBmaWxlIG5hbWVkIGZpbGUgZmlyc3QgaW4g dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjdXJyZW50Cj4gZmlsZSwgdGhlbiBpbiB0aGUg cXVvdGUgZGlyZWN0b3JpZXMgYW5kIHRoZW4gdGhlIHNhbWUgZGlyZWN0b3JpZXMgdXNlZAo+IGZv ciA8ZmlsZT4uIFlvdSBjYW4gcHJlcGVuZCBkaXJlY3RvcmllcyB0byB0aGUgbGlzdCBvZiBxdW90 ZSBkaXJlY3Rvcmllcwo+IHdpdGggdGhlIC1pcXVvdGUgb3B0aW9uLgo+IAo+ID4gQXMgZ2VuZXJh dGVkIGZpbGVzIGFyZSBub3QgaW4gdGhlIHNlYXJjaCBkaXJlY3RvcnkgKHVubGVzcyB0aGUgYnVp bGQKPiA+IGRpcmVjdG9yeSBoYXBwZW5zIHRvIG1hdGNoIHRoZSBzb3VyY2UgZGlyZWN0b3J5KSwg aXQgZG9lcyBub3QgbWFrZSBzZW5zZQo+ID4gdG8gaW5jbHVkZSB0aGVtIHdpdGggIiIgLSBkb2lu ZyBzbyBpcyBtZXJlbHkgbW9yZSB3b3JrIGZvciBwcmVwcm9jZXNzb3IKPiA+IGFuZCBhIHNvdXJj ZSBvciBlcnJvcnMgaWYgYSBzdGFsZSBmaWxlIGhhcHBlbnMgdG8gZXhpc3QgaW4gdGhlIHNvdXJj ZQo+ID4gZGlyZWN0b3J5Lgo+IAo+IEkgYWdyZWUgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggc3Rh bGUgZmlsZXMuIEJ1dCBsaW51eCwgZm9yIGluc3RhbmNlLAo+IGFza3MgZm9yIGEgIm1ha2UgbXJw cm9wZXIiIHRvIGF2b2lkIHRoaXMuCgpXZSBjYW4gZm9sbG93IHdoYXQgYXV0b2NvbmYgZG9lcywg YW5kIGFkZCBhIGNoZWNrIHRvIGNvbmZpZ3VyZSB0byBzZWUgaWYKdGhlcmUgYXJlIGdlbmVyYXRl ZCBmaWxlcyBsZWZ0IGluIHRoZSBzb3VyY2UgZGlyLCB3aGVuIGNvbmZpZ3VyaW5nIHdpdGgKYnVp bGRkaXIgIT0gc3JjZGlyLCBhbmQgZXhpdCB3aXRoIGVycm9yLCB0ZWxsaW5nIHVzZXIgdG8gY2xl YW4gdGhlaXIKc3JjIGRpciBmaXJzdC4KCj4gPiBUaGlzIGNoYW5nZXMgaW5jbHVkZSBkaXJlY3Rp dmVzIGZvciBhbGwgZ2VuZXJhdGVkIGZpbGVzLCBhY3Jvc3MgdGhlCj4gPiB0cmVlLiBUaGUgaWRl YSBpcyB0byBhdm9pZCBzZW5kaW5nIGEgaHVnZSBhbW91bnQgb2YgZW1haWwuICBCdXQgd2hlbgo+ ID4gbWVyZ2luZywgdGhlIGNoYW5nZXMgd2lsbCBiZSBzcGxpdCB3aXRoIG9uZSBjb21taXQgcGVy IGZpbGUsIGUuZy4gZm9yCj4gPiBlYXNlIG9mIGJpc2VjdCBpbiBjYXNlIG9mIGJ1aWxkIGZhaWx1 cmVzLCBhbmQgdG8gZWFzZSBtZXJnaW5nLgo+ID4gCj4gPiBOb3RlIHRoYXQgc2hvdWxkIHNvbWUg Z2VuZXJhdGVkIGZpbGVzIGJlIG1pc3NlZCBieSB0aGlzIHRyZWUtd2lkZQo+ID4gcmVmYWN0b3Jp bmcsIGl0IGlzbid0IGEgYmlnIGRlYWwgLSB0aGlzIG1lcmVseSBtYWludGFpbnMgdGhlIHN0YXR1 cyBxdW8sCj4gPiBhbmQgdGhpcyBjYW4gYmUgYWRkcmVzc2VkIGJ5IGEgc2VwYXJhdGUgcGF0Y2gg b24gdG9wLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEBy ZWRoYXQuY29tPgo+IAo+IEkgdGhpbmsgeW91ciBpZGVhIGNvbmZsaWN0cyB3aXRoIHdoYXQgTWFy a3VzIGhhcyBzdGFydGVkIHRvIGRvOgoKWWVzLCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCByZXZl cnQgd2hhdCBNYXJrdXMgc3RhcnRlZC4gICBCb3RoIHdheXMgb2YKcmVmZXJlbmNpbmcgUUVNVSBo ZWFkZXJzIGhhdmUgZG93bnNpZGVzLCBidXQgSSB0aGluayAiLi4uIiBoYXMgZmV3ZXIKZG93bnNp ZGVzIHRoYXQgIjwuLi4uIj4uCgpUaGUgcHJvYmxlbSBNaWNoYWVsIGlzIHRhY2tsaW5nIHNob3Vs ZCBiZSBwcmV0dHkgcmFyZSwgYmVjYXVzZSBtb2lzdApkZXZlbG9wZXJzIGFyZW4ndCBmcmVxdWVu dGx5IHN3aXRjaGluZyBiZXR3ZWVuIHNyY2Rpcj09YnVpbGRkaXIgYW5kCnNyY2RpciE9Yml1bGRk aXIgc2V0dXBzIC0gdGhleSBoYXZlIHRoZWlyIHByZWZlcmVuY2UgZm9yIHdoaWNoIHRvIHVzZQph bmQgc3RpY2sgd2l0aCBpdC4gQXMgbG9uZyBhcyB3ZSBnZXQgLi9jb25maWd1cmUgdG8gd2FybiBh Ym91dCB0aGUKZGlydHkgc3JjZGlyIGl0IHNob3VsZCBiZSBnb29kIGVub3VnaAoKUmVnYXJkcywK RGFuaWVsCi0tIAp8OiBodHRwczovL2JlcnJhbmdlLmNvbSAgICAgIC1vLSAgICBodHRwczovL3d3 dy5mbGlja3IuY29tL3Bob3Rvcy9kYmVycmFuZ2UgOnwKfDogaHR0cHM6Ly9saWJ2aXJ0Lm9yZyAg ICAgICAgIC1vLSAgICAgICAgICAgIGh0dHBzOi8vZnN0b3AxMzguYmVycmFuZ2UuY29tIDp8Cnw6 IGh0dHBzOi8vZW50YW5nbGUtcGhvdG8ub3JnICAgIC1vLSAgICBodHRwczovL3d3dy5pbnN0YWdy YW0uY29tL2RiZXJyYW5nZSA6fAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55853) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyDpV-00083q-RY for qemu-devel@nongnu.org; Tue, 20 Mar 2018 05:45:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyDpS-0000i7-HN for qemu-devel@nongnu.org; Tue, 20 Mar 2018 05:45:17 -0400 Date: Tue, 20 Mar 2018 09:44:06 +0000 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Message-ID: <20180320094406.GD4530@redhat.com> Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] qemu: include generated files with <> and not "" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: "Michael S. Tsirkin" , qemu-devel@nongnu.org, Paolo Bonzini , Peter Crosthwaite , Richard Henderson , Gerd Hoffmann , Eduardo Habkost , Igor Mammedov , Kevin Wolf , Max Reitz , Jeff Cody , Fam Zheng , John Snow , Stefan Weil , Stefan Hajnoczi , Ronnie Sahlberg , Peter Lieven , Eric Blake , Markus Armbruster , Alberto Garcia , Josh Durgin , Hitoshi Mitake , Liu Yuan , "Richard W.M. Jones" , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , "Dr. David Alan Gilbert" , Greg Kurz , Ben Warren , Peter Maydell , Shannon Zhao , Michael Walle , Keith Busch , Stefano Stabellini , Anthony Perard , Fabien Chouteau , Amit Shah , Marcel Apfelbaum , Mark Cave-Ayland , BALATON Zoltan , Alexander Graf , Cornelia Huck , Christian Borntraeger , David Gibson , Corey Minyard , =?utf-8?B?SGVydsOp?= Poussineau , Peter Chubb , Subbaraya Sundeep , Dmitry Fleytman , Jason Wang , Yongbok Kim , Max Filippov , Jiri Pirko , Yuval Shaia , David Hildenbrand , Hannes Reinecke , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Andrzej Zaborowski , Artyom Tarasenko , Alistair Francis , "Edgar E. Iglesias" , Stefan Berger , Alex Williamson , zhanghailiang , Juan Quintela , Michael Roth , Andreas =?utf-8?Q?F=C3=A4rber?= , Pavel Dovgalyuk , Riku Voipio , Zhang Chen , Li Zhijian , Wen Congyang , Xie Changlong , Marcelo Tosatti , Aurelien Jarno , kvm@vger.kernel.org, qemu-block@nongnu.org, sheepdog@lists.wpkg.org, qemu-arm@nongnu.org, xen-devel@lists.xenproject.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org, Thomas Huth On Tue, Mar 20, 2018 at 09:58:23AM +0100, Laurent Vivier wrote: > Le 20/03/2018 =C3=A0 02:54, Michael S. Tsirkin a =C3=A9crit=C2=A0: > > QEMU coding style at the moment asks for all non-system > > include files to be used with #include "foo.h". > > However this rule actually does not make sense and > > creates issues for when the included file is generated. >=20 > If you change that, we can have issue when a system include has the sam= e > name as our local include. With "", system header are taken first= . > > In C, include "file" means look in current directory, > > then on include search path. Current directory here > > means the source file directory. > > By comparison include means look on include search path. >=20 > Not exactly, there is the notion of "system header" too. >=20 > https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html >=20 > #include > This variant is used for system header files. It searches for a file > named file in a standard list of system directories. You can prepend > directories to this list with the -I option (see Invocation). >=20 > #include "file" > This variant is used for header files of your own program. It searches > for a file named file first in the directory containing the current > file, then in the quote directories and then the same directories used > for . You can prepend directories to the list of quote directorie= s > with the -iquote option. >=20 > > As generated files are not in the search directory (unless the build > > directory happens to match the source directory), it does not make se= nse > > to include them with "" - doing so is merely more work for preprocess= or > > and a source or errors if a stale file happens to exist in the source > > directory. >=20 > I agree there is a problem with stale files. But linux, for instance, > asks for a "make mrproper" to avoid this. We can follow what autoconf does, and add a check to configure to see if there are generated files left in the source dir, when configuring with builddir !=3D srcdir, and exit with error, telling user to clean their src dir first. > > This changes include directives for all generated files, across the > > tree. The idea is to avoid sending a huge amount of email. But when > > merging, the changes will be split with one commit per file, e.g. for > > ease of bisect in case of build failures, and to ease merging. > >=20 > > Note that should some generated files be missed by this tree-wide > > refactoring, it isn't a big deal - this merely maintains the status q= uo, > > and this can be addressed by a separate patch on top. > >=20 > > Signed-off-by: Michael S. Tsirkin >=20 > I think your idea conflicts with what Markus has started to do: Yes, I don't think we should revert what Markus started. Both ways of referencing QEMU headers have downsides, but I think "..." has fewer downsides that "<....">. The problem Michael is tackling should be pretty rare, because moist developers aren't frequently switching between srcdir=3D=3Dbuilddir and srcdir!=3Dbiulddir setups - they have their preference for which to use and stick with it. As long as we get ./configure to warn about the dirty srcdir it should be good enough Regards, Daniel --=20 |: https://berrange.com -o- https://www.flickr.com/photos/dberran= ge :| |: https://libvirt.org -o- https://fstop138.berrange.c= om :| |: https://entangle-photo.org -o- https://www.instagram.com/dberran= ge :| From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Subject: Re: [PATCH] qemu: include generated files with <> and not "" Date: Tue, 20 Mar 2018 09:44:06 +0000 Message-ID: <20180320094406.GD4530@redhat.com> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1eyDpA-0005yb-GM for xen-devel@lists.xenproject.org; Tue, 20 Mar 2018 09:44:56 +0000 Content-Disposition: inline In-Reply-To: <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Laurent Vivier Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , "Michael S. Tsirkin" , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, BALATON Zoltan , Keith Busch , Max Filippov , Gerd Hoffmann , "Edgar E. Iglesias" , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia zhanghailiang List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDk6NTg6MjNBTSArMDEwMCwgTGF1cmVudCBWaXZpZXIg d3JvdGU6Cj4gTGUgMjAvMDMvMjAxOCDDoCAwMjo1NCwgTWljaGFlbCBTLiBUc2lya2luIGEgw6lj cml0wqA6Cj4gPiBRRU1VIGNvZGluZyBzdHlsZSBhdCB0aGUgbW9tZW50IGFza3MgZm9yIGFsbCBu b24tc3lzdGVtCj4gPiBpbmNsdWRlIGZpbGVzIHRvIGJlIHVzZWQgd2l0aCAjaW5jbHVkZSAiZm9v LmgiLgo+ID4gSG93ZXZlciB0aGlzIHJ1bGUgYWN0dWFsbHkgZG9lcyBub3QgbWFrZSBzZW5zZSBh bmQKPiA+IGNyZWF0ZXMgaXNzdWVzIGZvciB3aGVuIHRoZSBpbmNsdWRlZCBmaWxlIGlzIGdlbmVy YXRlZC4KPiAKPiBJZiB5b3UgY2hhbmdlIHRoYXQsIHdlIGNhbiBoYXZlIGlzc3VlIHdoZW4gYSBz eXN0ZW0gaW5jbHVkZSBoYXMgdGhlIHNhbWUKPiBuYW1lIGFzIG91ciBsb2NhbCBpbmNsdWRlLiBX aXRoICI8RklMRT4iLCBzeXN0ZW0gaGVhZGVyIGFyZSB0YWtlbiBmaXJzdC4KCj4gPiBJbiBDLCBp bmNsdWRlICJmaWxlIiBtZWFucyBsb29rIGluIGN1cnJlbnQgZGlyZWN0b3J5LAo+ID4gdGhlbiBv biBpbmNsdWRlIHNlYXJjaCBwYXRoLiBDdXJyZW50IGRpcmVjdG9yeSBoZXJlCj4gPiBtZWFucyB0 aGUgc291cmNlIGZpbGUgZGlyZWN0b3J5Lgo+ID4gQnkgY29tcGFyaXNvbiBpbmNsdWRlIDxmaWxl PiBtZWFucyBsb29rIG9uIGluY2x1ZGUgc2VhcmNoIHBhdGguCj4gCj4gTm90IGV4YWN0bHksIHRo ZXJlIGlzIHRoZSBub3Rpb24gb2YgInN5c3RlbSBoZWFkZXIiIHRvby4KPiAKPiBodHRwczovL2dj Yy5nbnUub3JnL29ubGluZWRvY3MvY3BwL0luY2x1ZGUtU3ludGF4Lmh0bWwKPiAKPiAjaW5jbHVk ZSA8ZmlsZT4KPiBUaGlzIHZhcmlhbnQgaXMgdXNlZCBmb3Igc3lzdGVtIGhlYWRlciBmaWxlcy4g SXQgc2VhcmNoZXMgZm9yIGEgZmlsZQo+IG5hbWVkIGZpbGUgaW4gYSBzdGFuZGFyZCBsaXN0IG9m IHN5c3RlbSBkaXJlY3Rvcmllcy4gWW91IGNhbiBwcmVwZW5kCj4gZGlyZWN0b3JpZXMgdG8gdGhp cyBsaXN0IHdpdGggdGhlIC1JIG9wdGlvbiAoc2VlIEludm9jYXRpb24pLgo+IAo+ICNpbmNsdWRl ICJmaWxlIgo+IFRoaXMgdmFyaWFudCBpcyB1c2VkIGZvciBoZWFkZXIgZmlsZXMgb2YgeW91ciBv d24gcHJvZ3JhbS4gSXQgc2VhcmNoZXMKPiBmb3IgYSBmaWxlIG5hbWVkIGZpbGUgZmlyc3QgaW4g dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjdXJyZW50Cj4gZmlsZSwgdGhlbiBpbiB0aGUg cXVvdGUgZGlyZWN0b3JpZXMgYW5kIHRoZW4gdGhlIHNhbWUgZGlyZWN0b3JpZXMgdXNlZAo+IGZv ciA8ZmlsZT4uIFlvdSBjYW4gcHJlcGVuZCBkaXJlY3RvcmllcyB0byB0aGUgbGlzdCBvZiBxdW90 ZSBkaXJlY3Rvcmllcwo+IHdpdGggdGhlIC1pcXVvdGUgb3B0aW9uLgo+IAo+ID4gQXMgZ2VuZXJh dGVkIGZpbGVzIGFyZSBub3QgaW4gdGhlIHNlYXJjaCBkaXJlY3RvcnkgKHVubGVzcyB0aGUgYnVp bGQKPiA+IGRpcmVjdG9yeSBoYXBwZW5zIHRvIG1hdGNoIHRoZSBzb3VyY2UgZGlyZWN0b3J5KSwg aXQgZG9lcyBub3QgbWFrZSBzZW5zZQo+ID4gdG8gaW5jbHVkZSB0aGVtIHdpdGggIiIgLSBkb2lu ZyBzbyBpcyBtZXJlbHkgbW9yZSB3b3JrIGZvciBwcmVwcm9jZXNzb3IKPiA+IGFuZCBhIHNvdXJj ZSBvciBlcnJvcnMgaWYgYSBzdGFsZSBmaWxlIGhhcHBlbnMgdG8gZXhpc3QgaW4gdGhlIHNvdXJj ZQo+ID4gZGlyZWN0b3J5Lgo+IAo+IEkgYWdyZWUgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggc3Rh bGUgZmlsZXMuIEJ1dCBsaW51eCwgZm9yIGluc3RhbmNlLAo+IGFza3MgZm9yIGEgIm1ha2UgbXJw cm9wZXIiIHRvIGF2b2lkIHRoaXMuCgpXZSBjYW4gZm9sbG93IHdoYXQgYXV0b2NvbmYgZG9lcywg YW5kIGFkZCBhIGNoZWNrIHRvIGNvbmZpZ3VyZSB0byBzZWUgaWYKdGhlcmUgYXJlIGdlbmVyYXRl ZCBmaWxlcyBsZWZ0IGluIHRoZSBzb3VyY2UgZGlyLCB3aGVuIGNvbmZpZ3VyaW5nIHdpdGgKYnVp bGRkaXIgIT0gc3JjZGlyLCBhbmQgZXhpdCB3aXRoIGVycm9yLCB0ZWxsaW5nIHVzZXIgdG8gY2xl YW4gdGhlaXIKc3JjIGRpciBmaXJzdC4KCj4gPiBUaGlzIGNoYW5nZXMgaW5jbHVkZSBkaXJlY3Rp dmVzIGZvciBhbGwgZ2VuZXJhdGVkIGZpbGVzLCBhY3Jvc3MgdGhlCj4gPiB0cmVlLiBUaGUgaWRl YSBpcyB0byBhdm9pZCBzZW5kaW5nIGEgaHVnZSBhbW91bnQgb2YgZW1haWwuICBCdXQgd2hlbgo+ ID4gbWVyZ2luZywgdGhlIGNoYW5nZXMgd2lsbCBiZSBzcGxpdCB3aXRoIG9uZSBjb21taXQgcGVy IGZpbGUsIGUuZy4gZm9yCj4gPiBlYXNlIG9mIGJpc2VjdCBpbiBjYXNlIG9mIGJ1aWxkIGZhaWx1 cmVzLCBhbmQgdG8gZWFzZSBtZXJnaW5nLgo+ID4gCj4gPiBOb3RlIHRoYXQgc2hvdWxkIHNvbWUg Z2VuZXJhdGVkIGZpbGVzIGJlIG1pc3NlZCBieSB0aGlzIHRyZWUtd2lkZQo+ID4gcmVmYWN0b3Jp bmcsIGl0IGlzbid0IGEgYmlnIGRlYWwgLSB0aGlzIG1lcmVseSBtYWludGFpbnMgdGhlIHN0YXR1 cyBxdW8sCj4gPiBhbmQgdGhpcyBjYW4gYmUgYWRkcmVzc2VkIGJ5IGEgc2VwYXJhdGUgcGF0Y2gg b24gdG9wLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEBy ZWRoYXQuY29tPgo+IAo+IEkgdGhpbmsgeW91ciBpZGVhIGNvbmZsaWN0cyB3aXRoIHdoYXQgTWFy a3VzIGhhcyBzdGFydGVkIHRvIGRvOgoKWWVzLCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCByZXZl cnQgd2hhdCBNYXJrdXMgc3RhcnRlZC4gICBCb3RoIHdheXMgb2YKcmVmZXJlbmNpbmcgUUVNVSBo ZWFkZXJzIGhhdmUgZG93bnNpZGVzLCBidXQgSSB0aGluayAiLi4uIiBoYXMgZmV3ZXIKZG93bnNp ZGVzIHRoYXQgIjwuLi4uIj4uCgpUaGUgcHJvYmxlbSBNaWNoYWVsIGlzIHRhY2tsaW5nIHNob3Vs ZCBiZSBwcmV0dHkgcmFyZSwgYmVjYXVzZSBtb2lzdApkZXZlbG9wZXJzIGFyZW4ndCBmcmVxdWVu dGx5IHN3aXRjaGluZyBiZXR3ZWVuIHNyY2Rpcj09YnVpbGRkaXIgYW5kCnNyY2RpciE9Yml1bGRk aXIgc2V0dXBzIC0gdGhleSBoYXZlIHRoZWlyIHByZWZlcmVuY2UgZm9yIHdoaWNoIHRvIHVzZQph bmQgc3RpY2sgd2l0aCBpdC4gQXMgbG9uZyBhcyB3ZSBnZXQgLi9jb25maWd1cmUgdG8gd2FybiBh Ym91dCB0aGUKZGlydHkgc3JjZGlyIGl0IHNob3VsZCBiZSBnb29kIGVub3VnaAoKUmVnYXJkcywK RGFuaWVsCi0tIAp8OiBodHRwczovL2JlcnJhbmdlLmNvbSAgICAgIC1vLSAgICBodHRwczovL3d3 dy5mbGlja3IuY29tL3Bob3Rvcy9kYmVycmFuZ2UgOnwKfDogaHR0cHM6Ly9saWJ2aXJ0Lm9yZyAg ICAgICAgIC1vLSAgICAgICAgICAgIGh0dHBzOi8vZnN0b3AxMzguYmVycmFuZ2UuY29tIDp8Cnw6 IGh0dHBzOi8vZW50YW5nbGUtcGhvdG8ub3JnICAgIC1vLSAgICBodHRwczovL3d3dy5pbnN0YWdy YW0uY29tL2RiZXJyYW5nZSA6fAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==