From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: Re: [PATCH v10 12/13] drm/mediatek: update DSI sub driver flow for sending commands to panel Date: Mon, 5 Dec 2016 20:43:07 +0800 Message-ID: <1480941787.18661.6.camel@mtksdaap41> References: <1480070076-6196-1-git-send-email-yt.shen@mediatek.com> <1480070076-6196-13-git-send-email-yt.shen@mediatek.com> <1480492728.32217.20.camel@mtksdaap41> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480492728.32217.20.camel@mtksdaap41> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: CK Hu Cc: Daniel Vetter , Jie Qiu , Mao Huang , yingjoe.chen@mediatek.com, Dan Carpenter , Jitao Shi , Sascha Hauer , linux-mediatek@lists.infradead.org, dri-devel@lists.freedesktop.org, Matthias Brugger , shaoming chen , linux-arm-kernel@lists.infradead.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Maxime Ripard List-Id: linux-mediatek@lists.infradead.org SGkgQ0ssCgpPbiBXZWQsIDIwMTYtMTEtMzAgYXQgMTU6NTggKzA4MDAsIENLIEh1IHdyb3RlOgo+ IEhpLCBZVDoKPiAKPiBzb21lIGNvbW1lbnRzIGlubGluZS4KPiAKPiBPbiBGcmksIDIwMTYtMTEt MjUgYXQgMTg6MzQgKzA4MDAsIFlUIFNoZW4gd3JvdGU6Cj4gPiBUaGlzIHBhdGNoIHVwZGF0ZSBl bmFibGUvZGlzYWJsZSBmbG93IG9mIERTSSBtb2R1bGUuCj4gPiBPcmlnaW5hbCBmbG93IHdvcmtz IG9uIHRoZXJlIGlzIGEgYnJpZGdlIGNoaXA6IERTSSAtPiBicmlkZ2UgLT4gcGFuZWwuCj4gPiBJ biB0aGlzIGNhc2U6IERTSSAtPiBwYW5lbCwgdGhlIERTSSBzdWIgZHJpdmVyIGZsb3cgc2hvdWxk IGJlIHVwZGF0ZWQuCj4gPiBXZSBuZWVkIHRvIGluaXRpYWxpemUgRFNJIGZpcnN0IHNvIHRoYXQg d2UgY2FuIHNlbmQgY29tbWFuZHMgdG8gcGFuZWwuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IHNo YW9taW5nIGNoZW4gPHNoYW9taW5nLmNoZW5AbWVkaWF0ZWsuY29tPgo+ID4gU2lnbmVkLW9mZi1i eTogWVQgU2hlbiA8eXQuc2hlbkBtZWRpYXRlay5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMjEgZGVs ZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYwo+ID4gaW5kZXgg ZGVkNDIwMi4uMDU2OWYyZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHNpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMK PiA+IEBAIC0xMjYsNiArMTI2LDEwIEBACj4gPiAgI2RlZmluZSBDTEtfSFNfUE9TVAkJCSgweGZm IDw8IDgpCj4gPiAgI2RlZmluZSBDTEtfSFNfRVhJVAkJCSgweGZmIDw8IDE2KQo+ID4gIAo+ID4g KyNkZWZpbmUgRFNJX1ZNX0NNRF9DT04JCTB4MTMwCj4gPiArI2RlZmluZSBWTV9DTURfRU4JCQlC SVQoMCkKPiA+ICsjZGVmaW5lIFRTX1ZGUF9FTgkJCUJJVCg1KQo+ID4gKwo+ID4gICNkZWZpbmUg RFNJX0NNRFEwCQkweDE4MAo+ID4gICNkZWZpbmUgQ09ORklHCQkJCSgweGZmIDw8IDApCj4gPiAg I2RlZmluZSBTSE9SVF9QQUNLRVQJCQkwCj4gPiBAQCAtMjQ5LDcgKzI1Myw5IEBAIHN0YXRpYyBp bnQgbXRrX2RzaV9wb3dlcm9uKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gPiAgCSAqIG1pcGlfcmF0 aW8gaXMgbWlwaSBjbGsgY29lZmZpY2llbnQgZm9yIGJhbGFuY2UgdGhlIHBpeGVsIGNsayBpbiBt aXBpLgo+ID4gIAkgKiB3ZSBzZXQgbWlwaV9yYXRpbyBpcyAxLjA1Lgo+ID4gIAkgKi8KPiA+IC0J ZHNpLT5kYXRhX3JhdGUgPSBkc2ktPnZtLnBpeGVsY2xvY2sgKiAzICogMjEgLyAoMSAqIDEwMDAg KiAxMCk7Cj4gPiArCWRzaS0+ZGF0YV9yYXRlID0gZHNpLT52bS5waXhlbGNsb2NrICogMTIgKiAy MTsKPiA+ICsJZHNpLT5kYXRhX3JhdGUgLz0gKGRzaS0+bGFuZXMgKiAxMDAwICogMTApOwo+IAo+ IFRoaXMgbG9va3MgbGlrZSBhIGJ1ZyBmaXggdGhhdCB1c2UgbGFuZXMgdG8gY2FsY3VsYXRlIGRh dGEgcmF0ZS4KVGhpcyBwYXJ0IGFkZCBzdXBwb3J0IHdoZW4gZHNpLT5sYW5lcyAhPSA0LgoKPiAK PiA+ICsJRFJNX0RFQlVHX0RSSVZFUigic2V0IG1pcGl0eCdzIGRhdGEgcmF0ZTogJWRNSHpcbiIs IGRzaS0+ZGF0YV9yYXRlKTsKPiA+ICAKPiA+ICAJcmV0ID0gY2xrX3NldF9yYXRlKGRzaS0+aHNf Y2xrLCBkc2ktPmRhdGFfcmF0ZSAqIDEwMDAwMDApOwo+ID4gIAlpZiAocmV0IDwgMCkgewo+ID4g QEAgLTMzMywxNiArMzM5LDIzIEBAIHN0YXRpYyB2b2lkIG10a19kc2lfc2V0X21vZGUoc3RydWN0 IG10a19kc2kgKmRzaSkKPiA+ICAJdTMyIHZpZF9tb2RlID0gQ01EX01PREU7Cj4gPiAgCj4gPiAg CWlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPKSB7Cj4gPiAtCQl2aWRf bW9kZSA9IFNZTkNfUFVMU0VfTU9ERTsKPiA+IC0KPiA+IC0JCWlmICgoZHNpLT5tb2RlX2ZsYWdz ICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkgJiYKPiA+IC0JCSAgICAhKGRzaS0+bW9kZV9m bGFncyAmIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSkpCj4gPiArCQlpZiAoZHNpLT5t b2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkKPiA+ICAJCQl2aWRfbW9kZSA9 IEJVUlNUX01PREU7Cj4gPiArCQllbHNlIGlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9N T0RFX1ZJREVPX1NZTkNfUFVMU0UpCj4gPiArCQkJdmlkX21vZGUgPSBTWU5DX1BVTFNFX01PREU7 Cj4gPiArCQllbHNlCj4gPiArCQkJdmlkX21vZGUgPSBTWU5DX0VWRU5UX01PREU7Cj4gPiAgCX0K PiA+ICAKPiA+ICAJd3JpdGVsKHZpZF9tb2RlLCBkc2ktPnJlZ3MgKyBEU0lfTU9ERV9DVFJMKTsK PiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIHZvaWQgbXRrX2RzaV9zZXRfdm1fY21kKHN0cnVjdCBt dGtfZHNpICpkc2kpCj4gPiArewo+ID4gKwltdGtfZHNpX21hc2soZHNpLCBEU0lfVk1fQ01EX0NP TiwgVk1fQ01EX0VOLCBWTV9DTURfRU4pOwo+ID4gKwltdGtfZHNpX21hc2soZHNpLCBEU0lfVk1f Q01EX0NPTiwgVFNfVkZQX0VOLCBUU19WRlBfRU4pOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMg dm9pZCBtdGtfZHNpX3BzX2NvbnRyb2xfdmFjdChzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ID4gIHsK PiA+ICAJc3RydWN0IHZpZGVvbW9kZSAqdm0gPSAmZHNpLT52bTsKPiA+IEBAIC00ODAsNiArNDkz LDE2IEBAIHN0YXRpYyB2b2lkIG10a19kc2lfc3RhcnQoc3RydWN0IG10a19kc2kgKmRzaSkKPiA+ ICAJd3JpdGVsKDEsIGRzaS0+cmVncyArIERTSV9TVEFSVCk7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0 YXRpYyB2b2lkIG10a19kc2lfc3RvcChzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ID4gK3sKPiA+ICsJ d3JpdGVsKDAsIGRzaS0+cmVncyArIERTSV9TVEFSVCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyB2b2lkIG10a19kc2lfc2V0X2NtZF9tb2RlKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gPiArewo+ ID4gKwl3cml0ZWwoQ01EX01PREUsIGRzaS0+cmVncyArIERTSV9NT0RFX0NUUkwpOwo+ID4gK30K PiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBtdGtfZHNpX3NldF9pbnRlcnJ1cHRfZW5hYmxlKHN0cnVj dCBtdGtfZHNpICpkc2kpCj4gPiAgewo+ID4gIAl1MzIgaW50ZW4gPSBMUFJYX1JEX1JEWV9JTlRf RkxBRyB8IENNRF9ET05FX0lOVF9GTEFHIHwgVk1fRE9ORV9JTlRfRkxBRzsKPiA+IEBAIC01Mzgs NiArNTYxLDE5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdGtfZHNpX2lycShpbnQgaXJxLCB2b2lk ICpkZXZfaWQpCj4gPiAgCXJldHVybiBJUlFfSEFORExFRDsKPiA+ICB9Cj4gPiAgCj4gPiArc3Rh dGljIHMzMiBtdGtfZHNpX3N3aXRjaF90b19jbWRfbW9kZShzdHJ1Y3QgbXRrX2RzaSAqZHNpLCB1 OCBpcnFfZmxhZywgdTMyIHQpCj4gPiArewo+ID4gKwltdGtfZHNpX2lycV9kYXRhX2NsZWFyKGRz aSwgaXJxX2ZsYWcpOwo+ID4gKwltdGtfZHNpX3NldF9jbWRfbW9kZShkc2kpOwo+ID4gKwo+ID4g KwlpZiAoIW10a19kc2lfd2FpdF9mb3JfaXJxX2RvbmUoZHNpLCBpcnFfZmxhZywgdCkpIHsKPiA+ ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIHN3aXRjaCBjbWQgbW9kZVxuIik7Cj4gPiArCQlyZXR1 cm4gLUVUSU1FOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCX0KPiA+ICt9 Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgbXRrX2RzaV9wb3dlcm9mZihzdHJ1Y3QgbXRrX2RzaSAq ZHNpKQo+ID4gIHsKPiA+ICAJaWYgKFdBUk5fT04oZHNpLT5yZWZjb3VudCA9PSAwKSkKPiA+IEBA IC01NDYsMTEgKzU4Miw2IEBAIHN0YXRpYyB2b2lkIG10a19kc2lfcG93ZXJvZmYoc3RydWN0IG10 a19kc2kgKmRzaSkKPiA+ICAJaWYgKC0tZHNpLT5yZWZjb3VudCAhPSAwKQo+ID4gIAkJcmV0dXJu Owo+ID4gIAo+ID4gLQltdGtfZHNpX2xhbmUwX3VscF9tb2RlX2VudGVyKGRzaSk7Cj4gPiAtCW10 a19kc2lfY2xrX3VscF9tb2RlX2VudGVyKGRzaSk7Cj4gPiAtCj4gPiAtCW10a19kc2lfZGlzYWJs ZShkc2kpOwo+ID4gLQo+ID4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5lbmdpbmVfY2xr KTsKPiA+ICAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZGlnaXRhbF9jbGspOwo+ID4gIAo+ ID4gQEAgLTU2NCwxMyArNTk1LDYgQEAgc3RhdGljIHZvaWQgbXRrX291dHB1dF9kc2lfZW5hYmxl KHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gPiAgCWlmIChkc2ktPmVuYWJsZWQpCj4gPiAgCQlyZXR1 cm47Cj4gPiAgCj4gPiAtCWlmIChkc2ktPnBhbmVsKSB7Cj4gPiAtCQlpZiAoZHJtX3BhbmVsX3By ZXBhcmUoZHNpLT5wYW5lbCkpIHsKPiA+IC0JCQlEUk1fRVJST1IoImZhaWxlZCB0byBzZXR1cCB0 aGUgcGFuZWxcbiIpOwo+ID4gLQkJCXJldHVybjsKPiA+IC0JCX0KPiA+IC0JfQo+ID4gLQo+ID4g IAlyZXQgPSBtdGtfZHNpX3Bvd2Vyb24oZHNpKTsKPiA+ICAJaWYgKHJldCA8IDApIHsKPiA+ICAJ CURSTV9FUlJPUigiZmFpbGVkIHRvIHBvd2VyIG9uIGRzaVxuIik7Cj4gPiBAQCAtNTc4LDIxICs2 MDIsNDMgQEAgc3RhdGljIHZvaWQgbXRrX291dHB1dF9kc2lfZW5hYmxlKHN0cnVjdCBtdGtfZHNp ICpkc2kpCj4gPiAgCX0KPiA+ICAKPiA+ICAJbXRrX2RzaV9yeHR4X2NvbnRyb2woZHNpKTsKPiA+ ICsJbXRrX2RzaV9wc19jb250cm9sX3ZhY3QoZHNpKTsKPiA+ICsJbXRrX2RzaV9zZXRfdm1fY21k KGRzaSk7Cj4gCj4gRXZlbiB0aG91Z2ggZHNpIGRvZXMgbm90IGRpcmVjdGx5IGNvbm5lY3QgdG8g cGFuZWwsIHlvdSBuZXdseSBzZXQgdm0gY21kCj4gaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgYnVn IGZpeC4KV2Ugd2lsbCByZW1vdmUgdGhpcyBpZiBpdCBpcyBub3QgbmVjZXNzYXJ5LgoKPiAKPiA+ ICsJbXRrX2RzaV9jb25maWdfdmRvX3RpbWluZyhkc2kpOwo+ID4gKwltdGtfZHNpX3NldF9pbnRl cnJ1cHRfZW5hYmxlKGRzaSk7Cj4gPiAgCj4gPiAgCW10a19kc2lfY2xrX3VscF9tb2RlX2xlYXZl KGRzaSk7Cj4gPiAgCW10a19kc2lfbGFuZTBfdWxwX21vZGVfbGVhdmUoZHNpKTsKPiA+ICAJbXRr X2RzaV9jbGtfaHNfbW9kZShkc2ksIDApOwo+ID4gLQltdGtfZHNpX3NldF9tb2RlKGRzaSk7Cj4g PiAgCj4gPiAtCW10a19kc2lfcHNfY29udHJvbF92YWN0KGRzaSk7Cj4gPiAtCW10a19kc2lfY29u ZmlnX3Zkb190aW1pbmcoZHNpKTsKPiA+IC0JbXRrX2RzaV9zZXRfaW50ZXJydXB0X2VuYWJsZShk c2kpOwo+ID4gKwlpZiAoZHNpLT5wYW5lbCkgewo+ID4gKwkJaWYgKGRybV9wYW5lbF9wcmVwYXJl KGRzaS0+cGFuZWwpKSB7Cj4gPiArCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcHJlcGFyZSB0aGUg cGFuZWxcbiIpOwo+ID4gKwo+ID4gKwkJCW10a19kc2lfc3RvcChkc2kpOwo+IAo+IFlvdSBuZXZl ciBzdGFydCBkc2kgYmVmb3JlIGhlcmUsIHdoeSBkbyB5b3Ugc3RvcCBkc2kgaGVyZT8KPiAKPiA+ ICsJCQltdGtfZHNpX3Bvd2Vyb2ZmKGRzaSk7Cj4gCj4gUmVmZXIgdG8gbmV4dCBjb21tZW50LCB5 b3UgbWF5IGdvdG8gdW5kbyBpdGVtIGluIGJvdHRvbSBvZiB0aGlzCj4gZnVuY3Rpb24uCj4gCj4g PiArCQkJcmV0dXJuOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiAgCj4gPiAgCW10a19kc2lfc2V0X21v ZGUoZHNpKTsKPiA+ICAJbXRrX2RzaV9jbGtfaHNfbW9kZShkc2ksIDEpOwo+ID4gIAo+ID4gIAlt dGtfZHNpX3N0YXJ0KGRzaSk7Cj4gPiAgCj4gPiArCWlmIChkc2ktPnBhbmVsKSB7Cj4gPiArCQlp ZiAoZHJtX3BhbmVsX2VuYWJsZShkc2ktPnBhbmVsKSkgewo+ID4gKwkJCURSTV9FUlJPUigiZmFp bGVkIHRvIGVuYWJsZSB0aGUgcGFuZWxcbiIpOwo+ID4gKwo+ID4gKwkJCWlmIChkcm1fcGFuZWxf dW5wcmVwYXJlKGRzaS0+cGFuZWwpKQo+ID4gKwkJCQlEUk1fRVJST1IoImZhaWxlZCB0byB1bnBy ZXBhcmUgdGhlIHBhbmVsXG4iKTsKPiA+ICsKPiA+ICsJCQltdGtfZHNpX3N0b3AoZHNpKTsKPiAK PiBJIHRoaW5rIHlvdSBzaG91bGQgc3RvcCBkc2kgYmVmb3JlIHBhbmVsIHVucHJlcGFyZS4gT3Ro ZXJ3aXNlLCB3aHkgbm90Cj4gbW92ZSB0aGVzZSB1bmRvIGl0ZW0gdG8gdGhlIGJvdHRvbSBvZiB0 aGlzIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZToKPiAKPiAJCWlmIChkcm1fcGFuZWxfZW5hYmxlKGRz aS0+cGFuZWwpKSB7Cj4gCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIHRoZSBwYW5lbFxu Iik7Cj4gCQkJZ290byBzdG9wX2RzaTsKPiAKPiAuLi4KPiAKPiAJZHNpLT5lbmFibGVkID0gdHJ1 ZTsKPiAJcmV0dXJuOwo+IAo+IHN0b3BfZHNpOgo+IAltdGtfZHNpX3N0b3AoZHNpKTsKPiAJaWYg KGRybV9wYW5lbF91bnByZXBhcmUoZHNpLT5wYW5lbCkpCj4gCQlEUk1fRVJST1IoImZhaWxlZCB0 byB1bnByZXBhcmUgdGhlIHBhbmVsXG4iKTsKPiBwb3dlcm9mZl9kc2k6Cj4gCW10a19kc2lfcG93 ZXJvZmYoZHNpKTsKPiAJcmV0dXJuOwo+IApXZSB3aWxsIG1vdmUgdGhlIGVycm9yIGhhbmRsaW5n IHRvIHRoZSBib3R0b20gb2YgdGhpcyBmdW5jdGlvbi4KCj4gPiArCQkJbXRrX2RzaV9wb3dlcm9m Zihkc2kpOwo+ID4gKwkJCXJldHVybjsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gIAlkc2kt PmVuYWJsZWQgPSB0cnVlOwo+ID4gIH0KPiA+ICAKPiA+IEBAIC02MDgsNiArNjU0LDE5IEBAIHN0 YXRpYyB2b2lkIG10a19vdXRwdXRfZHNpX2Rpc2FibGUoc3RydWN0IG10a19kc2kgKmRzaSkKPiA+ ICAJCX0KPiA+ICAJfQo+ID4gIAo+ID4gKwltdGtfZHNpX3N0b3AoZHNpKTsKPiAKPiBFdmVuIHRo b3VnaCBkc2kgZG9lcyBub3QgZGlyZWN0bHkgY29ubmVjdCB0byBwYW5lbCwgeW91IG5ld2x5IHN0 b3AgZHNpCj4gaGVyZS4gVGhpcyBsb29rcyBsaWtlIGEgYnVnIGZpeC4KPiAKPiA+ICsJaWYgKCFt dGtfZHNpX3N3aXRjaF90b19jbWRfbW9kZShkc2ksIFZNX0RPTkVfSU5UX0ZMQUcsIDUwMCkpIHsK PiAKPiBkaXR0by4KPiAKPiA+ICsJCWlmIChkc2ktPnBhbmVsKSB7Cj4gPiArCQkJaWYgKGRybV9w YW5lbF91bnByZXBhcmUoZHNpLT5wYW5lbCkpCj4gPiArCQkJCURSTV9FUlJPUigiZmFpbGVkIHRv IHVucHJlcGFyZSB0aGUgcGFuZWxcbiIpOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCW10 a19kc2lfcmVzZXRfZW5naW5lKGRzaSk7Cj4gCj4gZGl0dG8uCj4gCj4gPiArCW10a19kc2lfbGFu ZTBfdWxwX21vZGVfZW50ZXIoZHNpKTsKPiA+ICsJbXRrX2RzaV9jbGtfdWxwX21vZGVfZW50ZXIo ZHNpKTsKPiA+ICsJbXRrX2RzaV9kaXNhYmxlKGRzaSk7Cj4gPiArCj4gPiAgCW10a19kc2lfcG93 ZXJvZmYoZHNpKTsKPiA+ICAKPiA+ICAJZHNpLT5lbmFibGVkID0gZmFsc2U7Cj4gCj4gUmVnYXJk cywKPiBDSwo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=