From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/3] drm/i915/guc: keep GuC objects mapped in kernel Date: Fri, 15 Apr 2016 12:42:39 +0100 Message-ID: <5710D3AF.3000004@linux.intel.com> References: <1460654342-6071-1-git-send-email-david.s.gordon@intel.com> <5710BC9E.9050202@linux.intel.com> <5710CC91.2030109@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id EE9776EC1D for ; Fri, 15 Apr 2016 11:42:40 +0000 (UTC) In-Reply-To: <5710CC91.2030109@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE1LzA0LzE2IDEyOjEyLCBEYXZlIEdvcmRvbiB3cm90ZToKPiBPbiAxNS8wNC8yMDE2IDEx OjA0LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4KPj4gT24gMTQvMDQvMTYgMTg6MTksIERhdmUg R29yZG9uIHdyb3RlOgo+Pj4gV2l0aCB0aGUgbmV3IGk5MTVfZ2VtX29ial9waW5fbWFwKCkgaW50 ZXJmYWNlLCBpdCBtYWtlcyBzZW5zZSB0byBrZWVwCj4+PiBHdUMgb2JqZWN0cyAod2hpY2ggYXJl IGFsd2F5cyBwaW5uZWQgaW4gbWVtb3J5IGFuZCBpbiB0aGUgR0dUVCBhbnl3YXkpCj4+PiBtYXBw ZWQgaW50byBrZXJuZWwgYWRkcmVzcyBzcGFjZSwgcmF0aGVyIHRoYW4gbWFwcGluZyBhbmQgdW5t YXBwaW5nIHRoZW0KPj4+IG9uIGVhY2ggYWNjZXNzLgo+Pj4KPj4+IFRoaXMgcHJlbGltaW5hcnkg cGF0Y2ggc2V0cyB1cCB0aGUgcGluLWFuZC1tYXAgZm9yIGFsbCBHdUMtc3BlY2lmaWMKPj4+IG9i amVjdHMsIGFuZCB1cGRhdGVzIHRoZSB2YXJpb3VzIHNldHVwL3NodXRkb3duIGZ1bmN0aW9ucyB0 byB1c2UgdGhlc2UKPj4+IGxvbmctdGVybSBtYXBwaW5ncyByYXRoZXIgdGhhbiBkb2luZyB0aGVp ciBvd24ga21hcF9hdG9taWMoKSBjYWxscy4KPj4+Cj4+PiBDYzogPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ Pj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4K Pj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMg fCAzNwo+Pj4gKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAxICsKPj4+ICAgMiBmaWxlcyBjaGFu Z2VkLCAxNCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+Pj4gaW5kZXggZGE4NmJkYi4u ZjgwZjU3NyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1 Ym1pc3Npb24uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4+PiBAQCAtMTc5LDE1ICsxNzksMTEgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfZG9v cmJlbGwoc3RydWN0IGludGVsX2d1Ywo+Pj4gKmd1YywKPj4+ICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQo+Pj4gICB7Cj4+PiAgICAgICBzdHJ1Y3Qg Z3VjX2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxsOwo+Pj4gLSAgICB2b2lkICpiYXNlOwo+Pj4KPj4+ IC0gICAgYmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjbGllbnQt PmNsaWVudF9vYmosCj4+PiAwKSk7Cj4+PiAtICAgIGRvb3JiZWxsID0gYmFzZSArIGNsaWVudC0+ ZG9vcmJlbGxfb2Zmc2V0Owo+Pj4gKyAgICBkb29yYmVsbCA9IGNsaWVudC0+Y2xpZW50X2Jhc2Ug KyBjbGllbnQtPmRvb3JiZWxsX29mZnNldDsKPj4+Cj4+PiAtICAgIGRvb3JiZWxsLT5kYl9zdGF0 dXMgPSAxOwo+Pj4gKyAgICBkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxMX0VOQUJM RUQ7Cj4+PiAgICAgICBkb29yYmVsbC0+Y29va2llID0gMDsKPj4+IC0KPj4+IC0gICAga3VubWFw X2F0b21pYyhiYXNlKTsKPj4+ICAgfQo+Pj4KPj4+ICAgc3RhdGljIGludCBndWNfcmluZ19kb29y YmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYykKPj4+IEBAIC0yNTYsMTYgKzI1MiwxMiBA QCBzdGF0aWMgdm9pZCBndWNfZGlzYWJsZV9kb29yYmVsbChzdHJ1Y3QKPj4+IGludGVsX2d1YyAq Z3VjLAo+Pj4gICB7Cj4+PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBndWNfdG9faTkxNShndWMpOwo+Pj4gICAgICAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpk b29yYmVsbDsKPj4+IC0gICAgdm9pZCAqYmFzZTsKPj4+ICAgICAgIGk5MTVfcmVnX3QgZHJicmVn ID0gR0VOOF9EUkJSRUdMKGNsaWVudC0+ZG9vcmJlbGxfaWQpOwo+Pj4gICAgICAgaW50IHZhbHVl Owo+Pj4KPj4+IC0gICAgYmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZShjbGllbnQtPmNsaWVudF9vYmosCj4+PiAwKSk7Cj4+PiAtICAgIGRvb3JiZWxsID0gYmFzZSAr IGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0Owo+Pj4gLQo+Pj4gLSAgICBkb29yYmVsbC0+ZGJfc3Rh dHVzID0gMDsKPj4+ICsgICAgZG9vcmJlbGwgPSBjbGllbnQtPmNsaWVudF9iYXNlICsgY2xpZW50 LT5kb29yYmVsbF9vZmZzZXQ7Cj4+Cj4+IE5vdCAxMDAlIHN1cmUgb2YgdGhlIG9iamVjdCBsaWZl dGltZXMgaW4gR3VDLCBidXQgd291bGQgaXQgYmUgZXZlbgo+PiBzaW1wbGVyIHRvIHN0b3JlIGEg cG9pbnRlciB0byBzdHJ1Y3Qgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvIGFzCj4+IGd1Yy0+ZG9v cmJlbGwgPyBUaGVyZSBhcmVuJ3QgdGhhdCBtYW55IGNhbGwgc2l0ZXMgdHJ1ZSwgYnV0IGtpbmQg b2YKPj4gbG9va3MgbG9naWNhbCBhdCBsZWFzdCBmcm9tIHRoZSBvdXRzaWRlLgo+Cj4gV2VsbCBw cm9iYWJseSwgYnV0IHRoYXQgd291bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaC4gVGhpcyBpcyBqdXN0 IGRlYWxpbmcKPiB3aXRoIGVsaW1pbmF0aW5nIHRoZSByZXBlYXRlZCBrbWFwL3VubWFwIGNhbGxz LgoKT2theSwganVzdCB0aG91Z2h0IGl0IG1heSBiZSBlYXNpZXIgdG8gZG8gaXQgYXQgb25jZSBz aW5jZSBpdCBsb29rZWQgCnJlYWxseSBzdHJhaWdodGZvcndhcmQsIGxpa2Ugc2FtZSBhbW91bnQg b2Ygd29yayBhbmQgY2xlYW5lciBlbmQgcmVzdWx0LgoKPiBBbHNvLCBtYXliZSB0aGlzIGhlbHBz IHJlbWluZCBwZW9wbGUgdGhhdCB0aGVzZSBhcmUgYWN0dWFsbHkgcGFydHMgb2YKPiB0aGUgc2Ft ZSBvYmplY3QuIFRoZXJlJ3MganVzdCBvbmUgYWxsb2NhdGVkLCBidXQgaXQgZW5jb21wYXNzZXMg dGhlCj4gcHJvY2VzcyBkZXNjcmlwdG9yIGFuZCB0aGUgZG9vcmJlbGwgaW4gdGhlIGZpcnN0IHBh Z2UsIGFuZCB0aGUgd29ya3F1ZXVlCj4gaW4gdGhlIHNlY29uZCBhbmQgdGhpcmQuCgpJIGRvbid0 IHRoaW5rIGFueW9uZSBmcm9tIHRoZSBvdXRzaWRlIHdvdWxkIGNhcmUgc2luY2UgaXQgaXMgYWxs IAppbnRlcm5hbCBndWMgY29kZSBzbyBpdCBpcyBmcmVlIHRvIGRlZmluZSBpdHMgcnVsZXMgd2l0 aCBhIG5pY2UgY29tbWVudCAKaW4gdGhlIHJlbGV2YW50IHN0cnVjdHVyZSBkZWZpbml0aW9uLgoK Pj4+IC0gICAga3VubWFwX2F0b21pYyhiYXNlKTsKPj4+ICsgICAgZG9vcmJlbGwtPmRiX3N0YXR1 cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKPj4+Cj4+PiAgICAgICBJOTE1X1dSSVRFKGRyYnJl ZywgSTkxNV9SRUFEKGRyYnJlZykgJiB+R0VOOF9EUkJfVkFMSUQpOwo+Pj4KPj4+IEBAIC0zNDEs MTAgKzMzMyw4IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X3Byb2NfZGVzYyhzdHJ1Y3QgaW50ZWxf Z3VjCj4+PiAqZ3VjLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfZ3VjX2Ns aWVudCAqY2xpZW50KQo+Pj4gICB7Cj4+PiAgICAgICBzdHJ1Y3QgZ3VjX3Byb2Nlc3NfZGVzYyAq ZGVzYzsKPj4+IC0gICAgdm9pZCAqYmFzZTsKPj4+Cj4+PiAtICAgIGJhc2UgPSBrbWFwX2F0b21p YyhpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY2xpZW50LT5jbGllbnRfb2JqLAo+Pj4gMCkpOwo+ Pj4gLSAgICBkZXNjID0gYmFzZSArIGNsaWVudC0+cHJvY19kZXNjX29mZnNldDsKPj4+ICsgICAg ZGVzYyA9IGNsaWVudC0+Y2xpZW50X2Jhc2UgKyBjbGllbnQtPnByb2NfZGVzY19vZmZzZXQ7Cj4+ Cj4+IEFuZCB0aGUgc2FtZSBtYXliZSBmb3IgdGhpcz8KPj4KPj4+ICAgICAgIG1lbXNldChkZXNj LCAwLCBzaXplb2YoKmRlc2MpKTsKPj4+Cj4+PiBAQCAtMzYxLDggKzM1MSw2IEBAIHN0YXRpYyB2 b2lkIGd1Y19pbml0X3Byb2NfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjCj4+PiAqZ3VjLAo+Pj4gICAg ICAgZGVzYy0+d3Ffc2l6ZV9ieXRlcyA9IGNsaWVudC0+d3Ffc2l6ZTsKPj4+ICAgICAgIGRlc2Mt PndxX3N0YXR1cyA9IFdRX1NUQVRVU19BQ1RJVkU7Cj4+PiAgICAgICBkZXNjLT5wcmlvcml0eSA9 IGNsaWVudC0+cHJpb3JpdHk7Cj4+PiAtCj4+PiAtICAgIGt1bm1hcF9hdG9taWMoYmFzZSk7Cj4+ PiAgIH0KPj4+Cj4+PiAgIC8qCj4+PiBAQCAtNjA3LDYgKzU5NSw3IEBAIGludCBpOTE1X2d1Y19z dWJtaXQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+Pj4gICAgKiBUaGlzIGlzIGEg d3JhcHBlciB0byBjcmVhdGUgYSBnZW0gb2JqLiBJbiBvcmRlciB0byB1c2UgaXQgaW5zaWRlCj4+ PiBHdUMsIHRoZQo+Pj4gICAgKiBvYmplY3QgbmVlZHMgdG8gYmUgcGlubmVkIGxpZmV0aW1lLiBB bHNvIHdlIG11c3QgcGluIGl0IHRvIGd0dAo+Pj4gc3BhY2Ugb3RoZXIKPj4+ICAgICogdGhhbiBb MCwgR1VDX1dPUENNX1RPUCkgYmVjYXVzZSB0aGlzIHJhbmdlIGlzIHJlc2VydmVkIGluc2lkZSBH dUMuCj4+PiArICogVGhlIG9iamVjdCBpcyBhbHNvIHBpbm5lZCAmIG1hcHBlZCBpbnRvIGtlcm5l bCBhZGRyZXNzIHNwYWNlLgo+Pj4gICAgKgo+Pj4gICAgKiBSZXR1cm46ICAgIEEgZHJtX2k5MTVf Z2VtX29iamVjdCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgTlVMTC4KPj4+ICAgICovCj4+PiBA QCAtNjIwLDEzICs2MDksMTQgQEAgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Cj4+ PiAqZ2VtX2FsbG9jYXRlX2d1Y19vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgICAg IGlmICghb2JqKQo+Pj4gICAgICAgICAgIHJldHVybiBOVUxMOwo+Pj4KPj4+IC0gICAgaWYgKGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKSkgewo+Pj4gKyAgICBpZiAoaTkxNV9nZW1fb2Jq ZWN0X3Bpbl9tYXAob2JqKSA9PSBOVUxMKSB7Cj4+Cj4+IFRoaXMgc2hvdWxkIGJlIElTX0VSUiBj aGVjay4KPgo+IE9LLCB3aWxsIHVwZGF0ZS4KPgo+Pj4gZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2UoJm9iai0+YmFzZSk7Cj4+PiAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+PiAgICAgICB9Cj4+ Pgo+Pj4gICAgICAgaWYgKGk5MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIFBBR0VfU0laRSwKPj4+ ICAgICAgICAgICAgICAgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCkpIHsKPj4+ICsg ICAgICAgIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKPj4+ICAgICAgICAgICBkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPj4+ICAgICAgICAgICByZXR1cm4g TlVMTDsKPj4+ICAgICAgIH0KPj4+IEBAIC02NDksNiArNjM5LDggQEAgc3RhdGljIHZvaWQgZ2Vt X3JlbGVhc2VfZ3VjX29iaihzdHJ1Y3QKPj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4+ ICAgICAgIGlmIChpOTE1X2dlbV9vYmpfaXNfcGlubmVkKG9iaikpCj4+PiAgICAgICAgICAgaTkx NV9nZW1fb2JqZWN0X2dndHRfdW5waW4ob2JqKTsKPj4+Cj4+PiArICAgIGk5MTVfZ2VtX29iamVj dF91bnBpbl9tYXAob2JqKTsKPj4+ICsKPj4+ICAgICAgIGRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlKCZvYmotPmJhc2UpOwo+Pj4gICB9Cj4+Pgo+Pj4gQEAgLTcyOSw2ICs3MjEsOCBAQCBzdGF0 aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudAo+Pj4gKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPj4+ICAgICAgICAgICBnb3RvIGVycjsKPj4+Cj4+PiAgICAgICBjbGll bnQtPmNsaWVudF9vYmogPSBvYmo7Cj4+PiArICAgIGNsaWVudC0+Y2xpZW50X2Jhc2UgPSBvYmot Pm1hcHBpbmc7Cj4+Cj4+IEl0IHRoaW5rIG91dHNpZGUgY29kZSBzaG91bGQgbm90IGFjY2VzcyBv YmotPm1hcHBpbmcgZGlyZWN0bHkgYnV0IHVzZQo+PiB3aGF0IGk5MTVfZ2VtX29iamVjdF9waW5f bWFwIGhhcyByZXR1cm5lZC4KPgo+IE5vLCB0aGF0IHdvdWxkIGJlIHF1aXRlIGluY29udmVuaWVu dC4gWW91IHNob3VsZG4ndCBuZWVkIHRvIGhvbGQKPiBhdXhpbGlhcnkgaW5mb3JtYXRpb24gYWJv dXQgYW4gYWxsb2NhdGVkIG9iamVjdCB3aGVuIHlvdSBjYW4gZ2V0IHRoYXQKPiBpbmZvcm1hdGlv biBkaXJlY3RseSBmcm9tIHRoZSBvYmplY3QgaXRzZWxmLgoKWW91IGNhbiBub3QgdW5sZXNzIHlv dSBicmVhayB0aGUgQVBJIGxheWVyLiBvYmotPm1hcHBpbmcgaXMgSU1ITyBwcml2YXRlIAp0byBH RU0gYW5kIEd1QyBzaG91bGQgbm90IHRvdWNoIGl0LiBFdmVuIG11c3Qgbm90IElNSE8uCgo+IEFs c28sIHRoZSBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHBpbi1hbmQtbWFwIGRvZXNuJ3QgaGF2ZSBh Y2Nlc3MgdG8gdGhlCj4gc3RydWN0dXJlIHdoZXJlIHRoZSBhZGRyZXNzIGlzIGdvaW5nIHRvIGJl IGNhY2hlZCwgaXQganVzdCByZXR1cm5zIHRoZQo+IGFsbG9jYXRlZC1waW5uZWQtYW5kLW1hcHBl ZCBvYmplY3QuCgpUaGF0IHNvdW5kcyBsaWtlIGEgbG9jYWwgaXNzdWUgd2hpY2ggY2FuIGJlIHdv cmtlZCBhcm91bmQgYnkgc3RvcmluZyBpdCAKaW4gdGhlIGFwcHJvcHJpYXRlIEd1QyBkYXRhIHN0 cnVjdHVyZSwgbm8/Cgo+IE9UT0ggSSBoYXZlIG5vIG9iamVjdGlvbiB0byB3cmFwcGluZyBpdCBh biBhY2Nlc3NvciBmdW5jdGlvbi9tYWNyby4KPgo+IHZvaWQgKmk5MTRfZ2VtX29iamVjdF9tYXBw ZWRfYWRkcihvYmplY3QpID8KPgo+IHJldHVybmluZyBOVUxMIGlmIG9iamVjdCBpcyBub3QgbWFw cGVkPwoKSSBkb24ndCBmZWVsIHN0cm9uZ2x5IGVpdGhlciB3YXkuIFF1ZXN0aW9uIGZvciBDaHJp cyBJIHN1cHBvc2UuCgpJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSBJIHdvdWxkIGxvb2sgdG8gYXZv aWQgdGhlIG5lZWQgZm9yIGl0IGJ5IHN0b3JpbmcgCnRoZSBhZGRyZXNzIGluIG15IG93biBkYXRh IHN0cnVjdHVyZShzKSwgaWYgdGhleSBoYXZlIGNvbnN0cnVjdG9ycyBhbmQgCmRlc3RydWN0b3Jz IHdoaWNoIHN0YXJ0IGFuZCBlbmQgd2l0aCBpOTE1X2dlbV9vYmplY3RfcGluX21hcC91bm1hcCAK cmVzcGVjdGl2ZWx5LgoKPj4+ICsgICAgV0FSTl9PTighY2xpZW50LT5jbGllbnRfYmFzZSk7Cj4+ Cj4+IEFuZCB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGxlZCBhdCB0aGUgaTkxNV9nZW1fb2Jq ZWN0X3Bpbl9tYXAgY2FsbAo+PiBzaXRlIHNvIEkgZG9uJ3QgdGhpbmsgaXQgc2VydmVzIGFueSBw dXJwb3NlLgo+Cj4gSW4gY2FzZSB0aGUgb2JqLT5tYXBwaW5nICp3YXNuJ3QqIHRoZSBzYW1lIHZh bHVlIHRoYXQgd2FzIHJldHVybmVkIGZyb20KPiBwaW4tYW5kLW1hcCBhbmQgY2hlY2tlZC4KCkFo IGd1YXJkIGFnYWluc3QgdG91Y2hpbmcgZm9yYmlkZGVuIHBhcnRzLiA6KQoKUmVnYXJkcywKClR2 cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK