LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB3NjQgbWluZ3ctcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2luY2x1ZGUgPF9taW5nd19tYWMuaD4KCgkuZmlsZQkibG9nMXAuUyIKCS50ZXh0CiNpZmRlZiBfV0lONjQKCS5hbGlnbiA4CiNlbHNlCgkuYWxpZ24gNAojZW5kaWYKCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbgoJICAgLTEgKyBzcXJ0KDIpIC8gMiA8PSB4IDw9IDEgLSBzcXJ0KDIpIC8gMgoJICAgMC4yOSBpcyBhIHNhZmUgdmFsdWUuCgkgKi8KbGltaXQ6CS5kb3VibGUgMC4yOQpvbmU6CS5kb3VibGUgMS4wCi8qCiAqIFVzZSB0aGUgZnlsMnhwMSBmdW5jdGlvbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBpbiB0aGUgcmFuZ2UgLTAuMjkgdG8gMC4yOSwKICogb3RoZXJ3aXNlIGZ5bDJ4IHdpdGggdGhlIG5lZWRlZCBleHRyYSBjb21wdXRhdGlvbi4KICovCi5nbG9ibCBfX01JTkdXX1VTWU1CT0wobG9nMXApIAoJLmRlZglfX01JTkdXX1VTWU1CT0wobG9nMXApOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKX19NSU5HV19VU1lNQk9MKGxvZzFwKToKI2lmZGVmIF9XSU42NAoJbW92c2QJJXhtbTAsLTE2KCVyc3ApCglmbGRsbjIKCWZsZGwJLTE2KCVyc3ApCglmeGFtCglmbnN0c3cKCWZsZAklc3QKCXNhaGYKCWpjCTNmCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgoKNDoJZmFicwoJZmNvbXBsCWxpbWl0KCVyaXApCglmbnN0c3cKCXNhaGYKCWpjCTJmCglmYWRkbAlvbmUoJXJpcCkKCWZ5bDJ4Cglmc3RwbAktMTYoJXJzcCkKCW1vdnNkCS0xNiglcnNwKSwleG1tMAoJcmV0CgoyOglmeWwyeHAxCglmc3RwbAktMTYoJXJzcCkKCW1vdnNkCS0xNiglcnNwKSwleG1tMAoJcmV0CgozOglqcAk0YgkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglmc3RwbAktMTYoJXJzcCkKCW1vdnNkCS0xNiglcnNwKSwleG1tMAoJcmV0CiNlbHNlCglmbGRsbjIKCWZsZGwJNCglZXNwKQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CglzYWhmCglqYwkzZgkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKCjQ6CWZhYnMKCWZjb21wbAlsaW1pdAoJZm5zdHN3CglzYWhmCglqYwkyZgoJZmFkZGwJb25lCglmeWwyeAoJcmV0CgoyOglmeWwyeHAxCglyZXQKCjM6CWpwCTRiCS8vIGluIGNhc2UgeCBpcyCxSW5mCglmc3RwCSVzdCgxKQoJZnN0cAklc3QoMSkKCXJldAojZW5kaWYK