From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 695E46E525 for ; Mon, 4 Feb 2019 14:49:46 +0000 (UTC) References: <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> <20190204124625.5364-1-maarten.lankhorst@linux.intel.com> From: Maarten Lankhorst Message-ID: Date: Mon, 4 Feb 2019 15:49:44 +0100 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] lib/igt_fb: Add support for P01x formats, v2. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Sharma, Swati2" , igt-dev@lists.freedesktop.org List-ID: T3AgMDQtMDItMjAxOSBvbSAxNTowOSBzY2hyZWVmIFNoYXJtYSwgU3dhdGkyOgo+Cj4gT24gMDQt RmViLTE5IDY6MTYgUE0sIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBUaGUgUDAxeCBmb3Jt YXRzIGFyZSBwbGFuYXIgMTYgYml0cyBwZXIgY29tcG9uZW50LCB3aXRoIHRoZSB1bnVzZWQgbG93 ZXIgYml0cyBzZXQgdG8gMC4KPj4gVGhpcyBtZWFucyB0aGV5IGNhbiBhbGwgYmUgY29udmVydGVk IHRoZSBzYW1lIHdheS4gT25seSB0aGUgcmFuZ2UgaXMgc2xpZ2h0bHkgZGlmZmVyZW50LAo+PiBh bmQgdGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2xvcl9lbmNvZGluZyBpbXBsZW1lbnRhdGlvbi4K Pj4KPj4gVGhpcyByZXF1aXJlcyBjYWlybyAxLjE3LjIgYW5kIHBpeG1hbiAwLjM2LiBUaGlzIHdv cmtzIGJ1dCBkb2Vzbid0IGdpdmUgZXh0cmEgcHJlY2lzaW9uLgo+PiBGb3IgbW9yZSB0aGFuIDgg Yml0cyBwcmVjaXNpb24gYSBmZXcgbW9yZSBwYXRjaGVzIGFyZSByZXF1aXJlZCB0byBwaXhtYW4s IHBlbmRpbmcgcmV2aWV3Ogo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZl cy9waXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgxNS5odG1sCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL2FyY2hpdmVzL3BpeG1hbi8yMDE5LUphbnVhcnkvMDA0ODA5Lmh0bWwKPj4KPj4g T25jZSB0aG9zZSBhcmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJl bGVhc2UgZm9yIGJldHRlciBwcmVjaXNpb24uCj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0g QWRkIGZhbGxiYWNrIGNvbG9yIGRlZmluaXRpb25zIHdoZW4gY29tcGlsaW5nIG9uIGNhaXJvIHZl cnNpb24gPCAxLjE3LjIuCj4+IC0gU2tpcCB3aGVuIEZCIGNyZWF0aW9uIGZhaWxzIG9uIEhEUiBm b3JtYXRzLCBpbnN0ZWFkIG9mIGZhaWxpbmcuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiDC oCBpbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCB8wqAgMTAgKysKPj4gwqAgbGliL2lndF9j b2xvcl9lbmNvZGluZy5jwqDCoMKgwqDCoCB8wqDCoCA0ICsKPj4gwqAgbGliL2lndF9mYi5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDIzNCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCj4+IMKgIGxpYi9pZ3RfZmIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNiArCj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlv bnMoKyksIDExIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFw aS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaAo+PiBpbmRleCA0 ZGRmNzU0YmFiMDkuLmM5YTVlNTc4NzAzMSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9kcm0tdWFw aS9kcm1fZm91cmNjLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKPj4g QEAgLTE5NSw2ICsxOTUsMTYgQEAgZXh0ZXJuICJDIiB7Cj4+IMKgICNkZWZpbmUgRFJNX0ZPUk1B VF9OVjI0wqDCoMKgwqDCoMKgwqAgZm91cmNjX2NvZGUoJ04nLCAnVicsICcyJywgJzQnKSAvKiBu b24tc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSAqLwo+PiDCoCAjZGVmaW5lIERSTV9GT1JNQVRfTlY0 MsKgwqDCoMKgwqDCoMKgIGZvdXJjY19jb2RlKCdOJywgJ1YnLCAnNCcsICcyJykgLyogbm9uLXN1 YnNhbXBsZWQgQ2I6Q3IgcGxhbmUgKi8KPj4gwqAgKy8qCj4+ICsgKiAyIHBsYW5lIFlDYkNyCj4+ ICsgKiBpbmRleCAwID0gWSBwbGFuZSwgWzE1OjBdIFkgbGl0dGxlIGVuZGlhbiB3aGVyZSBQeHh4 IGluZGljYXRlCj4+ICsgKiBjb21wb25lbnQgeHh4IG1zYiBZIFt4eHg6MTYteHh4XQo+PiArICog aW5kZXggMSA9IENyOkNiIHBsYW5lLCBbMzE6MF0gQ3I6Q2IgbGl0dGxlIGVuZGlhbiBbeHh4OjE2 LXh4eDp4eHg6MTYteHh4XQo+PiArICovCj4+ICsjZGVmaW5lIERSTV9GT1JNQVRfUDAxMMKgwqDC oMKgwqDCoMKgIGZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcwJykgLyogMngyIHN1YnNhbXBs ZWQgQ3I6Q2IgcGxhbmUsIDEwIGJpdCBwZXIgY2hhbm5lbCAqLwo+PiArI2RlZmluZSBEUk1fRk9S TUFUX1AwMTLCoMKgwqDCoMKgwqDCoCBmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnMicpIC8q IDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMiBiaXQgcGVyIGNoYW5uZWwgKi8KPj4gKyNk ZWZpbmUgRFJNX0ZPUk1BVF9QMDE2wqDCoMKgwqDCoMKgwqAgZm91cmNjX2NvZGUoJ1AnLCAnMCcs ICcxJywgJzYnKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwgMTYgYml0IHBlciBjaGFu bmVsICovCj4+ICsKPj4gwqAgLyoKPj4gwqDCoCAqIDMgcGxhbmUgWUNiQ3IKPj4gwqDCoCAqIGlu ZGV4IDA6IFkgcGxhbmUsIFs3OjBdIFkKPj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29sb3JfZW5j b2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+PiBpbmRleCA0Y2JlMThlMjE3ZTMu LmI3YTEyYTFlMDdmNyAxMDA2NDQKPj4gLS0tIGEvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCj4+ ICsrKyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+PiBAQCAtMTM1LDExICsxMzUsMTUgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgewo+PiDCoMKgwqDCoMKg IGZsb2F0IG9mc195LCBtYXhfeSwgb2ZzX2NiY3IsIG1pZF9jYmNyLCBtYXhfY2JjcjsKPj4gwqAg fSBmb3JtYXRzW10gPSB7Cj4+IMKgwqDCoMKgwqAgeyBEUk1fRk9STUFUX1hSR0I4ODg4LCAyNTUu ZiwgfSwKPj4gK8KgwqDCoCB7IElHVF9GT1JNQVRfRkxPQVQsIDEuZiwgfSwKPj4gwqDCoMKgwqDC oCB7IERSTV9GT1JNQVRfTlYxMiwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQw LmYgfSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfWVVZViwgMjU1LmYsIDE2LmYsIDIzNS5m LCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfWVZZVSwg MjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4gwqDCoMKgwqDCoCB7 IERSTV9GT1JNQVRfVVlWWSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYg fSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfVllVWSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAx Ni5mLCAxMjguZiwgMjQwLmYgfSwKPj4gK8KgwqDCoCB7IERSTV9GT1JNQVRfUDAxMCwgNjU0NzIu ZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4gK8KgwqDC oCB7IERSTV9GT1JNQVRfUDAxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMy NzY4LmYsIDYxNDQwLmYgfSwKPj4gK8KgwqDCoCB7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUuZiwg NDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4gwqAgfTsKPj4g wqAgwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmxvb2t1cF9m b3VyY2ModWludDMyX3QgZm91cmNjKQo+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGli L2lndF9mYi5jCj4+IGluZGV4IGE5NzFhZWJiMzZiMy4uMzBlNTVlYWJkZmE4IDEwMDY0NAo+PiAt LS0gYS9saWIvaWd0X2ZiLmMKPj4gKysrIGIvbGliL2lndF9mYi5jCj4+IEBAIC02Miw2ICs2Miwy MCBAQAo+PiDCoCDCoCAjZGVmaW5lIFBJWE1BTl9pbnZhbGlkwqDCoMKgIDAKPj4gwqAgKyNpZiBD QUlST19WRVJTSU9OIDwgQ0FJUk9fVkVSU0lPTl9FTkNPREUoMSwgMTcsIDIpCj4+ICsvKgo+PiAr ICogV2UgbmVlZCBjYWlybyAxLjE3LjIgdG8gdXNlIEhEUiBmb3JtYXRzLCBidXQgdGhlIG9ubHkg dGhpbmcgYWRkZWQgaXMgYSB2YWx1ZQo+PiArICogdG8gcGl4bWFuX2Zvcm1hdF9jb2RlX3QuCj4+ ICsgKgo+PiArICogVG8gcHJldmVudCBnb2luZyBvdXRzaWRlIHRoZSBlbnVtLCBtYWtlIHBpeG1h bl9mb3JtYXRfY29kZV90IGFuIGludCBhbmQgZGVmaW5lCj4+ICsgKiBvdXJzZWx2ZXMuCj4+ICsg Ki8KPj4gKwo+PiArI2RlZmluZSBDQUlST19GT1JNQVRfUkdCOTZGICg2KQo+PiArI2RlZmluZSBD QUlST19GT1JNQVRfUkdCQTEyOEYgKDcpCj4+ICsjZGVmaW5lIHBpeG1hbl9mb3JtYXRfY29kZV90 IGludAo+PiArI2VuZGlmCj4+ICsKPj4gwqAgLyogZHJtIGZvdXJjYy9jYWlybyBmb3JtYXQgbWFw cyAqLwo+PiDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7Cj4+IMKg wqDCoMKgwqAgY29uc3QgY2hhciAqbmFtZTsKPj4gQEAgLTE1MSw2ICsxNjUsMjIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewo+PiDCoMKgwqDCoMKgwqDCoCAuY2Fp cm9faWQgPSBDQUlST19GT1JNQVRfUkdCMjQsCj4+IMKgwqDCoMKgwqDCoMKgIC5udW1fcGxhbmVz ID0gMSwgLnBsYW5lX2JwcCA9IHsgMTYsIH0sCj4+IMKgwqDCoMKgwqAgfSwKPj4gK8KgwqDCoCB7 IC5uYW1lID0gIlAwMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMCwK Pj4gK8KgwqDCoMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPj4gK8KgwqDC oMKgwqAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPj4gK8KgwqDC oCB9LAo+PiArwqDCoMKgIHsgLm5hbWUgPSAiUDAxMiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0g RFJNX0ZPUk1BVF9QMDEyLAo+PiArwqDCoMKgwqDCoCAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRf UkdCOTZGLAo+PiArwqDCoMKgwqDCoCAubnVtX3BsYW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2 LCAzMiB9LAo+PiArwqDCoMKgIH0sCj4+ICvCoMKgwqAgeyAubmFtZSA9ICJQMDE2IiwgLmRlcHRo ID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTYsCj4+ICvCoMKgwqDCoMKgIC5jYWlyb19p ZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4+ICvCoMKgwqDCoMKgIC5udW1fcGxhbmVzID0gMiwg LnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCj4+ICvCoMKgwqAgfSwKPj4gK8KgwqDCoCB7IC5uYW1l ID0gIklHVC1GTE9BVCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gSUdUX0ZPUk1BVF9GTE9BVCwK Pj4gK8KgwqDCoMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX0lOVkFMSUQsCj4+ICvCoMKg wqDCoMKgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgMTI4IH0sCj4+ICvCoMKgwqAg fSwKPj4gwqAgfTsKPj4gwqAgI2RlZmluZSBmb3JfZWFjaF9mb3JtYXQoZinCoMKgwqAgXAo+PiDC oMKgwqDCoMKgIGZvciAoZiA9IGZvcm1hdF9kZXNjOyBmIC0gZm9ybWF0X2Rlc2MgPCBBUlJBWV9T SVpFKGZvcm1hdF9kZXNjKTsgZisrKQo+PiBAQCAtMjM5LDEwICsyNjksMTcgQEAgdm9pZCBpZ3Rf Z2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKPj4g wqAgwqAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX3dpZHRoKGNvbnN0IHN0cnVjdCBpZ3RfZmIg KmZiLCBpbnQgcGxhbmUpCj4+IMKgIHsKPj4gLcKgwqDCoCBpZiAoZmItPmRybV9mb3JtYXQgPT0g RFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4g RElWX1JPVU5EX1VQKGZiLT53aWR0aCwgMik7Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gZmItPndp ZHRoOwo+PiArwqDCoMKgIHN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsKPj4gK8KgwqDCoCBjYXNl IERSTV9GT1JNQVRfUDAxMDoKPj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMjoKPj4gK8Kg wqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxNjoKPj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfTlYx MjoKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwbGFuZSA9PSAxKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gRElWX1JPVU5EX1VQKGZiLT53aWR0aCwgMik7Cj4+ICvCoMKgwqDCoMKg wqDCoCAvKiBmYWxsLXRocnUgKi8KPj4gK8KgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGZiLT53aWR0aDsKPj4gK8KgwqDCoCB9Cj4+IMKgIH0KPj4gwqAgwqAgc3RhdGlj IHVuc2lnbmVkIGZiX3BsYW5lX2JwcChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5l KQo+PiBAQCAtMjU0LDEwICsyOTEsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX2JwcChj b25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQo+PiDCoCDCoCBzdGF0aWMgdW5zaWdu ZWQgZmJfcGxhbmVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCj4+ IMKgIHsKPj4gLcKgwqDCoCBpZiAoZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYm IHBsYW5lID09IDEpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5o ZWlnaHQsIDIpOwo+PiAtCj4+IC3CoMKgwqAgcmV0dXJuIGZiLT5oZWlnaHQ7Cj4+ICvCoMKgwqAg c3dpdGNoIChmYi0+ZHJtX2Zvcm1hdCkgewo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEw Ogo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKgIGNhc2UgRFJNX0ZP Uk1BVF9QMDE2Ogo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+PiArwqDCoMKgwqDC oMKgwqAgaWYgKHBsYW5lID09IDEpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBE SVZfUk9VTkRfVVAoZmItPmhlaWdodCwgMik7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBmYWxsLXRo cnUgKi8KPj4gK8KgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZiLT5o ZWlnaHQ7Cj4+ICvCoMKgwqAgfQo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyBpbnQgZmJfbnVtX3Bs YW5lcyhjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYikKPj4gQEAgLTUxNiw2ICs1NjAsMTMgQEAgc3Rh dGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKHN0cnVjdCBpZ3RfZmIgKmZiKQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnVsbF9yYW5nZSA/IDB4MDA4MDAwODAg OiAweDEwODAxMDgwLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZmItPnN0cmlkZXNbMF0gKiBmYi0+cGxhbmVfaGVpZ2h0WzBdIC8gc2l6ZW9mKHdjaGFyX3Qp KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjYXNlIERSTV9GT1JNQVRfUDAxNjoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB3bWVtc2V0KHB0ciwgZnVsbF9yYW5nZSA/IDAgOiAweDEwMDAxMDAwLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPm9mZnNldHNbMV0gLyBzaXplb2Yod2No YXJfdCkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdtZW1zZXQocHRyICsg ZmItPm9mZnNldHNbMV0sIDB4ODAwMDgwMDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwyKSAqIGZiLT5zdHJpZGVzWzFd IC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW1fbXVubWFwKHB0ciwgZmItPnNpemUpOwo+PiDC oCBAQCAtMTQ2Myw2ICsxNTE0LDcgQEAgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgewo+ PiDCoCB9Owo+PiDCoCDCoCBzdGF0aWMgdm9pZCAqaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3df YnVmZmVyKGludCBmZCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgZHJtX2Zvcm1hdCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHdpZHRo LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaWd0X2ZiICpzaGFkb3cpCj4+IEBA IC0xNDcyLDcgKzE1MjQsNyBAQCBzdGF0aWMgdm9pZCAqaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFk b3dfYnVmZmVyKGludCBmZCwKPj4gwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0KHNoYWRvdyk7Cj4+IMKg IMKgwqDCoMKgwqAgZmJfaW5pdChzaGFkb3csIGZkLCB3aWR0aCwgaGVpZ2h0LAo+PiAtwqDCoMKg wqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9mb3JtYXQsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBJR1RfQ09MT1JfWUNCQ1JfQlQ3MDksIElHVF9DT0xPUl9Z Q0JDUl9MSU1JVEVEX1JBTkdFKTsKPj4gwqAgwqDCoMKgwqDCoCBzaGFkb3ctPnN0cmlkZXNbMF0g PSBBTElHTih3aWR0aCAqIHNoYWRvdy0+cGxhbmVfYnBwWzBdLCAxNik7Cj4+IEBAIC0xOTgzLDYg KzIwMzUsMTI0IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV5dihzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgfQo+PiDCoCArc3RhdGljIHZvaWQg cmVhZF9yZ2JmKHN0cnVjdCBpZ3RfdmVjNCAqcmdiLCBjb25zdCBmbG9hdCAqcmdiMjQpCj4+ICt7 Cj4+ICvCoMKgwqAgcmdiLT5kWzBdID0gcmdiMjRbMF07Cj4+ICvCoMKgwqAgcmdiLT5kWzFdID0g cmdiMjRbMV07Cj4+ICvCoMKgwqAgcmdiLT5kWzJdID0gcmdiMjRbMl07Cj4+ICvCoMKgwqAgcmdi LT5kWzNdID0gMS4wZjsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgd3JpdGVfcmdiZihmbG9h dCAqcmdiMjQsIGNvbnN0IHN0cnVjdCBpZ3RfdmVjNCAqcmdiKQo+PiArewo+PiArwqDCoMKgIHJn YjI0WzBdID0gcmdiLT5kWzBdOwo+PiArwqDCoMKgIHJnYjI0WzFdID0gcmdiLT5kWzFdOwo+PiAr wqDCoMKgIHJnYjI0WzJdID0gcmdiLT5kWzJdOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBj b252ZXJ0X3AwMVhfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gK3sKPj4gK8Kg wqDCoCBpbnQgaSwgajsKPj4gK8KgwqDCoCBzdHJ1Y3QgaWd0X2ZiICpmYl9wMDF4ID0gY3Z0LT5z cmMuZmI7Cj4+ICvCoMKgwqAgc3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPmRzdC5mYjsK Pj4gK8KgwqDCoCBjb25zdCB1aW50MTZfdCAqeSwgKnV2Owo+PiArwqDCoMKgIHZvaWQgKmJ1ZiA9 IGNvbnZlcnRfc3JjX2dldChjdnQpOwo+PiArwqDCoMKgIGZsb2F0ICpwdHIgPSBjdnQtPmRzdC5w dHIgKyBmYl9mbG9hdC0+b2Zmc2V0c1swXTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBmbG9hdF9zdHJp ZGUgPSBmYl9mbG9hdC0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKPj4gK8KgwqDCoCB1bnNp Z25lZCBwbGFuYXJfc3RyaWRlID0gZmJfcDAxeC0+c3RyaWRlc1swXSAvIHNpemVvZigqeSk7Cj4+ ICvCoMKgwqAgc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChmYl9w MDF4LT5kcm1fZm9ybWF0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGZiX2Zsb2F0LT5kcm1fZm9ybWF0LAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZiX3AwMXgtPmNvbG9y X2VuY29kaW5nLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZiX3AwMXgtPmNvbG9yX3JhbmdlKTsKPj4gKwo+PiArwqDCoMKgIHkgPSBi dWYgKyBmYl9wMDF4LT5vZmZzZXRzWzBdOwo+PiArwqDCoMKgIHV2ID0gYnVmICsgZmJfcDAxeC0+ b2Zmc2V0c1sxXTsKPj4gKwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBmYl9wMDF4LT5oZWln aHQgLyAyOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaiA9IDA7IGogPCBmYl9wMDF4 LT53aWR0aCAvIDI7IGorKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDb252ZXJ0 IDJ4MiBwaXhlbCBibG9ja3MgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGln dF92ZWM0IHl1dls0XTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGlndF92ZWM0 IHJnYls0XTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXZbMF0uZFswXSA9IHlb aiAqIDIgKyAwXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeXV2WzFdLmRbMF0gPSB5W2og KiAyICsgMV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlsyXS5kWzBdID0geVtqICog MiArIDAgKyBwbGFuYXJfc3RyaWRlXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeXV2WzNd LmRbMF0gPSB5W2ogKiAyICsgMSArIHBsYW5hcl9zdHJpZGVdOwo+PiArCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHl1dlswXS5kWzFdID0geXV2WzFdLmRbMV0gPSB5dXZbMl0uZFsxXSA9IHl1 dlszXS5kWzFdID0gdXZbaiAqIDIgKyAwXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeXV2 WzBdLmRbMl0gPSB5dXZbMV0uZFsyXSA9IHl1dlsyXS5kWzJdID0geXV2WzNdLmRbMl0gPSB1dltq ICogMiArIDFdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXZbMF0uZFszXSA9IHl1dlsx XS5kWzNdID0geXV2WzJdLmRbM10gPSB5dXZbM10uZFszXSA9IDEuMGY7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmdiWzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZb MF0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZ2JbMV0gPSBpZ3RfbWF0cml4X3RyYW5z Zm9ybSgmbSwgJnl1dlsxXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJnYlsyXSA9IGln dF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzJdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmdiWzNdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbM10pOwo+PiArCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlX3JnYmYoJnB0cltqICogNiArIDBdLCAmcmdiWzBd KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsgM10s ICZyZ2JbMV0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZV9yZ2JmKCZwdHJbaiAq IDYgKyAwICsgZmxvYXRfc3RyaWRlXSwgJnJnYlsyXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHdyaXRlX3JnYmYoJnB0cltqICogNiArIDMgKyBmbG9hdF9zdHJpZGVdLCAmcmdiWzNdKTsK Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgcHRyICs9IDIgKiBm bG9hdF9zdHJpZGU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB5ICs9IDIgKiBwbGFuYXJfc3RyaWRlOwo+ PiArwqDCoMKgwqDCoMKgwqAgdXYgKz0gcGxhbmFyX3N0cmlkZTsKPj4gK8KgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoCBjb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3AwMVgoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4g K3sKPj4gK8KgwqDCoCBpbnQgaSwgajsKPj4gK8KgwqDCoCBzdHJ1Y3QgaWd0X2ZiICpmYl9mbG9h dCA9IGN2dC0+c3JjLmZiOwo+PiArwqDCoMKgIHN0cnVjdCBpZ3RfZmIgKmZiX3AwMXggPSBjdnQt PmRzdC5mYjsKPj4gK8KgwqDCoCB1aW50MTZfdCAqeSA9IGN2dC0+ZHN0LnB0ciArIGZiX3AwMXgt Pm9mZnNldHNbMF07Cj4+ICvCoMKgwqAgdWludDE2X3QgKnV2ID0gY3Z0LT5kc3QucHRyICsgZmJf cDAxeC0+b2Zmc2V0c1sxXTsKPj4gK8KgwqDCoCBjb25zdCBmbG9hdCAqcHRyID0gY3Z0LT5zcmMu cHRyICsgZmJfZmxvYXQtPm9mZnNldHNbMF07Cj4+ICvCoMKgwqAgdW5zaWduZWQgZmxvYXRfc3Ry aWRlID0gZmJfZmxvYXQtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7Cj4+ICvCoMKgwqAgdW5z aWduZWQgcGxhbmFyX3N0cmlkZSA9IGZiX3AwMXgtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnkpOwo+ PiArwqDCoMKgIHN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoZmJf ZmxvYXQtPmRybV9mb3JtYXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZmJfcDAxeC0+ZHJtX2Zvcm1hdCwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYl9wMDF4LT5jb2xv cl9lbmNvZGluZywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmYl9wMDF4LT5jb2xvcl9yYW5nZSk7Cj4+ICsKPj4gK8KgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgZmJfcDAxeC0+aGVpZ2h0IC8gMjsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBmb3IgKGogPSAwOyBqIDwgZmJfcDAxeC0+d2lkdGggLyAyOyBqKyspIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogQ29udmVydCAyeDIgcGl4ZWwgYmxvY2tzICovCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpZ3RfdmVjNCByZ2JbNF07Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBpZ3RfdmVjNCB5dXZbNF07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmVhZF9yZ2JmKCZyZ2JbMF0sICZwdHJbaiAqIDYgKyAwXSk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlYWRfcmdiZigmcmdiWzFdLCAmcHRyW2ogKiA2ICsgM10pOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWFkX3JnYmYoJnJnYlsyXSwgJnB0cltqICogNiArIDAg KyBmbG9hdF9zdHJpZGVdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZF9yZ2JmKCZy Z2JbM10sICZwdHJbaiAqIDYgKyAzICsgZmxvYXRfc3RyaWRlXSk7Cj4+ICsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgeXV2WzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMF0p Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXZbMV0gPSBpZ3RfbWF0cml4X3RyYW5zZm9y bSgmbSwgJnJnYlsxXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlsyXSA9IGlndF9t YXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiWzJdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg eXV2WzNdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbM10pOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHlbaiAqIDIgKyAwXSA9IHl1dlswXS5kWzBdOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB5W2ogKiAyICsgMV0gPSB5dXZbMV0uZFswXTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgeVtqICogMiArIDAgKyBwbGFuYXJfc3RyaWRlXSA9IHl1dlsyXS5kWzBd Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5W2ogKiAyICsgMSArIHBsYW5hcl9zdHJpZGVd ID0geXV2WzNdLmRbMF07Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdlIGFzc3VtZSB0aGUgTVBFRzIgY2hyb21hIHNpdGlu ZyBjb252ZW50aW9uLCB3aGVyZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogcGl4ZWwg Y2VudGVyIGZvciBDYidDcicgaXMgYmV0d2VlbiB0aGUgbGVmdCB0b3AgYW5kCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBib3R0b20gcGl4ZWwgaW4gYSAyeDIgYmxvY2ssIHNvIHRha2Ug dGhlIGF2ZXJhZ2UuCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdXZbaiAqIDIgKyAwXSA9ICh5dXZbMF0uZFsxXSArIHl1dlsyXS5kWzFd KSAvIDIuMGY7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHV2W2ogKiAyICsgMV0gPSAoeXV2 WzBdLmRbMl0gKyB5dXZbMl0uZFsyXSkgLyAyLjBmOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqDCoMKgwqDCoCBwdHIgKz0gMiAqIGZsb2F0X3N0cmlkZTsKPj4gK8KgwqDCoMKg wqDCoMKgIHkgKz0gMiAqIHBsYW5hcl9zdHJpZGU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1diArPSBw bGFuYXJfc3RyaWRlOwo+PiArwqDCoMKgIH0KPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgdm9pZCBj b252ZXJ0X3BpeG1hbihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+PiDCoCB7Cj4+IMKgwqDCoMKg wqAgcGl4bWFuX2Zvcm1hdF9jb2RlX3Qgc3JjX3BpeG1hbiA9IGRybV9mb3JtYXRfdG9fcGl4bWFu KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0KTsKPj4gQEAgLTIwNTgsNiArMjIyOCwyMiBAQCBzdGF0 aWMgdm9pZCBmYl9jb252ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnZlcnRfcmdiMjRfdG9feXV5dihjdnQpOwo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKg wqAgfSBlbHNlIGlmIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FU KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0KSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMDoKPj4gK8KgwqDCoMKgwqDC oMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9S TUFUX1AwMTY6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnZlcnRfcDAxWF90b19mbG9h dChjdnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqDCoMKg wqDCoCB9Cj4+ICvCoMKgwqAgfSBlbHNlIGlmIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBJ R1RfRk9STUFUX0ZMT0FUKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKGN2dC0+ZHN0LmZi LT5kcm1fZm9ybWF0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMDoK Pj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKgwqDCoMKg wqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnZl cnRfZmxvYXRfdG9fcDAxWChjdnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47 Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIGln dF9hc3NlcnRfZihmYWxzZSwKPj4gQEAgLTIwOTgsMTEgKzIyODQsMTkgQEAgc3RhdGljIHZvaWQg Y3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikK Pj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0 ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBmYl9jb252ZXJ0 IGN2dCA9IHsgfTsKPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpm ID0gbG9va3VwX2RybV9mb3JtYXQoZmItPmRybV9mb3JtYXQpOwo+PiArwqDCoMKgIHVuc2lnbmVk IGRybV9mb3JtYXQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9S TUFUX1JHQjk2RiB8fAo+PiArwqDCoMKgwqDCoMKgwqAgZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9S TUFUX1JHQkExMjhGKQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Zvcm1hdCA9IElHVF9GT1JNQVRf RkxPQVQ7Cj4+ICvCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Zvcm1hdCA9IERS TV9GT1JNQVRfWFJHQjg4ODg7Cj4+IMKgIMKgwqDCoMKgwqAgaWd0X2Fzc2VydChibGl0KTsKPj4g wqDCoMKgwqDCoCBibGl0LT5iYXNlLmZkID0gZmQ7Cj4+IMKgwqDCoMKgwqAgYmxpdC0+YmFzZS5m YiA9IGZiOwo+PiAtwqDCoMKgIGJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJv X3NoYWRvd19idWZmZXIoZmQsCj4+ICvCoMKgwqAgYmxpdC0+c2hhZG93X3B0ciA9IGlndF9mYl9j cmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihmZCwgZHJtX2Zvcm1hdCwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZmItPndpZHRoLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYi0+aGVpZ2h0LAo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYmxp dC0+c2hhZG93X2ZiKTsKPj4gQEAgLTIxMjksNyArMjMyMyw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0 ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4+IMKg IMKgwqDCoMKgwqAgZmItPmNhaXJvX3N1cmZhY2UgPQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2Fp cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYmxpdC0+c2hhZG93X3B0ciwKPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDQUlS T19GT1JNQVRfUkdCMjQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZi0+Y2Fpcm9faWQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPndpZHRoLCBmYi0+aGVpZ2h0 LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJsaXQtPnNoYWRvd19mYi5zdHJpZGVzWzBdKTsKPj4gwqAgQEAgLTIxOTQsNiArMjM4 OCwyMSBAQCBjYWlyb19zdXJmYWNlX3QgKmlndF9nZXRfY2Fpcm9fc3VyZmFjZShpbnQgZmQsIHN0 cnVjdCBpZ3RfZmIgKmZiKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcmVhdGVfY2Fp cm9fc3VyZmFjZV9fYmxpdChmZCwgZmIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0KGZkLCBm Yik7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChmLT5jYWlyb19pZCA9PSBDQUlST19GT1JN QVRfUkdCOTZGIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYtPmNhaXJvX2lkID09IENB SVJPX0ZPUk1BVF9SR0JBMTI4Rikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYWlyb19z dGF0dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhmYi0+Y2Fpcm9fc3VyZmFjZSk7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3NraXBfb25fZihzdGF0dXMgPT0g Q0FJUk9fU1RBVFVTX0lOVkFMSURfRk9STUFUICYmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2Fpcm9fdmVyc2lvbigpIDwgQ0FJUk9fVkVSU0lPTl9FTkNP REUoMSwgMTcsIDIpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJDYWlybyB2ZXJzaW9uIHRvbyBvbGQsIG5lZWQgMS4xNy4yLCBoYXZlICVzXG4iLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhaXJvX3ZlcnNpb25f c3RyaW5nKCkpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9za2lwX29uX2Yo c3RhdHVzID09IENBSVJPX1NUQVRVU19OT19NRU1PUlkgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaXhtYW5fdmVyc2lvbigpIDwgUElYTUFOX1ZFUlNJ T05fRU5DT0RFKDAsIDM2LCAwKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiUGl4bWFuIHZlcnNpb24gdG9vIG9sZCwgbmVlZCAwLjM2LjAsIGhhdmUgJXNc biIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGl4bWFu X3ZlcnNpb25fc3RyaW5nKCkpOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIH0K Pgo+IEhpIE1hYXJ0ZW4sCj4KPiBUaG91Z2ggSSBoYXZlIGluc3RhbGxlZCBjYWlybyBhbmQgcGl4 bWFuIHZlcnNpb25zIDEuMTcuMyBhbmQgMzcuMSByZXNwZWN0aXZlbHkgYXMgc2VlbiBpbiAvdXNy L2luY2x1ZGUvY2Fpcm8gYW5kIC91c3IvaW5jbHVkZS9waXhtYW4tMSB2ZXJzaW9ucyBmaWxlIC4g U3RpbGwgY2Fpcm9fdmVyc2lvbigpIGFuZCBwaXhtYW5fdmVyc2lvbigpIHByaW50cyB0aGUgb2xk IDEuMTQuMDYgYW5kIDMzLjA2IHJlc3BlY3RpdmVseSBpbiBpLWctdC4gQXJlIHRoZXJlIHNvbWUg Y2hhbmdlcyByZXF1aXJlZCBpbiBpLWctdCB0byBsaW5rIHRvIG5ldyByZWxlYXNlcyBvZiBjYWly byBhbmQgcGl4bWFuPyAKCkhleSwKClRyeSAibGRkICR0ZXN0ZmlsZSIgPwoKTWF5YmUgaXQgcGlj a3MgdXAgdGhlIHdyb25nIGxpYmNhaXJvL3BpeG1hbiBhdCBydW50aW1lLgoKfk1hYXJ0ZW4KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFp bGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=