From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 06/53] drm/i915: Wrap request allocation with a function pointer Date: Thu, 5 Mar 2015 17:20:27 +0100 Message-ID: <20150305162027.GP18775@phenom.ffwll.local> References: <1423828140-10653-1-git-send-email-John.C.Harrison@Intel.com> <1424366285-29232-1-git-send-email-John.C.Harrison@Intel.com> <1424366285-29232-7-git-send-email-John.C.Harrison@Intel.com> <54F86FC1.3020600@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f175.google.com (mail-we0-f175.google.com [74.125.82.175]) by gabe.freedesktop.org (Postfix) with ESMTP id B02F86E7F4 for ; Thu, 5 Mar 2015 08:18:48 -0800 (PST) Received: by wevk48 with SMTP id k48so7370247wev.5 for ; Thu, 05 Mar 2015 08:18:48 -0800 (PST) Content-Disposition: inline In-Reply-To: <54F86FC1.3020600@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tomas Elf Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMDUsIDIwMTUgYXQgMDM6MDE6MjFQTSArMDAwMCwgVG9tYXMgRWxmIHdyb3Rl Ogo+IE9uIDE5LzAyLzIwMTUgMTc6MTcsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6 Cj4gPkZyb206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gPgo+ ID5JbiBvcmRlciB0byBleHBsaWNpdGx5IG1hbmFnZSByZXF1ZXN0cyBmcm9tIGNyZWF0aW9uIHRv IHN1Ym1pc3Npb24sIGl0IGlzCj4gPm5lY2Vzc2FyeSB0byBiZSBhYmxlIHRvIGV4cGxpY2l0bHkg Y3JlYXRlIHRoZW0gaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIHBhdGNoCj4gPmFkZHMgYW4gaW5k aXJlY3Rpb24gd3JhcHBlciB0byB0aGUgcmVxdWVzdCBjcmVhdGlvbiBmdW5jdGlvbiBzbyB0aGF0 IGl0IGNhbiBiZQo+ID5jYWxsZWQgZnJvbSBnZW5lcmljIGNvZGUgd2l0aG91dCBoYXZpbmcgdG8g d29ycnkgYWJvdXQgZXhlY2xpc3QgdnMgbGVnYWN5IG1vZGUuCj4gPgo+ID5Gb3I6IFZJWi01MTE1 Cj4gPlNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5j b20+Cj4gPi0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8 ICAgIDIgKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAg ICAyICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICAg NiArKystLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICAgICAgfCAg ICAyICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICAg NiArKystLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAg ICAyICsrCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPmluZGV4IGIzNTA5MTAuLjg3YTRh MmUgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+Kysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID5AQCAtMTkwOCw2ICsxOTA4LDgg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ID4KPiA+ICAJLyogQWJzdHJhY3QgdGhlIHN1 Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkg Ki8KPiA+ICAJc3RydWN0IHsKPiA+KwkJaW50ICgqYWxsb2NfcmVxdWVzdCkoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiA+KwkJCQkgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgp Owo+ID4gIAkJaW50ICgqZG9fZXhlY2J1Zikoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMg KnBhcmFtcywKPiA+ICAJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdz LAo+ID4gIAkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpOwo+ID5kaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiA+aW5kZXggN2EwZGM3Yy4uY2Y5NTllMyAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gPkBAIC00ODYwLDExICs0ODYwLDEzIEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgCX0KPiA+Cj4gPiAgCWlmICghaTkxNS5lbmFibGVfZXhl Y2xpc3RzKSB7Cj4gPisJCWRldl9wcml2LT5ndC5hbGxvY19yZXF1ZXN0ID0gaW50ZWxfcmluZ19h bGxvY19yZXF1ZXN0Owo+ID4gIAkJZGV2X3ByaXYtPmd0LmRvX2V4ZWNidWYgPSBpOTE1X2dlbV9y aW5nYnVmZmVyX3N1Ym1pc3Npb247Cj4gPiAgCQlkZXZfcHJpdi0+Z3QuaW5pdF9yaW5ncyA9IGk5 MTVfZ2VtX2luaXRfcmluZ3M7Cj4gPiAgCQlkZXZfcHJpdi0+Z3QuY2xlYW51cF9yaW5nID0gaW50 ZWxfY2xlYW51cF9yaW5nX2J1ZmZlcjsKPiA+ICAJCWRldl9wcml2LT5ndC5zdG9wX3JpbmcgPSBp bnRlbF9zdG9wX3JpbmdfYnVmZmVyOwo+ID4gIAl9IGVsc2Ugewo+ID4rCQlkZXZfcHJpdi0+Z3Qu YWxsb2NfcmVxdWVzdCA9IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0Owo+ID4gIAkJ ZGV2X3ByaXYtPmd0LmRvX2V4ZWNidWYgPSBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbjsKPiA+ ICAJCWRldl9wcml2LT5ndC5pbml0X3JpbmdzID0gaW50ZWxfbG9naWNhbF9yaW5nc19pbml0Owo+ ID4gIAkJZGV2X3ByaXYtPmd0LmNsZWFudXBfcmluZyA9IGludGVsX2xvZ2ljYWxfcmluZ19jbGVh bnVwOwo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID5pbmRleCBkYzQ3NGI0Li44NjI4YWJm IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4rKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID5AQCAtODU2LDggKzg1Niw4IEBA IHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+ID4gIAl9Cj4gPiAgfQo+ID4KPiA+LXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2FsbG9jX3Jl cXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiA+LQkJCQkgICAgICBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY3R4KQo+ID4raW50IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gPisJCQkJICAgICBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXZhdGUgPSBy aW5nLT5kZXYtPmRldl9wcml2YXRlOwo+ID5AQCAtMTA2Niw3ICsxMDY2LDcgQEAgaW50IGludGVs X2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiA+ ICAJCXJldHVybiByZXQ7Cj4gPgo+ID4gIAkvKiBQcmVhbGxvY2F0ZSB0aGUgb2xyIGJlZm9yZSB0 b3VjaGluZyB0aGUgcmluZyAqLwo+ID4tCXJldCA9IGxvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0 KHJpbmcsIGN0eCk7Cj4gPisJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3Qo cmluZywgY3R4KTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCXJldHVybiByZXQ7Cj4gPgo+ID5kaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuaAo+ID5pbmRleCAzYTZhYmNlLi4zY2MzOGJkIDEwMDY0NAo+ID4t LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ID4rKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ID5AQCAtMzYsNiArMzYsOCBAQAo+ID4gICNkZWZpbmUg UklOR19DT05URVhUX1NUQVRVU19QVFIocmluZykJKChyaW5nKS0+bW1pb19iYXNlKzB4M2EwKQo+ ID4KPiA+ICAvKiBMb2dpY2FsIFJpbmdzICovCj4gPitpbnQgX19tdXN0X2NoZWNrIGludGVsX2xv Z2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4g PisJCQkJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ID4gIHZvaWQgaW50ZWxfbG9n aWNhbF9yaW5nX3N0b3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4gPiAgdm9pZCBp bnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsK PiA+ICBpbnQgaW50ZWxfbG9naWNhbF9yaW5nc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gPmluZGV4IDdmZDg5 ZTUuLjYzNTcwN2EgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiA+QEAgLTIxNjMsOCArMjE2Myw4IEBAIGludCBpbnRlbF9yaW5nX2lkbGUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKPiA+ICAJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KHJlcSk7 Cj4gPiAgfQo+ID4KPiA+LXN0YXRpYyBpbnQKPiA+LWludGVsX3JpbmdfYWxsb2NfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ID4raW50Cj4gPitpbnRlbF9yaW5nX2FsbG9j X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCkKPiA+ICB7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxdWVzdDsKPiA+QEAgLTIyMjksNyArMjIyOSw3IEBAIGludCBpbnRlbF9yaW5n X2JlZ2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gPiAgCQlyZXR1cm4gcmV0Owo+ ID4KPiA+ICAJLyogUHJlYWxsb2NhdGUgdGhlIG9sciBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcg Ki8KPiA+LQlyZXQgPSBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3QocmluZyk7Cj4gPisJcmV0ID0g aW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0KHJpbmcsIE5VTEwpOwo+ID4gIAlpZiAocmV0KQo+ID4g IAkJcmV0dXJuIHJldDsKPiA+Cj4gPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiA+aW5kZXggZmZhMzcyNC4uMmZkOTYwYSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+ID5AQCAtMzkyLDYgKzM5Miw4IEBAIHZvaWQgaW50ZWxfY2xl YW51cF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiA+Cj4gPiAg aW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIGludCBuKTsKPiA+ICBpbnQgX19tdXN0X2NoZWNrIGludGVsX3JpbmdfY2FjaGVsaW5l X2FsaWduKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ID4raW50IF9fbXVzdF9jaGVj ayBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK PiA+KwkJCQkJICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPiA+ICBzdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gPiAg CQkJCSAgIHUzMiBkYXRhKQo+ID4gIHsKPiA+Cj4gCj4gSSBmaW5kIHRoZSB3aG9sZSBpZGVhIG9m IGhhdmluZyB2aXJ0dWFsIGZ1bmN0aW9ucyBwb2ludGluZyB0byBwdWJsaWMKPiBmdW5jdGlvbnMg a2luZCBvZiBzdHJhbmdlIHNpbmNlIGl0IGFsbG93cyBmb3IgdHdvIHdheXMgb2YgYWNjZXNzaW5n IHRoZQo+IGZ1bmN0aW9uLiBJZiB5b3UgbG9vayBhdCB0aGUgd2F5IHdlIHNldCB1cCB0aGUgdmly dHVhbCByaW5nIGJ1ZmZlciBmdW5jdGlvbnMKPiB0aG9zZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUg c3RhdGljIGFuZCB0aGUgc2V0IHVwIGlzIGRvbmUgaW4KPiBpbnRlbF9yaW5nYnVmZmVyLmMgd2l0 aG91dCBleHBvc2luZyB0aGUgZnVuY3Rpb25zIHRvIHRoZSBvdXRzaWRlIHdvcmxkLgo+IEhhdmlu ZyB0aGUgc2V0IHVwIHRha2UgcGxhY2UgaW4gaTkxNV9nZW0uYyBmb3JjZXMgdGhlIHZpcnR1YWwg ZnVuY3Rpb25zIHRvCj4gYmUgcHVibGljLCB3aGljaCBpcyBub3QgdmVyeSBuaWNlLiBJdCB3b3Vs ZCd2ZSBiZWVuIGEgYmV0dGVyIGlkZWEgdG8gcGFzcwo+IHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIHN0 cnVjdCBmb3IgaW5pdGlhbGl6YXRpb24gaW5zaWRlIGludGVsX2xyYy5jIGFuZAo+IGludGVsX3Jp bmdidWZmZXIuYywgd2hpY2ggd291bGQgaGF2ZSBhdm9pZGVkIG1ha2luZyB0aG9zZSBmdW5jdGlv bnMgcHVibGljLgo+IAo+IEknZCBsaWtlIHRvIGhlYXIgc29tZSBpbnB1dCBmcm9tIHNvbWVvbmUg ZWxzZSBvbiB0aGlzIG9uIHRoaXMsIGxpa2UgZS5nLgo+IERhbmllbCBWZXR0ZXIgKHNpbmNlIGhl IHdhcyBhIHN0cm9uZyBwcm9wb25lbnQgb2YgdGhlIGxlZ2FjeS9leGVjbGlzdCBzcGxpdCwKPiB3 aGljaCB3YXMgdGhlIHVuZGVybHlpbmcgcmVhc29uIGZvciB0aGlzIGNvbnN0cnVjdCBpbiB0aGUg Zmlyc3QgcGxhY2UgLSBub3QKPiBzYXlpbmcgdGhhdCBpdCBjb3VsZG4ndCBoYXZlIGJlZW4gZG9u ZSBpbiBzb21lIG90aGVyIHdheSwgdGhvdWdoKS4KClllYWggZ2VuZXJhbGx5IHRoZSBwYXR0ZXJu IGlzIHRvIGhhdmUgb25lIHB1YmxpYyBfaW5pdCBmdW5jdGlvbiBwZXIgZmlsZQp3aGljaCBzZXRz IHVwIHRoZSB2ZnVuYyB0YWJsZXMgYXMgbmVlZGVkLiBGb2xsb3ctdXAgcGF0Y2hlcyB3b3VsZCBi ZQpyZWFsbHkgbmljZSB0aG91Z2ggaW5kZWVkLgotRGFuaWVsCgo+IAo+IE9idmlvdXNseSwgdGhp cyBpcyBub3QgdGhlIGZhdWx0IG9mIHRoZSBwYXRjaCBhdCBoYW5kIGFuZCB5b3UncmUganVzdAo+ IGZvbGxvd2luZyB0aGUgYWxyZWFkeSBlc3RhYmxpc2hlZCBwYXR0ZXJuIG9mIHNldHRpbmcgdXAg dGhlc2UgdmlydHVhbAo+IGZ1bmN0aW9ucyBzbyBJIGNhbid0IGZhdWx0IHlvdSBmb3IgdGhhdC4K PiAKPiBUaGVyZWZvcmUgSSdtIG9rIHdpdGggdGhpcyBjaGFuZ2UgKGJ1dCBub3QgdGhlIGNvbnN0 cnVjdCBhcyBhIHdob2xlKToKPiAKPiBSZXZpZXdlZC1ieTogVG9tYXMgRWxmIDx0b21hcy5lbGZA aW50ZWwuY29tPgo+IAo+IFRoYW5rcywKPiBUb21hcwo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=