From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoffer Dall Subject: Re: Xen ARM - Exposing a PL011 to the guest Date: Tue, 20 Dec 2016 13:47:06 +0100 Message-ID: <20161220124706.GA32470@cbox> References: <86800697-5057-3f14-c19f-151e81315133@arm.com> <20161201102618.GA10384@cbox> <7c3a29e7-aea6-5f9c-61b0-b4f82bcafa34@arm.com> <20161219122005.GA28927@cbox> 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: Stefano Stabellini Cc: Wei Liu , Steve Capper , George Dunlap , Andrew Cooper , Ian Jackson , Xen Devel , Julien Grall , Jan Beulich , Bhupinder Thakur List-Id: xen-devel@lists.xenproject.org SGkgU3RlZmFubywKCk9uIE1vbiwgRGVjIDE5LCAyMDE2IGF0IDEyOjI0OjE4UE0gLTA4MDAsIFN0 ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiBPbiBNb24sIDE5IERlYyAyMDE2LCBDaHJpc3RvZmZl ciBEYWxsIHdyb3RlOgo+ID4gT24gRnJpLCBEZWMgMTYsIDIwMTYgYXQgMDU6MDM6MTNQTSArMDAw MCwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+ID4gPiAoQ0MgcmVzdCBtYWludGFpbmVycyBmb3IgZXZl bnQgY2hhbm5lbCBxdWVzdGlvbnMpCj4gPiA+IAo+ID4gPiBPbiAxNi8xMi8xNiAxMDowNiwgQmh1 cGluZGVyIFRoYWt1ciB3cm90ZToKPiA+ID4gPkhpLAo+ID4gPiAKPiA+ID4gSGkgQmh1cGluZGVy LAo+ID4gPiAKPiA+ID4gPlRoZSBpZGVhIGlzIGZvciBYZW4gdG8gYWN0IGFzIGFuIGludGVybWVk aWFyeSBhcyBzaG93biBiZWxvdzoKPiA+ID4gPgo+ID4gPiA+ICAgICAgICAgICAgICAgcmluZyBi dWZmZXJzCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICByeC90eCBmaWZvCj4gPiA+ ID5kb20wIDwtLS0tLS0tLS0tLS0tLS0tLS0tPiBYZW4gSFlQIChydW5uaW5nIHBsMDExIGVtdWxh dGlvbikKPiA+ID4gPjwtLS0tLS0tLS0tLS0tLS0tLS0tPiBkb21VCj4gPiA+ID4gICAgICAgICAg ICAgICAgICAgIGV2ZW50Cj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1 cHRzCj4gPiA+ID4KPiA+ID4gPlhlbiB3aWxsIGRpcmVjdGx5IG1hbmFnZSB0aGUgaW4vb3V0IGNv bnNvbGUgcmluZyBidWZmZXJzIChhbGxvY2F0ZWQgYnkKPiA+ID4gPmRvbTAgZm9yIGRvbTAtZG9t VSBjb25zb2xlIGNvbW11bmljYXRpb24pIGZvciByZWFkaW5nL3dyaXRpbmcgY29uc29sZQo+ID4g PiA+ZGF0YSBmcm9tL3RvIGRvbTAuIE9uIHRoZSBvdGhlciBzaWRlLCBYZW4gSFlQIHdpbGwgZW11 bGF0ZSBwbDAxMSB0bwo+ID4gPiA+cmVhZC93cml0ZSBkYXRhIGZyb20vdG8gZG9tVSBhbmQgcGFz cyBpdCBvbiB0by9mcm9tIGRvbTAgb3ZlciB0aGUKPiA+ID4gPmluL291dCBjb25zb2xlIHJpbmcg YnVmZmVycy4gVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBkb20wIGFzIGl0Cj4gPiA+ID53 aWxsIHN0aWxsIHVzZSB0aGUgc2FtZSByaW5nIGJ1ZmZlcnMuIFNpbWlsYXJseSB0aGVyZSBzaG91 bGQgYmUgbm8KPiA+ID4gPmNoYW5nZSBpbiBkb21VIHdoaWNoIHdvdWxkIGJlIHJ1bm5pbmcgYSBz dGFuZGFyZCBwbGwwMTEgZHJpdmVyLgo+ID4gPiA+Cj4gPiA+ID5DdXJyZW50bHksIEkgYW0gd29y a2luZyBvbiB0aGUgaW50ZXJmYWNlIGJldHdlZW4gZG9tMCBhbmQgWGVuIEhZUC4gSQo+ID4gPiA+ d2FudCB0byBpbnRlcmNlcHQgdGhlIGNvbnNvbGUgZXZlbnRzIGluIFhlbiBIWVAgd2hpY2ggcGFz cyBiZXR3ZWVuCj4gPiA+ID5kb20wIGFuZCBkb21VLiBGb3Igbm93LCBJIGp1c3Qgd2FudCB0byBj YXB0dXJlIGNvbnNvbGUgZGF0YSBjb21pbmcKPiA+ID4gPmZyb20gZG9tMCBhdCBYZW4gSFlQIGFu ZCBsb29wIGl0IGJhY2sgdG8gZG9tMCwgdG8gY29uZmlybSB0aGF0IHRoaXMKPiA+ID4gPmludGVy ZmFjZSBpcyB3b3JraW5nLgo+ID4gPiA+Cj4gPiA+ID5TaW5jZSBlYWNoIGd1ZXN0IGRvbWFpbiB3 aWxsIGhhdmUgYSB1bmlxdWUgZXZlbnQgY2hhbm5lbCBhc3NpZ25lZCBmb3IKPiA+ID4gPmNvbnNv bGUgY29tbXVuaWNhdGlvbiwgWGVuIEhZUCBjYW4gZmluZCBvdXQgdGhlIGV2ZW50IGNoYW5uZWwg Zm9yIGEKPiA+ID4gPmdpdmVuIGRvbVUgZnJvbSB0aGUgc3RhcnRfaW5mbyBwYWdlIG9mIHRoYXQg ZG9tVSwgd2hpY2ggc2hvdWxkIGhhdmUKPiA+ID4gCj4gPiA+IFRoZSBzdGFydF9pbmZvIHBhZ2Ug aXMgeDg2IHNwZWNpZmljLiBJZiB5b3Ugd2FudCB0byBnZXQgdGhlIGNvbnNvbGUKPiA+ID4gZXZl bnQgY2hhbm5lbCBmb3IgQVJNLCB5b3Ugd291bGQgaGF2ZSB0byB1c2UKPiA+ID4gZC0+YXJjaC5o dm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fQ09OU09MRV9FVlRDSE5dLgo+ID4gPiAKPiA+ID4g VGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBzZXR1cCBieSB0aGUgdG9vbHN0YWNrIChzZWUgYWxsb2Nf bWFnaWNfcGFnZXMKPiA+ID4gaW4gbGlieGMveGNfZG9tX2FybS5jKS4KPiA+ID4gCj4gPiA+ID5i ZWVuIGFsbG9jYXRlZCBieSBkb20wLiBXaGVuZXZlciwgYW4gZXZlbnQgaXMgdG8gYmUgZGlzcGF0 Y2hlZCB2aWEKPiA+ID4gPmV2dGNobl9zZW5kKCkgQVBJIGluIFhlbiwgaXQgY2FuIGNoZWNrIGlm IHRoZSBldmVudCBjaGFubmVsIGlzIHRoZQo+ID4gPiA+Y29uc29sZSBldmVudCBjaGFubmVsIGZv ciBhIGdpdmVuIGRvbVUuIElmIHllcyBhbmQgaXRzIHNvdXJjZSBkb21haW4KPiA+ID4gPmlzIGRv bTAgYW5kIGRlc3RpbmF0aW9uIGRvbWFpbiBpcyBkb21VIHRoZW4gaXQgd2lsbCB3cml0ZSB0aGUg ZGF0YQo+ID4gPiA+YmFjayB0byB0aGUgY29uc29sZSBvdXQgcmluZyBidWZmZXIgb2YgdGhlIGRv bVUgYW5kIHJhaXNlIGEgY29uc29sZQo+ID4gPiA+ZXZlbnQgdG8gZG9tMC4KPiA+ID4gPgo+ID4g PiA+T25jZSB0aGlzIGludGVyZmFjZSBpcyB3b3JraW5nLCBYZW4gSFlQIGNhbiBjaGVjayB0aGUg c291cmNlIGFuZAo+ID4gPiA+ZGVzdGluYXRpb24gZG9tIGlkcyBhbmQgZGVjaWRlIHdoaWNoIHdh eSB0aGUgZXZlbnQgY2FtZSBmcm9tIGFuZAo+ID4gPiA+YWNjb3JkaW5nbHkgcHJvY2VzcyB0aGUg Y29uc29sZSBkYXRhLiBUbyBhbGxvdyBhIG1peCBvZiBQViBjb25zb2xlCj4gPiA+ID5ndWVzdHMg YW5kIHBsMDExIGd1ZXN0cywgWGVuIG1pZ2h0IGhhdmUgdG8gbWFpbnRhaW4gYSBmbGFnIHBlciBk b21haW4sCj4gPiA+ID53aGljaCB0ZWxscyB3aGV0aGVyIFhlbiBIWVAgc2hvdWxkIGludGVyY2Vw dCBhbmQgcHJvY2VzcyB0aGUgZGF0YSAoZm9yCj4gPiA+ID5wbDAxMSBVQVJUIGNhc2UpIG9yIGxl dCBpdCBnbyB0cmFuc3BhcmVudGx5IChmb3IgUFYgY29ub3NsZSBjYXNlKS4KPiA+ID4gCj4gPiA+ IEkgYW0gbm90IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGUgZXZlbnQgY2hhbm5lbCBjb2RlLiBJIHdp bGwgbGV0IHRoZQo+ID4gPiBvdGhlcnMgY29tbWVudCBvbiB0aGlzIGJpdC4KPiA+ID4gCj4gPiA+ IFJlZ2FyZGxlc3MgdGhhdCwgaG93IHdvdWxkIHlvdSBkZWNpZGUgd2hldGhlciB0aGUgaHlwZXJ2 aXNvciBzaG91bGQKPiA+ID4gaW50ZXJjZXB0IHRoZSBub3RpZmljYXRpb24/Cj4gPiA+IAo+ID4g PiBJIGNhbiBzZWUgMiBkaWZmZXJlbnQgY2FzZXM6Cj4gPiA+IAkxKSBUaGUgZ3Vlc3QgaXMgc3Rh cnRpbmcgdG8gdXNlIHRoZSBwbDAxMSB0aGVuIG1vdmUgdG8gdGhlIEhWQwo+ID4gPiBjb25zb2xl IChvciBIVkMgdGhlbiBwbDAxMSkKPiA+ID4gCTIpIFRoZSBndWVzdCBpcyB1c2luZyBib3RoIHRo ZSBQTDAxMSBhbmQgdGhlIEhWQyBjb25zb2xlCj4gPiA+IAo+ID4gPiBTaG91bGQgd2UgY29uc2lk ZXIgdGhlIHNlY29uZCBjYXNlIHZhbGlkPyBJIHdvdWxkIHNheSB5ZXMsIGJlY2F1c2UgYQo+ID4g PiB1c2VyIGNvdWxkIHNwZWNpZnkgYm90aCBvbiB0aGUgY29tbWFuZCBsaW5lLiBJZiB3ZSB1c2Ug dGhlIHNhbWUKPiA+ID4gcmluZywgdGhlIG91dHB1dCB3b3VsZCBiZSBhIHRvdGFsIGdhcmJhZ2Uu Cj4gPiA+IAo+ID4gPiBTbyBtYXliZSB3ZSBuZWVkIHRvIGFsbG9jYXRlIHR3byBkaXN0aW5jdCBy aW5ncyBhbmQgZXZlbnQgY2hhbm5lbD8KPiA+IAo+ID4gVGhpcyBzb3VuZHMgbGlrZSB0aGUgb25s eSBzZW5zaWJsZSB0aGluZyB0byBtZS4gIEkgdGhpbmsgdGhpcyBpcyByZWFsbHkKPiA+IGFib3V0 IGFkZGluZyBhIG5ldyBkZXZpY2UgdG8gdGhlIFhlbiB2aXJ0dWFsIHBsYXRmb3JtLCBhbmQgcHJv dmlkaW5nIHRoZQo+ID4gdXNlciB0aGUgb3B0aW9uIHRvIGNob29zZSB3aGljaCBvbmUgaGUgd2Fu dHMgdGhlIHRvb2wgaW4gRG9tMCB0byBiZQo+ID4gcHJlc2VudGVkIHVzaW5nIHN0ZGluL291dC4g UHJlc3VtYWJseSB0aGUgb3RoZXIgY29uc29sZS9zZXJpYWwgY2FuIGJlCj4gPiByZWRpcmVjdGVk IHRvIGEgZmlsZSBvciBzb2NrZXQgb3Igc29tZXRoaW5nPwo+IAo+IExldCBtZSBleHBsYWluIGhv dyB0aGUgUFYgY29uc29sZSBwcm90b2NvbCBhbmQgZHJpdmVycyB3b3JrLCBiZWNhdXNlCj4gdGhl eSBhcmUgYSBiaXQgdW51c3VhbC4gCgpUaGFua3MgZm9yIHRoaXMuICBBcyBteSBkZXRhaWxlZCBr bm93bGVkZ2Ugb2YgWGVuIGlzIHJlbGF0aXZlbHkgbGltaXRlZApJIGNhbiBvbmx5IGNvbnRyaWJ1 dGUgd2l0aCBhIHZlcnkgaGlnaCBsZXZlbCBhcHByb2FjaCB0byB3aGljaCBwcm9ibGVtCndlJ3Jl IHRyeWluZyB0byBzb2x2ZS4KCgo+IFRoZSBmaXJzdCBQViBjb25zb2xlIGlzIGFkdmVydGlzZWQg dmlhCj4gaHZtX3BhcmFtcy4gVGhlIGd1ZXN0IGNhbGxzOgo+IAo+ICAgaHZtX2dldF9wYXJhbWV0 ZXIoSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOLCAmdik7Cj4gICBodm1fZ2V0X3BhcmFtZXRlcihI Vk1fUEFSQU1fQ09OU09MRV9QRk4sICZ2KTsKPiAKPiB0byBnZXQgdGhlIHR3byBwYXJhbWV0ZXJz IHRvIHNldHVwIHRoZSByaW5nIGFuZCBldnRjaG4uIElmIHRoZXkgYXJlIDAsCj4gdGhlIGd1ZXN0 IGNvbnNpZGVycyB0aGUgZmlyc3QgY29uc29sZSB1bmF2YWlsYWJsZS4gT3RoZXIgUFYgY29uc29s ZQo+IHJpbmdzLCBmcm9tIHRoZSBzZWNvbmQgb253YXJkLCBhcmUgYWR2ZXJ0aXNlZCB2aWEgeGVu c3RvcmUgbGlrZSBhbnkKPiBvdGhlciBYZW4gUFYgcHJvdG9jb2xzLiBJbiB0aG9zZSBjYXNlcywg ZnJvbnRlbmQgYW5kIGJhY2tlbmQgYWNjZXNzCj4geGVuc3RvcmUgdG8gc2V0dXAgcmluZyBhbmQg ZXZlbnQgY2hhbm5lbC4KClNvLCBodm1fZ2V0X3BhcmFtZXRlciBkb2VzIG5vdCBhY2Nlc3MgeGVu c3RvcmUsIGJlY2F1c2UgeW91IG5lZWQgdGhlCmNvbnNvbGUgYmVjYXVzZSB4ZW5zdG9yZSBpcyBh dmFpbGFibGUsIGJ1dCBzdWJzZXF1ZW50IGNvbnNvbGVzIGNhbiBqdXN0CmFjY2VzcyB4ZW5zdG9y ZSwgb3IgZGlkIEkgZ2V0IHRoaXMgY29tcGxldGVseSB3cm9uZz8KCj4gCj4gVGhlIFBWIGNvbnNv bGUgYmFja2VuZHMgYXJlIHVudXN1YWwgdG9vLiB4ZW5jb25zb2xlZCwgYXZhaWxhYmxlIG9uIGFs bAo+IFhlbiBzeXN0ZW1zLCBpcyBvbmUgcHJvY2VzcyBwZXIgaG9zdCBhbmQgY2FuIGhhbmRsZSBv bmx5IG9uZSBQViBjb25zb2xlCj4gcGVyIGRvbWFpbi4gU3BlY2lmaWNhbGx5LCBpdCBpcyBvbmx5 IGFibGUgdG8gZGVhbCB3aXRoIHRoZSBmaXJzdCBjb25zb2xlLgo+IERvbWFpbnMgdGhhdCBoYXZl IG11bHRpcGxlIFBWIGNvbnNvbGVzIHJlcXVpcmUgUUVNVSAobm90IGFzIGFuIGVtdWxhdG9yLAo+ IGJ1dCBhcyBhIFBWIGJhY2tlbmRzIHByb3ZpZGVyKS4gVGhlIHRvb2xzdGFjayB3cml0ZXMgInR5 cGUiID0KPiAieGVuY29uc29sZWQiIG9yICJpb2VtdSIgdG8gZGlzdGluZ3Vpc2ggUFYgY29uc29s ZXMgdGhhdCB4ZW5jb25zb2xlZCBvcgo+IFFFTVUgYXJlIHN1cHBvc2VkIHRvIGhhbmRsZS4gSWRl YWxseSwgd2Ugc2hvdWxkbid0IHJlcXVpcmUgUUVNVSBmb3IKPiBwbDAxMSBQViBjb25zb2xlcywg YnV0IGl0IHdvdWxkbid0IGJlIHRoZSBlbmQgb2YgdGhlIHdvcmxkIGlmIHdlIGRpZC4KCkl0IHNl ZW1zIGNvdW50ZXJpbnR1aXRpdmUgdG8gcnVuIFFFTVUgaW4gRG9tMCB0byBzZXJ2ZSBhcyBhIGJh Y2tlbmQgZm9yCmVtdWxhdGluZyBhIGRldmljZSBpbiBYZW4gdG8gbWUsIGJ1dCBtYXliZSBJIGFt IG1pc3NpbmcgdGhlIHBvaW50PwoKSXMgdGhpcyBub3QgYSAnc3RhbmRhcmQnIHNvZnR3YXJlIGVu Z2luZWVyaW5nIHF1ZXN0aW9uIG9mIGNob29zaW5nCmJldHdlZW4gKDEpIGV4cGFuZGluZyB0aGUg ZnVuY3Rpb25hbGl0eSBvZiB4ZW5jb25zb2xlZCwgb3IgKDIpIHJ1bm5pbmcKbXVsdGlwbGUgaW5z dGFuY2VzIG9mIHhlbmNvbnNvbGVkLCBvciAoMykgd3JpdGluZyBhIG5ldwp4ZW5jb25zb2xlX2Vt dWxkLCBvciAoNCkgcnVuIGV4aXN0aW5nIGh1Z2Ugb3RoZXIgYmluYXJ5IGNhbGxlZCBRRU1VLCBv cgooNSkgc29tZXRoaW5nIEkgaGF2ZW4ndCB0aG91Z2h0IG9mID8KCj4gCj4gQWRkaXRpb25hbGx5 LCBYZW4gY2Fubm90IHNwZWFrIHhlbnN0b3JlLiBJdCBjYW4gbmVpdGhlciByZWFkIG5vciB3cml0 ZQo+IHRvIGl0LiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBhZGQgeGVuc3RvcmUgc3VwcG9ydCB0 byB0aGUgaHlwZXJ2aXNvcgo+IGZvciB0aGlzLiBXZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIHNv bHV0aW9uIHRoYXQgZG9lc24ndCByZXF1aXJlIGl0LgoKU28sIHNvbWUgaW50ZXJmYWNlIGZvciB0 aGUgdG9vbHN0YWNrIHRvIHRlbGwgdGhlIFhlbiBoeXBlcnZpc29yIHRoYXQKdGhlcmUncyBhbiBl dmVudCBjaGFubmVsIGFuZCBhIHBhZ2UgYW5kIHdoZXJlIHRoZXkgYXJlLCBzbyB0aGF0IHRoZQpo eXBlcnZpc29yIGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBjb25zb2xlIGJhY2tlbmQsIHJpZ2h0 PwoKSSBhbSBob3BpbmcgdGhlcmUgaXMgKnNvbWUqIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIHRo YXQgY2FuIGJlCmxldmVyYWdlZCBmb3IgdGhpcyBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBjb21lIHVw IHdpdGggc29tZXRoaW5nIHNpbGx5Cmxpa2UgImFsbG9jYXRlIG5ldyByYW5kb20gaHlwZXJjYWxs cyIgPwoKPiAKPiBGaW5hbGx5LCB3ZSBjYW5ub3QgaGlqYWNrIG9uZSBvZiB0aGUgZ3Vlc3QgUFYg Y29uc29sZXMsIHJlZ2FyZGxlc3Mgb2YKPiB3aGV0aGVyIGl0J3MgdGhlIGZpcnN0IGNvbnNvbGUg b3Igb25lIG9mIHRoZSBvdGhlcnMsIGJlY2F1c2UgdGhlIGd1ZXN0Cj4gY2FuIGFsd2F5cyB0cnkg dG8gdXNlIHRoZW0gYXQgYW55IHRpbWUuIFdlIG5lZWQgYSBQViBjb25zb2xlIHJlc2VydmVkCj4g Zm9yIFhlbi1Eb20wIGNvbW11bmljYXRpb25zIG9uIGJlaGFsZiBvZiB0aGUgZ3Vlc3QuIFdoZW4g YSBWTSBpcyBjcmVhdGVkCj4gd2l0aCAicGwwMTE9eSIsIHRoZSB0b29sc3RhY2sgbmVlZHMgdG8g YWxsb2NhdGUgb25lIG1vcmUgcGFnZSBhbmQgZXZ0Y2huCj4gZm9yIHRoZSBleGNsdXNpdmUgaHlw ZXJ2aXNvciB1c2FnZS4gIFRoZXkgYXJlIG5vdCBnb2luZyB0byBiZSBhZHZlcnRpc2VkCj4gdG8g dGhlIGd1ZXN0IGFzIFBWIGNvbnNvbGVzOyBvdGhlcndpc2UsIHRoZSBndWVzdCBjb3VsZCByaWdo dGZ1bGx5Cj4gYWNjZXNzIHRoZW0uCgpJIHN1cHBvc2Ugd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0 IHRoZSBndWVzdCBjYW5ub3QgZXZlbiB0b3VjaCB0aGVtIGV2ZW4KaWYgaXQncyBsdWNreSBlbm91 Z2ggdG8gZ3Vlc3MgdGhlIHBhZ2UgbnVtYmVyIGFuZCBldmVudCBjaGFubmVsIGV0Yy4/Cgo+IAo+ IEJvdGggWGVuIGFuZCB0aGUgUFYgY29uc29sZSBiYWNrZW5kIG5lZWQgYWNjZXNzIHRvIHRoZSB0 d28gbnVtYmVycyAocGZuCj4gYW5kIGV2dGNobikgdGhvdWdoLiBYZW4gZG9lc24ndCBkbyB4ZW5z dG9yZSwgc28gSSBzdWdnZXN0IHRoZSB0b29sc3RhY2sKPiBzaG91bGQgdXNlIGFub3RoZXIgd2F5 IHRvIHRlbGwgcGZuIGFuZCBldnRjaG4gdG8gWGVuLCBtYXliZSBodm1fcGFyYW1zLgo+IElmIHdl IHVzZSBodm1fcGFyYW1zIGZvciB0aGlzLCB3ZSBuZWVkIHR3byBuZXcgaHZtX3BhcmFtcyBhbmQg WGVuIG5lZWRzCj4gdG8gdW5tYXAgdGhlIHBmbiBmcm9tIHRoZSBndWVzdCBpbW1lZGlhdGVseSwg YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZQo+IGd1ZXN0IHRvIGhhdmUgYWNjZXNzIHRvIGl0LgoK U28gaHZtX3BhcmFtcyBpcyB3aGF0IEkgd2FzIGhvcGluZyBmb3IgYWJvdmU/Cgo+IAo+IEhvd2V2 ZXIsIHRoZSBQViBjb25zb2xlIGJhY2tlbmQgY2FuIGFjY2VzcyB4ZW5zdG9yZSwgc28gaW4gdGhh dCBjYXNlLCBpdAo+IGlzIGZpbmUgdG8gd3JpdGUgdGhlIHBmbiBhbmQgZXZ0Y2huIG9mIHRoZSBQ ViBjb25zb2xlIGZvciBwbDAxMSB0bwo+IHhlbnN0b3JlLCBwYXlpbmcgYXR0ZW50aW9uIGF0IHVz aW5nIHRoZSB4ZW5zdG9yZSBwZXJtaXNzaW9ucwo+IGFwcHJvcHJpYXRlbHkuIFRoZXJlIGFyZSBu byByZWFzb25zIHdoeSB0aGUgZ3Vlc3Qgc2hvdWxkIGhhdmUgYWNjZXNzIHRvCj4gdGhlbTsgb25s eSB0aGUgY29uc29sZSBiYWNrZW5kIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlbS4gR2l2ZW4g dGhhdAo+IHRoZSBjb25zb2xlIGJhY2tlbmQgaGFzIGRvbTAgcHJpdmlsZWdlcywgaXQgaXMgbm90 IGEgcHJvYmxlbS4gSSBhbHNvCj4gc3VnZ2VzdCB1c2luZyBuZXcgeGVuc3RvcmUgbm9kZXMsIGRp ZmZlcmVudCBmcm9tIGFueSBvZiB0aGUgZXhpc3RpbmcgUFYKPiBjb25zb2xlIG5vZGVzLiAgRm9y IGV4YW1wbGU6Cj4gCj4gL2xvY2FsL2RvbWFpbi8kRE9NSUQveGVuLWNvbnNvbGUvJE5VTS9yaW5n LXJlZgo+IC9sb2NhbC9kb21haW4vJERPTUlEL3hlbi1jb25zb2xlLyROVU0vcG9ydAo+IAo+IFdo ZXJlICRET01JRCBpcyB0aGUgZ3Vlc3QgZG9tYWluIGlkLCBhbmQgJE5VTSBpcyB0aGUgY29uc29s ZSBudW1iZXIsCj4gc3RhcnRpbmcgZnJvbSAwLiBJZiB3ZSB1c2UgbmV3IGh2bV9wYXJtcyBmb3Ig dGhlIHBsMDExIFBWIGNvbnNvbGUsIHdlCj4gbWlnaHQgZ2V0IGF3YXkgd2l0aG91dCBhbnkgeGVu c3RvcmUgc3R1ZmYuCgpJJ20gYSBiaXQgY29uZnVzZWQ6IFdoeSBkb2VzIGl0IG1ha2Ugc2Vuc2Ug dG8gd3JpdGUgdG8geGVuc3RvcmUgaWYgdGhlCm90aGVyIGVuZCwgd2hpY2ggaXMgc3VwcG9zZWQg dG8gcmVhZCB0aGUgdmFsdWVzLCBjYW5ub3QgYWNjZXNzIHRoZW0/ICBJcwp0aGlzIGZvciBwZXJz aXN0ZW5jZS9taWdyYXRpb24gb3Igc29tZXRoaW5nIGxpa2UgdGhhdD8KCj4gCj4gRm9yIHNpbXBs aWNpdHksIGdpdmVuIHRoYXQgeGVuY29uc29sZWQgZG9lc24ndCBzdXBwb3J0IG11bHRpcGxlIFBW Cj4gY29uc29sZXMsIHdlIGNvdWxkIHNldHVwIHRoZSBwbDAxMSBQViBjb25zb2xlICppbnN0ZWFk KiBvZiB0aGUgcmVndWxhcgo+IFBWIGNvbnNvbGUsIGhhY2tpbmcgdG9vbHMvY29uc29sZS9kYWVt b24vaW8uYzpkb21haW5fY3JlYXRlX3JpbmcuIEl0J3MKPiBzYWZlIGlmIHRoZSB0b29sc3RhY2sg ZG9lc24ndCBwcm92aWRlIGEgUFYgY29uc29sZS4gV2hlbiBwbDAxMSBpcwo+IHJlcXVlc3RlZCwg bGlieGwgY291bGQgc2V0IHRoZSBwZm4gYW5kIGV2dGNobiBodm1fcGFyYW1zIHRvIDAgZm9yIHRo ZQo+IGluaXRpYWwgUFYgY29uc29sZS4gRXZlbnR1YWxseSwgaXQgd291bGQgYmUgbmljZSBpZiB4 ZW5jb25zb2xlZCB3YXMgYWJsZQo+IHRvIHN1cHBvcnQgYm90aCBjb25zb2xlcyBhdCB0aGUgc2Ft ZSB0aW1lLgoKRG8geW91IG1lYW4gZm9yIGRldmVsb3BtZW50IGFuZCBkZWJ1Z2dpbmcgb3IgZm9y IGFuIGV4aXN0aW5nIHNvbHV0aW9uPwoKSSB3b3VsZCBhZHZpc2UgYWdhaW5zdCBkb2luZyBzb21l dGhpbmcgdG8gcmVtb3ZlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHksCnNpbmNlIHRoZSBwb2ludCBv ZiB0aGlzIHdob2xlIGV4ZXJjaXNlIGlzIHRvIGltcHJvdmUgcG9ydGFiaWxpdHkgb2YgQVJNClZN IGltYWdlcywgYW5kIHdlIHdvdWxkIG5vdCBiZSBoZWxwaW5nIHdpdGggdGhhdCBzaXR1YXRpb24g YnkgYnJlYWtpbmcKZnVuY3Rpb25hbGl0eSBvZiBWTSBpbWFnZXMgdGhhdCBjdXJyZW50bHkgcmVs eSBvbiB0aGUgWGVuIGNvbnNvbGUgdG8gYmUKdGhlcmUuCgpUaGFua3MsCi1DaHJpc3RvZmZlcgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=