LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICogQWRhcHRlZCBmb3IgeDg2LTY0IGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKCS5zZWN0aW9uIC5yb2RhdGEKCgkuYWxpZ24gQUxJR05BUkcoNCkKCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbgoJCS0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJKi8KI2lmIGRlZmluZWQoX19jbGFuZ19fKQovKiBOZWNlc3NhcnkgaW4gdGhlIGFic2VuY2Ugb2YgYSAudGZsb2F0IGRpcmVjdGl2ZSBpbiB0aGUgYXNzZW1ibGVyLiAgKi8KbGltaXQ6CgkuYnl0ZSAweGUxLCAweDdhLCAweDE0LCAweGFlLCAweDQ3LCAweGUxLCAweDdhLCAweDk0LCAweGZkLCAweDNmCiNlbHNlCmxpbWl0OgkudGZsb2F0IDAuMjkKI2VuZGlmCgkvKiBQbGVhc2Ugbm90ZToJIHdlIHVzZSBhIGRvdWJsZSB2YWx1ZSBoZXJlLiAgU2luY2UgMS4wIGhhcwoJICAgYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gdGhpcyBkb2VzIG5vdCBlZmZlY3QgdGhlIGFjY3VyYWN5CgkgICBidXQgaXQgaGVscHMgdG8gb3B0aW1pemUgdGhlIGNvZGUuICAqLwpvbmU6CS5kb3VibGUgMS4wCgovKgogKiBVc2UgdGhlIGZ5bDJ4cDEgZnVuY3Rpb24gd2hlbiB0aGUgYXJndW1lbnQgaXMgaW4gdGhlIHJhbmdlIC0wLjI5IHRvIDAuMjksCiAqIG90aGVyd2lzZSBmeWwyeCB3aXRoIHRoZSBuZWVkZWQgZXh0cmEgY29tcHV0YXRpb24uCiAqLwojaWZkZWYgUElDCiNkZWZpbmUgTU8ob3ApIG9wIyMoJXJpcCkKI2Vsc2UKI2RlZmluZSBNTyhvcCkgb3AKI2VuZGlmCgoJLnRleHQKRU5UUlkoX19sb2cxcGwpCglmbGRsbjIKCglmbGR0CTgoJXJzcCkKCglmeGFtCglmbnN0c3cKCWZsZAklc3QKCXRlc3RiCSQxLCAlYWgKCWpuegkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCjQ6CglmYWJzCglmbGR0CU1PKGxpbWl0KQoJZmNvbXBwCglmbnN0c3cKCWFuZGIJJDEsJWFoCglqegkyZgoKCW1vdnp3bAk4KzgoJXJzcCksICVlYXgKCXhvcmIJJDB4ODAsICVhaAoJY21wbAkkMHhjMDQwLCAlZWF4CglqYWUJNWYKCglmYWRkbAlNTyhvbmUpCjU6CWZ5bDJ4CglyZXQKCjI6CWZ5bDJ4cDEKCXJldAoKMzoJdGVzdGIJJDQsICVhaAoJam56CTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglmYWRkCSVzdCgwKQoJcmV0CgpFTkQgKF9fbG9nMXBsKQo=