From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/vkms: Compute CRC with Cursor Plane Date: Thu, 16 Aug 2018 09:39:32 +0200 Message-ID: <20180816073932.GA21634@phenom.ffwll.local> References: <44b546fedbcf65fd20f7a65d5443fbb50493cf32.1533526327.git.hamohammed.sa@gmail.com> <20180807163336.GA3008@phenom.ffwll.local> <20180808035317.GA1708@haneenDRM> <20180808082327.GH3008@phenom.ffwll.local> <20180813200411.GA17331@haneenDRM> <20180814082129.GA21634@phenom.ffwll.local> <20180814190347.GA16547@haneenDRM> <20180815230514.GA1023@haneenDRM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id C88706E43F for ; Thu, 16 Aug 2018 07:39:36 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id r4-v6so2129056edp.9 for ; Thu, 16 Aug 2018 00:39:36 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180815230514.GA1023@haneenDRM> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Haneen Mohammed Cc: Rodrigo Siqueira , Sean Paul , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBdWcgMTYsIDIwMTggYXQgMDI6MDU6MTRBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIFR1ZSwgQXVnIDE0LCAyMDE4IGF0IDA5OjUyOjMzUE0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIEF1ZyAxNCwgMjAxOCBhdCA5OjAzIFBNLCBIYW5l ZW4gTW9oYW1tZWQKPiA+IDxoYW1vaGFtbWVkLnNhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+IE9u IFR1ZSwgQXVnIDE0LCAyMDE4IGF0IDEwOjIxOjI5QU0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiA+PiBPbiBNb24sIEF1ZyAxMywgMjAxOCBhdCAxMTowNDoxMVBNICswMzAwLCBIYW5l ZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+PiA+IE9uIFdlZCwgQXVnIDA4LCAyMDE4IGF0IDEwOjIz OjI3QU0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+PiA+ID4gT24gV2VkLCBBdWcg MDgsIDIwMTggYXQgMDY6NTM6MTdBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVkIHdyb3RlOgo+ID4g Pj4gPiA+ID4gT24gVHVlLCBBdWcgMDcsIDIwMTggYXQgMDY6MzM6MzZQTSArMDIwMCwgRGFuaWVs IFZldHRlciB3cm90ZToKPiA+ID4+ID4gPiA+ID4gT24gTW9uLCBBdWcgMDYsIDIwMTggYXQgMDY6 NTg6MjlBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVkIHdyb3RlOgo+ID4gPj4gPiA+ID4gPiA+IFRo aXMgcGF0Y2ggY29tcHV0ZSBDUkMgZm9yIG91dHB1dCBmcmFtZSB3aXRoIGN1cnNvciBhbmQgcHJp bWFyeSBwbGFuZS4KPiA+ID4+ID4gPiA+ID4gPiBCbGVuZCBjdXJzb3Igd2l0aCBwcmltYXJ5IHBs YW5lIGFuZCBjb21wdXRlIENSQyBvbiB0aGUgcmVzdWx0ZWQgZnJhbWUuCj4gPiA+PiA+ID4gPiA+ ID4KPiA+ID4+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4gTW9oYW1tZWQgPGhhbW9o YW1tZWQuc2FAZ21haWwuY29tPgo+ID4gPj4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiBOaWNlIQo+ ID4gPj4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiBJIGFzc3VtZSB3aXRoIHRoaXMgeW91J3JlIHBh c3NpbmcgYWxsIHRoZSBjcmMgYmFzZWQgY3Vyc29yIHRlc3RzIGluIGlndD8KPiA+ID4+ID4gPiA+ ID4gSWYgc28sIHBsZWFzZSBtZW50aW9uIHRoaXMgaW4gdGhlIGNvbW1pdCBtZXNzYWdlLCBzbyB0 aGF0IHRoZXJlJ3MgYSByZWNvcmQKPiA+ID4+ID4gPiA+ID4gb2YgdGhlIHRlc3RpbmcgZG9uZSBv biB0aGlzLgo+ID4gPj4gPiA+ID4gPgo+ID4gPj4gPiA+ID4KPiA+ID4+ID4gPiA+IFN1cmUsIEkn bGwgdXBkYXRlIHRoZSBjb21taXQgbWVzc2FnZS4KPiA+ID4+ID4gPiA+IElzIHRoZXJlIGFueSBv dGhlciBjaGFuZ2UgSSBzaG91bGQgYWRkL2ZpeCB0byB0aGlzIHBhdGNoc2V0Pwo+ID4gPj4gPiA+ ID4KPiA+ID4+ID4gPiA+ID4gT25lIGZhaXJseSBodWdlIGdhcCB3ZSBpaXJjIGhhdmUgaW4gb3Vy IGN1cnNvciB0ZXN0aW5nIGlzIHRoYXQgdGhlcmUncyBub3QKPiA+ID4+ID4gPiA+ID4gbXVjaCAo aWYgYW55PykgYWxwaGEgYmxlbmRpbmcgY292ZXJhZ2UuIFdlIGtpbmRhIG5lZWQgdGhhdCB0byBt YWtlIHN1cmUKPiA+ID4+ID4gPiA+ID4gdGhpcyBhbGwgd29ya3MgY29ycmVjdGx5LiBUaGUgdXN1 YWwgdHJpY2sgaXMgdG8gb25seSBjaGVjayB0aGUgZXh0cmVtZQo+ID4gPj4gPiA+ID4gPiBhbHBo YSB2YWx1ZXMsIGkuZS4gZnVsbHkgb3BhcXVlIGFuZCBmdWxseSB0cmFuc3BhcmVudCwgc2luY2Ug aW50ZXJtZWRpYXRlCj4gPiA+PiA+ID4gPiA+IHZhbHVlcyBhcmUgYWZmZWN0ZWQgYnkgaHctc3Bl Y2lmaWMgcm91bmRpbmcgbW9kZXMuCj4gPiA+PiA+ID4gPiA+ID4gLS0tCj4gPiA+PiA+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMgICB8IDE0OSArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0KPiA+ID4+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuaCAgIHwgICA1ICstCj4gPiA+PiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyB8ICAxMCArLQo+ID4gPj4gPiA+ID4gPiA+ICAzIGZpbGVzIGNoYW5n ZWQsIDEzNyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPiA+ID4+ID4gPiA+ID4gPgo+ ID4gPj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Ny Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPj4gPiA+ID4gPiA+IGlu ZGV4IDM3ZDcxN2YzOGUzYy4uNDg1M2E3MzlhZTVhIDEwMDY0NAo+ID4gPj4gPiA+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiA+ID4+ID4gPiA+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gPiA+PiA+ID4gPiA+ID4gQEAgLTEs MzYgKzEsMTM3IEBACj4gPiA+PiA+ID4gPiA+ID4gIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCj4gPiA+PiA+ID4gPiA+ID4gICNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ID4gPj4g PiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KPiA+ID4+ID4gPiA+ID4gPiArI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gPiA+PiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ID4+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1f Z2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgo+ID4gPj4gPiA+ID4gPiA+Cj4gPiA+PiA+ID4gPiA+ ID4gLXN0YXRpYyB1aW50MzJfdCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21zX2NyY19kYXRhICpj cmNfZGF0YSkKPiA+ID4+ID4gPiA+ID4gPiArLyoqCj4gPiA+PiA+ID4gPiA+ID4gKyAqIGNvbXB1 dGVfY3JjIC0gQ29tcHV0ZSBDUkMgdmFsdWUgb24gb3V0cHV0IGZyYW1lCj4gPiA+PiA+ID4gPiA+ ID4gKyAqCj4gPiA+PiA+ID4gPiA+ID4gKyAqIEB2YWRkcl9vdXQ6IGFkZHJlc3MgdG8gZmluYWwg ZnJhbWVidWZmZXIKPiA+ID4+ID4gPiA+ID4gPiArICogQGNyY19vdXQ6IGZyYW1lYnVmZmVyJ3Mg bWV0YWRhdGEKPiA+ID4+ID4gPiA+ID4gPiArICoKPiA+ID4+ID4gPiA+ID4gPiArICogcmV0dXJu cyBDUkMgdmFsdWUgY29tcHV0ZWQgdXNpbmcgY3JjMzIgb24gdGhlIHZpc2libGUgcG9ydGlvbiBv Zgo+ID4gPj4gPiA+ID4gPiA+ICsgKiB0aGUgZmluYWwgZnJhbWVidWZmZXIgYXQgdmFkZHJfb3V0 Cj4gPiA+PiA+ID4gPiA+ID4gKyAqLwo+ID4gPj4gPiA+ID4gPiA+ICtzdGF0aWMgdWludDMyX3Qg Y29tcHV0ZV9jcmModm9pZCAqdmFkZHJfb3V0LCBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX291 dCkKPiA+ID4+ID4gPiA+ID4gPiAgewo+ID4gPj4gPiA+ID4gPiA+IC0gICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIGludCBp LCBzcmNfb2Zmc2V0Owo+ID4gPj4gPiA+ID4gPiA+ICsgICBpbnQgeF9zcmMgPSBjcmNfb3V0LT5z cmMueDEgPj4gMTY7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIGludCB5X3NyYyA9IGNyY19vdXQtPnNy Yy55MSA+PiAxNjsKPiA+ID4+ID4gPiA+ID4gPiArICAgaW50IGhfc3JjID0gZHJtX3JlY3RfaGVp Z2h0KCZjcmNfb3V0LT5zcmMpID4+IDE2Owo+ID4gPj4gPiA+ID4gPiA+ICsgICBpbnQgd19zcmMg PSBkcm1fcmVjdF93aWR0aCgmY3JjX291dC0+c3JjKSA+PiAxNjsKPiA+ID4+ID4gPiA+ID4gPiAr ICAgaW50IHNpemVfYnl0ZSA9IHdfc3JjICogY3JjX291dC0+Y3BwOwo+ID4gPj4gPiA+ID4gPiA+ ICsgICB1MzIgY3JjID0gMDsKPiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAg IGZvciAoaSA9IHlfc3JjOyBpIDwgeV9zcmMgKyBoX3NyYzsgaSsrKSB7Cj4gPiA+PiA+ID4gPiA+ ID4gKyAgICAgICAgICAgc3JjX29mZnNldCA9IGNyY19vdXQtPm9mZnNldAo+ID4gPj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICArIChpICogY3JjX291dC0+cGl0Y2gpCj4gPiA+ PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICsgKHhfc3JjICogY3JjX291dC0+ Y3BwKTsKPiA+ID4+ID4gPiA+ID4gPiArICAgICAgICAgICBjcmMgPSBjcmMzMl9sZShjcmMsIHZh ZGRyX291dCArIHNyY19vZmZzZXQsIHNpemVfYnl0ZSk7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIH0K PiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgIHJldHVybiBjcmM7Cj4gPiA+ PiA+ID4gPiA+ID4gK30KPiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+Cj4gPiA+PiA+IEhleSBE YW5pZWwsCj4gPiA+PiA+Cj4gPiA+PiA+IFdoZW4gSSBjaGFuZ2UgdGhlIGFib3ZlIGZ1bmN0aW9u ICJjb21wdXRlX2NyYyIgdG8gY29tcHV0ZSB0aGUgQ1JDIGZvcgo+ID4gPj4gPiBlYWNoIHBpeGVs IHNvIHdlIGNhbiBjbGVhciB0aGUgQWxwaGEgdmFsdWUgYmVmb3JlIGNvbXB1dGluZyB0aGUgQ1JD IGFzIGJlbGxvdywKPiA+ID4+ID4gdGhlIHRlc3QgIm5vbmJsb2NraW5nLWNyYy1waXBlLUEtZnJh bWUtc2VxdWVuY2UiIHNvbWV0aW1lcyBmYWlsZXMgYW5kCj4gPiA+PiA+IHNvbWV0aW1lcyBwYXNz ZXMuIFNob3VsZCBJIHN0aWxsIGNvbnRpbnVlIHdpdGggdGhlIGNoYW5nZSwgb3IgbGVhdmUgaXQK PiA+ID4+ID4gYXMgaXQgaXM/Cj4gPiA+Pgo+ID4gPj4gSG0sIGhvdyBkb2VzIGl0IGZhaWw/IENv dWxkIGJlIHRoYXQgdGhlIGNvZGUgYmVjb21lcyB0b28gc2xvdywgYW5kIHRoZW4KPiA+ID4+IHRo ZSBmcmFtZSBjb3VudGVycyBkb24ndCBpbmNyZW1lbnQgbmljZWx5IGFueW1vcmUuIE9yIHRoZXJl J3MgYSByYWNlCj4gPiA+PiBzb21ld2hlcmUgaW4gdGhlIENSQyBjb2RlIHRoYXQgZ2V0cyBleHBv c2VkLiBCdXQgdGhhdCdzIGp1c3QgbWUgZ3Vlc3NpbmcuCj4gPiA+PiAtRGFuaWVsCj4gPiA+Pgo+ IAo+IEhpIERhbmllbCwKPiAKPiBJIGZpZ3VyZWQgb3V0IHdoeSBub25ibG9ja2luZy1jcmMtcGlw ZS1BLWZyYW1lLXNlcXVlbmNlIGZhaWxzLgo+IHF1ZXVlX3dvcmsgc29tZXRpbWVzIHJldHVybiBm YWxzZSBzbyB2a21zX2NyY193b3JrX2hhbmRsZSBkb2Vzbid0IGdldCBzY2hlZHVsZWQKPiBmb3Ig YSBnaXZlbiBmcmFtZSBudW1iZXIuIEknbSBub3Qgc3VyZSB0aG91Z2ggaG93IHRoaXMgY2FuIGJl IGZpeGVkLgoKQWgsIEkgYXNzdW1lZCB0aGF0IGZvciBlYWNoIHZibGFuayB3ZSdkIHNlZSBhIGZs aXAsIGFuZCBoZW5jZSBhIG5ldwpjcnRjX3N0YXRlIHN0cnVjdHVyZS4gQnV0IGZvciB0aGUgYmFz aWMgY3JjIHRlc3RzIHdlIGp1c3QgY2FwdHVyZSBjcmNzIGZvcgp0aGUgc2FtZSBmcmFtZSBhbGwg dGhlIHRpbWUuCgpXaGF0IHdlIG5lZWQgaXMgYm90aCBhIG5fZnJhbWVfc3RhcnQgYW5kIG5fZnJh bWVfZW5kIGluc3RlYWQganVzdCBhIHNpbmdsZQpuX2ZyYW1lLiBUaGUgdmJsYW5rIGhhbmRsZXIg dGhlbiBuZWVkcyB0byBpbmNyZW1lbnQgbl9mcmFtZV9lbmQgd2hlbiBpdCdzCmNhbGxlZCAobGlr ZSBpdCBkb2VzIG5vdyksIGFuZCB0aGUgdmttc19jcmNfd29ya19oYW5kbGUgZnVuY3Rpb24gbmVl ZHMgdG8KaGF2ZSBhIGxvb3AgdG8gZmlsbCBpbiBjcmMgZm9yIGFsbCBmcmFtZSBudW1iZXJzIGZy b20gbl9mcmFtZV9zdGFydCB0bwpuX2ZyYW1lX2VuZCAoYW5kIHRoZW4gdXBkYXRlIG5fZnJhbWVf c3RhcnQgb2ZjKS4gQSBiaXQgb2YgdHJpY2tlcnkKcmVxdWlyZWQgdG8gZ2V0IGFsbCB0aGUgYm9v ay1rZWVwaW5nIGluIGFsbCBjYXNlcyBjb3JyZWN0LgoKVGhlIHJhY2UgY29uZGl0aW9uIGFyb3Vu ZCBhY2Nlc3NpbmcgY3J0Yy0+c3RhdGUgc3RpbGwgZXhpc3RzLCBzbyB0aGF0Cm5lZWRzIHRvIGJl IGZpeGVkIHRvby4KLURhbmllbAoKPiAKPiAtIEhhbmVlbgo+IAo+ID4gPgo+ID4gPiBPaCBzb3Jy eSBJIHNob3VsZCd2ZSBlbGFib3JhdGVkIG1vcmUgb24gaG93IGl0IGZhaWxzLiBZZWFoIEkgdGhp bmsgaXQKPiA+ID4gYmVjb21lcyB0b28gc2xvdyBhbmQgdGhhdCBjYW4gY2F1c2UgbWlzbWF0Y2gg dG8gZnJhbWUgY291bnRlcnM/Cj4gPiA+Cj4gPiA+IC0tLS0tCj4gPiA+IChrbXNfcGlwZV9jcmNf YmFzaWM6MTkwMikgQ1JJVElDQUw6IEZhaWxlZCBhc3NlcnRpb246IGNyY3Nbal0uZnJhbWUgKyAx ID09IGNyY3NbaiArIDFdLmZyYW1lCj4gPiA+IChrbXNfcGlwZV9jcmNfYmFzaWM6MTkwMikgQ1JJ VElDQUw6IExhc3QgZXJybm86IDksIEJhZCBmaWxlIGRlc2NyaXB0b3IKPiA+ID4gKGttc19waXBl X2NyY19iYXNpYzoxOTAyKSBDUklUSUNBTDogZXJyb3I6IDEwOTA5MjggIT0gMTA5MDkyOQo+ID4g PiAtLS0tLQo+ID4gCj4gPiBZZWFoIG1pc3NlcyB0aGUgZGVhZGxpbmUgaXQgc2VlbXMuCj4gPiAK PiA+ID4gTWF5YmUgaXQncyBub3QgdGhhdCBiYWQvc2xvdyBiZWNhdXNlIEkndmUgbm90aWNlZCB0 aGF0IHRoaXMgaGFwcGVuCj4gPiA+IG9jY2FzaW9uYWxseSB3aGVuIEkgZW5hYmxlIEZ0cmFjZS4K PiA+IAo+ID4gWWVhaCBmdHJhY2UgY2FuIGhhdmUgc29tZSBkZWNlbnQgb3ZlcmhlYWQuIEFuZCB3 ZSdyZSBhZGRpbmcgYSBwaWxlIG9mCj4gPiBmdW5jdGlvbiBjYWxscywgYmVjYXVzZSBjcmMzMl9s ZSBpc24ndCBpbmxpbmVkLiBEb2VzIGl0IHN0aWxsIGhhcHBlbgo+ID4gd2l0aG91dCBmdHJhY2U/ Cj4gPiAKPiA+IE9wdGltaXppbmcgdGhpcyB3aWxsIGJlIHNvbWUgcmVhbCB3b3JrIC0gd2UnZCBu ZWVkIGEgbG9jYWwgY2FjaGUgdG8KPiA+IGNvbXB1dGUgYW4gZW50aXJlIGJsb2NrIG9mIGJsZW5k ZWQgcGl4ZWxzIGludG8sIHRoZW4gYWRkIGFuIGVudGlyZQo+ID4gYmxvY2suIEJsb2NrIHNpemUg bmVlZHMgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGJlIGVmZmljaWVudCwgYnV0IG5vdCBzbwo+ID4g YmlnIHRoYXQgd2Ugc3RhcnQgdHJhc2hpbmcgdGhlIGNhY2hlIG9yIGhhdmUgdG8gYWxsb2NhdGUg bWVtb3J5IChzdGFjawo+ID4gc3BhY2UgaW4gdGhlIGtlcm5lbCBpcyB2ZXJ5IGxpbWl0ZWQpLiBX b3VsZCBiZSBnb29kIGlmIHdlIGNhbiBhdm9pZAo+ID4gYWxsIHRoaXMgd29yayBqdXN0IG5vdyAu Li4KPiA+IC1EYW5pZQo+ID4gCj4gPiA+Cj4gPiA+PiA+Cj4gPiA+PiA+IC0tLS0tLS0tLS0tLS0t LS0tIHZrbXNfY3JjLmMgLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4+ID4gICAgIGZvciAoaSA9IHlf c3JjOyBpIDwgeV9zcmMgKyBoX3NyYzsgKytpKSB7Cj4gPiA+PiA+ICAgICAgICAgICAgIGZvciAo aiA9IHhfc3JjOyBqIDwgeF9zcmMgKyB3X3NyYzsgKytqKSB7Cj4gPiA+PiA+ICAgICAgICAgICAg ICAgICAgICAgc3JjX29mZnNldCA9IGNyY19vdXQtPm9mZnNldAo+ID4gPj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArIChpICogY3JjX291dC0+cGl0Y2gpCj4gPiA+PiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGogKiBjcmNfb3V0LT5jcHApOwo+ID4g Pj4gPiAgICAgICAgICAgICAgICAgICAgIG1lbXNldCh2YWRkcl9vdXQgKyBzcmNfb2Zmc2V0ICsg MjQsIDAsICA4KTsKPiA+ID4+ID4gICAgICAgICAgICAgICAgICAgICBjcmMgPSBjcmMzMl9sZShj cmMsIHZhZGRyX291dCArIHNyY19vZmZzZXQsIHNpemVvZih1MzIpKTsKPiA+ID4+ID4gICAgICAg ICAgICAgfQo+ID4gPj4gPiAgICAgfQo+ID4gPj4gPiAtLS0tLS0tLS0tLS0tLS0tLSB2a21zX2Ny Yy5jIC0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+PiA+Cj4gPiA+PiA+IFRoYW5rIHlvdSwKPiA+ID4+ ID4gSGFuZWVuCj4gPiA+PiA+Cj4gPiA+PiA+ID4gPiA+ID4gKy8qKgo+ID4gPj4gPiA+ID4gPiA+ ICsgKiBibGVuZCAtIGJlbG5kIHZhbHVlIGF0IHZhZGRyX3NyYyB3aXRoIHZhbHVlIGF0IHZhZGRy X2RzdAo+ID4gPj4gPiA+ID4gPiA+ICsgKiBAdmFkZHJfZHN0OiBkZXN0aW5hdGlvbiBhZGRyZXNz Cj4gPiA+PiA+ID4gPiA+ID4gKyAqIEB2YWRkcl9zcmM6IHNvdXJjZSBhZGRyZXNzCj4gPiA+PiA+ ID4gPiA+ID4gKyAqIEBjcmNfZHN0OiBkZXN0aW5hdGlvbiBmcmFtZWJ1ZmZlcidzIG1ldGFkYXRh Cj4gPiA+PiA+ID4gPiA+ID4gKyAqIEBjcmNfc3JjOiBzb3VyY2UgZnJhbWVidWZmZXIncyBtZXRh ZGF0YQo+ID4gPj4gPiA+ID4gPiA+ICsgKgo+ID4gPj4gPiA+ID4gPiA+ICsgKiBCbGVuZCB2YWx1 ZSBhdCB2YWRkcl9zcmMgd2l0aCB2YWx1ZSBhdCB2YWRkcl9kc3QuCj4gPiA+PiA+ID4gPiA+ID4g KyAqIEN1cnJlbnRseSwgdGhpcyBmdW5jdGlvbiB3cml0ZSB2YWx1ZSBhdCB2YWRkcl9zcmMgb24g dmFsdWUKPiA+ID4+ID4gPiA+ID4gPiArICogYXQgdmFkZHJfZHN0IHVzaW5nIGJ1ZmZlcidzIG1l dGFkYXRhIHRvIGxvY2F0ZSB0aGUgbmV3IHZhbHVlcwo+ID4gPj4gPiA+ID4gPiA+ICsgKiBmcm9t IHZhZGRyX3NyYyBhbmQgdGhlaXIgZGlzdGVuYXRpb24gYXQgdmFkZHJfZHN0Lgo+ID4gPj4gPiA+ ID4gPiA+ICsgKgo+ID4gPj4gPiA+ID4gPiA+ICsgKiBUb2RvOiBVc2UgdGhlIGFscGhhIHZhbHVl IHRvIGJsZW5kIHZhZGRyX3NyYyB3aXRoIHZhZGRyX2RzdAo+ID4gPj4gPiA+ID4gPiA+ICsgKiAg aW5zdGVhZCBvZiBvdmVyd3JpdGluZyBpdC4KPiA+ID4+ID4gPiA+ID4KPiA+ID4+ID4gPiA+ID4g QW5vdGhlciB0b2RvOiBXZSBtdXN0IGNsZWFyIHRoZSBhbHBoYSBjaGFubmVsIGluIHRoZSByZXN1 bHQgYWZ0ZXIKPiA+ID4+ID4gPiA+ID4gYmxlbmRpbmcuIFRoaXMgYWxzbyBhcHBsaWVzIHRvIHRo ZSBwcmltYXJ5IHBsYW5lLCB3aGVyZSB0aGUgWFJHQiBmb3IgdGhlCj4gPiA+PiA+ID4gPiA+IHBp eGVsIGZvcm1hdCBtYW5kYXRlcyB0aGF0IHdlIGVudGlyZWx5IGlnbm9yZSB0aGUgYWxwaGEgY2hh bm5lbC4KPiA+ID4+ID4gPiA+ID4KPiA+ID4+ID4gPiA+ID4gVGhpcyBpcyBhbHNvIHNvbWV0aGlu ZyB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBhbiBpZ3QgdGVzdGNhc2UgZm9yLgo+ID4gPj4gPiA+ ID4gPgo+ID4gPj4gPiA+ID4gPiBTaW5jZSB0aGVyZSdzIGEgZmV3IG9wZW4gZW5kczogSG93IG1h bnkgd2Vla3MgYXJlIGxlZnQgaW4geW91ciBvdXRyZWFjaHkKPiA+ID4+ID4gPiA+ID4gaW50ZXJu c2hpcD8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBhbGwgdGhlIGlzc3VlcyBh cmUgY292ZXJlZAo+ID4gPj4gPiA+ID4gPiBpbiBhIHZrbXMgdG9kbyBmaWxlLiBXb3VsZCBiZSBn cmVhdCB0byBhZGQgdGhhdCBpbgo+ID4gPj4gPiA+ID4gPiBEb2N1bWVudGF0aW9uL2dwdS92a21z LnJzdCwgbGlrZSB3ZSBoYXZlIGZvciBvdGhlciBkcml2ZXJzLgo+ID4gPj4gPiA+ID4gPiAtRGFu aWVsCj4gPiA+PiA+ID4gPiA+Cj4gPiA+PiA+ID4gPgo+ID4gPj4gPiA+ID4gSSd2ZSBvbmUgbW9y ZSB3ZWVrISBJIGNhbiB1c2UgdGhpcyB3ZWVrIHRvIHByZXBhcmUgdGhlIHRvZG8gZmlsZSBhbmQK PiA+ID4+ID4gPiA+IGZpbmFsaXplIHRoaXMgcGF0Y2g/Cj4gPiA+PiA+ID4KPiA+ID4+ID4gPiBZ ZWFoIHNvdW5kcyBsaWtlIHRoZSBwZXJmZWN0IHdyYXAtdXAgd29yay4gU2luY2UgdGhpcyB3b250 IGJlIGVub3VnaCB0bwo+ID4gPj4gPiA+IGZpbmlzaCB0aGUgY3Vyc29yIHdvcmsgaXQgd291bGQg YmUgZ29vZCB0byBoaWRlIHRoZSBjdXJzb3Igc2V0dXAgYmVoaW5kIGEKPiA+ID4+ID4gPiBtb2R1 bGUgb3B0aW9uLCBwZXJoYXBzICJlbmFibGVfY3Vyc29yIiBvciBzby4gVGhhdCB3YXkgd2Ugd29u dCBoYXZlCj4gPiA+PiA+ID4gbm90LXRvdGFsbHktY29ycmVjdCBmZWF0dXJlcyBlbmFibGVkLiBB bmQgZW5hYmxpbmcvZGlzYWJsaW5nIGN1cnNvcgo+ID4gPj4gPiA+IHN1cHBvcnQgY291bGQgYmUg dXNlZnVsIGZvciB0ZXN0aW5nLgo+ID4gPj4gPiA+IC1EYW5pZWwKPiA+ID4+ID4gPgo+ID4gPj4g PiA+ID4KPiA+ID4+ID4gPiA+IFRoYW5rIHlvdSwKPiA+ID4+ID4gPiA+IEhhbmVlbgo+ID4gPj4g PiA+ID4KPiA+ID4+ID4gPiA+ID4gPiArICovCj4gPiA+PiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lk IGJsZW5kKHZvaWQgKnZhZGRyX2RzdCwgdm9pZCAqdmFkZHJfc3JjLAo+ID4gPj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kc3QsCj4gPiA+PiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX3NyYykKPiA+ID4+ ID4gPiA+ID4gPiArewo+ID4gPj4gPiA+ID4gPiA+ICsgICBpbnQgaSwgaiwgal9kc3QsIGlfZHN0 Owo+ID4gPj4gPiA+ID4gPiA+ICsgICBpbnQgb2Zmc2V0X3NyYywgb2Zmc2V0X2RzdDsKPiA+ID4+ ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgIGludCB4X3NyYyA9IGNyY19zcmMtPnNy Yy54MSA+PiAxNjsKPiA+ID4+ID4gPiA+ID4gPiArICAgaW50IHlfc3JjID0gY3JjX3NyYy0+c3Jj LnkxID4+IDE2Owo+ID4gPj4gPiA+ID4gPiA+ICsKPiA+ID4+ID4gPiA+ID4gPiArICAgaW50IHhf ZHN0ID0gY3JjX3NyYy0+ZHN0LngxOwo+ID4gPj4gPiA+ID4gPiA+ICsgICBpbnQgeV9kc3QgPSBj cmNfc3JjLT5kc3QueTE7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIGludCBoX2RzdCA9IGRybV9yZWN0 X2hlaWdodCgmY3JjX3NyYy0+ZHN0KTsKPiA+ID4+ID4gPiA+ID4gPiArICAgaW50IHdfZHN0ID0g ZHJtX3JlY3Rfd2lkdGgoJmNyY19zcmMtPmRzdCk7Cj4gPiA+PiA+ID4gPiA+ID4gKwo+ID4gPj4g PiA+ID4gPiA+ICsgICBpbnQgeV9saW1pdCA9IHlfc3JjICsgaF9kc3Q7Cj4gPiA+PiA+ID4gPiA+ ID4gKyAgIGludCB4X2xpbWl0ID0geF9zcmMgKyB3X2RzdDsKPiA+ID4+ID4gPiA+ID4gPiArCj4g PiA+PiA+ID4gPiA+ID4gKyAgIGZvciAoaSA9IHlfc3JjLCBpX2RzdCA9IHlfZHN0OyBpIDwgeV9s aW1pdDsgKytpKSB7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgICAgICAgICAgZm9yIChqID0geF9zcmMs IGpfZHN0ID0geF9kc3Q7IGogPCB4X2xpbWl0OyArK2opIHsKPiA+ID4+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgIG9mZnNldF9kc3QgPSBjcmNfZHN0LT5vZmZzZXQKPiA+ID4+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChpX2RzdCAqIGNyY19kc3Qt PnBpdGNoKQo+ID4gPj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsgKGpfZHN0KysgKiBjcmNfZHN0LT5jcHApOwo+ID4gPj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgb2Zmc2V0X3NyYyA9IGNyY19zcmMtPm9mZnNldAo+ID4gPj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGkgKiBjcmNfc3JjLT5waXRjaCkKPiA+ ID4+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChqICogY3Jj X3NyYy0+Y3BwKTsKPiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICBtZW1jcHkodmFkZHJfZHN0ICsgb2Zmc2V0X2RzdCwKPiA+ID4+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICB2YWRkcl9zcmMgKyBvZmZzZXRfc3JjLCBzaXpl b2YodTMyKSk7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgICAgICAgICAgfQo+ID4gPj4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGlfZHN0Kys7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4+ID4gPiA+ ID4gPiArfQo+ID4gPj4gPiA+ID4gPiA+ICsKPiA+ID4+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQg Y29tcG9zZV9jdXJzb3Ioc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMsCj4gPiA+PiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJp bWFyeV9jcmMsIHZvaWQgKnZhZGRyX291dCkKPiA+ID4+ID4gPiA+ID4gPiArewo+ID4gPj4gPiA+ ID4gPiA+ICsgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmN1cnNvcl9vYmo7Cj4gPiA+PiA+ID4g PiA+ID4gKyAgIHN0cnVjdCB2a21zX2dlbV9vYmplY3QgKmN1cnNvcl92a21zX29iajsKPiA+ID4+ ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgIGN1cnNvcl9vYmogPSBkcm1fZ2VtX2Zi X2dldF9vYmooJmN1cnNvcl9jcmMtPmZiLCAwKTsKPiA+ID4+ID4gPiA+ID4gPiArICAgY3Vyc29y X3ZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShjdXJzb3Jfb2JqKTsKPiA+ID4+ID4gPiA+ ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgIG11dGV4X2xvY2soJmN1cnNvcl92a21zX29iai0+ cGFnZXNfbG9jayk7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIGlmIChXQVJOX09OKCFjdXJzb3Jfdmtt c19vYmotPnZhZGRyKSkKPiA+ID4+ID4gPiA+ID4gPiArICAgICAgICAgICBnb3RvIG91dDsKPiA+ ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gKyAgIGJsZW5kKHZhZGRyX291dCwgY3Vy c29yX3ZrbXNfb2JqLT52YWRkciwgcHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ID4gPj4gPiA+ ID4gPiA+ICsKPiA+ID4+ID4gPiA+ID4gPiArb3V0Ogo+ID4gPj4gPiA+ID4gPiA+ICsgICBtdXRl eF91bmxvY2soJmN1cnNvcl92a21zX29iai0+cGFnZXNfbG9jayk7Cj4gPiA+PiA+ID4gPiA+ID4g K30KPiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBf dmttc19nZXRfY3JjKHN0cnVjdCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYywKPiA+ID4+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpj dXJzb3JfY3JjKQo+ID4gPj4gPiA+ID4gPiA+ICt7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJnByaW1hcnlfY3JjLT5mYjsKPiA+ID4+ID4gPiA+ID4g PiAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRfb2Jq KGZiLCAwKTsKPiA+ID4+ID4gPiA+ID4gPiAgICAgc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqdmtt c19vYmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gPj4gPiA+ID4gPiA+ICsg ICB2b2lkICp2YWRkcl9vdXQgPSBremFsbG9jKHZrbXNfb2JqLT5nZW0uc2l6ZSwgR0ZQX0tFUk5F TCk7Cj4gPiA+PiA+ID4gPiA+ID4gICAgIHUzMiBjcmMgPSAwOwo+ID4gPj4gPiA+ID4gPiA+IC0g ICBpbnQgaSA9IDA7Cj4gPiA+PiA+ID4gPiA+ID4gLSAgIHVuc2lnbmVkIGludCB4ID0gY3JjX2Rh dGEtPnNyYy54MSA+PiAxNjsKPiA+ID4+ID4gPiA+ID4gPiAtICAgdW5zaWduZWQgaW50IHkgPSBj cmNfZGF0YS0+c3JjLnkxID4+IDE2Owo+ID4gPj4gPiA+ID4gPiA+IC0gICB1bnNpZ25lZCBpbnQg aGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcmNfZGF0YS0+c3JjKSA+PiAxNjsKPiA+ID4+ID4g PiA+ID4gPiAtICAgdW5zaWduZWQgaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmNyY19kYXRh LT5zcmMpID4+IDE2Owo+ID4gPj4gPiA+ID4gPiA+IC0gICB1bnNpZ25lZCBpbnQgY3BwID0gZmIt PmZvcm1hdC0+Y3BwWzBdOwo+ID4gPj4gPiA+ID4gPiA+IC0gICB1bnNpZ25lZCBpbnQgc3JjX29m ZnNldDsKPiA+ID4+ID4gPiA+ID4gPiAtICAgdW5zaWduZWQgaW50IHNpemVfYnl0ZSA9IHdpZHRo ICogY3BwOwo+ID4gPj4gPiA+ID4gPiA+IC0gICB2b2lkICp2YWRkcjsKPiA+ID4+ID4gPiA+ID4g Pgo+ID4gPj4gPiA+ID4gPiA+IC0gICBtdXRleF9sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7 Cj4gPiA+PiA+ID4gPiA+ID4gLSAgIHZhZGRyID0gdmttc19vYmotPnZhZGRyOwo+ID4gPj4gPiA+ ID4gPiA+IC0gICBpZiAoV0FSTl9PTighdmFkZHIpKQo+ID4gPj4gPiA+ID4gPiA+IC0gICAgICAg ICAgIGdvdG8gb3V0Owo+ID4gPj4gPiA+ID4gPiA+ICsgICBpZiAoIXZhZGRyX291dCkgewo+ID4g Pj4gPiA+ID4gPiA+ICsgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIG1l bW9yeSBmb3Igb3V0cHV0IGZyYW1lLiIpOwo+ID4gPj4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJl dHVybiAwOwo+ID4gPj4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+PiA+ID4gPiA+ID4KPiA+ID4+ID4g PiA+ID4gPiAtICAgZm9yIChpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykgewo+ID4gPj4gPiA+ ID4gPiA+IC0gICAgICAgICAgIHNyY19vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIChpICogZmIt PnBpdGNoZXNbMF0pICsgKHggKiBjcHApOwo+ID4gPj4gPiA+ID4gPiA+IC0gICAgICAgICAgIGNy YyA9IGNyYzMyX2xlKGNyYywgdmFkZHIgKyBzcmNfb2Zmc2V0LCBzaXplX2J5dGUpOwo+ID4gPj4g PiA+ID4gPiA+ICsgICBtdXRleF9sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7Cj4gPiA+PiA+ ID4gPiA+ID4gKyAgIGlmIChXQVJOX09OKCF2a21zX29iai0+dmFkZHIpKSB7Cj4gPiA+PiA+ID4g PiA+ID4gKyAgICAgICAgICAgbXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4g Pj4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiBjcmM7Cj4gPiA+PiA+ID4gPiA+ID4gICAg IH0KPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiA+IC1vdXQ6Cj4gPiA+PiA+ID4gPiA+ ID4gKyAgIG1lbWNweSh2YWRkcl9vdXQsIHZrbXNfb2JqLT52YWRkciwgdmttc19vYmotPmdlbS5z aXplKTsKPiA+ID4+ID4gPiA+ID4gPiAgICAgbXV0ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNf bG9jayk7Cj4gPiA+PiA+ID4gPiA+ID4gKwo+ID4gPj4gPiA+ID4gPiA+ICsgICBpZiAoY3Vyc29y X2NyYykKPiA+ID4+ID4gPiA+ID4gPiArICAgICAgICAgICBjb21wb3NlX2N1cnNvcihjdXJzb3Jf Y3JjLCBwcmltYXJ5X2NyYywgdmFkZHJfb3V0KTsKPiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ ID4gPiA+ID4gKyAgIGNyYyA9IGNvbXB1dGVfY3JjKHZhZGRyX291dCwgcHJpbWFyeV9jcmMpOwo+ ID4gPj4gPiA+ID4gPiA+ICsKPiA+ID4+ID4gPiA+ID4gPiArICAga2ZyZWUodmFkZHJfb3V0KTsK PiA+ID4+ID4gPiA+ID4gPiArCj4gPiA+PiA+ID4gPiA+ID4gICAgIHJldHVybiBjcmM7Cj4gPiA+ PiA+ID4gPiA+ID4gIH0KPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiA+IEBAIC00NCw4 ICsxNDUsOCBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPiA+ID4+ID4gPiA+ID4gPiAgICAgc3RydWN0IHZrbXNfZGV2aWNlICp2ZGV2ID0gY29u dGFpbmVyX29mKG91dCwgc3RydWN0IHZrbXNfZGV2aWNlLAo+ID4gPj4gPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KTsKPiA+ID4+ID4g PiA+ID4gPiAgICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKnByaW1hcnlfY3JjID0gTlVMTDsKPiA+ ID4+ID4gPiA+ID4gPiArICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMgPSBOVUxM Owo+ID4gPj4gPiA+ID4gPiA+ICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ID4+ID4g PiA+ID4gPiAtCj4gPiA+PiA+ID4gPiA+ID4gICAgIHUzMiBjcmMzMiA9IDA7Cj4gPiA+PiA+ID4g PiA+ID4KPiA+ID4+ID4gPiA+ID4gPiAgICAgZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCAmdmRl di0+ZHJtKSB7Cj4gPiA+PiA+ID4gPiA+ID4gQEAgLTU4LDE0ICsxNTksMTQgQEAgdm9pZCB2a21z X2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+PiA+ID4gPiA+ ID4gICAgICAgICAgICAgaWYgKGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3JlZmNvdW50KCZjcmNfZGF0 YS0+ZmIpID09IDApCj4gPiA+PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiA+IC0gICAgICAgICAgIGlmIChwbGFu ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7Cj4gPiA+PiA+ID4gPiA+ID4gKyAg ICAgICAgICAgaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gPiA+ PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2NyYyA9IGNyY19kYXRhOwo+ ID4gPj4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+PiA+ID4gPiA+ ID4gLSAgICAgICAgICAgfQo+ID4gPj4gPiA+ID4gPiA+ICsgICAgICAgICAgIGVsc2UKPiA+ID4+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGN1cnNvcl9jcmMgPSBjcmNfZGF0YTsKPiA+ ID4+ID4gPiA+ID4gPiAgICAgfQo+ID4gPj4gPiA+ID4gPiA+Cj4gPiA+PiA+ID4gPiA+ID4gICAg IGlmIChwcmltYXJ5X2NyYykKPiA+ID4+ID4gPiA+ID4gPiAtICAgICAgICAgICBjcmMzMiA9IF92 a21zX2dldF9jcmMocHJpbWFyeV9jcmMpOwo+ID4gPj4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNy YzMyID0gX3ZrbXNfZ2V0X2NyYyhwcmltYXJ5X2NyYywgY3Vyc29yX2NyYyk7Cj4gPiA+PiA+ID4g PiA+ID4KPiA+ID4+ID4gPiA+ID4gPiAgICAgZHJtX2NydGNfYWRkX2NyY19lbnRyeShjcnRjLCB0 cnVlLCBjcnRjX3N0YXRlLT5uX2ZyYW1lLCAmY3JjMzIpOwo+ID4gPj4gPiA+ID4gPiA+ICB9Cj4g PiA+PiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+PiA+ID4gPiA+ID4gaW5k ZXggMzZlNTI0Zjc5MWZlLi4xNzM4NzVkYzM2MWUgMTAwNjQ0Cj4gPiA+PiA+ID4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4gPj4gPiA+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4+ID4gPiA+ID4gPiBAQCAtMjUs OCArMjUsMTEgQEAgc3RhdGljIGNvbnN0IHUzMiB2a21zX2N1cnNvcl9mb3JtYXRzW10gPSB7Cj4g PiA+PiA+ID4gPiA+ID4gIH07Cj4gPiA+PiA+ID4gPiA+ID4KPiA+ID4+ID4gPiA+ID4gPiAgc3Ry dWN0IHZrbXNfY3JjX2RhdGEgewo+ID4gPj4gPiA+ID4gPiA+IC0gICBzdHJ1Y3QgZHJtX3JlY3Qg c3JjOwo+ID4gPj4gPiA+ID4gPiA+ICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiOwo+ID4g Pj4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgZHJtX3JlY3Qgc3JjLCBkc3Q7Cj4gPiA+PiA+ID4gPiA+ ID4gKyAgIHVuc2lnbmVkIGludCBvZmZzZXQ7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIHVuc2lnbmVk IGludCBwaXRjaDsKPiA+ID4+ID4gPiA+ID4gPiArICAgdW5zaWduZWQgaW50IGNwcDsKPiA+ID4+ ID4gPiA+ID4gPiAgfTsKPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ID4gPiA+ICAvKioKPiA+ ID4+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+PiA+ID4gPiA+ID4g aW5kZXggNDI4MjQ3ZDQwM2RjLi43MDQxMDA3Mzk2YWUgMTAwNjQ0Cj4gPiA+PiA+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+PiA+ID4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+PiA+ID4gPiA+ID4g QEAgLTg1LDE2ICs4NSwyMiBAQCBzdGF0aWMgdm9pZCB2a21zX3BsYW5lX2F0b21pY191cGRhdGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ID4g Pj4gPiA+ID4gPiA+ICB7Cj4gPiA+PiA+ID4gPiA+ID4gICAgIHN0cnVjdCB2a21zX3BsYW5lX3N0 YXRlICp2a21zX3BsYW5lX3N0YXRlOwo+ID4gPj4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gPiA+PiA+ID4gPiA+ID4gICAgIHN0 cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YTsKPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ ID4gPiA+IC0gICBpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5mYikK PiA+ID4+ID4gPiA+ID4gPiArICAgaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIWZiKQo+ID4g Pj4gPiA+ID4gPiA+ICAgICAgICAgICAgIHJldHVybjsKPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4g PiA+ID4gPiA+ICAgICB2a21zX3BsYW5lX3N0YXRlID0gdG9fdmttc19wbGFuZV9zdGF0ZShwbGFu ZS0+c3RhdGUpOwo+ID4gPj4gPiA+ID4gPiA+ICsKPiA+ID4+ID4gPiA+ID4gPiAgICAgY3JjX2Rh dGEgPSB2a21zX3BsYW5lX3N0YXRlLT5jcmNfZGF0YTsKPiA+ID4+ID4gPiA+ID4gPiAgICAgbWVt Y3B5KCZjcmNfZGF0YS0+c3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMsIHNpemVvZihzdHJ1Y3QgZHJt X3JlY3QpKTsKPiA+ID4+ID4gPiA+ID4gPiAtICAgbWVtY3B5KCZjcmNfZGF0YS0+ZmIsIHBsYW5l LT5zdGF0ZS0+ZmIsIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+PiA+ID4g PiA+ID4gKyAgIG1lbWNweSgmY3JjX2RhdGEtPmRzdCwgJnBsYW5lLT5zdGF0ZS0+ZHN0LCBzaXpl b2Yoc3RydWN0IGRybV9yZWN0KSk7Cj4gPiA+PiA+ID4gPiA+ID4gKyAgIG1lbWNweSgmY3JjX2Rh dGEtPmZiLCBmYiwgc2l6ZW9mKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIpKTsKPiA+ID4+ID4gPiA+ ID4gPiAgICAgZHJtX2ZyYW1lYnVmZmVyX2dldCgmY3JjX2RhdGEtPmZiKTsKPiA+ID4+ID4gPiA+ ID4gPiArICAgY3JjX2RhdGEtPm9mZnNldCA9IGZiLT5vZmZzZXRzWzBdOwo+ID4gPj4gPiA+ID4g PiA+ICsgICBjcmNfZGF0YS0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+ID4+ID4gPiA+ID4g PiArICAgY3JjX2RhdGEtPmNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiA+ID4+ID4gPiA+ID4g PiAgfQo+ID4gPj4gPiA+ID4gPiA+Cj4gPiA+PiA+ID4gPiA+ID4gIHN0YXRpYyBpbnQgdmttc19w bGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+PiA+ID4gPiA+ ID4gLS0KPiA+ID4+ID4gPiA+ID4gPiAyLjE3LjEKPiA+ID4+ID4gPiA+ID4gPgo+ID4gPj4gPiA+ ID4gPgo+ID4gPj4gPiA+ID4gPiAtLQo+ID4gPj4gPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ PiA+ID4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPj4gPiA+ ID4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+ID4gPj4gPiA+Cj4gPiA+PiA+ID4gLS0KPiA+ID4+ ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+PiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCj4gPiA+PiA+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+ID4+Cj4gPiA+PiAt LQo+ID4gPj4gRGFuaWVsIFZldHRlcgo+ID4gPj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCj4gPiA+PiBodHRwOi8vYmxvZy5mZndsbC5jaAo+ID4gCj4gPiAKPiA+IAo+ID4g LS0gCj4gPiBEYW5pZWwgVmV0dGVyCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9y YXRpb24KPiA+ICs0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0t IApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK