LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB3NjQgbWluZ3ctcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2luY2x1ZGUgPF9taW5nd19tYWMuaD4KCgkuZmlsZQkibG9nMTBsLlMiCgkudGV4dAojaWZkZWYgX1dJTjY0CgkuYWxpZ24gOAojZWxzZQoJLmFsaWduIDQKI2VuZGlmCm9uZToJLmRvdWJsZSAxLjAKCS8qIEl0IGlzIG5vdCBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIHByZWNpc2UuICBJdCBpcyBvbmx5CgkgICBhIHZhbHVlIHdoaWNoIGlzIGtub3duIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgZm9yIHVzaW5nIHRoZQoJICAgZnlsMnhwMSBpbnN0cnVjdGlvbi4gICovCmxpbWl0OgkuZG91YmxlIDAuMjkKCgkudGV4dAojaWZkZWYgX1dJTjY0CgkuYWxpZ24gOAojZWxzZQoJLmFsaWduIDQKI2VuZGlmCi5nbG9ibCBfX01JTkdXX1VTWU1CT0wobG9nMTBsKQoJLmRlZglfX01JTkdXX1VTWU1CT0wobG9nMTBsKTsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCl9fTUlOR1dfVVNZTUJPTChsb2cxMGwpOgojaWZkZWYgX1dJTjY0CglmbGRsZzIJCQkvLyBsb2cxMCgyKQoJZmxkdAkoJXJkeCkJCS8vIHggOiBsb2cxMCgyKQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CQkvLyB4IDogeCA6IGxvZzEwKDIpCglzYWhmCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCjQ6CWZzdWJsCW9uZSglcmlwKQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpCglmY29tcGwJbGltaXQoJXJpcCkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglmbnN0c3cJCQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWFuZGIJJDB4NDUsICVhaAoJanoJMmYKCWZzdHAJJXN0KDEpCQkvLyB4LTEgOiBsb2cxMCgyKQoJZnlsMnhwMQkJCS8vIGxvZzEwKHgpCgltb3ZxCSVyY3gsJXJheAoJbW92cQkkMCw4KCVyY3gpCglmc3RwdAkoJXJjeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiBsb2cxMCgyKQoJZnlsMngJCQkvLyBsb2cxMCh4KQoJbW92cQklcmN4LCVyYXgKCW1vdnEJJDAsOCglcmN4KQoJZnN0cHQJKCVyY3gpCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCgltb3ZxCSVyY3gsJXJheAoJbW92cQkkMCw4KCVyY3gpCglmc3RwdAkoJXJjeCkKCXJldAojZWxzZQoJZmxkbGcyCQkJLy8gbG9nMTAoMikKCWZsZHQJNCglZXNwKQkJLy8geCA6IGxvZzEwKDIpCglmeGFtCglmbnN0c3cKCWZsZAklc3QJCS8vIHggOiB4IDogbG9nMTAoMikKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoJZnN1YmwJb25lCQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpCglmY29tcGwJbGltaXQJCS8vIHgtMSA6IHggOiBsb2cxMCgyKQoJZm5zdHN3CQkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglhbmRiCSQweDQ1LCAlYWgKCWp6CTJmCglmc3RwCSVzdCgxKQkJLy8geC0xIDogbG9nMTAoMikKCWZ5bDJ4cDEJCQkvLyBsb2cxMCh4KQoJcmV0CgoyOglmc3RwCSVzdCgwKQkJLy8geCA6IGxvZzEwKDIpCglmeWwyeAkJCS8vIGxvZzEwKHgpCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglyZXQKI2VuZGlmCg==