From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: Re: [PATCH v3 1/2] video: hdmi: add helper function for N and CTS
Date: Thu, 21 Apr 2016 14:39:28 +0200
Message-ID: <1461242368.4695.27.camel@pengutronix.de>
References: <1461226077-25273-1-git-send-email-arnaud.pouliquen@st.com>
<1461226077-25273-2-git-send-email-arnaud.pouliquen@st.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
In-Reply-To: <1461226077-25273-2-git-send-email-arnaud.pouliquen@st.com>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Arnaud Pouliquen
Cc: alsa-devel@alsa-project.org, Russell King - ARM Linux , Liam Girdwood , dri-devel@lists.freedesktop.org, Mark Brown , Jyri Sarha , Benjamin Gaignard
List-Id: alsa-devel@alsa-project.org
SGkgQXJuYXVkLAoKQW0gRG9ubmVyc3RhZywgZGVuIDIxLjA0LjIwMTYsIDEwOjA3ICswMjAwIHNj
aHJpZWIgQXJuYXVkIFBvdWxpcXVlbjoKPiBBZGQgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUg
SERNSSBDVFMgYW5kIE4gcGFyYW1ldGVycwo+IEltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIEhE
TUkgMS40YiBzcGVjaWZpY2F0aW9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFybmF1ZCBQb3VsaXF1
ZW4gPGFybmF1ZC5wb3VsaXF1ZW5Ac3QuY29tPgo+IEFja2VkLWJ5OiBCZW5qYW1pbiBHYWlnbmFy
ZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4KPiBBY2tlZC1ieTogVmluY2VudCBBQlJJ
T1UgPHZpbmNlbnQuYWJyaW91QHN0LmNvbT4KClJldmlld2VkLWJ5OiBQaGlsaXBwIFphYmVsIDxw
LnphYmVsQHBlbmd1dHJvbml4LmRlPgoKPiAtLS0KPiAgZHJpdmVycy92aWRlby9oZG1pLmMgfCAy
MDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g
IGluY2x1ZGUvbGludXgvaGRtaS5oIHwgIDIyICsrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDIy
NCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaGRtaS5jIGIv
ZHJpdmVycy92aWRlby9oZG1pLmMKPiBpbmRleCAxNjI2ODkyLi42MzgxY2UwIDEwMDY0NAo+IC0t
LSBhL2RyaXZlcnMvdmlkZW8vaGRtaS5jCj4gKysrIGIvZHJpdmVycy92aWRlby9oZG1pLmMKPiBA
QCAtMTI0MiwzICsxMjQyLDIwNSBAQCBpbnQgaGRtaV9pbmZvZnJhbWVfdW5wYWNrKHVuaW9uIGhk
bWlfaW5mb2ZyYW1lICpmcmFtZSwgdm9pZCAqYnVmZmVyKQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+
ICBFWFBPUlRfU1lNQk9MKGhkbWlfaW5mb2ZyYW1lX3VucGFjayk7Cj4gKwo+ICsvKioKPiArICog
YXVkaW8gY2xvY2sgcmVnZW5lcmF0aW9uIChhY3IpIHBhcmFtZXRlcnMKPiArICogTiBhbmQgQ1RT
IGNvbXB1dGF0aW9uIGFyZSBiYXNlZCBvbiBIRE1JIHNwZWNpZmljYXRpb24gMS40Ygo+ICsgKi8K
PiArZW51bSBhdWRpb19yYXRlIHsKPiArCUhETUlfQVVESU9fTl9DVFNfMzJLSFosCj4gKwlIRE1J
X0FVRElPX05fQ1RTXzQ0XzFLSFosCj4gKwlIRE1JX0FVRElPX05fQ1RTXzQ4S0haLAo+ICt9Owo+
ICsKPiArc3RydWN0IGhkbWlfYXVkaW9fYWNyIHsKPiArCXVuc2lnbmVkIGludCB0bWRzX2NsazsK
PiArCXN0cnVjdCBoZG1pX2F1ZGlvX25fY3RzIG5fY3RzOwo+ICt9Owo+ICsKPiArc3RhdGljIGNv
bnN0IHN0cnVjdCBoZG1pX2F1ZGlvX2FjciBoZG1pX2F1ZGlvX3N0YW5kYXJkX2FjclszXVsxMl0g
PSB7Cj4gKwl7IC8qMzIga0h6Ki8KCklmIHlvdSB1c2VkCgoJW0hETUlfQVVESU9fTl9DVFNfMzJL
SFpdID0gewoKaW5zdGVhZCwgdGhhdCB3b3VsZCBtaXJyb3IgaG93IHRoZSBhcnJheSBpcyBpbmRl
eGVkIHZpYSBhdWRpb19mcmVxX2lkIGluCmhkbWlfYXVkaW9fZ2V0X2NvaGVyZW50X25fY3RzIGJl
bG93LgoKPiArCQl7ICAyNTE3NDgyNSwgeyAgNDU3NiwgIDI4MTI1LCAwIH0gfSwgLyogMjUsMjAv
MS4wMDEgIE1IeiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4Kcy8sLy4vCgo+ICsJCXsgIDI1MjAwMDAwLCB7ICA0MDk2LCAgMjUy
MDAsIDAgfSB9LCAvKiAyNS4yMCAgICAgICAgTUh6ICovCj4gKwkJeyAgMjcwMDAwMDAsIHsgIDQw
OTYsICAyNzAwMCwgMCB9IH0sIC8qIDI3LjAwICAgICAgICBNSHogKi8KPiArCQl7ICAyNzAyNzAw
MCwgeyAgNDA5NiwgIDI3MDI3LCAwIH0gfSwgLyogMjcuMDAqMS4wMDEgIE1IeiAqLwo+ICsJCXsg
IDU0MDAwMDAwLCB7ICA0MDk2LCAgNTQwMDAsIDAgfSB9LCAvKiA1NC4wMCAgICAgICAgTUh6ICov
Cj4gKwkJeyAgNTQwNTQwMDAsIHsgIDQwOTYsICA1NDA1NCwgMCB9IH0sIC8qIDU0LjAwKjEuMDAx
ICBNSHogKi8KPiArCQl7ICA3NDE3NTgyNCwgeyAxMTY0OCwgMjEwOTM3LCA1MCB9IH0sIC8qIDc0
LjI1LzEuMDAxICBNSHogKi8KPiArCQl7ICA3NDI1MDAwMCwgeyAgNDA5NiwgIDc0MjUwLCAwIH0g
fSwgLyogNzQuMjUgICAgICAgIE1IeiAqLwo+ICsJCXsgMTQ4MzUxNjQ4LCB7IDExNjQ4LCA0MjE4
NzUsIDAgfSB9LCAvKiAxNDguNTAvMS4wMDEgTUh6ICovCj4gKwkJeyAxNDg1MDAwMDAsIHsgIDQw
OTYsIDE0ODUwMCwgMCB9IH0sIC8qIDE0OC41MCAgICAgICBNSHogKi8KPiArCQl7IDI5NjcwMzI5
NiwgeyAgNTgyNCwgNDIxODc1LCAwIH0gfSwgLyogMjk3LzEuMDAxICAgIE1IeiAqLwogICAgICAg
ICAgICAgICAgICAgICAgICAgICBeCk1heWJlIGFkZCBhIGNvbW1lbnQgYWJvdmUgdGhhdCB0bWRz
X2NsayBpcyByb3VuZGVkIGRvd24/Cgo+ICsJCXsgMjk3MDAwMDAwLCB7ICAzMDcyLCAyMjI3NTAs
IDAgfSB9LCAvKiAyOTcgICAgICAgICAgTUh6ICovCj4gKwl9LAo+ICsJeyAvKjQ0LjEga0h6LCA4
OC4yIGtIeiAgMTc2LjQga0h6Ki8KPiArCQl7ICAyNTE3NDgyNSwgeyAgNzAwNywgIDMxMjUwLCAw
IH0gfSwgLyogMjUsMjAvMS4wMDEgIE1IeiAqLwo+ICsJCXsgIDI1MjAwMDAwLCB7ICA2MjcyLCAg
MjgwMDAsIDAgfSB9LCAvKiAyNS4yMCAgICAgICAgTUh6ICovCj4gKwkJeyAgMjcwMDAwMDAsIHsg
IDYyNzIsICAzMDAwMCwgMCB9IH0sIC8qIDI3LjAwICAgICAgICBNSHogKi8KPiArCQl7ICAyNzAy
NzAwMCwgeyAgNjI3MiwgIDMwMDMwLCAwIH0gfSwgLyogMjcuMDAqMS4wMDEgIE1IeiAqLwo+ICsJ
CXsgIDU0MDAwMDAwLCB7ICA2MjcyLCAgNjAwMDAsIDAgfSB9LCAvKiA1NC4wMCAgICAgICAgTUh6
ICovCj4gKwkJeyAgNTQwNTQwMDAsIHsgIDYyNzIsICA2MDA2MCwgMCB9IH0sIC8qIDU0LjAwKjEu
MDAxICBNSHogKi8KPiArCQl7ICA3NDE3NTgyNCwgeyAxNzgzNiwgMjM0Mzc1LCAwIH0gfSwgLyog
NzQuMjUvMS4wMDEgIE1IeiAqLwo+ICsJCXsgIDc0MjUwMDAwLCB7ICA2MjcyLCAgODI1MDAsIDAg
fSB9LCAvKiA3NC4yNSAgICAgICAgTUh6ICovCj4gKwkJeyAxNDgzNTE2NDgsIHsgIDg5MTgsIDIz
NDM3NSwgMCB9IH0sIC8qIDE0OC41MC8xLjAwMSBNSHogKi8KPiArCQl7IDE0ODUwMDAwMCwgeyAg
NjI3MiwgMTY1MDAwLCAwIH0gfSwgLyogMTQ4LjUwICAgICAgIE1IeiAqLwo+ICsJCXsgMjk2NzAz
Mjk2LCB7ICA0NDU5LCAyMzQzNzUsIDAgfSB9LCAvKiAyOTcvMS4wMDEgICAgTUh6ICovCj4gKwkJ
eyAyOTcwMDAwMDAsIHsgIDQ3MDQsIDI0NzUwMCwgMCB9IH0sIC8qIDI5NyAgICAgICAgICBNSHog
Ki8KPiArCX0sCj4gKwl7IC8qNDgga0h6LCA5NiBrSHogIDE5MiBrSHoqLwo+ICsJCXsgIDI1MTc0
ODI1LCB7ICA2ODY0LCAgMjgxMjUsIDAgfSB9LCAvKiAyNSwyMC8xLjAwMSAgTUh6ICovCj4gKwkJ
eyAgMjUyMDAwMDAsIHsgIDYxNDQsICAyNTIwMCwgMCB9IH0sIC8qIDI1LjIwICAgICAgICBNSHog
Ki8KPiArCQl7ICAyNzAwMDAwMCwgeyAgNjE0NCwgIDI3MDAwLCAwIH0gfSwgLyogMjcuMDAgICAg
ICAgIE1IeiAqLwo+ICsJCXsgIDI3MDI3MDAwLCB7ICA2MTQ0LCAgMjcwMjcsIDAgfSB9LCAvKiAy
Ny4wMCoxLjAwMSAgTUh6ICovCj4gKwkJeyAgNTQwMDAwMDAsIHsgIDYxNDQsICA1NDAwMCwgMCB9
IH0sIC8qIDU0LjAwICAgICAgICBNSHogKi8KPiArCQl7ICA1NDA1NDAwMCwgeyAgNjE0NCwgIDU0
MDU0LCAwIH0gfSwgLyogNTQuMDAqMS4wMDEgIE1IeiAqLwo+ICsJCXsgIDc0MTc1ODI0LCB7IDEx
NjQ4LCAxNDA2MjUsIDAgfSB9LCAvKiA3NC4yNS8xLjAwMSAgTUh6ICovCj4gKwkJeyAgNzQyNTAw
MDAsIHsgIDYxNDQsICA3NDI1MCwgMCB9IH0sIC8qIDc0LjI1ICAgICAgICBNSHogKi8KPiArCQl7
IDE0ODM1MTY0OCwgeyAgNTgyNCwgMTQwNjI1LCAwIH0gfSwgLyogMTQ4LjUwLzEuMDAxIE1IeiAq
Lwo+ICsJCXsgMTQ4NTAwMDAwLCB7ICA2MTQ0LCAxNDg1MDAsIDAgfSB9LCAvKiAxNDguNTAgICAg
ICAgTUh6ICovCj4gKwkJeyAyOTY3MDMyOTYsIHsgIDU4MjQsIDI4MTI1MCwgMCB9IH0sIC8qIDI5
Ny8xLjAwMSAgICBNSHogKi8KPiArCQl7IDI5NzAwMDAwMCwgeyAgNTEyMCwgMjQ3NTAwLCAwIH0g
fSwgLyogMjk3ICAgICAgICAgIE1IeiAqLwo+ICsJfQo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGhk
bWlfYXVkaW9fZ2V0X2NvaGVyZW50X25fY3RzKCkgLSBjb21wdXRlIE4gYW5kIENUUyBwYXJhbWV0
ZXJzIGZvciBjb2hlcmVudAo+ICsgKiBjbG9ja3MuIENvaGVyZW50IGNsb2NrIG1lYW5zIHRoYXQg
YXVkaW8gYW5kIFRNRFMgY2xvY2tzIGhhdmUgdGhlIHNhbWUKPiArICogc291cmNlIChubyBkcmlm
dHMgYmV0d2VlbiBjbG9ja3MpLgo+ICsgKgo+ICsgKiBAYXVkaW9fZnM6IGF1ZGlvIGZyYW1lIGNs
b2NrIGZyZXF1ZW5jeSBpbiBIego+ICsgKiBAdG1kc19jbGs6IEhETUkgVE1EUyBjbG9jayBmcmVx
dWVuY3kgaW4gSHoKPiArICogQG5fY3RzOiBOIGFuZCBDVFMgcGFyYW1ldGVyIHJldHVybmVkIHRv
IHVzZXIKPiArICoKPiArICogVmFsdWVzIGNvbXB1dGVkIGFyZSBiYXNlZCBvbiB0YWJsZSBkZXNj
cmliZWQgaW4gSERNSSBzcGVjaWZpY2F0aW9uIDEuNGIKPiArICoKPiArICogUmV0dXJucyAwIG9u
IHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtp
bnQgaGRtaV9hdWRpb19nZXRfY29oZXJlbnRfbl9jdHModW5zaWduZWQgaW50IGF1ZGlvX2ZzLAo+
ICsJCQkJICB1bnNpZ25lZCBpbnQgdG1kc19jbGssCj4gKwkJCQkgIHN0cnVjdCBoZG1pX2F1ZGlv
X25fY3RzICpuX2N0cykKPiArewo+ICsJaW50IGF1ZGlvX2ZyZXFfaWQsIGk7Cj4gKwlpbnQgcmF0
ZV9jb2VmZiA9IDE7Cj4gKwl1NjQgdmFsLCBtaW47Cj4gKwljb25zdCBzdHJ1Y3QgaGRtaV9hdWRp
b19hY3IgICphY3JfdGFibGU7Cj4gKwljb25zdCBzdHJ1Y3QgaGRtaV9hdWRpb19uX2N0cyAqcHJl
ZGVmX25fY3RzID0gTlVMTDsKPiArCj4gKwlzd2l0Y2ggKGF1ZGlvX2ZzKSB7Cj4gKwljYXNlIDMy
MDAwOgo+ICsJCWF1ZGlvX2ZyZXFfaWQgPSBIRE1JX0FVRElPX05fQ1RTXzMyS0haOwo+ICsJCW5f
Y3RzLT5uID0gNDA5NjsKPiArCQlicmVhazsKPiArCWNhc2UgNDQxMDA6Cj4gKwkJYXVkaW9fZnJl
cV9pZCA9IEhETUlfQVVESU9fTl9DVFNfNDRfMUtIWjsKPiArCQluX2N0cy0+biA9IDYyNzI7Cj4g
KwkJYnJlYWs7Cj4gKwljYXNlIDQ4MDAwOgo+ICsJCWF1ZGlvX2ZyZXFfaWQgPSBIRE1JX0FVRElP
X05fQ1RTXzQ4S0haOwo+ICsJCW5fY3RzLT5uID0gNjE0NDsKPiArCQlicmVhazsKPiArCWNhc2Ug
ODgyMDA6Cj4gKwkJYXVkaW9fZnJlcV9pZCA9IEhETUlfQVVESU9fTl9DVFNfNDRfMUtIWjsKPiAr
CQlyYXRlX2NvZWZmID0gMjsKPiArCQluX2N0cy0+biA9IDYyNzIgKiAyOwo+ICsJCWJyZWFrOwo+
ICsJY2FzZSA5NjAwMDoKPiArCQlhdWRpb19mcmVxX2lkID0gSERNSV9BVURJT19OX0NUU180OEtI
WjsKPiArCQlyYXRlX2NvZWZmID0gMjsKPiArCQluX2N0cy0+biA9IDYxNDQgKiAyOwo+ICsJCWJy
ZWFrOwo+ICsJY2FzZSAxNzY0MDA6Cj4gKwkJYXVkaW9fZnJlcV9pZCA9IEhETUlfQVVESU9fTl9D
VFNfNDRfMUtIWjsKPiArCQlyYXRlX2NvZWZmID0gNDsKPiArCQluX2N0cy0+biA9IDYyNzIgKiA0
Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSAxOTIwMDA6Cj4gKwkJYXVkaW9fZnJlcV9pZCA9IEhETUlf
QVVESU9fTl9DVFNfNDhLSFo7Cj4gKwkJcmF0ZV9jb2VmZiA9IDQ7Cj4gKwkJbl9jdHMtPm4gPSA2
MTQ0ICogNDsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g
Kwl9Cj4gKwo+ICsJYWNyX3RhYmxlID0gaGRtaV9hdWRpb19zdGFuZGFyZF9hY3JbYXVkaW9fZnJl
cV9pZF07Cj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoZG1pX2F1ZGlvX3N0YW5kYXJk
X2FjclswXSk7IGkrKykgewo+ICsJCWlmICh0bWRzX2NsayA9PSBhY3JfdGFibGVbaV0udG1kc19j
bGspIHsKPiArCQkJcHJlZGVmX25fY3RzID0gJmFjcl90YWJsZVtpXS5uX2N0czsKPiArCQkJbl9j
dHMtPm4gPSBwcmVkZWZfbl9jdHMtPm4gKiByYXRlX2NvZWZmOwo+ICsJCQluX2N0cy0+Y3RzID0g
cHJlZGVmX25fY3RzLT5jdHM7Cj4gKwkJCW5fY3RzLT5jdHNfMV9yYXRpbyA9IHByZWRlZl9uX2N0
cy0+Y3RzXzFfcmF0aW87Cj4gKwkJCXJldHVybiAwOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKgo+
ICsJKiBwcmVkZWZpbmVkIGZyZXF1ZW5jeSBub3QgZm91bmQuIENvbXB1dGUgQ1RTIHVzaW5nIGZv
cm11bGE6CiAgICAgICAgIF4KPiArCSogQ1RTID0gKEZ0ZG1zX2NsayAqIE4pIC8gKDEyOCogYXVk
aW9fZnMpCiAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPiArCSovCiAg
ICAgICAgIF4KTWlzc2luZyBzcGFjZXMuCgo+ICsJdmFsID0gKHU2NCl0bWRzX2NsayAqIG5fY3Rz
LT5uOwo+ICsJbl9jdHMtPmN0cyA9IGRpdjY0X3U2NCh2YWwsIDEyOFVMICogYXVkaW9fZnMpOwo+
ICsKPiArCW5fY3RzLT5jdHNfMV9yYXRpbyA9IDA7Cj4gKwltaW4gPSAodTY0KW5fY3RzLT5jdHMg
KiAxMjhVTCAqIGF1ZGlvX2ZzOwo+ICsJaWYgKG1pbiA8ICh2YWwpKSB7CiAgICAgICAgICAgICAg
ICAgICBeICAgXgpUaGVzZSBwYXJlbnRoZXNlcyBhcmUgbm90IG5lZWRlZC4KCj4gKwkJLyoKPiAr
CQkqIG5vbi1hY2N1cmF0ZSB2YWx1ZSBmb3IgQ1RTCiAgICAgICAgICAgICAgICAgXgo+ICsJCSog
Y29tcHV0ZSByYXRpbywgbmVlZGVkIGJ5IHVzZXIgdG8gYWx0ZXJuYXRlIGluIEFDUgogICAgICAg
ICAgICAgICAgIF4KPiArCQkqIGJldHdlZW4gQ1RTIGFuZCBDVFMgKyAxIHZhbHVlLgogICAgICAg
ICAgICAgICAgIF4KPiArCQkqLwogICAgICAgICAgICAgICAgIF4KTWlzc2luZyBzcGFjZXMuCgo+
ICsJCW5fY3RzLT5jdHNfMV9yYXRpbyA9IDEwMCAtICgodTMyKSh2YWwgLSBtaW4pKSAqIDEwMCAv
Cj4gKwkJCQkJICAgICgxMjggKiBhdWRpb19mcyk7CgpJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHB1
cnBvc2Ugb2YgdGhlICgxMDAteCkgYWJvdmUgKGFuZCBob3cgY3RzXzFfcmF0aW8KaXMgc3VwcG9z
ZWQgdG8gYmUgdXNlZCkuCgpXaGVuIGZvciBleGFtcGxlIHZhbCA9PSAobWluICsgMC4zICogMTI4
ICogYXVkaW9fZnMpIHRoZW4KY3RzXzFfcmF0aW8gPSA3MC4KVG8gYWNoaWV2ZSBhbiBhdmVyYWdl
IENUUyBvZiAodmFsKSwgc2hvdWxkbid0IChtaW4pIGJlIHVzZWQgNzAlIG9mIHRoZQp0aW1lIGFu
ZCAobWluKzEpIGJlIHVzZWQgMzAlIG9mIHRoZSB0aW1lPwpJIHdvdWxkIGhhdmUgZXhwZWN0ZWQg
KGN0c18xX3JhdGlvID09IDMwKSBpbiB0aGF0IGNhc2UuCgo+ICsJfQo+ICsKPiArCXJldHVybiAw
Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woaGRtaV9hdWRpb19nZXRfY29oZXJlbnRfbl9jdHMpOwo+
ICsKPiArLyoqCj4gKyAqIGhkbWlfYXVkaW9fZ2V0X25vbl9jb2hlcmVudF9uKCkgLSBnZXQgTiBw
YXJhbWV0ZXIgZm9yIG5vbi1jb2hlcmVudAo+ICsgKiBjbG9ja3MuIE5vbmUtY29oZXJlbnQgY2xv
Y2tzIG1lYW5zIHRoYXQgYXVkaW8gYW5kIFRNRFMgY2xvY2tzIGhhdmUgbm90IHRoZQo+ICsgKiBz
YW1lIHNvdXJjZSAoZHJpZnRzIGJldHdlZW4gY2xvY2tzKS4gSW4gdGhpcyBjYXNlIGFzc3VtcHRp
b24gaXMgdGhhdCBDVFMgaXMKPiArICogYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGJ5IGhhcmR3
YXJlLgo+ICsgKgo+ICsgKiBAYXVkaW9fZnM6IGF1ZGlvIGZyYW1lIGNsb2NrIGZyZXF1ZW5jeSBp
biBIego+ICsgKgo+ICsgKiBWYWx1ZXMgY29tcHV0ZWQgYXJlIGJhc2VkIG9uIHRhYmxlIGRlc2Ny
aWJlZCBpbiBIRE1JIHNwZWNpZmljYXRpb24gMS40Ygo+ICsgKgo+ICsgKiBSZXR1cm5zIG4gdmFs
dWUuCj4gKyAqLwo+ICtpbnQgaGRtaV9hdWRpb19nZXRfbm9uX2NvaGVyZW50X24odW5zaWduZWQg
aW50IGF1ZGlvX2ZzKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgbjsKPiArCj4gKwlzd2l0Y2ggKGF1
ZGlvX2ZzKSB7Cj4gKwljYXNlIDMyMDAwOgo+ICsJCW4gPSA0MDk2Owo+ICsJCWJyZWFrOwo+ICsJ
Y2FzZSA0NDEwMDoKPiArCQluID0gNjI3MjsKPiArCQlicmVhazsKPiArCWNhc2UgNDgwMDA6Cj4g
KwkJbiA9IDYxNDQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDg4MjAwOgo+ICsJCW4gPSA2MjcyICog
MjsKPiArCQlicmVhazsKPiArCWNhc2UgOTYwMDA6Cj4gKwkJbiA9IDYxNDQgKiAyOwo+ICsJCWJy
ZWFrOwo+ICsJY2FzZSAxNzY0MDA6Cj4gKwkJbiA9IDYyNzIgKiA0Owo+ICsJCWJyZWFrOwo+ICsJ
Y2FzZSAxOTIwMDA6Cj4gKwkJbiA9IDYxNDQgKiA0Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoK
PiArCQkvKiBOb3QgcHJlLWRlZmluZWQsIHJlY29tbWVuZGVkIHZhbHVlOiAxMjggKiBmcyAvIDEw
MDAgKi8KPiArCQluID0gKGF1ZGlvX2ZzICogMTI4KSAvIDEwMDA7Cj4gKwl9Cj4gKwo+ICsJcmV0
dXJuIG47Cj4gK30KPiArRVhQT1JUX1NZTUJPTChoZG1pX2F1ZGlvX2dldF9ub25fY29oZXJlbnRf
bik7Cj4gKwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hkbWkuaCBiL2luY2x1ZGUvbGlu
dXgvaGRtaS5oCj4gaW5kZXggZTk3NDQyMC4uMjhiNjc5NCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRl
L2xpbnV4L2hkbWkuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvaGRtaS5oCj4gQEAgLTMzMyw0ICsz
MzMsMjYgQEAgaW50IGhkbWlfaW5mb2ZyYW1lX3VucGFjayh1bmlvbiBoZG1pX2luZm9mcmFtZSAq
ZnJhbWUsIHZvaWQgKmJ1ZmZlcik7Cj4gIHZvaWQgaGRtaV9pbmZvZnJhbWVfbG9nKGNvbnN0IGNo
YXIgKmxldmVsLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAkJCXVuaW9uIGhkbWlfaW5mb2ZyYW1l
ICpmcmFtZSk7Cj4gIAo+ICsvKioKPiArICogc3RydWN0IGhkbWlfYXVkaW9fbl9jdHMgLSBuIGFu
ZCBjdHMgcGFyYW1ldGVyIGZvciBBQ1IgcGFja2V0cwo+ICsgKiBAbjogTiBwYXJhbWV0ZXIKPiAr
ICogQGN0czogQ1RTIHBhcmFtZXRlcgo+ICsgKiBAY3RzXzFfcmF0aW86IHJhdGlvIGZyb20gMCB0
byA5OSB0byBhbHRlcm5hdGUgIkNUUyIgYW5kICJDVFMgKyAxIiB2YWx1ZXMKPiArICogIHJhdGlv
ID0gMDogQ1RTIHBhcmFtZXRlciBpcyBhY2N1cmF0ZSwgbm8gbmVlZCB0byBhbHRlcm5hdGUgd2l0
aCAiQ1RTICsgMSIKPiArICogICAgICAgICAgICAgdmFsdWUKPiArICogIHJhdGlvID0geDogTmVl
ZCB0byBhbHRlcm5hdGUgd2l0aCBBQ1IgIkNUUyArIDEiIHZhbHVlIHglIG9mIHRoZSB0aW1lIHRv
Cj4gKyAqICAgICAgICAgICAgIGdlbmVyYXRlIGFjY3VyYXRlIGF1ZGlvIGNsb2NrCgpEb2VzIHRo
aXMgbWVhbiB0aGF0IGF0IGN0c18xX3JhdGlvID09IDMwLCBDVFMgc2hvdWxkIGJlIHVzZWQgNzAl
IG9mIHRoZQp0aW1lLCBhbmQgQ1RTKzEgc2hvdWxkIGJlIHVzZWQgMzAlIG9mIHRoZSB0aW1lLCBv
ciB0aGUgb3RoZXIgd2F5IGFyb3VuZD8KCj4gKyAqLwo+ICtzdHJ1Y3QgaGRtaV9hdWRpb19uX2N0
cyB7Cj4gKwl1bnNpZ25lZCBpbnQgbjsKPiArCXVuc2lnbmVkIGludCBjdHM7Cj4gKwl1bnNpZ25l
ZCBpbnQgY3RzXzFfcmF0aW87Cj4gK307Cj4gKwo+ICtpbnQgaGRtaV9hdWRpb19nZXRfY29oZXJl
bnRfbl9jdHModW5zaWduZWQgaW50IGF1ZGlvX2ZzLAo+ICsJCQkJICB1bnNpZ25lZCBpbnQgdG1k
c19jbGssCj4gKwkJCQkgIHN0cnVjdCBoZG1pX2F1ZGlvX25fY3RzICpuX2N0cyk7Cj4gKwo+ICtp
bnQgaGRtaV9hdWRpb19nZXRfbm9uX2NvaGVyZW50X24odW5zaWduZWQgaW50IGF1ZGlvX2ZzKTsK
PiArCj4gICNlbmRpZiAvKiBfRFJNX0hETUlfSCAqLwoKcmVnYXJkcwpQaGlsaXBwCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu
ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl
ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK