From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 105B05906 for ; Mon, 27 Oct 2014 18:24:55 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 27 Oct 2014 10:32:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.04,797,1406617200"; d="scan'208,217";a="621511628" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by fmsmga002.fm.intel.com with ESMTP; 27 Oct 2014 10:32:19 -0700 Received: from kmsmsx151.gar.corp.intel.com (172.21.73.86) by PGSMSX101.gar.corp.intel.com (10.221.44.78) with Microsoft SMTP Server (TLS) id 14.3.195.1; Tue, 28 Oct 2014 01:32:18 +0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by KMSMSX151.gar.corp.intel.com (172.21.73.86) with Microsoft SMTP Server (TLS) id 14.3.195.1; Tue, 28 Oct 2014 01:32:17 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.174]) by shsmsx102.ccr.corp.intel.com ([169.254.2.156]) with mapi id 14.03.0195.001; Tue, 28 Oct 2014 01:32:16 +0800 From: "Zhou, Danny" To: Shivapriya Hiremath Thread-Topic: [dpdk-dev] Why do we need iommu=pt? Thread-Index: AQHP7LEp5dzdhwxxfkmKddhNzQeSq5w5DgAAgACUvgCAAJzpAIAAp4NQgABO4oCAABWfAIAA73JwgAd8D4CAAIa5IA== Date: Mon, 27 Oct 2014 17:32:16 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Why do we need iommu=pt? X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Oct 2014 17:24:59 -0000 U2hpdmFwcml5Ye+8jA0KDQpJdCBpcyBzdGlsbCBvbmdvaW5nIGFzIHdlIG5lZWQgdG8gcnVuIGl0 IG9uIGRpZmZlcmVudCBYZW9uIHNlcnZlcg0KcGxhdGZvcm0gbGlrZSBTYW5keUJyaWRnZSBhbmQg SXZ5QnJpZGdlLCB3aWxsIHBvc3Qgc3VtbWFyeSByZXN1bHQNCmhlcmUgb25jZSBpdCBpcyByZWFk eS4NCg0KLURhbm55DQoNCkZyb206IFNoaXZhcHJpeWEgSGlyZW1hdGggW21haWx0bzpzaGl2cHJp LmJAZ21haWwuY29tXQ0KU2VudDogVHVlc2RheSwgT2N0b2JlciAyOCwgMjAxNCAxOjI4IEFNDQpU bzogWmhvdSwgRGFubnkNCkNjOiBkZXZAZHBkay5vcmcNClN1YmplY3Q6IFJlOiBbZHBkay1kZXZd IFdoeSBkbyB3ZSBuZWVkIGlvbW11PXB0Pw0KDQpIaSBEYW5ueSwNCg0KWW91ciByZXBseSB3YXMg dmVyeSBoZWxwZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdC4gQ2FuIHlvdSBwbGVhc2Ug dGVsbCB1cyBpZiB5b3Ugc2F3IGFueSBwZXJmb3JtYW5jZSBpbXBhY3QgdG8gRFBESyB3aGVuIGlv bW11PW9uID8NCg0KLVNoaXZhcHJpeWENCg0KT24gV2VkLCBPY3QgMjIsIDIwMTQgYXQgODoyMSBB TSwgWmhvdSwgRGFubnkgPGRhbm55Lnpob3VAaW50ZWwuY29tPG1haWx0bzpkYW5ueS56aG91QGlu dGVsLmNvbT4+IHdyb3RlOg0KRWNobyBDdW5taW5nIGFuZCB3ZSBkaWQgbm90IHNlZSBvYnZpb3Vz IHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIGlvbW11ID0gcHQgaXMgdXNlZCBkZXNwaXRlIG9mDQpp Z2JfdWlvIG9yIFZGSU8gaXMgdXNlZC4NCg0KQWxleCwNClRoZSBtYXAgYW5kIHVtYXAgb3BlcmF0 aW9uIGZvciBlYWNoIGUvaW5ncmVzcyBwYWNrZXQgaXMgZG9uZSBieSBodyByYXRoZXIgdGhhbiBz dywgc28NCnBlcmZvcm1hbmNlIGltcGFjdCB0byBEUERLIHNob3VsZCBiZSBtaW5pbXVtIGluIG15 IG1pbmQuIElmIGl0IGFjdHVhbGx5IGltcGFjc3QgcGVyZiwgc2F5IG9uIDEwMEcgTklDLA0KSSBh bSBzdXJlIGl0IHdpbGwgYmUgcmVzb2x2ZWQgaW4gbmV4dCBnZW5lcmF0aW9uIEludGVsIHNpbGlj b24uIFdlIHdpbGwgYmUgcGVyZm9ybWluZyBzb21lIHBlcmZvcm1hbmNlDQp0ZXN0cyB3aXRoIGlv bW11ID0gb24gdG8gc2VlIGFueSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4gSSBjYW5ub3Qgc2hh cmUgdGhlIGRldGFpbGVkIHBlcmZvcm1hbmNlDQpyZXN1bHQgaGVyZSBvbiB0aGUgY29tbXVuaXR5 LCBidXQgSSBjb3VsZCB0ZWxsIGlmIGl0IHJlYWxseSBicmluZyBuZWdhdGl2ZSBwZXJmb3JtYW5j ZSBpbXBhY3QgdG8gRFBESy4NClBsZWFzZSBzdGF5IHR1bmVkLg0KDQpBbGV4LA0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExpYW5nLCBDdW5taW5nDQo+IFNlbnQ6IFdl ZG5lc2RheSwgT2N0b2JlciAyMiwgMjAxNCA0OjUzIFBNDQo+IFRvOiBhbGV4OyBaaG91LCBEYW5u eQ0KPiBDYzogZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5vcmc+DQo+IFN1YmplY3Q6IFJF OiBbZHBkay1kZXZdIFdoeSBkbyB3ZSBuZWVkIGlvbW11PXB0Pw0KPg0KPiBJIHRoaW5rcyBpdCdz IGEgZ29vZCBwb2ludCB1c2luZyBkbWFfYWRkciByYXRoZXIgdGhhbiBwaHlzX2FkZHIuDQo+IFdp dGhvdXQgaW9tbXUsIHRoZSB2YWx1ZSBvZiB0aGVtIGFyZSB0aGUgc2FtZS4NCj4gV2l0aCBpb21t dSwgdGhlIGRtYV9hZGRyIHZhbHVlIGVxdWFsIHRvIHRoZSBpb3ZhLg0KPiBJdCdzIG5vdCBhbGwg Zm9yIERQREsgd29ya2luZyB3aXRoIGlvbW11IGJ1dCBub3QgcGFzcyB0aHJvdWdoLg0KPg0KPiBX ZSBrbm93IGVhY2ggaW92YSBiZWxvbmdzIHRvIG9uZSBpb21tdSBkb21haW4uDQo+IEFuZCBlYWNo IGRldmljZSBjYW4gYXR0YWNoIHRvIG9uZSBkb21haW4uDQo+IEl0IG1lYW5zIHRoZSBpb3ZhIHdp bGwgaGF2ZSBjb3VwbGluZyByZWxhdGlvbnNoaXAgd2l0aCBkb21haW4vZGV2aWNlLg0KPg0KPiBM b29raW5nIGJhY2sgdG8gRFBESyBkZXNjcmlwdG9yIHJpbmcsIGl0J3MgYWxsIHJpZ2h0LCBhbHJl YWR5IGNvdXBsaW5nIHdpdGggZGV2aWNlLg0KPiBCdXQgaWYgZm9yIG1idWYgbWVtcG9vbCwgaW4g bW9zdCBjYXNlcywgaXQncyBzaGFyZWQgYnkgbXVsdGlwbGUgcG9ydHMuDQo+IFNvIGlmIGtlZXBp bmcgdGhlIHdheSwgYWxsIHRob3NlIHBvcnRzL2RldmljZSBuZWVkIHRvIHB1dCBpbnRvIHRoZSBz YW1lIGlvbW11IGRvbWFpbi4NCj4gQW5kIHRoZSBtZW1wb29sIGhhcyBhdHRhY2ggdG8gc3BlY2lm aWMgZG9tYWluLCBidXQgbm90IGp1c3QgdGhlIGRldmljZS4NCj4gT24gdGhpcyB0aW1lLCBpb21t dSBkb21haW4gbm8gbG9uZ2VyIGJlIHRyYW5zcGFyZW50IGluIERQREsuDQo+IFZmaW8gcHJvdmlk ZSB0aGUgdmVyYnMgdG8gY29udHJvbCBkb21haW4sIHdlIHN0aWxsIG5lZWQgbGlicmFyeSB0byBt YW5hZ2VyIHN1Y2ggZG9tYWluIHdpdGggbWVtcG9vbC4NCj4NCj4gQWxsIHRoYXQgb3ZlcmhlYWQg anVzdCBtYWtlIERQREsgd29ya3Mgd2l0aCBpb21tdSBpbiBob3N0LCBidXQgcmVtZW1iZXIgcHQg YWx3YXlzIHdvcmtzLg0KPiBUaGUgaXNvbGF0aW9uIG9mIGRldmljZXMgbWFpbmx5IGZvciBzZWN1 cml0eSBjb25jZXJuLg0KPiBJZiBpdCdzIG5vdCBuZWNlc3NhcnksIHB0IGRlZmluaXRlbHkgaXMg YSBnb29kIGNob2ljZSB3aXRob3V0IHBlcmZvcm1hbmNlIGltcGFjdC4NCj4NCj4gRm9yIHRob3Nl IHNlbGYtaW1wbGVtZW50ZWQgUE1EIHVzaW5nIHRoZSBETUEga2VybmVsIGludGVyZmFjZSB0byBz ZXQgdXAgaXRzIG1hcHBpbmdzIGFwcHJvcHJpYXRlbHkuDQo+IEl0IGRvbid0IHJlcXVpcmUgImlv bW11PXB0Ii4gVGhlIGRlZmF1bHQgb3B0aW9uICJpb21tdT1vbiIgYWxzbyB3b3Jrcy4NCj4NCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1i b3VuY2VzQGRwZGsub3JnPG1haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZz5dIE9uIEJlaGFsZiBP ZiBhbGV4DQo+ID4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDIyLCAyMDE0IDM6MzYgUE0NCj4g PiBUbzogWmhvdSwgRGFubnkNCj4gPiBDYzogZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5v cmc+DQo+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gV2h5IGRvIHdlIG5lZWQgaW9tbXU9cHQ/ DQo+ID4NCj4gPiBTaGl2YS4NCj4gPiBUaGUgY29zdCBvZiBkaXNhYmxpbmcgaW9tbXU9cHQgd2hl biBpbnRlbF9pb21tdT1vbiBpcyBkaXJlLiBEUERLIHdvbid0IHdvcmsNCj4gPiBhcyB0aGUgUlgv VFggZGVzY3JpcHRvcnMgd2lsbCBiZSB1c2VsZXNzLg0KPiA+IEFueSBkYW0gYWNjZXNzIGJ5IHRo ZSBkZXZpY2Ugd2lsbCBiZSBkcm9wcGVkIGFzIG5vIGRhbS1tYXBwaW5nIHdpbGwgZXhpc3RzLg0K PiA+DQo+ID4gRGFubnkuDQo+ID4gVGhlIElPTU1VIGh1cnRzIHBlcmZvcm1hbmNlIGluIGtlcm5l bCBkcml2ZXJzIHdoaWNoIHBlcmZvcm0gYSBtYXAgYW5kIHVtYXANCj4gPiBvcGVyYXRpb24gZm9y IGVhY2ggZS9pbmdyZXNzIHBhY2tldC4NCj4gPiBUaGUgY29zdHMgb2YgdW5tYXBwaW5nIHdoZW4g dW5kZXIgc3RyaWN0IHByb3RlY3Rpb24gbGltaXQgYSArMTBHYiB0byAzR2INCj4gPiB3aXRoIGNw dSBtYXhlZCBvdXQgYXQgMTAwJS4gRFBESyBhcHBzIHNob3VsZG4ndCBmZWVsIGFueSBkaWZmZXJl bmNlIElGRiB0aGUNCj4gPiByeCBkZXNjcmlwdG9ycyBjb250YWluIGlvdmEgYW5kIG5vdCByZWFs IHBoeXNpY2FsIGFkZHJlc3NlcyB3aGljaCBhcmUgdXNlZA0KPiA+IGN1cnJlbnRseS4NCj4gPg0K PiA+DQo+ID4gT24gVHVlLCBPY3QgMjEsIDIwMTQgYXQgMTA6MTAgUE0sIFpob3UsIERhbm55IDxk YW5ueS56aG91QGludGVsLmNvbTxtYWlsdG86ZGFubnkuemhvdUBpbnRlbC5jb20+PiB3cm90ZToN Cj4gPg0KPiA+ID4gSU1ITywgaWYgbWVtb3J5IHByb3RlY3Rpb24gd2l0aCBJT01NVSBpcyBuZWVk ZWQgb3Igbm90IHJlYWxseSBkZXBlbmRzIG9uDQo+ID4gPiBob3cgeW91IHVzZQ0KPiA+ID4gYW5k IGRlcGxveSB5b3VyIERQREsgYmFzZWQgYXBwbGljYXRpb25zLiBGb3IgVGVsY28gbmV0d29yayBt aWRkbGUgYm94ZXMsDQo+ID4gPiB3aGljaCBhZG9wdHMNCj4gPiA+IGEgImNsb3NlIG1vZGVsIiBz b2x1dGlvbiB0byBhY2hpZXZlIGV4dHJlbWVseSBoaWdoIHBlcmZvcm1hbmNlLCB0aGUgZW50aXJl DQo+ID4gPiBzeXN0ZW0gaW5jbHVkaW5nDQo+ID4gPiBIVywgc29mdHdhcmUgaW4ga2VybmVsIGFu ZCB1c2Vyc3BhY2UgYXJlIGNvbnRyb2xsZWQgYnkgVGVsY28gdmVuZG9ycyBhbmQNCj4gPiA+IGFz c3VtZWQgdHJ1c3RhYmxlLCBzbw0KPiA+ID4gbWVtb3J5IHByb3RlY3Rpb24gaXMgbm90IHNvIGlt cG9ydGFudC4gV2hpbGUgZm9yIERhdGFjZW50ZXJzLCB3aGljaA0KPiA+ID4gZ2VuZXJhbGx5IGFk b3B0cyBhICJvcGVuIG1vZGVsIg0KPiA+ID4gc29sdXRpb24gYWxsb3dzIHJ1bm5pbmcgdXNlciBz cGFjZSBhcHBsaWNhdGlvbnMoZS5nLiB0ZW5hbnQgYXBwbGljYXRpb25zDQo+ID4gPiBhbmQgVk1z KSB3aGljaCBjb3VsZA0KPiA+ID4gZGlyZWN0IGFjY2VzcyBOSUMgYW5kIERNQSBlbmdpbmUgaW5z aWRlIHRoZSBOSUMgdXNpbmcgbW9kaWZpZWQgRFBESyBQTUQNCj4gPiA+IGFyZSBub3QgdHJ1c3Rh YmxlDQo+ID4gPiBhcyB0aGV5IGNhbiBwb3RlbnRpYWxseSBEQU0gdG8vZnJvbSBhcmJpdHJhcnkg bWVtb3J5IHJlZ2lvbnMgdXNpbmcNCj4gPiA+IHBoeXNpY2FsIGFkZHJlc3Nlcywgc28gSU9NTVUN Cj4gPiA+IGlzIG5lZWRlZCB0byBwcm92aWRlIHN0cmljdCBtZW1vcnkgcHJvdGVjdGlvbiwgYXQg dGhlIGNvc3Qgb2YgbmVnYXRpdmUNCj4gPiA+IHBlcmZvcm1hbmNlIGltcGFjdC4NCj4gPiA+DQo+ ID4gPiBTbyBpZiB5b3Ugd2FudCB0byBzZWVrIGhpZ2ggcGVyZm9ybWFuY2UsIGRpc2FibGUgSU9N TVUgaW4gQklPUyBvciBPUy4gQW5kDQo+ID4gPiBpZiBzZWN1cml0eSBpcyBhIG1ham9yDQo+ID4g PiBjb25jZXJuLCB0dW5lIGl0IG9uIGFuZCB0cmFkZW9mZiBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFu ZCBzZWN1cml0eS4gQnV0IEkNCj4gPiA+IGRvIE5PVCB0aGluayBpcyBjb21lcyB3aXRoDQo+ID4g PiBhbiBleHRyZW1lbHkgaGlnaCBwZXJmb3JtYW5jZSBjb3N0cyBhY2NvcmRpbmcgdG8gb3VyIHBl cmZvcm1hbmNlDQo+ID4gPiBtZWFzdXJlbWVudCwgYnV0IGl0IHByb2JhYmx5IHRydWUNCj4gPiA+ IGZvciAxMDBHIE5JQy4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnPG1haWx0bzpk ZXYtYm91bmNlc0BkcGRrLm9yZz5dIE9uIEJlaGFsZiBPZiBTaGl2YXByaXlhIEhpcmVtYXRoDQo+ ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAyMiwgMjAxNCAxMjo1NCBBTQ0KPiA+ID4g PiBUbzogQWxleCBNYXJrdXplDQo+ID4gPiA+IENjOiBkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBk cGRrLm9yZz4NCj4gPiA+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gV2h5IGRvIHdlIG5lZWQg aW9tbXU9cHQ/DQo+ID4gPiA+DQo+ID4gPiA+IEhpLA0KPiA+ID4gPg0KPiA+ID4gPiBUaGFuayB5 b3UgZm9yIGFsbCB0aGUgcmVwbGllcy4NCj4gPiA+ID4gSSBhbSB0cnlpbmcgdG8gdW5kZXJzdGFu ZCB0aGUgaW1wYWN0IG9mIHRoaXMgb24gRFBESy4gV2hhdCB3aWxsIGJlIHRoZQ0KPiA+ID4gPiBy ZXBlcmN1c3Npb25zIG9mIGRpc2FibGluZyAiaW9tbXU9cHQiIG9uIHRoZSBEUERLIHBlcmZvcm1h bmNlPw0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBPbiBUdWUsIE9jdCAyMSwgMjAxNCBhdCAx MjozMiBBTSwgQWxleCBNYXJrdXplIDxhbGV4QHdla2EuaW88bWFpbHRvOmFsZXhAd2VrYS5pbz4+ IHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPiA+IERQREsgdXNlcyBhIDE6MSBtYXBwaW5nIGFuZCBk b2Vzbid0IHN1cHBvcnQgSU9NTVUuICBJT01NVSBhbGxvd3MgZm9yDQo+ID4gPiA+ID4gc2ltcGxl ciBWTSBwaHlzaWNhbCBhZGRyZXNzIHRyYW5zbGF0aW9uLg0KPiA+ID4gPiA+IFRoZSBzZWNvbmQg cm9sZSBvZiBJT01NVSBpcyB0byBhbGxvdyBwcm90ZWN0aW9uIGZyb20gdW53YW50ZWQgbWVtb3J5 DQo+ID4gPiA+ID4gYWNjZXNzIGJ5IGFuIHVuc2FmZSBkZXZpc2UgdGhhdCBoYXMgRE1BIHByaXZp bGVnZXMuIFVuZm9ydHVuYXRlbHkgdGhpcw0KPiA+ID4gPiA+IHByb3RlY3Rpb24gY29tZXMgd2l0 aCBhbiBleHRyZW1lbHkgaGlnaCBwZXJmb3JtYW5jZSBjb3N0cyBmb3IgaGlnaA0KPiA+ID4gc3Bl ZWQNCj4gPiA+ID4gPiBuaWNzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVG8geW91ciBxdWVzdGlv biBpb21tdT1wdCBkaXNhYmxlcyBJT01NVSBzdXBwb3J0IGZvciB0aGUgaHlwZXJ2aXNvci4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IE9uIFR1ZSwgT2N0IDIxLCAyMDE0IGF0IDE6MzkgQU0sIFhpZSwg SHVhd2VpIDxodWF3ZWkueGllQGludGVsLmNvbTxtYWlsdG86aHVhd2VpLnhpZUBpbnRlbC5jb20+ Pg0KPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4NCj4gPiA+ ID4gPj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+PiA+IEZyb206IGRl diBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnPG1haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9y Zz5dIE9uIEJlaGFsZiBPZiBTaGl2YXByaXlhDQo+ID4gPiA+ID4+IEhpcmVtYXRoDQo+ID4gPiA+ ID4+ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDIwLCAyMDE0IDI6NTkgUE0NCj4gPiA+ID4gPj4g PiBUbzogZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5vcmc+DQo+ID4gPiA+ID4+ID4gU3Vi amVjdDogW2RwZGstZGV2XSBXaHkgZG8gd2UgbmVlZCBpb21tdT1wdD8NCj4gPiA+ID4gPj4gPg0K PiA+ID4gPiA+PiA+IEhpLA0KPiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4+ID4gTXkgcXVlc3Rpb24g aXMgdGhhdCBpZiB0aGUgUG9sbCBtb2RlICBkcml2ZXIgdXNlZCB0aGUgRE1BIGtlcm5lbA0KPiA+ ID4gPiA+PiBpbnRlcmZhY2UNCj4gPiA+ID4gPj4gPiB0byBzZXQgdXAgaXRzIG1hcHBpbmdzIGFw cHJvcHJpYXRlbHksIHdvdWxkIGl0IHN0aWxsIHJlcXVpcmUgdGhhdA0KPiA+ID4gPiA+PiBpb21t dT1wdA0KPiA+ID4gPiA+PiA+IGJlIHNldD8NCj4gPiA+ID4gPj4gPiBXaGF0IGlzIHRoZSBwdXJw b3NlIG9mIHNldHRpbmcgaW9tbXU9cHQgPw0KPiA+ID4gPiA+PiBQTUQgYWxsb2NhdGVzIG1lbW9y eSB0aG91Z2ggaHVnZXRsYiBmaWxlIHN5c3RlbSwgYW5kIGZpbGxzIHRoZQ0KPiA+ID4gcGh5c2lj YWwNCj4gPiA+ID4gPj4gYWRkcmVzcw0KPiA+ID4gPiA+PiBpbnRvIHRoZSBkZXNjcmlwdG9yLg0K PiA+ID4gPiA+PiBwdCBpcyB1c2VkIHRvIHBhc3MgdGhyb3VnaCBpb3RsYiB0cmFuc2xhdGlvbi4g UmVmZXIgdG8gdGhlIGJlbG93IGxpbmsuDQo+ID4gPiA+ID4+IGh0dHA6Ly9sa21sLml1LmVkdS9o eXBlcm1haWwvbGludXgva2VybmVsLzA5MDYuMi8wMjEyOS5odG1sDQo+ID4gPiA+ID4+ID4NCj4g PiA+ID4gPj4gPiBUaGFuayB5b3UuDQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0K PiA+ID4NCg0K