From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Kristian_H=C3=B8gsberg?= Subject: Re: [PATCH v4 1/2] intel: 48b ppgtt support (EXEC_OBJECT_SUPPORTS_48B_ADDRESS flag) Date: Mon, 5 Oct 2015 11:06:50 -0700 Message-ID: References: <1441290239-31462-1-git-send-email-michel.thierry@intel.com> <1441290239-31462-2-git-send-email-michel.thierry@intel.com> <20150914135403.GA8219@mwiniars-desk1.igk.intel.com> <56128342.2070407@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56128342.2070407@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: mesa-dev-bounces@lists.freedesktop.org Sender: "mesa-dev" To: Michel Thierry Cc: mesa-dev , =?UTF-8?Q?Micha=C5=82_Winiarski?= , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgNSwgMjAxNSBhdCA3OjAzIEFNLCBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRo aWVycnlAaW50ZWwuY29tPiB3cm90ZToKPiBPbiA5LzE0LzIwMTUgMjo1NCBQTSwgTWljaGHFgiBX aW5pYXJza2kgd3JvdGU6Cj4+Cj4+IE9uIFRodSwgU2VwIDAzLCAyMDE1IGF0IDAzOjIzOjU4UE0g KzAxMDAsIE1pY2hlbCBUaGllcnJ5IHdyb3RlOgo+Pj4KPj4+IEdlbjgrIHN1cHBvcnRzIDQ4LWJp dCB2aXJ0dWFsIGFkZHJlc3NlcywgYnV0IHNvbWUgb2JqZWN0cyBtdXN0IGFsd2F5cyBiZQo+Pj4g YWxsb2NhdGVkIGluc2lkZSB0aGUgMzItYml0IGFkZHJlc3MgcmFuZ2UuCj4+Pgo+Pj4gSW4gc3Bl Y2lmaWMsIGFueSByZXNvdXJjZSB1c2VkIHdpdGggZmxhdC9oZWFwbGVzcyAoMHgwMDAwMDAwMC0w eGZmZmZmMDAwKQo+Pj4gR2VuZXJhbCBTdGF0ZSBIZWFwIChHU0gpIG9yIEluc3RydWN0aW9uIFN0 YXRlIEhlYXAgKElTSCkgbXVzdCBiZSBpbiBhCj4+PiAzMi1iaXQgcmFuZ2UsIGJlY2F1c2UgdGhl IEdlbmVyYWwgU3RhdGUgT2Zmc2V0IGFuZCBJbnN0cnVjdGlvbiBTdGF0ZQo+Pj4gT2Zmc2V0Cj4+ PiBhcmUgbGltaXRlZCB0byAzMi1iaXRzLgo+Pj4KPj4+IFRoZSBpOTE1IGRyaXZlciBoYXMgYmVl biBtb2RpZmllZCB0byBwcm92aWRlIGEgZmxhZyB0byBzZXQgd2hlbiB0aGUgNEdCCj4+PiBsaW1p dCBpcyBub3QgbmVjZXNzYXJ5IGluIGEgZ2l2ZW4gYm8gKEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4 Ql9BRERSRVNTKS4KPj4+IDQ4LWJpdCByYW5nZSB3aWxsIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxp Y2l0bHkgcmVxdWVzdGVkLgo+Pj4KPj4+IENhbGxlcnMgdG8gdGhlIGV4aXN0aW5nIGRybV9pbnRl bF9ib19lbWl0X3JlbG9jIGZ1bmN0aW9uIHNob3VsZCBzZXQgdGhlCj4+PiB1c2VfNDhiX2FkZHJl c3NfcmFuZ2UgZmxhZyBiZWZvcmVoYW5kLCBpbiBvcmRlciB0byB1c2UgZnVsbCBwcGd0dCByYW5n ZS4KPj4+Cj4+PiB2MjogTWFrZSBzZXQvY2xlYXIgZnVuY3Rpb25zIG5vcHMgb24gcHJlLWdlbjgg cGxhdGZvcm1zLCBhbmQgdXNlIHRoZW0KPj4+ICAgICAgaW50ZXJuYWxseSBpbiBlbWl0X3JlbG9j IGZ1bmN0aW9ucyAoQmVuKQo+Pj4gICAgICBzLzQ4QkFERFJFU1MvNDhCX0FERFJFU1MvIChEYXZl KQo+Pj4gdjM6IEtlZXAgc2V0L2NsZWFyIGZ1bmN0aW9ucyBpbnRlcm5hbCwgbm8tb25lIG5lZWRz IHRvIHVzZSB0aGVtIGRpcmVjdGx5Lgo+Pj4gdjQ6IERvbid0IHNldCA0OGJpdC1zdXBwb3J0IGZs YWcgaW4gZW1pdCByZWxvYywgY2hlY2sgZm9yIHBwZ3R0IHR5cGUKPj4+ICAgICAgYmVmb3JlIGVu YWJsaW5nIHNldC9jbGVhciBmdW5jdGlvbiwgcHJpbnQgZnVsbCBvZmZzZXRzIGluIGRlYnVnCj4+ PiAgICAgIHN0YXRlbWVudHMsIHVzaW5nIHBvcnQgb2YgbG93ZXJfMzJfYml0cyBhbmQgdXBwZXJf MzJfYml0cyBmcm9tIGxpbnV4Cj4+PiAgICAgIGtlcm5lbCAoTWljaGHFgikKPj4+Cj4+PiBSZWZl cmVuY2VzOgo+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9pbnRlbC1n ZngvMjAxNS1KdWx5LzA3MjYxMi5odG1sCj4+PiBDYzogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3 c2submV0Pgo+Pj4gQ2M6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVs LmNvbT4KPj4KPj4KPj4gK0tyaXN0aWFuCj4+Cj4+IExHVE0uCj4+IEFja2VkLWJ5OiBNaWNoYcWC IFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+Cj4+Cj4+PiBTaWduZWQtb2Zm LWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+Cj4KPgo+IEhp IEtyaXN0aWFuLAo+Cj4gTW9yZSBjb21tZW50cyBvbiB0aGlzPwo+IEkndmUgcmVzZW50IHRoZSBt ZXNhIHBhdGNoIHdpdGggdGhlIGxhc3QgY2hhbmdlcwo+IChodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL2FyY2hpdmVzL2RyaS1kZXZlbC8yMDE1LU9jdG9iZXIvMDkxNzUyLmh0bWwpLgo+Cj4g TWljaGHFgiBoYXMgYWdyZWVkIHdpdGggdGhlIGludGVyZmFjZSBhbmQgd2lsbCB1c2UgaXQgZm9y IGhpcyB3b3JrLgo+IElmIG1lc2EgZG9lc24ndCBwbGFuIHRvIHVzZSB0aGlzIGZvciBub3csIGl0 J3Mgb2suIFRoZSBrZXJuZWwgY2hhbmdlcyBoYXZlCj4gYmVlbiBkb25lIHRvIHByZXZlbnQgYW55 IHJlZ3Jlc3Npb25zIHdoZW4gdGhlIHN1cHBvcnQgNDgtYml0IGZsYWcgaXMgbm90Cj4gc2V0LgoK SSBkaWRuJ3QgZ2V0IGFueSByZXBsaWVzIHRvIG15IGxhc3QgY29tbWVudHMgb24gdGhpczoKCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvbWVzYS1kZXYvMjAxNS1BdWd1c3Qv MDkxMzk4Lmh0bWwKCkJhc2ljYWxseSwgSSB0cmllZCBleHBsaWNpdGx5IHBsYWNpbmcgYnVmZmVy cyBhYm92ZSA4RyBhbmQgZGlkbid0IHNlZQp0aGUgSFcgcHJvYmxlbSBkZXNjcmliZWQgKGllIGl0 IGFsbCB3b3JrZWQgZmluZSkuICBJIHN0aWxsIHRoaW5rCnRoZXJlJ3Mgc29tZSBjb25mdXNpb24g YXMgdG8gd2hhdCB0aGUgVy9BIGlzIGFib3V0LgoKSGVyZSdzIG15IHRha2U6IHRoZSBXL0EgaXMg YSBTVy1vbmx5IHdvcmthcm91bmQgdG8gaGFuZGxlIHRoZSBjYXNlcwp3aGVyZSBhIGRyaXZlciB1 c2VzIGhlYXBsZXNzIGFuZCA0OC1iaXQgcHBndHQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlCmhl YXBzIGFyZSBsaW1pdGVkIHRvIDRHIGJ1dCB3aXRoIDQ4Yml0IHBwZ3R0IGEgYnVmZmVyIGNhbiBi ZSBwbGFjZWQKYW55d2hlcmUgaXQgdGhlIDQ4IGJpdCBhZGRyZXNzIHNwYWNlLiBJZiB0aGF0IGhh cHBlbnMgaXQncyBjb25zaWRlcmVkZApvdXQtb2YtYm91bmRzIGZvciB0aGUgaGVhcCBhbmQgYWNj ZXNzIGZhaWxzLiBUbyBwcmV2ZW50IHRoaXMgd2UgbmVlZAp0byBtYWtlIHN1cmUgdGhlIGJvcyB3 ZSBhZGRyZXNzIGluIGEgaGVhcGxlc3MgZmFzaGlvbiBhcmUgcGxhY2VkIGJlbG93CjRnLgoKRm9y IG1lc2EsIHdlIG9ubHkgY29uZmlndXJlIGdlbmVyYWwgc3RhdGUgYmFzZSBhcyBoZWFwLWxlc3Ms IHdoaWNoCmFmZmVjdHMgc2NyYXRjaCBib3MuIFdoYXQgdGhpcyBib2lscyBkb3duIHRvIGlzIHRo YXQgd2UgbmVlZCB0aGUgNEcKcmVzdHJpY3Rpb24gb25seSBmb3IgdGhlIHNjcmF0Y2ggYm9zIHNl dCB1cCBvbiAzRFNUQVRFX1ZTLCAzRFNUQVRFX0dTCmFuZCAzRFNUQVRFX1BTIChhbmQgdGVzc2Vs YXRpb24gc3RhZ2UgZXZlbnR1YWxseSkuIExvb2sgZm9yIHRoZQpPVVRfUkVMT0M2NCBmb3Igc3Rh Z2UtPnNjcmF0Y2hfYm8gaW4gZ2VuOF92c19zdGF0ZS5jLCBnZW44X2dzX3N0YXRlLmMKYW5kIGdl bjhfcHNfc3RhdGUuYwoKS3Jpc3RpYW4KCj4gVGhhbmtzLAo+Cj4gLU1pY2hlbAo+Cj4KPj4+IC0t LQo+Pj4gICBpbmNsdWRlL2RybS9pOTE1X2RybS5oICAgIHwgIDMgKy0KPj4+ICAgaW50ZWwvaW50 ZWxfYnVmbWdyLmMgICAgICB8IDExICsrKysrKwo+Pj4gICBpbnRlbC9pbnRlbF9idWZtZ3IuaCAg ICAgIHwgIDEgKwo+Pj4gICBpbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMgIHwgODgKPj4+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4+PiAgIGludGVsL2lu dGVsX2J1Zm1ncl9wcml2LmggfCAxNCArKysrKysrKwo+Pj4gICA1IGZpbGVzIGNoYW5nZWQsIDk3 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAo+Pj4gaW5kZXggZGVk NDNiMS4uNDI2YjI1YyAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgKPj4+ ICsrKyBiL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgKPj4+IEBAIC02ODAsNyArNjgwLDggQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgewo+Pj4gICAjZGVmaW5lIEVYRUNfT0JKRUNU X05FRURTX0ZFTkNFICgxPDwwKQo+Pj4gICAjZGVmaW5lIEVYRUNfT0JKRUNUX05FRURTX0dUVCAo MTw8MSkKPj4+ICAgI2RlZmluZSBFWEVDX09CSkVDVF9XUklURSAgICAgKDE8PDIpCj4+PiAtI2Rl ZmluZSBfX0VYRUNfT0JKRUNUX1VOS05PV05fRkxBR1MgLShFWEVDX09CSkVDVF9XUklURTw8MSkK Pj4+ICsjZGVmaW5lIEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTICgxPDwzKQo+Pj4g KyNkZWZpbmUgX19FWEVDX09CSkVDVF9VTktOT1dOX0ZMQUdTCj4+PiAtKEVYRUNfT0JKRUNUX1NV UFBPUlRTXzQ4Ql9BRERSRVNTPDwxKQo+Pj4gICAgICAgICBfX3U2NCBmbGFnczsKPj4+Cj4+PiAg ICAgICAgIF9fdTY0IHJzdmQxOwo+Pj4gZGlmZiAtLWdpdCBhL2ludGVsL2ludGVsX2J1Zm1nci5j IGIvaW50ZWwvaW50ZWxfYnVmbWdyLmMKPj4+IGluZGV4IDE0ZWE5ZjkuLjA4NTZlNjAgMTAwNjQ0 Cj4+PiAtLS0gYS9pbnRlbC9pbnRlbF9idWZtZ3IuYwo+Pj4gKysrIGIvaW50ZWwvaW50ZWxfYnVm bWdyLmMKPj4+IEBAIC0yOTMsNiArMjkzLDE3IEBAIGRybV9pbnRlbF9ib19tYWR2aXNlKGRybV9p bnRlbF9ibyAqYm8sIGludCBtYWR2KQo+Pj4gICB9Cj4+Pgo+Pj4gICBpbnQKPj4+ICtkcm1faW50 ZWxfYm9fdXNlXzQ4Yl9hZGRyZXNzX3JhbmdlKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IGVu YWJsZSkKPj4+ICt7Cj4+PiArICAgICAgIGlmIChiby0+YnVmbWdyLT5ib191c2VfNDhiX2FkZHJl c3NfcmFuZ2UpIHsKPj4+ICsgICAgICAgICAgICAgICBiby0+YnVmbWdyLT5ib191c2VfNDhiX2Fk ZHJlc3NfcmFuZ2UoYm8sIGVuYWJsZSk7Cj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ PiArICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4+PiArfQo+Pj4g Kwo+Pj4gK2ludAo+Pj4gICBkcm1faW50ZWxfYm9fcmVmZXJlbmNlcyhkcm1faW50ZWxfYm8gKmJv LCBkcm1faW50ZWxfYm8gKnRhcmdldF9ibykKPj4+ICAgewo+Pj4gICAgICAgICByZXR1cm4gYm8t PmJ1Zm1nci0+Ym9fcmVmZXJlbmNlcyhibywgdGFyZ2V0X2JvKTsKPj4+IGRpZmYgLS1naXQgYS9p bnRlbC9pbnRlbF9idWZtZ3IuaCBiL2ludGVsL2ludGVsX2J1Zm1nci5oCj4+PiBpbmRleCA5NWVl Y2I4Li5hMTRjNzhmIDEwMDY0NAo+Pj4gLS0tIGEvaW50ZWwvaW50ZWxfYnVmbWdyLmgKPj4+ICsr KyBiL2ludGVsL2ludGVsX2J1Zm1nci5oCj4+PiBAQCAtMTY0LDYgKzE2NCw3IEBAIGludCBkcm1f aW50ZWxfYm9fZ2V0X3RpbGluZyhkcm1faW50ZWxfYm8gKmJvLAo+Pj4gdWludDMyX3QgKiB0aWxp bmdfbW9kZSwKPj4+ICAgaW50IGRybV9pbnRlbF9ib19mbGluayhkcm1faW50ZWxfYm8gKmJvLCB1 aW50MzJfdCAqIG5hbWUpOwo+Pj4gICBpbnQgZHJtX2ludGVsX2JvX2J1c3koZHJtX2ludGVsX2Jv ICpibyk7Cj4+PiAgIGludCBkcm1faW50ZWxfYm9fbWFkdmlzZShkcm1faW50ZWxfYm8gKmJvLCBp bnQgbWFkdik7Cj4+PiAraW50IGRybV9pbnRlbF9ib191c2VfNDhiX2FkZHJlc3NfcmFuZ2UoZHJt X2ludGVsX2JvICpibywgdWludDMyX3QKPj4+IGVuYWJsZSk7Cj4+Pgo+Pj4gICBpbnQgZHJtX2lu dGVsX2JvX2Rpc2FibGVfcmV1c2UoZHJtX2ludGVsX2JvICpibyk7Cj4+PiAgIGludCBkcm1faW50 ZWxfYm9faXNfcmV1c2FibGUoZHJtX2ludGVsX2JvICpibyk7Cj4+PiBkaWZmIC0tZ2l0IGEvaW50 ZWwvaW50ZWxfYnVmbWdyX2dlbS5jIGIvaW50ZWwvaW50ZWxfYnVmbWdyX2dlbS5jCj4+PiBpbmRl eCAyNzIzZTIxLi4wOWQ4MmQyIDEwMDY0NAo+Pj4gLS0tIGEvaW50ZWwvaW50ZWxfYnVmbWdyX2dl bS5jCj4+PiArKysgYi9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMKPj4+IEBAIC04Myw2ICs4Mywy MiBAQAo+Pj4gICAjZGVmaW5lIEFSUkFZX1NJWkUoeCkgKHNpemVvZih4KSAvIHNpemVvZigoeClb MF0pKQo+Pj4gICAjZGVmaW5lIE1BWDIoQSwgQikgKChBKSA+IChCKSA/IChBKSA6IChCKSkKPj4+ Cj4+PiArLyoqCj4+PiArICogdXBwZXJfMzJfYml0cyAtIHJldHVybiBiaXRzIDMyLTYzIG9mIGEg bnVtYmVyCj4+PiArICogQG46IHRoZSBudW1iZXIgd2UncmUgYWNjZXNzaW5nCj4+PiArICoKPj4+ ICsgKiBBIGJhc2ljIHNoaWZ0LXJpZ2h0IG9mIGEgNjQtIG9yIDMyLWJpdCBxdWFudGl0eS4gIFVz ZSB0aGlzIHRvCj4+PiBzdXBwcmVzcwo+Pj4gKyAqIHRoZSAicmlnaHQgc2hpZnQgY291bnQgPj0g d2lkdGggb2YgdHlwZSIgd2FybmluZyB3aGVuIHRoYXQgcXVhbnRpdHkKPj4+IGlzCj4+PiArICog MzItYml0cy4KPj4+ICsgKi8KPj4+ICsjZGVmaW5lIHVwcGVyXzMyX2JpdHMobikgKChfX3UzMiko KChuKSA+PiAxNikgPj4gMTYpKQo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIGxvd2VyXzMyX2JpdHMg LSByZXR1cm4gYml0cyAwLTMxIG9mIGEgbnVtYmVyCj4+PiArICogQG46IHRoZSBudW1iZXIgd2Un cmUgYWNjZXNzaW5nCj4+PiArICovCj4+PiArI2RlZmluZSBsb3dlcl8zMl9iaXRzKG4pICgoX191 MzIpKG4pKQo+Pj4gKwo+Pj4gICB0eXBlZGVmIHN0cnVjdCBfZHJtX2ludGVsX2JvX2dlbSBkcm1f aW50ZWxfYm9fZ2VtOwo+Pj4KPj4+ICAgc3RydWN0IGRybV9pbnRlbF9nZW1fYm9fYnVja2V0IHsK Pj4+IEBAIC0yMzcsNiArMjUzLDE1IEBAIHN0cnVjdCBfZHJtX2ludGVsX2JvX2dlbSB7Cj4+PiAg ICAgICAgIGJvb2wgaXNfdXNlcnB0cjsKPj4+Cj4+PiAgICAgICAgIC8qKgo+Pj4gKyAgICAgICAg KiBCb29sZWFuIG9mIHdoZXRoZXIgdGhpcyBidWZmZXIgY2FuIGJlIHBsYWNlZCBpbiB0aGUgZnVs bAo+Pj4gNDgtYml0Cj4+PiArICAgICAgICAqIGFkZHJlc3MgcmFuZ2Ugb24gZ2VuOCsuCj4+PiAr ICAgICAgICAqCj4+PiArICAgICAgICAqIEJ5IGRlZmF1bHQsIGJ1ZmZlcnMgd2lsbCBiZSBrZWVw IGluIGEgMzItYml0IHJhbmdlLCB1bmxlc3MKPj4+IHRoaXMKPj4+ICsgICAgICAgICogZmxhZyBp cyBleHBsaWNpdGx5IHNldC4KPj4+ICsgICAgICAgICovCj4+PiArICAgICAgIGJvb2wgdXNlXzQ4 Yl9hZGRyZXNzX3JhbmdlOwo+Pj4gKwo+Pj4gKyAgICAgICAvKioKPj4+ICAgICAgICAgICogU2l6 ZSBpbiBieXRlcyBvZiB0aGlzIGJ1ZmZlciBhbmQgaXRzIHJlbG9jYXRpb24gZGVzY2VuZGVudHMu Cj4+PiAgICAgICAgICAqCj4+PiAgICAgICAgICAqIFVzZWQgdG8gYXZvaWQgY29zdGx5IHRyZWUg d2Fsa2luZyBpbgo+Pj4gQEAgLTM5NSwxNCArNDIwLDE2IEBACj4+PiBkcm1faW50ZWxfZ2VtX2R1 bXBfdmFsaWRhdGlvbl9saXN0KGRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQo+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2ludGVsX2JvX2dlbSAqdGFyZ2V0X2dlbSA9Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRybV9pbnRlbF9ib19nZW0gKikgdGFyZ2V0 X2JvOwo+Pj4KPj4+IC0gICAgICAgICAgICAgICAgICAgICAgIERCRygiJTJkOiAlZCAoJXMpQDB4 JTA4bGx4IC0+ICIKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQgKCVzKUAweCUw OGx4ICsgMHglMDh4XG4iLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgREJHKCIlMmQ6ICVk ICglcylAMHglMDh4ICUwOHggLT4gIgo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIl ZCAoJXMpQDB4JTA4eCAlMDh4ICsgMHglMDh4XG4iLAo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGksCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9fZ2VtLT5nZW1faGFu ZGxlLCBib19nZW0tPm5hbWUsCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2ln bmVkIGxvbmcgbG9uZylib19nZW0tPnJlbG9jc1tqXS5vZmZzZXQsCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXBwZXJfMzJfYml0cyhib19nZW0tPnJlbG9jc1tqXS5vZmZzZXQpLAo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyXzMyX2JpdHMoYm9fZ2VtLT5yZWxv Y3Nbal0ub2Zmc2V0KSwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfZ2Vt LT5nZW1faGFuZGxlLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9nZW0t Pm5hbWUsCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2JvLT5vZmZzZXQ2 NCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl8zMl9iaXRzKHRhcmdldF9i by0+b2Zmc2V0NjQpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyXzMyX2Jp dHModGFyZ2V0X2JvLT5vZmZzZXQ2NCksCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9fZ2VtLT5yZWxvY3Nbal0uZGVsdGEpOwo+Pj4gICAgICAgICAgICAgICAgIH0KPj4+ICAgICAg ICAgfQo+Pj4gQEAgLTQ2OCwxMSArNDk1LDE1IEBAIGRybV9pbnRlbF9hZGRfdmFsaWRhdGVfYnVm ZmVyMihkcm1faW50ZWxfYm8gKmJvLAo+Pj4gaW50IG5lZWRfZmVuY2UpCj4+PiAgICAgICAgIGRy bV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtID0gKGRybV9pbnRlbF9idWZtZ3JfZ2VtCj4+ PiAqKWJvLT5idWZtZ3I7Cj4+PiAgICAgICAgIGRybV9pbnRlbF9ib19nZW0gKmJvX2dlbSA9IChk cm1faW50ZWxfYm9fZ2VtICopYm87Cj4+PiAgICAgICAgIGludCBpbmRleDsKPj4+ICsgICAgICAg aW50IGZsYWdzID0gMDsKPj4+ICsKPj4+ICsgICAgICAgaWYgKG5lZWRfZmVuY2UpCj4+PiArICAg ICAgICAgICAgICAgZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0U7Cj4+PiArICAgICAg IGlmIChib19nZW0tPnVzZV80OGJfYWRkcmVzc19yYW5nZSkKPj4+ICsgICAgICAgICAgICAgICBm bGFncyB8PSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsKPj4+Cj4+PiAgICAgICAg IGlmIChib19nZW0tPnZhbGlkYXRlX2luZGV4ICE9IC0xKSB7Cj4+PiAtICAgICAgICAgICAgICAg aWYgKG5lZWRfZmVuY2UpCj4+PiAtCj4+PiBidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzW2JvX2dl bS0+dmFsaWRhdGVfaW5kZXhdLmZsYWdzIHw9Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+Pj4gKyAgICAgICAgICAgICAgIGJ1Zm1n cl9nZW0tPmV4ZWMyX29iamVjdHNbYm9fZ2VtLT52YWxpZGF0ZV9pbmRleF0uZmxhZ3MKPj4+IHw9 IGZsYWdzOwo+Pj4gICAgICAgICAgICAgICAgIHJldHVybjsKPj4+ICAgICAgICAgfQo+Pj4KPj4+ IEBAIC01MDEsMTMgKzUzMiw5IEBAIGRybV9pbnRlbF9hZGRfdmFsaWRhdGVfYnVmZmVyMihkcm1f aW50ZWxfYm8gKmJvLCBpbnQKPj4+IG5lZWRfZmVuY2UpCj4+PiAgICAgICAgIGJ1Zm1ncl9nZW0t PmV4ZWMyX29iamVjdHNbaW5kZXhdLmFsaWdubWVudCA9IGJvLT5hbGlnbjsKPj4+ICAgICAgICAg YnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0ub2Zmc2V0ID0gMDsKPj4+ICAgICAgICAg YnVmbWdyX2dlbS0+ZXhlY19ib3NbaW5kZXhdID0gYm87Cj4+PiAtICAgICAgIGJ1Zm1ncl9nZW0t PmV4ZWMyX29iamVjdHNbaW5kZXhdLmZsYWdzID0gMDsKPj4+ICsgICAgICAgYnVmbWdyX2dlbS0+ ZXhlYzJfb2JqZWN0c1tpbmRleF0uZmxhZ3MgPSBmbGFnczsKPj4+ICAgICAgICAgYnVmbWdyX2dl bS0+ZXhlYzJfb2JqZWN0c1tpbmRleF0ucnN2ZDEgPSAwOwo+Pj4gICAgICAgICBidWZtZ3JfZ2Vt LT5leGVjMl9vYmplY3RzW2luZGV4XS5yc3ZkMiA9IDA7Cj4+PiAtICAgICAgIGlmIChuZWVkX2Zl bmNlKSB7Cj4+PiAtICAgICAgICAgICAgICAgYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpbmRl eF0uZmxhZ3MgfD0KPj4+IC0gICAgICAgICAgICAgICAgICAgICAgIEVYRUNfT0JKRUNUX05FRURT X0ZFTkNFOwo+Pj4gLSAgICAgICB9Cj4+PiAgICAgICAgIGJ1Zm1ncl9nZW0tPmV4ZWNfY291bnQr KzsKPj4+ICAgfQo+Pj4KPj4+IEBAIC03ODAsNiArODA3LDcgQEAgcmV0cnk6Cj4+PiAgICAgICAg IGJvX2dlbS0+dXNlZF9hc19yZWxvY190YXJnZXQgPSBmYWxzZTsKPj4+ICAgICAgICAgYm9fZ2Vt LT5oYXNfZXJyb3IgPSBmYWxzZTsKPj4+ICAgICAgICAgYm9fZ2VtLT5yZXVzYWJsZSA9IHRydWU7 Cj4+PiArICAgICAgIGJvX2dlbS0+dXNlXzQ4Yl9hZGRyZXNzX3JhbmdlID0gZmFsc2U7Cj4+Pgo+ Pj4gICAgICAgICBkcm1faW50ZWxfYm9fZ2VtX3NldF9pbl9hcGVydHVyZV9zaXplKGJ1Zm1ncl9n ZW0sIGJvX2dlbSwKPj4+IGFsaWdubWVudCk7Cj4+Pgo+Pj4gQEAgLTkyNiw2ICs5NTQsNyBAQCBk cm1faW50ZWxfZ2VtX2JvX2FsbG9jX3VzZXJwdHIoZHJtX2ludGVsX2J1Zm1ncgo+Pj4gKmJ1Zm1n ciwKPj4+ICAgICAgICAgYm9fZ2VtLT51c2VkX2FzX3JlbG9jX3RhcmdldCA9IGZhbHNlOwo+Pj4g ICAgICAgICBib19nZW0tPmhhc19lcnJvciA9IGZhbHNlOwo+Pj4gICAgICAgICBib19nZW0tPnJl dXNhYmxlID0gZmFsc2U7Cj4+PiArICAgICAgIGJvX2dlbS0+dXNlXzQ4Yl9hZGRyZXNzX3Jhbmdl ID0gZmFsc2U7Cj4+Pgo+Pj4gICAgICAgICBkcm1faW50ZWxfYm9fZ2VtX3NldF9pbl9hcGVydHVy ZV9zaXplKGJ1Zm1ncl9nZW0sIGJvX2dlbSwgMCk7Cj4+Pgo+Pj4gQEAgLTEwODEsNiArMTExMCw3 IEBAIGRybV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fbmFtZShkcm1faW50ZWxfYnVmbWdyCj4+ PiAqYnVmbWdyLAo+Pj4gICAgICAgICBib19nZW0tPmJvLmhhbmRsZSA9IG9wZW5fYXJnLmhhbmRs ZTsKPj4+ICAgICAgICAgYm9fZ2VtLT5nbG9iYWxfbmFtZSA9IGhhbmRsZTsKPj4+ICAgICAgICAg Ym9fZ2VtLT5yZXVzYWJsZSA9IGZhbHNlOwo+Pj4gKyAgICAgICBib19nZW0tPnVzZV80OGJfYWRk cmVzc19yYW5nZSA9IGZhbHNlOwo+Pj4KPj4+ICAgICAgICAgbWVtY2xlYXIoZ2V0X3RpbGluZyk7 Cj4+PiAgICAgICAgIGdldF90aWxpbmcuaGFuZGxlID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+Pj4g QEAgLTE5MzAsNiArMTk2MCwxMyBAQCBkb19ib19lbWl0X3JlbG9jKGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90Cj4+PiBvZmZzZXQsCj4+PiAgICAgICAgIHJldHVybiAwOwo+Pj4gICB9Cj4+Pgo+ Pj4gK3N0YXRpYyB2b2lkCj4+PiArZHJtX2ludGVsX2dlbV9ib191c2VfNDhiX2FkZHJlc3NfcmFu Z2UoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QKPj4+IGVuYWJsZSkKPj4+ICt7Cj4+PiArICAg ICAgIGRybV9pbnRlbF9ib19nZW0gKmJvX2dlbSA9IChkcm1faW50ZWxfYm9fZ2VtICopIGJvOwo+ Pj4gKyAgICAgICBib19nZW0tPnVzZV80OGJfYWRkcmVzc19yYW5nZSA9IGVuYWJsZTsKPj4+ICt9 Cj4+PiArCj4+PiAgIHN0YXRpYyBpbnQKPj4+ICAgZHJtX2ludGVsX2dlbV9ib19lbWl0X3JlbG9j KGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9mZnNldCwKPj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QKPj4+IHRhcmdldF9v ZmZzZXQsCj4+PiBAQCAtMjA3MywxMCArMjExMCwxMiBAQAo+Pj4gZHJtX2ludGVsX3VwZGF0ZV9i dWZmZXJfb2Zmc2V0cyhkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVmbWdyX2dlbSkKPj4+Cj4+PiAg ICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBidWZmZXIgb2Zmc2V0ICovCj4+PiAgICAgICAg ICAgICAgICAgaWYgKGJ1Zm1ncl9nZW0tPmV4ZWNfb2JqZWN0c1tpXS5vZmZzZXQgIT0gYm8tPm9m ZnNldDY0KSB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICBEQkcoIkJPICVkICglcykgbWln cmF0ZWQ6IDB4JTA4bHggLT4gMHglMDhsbHhcbiIsCj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0tPm5hbWUsCj4+PiBiby0+b2Zmc2V0NjQs Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcKPj4+IGxvbmcp YnVmbWdyX2dlbS0+ZXhlY19vYmplY3RzW2ldLgo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mZnNldCk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICBEQkcoIkJPICVkICglcykg bWlncmF0ZWQ6IDB4JTA4eCAlMDh4IC0+IDB4JTA4eAo+Pj4gJTA4eFxuIiwKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBib19nZW0tPmdlbV9oYW5kbGUsIGJvX2dlbS0+bmFtZSwKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl8zMl9iaXRzKGJvLT5vZmZzZXQ2NCks Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJfMzJfYml0cyhiby0+b2Zmc2V0 NjQpLAo+Pj4gKwo+Pj4gdXBwZXJfMzJfYml0cyhidWZtZ3JfZ2VtLT5leGVjX29iamVjdHNbaV0u b2Zmc2V0KSwKPj4+ICsKPj4+IGxvd2VyXzMyX2JpdHMoYnVmbWdyX2dlbS0+ZXhlY19vYmplY3Rz W2ldLm9mZnNldCkpOwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgYm8tPm9mZnNldDY0ID0K Pj4+IGJ1Zm1ncl9nZW0tPmV4ZWNfb2JqZWN0c1tpXS5vZmZzZXQ7Cj4+PiAgICAgICAgICAgICAg ICAgICAgICAgICBiby0+b2Zmc2V0ID0gYnVmbWdyX2dlbS0+ZXhlY19vYmplY3RzW2ldLm9mZnNl dDsKPj4+ICAgICAgICAgICAgICAgICB9Cj4+PiBAQCAtMjA5NCw5ICsyMTMzLDEyIEBAIGRybV9p bnRlbF91cGRhdGVfYnVmZmVyX29mZnNldHMyCj4+PiAoZHJtX2ludGVsX2J1Zm1ncl9nZW0gKmJ1 Zm1ncl9nZW0pCj4+Pgo+Pj4gICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgYnVmZmVyIG9m ZnNldCAqLwo+Pj4gICAgICAgICAgICAgICAgIGlmIChidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3Rz W2ldLm9mZnNldCAhPSBiby0+b2Zmc2V0NjQpCj4+PiB7Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICBEQkcoIkJPICVkICglcykgbWlncmF0ZWQ6IDB4JTA4bHggLT4gMHglMDhsbHhcbiIsCj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0t Pm5hbWUsCj4+PiBiby0+b2Zmc2V0NjQsCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg KHVuc2lnbmVkIGxvbmcKPj4+IGxvbmcpYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpXS5vZmZz ZXQpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgREJHKCJCTyAlZCAoJXMpIG1pZ3JhdGVk OiAweCUwOHggJTA4eCAtPiAweCUwOHgKPj4+ICUwOHhcbiIsCj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0tPm5hbWUsCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXBwZXJfMzJfYml0cyhiby0+b2Zmc2V0NjQpLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyXzMyX2JpdHMoYm8tPm9mZnNldDY0KSwKPj4+ ICsKPj4+IHVwcGVyXzMyX2JpdHMoYnVmbWdyX2dlbS0+ZXhlYzJfb2JqZWN0c1tpXS5vZmZzZXQp LAo+Pj4gKwo+Pj4gbG93ZXJfMzJfYml0cyhidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzW2ldLm9m ZnNldCkpOwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgYm8tPm9mZnNldDY0ID0KPj4+IGJ1 Zm1ncl9nZW0tPmV4ZWMyX29iamVjdHNbaV0ub2Zmc2V0Owo+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgYm8tPm9mZnNldCA9IGJ1Zm1ncl9nZW0tPmV4ZWMyX29iamVjdHNbaV0ub2Zmc2V0Owo+ Pj4gICAgICAgICAgICAgICAgIH0KPj4+IEBAIC0yNDgxLDYgKzI1MjMsNyBAQCBkcm1faW50ZWxf Ym9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGRybV9pbnRlbF9idWZtZ3IKPj4+ICpidWZtZ3IsIGlu dCBwcmltZV9mZCwgaW50IHMKPj4+ICAgICAgICAgYm9fZ2VtLT51c2VkX2FzX3JlbG9jX3Rhcmdl dCA9IGZhbHNlOwo+Pj4gICAgICAgICBib19nZW0tPmhhc19lcnJvciA9IGZhbHNlOwo+Pj4gICAg ICAgICBib19nZW0tPnJldXNhYmxlID0gZmFsc2U7Cj4+PiArICAgICAgIGJvX2dlbS0+dXNlXzQ4 Yl9hZGRyZXNzX3JhbmdlID0gZmFsc2U7Cj4+Pgo+Pj4gICAgICAgICBEUk1JTklUTElTVEhFQUQo JmJvX2dlbS0+dm1hX2xpc3QpOwo+Pj4gICAgICAgICBEUk1MSVNUQUREVEFJTCgmYm9fZ2VtLT5u YW1lX2xpc3QsICZidWZtZ3JfZ2VtLT5uYW1lZCk7Cj4+PiBAQCAtMzI3OCw2ICszMzIxLDEzIEBA IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoaW50IGZkLCBpbnQgYmF0Y2hfc2l6ZSkKPj4+ICAg ICAgICAgICAgICAgICB9Cj4+PiAgICAgICAgIH0KPj4+Cj4+PiArICAgICAgIGlmIChidWZtZ3Jf Z2VtLT5nZW4gPj0gOCkgewo+Pj4gKyAgICAgICAgICAgICAgIGdwLnBhcmFtID0gSTkxNV9QQVJB TV9IQVNfQUxJQVNJTkdfUFBHVFQ7Cj4+PiArICAgICAgICAgICAgICAgcmV0ID0gZHJtSW9jdGwo YnVmbWdyX2dlbS0+ZmQsIERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLAo+Pj4gJmdwKTsKPj4+ICsg ICAgICAgICAgICAgICBpZiAocmV0ID09IDAgJiYgKmdwLnZhbHVlID09IDMpCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICBidWZtZ3JfZ2VtLT5idWZtZ3IuYm9fdXNlXzQ4Yl9hZGRyZXNzX3Jh bmdlID0KPj4+IGRybV9pbnRlbF9nZW1fYm9fdXNlXzQ4Yl9hZGRyZXNzX3JhbmdlOwo+Pj4gKyAg ICAgICB9Cj4+PiArCj4+PiAgICAgICAgIC8qIExldCdzIGdvIHdpdGggb25lIHJlbG9jYXRpb24g cGVyIGV2ZXJ5IDIgZHdvcmRzIChidXQgcm91bmQKPj4+IGRvd24gYSBiaXQKPj4+ICAgICAgICAg ICogc2luY2UgYSBwb3dlciBvZiB0d28gd2lsbCBtZWFuIGFuIGV4dHJhIHBhZ2UgYWxsb2NhdGlv biBmb3IKPj4+IHRoZSByZWxvYwo+Pj4gICAgICAgICAgKiBidWZmZXIpLgo+Pj4gZGlmZiAtLWdp dCBhL2ludGVsL2ludGVsX2J1Zm1ncl9wcml2LmggYi9pbnRlbC9pbnRlbF9idWZtZ3JfcHJpdi5o Cj4+PiBpbmRleCA1OWViZDE4Li41YzE3ZmZiIDEwMDY0NAo+Pj4gLS0tIGEvaW50ZWwvaW50ZWxf YnVmbWdyX3ByaXYuaAo+Pj4gKysrIGIvaW50ZWwvaW50ZWxfYnVmbWdyX3ByaXYuaAo+Pj4gQEAg LTE1Miw2ICsxNTIsMjAgQEAgc3RydWN0IF9kcm1faW50ZWxfYnVmbWdyIHsKPj4+ICAgICAgICAg dm9pZCAoKmRlc3Ryb3kpIChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpOwo+Pj4KPj4+ICAgICAg ICAgLyoqCj4+PiArICAgICAgICAqIEluZGljYXRlIGlmIHRoZSBidWZmZXIgY2FuIGJlIHBsYWNl ZCBhbnl3aGVyZSBpbiB0aGUgZnVsbAo+Pj4gcHBndHQKPj4+ICsgICAgICAgICogYWRkcmVzcyBy YW5nZSAoMl40OCkuCj4+PiArICAgICAgICAqCj4+PiArICAgICAgICAqIEFueSByZXNvdXJjZSB1 c2VkIHdpdGggZmxhdC9oZWFwbGVzcyAoMHgwMDAwMDAwMC0weGZmZmZmMDAwKQo+Pj4gKyAgICAg ICAgKiBHZW5lcmFsIFN0YXRlIEhlYXAgKEdTSCkgb3IgSW50cnVjdGlvbnMgU3RhdGUgSGVhcCAo SVNIKSBtdXN0Cj4+PiArICAgICAgICAqIGJlIGluIGEgMzItYml0IHJhbmdlLiA0OC1iaXQgcmFu Z2Ugd2lsbCBvbmx5IGJlIHVzZWQgd2hlbgo+Pj4gZXhwbGljaXRseQo+Pj4gKyAgICAgICAgKiBy ZXF1ZXN0ZWQuCj4+PiArICAgICAgICAqCj4+PiArICAgICAgICAqIFxwYXJhbSBibyBCdWZmZXIg dG8gc2V0IHRoZSB1c2VfNDhiX2FkZHJlc3NfcmFuZ2UgZmxhZy4KPj4+ICsgICAgICAgICogXHBh cmFtIGVuYWJsZSBUaGUgZmxhZyB2YWx1ZS4KPj4+ICsgICAgICAgICovCj4+PiArICAgICAgIHZv aWQgKCpib191c2VfNDhiX2FkZHJlc3NfcmFuZ2UpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJf dAo+Pj4gZW5hYmxlKTsKPj4+ICsKPj4+ICsgICAgICAgLyoqCj4+PiAgICAgICAgICAqIEFkZCBy ZWxvY2F0aW9uIGVudHJ5IGluIHJlbG9jX2J1Ziwgd2hpY2ggd2lsbCBiZSB1cGRhdGVkIHdpdGgK Pj4+IHRoZQo+Pj4gICAgICAgICAgKiB0YXJnZXQgYnVmZmVyJ3MgcmVhbCBvZmZzZXQgb24gb24g Y29tbWFuZCBzdWJtaXNzaW9uLgo+Pj4gICAgICAgICAgKgo+Pj4gLS0KPj4+IDIuNS4wCj4+Pgo+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCm1lc2EtZGV2 IG1haWxpbmcgbGlzdAptZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL21lc2EtZGV2Cg==