LyoKICogRE9TIEVYRSBsb2FkZXIKICoKICogQ29weXJpZ2h0IDE5OTggT3ZlIEvldmVuCiAqLwoKI2lmZGVmIGxpbnV4CgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvaXBjLmg+CiNpbmNsdWRlIDxzeXMvc2htLmg+CiNpbmNsdWRlIDxzeXMvdm04Ni5oPgojaW5jbHVkZSAid2ludHlwZXMuaCIKCnR5cGVkZWYgc3RydWN0IF9ET1NUQVNLIHsKIExQVk9JRCBpbWc7CiB1bnNpZ25lZCBpbWdfb2ZzOwogV09SRCBwc3Bfc2VnLGxvYWRfc2VnOwogSE1PRFVMRTE2IGhNb2R1bGU7CiBzdHJ1Y3Qgdm04NnBsdXNfc3RydWN0IFZNODY7CiBpbnQgZm4sIHN0YXRlOwogY2hhciBtbV9uYW1lWzEyOF07CiBpbnQgbW1fZmQ7CiBpbnQgcmVhZF9waXBlLHdyaXRlX3BpcGU7CiBwaWRfdCB0YXNrOwp9IERPU1RBU0ssICpMUERPU1RBU0s7CgojZGVmaW5lIE1aX1NVUFBPUlRFRAoKZXh0ZXJuIGludCBNWl9Jbml0VGFzayggTFBET1NUQVNLIGxwRG9zVGFzayApOwpleHRlcm4gaW50IE1aX1J1bk1vZHVsZSggTFBET1NUQVNLIGxwRG9zVGFzayApOwpleHRlcm4gdm9pZCBNWl9LaWxsTW9kdWxlKCBMUERPU1RBU0sgbHBEb3NUYXNrICk7CmV4dGVybiBpbnQgRE9TVk1fUHJvY2VzcyggTFBET1NUQVNLIGxwRG9zVGFzayApOwoKI2VuZGlmIC8qIGxpbnV4ICovCgpleHRlcm4gSElOU1RBTkNFMTYgTVpfQ3JlYXRlUHJvY2VzcyggTFBDU1RSIG5hbWUsIExQQ1NUUiBjbWRsaW5lLCBMUENTVFIgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBTVEFSVFVQSU5GTzMyQSBzdGFydHVwLCBMUFBST0NFU1NfSU5GT1JNQVRJT04gaW5mbyApOwpleHRlcm4gaW50IERPU1ZNX0VudGVyKCBQQ09OVEVYVCBjb250ZXh0ICk7Cg==