From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [RFC][PATCH] drm: Nuke modifier[1-3] Date: Wed, 16 Nov 2016 07:30:41 -0800 Message-ID: <20161116153040.GB11093@intel.com> References: <1479295996-26246-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A1BA6E71F for ; Wed, 16 Nov 2016 15:30:42 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1479295996-26246-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: ville.syrjala@linux.intel.com Cc: Daniel Vetter , Kristian =?utf-8?B?SMO4Z3NiZXJn?= , dri-devel@lists.freedesktop.org, dczaplejewicz@collabora.co.uk List-Id: dri-devel@lists.freedesktop.org QWNrZWQtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KCk9uIDE2LTExLTE2IDEz OjMzOjE2LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj5Gcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Cj5JdCBoYXMgYmVlbiBzdWdnZXN0ZWQgdGhh dCBoYXZpbmcgcGVyLXBsYW5lIG1vZGlmaWVycyBpcyBtYWtpbmcgbGlmZQo+bW9yZSBkaWZmaWN1 bHQgZm9yIHVzZXJzcGFjZSwgc28gbGV0J3MganVzdCByZXRpcmUgbW9kaWZpZXJbMS0zXSBhbmQK PnVzZSBtb2RpZmllclswXSB0byBhcHBseSB0byB0aGUgZW50aXJlIGZyYW1lYnVmZmVyLgo+Cj5P YnZpb3N1bHkgdGhpcyBtZWFucyB0aGF0IGlmIGluZGl2aWR1YWwgcGxhbmVzIG5lZWQgZGlmZmVy ZW50IHRpbGluZwo+bGF5b3V0cyBhbmQgd2hhdG5vdCB3ZSB3aWxsIG5lZWQgYSBuZXcgbW9kaWZp ZXIgZm9yIGVhY2ggY29tYmluYXRpb24KPm9mIHBsYW5lcyB3aXRoIGRpZmZlcmVudCB0aWxpbmcg bGF5b3V0cy4KPgo+Rm9yIGEgYml0IG9mIGV4dHJhIGJhY2t3YXJkcyBjb21wYXRpbGJpbHR5IHRo ZSBrZXJuZWwgd2lsbCBhbGxvdwo+bm9uLXplcm8gbW9kaWZpZXJbMStdIGJ1dCBpdCByZXF1aXJl IHRoYXQgdGhleSB3aWxsIG1hdGNoIG1vZGlmaWVyWzBdLgo+VGhpcyBpbiBjYXNlIHRoZXJlJ3Mg ZXhpc3RpbmcgdXNlcnNwYWNlIG91dCB0aGVyZSB0aGF0IHNldHMKPm1vZGlmaWVyWzErXSB0byBz b21ldGhpbmcgbm9uLXplcm8gd2l0aCBwbGFuYXIgZm9ybWF0cy4KPgo+TW9zdGx5IGEgY29jY2kg am9iLCB3aXRoIGEgYml0IG9mIG1hbnVhbCBzdHVmZiBtaXhlZCBpbi4KPgo+QEAKPnN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiOwo+ZXhwcmVzc2lvbiBFOwo+QEAKPi0gZmItPm1vZGlmaWVyW0Vd Cj4rIGZiLT5tb2RpZmllcgo+Cj5AQAo+c3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYjsKPmV4cHJl c3Npb24gRTsKPkBACj4tIGZiLm1vZGlmaWVyW0VdCj4rIGZiLm1vZGlmaWVyCj4KPkNjOiBLcmlz dGlhbiBIw7hnc2JlcmcgPGhvZWdzYmVyZ0BnbWFpbC5jb20+Cj5DYzogQmVuIFdpZGF3c2t5IDxi ZW5qYW1pbi53aWRhd3NreUBpbnRlbC5jb20+Cj5DYzogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21h aWwuY29tPgo+Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj5DYzog VG9tZXUgVml6b3NvIDx0b21ldUB0b21ldXZpem9zby5uZXQ+Cj5DYzogZGN6YXBsZWpld2ljekBj b2xsYWJvcmEuY28udWsKPlN1Z2dlc3RlZC1ieTogS3Jpc3RpYW4gSMO4Z3NiZXJnIDxob2Vnc2Jl cmdAZ21haWwuY29tPgo+U2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPi0tLQo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMg ICAgICAgICAgICAgIHwgIDIgKy0KPiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMg ICAgICAgICB8ICA3ICsrKwo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9oZWxwZXIuYyAg ICAgIHwgIDIgKy0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICB8 ICA0ICstCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgNCAr LQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgNzIgKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi ZGV2LmMgICAgICAgIHwgIDIgKy0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAg ICAgICAgICB8IDIyICsrKysrLS0tLS0KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyAgICAgICB8IDE0ICsrKy0tLQo+IGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDQvbWRw NF9wbGFuZS5jIHwgIDIgKy0KPiBpbmNsdWRlL2RybS9kcm1fZnJhbWVidWZmZXIuaCAgICAgICAg ICAgICB8ICA0ICstCj4gaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oICAgICAgICAgICAgICAg fCAxMyArKystLS0KPiAxMiBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCA2OSBkZWxl dGlvbnMoLSkKPgo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj5pbmRleCA1N2UwYTZlOTZmNmQuLmJmYWE2ZTRh OTk4OSAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPkBAIC05MjIsMTIgKzkyMiwxMiBAQCBzdGF0aWMg dm9pZCBkcm1fYXRvbWljX3BsYW5lX3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwK Pgo+IAkJZHJtX3ByaW50ZihwLCAiXHRcdGZvcm1hdD0lc1xuIiwKPiAJCSAgICAgICAgICAgICAg ZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPisJ CWRybV9wcmludGYocCwgIlx0XHRcdG1vZGlmaWVyPTB4JWxseFxuIiwgZmItPm1vZGlmaWVyKTsK PiAJCWRybV9wcmludGYocCwgIlx0XHRzaXplPSVkeCVkXG4iLCBmYi0+d2lkdGgsIGZiLT5oZWln aHQpOwo+IAkJZHJtX3ByaW50ZihwLCAiXHRcdGxheWVyczpcbiIpOwo+IAkJZm9yIChpID0gMDsg aSA8IG47IGkrKykgewo+IAkJCWRybV9wcmludGYocCwgIlx0XHRcdHBpdGNoWyVkXT0ldVxuIiwg aSwgZmItPnBpdGNoZXNbaV0pOwo+IAkJCWRybV9wcmludGYocCwgIlx0XHRcdG9mZnNldFslZF09 JXVcbiIsIGksIGZiLT5vZmZzZXRzW2ldKTsKPi0JCQlkcm1fcHJpbnRmKHAsICJcdFx0XHRtb2Rp ZmllclslZF09MHglbGx4XG4iLCBpLCBmYi0+bW9kaWZpZXJbaV0pOwo+IAkJfQo+IAl9Cj4gCWRy bV9wcmludGYocCwgIlx0Y3J0Yy1wb3M9IiBEUk1fUkVDVF9GTVQgIlxuIiwgRFJNX1JFQ1RfQVJH KCZkZXN0KSk7Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj5pbmRleCAwNmFkM2QxMzUwYzQu LmNiZjBjODkzZjQyNiAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZm ZXIuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj5AQCAtMTc3LDYg KzE3NywxMyBAQCBzdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKGNvbnN0IHN0cnVjdCBkcm1f bW9kZV9mYl9jbWQyICpyKQo+IAkJCXJldHVybiAtRUlOVkFMOwo+IAkJfQo+Cj4rCQlpZiAoci0+ ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJRklFUlMgJiYKPisJCSAgICByLT5tb2RpZmllcltpXSAh PSByLT5tb2RpZmllclswXSkgewo+KwkJCURSTV9ERUJVR19LTVMoImJhZCBmYiBtb2RpZmllciAl bGx1IGZvciBwbGFuZSAlZFxuIiwKPisJCQkJICAgICAgci0+bW9kaWZpZXJbaV0sIGkpOwo+KwkJ CXJldHVybiAtRUlOVkFMOwo+KwkJfQo+Kwo+IAkJLyogbW9kaWZpZXIgc3BlY2lmaWMgY2hlY2tz OiAqLwo+IAkJc3dpdGNoIChyLT5tb2RpZmllcltpXSkgewo+IAkJY2FzZSBEUk1fRk9STUFUX01P RF9TQU1TVU5HXzY0XzMyX1RJTEU6Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9t b2Rlc2V0X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlci5jCj5p bmRleCAyZjQ1MmIzZGQ0MGUuLjYzMzM1NWUwMjM5OCAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fbW9kZXNldF9oZWxwZXIuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rl c2V0X2hlbHBlci5jCj5AQCAtOTMsOCArOTMsOCBAQCB2b2lkIGRybV9oZWxwZXJfbW9kZV9maWxs X2ZiX3N0cnVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAJZm9yIChpID0gMDsgaSA8 IDQ7IGkrKykgewo+IAkJZmItPnBpdGNoZXNbaV0gPSBtb2RlX2NtZC0+cGl0Y2hlc1tpXTsKPiAJ CWZiLT5vZmZzZXRzW2ldID0gbW9kZV9jbWQtPm9mZnNldHNbaV07Cj4tCQlmYi0+bW9kaWZpZXJb aV0gPSBtb2RlX2NtZC0+bW9kaWZpZXJbaV07Cj4gCX0KPisJZmItPm1vZGlmaWVyID0gbW9kZV9j bWQtPm1vZGlmaWVyWzBdOwo+IAlmYi0+cGl4ZWxfZm9ybWF0ID0gbW9kZV9jbWQtPnBpeGVsX2Zv cm1hdDsKPiAJZmItPmZsYWdzID0gbW9kZV9jbWQtPmZsYWdzOwo+IH0KPmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj5pbmRleCAxY2M5NzFjYjZjYjEuLmFlMTM2YWY0YWEzNyAxMDA2NDQK Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4rKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+QEAgLTE4OTcsNyArMTg5Nyw3IEBAIHN0YXRp YyBpbnQgaTkxNV9nZW1fZnJhbWVidWZmZXJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpCj4gCQkJICAgZmJkZXZfZmItPmJhc2UuaGVpZ2h0LAo+IAkJCSAgIGZiZGV2X2ZiLT5i YXNlLmRlcHRoLAo+IAkJCSAgIGZiZGV2X2ZiLT5iYXNlLmJpdHNfcGVyX3BpeGVsLAo+LQkJCSAg IGZiZGV2X2ZiLT5iYXNlLm1vZGlmaWVyWzBdLAo+KwkJCSAgIGZiZGV2X2ZiLT5iYXNlLm1vZGlm aWVyLAo+IAkJCSAgIGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3JlZmNvdW50KCZmYmRldl9mYi0+YmFz ZSkpOwo+IAkJZGVzY3JpYmVfb2JqKG0sIGZiZGV2X2ZiLT5vYmopOwo+IAkJc2VxX3B1dGMobSwg J1xuJyk7Cj5AQCAtMTkxNSw3ICsxOTE1LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9mcmFtZWJ1 ZmZlcl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAJCQkgICBmYi0+YmFz ZS5oZWlnaHQsCj4gCQkJICAgZmItPmJhc2UuZGVwdGgsCj4gCQkJICAgZmItPmJhc2UuYml0c19w ZXJfcGl4ZWwsCj4tCQkJICAgZmItPmJhc2UubW9kaWZpZXJbMF0sCj4rCQkJICAgZmItPmJhc2Uu bW9kaWZpZXIsCj4gCQkJICAgZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291bnQoJmZiLT5iYXNl KSk7Cj4gCQlkZXNjcmliZV9vYmoobSwgZmItPm9iaik7Cj4gCQlzZXFfcHV0YyhtLCAnXG4nKTsK PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj5pbmRleCBmZjgyMTY0 OTQ4NmUuLmRiZTlmYjQxYWU1MyAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pY19wbGFuZS5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWNfcGxhbmUuYwo+QEAgLTE0NCw4ICsxNDQsOCBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAJaWYgKHN0YXRlLT5mYiAmJiBk cm1fcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsKPiAJCXN0cnVjdCBkcm1f Zm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+Cj4tCQlpZiAoIShzdGF0ZS0+ZmItPm1vZGlm aWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4tCQkJc3RhdGUtPmZiLT5tb2Rp ZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpKSB7Cj4rCQlpZiAoc3RhdGUtPmZi LT5tb2RpZmllciAhPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCAmJgo+KwkJICAgIHN0YXRlLT5m Yi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7Cj4gCQkJRFJNX0RFQlVH X0tNUygiWS9ZZiB0aWxpbmcgcmVxdWlyZWQgZm9yIDkwLzI3MCFcbiIpOwo+IAkJCXJldHVybiAt RUlOVkFMOwo+IAkJfQo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+aW5kZXggMmVi YjhiODMzMzk1Li4wZDQ4ODRmMWQzMjEgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+QEAgLTIxOTUsNyArMjE5NSw3IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4KPiAJV0FS Tl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOwo+Cj4tCWFsaWdubWVu dCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMF0pOwo+Kwlh bGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyKTsK Pgo+IAlpbnRlbF9maWxsX2ZiX2dndHRfdmlldygmdmlldywgZmIsIHJvdGF0aW9uKTsKPgo+QEAg LTIzNTYsMTMgKzIzNTYsMTMgQEAgc3RhdGljIHUzMiBpbnRlbF9hZGp1c3RfdGlsZV9vZmZzZXQo aW50ICp4LCBpbnQgKnksCj4KPiAJV0FSTl9PTihuZXdfb2Zmc2V0ID4gb2xkX29mZnNldCk7Cj4K Pi0JaWYgKGZiLT5tb2RpZmllcltwbGFuZV0gIT0gRFJNX0ZPUk1BVF9NT0RfTk9ORSkgewo+Kwlp ZiAoZmItPm1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX05PTkUpIHsKPiAJCXVuc2lnbmVkIGlu dCB0aWxlX3NpemUsIHRpbGVfd2lkdGgsIHRpbGVfaGVpZ2h0Owo+IAkJdW5zaWduZWQgaW50IHBp dGNoX3RpbGVzOwo+Cj4gCQl0aWxlX3NpemUgPSBpbnRlbF90aWxlX3NpemUoZGV2X3ByaXYpOwo+ IAkJaW50ZWxfdGlsZV9kaW1zKGRldl9wcml2LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAo+ LQkJCQlmYi0+bW9kaWZpZXJbcGxhbmVdLCBjcHApOwo+KwkJCQlmYi0+bW9kaWZpZXIsIGNwcCk7 Cj4KPiAJCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+IAkJCXBpdGNo X3RpbGVzID0gcGl0Y2ggLyB0aWxlX2hlaWdodDsKPkBAIC0yNDA1LDcgKzI0MDUsNyBAQCBzdGF0 aWMgdTMyIF9pbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAJCQkJICAgICAgdW5zaWduZWQgaW50IHJvdGF0aW9uLAo+IAkJ CQkgICAgICB1MzIgYWxpZ25tZW50KQo+IHsKPi0JdWludDY0X3QgZmJfbW9kaWZpZXIgPSBmYi0+ bW9kaWZpZXJbcGxhbmVdOwo+Kwl1aW50NjRfdCBmYl9tb2RpZmllciA9IGZiLT5tb2RpZmllcjsK PiAJdW5zaWduZWQgaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3Jt YXQsIHBsYW5lKTsKPiAJdTMyIG9mZnNldCwgb2Zmc2V0X2FsaWduZWQ7Cj4KPkBAIC0yNDY0LDcg KzI0NjQsNyBAQCB1MzIgaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwK PiAJaWYgKGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEp Cj4gCQlhbGlnbm1lbnQgPSA0MDk2Owo+IAllbHNlCj4tCQlhbGlnbm1lbnQgPSBpbnRlbF9zdXJm X2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyW3BsYW5lXSk7Cj4rCQlhbGlnbm1lbnQg PSBpbnRlbF9zdXJmX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyKTsKPgo+IAlyZXR1 cm4gX2ludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsIHgsIHksIGZiLCBwbGFuZSwg cGl0Y2gsCj4gCQkJCQkgIHJvdGF0aW9uLCBhbGlnbm1lbnQpOwo+QEAgLTI1NDYsMTMgKzI1NDYs MTMgQEAgaW50ZWxfZmlsbF9mYl9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAJCQkJCQkgICAgRFJNX1JPVEFURV8wLCB0aWxlX3NpemUpOwo+IAkJb2Zmc2V0IC89IHRp bGVfc2l6ZTsKPgo+LQkJaWYgKGZiLT5tb2RpZmllcltpXSAhPSBEUk1fRk9STUFUX01PRF9OT05F KSB7Cj4rCQlpZiAoZmItPm1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX05PTkUpIHsKPiAJCQl1 bnNpZ25lZCBpbnQgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQ7Cj4gCQkJdW5zaWduZWQgaW50IHBp dGNoX3RpbGVzOwo+IAkJCXN0cnVjdCBkcm1fcmVjdCByOwo+Cj4gCQkJaW50ZWxfdGlsZV9kaW1z KGRldl9wcml2LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAo+LQkJCQkJZmItPm1vZGlmaWVy W2ldLCBjcHApOwo+KwkJCQkJZmItPm1vZGlmaWVyLCBjcHApOwo+Cj4gCQkJcm90X2luZm8tPnBs YW5lW2ldLm9mZnNldCA9IG9mZnNldDsKPiAJCQlyb3RfaW5mby0+cGxhbmVbaV0uc3RyaWRlID0g RElWX1JPVU5EX1VQKGZiLT5waXRjaGVzW2ldLCB0aWxlX3dpZHRoICogY3BwKTsKPkBAIC0yNzEx LDcgKzI3MTEsNyBAQCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAJbW9kZV9jbWQud2lkdGggPSBmYi0+d2lkdGg7Cj4gCW1vZGVfY21kLmhl aWdodCA9IGZiLT5oZWlnaHQ7Cj4gCW1vZGVfY21kLnBpdGNoZXNbMF0gPSBmYi0+cGl0Y2hlc1sw XTsKPi0JbW9kZV9jbWQubW9kaWZpZXJbMF0gPSBmYi0+bW9kaWZpZXJbMF07Cj4rCW1vZGVfY21k Lm1vZGlmaWVyWzBdID0gZmItPm1vZGlmaWVyOwo+IAltb2RlX2NtZC5mbGFncyA9IERSTV9NT0RF X0ZCX01PRElGSUVSUzsKPgo+IAlpZiAoaW50ZWxfZnJhbWVidWZmZXJfaW5pdChkZXYsIHRvX2lu dGVsX2ZyYW1lYnVmZmVyKGZiKSwKPkBAIC0yODQxLDcgKzI4NDEsNyBAQCBzdGF0aWMgaW50IHNr bF9tYXhfcGxhbmVfd2lkdGgoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBw bGFuZSwKPiB7Cj4gCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9y bWF0LCBwbGFuZSk7Cj4KPi0Jc3dpdGNoIChmYi0+bW9kaWZpZXJbcGxhbmVdKSB7Cj4rCXN3aXRj aCAoZmItPm1vZGlmaWVyKSB7Cj4gCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTk9ORToKPiAJY2FzZSBJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAJCXN3aXRjaCAoY3BwKSB7Cj5AQCAtMjg3Miw3ICsy ODcyLDcgQEAgc3RhdGljIGludCBza2xfbWF4X3BsYW5lX3dpZHRoKGNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gCQl9Cj4gCQlicmVhazsKPiAJZGVmYXVsdDoK Pi0JCU1JU1NJTkdfQ0FTRShmYi0+bW9kaWZpZXJbcGxhbmVdKTsKPisJCU1JU1NJTkdfQ0FTRShm Yi0+bW9kaWZpZXIpOwo+IAl9Cj4KPiAJcmV0dXJuIDIwNDg7Cj5AQCAtMjkwMCw3ICsyOTAwLDcg QEAgc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVf c3RhdGUsIDApOwo+IAlvZmZzZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwg cGxhbmVfc3RhdGUsIDApOwo+Cj4tCWFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGRl dl9wcml2LCBmYi0+bW9kaWZpZXJbMF0pOwo+KwlhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdu bWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyKTsKPgo+IAkvKgo+IAkgKiBBVVggc3VyZmFjZSBv ZmZzZXQgaXMgc3BlY2lmaWVkIGFzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZQo+QEAgLTI5MTcsNyAr MjkxNyw3IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+IAkgKgo+IAkgKiBUT0RPOiBsaW5lYXIgYW5kIFkt dGlsZWQgc2VlbSBmaW5lLCBZZiB1bnRlc3RlZCwKPiAJICovCj4tCWlmIChmYi0+bW9kaWZpZXJb MF0gPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpIHsKPisJaWYgKGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkgewo+IAkJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVf Y3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+Cj4gCQl3aGlsZSAoKHggKyB3KSAqIGNwcCA+IGZi LT5waXRjaGVzWzBdKSB7Cj5AQCAtMzA2Niw3ICszMDY2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+IAl9Cj4KPiAJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCAmJgo+LQkgICAgZmItPm1vZGlmaWVyWzBdID09 IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+KwkgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9YX1RJTEVEKQo+IAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7Cj4KPiAJaWYg KHJvdGF0aW9uICYgRFJNX1JPVEFURV8xODApCj5AQCAtMzE3Nyw3ICszMTc3LDcgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJp bWFyeSwKPiAJCUJVRygpOwo+IAl9Cj4KPi0JaWYgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCkKPisJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCkKPiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwo+Cj4gCWlmIChyb3RhdGlv biAmIERSTV9ST1RBVEVfMTgwKQo+QEAgLTMyODcsOSArMzI4Nyw5IEBAIHUzMiBza2xfcGxhbmVf c3RyaWRlKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gCWlm IChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+IAkJaW50IGNwcCA9IGRybV9m b3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIHBsYW5lKTsKPgo+LQkJc3RyaWRlIC89 IGludGVsX3RpbGVfaGVpZ2h0KGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMF0sIGNwcCk7Cj4rCQlz dHJpZGUgLz0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllciwgY3BwKTsK PiAJfSBlbHNlIHsKPi0JCXN0cmlkZSAvPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldl9w cml2LCBmYi0+bW9kaWZpZXJbMF0sCj4rCQlzdHJpZGUgLz0gaW50ZWxfZmJfc3RyaWRlX2FsaWdu bWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVyLAo+IAkJCQkJCSAgICBmYi0+cGl4ZWxfZm9ybWF0 KTsKPiAJfQo+Cj5AQCAtMzQwNSw3ICszNDA1LDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAJCSAgICBQTEFORV9D VExfUElQRV9DU0NfRU5BQkxFOwo+Cj4gCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2Zvcm1h dChmYi0+cGl4ZWxfZm9ybWF0KTsKPi0JcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfdGlsaW5n KGZiLT5tb2RpZmllclswXSk7Cj4rCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3RpbGluZyhm Yi0+bW9kaWZpZXIpOwo+IAlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FC TEU7Cj4gCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3JvdGF0aW9uKHJvdGF0aW9uKTsKPgo+ QEAgLTg3MzEsNyArODczMSw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+IAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ IAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxFRCkgewo+IAkJCXBsYW5lX2NvbmZpZy0+dGlsaW5n ID0gSTkxNV9USUxJTkdfWDsKPi0JCQlmYi0+bW9kaWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRDsKPisJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiAJ CX0KPiAJfQo+Cj5AQCAtODc2MCw3ICs4NzYwLDcgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4KPiAJYWxpZ25lZF9oZWlnaHQgPSBpbnRl bF9mYl9hbGlnbl9oZWlnaHQoZGV2LCBmYi0+aGVpZ2h0LAo+IAkJCQkJICAgICAgIGZiLT5waXhl bF9mb3JtYXQsCj4tCQkJCQkgICAgICAgZmItPm1vZGlmaWVyWzBdKTsKPisJCQkJCSAgICAgICBm Yi0+bW9kaWZpZXIpOwo+Cj4gCXBsYW5lX2NvbmZpZy0+c2l6ZSA9IGZiLT5waXRjaGVzWzBdICog YWxpZ25lZF9oZWlnaHQ7Cj4KPkBAIC05Nzc0LDE3ICs5Nzc0LDE3IEBAIHNreWxha2VfZ2V0X2lu aXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IAl0aWxpbmcgPSB2 YWwgJiBQTEFORV9DVExfVElMRURfTUFTSzsKPiAJc3dpdGNoICh0aWxpbmcpIHsKPiAJY2FzZSBQ TEFORV9DVExfVElMRURfTElORUFSOgo+LQkJZmItPm1vZGlmaWVyWzBdID0gRFJNX0ZPUk1BVF9N T0RfTk9ORTsKPisJCWZiLT5tb2RpZmllciA9IERSTV9GT1JNQVRfTU9EX05PTkU7Cj4gCQlicmVh azsKPiAJY2FzZSBQTEFORV9DVExfVElMRURfWDoKPiAJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0g STkxNV9USUxJTkdfWDsKPi0JCWZiLT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01PRF9YX1RJ TEVEOwo+KwkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7Cj4gCQlicmVh azsKPiAJY2FzZSBQTEFORV9DVExfVElMRURfWToKPi0JCWZiLT5tb2RpZmllclswXSA9IEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEOwo+KwkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lf VElMRUQ7Cj4gCQlicmVhazsKPiAJY2FzZSBQTEFORV9DVExfVElMRURfWUY6Cj4tCQlmYi0+bW9k aWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ7Cj4rCQlmYi0+bW9kaWZpZXIgPSBJ OTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ7Cj4gCQlicmVhazsKPiAJZGVmYXVsdDoKPiAJCU1JU1NJ TkdfQ0FTRSh0aWxpbmcpOwo+QEAgLTk4MDEsMTMgKzk4MDEsMTMgQEAgc2t5bGFrZV9nZXRfaW5p dGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gCWZiLT53aWR0aCA9 ICgodmFsID4+IDApICYgMHgxZmZmKSArIDE7Cj4KPiAJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1NU UklERShwaXBlLCAwKSk7Cj4tCXN0cmlkZV9tdWx0ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVu dChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLAo+KwlzdHJpZGVfbXVsdCA9IGludGVsX2ZiX3N0 cmlkZV9hbGlnbm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllciwKPiAJCQkJCQlmYi0+cGl4ZWxf Zm9ybWF0KTsKPiAJZmItPnBpdGNoZXNbMF0gPSAodmFsICYgMHgzZmYpICogc3RyaWRlX211bHQ7 Cj4KPiAJYWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoZGV2LCBmYi0+aGVp Z2h0LAo+IAkJCQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQsCj4tCQkJCQkgICAgICAgZmItPm1v ZGlmaWVyWzBdKTsKPisJCQkJCSAgICAgICBmYi0+bW9kaWZpZXIpOwo+Cj4gCXBsYW5lX2NvbmZp Zy0+c2l6ZSA9IGZiLT5waXRjaGVzWzBdICogYWxpZ25lZF9oZWlnaHQ7Cj4KPkBAIC05ODc1LDcg Kzk4NzUsNyBAQCBpcm9ubGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gCQlpZiAo dmFsICYgRElTUFBMQU5FX1RJTEVEKSB7Cj4gCQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1 X1RJTElOR19YOwo+LQkJCWZiLT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVE Owo+KwkJCWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+IAkJfQo+IAl9 Cj4KPkBAIC05OTA0LDcgKzk5MDQsNyBAQCBpcm9ubGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4KPiAJYWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9m Yl9hbGlnbl9oZWlnaHQoZGV2LCBmYi0+aGVpZ2h0LAo+IAkJCQkJICAgICAgIGZiLT5waXhlbF9m b3JtYXQsCj4tCQkJCQkgICAgICAgZmItPm1vZGlmaWVyWzBdKTsKPisJCQkJCSAgICAgICBmYi0+ bW9kaWZpZXIpOwo+Cj4gCXBsYW5lX2NvbmZpZy0+c2l6ZSA9IGZiLT5waXRjaGVzWzBdICogYWxp Z25lZF9oZWlnaHQ7Cj4KPkBAIC0xMTgxMiw3ICsxMTgxMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf Z2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gCQkJTUlfRElTUExBWV9G TElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Cj4gCWludGVsX3JpbmdfZW1pdChyaW5nLCBm Yi0+cGl0Y2hlc1swXSk7Cj4gCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlw X3dvcmstPmd0dF9vZmZzZXQgfAo+LQkJCWludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+ bW9kaWZpZXJbMF0pKTsKPisJCQlpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlm aWVyKSk7Cj4KPiAJLyogWFhYIEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2Ut ZmxpcCBpcyBzbyBmYXIKPiAJICogdW50ZXN0ZWQgb24gbm9uLW5hdGl2ZSBtb2Rlcywgc28gaWdu b3JlIGl0IGZvciBub3cuCj5AQCAtMTE4NDUsNyArMTE4NDUsNyBAQCBzdGF0aWMgaW50IGludGVs X2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IAlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfRElTUExBWV9GTElQIHwKPiAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50 ZWxfY3J0Yy0+cGxhbmUpKTsKPiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBd IHwKPi0JCQlpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlmaWVyWzBdKSk7Cj4r CQkJaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllcikpOwo+IAlpbnRlbF9y aW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKPgo+IAkv KiBDb250cmFyeSB0byB0aGUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24sCj5AQCAt MTE5NTEsNyArMTE5NTEsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZ X0ZMSVBfSTkxNSB8IHBsYW5lX2JpdCk7Cj4gCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0 Y2hlc1swXSB8Cj4tCQkJaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKGZiLT5tb2RpZmllclsw XSkpOwo+KwkJCWludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpKTsKPiAJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7 Cj4gCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfTk9PUCkpOwo+Cj5AQCAtMTE5OTcsNyArMTE5 OTcsNyBAQCBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLAo+Cj4gCWN0bCA9IEk5MTVfUkVBRChQTEFORV9DVEwocGlwZSwgMCkpOwo+IAlj dGwgJj0gflBMQU5FX0NUTF9USUxFRF9NQVNLOwo+LQlzd2l0Y2ggKGZiLT5tb2RpZmllclswXSkg ewo+Kwlzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+IAljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6 Cj4gCQlicmVhazsKPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPkBAIC0xMjAxMCw3 ICsxMjAxMCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gCQljdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1lGOwo+IAkJYnJlYWs7 Cj4gCWRlZmF1bHQ6Cj4tCQlNSVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyWzBdKTsKPisJCU1JU1NJ TkdfQ0FTRShmYi0+bW9kaWZpZXIpOwo+IAl9Cj4KPiAJLyoKPkBAIC0xMjAzNSw3ICsxMjAzNSw3 IEBAIHN0YXRpYyB2b2lkIGlsa19kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMsCj4KPiAJZHNwY250ciA9IEk5MTVfUkVBRChyZWcpOwo+Cj4tCWlmIChmYi0+bW9kaWZp ZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4rCWlmIChmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gCQlkc3BjbnRyIHw9IERJU1BQTEFORV9USUxFRDsK PiAJZWxzZQo+IAkJZHNwY250ciAmPSB+RElTUFBMQU5FX1RJTEVEOwo+QEAgLTEyMjUxLDcgKzEy MjUxLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4KPiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKSB7Cj4gCQllbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW0JDU107Cj4tCQlpZiAo ZmItPm1vZGlmaWVyWzBdICE9IG9sZF9mYi0+bW9kaWZpZXJbMF0pCj4rCQlpZiAoZmItPm1vZGlm aWVyICE9IG9sZF9mYi0+bW9kaWZpZXIpCj4gCQkJLyogdmx2OiBESVNQTEFZX0ZMSVAgZmFpbHMg dG8gY2hhbmdlIHRpbGluZyAqLwo+IAkJCWVuZ2luZSA9IE5VTEw7Cj4gCX0gZWxzZSBpZiAoSVNf SVZZQlJJREdFKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkgewo+QEAgLTEyNDA3 LDcgKzEyNDA3LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfd21fbmVlZF91cGRhdGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCj4gCWlmICghY3VyLT5iYXNlLmZiIHx8ICFuZXctPmJhc2UuZmIpCj4g CQlyZXR1cm4gZmFsc2U7Cj4KPi0JaWYgKGN1ci0+YmFzZS5mYi0+bW9kaWZpZXJbMF0gIT0gbmV3 LT5iYXNlLmZiLT5tb2RpZmllclswXSB8fAo+KwlpZiAoY3VyLT5iYXNlLmZiLT5tb2RpZmllciAh PSBuZXctPmJhc2UuZmItPm1vZGlmaWVyIHx8Cj4gCSAgICBjdXItPmJhc2Uucm90YXRpb24gIT0g bmV3LT5iYXNlLnJvdGF0aW9uIHx8Cj4gCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNy YykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gCSAgICBkcm1fcmVjdF9o ZWlnaHQoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLnNyYykg fHwKPkBAIC0xNTEzOCw3ICsxNTEzOCw3IEBAIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAJCXJldHVybiAtRU5PTUVNOwo+IAl9Cj4KPi0JaWYgKGZi LT5tb2RpZmllclswXSAhPSBEUk1fRk9STUFUX01PRF9OT05FKSB7Cj4rCWlmIChmYi0+bW9kaWZp ZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTk9ORSkgewo+IAkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIGNh bm5vdCBiZSB0aWxlZFxuIik7Cj4gCQlyZXR1cm4gLUVJTlZBTDsKPiAJfQo+ZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmRldi5jCj5pbmRleCBmYzk1OGQ1ZWQwZGMuLmJlYjA4OTgyZGMwYiAxMDA2NDQK Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPkBAIC02MzMsNyArNjMzLDcgQEAgc3RhdGljIGJv b2wgaW50ZWxfZmJkZXZfaW5pdF9iaW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gCQljdXJf c2l6ZSA9IGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3Bs YXk7Cj4gCQljdXJfc2l6ZSA9IGludGVsX2ZiX2FsaWduX2hlaWdodChkZXYsIGN1cl9zaXplLAo+ IAkJCQkJCSBmYi0+YmFzZS5waXhlbF9mb3JtYXQsCj4tCQkJCQkJIGZiLT5iYXNlLm1vZGlmaWVy WzBdKTsKPisJCQkJCQkgZmItPmJhc2UubW9kaWZpZXIpOwo+IAkJY3VyX3NpemUgKj0gZmItPmJh c2UucGl0Y2hlc1swXTsKPiAJCURSTV9ERUJVR19LTVMoInBpcGUgJWMgYXJlYTogJWR4JWQsIGJw cDogJWQsIHNpemU6ICVkXG4iLAo+IAkJCSAgICAgIHBpcGVfbmFtZShpbnRlbF9jcnRjLT5waXBl KSwKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+aW5kZXggMTMzMWJjYzQxODY4Li41NzI5MTk3NzVl Y2UgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4rKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj5AQCAtMzA2NSw3ICszMDY1LDcgQEAgYm9v bCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ IAkJbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4KPiAJCWlmIChz a2xfbmVlZHNfbWVtb3J5X2J3X3dhKGludGVsX3N0YXRlKSAmJgo+LQkJICAgIHBsYW5lLT5iYXNl LnN0YXRlLT5mYi0+bW9kaWZpZXJbMF0gPT0KPisJCSAgICBwbGFuZS0+YmFzZS5zdGF0ZS0+ZmIt Pm1vZGlmaWVyID09Cj4gCQkgICAgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gCQkJbGF0ZW5j eSArPSAxNTsKPgo+QEAgLTMzMjUsOCArMzMyNSw4IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKPiAJCXJldHVybiAwOwo+Cj4gCS8qIEZv ciBOb24gWS10aWxlIHJldHVybiA4LWJsb2NrcyAqLwo+LQlpZiAoZmItPm1vZGlmaWVyWzBdICE9 IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEICYmCj4tCSAgICBmYi0+bW9kaWZpZXJbMF0gIT0gSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEKQo+KwlpZiAoZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEICYmCj4rCSAgICBmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEKQo+IAkJcmV0dXJuIDg7Cj4KPiAJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxf cHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj5AQCAtMzU5NSw3ICszNTk1LDcgQEAgc3RhdGljIGlu dCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gCQlyZXR1cm4gMDsKPiAJfQo+Cj4tCWlmIChhcHBseV9tZW1vcnlfYndfd2EgJiYg ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+KwlpZiAoYXBwbHlf bWVtb3J5X2J3X3dhICYmIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkK PiAJCWxhdGVuY3kgKz0gMTU7Cj4KPiAJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0 YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj5AQCAtMzYzNCwxMiArMzYzNCwxMiBAQCBzdGF0aWMgaW50 IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAJCXlfbWluX3NjYW5saW5lcyAqPSAyOwo+Cj4gCXBsYW5lX2J5dGVzX3Blcl9saW5l ID0gd2lkdGggKiBjcHA7Cj4tCWlmIChmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQgfHwKPi0JICAgIGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQpIHsKPisJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8 fAo+KwkgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+IAkJ cGxhbmVfYmxvY2tzX3Blcl9saW5lID0KPiAJCSAgICAgIERJVl9ST1VORF9VUChwbGFuZV9ieXRl c19wZXJfbGluZSAqIHlfbWluX3NjYW5saW5lcywgNTEyKTsKPiAJCXBsYW5lX2Jsb2Nrc19wZXJf bGluZSAvPSB5X21pbl9zY2FubGluZXM7Cj4tCX0gZWxzZSBpZiAoZmItPm1vZGlmaWVyWzBdID09 IERSTV9GT1JNQVRfTU9EX05PTkUpIHsKPisJfSBlbHNlIGlmIChmYi0+bW9kaWZpZXIgPT0gRFJN X0ZPUk1BVF9NT0RfTk9ORSkgewo+IAkJcGxhbmVfYmxvY2tzX3Blcl9saW5lID0gRElWX1JPVU5E X1VQKHBsYW5lX2J5dGVzX3Blcl9saW5lLCA1MTIpCj4gCQkJCQkrIDE7Cj4gCX0gZWxzZSB7Cj5A QCAtMzY1NCw4ICszNjU0LDggQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4KPiAJeV90aWxlX21pbmltdW0g PSBwbGFuZV9ibG9ja3NfcGVyX2xpbmUgKiB5X21pbl9zY2FubGluZXM7Cj4KPi0JaWYgKGZiLT5t b2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+LQkgICAgZmItPm1vZGlm aWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+KwlpZiAoZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4rCSAgICBmYi0+bW9kaWZpZXIgPT0gSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7Cj4gCQlzZWxlY3RlZF9yZXN1bHQgPSBtYXgobWV0aG9k MiwgeV90aWxlX21pbmltdW0pOwo+IAl9IGVsc2Ugewo+IAkJaWYgKChjcHAgKiBjc3RhdGUtPmJh c2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCAvIDUxMiA8IDEpICYmCj5AQCAtMzY3MSw4ICsz NjcxLDggQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gCXJlc19saW5lcyA9IERJVl9ST1VORF9VUChzZWxl Y3RlZF9yZXN1bHQsIHBsYW5lX2Jsb2Nrc19wZXJfbGluZSk7Cj4KPiAJaWYgKGxldmVsID49IDEg JiYgbGV2ZWwgPD0gNykgewo+LQkJaWYgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRCB8fAo+LQkJICAgIGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQpIHsKPisJCWlmIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQgfHwKPisJCSAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7 Cj4gCQkJcmVzX2Jsb2NrcyArPSB5X3RpbGVfbWluaW11bTsKPiAJCQlyZXNfbGluZXMgKz0geV9t aW5fc2NhbmxpbmVzOwo+IAkJfSBlbHNlIHsKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj5pbmRleCBjMmI2MjljOTIyZTcuLjhmMTMxYTA4ZDQ0MCAxMDA2NDQKPi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+QEAgLTIyNCw3ICsyMjQsNyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiAJCVBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEU7Cj4K PiAJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfZm9ybWF0KGZiLT5waXhlbF9mb3JtYXQpOwo+ LQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF90aWxpbmcoZmItPm1vZGlmaWVyWzBdKTsKPisJ cGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfdGlsaW5nKGZiLT5tb2RpZmllcik7Cj4KPiAJcGxh bmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfcm90YXRpb24ocm90YXRpb24pOwo+Cj5AQCAtNDA2LDcg KzQwNiw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAo+IAkg Ki8KPiAJc3ByY3RsIHw9IFNQX0dBTU1BX0VOQUJMRTsKPgo+LQlpZiAoZmItPm1vZGlmaWVyWzBd ID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+KwlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9YX1RJTEVEKQo+IAkJc3ByY3RsIHw9IFNQX1RJTEVEOwo+Cj4gCWlmIChyb3Rh dGlvbiAmIERSTV9ST1RBVEVfMTgwKQo+QEAgLTQ0OCw3ICs0NDgsNyBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwKPiAJSTkxNV9XUklURShTUFNUUklERShwaXBl LCBwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKPiAJSTkxNV9XUklURShTUFBPUyhwaXBlLCBwbGFu ZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPgo+LQlpZiAoZmItPm1vZGlmaWVyWzBdID09 IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+KwlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9YX1RJTEVEKQo+IAkJSTkxNV9XUklURShTUFRJTEVPRkYocGlwZSwgcGxhbmUpLCAo eSA8PCAxNikgfCB4KTsKPiAJZWxzZQo+IAkJSTkxNV9XUklURShTUExJTk9GRihwaXBlLCBwbGFu ZSksIGxpbmVhcl9vZmZzZXQpOwo+QEAgLTUzMSw3ICs1MzEsNyBAQCBpdmJfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IAkgKi8KPiAJc3ByY3RsIHw9IFNQUklURV9HQU1N QV9FTkFCTEU7Cj4KPi0JaWYgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9U SUxFRCkKPisJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiAJ CXNwcmN0bCB8PSBTUFJJVEVfVElMRUQ7Cj4KPiAJaWYgKHJvdGF0aW9uICYgRFJNX1JPVEFURV8x ODApCj5AQCAtNTg0LDcgKzU4NCw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gCSAqIHJlZ2lzdGVyICovCj4gCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IAkJSTkxNV9XUklURShTUFJPRkZTRVQocGlwZSks ICh5IDw8IDE2KSB8IHgpOwo+LQllbHNlIGlmIChmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQpCj4rCWVsc2UgaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9N T0RfWF9USUxFRCkKPiAJCUk5MTVfV1JJVEUoU1BSVElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwg eCk7Cj4gCWVsc2UKPiAJCUk5MTVfV1JJVEUoU1BSTElOT0ZGKHBpcGUpLCBsaW5lYXJfb2Zmc2V0 KTsKPkBAIC02NjksNyArNjY5LDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAJICovCj4gCWR2c2NudHIgfD0gRFZTX0dBTU1BX0VOQUJMRTsKPgo+LQlpZiAo ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+KwlpZiAoZmItPm1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+IAkJZHZzY250ciB8PSBEVlNfVElM RUQ7Cj4KPiAJaWYgKHJvdGF0aW9uICYgRFJNX1JPVEFURV8xODApCj5AQCAtNzEyLDcgKzcxMiw3 IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gCUk5MTVfV1JJ VEUoRFZTU1RSSURFKHBpcGUpLCBmYi0+cGl0Y2hlc1swXSk7Cj4gCUk5MTVfV1JJVEUoRFZTUE9T KHBpcGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4KPi0JaWYgKGZiLT5tb2RpZmllclsw XSA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPisJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiAJCUk5MTVfV1JJVEUoRFZTVElMRU9GRihwaXBlKSwgKHkg PDwgMTYpIHwgeCk7Cj4gCWVsc2UKPiAJCUk5MTVfV1JJVEUoRFZTTElOT0ZGKHBpcGUpLCBsaW5l YXJfb2Zmc2V0KTsKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA0L21k cDRfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDQvbWRwNF9wbGFuZS5jCj5p bmRleCAzOTAzZGJjZGE3NjMuLjkxMWU0NjkwZDM2YSAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vbWRwL21kcDQvbWRwNF9wbGFuZS5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21kcC9tZHA0L21kcDRfcGxhbmUuYwo+QEAgLTQwLDcgKzQwLDcgQEAgZW51bSBtZHA0X2ZyYW1l X2Zvcm1hdCBtZHA0X2dldF9mcmFtZV9mb3JtYXQoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp Cj4gewo+IAlib29sIGlzX3RpbGUgPSBmYWxzZTsKPgo+LQlpZiAoZmItPm1vZGlmaWVyWzFdID09 IERSTV9GT1JNQVRfTU9EX1NBTVNVTkdfNjRfMzJfVElMRSkKPisJaWYgKGZiLT5tb2RpZmllciA9 PSBEUk1fRk9STUFUX01PRF9TQU1TVU5HXzY0XzMyX1RJTEUpCj4gCQlpc190aWxlID0gdHJ1ZTsK Pgo+IAlpZiAoZmItPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgaXNfdGlsZSkK PmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZnJhbWVidWZmZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9mcmFtZWJ1ZmZlci5oCj5pbmRleCBmNWFlMWY0MzZhNGIuLmIzMTQxYTBlNjA5YiAxMDA2 NDQKPi0tLSBhL2luY2x1ZGUvZHJtL2RybV9mcmFtZWJ1ZmZlci5oCj4rKysgYi9pbmNsdWRlL2Ry bS9kcm1fZnJhbWVidWZmZXIuaAo+QEAgLTE0OSwxMiArMTQ5LDEyIEBAIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgewo+IAkgKi8KPiAJdW5zaWduZWQgaW50IG9mZnNldHNbNF07Cj4gCS8qKgo+LQkg KiBAbW9kaWZpZXI6IERhdGEgbGF5b3V0IG1vZGlmaWVyLCBwZXIgYnVmZmVyLiBUaGlzIGlzIHVz ZWQgdG8gZGVzY3JpYmUKPisJICogQG1vZGlmaWVyOiBEYXRhIGxheW91dCBtb2RpZmllci4gVGhp cyBpcyB1c2VkIHRvIGRlc2NyaWJlCj4gCSAqIHRpbGluZywgb3IgYWxzbyBzcGVjaWFsIGxheW91 dHMgKGxpa2UgY29tcHJlc3Npb24pIG9mIGF1eGlsaWFyeQo+IAkgKiBidWZmZXJzLiBGb3IgdXNl cnNwYWNlIGNyZWF0ZWQgb2JqZWN0IHRoaXMgaXMgY29waWVkIGZyb20KPiAJICogZHJtX21vZGVf ZmJfY21kMi4KPiAJICovCj4tCXVpbnQ2NF90IG1vZGlmaWVyWzRdOwo+Kwl1aW50NjRfdCBtb2Rp ZmllcjsKPiAJLyoqCj4gCSAqIEB3aWR0aDogTG9naWNhbCB3aWR0aCBvZiB0aGUgdmlzaWJsZSBh cmVhIG9mIHRoZSBmcmFtZWJ1ZmZlciwgaW4KPiAJICogcGl4ZWxzLgo+ZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ aW5kZXggMDEwMDBjOWY3YzJjLi43NjIwYmIxNWVjNGYgMTAwNjQ0Cj4tLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2RybV9tb2RlLmgKPisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+QEAg LTQxNCwxNyArNDE0LDIwIEBAIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKPiAJICogb2Zmc2V0 c1sxXS4gIE5vdGUgdGhhdCBvZmZzZXRzWzBdIHdpbGwgZ2VuZXJhbGx5Cj4gCSAqIGJlIDAgKGJ1 dCB0aGlzIGlzIG5vdCByZXF1aXJlZCkuCj4gCSAqCj4tCSAqIFRvIGFjY29tbW9kYXRlIHRpbGVk LCBjb21wcmVzc2VkLCBldGMgZm9ybWF0cywgYSBwZXItcGxhbmUKPisJICogVG8gYWNjb21tb2Rh dGUgdGlsZWQsIGNvbXByZXNzZWQsIGV0YyBmb3JtYXRzLCBhCj4gCSAqIG1vZGlmaWVyIGNhbiBi ZSBzcGVjaWZpZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB6ZXJvCj4gCSAqIGluZGljYXRlcyAi bmF0aXZlIiBmb3JtYXQgYXMgc3BlY2lmaWVkIGJ5IHRoZSBmb3VyY2MuCj4tCSAqIFZlbmRvciBz cGVjaWZpYyBtb2RpZmllciB0b2tlbi4gIFRoaXMgYWxsb3dzLCBmb3IgZXhhbXBsZSwKPi0JICog ZGlmZmVyZW50IHRpbGluZy9zd2l6emxpbmcgcGF0dGVybiBvbiBkaWZmZXJlbnQgcGxhbmVzLgo+ LQkgKiBTZWUgZGlzY3Vzc2lvbiBhYm92ZSBvZiBEUk1fRk9STUFUX01PRF94eHguCj4rCSAqIFZl bmRvciBzcGVjaWZpYyBtb2RpZmllciB0b2tlbi4gIE5vdGUgdGhhdCBldmVuIHRob3VnaAo+Kwkg KiBpdCBsb29rcyBsaWtlIHdlIGhhdmUgYSBtb2RpZmllciBwZXItcGxhbmUsIHdlIGluIGZhY3QK PisJICogZG8gbm90LiBUaGUgbW9kaWZpZXIgZm9yIGVhY2ggcGxhbmUgbXVzdCBiZSBpZGVudGlj YWwuCj4rCSAqIFRodXMgYWxsIGNvbWJpbmF0aW9ucyBvZiBkaWZmZXJlbnQgZGF0YSBsYXlvdXRz IGZvcgo+KwkgKiBtdWx0aSBwbGFuZSBmb3JtYXRzIG11c3QgYmUgZW51bWVyYXRlZCBhcyBzZXBh cmF0ZQo+KwkgKiBtb2RpZmllcnMuCj4gCSAqLwo+IAlfX3UzMiBoYW5kbGVzWzRdOwo+IAlfX3Uz MiBwaXRjaGVzWzRdOyAvKiBwaXRjaCBmb3IgZWFjaCBwbGFuZSAqLwo+IAlfX3UzMiBvZmZzZXRz WzRdOyAvKiBvZmZzZXQgb2YgZWFjaCBwbGFuZSAqLwo+LQlfX3U2NCBtb2RpZmllcls0XTsgLyog aWUsIHRpbGluZywgY29tcHJlc3NlZCAocGVyIHBsYW5lKSAqLwo+KwlfX3U2NCBtb2RpZmllcls0 XTsgLyogaWUsIHRpbGluZywgY29tcHJlc3MgKi8KPiB9Owo+Cj4gI2RlZmluZSBEUk1fTU9ERV9G Ql9ESVJUWV9BTk5PVEFURV9DT1BZIDB4MDEKPi0tIAo+Mi43LjQKPgoKLS0gCkJlbiBXaWRhd3Nr eSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==