Ly8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCi8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCi8vCiNpbmNsdWRlICJ2ZXIuaCIKI2luY2x1ZGUgIndpbnZlci5oIgoKI2RlZmluZSBNU19XSU5ET1dTCiNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCiNpbmNsdWRlICJwYXRjaGxldmVsLmgiCgovKiBBY3Jvc3MgcmVsZWFzZXMsIGNoYW5nZToKICogICAgTVNfRExMX0lEIGlmIHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciBjaGFuZ2VzLgogKiAgICBQWVRIT05fRExMX05BTUUgZGl0dG8uCiAqIE1TX0RMTF9JRCBtdXN0IG1hdGNoIFBZX1ZFUlNJT04gaW4gdGhlIFdpbmRvd3MgaW5zdGFsbCBzY3JpcHQuCiAqLwojZGVmaW5lIE1TX0RMTF9JRCAiMi4xIgoKI2lmbmRlZiBQWVRIT05fRExMX05BTUUKI2RlZmluZSBQWVRIT05fRExMX05BTUUgInB5dGhvbjIxLmRsbCIKI2VuZGlmCgovKiBOb3RoaW5nIGJlbG93IHRoaXMgc2hvdWxkIG5lZWQgdG8gYmUgY2hhbmdlZCBleGNlcHQgZm9yIGNvcHlyaWdodAogKiBub3RpY2VzIGFuZCBjb21wYW55IG5hbWUuCiAqLwoKLyogZS5nLiwgMi4xYTIKICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCiAqLwojZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgoKLyogNjQtYml0IHZlcnNpb24gbnVtYmVyIGFzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIDQgMTYtYml0IGludHMgKi8KI2lmIFBZX01JQ1JPX1ZFUlNJT04gPiA2NAojICAgZXJyb3IgIlBZX01JQ1JPX1ZFUlNJT04gPiA2NCIKI2VuZGlmCiNpZiBQWV9SRUxFQVNFX0xFVkVMID4gOTkKIyAgIGVycm9yICJQWV9SRUxFQVNFX0xFVkVMID4gOTkiCiNlbmRpZgojaWYgUFlfUkVMRUFTRV9TRVJJQUwgPiA5CiMgICBlcnJvciAiUFlfUkVMRUFTRV9TRVJJQUwgPiA5IgojZW5kaWYKI2RlZmluZSBGSUVMRDMgKFBZX01JQ1JPX1ZFUlNJT04qMTAwMCArIFBZX1JFTEVBU0VfTEVWRUwqMTAgKyBQWV9SRUxFQVNFX1NFUklBTCkKI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgoKLy8gU3RyaW5nIFRhYmxlcwpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgMTAwMCwgICBNU19ETExfSUQKRU5ECgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBWZXJzaW9uCi8vCgpWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CiBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAogRklMRUZMQUdTTUFTSyAweDNmTAojaWZkZWYgX0RFQlVHCiBGSUxFRkxBR1MgMHgxTAojZWxzZQogRklMRUZMQUdTIDB4MEwKI2VuZGlmCiBGSUxFT1MgMHg0MDAwNEwKIEZJTEVUWVBFIDB4MUwKIEZJTEVTVUJUWVBFIDB4MEwKQkVHSU4KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgIEJFR0lOCiAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJEaWdpdGFsIENyZWF0aW9ucyAyXDAiCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIENvcmVcMCIKICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gRExMXDAiCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAyMDAwLCAyMDAxIEd1aWRvIHZhbiBSb3NzdW0uIENvcHlyaWdodCCpIDIwMDAgQmVPcGVuLmNvbS4gQ29weXJpZ2h0IKkgMTk5NS0yMDAwIENOUkkuIENvcHlyaWdodCCpIDE5OTEtMTk5NSBTTUMuXDAiCiAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgUFlUSE9OX0RMTF9OQU1FICJcMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgIEVORAogICAgRU5ECiAgICBCTE9DSyAiVmFyRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAogICAgRU5ECkVORAo=