From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 06/15] drm/i915/bios: rewrite sequence block parsing Date: Tue, 5 Jan 2016 15:12:00 +0100 Message-ID: <20160105141200.GE8076@phenom.ffwll.local> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f41.google.com (mail-wm0-f41.google.com [74.125.82.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id BD23B6E564 for ; Tue, 5 Jan 2016 06:12:03 -0800 (PST) Received: by mail-wm0-f41.google.com with SMTP id u188so24627635wmu.1 for ; Tue, 05 Jan 2016 06:12:03 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: Deepak M , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBEZWMgMjEsIDIwMTUgYXQgMDM6MTA6NTdQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gTWFrZSBldmVyeXRoaW5nIGEgYml0IG1vcmUgcmVhZGFibGUgYW5kIGNsZWFyLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgpBIHJl YWwgcGFpbiB0byBjaGVjaywgYnV0IEkgdGhpbmsgSSBjb252aW5jZWQgbXlzZWxmIHRoYXQgdGhp cyBpcwplcXVpdmFsZW50IGNvZGUuCgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBmZndsbC5jaD4KCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jIHwgMTU4 ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Jpb3MuaCB8ICAgNCArLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDU3IGluc2Vy dGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCA5YjgyYzQ1MzI4OTMuLjA3YzRmYzUzOTY4MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC0xNDg3LDcgKzE0ODcsNyBAQCBzdHJ1Y3QgaW50ZWxfdmJ0X2RhdGEgewo+ICAJ CXU4IHNlcV92ZXJzaW9uOwo+ICAJCXUzMiBzaXplOwo+ICAJCXU4ICpkYXRhOwo+IC0JCXU4ICpz ZXF1ZW5jZVtNSVBJX1NFUV9NQVhdOwo+ICsJCWNvbnN0IHU4ICpzZXF1ZW5jZVtNSVBJX1NFUV9N QVhdOwo+ICAJfSBkc2k7Cj4gIAo+ICAJaW50IGNydF9kZGNfcGluOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9iaW9zLmMKPiBpbmRleCA5NTExYTUzNDE1NjIuLmQ2ZWFmMzJmMzNlNSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiBAQCAtNjk3LDczICs2OTcsNiBAQCBwYXJzZV9wc3Io c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRl ciAqYmRiKQo+ICAJZGV2X3ByaXYtPnZidC5wc3IudHAyX3RwM193YWtldXBfdGltZSA9IHBzcl90 YWJsZS0+dHAyX3RwM193YWtldXBfdGltZTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4ICpnb3RvX25l eHRfc2VxdWVuY2UodTggKmRhdGEsIHUxNiAqc2l6ZSkKPiAtewo+IC0JdTE2IGxlbjsKPiAtCWlu dCB0bXAgPSAqc2l6ZTsKPiAtCj4gLQlpZiAoLS10bXAgPCAwKQo+IC0JCXJldHVybiBOVUxMOwo+ IC0KPiAtCS8qIGdvdG8gZmlyc3QgZWxlbWVudCAqLwo+IC0JZGF0YSsrOwo+IC0Jd2hpbGUgKDEp IHsKPiAtCQlzd2l0Y2ggKCpkYXRhKSB7Cj4gLQkJY2FzZSBNSVBJX1NFUV9FTEVNX1NFTkRfUEtU Ogo+IC0JCQkvKgo+IC0JCQkgKiBza2lwIGJ5IHRoaXMgZWxlbWVudCBwYXlsb2FkIHNpemUKPiAt CQkJICogc2tpcCBlbGVtIGlkLCBjb21tYW5kIGZsYWcgYW5kIGRhdGEgdHlwZQo+IC0JCQkgKi8K PiAtCQkJdG1wIC09IDU7Cj4gLQkJCWlmICh0bXAgPCAwKQo+IC0JCQkJcmV0dXJuIE5VTEw7Cj4g LQo+IC0JCQlkYXRhICs9IDM7Cj4gLQkJCWxlbiA9ICooKHUxNiAqKWRhdGEpOwo+IC0KPiAtCQkJ dG1wIC09IGxlbjsKPiAtCQkJaWYgKHRtcCA8IDApCj4gLQkJCQlyZXR1cm4gTlVMTDsKPiAtCj4g LQkJCS8qIHNraXAgYnkgbGVuICovCj4gLQkJCWRhdGEgPSBkYXRhICsgMiArIGxlbjsKPiAtCQkJ YnJlYWs7Cj4gLQkJY2FzZSBNSVBJX1NFUV9FTEVNX0RFTEFZOgo+IC0JCQkvKiBza2lwIGJ5IGVs ZW0gaWQsIGFuZCBkZWxheSBpcyA0IGJ5dGVzICovCj4gLQkJCXRtcCAtPSA1Owo+IC0JCQlpZiAo dG1wIDwgMCkKPiAtCQkJCXJldHVybiBOVUxMOwo+IC0KPiAtCQkJZGF0YSArPSA1Owo+IC0JCQli cmVhazsKPiAtCQljYXNlIE1JUElfU0VRX0VMRU1fR1BJTzoKPiAtCQkJdG1wIC09IDM7Cj4gLQkJ CWlmICh0bXAgPCAwKQo+IC0JCQkJcmV0dXJuIE5VTEw7Cj4gLQo+IC0JCQlkYXRhICs9IDM7Cj4g LQkJCWJyZWFrOwo+IC0JCWRlZmF1bHQ6Cj4gLQkJCURSTV9FUlJPUigiVW5rbm93biBlbGVtZW50 XG4iKTsKPiAtCQkJcmV0dXJuIE5VTEw7Cj4gLQkJfQo+IC0KPiAtCQkvKiBlbmQgb2Ygc2VxdWVu Y2UgPyAqLwo+IC0JCWlmICgqZGF0YSA9PSAwKQo+IC0JCQlicmVhazsKPiAtCX0KPiAtCj4gLQkv KiBnb3RvIG5leHQgc2VxdWVuY2Ugb3IgZW5kIG9mIGJsb2NrIGJ5dGUgKi8KPiAtCWlmICgtLXRt cCA8IDApCj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQo+IC0JZGF0YSsrOwo+IC0KPiAtCS8qIHVwZGF0 ZSBhbW91bnQgb2YgZGF0YSBsZWZ0IGZvciB0aGUgc2VxdWVuY2UgYmxvY2sgdG8gYmUgcGFyc2Vk ICovCj4gLQkqc2l6ZSA9IHRtcDsKPiAtCXJldHVybiBkYXRhOwo+IC19Cj4gLQo+ICBzdGF0aWMg dm9pZAo+ICBwYXJzZV9taXBpX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+IEBAIC04NTUsNiArNzg4 LDM5IEBAIGZpbmRfcGFuZWxfc2VxdWVuY2VfYmxvY2soY29uc3Qgc3RydWN0IGJkYl9taXBpX3Nl cXVlbmNlICpzZXF1ZW5jZSwKPiAgCXJldHVybiBOVUxMOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50 IGdvdG9fbmV4dF9zZXF1ZW5jZShjb25zdCB1OCAqZGF0YSwgaW50IGluZGV4LCBpbnQgdG90YWwp Cj4gK3sKPiArCXUxNiBsZW47Cj4gKwo+ICsJLyogU2tpcCBTZXF1ZW5jZSBCeXRlLiAqLwo+ICsJ Zm9yIChpbmRleCA9IGluZGV4ICsgMTsgaW5kZXggPCB0b3RhbDsgaW5kZXggKz0gbGVuKSB7Cj4g KwkJdTggb3BlcmF0aW9uX2J5dGUgPSAqKGRhdGEgKyBpbmRleCk7Cj4gKwkJaW5kZXgrKzsKPiAr Cj4gKwkJc3dpdGNoIChvcGVyYXRpb25fYnl0ZSkgewo+ICsJCWNhc2UgTUlQSV9TRVFfRUxFTV9F TkQ6Cj4gKwkJCXJldHVybiBpbmRleDsKPiArCQljYXNlIE1JUElfU0VRX0VMRU1fU0VORF9QS1Q6 Cj4gKwkJCWlmIChpbmRleCArIDQgPiB0b3RhbCkKPiArCQkJCXJldHVybiAwOwo+ICsKPiArCQkJ bGVuID0gKigoY29uc3QgdTE2ICopKGRhdGEgKyBpbmRleCArIDIpKSArIDQ7Cj4gKwkJCWJyZWFr Owo+ICsJCWNhc2UgTUlQSV9TRVFfRUxFTV9ERUxBWToKPiArCQkJbGVuID0gNDsKPiArCQkJYnJl YWs7Cj4gKwkJY2FzZSBNSVBJX1NFUV9FTEVNX0dQSU86Cj4gKwkJCWxlbiA9IDI7Cj4gKwkJCWJy ZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCURSTV9FUlJPUigiVW5rbm93biBvcGVyYXRpb24gYnl0 ZVxuIik7Cj4gKwkJCXJldHVybiAwOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiAgc3RhdGljIHZvaWQKPiAgcGFyc2VfbWlwaV9zZXF1ZW5jZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpi ZGIpCj4gQEAgLTg2Myw3ICs4MjksNyBAQCBwYXJzZV9taXBpX3NlcXVlbmNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWNvbnN0IHU4ICpzZXFfZGF0YTsKPiAgCXUxNiBz ZXFfc2l6ZTsKPiAgCXU4ICpkYXRhOwo+IC0JdTE2IGJsb2NrX3NpemU7Cj4gKwlpbnQgaW5kZXgg PSAwOwo+ICAKPiAgCS8qIE9ubHkgb3VyIGdlbmVyaWMgcGFuZWwgZHJpdmVyIHVzZXMgdGhlIHNl cXVlbmNlIGJsb2NrLiAqLwo+ICAJaWYgKGRldl9wcml2LT52YnQuZHNpLnBhbmVsX2lkICE9IE1J UElfRFNJX0dFTkVSSUNfUEFORUxfSUQpCj4gQEAgLTg4Myw1OSArODQ5LDQzIEBAIHBhcnNlX21p cGlfc2VxdWVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCURS TV9ERUJVR19EUklWRVIoIkZvdW5kIE1JUEkgc2VxdWVuY2UgYmxvY2tcbiIpOwo+ICAKPiAtCWJs b2NrX3NpemUgPSBnZXRfYmxvY2tzaXplKHNlcXVlbmNlKTsKPiAtCj4gLQkvKgo+IC0JICogcGFy c2UgdGhlIHNlcXVlbmNlIGJsb2NrIGZvciBpbmRpdmlkdWFsIHNlcXVlbmNlcwo+IC0JICovCj4g LQlkZXZfcHJpdi0+dmJ0LmRzaS5zZXFfdmVyc2lvbiA9IHNlcXVlbmNlLT52ZXJzaW9uOwo+IC0K PiAgCXNlcV9kYXRhID0gZmluZF9wYW5lbF9zZXF1ZW5jZV9ibG9jayhzZXF1ZW5jZSwgcGFuZWxf dHlwZSwgJnNlcV9zaXplKTsKPiAgCWlmICghc2VxX2RhdGEpCj4gIAkJcmV0dXJuOwo+ICAKPiAt CWRldl9wcml2LT52YnQuZHNpLmRhdGEgPSBrbWVtZHVwKHNlcV9kYXRhLCBzZXFfc2l6ZSwgR0ZQ X0tFUk5FTCk7Cj4gLQlpZiAoIWRldl9wcml2LT52YnQuZHNpLmRhdGEpCj4gKwlkYXRhID0ga21l bWR1cChzZXFfZGF0YSwgc2VxX3NpemUsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkYXRhKQo+ICAJ CXJldHVybjsKPiAgCj4gLQkvKgo+IC0JICogbG9vcCBpbnRvIHRoZSBzZXF1ZW5jZSBkYXRhIGFu ZCBzcGxpdCBpbnRvIG11bHRpcGxlIHNlcXVuZWNlcwo+IC0JICogVGhlcmUgYXJlIG9ubHkgNSB0 eXBlcyBvZiBzZXF1ZW5jZXMgYXMgb2Ygbm93Cj4gLQkgKi8KPiAtCWRhdGEgPSBkZXZfcHJpdi0+ dmJ0LmRzaS5kYXRhOwo+IC0JZGV2X3ByaXYtPnZidC5kc2kuc2l6ZSA9IHNlcV9zaXplOwo+ICsJ LyogUGFyc2UgdGhlIHNlcXVlbmNlcywgc3RvcmUgcG9pbnRlcnMgdG8gZWFjaCBzZXF1ZW5jZS4g Ki8KPiArCWZvciAoOzspIHsKPiArCQl1OCBzZXFfaWQgPSAqKGRhdGEgKyBpbmRleCk7Cj4gKwkJ aWYgKHNlcV9pZCA9PSBNSVBJX1NFUV9FTkQpCj4gKwkJCWJyZWFrOwo+ICAKPiAtCS8qIHR3byBj b25zZWN1dGl2ZSAweDAwIGluZGljYXRlIGVuZCBvZiBhbGwgc2VxdWVuY2VzICovCj4gLQl3aGls ZSAoMSkgewo+IC0JCWludCBzZXFfaWQgPSAqZGF0YTsKPiAtCQlpZiAoTUlQSV9TRVFfTUFYID4g c2VxX2lkICYmIHNlcV9pZCA+IE1JUElfU0VRX1VOREVGSU5FRCkgewo+IC0JCQlkZXZfcHJpdi0+ dmJ0LmRzaS5zZXF1ZW5jZVtzZXFfaWRdID0gZGF0YTsKPiAtCQkJRFJNX0RFQlVHX0RSSVZFUigi Rm91bmQgbWlwaSBzZXF1ZW5jZSAtICVkXG4iLCBzZXFfaWQpOwo+IC0JCX0gZWxzZSB7Cj4gLQkJ CURSTV9FUlJPUigidW5kZWZpbmVkIHNlcXVlbmNlXG4iKTsKPiArCQlpZiAoc2VxX2lkID49IE1J UElfU0VRX01BWCkgewo+ICsJCQlEUk1fRVJST1IoIlVua25vd24gc2VxdWVuY2UgJXVcbiIsIHNl cV9pZCk7Cj4gIAkJCWdvdG8gZXJyOwo+ICAJCX0KPiAgCj4gLQkJLyogcGFydGlhbCBwYXJzaW5n IHRvIHNraXAgZWxlbWVudHMgKi8KPiAtCQlkYXRhID0gZ290b19uZXh0X3NlcXVlbmNlKGRhdGEs ICZzZXFfc2l6ZSk7Cj4gKwkJZGV2X3ByaXYtPnZidC5kc2kuc2VxdWVuY2Vbc2VxX2lkXSA9IGRh dGEgKyBpbmRleDsKPiAgCj4gLQkJaWYgKGRhdGEgPT0gTlVMTCkgewo+IC0JCQlEUk1fRVJST1Io IlNlcXVlbmNlIGVsZW1lbnRzIGdvaW5nIGJleW9uZCBibG9jayBpdHNlbGYuIFNlcXVlbmNlIGJs b2NrIHBhcnNpbmcgZmFpbGVkXG4iKTsKPiArCQlpbmRleCA9IGdvdG9fbmV4dF9zZXF1ZW5jZShk YXRhLCBpbmRleCwgc2VxX3NpemUpOwo+ICsJCWlmICghaW5kZXgpIHsKPiArCQkJRFJNX0VSUk9S KCJJbnZhbGlkIHNlcXVlbmNlICV1XG4iLCBzZXFfaWQpOwo+ICAJCQlnb3RvIGVycjsKPiAgCQl9 Cj4gLQo+IC0JCWlmICgqZGF0YSA9PSAwKQo+IC0JCQlicmVhazsgLyogZW5kIG9mIHNlcXVlbmNl IHJlYWNoZWQgKi8KPiAgCX0KPiAgCj4gLQlEUk1fREVCVUdfRFJJVkVSKCJNSVBJIHJlbGF0ZWQg dmJ0IHBhcnNpbmcgY29tcGxldGVcbiIpOwo+ICsJZGV2X3ByaXYtPnZidC5kc2kuZGF0YSA9IGRh dGE7Cj4gKwlkZXZfcHJpdi0+dmJ0LmRzaS5zaXplID0gc2VxX3NpemU7Cj4gKwlkZXZfcHJpdi0+ dmJ0LmRzaS5zZXFfdmVyc2lvbiA9IHNlcXVlbmNlLT52ZXJzaW9uOwo+ICsKPiArCURSTV9ERUJV R19EUklWRVIoIk1JUEkgcmVsYXRlZCBWQlQgcGFyc2luZyBjb21wbGV0ZVxuIik7Cj4gIAlyZXR1 cm47Cj4gLWVycjoKPiAtCWtmcmVlKGRldl9wcml2LT52YnQuZHNpLmRhdGEpOwo+IC0JZGV2X3By aXYtPnZidC5kc2kuZGF0YSA9IE5VTEw7Cj4gIAo+IC0JLyogZXJyb3IgZHVyaW5nIHBhcnNpbmcg c28gc2V0IGFsbCBwb2ludGVycyB0byBudWxsCj4gLQkgKiBiZWNhdXNlIG9mIHBhcnRpYWwgcGFy c2luZyAqLwo+ICtlcnI6Cj4gKwlrZnJlZShkYXRhKTsKPiAgCW1lbXNldChkZXZfcHJpdi0+dmJ0 LmRzaS5zZXF1ZW5jZSwgMCwgc2l6ZW9mKGRldl9wcml2LT52YnQuZHNpLnNlcXVlbmNlKSk7Cj4g IH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+IGluZGV4IDIxYzE2MmUwMTE4OS4u NGU4N2RmMTZlN2IzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jp b3MuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+IEBAIC05NTQs NyArOTU0LDcgQEAgc3RydWN0IGJkYl9taXBpX3NlcXVlbmNlIHsKPiAgCj4gIC8qIE1JUEkgU2Vx dW5lY2UgQmxvY2sgZGVmaW5pdGlvbnMgKi8KPiAgZW51bSBtaXBpX3NlcSB7Cj4gLQlNSVBJX1NF UV9VTkRFRklORUQgPSAwLAo+ICsJTUlQSV9TRVFfRU5EID0gMCwKPiAgCU1JUElfU0VRX0FTU0VS VF9SRVNFVCwKPiAgCU1JUElfU0VRX0lOSVRfT1RQLAo+ICAJTUlQSV9TRVFfRElTUExBWV9PTiwK PiBAQCAtOTY0LDcgKzk2NCw3IEBAIGVudW0gbWlwaV9zZXEgewo+ICB9Owo+ICAKPiAgZW51bSBt aXBpX3NlcV9lbGVtZW50IHsKPiAtCU1JUElfU0VRX0VMRU1fVU5ERUZJTkVEID0gMCwKPiArCU1J UElfU0VRX0VMRU1fRU5EID0gMCwKPiAgCU1JUElfU0VRX0VMRU1fU0VORF9QS1QsCj4gIAlNSVBJ X1NFUV9FTEVNX0RFTEFZLAo+ICAJTUlQSV9TRVFfRUxFTV9HUElPLAo+IC0tIAo+IDIuMS40Cj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=