From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: hao.a.wu@intel.com) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Sun, 14 Jul 2019 22:25:31 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Jul 2019 22:25:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,493,1557212400"; d="scan'208";a="168855491" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga007.fm.intel.com with ESMTP; 14 Jul 2019 22:25:30 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 14 Jul 2019 22:25:30 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 14 Jul 2019 22:25:30 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.232]) with mapi id 14.03.0439.000; Mon, 15 Jul 2019 13:25:28 +0800 From: "Wu, Hao A" To: Laszlo Ersek , "siadriravikumaruefi@gmail.com" CC: "devel@edk2.groups.io" , "Cetola, Stephano" Subject: Re: [edk2-devel] ExtScsiPassThru support for Logical SCSI devices Thread-Topic: [edk2-devel] ExtScsiPassThru support for Logical SCSI devices Thread-Index: AQHVH7hO6400/D/lAkKDc5PUEixKLKbHN7gAgAQjmRA= Date: Mon, 15 Jul 2019 05:25:28 +0000 Message-ID: References: <15109.1560169952219160072@groups.io> <20b41687-a450-b81e-2393-96549100b13d@redhat.com> In-Reply-To: <20b41687-a450-b81e-2393-96549100b13d@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: hao.a.wu@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0 bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDogU2F0dXJkYXksIEp1bHkgMTMsIDIwMTkgNjox MSBBTQ0KPiBUbzogc2lhZHJpcmF2aWt1bWFydWVmaUBnbWFpbC5jb20NCj4gQ2M6IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBXdSwgSGFvIEE7IENldG9sYSwgU3RlcGhhbm8NCj4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBFeHRTY3NpUGFzc1RocnUgc3VwcG9ydCBmb3IgTG9naWNhbCBTQ1NJIGRl dmljZXMNCj4gDQo+IE9uIDA2LzEwLzE5IDE0OjMyLCBSYXZpIEt1bWFyIFNpYWRyaSB3cm90ZToN Cj4gPiBIaSBhbGwsDQo+ID4NCj4gPiBJIGhhdmUgY291cGxlIG9mIHF1ZXJpZXMgcmVnYXJkaW5n IHRoZQ0KPiA+IEVGSV9FWFRfU0NTSV9QQVNTX1RIUlVfQVRUUklCVVRFU19MT0dJQ0FMIGF0dHJp YnV0ZSBzdXBwb3J0IGluDQo+ID4gRUZJX0VYVF9TQ1NJX1BBU1NfVEhSVV9QUk9UT0NPTC4NCj4g Pg0KPiA+IDEuDQo+ID4gVGhlIEF0dHJpYnV0ZXMgZmllbGQgb2YgdGhlIEVGSV9FWFRfU0NTSV9Q QVNTX1RIUlVfUFJPVE9DT0wgaW50ZXJmYWNlDQo+ID4gdGVsbHMgaWYgdGhlIGludGVyZmFjZSBp cyBmb3IgcGh5c2ljYWwgU0NTSSBkZXZpY2VzIG9yIGxvZ2ljYWwgU0NTSQ0KPiA+IGRldmljZXMu IERyaXZlcnMgZm9yIG5vbi1SQUlEIFNDU0kgY29udHJvbGxlcnMgd2lsbCBzZXQgYm90aCB0aGUN Cj4gPiBFRklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfUEhZU0lDQUwsIGFuZCB0aGUN Cj4gPiBFRklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfTE9HSUNBTCBiaXRzLg0KPiA+ DQo+ID4gSWYgdGhlIERyaXZlcnMgaXMgZm9yIG5vbi1SQUlEIFNDU0kgY29udHJvbGxlcnMgd2h5 IHRvIHNldCB0aGUNCj4gPiBFRklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfTE9HSUNB TCBiaXQuIFdpbGwgdGhlcmUgYmUgYW55DQo+IGNhc2UNCj4gPiB0aGF0IG5vbi1SQUlEIFNDU0kg Y29udHJvbGxlcnMgaGF2ZSBMb2dpY2FsIGRldmljZXMgY29ubmVjdGVkIHRvIGl0ID8/DQo+ID4N Cj4gPiAyLg0KPiA+IERyaXZlcnMgZm9yIFJBSUQgY29udHJvbGxlcnMgdGhhdCBhbGxvdyBhY2Nl c3MgdG8gdGhlIHBoeXNpY2FsIGRldmljZXMNCj4gPiBhbmQgbG9naWNhbCBkZXZpY2VzIHdpbGwg cHJvZHVjZSB0d28gRUZJX0VYVF9TQ1NJX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+IGludGVyZmFj ZXM6IE9uZSB3aXRoIHRoZSBqdXN0IHRoZQ0KPiA+IEVGSV9FWFRfU0NTSV9QQVNTX1RIUlVfQVRU UklCVVRFU19QSFlTSUNBTCBiaXQgc2V0IGFuZCBhbm90aGVyDQo+IHdpdGgNCj4gPiBqdXN0IHRo ZSBFRklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfTE9HSUNBTCBiaXQgc2V0LiBPbmUN Cj4gPiBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBwaHlzaWNhbCBkZXZpY2Vz IGF0dGFjaGVkIHRvIHRoZQ0KPiA+IFJBSUQgY29udHJvbGxlciwgYW5kIHRoZSBvdGhlciBjYW4g YmUgdXNlZCB0byBhY2Nlc3MgdGhlIGxvZ2ljYWwNCj4gPiBkZXZpY2VzIGF0dGFjaGVkIHRvIHRo ZSBSQUlEIGNvbnRyb2xsZXIgZm9yIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24uDQo+ID4NCj4g PiBBbnkgYmFja2dyb3VuZCB3aHkgRUZJX0VYVF9TQ1NJX1BBU1NfVEhSVV9QUk9UT0NPTCBuZWVk ZWQgMg0KPiBpbnN0YW5jZXMNCj4gPiA/IHdoeSBjYW4ndCB3ZSBpbnN0YWxsIGF0dHJpYnV0ZXMN Cj4gPiBFRklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfTE9HSUNBTCBhbmQNCj4gPiBF RklfRVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfUEhZU0lDQUwgb24gc2FtZSBJbnN0YW5j ZSA/Pw0KPiBIb3cNCj4gPiBVc2VyIGxvY2F0ZXMgdGhlIEluc3RhbmNlIHdpdGgNCj4gPiBFRklf RVhUX1NDU0lfUEFTU19USFJVX0FUVFJJQlVURVNfTE9HSUNBTCBiaXQgc2V0IGFuZCBJbnN0YW5j ZSB3aXRoDQo+ID4gRUZJX0VYVF9TQ1NJX1BBU1NfVEhSVV9BVFRSSUJVVEVTX1BIWVNJQ0FMIGJp dCBzZXQuID8/DQo+IA0KPiBQbGVhc2UgY29uc3VsdCB0aGUgVUVGSSBEcml2ZXIgV3JpdGVyJ3Mg R3VpZGUgb24gdGhlc2UgcXVlc3Rpb25zLiAoV2hhdA0KPiBJIGhhdmUgb24gbXkgZGlzayBub3cg aXMgVmVyc2lvbiAxLjAxLCBmb3IgVUVGSSAyLjMuMSwgcmVsZWFzZWQNCj4gMDMvMDgvMjAxMi4p DQoNClRoYW5rcyBMYXN6bG8sDQoNClRoZSBpbmZvcm1hdGlvbiBtZW50aW9uZWQgYWJvdmUgaXMg cmVhbGx5IGhlbHBmdWwuDQoNCkFzIGEgc3VwcGxlbWVudGFyeSwgdGhlIFVFRkkgRHJpdmVyIFdy aXRlcidzIEd1aWRlIGlzIGFsc28gYXZhaWxhYmxlIG9ubGluZSBhdDoNCmh0dHBzOi8vZWRrMi1k b2NzLmdpdGJvb2tzLmlvL2Vkay1paS11ZWZpLWRyaXZlci13cml0ZXItcy1ndWlkZS8NCg0KQmVz dCBSZWdhcmRzLA0KSGFvIFd1DQoNCj4gDQo+IEV4Y2VycHRzOg0KPiANCj4gPiA2LjMgSHlicmlk IGRyaXZlcnMNCj4gPg0KPiA+IFsuLi5dDQo+ID4NCj4gPiBBIGRyaXZlciBmb3IgYSBtdWx0aS1j aGFubmVsIFJBSUQgU0NTSSBob3N0IGNvbnRyb2xsZXIgaXMgYSBoeWJyaWQNCj4gPiBkcml2ZXIu IEl0IHByb2R1Y2VzIHRoZSBFeHRlbmRlZCBTQ1NJIFBhc3MgVGhydSBQcm90b2NvbCAod2l0aCB0 aGUNCj4gPiBsb2dpY2FsIGJpdCBvbikgb24gdGhlIGNvbnRyb2xsZXIgaGFuZGxlIGFuZCBjcmVh dGVzIGNoaWxkIGhhbmRsZXMNCj4gPiB3aXRoIEV4dGVuZGVkIFNDU0kgUGFzcyBUaHJ1IFByb3Rv Y29sIGZvciBlYWNoIHBoeXNpY2FsIGNoYW5uZWwgKHdpdGgNCj4gPiB0aGUgbG9naWNhbCBiaXQg b2ZmKS4NCj4gDQo+ID4gMjAuMS4zIFNDU0kgQWRhcHRlcnMgd2l0aCBSQUlEDQo+ID4NCj4gPiBB IFNDU0kgaG9zdCBjb250cm9sbGVyIGRyaXZlciBtYXkgYWxzbyBzdXBwb3J0IFNDU0kgYWRhcHRl cnMgd2l0aCBSQUlEDQo+ID4gY2FwYWJpbGl0eS4gVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3Mg YW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiB3aXRoDQo+ID4gdHdvIHBoeXNpY2FsIFNDU0kgY2hh bm5lbHMgYW5kIG9uZSBsb2dpY2FsIGNoYW5uZWwuIFRoZSB0d28gcGh5c2ljYWwNCj4gPiBjaGFu bmVscyBhcmUgaW1wbGVtZW50ZWQgb24gdGhlIFNDU0kgYWRhcHRlci4gVGhlIFJBSUQgY29tcG9u ZW50IHRoZW4NCj4gPiBjb25maWd1cmVzIHRoZXNlIHR3byBjaGFubmVscyB0byBwcm9kdWNlIGEg bG9naWNhbCBTQ1NJIGNoYW5uZWwuIFRoZQ0KPiA+IHR3byBwaHlzaWNhbCBjaGFubmVscyBlYWNo IGhhdmUgRXh0ZW5kZWQgU0NTSSBQYXNzIFRocnUgaW5zdGFsbGVkLCBidXQNCj4gPiB0aGVzZSBh cmUgbm90IGJlIHVzZWQgZXhjZXB0IGZvciBkaWFnbm9zdGljIHVzZS4gRm9yIHRoZSBsb2dpY2Fs DQo+ID4gY2hhbm5lbCwgdGhlIFNDU0kgaG9zdCBjb250cm9sbGVyIGRyaXZlciBwcm9kdWNlcyBh bm90aGVyIEV4dGVuZGVkDQo+ID4gU0NTSSBQYXNzIFRocnUgUHJvdG9jb2wgKHdpdGggcGh5c2lj YWwgYml0IHR1cm5lZCBvZmYpIGluc3RhbmNlIGJhc2VkDQo+ID4gb24gdGhlIFJBSUQgY29uZmln dXJhdGlvbi4gUmVxdWVzdHMgc2VudCB0byB0aGUgRXh0ZW5kZWQgU0NTSSBQYXNzDQo+ID4gVGhy dSBwcm90b2NvbCBmb3IgdGhlIGxvZ2ljYWwgY2hhbm5lbCBhcmUgcHJvY2Vzc2VkIGJ5IHRoZSBT Q1NJIGhvc3QNCj4gPiBjb250cm9sbGVyIGRyaXZlcnMgYW5kIGNvbnZlcnRlZCBpbnRvIHJlcXVl c3RzIG9uIHRoZSBwaHlzaWNhbCBTQ1NJDQo+ID4gY2hhbm5lbHMuIFRoZSBwbGF0Zm9ybSBmaXJt d2FyZSBtdXN0IG9ubHkgZW51bWVyYXRlIGFuZCBib290IGZyb20gU0NTSQ0KPiA+IHRhcmdldHMg cHJlc2VudCBvbiB0aGUgbG9naWNhbCBTQ1NJIGNoYW5uZWwuDQo+ID4NCj4gPiBUaGUgU0NTSSBh ZGFwdGVyIGhhcmR3YXJlIG1heSBub3QgYmUgYWJsZSB0byBleHBvc2UgdGhlIHBoeXNpY2FsIFND U0kNCj4gPiBjaGFubmVsKHMpIHRvIHVwcGVyLWxldmVsIHNvZnR3YXJlIHdoZW4gaW1wbGVtZW50 aW5nIFJBSUQuIElmIHRoZQ0KPiA+IHBoeXNpY2FsIFNDU0kgY2hhbm5lbCBjYW5ub3QgYmUgZXhw b3NlZCB0byB1cHBlciBzb2Z0d2FyZSwgdGhlbiB0aGUNCj4gPiBTQ1NJIGhvc3QgY29udHJvbGxl ciBkcml2ZXIgaXMgb25seSByZXF1aXJlZCB0byBwcm9kdWNlIGEgc2luZ2xlDQo+ID4gbG9naWNh bCBjaGFubmVsIGZvciB0aGUgUkFJRC4NCj4gPg0KPiA+IEFsdGhvdWdoIHRoZSBiYXNpYyB0aGVv cnkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBvbiBhIHBoeXNpY2FsDQo+ID4gY2hhbm5lbCwgaXQg aXMgZGlmZmVyZW50IGZyb20gYSBtYW51ZmFjdHVyaW5nIGFuZCBkaWFnbm9zdGljDQo+ID4gcGVy c3BlY3RpdmUuIElmIHRoZSBwaHlzaWNhbCBTQ1NJIGNoYW5uZWxzIGFyZSBleHBvc2VkLCBhbnkg U0NTSQ0KPiA+IGNvbW1hbmQsIGluY2x1ZGluZyBkaWFnbm9zdGljIG9uZXMsIGNhbiBiZSBzZW50 IHRvIGFuIGluZGl2aWR1YWwNCj4gPiBjaGFubmVsLCB3aGljaCBpcyB2ZXJ5IGhlbHBmdWwgb24g bWFudWZhY3R1cmluZyBsaW5lcy4gRnVydGhlcm1vcmUsDQo+ID4gdGhlIGRpYWdub3N0aWMgY29t bWFuZCBjYW4gYmUgc2VudCBzaW11bHRhbmVvdXNseSB0byBhbGwgcGh5c2ljYWwNCj4gPiBjaGFu bmVscyB1c2luZyB0aGUgbm9uLWJsb2NraW5nIG1vZGUgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgRXh0 ZW5kZWQNCj4gPiBTQ1NJIFBhc3MgVGhydSBQcm90b2NvbC4gVGhlIGRpYWdub3N0aWMgcHJvY2Vz cyBtYXkgY29uc2lkZXJhYmx5DQo+ID4gYmVuZWZpdCBmcm9tIHRoZSBwZXJmb3JtYW5jZSBnYWlu LiBJbiBzdW1tYXJ5LCBpdCBpcyBzdWdnZXN0ZWQgdG8NCj4gPiBleHBvc2UgcGh5c2ljYWwgU0NT SSBjaGFubmVsIHdoZW5ldmVyIHBvc3NpYmxlLg0KPiANCj4gPiAyMC4xLjQuMiBTdGFydCgpDQo+ ID4NCj4gPiBbLi4uXQ0KPiA+DQo+ID4gVGhlIFN0YXJ0KCkgZnVuY3Rpb24gdGVsbHMgdGhlIFND U0kgaG9zdCBjb250cm9sbGVyIGRyaXZlciB0byBzdGFydA0KPiA+IG1hbmFnaW5nIHRoZSBTQ1NJ IGhvc3QgY29udHJvbGxlci4gSW4gdGhpcyBmdW5jdGlvbiwgYSBzaW5nbGUgY2hhbm5lbA0KPiA+ IFNDU0kgaG9zdCBjb250cm9sbGVyIGRyaXZlciB1c2VzIGNoaXAtc3BlY2lmaWMga25vd2xlZGdl IHRvIHBlcmZvcm0NCj4gPiB0aGUgZm9sbG93aW5nIHRhc2tzOg0KPiA+ICogSW5pdGlhbGl6ZSB0 aGUgU0NTSSBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKiBFbmFibGUgdGhlIFBDSSBkZXZpY2UuDQo+ ID4gKiBBbGxvY2F0ZSByZXNvdXJjZXMuDQo+ID4gKiBDb25zdHJ1Y3QgZGF0YSBzdHJ1Y3R1cmVz IGZvciB0aGUgZHJpdmVyIHRvIHVzZS4NCj4gPiAqIEluc3RhbGwgdGhlIEV4dGVuZGVkIFNDU0kg UGFzcyBUaHJ1IFByb3RvY29sIGluc3RhbmNlIG9uIHRoZSBzYW1lDQo+ID4gICBoYW5kbGUgdGhh dCBoYXMgdGhlIFBDSSBJL08gUHJvdG9jb2wuDQo+ID4NCj4gPiBJZiB0aGUgU0NTSSBhZGFwdGVy IGlzIGEgbXVsdGktY2hhbm5lbCBhZGFwdGVyLCB0aGVuIHRoZSBkcml2ZXIgc2hvdWxkDQo+ID4g YWxzbyBkbyB0aGUgZm9sbG93aW5nOg0KPiA+DQo+ID4gRW51bWVyYXRlIHRoZSBTQ1NJIGNoYW5u ZWxzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGUgU0NTSSBob3N0DQo+ID4gY29udHJvbGxlci4N Cj4gPiAqIENyZWF0ZSBjaGlsZCBoYW5kbGVzIGZvciBlYWNoIHBoeXNpY2FsIFNDU0kgY2hhbm5l bC4NCj4gPiAqIEFwcGVuZCB0aGUgZGV2aWNlIHBhdGggZm9yIGVhY2ggY2hhbm5lbCBoYW5kbGUu DQo+ID4gKiBJbnN0YWxsIHRoZSBEZXZpY2UgUGF0aCBQcm90b2NvbCBhbmQgRXh0ZW5kZWQgU0NT SSBQYXNzIFRocnUNCj4gPiAgIFByb3RvY29sIG9uIGV2ZXJ5IG5ld2x5IGNyZWF0ZWQgY2hhbm5l bCBoYW5kbGUuDQo+IA0KPiAtLS0tLS0tLS0NCj4gDQo+IFNvIHRoZSB0cmljayBpcyB0aGF0IHRo ZSBwYXJlbnQgY29udHJvbGxlciBpcyB0aGUgbG9naWNhbCBvbmUgKHRoZQ0KPiBjb21iaW5lZCBk ZXZpY2UgLS0gdGhlIGFycmF5KSwgYW5kIHRoZSBjaGlsZCBjb250cm9sbGVycyBhcmUgdGhlDQo+ IHBoeXNpY2FsIG9uZXMgKHRoZSBpbmRpdmlkdWFsICJpbmV4cGVuc2l2ZSIgZGlza3MpLiBUaGUg cGxhdGZvcm0NCj4gZmlybXdhcmUgd2lsbCBpZ25vcmUgdGhlIGluZGl2aWR1YWwgcGh5c2ljYWwg ZGlza3MgZm9yIGFsbCBpbnRlbnRzIGFuZA0KPiBwdXJwb3NlcywgYnV0IG9uICJtYW51ZmFjdHVy aW5nIGxpbmVzIiwgZXhwb3NpbmcgdGhlIHBoeXNpY2FsIGRpc2tzIGlzDQo+IGdvb2QgZm9yIGRp YWdub3NpbmcgcHJvYmxlbXMuDQo+IA0KPiBSZWdhcmRpbmcgdGhlIGRldmljZSBwYXRocyBvZiB0 aGUgY2hpbGQgY29udHJvbGxlcnM6IHlvdSBjYW4gYnVpbGQgdGhlDQo+IGRldmljZSBwYXRoIGZv ciBlYWNoIGNoaWxkIGNvbnRyb2xsZXIgZm9yIGV4YW1wbGUgYnkgYXBwZW5kaW5nIGENCj4gVmVu TXNnKCkgZGV2aWNlIHBhdGggbm9kZSB0byB0aGUgcGFyZW50IGNvbnRyb2xsZXIncyBkZXZpY2Ug cGF0aC4gVGhlDQo+IG9wYXF1ZSBkYXRhIGJ5dGVzIGluIHRoZSBWZW5Nc2coKSBub2RlIHdvdWxk IGNhcnJ5IGhhcmR3YXJlIHNwZWNpZmljDQo+IGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIGZvciB0 aGUgaW5kaXZpZHVhbCBwaHlzaWNhbCBkaXNrLg0KPiANCj4gSWYgeW91IGRvbid0IHdhbnQgdG8g ZXhwb3NlIHRoZSBwaHlzaWNhbCAoImluZXhwZW5zaXZlIikgZGlza3MgZm9yIGFueQ0KPiBwdXJw b3NlLCB0aGVuIGRvbid0IHdyaXRlIGEgaHlicmlkIGRyaXZlciAtLSB3cml0ZSBhIGRldmljZSBk cml2ZXIuDQo+IEluc3RhbGwgRUZJX0FUQV9QQVNTX1RIUlVfUFJPVE9DT0wgb25seSBvbiB0aGUg InBhcmVudCIgaGFuZGxlICh0aGUNCj4gb25lDQo+IHdpdGggUGNpSW8pLCBwcm9kdWNlIG5vIGNo aWxkIGhhbmRsZXMsIGFuZCBzZXQgb25seSB0aGUgbG9naWNhbA0KPiBhdHRyaWJ1dGUgYml0Lg0K PiANCj4gVGhhbmtzDQo+IExhc3psbw0K