LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQWRhcHRlZCBmb3IgYGxvbmcgZG91YmxlJyBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4KICogQWRhcHRlZCBmb3IgeDg2LTY0IGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKCS5zZWN0aW9uIC5yb2RhdGEKCgkuYWxpZ24gQUxJR05BUkcoNCkKCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbgoJCS0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJKi8KbGltaXQ6CS50ZmxvYXQgMC4yOQoJLyogUGxlYXNlIG5vdGU6CSB3ZSB1c2UgYSBkb3VibGUgdmFsdWUgaGVyZS4gIFNpbmNlIDEuMCBoYXMKCSAgIGFuIGV4YWN0IHJlcHJlc2VudGF0aW9uIHRoaXMgZG9lcyBub3QgZWZmZWN0IHRoZSBhY2N1cmFjeQoJICAgYnV0IGl0IGhlbHBzIHRvIG9wdGltaXplIHRoZSBjb2RlLiAgKi8Kb25lOgkuZG91YmxlIDEuMAoKLyoKICogVXNlIHRoZSBmeWwyeHAxIGZ1bmN0aW9uIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGluIHRoZSByYW5nZSAtMC4yOSB0byAwLjI5LAogKiBvdGhlcndpc2UgZnlsMnggd2l0aCB0aGUgbmVlZGVkIGV4dHJhIGNvbXB1dGF0aW9uLgogKi8KI2lmZGVmIFBJQwojZGVmaW5lIE1PKG9wKSBvcCMjKCVyaXApCiNlbHNlCiNkZWZpbmUgTU8ob3ApIG9wCiNlbmRpZgoKCS50ZXh0CkVOVFJZKF9fbG9nMXBsKQoJZmxkbG4yCgoJZmxkdAk4KCVyc3ApCgoJZnhhbQoJZm5zdHN3CglmbGQJJXN0Cgl0ZXN0YgkkMSwgJWFoCglqbnoJM2YJCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgo0OgoJZmFicwoJZmxkdAlNTyhsaW1pdCkKCWZjb21wcAoJZm5zdHN3CglhbmRiCSQxLCVhaAoJanoJMmYKCglmYWRkbAlNTyhvbmUpCglmeWwyeAoJcmV0CgoyOglmeWwyeHAxCglyZXQKCjM6CXRlc3RiCSQ0LCAlYWgKCWpuegk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CgpFTkQgKF9fbG9nMXBsKQp3ZWFrX2FsaWFzIChfX2xvZzFwbCwgbG9nMXBsKQo=