From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH 11/22] drm/i915: Introduce a mutex for file_priv->context_idr Date: Mon, 18 Mar 2019 21:10:29 +0000 Message-ID: <155294342896.4168.216715991182100163@skylake-alporthouse-com> References: <20190318095204.9913-1-chris@chris-wilson.co.uk> <20190318095204.9913-11-chris@chris-wilson.co.uk> <155292692638.4168.18419482231981249177@skylake-alporthouse-com> <657ffbbf-57c0-77fb-368a-94aa94ba8a37@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F33C89852 for ; Mon, 18 Mar 2019 21:10:35 +0000 (UTC) In-Reply-To: <657ffbbf-57c0-77fb-368a-94aa94ba8a37@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxOS0wMy0xOCAxNjo0NTo0MSkKPiAKPiBPbiAxOC8w My8yMDE5IDE2OjM1LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiBRdW90aW5nIFR2cnRrbyBVcnN1 bGluICgyMDE5LTAzLTE4IDE2OjI4OjM1KQo+ID4+Cj4gPj4gT24gMTgvMDMvMjAxOSAwOTo1MSwg Q2hyaXMgV2lsc29uIHdyb3RlOgo+ID4+PiBEZWZpbmUgYSBtdXRleCBmb3IgdGhlIGV4Y2x1c2l2 ZSB1c2Ugb2YgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcGVyLWZpbGUKPiA+Pj4gY29udGV4dC1pZHIs IHRoYXQgd2FzIHByZXZpb3VzbHkgZ3VhcmRlZCBieSBzdHJ1Y3RfbXV0ZXguIFRoaXMgYWxsb3dz IHVzCj4gPj4+IHRvIHJlZHVjZSB0aGUgY292ZXJhZ2Ugb2Ygc3RydWN0X211dGV4LCB3aXRoIGEg dmlldyB0byByZW1vdmluZyB0aGUgbGFzdAo+ID4+PiBiaXRzIGNvb3JkaW5hdGluZyBHRU0gY29u dGV4dCBsYXRlci4gKEluIHRoZSBzaG9ydCB0ZXJtLCB3ZSBhdm9pZCB0YWtpbmcKPiA+Pj4gc3Ry dWN0X211dGV4IHdoaWxlIHVzaW5nIHRoZSBleHRlbmRlZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMs IHByZXZlbnRpbmcKPiA+Pj4gc29tZSBuYXN0eSByZWN1cnNpb24uKQo+ID4+Pgo+ID4+PiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+Pj4g Q2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gPj4+IC0tLQo+ ID4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMiArKwo+ ID4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCA0MyArKysr KysrKysrKy0tLS0tLS0tLS0tLS0tCj4gPj4+ICAgIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4+PiBpbmRleCA4NjA4MGE2ZTBmNDUuLjkwMzg5MzMzZGQ0NyAxMDA2NDQKPiA+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPj4+IEBAIC0yMTYsNyArMjE2LDkgQEAgc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSB7Cj4gPj4+ICAgICAqLwo+ID4+PiAgICAjZGVmaW5lIERSTV9J OTE1X1RIUk9UVExFX0pJRkZJRVMgbXNlY3NfdG9famlmZmllcygyMCkKPiA+Pj4gICAgICAgIH0g bW07Cj4gPj4+ICsKPiA+Pj4gICAgICAgIHN0cnVjdCBpZHIgY29udGV4dF9pZHI7Cj4gPj4+ICsg ICAgIHN0cnVjdCBtdXRleCBjb250ZXh0X2xvY2s7IC8qIGd1YXJkcyBjb250ZXh0X2lkciAqLwo+ ID4+Cj4gPj4gY29udGV4dF9pZHJfbG9jayB0aGVuPwo+ID4+Cj4gPj4+ICAgIAo+ID4+PiAgICAg ICAgdW5zaWduZWQgaW50IGJzZF9lbmdpbmU7Cj4gPj4+ICAgIAo+ID4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gPj4+IGluZGV4IDVkZjNkNDIzZWM2Yy4uOTRjNDY2 ZDRiMjllIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jCj4gPj4+IEBAIC01NzksOSArNTc5LDcgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0c19maW5p KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ID4+PiAgICAKPiA+Pj4gICAgc3RhdGlj IGludCBjb250ZXh0X2lkcl9jbGVhbnVwKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSkKPiA+ Pj4gICAgewo+ID4+PiAtICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gcDsKPiA+ Pj4gLQo+ID4+PiAtICAgICBjb250ZXh0X2Nsb3NlKGN0eCk7Cj4gPj4+ICsgICAgIGNvbnRleHRf Y2xvc2UocCk7Cj4gPj4+ICAgICAgICByZXR1cm4gMDsKPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+ Pj4gQEAgLTU5Niw4ICs1OTQsMTAgQEAgc3RhdGljIGludCBnZW1fY29udGV4dF9yZWdpc3Rlcihz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ID4+PiAgICAgICAgICAgICAgICBjdHgtPnBw Z3R0LT52bS5maWxlID0gZnByaXY7Cj4gPj4+ICAgIAo+ID4+PiAgICAgICAgLyogQW5kIChuZWFy bHkpIGZpbmFsbHkgZXhwb3NlIG91cnNlbHZlcyB0byB1c2Vyc3BhY2UgdmlhIHRoZSBpZHIgKi8K PiA+Pj4gKyAgICAgbXV0ZXhfbG9jaygmZnByaXYtPmNvbnRleHRfbG9jayk7Cj4gPj4+ICAgICAg ICByZXQgPSBpZHJfYWxsb2MoJmZwcml2LT5jb250ZXh0X2lkciwgY3R4LAo+ID4+PiAgICAgICAg ICAgICAgICAgICAgICAgIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUsIDAsIEdGUF9LRVJORUwpOwo+ ID4+PiArICAgICBtdXRleF91bmxvY2soJmZwcml2LT5jb250ZXh0X2xvY2spOwo+ID4+PiAgICAg ICAgaWYgKHJldCA8IDApCj4gPj4+ICAgICAgICAgICAgICAgIGdvdG8gZXJyX3BpZDsKPiA+Pj4g ICAgCj4gPj4+IEBAIC02MTYsNyArNjE2LDkgQEAgc3RhdGljIGludCBnZW1fY29udGV4dF9yZWdp c3RlcihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ID4+PiAgICAgICAgcmV0dXJuIDA7 Cj4gPj4+ICAgIAo+ID4+PiAgICBlcnJfaWRyOgo+ID4+PiArICAgICBtdXRleF9sb2NrKCZmcHJp di0+Y29udGV4dF9sb2NrKTsKPiA+Pj4gICAgICAgIGlkcl9yZW1vdmUoJmZwcml2LT5jb250ZXh0 X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7Cj4gPj4+ICsgICAgIG11dGV4X3VubG9jaygmZnByaXYt PmNvbnRleHRfbG9jayk7Cj4gPj4+ICAgICAgICBjdHgtPmZpbGVfcHJpdiA9IE5VTEw7Cj4gPj4+ ICAgIGVycl9waWQ6Cj4gPj4+ICAgICAgICBwdXRfcGlkKGN0eC0+cGlkKTsKPiA+Pj4gQEAgLTYz MiwxMCArNjM0LDExIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gPj4+ICAgICAgICBpbnQgZXJyOwo+ID4+PiAgICAKPiA+Pj4gICAg ICAgIGlkcl9pbml0KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKPiA+Pj4gKyAgICAgbXV0ZXhf aW5pdCgmZmlsZV9wcml2LT5jb250ZXh0X2xvY2spOwo+ID4+PiAgICAKPiA+Pj4gICAgICAgIG11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ID4+PiAtCj4gPj4+ICAgICAgICBj dHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1KTsKPiA+Pj4gKyAgICAgbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiA+Pj4gICAgICAgIGlmIChJU19FUlIoY3R4 KSkgewo+ID4+PiAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGN0eCk7Cj4gPj4+ICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwo+ID4+PiBAQCAtNjQ4LDE0ICs2NTEsMTQgQEAgaW50IGk5MTVf Z2VtX2NvbnRleHRfb3BlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiA+Pj4gICAg ICAgIEdFTV9CVUdfT04oY3R4LT51c2VyX2hhbmRsZSAhPSBERUZBVUxUX0NPTlRFWFRfSEFORExF KTsKPiA+Pj4gICAgICAgIEdFTV9CVUdfT04oaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4 KSk7Cj4gPj4+ICAgIAo+ID4+PiAtICAgICBtdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ID4+PiAtCj4gPj4+ICAgICAgICByZXR1cm4gMDsKPiA+Pj4gICAgCj4gPj4+ICAg IGVycl9jdHg6Cj4gPj4+ICsgICAgIG11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ID4+PiAgICAgICAgY29udGV4dF9jbG9zZShjdHgpOwo+ID4+PiAtZXJyOgo+ID4+PiAgICAg ICAgbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiA+Pj4gK2VycjoKPiA+ Pj4gKyAgICAgbXV0ZXhfZGVzdHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2xvY2spOwo+ID4+PiAg ICAgICAgaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwo+ID4+PiAgICAgICAg cmV0dXJuIFBUUl9FUlIoY3R4KTsKPiA+Pj4gICAgfQo+ID4+PiBAQCAtNjY4LDYgKzY3MSw3IEBA IHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gPj4+ ICAgIAo+ID4+PiAgICAgICAgaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyLCBj b250ZXh0X2lkcl9jbGVhbnVwLCBOVUxMKTsKPiA+Pj4gICAgICAgIGlkcl9kZXN0cm95KCZmaWxl X3ByaXYtPmNvbnRleHRfaWRyKTsKPiA+Pj4gKyAgICAgbXV0ZXhfZGVzdHJveSgmZmlsZV9wcml2 LT5jb250ZXh0X2xvY2spOwo+ID4+PiAgICB9Cj4gPj4+ICAgIAo+ID4+PiAgICBzdGF0aWMgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqCj4gPj4+IEBAIC04NTAsMjUgKzg1NCwyMiBAQCBpbnQgaTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+Pj4gICAgCj4gPj4+ICAgICAg ICBjdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1KTsKPiA+Pj4gLSAgICAgaWYgKElT X0VSUihjdHgpKSB7Cj4gPj4+IC0gICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjdHgpOwo+ID4+ PiAtICAgICAgICAgICAgIGdvdG8gZXJyX3VubG9jazsKPiA+Pj4gLSAgICAgfQo+ID4+PiArICAg ICBtdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+Pj4gKyAgICAgaWYgKElTX0VS UihjdHgpKQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGN0eCk7Cj4gPj4+ICAg IAo+ID4+PiAgICAgICAgcmV0ID0gZ2VtX2NvbnRleHRfcmVnaXN0ZXIoY3R4LCBmaWxlX3ByaXYp Owo+ID4+PiAgICAgICAgaWYgKHJldCkKPiA+Pj4gICAgICAgICAgICAgICAgZ290byBlcnJfY3R4 Owo+ID4+PiAgICAKPiA+Pj4gLSAgICAgbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gPj4+IC0KPiA+Pj4gICAgICAgIGFyZ3MtPmN0eF9pZCA9IGN0eC0+dXNlcl9oYW5kbGU7Cj4g Pj4+ICAgICAgICBEUk1fREVCVUcoIkhXIGNvbnRleHQgJWQgY3JlYXRlZFxuIiwgYXJncy0+Y3R4 X2lkKTsKPiA+Pj4gICAgCj4gPj4+ICAgICAgICByZXR1cm4gMDsKPiA+Pj4gICAgCj4gPj4+ICAg IGVycl9jdHg6Cj4gPj4+ICsgICAgIG11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+ Pj4gICAgICAgIGNvbnRleHRfY2xvc2UoY3R4KTsKPiA+Pj4gLWVycl91bmxvY2s6Cj4gPj4+ICAg ICAgICBtdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+Pj4gICAgICAgIHJldHVy biByZXQ7Cj4gPj4+ICAgIH0KPiA+Pj4gQEAgLTg3OSw3ICs4ODAsNiBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs Cj4gPj4+ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSAqYXJncyA9 IGRhdGE7Cj4gPj4+ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3By aXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiA+Pj4gICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHg7Cj4gPj4+IC0gICAgIGludCByZXQ7Cj4gPj4+ICAgIAo+ID4+PiAgICAgICAgaWYg KGFyZ3MtPnBhZCAhPSAwKQo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ Pj4gQEAgLTg4NywyMSArODg3LDE2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+Pj4gICAgICAgIGlmIChh cmdzLT5jdHhfaWQgPT0gREVGQVVMVF9DT05URVhUX0hBTkRMRSkKPiA+Pj4gICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9FTlQ7Cj4gPj4+ICAgIAo+ID4+PiAtICAgICBjdHggPSBpOTE1X2dlbV9j b250ZXh0X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Cj4gPj4+ICsgICAgIG11dGV4 X2xvY2soJmZpbGVfcHJpdi0+Y29udGV4dF9sb2NrKTsKPiA+Pj4gKyAgICAgY3R4ID0gaWRyX3Jl bW92ZSgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgYXJncy0+Y3R4X2lkKTsKPiA+Pj4gKyAgICAg bXV0ZXhfbG9jaygmZmlsZV9wcml2LT5jb250ZXh0X2xvY2spOwo+ID4+PiAgICAgICAgaWYgKCFj dHgpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwo+ID4+PiAgICAKPiA+Pj4g LSAgICAgcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gPj4+IC0gICAgIGlmIChyZXQpCj4gPj4+IC0gICAgICAgICAgICAgZ290byBvdXQ7Cj4gPj4+ IC0KPiA+Pj4gLSAgICAgaWRyX3JlbW92ZSgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY3R4LT51 c2VyX2hhbmRsZSk7Cj4gPj4+ICsgICAgIG11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiA+Pgo+ID4+IEknZCBrZWVwIHRoaXMgb25lIGludGVycnVwdGlibGUuIEhtIGJ1bW1lciwgdGhl cmUgd2FzIG1vcmUgb2YgdGhlbSBiZWZvcmUuLgo+ID4gCj4gPiBBdCB0aGlzIHBvaW50LCBpbnRl cnJ1cHQgaGFuZGxpbmcgYmVjb21lcyBwcm9ibGVtYXRpYywgYXMgd2UgaGF2ZSB0bwo+ID4gdGhl biByZS1pbnNlcnQgdGhlIGN0eF9pZCBpbnRvIHRoZSBpZHIgYW5kIHRoYXQgbWF5IGhhdmUgYWxy ZWFkeSBiZWVuCj4gPiBjbGFpbWVkIGVsc2V3aGVyZS4KPiAKPiBVZ2gsIGJhZC4uIENhbiB3ZSBo YXZlIHN0cnVjdF9tdXRleCBuZXN0IHVuZGVyIHRoZSBjb250ZXh0X2lkcl9sb2NrPwoKR2VuZXJh bCBydWxlIGlzIHRvIGtlZXAgc3RydWN0X211dGV4IHRoZSBvdXRlciBsb2NrLiBJZiB5b3UgdGFr ZQpzdHJ1Y3RfbXV0ZXggaW5zaWRlIGFub3RoZXIgbG9jaywgdGhhdCBsb2NrIHBpY2tzIHVwIGFs bCB0aGUKc3RydWN0X211dGV4IGJhZCBoYWJpdHMgZnJvbSBsb2NrZGVwLCBhbmQgeW91IHN1ZGRl bmx5IGZpbmQgeW91cnNlbGYgaW4KYSBtaWdodHkgd29ybGQgb2YgcGFpbi4KClJlbW92aW5nIHRo ZSByZXF1aXJlbWVudCBvZiBzdHJ1Y3RfbXV0ZXggYXJvdW5kIGNsb3NlIGlzbid0IGEgaHVnZQpw cm9ibGVtIGFmdGVyCmh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yOTE5 NDcvP3Nlcmllcz01Nzk0MiZyZXY9MiBhcwp0aGF0IGdpdmVzIHVzIHRoZSBsb2NraW5nIHdlIG5l ZWQgdG8gc2VyaWFsaXNlIHRoZSBsdXQgaGFuZGxlcyAoaW4gZmFjdAppdCB0aGUgc3RydWN0X211 dGV4IHJlcXVpcmVtZW50IGRyb3BzIG91dCBvZiB0aGF0IHBhdGNoLCBhbmQgd2UgY2FuCnNpbXBs eSBkbyBpdCB0aGVuLikKLUNocmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeA==