ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCAzNDMwODBjLi42ZDNiYjkzIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsOCBAQAogQ2hhbmdlcyBmb3IgVS1Cb290IDEuMS4zOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisqIENsZWFudXAgYnVpbGQgcHJvYmxlbXMgb24gNjQgYml0IGJ1aWxkIGhvc3RzCisKICogVXBkYXRlIE1BSU5UQUlORVJTIGZpbGUKIAogKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDAxIEF1ZyAyMDA1OgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAwYmNhZDhlLi4wZmZmNGY2IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMTI5LDYgKzEyOSwzNCBAQAogCiAJQW1pZ2FPbmVHM1NFCQlNUEM3eHgKIAorTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CisKKwlBRENJT1AJCQlJT1A0ODAgKFBQQzQwMSkKKwlBUEM0MDUJCQlQUEM0MDVHUAorCUFSNDA1CQkJUFBDNDA1R1AKKwlBU0g0MDUJCQlQUEM0MDVFUAorCUNBTkJUCQkJUFBDNDA1Q1IKKwlDUENJNDA1CQkJUFBDNDA1R1AKKwlDUENJNDA1MgkJUFBDNDA1R1AKKwlDUENJNDA1QUIJCVBQQzQwNUdQCisJQ1BDSTQwNURUCQlQUEM0MDVHUAorCUNQQ0k0NDAJCQlQUEM0NDBHUAorCUNQQ0lJU0VSNAkJUFBDNDA1R1AKKwlEQVNBX1NJTQkJSU9QNDgwIChQUEM0MDEpCisJRFA0MDUJCQlQUEM0MDVFUAorCURVNDA1CQkJUFBDNDA1R1AKKwlHMjAwMAkJCVBQQzQwNUVQCisJSEg0MDUJCQlQUEM0MDVFUAorCUhVQjQwNQkJCVBQQzQwNUVQCisJT0NSVEMJCQlQUEM0MDVHUAorCU9SU0cJCQlQUEM0MDVHUAorCVBDSTQwNQkJCVBQQzQwNUdQCisJUExVNDA1CQkJUFBDNDA1RVAKKwlQTUM0MDUJCQlQUEM0MDVHUAorCVZPSDQwNQkJCVBQQzQwNUVQCisJVk9NNDA1CQkJUFBDNDA1RVAKKwlXVUg0MDUJCQlQUEM0MDVFUAorCiBGcmFuayBHb3R0c2NobGluZyA8ZmdvdHRzY2hsaW5nQGVsdGVjLmRlPgogCiAJTUhQQwkJCU1QQzh4eApAQCAtMTY4LDEwICsxOTYsNiBAQAogCiAJZGVicmlzCQkJTVBDODI0NQogCi1OeWUgTGl1IDxueWV0QHp1bWFuZXR3b3Jrcy5jb20+Ci0KLQlaVU1BCQkJTVBDN3h4Xzc0eHgKLQogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgogCiAJR1RICQkJTVBDODYwCkBAIC0xODAsNiArMjA0LDIxIEBACiAKIAlFTFBUODYwCQkJTVBDODYwVAogCitOeWUgTGl1IDxueWV0QHp1bWFuZXR3b3Jrcy5jb20+CisKKwlaVU1BCQkJTVBDN3h4Xzc0eHgKKworSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KKworCU1QQzg1NDBBRFMJCU1QQzg1NDAKKwlNUEM4NTYwQURTCQlNUEM4NTYwCisJTVBDODU0MUNEUwkJTVBDODU0MQorCU1QQzg1NTVDRFMJCU1QQzg1NTUKKworRGFuIE1hbGVrIDxkYW5AZW1iZWRkZWRlZGdlLmNvbT4KKworCVNUeEdQMwkJCU1QQzg1eHgKKwogRXJhbiBNYW4gPGVyYW5AbmJhc2UuY28uaWw+CiAKIAlFVkI2NDI2MF83NTBDWAkJTVBDNzUwQ1gKQEAgLTE5NCw2ICsyMzMsNyBAQAogCVRPUDUyMDAJCQlNUEM1MjAwCiAKIFRvbHVuYXkgT3JrdW4gPHRvcmt1bkBuZXh0aW8uY29tPgorCiAJY3NiMjcyCQkJUFBDNDA1R1AKIAljc2I0NzIJCQlQUEM0MDVHUAogCkBAIC0yMDIsMTcgKzI0Miw2IEBACiAJR0VOODYwVAkJCU1QQzg2MFQKIAlHRU44NjBUX1NDCQlNUEM4NjBUCiAKLVN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotCWJhbWJvbwkJCVBQQzQ0MEVQCi0JYnVuYmluZ2EJCVBQQzQwNUVQCi0JZWJvbnkJCQlQUEM0NDBHUAotCW9jb3RlYQkJCVBQQzQ0MEdYCi0Jc3ljYW1vcmUJCVBQQzQwNUdQcgotCXdhbG51dAkJCVBQQzQwNUdQCi0JeWVsbG93c3RvbmUJCVBQQzQ0MEdSCi0JeW9zZW1pdGUJCVBQQzQ0MEVQCi0KIEZyYW5rIFBhbm5vIDxmcGFubm9AZGVscGhpbnRlY2guY29tPgogCiAJZXA4MjYwCQkJTVBDODI2MApAQCAtMjM0LDMzICsyNjMsMjAgQEAKIAlzYmM4MjQwCQkJTVBDODI0MAogCXNiYzQwNQkJCVBQQzQwNUdQCiAKLU1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgorU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogCi0JQURDSU9QCQkJSU9QNDgwIChQUEM0MDEpCi0JQVBDNDA1CQkJUFBDNDA1R1AKLQlBUjQwNQkJCVBQQzQwNUdQCi0JQVNINDA1CQkJUFBDNDA1RVAKLQlDQU5CVAkJCVBQQzQwNUNSCi0JQ1BDSTQwNQkJCVBQQzQwNUdQCi0JQ1BDSTQwNTIJCVBQQzQwNUdQCi0JQ1BDSTQwNUFCCQlQUEM0MDVHUAotCUNQQ0k0MDVEVAkJUFBDNDA1R1AKLQlDUENJNDQwCQkJUFBDNDQwR1AKLQlDUENJSVNFUjQJCVBQQzQwNUdQCi0JREFTQV9TSU0JCUlPUDQ4MCAoUFBDNDAxKQotCURQNDA1CQkJUFBDNDA1RVAKLQlEVTQwNQkJCVBQQzQwNUdQCi0JRzIwMDAJCQlQUEM0MDVFUAotCUhINDA1CQkJUFBDNDA1RVAKLQlIVUI0MDUJCQlQUEM0MDVFUAotCU9DUlRDCQkJUFBDNDA1R1AKLQlPUlNHCQkJUFBDNDA1R1AKLQlQQ0k0MDUJCQlQUEM0MDVHUAotCVBMVTQwNQkJCVBQQzQwNUVQCi0JUE1DNDA1CQkJUFBDNDA1R1AKLQlWT0g0MDUJCQlQUEM0MDVFUAotCVZPTTQwNQkJCVBQQzQwNUVQCi0JV1VINDA1CQkJUFBDNDA1RVAKKwliYW1ib28JCQlQUEM0NDBFUAorCWJ1bmJpbmdhCQlQUEM0MDVFUAorCWVib255CQkJUFBDNDQwR1AKKwlvY290ZWEJCQlQUEM0NDBHWAorCXN5Y2Ftb3JlCQlQUEM0MDVHUHIKKwl3YWxudXQJCQlQUEM0MDVHUAorCXllbGxvd3N0b25lCQlQUEM0NDBHUgorCXlvc2VtaXRlCQlQUEM0NDBFUAorCitZdXNkaSBTYW50b3NvIDx5dXNkaV9zYW50b3NvQGFkYXB0ZWMuY29tPgorCisJSElEREVOX0RSQUdPTglNUEM4MjQxL01QQzgyNDUKIAogVHJhdmlzIFNhd3llciAodHJhdmlzLnNhd3llckBzYW5kYnVyc3QuY29tPgogCkBAIC0yOTcsMjEgKzMxMyw2IEBACiAKIAlzdm1fc2M4eHgJCU1QQzh4eAogCi1Kb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi0JTVBDODU0MEFEUwkJTVBDODU0MAotCU1QQzg1NjBBRFMJCU1QQzg1NjAKLQlNUEM4NTQxQ0RTCQlNUEM4NTQxCi0JTVBDODU1NUNEUwkJTVBDODU1NQotCi1EYW4gTWFsZWsgPGRhbkBlbWJlZGRlZGVkZ2UuY29tPgotCi0JU1R4R1AzCQkJTVBDODV4eAotCi1ZdXNkaSBTYW50b3NvIDx5dXNkaV9zYW50b3NvQGFkYXB0ZWMuY29tPgotCi0JSElEREVOX0RSQUdPTglNUEM4MjQxL01QQzgyNDUKLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBVbmtub3duIC8gb3JwaGFuZWQgYm9hcmRzOgpAQCAtMzQ2LDYgKzM0NywxMCBAQAogIwlCb2FyZAkJCUNQVQkJCQkJIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitSaXNoaSBCaGF0dGFjaGFyeWEgPHJpc2hpQHRpLmNvbT4KKworCW9tYXA1OTEyb3NrCQlBUk05MjZFSlMKKwogR2VvcmdlIEcuIERhdmlzIDxnZGF2aXNAbXZpc3RhLmNvbT4KIAogCWFzc2FiZXQJCQlTQTExMDAKQEAgLTM2NCw2ICszNjksMTEgQEAKIAlpbXBhNwkJCUFSTTcyMFQgKEVQNzIxMSkKIAllcDczMTIJCQlBUk03MjBUIChFUDczMTIpCiAKK0tzaGl0aWogR3VwdGEgPGtzaGl0aWpAdGkuY29tPgorCisJb21hcDE1MTBpbm4JCUFSTTkyNVQKKwlvbWFwMTYxMGlubgkJQVJNOTI2RUpTCisKIEt5bGUgSGFycmlzIDxraGFycmlzQG5leHVzLXRlY2gubmV0PgogCiAJbHViYm9jawkJCXhzY2FsZQpAQCAtMzc1LDI5ICszODUsMTMgQEAKIAlzbWRrMjQwMAkJQVJNOTIwVAogCXRyYWIJCQlBUk05MjBUCiAKLVByYWthc2ggS3VtYXIgPHByYWthc2hAZW1iZWR4LmNvbT4KLQotCWNlcmYyNTAJCQl4c2NhbGUKLQotS3NoaXRpaiBHdXB0YSA8a3NoaXRpakB0aS5jb20+Ci0KLQlvbWFwMTUxMGlubgkJQVJNOTI1VAotCW9tYXAxNjEwaW5uCQlBUk05MjZFSlMKLQotRGF2ZSBQZXZlcmxleSA8ZHBldmVybGV5QG1wYy1kYXRhLmNvLnVrPgotCW9tYXA3MzBwMgkJQVJNOTI2RUpTCi0KIE5pc2hhbnQgS2FtYXQgPG5za2FtYXRAdGkuY29tPgogCiAJb21hcDE2MTBoMgkJQVJNOTI2RUpTCiAKLVJpc2hpIEJoYXR0YWNoYXJ5YSA8cmlzaGlAdGkuY29tPgorUHJha2FzaCBLdW1hciA8cHJha2FzaEBlbWJlZHguY29tPgogCi0Jb21hcDU5MTJvc2sJCUFSTTkyNkVKUwotCi1SaWNoYXJkIFdvb2RydWZmIDxyLXdvb2RydWZmMkB0aS5jb20+Ci0KLQlvbWFwMjQyMGg0CQlBUk0xMTM2RUpTCisJY2VyZjI1MAkJCXhzY2FsZQogCiBEYXZpZCBN/GxsZXIgPGQubXVlbGxlckBlbHNvZnQuY2g+CiAKQEAgLTQwOCw2ICs0MDIsMTAgQEAKIAogCXNoYW5ub24JCQlTQTExMDAKIAorRGF2ZSBQZXZlcmxleSA8ZHBldmVybGV5QG1wYy1kYXRhLmNvLnVrPgorCisJb21hcDczMHAyCQlBUk05MjZFSlMKKwogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgogCiAJY3NiMjI2CQkJeHNjYWxlCkBAIC00MTUsNyArNDEzLDcgQEAKIAogQW5kcmVhIFNjaWFuIDxhbmRyZWEuc2NpYW5AZGF2ZS10ZWNoLml0PgogCi0JQjIJCQkJQVJNN1RETUkgKFMzQzQ0QjBYKQorCUIyCQkJQVJNN1RETUkgKFMzQzQ0QjBYKQogCiBHcmVnIFVuZ2VyZXIgPGdyZWcudW5nZXJlckBvcGVuZ2Vhci5jb20+CiAKQEAgLTQyMyw2ICs0MjEsMTAgQEAKIAljbTQxMTYJCQlrczg2OTVwCiAJY200MTQ4CQkJa3M4Njk1cAogCitSaWNoYXJkIFdvb2RydWZmIDxyLXdvb2RydWZmMkB0aS5jb20+CisKKwlvbWFwMjQyMGg0CQlBUk0xMTM2RUpTCisKIEFsZXggWvxwa2UgPGF6dUBzeXNnby5kZT4KIAogCWxhcnQJCQlTQTExMDAKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggZDIzYTZkZC4uYjI0YjI2ZCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTg4MSwxNSArODgxLDE0IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBNUEM4MjIwIFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUFsYXNrYTgyMjBfY29uZmlnOgl1bmNvbmZpZworCitBbGFza2E4MjIwX2NvbmZpZwlcCitZdWtvbjgyMjBfY29uZmlnOgl1bmNvbmZpZwogCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgcHBjIG1wYzgyMjAgYWxhc2thCiAKIHNvcmNlcnlfY29uZmlnOgkJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4MjIwIHNvcmNlcnkKIAotWXVrb244MjIwX2NvbmZpZzoJdW5jb25maWcKLQlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4MjIwIHl1a29uCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIE1QQzgyNHggU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy95ZWxsb3dzdG9uZS9mbGFzaC5jIGIvYm9hcmQvYW1jYy95ZWxsb3dzdG9uZS9mbGFzaC5jCmluZGV4IDk5ZmNmYjUuLmNkNmEyZTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MveWVsbG93c3RvbmUvZmxhc2guYworKysgYi9ib2FyZC9hbWNjL3llbGxvd3N0b25lL2ZsYXNoLmMKQEAgLTMyOSw3ICszMjksNiBAQAogCXZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqYWRkciA9IChGTEFTSF9XT1JEX1NJWkUgKikgKGluZm8tPnN0YXJ0WzBdKTsKIAl2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKmFkZHIyOwogCWludCBmbGFnLCBwcm90LCBzZWN0LCBsX3NlY3Q7Ci0JaW50IGk7CiAKIAlpZiAoKHNfZmlyc3QgPCAwKSB8fCAoc19maXJzdCA+IHNfbGFzdCkpIHsKIAkJaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHsKQEAgLTUxNyw3ICs1MTYsNyBAQAogICovCiBzdGF0aWMgaW50IHdyaXRlX3dvcmQoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKIHsKLQl2b2xhdGlsZSB2dV9sb25nICphZGRyMiA9ICh2dV9sb25nICopIChpbmZvLT5zdGFydFswXSk7CisJdnVfbG9uZyAqYWRkcjIgPSAodnVfbG9uZyAqKSAoaW5mby0+c3RhcnRbMF0pOwogCXZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqZGVzdDIgPSAoRkxBU0hfV09SRF9TSVpFICopIGRlc3Q7CiAJdm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICpkYXRhMiA9IChGTEFTSF9XT1JEX1NJWkUgKikgJiBkYXRhOwogCXVsb25nIHN0YXJ0OwpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy95ZWxsb3dzdG9uZS95ZWxsb3dzdG9uZS5jIGIvYm9hcmQvYW1jYy95ZWxsb3dzdG9uZS95ZWxsb3dzdG9uZS5jCmluZGV4IDg0MGE0NmMuLmE2YjgxZTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MveWVsbG93c3RvbmUveWVsbG93c3RvbmUuYworKysgYi9ib2FyZC9hbWNjL3llbGxvd3N0b25lL3llbGxvd3N0b25lLmMKQEAgLTMxNSwxMCArMzE1LDYgQEAKICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpICYmIGRlZmluZWQoQ0ZHX1BDSV9UQVJHRVRfSU5JVCkKIHZvaWQgcGNpX3RhcmdldF9pbml0KHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSkKIHsKLQl1MTYgY21kc3RhdDsKLQotCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwotCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAkgKiBTZXQgdXAgRGlyZWN0IE1NSU8gcmVnaXN0ZXJzCiAJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRpZmYgLS1naXQgYS9jb21tb24vZW52aXJvbm1lbnQuYyBiL2NvbW1vbi9lbnZpcm9ubWVudC5jCmluZGV4IDYxYThkMjQuLmM3ZjU0YzYgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9lbnZpcm9ubWVudC5jCisrKyBiL2NvbW1vbi9lbnZpcm9ubWVudC5jCkBAIC0yMSw3ICsyMSwxMiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZQlfX0FTU0VNQkxZX18JCQkvKiBEaXJ0eSB0cmljayB0byBnZXQgb25seSAjZGVmaW5lcwkqLworI2VuZGlmCisjZGVmaW5lCV9fQVNNX1NUVUJfUFJPQ0VTU09SX0hfXwkvKiBkb24ndCBpbmNsdWRlIGFzbS9wcm9jZXNzb3IuCQkqLwogI2luY2x1ZGUgPGNvbmZpZy5oPgorI3VuZGVmCV9fQVNTRU1CTFlfXwogI2luY2x1ZGUgPGVudmlyb25tZW50Lmg+CiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvWXVrb244MjIwLmggYi9pbmNsdWRlL2NvbmZpZ3MvWXVrb244MjIwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzYzBlNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9ZdWtvbjgyMjAuaApAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogVHNpQ2h1bmcgTGlldywgRnJlZXNjYWxlIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKiAoZWFzeSB0byBjaGFuZ2UpCisgKi8KKyNkZWZpbmUgQ09ORklHX01QQzgyMjAJCTEKKyNkZWZpbmUgQ09ORklHX1lVS09OODIyMAkxCS8qIC4uLiBvbiBZdWtvbiBib2FyZAkqLworCisvKiBJbnB1dCBjbG9jayBydW5uaW5nIGF0IDMwTWh6LCByZWFkIEhpZDEgZm9yIHRoZSBDUFUgbXVsdGlwbGllciB0bworICAgZGV0ZXJtaW5lIHRoZSBDUFUgc3BlZWQuICovCisjZGVmaW5lIENGR19NUEM4MjIwX0NMS0lOCTMwMDAwMDAwLyogLi4uIHJ1bm5pbmcgYXQgMzBNSHogKi8KKyNkZWZpbmUgQ0ZHX01QQzgyMjBfU1lTUExMX1ZDT19NVUxUSVBMSUVSIDE2IC8qIFZDTyBtdWx0aXBsaWVyIGNhbid0IGJlIHJlYWQgZnJvbSBhbnkgcmVnaXN0ZXIgKi8KKworI2RlZmluZSBCT09URkxBR19DT0xECQkweDAxCS8qIE5vcm1hbCBQb3dlci1PbjogQm9vdCBmcm9tIEZMQVNIICovCisjZGVmaW5lIEJPT1RGTEFHX1dBUk0JCTB4MDIJLyogU29mdHdhcmUgcmVib290CSovCisKKyNkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSVpFCTMyCS8qIEZvciBNUEM4MjIwIENQVXMgKi8KKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCisjICBkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSElGVAk1ICAgLyogbG9nIGJhc2UgMiBvZiB0aGUgYWJvdmUgdmFsdWUgKi8KKyNlbmRpZgorCisvKgorICogU2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgorICovCisKKy8qIERlZmluZSB0aGlzIGZvciBQU0MgY29uc29sZQorI2RlZmluZSBDT05GSUdfUFNDX0NPTlNPTEUJMQorKi8KKworI2RlZmluZSBDT05GSUdfRVhUVUFSVF9DT05TT0xFCTEKKworI2lmZGVmIENPTkZJR19FWFRVQVJUX0NPTlNPTEUKKyMgICBkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJMQorIyAgIGRlZmluZSBDRkdfTlMxNjU1MF9TRVJJQUwKKyMgICBkZWZpbmUgQ0ZHX05TMTY1NTAKKyMgICBkZWZpbmUgQ0ZHX05TMTY1NTBfUkVHX1NJWkUgMQorIyAgIGRlZmluZSBDRkdfTlMxNjU1MF9DT00xCShDRkdfQ1BMRF9CQVNFICsgMHgxMDA4KQorIyAgIGRlZmluZSBDRkdfTlMxNjU1MF9DTEsJMTg0MzIwMDAKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCSAgICAvKiAuLi4gYXQgMTE1MjAwIGJwcyAqLworCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwIH0KKworI2RlZmluZSBDT05GSUdfVElNRVNUQU1QCQkJLyogUHJpbnQgaW1hZ2UgaW5mbyB3aXRoIHRpbWVzdGFtcCAqLworCisvKgorICogU3VwcG9ydGVkIGNvbW1hbmRzCisgKi8KKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSAgICAgICggQ09ORklHX0NNRF9ERkwJfCBcCisJCQkJQ0ZHX0NNRF9CT09URAl8IFwKKwkJCQlDRkdfQ01EX0NBQ0hFCXwgXAorCQkJCUNGR19DTURfREhDUAl8IFwKKwkJCQlDRkdfQ01EX0RJQUcJfCBcCisJCQkJQ0ZHX0NNRF9FRVBST00JfCBcCisJCQkJQ0ZHX0NNRF9FTEYJfCBcCisJCQkJQ0ZHX0NNRF9JMkMJfCBcCisJCQkJQ0ZHX0NNRF9ORVQJfCBcCisJCQkJQ0ZHX0NNRF9ORlMJfCBcCisJCQkJQ0ZHX0NNRF9QQ0kJfCBcCisJCQkJQ0ZHX0NNRF9QSU5HCXwgXAorCQkJCUNGR19DTURfUkVHSU5GTyB8IFwKKwkJCQlDRkdfQ01EX1NEUkFNCXwgXAorCQkJCUNGR19DTURfU05UUAkpCisKKyNkZWZpbmUgQ09ORklHX05FVF9NVUxUSQorCisvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKy8qCisgKiBBdXRvYm9vdGluZworICovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJNSAgICAvKiBhdXRvYm9vdCBhZnRlciA1IHNlY29uZHMgKi8KKyNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCQkicm9vdD0vZGV2L3JhbSBydyIKKyNkZWZpbmUgQ09ORklHX0VUSEFERFIJCTAwOmUwOjBjOmJjOmUwOjYwCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMQorI2RlZmluZSBDT05GSUdfRVRIMUFERFIJCTAwOmUwOjBjOmJjOmUwOjYxCisjZGVmaW5lIENPTkZJR19JUEFERFIJCTE5Mi4xNjIuMS4yCisjZGVmaW5lIENPTkZJR19ORVRNQVNLCQkyNTUuMjU1LjI1NS4wCisjZGVmaW5lIENPTkZJR19TRVJWRVJJUAkJMTkyLjE2Mi4xLjEKKyNkZWZpbmUgQ09ORklHX0dBVEVXQVlJUAkxOTIuMTYyLjEuMQorI2RlZmluZSBDT05GSUdfSE9TVE5BTUUJCXl1a29uCisjZGVmaW5lIENPTkZJR19PVkVSV1JJVEVfRVRIQUREUl9PTkNFCisKKworLyoKKyAqIEkyQyBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX0hBUkRfSTJDCQkxCisjZGVmaW5lIENGR19JMkNfTU9EVUxFCQkxCisKKyNkZWZpbmUgQ0ZHX0kyQ19TUEVFRAkJMTAwMDAwIC8qIDEwMCBrSHogKi8KKyNkZWZpbmUgQ0ZHX0kyQ19TTEFWRQkJMHg3RgorCisvKgorICogRUVQUk9NIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDRkdfSTJDX0VFUFJPTV9BRERSCQkweDUyCS8qIDEwMTEwMDB4YiAqLworI2RlZmluZSBDRkdfSTJDX0VFUFJPTV9BRERSX0xFTgkJMQorI2RlZmluZSBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfQklUUwkzCisjZGVmaW5lIENGR19FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUwk3MAorLyoKKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9FRVBST00JMQorI2RlZmluZSBDRkdfRU5WX09GRlNFVAkJMAorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTI1NgorKi8KKworLyogSWYgQ0ZHX0FNRF9CT09UIGlzIGRlZmluZWQsIHRoZSB0aGUgc3lzdGVtIHdpbGwgYm9vdCBmcm9tIEFNRC4KKyAgIGVsc2UgdW5kZWZpbmVkIGl0IHdpbGwgYm9vdCBmcm9tIEludGVsIFN0cmF0YSBmbGFzaCAqLworI2RlZmluZSBDRkdfQU1EX0JPT1QJCTEKKworLyoKKyAqIEZsZXhidXMgQ2hpcHNlbGVjdCBjb25maWd1cmF0aW9uCisgKi8KKyNpZiBkZWZpbmVkIChDRkdfQU1EX0JPT1QpCisjZGVmaW5lIENGR19DUzBfQkFTRQkJMHhmZmYwCisjZGVmaW5lIENGR19DUzBfTUFTSwkJMHgwMDA4MDAwMCAgLyogNTEyIEtCICovCisjZGVmaW5lIENGR19DUzBfQ1RSTAkJMHgwMDNmMGQ0MAorCisjZGVmaW5lIENGR19DUzFfQkFTRQkJMHhmZTAwCisjZGVmaW5lIENGR19DUzFfTUFTSwkJMHgwMTAwMDAwMCAgLyogMTYgTUIgKi8KKyNkZWZpbmUgQ0ZHX0NTMV9DVFJMCQkweDAwM2YxNTQwCisjZWxzZQorI2RlZmluZSBDRkdfQ1MwX0JBU0UJCTB4ZmYwMAorI2RlZmluZSBDRkdfQ1MwX01BU0sJCTB4MDEwMDAwMDAgIC8qIDE2IE1CICovCisjZGVmaW5lIENGR19DUzBfQ1RSTAkJMHgwMDNmMTU0MAorCisjZGVmaW5lIENGR19DUzFfQkFTRQkJMHhmZTA4CisjZGVmaW5lIENGR19DUzFfTUFTSwkJMHgwMDA4MDAwMCAgLyogNTEyIEtCICovCisjZGVmaW5lIENGR19DUzFfQ1RSTAkJMHgwMDNmMGQ0MAorI2VuZGlmCisKKyNkZWZpbmUgQ0ZHX0NTMl9CQVNFCQkweGYxMDAKKyNkZWZpbmUgQ0ZHX0NTMl9NQVNLCQkweDAwMDQwMDAwCisjZGVmaW5lIENGR19DUzJfQ1RSTAkJMHgwMDNmMTE0MAorCisjZGVmaW5lIENGR19DUzNfQkFTRQkJMHhmMjAwCisjZGVmaW5lIENGR19DUzNfTUFTSwkJMHgwMDA0MDAwMAorI2RlZmluZSBDRkdfQ1MzX0NUUkwJCTB4MDAzZjExMDAKKworCisjZGVmaW5lIENGR19GTEFTSDBfQkFTRQkJKENGR19DUzBfQkFTRSA8PCAxNikKKyNkZWZpbmUgQ0ZHX0ZMQVNIMV9CQVNFCQkoQ0ZHX0NTMV9CQVNFIDw8IDE2KQorCisjaWYgZGVmaW5lZCAoQ0ZHX0FNRF9CT09UKQorI2RlZmluZSBDRkdfQU1EX0JBU0UJCUNGR19GTEFTSDBfQkFTRQorI2RlZmluZSBDRkdfSU5URUxfQkFTRQkJQ0ZHX0ZMQVNIMV9CQVNFICsgMHhmMDAwMDAKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCUNGR19BTURfQkFTRQorI2Vsc2UKKyNkZWZpbmUgQ0ZHX0lOVEVMX0JBU0UJCUNGR19GTEFTSDBfQkFTRSArIDB4ZjAwMDAwCisjZGVmaW5lIENGR19BTURfQkFTRQkJQ0ZHX0ZMQVNIMV9CQVNFCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQlDRkdfSU5URUxfQkFTRQorI2VuZGlmCisKKyNkZWZpbmUgQ0ZHX0NQTERfQkFTRQkJKENGR19DUzJfQkFTRSA8PCAxNikKKyNkZWZpbmUgQ0ZHX0ZQR0FfQkFTRQkJKENGR19DUzNfQkFTRSA8PCAxNikKKworCisjZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJNAkvKiBtYXggbnVtIG9mIG1lbW9yeSBiYW5rcwkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJMTI4CS8qIG1heCBudW0gb2Ygc2VjdHMgb24gb25lIGNoaXAgKi8KKworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkyNDAwMDAJLyogRmxhc2ggRXJhc2UgVGltZW91dCAoaW4gbXMpCSovCisjZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCTUwMAkvKiBGbGFzaCBXcml0ZSBUaW1lb3V0IChpbiBtcykJKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0xPQ0tfVE9VVAk1CS8qIFRpbWVvdXQgZm9yIEZsYXNoIFNldCBMb2NrIEJpdCAoaW4gbXMpICovCisjZGVmaW5lIENGR19GTEFTSF9VTkxPQ0tfVE9VVAkxMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBDbGVhciBMb2NrIEJpdHMgKGluIG1zKSAqLworI2RlZmluZSBDRkdfRkxBU0hfUFJPVEVDVElPTgkJLyogIlJlYWwiIChoYXJkd2FyZSkgc2VjdG9ycyBwcm90ZWN0aW9uICovCisKKyNkZWZpbmUgUEhZU19BTURfU0VDVF9TSVpFCTB4MDAwMTAwMDAgLyogIDY0IEtCIHNlY3RvcnMgKHgyKSAqLworI2RlZmluZSBQSFlTX0lOVEVMX1NFQ1RfU0laRQkweDAwMDIwMDAwIC8qIDEyOCBLQiBzZWN0b3JzICh4MikgKi8KKworI2RlZmluZSBDRkdfRkxBU0hfQ0hFQ0tTVU0KKy8qCisgKiBFbnZpcm9ubWVudCBzZXR0aW5ncworICovCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMQorI2lmIGRlZmluZWQgKENGR19BTURfQk9PVCkKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoQ0ZHX0ZMQVNIMF9CQVNFICsgQ0ZHX0NTMF9NQVNLIC0gUEhZU19BTURfU0VDVF9TSVpFKQorI2RlZmluZSBDRkdfRU5WX1NJWkUJCVBIWVNfQU1EX1NFQ1RfU0laRQorI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQlQSFlTX0FNRF9TRUNUX1NJWkUKKyNkZWZpbmUgQ0ZHX0VOVjFfQUREUgkJKENGR19GTEFTSDFfQkFTRSArIENGR19DUzFfTUFTSyAtIFBIWVNfSU5URUxfU0VDVF9TSVpFKQorI2RlZmluZSBDRkdfRU5WMV9TSVpFCQlQSFlTX0lOVEVMX1NFQ1RfU0laRQorI2RlZmluZSBDRkdfRU5WMV9TRUNUX1NJWkUJUEhZU19JTlRFTF9TRUNUX1NJWkUKKyNlbHNlCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19GTEFTSDBfQkFTRSArIENGR19DUzBfTUFTSyAtIFBIWVNfSU5URUxfU0VDVF9TSVpFKQorI2RlZmluZSBDRkdfRU5WX1NJWkUJCVBIWVNfSU5URUxfU0VDVF9TSVpFCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCVBIWVNfSU5URUxfU0VDVF9TSVpFCisjZGVmaW5lIENGR19FTlYxX0FERFIJCShDRkdfRkxBU0gxX0JBU0UgKyBDRkdfQ1MxX01BU0sgLSBQSFlTX0FNRF9TRUNUX1NJWkUpCisjZGVmaW5lIENGR19FTlYxX1NJWkUJCVBIWVNfQU1EX1NFQ1RfU0laRQorI2RlZmluZSBDRkdfRU5WMV9TRUNUX1NJWkUJUEhZU19BTURfU0VDVF9TSVpFCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQkxCisKKyNpZiBkZWZpbmVkIENGR19FTlZfSVNfSU5fRkxBU0gKKyN1bmRlZiBDRkdfRU5WX0lTX0lOX05WUkFNCisjdW5kZWYgQ0ZHX0VOVl9JU19JTl9FRVBST00KKyNlbGlmIGRlZmluZWQgQ0ZHX0VOVl9JU19JTl9OVlJBTQorI3VuZGVmIENGR19FTlZfSVNfSU5fRkxBU0gKKyN1bmRlZiBDRkdfRU5WX0lTX0lOX0VFUFJPTQorI2VsaWYgZGVmaW5lZCBDRkdfRU5WX0lTX0lOX0VFUFJPTQorI3VuZGVmIENGR19FTlZfSVNfSU5fTlZSQU0KKyN1bmRlZiBDRkdfRU5WX0lTX0lOX0ZMQVNICisjZW5kaWYKKworI2lmbmRlZiBDRkdfSkZGUzJfRklSU1RfU0VDVE9SCisjZGVmaW5lIENGR19KRkZTMl9GSVJTVF9TRUNUT1IJMAorI2VuZGlmCisjaWZuZGVmIENGR19KRkZTMl9GSVJTVF9CQU5LCisjZGVmaW5lIENGR19KRkZTMl9GSVJTVF9CQU5LCTAKKyNlbmRpZgorI2lmbmRlZiBDRkdfSkZGUzJfTlVNX0JBTktTCisjZGVmaW5lIENGR19KRkZTMl9OVU1fQkFOS1MJMQorI2VuZGlmCisjZGVmaW5lIENGR19KRkZTMl9MQVNUX0JBTksgKENGR19KRkZTMl9GSVJTVF9CQU5LICsgQ0ZHX0pGRlMyX05VTV9CQU5LUyAtIDEpCisKKy8qCisgKiBNZW1vcnkgbWFwCisgKi8KKyNkZWZpbmUgQ0ZHX01CQVIJCTB4RjAwMDAwMDAKKyNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0RFRkFVTFRfTUJBUgkweDgwMDAwMDAwCisjZGVmaW5lIENGR19TUkFNX0JBU0UJCShDRkdfTUJBUiArIDB4MjAwMDApCisjZGVmaW5lIENGR19TUkFNX1NJWkUJCTB4ODAwMAorCisvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJKENGR19NQkFSICsgMHgyMDAwMCkKKyNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0VORAkweDgwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX09GRlNFVAkoQ0ZHX0lOSVRfUkFNX0VORCAtIENGR19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDRkdfSU5JVF9TUF9PRkZTRVQJQ0ZHX0dCTF9EQVRBX09GRlNFVAorCisjZGVmaW5lIENGR19NT05JVE9SX0JBU0UJVEVYVF9CQVNFCisjaWYgKENGR19NT05JVE9SX0JBU0UgPCBDRkdfRkxBU0hfQkFTRSkKKyMgICBkZWZpbmUgQ0ZHX1JBTUJPT1QJCTEKKyNlbmRpZgorCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IgICAqLworI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDEyOCA8PCAxMCkgLyogUmVzZXJ2ZSAxMjgga0IgZm9yIG1hbGxvYygpICAqLworI2RlZmluZSBDRkdfQk9PVE1BUFNaCQkoOCA8PCAyMCkgICAvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4ICovCisKKy8qIFNEUkFNIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX1RPVEFMX0JBTktTCQkyCisjZGVmaW5lIENGR19TRFJBTV9TUERfSTJDX0FERFIJCTB4NTEJCS8qIDdiaXQgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX1NQRF9TSVpFCQkweDQwCisjZGVmaW5lIENGR19TRFJBTV9DQVNfTEFURU5DWQkJNAkJLyogKENMPTIpeDIgKi8KKworLyogU0RSQU0gZHJpdmUgc3RyZW5ndGggcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX0RSSVZFX1NUUkVOR1RICSgoRFJJVkVfU1RSRU5HVEhfTE9XICA8PCBTRFJBTURTX1NCRV9TSElGVCkgfCBcCisJCQkJCSAoRFJJVkVfU1RSRU5HVEhfSElHSCA8PCBTRFJBTURTX1NCQ19TSElGVCkgfCBcCisJCQkJCSAoRFJJVkVfU1RSRU5HVEhfTE9XICA8PCBTRFJBTURTX1NCQV9TSElGVCkgfCBcCisJCQkJCSAoRFJJVkVfU1RSRU5HVEhfT0ZGICA8PCBTRFJBTURTX1NCU19TSElGVCkgfCBcCisJCQkJCSAoRFJJVkVfU1RSRU5HVEhfTE9XICA8PCBTRFJBTURTX1NCRF9TSElGVCkpCisKKy8qCisgKiBFdGhlcm5ldCBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX01QQzgyMjBfRkVDCTEKKyNkZWZpbmUgQ09ORklHX0ZFQ18xME1CSVQJMSAvKiBXb3JrYXJvdW5kIGZvciBGRUMgMTAwTWJpdCBwcm9ibGVtICovCisjZGVmaW5lIENPTkZJR19QSFlfQUREUgkJMHgxOAorCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ0ZHX0xPTkdIRUxQCQkJICAgIC8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCisjZGVmaW5lIENGR19QUk9NUFQJCSI9PiAiCSAgICAvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKKyNkZWZpbmUgQ0ZHX0NCU0laRQkJMTAyNAkgICAgLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNlbHNlCisjZGVmaW5lIENGR19DQlNJWkUJCTI1NgkgICAgLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNlbmRpZgorI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikJLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX01BWEFSR1MJCTE2CSAgICAvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncyAgICovCisjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRSAgLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZSAgICAqLworCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAgIC8qIG1lbXRlc3Qgd29ya3Mgb24gKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwZjAwMDAwICAvKiAxIC4uLiAxNSBNQiBpbiBEUkFNICAqLworCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MTAwMDAwICAgIC8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisKKyNkZWZpbmUgQ0ZHX0haCQkJMTAwMAkgICAgLyogZGVjcmVtZW50ZXIgZnJlcTogMSBtcyB0aWNrcyAqLworCisvKgorICogVmFyaW91cyBsb3ctbGV2ZWwgc2V0dGluZ3MKKyAqLworI2RlZmluZSBDRkdfSElEMF9JTklUCQlISUQwX0lDRSB8IEhJRDBfSUNGSQorI2RlZmluZSBDRkdfSElEMF9GSU5BTAkJSElEMF9JQ0UKKworI2VuZGlmIC8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2VudmNyYy5jIGIvdG9vbHMvZW52Y3JjLmMKaW5kZXggNWYxM2E2My4uN2I3NzE4MyAxMDA2NDQKLS0tIGEvdG9vbHMvZW52Y3JjLmMKKysrIGIvdG9vbHMvZW52Y3JjLmMKQEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLSNkZWZpbmUJX19BU1NFTUJMWV9fCS8qIERpcnR5IHRyaWNrIHRvIGdldCBvbmx5ICNkZWZpbmVzICovCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZQlfX0FTU0VNQkxZX18JCQkvKiBEaXJ0eSB0cmljayB0byBnZXQgb25seSAjZGVmaW5lcwkqLworI2VuZGlmCisjZGVmaW5lCV9fQVNNX1NUVUJfUFJPQ0VTU09SX0hfXwkvKiBkb24ndCBpbmNsdWRlIGFzbS9wcm9jZXNzb3IuCQkqLwogI2luY2x1ZGUgPGNvbmZpZy5oPgogI3VuZGVmCV9fQVNTRU1CTFlfXwogCkBAIC03MywyNCArNzYsMjQgQEAKIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAjaWZkZWYJRU5WX0lTX0VNQkVEREVECi0gICAgaW50IGNyYyA7Ci0gICAgdW5zaWduZWQgY2hhciAJKmVudnB0ciAJPSAmZW52aXJvbm1lbnQsCi0JCQkqZGF0YXB0ciAJPSBlbnZwdHIgKyBFTlZfSEVBREVSX1NJWkU7Ci0gICAgdW5zaWduZWQgaW50CWRhdGFzaXplIAk9IEVOVl9TSVpFOworCWludCBjcmM7CisJdW5zaWduZWQgY2hhciAqZW52cHRyID0gJmVudmlyb25tZW50LAorCQkqZGF0YXB0ciA9IGVudnB0ciArIEVOVl9IRUFERVJfU0laRTsKKwl1bnNpZ25lZCBpbnQgZGF0YXNpemUgPSBFTlZfU0laRTsKIAotICAgIGNyYyA9IGNyYzMyKDAsIGRhdGFwdHIsIGRhdGFzaXplKSA7CisJY3JjID0gY3JjMzIgKDAsIGRhdGFwdHIsIGRhdGFzaXplKTsKIAotICAgIC8qIENoZWNrIGlmIHZlcmJvc2UgbW9kZSBpcyBhY3RpdmF0ZWQgcGFzc2luZyBhIHBhcmFtZXRlciB0byB0aGUgcHJvZ3JhbSAqLwotICAgIGlmIChhcmdjID4gMSkgewotCXByaW50ZigiQ1JDMzIgZnJvbSBvZmZzZXQgJTA4WCB0byAlMDhYIG9mIGVudmlyb25tZW50ID0gJTA4WFxuIiwKLQkgICAgKHVuc2lnbmVkIGludCkoZGF0YXB0ciAtIGVudnB0ciksCi0JICAgICh1bnNpZ25lZCBpbnQpKGRhdGFwdHIgLSBlbnZwdHIpICsgZGF0YXNpemUsCi0JICAgIGNyYyk7Ci0gICAgfSBlbHNlIHsKLQlwcmludGYoIjB4JTA4WFxuIiwgY3JjKTsKLSAgICB9CisJLyogQ2hlY2sgaWYgdmVyYm9zZSBtb2RlIGlzIGFjdGl2YXRlZCBwYXNzaW5nIGEgcGFyYW1ldGVyIHRvIHRoZSBwcm9ncmFtICovCisJaWYgKGFyZ2MgPiAxKSB7CisJCXByaW50ZiAoIkNSQzMyIGZyb20gb2Zmc2V0ICUwOFggdG8gJTA4WCBvZiBlbnZpcm9ubWVudCA9ICUwOFhcbiIsCisJCQkodW5zaWduZWQgaW50KSAoZGF0YXB0ciAtIGVudnB0ciksCisJCQkodW5zaWduZWQgaW50KSAoZGF0YXB0ciAtIGVudnB0cikgKyBkYXRhc2l6ZSwKKwkJCWNyYyk7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiMHglMDhYXG4iLCBjcmMpOworCX0KICNlbHNlCi0JcHJpbnRmKCIwXG4iKTsKKwlwcmludGYgKCIwXG4iKTsKICNlbmRpZgotICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKIH0K