From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [DRAFT RFC] PVHv2 interaction with physical devices Date: Thu, 10 Nov 2016 11:54:52 +0100 Message-ID: <20161110105452.mo4u3fvdfovucjqd@mac> References: <20161109155912.47dfdb57dqg6p3qz@mac> <8c512138-c592-2147-d3b2-c4e67461f444@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c4n0Z-00026K-Bw for xen-devel@lists.xenproject.org; Thu, 10 Nov 2016 10:55:03 +0000 Content-Disposition: inline In-Reply-To: <8c512138-c592-2147-d3b2-c4e67461f444@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper Cc: Kelly , Julien Grall , Paul Durrant , Jan Beulich , xen-devel@lists.xenproject.org, Boris Ostrovsky , Zytaruk@mac List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBOb3YgMDksIDIwMTYgYXQgMDY6NTE6NDlQTSArMDAwMCwgQW5kcmV3IENvb3BlciB3 cm90ZToKPiBPbiAwOS8xMS8xNiAxNTo1OSwgUm9nZXIgUGF1IE1vbm7DqSB3cm90ZToKPiA+IExv dyAxTUIKPiA+IC0tLS0tLS0KPiA+Cj4gPiBXaGVuIGJvb3RlZCB3aXRoIGEgbGVnYWN5IEJJT1Ms IHRoZSBsb3cgMU1CIGNvbnRhaW5zIGZpcm13YXJlIHJlbGF0ZWQgZGF0YQo+ID4gdGhhdCBzaG91 bGQgYmUgaWRlbnRpdHkgbWFwcGVkIHRvIHRoZSBEb20wLiBUaGlzIGluY2x1ZGUgdGhlIEVCREEs IHZpZGVvCj4gPiBtZW1vcnkgYW5kIHBvc3NpYmx5IFJPTXMuIEFsbCBub24gUkFNIHJlZ2lvbnMg YmVsb3cgMU1CIHdpbGwgYmUgaWRlbnRpdHkKPiA+IG1hcHBlZCB0byB0aGUgRG9tMCBzbyB0aGF0 IGl0IGNhbiBhY2Nlc3MgdGhpcyBkYXRhIGZyZWVseS4KPiAKPiBBcmUgeW91IHByb3Bvc2luZyBh IHVuaWxhdGVyYWwgaWRlbnRpdHkgbWFwIG9mIHRoZSBmaXJzdCAxTUIsIG9yIGp1c3QKPiB0aGUg aW50ZXJlc3RpbmcgcmVnaW9ucz8KClRoZSBjdXJyZW50IGFwcHJvYWNoIGlkZW50aXR5IG1hcHMg dGhlIGZpcnN0IDFNQiBleGNlcHQgZm9yIFJBTSByZWdpb25zLCAKdGhhdCBhcmUgcG9wdWxhdGVk IGluIHRoZSBwMm0sIGFuZCB0aGUgZGF0YSBpbiB0aGUgb3JpZ2luYWwgcGFnZXMgaXMgY29waWVk IApvdmVyLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB0aGUgQVAgYm9vdCB0cmFtcG9saW5lIGlzIHBs YWNlZCBpbiB0aGUgUkFNIApyZWdpb25zIGJlbG93IDFNQiwgYW5kIHRoZSBlbXVsYXRvciBpcyBu b3QgYWJsZSB0byBleGVjdXRlIGNvZGUgZnJvbSBwYWdlcyAKbWFya2VkIGFzIHAybV9tbWlvX2Rp cmVjdC4KIAo+IE9uZSB0aGluZyB0byByZW1lbWJlciBpcyB0aGUgaUJWVCwgZm9yIGlzY3NpIGJv b3QsIHdoaWNoIGxpdmVzIGluCj4gcmVndWxhciBSQU0gYW5kIG5lZWRzIHNlYXJjaGluZyBmb3Iu CgpBbmQgSSBndWVzcyB0aGlzIGlzIG5vdCBzdGF0aWMgZGF0YSB0aGF0IGp1c3QgbmVlZHMgdG8g YmUgcmVhZCBieSB0aGUgT1M/IApUaGVuIEkgd2lsbCBoYXZlIHRvIGxvb2sgaW50byBmaXhpbmcg dGhlIGVtdWxhdG9yIHRvIGRlYWwgd2l0aCAKcDJtX21taW9fZGlyZWN0IHJlZ2lvbnMuCgo+ID4K PiA+IEFDUEkgcmVnaW9ucwo+ID4gLS0tLS0tLS0tLS0tCj4gPgo+ID4gQUNQSSByZWdpb25zIHdp bGwgYmUgaWRlbnRpdHkgbWFwcGVkIHRvIHRoZSBEb20wLCB0aGlzIGltcGxpZXMgcmVnaW9ucyB3 aXRoCj4gPiB0eXBlIDMgYW5kIDQgaW4gdGhlIGU4MjAgbWVtb3J5IG1hcC4gQWxzbywgc2luY2Ug c29tZSBCSU9TIHJlcG9ydCBpbmNvcnJlY3QKPiA+IG1lbW9yeSBtYXBzLCB0aGUgdG9wLWxldmVs IHRhYmxlcyBkaXNjb3ZlcmVkIGJ5IFhlbiAoYXMgbGlzdGVkIGluIHRoZQo+ID4ge1gvUn1TRFQp IHRoYXQgYXJlIG5vdCBvbiBSQU0gcmVnaW9ucyB3aWxsIGJlIG1hcHBlZCB0byBEb20wLgo+ID4K PiA+IFBDSSBtZW1vcnkgQkFScwo+ID4gLS0tLS0tLS0tLS0tLS0tCj4gPgo+ID4gUENJIGRldmlj ZXMgZGlzY292ZXJlZCBieSBYZW4gd2lsbCBoYXZlIGl0J3MgQkFScyBzY2FubmVkIGluIG9yZGVy IHRvIGRldGVjdAo+ID4gbWVtb3J5IEJBUnMsIGFuZCB0aG9zZSB3aWxsIGJlIGlkZW50aXR5IG1h cHBlZCB0byBEb20wLiBTaW5jZSBCQVJzIGNhbiBiZQo+ID4gZnJlZWx5IG1vdmVkIGJ5IHRoZSBE b20wIE9TIGJ5IHdyaXRpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIFBDSSBjb25maWcgc3BhY2UKPiA+ IHJlZ2lzdGVyLCBYZW4gbXVzdCB0cmFwIHRob3NlIGFjY2Vzc2VzIGFuZCB1bm1hcCB0aGUgcHJl dmlvdXMgcmVnaW9uIGFuZAo+ID4gbWFwIHRoZSBuZXcgb25lIGFzIHNldCBieSBEb20wLgo+ID4K PiA+IExpbWl0YXRpb25zCj4gPiAtLS0tLS0tLS0tLQo+ID4KPiA+ICAtIFhlbiBuZWVkcyB0byBi ZSBhd2FyZSBvZiBhbnkgUENJIGRldmljZSBiZWZvcmUgRG9tMCB0cmllcyB0byBpbnRlcmFjdCB3 aXRoCj4gPiAgICBpdCwgc28gdGhhdCB0aGUgTU1JTyByZWdpb25zIGFyZSBwcm9wZXJseSBtYXBw ZWQuCj4gPgo+ID4gSW50ZXJydXB0IG1hbmFnZW1lbnQKPiA+ID09PT09PT09PT09PT09PT09PT09 Cj4gPgo+ID4gT3ZlcnZpZXcKPiA+IC0tLS0tLS0tCj4gPgo+ID4gT24geDg2IHN5c3RlbXMgdGhl cmUgYXJlIHRyZWUgZGlmZmVyZW50IG1lY2hhbmlzbXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBvcmRl cgo+ID4gdG8gZGVsaXZlciBpbnRlcnJ1cHRzOiBJTyBBUElDLCBNU0kgYW5kIE1TSS1YLiBOb3Rl IHRoYXQgZWFjaCBkZXZpY2UgbWlnaHQKPiA+IHN1cHBvcnQgZGlmZmVyZW50IG1ldGhvZHMsIGJ1 dCB0aG9zZSBhcmUgbmV2ZXIgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUuCj4gPgo+ID4gTGVnYWN5 IFBDSSBpbnRlcnJ1cHRzCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Cj4gPiBUaGUgb25s eSB3YXkgdG8gZGVsaXZlciBsZWdhY3kgUENJIGludGVycnVwdHMgdG8gUFZIdjIgZ3Vlc3RzIGlz IHVzaW5nIHRoZQo+ID4gSU8gQVBJQywgUFZIdjIgZG9tYWlucyBkb24ndCBoYXZlIGFuIGVtdWxh dGVkIFBJQy4gQXMgYSBjb25zZXF1ZW5jZSB0aGUgQUNQSQo+ID4gX1BJQyBtZXRob2QgbXVzdCBi ZSBzZXQgdG8gQVBJQyBtb2RlIGJ5IHRoZSBEb20wIE9TLgo+ID4KPiA+IFhlbiB3aWxsIGFsd2F5 cyBwcm92aWRlIGEgc2luZ2xlIElPIEFQSUMsIHRoYXQgd2lsbCBtYXRjaCB0aGUgbnVtYmVyIG9m Cj4gPiBwb3NzaWJsZSBHU0lzIG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBUaGlzIGlzIHBv c3NpYmxlIGJlY2F1c2UgQUNQSQo+ID4gdXNlcyBhIHN5c3RlbSBjb29raWUgaW4gb3JkZXIgdG8g bmFtZSBpbnRlcnJ1cHRzLCBzbyB0aGUgSU8gQVBJQyBkZXZpY2UgSUQKPiA+IG9yIHBpbiBudW1i ZXIgaXMgbm90IHVzZWQgaW4gX1BUUiBtZXRob2RzLgo+ID4KPiA+IFhYWDogaXMgaXQgcG9zc2li bGUgdG8gaGF2ZSBtb3JlIHRoYW4gMjU2IEdTSXM/Cj4gCj4gWWVzLiAgVGhlcmUgaXMgbm8gcmVz dHJpY3Rpb24gb24gdGhlIG51bWJlciBvZiBJTy1BUElDIGluIGEgc3lzdGVtLCBhbmQKPiBubyBy ZXN0cmljdGlvbiBvbiB0aGUgbnVtYmVyIG9mIFBDSSBicmlkZ2VzIHRoZXNlIElPLUFQSUNzIHNl cnZlLgo+IAo+IEhvd2V2ZXIsIEkgd291bGQgc3VnZ2VzdCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8g b2ZmZXIgb25lIGEgMS10by0xIHZpZXcKPiBvZiBzeXN0ZW0gSU8tQVBJQ3MgdG8gdklPLUFQSUNz IGluIFBWSHYyIGRvbTAsIG9yIHRoZSBwaW4gbWFwcGluZ3MgYXJlCj4gZ29pbmcgdG8gZ2V0IGNv bmZ1c2VkIHdoZW4gcmVhZGluZyB0aGUgQUNQSSB0YWJsZXMuCgpIbSwgSSd2ZSBiZWVuIHNlYXJj aGluZyBmb3IgdGhpcywgYnV0IGl0IHNlZW1zIHRvIG1lIHRoYXQgQUNQSSB0YWJsZXMgd2lsbCAK YWx3YXlzIHVzZSBHU0lzIGluIEFQSUMgbW9kZSBpbiBvcmRlciB0byBkZXNjcmliZSBpbnRlcnJ1 cHRzLCBzbyBpdCBkb2Vzbid0IApzZWVtIHRvIG1hdHRlciB3aGV0aGVyIHRob3NlIEdTSXMgYXJl IHNjYXR0ZXJlZCBhY3Jvc3MgbXVsdGlwbGUgSU8gQVBJQ3Mgb3IgCmp1c3QgYSBzaW5nbGUgb25l LgoKPiA+Cj4gPiBUaGUgYmluZGluZyBiZXR3ZWVuIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGlu dGVycnVwdCBhbmQgdGhlIGVtdWxhdGVkCj4gPiBpbnRlcnJ1cHQgaXMgcGVyZm9ybWVkIHdoZW4g dW5tYXNraW5nIGFuIElPIEFQSUMgUElOLCBzbyB3cml0ZXMgdG8gdGhlCj4gPiBJT1JFRFRCTCBy ZWdpc3RlcnMgdGhhdCB1bnNldCB0aGUgbWFzayBiaXQgd2lsbCB0cmlnZ2VyIHRoaXMgYmluZGlu Zwo+ID4gYW5kIGVuYWJsZSB0aGUgaW50ZXJydXB0Lgo+ID4KPiA+IE1TSSBJbnRlcnJ1cHRzCj4g PiAtLS0tLS0tLS0tLS0tLQo+ID4KPiA+IE1TSSBpbnRlcnJ1cHRzIGFyZSBzZXR1cCB1c2luZyB0 aGUgUENJIGNvbmZpZyBzcGFjZSwgZWl0aGVyIHRoZSBJTyBwb3J0cwo+ID4gb3IgdGhlIG1lbW9y eSBtYXBwZWQgY29uZmlndXJhdGlvbiBhcmVhLiBUaGlzIG1lYW5zIHRoYXQgYm90aCBzcGFjZXMg c2hvdWxkCj4gPiBiZSB0cmFwcGVkIGJ5IFhlbiwgaW4gb3JkZXIgdG8gZGV0ZWN0IGFjY2Vzc2Vz IHRvIHRoZXNlIHJlZ2lzdGVycyBhbmQKPiA+IHByb3Blcmx5IGVtdWxhdGUgdGhlbS4KPiAKPiBj ZmMvY2Y4IG5lZWQgdHJhcHBpbmcgdW5jb25kaXRpb25hbGx5LCBhbmQgdGhlIE1NQ0ZHIHJlZ2lv biBjYW4gb25seSBiZQo+IGludGVyY2VwdGVkIGluIHVuaXRzIG9mIDRrLiAgQXMgYSByZXN1bHQs IFhlbiB3aWxsIHVuY29uZGl0aW9uYWxseSBzZWUKPiBhbGwgY29uZmlnIGFjY2Vzc2VzIGFueXdh eS4KClllcywgdGhhdCdzIHJpZ2h0IChob3dldmVyIGl0IG1pZ2h0IGRlY2lkZSB0byBqdXN0IHBh c3MtdGhyb3VnaCBzb21lIG9mIAp0aGVtKS4KCj4gPgo+ID4gU2luY2UgdGhlIG9mZnNldCBvZiB0 aGUgTVNJIHJlZ2lzdGVycyBpcyBub3QgZml4ZWQsIFhlbiBoYXMgdG8gcXVlcnkgdGhlCj4gPiBQ Q0kgY29uZmlndXJhdGlvbiBzcGFjZSBpbiBvcmRlciB0byBmaW5kIHRoZSBvZmZzZXQgb2YgdGhl IFBDSV9DQVBfSURfTVNJLAo+ID4gYW5kIHRoZW4gc2V0dXAgdGhlIGNvcnJlY3QgdHJhcHMsIHdo aWNoIGFsc28gdmFyeSBkZXBlbmRpbmcgb24gdGhlCj4gPiBjYXBhYmlsaXRpZXMgb2YgdGhlIGRl dmljZS4KPiAKPiBBbHRob3VnaCBvbmx5IG9uY2UgYXQgc3RhcnQtb2YtZGF5LiAgVGhlIGxheW91 dCBvZiBjYXBhYmlsaXRpZXMgaW4KPiBjb25maWcgc3BhY2UgZm9yIGEgcGFydGljdWxhciBkZXZp Y2UgaXMgc3RhdGljLgoKWWVzLCB0aGUgTVNJIGNhcGFiaWxpdGllcyBvZmZzZXQgaXMgZmV0Y2hl ZCBhdCB0aGUgc3RhcnQtaWYtZGF5IGFuZCB0aGVuIApzdG9yZWQuCgo+ID4gIFRoZSBmb2xsb3dp bmcgbGlzdCBjb250YWlucyB0aGUgc2V0IG9mIE1TSQo+ID4gcmVnaXN0ZXJzIHRoYXQgWGVuIHdp bGwgdHJhcCwgcGxlYXNlIHRha2UgaW50byBhY2NvdW50IHRoYXQgc29tZSBkZXZpY2VzCj4gPiBt aWdodCBvbmx5IGltcGxlbWVudCBhIHN1YnNldCBvZiB0aG9zZSByZWdpc3RlcnMsIHNvIG5vdCBh bGwgdHJhcHMgd2lsbAo+ID4gYmUgdXNlZDoKPiA+Cj4gPiAgLSBNZXNzYWdlIGNvbnRyb2wgcmVn aXN0ZXIgKG9mZnNldCAyKTogWGVuIHRyYXBzIGFjY2Vzc2VzIHRvIHRoaXMgcmVnaXN0ZXIsCj4g PiAgICBhbmQgc3RvcmVzIHRoZSBkYXRhIHdyaXR0ZW4gdG8gaXQgaW50byBhbiBpbnRlcm5hbCBz dHJ1Y3R1cmUuIFdoZW4gdGhlIE9TCj4gPiAgICBzZXRzIHRoZSBNU0kgZW5hYmxlIGJpdCAob2Zm c2V0IDApIFhlbiB3aWxsIHNldHVwIHRoZSBjb25maWd1cmVkIE1TSQo+ID4gICAgaW50ZXJydXB0 cyBhbmQgcm91dGUgdGhlbSB0byB0aGUgZ3Vlc3QuCj4gPgo+ID4gIC0gTWVzc2FnZSBhZGRyZXNz IHJlZ2lzdGVyIChvZmZzZXQgNCk6IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhpcyByZWdpc3RlciBh cmUKPiA+ICAgIHRyYXBwZWQgYnkgWGVuLCBhbmQgdGhlIHZhbHVlIGlzIHN0b3JlZCBpbnRvIGFu IGludGVybmFsIHN0cnVjdHVyZS4gVGhpcyBpcwo+ID4gICAgbGF0ZXIgdXNlZCB3aGVuIE1TSSBh cmUgZW5hYmxlZCBpbiBvcmRlciB0byBjb25maWd1cmUgdGhlIHZlY3RvcnMgaW5qZWN0ZWQKPiA+ ICAgIHRvIHRoZSBndWVzdC4gV3JpdGVzIHRvIHRoaXMgcmVnaXN0ZXIgd2l0aCBNU0kgYWxyZWFk eSBlbmFibGVkIHdpbGwgY2F1c2UKPiA+ICAgIGEgcmVjb25maWd1cmF0aW9uIG9mIHRoZSBiaW5k aW5nIG9mIGludGVycnVwdHMgdG8gdGhlIGd1ZXN0Lgo+ID4KPiA+ICAtIE1lc3NhZ2UgZGF0YSBy ZWdpc3RlciAob2Zmc2V0IDggb3IgMTIgaWYgbWVzc2FnZSBhZGRyZXNzIGlzIDY0Yml0cyk6IHdy aXRlcwo+ID4gICAgYW5kIHJlYWRzIHRvIHRoaXMgcmVnaXN0ZXIgYXJlIHRyYXBwZWQgYnkgWGVu LCBhbmQgdGhlIHZhbHVlIGlzIHN0b3JlZCBpbnRvCj4gPiAgICBhbiBpbnRlcm5hbCBzdHJ1Y3R1 cmUuIFRoaXMgaXMgdXNlZCB3aGVuIE1TSSBhcmUgZW5hYmxlZCBpbiBvcmRlciB0bwo+ID4gICAg Y29uZmlndXJlIHRoZSB2ZWN0b3Igd2hlcmUgdGhlIGd1ZXN0cyBleHBlY3RzIHRvIHJlY2VpdmUg dGhvc2UgaW50ZXJydXB0cy4KPiA+ICAgIFdyaXRlcyB0byB0aGlzIHJlZ2lzdGVyIHdpdGggTVNJ IGFscmVhZHkgZW5hYmxlZCB3aWxsIGNhdXNlIGEKPiA+ICAgIHJlY29uZmlndXJhdGlvbiBvZiB0 aGUgYmluZGluZyBvZiBpbnRlcnJ1cHRzIHRvIHRoZSBndWVzdC4KPiA+Cj4gPiAgLSBNYXNrIGFu ZCBwZW5kaW5nIGJpdHM6IHJlYWRzIG9yIHdyaXRlcyB0byB0aG9zZSByZWdpc3RlcnMgYXJlIG5v dCB0cmFwcGVkCj4gPiAgICBieSBYZW4uCj4gCj4gVGhlc2UgbXVzdCBiZSB0cmFwcGVkLiAgSW4g YWxsIGNhc2VzLCBYZW4gbXVzdCBtYWludGFpbiB0aGUgZ3Vlc3RzIGlkZWEKPiBvZiB3aGV0aGVy IHNvbWV0aGluZyBpcyBtYXNrZWQsIGFuZCBYZW4ncyBvd24gaWRlYS4gIFRoaXMgaXMgbmVjZXNz YXJ5Cj4gZm9yIGludGVycnVwdCBtaWdyYXRpb24uCgpPaCwgc28gbWFzayBiaXRzIG11c3QgYmUg dHJhcHBlZCBhbmQgdGhlIGludGVycnVwdCBtYXNrZWQgdXNpbmcgdGhlIFhlbiAKaW50ZXJydXB0 IEFQSSB0aGVuLCBub3RlZC4KCj4gSGF2aW5nIHNhaWQgdGhhdCwgdGhlIGVudGlyZSBpbnRlcnJ1 cHQgcmVtYXBwaW5nIHN1YnN5c3RlbSBpbiBYZW4gaXMgaW4KPiBkaXJlIG5lZWQgb2YgYW4gb3Zl cmhhdWwuICBJdCBpcyB0ZXJtaW5hbGx5IGR1bWIgYW5kIGluZWZmaWNpZW50LiAgV2l0aAo+IGlu dGVycnVwdCByZW1hcHBpbmcgZW5hYmxlZCwgWGVuIHNob3VsZCBuZXZlciBuZWVkIHRvIHRvdWNo IGludGVycnVwdAo+IHNvdXJjZXMgZm9yIG5vbi1ndWVzdCBhY3Rpb25zLgo+IAo+ID4KPiA+IE1T SS1YIEludGVycnVwdHMKPiA+IC0tLS0tLS0tLS0tLS0tLS0KPiA+Cj4gPiBNU0ktWCBpbiBjb250 cmFzdCB3aXRoIE1TSSBoYXMgcGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgaW4g dGhlCj4gPiBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgd2hpbGUgb3RoZXJzIHJlc2lkZSBpbnNp ZGUgb2YgdGhlIG1lbW9yeSBCQVJzIG9mIHRoZQo+ID4gZGV2aWNlLiBTbyBpbiB0aGlzIGNhc2Ug WGVuIG5lZWRzIHRvIHNldHVwIHRyYXBzIGZvciBib3RoIHRoZSBQQ0kKPiA+IGNvbmZpZ3VyYXRp b24gc3BhY2UgYW5kIHR3byBkaWZmZXJlbnQgbWVtb3J5IHJlZ2lvbnMuIFhlbiBoYXMgdG8gcXVl cnkgdGhlCj4gPiBwb3NpdGlvbiBvZiB0aGUgTVNJLVggY2FwYWJpbGl0eSB1c2luZyB0aGUgUENJ X0NBUF9JRF9NU0lYLCBhbmQgc2V0dXAgYQo+ID4gaGFuZGxlciBpbiBvcmRlciB0byB0cmFwIGFj Y2Vzc2VzIHRvIHRoZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBYZW4gYWxzbyBoYXMKPiA+IHRvIGZp Z3VyZSBvdXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBNU0ktWCB0YWJsZSBhbmQgUEJBLCB1c2luZyB0 aGUgdGFibGUgQklSCj4gPiBhbmQgdGFibGUgb2Zmc2V0LCBhbmQgdGhlIFBCQSBCSVIgYW5kIFBC QSBvZmZzZXQuIE9uY2UgdGhvc2UgYXJlIGtub3duIGEKPiA+IGhhbmRsZXIgc2hvdWxkIGFsc28g YmUgc2V0dXAgaW4gb3JkZXIgdG8gdHJhcCBhY2Nlc3NlcyB0byB0aG9zZSBtZW1vcnkgCj4gPiBy ZWdpb25zLgo+ID4KPiA+IFRoaXMgaXMgdGhlIGxpc3Qgb2YgTVNJLVggcmVnaXN0ZXJzIHRoYXQg YXJlIHVzZWQgaW4gb3JkZXIgdG8gbWFuYWdlIE1TSS1YCj4gPiBpbiB0aGUgUENJIGNvbmZpZ3Vy YXRpb24gc3BhY2U6Cj4gPgo+ID4gIC0gTWVzc2FnZSBjb250cm9sOiBYZW4gc2hvdWxkIHRyYXAg YWNjZXNzZXMgdG8gdGhpcyByZWdpc3RlciBpbiBvcmRlciB0bwo+ID4gICAgZGV0ZWN0IGNoYW5n ZXMgdG8gdGhlIE1TSS1YIGVuYWJsZSBmaWVsZCAoYml0IDE1KS4gQ2hhbmdlcyB0byB0aGlzIGJp dAo+ID4gICAgd2lsbCB0cmlnZ2VyIHRoZSBzZXR1cCBvZiB0aGUgTVNJLVggdGFibGUgZW50cmll cyBjb25maWd1cmVkLiBXcml0ZXMKPiA+ICAgIHRvIHRoZSBmdW5jdGlvbiBtYXNrIGJpdCB3aWxs IGJlIHBhc3NlZC10aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nCj4gPiAgICByZWdpc3Rlci4KPiA+ Cj4gPiAgLSBUYWJsZSBvZmZzZXQsIHRhYmxlIEJJUiwgUEJBIG9mZnNldCwgUEJBIEJJUjogYWNj ZXNzZXMgdG8gdGhvc2UgcmVnaXN0ZXJzCj4gPiAgICBhcmUgbm90IHRyYXBwZWQgYnkgWGVuLgo+ IAo+IFRoZXNlIHdpbGwgYmUgdHJhcHBlZCwgYnV0IGFyZSByZWFkLW9ubHkgc28gWGVuIG5lZWRu J3QgZG8gYW55dGhpbmcKPiBleGNpdGluZyBhcyBwYXJ0IG9mIGVtdWxhdGlvbi4KClJpZ2h0LCB0 aG9zZSBhcmUgcmVhZC1vbmx5LgoKPiA+Cj4gPiBUaGUgZm9sbG93aW5nIHJlZ2lzdGVycyByZXNp ZGUgaW4gbWVtb3J5LCBhbmQgYXJlIHBvaW50ZWQgb3V0IGJ5IHRoZSBUYWJsZSBhbmQKPiA+IFBC QSBmaWVsZHMgZm91bmQgaW4gdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlOgo+ID4KPiA+ICAt IE1lc3NhZ2UgYWRkcmVzcyBhbmQgZGF0YTogd3JpdGVzIGFuZCByZWFkcyB0byB0aG9zZSByZWdp c3RlcnMgYXJlIHRyYXBwZWQKPiA+ICAgIGJ5IFhlbiwgYW5kIHRoZSB2YWx1ZSBpcyBzdG9yZWQg aW50byBhbiBpbnRlcm5hbCBzdHJ1Y3R1cmUuIFRoaXMgaXMgbGF0ZXIKPiA+ICAgIHVzZWQgYnkg WGVuIGluIG9yZGVyIHRvIGNvbmZpZ3VyZSB0aGUgaW50ZXJydXB0IGluamVjdGVkIHRvIHRoZSBn dWVzdC4KPiA+ICAgIFdyaXRlcyB0byB0aG9zZSByZWdpc3RlcnMgd2l0aCBNU0ktWCBhbHJlYWR5 IGVuYWJsZWQgd2lsbCBub3QgY2F1c2UgYQo+ID4gICAgcmVjb25maWd1cmF0aW9uIG9mIHRoZSBp bnRlcnJ1cHQuCj4gPgo+ID4gIC0gVmVjdG9yIGNvbnRyb2w6IHdyaXRlcyBhbmQgcmVhZHMgYXJl IHRyYXBwZWQsIGNsZWFyaW5nIHRoZSBtYXNrIGJpdCAoYml0IDApCj4gPiAgICB3aWxsIGNhdXNl IFhlbiB0byBzZXR1cCB0aGUgY29uZmlndXJlZCBpbnRlcnJ1cHQgaWYgTVNJLVggaXMgZ2xvYmFs bHkKPiA+ICAgIGVuYWJsZWQgaW4gdGhlIG1lc3NhZ2UgY29udHJvbCBmaWVsZC4KPiA+Cj4gPiAg LSBQZW5kaW5nIGJpdHMgYXJyYXk6IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhpcyByZWdpc3RlciBh cmUgbm90IHRyYXBwZWQgYnkKPiA+ICAgIFhlbi4KPiA+Cj4gPiBMaW1pdGF0aW9ucwo+ID4gLS0t LS0tLS0tLS0KPiA+Cj4gPiAgLSBEdWUgdG8gdGhlIGZhY3QgdGhhdCBEb20wIGlzIG5vdCBhYmxl IHRvIHBhcnNlIGR5bmFtaWMgQUNQSSB0YWJsZXMsCj4gPiAgICBzb21lIFVBUlQgZGV2aWNlcyBt aWdodCBvbmx5IGZ1bmN0aW9uIGluIHBvbGxpbmcgbW9kZSwgYmVjYXVzZSBYZW4KPiA+ICAgIHdp bGwgYmUgdW5hYmxlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgaW50ZXJydXB0IHBpbnMgd2l0 aG91dCBEb20wCj4gPiAgICBjb2xsYWJvcmF0aW9uLCBhbmQgdGhlIFVBUlQgaW4gdXNlIGJ5IFhl biBzaG91bGQgYmUgZXhwbGljaXRseSBibGFja2xpc3RlZAo+ID4gICAgZnJvbSBEb20wIGFjY2Vz cy4KPiAKPiBUaGlzIHJlbWluZHMgbWUgdGhhdCB3ZSBuZWVkIHRvIGluY2x1ZGUgc29tZSBIUEVU IHF1aXJrcyBpbiBYZW4gYXMgd2VsbC4KPiAKPiBUaGVyZSBpcyBhbiBlbnRpcmUgcmFuZ2Ugb2Yg TmVoYWxlbSBlcmEgbWFjaGluZXMgd2hlcmUgTGludXggZmluZHMgYW4KPiBIUEVUIGluIHRoZSBJ T0ggdmlhIHF1aXJrcyBhbG9uZSwgYW5kIG5vdCB2aWEgdGhlIEFDUEkgdGFibGVzLCBhbmQKPiBu b3RoaW5nIGluIFhlbiBjdXJyZW50bHkga25vd3MgdG8gZGlzYWxsb3cgdGhpcyBhY2Nlc3MuCgpI bSwgaWYgaXQncyB1c2luZyBxdWlya3MgaXQncyBnb2luZyB0byBiZSBoYXJkIHRvIHByZXZlbnQg dGhpcy4gQXQgd29yc2UgCkxpbnV4IGlzIGdvaW5nIHRvIGRpc2NvdmVyIHRoYXQgdGhlIEhQRVQg aXMgbm9uLWZ1bmN0aW9uYWwgYXQgbGVhc3QgSSAKYXNzdW1lPwoKUm9nZXIuCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK