From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/4] drm: add generic zpos property Date: Thu, 12 May 2016 22:46:05 +0300 Message-ID: <20160512194605.GV4329@intel.com> References: <1463048902-9388-1-git-send-email-benjamin.gaignard@linaro.org> <20160512115155.GJ4329@intel.com> <4862983.CHN7hQXAbO@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <4862983.CHN7hQXAbO@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Benjamin Gaignard , Bartlomiej Zolnierkiewicz , Seung-Woo Kim , dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Andrzej Hajda , Tobias Jakobi , fabien.dessenne@st.com, vincent.abriou@st.com, Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org T24gVGh1LCBNYXkgMTIsIDIwMTYgYXQgMTA6MjA6MTJQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBPbiBUaHVyc2RheSAxMiBNYXkgMjAxNiAxNDo1MTo1 NSBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAxMjoy ODoxOVBNICswMjAwLCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90ZToKPiA+ID4gRnJvbTogTWFyZWsg U3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgo+ID4gPiAKPiA+ID4gVGhpcyBw YXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMgcGxhbmUncyB6cG9zIHByb3BlcnR5IHByb3Bl cnR5IHdpdGgKPiA+ID4gd2VsbC1kZWZpbmVkIHNlbWFudGljczoKPiA+ID4gLSBhZGRlZCB6cG9z IHByb3BlcnRpZXMgdG8gcGxhbmUgYW5kIHBsYW5lIHN0YXRlIHN0cnVjdHVyZXMKPiA+ID4gLSBh ZGRlZCBoZWxwZXJzIGZvciBub3JtYWxpemluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2ZW4gc2V0 IG9mIHBsYW5lcwo+ID4gPiAtIHdlbGwgZGVmaW5lZCBzZW1hbnRpY3M6IHBsYW5lcyBhcmUgc29y dGVkIGJ5IHpwb3MgdmFsdWVzIGFuZCB0aGVuIHBsYW5lCj4gPiA+ICAgaWQgdmFsdWUgaWYgenBv cyBlcXVhbHMKPiA+ID4gCj4gPiA+IE5vcm1hbGl6ZWQgenBvcyB2YWx1ZXMgYXJlIGNhbGN1bGF0 ZWQgYXV0b21hdGljYWxseSB3aGVuIGdlbmVyaWMKPiA+ID4gbXV0dGFibGUgenBvcyBwcm9wZXJ0 eSBoYXMgYmVlbiBpbml0aWFsaXplZC4gRHJpdmVycyBjYW4gc2ltcGx5IHVzZQo+ID4gPiBwbGFu ZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIGluIHRoZWlyIGF0b21pY19jaGVjayBhbmQvb3IgcGxh bmVfdXBkYXRlCj4gPiA+IGNhbGxiYWNrcyB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNhbGxzIHRv IERSTSBjb3JlLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8 bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgo+ID4gPiAKPiA+ID4gQ29tcGFyZSB0byBNYXJlaydz IG9yaWdpbmFsIHBhdGNoIHpwb3MgcHJvcGVydHkgaXMgbm93IHNwZWNpZmljIHRvIGVhY2gKPiA+ ID4gcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhlIGNvcmUuCj4gPiA+IE5vcm1hbGl6ZSBmdW5jdGlv biB0YWtlIGNhcmUgb2YgdGhlIHJhbmdlIG9mIHBlciBwbGFuZSBkZWZpbmVkIHJhbmdlCj4gPiA+ IGJlZm9yZSBzZXQgbm9ybWFsaXplZF96cG9zLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTog QmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+Cj4gPiA+IAo+ ID4gPiBDYzogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgo+ID4gPiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBKb29ueW91bmcgU2hpbSA8ankwOTIy LnNoaW1Ac2Ftc3VuZy5jb20+Cj4gPiA+IENjOiBTZXVuZy1Xb28gS2ltIDxzdzAzMTIua2ltQHNh bXN1bmcuY29tPgo+ID4gPiBDYzogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4K PiA+ID4gQ2M6IEtyenlzenRvZiBLb3psb3dza2kgPGsua296bG93c2tpQHNhbXN1bmcuY29tPgo+ ID4gPiBDYzogQmFydGxvbWllaiBab2xuaWVya2lld2ljeiA8Yi56b2xuaWVya2llQHNhbXN1bmcu Y29tPgo+ID4gPiBDYzogVG9iaWFzIEpha29iaSA8dGpha29iaUBtYXRoLnVuaS1iaWVsZWZlbGQu ZGU+Cj4gPiA+IENjOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+Cj4gPiA+ IENjOiB2aW5jZW50LmFicmlvdUBzdC5jb20KPiA+ID4gQ2M6IGZhYmllbi5kZXNzZW5uZUBzdC5j b20KPiA+ID4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJv YXJkLmNvbT4KPiA+ID4gLS0tCj4gPiA+IAo+ID4gPiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dw dS50bXBsICAgICAgfCAgMTAgKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAyICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAg ICB8ICAgNCArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAg NiArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgICAgICAgICB8IDIyOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Ny dGNfaW50ZXJuYWwuaCB8ICAgMyArCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAg ICAgICAgICB8ICAyOCArKysrKwo+ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9kcm1fYmxlbmQuYwo+IAo+IFtzbmlwXQo+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9ibGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jCj4gPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLmVlZjU5YmIKPiA+ID4g LS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiA+ ID4gQEAgLTAsMCArMSwyMjkgQEAKPiAKPiBbc25pcF0KPiAKPiA+ID4gK3N0YXRpYyBpbnQgZHJt X2F0b21pY19zdGF0ZV96cG9zX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQo+ID4g PiArewo+ID4gPiArCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNhID0gKihzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICoqKWE7Cj4gPiA+ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc2IgPSAqKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKiopYjsKPiA+ID4gKwo+ID4gPiArCWlm IChzYS0+enBvcyAhPSBzYi0+enBvcykKPiA+ID4gKwkJcmV0dXJuIHNhLT56cG9zIC0gc2ItPnpw b3M7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQlyZXR1cm4gc2EtPnBsYW5lLT5iYXNlLmlkIC0gc2It PnBsYW5lLT5iYXNlLmlkOwo+ID4gPiArfQo+ID4gCj4gPiBTdGlsbCBub3QgcmVhbGx5IGNvbnZp bmNlZCB0aGlzIG5vcm1hbGl6YXRpb24gaXMgYSBnb29kIGlkZWEgd2hlbiB3ZQo+ID4gaGF2ZSBh dG9taWMuIEl0IG1hZGUgc2Vuc2UgYmVmb3JlIGF0b21pYyBzaW5jZSBvdGhlcndpc2UgeW91IG1p Z2h0IG5vdCBiZQo+ID4gYWJsZSB0byBzd2FwIHRoZSB6cG9zIG9mIHR3byBwbGFuZXMgd2l0aG91 dCBzaHV0dGluZyBvbmUgb2YgdGhlbSBkb3duLAo+ID4gYnV0IGl0IG1ha2VzIGludGVycHJldGlu ZyB0aGUgenBvcyBwcm9wIHZhbHVlcyBtb3JlIGNvbmZ1c2luZy4gQW5kIHdpdGgKPiA+IGF0b21p YyB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIGl0IEFGQUlDUy4gT3IgZG8gd2UgaGF2ZSBhbiBhY3R1 YWwgdXNlIGNhc2UKPiA+IGZvciB0aGlzIGJlaGF2aW91cj8KPiAKPiBTcGVha2luZyBzZWxmaXNo bHkgYWJvdXQgbXkgdXNlIGNhc2UgKHJjYXItZHUtZHJtKSwgSSBuZWVkIHRvIHNvcnQgcGxhbmVz IGluIAo+IGRpc3BsYXkgb3JkZXIgZnJvbSAwIHRvIE4tMSBhcyB0aGF0J3MgaG93IHRoZSBoYXJk d2FyZSBpcyBwcm9ncmFtbWVkLiAKPiBOb3JtYWxpemF0aW9uIGdpdmVzIG1lIGFuIGFycmF5IG9m IHNvcnRlZCBwbGFuZXMsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIAo+IG5lZWQuIEkgZXhwZWN0 IG90aGVyIGRyaXZlcnMgdG8gaGF2ZSBzaW1pbGFyIHJlcXVpcmVtZW50cywgc28gbm9ybWFsaXph dGlvbiBpbiAKPiB0aGUgY29yZSB3aWxsIGFsbG93IGNvZGUgc2hhcmluZy4KCkl0IGp1c3QgZWxp bWluYXRlcyBkdXBsaWNhdGUgenBvcyB2YWx1ZXMuIEl0IHdvbid0IHJlLXNvcnQgeW91ciBwbGFu ZQpzdGF0ZXMgbWFnaWNhbGx5IG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gTm9yIGRvZXMgaXQgZ3Vh cmFudGVlIHRoYXQKdGhlIHpwb3MgdmFsdWVzIGZvciB0aGUgYWN0dWFsbHkgdmlzaWJsZSBwbGFu ZXMgYXJlIGV2ZW4gY29udGlndW91cy4KCj4gCj4gTm93LCBpcyB5b3VyIGNvbmNlcm4gdGhhdCBh bGxvd2luZyB0d28gcGxhbmVzIHRvIGhhdmUgdGhlIHNhbWUgenBvcyBpc24ndCAKPiBuZWVkZWQg d2l0aCB0aGUgYXRvbWljIEFQSSA/IEkgYWdyZWUgd2l0aCB0aGF0LCBidXQgaXQgd291bGQgYWxz byBtYWtlIGl0IAo+IGltcG9zc2libGUgdG8gc3dhcCB0d28gcGxhbmVzIHVzaW5nIHRoZSBsZWdh Y3kgQVBJIGltcGxlbWVudGVkIG9uIHRvcCBvZiAKPiBhdG9taWMgZHJpdmVycy4gSSdsbCBsZXQg b3RoZXJzIGRlY2lkZSB3aGV0aGVyIHRoaXMgaXMgY29uc2lkZXJlZCBhcyBhIAo+IGNvbmNlcm4u Cj4gCj4gV2hpbGUgYXQgaXQsIEJlbmphbWluIHRvbGQgbWUgdGhhdCB5b3UndmUgcmVxdWVzdGVk IGNvbmZpZ3VyYWJsZSBtaW4vbWF4IAo+IHZhbHVlcyBwZXIgcGxhbmUsIHdoYXQgYXJlIHlvdXIg dXNlIGNhc2VzIGZvciB0aGF0ID8gT24gdGhlIHNhbWUgdG9waWMsIHBsZWFzZSAKPiBzZWUgYmVs b3cuCj4gCj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZHJtX2F0b21pY19oZWxwZXJfY3J0 Y19ub3JtYWxpemVfenBvcyAtIGNhbGN1bGF0ZSBub3JtYWxpemVkIHpwb3MKPiA+ID4gdmFsdWVz Cj4gPiA+ICsgKiBAY3J0YzogY3J0YyB3aXRoIHBsYW5lcywgd2hpY2ggaGF2ZSB0byBiZSBjb25z aWRlcmVkIGZvciBub3JtYWxpemF0aW9uCj4gPiA+ICsgKiBAY3J0Y19zdGF0ZTogbmV3IGF0b21p YyBzdGF0ZSB0byBhcHBseQo+ID4gPiArICoKPiA+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tz IG5ldyBzdGF0ZXMgb2YgYWxsIHBsYW5lcyBhc3NpZ25lZCB0byBnaXZlbiBjcnRjCj4gPiA+IGFu ZAo+ID4gPiArICogY2FsY3VsYXRlcyBub3JtYWxpemVkIHpwb3MgdmFsdWUgZm9yIHRoZW0uIFBs YW5lcyBhcmUgY29tcGFyZWQgZmlyc3QKPiA+ID4gYnkgdGhlaXIKPiA+ID4gKyAqIHpwb3MgdmFs dWVzLCB0aGVuIGJ5IHBsYW5lIGlkIChpZiB6cG9zIGVxdWFscykuIFBsYW5lIHdpdGggbG93ZXN0 IHpwb3MKPiA+ID4gdmFsdWUKPiA+ID4gKyAqIGlzIGF0IHRoZSBib3R0b20uIFRoZSBwbGFuZV9z dGF0ZS0+bm9ybWFsaXplZF96cG9zIGlzIHRoZW4gZmlsbGVkIHdpdGgKPiA+ID4gdW5pcXVlCj4g PiA+ICsgKiB2YWx1ZXMgZnJvbSAwIHRvIG51bWJlciBvZiBhY3RpdmUgcGxhbmVzIGluIGNydGMg bWludXMgb25lLgo+ID4gPiArICoKPiA+ID4gKyAqIFJFVFVSTlMKPiA+ID4gKyAqIFplcm8gZm9y IHN1Y2Nlc3Mgb3IgLWVycm5vCj4gPiA+ICsgKi8KPiA+ID4gK2ludCBkcm1fYXRvbWljX2hlbHBl cl9jcnRjX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gKwkJCQkJ ICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7Cj4gPiA+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+ID4gKwlpbnQgdG90YWxfcGxh bmVzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxfcGxhbmU7Cj4gPiA+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqKnN0YXRlczsKPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK PiA+ID4gKwlpbnQgaSwgenBvcywgbiA9IDA7Cj4gPiA+ICsJaW50IHJldCA9IDA7Cj4gPiA+ICsK PiA+ID4gKwlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gY2FsY3VsYXRpbmcgbm9ybWFs aXplZCB6cG9zIHZhbHVlc1xuIiwKPiA+ID4gKwkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1l KTsKPiA+ID4gKwo+ID4gPiArCXN0YXRlcyA9IGttYWxsb2ModG90YWxfcGxhbmVzICogc2l6ZW9m KCpzdGF0ZXMpLCBHRlBfS0VSTkVMKTsKPiA+IAo+ID4ga21hbGxvY19hcnJheSguLi4sIEdGUF9U RU1QT1JBUlkpOwo+ID4gCj4gPiA+ICsJaWYgKCFzdGF0ZXMpCj4gPiA+ICsJCXJldHVybiAtRU5P TUVNOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBOb3JtYWxpemF0aW9uIHByb2Nlc3Mg bWlnaHQgY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIHBsYW5lcyB3aGljaAo+ID4gPiArCSAqIG5vcm1h bGl6ZWRfenBvcyBoYXMgdG8gYmUgcmVjYWxjdWxhdGVkLgo+ID4gPiArCSAqLwo+ID4gPiArCWRy bV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5lX21hc2sp IHsKPiA+ID4gKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+ID4gPiAr CQkJZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+ID4gKwkJaWYg KElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKPiA+ID4gKwkJCXJldCA9IFBUUl9FUlIocGxhbmVfc3Rh dGUpOwo+ID4gPiArCQkJZ290byBkb25lOwo+ID4gPiArCQl9Cj4gPiAKPiA+IEhtbS4gU28gaWYg d2UgY2hhbmdlIHRoZSB6cG9zIGZvciBhbnkgcGxhbmUsIHdlIGdldCB0byByZS1jaGVjayBldmVy eQo+ID4gcGxhbmUuIE5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgcGVyaGFwcywgc2luY2Ug b24gc29tZSBoYXJkd2FyZQo+ID4geW91IG1pZ2h0IG9ubHkgaGF2ZSBhIHN1YnNldCBvZiBwbGFu ZXMgdGhhdCBjYW4gZXZlbiBjaGFuZ2UgdGhlaXIKPiA+IHpwb3MuIE9UT0ggSSBzdXBwb3NlIGl0 IGRvZXMgbWFrZSBsaWZlIGEgYml0IHNpbXBsZXIgd2hlbiB5b3UgZG9uJ3QKPiA+IGhhdmUgdG8g dGhpbmsgd2hpY2ggcGxhbmVzIG1pZ2h0IGJlIGFmZmVjdGVkLCBzbyBJIGd1ZXNzIGl0J3MgZmlu ZS4KPiA+IAo+ID4gPiArCQlzdGF0ZXNbbisrXSA9IHBsYW5lX3N0YXRlOwo+ID4gPiArCQlEUk1f REVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHByb2Nlc3NpbmcgenBvcyB2YWx1ZSAlZFxuIiwK PiA+ID4gKwkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+ID4gPiArCQkJCSBwbGFu ZV9zdGF0ZS0+enBvcyk7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJc29ydChzdGF0ZXMsIG4s IHNpemVvZigqc3RhdGVzKSwgZHJtX2F0b21pY19zdGF0ZV96cG9zX2NtcCwgTlVMTCk7Cj4gPiA+ ICsKPiA+ID4gKwlmb3IgKGkgPSAwLCB6cG9zID0gMDsgaSA8IG47IGkrKywgenBvcysrKSB7Cj4g PiA+ICsJCXBsYW5lID0gc3RhdGVzW2ldLT5wbGFuZTsKPiA+ID4gKwo+ID4gPiArCQl6cG9zID0g bWF4X3QoaW50LCB6cG9zLCBzdGF0ZXNbaV0tPnpwb3MpOwo+IAo+IFRoZSBwdXJwb3NlIG9mIHRo aXMgY29kZSBpcyB0byBzdXBwb3J0IHRoZSBwZXItcGxhbmUgbWluL21heCB6cG9zIHZhbHVlcy4g QXMgCj4gQmVuamFtaW4gZXhwbGFpbmVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgenBvcyByYW5nZSBp cyBbMCwyXSBmb3IgcGxhbmUgWCBhbmQgCj4gWzQsNl0gZm9yIHBsYW5lIFksIHdlIG5lZWQgdG8g YmUgc3VyZSB0aGUgbWluIHpwb3MgdmFsdWUgb2YgcGxhbmUgWSBpcyA0LiBUbyAKPiB0aGlzIEkg cmVwbGllZCB0aGF0J3MgZXhhY3RseSB3aGF0IEknZCByYXRoZXIgYXZvaWQuIEkgdGhpbmsgdGhl IGNvcmUgY29kZSAKPiBzaG91bGQgdGFrZSBjYXJlIG9mIHNvcnRpbmcgcGxhbmVzLCB0YWtpbmcg ZHJpdmVyLXNwZWNpZmljIGNvbnN0cmFpbnRzIGludG8gCj4gYWNjb3VudCB3aGVuIHBvc3NpYmxl ICh0b28gZXhvdGljIGNvbnN0cmFpbnRzIGNhbiBhbHdheXMgYmUgaW1wbGVtZW50ZWQgCj4gZGly ZWN0bHkgYnkgZHJpdmVycyksIGFuZCB0aGVuIGxlYXZlIHRvIHRoZSBkcml2ZXJzIHRoZSByZXNw b25zaWJpbGl0eSBvZiAKPiB0YWtpbmcgdGhlIHNvcnRlZCBwbGFuZXMgYXJyYXkgYW5kIGNvbXB1 dGluZyB3aGF0ZXZlciBoYXJkd2FyZS1zcGVjaWZpYyAKPiBjb25maWd1cmF0aW9uIGlzIG5lZWRl ZC4gU29ydGluZyBwbGFuZXMgZnJvbSAwIHRvIE4tMSBzZWVtcyB0byBiZSBsaWtlIGEgCj4gYmV0 dGVyIEFQSSB0aGFuIGhhdmluZyBzZW1pLXJhbmRvbSB2YWx1ZXMgZm9yIHRoZSBub3JtYWxpemVk IHpwb3MuIERvIHdlIGhhdmUgCj4gdXNlIGNhc2VzIHRoYXQgd291bGRuJ3QgYmUgY292ZXJlZCBi eSBhIHNpbXBsZXIgaW1wbGVtZW50YXRpb24gPwoKVGhlIHBvaW50IG9mIGV4cG9zaW5nIHJhbmdl cyBpcyB0byBnaXZlIHVzZXJzcGFjZSBhdCBsZWFzdCBzb21lIGNoYW5jZQpvZiBnZXR0aW5nIHRo ZSBvcmRlciByaWdodC4gT3RoZXJ3aXNlIGl0J2xsIGp1c3QgaGF2ZSB0byByYW5kb21seSB0cnkK ZGlmZmVyZW50IG9yZGVycyB1bnRpbCBzb21ldGhpbmcgd29ya3MuIE1vc3QgaGFyZHdhcmUgaXMg cXVpdGUKY29uc3RyYWluZWQgaW4gdGhpcy4gU29tZSBkb24ndCBzdXBwb3J0IGNoYW5naW5nIHRo ZSB6cG9zIGF0IGFsbCwgaW4Kd2hpY2ggY2FzZSB3ZSB3b3VsZCBzZXQgbWluPT1tYXguCgo+IAo+ ID4gPiArCQlzdGF0ZXNbaV0tPm5vcm1hbGl6ZWRfenBvcyA9IHpwb3M7Cj4gPiA+ICsJCURSTV9E RUJVR19BVE9NSUMoIltQTEFORTolZDolc10gbm9ybWFsaXplZCB6cG9zIHZhbHVlICVkXG4iLAo+ ID4gPiArCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsIHpwb3MpOwo+ID4gPiArCX0K PiA+ID4gKwljcnRjX3N0YXRlLT56cG9zX2NoYW5nZWQgPSB0cnVlOwo+ID4gPiArCj4gPiA+ICtk b25lOgo+ID4gPiArCWtmcmVlKHN0YXRlcyk7Cj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30K PiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBv cyk7Cj4gCj4gLS0gCj4gUmVnYXJkcywKPiAKPiBMYXVyZW50IFBpbmNoYXJ0CgotLSAKVmlsbGUg U3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK