From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [RFC KERNEL PATCH 0/2] Add Dom0 NVDIMM support for Xen Date: Thu, 20 Oct 2016 17:15:02 +0800 Message-ID: <20161020091502.cx6og7yjpckatcqb__6007.61465398154$1476955030$gmane$org@hz-desktop> References: <20161012145826.wwxecoo4o3ypos5o@hz-desktop> <57FE75520200007800116D27@prv-mh.provo.novell.com> <57FE7A710200007800116D60@prv-mh.provo.novell.com> <57FF633E0200007800116F59@prv-mh.provo.novell.com> <20161013085344.ulju7pnnbvufc4em@hz-desktop> <57FF6B130200007800116F96@prv-mh.provo.novell.com> <20161013154600.minrxkdrvqaln6sz@hz-desktop> <5800CCAB020000780011759D@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bx9SM-0000OP-7q for xen-devel@lists.xenproject.org; Thu, 20 Oct 2016 09:16:10 +0000 Content-Disposition: inline In-Reply-To: <5800CCAB020000780011759D@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: "linux-nvdimm@lists.01.org" , Juergen Gross , Xiao Guangrong , Arnd Bergmann , Boris Ostrovsky , andrew.cooper3@citrix.com, Johannes Thumshirn , "linux-kernel@vger.kernel.org" , Stefano Stabellini , David Vrabel , Ross Zwisler , xen-devel@lists.xenproject.org, Dan Williams , Andrew Morton List-Id: xen-devel@lists.xenproject.org T24gMTAvMTQvMTYgMDQ6MTYgLTA2MDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+IE9uIDEzLjEw LjE2IGF0IDE3OjQ2LCA8aGFvemhvbmcuemhhbmdAaW50ZWwuY29tPiB3cm90ZToKPj4gT24gMTAv MTMvMTYgMDM6MDggLTA2MDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4gT24gMTMuMTAuMTYg YXQgMTA6NTMsIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+IHdyb3RlOgo+Pj4+IE9uIDEwLzEz LzE2IDAyOjM0IC0wNjAwLCBKYW4gQmV1bGljaCB3cm90ZToKPj4+Pj4+Pj4gT24gMTIuMTAuMTYg YXQgMTg6MTksIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+IHdyb3RlOgo+Pj4+Pj4gT24gV2Vk LCBPY3QgMTIsIDIwMTYgYXQgOTowMSBBTSwgSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29t PiB3cm90ZToKPj4+Pj4+Pj4+PiBPbiAxMi4xMC4xNiBhdCAxNzo0MiwgPGRhbi5qLndpbGxpYW1z QGludGVsLmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+IE9uIFdlZCwgT2N0IDEyLCAyMDE2IGF0IDg6Mzkg QU0sIEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiBP biAxMi4xMC4xNiBhdCAxNjo1OCwgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4gd3JvdGU6Cj4+ Pj4+Pj4+Pj4gT24gMTAvMTIvMTYgMDU6MzIgLTA2MDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+ Pj4+Pj4+Pj4+PiBPbiAxMi4xMC4xNiBhdCAxMjozMywgPGhhb3pob25nLnpoYW5nQGludGVsLmNv bT4gd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiBUaGUgbGF5b3V0IGlzIHNob3duIGFzIHRoZSBmb2xsb3dp bmcgZGlhZ3JhbS4KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiArLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4+Pj4+ IHwgd2hhdGV2ZXIgdXNlZCB8IFBhcnRpdGlvbiB8IFN1cGVyIHwgUmVzZXJ2ZWQgfCAvZGV2L3Bt ZW0wcDEgfAo+Pj4+Pj4+Pj4+Pj4gfCAgYnkga2VybmVsICAgIHwgICBUYWJsZSAgIHwgQmxvY2sg fCBmb3IgWGVuICB8ICAgICAgICAgICAgICB8Cj4+Pj4+Pj4+Pj4+PiArLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4+ Pj4+ICAgICAgICAgICAgICAgICBcX19fX19fX19fX19fX19fX19fX19fIF9fX19fX19fX19fX19f X19fX19fX19fLwo+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYKPj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2Rldi9wbWVtMAo+ Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PkkgaGF2ZSB0byBhZG1pdCB0aGF0IEkgZGlzbGlrZSB0aGlz LCBmb3Igbm90IGJlaW5nIE9TLWFnbm9zdGljLgo+Pj4+Pj4+Pj4+Pk5laXRoZXIgc2hvdWxkIHRo ZXJlIGJlIGFueSBYZW4tc3BlY2lmaWMgcmVnaW9uLCBub3Igc2hvdWxkIHRoZQo+Pj4+Pj4+Pj4+ PiJ3aGF0ZXZlciB1c2VkIGJ5IGtlcm5lbCIgb25lIGJlIHJlc3RyaWN0ZWQgdG8ganVzdCBMaW51 eC4gV2hhdAo+Pj4+Pj4+Pj4+PkkgY291bGQgc2VlIGlzIGFuIE9TLXJlc2VydmVkIGFyZWEgYWhl YWQgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSwKPj4+Pj4+Pj4+Pj50aGUgZXhhY3QgdXNhZ2Ugb2Yg d2hpY2ggZGVwZW5kcyBvbiB3aGljaCBPUyBpcyBjdXJyZW50bHkKPj4+Pj4+Pj4+Pj5ydW5uaW5n IChhbmQgaW4gdGhlIFhlbiBjYXNlIHRoaXMgbWlnaHQgYmUgYm90aCBYZW4gX2FuZF8gdGhlCj4+ Pj4+Pj4+Pj4+RG9tMCBrZXJuZWwsIGFyYml0cmF0ZWQgYnkgYSB0YmQgcHJvdG9jb2wpLiBBZnRl ciBhbGwsIHdoZW4KPj4+Pj4+Pj4+Pj5ydW5uaW5nIHVuZGVyIFhlbiwgdGhlIERvbTAgbWF5IG5v dCBoYXZlIGEgbmVlZCBmb3IgYXMgbXVjaAo+Pj4+Pj4+Pj4+PmNvbnRyb2wgZGF0YSBhcyBpdCBo YXMgd2hlbiBydW5uaW5nIG9uIGJhcmUgaGFyZHdhcmUsIGZvciBpdAo+Pj4+Pj4+Pj4+PmNvbnRy b2xsaW5nIGxlc3MgKGlmIGFueSkgb2YgdGhlIGFjdHVhbCBtZW1vcnkgcmFuZ2VzIHdoZW4gWGVu Cj4+Pj4+Pj4+Pj4+aXMgcHJlc2VudC4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ IElzbid0IHRoaXMgT1MtcmVzZXJ2ZWQgYXJlYSBzdGlsbCBub3QgT1MtYWdub3N0aWMsIGFzIGl0 IHJlcXVpcmVzIE9TCj4+Pj4+Pj4+Pj4gdG8ga25vdyB3aGVyZSB0aGUgcmVzZXJ2ZWQgYXJlYSBp cz8gIE9yIGRvIHlvdSBtZWFuIGl0J3Mgbm90IGlmIGl0J3MKPj4+Pj4+Pj4+PiBkZWZpbmVkIGJ5 IGEgcHJvdG9jb2wgdGhhdCBpcyBhY2NlcHRlZCBieSBhbGwgT1Nlcz8KPj4+Pj4+Pj4+Cj4+Pj4+ Pj4+PiBUaGUgbGF0dGVyIC0gd2UgY2xlYXJseSB3b24ndCBnZXQgYXdheSB3aXRob3V0IHNvbWUg YWdyZWVtZW50IG9uCj4+Pj4+Pj4+PiB3aGVyZSB0byByZXRyaWV2ZSBwb3NpdGlvbiBhbmQgc2l6 ZSBvZiB0aGlzIGFyZWEuIEkgd2FzIHNpbXBseQo+Pj4+Pj4+Pj4gYXNzdW1pbmcgdGhhdCBzdWNo IGEgcHJvdG9jb2wgYWxyZWFkeSBleGlzdHMuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBO bywgd2Ugc2hvdWxkIG5vdCBtaXggdGhlIHN0cnVjdCBwYWdlIHJlc2VydmF0aW9uIHRoYXQgdGhl IERvbTAga2VybmVsCj4+Pj4+Pj4+IG1heSBhY3RpdmVseSB1c2Ugd2l0aCB0aGUgWGVuIHJlc2Vy dmF0aW9uIHRoYXQgdGhlIERvbTAga2VybmVsIGRvZXMKPj4+Pj4+Pj4gbm90IGNvbnN1bWUuICBF eHBsYWluIGFnYWluIHdoYXQgaXMgd3Jvbmcgd2l0aCB0aGUgcGFydGl0aW9uIGFwcHJvYWNoPwo+ Pj4+Pj4+Cj4+Pj4+Pj4gTm90IHN1cmUgd2hhdCB3YXMgdW5jbGVhciBpbiBteSBwcmV2aW91cyBy ZXBseS4gSSBkb24ndCB0aGluayB0aGVyZQo+Pj4+Pj4+IHNob3VsZCBiZSBhcHJpb3JpIGtub3ds ZWRnZSBvZiB3aGV0aGVyIFhlbiBpcyAoZ29pbmcgdG8gYmUpIHVzZWQgb24KPj4+Pj4+PiBhIHN5 c3RlbSwgYW5kIGV2ZW4gaWYgaXQgZ2V0cyB1c2VkLCBidXQganVzdCBvY2Nhc2lvbmFsbHksIGl0 IHdvdWxkCj4+Pj4+Pj4gKGFwYXJ0IGZyb20gdGhlIGFic3RyYWN0IGNvbnNpZGVyYXRpb25zIGFs cmVhZHkgZ2l2ZW4pIGJlIGEgd2FzdGUKPj4+Pj4+PiBvZiByZXNvdXJjZXMgdG8gc2V0IHNvbWV0 aGluZyBhc2lkZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIG90aGVyCj4+Pj4+Pj4gcHVycG9zZXMg d2hpbGUgWGVuIGlzIG5vdCBydW5uaW5nLiBTdGF0aWMgcGFydGl0aW9uaW5nIHNob3VsZCBvbmx5 IGJlCj4+Pj4+Pj4gbmVlZGVkIGZvciBwZXJzaXN0ZW50IGRhdGEuCj4+Pj4+Pgo+Pj4+Pj4gVGhl IHJlc2VydmF0aW9uIG5lZWRzIHRvIGJlIHBlcnNpc3RlbnQgLyBzdGF0aWMgZXZlbiBpZiB0aGUg ZGF0YSBpcwo+Pj4+Pj4gdm9sYXRpbGUsIGFzIGlzIHRoZSBjYXNlIHdpdGggc3RydWN0IHBhZ2Us IGJlY2F1c2Ugd2UgY2FuJ3QgaGF2ZSB0aGUKPj4+Pj4+IHNpemUgb2YgdGhlIGRldmljZSBjaGFu Z2UgZGVwZW5kaW5nIG9uIHVzZS4gIFNvLCBmcm9tIHRoZSBhc3BlY3Qgb2YKPj4+Pj4+IHdhc3Rp bmcgc3BhY2Ugd2hpbGUgWGVuIGlzIG5vdCBpbiB1c2UsIGJvdGggcGFydGl0aW9ucyBhbmQgdGhl Cj4+Pj4+PiBpbnRyaW5zaWMgcmVzZXJ2YXRpb24gYXBwcm9hY2ggc3VmZmVyIHRoZSBzYW1lIHBy b2JsZW0uIFNldHRpbmcgdGhhdAo+Pj4+Pj4gYXNpZGUgSSBkb24ndCB3YW50IHRvIG1peCAyIGRp ZmZlcmVudCB1c2UgY2FzZXMgaW50byB0aGUgc2FtZQo+Pj4+Pj4gcmVzZXJ2YXRpb24uCj4+Pj4+ Cj4+Pj4+VGhlbiB5b3UgZGlkbid0IHVuZGVyc3RhbmQgd2hhdCBJJ3ZlIHNhaWQ6IEkgY2VydGFp bmx5IGRpZG4ndCBtZWFuCj4+Pj4+dGhlIHJlc2VydmF0aW9uIHRvIHZhcnkgZnJvbSBhIGRldmlj ZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciwgd2hlbgo+Pj4+PlhlbiBpcyBpbiB1c2UgSSBkb24ndCBz ZWUgd2h5IHBhcnQgb2YgdGhhdCBzdGF0aWMgcmVzZXJ2YXRpb24gY291bGRuJ3QKPj4+Pj5iZSB1 c2VkIGJ5IFhlbiwgYW5kIGFub3RoZXIgcGFydCBieSB0aGUgRG9tMCBrZXJuZWwuIFRoZSBrZXJu ZWwKPj4+Pj5vYnZpb3VzbHkgd291bGQgbmVlZCB0byBhc2sgdGhlIGh5cGVydmlzb3IgaG93IG11 Y2ggb2YgdGhlIHNwYWNlCj4+Pj4+aXMgbGVmdCwgYW5kIHdoZXJlIHRoYXQgYXJlYSBzdGFydHMu Cj4+Pj4+Cj4+Pj4KPj4+PiBJIHRoaW5rIERhbiBtZWFucyB0aGF0IHRoZXJlIHNob3VsZCBiZSBh IGNsZWFyIHNlcGFyYXRpb24gYmV0d2Vlbgo+Pj4+IHJlc2VydmF0aW9ucyBmb3IgZGlmZmVyZW50 IHVzYWdlcyAoa2VybmVsL3hlbi8uLi4pLiBUaGUgbGlibnZkaW1tCj4+Pj4gZHJpdmVyIGlzIGZv ciB0aGUgbGludXgga2VybmVsIGFuZCBvbmx5IG5lZWRzIHRvIG1haW50YWluIHRoZQo+Pj4+IHJl c2VydmF0aW9uIGZvciBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gRm9yIG90aGVycyBpbmNsdWRpbmcg eGVuL2RtLy4uLiwKPj4+PiBpZiB0aGV5IHdhbnQgcmVzZXJ2YXRpb24gZm9yIHRoZWlyIG93biBw dXJwb3NlLCB0aGV5IHNob3VsZCBtYWludGFpbgo+Pj4+IHRoZWlyIG93biByZXNlcnZhdGlvbnMg b3V0IG9mIGxpYm52ZGltbSBkcml2ZXIgYW5kIGF2b2lkIGJvdGhlcmluZyB0aGUKPj4+PiBsaWJu dmRpbW0gZHJpdmVyIChlLmcuIGFkZCBzcGVjaWZpYyBoYW5kbGluZyBpbiBsaWJudmRpbW0gZHJp dmVyKS4KPj4+Pgo+Pj4+IElJVUMsIG9uZSBleGlzdGluZyBleGFtcGxlIGlzIGRldmljZS1tYXBw ZXIgZGV2aWNlIChkbSkgd2hpY2ggbmVlZHMgdG8KPj4+PiByZXNlcnZlIG9uLWRldmljZSBhcmVh IGZvciBpdHMgb3duIG1ldGEtZGF0YS4gSXRzIGNob2ljZSBpcyB0byBzdG9yZQo+Pj4+IHRoZSBt ZXRhLWRhdGEgb24gdGhlIGJsb2NrIGRldmljZSAoL2Rldi9wbWVtTikgcHJvdmlkZWQgYnkgdGhl Cj4+Pj4gbGlibnZkaW1tIGRyaXZlci4KPj4+Pgo+Pj4+IEkgdGhpbmsgd2UgY2FuIGRvIHRoZSBz aW1pbGFyIGZvciBYZW4sIGxpa2UgdG8gbGF5IGFub3RoZXIgcHNldWRvCj4+Pj4gZGV2aWNlIG9u IC9kZXYvcG1lbSBhbmQgZG8gdGhlIHJlc2VydmF0aW9uLCBsaWtlIDIuIGluIG15IHByZXZpb3Vz Cj4+Pj4gcmVwbHkuCj4+Pgo+Pj5XZWxsLCBteSBvcGluaW9uIGNlcnRhaW5seSBkb2Vzbid0IGNv dW50IG11Y2ggaGVyZSwgYnV0IEkgY29udGludWUgdG8KPj4+Y29uc2lkZXIgdGhpcyBhIGJhZCBp ZGVhLiBGb3IgZW50aXRpZXMgbGlrZSBkcml2ZXJzIGl0IG1heSB3ZWxsIGJlCj4+PmFwcHJvcHJp YXRlLCBidXQgSSB0aGluayB0aGVyZSBvdWdodCB0byBiZSBhbiBpbmRlcGVuZGVudCBjb25jZXB0 Cj4+Pm9mICJPUyByZXNlcnZlZCIsIGFuZCBpbiB0aGUgWGVuIGNhc2UgdGhpcyBjb3VsZCB0aGVu IGJlIHNoYXJlZAo+Pj5iZXR3ZWVuIGh5cGVydmlzb3IgYW5kIERvbTAga2VybmVsLgo+Pgo+PiBO byBzdWNoIGluZGVwZW5kZW50IGNvbmNlcHQgc2VlbXMgZXhpc3QgcmlnaHQgbm93LiBJdCBtYXkg YmUgaGFyZCB0bwo+PiBkZWZpbmUgc3VjaCBjb25jZXB0LCBiZWNhdXNlIGl0J3MgaGFyZCB0byBr bm93IHRoZSBjb21tb24gcmVxdWlyZW1lbnRzCj4+IChlLmcuIHNpemUvYWxpZ25tZW50Ly4uLikg IGZyb20gQUxMIE9TZXMuIE1ha2luZyBlYWNoIGNvbXBvbmVudCB0bwo+PiBtYWludGFpbiBpdHMg b3duIHJlc2VydmF0aW9uIGluIGl0cyBvd24gd2F5IHNlZW1zIG1vcmUgZmxleGlibGUuCj4+Cj4+ Pk9yIGlmIHdlIHdlcmUgdG8gY29uc2lkZXIgRG9tMAo+Pj4ianVzdCBhIGd1ZXN0IiwgdGhpbmdz IHNob3VsZCBldmVuIGJlIHRoZSBvdGhlciB3YXkgYXJvdW5kOiBYZW4gZ2V0cwo+Pj5hbGwgb2Yg dGhlIE9TIHJlc2VydmVkIHNwYWNlLCBhbmQgRG9tMCBuZWVkcyBzb21ldGhpbmcgY3VzdG9tLgo+ Pj4KPj4KPj4gU3VyZSwgaXQncyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhlIGRyaXZlciBpbiBh IHdheSB0aGF0IGlmIHRoZQo+PiBkcml2ZXIgZmluZHMgaXQgcnVucyBvbiBYZW4sIHRoZW4gaXQg anVzdCBsZWF2ZXMgdGhlIE9TIHJlc2VydmVkIGFyZWEKPj4gZm9yIFhlbiBhbmQgaXRzZWxmIGdv ZXMgdG8gb3RoZXIgcmVzZXJ2YXRpb24uIEFyZSB0aGVyZSBzb21lCj4+IGRpZmZlcmVuY2VzIGlu IHByYWN0aWNlIGZyb20gdGhlIHdheSB0aGF0IFhlbiBnb2VzIHRvIG90aGVyCj4+IHJlc2VydmF0 aW9uIHRoYXQgbWFrZXMgd2UgaGF2ZSB0byBkbyBzbz8gSWYgbm90IGFuZCBpdCdzIHBvc3NpYmxl IHRvCj4+IG5vdCB0b3VjaCB0aGUgZXhpc3RpbmcgbGlibnZkaW1tIGRyaXZlciwgd2h5IGRvbid0 IHdlIGp1c3QgdXNlIHRoZQo+PiBleGlzdGluZyBsaWJudmRpbW0gZHJpdmVyIGFuZCBsZXQgeGVu IGRyaXZlciBtYWtlIHRoZSByZXNlcnZhdGlvbiBvbgo+PiB3aGF0IHRoZSBsaWJudmRpbW0gZHJp dmVyIHByb3ZpZGVzPwo+Cj5JdCBjb250aW51ZXMgdG8gZmVlbCBsaWtlIHlvdSdyZSB0cnlpbmcg dG8gbWFrZSB0aGUgc2Vjb25kIHN0ZXAgYmVmb3JlCj50aGUgZmlyc3Q6IFlvdSB0YWxrIGFib3V0 IGltcGxlbWVudGF0aW9uLCB3aGVyZWFzIEkgdGFsayBhYm91dCB0aGUKPmNvbmNlcHQgdGhhdCBz aG91bGQgdW5kZXJseSB5b3VyIGltcGxlbWVudGF0aW9uLiBPbmUgY291bGQgdmlldyBpdAo+dGhl IHdheSB0aGF0IGhvdyBzYWlkIGRyaXZlciB3b3JrcyB3aXRoIFhlbiBpbiB0aGUgcGljdHVyZSBz aG91bGQKPmhhdmUgYmVlbiBkZWNpZGVkIGJlZm9yZSBpdCBnb3QgaW1wbGVtZW50ZWQsIGFuZCB0 aGVuIHRoZSBxdWVzdGlvbgo+b2Ygd2hldGhlciBpdCB3b3VsZCBiZSBva2F5IHRvIGxlYXZlIHRo ZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbgo+YWxvbmUgd291bGQgbm90IGhhdmUgYXBwZWFyZWQg aW4gdGhlIGZpcnN0IHBsYWNlLgo+Cj5XaXRoIHRoYXQsIEkgY2FuJ3QgcmVhc29uYWJseSBhbnN3 ZXIgeW91ciBxdWVzdGlvbnMuCj4KCklkZWFsbHksIFhlbiBzaG91bGQgc3RlcCBpbiBmaXJzdCB0 byBkbyB3aGF0ZXZlciBuZWVkZWQgZm9yIHRoZQpyZXNvdXJjZSBtYW5hZ2VtZW50IChlLmcuIHRh a2luZyBhbGwgT1MtcmVzZXJ2ZWQgc3BhY2UpLCBhbmQgdGhlbiBsZXQKb3RoZXIga2VybmVsIGNv bXBvbmVudHMgd29yayBvbiB0aGUgcmVtYWluaW5nIHJlc291cmNlIChlLmcuIGxpYm52ZGltbQpk cml2ZXIgdG8gdXNlIG90aGVyIHJlc2VydmVkIHNwYWNlKS4gSG93ZXZlciwgdGhlIGxpYm52ZGlt bSBkcml2ZXIgd2FzCm1lcmdlZCBpbiB0aGUga2VybmVsIGxvbmcgYmVmb3JlIEkgc3RhcnRlZCB0 byBkZXNpZ24gYW5kIGltcGxlbWVudCBYZW4Kdk5WRElNTS4gVGhlIGltcGxlbWVudGF0aW9uIG9m IHRoZSBpZGVhbCBkZXNpZ24gYWJvdmUgbmVlZHMgdG8gbW9kaWZ5CnRoZSBleGlzdGluZyBkcml2 ZXIgd2hpY2ggaXMgb2JqZWN0ZWQgYnkgaXRzIG1haW50YWluZXIuIFRoZXJlZm9yZSwgSQpsb29r ZWQgdG8gdGhlIGFsdGVybmF0aXZlIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24uCgpUaGFua3Ms Ckhhb3pob25nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK