LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBtaW5ndy13NjQgcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2luY2x1ZGUgPF9taW5nd19tYWMuaD4KCgkuZmlsZQkibG9nMTBsLlMiCgkudGV4dAojaWZkZWYgX194ODZfNjRfXwoJLmFsaWduIDgKI2Vsc2UKCS5hbGlnbiA0CiNlbmRpZgpvbmU6CS5kb3VibGUgMS4wCgkvKiBJdCBpcyBub3QgaW1wb3J0YW50IHRoYXQgdGhpcyBjb25zdGFudCBpcyBwcmVjaXNlLiAgSXQgaXMgb25seQoJICAgYSB2YWx1ZSB3aGljaCBpcyBrbm93biB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGZvciB1c2luZyB0aGUKCSAgIGZ5bDJ4cDEgaW5zdHJ1Y3Rpb24uICAqLwpsaW1pdDoJLmRvdWJsZSAwLjI5CgoJLnRleHQKI2lmZGVmIF9feDg2XzY0X18KCS5hbGlnbiA4CiNlbHNlCgkuYWxpZ24gNAojZW5kaWYKLmdsb2JsIF9fTUlOR1dfVVNZTUJPTChsb2cxMGwpCgkuZGVmCV9fTUlOR1dfVVNZTUJPTChsb2cxMGwpOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKX19NSU5HV19VU1lNQk9MKGxvZzEwbCk6CiNpZmRlZiBfX3g4Nl82NF9fCglmbGRsZzIJCQkvLyBsb2cxMCgyKQoJZmxkdAkoJXJkeCkJCS8vIHggOiBsb2cxMCgyKQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CQkvLyB4IDogeCA6IGxvZzEwKDIpCglzYWhmCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCjQ6CWZzdWJsCW9uZSglcmlwKQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpCglmY29tcGwJbGltaXQoJXJpcCkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglmbnN0c3cJCQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWFuZGIJJDB4NDUsICVhaAoJanoJMmYKCWZzdHAJJXN0KDEpCQkvLyB4LTEgOiBsb2cxMCgyKQoJZnlsMnhwMQkJCS8vIGxvZzEwKHgpCgltb3ZxCSVyY3gsJXJheAoJbW92cQkkMCw4KCVyY3gpCglmc3RwdAkoJXJjeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiBsb2cxMCgyKQoJZnlsMngJCQkvLyBsb2cxMCh4KQoJbW92cQklcmN4LCVyYXgKCW1vdnEJJDAsOCglcmN4KQoJZnN0cHQJKCVyY3gpCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCgltb3ZxCSVyY3gsJXJheAoJbW92cQkkMCw4KCVyY3gpCglmc3RwdAkoJXJjeCkKCXJldAojZWxzZQoJZmxkbGcyCQkJLy8gbG9nMTAoMikKCWZsZHQJNCglZXNwKQkJLy8geCA6IGxvZzEwKDIpCglmeGFtCglmbnN0c3cKCWZsZAklc3QJCS8vIHggOiB4IDogbG9nMTAoMikKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoJZnN1YmwJb25lCQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZsZAklc3QJCS8vIHgtMSA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpCglmY29tcGwJbGltaXQJCS8vIHgtMSA6IHggOiBsb2cxMCgyKQoJZm5zdHN3CQkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglhbmRiCSQweDQ1LCAlYWgKCWp6CTJmCglmc3RwCSVzdCgxKQkJLy8geC0xIDogbG9nMTAoMikKCWZ5bDJ4cDEJCQkvLyBsb2cxMCh4KQoJcmV0CgoyOglmc3RwCSVzdCgwKQkJLy8geCA6IGxvZzEwKDIpCglmeWwyeAkJCS8vIGxvZzEwKHgpCglyZXQKCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglyZXQKI2VuZGlmCg==