From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: Xen virtual IOMMU high level design doc V2 Date: Tue, 18 Oct 2016 20:17:59 +0100 Message-ID: <4a8616a2-a576-aadc-993f-3d349f91f310@citrix.com> References: <5746B3FA.6020401@intel.com> <5746DF93.8090803@citrix.com> <57480327.60609@intel.com> <78d122f0-c773-7fa3-1258-c551937c508e@intel.com> <575081E8.6070609@citrix.com> <57518B78.6060604@citrix.com> <647d0b74-cecc-db33-1033-f7201c8a0af5@intel.com> <13fa96c1-4e66-e8a0-3b66-1c93ad2b6543@intel.com> <577BD8D002000078000FB3F7@prv-mh.provo.novell.com> <3f375a3e-0bbb-ca70-9ea2-e8a970a5dc72@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <3f375a3e-0bbb-ca70-9ea2-e8a970a5dc72@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Lan Tianyu , Jan Beulich , Kevin Tian , "yang.zhang.wz@gmail.com" , Jun Nakajima , Stefano Stabellini Cc: "anthony.perard@citrix.com" , xuquan8@huawei.com, "xen-devel@lists.xensource.com" , "ian.jackson@eu.citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gMTgvMTAvMTYgMTU6MTQsIExhbiBUaWFueXUgd3JvdGU6Cj4gQ2hhbmdlIHNpbmNlIFYxOgo+ ICAgICAxKSBVcGRhdGUgbW90aXZhdGlvbiBmb3IgWGVuIHZJT01NVSAtIDI4OCB2Y3B1cyBzdXBw b3J0IHBhcnQKPiAgICAgMikgQ2hhbmdlIGRlZmluaXRpb24gb2Ygc3RydWN0IHhlbl9zeXNjdGxf dmlvbW11X29wCj4gICAgIDMpIFVwZGF0ZSAiMy41IEltcGxlbWVudGF0aW9uIGNvbnNpZGVyYXRp b24iIHRvIGV4cGxhaW4gd2h5IHdlCj4gbmVlZHMgdG8gZW5hYmxlIGwyIHRyYW5zbGF0aW9uIGZp cnN0Lgo+ICAgICA0KSBVcGRhdGUgIjQuMyBRMzUgdnMgSTQ0MHgiIC0gTGludXgvV2luZG93cyBW VEQgZHJpdmVycyBjYW4gd29yawo+IG9uIHRoZSBlbXVsYXRlZCBJNDQwIGNoaXBzZXQuCj4gICAg IDUpIFJlbW92ZSBzdGFsZSBzdGF0ZW1lbnQgaW4gdGhlICIzLjMgSW50ZXJydXB0IHJlbWFwcGlu ZyIKPgo+IENvbnRlbnQ6Cj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+Cj4gMS4gTW90aXZhdGlv biBvZiB2SU9NTVUKPiAgICAgMS4xIEVuYWJsZSBtb3JlIHRoYW4gMjU1IHZjcHVzCj4gICAgIDEu MiBTdXBwb3J0IFZGSU8tYmFzZWQgdXNlciBzcGFjZSBkcml2ZXIKPiAgICAgMS4zIFN1cHBvcnQg Z3Vlc3QgU2hhcmVkIFZpcnR1YWwgTWVtb3J5IChTVk0pCj4gMi4gWGVuIHZJT01NVSBBcmNoaXRl Y3R1cmUKPiAgICAgMi4xIGwyIHRyYW5zbGF0aW9uIG92ZXJ2aWV3Cj4gICAgIDIuMiBJbnRlcnJ1 cHQgcmVtYXBwaW5nIG92ZXJ2aWV3Cj4gMy4gWGVuIGh5cGVydmlzb3IKPiAgICAgMy4xIE5ldyB2 SU9NTVUgaHlwZXJjYWxsIGludGVyZmFjZQo+ICAgICAzLjIgbDIgdHJhbnNsYXRpb24KPiAgICAg My4zIEludGVycnVwdCByZW1hcHBpbmcKPiAgICAgMy40IGwxIHRyYW5zbGF0aW9uCj4gICAgIDMu NSBJbXBsZW1lbnRhdGlvbiBjb25zaWRlcmF0aW9uCj4gNC4gUWVtdQo+ICAgICA0LjEgUWVtdSB2 SU9NTVUgZnJhbWV3b3JrCj4gICAgIDQuMiBEdW1teSB4ZW4tdklPTU1VIGRyaXZlcgo+ICAgICA0 LjMgUTM1IHZzLiBpNDQweAo+ICAgICA0LjQgUmVwb3J0IHZJT01NVSB0byBodm1sb2FkZXIKPgo+ Cj4gMSBNb3RpdmF0aW9uIGZvciBYZW4gdklPTU1VCj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ Cj4gMS4xIEVuYWJsZSBtb3JlIHRoYW4gMjU1IHZjcHUgc3VwcG9ydAo+IEhQQyBjbG91ZCBzZXJ2 aWNlIHJlcXVpcmVzIFZNIHByb3ZpZGVzIGhpZ2ggcGVyZm9ybWFuY2UgcGFyYWxsZWwKPiBjb21w dXRpbmcgYW5kIHdlIGhvcGUgdG8gY3JlYXRlIGEgaHVnZSBWTSB3aXRoID4yNTUgdmNwdSBvbiBv bmUgbWFjaGluZQo+IHRvIG1lZXQgc3VjaCByZXF1aXJlbWVudC5QaW5nIGVhY2ggdmNwdXMgb24g c2VwYXJhdGVkIHBjcHVzLiBNb3JlIHRoYW4KClBpbiA/CgpBbHNvLCBncmFtbWF0aWNhbGx5IHNw ZWFraW5nLCBJIHRoaW5rIHlvdSBtZWFuICJlYWNoIHZjcHUgdG8gc2VwYXJhdGUKcGNwdXMiLgoK PiAyNTUgdmNwdXMgc3VwcG9ydCByZXF1aXJlcyBYMkFQSUMgYW5kIExpbnV4IGRpc2FibGVzIFgy QVBJQyBtb2RlIGlmCj4gdGhlcmUgaXMgbm8gaW50ZXJydXB0IHJlbWFwcGluZyBmdW5jdGlvbiB3 aGljaCBpcyBwcmVzZW50IGJ5IHZJT01NVS4KPiBJbnRlcnJ1cHQgcmVtYXBwaW5nIGZ1bmN0aW9u IGhlbHBzIHRvIGRlbGl2ZXIgaW50ZXJydXB0IHRvICN2Y3B1ID4yNTUuCgpUaGlzIGlzIG9ubHkg YSByZXF1aXJlbWVudCBmb3IgeGFwaWMgaW50ZXJydXB0IHNvdXJjZXMuICB4MmFwaWMKaW50ZXJy dXB0IHNvdXJjZXMgYWxyZWFkeSBkZWxpdmVyIGNvcnJlY3RseS4KCj4gU28gd2UgbmVlZCB0byBh ZGQgdklPTU1VIGJlZm9yZSBlbmFibGluZyA+MjU1IHZjcHVzLgo+Cj4gMS4yIFN1cHBvcnQgVkZJ Ty1iYXNlZCB1c2VyIHNwYWNlIGRyaXZlciAoZS5nLiBEUERLKSBpbiB0aGUgZ3Vlc3QKPiBJdCBy ZWxpZXMgb24gdGhlIGwyIHRyYW5zbGF0aW9uIGNhcGFiaWxpdHkgKElPVkEtPkdQQSkgb24KPiB2 SU9NTVUuIHBJT01NVSBsMiBiZWNvbWVzIGEgc2hhZG93aW5nIHN0cnVjdHVyZSBvZgo+IHZJT01N VSB0byBpc29sYXRlIERNQSByZXF1ZXN0cyBpbml0aWF0ZWQgYnkgdXNlciBzcGFjZSBkcml2ZXIu CgpIb3cgaXMgdXNlcnNwYWNlIHN1cHBvc2VkIHRvIGRyaXZlIHRoaXMgaW50ZXJmYWNlPyAgSSBj YW4ndCBwaWN0dXJlIGhvdwppdCB3b3VsZCBmdW5jdGlvbi4KCj4KPgo+IDEuMyBTdXBwb3J0IGd1 ZXN0IFNWTSAoU2hhcmVkIFZpcnR1YWwgTWVtb3J5KQo+IEl0IHJlbGllcyBvbiB0aGUgbDEgdHJh bnNsYXRpb24gdGFibGUgY2FwYWJpbGl0eSAoR1ZBLT5HUEEpIG9uCj4gdklPTU1VLiBwSU9NTVUg bmVlZHMgdG8gZW5hYmxlIGJvdGggbDEgYW5kIGwyIHRyYW5zbGF0aW9uIGluIG5lc3RlZAo+IG1v ZGUgKEdWQS0+R1BBLT5IUEEpIGZvciBwYXNzdGhyb3VnaCBkZXZpY2UuIElHRCBwYXNzdGhyb3Vn aAo+IGlzIHRoZSBtYWluIHVzYWdlIHRvZGF5ICh0byBzdXBwb3J0IE9wZW5DTCAyLjAgU1ZNIGZl YXR1cmUpLiBJbiB0aGUKPiBmdXR1cmUgU1ZNIG1pZ2h0IGJlIHVzZWQgYnkgb3RoZXIgSS9PIGRl dmljZXMgdG9vLgoKQXMgYW4gYXNpZGUsIGhvdyBpcyBJR0QgaW50ZW5kaW5nIHRvIHN1cHBvcnQg U1ZNPyAgV2lsbCBpdCBiZSB3aXRoIFBDSWUKQVRTL1BBU0lELCBvciBzb21ldGhpbmcgcmF0aGVy IG1vcmUgbWFnaWMgYXMgSUdEIGlzIG9uIHRoZSBzYW1lIHBpZWNlIG9mCnNpbGljb24/Cgo+Cj4g Mi4gWGVuIHZJT01NVSBBcmNoaXRlY3R1cmUKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+Cj4K PiAqIHZJT01NVSB3aWxsIGJlIGluc2lkZSBYZW4gaHlwZXJ2aXNvciBmb3IgZm9sbG93aW5nIGZh Y3RvcnMKPiAgICAgMSkgQXZvaWQgcm91bmQgdHJpcHMgYmV0d2VlbiBRZW11IGFuZCBYZW4gaHlw ZXJ2aXNvcgo+ICAgICAyKSBFYXNlIG9mIGludGVncmF0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhl IGh5cGVydmlzb3IKPiAgICAgMykgSFZNbGl0ZS9QVkggZG9lc24ndCB1c2UgUWVtdQo+ICogRHVt bXkgeGVuLXZJT01NVSBpbiBRZW11IGFzIGEgd3JhcHBlciBvZiBuZXcgaHlwZXJjYWxsIHRvIGNy ZWF0ZQo+IC9kZXN0b3J5IHZJT01NVSBpbiBoeXBlcnZpc29yIGFuZCBkZWFsIHdpdGggdmlydHVh bCBQQ0kgZGV2aWNlJ3MgbDIKPiB0cmFuc2xhdGlvbi4KPgo+IDIuMSBsMiB0cmFuc2xhdGlvbiBv dmVydmlldwo+IEZvciBWaXJ0dWFsIFBDSSBkZXZpY2UsIGR1bW15IHhlbi12SU9NTVUgZG9lcyB0 cmFuc2xhdGlvbiBpbiB0aGUKPiBRZW11IHZpYSBuZXcgaHlwZXJjYWxsLgo+Cj4gRm9yIHBoeXNp Y2FsIFBDSSBkZXZpY2UsIHZJT01NVSBpbiBoeXBlcnZpc29yIHNoYWRvd3MgSU8gcGFnZSB0YWJs ZSBmcm9tCj4gSU9WQS0+R1BBIHRvIElPVkEtPkhQQSBhbmQgbG9hZCBwYWdlIHRhYmxlIHRvIHBo eXNpY2FsIElPTU1VLgo+Cj4gVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGwyIHRyYW5zbGF0 aW9uIGFyY2hpdGVjdHVyZS4KCldoaWNoIHNjZW5hcmlvIGlzIHRoaXM/ICBJcyB0aGlzIHRoZSBw YXNzdGhyb3VnaCBjYXNlIHdoZXJlIHRoZSBRZW11ClZpcnR1YWwgUENJIGRldmljZSBpcyBhIHNo YWRvdyBvZiB0aGUgcmVhbCBQQ0kgZGV2aWNlIGluIGhhcmR3YXJlPwoKPiArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+IHxRZW11ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICB8Cj4gfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIFZpcnR1YWwgICAgfCAgIHwK PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIFBDSSBkZXZpY2UgICB8 ICAgfAo+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICB8Cj4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t LS0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8RE1BICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFYgICAgICAgICAgICB8Cj4gfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIFJl cXVlc3QgICstLS0tLS0tLS0tLS0tLS0tKyAgIHwKPiB8ICB8ICAgICAgICAgICAgICAgICAgICAr PC0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICB8ICAgfAo+IHwgIHwgIER1bW15IHhlbiB2SU9N TVUgIHwgVGFyZ2V0IEdQQSB8ICBNZW1vcnkgcmVnaW9uIHwgICB8Cj4gfCAgfCAgICAgICAgICAg ICAgICAgICAgKy0tLS0tLS0tLS0tPisgICAgICAgICAgICAgICAgfCAgIHwKPiB8ICArLS0tLS0t LS0tKy0tLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0tLS0rLS0tLS0tLS0rICAgfAo+IHwgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4g fCAgICAgICAgICAgIHxIeXBlcmNhbGwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKwo+IHxIeXBlcnZpc29yICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgfAo+IHwgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gfCAgICAgfCAgIHZJT01NVSAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICArLS0tLS0tKy0tLS0tLSsg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gfCAgICAgICAgICAg IHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICAr LS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+IHwg ICAgIHwgSU9NTVUgZHJpdmVyfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 Cj4gfCAgICAgKy0tLS0tLSstLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwKPiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgfAo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rCj4gfEhXICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgViAgICAgICAgICAgIHwKPiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLS0tKyAgICAgfAo+IHwgICAgIHwgICBJT01NVSAgICAgKy0tLS0tLS0t LS0tLS0tLS0+KyAgTWVtb3J5ICAgICB8ICAgICB8Cj4gfCAgICAgKy0tLS0tLSstLS0tLS0rICAg ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLSsgICAgIHwKPiB8ICAgICAgICAgICAgXiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gfCAgICAgKy0t LS0tLSstLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiB8ICAg ICB8IFBDSSBEZXZpY2UgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ IHwgICAgICstLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKPgo+IDIuMiBJbnRlcnJ1cHQgcmVtYXBwaW5nIG92ZXJ2aWV3Lgo+IEludGVycnVw dHMgZnJvbSB2aXJ0dWFsIGRldmljZXMgYW5kIHBoeXNpY2FsIGRldmljZXMgd2lsbCBiZSBkZWxp dmVyZWQKPiB0byB2TEFQSUMgZnJvbSB2SU9BUElDIGFuZCB2TVNJLiB2SU9NTVUgd2lsbCByZW1h cCBpbnRlcnJ1cHQgZHVyaW5nIHRoaXMKPiBwcm9jZWR1cmUuCj4KPiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+IHxRZW11ICAgICAgICAgICAg ICAgICAgICAgICB8Vk0gICAgICAgICAgICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0rICAgIHwKPiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB8ICBEZXZpY2UgZHJpdmVyIHwgICAgfAo+IHwgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICstLS0tLS0tLSstLS0tLS0tKyAgICB8Cj4gfCAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgIHwKPiB8ICAgICAgICstLS0tLS0tLS0tLS0t LS0tKyAgfCArLS0tLS0tLS0rLS0tLS0tLSsgICAgfAo+IHwgICAgICAgfCBWaXJ0dWFsIGRldmlj ZSB8ICB8IHwgIElSUSBzdWJzeXN0ZW0gfCAgICB8Cj4gfCAgICAgICArLS0tLS0tLSstLS0tLS0t LSsgIHwgKy0tLS0tLS0tKy0tLS0tLS0rICAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICBeICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiB8aHlwZXJ2aW9zciAgICAgfCAgICAgICAgICAg ICAgICAgICAgICB8IFZJUlEgICAgICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAg Ky0tLS0tLS0tLSstLS0tLS0tLSsgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAgdkxBUElDICAgICAgfCAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICst LS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIF4gICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICstLS0t LS0tLS0rLS0tLS0tLS0rICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg IHZJT01NVSAgICAgIHwgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICArLS0tLS0t LS0tKy0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICBeICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICArLS0tLS0tLS0t Ky0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICB2SU9BUElD L3ZNU0kgICB8ICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0rLS0tLSst LS0tLS0tLSsgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIF4gICAgXiAg ICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAgICB8ICAg ICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICB8Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKPiBIVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8SVJRCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgUENJIERldmljZSAgICAgIHwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCj4KPgo+Cj4K PiAzIFhlbiBoeXBlcnZpc29yCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IDMuMSBOZXcgaHlwZXJj YWxsIFhFTl9TWVNDVExfdmlvbW11X29wCj4gVGhpcyBoeXBlcmNhbGwgc2hvdWxkIGFsc28gc3Vw cG9ydCBwdiBJT01NVSB3aGljaCBpcyBzdGlsbCB1bmRlciBSRkMKPiByZXZpZXcuIEhlcmUgb25s eSBjb3ZlcnMgbm9uLXB2IHBhcnQuCj4KPiAxKSBEZWZpbml0aW9uIG9mICJzdHJ1Y3QgeGVuX3N5 c2N0bF92aW9tbXVfb3AiIGFzIG5ldyBoeXBlcmNhbGwKPiBwYXJhbWV0ZXIuCgpXaHkgZGlkIHlv dSBjaG9vc2Ugc3lzY3RsPyAgQXMgdGhlc2UgYXJlIHBlci1kb21haW4sIGRvbWN0bCB3b3VsZCBi ZSBhCm1vcmUgbG9naWNhbCBjaG9pY2UuICBIb3dldmVyLCBuZWl0aGVyIG9mIHRoZXNlIHNob3Vs ZCBiZSB1c2FibGUgYnkKUWVtdSwgYW5kIHdlIGFyZSB0cnlpbmcgdG8gc3BsaXQgb3V0ICJub3Jt YWwgcWVtdSBvcGVyYXRpb25zIiBpbnRvIGRtb3BzCndoaWNoIGNhbiBiZSBzYWZlbHkgZGVwcml2 aWxlZ2VkLgoKVGhpcyBmdW5jdGlvbmFsaXR5IHNlZW1zIGxpa2UgaXQgbGl2ZXMgbG9naWNhbGx5 IGJlc2lkZSB0aGUgaW9yZXEgc2VydmVyCmh5cGVyY2FsbHMsIHdoZXJldmVyIHRoZXkgZXZlbnR1 YWxseSBlbmQgdXAuCgo+Cj4gc3RydWN0IHhlbl9zeXNjdGxfdmlvbW11X29wIHsKPiAgICAgdTMy IGNtZDsKPiAgICAgdTMyIGRvbWlkOwo+ICAgICB1bmlvbiB7Cj4gICAgICAgICBzdHJ1Y3Qgewo+ ICAgICAgICAgICAgIHUzMiBjYXBhYmlsaXRpZXM7Cj4gICAgICAgICB9IHF1ZXJ5X2NhcGFiaWxp dGllczsKPiAgICAgICAgIHN0cnVjdCB7Cj4gICAgICAgICAgICAgdTMyIGNhcGFiaWxpdGllczsK PiAgICAgICAgICAgICB1NjQgYmFzZV9hZGRyZXNzOwo+ICAgICAgICAgfSBjcmVhdGVfaW9tbXU7 Cj4gICAgICAgICAgICAgc3RydWN0IHsKPiAgICAgICAgICAgICAvKiBJTiBwYXJhbWV0ZXJzLiAq Lwo+ICAgICAgICAgICAgIHUxNiBzZWdtZW50Owo+ICAgICAgICAgICAgICAgICAgICAgdTggIGJ1 czsKPiAgICAgICAgICAgICAgICAgICAgIHU4ICBkZXZmbjsKCkkgdGhpbmsgdGhpcyB3b3VsZCBi ZSBjbGVhbmVyIGFzIHUzMiB2c2JkZiwgd2hpY2ggbWFrZXMgaXQgY2xlYXIgd2hpY2gKYWRkcmVz cyBzcGFjZSB0byBsb29rIGZvciBzYmRmIGluLgoKPiAgICAgICAgICAgICAgICAgICAgIHU2NCBp b3ZhOwo+ICAgICAgICAgICAgICAgICAvKiBPdXQgcGFyYW1ldGVycy4gKi8KPiAgICAgICAgICAg ICAgICAgICAgIHU2NCB0cmFuc2xhdGVkX2FkZHI7Cj4gICAgICAgICAgICAgICAgICAgICB1NjQg YWRkcl9tYXNrOyAvKiBUcmFuc2xhdGlvbiBwYWdlIHNpemUgKi8KPiAgICAgICAgICAgICAgICAg ICAgIElPTU1VQWNjZXNzRmxhZ3MgcGVybWlzc29uOwoKSG93IGlzIHRoaXMgdHJhbnNsYXRpb24g aW50ZW5kZWQgdG8gYmUgdXNlZD8gIEhvdyBkbyB5b3UgcGxhbiB0byBhdm9pZApyYWNlIGNvbmRp dGlvbnMgd2hlcmUgcWVtdSByZXF1ZXN0cyBhIHRyYW5zbGF0aW9uLCByZWNlaXZlcyBvbmUsIHRo ZQpndWVzdCBpbnZhbGlkYXRlZCB0aGUgbWFwcGluZywgYW5kIHRoZW4gcWVtdSB0cmllcyB0byB1 c2UgaXRzIHRyYW5zbGF0ZWQKYWRkcmVzcz8KClRoZXJlIGFyZSBvbmx5IHR3byB3YXlzIEkgY2Fu IHNlZSBvZiBkb2luZyB0aGlzIHJhY2UtZnJlZS4gIE9uZSBpcyB0bwppbXBsZW1lbnQgYSAibWVt Y3B5IHdpdGggdHJhbnNsYXRpb24iIGh5cGVyY2FsbCwgYW5kIHRoZSBvdGhlciBpcyB0bwpyZXF1 aXJlIHRoZSB1c2Ugb2YgQVRTIGluIHRoZSB2SU9NTVUsIHdoZXJlIHRoZSBndWVzdCBPUyBpcyBy ZXF1aXJlZCB0bwp3YWl0IGZvciBhIHBvc2l0aXZlIHJlc3BvbnNlIGZyb20gdGhlIHZJT01NVSBi ZWZvcmUgaXQgY2FuIHNhZmVseSByZXVzZQp0aGUgbWFwcGluZy4KClRoZSBmb3JtZXIgYmVoYXZl cyBsaWtlIHJlYWwgaGFyZHdhcmUgaW4gdGhhdCBhbiBpbnRlcm1lZGlhdGUgZW50aXR5CnBlcmZv cm1zIHRoZSB0cmFuc2xhdGlvbiB3aXRob3V0IGludGVyYWN0aW5nIHdpdGggdGhlIERNQSBzb3Vy Y2UuICBUaGUKbGF0dGVyIGV4cGxpY2l0bHkgZXhwb3NpbmcgdGhlIGZhY3QgdGhhdCBjYWNoaW5n IGlzIGdvaW5nIG9uIGF0IHRoZQplbmRwb2ludCB0byB0aGUgT1MuCgo+ICAgICAgICAgICAgIH0g bDJfdHJhbnNsYXRpb247ICAgICAgIAo+IH07Cj4KPiB0eXBlZGVmIGVudW0gewo+ICAgICBJT01N VV9OT05FID0gMCwKPiAgICAgSU9NTVVfUk8gICA9IDEsCj4gICAgIElPTU1VX1dPICAgPSAyLAo+ ICAgICBJT01NVV9SVyAgID0gMywKPiB9IElPTU1VQWNjZXNzRmxhZ3M7CgpObyBlbnVtZXJhdGlv bnMgaW4gYW4gQUJJIHBsZWFzZS4gIFRoZXkgYXJlIG5vdCBzdGFibGUgaW4gQy4gIFBsZWFzZSB1 cwphIHUzMiBhbmQgbW9yZSAjZGVmaW5lJ3MKCj4KPgo+IERlZmluaXRpb24gb2YgVklPTU1VIHN1 Ym9wczoKPiAjZGVmaW5lIFhFTl9TWVNDVExfdmlvbW11X3F1ZXJ5X2NhcGFiaWxpdHkgICAgICAg IDAKPiAjZGVmaW5lIFhFTl9TWVNDVExfdmlvbW11X2NyZWF0ZSAgICAgICAgICAgIDEKPiAjZGVm aW5lIFhFTl9TWVNDVExfdmlvbW11X2Rlc3Ryb3kgICAgICAgICAgICAyCj4gI2RlZmluZSBYRU5f U1lTQ1RMX3Zpb21tdV9kbWFfdHJhbnNsYXRpb25fZm9yX3ZwZGV2ICAgICAzCj4KPiBEZWZpbml0 aW9uIG9mIFZJT01NVSBjYXBhYmlsaXRpZXMKPiAjZGVmaW5lIFhFTl9WSU9NTVVfQ0FQQUJJTElU WV9sMV90cmFuc2xhdGlvbiAgICAoMSA8PCAwKQo+ICNkZWZpbmUgWEVOX1ZJT01NVV9DQVBBQklM SVRZX2wyX3RyYW5zbGF0aW9uICAgICgxIDw8IDEpCj4gI2RlZmluZSBYRU5fVklPTU1VX0NBUEFC SUxJVFlfaW50ZXJydXB0X3JlbWFwcGluZyAgICAoMSA8PCAyKQoKSG93IGFyZSB2SU9NTVVzIGdv aW5nIHRvIGJlIG1vZGVsbGVkIHRvIGd1ZXN0cz8gIE9uIHJlYWwgaGFyZHdhcmUsIHRoZXkKYWxs IHNlZW0gdG8gZW5kIGFzc29jaWF0ZWQgd2l0aCBhIFBDSSBkZXZpY2Ugb2Ygc29tZSBzb3J0LCBl dmVuIGlmIGl0IGlzCmp1c3QgdGhlIExQQyBicmlkZ2UuCgpIb3cgZG8gd2UgZGVhbCB3aXRoIG11 bHRpcGxlIHZJT01NVXMgaW4gYSBzaW5nbGUgZ3Vlc3Q/Cgo+Cj4KPiAyKSBEZXNpZ24gZm9yIHN1 Ym9wcwo+IC0gWEVOX1NZU0NUTF92aW9tbXVfcXVlcnlfY2FwYWJpbGl0eQo+ICAgICAgICBHZXQg dklPTU1VIGNhcGFiaWxpdGllcyhsMS9sMiB0cmFuc2xhdGlvbiBhbmQgaW50ZXJydXB0Cj4gcmVt YXBwaW5nKS4KPgo+IC0gWEVOX1NZU0NUTF92aW9tbXVfY3JlYXRlCj4gICAgICAgQ3JlYXRlIHZJ T01NVSBpbiBYZW4gaHlwZXJ2aXNvciB3aXRoIGRvbV9pZCwgY2FwYWJpbGl0aWVzIGFuZCByZWcK PiBiYXNlIGFkZHJlc3MuCj4KPiAtIFhFTl9TWVNDVExfdmlvbW11X2Rlc3Ryb3kKPiAgICAgICBE ZXN0b3J5IHZJT01NVSBpbiBYZW4gaHlwZXJ2aXNvciB3aXRoIGRvbV9pZCBhcyBwYXJhbWV0ZXJz Lgo+Cj4gLSBYRU5fU1lTQ1RMX3Zpb21tdV9kbWFfdHJhbnNsYXRpb25fZm9yX3ZwZGV2Cj4gICAg ICAgVHJhbnNsYXRlIElPVkEgdG8gR1BBIGZvciBzcGVjaWZpZWQgdmlydHVhbCBQQ0kgZGV2aWNl IHdpdGggZG9tIGlkLAo+IFBDSSBkZXZpY2UncyBiZGYgYW5kIElPVkEgYW5kIHhlbiBoeXBlcnZp c29yIHJldHVybnMgdHJhbnNsYXRlZCBHUEEsCj4gYWRkcmVzcyBtYXNrIGFuZCBhY2Nlc3MgcGVy bWlzc2lvbi4KPgo+Cj4gMy4yIGwyIHRyYW5zbGF0aW9uCj4gMSkgRm9yIHZpcnR1YWwgUENJIGRl dmljZQo+IFhlbiBkdW1teSB4ZW4tdklPTU1VIGluIFFlbXUgdHJhbnNsYXRlcyBJT1ZBIHRvIHRh cmdldCBHUEEgdmlhIG5ldwo+IGh5cGVyY2FsbCB3aGVuIERNQSBvcGVyYXRpb24gaGFwcGVucy4K Pgo+IDIpIEZvciBwaHlzaWNhbCBQQ0kgZGV2aWNlCj4gRE1BIG9wZXJhdGlvbnMgZ28gdGhvdWdo IHBoeXNpY2FsIElPTU1VIGRpcmVjdGx5IGFuZCBJTyBwYWdlIHRhYmxlIGZvcgo+IElPVkEtPkhQ QSBzaG91bGQgYmUgbG9hZGVkIGludG8gcGh5c2ljYWwgSU9NTVUuIFdoZW4gZ3Vlc3QgdXBkYXRl cwo+IGwyIFBhZ2UtdGFibGUgcG9pbnRlciBmaWVsZCwgaXQgcHJvdmlkZXMgSU8gcGFnZSB0YWJs ZSBmb3IKPiBJT1ZBLT5HUEEuIHZJT01NVSBuZWVkcyB0byBzaGFkb3cgbDIgdHJhbnNsYXRpb24g dGFibGUsIHRyYW5zbGF0ZQo+IEdQQS0+SFBBIGFuZCB1cGRhdGUgc2hhZG93IHBhZ2UgdGFibGUo SU9WQS0+SFBBKSBwb2ludGVyIHRvIGwyCj4gUGFnZS10YWJsZSBwb2ludGVyIHRvIGNvbnRleHQg ZW50cnkgb2YgcGh5c2ljYWwgSU9NTVUuCgpIb3cgYXJlIHlvdSBwcm9wb3NpbmcgdG8gZG8gdGhp cyBzaGFkb3dpbmc/ICBEbyB3ZSBuZWVkIHRvIHRyYXAgYW5kCmVtdWxhdGUgYWxsIHdyaXRlcyB0 byB0aGUgdklPTU1VIHBhZ2V0YWJsZXMsIG9yIGlzIHRoZXJlIGEgYmV0dGVyIHdheSB0bwprbm93 IHdoZW4gdGhlIG1hcHBpbmdzIG5lZWQgaW52YWxpZGF0aW5nPwoKPgo+IE5vdyBhbGwgUENJIGRl dmljZXMgaW4gc2FtZSBodm0gZG9tYWluIHNoYXJlIG9uZSBJTyBwYWdlIHRhYmxlCj4gKEdQQS0+ SFBBKSBpbiBwaHlzaWNhbCBJT01NVSBkcml2ZXIgb2YgWGVuLiBUbyBzdXBwb3J0IGwyCj4gdHJh bnNsYXRpb24gb2YgdklPTU1VLCBJT01NVSBkcml2ZXIgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxl IGFkZHJlc3MKPiBzcGFjZXMgcGVyIGRldmljZSBlbnRyeS4gVXNpbmcgZXhpc3RpbmcgSU8gcGFn ZSB0YWJsZShHUEEtPkhQQSkKPiBkZWZhdWx0bHkgYW5kIHN3aXRjaCB0byBzaGFkb3cgSU8gcGFn ZSB0YWJsZShJT1ZBLT5IUEEpIHdoZW4gbDIKPiB0cmFuc2xhdGlvbiBmdW5jdGlvbiBpcyBlbmFi bGVkLiBUaGVzZSBjaGFuZ2Ugd2lsbCBub3QgYWZmZWN0IGN1cnJlbnQKPiBQMk0gbG9naWMuCj4K PiAzLjMgSW50ZXJydXB0IHJlbWFwcGluZwo+IEludGVycnVwdHMgZnJvbSB2aXJ0dWFsIGRldmlj ZXMgYW5kIHBoeXNpY2FsIGRldmljZXMgd2lsbCBiZSBkZWxpdmVyZWQKPiB0byB2bGFwaWMgZnJv bSB2SU9BUElDIGFuZCB2TVNJLiBJdCBuZWVkcyB0byBhZGQgaW50ZXJydXB0IHJlbWFwcGluZwo+ IGhvb2tzIGluIHRoZSB2bXNpX2RlbGl2ZXIoKSBhbmQgaW9hcGljX2RlbGl2ZXIoKSB0byBmaW5k IHRhcmdldCB2bGFwaWMKPiBhY2NvcmRpbmcgaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZS4KPgo+ Cj4gMy40IGwxIHRyYW5zbGF0aW9uCj4gV2hlbiBuZXN0ZWQgdHJhbnNsYXRpb24gaXMgZW5hYmxl ZCwgYW55IGFkZHJlc3MgZ2VuZXJhdGVkIGJ5IGwxCj4gdHJhbnNsYXRpb24gaXMgdXNlZCBhcyB0 aGUgaW5wdXQgYWRkcmVzcyBmb3IgbmVzdGluZyB3aXRoIGwyCj4gdHJhbnNsYXRpb24uIFBoeXNp Y2FsIElPTU1VIG5lZWRzIHRvIGVuYWJsZSBib3RoIGwxIGFuZCBsMiB0cmFuc2xhdGlvbgo+IGlu IG5lc3RlZCB0cmFuc2xhdGlvbiBtb2RlKEdWQS0+R1BBLT5IUEEpIGZvciBwYXNzdGhyb3VnaAo+ IGRldmljZS4KCkFsbCB0aGVzZSBsMSBhbmQgbDIgdHJhbnNsYXRpb25zIGFyZSBnZXR0aW5nIGNv bmZ1c2luZy4gIENvdWxkIHdlCnBlcmhhcHMgY2FsbCB0aGVtIGd1ZXN0IHRyYW5zbGF0aW9uIGFu ZCBob3N0IHRyYW5zbGF0aW9uLCBvciBpcyB0aGF0Cmxpa2VseSB0byBjYXVzZSBvdGhlciBwcm9i bGVtcz8KCj4KPiBWVC1kIGNvbnRleHQgZW50cnkgcG9pbnRzIHRvIGd1ZXN0IGwxIHRyYW5zbGF0 aW9uIHRhYmxlIHdoaWNoCj4gd2lsbCBiZSBuZXN0LXRyYW5zbGF0ZWQgYnkgbDIgdHJhbnNsYXRp b24gdGFibGUgYW5kIHNvIGl0Cj4gY2FuIGJlIGRpcmVjdGx5IGxpbmtlZCB0byBjb250ZXh0IGVu dHJ5IG9mIHBoeXNpY2FsIElPTU1VLgo+Cj4gVG8gZW5hYmxlIGwxIHRyYW5zbGF0aW9uIGluIFZN Cj4gMSkgWGVuIElPTU1VIGRyaXZlciBlbmFibGVzIG5lc3RlZCB0cmFuc2xhdGlvbiBtb2RlCj4g MikgVXBkYXRlIEdQQSByb290IG9mIGd1ZXN0IGwxIHRyYW5zbGF0aW9uIHRhYmxlIHRvIGNvbnRl eHQgZW50cnkKPiBvZiBwaHlzaWNhbCBJT01NVS4KPgo+IEFsbCBoYW5kbGVzIGFyZSBpbiBoeXBl cnZpc29yIGFuZCBubyBpbnRlcmFjdGlvbiB3aXRoIFFlbXUuCj4KPgo+IDMuNSBJbXBsZW1lbnRh dGlvbiBjb25zaWRlcmF0aW9uCj4gVlQtZCBzcGVjIGRvZXNuJ3QgZGVmaW5lIGEgY2FwYWJpbGl0 eSBiaXQgZm9yIHRoZSBsMiB0cmFuc2xhdGlvbi4KPiBBcmNoaXRlY3R1cmFsbHkgdGhlcmUgaXMg bm8gd2F5IHRvIHRlbGwgZ3Vlc3QgdGhhdCBsMiB0cmFuc2xhdGlvbgo+IGNhcGFiaWxpdHkgaXMg bm90IGF2YWlsYWJsZS4gTGludXggSW50ZWwgSU9NTVUgZHJpdmVyIHRoaW5rcyBsMgo+IHRyYW5z bGF0aW9uIGlzIGFsd2F5cyBhdmFpbGFibGUgd2hlbiBWVEQgZXhpdHMgYW5kIGZhaWwgdG8gYmUg bG9hZGVkCj4gd2l0aG91dCBsMiB0cmFuc2xhdGlvbiBzdXBwb3J0IGV2ZW4gaWYgaW50ZXJydXB0 IHJlbWFwcGluZyBhbmQgbDEKPiB0cmFuc2xhdGlvbiBhcmUgYXZhaWxhYmxlLiBTbyBpdCBuZWVk cyB0byBlbmFibGUgbDIgdHJhbnNsYXRpb24gZmlyc3QKPiBiZWZvcmUgb3RoZXIgZnVuY3Rpb25z LgoKV2hhdCB0aGVuIGlzIHRoZSBwdXJwb3NlIG9mIHRoZSBuZXN0ZWQgdHJhbnNsYXRpb24gc3Vw cG9ydCBiaXQgaW4gdGhlCmV4dGVuZGVkIGNhcGFiaWxpdHkgcmVnaXN0ZXI/Cgo+Cj4KPiA0IFFl bXUKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IDQuMSBRZW11IHZJT01NVSBmcmFtZXdvcmsK PiBRZW11IGhhcyBhIGZyYW1ld29yayB0byBjcmVhdGUgdmlydHVhbCBJT01NVShlLmcuIHZpcnR1 YWwgaW50ZWwgVlREIGFuZAo+IEFNRCBJT01NVSkgYW5kIHJlcG9ydCBpbiBndWVzdCBBQ1BJIHRh YmxlLiBTbyBmb3IgWGVuIHNpZGUsIGEgZHVtbXkKPiB4ZW4tdklPTU1VIHdyYXBwZXIgaXMgcmVx dWlyZWQgdG8gY29ubmVjdCB3aXRoIGFjdHVhbCB2SU9NTVUgaW4gWGVuLgo+IEVzcGVjaWFsbHkg Zm9yIGwyIHRyYW5zbGF0aW9uIG9mIHZpcnR1YWwgUENJIGRldmljZSBiZWNhdXNlCj4gZW11bGF0 aW9ucyBvZiB2aXJ0dWFsIFBDSSBkZXZpY2VzIGFyZSBpbiB0aGUgUWVtdS4gUWVtdSdzIHZJT01N VQo+IGZyYW1ld29yayBwcm92aWRlcyBjYWxsYmFjayB0byBkZWFsIHdpdGggbDIgdHJhbnNsYXRp b24gd2hlbgo+IERNQSBvcGVyYXRpb25zIG9mIHZpcnR1YWwgUENJIGRldmljZXMgaGFwcGVuLgo+ Cj4KPiA0LjIgRHVtbXkgeGVuLXZJT01NVSBkcml2ZXIKPiAxKSBRdWVyeSB2SU9NTVUgY2FwYWJp bGl0eShFLEcgRE1BIHRyYW5zbGF0aW9uLCBJbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZAo+IFNoYXJl IFZpcnR1YWwgTWVtb3J5KSB2aWEgaHlwZXJjYWxsLgo+Cj4gMikgQ3JlYXRlIHZJT01NVSBpbiBY ZW4gaHlwZXJ2aXNvciB2aWEgbmV3IGh5cGVyY2FsbCB3aXRoIERSSFUgcmVnaXN0ZXIKPiBhZGRy ZXNzIGFuZCBkZXNpcmVkIGNhcGFiaWxpdHkgYXMgcGFyYW1ldGVycy4gRGVzdHJveSB2SU9NTVUg d2hlbiBWTSBpcwo+IGNsb3NlZC4KPgo+IDMpIFZpcnR1YWwgUENJIGRldmljZSdzIGwyIHRyYW5z bGF0aW9uCj4gUWVtdSBhbHJlYWR5IHByb3ZpZGVzIERNQSB0cmFuc2xhdGlvbiBob29rLiBJdCdz IGNhbGxlZCB3aGVuIERNQQo+IHRyYW5zbGF0aW9uIG9mIHZpcnR1YWwgUENJIGRldmljZSBoYXBw ZW5zLiBUaGUgZHVtbXkgeGVuLXZJT01NVSBwYXNzZXMKPiBkZXZpY2UgYmRmIGFuZCBJT1ZBIGlu dG8gWGVuIGh5cGVydmlzb3IgdmlhIG5ldyBpb21tdSBoeXBlcmNhbGwgYW5kCj4gcmV0dXJuIGJh Y2sgdHJhbnNsYXRlZCBHUEEuCj4KPgo+IDQuMyBRMzUgdnMgSTQ0MHgKPiBWVC1EIGlzIGludHJv ZHVjZWQgd2l0aCBRMzUgY2hpcHNldC4gUHJldmlvdXMgY29uY2VybiB3YXMgdGhhdCBWVEQKPiBk cml2ZXIgaGFzIGFzc3VtcHRpb24gdGhhdCBWVEQgb25seSBleGlzdHMgb24gUTM1IGFuZCBuZXdl ciBjaGlwc2V0IGFuZAo+IHdlIGhhdmUgdG8gZW5hYmxlIFEzNSBmaXJzdC4gQWZ0ZXIgZXhwZXJp bWVudHMsIExpbnV4L1dpbmRvd3MgZ3Vlc3QgY2FuCj4gYm9vdCB1cCBvbiB0aGUgZW11bGF0ZWQg STQ0MHggY2hpcHNldCB3aXRoIFZURCBhbmQgVlREIGRyaXZlciBlbmFibGVzCj4gaW50ZXJydXB0 IHJlbWFwcGluZyBmdW5jdGlvbi4gU28gd2UgY2FuIHNraXAgUTM1IHN1cHBvcnQgdG8gaW1wbGVt ZW50Cj4gdklPTU1VIGRpcmVjdGx5LgoKVGhpcyBpcyBnb29kIHRvIGtub3cuCgo+Cj4gNC40IFJl cG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVyCj4gSHZtbG9hZGVyIGlzIGluIGNoYXJnZSBvZiBidWls ZGluZyBBQ1BJIHRhYmxlcyBmb3IgR3Vlc3QgT1MgYW5kIE9TCj4gcHJvYmVzIElPTU1VIHZpYSBB Q1BJIERNQVIgdGFibGUuIFNvIGh2bWxvZGVyIG5lZWRzIHRvIGtub3cgd2hldGhlcgo+IHZJT01N VSBpcyBlbmFibGVkIG9yIG5vdCBhbmQgaXRzIGNhcGFiaWxpdHkgdG8gcHJlcGFyZSBBQ1BJIERN QVIgdGFibGUKPiBmb3IgR3Vlc3QgT1MuCj4KPiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBkbyB0 aGF0Lgo+IDEpIEV4dGVuZCBzdHJ1Y3QgaHZtX2luZm9fdGFibGUgYW5kIGFkZCB2YXJpYWJsZXMg aW4gdGhlIHN0cnVjdAo+IGh2bV9pbmZvX3RhYmxlIHRvIHBhc3MgdklPTU1VIGluZm9ybWF0aW9u IHRvIGh2bWxvYWRlci4gQnV0IHRoaXMKPiByZXF1aXJlcyB0byBhZGQgbmV3IHhjIGludGVyZmFj ZSB0byB1c2Ugc3RydWN0IGh2bV9pbmZvX3RhYmxlIGluIHRoZQo+IFFlbXUuCj4KPiAyKSBQYXNz IHZJT01NVSBpbmZvcm1hdGlvbiB0byBodm1sb2FkZXIgdmlhIFhlbnN0b3JlCj4KPiAzKSBCdWls ZCBBQ1BJIERNQVIgdGFibGUgaW4gUWVtdSBhbmQgcGFzcyBpdCB0byBodm1sb2FkZXIgdmlhIFhl bnN0b3JlLgo+IFRoaXMgc29sdXRpb24gaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB2TlZESU1N IGRlc2lnbig0LjMuMQo+IEJ1aWxkaW5nIEd1ZXN0IEFDUEkgVGFibGVzCj4gaHR0cDovL3d3dy5n b3NzYW1lci10aHJlYWRzLmNvbS9saXN0cy94ZW4vZGV2ZWwvNDM5NzY2KS4KPgo+IFRoZSB0aGly ZCBvcHRpb24gc2VlbXMgbW9yZSBjbGVhciBhbmQgaHZtbG9hZGVyIGRvZXNuJ3QgbmVlZCB0byBk ZWFsCj4gd2l0aCB2SU9NTVUgc3R1ZmZzIGFuZCBqdXN0IHBhc3MgdGhyb3VnaCBETUFSIHRhYmxl IHRvIEd1ZXN0IE9TLiBBbGwKPiB2SU9NTVUgc3BlY2lmaWMgc3R1ZmZzIHdpbGwgYmUgcHJvY2Vz c2VkIGluIHRoZSBkdW1teSB4ZW4tdklPTU1VIGRyaXZlci4KClBhcnQgb2YgQUNQSSB0YWJsZSBi dWlsZGluZyBoYXMgbm93IG1vdmVkIGludG8gdGhlIHRvb2xzdGFjay4gIFVubGVzcwp0aGUgdGFi bGUgbmVlZHMgY3JlYXRpbmcgZHluYW1pY2FsbHkgKHdoaWNoIGRvZXNuJ3QgYXBwZWFyIHRvIGJl IHRoZQpjYXNlKSwgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBhbnkgZnVydGhlciBjb21tdW5pY2F0 aW9uLgoKfkFuZHJldwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==