From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/1] drm: Add dirty_rects atomic blob property for drm_plane Date: Tue, 6 Mar 2018 08:08:37 +0100 Message-ID: <20180306070837.GM22212@phenom.ffwll.local> References: <20171221111008.38764-1-lukasz.spintzyk@displaylink.com> <20171221111008.38764-2-lukasz.spintzyk@displaylink.com> <20171221124655.GJ10981@intel.com> <20171221131040.GX26573@phenom.ffwll.local> <20180305083736.GA22212@phenom.ffwll.local> <87873ee4-32b9-c26a-6f73-5e4fa87c5aa1@vmware.com> <20180305093949.GL22212@phenom.ffwll.local> <6d7190e3-8a87-0e50-5820-9b2ef5c9d346@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EB0E6E566 for ; Tue, 6 Mar 2018 07:08:41 +0000 (UTC) Received: by mail-wm0-x236.google.com with SMTP id z9so20032683wmb.3 for ; Mon, 05 Mar 2018 23:08:41 -0800 (PST) Content-Disposition: inline In-Reply-To: <6d7190e3-8a87-0e50-5820-9b2ef5c9d346@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@intel.com" , Deepak Singh Rawat , Lukasz Spintzyk List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXIgMDUsIDIwMTggYXQgMTE6MDE6NDJBTSArMDEwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAwMy8wNS8yMDE4IDEwOjM5IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ ID4gT24gTW9uLCBNYXIgMDUsIDIwMTggYXQgMTA6MjI6MDlBTSArMDEwMCwgVGhvbWFzIEhlbGxz dHJvbSB3cm90ZToKPiA+ID4gT24gMDMvMDUvMjAxOCAwOTozNyBBTSwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiA+ID4gPiBPbiBXZWQsIEZlYiAyOCwgMjAxOCBhdCAwOToxMDo0NlBNICswMDAwLCBE ZWVwYWsgU2luZ2ggUmF3YXQgd3JvdGU6Cj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4gPiA+ID4gPiA+IEZyb206IGRyaS1kZXZlbCBbbWFpbHRvOmRyaS1kZXZlbC1ib3Vu Y2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmCj4gPiA+ID4gPiA+IE9mIERhbmll bCBWZXR0ZXIKPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDIxLCAyMDE3IDU6 MTEgQU0KPiA+ID4gPiA+ID4gVG86IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiA+IENjOiBhaXJsaWVkQGxpbnV4LmllOyBkYW5pZWwudmV0 dGVyQGludGVsLmNvbTsgZHJpLQo+ID4gPiA+ID4gPiBkZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmc7IEx1a2FzeiBTcGludHp5awo+ID4gPiA+ID4gPiA8bHVrYXN6LnNwaW50enlrQGRpc3BsYXls aW5rLmNvbT4KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzFdIGRybTogQWRkIGRp cnR5X3JlY3RzIGF0b21pYyBibG9iIHByb3BlcnR5IGZvcgo+ID4gPiA+ID4gPiBkcm1fcGxhbmUK PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE9uIFRodSwgRGVjIDIxLCAyMDE3IGF0IDAyOjQ2OjU1 UE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gPiA+ID4gPiBPbiBUaHUsIERl YyAyMSwgMjAxNyBhdCAxMjoxMDowOFBNICswMTAwLCBMdWthc3ogU3BpbnR6eWsgd3JvdGU6Cj4g PiA+ID4gPiA+ID4gPiBDaGFuZ2UtSWQ6IEk2M2RjZTAwNGY4ZDNjNWRjNmE3YzcxMDcwZjFmYWIw NzA3Mjg2ZWE1Cj4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogU3BpbnR6eWsg PGx1a2Fzei5zcGludHp5a0BkaXNwbGF5bGluay5jb20+Cj4gPiA+ID4gPiA+ID4gPiAtLS0KPiA+ ID4gPiA+ID4gPiA+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICB8IDEwICsr KysrKysrKysKPiA+ID4gPiA+ID4gPiA+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25m aWcuYyB8ICA2ICsrKysrKwo+ID4gPiA+ID4gPiA+ID4gICAgZHJpdmVycy9ncHUvZHJtL2RybV9w bGFuZS5jICAgICAgIHwgIDEgKwo+ID4gPiA+ID4gPiA+ID4gICAgaW5jbHVkZS9kcm0vZHJtX21v ZGVfY29uZmlnLmggICAgIHwgIDUgKysrKysKPiA+ID4gPiA+ID4gPiA+ICAgIGluY2x1ZGUvZHJt L2RybV9wbGFuZS5oICAgICAgICAgICB8ICAzICsrKwo+ID4gPiA+ID4gPiA+ID4gICAgNSBmaWxl cyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+ID4gPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4gPiA+ID4gPiA+ID4gaW5kZXggYjc2 ZDQ5MjE4Y2YxLi5jZDNiNGVkN2IwNGMgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+ID4gPiA+ID4gPiBAQCAtNzU5LDYgKzc1OSwxNCBAQCBz dGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdAo+ID4gPiA+ID4g PiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gPiA+ID4gICAgCQlzdGF0ZS0+cm90YXRpb24g PSB2YWw7Cj4gPiA+ID4gPiA+ID4gPiAgICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+ enBvc19wcm9wZXJ0eSkgewo+ID4gPiA+ID4gPiA+ID4gICAgCQlzdGF0ZS0+enBvcyA9IHZhbDsK PiA+ID4gPiA+ID4gPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPmRpcnR5X3Jl Y3RzX3Byb3BlcnR5KSB7Cj4gPiA+ID4gPiA+ID4gPiArCQlib29sIHJlcGxhY2VkID0gZmFsc2U7 Cj4gPiA+ID4gPiA+ID4gPiArCQlpbnQgcmV0ID0gZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5 X2Jsb2JfZnJvbV9pZChkZXYsCj4gPiA+ID4gPiA+ID4gPiArCQkJCQkmc3RhdGUtPmRpcnR5X2Js b2IsCj4gPiA+ID4gPiA+ID4gPiArCQkJCQl2YWwsCj4gPiA+ID4gPiA+ID4gPiArCQkJCQktMSwK PiA+ID4gPiA+ID4gPiA+ICsJCQkJCSZyZXBsYWNlZCk7Cj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1 cm4gcmV0Owo+ID4gPiA+ID4gPiA+ID4gICAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9t aWNfc2V0X3Byb3BlcnR5KSB7Cj4gPiA+ID4gPiA+ID4gPiAgICAJCXJldHVybiBwbGFuZS0+ZnVu Y3MtPmF0b21pY19zZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLAo+ID4gPiA+ID4gPiA+ID4gICAg CQkJCXByb3BlcnR5LCB2YWwpOwo+ID4gPiA+ID4gPiA+ID4gQEAgLTgxOCw2ICs4MjYsOCBAQCBk cm1fYXRvbWljX3BsYW5lX2dldF9wcm9wZXJ0eShzdHJ1Y3QKPiA+ID4gPiA+ID4gZHJtX3BsYW5l ICpwbGFuZSwKPiA+ID4gPiA+ID4gPiA+ICAgIAkJKnZhbCA9IHN0YXRlLT5yb3RhdGlvbjsKPiA+ ID4gPiA+ID4gPiA+ICAgIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT56cG9zX3Byb3Bl cnR5KSB7Cj4gPiA+ID4gPiA+ID4gPiAgICAJCSp2YWwgPSBzdGF0ZS0+enBvczsKPiA+ID4gPiA+ ID4gPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPmRpcnR5X3JlY3RzX3Byb3Bl cnR5KSB7Cj4gPiA+ID4gPiA+ID4gPiArCQkqdmFsID0gKHN0YXRlLT5kaXJ0eV9ibG9iKSA/IHN0 YXRlLT5kaXJ0eV9ibG9iLT5iYXNlLmlkIDogMDsKPiA+ID4gPiA+ID4gPiA+ICAgIAl9IGVsc2Ug aWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewo+ID4gPiA+ID4gPiA+ID4g ICAgCQlyZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KHBsYW5lLCBzdGF0 ZSwKPiA+ID4gPiA+ID4gcHJvcGVydHksIHZhbCk7Cj4gPiA+ID4gPiA+ID4gPiAgICAJfSBlbHNl IHsKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVf Y29uZmlnLmMKPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMK PiA+ID4gPiA+ID4gPiA+IGluZGV4IGJjNWM0NjMwNmIzZC4uZDVmMTAyMWM2ZWNlIDEwMDY0NAo+ ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4g PiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiA+ ID4gPiA+ID4gPiA+IEBAIC0yOTMsNiArMjkzLDEyIEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4g ZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiA+ID4gPiA+ID4gPiA+ICAgIAkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gPiAg ICAJZGV2LT5tb2RlX2NvbmZpZy5wcm9wX2NydGNfaWQgPSBwcm9wOwo+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRldiwgRFJNX01P REVfUFJPUF9CTE9CLAo+ID4gPiA+ID4gPiA+ID4gKwkJCSJESVJUWV9SRUNUUyIsIDApOwo+ID4g PiA+ID4gPiA+ID4gKwlpZiAoIXByb3ApCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gLUVOT01F TTsKPiA+ID4gPiA+ID4gPiA+ICsJZGV2LT5tb2RlX2NvbmZpZy5kaXJ0eV9yZWN0c19wcm9wZXJ0 eSA9IHByb3A7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAgICAJcHJvcCA9IGRy bV9wcm9wZXJ0eV9jcmVhdGVfYm9vbChkZXYsCj4gPiA+ID4gPiA+IERSTV9NT0RFX1BST1BfQVRP TUlDLAo+ID4gPiA+ID4gPiA+ID4gICAgCQkJIkFDVElWRSIpOwo+ID4gPiA+ID4gPiA+ID4gICAg CWlmICghcHJvcCkKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX3BsYW5lLmMKPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+ ID4gPiA+ID4gPiA+IGluZGV4IDM3YTkzY2RmZmI0YS4uYWRkMTEwZjAyNWU1IDEwMDY0NAo+ID4g PiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPiA+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+ID4gPiA+ID4gPiA+IEBA IC0yNTgsNiArMjU4LDcgQEAgaW50IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZQo+ID4gPiA+ID4gPiAqZGV2LCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4g PiA+ID4gPiA+ICAgIAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBj b25maWctCj4gPiA+ID4gPiA+ID4gcHJvcF9zcmNfeSwgMCk7Cj4gPiA+ID4gPiA+ID4gPiAgICAJ CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLQo+ID4gPiA+ ID4gPiA+IHByb3Bfc3JjX3csIDApOwo+ID4gPiA+ID4gPiA+ID4gICAgCQlkcm1fb2JqZWN0X2F0 dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0KPiA+ID4gPiA+ID4gPiBwcm9wX3Ny Y19oLCAwKTsKPiA+ID4gPiA+ID4gPiA+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZw bGFuZS0+YmFzZSwgY29uZmlnLQo+ID4gPiA+ID4gPiA+IGRpcnR5X3JlY3RzX3Byb3BlcnR5LCAw KTsKPiA+ID4gPiA+ID4gPiA+ICAgIAl9Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ ICAgIAlpZiAoY29uZmlnLT5hbGxvd19mYl9tb2RpZmllcnMpCj4gPiA+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiA+ID4gPiA+ID4gYi9pbmNs dWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+ID4gPiA+ID4gPiA+ID4gaW5kZXggZTVmM2I0MzAx NGUxLi42NWY2NGViMDRjMGMgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fbW9kZV9jb25maWcuaAo+ID4gPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X21vZGVfY29uZmlnLmgKPiA+ID4gPiA+ID4gPiA+IEBAIC01OTksNiArNTk5LDExIEBAIHN0cnVj dCBkcm1fbW9kZV9jb25maWcgewo+ID4gPiA+ID4gPiA+ID4gICAgCSAqICZkcm1fY3J0Yy4KPiA+ ID4gPiA+ID4gPiA+ICAgIAkgKi8KPiA+ID4gPiA+ID4gPiA+ICAgIAlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpwcm9wX2NydGNfaWQ7Cj4gPiA+ID4gPiA+ID4gPiArCS8qKgo+ID4gPiA+ID4gPiA+ID4g KwkgKiBAZGlydHlfcmVjdHNfcHJvcGVydHk6IE9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IHRvIG1h cmsgZGFtYWdlZAo+ID4gPiA+ID4gPiA+ID4gKwkgKiByZWdpb25zIG9uIHRoZSBwbGFuZSBmcmFt ZWJ1ZmZlci4KPiA+ID4gPiA+ID4gPiBXaGF0IGV4YWN0bHkgd291bGQgdGhlIGJsb2IgY29udGFp bj8KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGUgY29tbWVudCBzZWVtcyB0byBiZSBp bXBseWluZyB0aGVzZSBhcmUgaW4gZmIgY29vcmRpYW50ZXMgYXMKPiA+ID4gPiA+ID4gPiBvcHBv c2VkIHRvIHBsYW5lIGNydGMgY29vcmRpbmF0ZXM/IE5vdCBzdXJlIHdoaWNoIHdvdWxkIGJlIG1v cmUKPiA+ID4gPiA+ID4gPiBjb252ZW5pZW50LiBBdCBsZWFzdCBpZiB0aGV5J3JlIGZiIGNvb3Jk aW5hdGVzIHRoZW4geW91IHByb2JhYmx5Cj4gPiA+ID4gPiA+ID4gd2FudCBzb21lIGhlbHBlcnMg dG8gdHJhbnNsYXRlL3JvdGF0ZS9zY2FsZSB0aG9zZSByZWN0cyB0byB0aGUKPiA+ID4gPiA+ID4g PiBjcnRjIGNvb3JkaW5hdGVzLiBBY3R1YWwgdXNlIGRlcGVuZHMgb24gdGhlIGRyaXZlci9odyBJ IHN1cHBvc2UuCj4gPiA+ID4gPiA+IFllYWggSSB0aGluayB3ZSBhbHNvIHNob3VsZCBhZGQgYSBk ZWNvZGVkIHN0YXRlIHRvIHRoZSBkcm1fcGxhbmVfc3RhdGUsCj4gPiA+ID4gPiA+IHdoaWNoIGhh cyB0aGUgZnVsbCBzdHJ1Y3R1cmUgYW5kIGFsbCB0aGUgZGV0YWlscy4KPiA+ID4gPiA+IEhpIERh bmllbCwKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSSBhbSB3b3JraW5nIG9uIHRoaXMgZnVuY3Rpb25h bGl0eSB0byBpbXBsZW1lbnQgdGhlIGhlbHBlciBmdW5jdGlvbnMgdG8KPiA+ID4gPiA+IGNvbnZl cnQgZGlydHkgY2xpcHMgZnJvbSBmcmFtZWJ1ZmZlciBjb29yZGluYXRlcyB0byBwbGFuZXMgY29v cmRpbmF0ZXMKPiA+ID4gPiA+IGFuZCBmaW5hbGx5IHRvIGNydGMgY29vcmRpbmF0ZXMuCj4gPiA+ ID4gPiAKPiA+ID4gPiA+IElzIHRoZXJlIGEgcmVhc29uIHdlIHNob3VsZCBoYXZlIGRlY29kZWQg ZGlydHkgY2xpcHMgaW4gcGxhbmVfc3RhdGUgPwo+ID4gPiA+ID4gSSB3YXMgdGhpbmtpbmcgdG8g aGF2ZSB0aGUgY2xpcHMgcmVtYWluIGluIGJsb2IgcHJvcGVydHkgYW5kIGRlY29kZQo+ID4gPiA+ ID4gdGhlbSB3aGVuIG5lZWRlZCB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggYWNjZXB0 IHBsYW5lIHN0YXRlIGFuZAo+ID4gPiA+ID4gc2ltaWxhcmx5IGFub3RoZXIgaGVscGVyIGZvciBj cnRjIGNvb3JkaW5hdGVzLiBTbyBkcml2ZXIgY2FsbCB0aGVzZSBoZWxwZXIKPiA+ID4gPiA+IG9u bHkgaWYgdGhlcmUgaXMgYSBuZWVkIGZvciBkaXJ0eSBjbGlwcyBhbmQgb3RoZXJ3aXNlIGNhbiBp Z25vcmUuCj4gPiA+ID4gSW1tZWRpYXRlbHkgZGVjb2RpbmcgdGhlIHN0YXRlIGJsb2JzIGlzIHNp bXBseSBiZXN0IHByYWN0aWNlcywgdG8gYXZvaWQKPiA+ID4gPiBkdXBsaWNhdGVkIGNvZGUgYW5k IHN1YnRsZSBkaWZmZXJlbmNlcyBpbiBkcml2ZXIgYmVoYXZpb3VyLiBJZiB0aGVyZSdzIGEKPiA+ ID4gPiBnb29kIHJlYXNvbiBmb3IgY29tcGxldGVseSBkaWZmZXJlbnQgYmVoYXZpb3VyIChsaWtl IGNydGMgdnMgcGxhbmUKPiA+ID4gPiBjb29yZGluYXRlIGJhc2VkIGRhbWFnZSB0cmFja2luZyks IHRoZW4gZGVjb2RpbmcgdXNpbmcgYSBoZWxwZXIsCj4gPiA+ID4gb24tZGVtYW5kLCBzZWVtcyBz ZW5zaWJsZS4KPiA+ID4gPiAKPiA+ID4gPiBJJ2Qgc3RpbGwgdGhpbmsgd2Ugc2hvdWxkIHN0b3Jl IHRoZSByZXN1bHRpbmcgZGVyaXZlZCBzdGF0ZSBpbgo+ID4gPiA+IGRybV9jcnRjL3BsYW5lX3N0 YXRlLCBsaWtlIHdlIGRvIGZvciB0aGUgcGxhbmUgY2xpcHBpbmcgaGVscGVycyAoYXQgbGVhc3QK PiA+ID4gPiBhZnRlciBWaWxsZSdzIGxhdGVzdCBwYXRjaCBzZXJpZXMgaGFzIGxhbmRlZCkuCj4g PiA+ID4gLURhbmllbAo+ID4gPiBUaGUgaWRlYSBoZXJlIHdvdWxkIGJlIHRvIHVzZSBhIGhlbHBl ciBpdGVyYXRvciB0byBjb25zdHJ1Y3QgdGhlIG5ldwo+ID4gPiBjb29yZGluYXRlcyBuZWVkZWQ7 IHRoZSBpdGVyYXRvciBiZWluZyBpbml0aWFsaXplZCB3aXRoIHRoZSBibG9iLgo+ID4gPiAKPiA+ ID4gVGhlIHJlYXNvbiBub3QgdG8gc3RvcmUgdGhlIGRlY29kZWQgc3RhdGUgaXMgdW5uZWNlc3Nh cnkgZHVwbGljYXRpb24uIFdoaWxlCj4gPiA+IEkgZ3Vlc3MgbW9zdCBkcml2ZXJzIHdvdWxkIHVz ZSBjcnRjIGRhbWFnZSB0cmFja2luZywgcG90ZW50aWFsbHkgdGhlcmUgbWlnaHQKPiA+ID4gYmUg dGhyZWUgY29vcmRpbmF0ZSBzeXN0ZW1zIHVzZWQgYnkgZHJpdmVyczogUGxhbmUgZmIgY29vcmRp bmF0ZXMsIFBsYW5lCj4gPiA+IGNydGMgY29vcmRpbmF0ZXMgYW5kIGNydGMgY29vcmRpbmF0ZXMu IEFuZCB0eXBpY2FsbHkgdGhleSdkIGJlIHVzZWQgb25seQo+ID4gPiBvbmNlLi4uCj4gPiBXZWxs IEkgd2FzIHRoaW5raW5nIG9mIGEgaGVscGVyIHRvIGNvbXB1dGUgYSBzaW5nbGUsIG92ZXJhbGwg Y2xpcCByZWN0IGZvcgo+ID4gdGhlIGVudGlyZSBjcnRjLiBXaGljaCB3b3VsZCB0aGVuIGFsc28g bmVlZCB0byB0YWtlIGludG8gYWNjb3VudCB2YXJpb3VzCj4gPiBwbGFuZSBzdGF0ZSBjaGFuZ2Vz LCBhbmQgc3R1ZmYgbGlrZSBiYWNrZ3JvdW5kIGNvbG9yLiBGb3IgYSBzaW1wbGUKPiA+IGNvb3Jk aW5hdGUgc3lzdGVtIHRyYW5zZm9ybSBpdGVyYXRvcnMgc291bmQgbGlrZSBhIGdvb2QgaWRlYSwg YnV0IGhvbmVzdGx5Cj4gPiBJIGRvbid0IGV4cGVjdCB0aGF0IHRvIGJlIGEgY29tbW9uIHVzZS1j YXNlIGluIGRyaXZlcnMuCj4gCj4gU28gZmFyLCB0aGUgZHJpdmVycyB0aGF0IGhhdmUgc2hvd24g aW50ZXJlc3QgaW4gdGhpcyAoVk13YXJlIGFuZAo+IERpc3BsYXlMaW5rKSBhcHBlYXIgdG8gYmUg bW9zdGx5IGludGVyZXN0ZWQgaW4gZ2V0dGluZyB0aGVpciBoYW5kcyBvbgo+IGEgc2V0IG9mIGNs aXByZWN0cyAocmF0aGVyIHRoYW4gYSBib3VuZGluZyBib3gpIGluIGNydGMgY29vcmRpbmF0ZXMu IFdoaWxlCj4gd2UgcmVjb2duaXplIHRoZSB1c2VyLXNwYWNlIGFwcHMgd2lsbCB3YW50IHRvIGhh bmQgb3ZlciB0aGUgc2V0IG9mIGNsaXByZWN0cwo+IGluIGZiIGNvb3JkaW5hdGVzLiBXZSdyZSBh bHNvIHdvcmtpbmcgb24gYSBzb2x1dGlvbiB3aGVyZSB3ZSwgYXMgZ2VuZXJpY2FsbHkKPiBhcyBw b3NzaWJsZSB3YW50IHRvIGJlIGFibGUgdG8gYXR0YWNoIGEgcmVtb3Rpbmcgc2VydmVyIChsaWtl IGEgVk5DIHNlcnZlcikKPiB0byBLTVMgYW5kIHRoYXQgc29sdXRpb24gd291bGQgcHJvYmFibHkg d2FudCB0aGUgc2FtZSB0aGluZy4gRm9yIHRoZXNlCj4gdGhpbmdzIEkgdGhpbmsgYW4gaXRlcmF0 b3Igd291bGQgYmUgYSBnb29kIHNvbHV0aW9uLgo+IAo+IEhvd2V2ZXIgdGhhdCBkb2Vzbid0IHJl YWxseSBzdG9wIHVzIGZyb20sIGJhc2VkIG9uIG90aGVyIGRyaXZlcidzIHVzZSBjYXNlcywKPiBh ZGQgYWRkaXRpb25hbCBwbGFuZSAvIGNydGMgc3RhdGUgYW5kIHVzZSB0aGUgaXRlcmF0b3JzIHRv IHBvcHVsYXRlIHRoYXQuCj4gR2l2ZW4gdGhhdCwgZG8geW91IHRoaW5rIHRoYXQgaXRlcmF0b3Jz IGNvbXB1dGluZyB0cmFuc2Zvcm1lZCBjb29yZGluYXRlcwo+IHdvdWxkIGJlIGEgcmVhc29uYWJs ZSBmaXJzdCBzdGVwPyBUaGF0IHdvdWxkIGhlbHAgdXMgZW5hYmxlIHRoaXMgcGF0aCBpbgo+IHZt d2dmeCBhbmQgc3RhcnQgZmx1c2hpbmcgYW5kIHRlc3QgcGFnZS1mbGlwIHdpdGggZGFtYWdlIG9u IHJlYWwKPiBhcHBsaWNhdGlvbnMgYW5kIGFsc28gdG8gZmlndXJlIG91dCBhIHJlYXNvbmFibGUg YXRvbWljIGNvdW50ZXJwYXJ0IHRvIHRoZQo+IGRpcnR5IGlvY3RsLgoKT2gsIEknZCBoYXZlIGV4 cGVjdGVkIHRoYXQgeW91IGZvbGtzIHdhbnQgZmItY29vcmRpbmF0ZSBjbGlwcmVjdHMsIHNpbmNl CnlvdSB1cGxvYWQgdGhlIGJ1ZmZlcnMuIE90b2ggdGhlIGRpZmZlcmVuY2UgaXMgZmFpcmx5IGly cmVsZXZhbnQgaWYgeW91Cm9ubHkgaGF2ZSBvbmUgZnJhbWVidWZmZXIgdGhhdCBoYXMgdG8gYmUg ZnVsbC1zY3JlZW4gYW5kIHVuc2NhbGVkLCBzbyBub3QKZXhhY3RseSBzdXJlIHdoeSB5b3Ugd2Fu dCB0byB0cmFuc2Zvcm0gdG8gY3J0YyBjb29yZGluYXRlcyAoc2luY2UgZm9yIHlvdQp0aGV5J3Jl IHRoZSBzYW1lIEknZCBhc3N1bWUpLgoKQW55d2F5LCBpZiB5b3Ugc2VlIEkgcmVhbCB1c2UgZm9y IHRoZSBpdGVyYXRvciBzdHlsZSBJJ2xsIG9mIGNvdXJzZSBub3QKYmxvY2sgaXQgOi0pIEkgc2lt cGx5IGRpZG4ndCBzZWUgdGhlIHVzZS1jYXNlLCB3aGljaCBpcyB3aHkgSSBpZ25vcmVkIGl0LgpB bmQgb25jZSBhbm90aGVyIGRyaXZlciB0aGF0IHdhbnRzIGEgc2luZ2xlIGNydGMgYm91bmRpbmcg Ym94IGltcGxlbWVudHMKc3VwcG9ydCwgdGhhdCB0ZWFtIGNhbiB0eXBlIHRoZSBoZWxwZXIgaW5m cmFzdHJ1Y3R1cmUgKHRoYXQncyBub3Qgb24geW91CmZvciBzdXJlKS4KCkkgZ3Vlc3Mgd2UndmUg cmVhY2hlZCB0aGUgcG9pbnQgd2hlcmUgdGFsa2luZyBpbiB0aGUgYWJzdHJhY3Qgb25seSBsZWFk cwp0byBtaXN1bmRlcnN0YW5kaW5nLCBhbmQgYSBiaXQgb2YgKGRyaXZlcikgY29kZSB3aWxsIGJl IHRoZSBuZXh0IHN0ZXAuCi1EYW5pZWwKPiAKPiBUaGFua3MsCj4gVGhvbWFzCj4gCj4gPiBFaXRo ZXIgaXQncyBhYm91dAo+ID4gdXBsb2FkaW5nIHRoZSByaWdodCBkaXJ0eSBkYXRhIGluIGVhY2gg cGxhbmUsIG9yIGFib3V0IHVwbG9hZGluZyB0aGUgcmlnaHQKPiA+IGZpbmFsL2JsZW5kZWQgcGl4 ZWxzIHRvIHRoZSBzY3JlZW4gKGluIHdoaWNoIGNhc2UgYWxsIG90aGVyIHN0YXRlIGNoYW5nZXMK PiA+IHRoYXQgY2FuIGFmZmVjdCBjb2xvcnMgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9v KS4KPiA+IC1EYW5pZWwKPiA+IAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=