From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH 2/2] drm/vkms: Compute CRC with Cursor Plane Date: Tue, 14 Aug 2018 22:03:47 +0300 Message-ID: <20180814190347.GA16547@haneenDRM> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-x241.google.com (mail-qt0-x241.google.com [IPv6:2607:f8b0:400d:c0d::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3806C6E2C1 for ; Tue, 14 Aug 2018 19:03:51 +0000 (UTC) Received: by mail-qt0-x241.google.com with SMTP id w26-v6so22307637qto.5 for ; Tue, 14 Aug 2018 12:03:51 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180814082129.GA21634@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: seanpaul@chromium.org, rodrigosiqueiramelo@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMTQsIDIwMTggYXQgMTA6MjE6MjlBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBNb24sIEF1ZyAxMywgMjAxOCBhdCAxMTowNDoxMVBNICswMzAwLCBIYW5lZW4g TW9oYW1tZWQgd3JvdGU6Cj4gPiBPbiBXZWQsIEF1ZyAwOCwgMjAxOCBhdCAxMDoyMzoyN0FNICsw MjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBXZWQsIEF1ZyAwOCwgMjAxOCBhdCAw Njo1MzoxN0FNICswMzAwLCBIYW5lZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+ID4gT24gVHVlLCBB dWcgMDcsIDIwMTggYXQgMDY6MzM6MzZQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ ID4gPiA+IE9uIE1vbiwgQXVnIDA2LCAyMDE4IGF0IDA2OjU4OjI5QU0gKzAzMDAsIEhhbmVlbiBN b2hhbW1lZCB3cm90ZToKPiA+ID4gPiA+ID4gVGhpcyBwYXRjaCBjb21wdXRlIENSQyBmb3Igb3V0 cHV0IGZyYW1lIHdpdGggY3Vyc29yIGFuZCBwcmltYXJ5IHBsYW5lLgo+ID4gPiA+ID4gPiBCbGVu ZCBjdXJzb3Igd2l0aCBwcmltYXJ5IHBsYW5lIGFuZCBjb21wdXRlIENSQyBvbiB0aGUgcmVzdWx0 ZWQgZnJhbWUuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4g TW9oYW1tZWQgPGhhbW9oYW1tZWQuc2FAZ21haWwuY29tPgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBO aWNlIQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBJIGFzc3VtZSB3aXRoIHRoaXMgeW91J3JlIHBhc3Np bmcgYWxsIHRoZSBjcmMgYmFzZWQgY3Vyc29yIHRlc3RzIGluIGlndD8KPiA+ID4gPiA+IElmIHNv LCBwbGVhc2UgbWVudGlvbiB0aGlzIGluIHRoZSBjb21taXQgbWVzc2FnZSwgc28gdGhhdCB0aGVy ZSdzIGEgcmVjb3JkCj4gPiA+ID4gPiBvZiB0aGUgdGVzdGluZyBkb25lIG9uIHRoaXMuCj4gPiA+ ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBTdXJlLCBJJ2xsIHVwZGF0ZSB0aGUgY29tbWl0IG1lc3Nh Z2UuCj4gPiA+ID4gSXMgdGhlcmUgYW55IG90aGVyIGNoYW5nZSBJIHNob3VsZCBhZGQvZml4IHRv IHRoaXMgcGF0Y2hzZXQ/Cj4gPiA+ID4gCj4gPiA+ID4gPiBPbmUgZmFpcmx5IGh1Z2UgZ2FwIHdl IGlpcmMgaGF2ZSBpbiBvdXIgY3Vyc29yIHRlc3RpbmcgaXMgdGhhdCB0aGVyZSdzIG5vdAo+ID4g PiA+ID4gbXVjaCAoaWYgYW55PykgYWxwaGEgYmxlbmRpbmcgY292ZXJhZ2UuIFdlIGtpbmRhIG5l ZWQgdGhhdCB0byBtYWtlIHN1cmUKPiA+ID4gPiA+IHRoaXMgYWxsIHdvcmtzIGNvcnJlY3RseS4g VGhlIHVzdWFsIHRyaWNrIGlzIHRvIG9ubHkgY2hlY2sgdGhlIGV4dHJlbWUKPiA+ID4gPiA+IGFs cGhhIHZhbHVlcywgaS5lLiBmdWxseSBvcGFxdWUgYW5kIGZ1bGx5IHRyYW5zcGFyZW50LCBzaW5j ZSBpbnRlcm1lZGlhdGUKPiA+ID4gPiA+IHZhbHVlcyBhcmUgYWZmZWN0ZWQgYnkgaHctc3BlY2lm aWMgcm91bmRpbmcgbW9kZXMuCj4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiAgZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19jcmMuYyAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQo+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCAgIHwgICA1 ICstCj4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgfCAgMTAg Ky0KPiA+ID4gPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDI3IGRl bGV0aW9ucygtKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92a21zL3ZrbXNfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5j Cj4gPiA+ID4gPiA+IGluZGV4IDM3ZDcxN2YzOGUzYy4uNDg1M2E3MzlhZTVhIDEwMDY0NAo+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiA+ID4gPiA+ID4gQEAgLTEs MzYgKzEsMTM3IEBACj4gPiA+ID4gPiA+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAo+ID4gPiA+ID4gPiAgI2luY2x1ZGUgInZrbXNfZHJ2LmgiCj4gPiA+ID4gPiA+ICAjaW5j bHVkZSA8bGludXgvY3JjMzIuaD4KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Yy5oPgo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4g PiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgo+ID4g PiA+ID4gPiAgCj4gPiA+ID4gPiA+IC1zdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1 Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGEpCj4gPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ID4g KyAqIGNvbXB1dGVfY3JjIC0gQ29tcHV0ZSBDUkMgdmFsdWUgb24gb3V0cHV0IGZyYW1lCj4gPiA+ ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiArICogQHZhZGRyX291dDogYWRkcmVzcyB0byBmaW5hbCBm cmFtZWJ1ZmZlcgo+ID4gPiA+ID4gPiArICogQGNyY19vdXQ6IGZyYW1lYnVmZmVyJ3MgbWV0YWRh dGEKPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ICsgKiByZXR1cm5zIENSQyB2YWx1ZSBjb21w dXRlZCB1c2luZyBjcmMzMiBvbiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mCj4gPiA+ID4gPiA+ICsg KiB0aGUgZmluYWwgZnJhbWVidWZmZXIgYXQgdmFkZHJfb3V0Cj4gPiA+ID4gPiA+ICsgKi8KPiA+ ID4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBjb21wdXRlX2NyYyh2b2lkICp2YWRkcl9vdXQsIHN0 cnVjdCB2a21zX2NyY19kYXRhICpjcmNfb3V0KQo+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiAt CXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJmNyY19kYXRhLT5mYjsKPiA+ID4gPiA+ID4g KwlpbnQgaSwgc3JjX29mZnNldDsKPiA+ID4gPiA+ID4gKwlpbnQgeF9zcmMgPSBjcmNfb3V0LT5z cmMueDEgPj4gMTY7Cj4gPiA+ID4gPiA+ICsJaW50IHlfc3JjID0gY3JjX291dC0+c3JjLnkxID4+ IDE2Owo+ID4gPiA+ID4gPiArCWludCBoX3NyYyA9IGRybV9yZWN0X2hlaWdodCgmY3JjX291dC0+ c3JjKSA+PiAxNjsKPiA+ID4gPiA+ID4gKwlpbnQgd19zcmMgPSBkcm1fcmVjdF93aWR0aCgmY3Jj X291dC0+c3JjKSA+PiAxNjsKPiA+ID4gPiA+ID4gKwlpbnQgc2l6ZV9ieXRlID0gd19zcmMgKiBj cmNfb3V0LT5jcHA7Cj4gPiA+ID4gPiA+ICsJdTMyIGNyYyA9IDA7Cj4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gKwlmb3IgKGkgPSB5X3NyYzsgaSA8IHlfc3JjICsgaF9zcmM7IGkrKykgewo+ID4g PiA+ID4gPiArCQlzcmNfb2Zmc2V0ID0gY3JjX291dC0+b2Zmc2V0Cj4gPiA+ID4gPiA+ICsJCQkg ICAgICsgKGkgKiBjcmNfb3V0LT5waXRjaCkKPiA+ID4gPiA+ID4gKwkJCSAgICAgKyAoeF9zcmMg KiBjcmNfb3V0LT5jcHApOwo+ID4gPiA+ID4gPiArCQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRy X291dCArIHNyY19vZmZzZXQsIHNpemVfYnl0ZSk7Cj4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ICsJcmV0dXJuIGNyYzsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4g Kwo+ID4gCj4gPiBIZXkgRGFuaWVsLCAKPiA+IAo+ID4gV2hlbiBJIGNoYW5nZSB0aGUgYWJvdmUg ZnVuY3Rpb24gImNvbXB1dGVfY3JjIiB0byBjb21wdXRlIHRoZSBDUkMgZm9yCj4gPiBlYWNoIHBp eGVsIHNvIHdlIGNhbiBjbGVhciB0aGUgQWxwaGEgdmFsdWUgYmVmb3JlIGNvbXB1dGluZyB0aGUg Q1JDIGFzIGJlbGxvdywKPiA+IHRoZSB0ZXN0ICJub25ibG9ja2luZy1jcmMtcGlwZS1BLWZyYW1l LXNlcXVlbmNlIiBzb21ldGltZXMgZmFpbGVzIGFuZAo+ID4gc29tZXRpbWVzIHBhc3Nlcy4gU2hv dWxkIEkgc3RpbGwgY29udGludWUgd2l0aCB0aGUgY2hhbmdlLCBvciBsZWF2ZSBpdAo+ID4gYXMg aXQgaXM/Cj4gCj4gSG0sIGhvdyBkb2VzIGl0IGZhaWw/IENvdWxkIGJlIHRoYXQgdGhlIGNvZGUg YmVjb21lcyB0b28gc2xvdywgYW5kIHRoZW4KPiB0aGUgZnJhbWUgY291bnRlcnMgZG9uJ3QgaW5j cmVtZW50IG5pY2VseSBhbnltb3JlLiBPciB0aGVyZSdzIGEgcmFjZQo+IHNvbWV3aGVyZSBpbiB0 aGUgQ1JDIGNvZGUgdGhhdCBnZXRzIGV4cG9zZWQuIEJ1dCB0aGF0J3MganVzdCBtZSBndWVzc2lu Zy4KPiAtRGFuaWVsCj4gCgpPaCBzb3JyeSBJIHNob3VsZCd2ZSBlbGFib3JhdGVkIG1vcmUgb24g aG93IGl0IGZhaWxzLiBZZWFoIEkgdGhpbmsgaXQKYmVjb21lcyB0b28gc2xvdyBhbmQgdGhhdCBj YW4gY2F1c2UgbWlzbWF0Y2ggdG8gZnJhbWUgY291bnRlcnM/CgotLS0tLQooa21zX3BpcGVfY3Jj X2Jhc2ljOjE5MDIpIENSSVRJQ0FMOiBGYWlsZWQgYXNzZXJ0aW9uOiBjcmNzW2pdLmZyYW1lICsg MSA9PSBjcmNzW2ogKyAxXS5mcmFtZQooa21zX3BpcGVfY3JjX2Jhc2ljOjE5MDIpIENSSVRJQ0FM OiBMYXN0IGVycm5vOiA5LCBCYWQgZmlsZSBkZXNjcmlwdG9yCihrbXNfcGlwZV9jcmNfYmFzaWM6 MTkwMikgQ1JJVElDQUw6IGVycm9yOiAxMDkwOTI4ICE9IDEwOTA5MjkKLS0tLS0KCk1heWJlIGl0 J3Mgbm90IHRoYXQgYmFkL3Nsb3cgYmVjYXVzZSBJJ3ZlIG5vdGljZWQgdGhhdCB0aGlzIGhhcHBl bgpvY2Nhc2lvbmFsbHkgd2hlbiBJIGVuYWJsZSBGdHJhY2UuCgo+ID4gCj4gPiAtLS0tLS0tLS0t LS0tLS0tLSB2a21zX2NyYy5jIC0tLS0tLS0tLS0tLS0tLS0tCj4gPiAJZm9yIChpID0geV9zcmM7 IGkgPCB5X3NyYyArIGhfc3JjOyArK2kpIHsKPiA+IAkJZm9yIChqID0geF9zcmM7IGogPCB4X3Ny YyArIHdfc3JjOyArK2opIHsKPiA+IAkJCXNyY19vZmZzZXQgPSBjcmNfb3V0LT5vZmZzZXQKPiA+ IAkJCQkgICAgICsgKGkgKiBjcmNfb3V0LT5waXRjaCkKPiA+IAkJCQkgICAgICsgKGogKiBjcmNf b3V0LT5jcHApOwo+ID4gCQkJbWVtc2V0KHZhZGRyX291dCArIHNyY19vZmZzZXQgKyAyNCwgMCwg IDgpOwo+ID4gCQkJY3JjID0gY3JjMzJfbGUoY3JjLCB2YWRkcl9vdXQgKyBzcmNfb2Zmc2V0LCBz aXplb2YodTMyKSk7Cj4gPiAJCX0KPiA+IAl9Cj4gPiAtLS0tLS0tLS0tLS0tLS0tLSB2a21zX2Ny Yy5jIC0tLS0tLS0tLS0tLS0tLS0tCj4gPiAKPiA+IFRoYW5rIHlvdSwKPiA+IEhhbmVlbgo+ID4g Cj4gPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ID4gKyAqIGJsZW5kIC0gYmVsbmQgdmFsdWUgYXQg dmFkZHJfc3JjIHdpdGggdmFsdWUgYXQgdmFkZHJfZHN0Cj4gPiA+ID4gPiA+ICsgKiBAdmFkZHJf ZHN0OiBkZXN0aW5hdGlvbiBhZGRyZXNzCj4gPiA+ID4gPiA+ICsgKiBAdmFkZHJfc3JjOiBzb3Vy Y2UgYWRkcmVzcwo+ID4gPiA+ID4gPiArICogQGNyY19kc3Q6IGRlc3RpbmF0aW9uIGZyYW1lYnVm ZmVyJ3MgbWV0YWRhdGEKPiA+ID4gPiA+ID4gKyAqIEBjcmNfc3JjOiBzb3VyY2UgZnJhbWVidWZm ZXIncyBtZXRhZGF0YQo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAqIEJsZW5kIHZhbHVl IGF0IHZhZGRyX3NyYyB3aXRoIHZhbHVlIGF0IHZhZGRyX2RzdC4KPiA+ID4gPiA+ID4gKyAqIEN1 cnJlbnRseSwgdGhpcyBmdW5jdGlvbiB3cml0ZSB2YWx1ZSBhdCB2YWRkcl9zcmMgb24gdmFsdWUK PiA+ID4gPiA+ID4gKyAqIGF0IHZhZGRyX2RzdCB1c2luZyBidWZmZXIncyBtZXRhZGF0YSB0byBs b2NhdGUgdGhlIG5ldyB2YWx1ZXMKPiA+ID4gPiA+ID4gKyAqIGZyb20gdmFkZHJfc3JjIGFuZCB0 aGVpciBkaXN0ZW5hdGlvbiBhdCB2YWRkcl9kc3QuCj4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4g PiArICogVG9kbzogVXNlIHRoZSBhbHBoYSB2YWx1ZSB0byBibGVuZCB2YWRkcl9zcmMgd2l0aCB2 YWRkcl9kc3QKPiA+ID4gPiA+ID4gKyAqCSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0Lgo+ID4g PiA+ID4gCj4gPiA+ID4gPiBBbm90aGVyIHRvZG86IFdlIG11c3QgY2xlYXIgdGhlIGFscGhhIGNo YW5uZWwgaW4gdGhlIHJlc3VsdCBhZnRlcgo+ID4gPiA+ID4gYmxlbmRpbmcuIFRoaXMgYWxzbyBh cHBsaWVzIHRvIHRoZSBwcmltYXJ5IHBsYW5lLCB3aGVyZSB0aGUgWFJHQiBmb3IgdGhlCj4gPiA+ ID4gPiBwaXhlbCBmb3JtYXQgbWFuZGF0ZXMgdGhhdCB3ZSBlbnRpcmVseSBpZ25vcmUgdGhlIGFs cGhhIGNoYW5uZWwuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFRoaXMgaXMgYWxzbyBzb21ldGhpbmcg d2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgYW4gaWd0IHRlc3RjYXNlIGZvci4KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gU2luY2UgdGhlcmUncyBhIGZldyBvcGVuIGVuZHM6IEhvdyBtYW55IHdlZWtzIGFy ZSBsZWZ0IGluIHlvdXIgb3V0cmVhY2h5Cj4gPiA+ID4gPiBpbnRlcm5zaGlwPyBXZSBuZWVkIHRv IG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IGFsbCB0aGUgaXNzdWVzIGFyZSBjb3ZlcmVkCj4gPiA+ ID4gPiBpbiBhIHZrbXMgdG9kbyBmaWxlLiBXb3VsZCBiZSBncmVhdCB0byBhZGQgdGhhdCBpbgo+ ID4gPiA+ID4gRG9jdW1lbnRhdGlvbi9ncHUvdmttcy5yc3QsIGxpa2Ugd2UgaGF2ZSBmb3Igb3Ro ZXIgZHJpdmVycy4KPiA+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ IEkndmUgb25lIG1vcmUgd2VlayEgSSBjYW4gdXNlIHRoaXMgd2VlayB0byBwcmVwYXJlIHRoZSB0 b2RvIGZpbGUgYW5kCj4gPiA+ID4gZmluYWxpemUgdGhpcyBwYXRjaD8KPiA+ID4gCj4gPiA+IFll YWggc291bmRzIGxpa2UgdGhlIHBlcmZlY3Qgd3JhcC11cCB3b3JrLiBTaW5jZSB0aGlzIHdvbnQg YmUgZW5vdWdoIHRvCj4gPiA+IGZpbmlzaCB0aGUgY3Vyc29yIHdvcmsgaXQgd291bGQgYmUgZ29v ZCB0byBoaWRlIHRoZSBjdXJzb3Igc2V0dXAgYmVoaW5kIGEKPiA+ID4gbW9kdWxlIG9wdGlvbiwg cGVyaGFwcyAiZW5hYmxlX2N1cnNvciIgb3Igc28uIFRoYXQgd2F5IHdlIHdvbnQgaGF2ZQo+ID4g PiBub3QtdG90YWxseS1jb3JyZWN0IGZlYXR1cmVzIGVuYWJsZWQuIEFuZCBlbmFibGluZy9kaXNh YmxpbmcgY3Vyc29yCj4gPiA+IHN1cHBvcnQgY291bGQgYmUgdXNlZnVsIGZvciB0ZXN0aW5nLgo+ ID4gPiAtRGFuaWVsCj4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rIHlvdSwKPiA+ID4gPiBI YW5lZW4KPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQg YmxlbmQodm9pZCAqdmFkZHJfZHN0LCB2b2lkICp2YWRkcl9zcmMsCj4gPiA+ID4gPiA+ICsJCSAg c3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kc3QsCj4gPiA+ID4gPiA+ICsJCSAgc3RydWN0IHZr bXNfY3JjX2RhdGEgKmNyY19zcmMpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJaW50IGks IGosIGpfZHN0LCBpX2RzdDsKPiA+ID4gPiA+ID4gKwlpbnQgb2Zmc2V0X3NyYywgb2Zmc2V0X2Rz dDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWludCB4X3NyYyA9IGNyY19zcmMtPnNyYy54 MSA+PiAxNjsKPiA+ID4gPiA+ID4gKwlpbnQgeV9zcmMgPSBjcmNfc3JjLT5zcmMueTEgPj4gMTY7 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlpbnQgeF9kc3QgPSBjcmNfc3JjLT5kc3QueDE7 Cj4gPiA+ID4gPiA+ICsJaW50IHlfZHN0ID0gY3JjX3NyYy0+ZHN0LnkxOwo+ID4gPiA+ID4gPiAr CWludCBoX2RzdCA9IGRybV9yZWN0X2hlaWdodCgmY3JjX3NyYy0+ZHN0KTsKPiA+ID4gPiA+ID4g KwlpbnQgd19kc3QgPSBkcm1fcmVjdF93aWR0aCgmY3JjX3NyYy0+ZHN0KTsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArCWludCB5X2xpbWl0ID0geV9zcmMgKyBoX2RzdDsKPiA+ID4gPiA+ID4g KwlpbnQgeF9saW1pdCA9IHhfc3JjICsgd19kc3Q7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g Kwlmb3IgKGkgPSB5X3NyYywgaV9kc3QgPSB5X2RzdDsgaSA8IHlfbGltaXQ7ICsraSkgewo+ID4g PiA+ID4gPiArCQlmb3IgKGogPSB4X3NyYywgal9kc3QgPSB4X2RzdDsgaiA8IHhfbGltaXQ7ICsr aikgewo+ID4gPiA+ID4gPiArCQkJb2Zmc2V0X2RzdCA9IGNyY19kc3QtPm9mZnNldAo+ID4gPiA+ ID4gPiArCQkJCSAgICAgKyAoaV9kc3QgKiBjcmNfZHN0LT5waXRjaCkKPiA+ID4gPiA+ID4gKwkJ CQkgICAgICsgKGpfZHN0KysgKiBjcmNfZHN0LT5jcHApOwo+ID4gPiA+ID4gPiArCQkJb2Zmc2V0 X3NyYyA9IGNyY19zcmMtPm9mZnNldAo+ID4gPiA+ID4gPiArCQkJCSAgICAgKyAoaSAqIGNyY19z cmMtPnBpdGNoKQo+ID4gPiA+ID4gPiArCQkJCSAgICAgKyAoaiAqIGNyY19zcmMtPmNwcCk7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkJCW1lbWNweSh2YWRkcl9kc3QgKyBvZmZzZXRfZHN0 LAo+ID4gPiA+ID4gPiArCQkJICAgICAgIHZhZGRyX3NyYyArIG9mZnNldF9zcmMsIHNpemVvZih1 MzIpKTsKPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiArCQlpX2RzdCsrOwo+ID4gPiA+ID4g PiArCX0KPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIHZv aWQgY29tcG9zZV9jdXJzb3Ioc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMsCj4gPiA+ ID4gPiA+ICsJCQkgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMsIHZvaWQgKnZh ZGRyX291dCkKPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmN1cnNvcl9vYmo7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqY3Vy c29yX3ZrbXNfb2JqOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJY3Vyc29yX29iaiA9IGRy bV9nZW1fZmJfZ2V0X29iaigmY3Vyc29yX2NyYy0+ZmIsIDApOwo+ID4gPiA+ID4gPiArCWN1cnNv cl92a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oY3Vyc29yX29iaik7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwltdXRleF9sb2NrKCZjdXJzb3Jfdmttc19vYmotPnBhZ2VzX2xvY2sp Owo+ID4gPiA+ID4gPiArCWlmIChXQVJOX09OKCFjdXJzb3Jfdmttc19vYmotPnZhZGRyKSkKPiA+ ID4gPiA+ID4gKwkJZ290byBvdXQ7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlibGVuZCh2 YWRkcl9vdXQsIGN1cnNvcl92a21zX29iai0+dmFkZHIsIHByaW1hcnlfY3JjLCBjdXJzb3JfY3Jj KTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArb3V0Ogo+ID4gPiA+ID4gPiArCW11dGV4X3Vu bG9jaygmY3Vyc29yX3ZrbXNfb2JqLT5wYWdlc19sb2NrKTsKPiA+ID4gPiA+ID4gK30KPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIHVpbnQzMl90IF92a21zX2dldF9jcmMoc3RydWN0 IHZrbXNfY3JjX2RhdGEgKnByaW1hcnlfY3JjLAo+ID4gPiA+ID4gPiArCQkJICAgICAgc3RydWN0 IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAmcHJpbWFyeV9jcmMtPmZiOwo+ID4gPiA+ID4g PiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihm YiwgMCk7Cj4gPiA+ID4gPiA+ICAJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqdmttc19vYmogPSBk cm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gPiA+ID4gPiArCXZvaWQgKnZhZGRyX291 dCA9IGt6YWxsb2Modmttc19vYmotPmdlbS5zaXplLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ID4g IAl1MzIgY3JjID0gMDsKPiA+ID4gPiA+ID4gLQlpbnQgaSA9IDA7Cj4gPiA+ID4gPiA+IC0JdW5z aWduZWQgaW50IHggPSBjcmNfZGF0YS0+c3JjLngxID4+IDE2Owo+ID4gPiA+ID4gPiAtCXVuc2ln bmVkIGludCB5ID0gY3JjX2RhdGEtPnNyYy55MSA+PiAxNjsKPiA+ID4gPiA+ID4gLQl1bnNpZ25l ZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcmNfZGF0YS0+c3JjKSA+PiAxNjsKPiA+ ID4gPiA+ID4gLQl1bnNpZ25lZCBpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmY3JjX2RhdGEt PnNyYykgPj4gMTY7Cj4gPiA+ID4gPiA+IC0JdW5zaWduZWQgaW50IGNwcCA9IGZiLT5mb3JtYXQt PmNwcFswXTsKPiA+ID4gPiA+ID4gLQl1bnNpZ25lZCBpbnQgc3JjX29mZnNldDsKPiA+ID4gPiA+ ID4gLQl1bnNpZ25lZCBpbnQgc2l6ZV9ieXRlID0gd2lkdGggKiBjcHA7Cj4gPiA+ID4gPiA+IC0J dm9pZCAqdmFkZHI7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gLQltdXRleF9sb2NrKCZ2a21z X29iai0+cGFnZXNfbG9jayk7Cj4gPiA+ID4gPiA+IC0JdmFkZHIgPSB2a21zX29iai0+dmFkZHI7 Cj4gPiA+ID4gPiA+IC0JaWYgKFdBUk5fT04oIXZhZGRyKSkKPiA+ID4gPiA+ID4gLQkJZ290byBv dXQ7Cj4gPiA+ID4gPiA+ICsJaWYgKCF2YWRkcl9vdXQpIHsKPiA+ID4gPiA+ID4gKwkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBvdXRwdXQgZnJhbWUuIik7Cj4gPiA+ ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gIAo+ID4gPiA+ ID4gPiAtCWZvciAoaSA9IHk7IGkgPCB5ICsgaGVpZ2h0OyBpKyspIHsKPiA+ID4gPiA+ID4gLQkJ c3JjX29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgKGkgKiBmYi0+cGl0Y2hlc1swXSkgKyAoeCAq IGNwcCk7Cj4gPiA+ID4gPiA+IC0JCWNyYyA9IGNyYzMyX2xlKGNyYywgdmFkZHIgKyBzcmNfb2Zm c2V0LCBzaXplX2J5dGUpOwo+ID4gPiA+ID4gPiArCW11dGV4X2xvY2soJnZrbXNfb2JqLT5wYWdl c19sb2NrKTsKPiA+ID4gPiA+ID4gKwlpZiAoV0FSTl9PTighdmttc19vYmotPnZhZGRyKSkgewo+ ID4gPiA+ID4gPiArCQltdXRleF9sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7Cj4gPiA+ID4g PiA+ICsJCXJldHVybiBjcmM7Cj4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiAgCj4gPiA+ID4g PiA+IC1vdXQ6Cj4gPiA+ID4gPiA+ICsJbWVtY3B5KHZhZGRyX291dCwgdmttc19vYmotPnZhZGRy LCB2a21zX29iai0+Z2VtLnNpemUpOwo+ID4gPiA+ID4gPiAgCW11dGV4X3VubG9jaygmdmttc19v YmotPnBhZ2VzX2xvY2spOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJaWYgKGN1cnNvcl9j cmMpCj4gPiA+ID4gPiA+ICsJCWNvbXBvc2VfY3Vyc29yKGN1cnNvcl9jcmMsIHByaW1hcnlfY3Jj LCB2YWRkcl9vdXQpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJY3JjID0gY29tcHV0ZV9j cmModmFkZHJfb3V0LCBwcmltYXJ5X2NyYyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlr ZnJlZSh2YWRkcl9vdXQpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAJcmV0dXJuIGNyYzsK PiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiBAQCAtNDQsOCArMTQ1LDgg QEAgdm9pZCB2a21zX2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4g PiA+ID4gPiA+ICAJc3RydWN0IHZrbXNfZGV2aWNlICp2ZGV2ID0gY29udGFpbmVyX29mKG91dCwg c3RydWN0IHZrbXNfZGV2aWNlLAo+ID4gPiA+ID4gPiAgCQkJCQkJb3V0cHV0KTsKPiA+ID4gPiA+ ID4gIAlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMgPSBOVUxMOwo+ID4gPiA+ID4g PiArCXN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3JjID0gTlVMTDsKPiA+ID4gPiA+ID4g IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiAgCXUz MiBjcmMzMiA9IDA7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gIAlkcm1fZm9yX2VhY2hfcGxh bmUocGxhbmUsICZ2ZGV2LT5kcm0pIHsKPiA+ID4gPiA+ID4gQEAgLTU4LDE0ICsxNTksMTQgQEAg dm9pZCB2a21zX2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+ ID4gPiA+ICAJCWlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZjb3VudCgmY3JjX2RhdGEtPmZi KSA9PSAwKQo+ID4gPiA+ID4gPiAgCQkJY29udGludWU7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ ID4gLQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpIHsKPiA+ID4g PiA+ID4gKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gPiA+ ID4gPiA+ICAJCQlwcmltYXJ5X2NyYyA9IGNyY19kYXRhOwo+ID4gPiA+ID4gPiAtCQkJYnJlYWs7 Cj4gPiA+ID4gPiA+IC0JCX0KPiA+ID4gPiA+ID4gKwkJZWxzZQo+ID4gPiA+ID4gPiArCQkJY3Vy c29yX2NyYyA9IGNyY19kYXRhOwo+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gIAo+ID4gPiA+ ID4gPiAgCWlmIChwcmltYXJ5X2NyYykKPiA+ID4gPiA+ID4gLQkJY3JjMzIgPSBfdmttc19nZXRf Y3JjKHByaW1hcnlfY3JjKTsKPiA+ID4gPiA+ID4gKwkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHBy aW1hcnlfY3JjLCBjdXJzb3JfY3JjKTsKPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAgCWRybV9j cnRjX2FkZF9jcmNfZW50cnkoY3J0YywgdHJ1ZSwgY3J0Y19zdGF0ZS0+bl9mcmFtZSwgJmNyYzMy KTsKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ ID4gPiA+IGluZGV4IDM2ZTUyNGY3OTFmZS4uMTczODc1ZGMzNjFlIDEwMDY0NAo+ID4gPiA+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gPiA+ID4gQEAgLTI1LDggKzI1 LDExIEBAIHN0YXRpYyBjb25zdCB1MzIgdmttc19jdXJzb3JfZm9ybWF0c1tdID0gewo+ID4gPiA+ ID4gPiAgfTsKPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAgc3RydWN0IHZrbXNfY3JjX2RhdGEg ewo+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4gPiA+ID4gPiA+ICAJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciBmYjsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3Qgc3JjLCBk c3Q7Cj4gPiA+ID4gPiA+ICsJdW5zaWduZWQgaW50IG9mZnNldDsKPiA+ID4gPiA+ID4gKwl1bnNp Z25lZCBpbnQgcGl0Y2g7Cj4gPiA+ID4gPiA+ICsJdW5zaWduZWQgaW50IGNwcDsKPiA+ID4gPiA+ ID4gIH07Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gIC8qKgo+ID4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+ID4gPiA+IGluZGV4IDQyODI0N2Q0MDNkYy4uNzA0MTAw NzM5NmFlIDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21z X3BsYW5lLmMKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFu ZS5jCj4gPiA+ID4gPiA+IEBAIC04NSwxNiArODUsMjIgQEAgc3RhdGljIHZvaWQgdmttc19wbGFu ZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gPiAgCQkJ CSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gPiA+ID4gPiAgewo+ ID4gPiA+ID4gPiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3BsYW5lX3N0YXRlOwo+ ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5m YjsKPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGE7Cj4gPiA+ID4g PiA+ICAKPiA+ID4gPiA+ID4gLQlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0 YXRlLT5mYikKPiA+ID4gPiA+ID4gKwlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhZmIpCj4g PiA+ID4gPiA+ICAJCXJldHVybjsKPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAgCXZrbXNfcGxh bmVfc3RhdGUgPSB0b192a21zX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gIAljcmNfZGF0YSA9IHZrbXNfcGxhbmVfc3RhdGUtPmNyY19kYXRhOwo+ ID4gPiA+ID4gPiAgCW1lbWNweSgmY3JjX2RhdGEtPnNyYywgJnBsYW5lLT5zdGF0ZS0+c3JjLCBz aXplb2Yoc3RydWN0IGRybV9yZWN0KSk7Cj4gPiA+ID4gPiA+IC0JbWVtY3B5KCZjcmNfZGF0YS0+ ZmIsIHBsYW5lLT5zdGF0ZS0+ZmIsIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4g PiA+ID4gPiA+ICsJbWVtY3B5KCZjcmNfZGF0YS0+ZHN0LCAmcGxhbmUtPnN0YXRlLT5kc3QsIHNp emVvZihzdHJ1Y3QgZHJtX3JlY3QpKTsKPiA+ID4gPiA+ID4gKwltZW1jcHkoJmNyY19kYXRhLT5m YiwgZmIsIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+ID4gPiA+ICAJZHJt X2ZyYW1lYnVmZmVyX2dldCgmY3JjX2RhdGEtPmZiKTsKPiA+ID4gPiA+ID4gKwljcmNfZGF0YS0+ b2Zmc2V0ID0gZmItPm9mZnNldHNbMF07Cj4gPiA+ID4gPiA+ICsJY3JjX2RhdGEtPnBpdGNoID0g ZmItPnBpdGNoZXNbMF07Cj4gPiA+ID4gPiA+ICsJY3JjX2RhdGEtPmNwcCA9IGZiLT5mb3JtYXQt PmNwcFswXTsKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiAgc3RhdGlj IGludCB2a21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ ID4gPiA+ID4gLS0gCj4gPiA+ID4gPiA+IDIuMTcuMQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+IAo+ ID4gPiA+ID4gLS0gCj4gPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ID4gPiBTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNo Cj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4gRGFuaWVsIFZldHRlcgo+ID4gPiBTb2Z0d2FyZSBFbmdp bmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiAKPiAt LSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==