From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v3] drm/i915/glk: Reuse broxton code for geminilake Date: Fri, 02 Dec 2016 10:27:05 +0200 Message-ID: <1480667225.4361.8.camel@gmail.com> References: <1478872351-7946-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1480434432-28066-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <20161202010637.GI9417@rdvivi-vienna> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3E066E924 for ; Fri, 2 Dec 2016 08:27:13 +0000 (UTC) Received: by mail-pg0-x243.google.com with SMTP id p66so7270005pga.2 for ; Fri, 02 Dec 2016 00:27:13 -0800 (PST) In-Reply-To: <20161202010637.GI9417@rdvivi-vienna> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE2LTEyLTAxIGF0IDE3OjA2IC0wODAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4g QSByZXZpZXdlZCBiYWNrd2FyZHMgYmVjYXVzZSBJIHdhcyB3aWxsaW5nIHRvIGNoZWNrIGlmIGFs bCBpZnMgd2VyZSBpbiBwbGFjZS4KPiAKPiBJIG1pc3NlZCB0aGUgb25lcyBmcm9tIGk5MTVfZHJ2 LmMKPiAKPiAqKiogaTkxNV9kcnYuYzoKPiBpOTE1X2RybV9zdXNwZW5kX2xhdGVbMTUwMF3CoMKg wqDCoGZ3X2NzciA9ICFJU19HRU45X0xQKGRldl9wcml2KSAmJgo+IGk5MTVfZHJtX3N1c3BlbmRf bGF0ZVsxNTEzXcKgwqDCoMKgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IGk5MTVfZHJtX3Jl c3VtZV9lYXJseVsxNzIxXcKgwqDCoMKgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gaTkx NV9kcm1fcmVzdW1lX2Vhcmx5WzE3MzFdwqDCoMKgwqBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikg fHwKPiBpbnRlbF9ydW50aW1lX3N1c3BlbmRbMjM1NF3CoMKgwqDCoGlmIChJU19HRU45X0xQKGRl dl9wcml2KSkgewo+IGludGVsX3J1bnRpbWVfcmVzdW1lWzI0MzldwqDCoMKgwqDCoGlmIChJU19H RU45X0xQKGRldl9wcml2KSkgewo+IAo+IFRoZSBvbmVzIHRoYXQgSSBoYWQgYWRkZWQgd2l0aCB0 aGUgcGF0Y2gKPiAiZHJtL2k5MTUvZ2xrOiBBZGQgbWlzc2luZyBiaXRzIHRvIGFsbG93IHJ1bnRp bWUgcG0gc3VzcGVuZCBvbiBHTEsuIgo+IAo+IEZlZWwgZnJlZSB0byBzcXVhc2ggYWxsIHRob3Nl IGludG8gdGhpcyBwYXRjaCBpZiB5b3UgbGlrZS4gSG93ZXZlciBJIGJlbGlldmUKPiB0aGF0IGJl Zm9yZSB0aGF0IG9uZSB3ZSBuZWVkIEFudXNoYSdzIGRtYyBsb2FkIHBhdGNoIHRoYXQgaXMgb25l IHRoYXQgSSdtIGFsc28KPiBtaXNzaW5nIG9uIHRoaXMgc2VyaWVzIGhlcmUsIHJpZ2h0Pwo+IAo+ IFNvIGFueSBvcHRpb24gd29ya3MgZm9yIG1lIGFuZCBpZiB5b3UgZGVjaWRlIHRvIG1vdmUgd2l0 aCB0aGlzIGZlZWwgZnJlZSB0bwo+IHVzZQo+IFJldmlld2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJv ZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gCj4gQW5kIHBsZWFzZSBsZXQgbWUga25vdyB3aGF0IGFy ZSB5b3VyIHBsYW5zIHdpdGggdGhpcyBydW50aW1lX3BtIHJlbGF0ZWQKPiBwYXRjaGVzIGFuZCBp ZiB5b3UgbmVlZCBhbnl0aGluZyBmcm9tIG1lLgoKSSB3YXMgcGxhbm5pbmcgdG8gZG8gdGhvc2Ug YXMgYSBmb2xsb3cgdXAgb25jZSB0aGlzIHNlcmllcyBpcyBtZXJnZWQuIEkgZGlkbid0CndhbnQg dG8gbWFrZSBpdCBhbnkgYmlnZ2VyIHRvIG1ha2UgcmV2aWV3IGVhc2llci4KCkFuZGVyCgo+IAo+ IFRoYW5rcywKPiBSb2RyaWdvLgo+IAo+IE9uIFR1ZSwgTm92IDI5LCAyMDE2IGF0IDA1OjQ3OjEy UE0gKzAyMDAsIEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSB3cm90ZToKPiA+IAo+ID4gR2Vt aW5pbGFrZSBpcyBtb3N0bHkgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBicm94dG9uLCBzbyBj aGFuZ2UgbW9zdAo+ID4gb2YgdGhlIElTX0JST1hUT04oKSBjaGVja3MgdG8gSVNfR0VOOV9MUCgp LiBEaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQo+ID4gcGxhdGZvcm1zIHdpbGwgYmUgaW1wbGVtZW50 ZWQgaW4gZm9sbG93LXVwIHBhdGNoZXMuCj4gPiAKPiA+IHYyOiBEb24ndCByZXVzZSBicm94dG9u J3MgcGF0aCBpbiBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKCkuCj4gPiDCoMKgwqDCoERvbid0IHNl dCBwbGFuZSBjb3VudCBhcyBpbiBicm94dG9uLgo+ID4gCj4gPiB2MzogUmViYXNlCj4gPiAKPiA+ IHY0OiBJbmNsdWRlIHRoZSBjaGVjayBpbnRlbF9iaW9zX2lzX3BvcnRfaHBkX2ludmVydGVkKCku Cj4gPiDCoMKgwqDCoENvbW1pdCBtZXNzYWdlLgo+ID4gCj4gPiB2NTogTGVhdmUgaTkxNV9kbWNf aW5mbygpIG91dDsgZ2xrJ3MgY3NyIHZlcnNpb24gIT0gYnh0J3MuIChSb2RyaWdvKQo+ID4gCj4g PiB2NjogUmViYXNlLgo+ID4gCj4gPiB2NzogQ29udmVydCBhIGZldyBtb2RlIElTX0JST1hUT04o KSBvY2N1cmFuY2VzIGluIHBwcywgZGRpLCBkc2kgYW5kIHBsbAo+ID4gwqDCoMKgwqBjb2RlLiAo Um9kcmlnbykKPiA+IAo+ID4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNv bT4KPiA+IFNpZ25lZC1vZmYtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8YW5kZXIu Y29uc2VsdmFuLmRlLm9saXZlaXJhQGludGUKPiA+IGwuY29tPgo+ID4gLS0tCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoHwgMTAgKysrKystLS0tLQo+ ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuY8KgwqDCoMKgwqB8wqDCoDgg KysrKy0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuY8KgwqDCoMKgwqDC oMKgwqDCoHwgMTAgKysrKystLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA0ICsrLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYmlvcy5jwqDCoMKgwqDCoMKgwqB8wqDCoDIgKy0KPiA+IMKgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmPCoMKgwqDCoMKgwqDCoMKgfCAxOCArKysrKysrKystLS0tLS0t LS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jwqDCoMKgwqB8IDEy ICsrKysrKy0tLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jwqDCoMKg wqDCoMKgwqDCoMKgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuY8KgwqDCoHzCoMKgMSAtCj4gPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmPCoMKgwqB8wqDCoDIgKy0KPiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmPCoMKgwqDCoMKgwqDCoMKgfCAzMCArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp X3BsbC5jwqDCoMKgwqB8IDEyICsrKysrKy0tLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmPCoMKgwqDCoMKgwqDCoHzCoMKgNiArKystLS0KPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaTJjLmPCoMKgwqDCoMKgwqDCoMKgfMKgwqA0ICsrLS0KPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jwqDCoMKgwqDCoMKgwqB8wqDCoDIgKy0K PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuY8KgwqDCoMKgwqDCoHzCoMKg MiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgwqDC oMKgfMKgwqA2ICsrKy0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMgfMKgwqA2ICsrKy0tLQo+ID4gwqAxOCBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25z KCspLCA4MCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gPiBpbmRleCA4ZWI4YzI5Li42YzE3ZDM5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gPiBAQCAtMTEwOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBp OTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiA+IHZvaWQgKnVudXNlZCkK PiA+IMKgCQlpbnQgbWF4X2ZyZXE7Cj4gPiAKPiA+IMKgCQlycF9zdGF0ZV9saW1pdHMgPSBJOTE1 X1JFQUQoR0VONl9SUF9TVEFURV9MSU1JVFMpOwo+ID4gLQkJaWYgKElTX0JST1hUT04oZGV2X3By aXYpKSB7Cj4gPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiA+IMKgCQkJcnBfc3Rh dGVfY2FwID0gSTkxNV9SRUFEKEJYVF9SUF9TVEFURV9DQVApOwo+ID4gwqAJCQlndF9wZXJmX3N0 YXR1cyA9IEk5MTVfUkVBRChCWFRfR1RfUEVSRl9TVEFUVVMpOwo+ID4gwqAJCX0gZWxzZSB7Cj4g PiBAQCAtMTIwNCw3ICsxMjA0LDcgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwKPiA+IHZvaWQgKnVudXNlZCkKPiA+IMKgCQlzZXFfcHJpbnRmKG0s ICJEb3duIHRocmVzaG9sZDogJWQlJVxuIiwKPiA+IMKgCQkJwqDCoMKgZGV2X3ByaXYtPnJwcy5k b3duX3RocmVzaG9sZCk7Cj4gPiAKPiA+IC0JCW1heF9mcmVxID0gKElTX0JST1hUT04oZGV2X3By aXYpID8gcnBfc3RhdGVfY2FwID4+IDAgOgo+ID4gKwkJbWF4X2ZyZXEgPSAoSVNfR0VOOV9MUChk ZXZfcHJpdikgPyBycF9zdGF0ZV9jYXAgPj4gMCA6Cj4gPiDCoAkJCcKgwqDCoMKgcnBfc3RhdGVf Y2FwID4+IDE2KSAmIDB4ZmY7Cj4gPiDCoAkJbWF4X2ZyZXEgKj0gKElTX1NLWUxBS0UoZGV2X3By aXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KQo+ID4gPwo+ID4gwqAJCQnCoMKgwqDCoMKgR0VO OV9GUkVRX1NDQUxFUiA6IDEpOwo+ID4gQEAgLTEyMTcsNyArMTIxNyw3IEBAIHN0YXRpYyBpbnQg aTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gPiB2b2lkICp1bnVzZWQp Cj4gPiDCoAkJc2VxX3ByaW50ZihtLCAiTm9taW5hbCAoUlAxKSBmcmVxdWVuY3k6ICVkTUh6XG4i LAo+ID4gwqAJCQnCoMKgwqBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgbWF4X2ZyZXEpKTsKPiA+ IAo+ID4gLQkJbWF4X2ZyZXEgPSAoSVNfQlJPWFRPTihkZXZfcHJpdikgPyBycF9zdGF0ZV9jYXAg Pj4gMTYgOgo+ID4gKwkJbWF4X2ZyZXEgPSAoSVNfR0VOOV9MUChkZXZfcHJpdikgPyBycF9zdGF0 ZV9jYXAgPj4gMTYgOgo+ID4gwqAJCQnCoMKgwqDCoHJwX3N0YXRlX2NhcCA+PiAwKSAmIDB4ZmY7 Cj4gPiDCoAkJbWF4X2ZyZXEgKj0gKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtF KGRldl9wcml2KQo+ID4gPwo+ID4gwqAJCQnCoMKgwqDCoMKgR0VOOV9GUkVRX1NDQUxFUiA6IDEp Owo+ID4gQEAgLTUxNjksNyArNTE2OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vf c3RhdHVzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAl1MzIg c19yZWdbc19tYXhdLCBldV9yZWdbMipzX21heF0sIGV1X21hc2tbMl07Cj4gPiAKPiA+IMKgCS8q IEJYVCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJzbGljZXMuICovCj4gPiAt CWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ID4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikpIHsKPiA+IMKgCQlzX21heCA9IDE7Cj4gPiDCoAkJc3NfbWF4ID0gMzsKPiA+IMKgCX0KPiA+ IEBAIC01MjAzLDcgKzUyMDMsNyBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfZGV2aWNlX3N0YXR1 cyhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJCWZvciAoc3Mg PSAwOyBzcyA8IHNzX21heDsgc3MrKykgewo+ID4gwqAJCQl1bnNpZ25lZCBpbnQgZXVfY250Owo+ ID4gCj4gPiAtCQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCQkJaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJCQlpZiAoIShzX3JlZ1tzXSAmIChHRU45X1BHQ1RM X1NTX0FDSyhzcykpKSkKPiA+IMKgCQkJCQkvKiBza2lwIGRpc2FibGVkIHN1YnNsaWNlICovCj4g PiDCoAkJCQkJY29udGludWU7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK PiA+IGluZGV4IDZjZWU3MDcuLmU3MjFhNmYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiA+IEBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIHZvaWQga3VubWFwX3Bh Z2VfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsIHZvaWQgKnZhZGRy KQo+ID4gwqAJLyogVGhlcmUgYXJlIG9ubHkgZmV3IGV4Y2VwdGlvbnMgZm9yIGdlbiA+PTYuIGNo diBhbmQgYnh0Lgo+ID4gwqAJwqAqIEFuZCB3ZSBhcmUgbm90IHN1cmUgYWJvdXQgdGhlIGxhdHRl ciBzbyBwbGF5IHNhZmUgZm9yIG5vdy4KPiA+IMKgCcKgKi8KPiA+IC0JaWYgKElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikgfHwgSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJZHJtX2NsZmx1 c2hfdmlydF9yYW5nZSh2YWRkciwgUEFHRV9TSVpFKTsKPiA+IAo+ID4gwqAJa3VubWFwX2F0b21p Yyh2YWRkcik7Cj4gPiBAQCAtMjk0MCw3ICsyOTQwLDcgQEAgc3RhdGljIGludCBnZ3R0X3Byb2Jl X2NvbW1vbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LAo+ID4gdTY0IHNpemUpCj4gPiDCoAnCoCog cmVzb3J0IHRvIGFuIHVuY2FjaGVkIG1hcHBpbmcuIFRoZSBXQyBpc3N1ZSBpcyBlYXNpbHkgY2F1 Z2h0IGJ5Cj4gPiB0aGUKPiA+IMKgCcKgKiByZWFkYmFjayBjaGVjayB3aGVuIHdyaXRpbmcgR1RU IFBURSBlbnRyaWVzLgo+ID4gwqAJwqAqLwo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikp Cj4gPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlnZ3R0LT5nc20gPSBpb3Jl bWFwX25vY2FjaGUocGh5c19hZGRyLCBzaXplKTsKPiA+IMKgCWVsc2UKPiA+IMKgCQlnZ3R0LT5n c20gPSBpb3JlbWFwX3djKHBoeXNfYWRkciwgc2l6ZSk7Cj4gPiBAQCAtMzA3MCw3ICszMDcwLDcg QEAgc3RhdGljIGludCBnZW44X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiA+ IAo+ID4gwqAJZ2d0dC0+YmFzZS50b3RhbCA9IChzaXplIC8gc2l6ZW9mKGdlbjhfcHRlX3QpKSA8 PCBQQUdFX1NISUZUOwo+ID4gCj4gPiAtCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSB8fCBJ U19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8 IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCWNodl9zZXR1cF9wcml2YXRlX3BwYXQoZGV2 X3ByaXYpOwo+ID4gwqAJZWxzZQo+ID4gwqAJCWJkd19zZXR1cF9wcml2YXRlX3BwYXQoZGV2X3By aXYpOwo+ID4gQEAgLTMzMTAsNyArMzMxMCw3IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRf bWFwcGluZ3Moc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCWdn dHQtPmJhc2UuY2xvc2VkID0gZmFsc2U7Cj4gPiAKPiA+IMKgCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpIHsKPiA+IC0JCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSB8fCBJU19CUk9Y VE9OKGRldl9wcml2KSkKPiA+ICsJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSB8fCBJU19H RU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQkJY2h2X3NldHVwX3ByaXZhdGVfcHBhdChkZXZfcHJp dik7Cj4gPiDCoAkJZWxzZQo+ID4gwqAJCQliZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KGRldl9wcml2 KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+IGluZGV4IDBiMTE5YjkuLmEwZTcw ZjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiBAQCAtMjQzNSw3ICsyNDM1 LDcgQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gPiB1MzIgbWFzdGVyX2N0bCkKPiA+IMKgCQkJCWZvdW5kID0gdHJ1ZTsKPiA+IMKgCQkJ fQo+ID4gCj4gPiAtCQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCQkJaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJCQl0bXBfbWFzayA9IGlpciAmIEJYVF9ERV9Q T1JUX0hPVFBMVUdfTUFTSzsKPiA+IMKgCQkJCWlmICh0bXBfbWFzaykgewo+ID4gwqAJCQkJCWJ4 dF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsCj4gPiB0bXBfbWFzaywKPiA+IEBAIC0yNDUxLDcg KzI0NTEsNyBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiA+IHUzMiBtYXN0ZXJfY3RsKQo+ID4gwqAJCQkJfQo+ID4gwqAJCQl9Cj4gPiAK PiA+IC0JCQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikgJiYgKGlpciAmCj4gPiBCWFRfREVfUE9S VF9HTUJVUykpIHsKPiA+ICsJCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgKGlpciAmCj4g PiBCWFRfREVfUE9SVF9HTUJVUykpIHsKPiA+IMKgCQkJCWdtYnVzX2lycV9oYW5kbGVyKGRldl9w cml2KTsKPiA+IMKgCQkJCWZvdW5kID0gdHJ1ZTsKPiA+IMKgCQkJfQo+ID4gQEAgLTMzNzUsNyAr MzM3NSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZGVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdAo+ID4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAkJCQnCoMKgR0VOOV9ERV9QSVBFX0lS UV9GQVVMVF9FUlJPUlM7Cj4gPiDCoAkJZGVfcG9ydF9tYXNrZWQgfD0gR0VOOV9BVVhfQ0hBTk5F TF9CIHwgR0VOOV9BVVhfQ0hBTk5FTF9DIHwKPiA+IMKgCQkJCcKgwqBHRU45X0FVWF9DSEFOTkVM X0Q7Cj4gPiAtCQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCQlpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpCj4gPiDCoAkJCWRlX3BvcnRfbWFza2VkIHw9IEJYVF9ERV9QT1JUX0dNQlVT Owo+ID4gwqAJfSBlbHNlIHsKPiA+IMKgCQlkZV9waXBlX21hc2tlZCB8PSBHRU44X1BJUEVfUFJJ TUFSWV9GTElQX0RPTkUgfAo+ID4gQEAgLTMzODYsNyArMzM4Niw3IEBAIHN0YXRpYyB2b2lkIGdl bjhfZGVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiDCoAkJCQkJwqDCoMKgR0VOOF9QSVBFX0ZJRk9fVU5ERVJSVU47Cj4gPiAKPiA+IMKg CWRlX3BvcnRfZW5hYmxlcyA9IGRlX3BvcnRfbWFza2VkOwo+ID4gLQlpZiAoSVNfQlJPWFRPTihk ZXZfcHJpdikpCj4gPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlkZV9wb3J0 X2VuYWJsZXMgfD0gQlhUX0RFX1BPUlRfSE9UUExVR19NQVNLOwo+ID4gwqAJZWxzZSBpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSkKPiA+IMKgCQlkZV9wb3J0X2VuYWJsZXMgfD0gR0VOOF9QT1JU X0RQX0FfSE9UUExVRzsKPiA+IEBAIC00MjExLDcgKzQyMTEsNyBAQCB2b2lkIGludGVsX2lycV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCQlkZXYtPmRyaXZl ci0+aXJxX3VuaW5zdGFsbCA9IGdlbjhfaXJxX3VuaW5zdGFsbDsKPiA+IMKgCQlkZXYtPmRyaXZl ci0+ZW5hYmxlX3ZibGFuayA9IGdlbjhfZW5hYmxlX3ZibGFuazsKPiA+IMKgCQlkZXYtPmRyaXZl ci0+ZGlzYWJsZV92YmxhbmsgPSBnZW44X2Rpc2FibGVfdmJsYW5rOwo+ID4gLQkJaWYgKElTX0JS T1hUT04oZGV2X3ByaXYpKQo+ID4gKwkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJ CQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0KPiA+IGJ4dF9ocGRfaXJxX3NldHVw Owo+ID4gwqAJCWVsc2UgaWYgKEhBU19QQ0hfU1BUKGRldl9wcml2KSB8fCBIQVNfUENIX0tCUChk ZXZfcHJpdikpCj4gPiDCoAkJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAgPQo+ID4g c3B0X2hwZF9pcnFfc2V0dXA7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBpbmRl eCA2NzQ3ZDY4Li4xZGVjMjA3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4g QEAgLTMyNTYsNyArMzI1Niw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gwqAj ZGVmaW5lIElOVEVSVkFMXzFfMzNfVVModXMpCSgoKHVzKSAqIDMpwqDCoMKgPj4gMikKPiA+IMKg I2RlZmluZSBJTlRFUlZBTF8wXzgzM19VUyh1cykJKCgodXMpICogNikgLyA1KQo+ID4gwqAjZGVm aW5lIEdUX0lOVEVSVkFMX0ZST01fVVMoZGV2X3ByaXYsIHVzKSAoSVNfR0VOOShkZXZfcHJpdikg PyBcCj4gPiAtCQkJCShJU19CUk9YVE9OKGRldl9wcml2KSA/IFwKPiA+ICsJCQkJKElTX0dFTjlf TFAoZGV2X3ByaXYpID8gXAo+ID4gwqAJCQkJSU5URVJWQUxfMF84MzNfVVModXMpIDogXAo+ID4g wqAJCQkJSU5URVJWQUxfMV8zM19VUyh1cykpIDogXAo+ID4gwqAJCQkJSU5URVJWQUxfMV8yOF9V Uyh1cykpCj4gPiBAQCAtMzI2NSw3ICszMjY1LDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxs cyB7Cj4gPiDCoCNkZWZpbmUgSU5URVJWQUxfMV8zM19UT19VUyhpbnRlcnZhbCnCoMKgKCgoaW50 ZXJ2YWwpIDw8IDIpIC8gMykKPiA+IMKgI2RlZmluZSBJTlRFUlZBTF8wXzgzM19UT19VUyhpbnRl cnZhbCkgKCgoaW50ZXJ2YWwpICogNSnCoMKgLyA2KQo+ID4gwqAjZGVmaW5lIEdUX1BNX0lOVEVS VkFMX1RPX1VTKGRldl9wcml2LCBpbnRlcnZhbCkgKElTX0dFTjkoZGV2X3ByaXYpID8gXAo+ID4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChJ U19CUk9YVE9OKGRldl9wcml2KSA/IFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoSVNfR0VOOV9MUChkZXZfcHJpdikgPyBcCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoElO VEVSVkFMXzBfODMzX1RPX1VTKGludGVydmFsKSA6IFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSU5URVJWQUxfMV8zM19UT19VUyhp bnRlcnZhbCkpIDogXAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBJTlRFUlZBTF8xXzI4X1RPX1VTKGludGVydmFsKSkKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4gPiBpbmRleCA3ZmZhYjFhLi5lYWFkZTI3IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiA+IEBAIC0xNzc5LDcgKzE3NzksNyBA QCBpbnRlbF9iaW9zX2lzX3BvcnRfaHBkX2ludmVydGVkKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiDCoHsKPiA+IMKgCWludCBpOwo+ID4gCj4gPiAtCWlmIChXQVJO X09OX09OQ0UoIUlTX0JST1hUT04oZGV2X3ByaXYpKSkKPiA+ICsJaWYgKFdBUk5fT05fT05DRSgh SVNfR0VOOV9MUChkZXZfcHJpdikpKQo+ID4gwqAJCXJldHVybiBmYWxzZTsKPiA+IAo+ID4gwqAJ Zm9yIChpID0gMDsgaSA8IGRldl9wcml2LT52YnQuY2hpbGRfZGV2X251bTsgaSsrKSB7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGluZGV4IGY4ZTkzOWQuLjMxMzNlNTcgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IEBAIC00NDIsNyArNDQyLDcgQEAg c3RhdGljIGludCBpbnRlbF9kZGlfaGRtaV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ ID4gKmRldl9wcml2LCBlbnVtIHBvcnQgcG9yCj4gPiAKPiA+IMKgCWhkbWlfbGV2ZWwgPSBkZXZf cHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0uaGRtaV9sZXZlbF9zaGlmdDsKPiA+IAo+ID4g LQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2 KSkKPiA+IMKgCQlyZXR1cm4gaGRtaV9sZXZlbDsKPiA+IAo+ID4gwqAJaWYgKElTX1NLWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgewo+ID4gQEAgLTQ4NCw3ICs0ODQs NyBAQCB2b2lkIGludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoc3RydWN0IGludGVsX2VuY29k ZXIKPiA+ICplbmNvZGVyKQo+ID4gwqAJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnNfZWRwOwo+ID4gwqAJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnM7Cj4gPiAKPiA+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwlp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJcmV0dXJuOwo+ID4gCj4gPiDCoAlpZiAo SVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiBAQCAtNTY3LDcgKzU2Nyw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3ByZXBhcmVfaGRtaV9kZGlfYnVmZmVycyhzdHJ1Y3QKPiA+IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4gPiDCoAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rl cl9wb3J0KGVuY29kZXIpOwo+ID4gwqAJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnNfaGRtaTsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4g PiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlyZXR1cm47Cj4gPiAKPiA+IMKg CWhkbWlfbGV2ZWwgPSBpbnRlbF9kZGlfaGRtaV9sZXZlbChkZXZfcHJpdiwgcG9ydCk7Cj4gPiBA QCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9lbmNvZGVyCj4gPiAqZW5jb2RlciwKPiA+IMKgCQloc3dfZGRpX2Nsb2NrX2dldChlbmNvZGVy LCBwaXBlX2NvbmZpZyk7Cj4gPiDCoAllbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJ U19LQUJZTEFLRShkZXZfcHJpdikpCj4gPiDCoAkJc2tsX2RkaV9jbG9ja19nZXQoZW5jb2Rlciwg cGlwZV9jb25maWcpOwo+ID4gLQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJ ZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJYnh0X2RkaV9jbG9ja19nZXQo ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ID4gwqB9Cj4gPiAKPiA+IEBAIC0xMTUzLDcgKzExNTMs NyBAQCBib29sIGludGVsX2RkaV9wbGxfc2VsZWN0KHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqaW50 ZWxfY3J0YywKPiA+IMKgCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShk ZXZfcHJpdikpCj4gPiDCoAkJcmV0dXJuIHNrbF9kZGlfcGxsX3NlbGVjdChpbnRlbF9jcnRjLCBj cnRjX3N0YXRlLAo+ID4gwqAJCQkJCcKgwqBpbnRlbF9lbmNvZGVyKTsKPiA+IC0JZWxzZSBpZiAo SVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYp KQo+ID4gwqAJCXJldHVybiBieHRfZGRpX3BsbF9zZWxlY3QoaW50ZWxfY3J0YywgY3J0Y19zdGF0 ZSwKPiA+IMKgCQkJCQnCoMKgaW50ZWxfZW5jb2Rlcik7Cj4gPiDCoAllbHNlCj4gPiBAQCAtMTY0 Myw3ICsxNjQzLDcgQEAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiA+IAo+ID4gwqAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tB QllMQUtFKGRldl9wcml2KSkKPiA+IMKgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2RlciwgbGV2 ZWwpOwo+ID4gLQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJZWxzZSBpZiAo SVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2 X3ByaXYsIGxldmVsLCBwb3J0LCBlbmNvZGVyLQo+ID4gPnR5cGUpOwo+ID4gCj4gPiDCoAlyZXR1 cm4gRERJX0JVRl9UUkFOU19TRUxFQ1QobGV2ZWwpOwo+ID4gQEAgLTE3MTYsNyArMTcxNiw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0Cj4gPiBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gwqAJaW50ZWxfcHJlcGFyZV9oZG1pX2RkaV9idWZmZXJzKGVu Y29kZXIpOwo+ID4gwqAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRl dl9wcml2KSkKPiA+IMKgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2RlciwgbGV2ZWwpOwo+ID4g LQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJZWxzZSBpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpCj4gPiDCoAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2X3ByaXYsIGxl dmVsLCBwb3J0LAo+ID4gwqAJCQkJCUlOVEVMX09VVFBVVF9IRE1JKTsKPiA+IAo+ID4gQEAgLTIx MjcsNyArMjEyNyw3IEBAIGludGVsX2RkaV9nZXRfbGlua19kcGxsKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIGludAo+ID4gY2xvY2spCj4gPiDCoAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxf Y29uZmlnIHRtcF9wbGxfY29uZmlnOwo+ID4gwqAJZW51bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQ7 Cj4gPiAKPiA+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCWlmIChJU19HRU45 X0xQKGRldl9wcml2KSkgewo+ID4gwqAJCWRwbGxfaWQgPcKgwqAoZW51bSBpbnRlbF9kcGxsX2lk KWRpZ19wb3J0LT5wb3J0Owo+ID4gwqAJCS8qCj4gPiDCoAkJwqAqIFNlbGVjdCB0aGUgcmVxdWly ZWQgUExMLiBUaGlzIHdvcmtzIGZvciBwbGF0Zm9ybXMgd2hlcmUKPiA+IEBAIC0yMjQ0LDcgKzIy NDQsNyBAQCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+IGVudW0gcG9ydCBwb3J0KQo+ID4gwqAJwqAqIGNvbmZpZ3VyYXRpb24gc28gdGhh dCB3ZSB1c2UgdGhlIHByb3BlciBsYW5lIGNvdW50IGZvciBvdXIKPiA+IMKgCcKgKiBjYWxjdWxh dGlvbnMuCj4gPiDCoAnCoCovCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSAmJiBwb3J0 ID09IFBPUlRfQSkgewo+ID4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgcG9ydCA9PSBQ T1JUX0EpIHsKPiA+IMKgCQlpZiAoIShpbnRlbF9kaWdfcG9ydC0+c2F2ZWRfcG9ydF9iaXRzICYg RERJX0FfNF9MQU5FUykpIHsKPiA+IMKgCQkJRFJNX0RFQlVHX0tNUygiQlhUIEJJT1MgZm9yZ290 IHRvIHNldCBERElfQV80X0xBTkVTCj4gPiBmb3IgcG9ydCBBOyBmaXhpbmdcbiIpOwo+ID4gwqAJ CQlpbnRlbF9kaWdfcG9ydC0+c2F2ZWRfcG9ydF9iaXRzIHw9IERESV9BXzRfTEFORVM7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggMTVmNDhhMC4uNDE4 OTQxYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAt NjE0LDEyICs2MTQsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfUExMX2lzX3ZhbGlkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiDCoAkJSU5URUxQbGxJbnZhbGlkKCJt MSBvdXQgb2YgcmFuZ2VcbiIpOwo+ID4gCj4gPiDCoAlpZiAoIUlTX1BJTkVWSUVXKGRldl9wcml2 KSAmJiAhSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYKPiA+IC0JwqDCoMKgwqAhSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikgJiYgIUlTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwnCoMKgwqDCoCFJ U19DSEVSUllWSUVXKGRldl9wcml2KSAmJiAhSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJ aWYgKGNsb2NrLT5tMSA8PSBjbG9jay0+bTIpCj4gPiDCoAkJCUlOVEVMUGxsSW52YWxpZCgibTEg PD0gbTJcbiIpOwo+ID4gCj4gPiDCoAlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJ U19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+ID4gLQnCoMKgwqDCoCFJU19CUk9YVE9OKGRldl9w cml2KSkgewo+ID4gKwnCoMKgwqDCoCFJU19HRU45X0xQKGRldl9wcml2KSkgewo+ID4gwqAJCWlm IChjbG9jay0+cCA8IGxpbWl0LT5wLm1pbiB8fCBsaW1pdC0+cC5tYXggPCBjbG9jay0+cCkKPiA+ IMKgCQkJSU5URUxQbGxJbnZhbGlkKCJwIG91dCBvZiByYW5nZVxuIik7Cj4gPiDCoAkJaWYgKGNs b2NrLT5tIDwgbGltaXQtPm0ubWluIHx8IGxpbWl0LT5tLm1heCA8IGNsb2NrLT5tKQo+ID4gQEAg LTEwNjQxLDcgKzEwNjQxLDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3Rh dGUoc3RydWN0Cj4gPiBpbnRlbF9jcnRjICpjcnRjLAo+ID4gCj4gPiDCoAlpZiAoSVNfU0tZTEFL RShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+ID4gwqAJCXNreWxha2VfZ2V0 X2RkaV9wbGwoZGV2X3ByaXYsIHBvcnQsIHBpcGVfY29uZmlnKTsKPiA+IC0JZWxzZSBpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ ID4gwqAJCWJ4dF9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwgcGlwZV9jb25maWcpOwo+ID4g wqAJZWxzZQo+ID4gwqAJCWhhc3dlbGxfZ2V0X2RkaV9wbGwoZGV2X3ByaXYsIHBvcnQsIHBpcGVf Y29uZmlnKTsKPiA+IEBAIC0xMDY4Niw3ICsxMDY4Niw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxf Z2V0X3BpcGVfY29uZmlnKHN0cnVjdAo+ID4gaW50ZWxfY3J0YyAqY3J0YywKPiA+IAo+ID4gwqAJ YWN0aXZlID0gaHN3X2dldF90cmFuc2NvZGVyX3N0YXRlKGNydGMsIHBpcGVfY29uZmlnLAo+ID4g JnBvd2VyX2RvbWFpbl9tYXNrKTsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikg JiYKPiA+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpICYmCj4gPiDCoAnCoMKgwqDCoGJ4dF9n ZXRfZHNpX3RyYW5zY29kZXJfc3RhdGUoY3J0YywgcGlwZV9jb25maWcsCj4gPiAmcG93ZXJfZG9t YWluX21hc2spKSB7Cj4gPiDCoAkJV0FSTl9PTihhY3RpdmUpOwo+ID4gwqAJCWFjdGl2ZSA9IHRy dWU7Cj4gPiBAQCAtMTI3ODQsNyArMTI3ODQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqY3J0YywKPiA+IMKgCURSTV9ERUJVR19L TVMoImlwczogJWksIGRvdWJsZSB3aWRlOiAlaVxuIiwKPiA+IMKgCQnCoMKgwqDCoMKgwqBwaXBl X2NvbmZpZy0+aXBzX2VuYWJsZWQsIHBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSk7Cj4gPiAKPiA+ IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCWlmIChJU19HRU45X0xQKGRldl9w cml2KSkgewo+ID4gwqAJCURSTV9ERUJVR19LTVMoImRwbGxfaHdfc3RhdGU6IGViYjA6IDB4JXgs IGViYjQ6IDB4JXgsIgo+ID4gwqAJCQnCoMKgwqDCoMKgwqAicGxsMDogMHgleCwgcGxsMTogMHgl eCwgcGxsMjogMHgleCwgcGxsMzoKPiA+IDB4JXgsICIKPiA+IMKgCQkJwqDCoMKgwqDCoMKgInBs bDY6IDB4JXgsIHBsbDg6IDB4JXgsIHBsbDk6IDB4JXgsIHBsbDEwOgo+ID4gMHgleCwgcGNzZHcx MjogMHgleFxuIiwKPiA+IEBAIC0xNTQ3OCw3ICsxNTQ3OCw3IEBAIHZvaWQgaW50ZWxfcHBzX3Vu bG9ja19yZWdzX3dhKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAK PiA+IMKgc3RhdGljIHZvaWQgaW50ZWxfcHBzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gwqB7Cj4gPiAtCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSB8fCBJ U19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpIHx8 IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCWRldl9wcml2LT5wcHNfbW1pb19iYXNlID0g UENIX1BQU19CQVNFOwo+ID4gwqAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiDCoAkJZGV2X3ByaXYtPnBwc19tbWlvX2Jhc2Ug PSBWTFZfUFBTX0JBU0U7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCA5 ZGZiZGU0Li4xZjI0MjBjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAg LTIzMyw3ICsyMzMsNyBAQCBpbnRlbF9kcF9zb3VyY2VfcmF0ZXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgY29uc3QKPiA+IGludCAqKnNvdXJjZV9yYXRlcykKPiA+IMKgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNl LmRldik7Cj4gPiDCoAlpbnQgc2l6ZTsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikpIHsKPiA+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJKnNvdXJjZV9y YXRlcyA9IGJ4dF9yYXRlczsKPiA+IMKgCQlzaXplID0gQVJSQVlfU0laRShieHRfcmF0ZXMpOwo+ ID4gwqAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZf cHJpdikpIHsKPiA+IEBAIC02NDUsNyArNjQ1LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9zZXF1ZW5j ZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdikKPiA+IMKgCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ID4gCj4gPiDCoAlpZiAoV0FSTl9PTighSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gPiAt CQnCoMKgwqDCoCFJU19CUk9YVE9OKGRldl9wcml2KSkpCj4gPiArCQnCoMKgwqDCoCFJU19HRU45 X0xQKGRldl9wcml2KSkpCj4gPiDCoAkJcmV0dXJuOwo+ID4gCj4gPiDCoAkvKgo+ID4gQEAgLTY2 NSw3ICs2NjUsNyBAQCB2b2lkIGludGVsX3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2KQo+ID4gwqAJCQljb250aW51ZTsKPiA+IAo+ID4g wqAJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+IC0JCWlm IChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkK PiA+IMKgCQkJaW50ZWxfZHAtPnBwc19yZXNldCA9IHRydWU7Cj4gPiDCoAkJZWxzZQo+ID4gwqAJ CQlpbnRlbF9kcC0+cHBzX3BpcGUgPSBJTlZBTElEX1BJUEU7Cj4gPiBAQCAtNjg4LDcgKzY4OCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bwc19nZXRfcmVnaXN0ZXJzKHN0cnVjdAo+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAKPiA+IMKgCW1lbXNldChyZWdzLCAwLCBzaXplb2Yo KnJlZ3MpKTsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWlmIChJ U19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlwcHNfaWR4ID0gYnh0X3Bvd2VyX3NlcXVlbmNl cl9pZHgoaW50ZWxfZHApOwo+ID4gwqAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiDCoAkJcHBzX2lkeCA9IHZsdl9wb3dlcl9z ZXF1ZW5jZXJfcGlwZShpbnRlbF9kcCk7Cj4gPiBAQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Bwc19nZXRfcmVnaXN0ZXJzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiDCoAlyZWdzLT5wcF9zdGF0ID0gUFBfU1RBVFVTKHBwc19pZHgpOwo+ID4g wqAJcmVncy0+cHBfb24gPSBQUF9PTl9ERUxBWVMocHBzX2lkeCk7Cj4gPiDCoAlyZWdzLT5wcF9v ZmYgPSBQUF9PRkZfREVMQVlTKHBwc19pZHgpOwo+ID4gLQlpZiAoIUlTX0JST1hUT04oZGV2X3By aXYpKQo+ID4gKwlpZiAoIUlTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCXJlZ3MtPnBwX2Rp diA9IFBQX0RJVklTT1IocHBzX2lkeCk7Cj4gPiDCoH0KPiA+IAo+ID4gQEAgLTI5ODQsNyArMjk4 NCw3IEBAIGludGVsX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g PiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gdG9faTkxNShpbnRl bF9kcF90b19kZXYoaW50ZWxfZHApKTsKPiA+IMKgCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4gCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2 KSkKPiA+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCXJldHVybiBEUF9UUkFJ Tl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4gPiDCoAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpIHsKPiA+IMKgCQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZyAmJiBw b3J0ID09IFBPUlRfQSkKPiA+IEBAIC00MzAwLDcgKzQzMDAsNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiDCoAkJcmV0dXJuIGlieF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2 LCBwb3J0KTsKPiA+IMKgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKQo+ID4gwqAJ CXJldHVybiBjcHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gPiAt CWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45X0xQ KGRldl9wcml2KSkKPiA+IMKgCQlyZXR1cm4gYnh0X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2 X3ByaXYsIHBvcnQpOwo+ID4gwqAJZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpCj4gPiDCoAkJ cmV0dXJuIGdtNDVfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gPiBA QCAtNDkyOSw3ICs0OTI5LDcgQEAgaW50ZWxfcHBzX3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+IAo+ID4gwqAJcHBfb24gPSBJOTE1X1JF QUQocmVncy5wcF9vbik7Cj4gPiDCoAlwcF9vZmYgPSBJOTE1X1JFQUQocmVncy5wcF9vZmYpOwo+ ID4gLQlpZiAoIUlTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCWlmICghSVNfR0VOOV9MUChk ZXZfcHJpdikpIHsKPiA+IMKgCQlJOTE1X1dSSVRFKHJlZ3MucHBfY3RybCwgcHBfY3RsKTsKPiA+ IMKgCQlwcF9kaXYgPSBJOTE1X1JFQUQocmVncy5wcF9kaXYpOwo+ID4gwqAJfQo+ID4gQEAgLTQ5 NDcsNyArNDk0Nyw3IEBAIGludGVsX3Bwc19yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiDCoAlzZXEtPnQxMCA9IChwcF9vZmYgJiBQQU5F TF9QT1dFUl9ET1dOX0RFTEFZX01BU0spID4+Cj4gPiDCoAkJwqDCoMKgUEFORUxfUE9XRVJfRE9X Tl9ERUxBWV9TSElGVDsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiA+ ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJdTE2IHRtcCA9IChwcF9jdGwg JiBCWFRfUE9XRVJfQ1lDTEVfREVMQVlfTUFTSykgPj4KPiA+IMKgCQkJQlhUX1BPV0VSX0NZQ0xF X0RFTEFZX1NISUZUOwo+ID4gwqAJCWlmICh0bXAgPiAwKQo+ID4gQEAgLTUwNzgsNyArNTA3OCw3 IEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhzdHJ1Y3QK PiA+IGRybV9kZXZpY2UgKmRldiwKPiA+IMKgCQnCoChzZXEtPnQxMCA8PCBQQU5FTF9QT1dFUl9E T1dOX0RFTEFZX1NISUZUKTsKPiA+IMKgCS8qIENvbXB1dGUgdGhlIGRpdmlzb3IgZm9yIHRoZSBw cCBjbG9jaywgc2ltcGx5IG1hdGNoIHRoZSBCc3BlYwo+ID4gwqAJwqAqIGZvcm11bGEuICovCj4g PiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ID4gKwlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpIHsKPiA+IMKgCQlwcF9kaXYgPSBJOTE1X1JFQUQocmVncy5wcF9jdHJsKTsKPiA+IMKg CQlwcF9kaXYgJj0gfkJYVF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLOwo+ID4gwqAJCXBwX2RpdiB8 PSAoRElWX1JPVU5EX1VQKChzZXEtPnQxMV90MTIgKyAxKSwgMTAwMCkKPiA+IEBAIC01MTA0LDcg KzUxMDQsNyBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMo c3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiAKPiA+IMKgCUk5MTVfV1JJVEUocmVncy5w cF9vbiwgcHBfb24pOwo+ID4gwqAJSTkxNV9XUklURShyZWdzLnBwX29mZiwgcHBfb2ZmKTsKPiA+ IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikpCj4gPiDCoAkJSTkxNV9XUklURShyZWdzLnBwX2N0cmwsIHBwX2Rpdik7Cj4gPiDCoAllbHNl Cj4gPiDCoAkJSTkxNV9XUklURShyZWdzLnBwX2RpdiwgcHBfZGl2KTsKPiA+IEBAIC01MTEyLDcg KzUxMTIsNyBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMo c3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAlEUk1fREVCVUdfS01TKCJwYW5lbCBw b3dlciBzZXF1ZW5jZXIgcmVnaXN0ZXIgc2V0dGluZ3M6IFBQX09OICUjeCwKPiA+IFBQX09GRiAl I3gsIFBQX0RJViAlI3hcbiIsCj4gPiDCoAkJwqDCoMKgwqDCoMKgSTkxNV9SRUFEKHJlZ3MucHBf b24pLAo+ID4gwqAJCcKgwqDCoMKgwqDCoEk5MTVfUkVBRChyZWdzLnBwX29mZiksCj4gPiAtCQnC oMKgwqDCoMKgwqBJU19CUk9YVE9OKGRldl9wcml2KSA/Cj4gPiArCQnCoMKgwqDCoMKgwqBJU19H RU45X0xQKGRldl9wcml2KSA/Cj4gPiDCoAkJwqDCoMKgwqDCoMKgKEk5MTVfUkVBRChyZWdzLnBw X2N0cmwpICYKPiA+IEJYVF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLKSA6Cj4gPiDCoAkJwqDCoMKg wqDCoMKgSTkxNV9SRUFEKHJlZ3MucHBfZGl2KSk7Cj4gPiDCoH0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKPiA+IGluZGV4IDdhOGU4MmQuLjhjNjJkZWEgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gPiBAQCAtMzE3LDcgKzMx Nyw2IEBAIHN0YXRpYyB2b2lkIF9ieHRfZGRpX3BoeV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiDCoAkJaWYgKGJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShk ZXZfcHJpdiwgcGh5KSkgewo+ID4gwqAJCQlEUk1fREVCVUdfRFJJVkVSKCJEREkgUEhZICVkIGFs cmVhZHkgZW5hYmxlZCwgIgo+ID4gwqAJCQkJCcKgIndvbid0IHJlcHJvZ3JhbSBpdFxuIiwgcGh5 KTsKPiA+IC0KPiA+IMKgCQkJcmV0dXJuOwo+ID4gwqAJCX0KPiA+IAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gaW5kZXggNThhNzU2Zi4uOTc2ZDM5MCAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+IEBAIC0xODYwLDcg KzE4NjAsNyBAQCB2b2lkIGludGVsX3NoYXJlZF9kcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiA+IAo+ID4gwqAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtF KGRldl9wcml2KSkKPiA+IMKgCQlkcGxsX21nciA9ICZza2xfcGxsX21ncjsKPiA+IC0JZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3By aXYpKQo+ID4gwqAJCWRwbGxfbWdyID0gJmJ4dF9wbGxfbWdyOwo+ID4gwqAJZWxzZSBpZiAoSEFT X0RESShkZXZfcHJpdikpCj4gPiDCoAkJZHBsbF9tZ3IgPSAmaHN3X3BsbF9tZ3I7Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+IGluZGV4IDNiYzYyMTMuLjA2NjhiYmUgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+IEBAIC0zNDAsNyArMzQwLDcgQEAgc3Rh dGljIGJvb2wgaW50ZWxfZHNpX2NvbXB1dGVfY29uZmlnKHN0cnVjdAo+ID4gaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+IMKgCS8qIERTSSB1c2VzIHNob3J0IHBhY2tldHMgZm9yIHN5bmMgZXZl bnRzLCBzbyBjbGVhciBtb2RlIGZsYWdzIGZvcgo+ID4gRFNJICovCj4gPiDCoAlhZGp1c3RlZF9t b2RlLT5mbGFncyA9IDA7Cj4gPiAKPiA+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4g PiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ID4gwqAJCS8qIER1YWwgbGluayBnb2Vz IHRvIERTSSB0cmFuc2NvZGVyIEEuICovCj4gPiDCoAkJaWYgKGludGVsX2RzaS0+cG9ydHMgPT0g QklUKFBPUlRfQykpCj4gPiDCoAkJCXBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9IFRSQU5T Q09ERVJfRFNJX0M7Cj4gPiBAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ICplbmNvZGVyKQo+ID4gCj4g PiDCoAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCj4gPiDCoAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gPiAtCWVsc2UgaWYg KElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2 KSkKPiA+IMKgCQlieHRfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsKPiA+IMKgfQo+ID4gCj4g PiBAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wb3J0X2VuYWJsZShz dHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIpCj4gPiDCoAl9Cj4gPiAKPiA+IMKgCWZv cl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiA+IC0JCWk5MTVfcmVn X3QgcG9ydF9jdHJsID0gSVNfQlJPWFRPTihkZXZfcHJpdikgPwo+ID4gKwkJaTkxNV9yZWdfdCBw b3J0X2N0cmwgPSBJU19HRU45X0xQKGRldl9wcml2KSA/Cj4gPiDCoAkJCUJYVF9NSVBJX1BPUlRf Q1RSTChwb3J0KSA6IE1JUElfUE9SVF9DVFJMKHBvcnQpOwo+ID4gwqAJCXUzMiB0ZW1wOwo+ID4g Cj4gPiBAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wb3J0X2Rpc2Fi bGUoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ICplbmNvZGVyKQo+ID4gwqAJZW51bSBwb3J0IHBv cnQ7Cj4gPiAKPiA+IMKgCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMp IHsKPiA+IC0JCWk5MTVfcmVnX3QgcG9ydF9jdHJsID0gSVNfQlJPWFRPTihkZXZfcHJpdikgPwo+ ID4gKwkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19HRU45X0xQKGRldl9wcml2KSA/Cj4gPiDC oAkJCUJYVF9NSVBJX1BPUlRfQ1RSTChwb3J0KSA6IE1JUElfUE9SVF9DVFJMKHBvcnQpOwo+ID4g wqAJCXUzMiB0ZW1wOwo+ID4gCj4gPiBAQCAtNjY2LDcgKzY2Niw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ID4gwqAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiA+IMKgCWZvcl9lYWNoX2RzaV9wb3J0 KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiA+IMKgCQkvKiBDb21tb24gYml0IGZvciBib3Ro IE1JUEkgUG9ydCBBICYgTUlQSSBQb3J0IEMgb24gVkxWL0NIVgo+ID4gKi8KPiA+IC0JCWk5MTVf cmVnX3QgcG9ydF9jdHJsID0gSVNfQlJPWFRPTihkZXZfcHJpdikgPwo+ID4gKwkJaTkxNV9yZWdf dCBwb3J0X2N0cmwgPSBJU19HRU45X0xQKGRldl9wcml2KSA/Cj4gPiDCoAkJCUJYVF9NSVBJX1BP UlRfQ1RSTChwb3J0KSA6IE1JUElfUE9SVF9DVFJMKFBPUlRfQSk7Cj4gPiDCoAkJdTMyIHZhbDsK PiA+IAo+ID4gQEAgLTc1OCwxMiArNzU4LDEyIEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRf aHdfc3RhdGUoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gwqAJwqAqIGNv bmZpZ3VyYXRpb24sIG90aGVyd2lzZSBhY2Nlc3NpbmcgRFNJIHJlZ2lzdGVycyB3aWxsIGhhbmcg dGhlCj4gPiDCoAnCoCogbWFjaGluZS4gU2VlIEJTcGVjIE5vcnRoIERpc3BsYXkgRW5naW5lIHJl Z2lzdGVycy9NSVBJW0JYVF0uCj4gPiDCoAnCoCovCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9w cml2KSAmJiAhaW50ZWxfZHNpX3BsbF9pc19lbmFibGVkKGRldl9wcml2KSkKPiA+ICsJaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpICYmICFpbnRlbF9kc2lfcGxsX2lzX2VuYWJsZWQoZGV2X3ByaXYp KQo+ID4gwqAJCWdvdG8gb3V0X3B1dF9wb3dlcjsKPiA+IAo+ID4gwqAJLyogWFhYOiB0aGlzIG9u bHkgd29ya3MgZm9yIG9uZSBEU0kgb3V0cHV0ICovCj4gPiDCoAlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gPiAtCQlpOTE1X3JlZ190IGN0cmxfcmVnID0gSVNf QlJPWFRPTihkZXZfcHJpdikgPwo+ID4gKwkJaTkxNV9yZWdfdCBjdHJsX3JlZyA9IElTX0dFTjlf TFAoZGV2X3ByaXYpID8KPiA+IMKgCQkJQlhUX01JUElfUE9SVF9DVFJMKHBvcnQpIDogTUlQSV9Q T1JUX0NUUkwocG9ydCk7Cj4gPiDCoAkJYm9vbCBlbmFibGVkID0gSTkxNV9SRUFEKGN0cmxfcmVn KSAmIERQSV9FTkFCTEU7Cj4gPiAKPiA+IEBAIC03ODgsNyArNzg4LDcgQEAgc3RhdGljIGJvb2wg aW50ZWxfZHNpX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIs Cj4gPiDCoAkJaWYgKCEoSTkxNV9SRUFEKE1JUElfREVWSUNFX1JFQURZKHBvcnQpKSAmIERFVklD RV9SRUFEWSkpCj4gPiDCoAkJCWNvbnRpbnVlOwo+ID4gCj4gPiAtCQlpZiAoSVNfQlJPWFRPTihk ZXZfcHJpdikpIHsKPiA+ICsJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ID4gwqAJCQl1 MzIgdG1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTChwb3J0KSk7Cj4gPiDCoAkJCXRtcCAmPSBCWFRf UElQRV9TRUxFQ1RfTUFTSzsKPiA+IMKgCQkJdG1wID4+PSBCWFRfUElQRV9TRUxFQ1RfU0hJRlQ7 Cj4gPiBAQCAtOTc2LDcgKzk3Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gPiAqZW5jb2RlciwKPiA+IMKgCXUzMiBwY2xrOwo+ID4g wqAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikpCj4gPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlieHRfZHNpX2dldF9w aXBlX2NvbmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4gPiAKPiA+IMKgCXBjbGsgPSBpbnRl bF9kc2lfZ2V0X3BjbGsoZW5jb2RlciwgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ID4gQEAgLTEw NjgsNyArMTA2OCw3IEBAIHN0YXRpYyB2b2lkIHNldF9kc2lfdGltaW5ncyhzdHJ1Y3QgZHJtX2Vu Y29kZXIKPiA+ICplbmNvZGVyLAo+ID4gwqAJaGJwID0gdHhieXRlY2xraHMoaGJwLCBicHAsIGxh bmVfY291bnQsIGludGVsX2RzaS0KPiA+ID5idXJzdF9tb2RlX3JhdGlvKTsKPiA+IAo+ID4gwqAJ Zm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ID4gLQkJaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsK PiA+IMKgCQkJLyoKPiA+IMKgCQkJwqAqIFByb2dyYW0gaGRpc3BsYXkgYW5kIHZkaXNwbGF5IG9u IE1JUEkKPiA+IHRyYW5zY29kZXIuCj4gPiDCoAkJCcKgKiBUaGlzIGlzIGRpZmZlcmVudCBmcm9t IGNhbGN1bGF0ZWQgaGFjdGl2ZSBhbmQKPiA+IEBAIC0xMTU1LDcgKzExNTUsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmludGVsX2Vu Y29kZXIsCj4gPiDCoAkJCXRtcCAmPSB+UkVBRF9SRVFVRVNUX1BSSU9SSVRZX01BU0s7Cj4gPiDC oAkJCUk5MTVfV1JJVEUoTUlQSV9DVFJMKHBvcnQpLCB0bXAgfAo+ID4gwqAJCQkJCVJFQURfUkVR VUVTVF9QUklPUklUWV9ISUdIKTsKPiA+IC0JCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikpIHsKPiA+ICsJCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiA+IMKgCQkJ ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gCj4gPiDCoAkJCXRtcCA9IEk5 MTVfUkVBRChNSVBJX0NUUkwocG9ydCkpOwo+ID4gQEAgLTExOTMsNyArMTE5Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gPiAqaW50ZWxf ZW5jb2RlciwKPiA+IMKgCWlmIChpbnRlbF9kc2ktPmNsb2NrX3N0b3ApCj4gPiDCoAkJdG1wIHw9 IENMT0NLU1RPUDsKPiA+IAo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiA+ICsJ aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJdG1wIHw9IEJYVF9EUEhZX0RFRkVB VFVSRV9FTjsKPiA+IMKgCQlpZiAoIWlzX2NtZF9tb2RlKGludGVsX2RzaSkpCj4gPiDCoAkJCXRt cCB8PSBCWFRfREVGRUFUVVJFX0RQSV9GSUZPX0NUUjsKPiA+IEBAIC0xMjQ0LDcgKzEyNDQsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4g KmludGVsX2VuY29kZXIsCj4gPiDCoAkJSTkxNV9XUklURShNSVBJX0lOSVRfQ09VTlQocG9ydCks Cj4gPiDCoAkJCQl0eGNsa2VzYyhpbnRlbF9kc2ktPmVzY2FwZV9jbGtfZGl2LCAxMDApKTsKPiA+ IAo+ID4gLQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmICghaW50ZWxfZHNpLT5kdWFsX2xp bmspKSB7Cj4gPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgKCFpbnRlbF9kc2ktPmR1 YWxfbGluaykpIHsKPiA+IMKgCQkJLyoKPiA+IMKgCQkJwqAqIEJYVCBzcGVjIHNheXMgd3JpdGUg TUlQSV9JTklUX0NPVU5UIGZvcgo+ID4gwqAJCQnCoCogYm90aCB0aGUgcG9ydHMsIGV2ZW4gaWYg b25seSBvbmUgaXMKPiA+IEBAIC0xNDU0LDcgKzE0NTQsNyBAQCB2b2lkIGludGVsX2RzaV9pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IAo+ID4gwqAJaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gPiDCoAkJ ZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKPiA+IC0JfSBlbHNlIGlm IChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ID4gKwl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKSB7Cj4gPiDCoAkJZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlID0gQlhUX01JUElfQkFT RTsKPiA+IMKgCX0gZWxzZSB7Cj4gPiDCoAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNaXBpIGRl dmljZSB0byByZWcgYmFzZSIpOwo+ID4gQEAgLTE0OTUsNyArMTQ5NSw3IEBAIHZvaWQgaW50ZWxf ZHNpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqAJwqAqIE9u IEJZVC9DSFYsIHBpcGUgQSBtYXBzIHRvIE1JUEkgRFNJIHBvcnQgQSwgcGlwZSBCIG1hcHMgdG8g TUlQSQo+ID4gRFNJCj4gPiDCoAnCoCogcG9ydCBDLiBCWFQgaXNuJ3QgbGltaXRlZCBsaWtlIHRo aXMuCj4gPiDCoAnCoCovCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCWludGVsX2VuY29kZXItPmNydGNfbWFzayA9 IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfAo+ID4gQklUKFBJUEVfQyk7Cj4gPiDCoAllbHNl IGlmIChwb3J0ID09IFBPUlRfQSkKPiA+IMKgCQlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSBC SVQoUElQRV9BKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2lfcGxsLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gPiBp bmRleCA1NmVmZjYwLi5jZjhjMWIwIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpX3BsbC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2lfcGxsLmMKPiA+IEBAIC0zNTEsNyArMzUxLDcgQEAgc3RhdGljIHUzMiBieHRfZHNpX2dldF9w Y2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gPiAqZW5jb2RlciwgaW50IHBpcGVfYnBwLAo+ID4g wqB1MzIgaW50ZWxfZHNpX2dldF9wY2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgcGlwZV9icHAsCj4gPiDCoAkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY29uZmlnKQo+ID4gwqB7Cj4gPiAtCWlmIChJU19CUk9YVE9OKHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpKSkKPiA+ICsJaWYgKElTX0dFTjlfTFAodG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dikpKQo+ID4gwqAJCXJldHVybiBieHRfZHNpX2dldF9wY2xrKGVuY29kZXIsIHBpcGVfYnBwLCBj b25maWcpOwo+ID4gwqAJZWxzZQo+ID4gwqAJCXJldHVybiB2bHZfZHNpX2dldF9wY2xrKGVuY29k ZXIsIHBpcGVfYnBwLCBjb25maWcpOwo+ID4gQEAgLTUwNCw3ICs1MDQsNyBAQCBzdGF0aWMgdm9p ZCBieHRfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ICplbmNvZGVyLAo+ ID4gCj4gPiDCoGJvb2wgaW50ZWxfZHNpX3BsbF9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiA+IMKgewo+ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikp Cj4gPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlyZXR1cm4gYnh0X2RzaV9w bGxfaXNfZW5hYmxlZChkZXZfcHJpdik7Cj4gPiAKPiA+IMKgCU1JU1NJTkdfQ0FTRShJTlRFTF9E RVZJRChkZXZfcHJpdikpOwo+ID4gQEAgLTUxOSw3ICs1MTksNyBAQCBpbnQgaW50ZWxfY29tcHV0 ZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gCj4gPiDCoAlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiDC oAkJcmV0dXJuIHZsdl9jb21wdXRlX2RzaV9wbGwoZW5jb2RlciwgY29uZmlnKTsKPiA+IC0JZWxz ZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+ID4gwqAJCXJldHVybiBieHRfY29tcHV0ZV9kc2lfcGxsKGVuY29kZXIsIGNvbmZp Zyk7Cj4gPiAKPiA+IMKgCXJldHVybiAtRU5PREVWOwo+ID4gQEAgLTUzMiw3ICs1MzIsNyBAQCB2 b2lkIGludGVsX2VuYWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4gCj4gPiDCoAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpCj4gPiDCoAkJdmx2X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIsIGNvbmZpZyk7Cj4g PiAtCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45 X0xQKGRldl9wcml2KSkKPiA+IMKgCQlieHRfZW5hYmxlX2RzaV9wbGwoZW5jb2RlciwgY29uZmln KTsKPiA+IMKgfQo+ID4gCj4gPiBAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgaW50ZWxfZGlzYWJs ZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gPiAqZW5jb2RlcikKPiA+IAo+ID4gwqAJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ ID4gwqAJCXZsdl9kaXNhYmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4gPiAtCWVsc2UgaWYgKElTX0JS T1hUT04oZGV2X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+ IMKgCQlieHRfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+ID4gwqB9Cj4gPiAKPiA+IEBAIC01 NjYsNyArNTY2LDcgQEAgdm9pZCBpbnRlbF9kc2lfcmVzZXRfY2xvY2tzKHN0cnVjdCBpbnRlbF9l bmNvZGVyCj4gPiAqZW5jb2RlciwgZW51bSBwb3J0IHBvcnQpCj4gPiDCoHsKPiA+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+ID4gCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKQo+ID4gwqAJCWJ4dF9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQp Owo+ID4gwqAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklF VyhkZXZfcHJpdikpCj4gPiDCoAkJdmx2X2RzaV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7 Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gaW5kZXggMzc0ZTM4YS4uMGJj ZmVhZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiBAQCAtMTI1MSw3 ICsxMjUxLDcgQEAgaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKHN0cnVjdCBpbnRlbF9oZG1pICpoZG1p LAo+ID4gwqAJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7Cj4gPiAKPiA+IMKgCS8qIEJYVCBEUExM IGNhbid0IGdlbmVyYXRlIDIyMy0yNDAgTUh6ICovCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9w cml2KSAmJiBjbG9jayA+IDIyMzMzMyAmJiBjbG9jayA8IDI0MDAwMCkKPiA+ICsJaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpICYmIGNsb2NrID4gMjIzMzMzICYmIGNsb2NrIDwgMjQwMDAwKQo+ID4g wqAJCXJldHVybiBNT0RFX0NMT0NLX1JBTkdFOwo+ID4gCj4gPiDCoAkvKiBDSFYgRFBMTCBjYW4n dCBnZW5lcmF0ZSAyMTYtMjQwIE1IeiAqLwo+ID4gQEAgLTE4MDksMTMgKzE4MDksMTMgQEAgc3Rh dGljIHU4IGludGVsX2hkbWlfZGRjX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRl dl9wcml2LAo+ID4gCj4gPiDCoAlzd2l0Y2ggKHBvcnQpIHsKPiA+IMKgCWNhc2UgUE9SVF9COgo+ ID4gLQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwkJaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+ID4gwqAJCQlkZGNfcGluID0gR01CVVNfUElOXzFfQlhUOwo+ID4gwqAJCWVsc2UK PiA+IMKgCQkJZGRjX3BpbiA9IEdNQlVTX1BJTl9EUEI7Cj4gPiDCoAkJYnJlYWs7Cj4gPiDCoAlj YXNlIFBPUlRfQzoKPiA+IC0JCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJCWlmIChJ U19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQkJZGRjX3BpbiA9IEdNQlVTX1BJTl8yX0JYVDsK PiA+IMKgCQllbHNlCj4gPiDCoAkJCWRkY19waW4gPSBHTUJVU19QSU5fRFBDOwo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gPiBpbmRleCA4M2YyNjBiLi4xNjA2ZTMxIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gPiBAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGdtYnVzX3BpbiBnbWJ1c19waW5zX2J4dFtdID0gewo+ID4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGdtYnVzX3BpbiAqZ2V0X2dtYnVzX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ID4gKmRldl9wcml2LAo+ID4gwqAJCQkJCcKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcGlu KQo+ID4gwqB7Cj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpKQo+ID4gwqAJCXJldHVybiAmZ21idXNfcGluc19ieHRbcGluXTsKPiA+ IMKgCWVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2 KSkKPiA+IMKgCQlyZXR1cm4gJmdtYnVzX3BpbnNfc2tsW3Bpbl07Cj4gPiBAQCAtODcsNyArODcs NyBAQCBib29sIGludGVsX2dtYnVzX2lzX3ZhbGlkX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZQo+ID4gKmRldl9wcml2LAo+ID4gwqB7Cj4gPiDCoAl1bnNpZ25lZCBpbnQgc2l6ZTsKPiA+IAo+ ID4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiArCWlmIChJU19HRU45X0xQKGRldl9w cml2KSkKPiA+IMKgCQlzaXplID0gQVJSQVlfU0laRShnbWJ1c19waW5zX2J4dCk7Cj4gPiDCoAll bHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4g PiDCoAkJc2l6ZSA9IEFSUkFZX1NJWkUoZ21idXNfcGluc19za2wpOwo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9tb2NzLmMKPiA+IGluZGV4IDgwYmI5MjQuLmVlZDA3MDcgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+ID4gQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMg Ym9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9w cml2LAo+ID4gwqAJCXRhYmxlLT5zaXplwqDCoD0gQVJSQVlfU0laRShza3lsYWtlX21vY3NfdGFi bGUpOwo+ID4gwqAJCXRhYmxlLT50YWJsZSA9IHNreWxha2VfbW9jc190YWJsZTsKPiA+IMKgCQly ZXN1bHQgPSB0cnVlOwo+ID4gLQl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4g PiArCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiA+IMKgCQl0YWJsZS0+c2l6 ZcKgwqA9IEFSUkFZX1NJWkUoYnJveHRvbl9tb2NzX3RhYmxlKTsKPiA+IMKgCQl0YWJsZS0+dGFi bGUgPSBicm94dG9uX21vY3NfdGFibGU7Cj4gPiDCoAkJcmVzdWx0ID0gdHJ1ZTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiA+IGluZGV4IDA4YWI2ZDcuLjM1NzhiNDAgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiBAQCAtMTc1Niw3ICsxNzU2 LDcgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVs Cj4gPiAqcGFuZWwpCj4gPiDCoAnCoMKgwqDCoGludGVsX2RzaV9kY3NfaW5pdF9iYWNrbGlnaHRf ZnVuY3MoY29ubmVjdG9yKSA9PSAwKQo+ID4gwqAJCXJldHVybjsKPiA+IAo+ID4gLQlpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpIHsKPiA+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4g PiDCoAkJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9IGJ4dF9zZXR1cF9iYWNrbGlnaHQ7Cj4gPiDC oAkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBieHRfZW5hYmxlX2JhY2tsaWdodDsKPiA+IMKg CQlwYW5lbC0+YmFja2xpZ2h0LmRpc2FibGUgPSBieHRfZGlzYWJsZV9iYWNrbGlnaHQ7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBpbmRleCAyOWI2NjUzLi4wYjE3YTRmIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gQEAgLTUyMDgsNyArNTIwOCw3IEBAIGlu dCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3By aXYsIGludCBlbmFibGVfcmM2KQo+ID4gwqAJaWYgKCFlbmFibGVfcmM2KQo+ID4gwqAJCXJldHVy biAwOwo+ID4gCj4gPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSAmJiAhYnh0X2NoZWNrX2Jp b3NfcmM2X3NldHVwKGRldl9wcml2KSkgewo+ID4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikg JiYgIWJ4dF9jaGVja19iaW9zX3JjNl9zZXR1cChkZXZfcHJpdikpIHsKPiA+IMKgCQlEUk1fSU5G TygiUkM2IGRpc2FibGVkIGJ5IEJJT1NcbiIpOwo+ID4gwqAJCXJldHVybiAwOwo+ID4gwqAJfQo+ ID4gQEAgLTUyNDIsNyArNTI0Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfaW5pdF9ycHNfZnJlcXVl bmNpZXMoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCS8qIEFs bCBvZiB0aGVzZSB2YWx1ZXMgYXJlIGluIHVuaXRzIG9mIDUwTUh6ICovCj4gPiAKPiA+IMKgCS8q IHN0YXRpYyB2YWx1ZXMgZnJvbSBIVzogUlAwID4gUlAxID4gUlBuIChtaW5fZnJlcSkgKi8KPiA+ IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCWlmIChJU19HRU45X0xQKGRldl9w cml2KSkgewo+ID4gwqAJCXUzMiBycF9zdGF0ZV9jYXAgPSBJOTE1X1JFQUQoQlhUX1JQX1NUQVRF X0NBUCk7Cj4gPiDCoAkJZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSA9IChycF9zdGF0ZV9jYXAgPj4g MTYpICYgMHhmZjsKPiA+IMKgCQlkZXZfcHJpdi0+cnBzLnJwMV9mcmVxID0gKHJwX3N0YXRlX2Nh cCA+PsKgwqA4KSAmIDB4ZmY7Cj4gPiBAQCAtNzYyMiw3ICs3NjIyLDcgQEAgdm9pZCBpbnRlbF9p bml0X2Nsb2NrX2dhdGluZ19ob29rcyhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gwqAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiA+IHNr eWxha2VfaW5pdF9jbG9ja19nYXRpbmc7Cj4gPiDCoAllbHNlIGlmIChJU19LQUJZTEFLRShkZXZf cHJpdikpCj4gPiDCoAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPQo+ID4g a2FieWxha2VfaW5pdF9jbG9ja19nYXRpbmc7Cj4gPiAtCWVsc2UgaWYgKElTX0JST1hUT04oZGV2 X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+IMKgCQlkZXZf cHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9Cj4gPiBieHRfaW5pdF9jbG9ja19nYXRp bmc7Cj4gPiDCoAllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gwqAJCWRldl9w cml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiA+IGJyb2Fkd2VsbF9pbml0X2Nsb2Nr X2dhdGluZzsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50 aW1lX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4g PiBpbmRleCAzNTZjNjYyLi42NmFiMWM4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ydW50aW1lX3BtLmMKPiA+IEBAIC01MzAsNyArNTMwLDcgQEAgc3RhdGljIHUzMiBnZW45 X2RjX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdikKPiA+IMKgCXUz MiBtYXNrOwo+ID4gCj4gPiDCoAltYXNrID0gRENfU1RBVEVfRU5fVVBUT19EQzU7Cj4gPiAtCWlm IChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ ID4gwqAJCW1hc2sgfD0gRENfU1RBVEVfRU5fREM5Owo+ID4gwqAJZWxzZQo+ID4gwqAJCW1hc2sg fD0gRENfU1RBVEVfRU5fVVBUT19EQzY7Cj4gPiBAQCAtOTExLDcgKzkxMSw3IEBAIHN0YXRpYyB2 b2lkIGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiAKPiA+IMKgCWdlbjlfYXNzZXJ0X2RidWZfZW5hYmxlZChkZXZf cHJpdik7Cj4gPiAKPiA+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikpCj4gPiDCoAkJYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dlbGxz KGRldl9wcml2KTsKPiA+IMKgfQo+ID4gCj4gPiBAQCAtMjE3MCw3ICsyMTcwLDcgQEAgc3RhdGlj IHVpbnQzMl90IGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0Cj4gPiBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19L QUJZTEFLRShkZXZfcHJpdikpIHsKPiA+IMKgCQltYXhfZGMgPSAyOwo+ID4gwqAJCW1hc2sgPSAw Owo+ID4gLQl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gPiArCX0gZWxzZSBp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiA+IMKgCQltYXhfZGMgPSAxOwo+ID4gwqAJCS8q Cj4gPiDCoAkJwqAqIERDOSBoYXMgYSBzZXBhcmF0ZSBIVyBmbG93IGZyb20gdGhlIHJlc3Qgb2Yg dGhlIERDCj4gPiBzdGF0ZXMsCj4gPiAtLQo+ID4gMi41LjUKPiA+IAo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=