From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [RFC PATCH v2 02/26] ARM: GICv3: allocate LPI pending and property table Date: Thu, 5 Jan 2017 17:13:08 +0000 Message-ID: <45a3aeff-8d06-74a4-cc99-4c58ce69f105@arm.com> References: <20161222182446.18791-1-andre.przywara@arm.com> <20161222182446.18791-3-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cPBa3-0004Bz-VT for xen-devel@lists.xenproject.org; Thu, 05 Jan 2017 17:12:00 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Julien Grall , Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwNC8wMS8xNyAyMTowOSwgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+IE9uIFRo dSwgMjIgRGVjIDIwMTYsIEFuZHJlIFByenl3YXJhIHdyb3RlOgo+PiBUaGUgQVJNIEdJQ3YzIElU UyBwcm92aWRlcyBhIG5ldyBraW5kIG9mIGludGVycnVwdCBjYWxsZWQgTFBJcy4KPj4gVGhlIHBl bmRpbmcgYml0cyBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSAocHJpb3JpdHksIGVuYWJsZSBi aXRzKSBmb3IKPj4gdGhvc2UgTFBJcyBhcmUgc3RvcmVkIGluIHRhYmxlcyBpbiBub3JtYWwgbWVt b3J5LCB3aGljaCBzb2Z0d2FyZSBoYXMgdG8KPj4gcHJvdmlkZSB0byB0aGUgaGFyZHdhcmUuCj4+ IEFsbG9jYXRlIHRoZSByZXF1aXJlZCBtZW1vcnksIGluaXRpYWxpemUgaXQgYW5kIGhhbmQgaXQg b3ZlciB0byBlYWNoCj4+IElUUy4gVGhlIG1heGltdW0gbnVtYmVyIG9mIExQSXMgdG8gYmUgdXNl ZCBjYW4gYmUgYWRqdXN0ZWQgd2l0aCB0aGUKPj4gY29tbWFuZCBsaW5lIG9wdGlvbiAibWF4X2xw aV9iaXRzIiwgd2hpY2ggZGVmYXVsdHMgdG8gYSBjb21waWxlIHRpbWUKPj4gY29uc3RhbnQgZXhw b3NlZCBpbiBLY29uZmlnLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5k cmUucHJ6eXdhcmFAYXJtLmNvbT4KPj4gLS0tCj4+ICB4ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAg ICAgICAgICAgfCAxMCArKysrKwo+PiAgeGVuL2FyY2gvYXJtL2VmaS9lZmktYm9vdC5oICAgICAg IHwgIDEgLQo+PiAgeGVuL2FyY2gvYXJtL2dpYy1pdHMuYyAgICAgICAgICAgIHwgOTQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYz LmMgICAgICAgICAgICAgfCA0MyArKysrKysrKysrKysrKysrKysKPj4gIHhlbi9pbmNsdWRlL2Fz bS1hcm0vYml0b3BzLmggICAgICB8ICAxICsKPj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vY2FjaGUu aCAgICAgICB8ICA0ICsrCj4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaCAgICAgfCAy MiArKysrKysrKy0KPj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaCB8IDQ4ICsr KysrKysrKysrKysrKysrKystCj4+ICA4IGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcg Yi94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+PiBpbmRleCBiZjY0YzYxLi5hN2Q5NDFjIDEwMDY0NAo+ PiAtLS0gYS94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+PiArKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZp Zwo+PiBAQCAtNDksNiArNDksMTYgQEAgY29uZmlnIEhBU19JVFMKPj4gICAgICAgICAgYm9vbCAi R0lDdjMgSVRTIE1TSSBjb250cm9sbGVyIHN1cHBvcnQiCj4+ICAgICAgICAgIGRlcGVuZHMgb24g SEFTX0dJQ1YzCj4+ICAKPj4gK2NvbmZpZyBNQVhfSE9TVF9MUElfQklUUwo+ICAgICAgICAgICAg IF4gTUFYX1BIWVNfTFBJX0JJVFMKClJpZ2h0LCBJIG1pc3NlZCB0aGF0IHN5bWJvbC4KCj4+ICsg ICAgICAgIGRlcGVuZHMgb24gSEFTX0lUUwo+PiArICAgICAgICBpbnQgIk1heGltdW0gYml0cyBm b3IgR0lDdjMgaG9zdCBMUElzICgxNC0zMikiCj4+ICsgICAgICAgIHJhbmdlIDE0IDMyCj4+ICsg ICAgICAgIGRlZmF1bHQgIjIwIgo+PiArICAgICAgICBoZWxwCj4+ICsgICAgICAgICAgU3BlY2lm aWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBMUElzIChiaXRzKSBYZW4gc2hvdWxkIHRha2UgY2Fy ZSBvZi4KPj4gKyAgICAgICAgICBUaGlzIGNhbiBiZSBvdmVycmlkZW4gb24gdGhlIGNvbW1hbmQg bGluZSB3aXRoIHRoZSBtYXhfbHBpX2JpdHMKPj4gKyAgICAgICAgICBwYXJhbWV0ZXIuCj4+ICsK Pj4gIGVuZG1lbnUKPj4gIAo+PiAgbWVudSAiQVJNIGVycmF0YSB3b3JrYXJvdW5kIHZpYSB0aGUg YWx0ZXJuYXRpdmUgZnJhbWV3b3JrIgo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2VmaS9l ZmktYm9vdC5oIGIveGVuL2FyY2gvYXJtL2VmaS9lZmktYm9vdC5oCj4+IGluZGV4IDA0NWQ2Y2Uu LmRjNjRhZWMgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9lZmkvZWZpLWJvb3QuaAo+PiAr KysgYi94ZW4vYXJjaC9hcm0vZWZpL2VmaS1ib290LmgKPj4gQEAgLTEwLDcgKzEwLDYgQEAKPj4g ICNpbmNsdWRlICJlZmktZG9tMC5oIgo+PiAgCj4+ICB2b2lkIG5vcmV0dXJuIGVmaV94ZW5fc3Rh cnQodm9pZCAqZmR0X3B0ciwgdWludDMyX3QgZmR0X3NpemUpOwo+PiAtdm9pZCBfX2ZsdXNoX2Rj YWNoZV9hcmVhKGNvbnN0IHZvaWQgKnZhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpOwo+PiAgCj4+ ICAjZGVmaW5lIERFVklDRV9UUkVFX0dVSUQgXAo+PiAgezB4YjFiNjIxZDUsIDB4ZjE5YywgMHg0 MWE1LCB7MHg4MywgMHgwYiwgMHhkOSwgMHgxNSwgMHgyYywgMHg2OSwgMHhhYSwgMHhlMH19Cj4+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy1p dHMuYwo+PiBpbmRleCA5NzNmOWY5Li42YzNhMzVkIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9h cm0vZ2ljLWl0cy5jCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtaXRzLmMKPj4gQEAgLTIwLDEw ICsyMCwxMDQgQEAKPj4gICNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4+ICAjaW5jbHVkZSA8eGVuL2Rl dmljZV90cmVlLmg+Cj4+ICAjaW5jbHVkZSA8eGVuL2xpYmZkdC9saWJmZHQuaD4KPj4gKyNpbmNs dWRlIDx4ZW4vc2l6ZXMuaD4KPj4gKyNpbmNsdWRlIDxhc20vcDJtLmg+Cj4+ICAjaW5jbHVkZSA8 YXNtL2dpYy5oPgo+PiAgI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgo+PiAgI2luY2x1ZGUg PGFzbS9naWMtaXRzLmg+Cj4+ICAKPj4gKy8qIEdsb2JhbCBzdGF0ZSAqLwo+PiArc3RhdGljIHN0 cnVjdCB7Cj4+ICsgICAgdWludDhfdCAqbHBpX3Byb3BlcnR5Owo+PiArICAgIHVuc2lnbmVkIGlu dCBob3N0X2xwaV9iaXRzOwo+IAo+IEkgdGhpbmsgaXQgaXMgYmVzdCB0byByZW5hbWUgaG9zdF9s cGlfYml0cyB0byBwaHlzX2xwaV9iaXRzLCBvciwgZXZlbgo+IGJldHRlciwgcGh5c19ucl9scGkg YmVjYXVzZSBpdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgTFBJcy4KCkJ1dCB3ZSBuZWVkIHRo ZSBudW1iZXIgb2YgYml0cyBpbiBhdCBsZWFzdCBvbmUgZnVuY3Rpb24gKGZvciBwb3B1bGF0aW5n CnRoZSBQUk9QQkFTRVIgcmVnaXN0ZXIpLCBhbHNvIHRoZSBudW1iZXIgb2YgYml0cyBpcyB0aGUg b3JpZ2luYWwgaW5wdXQKdmFsdWUgYW5kIHNldHMgdGhlIGxpbWl0IG9uIHBvc3NpYmxlIHZhbHVl cyAtIGFzIGl0IG5lZWRzIHRvIGJlIGEgcG93ZXIKb2YgdHdvLgpTbyBzaGFsbCBJIHVzZSBucl9w aHlzX2xwaV9iaXRzIGluc3RlYWQ/Cgo+PiArfSBscGlfZGF0YTsKPj4gKwo+PiArLyogUGVuZGlu ZyB0YWJsZSBmb3IgZWFjaCByZWRpc3RyaWJ1dG9yICovCj4+ICtzdGF0aWMgREVGSU5FX1BFUl9D UFUodm9pZCAqLCBwZW5kaW5nX3RhYmxlKTsKPj4gKwo+PiArI2RlZmluZSBNQVhfUEhZU19MUElT ICAgKEJJVF9VTEwobHBpX2RhdGEuaG9zdF9scGlfYml0cykgLSA4MTkyKQo+PiArCj4+ICt1aW50 NjRfdCBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxlKHZvaWQpCj4+ICt7Cj4+ICsgICAgdWlu dDY0X3QgcmVnLCBhdHRyOwo+PiArICAgIHZvaWQgKnBlbmR0YWJsZTsKPj4gKwo+PiArICAgIGF0 dHIgID0gR0lDX0JBU0VSX0NBQ0hFX1JhV2FXYiA8PCBHSUNSX1BFTkRCQVNFUl9JTk5FUl9DQUNI RUFCSUxJVFlfU0hJRlQ7Cj4+ICsgICAgYXR0ciB8PSBHSUNfQkFTRVJfQ0FDSEVfU2FtZUFzSW5u ZXIgPDwgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+PiArICAgIGF0 dHIgfD0gR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxlIDw8IEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJ TElUWV9TSElGVDsKPj4gKwo+PiArICAgIGlmICggIXRoaXNfY3B1KHBlbmRpbmdfdGFibGUpICkK Pj4gKyAgICB7Cj4+ICsgICAgICAgIC8qCj4+ICsgICAgICAgICAqIFRoZSBwZW5kaW5nIHRhYmxl IGhvbGRzIG9uZSBiaXQgcGVyIExQSSwgc28gd2UgbmVlZCAoMiA8PCAzKSBiaXRzCj4+ICsgICAg ICAgICAqIGxlc3MgYnl0ZXMuIFRoZSBwZW5kaW5nIHRhYmxlIGNvdmVycyBldmVuIGJpdHMgZm9y IGludGVycnVwdCBJRHMKPj4gKyAgICAgICAgICogYmVsb3cgODE5Miwgc28gd2UgYWxsb2NhdGUg dGhlIGZ1bGwgcmFuZ2UuCj4+ICsgICAgICAgICAqIFRoZSBJVFMgaW1wb3NlcyBhIDY0S0IgYWxp Z25tZW50IHJlcXVpcmVtZW50Lgo+PiArICAgICAgICAgKi8KPj4gKyAgICAgICAgcGVuZHRhYmxl ID0gX3htYWxsb2MoQklUX1VMTChscGlfZGF0YS5ob3N0X2xwaV9iaXRzKSAvIDgsIFNaXzY0Syk7 Cj4gCj4gSWYgd2UgbmVlZCAoMiA8PCAzKSBsZXNzIGJ5dGVzLCB3aHkgYXJlIHdlIGRpdmlkaW5n IGJ5IDg/CgpCZWNhdXNlIC4uLiBJIGFtIHdyb25nIGhlcmUgOy0pCgo+IElzbid0IHRoaXMganVz dCBhIHN0cmFpZ2h0Zm9yd2FyZCBiaXRzIHRvIGJ5dGVzIGNvbnZlcnNpb24/CgpZZXMuCgo+IEkg dGhpbmsgdGhlIGNvbW1lbnQgaXMgcHJvYmFibHkgd3Jvbmcgb3Igb3V0ZGF0ZWQuCgpZZWFoLCBJ IHRyaWVkIHRvIG1ha2UgdGhpcyBjbGVhcmVyIGFmdGVyIHlvdXIgcHJldmlvdXMgY29tbWVudHMg KHdoZXJlCnRoaXMgc2ltcGxlIGJpdHMtdG8tYnl0ZXMgYXBwYXJlbnRseSBkaWRuJ3QgY29tZSB0 aHJvdWdoKSBhbmQgZ290CnNvbWVob3cgY2FycmllZCBhd2F5IDstKQoKPj4gKyAgICAgICAgaWYg KCAhcGVuZHRhYmxlICkKPj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+PiArCj4+ICsgICAgICAg IG1lbXNldChwZW5kdGFibGUsIDAsIEJJVF9VTEwobHBpX2RhdGEuaG9zdF9scGlfYml0cykgLyA4 KTsKPj4gKyAgICAgICAgX19mbHVzaF9kY2FjaGVfYXJlYShwZW5kdGFibGUsIEJJVF9VTEwobHBp X2RhdGEuaG9zdF9scGlfYml0cykgLyA4KTsKPj4gKwo+PiArICAgICAgICB0aGlzX2NwdShwZW5k aW5nX3RhYmxlKSA9IHBlbmR0YWJsZTsKPj4gKyAgICB9Cj4+ICsgICAgZWxzZQo+PiArICAgIHsK Pj4gKyAgICAgICAgcGVuZHRhYmxlID0gdGhpc19jcHUocGVuZGluZ190YWJsZSk7Cj4gCj4gSXNu J3QgdGhpcyBhbiBlcnJvciBjb25kaXRpb24/CgpUaGlzIGlzIGludGVybmFsbHkgb25seSBjYWxs ZWQgb25jZSB3aGVuIGVhY2ggcmVkaXN0cmlidXRvciBpcwplbnVtZXJhdGVkLiBTbyB0aGlzIG1h eWJlIGEgQlVHX09OKCksIGJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBJIGRvbid0IHNlZQphIHJlYXNv biB3aHkgdGhpcyB3b3VsZCBiZSBmYXRhbC4gSWYgd2UgdHJ5IHRvICJhbGxvY2F0ZSIgYSBzZWNv bmQgdGltZSwKd2UganVzdCBnZXQgdGhlIGV4aXN0aW5nIHZlcnNpb24uCkJ1dCBJIGNhbiBoYXBw aWx5IHJlcGxhY2UgdGhpcyB3aXRoIGEgQlVHX09OKCksIGlmIHlvdSBwcmVmZXIuIFNlZW1zIHRv CmJlIG1vcmUgbWF0Y2hpbmcgdGhlIFhlbiBwb2xpY3ksIEkgZ3Vlc3MuCgo+PiArICAgIH0KPj4g Kwo+PiArICAgIHJlZyAgPSBhdHRyIHwgR0lDUl9QRU5EQkFTRVJfUFRaOwo+PiArICAgIHJlZyB8 PSB2aXJ0X3RvX21hZGRyKHBlbmR0YWJsZSkgJiBHRU5NQVNLKDUxLCAxNik7Cj4+ICsKPj4gKyAg ICByZXR1cm4gcmVnOwo+PiArfQo+PiArCj4+ICt1aW50NjRfdCBnaWN2M19scGlfZ2V0X3Byb3B0 YWJsZSgpCj4+ICt7Cj4+ICsgICAgdWludDY0X3QgYXR0ciwgcmVnOwo+PiArCj4+ICsgICAgYXR0 ciAgPSBHSUNfQkFTRVJfQ0FDSEVfUmFXYVdiIDw8IEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hF QUJJTElUWV9TSElGVDsKPj4gKyAgICBhdHRyIHw9IEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5l ciA8PCBHSUNSX1BFTkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4+ICsgICAgYXR0 ciB8PSBHSUNfQkFTRVJfSW5uZXJTaGFyZWFibGUgPDwgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklM SVRZX1NISUZUOwo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBUaGUgcHJvcGVydHkgdGFibGUg aXMgc2hhcmVkIGFjcm9zcyBhbGwgcmVkaXN0cmlidXRvcnMsIHNvIGFsbG9jYXRlCj4+ICsgICAg ICogdGhpcyBvbmx5IG9uY2UsIGJ1dCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgb24gc3Vic2VxdWVu dCBjYWxscy4KPj4gKyAgICAgKi8KPj4gKyAgICBpZiAoICFscGlfZGF0YS5scGlfcHJvcGVydHkg KQo+PiArICAgIHsKPj4gKyAgICAgICAgLyogVGhlIHByb3BlcnR5IHRhYmxlIGhvbGRzIG9uZSBi eXRlIHBlciBMUEkuICovCj4+ICsgICAgICAgIHZvaWQgKnRhYmxlID0gYWxsb2NfeGVuaGVhcF9w YWdlcyhscGlfZGF0YS5ob3N0X2xwaV9iaXRzIC0gUEFHRV9TSElGVCwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+PiArCj4+ICsgICAgICAgIGlmICgg IXRhYmxlICkKPj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+PiArCj4+ICsgICAgICAgIG1lbXNl dCh0YWJsZSwgR0lDX1BSSV9JUlEgfCBMUElfUFJPUF9SRVMxLCBNQVhfUEhZU19MUElTKTsKPj4g KyAgICAgICAgX19mbHVzaF9kY2FjaGVfYXJlYSh0YWJsZSwgTUFYX1BIWVNfTFBJUyk7Cj4+ICsg ICAgICAgIGxwaV9kYXRhLmxwaV9wcm9wZXJ0eSA9IHRhYmxlOwo+PiArICAgIH0KPj4gKwo+PiAr ICAgIHJlZyAgPSBhdHRyIHwgKChscGlfZGF0YS5ob3N0X2xwaV9iaXRzIC0gMSkgPDwgMCk7Cj4+ ICsgICAgcmVnIHw9IHZpcnRfdG9fbWFkZHIobHBpX2RhdGEubHBpX3Byb3BlcnR5KSAmIEdFTk1B U0soNTEsIDEyKTsKPj4gKwo+PiArICAgIHJldHVybiByZWc7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB1bnNpZ25lZCBpbnQgbWF4X2xwaV9iaXRzID0gQ09ORklHX01BWF9IT1NUX0xQSV9CSVRTOwo+ PiAraW50ZWdlcl9wYXJhbSgibWF4X2xwaV9iaXRzIiwgbWF4X2xwaV9iaXRzKTsKPj4gKwo+PiAr aW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNpZ25lZCBpbnQgaHdfbHBpX2JpdHMpCj4g ICAgICAgICAgICAgICAgICAgXiBnaWN2M19scGlfaW5pdF9waHlzX2xwaXMKCk9LLgoKPj4gK3sK Pj4gKyAgICBscGlfZGF0YS5ob3N0X2xwaV9iaXRzID0gbWluKGh3X2xwaV9iaXRzLCBtYXhfbHBp X2JpdHMpOwo+PiArCj4+ICsgICAgcHJpbnRrKCJHSUN2MzogdXNpbmcgYXQgbW9zdCAlbGxkIExQ SXMgb24gdGhlIGhvc3QuXG4iLCBNQVhfUEhZU19MUElTKTsKPj4gKwo+PiArICAgIHJldHVybiAw Owo+PiArfQo+PiArCj4+ICAvKiBTY2FuIHRoZSBEVCBmb3IgYW55IElUUyBub2RlcyBhbmQgY3Jl YXRlIGEgbGlzdCBvZiBob3N0IElUU2VzIG91dCBvZiBpdC4gKi8KPj4gIHZvaWQgZ2ljdjNfaXRz X2R0X2luaXQoY29uc3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQo+PiAgewo+PiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIveGVuL2FyY2gvYXJtL2dpYy12My5jCj4+ IGluZGV4IDIzOGRhODQuLjFjNjg2OWQgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMt djMuYwo+PiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPj4gQEAgLTU0Niw2ICs1NDYsOSBA QCBzdGF0aWMgdm9pZCBfX2luaXQgZ2ljdjNfZGlzdF9pbml0KHZvaWQpCj4+ICAgICAgdHlwZSA9 IHJlYWRsX3JlbGF4ZWQoR0lDRCArIEdJQ0RfVFlQRVIpOwo+PiAgICAgIG5yX2xpbmVzID0gMzIg KiAoKHR5cGUgJiBHSUNEX1RZUEVfTElORVMpICsgMSk7Cj4+ICAKPj4gKyAgICBpZiAoIHR5cGUg JiBHSUNEX1RZUEVfTFBJUyApCj4+ICsgICAgICAgIGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcygo KHR5cGUgPj4gR0lDRF9UWVBFX0lEX0JJVFNfU0hJRlQpICYgMHgxZikgKyAxKTsKPiAKPiBTdGls bCBuZWVkIHRvIGRlZmluZSBhIG1hc2sgaW5zdGVhZCBvZiB1c2luZyAweDFmCgpJIGd1ZXNzIEkg cHJlZmVyIGEgbWFjcm8gZm9yIHRoZSB3aG9sZSBzdGF0ZW1lbnQgaGVyZS4gSSByZWd1bGFybHkg Z2V0CmFubm95ZWQgYnkgdGhvc2UgZGVzY3JpcHRpdmUgbmFtZXMgZ2V0dGluZyB0b28gbG9uZyBh bmQgZm9yY2luZyBhIHJhdGhlcgpzaW1wbGUgc3RhdGVtZW50IG9uIHR3byBvciBtb3JlIGxpbmVz IC4uLgoKPj4gKwo+PiAgICAgIHByaW50aygiR0lDdjM6ICVkIGxpbmVzLCAoSUlEICU4Ljh4KS5c biIsCj4+ICAgICAgICAgICAgIG5yX2xpbmVzLCByZWFkbF9yZWxheGVkKEdJQ0QgKyBHSUNEX0lJ RFIpKTsKPj4gIAo+PiBAQCAtNjE2LDYgKzYxOSwzMiBAQCBzdGF0aWMgaW50IGdpY3YzX2VuYWJs ZV9yZWRpc3Qodm9pZCkKPj4gICAgICByZXR1cm4gMDsKPj4gIH0KPj4gIAo+PiArc3RhdGljIGlu dCBnaWN2M19yZGlzdF9pbml0X2xwaXModm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSkKPj4gK3sK Pj4gKyAgICB1aW50MzJfdCByZWc7Cj4+ICsgICAgdWludDY0X3QgdGFibGVfcmVnOwo+PiArCj4+ ICsgICAgaWYgKCBsaXN0X2VtcHR5KCZob3N0X2l0c19saXN0KSApCj4+ICsgICAgICAgIHJldHVy biAtRU5PREVWOwo+PiArCj4+ICsgICAgLyogTWFrZSBzdXJlIExQSXMgYXJlIGRpc2FibGVkIGJl Zm9yZSBzZXR0aW5nIHVwIHRoZSBCQVNFUnMuICovCj4+ICsgICAgcmVnID0gcmVhZGxfcmVsYXhl ZChyZGlzdF9iYXNlICsgR0lDUl9DVExSKTsKPj4gKyAgICBpZiAoIHJlZyAmIEdJQ1JfQ1RMUl9F TkFCTEVfTFBJUyApCj4+ICsgICAgICAgIHJldHVybiAtRUJVU1k7Cj4+ICsKPj4gKyAgICB0YWJs ZV9yZWcgPSBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxlKCk7Cj4+ICsgICAgaWYgKCAhdGFi bGVfcmVnICkKPj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICsgICAgd3JpdGVxX3JlbGF4 ZWQodGFibGVfcmVnLCByZGlzdF9iYXNlICsgR0lDUl9QRU5EQkFTRVIpOwo+PiArCj4+ICsgICAg dGFibGVfcmVnID0gZ2ljdjNfbHBpX2dldF9wcm9wdGFibGUoKTsKPj4gKyAgICBpZiAoICF0YWJs ZV9yZWcgKQo+PiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKyAgICB3cml0ZXFfcmVsYXhl ZCh0YWJsZV9yZWcsIHJkaXN0X2Jhc2UgKyBHSUNSX1BST1BCQVNFUik7Cj4+ICsKPj4gKyAgICBy ZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVf cmRpc3Qodm9pZCkKPj4gIHsKPj4gICAgICBpbnQgaTsKPj4gQEAgLTY1OCw2ICs2ODcsMjAgQEAg c3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKPj4gICAgICAgICAg ICAgIGlmICggKHR5cGVyID4+IDMyKSA9PSBhZmYgKQo+PiAgICAgICAgICAgICAgewo+PiAgICAg ICAgICAgICAgICAgIHRoaXNfY3B1KHJiYXNlKSA9IHB0cjsKPj4gKwo+PiArICAgICAgICAgICAg ICAgIGlmICggdHlwZXIgJiBHSUNSX1RZUEVSX1BMUElTICkKPj4gKyAgICAgICAgICAgICAgICB7 Cj4+ICsgICAgICAgICAgICAgICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAg ICAgICAgcmV0ID0gZ2ljdjNfcmRpc3RfaW5pdF9scGlzKHB0cik7Cj4+ICsgICAgICAgICAgICAg ICAgICAgIGlmICggcmV0ICYmIHJldCAhPSAtRU5PREVWICkKPj4gKyAgICAgICAgICAgICAgICAg ICAgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJHSUN2MzogQ1BVJWQ6IENh bm5vdCBpbml0aWFsaXplIExQSXM6ICVkXG4iLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwgcmV0KTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAg fQo+PiArCj4+ICAgICAgICAgICAgICAgICAgcHJpbnRrKCJHSUN2MzogQ1BVJWQ6IEZvdW5kIHJl ZGlzdHJpYnV0b3IgaW4gcmVnaW9uICVkIEAlcFxuIiwKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwgaSwgcHRyKTsKPj4gICAgICAgICAgICAgICAgICByZXR1 cm4gMDsKPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmggYi94ZW4v aW5jbHVkZS9hc20tYXJtL2JpdG9wcy5oCj4+IGluZGV4IGJkYTg4OTguLmM5YWRmNzkgMTAwNjQ0 Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmgKPj4gKysrIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9iaXRvcHMuaAo+PiBAQCAtMjUsNiArMjUsNyBAQAo+PiAgI2RlZmluZSBCSVRf TUFTSyhucikgICAgICAgICAgICAoMVVMIDw8ICgobnIpICUgQklUU19QRVJfV09SRCkpCj4+ICAj ZGVmaW5lIEJJVF9XT1JEKG5yKSAgICAgICAgICAgICgobnIpIC8gQklUU19QRVJfV09SRCkKPj4g ICNkZWZpbmUgQklUU19QRVJfQllURSAgICAgICAgICAgOAo+PiArI2RlZmluZSBCSVRfVUxMKG5y KSAgICAgICAgICAgICAoMVVMTCA8PCAobnIpKQo+PiAgCj4+ICAjZGVmaW5lIEFERFIgKCoodm9s YXRpbGUgaW50ICopIGFkZHIpCj4+ICAjZGVmaW5lIENPTlNUX0FERFIgKCooY29uc3Qgdm9sYXRp bGUgaW50ICopIGFkZHIpCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2NhY2hl LmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2NhY2hlLmgKPj4gaW5kZXggMmRlNjU2NC4uYWY5NmVl ZSAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oCj4+ICsrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vY2FjaGUuaAo+PiBAQCAtNyw2ICs3LDEwIEBACj4+ICAjZGVmaW5l IEwxX0NBQ0hFX1NISUZUICAoQ09ORklHX0FSTV9MMV9DQUNIRV9TSElGVCkKPj4gICNkZWZpbmUg TDFfQ0FDSEVfQllURVMgICgxIDw8IEwxX0NBQ0hFX1NISUZUKQo+PiAgCj4+ICsjaWZuZGVmIF9f QVNTRU1CTFlfXwo+PiArdm9pZCBfX2ZsdXNoX2RjYWNoZV9hcmVhKGNvbnN0IHZvaWQgKnZhZGRy LCB1bnNpZ25lZCBsb25nIHNpemUpOwo+PiArI2VuZGlmCj4gCj4gSSB0aGluayBpdCBtaWdodCBi ZSBiZXN0IHRvIGFkZCBpdCB0byB4ZW4vaW5jbHVkZS9hc20tYXJtL2FybTY0L3BhZ2UuaAoKQXBh cnQgZnJvbSB0aGUgZmFjdCB0aGF0IGl0J3Mgbm90IG5lZWRlZCBhdG0gb24gQVJNLCBpcyB0aGVy ZSBhbnkgb3RoZXIKcmVhc29uIHRvIGNvbmZpbmUgaXQgdG8gQVJNNjQ/CgpDaGVlcnMsCkFuZHJl LgoKPj4gICNkZWZpbmUgX19yZWFkX21vc3RseSBfX3NlY3Rpb24oIi5kYXRhLnJlYWRfbW9zdGx5 IikKPj4gIAo+PiAgI2VuZGlmCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dp Yy1pdHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4+IGluZGV4IDJmNWM1MWMu LmE2NmI2YmUgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4+ ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4+IEBAIC0zNiwxMiArMzYsMzIg QEAgZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaG9zdF9pdHNfbGlzdDsKPj4gIC8qIFBhcnNlIHRo ZSBob3N0IERUIGFuZCBwaWNrIHVwIGFsbCBob3N0IElUU2VzLiAqLwo+PiAgdm9pZCBnaWN2M19p dHNfZHRfaW5pdChjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpOwo+PiAgCj4+ICsv KiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0YWJsZXMgZm9yIGVhY2ggaG9zdCByZWRpc3RyaWJ1 dG9yLgo+PiArICogUmV0dXJucyB0aGUgcmVzcGVjdGl2ZSB7UFJPUCxQRU5EfUJBU0VSIHJlZ2lz dGVyIHZhbHVlLgo+PiArICovCj4+ICt1aW50NjRfdCBnaWN2M19scGlfZ2V0X3Byb3B0YWJsZSh2 b2lkKTsKPj4gK3VpbnQ2NF90IGdpY3YzX2xwaV9hbGxvY2F0ZV9wZW5kdGFibGUodm9pZCk7Cj4+ ICsKPj4gKy8qIEluaXRpYWxpemUgdGhlIGhvc3Qgc3RydWN0dXJlcyBmb3IgTFBJcy4gKi8KPj4g K2ludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IG5yX2xwaXMpOwo+PiAr Cj4+ICAjZWxzZQo+PiAgCj4+ICBzdGF0aWMgaW5saW5lIHZvaWQgZ2ljdjNfaXRzX2R0X2luaXQo Y29uc3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQo+PiAgewo+PiAgfQo+PiAtCj4+ICtz dGF0aWMgaW5saW5lIHVpbnQ2NF90IGdpY3YzX2xwaV9nZXRfcHJvcHRhYmxlKHZvaWQpCj4+ICt7 Cj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdpY3Yz X2xwaV9hbGxvY2F0ZV9wZW5kdGFibGUodm9pZCkKPj4gK3sKPj4gKyAgICByZXR1cm4gMDsKPj4g K30KPj4gK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNpZ25l ZCBpbnQgbnJfbHBpcykKPj4gK3sKPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gICNlbmRpZiAv KiBDT05GSUdfSEFTX0lUUyAqLwo+PiAgCj4+ICAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCj4+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmggYi94ZW4vaW5j bHVkZS9hc20tYXJtL2dpY192M19kZWZzLmgKPj4gaW5kZXggNmJkMjVhNS4uZGE1ZmI3NyAxMDA2 NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oCj4+ICsrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAo+PiBAQCAtNDQsNyArNDQsOCBAQAo+PiAg I2RlZmluZSBHSUNDX1NSRV9FTDJfRU5FTDEgICAgICAgICAgICgxVUwgPDwgMykKPj4gIAo+PiAg LyogQWRkaXRpb25hbCBiaXRzIGluIEdJQ0RfVFlQRVIgZGVmaW5lZCBieSBHSUN2MyAqLwo+PiAt I2RlZmluZSBHSUNEX1RZUEVfSURfQklUU19TSElGVCAxOQo+PiArI2RlZmluZSBHSUNEX1RZUEVf SURfQklUU19TSElGVCAgICAgIDE5Cj4+ICsjZGVmaW5lIEdJQ0RfVFlQRV9MUElTICAgICAgICAg ICAgICAgKDFVIDw8IDE3KQo+PiAgCj4+ICAjZGVmaW5lIEdJQ0RfQ1RMUl9SV1AgICAgICAgICAg ICAgICAgKDFVTCA8PCAzMSkKPj4gICNkZWZpbmUgR0lDRF9DVExSX0FSRV9OUyAgICAgICAgICAg ICAoMVUgPDwgNCkKPj4gQEAgLTk1LDEyICs5Niw1NyBAQAo+PiAgI2RlZmluZSBHSUNSX0lHUlBN T0RSMCAgICAgICAgICAgICAgICgweDBEMDApCj4+ICAjZGVmaW5lIEdJQ1JfTlNBQ1IgICAgICAg ICAgICAgICAgICAgKDB4MEUwMCkKPj4gIAo+PiArI2RlZmluZSBHSUNSX0NUTFJfRU5BQkxFX0xQ SVMgICAgICAgICgxVSA8PCAwKQo+PiAgI2RlZmluZSBHSUNSX1RZUEVSX1BMUElTICAgICAgICAg ICAgICgxVSA8PCAwKQo+PiAgI2RlZmluZSBHSUNSX1RZUEVSX1ZMUElTICAgICAgICAgICAgICgx VSA8PCAxKQo+PiAgI2RlZmluZSBHSUNSX1RZUEVSX0xBU1QgICAgICAgICAgICAgICgxVSA8PCA0 KQo+PiAgCj4+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9uQ25CICAgICAgICAgMFVMTAo+PiAr I2RlZmluZSBHSUNfQkFTRVJfQ0FDSEVfU2FtZUFzSW5uZXIgIDBVTEwKPj4gKyNkZWZpbmUgR0lD X0JBU0VSX0NBQ0hFX25DICAgICAgICAgICAxVUxMCj4+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNI RV9SYVd0ICAgICAgICAgMlVMTAo+PiArI2RlZmluZSBHSUNfQkFTRVJfQ0FDSEVfUmFXYiAgICAg ICAgIDNVTEwKPj4gKyNkZWZpbmUgR0lDX0JBU0VSX0NBQ0hFX1dhV3QgICAgICAgICA0VUxMCj4+ ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9XYVdiICAgICAgICAgNVVMTAo+PiArI2RlZmluZSBH SUNfQkFTRVJfQ0FDSEVfUmFXYVd0ICAgICAgIDZVTEwKPj4gKyNkZWZpbmUgR0lDX0JBU0VSX0NB Q0hFX1JhV2FXYiAgICAgICA3VUxMCj4+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9NQVNLICAg ICAgICAgN1VMTAo+PiArI2RlZmluZSBHSUNfQkFTRVJfTm9uU2hhcmVhYmxlICAgICAgIDBVTEwK Pj4gKyNkZWZpbmUgR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxlICAgICAxVUxMCj4+ICsjZGVmaW5l IEdJQ19CQVNFUl9PdXRlclNoYXJlYWJsZSAgICAgMlVMTAo+PiArCj4+ICsjZGVmaW5lIEdJQ1Jf UFJPUEJBU0VSX1NIQVJFQUJJTElUWV9TSElGVCAgICAgICAgICAgICAgIDEwCj4+ICsjZGVmaW5l IEdJQ1JfUFJPUEJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCAgICAgICAgIDcKPj4gKyNk ZWZpbmUgR0lDUl9QUk9QQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUICAgICAgICAgNTYK Pj4gKyNkZWZpbmUgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklMSVRZX01BU0sgICAgICAgICAgICAg ICAgICAgICBcCj4+ICsgICAgICAgICgzVUwgPDwgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklMSVRZ X1NISUZUKQo+PiArI2RlZmluZSBHSUNSX1BST1BCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfTUFT SyAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgKDdVTCA8PCBHSUNSX1BST1BCQVNFUl9JTk5F Ul9DQUNIRUFCSUxJVFlfU0hJRlQpCj4+ICsjZGVmaW5lIEdJQ1JfUFJPUEJBU0VSX09VVEVSX0NB Q0hFQUJJTElUWV9NQVNLICAgICAgICAgICAgICAgXAo+PiArICAgICAgICAoN1VMIDw8IEdJQ1Jf UFJPUEJBU0VSX09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCkKPj4gKyNkZWZpbmUgUFJPUEJBU0VS X1JFUzBfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAg IChHRU5NQVNLKDYzLCA1OSkgfCBHRU5NQVNLKDU1LCA1MikgfCBHRU5NQVNLKDYsIDUpKQo+PiAr Cj4+ICsjZGVmaW5lIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9TSElGVCAgICAgICAgICAg ICAgIDEwCj4+ICsjZGVmaW5lIEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElG VCAgICAgICAgIDcKPj4gKyNkZWZpbmUgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZ X1NISUZUICAgICAgICAgNTYKPj4gKyNkZWZpbmUgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZ X01BU0sgICAgICAgICAgICAgICAgICAgICBcCj4+ICsJKDNVTCA8PCBHSUNSX1BFTkRCQVNFUl9T SEFSRUFCSUxJVFlfU0hJRlQpCj4+ICsjZGVmaW5lIEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hF QUJJTElUWV9NQVNLICAgICAgICAgICAgICAgXAo+PiArCSg3VUwgPDwgR0lDUl9QRU5EQkFTRVJf SU5ORVJfQ0FDSEVBQklMSVRZX1NISUZUKQo+PiArI2RlZmluZSBHSUNSX1BFTkRCQVNFUl9PVVRF Ul9DQUNIRUFCSUxJVFlfTUFTSyAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgKDdVTCA8PCBH SUNSX1BFTkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQpCj4+ICsjZGVmaW5lIEdJQ1Jf UEVOREJBU0VSX1BUWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCg2MikKPj4gKyNk ZWZpbmUgUEVOREJBU0VSX1JFUzBfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4+ICsgICAgICAgIChCSVQoNjMpIHwgR0VOTUFTSyg2MSwgNTkpIHwgR0VOTUFTSyg1NSwg NTIpIHwgICAgICAgXAo+PiArICAgICAgICAgR0VOTUFTSygxNSwgMTIpIHwgR0VOTUFTSyg2LCAw KSkKPj4gKwo+PiAgI2RlZmluZSBERUZBVUxUX1BNUl9WQUxVRSAgICAgICAgICAgIDB4ZmYKPj4g IAo+PiArI2RlZmluZSBMUElfUFJPUF9ERUZBVUxUX1BSSU8gICAgICAgIDB4YTAKPj4gKyNkZWZp bmUgTFBJX1BST1BfUkVTMSAgICAgICAgICAgICAgICAoMSA8PCAxKQo+PiArI2RlZmluZSBMUElf UFJPUF9FTkFCTEVEICAgICAgICAgICAgICgxIDw8IDApCj4+ICsKPj4gICNkZWZpbmUgR0lDSF9W TUNSX0VPSSAgICAgICAgICAgICAgICAoMSA8PCA5KQo+PiAgI2RlZmluZSBHSUNIX1ZNQ1JfVkVO RzEgICAgICAgICAgICAgICgxIDw8IDEpCj4+ICAKPj4gLS0gCj4+IDIuOS4wCj4+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK