From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [RFC PATCH 5/23] Tools/libxc: Add viommu operations in libxc Date: Tue, 18 Apr 2017 09:08:47 +0000 Message-ID: <3a672f1441bd4ce7a004095a387d5688@AMSPEX02CL03.citrite.net> References: <1489750043-17260-1-git-send-email-tianyu.lan@intel.com> <1489750043-17260-6-git-send-email-tianyu.lan@intel.com> <20170328162403.tjx2s6ywjhvbjsti@citrix.com> <20170329004005.GA5058@skl-2s3.sh.intel.com> <20170330195708.GA88651@skl-2s3.sh.intel.com> <747e0516-eab2-b12e-32a3-9085fb6a7d23@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <747e0516-eab2-b12e-32a3-9085fb6a7d23@intel.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "'Lan, Tianyu'" , Wei Liu , Kevin Tian , Ian Jackson , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IExhbiwgVGlhbnl1IFttYWlsdG86 dGlhbnl1LmxhbkBpbnRlbC5jb21dCj4gU2VudDogMTQgQXByaWwgMjAxNyAxNjozOAo+IFRvOiBQ YXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPjsgV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT47Cj4gS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+OyBJYW4gSmFj a3NvbiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47Cj4geGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK PiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1JGQyBQQVRDSCA1LzIzXSBUb29scy9saWJ4Yzog QWRkIHZpb21tdQo+IG9wZXJhdGlvbnMgaW4gbGlieGMKPiAKPiBIaSBQYXVsOgo+IAlTb3JyeSBm b3IgbGF0ZXIgcmVzcG9uc2UuCj4gCj4gT24gMy8zMS8yMDE3IDM6NTcgQU0sIENoYW8gR2FvIHdy b3RlOgo+ID4gT24gV2VkLCBNYXIgMjksIDIwMTcgYXQgMDk6MDg6MDZBTSArMDAwMCwgUGF1bCBE dXJyYW50IHdyb3RlOgo+ID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+PiBGcm9t OiBYZW4tZGV2ZWwgW21haWx0bzp4ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBC ZWhhbGYKPiBPZgo+ID4+PiBDaGFvIEdhbwo+ID4+PiBTZW50OiAyOSBNYXJjaCAyMDE3IDAxOjQw Cj4gPj4+IFRvOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+ID4+PiBDYzogTGFuIFRp YW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+OyBLZXZpbiBUaWFuCj4gPGtldmluLnRpYW5AaW50 ZWwuY29tPjsKPiA+Pj4gSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+OyB4ZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwo+ID4+PiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1JGQyBQ QVRDSCA1LzIzXSBUb29scy9saWJ4YzogQWRkIHZpb21tdQo+ID4+PiBvcGVyYXRpb25zIGluIGxp YnhjCj4gPj4+Cj4gPj4+IFRpYW55dSBpcyBvbiB2YWNhdGlvbiB0aGlzIHR3byB3ZWVrcywgc28g SSB3aWxsIHRyeSB0byBhZGRyZXNzCj4gPj4+IHNvbWUgY29tbWVudHMgb24gdGhpcyBzZXJpZXMu Cj4gPj4+Cj4gPj4+IE9uIFR1ZSwgTWFyIDI4LCAyMDE3IGF0IDA1OjI0OjAzUE0gKzAxMDAsIFdl aSBMaXUgd3JvdGU6Cj4gPj4+PiBPbiBGcmksIE1hciAxNywgMjAxNyBhdCAwNzoyNzowNVBNICsw ODAwLCBMYW4gVGlhbnl1IHdyb3RlOgo+ID4+Pj4+IEZyb206IENoYW8gR2FvIDxjaGFvLmdhb0Bp bnRlbC5jb20+Cj4gPj4+Pj4KPiA+Pj4+PiBJbiBwcmV2aW91cyBwYXRjaCwgd2UgaW50cm9kdWNl IGEgY29tbW9uIHZJT01NVSBsYXllci4gSW4gb3VyCj4gZGVzaWduLAo+ID4+Pj4+IHdlIGNyZWF0 ZS9kZXN0cm95IHZJT01NVSB0aHJvdWdoIERNT1AgaW50ZXJmYWNlIGluc3RlYWQgb2YKPiBjcmVh dGluZwo+ID4+PiBpdAo+ID4+Pj4+IGFjY29yZGluZyB0byBhIGNvbmZpZyBmbGFnIG9mIGRvbWFp bi4gSXQgbWFrZXMgaXQgaXMgcG9zc2libGUKPiA+Pj4+PiB0byBjcmVhdGUgdklPTU1VIGluIGRl dmljZSBtb2RlbCBvciBpbiB0b29sIHN0YWNrLgo+ID4+Pj4+Cj4gPj4KPiA+PiBJJ3ZlIG5vdCBi ZWVuIGZvbGxvd2luZyB0aGlzIGNsb3NlbHkgc28gYXBvbG9naWVzIGlmIHRoaXMgaGFzIGFscmVh ZHkgYmVlbgo+IGFza2VkLi4uCj4gPj4KPiA+PiBXaHkgd291bGQgeW91IG5lZWQgdG8gY3JlYXRl IGEgdklPTU1VIGluc3RhbmNlIGluIGFuIGV4dGVybmFsIGRldmljZQo+IG1vZGVsLgo+ID4+IFNp bmNlIHRoZSB0b29sc3RhY2sgc2hvdWxkIGJlIGluIGNvbnRyb2wgb2YgdGhlIGRldmljZSBtb2Rl bCBjb25maWd1cmF0aW9uCj4gd2h5IHdvdWxkIGl0IG5vdCBrbm93IGluIGFkdmFuY2UgdGhhdCBv bmUgd2FzIHJlcXVpcmVkPwo+ID4KPiA+IEkgYXNzdW1lIHlvdXIgcXVlc3Rpb24gaXMgd2h5IHdl IGRvbid0IGNyZWF0ZSBhIHZJT01NVSBpbnN0YW5jZSB2aWEKPiBoeXBlcmNhbGwgaW4gdG9vbHN0 YWNrLgo+ID4gSSB0aGluayBjcmVhdGluZyBpbiB0b29sc3RhY2sgaXMgYWxzbyBvayBhbmQgaXMg ZWFzaWVyIHRvIGJlIHJldXNlZCBieSBwdmguCj4gPgo+ID4gSWYgVGlhbnl1IGhhcyBubyBjb25j ZXJuIGFib3V0IHRoaXMsIHdpbGwgbW92ZSB0aGlzIHBhcnQgdG8gdG9vbHN0YWNrLgo+IAo+IFdl IGNhbiBtb3ZlIGNyZWF0ZS9kZXN0cm95IHZJT01NVSBpbiB0aGUgdG9vbCBzdGFjayBidXQgd2Ug c3RpbGwgbmVlZCB0bwo+IGFkZCBzdWNoIGR1bW15IHZJT01NVSBkZXZpY2UgbW9kZWwgaW4gUWVt dSB0byBwYXNzIHZpcnR1YWwgZGV2aWNlJ3MKPiBETUEKPiByZXF1ZXN0IGludG8gWGVuIGh5cGVy dmlzb3IuCgpOb3QgcXVpdGUgc3VyZSBJIHVuZGVyc3RhbmQgdGhpcy4gVGhlIFFFTXUgZGV2aWNl IG1vZGVsIGRvZXMgbm90ICdwYXNzIERNQSByZXF1ZXN0cycgYXMgc3VjaCwgaXQgbWFwcyBndWVz dCBSQU0gYW5kIHJlYWRzIG9yIHdyaXRlcyB0byBlbXVsYXRlIERNQSwgcmlnaHQ/IFNvLCB3aGF0 J3MgbmVlZGVkIGlzIGEgbWVjaGFuaXNtIHRvIG1hcCBndWVzdCBSQU0gYnkgJ2J1cyBhZGRyZXNz Jy4uLiBpLmUuIGFuIGFkZHJlc3MgdGhhdCB3aWxsIG5lZWQgdG8gYmUgdHJhbnNsYXRlZCB0aHJv dWdoIHRoZSB2SU9NTVUgbWFwcGluZ3MuIFRoaXMgaXMganVzdCBhbiBldm9sdXRpb24gb2YgdGhl IGN1cnJlbnQgJ3ByaXYgbWFwcGluZycgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGd1ZXN0IFJBTSB0 byBiZSBtYXBwZWQgYnkgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcy4gU28geW91IGRvbid0IG5lZWQg YSB2SU9NTVUgJ2RldmljZSBtb2RlbCcgYXMgc3VjaCwgZG8geW91PwoKPiBRZW11IGlzIHJlcXVp cmVkIHRvIHVzZSBETU9QIGh5cGVyY2FsbCBhbmQKPiB0b29sIHN0YWNrIG1heSB1c2UgZG9tY3Rs IGh5ZXJjYWxsLiB2SU9NTVUgaHlwZXJjYWxscyB3aWxsIGJlIGRpdmlkZWQKPiBpbnRvIHR3byBw YXJ0Lgo+IAo+IERvbWN0bDoKPiAJY3JlYXRlLCBkZXN0cm95IGFuZCBxdWVyeS4KPiBETU9QOgo+ IAl2RGV2J3MgRE1BIHJlbGF0ZWQgb3BlcmF0aW9ucy4KClllcywgdGhlIG1hcHBpbmcvdW5tYXBw aW5nIG9wZXJhdGlvbnMgc2hvdWxkIGJlIERNT1BzIGFuZCBJTU8gc2hvdWxkIGJlIGRlc2lnbmVk IHN1Y2ggdGhhdCB0aGV5IGNhbiBiZSB1bmlmaWVkIHdpdGggcmVwbGFjZW1lbnRzIGZvciBjdXJy ZW50ICdwcml2IG1hcCcgb3BzIHN1Y2ggdGhhdCBRRU1VIGNhbiB1c2UgdGhlIHNhbWUgZnVuY3Rp b24gY2FsbCwgYnV0IHdpdGggZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllcnMgKGku ZS4gYnVzIGFkZHJlc3MsIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MsIGV0Yy4pLiBCVFcsIEkgc2F5 ICdldGMuJyBiZWNhdXNlIHdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIG1hcHBpbmcgdGhlIGlvcmVx IHBhZ2VzIGZyb20gWGVuIHVzaW5nIHRoZSBzYW1lIGNhbGwgLSB3aXRoIGEgZGVkaWNhdGVkIGFk ZHJlc3Mgc3BhY2UgaWRlbnRpZmllciAtIGFzIHdlbGwuCgogIENoZWVycywKCiAgICBQYXVsCgo+ IAo+IElzIHRoaXMgT0s/Cj4gCj4gPgo+ID4gVGhhbmtzLAo+ID4gQ2hhbwo+ID4KPiA+Pgo+ID4+ ICBQYXVsCj4gPj4KPiA+Pj4+PiBUaGUgZm9sbG93aW5nIHRvb2xzdGFjayBjb2RlIGlzIHRvIGFk ZCBYRU5fRE1PUF92aW9tbXVfWFhYCj4gc3lzY2FsbHM6Cj4gPj4+Pgo+ID4+Pj4gSHlwZXJjYWxs cywgbm90IHN5c2NhbGxzLgo+ID4+Pj4KPiA+Pj4+PiAgLSBxdWVyeSBjYXBhYmlsaXRpZXMgb2Yg dklPTU1VIGVtdWxhdGVkIGJ5IFhlbgo+ID4+Pj4+ICAtIGNyZWF0ZSB2SU9NTVUgaW4gWGVuIGh5 cGVydmlzb3Igd2l0aCBiYXNlIGFkZHJlc3MsIGNhcGFiaWxpdHkKPiA+Pj4+PiAgLSBkZXN0cm95 IHZJT01NVSBzcGVjaWZpZWQgYnkgdmlvbW11X2lkCj4gPj4+Pj4KPiA+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6 IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgo+ID4+Pj4+IC0tLQo+ID4+Pj4+ICB0 b29scy9saWJzL2RldmljZW1vZGVsL2NvcmUuYyAgICAgICAgICAgICAgICAgICB8IDY5Cj4gPj4+ ICsrKysrKysrKysrKysrKysrKysrKysrKysKPiA+Pj4+PiAgdG9vbHMvbGlicy9kZXZpY2Vtb2Rl bC9pbmNsdWRlL3hlbmRldmljZW1vZGVsLmggfCAzNQo+ICsrKysrKysrKysrKysKPiA+Pj4+PiAg dG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9saWJ4ZW5kZXZpY2Vtb2RlbC5tYXAgICAgfCAgMyArKwo+ ID4+Pj4+ICB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmggICAgICAgICAgICB8 ICA1ICsrCj4gPj4+Pj4gIHRvb2xzL2xpYnhjL3hjX2RldmljZW1vZGVsX2NvbXBhdC5jICAgICAg ICAgICAgIHwgMTggKysrKysrKwo+ID4+Pj4+ICA1IGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRp b25zKCspCj4gPj4+Pj4KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9kZXZpY2Vtb2Rl bC9jb3JlLmMKPiBiL3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jCj4gPj4+Pj4gaW5kZXgg YTg1Y2I0OS4uYWVlMTE1MCAxMDA2NDQKPiA+Pj4+PiAtLS0gYS90b29scy9saWJzL2RldmljZW1v ZGVsL2NvcmUuYwo+ID4+Pj4+ICsrKyBiL3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jCj4g Pj4+Pgo+ID4+Pj4gQmVhciBpbiBtaW5kIHRoYXQgdGhpcyBsaWJyYXJ5IGlzIHN0YWJsZSwgc28g d2hhdGV2ZXIgZW5kcyB1cCBoZXJlIGNhbgo+ID4+Pj4gY2hhbmdlIGluIHRoZSBmdXR1cmUuCj4g Pj4+Pgo+ID4+Pj4gVGhpcyBpcyBub3Qgc2F5aW5nIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBwcm9i bGVtYXRpYy4gSXQgaXMganVzdCBhCj4gPj4+PiBnZW5lcmFsIEZZSS4KPiA+Pj4+Cj4gPj4+PiBP YnZpb3VzbHkgdGhlIHRvb2xzdGFjayBzaWRlIGlzIGdvaW5nIHRvIGZvbGxvdyB0aGUgaHlwZXJ2 aXNvcgo+ID4+Pj4gaW50ZXJmYWNlLCBzbyBJIHdpbGwgZG8gYSBkZXRhaWxlZCByZXZpZXcgbGF0 ZXIuCj4gPj4+Cj4gPj4+IFN1cmUuIElmIHRoZSBoeXBlcnZpc29yIGludGVyZmFjZSBzZXR0bGVz IGRvd24sIHdlIGNhbiBpbmZvcm0geW91Lgo+ID4+Pgo+ID4+Pj4KPiA+Pj4+PiAraW50IHhlbmRl dmljZW1vZGVsX3Zpb21tdV9kZXN0cm95KAo+ID4+Pj4+ICsgICAgeGVuZGV2aWNlbW9kZWxfaGFu ZGxlICpkbW9kLCBkb21pZF90IGRvbSwgdWludDMyX3QKPiB2aW9tbXVfaWQpOwo+ID4+Pj4+ICAj ZW5kaWYgLyogX19YRU5fVE9PTFNfXyAqLwo+ID4+Pj4+Cj4gPj4+Pj4gICNlbmRpZiAvKiBYRU5E RVZJQ0VNT0RFTF9IICovCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZGV2aWNlbW9k ZWwvbGlieGVuZGV2aWNlbW9kZWwubWFwCj4gPj4+IGIvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9s aWJ4ZW5kZXZpY2Vtb2RlbC5tYXAKPiA+Pj4+PiBpbmRleCA0NWM3NzNlLi5jMmUwOTY4IDEwMDY0 NAo+ID4+Pj4+IC0tLSBhL3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvbGlieGVuZGV2aWNlbW9kZWwu bWFwCj4gPj4+Pj4gKysrIGIvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9saWJ4ZW5kZXZpY2Vtb2Rl bC5tYXAKPiA+Pj4+PiBAQCAtMTcsNiArMTcsOSBAQCBWRVJTXzEuMCB7Cj4gPj4+Pj4gIAkJeGVu ZGV2aWNlbW9kZWxfbW9kaWZpZWRfbWVtb3J5Owo+ID4+Pj4+ICAJCXhlbmRldmljZW1vZGVsX3Nl dF9tZW1fdHlwZTsKPiA+Pj4+PiAgCQl4ZW5kZXZpY2Vtb2RlbF9pbmplY3RfZXZlbnQ7Cj4gPj4+ Pj4gKwkJeGVuZGV2aWNlbW9kZWxfdmlvbW11X3F1ZXJ5X2NhcDsKPiA+Pj4+PiArCQl4ZW5kZXZp Y2Vtb2RlbF92aW9tbXVfY3JlYXRlOwo+ID4+Pj4+ICsJCXhlbmRldmljZW1vZGVsX3Zpb21tdV9k ZXN0cm95Owo+ID4+Pj4+ICAJCXhlbmRldmljZW1vZGVsX3Jlc3RyaWN0Owo+ID4+Pj4+ICAJCXhl bmRldmljZW1vZGVsX2Nsb3NlOwo+ID4+Pj4KPiA+Pj4+IEkgc3VwcG9zZSB0aGlzIHNlcmllcyBp cyBnb2luZyB0byBtaXNzIDQuOS4KPiA+Pj4+Cj4gPj4+PiBQbGVhc2UgYWRkIHRoZXNlIGZ1bmN0 aW9ucyB0byBWRVJTXzEuMS4KPiA+Pj4KPiA+Pj4gWWVzLiBXZSB3aWxsIGZpeCB0aGlzLgo+ID4+ Pgo+ID4+Pj4KPiA+Pj4+PiAgCWxvY2FsOiAqOyAvKiBEbyBub3QgZXhwb3NlIGFueXRoaW5nIGJ5 IGRlZmF1bHQgKi8KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsX2NvbXBhdC5oCj4gPj4+IGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5o Cj4gPj4+Pj4gaW5kZXggMDQwZTdiMi4uMzE1YzQ1ZCAxMDA2NDQKPiA+Pj4+PiAtLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKPiA+Pj4+PiArKysgYi90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKPiA+Pj4+PiBAQCAtMTY0LDYgKzE2NCwxMSBAQCBp bnQgeGNfaHZtX3NldF9tZW1fdHlwZSgKPiA+Pj4+PiAgaW50IHhjX2h2bV9pbmplY3RfdHJhcCgK PiA+Pj4+PiAgICAgIHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLCBpbnQgdmNwdSwg dWludDhfdCB2ZWN0b3IsCj4gPj4+Pj4gICAgICB1aW50OF90IHR5cGUsIHVpbnQzMl90IGVycm9y X2NvZGUsIHVpbnQ4X3QgaW5zbl9sZW4sIHVpbnQ2NF90IGNyMik7Cj4gPj4+Pj4gK2ludCB4Y192 aW9tbXVfcXVlcnlfY2FwKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbSwKPiB1aW50NjRf dAo+ID4+PiAqY2FwKTsKPiA+Pj4+PiAraW50IHhjX3Zpb21tdV9jcmVhdGUoCj4gPj4+Pj4gKyAg ICB4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb20sIHVpbnQ2NF90IGJhc2VfYWRkciwgdWlu dDY0X3QKPiBjYXAsCj4gPj4+Pj4gKyAgICB1aW50MzJfdCAqdmlvbW11X2lkKTsKPiA+Pj4+PiAr aW50IHhjX3Zpb21tdV9kZXN0cm95KHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbSwgdWlu dDMyX3QKPiA+Pj4gdmlvbW11X2lkKTsKPiA+Pj4+Pgo+ID4+Pj4+ICAjZW5kaWYgLyogWENfV0FO VF9DT01QQVRfREVWSUNFTU9ERUxfQVBJICovCj4gPj4+Pj4KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGMveGNfZGV2aWNlbW9kZWxfY29tcGF0LmMKPiA+Pj4gYi90b29scy9saWJ4Yy94 Y19kZXZpY2Vtb2RlbF9jb21wYXQuYwo+ID4+Pj4+IGluZGV4IGU0ZWRlZWEuLjYyZjcwM2EgMTAw NjQ0Cj4gPj4+Pj4gLS0tIGEvdG9vbHMvbGlieGMveGNfZGV2aWNlbW9kZWxfY29tcGF0LmMKPiA+ Pj4+PiArKysgYi90b29scy9saWJ4Yy94Y19kZXZpY2Vtb2RlbF9jb21wYXQuYwo+ID4+Pj4KPiA+ Pj4+IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdG8gcHJvdmlkZSBjb21wYXQgd3JhcHBlcnMgZm9y IHRoZW0uIFRoZXkgYXJlCj4gbmV3Cj4gPj4+PiBBUElzLgo+ID4+Pgo+ID4+PiBPSy4gR290IGl0 Lgo+ID4+Pgo+ID4+PiBUaGFua3MsCj4gPj4+IENoYW8KPiA+Pj4+Cj4gPj4+PiBXZWkuCj4gPj4+ Cj4gPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g Pj4+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+Pj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK PiA+Pj4gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==