From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 5/6] drm/i915: Reduce pointer indirection during cmd parser lookup Date: Fri, 20 Nov 2015 17:27:43 +0200 Message-ID: <20151120152743.GQ4437@intel.com> References: <1448016961-25331-1-git-send-email-chris@chris-wilson.co.uk> <1448016961-25331-6-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5ABD66EAD5 for ; Fri, 20 Nov 2015 07:27:51 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448016961-25331-6-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMjAsIDIwMTUgYXQgMTA6NTY6MDBBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyB8IDUx ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgNCArKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNl cnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nt ZF9wYXJzZXIuYwo+IGluZGV4IGNmZDA3YmZlNmU3NS4uZWE5ZGYyYmI4N2RlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBAQCAtMTEzLDcgKzExMyw3IEBACj4g IAo+ICAvKiAgICAgICAgICAgIENvbW1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc2sg ICBGaXhlZCBMZW4gICBBY3Rpb24KPiAgCSAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBjb21tb25fY21kc1tdID0gewo+ICtzdGF0aWMgc3Ry dWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIGNvbW1vbl9jbWRzW10gPSB7CgpJJ20gYSBsaXR0 bGUgc2FkIHRvIHNlZSB0aGUgY29uc3QgZ29uZS4gQWxsIHRoaXMgZ2V0cyBtb3ZlZCBvdXQgb2YK cm9kYXRhLgoKPiAgCUNNRCggIE1JX05PT1AsICAgICAgICAgICAgICAgICAgICAgICAgICBTTUks ICAgIEYsICAxLCAgICAgIFMgICksCj4gIAlDTUQoICBNSV9VU0VSX0lOVEVSUlVQVCwgICAgICAg ICAgICAgICAgU01JLCAgICBGLCAgMSwgICAgICBSICApLAo+ICAJQ01EKCAgTUlfV0FJVF9GT1Jf RVZFTlQsICAgICAgICAgICAgICAgIFNNSSwgICAgRiwgIDEsICAgICAgTSAgKSwKPiBAQCAtMTQ2 LDcgKzE0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3Ig Y29tbW9uX2NtZHNbXSA9IHsKPiAgCUNNRCggIE1JX0JBVENIX0JVRkZFUl9TVEFSVCwgICAgICAg ICAgICBTTUksICAgIUYsICAweEZGLCAgIFMgICksCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIHJlbmRlcl9jbWRzW10gPSB7Cj4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgcmVuZGVyX2NtZHNbXSA9IHsKPiAgCUNN RCggIE1JX0ZMVVNILCAgICAgICAgICAgICAgICAgICAgICAgICBTTUksICAgIEYsICAxLCAgICAg IFMgICksCj4gIAlDTUQoICBNSV9BUkJfT05fT0ZGLCAgICAgICAgICAgICAgICAgICAgU01JLCAg ICBGLCAgMSwgICAgICBSICApLAo+ICAJQ01EKCAgTUlfUFJFRElDQVRFLCAgICAgICAgICAgICAg ICAgICAgIFNNSSwgICAgRiwgIDEsICAgICAgUyAgKSwKPiBAQCAtMjA3LDcgKzIwNyw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgcmVuZGVyX2NtZHNbXSA9 IHsKPiAgCSAgICAgIH19LAkJCQkJCSAgICAgICApLAo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBoc3dfcmVuZGVyX2NtZHNbXSA9IHsKPiAr c3RhdGljIHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBoc3dfcmVuZGVyX2NtZHNbXSA9 IHsKPiAgCUNNRCggIE1JX1NFVF9QUkVESUNBVEUsICAgICAgICAgICAgICAgICBTTUksICAgIEYs ICAxLCAgICAgIFMgICksCj4gIAlDTUQoICBNSV9SU19DT05UUk9MLCAgICAgICAgICAgICAgICAg ICAgU01JLCAgICBGLCAgMSwgICAgICBTICApLAo+ICAJQ01EKCAgTUlfVVJCX0FUT01JQ19BTExP QywgICAgICAgICAgICAgIFNNSSwgICAgRiwgIDEsICAgICAgUyAgKSwKPiBAQCAtMjI5LDcgKzIy OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgaHN3X3Jl bmRlcl9jbWRzW10gPSB7Cj4gIAlDTUQoICBHRlhfT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxFX0VE SVRfUFMsICBTM0QsICAgIUYsICAweDFGRiwgIFMgICksCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29u c3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIHZpZGVvX2NtZHNbXSA9IHsKPiArc3Rh dGljIHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciB2aWRlb19jbWRzW10gPSB7Cj4gIAlD TUQoICBNSV9BUkJfT05fT0ZGLCAgICAgICAgICAgICAgICAgICAgU01JLCAgICBGLCAgMSwgICAg ICBSICApLAo+ICAJQ01EKCAgTUlfU0VUX0FQUElELCAgICAgICAgICAgICAgICAgICAgIFNNSSwg ICAgRiwgIDEsICAgICAgUyAgKSwKPiAgCUNNRCggIE1JX1NUT1JFX0RXT1JEX0lNTSwgICAgICAg ICAgICAgICBTTUksICAgIUYsICAweEZGLCAgIEIsCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIHZpZGVvX2NtZHNbXSA9IHsK PiAgCUNNRCggIE1GWF9XQUlULCAgICAgICAgICAgICAgICAgICAgICAgICBTTUZYLCAgIEYsICAx LCAgICAgIFMgICksCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2Nt ZF9kZXNjcmlwdG9yIHZlY3NfY21kc1tdID0gewo+ICtzdGF0aWMgc3RydWN0IGRybV9pOTE1X2Nt ZF9kZXNjcmlwdG9yIHZlY3NfY21kc1tdID0gewo+ICAJQ01EKCAgTUlfQVJCX09OX09GRiwgICAg ICAgICAgICAgICAgICAgIFNNSSwgICAgRiwgIDEsICAgICAgUiAgKSwKPiAgCUNNRCggIE1JX1NF VF9BUFBJRCwgICAgICAgICAgICAgICAgICAgICBTTUksICAgIEYsICAxLCAgICAgIFMgICksCj4g IAlDTUQoICBNSV9TVE9SRV9EV09SRF9JTU0sICAgICAgICAgICAgICAgU01JLCAgICFGLCAgMHhG RiwgICBCLAo+IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkx NV9jbWRfZGVzY3JpcHRvciB2ZWNzX2NtZHNbXSA9IHsKPiAgCSAgICAgIH19LAkJCQkJCSAgICAg ICApLAo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3Jp cHRvciBibHRfY21kc1tdID0gewo+ICtzdGF0aWMgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlw dG9yIGJsdF9jbWRzW10gPSB7Cj4gIAlDTUQoICBNSV9ESVNQTEFZX0ZMSVAsICAgICAgICAgICAg ICAgICAgU01JLCAgICFGLCAgMHhGRiwgICBSICApLAo+ICAJQ01EKCAgTUlfU1RPUkVfRFdPUkRf SU1NLCAgICAgICAgICAgICAgIFNNSSwgICAhRiwgIDB4M0ZGLCAgQiwKPiAgCSAgICAgIC5iaXRz ID0ge3sKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf Y21kX2Rlc2NyaXB0b3IgYmx0X2NtZHNbXSA9IHsKPiAgCUNNRCggIFNSQ19DT1BZX0JMVCwgICAg ICAgICAgICAgICAgICAgICBTMkQsICAgIUYsICAweDNGLCAgIFMgICksCj4gIH07Cj4gIAo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIGhzd19ibHRfY21kc1td ID0gewo+ICtzdGF0aWMgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIGhzd19ibHRfY21k c1tdID0gewo+ICAJQ01EKCAgTUlfTE9BRF9TQ0FOX0xJTkVTX0lOQ0wsICAgICAgICAgIFNNSSwg ICAhRiwgIDB4M0YsICAgTSAgKSwKPiAgCUNNRCggIE1JX0xPQURfU0NBTl9MSU5FU19FWENMLCAg ICAgICAgICBTTUksICAgIUYsICAweDNGLCAgIFIgICksCj4gIH07Cj4gQEAgLTYxOCwxMSArNjE4 LDYgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVfcmVnc19zb3J0ZWQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKPiAgCQkJICAgICByaW5nLT5tYXN0ZXJfcmVnX2NvdW50KTsKPiAgfQo+ICAK PiAtc3RydWN0IGNtZF9ub2RlIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3Jp cHRvciAqZGVzYzsKPiAtCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4gLX07Cj4gLQo+ICAvKgo+ ICAgKiBEaWZmZXJlbnQgY29tbWFuZCByYW5nZXMgaGF2ZSBkaWZmZXJlbnQgbnVtYmVycyBvZiBi aXRzIGZvciB0aGUgb3Bjb2RlLiBGb3IKPiAgICogZXhhbXBsZSwgTUkgY29tbWFuZHMgdXNlIGJp dHMgMzE6MjMgd2hpbGUgM0QgY29tbWFuZHMgdXNlIGJpdHMgMzE6MTYuIFRoZQo+IEBAIC02NTEs MTYgKzY0Niw4IEBAIHN0YXRpYyBpbnQgaW5pdF9oYXNoX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCj4gIAkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSAqdGFibGUg PSAmY21kX3RhYmxlc1tpXTsKPiAgCj4gIAkJZm9yIChqID0gMDsgaiA8IHRhYmxlLT5jb3VudDsg aisrKSB7Cj4gLQkJCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYyA9 Cj4gLQkJCQkmdGFibGUtPnRhYmxlW2pdOwo+IC0JCQlzdHJ1Y3QgY21kX25vZGUgKmRlc2Nfbm9k ZSA9Cj4gLQkJCQlrbWFsbG9jKHNpemVvZigqZGVzY19ub2RlKSwgR0ZQX0tFUk5FTCk7Cj4gLQo+ IC0JCQlpZiAoIWRlc2Nfbm9kZSkKPiAtCQkJCXJldHVybiAtRU5PTUVNOwoKaW5pdF9oYXNoX3Rh YmxlKCkgY2FuIG5vIGxvbmdlciBmYWlsIC0+IHZvaWQ/Cgo+IC0KPiAtCQkJZGVzY19ub2RlLT5k ZXNjID0gZGVzYzsKPiAtCQkJaGFzaF9hZGQocmluZy0+Y21kX2hhc2gsICZkZXNjX25vZGUtPm5v ZGUsCj4gKwkJCXN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYyA9ICZ0YWJsZS0+ dGFibGVbal07Cj4gKwkJCWhhc2hfYWRkKHJpbmctPmNtZF9oYXNoLCAmZGVzYy0+bm9kZVtyaW5n LT5pZF0sCj4gIAkJCQkgZGVzYy0+Y21kLnZhbHVlICYgQ01EX0hBU0hfTUFTSyk7Cj4gIAkJfQo+ ICAJfQo+IEBAIC02NjgsMTggKzY1NSw2IEBAIHN0YXRpYyBpbnQgaW5pdF9oYXNoX3RhYmxlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3Rh dGljIHZvaWQgZmluaV9oYXNoX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4g LXsKPiAtCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7Cj4gLQlzdHJ1Y3QgY21kX25vZGUgKmRlc2Nf bm9kZTsKPiAtCWludCBpOwo+IC0KPiAtCWhhc2hfZm9yX2VhY2hfc2FmZShyaW5nLT5jbWRfaGFz aCwgaSwgdG1wLCBkZXNjX25vZGUsIG5vZGUpIHsKPiAtCQloYXNoX2RlbCgmZGVzY19ub2RlLT5u b2RlKTsKPiAtCQlrZnJlZShkZXNjX25vZGUpOwo+IC0JfQo+IC19Cj4gLQo+ICAvKioKPiAgICog aTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZygpIC0gc2V0IGNtZCBwYXJzZXIgcmVsYXRlZCBmaWVs ZHMgZm9yIGEgcmluZ2J1ZmZlcgo+ICAgKiBAcmluZzogdGhlIHJpbmdidWZmZXIgdG8gaW5pdGlh bGl6ZQo+IEBAIC03NzAsNyArNzQ1LDYgQEAgaW50IGk5MTVfY21kX3BhcnNlcl9pbml0X3Jpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgCXJldCA9IGluaXRfaGFzaF90YWJsZShy aW5nLCBjbWRfdGFibGVzLCBjbWRfdGFibGVfY291bnQpOwo+ICAJaWYgKHJldCkgewo+ICAJCURS TV9FUlJPUigiQ01EOiBjbWRfcGFyc2VyX2luaXQgZmFpbGVkIVxuIik7Cj4gLQkJZmluaV9oYXNo X3RhYmxlKHJpbmcpOwo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IEBAIC03OTAsOCArNzY0 LDYgQEAgdm9pZCBpOTE1X2NtZF9wYXJzZXJfZmluaV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCj4gIHsKPiAgCWlmICghcmluZy0+bmVlZHNfY21kX3BhcnNlcikKPiAgCQlyZXR1 cm47Cj4gLQo+IC0JZmluaV9oYXNoX3RhYmxlKHJpbmcpOwo+ICB9CgppOTE1X2NtZF9wYXJzZXJf ZmluaV9yaW5nKCkgaXMgYSBub3Agbm93LiBLaWxsIGl0PwoKPiAgCj4gIC8qCj4gQEAgLTgwMSwx MSArNzczLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3Iq Cj4gIGZpbmRfY21kX2luX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAkJ ICB1MzIgY21kX2hlYWRlcikKPiAgewo+IC0Jc3RydWN0IGNtZF9ub2RlICpkZXNjX25vZGU7Cj4g Kwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2M7Cj4gIAo+IC0JaGFz aF9mb3JfZWFjaF9wb3NzaWJsZShyaW5nLT5jbWRfaGFzaCwgZGVzY19ub2RlLCBub2RlLAo+ICsJ aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShyaW5nLT5jbWRfaGFzaCwgZGVzYywgbm9kZVtyaW5nLT5p ZF0sCj4gIAkJCSAgICAgICBjbWRfaGVhZGVyICYgQ01EX0hBU0hfTUFTSykgewo+IC0JCWNvbnN0 IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYyA9IGRlc2Nfbm9kZS0+ZGVzYzsK PiAgCQlpZiAoKChjbWRfaGVhZGVyIF4gZGVzYy0+Y21kLnZhbHVlKSAmIGRlc2MtPmNtZC5tYXNr KSA9PSAwKQo+ICAJCQlyZXR1cm4gZGVzYzsKCkF0IGxlYXN0IHdlIHN0aWxsIHJldHVybiB0aGlz IGFzIGNvbnN0LCBzbyB0aGUgY2FsbGVyIGNhbid0IGFjY2lkZW50YWxseQpjbG9iYmVyIGl0LCBl dmVuIGlmIHdlIGxvc2UgdGhlIHJvZGF0YSBwcm90ZWN0aW9uLgoKQXBhcnQgZnJvbSB0aGUgaW50 IHZzLiB2b2lkIHRoaW5nIGFuZCB0aGUgbm9wCmk5MTVfY21kX3BhcnNlcl9maW5pX3JpbmcoKSB0 aGUgcGF0Y2ggbG9va3MgZmluZSB0byBtZS4KCj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggMjhkNWJmY2VhZTNiLi41OTYwZjc2ZjE0MzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBAQCAtMjM5Niw2ICsyMzk2LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNj cmlwdG9yIHsKPiAgCQl1MzIgY29uZGl0aW9uX29mZnNldDsKPiAgCQl1MzIgY29uZGl0aW9uX21h c2s7Cj4gIAl9IGJpdHNbTUFYX0NNRF9ERVNDX0JJVE1BU0tTXTsKPiArCj4gKwlzdHJ1Y3QgaGxp c3Rfbm9kZSBub2RlW0k5MTVfTlVNX1JJTkdTXTsKPiAgfTsKPiAgCj4gIC8qCj4gQEAgLTI0MDUs NyArMjQwNyw3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciB7Cj4gICAqIGRlc2Ny aXB0b3JzLCB3aGljaCBtdXN0IGJlIHNvcnRlZCB3aXRoIGNvbW1hbmQgb3Bjb2RlcyBpbiBhc2Nl bmRpbmcgb3JkZXIuCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAtCWNv bnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqdGFibGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfY21kX2Rlc2NyaXB0b3IgKnRhYmxlOwo+ICAJaW50IGNvdW50Owo+ICB9Owo+ICAKPiAt LSAKPiAyLjYuMgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=