From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 11/42] drm/i915: Update less state during modeset. Date: Tue, 12 May 2015 10:22:04 +0200 Message-ID: <20150512082204.GX15256@phenom.ffwll.local> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-12-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 58D996E593 for ; Tue, 12 May 2015 01:19:44 -0700 (PDT) Received: by widdi4 with SMTP id di4so3915672wid.0 for ; Tue, 12 May 2015 01:19:43 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431354318-11995-12-git-send-email-maarten.lankhorst@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: Maarten Lankhorst Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMTEsIDIwMTUgYXQgMDQ6MjQ6NDdQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTm8gbmVlZCB0byByZXBlYXRlZGx5IGNhbGwgdXBkYXRlX3dhdGVybWFya3Ms IG9yIHVwZGF0ZV9mYmMuCj4gRm9yIHVwZGF0ZV93YXRlcm1hcmtzIG9uY2Ugc2hvdWxkIGJlIGVu b3VnaCBhZnRlciBkaXNhYmxpbmcgY3J0YydzCj4gYW5kIHN3YXBwaW5nIHRoZSBzdGF0ZS4KPiAK PiBEb3duIHRvIGEgc2luZ2xlIGNhbGwgdG8gdXBkYXRlX3dhdGVybWFya3MgaW4gLmNydGNfZW5h YmxlCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KCkluIHRoZW9yeSB3ZSBzaG91bGRuJ3QgZXZlbiBuZWVkIHRo YXQgb25lLCBidXQgb25seSBhIHR3by1zdGFnZSB3bSB1cGRhdGUKaW4gb3VyIC0+YXRvbWljX2Jl Z2luLy0+YXRvbWljX2ZsdXNoIGNydGMgY2FsbGJhY2tzLiBCdXQgSSB3b25kZXIgd2hldGhlcgpy ZWR1Y2luZyB0aGUgYW1vdW50IG9mIHdtIHVwZGF0ZXMgYXMgbG9uZyBhcyB3ZSBkb24ndCB5ZXQg aGF2ZSB0aGUKdHdvLXN0YWdlIHRoaW5nIHdpbGwgaW5jcmVhc2Ugb3VyIHJpc2sgZm9yIHVuZGVy cnVucy4gSSBndWVzcyBmb3Igbm93IHdlJ2QKYXQgbGVhc3QgbmVlZCB0aGUgY2FsbCBpbiBjcnRj X2VuYWJsZSB0byByZWR1Y2UgdGhhdCByaXNrLgoKSW1vIHRoZSBmYmMgY2hhbmdlcyB3b3VsZCBs b29rIGdyZWF0IGFzIGl0J3Mgb3duIHBhdGNoIDstKQotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA3OSArKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDUxIGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA5 NjEwZjc2YTI0ODkuLmE5MGViYzhlZmY2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiBAQCAtNDcxOSwxMCArNDcxOSw2IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1h cnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICovCj4gIAloc3dfZW5hYmxlX2lwcyhpbnRl bF9jcnRjKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRl bF9mYmNfdXBkYXRlKGRldik7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiAtCj4gIAkvKgo+ICAJICogR2VuMiByZXBvcnRzIHBpcGUgdW5kZXJydW5zIHdoZW5ldmVyIGFs bCBwbGFuZXMgYXJlIGRpc2FibGVkLgo+ICAJICogU28gZG9uJ3QgZW5hYmxlIHVuZGVycnVuIHJl cG9ydGluZyBiZWZvcmUgYXQgbGVhc3Qgc29tZSBwbGFuZXMKPiBAQCAtNDc3NywxMSArNDc3Myw2 IEBAIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJ aWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSkKPiAgCQlpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2 X3ByaXYsIGZhbHNlKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQlpZiAoZGV2X3ByaXYtPmZiYy5jcnRjID09IGludGVsX2NydGMpCj4gLQkJaW50ZWxfZmJjX2Rp c2FibGUoZGV2KTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAg CS8qCj4gIAkgKiBGSVhNRSBJUFMgc2hvdWxkIGJlIGZpbmUgYXMgbG9uZyBhcyBvbmUgcGxhbmUg aXMKPiAgCSAqIGVuYWJsZWQsIGJ1dCBpbiBwcmFjdGljZSBpdCBzZWVtcyB0byBoYXZlIHByb2Js ZW1zCj4gQEAgLTUwMDksOSArNTAwMCw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlz YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7Cj4gIAl1MzIgcmVnLCB0ZW1wOwo+ICAKPiAtCWlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ IC0JCXJldHVybjsKPiAtCj4gIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBl bmNvZGVyKQo+ICAJCWVuY29kZXItPmRpc2FibGUoZW5jb2Rlcik7Cj4gIAo+IEBAIC01MDQ5LDE4 ICs1MDM3LDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAgCQkJSTkxNV9XUklURShQQ0hfRFBMTF9TRUwsIHRlbXApOwo+ICAJCX0K PiAgCj4gLQkJLyogZGlzYWJsZSBQQ0ggRFBMTCAqLwo+IC0JCWludGVsX2Rpc2FibGVfc2hhcmVk X2RwbGwoaW50ZWxfY3J0Yyk7Cj4gLQo+ICAJCWlyb25sYWtlX2ZkaV9wbGxfZGlzYWJsZShpbnRl bF9jcnRjKTsKPiAgCX0KPiAtCj4gLQlpbnRlbF9jcnRjLT5hY3RpdmUgPSBmYWxzZTsKPiAtCWlu dGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+IC0KPiAtCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAtCWludGVsX2ZiY191cGRhdGUoZGV2KTsKPiAtCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNf ZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gQEAgLTUwNzEsOSArNTA0OSw2IEBAIHN0 YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg CXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gLQlp ZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+ICAJCWludGVsX29wcmVnaW9uX25v dGlmeV9lbmNvZGVyKGVuY29kZXIsIGZhbHNlKTsKPiAgCQllbmNvZGVyLT5kaXNhYmxlKGVuY29k ZXIpOwo+IEBAIC01MTA5LDE2ICs1MDg0LDYgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rp c2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRj KGRldiwgY3J0YywgZW5jb2RlcikKPiAgCQlpZiAoZW5jb2Rlci0+cG9zdF9kaXNhYmxlKQo+ICAJ CQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gLQo+IC0JaW50ZWxfY3J0Yy0+YWN0 aXZlID0gZmFsc2U7Cj4gLQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAtCj4gLQlt dXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9mYmNfdXBkYXRlKGRldik7 Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCj4gLQlpZiAoaW50ZWxf Y3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKPiAtCQlpbnRlbF9kaXNhYmxlX3NoYXJl ZF9kcGxsKGludGVsX2NydGMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5h YmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IEBAIC01OTQzLDkgKzU5MDgsNiBAQCBzdGF0 aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPiAgCj4gLQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJ LyoKPiAgCSAqIE9uIGdlbjIgcGxhbmVzIGFyZSBkb3VibGUgYnVmZmVyZWQgYnV0IHRoZSBwaXBl IGlzbid0LCBzbyB3ZSBtdXN0Cj4gIAkgKiB3YWl0IGZvciBwbGFuZXMgdG8gZnVsbHkgdHVybiBv ZmYgYmVmb3JlIGRpc2FibGluZyB0aGUgcGlwZS4KPiBAQCAtNTk3OSwxMyArNTk0MSw2IEBAIHN0 YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4g IAlpZiAoIUlTX0dFTjIoZGV2KSkKPiAgCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVw b3J0aW5nKGRldl9wcml2LCBwaXBlLCBmYWxzZSk7Cj4gLQo+IC0JaW50ZWxfY3J0Yy0+YWN0aXZl ID0gZmFsc2U7Cj4gLQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAtCj4gLQltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9mYmNfdXBkYXRlKGRldik7Cj4g LQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgfQo+ICAKPiAgLyogTWFzdGVy IGZ1bmN0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIENSVEMgYW5kIGNvcnJlc3BvbmRpbmcgcG93ZXIg d2VsbHMgKi8KPiBAQCAtMTIzNDcsMTEgKzEyMzAyLDIxIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9z ZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKm1vZGVzZXRfY3J0YywKPiAgCV9faW50ZWxfc2V0X21v ZGVfdXBkYXRlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiAgCj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsKPiAgCQlpZiAoIW5lZWRzX21v ZGVzZXQoY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiArCQlpZiAoIWNydGMtPnN0 YXRlLT5hY3RpdmUpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAgCQlpbnRlbF9jcnRjX2RwbXNfb3Zl cmxheV9kaXNhYmxlKHRvX2ludGVsX2NydGMoY3J0YykpOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZGlzYWJsZShjcnRjKTsKPiArCj4gKwkJaW50ZWxfY3J0Yy0+YWN0aXZlID0gZmFsc2U7 Cj4gKwo+ICsJCWlmIChpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVsX2NydGMpKQo+ICsJ CQlpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKGludGVsX2NydGMpOwo+ICAJfQo+ICAKPiAgCS8q IE9ubHkgYWZ0ZXIgZGlzYWJsaW5nIGFsbCBvdXRwdXQgcGlwZWxpbmVzIHRoYXQgd2lsbCBiZSBj aGFuZ2VkIGNhbiB3ZQo+IEBAIC0xMjM2NSw4ICsxMjMzMCwxMSBAQCBzdGF0aWMgaW50IF9faW50 ZWxfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICptb2Rlc2V0X2NydGMsCj4gIAo+ICAJLyogTm93 IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwgcGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBz ZXQgdXAuICovCj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Cj4gLQkJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKQo+ICsJCWlmICghY3J0Yy0+ c3RhdGUtPmFjdGl2ZSkgewo+ICsJCQlpZiAobmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4g KwkJCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAgCQkJY29udGludWU7Cj4gKwkJ fQo+ICAKPiAgCQl1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KHRvX2ludGVsX2NydGMoY3J0YykpOwo+ ICAKPiBAQCAtMTMwMzAsNiArMTI5OTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVj a19jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAltZW1zZXQoJmludGVsX2NydGMt PmF0b21pYywgMCwgc2l6ZW9mKGludGVsX2NydGMtPmF0b21pYykpOwo+ICAJaW50ZWxfY3J0Yy0+ YXRvbWljLnVwZGF0ZV93bSA9IG1vZGVfY2hhbmdlZDsKPiArCWludGVsX2NydGMtPmF0b21pYy5k aXNhYmxlX2ZiYyA9IG1vZGVfY2hhbmdlZDsKPiAgCj4gIAlpZHggPSBjcnRjLT5iYXNlLmlkOwo+ ICAJSTkxNV9TVEFURV9XQVJOKGNydGMtPnN0YXRlLT5hY3RpdmUgIT0gaW50ZWxfY3J0Yy0+YWN0 aXZlLAo+IEBAIC0xMzE2NSw2ICsxMzEzNCw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2No ZWNrX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9 Cj4gKwo+ICsJaWYgKG1vZGVfY2hhbmdlZCkKPiArCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRl X3dtID0gZmFsc2U7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTMyMDQsOCArMTMxNzYs MTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICAJaWYgKGludGVsX2NydGMtPmF0b21pYy53YWl0X2Zvcl9mbGlwcykKPiAgCQlp bnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7Cj4gIAo+IC0JaWYgKGludGVs X2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYykKPiAtCQlpbnRlbF9mYmNfZGlzYWJsZShkZXYpOwo+ ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYyAmJgo+ICsJICAgIGRldl9wcml2 LT5mYmMuY3J0YyA9PSBpbnRlbF9jcnRjKSB7Cj4gKwkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+ICsJCWlmIChkZXZfcHJpdi0+ZmJjLmNydGMgPT0gaW50ZWxfY3J0YykKPiArCQkJ aW50ZWxfZmJjX2Rpc2FibGUoZGV2KTsKPiArCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiArCX0KPiAgCj4gIAlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLnByZV9kaXNhYmxlX3By aW1hcnkpCj4gIAkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShjcnRjKTsKPiBAQCAtMTMyNDQs MTUgKzEzMjIxLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIGlu dGVsX2NydGMtPmF0b21pYy5mYl9iaXRzKTsKPiAgCj4gKwlpZiAoaW50ZWxfY3J0Yy0+YXRvbWlj LnBvc3RfZW5hYmxlX3ByaW1hcnkpCj4gKwkJaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShjcnRj KTsKPiArCj4gIAlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9mYmMpIHsKPiAgCQltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAkJaW50ZWxfZmJjX3VwZGF0ZShkZXYpOwo+ ICAJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJfQo+ICAKPiAtCWlmIChp bnRlbF9jcnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFyeSkKPiAtCQlpbnRlbF9wb3N0X2Vu YWJsZV9wcmltYXJ5KGNydGMpOwo+IC0KPiAgCXBsYW5lX21hc2sgPSBpbnRlbF9jcnRjLT5hdG9t aWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzOwo+ICAJZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2so cCwgZGV2LCBwbGFuZV9tYXNrKQo+ICAJCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhw LCBjcnRjLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UpOwo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwg VmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5m ZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=