From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=siyuan.fu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D528A2119376C for ; Wed, 21 Nov 2018 03:53:10 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Nov 2018 03:53:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,261,1539673200"; d="scan'208";a="108120231" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 21 Nov 2018 03:53:09 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 21 Nov 2018 03:53:09 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.161]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.199]) with mapi id 14.03.0415.000; Wed, 21 Nov 2018 19:53:07 +0800 From: "Fu, Siyuan" To: Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Ye, Ting" , "Wu, Jiaxin" Thread-Topic: [edk2] [PATCH 1/6] NetworkPkg: Add DSC/FDF include segment files to NetworkPkg. Thread-Index: AQHUgVsZ3VhFDlnuf0W5+qAwLRxa26VZhiUAgACKY3A= Date: Wed, 21 Nov 2018 11:53:06 +0000 Message-ID: References: <20181121052819.15744-1-siyuan.fu@intel.com> <20181121052819.15744-2-siyuan.fu@intel.com> <1f37c165-aa7e-03d2-218d-b0c394c1e2fe@redhat.com> In-Reply-To: <1f37c165-aa7e-03d2-218d-b0c394c1e2fe@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGJmOWYyNmEtYWU5Ni00YjM3LThjY2UtYjIwOWZhZTgzMWRjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiQUFcL2dVd3NvRTRpaDZkaklSNHFTWDVGaFJnbjcrYkVlcUVOYUNtWkwyY1lFcjJjUzUrNTFUT2dCY3hTQm9VOTAifQ== dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 1/6] NetworkPkg: Add DSC/FDF include segment files to NetworkPkg. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Nov 2018 11:53:11 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIExhc3psbw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3ps byBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIE5v dmVtYmVyIDIxLCAyMDE4IDY6NDcgUE0NCj4gVG86IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRl bC5jb20+DQo+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgWWUsIFRpbmcgPHRpbmcueWVA aW50ZWwuY29tPjsgV3UsIEppYXhpbg0KPiA8amlheGluLnd1QGludGVsLmNvbT4NCj4gU3ViamVj dDogUmU6IFtlZGsyXSBbUEFUQ0ggMS82XSBOZXR3b3JrUGtnOiBBZGQgRFNDL0ZERiBpbmNsdWRl IHNlZ21lbnQNCj4gZmlsZXMgdG8gTmV0d29ya1BrZy4NCj4gDQo+IE9uIDExLzIxLzE4IDA2OjI4 LCBGdSBTaXl1YW4gd3JvdGU6DQo+ID4gVGhlICJOZXR3b3JrLmRzYy5pbmMiIGFuZCAiTmV0d29y ay5mZGYuaW5jIiBhcmUgYWRkZWQgZm9yIHBsYXRmb3JtIG93bmVyDQo+IHRvDQo+ID4gZWFzaWx5 IGVuYWJsZS9kaXNhYmxlIG5ldHdvcmsgc3RhY2sgc3VwcG9ydCBvbiB0aGVpciBwbGF0Zm9ybSwg YnkgYWRkaW5nDQo+ID4gICAhaW5jbHVkZSBOZXR3b3JrUGtnL05ldHdvcmsuZHNjLmluYw0KPiA+ IGFuZA0KPiA+ICAgIWluY2x1ZGUgTmV0d29ya1BrZy9OZXR3b3JrLmZkZi5pbmMNCj4gPiB0byB0 aGVpciBwbGF0Zm9ybSBEU0MvRkRGIGZpbGVzLg0KPiA+DQo+ID4gQSBzZXQgb2YgZmxhZ3MgY2Fu IGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBpbmNsdWRlIGxpbmUgb3IgaW4gYnVpbGQNCj4gY29tbWFu ZA0KPiA+IGxpbmUgKCItRCBGTEFHPVZBTFVFIikgdG8gZW5hYmxlIG9yIGRpc2FibGUgcmVsYXRl ZCBmZWF0dXJlIHNldC4NCj4gPg0KPiA+IFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZXNlIGZsYWdz IGFyZToNCj4gPiAgIERFRklORSBORVRXT1JLX0VOQUJMRSAgICAgPSBUUlVFDQo+ID4gICBERUZJ TkUgTkVUV09SS19TTlBfRU5BQkxFID0gVFJVRQ0KPiA+ICAgREVGSU5FIE5FVFdPUktfSVA0X0VO QUJMRSA9IFRSVUUNCj4gPiAgIERFRklORSBORVRXT1JLX0lQNl9FTkFCTEUgPSBUUlVFDQo+ID4g ICBERUZJTkUgTkVUV09SS19UTFNfRU5BQkxFID0gVFJVRQ0KPiA+ICAgREVGSU5FIE5FVFdPUktf SFRUUF9CT09UX0VOQUJMRSAgICAgICA9IFRSVUUNCj4gPiAgIERFRklORSBORVRXT1JLX0FMTE9X X0hUVFBfQ09OTkVDVElPTlMgPSBGQUxTRQ0KPiA+ICAgREVGSU5FIE5FVFdPUktfSVBTRUNfRU5B QkxFID0gVFJVRQ0KPiA+ICAgREVGSU5FIE5FVFdPUktfSVNDU0lfRU5BQkxFID0gVFJVRQ0KPiA+ ICAgREVGSU5FIE5FVFdPUktfVkxBTl9FTkFCTEUgID0gVFJVRQ0KPiANCj4gKDEpIFRoaXMgdGFi bGUgaXMgaW5jb25zaXN0ZW50IHdpdGggcmVnYXJkIHRvIGFsaWdubWVudC4gSW4gc29tZSBjYXNl cywNCj4gdGhlcmUgYXJlIGF0dGVtcHRzIHRvIGFsaWduIHRoZSBlcXVhbCBzaWducywgYW5kIHRo ZSBhc3NpZ25lZCB2YWx1ZXMNCj4gKHN1Y2ggYXMgTkVUV09SS19FTkFCTEUgYW5kIE5FVFdPUktf QUxMT1dfSFRUUF9DT05ORUNUSU9OUyksIGhvd2V2ZXIsIGFzDQo+IGEgd2hvbGUsIHRoZSB0YWJs ZSBpcyBpbmNvbnNpc3RlbnQuIFBsZWFzZSBhbGlnbiBhbGwgdGhlIGVxdWFsIHNpZ25zIGFuZA0K PiB0aGUgYXNzaWduZWQgdmFsdWVzIHRvIHRoZSBsb25nZXN0IG1hY3JvIG5hbWUsIG5hbWVseQ0K PiBORVRXT1JLX0FMTE9XX0hUVFBfQ09OTkVDVElPTlMuDQoNCkFncmVlLCBJIFdpbGwgZml4IHRo aXMgaW4gdjIgcGF0Y2guDQoNCj4gDQo+ID4gRGV0YWlsIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmxh ZyBpcyBpbiBOZXR3b3JrLmRzYy5pbmMgZmlsZS4NCj4gPg0KPiA+IFJlbGF0ZWQgQlo6IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5Mw0KPiA+DQo+ID4g Q2M6IEppYXhpbiBXdSA8amlheGluLnd1QGludGVsLmNvbT4NCj4gPiBDYzogVGluZyBZZSA8dGlu Zy55ZUBpbnRlbC5jb20+DQo+ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmli dXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+IFNpZ25lZC1vZmYtYnk6IEZ1IFNpeXVhbiA8c2l5dWFu LmZ1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgTmV0d29ya1BrZy9OZXR3b3JrLmRzYy5pbmMg fCAyMDMgKysrKysrKysrKysrKysrKysrKysNCj4gPiAgTmV0d29ya1BrZy9OZXR3b3JrLmZkZi5p bmMgfCAgODEgKysrKysrKysNCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAyODQgaW5zZXJ0aW9ucygr KQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL05ldHdvcmtQa2cvTmV0d29yay5kc2MuaW5jIGIvTmV0 d29ya1BrZy9OZXR3b3JrLmRzYy5pbmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uNTBjZjkzYmE4MTZhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL05ldHdvcmtQa2cvTmV0d29yay5kc2MuaW5jDQo+ID4gQEAgLTAsMCArMSwyMDMgQEANCj4g PiArIyMgQGZpbGUNCj4gPiArIyBOZXR3b3JrIERTQyBpbmNsdWRlIGZpbGUgZm9yIEFsbCBBcmNo aXRlY3R1cmVzLg0KPiA+ICsjDQo+ID4gKyMgVGhpcyBmaWxlIGNhbiBiZSBpbmNsdWRlZCB0byBh IHBsYXRmb3JtIERTQyBieSB1c2luZyAiIWluY2x1ZGUNCj4gTmV0d29ya1BrZy9OZXR3b3JrLmRz Yy5pbmMiDQo+ID4gKyMgdG8gYWRkIGVkazIgbmV0d29yayBzdGFjayBkcml2ZXJzLg0KPiA+ICsj IEJlbG93IGZsYWdzIGNhbiBiZSBjaGFuZ2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gZW5hYmxl IG9yIGRpc2FibGUNCj4gcmVsYXRlZCBmZWF0dXJlDQo+ID4gKyMgc3VwcG9ydC4NCj4gPiArIyAg IC1EIEZMQUc9VkFMVUUNCj4gPiArIyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGVzZSBmbGFncyBh cmU6DQo+ID4gKyMgICBERUZJTkUgTkVUV09SS19FTkFCTEUgICAgID0gVFJVRQ0KPiA+ICsjICAg REVGSU5FIE5FVFdPUktfU05QX0VOQUJMRSA9IFRSVUUNCj4gPiArIyAgIERFRklORSBORVRXT1JL X0lQNF9FTkFCTEUgPSBUUlVFDQo+ID4gKyMgICBERUZJTkUgTkVUV09SS19JUDZfRU5BQkxFID0g VFJVRQ0KPiA+ICsjICAgREVGSU5FIE5FVFdPUktfVExTX0VOQUJMRSA9IFRSVUUNCj4gPiArIyAg IERFRklORSBORVRXT1JLX0hUVFBfQk9PVF9FTkFCTEUgICAgICAgPSBUUlVFDQo+ID4gKyMgICBE RUZJTkUgTkVUV09SS19BTExPV19IVFRQX0NPTk5FQ1RJT05TID0gRkFMU0UNCj4gPiArIyAgIERF RklORSBORVRXT1JLX0lQU0VDX0VOQUJMRSA9IFRSVUUNCj4gPiArIyAgIERFRklORSBORVRXT1JL X0lTQ1NJX0VOQUJMRSA9IFRSVUUNCj4gPiArIyAgIERFRklORSBORVRXT1JLX1ZMQU5fRU5BQkxF ICA9IFRSVUUNCj4gDQo+ICgyKSBTYW1lIGFzICgxKS4NCj4gDQo+ID4gKyMNCj4gPiArIyBDb3B5 cmlnaHQgKGMpIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiArIw0KPiA+ICsjICAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gPiArIyAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gPiArIyAg ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZQ0KPiBtYXkgYmUgZm91bmQgYXQNCj4gPiArIyAgICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKyMNCj4gPiArIyAgICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gPiArIyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUw0KPiBPUiBJTVBMSUVELg0KPiA+ICsjDQo+ID4g KyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArIWlmbmRlZiBORVRXT1JLX0VOQUJMRQ0K PiA+ICsgICMNCj4gPiArICAjIFRoaXMgZmxhZyBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUg d2hvbGUgbmV0d29yayBzdGFjay4NCj4gPiArICAjIFRoZXNlIGNhbiBiZSBjaGFuZ2VkIG9uIHRo ZSBjb21tYW5kIGxpbmUuDQo+ID4gKyAgIyAtRCBGTEFHPVZBTFVFDQo+IA0KPiAoMykgSSBzdWdn ZXN0IGRyb3BwaW5nIHRoZSBzdGF0ZW1lbnQgIlRoZXNlIGNhbiBiZSBjaGFuZ2VkIG9uIHRoZQ0K PiBjb21tYW5kIGxpbmUiLg0KPiANCj4gSSBhbHNvIHN1Z2dlc3QgZHJvcHBpbmcgdGhlIGdlbmVy aWMgIi1EIEZMQUc9VkFMVUUiIGxpbmUuDQo+IA0KPiBCb3RoIG9mIHRob3NlIGFwcGx5IHRvIGFs bCBzZXR0aW5ncywgYW5kIHRoZXkgYXJlIHdlbGwgZXhwbGFpbmVkIGluIHRoZQ0KPiBnZW5lcmFs IGRlc2NyaXB0aW9uIG5lYXIgdGhlIHRvcC4NCg0KWW91IGFyZSBjb3JyZWN0LiBUaGVzZSBsaW5l cyB3ZXJlIGFkZGVkIGJlZm9yZSBJIHdyb3RlIHRoZSBmaWxlIGhlYWRlciwgdGhleSBhcmUgcmVk dW5kYW50DQpub3cgc2luY2UgdGhlIGZpbGUgaGVhZGVyIGFscmVhZHkgZGVzY3JpYmUgaXQuIFdp bGwgcmVtb3ZlIGl0IGluIFYyIHBhdGNoLg0KDQo+IA0KPiA+ICsgICMNCj4gPiArICBERUZJTkUg TkVUV09SS19FTkFCTEUgPSBUUlVFDQo+ID4gKyFlbmRpZg0KPiA+ICsNCj4gPiArIWlmbmRlZiBO RVRXT1JLX1NOUF9FTkFCTEUNCj4gPiArICAjDQo+ID4gKyAgIyBUaGlzIGZsYWcgaXMgdG8gaW5j bHVkZSB0aGUgY29tbW9uIFNOUCBkcml2ZXIgb3Igbm90Lg0KPiA+ICsgICMgVGhlc2UgY2FuIGJl IGNoYW5nZWQgb24gdGhlIGNvbW1hbmQgbGluZS4NCj4gPiArICAjIC1EIEZMQUc9VkFMVUUNCj4g PiArICAjDQo+ID4gKyAgREVGSU5FIE5FVFdPUktfU05QX0VOQUJMRSA9IFRSVUUNCj4gPiArIWVu ZGlmDQo+ID4gKw0KPiA+ICshaWZuZGVmIE5FVFdPUktfSVA0X0VOQUJMRQ0KPiA+ICsgICMNCj4g PiArICAjIFRoaXMgZmxhZyBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSBJUHY0IG5ldHdvcmsgc3Rh Y2suDQo+ID4gKyAgIyBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvbiB0aGUgY29tbWFuZCBsaW5lLg0K PiA+ICsgICMgLUQgRkxBRz1WQUxVRQ0KPiA+ICsgICMNCj4gPiArICBERUZJTkUgTkVUV09SS19J UDRfRU5BQkxFID0gVFJVRQ0KPiA+ICshZW5kaWYNCj4gPiArDQo+ID4gKyFpZm5kZWYgTkVUV09S S19JUDZfRU5BQkxFDQo+ID4gKyAgIw0KPiA+ICsgICMgVGhpcyBmbGFnIGlzIHRvIGVuYWJsZSBv ciBkaXNhYmxlIElQdjYgbmV0d29yayBzdGFjay4NCj4gPiArICAjIFRoZXNlIGNhbiBiZSBjaGFu Z2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuDQo+ID4gKyAgIyAtRCBGTEFHPVZBTFVFDQo+ID4gKyAg Iw0KPiA+ICsgIERFRklORSBORVRXT1JLX0lQNl9FTkFCTEUgPSBUUlVFDQo+ID4gKyFlbmRpZg0K PiA+ICsNCj4gPiArIWlmbmRlZiBORVRXT1JLX1RMU19FTkFCTEUNCj4gPiArICAjDQo+ID4gKyAg IyBUaGlzIGZsYWcgaXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgVExTIGZlYXR1cmUuDQo+ID4gKyAg IyBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvbiB0aGUgY29tbWFuZCBsaW5lLg0KPiA+ICsgICMgLUQg RkxBRz1WQUxVRQ0KPiA+ICsgICMNCj4gPiArICAjIE5vdGU6IFRMUyBmZWF0dXJlIGhpZ2hseSBk ZXBlbmRzIG9uIHRoZSBPcGVuU1NMIGJ1aWxkaW5nLiBUbyBlbmFibGUNCj4gdGhpcw0KPiA+ICsg ICMgICAgICAgZmVhdHVyZSwgcGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvdW5kIGlu IHRoZSBmaWxlDQo+ICJQYXRjaC1IT1dUTy50eHQiDQo+IA0KPiAoNCkgVGhlIGZpbGUgaXMgbm93 IGNhbGxlZCAiT3BlblNTTC1IT1dUTy50eHQiLg0KPiANCj4gKDUpIFBsZWFzZSBzdHJpcCBhbGwg c3BhY2UgY2hhcmFjdGVycyBkaXJlY3RseSBwcmVjZWRpbmcgQ1JMRnMuIChUaGVyZQ0KPiBhcmUg bXVsdGlwbGUgaW5zdGFuY2VzIGluIHRoaXMgcGF0Y2guKQ0KPiANCj4gPiArICAjICAgICAgIGxv Y2F0ZWQgaW4gQ3J5cHRvUGtnXExpYnJhcnlcT3BlbnNzbExpYiB0byBlbmFibGUgdGhlIE9wZW5T U0wNCj4gYnVpbGRpbmcgZmlyc3QuDQo+ID4gKyAgIw0KPiA+ICsgIERFRklORSBORVRXT1JLX1RM U19FTkFCTEUgPSBUUlVFDQo+ID4gKyFlbmRpZg0KPiA+ICsNCj4gPiArIWlmbmRlZiBORVRXT1JL X0hUVFBfQk9PVF9FTkFCTEUNCj4gPiArICAjDQo+ID4gKyAgIyBUaGlzIGZsYWcgaXMgdG8gZW5h YmxlIG9yIGRpc2FibGUgSFRUUChzKSBib290IGZlYXR1cmUuDQo+IA0KPiAoNikgSSB0aGluayB3 ZSBzaG91bGQgc3BlbGwgaXQgYXMgSFRUUChTKSwgdXBwZXItY2FzZSAiUyIuICJIVFRQcyIgbG9v a3MNCj4gc3RyYW5nZS4NCj4gDQo+ID4gKyAgIyBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvbiB0aGUg Y29tbWFuZCBsaW5lLg0KPiA+ICsgICMgLUQgRkxBRz1WQUxVRQ0KPiA+ICsgICMNCj4gPiArICBE RUZJTkUgTkVUV09SS19IVFRQX0JPT1RfRU5BQkxFID0gVFJVRQ0KPiA+ICshZW5kaWYNCj4gPiAr DQo+ID4gKyFpZm5kZWYgTkVUV09SS19BTExPV19IVFRQX0NPTk5FQ1RJT05TDQo+ID4gKyAgIw0K PiA+ICsgICMgSW5kaWNhdGVzIHdoZXRoZXIgSFRUUCBjb25uZWN0aW9ucyAoaS5lLiwgdW5zZWN1 cmVkKSBhcmUgcGVybWl0dGVkDQo+IG9yIG5vdC4NCj4gPiArICAjIC1EIEZMQUc9VkFMVUUNCj4g PiArICAjDQo+ID4gKyAgIyBOb3RlOiBJZiBORVRXT1JLX0FMTE9XX0hUVFBfQ09OTkVDVElPTlMg aXMgVFJVRSwgSFRUUCBjb25uZWN0aW9ucw0KPiBhcmUgYWxsb3dlZC4NCj4gPiArICAjICAgICAg IEJvdGggdGhlICJodHRwczovLyIgYW5kICJodHRwOi8vIiBVUkkgc2NoZW1lcyBhcmUgcGVybWl0 dGVkLg0KPiBPdGhlcndpc2UsIEhUVFANCj4gPiArICAjICAgICAgIGNvbm5lY3Rpb25zIGFyZSBk ZW5pZWQuIE9ubHkgdGhlICJodHRwczovLyIgVVJJIHNjaGVtZSBpcw0KPiBwZXJtaXR0ZWQuDQo+ ID4gKyAgIw0KPiA+ICsgIERFRklORSBORVRXT1JLX0FMTE9XX0hUVFBfQ09OTkVDVElPTlMgPSBG QUxTRQ0KPiA+ICshZW5kaWYNCj4gPiArDQo+ID4gKyFpZm5kZWYgTkVUV09SS19JUFNFQ19FTkFC TEUNCj4gPiArICAjDQo+ID4gKyAgIyBUaGlzIGZsYWcgaXMgdG8gZW5hYmxlIG9yIGRpc2FibGUg SVBzZWMgZmVhdHVyZS4NCj4gPiArICAjIFRoZXNlIGNhbiBiZSBjaGFuZ2VkIG9uIHRoZSBjb21t YW5kIGxpbmUuDQo+ID4gKyAgIyAtRCBGTEFHPVZBTFVFDQo+ID4gKyAgIw0KPiA+ICsgIERFRklO RSBORVRXT1JLX0lQU0VDX0VOQUJMRSA9IFRSVUUNCj4gPiArIWVuZGlmDQo+IA0KPiAoNykgSWYg SVBTRUMgcmVxdWlyZXMgT3BlblNTTCwgcGxlYXNlIHNwZWxsIHRoYXQgb3V0IGhlcmUuDQo+IA0K PiA+ICsNCj4gPiArIWlmbmRlZiBORVRXT1JLX0lTQ1NJX0VOQUJMRQ0KPiA+ICsgICMNCj4gPiAr ICAjIFRoaXMgZmxhZyBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSBpU0NTSSBmZWF0dXJlLg0KPiAN Cj4gKDgpIFBsZWFzZSBtYWtlIGEgbm90ZSBoZXJlIHRvbyBhYm91dCB0aGUgT3BlblNTTCBkZXBl bmRlbmN5Lg0KPiANCj4gKDkpIFJlZ2FyZGluZyBPcGVuU1NMIGRlcGVuZGVuY2llcywgSSBzZWUg dGhhdCBsb3dlciBkb3duLCB0aGlzIHBhdGNoDQo+IHJlc29sdmVzIHNvbWUgbGlicmFyeSBjbGFz c2VzIHRvIHNwZWNpZmljIGxpYnJhcnkgaW5zdGFuY2VzLiBJIGd1ZXNzDQo+IHRoYXQncyBPSywg Z2l2ZW4gdGhhdCBhIHBsYXRmb3JtIGlzIG5ldmVyIGV4cGVjdGVkIHRvIHJlc29sdmUgdGhlc2UN Cj4gbGlicmFyeSBjbGFzc2VzIHRvIGRpZmZlcmVudCAocG9zc2libHkgcGxhdGZvcm0tc3BlY2lm aWMpIGxpYnJhcnkNCj4gaW5zdGFuY2VzLg0KPiANCj4gSG93ZXZlciwgT3BlblNTTCBzaXRzIHNv bWV3aGVyZSBpbiB0aGUgbWlkZGxlLiBJdCBpcyB0cnVlIHRoYXQgYQ0KPiBwbGF0Zm9ybSBpcyBu b3QgZXhwZWN0ZWQgcHJvdmlkZSBpdHMgb3duIE9wZW5zc2xMaWIgaW5zdGFuY2UuIE9uIHRoZQ0K PiBvdGhlciBoYW5kLCB0aGUgcGxhdGZvcm0gKnNob3VsZCogbWFrZSBhIGNob2ljZSBiZXR3ZWVu ICJPcGVuc3NsTGliLmluZiINCj4gYW5kICJPcGVuc3NsTGliQ3J5cHRvLmluZiIuIEFuZCwgaW4g bXkgb3BpbmlvbiwgdGhpcyBEU0MgaW5jbHVkZSBmaWxlDQo+IHNob3VsZCBzdXBwb3J0IHRoZSBw bGF0Zm9ybSBvd25lciBpbiBtYWtpbmcgdGhhdCBjaG9pY2UuDQo+IA0KPiBJIGNhbiBzZWUgbXVs dGlwbGUgb3B0aW9ucyBoZXJlLg0KPiANCj4gKDlhKSBEZXBlbmRlbnQgb24gdmFyaW91cyBORVRX T1JLXyogZmxhZ3MsIHJlc29sdmUgdGhlIE9wZW5zc2xMaWIgY2xhc3MNCj4gZ2xvYmFsbHksIGlu IHRoaXMgRFNDIGluY2x1ZGUgZmlsZS4NCj4gDQo+IEhvd2V2ZXIsIEkgdGhpbmsgdGhpcyBpc24n dCBmbGV4aWJsZSBlbm91Z2gsIGZvciBhbGwgcGxhdGZvcm0gbmVlZHMuDQo+IA0KPiAoOWIpIERv IG5vdCByZXNvbHZlIE9wZW5zc2xMaWIgZ2xvYmFsbHksIGJ1dCBtYWtlIHN1cmUgT3BlbnNzbExp YiBpcw0KPiByZXNvbHZlZCBmb3IgKmluZGl2aWR1YWwqIE5ldHdvcmtQa2cgbW9kdWxlcyBvbiBh IGNhc2UtYnktY2FzZSBiYXNpcw0KPiAodXNpbmcgdGhlIElORi1zY29wZWQgPExpYnJhcnlDbGFz c2VzPiBzeW50YXggaW4gdGhpcyBEU0MgaW5jbHVkZSkuDQo+IA0KPiBUaGlzIGFwcHJvYWNoIHdv dWxkIG1lYW4gdGhhdCBUTFMgZHJpdmVycyBnZXQgIk9wZW5zc2xMaWIuaW5mIiBob29rZWQNCj4g aW50byB0aGVtLCB3aGlsZSBJU2NzaUR4ZSBvbmx5IGdldHMgIk9wZW5zc2xMaWJDcnlwdG8uaW5m Ii4gVWx0aW1hdGVseSwNCj4gaWYgc29tZW9uZSBsb29rcyBhdCBhIGJ1aWxkIHJlcG9ydCBmaWxl LCB0aGV5IHNob3VsZCBiZSBhYmxlIHRvIGRlY2lkZQ0KPiBxdWlja2x5IHdoZXRoZXIgdGhlIGZ1 bGwtYmxvd24gIk9wZW5zc2xMaWIuaW5mIiBsaWIgaW5zdGFuY2Ugd2FzIHVzZWQgYXQNCj4gYWxs Lg0KPiANCj4gKDljKSBEb24ndCByZXNvbHZlIE9wZW5zc2xMaWIgYXQgYWxsLCBidXQgcHJlY2lz ZWx5IGRvY3VtZW50IHRoZSBsaWINCj4gaW5zdGFuY2UgZXhwZWN0YXRpb25zIG5lYXIgdGhlIE5F VFdPUktfKiBmbGFncy4gSS5lLiwgd2hlcmV2ZXIgeW91DQo+IG1lbnRpb24gT3BlblNTTCBhcyBh IGRlcGVuZGVuY3kgKE5FVFdPUktfVExTX0VOQUJMRSwNCj4gTkVUV09SS19JU0NTSV9FTkFCTEUs IGFuZCBwb3NzaWJseSBORVRXT1JLX0lQU0VDX0VOQUJMRSksIHBsZWFzZSBhbHNvDQo+IGV4cGxh aW4gdGhlIG1pbmltdW0gcmVxdWlyZWQgT3BlblNTTCBsaWIgaW5zdGFuY2UuDQoNCkkgYWxzbyBj b25zaWRlcmVkIHRoaXMgcHJvYmxlbSB3aGVuIGNyZWF0aW5nIHRoaXMgcGF0Y2gsIGFib3V0IHdo ZXRoZXIgSQ0Kc2hvdWxkIHJlc29sdmUgT3BlbnNzbExpYiBpbnN0YW5jZSBpbiBOZXR3b3JrUGtn J3MgaW5jbHVkZSBmaWxlLg0KDQpBY3R1YWxseSBJIGhlc2l0YXRlZCBiZXR3ZWVuIHlvdXIgb3B0 aW9uIDlhIGFuZCA5YiBhbmQgY2FuJ3QgZGVjaWRlIHdoaWNoDQpvbmUgaXMgYmV0dGVyLCBzbyBJ IGNob29zZSB0byBvbmx5IHJlc29sdmUgbmV0d29yayBzcGVjaWZpYyBsaWJyYXJpZXMgYW5kDQps ZWF2ZSBhbGwgb3RoZXIgbGlicmFyeSB0byBwbGF0Zm9ybSBvd25lci4gWW91IGFyZSBjb3JyZWN0 IHRoYXQgSSBzaG91bGQNCmFkZCBtb3JlIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBkZXBlbmRlbmN5 IG9mIE9wZW5zc2wsIHNvIHRoZSBwbGF0Zm9ybSBvd25lcg0KY291bGQgZ2V0IGVub3VnaCBrbm93 bGVkZ2UgdG8gbWFrZSByaWdodCBjaG9pY2UuDQoNClNvIEkgcHJlZmVyIHlvdXIgOWMgc29sdXRp b24sIHdpbGwgYWRkIHRoaXMgaW4gdGhlIHYyIHBhdGNoLg0KDQo+IA0KPiA+ICsgICMgVGhlc2Ug Y2FuIGJlIGNoYW5nZWQgb24gdGhlIGNvbW1hbmQgbGluZS4NCj4gPiArICAjIC1EIEZMQUc9VkFM VUUNCj4gPiArICAjDQo+ID4gKyAgREVGSU5FIE5FVFdPUktfSVNDU0lfRU5BQkxFID0gVFJVRQ0K PiA+ICshZW5kaWYNCj4gPiArDQo+ID4gKyFpZm5kZWYgTkVUV09SS19WTEFOX0VOQUJMRQ0KPiA+ ICsgICMNCj4gPiArICAjIFRoaXMgZmxhZyBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSBWTEFOIGZl YXR1cmUuDQo+ID4gKyAgIyBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvbiB0aGUgY29tbWFuZCBsaW5l Lg0KPiA+ICsgICMgLUQgRkxBRz1WQUxVRQ0KPiA+ICsgICMNCj4gPiArICBERUZJTkUgTkVUV09S S19WTEFOX0VOQUJMRSA9IFRSVUUNCj4gPiArIWVuZGlmDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNs YXNzZXMuY29tbW9uLkRYRV9EUklWRVIsIExpYnJhcnlDbGFzc2VzLmNvbW1vbi5VRUZJX0RSSVZF UiwNCj4gTGlicmFyeUNsYXNzZXMuY29tbW9uLlVFRklfQVBQTElDQVRJT05dDQo+ID4gKyAgRHBj TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZURwY0xpYi9EeGVEcGNMaWIuaW5mDQo+ID4gKyAg TmV0TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZU5ldExpYi9EeGVOZXRMaWIuaW5mDQo+ID4g KyAgSXBJb0xpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVJcElvTGliL0R4ZUlwSW9MaWIuaW5m DQo+ID4gKyAgVWRwSW9MaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlVWRwSW9MaWIvRHhlVWRw SW9MaWIuaW5mDQo+ID4gKyAgVGNwSW9MaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlVGNwSW9M aWIvRHhlVGNwSW9MaWIuaW5mDQo+ID4gKyAgSHR0cExpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9E eGVIdHRwTGliL0R4ZUh0dHBMaWIuaW5mDQo+IA0KPiAoMTApIERvZXMgdGhpcyBEU0MgaW5jbHVk ZSBmaWxlIGFjdHVhbGx5IHJlZmVyIHRvIGFueSBVRUZJX0FQUExJQ0FUSU9OPw0KDQpObywgd2ls bCByZW1vdmUgdGhlICJMaWJyYXJ5Q2xhc3Nlcy5jb21tb24uVUVGSV9BUFBMSUNBVElPTiIgaW4g djIgcGF0Y2guDQoNCj4gDQo+ID4gKw0KPiA+ICtbUGNkc0ZpeGVkQXRCdWlsZF0NCj4gPiArIWlm ICQoTkVUV09SS19BTExPV19IVFRQX0NPTk5FQ1RJT05TKSA9PSBUUlVFDQo+ID4gKyAgZ0VmaU5l dHdvcmtQa2dUb2tlblNwYWNlR3VpZC5QY2RBbGxvd0h0dHBDb25uZWN0aW9uc3xUUlVFDQo+ID4g KyFlbmRpZg0KPiANCj4gKDExKSBJJ20gbm90IHN1cmUgdGhpcyBpcyBmbGV4aWJsZSBlbm91Z2gu DQo+IA0KPiBGaXJzdCwgaW4gIk92bWZQa2cvT3ZtZlBrZ0lhMzJYNjQuZHNjIiwgd2Ugc2V0IHRo ZSBQQ0Qgb25seSB1bmRlcg0KPiBbUGNkc0ZpeGVkQXRCdWlsZC5YNjRdLCBub3QgdW5kZXIgW1Bj ZHNGaXhlZEF0QnVpbGRdLiBJIGFncmVlIHRoYXQgaW4NCj4gcHJhY3RpY2UsIHN1Y2ggYSBjaGFu Z2Ugc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBob3dldmVyLg0KPiANCj4gU2Vjb25kLCBhIG1vcmUg cHJhY3RpY2FsIG9ic2VydmF0aW9uOiBOZXR3b3JrUGtnLmRlYyBkZWNsYXJlcyB0aGlzIFBDRA0K PiBub3QganVzdCBhcyBmaXhlZCwgYnV0IGFsc28gYXMgcGF0Y2hhYmxlLWluLW1vZHVsZS4gQXMg ZmFyIGFzIEkNCj4gdW5kZXJzdGFuZCwgdGhlIGFib3ZlIERTQyBpbmNsdWRlIGh1bmsgd2lsbCBw cmV2ZW50IHBsYXRmb3JtcyBmcm9tIHVzaW5nDQo+IHRoZSBQQ0QgYXMgcGF0Y2hhYmxlLg0KPiAN Cj4gSSB0aGluayB0aGUgbW9zdCBmbGV4aWJsZSBvcHRpb24gd291bGQgYmUgdG8gc2ltcGx5IHJl bW92ZSB0aGUNCj4gTkVUV09SS19BTExPV19IVFRQX0NPTk5FQ1RJT05TIGJ1aWxkIGZsYWcsIGZy b20gdGhpcyBwYXRjaCwgYW5kIHRvIGFsbG93DQo+IHBsYXRmb3JtcyB0byBzZXQgdGhlIFBDRCBo b3dldmVyIHRoZXkgd2FudC4gQSBidWlsZCBtYWNybyAoIi1EIikgaXMgbm90DQo+IGV4cHJlc3Np dmUgZW5vdWdoIGZvciB0aGlzLiBBbHNvIHJlbWVtYmVyIHRoYXQgIi0tcGNkIiBjYW4gYmUgcGFz c2VkIG9uDQo+IHRoZSBidWlsZCBjb21tYW5kIGxpbmUgdG9vLCBzbyBub3QgbXVjaCB1c2FiaWxp dHkvY29udmVuaWVuY2UgaXMgbG9zdCBieQ0KPiByZW1vdmluZyBORVRXT1JLX0FMTE9XX0hUVFBf Q09OTkVDVElPTlMuDQoNCkknbSBPSyB0byByZW1vdmUgdGhpcyBmbGFnLg0KDQo+IA0KPiA+ICsN Cj4gPiArW0NvbXBvbmVudHNdDQo+IA0KPiAoMTIpIEhvdyBpcyB0aGlzIGdvaW5nIHRvIHdvcmsg d2l0aCBtdWx0aS1hcmNoIHBsYXRmb3JtIGJ1aWxkcywgc3VjaCBhcw0KPiAiT3ZtZlBrZy9Pdm1m UGtnSWEzMlg2NC5kc2MiLCB3aGVyZSB0aGUgUEVJIHBoYXNlIGlzIDMyLWJpdCwgYW5kIHRoZSBE WEUNCj4gcGhhc2UgaXMgNjQtYml0Pw0KPiANCj4gSSBkb24ndCB0aGluayAiT3ZtZlBrZ0lhMzJY NjQuZHNjIiBzaG91bGQgYnVpbGQgdGhlIG5ldHdvcmtpbmcgbW9kdWxlcw0KPiBmb3IgMzItYml0 IHRvby4gVGhleSB3b3VsZCBuZXZlciBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgZmxhc2ggZGV2 aWNlLA0KPiBzbyBpdCdzIHdhc3RlZCBjb21waWxhdGlvbi4NCj4gDQo+IENhbiB3ZSBpbnRyb2R1 Y2Ugc2VwYXJhdGUgRFNDIGluY2x1ZGUgZmlsZXMgKGZyYWdtZW50cykgZm9yIGVhY2ggb2YgdGhl DQo+IERTQyBmaWxlIHNlY3Rpb25zPyBUaGF0IGlzLCB3ZSBjb3VsZCBoYXZlOg0KPiANCj4gLSBh ICJOZXR3b3JrRGVmaW5lcy5kc2MuaW5jIiBmb3IgdGhlIFtEZWZpbmVzXSBzZWN0aW9uKHMpLA0K PiAtIGEgIk5ldHdvcmtMaWJzLmRzYy5pbmMiIGZvciB0aGUgW0xpYnJhcnlDbGFzc2VzKl0gc2Vj dGlvbihzKSwNCj4gLSBhICJOZXR3b3JrUGNkcy5kc2MuaW5jIiBmb3IgdGhlIFtQY2RzKl0gc2Vj dGlvbihzKSwNCj4gLSBhICJOZXR3b3JrQ29tcG9uZW50cy5kc2MuaW5jIiBmb3IgdGhlIFtDb21w b25lbnRzKl0gc2VjdGlvbihzKS4NCj4gDQo+IFRoZW4gdGhlIHBsYXRmb3JtIERTQyB3b3VsZCBi ZSByZXNwb25zaWJsZSBmb3Igc3BlbGxpbmcgb3V0IHRoZSBwcmVjaXNlDQo+IHNlY3Rpb24gaGVh ZGVyIGl0IHdhbnRzLCBhbmQgdGhlbiBpbmNsdWRlIHRoZSBtYXRjaGluZyBEU0MgaW5jbHVkZSBm aWxlDQo+IHJpZ2h0IGJlbG93IHRoYXQuDQo+IA0KPiBJbiBvdGhlciB3b3JkcywgY2FuIHdlIHNw bGl0IHRoaXMgRFNDIGluY2x1ZGUgaW50byBtdWx0aXBsZSBmaWxlcywgYXQNCj4gdGhlIGN1cnJl bnRseSBzaG93biBzZWN0aW9uIGhlYWRlcnMsIGFuZCByZW1vdmUgdGhlIHNlY3Rpb24gaGVhZGVy cw0KPiB0aGVtc2VsdmVzPw0KDQpJdCdzIHF1aXRlIGEgZ29vZCBzdWdnZXN0aW9uLg0KDQpNeSBp bml0aWFsIGludGVudGlvbiBpcyB0byBtYWtlIHRoZSBpbmNsdWRlIGZpbGUgYXMgc2ltcGxlIGFz IHBvc3NpYmxlLA0KdG8gbWluaW1pemUgdGhlIHBsYXRmb3JtIG93bmVyJ3Mgd29yaywgc28gSSBq dXN0IHByb3ZpZGUgMSBpbmNsdWRlIGZpbGUNCmZvciBEU0MsIGFuZCB5b3UgYXJlIGNvcnJlY3Qg dGhhdCBpdCB3YXMgZG9uZSBhdCB0aGUgY29zdCBvZiBsb3NpbmcNCmZsZXhpYmlsaXR5IGFuZCB3 YXN0aW5nIGJ1aWxkIHRpbWUuIA0KDQpOb3cgSSB0aGluayBldmVuIHdlIGhhdmUgNCBzZXBhcmF0 ZSBEU0MgaW5jbHVkZSBmaWxlcywgaXQncyBzdGlsbCBtdWNoDQplYXNpZXIgdG8gb3JnYW5pemUg dGhhbiBvcmlnaW5hbCAyMCBtb3JlIElORiwgYW5kIHdpdGggbXVjaCBtb3JlIGZsZXhpYmlsaXR5 DQp0byBwbGF0Zm9ybSBvd25lci4NCg0KVGhpcyBjb3VsZCBhbHNvIHNvbHZlIHRoZSBwcm9ibGVt ICgxMSkuDQoNCj4gDQo+ID4gKyFpZiAkKE5FVFdPUktfRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAg IWlmICgkKE5FVFdPUktfSVA0X0VOQUJMRSkgPT0gRkFMU0UpIEFORCAoJChORVRXT1JLX0lQNl9F TkFCTEUpID09DQo+IEZBTFNFKQ0KPiA+ICsgICAgTXVzdCBzZWxlY3QgYXQgbGVhc3QgSVA0IG9y IElQNiBzdGFjayBpZiBORVRXT1JLX0VOQUJMRSBpcyBzZXQgdG8NCj4gVFJVRS4NCj4gPiArICAh ZW5kaWYNCj4gDQo+ICgxMykgRGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgIWVycm9yIHN0YXRlbWVu dCwgaW50cm9kdWNlZCBmb3I6DQo+IA0KPiAgIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9NzAxDQo+IA0KPiA/DQo+IA0KPiAoVGhlIHF1ZXN0aW9uIGFwcGxp ZXMgdG8gdGhlIHJlc3Qgb2YgdGhlIGVycm9yIG1lc3NhZ2VzIGJlbG93LikNCj4gDQo+ID4gKw0K PiA+ICsgICFpZiAoJChORVRXT1JLX0hUVFBfQk9PVF9FTkFCTEUpID09IFRSVUUpIEFORCAoJChO RVRXT1JLX1RMU19FTkFCTEUpDQo+ID09IEZBTFNFKSBBTkQgKCQoTkVUV09SS19BTExPV19IVFRQ X0NPTk5FQ1RJT05TKSA9PSBGQUxTRSkNCj4gPiArICAgIE11c3QgZW5hYmxlIFRMUyB0byBzdXBw b3J0IEhUVFBzLCBvciBhbGxvdyB1bnNlY3VyZWQgSFRUUA0KPiBjb25uZWN0aW9uLCBpZiBORVRX T1JLX0hUVFBfQk9PVF9FTkFCTEUgaXMgc2V0IHRvIFRSVUUuDQo+ID4gKyAgIWVuZGlmDQoNClll cyBhbmQgSSdtIG5vdCBhd2FyZSBvZiB0aGlzIHN0YXRlbWVudCBzdXBwb3J0LCB0aGFua3MuDQoN Cj4gDQo+ICgxNCkgSWYgeW91IGFncmVlIHdpdGggdGhlIHNwbGl0IEknbSBzdWdnZXN0aW5nIHVu ZGVyICgxMik6IGNhbiB3ZSBtb3ZlDQo+IHRoZXNlIGNoZWNrcyBpbnRvIHRoZSBbRGVmaW5lc10g ZnJhZ21lbnQ/DQoNClN1cmUNCg0KPiANCj4gPiArDQo+ID4gKyAgTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9OZXR3b3JrL0RwY0R4ZS9EcGNEeGUuaW5mDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdP UktfU05QX0VOQUJMRSkgPT0gVFJVRQ0KPiA+ICsgICAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9O ZXR3b3JrL1NucER4ZS9TbnBEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4gKw0KPiA+ICsgIE1k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9NbnBEeGUvTW5wRHhlLmluZg0KPiA+ICsgIE5l dHdvcmtQa2cvVGNwRHhlL1RjcER4ZS5pbmYNCj4gPiArICBOZXR3b3JrUGtnL1VlZmlQeGVCY0R4 ZS9VZWZpUHhlQmNEeGUuaW5mDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfSVA0X0VOQUJM RSkgPT0gVFJVRQ0KPiA+ICsgICAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3b3JrL0FycER4 ZS9BcnBEeGUuaW5mDQo+ID4gKyAgICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdvcmsvRGhj cDREeGUvRGhjcDREeGUuaW5mDQo+ID4gKyAgICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdv cmsvSXA0RHhlL0lwNER4ZS5pbmYNCj4gPiArICAgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0 d29yay9NdGZ0cDREeGUvTXRmdHA0RHhlLmluZg0KPiA+ICsgICAgTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9OZXR3b3JrL1VkcDREeGUvVWRwNER4ZS5pbmYNCj4gPiArICAhZW5kaWYNCj4gPiArDQo+ ID4gKyAgIWlmICQoTkVUV09SS19JUDZfRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAgICBOZXR3b3Jr UGtnL0lwNkR4ZS9JcDZEeGUuaW5mDQo+ID4gKyAgICBOZXR3b3JrUGtnL0RoY3A2RHhlL0RoY3A2 RHhlLmluZg0KPiA+ICsgICAgTmV0d29ya1BrZy9VZHA2RHhlL1VkcDZEeGUuaW5mDQo+ID4gKyAg ICBOZXR3b3JrUGtnL010ZnRwNkR4ZS9NdGZ0cDZEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4g Kw0KPiA+ICsgICFpZiAkKE5FVFdPUktfSFRUUF9CT09UX0VOQUJMRSkgPT0gVFJVRQ0KPiA+ICsg ICAgTmV0d29ya1BrZy9EbnNEeGUvRG5zRHhlLmluZg0KPiA+ICsgICAgTmV0d29ya1BrZy9IdHRw RHhlL0h0dHBEeGUuaW5mDQo+ID4gKyAgICBOZXR3b3JrUGtnL0h0dHBVdGlsaXRpZXNEeGUvSHR0 cFV0aWxpdGllc0R4ZS5pbmYNCj4gPiArICAgIE5ldHdvcmtQa2cvSHR0cEJvb3REeGUvSHR0cEJv b3REeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfSVBT RUNfRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAgICBOZXR3b3JrUGtnL0lwU2VjRHhlL0lwU2VjRHhl LmluZg0KPiA+ICsgICFlbmRpZg0KPiA+ICsNCj4gPiArICAhaWYgJChORVRXT1JLX1RMU19FTkFC TEUpID09IFRSVUUNCj4gPiArICAgIE5ldHdvcmtQa2cvVGxzRHhlL1Rsc0R4ZS5pbmYNCj4gPiAr ICAgIE5ldHdvcmtQa2cvVGxzQXV0aENvbmZpZ0R4ZS9UbHNBdXRoQ29uZmlnRHhlLmluZg0KPiA+ ICsgICFlbmRpZg0KPiANCj4gKDE1KSBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzbid0IGZsZXhpYmxl IGVub3VnaCBmb3IgT1ZNRi4gT1ZNRiBob29rcw0KPiANCj4gICBPdm1mUGtnL0xpYnJhcnkvVGxz QXV0aENvbmZpZ0xpYi9UbHNBdXRoQ29uZmlnTGliLmluZg0KPiANCj4gaW50byBUbHNBdXRoQ29u ZmlnRHhlIHZpYSBOVUxMIGNsYXNzIHJlc29sdXRpb24gLS0gZm9yIHNldHRpbmcgdXAgdGhlIENB DQo+IGNlcnRpZmljYXRlcyBhbmQgY2lwaGVyIHN1aXRlcywgaW4gdm9sYXRpbGUgVUVGSSB2YXJp YWJsZXMsIGp1c3QgaW4gdGltZS4NCg0KWW91IGFyZSBjb3JyZWN0LCB0aGF0J3Mgd2h5IEkgbGVh dmUgdGhlIG9yaWdpbmFsICJUTFNfRU5BQkxFIiBmbGFnIGFuZCBzZXQNCk5FVFdPUktfVExTX0VO QUJMRSB0byBmYWxzZSBpbiBPVk1GIHBhY2thZ2UncyBwYXRjaC4gSWYgYSBwbGF0Zm9ybSB3YW50 IHRvDQpvdmVycmlkZSBhIGRyaXZlciBvciBsaWJyYXJ5IGNvbXBvbmVudCwgaXQgc2hvdWxkIGRp c2FibGUgdGhlIHJlbGF0aXZlDQpORVRXT1JLXyoqKiBmbGFnIGZvciB0aGUgaW5jbHVkZSBmaWxl LCBhbmQgYWRkIHRoZSBvdmVycmlkZSBjb21wb25lbnQgaW4NCml0cyBEU0MvRkRGIHNlcGFyYXRl bHkuDQoNCkkgaGF2ZW4ndCBmaWd1cmUgb3V0IGEgZ29vZCBzb2x1dGlvbiBleGNlcHQgdGhpcyBt ZXRob2QuDQoNCg0KPiANCj4gPiArDQo+ID4gKyAgIWlmICQoTkVUV09SS19JU0NTSV9FTkFCTEUp ID09IFRSVUUNCj4gPiArICAgIE5ldHdvcmtQa2cvSVNjc2lEeGUvSVNjc2lEeGUuaW5mDQo+ID4g KyAgIWVuZGlmDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfVkxBTl9FTkFCTEUpID09IFRS VUUNCj4gPiArICAgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9WbGFuQ29uZmlnRHhl L1ZsYW5Db25maWdEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4gKw0KPiA+ICshZW5kaWYNCj4g PiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9OZXR3b3JrLmZkZi5pbmMgYi9OZXR3b3JrUGtnL05l dHdvcmsuZmRmLmluYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMDAwLi40ODFkYmIzNjhkMjMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTmV0d29y a1BrZy9OZXR3b3JrLmZkZi5pbmMNCj4gPiBAQCAtMCwwICsxLDgxIEBADQo+ID4gKyMjIEBmaWxl DQo+ID4gKyMgTmV0d29yayBGREYgaW5jbHVkZSBmaWxlIGZvciBBbGwgQXJjaGl0ZWN0dXJlcy4N Cj4gPiArIw0KPiA+ICsjIFRoaXMgZmlsZSBjYW4gYmUgaW5jbHVkZWQgdG8gYSBwbGF0Zm9ybSBG REYgYnkgdXNpbmcgIiFpbmNsdWRlDQo+IE5ldHdvcmtQa2cvTmV0d29yay5mZGYuaW5jIg0KPiA+ ICsjIHRvIGFkZCBlZGsyIG5ldHdvcmsgc3RhY2sgZHJpdmVycy4NCj4gPiArIyBCZWxvdyBmbGFn cyBjYW4gYmUgY2hhbmdlZCBvbiB0aGUgY29tbWFuZCBsaW5lIHRvIGVuYWJsZSBvciBkaXNhYmxl DQo+IHJlbGF0ZWQgZmVhdHVyZQ0KPiA+ICsjIHN1cHBvcnQuDQo+ID4gKyMgICAtRCBGTEFHPVZB TFVFDQo+ID4gKyMgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlc2UgZmxhZ3MgYXJlOg0KPiA+ICsj ICAgREVGSU5FIE5FVFdPUktfRU5BQkxFICAgICA9IFRSVUUNCj4gPiArIyAgIERFRklORSBORVRX T1JLX1NOUF9FTkFCTEUgPSBUUlVFDQo+ID4gKyMgICBERUZJTkUgTkVUV09SS19JUDRfRU5BQkxF ID0gVFJVRQ0KPiA+ICsjICAgREVGSU5FIE5FVFdPUktfSVA2X0VOQUJMRSA9IFRSVUUNCj4gPiAr IyAgIERFRklORSBORVRXT1JLX1RMU19FTkFCTEUgPSBUUlVFDQo+ID4gKyMgICBERUZJTkUgTkVU V09SS19IVFRQX0JPT1RfRU5BQkxFICAgICAgID0gVFJVRQ0KPiA+ICsjICAgREVGSU5FIE5FVFdP UktfQUxMT1dfSFRUUF9DT05ORUNUSU9OUyA9IEZBTFNFDQo+ID4gKyMgICBERUZJTkUgTkVUV09S S19JUFNFQ19FTkFCTEUgPSBUUlVFDQo+ID4gKyMgICBERUZJTkUgTkVUV09SS19JU0NTSV9FTkFC TEUgPSBUUlVFDQo+ID4gKyMgICBERUZJTkUgTkVUV09SS19WTEFOX0VOQUJMRSAgPSBUUlVFDQo+ IA0KPiAoMTYpIEkgc3VnZ2VzdCByZW1vdmluZyB0aGlzIGR1cGxpY2F0ZWQgZG9jdW1lbnRhdGlv biwgYW5kIHJlZmVycmluZyB0aGUNCj4gcmVhZGVyIHRvIHRoZSBEU0MgaW5jbHVkZSBmaWxlcyBp bnN0ZWFkLg0KDQpJdCdzIE9LIHdpdGggbWUuDQoNCj4gDQo+ID4gKyMNCj4gPiArIyBDb3B5cmln aHQgKGMpIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiArIw0KPiA+ICsjICAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPiArIyAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gPiArIyAgICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZQ0KPiBtYXkgYmUgZm91bmQgYXQNCj4gPiArIyAgICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKyMNCj4gPiArIyAgICBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBC QVNJUywNCj4gPiArIyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUw0KPiBPUiBJTVBMSUVELg0KPiA+ICsjDQo+ID4gKw0K PiA+ICshaWYgJChORVRXT1JLX0VOQUJMRSkgPT0gVFJVRQ0KPiA+ICsgICFpZiAkKE5FVFdPUktf U05QX0VOQUJMRSkgPT0gVFJVRQ0KPiA+ICsgICAgSU5GIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv TmV0d29yay9TbnBEeGUvU25wRHhlLmluZg0KPiANCj4gKDE3KSBUaGVyZSBpcyBvbmx5IG9uZSBz cGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgIklORiIuIEl0IGlzIG5vdCBjb25zaXN0ZW50DQo+IHdpdGgg dGhlIHJlc3QgKHRoZSByZXN0IHVzZXMgdHdvIHNwYWNlIGNoYXJhY3RlcnMpLg0KPiANCj4gPiAr ICAhZW5kaWYNCj4gPiArDQo+ID4gKyAgSU5GICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdv cmsvRHBjRHhlL0RwY0R4ZS5pbmYNCj4gPiArICBJTkYgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv TmV0d29yay9NbnBEeGUvTW5wRHhlLmluZg0KPiANCj4gKDE4KSBUaGUgRFNDIGluY2x1ZGUgZmls ZSByZWZlcmVuY2VzIHRoZSBtb2R1bGUgSU5GIGZpbGVzIGluIGEgZGlmZmVyZW50DQo+IG9yZGVy OiBEcGNEeGUsIFNucER4ZSwgTW5wRHhlLiBJIHN1Z2dlc3Qgc3RpY2tpbmcgd2l0aCB0aGUgc2Ft ZSBvcmRlciBpbg0KPiB0aGUgRkRGIGZpbGUsIGZvciBlYXNpZXIgbWFpbnRlbmFuY2UuDQo+IA0K PiBQbGVhc2UgdmVyaWZ5IHRoaXMgKGkuZS4gdGhlIGxpc3Rpbmcgb3JkZXIpIGZvciB0aGUgcmVz dCBvZiB0aGUgZHJpdmVycw0KPiB0b28uDQo+IA0KPiA+ICsgIElORiAgTmV0d29ya1BrZy9UY3BE eGUvVGNwRHhlLmluZg0KPiA+ICsgIElORiAgTmV0d29ya1BrZy9VZWZpUHhlQmNEeGUvVWVmaVB4 ZUJjRHhlLmluZg0KPiA+ICsNCj4gPiArICAhaWYgJChORVRXT1JLX0lQNF9FTkFCTEUpID09IFRS VUUNCj4gPiArICAgIElORiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3b3JrL0FycER4ZS9B cnBEeGUuaW5mDQo+ID4gKyAgICBJTkYgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9J cDREeGUvSXA0RHhlLmluZg0KPiA+ICsgICAgSU5GICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05l dHdvcmsvVWRwNER4ZS9VZHA0RHhlLmluZg0KPiA+ICsgICAgSU5GICBNZGVNb2R1bGVQa2cvVW5p dmVyc2FsL05ldHdvcmsvRGhjcDREeGUvRGhjcDREeGUuaW5mDQo+ID4gKyAgICBJTkYgIE1kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9NdGZ0cDREeGUvTXRmdHA0RHhlLmluZg0KPiA+ICsg ICFlbmRpZg0KPiA+ICsNCj4gPiArICAhaWYgJChORVRXT1JLX0lQNl9FTkFCTEUpID09IFRSVUUN Cj4gPiArICAgIElORiAgTmV0d29ya1BrZy9JcDZEeGUvSXA2RHhlLmluZg0KPiA+ICsgICAgSU5G ICBOZXR3b3JrUGtnL0RoY3A2RHhlL0RoY3A2RHhlLmluZg0KPiA+ICsgICAgSU5GICBOZXR3b3Jr UGtnL1VkcDZEeGUvVWRwNkR4ZS5pbmYNCj4gPiArICAgIElORiAgTmV0d29ya1BrZy9NdGZ0cDZE eGUvTXRmdHA2RHhlLmluZg0KPiA+ICsgICFlbmRpZg0KPiA+ICsNCj4gPiArICAhaWYgJChORVRX T1JLX0hUVFBfQk9PVF9FTkFCTEUpID09IFRSVUUNCj4gPiArICAgIElORiAgTmV0d29ya1BrZy9E bnNEeGUvRG5zRHhlLmluZg0KPiA+ICsgICAgSU5GICBOZXR3b3JrUGtnL0h0dHBEeGUvSHR0cER4 ZS5pbmYNCj4gPiArICAgIElORiAgTmV0d29ya1BrZy9IdHRwVXRpbGl0aWVzRHhlL0h0dHBVdGls aXRpZXNEeGUuaW5mDQo+ID4gKyAgICBJTkYgIE5ldHdvcmtQa2cvSHR0cEJvb3REeGUvSHR0cEJv b3REeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfSVBT RUNfRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAgICBJTkYgIE5ldHdvcmtQa2cvSXBTZWNEeGUvSXBT ZWNEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfVExT X0VOQUJMRSkgPT0gVFJVRQ0KPiA+ICsgICAgSU5GICBOZXR3b3JrUGtnL1Rsc0R4ZS9UbHNEeGUu aW5mDQo+ID4gKyAgICBJTkYgIE5ldHdvcmtQa2cvVGxzQXV0aENvbmZpZ0R4ZS9UbHNBdXRoQ29u ZmlnRHhlLmluZg0KPiA+ICsgICFlbmRpZg0KPiA+ICsNCj4gPiArICAhaWYgJChORVRXT1JLX1ZM QU5fRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAgICBJTkYgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv TmV0d29yay9WbGFuQ29uZmlnRHhlL1ZsYW5Db25maWdEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ ID4gKw0KPiA+ICsgICFpZiAkKE5FVFdPUktfSVNDU0lfRU5BQkxFKSA9PSBUUlVFDQo+ID4gKyAg ICBJTkYgIE5ldHdvcmtQa2cvSVNjc2lEeGUvSVNjc2lEeGUuaW5mDQo+ID4gKyAgIWVuZGlmDQo+ ID4gKw0KPiA+ICshZW5kaWYNCj4gPg0KDQpGaW5hbGx5LCByZWFsbHkgdGhhbmtzIGZvciB5b3Vy IGNhcmVmdWxseSBhbmQgcGF0aWVudGx5IHJldmlldyBvbiB0aGlzIHBhdGNoLCBhbmQgdmVyeSBn b29kIHN1Z2dlc3Rpb25zLg0KDQo+IA0KPiBUaGFua3MsDQo+IExhc3psbw0K