From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [4/6] dma: tegra: add accurate reporting of dma state From: Dmitry Osipenko Message-Id: <2b99fa63-a28f-5e45-efad-dfb68beec197@gmail.com> Date: Mon, 5 Nov 2018 17:05:14 +0300 To: Ben Dooks Cc: dan.j.williams@intel.com, vkoul@kernel.org, ldewangan@nvidia.com, dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org List-ID: T24gMDUuMTEuMjAxOCAxMjowMywgQmVuIERvb2tzIHdyb3RlOgo+IAo+IAo+IE9uIDIwMTgtMTEt MDMgMTI6MjQsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPj4gT24gMzEuMTAuMjAxOCAxOTowMywg QmVuIERvb2tzIHdyb3RlOgo+Pj4gVGhlIHR4X3N0YXR1cyBjYWxsYmFjayBkb2VzIG5vdCByZXBv cnQgdGhlIHN0YXRlIG9mIHRoZSB0cmFuc2Zlcgo+Pj4gYmV5b25kIGNvbXBsZXRlIHNlZ21lbnRz LiBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHVzZXJzIHN1Y2ggYXMKPj4+IEFMU0Egd2hlbiBh cHBsaWNhdGlvbnMgd2FudCB0byBrbm93IGFjY3VyYXRlbHkgaG93IG11Y2ggZGF0YSBoYXMKPj4+ IGJlZW4gbW92ZWQuCj4+Pgo+Pj4gVGhpcyBwYXRjaCBhZGRlcyBhIGZ1bmN0aW9uIHRlZ3JhX2Rt YV91cGRhdGVfcmVzaWR1YWwoKSB0byBxdWVyeQo+Pj4gdGhlIGhhcmR3YXJlIGFuZCBtb2RpZnkg dGhlIHJlc2lkdWFsIGluZm9ybWF0aW9uIGFjY29yZGlubHkuIEl0Cj4+PiB0YWtlcyBpbnRvIGFj Y291bnQgYW55IGhhcmR3YXJlIGlzc3VlcyB3aGVuIHRyeWluZyB0byByZWFkIHRoZQo+Pj4gc3Rh dGUsIHN1Y2ggYXMgZGVsYXlzIGJldHdlZW4gZmluaXNoaW5nIGEgYnVmZmVyIGFuZCBzaWduYWxs aW5nCj4+PiB0aGUgaW50ZXJydXB0Lgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IEJlbiBEb29rcyA8 YmVuLmRvb2tzQGNvZGV0aGluay5jby51az4KPj4KPj4gSGVsbG8gQmVuLAo+Pgo+PiBUaGFuayB5 b3UgdmVyeSBtdWNoIGZvciB0aGUgcGF0Y2ghIEl0IGZpeGVzICJmYXJ0aW5nIHNvdW5kIiBmb3IK Pj4gY2hyb21pdW0tYnJvd3NlciBhbmQgYXBwbGljYXRpb25zIHRoYXQgdXNlIGNocm9taXVtLWVu Z2luZSAodGVzdGVkIG9uCj4+IFRlZ3JhMjApIGJlY2F1c2UgYXBwYXJlbnRseSBpdCB0cmllcyB0 byB1c2UgbG93IGxhdGVuY3kgZm9yIGV2ZXJ5dGhpbmcKPj4gYW5kIGF1ZGlvIGJ1ZmZlciBpcyBj b25zdGFudGx5IHVuZGVyZmxvd2luZyB3aXRob3V0IG1vcmUgZGV0YWlsZWQKPj4gRE1BLXByb2dy ZXNzIHJlcG9ydGluZy4gU2VlIGNvdXBsZSBtb3JlIGNvbW1lbnRzIGJlbG93Lgo+Pgo+Pj4gLS0t Cj4+PiDCoGRyaXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jIHwgOTQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0KPj4+IMKgMSBmaWxlIGNoYW5nZWQsIDg3IGluc2VydGlvbnMo KyksIDcgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3RlZ3Jh MjAtYXBiLWRtYS5jIGIvZHJpdmVycy9kbWEvdGVncmEyMC1hcGItZG1hLmMKPj4+IGluZGV4IDRm N2QxZTU3NmQwMy4uM2ZhM2ExYWM0ZjU3IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9kbWEvdGVn cmEyMC1hcGItZG1hLmMKPj4+ICsrKyBiL2RyaXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jCj4+ PiBAQCAtODAyLDEyICs4MDIsOTYgQEAgc3RhdGljIGludCB0ZWdyYV9kbWFfdGVybWluYXRlX2Fs bChzdHJ1Y3QgZG1hX2NoYW4gKmRjKQo+Pj4gwqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiDCoH0KPj4+ Cj4+PiArc3RhdGljIHVuc2lnbmVkIGludCB0ZWdyYV9kbWFfdXBkYXRlX3Jlc2lkdWFsKHN0cnVj dCB0ZWdyYV9kbWFfY2hhbm5lbCAqdGRjLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVxICpzZ19yZXEs Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVzYywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcmVzaWR1YWwpCj4+ PiArewo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIHN0YXR1cyA9IDB4MDsKPj4KPj4gVGhlcmUg aXMgbm8gbmVlZCB0byBpbml0aWFsaXplICJzdGF0dXMiIHZhcmlhYmxlLgo+IAo+IG9rLCB3aWxs IGNoZWNrIHRoaXMuCj4gCj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgd2NvdW50Owo+Pj4gK8Kg wqDCoCB1bnNpZ25lZCBsb25nIGFoYnB0cjsKPj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyB0bXAg PSAweDA7Cj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCByZXN1bHQ7Cj4+PiArwqDCoMKgIGludCBy ZXRyaWVzID0gVEVHUkFfQVBCRE1BX0JVUlNUX0NPTVBMRVRFX1RJTUUgKiAxMDsKPj4+ICvCoMKg wqAgaW50IGRvbmU7Cj4+PiArCj4+PiArwqDCoMKgIC8qIGlmIHdlJ3JlIG5vdCB0aGUgY3VycmVu dCByZXF1ZXN0LCB0aGVuIGRvbid0IGFsdGVyIHRoZSByZXNpZHVhbCAqLwo+Pj4gK8KgwqDCoCBp ZiAoc2dfcmVxICE9IGxpc3RfZmlyc3RfZW50cnkoJnRkYy0+cGVuZGluZ19zZ19yZXEsCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHRlZ3Jh X2RtYV9zZ19yZXEsIG5vZGUpKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgcmVzdWx0ID0gcmVzaWR1 YWw7Cj4+PiArwqDCoMKgwqDCoMKgwqAgYWhicHRyID0gMHhmZmZmZmZmZjsKPj4+ICvCoMKgwqDC oMKgwqDCoCBnb3RvIGRvbmU7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgLyogbG9v cCB1bnRpbCB3ZSBoYXZlIGEgcmVsaWFibGUgcmVzdWx0IGZvciByZXNpZHVhbCAqLwo+Pj4gK8Kg wqDCoCBkbyB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgYWhicHRyID0gdGRjX3JlYWQodGRjLCBURUdS QV9BUEJETUFfQ0hBTl9BSEJQVFIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0YXR1cyA9IHRkY19y ZWFkKHRkYywgVEVHUkFfQVBCRE1BX0NIQU5fU1RBVFVTKTsKPj4KPj4+ICvCoMKgwqDCoMKgwqDC oCB0bXAgPcKgIHRkY19yZWFkKHRkYywgMHgwOCk7wqDCoMKgIC8qIHRvdGFsIGNvdW50IGZvciBk ZWJ1ZyAqLwo+Pgo+PiBSZWdpc3RlciAweDA4IChETUFfQllURV9TVEEpIGRvZXNuJ3QgcHJlc2Vu dCBvbiBUZWdyYTIwIGFuZCAidG1wIgo+PiBpc24ndCB1c2VkIGFueXdoZXJlIGluIHRoZSBjb2Rl LiBQbGVhc2UgcmVtb3ZlIGl0IGVudGlyZWx5Lgo+IAo+IG9rLCBmaXhlZAo+IAo+Pj4gKwo+Pj4g K8KgwqDCoMKgwqDCoMKgIC8qIGNoZWNrIHN0YXR1cywgaWYgY2hhbm5lbCBpc24ndCBidXN5IHRo ZW4gc2tpcCAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghKHN0YXR1cyAmIFRFR1JBX0FQQkRN QV9TVEFUVVNfQlVTWSkpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3VsdCA9IHJl c2lkdWFsOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+PiArwqDCoMKgwqDC oMKgwqAgfQo+Pgo+PiBJZiAiQlVTWSIgaXMgdW5zZXQsIGRvZXNuJ3QgdGhpcyBtZWFuIHRoYXQg dHJhbnNhY3Rpb24gY291bGQgYmUKPj4gY29tcGxldGVkIGFscmVhZHk/IEkgZG9uJ3QgcXVpdGUg dW5kZXJzdGFuZCB3aHkgeW91IHdhbnQgdG8gc2tpcCBoZXJlLgo+IAo+IEkgY2FuJ3QgcmVtZW1i ZXIgd2hhdCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHdhcywgdGhpcyB3b3JrIHdhcwo+IG9y aWdpbmFsbHkgZG9uZSBvdmVyIGEgeWVhciBhZ28gYW5kIEkgYW0gbm90IHN1cmUgaWYgSSBjYW4g ZmluZCBhbnkKPiBvZiB0aGUgbm90ZXMgZnJvbSB0aGlzLgo+IAoKTG9va3MgbGlrZSBpdCBzaG91 bGQgYmUgc2FmZSB0byByZW1vdmUgdGhpcyBodW5rLiBQbGVhc2UgY29uc2lkZXIgdGhlIHJlbW92 YWwgb3IgcHJvdmlkZSByZWFzb25pbmcgaW4gdGhlIGNvbW1lbnQgdG8gdGhlIGNvZGUgaWYgeW91 J2xsIHJlY2FsbCBpdC4KCj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgLyogaWYgd2UndmUgZ290 IGFuIGludGVycnVwdCBwZW5kaW5nIG9uIHRoZSBjaGFubmVsLCBkb24ndAo+Pj4gK8KgwqDCoMKg wqDCoMKgwqAgKiB0cnkgYW5kIGRlYWwgd2l0aCB0aGUgcmVzaWR1ZSBhcyB0aGUgaGFyZHdhcmUg aGFzIGxpa2VseQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBtb3ZlZCBvbiB0byB0aGUgbmV4dCBi dWZmZXIuIHJldHVybiBhbGwgZGF0YSBtb3ZlZC4KPj4+ICvCoMKgwqDCoMKgwqDCoMKgICovCj4+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXR1cyAmIFRFR1JBX0FQQkRNQV9TVEFUVVNfSVNFX0VP Qykgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzdWx0ID0gcmVzaWR1YWwgLSBzZ19y ZXEtPnJlcV9sZW47Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+ICvCoMKg wqDCoMKgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHRkYy0+dGRtYS0+Y2hp cF9kYXRhLT5zdXBwb3J0X3NlcGFyYXRlX3djb3VudF9yZWcpCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB3Y291bnQgPSB0ZGNfcmVhZCh0ZGMsIFRFR1JBX0FQQkRNQV9DSEFOX1dPUkRfVFJB TlNGRVIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHdjb3VudCA9IHN0YXR1czsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBJZiB0aGUg cmVxdWVzdCBpcyBhdCB0aGUgZnVsbCBwb2ludCwgdGhlbiB0aGVyZSBpcyBhCj4+PiArwqDCoMKg wqDCoMKgwqDCoCAqIGNoYW5jZSB0aGF0IHdlIGhhdmUgcmVhZCB0aGUgc3RhdHVzIHJlZ2lzdGVy IGluIHRoZQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBtaWRkbGUgb2YgdGhlIGhhcmR3YXJlIHJl bG9hZGluZyB0aGUgbmV4dCBidWZmZXIuCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqCj4+PiArwqDC oMKgwqDCoMKgwqDCoCAqIFRoZSBzZXF1ZW5jZSBzZWVtcyB0byBiZSBhdCB0aGUgZW5kIG9mIHRo ZSBidWZmZXIsIHRvCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGxvYWQgdGhlIG5ldyB3b3JkIGNv dW50IGJlZm9yZSByYWlzaW5nIHRoZSBFT0MgZmxhZyAob3IKPj4+ICvCoMKgwqDCoMKgwqDCoMKg ICogY2hhbmdpbmcgdGhlIHBpbmctcG9uZyBmbGFnIHdoaWNoIGNvdWxkIGhhdmUgYWxzbyBiZWVu Cj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIHVzZWQgdG8gZGV0ZXJtaW5lIGEgbmV3IGJ1ZmZlciku IFRoaXPCoCBtZWFucyB0aGVyZSBpcyBhCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0d28gd2hpdGVzcGFjZXMgaGVyZS0tLS0t fAo+Pgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBzbWFsbCB3aW5kb3cgd2hlcmUgd2UgY2Fubm90 IGRldGVybWluZSB6ZXJvLWRvbmUgZm9yIHRoZQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBjdXJy ZW50IGJ1ZmZlciwgb3IgbW92ZWQgdG8gbmV4dCBidWZmZXIuCj4+PiArwqDCoMKgwqDCoMKgwqDC oCAqCj4+Cj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIElmIGRvbmUgc2hvd3MgMCwgdGhlbiByZXRy eSB0aGUgbG9hZCwgYXMgaXQgbWF5IGhpdCB0aGUKPj4+ICvCoMKgwqDCoMKgwqDCoMKgICogYWJv dmUgaGFyZHdhcmUgcmFjZS4gV2Ugd2lsbCBlaXRoZXIgZ2V0IGEgbmV3IHZhbHVlIHdoaWNoCj4+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIGlzIGZyb20gdGhlIGZpcnN0IGJ1ZmZlciwgb3Igd2UgZ2V0 IGFuIEVPQyAobmV3IGJ1ZmZlcikKPj4+ICvCoMKgwqDCoMKgwqDCoMKgICogb3IgYm90aCBhIG5l dyB2YWx1ZSBhbmQgYW4gRU9DLi4uCj4+Cj4+IEkgdGhpbmsgd2UganVzdCBuZWVkIHRvIHdhaXQg MjB1c2VjIGFmdGVyIHJlYWRpbmcgb3V0ICJ3b3JkcyBjb3VudCIKPj4gYW5kIHRoZW4gcmUtY2hl Y2sgaW50ZXJydXB0IHN0YXR1cywgc28gdHJhbnNmZXIgaXMgZG9uZSBpZiBpbnRlcnJ1cHQKPj4g aXMgc2V0IGFuZCBvdGhlcndpc2UgIndvcmRzIGNvdW50IiB2YWx1ZSBpcyBhY3R1YWwgYW5kIHJl bGlhYmxlLgo+IAo+IEF0IHRoZSBtb21lbnQgSSBoYXZlIG5vIHdheSBvZiBnb2luZyBiYWNrIGFu ZCByZS10ZXN0aW5nIHRoaXMgY29kZQo+IGFnYWluc3QgdGhlIHByb2JsZW0gaXQgb3JpZ2luYWxs eSBmaXhlZCwgc28gd291bGQgcmF0aGVyIG5vdCBjaGFuZ2UKPiB0aGUgYWxnb3JpdGhtIGluIHRo aXMuCgpQbGVhc2UgdGVsbCB3aGF0IHdhcyB0aGUgcHJvYmxlbS4KCj4+Cj4+PiArwqDCoMKgwqDC oMKgwqDCoCAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRvbmUgPSBnZXRfY3VycmVudF94ZmVycmVk X2NvdW50KHRkYywgc2dfcmVxLCB3Y291bnQpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkb25l ICE9IDApIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3VsdCA9IHJlc2lkdWFsIC0g ZG9uZTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoMKgwqDC oMKgIH0KPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCBuZGVsYXkoMTAwKTsKPj4KPj4gVGhlcmUg aXMgbm8gbmRlbGF5KCkgb24gQVJNLCBoZW5jZSB5b3VyIDIwdXNlYyB0aW1lb3V0IGlzIDIwMHVz ZWMuCj4+IFBsZWFzZSB1c2UgdWRlbGF5KCkuCj4gCj4gSSB0aG91Z2h0IHRoZXJlIHdhcyBvbmUg YmFzZWQgb24gdGhlIGxwaiBjYWxjdWxhdGlvbnMsIEkgd2lsbCBjaGVjayBsYXRlci4KPiAKPj4+ ICvCoMKgwqAgfSB3aGlsZSAoLS1yZXRyaWVzID4gMCk7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChy ZXRyaWVzIDw9IDApIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKHRkYzJkZXYodGRjKSwg InRpbWVvdXQgd2FpdGluZyBmb3IgZG1hIGxvYWRcbiIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl c3VsdCA9IHJlc2lkdWFsOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArZG9uZToKPj4KPj4gUGxl YXNlIHJlbmFtZSBnb3RvIGxhYmVsIGFzIGl0IGR1cGxpY2F0ZXMgbG9jYWwgdmFyaWFibGUgbmFt ZS4KPiAKPiBvaywgZml4ZWQuCj4gCj4+PiArwqDCoMKgIGRldl9kYmcodGRjMmRldih0ZGMpLCAi cmVzaWR1YWw6IHJlcSAlMDhseCwgYWhiQCUwOGx4LCB3Y291bnQgJTA4bHgsIGRvbmUgJWRcbiIs Cj4+PiArwqDCoMKgwqDCoMKgwqDCoCBzZ19yZXEtPmNoX3JlZ3MuYWhiX3B0ciwgYWhicHRyLCB3 Y291bnQsIGRvbmUpOwo+Pgo+PiBXaGl0ZXNwYWNlIGp1c3QgYWZ0ZXIgdGFiIG5vdCBuZWVkZWQu Cj4+Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiByZXN1bHQ7Cj4+PiArfQo+Pj4gKwo+Pj4gwqBz dGF0aWMgZW51bSBkbWFfc3RhdHVzIHRlZ3JhX2RtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFu ICpkYywKPj4+IMKgwqDCoMKgIGRtYV9jb29raWVfdCBjb29raWUsIHN0cnVjdCBkbWFfdHhfc3Rh dGUgKnR4c3RhdGUpCj4+PiDCoHsKPj4+IMKgwqDCoMKgIHN0cnVjdCB0ZWdyYV9kbWFfY2hhbm5l bCAqdGRjID0gdG9fdGVncmFfZG1hX2NoYW4oZGMpOwo+Pj4gwqDCoMKgwqAgc3RydWN0IHRlZ3Jh X2RtYV9kZXNjICpkbWFfZGVzYzsKPj4+IC3CoMKgwqAgc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEg KnNnX3JlcTsKPj4+ICvCoMKgwqAgc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEgKnNnX3JlcSA9IE5V TEw7Cj4+PiDCoMKgwqDCoCBlbnVtIGRtYV9zdGF0dXMgcmV0Owo+Pj4gwqDCoMKgwqAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKPj4+IMKgwqDCoMKgIHVuc2lnbmVkIGludCByZXNpZHVhbDsKPj4+IEBA IC04NDMsNiArOTI3LDcgQEAgc3RhdGljIGVudW0gZG1hX3N0YXR1cyB0ZWdyYV9kbWFfdHhfc3Rh dHVzKHN0cnVjdCBkbWFfY2hhbiAqZGMsCj4+PiDCoMKgwqDCoMKgwqDCoMKgIHJlc2lkdWFsID0g ZG1hX2Rlc2MtPmJ5dGVzX3JlcXVlc3RlZCAtCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGRtYV9kZXNjLT5ieXRlc190cmFuc2ZlcnJlZCAlCj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkbWFfZGVzYy0+Ynl0ZXNfcmVxdWVzdGVkKTsKPj4+ICvCoMKgwqDC oMKgwqDCoCByZXNpZHVhbCA9IHRlZ3JhX2RtYV91cGRhdGVfcmVzaWR1YWwodGRjLCBzZ19yZXEs IGRtYV9kZXNjLCByZXNpZHVhbCk7CgpMaW5lIG92ZXIgODAgY2hhcmFjdGVycy4gUGxlYXNlIG1h a2Ugc3VyZSB0aGF0ICJzY3JpcHRzL2NoZWNrcGF0Y2gucGwiIGRvZXNuJ3QgaGF2ZSB2YWxpZCBj b21wbGFpbnMgYWJvdXQgdGhlIHBhdGNoZXMuCgpbc25pcF0K