From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: christian.rodriguez@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Mon, 13 May 2019 11:53:41 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 May 2019 11:53:40 -0700 X-ExtLoop1: 1 Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by orsmga002.jf.intel.com with ESMTP; 13 May 2019 11:53:40 -0700 Received: from orsmsx112.amr.corp.intel.com ([169.254.3.79]) by ORSMSX108.amr.corp.intel.com ([169.254.2.171]) with mapi id 14.03.0415.000; Mon, 13 May 2019 11:53:40 -0700 From: "Christian Rodriguez" To: Laszlo Ersek , "devel@edk2.groups.io" , "felixp@ami.com" CC: "Feng, Bob C" , "Gao, Liming" , "Zhu, Yonghong" Subject: Re: [edk2-devel] [PATCH] BaseTools: Include headers not mentioned in inf are not hashed Thread-Topic: [edk2-devel] [PATCH] BaseTools: Include headers not mentioned in inf are not hashed Thread-Index: AQHVBsJiRL7Y+aN3pkyXMseGtKl8F6Zk09wA///kGCCAAH34gP//i5RAgASnUoCAAACgIA== Date: Mon, 13 May 2019 18:53:39 +0000 Message-ID: <3A7DCC9A944C6149BF832E1C9B718ABC01F1B988@ORSMSX112.amr.corp.intel.com> References: <20190509212719.6156-1-christian.rodriguez@intel.com> <9333E191E0D52B4999CE63A99BA663A00302C89341@atlms1.us.megatrends.com> <3A7DCC9A944C6149BF832E1C9B718ABC01EDA3B3@ORSMSX112.amr.corp.intel.com> <9333E191E0D52B4999CE63A99BA663A00302C89592@atlms1.us.megatrends.com> <3A7DCC9A944C6149BF832E1C9B718ABC01EDA3F1@ORSMSX112.amr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzlhNDIxNjItOTI1NS00ZDE0LWE1NjktYTNjNzM4OGVlYzgyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoid0VDNmFiS2ZHQTBlZE1GQVhqXC8xVWdwOU1odFBJd2pDQnhEbk0yc0RabFIrc1p5cWlwNXNLM2Y5QVZINEtZdU4ifQ== dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSB0aGluayBhIHdhcm5pbmcgd291bGQgYmUgcmVhc29uYWJsZS4NCg0KSSBvbmx5IG1lbnRpb24g dGhlIHNwZWMgYmVjYXVzZSBpdCByZXF1aXJlcyBhbGwgaGVhZGVycyB0byBiZSBpbiB0aGUgc291 cmNlcyBzZWN0aW9uIG9mIHRoZSBpbmYsIGJ1dCBpdCdzIG5vdCBlbmZvcmNlZCBzdHJpY3RseSBi eSBCYXNlVG9vbHMuIFRob3VnaCB0aGUgaGFzaGluZyBmZWF0dXJlIHJlbGllcyBvbiB0aGlzIHJl cXVpcmVtZW50LiBJdCBub3QgYSBiaWcgZGVhbCwgSSBqdXN0IHdhbnRlZCB0byBtYWtlIHN1cmUg ZmFsc2UgcG9zaXRpdmUgYnVpbGQgc3VjY2Vzc2VzIHdlcmUgYWRkcmVzc2VkLg0KDQpUaGFua3Ms DQpDaHJpc3RpYW4NCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogTGFzemxv IEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+U2VudDogTW9uZGF5LCBNYXkgMTMs IDIwMTkgNDozOSBBTQ0KPlRvOiBSb2RyaWd1ZXosIENocmlzdGlhbiA8Y2hyaXN0aWFuLnJvZHJp Z3VlekBpbnRlbC5jb20+Ow0KPmRldmVsQGVkazIuZ3JvdXBzLmlvOyBmZWxpeHBAYW1pLmNvbQ0K PkNjOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPjxs aW1pbmcuZ2FvQGludGVsLmNvbT47IFpodSwgWW9uZ2hvbmcgPHlvbmdob25nLnpodUBpbnRlbC5j b20+DQo+U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIEJhc2VUb29sczogSW5jbHVk ZSBoZWFkZXJzIG5vdCBtZW50aW9uZWQNCj5pbiBpbmYgYXJlIG5vdCBoYXNoZWQNCj4NCj5PbiAw NS8xMC8xOSAyMTo0NSwgUm9kcmlndWV6LCBDaHJpc3RpYW4gd3JvdGU6DQo+PiBIYXNoaW5nIGlz IG5vdCBjaGFuZ2luZyBmaWxlIGZvcm1hdCByZXF1aXJlbWVudHMgYXMgQmFzZXRvb2xzIGhhcyBu bw0KPnJlcXVpcmVtZW50IG9uIHRoaXMgZXZlbiB0aG91Z2ggdGhlIHNwZWMgZG9lcyBoYXZlIGZp bGUgcmVxdWlyZW1lbnRzLiBUaGF0J3MNCj53aHkgdGhlIGluaXRpYWwgcGF0Y2ggd2FzIGEgd29y a2Fyb3VuZCBvZiBzb3J0cyBiZWNhdXNlIGl0IGlzIGFsbG93ZWQgYnkNCj5CYXNldG9vbHMgdG8g aGF2ZSBsb2NhbCBoZWFkZXJzIG5vdCBpbiB0aGUgc291cmNlcyBzZWN0aW9uIG9mIHRoZSBtZXRh IGZpbGUuDQo+Pg0KPj4gQWx3YXlzIGJyZWFraW5nIHRoZSBidWlsZCBpcyBvdXRzaWRlIG9mIHRo ZSBzY29wZSBvZiB0aGlzIEJaIGFuZCBteSBwcm9qZWN0DQo+cHJpb3JpdGllcy4gSSBhZ3JlZSBp dCBzaG91bGQgYmUgZG9uZSwgYnV0IGl0J3Mgb3V0IG9mIG15IHNjb3BlLg0KPj4NCj4+IEkgYW0g c3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaGFzaGluZyBmZWF0dXJlLCB3aGljaCByZWxpZXMg b24gVUVGSSBTcGVjDQo+cmVxdWlyZW1lbnRzLg0KPg0KPkkgdGhpbmsgYnJlYWtpbmcgdGhlIGJ1 aWxkIGltbWVkaWF0ZWx5IChhbmQgdW5jb25kaXRpb25hbGx5KSBjb3VsZCBjYXRjaA0KPnBsYXRm b3JtcyBieSBzdXJwcmlzZS4gQ2FuIHdlIG1ha2UgdGhpcyBhIHdhcm5pbmcgdnMuIGFuIGVycm9y PyBBbmQsIEknbQ0KPnRvdGFsbHkgT0sgaWYgaXQncyBhdmFpbGFibGUgb25seSB3aXRoIC0taGFz aCwgZm9yIG5vdy4NCj4NCj5CVFcgLS0gSSdtIG5vdCBzdXJlIHdoeSB0aGUgVUVGSSBzcGVjIGlz IHJlbGV2YW50IGhlcmUuDQo+DQo+VGhhbmtzDQo+TGFzemxvDQo+DQo+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyBbbWFpbHRvOmRl dmVsQGVkazIuZ3JvdXBzLmlvXSBPbiBCZWhhbGYgT2YNCj4+PiBGZWxpeCBQb2x5dWRvdg0KPj4+ IFNlbnQ6IEZyaWRheSwgTWF5IDEwLCAyMDE5IDEyOjMyIFBNDQo+Pj4gVG86IFJvZHJpZ3Vleiwg Q2hyaXN0aWFuIDxjaHJpc3RpYW4ucm9kcmlndWV6QGludGVsLmNvbT47DQo+Pj4gZGV2ZWxAZWRr Mi5ncm91cHMuaW87ICdsZXJzZWtAcmVkaGF0LmNvbScgPGxlcnNla0ByZWRoYXQuY29tPg0KPj4+ IENjOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPj4+ IDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFpodSwgWW9uZ2hvbmcgPHlvbmdob25nLnpodUBpbnRl bC5jb20+DQo+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIEJhc2VUb29sczog SW5jbHVkZSBoZWFkZXJzIG5vdA0KPj4+IG1lbnRpb25lZCBpbiBpbmYgYXJlIG5vdCBoYXNoZWQN Cj4+Pg0KPj4+IE15IHN1Z2dlc3Rpb24gd291bGQgYmUgdG8gYWx3YXlzIGJyZWFrIGEgYnVpbGQg KG5vIG1hdHRlciB3aGF0IHRoZQ0KPj4+IGhhc2hpbmcgc2V0dGluZ3MgYXJlKS4NCj4+PiBIYXNo aW5nIGlzIGp1c3QgYW4gb3B0aW1pemF0aW9uIHRlY2huaXF1ZSwgdXNhZ2Ugb2Ygd2hpY2ggc2hv dWxkIG5vdA0KPj4+IGJlIGNoYW5naW5nIHNvdXJjZSBmaWxlIGZvcm1hdHRpbmcgcmVxdWlyZW1l bnRzLg0KPj4+DQo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4+IEZyb206IFJv ZHJpZ3VleiwgQ2hyaXN0aWFuIFttYWlsdG86Y2hyaXN0aWFuLnJvZHJpZ3VlekBpbnRlbC5jb21d DQo+Pj4+IFNlbnQ6IEZyaWRheSwgTWF5IDEwLCAyMDE5IDM6MTQgUE0NCj4+Pj4gVG86IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBGZWxpeCBQb2x5dWRvdjsgJ2xlcnNla0ByZWRoYXQuY29tJw0KPj4+ PiBDYzogRmVuZywgQm9iIEM7IEdhbywgTGltaW5nOyBaaHUsIFlvbmdob25nDQo+Pj4+IFN1Ympl Y3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBCYXNlVG9vbHM6IEluY2x1ZGUgaGVhZGVycyBu b3QNCj4+Pj4gbWVudGlvbmVkIGluIGluZiBhcmUgbm90IGhhc2hlZA0KPj4+Pg0KPj4+PiBBZnRl ciB0YWxraW5nIHRvIG15IGNvbGxlYWd1ZXMgYWJvdXQgdGhpcywgdGhlIGRpcmVjdGlvbiBzZWVt cyB0byBiZQ0KPj4+PiB0byBmdW5kYW1lbnRhbGx5IGNoYW5nZSB0aGlzIEJaLiBJbnN0ZWFkIG9m IGJ1aWxkaW5nIHRoaXMgc29ydCBvZg0KPj4+PiB3b3JrYXJvdW5kIGZlYXR1cmUsIHdlIHNob3Vs ZCB1c2UgdGhlIGluZm9ybWF0aW9uIGdhdGhlcmVkIGZyb20gdGhpcw0KPj4+IGZlYXR1cmUgdG8g Y2F1c2UgdGhlIGJ1aWxkIHRvIGJyZWFrIHdoZW4gdGhlIGhhc2ggZmVhdHVyZSBpcyBlbmFibGVk Lg0KPj4+IFRoaXMgd291bGQgZm9yY2UgdXNlcnMgb2YgdGhlIGhhc2ggZmVhdHVyZSB0byBiZSBV RUZJIHNwZWMgY29tcGxhaW50Lg0KPj4+Pg0KPj4+PiBXaGF0IGRvIHlvdSBndXlzIHRoaW5rOyBM YXN6bG8gYW5kIEZlbGl4Pw0KPj4+Pg0KPj4+PiBJJ2xsIHVwZGF0ZSB0aGUgQlogd2hlbiBJIGdl dCB5b3VyIGlucHV0Lg0KPj4+Pg0KPj4+PiBUaGFua3MsDQo+Pj4+IENocmlzdGlhbiBSb2RyaWd1 ZXoNCj4+Pj4NCj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4+PiBGcm9tOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvXSBPbiBCZWhh bGYNCj4+Pj4+IE9mIEZlbGl4IFBvbHl1ZG92DQo+Pj4+PiBTZW50OiBGcmlkYXksIE1heSAxMCwg MjAxOSA2OjQxIEFNDQo+Pj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87ICdsZXJzZWtAcmVk aGF0LmNvbScgPGxlcnNla0ByZWRoYXQuY29tPjsNCj4+Pj4+IFJvZHJpZ3VleiwgQ2hyaXN0aWFu IDxjaHJpc3RpYW4ucm9kcmlndWV6QGludGVsLmNvbT4NCj4+Pj4+IENjOiBGZW5nLCBCb2IgQyA8 Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPj4+Pj4gPGxpbWluZy5nYW9AaW50 ZWwuY29tPjsgWmh1LCBZb25naG9uZyA8eW9uZ2hvbmcuemh1QGludGVsLmNvbT4NCj4+Pj4+IFN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBCYXNlVG9vbHM6IEluY2x1ZGUgaGVhZGVy cyBub3QNCj4+Pj4+IG1lbnRpb25lZCBpbiBpbmYgYXJlIG5vdCBoYXNoZWQNCj4+Pj4+DQo+Pj4+ Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+Pj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbyBbbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvXSBPbiBCZWhhbGYNCj4+Pj4+PiBP ZiBMYXN6bG8gRXJzZWsNCj4+Pj4+PiBTZW50OiBUaHVyc2RheSwgTWF5IDA5LCAyMDE5IDc6NTMg UE0NCj4+Pj4+Pg0KPj4+Pj4+IEhlbGxvIENocmlzdGlhbiwNCj4+Pj4+Pg0KPj4+Pj4+IE9uIDA1 LzA5LzE5IDIzOjI3LCBDaHJpc3RpYW4gUm9kcmlndWV6IHdyb3RlOg0KPj4+Pj4+PiBCWjogaHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3DQo+Pj4+Pj4+ DQo+Pj4+Pj4+IEdldCBhIGxpc3Qgb2YgbG9jYWwgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIG5vdCBw cmVzZW50IGluIHRoZQ0KPj4+Pj4+PiBNZXRhRmlsZSBmb3IgdGhpcyBtb2R1bGUuIEFkZCB0aG9z ZSBsb2NhbCBoZWFkZXIgZmlsZXMgaW50byB0aGUNCj4+Pj4+Pj4gaGFzaGluZyBhbGdvcml0aG0g Zm9yIGEgbW9kdWxlLiBJZiBhIGxvY2FsIGhlYWRlciBmaWxlIGlzIG5vdA0KPj4+Pj4+PiBwcmVz ZW50IGluIHRoZSBNZXRhRmlsZSwgdGhlIG1vZHVsZSB3aWxsIHN0aWxsIGJ1aWxkIGNvcnJlY3Rs eQ0KPj4+Pj4+PiB0aG91Z2ggdGhlIGhhc2hpbmcgc3lzdGVtIGRpZG4ndCBrbm93IGFib3V0IGl0 IGJlZm9yZS4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIFJvZHJp Z3Vleg0KPj4+Pj4+PiA8Y2hyaXN0aWFuLnJvZHJpZ3VlekBpbnRlbC5jb20+DQo+Pj4+Pj4+IENj OiBCb2IgRmVuZyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+Pj4+Pj4+IENjOiBMaW1pbmcgR2Fv IDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4+Pj4+Pj4gQ2M6IFlvbmdob25nIFpodSA8eW9uZ2hv bmcuemh1QGludGVsLmNvbT4NCj4+Pj4+Pj4gLS0tDQo+Pj4+Pj4+ICBCYXNlVG9vbHMvU291cmNl L1B5dGhvbi9BdXRvR2VuL0F1dG9HZW4ucHkgfCAyNA0KPj4+Pj4+PiArKysrKysrKysrKysrKysr KysrKysrKysNCj4+Pj4+Pj4gIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspDQo+Pj4+ Pj4NCj4+Pj4+PiBJIHNhdyB0aGUgQlogc29vbiBhZnRlciBpdCB3YXMgcmVwb3J0ZWQuIEkgYWxt b3N0IGNvbW1lbnRlZCwgYnV0DQo+Pj4+Pj4gdWx0aW1hdGVseSBJIGNvdWxkbid0IGRlY2lkZSB3 aGF0IHRoZSByZWFsIHVzZSBjYXNlIHdhcy4NCj4+Pj4+Pg0KPj4+Pj4+IFdpdGggdGhpcyBwYXJ0 aWN1bGFyIHVzZSBjYXNlIChpLmUuIElORiBmaWxlIGlzIG1pc3Npbmcgc29tZQ0KPj4+Pj4+IG1v ZHVsZS1zcGVjaWZpYyBoZWFkZXIgZmlsZXMgdGhhdCBpdCBjb3VsZCBlYXNpbHkgbGlzdCksIEkg dGhpbmsgSQ0KPj4+Pj4+IGRpc2FncmVlLCBtaWxkbHkgKG5vdCB0b28gc3Ryb25nbHkpLiBFLmcu LCB3ZSBmaXhlZCBzdWNoIG9taXNzaW9ucw0KPj4+Pj4+IGluIGEgYnVuY2ggb2YgSU5GIGZpbGVz LCBsYXN0IE1hcmNoLCBpbiB0aGUgc2VyaWVzDQo+Pj4+Pg0KPj4+Pj4gSSBhZ3JlZSB3aXRoIExh emxvLg0KPj4+Pj4gQWNjb3JkaW5nIHRvIHNlY3Rpb24gMy45IG9mIHRoZSBJTkYgc3BlY2lmaWNh dGlvbiAoaHR0cHM6Ly9lZGsyLQ0KPj4+Pj4gZG9jcy5naXRib29rcy5pby9lZGstaWktaW5mLQ0K Pj4+Pj4gc3BlY2lmaWNhdGlvbi8zX2Vka19paV9pbmZfZmlsZV9mb3JtYXQvMzlfW3NvdXJjZXNd X3NlY3Rpb25zLmh0bWwpLA0KPj4+Pj4gYWxsIHNvdXJjZSBmaWxlcyAoaW5jbHVkaW5nIG1vZHVs ZSBoZWFkZXIgZmlsZXMpIG11c3QgYmUgbGlzdGVkIGluDQo+Pj4+PiB0aGUgW1NvdXJjZXNdIHNl Y3Rpb24uDQo+Pj4+PiBIZXJlIGlzIHRoZSBxdW90ZToNCj4+Pj4+ICJBbGwgSElJIFVuaWNvZGUg Zm9ybWF0IGZpbGVzIG11c3QgYmUgbGlzdGVkIGluIHRoaXMgc2VjdGlvbiBhcw0KPj4+Pj4gd2Vs bCBhcyBhbnkgb3RoZXIgInNvdXJjZSIgdHlwZSBmaWxlLCBzdWNoIGFzIGxvY2FsIG1vZHVsZSBo ZWFkZXINCj4+Pj4+IGZpbGVzLCBWZnIgZmlsZXMsDQo+Pj4gZXRjLiAiDQo+Pj4+Pg0KPj4+Pj4g U28sIGlmIGZpbGUgWCBpcyB1c2VkIGJ5IG1vZHVsZSBZLCBidXQgaXMgbm90IGxpc3RlZCBpbiBZ LmluZiwgaXQncw0KPj4+Pj4gYSB2aW9sYXRpb24gb2YgdGhlIElORiBzcGVjLiwgd2hpY2ggbWFr ZXMgaXQgYSBidWcgdGhhdCBoYXMgdG8gYmUgZml4ZWQuDQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+IFBs ZWFzZSBjb25zaWRlciB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIHByaW50aW5nIHRoaXMgZW1haWwu DQo+Pj4+Pg0KPj4+Pj4gVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2Ug bWF5IGJlIGNvbmZpZGVudGlhbCBhbmQNCj4+Pj4+IHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1l Z2F0cmVuZHMsIEluYy4gIFRoaXMgY29tbXVuaWNhdGlvbiBpcw0KPj4+Pj4gaW50ZW5kZWQgdG8g YmUgcmVhZCBvbmx5IGJ5IHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0byB3aG9tIGl0IGlzDQo+ Pj4+PiBhZGRyZXNzZWQgb3IgYnkgdGhlaXIgZGVzaWduZWUuIElmIHRoZSByZWFkZXIgb2YgdGhp cyBtZXNzYWdlIGlzDQo+Pj4+PiBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZSBv biBub3RpY2UgdGhhdCBhbnkgZGlzdHJpYnV0aW9uDQo+Pj4+PiBvZiB0aGlzIG1lc3NhZ2UsIGlu IGFueSBmb3JtLCBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiAgUGxlYXNlDQo+Pj4+PiBwcm9tcHRs eSBub3RpZnkgdGhlIHNlbmRlciBieSByZXBseSBlLW1haWwgb3IgYnkgdGVsZXBob25lIGF0DQo+ Pj4+PiA3NzAtMjQ2LTg2MDAsIGFuZA0KPj4+IHRoZW4gZGVsZXRlIG9yIGRlc3Ryb3kgYWxsIGNv cGllcyBvZiB0aGUgdHJhbnNtaXNzaW9uLg0KPj4+Pj4gASAgIGwgICBLGCAgIHEgeSBlICAsaiAg ICAgIGEgICsgIFUgID9FIGUgICB3INONICAgaSAgIHZNICAgICAqPyAgXiAgfyAgLGogICBONiDL rXk4YiA6KSAgbSAgPw0KPj4+Pj4g6LqbIiAgICB9eSBNNSAgeyDetyBq6LqTICAgIHogICAgJ3og ICBoKyAgbCAgJyAgIHIgIHobbSAgIHkgNiAgLiDIqCAPIHogICAg7Lm3ISArLSAgICAg57OKe14g ICYNCj4+Pg0KPj4+IFBsZWFzZSBjb25zaWRlciB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIHByaW50 aW5nIHRoaXMgZW1haWwuDQo+Pj4NCj4+PiBUaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRo aXMgbWVzc2FnZSBtYXkgYmUgY29uZmlkZW50aWFsIGFuZA0KPj4+IHByb3ByaWV0YXJ5IHRvIEFt ZXJpY2FuIE1lZ2F0cmVuZHMsIEluYy4gIFRoaXMgY29tbXVuaWNhdGlvbiBpcw0KPj4+IGludGVu ZGVkIHRvIGJlIHJlYWQgb25seSBieSB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hvbSBp dCBpcw0KPj4+IGFkZHJlc3NlZCBvciBieSB0aGVpciBkZXNpZ25lZS4gSWYgdGhlIHJlYWRlciBv ZiB0aGlzIG1lc3NhZ2UgaXMgbm90DQo+Pj4gdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFy ZSBvbiBub3RpY2UgdGhhdCBhbnkgZGlzdHJpYnV0aW9uIG9mDQo+Pj4gdGhpcyBtZXNzYWdlLCBp biBhbnkgZm9ybSwgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gIFBsZWFzZSBwcm9tcHRseQ0KPj4+ IG5vdGlmeSB0aGUgc2VuZGVyIGJ5IHJlcGx5IGUtbWFpbCBvciBieSB0ZWxlcGhvbmUgYXQgNzcw LTI0Ni04NjAwLCBhbmQNCj50aGVuIGRlbGV0ZSBvciBkZXN0cm95IGFsbCBjb3BpZXMgb2YgdGhl IHRyYW5zbWlzc2lvbi4NCj4+PiABICAgbCAgIEsYICAgcSB5IGUgICxqICAgICAgYSAgKyAgVSAg P0UgZSAgIHcg0457ICBpICAgdk0gICAgICo/ICBeICB/ICAsaiAgIE45IMuteThiIDopICBtICA/ DQo+Pj4g6LqbIiAgICB9eSBNNSAgeyDetyBq6LqTICAgIHogICAgJ3ogICBoKyAgbCAgJyAgIHIg IHobbSAgIHkgNiAgLiDIqCAPIHogICAg7Lm3ISArLSAgICAg57OKe14gICYNCg0K