From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 0/2] Lima DRM driver Date: Tue, 26 Feb 2019 17:23:11 +0100 Message-ID: <680ab8c8-2e83-53af-1b95-42476c2dcbda@gmail.com> References: <20190206131457.1072-1-yuq825@gmail.com> <20190207090941.GP3271@phenom.ffwll.local> <20190207155105.GU3271@phenom.ffwll.local> <87tvh81ozm.fsf@anholt.net> <456fbaaa-da0d-10c7-73fd-93571c51bf9f@gmail.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , =?UTF-8?Q?Christian_K=c3=b6nig?= Cc: Marek Vasut , Simon Shields , Alyssa Rosenzweig , lima@lists.freedesktop.org, Neil Armstrong , Maxime Ripard , dri-devel , Vasily Khoruzhick , David Airlie , Qiang Yu , Sean Paul , Andreas Baierl , Erico Nunes List-Id: dri-devel@lists.freedesktop.org QW0gMjYuMDIuMTkgdW0gMTY6NTggc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFdlZCwgRmVi IDEzLCAyMDE5IGF0IDk6MzUgQU0gQ2hyaXN0aWFuIEvDtm5pZwo+IDxja29lbmlnLmxlaWNodHp1 bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IEFtIDEzLjAyLjE5IHVtIDA4OjU5IHNjaHJpZWIg RGFuaWVsIFZldHRlcjoKPj4+IE9uIFdlZCwgRmViIDEzLCAyMDE5IGF0IDI6NDQgQU0gUm9iIEhl cnJpbmcgPHJvYmhAa2VybmVsLm9yZz4gd3JvdGU6Cj4+Pj4gT24gVHVlLCBGZWIgMTIsIDIwMTkg YXQgNzowMCBQTSBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PiB3cm90ZToKPj4+Pj4gUm9i IEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4gd3JpdGVzOgo+Pj4+Pgo+Pj4+Pj4gT24gVGh1LCBG ZWIgNywgMjAxOSBhdCA5OjUxIEFNIERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3Jv dGU6Cj4+Pj4+Pj4gT24gVGh1LCBGZWIgMDcsIDIwMTkgYXQgMTE6MjE6NTJQTSArMDgwMCwgUWlh bmcgWXUgd3JvdGU6Cj4+Pj4+Pj4+IE9uIFRodSwgRmViIDcsIDIwMTkgYXQgNTowOSBQTSBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+Pj4+Pj4gT24gV2VkLCBGZWIg MDYsIDIwMTkgYXQgMDk6MTQ6NTVQTSArMDgwMCwgUWlhbmcgWXUgd3JvdGU6Cj4+Pj4+Pj4+Pj4g S2VybmVsIERSTSBkcml2ZXIgZm9yIEFSTSBNYWxpIDQwMC80NTAgR1BVcy4KPj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4+IFNpbmNlIGxhc3QgUkZDLCBhbGwgZmVlZGJhY2sgaGFzIGJlZW4gYWRkcmVzc2Vk LiBNb3N0IE1hbGkgRFRTCj4+Pj4+Pj4+Pj4gY2hhbmdlcyBhcmUgYWxyZWFkeSB1cHN0cmVhbWVk IGJ5IFNvQyBtYWludGFpbmVycy4gVGhlIGtlcm5lbAo+Pj4+Pj4+Pj4+IGRyaXZlciBhbmQgdXNl ci1rZXJuZWwgaW50ZXJmYWNlIGFyZSBxdWl0ZSBzdGFibGUgZm9yIHNldmVyYWwKPj4+Pj4+Pj4+ PiBtb250aHMsIHNvIEkgdGhpbmsgaXQncyByZWFkeSB0byBiZSB1cHN0cmVhbWVkLgo+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4gVGhpcyBpbXBsZW1lbnRhdGlvbiBtYWlubHkgdGFrZSBhbWRncHUgRFJN IGRyaXZlciBhcyByZWZlcmVuY2UuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiAtIE1hbGkgNHh4IEdQ VXMgaGF2ZSB0d28ga2luZHMgb2YgcHJvY2Vzc29ycyBHUCBhbmQgUFAuIEdQIGlzIGZvcgo+Pj4+ Pj4+Pj4+ICAgICBPcGVuR0wgdmVydGV4IHNoYWRlciBwcm9jZXNzaW5nIGFuZCBQUCBpcyBmb3Ig ZnJhZ21lbnQgc2hhZGVyCj4+Pj4+Pj4+Pj4gICAgIHByb2Nlc3NpbmcuIEVhY2ggcHJvY2Vzc29y IGhhcyBpdHMgb3duIE1NVSBzbyBwcmNlc3NvcnMgd29yayBpbgo+Pj4+Pj4+Pj4+ICAgICB2aXJ0 dWFsIGFkZHJlc3Mgc3BhY2UuCj4+Pj4+Pj4+Pj4gLSBUaGVyZSdzIG9ubHkgb25lIEdQIGJ1dCBt dWx0aXBsZSBQUCAobWF4IDQgZm9yIG1hbGkgNDAwIGFuZCA4Cj4+Pj4+Pj4+Pj4gICAgIGZvciBt YWxpIDQ1MCkgaW4gdGhlIHNhbWUgbWFsaSA0eHggR1BVLiBBbGwgUFBzIGFyZSBncm91cGVkCj4+ Pj4+Pj4+Pj4gICAgIHRvZ2F0aGVyIHRvIGhhbmRsZSBhIHNpbmdsZSBmcmFnbWVudCBzaGFkZXIg dGFzayBkaXZpZGVkIGJ5Cj4+Pj4+Pj4+Pj4gICAgIEZCIG91dHB1dCB0aWxlZCBwaXhlbHMuIE1h bGkgNDAwIHVzZXIgc3BhY2UgZHJpdmVyIGlzCj4+Pj4+Pj4+Pj4gICAgIHJlc3BvbnNpYmxlIGZv ciBhc3NpZ24gdGFyZ2V0IHRpbGVkIHBpeGVscyB0byBlYWNoIFBQLCBidXQgbWFsaQo+Pj4+Pj4+ Pj4+ICAgICA0NTAgaGFzIGEgSFcgbW9kdWxlIGNhbGxlZCBETEJVIHRvIGR5bmFtaWNhbGx5IGJh bGFuY2UgZWFjaAo+Pj4+Pj4+Pj4+ICAgICBQUCdzIGxvYWQuCj4+Pj4+Pj4+Pj4gLSBVc2VyIHNw YWNlIGRyaXZlciBhbGxvY2F0ZSBidWZmZXIgb2JqZWN0IGFuZCBtYXAgaW50byBHUFUKPj4+Pj4+ Pj4+PiAgICAgdmlydHVhbCBhZGRyZXNzIHNwYWNlLCB1cGxvYWQgY29tbWFuZCBzdHJlYW0gYW5k IGRyYXcgZGF0YSB3aXRoCj4+Pj4+Pj4+Pj4gICAgIENQVSBtbWFwIG9mIHRoZSBidWZmZXIgb2Jq ZWN0LCB0aGVuIHN1Ym1pdCB0YXNrIHRvIEdQL1BQIHdpdGgKPj4+Pj4+Pj4+PiAgICAgYSByZWdp c3RlciBmcmFtZSBpbmRpY2F0aW5nIHdoZXJlIGlzIHRoZSBjb21tYW5kIHN0cmVhbSBhbmQgbWlz Ywo+Pj4+Pj4+Pj4+ICAgICBzZXR0aW5ncy4KPj4+Pj4+Pj4+PiAtIFRoZXJlJ3Mgbm8gY29tbWFu ZCBzdHJlYW0gdmFsaWRhdGlvbi9yZWxvY2F0aW9uIGR1ZSB0byBlYWNoIHVzZXIKPj4+Pj4+Pj4+ PiAgICAgcHJvY2VzcyBoYXMgaXRzIG93biBHUFUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBHUC9Q UCdzIE1NVSBzd2l0Y2gKPj4+Pj4+Pj4+PiAgICAgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGJlZm9y ZSBydW5uaW5nIHR3byB0YXNrcyBmcm9tIGRpZmZlcmVudAo+Pj4+Pj4+Pj4+ICAgICB1c2VyIHBy b2Nlc3MuIEVycm9yIG9yIGV2aWwgdXNlciBzcGFjZSBjb2RlIGp1c3QgZ2V0IE1NVSBmYXVsdAo+ Pj4+Pj4+Pj4+ICAgICBvciBHUC9QUCBlcnJvciBJUlEsIHRoZW4gdGhlIEhXL1NXIHdpbGwgYmUg cmVjb3ZlcmVkLgo+Pj4+Pj4+Pj4+IC0gVXNlIFRUTSBhcyBNTS4gVFRNX1BMX1RUIHR5cGUgbWVt b3J5IGlzIHVzZWQgYXMgdGhlIGNvbnRlbnQgb2YKPj4+Pj4+Pj4+PiAgICAgbGltYSBidWZmZXIg b2JqZWN0IHdoaWNoIGlzIGFsbG9jYXRlZCBmcm9tIFRUTSBwYWdlIHBvb2wuIGFsbAo+Pj4+Pj4+ Pj4+ICAgICBsaW1hIGJ1ZmZlciBvYmplY3QgZ2V0cyBwaW5uZWQgd2l0aCBUVE1fUExfRkxBR19O T19FVklDVCB3aGVuCj4+Pj4+Pj4+Pj4gICAgIGFsbG9jYXRpb24sIHNvIHRoZXJlJ3Mgbm8gYnVm ZmVyIGV2aWN0aW9uIGFuZCBzd2FwIGZvciBub3cuCj4+Pj4+Pj4+PiBBbGwgb3RoZXIgcmVuZGVy IGdwdSBkcml2ZXJzIHRoYXQgaGF2ZSB1bmlmaWVkIG1lbW9yeSAoYWthIGlzIG9uIHRoZSBTb0Mp Cj4+Pj4+Pj4+PiB1c2UgR0VNIGRpcmVjdGx5LCB3aXRoIHNvbWUgb2YgdGhlIGhlbHBlcnMgd2Ug aGF2ZS4gU28gbXNtLCBldG5hdml2LCB2YzQKPj4+Pj4+Pj4+IChhbmQgaTkxNSBpcyBraW5kYSB0 aGUgc2FtZSB0b28gcmVhbGx5KS4gVFRNIG1ha2VzIHNlbnNlIGlmIHlvdSBoYXZlIHNvbWUKPj4+ Pj4+Pj4+IGRpc2NyZXRlIG1lbW9yeSB0byBtYW5hZ2UsIGJ1dCBpbW8gbm90IGluIGFueSBvdGhl ciBwbGFjZSByZWFsbHkuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gV2hhdCdzIHRoZSBkZXNpZ24gY2hv aWNlIGJlaGluZCB0aGlzPwo+Pj4+Pj4+PiBUbyBiZSBob25lc3QsIGl0J3MganVzdCBiZWNhdXNl IFRUTSBvZmZlcnMgbW9yZSBoZWxwZXJzLiBJIGRpZCBpbXBsZW1lbnQKPj4+Pj4+Pj4gYSBHRU0g d2F5IHdpdGggY21hIGFsbG9jIGF0IHRoZSBiZWdpbm5pbmcuIEJ1dCB3aGVuIGltcGxlbWVudCBw YWdlZCBtZW0sCj4+Pj4+Pj4+IEkgZm91bmQgVFRNIGhhcyBtZW0gcG9vbCBhbGxvYywgc3luYyBh bmQgbW1hcCByZWxhdGVkIGhlbHBlcnMgd2hpY2ggY292ZXJzCj4+Pj4+Pj4+IG11Y2ggb2YgbXkg ZXhpc3RpbmcgY29kZS4gSXQncyB0b3RhbGx5IHBvc3NpYmxlIHdpdGggR0VNLCBidXQgbm90IGFz IGVhc3kgYXMKPj4+Pj4+Pj4gVFRNIHRvIG1lLiBBbmQgdmlydGlvLWdwdSBzZWVtcyBhbiBleGFt cGxlIHRvIHVzZSBUVE0gd2l0aG91dCBkaXNjcmV0ZQo+Pj4+Pj4+PiBtZW0uIFNob3VsZG4ndCBU VE0gYSBzdXBlciBzZXQgb2YgYm90aCB1bmlmaWVkIG1lbSBhbmQgZGlzY3JldGUgbWVtPwo+Pj4+ Pj4+IHZpcnRpbyBkb2VzIGhhdmUgZmFrZSB2cmFtIGFuZCBtaWdyYXRpb24gYWZhaXVpLiBBbmQg c3VyZSwgeW91IGNhbiB1c2UgVFRNCj4+Pj4+Pj4gd2l0aG91dCB0aGUgdnJhbSBtaWdyYXRpb24s IGl0J3MganVzdCB0aGF0IG1vc3Qgb2YgdGhlIGNvbXBsZXhpdHkgb2YgVFRNCj4+Pj4+Pj4gaXMg ZHVlIHRvIGJ1ZmZlciBwbGFjZW1lbnQgYW5kIG1pZ3JhdGlvbiBhbmQgYWxsIHRoYXQgc3R1ZmYu IElmIHlvdSBuZXZlcgo+Pj4+Pj4+IG5lZWQgdG8gbW92ZSBidWZmZXJzLCB0aGVuIHlvdSBkb24n dCBuZWVkIHRoYXQgZXZlci4KPj4+Pj4+Pgo+Pj4+Pj4+IFdydCBsYWNrIG9mIGhlbHBlcnMsIHdo YXQgZXhhY3RseSBhcmUgeW91IGxvb2tpbmcgZm9yPyBBIGJpZyBwYXJ0IG9mIHRoZXNlCj4+Pj4+ Pj4gZm9yIFRUTSBpcyB0aGF0IFRUTSBpcyBhIGJpZCBhIG1pZGxheWVyLCBzbyByZWludmVudHMg YSBidW5jaCBvZiB0aGluZ3MKPj4+Pj4+PiBwcm92aWRlZCBieSBlLmcuIGRtYS1hcGkuIEl0J3Mg Y2xlYW5lciB0byB1c2UgdGhlIGRtYS1hcGkgZGlyZWN0bHkuIEJhc2luZwo+Pj4+Pj4+IHRoZSBs aW1hIGtlcm5lbCBkcml2ZXIgb24gdmM0LCBmcmVlZHJlbm8gb3IgZXRuYXZpdiAobGFzdCBvbmUg aXMgcHJvYmFibHkKPj4+Pj4+PiBjbG9zZXN0LCBzaW5jZSBpdCBkb2Vzbid0IGhhdmUgYSBkaXNw bGF5IGJsb2NrIGVpdGhlcikgd291bGQgYmUgYmV0dGVyIEkKPj4+Pj4+PiB0aGluay4KPj4+Pj4+ IEZXSVcsIEknbSB3b3JraW5nIG9uIHRoZSBwYW5mcm9zdCBkcml2ZXIgYW5kIGFtIHVzaW5nIHRo ZSBzaG1lbQo+Pj4+Pj4gaGVscGVycyBmcm9tIE5vcmFsZi4gSXQncyB0aGUgZWFybHkgc3RhZ2Vz IHRob3VnaC4gSSBzdGFydGVkIGEgcGF0Y2gKPj4+Pj4+IGZvciBldG5hdml2IHRvIHVzZSBpdCB0 b28sIGJ1dCBmb3VuZCBJIG5lZWQgdG8gcmV3b3JrIGl0IHRvIHN1Yi1jbGFzcwo+Pj4+Pj4gdGhl IHNobWVtIEdFTSBvYmplY3QuCj4+Pj4+IERpZCB5b3UganVzdCBjb252ZXJ0IHRoZSBzaG1lbSBo ZWxwZXJzIG92ZXIgdG8gZG9pbmcgYWxsb2NfY29oZXJlbnQ/ICBJZgo+Pj4+PiBzbywgSSdkIGJl IGludGVyZXN0ZWQgaW4gcGlja2luZyB0aGVtIHVwIGZvciB2M2QsIGFuZCB0aGF0IG1pZ2h0IGhl bHAKPj4+Pj4gZ2V0IGFub3RoZXIgcGF0Y2ggb3V0IG9mIHlvdXIgc3RhY2suCj4+Pj4gSSBoYXZl bid0IHJlYWxseSBmdWxseSBhZGRyZXNzZWQgdGhhdCB5ZXQsIGJ1dCB5ZWFoLCBteSBwbGFuIGlz IGp1c3QKPj4+PiB0byBzd2l0Y2ggdG8gV0MgYWxsb2MgYW5kIG1hcHBpbmdzLiBJIHdhcyBnb2lu ZyB0byB0cnkgdG8gbWFrZSBpdAo+Pj4+IGNvbmZpZ3VyYWJsZSwgYnV0IHRoZXJlIGlzIGEgY29t bWVudCBpbiB0aGUgQVJNIGRtYSBtYXBwaW5nIGNvZGUgd2hpY2gKPj4+PiBtYWtlcyBtZSB3b25k ZXIgaWYgdGlueWRybSB1c2luZyBzdHJlYW1pbmcgRE1BIGZvciBTUEkgaXMKPj4+PiBmdW5kYW1l bnRhbGx5IGJyb2tlbiAoYW5kIG1heWJlIENNQSBpcyBsZXNzIGJyb2tlbj8pLiBJZiBub3QgYnJv a2VuLAo+Pj4+IG5vdCBndWFyYW50ZWVkIHRvIHdvcmsuCj4+Pj4KPj4+PiAvKgo+Pj4+ICAgICog VGhlIHdob2xlIGRtYV9nZXRfc2d0YWJsZSgpIGlkZWEgaXMgZnVuZGFtZW50YWxseSB1bnNhZmUg LSBpdCBzZWVtcwo+Pj4+ICAgICogdGhhdCB0aGUgaW50ZW50aW9uIGlzIHRvIGFsbG93IGV4cG9y dGluZyBtZW1vcnkgYWxsb2NhdGVkIHZpYSB0aGUKPj4+PiAgICAqIGNvaGVyZW50IERNQSBBUElz IHRocm91Z2ggdGhlIGRtYV9idWYgQVBJLCB3aGljaCBvbmx5IGFjY2VwdHMgYQo+Pj4+ICAgICog c2NhdHRlcnRhYmxlLiAgVGhpcyBwcmVzZW50cyBhIGNvdXBsZSBvZiBwcm9ibGVtczoKPj4+PiAg ICAqIDEuIE5vdCBhbGwgbWVtb3J5IGFsbG9jYXRlZCB2aWEgdGhlIGNvaGVyZW50IERNQSBBUElz IGlzIGJhY2tlZCBieQo+Pj4+ICAgICogICAgYSBzdHJ1Y3QgcGFnZQo+Pj4+ICAgICogMi4gUGFz c2luZyBjb2hlcmVudCBETUEgbWVtb3J5IGludG8gdGhlIHN0cmVhbWluZyBBUElzIGlzIG5vdCBh bGxvd2VkCj4+Pj4gICAgKiAgICBhcyB3ZSB3aWxsIHRyeSB0byBmbHVzaCB0aGUgbWVtb3J5IHRo cm91Z2ggYSBkaWZmZXJlbnQgYWxpYXMgdG8gdGhhdAo+Pj4+ICAgICogICAgYWN0dWFsbHkgYmVp bmcgdXNlZCAoYW5kIHRoZSBmbHVzaGVzIGFyZSByZWR1bmRhbnQuKQo+Pj4+ICAgICovCj4+PiBU aGUgc2cgdGFibGUgaXMgb25seSBmb3IgZGV2aWNlIGFjY2Vzcywgd2hpY2ggYXZvaWRzIGJvdGgg b2YgdGhlc2UKPj4+IGlzc3Vlcy4gVGhhdCdzIHRoZSBpZGVhIGF0IGxlYXN0LCBleGNlcHQgYWxs IHR0bS1iYXNlZCBkcml2ZXJzIGRvbid0Cj4+PiBjYXJlLCBpbnN0ZWFkIHRoZXkgZXhwZWN0IGEg c3RydWN0IHBhZ2UgYW5kIHRoZW4gdXNlIHRoYXQgdG8gYnVpbGQgYQo+Pj4gdHRtX2JvLiBBbmQg dGhlbiB1c2UgYWxsIHRoZSB0dG0gY3B1IHNpZGUgYWNjZXNzIGZ1bmN0aW9ucywgaW5zdGVhZCBv Zgo+Pj4gdXNpbmcgdGhlIGRtYS1idWYgaW50ZXJmYWNlcyAod2hpY2ggbmVlZCB0byBleGlzdCB0 byBhdm9pZCB0aGUgYWJvdmUKPj4+IGlzc3VlcykuCj4+IEFjdHVhbGx5IHRoYXQgaXMgbm90IGNv cnJlY3QgYW55IG1vcmUuIEkndmUgZml4ZWQgdGhpcyB3aGlsZSB3b3JraW5nIG9uCj4+IGRpcmVj dGx5IHNoYXJpbmcgQk9zIGJldHdlZW4gYW1kZ3B1IGRldmljZXMuCj4+Cj4+IFRUTSBub3cgdXNl cyB0aGUgRE1BIGFkZHJlc3NlcyBmcm9tIHRoZSBzZyB0YWJsZSBhbmQgSSBhY3R1YWxseSB3YW50 ZWQKPj4gdG8gcmVtb3ZlIHRoZSBwYWdlcyBmb3IgaW1wb3J0ZWQgRE1BLWJ1ZiBCT3MgZm9yIGEg d2hpbGUgbm93Lgo+IEZpbmFsbHkgZ290dGVuIGFyb3VuZCB0byByZWFkaW5nIHR0bSBjb2RlIHRv IHVwZGF0ZSBteSB1bmRlcnN0YW5kaW5nLAo+IGFuZCBJIHRoaW5rIEkgcmVhbGl6ZWQgd2h5IEkg bmV2ZXIgcmVhbGl6ZWQgdGhpcyBjaGFuZ2VkOgo+IFRUTV9QQUdFX0ZMQUdfU0cgYW5kIHJlbGF0 ZWQgY29kZSBzZWVtcyB0byBiZSB0aGUgZmFuY3kgbmV3IGNvZGUgeW91Cj4gYWRkZWQgdG8gZ28g c2cgdGFibGUgbmF0aXZlIGluIHR0bSwgYW5kIGZyb20gYSBxdWljayBsb29rIHJvbGxlZCBvdXQK PiBldmVyeXdoZXJlLiBCdXQgZHJtX3ByaW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJheXMgaXMgc3Rp bGwgY2FsbGVkLiBJcwo+IHRoYXQgdGhlIG1pc3NpbmcgY2xlYW51cCB5b3UncmUgcmVmZXJyaW5n IHRvPwoKWWVzLCBleGFjdGx5LiBUaGUgbGFzdCB0aGluZyBJIHB1c2hlZCB1cHN0cmVhbSB3YXMg bWFraW5nIHRoZSBwYWdlcyAKb3B0aW9uYWwgaW4gZHJtX3ByaW1lX3NnX3RvX3BhZ2VfYWRkcl9h cnJheXMuCgpJIGp1c3QgbmV2ZXIgZ290IGFyb3VuZCB0byByZWFsbHkgbm90IGZpbGwgdHRtLT5w YWdlcyBhbnkgbW9yZSwgYnV0IGluIAp0aGVvcnkgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGp1 c3QgY29tbWVudCB0aGF0IG91dCBhbmQgYmUgaGFwcHkgYWJvdXQgaXQuCgpDaHJpc3RpYW4uCgo+ ICAgV291bGQgYmUgbmljZSBpZiB3ZQo+IGNvdWxkIG51a2UgaXQgdG8gc3RvcCB0aGUgY29weXBh c3RhIHNwcmVhZCAoYW5kIHNwcmVhZGluZyBpdCBzZWVtcyB0bwo+IGRvIDotLykuIE1heWJlIGFz IGEgdG9kby5yc3QgZW50cnk/Cj4KPiBDaGVlcnMsIERhbmllbAo+Cj4+IFJlZ2FyZHMsCj4+IENo cmlzdGlhbi4KPj4KPj4+IFNvIGV4Y2VwdCBpZiB5b3Ugd2FudCB0byBmaXggdHRtIGRtYS1idWYg aW1wb3J0ICh3aGljaCBpcyBnb2luZyB0byBiZQo+Pj4gYSBwaWxlIG9mIHdvcmspLCBhZGQgdGhp cyB0byB0aGUgbGlzdCBvZiB3aHkgdHRtIGlzIHByb2JhYmx5IG5vdCB0aGUKPj4+IGJlc3QgY2hv aWNlIGZvciBzb21ldGhpbmcgbW9zdGx5IHJ1bm5pbmcgb24gYXJtIHNvYy4geDg2IGdldHMgYXdh eQo+Pj4gYmVjYXVzZSBkbWEgaXMgZWFzeSBvbiB4ODYuCj4+PiAtRGFuaWVsCj4+Pgo+Pj4+PiBJ J20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIHNobWVtIGhlbHBlcnMgYmVjYXVzZSBJ IHNob3VsZCBzdGFydAo+Pj4+PiBkb2luZyBkeW5hbWljIGJpbmRpbmcgaW4gYW5kIG91dCBvZiB0 aGUgR1BVJ3MgcGFnZSB0YWJsZSwgdG8gYXZvaWQKPj4+Pj4gcGlubmluZyBzbyBtdWNoIG1lbW9y eSBhbGwgdGhlIHRpbWUuCj4+Pj4gSSdsbCB0cnkgdG8gcG9zdCBzb21ldGhpbmcgaW4gdGhlIG5l eHQgY291cGxlIG9mIGRheXMuCj4+Pj4KPj4+PiBSb2IKPj4+Cj4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==