From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Xen virtual IOMMU high level design doc Date: Wed, 5 Oct 2016 14:36:41 -0400 Message-ID: <20161005183641.GA20941@char.us.oracle.com> References: <647d0b74-cecc-db33-1033-f7201c8a0af5@intel.com> <13fa96c1-4e66-e8a0-3b66-1c93ad2b6543@intel.com> <577BD8D002000078000FB3F7@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Lan, Tianyu" Cc: "yang.zhang.wz@gmail.com" , Kevin Tian , Stefano Stabellini , Jun Nakajima , Andrew Cooper , "ian.jackson@eu.citrix.com" , xuquan8@huawei.com, "xen-devel@lists.xensource.com" , Jan Beulich , "anthony.perard@citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBTZXAgMTUsIDIwMTYgYXQgMTA6MjI6MzZQTSArMDgwMCwgTGFuLCBUaWFueXUgd3Jv dGU6Cj4gSGkgQW5kcmV3Ogo+IFNvcnJ5IHRvIGJvdGhlciB5b3UuIFRvIG1ha2Ugc3VyZSB3ZSBh cmUgb24gdGhlIHJpZ2h0IGRpcmVjdGlvbiwgaXQncwo+IGJldHRlciB0byBnZXQgZmVlZGJhY2sg ZnJvbSB5b3UgYmVmb3JlIHdlIGdvIGZ1cnRoZXIgc3RlcC4gQ291bGQgeW91Cj4gaGF2ZSBhIGxv b2s/IFRoYW5rcy4KPiAKPiBPbiA4LzE3LzIwMTYgODowNSBQTSwgTGFuLCBUaWFueXUgd3JvdGU6 Cj4gPiBIaSBBbGw6Cj4gPiAgICAgIFRoZSBmb2xsb3dpbmcgaXMgb3VyIFhlbiB2SU9NTVUgaGln aCBsZXZlbCBkZXNpZ24gZm9yIGRldGFpbAo+ID4gZGlzY3Vzc2lvbi4gUGxlYXNlIGhhdmUgYSBs b29rLiBWZXJ5IGFwcHJlY2lhdGUgZm9yIHlvdXIgY29tbWVudHMuCj4gPiBUaGlzIGRlc2lnbiBk b2Vzbid0IGNvdmVyIGNoYW5nZXMgd2hlbiByb290IHBvcnQgaXMgbW92ZWQgdG8gaHlwZXJ2aXNv ci4KPiA+IFdlIG1heSBkZXNpZ24gaXQgbGF0ZXIuCj4gPiAKPiA+IAo+ID4gQ29udGVudDoKPiA+ ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KPiA+IAo+ID4gMS4gTW90aXZhdGlvbiBvZiB2SU9NTVUK PiA+ICAgICAxLjEgRW5hYmxlIG1vcmUgdGhhbiAyNTUgdmNwdXMKPiA+ICAgICAxLjIgU3VwcG9y dCBWRklPLWJhc2VkIHVzZXIgc3BhY2UgZHJpdmVyCj4gPiAgICAgMS4zIFN1cHBvcnQgZ3Vlc3Qg U2hhcmVkIFZpcnR1YWwgTWVtb3J5IChTVk0pCj4gPiAyLiBYZW4gdklPTU1VIEFyY2hpdGVjdHVy ZQo+ID4gICAgIDIuMSAydGggbGV2ZWwgdHJhbnNsYXRpb24gb3ZlcnZpZXcKPiA+ICAgICAyLjIg SW50ZXJydXB0IHJlbWFwcGluZyBvdmVydmlldwo+ID4gMy4gWGVuIGh5cGVydmlzb3IKPiA+ICAg ICAzLjEgTmV3IHZJT01NVSBoeXBlcmNhbGwgaW50ZXJmYWNlCj4gPiAgICAgMy4yIDJuZCBsZXZl bCB0cmFuc2xhdGlvbgo+ID4gICAgIDMuMyBJbnRlcnJ1cHQgcmVtYXBwaW5nCj4gPiAgICAgMy40 IDFzdCBsZXZlbCB0cmFuc2xhdGlvbgo+ID4gICAgIDMuNSBJbXBsZW1lbnRhdGlvbiBjb25zaWRl cmF0aW9uCj4gPiA0LiBRZW11Cj4gPiAgICAgNC4xIFFlbXUgdklPTU1VIGZyYW1ld29yawo+ID4g ICAgIDQuMiBEdW1teSB4ZW4tdklPTU1VIGRyaXZlcgo+ID4gICAgIDQuMyBRMzUgdnMuIGk0NDB4 Cj4gPiAgICAgNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVyCj4gPiAKPiA+IAo+ID4gMSBN b3RpdmF0aW9uIGZvciBYZW4gdklPTU1VCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiAK PiA+IDEuMSBFbmFibGUgbW9yZSB0aGFuIDI1NSB2Y3B1IHN1cHBvcnQKPiA+IEhQQyB2aXJ0dWFs aXphdGlvbiByZXF1aXJlcyBtb3JlIHRoYW4gMjU1IHZjcHVzIHN1cHBvcnQgaW4gYSBzaW5nbGUg Vk0KPiA+IHRvIG1lZXQgcGFyYWxsZWwgY29tcHV0aW5nIHJlcXVpcmVtZW50LiBNb3JlIHRoYW4g MjU1IHZjcHVzIHN1cHBvcnQKPiA+IHJlcXVpcmVzIGludGVycnVwdCByZW1hcHBpbmcgY2FwYWJp bGl0eSBwcmVzZW50IG9uIHZJT01NVSB0byBkZWxpdmVyCj4gPiBpbnRlcnJ1cHQgdG8gI3ZjcHUg PjI1NSBPdGhlcndpc2UgTGludXggZ3Vlc3QgZmFpbHMgdG8gYm9vdCB1cCB3aXRoID4yNTUKPiA+ IHZjcHVzIGlmIGludGVycnVwdCByZW1hcHBpbmcgaXMgYWJzZW50Lgo+ID4gCj4gPiAKPiA+IDEu MiBTdXBwb3J0IFZGSU8tYmFzZWQgdXNlciBzcGFjZSBkcml2ZXIgKGUuZy4gRFBESykgaW4gdGhl IGd1ZXN0Cj4gPiBJdCByZWxpZXMgb24gdGhlIDJuZCBsZXZlbCB0cmFuc2xhdGlvbiBjYXBhYmls aXR5IChJT1ZBLT5HUEEpIG9uCj4gPiB2SU9NTVUuIHBJT01NVSAybmQgbGV2ZWwgYmVjb21lcyBh IHNoYWRvd2luZyBzdHJ1Y3R1cmUgb2YKPiA+IHZJT01NVSB0byBpc29sYXRlIERNQSByZXF1ZXN0 cyBpbml0aWF0ZWQgYnkgdXNlciBzcGFjZSBkcml2ZXIuCj4gPiAKPiA+IAo+ID4gMS4zIFN1cHBv cnQgZ3Vlc3QgU1ZNIChTaGFyZWQgVmlydHVhbCBNZW1vcnkpCj4gPiBJdCByZWxpZXMgb24gdGhl IDFzdCBsZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSBjYXBhYmlsaXR5IChHVkEtPkdQQSkgb24KPiA+ IHZJT01NVS4gcElPTU1VIG5lZWRzIHRvIGVuYWJsZSBib3RoIDFzdCBsZXZlbCBhbmQgMm5kIGxl dmVsIHRyYW5zbGF0aW9uCj4gPiBpbiBuZXN0ZWQgbW9kZSAoR1ZBLT5HUEEtPkhQQSkgZm9yIHBh c3N0aHJvdWdoIGRldmljZS4gSUdEIHBhc3N0aHJvdWdoCj4gPiBpcyB0aGUgbWFpbiB1c2FnZSB0 b2RheSAodG8gc3VwcG9ydCBPcGVuQ0wgMi4wIFNWTSBmZWF0dXJlKS4gSW4gdGhlCj4gPiBmdXR1 cmUgU1ZNIG1pZ2h0IGJlIHVzZWQgYnkgb3RoZXIgSS9PIGRldmljZXMgdG9vLgo+ID4gCj4gPiAy LiBYZW4gdklPTU1VIEFyY2hpdGVjdHVyZQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiA+ IAo+ID4gCj4gPiAqIHZJT01NVSB3aWxsIGJlIGluc2lkZSBYZW4gaHlwZXJ2aXNvciBmb3IgZm9s bG93aW5nIGZhY3RvcnMKPiA+ICAgICAxKSBBdm9pZCByb3VuZCB0cmlwcyBiZXR3ZWVuIFFlbXUg YW5kIFhlbiBoeXBlcnZpc29yCj4gPiAgICAgMikgRWFzZSBvZiBpbnRlZ3JhdGlvbiB3aXRoIHRo ZSByZXN0IG9mIHRoZSBoeXBlcnZpc29yCj4gPiAgICAgMykgSFZNbGl0ZS9QVkggZG9lc24ndCB1 c2UgUWVtdQo+ID4gKiBEdW1teSB4ZW4tdklPTU1VIGluIFFlbXUgYXMgYSB3cmFwcGVyIG9mIG5l dyBoeXBlcmNhbGwgdG8gY3JlYXRlCj4gPiAvZGVzdG9yeSB2SU9NTVUgaW4gaHlwZXJ2aXNvciBh bmQgZGVhbCB3aXRoIHZpcnR1YWwgUENJIGRldmljZSdzIDJ0aAo+ID4gbGV2ZWwgdHJhbnNsYXRp b24uCj4gPiAKPiA+IDIuMSAydGggbGV2ZWwgdHJhbnNsYXRpb24gb3ZlcnZpZXcKPiA+IEZvciBW aXJ0dWFsIFBDSSBkZXZpY2UsIGR1bW15IHhlbi12SU9NTVUgZG9lcyB0cmFuc2xhdGlvbiBpbiB0 aGUKPiA+IFFlbXUgdmlhIG5ldyBoeXBlcmNhbGwuCj4gPiAKPiA+IEZvciBwaHlzaWNhbCBQQ0kg ZGV2aWNlLCB2SU9NTVUgaW4gaHlwZXJ2aXNvciBzaGFkb3dzIElPIHBhZ2UgdGFibGUgZnJvbQo+ ID4gSU9WQS0+R1BBIHRvIElPVkEtPkhQQSBhbmQgbG9hZCBwYWdlIHRhYmxlIHRvIHBoeXNpY2Fs IElPTU1VLgo+ID4gCj4gPiBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgMnRoIGxldmVsIHRy YW5zbGF0aW9uIGFyY2hpdGVjdHVyZS4KPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gPiB8UWVtdSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgfAo+ID4gfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIFZpcnR1YWwgICAgfCAgIHwKPiA+IHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgUENJIGRldmljZSAgIHwgICB8Cj4gPiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAg fAo+ID4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t LS0tKyAgIHwKPiA+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHxETUEgICAgICAgICB8Cj4gPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWICAgICAgICAgICAgfAo+ID4gfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIFJl cXVlc3QgICstLS0tLS0tLS0tLS0tLS0tKyAgIHwKPiA+IHwgIHwgICAgICAgICAgICAgICAgICAg ICs8LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgIHwgICB8Cj4gPiB8ICB8ICBEdW1teSB4ZW4g dklPTU1VICB8IFRhcmdldCBHUEEgfCAgTWVtb3J5IHJlZ2lvbiB8ICAgfAo+ID4gfCAgfCAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tPisgICAgICAgICAgICAgICAgfCAgIHwKPiA+IHwg ICstLS0tLS0tLS0rLS0tLS0tLS0tLSsgICAgICAgICAgICArLS0tLS0tLSstLS0tLS0tLSsgICB8 Cj4gPiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgfAo+ID4gfCAgICAgICAgICAgIHxIeXBlcmNhbGwgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwKPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rCj4gPiB8SHlwZXJ2aXNvciAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ID4gfCAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiA+IHwgICAgICAgICAgICB2ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gPiB8ICAgICArLS0t LS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ID4gfCAg ICAgfCAgIHZJT01NVSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwK PiA+IHwgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICB8Cj4gPiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgfAo+ID4gfCAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwKPiA+IHwgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gPiB8ICAgICB8IElPTU1VIGRyaXZlcnwgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ID4gfCAgICAgKy0tLS0tLSstLS0t LS0rICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiA+IHwgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gPiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwo+ ID4gfEhXICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViAgICAgICAg ICAgIHwKPiA+IHwgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0t LS0tLS0rICAgICB8Cj4gPiB8ICAgICB8ICAgSU9NTVUgICAgICstLS0tLS0tLS0tLS0tLS0tPisg IE1lbW9yeSAgICAgfCAgICAgfAo+ID4gfCAgICAgKy0tLS0tLSstLS0tLS0rICAgICAgICAgICAg ICAgICArLS0tLS0tLS0tLS0tLSsgICAgIHwKPiA+IHwgICAgICAgICAgICBeICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gPiB8ICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ID4gfCAgICAgKy0tLS0t LSstLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiA+IHwgICAg IHwgUENJIERldmljZSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4g PiB8ICAgICArLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKPiA+IAo+ID4gMi4yIEludGVycnVwdCByZW1hcHBpbmcgb3ZlcnZpZXcuCj4g PiBJbnRlcnJ1cHRzIGZyb20gdmlydHVhbCBkZXZpY2VzIGFuZCBwaHlzaWNhbCBkZXZpY2VzIHdp bGwgYmUgZGVsaXZlcmVkCj4gPiB0byB2TEFQSUMgZnJvbSB2SU9BUElDIGFuZCB2TVNJLiB2SU9N TVUgd2lsbCByZW1hcCBpbnRlcnJ1cHQgZHVyaW5nIHRoaXMKPiA+IHByb2NlZHVyZS4KPiA+IAo+ ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK PiA+IHxRZW11ICAgICAgICAgICAgICAgICAgICAgICB8Vk0gICAgICAgICAgICAgICAgICAgICB8 Cj4gPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsgICAg fAo+ID4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgRGV2aWNlIGRyaXZlciB8ICAg IHwKPiA+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLSstLS0tLS0tKyAg ICB8Cj4gPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAg ICAgfAo+ID4gfCAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgIHwgKy0tLS0tLS0tKy0tLS0tLS0r ICAgIHwKPiA+IHwgICAgICAgfCBWaXJ0dWFsIGRldmljZSB8ICB8IHwgIElSUSBzdWJzeXN0ZW0g fCAgICB8Cj4gPiB8ICAgICAgICstLS0tLS0tKy0tLS0tLS0tKyAgfCArLS0tLS0tLS0rLS0tLS0t LSsgICAgfAo+ID4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgXiAgICAg ICAgICAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICAgICB8Cj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+ID4gfGh5cGVydmlvc3IgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCBW SVJRICAgICAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSst LS0tLS0tLSsgICB8Cj4gPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICB2TEFQ SUMgICAgICB8ICAgfAo+ID4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICArLS0tLS0tLS0t Ky0tLS0tLS0tKyAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IF4gICAgICAgICAgICB8Cj4gPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgfAo+ID4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICArLS0tLS0t LS0tKy0tLS0tLS0tKyAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg IHZJT01NVSAgICAgIHwgICB8Cj4gPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICstLS0t LS0tLS0rLS0tLS0tLS0rICAgfAo+ID4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgXiAgICAgICAgICAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8Cj4gPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICst LS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+ID4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgdklPQVBJQy92TVNJICAgfCAgIHwKPiA+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAg Ky0tLS0rLS0tLSstLS0tLS0tLSsgICB8Cj4gPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgXiAgICBeICAgICAgICAgICAgfAo+ID4gfCAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tLSsgICAgfCAgICAgICAgICAgIHwKPiA+IHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gSFcgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfElSUQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0rCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg UENJIERldmljZSAgICAgIHwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0t LS0tLS0tLS0tLS0tLS0tKwo+ID4gCj4gPiAKPiA+IAo+ID4gCj4gPiAKPiA+IDMgWGVuIGh5cGVy dmlzb3IKPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiAKPiA+IDMuMSBOZXcgaHlwZXJjYWxsIFhF Tl9TWVNDVExfdmlvbW11X29wCj4gPiAxKSBEZWZpbml0aW9uIG9mICJzdHJ1Y3QgeGVuX3N5c2N0 bF92aW9tbXVfb3AiIGFzIG5ldyBoeXBlcmNhbGwgcGFyYW1ldGVyLgo+ID4gCj4gPiBzdHJ1Y3Qg eGVuX3N5c2N0bF92aW9tbXVfb3Agewo+ID4gICAgIHUzMiBjbWQ7Cj4gPiAgICAgdTMyIGRvbWlk Owo+ID4gICAgIHVuaW9uIHsKPiA+ICAgICAgICAgc3RydWN0IHsKPiA+ICAgICAgICAgICAgIHUz MiBjYXBhYmlsaXRpZXM7Cj4gPiAgICAgICAgIH0gcXVlcnlfY2FwYWJpbGl0aWVzOwo+ID4gICAg ICAgICBzdHJ1Y3Qgewo+ID4gICAgICAgICAgICAgdTMyIGNhcGFiaWxpdGllczsKPiA+ICAgICAg ICAgICAgIHU2NCBiYXNlX2FkZHJlc3M7Cj4gPiAgICAgICAgIH0gY3JlYXRlX2lvbW11Owo+ID4g ICAgICAgICBzdHJ1Y3Qgewo+ID4gICAgICAgICAgICAgdTggIGJ1czsKPiA+ICAgICAgICAgICAg IHU4ICBkZXZmbjsKPiA+ICAgICAgICAgICAgIHU2NCBpb3ZhOwo+ID4gICAgICAgICAgICAgdTY0 IHRyYW5zbGF0ZWRfYWRkcjsKPiA+ICAgICAgICAgICAgIHU2NCBhZGRyX21hc2s7IC8qIFRyYW5z bGF0aW9uIHBhZ2Ugc2l6ZSAqLwo+ID4gICAgICAgICAgICAgSU9NTVVBY2Nlc3NGbGFncyBwZXJt aXNzb247Cj4gPiAgICAgICAgIH0gMnRoX2xldmVsX3RyYW5zbGF0aW9uOwo+ID4gfTsKPiA+IAo+ ID4gdHlwZWRlZiBlbnVtIHsKPiA+ICAgICBJT01NVV9OT05FID0gMCwKPiA+ICAgICBJT01NVV9S TyAgID0gMSwKPiA+ICAgICBJT01NVV9XTyAgID0gMiwKPiA+ICAgICBJT01NVV9SVyAgID0gMywK PiA+IH0gSU9NTVVBY2Nlc3NGbGFnczsKPiA+IAo+ID4gCj4gPiBEZWZpbml0aW9uIG9mIFZJT01N VSBzdWJvcHM6Cj4gPiAjZGVmaW5lIFhFTl9TWVNDVExfdmlvbW11X3F1ZXJ5X2NhcGFiaWxpdHkg ICAgICAgIDAKPiA+ICNkZWZpbmUgWEVOX1NZU0NUTF92aW9tbXVfY3JlYXRlICAgICAgICAgICAg MQo+ID4gI2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9kZXN0cm95ICAgICAgICAgICAgMgo+ID4g I2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9kbWFfdHJhbnNsYXRpb25fZm9yX3ZwZGV2ICAgICAz Cj4gPiAKPiA+IERlZmluaXRpb24gb2YgVklPTU1VIGNhcGFiaWxpdGllcwo+ID4gI2RlZmluZSBY RU5fVklPTU1VX0NBUEFCSUxJVFlfMW5kX2xldmVsX3RyYW5zbGF0aW9uICAgICgxIDw8IDApCj4g PiAjZGVmaW5lIFhFTl9WSU9NTVVfQ0FQQUJJTElUWV8ybmRfbGV2ZWxfdHJhbnNsYXRpb24gICAg KDEgPDwgMSkKPiA+ICNkZWZpbmUgWEVOX1ZJT01NVV9DQVBBQklMSVRZX2ludGVycnVwdF9yZW1h cHBpbmcgICAgKDEgPDwgMikKPiA+IAo+ID4gCj4gPiAyKSBEZXNpZ24gZm9yIHN1Ym9wcwo+ID4g LSBYRU5fU1lTQ1RMX3Zpb21tdV9xdWVyeV9jYXBhYmlsaXR5Cj4gPiAgICAgICBHZXQgdklPTU1V IGNhcGFiaWxpdGllcygxc3QvMnRoIGxldmVsIHRyYW5zbGF0aW9uIGFuZCBpbnRlcnJ1cHQKPiA+ IHJlbWFwcGluZykuCj4gPiAKPiA+IC0gWEVOX1NZU0NUTF92aW9tbXVfY3JlYXRlCj4gPiAgICAg IENyZWF0ZSB2SU9NTVUgaW4gWGVuIGh5cGVydmlzb3Igd2l0aCBkb21faWQsIGNhcGFiaWxpdGll cyBhbmQgcmVnCj4gPiBiYXNlIGFkZHJlc3MuCj4gPiAKPiA+IC0gWEVOX1NZU0NUTF92aW9tbXVf ZGVzdHJveQo+ID4gICAgICBEZXN0b3J5IHZJT01NVSBpbiBYZW4gaHlwZXJ2aXNvciB3aXRoIGRv bV9pZCBhcyBwYXJhbWV0ZXJzLgo+ID4gCj4gPiAtIFhFTl9TWVNDVExfdmlvbW11X2RtYV90cmFu c2xhdGlvbl9mb3JfdnBkZXYKPiA+ICAgICAgVHJhbnNsYXRlIElPVkEgdG8gR1BBIGZvciBzcGVj aWZpZWQgdmlydHVhbCBQQ0kgZGV2aWNlIHdpdGggZG9tIGlkLAo+ID4gUENJIGRldmljZSdzIGJk ZiBhbmQgSU9WQSBhbmQgeGVuIGh5cGVydmlzb3IgcmV0dXJucyB0cmFuc2xhdGVkIEdQQSwKPiA+ IGFkZHJlc3MgbWFzayBhbmQgYWNjZXNzIHBlcm1pc3Npb24uCj4gPiAKPiA+IAo+ID4gMy4yIDJu ZCBsZXZlbCB0cmFuc2xhdGlvbgo+ID4gMSkgRm9yIHZpcnR1YWwgUENJIGRldmljZQo+ID4gWGVu IGR1bW15IHhlbi12SU9NTVUgaW4gUWVtdSB0cmFuc2xhdGVzIElPVkEgdG8gdGFyZ2V0IEdQQSB2 aWEgbmV3Cj4gPiBoeXBlcmNhbGwgd2hlbiBETUEgb3BlcmF0aW9uIGhhcHBlbnMuCj4gPiAKPiA+ IDIpIEZvciBwaHlzaWNhbCBQQ0kgZGV2aWNlCj4gPiBETUEgb3BlcmF0aW9ucyBnbyB0aG91Z2gg cGh5c2ljYWwgSU9NTVUgZGlyZWN0bHkgYW5kIElPIHBhZ2UgdGFibGUgZm9yCj4gPiBJT1ZBLT5I UEEgc2hvdWxkIGJlIGxvYWRlZCBpbnRvIHBoeXNpY2FsIElPTU1VLiBXaGVuIGd1ZXN0IHVwZGF0 ZXMKPiA+IFNlY29uZC1sZXZlbCBQYWdlLXRhYmxlIHBvaW50ZXIgZmllbGQsIGl0IHByb3ZpZGVz IElPIHBhZ2UgdGFibGUgZm9yCj4gPiBJT1ZBLT5HUEEuIHZJT01NVSBuZWVkcyB0byBzaGFkb3cg Mm5kIGxldmVsIHRyYW5zbGF0aW9uIHRhYmxlLCB0cmFuc2xhdGUKPiA+IEdQQS0+SFBBIGFuZCB1 cGRhdGUgc2hhZG93IHBhZ2UgdGFibGUoSU9WQS0+SFBBKSBwb2ludGVyIHRvIFNlY29uZC1sZXZl bAo+ID4gUGFnZS10YWJsZSBwb2ludGVyIHRvIGNvbnRleHQgZW50cnkgb2YgcGh5c2ljYWwgSU9N TVUuCj4gPiAKPiA+IE5vdyBhbGwgUENJIGRldmljZXMgaW4gc2FtZSBodm0gZG9tYWluIHNoYXJl IG9uZSBJTyBwYWdlIHRhYmxlCj4gPiAoR1BBLT5IUEEpIGluIHBoeXNpY2FsIElPTU1VIGRyaXZl ciBvZiBYZW4uIFRvIHN1cHBvcnQgMm5kIGxldmVsCj4gPiB0cmFuc2xhdGlvbiBvZiB2SU9NTVUs IElPTU1VIGRyaXZlciBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWRkcmVzcwo+ID4gc3BhY2Vz IHBlciBkZXZpY2UgZW50cnkuIFVzaW5nIGV4aXN0aW5nIElPIHBhZ2UgdGFibGUoR1BBLT5IUEEp Cj4gPiBkZWZhdWx0bHkgYW5kIHN3aXRjaCB0byBzaGFkb3cgSU8gcGFnZSB0YWJsZShJT1ZBLT5I UEEpIHdoZW4gMnRoIGxldmVsCj4gPiB0cmFuc2xhdGlvbiBmdW5jdGlvbiBpcyBlbmFibGVkLiBU aGVzZSBjaGFuZ2Ugd2lsbCBub3QgYWZmZWN0IGN1cnJlbnQKPiA+IFAyTSBsb2dpYy4KPiA+IAo+ ID4gMy4zIEludGVycnVwdCByZW1hcHBpbmcKPiA+IEludGVycnVwdHMgZnJvbSB2aXJ0dWFsIGRl dmljZXMgYW5kIHBoeXNpY2FsIGRldmljZXMgd2lsbCBiZSBkZWxpdmVyZWQKPiA+IHRvIHZsYXBp YyBmcm9tIHZJT0FQSUMgYW5kIHZNU0kuIEl0IG5lZWRzIHRvIGFkZCBpbnRlcnJ1cHQgcmVtYXBw aW5nCj4gPiBob29rcyBpbiB0aGUgdm1zaV9kZWxpdmVyKCkgYW5kIGlvYXBpY19kZWxpdmVyKCkg dG8gZmluZCB0YXJnZXQgdmxhcGljCj4gPiBhY2NvcmRpbmcgaW50ZXJydXB0IHJlbWFwcGluZyB0 YWJsZS4gVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIHRoZSBsb2dpYy4KPiA+IAoKVWg/IE1p c3NpbmcgZGlhZ3JhbT8KCj4gPiAKPiA+IDMuNCAxc3QgbGV2ZWwgdHJhbnNsYXRpb24KPiA+IFdo ZW4gbmVzdGVkIHRyYW5zbGF0aW9uIGlzIGVuYWJsZWQsIGFueSBhZGRyZXNzIGdlbmVyYXRlZCBi eSBmaXJzdC1sZXZlbAo+ID4gdHJhbnNsYXRpb24gaXMgdXNlZCBhcyB0aGUgaW5wdXQgYWRkcmVz cyBmb3IgbmVzdGluZyB3aXRoIHNlY29uZC1sZXZlbAo+ID4gdHJhbnNsYXRpb24uIFBoeXNpY2Fs IElPTU1VIG5lZWRzIHRvIGVuYWJsZSBib3RoIDFzdCBsZXZlbCBhbmQgMm5kIGxldmVsCj4gPiB0 cmFuc2xhdGlvbiBpbiBuZXN0ZWQgdHJhbnNsYXRpb24gbW9kZShHVkEtPkdQQS0+SFBBKSBmb3Ig cGFzc3Rocm91Z2gKPiA+IGRldmljZS4KPiA+IAo+ID4gVlQtZCBjb250ZXh0IGVudHJ5IHBvaW50 cyB0byBndWVzdCAxc3QgbGV2ZWwgdHJhbnNsYXRpb24gdGFibGUgd2hpY2gKPiA+IHdpbGwgYmUg bmVzdC10cmFuc2xhdGVkIGJ5IDJuZCBsZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSBhbmQgc28gaXQK PiA+IGNhbiBiZSBkaXJlY3RseSBsaW5rZWQgdG8gY29udGV4dCBlbnRyeSBvZiBwaHlzaWNhbCBJ T01NVS4KPiA+IAo+ID4gVG8gZW5hYmxlIDFzdCBsZXZlbCB0cmFuc2xhdGlvbiBpbiBWTQo+ID4g MSkgWGVuIElPTU1VIGRyaXZlciBlbmFibGVzIG5lc3RlZCB0cmFuc2xhdGlvbiBtb2RlCj4gPiAy KSBVcGRhdGUgR1BBIHJvb3Qgb2YgZ3Vlc3QgMXN0IGxldmVsIHRyYW5zbGF0aW9uIHRhYmxlIHRv IGNvbnRleHQgZW50cnkKPiA+IG9mIHBoeXNpY2FsIElPTU1VLgo+ID4gCj4gPiBBbGwgaGFuZGxl cyBhcmUgaW4gaHlwZXJ2aXNvciBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCBRZW11Lgo+ID4gCj4g PiAKPiA+IDMuNSBJbXBsZW1lbnRhdGlvbiBjb25zaWRlcmF0aW9uCj4gPiBMaW51eCBJbnRlbCBJ T01NVSBkcml2ZXIgd2lsbCBmYWlsIHRvIGJlIGxvYWRlZCB3aXRob3V0IDJ0aCBsZXZlbAo+ID4g dHJhbnNsYXRpb24gc3VwcG9ydCBldmVuIGlmIGludGVycnVwdCByZW1hcHBpbmcgYW5kIDF0aCBs ZXZlbAo+ID4gdHJhbnNsYXRpb24gYXJlIGF2YWlsYWJsZS4gVGhpcyBtZWFucyBpdCdzIG5lZWRl ZCB0byBlbmFibGUgMnRoIGxldmVsCj4gPiB0cmFuc2xhdGlvbiBmaXJzdCBiZWZvcmUgb3RoZXIg ZnVuY3Rpb25zLgo+ID4gCj4gPiAKPiA+IDQgUWVtdQo+ID4gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4gPiAKPiA+IDQuMSBRZW11IHZJT01NVSBmcmFtZXdvcmsKPiA+IFFlbXUgaGFzIGEgZnJhbWV3 b3JrIHRvIGNyZWF0ZSB2aXJ0dWFsIElPTU1VKGUuZy4gdmlydHVhbCBpbnRlbCBWVEQgYW5kCj4g PiBBTUQgSU9NTVUpIGFuZCByZXBvcnQgaW4gZ3Vlc3QgQUNQSSB0YWJsZS4gU28gZm9yIHhlbiBz aWRlLCBhIGR1bW15Cj4gPiB4ZW4tdklPTU1VIHdyYXBwZXIgaXMgcmVxdWlyZWQgdG8gY29ubmVj dCB3aXRoIGFjdHVhbCB2SU9NTVUgaW4gWGVuLgo+ID4gRXNwZWNpYWxseSBmb3IgMnRoIGxldmVs IHRyYW5zbGF0aW9uIG9mIHZpcnR1YWwgUENJIGRldmljZSBiZWNhdXNlCj4gPiBlbXVsYXRpb25z IG9mIHZpcnR1YWwgUENJIGRldmljZXMgYXJlIGluIHRoZSBRZW11LiBRZW11J3MgdklPTU1VCj4g PiBmcmFtZXdvcmsgcHJvdmlkZXMgY2FsbGJhY2sgdG8gZGVhbCB3aXRoIDJ0aCBsZXZlbCB0cmFu c2xhdGlvbiB3aGVuCj4gPiBETUEgb3BlcmF0aW9ucyBvZiB2aXJ0dWFsIFBDSSBkZXZpY2VzIGhh cHBlbi4KPiA+IAo+ID4gCj4gPiA0LjIgRHVtbXkgeGVuLXZJT01NVSBkcml2ZXIKPiA+IDEpIFF1 ZXJ5IHZJT01NVSBjYXBhYmlsaXR5KEUsRyBETUEgdHJhbnNsYXRpb24sIEludGVycnVwdCByZW1h cHBpbmcgYW5kCj4gPiBTaGFyZSBWaXJ0dWFsIE1lbW9yeSkgdmlhIGh5cGVyY2FsbC4KPiA+IAo+ ID4gMikgQ3JlYXRlIHZJT01NVSBpbiBYZW4gaHlwZXJ2aXNvciB2aWEgbmV3IGh5cGVyY2FsbCB3 aXRoIERSSFUgcmVnaXN0ZXIKPiA+IGFkZHJlc3MgYW5kIGRlc2lyZWQgY2FwYWJpbGl0eSBhcyBw YXJhbWV0ZXJzLiBEZXN0cm95IHZJT01NVSB3aGVuIFZNIGlzCj4gPiBjbG9zZWQuCj4gPiAKPiA+ IDMpIFZpcnR1YWwgUENJIGRldmljZSdzIDJ0aCBsZXZlbCB0cmFuc2xhdGlvbgo+ID4gUWVtdSBh bHJlYWR5IHByb3ZpZGVzIERNQSB0cmFuc2xhdGlvbiBob29rLiBJdCdzIGNhbGxlZCB3aGVuIERN QQo+ID4gdHJhbnNsYXRpb24gb2YgdmlydHVhbCBQQ0kgZGV2aWNlIGhhcHBlbnMuIFRoZSBkdW1t eSB4ZW4tdklPTU1VIHBhc3Nlcwo+ID4gZGV2aWNlIGJkZiBhbmQgSU9WQSBpbnRvIFhlbiBoeXBl cnZpc29yIHZpYSBuZXcgaW9tbXUgaHlwZXJjYWxsIGFuZAo+ID4gcmV0dXJuIGJhY2sgdHJhbnNs YXRlZCBHUEEuCj4gPiAKPiA+IAo+ID4gNC4zIFEzNSB2cyBpNDQweAo+ID4gVlQtRCBpcyBpbnRy b2R1Y2VkIHNpbmNlIFEzNSBjaGlwc2V0LiBQcmV2aW91cyBjb25jZXJuIHdhcyB0aGF0IElPTU1V CgpzL3NpbmNlL3dpdGgvCj4gPiBkcml2ZXIgaGFzIGFzc3VtcHRpb24gdGhhdCBWVEQgb25seSBl eGlzdHMgb24gUTM1IGFuZCBuZXdlciBjaGlwc2V0IGFuZAo+ID4gd2UgaGF2ZSB0byBlbmFibGUg UTM1IGZpcnN0Lgo+ID4gCj4gPiBDb25zdWx0ZWQgd2l0aCBMaW51eC9XaW5kb3dzIElPTU1VIGRy aXZlciBleHBlcnRzIGFuZCBnZXQgdGhhdCB0aGVzZQo+ID4gZHJpdmVycyBkb2Vzbid0IGhhdmUg c3VjaCBhc3N1bXB0aW9uLiBTbyB3ZSBtYXkgc2tpcCBRMzUgaW1wbGVtZW50YXRpb24KPiA+IGFu ZCBjYW4gZW11bGF0ZSB2SU9NTVUgb24gSTQ0MHggY2hpcHNldC4gS1ZNIGFscmVhZHkgaGF2ZSB2 SU9NTVUgc3VwcG9ydAo+ID4gd2l0aCB2aXJ0dWFsIFBDSSBkZXZpY2UncyBETUEgdHJhbnNsYXRp b24gYW5kIGludGVycnVwdCByZW1hcHBpbmcuIFdlCj4gPiBhcmUgdXNpbmcgS1ZNIHRvIGRvIGV4 cGVyaW1lbnQgb2YgYWRkaW5nIHZJT01NVSBvbiB0aGUgSTQ0MHggYW5kIHRlc3QKPiA+IExpbnV4 L1dpbmRvd3MgZ3Vlc3QuIFdpbGwgcmVwb3J0IGJhY2sgd2hlbiBoYXZlIHNvbWUgcmVzdWx0cy4K CkFueSByZXN1bHRzPwo+ID4gCj4gPiAKPiA+IDQuNCBSZXBvcnQgdklPTU1VIHRvIGh2bWxvYWRl cgo+ID4gSHZtbG9hZGVyIGlzIGluIGNoYXJnZSBvZiBidWlsZGluZyBBQ1BJIHRhYmxlcyBmb3Ig R3Vlc3QgT1MgYW5kIE9TCj4gPiBwcm9iZXMgSU9NTVUgdmlhIEFDUEkgRE1BUiB0YWJsZS4gU28g aHZtbG9kZXIgbmVlZHMgdG8ga25vdyB3aGV0aGVyCj4gPiB2SU9NTVUgaXMgZW5hYmxlZCBvciBu b3QgYW5kIGl0cyBjYXBhYmlsaXR5IHRvIHByZXBhcmUgQUNQSSBETUFSIHRhYmxlCj4gPiBmb3Ig R3Vlc3QgT1MuCj4gPiAKPiA+IFRoZXJlIGFyZSB0aHJlZSB3YXlzIHRvIGRvIHRoYXQuCj4gPiAx KSBFeHRlbmQgc3RydWN0IGh2bV9pbmZvX3RhYmxlIGFuZCBhZGQgdmFyaWFibGVzIGluIHRoZSBz dHJ1Y3QKPiA+IGh2bV9pbmZvX3RhYmxlIHRvIHBhc3MgdklPTU1VIGluZm9ybWF0aW9uIHRvIGh2 bWxvYWRlci4gQnV0IHRoaXMKPiA+IHJlcXVpcmVzIHRvIGFkZCBuZXcgeGMgaW50ZXJmYWNlIHRv IHVzZSBzdHJ1Y3QgaHZtX2luZm9fdGFibGUgaW4gdGhlIFFlbXUuCj4gPiAKPiA+IDIpIFBhc3Mg dklPTU1VIGluZm9ybWF0aW9uIHRvIGh2bWxvYWRlciB2aWEgWGVuc3RvcmUKPiA+IAo+ID4gMykg QnVpbGQgQUNQSSBETUFSIHRhYmxlIGluIFFlbXUgYW5kIHBhc3MgaXQgdG8gaHZtbG9hZGVyIHZp YSBYZW5zdG9yZS4KPiA+IFRoaXMgc29sdXRpb24gaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB2 TlZESU1NIGRlc2lnbig0LjMuMQo+ID4gQnVpbGRpbmcgR3Vlc3QgQUNQSSBUYWJsZXMKPiA+IGh0 dHA6Ly93d3cuZ29zc2FtZXItdGhyZWFkcy5jb20vbGlzdHMveGVuL2RldmVsLzQzOTc2NikuCj4g PiAKPiA+IFRoZSB0aGlyZCBvcHRpb24gc2VlbXMgbW9yZSBjbGVhciBhbmQgaHZtbG9hZGVyIGRv ZXNuJ3QgbmVlZCB0byBkZWFsCj4gPiB3aXRoIHZJT01NVSBzdHVmZnMgYW5kIGp1c3QgcGFzcyB0 aHJvdWdoIERNQVIgdGFibGUgdG8gR3Vlc3QgT1MuIEFsbAo+ID4gdklPTU1VIHNwZWNpZmljIHN0 dWZmcyB3aWxsIGJlIHByb2Nlc3NlZCBpbiB0aGUgZHVtbXkgeGVuLXZJT01NVSBkcml2ZXIuCgov bWUgbm9kcy4gVGhhdCBkb2VzIHNlZW0gdGhlIGJlc3Qgb3B0aW9uLgo+ID4gCj4gPiAKPiA+IAo+ IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gWGVu LWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4gaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==