LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKI2lmZGVmIF9fRUxGX18KCS5zZWN0aW9uIC5yb2RhdGEKI2Vsc2UKCS50ZXh0CiNlbmRpZgoJLmFsaWduIEFMSUdOQVJHKDQpCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCQktMSArIHNxcnQoMikgLyAyIDw9IHggPD0gMSAtIHNxcnQoMikgLyAyCgkgICAwLjI5IGlzIGEgc2FmZSB2YWx1ZS4KCSovCmxpbWl0OgkudGZsb2F0IDAuMjkKCS8qIFBsZWFzZSBub3RlOgkgd2UgdXNlIGEgZG91YmxlIHZhbHVlIGhlcmUuICBTaW5jZSAxLjAgaGFzCgkgICBhbiBleGFjdCByZXByZXNlbnRhdGlvbiB0aGlzIGRvZXMgbm90IGVmZmVjdCB0aGUgYWNjdXJhY3kKCSAgIGJ1dCBpdCBoZWxwcyB0byBvcHRpbWl6ZSB0aGUgY29kZS4gICovCm9uZToJLmRvdWJsZSAxLjAKCi8qCiAqIFVzZSB0aGUgZnlsMnhwMSBmdW5jdGlvbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBpbiB0aGUgcmFuZ2UgLTAuMjkgdG8gMC4yOSwKICogb3RoZXJ3aXNlIGZ5bDJ4IHdpdGggdGhlIG5lZWRlZCBleHRyYSBjb21wdXRhdGlvbi4KICovCgkudGV4dApFTlRSWShfX2xvZzFwbCkKCWZsZGxuMgoKCWZsZHQJNCglZXNwKQoKI2lmZGVmIFBJQwoJTE9BRF9QSUNfUkVHIChkeCkKI2VuZGlmCgoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CglzYWhmCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCjQ6CglmYWJzCiNpZmRlZiBQSUMKCWZsZHQJbGltaXRAR09UT0ZGKCVlZHgpCiNlbHNlCglmbGR0CWxpbWl0CiNlbmRpZgoJZmNvbXBwCglmbnN0c3cKCXNhaGYKCWpuYwkyZgoKI2lmZGVmIFBJQwoJZmFkZGwJb25lQEdPVE9GRiglZWR4KQojZWxzZQoJZmFkZGwJb25lCiNlbmRpZgoJZnlsMngKCXJldAoKMjoJZnlsMnhwMQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CgpFTkQgKF9fbG9nMXBsKQp3ZWFrX2FsaWFzIChfX2xvZzFwbCwgbG9nMXBsKQo=