From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 066D62194D3B9 for ; Wed, 16 Jan 2019 06:56:08 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jan 2019 06:56:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,486,1539673200"; d="scan'208";a="310915876" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga006.fm.intel.com with ESMTP; 16 Jan 2019 06:56:07 -0800 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 16 Jan 2019 06:56:07 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 16 Jan 2019 06:56:06 -0800 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.44]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.150]) with mapi id 14.03.0415.000; Wed, 16 Jan 2019 22:56:05 +0800 From: "Gao, Liming" To: "Zeng, Star" , Ard Biesheuvel , "edk2-devel@lists.01.org" CC: "Wu, Hao A" , "Kinney, Michael D" , Laszlo Ersek Thread-Topic: [edk2] [PATCH v2 09/17] MdePkg: introduce standalone MM entry point library class Thread-Index: AQHUrA0PkjuYrDZ7PkOW5AAYlFpmsaWw7C6AgAESPzA= Date: Wed, 16 Jan 2019 14:56:04 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B32BA@SHSMSX152.ccr.corp.intel.com> References: <20190114132758.24054-1-ard.biesheuvel@linaro.org> <20190114132758.24054-10-ard.biesheuvel@linaro.org> <1427d7d3-f96c-26d7-9aa2-6b31412db69c@intel.com> In-Reply-To: <1427d7d3-f96c-26d7-9aa2-6b31412db69c@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYTA5NDQ2MWItZGM2NC00YmNhLWJlOWEtNTIyNThjOWUyYjU5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoib3dtRGlBU3ZMY3M1bU43ZEJ3cStMYVFjWjFkZXBvT0VtcURxbm5uczZSMVVrd1E5czRtYlduRHlnSmZMZmtjTSJ9 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 v2 09/17] MdePkg: introduce standalone MM entry point library class 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, 16 Jan 2019 14:56:09 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkOg0KICBJIGhhdmUgbm8gb3RoZXIgY29tbWVudCBmb3IgdGhlIGNoYW5nZXMgaW4gTWRlUGtn LiBZb3UgY2FuIGFkZCBteSBSLUIgZm9yIE1kZVBrZy4gQmVzaWRlcywgSSBoYXZlIHVwZGF0ZWQg b3VyIGludGVybmFsIHBsYXRmb3JtIHRvbyBjb25zdW1lIG5ldyBNbVNlcnZpY2VzVGFibGVMaWIu IA0KDQpUaGFua3MNCkxpbWluZw0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBaZW5nLCBTdGFyDQo+IFNlbnQ6IFdlZG5lc2RheSwgSmFudWFyeSAxNiwgMjAxOSAyOjMyIFBN DQo+IFRvOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47IGVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47 IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IExhc3psbw0KPiBFcnNlayA8bGVyc2VrQHJlZGhh dC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W2VkazJdIFtQQVRDSCB2MiAwOS8xN10gTWRlUGtnOiBpbnRyb2R1Y2Ugc3RhbmRhbG9uZSBNTSBl bnRyeSBwb2ludCBsaWJyYXJ5IGNsYXNzDQo+IA0KPiBPbiAyMDE5LzEvMTQgMjE6MjcsIEFyZCBC aWVzaGV1dmVsIHdyb3RlOg0KPiA+IEFkZCB0aGUgbGlicmFyeSBpbnRlcmZhY2UgZm9yIHRoZSBz dGFuZGFsb25lIE1NIGRyaXZlciBlbnRyeSBwb2ludC4NCj4gPg0KPiA+IENvbnRyaWJ1dGVkLXVu ZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPiBTaWduZWQtb2Zm LWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiAtLS0N Cj4gPiAgIE1kZVBrZy9NZGVQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAzICsNCj4gPiAgIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvU3RhbmRhbG9uZU1tRHJp dmVyRW50cnlQb2ludC5oIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gICAyIGZpbGVz IGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtn L01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiA+IGluZGV4IGE3MzgzYjZkYWFmYi4u YTQ4NTQwODMxMDVkIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKysr IGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gPiBAQCAtMjQ3LDYgKzI0Nyw5IEBAIFtMaWJyYXJ5Q2xh c3Nlc10NCj4gPiAgICAgIyAgICAgICAgICAgICAgICBPbmx5IGF2YWlsYWJsZSB0byBNTV9TVEFO REFMT05FLCBTTU0vRFhFIENvbWJpbmVkIGFuZCBTTU0gbW9kdWxlIHR5cGVzLg0KPiA+ICAgICBN bVNlcnZpY2VzVGFibGVMaWJ8SW5jbHVkZS9MaWJyYXJ5L01tU2VydmljZXNUYWJsZUxpYi5oDQo+ ID4NCj4gPiArICAjIyAgQGxpYnJhcnljbGFzcyAgTW9kdWxlIGVudHJ5IHBvaW50IGxpYnJhcnkg Zm9yIHN0YW5kYWxvbmUgTU0gZHJpdmVycy4NCj4gPiArICBTdGFuZGFsb25lTW1Ecml2ZXJFbnRy eVBvaW50fEluY2x1ZGUvTGlicmFyeS9TdGFuZGFsb25lTW1Ecml2ZXJFbnRyeVBvaW50LmgNCj4g PiArDQo+ID4gICBbTGlicmFyeUNsYXNzZXMuSUEzMiwgTGlicmFyeUNsYXNzZXMuWDY0XQ0KPiA+ ICAgICAjIyAgQGxpYnJhcnljbGFzcyAgQWJzdHJhY3RzIGJvdGggUy9XIFNNSSBnZW5lcmF0aW9u IGFuZCBkZXRlY3Rpb24uDQo+ID4gICAgICMjDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNs dWRlL0xpYnJhcnkvU3RhbmRhbG9uZU1tRHJpdmVyRW50cnlQb2ludC5oIGIvTWRlUGtnL0luY2x1 ZGUvTGlicmFyeS9TdGFuZGFsb25lTW1Ecml2ZXJFbnRyeVBvaW50LmgNCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDA4YTczMzAzZGJiDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvU3RhbmRhbG9uZU1t RHJpdmVyRW50cnlQb2ludC5oDQo+ID4gQEAgLTAsMCArMSwxMzQgQEANCj4gPiArLyoqIEBmaWxl DQo+ID4gKyAgTW9kdWxlIGVudHJ5IHBvaW50IGxpYnJhcnkgZm9yIFN0YW5kYWxvbmUgTU0gRHJp dmVycy4NCj4gPiArDQo+ID4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMDgsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDE2 IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICtDb3B5 cmlnaHQgKGMpIDIwMTgsIExpbmFybywgTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4gKw0KPiA+ICtUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUNCj4gPiArdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ ID4gK2Rpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ID4gK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gPiArDQo+ID4gK1RIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiA+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0K PiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fTU9EVUxFX0VOVFJZX1BPSU5U X0hfXw0KPiA+ICsjZGVmaW5lIF9fTU9EVUxFX0VOVFJZX1BPSU5UX0hfXw0KPiA+ICsNCj4gPiAr Ly8vDQo+ID4gKy8vLyBEZWNsYXJlIHRoZSBQSSBTcGVjaWZpY2F0aW9uIFJldmlzaW9uIHRoYXQg dGhpcyBkcml2ZXIgcmVxdWlyZXMgdG8gZXhlY3V0ZQ0KPiA+ICsvLy8gY29ycmVjdGx5Lg0KPiA+ ICsvLy8NCj4gPiArZXh0ZXJuIENPTlNUIFVJTlQzMiAgICAgICAgICAgICAgICAgICBfZ01tUmV2 aXNpb247DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGUgZW50cnkgcG9pbnQgb2YgUEUvQ09G RiBJbWFnZSBmb3IgYSBTdGFuZGFsb25lIE1NIERyaXZlci4NCj4gPiArDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGEgU3RhbmRhbG9uZSBNTSBEcml2ZXIuDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGNhbGwgUHJvY2Vzc0xpYnJhcnlDb25zdHJ1Y3Rvckxp c3QoKSBhbmQNCj4gPiArICBQcm9jZXNzTW9kdWxlRW50cnlQb2ludExpc3QoKS4NCj4gPiArICBJ ZiB0aGUgcmV0dXJuIHN0YXR1cyBmcm9tIFByb2Nlc3NNb2R1bGVFbnRyeVBvaW50TGlzdCgpDQo+ ID4gKyAgaXMgYW4gZXJyb3Igc3RhdHVzLCB0aGVuIFByb2Nlc3NMaWJyYXJ5RGVzdHJ1Y3Rvckxp c3QoKSBtdXN0IGJlIGNhbGxlZC4NCj4gPiArICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gUHJvY2Vz c01vZHVsZUVudHJ5UG9pbnRMaXN0KCkgaXMgcmV0dXJuZWQuDQo+IA0KPiBub29wDQo+IA0KPiA+ ICsgIElmIF9nRHJpdmVyVW5sb2FkSW1hZ2VDb3VudCBpcyBncmVhdGVyDQo+ID4gKyAgdGhhbiB6 ZXJvLCB0aGVuIGFuIHVubG9hZCBoYW5kbGVyIG11c3QgYmUgcmVnaXN0ZXJlZCBmb3IgdGhpcyBp bWFnZSBhbmQNCj4gPiArICB0aGUgdW5sb2FkIGhhbmRsZXIgbXVzdCBpbnZva2UgUHJvY2Vzc01v ZHVsZVVubG9hZExpc3QoKS4NCj4gDQo+IFRoaXMgYmxvY2sgY291bGQgYmUgcmVtb3ZlZC4NCj4g DQo+ID4gKyAgSWYgX2dNbVJldmlzaW9uIGlzIG5vdCB6ZXJvIGFuZCBTeXN0ZW1UYWJsZS0+SGRy LlJldmlzaW9uIGlzDQo+IA0KPiBTeXN0ZW1UYWJsZSBzaG91bGQgYmUgTW1TeXN0ZW1UYWJsZS4N Cj4gDQo+ID4gKyAgbGVzcyB0aGFuIF9nVWVmaURyaXZlclJldmlzb24sIHRoZW4gcmV0dXJuIEVG SV9JTkNPTVBBVElCTEVfVkVSU0lPTi4NCj4gDQo+IF9nVWVmaURyaXZlclJldmlzb24gc2hvdWxk IGJlIF9nTW1SZXZpc2lvbi4NCj4gDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW1hZ2VIYW5kbGUg IFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIFN0YW5kYWxvbmUgTU0gRHJpdmVyLg0KPiA+ICsgIEBw YXJhbSAgU3lzdGVtVGFibGUgIEEgcG9pbnRlciB0byB0aGUgRUZJIFN5c3RlbSBUYWJsZS4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICBUaGUgU3RhbmRh bG9uZSBNTSBEcml2ZXIgZXhpdGVkIG5vcm1hbGx5Lg0KPiA+ICsgIEByZXR2YWwgIEVGSV9JTkNP TVBBVElCTEVfVkVSU0lPTiAgX2dNbVJldmlzaW9uIGlzIGdyZWF0ZXIgdGhhbg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVGFibGUtPkhkci5SZXZpc2lv bi4NCj4gDQo+IFN5c3RlbVRhYmxlIHNob3VsZCBiZSBNbVN5c3RlbVRhYmxlLg0KPiANCj4gVGhl c2UgZmVlZGJhY2sgbWF5IGJlIGFsc28gYXBwbGllZCB0byB0aGUgaW1wbGVtZW50YXRpb24gaW4g bmV4dCBwYXRjaC4NCj4gDQo+IFdpdGggdGhlbSBoYW5kbGVkLCBBY2tlZC1ieTogU3RhciBaZW5n IDxzdGFyLnplbmdAaW50ZWwuY29tPiB0byB0aGlzIGFuZA0KPiBuZXh0IHBhdGNoZXMuDQo+IA0K PiBUaGFua3MsDQo+IFN0YXINCj4gDQo+IA0KPiA+ICsgIEByZXR2YWwgIE90aGVyICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIHZhbHVlIGZyb20NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFByb2Nlc3NNb2R1bGVFbnRyeVBvaW50TGlzdCgpLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK19Nb2R1bGVFbnRyeVBv aW50ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ ICsgIElOIEVGSV9NTV9TWVNURU1fVEFCTEUgICAgKk1tU3lzdGVtVGFibGUNCj4gPiArICApOw0K PiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEF1dG8gZ2VuZXJhdGVkIGZ1bmN0aW9uIHRo YXQgY2FsbHMgdGhlIGxpYnJhcnkgY29uc3RydWN0b3JzIGZvciBhbGwgb2YgdGhlDQo+ID4gKyAg bW9kdWxlJ3MgZGVwZW5kZW50IGxpYnJhcmllcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlv biBtdXN0IGJlIGNhbGxlZCBieSBfTW9kdWxlRW50cnlQb2ludCgpLg0KPiA+ICsgIFRoaXMgZnVu Y3Rpb24gY2FsbHMgdGhlIHNldCBvZiBsaWJyYXJ5IGNvbnN0cnVjdG9ycyBmb3IgdGhlIHNldCBv ZiBsaWJyYXJ5DQo+ID4gKyAgaW5zdGFuY2VzIHRoYXQgYSBtb2R1bGUgZGVwZW5kcyBvbi4gIFRo aXMgaW5jbHVkZXMgbGlicmFyeSBpbnN0YW5jZXMgdGhhdCBhDQo+ID4gKyAgbW9kdWxlIGRlcGVu ZHMgb24gZGlyZWN0bHkgYW5kIGxpYnJhcnkgaW5zdGFuY2VzIHRoYXQgYSBtb2R1bGUgZGVwZW5k cyBvbg0KPiA+ICsgIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlciBsaWJyYXJpZXMuIFRoaXMgZnVu Y3Rpb24gaXMgYXV0byBnZW5lcmF0ZWQgYnkgYnVpbGQNCj4gPiArICB0b29scyBhbmQgdGhvc2Ug YnVpbGQgdG9vbHMgYXJlIHJlc3BvbnNpYmxlIGZvciBjb2xsZWN0aW5nIHRoZSBzZXQgb2YgbGli cmFyeQ0KPiA+ICsgIGluc3RhbmNlcywgZGV0ZXJtaW5lIHdoaWNoIG9uZXMgaGF2ZSBjb25zdHJ1 Y3RvcnMsIGFuZCBjYWxsaW5nIHRoZSBsaWJyYXJ5DQo+ID4gKyAgY29uc3RydWN0b3JzIGluIHRo ZSBwcm9wZXIgb3JkZXIgYmFzZWQgdXBvbiBlYWNoIG9mIHRoZSBsaWJyYXJ5IGluc3RhbmNlcyBv d24NCj4gPiArICBkZXBlbmRlbmNpZXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW1hZ2VIYW5k bGUgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIFN0YW5kYWxvbmUgTU0gRHJpdmVyLg0KPiA+ICsg IEBwYXJhbSAgU3lzdGVtVGFibGUgIEEgcG9pbnRlciB0byB0aGUgTU0gU3lzdGVtIFRhYmxlLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1Byb2Nlc3NMaWJy YXJ5Q29uc3RydWN0b3JMaXN0ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9NTV9TWVNURU1fVEFCTEUgICAgKk1tU3lzdGVtVGFi bGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEF1dG8gZ2VuZXJh dGVkIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIGxpYnJhcnkgZGVzY3J1Y3RvcnMgZm9yIGFsbCBv ZiB0aGUNCj4gPiArICBtb2R1bGUncyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KPiA+ICsNCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYnkgX01vZHVsZUVudHJ5UG9pbnQoKS4NCj4g PiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBzZXQgb2YgbGlicmFyeSBkZXN0cnVjdG9ycyBm b3IgdGhlIHNldCBvZiBsaWJyYXJ5DQo+ID4gKyAgaW5zdGFuY2VzIHRoYXQgYSBtb2R1bGUgZGVw ZW5kcyBvbi4gVGhpcyBpbmNsdWRlcyBsaWJyYXJ5IGluc3RhbmNlcyB0aGF0IGENCj4gPiArICBt b2R1bGUgZGVwZW5kcyBvbiBkaXJlY3RseSBhbmQgbGlicmFyeSBpbnN0YW5jZXMgdGhhdCBhIG1v ZHVsZSBkZXBlbmRzIG9uDQo+ID4gKyAgaW5kaXJlY3RseSB0aHJvdWdoIG90aGVyIGxpYnJhcmll cy4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IGJ1aWxkIHRvb2xz IGFuZCB0aG9zZSBidWlsZCB0b29scyBhcmUNCj4gPiArICByZXNwb25zaWJsZSBmb3IgY29sbGVj dGluZyB0aGUgc2V0IG9mIGxpYnJhcnkgaW5zdGFuY2VzLCBkZXRlcm1pbmUgd2hpY2ggb25lcw0K PiA+ICsgIGhhdmUgZGVzdHJ1Y3RvcnMsIGFuZCBjYWxsaW5nIHRoZSBsaWJyYXJ5IGRlc3RydWN0 b3JzIGluIHRoZSBwcm9wZXIgb3JkZXINCj4gPiArICBiYXNlZCB1cG9uIGVhY2ggb2YgdGhlIGxp YnJhcnkgaW5zdGFuY2VzIG93biBkZXBlbmRlbmNpZXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg SW1hZ2VIYW5kbGUgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIFN0YW5kYWxvbmUgTU0gRHJpdmVy Lg0KPiA+ICsgIEBwYXJhbSAgU3lzdGVtVGFibGUgIEEgcG9pbnRlciB0byB0aGUgTU0gU3lzdGVt IFRhYmxlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1By b2Nlc3NMaWJyYXJ5RGVzdHJ1Y3Rvckxpc3QgKA0KPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gRUZJX01NX1NZU1RFTV9UQUJMRSAgICAqTW1T eXN0ZW1UYWJsZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQXV0 byBnZW5lcmF0ZWQgZnVuY3Rpb24gdGhhdCBjYWxscyBhIHNldCBvZiBtb2R1bGUgZW50cnkgcG9p bnRzLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IF9Nb2R1 bGVFbnRyeVBvaW50KCkuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgc2V0IG9mIG1v ZHVsZSBlbnRyeSBwb2ludHMuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBhdXRvIGdlbmVyYXRl ZCBieSBidWlsZCB0b29scyBhbmQgdGhvc2UgYnVpbGQgdG9vbHMgYXJlDQo+ID4gKyAgcmVzcG9u c2libGUgZm9yIGNvbGxlY3RpbmcgdGhlIG1vZHVsZSBlbnRyeSBwb2ludHMgYW5kIGNhbGxpbmcg dGhlbSBpbiBhDQo+ID4gKyAgc3BlY2lmaWVkIG9yZGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IEltYWdlSGFuZGxlICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBTdGFuZGFsb25lIE1NIERyaXZl ci4NCj4gPiArICBAcGFyYW0gIFN5c3RlbVRhYmxlICBBIHBvaW50ZXIgdG8gdGhlIEVGSSBTeXN0 ZW0gVGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgVGhlIFN0YW5k YWxvbmUgTU0gRHJpdmVyIGV4ZWN1dGVkIG5vcm1hbGx5Lg0KPiA+ICsgIEByZXR2YWwgICFFRklf U1VDQ0VTUyAgVGhlIFN0YW5kYWxvbmUgTU0gRHJpdmVyIGZhaWxlZCB0byBleGVjdXRlIG5vcm1h bGx5Lg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUHJvY2Vz c01vZHVsZUVudHJ5UG9pbnRMaXN0ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAg IEltYWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9NTV9TWVNURU1fVEFCTEUgICAgKk1tU3lzdGVt VGFibGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4NCg0K