From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 2/5] drm/i915: add component support Date: Mon, 08 Dec 2014 22:23:20 +0200 Message-ID: <1418070200.23637.24.camel@ideak-mobl> References: <1418056929-7977-1-git-send-email-imre.deak@intel.com> <1418056929-7977-3-git-send-email-imre.deak@intel.com> <87388qkmmj.fsf@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <87388qkmmj.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: Takashi Iwai , intel-gfx@lists.freedesktop.org, alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org T24gTW9uLCAyMDE0LTEyLTA4IGF0IDIwOjQ0ICswMjAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiBP biBNb24sIDA4IERlYyAyMDE0LCBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+IHdyb3Rl Ogo+ID4gUmVnaXN0ZXIgYSBjb21wb25lbnQgbWFzdGVyIHRvIGJlIHVzZWQgdG8gaW50ZXJmYWNl IHdpdGggdGhlCj4gPiBzbmRfaGRhX2ludGVsIGRyaXZlci4gVGhpcyBpcyBtZWFudCB0byByZXBs YWNlIHRoZSBzYW1lIGludGVyZmFjZSB0aGF0Cj4gPiBpcyBjdXJyZW50bHkgYmFzZWQgb24gbW9k dWxlIHN5bWJvbCBsb29rdXAuCj4gCj4gSSB0aGluayBJJ2QgYWRkIGEgd2hvbGUgbmV3IGludGVs X2NvbXBvbmVudC5jIGZpbGUgZm9yIHRoaXMuCgpPay4KCj4gCj4gPgo+ID4gU2lnbmVkLW9mZi1i eTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICB8IDM4ICsr KysrKysrKysrKysrKysrKysrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygr KQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCj4g Pgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gPiBpbmRleCA4ODdkODhmLi42ZTBmM2JlIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ID4gQEAgLTM1LDYgKzM1LDggQEAKPiA+ ICAjaW5jbHVkZSA8ZHJtL2RybV9sZWdhY3kuaD4KPiA+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi Cj4gPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9jb21w b25lbnQuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfY29tcG9uZW50Lmg+Cj4gPiAgI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCj4gPiAgI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKPiA+ICAjaW5jbHVk ZSA8bGludXgvcGNpLmg+Cj4gPiBAQCAtNjAwLDYgKzYwMiw4MCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJ fQo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCBpOTE1X2NvbXBvbmVudF9nZXRfcG93ZXIo c3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQo ZGV2X3RvX2k5MTVfcHJpdihkZXYpLCBQT1dFUl9ET01BSU5fQVVESU8pOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdm9pZCBpOTE1X2NvbXBvbmVudF9wdXRfcG93ZXIoc3RydWN0IGRldmljZSAq ZGV2KQo+ID4gK3sKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3RvX2k5MTVfcHJp dihkZXYpLCBQT1dFUl9ET01BSU5fQVVESU8pOwo+ID4gK30KPiA+ICsKPiA+ICsvKiBHZXQgQ0RD TEsgaW4ga0h6ICAqLwo+ID4gK3N0YXRpYyBpbnQgaTkxNV9jb21wb25lbnRfZ2V0X2NkY2xrX2Zy ZXEoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2X3RvX2k5MTVfcHJpdihkZXYpOwo+ID4gKwlpbnQgcmV0Owo+ID4g Kwo+ID4gKwlpZiAoV0FSTl9PTl9PTkNFKCFIQVNfRERJKGRldl9wcml2KSkpCj4gPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiA+ICsKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9BVURJTyk7Cj4gPiArCXJldCA9IGludGVsX2RkaV9nZXRfY2RjbGtfZnJl cShkZXZfcHJpdik7Cj4gPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dF Ul9ET01BSU5fQVVESU8pOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgc3RydWN0IGk5MTVfY29tcG9uZW50X29wcyBjb21wb25lbnRfb3BzID0gewo+ID4g Kwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gPiArCS5nZXRfcG93ZXIJPSBpOTE1X2NvbXBvbmVu dF9nZXRfcG93ZXIsCj4gPiArCS5wdXRfcG93ZXIJPSBpOTE1X2NvbXBvbmVudF9wdXRfcG93ZXIs Cj4gPiArCS5nZXRfY2RjbGsJPSBpOTE1X2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcSwKPiAKPiBP a2F5LCBJJ20gdGhpbmtpbmcgb25lIHN0ZXAgYWhlYWQsIGJ1dCBJJ20gbm90IGZhbWlsaWFyIHdp dGggdGhlCj4gY29tcG9uZW50IGRyaXZlciBzdHVmZiB5ZXQuIENvdWxkIHdlIHVzZSB0aGUgc2Ft ZSBjb21wb25lbnQgbW9kZWwgZm9yCj4gY29tbXVuaWNhdGluZyB3aXRoLCBzYXksIHRoZSBwbWlj IGRyaXZlciBpbiB0aGUgZnV0dXJlPwoKQWZhaWNzLCB5ZXMuIEFuZCB0aGF0IHdvdWxkIGdpdmUg ZXZlbiBiZXR0ZXIganVzdGlmaWNhdGlvbiBmb3IgdXNpbmcgdGhlCmNvbXBvbmVudCBmdy4uCgo+ IFNob3VsZCB3ZSB1c2UgdGhlIHNhbWUgY29tcG9uZW50IG9wcywgb3IgYWRkIGFub3RoZXIgb25l PwoKSXQncyBwb3NzaWJsZSB0byByZWdpc3RlciB0aGUgc2FtZSBtYXN0ZXIgZGV2aWNlIG11bHRp cGxlIHRpbWVzIHdpdGgKZGlzdGluY3Qgb3BzLCBzbyBJIHRoaW5rIHRoYXQncyBhIGJldHRlciBz b2x1dGlvbiBpbiB0ZXJtcyBvZiBpbnRlcmZhY2UKaXNvbGF0aW9uLgoKPiBJZiB0aGUgc2FtZSwg dGhlbiB0aGV5J3JlIGFsbCBpbiB0aGUgc2FtZSAibmFtZXNwYWNlIiwgYW5kIEkgdGhpbmsgd2UK PiBzaG91bGQgdXNlIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIHRoYW4ganVzdCBnZXRfcG93ZXIg YW5kIHB1dF9wb3dlci4KCkkgY291bGQgZG8gdGhpcyBpbiBhbnkgY2FzZSBub3csIGZvciBleGFt cGxlIHJlbmFtaW5nIHRoZW0gdG8KZGlzcGxheV9wb3dlcl9nZXQvcHV0IGFuZCBkaXNwbGF5X2dl dF9jZGNsa19yYXRlLgoKPiAoVGhlIG1hc3Rlci9zbGF2ZSByZWxhdGlvbnNoaXAgbWF5IGJlIHRo ZSBvdGhlciB3YXkgcm91bmQgd2l0aCB0aGUgcG1pYwo+IGRyaXZlciBJIGd1ZXNzLgoKWWVzLCBh ZmFpY3MgdGhhdCB3b3JrcyB0b28uCgo+IEJ1dCBub25ldGhlbGVzcywgd2Ugc2hvdWxkIHRoaW5r IGFib3V0IHJldXNpbmcgdGhpcy4pCj4gCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGk5 MTVfY29tcG9uZW50X21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiAr CXJldHVybiBjb21wb25lbnRfYmluZF9hbGwoZGV2LCAmY29tcG9uZW50X29wcyk7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGk5MTVfY29tcG9uZW50X21hc3Rlcl91bmJpbmQoc3RydWN0 IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJcmV0dXJuIGNvbXBvbmVudF91bmJpbmRfYWxsKGRl diwgJmNvbXBvbmVudF9vcHMpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbXBvbmVudF9tYXN0ZXJfb3BzIGk5MTVfY29tcG9uZW50X21hc3Rlcl9vcHMgPSB7Cj4gPiAr CS5iaW5kCT0gaTkxNV9jb21wb25lbnRfbWFzdGVyX2JpbmQsCj4gPiArCS51bmJpbmQJPSBpOTE1 X2NvbXBvbmVudF9tYXN0ZXJfdW5iaW5kLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGludCBp OTE1X2NvbXBvbmVudF9tYXN0ZXJfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRh KQo+ID4gK3sKPiA+ICsJLyogc25kX2hkYV9pbnRlbCBpcyB0aGUgb25seSBzdXBwb3J0ZWQgY29t cG9uZW50ICovCj4gPiArCXJldHVybiAhc3RyY21wKGRldi0+ZHJpdmVyLT5uYW1lLCAic25kX2hk YV9pbnRlbCIpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpOTE1X2NvbXBvbmVudF9t YXN0ZXJfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2LT5kZXY7Cj4gPiArCXN0cnVjdCBj b21wb25lbnRfbWF0Y2ggKm1hdGNoID0gTlVMTDsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJ Y29tcG9uZW50X21hdGNoX2FkZChkZXYsICZtYXRjaCwgaTkxNV9jb21wb25lbnRfbWFzdGVyX21h dGNoLCBOVUxMKTsKPiA+ICsJcmV0ID0gY29tcG9uZW50X21hc3Rlcl9hZGRfd2l0aF9tYXRjaChk ZXYsICZpOTE1X2NvbXBvbmVudF9tYXN0ZXJfb3BzLAo+ID4gKwkJCQkJICAgICAgbWF0Y2gpOwo+ ID4gKwlpZiAocmV0IDwgMCkKPiA+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFkZCBjb21wb25l bnQgbWFzdGVyICglZClcbiIsIHJldCk7Cj4gPiArCS8qIGNvbnRpbnVlIHdpdGggcmVkdWNlZCBm dW5jdGlvbmFsaXR5ICovCj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGk5MTVfY29tcG9u ZW50X21hc3Rlcl9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ICt7Cj4gPiArCS8qIHRoZSBmb2xsb3dpbmcgaXMgb2sgdG8gY2FsbCBldmVuIGlmIGNvbXBvbmVu dF9tYXN0ZXJfYWRkIGZhaWxlZCAqLwo+ID4gKwljb21wb25lbnRfbWFzdGVyX2RlbChkZXZfcHJp di0+ZGV2LT5kZXYsICZpOTE1X2NvbXBvbmVudF9tYXN0ZXJfb3BzKTsKPiA+ICt9Cj4gPiArCj4g PiAgLyoqCj4gPiAgICogaTkxNV9kcml2ZXJfbG9hZCAtIHNldHVwIGNoaXAgYW5kIGNyZWF0ZSBh biBpbml0aWFsIGNvbmZpZwo+ID4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiA+IEBAIC04MzAsNiAr OTA2LDggQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgbG9uZyBmbGFncykKPiA+ICAKPiA+ICAJaW50ZWxfcnVudGltZV9wbV9lbmFibGUoZGV2 X3ByaXYpOwo+ID4gIAo+ID4gKwlpOTE1X2NvbXBvbmVudF9tYXN0ZXJfaW5pdChkZXZfcHJpdik7 Cj4gPiArCj4gPiAgCXJldHVybiAwOwo+ID4gIAo+ID4gIG91dF9wb3dlcl93ZWxsOgo+ID4gQEAg LTg3MCw2ICs5NDgsOCBAQCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiArCWk5MTVfY29tcG9uZW50X21hc3Rl cl9jbGVhbnVwKGRldl9wcml2KTsKPiA+ICsKPiA+ICAJcmV0ID0gaTkxNV9nZW1fc3VzcGVuZChk ZXYpOwo+ID4gIAlpZiAocmV0KSB7Cj4gPiAgCQlEUk1fRVJST1IoImZhaWxlZCB0byBpZGxlIGhh cmR3YXJlOiAlZFxuIiwgcmV0KTsKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2Nv bXBvbmVudC5oIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAuLjQ0NTQyYzIKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgKPiA+IEBAIC0wLDAgKzEsMzggQEAK PiA+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiA+ICsgKgo+ID4gKyAqIENvcHlyaWdodCAyMDE0IElu dGVsIEluYy4KPiA+ICsgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgo+ID4gKyAqCj4gPiArICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gPiArICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwo+ID4gKyAqIHdpdGhv dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwKPiA+ICsgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCj4gPiArICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCj4gPiArICogdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPiA+ICsg KiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucwo+ID4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVW RU5UIFNIQUxMCj4gPiArICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJ VFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4gKyAqIERBTUFHRVMgT1Ig T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP Ugo+ID4gKyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKPiA+ICsgKiBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+ID4gKwo+ ID4gKyNpZm5kZWYgX0k5MTVfQ09NUE9ORU5UX0hfCj4gPiArI2RlZmluZSBfSTkxNV9DT01QT05F TlRfSF8KPiA+ICsKPiA+ICtzdHJ1Y3QgaTkxNV9jb21wb25lbnRfb3BzIHsKPiA+ICsJc3RydWN0 IG1vZHVsZSAqb3duZXI7Cj4gPiArCXZvaWQgKCpnZXRfcG93ZXIpKHN0cnVjdCBkZXZpY2UgKik7 Cj4gPiArCXZvaWQgKCpwdXRfcG93ZXIpKHN0cnVjdCBkZXZpY2UgKik7Cj4gPiArCWludCAoKmdl dF9jZGNsaykoc3RydWN0IGRldmljZSAqKTsKPiA+ICt9Owo+ID4gKwo+ID4gKyNlbmRpZgkJCQkv KiBfSTkxNV9DT01QT05FTlRfSF8gKi8KPiA+IC0tIAo+ID4gMS44LjQKPiA+Cj4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==