From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver Date: Wed, 18 Apr 2018 10:18:20 +0000 Message-ID: <7d6710a76b9a42299139d7914358ed52__28171.4385179386$1524046647$gmane$org@AMSPEX02CL03.citrite.net> References: <20180329131931.29957-1-andr2000@gmail.com> <5d8fec7f-956c-378f-be90-f45029385740@gmail.com> <20180416192905.GA18096@downor-Z87X-UD5H> <20180417075928.GT31310@phenom.ffwll.local> <20180417205744.GA15930@downor-Z87X-UD5H> <41487acb-a67a-8933-d0c3-702c19b0938e@gmail.com> <20180418073508.ptvntwedczpvl7bx@MacBook-Pro-de-Roger.local> <20180418101058.hyqk3gr3b2ibxswu@MacBook-Pro-de-Roger.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f8kAX-0004xV-GU for xen-devel@lists.xenproject.org; Wed, 18 Apr 2018 10:18:29 +0000 In-Reply-To: <20180418101058.hyqk3gr3b2ibxswu@MacBook-Pro-de-Roger.local> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau Monne , Oleksandr Andrushchenko Cc: "jgross@suse.com" , Artem Mygaiev , Dongwon Kim , "Oleksandr_Andrushchenko@epam.com" , "airlied@linux.ie" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Potrola, MateuszX" , "daniel.vetter@intel.com" , "xen-devel@lists.xenproject.org" , "boris.ostrovsky@oracle.com" , Matt Roper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmDQo+IE9mIFJv Z2VyIFBhdSBNb25uw6kNCj4gU2VudDogMTggQXByaWwgMjAxOCAxMToxMQ0KPiBUbzogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPGFuZHIyMDAwQGdtYWlsLmNvbT4NCj4gQ2M6IGpncm9zc0BzdXNl LmNvbTsgQXJ0ZW0gTXlnYWlldiA8QXJ0ZW1fTXlnYWlldkBlcGFtLmNvbT47DQo+IERvbmd3b24g S2ltIDxkb25nd29uLmtpbUBpbnRlbC5jb20+OyBhaXJsaWVkQGxpbnV4LmllOw0KPiBPbGVrc2Fu ZHJfQW5kcnVzaGNoZW5rb0BlcGFtLmNvbTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsg ZHJpLQ0KPiBkZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFBvdHJvbGEsIE1hdGV1c3pYDQo+ IDxtYXRldXN6eC5wb3Ryb2xhQGludGVsLmNvbT47IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZzsNCj4gZGFuaWVsLnZldHRlckBpbnRlbC5jb207IGJvcmlzLm9zdHJvdnNreUBvcmFjbGUu Y29tOyBNYXR0IFJvcGVyDQo+IDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSZTogW1hlbi1kZXZlbF0gW1BBVENIIDAvMV0gZHJtL3hlbi16Y29weTogQWRkIFhlbiB6ZXJv LWNvcHkNCj4gaGVscGVyIERSTSBkcml2ZXINCj4gDQo+IE9uIFdlZCwgQXByIDE4LCAyMDE4IGF0 IDExOjAxOjEyQU0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvDQo+IHdyb3RlOg0KPiA+ IE9uIDA0LzE4LzIwMTggMTA6MzUgQU0sIFJvZ2VyIFBhdSBNb25uw6kgd3JvdGU6DQo+ID4gPiBP biBXZWQsIEFwciAxOCwgMjAxOCBhdCAwOTozODozOUFNICswMzAwLCBPbGVrc2FuZHIgQW5kcnVz aGNoZW5rbw0KPiB3cm90ZToNCj4gPiA+ID4gT24gMDQvMTcvMjAxOCAxMTo1NyBQTSwgRG9uZ3dv biBLaW0gd3JvdGU6DQo+ID4gPiA+ID4gT24gVHVlLCBBcHIgMTcsIDIwMTggYXQgMDk6NTk6MjhB TSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToNCj4gPiA+ID4gPiA+IE9uIE1vbiwgQXByIDE2 LCAyMDE4IGF0IDEyOjI5OjA1UE0gLTA3MDAsIERvbmd3b24gS2ltIHdyb3RlOg0KPiA+ID4gPiAz LjIgQmFja2VuZCBleHBvcnRzIGRtYS1idWYgdG8geGVuLWZyb250DQo+ID4gPiA+DQo+ID4gPiA+ IEluIHRoaXMgY2FzZSBEb20wIHBhZ2VzIGFyZSBzaGFyZWQgd2l0aCBEb21VLiBBcyBiZWZvcmUs IERvbVUgY2FuDQo+IG9ubHkgd3JpdGUNCj4gPiA+ID4gdG8gdGhlc2UgcGFnZXMsIG5vdCBhbnkg b3RoZXIgcGFnZSBmcm9tIERvbTAsIHNvIGl0IGNhbiBiZSBzdGlsbA0KPiBjb25zaWRlcmVkDQo+ ID4gPiA+IHNhZmUuDQo+ID4gPiA+IEJ1dCwgdGhlIGZvbGxvd2luZyBtdXN0IGJlIGNvbnNpZGVy ZWQgKGhpZ2hsaWdodGVkIGluIHhlbi1mcm9udCdzIEtlcm5lbA0KPiA+ID4gPiBkb2N1bWVudGF0 aW9uKToNCj4gPiA+ID4gIMKgLSBJZiBndWVzdCBkb21haW4gZGllcyB0aGVuIHBhZ2VzL2dyYW50 cyByZWNlaXZlZCBmcm9tIHRoZSBiYWNrZW5kDQo+IGNhbm5vdA0KPiA+ID4gPiAgwqDCoCBiZSBj bGFpbWVkIGJhY2sgLSB0aGluayBvZiBpdCBhcyBtZW1vcnkgbG9zdCB0byBEb20wICh3b24ndCBi ZSB1c2VkDQo+IGZvcg0KPiA+ID4gPiBhbnkNCj4gPiA+ID4gIMKgwqAgb3RoZXIgZ3Vlc3QpDQo+ ID4gPiA+ICDCoC0gTWlzYmVoYXZpbmcgZ3Vlc3QgbWF5IHNlbmQgdG9vIG1hbnkgcmVxdWVzdHMg dG8gdGhlIGJhY2tlbmQNCj4gZXhoYXVzdGluZw0KPiA+ID4gPiAgwqDCoCBpdHMgZ3JhbnQgcmVm ZXJlbmNlcyBhbmQgbWVtb3J5IChjb25zaWRlciB0aGlzIGZyb20gc2VjdXJpdHkgUE9WKS4NCj4g QXMgdGhlDQo+ID4gPiA+ICDCoMKgIGJhY2tlbmQgcnVucyBpbiB0aGUgdHJ1c3RlZCBkb21haW4g d2UgYWxzbyBhc3N1bWUgdGhhdCBpdCBpcyB0cnVzdGVkDQo+IGFzDQo+ID4gPiA+IHdlbGwsDQo+ ID4gPiA+ICDCoMKgIGUuZy4gbXVzdCB0YWtlIG1lYXN1cmVzIHRvIHByZXZlbnQgRERvUyBhdHRh Y2tzLg0KPiA+ID4gSSBjYW5ub3QgcGFyc2UgdGhlIGFib3ZlIHNlbnRlbmNlOg0KPiA+ID4NCj4g PiA+ICJBcyB0aGUgYmFja2VuZCBydW5zIGluIHRoZSB0cnVzdGVkIGRvbWFpbiB3ZSBhbHNvIGFz c3VtZSB0aGF0IGl0IGlzDQo+ID4gPiB0cnVzdGVkIGFzIHdlbGwsIGUuZy4gbXVzdCB0YWtlIG1l YXN1cmVzIHRvIHByZXZlbnQgRERvUyBhdHRhY2tzLiINCj4gPiA+DQo+ID4gPiBXaGF0J3MgdGhl IHJlbGF0aW9uIGJldHdlZW4gYmVpbmcgdHJ1c3RlZCBhbmQgcHJvdGVjdGluZyBmcm9tIERvUw0K PiA+ID4gYXR0YWNrcz8NCj4gPiBJIG1lYW4gdGhhdCB3ZSB0cnVzdCB0aGUgYmFja2VuZCB0aGF0 IGl0IGNhbiBwcmV2ZW50IERvbTANCj4gPiBmcm9tIGNyYXNoaW5nIGluIGNhc2UgRG9tVSdzIGZy b250ZW5kIG1pc2JlaGF2ZXMsIGUuZy4NCj4gPiBpZiB0aGUgZnJvbnRlbmQgc2VuZHMgdG9vIG1h bnkgbWVtb3J5IHJlcXVlc3RzIGV0Yy4NCj4gPiA+IEluIGFueSBjYXNlLCBhbGw/IFBWIHByb3Rv Y29scyBhcmUgaW1wbGVtZW50ZWQgd2l0aCB0aGUgZnJvbnRlbmQNCj4gPiA+IHNoYXJpbmcgcGFn ZXMgdG8gdGhlIGJhY2tlbmQsIGFuZCBJIHRoaW5rIHRoZXJlJ3MgYSByZWFzb24gd2h5IHRoaXMN Cj4gPiA+IG1vZGVsIGlzIHVzZWQsIGFuZCBpdCBzaG91bGQgY29udGludWUgdG8gYmUgdXNlZC4N Cj4gPiBUaGlzIGlzIHRoZSBmaXJzdCB1c2UtY2FzZSBhYm92ZS4gQnV0IHRoZXJlIGFyZSByZWFs LXdvcmxkDQo+ID4gdXNlLWNhc2VzIChlbWJlZGRlZCBpbiBteSBjYXNlKSB3aGVuIHBoeXNpY2Fs bHkgY29udGlndW91cyBtZW1vcnkNCj4gPiBuZWVkcyB0byBiZSBzaGFyZWQsIG9uZSBvZiB0aGUg cG9zc2libGUgd2F5cyB0byBhY2hpZXZlIHRoaXMgaXMNCj4gPiB0byBzaGFyZSBjb250aWd1b3Vz IG1lbW9yeSBmcm9tIERvbTAgdG8gRG9tVSAodGhlIHNlY29uZCB1c2UtY2FzZQ0KPiBhYm92ZSkN Cj4gPiA+IEhhdmluZyB0byBhZGQgbG9naWMgaW4gdGhlIGJhY2tlbmQgdG8gcHJldmVudCBzdWNo IGF0dGFja3MgbWVhbnMNCj4gPiA+IHRoYXQ6DQo+ID4gPg0KPiA+ID4gICAtIFdlIG5lZWQgbW9y ZSBjb2RlIGluIHRoZSBiYWNrZW5kLCB3aGljaCBpbmNyZWFzZXMgY29tcGxleGl0eSBhbmQNCj4g PiA+ICAgICBjaGFuY2VzIG9mIGJ1Z3MuDQo+ID4gPiAgIC0gU3VjaCBjb2RlL2xvZ2ljIGNvdWxk IGJlIHdyb25nLCB0aHVzIGFsbG93aW5nIERvUy4NCj4gPiBZb3UgY2FuIGxpdmUgd2l0aG91dCB0 aGlzIGNvZGUgYXQgYWxsLCBidXQgdGhpcyBpcyB0aGVuIHVwIHRvDQo+ID4gYmFja2VuZCB3aGlj aCBtYXkgbWFrZSBEb20wIGRvd24gYmVjYXVzZSBvZiBEb21VJ3MgZnJvbnRlbmQgZG9pbmcNCj4g ZXZpbA0KPiA+IHRoaW5ncw0KPiANCj4gSU1PIHdlIHNob3VsZCBkZXNpZ24gcHJvdG9jb2xzIHRo YXQgZG8gbm90IGFsbG93IHN1Y2ggYXR0YWNrcyBpbnN0ZWFkDQo+IG9mIGhhdmluZyB0byBkZWZl bmQgYWdhaW5zdCB0aGVtLg0KPiANCj4gPiA+ID4gNC4geGVuLWZyb250L2JhY2tlbmQveGVuLXpj b3B5IHN5bmNocm9uaXphdGlvbg0KPiA+ID4gPg0KPiA+ID4gPiA0LjEuIEFzIEkgYWxyZWFkeSBz YWlkIGluIDIpIGFsbCB0aGUgaW50ZXIgVk0gY29tbXVuaWNhdGlvbiBoYXBwZW5zDQo+IGJldHdl ZW4NCj4gPiA+ID4geGVuLWZyb250IGFuZCB0aGUgYmFja2VuZCwgeGVuLXpjb3B5IGlzIE5PVCBp bnZvbHZlZCBpbiB0aGF0Lg0KPiA+ID4gPiBXaGVuIHhlbi1mcm9udCB3YW50cyB0byBkZXN0cm95 IGEgZGlzcGxheSBidWZmZXIgKGR1bWIvZG1hLWJ1ZikgaXQNCj4gaXNzdWVzIGENCj4gPiA+ID4g WEVORElTUExfT1BfREJVRl9ERVNUUk9ZIGNvbW1hbmQgKG9wcG9zaXRlIHRvDQo+IFhFTkRJU1BM X09QX0RCVUZfQ1JFQVRFKS4NCj4gPiA+ID4gVGhpcyBjYWxsIGlzIHN5bmNocm9ub3VzLCBzbyB4 ZW4tZnJvbnQgZXhwZWN0cyB0aGF0IGJhY2tlbmQgZG9lcyBmcmVlDQo+IHRoZQ0KPiA+ID4gPiBi dWZmZXIgcGFnZXMgb24gcmV0dXJuLg0KPiA+ID4gPg0KPiA+ID4gPiA0LjIuIEJhY2tlbmQsIG9u IFhFTkRJU1BMX09QX0RCVUZfREVTVFJPWToNCj4gPiA+ID4gIMKgIC0gY2xvc2VzIGFsbCBkdW1i IGhhbmRsZXMvZmQncyBvZiB0aGUgYnVmZmVyIGFjY29yZGluZyB0byBbM10NCj4gPiA+ID4gIMKg IC0gaXNzdWVzIERSTV9JT0NUTF9YRU5fWkNPUFlfRFVNQl9XQUlUX0ZSRUUgSU9DVEwgdG8geGVu LQ0KPiB6Y29weSB0byBtYWtlDQo+ID4gPiA+IHN1cmUNCj4gPiA+ID4gIMKgwqDCoCB0aGUgYnVm ZmVyIGlzIGZyZWVkICh0aGluayBvZiBpdCBhcyBpdCB3YWl0cyBmb3IgZG1hLWJ1Zi0+cmVsZWFz ZQ0KPiA+ID4gPiBjYWxsYmFjaykNCj4gPiA+IFNvIHRoaXMgemNvcHkgdGhpbmcga2VlcHMgc29t ZSBraW5kIG9mIHRyYWNrIG9mIHRoZSBtZW1vcnkgdXNhZ2U/IFdoeQ0KPiA+ID4gY2FuJ3QgdGhl IHVzZXItc3BhY2UgYmFja2VuZCBrZWVwIHRyYWNrIG9mIHRoZSBidWZmZXIgdXNhZ2U/DQo+ID4g QmVjYXVzZSB0aGVyZSBpcyBubyBkbWEtYnVmIFVBUEkgd2hpY2ggYWxsb3dzIHRvIHRyYWNrIHRo ZSBidWZmZXIgbGlmZSBjeWNsZQ0KPiA+IChlLmcuIHdhaXQgdW50aWwgZG1hLWJ1ZidzIC5yZWxl YXNlIGNhbGxiYWNrIGlzIGNhbGxlZCkNCj4gPiA+ID4gIMKgIC0gcmVwbGllcyB0byB4ZW4tZnJv bnQgdGhhdCB0aGUgYnVmZmVyIGNhbiBiZSBkZXN0cm95ZWQuDQo+ID4gPiA+IFRoaXMgd2F5IGRl bGV0aW9uIG9mIHRoZSBidWZmZXIgaGFwcGVucyBzeW5jaHJvbm91c2x5IG9uIGJvdGggRG9tMA0K PiBhbmQgRG9tVQ0KPiA+ID4gPiBzaWRlcy4gSW4gY2FzZSBpZiBEUk1fSU9DVExfWEVOX1pDT1BZ X0RVTUJfV0FJVF9GUkVFIHJldHVybnMNCj4gd2l0aCB0aW1lLW91dA0KPiA+ID4gPiBlcnJvcg0K PiA+ID4gPiAoQlRXLCB3YWl0IHRpbWUgaXMgYSBwYXJhbWV0ZXIgb2YgdGhpcyBJT0NUTCksIFhl biB3aWxsIGRlZmVyIGdyYW50DQo+ID4gPiA+IHJlZmVyZW5jZQ0KPiA+ID4gPiByZW1vdmFsIGFu ZCB3aWxsIHJldHJ5IGxhdGVyIHVudGlsIHRob3NlIGFyZSBmcmVlLg0KPiA+ID4gPg0KPiA+ID4g PiBIb3BlIHRoaXMgaGVscHMgdW5kZXJzdGFuZCBob3cgYnVmZmVycyBhcmUgc3luY2hyb25vdXNs eSBkZWxldGVkIGluDQo+IGNhc2UNCj4gPiA+ID4gb2YgeGVuLXpjb3B5IHdpdGggYSBzaW5nbGUg cHJvdG9jb2wgY29tbWFuZC4NCj4gPiA+ID4NCj4gPiA+ID4gSSB0aGluayB0aGUgYWJvdmUgbG9n aWMgY2FuIGFsc28gYmUgcmUtdXNlZCBieSB0aGUgaHlwZXItZG1hYnVmIGRyaXZlcg0KPiB3aXRo DQo+ID4gPiA+IHNvbWUgYWRkaXRpb25hbCB3b3JrOg0KPiA+ID4gPg0KPiA+ID4gPiAxLiB4ZW4t emNvcHkgY2FuIGJlIHNwbGl0IGludG8gMiBwYXJ0cyBhbmQgZXh0ZW5kOg0KPiA+ID4gPiAxLjEu IFhlbiBnbnRkZXYgZHJpdmVyIFs0XSwgWzVdIHRvIGFsbG93IGNyZWF0aW5nIGRtYS1idWYgZnJv bSBncmVmcyBhbmQNCj4gPiA+ID4gdmlzZSB2ZXJzYSwNCj4gPiA+IEkgZG9uJ3Qga25vdyBtdWNo IGFib3V0IHRoZSBkbWEtYnVmIGltcGxlbWVudGF0aW9uIGluIExpbnV4LCBidXQNCj4gPiA+IGdu dGRldiBpcyBhIHVzZXItc3BhY2UgZGV2aWNlLCBhbmQgQUZBSUNUIHVzZXItc3BhY2UgYXBwbGlj YXRpb25zDQo+ID4gPiBkb24ndCBoYXZlIGFueSBub3Rpb24gb2YgZG1hIGJ1ZmZlcnMuIEhvdyBh cmUgc3VjaCBidWZmZXJzIHVzZWZ1bCBmb3INCj4gPiA+IHVzZXItc3BhY2U/IFdoeSBjYW4ndCB0 aGlzIGp1c3QgYmUgY2FsbGVkIG1lbW9yeT8NCj4gPiBBIGRtYS1idWYgaXMgc2VlbiBieSB1c2Vy LXNwYWNlIGFzIGEgZmlsZSBkZXNjcmlwdG9yIGFuZCB5b3UgY2FuDQo+ID4gcGFzcyBpdCB0byBk aWZmZXJlbnQgZHJpdmVycyB0aGVuLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzaGFyZSBhIGJ1ZmZl cg0KPiA+IHVzZWQgYnkgYSBkaXNwbGF5IGRyaXZlciBmb3Igc2Nhbm91dCB3aXRoIGEgR1BVLCB0 byBjb21wb3NlIGEgcGljdHVyZQ0KPiA+IGludG8gaXQ6DQo+ID4gMS4gVXNlci1zcGFjZSAoVVMp IGFsbG9jYXRlcyBhIGRpc3BsYXkgYnVmZmVyIGZyb20gZGlzcGxheSBkcml2ZXINCj4gPiAyLiBV UyBhc2tzIGRpc3BsYXkgZHJpdmVyIHRvIGV4cG9ydCB0aGUgZG1hLWJ1ZiB3aGljaCBiYWNrcyB1 cCB0aGF0IGJ1ZmZlciwNCj4gPiBVUyBnZXRzIGJ1ZmZlcidzIGZkOiBkbWFfYnVmX2ZkDQo+ID4g My4gVVMgYXNrcyBHUFUgZHJpdmVyIHRvIGltcG9ydCBhIGJ1ZmZlciBhbmQgcHJvdmlkZXMgaXQg d2l0aCBkbWFfYnVmX2ZkDQo+ID4gNC4gR1BVIHJlbmRlcnMgY29udGVudHMgaW50byBkaXNwbGF5 IGJ1ZmZlciAoZG1hX2J1Zl9mZCkNCj4gDQo+IEFmdGVyIHNwZWFraW5nIHdpdGggT2xla3NhbmRy IG9uIElSQywgSSB0aGluayB0aGUgbWFpbiB1c2FnZSBvZiB0aGUNCj4gZ250ZGV2IGV4dGVuc2lv biBpcyB0bzoNCj4gDQo+IDEuIENyZWF0ZSBhIGRtYS1idWYgZnJvbSBhIHNldCBvZiBncmFudCBy ZWZlcmVuY2VzLg0KPiAyLiBTaGFyZSBkbWEtYnVmIGFuZCBnZXQgYSBsaXN0IG9mIGdyYW50IHJl ZmVyZW5jZXMuDQo+IA0KPiBJIHRoaW5rIHRoaXMgc2V0IG9mIG9wZXJhdGlvbnMgY291bGQgYmUg YnJva2VuIGludG86DQo+IA0KPiAxLjEgTWFwIGdyYW50IHJlZmVyZW5jZXMgaW50byB1c2VyLXNw YWNlIHVzaW5nIHRoZSBnbnRkZXYuDQo+IDEuMiBDcmVhdGUgYSBkbWEtYnVmIG91dCBvZiBhIHNl dCBvZiB1c2VyLXNwYWNlIHZpcnR1YWwgYWRkcmVzc2VzLg0KPiANCj4gMi4xIE1hcCBhIGRtYS1i dWYgaW50byB1c2VyLXNwYWNlLg0KPiAyLjIgR2V0IGdyZWZzIG91dCBvZiB0aGUgdXNlci1zcGFj ZSBhZGRyZXNzZXMgd2hlcmUgdGhlIGRtYS1idWYgaXMNCj4gICAgIG1hcHBlZC4NCj4gDQo+IFNv IGl0IHNlZW1zIGxpa2Ugd2hhdCdzIGFjdHVhbGx5IG1pc3NpbmcgaXMgYSB3YXkgdG86DQo+IA0K PiAgLSBDcmVhdGUgYSBkbWEtYnVmIGZyb20gYSBsaXN0IG9mIHVzZXItc3BhY2UgdmlydHVhbCBh ZGRyZXNzZXMuDQo+ICAtIEFsbG93IHRvIG1hcCBhIGRtYS1idWYgaW50byB1c2VyLXNwYWNlLCBz byBpdCBjYW4gdGhlbiBiZSB1c2VkIHdpdGgNCj4gICAgdGhlIGdudGRldi4NCj4gDQo+IEkgdGhp bmsgdGhpcyBpcyBnZW5lcmljIGVub3VnaCB0aGF0IGl0IGNvdWxkIGJlIGltcGxlbWVudGVkIGJ5 IGENCj4gZGV2aWNlIG5vdCB0aWVkIHRvIFhlbi4gQUZBSUNUIHRoZSBoeXBlcl9kbWEgZ3V5cyBh bHNvIHdhbnRlZA0KPiBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzLg0KPiANCj4gPiBGaW5hbGx5 LCB0aGlzIGlzIGluZGVlZCBzb21lIG1lbW9yeSwgYnV0IGEgYml0IG1vcmUgWzFdDQo+ID4gPg0K PiA+ID4gQWxzbywgKHdpdGggbXkgRnJlZUJTRCBtYWludGFpbmVyIGhhdCkgaG93IGlzIHRoaXMg Z29pbmcgdG8gdHJhbnNsYXRlDQo+ID4gPiB0byBvdGhlciBPU2VzPyBTbyBmYXIgdGhlIG9wZXJh dGlvbnMgcGVyZm9ybWVkIGJ5IHRoZSBnbnRkZXYgZGV2aWNlDQo+ID4gPiBhcmUgbW9zdGx5IE9T LWFnbm9zdGljIGJlY2F1c2UgdGhpcyBqdXN0IG1hcC91bm1hcCBtZW1vcnksIGFuZCBpbiBmYWN0 DQo+ID4gPiB0aGV5IGFyZSBpbXBsZW1lbnRlZCBieSBMaW51eCBhbmQgRnJlZUJTRC4NCj4gPiBB dCB0aGUgbW9tZW50IEkgY2FuIG9ubHkgc2VlIExpbnV4IGltcGxlbWVudGF0aW9uIGFuZCBpdCBz ZWVtcw0KPiA+IHRvIGJlIHBlcmZlY3RseSBvayBhcyB3ZSBkbyBub3QgY2hhbmdlIFhlbidzIEFQ SXMgZXRjLiBhbmQgb25seQ0KPiA+IHVzZSB0aGUgZXhpc3Rpbmcgb25lcyAocmVtZW1iZXIsIHdl IG9ubHkgZXh0ZW5kIGdudGRldi9iYWxsb29uDQo+ID4gZHJpdmVycywgYWxsIHRoZSBjaGFuZ2Vz IGluIHRoZSBMaW51eCBrZXJuZWwpDQo+ID4gQXMgdGhlIHNlY29uZCBub3RlIEkgY2FuIGFsc28g dGhpbmsgdGhhdCB3ZSBkbyBub3QgZXh0ZW5kIGdudGRldi9iYWxsb29uDQo+ID4gZHJpdmVycyBh bmQgaGF2ZSByZS13b3JrZWQgeGVuLXpjb3B5IGRyaXZlciBiZSBhIHNlcGFyYXRlIGVudGl0eSwN Cj4gPiBzYXkgZHJpdmVycy94ZW4vZG1hLWJ1Zg0KPiA+ID4gPiBpbXBsZW1lbnQgIndhaXQiIGlv Y3RsICh3YWl0IGZvciBkbWEtYnVmLT5yZWxlYXNlKTogY3VycmVudGx5IHRoZXNlIGFyZQ0KPiA+ ID4gPiBEUk1fWEVOX1pDT1BZX0RVTUJfRlJPTV9SRUZTLA0KPiBEUk1fWEVOX1pDT1BZX0RVTUJf VE9fUkVGUyBhbmQNCj4gPiA+ID4gRFJNX1hFTl9aQ09QWV9EVU1CX1dBSVRfRlJFRQ0KPiA+ID4g PiAxLjIuIFhlbiBiYWxsb29uIGRyaXZlciBbNl0gdG8gYWxsb3cgYWxsb2NhdGluZyBjb250aWd1 b3VzIGJ1ZmZlcnMgKG5vdA0KPiA+ID4gPiBuZWVkZWQNCj4gPiA+ID4gYnkgY3VycmVudCBoeXBl ci1kbWFidWYsIGJ1dCBpcyBhIG11c3QgZm9yIHhlbi16Y29weSB1c2UtY2FzZXMpDQo+ID4gPiBJ IHRoaW5rIHRoaXMgbmVlZHMgY2xhcmlmeWluZy4gSW4gd2hpY2ggbWVtb3J5IHNwYWNlIGRvIHlv dSBuZWVkIHRob3NlDQo+ID4gPiByZWdpb25zIHRvIGJlIGNvbnRpZ3VvdXM/DQo+ID4gVXNlLWNh c2U6IERvbTAgaGFzIGEgSFcgZHJpdmVyIHdoaWNoIG9ubHkgd29ya3Mgd2l0aCBjb250aWcgbWVt b3J5DQo+ID4gYW5kIEkgd2FudCBEb21VIHRvIGJlIGFibGUgdG8gZGlyZWN0bHkgd3JpdGUgaW50 byB0aGF0IG1lbW9yeSwgdGh1cw0KPiA+IGltcGxlbWVudGluZyB6ZXJvIGNvcHlpbmcNCj4gPiA+ DQo+ID4gPiBEbyB0aGV5IG5lZWQgdG8gYmUgY29udGlndW91cyBpbiBob3N0IHBoeXNpY2FsIG1l bW9yeSwgb3IgZ3Vlc3QNCj4gPiA+IHBoeXNpY2FsIG1lbW9yeT8NCj4gPiBIb3N0DQo+ID4gPg0K PiA+ID4gSWYgaXQncyBpbiBndWVzdCBtZW1vcnkgc3BhY2UsIGlzbid0IHRoZXJlIGFueSBnZW5l cmljIGludGVyZmFjZSB0aGF0DQo+ID4gPiB5b3UgY2FuIHVzZT8NCj4gPiA+DQo+ID4gPiBJZiBp dCdzIGluIGhvc3QgcGh5c2ljYWwgbWVtb3J5IHNwYWNlLCB3aHkgZG8geW91IG5lZWQgdGhpcyBi dWZmZXIgdG8NCj4gPiA+IGJlIGNvbnRpZ3VvdXMgaW4gaG9zdCBwaHlzaWNhbCBtZW1vcnkgc3Bh Y2U/IFRoZSBJT01NVSBzaG91bGQgaGlkZQ0KPiBhbGwNCj4gPiA+IHRoaXMuDQo+ID4gVGhlcmUg YXJlIGRyaXZlcnMvSFcgd2hpY2ggY2FuIG9ubHkgd29yayB3aXRoIGNvbnRpZyBtZW1vcnkgYW5k DQo+ID4gaWYgaXQgaXMgYmFja2VkIGJ5IGFuIElPTU1VIHRoZW4gc3RpbGwgaXQgaGFzIHRvIGJl IGNvbnRpZyBpbiBJUEENCj4gPiBzcGFjZSAocmVhbCBkZXZpY2UgZG9lc24ndCBrbm93IHRoYXQg aXQgaXMgYWN0dWFsbHkgSVBBIGNvbnRpZywgbm90IFBBKQ0KPiANCj4gV2hhdCdzIElQQSBjb250 aWc/DQoNCkkgYXNzdW1lICdJUEEnIG1lYW5zICdJT01NVSBQaHlzaWNhbCBBZGRyZXNzJy4gSSB3 b25kZXIgd2hldGhlciB0aGlzIG1lYW5zIHdoYXQgSSd2ZSB0ZXJtZWQgJ0J1cyBBZGRyZXNzJyBl bHNld2hlcmU/DQoNCiAgUGF1bA0KDQo+IA0KPiBUaGFua3MsIFJvZ2VyLg0KPiANCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gWGVuLWRldmVsIG1h aWxpbmcgbGlzdA0KPiBYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==