ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCAwMWEzNjEwLi44MWZjMDcyIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsMjcgQEAKIENoYW5nZXMgc2luY2UgVS1Cb290IDAuMi4yOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisqIFBhdGNoZXMgYnkgRGF2aWQgTfxsbGVyLCAzMSBKYW4gMjAwMzoKKyAgLSBtaW5pbWFsIHNldHVwIGZvciBDYXJkQnVzIGJyaWRnZXMKKyAgLSBhZGQgRUVQUk9NIHJlYWQvd3JpdGUgc3VwcG9ydCBpbiB0aGUgQ1M4OTAwIGRyaXZlcgorICAtIGFkZCBzdXBwb3J0IGZvciB0aGUgYnVpbHRpbiBJMkMgY29udHJvbGxlciBpbiB0aGUgU2Ftc3VuZyBzM2MyNHgwIGNoaXBzCisgIC0gYWRkIHN1cHBvcnQgZm9yICBNUEwncyBWQ01BOSAoU2Ftc3VuZyBzM2MyNDEwIGJhc2VkKSBib2FyZAorCisqIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDA0IEZlYiAyMDAzOgorICBhZGQgc3VwcG9ydCBmb3IgUlRDIERTMTMwNworCisqIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCA1IEZlYiAyMDAzOgorICBmaXggUExQUkNSL1NDQ1IgaW5pdCBzZXF1ZW5jZSBvbiA4eHggdG8gYWxsb3cgZm9yCisgIGNoYW5nZXMgb2YgRUJERiBieSBzb2Z0d2FyZQorCisqIFBhdGNoIGJ5IFZsYWRpbWlyIEd1cmV2aWNoLCAwNyBGZWIgMjAwMzoKKyAgIkFQSS1jb21wYXRpYmlsaXR5IHBhdGNoIiBmb3IgNHh4IEkyQyBkcml2ZXIKKworKiBUUkFCIGZpeGVzIC8gZXh0ZW5zaW9uczoKKyAgLSBSZXN0b3JlIFZGRCBicmlnaHRuZXNzIGFzIHNhdmVkIGluIGVudmlyb25tZW50CisgIC0gYWRkIHN1cHBvcnQgZm9yIEZHdWppdHN1IGZsYXNoZXMKKyAgLSBtYWtlIHN1cmUgYm90aCBidXp6ZXJzIGFyZSB0dXJuZWQgb2ZmIChkcml2ZSBsb3cgbGV2ZWwpCisKICogUGF0Y2hlcyBieSBSb2JlcnQgU2Nod2ViZWwsIDA2IE1hciAyMDAzOgogICAtIGZpeCBidWcgaW4gQk9PVFAgY29kZSAobXVzdCB1c2UgTmV0Q29weUlQKQogICAtIHVwZGF0ZSBvZiBDU0IyMjYgcG9ydApkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBmZWU2MDNhLi5hNjczY2RjIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMjQ3LDYgKzI0Nyw3IEBACiBEYXZpZCBN/GxsZXIgPGQubXVlbGxlckBlbHNvZnQuY2g+CiAKIAlzbWRrMjQxMAkJQVJNOTIwVAorCVZDTUE5CQkJQVJNOTIwVAogCiBSb2xmIE9mZmVybWFubnMgPHJvZkBzeXNnby5kZT4KIApkaWZmIC0tZ2l0IGEvTUFLRUFMTCBiL01BS0VBTEwKaW5kZXggOGE0YjFkNC4uNDVlNDRlNyAxMDA2NDQKLS0tIGEvTUFLRUFMTAorKysgYi9NQUtFQUxMCkBAIC05NSw3ICs5NSw3IEBACiAjIyBBUk05IFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotTElTVF9BUk05PSJzbWRrMjQwMCBzbWRrMjQxMCB0cmFiIgorTElTVF9BUk05PSJzbWRrMjQwMCBzbWRrMjQxMCB0cmFiIFZDTUE5IgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBYc2NhbGUgU3lzdGVtcwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCA3YmEyYzQzLi5lNzdhNzQ3IDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtNjM4LDYgKzYzOCw5IEBACiAJCX0KIAlALi9ta2NvbmZpZyAtYSAkKGNhbGwgeHRyYWN0X3RyYWIsJEApIGFybSBhcm05MjB0IHRyYWIKIAorVkNNQTlfY29uZmlnCToJdW5jb25maWcKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBhcm05MjB0IHZjbWE5IG1wbAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBBUk03MjBUIFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTY2OCw3ICs2NzEsNyBAQAogIyBpMzg2CiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyBBTUQgU0M1MjAgQ0RQIAorIyMgQU1EIFNDNTIwIENEUAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogc2M1MjBfY2RwX2NvbmZpZwk6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBpMzg2IGkzODYgc2M1MjBfY2RwCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggZmI2YTY2Yi4uMDUzOWQ0MiAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtNjI0LDYgKzYyNCw3IEBACiAJCUNPTkZJR19SVENfTVBDOHh4CS0gdXNlIGludGVybmFsIFJUQyBvZiBNUEM4eHgKIAkJQ09ORklHX1JUQ19QQ0Y4NTYzCS0gdXNlIFBoaWxpcHMgUENGODU2MyBSVEMKIAkJQ09ORklHX1JUQ19NQzE0NjgxOAktIHVzZSBNQzE0NjgxOCBSVEMKKwkJQ09ORklHX1JUQ19EUzEzMDcJLSB1c2UgTWF4aW0sIEluYy4gRFMxMzA3IFJUQwogCQlDT05GSUdfUlRDX0RTMTMzNwktIHVzZSBNYXhpbSwgSW5jLiBEUzEzMzcgUlRDCiAKIC0gVGltZXN0YW1wIFN1cHBvcnQ6CmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmMgYi9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmMKaW5kZXggYTRhNzNhNi4uMGE2NzA5MCAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5jCisrKyBiL2JvYXJkL21wbC9jb21tb24vY29tbW9uX3V0aWwuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPHZpZGVvX2ZiLmg+CiAjaW5jbHVkZSAiY29tbW9uX3V0aWwuaCIKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgogI2luY2x1ZGUgPGkyYy5oPgogI2luY2x1ZGUgPGRldmljZXMuaD4KICNpbmNsdWRlIDxwY2kuaD4KQEAgLTM5LDcgKzQwLDcgQEAKIAogZXh0ZXJuIGZsYXNoX2luZm9fdCBmbGFzaF9pbmZvW107CS8qIGluZm8gZm9yIEZMQVNIIGNoaXBzICovCiAKLWltYWdlX2hlYWRlcl90IGhlYWRlcjsKK3N0YXRpYyBpbWFnZV9oZWFkZXJfdCBoZWFkZXI7CiAKIAogCkBAIC01MSw2ICs1MiwxMyBAQAogCXVuc2lnbmVkIGxvbmcgKm1hZ2ljID0gKHVuc2lnbmVkIGxvbmcgKilzcmM7CiAKIAlpbmZvID0gJmZsYXNoX2luZm9bMF07CisKKyNpZiBkZWZpbmVkKENPTkZJR19QSVA0MDUpIHx8IGRlZmluZWQoQ09ORklHX01JUDQwNSkKKwlpZihudG9obChtYWdpY1swXSkgIT0gSUhfTUFHSUMpIHsKKwkJcHJpbnRmKCJCYWQgTWFnaWMgbnVtYmVyXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwogICAJc3RhcnQgPSAwIC0gc2l6ZTsKIAlmb3IoaT1pbmZvLT5zZWN0b3JfY291bnQtMTtpPjA7aS0tKQogCXsKQEAgLTYwLDEzICs2OCwyNSBAQAogCX0KIAkvKiBzZXQtdXAgZmxhc2ggbG9jYXRpb24gKi8KIAkvKiBub3cgZXJhc2UgZmxhc2ggKi8KLQlpZihtYWdpY1swXSE9SUhfTUFHSUMpIHsKLQkJcHJpbnRmKCJCYWQgTWFnaWMgbnVtYmVyXG4iKTsKLQkJcmV0dXJuIC0xOwotCX0KIAlwcmludGYoIkVyYXNpbmcgYXQgJWx4IChzZWN0b3IgJWQpIChzdGFydCAlbHgpXG4iLAogCQkJCXN0YXJ0LGksaW5mby0+c3RhcnRbaV0pOwogCWZsYXNoX2VyYXNlIChpbmZvLCBpLCBpbmZvLT5zZWN0b3JfY291bnQtMSk7CisKKyNlbGlmIGRlZmluZWQoQ09ORklHX1ZDTUE5KQorCXN0YXJ0ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDxpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykKKwl7CisJCWluZm8tPnByb3RlY3RbaV0gPSAwOyAvKiB1bnByb3RlY3QgdGhpcyBzZWN0b3IgKi8KKwkJaWYgKHNpemUgPCBpbmZvLT5zdGFydFtpXSkKKwkJICAgIGJyZWFrOworCX0KKwkvKiBzZXQtdXAgZmxhc2ggbG9jYXRpb24gKi8KKwkvKiBub3cgZXJhc2UgZmxhc2ggKi8KKwlwcmludGYoIkVyYXNpbmcgYXQgJWx4IChzZWN0b3IgJWQpIChzdGFydCAlbHgpXG4iLAorCQkJCXN0YXJ0LDAsaW5mby0+c3RhcnRbMF0pOworCWZsYXNoX2VyYXNlIChpbmZvLCAwLCBpKTsKKworI2VuZGlmCiAJcHJpbnRmKCJmbGFzaCBlcmFzZWQsIHByb2dyYW1taW5nIGZyb20gMHglbHggMHglbHggQnl0ZXNcbiIsc3JjLHNpemUpOwogCWlmICgocmMgPSBmbGFzaF93cml0ZSAoKHVjaGFyICopc3JjLCBzdGFydCwgc2l6ZSkpICE9IDApIHsKIAkJcHV0cyAoIkVSUk9SICIpOwpAQCAtODQsNyArMTA0LDcgQEAKIAlpbWFnZV9oZWFkZXJfdCAqaGRyPSZoZWFkZXI7CiAJLyogQ29weSBoZWFkZXIgc28gd2UgY2FuIGJsYW5rIENSQyBmaWVsZCBmb3IgcmUtY2FsY3VsYXRpb24gKi8KIAltZW1jcHkgKCZoZWFkZXIsIChjaGFyICopbGRfYWRkciwgc2l6ZW9mKGltYWdlX2hlYWRlcl90KSk7Ci0JaWYgKGhkci0+aWhfbWFnaWMgICE9IElIX01BR0lDKSB7CisJaWYgKG50b2hsKGhkci0+aWhfbWFnaWMpICAhPSBJSF9NQUdJQykgewogCQlwcmludGYgKCJCYWQgTWFnaWMgTnVtYmVyXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQpAQCAtOTksMTYgKzExOSwxNiBAQAogCX0KIAlkYXRhID0gKHVsb25nKSZoZWFkZXI7CiAJbGVuICA9IHNpemVvZihpbWFnZV9oZWFkZXJfdCk7Ci0JY2hlY2tzdW0gPSBoZHItPmloX2hjcmM7CisJY2hlY2tzdW0gPSBudG9obChoZHItPmloX2hjcmMpOwogCWhkci0+aWhfaGNyYyA9IDA7CiAJaWYgKGNyYzMyICgwLCAoY2hhciAqKWRhdGEsIGxlbikgIT0gY2hlY2tzdW0pIHsKIAkJcHJpbnRmICgiQmFkIEhlYWRlciBDaGVja3N1bVxuIik7CiAJCXJldHVybiAxOwogCX0KIAlkYXRhID0gbGRfYWRkciArIHNpemVvZihpbWFnZV9oZWFkZXJfdCk7Ci0JbGVuICA9IGhkci0+aWhfc2l6ZTsKKwlsZW4gID0gbnRvaGwoaGRyLT5paF9zaXplKTsKIAlwcmludGYgKCJWZXJpZnlpbmcgQ2hlY2tzdW0gLi4uICIpOwotCWlmIChjcmMzMiAoMCwgKGNoYXIgKilkYXRhLCBsZW4pICE9IGhkci0+aWhfZGNyYykgeworCWlmIChjcmMzMiAoMCwgKGNoYXIgKilkYXRhLCBsZW4pICE9IG50b2hsKGhkci0+aWhfZGNyYykpIHsKIAkJcHJpbnRmICgiQmFkIERhdGEgQ1JDXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQpAQCAtMTUyLDE0ICsxNzIsMTQgQEAKIAkJfQogCX0KIAltZW1jcHkoYmFjay5zaWduYXR1cmUsIk1QTFwwIiw0KTsKLQlpPWdldGVudl9yKCJzZXJpYWwjIixiYWNrLnNlcmlhbF9uYW1lLDE2KTsKLQlpZihpPT0wKSB7CisJaSA9IGdldGVudl9yKCJzZXJpYWwjIixiYWNrLnNlcmlhbF9uYW1lLDE2KTsKKwlpZihpIDwgMCkgewogCQlwcmludGYoIk5vdCBwb3NzaWJsZSB0byB3cml0ZSBCYWNrdXBcbiIpOwogCQlyZXR1cm47CiAJfQogCWJhY2suc2VyaWFsX25hbWVbMTZdPTA7Ci0JaT1nZXRlbnZfcigiZXRoYWRkciIsYmFjay5ldGhfYWRkciwyMCk7Ci0JaWYoaT09MCkgeworCWkgPSBnZXRlbnZfcigiZXRoYWRkciIsYmFjay5ldGhfYWRkciwyMCk7CisJaWYoaSA8IDApIHsKIAkJcHJpbnRmKCJOb3QgcG9zc2libGUgdG8gd3JpdGUgQmFja3VwXG4iKTsKIAkJcmV0dXJuOwogCX0KQEAgLTMzOCw3ICszNTgsNyBAQAogI2RlZmluZSBTV19DU19QUklOVEYoZm10LGFyZ3MuLi4pCiAjZW5kaWYKIAotCisjaWYgZGVmaW5lZChDT05GSUdfUElQNDA1KSB8fCBkZWZpbmVkKENPTkZJR19NSVA0MDUpCiBpbnQgc3dpdGNoX2NzKHVuc2lnbmVkIGNoYXIgYm9vdCkKIHsKICAgCXVuc2lnbmVkIGxvbmcgcGJjcjsKQEAgLTM5MSw3ICs0MTEsMTIgQEAKIAkJcmV0dXJuIDA7CiAJfQogfQotCisjZWxpZiBkZWZpbmVkKENPTkZJR19WQ01BOSkKK2ludCBzd2l0Y2hfY3ModW5zaWduZWQgY2hhciBib290KQoreworICAgIHJldHVybiAwOworfQorI2VuZGlmIC8qIENPTkZJR19WQ01BOSAqLwogCiBpbnQgZG9fbXBsY29tbW9uKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L01ha2VmaWxlIGIvYm9hcmQvbXBsL3ZjbWE5L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9tcGwvdmNtYTkvTWFrZWZpbGUKQEAgLTAsMCArMSw0OSBAQAorIworIyAoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDEsIDIwMDIKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9IGxpYiQoQk9BUkQpLmEKKworT0JKUwk6PSB2Y21hOS5vIGZsYXNoLm8gY21kX3ZjbWE5Lm8KK09CSlMJKz0gLi4vY29tbW9uL2NvbW1vbl91dGlsLm8gLi4vY29tbW9uL21lbXRzdC5vCisKK1NPQkpTCTo9IG1lbXNldHVwLm8KKworJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCisJJChBUikgY3J2ICRAICReCisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykKKworZGlzdGNsZWFuOgljbGVhbgorCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ1BQRkxBR1MpICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykgPiAkQAorCistaW5jbHVkZSAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC92Y21hOS9jbWRfdmNtYTkuYyBiL2JvYXJkL21wbC92Y21hOS9jbWRfdmNtYTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGFmYzUwCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbXBsL3ZjbWE5L2NtZF92Y21hOS5jCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEZW5pcyBQZXRlciwgTVBMIEFHIFN3aXR6ZXJsYW5kLCBkLnBldGVyQG1wbC5jaAorICoKKyAqIGFkYXB0ZWQgZm9yIFZDTUE5CisgKiBEYXZpZCBNdWVsbGVyLCBFTFNPRlQgQUcsIGQubXVlbGxlckBlbHNvZnQuY2gKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlICJ2Y21hOS5oIgorI2luY2x1ZGUgIi4uL2NvbW1vbi9jb21tb25fdXRpbC5oIgorCisjaWYgZGVmaW5lZChDT05GSUdfRFJJVkVSX0NTODkwMCkKKyNpbmNsdWRlIDwuLi9kcml2ZXJzL2NzODkwMC5oPgorCitzdGF0aWMgdWNoYXIgY3M4OTAwX2Noa3N1bSh1c2hvcnQgZGF0YSkKK3sKKwlyZXR1cm4oKGRhdGEgPj4gOCkgJiAweDAwRkYpICsgKGRhdGEgJiAweDAwRkYpOworfQorCisjZW5kaWYKKworZXh0ZXJuIHZvaWQgcHJpbnRfdmNtYTlfaW5mbyh2b2lkKTsKK2V4dGVybiBpbnQgdmNtYTlfY2FudGVzdCh2b2lkKTsKK2V4dGVybiBpbnQgdmNtYTlfbmFuZHRlc3Qodm9pZCk7CitleHRlcm4gaW50IHZjbWE5X2RhY3Rlc3Qodm9pZCk7CitleHRlcm4gaW50IGRvX21wbGNvbW1vbihjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IGRvX3ZjbWE5KGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJaWYgKHN0cmNtcChhcmd2WzFdLCAiaW5mbyIpID09IDApCisJeworCQlwcmludF92Y21hOV9pbmZvKCk7CisJIAlyZXR1cm4gMDsKKyAgIAl9CisjaWYgZGVmaW5lZChDT05GSUdfRFJJVkVSX0NTODkwMCkKKwlpZiAoc3RyY21wKGFyZ3ZbMV0sICJjczg5MDBfZWVwcm9tIikgPT0gMCkgeworCQlpZiAoc3RyY21wKGFyZ3ZbMl0sICJyZWFkIikgPT0gMCkgeworCQkJdWNoYXIgYWRkcjsgdXNob3J0IGRhdGE7CisKKwkJCWFkZHIgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CisJCQljczg5MDBfZTJwcm9tX3JlYWQoYWRkciwgJmRhdGEpOworCQkJcHJpbnRmKCIweCUyLjJYOiAweCU0LjRYXG4iLCBhZGRyLCBkYXRhKTsKKwkJfSBlbHNlIGlmIChzdHJjbXAoYXJndlsyXSwgIndyaXRlIikgPT0gMCkgeworCQkJdWNoYXIgYWRkcjsgdXNob3J0IGRhdGE7CisKKwkJCWFkZHIgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CisJCQlkYXRhID0gc2ltcGxlX3N0cnRvdWwoYXJndls0XSwgTlVMTCwgMTYpOworCQkJY3M4OTAwX2UycHJvbV93cml0ZShhZGRyLCBkYXRhKTsKKwkJfSBlbHNlIGlmIChzdHJjbXAoYXJndlsyXSwgInNldGFkZHIiKSA9PSAwKSB7CisJCQl1Y2hhciBhZGRyLCBpLCBjc3VtOyB1c2hvcnQgZGF0YTsKKworCQkJLyogY2hlY2sgZm9yIHZhbGlkIGV0aGFkZHIgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspCisJCQkJaWYgKGdkLT5iZC0+YmlfZW5ldGFkZHJbaV0gIT0gMCkKKwkJCQkJYnJlYWs7CisKKwkJCWlmIChpIDwgNikgeworCQkJCWFkZHIgPSAxOworCQkJCWRhdGEgPSAweDIxNTg7CisJCQkJY3M4OTAwX2UycHJvbV93cml0ZShhZGRyLCBkYXRhKTsKKwkJCQljc3VtID0gY3M4OTAwX2Noa3N1bShkYXRhKTsKKwkJCQlhZGRyKys7CisJCQkJZm9yIChpID0gMDsgaSA8IDY7IGkrPTIpIHsKKwkJCQkJZGF0YSA9IGdkLT5iZC0+YmlfZW5ldGFkZHJbaSsxXSA8PCA4IHwKKwkJCQkJICAgICAgIGdkLT5iZC0+YmlfZW5ldGFkZHJbaV07CisJCQkJCWNzODkwMF9lMnByb21fd3JpdGUoYWRkciwgZGF0YSk7CisJCQkJCWNzdW0gKz0gY3M4OTAwX2Noa3N1bShkYXRhKTsKKwkJCQkJYWRkcisrOworCQkJCX0KKwkJCQkvKiBjYWxjdWxhdGUgaGVhZGVyIGxpbmsgYnl0ZSAqLworCQkJCWRhdGEgPSAweEExMDAgfCAoYWRkciAqIDIpOworCQkJCWNzODkwMF9lMnByb21fd3JpdGUoMCwgZGF0YSk7CisJCQkJY3N1bSArPSBjczg5MDBfY2hrc3VtKGRhdGEpOworCQkJCS8qIHdyaXRlIGNoZWNrc3VtIHdvcmQgKi8KKwkJCQljczg5MDBfZTJwcm9tX3dyaXRlKGFkZHIsICgwIC0gY3N1bSkgPDwgOCk7CisJCQl9IGVsc2UgeworCQkJCXByaW50ZigiXG5wbGVhc2UgZGVmaW5lZCAnZXRoYWRkcidcbiIpOworCQkJfQorCQl9IGVsc2UgaWYgKHN0cmNtcChhcmd2WzJdLCAiZHVtcCIpID09IDApIHsKKwkJCXVjaGFyIGFkZHIsIGVuZGFkZHIsIGNzdW07IHVzaG9ydCBkYXRhOworCisJCQlwcmludGYoIkR1bXAgb2YgQ1M4OTAwIGNvbmZpZyBkZXZpY2U6ICIpOworCQkJY3M4OTAwX2UycHJvbV9yZWFkKGFkZHIsICZkYXRhKTsKKwkJCWlmICgoZGF0YSAmIDB4RTAwMCkgPT0gMHhBMDAwKSB7CisJCQkJZW5kYWRkciA9IChkYXRhICYgMHgwMEZGKSAvIDI7CisJCQkJY3N1bSA9IGNzODkwMF9jaGtzdW0oZGF0YSk7CisJCQkJZm9yIChhZGRyID0gMTsgYWRkciA8PSBlbmRhZGRyOyBhZGRyKyspIHsKKwkJCQkJY3M4OTAwX2UycHJvbV9yZWFkKGFkZHIsICZkYXRhKTsKKwkJCQkJcHJpbnRmKCJcbjB4JTIuMlg6IDB4JTQuNFgiLCBhZGRyLCBkYXRhKTsKKwkJCQkJY3N1bSArPSBjczg5MDBfY2hrc3VtKGRhdGEpOworCQkJCX0KKwkJCQlwcmludGYoIlxuQ2hlY2tzdW06ICVzIiwgKGNzdW0gPT0gMCkgPyAib2siIDogIndyb25nIik7CisJCQl9IGVsc2UgeworCQkJCXByaW50Zigibm8gdmFsaWQgY29uZmlnIGZvdW5kIik7CisJCQl9CisJCQlwcmludGYoIlxuIik7CisJCX0KKworCQlyZXR1cm4gMDsKKwl9CisjZW5kaWYKKyNpZiAwCisJaWYgKHN0cmNtcChhcmd2WzFdLCAiY2FudGVzdCIpID09IDApIHsKKwkJdmNtYTlfY2FudGVzdCgpOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKHN0cmNtcChhcmd2WzFdLCAibmFuZHRlc3QiKSA9PSAwKSB7CisJCXZjbWE5X25hbmR0ZXN0KCk7CisJCXJldHVybiAwOworCX0KKwlpZiAoc3RyY21wKGFyZ3ZbMV0sICJkYWN0ZXN0IikgPT0gMCkgeworCQl2Y21hOV9kYWN0ZXN0KCk7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgorCisJcmV0dXJuIChkb19tcGxjb21tb24oY21kdHAsIGZsYWcsIGFyZ2MsIGFyZ3YpKTsKK30KKwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L2NvbmZpZy5tayBiL2JvYXJkL21wbC92Y21hOS9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTllZjE4NwotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21wbC92Y21hOS9jb25maWcubWsKQEAgLTAsMCArMSwyNCBAQAorIworIyAoQykgQ29weXJpZ2h0IDIwMDIKKyMgRGF2aWQgTXVlbGxlciwgRUxTT0ZUIEFHLCA8ZC5tdWVsbGVyQGVsc29mdC5jaD4KKyMKKyMgTVBMIFZDTUE5IGJvYXJkIHdpdGggUzNDMjQxMFggKEFSTTkyMFQpIGNwdQorIworIyBzZWUgaHR0cDovL3d3dy5tcGwuY2gvIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBNUEwgVkNNQTkKKyMKKworIworIyBNUEwgVkNNQTkgaGFzIDEgYmFuayBvZiA2NCBNQiBEUkFNCisjCisjIDMwMDAnMDAwMCB0byAzNDAwJzAwMDAKKyMKKyMgTGludXgtS2VybmVsIGlzIGV4cGVjdGVkIHRvIGJlIGF0IDMwMDAnODAwMCwgZW50cnkgMzAwMCc4MDAwCisjIG9wdGlvbmFsbHkgd2l0aCBhIHJhbWRpc2sgYXQgMzA4MCcwMDAwCisjCisjIHdlIGxvYWQgb3Vyc2VsZiB0byAzM0YwJzAwMDAKKyMKKyMgZG93bmxvYWQgYXJlYSBpcyAzMzAwJzAwMDAKKyMKKworCitURVhUX0JBU0UgPSAweDMzRjAwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvdmNtYTkvZmxhc2guYyBiL2JvYXJkL21wbC92Y21hOS9mbGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMDc1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9tcGwvdmNtYTkvZmxhc2guYwpAQCAtMCwwICsxLDQ0NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBBbGV4IFp1ZXBrZSA8YXp1QHN5c2dvLmRlPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKwordWxvbmcgbXlmbHVzaCh2b2lkKTsKKworCisjZGVmaW5lIEZMQVNIX0JBTktfU0laRQlQSFlTX0ZMQVNIX1NJWkUKKyNkZWZpbmUgTUFJTl9TRUNUX1NJWkUgIDB4MTAwMDAJCS8qIDY0IEtCICovCisKK2ZsYXNoX2luZm9fdCAgICBmbGFzaF9pbmZvW0NGR19NQVhfRkxBU0hfQkFOS1NdOworCisKKyNkZWZpbmUgQ01EX1JFQURfQVJSQVkJCTB4MDAwMDAwRjAKKyNkZWZpbmUgQ01EX1VOTE9DSzEJCTB4MDAwMDAwQUEKKyNkZWZpbmUgQ01EX1VOTE9DSzIJCTB4MDAwMDAwNTUKKyNkZWZpbmUgQ01EX0VSQVNFX1NFVFVQCQkweDAwMDAwMDgwCisjZGVmaW5lIENNRF9FUkFTRV9DT05GSVJNCTB4MDAwMDAwMzAKKyNkZWZpbmUgQ01EX1BST0dSQU0JCTB4MDAwMDAwQTAKKyNkZWZpbmUgQ01EX1VOTE9DS19CWVBBU1MJMHgwMDAwMDAyMAorCisjZGVmaW5lIE1FTV9GTEFTSF9BRERSMQkJKCoodm9sYXRpbGUgdTE2ICopKENGR19GTEFTSF9CQVNFICsgKDB4MDAwMDA1NTUgPDwgMSkpKQorI2RlZmluZSBNRU1fRkxBU0hfQUREUjIJCSgqKHZvbGF0aWxlIHUxNiAqKShDRkdfRkxBU0hfQkFTRSArICgweDAwMDAwMkFBIDw8IDEpKSkKKworI2RlZmluZSBCSVRfRVJBU0VfRE9ORQkJMHgwMDAwMDA4MAorI2RlZmluZSBCSVRfUkRZX01BU0sJCTB4MDAwMDAwODAKKyNkZWZpbmUgQklUX1BST0dSQU1fRVJST1IJMHgwMDAwMDAyMAorI2RlZmluZSBCSVRfVElNRU9VVAkJMHg4MDAwMDAwMCAvKiBvdXIgZmxhZyAqLworCisjZGVmaW5lIFJFQURZIDEKKyNkZWZpbmUgRVJSICAgMgorI2RlZmluZSBUTU8gICA0CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit1bG9uZyBmbGFzaF9pbml0KHZvaWQpCit7CisgICAgaW50IGksIGo7CisgICAgdWxvbmcgc2l6ZSA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgQ0ZHX01BWF9GTEFTSF9CQU5LUzsgaSsrKQorICAgIHsKKwl1bG9uZyBmbGFzaGJhc2UgPSAwOworCWZsYXNoX2luZm9baV0uZmxhc2hfaWQgPQorI2lmIGRlZmluZWQoQ09ORklHX0FNRF9MVjQwMCkKKwkgIChBTURfTUFOVUZBQ1QgJiBGTEFTSF9WRU5ETUFTSykgfAorCSAgKEFNRF9JRF9MVjQwMEIgJiBGTEFTSF9UWVBFTUFTSyk7CisjZWxpZiBkZWZpbmVkKENPTkZJR19BTURfTFY4MDApCisJICAoQU1EX01BTlVGQUNUICYgRkxBU0hfVkVORE1BU0spIHwKKwkgIChBTURfSURfTFY4MDBCICYgRkxBU0hfVFlQRU1BU0spOworI2Vsc2UKKyNlcnJvciAiVW5rbm93biBmbGFzaCBjb25maWd1cmVkIgorI2VuZGlmCisJZmxhc2hfaW5mb1tpXS5zaXplID0gRkxBU0hfQkFOS19TSVpFOworCWZsYXNoX2luZm9baV0uc2VjdG9yX2NvdW50ID0gQ0ZHX01BWF9GTEFTSF9TRUNUOworCW1lbXNldChmbGFzaF9pbmZvW2ldLnByb3RlY3QsIDAsIENGR19NQVhfRkxBU0hfU0VDVCk7CisJaWYgKGkgPT0gMCkKKwkgIGZsYXNoYmFzZSA9IFBIWVNfRkxBU0hfMTsKKwllbHNlCisJICBwYW5pYygiY29uZmlndXJlZCB0byBtYW55IGZsYXNoIGJhbmtzIVxuIik7CisJZm9yIChqID0gMDsgaiA8IGZsYXNoX2luZm9baV0uc2VjdG9yX2NvdW50OyBqKyspCisJeworCSAgICBpZiAoaiA8PSAzKQorCSAgICB7CisJCS8qIDFzdCBvbmUgaXMgMTYgS0IgKi8KKwkJaWYgKGogPT0gMCkKKwkJeworCQkJZmxhc2hfaW5mb1tpXS5zdGFydFtqXSA9IGZsYXNoYmFzZSArIDA7CisJCX0KKworCQkvKiAybmQgYW5kIDNyZCBhcmUgYm90aCA4IEtCICovCisJCWlmICgoaiA9PSAxKSB8fCAoaiA9PSAyKSkKKwkJeworCQkJZmxhc2hfaW5mb1tpXS5zdGFydFtqXSA9IGZsYXNoYmFzZSArIDB4NDAwMCArIChqLTEpKjB4MjAwMDsKKwkJfQorCisJCS8qIDR0aCAzMiBLQiAqLworCQlpZiAoaiA9PSAzKQorCQl7CisJCQlmbGFzaF9pbmZvW2ldLnN0YXJ0W2pdID0gZmxhc2hiYXNlICsgMHg4MDAwOworCQl9CisJICAgIH0KKwkgICAgZWxzZQorCSAgICB7CisJCWZsYXNoX2luZm9baV0uc3RhcnRbal0gPSBmbGFzaGJhc2UgKyAoaiAtIDMpKk1BSU5fU0VDVF9TSVpFOworCSAgICB9CisJfQorCXNpemUgKz0gZmxhc2hfaW5mb1tpXS5zaXplOworICAgIH0KKworICAgIGZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKKwkJICBDRkdfRkxBU0hfQkFTRSwKKwkJICBDRkdfRkxBU0hfQkFTRSArIF9hcm1ib290X2VuZCAtIF9hcm1ib290X3N0YXJ0LAorCQkgICZmbGFzaF9pbmZvWzBdKTsKKworICAgIGZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKKwkJICBDRkdfRU5WX0FERFIsCisJCSAgQ0ZHX0VOVl9BRERSICsgQ0ZHX0VOVl9TSVpFIC0gMSwKKwkJICAmZmxhc2hfaW5mb1swXSk7CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkIGZsYXNoX3ByaW50X2luZm8gIChmbGFzaF9pbmZvX3QgKmluZm8pCit7CisgICAgaW50IGk7CisKKyAgICBzd2l0Y2ggKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spCisgICAgeworICAgIGNhc2UgKEFNRF9NQU5VRkFDVCAmIEZMQVNIX1ZFTkRNQVNLKToKKwlwcmludGYoIkFNRDogIik7CisJYnJlYWs7CisgICAgZGVmYXVsdDoKKwlwcmludGYoIlVua25vd24gVmVuZG9yICIpOworCWJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9UWVBFTUFTSykKKyAgICB7CisgICAgY2FzZSAoQU1EX0lEX0xWNDAwQiAmIEZMQVNIX1RZUEVNQVNLKToKKwlwcmludGYoIjF4IEFtZDI5TFY0MDBCQiAoNE1iaXQpXG4iKTsKKwlicmVhazsKKyAgICBjYXNlIChBTURfSURfTFY4MDBCICYgRkxBU0hfVFlQRU1BU0spOgorCXByaW50ZigiMXggQW1kMjlMVjgwMEJCICg4TWJpdClcbiIpOworCWJyZWFrOworICAgIGRlZmF1bHQ6CisJcHJpbnRmKCJVbmtub3duIENoaXAgVHlwZVxuIik7CisJZ290byBEb25lOworCWJyZWFrOworICAgIH0KKworICAgIHByaW50ZigiICBTaXplOiAlbGQgTUIgaW4gJWQgU2VjdG9yc1xuIiwKKwkgICBpbmZvLT5zaXplID4+IDIwLCBpbmZvLT5zZWN0b3JfY291bnQpOworCisgICAgcHJpbnRmKCIgIFNlY3RvciBTdGFydCBBZGRyZXNzZXM6Iik7CisgICAgZm9yIChpID0gMDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKQorICAgIHsKKwlpZiAoKGkgJSA1KSA9PSAwKQorCXsKKwkgICAgcHJpbnRmICgiXG4gICAiKTsKKwl9CisJcHJpbnRmICgiICUwOGxYJXMiLCBpbmZvLT5zdGFydFtpXSwKKwkJaW5mby0+cHJvdGVjdFtpXSA/ICIgKFJPKSIgOiAiICAgICAiKTsKKyAgICB9CisgICAgcHJpbnRmICgiXG4iKTsKKworRG9uZToKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK2ludAlmbGFzaF9lcmFzZSAoZmxhc2hfaW5mb190ICppbmZvLCBpbnQgc19maXJzdCwgaW50IHNfbGFzdCkKK3sKKyAgICB1c2hvcnQgcmVzdWx0OworICAgIGludCBpZmxhZywgY2ZsYWcsIHByb3QsIHNlY3Q7CisgICAgaW50IHJjID0gRVJSX09LOworICAgIGludCBjaGlwOworCisgICAgLyogZmlyc3QgbG9vayBmb3IgcHJvdGVjdGlvbiBiaXRzICovCisKKyAgICBpZiAoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikKKwlyZXR1cm4gRVJSX1VOS05PV05fRkxBU0hfVFlQRTsKKworICAgIGlmICgoc19maXJzdCA8IDApIHx8IChzX2ZpcnN0ID4gc19sYXN0KSkgeworCXJldHVybiBFUlJfSU5WQUw7CisgICAgfQorCisgICAgaWYgKChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSAhPQorCShBTURfTUFOVUZBQ1QgJiBGTEFTSF9WRU5ETUFTSykpIHsKKwlyZXR1cm4gRVJSX1VOS05PV05fRkxBU0hfVkVORE9SOworICAgIH0KKworICAgIHByb3QgPSAwOworICAgIGZvciAoc2VjdD1zX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7ICsrc2VjdCkgeworCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdKSB7CisJICAgIHByb3QrKzsKKwl9CisgICAgfQorICAgIGlmIChwcm90KQorCXJldHVybiBFUlJfUFJPVEVDVEVEOworCisgICAgLyoKKyAgICAgKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0CisgICAgICogaGVyZS4gUmVtZW1iZXIgdGhhdCBvdXIgZXhjZXB0aW9uIHZlY3RvcnMgYXJlCisgICAgICogYXQgYWRkcmVzcyAwIGluIHRoZSBmbGFzaCwgYW5kIHdlIGRvbid0IHdhbnQgYQorICAgICAqICh0aWNrZXIpIGV4Y2VwdGlvbiB0byBoYXBwZW4gd2hpbGUgdGhlIGZsYXNoCisgICAgICogY2hpcCBpcyBpbiBwcm9ncmFtbWluZyBtb2RlLgorICAgICAqLworICAgIGNmbGFnID0gaWNhY2hlX3N0YXR1cygpOworICAgIGljYWNoZV9kaXNhYmxlKCk7CisgICAgaWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMoKTsKKworICAgIC8qIFN0YXJ0IGVyYXNlIG9uIHVucHJvdGVjdGVkIHNlY3RvcnMgKi8KKyAgICBmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0PD1zX2xhc3QgJiYgIWN0cmxjKCk7IHNlY3QrKykKKyAgICB7CisJcHJpbnRmKCJFcmFzaW5nIHNlY3RvciAlMmQgLi4uICIsIHNlY3QpOworCisJLyogYXJtIHNpbXBsZSwgbm9uIGludGVycnVwdCBkZXBlbmRlbnQgdGltZXIgKi8KKwlyZXNldF90aW1lcl9tYXNrZWQoKTsKKworCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdID09IDApCisJewkvKiBub3QgcHJvdGVjdGVkICovCisJICAgIHZ1X3Nob3J0ICphZGRyID0gKHZ1X3Nob3J0ICopKGluZm8tPnN0YXJ0W3NlY3RdKTsKKworCSAgICBNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKwkgICAgTUVNX0ZMQVNIX0FERFIyID0gQ01EX1VOTE9DSzI7CisJICAgIE1FTV9GTEFTSF9BRERSMSA9IENNRF9FUkFTRV9TRVRVUDsKKworCSAgICBNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKwkgICAgTUVNX0ZMQVNIX0FERFIyID0gQ01EX1VOTE9DSzI7CisJICAgICphZGRyID0gQ01EX0VSQVNFX0NPTkZJUk07CisKKwkgICAgLyogd2FpdCB1bnRpbCBmbGFzaCBpcyByZWFkeSAqLworCSAgICBjaGlwID0gMDsKKworCSAgICBkbworCSAgICB7CisJCXJlc3VsdCA9ICphZGRyOworCisJCS8qIGNoZWNrIHRpbWVvdXQgKi8KKwkJaWYgKGdldF90aW1lcl9tYXNrZWQoKSA+IENGR19GTEFTSF9FUkFTRV9UT1VUKQorCQl7CisJCSAgICBNRU1fRkxBU0hfQUREUjEgPSBDTURfUkVBRF9BUlJBWTsKKwkJICAgIGNoaXAgPSBUTU87CisJCSAgICBicmVhazsKKwkJfQorCisJCWlmICghY2hpcCAmJiAocmVzdWx0ICYgMHhGRkZGKSAmIEJJVF9FUkFTRV9ET05FKQorCQkJY2hpcCA9IFJFQURZOworCisJCWlmICghY2hpcCAmJiAocmVzdWx0ICYgMHhGRkZGKSAmIEJJVF9QUk9HUkFNX0VSUk9SKQorCQkJY2hpcCA9IEVSUjsKKworCSAgICB9ICB3aGlsZSAoIWNoaXApOworCisJICAgIE1FTV9GTEFTSF9BRERSMSA9IENNRF9SRUFEX0FSUkFZOworCisJICAgIGlmIChjaGlwID09IEVSUikKKwkgICAgeworCQlyYyA9IEVSUl9QUk9HX0VSUk9SOworCQlnb3RvIG91dGFoZXJlOworCSAgICB9CisJICAgIGlmIChjaGlwID09IFRNTykKKwkgICAgeworCQlyYyA9IEVSUl9USU1PVVQ7CisJCWdvdG8gb3V0YWhlcmU7CisJICAgIH0KKworCSAgICBwcmludGYoIm9rLlxuIik7CisJfQorCWVsc2UgLyogaXQgd2FzIHByb3RlY3RlZCAqLworCXsKKwkgICAgcHJpbnRmKCJwcm90ZWN0ZWQhXG4iKTsKKwl9CisgICAgfQorCisgICAgaWYgKGN0cmxjKCkpCisgICAgICBwcmludGYoIlVzZXIgSW50ZXJydXB0IVxuIik7CisKK291dGFoZXJlOgorICAgIC8qIGFsbG93IGZsYXNoIHRvIHNldHRsZSAtIHdhaXQgMTAgbXMgKi8KKyAgICB1ZGVsYXlfbWFza2VkKDEwMDAwKTsKKworICAgIGlmIChpZmxhZykKKyAgICAgIGVuYWJsZV9pbnRlcnJ1cHRzKCk7CisKKyAgICBpZiAoY2ZsYWcpCisgICAgICBpY2FjaGVfZW5hYmxlKCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvcHkgbWVtb3J5IHRvIGZsYXNoCisgKi8KKwordm9sYXRpbGUgc3RhdGljIGludCB3cml0ZV9od29yZCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSkKK3sKKyAgICB2dV9zaG9ydCAqYWRkciA9ICh2dV9zaG9ydCAqKWRlc3Q7CisgICAgdXNob3J0IHJlc3VsdDsKKyAgICBpbnQgcmMgPSBFUlJfT0s7CisgICAgaW50IGNmbGFnLCBpZmxhZzsKKyAgICBpbnQgY2hpcDsKKworICAgIC8qCisgICAgICogQ2hlY2sgaWYgRmxhc2ggaXMgKHN1ZmZpY2llbnRseSkgZXJhc2VkCisgICAgICovCisgICAgcmVzdWx0ID0gKmFkZHI7CisgICAgaWYgKChyZXN1bHQgJiBkYXRhKSAhPSBkYXRhKQorICAgICAgICByZXR1cm4gRVJSX05PVF9FUkFTRUQ7CisKKworICAgIC8qCisgICAgICogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dAorICAgICAqIGhlcmUuIFJlbWVtYmVyIHRoYXQgb3VyIGV4Y2VwdGlvbiB2ZWN0b3JzIGFyZQorICAgICAqIGF0IGFkZHJlc3MgMCBpbiB0aGUgZmxhc2gsIGFuZCB3ZSBkb24ndCB3YW50IGEKKyAgICAgKiAodGlja2VyKSBleGNlcHRpb24gdG8gaGFwcGVuIHdoaWxlIHRoZSBmbGFzaAorICAgICAqIGNoaXAgaXMgaW4gcHJvZ3JhbW1pbmcgbW9kZS4KKyAgICAgKi8KKyAgICBjZmxhZyA9IGljYWNoZV9zdGF0dXMoKTsKKyAgICBpY2FjaGVfZGlzYWJsZSgpOworICAgIGlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzKCk7CisKKyAgICBNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKyAgICBNRU1fRkxBU0hfQUREUjIgPSBDTURfVU5MT0NLMjsKKyAgICBNRU1fRkxBU0hfQUREUjEgPSBDTURfUFJPR1JBTTsKKyAgICAqYWRkciA9IGRhdGE7CisKKyAgICAvKiBhcm0gc2ltcGxlLCBub24gaW50ZXJydXB0IGRlcGVuZGVudCB0aW1lciAqLworICAgIHJlc2V0X3RpbWVyX21hc2tlZCgpOworCisgICAgLyogd2FpdCB1bnRpbCBmbGFzaCBpcyByZWFkeSAqLworICAgIGNoaXAgPSAwOworICAgIGRvCisgICAgeworCXJlc3VsdCA9ICphZGRyOworCisJLyogY2hlY2sgdGltZW91dCAqLworCWlmIChnZXRfdGltZXJfbWFza2VkKCkgPiBDRkdfRkxBU0hfRVJBU0VfVE9VVCkKKwl7CisJICAgIGNoaXAgPSBFUlIgfCBUTU87CisJICAgIGJyZWFrOworCX0KKwlpZiAoIWNoaXAgJiYgKChyZXN1bHQgJiAweDgwKSA9PSAoZGF0YSAmIDB4ODApKSkKKwkJY2hpcCA9IFJFQURZOworCisJaWYgKCFjaGlwICYmICgocmVzdWx0ICYgMHhGRkZGKSAmIEJJVF9QUk9HUkFNX0VSUk9SKSkKKwl7CisJCXJlc3VsdCA9ICphZGRyOworCisJCWlmICgocmVzdWx0ICYgMHg4MCkgPT0gKGRhdGEgJiAweDgwKSkKKwkJCWNoaXAgPSBSRUFEWTsKKwkJZWxzZQorCQkJY2hpcCA9IEVSUjsKKwl9CisKKyAgICB9ICB3aGlsZSAoIWNoaXApOworCisgICAgKmFkZHIgPSBDTURfUkVBRF9BUlJBWTsKKworICAgIGlmIChjaGlwID09IEVSUiB8fCAqYWRkciAhPSBkYXRhKQorICAgICAgICByYyA9IEVSUl9QUk9HX0VSUk9SOworCisgICAgaWYgKGlmbGFnKQorICAgICAgZW5hYmxlX2ludGVycnVwdHMoKTsKKworICAgIGlmIChjZmxhZykKKyAgICAgIGljYWNoZV9lbmFibGUoKTsKKworICAgIHJldHVybiByYzsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weSBtZW1vcnkgdG8gZmxhc2guCisgKi8KKworaW50IHdyaXRlX2J1ZmYgKGZsYXNoX2luZm9fdCAqaW5mbywgdWNoYXIgKnNyYywgdWxvbmcgYWRkciwgdWxvbmcgY250KQoreworICAgIHVsb25nIGNwLCB3cDsKKyAgICBpbnQgbDsKKyAgICBpbnQgaSwgcmM7CisgICAgdXNob3J0IGRhdGE7CisKKyAgICB3cCA9IChhZGRyICYgfjEpOwkvKiBnZXQgbG93ZXIgd29yZCBhbGlnbmVkIGFkZHJlc3MgKi8KKworICAgIC8qCisgICAgICogaGFuZGxlIHVuYWxpZ25lZCBzdGFydCBieXRlcworICAgICAqLworICAgIGlmICgobCA9IGFkZHIgLSB3cCkgIT0gMCkgeworCWRhdGEgPSAwOworCWZvciAoaT0wLCBjcD13cDsgaTxsOyArK2ksICsrY3ApIHsKKwkgICAgZGF0YSA9IChkYXRhID4+IDgpIHwgKCoodWNoYXIgKiljcCA8PCA4KTsKKwl9CisJZm9yICg7IGk8MiAmJiBjbnQ+MDsgKytpKSB7CisJICAgIGRhdGEgPSAoZGF0YSA+PiA4KSB8ICgqc3JjKysgPDwgOCk7CisJICAgIC0tY250OworCSAgICArK2NwOworCX0KKwlmb3IgKDsgY250PT0wICYmIGk8MjsgKytpLCArK2NwKSB7CisJICAgIGRhdGEgPSAoZGF0YSA+PiA4KSB8ICgqKHVjaGFyICopY3AgPDwgOCk7CisJfQorCisJaWYgKChyYyA9IHdyaXRlX2h3b3JkKGluZm8sIHdwLCBkYXRhKSkgIT0gMCkgeworCSAgICByZXR1cm4gKHJjKTsKKwl9CisJd3AgKz0gMjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGhhbmRsZSB3b3JkIGFsaWduZWQgcGFydAorICAgICAqLworICAgIHdoaWxlIChjbnQgPj0gMikgeworCWRhdGEgPSAqKCh2dV9zaG9ydCopc3JjKTsKKwlpZiAoKHJjID0gd3JpdGVfaHdvcmQoaW5mbywgd3AsIGRhdGEpKSAhPSAwKSB7CisJICAgIHJldHVybiAocmMpOworCX0KKwlzcmMgKz0gMjsKKwl3cCAgKz0gMjsKKwljbnQgLT0gMjsKKyAgICB9CisKKyAgICBpZiAoY250ID09IDApIHsKKwlyZXR1cm4gRVJSX09LOworICAgIH0KKworICAgIC8qCisgICAgICogaGFuZGxlIHVuYWxpZ25lZCB0YWlsIGJ5dGVzCisgICAgICovCisgICAgZGF0YSA9IDA7CisgICAgZm9yIChpPTAsIGNwPXdwOyBpPDIgJiYgY250PjA7ICsraSwgKytjcCkgeworCWRhdGEgPSAoZGF0YSA+PiA4KSB8ICgqc3JjKysgPDwgOCk7CisJLS1jbnQ7CisgICAgfQorICAgIGZvciAoOyBpPDI7ICsraSwgKytjcCkgeworCWRhdGEgPSAoZGF0YSA+PiA4KSB8ICgqKHVjaGFyICopY3AgPDwgOCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyaXRlX2h3b3JkKGluZm8sIHdwLCBkYXRhKTsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC92Y21hOS9tZW1zZXR1cC5TIGIvYm9hcmQvbXBsL3ZjbWE5L21lbXNldHVwLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA3MjFjZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21wbC92Y21hOS9tZW1zZXR1cC5TCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogTWVtb3J5IFNldHVwIHN0dWZmIC0gdGFrZW4gZnJvbSBibG9iIG1lbXNldHVwLlMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgMjAwMCAyMDAxIEVyaWsgTW91dyAoSi5BLksuTW91d0BpdHMudHVkZWxmdC5ubCkgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgIEphbi1EZXJrIEJha2tlciAoSi5ELkJha2tlckBpdHMudHVkZWxmdC5ubCkKKyAqCisgKiBNb2RpZmllZCBmb3IgdGhlIFNhbXN1bmcgU01ESzI0MTAgYnkKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogRGF2aWQgTXVlbGxlciwgRUxTT0ZUIEFHLCA8ZC5tdWVsbGVyQGVsc29mdC5jaD4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisKKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKworCisvKiBzb21lIHBhcmFtZXRlcnMgZm9yIHRoZSBib2FyZCAqLworCisjZGVmaW5lIEJXU0NPTgkweDQ4MDAwMDAwCisKKy8qIEJXU0NPTiAqLworI2RlZmluZSBEVzgJCSAJKDB4MCkKKyNkZWZpbmUgRFcxNgkJIAkoMHgxKQorI2RlZmluZSBEVzMyCQkgCSgweDIpCisjZGVmaW5lIFdBSVQJCSAJKDB4MTw8MikKKyNkZWZpbmUgVUJMQgkJIAkoMHgxPDwzKQorCisjZGVmaW5lIEIxX0JXU0NPTgkgIAkoRFcxNikKKyNkZWZpbmUgQjJfQldTQ09OCSAgCShEVzMyKQorI2RlZmluZSBCM19CV1NDT04JICAJKERXMzIpCisjZGVmaW5lIEI0X0JXU0NPTgkgIAkoRFcxNiArIFdBSVQgKyBVQkxCKQorI2RlZmluZSBCNV9CV1NDT04JICAJKERXOCArIFVCTEIpCisjZGVmaW5lIEI2X0JXU0NPTgkgIAkoRFczMikKKyNkZWZpbmUgQjdfQldTQ09OCSAgCShEVzMyKQorCisvKiBCQU5LMENPTiAqLworI2RlZmluZSBCMF9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMF9UY29zCQkgCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMF9UYWNjCQkgCTB4NQkvKiAgOGNsayAqLworI2RlZmluZSBCMF9UY29oCQkgCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMF9UYWgJCSAJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIwX1RhY3AJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgQjBfUE1DCQkgCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKworLyogQkFOSzFDT04gKi8KKyNkZWZpbmUgQjFfVGFjcwkJIAkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjFfVGNvcwkJIAkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjFfVGFjYwkJIAkweDUJLyogIDhjbGsgKi8KKyNkZWZpbmUgQjFfVGNvaAkJIAkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjFfVGFoCQkgCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMV9UYWNwCQkgCTB4MCAgICAgLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCisjZGVmaW5lIEIxX1BNQwkJIAkweDAJLyogcGFnZSBtb2RlIGRpc2FibGVkICovCisKKyNkZWZpbmUgQjJfVGFjcwkJIAkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjJfVGNvcwkJIAkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjJfVGFjYwkJIAkweDcgICAgIC8qIDE0Y2xrICovCisjZGVmaW5lIEIyX1Rjb2gJCSAJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIyX1RhaAkJIAkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjJfVGFjcAkJIAkweDAJLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCisjZGVmaW5lIEIyX1BNQwkJIAkweDAgICAgIC8qIHBhZ2UgbW9kZSBkaXNhYmxlZCAqLworCisjZGVmaW5lIEIzX1RhY3MJCSAJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIzX1Rjb3MJCSAJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIzX1RhY2MJCSAJMHg3ICAgICAvKiAxNGNsayAqLworI2RlZmluZSBCM19UY29oCQkgCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCM19UYWgJCSAJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIzX1RhY3AJCSAJMHgwCS8qIHBhZ2UgbW9kZSBpcyBub3QgdXNlZCAqLworI2RlZmluZSBCM19QTUMJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKworI2RlZmluZSBCNF9UYWNzCQkgCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCNF9UY29zCQkgCTB4MQkvKiAgMWNsayAqLworI2RlZmluZSBCNF9UYWNjCQkgCTB4NwkvKiAxNGNsayAqLworI2RlZmluZSBCNF9UY29oCQkgCTB4MQkvKiAgMWNsayAqLworI2RlZmluZSBCNF9UYWgJCSAJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEI0X1RhY3AJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgQjRfUE1DCQkgCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKworI2RlZmluZSBCNV9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCNV9UY29zCQkgCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCNV9UYWNjCQkgCTB4NQkvKiAgOGNsayAqLworI2RlZmluZSBCNV9UY29oCQkgCTB4MgkvKiAgMmNsayAqLworI2RlZmluZSBCNV9UYWgJCSAJMHgxCS8qICAxY2xrICovCisjZGVmaW5lIEI1X1RhY3AJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgQjVfUE1DCQkgCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKworI2RlZmluZSBCNl9NVAkJIAkweDMJLyogU0RSQU0gKi8KKyNkZWZpbmUgQjZfVHJjZAkgCSAJMHgxCS8qIDNjbGsgKi8KKyNkZWZpbmUgQjZfU0NBTgkJIAkweDIJLyogMTBiaXQgKi8KKworI2RlZmluZSBCN19NVAkJIAkweDMJLyogU0RSQU0gKi8KKyNkZWZpbmUgQjdfVHJjZAkJIAkweDEJLyogM2NsayAqLworI2RlZmluZSBCN19TQ0FOCQkgCTB4MgkvKiAxMGJpdCAqLworCisvKiBSRUZSRVNIIHBhcmFtZXRlciAqLworI2RlZmluZSBSRUZFTgkJIAkweDEJLyogUmVmcmVzaCBlbmFibGUgKi8KKyNkZWZpbmUgVFJFRk1ECQkgCTB4MAkvKiBDQlIoQ0FTIGJlZm9yZSBSQVMpL0F1dG8gcmVmcmVzaCAqLworI2RlZmluZSBUcnAJCSAJMHgwCS8qIDJjbGsgKi8KKyNkZWZpbmUgVHJjCQkgCTB4MwkvKiA3Y2xrICovCisjZGVmaW5lIFRjaHIJCSAJMHgyCS8qIDNjbGsgKi8KKyNkZWZpbmUgUkVGQ05UCQkgCTExMTMJLyogcGVyaW9kPTE1LjZ1cywgSENMSz02ME1oeiwgKDIwNDgrMS0xNS42KjYwKSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitfVEVYVF9CQVNFOgorCS53b3JkCVRFWFRfQkFTRQorCisuZ2xvYmwgbWVtc2V0dXAKK21lbXNldHVwOgorCS8qIG1lbW9yeSBjb250cm9sIGNvbmZpZ3VyYXRpb24gKi8KKwkvKiBtYWtlIHIwIHJlbGF0aXZlIHRoZSBjdXJyZW50IGxvY2F0aW9uIHNvIHRoYXQgaXQgKi8KKwkvKiByZWFkcyBTTVJEQVRBIG91dCBvZiBGTEFTSCByYXRoZXIgdGhhbiBtZW1vcnkgISAqLworCWxkciAgICAgcjAsID1TTVJEQVRBCisJbGRyCXIxLCBfVEVYVF9CQVNFCisJc3ViCXIwLCByMCwgcjEKKwlsZHIJcjEsID1CV1NDT04JLyogQnVzIFdpZHRoIFN0YXR1cyBDb250cm9sbGVyICovCisJYWRkICAgICByMiwgcjAsICMxMyo0CiswOgorCWxkciAgICAgcjMsIFtyMF0sICM0CisJc3RyICAgICByMywgW3IxXSwgIzQKKwljbXAgICAgIHIyLCByMAorCWJuZSAgICAgMGIKKworCS8qIGV2ZXJ5dGhpbmcgaXMgZmluZSBub3cgKi8KKwltb3YJcGMsIGxyCisKKwkubHRvcmcKKy8qIHRoZSBsaXRlcmFsIHBvb2xzIG9yaWdpbiAqLworCitTTVJEQVRBOgorICAgIC53b3JkICgwKyhCMV9CV1NDT048PDQpKyhCMl9CV1NDT048PDgpKyhCM19CV1NDT048PDEyKSsoQjRfQldTQ09OPDwxNikrKEI1X0JXU0NPTjw8MjApKyhCNl9CV1NDT048PDI0KSsoQjdfQldTQ09OPDwyOCkpCisgICAgLndvcmQgKChCMF9UYWNzPDwxMykrKEIwX1Rjb3M8PDExKSsoQjBfVGFjYzw8OCkrKEIwX1Rjb2g8PDYpKyhCMF9UYWg8PDQpKyhCMF9UYWNwPDwyKSsoQjBfUE1DKSkKKyAgICAud29yZCAoKEIxX1RhY3M8PDEzKSsoQjFfVGNvczw8MTEpKyhCMV9UYWNjPDw4KSsoQjFfVGNvaDw8NikrKEIxX1RhaDw8NCkrKEIxX1RhY3A8PDIpKyhCMV9QTUMpKQorICAgIC53b3JkICgoQjJfVGFjczw8MTMpKyhCMl9UY29zPDwxMSkrKEIyX1RhY2M8PDgpKyhCMl9UY29oPDw2KSsoQjJfVGFoPDw0KSsoQjJfVGFjcDw8MikrKEIyX1BNQykpCisgICAgLndvcmQgKChCM19UYWNzPDwxMykrKEIzX1Rjb3M8PDExKSsoQjNfVGFjYzw8OCkrKEIzX1Rjb2g8PDYpKyhCM19UYWg8PDQpKyhCM19UYWNwPDwyKSsoQjNfUE1DKSkKKyAgICAud29yZCAoKEI0X1RhY3M8PDEzKSsoQjRfVGNvczw8MTEpKyhCNF9UYWNjPDw4KSsoQjRfVGNvaDw8NikrKEI0X1RhaDw8NCkrKEI0X1RhY3A8PDIpKyhCNF9QTUMpKQorICAgIC53b3JkICgoQjVfVGFjczw8MTMpKyhCNV9UY29zPDwxMSkrKEI1X1RhY2M8PDgpKyhCNV9UY29oPDw2KSsoQjVfVGFoPDw0KSsoQjVfVGFjcDw8MikrKEI1X1BNQykpCisgICAgLndvcmQgKChCNl9NVDw8MTUpKyhCNl9UcmNkPDwyKSsoQjZfU0NBTikpCisgICAgLndvcmQgKChCN19NVDw8MTUpKyhCN19UcmNkPDwyKSsoQjdfU0NBTikpCisgICAgLndvcmQgKChSRUZFTjw8MjMpKyhUUkVGTUQ8PDIyKSsoVHJwPDwyMCkrKFRyYzw8MTgpKyhUY2hyPDwxNikrUkVGQ05UKQorICAgIC53b3JkIDB4MzIKKyAgICAud29yZCAweDMwCisgICAgLndvcmQgMHgzMApkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L3UtYm9vdC5sZHMgYi9ib2FyZC9tcGwvdmNtYTkvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzljMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbXBsL3ZjbWE5L3UtYm9vdC5sZHMKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogR2FyeSBKZW5uZWpvaG4sIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIDxnakBkZW54LmRlPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKK09VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIikKKy8qT1VUUFVUX0ZPUk1BVCgiZWxmMzItYXJtIiwgImVsZjMyLWFybSIsICJlbGYzMi1hcm0iKSovCitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworeworICAgICAgICAuID0gMHgwMDAwMDAwMDsKKworICAgICAgICAuID0gQUxJR04oNCk7CisJLnRleHQgICAgICA6CisJeworCSAgY3B1L2FybTkyMHQvc3RhcnQubwkoLnRleHQpCisJICAqKC50ZXh0KQorCX0KKworICAgICAgICAuID0gQUxJR04oNCk7CisgICAgICAgIC5yb2RhdGEgOiB7ICooLnJvZGF0YSkgfQorCisgICAgICAgIC4gPSBBTElHTig0KTsKKyAgICAgICAgLmRhdGEgOiB7ICooLmRhdGEpIH0KKworICAgICAgICAuID0gQUxJR04oNCk7CisgICAgICAgIC5nb3QgOiB7ICooLmdvdCkgfQorCisJYXJtYm9vdF9lbmRfZGF0YSA9IC47CisKKyAgICAgICAgLiA9IEFMSUdOKDQpOworICAgICAgICAuYnNzIDogeyAqKC5ic3MpIH0KKworCWFybWJvb3RfZW5kID0gLjsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC92Y21hOS92Y21hOS5jIGIvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzNTUyZQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21wbC92Y21hOS92Y21hOS5jCkBAIC0wLDAgKzEsMjQ4IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIERhdmlkIE11ZWxsZXIsIEVMU09GVCBBRywgPGQubXVlbGxlckBlbHNvZnQuY2g+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPHMzYzI0MTAuaD4KKyNpbmNsdWRlIDxpMmMuaD4KKworI2luY2x1ZGUgInZjbWE5LmgiCisjaW5jbHVkZSAiLi4vY29tbW9uL2NvbW1vbl91dGlsLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBGQ0xLX1NQRUVEIDEKKworI2lmIEZDTEtfU1BFRUQ9PTAJCS8qIEZvdXQgPSAyMDNNSHosIEZpbiA9IDEyTUh6IGZvciBBdWRpbyAqLworI2RlZmluZSBNX01ESVYJMHhDMworI2RlZmluZSBNX1BESVYJMHg0CisjZGVmaW5lIE1fU0RJVgkweDEKKyNlbGlmIEZDTEtfU1BFRUQ9PTEJCS8qIEZvdXQgPSAyMDIuOE1IeiAqLworI2RlZmluZSBNX01ESVYJMHhBMQorI2RlZmluZSBNX1BESVYJMHgzCisjZGVmaW5lIE1fU0RJVgkweDEKKyNlbmRpZgorCisjZGVmaW5lIFVTQl9DTE9DSyAxCisKKyNpZiBVU0JfQ0xPQ0s9PTAKKyNkZWZpbmUgVV9NX01ESVYJMHhBMQorI2RlZmluZSBVX01fUERJVgkweDMKKyNkZWZpbmUgVV9NX1NESVYJMHgxCisjZWxpZiBVU0JfQ0xPQ0s9PTEKKyNkZWZpbmUgVV9NX01ESVYJMHg0OAorI2RlZmluZSBVX01fUERJVgkweDMKKyNkZWZpbmUgVV9NX1NESVYJMHgyCisjZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIGRlbGF5KHVuc2lnbmVkIGxvbmcgbG9vcHMpCit7CisJX19hc21fXyB2b2xhdGlsZSAoIjE6XG4iCisJICAic3VicyAlMCwgJTEsICMxXG4iCisJICAiYm5lIDFiIjoiPXIiIChsb29wcyk6IjAiIChsb29wcykpOworfQorCisvKgorICogTWlzY2VsbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGlzYXRpb25zCisgKi8KKworaW50IGJvYXJkX2luaXQodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCS8qIHRvIHJlZHVjZSBQTEwgbG9jayB0aW1lLCBhZGp1c3QgdGhlIExPQ0tUSU1FIHJlZ2lzdGVyICovCisJckxPQ0tUSU1FID0gMHhGRkZGRkY7CisKKwkvKiBjb25maWd1cmUgTVBMTCAqLworCXJNUExMQ09OID0gKChNX01ESVYgPDwgMTIpICsgKE1fUERJViA8PCA0KSArIE1fU0RJVik7CisKKwkvKiBzb21lIGRlbGF5IGJldHdlZW4gTVBMTCBhbmQgVVBMTCAqLworCWRlbGF5ICg0MDAwKTsKKworCS8qIGNvbmZpZ3VyZSBVUExMICovCisJclVQTExDT04gPSAoKFVfTV9NRElWIDw8IDEyKSArIChVX01fUERJViA8PCA0KSArIFVfTV9TRElWKTsKKworCS8qIHNvbWUgZGVsYXkgYmV0d2VlbiBNUExMIGFuZCBVUExMICovCisJZGVsYXkgKDgwMDApOworCisJLyogc2V0IHVwIHRoZSBJL08gcG9ydHMgKi8KKwlyR1BBQ09OID0gMHgwMDdGRkZGRjsKKwlyR1BCQ09OID0gMHgwMDJBQUFBQTsKKwlyR1BCVVAgPSAweDAwMDAwMkJGOworCXJHUENDT04gPSAweEFBQUFBQUFBOworCXJHUENVUCA9IDB4MDAwMEZGRkY7CisJckdQRENPTiA9IDB4QUFBQUFBQUE7CisJckdQRFVQID0gMHgwMDAwRkZGRjsKKwlyR1BFQ09OID0gMHhBQUFBQUFBQTsKKwlyR1BFVVAgPSAweDAwMDAzN0Y3OworCXJHUEZDT04gPSAweDAwMDAwMDAwOworCXJHUEZVUCA9IDB4MDAwMDAwMDA7CisJckdQR0NPTiA9IDB4RkZFQUZGNUE7CisJckdQR1VQID0gMHgwMDAwRjBEQzsKKwlyR1BIQ09OID0gMHgwMDI4QUFBQTsKKwlyR1BIVVAgPSAweDAwMDAwNjU2OworCisJLyogc2V0dXAgY29ycmVjdCBJUlEgbW9kZXMgZm9yIE5JQyAqLworCXJFWFRJTlQyID0gKHJFWFRJTlQyICYgfig3PDw4KSkgfCAoNDw8OCk7IC8qIHJpc2luZyBlZGdlIG1vZGUgKi8KKworCS8qIGluaXQgc2VyaWFsICovCisJZ2QtPmJhdWRyYXRlID0gQ09ORklHX0JBVURSQVRFOworCWdkLT5oYXZlX2NvbnNvbGUgPSAxOworCXNlcmlhbF9pbml0KCk7CisKKwkvKiBhcmNoIG51bWJlciBvZiBWQ01BOS1Cb2FyZCAqLworCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSAyMjc7CisKKwkvKiBhZHJlc3Mgb2YgYm9vdCBwYXJhbWV0ZXJzICovCisJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4MzAwMDAxMDA7CisKKwlpY2FjaGVfZW5hYmxlKCk7CisJZGNhY2hlX2VuYWJsZSgpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBkcmFtX2luaXQodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBHZXQgc29tZSBCb2FyZC9QTEQgSW5mbworICovCisKK3N0YXRpYyB1Y2hhciBHZXRfUExEX0lEKHZvaWQpCit7CisJcmV0dXJuKCoodm9sYXRpbGUgdWNoYXIgKilQTERfSURfUkVHKTsKK30KKworc3RhdGljIHVjaGFyIEdldF9QTERfQk9BUkQodm9pZCkKK3sKKwlyZXR1cm4oKih2b2xhdGlsZSB1Y2hhciAqKVBMRF9CT0FSRF9SRUcpOworfQorCitzdGF0aWMgdWNoYXIgR2V0X1BMRF9WZXJzaW9uKHZvaWQpCit7CisJcmV0dXJuKChHZXRfUExEX0lEKCkgPj4gNCkgJiAweDBGKTsKK30KKworc3RhdGljIHVjaGFyIEdldF9QTERfUmV2aXNpb24odm9pZCkKK3sKKwlyZXR1cm4oR2V0X1BMRF9JRCgpICYgMHgwRik7Cit9CisKK3N0YXRpYyBpbnQgR2V0X0JvYXJkX0NvbmZpZyh2b2lkKQoreworCXVjaGFyIGNvbmZpZyA9IEdldF9QTERfQk9BUkQoKSAmIDB4MDM7CisKKwlpZiAoY29uZmlnID09IDMpCisJICAgIHJldHVybiAxOworCWVsc2UKKwkgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1Y2hhciBHZXRfQm9hcmRfUENCKHZvaWQpCit7CisJcmV0dXJuKCgoR2V0X1BMRF9CT0FSRCgpID4+IDQpICYgMHgwMykgKyAnQScpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBDaGVjayBCb2FyZCBJZGVudGl0eToKKyAqLworCitpbnQgY2hlY2tib2FyZCh2b2lkKQoreworCXVuc2lnbmVkIGNoYXIgc1s1MF07CisJdW5zaWduZWQgY2hhciBiYywgdmFyLCByYzsKKwlpbnQgaTsKKwliYWNrdXBfdCAqYiA9IChiYWNrdXBfdCAqKSBzOworCisJcHV0cygiQm9hcmQ6ICIpOworCisJaSA9IGdldGVudl9yKCJzZXJpYWwjIiwgcywgMzIpOworCWlmICgoaSA8IDApIHx8IHN0cm5jbXAgKHMsICJWQ01BOSIsIDUpKSB7CisJCWdldF9iYWNrdXBfdmFsdWVzIChiKTsKKwkJaWYgKHN0cm5jbXAgKGItPnNpZ25hdHVyZSwgIk1QTFwwIiwgNCkgIT0gMCkgeworCQkJcHV0cyAoIiMjIyBObyBIVyBJRCAtIGFzc3VtaW5nIFZDTUE5Iik7CisJCX0gZWxzZSB7CisJCQliLT5zZXJpYWxfbmFtZVs1XSA9IDA7CisJCQlwcmludGYgKCIlcy0lZCBSZXYgJWMgU046ICVzIiwgYi0+c2VyaWFsX25hbWUsIEdldF9Cb2FyZF9Db25maWcoKSwKKwkJCQkJR2V0X0JvYXJkX1BDQigpLCAmYi0+c2VyaWFsX25hbWVbNl0pOworCQl9CisJfSBlbHNlIHsKKwkJc1s1XSA9IDA7CisJCXByaW50ZiAoIiVzLSVkIFJldiAlYyBTTjogJXMiLCBzLCBHZXRfQm9hcmRfQ29uZmlnKCksIEdldF9Cb2FyZF9QQ0IoKSwKKwkJCQkmc1s2XSk7CisJfQorCXByaW50ZigiXG4iKTsKKwlyZXR1cm4oMCk7Cit9CisKKworCit2b2lkIHByaW50X3ZjbWE5X3Jldih2b2lkKQoreworCXByaW50ZigiQm9hcmQ6IFZDTUE5LSVkIFJldjogJWMgKFBMRCBWZXI6ICVkLCBSZXY6ICVkKVxuIiwKKwkJR2V0X0JvYXJkX0NvbmZpZygpLCBHZXRfQm9hcmRfUENCKCksCisJCUdldF9QTERfVmVyc2lvbigpLCBHZXRfUExEX1JldmlzaW9uKCkpOworfQorCisKK2ludCBsYXN0X3N0YWdlX2luaXQodm9pZCkKK3sKKwlwcmludF92Y21hOV9yZXYoKTsKKwlzaG93X3N0ZGlvX2RldigpOworCWNoZWNrX2VudigpOworCXJldHVybiAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBzb21lIGhlbHBpbmcgcm91dGluZXMKKyAqLworCitpbnQgb3ZlcndyaXRlX2NvbnNvbGUodm9pZCkKK3sKKwkvKiByZXR1cm4gVFJVRSBpZiBjb25zb2xlIHNob3VsZCBiZSBvdmVyd3JpdHRlbiAqLworCXJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogUHJpbnQgVkNNQTkgSW5mbworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBwcmludF92Y21hOV9pbmZvKHZvaWQpCit7CisgICAgcHJpbnRfdmNtYTlfcmV2KCk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmggYi9ib2FyZC9tcGwvdmNtYTkvdmNtYTkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzBlM2E0Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogRGF2aWQgTXVlbGxlciwgRUxTT0ZUIEFHLCBkLm11ZWxsZXJAZWxzb2Z0LmNoCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKgorICovCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEdsb2JhbCByb3V0aW5lcyB1c2VkIGZvciBWQ01BOQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK2V4dGVybiBpbnQgIG1lbV90ZXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgcmFtc2l6ZSxpbnQgbW9kZSk7CisKK3ZvaWQgcHJpbnRfdmNtYTlfaW5mbyh2b2lkKTsKKworCisjZGVmaW5lIFBMRF9CQVNFX0FERFJFU1MJCTB4MkMwMDAxMDAKKyNkZWZpbmUgUExEX0lEX1JFRwkJCShQTERfQkFTRV9BRERSRVNTICsgMCkKKyNkZWZpbmUgUExEX05JQ19SRUcJCQkoUExEX0JBU0VfQUREUkVTUyArIDEpCisjZGVmaW5lIFBMRF9DQU5fUkVHCQkJKFBMRF9CQVNFX0FERFJFU1MgKyAyKQorI2RlZmluZSBQTERfTUlTQ19SRUcJCQkoUExEX0JBU0VfQUREUkVTUyArIDMpCisjZGVmaW5lIFBMRF9HUENEX1JFRwkJCShQTERfQkFTRV9BRERSRVNTICsgNCkKKyNkZWZpbmUgUExEX0JPQVJEX1JFRwkJCShQTERfQkFTRV9BRERSRVNTICsgNSkKKworCisKZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvZmxhc2guYyBiL2JvYXJkL3RyYWIvZmxhc2guYwppbmRleCBhNGYxNjRiLi5kODZjNGJmIDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL2ZsYXNoLmMKKysrIGIvYm9hcmQvdHJhYi9mbGFzaC5jCkBAIC0xMjQsMTEgKzEyNCwxMCBAQAogCiAJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSB7CiAJY2FzZSAoRkxBU0hfTUFOX0FNRCAmIEZMQVNIX1ZFTkRNQVNLKToKLQkJcHJpbnRmICgiQU1EOiAiKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcHJpbnRmICgiVW5rbm93biBWZW5kb3IgIik7Ci0JCWJyZWFrOworCQkJcHJpbnRmICgiQU1EICIpOwkJYnJlYWs7CisJY2FzZSAoRkxBU0hfTUFOX0ZVSiAmIEZMQVNIX1ZFTkRNQVNLKToKKwkJCXByaW50ZiAoIkZVSklUU1UgIik7CQlicmVhazsKKwlkZWZhdWx0OglwcmludGYgKCJVbmtub3duIFZlbmRvciAiKTsJYnJlYWs7CiAJfQogCiAJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1RZUEVNQVNLKSB7CkBAIC00NzcsNyArNDc2LDkgQEAKIAljYXNlIEFNRF9NQU5VRkFDVDoKIAkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9NQU5fQU1EOwogCQlicmVhazsKLQorCWNhc2UgRlVKX01BTlVGQUNUOgorCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX01BTl9GVUo7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWluZm8tPmZsYXNoX2lkID0gRkxBU0hfVU5LTk9XTjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMDsKZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvdHJhYi5jIGIvYm9hcmQvdHJhYi90cmFiLmMKaW5kZXggMTExYzg2MS4uZTNlODU1MyAxMDA2NDQKLS0tIGEvYm9hcmQvdHJhYi90cmFiLmMKKysrIGIvYm9hcmQvdHJhYi90cmFiLmMKQEAgLTMwLDYgKzMwLDEzIEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorI2lmZGVmIENGR19CUklHSFRORVNTCitzdGF0aWMgdm9pZCBzcGlfaW5pdCh2b2lkKTsKK3N0YXRpYyB2b2lkIHdhaXRfdHJhbnNtaXRfZG9uZSh2b2lkKTsKK3N0YXRpYyB2b2lkIHRzYzIwMDBfd3JpdGUodW5zaWduZWQgaW50IHBhZ2UsIHVuc2lnbmVkIGludCByZWcsIAorCQkJCQkJICB1bnNpZ25lZCBpbnQgZGF0YSk7CitzdGF0aWMgdm9pZCB0c2MyMDAwX3NldF9icmlnaHRuZXNzKHZvaWQpOworI2VuZGlmCiAjaWZkZWYgQ09ORklHX01PREVNX1NVUFBPUlQKIHN0YXRpYyBpbnQga2V5X3ByZXNzZWQodm9pZCk7CiBleHRlcm4gdm9pZCBkaXNhYmxlX3B1dGModm9pZCk7CkBAIC0xMDQsNiArMTExLDEwIEBACiAJLyogYWRyZXNzIG9mIGJvb3QgcGFyYW1ldGVycyAqLwogCWdkLT5iZC0+YmlfYm9vdF9wYXJhbXMgPSAweDBjMDAwMTAwOwogCisJLyogTWFrZSBzdXJlIGJvdGggYnV6emVycyBhcmUgdHVybmVkIG9mZiAqLworCXJQRENPTiB8PSAweDU0MDA7CisJclBEREFUICY9IH4weEUwOworCiAjaWZkZWYgQ09ORklHX1ZGRAogCXZmZF9pbml0X2Nsb2NrcygpOwogI2VuZGlmIC8qIENPTkZJR19WRkQgKi8KQEAgLTE2NCw2ICsxNzUsOSBAQAogCQlmcmVlIChzdHIpOwogCX0KIAorI2lmZGVmIENGR19CUklHSFRORVNTCisJdHNjMjAwMF9zZXRfYnJpZ2h0bmVzcygpOworI2VuZGlmCiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMjg4LDMgKzMwMiw3NCBAQAogCXJldHVybiAoY29tcGFyZV9tYWdpYyhLQkRfREFUQSwgQ09ORklHX01PREVNX0tFWV9NQUdJQykgPT0gMCk7CiB9CiAjZW5kaWYJLyogQ09ORklHX01PREVNX1NVUFBPUlQgKi8KKworI2lmZGVmIENGR19CUklHSFRORVNTCisKKyNkZWZpbmUgU0VUX0NTX1RPVUNIICAgICAgICAoclBEREFUICY9IDB4NUZGKQorI2RlZmluZSBDTFJfQ1NfVE9VQ0ggICAgICAgIChyUEREQVQgfD0gMHgyMDApCisKK3N0YXRpYyB2b2lkIHNwaV9pbml0KHZvaWQpCit7CisJaW50IGk7CisKKwkvKiBDb25maWd1cmUgSS9PIHBvcnRzLiAqLworIAlyUERDT04gPSAoclBEQ09OICYgMHhGM0ZGRkYpIHwgMHgwNDAwMDA7CisJclBHQ09OID0gKHJQR0NPTiAmIDB4MEYzRkZGKSB8IDB4MDA4MDAwOworCXJQR0NPTiA9IChyUEdDT04gJiAweDBDRkZGRikgfCAweDAyMDAwMDsKKwlyUEdDT04gPSAoclBHQ09OICYgMHgwM0ZGRkYpIHwgMHgwODAwMDA7CisKKwlDTFJfQ1NfVE9VQ0g7CisKKwlyU1BQUkUgPSAweDFGOyAvKiBCYXVkcmF0ZSBjYS4gNTE0a0h6ICovCisJclNQUElOID0gMHgwMTsgIC8qIFNQSS1NT1NJIGhvbGRzIExldmVsIGFmdGVyIGxhc3QgYml0ICovCisJclNQQ09OID0gMHgxQTsgIC8qIFBvbGxpbmcsIFByZXNjYWxlciwgTWFzdGVyLCBDUE9MPTAsIENQSEE9MSAqLworCisJLyogRHVtbXkgYnl0ZSBlbnN1cmVzIGNsb2NrIHRvIGJlIGxvdy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQlyU1BUREFUID0gMHhGRjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRfdHJhbnNtaXRfZG9uZSh2b2lkKQoreworCXdoaWxlICghKHJTUFNUQSAmIDB4MDEpKTsgLyogd2FpdCB1bnRpbCB0cmFuc2ZlciBpcyBkb25lICovCit9CisKK3N0YXRpYyB2b2lkIHRzYzIwMDBfd3JpdGUodW5zaWduZWQgaW50IHBhZ2UsIHVuc2lnbmVkIGludCByZWcsIAorCQkJCQkJICB1bnNpZ25lZCBpbnQgZGF0YSkKK3sKKwl1bnNpZ25lZCBpbnQgY29tbWFuZDsKKworCVNFVF9DU19UT1VDSDsKKwljb21tYW5kID0gMHgwMDAwOworCWNvbW1hbmQgfD0gKHBhZ2UgPDwgMTEpOworCWNvbW1hbmQgfD0gKHJlZyA8PCA1KTsKKworCXJTUFREQVQgPSAoY29tbWFuZCAmIDB4RkYwMCkgPj4gODsKKwl3YWl0X3RyYW5zbWl0X2RvbmUoKTsKKwlyU1BUREFUID0gKGNvbW1hbmQgJiAweDAwRkYpOworCXdhaXRfdHJhbnNtaXRfZG9uZSgpOworCXJTUFREQVQgPSAoZGF0YSAmIDB4RkYwMCkgPj4gODsKKwl3YWl0X3RyYW5zbWl0X2RvbmUoKTsKKwlyU1BUREFUID0gKGRhdGEgJiAweDAwRkYpOworCXdhaXRfdHJhbnNtaXRfZG9uZSgpOworCisJQ0xSX0NTX1RPVUNIOworfQorCitzdGF0aWMgdm9pZCB0c2MyMDAwX3NldF9icmlnaHRuZXNzKHZvaWQpCit7CisJdWNoYXIgdG1wWzEwXTsKKwlpbnQgaSwgYnI7CisKKwlzcGlfaW5pdCgpOworCXRzYzIwMDBfd3JpdGUoMSwgMiwgMHgwKTsgLyogUG93ZXIgdXAgREFDICovCisKKwlpID0gZ2V0ZW52X3IoImJyaWdodG5lc3MiLCB0bXAsIHNpemVvZih0bXApKTsKKwliciA9IChpID4gMCkKKwkJPyAoaW50KSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkKKwkJOiBDRkdfQlJJR0hUTkVTUzsKKworCXRzYzIwMDBfd3JpdGUoMCwgMHhiLCBiciAmIDB4ZmYpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC90cmFiL3ZmZC5jIGIvYm9hcmQvdHJhYi92ZmQuYwppbmRleCBmYTExOTRjLi41ZTYwMWVmIDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL3ZmZC5jCisrKyBiL2JvYXJkL3RyYWIvdmZkLmMKQEAgLTU1LDcgKzU1LDYgQEAKICNkZWZpbmUgQkxBVQkweDBDCiAjZGVmaW5lIFZJT0xFVFQJMFgwRAogCi11bG9uZwl2ZmRiYXNlOwogdWxvbmcJZnJhbWVfYnVmX3NpemU7CiAjZGVmaW5lIGZyYW1lX2J1Zl9vZmZzIDQKIApAQCAtODYsNyArODUsNyBAQAogCWVsc2UKIAkJdmFsID0gfjA7CiAKLQlmb3IgKGFkciA9IHZmZGJhc2U7IGFkciA8PSAodmZkYmFzZSs3MTY4KTsgYWRyICs9IDQpIHsKKwlmb3IgKGFkciA9IGdkLT5mYl9iYXNlOyBhZHIgPD0gKGdkLT5mYl9iYXNlKzcxNjgpOyBhZHIgKz0gNCkgewogCQkoKih2b2xhdGlsZSB1bG9uZyopKGFkcikpID0gdmFsOwogCX0KIApAQCAtMTAwLDcgKzk5LDcgQEAKICAJCQkvKiB3cmFwIGFycm91bmQgaWYgb2Zmc2V0IChzZWUgbWFudWFsIFMzQzI0MDApICovCiAJCQlpZiAoYml0Pj1mcmFtZV9idWZfc2l6ZSo4KQogCQkJCWJpdCA9IGJpdCAtIChmcmFtZV9idWZfc2l6ZSAqIDgpOwotCQkJYWRyID0gdmZkYmFzZSArIChiaXQvMzIpICogNCArICgzIC0gKGJpdCUzMikgLyA4KTsKKwkJCWFkciA9IGdkLT5mYl9iYXNlICsgKGJpdC8zMikgKiA0ICsgKDMgLSAoYml0JTMyKSAvIDgpOwogCQkJYml0X25yID0gYml0ICUgODsKIAkJCWJpdF9uciA9IChiaXRfbnIgPiAzKSA/IGJpdF9uci00IDogYml0X25yKzQ7CiAJCQl0ZW1wPSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqKShhZHIpKTsKQEAgLTExNyw3ICsxMTYsNyBAQAogCQkJLyogd3JhcCBhcnJvdW5kIGlmIG9mZnNldCAoc2VlIG1hbnVhbCBTM0MyNDAwKSAqLwogCQkJaWYgKGJpdD49ZnJhbWVfYnVmX3NpemUqOCkKIAkJCQliaXQgPSBiaXQtKGZyYW1lX2J1Zl9zaXplKjgpOwotCQkJYWRyID0gdmZkYmFzZSsoYml0LzMyKSo0KygzLShiaXQlMzIpLzgpOworCQkJYWRyID0gZ2QtPmZiX2Jhc2UrKGJpdC8zMikqNCsoMy0oYml0JTMyKS84KTsKIAkJCWJpdF9uciA9IGJpdCU4OwogCQkJYml0X25yID0gKGJpdF9ucj4zKT9iaXRfbnItNDpiaXRfbnIrNDsKIAkJCXRlbXA9KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciopKGFkcikpOwpAQCAtMTM4LDcgKzEzNyw3IEBACiAJCQkvKiB3cmFwIGFycm91bmQgaWYgb2Zmc2V0IChzZWUgbWFudWFsIFMzQzI0MDApICovCiAJCQlpZiAoYml0Pj1mcmFtZV9idWZfc2l6ZSo4KQogCQkJCWJpdCA9IGJpdCAtIChmcmFtZV9idWZfc2l6ZSAqIDgpOwotCQkJYWRyID0gdmZkYmFzZSArIChiaXQvMzIpICogNCArICgzIC0gKGJpdCUzMikgLyA4KTsKKwkJCWFkciA9IGdkLT5mYl9iYXNlICsgKGJpdC8zMikgKiA0ICsgKDMgLSAoYml0JTMyKSAvIDgpOwogCQkJYml0X25yID0gYml0ICUgODsKIAkJCWJpdF9uciA9IChiaXRfbnIgPiAzKSA/IGJpdF9uci00IDogYml0X25yKzQ7CiAJCQl0ZW1wPSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqKShhZHIpKTsKQEAgLTE1NCw3ICsxNTMsNyBAQAogCQkJLyogd3JhcCBhcnJvdW5kIGlmIG9mZnNldCAoc2VlIG1hbnVhbCBTM0MyNDAwKSAqLwogCQkJaWYgKGJpdD49ZnJhbWVfYnVmX3NpemUqOCkKIAkJCQliaXQgPSBiaXQtKGZyYW1lX2J1Zl9zaXplKjgpOwotCQkJYWRyID0gdmZkYmFzZSsoYml0LzMyKSo0KygzLShiaXQlMzIpLzgpOworCQkJYWRyID0gZ2QtPmZiX2Jhc2UrKGJpdC8zMikqNCsoMy0oYml0JTMyKS84KTsKIAkJCWJpdF9uciA9IGJpdCU4OwogCQkJYml0X25yID0gKGJpdF9ucj4zKT9iaXRfbnItNDpiaXRfbnIrNDsKIAkJCXRlbXA9KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciopKGFkcikpOwpAQCAtMjU0LDcgKzI1Myw3IEBACiAJCWZvcihjb2xvcj0wO2NvbG9yPDI7Y29sb3IrKykgewogCQkgICAgZm9yKGRpc3BsYXk9MDtkaXNwbGF5PDQ7ZGlzcGxheSsrKSB7CiAJCQlmb3IoZW50cnk9MDtlbnRyeTwyO2VudHJ5KyspIHsKLQkJCSAgICB1bnNpZ25lZCBsb25nIGFkciAgPSB2ZmRiYXNlOworCQkJICAgIHVuc2lnbmVkIGxvbmcgYWRyICA9IGdkLT5mYl9iYXNlOwogCQkJICAgIHVuc2lnbmVkIGludCBiaXRfbnIgPSAwOwogCQkJICAgIAogCQkJICAgIGlmICh2ZmRfdGFibGVbeF1beV1bY29sb3JdW2Rpc3BsYXldW2VudHJ5XSkgewpAQCAtMjY2LDcgKzI2NSw3IEBACiAJCQkJICAqLwogCQkJCWlmIChwaXhlbD49ZnJhbWVfYnVmX3NpemUqOCkKIAkJCQkJcGl4ZWwgPSBwaXhlbC0oZnJhbWVfYnVmX3NpemUqOCk7Ci0JCQkJYWRyICAgID0gdmZkYmFzZSsocGl4ZWwvMzIpKjQrKDMtKHBpeGVsJTMyKS84KTsKKwkJCQlhZHIgICAgPSBnZC0+ZmJfYmFzZSsocGl4ZWwvMzIpKjQrKDMtKHBpeGVsJTMyKS84KTsKIAkJCQliaXRfbnIgPSBwaXhlbCU4OwogCQkJCWJpdF9uciA9IChiaXRfbnI+Myk/Yml0X25yLTQ6Yml0X25yKzQ7CiAJCQkgICAgfQpAQCAtMzc1LDcgKzM3NCw3IEBACiAJclBDQ09OID0gICAoclBDQ09OICYgMHhGRkZGRkYwMCl8IDB4MDAwMDAwQUE7CiAJLyogUG9ydC1QaW5zIGFscyBMQ0QtQXVzZ2FuZyAqLwogCXJQRENPTiA9ICAgKHJQRENPTiAmIDB4RkZGRkZGMDMpfCAweDAwMDAwMEE4OwotI2lmZGVmIFdJVEhfVkZSQU1FCisjaWZkZWYgQ0ZHX1dJVEhfVkZSQU1FCiAJLyogbWl0IFZGUkFNRSB6dW0gTWVzc2VuICovCiAJclBEQ09OID0gICAoclBEQ09OICYgMHhGRkZGRkYwMCl8IDB4MDAwMDAwQUE7CiAjZW5kaWYKQEAgLTM4NSwxMCArMzg0LDE4IEBACiAJckxDRENPTjQgPSAweDAwMDAwMDAxOwogCXJMQ0RDT041ID0gMHgwMDAwMDQ0MDsKIAlyTENEQ09OMSA9IDB4MDAwMDBCNzU7CisKKwlyZXR1cm4gMDsKIH0KIAogLyoKICAqIGluaXRpYWxpemUgTENELUNvbnRyb2xsZXIgb2YgdGhlIFMzQzI0MDAgZm9yIHVzaW5nIFZGRHMKKyAqCisgKiBWRkQgZGV0ZWN0aW9uIGRlcGVuZHMgb24gdGhlIGJvYXJkIHJldmlzaW9uOgorICogc3RhcnRpbmcgZnJvbSBSZXYuIDIwMCBhIHR5cGUgY29kZSBjYW4gYmUgcmVhZCBmcm9tIHRoZSBkYXRhIHBpbnMsCisgKiBkcml2ZW4gYnkgc29tZSBwdWxsLXVwIHJlc2lzdG9yczsgYWxsIGVhcmxpZXIgc3lzdGVtcyBtdXN0IGJlCisgKiBtYW51YWxseSBjb25maWd1cmVkLiBUaGUgdHlwZSBpcyBzZXQgaW4gdGhlICJ2ZmRfdHlwZSIgZW52aXJvbm1lbnQKKyAqIHZhcmlhYmxlLgogICovCiBpbnQgZHJ2X3ZmZF9pbml0KHZvaWQpCiB7CkBAIC00MDYsMjEgKzQxMywxNSBAQAogCS8qIHRyeSB0byBkZXRlcm1pbmUgZGlzcGxheSB0eXBlIGZyb20gdGhlIHZhbHVlCiAJICogZGVmaW5lZCBieSBwdWxsLXVwcwogCSAqLwotCXJQQ1VQICA9IChyUENVUCB8IDB4MDAwRik7CS8qIGFjdGl2YXRlICBHUEMwLi4uR1BDMyBwdWxsdXBzICovCisJclBDVVAgID0gKHJQQ1VQICYgMHhGRkYwKTsJLyogYWN0aXZhdGUgIEdQQzAuLi5HUEMzIHB1bGx1cHMgKi8KIAlyUENDT04gPSAoclBDQ09OICYgMHhGRkZGRkYwMCk7CS8qIGNvbmZpZ3VyZSBHUEMwLi4uR1BDMyBhcyBpbnB1dHMgKi8KKwl1ZGVsYXkoMTApOwkJCS8qIGFsbG93IHNpZ25hbHMgdG8gc2V0dGxlICovCiAKIAl2ZmRfaWQgPSAofnJQQ0RBVCkgJiAweDAwMEY7CS8qIHJlYWQgR1BDMC4uLkdQQzMgcG9ydCBwaW5zICovCiAJZGVidWcoIkRldGVjdGluZyBSZXZpc29uIG9mIFdBNC1WRkQ6IElEPTB4JVhcbiIsIHZmZF9pZCk7CiAKIAlzd2l0Y2ggKHZmZF9pZCkgewotCWNhc2UgMDoJCQkJLyogYm9hcmQgcmV2aXNpb24gPD0gUmV2LjEwMCAqLwotLyotLS0tLSovCi0JCWdkLT52ZmRfaW52X2RhdGEgPSAwOwotCQlpZiAoMCkKLQkJCWdkLT52ZmRfdHlwZSA9IFZGRF9UWVBFX01OMTEyMzY7Ci0JCWVsc2UKLQkJCWdkLT52ZmRfdHlwZSA9IFZGRF9UWVBFX1QxMTlDOwotLyotLS0tLSovCisJY2FzZSAwOgkJCS8qIGJvYXJkIHJldmlzaW9uIDwgUmV2LjIwMCAqLwogCQlpZiAoKHRtcCA9IGdldGVudiAoInZmZF90eXBlIikpID09IE5VTEwpIHsKIAkJCWJyZWFrOwogCQl9CkBAIC00MzUsNyArNDM2LDcgQEAKIAkJZ2QtPnZmZF9pbnZfZGF0YSA9IDA7CiAKIAkJYnJlYWs7Ci0JZGVmYXVsdDoJCQkvKiBkZWZhdWx0IHRvIE1OMTEyMzYsIGRhdGEgaW52ZXJ0ZWQgKi8KKwlkZWZhdWx0OgkJLyogZGVmYXVsdCB0byBNTjExMjM2LCBkYXRhIGludmVydGVkICovCiAJCWdkLT52ZmRfdHlwZSA9IFZGRF9UWVBFX01OMTEyMzY7CiAJCWdkLT52ZmRfaW52X2RhdGEgPSAxOwogCQlzZXRlbnYgKCJ2ZmRfdHlwZSIsICJNTjExMjM2Iik7CkBAIC00NDYsNyArNDQ3LDcgQEAKIAkJInVua25vd24iLAogCQlnZC0+dmZkX2ludl9kYXRhID8gIiwgaW52ZXJ0ZWQgZGF0YSIgOiAiIik7CiAKLQl2ZmRiYXNlID0gZ2QtPmZiX2Jhc2U7CisJZ2QtPmZiX2Jhc2UgPSBnZC0+ZmJfYmFzZTsKIAljcmVhdGVfdmZkX3RhYmxlKCk7CiAJaW5pdF9ncmlkX2N0cmwoKTsKIApAQCAtNDYzLDkgKzQ2NCw5IEBACiAJICogc2VlIG1hbnVhbCBTM0MyNDAwCiAJICovCiAJLyogZnJhbWUgYnVmZmVyIHN0YXJ0YWRyICovCi0JckxDRFNBRERSMSA9IHZmZGJhc2UgPj4gMTsKKwlyTENEU0FERFIxID0gZ2QtPmZiX2Jhc2UgPj4gMTsKICAJLyogZnJhbWUgYnVmZmVyIGVuZGFkciAqLwotCXJMQ0RTQUREUjIgPSAodmZkYmFzZSArIGZyYW1lX2J1Zl9zaXplKSA+PiAxOworCXJMQ0RTQUREUjIgPSAoZ2QtPmZiX2Jhc2UgKyBmcmFtZV9idWZfc2l6ZSkgPj4gMTsKIAlyTENEU0FERFIzID0gKCgyNTYvNCkpOwogCiAJZGVidWcgKCJMQ0RTQUREUjE6ICVsWFxuIiwgckxDRFNBRERSMSk7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX2Jvb3RtLmMgYi9jb21tb24vY21kX2Jvb3RtLmMKaW5kZXggMmFjNTc2My4uZjNmOTYwMyAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9ib290bS5jCisrKyBiL2NvbW1vbi9jbWRfYm9vdG0uYwpAQCAtNjIzLDcgKzYyMyw3IEBACiAJICovCiAJKCprZXJuZWwpIChrYmQsIGluaXRyZF9zdGFydCwgaW5pdHJkX2VuZCwgY21kX3N0YXJ0LCBjbWRfZW5kKTsKIH0KLSNlbmRpZiAvKiBDT05GSUdfQVJNICovCisjZW5kaWYgLyogQ09ORklHX1BQQyAqLwogCiBzdGF0aWMgdm9pZAogZG9fYm9vdG1fbmV0YnNkIChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywKZGlmZiAtLWdpdCBhL2NwdS9tcGM4eHgvY3B1X2luaXQuYyBiL2NwdS9tcGM4eHgvY3B1X2luaXQuYwppbmRleCBhYmU2MjA5Li5jMGVlNWRlIDEwMDY0NAotLS0gYS9jcHUvbXBjOHh4L2NwdV9pbml0LmMKKysrIGIvY3B1L21wYzh4eC9jcHVfaW5pdC5jCkBAIC02OCw2ICs2OCwxNCBAQAogCWltbXItPmltX3NpdGsuc2l0a19waXNjcmsgPSBLQVBXUl9LRVk7CiAJaW1tci0+aW1fc2l0LnNpdF9waXNjciA9IENGR19QSVNDUjsKIAorCS8qIFN5c3RlbSBpbnRlZ3JhdGlvbiB0aW1lcnMuIERvbid0IGNoYW5nZSBFQkRGISAoMTUtMjcpICovCisKKwlpbW1yLT5pbV9jbGtyc3RrLmNhcmtfc2NjcmsgPSBLQVBXUl9LRVk7CisJcmVnID0gaW1tci0+aW1fY2xrcnN0LmNhcl9zY2NyOworCXJlZyAmPSBTQ0NSX01BU0s7CisJcmVnIHw9IENGR19TQ0NSOworCWltbXItPmltX2Nsa3JzdC5jYXJfc2NjciA9IHJlZzsKKwogCS8qIFBMTCAoQ1BVIGNsb2NrKSBzZXR0aW5ncyAoMTUtMzApICovCiAKIAlpbW1yLT5pbV9jbGtyc3RrLmNhcmtfcGxwcmNyayA9IEtBUFdSX0tFWTsKQEAgLTg4LDE0ICs5Niw2IEBACiAjZW5kaWYKIAlpbW1yLT5pbV9jbGtyc3QuY2FyX3BscHJjciA9IHJlZzsKIAotCS8qIFN5c3RlbSBpbnRlZ3JhdGlvbiB0aW1lcnMuIERvbid0IGNoYW5nZSBFQkRGISAoMTUtMjcpICovCi0KLQlpbW1yLT5pbV9jbGtyc3RrLmNhcmtfc2NjcmsgPSBLQVBXUl9LRVk7Ci0JcmVnID0gaW1tci0+aW1fY2xrcnN0LmNhcl9zY2NyOwotCXJlZyAmPSBTQ0NSX01BU0s7Ci0JcmVnIHw9IENGR19TQ0NSOwotCWltbXItPmltX2Nsa3JzdC5jYXJfc2NjciA9IHJlZzsKLQogCS8qCiAJICogTWVtb3J5IENvbnRyb2xsZXI6CiAJICovCmRpZmYgLS1naXQgYS9jcHUvcHBjNHh4L2kyYy5jIGIvY3B1L3BwYzR4eC9pMmMuYwppbmRleCA3ZDhkYjliLi40YmYwYmJkIDEwMDY0NAotLS0gYS9jcHUvcHBjNHh4L2kyYy5jCisrKyBiL2NwdS9wcGM0eHgvaTJjLmMKQEAgLTQyMiw0ICs0MjIsMjMgQEAKICAgICAgICAgcmV0dXJuIChpMmNfdHJhbnNmZXIoIDAsIGNoaXA8PDEsICZ4YWRkcls0LWFsZW5dLCBhbGVuLCBidWZmZXIsIGxlbiApICE9IDApOwogfQogCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZWFkIGEgcmVnaXN0ZXIKKyAqLwordWNoYXIgaTJjX3JlZ19yZWFkKHVjaGFyIGkyY19hZGRyLCB1Y2hhciByZWcpCit7CisJY2hhciBidWY7CisKKwlpMmNfcmVhZChpMmNfYWRkciwgcmVnLCAxLCAmYnVmLCAxKTsKKworCXJldHVybihidWYpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBXcml0ZSBhIHJlZ2lzdGVyCisgKi8KK3ZvaWQgaTJjX3JlZ193cml0ZSh1Y2hhciBpMmNfYWRkciwgdWNoYXIgcmVnLCB1Y2hhciB2YWwpCit7CisJaTJjX3dyaXRlKGkyY19hZGRyLCByZWcsIDEsICZ2YWwsIDEpOworfQogI2VuZGlmCS8qIENPTkZJR19IQVJEX0kyQyAqLwpkaWZmIC0tZ2l0IGEvY3B1L3hzY2FsZS9zdGFydC5TIGIvY3B1L3hzY2FsZS9zdGFydC5TCmluZGV4IDNkOTc4NGUuLjk1YjMwZTQgMTAwNjQ0Ci0tLSBhL2NwdS94c2NhbGUvc3RhcnQuUworKysgYi9jcHUveHNjYWxlL3N0YXJ0LlMKQEAgLTQsOCArNCwxMCBAQAogICogIENvcHlyaWdodCAoQykgMTk5OAlEYW4gTWFsZWsgPGRtYWxla0BqbGMubmV0PgogICogIENvcHlyaWdodCAoQykgMTk5OQlNYWdudXMgRGFtbSA8a2llcmF5cGMwMS5wLnkua2llLmVyYS5lcmljc3Nvbi5zZT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDAJV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAqICBDb3B5cmlnaHQgKGMpIDIwMDEJQWxleCBa/HBrZSA8YXp1QHN5c2dvLmRlPgotICogIENvcHlyaWdodCAoYykgMjAwMglLeWxlIEhhcnJpcyA8a2hhcnJpc0BuZXh1cy10ZWNoLm5ldD4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEJQWxleCBa/HBrZSA8YXp1QHN5c2dvLmRlPgorICogIENvcHlyaWdodCAoQykgMjAwMglLeWxlIEhhcnJpcyA8a2hhcnJpc0BuZXh1cy10ZWNoLm5ldD4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgIFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgIEthaS1Vd2UgQmxvZWhtIDxrYWktdXdlLmJsb2VtQGF1ZXJzd2FsZC5kZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTI2LDggKzI4LDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotCi0KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKQEAgLTEzNiwxMyArMTM2LDE2IEBACiAKIAlibAljcHVfaW5pdF9jcml0CQkvKiB3ZSBkbyBzeXMtY3JpdGljYWwgaW5pdHMJICAgICovCiAKLXJlbG9jYXRlOgkJCQkvKiByZWxvY2F0ZSBVLUJvb3QgdG8gUkFNCSAgICovCi0JYWRyCXIwLCBfc3RhcnQJCS8qIHIwIDwtIGN1cnJlbnQgcG9zaXRpb24gb2YgY29kZSAqLworcmVsb2NhdGU6CQkJCS8qIHJlbG9jYXRlIFUtQm9vdCB0byBSQU0JICAgICovCisJYWRyCXIwLCBfc3RhcnQJCS8qIHIwIDwtIGN1cnJlbnQgcG9zaXRpb24gb2YgY29kZSAgICovCisJbGRyCXIxLCBfVEVYVF9CQVNFCQkvKiB0ZXN0IGlmIHdlIHJ1biBmcm9tIGZsYXNoIG9yIFJBTSAqLwkKKwljbXAgICAgIHIwLCByMSAgICAgICAgICAgICAgICAgIC8qIGRvbid0IHJlbG9jIGR1cmluZyBkZWJ1ZyAgICAgICAgICovCisJYmVxICAgICBzdGFja19zZXR1cAorCiAJbGRyCXIyLCBfYXJtYm9vdF9zdGFydAogCWxkcglyMywgX2FybWJvb3RfZW5kCi0Jc3ViCXIyLCByMywgcjIJCS8qIHIyIDwtIHNpemUgb2YgYXJtYm9vdCAqLwotCWxkcglyMSwgX1RFWFRfQkFTRQotCWFkZAlyMiwgcjAsIHIyCQkvKiByMiA8LSBzb3VyY2UgZW5kIGFkZHJlc3MgKi8KKwlzdWIJcjIsIHIzLCByMgkJLyogcjIgPC0gc2l6ZSBvZiBhcm1ib290ICAgICAgICAgICAgKi8KKwlhZGQJcjIsIHIwLCByMgkJLyogcjIgPC0gc291cmNlIGVuZCBhZGRyZXNzICAgICAgICAgKi8KIAogY29weV9sb29wOgogCWxkbWlhCXIwISwge3IzLXIxMH0JCS8qIGNvcHkgZnJvbSBzb3VyY2UgYWRkcmVzcyBbcjBdICAgICovCkBAIC0xNTEsNiArMTU0LDkgQEAKIAlibGUJY29weV9sb29wCiAKIAkvKiBTZXQgdXAgdGhlIHN0YWNrCQkJCQkJICAgICovCisKK3N0YWNrX3NldHVwOgorCiAJbGRyCXIwLCBfdWJvb3RfcmVsb2MJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KIAlzdWIJcjAsIHIwLCAjQ0ZHX01BTExPQ19MRU4gLyogbWFsbG9jIGFyZWEJCQkgICAgKi8KIAkJCQkJLyogRklYTUU6IGJkaW5mbyBzaG91bGQgYmUgaGVyZQkgICAgKi8KQEAgLTE4Myw3ICsxODksNyBAQAogLyoJCQkJCQkJCQkgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0JLyogSW50ZXJydXB0LUNvbnRyb2xsZXIgYmFzZSBhZGRyZXNzCQkJCSAgICAqLworLyogSW50ZXJydXB0LUNvbnRyb2xsZXIgYmFzZSBhZGRyZXNzCQkJCSAgICAgICAgICAgICovCiBJQ19CQVNFOgkgICAud29yZAkgICAweDQwZDAwMDAwCiAjZGVmaW5lIElDTVIJMHgwNAogCkBAIC0xOTEsMTkgKzE5NywxOSBAQAogUlNUX0JBU0U6CS53b3JkCTB4NDBmMDAwMzAKICNkZWZpbmUgUkNTUgkweDAwCiAKLQkvKiBPcGVyYXRpbmcgU3lzdGVtIFRpbWVyICovCisvKiBPcGVyYXRpbmcgU3lzdGVtIFRpbWVyICovCiBPU1RJTUVSX0JBU0U6CS53b3JkCTB4NDBhMDAwMDAKICNkZWZpbmUgT1NNUjMJMHgwQwogI2RlZmluZSBPU0NSCTB4MTAKICNkZWZpbmUgT1dFUgkweDE4CiAjZGVmaW5lIE9JRVIJMHgxQwogCi0JLyogQ2xvY2sgTWFuYWdlciBSZWdpc3RlcnMJCQkJCSAgICAqLwotI2lmZGVmIENGR19DUFVTUEVFRAorLyogQ2xvY2sgTWFuYWdlciBSZWdpc3RlcnMJCQkJCSAgICAgICAgICAgICovCiBDQ19CQVNFOgkud29yZAkweDQxMzAwMDAwCiAjZGVmaW5lIENDQ1IJMHgwMAogY3B1c3BlZWQ6CS53b3JkCUNGR19DUFVTUEVFRAotI2VuZGlmCisKKwogCS8qIFJTOiA/Pz8JCQkJCQkJICAgICovCiAJLm1hY3JvIENQV0FJVAogCW1yYyAgcDE1LDAscjAsYzIsYzAsMApAQCAtMjE5LDEzICsyMjUsMTYgQEAKIAltb3YJcjEsICMweDAwCiAJc3RyCXIxLCBbcjAsICNJQ01SXQogCi0jaWZkZWYgQ0ZHX0NQVVNQRUVECisjaWYgZGVmaW5lZChDRkdfQ1BVU1BFRUQpCisKIAkvKiBzZXQgY2xvY2sgc3BlZWQgKi8KIAlsZHIJcjAsIENDX0JBU0UKIAlsZHIJcjEsIGNwdXNwZWVkCiAJc3RyCXIxLCBbcjAsICNDQ0NSXQotCW1vdglyMCwgIzMKKwltb3YJcjAsICMyCiAJbWNyCXAxNCwgMCwgcjAsIGM2LCBjMCwgMAorCitzZXRzcGVlZF9kb25lOgogI2VuZGlmCiAKIAkvKgpAQCAtNDI5LDE1ICs0MzgsMjEgQEAKIAogI2VuZGlmCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgkJCQkJCQkJCSovCi0vKiBSZXNldCBmdW5jdGlvbjogdGhlIFBYQTI1MCBoYXMgbm8gcmVzZXQgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG8JKi8KLS8qIHBlcmZvcm0gYSB3YXRjaGRvZyB0aW1lb3V0IHRvIGNhdXNlIGEgcmVzZXQuCQkJCSovCi0vKgkJCQkJCQkJCSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFJlc2V0IGZ1bmN0aW9uOiB0aGUgUFhBMjUwIGRvZXNuJ3QgaGF2ZSBhIHJlc2V0IGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvICAqLworLyogcGVyZm9ybSBhIHdhdGNoZG9nIHRpbWVvdXQgZm9yIGEgc29mdCByZXNldC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAJLmFsaWduCTUKIC5nbG9ibCByZXNldF9jcHUKKworCS8qIEZJWE1FOiB0aGlzIGNvZGUgaXMgUFhBMjUwIHNwZWNpZmljLiBIb3cgaXMgdGhpcyBoYW5kbGVkIG9uICAgICAgKi8KKwkvKiAgICAgICAgb3RoZXIgWFNjYWxlIHByb2Nlc3NvcnM/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKIHJlc2V0X2NwdToKKwogCS8qIFdlIHNldCBPV0U6V01FICh3YXRjaGRvZyBlbmFibGUpIGFuZCB3YWl0IHVudGlsIHRpbWVvdXQgaGFwcGVucyAgKi8KIAogCWxkcglyMCwgT1NUSU1FUl9CQVNFCkBAIC00NTYsMyArNDcxLDQgQEAKIHJlc2V0X2VuZGxlc3M6CiAKIAliCXJlc2V0X2VuZGxlc3MKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9NYWtlZmlsZSBiL2RyaXZlcnMvTWFrZWZpbGUKaW5kZXggNjVkZThiNS4uMzI3OGNlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL01ha2VmaWxlCkBAIC0zMiw3ICszMiw3IEBACiAJICBlZXBybzEwMC5vIGk4MDQyLm8gaW5jYS1pcF9zdy5vIFwKIAkgIG5hdHNlbWkubyBuczE2NTUwLm8gbnM4MzgyeC5vIG5zODczMDgubyBcCiAJICBwY2kubyBwY2lfYXV0by5vIHBjaV9pbmRpcmVjdC5vIFwKLQkgIHBjbmV0Lm8gc2VkMTM4MDYubyBzZXJpYWwubyBcCisJICBwY25ldC5vIHMzYzI0eDBfaTJjLm8gc2VkMTM4MDYubyBzZXJpYWwubyBcCiAJICBzbWM5MTExMS5vIHNtaUx5bnhFTS5vIHN5bTUzYzh4eC5vIFwKIAkgIHRpZ29uMy5vIHc4M2M1NTNmLm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jczg5MDAuYyBiL2RyaXZlcnMvY3M4OTAwLmMKaW5kZXggNzE2NWQ2MC4uMjI0YWI5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jczg5MDAuYworKysgYi9kcml2ZXJzL2NzODkwMC5jCkBAIC0yNzIsNiArMjcyLDQ0IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGNzODkwMF9lMnByb21fcmVhZHkodm9pZCkKK3sKKwl3aGlsZShnZXRfcmVnKFBQX1NlbGZTVCkgJiBTSV9CVVNZKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogcmVhZCBhIDE2LWJpdCB3b3JkIG91dCBvZiB0aGUgRUVQUk9NICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitpbnQgY3M4OTAwX2UycHJvbV9yZWFkKHVuc2lnbmVkIGNoYXIgYWRkciwgdW5zaWduZWQgc2hvcnQgKnZhbHVlKQoreworCWNzODkwMF9lMnByb21fcmVhZHkoKTsKKwlwdXRfcmVnKFBQX0VFQ01ELCBFRVBST01fUkVBRF9DTUQgfCBhZGRyKTsKKwljczg5MDBfZTJwcm9tX3JlYWR5KCk7CisJKnZhbHVlID0gZ2V0X3JlZyhQUF9FRURhdGEpOworCisJcmV0dXJuIDA7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogd3JpdGUgYSAxNi1iaXQgd29yZCBpbnRvIHRoZSBFRVBST00gICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit2b2lkIGNzODkwMF9lMnByb21fd3JpdGUodW5zaWduZWQgY2hhciBhZGRyLCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKwljczg5MDBfZTJwcm9tX3JlYWR5KCk7CisJcHV0X3JlZyhQUF9FRUNNRCwgRUVQUk9NX1dSSVRFX0VOKTsKKwljczg5MDBfZTJwcm9tX3JlYWR5KCk7CisJcHV0X3JlZyhQUF9FRURhdGEsIHZhbHVlKTsKKwlwdXRfcmVnKFBQX0VFQ01ELCBFRVBST01fV1JJVEVfQ01EIHwgYWRkcik7CisJY3M4OTAwX2UycHJvbV9yZWFkeSgpOworCXB1dF9yZWcoUFBfRUVDTUQsIEVFUFJPTV9XUklURV9ESVMpOworCWNzODkwMF9lMnByb21fcmVhZHkoKTsKKworCXJldHVybiAwOworfQorCiAjZW5kaWYJLyogQ09NTUFORFMgJiBDRkdfTkVUICovCiAKICNlbmRpZgkvKiBDT05GSUdfRFJJVkVSX0NTODkwMCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jczg5MDAuaCBiL2RyaXZlcnMvY3M4OTAwLmgKaW5kZXggMGEzNWJhNi4uZGJmZGEzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jczg5MDAuaAorKysgYi9kcml2ZXJzL2NzODkwMC5oCkBAIC0yNTAsNyArMjUwLDkgQEAKICNkZWZpbmUgRUVQUk9NX1dSSVRFX0RJUwkweDAwMDAKICNkZWZpbmUgRUVQUk9NX1dSSVRFX0NNRAkweDAxMDAKICNkZWZpbmUgRUVQUk9NX1JFQURfQ01ECQkweDAyMDAKKyNkZWZpbmUgRUVQUk9NX0VSQVNFX0NNRAkweDAzMDAKIAotCitleHRlcm4gaW50IGNzODkwMF9lMnByb21fcmVhZCh1Y2hhciwgdXNob3J0ICopOworZXh0ZXJuIHZvaWQgY3M4OTAwX2UycHJvbV93cml0ZSh1Y2hhciwgdXNob3J0KTsKIAogI2VuZGlmIC8qIENPTkZJR19EUklWRVJfQ1M4OTAwICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luY2EtaXBfc3cuYyBiL2RyaXZlcnMvaW5jYS1pcF9zdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2luY2EtaXBfc3cuYwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2lfYXV0by5jIGIvZHJpdmVycy9wY2lfYXV0by5jCmluZGV4IDAwMTc3Y2MuLjM4YjU5ZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpX2F1dG8uYworKysgYi9kcml2ZXJzL3BjaV9hdXRvLmMKQEAgLTMxNCw2ICszMTQsMTYgQEAKIAkJcGNpYXV0b19zZXR1cF9kZXZpY2UoaG9zZSwgZGV2LCA2LCBob3NlLT5wY2lfbWVtLCBob3NlLT5wY2lfaW8pOwogCQlicmVhazsKIAorCWNhc2UgUENJX0NMQVNTX0JSSURHRV9DQVJEQlVTOgorCQkvKiBqdXN0IGRvIGEgbWluaW1hbCBzZXR1cCBvZiB0aGUgYnJpZGdlLCBsZXQgdGhlIE9TIHRha2UgY2FyZSBvZiB0aGUgcmVzdCAqLworCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDAsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9pbyk7CisKKwkJREVCVUdGKCJQQ0kgQXV0b2NvbmZpZzogRm91bmQgUDJDYXJkQnVzIGJyaWRnZSwgZGV2aWNlICVkXG4iLAorCQkJUENJX0RFVihkZXYpKTsKKworCQlob3NlLT5jdXJyZW50X2J1c25vKys7CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJcGNpYXV0b19zZXR1cF9kZXZpY2UoaG9zZSwgZGV2LCA2LCBob3NlLT5wY2lfbWVtLCBob3NlLT5wY2lfaW8pOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczNjMjR4MF9pMmMuYyBiL2RyaXZlcnMvczNjMjR4MF9pMmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjQzNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zM2MyNHgwX2kyYy5jCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYXZpZCBNdWVsbGVyLCBFTFNPRlQgQUcsIGQubXVlbGxlckBlbHNvZnQuY2gKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKiBUaGlzIGNvZGUgc2hvdWxkIHdvcmsgZm9yIGJvdGggdGhlIFMzQzI0MDAgYW5kIHRoZSBTM0MyNDEwCisgKiBhcyB0aGV5IHNlZW0gdG8gaGF2ZSB0aGUgc2FtZSBJMkMgY29udHJvbGxlciBpbnNpZGUuCisgKiBUaGUgZGlmZmVyZW50IGFkZHJlc3MgbWFwcGluZyBpcyBoYW5kbGVkIGJ5IHRoZSBzM2MyNHh4LmggZmlsZXMgYmVsb3cuCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisjaWZkZWYgQ09ORklHX0RSSVZFUl9TM0MyNFgwX0kyQworCisjaWYgZGVmaW5lZChDT05GSUdfUzNDMjQwMCkKKyNpbmNsdWRlIDxzM2MyNDAwLmg+CisjZWxpZiBkZWZpbmVkKENPTkZJR19TM0MyNDEwKQorI2luY2x1ZGUgPHMzYzI0MTAuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGkyYy5oPgorCisjaWZkZWYgQ09ORklHX0hBUkRfSTJDCisKKyNkZWZpbmUJSUlDX1dSSVRFCTAKKyNkZWZpbmUgSUlDX1JFQUQJMQorCisjZGVmaW5lIElJQ19PSwkJMAorI2RlZmluZSBJSUNfTk9LCQkxCisjZGVmaW5lIElJQ19OQUNLCTIKKyNkZWZpbmUgSUlDX05PS19MQQkzCQkvKiBMb3N0IGFyYml0cmF0aW9uICovCisjZGVmaW5lIElJQ19OT0tfVE9VVAk0CQkvKiB0aW1lIG91dCAqLworCisjZGVmaW5lIElJQ1NUQVRfQlNZCTB4MjAJCS8qIEJ1c3kgYml0ICovCisjZGVmaW5lIElJQ1NUQVRfTkFDSwkweDAxCQkvKiBOYWNrIGJpdCAqLworI2RlZmluZSBJSUNDT05fSVJQTkQJMHgxMAkJLyogSW50ZXJydXB0IHBlbmRpbmcgYml0ICovCisjZGVmaW5lIElJQ19NT0RFX01UCTB4QzAJCS8qIE1hc3RlciBUcmFuc21pdCBNb2RlICovCisjZGVmaW5lIElJQ19NT0RFX01SCTB4ODAJCS8qIE1hc3RlciBSZWNlaXZlIE1vZGUgKi8KKyNkZWZpbmUgSUlDX1NUQVJUX1NUT1AJMHgyMAkJLyogU1RBUlQgLyBTVE9QICovCisjZGVmaW5lIElJQ19UWFJYX0VOQQkweDEwCQkvKiBJMkMgVHgvUnggZW5hYmxlICovCisKKyNkZWZpbmUgSUlDX1RJTUVPVVQgMQkJCS8qIDEgc2Vjb25kZSAqLworCisKK3N0YXRpYyBpbnQgR2V0SUlDU0RBKHZvaWQpCit7CisJcmV0dXJuIChyR1BFREFUICYgMHg4MDAwKSA+PiAxNTsKK30KKworc3RhdGljIHZvaWQgU2V0SUlDU0RBKGludCB4KQoreworCXJHUEVEQVQgPSAockdQRURBVCAmIH4weDgwMDApIHwgKHgmMSkgPDwgMTU7Cit9CisKK3N0YXRpYyB2b2lkIFNldElJQ1NDTChpbnQgeCkKK3sKKwlyR1BFREFUID0gKHJHUEVEQVQgJiB+MHg0MDAwKSB8ICh4JjEpIDw8IDE0OworfQorCisKK3N0YXRpYyBpbnQgV2FpdEZvclhmZXIodm9pZCkKK3sKKyAgICBpbnQgaSwgc3RhdHVzOworCisgICAgaSA9IElJQ19USU1FT1VUICogMTAwMDsKKyAgICBzdGF0dXMgPSBySUlDQ09OOworICAgIHdoaWxlICgoaSA+IDApICYmICEoc3RhdHVzICYgSUlDQ09OX0lSUE5EKSkgeworICAgIAl1ZGVsYXkoMTAwMCk7CisJc3RhdHVzID0gcklJQ0NPTjsKKwlpLS07CisgICAgfQorCisgICAgcmV0dXJuKHN0YXR1cyAmIElJQ0NPTl9JUlBORCkgPyBJSUNfT0sgOiBJSUNfTk9LX1RPVVQ7Cit9CisKK3N0YXRpYyBpbnQgSXNBQ0sodm9pZCkKK3sKKyAgICByZXR1cm4oIShySUlDU1RBVCAmIElJQ1NUQVRfTkFDSykpOworfQorCitzdGF0aWMgdm9pZCBSZWFkV3JpdGVCeXRlKHZvaWQpCit7CisgICAgcklJQ0NPTiAmPSB+SUlDQ09OX0lSUE5EOworfQorCit2b2lkIGkyY19pbml0IChpbnQgc3BlZWQsIGludCBzbGF2ZWFkZCkKK3sKKyAgICB1bG9uZyBmcmVxLCBwcmVzID0gMTYsIGRpdjsKKyAgICBpbnQgaSwgc3RhdHVzOworCisgICAgLyogd2FpdCBmb3Igc29tZSB0aW1lIHRvIGdpdmUgcHJldmlvdXMgdHJhbnNmZXIgYSBjaGFuY2UgdG8gZmluaXNoICovCisKKyAgICBpID0gSUlDX1RJTUVPVVQgKiAxMDAwOworICAgIHN0YXR1cyA9IHJJSUNTVEFUOworICAgIHdoaWxlICgoaSA+IDApICYmIChzdGF0dXMgJiBJSUNTVEFUX0JTWSkpIHsKKwl1ZGVsYXkoMTAwMCk7CisJc3RhdHVzID0gcklJQ1NUQVQ7CisJaS0tOworICAgIH0KKworICAgIGlmICgoc3RhdHVzICYgSUlDU1RBVF9CU1kpIHx8IEdldElJQ1NEQSgpID09IDApIHsKKwl1bG9uZyBvbGRfZ3BlY29uID0gckdQRUNPTjsKKwkvKiBidXMgc3RpbGwgYnVzeSBwcm9iYWJseSBieSAobW9zdCkgcHJldmlvdXNseSBpbnRlcnJ1cHRlZCB0cmFuc2ZlciAqLworCisJLyogc2V0IElJQ1NEQSBhbmQgSUlDU0NMIChHUEUxNSwgR1BFMTQpIHRvIEdQSU8gKi8KKwlyR1BFQ09OID0gKHJHUEVDT04gJiB+MHhGMDAwMDAwMCkgfCAweDEwMDAwMDAwOworCisJLyogdG9nZ2xlIElJQ1NDTCB1bnRpbCBidXMgaWRsZSAqLworCVNldElJQ1NDTCgwKTsgdWRlbGF5KDEwMDApOworCWkgPSAxMDsKKwl3aGlsZSAoKGkgPiAwKSAmJiAoR2V0SUlDU0RBKCkgIT0gMSkpIHsKKwkJU2V0SUlDU0NMKDEpOyB1ZGVsYXkoMTAwMCk7CisJCVNldElJQ1NDTCgwKTsgdWRlbGF5KDEwMDApOworCQlpLS07CisJfQorCVNldElJQ1NDTCgxKTsgdWRlbGF5KDEwMDApOworCisJLyogcmVzdG9yZSBwaW4gZnVuY3Rpb25zICovCisJckdQRUNPTiA9IG9sZF9ncGVjb247CisgICAgfQorCisgICAgLyogY2FsY3VsYXRlIHByZXNjYWxlciBhbmQgZGl2aXNvciB2YWx1ZXMgKi8KKyAgICBmcmVxID0gZ2V0X1BDTEsoKTsKKyAgICBpZiAoKGZyZXEgLyBwcmVzIC8gKDE2KzEpKSA+IHNwZWVkKQorCS8qIHNldCBwcmVzY2FsZXIgdG8gNTEyICovCisJcHJlcyA9IDUxMjsKKworICAgIGRpdiA9IDA7CisgICAgd2hpbGUgKChmcmVxIC8gcHJlcyAvIChkaXYrMSkpID4gc3BlZWQpCisJZGl2Kys7CisKKyAgICAvKiBzZXQgcHJlc2NhbGVyLCBkaXZpc29yIGFjY29yZGluZyB0byBmcmVxLCBhbHNvIHNldAorICAgICAgIEFDS0dFTiwgSVJRICovCisgICAgcklJQ0NPTiA9IChkaXYgJiAweDBGKSB8IDB4QTAgfCAoKHByZXMgPT0gNTEyKSA/IDB4NDAgOiAwKTsKKworICAgIC8qIGluaXQgdG8gU0xBVkUgUkVWRUlWRSBhbmQgc2V0IHNsYXZlYWRkciAqLworICAgIHJJSUNTVEFUID0gMDsKKyAgICBySUlDQUREID0gc2xhdmVhZGQ7CisgICAgLyogcHJvZ3JhbSBNYXN0ZXIgVHJhbnNtaXQgKGFuZCBpbXBsaWNpdCBTVE9QKSAqLworICAgIHJJSUNTVEFUID0gSUlDX01PREVfTVQgfCBJSUNfVFhSWF9FTkE7CisKK30KKworLyoKKyAgY21kX3R5cGUgaXMgMCBmb3Igd3JpdGUgMSBmb3IgcmVhZC4KKworICBhZGRyX2xlbiBjYW4gdGFrZSBhbnkgdmFsdWUgZnJvbSAwLTI1NSwgaXQgaXMgb25seSBsaW1pdGVkCisgIGJ5IHRoZSBjaGFyLCB3ZSBjb3VsZCBtYWtlIGl0IGxhcmdlciBpZiBuZWVkZWQuIElmIGl0IGlzCisgIDAgd2Ugc2tpcCB0aGUgYWRkcmVzcyB3cml0ZSBjeWNsZS4KKworKi8KK3N0YXRpYworaW50IGkyY190cmFuc2Zlcih1bnNpZ25lZCBjaGFyIGNtZF90eXBlLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoaXAsCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWRkcltdLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFkZHJfbGVuLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbXSwKKwkJIHVuc2lnbmVkIHNob3J0IGRhdGFfbGVuKQoreworICAgIGludCBpLCBzdGF0dXMsIHJlc3VsdDsKKworICAgIGlmIChkYXRhID09IDAgfHwgZGF0YV9sZW4gPT0gMCkgeworCS8qRG9uJ3Qgc3VwcG9ydCBkYXRhIHRyYW5zZmVyIG9mIG5vIGxlbmd0aCBvciB0byBhZGRyZXNzIDAqLworCXByaW50ZiggImkyY190cmFuc2ZlcjogYmFkIGNhbGxcbiIgKTsKKwlyZXR1cm4gSUlDX05PSzsKKyAgICB9CisKKyAgICAvL0NoZWNrRGVsYXkoKTsKKworICAgIC8qIENoZWNrIEkyQyBidXMgaWRsZSAqLworICAgIGkgPSBJSUNfVElNRU9VVCAqIDEwMDA7CisgICAgc3RhdHVzID0gcklJQ1NUQVQ7CisgICAgd2hpbGUgKChpID4gMCkgJiYgKHN0YXR1cyAmIElJQ1NUQVRfQlNZKSkgeworCXVkZWxheSgxMDAwKTsKKwlzdGF0dXMgPSBySUlDU1RBVDsKKwlpLS07CisgICAgfQorCisKKyAgICBpZiAoc3RhdHVzICYgSUlDU1RBVF9CU1kpIHsKKwlyZXN1bHQgPSBJSUNfTk9LX1RPVVQ7CisgICAgICAgIHJldHVybihyZXN1bHQpOworICAgIH0KKworICAgIHJJSUNDT04gfD0gMHg4MDsKKworICAgIHJlc3VsdCA9IElJQ19PSzsKKworICAgIHN3aXRjaCAoY21kX3R5cGUpIHsKKwljYXNlIElJQ19XUklURToKKwkgICAgaWYgKGFkZHIgJiYgYWRkcl9sZW4pIHsKKwkJcklJQ0RTID0gY2hpcDsKKwkJLyogc2VuZCBTVEFSVCAqLworCQlySUlDU1RBVCA9IElJQ19NT0RFX01UIHwgSUlDX1RYUlhfRU5BIHwgSUlDX1NUQVJUX1NUT1A7CisJCWkgPSAwOworCQl3aGlsZSAoKGkgPCBhZGRyX2xlbikgJiYgKHJlc3VsdCA9PSBJSUNfT0spKSB7CisJCSAgICByZXN1bHQgPSBXYWl0Rm9yWGZlcigpOworCQkgICAgcklJQ0RTID0gYWRkcltpXTsKKwkJICAgIFJlYWRXcml0ZUJ5dGUoKTsKKwkJICAgIGkrKzsKKwkJfQorCQlpID0gMDsKKwkJd2hpbGUgKChpIDwgZGF0YV9sZW4pICYmIChyZXN1bHQgPT0gSUlDX09LKSkgeworCQkgICAgcmVzdWx0ID0gV2FpdEZvclhmZXIoKTsKKwkJICAgIHJJSUNEUyA9IGRhdGFbaV07CisJCSAgICBSZWFkV3JpdGVCeXRlKCk7CisJCSAgICBpKys7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJcklJQ0RTID0gY2hpcDsKKwkJLyogc2VuZCBTVEFSVCAqLworCQlySUlDU1RBVCA9IElJQ19NT0RFX01UIHwgSUlDX1RYUlhfRU5BIHwgSUlDX1NUQVJUX1NUT1A7CisJCWkgPSAwOworCQl3aGlsZSAoKGkgPCBkYXRhX2xlbikgJiYgKHJlc3VsdCA9IElJQ19PSykpIHsKKwkJICAgIHJlc3VsdCA9IFdhaXRGb3JYZmVyKCk7CisJCSAgICBySUlDRFMgPSBkYXRhW2ldOworCQkgICAgUmVhZFdyaXRlQnl0ZSgpOworCQkgICAgaSsrOworCQl9CisJICAgIH0KKworCSAgICBpZiAocmVzdWx0ID09IElJQ19PSykKKwkgICAgICAgIHJlc3VsdCA9IFdhaXRGb3JYZmVyKCk7CisKKwkgICAgLyogc2VuZCBTVE9QICovCisJICAgIHJJSUNTVEFUID0gSUlDX01PREVfTVIgfCBJSUNfVFhSWF9FTkE7CisJICAgIFJlYWRXcml0ZUJ5dGUoKTsKKwkgICAgYnJlYWs7CisKKwljYXNlIElJQ19SRUFEOgorCSAgICBpZiAoYWRkciAmJiBhZGRyX2xlbikgeworCQlySUlDU1RBVCA9IElJQ19NT0RFX01UIHwgSUlDX1RYUlhfRU5BOworCQlySUlDRFMgPSBjaGlwOworCQkvKiBzZW5kIFNUQVJUICovCisJCXJJSUNTVEFUIHw9IElJQ19TVEFSVF9TVE9QOworCQlyZXN1bHQgPSBXYWl0Rm9yWGZlcigpOworCQlpZiAoSXNBQ0soKSkgeworCQkgICAgaSA9IDA7CisJCSAgICB3aGlsZSAoKGkgPCBhZGRyX2xlbikgJiYgKHJlc3VsdCA9PSBJSUNfT0spKSB7CisJCQlySUlDRFMgPSBhZGRyW2ldOworCQkJUmVhZFdyaXRlQnl0ZSgpOworCQkJcmVzdWx0ID0gV2FpdEZvclhmZXIoKTsKKwkJCWkrKzsKKwkJICAgIH0KKworCQkgICAgcklJQ0RTID0gY2hpcDsKKwkJICAgIC8qIHJlc2VuZCBTVEFSVCAqLworCQkgICAgcklJQ1NUQVQgPSBJSUNfTU9ERV9NUiB8IElJQ19UWFJYX0VOQSB8IElJQ19TVEFSVF9TVE9QOworCQkgICAgUmVhZFdyaXRlQnl0ZSgpOworCQkgICAgcmVzdWx0ID0gV2FpdEZvclhmZXIoKTsKKwkJICAgIGkgPSAwOworCQkgICAgd2hpbGUgKChpIDwgZGF0YV9sZW4pICYmIChyZXN1bHQgPT0gSUlDX09LKSkgeworCQkJLyogZGlzYWJsZSBBQ0sgZm9yIGZpbmFsIFJFQUQgKi8KKwkJCWlmIChpID09IGRhdGFfbGVuIC0gMSkKKwkJCSAgICBySUlDQ09OICY9IH4weDgwOworCQkJUmVhZFdyaXRlQnl0ZSgpOworCQkJcmVzdWx0ID0gV2FpdEZvclhmZXIoKTsKKwkJCWRhdGFbaV0gPSBySUlDRFM7CisJCQlpKys7CisJCSAgICB9CisJCX0gZWxzZSB7CisJCSAgICByZXN1bHQgPSBJSUNfTkFDSzsKKwkJfQorCisJICAgIH0gZWxzZSB7CisJCXJJSUNTVEFUID0gSUlDX01PREVfTVIgfCBJSUNfVFhSWF9FTkE7CisJCXJJSUNEUyA9IGNoaXA7CisJCS8qIHNlbmQgU1RBUlQgKi8KKwkJcklJQ1NUQVQgfD0gSUlDX1NUQVJUX1NUT1A7CisJCXJlc3VsdCA9IFdhaXRGb3JYZmVyKCk7CisKKwkJaWYgKElzQUNLKCkpIHsKKwkJICAgIGkgPSAwOworCQkgICAgd2hpbGUgKChpIDwgZGF0YV9sZW4pICYmIChyZXN1bHQgPT0gSUlDX09LKSkgeworCQkJLyogZGlzYWJsZSBBQ0sgZm9yIGZpbmFsIFJFQUQgKi8KKwkJCWlmIChpID09IGRhdGFfbGVuIC0gMSkKKwkJCSAgICBySUlDQ09OICY9IH4weDgwOworCQkgICAgICAgIFJlYWRXcml0ZUJ5dGUoKTsKKwkJCXJlc3VsdCA9IFdhaXRGb3JYZmVyKCk7CisJCQlkYXRhW2ldID0gcklJQ0RTOworCQkJaSsrOworCQkgICAgfQorCQl9IGVsc2UgeworCQkgICAgcmVzdWx0ID0gSUlDX05BQ0s7CisJCX0KKwkgICAgfQorCisJICAgIC8qIHNlbmQgU1RPUCAqLworCSAgICBySUlDU1RBVCA9IElJQ19NT0RFX01SIHwgSUlDX1RYUlhfRU5BOworCSAgICBSZWFkV3JpdGVCeXRlKCk7CisJICAgIGJyZWFrOworCisJZGVmYXVsdDoKKwkgICAgcHJpbnRmKCAiaTJjX3RyYW5zZmVyOiBiYWQgY2FsbFxuIiApOworICAgIAkgICAgcmVzdWx0ID0gSUlDX05PSzsKKwkgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIChyZXN1bHQpOworfQorCitpbnQgaTJjX3Byb2JlICh1Y2hhciBjaGlwKQoreworICAgIHVjaGFyIGJ1ZlsxXTsKKworICAgIGJ1ZlswXSA9IDA7CisKKyAgICAvKgorICAgICAqIFdoYXQgaXMgbmVlZGVkIGlzIHRvIHNlbmQgdGhlIGNoaXAgYWRkcmVzcyBhbmQgdmVyaWZ5IHRoYXQgdGhlCisgICAgICogYWRkcmVzcyB3YXMgPEFDSz5lZCAoaS5lLiB0aGVyZSB3YXMgYSBjaGlwIGF0IHRoYXQgYWRkcmVzcyB3aGljaAorICAgICAqIGRyb3ZlIHRoZSBkYXRhIGxpbmUgbG93KS4KKyAgICAgKi8KKyAgICByZXR1cm4oaTJjX3RyYW5zZmVyIChJSUNfUkVBRCwgY2hpcCA8PCAxLCAwLCAwLCBidWYsIDEpICE9IElJQ19PSyk7Cit9CisKK2ludCBpMmNfcmVhZCAodWNoYXIgY2hpcCwgdWludCBhZGRyLCBpbnQgYWxlbiwgdWNoYXIgKiBidWZmZXIsIGludCBsZW4pCit7CisgICAgdWNoYXIgeGFkZHJbNF07CisgICAgaW50IHJldDsKKworICAgIGlmICggYWxlbiA+IDQgKSB7CisJcHJpbnRmICgiSTJDIHJlYWQ6IGFkZHIgbGVuICVkIG5vdCBzdXBwb3J0ZWRcbiIsIGFsZW4pOworCXJldHVybiAxOworICAgIH0KKworICAgIGlmICggYWxlbiA+IDAgKSB7CisJeGFkZHJbMF0gPSAoYWRkciA+PiAyNCkgJiAweEZGOworICAgICAgICB4YWRkclsxXSA9IChhZGRyID4+IDE2KSAmIDB4RkY7CisgICAgICAgIHhhZGRyWzJdID0gKGFkZHIgPj4gOCkgJiAweEZGOworICAgICAgICB4YWRkclszXSA9IGFkZHIgJiAweEZGOworICAgIH0KKworCisjaWZkZWYgQ0ZHX0kyQ19FRVBST01fQUREUl9PVkVSRkxPVworICAgIC8qCisgICAgICogRUVQUk9NIGNoaXBzIHRoYXQgaW1wbGVtZW50ICJhZGRyZXNzIG92ZXJmbG93IiBhcmUgb25lcworICAgICAqIGxpa2UgQ2F0YWx5c3QgMjRXQzA0LzA4LzE2IHdoaWNoIGhhcyA5LzEwLzExIGJpdHMgb2YKKyAgICAgKiBhZGRyZXNzIGFuZCB0aGUgZXh0cmEgYml0cyBlbmQgdXAgaW4gdGhlICJjaGlwIGFkZHJlc3MiCisgICAgICogYml0IHNsb3RzLiBUaGlzIG1ha2VzIGEgMjRXQzA4ICgxS2J5dGUpIGNoaXAgbG9vayBsaWtlCisgICAgICogZm91ciAyNTYgYnl0ZSBjaGlwcy4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3ZSBjb25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBhZGRyZXNzIGZpZWxkIHRvCisgICAgICogc3RpbGwgYmUgb25lIGJ5dGUgYmVjYXVzZSB0aGUgZXh0cmEgYWRkcmVzcyBiaXRzIGFyZQorICAgICAqIGhpZGRlbiBpbiB0aGUgY2hpcCBhZGRyZXNzLgorICAgICAqLworICAgIGlmKCBhbGVuID4gMCApCisJY2hpcCB8PSAoKGFkZHIgPj4gKGFsZW4gKiA4KSkgJiBDRkdfSTJDX0VFUFJPTV9BRERSX09WRVJGTE9XKTsKKyNlbmRpZgorICAgIGlmKCAocmV0ID0gaTJjX3RyYW5zZmVyKElJQ19SRUFELCBjaGlwPDwxLCAmeGFkZHJbNC1hbGVuXSwgYWxlbiwgYnVmZmVyLCBsZW4gKSkgIT0gMCkgeworICAgICAgICBwcmludGYoICJJMmMgcmVhZDogZmFpbGVkICVkXG4iLCByZXQpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBpMmNfd3JpdGUgKHVjaGFyIGNoaXAsIHVpbnQgYWRkciwgaW50IGFsZW4sIHVjaGFyICogYnVmZmVyLCBpbnQgbGVuKQoreworICAgIHVjaGFyIHhhZGRyWzRdOworCisgICAgaWYgKCBhbGVuID4gNCApIHsKKwlwcmludGYgKCJJMkMgd3JpdGU6IGFkZHIgbGVuICVkIG5vdCBzdXBwb3J0ZWRcbiIsIGFsZW4pOworCXJldHVybiAxOworICAgIH0KKworICAgIGlmICggYWxlbiA+IDAgKSB7CisgICAgICAgIHhhZGRyWzBdID0gKGFkZHIgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgeGFkZHJbMV0gPSAoYWRkciA+PiAxNikgJiAweEZGOworICAgICAgICB4YWRkclsyXSA9IChhZGRyID4+IDgpICYgMHhGRjsKKyAgICAgICAgeGFkZHJbM10gPSBhZGRyICYgMHhGRjsKKyAgICB9CisKKyNpZmRlZiBDRkdfSTJDX0VFUFJPTV9BRERSX09WRVJGTE9XCisgICAgLyoKKyAgICAgKiBFRVBST00gY2hpcHMgdGhhdCBpbXBsZW1lbnQgImFkZHJlc3Mgb3ZlcmZsb3ciIGFyZSBvbmVzCisgICAgICogbGlrZSBDYXRhbHlzdCAyNFdDMDQvMDgvMTYgd2hpY2ggaGFzIDkvMTAvMTEgYml0cyBvZgorICAgICAqIGFkZHJlc3MgYW5kIHRoZSBleHRyYSBiaXRzIGVuZCB1cCBpbiB0aGUgImNoaXAgYWRkcmVzcyIKKyAgICAgKiBiaXQgc2xvdHMuIFRoaXMgbWFrZXMgYSAyNFdDMDggKDFLYnl0ZSkgY2hpcCBsb29rIGxpa2UKKyAgICAgKiBmb3VyIDI1NiBieXRlIGNoaXBzLgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHdlIGNvbnNpZGVyIHRoZSBsZW5ndGggb2YgdGhlIGFkZHJlc3MgZmllbGQgdG8KKyAgICAgKiBzdGlsbCBiZSBvbmUgYnl0ZSBiZWNhdXNlIHRoZSBleHRyYSBhZGRyZXNzIGJpdHMgYXJlCisgICAgICogaGlkZGVuIGluIHRoZSBjaGlwIGFkZHJlc3MuCisgICAgICovCisgICAgaWYoIGFsZW4gPiAwICkKKyAgICAgICAgY2hpcCB8PSAoKGFkZHIgPj4gKGFsZW4gKiA4KSkgJiBDRkdfSTJDX0VFUFJPTV9BRERSX09WRVJGTE9XKTsKKyNlbmRpZgorICAgIHJldHVybiAoaTJjX3RyYW5zZmVyKElJQ19XUklURSwgY2hpcDw8MSwgJnhhZGRyWzQtYWxlbl0sIGFsZW4sIGJ1ZmZlciwgbGVuICkgIT0gMCk7Cit9CisKKyNlbmRpZgkvKiBDT05GSUdfSEFSRF9JMkMgKi8KKworI2VuZGlmIC8qIENPTkZJR19EUklWRVJfUzNDMjRYMF9JMkMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXhzY2FsZS9iaXRmaWVsZC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gteHNjYWxlL2JpdGZpZWxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFmMGUzMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXhzY2FsZS9iaXRmaWVsZC5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICoJRklMRSAgICAJYml0ZmllbGQuaAorICoKKyAqCVZlcnNpb24gCTEuMQorICoJQXV0aG9yICAJQ29weXJpZ2h0IChjKSBNYXJjIEEuIFZpcmVkYXosIDE5OTgKKyAqCSAgICAgICAgCURFQyBXZXN0ZXJuIFJlc2VhcmNoIExhYm9yYXRvcnksIFBhbG8gQWx0bywgQ0EKKyAqCURhdGUgICAgCUFwcmlsIDE5OTggKEFwcmlsIDE5OTcpCisgKglTeXN0ZW0gIAlBZHZhbmNlZCBSSVNDIE1hY2hpbmUgKEFSTSkKKyAqCUxhbmd1YWdlCUMgb3IgQVJNIEFzc2VtYmx5CisgKglQdXJwb3NlIAlEZWZpbml0aW9uIG9mIG1hY3JvcyB0byBvcGVyYXRlIG9uIGJpdCBmaWVsZHMuCisgKi8KKworCisKKyNpZm5kZWYgX19CSVRGSUVMRF9ICisjZGVmaW5lIF9fQklURklFTERfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBVRGF0YShEYXRhKQkoKHVuc2lnbmVkIGxvbmcpIChEYXRhKSkKKyNlbHNlCisjZGVmaW5lIFVEYXRhKERhdGEpCShEYXRhKQorI2VuZGlmCisKKworLyoKKyAqIE1BQ1JPOiBGbGQKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm8gIkZsZCIgZW5jb2RlcyBhIGJpdCBmaWVsZCwgZ2l2ZW4gaXRzIHNpemUgYW5kIGl0cyBzaGlmdCB2YWx1ZQorICogICAgd2l0aCByZXNwZWN0IHRvIGJpdCAwLgorICoKKyAqIE5vdGUKKyAqICAgIEEgbW9yZSBpbnR1aXRpdmUgd2F5IHRvIGVuY29kZSBiaXQgZmllbGRzIHdvdWxkIGhhdmUgYmVlbiB0byB1c2UgdGhlaXIKKyAqICAgIG1hc2suIEhvd2V2ZXIsIGV4dHJhY3Rpbmcgc2l6ZSBhbmQgc2hpZnQgdmFsdWUgaW5mb3JtYXRpb24gZnJvbSBhIGJpdAorICogICAgZmllbGQncyBtYXNrIGlzIGN1bWJlcnNvbWUgYW5kIG1pZ2h0IGJyZWFrIHRoZSBhc3NlbWJsZXIgKDI1NS1jaGFyYWN0ZXIKKyAqICAgIGxpbmUtc2l6ZSBsaW1pdCkuCisgKgorICogSW5wdXQKKyAqICAgIFNpemUgICAgICAJU2l6ZSBvZiB0aGUgYml0IGZpZWxkLCBpbiBudW1iZXIgb2YgYml0cy4KKyAqICAgIFNoZnQgICAgICAJU2hpZnQgdmFsdWUgb2YgdGhlIGJpdCBmaWVsZCB3aXRoIHJlc3BlY3QgdG8gYml0IDAuCisgKgorICogT3V0cHV0CisgKiAgICBGbGQgICAgICAgCUVuY29kZWQgYml0IGZpZWxkLgorICovCisKKyNkZWZpbmUgRmxkKFNpemUsIFNoZnQpCSgoKFNpemUpIDw8IDE2KSArIChTaGZ0KSkKKworCisvKgorICogTUFDUk9TOiBGU2l6ZSwgRlNoZnQsIEZNc2ssIEZBbG5Nc2ssIEYxc3RCaXQKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm9zICJGU2l6ZSIsICJGU2hmdCIsICJGTXNrIiwgIkZBbG5Nc2siLCBhbmQgIkYxc3RCaXQiIHJldHVybgorICogICAgdGhlIHNpemUsIHNoaWZ0IHZhbHVlLCBtYXNrLCBhbGlnbmVkIG1hc2ssIGFuZCBmaXJzdCBiaXQgb2YgYQorICogICAgYml0IGZpZWxkLgorICoKKyAqIElucHV0CisgKiAgICBGaWVsZCAgICAgCUVuY29kZWQgYml0IGZpZWxkICh1c2luZyB0aGUgbWFjcm8gIkZsZCIpLgorICoKKyAqIE91dHB1dAorICogICAgRlNpemUgICAgIAlTaXplIG9mIHRoZSBiaXQgZmllbGQsIGluIG51bWJlciBvZiBiaXRzLgorICogICAgRlNoZnQgICAgIAlTaGlmdCB2YWx1ZSBvZiB0aGUgYml0IGZpZWxkIHdpdGggcmVzcGVjdCB0byBiaXQgMC4KKyAqICAgIEZNc2sgICAgICAJTWFzayBmb3IgdGhlIGJpdCBmaWVsZC4KKyAqICAgIEZBbG5Nc2sgICAJTWFzayBmb3IgdGhlIGJpdCBmaWVsZCwgYWxpZ25lZCBvbiBiaXQgMC4KKyAqICAgIEYxc3RCaXQgICAJRmlyc3QgYml0IG9mIHRoZSBiaXQgZmllbGQuCisgKi8KKworI2RlZmluZSBGU2l6ZShGaWVsZCkJKChGaWVsZCkgPj4gMTYpCisjZGVmaW5lIEZTaGZ0KEZpZWxkKQkoKEZpZWxkKSAmIDB4MDAwMEZGRkYpCisjZGVmaW5lIEZNc2soRmllbGQpCSgoKFVEYXRhICgxKSA8PCBGU2l6ZSAoRmllbGQpKSAtIDEpIDw8IEZTaGZ0IChGaWVsZCkpCisjZGVmaW5lIEZBbG5Nc2soRmllbGQpCSgoVURhdGEgKDEpIDw8IEZTaXplIChGaWVsZCkpIC0gMSkKKyNkZWZpbmUgRjFzdEJpdChGaWVsZCkJKFVEYXRhICgxKSA8PCBGU2hmdCAoRmllbGQpKQorCisKKy8qCisgKiBNQUNSTzogRkluc3J0CisgKgorICogUHVycG9zZQorICogICAgVGhlIG1hY3JvICJGSW5zcnQiIGluc2VydHMgYSB2YWx1ZSBpbnRvIGEgYml0IGZpZWxkIGJ5IHNoaWZ0aW5nIHRoZQorICogICAgZm9ybWVyIGFwcHJvcHJpYXRlbHkuCisgKgorICogSW5wdXQKKyAqICAgIFZhbHVlICAgICAJQml0LWZpZWxkIHZhbHVlLgorICogICAgRmllbGQgICAgIAlFbmNvZGVkIGJpdCBmaWVsZCAodXNpbmcgdGhlIG1hY3JvICJGbGQiKS4KKyAqCisgKiBPdXRwdXQKKyAqICAgIEZJbnNydCAgICAJQml0LWZpZWxkIHZhbHVlIHBvc2l0aW9uZWQgYXBwcm9wcmlhdGVseS4KKyAqLworCisjZGVmaW5lIEZJbnNydChWYWx1ZSwgRmllbGQpIFwKKyAgICAgICAgICAgICAgICAJKFVEYXRhIChWYWx1ZSkgPDwgRlNoZnQgKEZpZWxkKSkKKworCisvKgorICogTUFDUk86IEZFeHRyCisgKgorICogUHVycG9zZQorICogICAgVGhlIG1hY3JvICJGRXh0ciIgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIGEgYml0IGZpZWxkIGJ5IG1hc2tpbmcgYW5kCisgKiAgICBzaGlmdGluZyBpdCBhcHByb3ByaWF0ZWx5LgorICoKKyAqIElucHV0CisgKiAgICBEYXRhICAgICAgCURhdGEgY29udGFpbmluZyB0aGUgYml0LWZpZWxkIHRvIGJlIGV4dHJhY3RlZC4KKyAqICAgIEZpZWxkICAgICAJRW5jb2RlZCBiaXQgZmllbGQgKHVzaW5nIHRoZSBtYWNybyAiRmxkIikuCisgKgorICogT3V0cHV0CisgKiAgICBGRXh0ciAgICAgCUJpdC1maWVsZCB2YWx1ZS4KKyAqLworCisjZGVmaW5lIEZFeHRyKERhdGEsIEZpZWxkKSBcCisgICAgICAgICAgICAgICAgCSgoVURhdGEgKERhdGEpID4+IEZTaGZ0IChGaWVsZCkpICYgRkFsbk1zayAoRmllbGQpKQorCisKKyNlbmRpZiAvKiBfX0JJVEZJRUxEX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXhzY2FsZS9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gteHNjYWxlL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg0ZWE0OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXhzY2FsZS9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9oYXJkd2FyZS5oCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENyZWF0ZWQ6CUp1biAxNSwgMjAwMQorICogIENvcHlyaWdodDoJTW9udGFWaXN0YSBTb2Z0d2FyZSBJbmMuCisgKiAgCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIE5vdGU6IFRoaXMgZmlsZSB3YXMgdGFrZW4gZnJvbSBsaW51eC0yLjQuMTktcm1rNC1weGExCisgKgorICogLSAyMDAzLzAxLzIwIGltcGxlbWVudGF0aW9uIHNwZWNpZmljcyBhY3RpdmF0ZWQKKyAqICAgUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KKworCisvKgorICogVGhlc2UgYXJlIHN0YXRpY2FsbHkgbWFwcGVkIFBDTUNJQSBJTyBzcGFjZSBmb3IgZGVzaWducyB1c2luZyBpdCBhcyBhCisgKiBnZW5lcmljIElPIGJ1cywgdHlwaWNhbGx5IHdpdGggSVNBIHBhcnRzLCBoYXJkd2lyZWQgSURFIGludGVyZmFjZXMsIGV0Yy4KKyAqIFRoZSBhY3R1YWwgUENNQ0lBIGNvZGUgaXMgbWFwcGluZyByZXF1aXJlZCBJTyByZWdpb24gYXQgcnVuIHRpbWUuCisgKi8KKyNkZWZpbmUgUENNQ0lBX0lPXzBfQkFTRQkweGY2MDAwMDAwCisjZGVmaW5lIFBDTUNJQV9JT18xX0JBU0UJMHhmNzAwMDAwMAorCisKKy8qCisgKiBXZSByZXF1aXJlcyBhYnNvbHV0ZSBhZGRyZXNzZXMuCisgKi8KKyNkZWZpbmUgUENJT19CQVNFCQkwCisKKy8qCisgKiBXb3JrYXJvdW5kcyBmb3IgYXQgbGVhc3QgMiBlcnJhdGEgc28gZmFyIHJlcXVpcmUgdGhpcy4KKyAqIFRoZSBtYXBwaW5nIGlzIHNldCBpbiBtYWNoLXB4YS9nZW5lcmljLmMuCisgKi8KKyNkZWZpbmUgVU5DQUNIRURfUEhZU18wCQkweGZmMDAwMDAwCisjZGVmaW5lIFVOQ0FDSEVEX0FERFIJCVVOQ0FDSEVEX1BIWVNfMAorCisvKgorICogSW50ZWwgUFhBIGludGVybmFsIEkvTyBtYXBwaW5nczoKKyAqCisgKiAweDQwMDAwMDAwIC0gMHg0MWZmZmZmZiA8LS0+IDB4ZjgwMDAwMDAgLSAweGY5ZmZmZmZmCisgKiAweDQ0MDAwMDAwIC0gMHg0NWZmZmZmZiA8LS0+IDB4ZmEwMDAwMDAgLSAweGZiZmZmZmZmCisgKiAweDQ4MDAwMDAwIC0gMHg0OWZmZmZmZiA8LS0+IDB4ZmMwMDAwMDAgLSAweGZkZmZmZmZmCisgKi8KKworLyogRklYTUU6IE9ubHkgdGhpcyBkb2VzIHdvcmsgZm9yIHUtYm9vdC4uLiBmaW5kIG91dCB3aHkuLi4gW1JTXSAqLworI2RlZmluZSBVQk9PVF9SRUdfRklYIDEKKworI2lmbmRlZiBVQk9PVF9SRUdfRklYCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjZGVmaW5lIGlvX3Aydih4KQkoICgoeCkgfCAweGJlMDAwMDAwKSBeICh+KCh4KSA+PiAxKSAmIDB4MDYwMDAwMDApICkKKyNkZWZpbmUgaW9fdjJwKCB4ICkJKCAoKHgpICYgMHg0MWZmZmZmZikgXiAoICgoeCkgJiAweDA2MDAwMDAwKSA8PCAxKSApCisKKy8qCisgKiBUaGlzIF9fUkVHKCkgdmVyc2lvbiBnaXZlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBvbmUgYWJvdmUsICBleGNlcHQKKyAqIHRoYXQgd2UgYXJlIGZvb2xpbmcgZ2NjIHNvbWVob3cgc28gaXQgZ2VuZXJhdGVzIGZhciBiZXR0ZXIgYW5kIHNtYWxsZXIKKyAqIGFzc2VtYmx5IGNvZGUgZm9yIGFjY2VzcyB0byBjb250aWdvdXMgcmVnaXN0ZXJzLiAgSXQncyBhIHNoYW1lIHRoYXQgZ2NjCisgKiBkb2Vzbid0IGd1ZXNzIHRoaXMgYnkgaXRzZWxmLgorICovCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Cit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUzMiBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlOworIyBkZWZpbmUgX19SRUdQKHgpCSgoX19yZWdiYXNlICopKCh4KSZ+NDA5NSkpLT5vZmZzZXRbKCh4KSY0MDk1KT4+Ml0KKyMgZGVmaW5lIF9fUkVHKHgpCV9fUkVHUChpb19wMnYoeCkpCisjZW5kaWYKKworLyogTGV0J3Mga2ljayBnY2MncyBhc3MgYWdhaW4uLi4gKi8KKyMgZGVmaW5lIF9fUkVHMih4LHkpCVwKKwkoIF9fYnVpbHRpbl9jb25zdGFudF9wKHkpID8gKF9fUkVHKCh4KSArICh5KSkpIFwKKwkJCQkgIDogKCoodm9sYXRpbGUgdTMyICopKCh1MzIpJl9fUkVHKHgpICsgKHkpKSkgKQorCisjIGRlZmluZSBfX1BSRUcoeCkJKGlvX3YycCgodTMyKSYoeCkpKQorCisjZWxzZQorCisjIGRlZmluZSBfX1JFRyh4KQlpb19wMnYoeCkKKyMgZGVmaW5lIF9fUFJFRyh4KQlpb192MnAoeCkKKworI2VuZGlmCisjZW5kaWYgLyogVUJPT1RfUkVHX0ZJWCAqLworCQorI2lmZGVmIFVCT09UX1JFR19GSVgKKyMgdW5kZWYJaW9fcDJ2CisjIHVuZGVmIF9fUkVHCisjIGlmbmRlZiBfX0FTU0VNQkxZX18KKyMgIGRlZmluZSBpb19wMnYoUGhBZGQpICAgIChQaEFkZCkKKyMgIGRlZmluZSBfX1JFRyh4KQkoKigodm9sYXRpbGUgdTMyICopaW9fcDJ2KHgpKSkKKyMgIGRlZmluZSBfX1JFRzIoeCx5KQkoKih2b2xhdGlsZSB1MzIgKikoKHUzMikmX19SRUcoeCkgKyAoeSkpKQkKKyMgZWxzZQorIyAgZGVmaW5lIF9fUkVHKHgpICh4KQkKKyNlbmRpZiAvKiBVQk9PVF9SRUdfRklYICovCisKKyNpbmNsdWRlICJweGEtcmVncy5oIgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKgorICogR1BJTyBlZGdlIGRldGVjdGlvbiBmb3IgSVJRczoKKyAqIElSUXMgYXJlIGdlbmVyYXRlZCBvbiBGYWxsaW5nLUVkZ2UsIFJpc2luZy1FZGdlLCBvciBib3RoLgorICogVGhpcyBtdXN0IGJlIGNhbGxlZCAqYmVmb3JlKiB0aGUgY29ycmVzcG9uZGluZyBJUlEgaXMgcmVnaXN0ZXJlZC4KKyAqIFVzZSB0aGlzIGluc3RlYWQgb2YgZGlyZWN0bHkgc2V0dGluZyBHUkVSL0dGRVIuCisgKi8KKyNkZWZpbmUgR1BJT19GQUxMSU5HX0VER0UgICAgICAgMQorI2RlZmluZSBHUElPX1JJU0lOR19FREdFICAgICAgICAyCisjZGVmaW5lIEdQSU9fQk9USF9FREdFUyAgICAgICAgIDMKK2V4dGVybiB2b2lkIHNldF9HUElPX0lSUV9lZGdlKCBpbnQgZ3Bpb19uciwgaW50IGVkZ2VfbWFzayApOworCisvKgorICogSGFuZHkgcm91dGluZSB0byBzZXQgR1BJTyBhbHRlcm5hdGUgZnVuY3Rpb25zCisgKi8KK2V4dGVybiB2b2lkIHNldF9HUElPX21vZGUoIGludCBncGlvX21vZGUgKTsKKworLyoKKyAqIHJldHVybiBjdXJyZW50IGxjbGsgZnJlcXVlbmN5IGluIHVuaXRzIG9mIDEwa0h6CisgKi8KK2V4dGVybiB1bnNpZ25lZCBpbnQgZ2V0X2xjbGtfZnJlcXVlbmN5XzEwa2h6KHZvaWQpOworCisjZW5kaWYKKworCisvKgorICogSW1wbGVtZW50YXRpb24gc3BlY2lmaWNzCisgKi8KKworI2lmZGVmIENPTkZJR19BUkNIX0xVQkJPQ0sKKyNpbmNsdWRlICJsdWJib2NrLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BYQV9JRFAKKyNpbmNsdWRlICJpZHAuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUFhBX0NFUkYKKyNpbmNsdWRlICJjZXJmLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NTQjIyNgorI2luY2x1ZGUgImNzYjIyNi5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JTk5PS09NCisjaW5jbHVkZSAiaW5ub2tvbS5oIgorI2VuZGlmCisKKyNlbmRpZiAgLyogX0FTTV9BUkNIX0hBUkRXQVJFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoLXR5cGVzLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC10eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4Y2IwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC10eXBlcy5oCkBAIC0wLDAgKzEsMzM2NyBAQAorLyoKKyAqIFRoaXMgd2FzIGF1dG9tYWdpY2FsbHkgZ2VuZXJhdGVkIGZyb20gbWFjaC10eXBlcyEKKyAqIERvIE5PVCBlZGl0CisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fTUFDSF9UWVBFX0gKKyNkZWZpbmUgX19BU01fQVJNX01BQ0hfVFlQRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIFRoZSB0eXBlIG9mIG1hY2hpbmUgd2UncmUgcnVubmluZyBvbiAqLworZXh0ZXJuIHVuc2lnbmVkIGludCBfX21hY2hpbmVfYXJjaF90eXBlOworI2VuZGlmCisKKy8qIHNlZSBhcmNoL2FybS9rZXJuZWwvYXJjaC5jIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZXNlICovCisjZGVmaW5lIE1BQ0hfVFlQRV9FQlNBMTEwICAgICAgICAgICAgICAwCisjZGVmaW5lIE1BQ0hfVFlQRV9SSVNDUEMgICAgICAgICAgICAgICAxCisjZGVmaW5lIE1BQ0hfVFlQRV9ORVhVU1BDSSAgICAgICAgICAgICAzCisjZGVmaW5lIE1BQ0hfVFlQRV9FQlNBMjg1ICAgICAgICAgICAgICA0CisjZGVmaW5lIE1BQ0hfVFlQRV9ORVRXSU5ERVIgICAgICAgICAgICA1CisjZGVmaW5lIE1BQ0hfVFlQRV9DQVRTICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIE1BQ0hfVFlQRV9UQk9YICAgICAgICAgICAgICAgICA3CisjZGVmaW5lIE1BQ0hfVFlQRV9DTzI4NSAgICAgICAgICAgICAgICA4CisjZGVmaW5lIE1BQ0hfVFlQRV9DTFBTNzExMCAgICAgICAgICAgICA5CisjZGVmaW5lIE1BQ0hfVFlQRV9BUkNISU1FREVTICAgICAgICAgICAxMAorI2RlZmluZSBNQUNIX1RZUEVfQTVLICAgICAgICAgICAgICAgICAgMTEKKyNkZWZpbmUgTUFDSF9UWVBFX0VUT0lMRSAgICAgICAgICAgICAgIDEyCisjZGVmaW5lIE1BQ0hfVFlQRV9MQUNJRV9OQVMgICAgICAgICAgICAxMworI2RlZmluZSBNQUNIX1RZUEVfQ0xQUzc1MDAgICAgICAgICAgICAgMTQKKyNkZWZpbmUgTUFDSF9UWVBFX1NIQVJLICAgICAgICAgICAgICAgIDE1CisjZGVmaW5lIE1BQ0hfVFlQRV9CUlVUVVMgICAgICAgICAgICAgICAxNgorI2RlZmluZSBNQUNIX1RZUEVfUEVSU09OQUxfU0VSVkVSICAgICAgMTcKKyNkZWZpbmUgTUFDSF9UWVBFX0lUU1kgICAgICAgICAgICAgICAgIDE4CisjZGVmaW5lIE1BQ0hfVFlQRV9MNzIwMCAgICAgICAgICAgICAgICAxOQorI2RlZmluZSBNQUNIX1RZUEVfUExFQiAgICAgICAgICAgICAgICAgMjAKKyNkZWZpbmUgTUFDSF9UWVBFX0lOVEVHUkFUT1IgICAgICAgICAgIDIxCisjZGVmaW5lIE1BQ0hfVFlQRV9IMzYwMCAgICAgICAgICAgICAgICAyMgorI2RlZmluZSBNQUNIX1RZUEVfSVhQMTIwMCAgICAgICAgICAgICAgMjMKKyNkZWZpbmUgTUFDSF9UWVBFX1A3MjBUICAgICAgICAgICAgICAgIDI0CisjZGVmaW5lIE1BQ0hfVFlQRV9BU1NBQkVUICAgICAgICAgICAgICAyNQorI2RlZmluZSBNQUNIX1RZUEVfVklDVE9SICAgICAgICAgICAgICAgMjYKKyNkZWZpbmUgTUFDSF9UWVBFX0xBUlQgICAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIE1BQ0hfVFlQRV9SQU5HRVIgICAgICAgICAgICAgICAyOAorI2RlZmluZSBNQUNIX1RZUEVfR1JBUEhJQ1NDTElFTlQgICAgICAgMjkKKyNkZWZpbmUgTUFDSF9UWVBFX1hQODYwICAgICAgICAgICAgICAgIDMwCisjZGVmaW5lIE1BQ0hfVFlQRV9DRVJGICAgICAgICAgICAgICAgICAzMQorI2RlZmluZSBNQUNIX1RZUEVfTkFOT0VOR0lORSAgICAgICAgICAgMzIKKyNkZWZpbmUgTUFDSF9UWVBFX0ZQSUMgICAgICAgICAgICAgICAgIDMzCisjZGVmaW5lIE1BQ0hfVFlQRV9FWFRFTkVYMSAgICAgICAgICAgICAzNAorI2RlZmluZSBNQUNIX1RZUEVfU0hFUk1BTiAgICAgICAgICAgICAgMzUKKyNkZWZpbmUgTUFDSF9UWVBFX0FDQ0VMRU5UX1NBICAgICAgICAgIDM2CisjZGVmaW5lIE1BQ0hfVFlQRV9BQ0NFTEVOVF9MNzIwMCAgICAgICAzNworI2RlZmluZSBNQUNIX1RZUEVfTkVUUE9SVCAgICAgICAgICAgICAgMzgKKyNkZWZpbmUgTUFDSF9UWVBFX1BBTkdPTElOICAgICAgICAgICAgIDM5CisjZGVmaW5lIE1BQ0hfVFlQRV9ZT1BZICAgICAgICAgICAgICAgICA0MAorI2RlZmluZSBNQUNIX1RZUEVfQ09PTElER0UgICAgICAgICAgICAgNDEKKyNkZWZpbmUgTUFDSF9UWVBFX0hVV19XRUJQQU5FTCAgICAgICAgIDQyCisjZGVmaW5lIE1BQ0hfVFlQRV9TUE9UTUUgICAgICAgICAgICAgICA0MworI2RlZmluZSBNQUNIX1RZUEVfRlJFRUJJUkQgICAgICAgICAgICAgNDQKKyNkZWZpbmUgTUFDSF9UWVBFX1RJOTI1ICAgICAgICAgICAgICAgIDQ1CisjZGVmaW5lIE1BQ0hfVFlQRV9SSVNDU1RBVElPTiAgICAgICAgICA0NgorI2RlZmluZSBNQUNIX1RZUEVfQ0FWWSAgICAgICAgICAgICAgICAgNDcKKyNkZWZpbmUgTUFDSF9UWVBFX0pPUk5BREE3MjAgICAgICAgICAgIDQ4CisjZGVmaW5lIE1BQ0hfVFlQRV9PTU5JTUVURVIgICAgICAgICAgICA0OQorI2RlZmluZSBNQUNIX1RZUEVfRURCNzIxMSAgICAgICAgICAgICAgNTAKKyNkZWZpbmUgTUFDSF9UWVBFX0NJVFlHTyAgICAgICAgICAgICAgIDUxCisjZGVmaW5lIE1BQ0hfVFlQRV9QRlMxNjggICAgICAgICAgICAgICA1MgorI2RlZmluZSBNQUNIX1RZUEVfU1BPVCAgICAgICAgICAgICAgICAgNTMKKyNkZWZpbmUgTUFDSF9UWVBFX0ZMRVhBTkVUICAgICAgICAgICAgIDU0CisjZGVmaW5lIE1BQ0hfVFlQRV9XRUJQQUwgICAgICAgICAgICAgICA1NQorI2RlZmluZSBNQUNIX1RZUEVfTElOUERBICAgICAgICAgICAgICAgNTYKKyNkZWZpbmUgTUFDSF9UWVBFX0FOQUtJTiAgICAgICAgICAgICAgIDU3CisjZGVmaW5lIE1BQ0hfVFlQRV9NVkkgICAgICAgICAgICAgICAgICA1OAorI2RlZmluZSBNQUNIX1RZUEVfSlVQSVRFUiAgICAgICAgICAgICAgNTkKKyNkZWZpbmUgTUFDSF9UWVBFX1BTSU9OVyAgICAgICAgICAgICAgIDYwCisjZGVmaW5lIE1BQ0hfVFlQRV9BTE4gICAgICAgICAgICAgICAgICA2MQorI2RlZmluZSBNQUNIX1RZUEVfQ0FNRUxPVCAgICAgICAgICAgICAgNjIKKyNkZWZpbmUgTUFDSF9UWVBFX0dEUzIyMDAgICAgICAgICAgICAgIDYzCisjZGVmaW5lIE1BQ0hfVFlQRV9QU0lPTl9TRVJJRVM3ICAgICAgICA2NAorI2RlZmluZSBNQUNIX1RZUEVfWEZJTEUgICAgICAgICAgICAgICAgNjUKKyNkZWZpbmUgTUFDSF9UWVBFX0FDQ0VMRU5UX0VQOTMxMiAgICAgIDY2CisjZGVmaW5lIE1BQ0hfVFlQRV9JQzIwMCAgICAgICAgICAgICAgICA2NworI2RlZmluZSBNQUNIX1RZUEVfQ1JFRElUTEFSVCAgICAgICAgICAgNjgKKyNkZWZpbmUgTUFDSF9UWVBFX0hUTSAgICAgICAgICAgICAgICAgIDY5CisjZGVmaW5lIE1BQ0hfVFlQRV9JUTgwMzEwICAgICAgICAgICAgICA3MAorI2RlZmluZSBNQUNIX1RZUEVfRlJFRUJPVCAgICAgICAgICAgICAgNzEKKyNkZWZpbmUgTUFDSF9UWVBFX0VOVEVMICAgICAgICAgICAgICAgIDcyCisjZGVmaW5lIE1BQ0hfVFlQRV9FTlAzNTEwICAgICAgICAgICAgICA3MworI2RlZmluZSBNQUNIX1RZUEVfVFJJWkVQUyAgICAgICAgICAgICAgNzQKKyNkZWZpbmUgTUFDSF9UWVBFX05FU0EgICAgICAgICAgICAgICAgIDc1CisjZGVmaW5lIE1BQ0hfVFlQRV9WRU5VUyAgICAgICAgICAgICAgICA3NgorI2RlZmluZSBNQUNIX1RZUEVfVEFSRElTICAgICAgICAgICAgICAgNzcKKyNkZWZpbmUgTUFDSF9UWVBFX01FUkNVUlkgICAgICAgICAgICAgIDc4CisjZGVmaW5lIE1BQ0hfVFlQRV9FTVBFRyAgICAgICAgICAgICAgICA3OQorI2RlZmluZSBNQUNIX1RZUEVfSTgwMjAwRkNDICAgICAgICAgICAgODAKKyNkZWZpbmUgTUFDSF9UWVBFX0lUVF9DUEIgICAgICAgICAgICAgIDgxCisjZGVmaW5lIE1BQ0hfVFlQRV9TVkMgICAgICAgICAgICAgICAgICA4MgorI2RlZmluZSBNQUNIX1RZUEVfQUxQSEEyICAgICAgICAgICAgICAgODQKKyNkZWZpbmUgTUFDSF9UWVBFX0FMUEhBMSAgICAgICAgICAgICAgIDg1CisjZGVmaW5lIE1BQ0hfVFlQRV9ORVRBUk0gICAgICAgICAgICAgICA4NgorI2RlZmluZSBNQUNIX1RZUEVfU0lNUEFEICAgICAgICAgICAgICAgODcKKyNkZWZpbmUgTUFDSF9UWVBFX1BEQTEgICAgICAgICAgICAgICAgIDg4CisjZGVmaW5lIE1BQ0hfVFlQRV9MVUJCT0NLICAgICAgICAgICAgICA4OQorI2RlZmluZSBNQUNIX1RZUEVfQU5JS08gICAgICAgICAgICAgICAgOTAKKyNkZWZpbmUgTUFDSF9UWVBFX0NMRVA3MjEyICAgICAgICAgICAgIDkxCisjZGVmaW5lIE1BQ0hfVFlQRV9DUzg5NzEyICAgICAgICAgICAgICA5MgorI2RlZmluZSBNQUNIX1RZUEVfV0VBUkFSTSAgICAgICAgICAgICAgOTMKKyNkZWZpbmUgTUFDSF9UWVBFX1BPU1NJT19QWCAgICAgICAgICAgIDk0CisjZGVmaW5lIE1BQ0hfVFlQRV9TSURFQVJNICAgICAgICAgICAgICA5NQorI2RlZmluZSBNQUNIX1RZUEVfU1RPUksgICAgICAgICAgICAgICAgOTYKKyNkZWZpbmUgTUFDSF9UWVBFX1NIQU5OT04gICAgICAgICAgICAgIDk3CisjZGVmaW5lIE1BQ0hfVFlQRV9BQ0UgICAgICAgICAgICAgICAgICA5OAorI2RlZmluZSBNQUNIX1RZUEVfQkFMTFlBUk0gICAgICAgICAgICAgOTkKKyNkZWZpbmUgTUFDSF9UWVBFX1NJTVBVVEVSICAgICAgICAgICAgIDEwMAorI2RlZmluZSBNQUNIX1RZUEVfTkVYVEVSTSAgICAgICAgICAgICAgMTAxCisjZGVmaW5lIE1BQ0hfVFlQRV9TQTExMDBfRUxGICAgICAgICAgICAxMDIKKyNkZWZpbmUgTUFDSF9UWVBFX0dBVE9SICAgICAgICAgICAgICAgIDEwMworI2RlZmluZSBNQUNIX1RZUEVfR1JBTklURSAgICAgICAgICAgICAgMTA0CisjZGVmaW5lIE1BQ0hfVFlQRV9DT05TVVMgICAgICAgICAgICAgICAxMDUKKyNkZWZpbmUgTUFDSF9UWVBFX0FBRUQyMDAwICAgICAgICAgICAgIDEwNgorI2RlZmluZSBNQUNIX1RZUEVfQ0RCODk3MTIgICAgICAgICAgICAgMTA3CisjZGVmaW5lIE1BQ0hfVFlQRV9HUkFQSElDU01BU1RFUiAgICAgICAxMDgKKyNkZWZpbmUgTUFDSF9UWVBFX0FEU0JJVFNZICAgICAgICAgICAgIDEwOQorI2RlZmluZSBNQUNIX1RZUEVfUFhBX0lEUCAgICAgICAgICAgICAgMTEwCisjZGVmaW5lIE1BQ0hfVFlQRV9QTENFICAgICAgICAgICAgICAgICAxMTEKKyNkZWZpbmUgTUFDSF9UWVBFX1BUX1NZU1RFTTMgICAgICAgICAgIDExMgorI2RlZmluZSBNQUNIX1RZUEVfTUVEQUxCICAgICAgICAgICAgICAgMTEzCisjZGVmaW5lIE1BQ0hfVFlQRV9FQUdMRSAgICAgICAgICAgICAgICAxMTQKKyNkZWZpbmUgTUFDSF9UWVBFX0RTQzIxICAgICAgICAgICAgICAgIDExNQorI2RlZmluZSBNQUNIX1RZUEVfRFNDMjQgICAgICAgICAgICAgICAgMTE2CisjZGVmaW5lIE1BQ0hfVFlQRV9USTU0NzIgICAgICAgICAgICAgICAxMTcKKyNkZWZpbmUgTUFDSF9UWVBFX0FVVENQVTEyICAgICAgICAgICAgIDExOAorI2RlZmluZSBNQUNIX1RZUEVfVUVOR0lORSAgICAgICAgICAgICAgMTE5CisjZGVmaW5lIE1BQ0hfVFlQRV9CTFVFU1RFTSAgICAgICAgICAgICAxMjAKKyNkZWZpbmUgTUFDSF9UWVBFX1hJTkdVOCAgICAgICAgICAgICAgIDEyMQorI2RlZmluZSBNQUNIX1RZUEVfQlVTSFNUQiAgICAgICAgICAgICAgMTIyCisjZGVmaW5lIE1BQ0hfVFlQRV9FUFNJTE9OMSAgICAgICAgICAgICAxMjMKKyNkZWZpbmUgTUFDSF9UWVBFX0JBTExPT04gICAgICAgICAgICAgIDEyNAorI2RlZmluZSBNQUNIX1RZUEVfUFVQUFkgICAgICAgICAgICAgICAgMTI1CisjZGVmaW5lIE1BQ0hfVFlQRV9FTFJPWSAgICAgICAgICAgICAgICAxMjYKKyNkZWZpbmUgTUFDSF9UWVBFX0dNUzcyMCAgICAgICAgICAgICAgIDEyNworI2RlZmluZSBNQUNIX1RZUEVfUzI0WCAgICAgICAgICAgICAgICAgMTI4CisjZGVmaW5lIE1BQ0hfVFlQRV9KVEVMX0NMRVA3MzEyICAgICAgICAxMjkKKyNkZWZpbmUgTUFDSF9UWVBFX0NYODIxWFggICAgICAgICAgICAgIDEzMAorI2RlZmluZSBNQUNIX1RZUEVfRURCNzMxMiAgICAgICAgICAgICAgMTMxCisjZGVmaW5lIE1BQ0hfVFlQRV9CU0ExMTEwICAgICAgICAgICAgICAxMzIKKyNkZWZpbmUgTUFDSF9UWVBFX1BPV0VSUElOICAgICAgICAgICAgIDEzMworI2RlZmluZSBNQUNIX1RZUEVfT1BFTkFSTSAgICAgICAgICAgICAgMTM0CisjZGVmaW5lIE1BQ0hfVFlQRV9XSElURUNIQVBFTCAgICAgICAgICAxMzUKKyNkZWZpbmUgTUFDSF9UWVBFX0gzMTAwICAgICAgICAgICAgICAgIDEzNgorI2RlZmluZSBNQUNIX1RZUEVfSDM4MDAgICAgICAgICAgICAgICAgMTM3CisjZGVmaW5lIE1BQ0hfVFlQRV9CTFVFX1YxICAgICAgICAgICAgICAxMzgKKyNkZWZpbmUgTUFDSF9UWVBFX1BYQV9DRVJGICAgICAgICAgICAgIDEzOQorI2RlZmluZSBNQUNIX1RZUEVfQVJNN1RFVkIgICAgICAgICAgICAgMTQwCisjZGVmaW5lIE1BQ0hfVFlQRV9ENzQwMCAgICAgICAgICAgICAgICAxNDEKKyNkZWZpbmUgTUFDSF9UWVBFX1BJUkFOSEEgICAgICAgICAgICAgIDE0MgorI2RlZmluZSBNQUNIX1RZUEVfU0JDQU1FTE9UICAgICAgICAgICAgMTQzCisjZGVmaW5lIE1BQ0hfVFlQRV9LSU5HUyAgICAgICAgICAgICAgICAxNDQKKyNkZWZpbmUgTUFDSF9UWVBFX1NNREsyNDAwICAgICAgICAgICAgIDE0NQorI2RlZmluZSBNQUNIX1RZUEVfQ09MTElFICAgICAgICAgICAgICAgMTQ2CisjZGVmaW5lIE1BQ0hfVFlQRV9JRFIgICAgICAgICAgICAgICAgICAxNDcKKyNkZWZpbmUgTUFDSF9UWVBFX0JBREdFNCAgICAgICAgICAgICAgIDE0OAorI2RlZmluZSBNQUNIX1RZUEVfV0VCTkVUICAgICAgICAgICAgICAgMTQ5CisjZGVmaW5lIE1BQ0hfVFlQRV9ENzMwMCAgICAgICAgICAgICAgICAxNTAKKyNkZWZpbmUgTUFDSF9UWVBFX0NFUCAgICAgICAgICAgICAgICAgIDE1MQorI2RlZmluZSBNQUNIX1RZUEVfRk9SVFVORVQgICAgICAgICAgICAgMTUyCisjZGVmaW5lIE1BQ0hfVFlQRV9WQzU0N1ggICAgICAgICAgICAgICAxNTMKKyNkZWZpbmUgTUFDSF9UWVBFX0ZJTEVXQUxLRVIgICAgICAgICAgIDE1NAorI2RlZmluZSBNQUNIX1RZUEVfTkVUR0FURVdBWSAgICAgICAgICAgMTU1CisjZGVmaW5lIE1BQ0hfVFlQRV9TWU1CT0wyODAwICAgICAgICAgICAxNTYKKyNkZWZpbmUgTUFDSF9UWVBFX1NVTlMgICAgICAgICAgICAgICAgIDE1NworI2RlZmluZSBNQUNIX1RZUEVfRlJPRE8gICAgICAgICAgICAgICAgMTU4CisjZGVmaW5lIE1BQ0hfVFlQRV9NQUNIX1RZVEVfTVMzMDEgICAgICAxNTkKKyNkZWZpbmUgTUFDSF9UWVBFX01YMUFEUyAgICAgICAgICAgICAgIDE2MAorI2RlZmluZSBNQUNIX1RZUEVfSDcyMDEgICAgICAgICAgICAgICAgMTYxCisjZGVmaW5lIE1BQ0hfVFlQRV9INzIwMiAgICAgICAgICAgICAgICAxNjIKKyNkZWZpbmUgTUFDSF9UWVBFX0FNSUNPICAgICAgICAgICAgICAgIDE2MworI2RlZmluZSBNQUNIX1RZUEVfSUFNICAgICAgICAgICAgICAgICAgMTY0CisjZGVmaW5lIE1BQ0hfVFlQRV9UVDUzMCAgICAgICAgICAgICAgICAxNjUKKyNkZWZpbmUgTUFDSF9UWVBFX1NBTTI0MDAgICAgICAgICAgICAgIDE2NgorI2RlZmluZSBNQUNIX1RZUEVfSk9STkFEQTU2WCAgICAgICAgICAgMTY3CisjZGVmaW5lIE1BQ0hfVFlQRV9BQ1RJVkUgICAgICAgICAgICAgICAxNjgKKyNkZWZpbmUgTUFDSF9UWVBFX0lRODAzMjEgICAgICAgICAgICAgIDE2OQorI2RlZmluZSBNQUNIX1RZUEVfV0lEICAgICAgICAgICAgICAgICAgMTcwCisjZGVmaW5lIE1BQ0hfVFlQRV9TQUJJTkFMICAgICAgICAgICAgICAxNzEKKyNkZWZpbmUgTUFDSF9UWVBFX0lYUDQyNV9NQVRBQ1VNQkUgICAgIDE3MgorI2RlZmluZSBNQUNIX1RZUEVfTUlOSVBSSU5UICAgICAgICAgICAgMTczCisjZGVmaW5lIE1BQ0hfVFlQRV9BRE01MTBYICAgICAgICAgICAgICAxNzQKKyNkZWZpbmUgTUFDSF9UWVBFX1NWUzIwMCAgICAgICAgICAgICAgIDE3NQorI2RlZmluZSBNQUNIX1RZUEVfQVRHX1RDVSAgICAgICAgICAgICAgMTc2CisjZGVmaW5lIE1BQ0hfVFlQRV9KT1JOQURBODIwICAgICAgICAgICAxNzcKKyNkZWZpbmUgTUFDSF9UWVBFX1MzQzQ0QjAgICAgICAgICAgICAgIDE3OAorI2RlZmluZSBNQUNIX1RZUEVfTUFSR0lTMiAgICAgICAgICAgICAgMTc5CisjZGVmaW5lIE1BQ0hfVFlQRV9LUzg2OTUgICAgICAgICAgICAgICAxODAKKyNkZWZpbmUgTUFDSF9UWVBFX0JSSCAgICAgICAgICAgICAgICAgIDE4MQorI2RlZmluZSBNQUNIX1RZUEVfUzNDMjQxMCAgICAgICAgICAgICAgMTgyCisjZGVmaW5lIE1BQ0hfVFlQRV9QT1NTSU9fUFgzMCAgICAgICAgICAxODMKKyNkZWZpbmUgTUFDSF9UWVBFX1MzQzI4MDAgICAgICAgICAgICAgIDE4NAorI2RlZmluZSBNQUNIX1RZUEVfRkxFRVRXT09EICAgICAgICAgICAgMTg1CisjZGVmaW5lIE1BQ0hfVFlQRV9PTUFIQSAgICAgICAgICAgICAgICAxODYKKyNkZWZpbmUgTUFDSF9UWVBFX1RBNyAgICAgICAgICAgICAgICAgIDE4NworI2RlZmluZSBNQUNIX1RZUEVfTk9WQSAgICAgICAgICAgICAgICAgMTg4CisjZGVmaW5lIE1BQ0hfVFlQRV9ITUsgICAgICAgICAgICAgICAgICAxODkKKyNkZWZpbmUgTUFDSF9UWVBFX0lOUEhJTklUWSAgICAgICAgICAgIDE5MAorI2RlZmluZSBNQUNIX1RZUEVfRkVTVEVSICAgICAgICAgICAgICAgMTkxCisjZGVmaW5lIE1BQ0hfVFlQRV9HUEkgICAgICAgICAgICAgICAgICAxOTIKKyNkZWZpbmUgTUFDSF9UWVBFX1NNREsyNDEwICAgICAgICAgICAgIDE5MworI2RlZmluZSBNQUNIX1RZUEVfUFJFTUlVTSAgICAgICAgICAgICAgMTk0CisjZGVmaW5lIE1BQ0hfVFlQRV9ORVhJTyAgICAgICAgICAgICAgICAxOTUKKyNkZWZpbmUgTUFDSF9UWVBFX0JJVEJPWCAgICAgICAgICAgICAgIDE5NgorI2RlZmluZSBNQUNIX1RZUEVfRzIwMCAgICAgICAgICAgICAgICAgMTk3CisjZGVmaW5lIE1BQ0hfVFlQRV9HSUxMICAgICAgICAgICAgICAgICAxOTgKKyNkZWZpbmUgTUFDSF9UWVBFX1BYQV9NRVJDVVJZICAgICAgICAgIDE5OQorI2RlZmluZSBNQUNIX1RZUEVfQ0VJVkEgICAgICAgICAgICAgICAgMjAwCisjZGVmaW5lIE1BQ0hfVFlQRV9GUkVUICAgICAgICAgICAgICAgICAyMDEKKyNkZWZpbmUgTUFDSF9UWVBFX0VNQUlMUEhPTkUgICAgICAgICAgIDIwMgorI2RlZmluZSBNQUNIX1RZUEVfSDM5MDAgICAgICAgICAgICAgICAgMjAzCisjZGVmaW5lIE1BQ0hfVFlQRV9QWEExICAgICAgICAgICAgICAgICAyMDQKKyNkZWZpbmUgTUFDSF9UWVBFX0tPQU4zNjkgICAgICAgICAgICAgIDIwNQorI2RlZmluZSBNQUNIX1RZUEVfQ09HRU5UICAgICAgICAgICAgICAgMjA2CisjZGVmaW5lIE1BQ0hfVFlQRV9FU0xfU0lNUFVURVIgICAgICAgICAyMDcKKyNkZWZpbmUgTUFDSF9UWVBFX0VTTF9TSU1QVVRFUl9DTFIgICAgIDIwOAorI2RlZmluZSBNQUNIX1RZUEVfRVNMX1NJTVBVVEVSX0JXICAgICAgMjA5CisjZGVmaW5lIE1BQ0hfVFlQRV9ISFBfQ1JBRExFICAgICAgICAgICAyMTAKKyNkZWZpbmUgTUFDSF9UWVBFX0hFNTAwICAgICAgICAgICAgICAgIDIxMQorI2RlZmluZSBNQUNIX1RZUEVfSU5IQU5ERUxGMiAgICAgICAgICAgMjEyCisjZGVmaW5lIE1BQ0hfVFlQRV9JTkhBTkRGVElQICAgICAgICAgICAyMTMKKyNkZWZpbmUgTUFDSF9UWVBFX0ROUDExMTAgICAgICAgICAgICAgIDIxNAorI2RlZmluZSBNQUNIX1RZUEVfUE5QMTExMCAgICAgICAgICAgICAgMjE1CisjZGVmaW5lIE1BQ0hfVFlQRV9DU0IyMjYgICAgICAgICAgICAgICAyMTYKKyNkZWZpbmUgTUFDSF9UWVBFX0FSTk9MRCAgICAgICAgICAgICAgIDIxNworI2RlZmluZSBNQUNIX1RZUEVfUFNJQk9BUkQgICAgICAgICAgICAgMjE4CisjZGVmaW5lIE1BQ0hfVFlQRV9KWjgwMjggICAgICAgICAgICAgICAyMTkKKyNkZWZpbmUgTUFDSF9UWVBFX0lQQVEzICAgICAgICAgICAgICAgIDIyMAorI2RlZmluZSBNQUNIX1RZUEVfRk9SVEUgICAgICAgICAgICAgICAgMjIxCisjZGVmaW5lIE1BQ0hfVFlQRV9BQ0FNICAgICAgICAgICAgICAgICAyMjIKKyNkZWZpbmUgTUFDSF9UWVBFX0FCT1ggICAgICAgICAgICAgICAgIDIyMworI2RlZmluZSBNQUNIX1RZUEVfQVRNRUwgICAgICAgICAgICAgICAgMjI0CisjZGVmaW5lIE1BQ0hfVFlQRV9TSVRTQU5HICAgICAgICAgICAgICAyMjUKKyNkZWZpbmUgTUFDSF9UWVBFX0NQVTExMTBMQ0RORVQgICAgICAgIDIyNgorI2RlZmluZSBNQUNIX1RZUEVfTVBMX1ZDTUE5ICAgICAgICAgICAgMjI3CisjZGVmaW5lIE1BQ0hfVFlQRV9PUFVTX0ExICAgICAgICAgICAgICAyMjgKKyNkZWZpbmUgTUFDSF9UWVBFX0RBWVRPTkEgICAgICAgICAgICAgIDIyOQorI2RlZmluZSBNQUNIX1RZUEVfS0lMTEJFQVIgICAgICAgICAgICAgMjMwCisjZGVmaW5lIE1BQ0hfVFlQRV9ZT0hPICAgICAgICAgICAgICAgICAyMzEKKyNkZWZpbmUgTUFDSF9UWVBFX0pBU1BFUiAgICAgICAgICAgICAgIDIzMgorI2RlZmluZSBNQUNIX1RZUEVfRFNDMjUgICAgICAgICAgICAgICAgMjMzCisjZGVmaW5lIE1BQ0hfVFlQRV9JTk5PVkFUT1IgICAgICAgICAgICAyMzQKKyNkZWZpbmUgTUFDSF9UWVBFX1JBTVNFUyAgICAgICAgICAgICAgIDIzNQorI2RlZmluZSBNQUNIX1RZUEVfUzI4WCAgICAgICAgICAgICAgICAgMjM2CisjZGVmaW5lIE1BQ0hfVFlQRV9NUE9SVDMgICAgICAgICAgICAgICAyMzcKKyNkZWZpbmUgTUFDSF9UWVBFX1BYQV9FQUdMRTI1MCAgICAgICAgIDIzOAorI2RlZmluZSBNQUNIX1RZUEVfUERCICAgICAgICAgICAgICAgICAgMjM5CisjZGVmaW5lIE1BQ0hfVFlQRV9CTFVFXzJHICAgICAgICAgICAgICAyNDAKKyNkZWZpbmUgTUFDSF9UWVBFX0JMVUVBUkNIICAgICAgICAgICAgIDI0MQorI2RlZmluZSBNQUNIX1RZUEVfSVhNQjI0MDAgICAgICAgICAgICAgMjQyCisjZGVmaW5lIE1BQ0hfVFlQRV9JWE1CMjgwMCAgICAgICAgICAgICAyNDMKKyNkZWZpbmUgTUFDSF9UWVBFX0VYUExPUkVSICAgICAgICAgICAgIDI0NAorI2RlZmluZSBNQUNIX1RZUEVfSVhEUDQyNSAgICAgICAgICAgICAgMjQ1CisjZGVmaW5lIE1BQ0hfVFlQRV9DSElNUCAgICAgICAgICAgICAgICAyNDYKKyNkZWZpbmUgTUFDSF9UWVBFX1NUT1JLX05FU1QgICAgICAgICAgIDI0NworI2RlZmluZSBNQUNIX1RZUEVfU1RPUktfRUdHICAgICAgICAgICAgMjQ4CisjZGVmaW5lIE1BQ0hfVFlQRV9XSVNNTyAgICAgICAgICAgICAgICAyNDkKKyNkZWZpbmUgTUFDSF9UWVBFX0VaTElOWCAgICAgICAgICAgICAgIDI1MAorI2RlZmluZSBNQUNIX1RZUEVfQVQ5MSAgICAgICAgICAgICAgICAgMjUxCisjZGVmaW5lIE1BQ0hfVFlQRV9PUklPTiAgICAgICAgICAgICAgICAyNTIKKyNkZWZpbmUgTUFDSF9UWVBFX05FUFRVTkUgICAgICAgICAgICAgIDI1MworI2RlZmluZSBNQUNIX1RZUEVfSEFDS0tJVCAgICAgICAgICAgICAgMjU0CisjZGVmaW5lIE1BQ0hfVFlQRV9QWEFfV0lOUzMwICAgICAgICAgICAyNTUKKyNkZWZpbmUgTUFDSF9UWVBFX0xBVklOTkEgICAgICAgICAgICAgIDI1NgorI2RlZmluZSBNQUNIX1RZUEVfUFhBX1VFTkdJTkUgICAgICAgICAgMjU3CisjZGVmaW5lIE1BQ0hfVFlQRV9JTk5PS09NICAgICAgICAgICAgICAyNTgKKworI2lmZGVmIENPTkZJR19BUkNIX0VCU0ExMTAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VCU0ExMTAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZWJzYTExMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRUJTQTExMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Vic2ExMTAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUlBDCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9SSVNDUEMKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcmlzY3BjKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9SSVNDUEMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19yaXNjcGMoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTkVYVVNQQ0kKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX05FWFVTUENJCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX25leHVzcGNpKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVhVU1BDSSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX25leHVzcGNpKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VCU0EyODUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VCU0EyODUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZWJzYTI4NSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRUJTQTI4NSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Vic2EyODUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTkVUV0lOREVSCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9ORVRXSU5ERVIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmV0d2luZGVyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVRXSU5ERVIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19uZXR3aW5kZXIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0FUUworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ0FUUworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jYXRzKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DQVRTKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2F0cygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9UQk9YCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9UQk9YCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3Rib3goKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1RCT1gpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc190Ym94KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NPMjg1CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DTzI4NQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jbzI4NSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ08yODUpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jbzI4NSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9DTFBTNzExMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ0xQUzcxMTAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2xwczcxMTAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NMUFM3MTEwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2xwczcxMTAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQVJDCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9BUkNISU1FREVTCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2FyY2hpbWVkZXMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FSQ0hJTUVERVMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hcmNoaW1lZGVzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0E1SworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQTVLCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2E1aygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQTVLKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYTVrKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VUT0lMRQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRVRPSUxFCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2V0b2lsZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRVRPSUxFKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXRvaWxlKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0xBQ0lFX05BUworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTEFDSUVfTkFTCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2xhY2llX25hcygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTEFDSUVfTkFTKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbGFjaWVfbmFzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NMUFM3NTAwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DTFBTNzUwMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jbHBzNzUwMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ0xQUzc1MDApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jbHBzNzUwMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9TSEFSSworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0hBUksKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2hhcmsoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1NIQVJLKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2hhcmsoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9CUlVUVVMKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0JSVVRVUworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19icnV0dXMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0JSVVRVUykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2JydXR1cygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9QRVJTT05BTF9TRVJWRVIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BFUlNPTkFMX1NFUlZFUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wZXJzb25hbF9zZXJ2ZXIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BFUlNPTkFMX1NFUlZFUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3BlcnNvbmFsX3NlcnZlcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0lUU1kKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lUU1kKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXRzeSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSVRTWSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2l0c3koKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTDcyMDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0w3MjAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2w3MjAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9MNzIwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2w3MjAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfUExFQgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUExFQgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wbGViKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QTEVCKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcGxlYigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JTlRFR1JBVE9SCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9JTlRFR1JBVE9SCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2ludGVncmF0b3IoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lOVEVHUkFUT1IpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19pbnRlZ3JhdG9yKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSDM2MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0gzNjAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzNjAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9IMzYwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzNjAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lYUDEyMDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lYUDEyMDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXhwMTIwMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSVhQMTIwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2l4cDEyMDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUDcyMFQKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1A3MjBUCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3A3MjB0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QNzIwVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3A3MjB0KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQVNTQUJFVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQVNTQUJFVAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hc3NhYmV0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BU1NBQkVUKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYXNzYWJldCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1ZJQ1RPUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfVklDVE9SCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3ZpY3RvcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfVklDVE9SKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdmljdG9yKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTEFSVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTEFSVAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19sYXJ0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9MQVJUKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbGFydCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1JBTkdFUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUkFOR0VSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3JhbmdlcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUkFOR0VSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcmFuZ2VyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfR1JBUEhJQ1NDTElFTlQKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0dSQVBISUNTQ0xJRU5UCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dyYXBoaWNzY2xpZW50KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9HUkFQSElDU0NMSUVOVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2dyYXBoaWNzY2xpZW50KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfWFA4NjAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1hQODYwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3hwODYwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9YUDg2MCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3hwODYwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQ0VSRgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ0VSRgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jZXJmKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DRVJGKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2VyZigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX05BTk9FTkdJTkUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX05BTk9FTkdJTkUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmFub2VuZ2luZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTkFOT0VOR0lORSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX25hbm9lbmdpbmUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9GUElDCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9GUElDCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2ZwaWMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0ZQSUMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19mcGljKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRVhURU5FWDEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VYVEVORVgxCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2V4dGVuZXgxKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FWFRFTkVYMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2V4dGVuZXgxKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfU0hFUk1BTgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0hFUk1BTgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zaGVybWFuKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TSEVSTUFOKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2hlcm1hbigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0FDQ0VMRU5UCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9BQ0NFTEVOVF9TQQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hY2NlbGVudF9zYSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQUNDRUxFTlRfU0EpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hY2NlbGVudF9zYSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9MNzIwMF9BQ0NFTEVOVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQUNDRUxFTlRfTDcyMDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWNjZWxlbnRfbDcyMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FDQ0VMRU5UX0w3MjAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWNjZWxlbnRfbDcyMDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9ORVRQT1JUCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9ORVRQT1JUCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX25ldHBvcnQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX05FVFBPUlQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19uZXRwb3J0KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfUEFOR09MSU4KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BBTkdPTElOCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3BhbmdvbGluKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QQU5HT0xJTikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3BhbmdvbGluKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfWU9QWQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfWU9QWQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc195b3B5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ZT1BZKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfeW9weSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0NPT0xJREdFCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DT09MSURHRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jb29saWRnZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ09PTElER0UpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jb29saWRnZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0hVV19XRUJQQU5FTAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSFVXX1dFQlBBTkVMCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2h1d193ZWJwYW5lbCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSFVXX1dFQlBBTkVMKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaHV3X3dlYnBhbmVsKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1NQT1RNRQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU1BPVE1FCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3Nwb3RtZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1BPVE1FKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3BvdG1lKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0ZSRUVCSVJECisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9GUkVFQklSRAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19mcmVlYmlyZCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRlJFRUJJUkQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19mcmVlYmlyZCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9USTkyNQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfVEk5MjUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdGk5MjUoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1RJOTI1KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdGk5MjUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUklTQ1NUQVRJT04KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1JJU0NTVEFUSU9OCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3Jpc2NzdGF0aW9uKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9SSVNDU1RBVElPTikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3Jpc2NzdGF0aW9uKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQ0FWWQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ0FWWQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jYXZ5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DQVZZKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2F2eSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0pPUk5BREE3MjAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0pPUk5BREE3MjAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfam9ybmFkYTcyMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSk9STkFEQTcyMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2pvcm5hZGE3MjAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9PTU5JTUVURVIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX09NTklNRVRFUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19vbW5pbWV0ZXIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX09NTklNRVRFUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX29tbmltZXRlcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9FREI3MjExCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9FREI3MjExCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2VkYjcyMTEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0VEQjcyMTEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19lZGI3MjExKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQ0lUWUdPCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DSVRZR08KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY2l0eWdvKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DSVRZR08pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jaXR5Z28oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9QRlMxNjgKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BGUzE2OAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wZnMxNjgoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BGUzE2OCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3BmczE2OCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NQT1QKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NQT1QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3BvdCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1BPVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3Nwb3QoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9GTEVYQU5FVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRkxFWEFORVQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZmxleGFuZXQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0ZMRVhBTkVUKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZmxleGFuZXQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfV0VCUEFMCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9XRUJQQUwKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfd2VicGFsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9XRUJQQUwpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc193ZWJwYWwoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9MSU5QREEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0xJTlBEQQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19saW5wZGEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0xJTlBEQSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2xpbnBkYSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9BTkFLSU4KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FOQUtJTgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hbmFraW4oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FOQUtJTikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FuYWtpbigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX01WSQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTVZJCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX212aSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTVZJKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXZpKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSlVQSVRFUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSlVQSVRFUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19qdXBpdGVyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9KVVBJVEVSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfanVwaXRlcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9QU0lPTlcKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BTSU9OVworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wc2lvbncoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BTSU9OVykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3BzaW9udygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0FMTgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQUxOCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2FsbigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQUxOKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWxuKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NBTUVMT1QKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NBTUVMT1QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXB4YSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ0FNRUxPVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VweGEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9HRFMyMjAwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9HRFMyMjAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dkczIyMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0dEUzIyMDApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19nZHMyMjAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfUFNJT05fU0VSSUVTNworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUFNJT05fU0VSSUVTNworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wc2lvbl9zZXJpZXM3KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QU0lPTl9TRVJJRVM3KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHNpb25fc2VyaWVzNygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1hGSUxFCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9YRklMRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc194ZmlsZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfWEZJTEUpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc194ZmlsZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9BQ0NFTEVOVF9FUDkzMTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FDQ0VMRU5UX0VQOTMxMgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hY2NlbGVudF9lcDkzMTIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FDQ0VMRU5UX0VQOTMxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FjY2VsZW50X2VwOTMxMigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JQzIwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSUMyMDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaWMyMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lDMjAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaWMyMDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9DUkVESVRMQVJUCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DUkVESVRMQVJUCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NyZWRpdGxhcnQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NSRURJVExBUlQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jcmVkaXRsYXJ0KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSFRNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9IVE0KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaHRtKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9IVE0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19odG0oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSVE4MDMxMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSVE4MDMxMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19pcTgwMzEwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JUTgwMzEwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXE4MDMxMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0ZSRUVCT1QKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0ZSRUVCT1QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZnJlZWJvdCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRlJFRUJPVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2ZyZWVib3QoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfRU5URUwKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VOVEVMCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2VudGVsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FTlRFTCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VudGVsKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VOUDM1MTAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VOUDM1MTAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZW5wMzUxMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRU5QMzUxMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VucDM1MTAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9UUklaRVBTCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9UUklaRVBTCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3RyaXplcHMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1RSSVpFUFMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc190cml6ZXBzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTkVTQQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTkVTQQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19uZXNhKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVNBKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmVzYSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9WRU5VUworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfVkVOVVMKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdmVudXMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1ZFTlVTKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdmVudXMoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfVEFSRElTCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9UQVJESVMKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdGFyZGlzKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9UQVJESVMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc190YXJkaXMoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTUVSQ1VSWQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTUVSQ1VSWQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19tZXJjdXJ5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9NRVJDVVJZKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbWVyY3VyeSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0VNUEVHCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9FTVBFRworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19lbXBlZygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRU1QRUcpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19lbXBlZygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JODAyMDBGQ0MKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0k4MDIwMEZDQworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hZGlfZXZiKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JODAyMDBGQ0MpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hZGlfZXZiKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSVRUX0NQQgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSVRUX0NQQgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19pdHRfY3BiKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JVFRfQ1BCKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXR0X2NwYigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NWQworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU1ZDCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3N2YygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1ZDKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3ZjKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQUxQSEEyCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9BTFBIQTIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWxwaGEyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BTFBIQTIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hbHBoYTIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9BTFBIQTEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FMUEhBMQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hbHBoYTEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FMUEhBMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FscGhhMSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9ORVRBUk0KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX05FVEFSTQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19uZXRhcm0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX05FVEFSTSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX25ldGFybSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NJTVBBRAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0lNUEFECisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3NpbXBhZCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU0lNUEFEKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2ltcGFkKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BEQTEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BEQTEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcGRhMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUERBMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3BkYTEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTFVCQk9DSworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTFVCQk9DSworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19sdWJib2NrKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9MVUJCT0NLKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbHViYm9jaygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9BTklLTworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQU5JS08KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYW5pa28oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FOSUtPKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYW5pa28oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0xFUDcyMTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NMRVA3MjEyCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NsZXA3MjEyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DTEVQNzIxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NsZXA3MjEyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NTODk3MTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NTODk3MTIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY3M4OTcxMigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ1M4OTcxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NzODk3MTIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9XRUFSQVJNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9XRUFSQVJNCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3dlYXJhcm0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1dFQVJBUk0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc193ZWFyYXJtKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfUE9TU0lPX1BYCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QT1NTSU9fUFgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcG9zc2lvX3B4KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QT1NTSU9fUFgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19wb3NzaW9fcHgoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9TSURFQVJNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TSURFQVJNCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3NpZGVhcm0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1NJREVBUk0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zaWRlYXJtKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfU1RPUksKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NUT1JLCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3N0b3JrKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TVE9SSykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3N0b3JrKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfU0hBTk5PTgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0hBTk5PTgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zaGFubm9uKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TSEFOTk9OKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2hhbm5vbigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9BQ0UKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FDRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hY2UoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FDRSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FjZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0JBTExZQVJNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9CQUxMWUFSTQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19iYWxseWFybSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQkFMTFlBUk0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19iYWxseWFybSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NJTVBVVEVSCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TSU1QVVRFUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zaW1wdXRlcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU0lNUFVURVIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zaW1wdXRlcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX05FWFRFUk0KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX05FWFRFUk0KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmV4dGVybSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTkVYVEVSTSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX25leHRlcm0oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9TQTExMDBfRUxGCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TQTExMDBfRUxGCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3NhMTEwMF9lbGYoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1NBMTEwMF9FTEYpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zYTExMDBfZWxmKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfR0FUT1IKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0dBVE9SCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dhdG9yKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9HQVRPUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2dhdG9yKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0dSQU5JVEUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0dSQU5JVEUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZ3Jhbml0ZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfR1JBTklURSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2dyYW5pdGUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9DT05TVVMKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NPTlNVUworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jb25zdXMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NPTlNVUykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NvbnN1cygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9BQUVEMjAwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQUFFRDIwMDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWFlZDIwMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FBRUQyMDAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWFlZDIwMDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0RCODk3MTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NEQjg5NzEyCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NkYjg5NzEyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DREI4OTcxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NkYjg5NzEyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfR1JBUEhJQ1NNQVNURVIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0dSQVBISUNTTUFTVEVSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dyYXBoaWNzbWFzdGVyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9HUkFQSElDU01BU1RFUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2dyYXBoaWNzbWFzdGVyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQURTQklUU1kKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FEU0JJVFNZCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2Fkc2JpdHN5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BRFNCSVRTWSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Fkc2JpdHN5KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BYQV9JRFAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BYQV9JRFAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhX2lkcCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUFhBX0lEUCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV9pZHAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUExDRQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUExDRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wbGNlKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QTENFKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcGxjZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1BUX1NZU1RFTTMKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BUX1NZU1RFTTMKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHRfc3lzdGVtMygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUFRfU1lTVEVNMykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B0X3N5c3RlbTMoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTUVEQUxCCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9NRURBTEIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXVycGh5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9NRURBTEIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19tdXJwaHkoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfRUFHTEUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VBR0xFCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2VhZ2xlKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FQUdMRSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VhZ2xlKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0RTQzIxCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9EU0MyMQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19kc2MyMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRFNDMjEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19kc2MyMSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9EU0MyNAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRFNDMjQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZHNjMjQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0RTQzI0KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZHNjMjQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfVEk1NDcyCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9USTU0NzIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdGk1NDcyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9USTU0NzIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc190aTU0NzIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQVVUQ1BVMTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FVVENQVTEyCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2F1dGNwdTEyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BVVRDUFUxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2F1dGNwdTEyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1VFTkdJTkUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1VFTkdJTkUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdWVuZ2luZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfVUVOR0lORSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3VlbmdpbmUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9CTFVFU1RFTQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQkxVRVNURU0KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmx1ZXN0ZW0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0JMVUVTVEVNKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmx1ZXN0ZW0oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfWElOR1U4CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9YSU5HVTgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfeGluZ3U4KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9YSU5HVTgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc194aW5ndTgoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQlVTSFNUQgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQlVTSFNUQgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19idXNoc3RiKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9CVVNIU1RCKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYnVzaHN0YigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0VQU0lMT04xCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9FUFNJTE9OMQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19lcHNpbG9uMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRVBTSUxPTjEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19lcHNpbG9uMSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0JBTExPT04KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0JBTExPT04KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmFsbG9vbigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQkFMTE9PTikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2JhbGxvb24oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUFVQUFkKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BVUFBZCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3B1cHB5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QVVBQWSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B1cHB5KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRUxST1kKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VMUk9ZCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2Vscm95KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FTFJPWSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Vscm95KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0dNUzcyMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfR01TNzIwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dtczcyMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfR01TNzIwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZ21zNzIwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1MyNFgKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1MyNFgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfczI0eCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUzI0WCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3MyNHgoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSlRFTF9DTEVQNzMxMgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSlRFTF9DTEVQNzMxMgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19qdGVsX2NsZXA3MzEyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9KVEVMX0NMRVA3MzEyKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfanRlbF9jbGVwNzMxMigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9DWDgyMVhYCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DWDgyMVhYCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2N4ODIxeHgoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NYODIxWFgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jeDgyMXh4KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VEQjczMTIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VEQjczMTIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZWRiNzMxMigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRURCNzMxMikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VkYjczMTIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9CU0ExMTEwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9CU0ExMTEwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2JzYTExMTAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0JTQTExMTApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19ic2ExMTEwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BPV0VSUElOCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QT1dFUlBJTgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wb3dlcnBpbigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUE9XRVJQSU4pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19wb3dlcnBpbigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9PUEVOQVJNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9PUEVOQVJNCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX29wZW5hcm0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX09QRU5BUk0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19vcGVuYXJtKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfV0hJVEVDSEFQRUwKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1dISVRFQ0hBUEVMCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3doaXRlY2hhcGVsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9XSElURUNIQVBFTCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3doaXRlY2hhcGVsKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSDMxMDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0gzMTAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzMTAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9IMzEwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzMTAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSDM4MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0gzODAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzODAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9IMzgwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzODAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0JMVUVfVjEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0JMVUVfVjEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmx1ZV92MSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQkxVRV9WMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2JsdWVfdjEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUFhBX0NFUkYKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BYQV9DRVJGCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV9jZXJmKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QWEFfQ0VSRikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV9jZXJmKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0FSTTdURVZCCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9BUk03VEVWQgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hcm03dGV2YigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQVJNN1RFVkIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hcm03dGV2YigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0Q3NDAwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9ENzQwMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19kNzQwMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRDc0MDApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19kNzQwMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9QSVJBTkhBCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QSVJBTkhBCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3BpcmFuaGEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BJUkFOSEEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19waXJhbmhhKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfU0JDQU1FTE9UCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TQkNBTUVMT1QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2JjYW1lbG90KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TQkNBTUVMT1QpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zYmNhbWVsb3QoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9LSU5HUworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfS0lOR1MKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfa2luZ3MoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0tJTkdTKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfa2luZ3MoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfU01ESzI0MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NNREsyNDAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3NtZGsyNDAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TTURLMjQwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3NtZGsyNDAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NPTExJRQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ09MTElFCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NvbGxpZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ09MTElFKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY29sbGllKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lEUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSURSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2lkcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSURSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaWRyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQkFER0U0CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9CQURHRTQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmFkZ2U0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9CQURHRTQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19iYWRnZTQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfV0VCTkVUCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9XRUJORVQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfd2VibmV0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9XRUJORVQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc193ZWJuZXQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9ENzMwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRDczMDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZDczMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0Q3MzAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZDczMDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9DRVAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NFUAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19jZXAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NFUCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NlcCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9GT1JUVU5FVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRk9SVFVORVQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZm9ydHVuZXQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0ZPUlRVTkVUKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZm9ydHVuZXQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfVkM1NDdYCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9WQzU0N1gKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdmM1NDd4KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9WQzU0N1gpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc192YzU0N3goKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9GSUxFV0FMS0VSCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9GSUxFV0FMS0VSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2ZpbGV3YWxrZXIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0ZJTEVXQUxLRVIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19maWxld2Fsa2VyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTkVUR0FURVdBWQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTkVUR0FURVdBWQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19uZXRnYXRld2F5KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVRHQVRFV0FZKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmV0Z2F0ZXdheSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NZTUJPTDI4MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NZTUJPTDI4MDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3ltYm9sMjgwMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1lNQk9MMjgwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3N5bWJvbDI4MDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9TVU5TCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TVU5TCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3N1bnMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1NVTlMpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zdW5zKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRlJPRE8KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0ZST0RPCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2Zyb2RvKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9GUk9ETykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Zyb2RvKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTUFDSF9UWVRFX01TMzAxCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9NQUNIX1RZVEVfTVMzMDEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXMzMDEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX01BQ0hfVFlURV9NUzMwMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX21zMzAxKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX01YMUFEUworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTVgxQURTCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX214MWFkcygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTVgxQURTKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXgxYWRzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0g3MjAxCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9INzIwMQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19oNzIwMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSDcyMDEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19oNzIwMSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9INzIwMgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSDcyMDIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaDcyMDIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0g3MjAyKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaDcyMDIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQU1JQ08KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FNSUNPCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2FtaWNvKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BTUlDTykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FtaWNvKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSUFNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9JQU0KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaWFtKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JQU0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19pYW0oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9UVDUzMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfVFQ1MzAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdHQ1MzAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1RUNTMwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdHQ1MzAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfU0FNMjQwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0FNMjQwMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zYW0yNDAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TQU0yNDAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2FtMjQwMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0pPUk5BREE1NlgKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0pPUk5BREE1NlgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfam9ybmFkYTU2eCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSk9STkFEQTU2WCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2pvcm5hZGE1NngoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9BQ1RJVkUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FDVElWRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hY3RpdmUoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0FDVElWRSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2FjdGl2ZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JUTgwMzIxCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9JUTgwMzIxCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2lxODAzMjEoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lRODAzMjEpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19pcTgwMzIxKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfV0lECisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9XSUQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfd2lkKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9XSUQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc193aWQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfU0FCSU5BTAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU0FCSU5BTAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zYWJpbmFsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TQUJJTkFMKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2FiaW5hbCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JWFA0MjVfTUFUQUNVTUJFCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9JWFA0MjVfTUFUQUNVTUJFCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2l4cDQyNV9tYXRhY3VtYmUoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lYUDQyNV9NQVRBQ1VNQkUpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19peHA0MjVfbWF0YWN1bWJlKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTUlOSVBSSU5UCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9NSU5JUFJJTlQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbWluaXByaW50KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9NSU5JUFJJTlQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19taW5pcHJpbnQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQURNNTEwWAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQURNNTEwWAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hZG01MTB4KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BRE01MTBYKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWRtNTEweCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX1NWUzIwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfU1ZTMjAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3N2czIwMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1ZTMjAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3ZzMjAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0FUR19UQ1UKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FUR19UQ1UKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYXRnX3RjdSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQVRHX1RDVSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2F0Z190Y3UoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9KT1JOQURBODIwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9KT1JOQURBODIwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2pvcm5hZGE4MjAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0pPUk5BREE4MjApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19qb3JuYWRhODIwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1MzQzQ0QjAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1MzQzQ0QjAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfczNjNDRiMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUzNDNDRCMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3MzYzQ0YjAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTUFSR0lTMgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTUFSR0lTMgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19tYXJnaXMyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9NQVJHSVMyKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbWFyZ2lzMigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9LUzg2OTUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0tTODY5NQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19rczg2OTUoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0tTODY5NSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2tzODY5NSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9CUkgKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0JSSAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19icmgoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0JSSCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2JyaCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9TM0MyNDEwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TM0MyNDEwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3MzYzI0MTAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1MzQzI0MTApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zM2MyNDEwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BPU1NJT19QWDMwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QT1NTSU9fUFgzMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19wb3NzaW9fcHgzMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUE9TU0lPX1BYMzApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19wb3NzaW9fcHgzMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9TM0MyODAwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TM0MyODAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3MzYzI4MDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1MzQzI4MDApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zM2MyODAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRkxFRVRXT09ECisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9GTEVFVFdPT0QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZmxlZXR3b29kKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9GTEVFVFdPT0QpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19mbGVldHdvb2QoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BSEEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX09NQUhBCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX29tYWhhKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9PTUFIQSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX29tYWhhKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1RBNworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfVEE3CisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3RhNygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfVEE3KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfdGE3KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTk9WQQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTk9WQQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19ub3ZhKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9OT1ZBKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbm92YSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9ITUsKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0hNSworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19obWsoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0hNSykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2htaygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JTlBISU5JVFkKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lOUEhJTklUWQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19pbnBoaW5pdHkoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lOUEhJTklUWSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2lucGhpbml0eSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0ZFU1RFUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRkVTVEVSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2Zlc3RlcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRkVTVEVSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZmVzdGVyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0dQSQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfR1BJCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2dwaSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfR1BJKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZ3BpKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1NNREsyNDEwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TTURLMjQxMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19zbWRrMjQxMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU01ESzI0MTApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zbWRrMjQxMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9QUkVNSVVNCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QUkVNSVVNCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3ByZW1pdW0oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BSRU1JVU0pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19wcmVtaXVtKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfTkVYSU8KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX05FWElPCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX25leGlvKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVhJTykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX25leGlvKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQklUQk9YCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9CSVRCT1gKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYml0Ym94KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9CSVRCT1gpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19iaXRib3goKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9HMjAwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9HMjAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2cyMDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0cyMDApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19nMjAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfR0lMTAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfR0lMTAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19naWxsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9HSUxMKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZ2lsbCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9QWEFfTUVSQ1VSWQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUFhBX01FUkNVUlkKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhX21lcmN1cnkoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BYQV9NRVJDVVJZKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhX21lcmN1cnkoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0VJVkEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NFSVZBCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NlaXZhKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DRUlWQSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NlaXZhKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRlJFVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRlJFVAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19mcmV0KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9GUkVUKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZnJldCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0VNQUlMUEhPTkUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VNQUlMUEhPTkUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZW1haWxwaG9uZSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRU1BSUxQSE9ORSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VtYWlscGhvbmUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSDM5MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0gzOTAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzOTAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9IMzkwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2gzOTAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BYQTEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BYQTEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUFhBMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YTEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9LT0FOMzY5CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9LT0FOMzY5CisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2tvYW4zNjkoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0tPQU4zNjkpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19rb2FuMzY5KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NPR0VOVAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ09HRU5UCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NvZ2VudCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ09HRU5UKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY29nZW50KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VTTF9TSU1QVVRFUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfRVNMX1NJTVBVVEVSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2VzbF9zaW1wdXRlcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRVNMX1NJTVBVVEVSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXNsX3NpbXB1dGVyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VTTF9TSU1QVVRFUl9DTFIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VTTF9TSU1QVVRFUl9DTFIKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXNsX3NpbXB1dGVyX2NscigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRVNMX1NJTVBVVEVSX0NMUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2VzbF9zaW1wdXRlcl9jbHIoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfRVNMX1NJTVBVVEVSX0JXCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9FU0xfU0lNUFVURVJfQlcKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXNsX3NpbXB1dGVyX2J3KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FU0xfU0lNUFVURVJfQlcpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19lc2xfc2ltcHV0ZXJfYncoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSEhQX0NSQURMRQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSEhQX0NSQURMRQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19oaHBfY3JhZGxlKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ISFBfQ1JBRExFKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaGhwX2NyYWRsZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9IRTUwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSEU1MDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaGU1MDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0hFNTAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaGU1MDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9JTkhBTkRFTEYyCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9JTkhBTkRFTEYyCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2luaGFuZGVsZjIoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lOSEFOREVMRjIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19pbmhhbmRlbGYyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfSU5IQU5ERlRJUAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSU5IQU5ERlRJUAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19pbmhhbmRmdGlwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JTkhBTkRGVElQKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaW5oYW5kZnRpcCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0ROUDExMTAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0ROUDExMTAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZG5wMTExMCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRE5QMTExMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2RucDExMTAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9QTlAxMTEwCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9QTlAxMTEwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3BucDExMTAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BOUDExMTApCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19wbnAxMTEwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NTQjIyNgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQ1NCMjI2CisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NzYjIyNigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQ1NCMjI2KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfY3NiMjI2KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQVJOT0xECisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9BUk5PTEQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYXJub2xkKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BUk5PTEQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19hcm5vbGQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9QU0lCT0FSRAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUFNJQk9BUkQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHNpYm9hcmQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1BTSUJPQVJEKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHNpYm9hcmQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSlo4MDI4CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9KWjgwMjgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfano4MDI4KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9KWjgwMjgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19qejgwMjgoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSVBBUTMKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lQQVEzCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2lwYXEzKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JUEFRMykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2lwYXEzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRk9SVEUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0ZPUlRFCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2ZvcnRlKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9GT1JURSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2ZvcnRlKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQUNBTQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQUNBTQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hY2FtKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BQ0FNKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWNhbSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0FCT1gKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FCT1gKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYWJveCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQUJPWCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2Fib3goKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQVRNRUwKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0FUTUVMCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2F0bWVsKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BVE1FTCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2F0bWVsKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1NJVFNBTkcKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NJVFNBTkcKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc2l0c2FuZygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU0lUU0FORykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3NpdHNhbmcoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9DUFUxMTEwTENETkVUCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9DUFUxMTEwTENETkVUCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NwdTExMTBsY2RuZXQoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0NQVTExMTBMQ0RORVQpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19jcHUxMTEwbGNkbmV0KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX01QTF9WQ01BOQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTVBMX1ZDTUE5CisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX21wbF92Y21hOSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTVBMX1ZDTUE5KQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXBsX3ZjbWE5KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX09QVVNfQTEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX09QVVNfQTEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfb3B1c19hMSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfT1BVU19BMSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX29wdXNfYTEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfREFZVE9OQQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfREFZVE9OQQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19kYXl0b25hKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9EQVlUT05BKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZGF5dG9uYSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0tJTExCRUFSCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9LSUxMQkVBUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19raWxsYmVhcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfS0lMTEJFQVIpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19raWxsYmVhcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9ZT0hPCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9ZT0hPCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3lvaG8oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1lPSE8pCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc195b2hvKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0pBU1BFUgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSkFTUEVSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2phc3BlcigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSkFTUEVSKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfamFzcGVyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0RTQzI1CisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9EU0MyNQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19kc2MyNSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfRFNDMjUpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19kc2MyNSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JTk5PVkFUT1IKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lOTk9WQVRPUgorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19pbm5vdmF0b3IoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lOTk9WQVRPUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2lubm92YXRvcigpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9SQU1TRVMKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1JBTVNFUworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19yYW1zZXMoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1JBTVNFUykKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3JhbXNlcygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9TMjhYCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TMjhYCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3MyOHgoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1MyOFgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zMjh4KCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX01QT1JUMworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTVBPUlQzCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX21wb3J0MygpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTVBPUlQzKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbXBvcnQzKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BYQV9FQUdMRTI1MAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUFhBX0VBR0xFMjUwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV9lYWdsZTI1MCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUFhBX0VBR0xFMjUwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhX2VhZ2xlMjUwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1BEQgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUERCCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3BkYigpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfUERCKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcGRiKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfQkxVRV8yRworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQkxVRV8yRworIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19ibHVlXzJnKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9CTFVFXzJHKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYmx1ZV8yZygpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0JMVUVBUkNICisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9CTFVFQVJDSAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19ibHVlYXJjaCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfQkxVRUFSQ0gpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19ibHVlYXJjaCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JWE1CMjQwMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfSVhNQjI0MDAKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXhkcDI0MDAoKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX0lYTUIyNDAwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXhkcDI0MDAoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSVhNQjI4MDAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lYTUIyODAwCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2l4ZHAyODAwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9JWE1CMjgwMCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2l4ZHAyODAwKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TQTExMDBfRVhQTE9SRVIKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0VYUExPUkVSCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2V4cGxvcmVyKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FWFBMT1JFUikKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2V4cGxvcmVyKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lYRFA0MjUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lYRFA0MjUKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaXhkcDQyNSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSVhEUDQyNSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2l4ZHA0MjUoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0hJTVAKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0NISU1QCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX2NoaW1wKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9DSElNUCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2NoaW1wKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX1NUT1JLX05FU1QKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1NUT1JLX05FU1QKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3RvcmtfbmVzdCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfU1RPUktfTkVTVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3N0b3JrX25lc3QoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfU1RPUktfRUdHCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9TVE9SS19FR0cKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfc3RvcmtfZWdnKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9TVE9SS19FR0cpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19zdG9ya19lZ2coKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NBMTEwMF9XSVNNTworIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfV0lTTU8KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfd2lzbW8oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX1dJU01PKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfd2lzbW8oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfRVpMSU5YCisjIGlmZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICB1bmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCV9fbWFjaGluZV9hcmNoX3R5cGUKKyMgZWxzZQorIyAgZGVmaW5lIG1hY2hpbmVfYXJjaF90eXBlCU1BQ0hfVFlQRV9FWkxJTlgKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfZXpsaW54KCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9FWkxJTlgpCisjZWxzZQorIyBkZWZpbmUgbWFjaGluZV9pc19lemxpbngoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfQVQ5MQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfQVQ5MQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19hdDkxKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9BVDkxKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfYXQ5MSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9PUklPTgorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfT1JJT04KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfb3Jpb24oKQkobWFjaGluZV9hcmNoX3R5cGUgPT0gTUFDSF9UWVBFX09SSU9OKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfb3Jpb24oKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfTkVQVFVORQorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfTkVQVFVORQorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19uZXB0dW5lKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9ORVBUVU5FKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbmVwdHVuZSgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0hBQ0tLSVQKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0hBQ0tLSVQKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaGFja2tpdCgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSEFDS0tJVCkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2hhY2traXQoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUFhBX1dJTlMzMAorIyBpZmRlZiBtYWNoaW5lX2FyY2hfdHlwZQorIyAgdW5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlfX21hY2hpbmVfYXJjaF90eXBlCisjIGVsc2UKKyMgIGRlZmluZSBtYWNoaW5lX2FyY2hfdHlwZQlNQUNIX1RZUEVfUFhBX1dJTlMzMAorIyBlbmRpZgorIyBkZWZpbmUgbWFjaGluZV9pc19weGFfd2luczMwKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QWEFfV0lOUzMwKQorI2Vsc2UKKyMgZGVmaW5lIG1hY2hpbmVfaXNfcHhhX3dpbnMzMCgpCSgwKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0xBVklOTkEKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0xBVklOTkEKKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfbGF2aW5uYSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfTEFWSU5OQSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2xhdmlubmEoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfUFhBX1VFTkdJTkUKKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX1BYQV9VRU5HSU5FCisjIGVuZGlmCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV91ZW5naW5lKCkJKG1hY2hpbmVfYXJjaF90eXBlID09IE1BQ0hfVFlQRV9QWEFfVUVOR0lORSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX3B4YV91ZW5naW5lKCkJKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lOTk9LT00KKyMgaWZkZWYgbWFjaGluZV9hcmNoX3R5cGUKKyMgIHVuZGVmIG1hY2hpbmVfYXJjaF90eXBlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorIyBlbHNlCisjICBkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJTUFDSF9UWVBFX0lOTk9LT00KKyMgZW5kaWYKKyMgZGVmaW5lIG1hY2hpbmVfaXNfaW5ub2tvbSgpCShtYWNoaW5lX2FyY2hfdHlwZSA9PSBNQUNIX1RZUEVfSU5OT0tPTSkKKyNlbHNlCisjIGRlZmluZSBtYWNoaW5lX2lzX2lubm9rb20oKQkoMCkKKyNlbmRpZgorCisvKgorICogVGhlc2UgaGF2ZSBub3QgeWV0IGJlZW4gcmVnaXN0ZXJlZAorICovCisKKyNpZm5kZWYgbWFjaGluZV9hcmNoX3R5cGUKKyNkZWZpbmUgbWFjaGluZV9hcmNoX3R5cGUJX19tYWNoaW5lX2FyY2hfdHlwZQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jbWRfYnNwLmggYi9pbmNsdWRlL2NtZF9ic3AuaAppbmRleCBlNGIxMDQxLi5hYWI5YzM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NtZF9ic3AuaAorKysgYi9pbmNsdWRlL2NtZF9ic3AuaApAQCAtMTEyLDcgKzExMiwxOSBAQAogaW50IGRvX21pcDQwNSAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pOwogCiAjZW5kaWYgLyogQ09ORklHX01JUDQwNSAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8KKy8qIC0tLS0tIFZDTUE5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19WQ01BOSkKKworI2RlZmluZQlDTURfVEJMX0JTUCBNS19DTURfVEJMX0VOVFJZKAkJCQlcCisJInZjbWE5IiwJNCwJNiwJMSwJZG9fdmNtYTksCVwKKwkidmNtYTkgICAtIFZDTUE5IHNwZWNpZmljIENtZHNcbiIsCQkJXAorCSJmbGFzaCBtZW0gW1NyY0FkZHJdIC0gdXBkYXRlcyBVLUJvb3Qgd2l0aCBpbWFnZSBpbiBtZW1vcnlcbiIJCQkJCVwKKyksCitpbnQgZG9fdmNtYTkgKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKTsKKworI2VuZGlmIC8qIENPTkZJR19WQ01BOSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIC8qIC0tLS0tIERBU0FfU0lNIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjaWYgZGVmaW5lZChDT05GSUdfREFTQV9TSU0pCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaCBiL2luY2x1ZGUvY29uZmlncy9WQ01BOS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MzI4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaApAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CisgKiBHYXJ5IEplbm5lam9obiA8Z2pAZGVueC5kZT4KKyAqIERhdmlkIE11ZWxsZXIgPGQubXVlbGxlckBlbHNvZnQuY2g+CisgKgorICogQ29uZmlndWF0aW9uIHNldHRpbmdzIGZvciB0aGUgTVBMIFZDTUE5IGJvYXJkLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19DT05GSUdfSAorI2RlZmluZSBfX0NPTkZJR19ICisKKy8qCisgKiBJZiB3ZSBhcmUgZGV2ZWxvcGluZywgd2UgbWlnaHQgd2FudCB0byBzdGFydCBhcm1ib290IGZyb20gcmFtCisgKiBzbyB3ZSBNVVNUIE5PVCBpbml0aWFsaXplIGNyaXRpY2FsIHJlZ3MgbGlrZSBtZW0tdGltaW5nIC4uLgorICovCisjZGVmaW5lIENPTkZJR19JTklUX0NSSVRJQ0FMCQkvKiB1bmRlZiBmb3IgZGV2ZWxvcGluZyAqLworCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqIChlYXN5IHRvIGNoYW5nZSkKKyAqLworI2RlZmluZSBDT05GSUdfQVJNOTIwVAkJMQkvKiBUaGlzIGlzIGFuIEFSTTkyMFQgQ29yZQkqLworI2RlZmluZQlDT05GSUdfUzNDMjQxMAkJMQkvKiBpbiBhIFNBTVNVTkcgUzNDMjQxMCBTb0MgICAgICovCisjZGVmaW5lIENPTkZJR19WQ01BOQkJMQkvKiBvbiBhIE1QTCBWQ01BOSBCb2FyZCAgKi8KKworLyogaW5wdXQgY2xvY2sgb2YgUExMICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJMTIwMDAwMDAvKiBWQ01BOSBoYXMgMTJNSHogaW5wdXQgY2xvY2sJKi8KKworI2RlZmluZSBVU0VfOTIwVF9NTVUJCTEKKyN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZgkqLworCisjZGVmaW5lIENPTkZJR19DTURMSU5FX1RBRwkgMQkvKiBlbmFibGUgcGFzc2luZyBvZiBBVEFHcyAgICAJKi8KKyNkZWZpbmUgQ09ORklHX1NFVFVQX01FTU9SWV9UQUdTIDEKKyNkZWZpbmUgQ09ORklHX0lOSVRSRF9UQUcJIDEKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb21tYW5kIGRlZmluaXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTIFwKKwkJCShDT05GSUdfQ01EX0RGTAkgfCBcCisJCQlDRkdfQ01EX0NBQ0hFCSB8IFwKKwkJCUNGR19DTURfRUVQUk9NCSB8IFwKKwkJCUNGR19DTURfSTJDCSB8IFwKKwkJCUNGR19DTURfUkVHSU5GTyAgfCBcCisJCQlDRkdfQ01EX0VMRgkgfCBcCisJCQlDRkdfQ01EX0JTUCkKKworLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHRoZSBkZWZpbml0b24gb2YgQ09ORklHX0NPTU1BTkRTICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKyNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIgIj4gIgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJMkMgc3R1ZmY6CisgKiB0aGUgTVBMIFZDTUE5IGlzIGVxdWlwcGVkIHdpdGggYW4gQVRNRUwgMjRDMjU2IEVFUFJPTSBhdAorICogYWRkcmVzcyAweDUwIHdpdGggMTZiaXQgYWRkcmVzc2luZworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBDT05GSUdfSEFSRF9JMkMJCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0ICovCisjZGVmaW5lIENGR19JMkNfU1BFRUQgCQkxMDAwMDAJLyogSTJDIHNwZWVkICovCisjZGVmaW5lIENGR19JMkNfU0xBVkUgCQkweDdGCS8qIEkyQyBzbGF2ZSBhZGRyICovCisKKyNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUgkweDUwCisjZGVmaW5lIENGR19JMkNfRUVQUk9NX0FERFJfTEVOCTIKKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9FRVBST00JMQkvKiB1c2UgRUVQUk9NIGZvciBlbnZpcm9ubWVudCB2YXJzICovCisjZGVmaW5lIENGR19FTlZfT0ZGU0VUCQkweDAwMAkvKiBlbnZpcm9ubWVudCBzdGFydHMgYXQgb2Zmc2V0IDAgKi8KKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDgwMAkvKiAyS0Igc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggKi8KKworI3VuZGVmIENGR19JMkNfRUVQUk9NX0FERFJfT1ZFUkZMT1cKKyNkZWZpbmUgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgNgkvKiA2NCBieXRlcyBwYWdlIHdyaXRlIG1vZGUgb24gMjRDMjU2ICovCisjZGVmaW5lIENGR19FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUyAxMAorCisvKgorICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCisgKi8KKyNkZWZpbmUgQ09ORklHX01BTExPQ19TSVpFCShDRkdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKKworI2RlZmluZSBDRkdfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KQorI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDEyOCAqIDEwMjQpCisKKy8qCisgKiBIYXJkd2FyZSBkcml2ZXJzCisgKi8KKyNkZWZpbmUgQ09ORklHX0RSSVZFUl9DUzg5MDAJMQkJLyogd2UgaGF2ZSBhIENTODkwMCBvbi1ib2FyZCAqLworI2RlZmluZSBDUzg5MDBfQkFTRQkJMHgyMDAwMDMwMAorI2RlZmluZSBDUzg5MDBfQlVTMTYJCTEgCQkvKiB0aGUgTGludXggZHJpdmVyIGRvZXMgYWNjZXNzZXMgYXMgc2hvcnRzICovCisKKyNkZWZpbmUgQ09ORklHX0RSSVZFUl9TM0MyNFgwX0kyQwkxCS8qIHdlIHVzZSB0aGUgYnVpbGRpbiBJMkMgY29udHJvbGxlciAqLworCisvKgorICogc2VsZWN0IHNlcmlhbCBjb25zb2xlIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfU0VSSUFMMSAgICAgICAgICAxCS8qIHdlIHVzZSBTRVJJQUwgMSBvbiBWQ01BOSAqLworCisvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQk5NjAwCisKKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzCisjZGVmaW5lIENPTkZJR19ORVRNQVNLICAgICAgICAgIDI1NS4yNTUuMjU1LjAKKyNkZWZpbmUgQ09ORklHX0lQQUREUgkJMTAuMC4wLjExMAorI2RlZmluZSBDT05GSUdfU0VSVkVSSVAJCTEwLjAuMC4xCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2RlZmluZSBDT05GSUdfS0dEQl9CQVVEUkFURQkxMTUyMDAJCS8qIHNwZWVkIHRvIHJ1biBrZ2RiIHNlcmlhbCBwb3J0ICovCisvKiB3aGF0J3MgdGhpcyA/IGl0J3Mgbm90IHVzZWQgYW55d2hlcmUgKi8KKyNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTEJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLworI2VuZGlmCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUJQ0ZHX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLworI2RlZmluZQlDRkdfUFJPTVBUCQkiVkNNQTkgIyAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KKyNkZWZpbmUJQ0ZHX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZQlDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUJQ0ZHX01BWEFSR1MJCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLworI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLworCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MzAwMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLworI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MzNGMDAwMDAJLyogNjMgTUIgaW4gRFJBTQkqLworI2RlZmluZSBDRkdfQUxUX01FTVRFU1QKKyNkZWZpbmUJQ0ZHX0xPQURfQUREUgkJMHgzMzAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLworCisKKyN1bmRlZiAgQ0ZHX0NMS1NfSU5fSFoJCS8qIGV2ZXJ5dGhpbmcsIGluY2wgYm9hcmQgaW5mbywgaW4gSHogKi8KKworLyogd2UgY29uZmlndXJlIFBXTSBUaW1lciA0IHRvIDF1cyB+IDFNSHogKi8KKy8qI2RlZmluZQlDRkdfSFoJCQkxMDAwMDAwICovCisjZGVmaW5lCUNGR19IWgkJCTE1NjI1MDAKKworLyogdmFsaWQgYmF1ZHJhdGVzICovCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFN0YWNrIHNpemVzCisgKgorICogVGhlIHN0YWNrIHNpemVzIGFyZSBzZXQgdXAgaW4gc3RhcnQuUyB1c2luZyB0aGUgc2V0dGluZ3MgYmVsb3cKKyAqLworI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgxMjgqMTAyNCkJLyogcmVndWxhciBzdGFjayAqLworI2lmZGVmIENPTkZJR19VU0VfSVJRCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfSVJRCSg0KjEwMjQpCS8qIElSUSBzdGFjayAqLworI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0ZJUQkoNCoxMDI0KQkvKiBGSVEgc3RhY2sgKi8KKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQaHlzaWNhbCBNZW1vcnkgTWFwCisgKi8KKyNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJMQkgICAvKiB3ZSBoYXZlIDEgYmFuayBvZiBEUkFNICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMQkJMHgzMDAwMDAwMCAvKiBTRFJBTSBCYW5rICMxICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCTB4MDQwMDAwMDAgLyogNjQgTUIgKi8KKworI2RlZmluZSBQSFlTX0ZMQVNIXzEJCTB4MDAwMDAwMDAgLyogRmxhc2ggQmFuayAjMSAqLworCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgorICovCisKKyNkZWZpbmUgQ09ORklHX0FNRF9MVjQwMAkxCS8qIHVuY29tbWVudCB0aGlzIGlmIHlvdSBoYXZlIGEgTFY0MDAgZmxhc2ggKi8KKyNpZiAwCisjZGVmaW5lIENPTkZJR19BTURfTFY4MDAJMQkvKiB1bmNvbW1lbnQgdGhpcyBpZiB5b3UgaGF2ZSBhIExWODAwIGZsYXNoICovCisjZW5kaWYKKworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEJLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MgKi8KKyNpZmRlZiBDT05GSUdfQU1EX0xWODAwCisjZGVmaW5lIFBIWVNfRkxBU0hfU0laRQkJMHgwMDEwMDAwMCAvKiAxTUIgKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCSgxOSkJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICovCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19GTEFTSF9CQVNFICsgMHgwRjAwMDApIC8qIGFkZHIgb2YgZW52aXJvbm1lbnQgKi8KKyNlbmRpZgorI2lmZGVmIENPTkZJR19BTURfTFY0MDAKKyNkZWZpbmUgUEhZU19GTEFTSF9TSVpFCQkweDAwMDgwMDAwIC8qIDUxMktCICovCisjZGVmaW5lIENGR19NQVhfRkxBU0hfU0VDVAkoMTEpCS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcCAqLworI2RlZmluZSBDRkdfRU5WX0FERFIJCShDRkdfRkxBU0hfQkFTRSArIDB4MDcwMDAwKSAvKiBhZGRyIG9mIGVudmlyb25tZW50ICovCisjZW5kaWYKKworLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCisjZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCSg1KkNGR19IWikgLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQJKDUqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAqLworCisjaWYgMAorI2RlZmluZQlDRkdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDEwMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisjZW5kaWYKKworI2RlZmluZSBNVUxUSV9QVVJQT1NFX1NPQ0tFVF9BRERSIDAKKworI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy90cmFiLmggYi9pbmNsdWRlL2NvbmZpZ3MvdHJhYi5oCmluZGV4IDYxYTY0M2EuLjRhYzljYzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy90cmFiLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3RyYWIuaApAQCAtMjc0LDQgKzI3NCw3IEBACiAjZGVmaW5lIENGR19FTlZfT0ZGU0VUX1JFRFVORAkoQ0ZHX0VOVl9BRERSK0NGR19FTlZfU0VDVF9TSVpFKQogI2RlZmluZSBDRkdfRU5WX1NJWkVfUkVEVU5ECShDRkdfRU5WX1NJWkUpCiAKKy8qIEluaXRpYWwgdmFsdWUgb2YgdGhlIG9uLWJvYXJkIHRvdWNoIHNjcmVlbiBicmlnaHRuZXNzICovCisjZGVmaW5lIENGR19CUklHSFRORVNTIDB4MjAKKwogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2xpYl9hcm0vYm9hcmQuYyBiL2xpYl9hcm0vYm9hcmQuYwppbmRleCA1YjdiYjZlLi4yNDRjMGI1IDEwMDY0NAotLS0gYS9saWJfYXJtL2JvYXJkLmMKKysrIGIvbGliX2FybS9ib2FyZC5jCkBAIC0xNzMsNyArMTczLDkgQEAKIAlkaXNwbGF5X2Jhbm5lciwJCS8qIHNheSB0aGF0IHdlIGFyZSBoZXJlICovCiAJZHJhbV9pbml0LAkJLyogY29uZmlndXJlIGF2YWlsYWJsZSBSQU0gYmFua3MgKi8KIAlkaXNwbGF5X2RyYW1fY29uZmlnLAotCisjaWYgZGVmaW5lZChDT05GSUdfVkNNQTkpCisJY2hlY2tib2FyZCwKKyNlbmRpZgogCU5VTEwsCiB9OwogCkBAIC0yNjksOCArMjcxLDYgQEAKIAlib2FyZF9wb3N0X2luaXQgKCk7CiAjZW5kaWYKIAotcHJpbnRmICgiIyMjIEZCIEAgJTA4bFggdmZkX3R5cGU9MHglMDJYIHZmZF9kYXRhX2xpbmVzX2ludj0lZFxuIixnZC0+ZmJfYmFzZSxnZC0+dmZkX3R5cGUsZ2QtPnZmZF9pbnZfZGF0YSk7Ci0KIAkvKiBtYWluX2xvb3AoKSBjYW4gcmV0dXJuIHRvIHJldHJ5IGF1dG9ib290LCBpZiBzbyBqdXN0IHJ1biBpdCBhZ2Fpbi4gKi8KIAlmb3IgKDs7KSB7CiAJCW1haW5fbG9vcCAoKTsKZGlmZiAtLWdpdCBhL3J0Yy9NYWtlZmlsZSBiL3J0Yy9NYWtlZmlsZQppbmRleCAwZTFmZDBmLi41ZDZjN2Y1IDEwMDY0NAotLS0gYS9ydGMvTWFrZWZpbGUKKysrIGIvcnRjL01ha2VmaWxlCkBAIC0yNyw3ICsyNyw4IEBACiAKIExJQgk9IGxpYnJ0Yy5hCiAKLU9CSlMJPSBkYXRlLm8gICBkczEzMDIubyBkczEzMDYubyBkczEzMzcubyBkczE1NTYubyBkczE3NHgubyBcCitPQkpTCT0gZGF0ZS5vICAgXAorCSAgZHMxMzAyLm8gZHMxMzA2Lm8gZHMxMzA3Lm8gZHMxMzM3Lm8gZHMxNTU2Lm8gZHMxNzR4Lm8gXAogCSAgbTQxdDExLm8gbTQ4dDM1YXgubyBtYzE0NjgxOC5vIG1rNDh0NTkubyBcCiAJICBtcGM4eHgubyBwY2Y4NTYzLm8KIApkaWZmIC0tZ2l0IGEvcnRjL2RzMTMwNy5jIGIvcnRjL2RzMTMwNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzQ5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9ydGMvZHMxMzA3LmMKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDEsIDIwMDIsIDIwMDMKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKiBLZWl0aCBPdXR3YXRlciwga2VpdGhfb3V0d2F0ZXJAbXZpcy5jb21gCisgKiBTdGV2ZW4gU2Nob2x6LCBzdGV2ZW4uc2Nob2x6QGltYy1iZXJsaW4uZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKgorICogRGF0ZSAmIFRpbWUgc3VwcG9ydCAobm8gYWxhcm1zKSBmb3IgRGFsbGFzIFNlbWljb25kdWN0b3IgKG5vdyBNYXhpbSkKKyAqIERTMTMwNyBSZWFsIFRpbWUgQ2xvY2sgKFJUQykuCisgKgorICogYmFzZWQgb24gZHMxMzM3LmMKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPHJ0Yy5oPgorI2luY2x1ZGUgPGkyYy5oPgorCisjaWYgZGVmaW5lZChDT05GSUdfUlRDX0RTMTMwNykgJiYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfREFURSkKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI3VuZGVmIERFQlVHX1JUQworCisjaWZkZWYgREVCVUdfUlRDCisjZGVmaW5lIERFQlVHUihmbXQsYXJncy4uLikgcHJpbnRmKGZtdCAsIyNhcmdzKQorI2Vsc2UKKyNkZWZpbmUgREVCVUdSKGZtdCxhcmdzLi4uKQorI2VuZGlmCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZm5kZWYgQ0ZHX0kyQ19SVENfQUREUgorIyBkZWZpbmUgQ0ZHX0kyQ19SVENfQUREUgkweDY4CisjZW5kaWYKKworI2lmIENGR19JMkNfU1BFRUQgPiAxMDAwMDAKKyMgZXJyb3IgVGhlIERTMTMwNyBpcyBzcGVjaWZpZWQgb25seSB1cCB0byAxMDBrSHohCisjZW5kaWYKKworLyoKKyAqIFJUQyByZWdpc3RlciBhZGRyZXNzZXMKKyAqLworI2RlZmluZSBSVENfU0VDX1JFR19BRERSCTB4MDAKKyNkZWZpbmUgUlRDX01JTl9SRUdfQUREUgkweDAxCisjZGVmaW5lIFJUQ19IUl9SRUdfQUREUgkJMHgwMgorI2RlZmluZSBSVENfREFZX1JFR19BRERSCTB4MDMKKyNkZWZpbmUgUlRDX0RBVEVfUkVHX0FERFIJMHgwNAorI2RlZmluZSBSVENfTU9OX1JFR19BRERSCTB4MDUKKyNkZWZpbmUgUlRDX1lSX1JFR19BRERSCQkweDA2CisjZGVmaW5lIFJUQ19DVExfUkVHX0FERFIJMHgwNworCisjZGVmaW5lIFJUQ19TRUNfQklUX0NICQkweDgwCS8qIENsb2NrIEhhbHQgKGluIFJlZ2lzdGVyIDApICAgKi8KKworI2RlZmluZSBSVENfQ1RMX0JJVF9SUzAJCTB4MDEJLyogUmF0ZSBzZWxlY3QgMCAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSVENfQ1RMX0JJVF9SUzEJCTB4MDIJLyogUmF0ZSBzZWxlY3QgMSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSVENfQ1RMX0JJVF9TUVdFCTB4MTAJLyogU3F1YXJlIFdhdmUgRW5hYmxlICAgICAgICAgICAqLworI2RlZmluZSBSVENfQ1RMX0JJVF9PVVQJCTB4ODAJLyogT3V0cHV0IENvbnRyb2wgICAgICAgICAgICAgICAqLworCitzdGF0aWMgdWNoYXIgcnRjX3JlYWQgKHVjaGFyIHJlZyk7CitzdGF0aWMgdm9pZCBydGNfd3JpdGUgKHVjaGFyIHJlZywgdWNoYXIgdmFsKTsKK3N0YXRpYyB1Y2hhciBiaW4yYmNkICh1bnNpZ25lZCBpbnQgbik7CitzdGF0aWMgdW5zaWduZWQgYmNkMmJpbiAodWNoYXIgYyk7CisKKy8qCisgKiBHZXQgdGhlIGN1cnJlbnQgdGltZSBmcm9tIHRoZSBSVEMKKyAqLwordm9pZCBydGNfZ2V0IChzdHJ1Y3QgcnRjX3RpbWUgKnRtcCkKK3sKKwl1Y2hhciBzZWMsIG1pbiwgaG91ciwgbWRheSwgd2RheSwgbW9uLCB5ZWFyOworCisJc2VjID0gcnRjX3JlYWQgKFJUQ19TRUNfUkVHX0FERFIpOworCW1pbiA9IHJ0Y19yZWFkIChSVENfTUlOX1JFR19BRERSKTsKKwlob3VyID0gcnRjX3JlYWQgKFJUQ19IUl9SRUdfQUREUik7CisJd2RheSA9IHJ0Y19yZWFkIChSVENfREFZX1JFR19BRERSKTsKKwltZGF5ID0gcnRjX3JlYWQgKFJUQ19EQVRFX1JFR19BRERSKTsKKwltb24gPSBydGNfcmVhZCAoUlRDX01PTl9SRUdfQUREUik7CisJeWVhciA9IHJ0Y19yZWFkIChSVENfWVJfUkVHX0FERFIpOworCisJREVCVUdSICgiR2V0IFJUQyB5ZWFyOiAlMDJ4IG1vbjogJTAyeCBtZGF5OiAlMDJ4IHdkYXk6ICUwMnggIgorCQkiaHI6ICUwMnggbWluOiAlMDJ4IHNlYzogJTAyeFxuIiwKKwkJeWVhciwgbW9uLCBtZGF5LCB3ZGF5LCBob3VyLCBtaW4sIHNlYyk7CisKKwlpZiAoc2VjICYgUlRDX1NFQ19CSVRfQ0gpIHsKKwkJcHJpbnRmICgiIyMjIFdhcm5pbmc6IFJUQyBvc2NpbGxhdG9yIGhhcyBzdG9wcGVkXG4iKTsKKwkJLyogY2xlYXIgdGhlIENIIGZsYWcgKi8KKwkJcnRjX3dyaXRlIChSVENfU0VDX1JFR19BRERSLAorCQkJICAgcnRjX3JlYWQgKFJUQ19TRUNfUkVHX0FERFIpICYgflJUQ19TRUNfQklUX0NIKTsKKwl9CisJCisJdG1wLT50bV9zZWMgID0gYmNkMmJpbiAoc2VjICYgMHg3Rik7CisJdG1wLT50bV9taW4gID0gYmNkMmJpbiAobWluICYgMHg3Rik7CisJdG1wLT50bV9ob3VyID0gYmNkMmJpbiAoaG91ciAmIDB4M0YpOworCXRtcC0+dG1fbWRheSA9IGJjZDJiaW4gKG1kYXkgJiAweDNGKTsKKwl0bXAtPnRtX21vbiAgPSBiY2QyYmluIChtb24gJiAweDFGKTsKKwl0bXAtPnRtX3llYXIgPSBiY2QyYmluICh5ZWFyKSArICggYmNkMmJpbiAoeWVhcikgPj0gNzAgPyAxOTAwIDogMjAwMCk7CisJdG1wLT50bV93ZGF5ID0gYmNkMmJpbiAoKHdkYXkgLSAxKSAmIDB4MDcpOworCXRtcC0+dG1feWRheSA9IDA7CisJdG1wLT50bV9pc2RzdD0gMDsKKworCURFQlVHUiAoIkdldCBEQVRFOiAlNGQtJTAyZC0lMDJkICh3ZGF5PSVkKSAgVElNRTogJTJkOiUwMmQ6JTAyZFxuIiwKKwkJdG1wLT50bV95ZWFyLCB0bXAtPnRtX21vbiwgdG1wLT50bV9tZGF5LCB0bXAtPnRtX3dkYXksCisJCXRtcC0+dG1faG91ciwgdG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKK30KKworCisvKgorICogU2V0IHRoZSBSVEMKKyAqLwordm9pZCBydGNfc2V0IChzdHJ1Y3QgcnRjX3RpbWUgKnRtcCkKK3sKKwlERUJVR1IgKCJTZXQgREFURTogJTRkLSUwMmQtJTAyZCAod2RheT0lZCkgIFRJTUU6ICUyZDolMDJkOiUwMmRcbiIsCisJCXRtcC0+dG1feWVhciwgdG1wLT50bV9tb24sIHRtcC0+dG1fbWRheSwgdG1wLT50bV93ZGF5LAorCQl0bXAtPnRtX2hvdXIsIHRtcC0+dG1fbWluLCB0bXAtPnRtX3NlYyk7CisKKwlpZiAodG1wLT50bV95ZWFyIDwgMTk3MCB8fCB0bXAtPnRtX3llYXIgPiAyMDY5KQorCQlwcmludGYoIldBUk5JTkc6IHllYXIgc2hvdWxkIGJlIGJldHdlZW4gMTk3MCBhbmQgMjA2OSFcbiIpOworCQkKKwlydGNfd3JpdGUgKFJUQ19ZUl9SRUdfQUREUiwgYmluMmJjZCAodG1wLT50bV95ZWFyICUgMTAwKSk7CisJcnRjX3dyaXRlIChSVENfTU9OX1JFR19BRERSLCBiaW4yYmNkICh0bXAtPnRtX21vbikpOworCXJ0Y193cml0ZSAoUlRDX0RBWV9SRUdfQUREUiwgYmluMmJjZCAodG1wLT50bV93ZGF5ICsgMSkpOworCXJ0Y193cml0ZSAoUlRDX0RBVEVfUkVHX0FERFIsIGJpbjJiY2QgKHRtcC0+dG1fbWRheSkpOworCXJ0Y193cml0ZSAoUlRDX0hSX1JFR19BRERSLCBiaW4yYmNkICh0bXAtPnRtX2hvdXIpKTsKKwlydGNfd3JpdGUgKFJUQ19NSU5fUkVHX0FERFIsIGJpbjJiY2QgKHRtcC0+dG1fbWluKSk7CisJcnRjX3dyaXRlIChSVENfU0VDX1JFR19BRERSLCBiaW4yYmNkICh0bXAtPnRtX3NlYykpOworfQorCisKKy8qCisgKiBSZXNldCB0aGUgUlRDLiBXZSBzZXR0aW5nIHRoZSBkYXRlIGJhY2sgdG8gMTk3MC0wMS0wMS4gCisgKiBXZSBhbHNvIGVuYWJsZSB0aGUgb3NjaWxsYXRvciBvdXRwdXQgb24gdGhlIFNRVy9PVVQgcGluIGFuZCBwcm9ncmFtIAorICogaXQgZm9yIDMyLDc2OCBIeiBvdXRwdXQuIE5vdGUgdGhhdCBhY2NvcmRpbmcgdG8gdGhlIGRhdGFzaGVldCwgdHVybmluZworICogb24gdGhlIHNxdWFyZSB3YXZlIG91dHB1dCBpbmNyZWFzZXMgdGhlIGN1cnJlbnQgZHJhaW4gb24gdGhlIGJhY2t1cAorICogYmF0dGVyeSB0byBzb21ldGhpbmcgYmV0d2VlbiA0ODBuQSBhbmQgODAwbkEuCisgKi8KK3ZvaWQgcnRjX3Jlc2V0ICh2b2lkKQoreworCXN0cnVjdCBydGNfdGltZSB0bXA7CisKKwlydGNfd3JpdGUgKFJUQ19TRUNfUkVHX0FERFIsIDB4MDApOwkvKiBjbGVhcmluZyBDbG9jayBIYWx0CSovCisJcnRjX3dyaXRlIChSVENfQ1RMX1JFR19BRERSLCBSVENfQ1RMX0JJVF9TUVdFIHwgUlRDX0NUTF9CSVRfUlMxIHwgUlRDX0NUTF9CSVRfUlMwKTsKKworCXRtcC50bV95ZWFyID0gMTk3MDsKKwl0bXAudG1fbW9uID0gMTsKKwl0bXAudG1fbWRheT0gMTsKKwl0bXAudG1faG91ciA9IDA7CisJdG1wLnRtX21pbiA9IDA7CisJdG1wLnRtX3NlYyA9IDA7CisKKwlydGNfc2V0KCZ0bXApOworCisJcHJpbnRmICggIlJUQzogICAlNGQtJTAyZC0lMDJkICUyZDolMDJkOiUwMmQgVVRDXG4iLAorCQl0bXAudG1feWVhciwgdG1wLnRtX21vbiwgdG1wLnRtX21kYXksCisJCXRtcC50bV9ob3VyLCB0bXAudG1fbWluLCB0bXAudG1fc2VjKTsKKworCXJldHVybjsKK30KKworCisvKgorICogSGVscGVyIGZ1bmN0aW9ucworICovCisKK3N0YXRpYwordWNoYXIgcnRjX3JlYWQgKHVjaGFyIHJlZykKK3sKKwlyZXR1cm4gKGkyY19yZWdfcmVhZCAoQ0ZHX0kyQ19SVENfQUREUiwgcmVnKSk7Cit9CisKKworc3RhdGljIHZvaWQgcnRjX3dyaXRlICh1Y2hhciByZWcsIHVjaGFyIHZhbCkKK3sKKwlpMmNfcmVnX3dyaXRlIChDRkdfSTJDX1JUQ19BRERSLCByZWcsIHZhbCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBiY2QyYmluICh1Y2hhciBuKQoreworCXJldHVybiAoKCgobiA+PiA0KSAmIDB4MEYpICogMTApICsgKG4gJiAweDBGKSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGJpbjJiY2QgKHVuc2lnbmVkIGludCBuKQoreworCXJldHVybiAoKChuIC8gMTApIDw8IDQpIHwgKG4gJSAxMCkpOworfQorCisjZW5kaWYgLyogQ09ORklHX1JUQ19EUzEzMDcgJiYgKENGR19DT01NQU5EUyAmIENGR19DTURfREFURSkgKi8K