From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from www637.your-server.de (www637.your-server.de [168.119.26.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC8B61B6555; Sun, 1 Dec 2024 18:41:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=168.119.26.117 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733078500; cv=none; b=s5inbYR014hkETGllPK/rGmeE0qFXiDR8/41bUlfl1HjB+tbVZm7xTFrO7+vS/3cBZHt5bIGMLFqxpyIQ4qUlaXlKLGfhcubzgC6CRWjRMyAjeLGmspJlmEtnbiipmnrb+7vONyw2/VN8WvfGEWIhNzKsrKFpH442QXTWCMzJ3g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733078500; c=relaxed/simple; bh=IlEkk/mLLWIv2tORyL5RH5JLgT9X/vX8RgnWOCca7Bk=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=fTvqoH3dHUu3JOwchTBGrsEi2Wr9R2wnnzG5AKjGoIbT46Yh+d/0t3moRCcUD6l4SuVuQ56cmQOE/5flYhwuDRxpaGFQ3P7j4r9bnWefx0tH/ghXvFKsGkoNcDT0qg3AgQURWwHx5C7J6q5Gr5cyHC0wD+izcwDI/epiZS41q94= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=apitzsch.eu; spf=pass smtp.mailfrom=apitzsch.eu; dkim=pass (2048-bit key) header.d=apitzsch.eu header.i=@apitzsch.eu header.b=h983rXC7; arc=none smtp.client-ip=168.119.26.117 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=apitzsch.eu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=apitzsch.eu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=apitzsch.eu header.i=@apitzsch.eu header.b="h983rXC7" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=apitzsch.eu ; s=default2410; h=MIME-Version:Content-Transfer-Encoding:Content-Type: References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=IlEkk/mLLWIv2tORyL5RH5JLgT9X/vX8RgnWOCca7Bk=; b=h983rXC7AY1VIUJSpXZlgyivRV 6pZczM0/ywLRvxnHKOinlIkC9qhYg8Cue3iA9dDqoE25RYAHTBv9kRefHt8EWblEPio+xju5ON75l qPA76TgOGGkUFXfWtzavjzQYOww0vfdiOQB9KZgHfkH1EQVkfjIgK3PhxAaWrHbtFlhW9wJ0NW0DD UUijRwbIgyQn9BYyA4YGwte7e6w2wUdgsLSayiAQEdh4/cbBgewykfCzmH3Sa7fLeP5xP75CMY4vx f+bm24vSF78V0kwcVLNHc2fBpehTmTpSbA/gebi5TLddTccs0c+rTDbr86serlCmBKqRbZHsmAkvY +ExDB0Bg==; Received: from sslproxy04.your-server.de ([78.46.152.42]) by www637.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1tHost-0006Ab-12; Sun, 01 Dec 2024 19:41:31 +0100 Received: from [77.64.252.106] (helo=framework.lan) by sslproxy04.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tHost-000MKA-1v; Sun, 01 Dec 2024 19:41:31 +0100 Message-ID: <3a8cbb8f0eeab1bfbb3bd539405e646bd081ea06.camel@apitzsch.eu> Subject: Re: [PATCH v2 02/13] media: i2c: imx214: Use subdev active state From: =?ISO-8859-1?Q?Andr=E9?= Apitzsch To: Ricardo Ribalda Delgado Cc: Mauro Carvalho Chehab , Sakari Ailus , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Dave Stevenson Date: Sun, 01 Dec 2024 19:41:30 +0100 In-Reply-To: References: <20241021-imx214-v2-0-fbd23e99541e@apitzsch.eu> <20241021-imx214-v2-2-fbd23e99541e@apitzsch.eu> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.54.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Authenticated-Sender: andre@apitzsch.eu X-Virus-Scanned: Clear (ClamAV 1.0.7/27474/Sun Dec 1 10:42:26 2024) SGksCgpBbSBNaXR0d29jaCwgZGVtIDMwLjEwLjIwMjQgdW0gMTI6MzYgKzAxMDAgc2NocmllYiBS aWNhcmRvIFJpYmFsZGEKRGVsZ2FkbzoKPiBIaQo+IAo+IEl0IGxvb2tzIGdvb2QgdG8gbWUsIGJ1 dCBJIHdvdWxkIGxpa2UgU2FrYXJpIHRvIHJldmlldyBpdC4gSSBhbSBub3QKPiBzdXJlIGlmIGl0 IGlzIG9rIHRvIGtlZXAgdGhlIGN1cl9tb2RlIHZhcmlhYmxlLgo+IAo+IE9uIE1vbiwgT2N0IDIx LCAyMDI0IGF0IDEyOjE04oCvQU0gQW5kcsOpIEFwaXR6c2NoIHZpYSBCNCBSZWxheQo+IDxkZXZu dWxsK2dpdC5hcGl0enNjaC5ldUBrZXJuZWwub3JnPiB3cm90ZToKPiA+IAo+ID4gRnJvbTogQW5k csOpIEFwaXR6c2NoIDxnaXRAYXBpdHpzY2guZXU+Cj4gPiAKPiA+IFBvcnQgdGhlIGlteDIxNCBz ZW5zb3IgZHJpdmVyIHRvIHVzZSB0aGUgc3ViZGV2IGFjdGl2ZSBzdGF0ZS4KPiA+IAo+ID4gTW92 ZSBhbGwgdGhlIGZvcm1hdCBjb25maWd1cmF0aW9uIHRvIHRoZSBzdWJkZXZpY2Ugc3RhdGUgYW5k Cj4gPiBzaW1wbGlmeQo+ID4gdGhlIGZvcm1hdCBoYW5kbGluZywgbG9ja2luZyBhbmQgaW5pdGlh bGl6YXRpb24uCj4gPiAKPiA+IFdoaWxlIGF0IGl0LCBzaW1wbGlmeSBpbXgyMTRfc3RhcnRfc3Ry ZWFtaW5nKCkgYnkgcmVtb3ZpbmcgdW5uZWVkZWQKPiA+IGdvdG8KPiA+IHN0YXRlbWVudHMgYW5k IHRoZSBjb3JyZXNwb25kaW5nIGVycm9yIGxhYmVsLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBB bmRyw6kgQXBpdHpzY2ggPGdpdEBhcGl0enNjaC5ldT4KPiA+IC0tLQo+ID4gwqBkcml2ZXJzL21l ZGlhL2kyYy9pbXgyMTQuYyB8IDE1OSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0K PiA+IC0tLS0tLS0tLS0tLQo+ID4gwqAxIGZpbGUgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwg MTA2IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMv aW14MjE0LmMKPiA+IGIvZHJpdmVycy9tZWRpYS9pMmMvaW14MjE0LmMKPiA+IGluZGV4Cj4gPiA1 ZDQxMTQ1MmQzNDJmZGIxNzc2MTljZDFjOWZkOTY1MGQzMTA4OWJiLi45OTBmZDA4MTE5MDRmYzQ3 OGMwNWQ2NDA1Cj4gPiA0MDg5ZmMyODc5Y2FlOTQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL21l ZGlhL2kyYy9pbXgyMTQuYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvaW14MjE0LmMKPiA+ IEBAIC01OSw4ICs1OSw2IEBAIHN0cnVjdCBpbXgyMTQgewo+ID4gCj4gPiDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgdjRsMl9zdWJkZXYgc2Q7Cj4gPiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbWVkaWFf cGFkIHBhZDsKPiA+IC3CoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCBmbXQ7 Cj4gPiAtwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX3JlY3QgY3JvcDsKPiA+IAo+ID4gwqDCoMKg wqDCoMKgwqAgc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxzOwo+ID4gwqDCoMKgwqDCoMKg wqAgc3RydWN0IHY0bDJfY3RybCAqcGl4ZWxfcmF0ZTsKPiA+IEBAIC02OCwxNSArNjYsMTEgQEAg c3RydWN0IGlteDIxNCB7Cj4gPiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9jdHJsICpleHBv c3VyZTsKPiA+IMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX2N0cmwgKnVuaXRfc2l6ZTsKPiA+ IAo+ID4gK8KgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaW14MjE0X21vZGUgKmN1cl9tb2RlOwo+ ID4gKwo+ID4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGHCoMKgwqDC oMKgCj4gPiBzdXBwbGllc1tJTVgyMTRfTlVNX1NVUFBMSUVTXTsKPiA+IAo+ID4gwqDCoMKgwqDC oMKgwqAgc3RydWN0IGdwaW9fZGVzYyAqZW5hYmxlX2dwaW87Cj4gPiAtCj4gPiAtwqDCoMKgwqDC oMKgIC8qCj4gPiAtwqDCoMKgwqDCoMKgwqAgKiBTZXJpYWxpemUgY29udHJvbCBhY2Nlc3MsIGdl dC9zZXQgZm9ybWF0LCBnZXQgc2VsZWN0aW9uCj4gPiAtwqDCoMKgwqDCoMKgwqAgKiBhbmQgc3Rh cnQgc3RyZWFtaW5nLgo+ID4gLcKgwqDCoMKgwqDCoMKgICovCj4gPiAtwqDCoMKgwqDCoMKgIHN0 cnVjdCBtdXRleCBtdXRleDsKPiA+IMKgfTsKPiA+IAo+ID4gwqBzdHJ1Y3QgcmVnXzggewo+ID4g QEAgLTQ5MCw2ICs0ODQsMjIgQEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZAo+ID4gaW14MjE0 X3Bvd2VyX29mZihzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiDCoMKgwqDCoMKgwqDCoCByZXR1cm4g MDsKPiA+IMKgfQo+ID4gCj4gPiArc3RhdGljIHZvaWQgaW14MjE0X3VwZGF0ZV9wYWRfZm9ybWF0 KHN0cnVjdCBpbXgyMTQgKmlteDIxNCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBp bXgyMTRfbW9kZQo+ID4gKm1vZGUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9tYnVz X2ZyYW1lZm10Cj4gPiAqZm10LCB1MzIgY29kZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGZt dC0+Y29kZSA9IElNWDIxNF9NQlVTX0NPREU7Cj4gPiArwqDCoMKgwqDCoMKgIGZtdC0+d2lkdGgg PSBtb2RlLT53aWR0aDsKPiA+ICvCoMKgwqDCoMKgwqAgZm10LT5oZWlnaHQgPSBtb2RlLT5oZWln aHQ7Cj4gPiArwqDCoMKgwqDCoMKgIGZtdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4gPiAr wqDCoMKgwqDCoMKgIGZtdC0+Y29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCOwo+ID4g K8KgwqDCoMKgwqDCoCBmbXQtPnljYmNyX2VuYyA9IFY0TDJfTUFQX1lDQkNSX0VOQ19ERUZBVUxU KGZtdC0KPiA+ID5jb2xvcnNwYWNlKTsKPiA+ICvCoMKgwqDCoMKgwqAgZm10LT5xdWFudGl6YXRp b24gPSBWNEwyX01BUF9RVUFOVElaQVRJT05fREVGQVVMVCh0cnVlLAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm10LQo+ID4gPmNv bG9yc3BhY2UsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmbXQtCj4gPiA+eWNiY3JfZW5jKTsKPiA+ICvCoMKgwqDCoMKgwqAgZm10 LT54ZmVyX2Z1bmMgPSBWNEwyX01BUF9YRkVSX0ZVTkNfREVGQVVMVChmbXQtCj4gPiA+Y29sb3Jz cGFjZSk7Cj4gPiArfQo+ID4gKwo+ID4gwqBzdGF0aWMgaW50IGlteDIxNF9lbnVtX21idXNfY29k ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9zdWJkZXZf c3RhdGUKPiA+ICpzZF9zdGF0ZSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfc3ViZGV2X21idXNf Y29kZV9lbnVtCj4gPiAqY29kZSkKPiA+IEBAIC01NDksNTIgKzU1OSw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgdjRsMl9zdWJkZXZfY29yZV9vcHMKPiA+IGlteDIxNF9jb3JlX29wcyA9IHsKPiA+ IMKgI2VuZGlmCj4gPiDCoH07Cj4gPiAKPiA+IC1zdGF0aWMgc3RydWN0IHY0bDJfbWJ1c19mcmFt ZWZtdCAqCj4gPiAtX19pbXgyMTRfZ2V0X3BhZF9mb3JtYXQoc3RydWN0IGlteDIxNCAqaW14MjE0 LAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHBhZCwKPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHY0bDJfc3ViZGV2X2Zvcm1h dF93aGVuY2Ugd2hpY2gpCj4gPiAtewo+ID4gLcKgwqDCoMKgwqDCoCBzd2l0Y2ggKHdoaWNoKSB7 Cj4gPiAtwqDCoMKgwqDCoMKgIGNhc2UgVjRMMl9TVUJERVZfRk9STUFUX1RSWToKPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB2NGwyX3N1YmRldl9zdGF0ZV9nZXRfZm9y bWF0KHNkX3N0YXRlLCBwYWQpOwo+ID4gLcKgwqDCoMKgwqDCoCBjYXNlIFY0TDJfU1VCREVWX0ZP Uk1BVF9BQ1RJVkU6Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmlt eDIxNC0+Zm10Owo+ID4gLcKgwqDCoMKgwqDCoCBkZWZhdWx0Ogo+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiAtwqDCoMKgwqDCoMKgIH0KPiA+IC19Cj4g PiAtCj4gPiAtc3RhdGljIGludCBpbXgyMTRfZ2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkLAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnNkX3N0YXRlLAo+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRs Ml9zdWJkZXZfZm9ybWF0ICpmb3JtYXQpCj4gPiAtewo+ID4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3Qg aW14MjE0ICppbXgyMTQgPSB0b19pbXgyMTQoc2QpOwo+ID4gLQo+ID4gLcKgwqDCoMKgwqDCoCBt dXRleF9sb2NrKCZpbXgyMTQtPm11dGV4KTsKPiA+IC3CoMKgwqDCoMKgwqAgZm9ybWF0LT5mb3Jt YXQgPSAqX19pbXgyMTRfZ2V0X3BhZF9mb3JtYXQoaW14MjE0LCBzZF9zdGF0ZSwKPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9ybWF0LT5wYWQsCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdC0+d2hpY2gpOwo+ID4g LcKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmlteDIxNC0+bXV0ZXgpOwo+ID4gLQo+ID4gLcKg wqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHN0cnVjdCB2NGwy X3JlY3QgKgo+ID4gLV9faW14MjE0X2dldF9wYWRfY3JvcChzdHJ1Y3QgaW14MjE0ICppbXgyMTQs Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRs Ml9zdWJkZXZfc3RhdGUgKnNkX3N0YXRlLAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHBhZCwgZW51bQo+ID4gdjRsMl9zdWJkZXZfZm9y bWF0X3doZW5jZSB3aGljaCkKPiA+IC17Cj4gPiAtwqDCoMKgwqDCoMKgIHN3aXRjaCAod2hpY2gp IHsKPiA+IC3CoMKgwqDCoMKgwqAgY2FzZSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZOgo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHY0bDJfc3ViZGV2X3N0YXRlX2dldF9j cm9wKHNkX3N0YXRlLCBwYWQpOwo+ID4gLcKgwqDCoMKgwqDCoCBjYXNlIFY0TDJfU1VCREVWX0ZP Uk1BVF9BQ1RJVkU6Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmlt eDIxNC0+Y3JvcDsKPiA+IC3CoMKgwqDCoMKgwqAgZGVmYXVsdDoKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+ID4gLcKgwqDCoMKgwqDCoCB9Cj4gPiAtfQo+ ID4gLQo+ID4gwqBzdGF0aWMgaW50IGlteDIxNF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRl diAqc2QsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnNkX3N0YXRlLAo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm9ybWF0KQo+ID4gQEAgLTYwNCwzNCArNTY4LDI1IEBAIHN0 YXRpYyBpbnQgaW14MjE0X3NldF9mb3JtYXQoc3RydWN0Cj4gPiB2NGwyX3N1YmRldiAqc2QsCj4g PiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9yZWN0ICpfX2Nyb3A7Cj4gPiDCoMKgwqDCoMKg wqDCoCBjb25zdCBzdHJ1Y3QgaW14MjE0X21vZGUgKm1vZGU7Cj4gPiAKPiA+IC3CoMKgwqDCoMKg wqAgbXV0ZXhfbG9jaygmaW14MjE0LT5tdXRleCk7Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgIF9f Y3JvcCA9IF9faW14MjE0X2dldF9wYWRfY3JvcChpbXgyMTQsIHNkX3N0YXRlLCBmb3JtYXQtCj4g PiA+cGFkLAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdC0+d2hpY2gpOwo+ID4gLQo+ID4g wqDCoMKgwqDCoMKgwqAgbW9kZSA9IHY0bDJfZmluZF9uZWFyZXN0X3NpemUoaW14MjE0X21vZGVz LAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVJSQVlfU0laRShpbXgyMTRfbW9kZXMpLAo+ID4gd2lk dGgsIGhlaWdodCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdC0+Zm9ybWF0LndpZHRoLAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9ybWF0LT5mb3JtYXQuaGVpZ2h0KTsKPiA+IAo+ID4gLcKg wqDCoMKgwqDCoCBfX2Nyb3AtPndpZHRoID0gbW9kZS0+d2lkdGg7Cj4gPiAtwqDCoMKgwqDCoMKg IF9fY3JvcC0+aGVpZ2h0ID0gbW9kZS0+aGVpZ2h0Owo+ID4gK8KgwqDCoMKgwqDCoCBpbXgyMTRf dXBkYXRlX3BhZF9mb3JtYXQoaW14MjE0LCBtb2RlLCAmZm9ybWF0LT5mb3JtYXQsCj4gPiBmb3Jt YXQtPmZvcm1hdC5jb2RlKTsKPiA+ICvCoMKgwqDCoMKgwqAgX19mb3JtYXQgPSB2NGwyX3N1YmRl dl9zdGF0ZV9nZXRfZm9ybWF0KHNkX3N0YXRlLCAwKTsKPiA+IAo+ID4gLcKgwqDCoMKgwqDCoCBf X2Zvcm1hdCA9IF9faW14MjE0X2dldF9wYWRfZm9ybWF0KGlteDIxNCwgc2Rfc3RhdGUsCj4gPiBm b3JtYXQtPnBhZCwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdC0+d2hpY2gp Owo+ID4gLcKgwqDCoMKgwqDCoCBfX2Zvcm1hdC0+d2lkdGggPSBfX2Nyb3AtPndpZHRoOwo+ID4g LcKgwqDCoMKgwqDCoCBfX2Zvcm1hdC0+aGVpZ2h0ID0gX19jcm9wLT5oZWlnaHQ7Cj4gPiAtwqDC oMKgwqDCoMKgIF9fZm9ybWF0LT5jb2RlID0gSU1YMjE0X01CVVNfQ09ERTsKPiA+IC3CoMKgwqDC oMKgwqAgX19mb3JtYXQtPmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOwo+ID4gLcKgwqDCoMKgwqDC oCBfX2Zvcm1hdC0+Y29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCOwo+ID4gLcKgwqDC oMKgwqDCoCBfX2Zvcm1hdC0+eWNiY3JfZW5jID0gVjRMMl9NQVBfWUNCQ1JfRU5DX0RFRkFVTFQo X19mb3JtYXQtCj4gPiA+Y29sb3JzcGFjZSk7Cj4gPiAtwqDCoMKgwqDCoMKgIF9fZm9ybWF0LT5x dWFudGl6YXRpb24gPQo+ID4gVjRMMl9NQVBfUVVBTlRJWkFUSU9OX0RFRkFVTFQodHJ1ZSwKPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgX19mb3JtYXQtPmNvbG9yc3BhY2UsIF9fZm9ybWF0LQo+ID4gPnljYmNyX2VuYyk7Cj4g PiAtwqDCoMKgwqDCoMKgIF9fZm9ybWF0LT54ZmVyX2Z1bmMgPSBWNEwyX01BUF9YRkVSX0ZVTkNf REVGQVVMVChfX2Zvcm1hdC0KPiA+ID5jb2xvcnNwYWNlKTsKPiA+ICvCoMKgwqDCoMKgwqAgaWYg KGlteDIxNC0+Y3VyX21vZGUgPT0gbW9kZSAmJiBfX2Zvcm1hdC0+Y29kZSA9PSBmb3JtYXQtCj4g PiA+Zm9ybWF0LmNvZGUpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g MDsKPiA+IAo+IAo+IElzbnQnwqDCoCBpZiAoaW14MjE0LT5jdXJfbW9kZSA9PSBtb2RlKSBlbm91 Z2g/Cj4gCgpJJ2xsIGRyb3AgdGhlIGNvbXBsZXRlIGNoZWNrLCBhcyBpdCB3YXMgZG9uZSBmb3Ig aW14MjE5IGluCmZhZWNlNGFkNzJiMCAoIm1lZGlhOiBpMmM6IGlteDIxOTogUGVyZm9ybSBhIGZ1 bGwgbW9kZSBzZXQgdW5jb25kaXRpb25hbGx5IikKCkJlc3QgcmVnYXJkcywKQW5kcsOpCgo+IAo+ ID4gLcKgwqDCoMKgwqDCoCBmb3JtYXQtPmZvcm1hdCA9ICpfX2Zvcm1hdDsKPiA+ICvCoMKgwqDC oMKgwqAgKl9fZm9ybWF0ID0gZm9ybWF0LT5mb3JtYXQ7Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqAg bXV0ZXhfdW5sb2NrKCZpbXgyMTQtPm11dGV4KTsKPiA+ICvCoMKgwqDCoMKgwqAgX19jcm9wID0g djRsMl9zdWJkZXZfc3RhdGVfZ2V0X2Nyb3Aoc2Rfc3RhdGUsIDApOwo+ID4gK8KgwqDCoMKgwqDC oCBfX2Nyb3AtPndpZHRoID0gbW9kZS0+d2lkdGg7Cj4gPiArwqDCoMKgwqDCoMKgIF9fY3JvcC0+ aGVpZ2h0ID0gbW9kZS0+aGVpZ2h0Owo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAoZm9ybWF0 LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFKQo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW14MjE0LT5jdXJfbW9kZSA9IG1vZGU7Cj4gPiAKPiA+IMKgwqDCoMKg wqDCoMKgIHJldHVybiAwOwo+ID4gwqB9Cj4gPiBAQCAtNjQwLDE0ICs1OTUsOSBAQCBzdGF0aWMg aW50IGlteDIxNF9nZXRfc2VsZWN0aW9uKHN0cnVjdAo+ID4gdjRsMl9zdWJkZXYgKnNkLAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IHY0bDJfc3ViZGV2X3N0YXRlICpzZF9zdGF0ZSwKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCB2NGwyX3N1YmRldl9zZWxlY3Rpb24gKnNlbCkKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoCBz dHJ1Y3QgaW14MjE0ICppbXgyMTQgPSB0b19pbXgyMTQoc2QpOwo+ID4gLQo+ID4gwqDCoMKgwqDC oMKgwqAgc3dpdGNoIChzZWwtPnRhcmdldCkgewo+ID4gwqDCoMKgwqDCoMKgwqAgY2FzZSBWNEwy X1NFTF9UR1RfQ1JPUDoKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X2xv Y2soJmlteDIxNC0+bXV0ZXgpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2Vs LT5yID0gKl9faW14MjE0X2dldF9wYWRfY3JvcChpbXgyMTQsIHNkX3N0YXRlLAo+ID4gc2VsLT5w YWQsCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsLT53aGljaCk7 Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmlteDIxNC0+ bXV0ZXgpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VsLT5yID0gKnY0bDJf c3ViZGV2X3N0YXRlX2dldF9jcm9wKHNkX3N0YXRlLCAwKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqAgY2FzZSBWNEwy X1NFTF9UR1RfTkFUSVZFX1NJWkU6Cj4gPiBAQCAtODI2LDQwICs3NzYsMjggQEAgc3RhdGljIGlu dCBpbXgyMTRfd3JpdGVfdGFibGUoc3RydWN0IGlteDIxNAo+ID4gKmlteDIxNCwKPiA+IAo+ID4g wqBzdGF0aWMgaW50IGlteDIxNF9zdGFydF9zdHJlYW1pbmcoc3RydWN0IGlteDIxNCAqaW14MjE0 KQo+ID4gwqB7Cj4gPiAtwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBpbXgyMTRfbW9kZSAqbW9k ZTsKPiA+IMKgwqDCoMKgwqDCoMKgIGludCByZXQ7Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqAgbXV0 ZXhfbG9jaygmaW14MjE0LT5tdXRleCk7Cj4gPiDCoMKgwqDCoMKgwqDCoCByZXQgPSBpbXgyMTRf d3JpdGVfdGFibGUoaW14MjE0LCBtb2RlX3RhYmxlX2NvbW1vbik7Cj4gPiDCoMKgwqDCoMKgwqDC oCBpZiAocmV0IDwgMCkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9l cnIoaW14MjE0LT5kZXYsICJjb3VsZCBub3Qgc2VudCBjb21tb24gdGFibGUKPiA+ICVkXG4iLCBy ZXQpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcjsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gPiDCoMKgwqDCoMKgwqDC oCB9Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqAgbW9kZSA9IHY0bDJfZmluZF9uZWFyZXN0X3NpemUo aW14MjE0X21vZGVzLAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUlJBWV9TSVpFKGlteDIxNF9tb2RlcyksIHdpZHRoLAo+ ID4gaGVpZ2h0LAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbXgyMTQtPmZtdC53aWR0aCwgaW14MjE0LQo+ID4gPmZtdC5o ZWlnaHQpOwo+ID4gLcKgwqDCoMKgwqDCoCByZXQgPSBpbXgyMTRfd3JpdGVfdGFibGUoaW14MjE0 LCBtb2RlLT5yZWdfdGFibGUpOwo+ID4gK8KgwqDCoMKgwqDCoCByZXQgPSBpbXgyMTRfd3JpdGVf dGFibGUoaW14MjE0LCBpbXgyMTQtPmN1cl9tb2RlLQo+ID4gPnJlZ190YWJsZSk7Cj4gPiDCoMKg wqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRldl9lcnIoaW14MjE0LT5kZXYsICJjb3VsZCBub3Qgc2VudCBtb2RlIHRhYmxlCj4gPiAl ZFxuIiwgcmV0KTsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3I7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ID4gwqDCoMKg wqDCoMKgwqAgfQo+ID4gwqDCoMKgwqDCoMKgwqAgcmV0ID0gX192NGwyX2N0cmxfaGFuZGxlcl9z ZXR1cCgmaW14MjE0LT5jdHJscyk7Cj4gPiDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoaW14MjE0LT5kZXYsICJj b3VsZCBub3Qgc3luYyB2NGwyCj4gPiBjb250cm9sc1xuIik7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPiA+IMKgwqDCoMKgwqDCoMKgIH0KPiA+IMKgwqDCoMKgwqDCoMKgIHJl dCA9IHJlZ21hcF93cml0ZShpbXgyMTQtPnJlZ21hcCwgSU1YMjE0X1JFR19NT0RFX1NFTEVDVCwK PiA+IElNWDIxNF9NT0RFX1NUUkVBTUlORyk7Cj4gPiAtwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAw KSB7Cj4gPiArwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldl9lcnIoaW14MjE0LT5kZXYsICJjb3VsZCBub3Qgc2VudCBzdGFydCB0 YWJsZQo+ID4gJWRcbiIsIHJldCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBn b3RvIGVycm9yOwo+ID4gLcKgwqDCoMKgwqDCoCB9Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqAgbXV0 ZXhfdW5sb2NrKCZpbXgyMTQtPm11dGV4KTsKPiA+IC3CoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4g PiAtCj4gPiAtZXJyb3I6Cj4gPiAtwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmaW14MjE0LT5t dXRleCk7Cj4gPiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ID4gwqB9Cj4gPiAKPiA+IEBA IC04NzcsNiArODE1LDcgQEAgc3RhdGljIGludCBpbXgyMTRfc3RvcF9zdHJlYW1pbmcoc3RydWN0 IGlteDIxNAo+ID4gKmlteDIxNCkKPiA+IMKgc3RhdGljIGludCBpbXgyMTRfc19zdHJlYW0oc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsIGludCBlbmFibGUpCj4gPiDCoHsKPiA+IMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBpbXgyMTQgKmlteDIxNCA9IHRvX2lteDIxNChzdWJkZXYpOwo+ID4gK8Kg wqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ID4gwqDCoMKgwqDC oMKgwqAgaW50IHJldDsKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqAgaWYgKGVuYWJsZSkgewo+ID4g QEAgLTg4NCw3ICs4MjMsOSBAQCBzdGF0aWMgaW50IGlteDIxNF9zX3N0cmVhbShzdHJ1Y3QgdjRs Ml9zdWJkZXYKPiA+ICpzdWJkZXYsIGludCBlbmFibGUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gPiAKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0YXRlID0KPiA+IHY0bDJfc3ViZGV2X2xvY2tfYW5kX2dldF9hY3RpdmVf c3RhdGUoc3ViZGV2KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBp bXgyMTRfc3RhcnRfc3RyZWFtaW5nKGlteDIxNCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB2NGwyX3N1YmRldl91bmxvY2tfc3RhdGUoc3RhdGUpOwo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9ycG1fcHV0Owo+ID4gwqDCoMKgwqDC oMKgwqAgfSBlbHNlIHsKPiA+IEBAIC05NDgsNyArODg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB2NGwyX3N1YmRldl9wYWRfb3BzCj4gPiBpbXgyMTRfc3ViZGV2X3BhZF9vcHMgPSB7Cj4gPiDC oMKgwqDCoMKgwqDCoCAuZW51bV9tYnVzX2NvZGUgPSBpbXgyMTRfZW51bV9tYnVzX2NvZGUsCj4g PiDCoMKgwqDCoMKgwqDCoCAuZW51bV9mcmFtZV9zaXplID0gaW14MjE0X2VudW1fZnJhbWVfc2l6 ZSwKPiA+IMKgwqDCoMKgwqDCoMKgIC5lbnVtX2ZyYW1lX2ludGVydmFsID0gaW14MjE0X2VudW1f ZnJhbWVfaW50ZXJ2YWwsCj4gPiAtwqDCoMKgwqDCoMKgIC5nZXRfZm10ID0gaW14MjE0X2dldF9m b3JtYXQsCj4gPiArwqDCoMKgwqDCoMKgIC5nZXRfZm10ID0gdjRsMl9zdWJkZXZfZ2V0X2ZtdCwK PiA+IMKgwqDCoMKgwqDCoMKgIC5zZXRfZm10ID0gaW14MjE0X3NldF9mb3JtYXQsCj4gPiDCoMKg wqDCoMKgwqDCoCAuZ2V0X3NlbGVjdGlvbiA9IGlteDIxNF9nZXRfc2VsZWN0aW9uLAo+ID4gwqDC oMKgwqDCoMKgwqAgLmdldF9mcmFtZV9pbnRlcnZhbCA9IGlteDIxNF9nZXRfZnJhbWVfaW50ZXJ2 YWwsCj4gPiBAQCAtMTA3OSwxMyArMTAyMCwxMyBAQCBzdGF0aWMgaW50IGlteDIxNF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ID4gKmNsaWVudCkKPiA+IMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRp bWVfZW5hYmxlKGlteDIxNC0+ZGV2KTsKPiA+IMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfaWRs ZShpbXgyMTQtPmRldik7Cj4gPiAKPiA+ICvCoMKgwqDCoMKgwqAgLyogU2V0IGRlZmF1bHQgbW9k ZSB0byBtYXggcmVzb2x1dGlvbiAqLwo+ID4gK8KgwqDCoMKgwqDCoCBpbXgyMTQtPmN1cl9tb2Rl ID0gJmlteDIxNF9tb2Rlc1swXTsKPiA+ICsKPiA+IMKgwqDCoMKgwqDCoMKgIHJldCA9IGlteDIx NF9jdHJsc19pbml0KGlteDIxNCk7Cj4gPiDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yX3Bvd2VyX29mZjsKPiA+ IAo+ID4gLcKgwqDCoMKgwqDCoCBtdXRleF9pbml0KCZpbXgyMTQtPm11dGV4KTsKPiA+IC3CoMKg wqDCoMKgwqAgaW14MjE0LT5jdHJscy5sb2NrID0gJmlteDIxNC0+bXV0ZXg7Cj4gPiAtCj4gPiDC oMKgwqDCoMKgwqDCoCBpbXgyMTQtPnNkLmZsYWdzIHw9IFY0TDJfU1VCREVWX0ZMX0hBU19ERVZO T0RFOwo+ID4gwqDCoMKgwqDCoMKgwqAgaW14MjE0LT5wYWQuZmxhZ3MgPSBNRURJQV9QQURfRkxf U09VUkNFOwo+ID4gwqDCoMKgwqDCoMKgwqAgaW14MjE0LT5zZC5kZXYgPSAmY2xpZW50LT5kZXY7 Cj4gPiBAQCAtMTA5NywyMCArMTAzOCwyNyBAQCBzdGF0aWMgaW50IGlteDIxNF9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ID4gKmNsaWVudCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGZyZWVfY3RybDsKPiA+IMKgwqDCoMKgwqDCoMKgIH0KPiA+IAo+ID4gLcKgwqDC oMKgwqDCoCBpbXgyMTRfZW50aXR5X2luaXRfc3RhdGUoJmlteDIxNC0+c2QsIE5VTEwpOwo+ID4g K8KgwqDCoMKgwqDCoCBpbXgyMTQtPnNkLnN0YXRlX2xvY2sgPSBpbXgyMTQtPmN0cmxzLmxvY2s7 Cj4gPiArwqDCoMKgwqDCoMKgIHJldCA9IHY0bDJfc3ViZGV2X2luaXRfZmluYWxpemUoJmlteDIx NC0+c2QpOwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihkZXYsICJzdWJkZXYgaW5pdCBlcnJvcjogJWRcbiIs IHJldCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZyZWVfZW50aXR5 Owo+ID4gK8KgwqDCoMKgwqDCoCB9Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgIHJldCA9IHY0bDJf YXN5bmNfcmVnaXN0ZXJfc3ViZGV2X3NlbnNvcigmaW14MjE0LT5zZCk7Cj4gPiDCoMKgwqDCoMKg wqDCoCBpZiAocmV0IDwgMCkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRl dl9lcnIoZGV2LCAiY291bGQgbm90IHJlZ2lzdGVyIHY0bDIgZGV2aWNlXG4iKTsKPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZnJlZV9lbnRpdHk7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yX3N1YmRldl9jbGVhbnVwOwo+ID4gwqDCoMKg wqDCoMKgwqAgfQo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPiA+IAo+ID4gK2Vy cm9yX3N1YmRldl9jbGVhbnVwOgo+ID4gK8KgwqDCoMKgwqDCoCB2NGwyX3N1YmRldl9jbGVhbnVw KCZpbXgyMTQtPnNkKTsKPiA+ICsKPiA+IMKgZnJlZV9lbnRpdHk6Cj4gPiDCoMKgwqDCoMKgwqDC oCBtZWRpYV9lbnRpdHlfY2xlYW51cCgmaW14MjE0LT5zZC5lbnRpdHkpOwo+ID4gwqBmcmVlX2N0 cmw6Cj4gPiAtwqDCoMKgwqDCoMKgIG11dGV4X2Rlc3Ryb3koJmlteDIxNC0+bXV0ZXgpOwo+ID4g wqDCoMKgwqDCoMKgwqAgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmaW14MjE0LT5jdHJscyk7Cj4g PiDCoGVycm9yX3Bvd2VyX29mZjoKPiA+IMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfZGlzYWJs ZShpbXgyMTQtPmRldik7Cj4gPiBAQCAtMTEyNSwxMyArMTA3MywxMiBAQCBzdGF0aWMgdm9pZCBp bXgyMTRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gPiAqY2xpZW50KQo+ID4gwqDCoMKgwqDC oMKgwqAgc3RydWN0IGlteDIxNCAqaW14MjE0ID0gdG9faW14MjE0KHNkKTsKPiA+IAo+ID4gwqDC oMKgwqDCoMKgwqAgdjRsMl9hc3luY191bnJlZ2lzdGVyX3N1YmRldigmaW14MjE0LT5zZCk7Cj4g PiArwqDCoMKgwqDCoMKgIHY0bDJfc3ViZGV2X2NsZWFudXAoc2QpOwo+ID4gwqDCoMKgwqDCoMKg wqAgbWVkaWFfZW50aXR5X2NsZWFudXAoJmlteDIxNC0+c2QuZW50aXR5KTsKPiA+IMKgwqDCoMKg wqDCoMKgIHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmlteDIxNC0+Y3RybHMpOwo+ID4gCj4gPiDC oMKgwqDCoMKgwqDCoCBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2KTsKPiA+IMKgwqDC oMKgwqDCoMKgIHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+ID4gLQo+ ID4gLcKgwqDCoMKgwqDCoCBtdXRleF9kZXN0cm95KCZpbXgyMTQtPm11dGV4KTsKPiA+IMKgfQo+ ID4gCj4gPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteDIxNF9vZl9tYXRj aFtdID0gewo+ID4gCj4gPiAtLQo+ID4gMi40Ny4wCj4gPiAKPiA+IAoK