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 23:54:09 +0300 Message-ID: <20160512205409.GW4329@intel.com> References: <1463048902-9388-1-git-send-email-benjamin.gaignard@linaro.org> <4862983.CHN7hQXAbO@avalon> <20160512194605.GV4329@intel.com> <3485783.RE56tryr7C@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <3485783.RE56tryr7C@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 T24gVGh1LCBNYXkgMTIsIDIwMTYgYXQgMTE6MTU6NDJQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBPbiBUaHVyc2RheSAxMiBNYXkgMjAxNiAyMjo0Njow NSBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAxMDoy MDoxMlBNICswMzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gPiBPbiBUaHVyc2RheSAx MiBNYXkgMjAxNiAxNDo1MTo1NSBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+PiBPbiBUaHUs IE1heSAxMiwgMjAxNiBhdCAxMjoyODoxOVBNICswMjAwLCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90 ZToKPiA+ID4+PiBGcm9tOiBNYXJlayBTenlwcm93c2tpIDxtLnN6eXByb3dza2lAc2Ftc3VuZy5j b20+Cj4gPiA+Pj4gCj4gPiA+Pj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMg cGxhbmUncyB6cG9zIHByb3BlcnR5IHByb3BlcnR5Cj4gPiA+Pj4gd2l0aCB3ZWxsLWRlZmluZWQg c2VtYW50aWNzOgo+ID4gPj4+IC0gYWRkZWQgenBvcyBwcm9wZXJ0aWVzIHRvIHBsYW5lIGFuZCBw bGFuZSBzdGF0ZSBzdHJ1Y3R1cmVzCj4gPiA+Pj4gLSBhZGRlZCBoZWxwZXJzIGZvciBub3JtYWxp emluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2ZW4gc2V0IG9mIHBsYW5lcwo+ID4gPj4+IC0gd2Vs bCBkZWZpbmVkIHNlbWFudGljczogcGxhbmVzIGFyZSBzb3J0ZWQgYnkgenBvcyB2YWx1ZXMgYW5k IHRoZW4KPiA+ID4+PiAgIHBsYW5lIGlkIHZhbHVlIGlmIHpwb3MgZXF1YWxzCj4gPiA+Pj4gCj4g PiA+Pj4gTm9ybWFsaXplZCB6cG9zIHZhbHVlcyBhcmUgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5 IHdoZW4gZ2VuZXJpYwo+ID4gPj4+IG11dHRhYmxlIHpwb3MgcHJvcGVydHkgaGFzIGJlZW4gaW5p dGlhbGl6ZWQuIERyaXZlcnMgY2FuIHNpbXBseSB1c2UKPiA+ID4+PiBwbGFuZV9zdGF0ZS0+bm9y bWFsaXplZF96cG9zIGluIHRoZWlyIGF0b21pY19jaGVjayBhbmQvb3IgcGxhbmVfdXBkYXRlCj4g PiA+Pj4gY2FsbGJhY2tzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY2FsbHMgdG8gRFJNIGNvcmUu Cj4gPiA+Pj4gCj4gPiA+Pj4gU2lnbmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlw cm93c2tpQHNhbXN1bmcuY29tPgo+ID4gPj4+IAo+ID4gPj4+IENvbXBhcmUgdG8gTWFyZWsncyBv cmlnaW5hbCBwYXRjaCB6cG9zIHByb3BlcnR5IGlzIG5vdyBzcGVjaWZpYyB0bwo+ID4gPj4+IGVh Y2ggcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhlIGNvcmUuCj4gPiA+Pj4gTm9ybWFsaXplIGZ1bmN0 aW9uIHRha2UgY2FyZSBvZiB0aGUgcmFuZ2Ugb2YgcGVyIHBsYW5lIGRlZmluZWQgcmFuZ2UKPiA+ ID4+PiBiZWZvcmUgc2V0IG5vcm1hbGl6ZWRfenBvcy4KPiA+ID4+PiAKPiA+ID4+PiBTaWduZWQt b2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4K PiA+ID4+PiAKPiA+ID4+PiBDYzogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgo+ID4g Pj4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gPiA+Pj4gQ2M6IFZpbGxl IFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPj4+IENjOiBKb29u eW91bmcgU2hpbSA8ankwOTIyLnNoaW1Ac2Ftc3VuZy5jb20+Cj4gPiA+Pj4gQ2M6IFNldW5nLVdv byBLaW0gPHN3MDMxMi5raW1Ac2Ftc3VuZy5jb20+Cj4gPiA+Pj4gQ2M6IEFuZHJ6ZWogSGFqZGEg PGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4gPiA+Pj4gQ2M6IEtyenlzenRvZiBLb3psb3dza2kgPGsu a296bG93c2tpQHNhbXN1bmcuY29tPgo+ID4gPj4+IENjOiBCYXJ0bG9taWVqIFpvbG5pZXJraWV3 aWN6IDxiLnpvbG5pZXJraWVAc2Ftc3VuZy5jb20+Cj4gPiA+Pj4gQ2M6IFRvYmlhcyBKYWtvYmkg PHRqYWtvYmlAbWF0aC51bmktYmllbGVmZWxkLmRlPgo+ID4gPj4+IENjOiBHdXN0YXZvIFBhZG92 YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+Cj4gPiA+Pj4gQ2M6IHZpbmNlbnQuYWJyaW91QHN0LmNv bQo+ID4gPj4+IENjOiBmYWJpZW4uZGVzc2VubmVAc3QuY29tCj4gPiA+Pj4gQ2M6IExhdXJlbnQg UGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiA+ID4+PiAtLS0K PiA+ID4+PiAKPiA+ID4+PiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAgfCAg MTAgKysKPiA+ID4+PiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDIg Ky0KPiA+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAgIDQgKwo+ ID4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAgNiArCj4gPiA+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYyAgICAgICAgIHwgMjI5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiA+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVy bmFsLmggfCAgIDMgKwo+ID4gPj4+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAg ICB8ICAyOCArKysrKwo+ID4gPj4+ICA3IGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCj4gPiA+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZHJtX2JsZW5kLmMKPiA+ID4gCj4gPiA+IFtzbmlwXQo+ID4gPiAKPiA+ID4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9i bGVuZC5jCj4gPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4+PiBpbmRleCAwMDAwMDAw Li5lZWY1OWJiCj4gPiA+Pj4gLS0tIC9kZXYvbnVsbAo+ID4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYmxlbmQuYwo+ID4gPj4+IEBAIC0wLDAgKzEsMjI5IEBACj4gPiA+IAo+ID4gPiBb c25pcF0KPiA+ID4gCj4gPiA+Pj4gK3N0YXRpYyBpbnQgZHJtX2F0b21pY19zdGF0ZV96cG9zX2Nt cChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQo+ID4gPj4+ICt7Cj4gPiA+Pj4gKwljb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzYSA9ICooc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq KilhOwo+ID4gPj4+ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc2IgPSAqKHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKiopYjsKPiA+ID4+PiArCj4gPiA+Pj4gKwlpZiAoc2EtPnpwb3Mg IT0gc2ItPnpwb3MpCj4gPiA+Pj4gKwkJcmV0dXJuIHNhLT56cG9zIC0gc2ItPnpwb3M7Cj4gPiA+ Pj4gKwllbHNlCj4gPiA+Pj4gKwkJcmV0dXJuIHNhLT5wbGFuZS0+YmFzZS5pZCAtIHNiLT5wbGFu ZS0+YmFzZS5pZDsKPiA+ID4+PiArfQo+ID4gPj4gCj4gPiA+PiBTdGlsbCBub3QgcmVhbGx5IGNv bnZpbmNlZCB0aGlzIG5vcm1hbGl6YXRpb24gaXMgYSBnb29kIGlkZWEgd2hlbiB3ZQo+ID4gPj4g aGF2ZSBhdG9taWMuIEl0IG1hZGUgc2Vuc2UgYmVmb3JlIGF0b21pYyBzaW5jZSBvdGhlcndpc2Ug eW91IG1pZ2h0IG5vdAo+ID4gPj4gYmUgYWJsZSB0byBzd2FwIHRoZSB6cG9zIG9mIHR3byBwbGFu ZXMgd2l0aG91dCBzaHV0dGluZyBvbmUgb2YgdGhlbQo+ID4gPj4gZG93biwgYnV0IGl0IG1ha2Vz IGludGVycHJldGluZyB0aGUgenBvcyBwcm9wIHZhbHVlcyBtb3JlIGNvbmZ1c2luZy4gQW5kCj4g PiA+PiB3aXRoIGF0b21pYyB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIGl0IEFGQUlDUy4gT3IgZG8g d2UgaGF2ZSBhbiBhY3R1YWwKPiA+ID4+IHVzZSBjYXNlIGZvciB0aGlzIGJlaGF2aW91cj8KPiA+ ID4gCj4gPiA+IFNwZWFraW5nIHNlbGZpc2hseSBhYm91dCBteSB1c2UgY2FzZSAocmNhci1kdS1k cm0pLCBJIG5lZWQgdG8gc29ydCBwbGFuZXMKPiA+ID4gaW4gZGlzcGxheSBvcmRlciBmcm9tIDAg dG8gTi0xIGFzIHRoYXQncyBob3cgdGhlIGhhcmR3YXJlIGlzIHByb2dyYW1tZWQuCj4gPiA+IE5v cm1hbGl6YXRpb24gZ2l2ZXMgbWUgYW4gYXJyYXkgb2Ygc29ydGVkIHBsYW5lcywgd2hpY2ggaXMg ZXhhY3RseSB3aGF0IEkKPiA+ID4gbmVlZC4gSSBleHBlY3Qgb3RoZXIgZHJpdmVycyB0byBoYXZl IHNpbWlsYXIgcmVxdWlyZW1lbnRzLCBzbwo+ID4gPiBub3JtYWxpemF0aW9uIGluIHRoZSBjb3Jl IHdpbGwgYWxsb3cgY29kZSBzaGFyaW5nLgo+ID4gCj4gPiBJdCBqdXN0IGVsaW1pbmF0ZXMgZHVw bGljYXRlIHpwb3MgdmFsdWVzLiBJdCB3b24ndCByZS1zb3J0IHlvdXIgcGxhbmUKPiA+IHN0YXRl cyBtYWdpY2FsbHkgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBOb3IgZG9lcyBpdCBndWFyYW50ZWUg dGhhdAo+ID4gdGhlIHpwb3MgdmFsdWVzIGZvciB0aGUgYWN0dWFsbHkgdmlzaWJsZSBwbGFuZXMg YXJlIGV2ZW4gY29udGlndW91cy4KPiAKPiBUbyBtYWtlIG5vcm1hbGl6YXRpb24gdXNlZnVsIGlu IG15IGNhc2UgSSBuZWVkIGNvbnRpZ3VvdXMgdmFsdWVzIHN0YXJ0aW5nIGF0IAo+IDAuCgpDb250 aWdpb3VzIHZhbHVlcyBmb3IgYWxsIHRoZSBwbGFuZXMgb24gdGhlIHdob2xlIGRldmljZSBvciBv biBvbmUgY3J0Yz8KQW5kIHdoYXQgYWJvdXQgdGhlIHZpc2libGUgdnMuIG5vdCBwbGFuZSBpc3N1 ZT8gSXMgaXQgT0sgdG8gaGF2ZSBhbgppbnZpc2libGUgcGxhbmUgc29tZXdoZXJlIGluIHRoZSBt aWRkbGUgb2YgdGhlIHpwb3Mgc2VxdWVuY2U/Cgo+IAo+ID4gPiBOb3csIGlzIHlvdXIgY29uY2Vy biB0aGF0IGFsbG93aW5nIHR3byBwbGFuZXMgdG8gaGF2ZSB0aGUgc2FtZSB6cG9zIGlzbid0Cj4g PiA+IG5lZWRlZCB3aXRoIHRoZSBhdG9taWMgQVBJID8gSSBhZ3JlZSB3aXRoIHRoYXQsIGJ1dCBp dCB3b3VsZCBhbHNvIG1ha2UgaXQKPiA+ID4gaW1wb3NzaWJsZSB0byBzd2FwIHR3byBwbGFuZXMg dXNpbmcgdGhlIGxlZ2FjeSBBUEkgaW1wbGVtZW50ZWQgb24gdG9wIG9mCj4gPiA+IGF0b21pYyBk cml2ZXJzLiBJJ2xsIGxldCBvdGhlcnMgZGVjaWRlIHdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVk IGFzIGEKPiA+ID4gY29uY2Vybi4KPiAKPiBBbnkgb3BpbmlvbiBvbiB0aGlzID8KCk5vdCByZWFs bHkuIEkgYWxyZWFkeSBhc2tlZCBpZiB3ZSBoYWQgYSBnb29kIHVzZSBjYXNlIGZvciBpdC4gRHVu bm8gaWYKYW55b25lIGhhcyBvbmUuCgo+IAo+ID4gPiBXaGlsZSBhdCBpdCwgQmVuamFtaW4gdG9s ZCBtZSB0aGF0IHlvdSd2ZSByZXF1ZXN0ZWQgY29uZmlndXJhYmxlIG1pbi9tYXgKPiA+ID4gdmFs dWVzIHBlciBwbGFuZSwgd2hhdCBhcmUgeW91ciB1c2UgY2FzZXMgZm9yIHRoYXQgPyBPbiB0aGUg c2FtZSB0b3BpYywKPiA+ID4gcGxlYXNlIHNlZSBiZWxvdy4KPiA+ID4gCj4gPiA+Pj4gKwo+ID4g Pj4+ICsvKioKPiA+ID4+PiArICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBv cyAtIGNhbGN1bGF0ZSBub3JtYWxpemVkIHpwb3MKPiA+ID4+PiB2YWx1ZXMKPiA+ID4+PiArICog QGNydGM6IGNydGMgd2l0aCBwbGFuZXMsIHdoaWNoIGhhdmUgdG8gYmUgY29uc2lkZXJlZCBmb3IK PiA+ID4+PiBub3JtYWxpemF0aW9uCj4gPiA+Pj4gKyAqIEBjcnRjX3N0YXRlOiBuZXcgYXRvbWlj IHN0YXRlIHRvIGFwcGx5Cj4gPiA+Pj4gKyAqCj4gPiA+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gY2hl Y2tzIG5ldyBzdGF0ZXMgb2YgYWxsIHBsYW5lcyBhc3NpZ25lZCB0byBnaXZlbgo+ID4gPj4+IGNy dGMgYW5kCj4gPiA+Pj4gKyAqIGNhbGN1bGF0ZXMgbm9ybWFsaXplZCB6cG9zIHZhbHVlIGZvciB0 aGVtLiBQbGFuZXMgYXJlIGNvbXBhcmVkCj4gPiA+Pj4gZmlyc3QgYnkgdGhlaXIKPiA+ID4+PiAr ICogenBvcyB2YWx1ZXMsIHRoZW4gYnkgcGxhbmUgaWQgKGlmIHpwb3MgZXF1YWxzKS4gUGxhbmUg d2l0aCBsb3dlc3QKPiA+ID4+PiB6cG9zIHZhbHVlCj4gPiA+Pj4gKyAqIGlzIGF0IHRoZSBib3R0 b20uIFRoZSBwbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIGlzIHRoZW4gZmlsbGVkCj4gPiA+ Pj4gd2l0aCB1bmlxdWUKPiA+ID4+PiArICogdmFsdWVzIGZyb20gMCB0byBudW1iZXIgb2YgYWN0 aXZlIHBsYW5lcyBpbiBjcnRjIG1pbnVzIG9uZS4KPiA+ID4+PiArICoKPiA+ID4+PiArICogUkVU VVJOUwo+ID4gPj4+ICsgKiBaZXJvIGZvciBzdWNjZXNzIG9yIC1lcnJubwo+ID4gPj4+ICsgKi8K PiA+ID4+PiAraW50IGRybV9hdG9taWNfaGVscGVyX2NydGNfbm9ybWFsaXplX3pwb3Moc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ID4gPj4+ICsJCQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ID4gPj4+ICt7Cj4gPiA+Pj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUgPSBjcnRjX3N0YXRlLT5zdGF0ZTsKPiA+ID4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5kZXY7Cj4gPiA+Pj4gKwlpbnQgdG90YWxfcGxhbmVzID0gZGV2LT5tb2RlX2Nv bmZpZy5udW1fdG90YWxfcGxhbmU7Cj4gPiA+Pj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoq c3RhdGVzOwo+ID4gPj4+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiA+Pj4gKwlpbnQg aSwgenBvcywgbiA9IDA7Cj4gPiA+Pj4gKwlpbnQgcmV0ID0gMDsKPiA+ID4+PiArCj4gPiA+Pj4g KwlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gY2FsY3VsYXRpbmcgbm9ybWFsaXplZCB6 cG9zCj4gPiA+Pj4gdmFsdWVzXG4iLAo+ID4gPj4+ICsJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+ bmFtZSk7Cj4gPiA+Pj4gKwo+ID4gPj4+ICsJc3RhdGVzID0ga21hbGxvYyh0b3RhbF9wbGFuZXMg KiBzaXplb2YoKnN0YXRlcyksIEdGUF9LRVJORUwpOwo+ID4gPj4gCj4gPiA+PiBrbWFsbG9jX2Fy cmF5KC4uLiwgR0ZQX1RFTVBPUkFSWSk7Cj4gPiA+PiAKPiA+ID4+PiArCWlmICghc3RhdGVzKQo+ ID4gPj4+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPj4+ICsKPiA+ID4+PiArCS8qCj4gPiA+Pj4g KwkgKiBOb3JtYWxpemF0aW9uIHByb2Nlc3MgbWlnaHQgY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIHBs YW5lcyB3aGljaAo+ID4gPj4+ICsJICogbm9ybWFsaXplZF96cG9zIGhhcyB0byBiZSByZWNhbGN1 bGF0ZWQuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+PiArCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBs YW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5lX21hc2spIHsKPiA+ID4+PiArCQlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gPiA+Pj4gKwkJCWRybV9hdG9taWNfZ2V0X3Bs YW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7Cj4gPiA+Pj4gKwkJaWYgKElTX0VSUihwbGFuZV9zdGF0 ZSkpIHsKPiA+ID4+PiArCQkJcmV0ID0gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gPiA+Pj4gKwkJ CWdvdG8gZG9uZTsKPiA+ID4+PiArCQl9Cj4gPiA+PiAKPiA+ID4+IEhtbS4gU28gaWYgd2UgY2hh bmdlIHRoZSB6cG9zIGZvciBhbnkgcGxhbmUsIHdlIGdldCB0byByZS1jaGVjayBldmVyeQo+ID4g Pj4gcGxhbmUuIE5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgcGVyaGFwcywgc2luY2Ugb24g c29tZSBoYXJkd2FyZQo+ID4gPj4geW91IG1pZ2h0IG9ubHkgaGF2ZSBhIHN1YnNldCBvZiBwbGFu ZXMgdGhhdCBjYW4gZXZlbiBjaGFuZ2UgdGhlaXIKPiA+ID4+IHpwb3MuIE9UT0ggSSBzdXBwb3Nl IGl0IGRvZXMgbWFrZSBsaWZlIGEgYml0IHNpbXBsZXIgd2hlbiB5b3UgZG9uJ3QKPiA+ID4+IGhh dmUgdG8gdGhpbmsgd2hpY2ggcGxhbmVzIG1pZ2h0IGJlIGFmZmVjdGVkLCBzbyBJIGd1ZXNzIGl0 J3MgZmluZS4KPiA+ID4+Cj4gPiA+Pj4gKwkJc3RhdGVzW24rK10gPSBwbGFuZV9zdGF0ZTsKPiA+ ID4+PiArCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHByb2Nlc3NpbmcgenBvcyB2 YWx1ZSAlZFxuIiwKPiA+ID4+PiArCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4g PiA+Pj4gKwkJCQkgcGxhbmVfc3RhdGUtPnpwb3MpOwo+ID4gPj4+ICsJfQo+ID4gPj4+ICsKPiA+ ID4+PiArCXNvcnQoc3RhdGVzLCBuLCBzaXplb2YoKnN0YXRlcyksIGRybV9hdG9taWNfc3RhdGVf enBvc19jbXAsIE5VTEwpOwo+ID4gPj4+ICsKPiA+ID4+PiArCWZvciAoaSA9IDAsIHpwb3MgPSAw OyBpIDwgbjsgaSsrLCB6cG9zKyspIHsKPiA+ID4+PiArCQlwbGFuZSA9IHN0YXRlc1tpXS0+cGxh bmU7Cj4gPiA+Pj4gKwo+ID4gPj4+ICsJCXpwb3MgPSBtYXhfdChpbnQsIHpwb3MsIHN0YXRlc1tp XS0+enBvcyk7Cj4gPiA+IAo+ID4gPiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gc3Vw cG9ydCB0aGUgcGVyLXBsYW5lIG1pbi9tYXggenBvcyB2YWx1ZXMuCj4gPiA+IEFzIEJlbmphbWlu IGV4cGxhaW5lZCwgZm9yIGV4YW1wbGUgaWYgdGhlIHpwb3MgcmFuZ2UgaXMgWzAsMl0gZm9yIHBs YW5lIFgKPiA+ID4gYW5kIFs0LDZdIGZvciBwbGFuZSBZLCB3ZSBuZWVkIHRvIGJlIHN1cmUgdGhl IG1pbiB6cG9zIHZhbHVlIG9mIHBsYW5lIFkKPiA+ID4gaXMgNC4gVG8gdGhpcyBJIHJlcGxpZWQg dGhhdCdzIGV4YWN0bHkgd2hhdCBJJ2QgcmF0aGVyIGF2b2lkLiBJIHRoaW5rIHRoZQo+ID4gPiBj b3JlIGNvZGUgc2hvdWxkIHRha2UgY2FyZSBvZiBzb3J0aW5nIHBsYW5lcywgdGFraW5nIGRyaXZl ci1zcGVjaWZpYwo+ID4gPiBjb25zdHJhaW50cyBpbnRvIGFjY291bnQgd2hlbiBwb3NzaWJsZSAo dG9vIGV4b3RpYyBjb25zdHJhaW50cyBjYW4gYWx3YXlzCj4gPiA+IGJlIGltcGxlbWVudGVkIGRp cmVjdGx5IGJ5IGRyaXZlcnMpLCBhbmQgdGhlbiBsZWF2ZSB0byB0aGUgZHJpdmVycyB0aGUKPiA+ ID4gcmVzcG9uc2liaWxpdHkgb2YgdGFraW5nIHRoZSBzb3J0ZWQgcGxhbmVzIGFycmF5IGFuZCBj b21wdXRpbmcgd2hhdGV2ZXIKPiA+ID4gaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBp cyBuZWVkZWQuIFNvcnRpbmcgcGxhbmVzIGZyb20gMCB0byBOLTEKPiA+ID4gc2VlbXMgdG8gYmUg bGlrZSBhIGJldHRlciBBUEkgdGhhbiBoYXZpbmcgc2VtaS1yYW5kb20gdmFsdWVzIGZvciB0aGUK PiA+ID4gbm9ybWFsaXplZCB6cG9zLiBEbyB3ZSBoYXZlIHVzZSBjYXNlcyB0aGF0IHdvdWxkbid0 IGJlIGNvdmVyZWQgYnkgYQo+ID4gPiBzaW1wbGVyIGltcGxlbWVudGF0aW9uID8KPiA+IAo+ID4g VGhlIHBvaW50IG9mIGV4cG9zaW5nIHJhbmdlcyBpcyB0byBnaXZlIHVzZXJzcGFjZSBhdCBsZWFz dCBzb21lIGNoYW5jZQo+ID4gb2YgZ2V0dGluZyB0aGUgb3JkZXIgcmlnaHQuIE90aGVyd2lzZSBp dCdsbCBqdXN0IGhhdmUgdG8gcmFuZG9tbHkgdHJ5Cj4gPiBkaWZmZXJlbnQgb3JkZXJzIHVudGls IHNvbWV0aGluZyB3b3Jrcy4gTW9zdCBoYXJkd2FyZSBpcyBxdWl0ZQo+ID4gY29uc3RyYWluZWQg aW4gdGhpcy4KPiAKPiBDb3VsZCB5b3UgZWR1Y2F0ZSBtZSBieSBnaXZpbmcgYSBmZXcgcmVhbCB3 b3JsZCBleGFtcGxlcyA/CgpXZWxsLCBvbiBJbnRlbCB3ZSBoYXZlIHRoZSBzaW1wbGUgY2FzZSBv biBtYW55IHBsYXRmb3JtcyAoYm90dG9tLT50b3ApOgpwcmltYXJ5LT5zcHJpdGUtPmN1cnNvcgpN b3N0IFBDIGhhcmR3YXJlIGZyb20gc29tZSB5ZWFycyBhZ28gd2FzIHNpbWlsYXIuIE1vcmUgbW9k ZXJuIHN0dWZmIGZyb20KdGhlIG90aGVyIHZlbmRvcnMgbWlnaHQgYmUgbW9yZSBjYXBhYmxlLCBu b3Qgc3VyZS4KCldlIGFsc28gaGF2ZSBhbm90aGVyIGNsYXNzIG9mIEludGVsIGhhcmR3YXJlIHdo aWNoIGhhcyBwcmltYXJ5LCB0d28Kc3ByaXRlcywgYW5kIGEgY3Vyc29yLiBUaGUgY3Vyc29yIGlz IGFsd2F5cyBvbiB0b3AsIHRoZSBvdGhlciB0aHJlZQpwbGFuZXMgY2FuIGJlIGluIGFueSBvcmRl ciBhbW9uZ3N0IHRoZW1zZWx2ZXMuCgpUaGUgb2xkZXN0IEludGVsIGhhcmR3YXJlIHdlIHN1cHBv cnQgaXMgZXZlbiBtb3JlIGZsZXhpYmxlLiBUaG9zZSBoYWQKc29ydCBvZiAxIHByb3BlciBwcmlt YXJ5IHBsYW5lLCAyIHNwcml0ZSBwbGFuZXMsIDEgdmlkZW8gb3ZlcmxheSwgYW5kCjIgY3Vyc29y IHBsYW5lcy4gTm9ybWFsbHkgdGhleSdyZSBzcHJlYWQgYW1vbmcgdHdvIGNydGNzLCBidXQgdGhl eQpjYW4gYWxsIGJlIG1vdmVkIHRvIGEgc2luZ2xlIGNydGMgYW5kIHRoZW4gb3JkZXJpbmcgY29u c3RyYWludHMgYmV0d2Vlbgp0aGVtIGFyZSBmYWlybHkgY29udm9sdXRlZC4KCkFzIGZhciBhcyBJ IGNhbiByZW1lbWJlciBPTUFQIChhdCBsZWFzdCAzIGFuZCBtYXliZSA0KSBoYWQgYSB0b3RhbGx5 CmZpeGVkIG9yZGVyLiBHRlgtPlZJRDEtPlZJRDIuIFBlcmhhcHMgdGhleSBjaGFuZ2VkIHRoaXMg bGF0ZXIsIGR1bm5vLgoKT25lIGV4dHJhIGNvbXBsaWNhdGlvbiBpbiB0aGlzIGlzIGRlc3RpbmF0 aW9uIGNvbG9yIGtleWluZy4gV2hhdCB0aGF0CnRlbmRzIHRvIGRvIGVmZmVjdGl2ZWx5IGlzIHB1 c2ggc29tZSBzcHJpdGUvb3ZlcmxheSBwbGFuZSBiZWxvdyB0aGUKcHJpbWFyeSBhbmQgcHVuY2gg YSBob2xlIGludG8gdGhlIHByaW1hcnksIGJ1dCBvdGhlcndpc2UgdGhlCnNwcml0ZS9vdmVybGF5 IHNpdHMgYWJvdmUgdGhlIHByaW1hcnkuIE5vdCBzdXJlIGlmIHdlIHNob3VsZCBtYWtlIHRoaXMK c29ydCBvZiB0aGluZyBleHBsaWNpdCBpbiB0aGUgenBvcyBBUEkgb3IgaWYgd2Ugc2hvdWxkIGp1 c3QgZGVjbGFyZQpjb2xvciBrZXlpbmcgc29tZWhvdyBtYWdpYyBhbmQgcG90ZW50aWFsbHkgaWdu b3JlIHNvbWUgb2YgdGhlIHpwb3MKcHJvcGVydGllcy4KCj4gCj4gPiBTb21lIGRvbid0IHN1cHBv cnQgY2hhbmdpbmcgdGhlIHpwb3MgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIHNldAo+ ID4gbWluPT1tYXguCj4gCj4gQnV0IGFsbCB0aGlzIGRvZXNuJ3QgcmVxdWlyZSBhZGp1c3Rpbmcg dGhlIG5vcm1hbGl6ZWQgenBvcyB0byB0YWtlIHRoZSAKPiBvcmlnaW5hbCB6cG9zIGNvbnN0cmFp bnRzIGludG8gYWNjb3VudCwgZG9lcyBpdCA/IFdoeSBjYW4gbm9ybWFsaXplZF96cG9zIGJlIAo+ IGNvbnN0cmFpbmVkIHRvIHRoZSByYW5nZSAwIHRvIE4tMSwgZ2l2aW5nIGRyaXZlcnMgdGhlIHNv cnRlZCBwbGFuZXMgYW5kIHRoZW4gCj4gbGV0dGluZyB0aGVtIGNvbnZlcnQgdGhhdCB0byBkZXZp Y2Utc3BlY2lmaWMgdmFsdWVzID8KCk9oLCBJIGRpZG4ndCBldmVuIG5vdGljZSB0aGF0IGl0IHdh cyBtaXhpbmcgdXAgdGhlIG5vcm1hbGl6ZWQgYW5kCm5vbi1ub3JtYWxpemVkIGNvb3JkaW5hdGVz LiBZZXMsIHRoYXQgZG9lcyBzZWVtIHdyb25nIHRvIG1lLiBUaGUgZmFjdCB0aGF0CnRoZSBpb2N0 bCB3b3VsZCBoYXZlIHJlamVjdGVkIHRoZSBvdXQgb2YgcmFuZ2Ugbm9uLW5vcm1hbGl6ZWQgY29v cmRpbmF0ZXMKc2hvdWxkIGFscmVhZHkgZ3VhcmFudGVlIHRoYXQgdGhlIHJlc3VsdGluZyBub3Jt YWxpemVkIGNvb3JkaW5hdGVzIGVuZAp1cCBpbiByb3VnaGx5IHRoZSByaWdodCBvcmRlci4gVGhh dCBpcywgYXQgbGVhc3QgdGhlIG9yZGVyIGJldHdlZW4gZGlmZmVyZW50CiJ6cG9zIGdyb3VwcyIg b2YgcGxhbmVzIHdvdWxkIGJlIGFscmVhZHkgcmVzcGVjdGVkLiBFZy4gaW4gdGhlIEludGVsICIz CmZyZWVseSBvcmRlcmVkIHBsYW5lcyArIGN1cnNvciIgY2FzZSB0aGVyZSB3b3VsZCBiZSBubyB3 YXkgdG8gcHVzaCB0aGUKY3Vyc29yIGJlbG93IGFueSBvdGhlciBwbGFuZS4KCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=