LyoqCiAqIEBmaWxlIG1heF9tYWNyby5oCiAqIEBicmllZiDGvcyovLbEo7/pvOS5q7myyc/P3rrqtqjS5aOs08O7p7/J0N64xMnPz97WtaOst7LKx7K7u+Gxu9DeuMS1xLrqo6yyu9e81Nq0y823zsS8/tbQtqjS5QogKsv509C/58Sjv+m1xLLfwtS66qOsyOfP+8+is6S2yKGiTlazpLbItciju1NNU6GiUEKzpLbIo7u2qMqxxvfKsbOko7uzosrUtM7K/aO70a27t8nPz96juwogKiBDb3B5cmlnaHQgKEMpIDIwMTcgU2FuZWNoaXBzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCiAqIEBhdXRob3IKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAqCiAqLwojaWZuZGVmIF9fTUFYX01BQ1JPX0hfXwojZGVmaW5lIF9fTUFYX01BQ1JPX0hfXwoKLyoqCiAqIEBicmllZiC9+LPMvOTP+8+it6LLzbXEz/vPosTayN2zpLbIyc/P3gogKi8KI2RlZmluZSBNU0dfREFUQV9NQVhfTEVOICAzNTAwCgovKioKICogQGJyaWVmILrLvOTP+8+it6LLzbXEz/vPosTayN2zpLbIyc/P3gogKi8KI2RlZmluZSBTT0NfTVNHX01BWF9MRU4gKE1TR19EQVRBX01BWF9MRU4tMTYpCgovKioKICogQGJyaWVmILrLvOTNqLXAu7q05rTz0KEKICovCiNkZWZpbmUgQVRfQ0hBTl9NQVhfQlVGX0xFTgkJCTgqMTAyNAoKLyoqCiAqIEBicmllZiBOVsXk1sPOxLz+w/uzpLbIyc/P3gogKi8KI2RlZmluZSBOVl9NQVhfRklMRV9MRU4gICAgIDI1NgoKLyoqCiAqIEBicmllZiBOVs/uw/uzxrOktsjJz8/eCiAqLwojZGVmaW5lIE5WX01BWF9LRVlfTEVOICAgICAgMTAyNAoKLyoqCiAqIEBicmllZiBOVta1s6S2yMnPz94KICovCiNkZWZpbmUgTlZfTUFYX1ZBTF9MRU4gICAgICAxMDI0CgovKioKICogQGJyaWVmIE5Wz+66zU5W1rWzpLbIyc/P3gogKi8KI2RlZmluZSBOVl9NQVhfSVRFTV9MRU4gICAgIChOVl9NQVhfS0VZX0xFTiArIE5WX01BWF9WQUxfTEVOKQoKLyoqCiAqIEBicmllZiDTptPDsuPD5rTtzvPC67j619m49sr9yc/P3qOsvfbTw9PazsrM4raozrsuCiAq1eK49rTz0KHK3M/e09pOVl9NQVhfVkFMX0xFTrXEtPPQoQogKi8KI2RlZmluZSBFUlJfVFJBQ0tfTUFYX05VTSAgIChOVl9NQVhfVkFMX0xFTi0xNikvKDIgKiA4KQoKLyoqCiAqIEBicmllZiC1pcz1QVTD/MHu1+6087OktsgKICovCiNkZWZpbmUgQVRfQ01EX01BWAkJCQkJCTIwNDgKCi8qKgogKiBAYnJpZWYgzfi/2sP7s6S2yMnPz94KICovCiNkZWZpbmUgTkVUSUZfTkFNRV9MRU4gMjAKCi8qKgogKiBAYnJpZWYgUEPW97v6w/uzpLbIyc/P3gogKi8KI2RlZmluZSBIT1NUTkFNRV9MRU4gMTUwCgovKioKICogQGJyaWVmIM34wudJULXY1rezpLbIyc/P3gogKi8KI2RlZmluZSBTT0ZUQVBfSVBfTUFYX0xFTiAzMgoKCi8qKgogKiBAYnJpZWYg19a3+7Sus6S2yAogKi8KI2RlZmluZSBTT0ZUQVBfU1RSX0xFTl8xNiAxNgoKCi8vLy8vL9LUz8LKx1BCtee7sLG+tcS66rao0uWjrMfr1cW30sejzbfV+8DtCgoKLy8vLy8v0tTPwsrHU01TtcS66rao0uWjrMfr1cW30sejzbfV+8DtCgojZGVmaW5lIFpTTVNfUERVX1NJWkUgICAgICAgICAgICAgICA0MDAKCgoKCiNlbmRpZgo=