From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH v3 2/4] drm/i915: Add reverse mapping between port and intel_encoder Date: Mon, 07 Dec 2015 10:41:51 +0100 Message-ID: References: <1449249169-20602-1-git-send-email-tiwai@suse.de> <1449249169-20602-3-git-send-email-tiwai@suse.de> <20151207084445.GB10243@phenom.ffwll.local> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 064416E22E for ; Mon, 7 Dec 2015 01:41:55 -0800 (PST) In-Reply-To: <20151207084445.GB10243@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: alsa-devel@alsa-project.org, Mengdong Lin , Vinod Koul , intel-gfx@lists.freedesktop.org, Daniel Vetter , David Henningsson List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwNyBEZWMgMjAxNSAwOTo0NDo0NSArMDEwMCwKRGFuaWVsIFZldHRlciB3cm90ZToK PiAKPiBPbiBGcmksIERlYyAwNCwgMjAxNSBhdCAwNjoxMjo0N1BNICswMTAwLCBUYWthc2hpIEl3 YWkgd3JvdGU6Cj4gPiBUaGlzIHBhdGNoIGFkZHMgYSByZXZlcnNlIG1hcHBpbmcgZnJvbSBhIGRp Z2l0YWwgcG9ydCBudW1iZXIgdG8KPiA+IGludGVsX2VuY29kZXIgb2JqZWN0IGNvbnRhaW5pbmcg dGhlIGNvcnJlc3BvbmRpbmcgaW50ZWxfZGlnaXRhbF9wb3J0Lgo+ID4gSXQgc2ltcGxpZmllcyB0 aGUgcXVlcnkgb2YgdGhlIGVuY29kZXIgYSBsb3QuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFRh a2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KPiA+IC0tLQo+ID4gdjItPnYzOgo+ID4gKiBTcXVh c2hlZCBwcmV2aW91c2x5IHR3byBjbGVhbnVwIHBhdGNoZXMgdG8gYSBzaW5nbGUgcGF0Y2gKPiA+ IAo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgfCAgMiArKwo+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAzOSArKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j ICAgfCAgMSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICB8ICAxICsK PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgIHwgIDIgKysKPiA+ICA1IGZp bGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDE1YzZkYzBiNGYzNy4uOWRiYzE0M2NhYzI3 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTE5NDQsNiArMTk0NCw4 IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiA+ICAJLyogcGVyZm9ybSBQSFkgc3RhdGUg c2FuaXR5IGNoZWNrcz8gKi8KPiA+ICAJYm9vbCBjaHZfcGh5X2Fzc2VydFsyXTsKPiA+ICAKPiA+ ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmRpZ19wb3J0X21hcFtJOTE1X01BWF9QT1JUU107Cj4g PiArCj4gPiAgCS8qCj4gPiAgCSAqIE5PVEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24s IGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZb3VyIHBhdGNoCj4gPiAgCSAqIHdpbGwgYmUgcmVqZWN0 ZWQuIEluc3RlYWQgbG9vayBmb3IgYSBiZXR0ZXIgcGxhY2UuCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F1ZGlvLmMKPiA+IGluZGV4IGVlYWM5Zjc2MzExMC4uMDVmMDhiNDQ1ZGQ2IDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gQEAgLTYzNiwxMyArNjM2LDExIEBA IHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBk ZXZpY2UgKmRldiwKPiA+ICAJCQkJCQlpbnQgcG9ydCwgaW50IHJhdGUpCj4gPiAgewo+ID4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOwo+ID4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRldl9wcml2LT5kZXY7Cj4gPiAgCXN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydDsKPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4g PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRp b19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlvX2NvbXBvbmVudDsKPiA+IC0JZW51 bSBwaXBlIHBpcGUgPSAtMTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7Cj4g PiAgCXUzMiB0bXA7Cj4gPiAgCWludCBuOwo+ID4gIAo+ID4gQEAgLTY1NSwyMSArNjUzLDEyIEBA IHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBk ZXZpY2UgKmRldiwKPiA+ICAKPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsK PiA+ICAJLyogMS4gZ2V0IHRoZSBwaXBlICovCj4gPiAtCWZvcl9lYWNoX2ludGVsX2VuY29kZXIo ZHJtX2RldiwgaW50ZWxfZW5jb2Rlcikgewo+ID4gLQkJaWYgKGludGVsX2VuY29kZXItPnR5cGUg IT0gSU5URUxfT1VUUFVUX0hETUkpCj4gPiAtCQkJY29udGludWU7Cj4gPiAtCQlpbnRlbF9kaWdf cG9ydCA9IGVuY190b19kaWdfcG9ydCgmaW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4gPiAtCQlpZiAo cG9ydCA9PSBpbnRlbF9kaWdfcG9ydC0+cG9ydCkgewo+ID4gLQkJCWNydGMgPSB0b19pbnRlbF9j cnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7Cj4gPiAtCQkJaWYgKCFjcnRjKSB7Cj4gPiAt CQkJCURSTV9ERUJVR19LTVMoIiVzOiBjcnRjIGlzIE5VTExcbiIsIF9fZnVuY19fKTsKPiA+IC0J CQkJY29udGludWU7Cj4gPiAtCQkJfQo+ID4gLQkJCXBpcGUgPSBjcnRjLT5waXBlOwo+ID4gLQkJ CWJyZWFrOwo+ID4gLQkJfQo+ID4gKwlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0 X21hcFtwb3J0XTsKPiA+ICsJaWYgKGludGVsX2VuY29kZXIgJiYgaW50ZWxfZW5jb2Rlci0+dHlw ZSA9PSBJTlRFTF9PVVRQVVRfSERNSSAmJgo+IAo+IElzIGl0IHJlYWxseSBsZWdpdCB0byBjYWxs IHRoZXNlIGZ1bmN0aW9ucyB3aXRoIGEgcG9ydCBmb3Igd2hpY2ggd2UgZG9uJ3QKPiBoYXZlIGFu IGVuY29kZXI/IFdBUk5fT04oIWVuY29kZXIpIGhlcmUgYW5kIGluIHRoZSBvdGhlciBwbGFjZXM/ CgpDdXJyZW50bHkgdGhlcmUgYXJlIGxpdHRsZSBjaGVja3MgaW4gdGhlIGNhbGxlciBzaWRlLiAg U28gSSBndWVzcyBvbmx5CmEgZmV3IG9mIHRoZW0gZGVzZXJ2ZSBXQVJOX09OKCkuICBUaGUgZW1w dHkgZW5jb2RlciBhbmQgZW1wdHkgY3J0Ywp3b3VsZCBiZSBnb29kIHdpdGggV0FSTl9PTigpLCBh cyB0aGUgcG9ydCBpcyBzdXBwb3NlZCB0byBiZSByZWFsLiAKVGhlIEhETUkgY2hlY2sgbWF5IGJl IHNpbGVudCBhcyBpcy4KCj4gT3Igd291bGQKPiB0aGF0IHJlcXVpcmUgc29tZSBmdW5jdGlvbiBm b3Igc25kLWhkYSB0byBpbnF1aXJlIGk5MTUgd2hpY2ggcG9ydHMgYXJlCj4gZW5hYmxlZCAod2hp Y2ggd2UgcHJvYmFibHkgc2hvdWxkIGhhdmUgdG8gYXZvaWQgcmVnaXN0ZXJpbmcgYXVkaW8gcG9y dHMKPiB0aGF0IGFyZW4ndCB0aGVyZSk/Cj4gCj4gT3RoZXJ3aXNlIGxndG0uCgpPSywgSSdsbCBh ZGQgV0FSTl9PTigpIHRvIHRoZW0uCgoKdGhhbmtzLAoKVGFrYXNoaQoKPiAtRGFuaWVsCj4gCj4g PiArCSAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpIHsKPiA+ICsJCWNydGMgPSB0b19pbnRl bF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7Cj4gPiArCQlwaXBlID0gY3J0Yy0+cGlw ZTsKPiA+ICAJfQo+ID4gLQo+ID4gIAlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpIHsKPiA+ICAJ CURSTV9ERUJVR19LTVMoIm5vIHBpcGUgZm9yIHRoZSBwb3J0ICVjXG4iLCBwb3J0X25hbWUocG9y dCkpOwo+ID4gIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gQEAgLTcx NiwyNyArNzA1LDIxIEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2VsZChz dHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwb3J0LAo+ID4gIAkJCQkJdW5zaWduZWQgY2hhciAqYnVm LCBpbnQgbWF4X2J5dGVzKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2X3RvX2k5MTUoZGV2KTsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRybV9k ZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlcjsKPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7Cj4g PiAgCWNvbnN0IHU4ICplbGQ7Cj4gPiAgCWludCByZXQgPSAtRUlOVkFMOwo+ID4gIAo+ID4gIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gLQlmb3JfZWFjaF9pbnRlbF9lbmNv ZGVyKGRybV9kZXYsIGludGVsX2VuY29kZXIpIHsKPiA+IC0JCWlmIChpbnRlbF9lbmNvZGVyLT50 eXBlICE9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCAmJgo+ID4gLQkJICAgIGludGVsX2VuY29k ZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpCj4gPiAtCQkJY29udGludWU7Cj4gPiArCWlu dGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOwo+ID4gKwlpZiAoaW50 ZWxfZW5jb2Rlcikgewo+ID4gKwkJcmV0ID0gMDsKPiA+ICAJCWludGVsX2RpZ19wb3J0ID0gZW5j X3RvX2RpZ19wb3J0KCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+IC0JCWlmIChwb3J0ID09IGlu dGVsX2RpZ19wb3J0LT5wb3J0KSB7Cj4gPiAtCQkJcmV0ID0gMDsKPiA+IC0JCQkqZW5hYmxlZCA9 IGludGVsX2RpZ19wb3J0LT5hdWRpb19jb25uZWN0b3IgIT0gTlVMTDsKPiA+IC0JCQlpZiAoISpl bmFibGVkKQo+ID4gLQkJCQlicmVhazsKPiA+ICsJCSplbmFibGVkID0gaW50ZWxfZGlnX3BvcnQt PmF1ZGlvX2Nvbm5lY3RvciAhPSBOVUxMOwo+ID4gKwkJaWYgKCplbmFibGVkKSB7Cj4gPiAgCQkJ ZWxkID0gaW50ZWxfZGlnX3BvcnQtPmF1ZGlvX2Nvbm5lY3Rvci0+ZWxkOwo+ID4gIAkJCXJldCA9 IGRybV9lbGRfc2l6ZShlbGQpOwo+ID4gIAkJCW1lbWNweShidWYsIGVsZCwgbWluKG1heF9ieXRl cywgcmV0KSk7Cj4gPiAtCQkJYnJlYWs7Cj4gPiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCA3NmNlN2MyOTYwYjYuLjU5ZGViMGQ4NTUzMyAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gQEAgLTMyOTUsNiArMzI5NSw3 IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0 IHBvcnQpCj4gPiAgCWludGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kZGlfZ2V0X2Nv bmZpZzsKPiA+ICAKPiA+ICAJaW50ZWxfZGlnX3BvcnQtPnBvcnQgPSBwb3J0Owo+ID4gKwlkZXZf cHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gaW50ZWxfZW5jb2RlcjsKPiA+ICAJaW50ZWxfZGln X3BvcnQtPnNhdmVkX3BvcnRfYml0cyA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwb3J0KSkgJgo+ ID4gIAkJCQkJICAoRERJX0JVRl9QT1JUX1JFVkVSU0FMIHwKPiA+ICAJCQkJCSAgIERESV9BXzRf TEFORVMpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCBiZWM0NDNhNjI5ZGEu LjE0NmY1ZGEzYWNiMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IEBAIC02 MDAyLDYgKzYwMDIsNyBAQCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g PiAgCX0KPiA+ICAKPiA+ICAJaW50ZWxfZGlnX3BvcnQtPnBvcnQgPSBwb3J0Owo+ID4gKwlkZXZf cHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gaW50ZWxfZW5jb2RlcjsKPiA+ICAJaW50ZWxfZGln X3BvcnQtPmRwLm91dHB1dF9yZWcgPSBvdXRwdXRfcmVnOwo+ID4gIAo+ID4gIAlpbnRlbF9lbmNv ZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOwo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkbWkuYwo+ID4gaW5kZXggYmRkNDYyZTdjNjkwLi5jMDQ2MDE3YmU3ODYgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gQEAgLTIxNDgsNiArMjE0OCw3IEBAIHZv aWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKPiA+ICB2b2lkIGludGVsX2hkbWlfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gIAkJICAgICBpOTE1X3JlZ190IGhkbWlfcmVnLCBlbnVtIHBvcnQgcG9ydCkK PiA+ICB7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 Owo+ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKPiA+ICAJc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yOwo+ID4gQEAgLTIyMTYsNiArMjIxNyw3 IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQlp bnRlbF9lbmNvZGVyLT5jbG9uZWFibGUgfD0gMSA8PCBJTlRFTF9PVVRQVVRfSERNSTsKPiA+ICAK PiA+ICAJaW50ZWxfZGlnX3BvcnQtPnBvcnQgPSBwb3J0Owo+ID4gKwlkZXZfcHJpdi0+ZGlnX3Bv cnRfbWFwW3BvcnRdID0gaW50ZWxfZW5jb2RlcjsKPiA+ICAJaW50ZWxfZGlnX3BvcnQtPmhkbWku aGRtaV9yZWcgPSBoZG1pX3JlZzsKPiA+ICAJaW50ZWxfZGlnX3BvcnQtPmRwLm91dHB1dF9yZWcg PSBJTlZBTElEX01NSU9fUkVHOwo+ID4gIAo+ID4gLS0gCj4gPiAyLjYuMwo+ID4gCj4gPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+ IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=