From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v2.1 1/7] drm/atomic: Add new iterators over all state, v3. Date: Sun, 15 Jan 2017 21:56:02 +0200 Message-ID: <3076067.j8A88NPzeg@avalon> References: <1484043698-6703-1-git-send-email-maarten.lankhorst@linux.intel.com> <1484043698-6703-2-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: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgTWFhcnRlbiwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLgoKT24gVHVlc2RheSAxMCBKYW4g MjAxNyAxNDo0Njo1OCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiBBZGQgZm9yX2VhY2hfKG9s ZCkobmV3KV8ocGxhbmUsY29ubmVjdG9yLGNydGMpX2luX3N0YXRlIGl0ZXJhdG9ycyB0bwo+IHJl cGxhY2UgdGhlIG9sZCBmb3JfZWFjaF94eHhfaW5fc3RhdGUgb25lcy4gVGhpcyBpcyB1c2VmdWwg Zm9yID4xIGZsaXAKPiBkZXB0aCBhbmQgZ2V0dGluZyByaWQgb2YgYWxsIHh4eC0+c3RhdGUgZGVy ZWZlcmVuY2VzLgo+IAo+IFRoaXMgcmVxdWlyZXMgZXh0cmEgZml4dXBzIGRvbmUgd2hlbiBjb21t aXR0aW5nIGEgc3RhdGUgYWZ0ZXIKPiBkdXBsaWNhdGluZywgd2hpY2ggaW4gZ2VuZXJhbCBpc24n dCB2YWxpZCBidXQgaXMgdXNlZCBieSBzdXNwZW5kL3Jlc3VtZS4KPiBUbyBoYW5kbGUgdGhlc2Us IGludHJvZHVjZSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZQo+IHdo aWNoIHBlcmZvcm1zIHRob3NlIGZpeHVwcyBiZWZvcmUgY2hlY2tpbmcgJiBjb21taXR0aW5nIHRo ZSBzdGF0ZS4KPiAKPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IC0gUmVtb3ZlIG5vbmJsb2NrIHBhcmFt ZXRlciBmb3IgY29tbWl0X2R1cGxpY2F0ZWRfc3RhdGUuCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAt IFVzZSBjb21taXRfZHVwbGljYXRlZF9zdGF0ZSBmb3IgaTkxNSBsb2FkIGRldGVjdGlvbi4KPiAt IEFkZCBXQVJOX09OKG9sZF9zdGF0ZSAhPSBvYmotPnN0YXRlKSBiZWZvcmUgc3dhcHBpbmcuCj4g Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiBGb3Jnb3QgdGhhdCB0aGVyZSB3YXMgYSB2Mi4gSXQgc3Rp bGwgYnJva2Ugb24gaWd0IGxvYWQgZGV0ZWN0IHRlc3RzLCB0aGlzCj4gc2hvdWxkIGJlIHRoZSBm aXguCj4gCj4gSSBhbHNvIGFkZGVkIGEgYmlnIFdBUk5fT04gYmVmb3JlIHN3YXBwaW5nIHRvIGVu c3VyZSBvbGQgc3RhdGUgaXMgY29ycmVjdC4KPiBBdCB0aGlzIHBvaW50IHdlIGNhbiBubyBsb25n ZXIgZml4IGl0IGJlY2F1c2UgYXRvbWljX2NoZWNrIGlzIGNhbGxlZCB3aXRoCj4gdGhlIHdyb25n IGl0ZW1zLCBidXQgaXQgd2lsbCBoZWxwIGxpbWl0IHRoZSBkYW1hZ2UuCgpUaGlzIHBhdGNoIG5v dyBjb25mbGljdHMgd2l0aCAiW1BBVENIIHYyIDQvN10gZHJtL2F0b21pYzogRml4IGF0b21pYyBo ZWxwZXJzIAp0byB1c2UgdGhlIG5ldyBpdGVyYXRvciBtYWNyb3MuIi4gQ291bGQgeW91IGZpeCB0 aGF0IGFuZCByZXBvc3QgdGhlIHdob2xlIApzZXJpZXMgPwoKPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWMuYyAgICAgICAgIHwgIDYgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEzICsrKy0tLQo+ICBpbmNsdWRlL2RybS9k cm1fYXRvbWljLmggICAgICAgICAgICAgfCA4MQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLSBpbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oICAgICAgfAo+ICAyICsK PiAgNSBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggNjQxNGJjZjdmNDFiLi4xYzFjYmY0MzY3MTcgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMjc1LDYgKzI3NSw4IEBAIGRybV9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUsIHJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwo+IAo+ICAJc3RhdGUtPmNydGNzW2luZGV4XS5zdGF0ZSA9IGNydGNfc3Rh dGU7Cj4gKwlzdGF0ZS0+Y3J0Y3NbaW5kZXhdLm9sZF9zdGF0ZSA9IGNydGMtPnN0YXRlOwo+ICsJ c3RhdGUtPmNydGNzW2luZGV4XS5uZXdfc3RhdGUgPSBjcnRjX3N0YXRlOwo+ICAJc3RhdGUtPmNy dGNzW2luZGV4XS5wdHIgPSBjcnRjOwo+ICAJY3J0Y19zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiAK PiBAQCAtNjkxLDYgKzY5Myw4IEBAIGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlCj4gKnN0YXRlLAo+IAo+ICAJc3RhdGUtPnBsYW5lc1tpbmRleF0uc3Rh dGUgPSBwbGFuZV9zdGF0ZTsKPiAgCXN0YXRlLT5wbGFuZXNbaW5kZXhdLnB0ciA9IHBsYW5lOwo+ ICsJc3RhdGUtPnBsYW5lc1tpbmRleF0ub2xkX3N0YXRlID0gcGxhbmUtPnN0YXRlOwo+ICsJc3Rh dGUtPnBsYW5lc1tpbmRleF0ubmV3X3N0YXRlID0gcGxhbmVfc3RhdGU7Cj4gIAlwbGFuZV9zdGF0 ZS0+c3RhdGUgPSBzdGF0ZTsKPiAKPiAgCURSTV9ERUJVR19BVE9NSUMoIkFkZGVkIFtQTEFORTol ZDolc10gJXAgc3RhdGUgdG8gJXBcbiIsCj4gQEAgLTEwMzEsNiArMTAzNSw4IEBAIGRybV9hdG9t aWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ICpzdGF0ZSwK PiAKPiAgCWRybV9jb25uZWN0b3JfcmVmZXJlbmNlKGNvbm5lY3Rvcik7Cj4gIAlzdGF0ZS0+Y29u bmVjdG9yc1tpbmRleF0uc3RhdGUgPSBjb25uZWN0b3Jfc3RhdGU7Cj4gKwlzdGF0ZS0+Y29ubmVj dG9yc1tpbmRleF0ub2xkX3N0YXRlID0gY29ubmVjdG9yLT5zdGF0ZTsKPiArCXN0YXRlLT5jb25u ZWN0b3JzW2luZGV4XS5uZXdfc3RhdGUgPSBjb25uZWN0b3Jfc3RhdGU7Cj4gIAlzdGF0ZS0+Y29u bmVjdG9yc1tpbmRleF0ucHRyID0gY29ubmVjdG9yOwo+ICAJY29ubmVjdG9yX3N0YXRlLT5zdGF0 ZSA9IHN0YXRlOwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgaW5kZXggN2I3 MWFjNDhiOGE0Li5iNjUyZWYxYTI1YjEKPiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gQEAgLTE5NzEsMTEgKzE5NzEsMTEgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBpbnQgaTsKPiAgCWxv bmcgcmV0Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUsICpvbGRfY29ubl9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgKm9sZF9jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRy bV9wbGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsK PiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLCAqb2xkX3BsYW5lX3N0YXRl Owo+ICAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+IAo+ICAJaWYgKHN0YWxsKSB7 Cj4gQEAgLTE5OTksMTMgKzE5OTksMTcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0 YXRlKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCB9Cj4gIAl9Cj4gCj4gLQlmb3Jf ZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkg ewo+ICsJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9y LCBvbGRfY29ubl9zdGF0ZSwKPiBjb25uX3N0YXRlLCBpKSB7ICsJCVdBUk5fT04oY29ubmVjdG9y LT5zdGF0ZSAhPSBvbGRfY29ubl9zdGF0ZSk7Cj4gKwo+ICAJCWNvbm5lY3Rvci0+c3RhdGUtPnN0 YXRlID0gc3RhdGU7Cj4gIAkJc3dhcChzdGF0ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSwgY29ubmVj dG9yLT5zdGF0ZSk7Cj4gIAkJY29ubmVjdG9yLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ICAJfQo+ IAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkg ewo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRj X3N0YXRlLCBjcnRjX3N0YXRlLCAKaSkKPiB7ICsJCVdBUk5fT04oY3J0Yy0+c3RhdGUgIT0gb2xk X2NydGNfc3RhdGUpOwo+ICsKPiAgCQljcnRjLT5zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiAgCQlz d2FwKHN0YXRlLT5jcnRjc1tpXS5zdGF0ZSwgY3J0Yy0+c3RhdGUpOwo+ICAJCWNydGMtPnN0YXRl LT5zdGF0ZSA9IE5VTEw7Cj4gQEAgLTIwMjAsNyArMjAyNCw5IEBAIHZvaWQgZHJtX2F0b21pY19o ZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgfQo+ICAJ fQo+IAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0 ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwg b2xkX3BsYW5lX3N0YXRlLCAKcGxhbmVfc3RhdGUsCj4gaSkgeyArCQlXQVJOX09OKHBsYW5lLT5z dGF0ZSAhPSBvbGRfcGxhbmVfc3RhdGUpOwo+ICsKPiAgCQlwbGFuZS0+c3RhdGUtPnN0YXRlID0g c3RhdGU7Cj4gIAkJc3dhcChzdGF0ZS0+cGxhbmVzW2ldLnN0YXRlLCBwbGFuZS0+c3RhdGUpOwo+ ICAJCXBsYW5lLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+IEBAIC0yNDcxLDcgKzI0NzcsNyBAQCBF WFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfYWxsKTsKPiAgICoKPiAgICog U2VlIGFsc286Cj4gICAqIGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9zdGF0ZSgpLCBkcm1f YXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbCgpLAo+IC0gKiBkcm1fYXRvbWljX2hlbHBlcl9yZXN1 bWUoKQo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9yZXN1bWUoKSwgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X2R1cGxpY2F0ZWRfc3RhdGUoKQo+ICAgKi8KPiAgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKmRybV9hdG9taWNfaGVscGVyX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg ewo+IEBAIC0yNTEyLDYgKzI1MTgsNDcgQEAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqZHJt X2F0b21pY19oZWxwZXJfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IEVYUE9SVF9T WU1CT0woZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZCk7Cj4gCj4gIC8qKgo+ICsgKiBkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZSAtIGNvbW1pdCBkdXBsaWNhdGVkIHN0 YXRlCj4gKyAqIEBzdGF0ZTogZHVwbGljYXRlZCBhdG9taWMgc3RhdGUgdG8gY29tbWl0Cj4gKyAq IEBjdHg6IHBvaW50ZXIgdG8gYWNxdWlyZV9jdHggdG8gdXNlIGZvciBjb21taXQuCj4gKyAqCj4g KyAqIFRoZSBzdGF0ZSByZXR1cm5lZCBieSBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfc3Rh dGUoKSBhbmQKPiArICogZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZCgpIGlzIHBhcnRpYWxseSBp bnZhbGlkLCBhbmQgbmVlZHMgdG8KPiArICogYmUgZml4ZWQgdXAgYmVmb3JlIGNvbW1pdC4KPiAr ICoKPiArICogUmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvbiBmYWlsdXJlLgo+ICsgKgo+ICsgKiBTZWUgYWxzbzoKPiArICogZHJtX2F0b21pY19o ZWxwZXJfc3VzcGVuZCgpCj4gKyAqLwo+ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2R1 cGxpY2F0ZWRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUsICsJCQkJCSAg ICAgIHN0cnVjdCAKZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiArewo+ICsJaW50IGk7 Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsKPiArCXN0 YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiArCj4gKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3Rh dGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkKPiArCQlzdGF0ZS0+cGxhbmVzW2ldLm9s ZF9zdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKPiArCj4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0 ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKPiArCQlzdGF0ZS0+Y3J0Y3NbaV0ub2xkX3N0 YXRlID0gY3J0Yy0+c3RhdGU7Cj4gKwo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0 ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKQo+ICsJCXN0YXRlLT5jb25uZWN0b3Jz W2ldLm9sZF9zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7Cj4gKwo+ICsJcmV0dXJuIGRybV9hdG9t aWNfY29tbWl0KHN0YXRlKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKTsKPiArCj4gKy8qKgo+ICAgKiBkcm1fYXRvbWljX2hl bHBlcl9yZXN1bWUgLSBzdWJzeXN0ZW0tbGV2ZWwgcmVzdW1lIGhlbHBlcgo+ICAgKiBAZGV2OiBE Uk0gZGV2aWNlCj4gICAqIEBzdGF0ZTogYXRvbWljIHN0YXRlIHRvIHJlc3VtZSB0bwo+IEBAIC0y NTM0LDkgKzI1ODEsOSBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlpbnQgZXJyOwo+IAo+ICAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRl dik7Cj4gKwo+ICAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKPiAtCXN0YXRlLT5hY3F1aXJl X2N0eCA9IGNvbmZpZy0+YWNxdWlyZV9jdHg7Cj4gLQllcnIgPSBkcm1fYXRvbWljX2NvbW1pdChz dGF0ZSk7Cj4gKwllcnIgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0 ZShzdGF0ZSwKPiBjb25maWctPmFjcXVpcmVfY3R4KTsgZHJtX21vZGVzZXRfdW5sb2NrX2FsbChk ZXYpOwo+IAo+ICAJcmV0dXJuIGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgaW5kZXggZTIxNTBhNjQ4NjBjLi41MzY0NzI0ZGY1N2YKPiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMzQ4OSw3ICszNDg5LDggQEAgc3RhdGljIHZvaWQg aW50ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmVzKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldikKPiAK PiAgc3RhdGljIGludAo+ICBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gLQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArCQkg ICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCSAgICAgICBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IEBAIC0zNTEzLDcg KzM1MTQsNyBAQCBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkvKiBpZ25vcmUgYW55IHJlc2V0IHZhbHVlcy9CSU9TIGxlZnRvdmVycyBpbiB0aGUgV00g cmVnaXN0ZXJzICovCj4gIAl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5za2lwX2ludGVy bWVkaWF0ZV93bSA9IHRydWU7Cj4gCj4gLQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7 Cj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZShzdGF0 ZSwgY3R4KTsKPiAKPiAgCVdBUk5fT04ocmV0ID09IC1FREVBRExLKTsKPiAgCXJldHVybiByZXQ7 Cj4gQEAgLTM2MDcsNyArMzYwOCw3IEBAIHZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KSAqLwo+ICAJCQlpbnRlbF91cGRhdGVfcHJpbWFy eV9wbGFuZXMoZGV2KTsKPiAgCQl9IGVsc2Ugewo+IC0JCQlyZXQgPSBfX2ludGVsX2Rpc3BsYXlf cmVzdW1lKGRldiwgc3RhdGUpOwo+ICsJCQlyZXQgPSBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKGRl diwgc3RhdGUsIGN0eCk7Cj4gIAkJCWlmIChyZXQpCj4gIAkJCQlEUk1fRVJST1IoIlJlc3Rvcmlu ZyBvbGQgc3RhdGUgZmFpbGVkIHdpdGggCiVpXG4iLCByZXQpOwo+ICAJCX0KPiBAQCAtMzYyNyw3 ICszNjI4LDcgQEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiAqZGV2X3ByaXYpIGRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2X3ByaXYp Owo+ICAJCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAKPiAtCQlyZXQg PSBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKGRldiwgc3RhdGUpOwo+ICsJCXJldCA9IF9faW50ZWxf ZGlzcGxheV9yZXN1bWUoZGV2LCBzdGF0ZSwgY3R4KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlEUk1f RVJST1IoIlJlc3RvcmluZyBvbGQgc3RhdGUgZmFpbGVkIHdpdGggJWlcbiIsIApyZXQpOwo+IAo+ IEBAIC0xMTMyOCw3ICsxMTMyOSw3IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9w aXBlKHN0cnVjdAo+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaWYgKCFzdGF0ZSkKPiAgCQly ZXR1cm47Cj4gCj4gLQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKwlyZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZShzdGF0ZSwgY3R4KTsKPiAg CWlmIChyZXQpCj4gIAkJRFJNX0RFQlVHX0tNUygiQ291bGRuJ3QgcmVsZWFzZSBsb2FkIGRldGVj dCBwaXBlOiAlaVxuIiwgcmV0KTsKPiAgCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiBA QCAtMTcyMTAsNyArMTcyMTEsNyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4gCj4gIAlpZiAoIXJldCkKPiAtCQlyZXQgPSBfX2ludGVs X2Rpc3BsYXlfcmVzdW1lKGRldiwgc3RhdGUpOwo+ICsJCXJldCA9IF9faW50ZWxfZGlzcGxheV9y ZXN1bWUoZGV2LCBzdGF0ZSwgJmN0eCk7Cj4gCj4gIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZj dHgpOwo+ICAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiBpbmRl eCBmOTYyMjBlZDQwMDQuLjYwNjJlN2YyNzMyNSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiBAQCAtMTM3LDEy ICsxMzcsMTIgQEAgc3RydWN0IGRybV9jcnRjX2NvbW1pdCB7Cj4gCj4gIHN0cnVjdCBfX2RybV9w bGFuZXNfc3RhdGUgewo+ICAJc3RydWN0IGRybV9wbGFuZSAqcHRyOwo+IC0Jc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwgKm9s ZF9zdGF0ZSwgKm5ld19zdGF0ZTsKPiAgfTsKPiAKPiAgc3RydWN0IF9fZHJtX2NydGNzX3N0YXRl IHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqcHRyOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpz dGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsICpvbGRfc3RhdGUsICpuZXdf c3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7Cj4gIAlzNjQgX191c2Vy ICpvdXRfZmVuY2VfcHRyOwo+ICAJdW5zaWduZWQgbGFzdF92YmxhbmtfY291bnQ7Cj4gQEAgLTE1 MCw3ICsxNTAsNyBAQCBzdHJ1Y3QgX19kcm1fY3J0Y3Nfc3RhdGUgewo+IAo+ICBzdHJ1Y3QgX19k cm1fY29ubm5lY3RvcnNfc3RhdGUgewo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKnB0cjsKPiAt CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpzdGF0ZSwgKm9sZF9zdGF0ZSwgKm5ld19zdGF0ZTsKPiAgfTsKPiAKPiAgLyoq Cj4gQEAgLTM5Nyw2ICszOTcsMzEgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QKPiBkcm1fcHJpbnRlciAqcCk7IChfX2kpKyspCQkJCQkJCQpcCj4g IAkJZm9yX2VhY2hfaWYgKGNvbm5lY3RvcikKPiAKPiArI2RlZmluZSBmb3JfZWFjaF9vbGRuZXdf Y29ubmVjdG9yX2luX3N0YXRlKF9fc3RhdGUsIGNvbm5lY3RvciwKPiBvbGRfY29ubmVjdG9yX3N0 YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBfX2kpIFwgKwlmb3IgKChfX2kpID0gMDsJCQoJCQkJ CQlcCj4gKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5udW1fY29ubmVjdG9yICYmCQkJCQpcCj4g KwkgICAgICgoY29ubmVjdG9yKSA9IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLnB0ciwJCQkK XAo+ICsJICAgICAob2xkX2Nvbm5lY3Rvcl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNb X19pXS5vbGRfc3RhdGUsCQpcCj4gKwkgICAgIChuZXdfY29ubmVjdG9yX3N0YXRlKSA9IChfX3N0 YXRlKS0+Y29ubmVjdG9yc1tfX2ldLm5ld19zdGF0ZSwgMSk7IAoJXAo+ICsJICAgICAoX19pKSsr KQkJCQkJCQlcCj4gKwkJZm9yX2VhY2hfaWYgKGNvbm5lY3RvcikKPiArCj4gKyNkZWZpbmUgZm9y X2VhY2hfb2xkX2Nvbm5lY3Rvcl9pbl9zdGF0ZShfX3N0YXRlLCBjb25uZWN0b3IsCj4gb2xkX2Nv bm5lY3Rvcl9zdGF0ZSwgX19pKSBcICsJZm9yICgoX19pKSA9IDA7CQkJCQkKCQkJXAo+ICsJICAg ICAoX19pKSA8IChfX3N0YXRlKS0+bnVtX2Nvbm5lY3RvciAmJgkJCQkKXAo+ICsJICAgICAoKGNv bm5lY3RvcikgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5wdHIsCQkJClwKPiArCSAgICAg KG9sZF9jb25uZWN0b3Jfc3RhdGUpID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ub2xkX3N0 YXRlLCAxKTsgCglcCj4gKwkgICAgIChfX2kpKyspCQkJCQkJCVwKPiArCQlmb3JfZWFjaF9pZiAo Y29ubmVjdG9yKQo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRl KF9fc3RhdGUsIGNvbm5lY3RvciwKPiBuZXdfY29ubmVjdG9yX3N0YXRlLCBfX2kpIFwgKwlmb3Ig KChfX2kpID0gMDsJCQkJCQoJCQlcCj4gKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5udW1fY29u bmVjdG9yICYmCQkJCQpcCj4gKwkgICAgICgoY29ubmVjdG9yKSA9IChfX3N0YXRlKS0+Y29ubmVj dG9yc1tfX2ldLnB0ciwJCQkKXAo+ICsJICAgICAobmV3X2Nvbm5lY3Rvcl9zdGF0ZSkgPSAoX19z dGF0ZSktPmNvbm5lY3RvcnNbX19pXS5uZXdfc3RhdGUsIDEpOyAKCVwKPiArCSAgICAgKF9faSkr KykJCQkJCQkJXAo+ICsJCWZvcl9lYWNoX2lmIChjb25uZWN0b3IpCj4gKwo+ICAjZGVmaW5lIGZv cl9lYWNoX2NydGNfaW5fc3RhdGUoX19zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgX19pKQlcCj4g IAlmb3IgKChfX2kpID0gMDsJCQkJCQlcCj4gIAkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYt Pm1vZGVfY29uZmlnLm51bV9jcnRjICYmCVwKPiBAQCAtNDA1LDYgKzQzMCwzMSBAQCB2b2lkIGRy bV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+IGRybV9wcmludGVy ICpwKTsgKF9faSkrKykJCQkJCQlcCj4gIAkJZm9yX2VhY2hfaWYgKGNydGNfc3RhdGUpCj4gCj4g KyNkZWZpbmUgZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoX19zdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gbmV3X2NydGNfc3RhdGUsIF9faSkgXCArCWZvciAoKF9faSkgPSAwOwkJ CQkJCgkJXAo+ICsJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YyAmJgkJXAo+ICsJICAgICAoKGNydGMpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLnB0ciwJ CQlcCj4gKwkgICAgIChvbGRfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19faV0ub2xk X3N0YXRlLAlcCj4gKwkgICAgIChuZXdfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19f aV0ubmV3X3N0YXRlLCAxKTsJXAo+ICsJICAgICAoX19pKSsrKQkJCQkJCQlcCj4gKwkJZm9yX2Vh Y2hfaWYgKGNydGMpCj4gKwo+ICsjZGVmaW5lIGZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKF9f c3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBfX2kpCQpcCj4gKwlmb3IgKChfX2kpID0gMDsJ CQkJCQkJXAo+ICsJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YyAmJgkJXAo+ICsJICAgICAoKGNydGMpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLnB0ciwJ CQlcCj4gKwkgICAgIChvbGRfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19faV0ub2xk X3N0YXRlLCAxKTsJXAo+ICsJICAgICAoX19pKSsrKQkJCQkJCQlcCj4gKwkJZm9yX2VhY2hfaWYg KGNydGMpCj4gKwo+ICsjZGVmaW5lIGZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKF9fc3RhdGUs IGNydGMsIG5ld19jcnRjX3N0YXRlLCBfX2kpCQpcCj4gKwlmb3IgKChfX2kpID0gMDsJCQkJCQkJ XAo+ICsJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YyAm JgkJXAo+ICsJICAgICAoKGNydGMpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLnB0ciwJCQlcCj4g KwkgICAgIChuZXdfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19faV0ubmV3X3N0YXRl LCAxKTsJXAo+ICsJICAgICAoX19pKSsrKQkJCQkJCQlcCj4gKwkJZm9yX2VhY2hfaWYgKGNydGMp Cj4gKwo+ICAjZGVmaW5lIGZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKF9fc3RhdGUsIHBsYW5lLCBw bGFuZV9zdGF0ZSwgX19pKQkJClwKPiAgCWZvciAoKF9faSkgPSAwOwkJCQkJCQlcCj4gIAkgICAg IChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZSAmJglc Cj4gQEAgLTQxMyw2ICs0NjMsMzEgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QKPiBkcm1fcHJpbnRlciAqcCk7IChfX2kpKyspCQkJCQkJCQpcCj4g IAkJZm9yX2VhY2hfaWYgKHBsYW5lX3N0YXRlKQo+IAo+ICsjZGVmaW5lIGZvcl9lYWNoX29sZG5l d19wbGFuZV9pbl9zdGF0ZShfX3N0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLAo+IG5ld19w bGFuZV9zdGF0ZSwgX19pKSBcICsJZm9yICgoX19pKSA9IDA7CQkJCQkKCQlcCj4gKwkgICAgIChf X2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZSAmJglcCj4g KwkgICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIsCQkJXAo+ICsJICAg ICAob2xkX3BsYW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0ub2xkX3N0YXRlLAlc Cj4gKwkgICAgIChuZXdfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5uZXdf c3RhdGUsIDEpOwlcCj4gKwkgICAgIChfX2kpKyspCQkJCQkJCVwKPiArCQlmb3JfZWFjaF9pZiAo cGxhbmUpCj4gKwo+ICsjZGVmaW5lIGZvcl9lYWNoX29sZF9wbGFuZV9pbl9zdGF0ZShfX3N0YXRl LCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBfX2kpIFwKPiArCWZvciAoKF9faSkgPSAwOwkJCQkJ CQlcCj4gKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV90b3Rh bF9wbGFuZSAmJglcCj4gKwkgICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5w dHIsCQkJXAo+ICsJICAgICAob2xkX3BsYW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxhbmVzW19f aV0ub2xkX3N0YXRlLCAxKTsJXAo+ICsJICAgICAoX19pKSsrKQkJCQkJCQlcCj4gKwkJZm9yX2Vh Y2hfaWYgKHBsYW5lKQo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUo X19zdGF0ZSwgcGxhbmUsIG5ld19wbGFuZV9zdGF0ZSwgX19pKSBcCj4gKwlmb3IgKChfX2kpID0g MDsJCQkJCQkJXAo+ICsJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5u dW1fdG90YWxfcGxhbmUgJiYJXAo+ICsJICAgICAoKHBsYW5lKSA9IChfX3N0YXRlKS0+cGxhbmVz W19faV0ucHRyLAkJCVwKPiArCSAgICAgKG5ld19wbGFuZV9zdGF0ZSkgPSAoX19zdGF0ZSktPnBs YW5lc1tfX2ldLm5ld19zdGF0ZSwgMSk7CVwKPiArCSAgICAgKF9faSkrKykJCQkJCQkJXAo+ICsJ CWZvcl9lYWNoX2lmIChwbGFuZSkKPiArCj4gIC8qKgo+ICAgKiBkcm1fYXRvbWljX2NydGNfbmVl ZHNfbW9kZXNldCAtIGNvbXB1dGUgY29tYmluZWQgbW9kZXNldCBuZWVkCj4gICAqIEBzdGF0ZTog JmRybV9jcnRjX3N0YXRlIGZvciB0aGUgQ1JUQwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljX2hlbHBlci5oCj4gYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGlu ZGV4IDRiMjM1M2RjMzRiYS4uZTQzZDRkZTJmZjhmIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9hdG9taWNfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBl ci5oCj4gQEAgLTEwNSw2ICsxMDUsOCBAQCBpbnQgX19kcm1fYXRvbWljX2hlbHBlcl9zZXRfY29u ZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQKPiAqc2V0LCBpbnQgZHJtX2F0b21pY19oZWxwZXJfZGlz YWJsZV9hbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCSAgc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4ICpjdHgpOwo+ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqZHJtX2F0 b21pY19oZWxwZXJfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAraW50IGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlCj4gKnN0YXRlLCArCQkJCQkgICAgICBzdHJ1Y3QgCmRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 ICpjdHgpOwo+ICBpbnQgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAKPiAt LSAyLjcuNAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK