From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v2 04/10] drm/i915: Constify power well descriptors Date: Mon, 06 Aug 2018 15:52:28 -0700 Message-ID: <1533595948.2640.5.camel@intel.com> References: <20180806095843.13294-1-imre.deak@intel.com> <20180806095843.13294-5-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 D7CBB6E366 for ; Mon, 6 Aug 2018 22:52:29 +0000 (UTC) In-Reply-To: <20180806095843.13294-5-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak , intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org RW0gU2VnLCAyMDE4LTA4LTA2IMOgcyAxMjo1OCArMDMwMCwgSW1yZSBEZWFrIGVzY3JldmV1Ogo+ IEl0IG1ha2VzIHNlbnNlIHRvIGtlZXAgdW5jaGFuZ2luZyBkYXRhIGNvbnN0LiBFeHRyYWN0IHN1 Y2ggZmllbGRzCj4gZnJvbQo+IHRoZSBpOTE1X3Bvd2VyX3dlbGwgc3RydWN0IGludG8gYSBuZXcg aTkxNV9wb3dlcl93ZWxsX2Rlc2Mgc3RydWN0Cj4gdGhhdAo+IHdlIGluaXRpYWxpemUgZHVyaW5n IGNvbXBpbGUgdGltZS4gRm9yIHRoZSByZXN0IG9mIHRoZSBkeW5hbWljCj4gZmllbGRzIGFsbG9j YXRlIGFuIGFycmF5IG9mIGk5MTVfcG93ZXJfd2VsbCBvYmplY3RzIGluIGk5MTUgZGV2X3ByaXYs Cj4gYW5kIGxpbmsgdG8gZWFjaCBvZiB0aGVzZSBvYmplY3RzIHRoZWlyIGNvcnJlc3BvbmRpbmcK PiBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBvYmplY3QuCj4gCj4gdjI6Cj4gLSBGaXggY2hlY2twYXRj aCB3YXJuaW5ncyBhYm91dCBtaXNzaW5nIHBhcmFtIG5hbWUgaW4gZm4gZGVjbGFyYXRpb24KPiBh bmQKPiAgIGxpbmVzIG92ZXIgODAgY2hhcnMuIChQYXVsbykKPiAtIE1vdmUgY2hlY2sgZm9yIHVu aXF1ZSBJRHMgdG8gX19zZXRfcG93ZXJfd2VsbHMoKS4KPiAKPiBDYzogVmlsbGUgU3lyamFsYSA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8u ci56YW5vbmlAaW50ZWwuY29tPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwu Y29tPgo+IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiBS ZXZpZXdlZC1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ICh2MSkK ClItQiBzdGlsbCB2YWxpZCBmb3IgdjIgKG9yIHYzKSBhcyBsb25nIGFzIHRoZSBrY2FsbG9jIGNo ZWNrcGF0Y2ggaXNzdWUKaXMgZml4ZWQuCgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgICAgICAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgfCAgMTQgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku aCAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAg fCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgICAgICAgfCAgIDYg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMjA1ICsrKysr KysrKysrKysrKysrKy0tCj4gLS0tLS0tLS0tLS0tCj4gIDcgZmlsZXMgY2hhbmdlZCwgMTQwIGlu c2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gaW5kZXggZjljZTM1ZGE0MTIzLi4yM2YzOGJjMjU3YTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yODQ1LDEwICsyODQ1LDEwIEBAIHN0YXRp YyBpbnQgaTkxNV9wb3dlcl9kb21haW5faW5mbyhzdHJ1Y3QKPiBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+ICAJCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWlu Owo+ICAKPiAgCQlwb3dlcl93ZWxsID0gJnBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxzW2ldOwo+ IC0JCXNlcV9wcmludGYobSwgIiUtMjVzICVkXG4iLCBwb3dlcl93ZWxsLT5uYW1lLAo+ICsJCXNl cV9wcmludGYobSwgIiUtMjVzICVkXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lLAo+ICAJCQkg ICBwb3dlcl93ZWxsLT5jb3VudCk7Cj4gIAo+IC0JCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihwb3dl cl9kb21haW4sIHBvd2VyX3dlbGwtCj4gPmRvbWFpbnMpCj4gKwkJZm9yX2VhY2hfcG93ZXJfZG9t YWluKHBvd2VyX2RvbWFpbiwgcG93ZXJfd2VsbC0KPiA+ZGVzYy0+ZG9tYWlucykKPiAgCQkJc2Vx X3ByaW50ZihtLCAiICAlLTIzcyAlZFxuIiwKPiAgCQkJCSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2Rv bWFpbl9zdHIocG93ZQo+IHJfZG9tYWluKSwKPiAgCQkJCSBwb3dlcl9kb21haW5zLQo+ID5kb21h aW5fdXNlX2NvdW50W3Bvd2VyX2RvbWFpbl0pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggZTkyZjM3NDUyMWZjLi5lOGRmODE4MGJlMzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtOTI0LDcgKzkyNCw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9l YXJseShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWludGVsX3VjX2lu aXRfZWFybHkoZGV2X3ByaXYpOwo+ICAJaW50ZWxfcG1fc2V0dXAoZGV2X3ByaXYpOwo+ICAJaW50 ZWxfaW5pdF9kcGlvKGRldl9wcml2KTsKPiAtCWludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChkZXZf cHJpdik7Cj4gKwlyZXQgPSBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoZGV2X3ByaXYpOwo+ICsJ aWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfdWM7Cj4gIAlpbnRlbF9pcnFfaW5pdChkZXZfcHJp dik7Cj4gIAlpbnRlbF9oYW5nY2hlY2tfaW5pdChkZXZfcHJpdik7Cj4gIAlpbnRlbF9pbml0X2Rp c3BsYXlfaG9va3MoZGV2X3ByaXYpOwo+IEBAIC05MzYsNiArOTM4LDkgQEAgc3RhdGljIGludCBp OTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAKPiAgCXJldHVybiAwOwo+ICAKPiArZXJyX3VjOgo+ICsJaW50ZWxfdWNfY2xlYW51cF9l YXJseShkZXZfcHJpdik7Cj4gKwlpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKPiAg ZXJyX3dvcmtxdWV1ZXM6Cj4gIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7Cj4g IGVycl9lbmdpbmVzOgo+IEBAIC05NTAsNiArOTU1LDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZl cl9pbml0X2Vhcmx5KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0 aWMgdm9pZCBpOTE1X2RyaXZlcl9jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gKmRldl9wcml2KQo+ICB7Cj4gIAlpbnRlbF9pcnFfZmluaShkZXZfcHJpdik7Cj4gKwlpbnRl bF9wb3dlcl9kb21haW5zX2NsZWFudXAoZGV2X3ByaXYpOwo+ICAJaW50ZWxfdWNfY2xlYW51cF9l YXJseShkZXZfcHJpdik7Cj4gIAlpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKPiAg CWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IDRhY2E1MzQ0ODYzZC4uODVhZDE5MDlmNWYwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gQEAgLTg2OCwxMyArODY4LDkgQEAgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bF9vcHMgewo+ICB9Owo+ICAKPiAgLyogUG93ZXIgd2VsbCBzdHJ1Y3R1cmUgZm9yIGhhc3dlbGwg Ki8KPiAtc3RydWN0IGk5MTVfcG93ZXJfd2VsbCB7Cj4gK3N0cnVjdCBpOTE1X3Bvd2VyX3dlbGxf ZGVzYyB7Cj4gIAljb25zdCBjaGFyICpuYW1lOwo+ICAJYm9vbCBhbHdheXNfb247Cj4gLQkvKiBw b3dlciB3ZWxsIGVuYWJsZS9kaXNhYmxlIHVzYWdlIGNvdW50ICovCj4gLQlpbnQgY291bnQ7Cj4g LQkvKiBjYWNoZWQgaHcgZW5hYmxlZCBzdGF0ZSAqLwo+IC0JYm9vbCBod19lbmFibGVkOwo+ICAJ dTY0IGRvbWFpbnM7Cj4gIAkvKiB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBwb3dlciB3ZWxs ICovCj4gIAllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZDsKPiBAQCAtODk3LDYgKzg5MywxNCBA QCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKPiAgCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGxfb3BzICpvcHM7Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKPiArCWNv bnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyAqZGVzYzsKPiArCS8qIHBvd2VyIHdlbGwg ZW5hYmxlL2Rpc2FibGUgdXNhZ2UgY291bnQgKi8KPiArCWludCBjb3VudDsKPiArCS8qIGNhY2hl ZCBodyBlbmFibGVkIHN0YXRlICovCj4gKwlib29sIGh3X2VuYWJsZWQ7Cj4gK307Cj4gKwo+ICBz dHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHsKPiAgCS8qCj4gIAkgKiBQb3dlciB3ZWxscyBuZWVk ZWQgZm9yIGluaXRpYWxpemF0aW9uIGF0IGRyaXZlciBpbml0IGFuZAo+IHN1c3BlbmQKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiBpbmRleCAwYTc5YTQ2ZDU4MDUuLjZhMjhi YWM3MTEyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiBAQCAtMzI5 LDExICszMjksMTEgQEAgc3RydWN0IGludGVsX2xpbmtfbV9uIHsKPiAgCj4gICNkZWZpbmUgZm9y X2VhY2hfcG93ZXJfZG9tYWluX3dlbGwoX19kZXZfcHJpdiwgX19wb3dlcl93ZWxsLAo+IF9fZG9t YWluX21hc2spCVwKPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGwoX19kZXZfcHJpdiwgX19wb3dlcl93 ZWxsKQkJCj4gCQlcCj4gLQkJZm9yX2VhY2hfaWYoKF9fcG93ZXJfd2VsbCktPmRvbWFpbnMgJgo+ IChfX2RvbWFpbl9tYXNrKSkKPiArCQlmb3JfZWFjaF9pZigoX19wb3dlcl93ZWxsKS0+ZGVzYy0+ ZG9tYWlucyAmCj4gKF9fZG9tYWluX21hc2spKQo+ICAKPiAgI2RlZmluZSBmb3JfZWFjaF9wb3dl cl9kb21haW5fd2VsbF9yZXYoX19kZXZfcHJpdiwgX19wb3dlcl93ZWxsLAo+IF9fZG9tYWluX21h c2spIFwKPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGxfcmV2KF9fZGV2X3ByaXYsIF9fcG93ZXJfd2Vs bCkJCQo+ICAgICAgICAgXAo+IC0JCWZvcl9lYWNoX2lmKChfX3Bvd2VyX3dlbGwpLT5kb21haW5z ICYKPiAoX19kb21haW5fbWFzaykpCj4gKwkJZm9yX2VhY2hfaWYoKF9fcG93ZXJfd2VsbCktPmRl c2MtPmRvbWFpbnMgJgo+IChfX2RvbWFpbl9tYXNrKSkKPiAgCj4gICNkZWZpbmUgZm9yX2VhY2hf bmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKF9fc3RhdGUsIHBsYW5lLAo+IG5ld19wbGFuZV9zdGF0 ZSwgX19pKSBcCj4gIAlmb3IgKChfX2kpID0gMDsgXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBpbmRleCAzNTc2YWI1NzM1YjEuLjA2MDFhYmI4YzcxZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gQEAgLTE5NDgsNiArMTk0OCw3IEBAIGludCBpbnRlbF9wc3Jfd2FpdF9m b3JfaWRsZShjb25zdCBzdHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7 Cj4gIAo+ICAvKiBpbnRlbF9ydW50aW1lX3BtLmMgKi8KPiAgaW50IGludGVsX3Bvd2VyX2RvbWFp bnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKPiArdm9pZCBpbnRlbF9wb3dlcl9k b21haW5zX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9p ZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+IGJvb2wgcmVzdW1lKTsKPiAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2Zpbmlf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9wb3dl cl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiBpbmRleCAwY2M2YTg2MWJjZjguLjI2ZTQ4ZmM5 NTU0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiBAQCAtNTcsOSArNTcsOSBA QCBzdGF0aWMgYm9vbCBoZGNwX2tleV9sb2FkYWJsZShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAkvKiBQRzEgKHBvd2VyIHdlbGwgIzEpIG5lZWRzIHRvIGJlIGVu YWJsZWQgKi8KPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGwpIHsK PiAtCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gaWQpIHsKPiAtCQkJZW5hYmxlZCA9IHBvd2VyX3dl bGwtPm9wcy0KPiA+aXNfZW5hYmxlZChkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICAgIHBvd2VyXwo+ IHdlbGwpOwo+ICsJCWlmIChwb3dlcl93ZWxsLT5kZXNjLT5pZCA9PSBpZCkgewo+ICsJCQllbmFi bGVkID0gcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLQo+ID5pc19lbmFibGVkKGRldl9wcml2LAo+ICsJ CQkJCQkJCSAgICAKPiBwb3dlcl93ZWxsKTsKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+ICAJfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IGluZGV4IGIyZDE4MmNjMzMx OS4uYTg5MTYwOTBhODVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwo+IEBAIC0xNTksMTcgKzE1OSwxNyBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9z dHIoZW51bQo+IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKPiAgc3RhdGljIHZv aWQgaW50ZWxfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2 X3ByaXYsCj4gIAkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ ICB7Cj4gLQlEUk1fREVCVUdfS01TKCJlbmFibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7 Cj4gLQlwb3dlcl93ZWxsLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwlE Uk1fREVCVUdfS01TKCJlbmFibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSk7Cj4g Kwlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4g IAlwb3dlcl93ZWxsLT5od19lbmFibGVkID0gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg aW50ZWxfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9w cml2LAo+ICAJCQkJICAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwpCj4g IHsKPiAtCURSTV9ERUJVR19LTVMoImRpc2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7 Cj4gKwlEUk1fREVCVUdfS01TKCJkaXNhYmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwtPmRlc2MtPm5h bWUpOwo+ICAJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IGZhbHNlOwo+IC0JcG93ZXJfd2VsbC0+ b3BzLT5kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiArCXBvd2VyX3dlbGwtPmRlc2Mt Pm9wcy0+ZGlzYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2 b2lkIGludGVsX3Bvd2VyX3dlbGxfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiBAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfcHV0 KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJIHN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gIHsKPiAgCVdBUk4oIXBvd2VyX3dlbGwtPmNvdW50 LCAiVXNlIGNvdW50IG9uIHBvd2VyIHdlbGwgJXMgaXMKPiBhbHJlYWR5IHplcm8iLAo+IC0JICAg ICBwb3dlcl93ZWxsLT5uYW1lKTsKPiArCSAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSk7Cj4g IAo+ICAJaWYgKCEtLXBvd2VyX3dlbGwtPmNvdW50KQo+ICAJCWludGVsX3Bvd2VyX3dlbGxfZGlz YWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIF9f aW50ZWxfZGlzcGxheV9wb3dlcl9pc19lbmFibGVkKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJaXNfZW5hYmxlZCA9IHRydWU7Cj4gIAo+ICAJZm9yX2VhY2hfcG93ZXJf ZG9tYWluX3dlbGxfcmV2KGRldl9wcml2LCBwb3dlcl93ZWxsLAo+IEJJVF9VTEwoZG9tYWluKSkg ewo+IC0JCWlmIChwb3dlcl93ZWxsLT5hbHdheXNfb24pCj4gKwkJaWYgKHBvd2VyX3dlbGwtPmRl c2MtPmFsd2F5c19vbikKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWlmICghcG93ZXJfd2VsbC0+ aHdfZW5hYmxlZCkgewo+IEBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bvd2Vy X3dlbGxfcHJlX2Rpc2FibGUoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IHN0YXRpYyB2b2lkIGhzd193YWl0X2Zvcl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs Cj4gKnBvd2VyX3dlbGwpCj4gIHsKPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93 ZXJfd2VsbC0+aWQ7Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwt PmRlc2MtPmlkOwo+ICAKPiAgCS8qIFRpbWVvdXQgZm9yIFBXMToxMCB1cywgQVVYOm5vdCBzcGVj aWZpZWQsIG90aGVyIFBXczoyMAo+IHVzLiAqLwo+ICAJV0FSTl9PTihpbnRlbF93YWl0X2Zvcl9y ZWdpc3RlcihkZXZfcHJpdiwKPiBAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB1MzIgaHN3X3Bv d2VyX3dlbGxfcmVxdWVzdGVycyhzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgc3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJf d2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9 IHBvd2VyX3dlbGwtPmlkOwo+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93 ZWxsLT5kZXNjLT5pZDsKPiAgCWJvb2wgZGlzYWJsZWQ7Cj4gIAl1MzIgcmVxczsKPiAgCj4gQEAg LTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgdm9pZAo+IGhzd193YWl0X2Zvcl9wb3dlcl93ZWxsX2Rp c2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJldHVybjsKPiAg Cj4gIAlEUk1fREVCVUdfS01TKCIlcyBmb3JjZWQgb24gKGJpb3M6JWQgZHJpdmVyOiVkIGt2bXI6 JWQKPiBkZWJ1ZzolZClcbiIsCj4gLQkJICAgICAgcG93ZXJfd2VsbC0+bmFtZSwKPiArCQkgICAg ICBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lLAo+ICAJCSAgICAgICEhKHJlcXMgJiAxKSwgISEocmVx cyAmIDIpLCAhIShyZXFzICYgNCksCj4gISEocmVxcyAmIDgpKTsKPiAgfQo+ICAKPiBAQCAtMzg2 LDggKzM4Niw4IEBAIHN0YXRpYyB2b2lkIGdlbjlfd2FpdF9mb3JfcG93ZXJfd2VsbF9mdXNlcyhz dHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgaHN3X3Bv d2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJ CSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gLQllbnVtIGk5 MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwo+IC0JYm9vbCB3YWl0X2Z1c2Vz ID0gcG93ZXJfd2VsbC0+aHN3Lmhhc19mdXNlczsKPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lk IGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gKwlib29sIHdhaXRfZnVzZXMgPSBwb3dlcl93 ZWxsLT5kZXNjLT5oc3cuaGFzX2Z1c2VzOwo+ICAJZW51bSBza2xfcG93ZXJfZ2F0ZSB1bmluaXRp YWxpemVkX3ZhcihwZyk7Cj4gIAl1MzIgdmFsOwo+ICAKPiBAQCAtNDIxLDE3ICs0MjEsMTkgQEAg c3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJaWYgKHdhaXRfZnVzZXMpCj4gIAkJZ2VuOV93YWl0X2Zvcl9wb3dl cl93ZWxsX2Z1c2VzKGRldl9wcml2LCBwZyk7Cj4gIAo+IC0JaHN3X3Bvd2VyX3dlbGxfcG9zdF9l bmFibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtCj4gPmhzdy5pcnFfcGlwZV9tYXNrLAo+IC0JCQkJ ICAgcG93ZXJfd2VsbC0+aHN3Lmhhc192Z2EpOwo+ICsJaHN3X3Bvd2VyX3dlbGxfcG9zdF9lbmFi bGUoZGV2X3ByaXYsCj4gKwkJCQkgICBwb3dlcl93ZWxsLT5kZXNjLQo+ID5oc3cuaXJxX3BpcGVf bWFzaywKPiArCQkJCSAgIHBvd2VyX3dlbGwtPmRlc2MtPmhzdy5oYXNfdmdhKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93 ZXJfd2VsbCkKPiAgewo+IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxs LT5pZDsKPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+ aWQ7Cj4gIAl1MzIgdmFsOwo+ICAKPiAtCWhzd19wb3dlcl93ZWxsX3ByZV9kaXNhYmxlKGRldl9w cml2LCBwb3dlcl93ZWxsLQo+ID5oc3cuaXJxX3BpcGVfbWFzayk7Cj4gKwloc3dfcG93ZXJfd2Vs bF9wcmVfZGlzYWJsZShkZXZfcHJpdiwKPiArCQkJCSAgIHBvd2VyX3dlbGwtPmRlc2MtCj4gPmhz dy5pcnFfcGlwZV9tYXNrKTsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0NU TF9EUklWRVIoaWQpKTsKPiAgCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0NUTF9EUklWRVIoaWQp LAo+IEBAIC00NDUsNyArNDQ3LDcgQEAgc3RhdGljIHZvaWQKPiAgaWNsX2NvbWJvX3BoeV9hdXhf cG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4g IAkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gLQll bnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwo+ICsJZW51bSBpOTE1 X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKPiAgCWVudW0gcG9ydCBw b3J0ID0gSUNMX0FVWF9QV19UT19QT1JUKGlkKTsKPiAgCXUzMiB2YWw7Cj4gIAo+IEBAIC00NjIs NyArNDY0LDcgQEAgc3RhdGljIHZvaWQKPiAgaWNsX2NvbWJvX3BoeV9hdXhfcG93ZXJfd2VsbF9k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCQkJICAgICBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwpCj4gIHsKPiAtCWVudW0gaTkxNV9w b3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBJQ0xf QVVYX1BXX1RPX1BPUlQoaWQpOwo+ICAJdTMyIHZhbDsKPiAgCj4gQEAgLTQ4NCw3ICs0ODYsNyBA QCBpY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0Cj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyBib29sIGhzd19wb3dlcl93ZWxsX2VuYWJsZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gIAkJCQkgICBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwpCj4gIHsKPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9 IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ICAJdTMyIG1hc2sgPSBIU1dfUFdSX1dFTExfQ1RMX1JF UShpZCkgfAo+IEhTV19QV1JfV0VMTF9DVExfU1RBVEUoaWQpOwo+ICAKPiAgCXJldHVybiAoSTkx NV9SRUFEKEhTV19QV1JfV0VMTF9DVExfRFJJVkVSKGlkKSkgJiBtYXNrKSA9PQo+IG1hc2s7Cj4g QEAgLTcyMyw3ICs3MjUsNyBAQCBzdGF0aWMgdm9pZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QKPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxf c3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCSAgIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JZW51bSBpOTE1X3Bv d2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiArCWVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gIAl1MzIgbWFzayA9IEhTV19QV1JfV0VM TF9DVExfUkVRKGlkKTsKPiAgCXUzMiBiaW9zX3JlcSA9IEk5MTVfUkVBRChIU1dfUFdSX1dFTExf Q1RMX0JJT1MoaWQpKTsKPiAgCj4gQEAgLTc0MCwxOSArNzQyLDE5IEBAIHN0YXRpYyB2b2lkIGhz d19wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIHN0YXRpYyB2b2lkIGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiAgCQkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsCj4gKnBvd2VyX3dlbGwpCj4gIHsKPiAtCWJ4dF9kZGlfcGh5X2luaXQoZGV2X3ByaXYsIHBv d2VyX3dlbGwtPmJ4dC5waHkpOwo+ICsJYnh0X2RkaV9waHlfaW5pdChkZXZfcHJpdiwgcG93ZXJf d2VsbC0+ZGVzYy0+Ynh0LnBoeSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGJ4dF9kcGlvX2Nt bl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYs Cj4gIAkJCQkJICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+ IC0JYnh0X2RkaV9waHlfdW5pbml0KGRldl9wcml2LCBwb3dlcl93ZWxsLT5ieHQucGh5KTsKPiAr CWJ4dF9kZGlfcGh5X3VuaW5pdChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0+Ynh0LnBoeSk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gIAkJCQkJICAgIHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkKPiAgewo+IC0JcmV0dXJuIGJ4dF9kZGlfcGh5 X2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtCj4gPmJ4dC5waHkpOwo+ICsJcmV0dXJu IGJ4dF9kZGlfcGh5X2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtCj4gPmJ4 dC5waHkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBieHRfdmVyaWZ5X2RkaV9waHlfcG93ZXJf d2VsbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYpCj4gQEAgLTc2MSwxNiAr NzYzLDE3IEBAIHN0YXRpYyB2b2lkCj4gYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dlbGxzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlwb3dlcl93ZWxsID0gbG9v a3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIEJYVF9EUElPX0NNTl9BKTsKPiAgCWlmIChwb3dlcl93 ZWxsLT5jb3VudCA+IDApCj4gLQkJYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LCBw b3dlcl93ZWxsLQo+ID5ieHQucGh5KTsKPiArCQlieHRfZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2 X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtCj4gPmJ4dC5waHkpOwo+ICAKPiAgCXBvd2VyX3dlbGwg PSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwgQlhUX0RQSU9fQ01OX0JDKTsKPiAgCWlmIChw b3dlcl93ZWxsLT5jb3VudCA+IDApCj4gLQkJYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRlKGRldl9w cml2LCBwb3dlcl93ZWxsLQo+ID5ieHQucGh5KTsKPiArCQlieHRfZGRpX3BoeV92ZXJpZnlfc3Rh dGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtCj4gPmJ4dC5waHkpOwo+ICAKPiAgCWlmIChJ U19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICAJCXBvd2VyX3dlbGwgPSBsb29rdXBfcG93ZXJf d2VsbChkZXZfcHJpdiwKPiBHTEtfRFBJT19DTU5fQyk7Cj4gIAkJaWYgKHBvd2VyX3dlbGwtPmNv dW50ID4gMCkKPiAtCQkJYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LAo+IHBvd2Vy X3dlbGwtPmJ4dC5waHkpOwo+ICsJCQlieHRfZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYs Cj4gKwkJCQkJCSBwb3dlcl93ZWxsLT5kZXNjLQo+ID5ieHQucGh5KTsKPiAgCX0KPiAgfQo+ICAK PiBAQCAtODY5LDcgKzg3Miw3IEBAIHN0YXRpYyB2b2lkIGk4MzBfcGlwZXNfcG93ZXJfd2VsbF9z eW5jX2h3KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdm9p ZCB2bHZfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCQkgICAgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCwKPiBib29sIGVu YWJsZSkKPiAgewo+IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJfd2VsbF9pZCA9IHBv d2VyX3dlbGwtPmlkOwo+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJfd2VsbF9pZCA9 IHBvd2VyX3dlbGwtPmRlc2MtCj4gPmlkOwo+ICAJdTMyIG1hc2s7Cj4gIAl1MzIgc3RhdGU7Cj4g IAl1MzIgY3RybDsKPiBAQCAtOTE3LDcgKzkyMCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9wb3dlcl93 ZWxsX2Rpc2FibGUoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRp YyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAq ZGV2X3ByaXYsCj4gIAkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gKnBvd2VyX3dlbGwp Cj4gIHsKPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dlbGxfaWQgPSBwb3dlcl93 ZWxsLT5pZDsKPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dlbGxfaWQgPSBwb3dl cl93ZWxsLT5kZXNjLQo+ID5pZDsKPiAgCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ICAJdTMyIG1h c2s7Cj4gIAl1MzIgc3RhdGU7Cj4gQEAgLTExMDcsNyArMTExMCw3IEBAIGxvb2t1cF9wb3dlcl93 ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LAo+ICAJCXN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7Cj4gIAo+ICAJCXBvd2VyX3dlbGwgPSAmcG93ZXJfZG9t YWlucy0+cG93ZXJfd2VsbHNbaV07Cj4gLQkJaWYgKHBvd2VyX3dlbGwtPmlkID09IHBvd2VyX3dl bGxfaWQpCj4gKwkJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09IHBvd2VyX3dlbGxfaWQpCj4g IAkJCXJldHVybiBwb3dlcl93ZWxsOwo+ICAJfQo+ICAKPiBAQCAtMTE0Niw3ICsxMTQ5LDcgQEAg c3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfc3RhdHVzKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJCQkJICAgICBQSFlfU1RBVFVTX1NQTElORV9MRE8oRFBJT19QSFkx Cj4gLCBEUElPX0NIMCwgMCkgfAo+ICAJCQkJICAgICBQSFlfU1RBVFVTX1NQTElORV9MRE8oRFBJ T19QSFkxCj4gLCBEUElPX0NIMCwgMSkpOwo+ICAKPiAtCWlmIChjbW5fYmMtPm9wcy0+aXNfZW5h YmxlZChkZXZfcHJpdiwgY21uX2JjKSkgewo+ICsJaWYgKGNtbl9iYy0+ZGVzYy0+b3BzLT5pc19l bmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7Cj4gIAkJcGh5X3N0YXR1cyB8PSBQSFlfUE9XRVJH T09EKERQSU9fUEhZMCk7Cj4gIAo+ICAJCS8qIHRoaXMgYXNzdW1lcyBvdmVycmlkZSBpcyBvbmx5 IHVzZWQgdG8gZW5hYmxlCj4gbGFuZXMgKi8KPiBAQCAtMTE4Nyw3ICsxMTkwLDcgQEAgc3RhdGlj IHZvaWQgYXNzZXJ0X2Nodl9waHlfc3RhdHVzKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJCQlwaHlfc3RhdHVzIHw9Cj4gUEhZX1NUQVRVU19TUExJTkVfTERPKERQSU9f UEhZMCwgRFBJT19DSDEsIDEpOwo+ICAJfQo+ICAKPiAtCWlmIChjbW5fZC0+b3BzLT5pc19lbmFi bGVkKGRldl9wcml2LCBjbW5fZCkpIHsKPiArCWlmIChjbW5fZC0+ZGVzYy0+b3BzLT5pc19lbmFi bGVkKGRldl9wcml2LCBjbW5fZCkpIHsKPiAgCQlwaHlfc3RhdHVzIHw9IFBIWV9QT1dFUkdPT0Qo RFBJT19QSFkxKTsKPiAgCj4gIAkJLyogdGhpcyBhc3N1bWVzIG92ZXJyaWRlIGlzIG9ubHkgdXNl ZCB0byBlbmFibGUKPiBsYW5lcyAqLwo+IEBAIC0xMjMxLDEwICsxMjM0LDEwIEBAIHN0YXRpYyB2 b2lkCj4gY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCWVudW0gcGlwZSBwaXBlOwo+ICAJdWludDMyX3QgdG1wOwo+ICAK PiAtCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5pZCAhPSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9f Q01OX0JDCj4gJiYKPiAtCQkgICAgIHBvd2VyX3dlbGwtPmlkICE9IFBVTklUX1BPV0VSX1dFTExf RFBJT19DTU5fRCk7Cj4gKwlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+ZGVzYy0+aWQgIT0KPiBQ VU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDICYmCj4gKwkJICAgICBwb3dlcl93ZWxsLT5kZXNj LT5pZCAhPQo+IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fRCk7Cj4gIAo+IC0JaWYgKHBvd2Vy X3dlbGwtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPiArCWlmIChwb3dl cl93ZWxsLT5kZXNjLT5pZCA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4gIAkJ cGlwZSA9IFBJUEVfQTsKPiAgCQlwaHkgPSBEUElPX1BIWTA7Cj4gIAl9IGVsc2Ugewo+IEBAIC0x MjYyLDcgKzEyNjUsNyBAQCBzdGF0aWMgdm9pZAo+IGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Vu YWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJRFBJT19TVVNfQ0xL X0NPTkZJR19HQVRFX0NMS1JFUTsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBD SFZfQ01OX0RXMjgsIHRtcCk7Cj4gIAo+IC0JaWYgKHBvd2VyX3dlbGwtPmlkID09IFBVTklUX1BP V0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPiArCWlmIChwb3dlcl93ZWxsLT5kZXNjLT5pZCA9PSBQ VU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4gIAkJdG1wID0gdmx2X2RwaW9fcmVhZChk ZXZfcHJpdiwgcGlwZSwKPiBfQ0hWX0NNTl9EVzZfQ0gxKTsKPiAgCQl0bXAgfD0gRFBJT19EWU5Q V1JET1dORU5fQ0gxOwo+ICAJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NN Tl9EVzZfQ0gxLAo+IHRtcCk7Cj4gQEAgLTEyOTMsMTAgKzEyOTYsMTAgQEAgc3RhdGljIHZvaWQK PiBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgewo+ICAJZW51bSBkcGlvX3BoeSBwaHk7Cj4gIAo+IC0JV0FSTl9PTl9P TkNFKHBvd2VyX3dlbGwtPmlkICE9IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMKPiAmJgo+ IC0JCSAgICAgcG93ZXJfd2VsbC0+aWQgIT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsK PiArCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5kZXNjLT5pZCAhPQo+IFBVTklUX1BPV0VSX1dF TExfRFBJT19DTU5fQkMgJiYKPiArCQkgICAgIHBvd2VyX3dlbGwtPmRlc2MtPmlkICE9Cj4gUFVO SVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKPiAgCj4gLQlpZiAocG93ZXJfd2VsbC0+aWQgPT0g UFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewo+ICsJaWYgKHBvd2VyX3dlbGwtPmRlc2Mt PmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKPiAgCQlwaHkgPSBEUElPX1BI WTA7Cj4gIAkJYXNzZXJ0X3BsbF9kaXNhYmxlZChkZXZfcHJpdiwgUElQRV9BKTsKPiAgCQlhc3Nl cnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0IpOwo+IEBAIC0yMDUxLDcgKzIwNTQsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMKPiBjaHZfZHBpb19jbW5f cG93ZXJfd2VsbF9vcHMgPSB7Cj4gIAkuaXNfZW5hYmxlZCA9IHZsdl9wb3dlcl93ZWxsX2VuYWJs ZWQsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBpOXh4X2Fsd2F5 c19vbl9wb3dlcl93ZWxsW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX2Rlc2MgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbFtdCj4gPSB7Cj4gIAl7Cj4gIAkJLm5h bWUgPSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjA2OCw3ICsyMDcx LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gaTgzMF9waXBl c19wb3dlcl93ZWxsX29wcyA9IHsKPiAgCS5pc19lbmFibGVkID0gaTgzMF9waXBlc19wb3dlcl93 ZWxsX2VuYWJsZWQsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBp ODMwX3Bvd2VyX3dlbGxzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX2Rlc2MgaTgzMF9wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ICAJCS5uYW1lID0gImFsd2F5 cy1vbiIsCj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAgLTIxMDUsNyArMjEwOCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcwo+IGJ4dF9kcGlvX2Ntbl9wb3dlcl93 ZWxsX29wcyA9IHsKPiAgCS5pc19lbmFibGVkID0gYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5h YmxlZCwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19wb3dl cl93ZWxsc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNj IGhzd19wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4g IAkJLmFsd2F5c19vbiA9IDEsCj4gQEAgLTIxMjQsNyArMjEyNyw3IEBAIHN0YXRpYyBzdHJ1Y3Qg aTkxNV9wb3dlcl93ZWxsIGhzd19wb3dlcl93ZWxsc1tdCj4gPSB7Cj4gIAl9LAo+ICB9Owo+ICAK PiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgYmR3X3Bvd2VyX3dlbGxzW10gPSB7Cj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2MgYmR3X3Bvd2VyX3dlbGxz W10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0g MSwKPiBAQCAtMjE2NSw3ICsyMTY4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGxfb3BzCj4gdmx2X2RwaW9fcG93ZXJfd2VsbF9vcHMgPSB7Cj4gIAkuaXNfZW5hYmxlZCA9 IHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVf cG93ZXJfd2VsbCB2bHZfcG93ZXJfd2VsbHNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGxfZGVzYyB2bHZfcG93ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQkubmFt ZSA9ICJhbHdheXMtb24iLAo+ICAJCS5hbHdheXNfb24gPSAxLAo+IEBAIC0yMjIzLDcgKzIyMjYs NyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCB2bHZfcG93ZXJfd2VsbHNbXQo+ID0g ewo+ICAJfSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGNodl9w b3dlcl93ZWxsc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9k ZXNjIGNodl9wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIs Cj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAgLTIyNjMsMTIgKzIyNjYsMTIgQEAgYm9vbAo+IGlu dGVsX2Rpc3BsYXlfcG93ZXJfd2VsbF9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gKmRldl9wcml2LAo+ICAJYm9vbCByZXQ7Cj4gIAo+ICAJcG93ZXJfd2VsbCA9IGxvb2t1cF9w b3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsX2lkKTsKPiAtCXJldCA9IHBvd2VyX3dlbGwt Pm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwlyZXQgPSBwb3dlcl93 ZWxsLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsCj4gcG93ZXJfd2VsbCk7Cj4gIAo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwg c2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX2Rlc2Mgc2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUgPSAiYWx3YXlz LW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjMzNiw3ICsyMzM5LDcgQEAgc3RhdGlj IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10KPiA9IHsKPiAgCX0sCj4g IH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBieHRfcG93ZXJfd2VsbHNb XSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBieHRfcG93 ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+ICAJCS5hbHdh eXNfb24gPSAxLAo+IEBAIC0yMzkwLDcgKzIzOTMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93 ZXJfd2VsbCBieHRfcG93ZXJfd2VsbHNbXQo+ID0gewo+ICAJfSwKPiAgfTsKPiAgCj4gLXN0YXRp YyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGdsa19wb3dlcl93ZWxsc1tdID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGdsa19wb3dlcl93ZWxsc1tdID0gewo+ ICAJewo+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gIAkJLmFsd2F5c19vbiA9IDEsCj4gQEAg LTI0OTAsNyArMjQ5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGdsa19wb3dl cl93ZWxsc1tdCj4gPSB7Cj4gIAl9LAo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgY25sX3Bvd2VyX3dlbGxzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsX2Rlc2MgY25sX3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAl7Cj4gIAkJLm5hbWUg PSAiYWx3YXlzLW9uIiwKPiAgCQkuYWx3YXlzX29uID0gMSwKPiBAQCAtMjU5NCw3ICsyNTk3LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gaWNsX2NvbWJvX3Bo eV9hdXhfcG93ZXJfd2VsbF9vcHMgPSB7Cj4gIAkuaXNfZW5hYmxlZCA9IGhzd19wb3dlcl93ZWxs X2VuYWJsZWQsCj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBpY2xf cG93ZXJfd2VsbHNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxf ZGVzYyBpY2xfcG93ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24i LAo+ICAJCS5hbHdheXNfb24gPSAxLAo+IEBAIC0yODA1LDI2ICsyODA4LDM3IEBAIHN0YXRpYyB1 aW50MzJfdCBnZXRfYWxsb3dlZF9kY19tYXNrKGNvbnN0Cj4gc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJcmV0dXJuIG1hc2s7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGFz c2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2 X3ByaXYpCj4gK3N0YXRpYyBpbnQKPiArX19zZXRfcG93ZXJfd2VsbHMoc3RydWN0IGk5MTVfcG93 ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucywKPiArCQkgIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGxfZGVzYwo+ICpwb3dlcl93ZWxsX2Rlc2NzLAo+ICsJCSAgaW50IHBvd2VyX3dlbGxfY291 bnQpCj4gIHsKPiAtCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAm ZGV2X3ByaXYtCj4gPnBvd2VyX2RvbWFpbnM7Cj4gLQl1NjQgcG93ZXJfd2VsbF9pZHM7Cj4gKwl1 NjQgcG93ZXJfd2VsbF9pZHMgPSAwOwo+ICAJaW50IGk7Cj4gIAo+IC0JcG93ZXJfd2VsbF9pZHMg PSAwOwo+IC0JZm9yIChpID0gMDsgaSA8IHBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxfY291bnQ7 IGkrKykgewo+IC0JCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfZG9tYWlucy0K PiA+cG93ZXJfd2VsbHNbaV0uaWQ7Cj4gKwlwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsX2NvdW50 ID0gcG93ZXJfd2VsbF9jb3VudDsKPiArCXBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxzID0ga2Nh bGxvYyhwb3dlcl93ZWxsX2NvdW50LAo+ICsJCQkJCSAgICBzaXplb2YoKnBvd2VyX2RvbWFpbnMt Cj4gPnBvd2VyX3dlbGxzKSwKPiArCQkJCQkgICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXBvd2Vy X2RvbWFpbnMtPnBvd2VyX3dlbGxzKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCBwb3dlcl93ZWxsX2NvdW50OyBpKyspIHsKPiArCQllbnVtIGk5MTVfcG93ZXJf d2VsbF9pZCBpZCA9IHBvd2VyX3dlbGxfZGVzY3NbaV0uaWQ7Cj4gKwo+ICsJCXBvd2VyX2RvbWFp bnMtPnBvd2VyX3dlbGxzW2ldLmRlc2MgPQo+ICZwb3dlcl93ZWxsX2Rlc2NzW2ldOwo+ICAKPiAg CQlXQVJOX09OKGlkID49IHNpemVvZihwb3dlcl93ZWxsX2lkcykgKiA4KTsKPiAgCQlXQVJOX09O KHBvd2VyX3dlbGxfaWRzICYgQklUX1VMTChpZCkpOwo+ICAJCXBvd2VyX3dlbGxfaWRzIHw9IEJJ VF9VTEwoaWQpOwo+ICAJfQo+ICsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+IC0jZGVmaW5lIHNl dF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dlbGxzKSAoewkJCj4gXAo+IC0J KHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93ZWxscyA9IChfX3Bvd2VyX3dlbGxzKTsJCQo+IAlcCj4g LQkocG93ZXJfZG9tYWlucyktPnBvd2VyX3dlbGxfY291bnQgPQo+IEFSUkFZX1NJWkUoX19wb3dl cl93ZWxscyk7CVwKPiAtfSkKPiArI2RlZmluZSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlu cywgX19wb3dlcl93ZWxsX2Rlc2NzKSBcCj4gKwlfX3NldF9wb3dlcl93ZWxscyhwb3dlcl9kb21h aW5zLCBfX3Bvd2VyX3dlbGxfZGVzY3MsIFwKPiArCQkJICBBUlJBWV9TSVpFKF9fcG93ZXJfd2Vs bF9kZXNjcykpCj4gIAo+ICAvKioKPiAgICogaW50ZWxfcG93ZXJfZG9tYWluc19pbml0IC0gaW5p dGlhbGl6ZXMgdGhlIHBvd2VyIGRvbWFpbgo+IHN0cnVjdHVyZXMKPiBAQCAtMjgzNiw2ICsyODUw LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3VuaXF1ZShzdHJ1Y3QKPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpOTE1 X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtCj4gPnBvd2VyX2RvbWFp bnM7Cj4gKwlpbnQgZXJyOwo+ICAKPiAgCWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2Vs bCA9Cj4gIAkJc2FuaXRpemVfZGlzYWJsZV9wb3dlcl93ZWxsX29wdGlvbihkZXZfcHJpdiwKPiBA QCAtMjg1MiwxNSArMjg2NywxNSBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVj dAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogdGhlIGRpc2FibGluZyBvcmRl ciBpcyByZXZlcnNlZC4KPiAgCSAqLwo+ICAJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4g LQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGljbF9wb3dlcl93ZWxscyk7Cj4gKwkJ ZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gaWNsX3Bvd2VyX3dlbGxzKTsK PiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiAtCQlzZXRfcG93ZXJfd2Vs bHMocG93ZXJfZG9tYWlucywgaHN3X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJf d2VsbHMocG93ZXJfZG9tYWlucywKPiBoc3dfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFp bnMsIGJkd19wb3dlcl93ZWxscyk7Cj4gKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2Rv bWFpbnMsCj4gYmR3X3Bvd2VyX3dlbGxzKTsKPiAgCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZf cHJpdikpIHsKPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgc2tsX3Bvd2VyX3dl bGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywKPiBza2xfcG93 ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewo+IC0J CXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBjbmxfcG93ZXJfd2VsbHMpOwo+ICsJCWVy ciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+IGNubF9wb3dlcl93ZWxscyk7Cj4g IAo+ICAJCS8qCj4gIAkJICogRERJIGFuZCBBdXggSU8gYXJlIGdldHRpbmcgZW5hYmxlZCBmb3Ig YWxsIHBvcnRzCj4gQEAgLTI4NzIsMjIgKzI4ODcsMzEgQEAgaW50IGludGVsX3Bvd2VyX2RvbWFp bnNfaW5pdChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJcG93ZXJf ZG9tYWlucy0+cG93ZXJfd2VsbF9jb3VudCAtPSAyOwo+ICAKPiAgCX0gZWxzZSBpZiAoSVNfQlJP WFRPTihkZXZfcHJpdikpIHsKPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgYnh0 X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywK PiBieHRfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2 KSkgewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBnbGtfcG93ZXJfd2VsbHMp Owo+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+IGdsa19wb3dlcl93 ZWxscyk7Cj4gIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gLQkJc2V0 X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGNodl9wb3dlcl93ZWxscyk7Cj4gKwkJZXJyID0g c2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gY2h2X3Bvd2VyX3dlbGxzKTsKPiAgCX0g ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiAtCQlzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywgdmx2X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJfd2Vs bHMocG93ZXJfZG9tYWlucywKPiB2bHZfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJU19J ODMwKGRldl9wcml2KSkgewo+IC0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBpODMw X3Bvd2VyX3dlbGxzKTsKPiArCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywK PiBpODMwX3Bvd2VyX3dlbGxzKTsKPiAgCX0gZWxzZSB7Cj4gLQkJc2V0X3Bvd2VyX3dlbGxzKHBv d2VyX2RvbWFpbnMsCj4gaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbCk7Cj4gKwkJZXJyID0gc2V0 X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbCk7 Cj4gIAl9Cj4gIAo+IC0JYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3VuaXF1ZShkZXZfcHJpdik7Cj4g KwlyZXR1cm4gZXJyOwo+ICt9Cj4gIAo+IC0JcmV0dXJuIDA7Cj4gKy8qKgo+ICsgKiBpbnRlbF9w b3dlcl9kb21haW5zX2NsZWFudXAgLSBjbGVhbiB1cCBwb3dlciBkb21haW5zIHJlc291cmNlcwo+ ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gKyAqCj4gKyAqIFJlbGVhc2Ug YW55IHJlc291cmNlcyBhY3F1aXJlZCBieSBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoKQo+ICsg Ki8KPiArdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlrZnJlZShkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5w b3dlcl93ZWxscyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNf c3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdikKPiBAQCAtMjg5Nyw5 ICsyOTIxLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zeW5jX2h3KHN0cnVj dAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCW11dGV4X2xvY2soJnBvd2Vy X2RvbWFpbnMtPmxvY2spOwo+ICAJZm9yX2VhY2hfcG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJf d2VsbCkgewo+IC0JCXBvd2VyX3dlbGwtPm9wcy0+c3luY19odyhkZXZfcHJpdiwgcG93ZXJfd2Vs bCk7Cj4gLQkJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IHBvd2VyX3dlbGwtPm9wcy0KPiA+aXNf ZW5hYmxlZChkZXZfcHJpdiwKPiAtCQkJCQkJCQkgICAgCj4gIHBvd2VyX3dlbGwpOwo+ICsJCXBv d2VyX3dlbGwtPmRlc2MtPm9wcy0+c3luY19odyhkZXZfcHJpdiwKPiBwb3dlcl93ZWxsKTsKPiAr CQlwb3dlcl93ZWxsLT5od19lbmFibGVkID0KPiArCQkJcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLT5p c19lbmFibGVkKGRldl9wcml2LAo+IHBvd2VyX3dlbGwpOwo+ICAJfQo+ICAJbXV0ZXhfdW5sb2Nr KCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiAgfQo+IEBAIC0zMzk4LDcgKzM0MjIsNyBAQCBzdGF0 aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCSAqIG92ZXJyaWRlIGFuZCBzZXQgdGhlIGxhbmUgcG93ZXJkb3duIGJpdHMg YWNjZGluZyB0byB0aGUKPiAgCSAqIGN1cnJlbnQgbGFuZSBzdGF0dXMuCj4gIAkgKi8KPiAtCWlm IChjbW5fYmMtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2JjKSkgewo+ICsJaWYgKGNt bl9iYy0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7Cj4gIAkJdWlu dDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFEKERQTEwoUElQRV9BKSk7Cj4gIAkJdW5zaWduZWQgaW50 IG1hc2s7Cj4gIAo+IEBAIC0zNDI5LDcgKzM0NTMsNyBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2Nv bnRyb2xfaW5pdChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZXZf cHJpdi0+Y2h2X3BoeV9hc3NlcnRbRFBJT19QSFkwXSA9IHRydWU7Cj4gIAl9Cj4gIAo+IC0JaWYg KGNtbl9kLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ICsJaWYgKGNtbl9k LT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ICAJCXVpbnQzMl90 IHN0YXR1cyA9IEk5MTVfUkVBRChEUElPX1BIWV9TVEFUVVMpOwo+ICAJCXVuc2lnbmVkIGludCBt YXNrOwo+ICAKPiBAQCAtMzQ2NSwxNSArMzQ4OSwxNSBAQCBzdGF0aWMgdm9pZCB2bHZfY21ubGFu ZV93YShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlsb29rdXBfcG93 ZXJfd2VsbChkZXZfcHJpdiwKPiBQVU5JVF9QT1dFUl9XRUxMX0RJU1AyRCk7Cj4gIAo+ICAJLyog SWYgdGhlIGRpc3BsYXkgbWlnaHQgYmUgYWxyZWFkeSBhY3RpdmUgc2tpcCB0aGlzICovCj4gLQlp ZiAoY21uLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbikgJiYKPiAtCSAgICBkaXNwMmQt Pm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgZGlzcDJkKSAmJgo+ICsJaWYgKGNtbi0+ZGVzYy0+ b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW4pICYmCj4gKwkgICAgZGlzcDJkLT5kZXNjLT5v cHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGRpc3AyZCkgJiYKPiAgCSAgICBJOTE1X1JFQUQoRFBJ T19DVEwpICYgRFBJT19DTU5SU1QpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCURSTV9ERUJVR19LTVMo InRvZ2dsaW5nIGRpc3BsYXkgUEhZIHNpZGUgcmVzZXRcbiIpOwo+ICAKPiAgCS8qIGNtbmxhbmUg bmVlZHMgRFBMTCByZWdpc3RlcnMgKi8KPiAtCWRpc3AyZC0+b3BzLT5lbmFibGUoZGV2X3ByaXYs IGRpc3AyZCk7Cj4gKwlkaXNwMmQtPmRlc2MtPm9wcy0+ZW5hYmxlKGRldl9wcml2LCBkaXNwMmQp Owo+ICAKPiAgCS8qCj4gIAkgKiBGcm9tIFZMVjJBMF9EUF9lRFBfSERNSV9EUElPX2RyaXZlcl92 Ymlvc19ub3Rlc18xMS5kb2N4Ogo+IEBAIC0zNDgyLDcgKzM1MDYsNyBAQCBzdGF0aWMgdm9pZCB2 bHZfY21ubGFuZV93YShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAq IFNpbXBseSB1bmdhdGluZyBpc24ndCBlbm91Z2ggdG8gcmVzZXQgdGhlIFBIWSBlbm91Z2ggdG8K PiBnZXQKPiAgCSAqIHBvcnRzIGFuZCBsYW5lcyBydW5uaW5nLgo+ICAJICovCj4gLQljbW4tPm9w cy0+ZGlzYWJsZShkZXZfcHJpdiwgY21uKTsKPiArCWNtbi0+ZGVzYy0+b3BzLT5kaXNhYmxlKGRl dl9wcml2LCBjbW4pOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtMzU5OCw5ICszNjIyLDkgQEAgc3Rh dGljIHZvaWQKPiBpbnRlbF9wb3dlcl9kb21haW5zX2R1bXBfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBk b21haW47Cj4gIAo+ICAJCURSTV9ERUJVR19EUklWRVIoIiUtMjVzICVkXG4iLAo+IC0JCQkJIHBv d2VyX3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtCj4gPmNvdW50KTsKPiArCQkJCSBwb3dlcl93ZWxs LT5kZXNjLT5uYW1lLCBwb3dlcl93ZWxsLQo+ID5jb3VudCk7Cj4gIAo+IC0JCWZvcl9lYWNoX3Bv d2VyX2RvbWFpbihkb21haW4sIHBvd2VyX3dlbGwtPmRvbWFpbnMpCj4gKwkJZm9yX2VhY2hfcG93 ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+ZG9tYWlucykKPiAgCQkJRFJN X0RFQlVHX0RSSVZFUigiICAlLTIzcyAlZFxuIiwKPiAgCQkJCQkgaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW5fCj4gc3RyKGRvbWFpbiksCj4gIAkJCQkJIHBvd2VyX2RvbWFpbnMtCj4gPmRvbWFp bl91c2VfY291bnRbZG9tYWluXSk7Cj4gQEAgLTM2MzYsMjIgKzM2NjAsMjUgQEAgdm9pZCBpbnRl bF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCQkgKiBhbmQgUFcxIHBvd2VyIHdlbGxzKSBhcmUgdW5kZXIgRlcgY29udHJv bCwgc28KPiBpZ25vcmUgdGhlbSwKPiAgCQkgKiBzaW5jZSB0aGVpciBzdGF0ZSBjYW4gY2hhbmdl IGFzeW5jaHJvbm91c2x5Lgo+ICAJCSAqLwo+IC0JCWlmICghcG93ZXJfd2VsbC0+ZG9tYWlucykK PiArCQlpZiAoIXBvd2VyX3dlbGwtPmRlc2MtPmRvbWFpbnMpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAtCQllbmFibGVkID0gcG93ZXJfd2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LAo+IHBv d2VyX3dlbGwpOwo+IC0JCWlmICgocG93ZXJfd2VsbC0+Y291bnQgfHwgcG93ZXJfd2VsbC0+YWx3 YXlzX29uKSAhPQo+IGVuYWJsZWQpCj4gKwkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPmRlc2MtPm9w cy0KPiA+aXNfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJCSAgICBwb3dlcl93ZQo+IGxsKTsK PiArCQlpZiAoKHBvd2VyX3dlbGwtPmNvdW50IHx8IHBvd2VyX3dlbGwtPmRlc2MtCj4gPmFsd2F5 c19vbikgIT0KPiArCQkgICAgZW5hYmxlZCkKPiAgCQkJRFJNX0VSUk9SKCJwb3dlciB3ZWxsICVz IHN0YXRlIG1pc21hdGNoCj4gKHJlZmNvdW50ICVkL2VuYWJsZWQgJWQpIiwKPiAtCQkJCSAgcG93 ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0KPiA+Y291bnQsIGVuYWJsZWQpOwo+ICsJCQkJICBw b3dlcl93ZWxsLT5kZXNjLT5uYW1lLAo+ICsJCQkJICBwb3dlcl93ZWxsLT5jb3VudCwgZW5hYmxl ZCk7Cj4gIAo+ICAJCWRvbWFpbnNfY291bnQgPSAwOwo+IC0JCWZvcl9lYWNoX3Bvd2VyX2RvbWFp bihkb21haW4sIHBvd2VyX3dlbGwtPmRvbWFpbnMpCj4gKwkJZm9yX2VhY2hfcG93ZXJfZG9tYWlu KGRvbWFpbiwgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+ZG9tYWlucykKPiAgCQkJZG9tYWluc19jb3Vu dCArPSBwb3dlcl9kb21haW5zLQo+ID5kb21haW5fdXNlX2NvdW50W2RvbWFpbl07Cj4gIAo+ICAJ CWlmIChwb3dlcl93ZWxsLT5jb3VudCAhPSBkb21haW5zX2NvdW50KSB7Cj4gIAkJCURSTV9FUlJP UigicG93ZXIgd2VsbCAlcyByZWZjb3VudC9kb21haW4KPiByZWZjb3VudCBtaXNtYXRjaCAiCj4g IAkJCQkgICIocmVmY291bnQgJWQvZG9tYWlucyByZWZjb3VudAo+ICVkKVxuIiwKPiAtCQkJCSAg cG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0KPiA+Y291bnQsCj4gKwkJCQkgIHBvd2VyX3dl bGwtPmRlc2MtPm5hbWUsCj4gcG93ZXJfd2VsbC0+Y291bnQsCj4gIAkJCQkgIGRvbWFpbnNfY291 bnQpOwo+ICAJCQlkdW1wX2RvbWFpbl9pbmZvID0gdHJ1ZTsKPiAgCQl9Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=