ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCBhNzRiNzlkLi5hYTU4OTNkIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsMTIgQEAKIENoYW5nZXMgc2luY2UgVS1Cb290IDEuMS4xOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisqIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDA5IEp1biAyMDA0OgorICBBZGQgc3VwcG9ydCBmb3IgQW5hbG9ndWUmTWljcm8gQWRkZXI4N3ggYW5kIHRoZSBvbGRlciBBZGRlcklJIGJvYXJkLgorCisqIFBhdGNoIGJ5IE1pbmctTGVuIFd1LCAwOSBKdW4gMjAwNDoKKyAgQWRkIHN1cHBwb3J0IGZvciBNQzkzMjggKERhcmdvbmJhbGwpIENQVSBhbmQgTW90b3JvbGEgTVgxQURTIGJvYXJkCisKICogUGF0Y2ggYnkgU2FtIFNvbmcsIDA5IEp1biAyMDA0OgogICAtIEFkZCBzdXBwb3J0IGZvciBSUFhsaXRlX0RXIGJvYXJkCiAgIC0gVXBkYXRlIEZMQVNIIGRyaXZlciBmb3IgNCpBTTI5REwzMjNEQjkwVkkKZGlmZiAtLWdpdCBhL0NSRURJVFMgYi9DUkVESVRTCmluZGV4IGIwNzdhMjkuLjhmMDA1N2MgMTAwNjQ0Ci0tLSBhL0NSRURJVFMKKysrIGIvQ1JFRElUUwpAQCAtMzksNiArMzksNyBAQAogRDogVW5pZmllZCBzdXBwb3J0IGZvciBNb3Rvcm9sYSBNUEM4MjZ4QURTL01QQzgyNzJBRFMvUFEyRkFEUyBib2FyZHMuCiBEOiBTdXBwb3J0IGZvciBaZXBoeXIgRW5naW5lZXJpbmcgWlBDLjE5MDAgYm9hcmQuCiBEOiBTdXBwb3J0IGZvciBJbnRlcnBoYXNlIGlTUEFOIGJvYXJkcy4KK0Q6IFN1cHBvcnQgZm9yIEFuYWxvZ3VlJk1pY3JvIEFkZGVyIGJvYXJkcy4KIFc6IGh0dHA6Ly93d3cuYXJhYmVsbGFzdy5jb20KIAogTjogSmVycnkgdmFuIEJhcmVuCkBAIC0zMDcsNiArMzA4LDEwIEBACiBFOiBlcndpbkBtdWZmaW4ub3JnCiBEOiBib290IHN1cHBvcnQgZm9yIFJURU1TCiAKK046IFBhdWwgUnVobGFuZAorRTogcHJ1aGxhbmRAcm9jaGVzdGVyLnJyLmNvbQorRDogUG9ydCB0byBMb2dpYyBab29tIExIN0E0MHggU0RLIGJvYXJkKHMpCisKIE46IE5laWwgUnVzc2VsbAogRTogY2FyZXRAYy1zaWRlLmNvbQogRDogQXV0aG9yIG9mIExpTW9uLTEuNC4yLCB3aGljaCBjb250cmlidXRlZCBzb21lIGlkZWFzCkBAIC0zNDcsMTMgKzM1MiwyMiBAQAogRTogZGF2ZUBjcmF5LmNvbQogRDogUG9ydCB0byBDcmF5IEwxIGJvYXJkOyBESENQIHZlbmRvciBleHRlbnNpb25zCiAKK046IENocmlzdGlhbiBWZWpsYm8KK0U6IGNocmlzdGlhbi52ZWpsYm9AdGVsbGFicy5jb20KK0Q6IEZBRFM4NjBUIGV0aGVybmV0IHN1cHBvcnQKKwogTjogTWFydGluIFdpbmlzdG9lcmZlcgogRTogbWFydGlud2luaXN0b2VyZmVyQGdteC5jaAogRDogUG9ydCB0byBNUEM1NTUvNTU2IG1pY3JvY29udHJvbGxlcnMgYW5kIHN1cHBvcnQgZm9yIGNtaSBib2FyZAogCi1OOiBDaHJpc3RpYW4gVmVqbGJvCi1FOiBjaHJpc3RpYW4udmVqbGJvQHRlbGxhYnMuY29tCi1EOiBGQURTODYwVCBldGhlcm5ldCBzdXBwb3J0CitOOiBNaW5nLUxlbiBXdQorRTogbWluZ2xlbl93dUB0ZWNod2FyZS5jb20udHcKK0Q6IE1vdG9yb2xhIE1YMUFEUyBib2FyZCBzdXBwb3J0IAorVzogaHR0cDovL3d3dy50ZWNod2FyZS5jb20udHcvCisKK046IFhpYW5naHVhIFhpYW8KK0U6IHgueGlhb0Btb3Rvcm9sYS5jb20KK0Q6IFN1cHBvcnQgZm9yIE1vdG9yb2xhIDg1eHgoUG93ZXJRVUlDQyBJSUkpIGNoaXAsIE1QQzg1NDBBRFMgYW5kIE1QQzg1NjBBRFMgYm9hcmRzLgogCiBOOiBKb2huIFpoYW4KIEU6IHpoYW56QHNpbm92ZWUuY29tCkBAIC0zNjMsMTEgKzM3NywzIEBACiBFOiBhenVAc3lzZ28uZGUKIEQ6IE92ZXJhbGwgaW1wcm92ZW1lbnRzIG9uIFN0cm9uZ0FSTSwgQVJNNzIwVERNSTsgU3VwcG9ydCBmb3IgVHV4c2NyZWVuOyBpbml0aWFsIFBDTUNJQSBzdXBwb3J0IGZvciBBUk0KIFc6IHd3dy5lbGlub3MuY29tCi0KLU46IFhpYW5naHVhIFhpYW8KLUU6IHgueGlhb0Btb3Rvcm9sYS5jb20KLUQ6IFN1cHBvcnQgZm9yIE1vdG9yb2xhIDg1eHgoUG93ZXJRVUlDQyBJSUkpIGNoaXAsIE1QQzg1NDBBRFMgYW5kIE1QQzg1NjBBRFMgYm9hcmRzLgotCi1OOiBQYXVsIFJ1aGxhbmQKLUU6IHBydWhsYW5kQHJvY2hlc3Rlci5yci5jb20KLUQ6IFBvcnQgdG8gTG9naWMgWm9vbSBMSDdBNDB4IFNESyBib2FyZChzKQpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA1OGQ5OWI4Li40YzhiYjJhIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMjcsNiArMjcsNyBAQAogCiBZdWxpIEJhcmNvaGVuIDx5dWxpQGFyYWJlbGxhc3cuY29tPgogCisJQWRkZXIJCQlNUEM4N3gvTVBDODUyVAogCUlTUEFOCQkJTVBDODI2MAogCU1QQzgyNjBBRFMJCU1QQzgyNngvTVBDODI3eC9NUEM4MjgwCiAJWlBDMTkwMAkJCU1QQzgyNjUKZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IDRkOWI5MDAuLmQyZmU4MmUgMTAwNjQ0Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtMzMsNiArMzMsNyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBMSVNUXzh4eD0iCVwKKwlBZGRlcgkJR0VOSUVUVgkJTUJYODYwVAkJUkJDODIzCQlcCiAJQWRkZXJJSQkJR1RICQlNSFBDCQlybXUJCVwKIAlBRFM4NjAJCWhlcm1lcwkJTVBDODZ4QURTCVJQWENsYXNzaWMJXAogCUFNWDg2MAkJSUFEMjEwCQlNUEM4ODVBRFMJUlBYbGl0ZQkJXApAQCAtNDksNyArNTAsNiBAQAogCUZQUzg1MEwJCUxBTlRFQwkJUVM4NTAJCVRRTTg1NUwJCVwKIAlHRU44NjBUCQlsd21vbgkJUVM4NjBUCQlUUU04NjBMCQlcCiAJR0VOODYwVF9TQwlNQlgJCVIzNjBNUEkJCXYzNwkJXAotCUdFTklFVFYJCU1CWDg2MFQJCVJCQzgyMwkJCQlcCiAiCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEzOSwxMCArMTM5LDEwIEBACiAKIExJU1RfQVJNOT0iCVwKIAlhdDkxcm05MjAwZGsJaW50ZWdyYXRvcmNwCWludGVncmF0b3JhcAkJCVwKLQlscGQ3YTQwMAlvbWFwMTUxMGlubglvbWFwMTYxMGgyCQkJXAotCW9tYXAxNjEwaW5uCW9tYXA3MzBwMglzbWRrMjQwMAkJCVwKLQlzbWRrMjQxMAl0cmFiCQlWQ01BOQkJCQlcCi0JdmVyc2F0aWxlCQkJCQkJCVwKKwlscGQ3YTQwMAlteDFhZHMJCW9tYXAxNTEwaW5uCQkJXAorCW9tYXAxNjEwaDIJb21hcDE2MTBpbm4Jb21hcDczMHAyCQkJXAorCXNtZGsyNDAwCXNtZGsyNDEwCXRyYWIJCQkJXAorCVZDTUE5CQl2ZXJzYXRpbGUJCQkJCVwKICIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCAzMmJkMDZiLi40NTc4MzJlIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMjYyLDYgKzI2MiwxNCBAQAogIyMgTVBDOHh4IFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAorQWRkZXJfY29uZmlnICAgIFwKK0FkZGVyODd4X2NvbmZpZyBcCitBZGRlcjg1Ml9jb25maWcgXAorCToJCXVuY29uZmlnCisJJChpZiAkKGZpbmRzdHJpbmcgODUyLCRAKSwgXAorCUBlY2hvICIjZGVmaW5lIENPTkZJR19NUEM4NTJUIiA+IGluY2x1ZGUvY29uZmlnLmgpCisJQC4vbWtjb25maWcgLWEgQWRkZXIgcHBjIG1wYzh4eCBhZGRlcgorCiBBZGRlcklJX2NvbmZpZzoJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIHBwYyBtcGM4eHggYWRkZXJJSQogCkBAIC0xMDQ4LDE3ICsxMDU2LDE0IEBACiAKIHh0cmFjdF9vbWFwNzMwcDIgPSAkKHN1YnN0IF9jczBib290LCwkKHN1YnN0IF9jczNib290LCwgJChzdWJzdCBfY29uZmlnLCwkMSkpKQogCi1TWDFfY29uZmlnIDoJCXVuY29uZmlnCi0JQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtOTI1dCBzeDEKLQogaW50ZWdyYXRvcmNwX2NvbmZpZyA6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtOTI2ZWpzIGludGVncmF0b3JjcAogCiBpbnRlZ3JhdG9yYXBfY29uZmlnIDoJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBhcm05MjZlanMgaW50ZWdyYXRvcmFwCiAKLXZlcnNhdGlsZV9jb25maWcgOgl1bmNvbmZpZwotCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGFybTkyNmVqcyB2ZXJzYXRpbGUKK2xwZDdhNDAwX2NvbmZpZzoJdW5jb25maWcKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBsaDdhNDB4IGxwZDdhNDB4CiAKIG9tYXAxNTEwaW5uX2NvbmZpZyA6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtOTI1dCBvbWFwMTUxMGlubgpAQCAtMTEwNCw2ICsxMTA5LDEyIEBACiBzbWRrMjQxMF9jb25maWcJOgl1bmNvbmZpZwogCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGFybTkyMHQgc21kazI0MTAKIAorU1gxX2NvbmZpZyA6CQl1bmNvbmZpZworCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGFybTkyNXQgc3gxCisKK214MWFkc19jb25maWcJOgl1bmNvbmZpZworCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIG1jOTMyOCBteDFhZHMKKwogIyBUUkFCIGRlZmF1bHQgY29uZmlndXJhdGlvbjoJOCBNQiBGbGFzaCwgMzIgTUIgUkFNCiB0cmFiX2NvbmZpZyBcCiB0cmFiX2JpZ3JhbV9jb25maWcgXApAQCAtMTEzMiw4ICsxMTQzLDggQEAKIFZDTUE5X2NvbmZpZwk6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtOTIwdCB2Y21hOSBtcGwKIAotbHBkN2E0MDBfY29uZmlnOgl1bmNvbmZpZwotCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGxoN2E0MHggbHBkN2E0MHgKK3ZlcnNhdGlsZV9jb25maWcgOgl1bmNvbmZpZworCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGFybTkyNmVqcyB2ZXJzYXRpbGUKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgUzNDNDRCMCBTeXN0ZW1zCkBAIC0xMTQzLDE1ICsxMTU0LDIyIEBACiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gczNjNDRiMCBCMiBkYXZlCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIE1DOTMyOCAoRHJhZ29uYmFsbCkgU3lzdGVtcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitteDFhZHNfY29uZmlnCToJdW5jb25maWcKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBtYzkzMjggbXgxYWRzCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIEFSTTcyMFQgU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pbXBhN19jb25maWcJOgl1bmNvbmZpZwotCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYXJtIGFybTcyMHQgaW1wYTcKLQogZXA3MzEyX2NvbmZpZwk6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtNzIwdCBlcDczMTIKIAoraW1wYTdfY29uZmlnCToJdW5jb25maWcKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBhcm03MjB0IGltcGE3CisKIG1vZG5ldDUwX2NvbmZpZyA6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtNzIwdCBtb2RuZXQ1MAogCmRpZmYgLS1naXQgYS9ib2FyZC9hZGRlci9NYWtlZmlsZSBiL2JvYXJkL2FkZGVyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjNhODAKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hZGRlci9NYWtlZmlsZQpAQCAtMCwwICsxLDQ2IEBACisjCisjIENvcHlyaWdodCAoQykgMjAwNCBBcmFiZWxsYSBTb2Z0d2FyZSBMdGQuCisjIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKEJPQVJEKS5hCisKK09CSlMJOj0gJChCT0FSRCkubworCiskKExJQik6CSQoT0JKUykgJChTT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENQUEZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworLWluY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9hZGRlci9hZGRlci5jIGIvYm9hcmQvYWRkZXIvYWRkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWI2ZTJmCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRkZXIvYWRkZXIuYwpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcmFiZWxsYSBTb2Z0d2FyZSBMdGQuCisgKiBZdWxpIEJhcmNvaGVuIDx5dWxpQGFyYWJlbGxhc3cuY29tPgorICoKKyAqIFN1cHBvcnQgZm9yIEFuYWxvZ3VlJk1pY3JvIEFkZGVyIGJvYXJkcyBmYW1pbHkuCisgKiBUZXN0ZWQgb24gQWRkZXJJSSBhbmQgQWRkZXI4N3guCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPG1wYzh4eC5oPgorCisvKgorICogU0RSQU0gaXMgc2luZ2xlIFNhbXN1bmcgSzRTNjQzMjMyRi1UNzAgY2hpcC4KKyAqIE1pbmltYWwgQ1BVIGZyZXF1ZW5jeSBpcyA0ME1Iei4KKyAqLworc3RhdGljIHVpbnQgc2RyYW1fdGFibGVbXSA9IHsKKwkvKiBTaW5nbGUgcmVhZAkob2Zmc2V0IDB4MDAgaW4gVVBNIFJBTSkgKi8KKwkweDFmMDdmYzI0LCAweGUwYWVmYzA0LCAweDEwYWRmYzA0LCAweGUwYmJiYzAwLAorCTB4MTBmNzdjNDQsIDB4ZjNmZmZjMDcsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsCisKKwkvKiBCdXJzdCByZWFkCShvZmZzZXQgMHgwOCBpbiBVUE0gUkFNKSAqLworCTB4MWYwN2ZjMjQsIDB4ZTBhZWZjMDQsIDB4MTBhZGZjMDQsIDB4ZjBhZmZjMDAsCisJMHhmMGFmZmMwMCwgMHhmMGFmZmMwMCwgMHhmMGFmZmMwMCwgMHgxMGE3N2M0NCwKKwkweGY3YmZmYzQ3LCAweGZmZmZmYzM1LCAweGZmZmZmYzM0LCAweGZmZmZmYzM1LAorCTB4ZmZmZmZjMzUsIDB4MWZmNzdjMzUsIDB4ZmZmZmZjMzQsIDB4MWZiNTdjMzUsCisKKwkvKiBTaW5nbGUgd3JpdGUgKG9mZnNldCAweDE4IGluIFVQTSBSQU0pICovCisJMHgxZjI3ZmMyNCwgMHhlMGFlYmMwNCwgMHgwMGI5M2MwMCwgMHgxM2Y3N2M0NywKKwkweGZmZmRmYzA0LCAweGZmZmZmYzA0LCAweGZmZmZmYzA0LCAweGZmZmZmYzA0LAorCisJLyogQnVyc3Qgd3JpdGUJKG9mZnNldCAweDIwIGluIFVQTSBSQU0pICovCisJMHgxZjA3ZmMyNCwgMHhlZWFlYmMwMCwgMHgxMGFkN2MwMCwgMHhmMGFmZmMwMCwKKwkweGYwYWZmYzAwLCAweGUwYWJiYzAwLCAweDFmYjc3YzQ3LCAweGZmZmZmYzA0LAorCTB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsCisJMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwKKworCS8qIFJlZnJlc2gJKG9mZnNldCAweDMwIGluIFVQTSBSQU0pICovCisJMHgxZmY1ZmNhNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwKKwkweGZmZmZmYzg0LCAweGZmZmZmYzA3LCAweGZmZmZmYzA0LCAweGZmZmZmYzA0LAorCTB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsCisKKwkvKiBFeGNlcHRpb24JKG9mZnNldCAweDNDIGluIFVQTSBSQU0pICovCisJMHhmZmZmZmMyNywgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNAorfTsKKworbG9uZyBpbnQgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQoreworCWxvbmcgaW50IG1zaXplID0gQ0ZHX1NEUkFNX1NJWkU7CisJdm9sYXRpbGUgaW1tYXBfdCAgICAgKmltbWFwICA9ICh2b2xhdGlsZSBpbW1hcF90ICopQ0ZHX0lNTVI7CisJdm9sYXRpbGUgbWVtY3RsOHh4X3QgKm1lbWN0bCA9ICZpbW1hcC0+aW1fbWVtY3RsOworCisJdXBtY29uZmlnKFVQTUEsIHNkcmFtX3RhYmxlLCBzaXplb2Yoc2RyYW1fdGFibGUpIC8gc2l6ZW9mKHVpbnQpKTsKKworCS8qIENvbmZpZ3VyZSBTRFJBTSByZWZyZXNoICovCisJbWVtY3RsLT5tZW1jX21wdHByID0gTVBUUFJfUFRQX0RJVjMyOyAvKiBCUkdDTEsvMzIgKi8KKworCW1lbWN0bC0+bWVtY19tYW1yID0gKDk0IDw8IDI0KSB8IENGR19NQU1SOworCW1lbWN0bC0+bWVtY19tYXIgID0gMHgwOworCXVkZWxheSgyMDApOworCisJLyogUnVuIHByZWNoYXJnZSBmcm9tIGxvY2F0aW9uIDB4MTUgKi8KKwltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwMjExNTsKKwl1ZGVsYXkoMjAwKTsKKworCS8qIFJ1biA4IHJlZnJlc2ggY3ljbGVzICovCisJbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDI4MzA7CisJdWRlbGF5KDIwMCk7CisKKwltZW1jdGwtPm1lbWNfbWFyID0gMHg4ODsKKwl1ZGVsYXkoMjAwKTsKKworCS8qIFJ1biBNUlMgcGF0dGVybiBmcm9tIGxvY2F0aW9uIDB4MTYgKi8KKwltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwMjExNjsKKwl1ZGVsYXkoMjAwKTsKKworCXJldHVybiBtc2l6ZTsKK30KKworaW50IGNoZWNrYm9hcmQoIHZvaWQgKQoreworCXB1dHMoIkJvYXJkOiBBZGRlciIpOworI2lmIGRlZmluZWQoQ09ORklHX01QQzg4NV9GQU1JTFkpCisJcHV0cygiODd4XG4iKTsKKyNlbGlmIGRlZmluZWQoQ09ORklHX01QQzg2Nl9GQU1JTFkpCisJcHV0cygiSUlcbiIpOworI2VuZGlmCisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL2FkZGVyL2NvbmZpZy5tayBiL2JvYXJkL2FkZGVyL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjkxYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRkZXIvY29uZmlnLm1rCkBAIC0wLDAgKzEsMjcgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA0IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KKyMgWXVsaSBCYXJjb2hlbiA8eXVsaUBhcmFiZWxsYXN3LmNvbT4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworIworIyBBbmFsb2d1ZSZNaWNybyBBZGRlciBib2FyZHMgZmFtaWx5CisjCitURVhUX0JBU0UgPSAweEZFMDAwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9hZGRlci91LWJvb3QubGRzIGIvYm9hcmQvYWRkZXIvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDJhN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRkZXIvdS1ib290LmxkcwpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMS0yMDAzCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIE1vZGlmaWVkIGJ5IFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0FSQ0gocG93ZXJwYykKK1NFQ1RJT05TCit7CisgIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLworICAuID0gKyBTSVpFT0ZfSEVBREVSUzsKKyAgLmludGVycCAgICAgICAgOiB7ICooLmludGVycCkJCX0KKyAgLmhhc2ggICAgICAgICAgOiB7ICooLmhhc2gpCQl9CisgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CisgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CisgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KKyAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CisgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KKyAgLnJlbGEuY3RvcnMgICAgOiB7ICooLnJlbGEuY3RvcnMpCX0KKyAgLnJlbC5kdG9ycyAgICAgOiB7ICooLnJlbC5kdG9ycykJfQorICAucmVsYS5kdG9ycyAgICA6IHsgKigucmVsYS5kdG9ycykJfQorICAucmVsLmJzcyAgICAgICA6IHsgKigucmVsLmJzcykJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCX0KKyAgLnJlbC5wbHQgICAgICAgOiB7ICooLnJlbC5wbHQpCX0KKyAgLnJlbGEucGx0ICAgICAgOiB7ICooLnJlbGEucGx0KQl9CisgIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQkJfQorICAucGx0ICAgICAgICAgICA6IHsgKigucGx0KQkJfQorICAudGV4dCAgICAgICAgICA6CisgIHsKKyAgICBjcHUvbXBjOHh4L3N0YXJ0Lm8JKC50ZXh0KQorICAgICooLnRleHQpCisgICAgKiguZml4dXApCisgICAgKiguZ290MSkKKyAgICAuID0gQUxJR04oMTYpOworICAgICooLnJvZGF0YSkKKyAgICAqKC5yb2RhdGExKQorICAgICooLnJvZGF0YS5zdHIxLjQpCisgIH0KKyAgLmZpbmkgICAgICA6IHsgKiguZmluaSkgICAgfSA9MAorICAuY3RvcnMgICAgIDogeyAqKC5jdG9ycykgICB9CisgIC5kdG9ycyAgICAgOiB7ICooLmR0b3JzKSAgIH0KKworICAvKiBSZWFkLXdyaXRlIHNlY3Rpb24sIG1lcmdlZCBpbnRvIGRhdGEgc2VnbWVudDogKi8KKyAgLiA9ICguICsgMHgwRkZGKSAmIDB4RkZGRkYwMDA7CisgIF9lcm90ZXh0ID0gLjsKKyAgUFJPVklERSAoZXJvdGV4dCA9IC4pOworICAucmVsb2MgICA6CisgIHsKKyAgICAqKC5nb3QpCisgICAgX0dPVDJfVEFCTEVfID0gLjsKKyAgICAqKC5nb3QyKQorICAgIF9GSVhVUF9UQUJMRV8gPSAuOworICAgICooLmZpeHVwKQorICB9CisgIF9fZ290Ml9lbnRyaWVzID0gKF9GSVhVUF9UQUJMRV8gLSBfR09UMl9UQUJMRV8pID4+IDI7CisgIF9fZml4dXBfZW50cmllcyA9ICguIC0gX0ZJWFVQX1RBQkxFXykgPj4gMjsKKworICAuZGF0YSAgICA6CisgIHsKKyAgICAqKC5kYXRhKQorICAgICooLmRhdGExKQorICAgICooLnNkYXRhKQorICAgICooLnNkYXRhMikKKyAgICAqKC5keW5hbWljKQorICAgIENPTlNUUlVDVE9SUworICB9CisgIF9lZGF0YSAgPSAgLjsKKyAgUFJPVklERSAoZWRhdGEgPSAuKTsKKworICBfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOworICAudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQorICBfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCisgIF9fc3RhcnRfX19leF90YWJsZSA9IC47CisgIF9fZXhfdGFibGUgOiB7ICooX19leF90YWJsZSkgfQorICBfX3N0b3BfX19leF90YWJsZSA9IC47CisKKyAgLiA9IEFMSUdOKDQwOTYpOworICBfX2luaXRfYmVnaW4gPSAuOworICAudGV4dC5pbml0IDogeyAqKC50ZXh0LmluaXQpIH0KKyAgLmRhdGEuaW5pdCA6IHsgKiguZGF0YS5pbml0KSB9CisgIC4gPSBBTElHTig0MDk2KTsKKyAgX19pbml0X2VuZCA9IC47CisKKyAgX19ic3Nfc3RhcnQgPSAuOworICAuYnNzICAgICAgIDoKKyAgeworICAgKiguc2JzcykgKiguc2NvbW1vbikKKyAgICooLmR5bmJzcykKKyAgICooLmJzcykKKyAgICooQ09NTU9OKQorICB9CisgIF9lbmQgPSAuIDsKKyAgUFJPVklERSAoZW5kID0gLik7Cit9CitFTlRSWShfc3RhcnQpCmRpZmYgLS1naXQgYS9ib2FyZC9teDFhZHMvTWFrZWZpbGUgYi9ib2FyZC9teDFhZHMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExNzcwMgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL214MWFkcy9NYWtlZmlsZQpAQCAtMCwwICsxLDUwIEBACisjLyoKKyMqIGJvYXJkL214MWFkcy9NYWtlZmlsZQorIyogCisjKiAoYykgQ29weXJpZ2h0IDIwMDQKKyMqIFRlY2h3YXJlIEluZm9ybWF0aW9uIFRlY2hub2xvZ3ksIEluYy4KKyMqIGh0dHA6Ly93d3cudGVjaHdhcmUuY29tLnR3LworIyoKKyMqIE1pbmctTGVuIFd1IDxtaW5nbGVuX3d1QHRlY2h3YXJlLmNvbS50dz4KKyMqCisjKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyoKKyMqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjKgorIyogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyogTUEgMDIxMTEtMTMwNyBVU0EKKyMqLworCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKEJPQVJEKS5hCisKK09CSlMJOj0gbXgxYWRzLm8gc3luY2ZsYXNoLm8KK1NPQkpTCTo9IG1lbXNldHVwLm8KKworJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykgJChTT0JKUykKKworY2xlYW46CisJcm0gLWYgJChTT0JKUykgJChPQkpTKQorCitkaXN0Y2xlYW46CWNsZWFuCisJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy5kZXBlbmQ6CU1ha2VmaWxlICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykKKwkJJChDQykgLU0gJChDUFBGTEFHUykgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKSA+ICRACisKKy1pbmNsdWRlIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXgxYWRzL2NvbmZpZy5tayBiL2JvYXJkL214MWFkcy9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhMGI4NAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL214MWFkcy9jb25maWcubWsKQEAgLTAsMCArMSwyOCBAQAorIy8qCisjKiBib2FyZC9teDFhZHMvY29uZmlnLm1rCisjKiAKKyMqIChjKSBDb3B5cmlnaHQgMjAwNAorIyogVGVjaHdhcmUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSwgSW5jLgorIyogaHR0cDovL3d3dy50ZWNod2FyZS5jb20udHcvCisjKgorIyogTWluZy1MZW4gV3UgPG1pbmdsZW5fd3VAdGVjaHdhcmUuY29tLnR3PgorIyoKKyMqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjKgorIyogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMqCisjKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjKiBNQSAwMjExMS0xMzA3IFVTQQorIyovCisKKworVEVYVF9CQVNFID0gMHgwODQwMDAwMAorCmRpZmYgLS1naXQgYS9ib2FyZC9teDFhZHMvbWVtc2V0dXAuUyBiL2JvYXJkL214MWFkcy9tZW1zZXR1cC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YjcxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9teDFhZHMvbWVtc2V0dXAuUwpAQCAtMCwwICsxLDgyIEBACisvKgorICogYm9hcmQvbXgxYWRzL21lbXNldHVwLlMKKyAqIAorICogKGMpIENvcHlyaWdodCAyMDA0CisgKiBUZWNod2FyZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCisgKiBodHRwOi8vd3d3LnRlY2h3YXJlLmNvbS50dy8KKyAqCisgKiBNaW5nLUxlbiBXdSA8bWluZ2xlbl93dUB0ZWNod2FyZS5jb20udHc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworI2RlZmluZSBTRENUTDAJCQkweDIyMTAwMAorI2RlZmluZSBTRENUTDEJCQkweDIyMTAwNAorCisKK19URVhUX0JBU0U6CisJLndvcmQJVEVYVF9CQVNFCisKKy5nbG9ibCBtZW1zZXR1cAorbWVtc2V0dXA6CisvKiBtZW1vcnkgY29udHJvbGxlciBpbml0CSAJKi8KKworCWxkciAgcjEsID1TRENUTDAKKworLyogIFNldCBQcmVjaGFyZ2UgQ29tbWFuZAkJKi8KKworCWxkciAgcjMsID0weDkyMTIwMjAwCisvKglsZHIgIHIzLCA9MHg5MjEyMDI1MQorKi8KKwlzdHIgIHIzLCBbcjFdCisKKy8qIElzc3VlIFByZWNoYXJnZSBBbGwgQ29tbWFkCQkqLworCWxkciAgcjMsID0weDgyMDAwMDAKKwlsZHIgIHIyLCBbcjNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKiBTZXQgQXV0b1JlZnJlc2ggQ29tbWFuZCAJCSovCisJbGRyICByMywgPTB4QTIxMjAyMDAKKwlzdHIgIHIzLCBbcjFdCisKKy8qIElzc3VlIEF1dG9SZWZyZXNoIENvbW1hbmQJCSovCisJbGRyICByMywgPTB4ODAwMDAwMAorCWxkciAgcjIsIFtyM10KKwlsZHIgIHIyLCBbcjNdCisJbGRyICByMiwgW3IzXQorCWxkciAgcjIsIFtyM10KKwlsZHIgIHIyLCBbcjNdCisJbGRyICByMiwgW3IzXQorCWxkciAgcjIsIFtyM10KKwlsZHIgIHIyLCBbcjNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKiBTZXQgTW9kZSBSZWdpc3RlciAJCQkqLworCWxkciAgcjMsID0weEIyMTIwMjAwCisJc3RyICByMywgW3IxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyogSXNzdWUgTW9kZSBSZWdpc3RlciBDb21tYW5kCQkqLworCWxkciAgcjMsID0weDA4MTExODAwIAkvKiBNb2RlIFJlZ2lzdGVyIFZhbHVlIAkJKi8KKwlsZHIgIHIyLCBbcjNdCisKKy8qIFNldCBOb3JtYWwgTW9kZQkJCSovCisJbGRyICByMywgPTB4ODIxMjQyMDAKKwlzdHIgIHIzLCBbcjFdCisKKy8qIGV2ZXJ5dGhpbmcgaXMgZmluZSBub3cgCQkqLworCW1vdglwYywgbHIKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXgxYWRzL214MWFkcy5jIGIvYm9hcmQvbXgxYWRzL214MWFkcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2N2Y4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9teDFhZHMvbXgxYWRzLmMKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBib2FyZC9teDFhZHMvbXgxYWRzLmMKKyAqIAorICogKGMpIENvcHlyaWdodCAyMDA0CisgKiBUZWNod2FyZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCisgKiBodHRwOi8vd3d3LnRlY2h3YXJlLmNvbS50dy8KKyAqCisgKiBNaW5nLUxlbiBXdSA8bWluZ2xlbl93dUB0ZWNod2FyZS5jb20udHc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bWM5MzI4Lmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBGQ0xLX1NQRUVEIDEKKworI2lmIEZDTEtfU1BFRUQ9PTAJCS8qIEZvdXQgPSAyMDNNSHosIEZpbiA9IDEyTUh6IGZvciBBdWRpbyAqLworI2RlZmluZSBNX01ESVYJMHhDMworI2RlZmluZSBNX1BESVYJMHg0CisjZGVmaW5lIE1fU0RJVgkweDEKKyNlbGlmIEZDTEtfU1BFRUQ9PTEJCS8qIEZvdXQgPSAyMDIuOE1IeiAqLworI2RlZmluZSBNX01ESVYJMHhBMQorI2RlZmluZSBNX1BESVYJMHgzCisjZGVmaW5lIE1fU0RJVgkweDEKKyNlbmRpZgorCisjZGVmaW5lIFVTQl9DTE9DSyAxCisKKyNpZiBVU0JfQ0xPQ0s9PTAKKyNkZWZpbmUgVV9NX01ESVYJMHhBMQorI2RlZmluZSBVX01fUERJVgkweDMKKyNkZWZpbmUgVV9NX1NESVYJMHgxCisjZWxpZiBVU0JfQ0xPQ0s9PTEKKyNkZWZpbmUgVV9NX01ESVYJMHg0OAorI2RlZmluZSBVX01fUERJVgkweDMKKyNkZWZpbmUgVV9NX1NESVYJMHgyCisjZW5kaWYKKworI2lmIDAKKworc3RhdGljIGlubGluZSB2b2lkIGRlbGF5ICh1bnNpZ25lZCBsb25nIGxvb3BzKSB7CisJX19hc21fXyB2b2xhdGlsZSAoIjE6XG4iCisJICAic3VicyAlMCwgJTEsICMxXG4iCisJICAiYm5lIDFiIjoiPXIiIChsb29wcyk6IjAiIChsb29wcykpOworfQorCisjZW5kaWYgCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIHBsYXRmb3JtIGRlcGVuZGVudCBpbml0aWFsaXNhdGlvbnMKKyAqLworCisKK3ZvaWQgU2V0QXN5bmNoTW9kZSh2b2lkKSB7CisJX19hc21fXyAoCisJCSJtcmMgcDE1LDAscjAsYzEsYzAsMCBcbiIKKwkJIm1vdiByMiwgIzB4QzAwMDAwMDAgXG4iCisJCSJvcnIgcjAscjIscjAgXG4iCisJCSJtY3IgcDE1LDAscjAsYzEsYzAsMCBcbiIKKwkpOworfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzdGF0aWMgdTMyIG1jOTMyOHNpZDsKKworaW50IGJvYXJkX2luaXQgKHZvaWQpIHsKKworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJdm9sYXRpbGUgdW5zaWduZWQgaW50ICB0bXA7CisKKwltYzkzMjhzaWQJPSBNWDFfU0lEUjsKKworCU1YMV9HUENSIAk9IDB4MDAwMDAzQUI7CQkvKiBJL08gcGFkIGRyaXZpbmcgc3RyZW5ndGggCSovCisJCisvKglNWDFfQ1MxVSAJPSAweDAwMDAwQTAwOwkqLwkvKiBTUkFNIGluaXRpYWxpemF0aW9uIAkJKi8KKy8qCU1YMV9DUzFMIAk9IDB4MTExMTA2MDE7IAkqLworICAgICAgICAgICAgICAgICAgICAgICAgCisKKwlNWDFfTVBDVEwwIAk9IDB4MDQ2MzI0MTA7CS8qIHNldHRpbmcgZm9yIDE1MCBNSHogTUNVIFBMTCBDTEsJKi8KKworLyoJTVgxX01QQ1RMMCAJPSAweDAwM2YxNDM3OwkqLy8qIHNldHRpbmcgZm9yIDE5MiBNSHogTUNVIFBMTCBDTEsJKi8KKworCisKKy8qIHNldCBGQ0xLIGRpdmlkZXIgMSAoaS5lLiBGQ0xLIHRvIE1DVSBQTEwgQ0xLKSBhbmQKKyAqIEJDTEsgZGl2aWRlciB0byAyIChpLmUuIEJDTEsgdG8gNDggTUh6KQorICovCisJTVgxX0NTQ1IgCT0gMHhBRjAwMDQwMzsKKworCU1YMV9DU0NSIAl8PSAweDAwMjAwMDAwOyAgIAkvKiBUcmlnZ2VyIHRoZSByZXN0YXJ0IGJpdChiaXQgMjEpCSovCisJTVgxX0NTQ1IgCSY9IDB4RkZGRjdGRkY7CQkvKiBQcm9ncmFtIFBSRVNDIGJpdChiaXQgMTUpIHRvIDAgdG8gZGl2aWRlLWJ5LTEgKi8KKworLyogc2V0dXAgY3M0IGZvciBjczg5MDAgZXRoZXJuZXQgKi8KKwkKKwlNWDFfQ1M0VQk9IDB4MDAwMDBGMDA7CS8qIEluaXRpYWxpemUgQ1M0IGZvciBDUzg5MDAgZXRoZXJuZXQgCSovCisJTVgxX0NTNEwJPSAweDAwMDAxNTAxOworICAgIAorCU1YMV9HSVVTX0EJJj0gMHhGRjNGRkZGRjsKKwlNWDFfR1BSX0EJJj0gMHhGRjNGRkZGRjsKKyAgICAgICAgCisJdG1wID0gKih1bnNpZ25lZCBpbnQgKikoMHgxNTAwMDAwQyk7CisJdG1wID0gKih1bnNpZ25lZCBpbnQgKikoMHgxNTAwMDAwQyk7CisKKy8qIHNldHVwIHRpbWVyIDEgYXMgc3lzdGVtIHRpbWVyICAJKi8KKworCU1YMV9UUFJFUjEJPSAweDFmOwkJLyogZGl2aWRlIGJ5IDMyIAkJKi8KKwlNWDFfVENUTDEJPSAweDE5OwkJLyogY2xvY2sgaW4gZnJvbSAzMmsgT3NjLgkqLworCisKKwlTZXRBc3luY2hNb2RlKCk7CisKKwlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gMTYwOwkvKiBBcmNoIG51bWJlciBvZiBNWDFBRFMgQm9hcmQgCQkqLworCisJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4MDgwMDAxMDA7CS8qIGFkcmVzcyBvZiBib290IHBhcmFtZXRlcnMJKi8KKworCWljYWNoZV9lbmFibGUoKTsKKwlkY2FjaGVfZW5hYmxlKCk7CisKKy8qIHNldCBQRVJDTEtzCQkJCSovCisJTVgxX1BDRFIgPSAweDAwMDAwMDU1OyAgICAgCS8qIHNldCBQRVJDTEtTCQkJCSovCisJCisvKiBQRVJDTEszIGlzIG9ubHkgdXNlZCBieSBTU0kgc28gdGhlIFNTSSBkcml2ZXIgY2FuIHNldCBpdCBhbnkgdmFsdWUgaXQgbGlrZXMgCisgKiBQRVJDTEsxIGFuZCBQRVJDTEsyIGFyZSBzaGFyZWQgc28gRE8gTk9UIGNoYW5nZSBpdCBpbiBhbnkgb3RoZXIgcGxhY2UgICAgICAgCisgKiBhbGwgc291cmNlcyBzZWxlY3RlZCBhcyBub3JtYWwgaW50ZXJydXB0CisgKi8KKwlNWDFfSU5UVFlQRUggPSAwOworCU1YMV9JTlRUWVBFTCA9IDA7CisKKwlyZXR1cm4gMDsKK30KKworCitpbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpIHsKKworCXNldGVudigic3Rkb3V0IiwgInNlcmlhbCIpOworCXNldGVudigic3RkZXJyIiwgInNlcmlhbCIpOworCisJc3dpdGNoCShtYzkzMjhzaWQpIHsKKwkJY2FzZSAweDAwMDU5MDFkIDoKKwkJCXByaW50ZiAoIk1YMUFEUyBib2FyZCB3aXRoIE1DOTMyOCBNWDEgKDBMNDROKSwgU2lsaWNvbiBJRCAweCUwOHggXG5cbiIsbWM5MzI4c2lkKTsgCisJCQlicmVhazsKKwkJY2FzZSAweDA0ZDRjMDFkIDoKKwkJCXByaW50ZiAoIk1YMUFEUyBib2FyZCB3aXRoIE1DOTMyOCBNWEwgKDFMNDVOKSwgU2lsaWNvbiBJRCAweCUwOHggXG5cbiIsbWM5MzI4c2lkKTsgCisJCQlicmVhazsKKwkJY2FzZSAweDAwZDRjMDFkIDoKKwkJCXByaW50ZiAoIk1YMUFEUyBib2FyZCB3aXRoIE1DOTMyOCBNWEwgKDJMNDVOKSwgU2lsaWNvbiBJRCAweCUwOHggXG5cbiIsbWM5MzI4c2lkKTsgCisJCQlicmVhazsKKworCQlkZWZhdWx0IDoKKwkJCXByaW50ZiAoIk1YMUFEUyBib2FyZCB3aXRoIFVOS05PV04gTUM5MzI4IGNwdSwgU2lsaWNvbiBJRCAweCUwOHggXG4iLG1jOTMyOHNpZCk7IAorCQkJYnJlYWs7CisJCQorCX0KKwkKKwlyZXR1cm4gMDsKK30gCisgICAgICAgICAgICAgICAgICAgICAgICAKKworaW50IGRyYW1faW5pdCAodm9pZCkgeworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOworCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplICA9IFBIWVNfU0RSQU1fMV9TSVpFOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9teDFhZHMvc3luY2ZsYXNoLmMgYi9ib2FyZC9teDFhZHMvc3luY2ZsYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZiZTc4NgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL214MWFkcy9zeW5jZmxhc2guYwpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIGJvYXJkL214MWFkcy9zeW5jZmxhc2guYworICogCisgKiAoYykgQ29weXJpZ2h0IDIwMDQKKyAqIFRlY2h3YXJlIEluZm9ybWF0aW9uIFRlY2hub2xvZ3ksIEluYy4KKyAqIGh0dHA6Ly93d3cudGVjaHdhcmUuY29tLnR3LworICoKKyAqIE1pbmctTGVuIFd1IDxtaW5nbGVuX3d1QHRlY2h3YXJlLmNvbS50dz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bWM5MzI4Lmg+CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAqIHBfdTMyOworCisvKiA0TXgxNngyIElBTT0wIENTRDEgKi8KKworZmxhc2hfaW5mb190IGZsYXNoX2luZm9bQ0ZHX01BWF9GTEFTSF9CQU5LU107CS8qIGluZm8gZm9yIEZMQVNIIGNoaXBzICAgICovCisKKy8qICBGb2xsb3dpbmcgU2V0dGluZyBpcyBmb3IgQ1NEMQkqLworI2RlZmluZSBTRkNUTAkJCTB4MDAyMjEwMDQKKyNkZWZpbmUgcmVnX1NGQ1RMCQlfX1JFRyhTRkNUTCkKKworI2RlZmluZSBTWU5DRkxBU0hfQTEwCQkoMHgwMDEwMDAwMCkKKworI2RlZmluZSBDTURfTk9STUFMCQkoMHg4MTAyMDMwMCkJCQkvKiBOb3JtYWwgTW9kZQkJCSovCisjZGVmaW5lIENNRF9QUkVDCQkoQ01EX05PUk1BTCArIDB4MTAwMDAwMDApIAkvKiBQcmVjaGFyZ2UgQ29tbWFuZAkJKi8KKyNkZWZpbmUgQ01EX0FVVE8JCShDTURfTk9STUFMICsgMHgyMDAwMDAwMCkgCS8qIEF1dG8gUmVmcmVzaCBDb21tYW5kCQkqLworI2RlZmluZSBDTURfTE1SCQkJKENNRF9OT1JNQUwgKyAweDMwMDAwMDAwKSAJLyogTG9hZCBNb2RlIFJlZ2lzdGVyIENvbW1hbmQgCSovCisjZGVmaW5lIENNRF9MQ1IJCQkoQ01EX05PUk1BTCArIDB4NjAwMDAwMDApIAkvKiBMQ1IgQ29tbWFuZAkJCSovCisjZGVmaW5lIENNRF9QUk9HUkFNCQkoQ01EX05PUk1BTCArIDB4NzAwMDAwMDApCisKKyNkZWZpbmUgTU9ERV9SRUdfVkFMCQkoQ0ZHX0ZMQVNIX0JBU0UrMHgwMDA4Q0MwMCkgCS8qIENhcyBMYXRlbmN5IDMJCSovCisKKy8qIExDUiBDb21tYW5kICovCisjZGVmaW5lIExDUl9SRUFEU1RBVFVTCQkoMHgwMDAxQzAwMCkJCQkvKiAweDcwCQkJCSovCisjZGVmaW5lIExDUl9FUkFTRV9DT05GSVJNCSgweDAwMDA4MDAwKQkJCS8qIDB4MjAJCQkJKi8KKyNkZWZpbmUgTENSX0VSQVNFX05WTU9ERQkoMHgwMDAwQzAwMCkJCQkvKiAweDMwCQkJCSovCisjZGVmaW5lIExDUl9QUk9HX05WTU9ERQkJKDB4MDAwMjgwMDApCQkJLyogMHhBMAkJCQkqLworI2RlZmluZSBMQ1JfU1JfQ0xFQVIJCSgweDAwMDE0MDAwKQkJCS8qIDB4NTAJCQkJKi8KKworCisvKiBHZXQgU3RhdHVzIHJlZ2lzdGVyIAkJCSovCit1MzIgU0ZfU1Iodm9pZCkgeworCXUzMiB0bXAsdG1wMTsKKworCXJlZ19TRkNUTAk9IENNRF9QUk9HUkFNOworCXRtcCAJCT0gX19SRUcoQ0ZHX0ZMQVNIX0JBU0UpOworCQorCXJlZ19TRkNUTAk9IENNRF9OT1JNQUw7CisKKwlyZWdfU0ZDVEwJPSBDTURfTENSOwkJCS8qIEFjdGl2YXRlIExDUiBNb2RlIAkJKi8KKwl0bXAxIAkJPSBfX1JFRyhDRkdfRkxBU0hfQkFTRSArIExDUl9TUl9DTEVBUik7CisKKwlyZXR1cm4gdG1wOworfQorCisvKiBjaGVjayBpZiBTeW5jRmxhc2ggaXMgcmVhZHkgCQkqLwordTggU0ZfUmVhZHkodm9pZCkgeworCXUzMiB0bXA7CisKKwl0bXAJPSBTRl9TUigpOworCisJaWYgKCh0bXAgJiAweDAwODAwMDAwKSAmJiAodG1wICYgMHgwMDFDMDAwMCkpIHsKKwkJcHJpbnRmICgiU3luY0ZsYXNoIEVycm9yIGNvZGUgJTA4eFxuIix0bXApOworCX07CisKKwlpZiAoKHRtcCAmIDB4MDAwMDAwODApICYmICh0bXAgJiAweDAwMDAwMDFDKSkgeworCQlwcmludGYgKCJTeW5jRmxhc2ggRXJyb3IgY29kZSAlMDh4XG4iLHRtcCk7CisKKwl9OworCisJaWYgKHRtcCA9PSAweDAwODAwMDgwKSAJCS8qIFRlc3QgQml0IDcgb2YgU1IJKi8KKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworLyogSXNzdWUgdGhlIHByZWNoYXJnZSBhbGwgY29tbWFuZCAJCSovCit2b2lkIFNGX1ByZWNoYXJnZUFsbCh2b2lkKSB7CisKKwl1MzIgdG1wOworCisJcmVnX1NGQ1RMCT0gQ01EX1BSRUM7CQkJLyogU2V0IFByZWNoYXJnZSBDb21tYW5kIAkqLworCXRtcCAJCT0gX19SRUcoQ0ZHX0ZMQVNIX0JBU0UgKyBTWU5DRkxBU0hfQTEwKTsgLyogSXNzdWUgUHJlY2hhcmdlIEFsbCBDb21tYW5kICovIAorCit9CisKKy8qIHNldCBTeW5jRmxhc2ggdG8gbm9ybWFsIG1vZGUJCQkqLwordm9pZCBTRl9Ob3JtYWwodm9pZCkgeworCisJU0ZfUHJlY2hhcmdlQWxsKCk7CisJCisJcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsKK30KKworLyogRXJhc2UgU3luY0ZsYXNoIAkJCQkqLwordm9pZCBTRl9FcmFzZSh1MzIgUm93QWRkcmVzcykgeworCXUzMiB0bXA7CisKKwlyZWdfU0ZDVEwJPSBDTURfTk9STUFMOworCXRtcCAJCT0gX19SRUcoUm93QWRkcmVzcyk7CisKKwlyZWdfU0ZDVEwJPSBDTURfUFJFQzsKKwl0bXAgCQk9IF9fUkVHKFJvd0FkZHJlc3MpOworCQorCXJlZ19TRkNUTCAJPSBDTURfTENSOwkJCS8qIFNldCBMQ1IgbW9kZSAJCSovCisJX19SRUcoUm93QWRkcmVzcyArIExDUl9FUkFTRV9DT05GSVJNKQk9IDA7CS8qIElzc3VlIEVyYXNlIFNldHVwIENvbW1hbmQgCSovCisJCQorCXJlZ19TRkNUTAk9IENNRF9OT1JNQUw7CQkJLyogcmV0dXJuIHRvIE5vcm1hbCBtb2RlIAkqLworCV9fUkVHKFJvd0FkZHJlc3MpCT0gMHhEMEQwRDBEMDsgCQkvKiBDb25maXJtCQkJKi8KKworCXdoaWxlKCFTRl9SZWFkeSgpKTsKK30KKworCit2b2lkIFNGX052bW9kZUVyYXNlKHZvaWQpIHsKKwlTRl9QcmVjaGFyZ2VBbGwoKTsKKworCXJlZ19TRkNUTAk9IENNRF9MQ1I7CQkJLyogU2V0IHRvIExDUiBtb2RlCQkqLworCV9fUkVHKENGR19GTEFTSF9CQVNFICsgTENSX0VSQVNFX05WTU9ERSkgID0gMDsJLyogSXNzdWUgRXJhc2UgTnZtb2RlIFJlZyBDb21tYW5kICovCisJCisJcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiBSZXR1cm4gdG8gTm9ybWFsIG1vZGUgCSovCisJX19SRUcoQ0ZHX0ZMQVNIX0JBU0UgKyBMQ1JfRVJBU0VfTlZNT0RFKSA9IDB4QzBDMEMwQzA7CS8qIENvbmZpcm0gCQkqLworCisJd2hpbGUoIVNGX1JlYWR5KCkpOworfQorCit2b2lkIFNGX052bW9kZVdyaXRlKHZvaWQpIHsKKwlTRl9QcmVjaGFyZ2VBbGwoKTsKKworCXJlZ19TRkNUTCAJPSBDTURfTENSOwkJCS8qIFNldCB0byBMQ1IgbW9kZSAJCSovCisJX19SRUcoQ0ZHX0ZMQVNIX0JBU0UrTENSX1BST0dfTlZNT0RFKSA9IDA7CS8qIElzc3VlIFByb2dyYW0gTnZtb2RlIHJlZyBjb21tYW5kICovCisJCisJcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiBSZXR1cm4gdG8gTm9ybWFsIG1vZGUgCSovCisJX19SRUcoQ0ZHX0ZMQVNIX0JBU0UrTENSX1BST0dfTlZNT0RFKSA9IDB4QzBDMEMwQzA7IAkvKiBDb25maXJtIG5vdCBuZWVkZWQgCSovCisKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordWxvbmcgZmxhc2hfaW5pdCh2b2lkKSB7CisJaW50IGksIGo7CisJdTMyIHRtcDsKKworLyogVHVybiBvbiBDU0QxIGZvciBuZWdhdGluZyBSRVNFVFNGIG9mIFN5bmNGTGFzaCAqLworCisJcmVnX1NGQ1RMIAl8PSAweDgwMDAwMDAwOwkJLyogZW5hYmxlIENTRDEgZm9yIFN5bmNGbGFzaCAJCSovCisJdWRlbGF5KDIwMCk7CisKKwlyZWdfU0ZDVEwgCT0gQ01EX0xNUjsJCS8qIFNldCBMb2FkIE1vZGUgUmVnaXN0ZXIgQ29tbWFuZCAJKi8KKwl0bXAgCQk9IF9fUkVHKE1PREVfUkVHX1ZBTCk7CS8qIElzc3VlIExvYWQgTW9kZSBSZWdpc3RlciBDb21tYW5kIAkqLworCisJU0ZfTm9ybWFsKCk7CisgCisJaSA9IDA7CisKKwlmbGFzaF9pbmZvW2ldLmZsYXNoX2lkIAk9ICBGTEFTSF9NQU5fTVQgfCBGTEFTSF9NVDI4UzRNMTZMQzsKKwkJCisJZmxhc2hfaW5mb1tpXS5zaXplIAk9IEZMQVNIX0JBTktfU0laRTsKKwlmbGFzaF9pbmZvW2ldLnNlY3Rvcl9jb3VudCA9IENGR19NQVhfRkxBU0hfU0VDVDsKKworCW1lbXNldChmbGFzaF9pbmZvW2ldLnByb3RlY3QsIDAsIENGR19NQVhfRkxBU0hfU0VDVCk7CisKKwlmb3IgKGogPSAwOyBqIDwgZmxhc2hfaW5mb1tpXS5zZWN0b3JfY291bnQ7IGorKykgeworCQlmbGFzaF9pbmZvW2ldLnN0YXJ0W2pdID0gQ0ZHX0ZMQVNIX0JBU0UgKyBqICogMHgwMDEwMDAwMDsKKwl9CisJCisJZmxhc2hfcHJvdGVjdChGTEFHX1BST1RFQ1RfU0VULAorCQlDRkdfRkxBU0hfQkFTRSwKKwkJQ0ZHX0ZMQVNIX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAtIDEsCisJCSZmbGFzaF9pbmZvWzBdKTsKKworCWZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKKwkJQ0ZHX0VOVl9BRERSLAorCQlDRkdfRU5WX0FERFIgKyBDRkdfRU5WX1NJWkUgLSAxLAorCQkmZmxhc2hfaW5mb1swXSk7CisKKwlyZXR1cm4gRkxBU0hfQkFOS19TSVpFOworfQorCisKK3ZvaWQgZmxhc2hfcHJpbnRfaW5mbyAoZmxhc2hfaW5mb190ICppbmZvKSB7CisKKwlpbnQgaTsKKworCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgeworCQljYXNlIChGTEFTSF9NQU5fTVQgJiBGTEFTSF9WRU5ETUFTSyk6CisJCQlwcmludGYoIk1pY3JvbjogIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ZigiVW5rbm93biBWZW5kb3IgIik7CisJCQlicmVhazsKKwl9CisJCisJCisJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1RZUEVNQVNLKSB7CisJCWNhc2UgKEZMQVNIX01UMjhTNE0xNkxDICYgRkxBU0hfVFlQRU1BU0spOgorCQkJcHJpbnRmKCIyeCBGTEFTSF9NVDI4UzRNMTZMQyAoMTZNQiBUb3RhbClcbiIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGYoIlVua25vd24gQ2hpcCBUeXBlXG4iKTsKKwkJCXJldHVybjsKKwkJCWJyZWFrOworCX0KKworCXByaW50ZigiICBTaXplOiAlbGQgTUIgaW4gJWQgU2VjdG9yc1xuIiwKKwkJaW5mby0+c2l6ZSA+PiAyMCwgaW5mby0+c2VjdG9yX2NvdW50KTsKKworCXByaW50ZigiICBTZWN0b3IgU3RhcnQgQWRkcmVzc2VzOiAiKTsKKworCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgeworCQlpZiAoKGkgJSA1KSA9PSAwKSAKKwkJCXByaW50ZiAoIlxuICAgIik7CisKKwkJcHJpbnRmICgiICUwOGxYJXMiLCBpbmZvLT5zdGFydFtpXSwKKwkJCWluZm8tPnByb3RlY3RbaV0gPyAiIChSTykiIDogIiAgICAgIik7CisJfQorCQorCXByaW50ZiAoIlxuIik7Cit9CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2ludCBmbGFzaF9lcmFzZSAoZmxhc2hfaW5mb190ICppbmZvLCBpbnQgc19maXJzdCwgaW50IHNfbGFzdCkgeworCWludCBpZmxhZywgY2ZsYWcsIHByb3QsIHNlY3Q7CisJaW50IHJjID0gRVJSX09LOworCisvKiBmaXJzdCBsb29rIGZvciBwcm90ZWN0aW9uIGJpdHMgKi8KKworCWlmIChpbmZvLT5mbGFzaF9pZCA9PSBGTEFTSF9VTktOT1dOKQorCQlyZXR1cm4gRVJSX1VOS05PV05fRkxBU0hfVFlQRTsKKworCWlmICgoc19maXJzdCA8IDApIHx8IChzX2ZpcnN0ID4gc19sYXN0KSkgCisJCXJldHVybiBFUlJfSU5WQUw7CisKKwlpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spICE9IChGTEFTSF9NQU5fTVQgJiBGTEFTSF9WRU5ETUFTSykpIAorCQlyZXR1cm4gRVJSX1VOS05PV05fRkxBU0hfVkVORE9SOworCisJcHJvdCA9IDA7CisKKwlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0IDw9IHNfbGFzdDsgKytzZWN0KSB7CisJCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdKSAKKwkJCXByb3QrKzsKKwl9CisJCisJaWYgKHByb3QpIHsKKwkJcHJpbnRmKCJwcm90ZWN0ZWQhXG4iKTsKKwkJcmV0dXJuIEVSUl9QUk9URUNURUQ7CisJfQorLyoKKyAqIERpc2FibGUgaW50ZXJydXB0cyB3aGljaCBtaWdodCBjYXVzZSBhIHRpbWVvdXQKKyAqIGhlcmUuIFJlbWVtYmVyIHRoYXQgb3VyIGV4Y2VwdGlvbiB2ZWN0b3JzIGFyZQorICogYXQgYWRkcmVzcyAwIGluIHRoZSBmbGFzaCwgYW5kIHdlIGRvbid0IHdhbnQgYQorICogKHRpY2tlcikgZXhjZXB0aW9uIHRvIGhhcHBlbiB3aGlsZSB0aGUgZmxhc2gKKyAqIGNoaXAgaXMgaW4gcHJvZ3JhbW1pbmcgbW9kZS4KKyAqLworCisJY2ZsYWcgPSBpY2FjaGVfc3RhdHVzKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKKwlpZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cygpOworCisvKiBTdGFydCBlcmFzZSBvbiB1bnByb3RlY3RlZCBzZWN0b3JzICovCisJZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdCA8PSBzX2xhc3QgJiYgIWN0cmxjKCk7IHNlY3QrKykgeworCQorCQlwcmludGYoIkVyYXNpbmcgc2VjdG9yICUyZCAuLi4gIiwgc2VjdCk7CisKKy8qIGFybSBzaW1wbGUsIG5vbiBpbnRlcnJ1cHQgZGVwZW5kZW50IHRpbWVyICovCisKKwkJcmVzZXRfdGltZXJfbWFza2VkKCk7CisKKwkJU0ZfTnZtb2RlRXJhc2UoKTsKKwkJU0ZfTnZtb2RlV3JpdGUoKTsKKworCQlTRl9FcmFzZShDRkdfRkxBU0hfQkFTRSArICgweDAxMDAwMDAgKiBzZWN0KSk7CisJCVNGX05vcm1hbCgpOworCisJCXByaW50Zigib2suXG4iKTsKKwl9CisKKwlpZiAoY3RybGMoKSkKKwkJcHJpbnRmKCJVc2VyIEludGVycnVwdCFcbiIpOworCisJaWYgKGlmbGFnKQorCQllbmFibGVfaW50ZXJydXB0cygpOworCisJaWYgKGNmbGFnKQorCQlpY2FjaGVfZW5hYmxlKCk7CisKKwlyZXR1cm4gcmM7Cit9CisKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5IG1lbW9yeSB0byBmbGFzaC4KKyAqLworCitpbnQgd3JpdGVfYnVmZiAoZmxhc2hfaW5mb190ICppbmZvLCB1Y2hhciAqc3JjLCB1bG9uZyBhZGRyLCB1bG9uZyBjbnQpIHsKKwlpbnQgaTsKKworCWZvcihpID0gMDsgaSA8IGNudDsgaSArPSA0KSB7IAorCisJCVNGX1ByZWNoYXJnZUFsbCgpOworCisJCXJlZ19TRkNUTAk9IENNRF9QUk9HUkFNOwkJLyogRW50ZXIgU3luY0ZsYXNoIFByb2dyYW0gbW9kZSAqLworCQlfX1JFRyhhZGRyICsgaSkgPSBfX1JFRygodTMyKXNyYyAgKyBpKTsKKworCQl3aGlsZSghU0ZfUmVhZHkoKSk7CisJfQorCisJU0ZfTm9ybWFsKCk7CisJCisJcmV0dXJuIEVSUl9PSzsKK30KKworCmRpZmYgLS1naXQgYS9ib2FyZC9teDFhZHMvdS1ib290LmxkcyBiL2JvYXJkL214MWFkcy91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0Njk5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9teDFhZHMvdS1ib290LmxkcwpAQCAtMCwwICsxLDU4IEBACisvKgorICogYm9hcmQvbXgxYWRzL3UtYm9vdC5sZHMKKyAqIAorICogKGMpIENvcHlyaWdodCAyMDA0CisgKiBUZWNod2FyZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCisgKiBodHRwOi8vd3d3LnRlY2h3YXJlLmNvbS50dy8KKyAqCisgKiBNaW5nLUxlbiBXdSA8bWluZ2xlbl93dUB0ZWNod2FyZS5jb20udHc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworCitPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworeworCS4gPSAweDAwMDAwMDAwOworCisJLiA9IEFMSUdOKDQpOworCS50ZXh0ICAgICAgOgorCXsKKwkgIGNwdS9tYzkzMjgvc3RhcnQubwkoLnRleHQpCisJICAqKC50ZXh0KQorCX0KKworCS4gPSBBTElHTig0KTsKKwkucm9kYXRhIDogeyAqKC5yb2RhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZGF0YSA6IHsgKiguZGF0YSkgfQorCisJLiA9IEFMSUdOKDQpOworCS5nb3QgOiB7ICooLmdvdCkgfQorCisJX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKKwkudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQorCV9fdV9ib290X2NtZF9lbmQgPSAuOworCisJLiA9IEFMSUdOKDQpOworCV9fYnNzX3N0YXJ0ID0gLjsKKwkuYnNzIDogeyAqKC5ic3MpIH0KKwlfZW5kID0gLjsKK30KZGlmZiAtLWdpdCBhL2NwdS9tYzkzMjgvTWFrZWZpbGUgYi9jcHUvbWM5MzI4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjFiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbWM5MzI4L01ha2VmaWxlCkBAIC0wLDAgKzEsNDMgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyCisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKENQVSkuYQorCitTVEFSVAk9IHN0YXJ0Lm8KK09CSlMJPSBzZXJpYWwubyBpbnRlcnJ1cHRzLm8gY3B1Lm8gCisKK2FsbDoJLmRlcGVuZCAkKFNUQVJUKSAkKExJQikKKworJChMSUIpOgkkKE9CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ0ZMQUdTKSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworc2luY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9jcHUvbWM5MzI4L2NvbmZpZy5tayBiL2NwdS9tYzkzMjgvY29uZmlnLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZjdkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbWM5MzI4L2NvbmZpZy5tawpAQCAtMCwwICsxLDI3IEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwMgorIyBHYXJ5IEplbm5lam9obiwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgPGdqQGRlbnguZGU+CisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK1BMQVRGT1JNX1JFTEZMQUdTICs9IC1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZm5vLWNvbW1vbiAtZmZpeGVkLXI4IFwKKwktbXNob3J0LWxvYWQtYnl0ZXMgLW1zb2Z0LWZsb2F0CisKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1tYXBjcy0zMiAtbWFyY2g9YXJtdjQKZGlmZiAtLWdpdCBhL2NwdS9tYzkzMjgvY3B1LmMgYi9jcHUvbWM5MzI4L2NwdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMmI1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbWM5MzI4L2NwdS5jCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEdhcnkgSmVubmVqb2huLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8Z2pAZGVueC5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKgorICogQ1BVIHNwZWNpZmljIGNvZGUKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPGFybTkyMHQuaD4KKworLyogcmVhZCBjby1wcm9jZXNzb3IgMTUsIHJlZ2lzdGVyICMxIChjb250cm9sIHJlZ2lzdGVyKSAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVhZF9wMTVfYzEgKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyB2YWx1ZTsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorCQkibXJjICAgICBwMTUsIDAsICUwLCBjMSwgYzAsIDAgICBAIHJlYWQgY29udHJvbCByZWdcbiIKKwkJOiAiPXIiICh2YWx1ZSkKKwkJOgorCQk6ICJtZW1vcnkiKTsKKworI2lmZGVmIE1NVV9ERUJVRworCXByaW50ZiAoInAxNS9jMSBpcyA9ICUwOGx4XG4iLCB2YWx1ZSk7CisjZW5kaWYKKwlyZXR1cm4gdmFsdWU7Cit9CisKKy8qIHdyaXRlIHRvIGNvLXByb2Nlc3NvciAxNSwgcmVnaXN0ZXIgIzEgKGNvbnRyb2wgcmVnaXN0ZXIpICovCitzdGF0aWMgdm9pZCB3cml0ZV9wMTVfYzEgKHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7CisjaWZkZWYgTU1VX0RFQlVHCisJcHJpbnRmICgid3JpdGUgJTA4bHggdG8gcDE1L2MxXG4iLCB2YWx1ZSk7CisjZW5kaWYKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJIm1jciAgICAgcDE1LCAwLCAlMCwgYzEsIGMwLCAwICAgQCB3cml0ZSBpdCBiYWNrXG4iCisJCToKKwkJOiAiciIgKHZhbHVlKQorCQk6ICJtZW1vcnkiKTsKKworCXJlYWRfcDE1X2MxICgpOworfQorCitzdGF0aWMgdm9pZCBjcF9kZWxheSAodm9pZCkKK3sKKwl2b2xhdGlsZSBpbnQgaTsKKworCS8qIGNvcHJvIHNlZW1zIHRvIG5lZWQgc29tZSBkZWxheSBiZXR3ZWVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspOworfQorCisvKiBTZWUgYWxzbyBBUk0gUmVmLiBNYW4uICovCisjZGVmaW5lIEMxX01NVQkJKDE8PDApCQkvKiBtbXUgb2ZmL29uICovCisjZGVmaW5lIEMxX0FMSUdOCSgxPDwxKQkJLyogYWxpZ25tZW50IGZhdWx0cyBvZmYvb24gKi8KKyNkZWZpbmUgQzFfREMJCSgxPDwyKQkJLyogZGNhY2hlIG9mZi9vbiAqLworI2RlZmluZSBDMV9CSUdfRU5ESUFOCSgxPDw3KQkvKiBiaWcgZW5kaWFuIG9mZi9vbiAqLworI2RlZmluZSBDMV9TWVNfUFJPVAkoMTw8OCkJCS8qIHN5c3RlbSBwcm90ZWN0aW9uICovCisjZGVmaW5lIEMxX1JPTV9QUk9UCSgxPDw5KQkJLyogUk9NIHByb3RlY3Rpb24gKi8KKyNkZWZpbmUgQzFfSUMJCSgxPDwxMikJCS8qIGljYWNoZSBvZmYvb24gKi8KKyNkZWZpbmUgQzFfSElHSF9WRUNUT1JTCSgxPDwxMykJLyogbG9jYXRpb24gb2YgdmVjdG9yczogbG93L2hpZ2ggYWRkcmVzc2VzICovCisjZGVmaW5lIFJFU0VSVkVEXzEJKDB4ZiA8PCAzKQkvKiBtdXN0IGJlIDExMWIgZm9yIFIvVyAqLworCitpbnQgY3B1X2luaXQgKHZvaWQpCit7CisJLyoKKwkgKiBzZXR1cCB1cCBzdGFja3MgaWYgbmVjZXNzYXJ5CisJICovCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCUlSUV9TVEFDS19TVEFSVCA9IF9hcm1ib290X3N0YXJ0IC0gQ0ZHX01BTExPQ19MRU4gLSBDRkdfR0JMX0RBVEFfU0laRSAtIDQ7CisJRklRX1NUQUNLX1NUQVJUID0gSVJRX1NUQUNLX1NUQVJUIC0gQ09ORklHX1NUQUNLU0laRV9JUlE7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworaW50IGNsZWFudXBfYmVmb3JlX2xpbnV4ICh2b2lkKQoreworCS8qCisJICogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQganVzdCBiZWZvcmUgd2UgY2FsbCBsaW51eAorCSAqIGl0IHByZXBhcmVzIHRoZSBwcm9jZXNzb3IgZm9yIGxpbnV4CisJICoKKwkgKiB3ZSB0dXJuIG9mZiBjYWNoZXMgZXRjIC4uLgorCSAqLworCisJdW5zaWduZWQgbG9uZyBpOworCisJZGlzYWJsZV9pbnRlcnJ1cHRzICgpOworCisJLyogdHVybiBvZmYgSS9ELWNhY2hlICovCisJYXNtICgibXJjIHAxNSwgMCwgJTAsIGMxLCBjMCwgMCI6Ij1yIiAoaSkpOworCWkgJj0gfihDMV9EQyB8IEMxX0lDKTsKKwlhc20gKCJtY3IgcDE1LCAwLCAlMCwgYzEsIGMwLCAwIjogOiJyIiAoaSkpOworCisJLyogZmx1c2ggSS9ELWNhY2hlICovCisJaSA9IDA7CisJYXNtICgibWNyIHAxNSwgMCwgJTAsIGM3LCBjNywgMCI6IDoiciIgKGkpKTsKKwlyZXR1cm4gKDApOworfQorCitpbnQgZG9fcmVzZXQgKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dGVybiB2b2lkIHJlc2V0X2NwdSAodWxvbmcgYWRkcik7CisKKwlkaXNhYmxlX2ludGVycnVwdHMgKCk7CisJcmVzZXRfY3B1ICgwKTsKKwkvKk5PVFJFQUNIRUQqLworCXJldHVybiAoMCk7Cit9CisKK3ZvaWQgaWNhY2hlX2VuYWJsZSAodm9pZCkKK3sKKwl1bG9uZyByZWc7CisKKwlyZWcgPSByZWFkX3AxNV9jMSAoKTsKKwljcF9kZWxheSAoKTsKKwl3cml0ZV9wMTVfYzEgKHJlZyB8IEMxX0lDKTsKK30KKwordm9pZCBpY2FjaGVfZGlzYWJsZSAodm9pZCkKK3sKKwl1bG9uZyByZWc7CisKKwlyZWcgPSByZWFkX3AxNV9jMSAoKTsKKwljcF9kZWxheSAoKTsKKwl3cml0ZV9wMTVfYzEgKHJlZyAmIH5DMV9JQyk7Cit9CisKK2ludCBpY2FjaGVfc3RhdHVzICh2b2lkKQoreworCXJldHVybiAocmVhZF9wMTVfYzEgKCkgJiBDMV9JQykgIT0gMDsKK30KKworI2lmZGVmIFVTRV85MjBUX01NVQorLyogSXQgbWFrZXMgbm8gc2Vuc2UgdG8gdXNlIHRoZSBkY2FjaGUgaWYgdGhlIE1NVSBpcyBub3QgZW5hYmxlZCAqLwordm9pZCBkY2FjaGVfZW5hYmxlICh2b2lkKQoreworCXVsb25nIHJlZzsKKworCXJlZyA9IHJlYWRfcDE1X2MxICgpOworCWNwX2RlbGF5ICgpOworCXdyaXRlX3AxNV9jMSAocmVnIHwgQzFfREMpOworfQorCit2b2lkIGRjYWNoZV9kaXNhYmxlICh2b2lkKQoreworCXVsb25nIHJlZzsKKworCXJlZyA9IHJlYWRfcDE1X2MxICgpOworCWNwX2RlbGF5ICgpOworCXJlZyAmPSB+QzFfREM7CisJd3JpdGVfcDE1X2MxIChyZWcpOworfQorCitpbnQgZGNhY2hlX3N0YXR1cyAodm9pZCkKK3sKKwlyZXR1cm4gKHJlYWRfcDE1X2MxICgpICYgQzFfREMpICE9IDA7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9tYzkzMjgvaW50ZXJydXB0cy5jIGIvY3B1L21jOTMyOC9pbnRlcnJ1cHRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5MjJjZgotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9tYzkzMjgvaW50ZXJydXB0cy5jCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgorICogQWxleCBadWVwa2UgPGF6dUBzeXNnby5kZT4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEdhcnkgSmVubmVqb2huLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8Z2pAZGVueC5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXJtOTIwdC5oPgorI2luY2x1ZGUgPG1jOTMyOC5oPgorCisjaW5jbHVkZSA8YXNtL3Byb2MtYXJtdi9wdHJhY2UuaD4KKworZXh0ZXJuIHZvaWQgcmVzZXRfY3B1KHVsb25nIGFkZHIpOworaW50IHRpbWVyX2xvYWRfdmFsID0gMDsKKworI2lmZGVmIENPTkZJR19VU0VfSVJRCisvKiBlbmFibGUgSVJRIGludGVycnVwdHMgKi8KK3ZvaWQgZW5hYmxlX2ludGVycnVwdHMgKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyB0ZW1wOworCV9fYXNtX18gX192b2xhdGlsZV9fKCJtcnMgJTAsIGNwc3JcbiIKKwkJCSAgICAgImJpYyAlMCwgJTAsICMweDgwXG4iCisJCQkgICAgICJtc3IgY3Bzcl9jLCAlMCIKKwkJCSAgICAgOiAiPXIiICh0ZW1wKQorCQkJICAgICA6CisJCQkgICAgIDogIm1lbW9yeSIpOworfQorCisKKy8qCisgKiBkaXNhYmxlIElSUS9GSVEgaW50ZXJydXB0cworICogcmV0dXJucyB0cnVlIGlmIGludGVycnVwdHMgaGFkIGJlZW4gZW5hYmxlZCBiZWZvcmUgd2UgZGlzYWJsZWQgdGhlbQorICovCitpbnQgZGlzYWJsZV9pbnRlcnJ1cHRzICh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgb2xkLHRlbXA7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oIm1ycyAlMCwgY3BzclxuIgorCQkJICAgICAib3JyICUxLCAlMCwgIzB4YzBcbiIKKwkJCSAgICAgIm1zciBjcHNyX2MsICUxIgorCQkJICAgICA6ICI9ciIgKG9sZCksICI9ciIgKHRlbXApCisJCQkgICAgIDoKKwkJCSAgICAgOiAibWVtb3J5Iik7CisJcmV0dXJuIChvbGQgJiAweDgwKSA9PSAwOworfQorI2Vsc2UKK3ZvaWQgZW5hYmxlX2ludGVycnVwdHMgKHZvaWQpCit7CisJcmV0dXJuOworfQoraW50IGRpc2FibGVfaW50ZXJydXB0cyAodm9pZCkKK3sKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisKK3ZvaWQgYmFkX21vZGUgKHZvaWQpCit7CisJcGFuaWMgKCJSZXNldHRpbmcgQ1BVIC4uLlxuIik7CisJcmVzZXRfY3B1ICgwKTsKK30KKwordm9pZCBzaG93X3JlZ3MgKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJY29uc3QgY2hhciAqcHJvY2Vzc29yX21vZGVzW10gPSB7CisJIlVTRVJfMjYiLAkiRklRXzI2IiwJIklSUV8yNiIsCSJTVkNfMjYiLAorCSJVSzRfMjYiLAkiVUs1XzI2IiwJIlVLNl8yNiIsCSJVSzdfMjYiLAorCSJVSzhfMjYiLAkiVUs5XzI2IiwJIlVLMTBfMjYiLAkiVUsxMV8yNiIsCisJIlVLMTJfMjYiLAkiVUsxM18yNiIsCSJVSzE0XzI2IiwJIlVLMTVfMjYiLAorCSJVU0VSXzMyIiwJIkZJUV8zMiIsCSJJUlFfMzIiLAkiU1ZDXzMyIiwKKwkiVUs0XzMyIiwJIlVLNV8zMiIsCSJVSzZfMzIiLAkiQUJUXzMyIiwKKwkiVUs4XzMyIiwJIlVLOV8zMiIsCSJVSzEwXzMyIiwJIlVORF8zMiIsCisJIlVLMTJfMzIiLAkiVUsxM18zMiIsCSJVSzE0XzMyIiwJIlNZU18zMiIsCisJfTsKKworCWZsYWdzID0gY29uZGl0aW9uX2NvZGVzIChyZWdzKTsKKworCXByaW50ZiAoInBjIDogWzwlMDhseD5dICAgIGxyIDogWzwlMDhseD5dXG4iCisJCSJzcCA6ICUwOGx4ICBpcCA6ICUwOGx4ICBmcCA6ICUwOGx4XG4iLAorCQlpbnN0cnVjdGlvbl9wb2ludGVyIChyZWdzKSwKKwkJcmVncy0+QVJNX2xyLCByZWdzLT5BUk1fc3AsIHJlZ3MtPkFSTV9pcCwgcmVncy0+QVJNX2ZwKTsKKwlwcmludGYgKCJyMTA6ICUwOGx4ICByOSA6ICUwOGx4ICByOCA6ICUwOGx4XG4iLAorCQlyZWdzLT5BUk1fcjEwLCByZWdzLT5BUk1fcjksIHJlZ3MtPkFSTV9yOCk7CisJcHJpbnRmICgicjcgOiAlMDhseCAgcjYgOiAlMDhseCAgcjUgOiAlMDhseCAgcjQgOiAlMDhseFxuIiwKKwkJcmVncy0+QVJNX3I3LCByZWdzLT5BUk1fcjYsIHJlZ3MtPkFSTV9yNSwgcmVncy0+QVJNX3I0KTsKKwlwcmludGYgKCJyMyA6ICUwOGx4ICByMiA6ICUwOGx4ICByMSA6ICUwOGx4ICByMCA6ICUwOGx4XG4iLAorCQlyZWdzLT5BUk1fcjMsIHJlZ3MtPkFSTV9yMiwgcmVncy0+QVJNX3IxLCByZWdzLT5BUk1fcjApOworCXByaW50ZiAoIkZsYWdzOiAlYyVjJWMlYyIsCisJCWZsYWdzICYgQ0NfTl9CSVQgPyAnTicgOiAnbicsCisJCWZsYWdzICYgQ0NfWl9CSVQgPyAnWicgOiAneicsCisJCWZsYWdzICYgQ0NfQ19CSVQgPyAnQycgOiAnYycsIGZsYWdzICYgQ0NfVl9CSVQgPyAnVicgOiAndicpOworCXByaW50ZiAoIiAgSVJRcyAlcyAgRklRcyAlcyAgTW9kZSAlcyVzXG4iLAorCQlpbnRlcnJ1cHRzX2VuYWJsZWQgKHJlZ3MpID8gIm9uIiA6ICJvZmYiLAorCQlmYXN0X2ludGVycnVwdHNfZW5hYmxlZCAocmVncykgPyAib24iIDogIm9mZiIsCisJCXByb2Nlc3Nvcl9tb2Rlc1twcm9jZXNzb3JfbW9kZSAocmVncyldLAorCQl0aHVtYl9tb2RlIChyZWdzKSA/ICIgKFQpIiA6ICIiKTsKK30KKwordm9pZCBkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24gKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50ZiAoInVuZGVmaW5lZCBpbnN0cnVjdGlvblxuIik7CisJc2hvd19yZWdzIChwdF9yZWdzKTsKKwliYWRfbW9kZSAoKTsKK30KKwordm9pZCBkb19zb2Z0d2FyZV9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50ZiAoInNvZnR3YXJlIGludGVycnVwdFxuIik7CisJc2hvd19yZWdzIChwdF9yZWdzKTsKKwliYWRfbW9kZSAoKTsKK30KKwordm9pZCBkb19wcmVmZXRjaF9hYm9ydCAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmICgicHJlZmV0Y2ggYWJvcnRcbiIpOworCXNob3dfcmVncyAocHRfcmVncyk7CisJYmFkX21vZGUgKCk7Cit9CisKK3ZvaWQgZG9fZGF0YV9hYm9ydCAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmICgiZGF0YSBhYm9ydFxuIik7CisJc2hvd19yZWdzIChwdF9yZWdzKTsKKwliYWRfbW9kZSAoKTsKK30KKwordm9pZCBkb19ub3RfdXNlZCAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmICgibm90IHVzZWRcbiIpOworCXNob3dfcmVncyAocHRfcmVncyk7CisJYmFkX21vZGUgKCk7Cit9CisKK3ZvaWQgZG9fZmlxIChzdHJ1Y3QgcHRfcmVncyAqcHRfcmVncykKK3sKKwlwcmludGYgKCJmYXN0IGludGVycnVwdCByZXF1ZXN0XG4iKTsKKwlzaG93X3JlZ3MgKHB0X3JlZ3MpOworCWJhZF9tb2RlICgpOworfQorCit2b2lkIGRvX2lycSAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmICgiaW50ZXJydXB0IHJlcXVlc3RcbiIpOworCXNob3dfcmVncyAocHRfcmVncyk7CisJYmFkX21vZGUgKCk7Cit9CisKKworaW50IGludGVycnVwdF9pbml0ICh2b2lkKQoreworCisvKiB3ZSBkb24ndCB1c2UgaW50ZXJydXB0ICovCisJcmV0dXJuKDApOworfQorCisvKgorICogdGltZXIgd2l0aG91dCBpbnRlcnJ1cHRzCisgKi8KKwordm9pZCByZXNldF90aW1lciAodm9pZCkKK3sKKwlyZXNldF90aW1lcl9tYXNrZWQgKCk7Cit9CisKK3Vsb25nIGdldF90aW1lciAodWxvbmcgYmFzZSkKK3sKKwlyZXR1cm4gZ2V0X3RpbWVyX21hc2tlZCAoKTsKK30KKwordm9pZCBzZXRfdGltZXIgKHVsb25nIHQpCit7CisvKiBOb3AJKi8KK30KKwordm9pZCB1ZGVsYXkgKHVuc2lnbmVkIGxvbmcgdXNlYykKK3sKKwl1ZGVsYXlfbWFza2VkICh1c2VjKTsKK30KKwordm9pZCByZXNldF90aW1lcl9tYXNrZWQgKHZvaWQpCit7CisJdTMyIAl0bXA7CisJTVgxX1RDVEwxICAgICAgID0gMHgwOTsKKwl0bXAgPSAweDFmOwkJLyogYSBsaXR0bGUgZGVsYXkgZm9yIHRpbWVyIHRvIHJlc2V0ICovCisJTVgxX1RQUkVSMQk9IDB4MWY7CisJTVgxX1RDVEwxCT0gMHgxOTsKK30KKwordWxvbmcgZ2V0X3RpbWVyX21hc2tlZCAodm9pZCkKK3sKKwlyZXR1cm4gTVgxX1RDTjE7Cit9CisKK3ZvaWQgdWRlbGF5X21hc2tlZCAodW5zaWduZWQgbG9uZyB1c2VjKQoreworCXVsb25nIHRtbzsKKworCXRtbyA9IHVzZWMgLyAxMDAwOworCXRtbyAqPSBDRkdfSFo7CisJdG1vIC89IDEwMDA7CisKKwlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisKKwl3aGlsZSAoZ2V0X3RpbWVyX21hc2tlZCAoKSA8IHRtbyk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGRlcml2ZWQgZnJvbSBQb3dlclBDIGNvZGUgKHJlYWQgdGltZWJhc2UgYXMgbG9uZyBsb25nKS4KKyAqIE9uIEFSTSBpdCBqdXN0IHJldHVybnMgdGhlIHRpbWVyIHZhbHVlLgorICovCit1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X3RpY2tzKHZvaWQpCit7CisJcmV0dXJuIGdldF90aW1lcigwKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIFBvd2VyUEMgY29kZSAodGltZWJhc2UgY2xvY2sgZnJlcXVlbmN5KS4KKyAqIE9uIEFSTSBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGltZXIgdGlja3MgcGVyIHNlY29uZC4KKyAqLworIAordWxvbmcgIGdldF90YmNsayAodm9pZCkgeworCXJldHVybiBDRkdfSFo7Cit9CisKZGlmZiAtLWdpdCBhL2NwdS9tYzkzMjgvc2VyaWFsLmMgYi9jcHUvbWM5MzI4L3NlcmlhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YjZmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbWM5MzI4L3NlcmlhbC5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogY3B1L21jOTMyOC9zZXJpYWwuYyAKKyAqIAorICogKGMpIENvcHlyaWdodCAyMDA0CisgKiBUZWNod2FyZSBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LCBJbmMuCisgKiBodHRwOi8vd3d3LnRlY2h3YXJlLmNvbS50dy8KKyAqCisgKiBNaW5nLUxlbiBXdSA8bWluZ2xlbl93dUB0ZWNod2FyZS5jb20udHc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bWM5MzI4Lmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19VQVJUMSkgCisvKiBHUElPIFBPUlQgQiAJCSovCisKKyNkZWZpbmUgcmVnX0dJVVMJTVgxX0dJVVNfQworI2RlZmluZSByZWdfR1BSCQlNWDFfR1BSX0IKKyNkZWZpbmUgR1BJT19NQVNLCTB4RkZGRkUxRkYKKyNkZWZpbmUgVUFSVF9CQVNFCTB4MDAyMDYwMDAKKworCisjZWxpZiBkZWZpbmVkIChDT05GSUdfVUFSVDIpCisvKiBHUElPIFBPUlQgQyAgCSovCisKKyNkZWZpbmUgcmVnX0dJVVMJTVgxX0dJVVNfQworI2RlZmluZSByZWdfR1BSCQlNWDFfR1BSX0MKKyNkZWZpbmUgR1BJT19NQVNLIAkweDBGRkZGRkZGCisjZGVmaW5lIFVBUlRfQkFTRQkweDIwNzAwMAorCisjZW5kaWYgCisKKyNkZWZpbmUgcmVnX1VSWEQJKCooKHZvbGF0aWxlIHUzMiAqKShVQVJUX0JBU0UrMHgwMCkpKQorI2RlZmluZSByZWdfVVRYRAkoKigodm9sYXRpbGUgdTMyICopKFVBUlRfQkFTRSsweDQwKSkpCisjZGVmaW5lIHJlZ19VQ1IxCSgqKCh2b2xhdGlsZSB1MzIgKikoVUFSVF9CQVNFKzB4ODApKSkKKyNkZWZpbmUgcmVnX1VDUjIJKCooKHZvbGF0aWxlIHUzMiAqKShVQVJUX0JBU0UrMHg4NCkpKQorI2RlZmluZSByZWdfVUNSMwkoKigodm9sYXRpbGUgdTMyICopKFVBUlRfQkFTRSsweDg4KSkpCisjZGVmaW5lIHJlZ19VQ1I0CSgqKCh2b2xhdGlsZSB1MzIgKikoVUFSVF9CQVNFKzB4OEMpKSkKKyNkZWZpbmUgcmVnX1VGQ1IJKCooKHZvbGF0aWxlIHUzMiAqKShVQVJUX0JBU0UrMHg5MCkpKQorI2RlZmluZSByZWdfVVNSMQkoKigodm9sYXRpbGUgdTMyICopKFVBUlRfQkFTRSsweDk0KSkpCisjZGVmaW5lIHJlZ19VU1IyCSgqKCh2b2xhdGlsZSB1MzIgKikoVUFSVF9CQVNFKzB4OTgpKSkKKyNkZWZpbmUgcmVnX1VFU0MJKCooKHZvbGF0aWxlIHUzMiAqKShVQVJUX0JBU0UrMHg5QykpKQorI2RlZmluZSByZWdfVVRJTQkoKigodm9sYXRpbGUgdTMyICopKFVBUlRfQkFTRSsweEEwKSkpCisjZGVmaW5lIHJlZ19VQklSCSgqKCh2b2xhdGlsZSB1MzIgKikoVUFSVF9CQVNFKzB4QTQpKSkKKyNkZWZpbmUgcmVnX1VCTVIJKCooKHZvbGF0aWxlIHUzMiAqKShVQVJUX0JBU0UrMHhBOCkpKQorI2RlZmluZSByZWdfVUJSQwkoKigodm9sYXRpbGUgdTMyICopKFVBUlRfQkFTRSsweEFDKSkpCisKKyNkZWZpbmUgVFhGRV9NQVNLCTB4NDAwMCAgCS8qIFR4IGJ1ZmZlciBlbXB0eQkqLworI2RlZmluZSBSRFJfTUFTSwkweDAwMDEJCS8qIHJlY2VpdmUgZGF0YSByZWFkeQkqLworCisKK3ZvaWQgc2VyaWFsX3NldGJyZyAodm9pZCkgeworCisvKiBjb25maWcgSS9PIHBpbnMgZm9yIFVBUlQgCSovCisKKwlyZWdfR0lVUyAJJj0gR1BJT19NQVNLOworCXJlZ19HUFIJCSY9IEdQSU9fTUFTSzsKKworLyogY29uZmlnIFVBUlQJCQkqLworCisJcmVnX1VDUjEgCT0gNTsKKwlyZWdfVUNSMiAJPSAweDQwMjc7CisJcmVnX1VDUjQgCT0gMTsKKwlyZWdfVUZDUiAJPSAweEE4MTsKKworCXJlZ19VQklSIAk9IDB4RjsKKwlyZWdfVUJNUiAJPSAweDhBOworCXJlZ19VQlJDIAk9IDg7Cit9CisKKworCisvKgorICogSW5pdGlhbGlzZSB0aGUgc2VyaWFsIHBvcnQgd2l0aCB0aGUgZ2l2ZW4gYmF1ZHJhdGUuIFRoZSBzZXR0aW5ncworICogYXJlIGFsd2F5cyA4IGRhdGEgYml0cywgbm8gcGFyaXR5LCAxIHN0b3AgYml0LCBubyBzdGFydCBiaXRzLgorICoKKyAqLworIAoraW50IHNlcmlhbF9pbml0ICh2b2lkKSB7CisJc2VyaWFsX3NldGJyZyAoKTsKKworCXJldHVybiAoMCk7Cit9CisKKworCisvKgorICogUmVhZCBhIHNpbmdsZSBieXRlIGZyb20gdGhlIHNlcmlhbCBwb3J0LiBSZXR1cm5zIDEgb24gc3VjY2VzcywgMAorICogb3RoZXJ3aXNlLiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBzdWNjZXNmdWxsLCB0aGUgY2hhcmFjdGVyIHJlYWQgaXMKKyAqIHdyaXR0ZW4gaW50byBpdHMgYXJndW1lbnQgYy4KKyAqLworaW50IHNlcmlhbF9nZXRjICh2b2lkKSB7CisKKwl3aGlsZSAoIShyZWdfVVNSMiAmIFJEUl9NQVNLKSkgOyAJLyogd2FpdCB1bnRpbCBSRFIgYml0IHNldCAJCSovCisKKwlyZXR1cm4gKHU4KXJlZ19VUlhEOworfQorCisKKy8qCisgKiBPdXRwdXQgYSBzaW5nbGUgYnl0ZSB0byB0aGUgc2VyaWFsIHBvcnQuCisgKi8KK3ZvaWQgc2VyaWFsX3B1dGMgKGNvbnN0IGNoYXIgYykgeworCisJd2hpbGUgKCEocmVnX1VTUjIgJiBUWEZFX01BU0spKTsJLyogd2FpdCB1bnRpbCBUWEZFIGJpdCBzZXQJCSovCisKKwlyZWdfVVRYRCA9ICh1MTYpIGM7CisKKwlpZiAoYyA9PSAnXG4nKQl7CQkJLyogY2FycmlhZ2UgcmV0dXJuID8gYXBwZW5kIGxpbmUtZmVlZAkqLworCQl3aGlsZSAoIShyZWdfVVNSMiAmIFRYRkVfTUFTSykpOwkvKiB3YWl0IHVudGlsIFRYRkUgYml0IHNldAkqLworCQlyZWdfVVRYRCA9ICdccic7CisJfQorCit9CisKKworLyoKKyAqIFRlc3Qgd2hldGhlciBhIGNoYXJhY3RlciBpcyBpbiB0aGUgUlggYnVmZmVyCisgKi8KK2ludCBzZXJpYWxfdHN0YyAodm9pZCkgeworCXJldHVybiByZWdfVVNSMiAmIFJEUl9NQVNLOworfQorCisKK3ZvaWQgc2VyaWFsX3B1dHMgKGNvbnN0IGNoYXIgKnMpIHsKKwl3aGlsZSAoKnMpIHsKKwkJc2VyaWFsX3B1dGMgKCpzKyspOworCX0KK30KKwpkaWZmIC0tZ2l0IGEvY3B1L21jOTMyOC9zdGFydC5TIGIvY3B1L21jOTMyOC9zdGFydC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZmNlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbWM5MzI4L3N0YXJ0LlMKQEAgLTAsMCArMSwzODggQEAKKy8qCisgKiAgYXJtYm9vdCAtIFN0YXJ0dXAgQ29kZSBmb3IgQVJNOTIwIENQVS1jb3JlCisgKgorICogIENvcHlyaWdodCAoYykgMjAwMQlNYXJpdXMgR3L2Z2VyIDxtYWdAc3lzZ28uZGU+CisgKiAgQ29weXJpZ2h0IChjKSAyMDAyCUFsZXggWvxwa2UgPGF6dUBzeXNnby5kZT4KKyAqICBDb3B5cmlnaHQgKGMpIDIwMDIJR2FyeSBKZW5uZWpvaG4gPGdqQGRlbnguZGU+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEp1bXAgdmVjdG9yIHRhYmxlIGFzIGluIHRhYmxlIDMuMSBpbiBbMV0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworLmdsb2JsIF9zdGFydAorX3N0YXJ0OgliICAgICAgIHJlc2V0CisJbGRyCXBjLCBfdW5kZWZpbmVkX2luc3RydWN0aW9uCisJbGRyCXBjLCBfc29mdHdhcmVfaW50ZXJydXB0CisJbGRyCXBjLCBfcHJlZmV0Y2hfYWJvcnQKKwlsZHIJcGMsIF9kYXRhX2Fib3J0CisJbGRyCXBjLCBfbm90X3VzZWQKKwlsZHIJcGMsIF9pcnEKKwlsZHIJcGMsIF9maXEKKworX3VuZGVmaW5lZF9pbnN0cnVjdGlvbjoJLndvcmQgdW5kZWZpbmVkX2luc3RydWN0aW9uCitfc29mdHdhcmVfaW50ZXJydXB0Ogkud29yZCBzb2Z0d2FyZV9pbnRlcnJ1cHQKK19wcmVmZXRjaF9hYm9ydDoJLndvcmQgcHJlZmV0Y2hfYWJvcnQKK19kYXRhX2Fib3J0OgkJLndvcmQgZGF0YV9hYm9ydAorX25vdF91c2VkOgkJLndvcmQgbm90X3VzZWQKK19pcnE6CQkJLndvcmQgaXJxCitfZmlxOgkJCS53b3JkIGZpcQorCisJLmJhbGlnbmwgMTYsMHhkZWFkYmVlZgorCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFN0YXJ0dXAgQ29kZSAocmVzZXQgdmVjdG9yKQorICoKKyAqIGRvIGltcG9ydGFudCBpbml0IG9ubHkgaWYgd2UgZG9uJ3Qgc3RhcnQgZnJvbSBtZW1vcnkhCisgKiByZWxvY2F0ZSBhcm1ib290IHRvIHJhbQorICogc2V0dXAgc3RhY2sKKyAqIGp1bXAgdG8gc2Vjb25kIHN0YWdlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitfVEVYVF9CQVNFOgorCS53b3JkCVRFWFRfQkFTRQorCisuZ2xvYmwgX2FybWJvb3Rfc3RhcnQKK19hcm1ib290X3N0YXJ0OgorCS53b3JkIF9zdGFydAorCisvKgorICogVGhlc2UgYXJlIGRlZmluZWQgaW4gdGhlIGJvYXJkLXNwZWNpZmljIGxpbmtlciBzY3JpcHQuCisgKi8KKy5nbG9ibCBfYnNzX3N0YXJ0CitfYnNzX3N0YXJ0OgorCS53b3JkIF9fYnNzX3N0YXJ0CisKKy5nbG9ibCBfYnNzX2VuZAorX2Jzc19lbmQ6CisJLndvcmQgX2VuZAorCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKy8qIElSUSBzdGFjayBtZW1vcnkgKGNhbGN1bGF0ZWQgYXQgcnVuLXRpbWUpICovCisuZ2xvYmwgSVJRX1NUQUNLX1NUQVJUCitJUlFfU1RBQ0tfU1RBUlQ6CisJLndvcmQJMHgwYmFkYzBkZQorCisvKiBJUlEgc3RhY2sgbWVtb3J5IChjYWxjdWxhdGVkIGF0IHJ1bi10aW1lKSAqLworLmdsb2JsIEZJUV9TVEFDS19TVEFSVAorRklRX1NUQUNLX1NUQVJUOgorCS53b3JkIDB4MGJhZGMwZGUKKyNlbmRpZgorCisKKy8qCisgKiB0aGUgYWN0dWFsIHJlc2V0IGNvZGUKKyAqLworCityZXNldDoKKwkvKgorCSAqIHNldCB0aGUgY3B1IHRvIFNWQzMyIG1vZGUKKwkgKi8KKwltcnMJcjAsY3BzcgorCWJpYwlyMCxyMCwjMHgxZgorCW9ycglyMCxyMCwjMHhkMworCW1zcgljcHNyLHIwCisKKwkvKgorCSAqIHdlIGRvIHN5cy1jcml0aWNhbCBpbml0cyBvbmx5IGF0IHJlYm9vdCwKKwkgKiBub3Qgd2hlbiBib290aW5nIGZyb20gcmFtIQorCSAqLworI2lmZGVmIENPTkZJR19JTklUX0NSSVRJQ0FMCisJYmwJY3B1X2luaXRfY3JpdAorI2VuZGlmCisKK3JlbG9jYXRlOgkJCQkvKiByZWxvY2F0ZSBVLUJvb3QgdG8gUkFNCSAgICAqLworCWFkcglyMCwgX3N0YXJ0CQkvKiByMCA8LSBjdXJyZW50IHBvc2l0aW9uIG9mIGNvZGUgICAqLworCWxkcglyMSwgX1RFWFRfQkFTRQkJLyogdGVzdCBpZiB3ZSBydW4gZnJvbSBmbGFzaCBvciBSQU0gKi8KKwljbXAgICAgIHIwLCByMSAgICAgICAgICAgICAgICAgIC8qIGRvbid0IHJlbG9jIGR1cmluZyBkZWJ1ZyAgICAgICAgICovCisJYmVxICAgICBzdGFja19zZXR1cAorCisJbGRyCXIyLCBfYXJtYm9vdF9zdGFydAorCWxkcglyMywgX2Jzc19zdGFydAorCXN1YglyMiwgcjMsIHIyCQkvKiByMiA8LSBzaXplIG9mIGFybWJvb3QgICAgICAgICAgICAqLworCWFkZAlyMiwgcjAsIHIyCQkvKiByMiA8LSBzb3VyY2UgZW5kIGFkZHJlc3MgICAgICAgICAqLworCitjb3B5X2xvb3A6CisJbGRtaWEJcjAhLCB7cjMtcjEwfQkJLyogY29weSBmcm9tIHNvdXJjZSBhZGRyZXNzIFtyMF0gICAgKi8KKwlzdG1pYQlyMSEsIHtyMy1yMTB9CQkvKiBjb3B5IHRvICAgdGFyZ2V0IGFkZHJlc3MgW3IxXSAgICAqLworCWNtcAlyMCwgcjIJCQkvKiB1bnRpbCBzb3VyY2UgZW5kIGFkZHJlZWUgW3IyXSAgICAqLworCWJsZQljb3B5X2xvb3AKKworCS8qIFNldCB1cCB0aGUgc3RhY2sJCQkJCQkgICAgKi8KK3N0YWNrX3NldHVwOgorCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KKwlzdWIJcjAsIHIwLCAjQ0ZHX01BTExPQ19MRU4JLyogbWFsbG9jIGFyZWEgICAgICAgICAgICAgICAgICAgICAgKi8KKwlzdWIJcjAsIHIwLCAjQ0ZHX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorCXN1YglyMCwgcjAsICMoQ09ORklHX1NUQUNLU0laRV9JUlErQ09ORklHX1NUQUNLU0laRV9GSVEpCisjZW5kaWYKKwlzdWIJc3AsIHIwLCAjMTIJCS8qIGxlYXZlIDMgd29yZHMgZm9yIGFib3J0LXN0YWNrICAgICovCisKK2NsZWFyX2JzczoKKwlsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQgICAgICAgICovCisJbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwltb3YgCXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworY2xic3NfbDpzdHIJcjIsIFtyMF0JCS8qIGNsZWFyIGxvb3AuLi4gICAgICAgICAgICAgICAgICAgICovCisJYWRkCXIwLCByMCwgIzQKKwljbXAJcjAsIHIxCisJYm5lCWNsYnNzX2wKKworCWxkcglwYywgX3N0YXJ0X2FybWJvb3QKKworX3N0YXJ0X2FybWJvb3Q6CS53b3JkIHN0YXJ0X2FybWJvb3QKKworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDUFVfaW5pdF9jcml0aWNhbCByZWdpc3RlcnMKKyAqCisgKiBzZXR1cCBpbXBvcnRhbnQgcmVnaXN0ZXJzCisgKiBzZXR1cCBtZW1vcnkgdGltaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisKK2NwdV9pbml0X2NyaXQ6CisJLyoKKwkgKiBmbHVzaCB2NCBJL0QgY2FjaGVzCisJICovCisJbW92CXIwLCAjMAorCW1jcglwMTUsIDAsIHIwLCBjNywgYzcsIDAJLyogZmx1c2ggdjMvdjQgY2FjaGUgKi8KKwltY3IJcDE1LCAwLCByMCwgYzgsIGM3LCAwCS8qIGZsdXNoIHY0IFRMQiAqLworCisJLyoKKwkgKiBkaXNhYmxlIE1NVSBzdHVmZiBhbmQgY2FjaGVzCisJICovCisJbXJjCXAxNSwgMCwgcjAsIGMxLCBjMCwgMAorCWJpYwlyMCwgcjAsICMweDAwMDAyMzAwCUAgY2xlYXIgYml0cyAxMywgOTo4ICgtLVYtIC0tUlMpCisJYmljCXIwLCByMCwgIzB4MDAwMDAwODcJQCBjbGVhciBiaXRzIDcsIDI6MCAoQi0tLSAtQ0FNKQorCW9ycglyMCwgcjAsICMweDAwMDAwMDAyCUAgc2V0IGJpdCAyIChBKSBBbGlnbgorCW9ycglyMCwgcjAsICMweDAwMDAxMDAwCUAgc2V0IGJpdCAxMiAoSSkgSS1DYWNoZQorCW1jcglwMTUsIDAsIHIwLCBjMSwgYzAsIDAKKworCisJLyoKKwkgKiBiZWZvcmUgcmVsb2NhdGluZywgd2UgaGF2ZSB0byBzZXR1cCBSQU0gdGltaW5nCisJICogYmVjYXVzZSBtZW1vcnkgdGltaW5nIGlzIGJvYXJkLWRlcGVuZGVuZCwgeW91IHdpbGwKKwkgKiBmaW5kIGEgbWVtc2V0dXAuUyBpbiB5b3VyIGJvYXJkIGRpcmVjdG9yeS4KKwkgKi8KKwltb3YJaXAsIGxyCisJYmwJbWVtc2V0dXAKKwltb3YJbHIsIGlwCisKKwltb3YJcGMsIGxyCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogSW50ZXJydXB0IGhhbmRsaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitACitAIElSUSBzdGFjayBmcmFtZS4KK0AKKyNkZWZpbmUgU19GUkFNRV9TSVpFCTcyCisKKyNkZWZpbmUgU19PTERfUjAJNjgKKyNkZWZpbmUgU19QU1IJCTY0CisjZGVmaW5lIFNfUEMJCTYwCisjZGVmaW5lIFNfTFIJCTU2CisjZGVmaW5lIFNfU1AJCTUyCisKKyNkZWZpbmUgU19JUAkJNDgKKyNkZWZpbmUgU19GUAkJNDQKKyNkZWZpbmUgU19SMTAJCTQwCisjZGVmaW5lIFNfUjkJCTM2CisjZGVmaW5lIFNfUjgJCTMyCisjZGVmaW5lIFNfUjcJCTI4CisjZGVmaW5lIFNfUjYJCTI0CisjZGVmaW5lIFNfUjUJCTIwCisjZGVmaW5lIFNfUjQJCTE2CisjZGVmaW5lIFNfUjMJCTEyCisjZGVmaW5lIFNfUjIJCTgKKyNkZWZpbmUgU19SMQkJNAorI2RlZmluZSBTX1IwCQkwCisKKyNkZWZpbmUgTU9ERV9TVkMgMHgxMworI2RlZmluZSBJX0JJVAkgMHg4MAorCisvKgorICogdXNlIGJhZF9zYXZlX3VzZXJfcmVncyBmb3IgYWJvcnQvcHJlZmV0Y2gvdW5kZWYvc3dpIC4uLgorICogdXNlIGlycV9zYXZlX3VzZXJfcmVncyAvIGlycV9yZXN0b3JlX3VzZXJfcmVncyBmb3IgSVJRL0ZJUSBoYW5kbGluZworICovCisKKwkubWFjcm8JYmFkX3NhdmVfdXNlcl9yZWdzCisJc3ViCXNwLCBzcCwgI1NfRlJBTUVfU0laRQorCXN0bWlhCXNwLCB7cjAgLSByMTJ9CQkJQCBDYWxsaW5nIHIwLXIxMgorCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKKwlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ0ZHX01BTExPQ19MRU4pCisJc3ViCXIyLCByMiwgIyhDRkdfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlsZG1pYQlyMiwge3IyIC0gcjN9CQkJQCBnZXQgcGMsIGNwc3IKKwlhZGQJcjAsIHNwLCAjU19GUkFNRV9TSVpFCQlAIHJlc3RvcmUgc3BfU1ZDCisKKwlhZGQJcjUsIHNwLCAjU19TUAorCW1vdglyMSwgbHIKKwlzdG1pYQlyNSwge3IwIC0gcjN9CQkJQCBzYXZlIHNwX1NWQywgbHJfU1ZDLCBwYywgY3BzcgorCW1vdglyMCwgc3AKKwkuZW5kbQorCisJLm1hY3JvCWlycV9zYXZlX3VzZXJfcmVncworCXN1YglzcCwgc3AsICNTX0ZSQU1FX1NJWkUKKwlzdG1pYQlzcCwge3IwIC0gcjEyfQkJCUAgQ2FsbGluZyByMC1yMTIKKwlhZGQgICAgIHI4LCBzcCwgI1NfUEMKKwlzdG1kYiAgIHI4LCB7c3AsIGxyfV4gICAgICAgICAgICAgICAgICAgQCBDYWxsaW5nIFNQLCBMUgorCXN0ciAgICAgbHIsIFtyOCwgIzBdICAgICAgICAgICAgICAgICAgICBAIFNhdmUgY2FsbGluZyBQQworCW1ycyAgICAgcjYsIHNwc3IKKwlzdHIgICAgIHI2LCBbcjgsICM0XSAgICAgICAgICAgICAgICAgICAgQCBTYXZlIENQU1IKKwlzdHIgICAgIHIwLCBbcjgsICM4XSAgICAgICAgICAgICAgICAgICAgQCBTYXZlIE9MRF9SMAorCW1vdglyMCwgc3AKKwkuZW5kbQorCisJLm1hY3JvCWlycV9yZXN0b3JlX3VzZXJfcmVncworCWxkbWlhCXNwLCB7cjAgLSBscn1eCQkJQCBDYWxsaW5nIHIwIC0gbHIKKwltb3YJcjAsIHIwCisJbGRyCWxyLCBbc3AsICNTX1BDXQkJCUAgR2V0IFBDCisJYWRkCXNwLCBzcCwgI1NfRlJBTUVfU0laRQorCXN1YnMJcGMsIGxyLCAjNAkJCUAgcmV0dXJuICYgbW92ZSBzcHNyX3N2YyBpbnRvIGNwc3IKKwkuZW5kbQorCisJLm1hY3JvIGdldF9iYWRfc3RhY2sKKwlsZHIJcjEzLCBfYXJtYm9vdF9zdGFydAkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjaworCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1RBQ0tTSVpFK0NGR19NQUxMT0NfTEVOKQorCXN1YglyMTMsIHIxMywgIyhDRkdfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisKKwlzdHIJbHIsIFtyMTNdCQkJQCBzYXZlIGNhbGxlciBsciAvIHNwc3IKKwltcnMJbHIsIHNwc3IKKwlzdHIgICAgIGxyLCBbcjEzLCAjNF0KKworCW1vdglyMTMsICNNT0RFX1NWQwkJCUAgcHJlcGFyZSBTVkMtTW9kZQorCUAgbXNyCXNwc3JfYywgcjEzCisJbXNyCXNwc3IsIHIxMworCW1vdglsciwgcGMKKwltb3ZzCXBjLCBscgorCS5lbmRtCisKKwkubWFjcm8gZ2V0X2lycV9zdGFjawkJCUAgc2V0dXAgSVJRIHN0YWNrCisJbGRyCXNwLCBJUlFfU1RBQ0tfU1RBUlQKKwkuZW5kbQorCisJLm1hY3JvIGdldF9maXFfc3RhY2sJCQlAIHNldHVwIEZJUSBzdGFjaworCWxkcglzcCwgRklRX1NUQUNLX1NUQVJUCisJLmVuZG0KKworLyoKKyAqIGV4Y2VwdGlvbiBoYW5kbGVycworICovCisJLmFsaWduICA1Cit1bmRlZmluZWRfaW5zdHJ1Y3Rpb246CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24KKworCS5hbGlnbgk1Citzb2Z0d2FyZV9pbnRlcnJ1cHQ6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19zb2Z0d2FyZV9pbnRlcnJ1cHQKKworCS5hbGlnbgk1CitwcmVmZXRjaF9hYm9ydDoKKwlnZXRfYmFkX3N0YWNrCisJYmFkX3NhdmVfdXNlcl9yZWdzCisJYmwgCWRvX3ByZWZldGNoX2Fib3J0CisKKwkuYWxpZ24JNQorZGF0YV9hYm9ydDoKKwlnZXRfYmFkX3N0YWNrCisJYmFkX3NhdmVfdXNlcl9yZWdzCisJYmwgCWRvX2RhdGFfYWJvcnQKKworCS5hbGlnbgk1Citub3RfdXNlZDoKKwlnZXRfYmFkX3N0YWNrCisJYmFkX3NhdmVfdXNlcl9yZWdzCisJYmwgCWRvX25vdF91c2VkCisKKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorCisJLmFsaWduCTUKK2lycToKKwlnZXRfaXJxX3N0YWNrCisJaXJxX3NhdmVfdXNlcl9yZWdzCisJYmwgCWRvX2lycQorCWlycV9yZXN0b3JlX3VzZXJfcmVncworCisJLmFsaWduCTUKK2ZpcToKKwlnZXRfZmlxX3N0YWNrCisJLyogc29tZW9uZSBvdWdodCB0byB3cml0ZSBhIG1vcmUgZWZmaWN0aW9uIGZpcV9zYXZlX3VzZXJfcmVncyAqLworCWlycV9zYXZlX3VzZXJfcmVncworCWJsIAlkb19maXEKKwlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKKworI2Vsc2UKKworCS5hbGlnbgk1CitpcnE6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19pcnEKKworCS5hbGlnbgk1CitmaXE6CisJZ2V0X2JhZF9zdGFjaworCWJhZF9zYXZlX3VzZXJfcmVncworCWJsIAlkb19maXEKKworI2VuZGlmCisKKwkuYWxpZ24JNQorLmdsb2JsIHJlc2V0X2NwdQorcmVzZXRfY3B1OgorCW1vdiAgICAgaXAsICMwCisJbWNyICAgICBwMTUsIDAsIGlwLCBjNywgYzcsIDAgICAgICAgICAgIEAgaW52YWxpZGF0ZSBjYWNoZQorCW1jciAgICAgcDE1LCAwLCBpcCwgYzgsIGM3LCAwICAgICAgICAgICBAIGZsdXNoIFRMQiAodjQpCisJbXJjICAgICBwMTUsIDAsIGlwLCBjMSwgYzAsIDAgICAgICAgICAgIEAgZ2V0IGN0cmwgcmVnaXN0ZXIKKwliaWMgICAgIGlwLCBpcCwgIzB4MDAwZiAgICAgICAgICAgICAgICAgQCAuLi4uLi4uLi4uLi53Y2FtCisJYmljICAgICBpcCwgaXAsICMweDIxMDAgICAgICAgICAgICAgICAgIEAgLi52Li4uLnMuLi4uLi4uLgorCW1jciAgICAgcDE1LCAwLCBpcCwgYzEsIGMwLCAwICAgICAgICAgICBAIGN0cmwgcmVnaXN0ZXIKKwltb3YgICAgIHBjLCByMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0FkZGVyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQWRkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWE4MmM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL0FkZGVyLmgKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXJhYmVsbGEgU29mdHdhcmUgTHRkLgorICogWXVsaSBCYXJjb2hlbiA8eXVsaUBhcmFiZWxsYXN3LmNvbT4KKyAqCisgKiBTdXBwb3J0IGZvciBBbmFsb2d1ZSZNaWNybyBBZGRlciBib2FyZHMgZmFtaWx5LgorICogVGVzdGVkIG9uIEFkZGVySUkgYW5kIEFkZGVyODd4LgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisjaWYgIWRlZmluZWQoQ09ORklHX01QQzg3NSkgJiYgIWRlZmluZWQoQ09ORklHX01QQzg1MlQpCisjZGVmaW5lIENPTkZJR19NUEM4NzUKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19BRERFUgkJCQkvKiBBbmFsb2d1ZSZNaWNybyBBZGRlciBib2FyZAkqLworCisjZGVmaW5lCUNPTkZJR184eHhfQ09OU19TTUMxCTEJCS8qIENvbnNvbGUgaXMgb24gU01DMQkJKi8KKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkzODQwMAorCisjZGVmaW5lCUNPTkZJR19GRUNfRU5FVAkJCQkvKiBFdGhlcm5ldCBpcyBvbiBGRUMJCSovCisjaWZkZWYgIENPTkZJR19GRUNfRU5FVAorI2RlZmluZSBDRkdfRElTQ09WRVJfUEhZCisjZGVmaW5lIEZFQ19FTkVUCisjZW5kaWYgLyogQ09ORklHX0ZFQ19FTkVUICovCisKKyNkZWZpbmUgQ09ORklHXzh4eF9PU0NMSwkxMDAwMDAwMAkvKiAxMCBNSHogb3NjaWxsYXRvciBvbiBFWFRDTEsgICovCisKKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCQkoQ09ORklHX0NNRF9ERkwgIFwKKwkJCQl8IENGR19DTURfREhDUCAgIFwKKwkJCQl8IENGR19DTURfSU1NQVAgIFwKKwkJCQl8IENGR19DTURfTUlJICAgIFwKKwkJCQl8IENGR19DTURfUElORyAgIFwKKwkJCQkpCisKKy8qIFRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKi8KKyNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUJCS8qIEF1dG9ib290IGFmdGVyIDUgc2Vjb25kcwkqLworI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RtIGZlMDQwMDAwIgkvKiBBdXRvYm9vdCBjb21tYW5kCSovCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJInJvb3Q9L2Rldi9tdGRibG9jazIgcnciCisKKyNkZWZpbmUgQ09ORklHX0JaSVAyCQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzZWQgaW1hZ2VzICAqLworI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJLyogRGlzYWJsZSBwbGF0Zm9ybSBzcGVjaWZpYyB3YXRjaGRvZwkJKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucworICovCisjZGVmaW5lIENGR19QUk9NUFQJCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCisjZGVmaW5lIENGR19IVVNIX1BBUlNFUgorI2RlZmluZSBDRkdfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKyNkZWZpbmUgQ0ZHX0xPTkdIRUxQCQkJCS8qICN1bmRlZiB0byBzYXZlIG1lbW9yeQkqLworI2RlZmluZSBDRkdfQ0JTSVpFCQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCisjZGVmaW5lIENGR19QQlNJWkUgKENGR19DQlNJWkUgKyBzaXplb2YoQ0ZHX1BST01QVCkgKyAxNikgIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkxNgkJLyogTWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKworI2RlZmluZSBDRkdfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBEZWZhdWx0IGxvYWQgYWRkcmVzcwkJKi8KKworI2RlZmluZSBDRkdfSFoJCQkxMDAwCQkvKiBEZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzCSovCisKKyNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwIH0KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUkFNIGNvbmZpZ3VyYXRpb24gKG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBtdXN0IGJlIHplcm8pCisgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX1NEUkFNX1NJWkUJCTB4MDA4MDAwMDAJLyogOCBNYnl0ZQkJCSovCisKKyNkZWZpbmUgQ0ZHX09SMV9QUkVMSU0gIAkoMHhGRjgwMDAwMCB8IE9SX0NTTlRfU0FNIHwgT1JfQUNTX0RJVjIpCisjZGVmaW5lIENGR19CUjFfUFJFTElNICAJKENGR19TRFJBTV9CQVNFIHwgQlJfUFNfMzIgfCBCUl9NU19VUE1BIHwgQlJfVikKKworI2RlZmluZSBDRkdfTUFNUgkJMHgwMDgwMjExNAorCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkJKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwNzAwMDAwCS8qIDEgLi4uIDcgTUIgaW4gU0RSQU0JCSovCisKKyNkZWZpbmUgQ0ZHX1JFU0VUX0FERFJFU1MJMHgwOTkwMDAwMAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBGb3IgYm9vdGluZyBMaW51eCwgdGhlIGJvYXJkIGluZm8gYW5kIGNvbW1hbmQgbGluZSBkYXRhCisgKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCA4IE1CIG9mIG1lbW9yeSwgc2luY2UgdGhpcyBpcworICogdGhlIG1heGltdW0gbWFwcGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICovCisjZGVmaW5lIENGR19CT09UTUFQU1oJCSg4IDw8IDIwKQkvKiBJbml0aWFsIE1lbW9yeSBtYXAgZm9yIExpbnV4ICovCisKKyNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQlURVhUX0JBU0UKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkoMTkyIDw8IDEwKQkvKiBSZXNlcnZlIDE5MiBLQiBmb3IgTW9uaXRvciAgICovCisjaWZkZWYgQ09ORklHX0JaSVAyCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMjUwMCA8PCAxMCkJLyogUmVzZXJ2ZSB+Mi41IE1CIGZvciBtYWxsb2MoKSAqLworI2Vsc2UKKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSgxMjggPDwgMTApCS8qIFJlc2VydmUgMTI4IEtCIGZvciBtYWxsb2MoKSAgKi8KKyNlbmRpZiAvKiBDT05GSUdfQlpJUDIgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRmxhc2ggb3JnYW5pc2F0aW9uCisgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCTB4RkUwMDAwMDAKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSQkJCQkvKiBUaGUgZmxhc2ggaXMgQ0ZJIGNvbXBhdGlibGUgICovCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCQkJLyogVXNlIGNvbW1vbiBDRkkgZHJpdmVyICAgICAgICAqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEJCS8qIE1heCBudW1iZXIgb2YgZmxhc2ggYmFua3MJKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTEyOAkJLyogTWF4IG51bSBvZiBzZWN0cyBvbiBvbmUgY2hpcCAqLworCisvKiBFbnZpcm9ubWVudCBpcyBpbiBmbGFzaCAqLworI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4MTAwMDAgCS8qIFdlIHVzZSBvbmUgY29tcGxldGUgc2VjdG9yCSovCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyBDRkdfTU9OSVRPUl9MRU4pCisKKyNkZWZpbmUgQ0ZHX09SMF9QUkVMSU0JCTB4RkYwMDA3NzQKKyNkZWZpbmUgQ0ZHX0JSMF9QUkVMSU0JCShDRkdfRkxBU0hfQkFTRSB8IEJSX1BTXzE2IHwgQlJfTVNfR1BDTSB8IEJSX1YpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEludGVybmFsIE1lbW9yeSBNYXAgUmVnaXN0ZXIKKyAqLworI2RlZmluZSBDRkdfSU1NUgkJMHhGRjAwMDAwMAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQorICovCisjZGVmaW5lIENGR19JTklUX1JBTV9BRERSCUNGR19JTU1SCisjZGVmaW5lIENGR19JTklUX1JBTV9FTkQJMHgyRjAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOCAgLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENGR19HQkxfREFUQV9PRkZTRVQJKENGR19JTklUX1JBTV9FTkQgLSBDRkdfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ0ZHX0lOSVRfU1BfT0ZGU0VUCUNGR19HQkxfREFUQV9PRkZTRVQKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqLworI2lmZGVmIENPTkZJR19XQVRDSERPRworI2RlZmluZSBDRkdfU1lQQ1IJCShTWVBDUl9TV1RDIHwgU1lQQ1JfQk1UIHwgU1lQQ1JfQk1FICB8IFwKKwkJCQkgU1lQQ1JfU1dGICB8IFNZUENSX1NXRSB8IFNZUENSX1NXUkkgfCBcCisJCQkJIFNZUENSX1NXUCkKKyNlbHNlCisjZGVmaW5lIENGR19TWVBDUgkJKFNZUENSX1NXVEMgfCBTWVBDUl9CTVQgfCBTWVBDUl9CTUUgIHwgXAorCQkJCSBTWVBDUl9TV0YgIHwgU1lQQ1JfU1dQKQorI2VuZGlmIC8qIENPTkZJR19XQVRDSERPRyAqLworCisjZGVmaW5lIENGR19TSVVNQ1IJCShTSVVNQ1JfTUxSQzAxIHwgU0lVTUNSX0RCR0MxMSkKKworLyogVEJTQ1IgLSBUaW1lIEJhc2UgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIENGR19UQlNDUgkJKFRCU0NSX1RCRiB8IFRCU0NSX1RCRSkKKworLyogUElTQ1IgLSBQZXJpb2RpYyBJbnRlcnJ1cHQgU3RhdHVzIGFuZCBDb250cm9sICovCisjZGVmaW5lIENGR19QSVNDUiAgICAgICAJKFBJU0NSX1BTIHwgUElTQ1JfUElURikKKworLyogUExQUkNSIC0gUExMLCBMb3ctUG93ZXIsIGFuZCBSZXNldCBDb250cm9sIFJlZ2lzdGVyICovCisvKiAjZGVmaW5lIENGR19QTFBSQ1IgICAgICAJUExQUkNSX1RFWFBTICovCisKKy8qIFNDQ1IgLSBTeXN0ZW0gQ2xvY2sgYW5kIHJlc2V0IENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU0NDUl9NQVNLICAgICAgIAlTQ0NSX0VCREYxMQorI2RlZmluZSBDRkdfU0NDUgkJU0NDUl9SVFNFTAorCisjZGVmaW5lIENGR19ERVIgICAgICAgICAJMAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDYWNoZSBDb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSVpFCTE2CS8qIEZvciBhbGwgTVBDOHh4IGNoaXBzCQkJKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSW50ZXJuYWwgRGVmaW5pdGlvbnMKKyAqCisgKiBCb290IEZsYWdzCisgKi8KKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkJMHgwMQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBmbGFzaAkqLworI2RlZmluZSBCT09URkxBR19XQVJNCQkweDAyCS8qIFNvZnR3YXJlIHJlYm9vdAkJCSovCisKKyNlbmRpZiAvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXgxYWRzLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXgxYWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ0YWIyYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9teDFhZHMuaApAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIGluY2x1ZGUvY29uZmlncy9teDFhZHMuaAorICogCisgKiAoYykgQ29weXJpZ2h0IDIwMDQKKyAqIFRlY2h3YXJlIEluZm9ybWF0aW9uIFRlY2hub2xvZ3ksIEluYy4KKyAqIGh0dHA6Ly93d3cudGVjaHdhcmUuY29tLnR3LworICoKKyAqIE1pbmctTGVuIFd1IDxtaW5nbGVuX3d1QHRlY2h3YXJlLmNvbS50dz4KKyAqCisgKiBUaGlzIGlzIHRoZSBDb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIE1vdG9yb2xhIE1YMUFEUyBib2FyZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIElmIHdlIGFyZSBkZXZlbG9waW5nLCB3ZSBtaWdodCB3YW50IHRvIHN0YXJ0IGFybWJvb3QgZnJvbSByYW0KKyAqIHNvIHdlIE1VU1QgTk9UIGluaXRpYWxpemUgY3JpdGljYWwgcmVncyBsaWtlIG1lbS10aW1pbmcgLi4uCisgKi8KKyNkZWZpbmUgQ09ORklHX0lOSVRfQ1JJVElDQUwJCS8qIHVuZGVmIGZvciBkZXZlbG9waW5nICovCisKKy8qCisgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucworICogKGVhc3kgdG8gY2hhbmdlKQorICovCisjZGVmaW5lIENPTkZJR19BUk05MjBUCQkxCS8qIFRoaXMgaXMgYW4gQVJNOTIwVCBDb3JlCQkqLworI2RlZmluZQlDT05GSUdfTUM5MzI4CQkxCS8qIEl0J3MgYSBNb3Rvcm9sYSBNQzkzMjggU29DIAkJKi8KKyNkZWZpbmUgQ09ORklHX01YMUFEUwkJMQkvKiBvbiBhIE1vdG9yb2xhIE1YMUFEUyBCb2FyZCAgCQkqLworCisjZGVmaW5lIEJPQVJEX0xBVEVfSU5JVAkJMSAKKworCisjZGVmaW5lIFVTRV85MjBUX01NVQkJMQorI3VuZGVmIENPTkZJR19VU0VfSVJRCQkJLyogd2UgZG9uJ3QgbmVlZCBJUlEvRklRIHN0dWZmIAkJKi8KKworI2lmIDAgCisjZGVmaW5lIENGR19NWDFfR1BDUgkJMHgwMDAwMDNBQgkvKiBmb3IgTVgxQURTIDBMNDROCQkqLworI2RlZmluZSBDRkdfTVgxX0dQQ1IJCTB4MDAwMDAzQUIJLyogZm9yIE1YMUFEUyAwTDQ0TgkJKi8KKyNkZWZpbmUgQ0ZHX01YMV9HUENSCQkweDAwMDAwM0FCCS8qIGZvciBNWDFBRFMgMEw0NE4JCSovCisjZW5kaWYgCisKKy8qCisgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKKyAqLworCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoQ0ZHX0VOVl9TSVpFICsgMTI4KjEwMjQpCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KKworLyoKKyAqICBDUzg5MDAgRXRoZXJuZXQgZHJpdmVycworICovCisjZGVmaW5lIENPTkZJR19EUklWRVJfQ1M4OTAwCTEJLyogd2UgaGF2ZSBhIENTODkwMCBvbi1ib2FyZCAqLworI2RlZmluZSBDUzg5MDBfQkFTRQkJMHgxNTAwMDMwMAorI2RlZmluZSBDUzg5MDBfQlVTMTYJCTEgCS8qIHRoZSBMaW51eCBkcml2ZXIgZG9lcyBhY2Nlc3NlcyBhcyBzaG9ydHMgKi8KKworLyoKKyAqIHNlbGVjdCBzZXJpYWwgY29uc29sZSBjb25maWd1cmF0aW9uCisgKi8KKworI2RlZmluZSBDT05GSUdfVUFSVDEgCQkxIAorLyogI2RlZmluZSBDT05GSUdfVUFSVDIJCTEJKi8KKworI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvbW1hbmQgZGVmaW5pdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIENPTkZJR19DT01NQU5EUyBcCisJCQkoQ09ORklHX0NNRF9ERkwJIHwgXAorCQkJQ0ZHX0NNRF9DQUNIRQkgfCBcCisJCQkvKkNGR19DTURfTkFORAkgfCovIFwKKwkJCS8qQ0ZHX0NNRF9FRVBST00gfCovIFwKKwkJCS8qQ0ZHX0NNRF9JMkMJIHwqLyBcCisJCQkvKkNGR19DTURfVVNCCSB8Ki8gXAorCQkJQ0ZHX0NNRF9SRUdJTkZPICB8IFwKKwkJCUNGR19DTURfRUxGKSAgCisKKy8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KKyNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMKKyNkZWZpbmUgQ09ORklHX0JPT1RBUkdTICAgIAkicm9vdD0vZGV2L2RvY2JwIG1lbT00OE0iIAorI2RlZmluZSBDT05GSUdfRVRIQUREUgkJMDg6MDA6M2U6MjY6MGE6NWMKKyNkZWZpbmUgQ09ORklHX05FVE1BU0sgICAgICAgICAgMjU1LjI1NS4yNTUuMAorI2RlZmluZSBDT05GSUdfSVBBRERSCQkxOTIuMTY4LjAuMjIKKyNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjAuMTEKKyNkZWZpbmUgQ09ORklHX0JPT1RGSUxFCQkibXgxYWRzIgorLyojZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkidGZ0cDsgYm9vdG0iICovCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2RlZmluZSBDT05GSUdfS0dEQl9CQVVEUkFURQkxMTUyMDAJCS8qIHNwZWVkIHRvIHJ1biBrZ2RiIHNlcmlhbCBwb3J0ICovCisJCQkJCQkvKiB3aGF0J3MgdGhpcyA/IGl0J3Mgbm90IHVzZWQgYW55d2hlcmUgKi8KKyNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTEJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLworI2VuZGlmCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyAKKyNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSICAgICAgICAgMQorI2RlZmluZSBDRkdfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKyAKKyNkZWZpbmUJQ0ZHX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLworCisjaWZkZWYgQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19QUk9NUFQJCSJNWDFBRFMkICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2Vsc2UKKyNkZWZpbmUgQ0ZHX1BST01QVAkJIk1YMUFEUz0+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2VuZGlmCisKKyNkZWZpbmUJQ0ZHX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZQlDRkdfUEJTSVpFIAkJKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAKKwkJCQkJCS8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lCUNGR19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDA5MDAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDBBRjAwMDAwCS8qIDYzIE1CIGluIERSQU0JKi8KKworI3VuZGVmICBDRkdfQ0xLU19JTl9IWgkJCQkvKiBldmVyeXRoaW5nLCBpbmNsIGJvYXJkIGluZm8sIGluIEh6ICovCisKKyNkZWZpbmUJQ0ZHX0xPQURfQUREUgkJMHgwODgwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLworCisKKyNkZWZpbmUJQ0ZHX0haCQkJMTAwMAorCisvKiB2YWxpZCBiYXVkcmF0ZXMgKi8KKyNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwIH0KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU3RhY2sgc2l6ZXMKKyAqCisgKiBUaGUgc3RhY2sgc2l6ZXMgYXJlIHNldCB1cCBpbiBzdGFydC5TIHVzaW5nIHRoZSBzZXR0aW5ncyBiZWxvdworICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDEyOCoxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9JUlEJKDQqMTAyNCkJLyogSVJRIHN0YWNrICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfRklRCSg0KjEwMjQpCS8qIEZJUSBzdGFjayAqLworI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFBoeXNpY2FsIE1lbW9yeSBNYXAKKyAqLworIAorCisjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTEJICAgCS8qIHdlIGhhdmUgMSBiYW5rIG9mIFNEUkFNIAkqLworI2RlZmluZSBQSFlTX1NEUkFNXzEJCTB4MDgwMDAwMDAgCS8qIFNEUkFNICBvbiBDU0QwIAkJKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUJMHgwNDAwMDAwMCAJLyogNjQgTUIgCQkJKi8KKworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEJCS8qIDEgYmFuayBvZiBTeW5jRmxhc2ggCQkqLworI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHgwQzAwMDAwMCAJLyogU3luY0ZsYXNoIG9uIENTRDEgCQkqLworI2RlZmluZSBGTEFTSF9CQU5LX1NJWkUJCTB4MDEwMDAwMDAJLyogMTYgTUIgVG90YWwgCQkgCSovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgorICovCisKKworI2RlZmluZSBDT05GSUdfU1lOQ0ZMQVNICTEKKyNkZWZpbmUgUEhZU19GTEFTSF9TSVpFCQkweDAxMDAwMDAwCisjZGVmaW5lIENGR19NQVhfRkxBU0hfU0VDVAkoMTYpCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19GTEFTSF9CQVNFKzB4MDBmZjAwMDApCisgCisjZGVmaW5lCUNGR19FTlZfSVNfSU5fRkxBU0gJMQorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MGYwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IgKi8KKyNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJMHgxMDAwMDAKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZsYXNoLmggYi9pbmNsdWRlL2ZsYXNoLmgKaW5kZXggMTkwZWIxNy4uZGRiYTdlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mbGFzaC5oCisrKyBiL2luY2x1ZGUvZmxhc2guaApAQCAtMzcyLDYgKzM3Miw3IEBACiAKICNkZWZpbmUgRkxBU0hfRlVKTFY2NTAJMHgwMEI0CQkvKiBGdWppdHN1IE1CTSAyOUxWNjUwVUUvNjUxVUUJCSovCiAKKyNkZWZpbmUgRkxBU0hfTVQyOFM0TTE2TEMgMHgwMEI1CS8qIE1pY3JvbiBNVDI4UzRNMTZMQyAJCQkqLwogI2RlZmluZSBGTEFTSF9VTktOT1dOCTB4RkZGRgkJLyogdW5rbm93biBmbGFzaCB0eXBlCQkJKi8KIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21jOTMyOC5oIGIvaW5jbHVkZS9tYzkzMjguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWRiZjJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tYzkzMjguaApAQCAtMCwwICsxLDEyMjEgQEAKKy8qCisgKiBpbmNsdWRlL21jOTMyOC5oCisgKiAKKyAqIChjKSBDb3B5cmlnaHQgMjAwNAorICogVGVjaHdhcmUgSW5mb3JtYXRpb24gVGVjaG5vbG9neSwgSW5jLgorICogaHR0cDovL3d3dy50ZWNod2FyZS5jb20udHcvCisgKgorICogTWluZy1MZW4gV3UgPG1pbmdsZW5fd3VAdGVjaHdhcmUuY29tLnR3PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKworI2lmbmRlZiBfX01DOTMyOF9IX18KKyNkZWZpbmUgX19NQzkzMjhfSF9fCisKK3R5cGVkZWYJdm9sYXRpbGUgdW5zaWduZWQgbG9uZwlWVTMyOwordHlwZWRlZglWVTMyCSoJCVBfVlUzMjsKKworI2RlZmluZSBfX1JFRyh4KQkJKCooKHZvbGF0aWxlIHUzMiAqKSh4KSkpCisKKworLyoKKyAqIE1YMSBDaGlwIHNlbGVjdHMgJiBpbnRlcm5hbCBtZW1vcnkncyAKKyAqLworCisKKyNkZWZpbmUgTVgxX0RNSV9QSFlTIAkweDAwMDAwMDAwCS8qIGRvdWJsZSBtYXAgaW1hZ2UgCSovCisjZGVmaW5lIE1YMV9CUk9NX1BIWVMJMHgwMDEwMDAwMAkvKiBCb290c3RyYXBlIFJPTSAJKi8KKyNkZWZpbmUgTVgxX0VTUkFNX1BIWVMJMHgwMDMwMDAwMAkvKiBFbWJlZGRlZCBTUkFNICgxMjhLQikqLworCisjZGVmaW5lIE1YMV9DU0QwX1BIWVMJMHgwODAwMDAwMAkvKiBDU0QwIDY0TUIgKFNEUkFNKSAJKi8KKyNkZWZpbmUgTVgxX0NTRDFfUEhZUwkweDBDMDAwMDAwCS8qIENTRDEgNjRNQiAoU0RSQU0pIAkqLworI2RlZmluZSBNWDFfQ1MwX1BIWVMJMHgxMDAwMDAwMAkvKiBDUzAgMzJNQiAoRmxhc2gpIAkqLworI2RlZmluZSBNWDFfQ1MxX1BIWVMJMHgxMjAwMDAwMAkvKiBDUzEgMTZNQiAoRmxhc2gpIAkqLworI2RlZmluZSBNWDFfQ1MyX1BIWVMJMHgxMzAwMDAwMAkvKiBDUzIgMTZNQiAoRXh0IFNSQU0pIAkqLworI2RlZmluZSBNWDFfQ1MzX1BIWVMJMHgxNDAwMDAwMAkvKiBDUzMgMTZNQiAoU3BhcmUpIAkqLworI2RlZmluZSBNWDFfQ1M0X1BIWVMJMHgxNTAwMDAwMAkvKiBDUzQgMTZNQiAoU3BhcmUpIAkqLworI2RlZmluZSBNWDFfQ1M1X1BIWVMJMHgxNjAwMDAwMAkvKiBDUzUgMTZNQiAoU3BhcmUpIAkqLworCisKKworLyoKKyAqIAlNWDEgV2F0Y2hkb2cgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfV0NSCQlfX1JFRygweDAwMjAxMDAwKSAgLyogV2F0Y2hkb2cgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1dTUgkJX19SRUcoMHgwMDIwMTAwNCkgIC8qIFdhdGNoZG9nIFNlcnZpY2UgUmVnaXN0ZXIJCSovCisjZGVmaW5lIE1YMV9XU1RSCV9fUkVHKDB4MDAyMDEwMDgpICAvKiBXYXRjaGRvZyBTdGF0dXMgUmVnaXN0ZXIgCQkqLworCisKKworLyoKKyAqCU1YMSBUaW1lciByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9UQ1RMMQlfX1JFRygweDAwMjAyMDAwKSAgLyogVGltZXIgMSBDb250cm9sIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1RQUkVSMQlfX1JFRygweDAwMjAyMDA0KSAgLyogVGltZXIgMSBQcmVzY2FsZXIgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9UQ01QMQlfX1JFRygweDAwMjAyMDA4KSAgLyogVGltZXIgMSBDb21wYXJlIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1RDUjEJX19SRUcoMHgwMDIwMjAwQykgIC8qIFRpbWVyIDEgQ2FwdHVyZSBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9UQ04xCV9fUkVHKDB4MDAyMDIwMTApICAvKiBUaW1lciAxIENvdW50ZXIgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfVFNUQVQxCV9fUkVHKDB4MDAyMDIwMTQpICAvKiBUaW1lciAxIFN0YXR1cyBSZWdpc3RlciAJCSovCisKKworI2RlZmluZSBNWDFfVENUTDIJX19SRUcoMHgwMDIwMzAwMCkgIC8qIFRpbWVyIDIgQ29udHJvbCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9UUFJFUjIJX19SRUcoMHgwMDIwMzAwNCkgIC8qIFRpbWVyIDIgUHJlc2NhbGVyIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVENNUDIJX19SRUcoMHgwMDIwMzAwOCkgIC8qIFRpbWVyIDIgQ29tcGFyZSBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9UQ1IyCV9fUkVHKDB4MDAyMDMwMEMpICAvKiBUaW1lciAyIENhcHR1cmUgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfVENOMglfX1JFRygweDAwMjAzMDEwKSAgLyogVGltZXIgMiBDb3VudGVyIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1RTVEFUMglfX1JFRygweDAwMjAzMDE0KSAgLyogVGltZXIgMiBTdGF0dXMgUmVnaXN0ZXIgCQkqLworCisKKworLyoKKyAqCU1YMSBSVEMgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfSE9VUk1JTglfX1JFRygweDAwMjA0MDAwKSAgLyogUlRDIEhvdXIgJiBNaW4gQ291bnRlciBSZWdpc3RlcnMgCSovCisjZGVmaW5lIE1YMV9TRUNPTkRTCV9fUkVHKDB4MDAyMDQwMDQpICAvKiBSVEMgU2Vjb25kcyBDb3VudGVyIFJlZ2lzdGVycyAJKi8KKyNkZWZpbmUgTVgxX0FMUk1fSE0JX19SRUcoMHgwMDIwNDAwOCkgIC8qIFJUQyBIb3VyICYgTWluIEFsYXJtIFJlZ2lzdGVycyAJKi8KKyNkZWZpbmUgTVgxX0FMUk1fU0VDCV9fUkVHKDB4MDAyMDQwMEMpICAvKiBSVEMgU2Vjb25kcyBBbGFybSBSZWdpc3RlcnMgCSovCisjZGVmaW5lIE1YMV9SQ0NUTAlfX1JFRygweDAwMjA0MDEwKSAgLyogUlRDIENvbnRyb2wgUmVnaXN0ZXJzCSAJKi8KKyNkZWZpbmUgTVgxX1JUQ0lTUglfX1JFRygweDAwMjA0MDE0KSAgLyogUlRDIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXJzIAkqLworI2RlZmluZSBNWDFfUlRDSUVOUglfX1JFRygweDAwMjA0MDE4KSAgLyogUlRDIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXJzIAkqLworI2RlZmluZSBNWDFfU1RQV0NICV9fUkVHKDB4MDAyMDQwMUMpICAvKiBSVEMgU3RvcHdhdGNoIE1pbnV0ZXMgUmVnaXN0ZXJzIAkqLworI2RlZmluZSBNWDFfREFZUglfX1JFRygweDAwMjA0MDIwKSAgLyogUlRDIERheXMgQ291bnRlciBSZWdpc3RlcnMgCSovCisjZGVmaW5lIE1YMV9EQVlBTEFSTQlfX1JFRygweDAwMjA0MDIwKSAgLyogUlRDIERheSBBbGFybSBSZWdpc3RlcnMgCQkqLworCisKKy8qCisgKglNWDEgTENEIENvbnRyb2xsZXIgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfU1NBCQlfX1JFRygweDAwMjA1MDAwKSAgLyogU2NyZWVuIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9TSVpFCV9fUkVHKDB4MDAyMDUwMDQpICAvKiBTaXplIFJlZ2lzdGVyIAkJCSovCisjZGVmaW5lIE1YMV9WUFcJCV9fUkVHKDB4MDAyMDUwMDgpICAvKiBWaXJ0dWFsIFBhZ2UgV2lkdGggUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUE9TCV9fUkVHKDB4MDAyMDUwMEMpICAvKiBMQ0QgQ3Vyc29yIFBvc2l0aW9uICBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0xDV0hCCV9fUkVHKDB4MDAyMDUwMTApICAvKiBMQ0QgQ3Vyc29yIFdpZHRoIEhlaWdodCAmIEJsaW5rIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTENIQ0MJX19SRUcoMHgwMDIwNTAxNCkgIC8qIExDRCBDb2xvciBDdXJzb3IgTWFwcGluZyBSZWdpc3RlciAqLworI2RlZmluZSBNWDFfUENSIAlfX1JFRygweDAwMjA1MDE4KSAgLyogTENEIFBhbmVsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9IQ1IgCV9fUkVHKDB4MDAyMDUwMUMpICAvKiBIb3Jpem9udGFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX1ZDUiAJX19SRUcoMHgwMDIwNTAyMCkgIC8qIFZlcnRpY2FsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9QT1MgCV9fUkVHKDB4MDAyMDUwMjQpICAvKiBQYW5uaW5nIE9mZnNldCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9MR1BNUiAJX19SRUcoMHgwMDIwNTAyOCkgIC8qIExDRCBHcmF5IFBhbGV0dGUgTWFwcGluZyBSZWdpc3RlciAqLworI2RlZmluZSBNWDFfUFdNUiAJX19SRUcoMHgwMDIwNTAyQykgIC8qIFBXTSBDb250cmFzdCBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfRE1BQ1IgCV9fUkVHKDB4MDAyMDUwMzApICAvKiBETUEgQ29udHJvbCBSZWdpc3RlcgkgCSovCisjZGVmaW5lIE1YMV9STUNSIAlfX1JFRygweDAwMjA1MDM0KSAgLyogUmVmcmVzaCBNb2RlIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX0xDRElDUiAJX19SRUcoMHgwMDIwNTAzOCkgIC8qIEludGVycnVwdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9MQ0RJU1IgCV9fUkVHKDB4MDAyMDUwNDApICAvKiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCQkqLworCisKKy8qCisgKglNWDEgVUFSVCByZWdpc3RlcnMKKyAqLworCisvKiBVQVJUIDEgKi8KKyNkZWZpbmUgTVgxX1VSWDBEXzEJX19SRUcoMHgwMDIwNjAwMCkgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciAwIAkqLworI2RlZmluZSBNWDFfVVJYMURfMQlfX1JFRygweDAwMjA2MDA0KSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDEgCSovCisjZGVmaW5lIE1YMV9VUlgyRF8xCV9fUkVHKDB4MDAyMDYwMDgpICAvKiBVQVJUIDEgUmVjZWl2ZXIgUmVnaXN0ZXIgMiAJKi8KKyNkZWZpbmUgTVgxX1VSWDNEXzEJX19SRUcoMHgwMDIwNjAwQykgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciAzIAkqLworI2RlZmluZSBNWDFfVVJYNERfMQlfX1JFRygweDAwMjA2MDEwKSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDQgCSovCisjZGVmaW5lIE1YMV9VUlg1RF8xCV9fUkVHKDB4MDAyMDYwMTQpICAvKiBVQVJUIDEgUmVjZWl2ZXIgUmVnaXN0ZXIgNSAJKi8KKyNkZWZpbmUgTVgxX1VSWDZEXzEJX19SRUcoMHgwMDIwNjAxOCkgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciA2IAkqLworI2RlZmluZSBNWDFfVVJYN0RfMQlfX1JFRygweDAwMjA2MDFDKSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDcgCSovCisjZGVmaW5lIE1YMV9VUlg4RF8xCV9fUkVHKDB4MDAyMDYwMjApICAvKiBVQVJUIDEgUmVjZWl2ZXIgUmVnaXN0ZXIgOCAJKi8KKyNkZWZpbmUgTVgxX1VSWDlEXzEJX19SRUcoMHgwMDIwNjAyNCkgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciA5IAkqLworI2RlZmluZSBNWDFfVVJYMTBEXzEJX19SRUcoMHgwMDIwNjAyOCkgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciAxMCAJKi8KKyNkZWZpbmUgTVgxX1VSWDExRF8xCV9fUkVHKDB4MDAyMDYwMkMpICAvKiBVQVJUIDEgUmVjZWl2ZXIgUmVnaXN0ZXIgMTEgCSovCisjZGVmaW5lIE1YMV9VUlgxMkRfMQlfX1JFRygweDAwMjA2MDMwKSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDEyCSovCisjZGVmaW5lIE1YMV9VUlgxM0RfMQlfX1JFRygweDAwMjA2MDM0KSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDEzCSovCisjZGVmaW5lIE1YMV9VUlgxNERfMQlfX1JFRygweDAwMjA2MDM4KSAgLyogVUFSVCAxIFJlY2VpdmVyIFJlZ2lzdGVyIDE0IAkqLworI2RlZmluZSBNWDFfVVJYMTVEXzEJX19SRUcoMHgwMDIwNjAzYykgIC8qIFVBUlQgMSBSZWNlaXZlciBSZWdpc3RlciAxNQkqLworCisKKyNkZWZpbmUgTVgxX1VUWDBEXzEJX19SRUcoMHgwMDIwNjA0MCkgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciAwIAkqLworI2RlZmluZSBNWDFfVVRYMURfMQlfX1JFRygweDAwMjA2MDQ0KSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDEgCSovCisjZGVmaW5lIE1YMV9VVFgyRF8xCV9fUkVHKDB4MDAyMDYwNDgpICAvKiBVQVJUIDEgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMiAJKi8KKyNkZWZpbmUgTVgxX1VUWDNEXzEJX19SRUcoMHgwMDIwNjA0QykgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciAzIAkqLworI2RlZmluZSBNWDFfVVRYNERfMQlfX1JFRygweDAwMjA2MDUwKSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDQgCSovCisjZGVmaW5lIE1YMV9VVFg1RF8xCV9fUkVHKDB4MDAyMDYwNTQpICAvKiBVQVJUIDEgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgNSAJKi8KKyNkZWZpbmUgTVgxX1VUWDZEXzEJX19SRUcoMHgwMDIwNjA1OCkgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciA2IAkqLworI2RlZmluZSBNWDFfVVRYN0RfMQlfX1JFRygweDAwMjA2MDVDKSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDcgCSovCisjZGVmaW5lIE1YMV9VVFg4RF8xCV9fUkVHKDB4MDAyMDYwNjApICAvKiBVQVJUIDEgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgOCAJKi8KKyNkZWZpbmUgTVgxX1VUWDlEXzEJX19SRUcoMHgwMDIwNjA2NCkgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciA5IAkqLworI2RlZmluZSBNWDFfVVRYMTBEXzEJX19SRUcoMHgwMDIwNjA2OCkgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciAxMCAJKi8KKyNkZWZpbmUgTVgxX1VUWDExRF8xCV9fUkVHKDB4MDAyMDYwNkMpICAvKiBVQVJUIDEgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMTEgCSovCisjZGVmaW5lIE1YMV9VVFgxMkRfMQlfX1JFRygweDAwMjA2MDYwKSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDEyCSovCisjZGVmaW5lIE1YMV9VVFgxM0RfMQlfX1JFRygweDAwMjA2MDc0KSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDEzCSovCisjZGVmaW5lIE1YMV9VVFgxNERfMQlfX1JFRygweDAwMjA2MDc4KSAgLyogVUFSVCAxIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDE0IAkqLworI2RlZmluZSBNWDFfVVRYMTVEXzEJX19SRUcoMHgwMDIwNjA3YykgIC8qIFVBUlQgMSBUcmFuc21pdHRlciBSZWdpc3RlciAxNQkqLworCisjZGVmaW5lIE1YMV9VQ1IxXzEJX19SRUcoMHgwMDIwNjA4MCkgIC8qIFVBUlQgMSBDb250cm9sIFJlZ2lzdGVyIDEJCSovCisjZGVmaW5lIE1YMV9VQ1IyXzEJX19SRUcoMHgwMDIwNjA4NCkgIC8qIFVBUlQgMSBDb250cm9sIFJlZ2lzdGVyIDIJCSovCisjZGVmaW5lIE1YMV9VQ1IzXzEJX19SRUcoMHgwMDIwNjA4OCkgIC8qIFVBUlQgMSBDb250cm9sIFJlZ2lzdGVyIDMJCSovCisjZGVmaW5lIE1YMV9VQ1I0XzEJX19SRUcoMHgwMDIwNjA4QykgIC8qIFVBUlQgMSBDb250cm9sIFJlZ2lzdGVyIDQJCSovCisjZGVmaW5lIE1YMV9VRkNSXzEJX19SRUcoMHgwMDIwNjA5MCkgIC8qIFVBUlQgMSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9VU1IxXzEJX19SRUcoMHgwMDIwNjA5NCkgIC8qIFVBUlQgMSBTdGF0dXMgIFJlZ2lzdGVyIDEJCSovCisjZGVmaW5lIE1YMV9VU1IyXzEJX19SRUcoMHgwMDIwNjA5OCkgIC8qIFVBUlQgMSBTdGF0dXMgIFJlZ2lzdGVyIDIJCSovCisjZGVmaW5lIE1YMV9VRVNDXzEJX19SRUcoMHgwMDIwNjA5QykgIC8qIFVBUlQgMSBFc2NhcGUgQ2hhcmFjdGVyIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVVRJTV8xCV9fUkVHKDB4MDAyMDYwQTApICAvKiBVQVJUIDEgRXNjYXBlIFRpbWVyIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVUJJUl8xCV9fUkVHKDB4MDAyMDYwQTQpICAvKiBVQVJUIDEgQlJNIEluY3JlbWVudGFsIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVUJNUl8xCV9fUkVHKDB4MDAyMDYwQTgpICAvKiBVQVJUIDEgQlJNIE1vZHVsYXRvciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VCUkNfMQlfX1JFRygweDAwMjA2MEFDKSAgLyogVUFSVCAxIEJhdWQgUmF0ZSBDb3VudCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0JJUFIxXzEJX19SRUcoMHgwMDIwNjBCMCkgIC8qIFVBUlQgMSBCUk0gSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDEJKi8KKyNkZWZpbmUgTVgxX0JJUFIyXzEJX19SRUcoMHgwMDIwNjBCNCkgIC8qIFVBUlQgMSBCUk0gSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDIJKi8KKyNkZWZpbmUgTVgxX0JJUFIzXzEJX19SRUcoMHgwMDIwNjBCOCkgIC8qIFVBUlQgMSBCUk0gSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDMJKi8KKyNkZWZpbmUgTVgxX0JJUFI0XzEJX19SRUcoMHgwMDIwNjBCQykgIC8qIFVBUlQgMSBCUk0gSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDQJKi8KKyNkZWZpbmUgTVgxX0JNUFIxXzEJX19SRUcoMHgwMDIwNjBDMCkgIC8qIFVBUlQgMSBCUk0gTW9kdWxhdG9yIFByZXNldCBSZWdpc3RlciAxCSovCisjZGVmaW5lIE1YMV9CTVBSMl8xCV9fUkVHKDB4MDAyMDYwQzQpICAvKiBVQVJUIDEgQlJNIE1vZHVsYXRvciBQcmVzZXQgUmVnaXN0ZXIgMgkqLworI2RlZmluZSBNWDFfQk1QUjNfMQlfX1JFRygweDAwMjA2MEM4KSAgLyogVUFSVCAxIEJSTSBNb2R1bGF0b3IgUHJlc2V0IFJlZ2lzdGVyIDMJKi8KKyNkZWZpbmUgTVgxX0JNUFI0XzEJX19SRUcoMHgwMDIwNjBDQykgIC8qIFVBUlQgMSBCUk0gTW9kdWxhdG9yIFByZXNldCBSZWdpc3RlciA0CSovCisjZGVmaW5lIE1YMV9VVFNfMQlfX1JFRygweDAwMjA2MEQwKSAgLyogVUFSVCAxIFRlc3QgUmVnaXN0ZXIgMQkgCSovCisKKworLyogVUFSVCAyICovCisjZGVmaW5lIE1YMV9VUlgwRF8yCV9fUkVHKDB4MDAyMDcwMDApICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgMCAJKi8KKyNkZWZpbmUgTVgxX1VSWDFEXzIJX19SRUcoMHgwMDIwNzAwNCkgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciAxIAkqLworI2RlZmluZSBNWDFfVVJYMkRfMglfX1JFRygweDAwMjA3MDA4KSAgLyogVUFSVCAyIFJlY2VpdmVyIFJlZ2lzdGVyIDIgCSovCisjZGVmaW5lIE1YMV9VUlgzRF8yCV9fUkVHKDB4MDAyMDcwMEMpICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgMyAJKi8KKyNkZWZpbmUgTVgxX1VSWDREXzIJX19SRUcoMHgwMDIwNzAxMCkgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciA0IAkqLworI2RlZmluZSBNWDFfVVJYNURfMglfX1JFRygweDAwMjA3MDE0KSAgLyogVUFSVCAyIFJlY2VpdmVyIFJlZ2lzdGVyIDUgCSovCisjZGVmaW5lIE1YMV9VUlg2RF8yCV9fUkVHKDB4MDAyMDcwMTgpICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgNiAJKi8KKyNkZWZpbmUgTVgxX1VSWDdEXzIJX19SRUcoMHgwMDIwNzAxQykgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciA3IAkqLworI2RlZmluZSBNWDFfVVJYOERfMglfX1JFRygweDAwMjA3MDIwKSAgLyogVUFSVCAyIFJlY2VpdmVyIFJlZ2lzdGVyIDggCSovCisjZGVmaW5lIE1YMV9VUlg5RF8yCV9fUkVHKDB4MDAyMDcwMjQpICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgOSAJKi8KKyNkZWZpbmUgTVgxX1VSWDEwRF8yCV9fUkVHKDB4MDAyMDcwMjgpICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgMTAgCSovCisjZGVmaW5lIE1YMV9VUlgxMURfMglfX1JFRygweDAwMjA3MDJDKSAgLyogVUFSVCAyIFJlY2VpdmVyIFJlZ2lzdGVyIDExIAkqLworI2RlZmluZSBNWDFfVVJYMTJEXzIJX19SRUcoMHgwMDIwNzAzMCkgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciAxMgkqLworI2RlZmluZSBNWDFfVVJYMTNEXzIJX19SRUcoMHgwMDIwNzAzNCkgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciAxMwkqLworI2RlZmluZSBNWDFfVVJYMTREXzIJX19SRUcoMHgwMDIwNzAzOCkgIC8qIFVBUlQgMiBSZWNlaXZlciBSZWdpc3RlciAxNCAJKi8KKyNkZWZpbmUgTVgxX1VSWDE1RF8yCV9fUkVHKDB4MDAyMDcwM2MpICAvKiBVQVJUIDIgUmVjZWl2ZXIgUmVnaXN0ZXIgMTUJKi8KKworCisjZGVmaW5lIE1YMV9VVFgwRF8yCV9fUkVHKDB4MDAyMDcwNDApICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMCAJKi8KKyNkZWZpbmUgTVgxX1VUWDFEXzIJX19SRUcoMHgwMDIwNzA0NCkgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciAxIAkqLworI2RlZmluZSBNWDFfVVRYMkRfMglfX1JFRygweDAwMjA3MDQ4KSAgLyogVUFSVCAyIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDIgCSovCisjZGVmaW5lIE1YMV9VVFgzRF8yCV9fUkVHKDB4MDAyMDcwNEMpICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMyAJKi8KKyNkZWZpbmUgTVgxX1VUWDREXzIJX19SRUcoMHgwMDIwNzA1MCkgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciA0IAkqLworI2RlZmluZSBNWDFfVVRYNURfMglfX1JFRygweDAwMjA3MDU0KSAgLyogVUFSVCAyIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDUgCSovCisjZGVmaW5lIE1YMV9VVFg2RF8yCV9fUkVHKDB4MDAyMDcwNTgpICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgNiAJKi8KKyNkZWZpbmUgTVgxX1VUWDdEXzIJX19SRUcoMHgwMDIwNzA1QykgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciA3IAkqLworI2RlZmluZSBNWDFfVVRYOERfMglfX1JFRygweDAwMjA3MDYwKSAgLyogVUFSVCAyIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDggCSovCisjZGVmaW5lIE1YMV9VVFg5RF8yCV9fUkVHKDB4MDAyMDcwNjQpICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgOSAJKi8KKyNkZWZpbmUgTVgxX1VUWDEwRF8yCV9fUkVHKDB4MDAyMDcwNjgpICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMTAgCSovCisjZGVmaW5lIE1YMV9VVFgxMURfMglfX1JFRygweDAwMjA3MDZDKSAgLyogVUFSVCAyIFRyYW5zbWl0dGVyIFJlZ2lzdGVyIDExIAkqLworI2RlZmluZSBNWDFfVVRYMTJEXzIJX19SRUcoMHgwMDIwNzA2MCkgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciAxMgkqLworI2RlZmluZSBNWDFfVVRYMTNEXzIJX19SRUcoMHgwMDIwNzA3NCkgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciAxMwkqLworI2RlZmluZSBNWDFfVVRYMTREXzIJX19SRUcoMHgwMDIwNzA3OCkgIC8qIFVBUlQgMiBUcmFuc21pdHRlciBSZWdpc3RlciAxNCAJKi8KKyNkZWZpbmUgTVgxX1VUWDE1RF8yCV9fUkVHKDB4MDAyMDcwN2MpICAvKiBVQVJUIDIgVHJhbnNtaXR0ZXIgUmVnaXN0ZXIgMTUJKi8KKworI2RlZmluZSBNWDFfVUNSMV8yCV9fUkVHKDB4MDAyMDcwODApICAvKiBVQVJUIDIgQ29udHJvbCBSZWdpc3RlciAxCQkqLworI2RlZmluZSBNWDFfVUNSMl8yCV9fUkVHKDB4MDAyMDcwODQpICAvKiBVQVJUIDIgQ29udHJvbCBSZWdpc3RlciAyCQkqLworI2RlZmluZSBNWDFfVUNSM18yCV9fUkVHKDB4MDAyMDcwODgpICAvKiBVQVJUIDIgQ29udHJvbCBSZWdpc3RlciAzCQkqLworI2RlZmluZSBNWDFfVUNSNF8yCV9fUkVHKDB4MDAyMDcwOEMpICAvKiBVQVJUIDIgQ29udHJvbCBSZWdpc3RlciA0CQkqLworI2RlZmluZSBNWDFfVUZDUl8yCV9fUkVHKDB4MDAyMDcwOTApICAvKiBVQVJUIDIgRklGTyBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVVNSMV8yCV9fUkVHKDB4MDAyMDcwOTQpICAvKiBVQVJUIDIgU3RhdHVzICBSZWdpc3RlciAxCQkqLworI2RlZmluZSBNWDFfVVNSMl8yCV9fUkVHKDB4MDAyMDcwOTgpICAvKiBVQVJUIDIgU3RhdHVzICBSZWdpc3RlciAyCQkqLworI2RlZmluZSBNWDFfVUVTQ18yCV9fUkVHKDB4MDAyMDcwOUMpICAvKiBVQVJUIDIgRXNjYXBlIENoYXJhY3RlciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VUSU1fMglfX1JFRygweDAwMjA3MEEwKSAgLyogVUFSVCAyIEVzY2FwZSBUaW1lciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VCSVJfMglfX1JFRygweDAwMjA3MEE0KSAgLyogVUFSVCAyIEJSTSBJbmNyZW1lbnRhbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VCTVJfMglfX1JFRygweDAwMjA3MEE4KSAgLyogVUFSVCAyIEJSTSBNb2R1bGF0b3IgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9VQlJDXzIJX19SRUcoMHgwMDIwNzBBQykgIC8qIFVBUlQgMiBCYXVkIFJhdGUgQ291bnQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CSVBSMV8yCV9fUkVHKDB4MDAyMDcwQjApICAvKiBVQVJUIDIgQlJNIEluY3JlbWVudGFsIFByZXNldCBSZWdpc3RlciAxCSovCisjZGVmaW5lIE1YMV9CSVBSMl8yCV9fUkVHKDB4MDAyMDcwQjQpICAvKiBVQVJUIDIgQlJNIEluY3JlbWVudGFsIFByZXNldCBSZWdpc3RlciAyCSovCisjZGVmaW5lIE1YMV9CSVBSM18yCV9fUkVHKDB4MDAyMDcwQjgpICAvKiBVQVJUIDIgQlJNIEluY3JlbWVudGFsIFByZXNldCBSZWdpc3RlciAzCSovCisjZGVmaW5lIE1YMV9CSVBSNF8yCV9fUkVHKDB4MDAyMDcwQkMpICAvKiBVQVJUIDIgQlJNIEluY3JlbWVudGFsIFByZXNldCBSZWdpc3RlciA0CSovCisjZGVmaW5lIE1YMV9CTVBSMV8yCV9fUkVHKDB4MDAyMDcwQzApICAvKiBVQVJUIDIgQlJNIE1vZHVsYXRvciBQcmVzZXQgUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfQk1QUjJfMglfX1JFRygweDAwMjA3MEM0KSAgLyogVUFSVCAyIEJSTSBNb2R1bGF0b3IgUHJlc2V0IFJlZ2lzdGVyIDIJKi8KKyNkZWZpbmUgTVgxX0JNUFIzXzIJX19SRUcoMHgwMDIwNzBDOCkgIC8qIFVBUlQgMiBCUk0gTW9kdWxhdG9yIFByZXNldCBSZWdpc3RlciAzCSovCisjZGVmaW5lIE1YMV9CTVBSNF8yCV9fUkVHKDB4MDAyMDcwQ0MpICAvKiBVQVJUIDIgQlJNIE1vZHVsYXRvciBQcmVzZXQgUmVnaXN0ZXIgNAkqLworI2RlZmluZSBNWDFfVVRTXzIJX19SRUcoMHgwMDIwNzBEMCkgIC8qIFVBUlQgMiBUZXN0IFJlZ2lzdGVyIDEJIAkqLworCisKKy8qCisgKglNWDEgUFdNIHJlZ2lzdGVycworICovCisKKyNkZWZpbmUgTVgxX1BXTUMJX19SRUcoMHgwMDIwODAwMCkgIC8qIFBXTSBDb250cm9sIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1BXTVMJX19SRUcoMHgwMDIwODAwNCkgIC8qIFBXTSBTYW1wbGUgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfUFdNUAlfX1JFRygweDAwMjA4MDA4KSAgLyogUFdNIFBlcmlvZCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9QV01DTlQJX19SRUcoMHgwMDIwODAwQykgIC8qIFBXTSBDb3VudGVyIFJlZ2lzdGVyIAkJKi8KKworCisKKy8qCisgKglNWDEgRE1BQyByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9EQ1IJCV9fUkVHKDB4MDAyMDkwMDApICAvKiBETUEgQ29udHJvbCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9ESVNSCV9fUkVHKDB4MDAyMDkwMDQpICAvKiBETUEgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RJTVIJX19SRUcoMHgwMDIwOTAwOCkgIC8qIERNQSBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RCVE9TUglfX1JFRygweDAwMjA5MDBDKSAgLyogRE1BIEJ1cnN0IFRpbWUtT3V0IFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RSVE9TUglfX1JFRygweDAwMjA5MDEwKSAgLyogRE1BIFJlcXVlc3QgVGltZS1PdXQgU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfRFNFU1IJX19SRUcoMHgwMDIwOTAxNCkgIC8qIERNQSBSZXF1ZXN0IFRpbWUtT3V0IFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RCT1NSCV9fUkVHKDB4MDAyMDkwMTgpICAvKiBETUEgQnVmZmVyIE92ZXJmbG93IFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RCVE9DUglfX1JFRygweDAwMjA5MDFDKSAgLyogRE1BIEJ1cnN0IFRpbWUtT3V0IENvbnRyb2wgUmVnaXN0ZXIgCSovCisKKyNkZWZpbmUgTVgxX1dTUkEJX19SRUcoMHgwMDIwOTA0MCkgIC8qIERNQSBXLVNpemUgUmVnaXN0ZXIgQSAJCSovCisjZGVmaW5lIE1YMV9YU1JBCV9fUkVHKDB4MDAyMDkwNDQpICAvKiBETUEgWC1TaXplIFJlZ2lzdGVyIEEgCQkqLworI2RlZmluZSBNWDFfWVNSQQlfX1JFRygweDAwMjA5MDQ4KSAgLyogRE1BIFktU2l6ZSBSZWdpc3RlciBBIAkJKi8KKworI2RlZmluZSBNWDFfV1NSQglfX1JFRygweDAwMjA5MDRDKSAgLyogRE1BIFctU2l6ZSBSZWdpc3RlciBCIAkJKi8KKyNkZWZpbmUgTVgxX1hTUkIJX19SRUcoMHgwMDIwOTA1MCkgIC8qIERNQSBYLVNpemUgUmVnaXN0ZXIgQiAJCSovCisjZGVmaW5lIE1YMV9ZU1JCCV9fUkVHKDB4MDAyMDkwNTQpICAvKiBETUEgWS1TaXplIFJlZ2lzdGVyIEIgCQkqLworCisvKiBDaGFubmVsIDAgKi8KKworI2RlZmluZSBNWDFfU0FSMAlfX1JFRygweDAwMjA5MDgwKSAgLyogQ2hhbm5lbCAwIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1YMV9EQVIwCV9fUkVHKDB4MDAyMDkwODQpICAvKiBDaGFubmVsIDAgRGVzdGluYXRpb24gQWRkcmVzcyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0NOVFIwCV9fUkVHKDB4MDAyMDkwODgpICAvKiBDaGFubmVsIDAgQ291bnQgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ0NSMAlfX1JFRygweDAwMjA5MDhDKSAgLyogQ2hhbm5lbCAwIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SU1NSMAlfX1JFRygweDAwMjA5MDkwKSAgLyogQ2hhbm5lbCAwIFJlcXVlc3QgU291cmNlIFNlbGVjdCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0JMUjAJX19SRUcoMHgwMDIwOTA5NCkgIC8qIENoYW5uZWwgMCBCdXJzdCBMZW5ndGggIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfUlRPUjAJX19SRUcoMHgwMDIwOTA5OCkgIC8qIENoYW5uZWwgMCBSZXF1ZXN0IFRpbWUtT3V0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQlVDUjAJX19SRUcoMHgwMDIwOTA5OCkgIC8qIENoYW5uZWwgMCBCdXMgVXRpbGl6YXRpb24gQ29udHJvbCBSZWdpc3RlciAJKi8KKworCisvKiBDaGFubmVsIDEgKi8KKworI2RlZmluZSBNWDFfU0FSMQlfX1JFRygweDAwMjA5MEMwKSAgLyogQ2hhbm5lbCAxIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1YMV9EQVIxCV9fUkVHKDB4MDAyMDkwQzQpICAvKiBDaGFubmVsIDEgRGVzdGluYXRpb24gQWRkcmVzcyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0NOVFIxCV9fUkVHKDB4MDAyMDkwQzgpICAvKiBDaGFubmVsIDEgQ291bnQgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ0NSMQlfX1JFRygweDAwMjA5MENDKSAgLyogQ2hhbm5lbCAxIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SU1NSMQlfX1JFRygweDAwMjA5MEQwKSAgLyogQ2hhbm5lbCAxIFJlcXVlc3QgU291cmNlIFNlbGVjdCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0JMUjEJX19SRUcoMHgwMDIwOTBENCkgIC8qIENoYW5uZWwgMSBCdXJzdCBMZW5ndGggIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfUlRPUjEJX19SRUcoMHgwMDIwOTBEOCkgIC8qIENoYW5uZWwgMSBSZXF1ZXN0IFRpbWUtT3V0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQlVDUjEJX19SRUcoMHgwMDIwOTBEOCkgIC8qIENoYW5uZWwgMSBCdXMgVXRpbGl6YXRpb24gQ29udHJvbCBSZWdpc3RlciAJKi8KKworCisvKiBDaGFubmVsIDIgKi8KKworI2RlZmluZSBNWDFfU0FSMglfX1JFRygweDAwMjA5MTAwKSAgLyogQ2hhbm5lbCAyIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1YMV9EQVIyCV9fUkVHKDB4MDAyMDkxMDQpICAvKiBDaGFubmVsIDIgRGVzdGluYXRpb24gQWRkcmVzcyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0NOVFIyCV9fUkVHKDB4MDAyMDkxMDgpICAvKiBDaGFubmVsIDIgQ291bnQgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ0NSMglfX1JFRygweDAwMjA5MTBDKSAgLyogQ2hhbm5lbCAyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SU1NSMglfX1JFRygweDAwMjA5MTEwKSAgLyogQ2hhbm5lbCAyIFJlcXVlc3QgU291cmNlIFNlbGVjdCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0JMUjIJX19SRUcoMHgwMDIwOTExNCkgIC8qIENoYW5uZWwgMiBCdXJzdCBMZW5ndGggIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfUlRPUjIJX19SRUcoMHgwMDIwOTExOCkgIC8qIENoYW5uZWwgMiBSZXF1ZXN0IFRpbWUtT3V0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQlVDUjIJX19SRUcoMHgwMDIwOTExOCkgIC8qIENoYW5uZWwgMiBCdXMgVXRpbGl6YXRpb24gQ29udHJvbCBSZWdpc3RlciAJKi8KKworCisKKy8qIENoYW5uZWwgMyAqLworCisjZGVmaW5lIE1YMV9TQVIzCV9fUkVHKDB4MDAyMDkxNDApICAvKiBDaGFubmVsIDMgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjMJX19SRUcoMHgwMDIwOTE0NCkgIC8qIENoYW5uZWwgMyBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjMJX19SRUcoMHgwMDIwOTE0OCkgIC8qIENoYW5uZWwgMyBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1IzCV9fUkVHKDB4MDAyMDkxNEMpICAvKiBDaGFubmVsIDMgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1IzCV9fUkVHKDB4MDAyMDkxNTApICAvKiBDaGFubmVsIDMgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSMwlfX1JFRygweDAwMjA5MTU0KSAgLyogQ2hhbm5lbCAzIEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SMwlfX1JFRygweDAwMjA5MTU4KSAgLyogQ2hhbm5lbCAzIFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSMwlfX1JFRygweDAwMjA5MTU4KSAgLyogQ2hhbm5lbCAzIEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgNCAqLworCisjZGVmaW5lIE1YMV9TQVI0CV9fUkVHKDB4MDAyMDkxODApICAvKiBDaGFubmVsIDQgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjQJX19SRUcoMHgwMDIwOTE4NCkgIC8qIENoYW5uZWwgNCBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjQJX19SRUcoMHgwMDIwOTE4OCkgIC8qIENoYW5uZWwgNCBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I0CV9fUkVHKDB4MDAyMDkxOEMpICAvKiBDaGFubmVsIDQgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I0CV9fUkVHKDB4MDAyMDkxOTApICAvKiBDaGFubmVsIDQgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSNAlfX1JFRygweDAwMjA5MTk0KSAgLyogQ2hhbm5lbCA0IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SNAlfX1JFRygweDAwMjA5MTk4KSAgLyogQ2hhbm5lbCA0IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSNAlfX1JFRygweDAwMjA5MTk4KSAgLyogQ2hhbm5lbCA0IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgNSAqLworCisjZGVmaW5lIE1YMV9TQVI1CV9fUkVHKDB4MDAyMDkxQzApICAvKiBDaGFubmVsIDUgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjUJX19SRUcoMHgwMDIwOTFDNCkgIC8qIENoYW5uZWwgNSBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjUJX19SRUcoMHgwMDIwOTFDOCkgIC8qIENoYW5uZWwgNSBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I1CV9fUkVHKDB4MDAyMDkxQ0MpICAvKiBDaGFubmVsIDUgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I1CV9fUkVHKDB4MDAyMDkxRDApICAvKiBDaGFubmVsIDUgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSNQlfX1JFRygweDAwMjA5MUQ0KSAgLyogQ2hhbm5lbCA1IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SNQlfX1JFRygweDAwMjA5MUQ4KSAgLyogQ2hhbm5lbCA1IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSNQlfX1JFRygweDAwMjA5MUQ4KSAgLyogQ2hhbm5lbCA1IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgNiAqLworCisjZGVmaW5lIE1YMV9TQVI2CV9fUkVHKDB4MDAyMDkyMDApICAvKiBDaGFubmVsIDYgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjYJX19SRUcoMHgwMDIwOTIwNCkgIC8qIENoYW5uZWwgNiBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjYJX19SRUcoMHgwMDIwOTIwOCkgIC8qIENoYW5uZWwgNiBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I2CV9fUkVHKDB4MDAyMDkyMEMpICAvKiBDaGFubmVsIDYgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I2CV9fUkVHKDB4MDAyMDkyMTApICAvKiBDaGFubmVsIDYgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSNglfX1JFRygweDAwMjA5MjE0KSAgLyogQ2hhbm5lbCA2IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SNglfX1JFRygweDAwMjA5MjE4KSAgLyogQ2hhbm5lbCA2IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSNglfX1JFRygweDAwMjA5MjE4KSAgLyogQ2hhbm5lbCA2IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgNyAqLworCisjZGVmaW5lIE1YMV9TQVI3CV9fUkVHKDB4MDAyMDkyNDApICAvKiBDaGFubmVsIDcgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjcJX19SRUcoMHgwMDIwOTI0NCkgIC8qIENoYW5uZWwgNyBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjcJX19SRUcoMHgwMDIwOTI0OCkgIC8qIENoYW5uZWwgNyBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I3CV9fUkVHKDB4MDAyMDkyNEMpICAvKiBDaGFubmVsIDcgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I3CV9fUkVHKDB4MDAyMDkyNTApICAvKiBDaGFubmVsIDcgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSNwlfX1JFRygweDAwMjA5MjU0KSAgLyogQ2hhbm5lbCA3IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SNwlfX1JFRygweDAwMjA5MjU4KSAgLyogQ2hhbm5lbCA3IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSNwlfX1JFRygweDAwMjA5MjU4KSAgLyogQ2hhbm5lbCA3IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgOCAqLworCisjZGVmaW5lIE1YMV9TQVI4CV9fUkVHKDB4MDAyMDkyODApICAvKiBDaGFubmVsIDggU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjgJX19SRUcoMHgwMDIwOTI4NCkgIC8qIENoYW5uZWwgOCBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjgJX19SRUcoMHgwMDIwOTI4OCkgIC8qIENoYW5uZWwgOCBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I4CV9fUkVHKDB4MDAyMDkyOEMpICAvKiBDaGFubmVsIDggQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I4CV9fUkVHKDB4MDAyMDkyOTApICAvKiBDaGFubmVsIDggUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSOAlfX1JFRygweDAwMjA5Mjk0KSAgLyogQ2hhbm5lbCA4IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SOAlfX1JFRygweDAwMjA5Mjk4KSAgLyogQ2hhbm5lbCA4IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSOAlfX1JFRygweDAwMjA5Mjk4KSAgLyogQ2hhbm5lbCA4IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgOSAqLworCisjZGVmaW5lIE1YMV9TQVI5CV9fUkVHKDB4MDAyMDkyQzApICAvKiBDaGFubmVsIDkgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjkJX19SRUcoMHgwMDIwOTJDNCkgIC8qIENoYW5uZWwgOSBEZXN0aW5hdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQ05UUjkJX19SRUcoMHgwMDIwOTJDOCkgIC8qIENoYW5uZWwgOSBDb3VudCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9DQ1I5CV9fUkVHKDB4MDAyMDkyQ0MpICAvKiBDaGFubmVsIDkgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1I5CV9fUkVHKDB4MDAyMDkyRDApICAvKiBDaGFubmVsIDkgUmVxdWVzdCBTb3VyY2UgU2VsZWN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQkxSOQlfX1JFRygweDAwMjA5MkQ0KSAgLyogQ2hhbm5lbCA5IEJ1cnN0IExlbmd0aCAgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9SVE9SOQlfX1JFRygweDAwMjA5MkQ4KSAgLyogQ2hhbm5lbCA5IFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSOQlfX1JFRygweDAwMjA5MkQ4KSAgLyogQ2hhbm5lbCA5IEJ1cyBVdGlsaXphdGlvbiBDb250cm9sIFJlZ2lzdGVyIAkqLworCisKKy8qIENoYW5uZWwgMTAgKi8KKworI2RlZmluZSBNWDFfU0FSMTAJX19SRUcoMHgwMDIwOTMwMCkgIC8qIENoYW5uZWwgMTAgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVgxX0RBUjEwCV9fUkVHKDB4MDAyMDkzMDQpICAvKiBDaGFubmVsIDEwIERlc3RpbmF0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DTlRSMTAJX19SRUcoMHgwMDIwOTMwOCkgIC8qIENoYW5uZWwgMTAgQ291bnQgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ0NSMTAJX19SRUcoMHgwMDIwOTMwQykgIC8qIENoYW5uZWwgMTAgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JTU1IxMAlfX1JFRygweDAwMjA5MzEwKSAgLyogQ2hhbm5lbCAxMCBSZXF1ZXN0IFNvdXJjZSBTZWxlY3QgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CTFIxMAlfX1JFRygweDAwMjA5MzE0KSAgLyogQ2hhbm5lbCAxMCBCdXJzdCBMZW5ndGggIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfUlRPUjEwCV9fUkVHKDB4MDAyMDkzMTgpICAvKiBDaGFubmVsIDEwIFJlcXVlc3QgVGltZS1PdXQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9CVUNSMTAJX19SRUcoMHgwMDIwOTMxOCkgIC8qIENoYW5uZWwgMTAgQnVzIFV0aWxpemF0aW9uIENvbnRyb2wgUmVnaXN0ZXIgCSovCisKKworI2RlZmluZSBNWDFfVENSCQlfX1JFRygweDAwMjA5MzQwKSAgLyogVGVzdCBDb250cm9sIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1RGSUZPQVIJX19SRUcoMHgwMDIwOTM0NCkgIC8qIFRlc3QgRklGTyBBICBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9URFJSCV9fUkVHKDB4MDAyMDkzNDgpICAvKiBUZXN0IERNQSBSZXF1ZXN0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVERJUFIJX19SRUcoMHgwMDIwOTM0QykgIC8qIFRlc3QgRE1BIEluIFByb2dyZXNzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVEZJRk9CUglfX1JFRygweDAwMjA5MzUwKSAgLyogVGVzdCBGSUZPIEIgUmVnaXN0ZXIgCQkqLworCisKKworLyoKKyAqCU1YMSBTSU0gcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfUE9SVF9DTlRMCV9fUkVHKDB4MDAyMTEwMDApICAvKiBQb3J0IENvbnRyb2wgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ05UTAlfX1JFRygweDAwMjExMDA0KSAgLyogQ29udHJvbCBSZWdpc3RlcgkgCQkqLworI2RlZmluZSBNWDFfUkNWX1RIUkVTSE9MRCBfX1JFRygweDAwMjExMDA4KS8qIFJlY2VpdmUgVGhyZXNob2xkICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfRU5BQkxFIAlfX1JFRygweDAwMjExMDBDKSAgLyogVHJhbnNtaXQvUmVjZWl2ZSBFbmFibGUgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1hNVF9TVEFUVVMgIF9fUkVHKDB4MDAyMTEwMTApICAvKiBUcmFuc21pdCBTdGF0dXMgIFJlZ2lzdGVyCQkqLworI2RlZmluZSBNWDFfUkNWX1NUQVRVUyAgX19SRUcoMHgwMDIxMTAxNCkgIC8qIFJlY2VpdmUgU3RhdHVzICBSZWdpc3RlcgkJKi8KKyNkZWZpbmUgTVgxX1NJTV9JTlRfTUFTSyAgCV9fUkVHKDB4MDAyMTEwMTgpICAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgkJKi8KKyNkZWZpbmUgTVgxX1hNVF9CVUYgIAlfX1JFRygweDAwMjExMDFDKSAgLyogUG9ydCBUcmFuc21pdCBCdWZmZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1JDVl9CVUYgIAlfX1JFRygweDAwMjExMDIwKSAgLyogUmVjZWl2ZSBCdWZmZXIgUmVnaXN0ZXIJCSovCisjZGVmaW5lIE1YMV9QT1JUX0RFVEVDVCBfX1JFRygweDAwMjExMDI0KSAgLyogRGV0ZWN0IFJlZ2lzdGVyCQkJKi8KKyNkZWZpbmUgTVgxX1hNVF9USFJFU0hPTEQgX19SRUcoMHgwMDIxMTAyOCkvKiBUcmFuc21pdCBUaHJlc2hvbGQgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX0dVQVJEX0NOVEwgIF9fUkVHKDB4MDAyMTEwMkMpICAvKiBUcmFuc21pdCBHdWFyZCBDb250cm9sICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfT0RfQ09ORklHCV9fUkVHKDB4MDAyMTEwMzApICAvKiBPcGVuLURyYWluIENvbmZpZ3VyYXRpb24gQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfUkVTRVRfQ05UTAlfX1JFRygweDAwMjExMDM0KSAgLyogUmVzZXQgIENvbnRyb2wgUmVnaXN0ZXIJCSovCisjZGVmaW5lIE1YMV9DSEFSX1dBSVQJX19SRUcoMHgwMDIxMTAzOCkgIC8qIENoYXJhY3RvciBXYWl0IFRpbWVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9HUENOVAlfX1JFRygweDAwMjExMDNDKSAgLyogR2VuZXJhbCBQdXJwb3NlIENvdW50ZXIgIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9ESVZJU09SCV9fUkVHKDB4MDAyMTEwNDApICAvKiBEaXZpc29yIFJlZ2lzdGVyCQkJKi8KKworCisvKgorICoJTVgxIFVTQkQgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfVVNCX0ZSQU1FCV9fUkVHKDB4MDAyMTIwMDApICAvKiBVU0IgRnJhbWUgTnVtYmVyIGFuZCBNYXRjaCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VTQl9TUEVDCV9fUkVHKDB4MDAyMTIwMDQpICAvKiBVU0IgU3BlYyAmIFJlbGVhc2UgTnVtYmVyIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVVNCX1NUQVQJX19SRUcoMHgwMDIxMjAwOCkgIC8qIFVTQiBTdGF0dXMgUmVnaXN0ZXIJIAkqLworI2RlZmluZSBNWDFfVVNCX0NUUkwJX19SRUcoMHgwMDIxMjAwQykgIC8qIFVTQiBDb250cm9sIFJlZ2lzdGVyCSAJKi8KKyNkZWZpbmUgTVgxX1VTQl9EQURSCV9fUkVHKDB4MDAyMTIwMTApICAvKiBVU0IgRGVzY3JpcHRvciBSQU0gQWRkcmVzcyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1VTQl9EREFUCV9fUkVHKDB4MDAyMTIwMTQpICAvKiBVU0IgRGVzY3JpcHRvciBSQU0vRW5kcG9pbnQgYnVmZmVyIERhdGEgIFJlZ2lzdGVyICovCisjZGVmaW5lIE1YMV9VU0JfSU5UUiAJX19SRUcoMHgwMDIxMjAxOCkgIC8qIFVTQiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVVNCX01BU0sgCV9fUkVHKDB4MDAyMTIwMUMpICAvKiBVU0IgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9VU0JfRU5BQiAJX19SRUcoMHgwMDIxMjAyNCkgIC8qIFVTQiBFbmFibGUgUmVnaXN0ZXIgCQkqLworCisKKy8qIEVuZHBvaW50IDAgICovCisjZGVmaW5lIE1YMV9VU0JfRVAwX1NUQVQgX19SRUcoMHgwMDIxMjAzMCkgLyogRW5kcG9pbnQgMCBTdGF0dXMvQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMF9JTlRSIF9fUkVHKDB4MDAyMTIwMzQpIC8qIEVuZHBvaW50IDAgSW50ZXJydXB0IFN0YXR1cyAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDBfTUFTSyBfX1JFRygweDAwMjEyMDM4KSAvKiBFbmRwb2ludCAwIEludGVycnVwdCBNYXNrICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMF9GREFUIF9fUkVHKDB4MDAyMTIwM0MpIC8qIEVuZHBvaW50IDAgRklGTyBEYXRhIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAwX0ZTVEFUIF9fUkVHKDB4MDAyMTIwNDApIC8qIEVuZHBvaW50IDAgRklGTyBTdGF0dXMgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDBfRkNUUkwgX19SRUcoMHgwMDIxMjA0NCkgLyogRW5kcG9pbnQgMCBGSUZPIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDBfTFJGUCBfX1JFRygweDAwMjEyMDQ4KSAvKiBFbmRwb2ludCAwIExhc3QgUmVhZCBGcmFtZSBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAwX0xXRlAgX19SRUcoMHgwMDIxMjA0QykgLyogRW5kcG9pbnQgMCBMYXN0IFdyaXRlIEZyYW1lIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDBfRkFMUk0gX19SRUcoMHgwMDIxMjA1MCkgLyogRW5kcG9pbnQgMCBGSUZPIEFsYXJtICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMF9GUkRQIF9fUkVHKDB4MDAyMTIwNTQpIC8qIEVuZHBvaW50IDAgRklGTyBSZWFkIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDBfRldSUCBfX1JFRygweDAwMjEyMDU4KSAvKiBFbmRwb2ludCAwIEZJRk8gV3JpdGUgUG9pbnRlciBSZWdpc3RlcgkqLworCisKKy8qIEVuZHBvaW50IDEgICovCisjZGVmaW5lIE1YMV9VU0JfRVAxX1NUQVQgX19SRUcoMHgwMDIxMjA2MCkgLyogRW5kcG9pbnQgMSBTdGF0dXMvQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMV9JTlRSIF9fUkVHKDB4MDAyMTIwNjQpIC8qIEVuZHBvaW50IDEgSW50ZXJydXB0IFN0YXR1cyAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDFfTUFTSyBfX1JFRygweDAwMjEyMDY4KSAvKiBFbmRwb2ludCAxIEludGVycnVwdCBNYXNrICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMV9GREFUIF9fUkVHKDB4MDAyMTIwNkMpIC8qIEVuZHBvaW50IDEgRklGTyBEYXRhIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAxX0ZTVEFUIF9fUkVHKDB4MDAyMTIwNzApIC8qIEVuZHBvaW50IDEgRklGTyBTdGF0dXMgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDFfRkNUUkwgX19SRUcoMHgwMDIxMjA3NCkgLyogRW5kcG9pbnQgMSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDFfTFJGUCBfX1JFRygweDAwMjEyMDc4KSAvKiBFbmRwb2ludCAxIExhc3QgUmVhZCBGcmFtZSBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAxX0xXRlAgX19SRUcoMHgwMDIxMjA3QykgLyogRW5kcG9pbnQgMSBMYXN0IFdyaXRlIEZyYW1lIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDFfRkFMUk0gX19SRUcoMHgwMDIxMjA4MCkgLyogRW5kcG9pbnQgMSBGSUZPIEFsYXJtICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMV9GUkRQIF9fUkVHKDB4MDAyMTIwODQpIC8qIEVuZHBvaW50IDEgRklGTyBSZWFkIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDFfRldSUCBfX1JFRygweDAwMjEyMDg4KSAvKiBFbmRwb2ludCAxIEZJRk8gV3JpdGUgUG9pbnRlciBSZWdpc3RlcgkqLworCisKKy8qIEVuZHBvaW50IDIgICovCisjZGVmaW5lIE1YMV9VU0JfRVAyX1NUQVQgX19SRUcoMHgwMDIxMjA5MCkgLyogRW5kcG9pbnQgMiBTdGF0dXMvQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMl9JTlRSIF9fUkVHKDB4MDAyMTIwOTQpIC8qIEVuZHBvaW50IDIgSW50ZXJydXB0IFN0YXR1cyAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDJfTUFTSyBfX1JFRygweDAwMjEyMDk4KSAvKiBFbmRwb2ludCAyIEludGVycnVwdCBNYXNrICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMl9GREFUIF9fUkVHKDB4MDAyMTIwOUMpIC8qIEVuZHBvaW50IDIgRklGTyBEYXRhIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAyX0ZTVEFUIF9fUkVHKDB4MDAyMTIwQTApIC8qIEVuZHBvaW50IDIgRklGTyBTdGF0dXMgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDJfRkNUUkwgX19SRUcoMHgwMDIxMjBBNCkgLyogRW5kcG9pbnQgMiBGSUZPIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDJfTFJGUCBfX1JFRygweDAwMjEyMEE4KSAvKiBFbmRwb2ludCAyIExhc3QgUmVhZCBGcmFtZSBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAyX0xXRlAgX19SRUcoMHgwMDIxMjBBQykgLyogRW5kcG9pbnQgMiBMYXN0IFdyaXRlIEZyYW1lIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDJfRkFMUk0gX19SRUcoMHgwMDIxMjBCMCkgLyogRW5kcG9pbnQgMiBGSUZPIEFsYXJtICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQMl9GUkRQIF9fUkVHKDB4MDAyMTIwQjQpIC8qIEVuZHBvaW50IDIgRklGTyBSZWFkIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDJfRldSUCBfX1JFRygweDAwMjEyMEI4KSAvKiBFbmRwb2ludCAyIEZJRk8gV3JpdGUgUG9pbnRlciBSZWdpc3RlcgkqLworCisKKy8qIEVuZHBvaW50IDMgICovCisjZGVmaW5lIE1YMV9VU0JfRVAzX1NUQVQgX19SRUcoMHgwMDIxMjBDMCkgLyogRW5kcG9pbnQgMyBTdGF0dXMvQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQM19JTlRSIF9fUkVHKDB4MDAyMTIwQzQpIC8qIEVuZHBvaW50IDMgSW50ZXJydXB0IFN0YXR1cyAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDNfTUFTSyBfX1JFRygweDAwMjEyMEM4KSAvKiBFbmRwb2ludCAzIEludGVycnVwdCBNYXNrICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQM19GREFUIF9fUkVHKDB4MDAyMTIwQ0MpIC8qIEVuZHBvaW50IDMgRklGTyBEYXRhIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAzX0ZTVEFUIF9fUkVHKDB4MDAyMTIwRDApIC8qIEVuZHBvaW50IDMgRklGTyBTdGF0dXMgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDNfRkNUUkwgX19SRUcoMHgwMDIxMjBENCkgLyogRW5kcG9pbnQgMyBGSUZPIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDNfTFJGUCBfX1JFRygweDAwMjEyMEQ4KSAvKiBFbmRwb2ludCAzIExhc3QgUmVhZCBGcmFtZSBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVAzX0xXRlAgX19SRUcoMHgwMDIxMjBEQykgLyogRW5kcG9pbnQgMyBMYXN0IFdyaXRlIEZyYW1lIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDNfRkFMUk0gX19SRUcoMHgwMDIxMjBFMCkgLyogRW5kcG9pbnQgMyBGSUZPIEFsYXJtICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQM19GUkRQIF9fUkVHKDB4MDAyMTIwRTQpIC8qIEVuZHBvaW50IDMgRklGTyBSZWFkIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDNfRldSUCBfX1JFRygweDAwMjEyMEU4KSAvKiBFbmRwb2ludCAzIEZJRk8gV3JpdGUgUG9pbnRlciBSZWdpc3RlcgkqLworCisKKworLyogRW5kcG9pbnQgNCAgKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDRfU1RBVCBfX1JFRygweDAwMjEyMEYwKSAvKiBFbmRwb2ludCA0IFN0YXR1cy9Db250cm9sIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA0X0lOVFIgX19SRUcoMHgwMDIxMjBGNCkgLyogRW5kcG9pbnQgNCBJbnRlcnJ1cHQgU3RhdHVzICBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNF9NQVNLIF9fUkVHKDB4MDAyMTIwRjgpIC8qIEVuZHBvaW50IDQgSW50ZXJydXB0IE1hc2sgIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA0X0ZEQVQgX19SRUcoMHgwMDIxMjBGQykgLyogRW5kcG9pbnQgNCBGSUZPIERhdGEgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDRfRlNUQVQgX19SRUcoMHgwMDIxMjEwMCkgLyogRW5kcG9pbnQgNCBGSUZPIFN0YXR1cyBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNF9GQ1RSTCBfX1JFRygweDAwMjEyMTA0KSAvKiBFbmRwb2ludCA0IEZJRk8gQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNF9MUkZQIF9fUkVHKDB4MDAyMTIxMDgpIC8qIEVuZHBvaW50IDQgTGFzdCBSZWFkIEZyYW1lIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDRfTFdGUCBfX1JFRygweDAwMjEyMTBDKSAvKiBFbmRwb2ludCA0IExhc3QgV3JpdGUgRnJhbWUgUG9pbnRlciBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNF9GQUxSTSBfX1JFRygweDAwMjEyMTEwKSAvKiBFbmRwb2ludCA0IEZJRk8gQWxhcm0gIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA0X0ZSRFAgX19SRUcoMHgwMDIxMjExNCkgLyogRW5kcG9pbnQgNCBGSUZPIFJlYWQgUG9pbnRlciBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNF9GV1JQIF9fUkVHKDB4MDAyMTIxMTgpIC8qIEVuZHBvaW50IDQgRklGTyBXcml0ZSBQb2ludGVyIFJlZ2lzdGVyCSovCisKKworCisvKiBFbmRwb2ludCA1ICAqLworI2RlZmluZSBNWDFfVVNCX0VQNV9TVEFUIF9fUkVHKDB4MDAyMTIxMjApIC8qIEVuZHBvaW50IDUgU3RhdHVzL0NvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDVfSU5UUiBfX1JFRygweDAwMjEyMTI0KSAvKiBFbmRwb2ludCA1IEludGVycnVwdCBTdGF0dXMgIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA1X01BU0sgX19SRUcoMHgwMDIxMjEyOCkgLyogRW5kcG9pbnQgNSBJbnRlcnJ1cHQgTWFzayAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDVfRkRBVCBfX1JFRygweDAwMjEyMTJDKSAvKiBFbmRwb2ludCA1IEZJRk8gRGF0YSBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNV9GU1RBVCBfX1JFRygweDAwMjEyMTMwKSAvKiBFbmRwb2ludCA1IEZJRk8gU3RhdHVzIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA1X0ZDVFJMIF9fUkVHKDB4MDAyMTIxMzQpIC8qIEVuZHBvaW50IDUgRklGTyBDb250cm9sIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA1X0xSRlAgX19SRUcoMHgwMDIxMjEzOCkgLyogRW5kcG9pbnQgNSBMYXN0IFJlYWQgRnJhbWUgUG9pbnRlciBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfVVNCX0VQNV9MV0ZQIF9fUkVHKDB4MDAyMTIxM0MpIC8qIEVuZHBvaW50IDUgTGFzdCBXcml0ZSBGcmFtZSBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA1X0ZBTFJNIF9fUkVHKDB4MDAyMTIxNDApIC8qIEVuZHBvaW50IDUgRklGTyBBbGFybSAgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1VTQl9FUDVfRlJEUCBfX1JFRygweDAwMjEyMTQ0KSAvKiBFbmRwb2ludCA1IEZJRk8gUmVhZCBQb2ludGVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9VU0JfRVA1X0ZXUlAgX19SRUcoMHgwMDIxMjE0OCkgLyogRW5kcG9pbnQgNSBGSUZPIFdyaXRlIFBvaW50ZXIgUmVnaXN0ZXIJKi8KKworCisKKworLyoKKyAqCU1YMSBTUEkgMSByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9SWERBVEFSRUcxCV9fUkVHKDB4MDAyMTMwMDApICAvKiBTUEkgMSBSeCBEYXRhIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1RYREFUQVJFRzEJX19SRUcoMHgwMDIxMzAwNCkgIC8qIFNQSSAxIFR4IERhdGEgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQ09OVFJPTFJFRzEJX19SRUcoMHgwMDIxMzAwOCkgIC8qIFNQSSAxIENvbnRyb2wgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfSU5UUkVHMQlfX1JFRygweDAwMjEzMDBDKSAgLyogU1BJIDEgSW50ZXJydXB0IENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfVEVTVFJFRzEJX19SRUcoMHgwMDIxMzAxMCkgIC8qIFNQSSAxIFRlc3QgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfUEVSSU9EUkVHMQlfX1JFRygweDAwMjEzMDE0KSAgLyogU1BJIDEgU2FtcGxlIFBlcmlvZCBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfRE1BUkVHMQlfX1JFRygweDAwMjEzMDE4KSAgLyogU1BJIDEgRE1BIENvbnRyb2wgIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfUkVTRVRSRUcxCV9fUkVHKDB4MDAyMTMwMTgpICAvKiBTUEkgMSBTb2Z0IFJlc2V0IFJlZ2lzdGVyIAkqLworCisKKworCisvKgorICoJTVgxIE1NQy9TREhDIHJlZ2lzdGVycworICovCisKKyNkZWZpbmUgTVgxX1NUUl9TVFBfQ0xLCV9fUkVHKDB4MDAyMTQwMDApICAvKiBNTUMvU0QgQ2xvY2sgQ29udHJvbCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfU1RBVFVTIAlfX1JFRygweDAwMjE0MDA0KSAgLyogTU1DL1NEIFN0YXR1cyBSZWdpc3RlcgkJKi8KKyNkZWZpbmUgTVgxX0NMS19SQVRFIAlfX1JFRygweDAwMjE0MDA4KSAgLyogTU1DL1NEIENsb2NrIFJhdGUgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX0NNRF9EQVRfQ09OVCBfX1JFRygweDAwMjE0MDBDKSAgLyogTU1DL1NEIENvbW1hbmQgJiBEYXRhIENvbnRyb2wgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1JFU19UTwlfX1JFRygweDAwMjE0MDEwKSAgLyogTU1DL1NEIFJlc3BvbnNlIFRpbWUgT3V0IFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9SRUFEX1RPCV9fUkVHKDB4MDAyMTQwMTQpICAvKiBNTUMvU0QgUmVhZCBUaW1lIE91dCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfQkxLX0xFTglfX1JFRygweDAwMjE0MDE4KSAgLyogTU1DL1NEIEJsb2NrIExlbmd0aCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfTk9CCQlfX1JFRygweDAwMjE0MDFDKSAgLyogTU1DL1NEIE51bWJlciBvZiBCbG9jayBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfUkVWX05PCV9fUkVHKDB4MDAyMTQwMjApICAvKiBNTUMvU0QgUmV2aXNpb24gTnVtYmVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9NTUNfSU5UX01BU0sJX19SRUcoMHgwMDIxNDAyNCkgIC8qIE1NQy9TRCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfQ01EIAlfX1JFRygweDAwMjE0MDI4KSAgLyogTU1DL1NEIENvbW1hbmQgTnVtYmVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9BUkdIIAlfX1JFRygweDAwMjE0MDJDKSAgLyogTU1DL1NEIEhpZ2hlciBBcmd1bWVudCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfQVJHTCAJX19SRUcoMHgwMDIxNDAzMCkgIC8qIE1NQy9TRCBMb3dlciBBcmd1bWVudCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfUkVTX0ZJRk8gCV9fUkVHKDB4MDAyMTQwMzQpICAvKiBNTUMvU0QgUmVzcG9uc2UgRklGTyBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfQlVGRkVSX0FDQ0VTUyBfX1JFRygweDAwMjE0MDM4KSAgLyogTU1DL1NEIEJ1ZmZlciBBY2Nlc3MgUmVnaXN0ZXIJKi8KKworCisKKy8qCisgKglNWDEgQVNQIHJlZ2lzdGVycworICovCisKKyNkZWZpbmUgTVgxX0FTUF9QQURGSUZPCV9fUkVHKDB4MDAyMTUwMDApICAvKiBQZW4gU2FtcGxlIEZJRk8gCQkJKi8KKyNkZWZpbmUgTVgxX0FTUF9WQURGSUZPCV9fUkVHKDB4MDAyMTUwMDQpICAvKiBWb2ljZSBBREMgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfQVNQX1ZEQUZJRk8JX19SRUcoMHgwMDIxNTAwOCkgIC8qIFZvaWNlIERBQyBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9BU1BfVkFEQ09FRglfX1JFRygweDAwMjE1MDBDKSAgLyogVm9pY2UgQURDIEZJUiBDb2VmZmljaWVudHMgUkFNIAkqLworI2RlZmluZSBNWDFfQVNQX0FDTlRMQ1IJX19SRUcoMHgwMDIxNTAxMCkgIC8qIENvbnRyb2wgUmVnaXN0ZXIgCQkgCSovCisjZGVmaW5lIE1YMV9BU1BfUFNNUExSRwlfX1JFRygweDAwMjE1MDE0KSAgLyogUGVuIEEvRCBTYW1wbGUgUmF0ZSBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQVNQX0lDTlRMUglfX1JFRygweDAwMjE1MDE4KSAgLyogSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9BU1BfSVNUQVRSCV9fUkVHKDB4MDAyMTUwMUMpICAvKiBJbnRlcnJ1cHQvRXJyb3IgU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfQVNQX1ZBREdBSU4JX19SRUcoMHgwMDIxNTAyMCkgIC8qIFZvaWNlIEFEQyBDb250cm9sIFJlZ2lzdGVyICAJKi8KKyNkZWZpbmUgTVgxX0FTUF9WREFHQUlOCV9fUkVHKDB4MDAyMTUwMjQpICAvKiBWb2ljZSBEQUMgQ29udHJvbCBSZWdpc3RlciAgCSovCisjZGVmaW5lIE1YMV9BU1BfVkRBQ09FRglfX1JFRygweDAwMjE1MDI4KSAgLyogVm9pY2UgREFDIEZJUiBDb2VmZmljaWVudHMgUkFNICAgCSovCisjZGVmaW5lIE1YMV9BU1BfQ0xLRElWCV9fUkVHKDB4MDAyMTUwMkMpICAvKiBDbG9jayBEaXZpZGUgUmVnaXN0ZXIgCSAgIAkqLworI2RlZmluZSBNWDFfQVNQX0NNUENOVEwJX19SRUcoMHgwMDIxNTAyQykgIC8qIENvbXBhcmUgQ29udHJvbCBSZWdpc3RlciAJICAgCSovCisKKworCisvKgorICoJTVgxIEJUQSByZWdpc3RlcnMKKyAqLworCisKKy8qCisgKglNWDEgSTJDIHJlZ2lzdGVycworICovCisKKyNkZWZpbmUgTVgxX0lBRFIJX19SRUcoMHgwMDIxNzAwMCkgIC8qIEkyQyBBZGRyZXNzIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0lGRFIJX19SRUcoMHgwMDIxNzAwNCkgIC8qIEkyQyBGcmVxdWVuY3kgRGl2aWRlciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0kyQ1IJX19SRUcoMHgwMDIxNzAwOCkgIC8qIEkyQyBDb250cm9sIFJlZ2lzdGVyICAgCQkqLworI2RlZmluZSBNWDFfSTJDU1IJX19SRUcoMHgwMDIxNzAwQykgIC8qIEkyQyBTdGF0dXMgUmVnaXN0ZXIgICAJCSovCisjZGVmaW5lIE1YMV9JMkRSCV9fUkVHKDB4MDAyMTcwMTApICAvKiBJMkMgRGF0YSBJL08gUmVnaXN0ZXIgIAkJKi8KKworCisKKy8qCisgKglNWDEgU1NJIHJlZ2lzdGVycworICovCisKKyNkZWZpbmUgTVgxX1NUWAkJX19SRUcoMHgwMDIxODAwMCkgIC8qIFNTSSBUcmFuc21pdCBEYXRhIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfU1JYCQlfX1JFRygweDAwMjE4MDA0KSAgLyogU1NJIFJlY2VpdmUgRGF0YSBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1NDU1IJX19SRUcoMHgwMDIxODAwOCkgIC8qIFNTSSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1NUQ1IJX19SRUcoMHgwMDIxODAwQykgIC8qIFNTSSBUcmFuc21pdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfU1JDUglfX1JFRygweDAwMjE4MDEwKSAgLyogU1NJIFJlY2lldmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1NUQ0NSCV9fUkVHKDB4MDAyMTgwMTQpICAvKiBTU0kgVHJhbnNtaXQgQ2xvY2sgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1NSQ0NSCV9fUkVHKDB4MDAyMTgwMTgpICAvKiBTU0kgUmVjZWl2ZSBDbG9jayBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfU1RTUglfX1JFRygweDAwMjE4MDFDKSAgLyogU1NJIFRpbWUgU2xvdCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9TRkNTUglfX1JFRygweDAwMjE4MDIwKSAgLyogU1NJIEZJRk8gQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9TT1IJCV9fUkVHKDB4MDAyMTgwMjQpICAvKiBTU0kgT3B0aW9uIFJlZ2lzdGVyIAkJKi8KKworCisKKy8qCisgKglNWDEgU1BJIDIgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfUlhEQVRBUkVHMglfX1JFRygweDAwMjE5MDAwKSAgLyogU1BJIDIgUnggRGF0YSBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9UWERBVEFSRUcyCV9fUkVHKDB4MDAyMTkwMDQpICAvKiBTUEkgMiBUeCBEYXRhIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0NPTlRST0xSRUcyCV9fUkVHKDB4MDAyMTkwMDgpICAvKiBTUEkgMiBDb250cm9sIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0lOVFJFRzIJX19SRUcoMHgwMDIxOTAwQykgIC8qIFNQSSAyIEludGVycnVwdCBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1RFU1RSRUcyCV9fUkVHKDB4MDAyMTkwMTApICAvKiBTUEkgMiBUZXN0IFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1BFUklPRFJFRzIJX19SRUcoMHgwMDIxOTAxNCkgIC8qIFNQSSAyIFNhbXBsZSBQZXJpb2QgQ29udHJvbCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0RNQVJFRzIJX19SRUcoMHgwMDIxOTAxOCkgIC8qIFNQSSAyIERNQSBDb250cm9sICBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1JFU0VUUkVHMglfX1JFRygweDAwMjE5MDE4KSAgLyogU1BJIDIgU29mdCBSZXNldCBSZWdpc3RlciAJKi8KKworCisKKy8qCisgKglNWDEgTVNIQyByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9NU0NNRAlfX1JFRygweDAwMjFBMDAwKSAgLyogTWVtb3J5IFN0aWNrIENvbW1hbmQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU0NTCV9fUkVHKDB4MDAyMUEwMDIpICAvKiBNZW1vcnkgU3RpY2sgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU1REQVRBCV9fUkVHKDB4MDAyMUEwMDQpICAvKiBNZW1vcnkgU3RpY2sgVHJhbnNtaXQgRklGTyBEYXRhIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTVNSREFUQQlfX1JFRygweDAwMjFBMDA0KSAgLyogTWVtb3J5IFN0aWNrIFJlY2lldmUgRklGTyBEYXRhIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTVNJQ1MJX19SRUcoMHgwMDIxQTAwNikgIC8qIE1lbW9yeSBTdGljayBJbnRlcnJ1cHQgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU1BQQ0QJX19SRUcoMHgwMDIxQTAwOCkgIC8qIE1lbW9yeSBTdGljayBQYXJhbGxlbCBQb3J0IENvbnRyb2wvRGF0YSBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01TQzIJX19SRUcoMHgwMDIxQTAwQSkgIC8qIE1lbW9yeSBTdGljayBDb250cm9sIDIgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU0FDRAlfX1JFRygweDAwMjFBMDBDKSAgLyogTWVtb3J5IFN0aWNrIEF1dG8gQ29tbWFuZCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01TRkFFQ1MgCV9fUkVHKDB4MDAyMUEwMEUpICAvKiBNZW1vcnkgU3RpY2sgRklGTyBBY2Nlc3MgRXJyb3IgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU0NMS0QgCV9fUkVHKDB4MDAyMUEwMTApICAvKiBNZW1vcnkgU3RpY2sgU2VyaWFsIENsb2NrIGRpdmlkZXIgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NU0RSUUMgCV9fUkVHKDB4MDAyMUEwMTIpICAvKiBNZW1vcnkgU3RpY2sgRE1BIFJlcXVlc3QgQ29udHJvbCBSZWdpc3RlciAqLworCisKKworLyoKKyAqCU1YMSBQTExDTEsgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfQ1NDUglfX1JFRygweDAwMjFCMDAwKSAgLyogQ2xvY2sgU291cmNlIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NUENUTDAJX19SRUcoMHgwMDIxQjAwNCkgIC8qIE1DVSBQTEwgQ29udHJvbCBSZWdpc3RlciAwIAkqLworI2RlZmluZSBNWDFfTVBDVEwxCV9fUkVHKDB4MDAyMUIwMDgpICAvKiBNQ1UgUExMICYgU3lzdGVtIENsb2NrIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBNWDFfVVBDVEwwCV9fUkVHKDB4MDAyMUIwMEMpICAvKiBVU0IgUExMIENvbnRyb2wgUmVnaXN0ZXIgMAkqLworI2RlZmluZSBNWDFfVVBDVEwxCV9fUkVHKDB4MDAyMUIwMTApICAvKiBVU0IgUExMIENvbnRyb2wgUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfUENEUglfX1JFRygweDAwMjFCMDIwKSAgLyogUGVyaXBoZXJhbCBDbG9jayBEaXZpZGVyIFJlZ2lzdGVyCSovCisKKworLyoKKyAqCU1YMSBSRVNFVCByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9SU1IJCV9fUkVHKDB4MDAyMUI4MDApICAvKiBSZXNldCBTb3VyY2UgUmVnaXN0ZXIgCQkqLworCisKKworLyoKKyAqCU1YMSBTWVMgQ1RSTCByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9TSURSCV9fUkVHKDB4MDAyMUI4MDQpICAvKiBTaWxpY29uIElEIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0ZNQ1IJX19SRUcoMHgwMDIxQjgwOCkgIC8qIEZ1bmN0aW9uIE11bHRpUGxleGluZyBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfR1BDUglfX1JFRygweDAwMjFCODBDKSAgLyogR2xvYmFsIFBlcmlwaGVyYWwgQ29udHJvbCBSZWdpc3RlciAJKi8KKworCisvKgorICoJTVgxIEdQSU8gcmVnaXN0ZXJzCisgKi8KKworLyogUG9ydCBBICovCisjZGVmaW5lIE1YMV9ERElSX0EJX19SRUcoMHgwMDIxQzAwMCkgIC8qIFBvcnQgQSBEYXRhIERpcmVjdGlvbiBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX09DUjFfQQlfX1JFRygweDAwMjFDMDA0KSAgLyogUG9ydCBBIE91dHB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEJKi8KKyNkZWZpbmUgTVgxX09DUjJfQQlfX1JFRygweDAwMjFDMDA4KSAgLyogUG9ydCBBIE91dHB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIJKi8KKyNkZWZpbmUgTVgxX0lDT05GQTFfQQlfX1JFRygweDAwMjFDMDBDKSAgLyogUG9ydCBBIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQTEJKi8KKyNkZWZpbmUgTVgxX0lDT05GQTJfQQlfX1JFRygweDAwMjFDMDEwKSAgLyogUG9ydCBBIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQTIJKi8KKyNkZWZpbmUgTVgxX0lDT05GQjFfQQlfX1JFRygweDAwMjFDMDE0KSAgLyogUG9ydCBBIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQjEJKi8KKyNkZWZpbmUgTVgxX0lDT05GQjJfQQlfX1JFRygweDAwMjFDMDE4KSAgLyogUG9ydCBBIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQjIJKi8KKyNkZWZpbmUgTVgxX0RSX0EJX19SRUcoMHgwMDIxQzAxQykgIC8qIFBvcnQgQSBEYXRhIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0dJVVNfQQlfX1JFRygweDAwMjFDMDIwKSAgLyogUG9ydCBBIEdQSU8gSW4gVXNlIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfU1NSX0EJX19SRUcoMHgwMDIxQzAyNCkgIC8qIFBvcnQgQSBTYW1wbGUgU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfSUNSMV9BCV9fUkVHKDB4MDAyMUMwMjgpICAvKiBQb3J0IEEgSW50ZXJydXB0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfSUNSMl9BCV9fUkVHKDB4MDAyMUMwMkMpICAvKiBQb3J0IEEgSW50ZXJydXB0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMgkqLworI2RlZmluZSBNWDFfSU1SX0EJX19SRUcoMHgwMDIxQzAzMCkgIC8qIFBvcnQgQSBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfSVNSX0EJX19SRUcoMHgwMDIxQzAzNCkgIC8qIFBvcnQgQSBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9HUFJfQQlfX1JFRygweDAwMjFDMDM4KSAgLyogUG9ydCBBIEdlbmVyYWwgUHVycG9zZSBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfU1dSX0EJX19SRUcoMHgwMDIxQzAzQykgIC8qIFBvcnQgQSBTb2Z0d2FyZSBSZXNldCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfUFVFTl9BCV9fUkVHKDB4MDAyMUMwNDApICAvKiBQb3J0IEEgUHVsbCBVcCBFbmFibGUgUmVnaXN0ZXIJKi8KKworCisvKiBQb3J0IEIgKi8KKyNkZWZpbmUgTVgxX0RESVJfQglfX1JFRygweDAwMjFDMTAwKSAgLyogUG9ydCBCIERhdGEgRGlyZWN0aW9uIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfT0NSMV9CCV9fUkVHKDB4MDAyMUMxMDQpICAvKiBQb3J0IEIgT3V0cHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfT0NSMl9CCV9fUkVHKDB4MDAyMUMxMDgpICAvKiBQb3J0IEIgT3V0cHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMgkqLworI2RlZmluZSBNWDFfSUNPTkZBMV9CCV9fUkVHKDB4MDAyMUMxMEMpICAvKiBQb3J0IEIgSW5wdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBBMQkqLworI2RlZmluZSBNWDFfSUNPTkZBMl9CCV9fUkVHKDB4MDAyMUMxMTApICAvKiBQb3J0IEIgSW5wdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBBMgkqLworI2RlZmluZSBNWDFfSUNPTkZCMV9CCV9fUkVHKDB4MDAyMUMxMTQpICAvKiBQb3J0IEIgSW5wdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBCMQkqLworI2RlZmluZSBNWDFfSUNPTkZCMl9CCV9fUkVHKDB4MDAyMUMxMTgpICAvKiBQb3J0IEIgSW5wdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBCMgkqLworI2RlZmluZSBNWDFfRFJfQglfX1JFRygweDAwMjFDMTFDKSAgLyogUG9ydCBCIERhdGEgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfR0lVU19CCV9fUkVHKDB4MDAyMUMxMjApICAvKiBQb3J0IEIgR1BJTyBJbiBVc2UgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9TU1JfQglfX1JFRygweDAwMjFDMTI0KSAgLyogUG9ydCBCIFNhbXBsZSBTdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9JQ1IxX0IJX19SRUcoMHgwMDIxQzEyOCkgIC8qIFBvcnQgQiBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxCSovCisjZGVmaW5lIE1YMV9JQ1IyX0IJX19SRUcoMHgwMDIxQzEyQykgIC8qIFBvcnQgQiBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyCSovCisjZGVmaW5lIE1YMV9JTVJfQglfX1JFRygweDAwMjFDMTMwKSAgLyogUG9ydCBCIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9JU1JfQglfX1JFRygweDAwMjFDMTM0KSAgLyogUG9ydCBCIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX0dQUl9CCV9fUkVHKDB4MDAyMUMxMzgpICAvKiBQb3J0IEIgR2VuZXJhbCBQdXJwb3NlIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9TV1JfQglfX1JFRygweDAwMjFDMTNDKSAgLyogUG9ydCBCIFNvZnR3YXJlIFJlc2V0IFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9QVUVOX0IJX19SRUcoMHgwMDIxQzE0MCkgIC8qIFBvcnQgQiBQdWxsIFVwIEVuYWJsZSBSZWdpc3RlcgkqLworCisKKworLyogUG9ydCBDICovCisjZGVmaW5lIE1YMV9ERElSX0MJX19SRUcoMHgwMDIxQzIwMCkgIC8qIFBvcnQgQyBEYXRhIERpcmVjdGlvbiBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX09DUjFfQwlfX1JFRygweDAwMjFDMjA0KSAgLyogUG9ydCBDIE91dHB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEJKi8KKyNkZWZpbmUgTVgxX09DUjJfQwlfX1JFRygweDAwMjFDMjA4KSAgLyogUG9ydCBDIE91dHB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIJKi8KKyNkZWZpbmUgTVgxX0lDT05GQTFfQwlfX1JFRygweDAwMjFDMjBDKSAgLyogUG9ydCBDIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQTEJKi8KKyNkZWZpbmUgTVgxX0lDT05GQTJfQwlfX1JFRygweDAwMjFDMjEwKSAgLyogUG9ydCBDIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQTIJKi8KKyNkZWZpbmUgTVgxX0lDT05GQjFfQwlfX1JFRygweDAwMjFDMjE0KSAgLyogUG9ydCBDIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQjEJKi8KKyNkZWZpbmUgTVgxX0lDT05GQjJfQwlfX1JFRygweDAwMjFDMjE4KSAgLyogUG9ydCBDIElucHV0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgQjIJKi8KKyNkZWZpbmUgTVgxX0RSX0MJX19SRUcoMHgwMDIxQzIxQykgIC8qIFBvcnQgQyBEYXRhIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX0dJVVNfQwlfX1JFRygweDAwMjFDMjIwKSAgLyogUG9ydCBDIEdQSU8gSW4gVXNlIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfU1NSX0MJX19SRUcoMHgwMDIxQzIyNCkgIC8qIFBvcnQgQyBTYW1wbGUgU3RhdHVzIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfSUNSMV9DCV9fUkVHKDB4MDAyMUMyMjgpICAvKiBQb3J0IEMgSW50ZXJydXB0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfSUNSMl9DCV9fUkVHKDB4MDAyMUMyMkMpICAvKiBQb3J0IEMgSW50ZXJydXB0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMgkqLworI2RlZmluZSBNWDFfSU1SX0MJX19SRUcoMHgwMDIxQzIzMCkgIC8qIFBvcnQgQyBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfSVNSX0MJX19SRUcoMHgwMDIxQzIzNCkgIC8qIFBvcnQgQyBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9HUFJfQwlfX1JFRygweDAwMjFDMjM4KSAgLyogUG9ydCBDIEdlbmVyYWwgUHVycG9zZSBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfU1dSX0MJX19SRUcoMHgwMDIxQzIzQykgIC8qIFBvcnQgQyBTb2Z0d2FyZSBSZXNldCBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfUFVFTl9DCV9fUkVHKDB4MDAyMUMyNDApICAvKiBQb3J0IEMgUHVsbCBVcCBFbmFibGUgUmVnaXN0ZXIJKi8KKworCisKKy8qIFBvcnQgRCAqLworI2RlZmluZSBNWDFfRERJUl9ECV9fUkVHKDB4MDAyMUMzMDApICAvKiBQb3J0IEQgRGF0YSBEaXJlY3Rpb24gUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9PQ1IxX0QJX19SRUcoMHgwMDIxQzMwNCkgIC8qIFBvcnQgRCBPdXRwdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxCSovCisjZGVmaW5lIE1YMV9PQ1IyX0QJX19SRUcoMHgwMDIxQzMwOCkgIC8qIFBvcnQgRCBPdXRwdXQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyCSovCisjZGVmaW5lIE1YMV9JQ09ORkExX0QJX19SRUcoMHgwMDIxQzMwQykgIC8qIFBvcnQgRCBJbnB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIEExCSovCisjZGVmaW5lIE1YMV9JQ09ORkEyX0QJX19SRUcoMHgwMDIxQzMxMCkgIC8qIFBvcnQgRCBJbnB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIEEyCSovCisjZGVmaW5lIE1YMV9JQ09ORkIxX0QJX19SRUcoMHgwMDIxQzMxNCkgIC8qIFBvcnQgRCBJbnB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIEIxCSovCisjZGVmaW5lIE1YMV9JQ09ORkIyX0QJX19SRUcoMHgwMDIxQzMxOCkgIC8qIFBvcnQgRCBJbnB1dCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIEIyCSovCisjZGVmaW5lIE1YMV9EUl9ECV9fUkVHKDB4MDAyMUMzMUMpICAvKiBQb3J0IEQgRGF0YSBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9HSVVTX0QJX19SRUcoMHgwMDIxQzMyMCkgIC8qIFBvcnQgRCBHUElPIEluIFVzZSBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX1NTUl9ECV9fUkVHKDB4MDAyMUMzMjQpICAvKiBQb3J0IEQgU2FtcGxlIFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0lDUjFfRAlfX1JFRygweDAwMjFDMzI4KSAgLyogUG9ydCBEIEludGVycnVwdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEJKi8KKyNkZWZpbmUgTVgxX0lDUjJfRAlfX1JFRygweDAwMjFDMzJDKSAgLyogUG9ydCBEIEludGVycnVwdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIJKi8KKyNkZWZpbmUgTVgxX0lNUl9ECV9fUkVHKDB4MDAyMUMzMzApICAvKiBQb3J0IEQgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX0lTUl9ECV9fUkVHKDB4MDAyMUMzMzQpICAvKiBQb3J0IEQgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgkqLworI2RlZmluZSBNWDFfR1BSX0QJX19SRUcoMHgwMDIxQzMzOCkgIC8qIFBvcnQgRCBHZW5lcmFsIFB1cnBvc2UgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1NXUl9ECV9fUkVHKDB4MDAyMUMzM0MpICAvKiBQb3J0IEQgU29mdHdhcmUgUmVzZXQgUmVnaXN0ZXIJKi8KKyNkZWZpbmUgTVgxX1BVRU5fRAlfX1JFRygweDAwMjFDMzQwKSAgLyogUG9ydCBEIFB1bGwgVXAgRW5hYmxlIFJlZ2lzdGVyCSovCisKKworCisvKgorICoJTVgxIEVJTSByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9DUzBVCV9fUkVHKDB4MDAyMjAwMDApICAvKiBDaGlwIFNlbGVjdCAwIFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzBMCV9fUkVHKDB4MDAyMjAwMDQpICAvKiBDaGlwIFNlbGVjdCAwIExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzFVCV9fUkVHKDB4MDAyMjAwMDgpICAvKiBDaGlwIFNlbGVjdCAxIFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzFMCV9fUkVHKDB4MDAyMjAwMEMpICAvKiBDaGlwIFNlbGVjdCAxIExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzJVCV9fUkVHKDB4MDAyMjAwMTApICAvKiBDaGlwIFNlbGVjdCAyIFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzJMCV9fUkVHKDB4MDAyMjAwMTQpICAvKiBDaGlwIFNlbGVjdCAyIExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzNVCV9fUkVHKDB4MDAyMjAwMTgpICAvKiBDaGlwIFNlbGVjdCAzIFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzNMCV9fUkVHKDB4MDAyMjAwMUMpICAvKiBDaGlwIFNlbGVjdCAzIExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzRVCV9fUkVHKDB4MDAyMjAwMjApICAvKiBDaGlwIFNlbGVjdCA0IFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzRMCV9fUkVHKDB4MDAyMjAwMjQpICAvKiBDaGlwIFNlbGVjdCA0IExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzVVCV9fUkVHKDB4MDAyMjAwMjgpICAvKiBDaGlwIFNlbGVjdCA1IFVwcGVyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9DUzVMCV9fUkVHKDB4MDAyMjAwMkMpICAvKiBDaGlwIFNlbGVjdCA1IExvd2VyIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9XRUlNCV9fUkVHKDB4MDAyMjAwMzApICAvKiB3ZWltIGNPTkZJR1VSQVRJT04gUmVnaXN0ZXIgCSovCisKKworCisvKgorICoJTVgxIFNEUkFNQyByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9TRENUTDAJX19SRUcoMHgwMDIyMTAwMCkgIC8qIFNEUkFNIDAgQ29udHJvbCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9TRENUTDEJX19SRUcoMHgwMDIyMTAwNCkgIC8qIFNEUkFNIDEgQ29udHJvbCBSZWdpc3RlciAJCSovCisjZGVmaW5lIE1YMV9NSVNDRUxMQU5FT1VTIF9fUkVHKDB4MDAyMjEwMTQpICAvKiBNaXNjZWxsYW5lb3VzIFJlZ2lzdGVyIAkJKi8KKyNkZWZpbmUgTVgxX1NEUlNUCV9fUkVHKDB4MDAyMjEwMTgpICAvKiBTRFJBTSBSZXNldCBSZWdpc3RlciAJCSovCisKKworCisvKgorICoJTVgxIE1NQSByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIE1YMV9NTUFfTUFDX01PRAlfX1JFRygweDAwMjIyMDAwKSAgLyogTU1BIE1BQyBNb2R1bGUgUmVnaXN0ZXIgCQkqLworI2RlZmluZSBNWDFfTU1BX01BQ19DVFJMIF9fUkVHKDB4MDAyMjIwMDQpICAvKiBNTUEgTUFDIENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX01VTFQgX19SRUcoMHgwMDIyMjAwOCkgIC8qIE1NQSBNQUMgTXVsdGlwbHkgQ291bnRlciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfQUNDVSBfX1JFRygweDAwMjIyMDBDKSAgLyogTU1BIE1BQyBBY2N1bXVsYXRlIENvdW50ZXIgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX0lOVFIgX19SRUcoMHgwMDIyMjAxMCkgIC8qIE1NQSBNQUMgSW50ZXJydXB0IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX01BQ19JTlRSX01BU0sgX19SRUcoMHgwMDIyMjAxNCkgIC8qIE1NQSBNQUMgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX0ZJRk8gX19SRUcoMHgwMDIyMjAxOCkgIC8qIE1NQSBNQUMgRklGTyBSZWdpc3RlcgkgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX0ZJRk9fU1RBVCBfX1JFRygweDAwMjIyMDFDKSAgLyogTU1BIE1BQyBGSUZPIFN0YXR1cyBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfQlVSU1QgX19SRUcoMHgwMDIyMjAyMCkgIC8qIE1NQSBNQUMgQnVyc3QgQ291bnQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX0JJVFNFTCBfX1JFRygweDAwMjIyMDI0KSAgLyogTU1BIE1BQyBCaXQgU2VsZWN0IFJlZ2lzdGVyIAkqLworCisjZGVmaW5lIE1YMV9NTUFfTUFDX1hCQVNFIF9fUkVHKDB4MDAyMjIyMDApICAvKiBNTUEgTUFDIFggQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1YMV9NTUFfTUFDX1hJTkRFWCBfX1JFRygweDAwMjIyMjA0KSAgLyogTU1BIE1BQyBYIEluZGV4IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX01BQ19YTEVOR1RIIF9fUkVHKDB4MDAyMjIyMDgpICAvKiBNTUEgTUFDIFggTGVuZ3RoIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX01BQ19YTU9ESUZZIF9fUkVHKDB4MDAyMjIyMEMpICAvKiBNTUEgTUFDIFggTW9kaWZ5IFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX01BQ19YSU5DUiBfX1JFRygweDAwMjIyMjEwKSAgLyogTU1BIE1BQyBYIEluY3JlbWVudCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfWENPVU5UIF9fUkVHKDB4MDAyMjIyMTQpICAvKiBNTUEgTUFDIFggQ291bnQgUmVnaXN0ZXIgCSovCisKKworI2RlZmluZSBNWDFfTU1BX01BQ19ZQkFTRSBfX1JFRygweDAwMjIyMzAwKSAgLyogTU1BIE1BQyBZIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBNWDFfTU1BX01BQ19ZSU5ERVggX19SRUcoMHgwMDIyMjMwNCkgIC8qIE1NQSBNQUMgWSBJbmRleCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfWUxFTkdUSCBfX1JFRygweDAwMjIyMzA4KSAgLyogTU1BIE1BQyBZIExlbmd0aCBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfWU1PRElGWSBfX1JFRygweDAwMjIyMzBDKSAgLyogTU1BIE1BQyBZIE1vZGlmeSBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX01NQV9NQUNfWUlOQ1IgX19SRUcoMHgwMDIyMjMxMCkgIC8qIE1NQSBNQUMgWSBJbmNyZW1lbnQgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfTUFDX1lDT1VOVCBfX1JFRygweDAwMjIyMzE0KSAgLyogTU1BIE1BQyBZIENvdW50IFJlZ2lzdGVyIAkqLworCisKKyNkZWZpbmUgTVgxX01NQV9EQ1RDVFJMIF9fUkVHKDB4MDAyMjI0MDApICAvKiBEQ1QvaURDVCBDb250cm9sIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX0RDVFZFUlNJT04gX19SRUcoMHgwMDIyMjQwNCkgIC8qIERDVC9pRENUIFZlcnNpb24gUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfRENUSVJRRU5BIF9fUkVHKDB4MDAyMjI0MDgpICAvKiBEQ1QvaURDVCBJUlEgRW5hYmxlIFJlZ2lzdGVyIAkqLworI2RlZmluZSBNWDFfTU1BX0RDVElSUVNUQVQgX19SRUcoMHgwMDIyMjQwQykgIC8qIERDVC9pRENUIElSUSBTdGF0dXMgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9NTUFfRENUU1JDREFUQSBfX1JFRygweDAwMjIyNDEwKSAgLyogRENUL2lEQ1QgU291cmNlIERhdGEgQWRkcmVzcyAgCSovCisjZGVmaW5lIE1YMV9NTUFfRENUREVTREFUQSBfX1JFRygweDAwMjIyNDE0KSAgLyogRENUL2lEQ1QgRGVzdGluYXRpb24gRGF0YSBBZGRyZXNzICAJKi8KKyNkZWZpbmUgTVgxX01NQV9EQ1RYT0ZGCV9fUkVHKDB4MDAyMjI0MTgpICAvKiBEQ1QvaURDVCBYLU9mZnNldCBBZGRyZXNzICAJKi8KKyNkZWZpbmUgTVgxX01NQV9EQ1RZT0ZGCV9fUkVHKDB4MDAyMjI0MUMpICAvKiBEQ1QvaURDVCBZLU9mZnNldCBBZGRyZXNzICAJKi8KKyNkZWZpbmUgTVgxX01NQV9EQ1RYWUNOVCBfX1JFRygweDAwMjIyNDIwKSAgLyogRENUL2lEQ1QgWFkgQ291bnQgCSAgCSovCisjZGVmaW5lIE1YMV9NTUFfRENUU0tJUCBfX1JFRygweDAwMjIyNDI0KSAgLyogRENUL2lEQ1QgU2tpcCBBZGRyZXNzICAJICAJKi8KKyNkZWZpbmUgTVgxX01NQV9EQ1RGSUZPIF9fUkVHKDB4MDAyMjI1MDApICAvKiBEQ1QvaURDVCBEYXRhIEZJRk8gIAkgIAkqLworCisKKworCisvKgorICoJTVgxIEFJVEMgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfSU5UQ05UTAlfX1JFRygweDAwMjIzMDAwKSAgLyogSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgCSovCisjZGVmaW5lIE1YMV9OSU1BU0sJX19SRUcoMHgwMDIyMzAwNCkgIC8qIE5vcm1hbCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0lOVEVOTlVNCV9fUkVHKDB4MDAyMjMwMDgpICAvKiBJbnRlcnJ1cHQgRW5hYmxlIE51bWJlciBSZWdpc3RlciAJKi8KKyNkZWZpbmUgTVgxX0lOVERJU05VTQlfX1JFRygweDAwMjIzMDBDKSAgLyogSW50ZXJydXB0IERpc2FibGUgTnVtYmVyIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9JTlRFTkFCTEVICV9fUkVHKDB4MDAyMjMwMTApICAvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyIEhpZ2ggCSovCisjZGVmaW5lIE1YMV9JTlRFTkFCTEVMCV9fUkVHKDB4MDAyMjMwMTQpICAvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyIExvdyAJKi8KKyNkZWZpbmUgTVgxX0lOVFRZUEVICV9fUkVHKDB4MDAyMjMwMTgpICAvKiBJbnRlcnJ1cHQgVHlwZSBSZWdpc3RlciBIaWdoIAkqLworI2RlZmluZSBNWDFfSU5UVFlQRUwJX19SRUcoMHgwMDIyMzAxQykgIC8qIEludGVycnVwdCBUeXBlIFJlZ2lzdGVyIExvdyAJKi8KKyNkZWZpbmUgTVgxX05JUFJJT1JJVFk3CV9fUkVHKDB4MDAyMjMwMjApICAvKiBOb3JtYWwgSW50ZXJydXB0IFByaW9yaXR5IExldmVsIFJlZ2lzdGVyIDcqLworI2RlZmluZSBNWDFfTklQUklPUklUWTYJX19SRUcoMHgwMDIyMzAyNCkgIC8qIE5vcm1hbCBJbnRlcnJ1cHQgUHJpb3JpdHkgTGV2ZWwgUmVnaXN0ZXIgNiovCisjZGVmaW5lIE1YMV9OSVBSSU9SSVRZNQlfX1JFRygweDAwMjIzMDI4KSAgLyogTm9ybWFsIEludGVycnVwdCBQcmlvcml0eSBMZXZlbCBSZWdpc3RlciA1Ki8KKyNkZWZpbmUgTVgxX05JUFJJT1JJVFk0CV9fUkVHKDB4MDAyMjMwMkMpICAvKiBOb3JtYWwgSW50ZXJydXB0IFByaW9yaXR5IExldmVsIFJlZ2lzdGVyIDQqLworI2RlZmluZSBNWDFfTklQUklPUklUWTMJX19SRUcoMHgwMDIyMzAzMCkgIC8qIE5vcm1hbCBJbnRlcnJ1cHQgUHJpb3JpdHkgTGV2ZWwgUmVnaXN0ZXIgMyovCisjZGVmaW5lIE1YMV9OSVBSSU9SSVRZMglfX1JFRygweDAwMjIzMDM0KSAgLyogTm9ybWFsIEludGVycnVwdCBQcmlvcml0eSBMZXZlbCBSZWdpc3RlciAyKi8KKyNkZWZpbmUgTVgxX05JUFJJT1JJVFkxCV9fUkVHKDB4MDAyMjMwMzgpICAvKiBOb3JtYWwgSW50ZXJydXB0IFByaW9yaXR5IExldmVsIFJlZ2lzdGVyIDEqLworI2RlZmluZSBNWDFfTklQUklPUklUWTAJX19SRUcoMHgwMDIyMzAzQykgIC8qIE5vcm1hbCBJbnRlcnJ1cHQgUHJpb3JpdHkgTGV2ZWwgUmVnaXN0ZXIgMCovCisjZGVmaW5lIE1YMV9OSVZFQ1NSCV9fUkVHKDB4MDAyMjMwNDApICAvKiBOb3JtYWwgSW50ZXJydXB0IFZlY3RvciAmIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBNWDFfRklWRUNTUglfX1JFRygweDAwMjIzMDQ0KSAgLyogRmFzdCBJbnRlcnJ1cHQgVmVjdG9yICYgU3RhdHVzIFJlZ2lzdGVyCSovCisjZGVmaW5lIE1YMV9JTlRTUkNICV9fUkVHKDB4MDAyMjMwNDgpICAvKiBJbnRlcnJ1cHQgU291cmNlIFJlZ2lzdGVyIEhpZ2ggCSovCisjZGVmaW5lIE1YMV9JTlRTUkNMCV9fUkVHKDB4MDAyMjMwNEMpICAvKiBJbnRlcnJ1cHQgU291cmNlIFJlZ2lzdGVyIExvdyAJKi8KKyNkZWZpbmUgTVgxX0lOVEZSQ0gJX19SRUcoMHgwMDIyMzA1MCkgIC8qIEludGVycnVwdCBGb3JjZSBSZWdpc3RlciBIaWdoIAkqLworI2RlZmluZSBNWDFfSU5URlJDTAlfX1JFRygweDAwMjIzMDU0KSAgLyogSW50ZXJydXB0IEZvcmNlIFJlZ2lzdGVyIExvdyAJKi8KKyNkZWZpbmUgTVgxX05JUE5ESAlfX1JFRygweDAwMjIzMDU4KSAgLyogTm9ybWFsIEludGVycnVwdCBQZW5kaW5nIFJlZ2lzdGVyIEhpZ2ggCSovCisjZGVmaW5lIE1YMV9OSVBOREwJX19SRUcoMHgwMDIyMzA1QykgIC8qIE5vcm1hbCBJbnRlcnJ1cHQgUGVuZGluZyBSZWdpc3RlciBMb3cgCSovCisjZGVmaW5lIE1YMV9GSVBOREgJX19SRUcoMHgwMDIyMzA2MCkgIC8qIEZhc3QgSW50ZXJydXB0IFBlbmRpbmcgUmVnaXN0ZXIgSGlnaCAJKi8KKyNkZWZpbmUgTVgxX0ZJUE5ETAlfX1JFRygweDAwMjIzMDY0KSAgLyogRmFzdCBJbnRlcnJ1cHQgUGVuZGluZyBSZWdpc3RlciBMb3cgCSovCisKKworLyoKKyAqCU1YMSBDU0kgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBNWDFfQ1NJQ1IxCV9fUkVHKDB4MDAyMjQwMDApICAvKiBDU0kgQ29udHJvbCBSZWdpc3RlciAxCSAJKi8KKyNkZWZpbmUgTVgxX0NTSUNSMglfX1JFRygweDAwMjI0MDA0KSAgLyogQ1NJIENvbnRyb2wgUmVnaXN0ZXIgMgkgCSovCisjZGVmaW5lIE1YMV9DU0lTUglfX1JFRygweDAwMjI0MDA4KSAgLyogQ1NJIFN0YXR1cyBSZWdpc3RlciAxCSAJKi8KKyNkZWZpbmUgTVgxX0NTSVNUQVRSCV9fUkVHKDB4MDAyMjQwMEMpICAvKiBDU0kgU3RhdGlzdGljIEZJRk8gUmVnaXN0ZXIgMQkqLworI2RlZmluZSBNWDFfQ1NJUlhSCV9fUkVHKDB4MDAyMjQwMTApICAvKiBDU0kgUnhGSUZPIFJlZ2lzdGVyIDEJCSovCisKKworCisjZW5kaWYJLyogIF9fTUM5MzI4X0hfXyAqLworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKyNpZiAwCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisvKgorCU1YMSBkbWEgZGVmaW5pdGlvbiAKKyovCisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGZmZmZmZmZmCisKKy8vI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTIAkJMTEKKyNkZWZpbmUgTUFYX0RNQV8yRF9SRUdTRVQJCTIKKworLyogTVgxIERNQSBtb2R1bGUgcmVnaXN0ZXJzJyBhZGRyZXNzICovCisKKyNkZWZpbmUJTVgxX0RNQV9CQVNFCQlJT19BRERSRVNTKDB4MDAyMDkwMDApCisjZGVmaW5lCU1YMV9ETUFfRENSCQkoTVgxX0RNQV9CQVNFICsgMHgwMCkJCS8vIERNQSBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lCU1YMV9ETUFfRElTUgkJKE1YMV9ETUFfQkFTRSArIDB4MDQpCQkvLyBETUEgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlcgorI2RlZmluZQlNWDFfRE1BX0RJTVIJCShNWDFfRE1BX0JBU0UgKyAweDA4KQkJLy8gRE1BIGludGVycnVwdCBtYXNrIHJlZ2lzdGVyCisjZGVmaW5lCU1YMV9ETUFfREJUT1NSCQkoTVgxX0RNQV9CQVNFICsgMHgwQykJCS8vIERNQSBidXJzdCB0aW1lLW91dCBzdGF0dXMgcmVnaXN0ZXIKKyNkZWZpbmUJTVgxX0RNQV9EUlRPU1IJCShNWDFfRE1BX0JBU0UgKyAweDEwKQkJLy8gRE1BIHJlcXVlc3QgdGltZS1vdXQgc3RhdHVzIHJlZ2lzdGVyCisjZGVmaW5lCU1YMV9ETUFfRFNFU1IJCShNWDFfRE1BX0JBU0UgKyAweDE0KQkJLy8gRE1BIHRyYW5zZmVyIGVycm9yIHN0YXR1cyByZWdpc3RlcgorI2RlZmluZQlNWDFfRE1BX0RCT1NSCQkoTVgxX0RNQV9CQVNFICsgMHgxOCkJCS8vIERNQSBidWZmZXIgb3ZlcmZsb3cgc3RhdHVzIHJlZ2lzdGVyCisjZGVmaW5lCU1YMV9ETUFfREJUT0NSCQkoTVgxX0RNQV9CQVNFICsgMHgxQykJCS8vIERNQSBidXJzdCB0aW1lLW91dCBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lCU1YMV9ETUFfV1NSQQkJKE1YMV9ETUFfQkFTRSArIDB4NDApCQkvLyBXLXNpemUgcmVnaXN0ZXIgQQorI2RlZmluZQlNWDFfRE1BX1hTUkEJCShNWDFfRE1BX0JBU0UgKyAweDQ0KQkJLy8gWC1zaXplIHJlZ2lzdGVyIEEKKyNkZWZpbmUJTVgxX0RNQV9ZU1JBCQkoTVgxX0RNQV9CQVNFICsgMHg0OCkJCS8vIFktc2l6ZSByZWdpc3RlciBBCisjZGVmaW5lCU1YMV9ETUFfV1NSQgkJKE1YMV9ETUFfQkFTRSArIDB4NEMpCQkvLyBXLXNpemUgcmVnaXN0ZXIgQgorI2RlZmluZQlNWDFfRE1BX1hTUkIJCShNWDFfRE1BX0JBU0UgKyAweDUwKQkJLy8gWC1zaXplIHJlZ2lzdGVyIEIKKyNkZWZpbmUJTVgxX0RNQV9ZU1JCCQkoTVgxX0RNQV9CQVNFICsgMHg1NCkJCS8vIFktc2l6ZSByZWdpc3RlciBCCisKKyNkZWZpbmUJTVgxX0RNQV9TQVIwCQkoTVgxX0RNQV9CQVNFICsgMHg4MCkJCS8vIHNvdXJjZSBhZGRyZXNzIHJlZ2lzdGVyIDAKKyNkZWZpbmUJTVgxX0RNQV9EQVIwCQkoTVgxX0RNQV9CQVNFICsgMHg4NCkJCS8vIGRlc3RpbmF0aW9uIGFkZHJlc3MgcmVnaXN0ZXIgMAorI2RlZmluZQlNWDFfRE1BX0NOVFIwCQkoTVgxX0RNQV9CQVNFICsgMHg4OCkJCS8vIGNvdW50IHJlZ2lzdGVyIDAKKyNkZWZpbmUJTVgxX0RNQV9DQ1IwCQkoTVgxX0RNQV9CQVNFICsgMHg4QykJCS8vIGNoYW5uZWwgY29udHJvbCByZWdpc3RlciAwCisjZGVmaW5lCU1YMV9ETUFfUlNTUjAJCShNWDFfRE1BX0JBU0UgKyAweDkwKQkJLy8gcmVxdWVzdCBzb3VyY2Ugc2VsZWN0IHJlZ2lzdGVyIDAKKyNkZWZpbmUJTVgxX0RNQV9CTFIwCQkoTVgxX0RNQV9CQVNFICsgMHg5NCkJCS8vIGJ1cnN0IGxlbmd0aCByZWdpc3RlciAwCisjZGVmaW5lCU1YMV9ETUFfUlRPUjAJCShNWDFfRE1BX0JBU0UgKyAweDk4KQkJLy8gcmVxdWVzdCB0aW1lLW91dCByZWdpc3RlciAwCisjZGVmaW5lCU1YMV9ETUFfQlVDUjAJCShNWDFfRE1BX0JBU0UgKyAweDk4KQkJLy8gYnVzIHV0aWxpemF0aW9uIGNvbnRyb2wgcmVnaXN0ZXIgMAorCisvKiByZWdpc3RlciBzZXQgMSB0byAxMCBhcmUgb2Zmc2V0ZWQgYnkgMHg0MCBlYWNoID0gMHgxMCBwb2ludGVycyBhd2F5ICovCisKKyNkZWZpbmUJRE1BX1JFR19TRVRfT0ZTCQkweDEwCisKKworLyogTVgxIERNQSBtb2R1bGUgcmVnaXN0ZXJzICovCisjZGVmaW5lCV9yZWdfRE1BX0RDUgkJKCooKFBfVlUzMilNWDFfRE1BX0RDUikpCisjZGVmaW5lCV9yZWdfRE1BX0RJU1IJCSgqKChQX1ZVMzIpTVgxX0RNQV9ESVNSKSkKKyNkZWZpbmUJX3JlZ19ETUFfRElNUgkJKCooKFBfVlUzMilNWDFfRE1BX0RJTVIpKQorI2RlZmluZQlfcmVnX0RNQV9EQlRPU1IJCSgqKChQX1ZVMzIpTVgxX0RNQV9EQlRPU1IpKQorI2RlZmluZQlfcmVnX0RNQV9EUlRPU1IJCSgqKChQX1ZVMzIpTVgxX0RNQV9EUlRPU1IpKQorI2RlZmluZQlfcmVnX0RNQV9EU0VTUgkJKCooKFBfVlUzMilNWDFfRE1BX0RTRVNSKSkKKyNkZWZpbmUJX3JlZ19ETUFfREJPU1IJCSgqKChQX1ZVMzIpTVgxX0RNQV9EQk9TUikpCisjZGVmaW5lCV9yZWdfRE1BX0RCVE9DUgkJKCooKFBfVlUzMilNWDFfRE1BX0RCVE9DUikpCQorI2RlZmluZQlfcmVnX0RNQV9XU1JBCQkoKigoUF9WVTMyKU1YMV9ETUFfV1NSQSkpCisjZGVmaW5lCV9yZWdfRE1BX1hTUkEJCSgqKChQX1ZVMzIpTVgxX0RNQV9YU1JBKSkKKyNkZWZpbmUJX3JlZ19ETUFfWVNSQQkJKCooKFBfVlUzMilNWDFfRE1BX1lTUkEpKQorI2RlZmluZQlfcmVnX0RNQV9XU1JCCQkoKigoUF9WVTMyKU1YMV9ETUFfV1NSQikpCisjZGVmaW5lCV9yZWdfRE1BX1hTUkIJCSgqKChQX1ZVMzIpTVgxX0RNQV9YU1JCKSkKKyNkZWZpbmUJX3JlZ19ETUFfWVNSQgkJKCooKFBfVlUzMilNWDFfRE1BX1lTUkIpKQorI2RlZmluZQlfcmVnX0RNQV9TQVIwCQkoKigoUF9WVTMyKU1YMV9ETUFfU0FSMCkpCisjZGVmaW5lCV9yZWdfRE1BX0RBUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9EQVIwKSkKKyNkZWZpbmUJX3JlZ19ETUFfQ05UUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9DTlRSMCkpCisjZGVmaW5lCV9yZWdfRE1BX0NDUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9DQ1IwKSkKKyNkZWZpbmUJX3JlZ19ETUFfUlNTUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9SU1NSMCkpCisjZGVmaW5lCV9yZWdfRE1BX0JMUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9CTFIwKSkKKyNkZWZpbmUJX3JlZ19ETUFfUlRPUjAJCSgqKChQX1ZVMzIpTVgxX0RNQV9SVE9SMCkpCisjZGVmaW5lCV9yZWdfRE1BX0JVQ1IwCQkoKigoUF9WVTMyKU1YMV9ETUFfQlVDUjApKQorCisvKiAgRE1BIGVycm9yIHR5cGUgZGVmaW5pdGlvbiAqLworI2RlZmluZQlNWDFfRE1BX0VSUl9CVE8JCTAJLy8gYnVyc3QgdGltZS1vdXQKKyNkZWZpbmUJTVgxX0RNQV9FUlJfUlRPCQkxCS8vIHJlcXVlc3QgdGltZS1vdXQKKyNkZWZpbmUJTVgxX0RNQV9FUlJfVEUJCTIJLy8gdHJhbnNmZXIgZXJyb3IKKyNkZWZpbmUJTVgxX0RNQV9FUlJfQk8JCTMJLy8gYnVmZmVyIG92ZXJmbG93CisKKworLyogRW1iZWRkZWQgU1JBTSAqLworCisjZGVmaW5lIE1YMV9TUkFNX0JBU0UJCTB4MDAzMDAwMDAKKyNkZWZpbmUgTVgxX1NSQU1fU0laRQkJMHgwMDAyMDAwMAorCisjZGVmaW5lIAorCisKKyNkZWZpbmUgTVgxQURTX1NGTEFTSF9CQVNFICAgICAgICAgMHgwQzAwMDAwMAorI2RlZmluZSBNWDFBRFNfU0ZMQVNIX1NJWkUgICAgICAgICBTWl8xNk0KKworI2RlZmluZSBNWDFBRFNfSU9fQkFTRSAgICAgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIE1YMUFEU19JT19TSVpFICAgICAgICAgICAgIFNaXzI1NksKKworI2RlZmluZSBNWDFBRFNfVklEX0JBU0UgICAgICAgICAgICAweDAwMzAwMDAwCisjZGVmaW5lIE1YMUFEU19WSURfU0laRSAgICAgICAgICAgIDB4MjYwMDAKKworI2RlZmluZSBNWDFBRFNfVklEX1NUQVJUICAgICAgICAgICBJT19BRERSRVNTKE1YMUFEU19WSURfQkFTRSkKKworI2RlZmluZQlNWDFfR1BJT19CQVNFCQkJCTB4MDAyMUMwMDAJLy8gR1BJTworI2RlZmluZQlNWDFfRVhUX1VBUlRfQkFTRQkJCTB4MTUwMDAwMDAJLy8gZXh0ZXJuYWwgVUFSVAorI2RlZmluZQlNWDFfVE1SMV9CQVNFCQkJCTB4MDAyMDIwMDAJLy8gVGltZXIxCisjZGVmaW5lIAlNWDFBRFNfRkxBU0hfQkFTRQkJCTB4MEMwMDAwMDAJLy8gc3luYyBGTEFTSAorI2RlZmluZQlNWDFfRVNSQU1fQkFTRQkJCQkweDAwMzAwMDAwCS8vIGVtYmVkZGVkIFNSQU0KKyNkZWZpbmUJTVgxQURTX1NEUkFNX0RJU0tfQkFTRQkweDBCMDAwMDAwCS8vIFNEUkFNIGRpc2sgYmFzZSAobGFzdCAxNk0gb2YgU0RSQU0pCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIE1vdG9yb2xhIE1YMSBzeXN0ZW0gcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKi8KKworLyoKKyAqICBSZWdpc3RlciBvZmZlc3RzLgorICoKKyAqLworCisjZGVmaW5lIE1YMUFEU19BSVBJMV9PRkZTRVQgICAgICAgICAgICAgMHgwMDAwMAorI2RlZmluZSBNWDFBRFNfV0RUX09GRlNFVCAgICAgICAgICAgICAgIDB4MDEwMDAKKyNkZWZpbmUgTVgxQURTX1RJTTFfT0ZGU0VUICAgICAgICAgICAgICAweDAyMDAwCisjZGVmaW5lIE1YMUFEU19USU0yX09GRlNFVCAgICAgICAgICAgICAgMHgwMzAwMAorI2RlZmluZSBNWDFBRFNfUlRDX09GRlNFVCAgICAgICAgICAgICAgIDB4MDQwMDAKKyNkZWZpbmUgTVgxQURTX0xDRENfT0ZGU0VUICAgICAgICAgICAgICAweDA1MDAwCisjZGVmaW5lIE1YMUFEU19VQVJUMV9PRkZTRVQgICAgICAgICAgICAgMHgwNjAwMAorI2RlZmluZSBNWDFBRFNfVUFSVDJfT0ZGU0VUICAgICAgICAgICAgIDB4MDcwMDAKKyNkZWZpbmUgTVgxQURTX1BXTV9PRkZTRVQgICAgICAgICAgICAgICAweDA4MDAwCisjZGVmaW5lIE1YMUFEU19ETUFDX09GRlNFVCAgICAgICAgICAgICAgMHgwOTAwMAorI2RlZmluZSBNWDFBRFNfQUlQSTJfT0ZGU0VUICAgICAgICAgICAgIDB4MTAwMDAKKyNkZWZpbmUgTVgxQURTX1NJTV9PRkZTRVQgICAgICAgICAgICAgICAweDExMDAwCisjZGVmaW5lIE1YMUFEU19VU0JEX09GRlNFVCAgICAgICAgICAgICAgMHgxMjAwMAorI2RlZmluZSBNWDFBRFNfU1BJMV9PRkZTRVQgICAgICAgICAgICAgIDB4MTMwMDAKKyNkZWZpbmUgTVgxQURTX01NQ19PRkZTRVQgICAgICAgICAgICAgICAweDE0MDAwCisjZGVmaW5lIE1YMUFEU19BU1BfT0ZGU0VUICAgICAgICAgICAgICAgMHgxNTAwMAorI2RlZmluZSBNWDFBRFNfQlRBX09GRlNFVCAgICAgICAgICAgICAgIDB4MTYwMDAKKyNkZWZpbmUgTVgxQURTX0kyQ19PRkZTRVQgICAgICAgICAgICAgICAweDE3MDAwCisjZGVmaW5lIE1YMUFEU19TU0lfT0ZGU0VUICAgICAgICAgICAgICAgMHgxODAwMAorI2RlZmluZSBNWDFBRFNfU1BJMl9PRkZTRVQgICAgICAgICAgICAgIDB4MTkwMDAKKyNkZWZpbmUgTVgxQURTX01TSENfT0ZGU0VUICAgICAgICAgICAgICAweDFBMDAwCisjZGVmaW5lIE1YMUFEU19QTExfT0ZGU0VUICAgICAgICAgICAgICAgMHgxQjAwMAorI2RlZmluZSBNWDFBRFNfR1BJT19PRkZTRVQgICAgICAgICAgICAgIDB4MUMwMDAKKyNkZWZpbmUgTVgxQURTX0VJTV9PRkZTRVQgICAgICAgICAgICAgICAweDIwMDAwCisjZGVmaW5lIE1YMUFEU19TRFJBTUNfT0ZGU0VUICAgICAgICAgICAgMHgyMTAwMAorI2RlZmluZSBNWDFBRFNfTU1BX09GRlNFVCAgICAgICAgICAgICAgIDB4MjIwMDAKKyNkZWZpbmUgTVgxQURTX0FJVENfT0ZGU0VUICAgICAgICAgICAgICAweDIzMDAwCisjZGVmaW5lIE1YMUFEU19DU0lfT0ZGU0VUICAgICAgICAgICAgICAgMHgyNDAwMAorCisKKy8qCisgKiAgUmVnaXN0ZXIgQkFTRXMsIGJhc2VkIG9uIE9GRlNFVHMKKyAqCisgKi8KKworI2RlZmluZSBNWDFBRFNfQUlQSTFfQkFTRSAgICAgICAgICAgICAoTVgxQURTX0FJUEkxX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfV0RUX0JBU0UgICAgICAgICAgICAgICAoTVgxQURTX1dEVF9PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX1RJTTFfQkFTRSAgICAgICAgICAgICAgKE1YMUFEU19USU0xX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfVElNMl9CQVNFICAgICAgICAgICAgICAoTVgxQURTX1RJTTJfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19SVENfQkFTRSAgICAgICAgICAgICAgIChNWDFBRFNfUlRDX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfTENEQ19CQVNFICAgICAgICAgICAgICAoTVgxQURTX0xDRENfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19VQVJUMV9CQVNFICAgICAgICAgICAgIChNWDFBRFNfVUFSVDFfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19VQVJUMl9CQVNFICAgICAgICAgICAgIChNWDFBRFNfVUFSVDJfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19QV01fQkFTRSAgICAgICAgICAgICAgIChNWDFBRFNfUFdNX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfRE1BQ19CQVNFICAgICAgICAgICAgICAoTVgxQURTX0RNQUNfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19BSVBJMl9CQVNFICAgICAgICAgICAgIChNWDFBRFNfQUlQSTJfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19TSU1fQkFTRSAgICAgICAgICAgICAgIChNWDFBRFNfU0lNX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfVVNCRF9CQVNFICAgICAgICAgICAgICAoTVgxQURTX1VTQkRfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19TUEkxX0JBU0UgICAgICAgICAgICAgIChNWDFBRFNfU1BJMV9PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX01NQ19CQVNFICAgICAgICAgICAgICAgKE1YMUFEU19NTUNfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19BU1BfQkFTRSAgICAgICAgICAgICAgIChNWDFBRFNfQVNQX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfQlRBX0JBU0UgICAgICAgICAgICAgICAoTVgxQURTX0JUQV9PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX0kyQ19CQVNFICAgICAgICAgICAgICAgKE1YMUFEU19JMkNfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19TU0lfQkFTRSAgICAgICAgICAgICAgIChNWDFBRFNfU1NJX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfU1BJMl9CQVNFICAgICAgICAgICAgICAoTVgxQURTX1NQSTJfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19NU0hDX0JBU0UgICAgICAgICAgICAgIChNWDFBRFNfTVNIQ19PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX1BMTF9CQVNFICAgICAgICAgICAgICAgKE1YMUFEU19QTExfT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19HUElPX0JBU0UgICAgICAgICAgICAgIChNWDFBRFNfR1BJT19PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX0VJTV9CQVNFICAgICAgICAgICAgICAgKE1YMUFEU19FSU1fT0ZGU0VUICsgTVgxQURTX0lPX0JBU0UpCisjZGVmaW5lIE1YMUFEU19TRFJBTUNfQkFTRSAgICAgICAgICAgIChNWDFBRFNfU0RSQU1DX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfTU1BX0JBU0UgICAgICAgICAgICAgICAoTVgxQURTX01NQV9PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKyNkZWZpbmUgTVgxQURTX0FJVENfQkFTRSAgICAgICAgICAgICAgKE1YMUFEU19BSVRDX09GRlNFVCArIE1YMUFEU19JT19CQVNFKQorI2RlZmluZSBNWDFBRFNfQ1NJX0JBU0UgICAgICAgICAgICAgICAoTVgxQURTX0NTSV9PRkZTRVQgKyBNWDFBRFNfSU9fQkFTRSkKKworCisvKgorICogIE1YMSBJbnRlcnJ1cHQgbnVtYmVycworICoKKyAqLworI2RlZmluZSBJTlRfU09GVElOVCAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBDU0lfSU5UICAgICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBEU1BBX01BQ19JTlQgICAgICAgICAgICAgICAgNworI2RlZmluZSBEU1BBX0lOVCAgICAgICAgICAgICAgICAgICAgOAorI2RlZmluZSBDT01QX0lOVCAgICAgICAgICAgICAgICAgICAgOQorI2RlZmluZSBNU0hDX1hJTlQgICAgICAgICAgICAgICAgICAgMTAKKyNkZWZpbmUgR1BJT19JTlRfUE9SVEEgICAgICAgICAgICAgIDExCisjZGVmaW5lIEdQSU9fSU5UX1BPUlRCICAgICAgICAgICAgICAxMgorI2RlZmluZSBHUElPX0lOVF9QT1JUQyAgICAgICAgICAgICAgMTMKKyNkZWZpbmUgTENEQ19JTlQgICAgICAgICAgICAgICAgICAgIDE0CisjZGVmaW5lIFNJTV9JTlQgICAgICAgICAgICAgICAgICAgICAxNQorI2RlZmluZSBTSU1fREFUQV9JTlQgICAgICAgICAgICAgICAgMTYKKyNkZWZpbmUgUlRDX0lOVCAgICAgICAgICAgICAgICAgICAgIDE3CisjZGVmaW5lIFJUQ19TQU1JTlQgICAgICAgICAgICAgICAgICAxOAorI2RlZmluZSBVQVJUMl9NSU5UX1BGRVJSICAgICAgICAgICAgMTkKKyNkZWZpbmUgVUFSVDJfTUlOVF9SVFMgICAgICAgICAgICAgIDIwCisjZGVmaW5lIFVBUlQyX01JTlRfRFRSICAgICAgICAgICAgICAyMQorI2RlZmluZSBVQVJUMl9NSU5UX1VBUlRDICAgICAgICAgICAgMjIKKyNkZWZpbmUgVUFSVDJfTUlOVF9UWCAgICAgICAgICAgICAgIDIzCisjZGVmaW5lIFVBUlQyX01JTlRfUlggICAgICAgICAgICAgICAyNAorI2RlZmluZSBVQVJUMV9NSU5UX1BGRVJSICAgICAgICAgICAgMjUKKyNkZWZpbmUgVUFSVDFfTUlOVF9SVFMgICAgICAgICAgICAgIDI2CisjZGVmaW5lIFVBUlQxX01JTlRfRFRSICAgICAgICAgICAgICAyNworI2RlZmluZSBVQVJUMV9NSU5UX1VBUlRDICAgICAgICAgICAgMjgKKyNkZWZpbmUgVUFSVDFfTUlOVF9UWCAgICAgICAgICAgICAgIDI5CisjZGVmaW5lIFVBUlQxX01JTlRfUlggICAgICAgICAgICAgICAzMAorI2RlZmluZSBWT0lDRV9EQUNfSU5UICAgICAgICAgICAgICAgMzEKKyNkZWZpbmUgVk9JQ0VfQURDX0lOVCAgICAgICAgICAgICAgIDMyCisjZGVmaW5lIFBFTl9EQVRBX0lOVCAgICAgICAgICAgICAgICAzMworI2RlZmluZSBQV01fSU5UICAgICAgICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgU0RIQ19JTlQgICAgICAgICAgICAgICAgICAgIDM1CisjZGVmaW5lIEkyQ19JTlQgICAgICAgICAgICAgICAgICAgICAzOQorI2RlZmluZSBDU1BJX0lOVCAgICAgICAgICAgICAgICAgICAgNDEKKyNkZWZpbmUgU1NJX1RYX0lOVCAgICAgICAgICAgICAgICAgIDQyCisjZGVmaW5lIFNTSV9UWF9FUlJfSU5UICAgICAgICAgICAgICA0MworI2RlZmluZSBTU0lfUlhfSU5UICAgICAgICAgICAgICAgICAgNDQKKyNkZWZpbmUgU1NJX1JYX0VSUl9JTlQgICAgICAgICAgICAgIDQ1CisjZGVmaW5lIFRPVUNIX0lOVCAgICAgICAgICAgICAgICAgICA0NgorI2RlZmluZSBVU0JEX0lOVDAgICAgICAgICAgICAgICAgICAgNDcKKyNkZWZpbmUgVVNCRF9JTlQxICAgICAgICAgICAgICAgICAgIDQ4CisjZGVmaW5lIFVTQkRfSU5UMiAgICAgICAgICAgICAgICAgICA0OQorI2RlZmluZSBVU0JEX0lOVDMgICAgICAgICAgICAgICAgICAgNTAKKyNkZWZpbmUgVVNCRF9JTlQ0ICAgICAgICAgICAgICAgICAgIDUxCisjZGVmaW5lIFVTQkRfSU5UNSAgICAgICAgICAgICAgICAgICA1MgorI2RlZmluZSBVU0JEX0lOVDYgICAgICAgICAgICAgICAgICAgNTMKKyNkZWZpbmUgQlRTWVNfSU5UICAgICAgICAgICAgICAgICAgIDU1CisjZGVmaW5lIEJUVElNX0lOVCAgICAgICAgICAgICAgICAgICA1NgorI2RlZmluZSBCVFdVSV9JTlQgICAgICAgICAgICAgICAgICAgNTcKKyNkZWZpbmUgVElNRVIyX0lOVCAgICAgICAgICAgICAgICAgIDU4CisjZGVmaW5lIFRJTUVSMV9JTlQgICAgICAgICAgICAgICAgICA1OQorI2RlZmluZSBETUFfRVJSICAgICAgICAgICAgICAgICAgICAgNjAKKyNkZWZpbmUgRE1BX0lOVCAgICAgICAgICAgICAgICAgICAgIDYxCisjZGVmaW5lIEdQSU9fSU5UX1BPUlREICAgICAgICAgICAgICA2MgorCisKKyNkZWZpbmUgTUFYSVJRTlVNICAgICAgICAgICAgICAgICAgICAgICA2MgorI2RlZmluZSBNQVhGSVFOVU0gICAgICAgICAgICAgICAgICAgICAgIDYyCisjZGVmaW5lIE1BWFNXSU5VTSAgICAgICAgICAgICAgICAgICAgICAgNjIKKworCisjZGVmaW5lIFRJQ0tTX1BFUl91U0VDICAgICAgICAgICAgICAgICAgMjQKKworLyoKKyAqICBUaGVzZSBhcmUgdXNlY29uZHMgTk9UIHRpY2tzLgorICoKKyAqLworI2RlZmluZSBtU0VDXzEgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgbVNFQ181ICAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogNSkKKyNkZWZpbmUgbVNFQ18xMCAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMTApCisjZGVmaW5lIG1TRUNfMjUgICAgICAgICAgICAgICAgICAgICAgICAgKG1TRUNfMSAqIDI1KQorI2RlZmluZSBTRUNfMSAgICAgICAgICAgICAgICAgICAgICAgICAgIChtU0VDXzEgKiAxMDAwKQorCisKKyNlbmRpZiAKKworCg==