From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm/i915: Enable scanline read for gen9 dsi Date: Mon, 18 Sep 2017 17:24:51 +0300 Message-ID: <20170918142451.GA4914@intel.com> References: <1505391181-9477-2-git-send-email-vidya.srinivas@intel.com> <1505741541-30907-1-git-send-email-vidya.srinivas@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E24E6E0CB for ; Mon, 18 Sep 2017 14:24:55 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, Vidya Srinivas List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMTgsIDIwMTcgYXQgMDM6NTc6MzhQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTgtMDktMTcgb20gMTU6MzIgc2NocmVlZiBWaWR5YSBTcmluaXZhczoK PiA+IEZyb206IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPgo+ID4gRm9y IGdlbjkgcGxhdGZvcm1zLCBkc2kgdGltaW5ncyBhcmUgZHJpdmVuIGZyb20gcG9ydCBpbnN0ZWFk IG9mIHBpcGUKPiA+ICh1bmxpa2UgZGRpKS4gVGh1cywgd2UgY2FuJ3QgcmVseSBvbiBwaXBlIHJl Z2lzdGVycyB0byBnZXQgdGhlIHRpbWluZwo+ID4gaW5mb3JtYXRpb24uIEV2ZW4gc2NhbmxpbmUg cmVnaXN0ZXIgcmVhZCB3aWxsIG5vdCBiZSBmdW5jdGlvbmFsLgo+ID4gVGhpcyBpcyBjYXVzaW5n IHZibGFuayBldmFzaW9uIGxvZ2ljIHRvIGZhaWwgc2luY2UgaXQgcmVsaWVzIG9uCj4gPiBzY2Fu bGluZSwgY2F1c2luZyBhdG9taWMgdXBkYXRlIGZhaWx1cmUgd2FybmluZ3MuCj4gPgo+ID4gVGhp cyBwYXRjaCB1c2VzIHBpcGUgZnJhbWVzdGFtcCBhbmQgY3VycmVudCB0aW1lc3RhbXAgcmVnaXN0 ZXJzCj4gPiB0byBjYWxjdWxhdGUgc2NhbmxpbmUuIFRoaXMgaXMgYW4gaW5kaXJlY3Qgd2F5IHRv IGdldCB0aGUgc2NhbmxpbmUuCj4gPiBJdCBoZWxwcyByZXNvbHZlIGF0b21pYyB1cGRhdGUgZmFp bHVyZSBmb3IgZ2VuOSBkc2kgcGxhdGZvcm1zLgo+ID4KPiA+IHYyOiBBZGRyZXNzZWQgVmlsbGUg YW5kIERhbmllbCdzIHJldmlldyBjb21tZW50cy4gVXBkYXRlZCB0aGUKPiA+IHJlZ2lzdGVyIE1B Q1JPcywgaGFuZGxlZCByYWNlIGNvbmRpdGlvbiBmb3IgcmVnaXN0ZXIgcmVhZHMsCj4gPiBleHRy YWN0ZWQgdGltaW5ncyBmcm9tIHRoZSBod21vZGUuIFJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24K PiA+IGNydGMtPmNvbmZpZyB0byBnZXQgdGhlIGVuY29kZXIgdHlwZS4KPiA+Cj4gPiB2MzogTWFk ZSBnZXQgc2NhbmxpbmUgZnVuY3Rpb24gZ2VuZXJpYwo+ID4KPiA+IENyZWRpdHMtdG86IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1i eTogQ2hhbmRyYSBLb25kdXJ1IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwuY29tPgo+ID4gU2lnbmVk LW9mZi1ieTogVmlkeWEgU3Jpbml2YXMgPHZpZHlhLnNyaW5pdmFzQGludGVsLmNvbT4KPiA+IC0t LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAyICsrCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgIHwgIDcgKysrKysKPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAxMSArKysrKysrCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNjAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspCj4g Pgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCAxY2MzMWE1Li5kOWVmZTgzIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTQwODUsNiArNDA4NSw4IEBA IHZvaWQgaW50ZWxfc2JpX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTE2IHJlZywgdTMyIHZhbHVlLAo+ID4gIHUzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZyk7Cj4gPiAgdm9pZCB2bHZfZmxpc2RzaV93 cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2YWwp Owo+ID4gIAo+ID4gK3UzMiBnZW45X2dldF9zY2FubGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 Yyk7Cj4gPiArCj4gPiAgLyogaW50ZWxfZHBpb19waHkuYyAqLwo+ID4gIHZvaWQgYnh0X3BvcnRf dG9fcGh5X2NoYW5uZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBv cnQgcG9ydCwKPiA+ICAJCQkgICAgIGVudW0gZHBpb19waHkgKnBoeSwgZW51bSBkcGlvX2NoYW5u ZWwgKmNoKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gaW5kZXggNWQzOTFlNi4uNDc2 NjhkZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+IEBAIC03ODEsNiArNzgx LDcgQEAgc3RhdGljIGludCBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5lKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQo+ID4gIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2Ymxhbms7Cj4gPiAgCWVu dW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+ICAJaW50IHBvc2l0aW9uLCB2dG90YWw7Cj4g PiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ID4gIAo+ID4gIAlpZiAoIWNydGMt PmFjdGl2ZSkKPiA+ICAJCXJldHVybiAtMTsKPiA+IEBAIC03OTIsNiArNzkzLDEyIEBAIHN0YXRp YyBpbnQgX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiA+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gPiAgCQl2 dG90YWwgLz0gMjsKPiA+ICAKPiA+ICsJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpIHx8IElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoY3J0 Yy0+YmFzZS5kZXYsICZjcnRjLT5iYXNlLCBlbmNvZGVyKQo+ID4gKwkJCWlmIChlbmNvZGVyLT50 eXBlID09IElOVEVMX09VVFBVVF9EU0kpCj4gPiArCQkJCXJldHVybiBnZW45X2dldF9zY2FubGlu ZShjcnRjKTsKPiBJIHJlYWxseSB0aGluayB3ZSBzaG91bGRuJ3QgbG9vcCBvdmVyIGFsbCBlbmNv ZGVycyBmb3Igc29tZXRoaW5nIGFzIGNyaXRpY2FsIGFzIF9faW50ZWxfZ2V0X2NydGNfc2Nhbmxp bmUuLgo+ID4gKwl9Cj4gPiArCj4gPiAgCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiA+ICAJCXBv c2l0aW9uID0gSTkxNV9SRUFEX0ZXKFBJUEVEU0wocGlwZSkpICYgRFNMX0xJTkVNQVNLX0dFTjI7 Cj4gPiAgCWVsc2UKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gaW5kZXggMGIwMzI2MC4u ODUxNjhlZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC04ODAyLDYg Kzg4MDIsMTcgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gPiAgI2RlZmluZSBNSVBJT19UWEVT Q19DTEtfRElWMgkJCV9NTUlPKDB4MTYwMDA4KQo+ID4gICNkZWZpbmUgIEdMS19UWF9FU0NfQ0xL X0RJVjJfTUFTSwkJCTB4M0ZGCj4gPiAgCj4gPiArLyogR2VuNCsgVGltZXN0YW1wIGFuZCBQaXBl IEZyYW1lIHRpbWUgc3RhbXAgcmVnaXN0ZXJzICovCj4gPiArI2RlZmluZSBHRU40X1RJTUVTVEFN UF9DVFIJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFICsgMHgyMzU4KQo+ID4gKyNkZWZpbmUgR0VO N19USU1FU1RBTVBfQ1RSCV9NTUlPKDB4NDQwNzApCj4gPiArCj4gPiArI2RlZmluZSBfUElQRV9G Uk1UTVNUTVBfQQkJMHg3MDA0OAo+ID4gKyNkZWZpbmUgX1BJUEVfRlJNVE1TVE1QX0IJCTB4NzEw NDgKPiA+ICsjZGVmaW5lIF9JVkJfUElQRV9GUk1UTVNUTVBfQwkweDcyMDQ4Cj4gPiArI2RlZmlu ZSBQSVBFX0ZSTVRNU1RNUChwaXBlKQkJXAo+ID4gKwkJCV9NTUlPX1BJUEUzKChwaXBlKSwgX1BJ UEVfRlJNVE1TVE1QX0EsIFwKPiA+ICsJCQkJX1BJUEVfRlJNVE1TVE1QX0IsIF9JVkJfUElQRV9G Uk1UTVNUTVBfQykKPiA+ICsKPiA+ICAvKiBCWFQgTUlQSSBjbG9jayBjb250cm9scyAqLwo+ID4g ICNkZWZpbmUgQlhUX01BWF9WQVJfT1VUUFVUX0tIWgkJCTM5NTAwCj4gPiAgCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCAwODcxODA3Li42MDEwMzJmIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0xMDM1Miw2ICsx MDM1Miw2NiBAQCBzdGF0aWMgYm9vbCBuZWVkc19zY2FsaW5nKGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3RhdGUpCj4gPiAgCXJldHVybiAoc3JjX3cgIT0gZHN0X3cgfHwgc3JjX2gg IT0gZHN0X2gpOwo+ID4gIH0KPiA+ICAKPiA+ICsvKgo+ID4gKyAqIEZvciBHZW45IERTSSwgcGlw ZSBzY2FubGluZSByZWdpc3RlciB3aWxsIG5vdAo+ID4gKyAqIHdvcmsgdG8gZ2V0IHRoZSBzY2Fu bGluZSBzaW5jZSB0aGUgdGltaW5ncwo+ID4gKyAqIGFyZSBkcml2ZW4gZnJvbSB0aGUgUE9SVCAo dW5saWtlIERESSBlbmNvZGVycykuCj4gPiArICogVGhpcyBmdW5jdGlvbiB3aWxsIHVzZSBGcmFt ZXN0YW1wIGFuZCBjdXJyZW50Cj4gPiArICogdGltZXN0YW1wIHJlZ2lzdGVycyB0byBjYWxjdWxh dGUgdGhlIHNjYW5saW5lLgo+ID4gKyAqLwo+ID4gK3UzMiBnZW45X2dldF9zY2FubGluZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+ID4gKwl1MzIgY3J0Y192Ymxhbmtfc3RhcnQgPSBjcnRjLT5iYXNl Lm1vZGUuY3J0Y192Ymxhbmtfc3RhcnQ7Cj4gPiArCXUzMiBjcnRjX3Z0b3RhbCA9IGNydGMtPmJh c2UubW9kZS5jcnRjX3Z0b3RhbDsKPiA+ICsJdTMyIGNydGNfaHRvdGFsID0gY3J0Yy0+YmFzZS5t b2RlLmNydGNfaHRvdGFsOwo+ID4gKwl1MzIgY3J0Y19jbG9jayA9IGNydGMtPmJhc2UubW9kZS5j cnRjX2Nsb2NrOwo+ID4gKwl1NjQgc2NhbmxpbmUgPSAwLCBzY2FuX3ByZXZfdGltZSwgc2Nhbl9j dXJyX3RpbWUsIHNjYW5fcG9zdF90aW1lOwo+IEFyZW4ndCBhbGwgdGhvc2UgMCBzaW5jZSB0aGV5 J3JlIG9ubHkgc2V0IGZvciBjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLCB3aGlsZSBjcnRjLT5t b2RlIGlzIGFzc2lnbmVkIHRvIGNydGNfc3RhdGUtPm1vZGU/IFlvdSdkIHByb2JhYmx5IG5lZWQg dG8gbG9vayBhdCBkZXYtPnZibGFua1tjcnRjLT5waXBlXS5od21vZGUgZm9yIHRob3NlLCB3aGlj aCBzaG91bGQgaGF2ZSBiZWVuIHBhc3NlZCBhcyBwYXJhbWV0ZXIuLgo+IFdpdGggYSBiaXQgb2Yg bHVjayB5b3UgY291bGQgZXZlbiB1c2UgdGhlIGRlcml2ZWQgbnMgdmFsdWVzIHNldCBpbiBkcm1f Y2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyB0aGUg bWF0aCBoZXJlIHlvdXJzZWxmLgoKSUlSQyB0aGUgZGVyaXZlZCB2YWx1ZXMgZW5kZWQgdXAgaGF2 aW5nIHF1aXRlIGEgYml0IG9mIHJvdW5kaW5nIGVycm9yCmluIHRoZW0uIE9yIG1heWJlIHRoYXQg anVzdCB0aGUgcGl4ZWwgZHVyYXRpb24gKHdoaWNoIElJUkMgSSBudWtlZAphbHJlYWR5KS4gSSB3 b3VsZCBoYXZlIG51a2VkIHRoZSBsaW5lIGR1cmF0aW9uIHRvbyBpZiBpdCB3YXNuJ3QgZm9yCm5v dXZlYXUgdXNpbmcgaXQuIFNvIEkgdGhpbmsgSSdkIHJhdGhlciBub3QgZXhwYW5kIGl0cyB1c2Uu CgpOb3Qgc3VyZSB3ZSdkIGFjdHVhbGx5IHNhdmUgYW55dGhpbmcgYnkgdXNpbmcgdGhlIGRlcml2 ZWQgdmFsdWUgYW55d2F5LgpXZSdsbCBzdGlsbCBoYXZlIHRvIGRvIHRoZSBleHBlbnNpdmUgZGl2 aXNpb24gYXQgbGVhc3QuIEhtbS4gSSBndWVzcyB3ZQpjb3VsZCBnZXQgcmlkIG9mIG9uZSBtdWx0 aXBsaWNhdGlvbi4KCj4gPiArCVdBUk5fT04oIWNydGNfdnRvdGFsKTsKPiA+ICsJaWYgKCFjcnRj X3Z0b3RhbCkKPiA+ICsJCXJldHVybiBzY2FubGluZTsKPiA+ICsKPiA+ICsJLyogVG8gYXZvaWQg dGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHdlIG1pZ2h0IGNyb3NzIGludG8gdGhlCj4gPiArCSAq IG5leHQgdmJsYW5rIGp1c3QgYmV0d2VlbiB0aGUgUElQRV9GUk1UTVNUTVAgYW5kIFRJTUVTVEFN UF9DVFIKPiA+ICsJICogcmVhZHMuIFdlIG1ha2Ugc3VyZSB3ZSByZWFkIFBJUEVfRlJNVE1TVE1Q IGFuZCBUSU1FU1RBTVBfQ1RSCj4gPiArCSAqIGR1cmluZyB0aGUgc2FtZSBmcmFtZS4KPiA+ICsJ ICovCj4gPiArCWRvIHsKPiA+ICsJCS8qCj4gPiArCQkgKiBUaGlzIGZpZWxkIHByb3ZpZGVzIHJl YWQgYmFjayBvZiB0aGUgZGlzcGxheQo+ID4gKwkJICogcGlwZSBmcmFtZSB0aW1lIHN0YW1wLiBU aGUgdGltZSBzdGFtcCB2YWx1ZQo+ID4gKwkJICogaXMgc2FtcGxlZCBhdCBldmVyeSBzdGFydCBv ZiB2ZXJ0aWNhbCBibGFuay4KPiA+ICsJCSAqLwo+ID4gKwkJc2Nhbl9wcmV2X3RpbWUgPSBJOTE1 X1JFQURfRlcoUElQRV9GUk1UTVNUTVAoY3J0Yy0+cGlwZSkpOwo+ID4gKwo+ID4gKwkJLyoKPiA+ ICsJCSAqIFRoZSBUSU1FU1RBTVBfQ1RSIHJlZ2lzdGVyIGhhcyB0aGUgY3VycmVudAo+ID4gKwkJ ICogdGltZSBzdGFtcCB2YWx1ZS4KPiA+ICsJCSAqLwo+ID4gKwkJc2Nhbl9jdXJyX3RpbWUgPSBJ OTE1X1JFQURfRlcoR0VON19USU1FU1RBTVBfQ1RSKTsKPiA+ICsKPiA+ICsJCXNjYW5fcG9zdF90 aW1lID0gSTkxNV9SRUFEX0ZXKFBJUEVfRlJNVE1TVE1QKGNydGMtPnBpcGUpKTsKPiA+ICsJfSB3 aGlsZSAoc2Nhbl9wb3N0X3RpbWUgIT0gc2Nhbl9wcmV2X3RpbWUpOwo+ID4gKwo+ID4gKwkvKgo+ ID4gKwkgKiBTaW5jZSB0aGUgcmVnaXN0ZXIgaXMgMzIgYml0IGFuZCB0aGUgdmFsdWVzCj4gPiAr CSAqIGNhbiBvdmVyZmxvdyBhbmQgd3JhcCBhcm91bmQsIG1ha2luZyBzdXJlCj4gPiArCSAqIGN1 cnJlbnQgdGltZSBhY2NvdW50cyBmb3IgdGhlIHJlZ2lzdGVyCj4gPiArCSAqIHdyYXAKPiA+ICsJ ICovCj4gPiArCWlmIChzY2FuX2N1cnJfdGltZSA8IHNjYW5fcHJldl90aW1lKQo+ID4gKwkJc2Nh bl9jdXJyX3RpbWUgKz0gMHgxMDAwMDAwMDA7Cj4gPiArCj4gPiArCXNjYW5saW5lID0gZGl2X3U2 NChtdWxfdTY0X3UzMl9zaHIoKHNjYW5fY3Vycl90aW1lIC0gc2Nhbl9wcmV2X3RpbWUpLAo+IElz bid0IG11bF91NjRfdTMyX2RpdiBleGFjdGx5IHdoYXQgeW91IHdhbnQgaGVyZT8KCkkgdGhpbmsg d2UnZCBhY3R1YWxseSB3YW50IGEgbXVsX3UzMl91MzJfZGl2KCkuIEJ1dCB0aGF0IGRvZXNuJ3Qg c2VlbQp0byBleGlzdC4KCj4gPiArCQkJCQljcnRjX2Nsb2NrLCAwKSwgMTAwMCAqIGNydGNfaHRv dGFsKTsKPiA+ICsJc2NhbmxpbmUgPSBtaW4oc2NhbmxpbmUsICh1NjQpKGNydGNfdnRvdGFsIC0g MSkpOwo+ID4gKwlzY2FubGluZSA9IChzY2FubGluZSArIGNydGNfdmJsYW5rX3N0YXJ0KSAlIGNy dGNfdnRvdGFsOwo+ID4gKwo+ID4gKwlyZXR1cm4gc2NhbmxpbmU7Cj4gPiArfQo+ID4gKwo+ID4g IGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiA+ICAJCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==