From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/4] i915: add support for GPU side of MST audio Date: Wed, 17 Jun 2015 13:27:23 +0200 Message-ID: <20150617112723.GF23637@phenom.ffwll.local> References: <1434513719-3580-1-git-send-email-airlied@gmail.com> <1434513719-3580-3-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F00D6E095 for ; Wed, 17 Jun 2015 04:24:39 -0700 (PDT) Received: by wibdq8 with SMTP id dq8so49749419wib.1 for ; Wed, 17 Jun 2015 04:24:38 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1434513719-3580-3-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Airlie Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMTcsIDIwMTUgYXQgMDI6MDE6NTdQTSArMTAwMCwgRGF2ZSBBaXJsaWUgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAKPiBUaGlzIGp1 c3QgYWRkcyBlbmFibGVzIGZvciB0aGUgY29kZWNzIGFuZCBkZWJ1Z2ZzCj4gc3VwcG9ydCBmb3Ig bXN0IGNvbm5lY3RvcnMgdG8gcHJpbnQgdGhlIGF1ZGlvIGluZm8uCj4gCj4gVGhpcyByZWxpZXMg b24gcGF0Y2hlcyB0byB0aGUgYXVkaW8gY29kZSB0byBkbyBhbnl0aGluZwo+IG1vcmUgdXNlZnVs Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CgpN aWdodCBiZSB0aW1lIHRvIHJlZmFjdG9yIGFsbCB0aGUgZGRpIGNvZGUgYSBiaXQgc2luY2UgdGhp cyBkdXBsaWNhdGVzIGEKbG90LiBPdG9oIHRoZSBjb2RlIGluIGludGVsX2RkaS5jIGlzIGZ1bGwg b2YgcHJlc29uYWxpdHkgY29uZnVzaW9uCmlmLWxhZGRlcnMgd2hpY2ggYWluJ3QgcHJldHR5IGVp dGhlci4KCkFueXdheSB0aGlzIGR1cGxpY2F0ZXMgd2hhdCB3ZSBkbyBmb3Igc3N0IGF1ZGlvLCBh bmQgSSBndWVzcyB0aGF0IG1ha2VzCnNlbnNlLiBBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4gc2luY2UgSSBsYWNrIGNsdWUKZm9yIGEgcmVhbCByLWIuCgpG ZWVsIGZyZWUgdG8gbWVyZ2UgdGhyb3VnaCB3aGF0ZXZlciB0cmVlIHlvdSB3YW50IGlmIHRoZSBh dWRpbyBmb2xrcyBrZWVwCm9uIGJlaW5nIG9mZmxpbmUuIEJ1dCBwZXJoYXBzIGZpcnN0IHJlc2Vu ZCBhZ2FpbiB3aXRoIGFsc2EtZGV2ZWwgb24gY2MuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgMTMgKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICB8ICA3ICsrKystLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCj4g IDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IGRjNTVjNTEuLmExMDlhMjEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNTc3LDYgKzI1NzcsMTcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIAkJaW50 ZWxfcGFuZWxfaW5mbyhtLCAmaW50ZWxfY29ubmVjdG9yLT5wYW5lbCk7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB2b2lkIGludGVsX2RwX21zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiArCQkJICBz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxfY29ubmVjdG9yLT5lbmNvZGVyOwo+ ICsJc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyICppbnRlbF9tc3QgPSBlbmNfdG9fbXN0KCZp bnRlbF9lbmNvZGVyLT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5Owo+ICsJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4gKwo+ICsJc2VxX3ByaW50ZihtLCAiXHRhdWRp byBzdXBwb3J0OiAlc1xuIiwgZHJtX2RwX21zdF9wb3J0X2hhc19hdWRpbygmaW50ZWxfZHAtPm1z dF9tZ3IsIGludGVsX2Nvbm5lY3Rvci0+cG9ydCkgPyAieWVzIiA6ICJubyIpOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2luZm8oc3RydWN0IHNlcV9maWxlICptLAo+ICAJCQkg ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICB7Cj4gQEAgLTI2 MjEsNiArMjYzMiw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwKPiAgCQkJaW50ZWxfaGRtaV9pbmZvKG0sIGludGVsX2Nvbm5lY3Rvcik7Cj4g IAkJZWxzZSBpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfTFZEUykKPiAg CQkJaW50ZWxfbHZkc19pbmZvKG0sIGludGVsX2Nvbm5lY3Rvcik7Cj4gKwkJZWxzZSBpZiAoaW50 ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUKQo+ICsJCQlpbnRlbF9kcF9t c3RfaW5mbyhtLCBpbnRlbF9jb25uZWN0b3IpOwo+ICAJfQo+ICAKPiAgCXNlcV9wcmludGYobSwg Ilx0bW9kZXM6XG4iKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiBpbmRleCAyMzk2 Y2M3Li43N2QyYTAxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gQEAgLTE5 MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCXRtcCB8PSBBVURfQ09ORklHX05fUFJPR19FTkFC TEU7Cj4gIAl0bXAgJj0gfkFVRF9DT05GSUdfVVBQRVJfTl9NQVNLOwo+ICAJdG1wICY9IH5BVURf Q09ORklHX0xPV0VSX05fTUFTSzsKPiAtCWlmIChpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2Ny dGMsIElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkpCj4gKwlpZiAoaW50ZWxfcGlwZV9oYXNfdHlw ZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpIHx8IGludGVsX3BpcGVfaGFz X3R5cGUoaW50ZWxfY3J0YywgSU5URUxfT1VUUFVUX0RQX01TVCkpCj4gIAkJdG1wIHw9IEFVRF9D T05GSUdfTl9WQUxVRV9JTkRFWDsKPiAgCUk5MTVfV1JJVEUoSFNXX0FVRF9DRkcocGlwZSksIHRt cCk7Cj4gIAo+IEBAIC0yMzEsNiArMjMxLDcgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVj X2VuYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJLyogUmVzZXQgRUxE IHdyaXRlIGFkZHJlc3MgKi8KPiAgCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0RJUF9FTERfQ1RS TChwaXBlKSk7Cj4gIAl0bXAgJj0gfklCWF9FTERfQUREUkVTU19NQVNLOwo+ICsJdG1wIHw9ICgo cGlwZSArIDEpIDw8IDI5KTsKPiAgCUk5MTVfV1JJVEUoSFNXX0FVRF9ESVBfRUxEX0NUUkwocGlw ZSksIHRtcCk7Cj4gIAo+ICAJLyogVXAgdG8gODQgYnl0ZXMgb2YgaHcgRUxEIGJ1ZmZlciAqLwo+ IEBAIC0yNDgsNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJdG1wICY9IH5BVURfQ09ORklHX05f VkFMVUVfSU5ERVg7Cj4gIAl0bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsKPiAgCXRt cCAmPSB+QVVEX0NPTkZJR19QSVhFTF9DTE9DS19IRE1JX01BU0s7Cj4gLQlpZiAoaW50ZWxfcGlw ZV9oYXNfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpKQo+ICsJaWYg KGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxfY3J0YywgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JU KSB8fCBpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElOVEVMX09VVFBVVF9EUF9NU1Qp KQo+ICAJCXRtcCB8PSBBVURfQ09ORklHX05fVkFMVUVfSU5ERVg7Cj4gIAllbHNlCj4gIAkJdG1w IHw9IGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKG1vZGUpOwo+IEBAIC00MTcsNyArNDE4 LDcgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmludGVsX2VuY29kZXIpCj4gIAo+ICAJLyogRUxEIENvbm5fVHlwZSAqLwo+ICAJY29ubmVjdG9y LT5lbGRbNV0gJj0gfigzIDw8IDIpOwo+IC0JaWYgKGludGVsX3BpcGVfaGFzX3R5cGUoY3J0Yywg SU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUKSkKPiArCWlmIChpbnRlbF9waXBlX2hhc190eXBlKGNy dGMsIElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkgfHwgaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRj LCBJTlRFTF9PVVRQVVRfRFBfTVNUKSkKPiAgCQljb25uZWN0b3ItPmVsZFs1XSB8PSAoMSA8PCAy KTsKPiAgCj4gIAljb25uZWN0b3ItPmVsZFs2XSA9IGRybV9hdl9zeW5jX2RlbGF5KGNvbm5lY3Rv ciwgbW9kZSkgLyAyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gaW5kZXggNWNi NDc0OC4uOGEzOWU5OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gQEAg LTg1LDYgKzg1LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAg Cj4gKwlpZiAoZHJtX2RwX21zdF9wb3J0X2hhc19hdWRpbygmaW50ZWxfZHAtPm1zdF9tZ3IsIGZv dW5kLT5wb3J0KSkKPiArCQlwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvID0gdHJ1ZTsKPiAgCW1zdF9w Ym4gPSBkcm1fZHBfY2FsY19wYm5fbW9kZShhZGp1c3RlZF9tb2RlLT5jbG9jaywgYnBwKTsKPiAg Cj4gIAlwaXBlX2NvbmZpZy0+cGJuID0gbXN0X3BibjsKPiBAQCAtMTA1LDYgKzEwNywxMSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9tc3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPiAgCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0ID0gZW5jX3Rv X21zdCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGludGVsX21zdC0+cHJpbWFyeTsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuY29kZXItPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXIt PmJhc2UuY3J0YzsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiArCj4gIAlpbnQgcmV0Owo+ICAKPiAgCURSTV9ERUJVR19LTVMoIiVkXG4i LCBpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcyk7Cj4gQEAgLTExNSw2ICsxMjIsMTAgQEAgc3Rh dGljIHZvaWQgaW50ZWxfbXN0X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIAlpZiAocmV0KSB7Cj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gdXBkYXRlIHBheWxv YWQgJWRcbiIsIHJldCk7Cj4gIAl9Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfYXVk aW8pIHsKPiArCQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGVuY29kZXIpOwo+ICsJCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fQVVESU8pOwo+ICsJfQo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9tc3RfcG9zdF9kaXNhYmxlX2RwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IEBAIC0yMDksNiArMjIwLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfbXN0X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMp Owo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiAgCWludCByZXQ7 Cj4gIAo+IEBAIC0yMjEsNiArMjMzLDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9lbmFibGVf ZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlyZXQgPSBkcm1fZHBfY2hlY2tf YWN0X3N0YXR1cygmaW50ZWxfZHAtPm1zdF9tZ3IpOwo+ICAKPiAgCXJldCA9IGRybV9kcF91cGRh dGVfcGF5bG9hZF9wYXJ0MigmaW50ZWxfZHAtPm1zdF9tZ3IpOwo+ICsKPiArCWlmIChjcnRjLT5j b25maWctPmhhc19hdWRpbykgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkVuYWJsaW5nIERQIGF1 ZGlvIG9uIHBpcGUgJWNcbiIsCj4gKwkJCQkgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsKPiArCQlp bnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0FVRElPKTsKPiAr CQlpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoZW5jb2Rlcik7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0 YXRpYyBib29sIGludGVsX2RwX21zdF9lbmNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+IEBAIC0yNDYsNiArMjY1LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rw X21zdF9lbmNfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4g IAlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIgPSB0cnVlOwo+ICAKPiArICAgICAgIGlmIChp bnRlbF9kaXNwbGF5X3Bvd2VyX2lzX2VuYWJsZWQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVURJ TykpIHsKPiArICAgICAgICAgICAgICAgIHRlbXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9QSU5fRUxE X0NQX1ZMRCk7Cj4gKyAgICAgICAgICAgICAgICBpZiAodGVtcCAmIEFVRElPX09VVFBVVF9FTkFC TEUoY3J0Yy0+cGlwZSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVfY29uZmlnLT5o YXNfYXVkaW8gPSB0cnVlOwo+ICsgICAgICAgIH0KPiArCj4gIAl0ZW1wID0gSTkxNV9SRUFEKFRS QU5TX0RESV9GVU5DX0NUTChjcHVfdHJhbnNjb2RlcikpOwo+ICAJaWYgKHRlbXAgJiBUUkFOU19E RElfUEhTWU5DKQo+ICAJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfUEhTWU5DOwo+IC0tIAo+IDIu NC4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=