From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Pitoiset Subject: Re: Dealing with opencl kernel parameters in nouveau now that RES support is gone Date: Mon, 22 Feb 2016 13:41:15 +0100 Message-ID: <56CB01EB.9040705@gmail.com> References: <56C5D8F9.6030408@redhat.com> <56C6F031.6060308@redhat.com> <56CAF059.3090608@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56CAF059.3090608-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Hans de Goede , Ilia Mirkin Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: nouveau.vger.kernel.org SGkgdGhlcmUsCgpPbiAwMi8yMi8yMDE2IDEyOjI2IFBNLCBIYW5zIGRlIEdvZWRlIHdyb3RlOgo+ IEhpLAo+Cj4gT24gMTktMDItMTYgMjA6NDMsIElsaWEgTWlya2luIHdyb3RlOgo+PiBPbiBGcmks IEZlYiAxOSwgMjAxNiBhdCA1OjM2IEFNLCBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQu Y29tPgo+PiB3cm90ZToKPj4+IEhpLAo+Pj4KPj4+IE9uIDE4LTAyLTE2IDE3OjM5LCBJbGlhIE1p cmtpbiB3cm90ZToKPj4+Pgo+Pj4+IE9uIFRodSwgRmViIDE4LCAyMDE2IGF0IDk6NDUgQU0sIEhh bnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Cj4+Pj4gd3JvdGU6Cj4+Pj4+Cj4+Pj4+ IEJ1dCB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgaG9va2VkIHVwIHlldCBmb3Igbm91dmVhdS4K Pj4+Pgo+Pj4+Cj4+Pj4gU2FtdWVsIGhhcyBwYXRjaGVzLiBTZWUKPj4+PiBodHRwczovL2NnaXQu ZnJlZWRlc2t0b3Aub3JnL35oYWt6c2FtL21lc2EvbG9nLz9oPWFyYl9jb21wdXRlX3NoYWRlcl92 Mwo+Pj4KPj4+Cj4+PiBDb29sLCBJIHdpbGwgdGFrZSBhIGxvb2sgYXQgdGhvc2UuCj4+Pgo+Pj4+ PiBTbyBzb21lIHF1ZXN0aW9uczoKPj4+Pj4gLVRoZSBjb21taXQgYnkgU2FtdWFsIHNheXM6Cj4+ Pj4+ICAgIFRoaXMgaW50cm9kdWNlcyBUR1NJX0ZJTEVfTUVNT1JZIGZvciBzaGFyZWQsIGdsb2Jh bCBhbmQgbG9jYWwKPj4+Pj4gbWVtb3J5Lgo+Pj4+PiBPbmx5Cj4+Pj4+IHNoYXJlZCBtZW1vcnkg aXMgY3VycmVudGx5IHN1cHBvcnRlZC4KPj4+Pj4KPj4+Pj4gICAgVGhlIGNvbW1pdCBpbnRyb2R1 Y2VzIE1FTU9SWVt4XSBhbmQgTUVNT1JZW3hdLFNIQVJFRCBzbyBpbgo+Pj4+PiByZWFsaXR5IGl0 Cj4+Pj4+IGFsc28KPj4+Pj4gaW50cm9kdWNlcwo+Pj4+PiAgICBhIHNlY29uZCBvcHRpb24gbmV4 dCB0byBzaGFyZWQsIHNvIHdoYXQgYXJlIHdlIGdvaW5nIHRvIHVzZSBwbGFpbgo+Pj4+PiBNRU1P UllbeF0KPj4+Pj4gZm9yPwo+Pj4+PiAgICBJIHN1Z2dlc3QgdXNpbmcgaXQgZm9yIGdsb2JhbCBt ZW1vcnkgYnV0IHdlIG5lZWQgdG8gYmUgaW4KPj4+Pj4gYWdyZWVtZW50IG9uCj4+Pj4+IHRoaXMu Cj4+Pj4KPj4+Pgo+Pj4+IFRoYXQgc291bmRzIGZpbmUgdG8gbWUuIEhvd2V2ZXIgd2hhdCBJIGhh ZCBpbiBtaW5kIHdhcyBzd2l0Y2hpbmcgdGhlCj4+Pj4gU0hBUkVEIGZpZWxkIGludG8gYSAyLWJp dCBmaWVsZCBhbmQgbWFraW5nIGl0Cj4+Pj4KPj4+PiAxID0gU0hBUkVECj4+Pj4gMiA9IEdMT0JB TAo+Pj4+IDMgPSBMT0NBTAo+Pj4+Cj4+Pj4gKHNpbmNlIGZvciBPcGVuQ0wgeW91IGFsc28gbmVl ZCB0byBiZSBhYmxlIHRvIGFkZHJlc3MgbG9jYWwgb3IgcHJpdmF0ZQo+Pj4+IG1lbW9yeSkuIEkg c29ydGEgd2FudGVkIFNhbXVlbCB0byBkbyBpdCwgYnV0IHNpbmNlIEkgaGFkIG5vIGlkZWEgd2hl cmUKPj4+PiB5b3Ugd2VyZSBhdCwgb3IgaWYgeW91IHdlcmUgZXZlbiBzdGlsbCB3b3JraW5nIG9u IHRoaXMsIEkgZmlndXJlZCBpdAo+Pj4+IHNob3VsZCBiZSBmaXhlZCB1cCBieSB0aGUgZmlyc3Qg cGVyc29uIHdobyBuZWVkZWQgaXQuCj4+Pgo+Pj4KPj4+IFNvdW5kcyBnb29kLCBvbmx5IHRoZSBu YW1pbmcgaXMgc29tZXdoYXQgdW5mb3J0dW5hdGUgc2luY2Ugb3BlbmNsIHVzZXMKPj4+IGRpZmZl cmVudAo+Pj4gbmFtaW5nLiBJLmUuIGl0IGhhcyBubyAic2hhcmVkIgo+Pgo+PiBTYWQuIFdlbGws ICJzaGFyZWQiIGlzIHdoYXQgT3BlbkdMIGNvbXB1dGUgc2hhZGVycyB1c2UsIHdoaWNoIGlzIHdo eSBJCj4+IHByb3Bvc2VkIGl0Lgo+Pgo+Pj4KPj4+IE9wZW5DTCBoYXM6Cj4+PiAtZ2xvYmFsOiAg YWNjZXNzaWJsZSBieSBhbGwgd29ya2VyLWdyb3VwcyBhcyB3ZWxsIGFzIGJ5IHRoZSBDUFUKPj4+ IC1jb25zdDogICByZWFkLW9ubHkgZ2xvYmFsCj4+PiAtbG9jYWw6ICAgc2hhcmVkIGJ5IHdvcmtl ci1pdGVtcyBpbiB0aGUgc2FtZSB3b3JrZXItZ3JvdXAsIG5vdCBzaGFyZWQKPj4+IGJldHdlZW4g d29ya2VyLWdyb3Vwcwo+Pj4gLXByaXZhdGU6IGFjY2Vzc2libGUgb25seSB0byBhIHNpbmdsZSB3 b3JrZXItaXRlbQo+Pj4KPj4+IFNvIGhvdyBkbyB0aGVzZSBtYXAgdG8gdGhlIFRHU0k6Cj4+Pgo+ Pj4+IDEgPSBTSEFSRUQKPj4+PiAyID0gR0xPQkFMCj4+Pj4gMyA9IExPQ0FMCj4+Cj4+IE9wZW5D TCBnbG9iYWwgPSBUR1NJIGdsb2JhbAo+PiBPcGVuQ0wgY29uc3QgPSBUR1NJIGdsb2JhbAo+PiBP cGVuQ0wgbG9jYWwgPSBUR1NJIHNoYXJlZAo+PiBPcGVuQ0wgcHJpdmF0ZSA9IFRHU0kgbG9jYWwK Pj4KPj4gTm90IHN1cmUgd2hhdCB0aGUgZGlzdGluY3Rpb24gaXMgYmV0d2VlbiBPcGVuQ0wgY29u c3QgYW5kIGdsb2JhbCBpcy4KPj4gSWYgdGhlIGNvbnN0IHN0dWZmIGlzIGFjdHVhbGx5IGp1c3Qg dXNlci1zdXBwbGllZCB1bmlmb3JtcyAoYW5kCj4+IGRvZXNuJ3QgbmVlZCB0byBiZSBpbiBhIHBh cnRpY3VsYXIgcGxhY2UgaW4gbWVtb3J5KSwgdGhlbiB0aG9zZSBzaG91bGQKPj4gZ28gaW50byBU R1NJIENPTlNUIHNvbWVob3cuCj4KPiBBRkFJSyBPcGVuQ0wgY29uc3QgaXMgcmVhbGx5IHJlYWQt b25seSBnbG9iYWwsIHNvIHRoZSBkYXRhIGlzIGZpbGxlZAo+IGluIGJ5IHRoZSBDUFUsIHRoZW4g cGFzc2VkIHRvIHRoZSBvcGVuY2wta2VybmVsIHJ1bm5pbmcgb24gdGhlIEdQVQo+IHdoZXJlIGFs bCB3b3JrZXItaXRlbXMgaGF2ZSBhY2Nlc3MgdG8gaXQuIEkgdGhpbmsgdGhhdCBUR1NJIENPTlNU IG1pZ2h0Cj4gaW5kZWVkIGJlIHVzYWJsZSBmb3IgdGhpcywgYnV0IGl0IGlzIHByb2JhYmx5IGVh c2llc3QgdG8gdHJlYXQKPiBpdCBhcyBHTE9CQUwgZm9yIG5vdy4KPgo+Pj4+PiAtV2hhdCBhYm91 dCBrZXJuZWwgaW5wdXQgcGFyYW1ldGVycywgc28gZmFyIHRoZXNlIGhhdmUgYmVlbiB1c2luZwo+ Pj4+PiBSRVNbMzI3NjRdCj4+Pj4+ICAgIEkgbXVzdCBhZG1pdCB0aGF0IEkgZG8gbm90IHVuZGVy c3RhbmQgd2hlcmUgdGhlIGZpbGVfaW5kZXggb2YgMzI3NjQKPj4+Pj4gY29tZXMKPj4+Pj4gICAg ZnJvbSAob3Igd2hlcmUgYW55IG9mIHRoZSBmaWxlIGluZGV4ZXMgY29tZSBmcm9tIGZvcgo+Pj4+ PiBzcmMvZ2FsbGl1bS90ZXN0cy90cml2aWFsL2NvbXB1dGUuYyA/Cj4+Pj4+ICAgIEkgaGF2ZSB0 aGUgZmVlbGluZyB0aGF0IHRoZXNlIGFyZSBub3QgdXNlZCBhdCBhbGwsIGFuZCBldmVyeXRoaW5n Cj4+Pj4+IHNpbXBseQo+Pj4+PiBnb2VzCj4+Pj4+ICAgIHRvIGEgZmxhdCAodmlydHVhbCkgbWVt b3J5IHNwYWNlLCB3aXRoIHRoZSBwYXJhbXMgYXQgYWRkcmVzcyAwLAo+Pj4+PiBjb3JyZWN0Cj4+ Pj4+ID8KPj4+Pgo+Pj4+Cj4+Pj4gSXQgd2FzIG5ldmVyIHBhcnRpY3VsYXJseSB3ZWxsLXNwZWNp ZmllZCwgd2hpY2ggd2FzIG9uZSBvZiB0aGUgcmVhc29ucwo+Pj4+IGl0IHdlbnQgYXdheS4gSXQg YWxzbyBkaWRuJ3QgbWFwIG5pY2VseSBvbnRvIHRoZSBPcGVuR0wgbW9kZWwuIFRoZXJlCj4+Pj4g aXMgYSByZW1haW5pbmcgcXVlc3Rpb24gb2YgaG93IHRvIGRvIGFkZHJlc3NpbmcgaW4gbWVtb3J5 Li4uIHRoZXJlJ3MKPj4+PiA0MCBiaXRzIG9mIGFkZHJlc3Mgc3BhY2UuIFNob3VsZCB0aGVzZSBp bXBsaWNpdGx5IGJlIFU2NAo+Pj4+IChkdWFsLWNvbXBvbmVudCBpbiBUR1NJKSBhZGRyZXNzZXMg dGhhdCBhcmUgcGFzc2VkIGFyb3VuZD8gTm90IHN1cmUKPj4+PiB3aGF0IHRoZSBPcGVuQ0wgcG9z aXRpb24gb24gYWxsIHRoaXMgaXMuCj4+Pgo+Pj4KPj4+IFNvIGZhciBJJ3ZlIGJlZW4gdXNpbmcg VTMyIGZvciBhZGRyZXNzZXMgYXMgdGhhdCBpcyB3aGF0IEZyYW5jaXNjbydzCj4+PiBvcmlnaW5h bAo+Pj4gY29kZSB3YXMgdXNpbmcuIEFuZCB0aGlzIGFsc28gaXMgd2hhdCB0aGluZ3MgbGlrZSB0 aGUgdGdzaSBMT0FECj4+PiBpbnN0cnVjdGlvbgo+Pj4gdGFrZS4gSWYgeW91J3JlIGRvaW5nIGEg TE9BRCBvbiBhIDFkIGJ1ZmZlciB0aGVuIHlvdSB3aWxsIHVzZQo+Pj4gVEVNUFsjXS54IHRvCj4+ PiBzcGVjaWZ5IHRoZSBpbmRleCwgYW5kIHRoZSB3YXkgaG93IHRoaXMgY3VycmVudGx5IHdvcmtz IHdpdGggT3BlbkNMCj4+PiBpcyB0aGF0Cj4+PiBjbENyZWF0ZUJ1ZmZlcigpIHdpbGwgcmV0dXJu IGEgY2xfbWVtIHR5cGUgd2hpY2ggdGhlbiBnZXRzIHBhc3NlZCBpbnRvCj4+PiB0aGUga2VybmVs IGFzIGlucHV0IHBhcmFtZXRlciBhbmQgZ2V0cyB0cmVhdGVkIGFzIGEgcG9pbnRlciBieSB0aGUK Pj4+IGNvbXBpbGVyLAo+Pj4gc28gZS5nLiBnbG9iYWwgbWVtIGdldHMgdHJlYXRlZCBhcyBhIHNp bmdsZSBhZGRyZXNzIHNwYWNlIGV2ZW4gaWYgdGhlcmUKPj4+IGFyZSBtdWx0aXBsZSBnbG9iYWwg YnVmZmVycyBhbmQgVEVNUFsjXS54IGNvbnRhaW5zIHRoZSB2YWx1ZSBwYXNzZWQgaW4KPj4+IHZp YSBjbF9tZW0gYXMgc3RhcnQgb2Zmc2V0IGZvciB0aGUgYnVmZmVyICsgdGhlIGluZGV4IGludG8g dGhlIGJ1ZmZlci4KPj4+Cj4+PiBTbyB0aGlzIG1lYW5zIHRoYXQgY3VycmVudGx5IHdlIGFyZSBs aW1pdGVkIHRvIFUzMiBzaW5jZSBURU1QWyNdLnggaXMKPj4+IG9ubHkgMzIgYml0cyB3aWRlLiBJ bnRlcm5hbGx5IDQwIGJpdHMgYWRkcmVzc2VzIGNhbiBhbmQgc2hvdWxkIHByb2JhYmx5Cj4+PiBi ZSB1c2VkIHNvIHRoYXQgYXQgbGVhc3QgdGhlIGRpZmZlcmVudCBtZW1vcnkgc3BhY2VzIGVhY2gg aGF2ZSB0aGUgZnVsbAo+Pj4gMzIgYml0cyBhdmFpbGFibGUuCj4+Pgo+Pj4gTm90ZSB0aGF0IHdl IGNvdWxkIGZpeCB0aGlzIGJ5IGFkZGluZyBzb21lIHNvcnQgb2YgTE9BRDY0IG9wY29kZSwgd2hp Y2gKPj4+IHVzZXMgVEVNUFsjXS54IGFuZCBURU1QWyNdLnkgYXMgYWRkcmVzcyBmb3IgMWQgYnVm ZmVycywgSSdtIG5vdCBzdXJlCj4+PiBob3cgdGhpcyB3b3VsZCB3b3JrIGZvciAzZCBidWZmZXJz IHRob3VnaC4gSSBmb3Jlc2VlIHRoZSBsbHZtIGJhY2tlbmQKPj4+IGV2ZW50dWFsbHkgZ2V0dGlu ZyBhIDY0IGJpdCBtb2RlIHdoZXJlIGl0IHdpbGwgdXNlIDY0IGJpdHMgZm9yIGFsbAo+Pj4gcG9p bnRlcnMgYW5kIHVzZSBzb21ldGhpbmcgbGlrZSBhIExPQUQ2NCBvcGNvZGUgdG8gaW5kaWNhdGUg dGhhdAo+Pj4gdGhlIGluZGV4ZXMgKHdoaWNoIGl0IGVmZmVjdGl2ZWx5IHVzZXMgYXMgYWRkcmVz c2VzIC8gcG9pbnRlcnMpCj4+PiBhcmUgNjQgYml0IHdpZGUuCj4+Cj4+IFdlbGwsIHRoaXMgTE9B RDY0L1NUT1JFNjQgd291bGQganVzdCBvbmx5IGJlIGRlZmluZWQgZm9yIE1FTU9SWVtdCj4+IHNy Yy9kZXN0LCBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCAzZCBvciBhbnl0aGluZyBs aWtlIHRoYXQuIEkKPj4gYmVsaWV2ZSB0aGlzIGlzIGEgZ29vZCBzb2x1dGlvbiB0byB0aGUgcHJv YmxlbS4KPgo+IFJpZ2h0IGZvciBNRU1PUlkgdGhpcyB3aWxsIHdvcmsgZmluZS4gSSd2ZSBubyBj bHVlIHlldCBob3cgaW1hZ2VzIHdpbGwKPiB3b3JrIHdpdGggT3BlbkNMIHRob3VnaCwgaG9wZWZ1 bGx5IHdlIGNhbiBhdm9pZCB0aGUgb25lIGZsYXQgYWRkcmVzcwo+IHNwYWNlIHRoaW5nIHRoZXJl LCBidXQgSSBzaW1wbHkgZG9uJ3Qga25vdyB5ZXQuCj4KPj4+PiBBbHNvIGl0IHdvdWxkIGJlIGhp Z2hseSBwcmVmZXJhYmxlIHRvIGF2b2lkIHVzaW5nIEdMT0JBTCBhdCBhbGwgaW4gdGhlCj4+Pj4g Zmlyc3QgcGxhY2UsIGFuZCBqdXN0IHVzZSBCVUZGRVJbXSBvciBJTUFHRVtdIG9yIHdoYXRldmVy LiBIb3dldmVyCj4+Pj4gYWZ0ZXIgaGF2aW5nIGEgbG9vayBhdCBob3cgT3BlbkNMIHdvcmtzLCBJ IGRvbid0IHRoaW5rIHRoYXQncwo+Pj4+IHBvc3NpYmxlLiBCdXQgcGVyaGFwcyBJIG1pc3NlZCBz b21ldGhpbmc/Cj4+Pgo+Pj4KPj4+IE9wZW5DTCBpcyB2ZXJ5IEMtbGlrZSBhbmQgYXMgc3VjaCB1 c2VzIGEgZmxhdCBhZGRyZXNzIHNwYWNlIHBlciBtZW1vcnkKPj4+IHNwYWNlLCBnZXR0aW5nIGFy b3VuZCB0aGF0IGlzIGdvaW5nIHRvIGJlIHZlcnkgdHJpY2t5LCBpZiBwb3NzaWJsZSBhdAo+Pj4g YWxsLgo+Pgo+PiBUaGF0IHdhcyBteSBhc3Nlc3NtZW50IGFzIHdlbGwuCj4+Cj4+Pgo+Pj4+IFBl cmhhcHMgSSBkaWRuJ3QgbWFrZSBpdCBjbGVhciBlbm91Z2ggdGhvdWdoIC0tIHNvcnJ5LiBUaGUg cmVhbGl0eSBpcwo+Pj4+IHRoYXQgVEdTSSBpcyBhIGxpdmluZyB0aGluZywgYW5kIHRoaW5ncyBj aGFuZ2UgZXZlcnkgc28gb2Z0ZW4uIEkgZG9uJ3QKPj4+PiB0aGluayBwZW9wbGUgd291bGQgYmUg Y29tZm9ydGFibGUgd2l0aCBsb2NraW5nIGRvd24gVEdTSSBpbiBzdWNoIGEKPj4+PiB3YXkuCj4+ Pgo+Pj4KPj4+IEhtbSwgSSBkbyB0aGluayB0aGF0IGlmIHdlIGVuZCB1cCB1c2luZyBhIGxsdm0t aXIgLT4gdGdzaSBzdGVwIGluIHNvbWUKPj4+IGNhc2VzIHRoYXQgd2UgZG8gbmVlZCB0byBsb2Nr IFRHU0kgZG93bi4gVGFrZW4gdGhlIFJFUyB0aGluZyBmb3IKPj4+IGV4YW1wbGUsCj4+PiBpdCB3 b3VsZCBoYXZlIGJlZW4gcHJldHR5IHRyaXZpYWwgYWN0dWFsbHkgdG8gbm90IG51a2UgaXQsIGFu ZAo+Pj4gaW5zdGVhZCBqdXN0Cj4+PiBhZGQgdGhlIGltYWdlIHN1cHBvcnQgbmV4dCB0byBpdC4g Tm90ZSBJJ20gZmluZSB3aXRoIG1ha2luZyBjaGFuZ2VzCj4+PiB3aGlsZQo+Pj4gd2UgYXJlIGZp Z3VyaW5nIHRoaXMgb3V0LCBidXQgb25jZSBJIHN0YXJ0IHB1c2hpbmcgdGhlIGxsdm0gYml0cyB0 byBsbHZtCj4+PiB1cHN0cmVhbSAod2hpY2ggaXMgc3RpbGwgbW9udGhzIGF3YXkpIHdlIGFyZSBn b2luZyB0byBuZWVkIHNvbWUgc29ydCBvZgo+Pj4gVEdTSSBzdGFiaWxpdHkuCj4+Cj4+IEkgY2Fu J3QgdW5pbGF0ZXJhbGx5IG1ha2Ugc3VjaCBwcm9taXNlcy4gVGhpcyB3b3VsZCBoYXZlIHRvIGJl Cj4+IGRpc2N1c3NlZCBhbmQgYXBwcm92ZWQgYnkgdGhlIG90aGVyIGdhbGxpdW0vdGdzaSBzdGFr ZWhvbGRlcnMuCj4KPiBVbmRlcnN0b29kLgo+Cj4gU28gYmFjayB0byB0aGUgcHJvYmxlbSBvZiBn ZXR0aW5nIE9wZW5DTChpc2gpIGNvZGUgdG8gd29yayBhZ2FpbiB3aXRoCj4gdGhlIHJlY2VudCBt ZXNhIGNoYW5nZXMuIEZvciBzdGFydGVycyBJIHdvdWxkIGxpa2UgdG8gZ2V0Ogo+Cj4gc3JjL2dh bGxpdW0vdGVzdHMvdHJpdmlhbC9jb21wdXRlLmMgYW5kIHRoZW4gdGhlIHRlc3Qgd2l0aCBtYXNr IDgsCj4gdGVzdF9pbnB1dF9nbG9iYWwoKSB0byB3b3JrIGFnYWluLCB3aGVuIHRoYXQgaXMgd29y a2luZyBJIHNob3VsZCBiZQo+IGFibGUgdG8gYWRqdXN0IG15IGxsdm0gd29yayAoYW5kIGlmIG5l Y2Vzc2FyeSBjbG92ZXIpIHRvIHN0YXJ0IHRvCj4gd29yayBhZ2Fpbi4KPgo+IEN1cnJlbnRseSB0 aGUgdGVzdF9pbnB1dF9nbG9iYWwoKSB0ZXN0IHVzZXMgdGhlIGZvbGxvd2luZyBiaXQgb2YKPiBU R1NJIGNvZGU6Cj4KPiBDT01QCj4gRENMIFNWWzBdLCBUSFJFQURfSURbMF0KPiBEQ0wgVEVNUFsw XSwgTE9DQUwKPiBEQ0wgVEVNUFsxXSwgTE9DQUwKPiBJTU0gVUlOVDMyIHsgOCwgMCwgMCwgMCB9 Cj4KPiAgICAgQkdOU1VCXG4iCj4gICAgICAgICBVTVVMIFRFTVBbMF0sIFNWWzBdLCBJTU1bMF0K PiAgICAgICAgIExPQUQgVEVNUFsxXS54eSwgUklOUFVULCBURU1QWzBdCj4gICAgICAgICBMT0FE IFRFTVBbMF0ueCwgUkdMT0JBTCwgVEVNUFsxXS55eXl5Cj4gICAgICAgICBVQUREIFRFTVBbMV0u eCwgVEVNUFswXSwgLVRFTVBbMV0KPiAgICAgICAgIFNUT1JFIFJHTE9CQUwueCwgVEVNUFsxXS55 eXl5LCBURU1QWzFdCj4gICAgICAgICBSRVQKPiAgICAgRU5EU1VCCj4KPgo+IFdoZXJlIGJ5IFJJ TlBVVCBhbmQgUkdMT0JBTCBnZXQgcmVwbGFjZXMgYnkgcHJvY2Vzc2luZyB0aGUKPiBjb2RlIHdp dGggY3BwIGFuZCB0aGUgZm9sbG93aW5nIGRlZmluZXM6Cj4KPiAjZGVmaW5lIFJHTE9CQUwgICAg ICAgIFJFU1szMjc2N10KPiAjZGVmaW5lIFJMT0NBTCAgICAgICAgIFJFU1szMjc2Nl0KPiAjZGVm aW5lIFJQUklWQVRFICAgICAgIFJFU1szMjc2NV0KPiAjZGVmaW5lIFJJTlBVVCAgICAgICAgIFJF U1szMjc2NF0KPgo+IElmIEkgdW5kZXJzdGFuZCBob3cgbWVtb3J5IGlzIHN1cHBvc2VkIHRvIHdv cmssIHRoZW4gSSB3b3VsZCBuZWVkIHRvCj4gY2hhbmdlIHRoZSBUR1NJIGFzIGZvbGxvd3M6Cj4K PiBDT01QCj4gRENMIFNWWzBdLCBUSFJFQURfSURbMF0KPiBEQ0wgTUVNT1JZWzBdCj4gRENMIFRF TVBbMF0sIExPQ0FMCj4gRENMIFRFTVBbMV0sIExPQ0FMCj4gSU1NIFVJTlQzMiB7IDgsIDAsIDAs IDAgfQo+Cj4gQkdOU1VCXG4iCj4gVU1VTCBURU1QWzBdLCBTVlswXSwgSU1NWzBdCj4gTE9BRCBU RU1QWzFdLnh5LCBSSU5QVVQsIFRFTVBbMF0KPiBMT0FEIFRFTVBbMF0ueCwgTUVNT1JZWzBdLCBU RU1QWzFdLnl5eXkKPiBVQUREIFRFTVBbMV0ueCwgVEVNUFswXSwgLVRFTVBbMV0KPiBTVE9SRSBN RU1PUllbMF0ueCwgVEVNUFsxXS55eXl5LCBURU1QWzFdCj4gUkVUCj4gRU5EU1VCCgpOb3BlLCB0 aGlzIHdvbid0IHdvcmsgYmVjYXVzZSBSSU5QVVQgaXMgUkVTWzMyNzY0XS4gQW5kIHlvdSBoYXZl IHRvIApyZW1vdmUgYWxsIG9jY3VycmVuY2VzIHRvIFJFUyBiZWNhdXNlIGl0J3Mgbm90IGxvbmdl ciBzdXBwb3J0ZWQuIEluIG15IApvcGluaW9uLCB1c2luZyBCVUZGRVJbMF0gaW4gYSBmaXJzdCB0 aW1lIHNob3VsZCB3b3JrLiBDdXJyZW50bHksIG9ubHkgClNIQVJFRCB3aXRoIE1FTU9SWSBpcyBz dXBwb3J0ZWQuCgo+Cj4gVGhpcyBhc3N1bWVzLCB0aGF0IGFzIGRpc2N1c3NlZCBkZWNsYXJpbmcg bWVtb3J5IHdpdGhvdXQgYSAsIFNIQVJFRCBvcgo+IG90aGVyCj4gZmxhZyBtZWFucyB0aGUgbWVt b3J5IGlzIGdsb2JhbC4KPgo+IFNvIDIgcXVlc3Rpb25zOgo+Cj4gMSkgRG8gdGhlIGFib3ZlIGNo YW5nZXMgZm9yIHVzaW5nIHRoZSBuZXcgTUVNT1JZIGtleXdvcmQgbG9vayBhcyBpbnRlbmRlZAo+ IHRvIHlvdT8KPgo+IDIpIFRoaXMgb25seSBzb2x2ZXMgdGhlIGFjY2Vzc2luZyBvZiB0aGUgZ2xv YmFsIG1lbW9yeSwgaXQgZG9lcyBub3Qgc29sdmUKPiBnZXR0aW5nIHRvIHRoZSBrZXJuZWwgaW5w dXQga2VybmVsIHBhcmFtZXRlcnMsIGhvdyB3b3VsZCBJIGRlYWwgd2l0aAo+IHRob3NlID8KClRo ZSBpbnB1dCBrZXJuZWwgcGFyYW1ldGVycyBhcmUgZGlyZWN0bHkgcGFzc2VkIHRocm91Z2ggYSBj YWxsIHRvIApwaXBlX2NvbnRleHQ6OmxhdW5jaF9ncmlkLiBZb3UganVzdCBoYXZlIHRvIGZpbGwg dGhlIApwaXBlX2dyaWRfaW5mbzo6aW5wdXQgYXJyYXkgd2l0aCB5b3VyIHBhcmFtZXRlcnMgYW5k IHRoZXkgd2lsbCBiZSAKdXBsb2FkZWQgYnkgbnZYWF9jb21wdXRlX3VwbG9hZF9pbnB1dCgpLgoK SSB3aWxsIGhhdmUgYSBsb29rIGF0IHRoZSB0ZXN0X2lucHV0X2dsb2JhbCgpLgoKVGhhbmtzIQoK Pgo+IEN1cnJlbnRseSB0aGUga2VybmVsIGlucHV0IHBhcmFtZXRlcnMgYXJlIHVwbG9hZGVkIGJ5 Cj4gc3JjL2dhbGxpdW0vZHJpdmVycy9ub3V2ZWF1L252NTAvbnY1MF9jb21wdXRlLmM6Cj4gbnY1 MF9jb21wdXRlX3VwbG9hZF9pbnB1dCgpCj4KPiBBcmUgd2UgZ29pbmcgdG8gY2hhbmdlIGhvdyB0 aGVzZSBwYXJhbWV0ZXJzIGdldCB1cGxvYWRlZCA/IEFuZCBpZiBub3QKPiBob3cgZG8gd2UKPiBn ZXQgdG8gdGhlc2UgcGFyYW1ldGVycyBmcm9tIFRHU0kgbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIGhh dmUgUkVTWyNdIHRvCj4gZG8gc28gPwo+Cj4gSSB0aGluayB3ZSBzaG91bGQgYWxzbyBrZWVwIGlu IG1pbmQgdGhhdCB3aGF0IHdvcmtzIGZvciBub3V2ZWF1IG1heSBub3QKPiB3b3JrCj4gZm9yIG90 aGVyIEdQVS1zLCBzbyB3ZSBzaG91bGQgZWl0aGVyIGludHJvZHVjZSBhIE1FTU9SWVt4XSwgSU5Q VVQgb3IKPiBhIG5ldyBEQ0wgSU5QVVRbMF0gZm9yIHRoaXMsIHNvIHRoYXQgdGhlIGNvZGUgZm9y IG90aGVyIEdQVS1zIGNhbiBoYXZlIGl0cwo+IG93biBoYW5kbGluZyBmb3IgdGhpcy4KPgo+IFJl Z2FyZHMsCj4KPiBIYW5zCgotLSAKLVNhbXVlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL25vdXZlYXUK