From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH v2 2/2] drm/msm/dsi: implement auto PHY timing calculator for 10nm PHY Date: Fri, 13 Apr 2018 16:29:19 -0400 Message-ID: <20180413202919.GK73214@art_vandelay> References: <1523087405-18877-1-git-send-email-abhinavk@codeaurora.org> <1523411647-16840-2-git-send-email-abhinavk@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1523411647-16840-2-git-send-email-abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Abhinav Kumar Cc: jeykumar-jfJNa2p1gH1BDgjK7y7TUQ@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDY6NTQ6MDdQTSAtMDcwMCwgQWJoaW5hdiBLdW1hciB3 cm90ZToKPiBDdXJyZW50bHkgdGhlIERTSSBQSFkgdGltaW5ncyBhcmUgaGFyZC1jb2RlZCBmb3Ig YSBzcGVjaWZpYyBwYW5lbAo+IGZvciB0aGUgMTBubSBQSFkuCj4gCj4gUmVwbGFjZSB0aGlzIHdp dGggdGhlIGF1dG8gUEhZIHRpbWluZyBjYWxjdWxhdG9yIHdoaWNoIGNhbiBjYWxjdWxhdGUKPiB0 aGUgUEhZIHRpbWluZ3MgZm9yIGFueSBwYW5lbC4KCkFueSBjaGFuY2UgeW91IGNvdWxkIGRvY3Vt ZW50IHdoYXQgeW91J3JlIGRvaW5nIHNvIGFueW9uZSB3aXRob3V0IGRvY3VtZW50YXRpb24KaGFz IGEgY2x1ZSB3aGF0J3MgZ29pbmcgb24/CgpTZWFuCgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBO b25lCj4gCj4gUmV2aWV3ZWQtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5v cmc+Cj4gU2lnbmVkLW9mZi1ieTogQWJoaW5hdiBLdW1hciA8YWJoaW5hdmtAY29kZWF1cm9yYS5v cmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMgICAgICB8 IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9waHkvZHNpX3BoeS5oICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9waHkvZHNpX3BoeV8xMG5tLmMgfCAgMjggLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAx MTMgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9waHkvZHNpX3BoeS5jCj4gaW5kZXggOGU5ZDVjMi4uNWI0Mjg4NSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNpX3BoeS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kc2kvcGh5L2RzaV9waHkuYwo+IEBAIC0yNjUsNiArMjY1LDExNyBAQCBpbnQgbXNt X2RzaV9kcGh5X3RpbWluZ19jYWxjX3YyKHN0cnVjdCBtc21fZHNpX2RwaHlfdGltaW5nICp0aW1p bmcsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAraW50IG1zbV9kc2lfZHBoeV90aW1pbmdfY2Fs Y192MyhzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nLAo+ICsJCQkJICAgICAgIHN0 cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSkKPiArewo+ICsJY29uc3QgdW5z aWduZWQgbG9uZyBiaXRfcmF0ZSA9IGNsa19yZXEtPmJpdGNsa19yYXRlOwo+ICsJY29uc3QgdW5z aWduZWQgbG9uZyBlc2NfcmF0ZSA9IGNsa19yZXEtPmVzY2Nsa19yYXRlOwo+ICsJczMyIHVpLCB1 aV94OCwgbHB4Owo+ICsJczMyIHRtYXgsIHRtaW47Cj4gKwlzMzIgcGNudDAgPSA1MDsKPiArCXMz MiBwY250MSA9IDUwOwo+ICsJczMyIHBjbnQyID0gMTA7Cj4gKwlzMzIgcGNudDMgPSAzMDsKPiAr CXMzMiBwY250NCA9IDEwOwo+ICsJczMyIHBjbnQ1ID0gMjsKPiArCXMzMiBjb2VmZiA9IDEwMDA7 IC8qIFByZWNpc2lvbiwgc2hvdWxkIGF2b2lkIG92ZXJmbG93ICovCj4gKwlzMzIgaGJfZW4sIGhi X2VuX2NrbG47Cj4gKwlzMzIgdGVtcDsKPiArCj4gKwlpZiAoIWJpdF9yYXRlIHx8ICFlc2NfcmF0 ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwl0aW1pbmctPmhzX2hhbGZieXRlX2VuID0g MDsKPiArCWhiX2VuID0gMDsKPiArCXRpbWluZy0+aHNfaGFsZmJ5dGVfZW5fY2tsbiA9IDA7Cj4g KwloYl9lbl9ja2xuID0gMDsKPiArCj4gKwl1aSA9IG11bHRfZnJhYyhOU0VDX1BFUl9NU0VDLCBj b2VmZiwgYml0X3JhdGUgLyAxMDAwKTsKPiArCXVpX3g4ID0gdWkgPDwgMzsKPiArCWxweCA9IG11 bHRfZnJhYyhOU0VDX1BFUl9NU0VDLCBjb2VmZiwgZXNjX3JhdGUgLyAxMDAwKTsKPiArCj4gKwl0 ZW1wID0gU19ESVZfUk9VTkRfVVAoMzggKiBjb2VmZiwgdWlfeDgpOwo+ICsJdG1pbiA9IG1heF90 KHMzMiwgdGVtcCwgMCk7Cj4gKwl0ZW1wID0gKDk1ICogY29lZmYpIC8gdWlfeDg7Cj4gKwl0bWF4 ID0gbWF4X3QoczMyLCB0ZW1wLCAwKTsKPiArCXRpbWluZy0+Y2xrX3ByZXBhcmUgPSBsaW5lYXJf aW50ZXIodG1heCwgdG1pbiwgcGNudDAsIDAsIGZhbHNlKTsKPiArCj4gKwo+ICsJdGVtcCA9IDMw MCAqIGNvZWZmIC0gKHRpbWluZy0+Y2xrX3ByZXBhcmUgPDwgMykgKiB1aTsKPiArCXRtaW4gPSBT X0RJVl9ST1VORF9VUCh0ZW1wLCB1aV94OCkgLSAxOwo+ICsJdG1heCA9ICh0bWluID4gMjU1KSA/ IDUxMSA6IDI1NTsKPiArCXRpbWluZy0+Y2xrX3plcm8gPSBsaW5lYXJfaW50ZXIodG1heCwgdG1p biwgcGNudDUsIDAsIGZhbHNlKTsKPiArCj4gKwl0bWluID0gRElWX1JPVU5EX1VQKDYwICogY29l ZmYgKyAzICogdWksIHVpX3g4KTsKPiArCXRlbXAgPSAxMDUgKiBjb2VmZiArIDEyICogdWkgLSAy MCAqIGNvZWZmOwo+ICsJdG1heCA9ICh0ZW1wICsgMyAqIHVpKSAvIHVpX3g4Owo+ICsJdGltaW5n LT5jbGtfdHJhaWwgPSBsaW5lYXJfaW50ZXIodG1heCwgdG1pbiwgcGNudDMsIDAsIGZhbHNlKTsK PiArCj4gKwl0ZW1wID0gU19ESVZfUk9VTkRfVVAoNDAgKiBjb2VmZiArIDQgKiB1aSwgdWlfeDgp Owo+ICsJdG1pbiA9IG1heF90KHMzMiwgdGVtcCwgMCk7Cj4gKwl0ZW1wID0gKDg1ICogY29lZmYg KyA2ICogdWkpIC8gdWlfeDg7Cj4gKwl0bWF4ID0gbWF4X3QoczMyLCB0ZW1wLCAwKTsKPiArCXRp bWluZy0+aHNfcHJlcGFyZSA9IGxpbmVhcl9pbnRlcih0bWF4LCB0bWluLCBwY250MSwgMCwgZmFs c2UpOwo+ICsKPiArCXRlbXAgPSAxNDUgKiBjb2VmZiArIDEwICogdWkgLSAodGltaW5nLT5oc19w cmVwYXJlIDw8IDMpICogdWk7Cj4gKwl0bWluID0gU19ESVZfUk9VTkRfVVAodGVtcCwgdWlfeDgp IC0gMTsKPiArCXRtYXggPSAyNTU7Cj4gKwl0aW1pbmctPmhzX3plcm8gPSBsaW5lYXJfaW50ZXIo dG1heCwgdG1pbiwgcGNudDQsIDAsIGZhbHNlKTsKPiArCj4gKwl0bWluID0gRElWX1JPVU5EX1VQ KDYwICogY29lZmYgKyA0ICogdWksIHVpX3g4KSAtIDE7Cj4gKwl0ZW1wID0gMTA1ICogY29lZmYg KyAxMiAqIHVpIC0gMjAgKiBjb2VmZjsKPiArCXRtYXggPSAodGVtcCAvIHVpX3g4KSAtIDE7Cj4g Kwl0aW1pbmctPmhzX3RyYWlsID0gbGluZWFyX2ludGVyKHRtYXgsIHRtaW4sIHBjbnQzLCAwLCBm YWxzZSk7Cj4gKwo+ICsJdGVtcCA9IDUwICogY29lZmYgKyAoKGhiX2VuIDw8IDIpIC0gOCkgKiB1 aTsKPiArCXRpbWluZy0+aHNfcnFzdCA9IFNfRElWX1JPVU5EX1VQKHRlbXAsIHVpX3g4KTsKPiAr Cj4gKwl0bWluID0gRElWX1JPVU5EX1VQKDEwMCAqIGNvZWZmLCB1aV94OCkgLSAxOwo+ICsJdG1h eCA9IDI1NTsKPiArCXRpbWluZy0+aHNfZXhpdCA9IGxpbmVhcl9pbnRlcih0bWF4LCB0bWluLCBw Y250MiwgMCwgZmFsc2UpOwo+ICsKPiArCXRlbXAgPSA1MCAqIGNvZWZmICsgKChoYl9lbl9ja2xu IDw8IDIpIC0gOCkgKiB1aTsKPiArCXRpbWluZy0+aHNfcnFzdF9ja2xuID0gU19ESVZfUk9VTkRf VVAodGVtcCwgdWlfeDgpOwo+ICsKPiArCXRlbXAgPSA2MCAqIGNvZWZmICsgNTIgKiB1aSAtIDQz ICogdWk7Cj4gKwl0bWluID0gRElWX1JPVU5EX1VQKHRlbXAsIHVpX3g4KSAtIDE7Cj4gKwl0bWF4 ID0gNjM7Cj4gKwl0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNsa19wb3N0ID0KPiArCQkJCWxpbmVh cl9pbnRlcih0bWF4LCB0bWluLCBwY250MiwgMCwgZmFsc2UpOwo+ICsKPiArCXRlbXAgPSA4ICog dWkgKyAodGltaW5nLT5jbGtfcHJlcGFyZSA8PCAzKSAqIHVpOwo+ICsJdGVtcCArPSAoKCh0aW1p bmctPmNsa196ZXJvICsgMykgPDwgMykgKyAxMSkgKiB1aTsKPiArCXRlbXAgKz0gaGJfZW5fY2ts biA/ICgoKHRpbWluZy0+aHNfcnFzdF9ja2xuIDw8IDMpICsgNCkgKiB1aSkgOgo+ICsJCQkJKCgo dGltaW5nLT5oc19ycXN0X2NrbG4gPDwgMykgKyA4KSAqIHVpKTsKPiArCXRtaW4gPSBTX0RJVl9S T1VORF9VUCh0ZW1wLCB1aV94OCkgLSAxOwo+ICsJdG1heCA9IDYzOwo+ICsJaWYgKHRtaW4gPiB0 bWF4KSB7Cj4gKwkJdGVtcCA9IGxpbmVhcl9pbnRlcih0bWF4IDw8IDEsIHRtaW4sIHBjbnQyLCAw LCBmYWxzZSk7Cj4gKwkJdGltaW5nLT5zaGFyZWRfdGltaW5ncy5jbGtfcHJlID0gdGVtcCA+PiAx Owo+ICsJCXRpbWluZy0+c2hhcmVkX3RpbWluZ3MuY2xrX3ByZV9pbmNfYnlfMiA9IDE7Cj4gKwl9 IGVsc2Ugewo+ICsJCXRpbWluZy0+c2hhcmVkX3RpbWluZ3MuY2xrX3ByZSA9Cj4gKwkJCQlsaW5l YXJfaW50ZXIodG1heCwgdG1pbiwgcGNudDIsIDAsIGZhbHNlKTsKPiArCQl0aW1pbmctPnNoYXJl ZF90aW1pbmdzLmNsa19wcmVfaW5jX2J5XzIgPSAwOwo+ICsJfQo+ICsKPiArCXRpbWluZy0+dGFf Z28gPSAzOwo+ICsJdGltaW5nLT50YV9zdXJlID0gMDsKPiArCXRpbWluZy0+dGFfZ2V0ID0gNDsK PiArCj4gKwlEQkcoIiVkLCAlZCwgJWQsICVkLCAlZCwgJWQsICVkLCAlZCwgJWQsICVkLCAlZCwg JWQsICVkLCAlZCwgJWQsICVkIiwKPiArCSAgICB0aW1pbmctPnNoYXJlZF90aW1pbmdzLmNsa19w cmUsIHRpbWluZy0+c2hhcmVkX3RpbWluZ3MuY2xrX3Bvc3QsCj4gKwkgICAgdGltaW5nLT5zaGFy ZWRfdGltaW5ncy5jbGtfcHJlX2luY19ieV8yLCB0aW1pbmctPmNsa196ZXJvLAo+ICsJICAgIHRp bWluZy0+Y2xrX3RyYWlsLCB0aW1pbmctPmNsa19wcmVwYXJlLCB0aW1pbmctPmhzX2V4aXQsCj4g KwkgICAgdGltaW5nLT5oc196ZXJvLCB0aW1pbmctPmhzX3ByZXBhcmUsIHRpbWluZy0+aHNfdHJh aWwsCj4gKwkgICAgdGltaW5nLT5oc19ycXN0LCB0aW1pbmctPmhzX3Jxc3RfY2tsbiwgdGltaW5n LT5oc19oYWxmYnl0ZV9lbiwKPiArCSAgICB0aW1pbmctPmhzX2hhbGZieXRlX2VuX2NrbG4sIHRp bWluZy0+aHNfcHJlcF9kbHksCj4gKwkgICAgdGltaW5nLT5oc19wcmVwX2RseV9ja2xuKTsKPiAr Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHZvaWQgbXNtX2RzaV9waHlfc2V0X3NyY19w bGwoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksIGludCBwbGxfaWQsIHUzMiByZWcsCj4gIAkJCQl1 MzIgYml0X21hc2spCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv cGh5L2RzaV9waHkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5LmgKPiBp bmRleCBjNTYyNjhjLi5hMjRhYjgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL3BoeS9kc2lfcGh5LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9waHkvZHNp X3BoeS5oCj4gQEAgLTEwMSw2ICsxMDEsOCBAQCBpbnQgbXNtX2RzaV9kcGh5X3RpbWluZ19jYWxj KHN0cnVjdCBtc21fZHNpX2RwaHlfdGltaW5nICp0aW1pbmcsCj4gIAkJCSAgICAgc3RydWN0IG1z bV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKTsKPiAgaW50IG1zbV9kc2lfZHBoeV90aW1p bmdfY2FsY192MihzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nLAo+ICAJCQkJc3Ry dWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKTsKPiAraW50IG1zbV9kc2lfZHBo eV90aW1pbmdfY2FsY192MyhzdHJ1Y3QgbXNtX2RzaV9kcGh5X3RpbWluZyAqdGltaW5nLAo+ICsJ CQkJc3RydWN0IG1zbV9kc2lfcGh5X2Nsa19yZXF1ZXN0ICpjbGtfcmVxKTsKPiAgdm9pZCBtc21f ZHNpX3BoeV9zZXRfc3JjX3BsbChzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSwgaW50IHBsbF9pZCwg dTMyIHJlZywKPiAgCQkJCXUzMiBiaXRfbWFzayk7Cj4gIGludCBtc21fZHNpX3BoeV9pbml0X2Nv bW1vbihzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZHNpL3BoeS9kc2lfcGh5XzEwbm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNp L3BoeS9kc2lfcGh5XzEwbm0uYwo+IGluZGV4IDBhZjk1MWEuLmIzZmZmYzggMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMTBubS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvcGh5L2RzaV9waHlfMTBubS5jCj4gQEAgLTc5LDM0ICs3OSw2 IEBAIHN0YXRpYyB2b2lkIGRzaV9waHlfaHdfdjNfMF9sYW5lX3NldHRpbmdzKHN0cnVjdCBtc21f ZHNpX3BoeSAqcGh5KQo+ICAJZHNpX3BoeV93cml0ZShsYW5lX2Jhc2UgKyBSRUdfRFNJXzEwbm1f UEhZX0xOX1RYX0RDVFJMKDMpLCAweDA0KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBtc21fZHNp X2RwaHlfdGltaW5nX2NhbGNfdjMoc3RydWN0IG1zbV9kc2lfZHBoeV90aW1pbmcgKnRpbWluZywK PiAtCQkJCSAgICAgICBzdHJ1Y3QgbXNtX2RzaV9waHlfY2xrX3JlcXVlc3QgKmNsa19yZXEpCj4g LXsKPiAtCS8qCj4gLQkgKiBUT0RPOiBUaGVzZSBwYXJhbXMgbmVlZCB0byBiZSBjb21wdXRlZCwg dGhleSdyZSBjdXJyZW50bHkgaGFyZGNvZGVkCj4gLQkgKiBmb3IgYSAxNDQweDI1NjBANjBIeiBw YW5lbCB3aXRoIGEgYnl0ZWNsayBvZiAxMDAuNjE4IE1oeiwgYW5kIGEKPiAtCSAqIGRlZmF1bHQg ZXNjYXBlIGNsb2NrIG9mIDE5LjIgTWh6Lgo+IC0JICovCj4gLQo+IC0JdGltaW5nLT5oc19oYWxm Ynl0ZV9lbiA9IDA7Cj4gLQl0aW1pbmctPmNsa196ZXJvID0gMHgxYzsKPiAtCXRpbWluZy0+Y2xr X3ByZXBhcmUgPSAweDA3Owo+IC0JdGltaW5nLT5jbGtfdHJhaWwgPSAweDA3Owo+IC0JdGltaW5n LT5oc19leGl0ID0gMHgyMzsKPiAtCXRpbWluZy0+aHNfemVybyA9IDB4MjE7Cj4gLQl0aW1pbmct PmhzX3ByZXBhcmUgPSAweDA3Owo+IC0JdGltaW5nLT5oc190cmFpbCA9IDB4MDc7Cj4gLQl0aW1p bmctPmhzX3Jxc3QgPSAweDA1Owo+IC0JdGltaW5nLT50YV9zdXJlID0gMHgwMDsKPiAtCXRpbWlu Zy0+dGFfZ28gPSAweDAzOwo+IC0JdGltaW5nLT50YV9nZXQgPSAweDA0Owo+IC0KPiAtCXRpbWlu Zy0+c2hhcmVkX3RpbWluZ3MuY2xrX3ByZSA9IDB4MmQ7Cj4gLQl0aW1pbmctPnNoYXJlZF90aW1p bmdzLmNsa19wb3N0ID0gMHgwZDsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGlj IGludCBkc2lfMTBubV9waHlfZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBpbnQgc3Jj X3BsbF9pZCwKPiAgCQkJICAgICAgIHN0cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xr X3JlcSkKPiAgewo+IC0tIAo+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBp cyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCj4gYSBMaW51eCBGb3VuZGF0aW9u IENvbGxhYm9yYXRpdmUgUHJvamVjdAo+IAoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5l ZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ZyZWVkcmVubwo=