From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: Re: [PATCH 1/4] drm: add generic zpos property Date: Wed, 11 May 2016 14:05:49 +0200 Message-ID: References: <1462962308-13410-1-git-send-email-benjamin.gaignard@linaro.org> <7326036.oCkcemzpKu@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7326036.oCkcemzpKu@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, Bartlomiej Zolnierkiewicz , Seung-Woo Kim , "dri-devel@lists.freedesktop.org" , Andrzej Hajda , Tobias Jakobi , Fabien Dessenne , Vincent Abriou , Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org SGkgTGF1cmVudCwKCgoyMDE2LTA1LTExIDEzOjI0IEdNVCswMjowMCBMYXVyZW50IFBpbmNoYXJ0 IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Ogo+IEhpIEJlbmphbWluLAo+Cj4g VGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCj4KPiBJIHdvdWxkIGhhdmUgc3RhcnRlZCB3b3JraW5n IG9uIHRoaXMgbmV4dCB3ZWVrLCB0aGFua3MgZm9yIGJlYXRpbmcgbWUgdG8gaXQKPiA6LSkKPgo+ IE9uIFdlZG5lc2RheSAxMSBNYXkgMjAxNiAxMjoyNTowNSBCZW5qYW1pbiBHYWlnbmFyZCB3cm90 ZToKPj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMgcGxhbmUncyB6cG9zIHBy b3BlcnR5IHByb3BlcnR5IHdpdGgKPj4gd2VsbC1kZWZpbmVkIHNlbWFudGljczoKPj4gLSBhZGRl ZCB6cG9zIHByb3BlcnRpZXMgdG8gcGxhbmUgYW5kIHBsYW5lIHN0YXRlIHN0cnVjdHVyZXMKPj4g LSBhZGRlZCBoZWxwZXJzIGZvciBub3JtYWxpemluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2ZW4g c2V0IG9mIHBsYW5lcwo+PiAtIHdlbGwgZGVmaW5lZCBzZW1hbnRpY3M6IHBsYW5lcyBhcmUgc29y dGVkIGJ5IHpwb3MgdmFsdWVzIGFuZCB0aGVuIHBsYW5lCj4+ICAgaWQgdmFsdWUgaWYgenBvcyBl cXVhbHMKPj4KPj4gTm9ybWFsaXplZCB6cG9zIHZhbHVlcyBhcmUgY2FsY3VsYXRlZCBhdXRvbWF0 aWNhbGx5IHdoZW4gZ2VuZXJpYwo+PiBtdXR0YWJsZSB6cG9zIHByb3BlcnR5IGhhcyBiZWVuIGlu aXRpYWxpemVkLiBEcml2ZXJzIGNhbiBzaW1wbHkgdXNlCj4+IHBsYW5lX3N0YXRlLT5ub3JtYWxp emVkX3pwb3MgaW4gdGhlaXIgYXRvbWljX2NoZWNrIGFuZC9vciBwbGFuZV91cGRhdGUKPj4gY2Fs bGJhY2tzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY2FsbHMgdG8gRFJNIGNvcmUuCj4+Cj4+IFNp Z25lZC1vZmYtYnk6IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4K Pj4KPj4gQ29tcGFyZSB0byBNYXJlaydzIG9yaWdpbmFsIHBhdGNoIHpwb3MgcHJvcGVydHkgaXMg bm93IHNwZWNpZmljIHRvIGVhY2gKPj4gcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhlIGNvcmUuCj4+ IE5vcm1hbGl6ZSBmdW5jdGlvbiB0YWtlIGNhcmUgb2YgdGhlIHJhbmdlIG9mIHBlciBwbGFuZSBk ZWZpbmVkIHJhbmdlCj4+IGJlZm9yZSBzZXQgbm9ybWFsaXplZF96cG9zLgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4K Pj4KPj4gQ2M6IElua2kgRGFlIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KPj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgo+PiBDYzogSm9vbnlvdW5nIFNoaW0gPGp5MDkyMi5zaGltQHNh bXN1bmcuY29tPgo+PiBDYzogU2V1bmctV29vIEtpbSA8c3cwMzEyLmtpbUBzYW1zdW5nLmNvbT4K Pj4gQ2M6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4+IENjOiBLcnp5c3p0 b2YgS296bG93c2tpIDxrLmtvemxvd3NraUBzYW1zdW5nLmNvbT4KPj4gQ2M6IEJhcnRsb21pZWog Wm9sbmllcmtpZXdpY3ogPGIuem9sbmllcmtpZUBzYW1zdW5nLmNvbT4KPj4gQ2M6IFRvYmlhcyBK YWtvYmkgPHRqYWtvYmlAbWF0aC51bmktYmllbGVmZWxkLmRlPgo+PiBDYzogR3VzdGF2byBQYWRv dmFuIDxndXN0YXZvQHBhZG92YW4ub3JnPgo+PiBDYzogdmluY2VudC5hYnJpb3VAc3QuY29tCj4+ IENjOiBmYWJpZW4uZGVzc2VubmVAc3QuY29tCj4+IENjOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVy ZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4+Cj4+IC0tLQo+PiAgRG9jdW1lbnRhdGlv bi9Eb2NCb29rL2dwdS50bXBsICAgICAgfCAgMTAgKysKPj4gIGRyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZSAgICAgICAgICAgIHwgICAyICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyB8ICAgNiArCj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgICAgICAgICB8 IDI4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fY3J0Y19pbnRlcm5hbC5oIHwgICAzICsKPj4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmgg ICAgICAgICAgICAgIHwgIDI1ICsrKysKPj4gIDYgZmlsZXMgY2hhbmdlZCwgMzI5IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZHJtX2JsZW5kLmMKPj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9n cHUudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAo+PiBpbmRleCA5ZGQ0OGY3 Li4wZGY2YWJiIDEwMDY0NAo+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwK Pj4gKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4+IEBAIC0yMTUxLDYgKzIx NTEsMTYgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAg ICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlKS48L3RkPgo+PiAgICAgICA8L3Ry Pgo+PiAgICAgICA8dHI+Cj4+ICsgICAgIDx0ZCB2YWxpZ249InRvcCIgPiAienBvcyIgPC90ZD4K Pj4gKyAgICAgPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgo+PiArICAgICA8dGQgdmFsaWdu PSJ0b3AiID5NaW49IGRyaXZlciBkZXBlbmRlbnQsIE1heD0gZHJpdmVyIGRlcGVuZGVudDwvdGQ+ Cj4+ICsgICAgIDx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KPj4gKyAgICAgPHRkIHZhbGln bj0idG9wIiA+UGxhbmUncyAneicgcG9zaXRpb24gZHVyaW5nIGJsZW5kaW5nIG9wZXJhdGlvbiAo MCBmb3IKPj4gYmFja2dyb3VuZCwgaGlnaGVzdCBmb3IgZnJvbnRtb3N0KS4KPj4gKyAgICAgICAg ICAgICBJZiB0d28gcGxhbmVzIGFzc2lnbmVkIHRvIHNhbWUgQ1JUQyBoYXZlIGVxdWFsIHpwb3Mg dmFsdWVzLCB0aGUgcGxhbmUKPj4gd2l0aCBoaWdoZXIgcGxhbmUKPj4gKyAgICAgICAgICAgICBp ZCBpcyB0cmVhdGVkIGFzIGNsb3NlciB0byBmcm9udC4gQ2FuIGJlIElNTVVUQUJMRSBpZiBkcml2 ZXIgZG9lc24ndAo+PiBzdXBwb3J0IGNoYW5naW5nCj4+ICsgICAgICAgICAgICAgcGxhbmVzJyBv cmRlci4gRXhhY3QgdmFsdWUgcmFuZ2UgaXMgZHJpdmVyIGRlcGVuZGVudC48L3RkPgo+PiArICAg ICA8L3RyPgo+PiArICAgICA8dHI+Cj4+ICAgICAgIDx0ZCByb3dzcGFuPSIyMCIgdmFsaWduPSJ0 b3AiID5pOTE1PC90ZD4KPj4gICAgICAgPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+R2Vu ZXJpYzwvdGQ+Cj4+ICAgICAgIDx0ZCB2YWxpZ249InRvcCIgPiJCcm9hZGNhc3QgUkdCIjwvdGQ+ Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUKPj4gaW5kZXggMmJkM2U1YS4uZGY4ODI1MyAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ PiBAQCAtMiw3ICsyLDcgQEAKPj4gICMgTWFrZWZpbGUgZm9yIHRoZSBkcm0gZGV2aWNlIGRyaXZl ci4gIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZQo+PiAjIERpcmVjdCBSZW5k ZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgo+ Pgo+PiAtZHJtLXkgICAgICAgOj0gICAgICAgZHJtX2F1dGgubyBkcm1fYnVmcy5vIGRybV9jYWNo ZS5vIFwKPj4gK2RybS15ICAgICAgIDo9ICAgICAgIGRybV9hdXRoLm8gZHJtX2J1ZnMubyBkcm1f YmxlbmQubyBkcm1fY2FjaGUubyBcCj4+ICAgICAgICAgICAgICAgZHJtX2NvbnRleHQubyBkcm1f ZG1hLm8gXAo+PiAgICAgICAgICAgICAgIGRybV9mb3BzLm8gZHJtX2dlbS5vIGRybV9pb2N0bC5v IGRybV9pcnEubyBcCj4+ICAgICAgICAgICAgICAgZHJtX2xvY2subyBkcm1fbWVtb3J5Lm8gZHJt X2Rydi5vIGRybV92bS5vIFwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgaW5k ZXggOTk3ZmQyMS4uZjEwNjUyZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPj4gQEAgLTMyLDYgKzMyLDggQEAKPj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgo+Pgo+PiArI2luY2x1ZGUgImRybV9j cnRjX2ludGVybmFsLmgiCj4KPiBkcm1fYXRvbWljX2hlbHBlcl9ub3JtYWxpemVfenBvcygpIGlz IGRlY2xhcmVkIGluIDxkcm0vZHJtX2NydGMuaD4sIHdoeSBkbyB5b3UKPiBuZWVkIHRvIGluY2x1 ZGUgZHJtX2NydGNfaW50ZXJuYWwuaCA/Cgpkcm1fYXRvbWljX2hlbHBlcl9ub3JtYWxpemVfenBv cygpIGlzIGRlY2xhcmVkIGluIGRybV9jcnRjX2ludGVybmFsLmgKbm90IGludG8gPGRybS9kcm1f Y3J0Yy5oPgoKPgo+PiAgLyoqCj4+ICAgKiBET0M6IG92ZXJ2aWV3Cj4+ICAgKgo+PiBAQCAtNTg3 LDYgKzU4OSwxMCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPj4gICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7 Cj4+ICAgICAgIGludCBpLCByZXQgPSAwOwo+Pgo+PiArICAgICByZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9ub3JtYWxpemVfenBvcyhkZXYsIHN0YXRlKTsKPj4gKyAgICAgaWYgKHJldCkKPj4gKyAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICAgICAgIGZvcl9lYWNoX3BsYW5lX2luX3N0 YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPj4gICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5k LmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uNzAxNzcxNQo+PiAt LS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYwo+PiBAQCAt MCwwICsxLDI4NCBAQAo+Cj4gW3NuaXBdCj4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvc29ydC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4+ ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPgo+IE5pdHBpY2tpbmcsIGNvdWxkIHlvdSBw bGVhc2Uga2VlcCBoZWFkZXIgZmlsZXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkID8gSXQKPiBoZWxw cyBsb2NhdGluZyBhbmQgYXZvaWRpbmcgZHVwbGljYXRlcy4KPgoKc3VyZSwgSSB3aWxsIGZvciB2 MgoKPj4gKyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKPj4gKwo+PiArI2RlZmluZSBNQVgoYSwg YikgKCgoYSkgPiAoYikpID8gKGEpIDogKGIpKQo+Cj4gbGludXgva2VybmVsLmggaGFzIG1heCBh bmQgbWF4X3QsIGlzIHRoZXJlIHJlYWxseSBhIG5lZWQgZm9yIGEgbmV3IG1hY3JvID8KCm9rIEkg d2lsbCByZXBsYWNlIGJ5IG1heF90Cgo+Cj4+ICsvKioKPj4gKyAqIGRybV9wbGFuZV9hdG9taWNf c2V0X3pwb3NfcHJvcGVydHkgLSBzZXQgcGxhbmUgenBvcyBwcm9wZXJ0eQo+PiArICogQHBsYW5l OiBkcm0gcGxhbmUKPj4gKyAqIEBzdGF0ZTogZHJtIHBsYW5lIHN0YXRlCj4+ICsgKiBAcHJvcGVy dHk6IG11c3QgYmUgdGhlIHpwb3MgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcGxhbmUKPj4g KyAqIEB2YWw6IHpwb3MgdmFsdWUgdG8gYmUgc2V0Cj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4g KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KPj4gKyAqLwo+ PiAraW50IGRybV9wbGFuZV9hdG9taWNfc2V0X3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsKQo+PiArewo+PiArICAgICBzdHJ1Y3Qg ZHJtX21vZGVfb2JqZWN0ICpvYmogPSAmcGxhbmUtPmJhc2U7Cj4+ICsgICAgIGludCBpOwo+PiAr Cj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBvYmotPnByb3BlcnRpZXMtPmNvdW50OyBpKyspIHsK Pj4gKyAgICAgICAgICAgICBpZiAob2JqLT5wcm9wZXJ0aWVzLT5wcm9wZXJ0aWVzW2ldID09IHBy b3BlcnR5KSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+enBvcyA9IHZhbDsKPj4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+PiArICAgICAgICAgICAgIH0KPj4gKyAg ICAgfQo+PiArCj4+ICsgICAgIHJldHVybiAtRUlOVkFMOwo+PiArfQo+PiArRVhQT1JUX1NZTUJP TChkcm1fcGxhbmVfYXRvbWljX3NldF96cG9zX3Byb3BlcnR5KTsKPgo+IFdoeSBkbyB5b3UgbmVl ZCB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYWRkaW5nIHpwb3Mgc3VwcG9ydCB0bwo+IGRybV9h dG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KCkgPyBTYW1lIHF1ZXN0aW9uIGZvciB0aGUgZ2V0IGhh bmRsZXIuCj4KPj4gKy8qKgo+PiArICogZHJtX3BsYW5lX2F0b21pY19nZXRfenBvc19wcm9wZXJ0 eSAtIHNldCBwbGFuZSB6cG9zIHByb3BlcnR5Cj4+ICsgKiBAcGxhbmU6IGRybSBwbGFuZQo+PiAr ICogQHN0YXRlOiBkcm0gcGxhbmUgc3RhdGUKPj4gKyAqIEBwcm9wZXJ0eTogbXVzdCBiZSB0aGUg enBvcyBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIHRoZSBwbGFuZQo+PiArICogQHZhbDogenBvcyB2 YWx1ZSB0byBiZSByZXRyaWV2ZQo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiBaZXJvIG9u IHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4+ICsgKi8KPj4gK2ludCBkcm1f cGxhbmVfYXRvbWljX2dldF96cG9zX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqc3RhdGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp2YWwpCj4+ICt7Cj4+ICsgICAgIHN0cnVjdCBkcm1f bW9kZV9vYmplY3QgKm9iaiA9ICZwbGFuZS0+YmFzZTsKPj4gKyAgICAgaW50IGk7Cj4+ICsKPj4g KyAgICAgZm9yIChpID0gMDsgaSA8IG9iai0+cHJvcGVydGllcy0+Y291bnQ7IGkrKykgewo+PiAr ICAgICAgICAgICAgIGlmIChvYmotPnByb3BlcnRpZXMtPnByb3BlcnRpZXNbaV0gPT0gcHJvcGVy dHkpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICp2YWwgPSBzdGF0ZS0+enBvczsKPj4gKyAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+PiArICAgICAgICAgICAgIH0KPj4gKyAgICAg fQo+PiArCj4+ICsgICAgIHJldHVybiAtRUlOVkFMOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTChk cm1fcGxhbmVfYXRvbWljX2dldF96cG9zX3Byb3BlcnR5KTsKPj4gKwo+PiArLyoqCj4+ICsgKiBk cm1fcGxhbmVfY3JlYXRlX3pwb3NfcHJvcGVydHkgLSBjcmVhdGUgbXV0YWJsZSB6cG9zIHByb3Bl cnR5Cj4+ICsgKiBAcGxhbmU6IGRybSBwbGFuZQo+PiArICogQG1pbjogbWluaW1hbCBwb3NzaWJs ZSB2YWx1ZSBvZiB6cG9zIHByb3BlcnR5Cj4+ICsgKiBAbWF4OiBtYXhpbWFsIHBvc3NpYmxlIHZh bHVlIG9mIHpwb3MgcHJvcGVydHkKPj4gKyAqCj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxp emVzIGdlbmVyaWMgbXV0YWJsZSB6cG9zIHByb3BlcnR5IGFuZCBlbmFibGVzCj4+IHN1cHBvcnQK Pj4gKyAqIGZvciBpdCBpbiBkcm0gY29yZS4gRHJpdmVycyBjYW4gdGhlbiBhdHRhY2ggdGhpcyBw cm9wZXJ0eSB0byBwbGFuZXMgdG8KPj4gZW5hYmxlCj4+ICsgKiBzdXBwb3J0IGZvciBjb25maWd1 cmFibGUgcGxhbmVzIGFycmFuZ2VtZW50IGR1cmluZyBibGVuZGluZyBvcGVyYXRpb24uCj4+ICsg KiBPbmNlIG11dGFibGUgenBvcyBwcm9wZXJ0eSBoYXMgYmVlbiBlbmFibGVkLCB0aGUgRFJNIGNv cmUgd2lsbAo+PiBhdXRvbWF0aWNhbGx5Cj4+ICsgKiBjYWxjdWxhdGUgZHJtX3BsYW5lX3N0YXRl LT5ub3JtYWxpemVkX3pwb3MgdmFsdWVzLiBVc3VhbGx5IG1pbiBzaG91bGQgYmUKPj4gc2V0Cj4+ ICsgKiB0byAwIGFuZCBtYXggdG8gbWF4aW1hbCBudW1iZXIgb2YgcGxhbmVzIGZvciBnaXZlbiBj cnRjIC0gMS4KPj4gKyAqCj4+ICsgKiBJZiB6cG9zIG9mIHNvbWUgcGxhbmVzIGNhbm5vdCBiZSBj aGFuZ2VkIChsaWtlIGZpeGVkIGJhY2tncm91bmQgb3IKPj4gKyAqIGN1cnNvci90b3Btb3N0IHBs YW5lcyksIGRyaXZlciBzaG91bGQgYWRqdXN0IG1pbi9tYXggdmFsdWVzIGFuZCBhc3NpZ24KPj4g dGhvc2UKPj4gKyAqIHBsYW5lcyBpbW11dGFibGUgenBvcyBwcm9wZXJ0eSB3aXRoIGxvd2VyIG9y IGhpZ2hlciB2YWx1ZXMgKGZvciBtb3JlCj4+ICsgKiBpbmZvcm1hdGlvbiwgc2VlIGRybV9tb2Rl X2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eSgpIGZ1bmN0aW9uKS4gSW4KPj4gc3VjaAo+ PiArICogY2FzZSBkcml2ZXIgc2hvdWxkIGFsc28gYXNzaWduIHByb3BlciBpbml0aWFsIHpwb3Mg dmFsdWVzIGZvciBhbGwgcGxhbmVzCj4+IGluCj4+ICsgKiBpdHMgcGxhbmVfcmVzZXQoKSBjYWxs YmFjaywgc28gdGhlIHBsYW5lcyB3aWxsIGJlIGFsd2F5cyBzb3J0ZWQKPj4gcHJvcGVybHkuCj4+ ICsgKgo+PiArICogUmV0dXJuczoKPj4gKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJy bm8gb24gZmFpbHVyZS4KPj4gKyAqLwo+PiAraW50IGRybV9wbGFuZV9jcmVhdGVfenBvc19wcm9w ZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IG1heCkKPj4gK3sKPj4gKyAg ICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKPj4gKwo+PiArICAgICBwcm9wID0gZHJtX3By b3BlcnR5X2NyZWF0ZV9yYW5nZShwbGFuZS0+ZGV2LCAwLCAienBvcyIsIG1pbiwgbWF4KTsKPj4g KyAgICAgaWYgKCFwcm9wKQo+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiArCj4K PiBZb3Ugc2hvdWxkIGNhY2hlIHByb3AgKGluIGRybV9tb2RlX2NvbmZpZykgaW5zdGVhZCBvZiBy ZWNyZWF0aW5nIGl0IGZvciBlYWNoCj4gcGxhbmUsIGxpa2UgZG9uZSBmb3IgdGhlIG90aGVyIHBy b3BlcnRpZXMuIFNhbWUgaW4gdGhlIG5leHQgZnVuY3Rpb24uCj4KPj4gKyAgICAgZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCBtaW4pOwo+PiArICAgICByZXR1 cm4gMDsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZHJtX3BsYW5lX2NyZWF0ZV96cG9zX3Byb3Bl cnR5KTsKPj4gKwo+PiArLyoqCj4+ICsgKiBkcm1fcGxhbmVfY3JlYXRlX3pwb3NfaW1tdXRhYmxl X3Byb3BlcnR5IC0gY3JlYXRlIGltbXV0dGFibGUgenBvcwo+PiBwcm9wZXJ0eQo+PiArICogQHBs YW5lOiBkcm0gcGxhbmUKPj4gKyAqIEBtaW46IG1pbmltYWwgcG9zc2libGUgdmFsdWUgb2YgenBv cyBwcm9wZXJ0eQo+PiArICogQG1heDogbWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSBvZiB6cG9zIHBy b3BlcnR5Cj4+ICsgKgo+PiArICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBnZW5lcmljIGlt bXV0YWJsZSB6cG9zIHByb3BlcnR5IGFuZCBlbmFibGVzCj4+ICsgKiBzdXBwb3J0IGZvciBpdCBp biBkcm0gY29yZS4gVXNpbmcgdGhpcyBwcm9wZXJ0eSBkcml2ZXIgbGV0cyB1c2Vyc3BhY2UKPj4g KyAqIHRvIGdldCB0aGUgYXJyYW5nZW1lbnQgb2YgdGhlIHBsYW5lcyBmb3IgYmxlbmRpbmcgb3Bl cmF0aW9uIGFuZCBub3RpZmllcwo+PiArICogaXQgdGhhdCB0aGUgaGFyZHdhcmUgKG9yIGRyaXZl cikgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIG9mIHRoZQo+PiBwbGFuZXMnCj4+ICsgKiBvcmRl ci4KPj4gKyAqCj4+ICsgKiBSZXR1cm5zOgo+PiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2 ZSBlcnJubyBvbiBmYWlsdXJlLgo+PiArICovCj4+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV96cG9z X2ltbXV0YWJsZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4sIHVuc2ln bmVkIGludCBtYXgpCj4+ICt7Cj4+ICsgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4+ ICsKPj4gKyAgICAgcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UocGxhbmUtPmRldiwg RFJNX01PREVfUFJPUF9JTU1VVEFCTEUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ6cG9zIiwgbWluLCBtYXgpOwo+Cj4gQ2FuIHR3byBwcm9wZXJ0aWVzIGV4aXN0 IHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IGZsYWdzIChpbW11dGFibGUgYW5kCj4g bXV0YWJsZSkgPyBPciB3aXRoIGRpZmZlcmVudCBtaW4vbWF4IHZhbHVlcyA/IEkgZG9uJ3QgZXhw ZWN0IG1pbi9tYXggdG8gYmUKPiBkaWZmZXJlbnQgZm9yIGV2ZXJ5IHBsYW5lLCBzbyBtYXliZSBh IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgenBvcyBwcm9wZXJ0eQo+IG9uY2Ugd2l0aCBtaW4v bWF4IHZhbHVlcyBhbmQgYSBzZWNvbmQgb25lIHRoYXQgYXR0YWNoZXMgdGhlIHByb3BlcnR5IHRv IHBsYW5lcwo+IHdvdWxkIGJlIGEgYmV0dGVyIEFQSS4KPgoKQmUgYWJsZSB0byBoYXZlIGEgcGVy IHBsYW5lIHpwb3MgcHJvcGVydHkgd2FzIGEgVmlsbGUgcmVxdWVzdCBiZWNhdXNlCmFsbCB0aGUg cGxhbmVzIG1heSBub3QgaGF2ZSB0aGUgc2FtZSBtaW4vbWF4IHpwb3MuClRoZSBjb25zZXF1ZW5j ZXMgb2YgdGhpcyBkZXNpZ24gYXJlIHRoYXQgd2UgY2FuIGNhY2hlIHRoZSBwcm9wZXJ0eSBpbgpk cm1fbW9kZV9jb25maWcKYW5kIHdlIG5lZWQgdG8gaGF2ZSBoZWxwZXJzIGZ1bmN0aW9ucwpkcm1f cGxhbmVfYXRvbWljX3tzZXQsZ2V0fV96cG9zX3Byb3BlcnR5IHRvIGJlIGFibGUgZmluZAp0aGUg cHJvcGVydHkgYXR0YWNoZWQgdG8gdGhlIGRybV9wbGFuZS4KCj4+ICsgICAgIGlmICghcHJvcCkK Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArICAgICBkcm1fb2JqZWN0 X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIG1pbik7Cj4+ICsgICAgIHJldHVy biAwOwo+PiArfQo+PiArRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY3JlYXRlX3pwb3NfaW1tdXRh YmxlX3Byb3BlcnR5KTsKPj4gKwo+PiArc3RhdGljIGludCBkcm1fYXRvbWljX3N0YXRlX3pwb3Nf Y21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCj4+ICt7Cj4+ICsgICAgIGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNhID0gKihzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoqKWE7 Cj4+ICsgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNiID0gKihzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICoqKWI7Cj4+ICsgICAgIGludCB6cG9zX2EgPSAoc2EtPnpwb3MgPDwgMTYp ICsgc2EtPnBsYW5lLT5iYXNlLmlkOwo+PiArICAgICBpbnQgenBvc19iID0gKHNiLT56cG9zIDw8 IDE2KSArIHNiLT5wbGFuZS0+YmFzZS5pZDsKPj4gKwo+PiArICAgICByZXR1cm4genBvc19hIC0g enBvc19iOwo+Cj4gSW5zdGVhZCBvZiBwbGF5aW5nIHRyaWNrcyB3aXRoIHRoZSBpZHMgdGhhdCB3 aWxsIGNyZWF0ZSBhIGRlcGVuZGVuY3kgb24gdGhlCj4gcGxhbmUgaWQgdmFsdWUgcmFuZ2UsIGhv dyBhYm91dAo+Cj4gICAgICAgICBpZiAoc2EtPnpwb3MgIT0gc2ItPnpwb3MpCj4gICAgICAgICAg ICAgICAgIHJldHVybiBzYS0+enBvcyAtIHNiLT56cG9zOwo+ICAgICAgICAgZWxzZQo+ICAgICAg ICAgICAgICAgICByZXR1cm4gc2EtPnBsYW5lLT5iYXNlLmlkIC0gc2ItPnBsYW5lLT5iYXNlLmlk Owo+CgpJdCBpcyBob3cgTWFyZWsgaGF2ZSBjb2RlIGl0IGJ1dCB5b3Ugc29sdXRpb24gaXMgbW9y ZSByZWFkYWJsZS4KCj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogZHJtX2F0b21pY19oZWxwZXJf Y3J0Y19ub3JtYWxpemVfenBvcyAtIGNhbGN1bGF0ZSBub3JtYWxpemVkIHpwb3MgdmFsdWVzCj4+ ICsgKiBAY3J0YzogY3J0YyB3aXRoIHBsYW5lcywgd2hpY2ggaGF2ZSB0byBiZSBjb25zaWRlcmVk IGZvciBub3JtYWxpemF0aW9uCj4+ICsgKiBAY3J0Y19zdGF0ZTogbmV3IGF0b21pYyBzdGF0ZSB0 byBhcHBseQo+PiArICoKPj4gKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIG5ldyBzdGF0ZXMgb2Yg YWxsIHBsYW5lcyBhc3NpZ25lZCB0byBnaXZlbiBjcnRjIGFuZAo+PiArICogY2FsY3VsYXRlcyBu b3JtYWxpemVkIHpwb3MgdmFsdWUgZm9yIHRoZW0uIFBsYW5lcyBhcmUgY29tcGFyZWQgZmlyc3Qg YnkKPj4gdGhlaXIKPj4gKyAqIHpwb3MgdmFsdWVzLCB0aGVuIGJ5IHBsYW5lIGlkIChpZiB6cG9z IGVxdWFscykuIFBsYW5lIHdpdGggbG93ZXN0IHpwb3MKPj4gdmFsdWUKPj4gKyAqIGlzIGF0IHRo ZSBib3R0b20uIFRoZSBwbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIGlzIHRoZW4gZmlsbGVk IHdpdGgKPj4gdW5pcXVlCj4+ICsgKiB2YWx1ZXMgZnJvbSAwIHRvIG51bWJlciBvZiBhY3RpdmUg cGxhbmVzIGluIGNydGMgbWludXMgb25lLgo+PiArICoKPj4gKyAqIFJFVFVSTlMKPj4gKyAqIFpl cm8gZm9yIHN1Y2Nlc3Mgb3IgLWVycm5vCj4+ICsgKi8KPj4gK2ludCBkcm1fYXRvbWljX2hlbHBl cl9jcnRjX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0g Y3J0Y19zdGF0ZS0+c3RhdGU7Cj4+ICsgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Cj4+ICsgICAgIGludCB0b3RhbF9wbGFuZXMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV90 b3RhbF9wbGFuZTsKPj4gKyAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqKnN0YXRlczsKPj4g KyAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4+ICsgICAgIGludCBpLCB6cG9zLCBuID0g MDsKPj4gKyAgICAgaW50IHJldCA9IDA7Cj4+ICsKPj4gKyAgICAgRFJNX0RFQlVHX0FUT01JQygi W0NSVEM6JWQ6JXNdIGNhbGN1bGF0aW5nIG5vcm1hbGl6ZWQgenBvcyB2YWx1ZXNcbiIsCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4+ICsKPj4g KyAgICAgc3RhdGVzID0ga21hbGxvYyh0b3RhbF9wbGFuZXMgKiBzaXplb2YoKnN0YXRlcyksIEdG UF9LRVJORUwpOwo+PiArICAgICBpZiAoIXN0YXRlcykKPj4gKyAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPj4gKwo+PiArICAgICAvKgo+PiArICAgICAgKiBOb3JtYWxpemF0aW9uIHByb2Nl c3MgbWlnaHQgY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIHBsYW5lcyB3aGljaAo+PiArICAgICAgKiBu b3JtYWxpemVkX3pwb3MgaGFzIHRvIGJlIHJlY2FsY3VsYXRlZC4KPj4gKyAgICAgICovCj4+ICsg ICAgIGRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5l X21hc2spIHsKPj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0 ZShzdGF0ZSwgcGxhbmUpOwo+PiArICAgICAgICAgICAgIGlmIChJU19FUlIocGxhbmVfc3RhdGUp KSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsK Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPj4gKyAgICAgICAgICAgICB9Cj4+ ICsgICAgICAgICAgICAgc3RhdGVzW24rK10gPSBwbGFuZV9zdGF0ZTsKPj4gKyAgICAgICAgICAg ICBEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHByb2Nlc3NpbmcgenBvcyB2YWx1ZSAl ZFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lLT5iYXNlLmlkLCBw bGFuZS0+bmFtZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3N0YXRl LT56cG9zKTsKPj4gKyAgICAgfQo+PiArCj4+ICsgICAgIHNvcnQoc3RhdGVzLCBuLCBzaXplb2Yo KnN0YXRlcyksIGRybV9hdG9taWNfc3RhdGVfenBvc19jbXAsIE5VTEwpOwo+PiArCj4+ICsgICAg IGZvciAoaSA9IDAsIHpwb3MgPSAwOyBpIDwgbjsgaSsrLCB6cG9zKyspIHsKPj4gKyAgICAgICAg ICAgICBwbGFuZSA9IHN0YXRlc1tpXS0+cGxhbmU7Cj4+ICsKPj4gKyAgICAgICAgICAgICB6cG9z ID0gTUFYKHpwb3MsIHN0YXRlc1tpXS0+enBvcyk7Cj4+ICsKPj4gKyAgICAgICAgICAgICBzdGF0 ZXNbaV0tPm5vcm1hbGl6ZWRfenBvcyA9IHpwb3M7Cj4KPiBDYW4ndCB5b3UganVzdCB1c2UgaSBp bnN0ZWFkIG9mIE1BWCh6cG9zLCBzdGF0ZXNbaV0tPnpwb3MpID8KCk5vIGJlY2F1c2Ugc2luY2Ug ZWFjaCBwbGFuZSBjb3VsZCBoYXZlIGRpZmZlcmVudCBtaW4vbWF4IHlvdSBjb3VsZApoYXZlIGdh cHMgYmV0d2VlbiB0d28gcGxhbmUuCkZvciBleGFtcGxlIGlmIHBsYW5lWCByYW5nZSBpcyBbMCwy XSBhbmQgcGxhbmVZIHJhbmdlIGlzIFs0LDZdIHdlIG5lZWQKdG8gYmUgc3VyZSB0aGUgbWluIHZh bHVlIG9mIHBsYW5lWSBpcyA0Cgo+Cj4+ICsgICAgICAgICAgICAgRFJNX0RFQlVHX0FUT01JQygi W1BMQU5FOiVkOiVzXSBub3JtYWxpemVkIHpwb3MgdmFsdWUgJWRcbiIsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsIHpwb3MpOwo+ PiArICAgICB9Cj4+ICsgICAgIGNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCA9IHRydWU7Cj4+ICsK Pj4gK2ZhaWw6Cj4KPiBXZSByZWFjaCB0aGUgbGFiZWwgaW4gdGhlIG5vcm1hbCBjb2RlIHBhdGgg dG9vLCBJIHdvdWxkIHRodXMgY2FsbCBpdCBkb25lIG9yCj4gZXhpdCBpbnN0ZWFkIG9mIGZhaWwu CgpJIHdpbGwgY2hhbmdlIGl0IHRvIGRvbmUKCj4KPj4gKyAgICAga2ZyZWUoc3RhdGVzKTsKPj4g KyAgICAgcmV0dXJuIHJldDsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxw ZXJfY3J0Y19ub3JtYWxpemVfenBvcyk7Cj4+ICsKPj4gKy8qKgo+PiArICogZHJtX2F0b21pY19o ZWxwZXJfbm9ybWFsaXplX3pwb3MgLSBjYWxjdWxhdGUgbm9ybWFsaXplZCB6cG9zIHZhbHVlcyBm b3IKPj4gYWxsCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNydGNzCj4+ ICsgKiBAZGV2OiBEUk0gZGV2aWNlCj4+ICsgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZSBvZiBEUk0g ZGV2aWNlCj4+ICsgKgo+PiArICogVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIG5vcm1hbGl6ZWQg enBvcyB2YWx1ZSBmb3IgYWxsIG1vZGlmaWVkIHBsYW5lcwo+PiBpbgo+PiArICogdGhlIHByb3Zp ZGVkIGF0b21pYyBzdGF0ZSBvZiBEUk0gZGV2aWNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2Vl Cj4+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX25vcm1hbGl6ZV96cG9zKCkgZnVuY3Rpb24u Cj4+ICsgKgo+PiArICogUkVUVVJOUwo+PiArICogWmVybyBmb3Igc3VjY2VzcyBvciAtZXJybm8K Pj4gKyAqLwo+PiAraW50IGRybV9hdG9taWNfaGVscGVyX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiArewo+PiArICAgICBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Cj4+ICsgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPj4g KyAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4+ICsgICAgIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlOwo+PiArICAgICBpbnQgaSwgcmV0ID0gMDsKPj4gKwo+PiArICAg ICBmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7 Cj4+ICsgICAgICAgICAgICAgY3J0YyA9IHBsYW5lX3N0YXRlLT5jcnRjOwo+PiArICAgICAgICAg ICAgIGlmICghY3J0YykKPj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiArICAg ICAgICAgICAgIGlmIChwbGFuZS0+c3RhdGUtPnpwb3MgIT0gcGxhbmVfc3RhdGUtPnpwb3MpIHsK Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNydGNfc3RhdGUgPQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBj cnRjKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgIGNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCA9 IHRydWU7Cj4+ICsgICAgICAgICAgICAgfQo+PiArICAgICB9Cj4+ICsKPj4gKyAgICAgZm9yX2Vh Y2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+PiArICAgICAg ICAgICAgIGlmIChjcnRjX3N0YXRlLT5wbGFuZV9tYXNrICE9IGNydGMtPnN0YXRlLT5wbGFuZV9t YXNrIHx8Cj4+ICsgICAgICAgICAgICAgICAgIGNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCkgewo+ PiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3Jt YWxpemVfenBvcyhjcnRjLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnRjX3N0YXRlKTsKPj4gKyAgICAgICAgICAg ICAgICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4+ICsgICAgICAgICAgICAgfQo+PiArICAgICB9Cj4+ICsgICAgIHJldHVybiAwOwo+ PiArfQo+PiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9ub3JtYWxpemVfenBvcyk7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRlcm5hbC5oIGluZGV4IGE3OGMxMzguLjM3ZDkw NjggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRlcm5hbC5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRlcm5hbC5oCj4+IEBAIC00MiwzICs0 Miw2IEBAIGludCBkcm1fYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0 ICpvYmosCj4+ICBpbnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2KTsKPj4KPj4gKy8qIGRybV9ibGVuZC5jICovCj4+ICtpbnQgZHJtX2F0b21p Y19oZWxwZXJfbm9ybWFsaXplX3pwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJt L2RybV9jcnRjLmgKPj4gaW5kZXggZDE1NTljZC4uYTM0YmMyOSAxMDA2NDQKPj4gLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaAo+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4+IEBA IC0zMDUsNiArMzA1LDcgQEAgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3M7Cj4+ICAgKiBA bW9kZV9jaGFuZ2VkOiBjcnRjX3N0YXRlLT5tb2RlIG9yIGNydGNfc3RhdGUtPmVuYWJsZSBoYXMg YmVlbiBjaGFuZ2VkCj4+ICAgKiBAYWN0aXZlX2NoYW5nZWQ6IGNydGNfc3RhdGUtPmFjdGl2ZSBo YXMgYmVlbiB0b2dnbGVkLgo+PiAgICogQGNvbm5lY3RvcnNfY2hhbmdlZDogY29ubmVjdG9ycyB0 byB0aGlzIGNydGMgaGF2ZSBiZWVuIHVwZGF0ZWQKPj4gKyAqIEB6cG9zX2NoYW5nZWQ6IHpwb3Mg dmFsdWVzIG9mIHBsYW5lcyBvbiB0aGlzIGNydGMgaGF2ZSBiZWVuIHVwZGF0ZWQKPj4gICAqIEBj b2xvcl9tZ210X2NoYW5nZWQ6IGNvbG9yIG1hbmFnZW1lbnQgcHJvcGVydGllcyBoYXZlIGNoYW5n ZWQgKGRlZ2FtbWEKPj4gb3IgKiAgZ2FtbWEgTFVUIG9yIENTQyBtYXRyaXgpCj4+ICAgKiBAcGxh bmVfbWFzazogYml0bWFzayBvZiAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUpKSBvZiBhdHRh Y2hlZCBwbGFuZXMKPj4gQEAgLTM0MCw2ICszNDEsNyBAQCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg ewo+PiAgICAgICBib29sIG1vZGVfY2hhbmdlZCA6IDE7Cj4+ICAgICAgIGJvb2wgYWN0aXZlX2No YW5nZWQgOiAxOwo+PiAgICAgICBib29sIGNvbm5lY3RvcnNfY2hhbmdlZCA6IDE7Cj4+ICsgICAg IGJvb2wgenBvc19jaGFuZ2VkIDogMTsKPj4gICAgICAgYm9vbCBjb2xvcl9tZ210X2NoYW5nZWQg OiAxOwo+Pgo+PiAgICAgICAvKiBhdHRhY2hlZCBwbGFuZXMgYml0bWFzazoKPj4gQEAgLTEyNjMs NiArMTI2NSw5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPj4gICAqICAgcGxhbmUgKGluIDE2 LjE2KQo+PiAgICogQHNyY193OiB3aWR0aCBvZiB2aXNpYmxlIHBvcnRpb24gb2YgcGxhbmUgKGlu IDE2LjE2KQo+PiAgICogQHNyY19oOiBoZWlnaHQgb2YgdmlzaWJsZSBwb3J0aW9uIG9mIHBsYW5l IChpbiAxNi4xNikKPj4gKyAqIEB6cG9zOiBwcmlvcml0eSBvZiB0aGUgZ2l2ZW4gcGxhbmUgb24g Y3J0YyAob3B0aW9uYWwpCj4+ICsgKiBAbm9ybWFsaXplZF96cG9zOiBub3JtYWxpemVkIHZhbHVl IG9mIHpwb3M6IHVuaXF1ZSwgcmFuZ2UgZnJvbSAwIHRvIE4KPj4gKyAqICAgIGZvciBnaXZlbiBj cnRjCj4KPiBJZiBOIGlzIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBsYW5lcyB0aGF0IHdvdWxkIGJl IDAgdG8gTi0xLiBJZiBOIGlzIHRoZSBudW1iZXIKPiBvZiBhY3RpdmUgcGxhbmVzIG1pbnVzIG9u ZSB0aGVuIHRoaXMgaXMgY29ycmVjdCA6LSkKCkkgd2lsbCBmaXggdGhhdC4KCj4KPj4gICAqIEBz dGF0ZTogYmFja3BvaW50ZXIgdG8gZ2xvYmFsIGRybV9hdG9taWNfc3RhdGUKPj4gICAqLwo+PiAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSB7Cj4+IEBAIC0xMjgzLDYgKzEyODgsMTAgQEAgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSB7Cj4+ICAgICAgIC8qIFBsYW5lIHJvdGF0aW9uICovCj4+ICAgICAg IHVuc2lnbmVkIGludCByb3RhdGlvbjsKPj4KPj4gKyAgICAgLyogUGxhbmUgenBvcyAqLwo+PiAr ICAgICB1bnNpZ25lZCBpbnQgenBvczsKPj4gKyAgICAgdW5zaWduZWQgaW50IG5vcm1hbGl6ZWRf enBvczsKPj4gKwo+PiAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+ICB9 Owo+Pgo+PiBAQCAtMjU1NCw2ICsyNTYzLDIyIEBAIGV4dGVybiBzdHJ1Y3QgZHJtX3Byb3BlcnR5 Cj4+ICpkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2Ug ZXh0ZXJuIHVuc2lnbmVkIGludAo+PiBkcm1fcm90YXRpb25fc2ltcGxpZnkodW5zaWduZWQgaW50 IHJvdGF0aW9uLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHN1cHBvcnRlZF9yb3RhdGlvbnMpOwo+Pgo+PiArZXh0ZXJuIGludCBkcm1fcGxh bmVfYXRvbWljX3NldF96cG9zX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnN0YXRlLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCk7Cj4+ICsKPgo+IFlvdSBj YW4gZHJvcCB0aGUgZXh0ZXJuIGtleXdvcmRzLCB0aGV5J3JlIG5vdCBuZWVkZWQuIEkga25vdyB0 aGF0IGxvdHMgb2YKPiBmdW5jdGlvbnMgaW4gdGhpcyBoZWFkZXIgZmlsZSB1c2UgZXh0ZXJuLCBi dXQgbm90IGFsbCBvZiB0aGVtIGRvLCBhbmQgbW92aW5nCj4gZm9yd2FyZCBJIGRvbid0IHNlZSBh IGJpZyByZWFzb24gdG8ga2VlcCB1c2luZyB1bm5lZWRlZCBrZXl3b3Jkcy4KPgoKb2sgZG9uZQoK Pj4gK2V4dGVybiBpbnQgZHJtX3BsYW5lX2F0b21pY19nZXRfenBvc19wcm9wZXJ0eShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpw cm9wZXJ0eSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCAqdmFsKTsKPj4gKwo+PiArZXh0ZXJuIGludCBkcm1fcGxhbmVfY3JlYXRlX3pwb3Nf cHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgbWF4KTsK Pgo+IFNob3VsZG4ndCB0aGlzIGJlIG5hbWVkIGRybV9wbGFuZV9hdHRhY2hfenBvc19wcm9wZXJ0 eSgpIGluc3RlYWQgPyBUaGUgbWFpbgo+IHB1cnBvc2Ugb2YgdGhlIGZ1bmN0aW9uIGlzIHRvIGF0 dGFjaCB0aGUgcHJvcGVydHksIGV2ZW4gaWYgaXQgaGFzIHRvIGNyZWF0ZSBpdAo+IG9uIGZpcnN0 IGludm9jYXRpb24gYXMgYSBzaWRlIGVmZmVjdC4KPgo+PiArZXh0ZXJuIGludCBkcm1fcGxhbmVf Y3JlYXRlX3pwb3NfaW1tdXRhYmxlX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUKPj4gKnBsYW5l LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBtaW4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heCk7Cj4+ICsKPj4gIC8qIEhlbHBlcnMgKi8KPj4K Pj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lX2ZpbmQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPgo+IC0tCj4gUmVnYXJkcywKPgo+IExhdXJlbnQgUGluY2hhcnQK PgoKCgotLSAKQmVuamFtaW4gR2FpZ25hcmQKCkdyYXBoaWMgV29ya2luZyBHcm91cAoKTGluYXJv Lm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBTb0NzCgpGb2xsb3cgTGluYXJv OiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=