From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C82AA6E22F for ; Wed, 27 Mar 2019 17:20:21 +0000 (UTC) Date: Wed, 27 Mar 2019 19:20:18 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20190327172018.GG3888@intel.com> References: <20190327092930.6845-1-maarten.lankhorst@linux.intel.com> <20190327092930.6845-3-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190327092930.6845-3-maarten.lankhorst@linux.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t 2/3] lib/igt_fb: Add support for Y410/Y416 formats, v4. 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: Maarten Lankhorst Cc: igt-dev@lists.freedesktop.org List-ID: T24gV2VkLCBNYXIgMjcsIDIwMTkgYXQgMTA6Mjk6MjlBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gWTQxMCBpcyBwYWNrZWQgd2l0aCBjb21wcmVzc2VkIGEgY2hhbm5lbCBhbmQg b25seSAzMiBicHAsIGxpa2UKPiAxMCBiaXRzIFJHQiBmb3JtYXRzLiBZNDE2IGlzIGEgcGFja2Vk IDE2IGJpdHMgcGVyIGNvbXBvbmVudCBmb3JtYXQuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAt IFJlYmFzZSBvbiB0b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5nZXMuCj4gQ2hhbmdlcyBzaW5jZSB2 MjoKPiAtIERpc2NhcmQgYWxwaGEgY2hhbm5lbCwgbm90IHVzZWQgdXBzdHJlYW0uCj4gQ2hhbmdl cyBzaW5jZSB2MzoKPiAtIEhhbmRsZSB0aGUgWFZZVSBmb3JtYXRzIGFuZCBZNDF4IGZvcm1hdHMg Y29ycmVjdGx5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9pZ3RfY29sb3JfZW5jb2Rp bmcuYyB8ICAgNiArCj4gIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICB8IDI2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5z ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29s b3JfZW5jb2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+IGluZGV4IDlmOWRjMTQz OWVlNC4uN2RlNmQ1YWJkNjkwIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfY29sb3JfZW5jb2Rpbmcu Ywo+ICsrKyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+IEBAIC0xNTQsNiArMTU0LDEyIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0IHsKPiAgCXsgRFJNX0ZP Uk1BVF9ZMjEwLCA2NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0 NDAuZiB9LAo+ICAJeyBEUk1fRk9STUFUX1kyMTIsIDY1NTIwLmYsIDQwOTYuZiwgNjAxNjAuZiwg NDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCj4gIAl7IERSTV9GT1JNQVRfWTIxNiwgNjU1MzUu ZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPiArCXsgRFJN X0ZPUk1BVF9ZNDEwLCAxMDIzLmYsIDY0LmYsIDk0MC5mLCA2NC5mLCA1MTIuZiwgOTYwLmYgfSwK PiArCXsgRFJNX0ZPUk1BVF9ZNDEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwg MzI3NjguZiwgNjE0NDAuZiB9LAo+ICsJeyBEUk1fRk9STUFUX1k0MTYsIDY1NTM1LmYsIDQwOTYu ZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCj4gKwl7IERSTV9GT1JNQVRf WFZZVTIxMDEwMTAsIDEwMjMuZiwgNjQuZiwgOTQwLmYsIDY0LmYsIDUxMi5mLCA5NjAuZiB9LAo+ ICsJeyBEUk1fRk9STUFUX1hWWVUxMl8xNjE2MTYxNiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5m LCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPiArCXsgRFJNX0ZPUk1BVF9YVllVMTYxNjE2 MTYsIDY1NTM1LmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0s Cj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCAq bG9va3VwX2ZvdXJjYyh1aW50MzJfdCBmb3VyY2MpCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIu YyBiL2xpYi9pZ3RfZmIuYwo+IGluZGV4IDFlMGJjYjllYTJjZC4uMmQ1NTY4N2E3YWEzIDEwMDY0 NAo+IC0tLSBhL2xpYi9pZ3RfZmIuYwo+ICsrKyBiL2xpYi9pZ3RfZmIuYwo+IEBAIC0yMjEsNiAr MjIxLDM2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKPiAgCSAg Lm51bV9wbGFuZXMgPSAzLCAucGxhbmVfYnBwID0geyA4LCA4LCA4LCB9LAo+ICAJICAuaHN1YiA9 IDIsIC52c3ViID0gMSwKPiAgCX0sCj4gKwl7IC5uYW1lID0gIlk0MTAiLCAuZGVwdGggPSAtMSwg LmRybV9pZCA9IERSTV9GT1JNQVRfWTQxMCwKPiArCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFU X1JHQkExMjhGLAo+ICsJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDMyLCB9LAo+ ICsJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKPiArCX0sCj4gKwl7IC5uYW1lID0gIlk0MTIiLCAu ZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWTQxMiwKPiArCSAgLmNhaXJvX2lkID0g Q0FJUk9fRk9STUFUX1JHQkExMjhGLAo+ICsJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAg PSB7IDY0LCB9LAo+ICsJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKPiArCX0sCj4gKwl7IC5uYW1l ID0gIlk0MTYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWTQxNiwKPiArCSAg LmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQkExMjhGLAo+ICsJICAubnVtX3BsYW5lcyA9IDEs IC5wbGFuZV9icHAgPSB7IDY0LCB9LAo+ICsJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKPiArCX0s Cj4gKwl7IC5uYW1lID0gIlhWMzAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRf WFZZVTIxMDEwMTAsCj4gKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4gKwkg IC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgMzIsIH0sCj4gKwkgIC5oc3ViID0gMSwg LnZzdWIgPSAxLAo+ICsJfSwKPiArCXsgLm5hbWUgPSAiWFYzNiIsIC5kZXB0aCA9IC0xLCAuZHJt X2lkID0gRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTYsCj4gKwkgIC5jYWlyb19pZCA9IENBSVJP X0ZPUk1BVF9SR0I5NkYsCj4gKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQs IH0sCj4gKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAo+ICsJfSwKPiArCXsgLm5hbWUgPSAiWFY0 OCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTYsCj4gKwkg IC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4gKwkgIC5udW1fcGxhbmVzID0gMSwg LnBsYW5lX2JwcCA9IHsgNjQsIH0sCj4gKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAo+ICsJfSwK PiAgCXsgLm5hbWUgPSAiUDAxMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9Q MDEwLAo+ICAJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+ICAJICAubnVtX3Bs YW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAo+IEBAIC02ODQsNiArNzE0LDMzIEBA IHN0YXRpYyB2b2lkIGNsZWFyX3l1dl9idWZmZXIoc3RydWN0IGlndF9mYiAqZmIpCj4gIAkJCWZi LT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFswXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4g IAkJYnJlYWs7Cj4gIAo+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgo+ICsJY2FzZSBE Uk1fRk9STUFUX1k0MTA6Cj4gKwkJd21lbXNldChwdHIgKyBmYi0+b2Zmc2V0c1swXSwKPiArCQkJ ZnVsbF9yYW5nZSA/IDB4ZTAwMDAyMDAgOiAweGUwMDEwMjAwLAoKRm9yIGV2ZXJ5dGhpbmcgZWxz ZSB3ZSBsZWF2ZSBhbHBoYSB6ZXJvZWQuCgo+ICsJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5l X2hlaWdodFswXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBE Uk1fRk9STUFUX1hWWVUxMl8xNjE2MTYxNjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2 MTY6Cj4gKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9ZNDE2OiB7 Cj4gKwkJc3RydWN0IGF5dXYxNiB7IHVpbnQxNl90IHUsIHksIHYsIGE7IH07Cj4gKwkJY29uc3Qg c3RydWN0IGF5dXYxNiBwaXhlbCA9IHsKPiArCQkJLmEgPSAweGZmZmYsCj4gKwkJCS52ID0gZnVs bF9yYW5nZSA/IDAgOiAweDEwMDAsCj4gKwkJCS55ID0gMHg4MDAwLAo+ICsJCQkudSA9IGZ1bGxf cmFuZ2UgPyAwIDogMHgxMDAwCj4gKwkJfTsKPiArCj4gKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBm Yi0+cGxhbmVfaGVpZ2h0WzBdOyBpKyspIHsKPiArCQkJc3RydWN0IGF5dXYxNiAqY3VyID0gcHRy ICsgZmItPm9mZnNldHNbMF0gKyBmYi0+c3RyaWRlc1swXSAqIGk7Cj4gKwo+ICsJCQlmb3IgKGlu dCBqID0gMDsgaiA8IGZiLT5wbGFuZV93aWR0aFswXTsgaisrKQo+ICsJCQkJKmN1cisrID0gcGl4 ZWw7Cj4gKwkJfQoKTWF5YmUgd2Ugd2FudCBhIG1lbXNldDY0KCk/Cgo+ICsJCWJyZWFrOwo+ICsJ CX0KPiAgCX0KPiAgCj4gIAlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHIpOwo+IEBAIC0xODk3 LDEwICsxOTU0LDExIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfc3JjX3B1dChjb25zdCBzdHJ1Y3Qg ZmJfY29udmVydCAqY3Z0LAo+ICB9Cj4gIAo+ICBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgewo+IC0J dW5zaWduZWQJeV9pbmM7Cj4gKwl1bnNpZ25lZAlheV9pbmM7Cj4gIAl1bnNpZ25lZAl1dl9pbmM7 Cj4gLQl1bnNpZ25lZAl5X3N0cmlkZTsKPiArCXVuc2lnbmVkCWF5X3N0cmlkZTsKPiAgCXVuc2ln bmVkCXV2X3N0cmlkZTsKPiArCXVuc2lnbmVkCWFfb2Zmc2V0Owo+ICAJdW5zaWduZWQJeV9vZmZz ZXQ7Cj4gIAl1bnNpZ25lZAl1X29mZnNldDsKPiAgCXVuc2lnbmVkCXZfb2Zmc2V0Owo+IEBAIC0x OTE4LDcgKzE5NzYsNyBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGln dF9mYiAqZmIsIHN0cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQo+ICAJY2FzZSBEUk1fRk9S TUFUX1AwMTA6Cj4gIAljYXNlIERSTV9GT1JNQVRfUDAxMjoKPiAgCWNhc2UgRFJNX0ZPUk1BVF9Q MDE2Ogo+IC0JCXBhcmFtcy0+eV9pbmMgPSAxOwo+ICsJCXBhcmFtcy0+YXlfaW5jID0gMTsKPiAg CQlwYXJhbXMtPnV2X2luYyA9IDI7Cj4gIAkJYnJlYWs7Cj4gIAo+IEBAIC0xOTI2LDcgKzE5ODQs NyBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIsIHN0 cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQo+ICAJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoK PiAgCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0MjA6Cj4gIAljYXNlIERSTV9GT1JNQVRfWVZVNDIyOgo+ IC0JCXBhcmFtcy0+eV9pbmMgPSAxOwo+ICsJCXBhcmFtcy0+YXlfaW5jID0gMTsKPiAgCQlwYXJh bXMtPnV2X2luYyA9IDE7Cj4gIAkJYnJlYWs7Cj4gIAo+IEBAIC0xOTM3LDEyICsxOTk1LDE2IEBA IHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0 IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4gIAljYXNlIERSTV9GT1JNQVRfWTIxMDoKPiAgCWNh c2UgRFJNX0ZPUk1BVF9ZMjEyOgo+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4gLQkJcGFyYW1z LT55X2luYyA9IDI7Cj4gKwkJcGFyYW1zLT5heV9pbmMgPSAyOwo+ICAJCXBhcmFtcy0+dXZfaW5j ID0gNDsKPiAgCQlicmVhazsKPiAgCj4gKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2 Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9Z NDEyOgo+ICsJY2FzZSBEUk1fRk9STUFUX1k0MTY6Cj4gIAljYXNlIERSTV9GT1JNQVRfWFlVVjg4 ODg6Cj4gLQkJcGFyYW1zLT55X2luYyA9IDQ7Cj4gKwkJcGFyYW1zLT5heV9pbmMgPSA0Owo+ICAJ CXBhcmFtcy0+dXZfaW5jID0gNDsKPiAgCQlicmVhazsKPiAgCX0KPiBAQCAtMTk1OSw3ICsyMDIx LDcgQEAgc3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBz dHJ1Y3QgeXV2X3BhcmFtZXRlcnMgKnBhcmFtcykKPiAgCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgo+ ICAJY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4gIAljYXNlIERSTV9GT1JNQVRfUDAxNjoKPiAtCQlw YXJhbXMtPnlfc3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gKwkJcGFyYW1zLT5heV9zdHJpZGUg PSBmYi0+c3RyaWRlc1swXTsKPiAgCQlwYXJhbXMtPnV2X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzFd Owo+ICAJCWJyZWFrOwo+ICAKPiBAQCAtMTk3MSw3ICsyMDMzLDExIEBAIHN0YXRpYyB2b2lkIGdl dF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJz ICpwYXJhbXMpCj4gIAljYXNlIERSTV9GT1JNQVRfWTIxMjoKPiAgCWNhc2UgRFJNX0ZPUk1BVF9Z MjE2Ogo+ICAJY2FzZSBEUk1fRk9STUFUX1hZVVY4ODg4Ogo+IC0JCXBhcmFtcy0+eV9zdHJpZGUg PSBmYi0+c3RyaWRlc1swXTsKPiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTY6Cj4g KwljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1k0MTI6 Cj4gKwljYXNlIERSTV9GT1JNQVRfWTQxNjoKPiArCQlwYXJhbXMtPmF5X3N0cmlkZSA9IGZiLT5z dHJpZGVzWzBdOwo+ICAJCXBhcmFtcy0+dXZfc3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gIAkJ YnJlYWs7Cj4gIAl9Cj4gQEAgLTIwNDUsNiArMjExMSwxNiBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2 X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFy YW1zKQo+ICAJCXBhcmFtcy0+dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDY7Cj4gIAkJYnJl YWs7Cj4gIAo+ICsJY2FzZSBEUk1fRk9STUFUX1hWWVUxMl8xNjE2MTYxNjoKPiArCWNhc2UgRFJN X0ZPUk1BVF9YVllVMTYxNjE2MTY6Cj4gKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKPiArCWNhc2Ug RFJNX0ZPUk1BVF9ZNDE2Ogo+ICsJCXBhcmFtcy0+YV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSAr IDY7Cj4gKwkJcGFyYW1zLT55X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgMjsKPiArCQlwYXJh bXMtPnVfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF07Cj4gKwkJcGFyYW1zLT52X29mZnNldCA9IGZi LT5vZmZzZXRzWzBdICsgNDsKPiArCQlicmVhazsKPiArCj4gIAljYXNlIERSTV9GT1JNQVRfWFlV Vjg4ODg6Cj4gIAkJcGFyYW1zLT55X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgMTsKPiAgCQlw YXJhbXMtPnVfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyAyOwo+IEBAIC0yMDk2LDcgKzIxNzIs NyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1dl90b19yZ2IyNChzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0KQo+ICAJCQl3cml0ZV9yZ2IocmdiX3RtcCwgJnJnYik7Cj4gIAo+ICAJCQlyZ2JfdG1wICs9 IGJwcDsKPiAtCQkJeV90bXAgKz0gcGFyYW1zLnlfaW5jOwo+ICsJCQl5X3RtcCArPSBwYXJhbXMu YXlfaW5jOwo+ICAKPiAgCQkJaWYgKChzcmNfZm10LT5oc3ViID09IDEpIHx8IChqICUgc3JjX2Zt dC0+aHN1YikpIHsKPiAgCQkJCXVfdG1wICs9IHBhcmFtcy51dl9pbmM7Cj4gQEAgLTIxMDUsNyAr MjE4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2X3RvX3JnYjI0KHN0cnVjdCBmYl9jb252 ZXJ0ICpjdnQpCj4gIAkJfQo+ICAKPiAgCQlyZ2IyNCArPSByZ2IyNF9zdHJpZGU7Cj4gLQkJeSAr PSBwYXJhbXMueV9zdHJpZGU7Cj4gKwkJeSArPSBwYXJhbXMuYXlfc3RyaWRlOwo+ICAKPiAgCQlp ZiAoKHNyY19mbXQtPnZzdWIgPT0gMSkgfHwgKGkgJSBzcmNfZm10LT52c3ViKSkgewo+ICAJCQl1 ICs9IHBhcmFtcy51dl9zdHJpZGU7Cj4gQEAgLTIxNTYsNyArMjIzMiw3IEBAIHN0YXRpYyB2b2lk IGNvbnZlcnRfcmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIAkJCXJnYl90 bXAgKz0gYnBwOwo+ICAKPiAgCQkJKnlfdG1wID0geXV2LmRbMF07Cj4gLQkJCXlfdG1wICs9IHBh cmFtcy55X2luYzsKPiArCQkJeV90bXAgKz0gcGFyYW1zLmF5X2luYzsKPiAgCj4gIAkJCWlmICgo aSAlIGRzdF9mbXQtPnZzdWIpIHx8IChqICUgZHN0X2ZtdC0+aHN1YikpCj4gIAkJCQljb250aW51 ZTsKPiBAQCAtMjE5Myw3ICsyMjY5LDcgQEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b195 dXYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPiAgCQl9Cj4gIAo+ICAJCXJnYjI0ICs9IHJnYjI0 X3N0cmlkZTsKPiAtCQl5ICs9IHBhcmFtcy55X3N0cmlkZTsKPiArCQl5ICs9IHBhcmFtcy5heV9z dHJpZGU7Cj4gIAo+ICAJCWlmICgoaSAlIGRzdF9mbXQtPnZzdWIpID09IChkc3RfZm10LT52c3Vi IC0gMSkpIHsKPiAgCQkJdSArPSBwYXJhbXMudXZfc3RyaWRlOwo+IEBAIC0yMjE3LDEzICsyMjkz LDEzIEBAIHN0YXRpYyB2b2lkIHdyaXRlX3JnYmYoZmxvYXQgKnJnYjI0LCBjb25zdCBzdHJ1Y3Qg aWd0X3ZlYzQgKnJnYikKPiAgCXJnYjI0WzJdID0gcmdiLT5kWzJdOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBjb252ZXJ0X3l1djE2X3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4g K3N0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2 dCwgYm9vbCBhbHBoYSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAq c3JjX2ZtdCA9Cj4gIAkJbG9va3VwX2RybV9mb3JtYXQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQp Owo+ICAJaW50IGksIGo7Cj4gLQl1aW50OF90IGZwcCA9IDM7Cj4gLQl1aW50MTZfdCAqeSwgKnUs ICp2Owo+ICsJdWludDhfdCBmcHAgPSBhbHBoYSA/IDQgOiAzOwo+ICsJdWludDE2X3QgKmEsICp5 LCAqdSwgKnY7Cj4gIAlmbG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyOwo+ICAJdW5zaWduZWQgaW50 IGZsb2F0X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwo+ ICAJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChjdnQtPnNyYy5m Yi0+ZHJtX2Zvcm1hdCwKPiBAQCAtMjI0MiwxMSArMjMxOCwxMyBAQCBzdGF0aWMgdm9pZCBjb252 ZXJ0X3l1djE2X3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIAkJICAgIShwYXJh bXMudV9vZmZzZXQgJSBzaXplb2YoKmJ1ZikpICYmCj4gIAkJICAgIShwYXJhbXMudl9vZmZzZXQg JSBzaXplb2YoKmJ1ZikpKTsKPiAgCj4gKwlhID0gYnVmICsgcGFyYW1zLmFfb2Zmc2V0IC8gc2l6 ZW9mKCpidWYpOwo+ICAJeSA9IGJ1ZiArIHBhcmFtcy55X29mZnNldCAvIHNpemVvZigqYnVmKTsK PiAgCXUgPSBidWYgKyBwYXJhbXMudV9vZmZzZXQgLyBzaXplb2YoKmJ1Zik7Cj4gIAl2ID0gYnVm ICsgcGFyYW1zLnZfb2Zmc2V0IC8gc2l6ZW9mKCpidWYpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkg PCBjdnQtPmRzdC5mYi0+aGVpZ2h0OyBpKyspIHsKPiArCQljb25zdCB1aW50MTZfdCAqYV90bXAg PSBhOwo+ICAJCWNvbnN0IHVpbnQxNl90ICp5X3RtcCA9IHk7Cj4gIAkJY29uc3QgdWludDE2X3Qg KnVfdG1wID0gdTsKPiAgCQljb25zdCB1aW50MTZfdCAqdl90bXAgPSB2Owo+IEBAIC0yMjYzLDgg KzIzNDEsMTMgQEAgc3RhdGljIHZvaWQgY29udmVydF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQo+ICAJCQlyZ2IgPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dik7 Cj4gIAkJCXdyaXRlX3JnYmYocmdiX3RtcCwgJnJnYik7Cj4gIAo+ICsJCQlpZiAoYWxwaGEpIHsK PiArCQkJCXJnYl90bXBbM10gPSAoKGZsb2F0KSphX3RtcCkgLyA2NTUzNS5mOwo+ICsJCQkJYV90 bXAgKz0gcGFyYW1zLmF5X2luYzsKPiArCQkJfQo+ICsKPiAgCQkJcmdiX3RtcCArPSBmcHA7Cj4g LQkJCXlfdG1wICs9IHBhcmFtcy55X2luYzsKPiArCQkJeV90bXAgKz0gcGFyYW1zLmF5X2luYzsK PiAgCj4gIAkJCWlmICgoc3JjX2ZtdC0+aHN1YiA9PSAxKSB8fCAoaiAlIHNyY19mbXQtPmhzdWIp KSB7Cj4gIAkJCQl1X3RtcCArPSBwYXJhbXMudXZfaW5jOwo+IEBAIC0yMjczLDcgKzIzNTYsOSBA QCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1djE2X3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpj dnQpCj4gIAkJfQo+ICAKPiAgCQlwdHIgKz0gZmxvYXRfc3RyaWRlOwo+IC0JCXkgKz0gcGFyYW1z Lnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKPiArCj4gKwkJYSArPSBwYXJhbXMuYXlfc3RyaWRlIC8g c2l6ZW9mKCphKTsKPiArCQl5ICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXplb2YoKnkpOwo+ICAK PiAgCQlpZiAoKHNyY19mbXQtPnZzdWIgPT0gMSkgfHwgKGkgJSBzcmNfZm10LT52c3ViKSkgewo+ ICAJCQl1ICs9IHBhcmFtcy51dl9zdHJpZGUgLyBzaXplb2YoKnUpOwo+IEBAIC0yMjg0LDE0ICsy MzY5LDE0IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoc3RydWN0IGZiX2Nv bnZlcnQgKmN2dCkKPiAgCWNvbnZlcnRfc3JjX3B1dChjdnQsIGJ1Zik7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9feXV2MTYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkK PiArc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0LCBib29sIGFscGhhKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0 ICpkc3RfZm10ID0KPiAgCQlsb29rdXBfZHJtX2Zvcm1hdChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1h dCk7Cj4gIAlpbnQgaSwgajsKPiAtCXVpbnQxNl90ICp5LCAqdSwgKnY7Cj4gKwl1aW50MTZfdCAq YSwgKnksICp1LCAqdjsKPiAgCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7Cj4gLQl1 aW50OF90IGZwcCA9IDM7Cj4gKwl1aW50OF90IGZwcCA9IGFscGhhID8gNCA6IDM7Cj4gIAl1bnNp Z25lZCBmbG9hdF9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRy KTsKPiAgCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5z cmMuZmItPmRybV9mb3JtYXQsCj4gIAkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCwK PiBAQCAtMjMwMywxNiArMjM4OCwxOSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1 djE2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIAkJICAgaWd0X2Zvcm1hdF9pc195dXYoY3Z0 LT5kc3QuZmItPmRybV9mb3JtYXQpKTsKPiAgCj4gIAlnZXRfeXV2X3BhcmFtZXRlcnMoY3Z0LT5k c3QuZmIsICZwYXJhbXMpOwo+IC0JaWd0X2Fzc2VydCghKHBhcmFtcy55X29mZnNldCAlIHNpemVv ZigqeSkpICYmCj4gKwlpZ3RfYXNzZXJ0KCEocGFyYW1zLmFfb2Zmc2V0ICUgc2l6ZW9mKCphKSkg JiYKPiArCQkgICAhKHBhcmFtcy55X29mZnNldCAlIHNpemVvZigqeSkpICYmCj4gIAkJICAgIShw YXJhbXMudV9vZmZzZXQgJSBzaXplb2YoKnUpKSAmJgo+ICAJCSAgICEocGFyYW1zLnZfb2Zmc2V0 ICUgc2l6ZW9mKCp2KSkpOwo+ICAKPiArCWEgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMuYV9vZmZz ZXQ7Cj4gIAl5ID0gY3Z0LT5kc3QucHRyICsgcGFyYW1zLnlfb2Zmc2V0Owo+ICAJdSA9IGN2dC0+ ZHN0LnB0ciArIHBhcmFtcy51X29mZnNldDsKPiAgCXYgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMu dl9vZmZzZXQ7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkr Kykgewo+ICAJCWNvbnN0IGZsb2F0ICpyZ2JfdG1wID0gcHRyOwo+ICsJCXVpbnQxNl90ICphX3Rt cCA9IGE7Cj4gIAkJdWludDE2X3QgKnlfdG1wID0geTsKPiAgCQl1aW50MTZfdCAqdV90bXAgPSB1 Owo+ICAJCXVpbnQxNl90ICp2X3RtcCA9IHY7Cj4gQEAgLTIzMjUsMTAgKzI0MTMsMTUgQEAgc3Rh dGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+ ICAJCQlyZWFkX3JnYmYoJnJnYiwgcmdiX3RtcCk7Cj4gIAkJCXl1diA9IGlndF9tYXRyaXhfdHJh bnNmb3JtKCZtLCAmcmdiKTsKPiAgCj4gKwkJCWlmIChhbHBoYSkgewo+ICsJCQkJKmFfdG1wID0g cmdiX3RtcFszXSAqIDY1NTM1LmYgKyAuNWY7Cj4gKwkJCQlhX3RtcCArPSBwYXJhbXMuYXlfaW5j Owo+ICsJCQl9Cj4gKwo+ICAJCQlyZ2JfdG1wICs9IGZwcDsKPiAgCj4gIAkJCSp5X3RtcCA9IHl1 di5kWzBdOwo+IC0JCQl5X3RtcCArPSBwYXJhbXMueV9pbmM7Cj4gKwkJCXlfdG1wICs9IHBhcmFt cy5heV9pbmM7Cj4gIAo+ICAJCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSB8fCAoaiAlIGRzdF9m bXQtPmhzdWIpKQo+ICAJCQkJY29udGludWU7Cj4gQEAgLTIzNjUsNyArMjQ1OCw4IEBAIHN0YXRp YyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9feXV2MTYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPiAg CQl9Cj4gIAo+ICAJCXB0ciArPSBmbG9hdF9zdHJpZGU7Cj4gLQkJeSArPSBwYXJhbXMueV9zdHJp ZGUgLyBzaXplb2YoKnkpOwo+ICsJCWEgKz0gcGFyYW1zLmF5X3N0cmlkZSAvIHNpemVvZigqYSk7 Cj4gKwkJeSArPSBwYXJhbXMuYXlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKPiAgCj4gIAkJaWYgKChp ICUgZHN0X2ZtdC0+dnN1YikgPT0gKGRzdF9mbXQtPnZzdWIgLSAxKSkgewo+ICAJCQl1ICs9IHBh cmFtcy51dl9zdHJpZGUgLyBzaXplb2YoKnUpOwo+IEBAIC0yMzc0LDYgKzI0NjgsOTUgQEAgc3Rh dGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+ ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBjb252ZXJ0X1k0MTBfdG9fZmxvYXQoc3RydWN0 IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBoYSkKPiArewo+ICsJaW50IGksIGo7Cj4gKwljb25z dCB1aW50MzJfdCAqdXl2Owo+ICsJdWludDMyX3QgKmJ1ZjsKPiArCWZsb2F0ICpwdHIgPSBjdnQt PmRzdC5wdHI7Cj4gKwl1bnNpZ25lZCBpbnQgZmxvYXRfc3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0 cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7Cj4gKwl1bnNpZ25lZCBpbnQgdXl2X3N0cmlkZSA9IGN2 dC0+c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOwo+ICsJc3RydWN0IGlndF9tYXQ0 IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKPiAr CQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LAo+ICsJCQkJCQkgICAgY3Z0LT5zcmMu ZmItPmNvbG9yX2VuY29kaW5nLAo+ICsJCQkJCQkgICAgY3Z0LT5zcmMuZmItPmNvbG9yX3Jhbmdl KTsKPiArCXVuc2lnbmVkIGJwcCA9IGFscGhhID8gNCA6IDM7Cj4gKwo+ICsJaWd0X2Fzc2VydCgo Y3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZNDEwIHx8Cj4gKwkJICAgIGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWFZZVTIxMDEwMTApICYmCj4gKwkJ ICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCk7Cj4gKwo+ICsJ dXl2ID0gYnVmID0gY29udmVydF9zcmNfZ2V0KGN2dCk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgewo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRz dC5mYi0+d2lkdGg7IGorKykgewo+ICsJCQkvKiBDb252ZXJ0IDJ4MSBwaXhlbCBibG9ja3MgKi8K PiArCQkJc3RydWN0IGlndF92ZWM0IHl1djsKPiArCQkJc3RydWN0IGlndF92ZWM0IHJnYjsKPiAr Cj4gKwkJCXl1di5kWzBdID0gdXl2W2pdICYgMHgzZmY7Cj4gKwkJCXl1di5kWzFdID0gKHV5dltq XSA+PiAxMCkgJiAweDNmZjsKPiArCQkJeXV2LmRbMl0gPSAodXl2W2pdID4+IDIwKSAmIDB4M2Zm OwoKVGhlc2Ugc2VlbSB0byBiZSBpbiB0aGUgd3Jvbmcgb3JkZXIuIEF0IGxlYXN0IEkgdGhpbmsg d2Ugd2FudGVkClswXT15LCBbMV09Y2IsIFsyXT1jcgoKPiArCQkJeXV2LmRbM10gPSAxLmY7Cj4g Kwo+ICsJCQlyZ2IgPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dik7Cj4gKwo+ICsJCQl3 cml0ZV9yZ2JmKCZwdHJbaiAqIGJwcF0sICZyZ2IpOwo+ICsJCQlpZiAoYWxwaGEpCj4gKwkJCQlw dHJbaiAqIGJwcCArIDNdID0gKGZsb2F0KSh1eXZbal0gPj4gMzApIC8gMy5mOwo+ICsJCX0KPiAr Cj4gKwkJcHRyICs9IGZsb2F0X3N0cmlkZTsKPiArCQl1eXYgKz0gdXl2X3N0cmlkZTsKPiArCX0K PiArCj4gKwljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBjb252ZXJ0X2Zsb2F0X3RvX1k0MTAoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBo YSkKPiArewo+ICsJaW50IGksIGo7Cj4gKwl1aW50MzJfdCAqdXl2ID0gY3Z0LT5kc3QucHRyOwo+ ICsJY29uc3QgZmxvYXQgKnB0ciA9IGN2dC0+c3JjLnB0cjsKPiArCXVuc2lnbmVkIGZsb2F0X3N0 cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwo+ICsJdW5zaWdu ZWQgdXl2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOwo+ ICsJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfcmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPnNyYy5m Yi0+ZHJtX2Zvcm1hdCwKPiArCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LAo+ICsJ CQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAo+ICsJCQkJCQkgICAgY3Z0LT5k c3QuZmItPmNvbG9yX3JhbmdlKTsKPiArCXVuc2lnbmVkIGJwcCA9IGFscGhhID8gNCA6IDM7Cj4g Kwo+ICsJaWd0X2Fzc2VydChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZM T0FUICYmCj4gKwkJICAgKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWTQx MCB8fAo+ICsJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1hWWVUy MTAxMDEwKSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkr Kykgewo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgewo+ICsJ CQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiOwo+ICsJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2Owo+ICsJCQl1 aW50OF90IGEgPSAwOwo+ICsJCQl1aW50MTZfdCB5LCBjYiwgY3I7Cj4gKwo+ICsJCQlyZWFkX3Jn YmYoJnJnYiwgJnB0cltqICogYnBwXSk7Cj4gKwkJCWlmIChhbHBoYSkKPiArCQkJCSBhID0gcHRy W2ogKiBicHAgKyAzXSAqIDMuZiArIC41ZjsKPiArCj4gKwkJCXl1diA9IGlndF9tYXRyaXhfdHJh bnNmb3JtKCZtLCAmcmdiKTsKPiArCQkJY3IgPSB5dXYuZFswXTsKPiArCQkJeSA9IHl1di5kWzFd Owo+ICsJCQljYiA9IHl1di5kWzJdOwoKU2FtZSBoZXJlLgoKPiArCj4gKwkJCXV5dltqXSA9ICgo Y3IgJiAweDNmZikgPDwgMCkgfAo+ICsJCQkJICAoKHkgJiAweDNmZikgPDwgMTApIHwKPiArCQkJ CSAgKChjYiAmIDB4M2ZmKSA8PCAyMCkgfAo+ICsJCQkJICAoYSA8PCAzMCk7CgpjYiBhbmQgY3Ig c3dhcHBlZCBoZXJlLgoKPiArCQl9Cj4gKwo+ICsJCXB0ciArPSBmbG9hdF9zdHJpZGU7Cj4gKwkJ dXl2ICs9IHV5dl9zdHJpZGU7Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGNvbnZlcnRf cGl4bWFuKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIHsKPiAgCXBpeG1hbl9mb3JtYXRfY29k ZV90IHNyY19waXhtYW4gPSBkcm1fZm9ybWF0X3RvX3BpeG1hbihjdnQtPnNyYy5mYi0+ZHJtX2Zv cm1hdCk7Cj4gQEAgLTI0NjMsNyArMjY0NiwxOSBAQCBzdGF0aWMgdm9pZCBmYl9jb252ZXJ0KHN0 cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIAkJY2FzZSBEUk1fRk9STUFUX1kyMTA6Cj4gIAkJY2Fz ZSBEUk1fRk9STUFUX1kyMTI6Cj4gIAkJY2FzZSBEUk1fRk9STUFUX1kyMTY6Cj4gLQkJCWNvbnZl cnRfeXV2MTZfdG9fZmxvYXQoY3Z0KTsKPiArCQljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYx NjE2Ogo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6Cj4gKwkJCWNvbnZlcnRfeXV2 MTZfdG9fZmxvYXQoY3Z0LCBmYWxzZSk7Cj4gKwkJCXJldHVybjsKPiArCQljYXNlIERSTV9GT1JN QVRfWTQxMDoKPiArCQkJY29udmVydF9ZNDEwX3RvX2Zsb2F0KGN2dCwgdHJ1ZSk7Cj4gKwkJCXJl dHVybjsKPiArCQljYXNlIERSTV9GT1JNQVRfWFZZVTIxMDEwMTA6Cj4gKwkJCWNvbnZlcnRfWTQx MF90b19mbG9hdChjdnQsIGZhbHNlKTsKPiArCQkJcmV0dXJuOwo+ICsJCWNhc2UgRFJNX0ZPUk1B VF9ZNDEyOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZNDE2Ogo+ICsJCQljb252ZXJ0X3l1djE2X3Rv X2Zsb2F0KGN2dCwgdHJ1ZSk7Cj4gIAkJCXJldHVybjsKPiAgCQl9Cj4gIAl9IGVsc2UgaWYgKGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IElHVF9GT1JNQVRfRkxPQVQpIHsKPiBAQCAtMjQ3NCw3 ICsyNjY5LDE5IEBAIHN0YXRpYyB2b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2NvbnZlcnQgKmN2 dCkKPiAgCQljYXNlIERSTV9GT1JNQVRfWTIxMDoKPiAgCQljYXNlIERSTV9GT1JNQVRfWTIxMjoK PiAgCQljYXNlIERSTV9GT1JNQVRfWTIxNjoKPiAtCQkJY29udmVydF9mbG9hdF90b195dXYxNihj dnQpOwo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTY6Cj4gKwkJY2FzZSBEUk1f Rk9STUFUX1hWWVUxNjE2MTYxNjoKPiArCQkJY29udmVydF9mbG9hdF90b195dXYxNihjdnQsIGZh bHNlKTsKPiArCQkJcmV0dXJuOwo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZNDEwOgo+ICsJCQljb252 ZXJ0X2Zsb2F0X3RvX1k0MTAoY3Z0LCB0cnVlKTsKPiArCQkJcmV0dXJuOwo+ICsJCWNhc2UgRFJN X0ZPUk1BVF9YVllVMjEwMTAxMDoKPiArCQkJY29udmVydF9mbG9hdF90b19ZNDEwKGN2dCwgZmFs c2UpOwo+ICsJCQlyZXR1cm47Cj4gKwkJY2FzZSBEUk1fRk9STUFUX1k0MTI6Cj4gKwkJY2FzZSBE Uk1fRk9STUFUX1k0MTY6Cj4gKwkJCWNvbnZlcnRfZmxvYXRfdG9feXV2MTYoY3Z0LCB0cnVlKTsK PiAgCQkJcmV0dXJuOwo+ICAJCX0KPiAgCX0KPiBAQCAtMjk0MSw2ICszMTQ4LDEyIEBAIGJvb2wg aWd0X2Zvcm1hdF9pc195dXYodWludDMyX3QgZHJtX2Zvcm1hdCkKPiAgCWNhc2UgRFJNX0ZPUk1B VF9ZMjEwOgo+ICAJY2FzZSBEUk1fRk9STUFUX1kyMTI6Cj4gIAljYXNlIERSTV9GT1JNQVRfWTIx NjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9Y VllVMTJfMTYxNjE2MTY6Cj4gKwljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2Ogo+ICsJY2Fz ZSBEUk1fRk9STUFUX1k0MTA6Cj4gKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKPiArCWNhc2UgRFJN X0ZPUk1BVF9ZNDE2Ogo+ICAJY2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4gIAljYXNlIERSTV9GT1JN QVRfWVZZVToKPiAgCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+IC0tIAo+IDIuMjAuMQo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gaWd0LWRldiBt YWlsaW5nIGxpc3QKPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=