From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [Intel-gfx] [PATCH 1/3] drm: Plumb modifiers through plane init Date: Wed, 10 May 2017 21:21:11 +0100 Message-ID: <20170510202111.GA24388@bart.dudau.co.uk> References: <20170503103412.GH28653@e110455-lin.cambridge.arm.com> <20170503140729.GJ28653@e110455-lin.cambridge.arm.com> <20170503145223.GK28653@e110455-lin.cambridge.arm.com> <20170503164505.e2kq3d56uqg3loev@phenom.ffwll.local> <20170503173007.GM28653@e110455-lin.cambridge.arm.com> <20170510163439.GB26412@mail.bwidawsk.net> <20170510172452.GC7759@e110455-lin.cambridge.arm.com> <20170510193314.GA2585@mail.bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170510193314.GA2585@mail.bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ben Widawsky Cc: Intel GFX , Liviu Dudau , DRI Development List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXkgMTAsIDIwMTcgYXQgMTI6MzM6MTVQTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIDE3LTA1LTEwIDE4OjI0OjUyLCBMaXZpdSBEdWRhdSB3cm90ZToKPiA+T24gV2Vk LCBNYXkgMTAsIDIwMTcgYXQgMDk6MzQ6NDBBTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdyb3RlOgo+ ID4+T24gMTctMDUtMDMgMTg6MzA6MDcsIExpdml1IER1ZGF1IHdyb3RlOgo+ID4+PiBPbiBXZWQs IE1heSAwMywgMjAxNyBhdCAwNjo0NTowNVBNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ ID4+PiA+IE9uIFdlZCwgTWF5IDAzLCAyMDE3IGF0IDAzOjUyOjIzUE0gKzAxMDAsIExpdml1IER1 ZGF1IHdyb3RlOgo+ID4+PiA+ID4gT24gV2VkLCBNYXkgMDMsIDIwMTcgYXQgMDM6MTQ6NTZQTSAr MDEwMCwgRGFuaWVsIFN0b25lIHdyb3RlOgo+ID4+PiA+ID4gPiBPbiAzIE1heSAyMDE3IGF0IDE1 OjA3LCBMaXZpdSBEdWRhdSA8TGl2aXUuRHVkYXVAYXJtLmNvbT4gd3JvdGU6Cj4gPj4+ID4gPiA+ ID4gT24gV2VkLCBNYXkgMDMsIDIwMTcgYXQgMDI6NDU6MjZQTSArMDEwMCwgRGFuaWVsIFN0b25l IHdyb3RlOgo+ID4+PiA+ID4gPiA+PiBJdCBkb2VzIGRlc2VydmUgYSBtdWNoIGJldHRlciBjb21t aXQgbWVzc2FnZSB0aGFuIHdoYXQgaXQgaGFzLCBidXQgYXMKPiA+Pj4gPiA+ID4gPj4gaGUgaXMg b24gaG9saWRheSBmb3IgdGhlIHJlc3Qgb2YgdGhlIHdlZWssIEkgY2FuIGFuc3dlci4gQ3VycmVu dGx5LCB3ZQo+ID4+PiA+ID4gPiA+PiBhZHZlcnRpc2Ugd2hpY2ggZm9ybWF0cyBlYWNoIHBsYW5l IGlzIGNhcGFibGUgb2YgZGlzcGxheWluZy4gSW4gb3JkZXIKPiA+Pj4gPiA+ID4gPj4gZm9yIHVz ZXJzcGFjZSB0byBiZSBhYmxlIHRvIGFsbG9jYXRlIHRpbGVkL2NvbXByZXNzZWQgYnVmZmVycyBm b3IKPiA+Pj4gPiA+ID4gPj4gc2Nhbm91dCwgd2Ugd2FudCB1c2Vyc3BhY2UgdG8gYmUgYWJsZSB0 byBkaXNjb3ZlciB3aGljaCBtb2RpZmllcnMgZWFjaAo+ID4+PiA+ID4gPiA+PiBwbGFuZSBzdXBw b3J0cyBhcyB3ZWxsLgo+ID4+PiA+ID4gPiA+Cj4gPj4+ID4gPiA+ID4gSSBnZXQgdGhlIG92ZXJh bGwgZ29hbC4gV2UgbmVlZC93YW50IHNvbWV0aGluZyBzaW1pbGFyIGZvciBNYWxpIERQIGFuZCBB RkJDIGJ1ZmZlcnMuCj4gPj4+ID4gPiA+ID4gV2hhdCBJIGRvbid0IHVuZGVyc3RhbmQgaXMgdGhl IGN1cnJlbnQgYXByb2FjaCAoYnV0IEkndmUgZm91bmQgZnJvbSBCcmlhbiB0aGF0IHNvbWVob3cK PiA+Pj4gPiA+ID4gPiBJJ3ZlIG1pc3NlZCB0aGUgbG9uZyBkaXNjdXNzaW9uKHMpIGFyb3VuZCB0 aGUgc3ViamVjdCkuIEkgd2FzIGhvcGluZyB0byBsZWFybgo+ID4+PiA+ID4gPiA+IGZyb20gdGhl IGNvbW1pdCBtZXNzYWdlIHdoeSBoZSB0aGlua3MgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIGNv ZGUgaXMgdGhlIHJpZ2h0Cj4gPj4+ID4gPiA+ID4gd2F5IG9mIGRvaW5nIGl0LiBBbmQgdGhlIElS QyBsb2dzIHNlZW0gdG8gaW1wbHkgdGhhdCBoZSBpcyBtb3N0bHkgZG9pbmcgc29tZXRoaW5nCj4g Pj4+ID4gPiA+ID4gdGhhdCBvdGhlcnMgaGF2ZSBhZ3JlZWQgdXBvbiBhbmQgaGUgZG9lc24ndCBy ZWFsbHkgY2FyZSBhYm91dCB0aGUgYXBwcm9hY2ggYXMgbG9uZwo+ID4+PiA+ID4gPiA+IGFzIGl0 IHRpY2tzIHRoZSAic3VwcG9ydGVkIGJ5IGludGVsIGRyaXZlciIgYm94Lgo+ID4+PiA+ID4gPgo+ ID4+PiA+ID4gPiBPciwgd2l0aCBhbm90aGVyIGludGVycHJldGF0aW9uLCBoZSB0aGlua3MgdGhl IHZhcmlvdXMgYXBwcm9hY2hlcyBvZgo+ID4+PiA+ID4gPiBkb2luZyBpdCBhcmUgYWxsIGVxdWFs bHkgZ29vZC4gSGUgdG9vayBndWlkYW5jZSBmcm9tIGEgY291cGxlIG9mCj4gPj4+ID4gPiA+IHVz ZXJzcGFjZSBkZXZlbG9wZXJzIChXZXN0b24sIENocm9tZU9TKSwgYSBGcmVlZHJlbm8gZGV2ZWxv cGVyIGFuZAo+ID4+PiA+ID4gPiBhbHNvIEkgYmVsaWV2ZSBhbiBBRkJDIGRldmVsb3BlciwgdG8g ZW5kIHVwIHdoZXJlIGhlIGlzIG5vdywgd2hpY2ggaGUKPiA+Pj4gPiA+ID4gc3RpbGwgdGhpbmtz IGlzIGZpbmUuIEluIGRvaW5nIHNvLCBoZSdzIGJlZW4gdGhyb3VnaCBzZXZlcmFsCj4gPj4+ID4g PiA+IGl0ZXJhdGlvbnMsIGFsd2F5cyBtb2RpZnlpbmcgdGhlIGRyaXZlciB0byBzdWl0LiBJIHRo aW5rIHRoYXQncyBhCj4gPj4+ID4gPiA+IHByZXR0eSBnb29kIHdheSB0byBkbyBkZXZlbG9wbWVu dCBvZiBuZXcgdUFCSSwgaWYgeW91IGFzayBtZS4gKEFuZAo+ID4+PiA+ID4gPiBhZ2FpbiwgSSBo YXZlIHRyb3VibGUgcmVhZGluZyB5b3VyIGxhc3Qgc2VudGVuY2UgYXMgYW55dGhpbmcgb3RoZXIK PiA+Pj4gPiA+ID4gdGhhbiBob3N0aWxlLikKPiA+Pj4gPiA+Cj4gPj4+ID4gPiBJIGFtIGdldHRp bmcgdGhlIG1lc3NhZ2UuIFlvdSB0aGluayBJIGFtIHRvbyBzdHJvbmcgaGVyZSwgc28gSSdtIGdv aW5nIHRvIGJhY2sgb2ZmLgo+ID4+PiA+ID4gQWxzbyBsb29rIGZvcndhcmQgdG8gc2VlIHRoZSBu ZXh0IHZlcnNpb24gd2hlcmUgaGUgdGFrZXMgaW50byBhY2NvdW50IHRoZSB0ZWNobmljYWwKPiA+ Pj4gPiA+IGNvbW1lbnRzIHRoYXQgSSBoYXZlIHNlbnQuCj4gPj4+ID4KPiA+Pj4gPiBKdXN0IHRv IG1ha2UgaXQgcmVhbGx5IGNsZWFyOiBHb29nbGUgaGFzIGFuIGltcGxlbWVudGF0aW9uIGZvciBB RkJDIHVzaW5nCj4gPj4+ID4gZXhhY3RseSB0aGlzIHNjaGVtZSBmb3IgY3Jvcy4gVGhlIG9ubHkg cmVhc29ucyBpdCdzIG5vdCBmbG9hdGluZyBhcm91bmQKPiA+Pj4gPiBoZXJlIGluIHVwc3RyZWFt IGlzIHRoYXQgb25lIG9mIHRoZSBjcml0aWNhbCBwaWVjZXMgaXMgbWlzc2luZyAoKmhpbnQqLAo+ ID4+PiA+ICpoaW50KiB5b3UgcmVhbGx5IHdhbnQgYW4gb3BlbiBtYWlsIGRyaXZlciAuLi4pLgo+ ID4+Pgo+ID4+PiA8dG9uZ3VlX2luX2NoZWVrPgo+ID4+PiBEb24ndCBrbm93IGFib3V0IG9wZW4g X21haWxfIGRyaXZlcnMgYnV0IHRoZXJlIGFyZSBwbGVudHkgb2Ygb3BlbiBtYWlsIGFwcHMgdGhh dCBvbmUgY2FuIHVzZQo+ID4+PiA8L3Rvbmd1ZV9pbl9jaGVlaz4KPiA+Pj4KPiA+Pj4gSm9rZSBh c2lkZSwgdGhlIE1hbGkgR1BVICprZXJuZWwqIGRyaXZlciAqaXMqIG9wZW4gc291cmNlLiBKdXN0 IG5vdCBpbiB0aGUgbWFpbmxpbmUgYW5kCj4gPj4+IG5vdCBlbm91Z2ggZm9yIHdoYXQgeW91IHdh bnQuIEJ1dCBJJ20gbm90IHRoZSByaWdodCBwZXJzb24gdG8gZml4IGFsbCB0aGF0Lgo+ID4+Pgo+ ID4+PiBBbmQgR1BVIGlzIG5vdCB0aGUgb25seSBJUCBjYXBhYmxlIG9mIHByb2R1Y2luZyBBRkJD IGRhdGEsIHNvIHRoZXJlIG1pZ2h0IGJlIGFub3RoZXIgZHJpdmVyCj4gPj4+IGluIHRoZSBtYWtp bmcgdGhhdCB3aWxsIGJlIG9wZW4gc291cmNlLgo+ID4+Pgo+ID4+PiBCZXN0IHJlZ2FyZHMsCj4g Pj4+IExpdml1Cj4gPj4+Cj4gPj4+ID4gQnV0IGJlc2lkZXMgdGhhdCwgaXQgd29ya3MKPiA+Pj4g PiBwZXJmZWN0bHkgZmluZSBmb3IgYXJtIHJlbmRlciBjb21wcmVzc2lvbiBmb3JtYXQgdG9vLgo+ ID4+PiA+IC1EYW5pZWwKPiA+Pj4gPiAtLQo+ID4+PiA+IERhbmllbCBWZXR0ZXIKPiA+Pj4gPiBT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+Pj4gPiBodHRwOi8vYmxvZy5m ZndsbC5jaAo+ID4+Pgo+ID4+PiAtLQo+ID4+Cj4gPj5TbyBhcmUgd2UgZ29vZCB3aXRoIHBhdGNo IDEsIHNvcnJ5IGlmIEkgbWlzc2VkIGFueSByZWFsIHZhbGlkIGNoYW5nZXMgSSBuZWVkIHRvCj4g Pj5tYWtlLCBidXQgY2FuIHdlIHBsZWFzZSBjYXB0dXJlIHRoYXQgaGVyZS4KPiA+Cj4gPlN1cmUs Cj4gPgo+IAo+IFRoYW5rcy4gUmVvcmRlcmVkIHlvdXIgY29tbWVudHMgYSBiaXQuLi4KPiAKPiA+ LSBkb2N1bWVudGF0aW9uIG5lZWRzIHRvIHVzZSB0aGUgYWN0dWFsIG1hY3JvIG5hbWU6IERSTV9G T1JNQVRfTU9EX0lOVkFMSUQKPiAKPiBPa2F5LiBJdCBvcmlnaW5hbGx5IHdhc24ndCB0aGlzIHdh eSBiZWNhdXNlIGl0IGZvcmNlcyB0aGUgc2VudGVuY2UgdG8gYmUgdHdvCj4gbGluZXMsIGJ1dCBJ J3ZlIGNoYW5nZWQgaXQuCj4gCj4gPi0gc29tZSBleHRyYW5lb3VzIGVtcHR5IGxpbmVzIGNvdWxk IGJlIHRyaW1tZWQKPiAKPiBJIHRoaW5rIEkgZ290IHRoZW0gYWxsLi4KPiAKPiA+LSBkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQgY29tbWVudCBhYm91dCBmaXJzdCBkcml2ZXIgd2l0aCA+IDY0IGZv cm1hdHMgY291bGQgZG8KPiA+IHdpdGggc29tZSB2ZXJib3NlIGV4cGxhbmF0aW9uIG9uIHdoeSAo ImJlY2F1c2Ugd2UgZW5jb2RlIGVhY2ggZm9ybWF0IGFzIGEgYml0Cj4gPiBpbiB0aGUgZm9ybWF0 X21vZGlmaWVycyBmaWVsZCBhbmQgd2UgaGF2ZSBvbmx5IHJlc2VydmVkIDY0IGJpdHMgZm9yIHRo YXQiKQo+IAo+IAo+ID4tIG1vc3QgKGFsbD8pIGRyaXZlcnMgYXJlIHBhc3NpbmcgTlVMTCBhcyB0 aGUgZm9ybWF0X21vZGlmaWVyIHBvaW50ZXIgdG8KPiA+IGRybV91bml2ZXJzYWxfcGxhbmVfaW5p dCgpIHdoaWNoIG1ha2VzIG1lIHdvbmRlciBpZiBpdCBpcyBub3QgYmV0dGVyIHRvIGhhdmUgYQo+ ID4gZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBkcml2ZXJzIHRoYXQgd2FudCB0byBwYXNzIGEgbm9u LU5VTEwgZm9ybWF0X21vZGlmaWVyLgo+IAo+IEkgY2FuIHdyYXAgdGhpcywgdGhhdCBtaWdodCBi ZSB0aGUgYmVzdCB3YXkgYW5kIHRoZW4gSSB3b3VsZG4ndCBuZWVkIHRvIHRvdWNoCj4gdGhlIG90 aGVyIGRyaXZlcnMuIEhlcmUgaXMgdGhlIHJlbGV2YW50IHBhcnQgb2YgdGhlIGRpZmY6Cj4gCj4g SSdtIGZpbmUgd2l0aCB0aGF0IGlmIG90aGVyIHBlb3BsZSBhcmUuIEl0IG9ubHkgaXMgdGhlIHdh eSBpdCBpcyBiZWNhdXNlCj4gS3Jpc3RpYW4gb3JpZ2luYWxseSBkaWQgdGhpcyBmb3IgR0VUX1BM QU5FMi4KPiAKPiArX19wcmludGYoOSwgMTApCj4gK2ludCBkcm1fdW5pdmVyc2FsX3BsYW5lX2lu aXRfd2l0aF9tb2RpZmllcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcG9z c2libGVfY3J0Y3MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzICpmdW5jcywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpmb3JtYXRzLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZv cm1hdF9jb3VudCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVpbnQ2NF90ICpmb3JtYXRfbW9kaWZpZXJzLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwg Li4uKTsKPiBfX3ByaW50Zig4LCA5KQo+IC1pbnQgZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHBvc3NpYmxlX2NydGNzLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9mdW5jcyAqZnVuY3MsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50MzJfdCAqZm9ybWF0cywKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBmb3JtYXRfY291bnQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lLCAuLi4pOwo+ICtzdGF0aWMgaW5saW5lIGludAo+ICtkcm1f dW5pdmVyc2FsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IHBvc3NpYmxlX2NydGNzLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzICpmdW5jcywKPiArICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKmZvcm1hdHMsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXRfY291bnQsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqbmFtZSwgLi4uKQo+ICt7Cj4gKyAgICAgICB2YV9saXN0IGFwOwo+ICsgICAg ICAgaW50IHJldDsKPiArCj4gKyAgICAgICB2YV9zdGFydChhcCwgbmFtZSk7Cj4gKyAgICAgICBy ZXQgPSAgZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0X3dpdGhfbW9kaWZpZXJzKGRldiwgcGxhbmUs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvc3NpYmxlX2NydGNzLCBmdW5jcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0cywgZm9ybWF0X2NvdW50LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCB0eXBl LCBuYW1lLCBhcCk7Cj4gKyAgICAgICB2YV9lbmQoYXApOwo+ICsgICAgICAgcmV0dXJuIHJldDsK PiArfQo+ICsKCkkgZ3Vlc3MgdGhlIHBhdGNoc2V0J3MgZGVsdGEgaXMgZ29pbmcgdG8gZ28gZG93 biBzaWduaWZpY2FudGx5IHdpdGggdGhpcyBpZgppOTE1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0 IGV4cGxpY2l0bHkgY2FsbHMgdGhlIG5ldyBmdW5jdGlvbi4gSSdsbCB3YWl0CnVudGlsIG5leHQg cmV2aXNpb24gdG8gc2VlLCBidXQgSSBoYXZlIGEgYmlhcyB0b3dhcmRzIHNtYWxsZXIgcGF0Y2hl cy4KCgo+IAo+IAo+ID4tIHBsYW5lLT5tb2RpZmllcl9jb3VudCBpcyBuZXZlciB1c2VkCj4gPi0g bWVtY3B5KCktaW5nIHRoZSBmb3JtYXRfbW9kaWZpZXJzIGluIGRybV91bml2ZXJzYWxfcGxhbmVf aW5pdCBkb2Vzbid0IGNoZWNrIGZvcgo+ID4gTlVMTCBldmVuIGlmIHRoYXQgaXMgd2hhdCBtb3N0 IGRyaXZlcnMgcGFzcyBvbiB3aGVuIHRoZXkgY2FsbCB0aGUgZnVuY3Rpb24uCgpXaGF0IGFib3V0 IHRoaXMgb25lPwoKPiA+LSBmb3JtYXRfbW9kX3N1cHBvcnRlZCBmdW5jdGlvbiBpcyBub3QgdXNl ZCBpbiAxLzMgcGF0Y2gsIHlvdSBjYW4gaW50cm9kdWNlIGl0Cj4gPiBpbiB0aGUgcGF0Y2ggdGhh dCBhY3R1YWxseSB1c2VzIGl0Cj4gPi0gZHJtX3BsYW5lJ3MgZm9ybWF0cyBmaWVsZCBkb2Vzbid0 IGxvb2sgdXNlZCBlaXRoZXIuCj4gPgo+IAo+IFJlZ2FyZGluZyB0aGUgdW51c2VkIGZpZWxkcywg dGhleSBhcmUgdXNlZCBpbiBsYXRlciBwYXRjaGVzIGJ5IHRoZQo+IGltcGxlbWVudGF0aW9uLiBJ IHNwZWNpZmljYWxseSBzcGxpdCBvdXQgdGhpcyBzbyB0aGF0IHdlIGNhbiBkZWFsIHdpdGggYWxs IHRoZQo+IERSTSBoYXJkd2FyZSBzcGVjaWZpYyBkcml2ZXIgY2hhbmdlcyBpbiBvbmUgW3N1cHBv c2VkIHRvIGJlXSB0cml2aWFsIHBhdGNoLgo+IEdlbmVyYWxseSBJIGFncmVlIHRoYXQgaW50cm9k dWNpbmcgZmllbGRzIHdpdGhvdXQgdXNpbmcgdGhlbSBpcyBub3QgdmVyeSB1c2VmdWwKPiB0byBy ZXZpZXdlcnMsIGJ1dCBJIGNvbnNpZGVyIHRoaXMgYSBzcGVjaWFsIGNhc2UuCgpPSywgYnV0IHBs YW5lLT5tb2RpZmllcl9jb3VudCBpcyBub3QgdXNlZCBieSBhbnkgb2YgeW91ciBwYXRjaGVzLiBP VE9ILApwbGFuZS0+bW9kaWZpZXJzIGlzIGFsbG9jYXRlZCwgbWVtY3B5LWVkIG9uY2UgaW50byBm cm9tIHRoZSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoKSAKcGFyYW1ldGVyIGFuZCBuZXZlciB1 c2VkIGFnYWluIHVudGlsIGtmcmVlZC4gVGhlcmUgc2VlbXMgdG8gYmUgYXQgbGVhc3Qgb25lIHBs YWNlCndoZXJlIHlvdSBjb3VsZCB1c2UgcGxhbmUtPm1vZGlmaWVycyB3aXRob3V0IGhhdmluZyB0 byBwYXNzIHRoZSBmb3JtYXRfbW9kaWZpZXJzCmFnYWluIGFzIHBhcmFtZXRlciAoaW4gY3JlYXRl X2luX2Zvcm1hdF9ibG9iKCkgaW4gMi8zKS4KCkJlc3QgcmVnYXJkcywKTGl2aXUKCj4gCj4gSSBz ZWUgdHdvIHByaW1hcnkgcmVhc29ucyBmb3IgdGhpczoKPiAxLiBJdCBtYWRlIHJlYmFzZSBlYXNp ZXIgKHJlbWVtYmVyLCB0aGlzIHNlcmllcyBpcyA+IDYgbW9udGhzIG9sZCksIGFuZCBhcyBuZXcK PiAgIERSTSBkcml2ZXJzIHdlcmUgYWRkZWQsIGl0IG1hZGUgYSBuaWNlIHNpbXBsZSBwYXRjaCB0 byBjaGFuZ2UuCj4gMi4gRWFzeSB0byBzcG90IGtidWlsZCBmYWlsdXJlcy9yZXNvbHV0aW9ucy4K PiAzLiBSZXZpZXcgc2hvdWxkIGJlIHRyaXZpYWwgZm9yIGFsbCB0aGUgb3RoZXIgaGFyZHdhcmUg cGVvcGxlLiBJZiB0aGV5IGRvbid0Cj4gICBjYXJlIGFib3V0IG1vZGlmaWVycywgdGhleSBjYW4g cHJldHR5IG11Y2ggaWdub3JlIHRoZSBwYXRjaCBlbnRpcmUuCj4gCj4gPllvdSBjYW4gbG9vayBp biB0aGUgZmlyc3QgcmVwbHkgdG8geW91ciAxLzMgcGF0Y2ggaWYgeW91IHdhbnQgdGhlIGRldGFp bHMuCj4gPgo+ID5CZXN0IHJlZ2FyZHMsCj4gPkxpdml1Cj4gPgo+ID4+Cj4gPj4tLQo+ID4+QmVu IFdpZGF3c2t5LCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgo+ID4+X19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+PmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPiA+PmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+Pmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gPgo+ ID4tLSAKPiA+PT09PT09PT09PT09PT09PT09PT0KPiA+fCBJIHdvdWxkIGxpa2UgdG8gfAo+ID58 IGZpeCB0aGUgd29ybGQsICB8Cj4gPnwgYnV0IHRoZXkncmUgbm90IHwKPiA+fCBnaXZpbmcgbWUg dGhlICAgfAo+ID5cIHNvdXJjZSBjb2RlISAgLwo+ID4gLS0tLS0tLS0tLS0tLS0tCj4gPiAgIMKv XF8o44OEKV8vwq8KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKCi0tIAogICBfCiBffF98XwogKCdfJykKICjiioMgICniioMKIHxffF98Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=