ZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hLm91dC5oIGIvaW5jbHVkZS9hc20tYXJtL2Eub3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U1ZmU2NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hLm91dC5oCkBAIC0wLDAgKzEsMzkgQEAKKyNpZm5kZWYgX19BUk1fQV9PVVRfSF9fCisjZGVmaW5lIF9fQVJNX0FfT1VUX0hfXworCisjaW5jbHVkZSA8bGludXgvcGVyc29uYWxpdHkuaD4KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworc3RydWN0IGV4ZWMKK3sKKyAgX191MzIgYV9pbmZvOwkJLyogVXNlIG1hY3JvcyBOX01BR0lDLCBldGMgZm9yIGFjY2VzcyAqLworICBfX3UzMiBhX3RleHQ7CQkvKiBsZW5ndGggb2YgdGV4dCwgaW4gYnl0ZXMgKi8KKyAgX191MzIgYV9kYXRhOwkJLyogbGVuZ3RoIG9mIGRhdGEsIGluIGJ5dGVzICovCisgIF9fdTMyIGFfYnNzOwkJLyogbGVuZ3RoIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSBhcmVhIGZvciBmaWxlLCBpbiBieXRlcyAqLworICBfX3UzMiBhX3N5bXM7CQkvKiBsZW5ndGggb2Ygc3ltYm9sIHRhYmxlIGRhdGEgaW4gZmlsZSwgaW4gYnl0ZXMgKi8KKyAgX191MzIgYV9lbnRyeTsJLyogc3RhcnQgYWRkcmVzcyAqLworICBfX3UzMiBhX3Ryc2l6ZTsJLyogbGVuZ3RoIG9mIHJlbG9jYXRpb24gaW5mbyBmb3IgdGV4dCwgaW4gYnl0ZXMgKi8KKyAgX191MzIgYV9kcnNpemU7CS8qIGxlbmd0aCBvZiByZWxvY2F0aW9uIGluZm8gZm9yIGRhdGEsIGluIGJ5dGVzICovCit9OworCisvKgorICogVGhpcyBpcyBhbHdheXMgdGhlIHNhbWUKKyAqLworI2RlZmluZSBOX1RYVEFERFIoYSkJKDB4MDAwMDgwMDApCisKKyNkZWZpbmUgTl9UUlNJWkUoYSkJKChhKS5hX3Ryc2l6ZSkKKyNkZWZpbmUgTl9EUlNJWkUoYSkJKChhKS5hX2Ryc2l6ZSkKKyNkZWZpbmUgTl9TWU1TSVpFKGEpCSgoYSkuYV9zeW1zKQorCisjZGVmaW5lIE1fQVJNIDEwMworCisjaWZkZWYgX19LRVJORUxfXworI2RlZmluZSBTVEFDS19UT1AJKChjdXJyZW50LT5wZXJzb25hbGl0eSA9PSBQRVJfTElOVVhfMzJCSVQpID8gXAorCQkJIFRBU0tfU0laRSA6IFRBU0tfU0laRV8yNikKKyNlbmRpZgorCisjaWZuZGVmIExJQlJBUllfU1RBUlRfVEVYVAorI2RlZmluZSBMSUJSQVJZX1NUQVJUX1RFWFQJKDB4MDBjMDAwMDApCisjZW5kaWYKKworI2VuZGlmIC8qIF9fQV9PVVRfR05VX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FwbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FwbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNTBlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXBtLmgKQEAgLTAsMCArMSw2NSBAQAorLyogLSotIGxpbnV4LWMgLSotCisgKgorICogKEMpIDIwMDMgemVja2VAaGFuZGhlbGRzLm9yZworICoKKyAqIEdQTCB2ZXJzaW9uIDIKKyAqCisgKiBiYXNlZCBvbiBhcmNoL2FybS9rZXJuZWwvYXBtLmMKKyAqIGZhY3RvciBvdXQgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCBieSBhcmNoaXRlY3R1cmVzIHRvIHByb3ZpZGUKKyAqIGFwbSBzdGF0dXMKKyAqCisgKgorICovCisjaWZuZGVmIEFSTV9BU01fU0ExMTAwX0FQTV9ICisjZGVmaW5lIEFSTV9BU01fU0ExMTAwX0FQTV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9hcG1fYmlvcy5oPgorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgZ2V0cyBmaWxsZWQgaW4gYnkgdGhlIG1hY2hpbmUgc3BlY2lmaWMgJ2dldF9wb3dlcl9zdGF0dXMnCisgKiBpbXBsZW1lbnRhdGlvbi4gIEFueSBmaWVsZHMgd2hpY2ggYXJlIG5vdCBzZXQgZGVmYXVsdCB0byBhIHNhZmUgdmFsdWUuCisgKi8KK3N0cnVjdCBhcG1fcG93ZXJfaW5mbyB7CisJdW5zaWduZWQgY2hhcglhY19saW5lX3N0YXR1czsKKyNkZWZpbmUgQVBNX0FDX09GRkxJTkUJCQkwCisjZGVmaW5lIEFQTV9BQ19PTkxJTkUJCQkxCisjZGVmaW5lIEFQTV9BQ19CQUNLVVAJCQkyCisjZGVmaW5lIEFQTV9BQ19VTktOT1dOCQkJMHhmZgorCisJdW5zaWduZWQgY2hhcgliYXR0ZXJ5X3N0YXR1czsKKyNkZWZpbmUgQVBNX0JBVFRFUllfU1RBVFVTX0hJR0gJCTAKKyNkZWZpbmUgQVBNX0JBVFRFUllfU1RBVFVTX0xPVwkJMQorI2RlZmluZSBBUE1fQkFUVEVSWV9TVEFUVVNfQ1JJVElDQUwJMgorI2RlZmluZSBBUE1fQkFUVEVSWV9TVEFUVVNfQ0hBUkdJTkcJMworI2RlZmluZSBBUE1fQkFUVEVSWV9TVEFUVVNfTk9UX1BSRVNFTlQJNAorI2RlZmluZSBBUE1fQkFUVEVSWV9TVEFUVVNfVU5LTk9XTgkweGZmCisKKwl1bnNpZ25lZCBjaGFyCWJhdHRlcnlfZmxhZzsKKyNkZWZpbmUgQVBNX0JBVFRFUllfRkxBR19ISUdICQkoMSA8PCAwKQorI2RlZmluZSBBUE1fQkFUVEVSWV9GTEFHX0xPVwkJKDEgPDwgMSkKKyNkZWZpbmUgQVBNX0JBVFRFUllfRkxBR19DUklUSUNBTAkoMSA8PCAyKQorI2RlZmluZSBBUE1fQkFUVEVSWV9GTEFHX0NIQVJHSU5HCSgxIDw8IDMpCisjZGVmaW5lIEFQTV9CQVRURVJZX0ZMQUdfTk9UX1BSRVNFTlQJKDEgPDwgNykKKyNkZWZpbmUgQVBNX0JBVFRFUllfRkxBR19VTktOT1dOCTB4ZmYKKworCWludAkJYmF0dGVyeV9saWZlOworCWludAkJdGltZTsKKwlpbnQJCXVuaXRzOworI2RlZmluZSBBUE1fVU5JVFNfTUlOUwkJCTAKKyNkZWZpbmUgQVBNX1VOSVRTX1NFQ1MJCQkxCisjZGVmaW5lIEFQTV9VTklUU19VTktOT1dOCQktMQorCit9OworCisvKgorICogVGhpcyBhbGxvd3MgbWFjaGluZXMgdG8gcHJvdmlkZSB0aGVpciBvd24gImFwbSBnZXQgcG93ZXIgc3RhdHVzIiBmdW5jdGlvbi4KKyAqLworZXh0ZXJuIHZvaWQgKCphcG1fZ2V0X3Bvd2VyX3N0YXR1cykoc3RydWN0IGFwbV9wb3dlcl9pbmZvICopOworCisvKgorICogUXVldWUgYW4gZXZlbnQgKEFQTV9TWVNfU1VTUEVORCBvciBBUE1fQ1JJVElDQUxfU1VTUEVORCkKKyAqLwordm9pZCBhcG1fcXVldWVfZXZlbnQoYXBtX2V2ZW50X3QgZXZlbnQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9hY29ybmZiLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvYWNvcm5mYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NjcyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvYWNvcm5mYi5oCkBAIC0wLDAgKzEsMzQgQEAKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNkZWZpbmUgYWNvcm5mYl92YWxpZF9waXhyYXRlKHZhcikgKHZhci0+cGl4Y2xvY2sgPj0gMzkzMjUgJiYgdmFyLT5waXhjbG9jayA8PSA0MDExOSkKKworc3RhdGljIGlubGluZSB2b2lkCithY29ybmZiX3ZpZGMyMF9maW5kX3JhdGVzKHN0cnVjdCB2aWRjX3RpbWluZyAqdmlkYywKKwkJCSAgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCit7CisJdV9pbnQgYmFuZHdpZHRoOworICAKKwl2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX1BJWF9DSzsKKworCS8qIENhbGN1bGF0ZSBiYW5kd2lkdGggKi8KKwliYW5kd2lkdGggPSB2YXItPnBpeGNsb2NrICogOCAvIHZhci0+Yml0c19wZXJfcGl4ZWw7CisKKwkvKiBFbmNvZGUgYmFuZHdpZHRoIGFzIFZJREMyMCBzZXR0aW5nICovCisJaWYgKGJhbmR3aWR0aCA+IDE2NjY3KjIpCisJCXZpZGMtPmNvbnRyb2wgfD0gVklEQzIwX0NUUkxfRklGT18xNjsKKwllbHNlIGlmIChiYW5kd2lkdGggPiAxMzMzMyoyKQorCQl2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX0ZJRk9fMjA7CisJZWxzZSBpZiAoYmFuZHdpZHRoID4gMTExMTEqMikKKwkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzI0OworCWVsc2UKKwkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzI4OworCisJdmlkYy0+cGxsX2N0bCAgPSAweDIwMjA7Cit9CisKKyNpZmRlZiBDT05GSUdfQ0hST05URUxfNzAwMworI2RlZmluZSBhY29ybmZiX2RlZmF1bHRfY29udHJvbCgpCVZJREMyMF9DVFJMX1BJWF9IQ0xLCisjZWxzZQorI2RlZmluZSBhY29ybmZiX2RlZmF1bHRfY29udHJvbCgpCVZJREMyMF9DVFJMX1BJWF9WQ0xLCisjZW5kaWYKKworI2RlZmluZSBhY29ybmZiX2RlZmF1bHRfZWNvbnRyb2woKQlWSURDMjBfRUNUTF9EQUMgfCBWSURDMjBfRUNUTF9SRUcoMykgfCBWSURDMjBfRUNUTF9FQ0sKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVkNDg5ZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsMzEgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltb3YJXHJ4LCAjMHhlMDAwMDAwMAorCQlvcnIJXHJ4LCBccngsICMweDAwMDEwMDAwCisJCW9ycglccngsIFxyeCwgIzB4MDAwMDBiZTAKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyYglccmQsIFtccnhdCisJCS5lbmRtCisKKwkJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyYglccmQsIFtccngsICMweDE0XQorCQl0c3QJXHJkLCAjMHgyMAorCQliZXEJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDZhODgyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2RtYS5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvZG1hLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTmV4dXMgRWxlY3Ryb25pY3MgTHRkLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKy8qIERNQSBpcyBub3QgeWV0IGltcGxlbWVudGVkISBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgYWNvcm4sIGNvcHkgb3Zlci4uICovCisKKy8qCisgKiBUaGlzIGlzIHRoZSBtYXhpbXVtIERNQSBhZGRyZXNzIHRoYXQgY2FuIGJlIERNQWQgdG8uCisgKiBUaGVyZSBzaG91bGQgbm90IGJlIG1vcmUgdGhhbiAoMHhkMDAwMDAwMCAtIDB4YzAwMDAwMDApCisgKiBieXRlcyBvZiBSQU0uCisgKi8KKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGQwMDAwMDAwCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMAorCisjZGVmaW5lIERNQV9TMAkJCTAKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODZmNDEzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwzIEBACisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvZW50cnktbWFjcm8taW9tZC5TPgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzliNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2hhcmR3YXJlLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSBSdXNzZWxsIEtpbmcuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTmV4dXMgRWxlY3Ryb25pY3MgTHRkLgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGFyZHdhcmUgZGVmaW5pdGlvbnMgb2YgdGhlIAorICogQ0w3NTAwIGV2YWx1YXRpb24gYm9hcmQuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvbWVtb3J5Lmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2lvbWQuaD4KKworI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBJT01FTSh4KSB4CisjZWxzZQorI2RlZmluZSBJT01FTSh4KSAoKHZvaWQgX19pb21lbSAqKSh4KSkKKyNlbmRpZgorCisvKgorICogV2hhdCBoYXJkd2FyZSBtdXN0IGJlIHByZXNlbnQKKyAqLworI2RlZmluZSBIQVNfSU9NRAorI2RlZmluZSBIQVNfVklEQzIwCisKKy8qIEhhcmR3YXJlIGFkZHJlc3NlcyBvZiBtYWpvciBhcmVhcy4KKyAqICAqX1NUQVJUIGlzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisgKiAgKl9TSVpFICBpcyB0aGUgc2l6ZSBvZiB0aGUgcmVnaW9uCisgKiAgKl9CQVNFICBpcyB0aGUgdmlydHVhbCBhZGRyZXNzCisgKi8KKworI2RlZmluZSBJT19TVEFSVAkJMHgwMzAwMDAwMAkvKiBJL08gKi8KKyNkZWZpbmUgSU9fU0laRQkJCTB4MDEwMDAwMDAKKyNkZWZpbmUgSU9fQkFTRQkJCUlPTUVNKDB4ZTAwMDAwMDApCisKKyNkZWZpbmUgSVNBX1NUQVJUCQkweDBjMDAwMDAwCS8qIElTQSAqLworI2RlZmluZSBJU0FfU0laRQkJMHgwMDAxMDAwMAorI2RlZmluZSBJU0FfQkFTRQkJMHhlMTAwMDAwMAorCisjZGVmaW5lIEZMQVNIX1NUQVJUCQkweDAxMDAwMDAwCS8qIFhYWCAqLworI2RlZmluZSBGTEFTSF9TSVpFCQkweDAxMDAwMDAwCisjZGVmaW5lIEZMQVNIX0JBU0UJCTB4ZTIwMDAwMDAKKworI2RlZmluZSBMRURfU1RBUlQJCTB4MDMwMkIwMDAKKyNkZWZpbmUgTEVEX1NJWkUJCTB4MDAwMDEwMDAKKyNkZWZpbmUgTEVEX0JBU0UJCTB4ZTMwMDAwMDAKKyNkZWZpbmUgTEVEX0FERFJFU1MJCShMRURfQkFTRSArIDB4YTAwKQorCisvKiBMZXQncyBkZWZpbmUgU0NSRUVOX1NUQVJUIGZvciBDTDc1MDAsIGV2ZW4gdGhvdWdoIGl0J3MgYSBsaWUuICovCisjZGVmaW5lIFNDUkVFTl9TVEFSVAkJMHgwMjAwMDAwMAkvKiBWUkFNICovCisjZGVmaW5lIFNDUkVFTl9FTkQJCTB4ZGZjMDAwMDAKKyNkZWZpbmUgU0NSRUVOX0JBU0UJCTB4ZGY4MDAwMDAKKworI2RlZmluZSBGTFVTSF9CQVNFCQkweGRmMDAwMDAwCisKKyNkZWZpbmUgVklEQ19CQVNFCQkodm9pZCBfX2lvbWVtICopMHhlMDQwMDAwMAorI2RlZmluZSBJT01EX0JBU0UJCUlPTUVNKDB4ZTAyMDAwMDApCisjZGVmaW5lIElPQ19CQVNFCQlJT01FTSgweGUwMjAwMDAwKQorI2RlZmluZSBGTE9QUFlETUFfQkFTRQkJSU9NRU0oMHhlMDAyYTAwMCkKKyNkZWZpbmUgUENJT19CQVNFCQlJT01FTSgweGUwMDEwMDAwKQorCisjZGVmaW5lIEZMVVNIX0JBU0VfUEhZUwkJMHgwMDAwMDAwMAkvKiBST00gKi8KKworI2RlZmluZSB2aWRjX3dyaXRlbCh2YWwpCV9fcmF3X3dyaXRlbCh2YWwsIFZJRENfQkFTRSkKKworLyogaW4vb3V0IGJpYXMgZm9yIHRoZSBJU0Egc2xvdCByZWdpb24gKi8KKyNkZWZpbmUgSVNBU0xPVF9JTwkJMHg4MDQwMDAwMAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxMTNiYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9pby5oCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lvLmgKKyAqICBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9pby5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3IFJ1c3NlbGwgS2luZworICoKKyAqIE1vZGlmaWNhdGlvbnM6CisgKiAgMDYtRGVjLTE5OTcJUk1LCUNyZWF0ZWQuCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisvKgorICogR0NDIGlzIHRvdGFsbHkgY3JhcCBhdCBsb2FkaW5nL3N0b3JpbmcgZGF0YS4gIFdlIHRyeSB0byBwZXJzdWFkZSBpdAorICogdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGJ5IHVzaW5nIHRoZXNlIHdoZXJlZXZlciBwb3NzaWJsZSBpbnN0ZWFkIG9mCisgKiB0aGUgYWJvdmUuCisgKi8KKyNkZWZpbmUgX19hcmNoX2Jhc2VfZ2V0YihiLG8pCQkJXAorICh7CQkJCQkJXAorCXVuc2lnbmVkIGludCB2LCByID0gKGIpOwkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkJImxkcmIJJTAsIFslMSwgJTJdIgkJXAorCQk6ICI9ciIgKHYpCQkJXAorCQk6ICJyIiAociksICJJciIgKG8pKTsJCVwKKwl2OwkJCQkJXAorIH0pCisKKyNkZWZpbmUgX19hcmNoX2Jhc2VfZ2V0bChiLG8pCQkJXAorICh7CQkJCQkJXAorCXVuc2lnbmVkIGludCB2LCByID0gKGIpOwkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0iCQlcCisJCTogIj1yIiAodikJCQlcCisJCTogInIiIChyKSwgIklyIiAobykpOwkJXAorCXY7CQkJCQlcCisgfSkKKworI2RlZmluZSBfX2FyY2hfYmFzZV9wdXRiKHYsYixvKQkJCVwKKyAoewkJCQkJCVwKKwl1bnNpZ25lZCBpbnQgciA9IChiKTsJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCQkic3RyYgklMCwgWyUxLCAlMl0iCQlcCisJCToJCQkJXAorCQk6ICJyIiAodiksICJyIiAociksICJJciIgKG8pKTsJXAorIH0pCisKKyNkZWZpbmUgX19hcmNoX2Jhc2VfcHV0bCh2LGIsbykJCQlcCisgKHsJCQkJCQlcCisJdW5zaWduZWQgaW50IHIgPSAoYik7CQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkJInN0cgklMCwgWyUxLCAlMl0iCQlcCisJCToJCQkJXAorCQk6ICJyIiAodiksICJyIiAociksICJJciIgKG8pKTsJXAorIH0pCisKKy8qCisgKiBXZSB1c2UgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBhZGRyZXNzaW5nIC0gUEMgc3R5bGUgYWRkcmVzc2VzLCBhbmQgQVJNCisgKiBhZGRyZXNzZXMuICBQQyBzdHlsZSBhY2Nlc3NlcyB0aGUgUEMgaGFyZHdhcmUgd2l0aCB0aGUgbm9ybWFsIFBDIElPCisgKiBhZGRyZXNzZXMsIGVnIDB4M2Y4IGZvciBzZXJpYWwjMS4gIEFSTSBhZGRyZXNzZXMgYXJlIDB4ODAwMDAwMDArCisgKiBhbmQgYXJlIHRyYW5zbGF0ZWQgdG8gdGhlIHN0YXJ0IG9mIElPLiAgTm90ZSB0aGF0IGFsbCBhZGRyZXNzZXMgYXJlCisgKiBzaGlmdGVkIGxlZnQhCisgKi8KKyNkZWZpbmUgX19QT1JUX1BDSU8oeCkJKCEoKHgpICYgMHg4MDAwMDAwMCkpCisKKy8qCisgKiBEeW5hbWljIElPIGZ1bmN0aW9ucyAtIGxldCB0aGUgY29tcGlsZXIKKyAqIG9wdGltaXplIHRoZSBleHByZXNzaW9ucworICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19vdXRiICh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIGludCBwb3J0KQoreworCXVuc2lnbmVkIGxvbmcgdGVtcDsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkidHN0CSUyLCAjMHg4MDAwMDAwMFxuXHQiCisJIm1vdgklMCwgJTRcblx0IgorCSJhZGRlcQklMCwgJTAsICUzXG5cdCIKKwkic3RyYgklMSwgWyUwLCAlMiwgbHNsICMyXQlAIG91dGIiCisJOiAiPSZyIiAodGVtcCkKKwk6ICJyIiAodmFsdWUpLCAiciIgKHBvcnQpLCAiSXIiIChQQ0lPX0JBU0UgLSBJT19CQVNFKSwgIklyIiAoSU9fQkFTRSkKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19vdXR3ICh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIGludCBwb3J0KQoreworCXVuc2lnbmVkIGxvbmcgdGVtcDsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkidHN0CSUyLCAjMHg4MDAwMDAwMFxuXHQiCisJIm1vdgklMCwgJTRcblx0IgorCSJhZGRlcQklMCwgJTAsICUzXG5cdCIKKwkic3RyCSUxLCBbJTAsICUyLCBsc2wgIzJdCUAgb3V0dyIKKwk6ICI9JnIiICh0ZW1wKQorCTogInIiICh2YWx1ZXx2YWx1ZTw8MTYpLCAiciIgKHBvcnQpLCAiSXIiIChQQ0lPX0JBU0UgLSBJT19CQVNFKSwgIklyIiAoSU9fQkFTRSkKKwk6ICJjYyIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19vdXRsICh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIGludCBwb3J0KQoreworCXVuc2lnbmVkIGxvbmcgdGVtcDsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkidHN0CSUyLCAjMHg4MDAwMDAwMFxuXHQiCisJIm1vdgklMCwgJTRcblx0IgorCSJhZGRlcQklMCwgJTAsICUzXG5cdCIKKwkic3RyCSUxLCBbJTAsICUyLCBsc2wgIzJdCUAgb3V0bCIKKwk6ICI9JnIiICh0ZW1wKQorCTogInIiICh2YWx1ZSksICJyIiAocG9ydCksICJJciIgKFBDSU9fQkFTRSAtIElPX0JBU0UpLCAiSXIiIChJT19CQVNFKQorCTogImNjIik7Cit9CisKKyNkZWZpbmUgREVDTEFSRV9EWU5fSU4oc3osZm5zdWZmaXgsaW5zdHIpCQkJCQlcCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHN6IF9faW4jI2Zuc3VmZml4ICh1bnNpZ25lZCBpbnQgcG9ydCkJCVwKK3sJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgdGVtcCwgdmFsdWU7CQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCQlcCisJInRzdAklMiwgIzB4ODAwMDAwMDBcblx0IgkJCQkJCVwKKwkibW92CSUwLCAlNFxuXHQiCQkJCQkJCVwKKwkiYWRkZXEJJTAsICUwLCAlM1xuXHQiCQkJCQkJCVwKKwkibGRyIiBpbnN0ciAiCSUxLCBbJTAsICUyLCBsc2wgIzJdCUAgaW4iICNmbnN1ZmZpeAkJCVwKKwk6ICI9JnIiICh0ZW1wKSwgIj1yIiAodmFsdWUpCQkJCQkJXAorCTogInIiIChwb3J0KSwgIklyIiAoUENJT19CQVNFIC0gSU9fQkFTRSksICJJciIgKElPX0JBU0UpCQlcCisJOiAiY2MiKTsJCQkJCQkJCVwKKwlyZXR1cm4gKHVuc2lnbmVkIHN6KXZhbHVlOwkJCQkJCVwKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgX19pb2FkZHIgKHVuc2lnbmVkIGludCBwb3J0KQkJCVwKK3sJCQkJCQkJCQkJXAorCWlmIChfX1BPUlRfUENJTyhwb3J0KSkJCQkJCQkJXAorCQlyZXR1cm4gKHVuc2lnbmVkIGludCkoUENJT19CQVNFICsgKHBvcnQgPDwgMikpOwkJCVwKKwllbHNlCQkJCQkJCQkJXAorCQlyZXR1cm4gKHVuc2lnbmVkIGludCkoSU9fQkFTRSArIChwb3J0IDw8IDIpKTsJCQlcCit9CisKKyNkZWZpbmUgREVDTEFSRV9JTyhzeixmbnN1ZmZpeCxpbnN0cikJXAorCURFQ0xBUkVfRFlOX0lOKHN6LGZuc3VmZml4LGluc3RyKQorCitERUNMQVJFX0lPKGNoYXIsYiwiYiIpCitERUNMQVJFX0lPKHNob3J0LHcsIiIpCitERUNMQVJFX0lPKGludCxsLCIiKQorCisjdW5kZWYgREVDTEFSRV9JTworI3VuZGVmIERFQ0xBUkVfRFlOX0lOCisKKy8qCisgKiBDb25zdGFudCBhZGRyZXNzIElPIGZ1bmN0aW9ucworICoKKyAqIFRoZXNlIGhhdmUgdG8gYmUgbWFjcm9zIGZvciB0aGUgJ0onIGNvbnN0cmFpbnQgdG8gd29yayAtCisgKiArLy00MDk2IGltbWVkaWF0ZSBvcGVyYW5kLgorICovCisjZGVmaW5lIF9fb3V0YmModmFsdWUscG9ydCkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyYgklMCwgWyUxLCAlMl0JQCBvdXRiYyIJCQkJXAorCQk6IDogInIiICh2YWx1ZSksICJyIiAoUENJT19CQVNFKSwgIkpyIiAoKHBvcnQpIDw8IDIpKTsJCVwKKwllbHNlCQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJzdHJiCSUwLCBbJTEsICUyXQlAIG91dGJjIgkJCQlcCisJCTogOiAiciIgKHZhbHVlKSwgInIiIChJT19CQVNFKSwgInIiICgocG9ydCkgPDwgMikpOwkJXAorfSkKKworI2RlZmluZSBfX2luYmMocG9ydCkJCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBjaGFyIHJlc3VsdDsJCQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyYgklMCwgWyUxLCAlMl0JQCBpbmJjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSA8PCAyKSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyYgklMCwgWyUxLCAlMl0JQCBpbmJjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKElPX0JBU0UpLCAiciIgKChwb3J0KSA8PCAyKSk7CQlcCisJcmVzdWx0OwkJCQkJCQkJCVwKK30pCisKKyNkZWZpbmUgX19vdXR3Yyh2YWx1ZSxwb3J0KQkJCQkJCQlcCisoewkJCQkJCQkJCQlcCisJdW5zaWduZWQgbG9uZyB2ID0gdmFsdWU7CQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyCSUwLCBbJTEsICUyXQlAIG91dHdjIgkJCQlcCisJCTogOiAiciIgKHZ8djw8MTYpLCAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSA8PCAyKSk7CVwKKwllbHNlCQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJzdHIJJTAsIFslMSwgJTJdCUAgb3V0d2MiCQkJCVwKKwkJOiA6ICJyIiAodnx2PDwxNiksICJyIiAoSU9fQkFTRSksICJyIiAoKHBvcnQpIDw8IDIpKTsJCVwKK30pCisKKyNkZWZpbmUgX19pbndjKHBvcnQpCQkJCQkJCQlcCisoewkJCQkJCQkJCQlcCisJdW5zaWduZWQgc2hvcnQgcmVzdWx0OwkJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJsZHIJJTAsIFslMSwgJTJdCUAgaW53YyIJCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwkJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0JQCBpbndjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKElPX0JBU0UpLCAiciIgKChwb3J0KSA8PCAyKSk7CQlcCisJcmVzdWx0ICYgMHhmZmZmOwkJCQkJCQlcCit9KQorCisjZGVmaW5lIF9fb3V0bGModmFsdWUscG9ydCkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgdiA9IHZhbHVlOwkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cgklMCwgWyUxLCAlMl0JQCBvdXRsYyIJCQkJXAorCQk6IDogInIiICh2KSwgInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwkJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cgklMCwgWyUxLCAlMl0JQCBvdXRsYyIJCQkJXAorCQk6IDogInIiICh2KSwgInIiIChJT19CQVNFKSwgInIiICgocG9ydCkgPDwgMikpOwkJCVwKK30pCisKKyNkZWZpbmUgX19pbmxjKHBvcnQpCQkJCQkJCQlcCisoewkJCQkJCQkJCQlcCisJdW5zaWduZWQgbG9uZyByZXN1bHQ7CQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0JQCBpbmxjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSA8PCAyKSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyCSUwLCBbJTEsICUyXQlAIGlubGMiCQkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoSU9fQkFTRSksICJyIiAoKHBvcnQpIDw8IDIpKTsJCVwKKwlyZXN1bHQ7CQkJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX2lvYWRkcmMocG9ydCkJCQkJCQkJCVwKKwkoX19QT1JUX1BDSU8oKHBvcnQpKSA/IFBDSU9fQkFTRSArICgocG9ydCkgPDwgMikgOiBJT19CQVNFICsgKChwb3J0KSA8PCAyKSkKKworI2RlZmluZSBpbmIocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW5iYyhwKSAgICA6IF9faW5iKHApKQorI2RlZmluZSBpbncocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW53YyhwKSAgICA6IF9faW53KHApKQorI2RlZmluZSBpbmwocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW5sYyhwKSAgICA6IF9faW5sKHApKQorI2RlZmluZSBvdXRiKHYscCkJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX291dGJjKHYscCkgOiBfX291dGIodixwKSkKKyNkZWZpbmUgb3V0dyh2LHApCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19vdXR3Yyh2LHApIDogX19vdXR3KHYscCkpCisjZGVmaW5lIG91dGwodixwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9fb3V0bGModixwKSA6IF9fb3V0bCh2LHApKQorI2RlZmluZSBfX2lvYWRkcihwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW9hZGRyKHApICA6IF9faW9hZGRyYyhwKSkKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm8gaXMgZGVwcmVjYXRlZCAqLworI2RlZmluZSBpb2FkZHIocG9ydCkJCQlfX2lvYWRkcigocG9ydCkpCisKKyNkZWZpbmUgaW5zYihwLGQsbCkJX19yYXdfcmVhZHNiKF9faW9hZGRyKHApLGQsbCkKKyNkZWZpbmUgaW5zdyhwLGQsbCkJX19yYXdfcmVhZHN3KF9faW9hZGRyKHApLGQsbCkKKworI2RlZmluZSBvdXRzYihwLGQsbCkJX19yYXdfd3JpdGVzYihfX2lvYWRkcihwKSxkLGwpCisjZGVmaW5lIG91dHN3KHAsZCxsKQlfX3Jhd193cml0ZXN3KF9faW9hZGRyKHApLGQsbCkKKworLyoKKyAqIDE6MSBtYXBwaW5nIGZvciBpb3JlbWFwcGVkIHJlZ2lvbnMuCisgKi8KKyNkZWZpbmUgX19tZW1fcGNpKHgpCSh4KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjI4NjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lycS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvaXJxLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYgUnVzc2VsbCBLaW5nCisgKiBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDEgTmV4dXMgRWxlY3Ryb25pY3MgTHRkLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAgMTAtMTAtMTk5NglSTUsJQnJvdWdodCB1cCB0byBkYXRlIHdpdGggYXJjaC1zYTExMGV2YWwKKyAqICAgMjItMDgtMTk5OAlSTUsJUmVzdHJ1Y3R1cmVkIElSUSByb3V0aW5lcworICogICAxMS0wOC0xOTk5CVBKQglDcmVhdGVkIEFSTTc1MDAgdmVyc2lvbiwgZGVyaXZlZCBmcm9tIFJpc2NQQyBjb2RlCisgKi8KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9pb21kLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK3N0YXRpYyBpbmxpbmUgaW50IGZpeHVwX2lycSh1bnNpZ25lZCBpbnQgaXJxKQoreworCWlmIChpcnEgPT0gSVJRX0lTQSkgeworCQlpbnQgaXNhYml0cyA9ICooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKTB4ZTAwMmI3MDApOworCQlpZiAoaXNhYml0cyA9PSAwKSB7CisJCQlwcmludGsoIlNwdXJpb3VzIElTQSBJUlEhXG4iKTsKKwkJCXJldHVybiBpcnE7CisJCX0KKwkJaXJxID0gSVJRX0lTQV9CQVNFOworCQl3aGlsZSAoIShpc2FiaXRzICYgMSkpIHsKKwkJCWlycSsrOworCQkJaXNhYml0cyA+Pj0gMTsKKwkJfQorCX0KKworCXJldHVybiBpcnE7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvaXJxcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjA5OTZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lycXMuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL2lycXMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBOZXh1cyBFbGVjdHJvbmljcyBMdGQKKyAqLworCisjZGVmaW5lIElSUV9JTlQyCQkwCisjZGVmaW5lIElSUV9JTlQxCQkyCisjZGVmaW5lIElSUV9WU1lOQ1BVTFNFCQkzCisjZGVmaW5lIElSUV9QT1dFUk9OCQk0CisjZGVmaW5lIElSUV9USU1FUjAJCTUKKyNkZWZpbmUgSVJRX1RJTUVSMQkJNgorI2RlZmluZSBJUlFfRk9SQ0UJCTcKKyNkZWZpbmUgSVJRX0lOVDgJCTgKKyNkZWZpbmUgSVJRX0lTQQkJCTkKKyNkZWZpbmUgSVJRX0lOVDYJCTEwCisjZGVmaW5lIElSUV9JTlQ1CQkxMQorI2RlZmluZSBJUlFfSU5UNAkJMTIKKyNkZWZpbmUgSVJRX0lOVDMJCTEzCisjZGVmaW5lIElSUV9LRVlCT0FSRFRYCQkxNAorI2RlZmluZSBJUlFfS0VZQk9BUkRSWAkJMTUKKworI2RlZmluZSBJUlFfRE1BMAkJMTYKKyNkZWZpbmUgSVJRX0RNQTEJCTE3CisjZGVmaW5lIElSUV9ETUEyCQkxOAorI2RlZmluZSBJUlFfRE1BMwkJMTkKKyNkZWZpbmUgSVJRX0RNQVMwCQkyMAorI2RlZmluZSBJUlFfRE1BUzEJCTIxCisKKyNkZWZpbmUgSVJRX0lPUDAJCTI0CisjZGVmaW5lIElSUV9JT1AxCQkyNQorI2RlZmluZSBJUlFfSU9QMgkJMjYKKyNkZWZpbmUgSVJRX0lPUDMJCTI3CisjZGVmaW5lIElSUV9JT1A0CQkyOAorI2RlZmluZSBJUlFfSU9QNQkJMjkKKyNkZWZpbmUgSVJRX0lPUDYJCTMwCisjZGVmaW5lIElSUV9JT1A3CQkzMQorCisjZGVmaW5lIElSUV9NT1VTRVJYCQk0MAorI2RlZmluZSBJUlFfTU9VU0VUWAkJNDEKKyNkZWZpbmUgSVJRX0FEQwkJCTQyCisjZGVmaW5lIElSUV9FVkVOVDEJCTQzCisjZGVmaW5lIElSUV9FVkVOVDIJCTQ0CisKKyNkZWZpbmUgSVJRX0lTQV9CQVNFCQk0OAorI2RlZmluZSBJUlFfSVNBXzMJCTQ4CisjZGVmaW5lIElSUV9JU0FfNAkJNDkKKyNkZWZpbmUgSVJRX0lTQV81CQk1MAorI2RlZmluZSBJUlFfSVNBXzcJCTUxCisjZGVmaW5lIElSUV9JU0FfOQkJNTIKKyNkZWZpbmUgSVJRX0lTQV8xMAkJNTMKKyNkZWZpbmUgSVJRX0lTQV8xMQkJNTQKKyNkZWZpbmUgSVJRX0lTQV8xNAkJNTUJCisKKyNkZWZpbmUgRklRX0lOVDkJCTAKKyNkZWZpbmUgRklRX0lOVDUJCTEKKyNkZWZpbmUgRklRX0lOVDYJCTQKKyNkZWZpbmUgRklRX0lOVDgJCTYKKyNkZWZpbmUgRklRX0ZPUkNFCQk3CisKKy8qCisgKiBUaGlzIGlzIHRoZSBvZmZzZXQgb2YgdGhlIEZJUSAiSVJRIiBudW1iZXJzCisgKi8KKyNkZWZpbmUgRklRX1NUQVJUCQk2NAorCisjZGVmaW5lIElSUV9USU1FUgkJSVJRX1RJTUVSMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzZiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvbWVtb3J5LmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9tZW1vcnkuaAorICoKKyAqIENvcHlyaWdodCAoYykgMTk5NiwxOTk3LDE5OTggUnVzc2VsbCBLaW5nLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAyMC1PY3QtMTk5NglSTUsJQ3JlYXRlZAorICogIDMxLURlYy0xOTk3CVJNSwlGaXhlZCBkZWZpbml0aW9ucyB0byByZWR1Y2Ugd2FybmluZ3MKKyAqICAxMS1KYW4tMTk5OAlSTUsJVW5pbmxpbmVkIHRvIHJlZHVjZSBoaXRzIG9uIGNhY2hlCisgKiAgMDgtRmViLTE5OTgJUk1LCUFkZGVkIF9fdmlydF90b19idXMgYW5kIF9fYnVzX3RvX3ZpcnQKKyAqICAyMS1NYXItMTk5OQlSTUsJUmVuYW1lZCB0byBtZW1vcnkuaAorICoJCVJNSwlBZGRlZCBUQVNLX1NJWkUgYW5kIFBBR0VfT0ZGU0VUCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkoMHgxMDAwMDAwMFVMKQorCisvKgorICogVGhlc2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUgb24gdGhlIFJpc2NQQyBhcyB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB2aWV3LgorICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkgX192aXJ0X3RvX3BoeXMoeCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KSBfX3BoeXNfdG9fdmlydCh4KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0YmY2OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9wYXJhbS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvcGFyYW0uaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBOZXh1cyBFbGVjdHJvbmljcyBMdGQKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3N5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTA1ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvc3lzdGVtLmgKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC9zeXN0ZW0uaAorICoKKyAqIENvcHlyaWdodCAoYykgMTk5OSBOZXh1cyBFbGVjdHJvbmljcyBMdGQuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvaW9tZC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJaW9tZF93cml0ZWIoMCwgSU9NRF9TVVNNT0RFKTsKK30KKworI2RlZmluZSBhcmNoX3Jlc2V0KG1vZGUpCQkJXAorCWRvIHsJCQkJCVwKKwkJaW9tZF93cml0ZWIoMCwgSU9NRF9ST01DUjApOwlcCisJCWNwdV9yZXNldCgwKTsJCQlcCisJfSB3aGlsZSAoMCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNDE3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdGltZXguaApAQCAtMCwwICsxLDEzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3RpbWV4LmgKKyAqCisgKiBDTDc1MDAgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5IE5leHVzIEVsZWN0cm9uaWNzIEx0ZAorICovCisKKy8qCisgKiBPbiB0aGUgQVJNNzUwMCwgdGhlIGNsb2NrIHRpY2tzIGF0IDJNSHouCisgKi8KKyNkZWZpbmUgQ0xPQ0tfVElDS19SQVRFCQkyMDAwMDAwCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNsNzUwMC91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NjAxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdW5jb21wcmVzcy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdW5jb21wcmVzcy5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIE5leHVzIEVsZWN0cm9uaWNzIEx0ZC4KKyAqLworCisjZGVmaW5lIEJBU0UgMHgwMzAxMDAwMAorI2RlZmluZSBTRVJCQVNFIChCQVNFICsgKDB4MmY4IDw8IDIpKQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCXdoaWxlICghKCooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKShTRVJCQVNFICsgMHgxNCkpICYgMHgyMCkpOworCSooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKShTRVJCQVNFKSkgPSBjOworfQorCisvKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykgeworCQlwdXRjKCpzKTsKKwkJaWYgKCpzID09ICdcbicpCisJCQlwdXRjKCdccicpOworCQlzKys7CisJfQorfQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFyY2hfZGVjb21wX3NldHVwKHZvaWQpCit7CisJaW50IGJhdWQgPSAzNjg2NDAwIC8gKDk2MDAgKiAzMik7CisKKwkqKCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoU0VSQkFTRSArIDB4QykpID0gMHg4MDsKKwkqKCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoU0VSQkFTRSArIDB4MCkpID0gYmF1ZCAmIDB4ZmY7CisJKigodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKFNFUkJBU0UgKyAweDQpKSA9IChiYXVkICYgMHhmZjAwKSA+PiA4OworCSooKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKShTRVJCQVNFICsgMHhDKSkgPSAzOyAvKiA4IGJpdHMgKi8KKwkqKCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoU0VSQkFTRSArIDB4MTApKSA9IDM7IC8qIERUUiwgUlRTICovCit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfd2RvZygpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbDc1MDAvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTg4M2RlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3ZtYWxsb2MuaApAQCAtMCwwICsxLDE1IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2w3NTAwL3ZtYWxsb2MuaAorICovCisKKy8qCisgKiBKdXN0IGFueSBhcmJpdHJhcnkgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyBWTSBhcmVhOiB0aGUKKyAqIGN1cnJlbnQgOE1CIHZhbHVlIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgOE1CICJob2xlIiBhZnRlciB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB1bnRpbCB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN0YXJ0cy4gIFRoYXQgbWVhbnMgdGhhdAorICogYW55IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdpbGwgaG9wZWZ1bGx5IGJlIGNhdWdodC4KKyAqIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2VlbiBlYWNoIHZtYWxsb2NlZAorICogYXJlYSBmb3IgdGhlIHNhbWUgcmVhc29uLiA7KQorICovCisjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUCSAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfRU5EICAgICAgIChQQUdFX09GRlNFVCArIDB4MWMwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9hdXRjcHUxMi5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvYXV0Y3B1MTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTg4YTM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvYXV0Y3B1MTIuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQVVUQ1BVMTIgc3BlY2lmaWMgZGVmaW5lcworICoKKyAqIChjKSAyMDAxIFRob21hcyBHbGVpeG5lciwgYXV0cm9uaXggYXV0b21hdGlvbiA8Z2xlaXhuZXJAYXV0cm9uaXguZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfQVVUQ1BVMTJfSAorI2RlZmluZSBfX0FTTV9BUkNIX0FVVENQVTEyX0gKKworLyoKKyAqIFRoZSBDUzg5MDBBIGV0aGVybmV0IGNoaXAgaGFzIGl0cyBJL08gcmVnaXN0ZXJzIHdpcmVkIHRvIGNoaXAgc2VsZWN0IDIKKyAqIChuQ1MyKS4gVGhpcyBpcyB0aGUgbWFwcGluZyBmb3IgaXQuCisgKi8KKyNkZWZpbmUgQVVUQ1BVMTJfUEhZU19DUzg5MDBBCQlDUzJfUEhZU19CQVNFCQkvKiBwaHlzaWNhbCAqLworI2RlZmluZSBBVVRDUFUxMl9WSVJUX0NTODkwMEEJCSgweGZlMDAwMDAwKQkJLyogdmlydHVhbCAqLworCisvKgorICogVGhlIGZsYXNoIGJhbmsgaXMgd2lyZWQgdG8gY2hpcCBzZWxlY3QgMAorICovCisjZGVmaW5lIEFVVENQVTEyX1BIWVNfRkxBU0gJCUNTMF9QSFlTX0JBU0UJCS8qIHBoeXNpY2FsICovCisKKy8qIG9mZnNldCBmb3IgZGV2aWNlIHNwZWNpZmljIGluZm9ybWF0aW9uIHN0cnVjdHVyZSAqLworI2RlZmluZSBBVVRDUFUxMl9MQ0RJTkZPX09GRlMJCSgweDAwMDEwMDAwKQkKKy8qCisqIFZpZGVvbWVtb3J5IGlzIHRoZSBpbnRlcm5hbCBTUkFNIChDUyA2KQkKKyovCisjZGVmaW5lIEFVVENQVTEyX1BIWVNfVklERU8JCUNTNl9QSFlTX0JBU0UKKyNkZWZpbmUgQVVUQ1BVMTJfVklSVF9WSURFTwkJKDB4ZmQwMDAwMDApCisKKy8qCisqIEFsbCBzcGVjaWFsIElPJ3MgYXJlIHRpZWQgdG8gQ1MxCisqLworI2RlZmluZSBBVVRDUFUxMl9QSFlTX0NIQVJfTENEICAgICAgICAgCUNTMV9QSFlTX0JBU0UgKzB4MDAwMDAwMDAgIC8qIHBoeXNpY2FsICovCisKKyNkZWZpbmUgQVVUQ1BVMTJfUEhZU19OVlJBTSAgICAgICAgICAgIAlDUzFfUEhZU19CQVNFICsweDAyMDAwMDAwICAvKiBwaHlzaWNhbCAqLworCisjZGVmaW5lIEFVVENQVTEyX1BIWVNfQ1NBVVgxICAgICAgICAgICAJQ1MxX1BIWVNfQkFTRSArMHgwNDAwMDAwMCAgLyogcGh5c2ljYWwgKi8KKworI2RlZmluZSBBVVRDUFUxMl9QSFlTX1NNQyAgICAgICAgICAgICAgCUNTMV9QSFlTX0JBU0UgKzB4MDYwMDAwMDAgIC8qIHBoeXNpY2FsICovCisKKyNkZWZpbmUgQVVUQ1BVMTJfUEhZU19DQU4gICAgICAgICAgICAgIAlDUzFfUEhZU19CQVNFICsweDA4MDAwMDAwICAvKiBwaHlzaWNhbCAqLworCisjZGVmaW5lIEFVVENQVTEyX1BIWVNfVE9VQ0ggICAgICAgICAgICAJQ1MxX1BIWVNfQkFTRSArMHgwQTAwMDAwMCAgLyogcGh5c2ljYWwgKi8KKworI2RlZmluZSBBVVRDUFUxMl9QSFlTX0lPICAgICAgICAgICAgICAgCUNTMV9QSFlTX0JBU0UgKzB4MEMwMDAwMDAgIC8qIHBoeXNpY2FsICovCisKKyNkZWZpbmUgQVVUQ1BVMTJfUEhZU19MUFQgICAgICAgICAgICAgIAlDUzFfUEhZU19CQVNFICsweDBFMDAwMDAwICAvKiBwaHlzaWNhbCAqLworCisvKiAKKyogZGVmaW5lcyBmb3Igc21hcnRtZWRpYSBjYXJkIGFjY2VzcyAKKyovCisjZGVmaW5lIEFVVENQVTEyX1NNQ19SRFkJCSgxPDwyKQorI2RlZmluZSBBVVRDUFUxMl9TTUNfQUxFCQkoMTw8MykKKyNkZWZpbmUgQVVUQ1BVMTJfU01DX0NMRSAgCQkoMTw8NCkKKyNkZWZpbmUgQVVUQ1BVMTJfU01DX1BPUlRfT0ZGU0VUCVBCRFIKKyNkZWZpbmUgQVVUQ1BVMTJfU01DX1NFTEVDVF9PRkZTRVQgCTB4MTAKKy8qCisqIGRlZmluZXMgZm9yIGxjZCBjb250cmFzdCAKKyovCisjZGVmaW5lIEFVVENQVTEyX0RQT1RfUE9SVF9PRkZTRVQJUEVEUgorI2RlZmluZQlBVVRDUFUxMl9EUE9UX0NTCQkoMTw8MCkKKyNkZWZpbmUgQVVUQ1BVMTJfRFBPVF9DTEsgICAgCQkoMTw8MSkKKyNkZWZpbmUJQVVUQ1BVMTJfRFBPVF9VRAkJKDE8PDIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwYTU3NgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSw0NiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jbHBzNzExMS5oPgorCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgI0NMUFM3MTExX1BIWVNfQkFTRQorCQltb3ZuZQlccngsICNDTFBTNzExMV9WSVJUX0JBU0UKKyNpZm5kZWYgQ09ORklHX0RFQlVHX0NMUFM3MTFYX1VBUlQyCisJCWFkZAlccngsIFxyeCwgIzB4MDAwMAlAIFVBUlQxCisjZWxzZQorCQlhZGQJXHJ4LCBccngsICMweDEwMDAJQCBVQVJUMgorI2VuZGlmCisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cglccmQsIFtccngsICMweDA0ODBdCUAgVUFSVERSCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyCVxyZCwgW1xyeCwgIzB4MDE0MF0JQCBTWVNGTEd4CisJCXRzdAlccmQsICMxIDw8IDExCQlAIFVCVVNZeAorCQlibmUJMTAwMWIKKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKwkJdHN0CVxyeCwgIzB4MTAwMAkJQCBVQVJUMiBkb2VzIG5vdCBoYXZlIENUUyBoZXJlCisJCWJuZQkxMDAyZgorMTAwMToJCWxkcglccmQsIFtccngsICMweDAxNDBdCUAgU1lTRkxHeAorCQl0c3QJXHJkLCAjMSA8PCA4CQlAIENUUworCQlibmUJMTAwMWIKKzEwMDI6CisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M0YzVjOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2RtYS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvZG1hLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3LDE5OTggUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfRE1BX0gKKyNkZWZpbmUgX19BU01fQVJDSF9ETUFfSAorCisjZGVmaW5lIE1BWF9ETUFfQUREUkVTUwkJMHhmZmZmZmZmZgorCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMAorCisjZW5kaWYgLyogX0FTTV9BUkNIX0RNQV9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMTA3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1DTFBTNzExeC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBDTFBTNzExWC1iYXNlZCBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jbHBzNzExMS5oPgorCisJCS5tYWNybwlkaXNhYmxlX2ZpcQorCQkuZW5kbQorCisjaWYgKElOVFNSMiAtIElOVFNSMSkgIT0gKElOVE1SMiAtIElOVE1SMSkKKyNlcnJvciBJTlRTUiBzdHJpZGUgIT0gSU5UTVIgc3RyaWRlCisjZW5kaWYKKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgc3RhdCwgYmFzZSwgbWFzaworCQltb3YJXGJhc2UsICNDTFBTNzExMV9CQVNFCisJCWxkcglcc3RhdCwgW1xiYXNlLCAjSU5UU1IxXQorCQlsZHIJXG1hc2ssIFtcYmFzZSwgI0lOVE1SMV0KKwkJbW92CVxpcnFuciwgIzQKKwkJbW92CVxtYXNrLCBcbWFzaywgbHNsICMxNgorCQlhbmQJXHN0YXQsIFxzdGF0LCBcbWFzaywgbHNyICMxNgorCQltb3ZzCVxzdGF0LCBcc3RhdCwgbHNyICM0CisJCWJuZQkxMDAxZgorCisJCWFkZAlcYmFzZSwgXGJhc2UsICNJTlRTUjIgLSBJTlRTUjEKKwkJbGRyCVxzdGF0LCBbXGJhc2UsICNJTlRTUjFdCisJCWxkcglcbWFzaywgW1xiYXNlLCAjSU5UTVIxXQorCQltb3YJXGlycW5yLCAjMTYKKwkJbW92CVxtYXNrLCBcbWFzaywgbHNsICMxNgorCQlhbmQJXHN0YXQsIFxzdGF0LCBcbWFzaywgbHNyICMxNgorCisxMDAxOgkJdHN0CVxzdGF0LCAjMjU1CisJCWFkZGVxCVxpcnFuciwgXGlycW5yLCAjOAorCQltb3ZlcQlcc3RhdCwgXHN0YXQsIGxzciAjOAorCQl0c3QJXHN0YXQsICMxNQorCQlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzQKKwkJbW92ZXEJXHN0YXQsIFxzdGF0LCBsc3IgIzQKKwkJdHN0CVxzdGF0LCAjMworCQlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzIKKwkJbW92ZXEJXHN0YXQsIFxzdGF0LCBsc3IgIzIKKwkJdHN0CVxzdGF0LCAjMQorCQlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzEKKwkJbW92ZXEJXHN0YXQsIFxzdGF0LCBsc3IgIzEKKwkJdHN0CVxzdGF0LCAjMQkJCUAgYml0IDAgc2hvdWxkIGJlIHNldAorCQkuZW5kbQorCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzODY4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMjM4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2hhcmR3YXJlLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgUHJvc3BlY3RvciBQNzIwVC4KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2RlZmluZSBDTFBTNzExMV9WSVJUX0JBU0UJMHhmZjAwMDAwMAorI2RlZmluZSBDTFBTNzExMV9CQVNFCQlDTFBTNzExMV9WSVJUX0JBU0UKKworLyoKKyAqIFRoZSBwaHlzaWNhbCBhZGRyZXNzZXMgdGhhdCB0aGUgZXh0ZXJuYWwgY2hpcCBzZWxlY3Qgc2lnbmFscyBtYXAgdG8gaXMKKyAqIGRlcGVuZGVudCBvbiB0aGUgc2V0dGluZyBvZiB0aGUgbk1FRENIRyBzaWduYWwgb24gRVA3MjExIGFuZCBFUDcyMTIKKyAqIHByb2Nlc3NvcnMuICBDT05GSUdfRVA3MlhYX0JPT1RfUk9NIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZXNlCisgKiBwcm9jZXNzb3JzIGFyZSBpbiB1c2UuCisgKi8KKyNpZm5kZWYgQ09ORklHX0VQNzJYWF9ST01fQk9PVAorI2RlZmluZSBDUzBfUEhZU19CQVNFCQkoMHgwMDAwMDAwMCkKKyNkZWZpbmUgQ1MxX1BIWVNfQkFTRQkJKDB4MTAwMDAwMDApCisjZGVmaW5lIENTMl9QSFlTX0JBU0UJCSgweDIwMDAwMDAwKQorI2RlZmluZSBDUzNfUEhZU19CQVNFCQkoMHgzMDAwMDAwMCkKKyNkZWZpbmUgQ1M0X1BIWVNfQkFTRQkJKDB4NDAwMDAwMDApCisjZGVmaW5lIENTNV9QSFlTX0JBU0UJCSgweDUwMDAwMDAwKQorI2RlZmluZSBDUzZfUEhZU19CQVNFCQkoMHg2MDAwMDAwMCkKKyNkZWZpbmUgQ1M3X1BIWVNfQkFTRQkJKDB4NzAwMDAwMDApCisjZWxzZQorI2RlZmluZSBDUzBfUEhZU19CQVNFCQkoMHg3MDAwMDAwMCkKKyNkZWZpbmUgQ1MxX1BIWVNfQkFTRQkJKDB4NjAwMDAwMDApCisjZGVmaW5lIENTMl9QSFlTX0JBU0UJCSgweDUwMDAwMDAwKQorI2RlZmluZSBDUzNfUEhZU19CQVNFCQkoMHg0MDAwMDAwMCkKKyNkZWZpbmUgQ1M0X1BIWVNfQkFTRQkJKDB4MzAwMDAwMDApCisjZGVmaW5lIENTNV9QSFlTX0JBU0UJCSgweDIwMDAwMDAwKQorI2RlZmluZSBDUzZfUEhZU19CQVNFCQkoMHgxMDAwMDAwMCkKKyNkZWZpbmUgQ1M3X1BIWVNfQkFTRQkJKDB4MDAwMDAwMDApCisjZW5kaWYKKworI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX0VQNzIxMSkKKworI2RlZmluZSBFUDcyMTFfVklSVF9CQVNFCUNMUFM3MTExX1ZJUlRfQkFTRQorI2RlZmluZSBFUDcyMTFfQkFTRQkJQ0xQUzcxMTFfVklSVF9CQVNFCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2VwNzIxMS5oPgorCisjZWxpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9FUDcyMTIpCisKKyNkZWZpbmUgRVA3MjEyX1ZJUlRfQkFTRQlDTFBTNzExMV9WSVJUX0JBU0UKKyNkZWZpbmUgRVA3MjEyX0JBU0UJCUNMUFM3MTExX1ZJUlRfQkFTRQorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9lcDcyMTIuaD4KKworI2VuZGlmCisKKyNkZWZpbmUgU1lTUExEX1ZJUlRfQkFTRQkweGZlMDAwMDAwCisjZGVmaW5lIFNZU1BMRF9CQVNFCQlTWVNQTERfVklSVF9CQVNFCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworCisjZGVmaW5lIFBDSU9fQkFTRQkJSU9fQkFTRQorCisjZW5kaWYKKworCisjaWYgIGRlZmluZWQgKENPTkZJR19BUkNIX0FVVENQVTEyKQorCisjZGVmaW5lICBDUzg5NzEyX1ZJUlRfQkFTRQlDTFBTNzExMV9WSVJUX0JBU0UKKyNkZWZpbmUgIENTODk3MTJfQkFTRQkJQ0xQUzcxMTFfVklSVF9CQVNFCisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvY2xwczcxMTEuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvZXA3MjEyLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NzODk3MTIuaD4KKworI2VuZGlmCisKKworI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX0NEQjg5NzEyKQorCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NscHM3MTExLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2VwNzIxMi5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jczg5NzEyLmg+CisKKy8qIGR5bmFtaWMgaW9yZW1hcCgpIGFyZWFzICovCisjZGVmaW5lIEZMQVNIX1NUQVJUICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBGTEFTSF9TSVpFICAgICAgIDB4ODAwMDAwCisjZGVmaW5lIEZMQVNIX1dJRFRIICAgICAgNAorCisjZGVmaW5lIFNSQU1fU1RBUlQgICAgICAgMHg2MDAwMDAwMAorI2RlZmluZSBTUkFNX1NJWkUgICAgICAgIDB4YzAwMAorI2RlZmluZSBTUkFNX1dJRFRIICAgICAgIDQKKworI2RlZmluZSBCT09UUk9NX1NUQVJUICAgIDB4NzAwMDAwMDAKKyNkZWZpbmUgQk9PVFJPTV9TSVpFICAgICAweDgwCisjZGVmaW5lIEJPT1RST01fV0lEVEggICAgNAorCisKKy8qIHN0YXRpYyBjZGI4OTcxMl9tYXBfaW8oKSBhcmVhcyAqLworI2RlZmluZSBSRUdJU1RFUl9TVEFSVCAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgUkVHSVNURVJfU0laRSAgICAweDQwMDAKKyNkZWZpbmUgUkVHSVNURVJfQkFTRSAgICAweGZmMDAwMDAwCisKKyNkZWZpbmUgRVRIRVJfU1RBUlQgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIEVUSEVSX1NJWkUgICAgICAgMHgxMDAwCisjZGVmaW5lIEVUSEVSX0JBU0UgICAgICAgMHhmZTAwMDAwMAorCisjZW5kaWYKKworCisjaWYgZGVmaW5lZCAoQ09ORklHX0FSQ0hfRURCNzIxMSkKKworLyoKKyAqIFRoZSBleHRyYSA4IGxpbmVzIG9mIHRoZSBrZXlib2FyZCBtYXRyaXggYXJlIHdpcmVkIHRvIGNoaXAgc2VsZWN0IDMgKG5DUzMpIAorICogYW5kIHJlcGVhdCBhY3Jvc3MgaXQuIFRoaXMgaXMgdGhlIG1hcHBpbmcgZm9yIGl0LgorICoKKyAqIEluIGp1bXBlcmVkIGJvb3QgbW9kZSwgbkNTMyBpcyBtYXBwZWQgdG8gMHg0MDAwMDAwLCBub3QgMHgzMDAwMDAwLiBUaGlzIAorICogd2FzIGNhdXNlIGZvciBtdWNoIGNvbnN0ZXJuYXRpb24gYW5kIGhlYWRzY3JhdGNoaW5nLiBUaGlzIHNob3VsZCBwcm9iYWJseQorICogYmUgbWFkZSBhIGNvbXBpbGUvcnVuIHRpbWUga2VybmVsIG9wdGlvbi4KKyAqLworI2RlZmluZSBFUDcyMTFfUEhZU19FWFRLQkQJCUNTM19QSFlTX0JBU0UJLyogcGh5c2ljYWwgKi8KKworI2RlZmluZSBFUDcyMTFfVklSVF9FWFRLQkQJCSgweGZkMDAwMDAwKQkvKiB2aXJ0dWFsICovCisKKworLyoKKyAqIFRoZSBDUzg5MDBBIGV0aGVybmV0IGNoaXAgaGFzIGl0cyBJL08gcmVnaXN0ZXJzIHdpcmVkIHRvIGNoaXAgc2VsZWN0IDIgCisgKiAobkNTMikuIFRoaXMgaXMgdGhlIG1hcHBpbmcgZm9yIGl0LgorICoKKyAqIEluIGp1bXBlcmVkIGJvb3QgbW9kZSwgbkNTMiBpcyBtYXBwZWQgdG8gMHg1MDAwMDAwLCBub3QgMHgyMDAwMDAwLiBUaGlzIAorICogd2FzIGNhdXNlIGZvciBtdWNoIGNvbnN0ZXJuYXRpb24gYW5kIGhlYWRzY3JhdGNoaW5nLiBUaGlzIHNob3VsZCBwcm9iYWJseQorICogYmUgbWFkZSBhIGNvbXBpbGUvcnVuIHRpbWUga2VybmVsIG9wdGlvbi4KKyAqLworI2RlZmluZSBFUDcyMTFfUEhZU19DUzg5MDBBCQlDUzJfUEhZU19CQVNFCS8qIHBoeXNpY2FsICovCisKKyNkZWZpbmUgRVA3MjExX1ZJUlRfQ1M4OTAwQQkJKDB4ZmMwMDAwMDApCS8qIHZpcnR1YWwgKi8KKworCisvKgorICogVGhlIHR3byBmbGFzaCBiYW5rcyBhcmUgd2lyZWQgdG8gY2hpcCBzZWxlY3RzIDAgYW5kIDEuIFRoaXMgaXMgdGhlIG1hcHBpbmcKKyAqIGZvciB0aGVtLgorICoKKyAqIG5DUzAgYW5kIG5DUzEgYXJlIGF0IDB4NzAwMDAwMDAgYW5kIDB4NjAwMDAwMDAsIHJlc3BlY3RpdmVseSwgd2hlbiBydW5uaW5nCisgKiBpbiBqdW1wZXJlZCBib290IG1vZGUuCisgKi8KKyNkZWZpbmUgRVA3MjExX1BIWVNfRkxBU0gxCQlDUzBfUEhZU19CQVNFCS8qIHBoeXNpY2FsICovCisjZGVmaW5lIEVQNzIxMV9QSFlTX0ZMQVNIMgkJQ1MxX1BIWVNfQkFTRQkvKiBwaHlzaWNhbCAqLworCisjZGVmaW5lIEVQNzIxMV9WSVJUX0ZMQVNIMQkJKDB4ZmEwMDAwMDApCS8qIHZpcnR1YWwgKi8KKyNkZWZpbmUgRVA3MjExX1ZJUlRfRkxBU0gyCQkoMHhmYjAwMDAwMCkJLyogdmlydHVhbCAqLworCisjZW5kaWYgLyogQ09ORklHX0FSQ0hfRURCNzIxMSAqLworCisKKy8qCisgKiBSZWxldmFudCBiaXRzIGluIHBvcnQgRCwgd2hpY2ggY29udHJvbHMgcG93ZXIgdG8gdGhlIHZhcmlvdXMgcGFydHMgb2YKKyAqIHRoZSBMQ0Qgb24gdGhlIEVEQjcyMTEuCisgKi8KKyNkZWZpbmUgRURCX1BEMV9MQ0RfRENfRENfRU4JKDE8PDEpCisjZGVmaW5lIEVEQl9QRDJfTENERU4JCSgxPDwyKQorI2RlZmluZSBFREJfUEQzX0xDREJMCQkoMTw8MykKKworCisjaWYgZGVmaW5lZCAoQ09ORklHX0FSQ0hfQ0VJVkEpCisKKyNkZWZpbmUgIENFSVZBX1ZJUlRfQkFTRQlDTFBTNzExMV9WSVJUX0JBU0UKKyNkZWZpbmUgIENFSVZBX0JBU0UJCUNMUFM3MTExX1ZJUlRfQkFTRQorCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NscHM3MTExLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2VwNzIxMi5oPgorCisKKy8qCisgKiBUaGUgdHdvIGZsYXNoIGJhbmtzIGFyZSB3aXJlZCB0byBjaGlwIHNlbGVjdHMgMCBhbmQgMS4gVGhpcyBpcyB0aGUgbWFwcGluZworICogZm9yIHRoZW0uCisgKgorICogbkNTMCBhbmQgbkNTMSBhcmUgYXQgMHg3MDAwMDAwMCBhbmQgMHg2MDAwMDAwMCwgcmVzcGVjdGl2ZWx5LCB3aGVuIHJ1bm5pbmcKKyAqIGluIGp1bXBlcmVkIGJvb3QgbW9kZS4KKyAqLworI2RlZmluZSBDRUlWQV9QSFlTX0ZMQVNIMQlDUzBfUEhZU19CQVNFCS8qIHBoeXNpY2FsICovCisjZGVmaW5lIENFSVZBX1BIWVNfRkxBU0gyCUNTMV9QSFlTX0JBU0UJLyogcGh5c2ljYWwgKi8KKworI2RlZmluZSBDRUlWQV9WSVJUX0ZMQVNIMQkoMHhmYTAwMDAwMCkJLyogdmlydHVhbCAqLworI2RlZmluZSBDRUlWQV9WSVJUX0ZMQVNIMgkoMHhmYjAwMDAwMCkJLyogdmlydHVhbCAqLworCisjZGVmaW5lIENFSVZBX0ZMQVNIX1NJWkUgICAgICAgIDB4MTAwMDAwCisjZGVmaW5lIENFSVZBX0ZMQVNIX1dJRFRIICAgICAgIDIKKworI2RlZmluZSBTUkFNX1NUQVJUICAgICAgIDB4NjAwMDAwMDAKKyNkZWZpbmUgU1JBTV9TSVpFICAgICAgICAweGMwMDAKKyNkZWZpbmUgU1JBTV9XSURUSCAgICAgICA0CisKKyNkZWZpbmUgQk9PVFJPTV9TVEFSVCAgICAweDcwMDAwMDAwCisjZGVmaW5lIEJPT1RST01fU0laRSAgICAgMHg4MAorI2RlZmluZSBCT09UUk9NX1dJRFRIICAgIDQKKworLyoKKyAqIFNFRDEzNTUgTENEIGNvbnRyb2xsZXIKKyAqLworI2RlZmluZSBDRUlWQV9QSFlTX1NFRDEzNTUJQ1MyX1BIWVNfQkFTRQorI2RlZmluZSBDRUlWQV9WSVJUX1NFRDEzNTUJKDB4ZmMwMDAwMDApCisKKy8qCisgKiBSZWxldmFudCBiaXRzIGluIHBvcnQgRCwgd2hpY2ggY29udHJvbHMgcG93ZXIgdG8gdGhlIHZhcmlvdXMgcGFydHMgb2YKKyAqIHRoZSBMQ0Qgb24gdGhlIENlaXZhIFBob3RvIE1heCwgYW5kIHJlc2V0IHRvIHRoZSBMQ0QgY29udHJvbGxlci4KKyAqLworCisvLyBSZXNldCBsaW5lIHRvIFNFRDEzNTUgKG11c3QgYmUgaGlnaCB0byBvcGVyYXRlKQorI2RlZmluZSBDRUlWQV9QRDFfTENEUlNUCSgxPDwxKQorLy8gTENEIHBhbmVsIGVuYWJsZSAoc2V0IHRvIG9uZSwgdG8gZW5hYmxlIExDRCkKKyNkZWZpbmUgQ0VJVkFfUEQ0X0xDREVOCQkoMTw8NCkKKy8vIEJhY2tsaWdodCAoc2V0IHRvIG9uZSwgdG8gdHVybiBvbiBiYWNrbGlnaHQKKyNkZWZpbmUgQ0VJVkFfUEQ1X0xDREJMCQkoMTw8NSkKKworLyoKKyAqIFJlbGV2YW50IGJpdHMgaW4gcG9ydCBCLCB3aGljaCByZXBvcnQgdGhlIHN0YXR1cyBvZiB0aGUgYnV0dG9ucy4KKyAqLworCisvLyBXaGl0ZSBidXR0b24KKyNkZWZpbmUgQ0VJVkFfUEI0X1dIVF9CVE4JKDE8PDQpCisvLyBCbGFjayBidXR0b24KKyNkZWZpbmUgQ0VJVkFfUEIwX0JMS19CVE4JKDE8PDApCisjZW5kaWYgLy8gI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX0NFSVZBKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZDdlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9pby5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisjZGVmaW5lIF9faW8oYSkJCQkoKHZvaWQgX19pb21lbSAqKShhKSkKKyNkZWZpbmUgX19tZW1fcGNpKGEpCQkoYSkKKyNkZWZpbmUgX19tZW1faXNhKGEpCQkoYSkKKworLyoKKyAqIFdlIGRvbid0IHN1cHBvcnQgaW5zW2xiXS9vdXRzW2xiXS4gIE1ha2UgdGhlbSBmYXVsdC4KKyAqLworI2RlZmluZSBfX3Jhd19yZWFkc2IocCxkLGwpCWRvIHsgKihpbnQgKikwID0gMDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgX19yYXdfcmVhZHNsKHAsZCxsKQlkbyB7ICooaW50ICopMCA9IDA7IH0gd2hpbGUgKDApCisjZGVmaW5lIF9fcmF3X3dyaXRlc2IocCxkLGwpCWRvIHsgKihpbnQgKikwID0gMDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgX19yYXdfd3JpdGVzbChwLGQsbCkJZG8geyAqKGludCAqKTAgPSAwOyB9IHdoaWxlICgwKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2lycXMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjAyNWRjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvaXJxcy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvaXJxcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyoKKyAqIEludGVycnVwdHMgZnJvbSBJTlRTUjEKKyAqLworI2RlZmluZSBJUlFfQ1NJTlQJCQk0CisjZGVmaW5lIElSUV9FSU5UMQkJCTUKKyNkZWZpbmUgSVJRX0VJTlQyCQkJNgorI2RlZmluZSBJUlFfRUlOVDMJCQk3CisjZGVmaW5lIElSUV9UQzFPSQkJCTgKKyNkZWZpbmUgSVJRX1RDMk9JCQkJOQorI2RlZmluZSBJUlFfUlRDTUkJCQkxMAorI2RlZmluZSBJUlFfVElOVAkJCTExCisjZGVmaW5lIElSUV9VVFhJTlQxCQkJMTIKKyNkZWZpbmUgSVJRX1VSWElOVDEJCQkxMworI2RlZmluZSBJUlFfVU1TSU5UCQkJMTQKKyNkZWZpbmUgSVJRX1NTRU9USQkJCTE1CisKKyNkZWZpbmUgSU5UMV9JUlFTCQkJKDB4MDAwMGZmZjApCisjZGVmaW5lIElOVDFfQUNLX0lSUVMJCQkoMHgwMDAwNGYxMCkKKworLyoKKyAqIEludGVycnVwdHMgZnJvbSBJTlRTUjIKKyAqLworI2RlZmluZSBJUlFfS0JESU5UCQkJKDE2KzApCS8qIGJpdCAwICovCisjZGVmaW5lIElSUV9TUzJSWAkJCSgxNisxKQkvKiBiaXQgMSAqLworI2RlZmluZSBJUlFfU1MyVFgJCQkoMTYrMikJLyogYml0IDIgKi8KKyNkZWZpbmUgSVJRX1VUWElOVDIJCQkoMTYrMTIpCS8qIGJpdCAxMiAqLworI2RlZmluZSBJUlFfVVJYSU5UMgkJCSgxNisxMykJLyogYml0IDEzICovCisKKyNkZWZpbmUgSU5UMl9JUlFTCQkJKDB4MzAwNzAwMDApCisjZGVmaW5lIElOVDJfQUNLX0lSUVMJCQkoMHgwMDAxMDAwMCkKKworI2RlZmluZSBOUl9JUlFTICAgICAgICAgICAgICAgICAgICAgICAgIDMwCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5Nzg5NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L21lbW9yeS5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L21lbW9yeS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKgorICogUGh5c2ljYWwgRFJBTSBvZmZzZXQuCisgKi8KKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4YzAwMDAwMDBVTCkKKworLyoKKyAqIFZpcnR1YWwgdmlldyA8LT4gRE1BIHZpZXcgbWVtb3J5IGFkZHJlc3MgdHJhbnNsYXRpb25zCisgKiB2aXJ0X3RvX2J1czogVXNlZCB0byB0cmFuc2xhdGUgdGhlIHZpcnR1YWwgYWRkcmVzcyB0byBhbgorICogICAgICAgICAgICAgIGFkZHJlc3Mgc3VpdGFibGUgdG8gYmUgcGFzc2VkIHRvIHNldF9kbWFfYWRkcgorICogYnVzX3RvX3ZpcnQ6IFVzZWQgdG8gY29udmVydCBhbiBhZGRyZXNzIGZvciBETUEgb3BlcmF0aW9ucworICogICAgICAgICAgICAgIHRvIGFuIGFkZHJlc3MgdGhhdCB0aGUga2VybmVsIGNhbiB1c2UuCisgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfQ0RCODk3MTIpCisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQkoeCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkoeCkKKworI2VsaWYgZGVmaW5lZCAoQ09ORklHX0FSQ0hfQVVUQ1BVMTIpCisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQkoeCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkoeCkKKworI2Vsc2UKKworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCSgoeCkgLSBQQUdFX09GRlNFVCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkoKHgpICsgUEFHRV9PRkZTRVQpCisKKyNlbmRpZgorCisKKy8qCisgKiBMaWtlIHRoZSBTQTExMDAsIHRoZSBFREI3MjExIGhhcyBhIGxhcmdlIGdhcCBiZXR3ZWVuIHBoeXNpY2FsIFJBTQorICogYmFua3MuICBJbiAyLjIsIHRoZSBQc2lvbiAoQ0wtUFM3MTEwKSBwb3J0IGFkZGVkIGN1c3RvbSBzdXBwb3J0IGZvcgorICogZGlzY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkuICBJbiAyLjQsIHdlIGNhbiB1c2UgdGhlIHN0YW5kYXJkCisgKiBMaW51eCBOVU1BIHN1cHBvcnQuCisgKgorICogVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGZvciBFUDcyMTEgaW1wbGVtZW50YXRpb25zIHdpdGggb25seSBvbmUgdXNlZAorICogbWVtb3J5IGJhbmsuICBGb3IgdGhvc2Ugc3lzdGVtcywgc2ltcGx5IHVuZGVmaW5lIENPTkZJR19ESVNDT05USUdNRU0uCisgKi8KKworI2lmZGVmIENPTkZJR19ESVNDT05USUdNRU0KKy8qCisgKiBCZWNhdXNlIG9mIHRoZSB3aWRlIG1lbW9yeSBhZGRyZXNzIHNwYWNlIGJldHdlZW4gcGh5c2ljYWwgUkFNIGJhbmtzIG9uIHRoZSAKKyAqIFNBMTEwMCwgaXQncyBtdWNoIG1vcmUgY29udmVuaWVudCB0byB1c2UgTGludXgncyBOVU1BIHN1cHBvcnQgdG8gaW1wbGVtZW50CisgKiBvdXIgbWVtb3J5IG1hcCByZXByZXNlbnRhdGlvbi4gIEFzc3VtaW5nIGFsbCBtZW1vcnkgbm9kZXMgaGF2ZSBlcXVhbCBhY2Nlc3MgCisgKiBjaGFyYWN0ZXJpc3RpY3MsIHdlIHRoZW4gaGF2ZSBnZW5lcmljIGRpc2NvbnRpZ3VvdXMgbWVtb3J5IHN1cHBvcnQuCisgKgorICogT2YgY291cnNlLCBhbGwgdGhpcyBpc24ndCBtYW5kYXRvcnkgZm9yIFNBMTEwMCBpbXBsZW1lbnRhdGlvbnMgd2l0aCBvbmx5CisgKiBvbmUgdXNlZCBtZW1vcnkgYmFuay4gIEZvciB0aG9zZSwgc2ltcGx5IHVuZGVmaW5lIENPTkZJR19ESVNDT05USUdNRU0uCisgKgorICogVGhlIG5vZGVzIGFyZSBtYXRjaGVkIHdpdGggdGhlIHBoeXNpY2FsIG1lbW9yeSBiYW5rIGFkZHJlc3NlcyB3aGljaCBhcmUgCisgKiBpbmNpZGVudGFsbHkgdGhlIHNhbWUgYXMgdmlydHVhbCBhZGRyZXNzZXMuCisgKiAKKyAqIAlub2RlIDA6ICAweGMwMDAwMDAwIC0gMHhjN2ZmZmZmZgorICogCW5vZGUgMTogIDB4YzgwMDAwMDAgLSAweGNmZmZmZmZmCisgKiAJbm9kZSAyOiAgMHhkMDAwMDAwMCAtIDB4ZDdmZmZmZmYKKyAqIAlub2RlIDM6ICAweGQ4MDAwMDAwIC0gMHhkZmZmZmZmZgorICovCisKKy8qCisgKiBHaXZlbiBhIGtlcm5lbCBhZGRyZXNzLCBmaW5kIHRoZSBob21lIG5vZGUgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5LgorICovCisjZGVmaW5lIEtWQUREUl9UT19OSUQoYWRkcikgXAorCQkoKCh1bnNpZ25lZCBsb25nKShhZGRyKSAtIFBBR0VfT0ZGU0VUKSA+PiBOT0RFX01BWF9NRU1fU0hJRlQpCisKKy8qCisgKiBHaXZlbiBhIHBhZ2UgZnJhbWUgbnVtYmVyLCBjb252ZXJ0IGl0IHRvIGEgbm9kZSBpZC4KKyAqLworI2RlZmluZSBQRk5fVE9fTklEKHBmbikgXAorCSgoKHBmbikgLSBQSFlTX1BGTl9PRkZTRVQpID4+IChOT0RFX01BWF9NRU1fU0hJRlQgLSBQQUdFX1NISUZUKSkKKworLyoKKyAqIEdpdmVuIGEga2FkZHIsIEFERFJfVE9fTUFQQkFTRSBmaW5kcyB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybnMgdGhlIG1lbV9tYXAgb2YgdGhhdCBub2RlLgorICovCisjZGVmaW5lIEFERFJfVE9fTUFQQkFTRShrYWRkcikgXAorCQkJTk9ERV9NRU1fTUFQKEtWQUREUl9UT19OSUQoKHVuc2lnbmVkIGxvbmcpKGthZGRyKSkpCisKKyNkZWZpbmUgUEZOX1RPX01BUEJBU0UocGZuKQlOT0RFX01FTV9NQVAoUEZOX1RPX05JRChwZm4pKQorCisvKgorICogR2l2ZW4gYSBrYWRkciwgTE9DQUxfTUFSX05SIGZpbmRzIHRoZSBvd25pbmcgbm9kZSBvZiB0aGUgbWVtb3J5CisgKiBhbmQgcmV0dXJucyB0aGUgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUgYXBwcm9wcmlhdGUgcGFnZSBpbiB0aGUKKyAqIG5vZGUncyBtZW1fbWFwLgorICovCisjZGVmaW5lIExPQ0FMX01BUF9OUihhZGRyKSBcCisJKCgodW5zaWduZWQgbG9uZykoYWRkcikgJiAoTk9ERV9NQVhfTUVNX1NJWkUgLSAxKSkgPj4gUEFHRV9TSElGVCkKKworLyoKKyAqIFRoZSBQUzcyMTEgYWxsb3dzIHVwIHRvIDI1Nk1CIG1heCBwZXIgRFJBTSBiYW5rLCBidXQgdGhlIEVEQjcyMTEKKyAqIHVzZXMgb25seSBvbmUgb2YgdGhlIHR3byBiYW5rcyAoYmFuayAjMSkuICBIb3dldmVyLCBldmVuIHdpdGhpbgorICogYmFuayAjMSwgbWVtb3J5IGlzIGRpc2NvbnRpZ3VvdXMuCisgKgorICogVGhlIEVEQjcyMTEgaGFzIHR3byA4TUIgRFJBTSBhcmVhcyB3aXRoIDhNQiBvZiBlbXB0eSBzcGFjZSBiZXR3ZWVuCisgKiB0aGVtLCBzbyB3ZSB1c2UgMjQgZm9yIHRoZSBub2RlIG1heCBzaGlmdCB0byBnZXQgMTZNQiBub2RlIHNpemVzLgorICovCisjZGVmaW5lIE5PREVfTUFYX01FTV9TSElGVAkyNAorI2RlZmluZSBOT0RFX01BWF9NRU1fU0laRQkoMTw8Tk9ERV9NQVhfTUVNX1NISUZUKQorCisjZW5kaWYgLyogQ09ORklHX0RJU0NPTlRJR01FTSAqLworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZmNmJkMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3BhcmFtLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9wYXJhbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3N5c3BsZC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvc3lzcGxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwNTc4YQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3N5c3BsZC5oCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3N5c3BsZC5oCisgKgorICogIFN5c3RlbSBDb250cm9sIFBMRCByZWdpc3RlciBkZWZpbml0aW9ucy4KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX1NZU1BMRF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfU1lTUExEX0gKKworI2RlZmluZSBTWVNQTERfUEhZU19CQVNFCSgweDEwMDAwMDAwKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCisjZGVmaW5lIFNZU1BMRF9SRUcodHlwZSxvZmYpCSgqKHZvbGF0aWxlIHR5cGUgKikoU1lTUExEX0JBU0UgKyBvZmYpKQorI2Vsc2UKKyNkZWZpbmUgU1lTUExEX1JFRyh0eXBlLG9mZikJKG9mZikKKyNlbmRpZgorCisjZGVmaW5lIFBMRF9JTlQJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAwMCkKKyNkZWZpbmUgUExEX0lOVF9QRU5JUlEJCSgxIDw8IDUpCisjZGVmaW5lIFBMRF9JTlRfVUNCX0lSUQkJKDEgPDwgMSkKKyNkZWZpbmUgUExEX0lOVF9LQkRfQVROCQkoMSA8PCAwKQkvKiBFSU5UMSAqLworCisjZGVmaW5lIFBMRF9QV1IJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAwNCkKKyNkZWZpbmUgUExEX1BXUl9FWFQJCSgxIDw8IDUpCisjZGVmaW5lIFBMRF9QV1JfTU9ERQkJKDEgPDwgNCkJLyogMSA9IFBXTSwgMCA9IFBGTSAqLworI2RlZmluZSBQTERfUzRfT04JCSgxIDw8IDMpCS8qIExDRCBiaWFzIHZvbHRhZ2UgZW5hYmxlICovCisjZGVmaW5lIFBMRF9TM19PTgkJKDEgPDwgMikJLyogTENEIGJhY2tsaWdodCBlbmFibGUgKi8KKyNkZWZpbmUgUExEX1MyX09OCQkoMSA8PCAxKQkvKiBMQ0QgM1YzIHN1cHBseSBlbmFibGUgKi8KKyNkZWZpbmUgUExEX1MxX09OCQkoMSA8PCAwKQkvKiBMQ0QgM1Ygc3VwcGx5IGVuYWJsZSAqLworCisjZGVmaW5lIFBMRF9LQkQJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAwOCkKKyNkZWZpbmUgUExEX0tCRF9XQUtFCQkoMSA8PCAxKQorI2RlZmluZSBQTERfS0JEX0VOCQkoMSA8PCAwKQorCisjZGVmaW5lIFBMRF9TUEkJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAwYykKKyNkZWZpbmUgUExEX1NQSV9FTgkJKDEgPDwgMCkKKworI2RlZmluZSBQTERfSU8JCVNZU1BMRF9SRUcodTMyLCAweDAwMDAxMCkKKyNkZWZpbmUgUExEX0lPX0JPT1RTRUwJCSgxIDw8IDYpCS8qIGJvb3Qgc2VsIHN3aXRjaCAqLworI2RlZmluZSBQTERfSU9fVVNFUgkJKDEgPDwgNSkJLyogdXNlciBkZWZpbmVkIHN3aXRjaCAqLworI2RlZmluZSBQTERfSU9fTEVEMwkJKDEgPDwgNCkKKyNkZWZpbmUgUExEX0lPX0xFRDIJCSgxIDw8IDMpCisjZGVmaW5lIFBMRF9JT19MRUQxCQkoMSA8PCAyKQorI2RlZmluZSBQTERfSU9fTEVEMAkJKDEgPDwgMSkKKyNkZWZpbmUgUExEX0lPX0xFREVOCQkoMSA8PCAwKQorCisjZGVmaW5lIFBMRF9JUkRBCVNZU1BMRF9SRUcodTMyLCAweDAwMDAxNCkKKyNkZWZpbmUgUExEX0lSREFfRU4JCSgxIDw8IDApCisKKyNkZWZpbmUgUExEX0NPTTIJU1lTUExEX1JFRyh1MzIsIDB4MDAwMDE4KQorI2RlZmluZSBQTERfQ09NMl9FTgkJKDEgPDwgMCkKKworI2RlZmluZSBQTERfQ09NMQlTWVNQTERfUkVHKHUzMiwgMHgwMDAwMWMpCisjZGVmaW5lIFBMRF9DT00xX0VOCQkoMSA8PCAwKQorCisjZGVmaW5lIFBMRF9BVUQJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAyMCkKKyNkZWZpbmUgUExEX0FVRF9ESVYxCQkoMSA8PCA2KQorI2RlZmluZSBQTERfQVVEX0RJVjAJCSgxIDw8IDUpCisjZGVmaW5lIFBMRF9BVURfQ0xLX1NFTDEJKDEgPDwgNCkKKyNkZWZpbmUgUExEX0FVRF9DTEtfU0VMMAkoMSA8PCAzKQorI2RlZmluZSBQTERfQVVEX01JQ19QV1IJCSgxIDw8IDIpCisjZGVmaW5lIFBMRF9BVURfTUlDX0dBSU4JKDEgPDwgMSkKKyNkZWZpbmUgUExEX0FVRF9DT0RFQ19FTgkoMSA8PCAwKQorCisjZGVmaW5lIFBMRF9DRgkJU1lTUExEX1JFRyh1MzIsIDB4MDAwMDI0KQorI2RlZmluZSBQTERfQ0YyX1NMRUVQCQkoMSA8PCA1KQorI2RlZmluZSBQTERfQ0YxX1NMRUVQCQkoMSA8PCA0KQorI2RlZmluZSBQTERfQ0YyX25QRFJFUQkJKDEgPDwgMykKKyNkZWZpbmUgUExEX0NGMV9uUERSRVEJCSgxIDw8IDIpCisjZGVmaW5lIFBMRF9DRjJfbklSUQkJKDEgPDwgMSkKKyNkZWZpbmUgUExEX0NGMV9uSVJRCQkoMSA8PCAwKQorCisjZGVmaW5lIFBMRF9TREMJCVNZU1BMRF9SRUcodTMyLCAweDAwMDAyOCkKKyNkZWZpbmUgUExEX1NEQ19JTlRfRU4JCSgxIDw8IDIpCisjZGVmaW5lIFBMRF9TRENfV1AJCSgxIDw8IDEpCisjZGVmaW5lIFBMRF9TRENfQ0QJCSgxIDw8IDApCisKKyNkZWZpbmUgUExEX0ZQR0EJU1lTUExEX1JFRyh1MzIsIDB4MDAwMDJjKQorCisjZGVmaW5lIFBMRF9DT0RFQwlTWVNQTERfUkVHKHUzMiwgMHg0MDAwMDApCisjZGVmaW5lIFBMRF9DT0RFQ19JUlEzCQkoMSA8PCA0KQorI2RlZmluZSBQTERfQ09ERUNfSVJRMgkJKDEgPDwgMykKKyNkZWZpbmUgUExEX0NPREVDX0lSUTEJCSgxIDw8IDIpCisjZGVmaW5lIFBMRF9DT0RFQ19FTgkJKDEgPDwgMCkKKworI2RlZmluZSBQTERfQlJJVEUJU1lTUExEX1JFRyh1MzIsIDB4NDAwMDA0KQorI2RlZmluZSBQTERfQlJJVEVfVVAJCSgxIDw8IDEpCisjZGVmaW5lIFBMRF9CUklURV9ETgkJKDEgPDwgMCkKKworI2RlZmluZSBQTERfTENERU4JU1lTUExEX1JFRyh1MzIsIDB4NDAwMDA4KQorI2RlZmluZSBQTERfTENERU5fRU4JCSgxIDw8IDApCisKKyNkZWZpbmUgUExEX0lECQlTWVNQTERfUkVHKHUzMiwgMHg0MDAwMGMpCisKKyNkZWZpbmUgUExEX1RDSAkJU1lTUExEX1JFRyh1MzIsIDB4NDAwMDEwKQorI2RlZmluZSBQTERfVENIX1BFTklSUQkJKDEgPDwgMSkKKyNkZWZpbmUgUExEX1RDSF9FTgkJKDEgPDwgMCkKKworI2RlZmluZSBQTERfR1BJTwlTWVNQTERfUkVHKHUzMiwgMHg0MDAwMTQpCisjZGVmaW5lIFBMRF9HUElPMgkJKDEgPDwgMikKKyNkZWZpbmUgUExEX0dQSU8xCQkoMSA8PCAxKQorI2RlZmluZSBQTERfR1BJTzAJCSgxIDw8IDApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWI5ODFmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvc3lzdGVtLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC9zeXN0ZW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvY2xwczcxMTEuaD4KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWNscHNfd3JpdGVsKDEsIEhBTFQpOworCV9fYXNtX18gX192b2xhdGlsZV9fKAorCSJtb3YJcjAsIHIwXG5cCisJbW92CXIwLCByMCIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9yZXNldChjaGFyIG1vZGUpCit7CisJY3B1X3Jlc2V0KDApOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3RpbWUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3RpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2IyN2NkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvdGltZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvdGltZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpbmNsdWRlIDxhc20vbGVkcy5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jbHBzNzExMS5oPgorCitleHRlcm4gdm9pZCBjbHBzNzExeF9zZXR1cF90aW1lcih2b2lkKTsKKworLyoKKyAqIElSUSBoYW5kbGVyIGZvciB0aGUgdGltZXIKKyAqLworc3RhdGljIGlycXJldHVybl90CitwNzIwdF90aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlkb19sZWRzKCk7CisJZG9fdGltZXIocmVncyk7CisjaWZuZGVmIENPTkZJR19TTVAKKwl1cGRhdGVfcHJvY2Vzc190aW1lcyh1c2VyX21vZGUocmVncykpOworI2VuZGlmCisJZG9fcHJvZmlsZShyZWdzKTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKKy8qCisgKiBTZXQgdXAgdGltZXIgaW50ZXJydXB0LCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgaW4gc2Vjb25kcy4KKyAqLwordm9pZCBfX2luaXQgdGltZV9pbml0KHZvaWQpCit7CisJY2xwczcxMXhfc2V0dXBfdGltZXIoKTsKKwl0aW1lcl9pcnEuaGFuZGxlciA9IHA3MjB0X3RpbWVyX2ludGVycnVwdDsKKwlzZXR1cF9pcnEoSVJRX1RDMk9JLCAmdGltZXJfaXJxKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYmIzODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC90aW1leC5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvdGltZXguaAorICoKKyAqICBQcm9zcGVjdG9yIDcyMFQgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBDTE9DS19USUNLX1JBVEUgNTEyMDAwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwYWI3OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWNscHM3MTF4L3VuY29tcHJlc3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9pby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NscHM3MTExLmg+CisKKyN1bmRlZiBDTFBTNzExMV9CQVNFCisjZGVmaW5lIENMUFM3MTExX0JBU0UgQ0xQUzcxMTFfUEhZU19CQVNFCisKKyNkZWZpbmUgYmFycmllcigpCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpCisjZGVmaW5lIF9fcmF3X3JlYWRsKHApCQkoKih1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBfX3Jhd193cml0ZWwodixwKQkoKih1bnNpZ25lZCBsb25nICopKHApID0gKHYpKQorCisjaWZkZWYgQ09ORklHX0RFQlVHX0NMUFM3MTFYX1VBUlQyCisjZGVmaW5lIFNZU0ZMR3gJU1lTRkxHMgorI2RlZmluZSBVQVJURFJ4CVVBUlREUjIKKyNlbHNlCisjZGVmaW5lIFNZU0ZMR3gJU1lTRkxHMQorI2RlZmluZSBVQVJURFJ4CVVBUlREUjEKKyNlbmRpZgorCisvKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCWNoYXIgYzsKKworCXdoaWxlICgoYyA9ICpzKyspICE9ICdcMCcpIHsKKwkJd2hpbGUgKGNscHNfcmVhZGwoU1lTRkxHeCkgJiBTWVNGTEdfVVRYRkYpCisJCQliYXJyaWVyKCk7CisJCWNscHNfd3JpdGVsKGMsIFVBUlREUngpOworCisJCWlmIChjID09ICdcbicpIHsKKwkJCXdoaWxlIChjbHBzX3JlYWRsKFNZU0ZMR3gpICYgU1lTRkxHX1VUWEZGKQorCQkJCWJhcnJpZXIoKTsKKwkJCWNscHNfd3JpdGVsKCdccicsIFVBUlREUngpOworCQl9CisJfQorCXdoaWxlIChjbHBzX3JlYWRsKFNZU0ZMR3gpICYgU1lTRkxHX1VCVVNZKQorCQliYXJyaWVyKCk7Cit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2xwczcxMXgvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNTcxZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC92bWFsbG9jLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1jbHBzNzExeC92bWFsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDEwMDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDAzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwzNCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqKi8KKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbW92CVxyeCwgIzB4ZjAwMDAwMDAKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMDAwMGJlMAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHJiCVxyZCwgW1xyeF0KKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDI6CQlsZHJiCVxyZCwgW1xyeCwgIzB4MTRdCisJCWFuZAlccmQsIFxyZCwgIzB4NjAKKwkJdGVxCVxyZCwgIzB4NjAKKwkJYm5lCTEwMDJiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyYglccmQsIFtccngsICMweDE4XQorCQl0c3QJXHJkLCAjMHgxMAorCQliZXEJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OTE3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2RtYS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9kbWEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBFQlNBMTEwIERNQSBkZWZpbml0aW9ucworICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfRE1BX0gKKyNkZWZpbmUgX19BU01fQVJDSF9ETUFfSAorCisjZGVmaW5lIE1BWF9ETUFfQUREUkVTUwkJMHhmZmZmZmZmZgorI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyY2EwNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDMzIEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBlYnNhMTEwIHBsYXRmb3JtLgorICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisKKworCisjZGVmaW5lIElSUV9TVEFUCQkweGZmMDAwMDAwCS8qIHJlYWQgKi8KKworCS5tYWNybwlkaXNhYmxlX2ZpcQorCS5lbmRtCisKKwkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgc3RhdCwgYmFzZSwgdG1wCisJbW92CVxiYXNlLCAjSVJRX1NUQVQKKwlsZHJiCVxzdGF0LCBbXGJhc2VdCQkJQCBnZXQgaW50ZXJydXB0cworCW1vdglcaXJxbnIsICMwCisJdHN0CVxzdGF0LCAjMTUKKwlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzQKKwltb3ZlcQlcc3RhdCwgXHN0YXQsIGxzciAjNAorCXRzdAlcc3RhdCwgIzMKKwlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzIKKwltb3ZlcQlcc3RhdCwgXHN0YXQsIGxzciAjMgorCXRzdAlcc3RhdCwgIzEKKwlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzEKKwltb3ZlcQlcc3RhdCwgXHN0YXQsIGxzciAjMQorCXRzdAlcc3RhdCwgIzEJCQlAIGJpdCAwIHNob3VsZCBiZSBzZXQKKwkuZW5kbQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0MWMyMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvaGFyZHdhcmUuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGhhcmR3YXJlIGRlZmluaXRpb25zIG9mIHRoZSBFQlNBLTExMC4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKy8qCisgKiBUaGUgRUJTQTExMCBoYXMgYSB3ZWlyZCAiSVNBIElPIiByZWdpb246CisgKgorICogUmVnaW9uIDAgKGFkZHIgPSAweGYwMDAwMDAwICsgaW8gPDwgMikKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQaHlzaWNhbCByZWdpb24JSU8gcmVnaW9uCisgKiBmMDAwMGZlMCAtIGYwMDAwZmZjCTNmOCAtIDNmZiAgdHR5UzAKKyAqIGYwMDAwZTYwIC0gZjAwMDBlNjQJMzk4IC0gMzk5CisgKiBmMDAwMGRlMCAtIGYwMDAwZGZjCTM3OCAtIDM3ZiAgbHAwCisgKiBmMDAwMGJlMCAtIGYwMDAwYmZjCTJmOCAtIDJmZiAgdHR5UzEKKyAqCisgKiBSZWdpb24gMSAoYWRkciA9IDB4ZjAwMDAwMDAgKyAoaW8gJiB+MSkgPDwgMSArIChpbyAmIDEpKQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFBoeXNpY2FsIHJlZ2lvbglJTyByZWdpb24KKyAqIGYwMDAxNGYxICAgICAgICAgICAgIGE3OSAgICAgICAgcG5wIHdyaXRlIGRhdGEKKyAqIGYwMDAwN2MwIC0gZjAwMDA3YzEJM2UwIC0gM2UxICBwY21jaWEKKyAqIGYwMDAwNGYxCQkyNzkgICAgICAgIHBucCBhZGRyZXNzCisgKiBmMDAwMDQ0MCAtIGYwMDAwNDZjICAyMjAgLSAyMzYgIGV0aDAKKyAqIGYwMDAwNDA1CQkyMDMgICAgICAgIHBucCByZWFkIGRhdGEKKyAqLworCisjZGVmaW5lIElTQU1FTV9QSFlTCQkweGUwMDAwMDAwCisjZGVmaW5lIElTQU1FTV9TSVpFCQkweDEwMDAwMDAwCisKKyNkZWZpbmUgSVNBSU9fUEhZUwkJMHhmMDAwMDAwMAorI2RlZmluZSBJU0FJT19TSVpFCQlQR0RJUl9TSVpFCisKKyNkZWZpbmUgVFJJQ0swX1BIWVMJCTB4ZjIwMDAwMDAKKyNkZWZpbmUgVFJJQ0sxX1BIWVMJCTB4ZjI0MDAwMDAKKyNkZWZpbmUgVFJJQ0syX1BIWVMJCTB4ZjI4MDAwMDAKKyNkZWZpbmUgVFJJQ0szX1BIWVMJCTB4ZjJjMDAwMDAKKyNkZWZpbmUgVFJJQ0s0X1BIWVMJCTB4ZjMwMDAwMDAKKyNkZWZpbmUgVFJJQ0s1X1BIWVMJCTB4ZjM0MDAwMDAKKyNkZWZpbmUgVFJJQ0s2X1BIWVMJCTB4ZjM4MDAwMDAKKyNkZWZpbmUgVFJJQ0s3X1BIWVMJCTB4ZjNjMDAwMDAKKworI2RlZmluZSBJU0FNRU1fQkFTRQkJMHhlMDAwMDAwMAorI2RlZmluZSBJU0FJT19CQVNFCQkweGYwMDAwMDAwCisKKyNkZWZpbmUgUElUX0JBU0UJCTB4ZmMwMDAwMDAKKyNkZWZpbmUgU09GVF9CQVNFCQkweGZkMDAwMDAwCisKKy8qCisgKiBSQU0gZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBGTFVTSF9CQVNFX1BIWVMJCTB4NDAwMDAwMDAKKyNkZWZpbmUgRkxVU0hfQkFTRQkJMHhkZjAwMDAwMAorCisjZGVmaW5lIFVOQ0FDSEVBQkxFX0FERFIJMHhmZjAwMDAwMAkvKiBJUlFfU1RBVCAqLworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZTA0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2lvLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2lvLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3LDE5OTggUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogIDA2LURlYy0xOTk3CVJNSwlDcmVhdGVkLgorICovCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZgorCit1OCBfX2luYjgodW5zaWduZWQgaW50IHBvcnQpOwordm9pZCBfX291dGI4KHU4ICB2YWwsIHVuc2lnbmVkIGludCBwb3J0KTsKKwordTggX19pbmIxNih1bnNpZ25lZCBpbnQgcG9ydCk7Cit2b2lkIF9fb3V0YjE2KHU4ICB2YWwsIHVuc2lnbmVkIGludCBwb3J0KTsKKwordTE2IF9faW53KHVuc2lnbmVkIGludCBwb3J0KTsKK3ZvaWQgX19vdXR3KHUxNiB2YWwsIHVuc2lnbmVkIGludCBwb3J0KTsKKwordTMyIF9faW5sKHVuc2lnbmVkIGludCBwb3J0KTsKK3ZvaWQgX19vdXRsKHUzMiB2YWwsIHVuc2lnbmVkIGludCBwb3J0KTsKKwordTggIF9fcmVhZGIodm9pZCBfX2lvbWVtICphZGRyKTsKK3UxNiBfX3JlYWR3KHZvaWQgX19pb21lbSAqYWRkcik7Cit1MzIgX19yZWFkbCh2b2lkIF9faW9tZW0gKmFkZHIpOworCit2b2lkIF9fd3JpdGViKHU4ICB2YWwsIHZvaWQgX19pb21lbSAqYWRkcik7Cit2b2lkIF9fd3JpdGV3KHUxNiB2YWwsIHZvaWQgX19pb21lbSAqYWRkcik7Cit2b2lkIF9fd3JpdGVsKHUzMiB2YWwsIHZvaWQgX19pb21lbSAqYWRkcik7CisKKy8qCisgKiBBcmdoLCBzb21lb25lIGZvcmdvdCB0aGUgSU9DUzE2IGxpbmUuICBXZSB0aGVyZWZvcmUgaGF2ZSB0byBoYW5kbGUKKyAqIHRoZSBieXRlIHN0ZWFyaW5nIGJ5IHNlbGVjdGluZyB0aGUgY29ycmVjdCBieXRlIElPIGZ1bmN0aW9ucyBoZXJlLgorICovCisjaWZkZWYgSVNBX1NJWFRFRU5fQklUX1BFUklQSEVSQUwKKyNkZWZpbmUgaW5iKHApIAkJCV9faW5iMTYocCkKKyNkZWZpbmUgb3V0Yih2LHApCQlfX291dGIxNih2LHApCisjZWxzZQorI2RlZmluZSBpbmIocCkJCQlfX2luYjgocCkKKyNkZWZpbmUgb3V0Yih2LHApCQlfX291dGI4KHYscCkKKyNlbmRpZgorCisjZGVmaW5lIGludyhwKQkJCV9faW53KHApCisjZGVmaW5lIG91dHcodixwKQkJX19vdXR3KHYscCkKKworI2RlZmluZSBpbmwocCkJCQlfX2lubChwKQorI2RlZmluZSBvdXRsKHYscCkJCV9fb3V0bCh2LHApCisKKyNkZWZpbmUgcmVhZGIoYikJCV9fcmVhZGIoYikKKyNkZWZpbmUgcmVhZHcoYikJCV9fcmVhZHcoYikKKyNkZWZpbmUgcmVhZGwoYikJCV9fcmVhZGwoYikKKyNkZWZpbmUgcmVhZGJfcmVsYXhlZChhZGRyKQlyZWFkYihhZGRyKQorI2RlZmluZSByZWFkd19yZWxheGVkKGFkZHIpCXJlYWR3KGFkZHIpCisjZGVmaW5lIHJlYWRsX3JlbGF4ZWQoYWRkcikJcmVhZGwoYWRkcikKKworI2RlZmluZSB3cml0ZWIodixiKQkJX193cml0ZWIodixiKQorI2RlZmluZSB3cml0ZXcodixiKQkJX193cml0ZXcodixiKQorI2RlZmluZSB3cml0ZWwodixiKQkJX193cml0ZWwodixiKQorCisjZGVmaW5lIF9fYXJjaF9pb3JlbWFwKGNvb2tpZSxzeixjLGEpCSgodm9pZCBfX2lvbWVtICopKGNvb2tpZSkpCisjZGVmaW5lIF9fYXJjaF9pb3VubWFwKGNvb2tpZSkJCWRvIHsgfSB3aGlsZSAoMCkKKworZXh0ZXJuIHZvaWQgaW5zYih1bnNpZ25lZCBpbnQgcG9ydCwgdm9pZCAqYnVmLCBpbnQgc3opOworZXh0ZXJuIHZvaWQgaW5zdyh1bnNpZ25lZCBpbnQgcG9ydCwgdm9pZCAqYnVmLCBpbnQgc3opOworZXh0ZXJuIHZvaWQgaW5zbCh1bnNpZ25lZCBpbnQgcG9ydCwgdm9pZCAqYnVmLCBpbnQgc3opOworCitleHRlcm4gdm9pZCBvdXRzYih1bnNpZ25lZCBpbnQgcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgc3opOworZXh0ZXJuIHZvaWQgb3V0c3codW5zaWduZWQgaW50IHBvcnQsIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IHN6KTsKK2V4dGVybiB2b2lkIG91dHNsKHVuc2lnbmVkIGludCBwb3J0LCBjb25zdCB2b2lkICpidWYsIGludCBzeik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ5YmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9pcnFzLmgKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2lycXMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjZGVmaW5lIE5SX0lSUVMJCQk4CisKKyNkZWZpbmUgSVJRX0VCU0ExMTBfUFJJTlRFUgkwCisjZGVmaW5lIElSUV9FQlNBMTEwX0NPTTEJMQorI2RlZmluZSBJUlFfRUJTQTExMF9DT00yCTIKKyNkZWZpbmUgSVJRX0VCU0ExMTBfRVRIRVJORVQJMworI2RlZmluZSBJUlFfRUJTQTExMF9USU1FUjAJNAorI2RlZmluZSBJUlFfRUJTQTExMF9USU1FUjEJNQorI2RlZmluZSBJUlFfRUJTQTExMF9QQ01DSUEJNgorI2RlZmluZSBJUlFfRUJTQTExMF9JTU1FRElBVEUJNwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5NDkzZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvbWVtb3J5LmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL21lbW9yeS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgIDIwLU9jdC0xOTk2IFJNSwlDcmVhdGVkCisgKiAgIDMxLURlYy0xOTk3IFJNSwlGaXhlZCBkZWZpbml0aW9ucyB0byByZWR1Y2Ugd2FybmluZ3MKKyAqICAgMjEtTWFyLTE5OTkgUk1LCVJlbmFtZWQgdG8gbWVtb3J5LmgKKyAqCQkgUk1LCU1vdmVkIFRBU0tfU0laRSBhbmQgUEFHRV9PRkZTRVQgaGVyZQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisvKgorICogUGh5c2ljYWwgRFJBTSBvZmZzZXQuCisgKi8KKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4MDAwMDAwMDBVTCkKKworLyoKKyAqIFdlIGtlZXAgdGhpcyAxOjEgc28gdGhhdCB3ZSBkb24ndCBpbnRlcmZlcmUKKyAqIHdpdGggdGhlIFBDTUNJQSBtZW1vcnkgcmVnaW9ucworICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJKHgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTliMDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3BhcmFtLmgKQEAgLTAsMCArMSw0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvcGFyYW0uaAorICovCisjZGVmaW5lIEhaCTIwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjOGZlYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2ExMTAvc3lzdGVtLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3N5c3RlbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwIFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKyNkZWZpbmUgX19BU01fQVJDSF9TWVNURU1fSAorCisvKgorICogRUJTQTExMCBpZGxpbmcgbWV0aG9kb2xvZ3k6CisgKgorICogV2UgY2FuIG5vdCBleGVjdXRlIHRoZSAid2FpdCBmb3IgaW50ZXJydXB0IiBpbnN0cnVjdGlvbiBzaW5jZSB0aGF0CisgKiB3aWxsIHN0b3Agb3VyIE1DTEsgc2lnbmFsICh3aGljaCBwcm92aWRlcyB0aGUgY2xvY2sgZm9yIHRoZSBnbHVlCisgKiBsb2dpYywgYW5kIHRoZXJlZm9yZSB0aGUgdGltZXIgaW50ZXJydXB0KS4KKyAqCisgKiBJbnN0ZWFkLCB3ZSBzcGluLCBwb2xsaW5nIHRoZSBJUlFfU1RBVCByZWdpc3RlciBmb3IgdGhlIG9jY3VycmVuY2UKKyAqIG9mIGFueSBpbnRlcnJ1cHQgd2l0aCBjb3JlIGNsb2NrIGRvd24gdG8gdGhlIG1lbW9yeSBjbG9jay4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWNvbnN0IGNoYXIgKmlycV9zdGF0ID0gKGNoYXIgKikweGZmMDAwMDAwOworCisJLyogZGlzYWJsZSBjbG9jayBzd2l0Y2hpbmcgKi8KKwlhc20gdm9sYXRpbGUgKCJtY3IgcDE1LCAwLCBpcCwgYzE1LCBjMiwgMiIgOiA6IDogImNjIik7CisKKwkvKiB3YWl0IGZvciBhbiBpbnRlcnJ1cHQgdG8gb2NjdXIgKi8KKwl3aGlsZSAoISppcnFfc3RhdCk7CisKKwkvKiBlbmFibGUgY2xvY2sgc3dpdGNoaW5nICovCisJYXNtIHZvbGF0aWxlICgibWNyIHAxNSwgMCwgaXAsIGMxNSwgYzEsIDIiIDogOiA6ICJjYyIpOworfQorCisjZGVmaW5lIGFyY2hfcmVzZXQobW9kZSkJY3B1X3Jlc2V0KDB4ODAwMDAwMDApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC90aW1leC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOWVmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3RpbWV4LmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3RpbWV4LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIEVCU0ExMTAgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKi8KKworLyoKKyAqIE9uIHRoZSBFQlNBLCB0aGUgY2xvY2sgdGlja3MgYXQgd2VpcmQgcmF0ZXMuCisgKiBUaGlzIGlzIHRoZXJlZm9yZSBub3QgdXNlZCB0byBjYWxjdWxhdGUgdGhlCisgKiBkaXZpc29yLgorICovCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJNDc4OTQwMDAKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWU5NTU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC91bmNvbXByZXNzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3VuY29tcHJlc3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYsMTk5NywxOTk4IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworLyoKKyAqIFRoaXMgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZQorICovCitzdGF0aWMgdm9pZCBwdXRzdHIoY29uc3QgY2hhciAqcykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDEsIHRtcDI7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJImxkcmIJJTAsIFslMl0sICMxXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJYmVxCTNmXG4iCisiMToJc3RyYgklMCwgWyUzXVxuIgorIjI6CWxkcmIJJTEsIFslMywgIzB4MTRdXG4iCisiCWFuZAklMSwgJTEsICMweDYwXG4iCisiCXRlcQklMSwgIzB4NjBcbiIKKyIJYm5lCTJiXG4iCisiCXRlcQklMCwgIydcbidcbiIKKyIJbW92ZXEJJTAsICMnXHInXG4iCisiCWJlcQkxYlxuIgorIglsZHJiCSUwLCBbJTJdLCAjMVxuIgorIgl0ZXEJJTAsICMwXG4iCisiCWJuZQkxYlxuIgorIjM6CWxkcmIJJTEsIFslMywgIzB4MTRdXG4iCisiCWFuZAklMSwgJTEsICMweDYwXG4iCisiCXRlcQklMSwgIzB4NjBcbiIKKyIJYm5lCTNiIgorCTogIj0mciIgKHRtcDEpLCAiPSZyIiAodG1wMikKKwk6ICJyIiAocyksICJyIiAoMHhmMDAwMGJlMCkgOiAiY2MiKTsKK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTk2NTliCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC92bWFsbG9jLmgKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL3ZtYWxsb2MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTggUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDFmMDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNzg1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSw2NiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2RlYzIxMjg1Lmg+CisKKyNpZm5kZWYgQ09ORklHX0RFQlVHX0RDMjEyODVfUE9SVAorCS8qIEZvciBOZXRXaW5kZXIgZGVidWdnaW5nICovCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgIzB4N2MwMDAwMDAJQCBwaHlzaWNhbAorCQltb3ZuZQlccngsICMweGZmMDAwMDAwCUAgdmlydHVhbAorCQlvcnIJXHJ4LCBccngsICMweDAwMDAwM2Y4CisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cmIJXHJkLCBbXHJ4XQorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMjoJCWxkcmIJXHJkLCBbXHJ4LCAjMHg1XQorCQlhbmQJXHJkLCBccmQsICMweDYwCisJCXRlcQlccmQsICMweDYwCisJCWJuZQkxMDAyYgorCQkuZW5kbQorCisJCS5tYWNybwl3YWl0dWFydCxyZCxyeAorMTAwMToJCWxkcmIJXHJkLCBbXHJ4LCAjMHg2XQorCQl0c3QJXHJkLCAjMHgxMAorCQliZXEJMTAwMWIKKwkJLmVuZG0KKyNlbHNlCisJLyogRm9yIEVCU0EyODUgZGVidWdnaW5nICovCisJCS5lcXUJZGMyMTI4NV9oaWdoLCBBUk1DU1JfQkFTRSAmIDB4ZmYwMDAwMDAKKwkJLmVxdQlkYzIxMjg1X2xvdywgIEFSTUNTUl9CQVNFICYgMHgwMGZmZmZmZgorCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltb3YJXHJ4LCAjZGMyMTI4NV9oaWdoCisJCS5pZglkYzIxMjg1X2xvdworCQlvcnIJXHJ4LCBccngsICNkYzIxMjg1X2xvdworCQkuZW5kaWYKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyCVxyZCwgW1xyeCwgIzB4MTYwXQlAIFVBUlREUgorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICMweDE3OF0JQCBVQVJURkxHCisJCXRzdAlccmQsICMxIDw8IDMKKwkJYm5lCTEwMDFiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisJCS5lbmRtCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MzA0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2RtYS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9kbWEuaAorICoKKyAqICBBcmNoaXRlY3R1cmUgRE1BIHJvdXRpbmVzCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OCwxOTk5IFJ1c3NlbGwgS2luZworICogIENvcHlyaWdodCAoQykgMTk5OCwxOTk5IFBoaWxpcCBCbHVuZGVsbAorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfRE1BX0gKKyNkZWZpbmUgX19BU01fQVJDSF9ETUFfSAorCisvKgorICogVGhpcyBpcyB0aGUgbWF4aW11bSBETUEgYWRkcmVzcyB0aGF0IGNhbiBiZSBETUFkIHRvLgorICovCisjZGVmaW5lIE1BWF9ETUFfQUREUkVTUwkJMHhmZmZmZmZmZgorCisvKgorICogVGhlIDIxMjg1IGhhcyB0d28gaW50ZXJuYWwgRE1BIGNoYW5uZWxzOyB3ZSBjYWxsIHRoZXNlIDggYW5kIDkuCisgKiBPbiBDQVRTIGhhcmR3YXJlIHdlIGhhdmUgYW4gYWRkaXRpb25hbCBlaWdodCBJU0EgZG1hIGNoYW5uZWxzCisgKiBudW1iZXJlZCAwLi43LgorICovCisjZGVmaW5lIF9JU0FfRE1BKHgpCQkoMCsoeCkpCisjZGVmaW5lIF9EQzIxMjg1X0RNQSh4KQkJKDgrKHgpKQorCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMTAKKworI2RlZmluZSBETUFfRkxPUFBZCQlfSVNBX0RNQSgyKQorI2RlZmluZSBETUFfSVNBX0NBU0NBREUJCV9JU0FfRE1BKDQpCisKKyNlbmRpZiAvKiBfQVNNX0FSQ0hfRE1BX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjU3MjlmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtZm9vdGJyaWRnZS9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBmb290YnJpZGdlLWJhc2VkIHBsYXRmb3JtcworICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2RlYzIxMjg1Lmg+CisKKwkJLm1hY3JvCWRpc2FibGVfZmlxCisJCS5lbmRtCisKKwkJLmVxdQlkYzIxMjg1X2hpZ2gsIEFSTUNTUl9CQVNFICYgMHhmZjAwMDAwMAorCQkuZXF1CWRjMjEyODVfbG93LCBBUk1DU1JfQkFTRSAmIDB4MDBmZmZmZmYKKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJCW1vdglyNCwgI2RjMjEyODVfaGlnaAorCQkuaWYJZGMyMTI4NV9sb3cKKwkJb3JyCXI0LCByNCwgI2RjMjEyODVfbG93CisJCS5lbmRpZgorCQlsZHIJXGlycXN0YXQsIFtyNCwgIzB4MTgwXQkJQCBnZXQgaW50ZXJydXB0cworCisJCW1vdglcaXJxbnIsICNJUlFfU0RSQU1QQVJJVFkKKwkJdHN0CVxpcnFzdGF0LCAjSVJRX01BU0tfU0RSQU1QQVJJVFkKKwkJYm5lCTEwMDFmCisKKwkJdHN0CVxpcnFzdGF0LCAjSVJRX01BU0tfVUFSVF9SWAorCQltb3ZuZQlcaXJxbnIsICNJUlFfQ09OUlgKKwkJYm5lCTEwMDFmCisKKwkJdHN0CVxpcnFzdGF0LCAjSVJRX01BU0tfRE1BMQorCQltb3ZuZQlcaXJxbnIsICNJUlFfRE1BMQorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19ETUEyCisJCW1vdm5lCVxpcnFuciwgI0lSUV9ETUEyCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX0lOMAorCQltb3ZuZQlcaXJxbnIsICNJUlFfSU4wCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX0lOMQorCQltb3ZuZQlcaXJxbnIsICNJUlFfSU4xCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX0lOMgorCQltb3ZuZQlcaXJxbnIsICNJUlFfSU4yCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX0lOMworCQltb3ZuZQlcaXJxbnIsICNJUlFfSU4zCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX1BDSQorCQltb3ZuZQlcaXJxbnIsICNJUlFfUENJCisJCWJuZQkxMDAxZgorCisJCXRzdAlcaXJxc3RhdCwgI0lSUV9NQVNLX0RPT1JCRUxMSE9TVAorCQltb3ZuZQlcaXJxbnIsICNJUlFfRE9PUkJFTExIT1NUCisJCWJuZSAgICAgMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19JMk9JTlBPU1QKKwkJbW92bmUJXGlycW5yLCAjSVJRX0kyT0lOUE9TVAorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19USU1FUjEKKwkJbW92bmUJXGlycW5yLCAjSVJRX1RJTUVSMQorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19USU1FUjIKKwkJbW92bmUJXGlycW5yLCAjSVJRX1RJTUVSMgorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19USU1FUjMKKwkJbW92bmUJXGlycW5yLCAjSVJRX1RJTUVSMworCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19VQVJUX1RYCisJCW1vdm5lCVxpcnFuciwgI0lSUV9DT05UWAorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19QQ0lfQUJPUlQKKwkJbW92bmUJXGlycW5yLCAjSVJRX1BDSV9BQk9SVAorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19QQ0lfU0VSUgorCQltb3ZuZQlcaXJxbnIsICNJUlFfUENJX1NFUlIKKwkJYm5lCTEwMDFmCisKKwkJdHN0CVxpcnFzdGF0LCAjSVJRX01BU0tfRElTQ0FSRF9USU1FUgorCQltb3ZuZQlcaXJxbnIsICNJUlFfRElTQ0FSRF9USU1FUgorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19QQ0lfRFBFUlIKKwkJbW92bmUJXGlycW5yLCAjSVJRX1BDSV9EUEVSUgorCQlibmUJMTAwMWYKKworCQl0c3QJXGlycXN0YXQsICNJUlFfTUFTS19QQ0lfUEVSUgorCQltb3ZuZQlcaXJxbnIsICNJUlFfUENJX1BFUlIKKzEwMDE6CisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWYyMjAwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaGFyZHdhcmUuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgRUJTQS0yODUuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbWVtb3J5Lmg+CisKKyNpZmRlZiBDT05GSUdfQVJDSF9GT09UQlJJREdFCisvKiAgIFZpcnR1YWwgICAgICBQaHlzaWNhbAlTaXplCisgKiAweGZmODAwMDAwCTB4NDAwMDAwMDAJMU1CCVgtQnVzCisgKiAweGZmMDAwMDAwCTB4N2MwMDAwMDAJMU1CCVBDSSBJL08gc3BhY2UKKyAqIDB4ZmUwMDAwMDAJMHg0MjAwMDAwMAkxTUIJQ1NSCisgKiAweGZkMDAwMDAwCTB4NzgwMDAwMDAJMU1CCU91dGJvdW5kIHdyaXRlIGZsdXNoIChub3Qgc3VwcG9ydGVkKQorICogMHhmYzAwMDAwMAkweDc5MDAwMDAwCTFNQglQQ0kgSUFDSy9zcGVjaWFsIHNwYWNlCisgKiAweGZiMDAwMDAwCTB4N2EwMDAwMDAJMTZNQglQQ0kgQ29uZmlnIHR5cGUgMQorICogMHhmYTAwMDAwMAkweDdiMDAwMDAwCTE2TUIJUENJIENvbmZpZyB0eXBlIDAKKyAqIDB4ZjkwMDAwMDAJMHg1MDAwMDAwMAkxTUIJQ2FjaGUgZmx1c2gKKyAqIDB4ZjAwMDAwMDAJMHg4MDAwMDAwMAkxNk1CCUlTQSBtZW1vcnkKKyAqLworI2RlZmluZSBYQlVTX1NJWkUJCTB4MDAxMDAwMDAKKyNkZWZpbmUgWEJVU19CQVNFCQkweGZmODAwMDAwCisKKyNkZWZpbmUgUENJT19TSVpFCQkweDAwMTAwMDAwCisjZGVmaW5lIFBDSU9fQkFTRQkJMHhmZjAwMDAwMAorCisjZGVmaW5lIEFSTUNTUl9TSVpFCQkweDAwMTAwMDAwCisjZGVmaW5lIEFSTUNTUl9CQVNFCQkweGZlMDAwMDAwCisKKyNkZWZpbmUgV0ZMVVNIX1NJWkUJCTB4MDAxMDAwMDAKKyNkZWZpbmUgV0ZMVVNIX0JBU0UJCTB4ZmQwMDAwMDAKKworI2RlZmluZSBQQ0lJQUNLX1NJWkUJCTB4MDAxMDAwMDAKKyNkZWZpbmUgUENJSUFDS19CQVNFCQkweGZjMDAwMDAwCisKKyNkZWZpbmUgUENJQ0ZHMV9TSVpFCQkweDAxMDAwMDAwCisjZGVmaW5lIFBDSUNGRzFfQkFTRQkJMHhmYjAwMDAwMAorCisjZGVmaW5lIFBDSUNGRzBfU0laRQkJMHgwMTAwMDAwMAorI2RlZmluZSBQQ0lDRkcwX0JBU0UJCTB4ZmEwMDAwMDAKKworI2RlZmluZSBGTFVTSF9TSVpFCQkweDAwMTAwMDAwCisjZGVmaW5lIEZMVVNIX0JBU0UJCTB4ZjkwMDAwMDAKKworI2RlZmluZSBQQ0lNRU1fU0laRQkJMHgwMTAwMDAwMAorI2RlZmluZSBQQ0lNRU1fQkFTRQkJMHhmMDAwMDAwMAorCisjZWxpZiBkZWZpbmVkKENPTkZJR19BUkNIX0NPMjg1KQorLyoKKyAqIFRoaXMgaXMgdGhlIENPRUJTQTI4NSBjdXQtZG93biBtYXBwaW5nCisgKi8KKyNkZWZpbmUgUENJTUVNX1NJWkUJCTB4ODAwMDAwMDAKKyNkZWZpbmUgUENJTUVNX0JBU0UJCTB4ODAwMDAwMDAKKworI2RlZmluZSBGTFVTSF9TSVpFCQkweDAwMTAwMDAwCisjZGVmaW5lIEZMVVNIX0JBU0UJCTB4N2UwMDAwMDAKKworI2RlZmluZSBXRkxVU0hfU0laRQkJMHgwMTAwMDAwMAorI2RlZmluZSBXRkxVU0hfQkFTRQkJMHg3ZDAwMDAwMAorCisjZGVmaW5lIEFSTUNTUl9TSVpFCQkweDAwMTAwMDAwCisjZGVmaW5lIEFSTUNTUl9CQVNFCQkweDdjZjAwMDAwCisKKyNkZWZpbmUgWEJVU19TSVpFCQkweDAwMDIwMDAwCisjZGVmaW5lIFhCVVNfQkFTRQkJMHg3Y2VlMDAwMAorCisjZGVmaW5lIFBDSU9fU0laRQkJMHgwMDAxMDAwMAorI2RlZmluZSBQQ0lPX0JBU0UJCTB4N2NlZDAwMDAKKworI2Vsc2UKKworI2Vycm9yICJVbmRlZmluZWQgZm9vdGJyaWRnZSBhcmNoaXRlY3R1cmUiCisKKyNlbmRpZgorCisjZGVmaW5lIFhCVVNfTEVEUwkJKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKFhCVVNfQkFTRSArIDB4MTIwMDApKQorI2RlZmluZSBYQlVTX0xFRF9BTUJFUgkJKDEgPDwgMCkKKyNkZWZpbmUgWEJVU19MRURfR1JFRU4JCSgxIDw8IDEpCisjZGVmaW5lIFhCVVNfTEVEX1JFRAkJKDEgPDwgMikKKyNkZWZpbmUgWEJVU19MRURfVE9HR0xFCQkoMSA8PCA4KQorCisjZGVmaW5lIFhCVVNfU1dJVENICQkoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikoWEJVU19CQVNFICsgMHgxMjAwMCkpCisjZGVmaW5lIFhCVVNfU1dJVENIX1NXSVRDSAkoKCpYQlVTX1NXSVRDSCkgJiAxNSkKKyNkZWZpbmUgWEJVU19TV0lUQ0hfSjE3XzEzCSgoKlhCVVNfU1dJVENIKSAmICgxIDw8IDQpKQorI2RlZmluZSBYQlVTX1NXSVRDSF9KMTdfMTEJKCgqWEJVU19TV0lUQ0gpICYgKDEgPDwgNSkpCisjZGVmaW5lIFhCVVNfU1dJVENIX0oxN185CSgoKlhCVVNfU1dJVENIKSAmICgxIDw8IDYpKQorCisjZGVmaW5lIEZMVVNIX0JBU0VfUEhZUwkJMHg1MDAwMDAwMAorI2RlZmluZSBVTkNBQ0hFQUJMRV9BRERSCShBUk1DU1JfQkFTRSArIDB4MTA4KQorCisKKy8qIFBJQyBpcnEgY29udHJvbCAqLworI2RlZmluZSBQSUNfTE8JCQkweDIwCisjZGVmaW5lIFBJQ19NQVNLX0xPCQkweDIxCisjZGVmaW5lIFBJQ19ISQkJCTB4QTAKKyNkZWZpbmUgUElDX01BU0tfSEkJCTB4QTEKKworLyogR1BJTyBwaW5zICovCisjZGVmaW5lIEdQSU9fQ0NMSwkJMHg4MDAKKyNkZWZpbmUgR1BJT19EU0NMSwkJMHg0MDAKKyNkZWZpbmUgR1BJT19FMkNMSwkJMHgyMDAKKyNkZWZpbmUgR1BJT19JT0xPQUQJCTB4MTAwCisjZGVmaW5lIEdQSU9fUkVEX0xFRAkJMHgwODAKKyNkZWZpbmUgR1BJT19XRFRJTUVSCQkweDA0MAorI2RlZmluZSBHUElPX0RBVEEJCTB4MDIwCisjZGVmaW5lIEdQSU9fSU9DTEsJCTB4MDEwCisjZGVmaW5lIEdQSU9fRE9ORQkJMHgwMDgKKyNkZWZpbmUgR1BJT19GQU4JCTB4MDA0CisjZGVmaW5lIEdQSU9fR1JFRU5fTEVECQkweDAwMgorI2RlZmluZSBHUElPX1JFU0VUCQkweDAwMQorCisvKiBDUExEIHBpbnMgKi8KKyNkZWZpbmUgQ1BMRF9EU19FTkFCTEUJCTgKKyNkZWZpbmUgQ1BMRF83MTExX0RJU0FCTEUJNAorI2RlZmluZSBDUExEX1VOTVVURQkJMgorI2RlZmluZSBDUExEX0ZMQVNIX1dSX0VOQUJMRQkxCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBncGlvX21vZGlmeV9vcChpbnQgbWFzaywgaW50IHNldCk7CitleHRlcm4gdm9pZCBncGlvX21vZGlmeV9pbyhpbnQgbWFzaywgaW50IGluKTsKK2V4dGVybiBpbnQgIGdwaW9fcmVhZCh2b2lkKTsKK2V4dGVybiB2b2lkIGNwbGRfbW9kaWZ5KGludCBtYXNrLCBpbnQgc2V0KTsKKyNlbmRpZgorCisjZGVmaW5lIHBjaWJpb3NfYXNzaWduX2FsbF9idXNzZXMoKQkxCisKKyNkZWZpbmUgUENJQklPU19NSU5fSU8JCTB4MTAwMAorI2RlZmluZSBQQ0lCSU9TX01JTl9NRU0gCTB4ODEwMDAwMDAKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1NzZiMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaW8uaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTctMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBNb2RpZmljYXRpb25zOgorICogICAwNi0xMi0xOTk3CVJNSwlDcmVhdGVkLgorICogICAwNy0wNC0xOTk5CVJNSwlNYWpvciBjbGVhbnVwCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmCisKKy8qCisgKiBUcmFuc2xhdGlvbiBvZiB2YXJpb3VzIHJlZ2lvbiBhZGRyZXNzZXMgdG8gdmlydHVhbCBhZGRyZXNzZXMKKyAqLworI2RlZmluZSBfX2lvKGEpCQkJKCh2b2lkIF9faW9tZW0gKikoUENJT19CQVNFICsgKGEpKSkKKyNpZiAxCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKChhKSArIFBDSU1FTV9CQVNFKQorI2Vsc2UKKworc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKl9fX21lbV9wY2kodm9pZCBfX2lvbWVtICpwKQoreworCXVuc2lnbmVkIGxvbmcgYSA9ICh1bnNpZ25lZCBsb25nKXA7CisJQlVHX09OKGEgPD0gMHhjMDAwMDAwMCB8fCBhID49IDB4ZTAwMDAwMDApOworCXJldHVybiBwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqX19fbWVtX2lzYSh2b2lkIF9faW9tZW0gKnApCit7CisJdW5zaWduZWQgbG9uZyBhID0gKHVuc2lnbmVkIGxvbmcpcDsKKwlCVUdfT04oYSA+PSAxNioxMDQ4NTc2KTsKKwlyZXR1cm4gcCArIFBDSU1FTV9CQVNFOworfQorI2RlZmluZSBfX21lbV9wY2koYSkJCV9fX21lbV9wY2koYSkKKyNkZWZpbmUgX19tZW1faXNhKGEpCQlfX19tZW1faXNhKGEpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2lycXMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNzY2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L2lycXMuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9pcnFzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggUnVzc2VsbCBLaW5nCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggUGhpbCBCbHVuZGVsbAorICoKKyAqIENoYW5nZWxvZzoKKyAqICAyMC1KYW4tMTk5OAlSTUsJU3RhcnRlZCBtZXJnZSBvZiBFQlNBMjg2LCBDQVRTIGFuZCBOZXRXaW5kZXIKKyAqICAwMS1GZWItMTk5OQlQSkIJSVNBIElSUXMgc3RhcnQgYXQgMCBub3QgMTYKKyAqLworI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisKKyNkZWZpbmUgTlJfSVJRUwkJCTM2CisjZGVmaW5lIE5SX0RDMjEyODVfSVJRUwkJMTYKKworI2RlZmluZSBfSVNBX0lSUSh4KQkJKDAgKyAoeCkpCisjZGVmaW5lIF9JU0FfSU5SKHgpCQkoKHgpIC0gMCkKKyNkZWZpbmUgX0RDMjEyODVfSVJRKHgpCQkoMTYgKyAoeCkpCisjZGVmaW5lIF9EQzIxMjg1X0lOUih4KQkJKCh4KSAtIDE2KQorCisvKgorICogVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIGludGVycnVwdHMgdGhhdCB0aGUgMjEyODUKKyAqIGNhbiBnZW5lcmF0ZSBhbmQgd2UgaGFuZGxlLgorICovCisjZGVmaW5lIElSUV9DT05SWAkJX0RDMjEyODVfSVJRKDApCisjZGVmaW5lIElSUV9DT05UWAkJX0RDMjEyODVfSVJRKDEpCisjZGVmaW5lIElSUV9USU1FUjEJCV9EQzIxMjg1X0lSUSgyKQorI2RlZmluZSBJUlFfVElNRVIyCQlfREMyMTI4NV9JUlEoMykKKyNkZWZpbmUgSVJRX1RJTUVSMwkJX0RDMjEyODVfSVJRKDQpCisjZGVmaW5lIElSUV9JTjAJCQlfREMyMTI4NV9JUlEoNSkKKyNkZWZpbmUgSVJRX0lOMQkJCV9EQzIxMjg1X0lSUSg2KQorI2RlZmluZSBJUlFfSU4yCQkJX0RDMjEyODVfSVJRKDcpCisjZGVmaW5lIElSUV9JTjMJCQlfREMyMTI4NV9JUlEoOCkKKyNkZWZpbmUgSVJRX0RPT1JCRUxMSE9TVAlfREMyMTI4NV9JUlEoOSkKKyNkZWZpbmUgSVJRX0RNQTEJCV9EQzIxMjg1X0lSUSgxMCkKKyNkZWZpbmUgSVJRX0RNQTIJCV9EQzIxMjg1X0lSUSgxMSkKKyNkZWZpbmUgSVJRX1BDSQkJCV9EQzIxMjg1X0lSUSgxMikKKyNkZWZpbmUgSVJRX1NEUkFNUEFSSVRZCQlfREMyMTI4NV9JUlEoMTMpCisjZGVmaW5lIElSUV9JMk9JTlBPU1QJCV9EQzIxMjg1X0lSUSgxNCkKKyNkZWZpbmUgSVJRX1BDSV9BQk9SVAkJX0RDMjEyODVfSVJRKDE1KQorI2RlZmluZSBJUlFfUENJX1NFUlIJCV9EQzIxMjg1X0lSUSgxNikKKyNkZWZpbmUgSVJRX0RJU0NBUkRfVElNRVIJX0RDMjEyODVfSVJRKDE3KQorI2RlZmluZSBJUlFfUENJX0RQRVJSCQlfREMyMTI4NV9JUlEoMTgpCisjZGVmaW5lIElSUV9QQ0lfUEVSUgkJX0RDMjEyODVfSVJRKDE5KQorCisjZGVmaW5lIElSUV9JU0FfVElNRVIJCV9JU0FfSVJRKDApCisjZGVmaW5lIElSUV9JU0FfS0VZQk9BUkQJX0lTQV9JUlEoMSkKKyNkZWZpbmUgSVJRX0lTQV9DQVNDQURFCQlfSVNBX0lSUSgyKQorI2RlZmluZSBJUlFfSVNBX1VBUlQyCQlfSVNBX0lSUSgzKQorI2RlZmluZSBJUlFfSVNBX1VBUlQJCV9JU0FfSVJRKDQpCisjZGVmaW5lIElSUV9JU0FfRkxPUFBZCQlfSVNBX0lSUSg2KQorI2RlZmluZSBJUlFfSVNBX1BSSU5URVIJCV9JU0FfSVJRKDcpCisjZGVmaW5lIElSUV9JU0FfUlRDX0FMQVJNCV9JU0FfSVJRKDgpCisjZGVmaW5lIElSUV9JU0FfMgkJX0lTQV9JUlEoOSkKKyNkZWZpbmUgSVJRX0lTQV9QUzJNT1VTRQlfSVNBX0lSUSgxMikKKyNkZWZpbmUgSVJRX0lTQV9IQVJERElTSzEJX0lTQV9JUlEoMTQpCisjZGVmaW5lIElSUV9JU0FfSEFSRERJU0syCV9JU0FfSVJRKDE1KQorCisjZGVmaW5lIElSUV9NQVNLX1VBUlRfUlgJKDEgPDwgMikKKyNkZWZpbmUgSVJRX01BU0tfVUFSVF9UWAkoMSA8PCAzKQorI2RlZmluZSBJUlFfTUFTS19USU1FUjEJCSgxIDw8IDQpCisjZGVmaW5lIElSUV9NQVNLX1RJTUVSMgkJKDEgPDwgNSkKKyNkZWZpbmUgSVJRX01BU0tfVElNRVIzCQkoMSA8PCA2KQorI2RlZmluZSBJUlFfTUFTS19JTjAJCSgxIDw8IDgpCisjZGVmaW5lIElSUV9NQVNLX0lOMQkJKDEgPDwgOSkKKyNkZWZpbmUgSVJRX01BU0tfSU4yCQkoMSA8PCAxMCkKKyNkZWZpbmUgSVJRX01BU0tfSU4zCQkoMSA8PCAxMSkKKyNkZWZpbmUgSVJRX01BU0tfRE9PUkJFTExIT1NUCSgxIDw8IDE1KQorI2RlZmluZSBJUlFfTUFTS19ETUExCQkoMSA8PCAxNikKKyNkZWZpbmUgSVJRX01BU0tfRE1BMgkJKDEgPDwgMTcpCisjZGVmaW5lIElSUV9NQVNLX1BDSQkJKDEgPDwgMTgpCisjZGVmaW5lIElSUV9NQVNLX1NEUkFNUEFSSVRZCSgxIDw8IDI0KQorI2RlZmluZSBJUlFfTUFTS19JMk9JTlBPU1QJKDEgPDwgMjUpCisjZGVmaW5lIElSUV9NQVNLX1BDSV9BQk9SVAkoKDEgPDwgMjkpIHwgKDEgPDwgMzApKQorI2RlZmluZSBJUlFfTUFTS19QQ0lfU0VSUgkoMSA8PCAyMykKKyNkZWZpbmUgSVJRX01BU0tfRElTQ0FSRF9USU1FUgkoMSA8PCAyNykKKyNkZWZpbmUgSVJRX01BU0tfUENJX0RQRVJSCSgxIDw8IDI4KQorI2RlZmluZSBJUlFfTUFTS19QQ0lfUEVSUgkoMSA8PCAzMSkKKworLyoKKyAqIE5ldHdpbmRlciBpbnRlcnJ1cHQgYWxsb2NhdGlvbnMKKyAqLworI2RlZmluZSBJUlFfTkVUV0lOREVSX0VUSEVSMTAJSVJRX0lOMAorI2RlZmluZSBJUlFfTkVUV0lOREVSX0VUSEVSMTAwCUlSUV9JTjEKKyNkZWZpbmUgSVJRX05FVFdJTkRFUl9WSURDT01QCUlSUV9JTjIKKyNkZWZpbmUgSVJRX05FVFdJTkRFUl9QUzJNT1VTRQlfSVNBX0lSUSg1KQorI2RlZmluZSBJUlFfTkVUV0lOREVSX0lSCV9JU0FfSVJRKDYpCisjZGVmaW5lIElSUV9ORVRXSU5ERVJfQlVUVE9OCV9JU0FfSVJRKDEwKQorI2RlZmluZSBJUlFfTkVUV0lOREVSX1ZHQQlfSVNBX0lSUSgxMSkKKyNkZWZpbmUgSVJRX05FVFdJTkRFUl9TT1VORAlfSVNBX0lSUSgxMikKKworI3VuZGVmIFJUQ19JUlEKKyNkZWZpbmUgUlRDX0lSUQkJSVJRX0lTQV9SVENfQUxBUk0KKyNkZWZpbmUgSTgwNDJfS0JEX0lSUQlJUlFfSVNBX0tFWUJPQVJECisjZGVmaW5lIEk4MDQyX0FVWF9JUlEJKG1hY2hpbmVfaXNfbmV0d2luZGVyKCkgPyBJUlFfTkVUV0lOREVSX1BTMk1PVVNFIDogSVJRX0lTQV9QUzJNT1VTRSkKKyNkZWZpbmUgSVJRX0ZMT1BQWURJU0sJSVJRX0lTQV9GTE9QUFkKKworI2RlZmluZSBpcnFfY2Fub25pY2FsaXplKF9pKQkoKChfaSkgPT0gSVJRX0lTQV9DQVNDQURFKSA/IElSUV9JU0FfMiA6IF9pKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0NjZmOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvbWVtb3J5LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L21lbW9yeS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgIDIwLU9jdC0xOTk2IFJNSwlDcmVhdGVkCisgKiAgIDMxLURlYy0xOTk3IFJNSwlGaXhlZCBkZWZpbml0aW9ucyB0byByZWR1Y2Ugd2FybmluZ3MuCisgKiAgIDE3LU1heS0xOTk4IERBRwlBZGRlZCBfX3ZpcnRfdG9fYnVzIGFuZCBfX2J1c190b192aXJ0IGZ1bmN0aW9ucy4KKyAqICAgMjEtTm92LTE5OTggUk1LCUNoYW5nZWQgX192aXJ0X3RvX2J1cyBhbmQgX19idXNfdG9fdmlydCB0byBtYWNyb3MuCisgKiAgIDIxLU1hci0xOTk5IFJNSwlBZGRlZCBQQUdFX09GRlNFVCBmb3IgY28yODUgYXJjaGl0ZWN0dXJlLgorICoJCQlSZW5hbWVkIHRvIG1lbW9yeS5oCisgKgkJCU1vdmVkIFBBR0VfT0ZGU0VUIGFuZCBUQVNLX1NJWkUgaGVyZQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19GT09UQlJJREdFX0FERElOKQorLyoKKyAqIElmIHdlIG1heSBiZSB1c2luZyBhZGQtaW4gZm9vdGJyaWRnZSBtb2RlLCB0aGVuIHdlIG11c3QKKyAqIHVzZSB0aGUgb3V0LW9mLWxpbmUgdHJhbnNsYXRpb24gdGhhdCBtYWtlcyB1c2Ugb2YgdGhlCisgKiBQQ0kgQkFSCisgKi8KKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdW5zaWduZWQgbG9uZyBfX3ZpcnRfdG9fYnVzKHVuc2lnbmVkIGxvbmcpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19idXNfdG9fdmlydCh1bnNpZ25lZCBsb25nKTsKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKENPTkZJR19GT09UQlJJREdFX0hPU1QpCisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQkoKHgpIC0gMHhlMDAwMDAwMCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkoKHgpICsgMHhlMDAwMDAwMCkKKworI2Vsc2UKKworI2Vycm9yICJVbmRlZmluZWQgZm9vdGJyaWRnZSBtb2RlIgorCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfRk9PVEJSSURHRSkKKworLyogVGFzayBzaXplIGFuZCBwYWdlIG9mZnNldCBhdCAzR0IgKi8KKyNkZWZpbmUgVEFTS19TSVpFCQkoMHhiZjAwMDAwMFVMKQorI2RlZmluZSBQQUdFX09GRlNFVAkJKDB4YzAwMDAwMDBVTCkKKworI2VsaWYgZGVmaW5lZChDT05GSUdfQVJDSF9DTzI4NSkKKworLyogVGFzayBzaXplIGFuZCBwYWdlIG9mZnNldCBhdCAxLjVHQiAqLworI2RlZmluZSBUQVNLX1NJWkUJCSgweDVmMDAwMDAwVUwpCisjZGVmaW5lIFBBR0VfT0ZGU0VUCQkoMHg2MDAwMDAwMFVMKQorCisjZWxzZQorCisjZXJyb3IgIlVuZGVmaW5lZCBmb290YnJpZGdlIGFyY2hpdGVjdHVyZSIKKworI2VuZGlmCisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkJKDB4MDAwMDAwMDBVTCkKKworLyoKKyAqIFRoaXMgZGVjaWRlcyB3aGVyZSB0aGUga2VybmVsIHdpbGwgc2VhcmNoIGZvciBhIGZyZWUgY2h1bmsgb2Ygdm0KKyAqIHNwYWNlIGR1cmluZyBtbWFwJ3MuCisgKi8KKyNkZWZpbmUgVEFTS19VTk1BUFBFRF9CQVNFICgoVEFTS19TSVpFICsgMHgwMTAwMDAwMCkgLyAzKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODI3MTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9wYXJhbS5oCkBAIC0wLDAgKzEsMyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3BhcmFtLmgKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5MWM2OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvc3lzdGVtLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3N5c3RlbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2RlYzIxMjg1Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2xlZHMuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWlmIChtb2RlID09ICdzJykgeworCQkvKgorCQkgKiBKdW1wIGludG8gdGhlIFJPTQorCQkgKi8KKwkJY3B1X3Jlc2V0KDB4NDEwMDAwMDApOworCX0gZWxzZSB7CisJCWlmIChtYWNoaW5lX2lzX25ldHdpbmRlcigpKSB7CisJCQkvKiBvcGVuIHVwIHRoZSBTdXBlcklPIGNoaXAKKwkJCSAqLworCQkJb3V0YigweDg3LCAweDM3MCk7CisJCQlvdXRiKDB4ODcsIDB4MzcwKTsKKworCQkJLyogYXV4IGZ1bmN0aW9uIGdyb3VwIDEgKGxvZ2ljYWwgZGV2aWNlIDcpCisJCQkgKi8KKwkJCW91dGIoMHgwNywgMHgzNzApOworCQkJb3V0YigweDA3LCAweDM3MSk7CisKKwkJCS8qIHNldCBHUDE2IGZvciBXRC1USU1FUiBvdXRwdXQKKwkJCSAqLworCQkJb3V0YigweGU2LCAweDM3MCk7CisJCQlvdXRiKDB4MDAsIDB4MzcxKTsKKworCQkJLyogc2V0IGEgUkVEIExFRCBhbmQgdG9nZ2xlIFdEX1RJTUVSIGZvciByZWJvb3RpbmcKKwkJCSAqLworCQkJb3V0YigweGM0LCAweDMzOCk7CisJCX0gZWxzZSB7CisJCQkvKiAKKwkJCSAqIEZvcmNlIHRoZSB3YXRjaGRvZyB0byBkbyBhIENQVSByZXNldC4KKwkJCSAqCisJCQkgKiBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSB3YXRjaGRvZyBpcyBkaXNhYmxlZAorCQkJICogKHNvIHdlIGNhbiBjaGFuZ2UgdGhlIHRpbWVyIHJlZ2lzdGVycykgd2UgZmlyc3QKKwkJCSAqIGVuYWJsZSB0aGUgdGltZXIgdG8gYXV0b3JlbG9hZCBpdHNlbGYuICBOZXh0LCB0aGUKKwkJCSAqIHRpbWVyIGludGVydmFsIGlzIHNldCByZWFsbHkgc2hvcnQgYW5kIGFueQorCQkJICogY3VycmVudCBpbnRlcnJ1cHQgcmVxdWVzdCBpcyBjbGVhcmVkIChzbyB3ZSBjYW4KKwkJCSAqIHNlZSBhbiBlZGdlIHRyYW5zaXRpb24pLiAgRmluYWxseSwgVElNRVI0IGlzCisJCQkgKiBlbmFibGVkIGFzIHRoZSB3YXRjaGRvZy4KKwkJCSAqLworCQkJKkNTUl9TQTExMF9DTlRMICY9IH4oMSA8PCAxMyk7CisJCQkqQ1NSX1RJTUVSNF9DTlRMID0gVElNRVJfQ05UTF9FTkFCTEUgfAorCQkJCQkgICBUSU1FUl9DTlRMX0FVVE9SRUxPQUQgfAorCQkJCQkgICBUSU1FUl9DTlRMX0RJVjE2OworCQkJKkNTUl9USU1FUjRfTE9BRCA9IDB4MjsKKwkJCSpDU1JfVElNRVI0X0NMUiAgPSAwOworCQkJKkNTUl9TQTExMF9DTlRMIHw9ICgxIDw8IDEzKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVic2EyODUvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjYwYjM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS90aW1leC5oCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS90aW1leC5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBFQlNBMjg1IGFyY2hpdGVjdHVyZSB0aW1leCBzcGVjaWZpY2F0aW9ucworICovCisKKy8qCisgKiBXZSBhc3N1bWUgYSBjb25zdGFudCBoZXJlOyB0aGlzIHNhdGlzZmllcyB0aGUgbWF0aHMgaW4gbGludXgvdGltZXguaAorICogYW5kIGxpbnV4L3RpbWUuaC4gIENMT0NLX1RJQ0tfUkFURSBpcyBhY3R1YWxseSBzeXN0ZW0gZGVwZW5kZW50LCBidXQKKyAqIHRoaXMgbXVzdCBiZSBhIGNvbnN0YW50LgorICovCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJKDUwMDAwMDAwLzE2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmZkODRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS91bmNvbXByZXNzLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3VuY29tcHJlc3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KKworLyoKKyAqIE5vdGUhIFRoaXMgY291bGQgY2F1c2UgcHJvYmxlbXMgb24gdGhlIE5ldFdpbmRlcgorICovCisjZGVmaW5lIERDMjEyODVfQkFTRSAoKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKTB4NDIwMDAxNjApCisjZGVmaW5lIFNFUjBfQkFTRSAgICAoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikweDdjMDAwM2Y4KQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCWlmIChtYWNoaW5lX2lzX25ldHdpbmRlcigpKSB7CisJCXdoaWxlICgoU0VSMF9CQVNFWzVdICYgMHg2MCkgIT0gMHg2MCk7CisJCVNFUjBfQkFTRVswXSA9IGM7CisJfSBlbHNlIHsKKwkJd2hpbGUgKERDMjEyODVfQkFTRVs2XSAmIDgpOworCQlEQzIxMjg1X0JBU0VbMF0gPSBjOworCX0KK30KKworLyoKKyAqIFRoaXMgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZQorICovCitzdGF0aWMgdm9pZCBwdXRzdHIoY29uc3QgY2hhciAqcykKK3sKKwl3aGlsZSAoKnMpIHsKKwkJcHV0Yygqcyk7CisJCWlmICgqcyA9PSAnXG4nKQorCQkJcHV0YygnXHInKTsKKwkJcysrOworCX0KK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWY3MDVhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS92bWFsbG9jLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMjg1L3ZtYWxsb2MuaAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorCisjaWZkZWYgQ09ORklHX0FSQ0hfRk9PVEJSSURHRQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDMwMDAwMDAwKQorI2Vsc2UKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKFBBR0VfT0ZGU0VUICsgMHgyMDAwMDAwMCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQxMWM1MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSw0MSBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworI2luY2x1ZGUgPGFzbS9hcmNoL2V4Y2FsaWJ1ci5oPgorI2RlZmluZSBVQVJUMDBfVFlQRQorI2luY2x1ZGUgPGFzbS9hcmNoL3VhcnQwMC5oPgorCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCWxkcglccngsID1FWENfVUFSVDAwX0JBU0UJQCBwaHlzaWNhbCBiYXNlIGFkZHJlc3MKKwkJb3JybmUJXHJ4LCBccngsICMweGZmMDAwMDAwCUAgdmlydHVhbCBiYXNlCisJCW9ycm5lCVxyeCwgXHJ4LCAjMHgwMGYwMDAwMAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHIJXHJkLCBbXHJ4LCAjVUFSVF9URCgwKV0KKwkJLmVuZG0KKworCQkubWFjcm8Jd2FpdHVhcnQscmQscngKKzEwMDE6CQlsZHIJXHJkLCBbXHJ4LCAjVUFSVF9UU1IoMCldCisJCWFuZCAJXHJkLCBccmQsICAjVUFSVF9UU1JfVFhfTEVWRUxfTVNLCisJCWNtcAlccmQsICMxNQorCQliZXEJMTAwMWIKKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDE6CQlsZHIJXHJkLCBbXHJ4LCAjVUFSVF9UU1IoMCldCisJCWFuZHMgCVxyZCwgXHJkLCAgI1VBUlRfVFNSX1RYX0xFVkVMX01TSworCQlibmUJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5NzczNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2RtYS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2FtZWxvdC9kbWEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGZmZmZmZmZmCisKKyNkZWZpbmUgTUFYX0RNQV9DSEFOTkVMUwkwCisKKyNlbmRpZiAvKiBfQVNNX0FSQ0hfRE1BX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2YWUwOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIGVweGExMGRiIHBsYXRmb3JtCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKyNpbmNsdWRlIDxhc20vYXJjaC9wbGF0Zm9ybS5oPgorI3VuZGVmIElSUV9NT0RFIC8qIHNhbWUgbmFtZSBkZWZpbmVkIGluIGFzbS9wcm9jL3B0cmFjZS5oICovCisjaW5jbHVkZSA8YXNtL2FyY2gvaW50X2N0cmwwMC5oPgorCisJCS5tYWNybwlkaXNhYmxlX2ZpcQorCQkuZW5kbQorCisJCS5tYWNybwlnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKworCQlsZHIJXGlycXN0YXQsID1JTlRfSUQoSU9fQUREUkVTUyhFWENfSU5UX0NUUkwwMF9CQVNFKSkKKwkJbGRyCVxpcnFucixbXGlycXN0YXRdCisJCWNtcAlcaXJxbnIsIzAKKwkJc3VibmUJXGlycW5yLFxpcnFuciwjMQorCisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2V0aGVyMDAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2V0aGVyMDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzM3YjhhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZXRoZXIwMC5oCkBAIC0wLDAgKzEsNDgyIEBACisjaWZuZGVmIF9fRVRIRVIwMF9ICisjZGVmaW5lIF9fRVRIRVIwMF9ICisKKworCisvKgorICogUmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRoZSBFdGhlcm5ldCBNQUMKKyAqLworCisvKgorICogQ29weXJpZ2h0IChjKSBBbHRlcmEgQ29ycG9yYXRpb24gMjAwMC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworLyoKKyoJU3RydWN0dXJlcyBmb3IgdGhlIERNQSBjb250cm9sbGVyCisqLwordHlwZWRlZiBzdHJ1Y3QgZmRhX2Rlc2MKKwl7CisJc3RydWN0IGZkYV9kZXNjICoJRkROZXh0OworCWxvbmcJCQkJRkRTeXN0ZW07CisJbG9uZwkJCQlGRFN0YXQ7CisJc2hvcnQJCQkJRkRMZW5ndGg7CisJc2hvcnQJCQkJRkRDdGw7CisJfUZEQV9ERVNDOworCit0eXBlZGVmIHN0cnVjdCBidWZfZGVzYworCXsKKwljaGFyICoJQnVmZkRhdGE7CisJc2hvcnQJQnVmZkxlbmd0aDsKKwljaGFyCUJEU3RhdDsKKwljaGFyCUJEQ3RsOworCX1CVUZfREVTQzsKKworLyoKKyoJQ29udHJvbCBtYXNrcyBmb3IgdGhlIERNQSBjb250cm9sbGVyCisqLworI2RlZmluZSBGRENUTF9CRENPVU5UX01TSwkJCQkJCSgweDFGKQorI2RlZmluZSBGRENUTF9CRENPVU5UX09GU1QJCQkJCQkoMCkKKyNkZWZpbmUgRkRDVExfRlJNT1BUX01TSwkJCQkJCSgweDdDMDApCisjZGVmaW5lIEZEQ1RMX0ZSTU9QVF9PRlNUCQkJCQkJKDEwKQorI2RlZmluZQlGRENUTF9DT1dOU0ZEX01TSwkJCQkJCSgweDgwMDApCisjZGVmaW5lCUZEQ1RMX0NPV05TRkRfT0ZTVAkJCQkJCSgxNSkKKworI2RlZmluZSBCRENUTF9SWEJEU0VRTl9NU0sJCQkJCQkoMHg3RikKKyNkZWZpbmUgQkRDVExfUlhCRFNFUU5fT0ZTVAkJCQkJCSgwKQorI2RlZmluZQlCRENUTF9DT1dOU0JEX01TSwkJCQkJCSgweDgwKQorI2RlZmluZQlCRENUTF9DT1dOU0JEX09GU1QJCQkJCQkoNykKKworI2RlZmluZSBGRE5FWFRfRU9MX01TSwkJCQkJCQkoMHgxKQorI2RlZmluZSBGRE5FWFRfRU9MX09GU1QJCQkJCQkJKDApCisjZGVmaW5lIEZETkVYVF9FT0xfUE9JTlRFUl9NU0sJCQkJCSgweEZGRkZGRkYwKQorI2RlZmluZSBGRE5FWFRfRU9MX1BPSU5URVJfT0ZTVAkJCQkJKDQpCisKKyNkZWZpbmUgRVRIRVJfQVJDX1NJWkUgICAgICAgICAoMjEpCisKKy8qCisqCVJlZ2lzdGVyIGRlZmluaXRpb25zIGFuZCBtYXNrcworKi8KKyNkZWZpbmUgRVRIRVJfRE1BX0NUTChiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxMDApKQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX0RNQlVSU1RfT0ZTVAkJCQkoMikKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9ETUJVUlNUX01TSwkJCQkoMHgxRkMpCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfUE9XUk1HTU5UX09GU1QJCQkoMTEpCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfUE9XUk1HTU5UX01TSwkJCQkoMHgxMDAwKQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX1RYQklHRV9PRlNUCQkJCSgxNCkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9UWEJJR0VfTVNLCQkJCSgweDQwMDApCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfUlhCSUdFX09GU1QJCQkJKDE1KQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX1JYQklHRV9NU0sJCQkJKDB4ODAwMCkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9UWFdBS0VVUF9PRlNUCQkJCSgxNikKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9UWFdBS0VVUF9NU0sJCQkJKDB4MTAwMDApCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfU1dJTlRSRVFfT0ZTVAkJCQkoMTcpCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfU1dJTlRSRVFfTVNLCQkJCSgweDIwMDAwKQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX0lOVE1BU0tfT0ZTVAkJCQkoMTgpCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfSU5UTUFTS19NU0sJCQkJKDB4NDAwMDApCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfTTY2RU5TVEFUX09GU1QJCQkoMTkpCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfTTY2RU5TVEFUX01TSwkJCQkoMHg4MDAwMCkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9STVRYSU5JVF9PRlNUCQkJCSgyMCkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9STVRYSU5JVF9NU0sJCQkJKDB4MTAwMDAwKQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX1JNUlhJTklUX09GU1QJCQkJKDIxKQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX1JNUlhJTklUX01TSwkJCQkoMHgyMDAwMDApCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfUlhBTElHTl9PRlNUCQkJCSgyMikKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9SWEFMSUdOX01TSwkJCQkoMHhDMDAwMDApCisjZGVmaW5lIEVUSEVSX0RNQV9DVExfUk1TV1JRX09GU1QJCQkJKDI0KQorI2RlZmluZSBFVEhFUl9ETUFfQ1RMX1JNU1dSUV9NU0sJCQkJKDB4MTAwMDAwMCkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9STUVNQkFOS19PRlNUCQkJCSgyNSkKKyNkZWZpbmUgRVRIRVJfRE1BX0NUTF9STUVNQkFOS19NU0sJCQkJKDB4MjAwMDAwMCkKKworI2RlZmluZSBFVEhFUl9UWEZSTVBUUihiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxMDQpKQorCisjZGVmaW5lIEVUSEVSX1RYVEhSU0goYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MzA4KSkKKworI2RlZmluZSBFVEhFUl9UWFBPTExDVFIoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MzBjKSkKKworI2RlZmluZQlFVEhFUl9CTEZSTVBUUihiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxMTApKQorI2RlZmluZSBFVEhFUl9CTEZGUk1QVFJfRU9MX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX0JMRkZSTVBUUl9FT0xfTVNLCQkJCQkoMHgxKQorI2RlZmluZSBFVEhFUl9CTEZGUk1QVFJfQUREUkVTU19PRlNUCQkJKDQpCisjZGVmaW5lIEVUSEVSX0JMRkZSTVBUUl9BRERSRVNTX01TSwkJCQkoMHhGRkZGRkZGMCkKKworI2RlZmluZSBFVEhFUl9SWEZSQUdTSVpFKGJhc2UpCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MTE0KSkKKyNkZWZpbmUJRVRIRVJfUlhGUkFHU0laRV9NSU5GUkFHX09GU1QJCQkoMikKKyNkZWZpbmUJRVRIRVJfUlhGUkFHU0laRV9NSU5GUkFHX01TSwkJCSgweEZGQykKKyNkZWZpbmUJRVRIRVJfUlhGUkFHU0laRV9FTlBBQ0tfT0ZTVAkJCSgxNSkKKyNkZWZpbmUJRVRIRVJfUlhGUkFHU0laRV9FTlBBQ0tfTVNLCQkJCSgweDgwMDApCisKKyNkZWZpbmUgRVRIRVJfSU5UX0VOKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDExOCkpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9GREFFWEVOX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9GREFFWEVOX01TSwkJCQkoMHgxKQorI2RlZmluZSBFVEhFUl9JTlRfRU5fQkxFWEVOX09GU1QJCQkJKDEpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9CTEVYTl9NU0sJCQkJCSgweDIpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9TVEFSR0FCVEVOX09GU1QJCQkoMikKKyNkZWZpbmUgRVRIRVJfSU5UX0VOX1NUQVJHQUJURU5fTVNLCQkJCSgweDQpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9SVEFSR0FCVEVOX09GU1QJCQkoMykKKyNkZWZpbmUgRVRIRVJfSU5UX0VOX1JUQVJHQUJURU5fTVNLCQkJCSgweDgpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9STUFTQUJURU5fT0ZTVAkJCQkoNCkKKyNkZWZpbmUgRVRIRVJfSU5UX0VOX1JNQVNBQlRFTl9NU0sJCQkJKDB4MTApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9TU1lTRVJSRU5fT0ZTVAkJCQkoNSkKKyNkZWZpbmUgRVRIRVJfSU5UX0VOX1NTWVNFUlJFTl9NU0sJCQkJKDB4MjApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9EUEFSRVJSRU5fT0ZTVAkJCQkoNikKKyNkZWZpbmUgRVRIRVJfSU5UX0VOX0RQQVJFUlJFTl9NU0sJCQkJKDB4NDApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9FQVJOT1RFTl9PRlNUCQkJCSg3KQorI2RlZmluZSBFVEhFUl9JTlRfRU5fRUFSTk9URU5fTVNLCQkJCSgweDgwKQorI2RlZmluZSBFVEhFUl9JTlRfRU5fRFBBUkRFTl9PRlNUCQkJCSg4KQorI2RlZmluZSBFVEhFUl9JTlRfRU5fRFBBUkRFTl9NU0sJCQkJKDB4MTAwKQorI2RlZmluZSBFVEhFUl9JTlRfRU5fRE1QQVJFUlJFTl9PRlNUCQkJKDkpCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9ETVBBUkVSUkVOX01TSwkJCQkoMHgyMDApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9UWENUTENNUEVOX09GU1QJCQkoMTApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9UWENUTENNUEVOX01TSwkJCQkoMHg0MDApCisjZGVmaW5lIEVUSEVSX0lOVF9FTl9OUkFCVEVOX09GU1QJCQkJKDExKQorI2RlZmluZSBFVEhFUl9JTlRfRU5fTlJBQlRFTl9NU0sJCQkJKDB4ODAwKQorCisjZGVmaW5lCUVUSEVSX0ZEQV9CQVMoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MTFDKSkKKyNkZWZpbmUgRVRIRVJfRkRBX0JBU19BRERSRVNTX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX0ZEQV9CQVNfQUREUkVTU19NU0sJCQkJKDB4RkZGRkZGRjApCisKKyNkZWZpbmUgRVRIRVJfRkRBX0xJTShiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxMjApKQorI2RlZmluZSBFVEhFUl9GREFfTElNX0NPVU5UX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX0ZEQV9MSU1fQ09VTlRfTVNLCQkJCQkoMHhGRkYwKQorCisjZGVmaW5lIEVUSEVSX0lOVF9TUkMoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MTI0KSkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRNQUNUWF9PRlNUCQkJCSgwKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVE1BQ1RYX01TSwkJCQkoMHgxKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVE1BQ1JYX09GU1QJCQkJKDEpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UTUFDUlhfTVNLCQkJCSgweDIpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UU0JVU19PRlNUCQkJCSgyKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVFNCVVNfTVNLCQkJCSgweDQpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5URkRBRVhfT0ZTVAkJCQkoMykKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRGREFFWF9NU0sJCQkJKDB4OCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRCTEVYX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UQkxFWF9NU0sJCQkJKDB4MTApCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfU1dJTlRfT0ZTVAkJCQkoNSkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19TV0lOVF9NU0sJCQkJCSgweDIwKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVEVBUk5PVF9PRlNUCQkJKDYpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5URUFSTk9UX01TSwkJCQkoMHg0MCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19ETVBBUkVSUl9PRlNUCQkJCSg3KQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0RNUEFSRVJSX01TSwkJCQkoMHg4MCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRFWEJEX09GU1QJCQkJKDgpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5URVhCRF9NU0sJCQkJKDB4MTAwKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVFRYQ1RMQ01QX09GU1QJCQkoOSkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRUWENUTENNUF9NU0sJCQkoMHgyMDApCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UTlJBQlRfT0ZTVAkJCQkoMTApCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UTlJBQlRfTVNLCQkJCSgweDQwMCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19GREFFWF9PRlNUCQkJCSgxMSkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19GREFFWF9NU0sJCQkJCSgweDgwMCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19CTEVYX09GU1QJCQkJCSgxMikKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19CTEVYX01TSwkJCQkJKDB4MTAwMCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19ETVBBUkVSUlNUQVRfT0ZTVAkJCSgxMykKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19ETVBBUkVSUlNUQVRfTVNLCQkJKDB4MjAwMCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19OUkFCVF9PRlNUCQkJCSgxNCkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19OUkFCVF9NU0sJCQkJCSgweDQwMDApCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UTElOS19PRlNUCQkJCSgxNSkKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRMSU5LX01TSwkJCQkoMHg4MDAwKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVEVYREVGRVJfT0ZTVAkJCSgxNikKKyNkZWZpbmUgRVRIRVJfSU5UX1NSQ19JTlRFWERFRkVSX01TSwkJCSgweDEwMDAwKQorI2RlZmluZSBFVEhFUl9JTlRfU1JDX0lOVFJNT05fT0ZTVAkJCQkoMTcpCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSU5UUk1PTl9NU0sJCQkJKDB4MjAwMDApCisjZGVmaW5lIEVUSEVSX0lOVF9TUkNfSVJRX01TSwkJCQkJKDB4ODNGRikKKworI2RlZmluZSBFVEhFUl9QQVVTRUNOVChiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHg0MCkpCisjZGVmaW5lIEVUSEVSX1BBVVNFQ05UX0NPVU5UX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX1BBVVNFQ05UX0NPVU5UX01TSwkJCQkoMHhGRkZGKQorCisjZGVmaW5lIEVUSEVSX1JFTVBBVUNOVChiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHg0NCkpCisjZGVmaW5lIEVUSEVSX1JFTVBBVUNOVF9DT1VOVF9PRlNUCQkJCSgwKQorI2RlZmluZSBFVEhFUl9SRU1QQVVDTlRfQ09VTlRfTVNLCQkJCSgweEZGRkYpCisKKyNkZWZpbmUgRVRIRVJfVFhDT05GUk1TVEFUKGJhc2UpCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MzQ4KSkKKyNkZWZpbmUgRVRIRVJfVFhDT05GUk1TVEFUX1RTX1NUQVRfVkFMVUVfT0ZTVAkoMCkKKyNkZWZpbmUgRVRIRVJfVFhDT05GUk1TVEFUX1RTX1NUQVRfVkFMVUVfTVNLCSgweDNGRkZGRikKKworI2RlZmluZSBFVEhFUl9NQUNfQ1RMKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAwKSkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9IQUxUUkVRX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX01BQ19DVExfSEFMVFJFUV9NU0sJCQkJKDB4MSkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9IQUxUSU1NX09GU1QJCQkJKDEpCisjZGVmaW5lIEVUSEVSX01BQ19DVExfSEFMVElNTV9NU0sJCQkJKDB4MikKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9SRVNFVF9PRlNUCQkJCSgyKQorI2RlZmluZSBFVEhFUl9NQUNfQ1RMX1JFU0VUX01TSwkJCQkJKDB4NCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9GVUxMRFVQX09GU1QJCQkJKDMpCisjZGVmaW5lIEVUSEVSX01BQ19DVExfRlVMTERVUF9NU0sJCQkJKDB4OCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9NQUNMT09QX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX01BQ19DVExfTUFDTE9PUF9NU0sJCQkJKDB4MTApCisjZGVmaW5lIEVUSEVSX01BQ19DVExfQ09OTl9PRlNUCQkJCQkoNSkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9DT05OX01TSwkJCQkJKDB4NjApCisjZGVmaW5lIEVUSEVSX01BQ19DVExfTE9PUDEwX09GU1QJCQkJKDcpCisjZGVmaW5lIEVUSEVSX01BQ19DVExfTE9PUDEwX01TSwkJCQkoMHg4MCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9MTktDSEdfT0ZTVAkJCQkoOCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9MTktDSEdfTVNLCQkJCSgweDEwMCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9NSVNTUk9MTF9PRlNUCQkJCSgxMCkKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9NSVNTUk9MTF9NU0sJCQkJKDB4NDAwKQorI2RlZmluZSBFVEhFUl9NQUNfQ1RMX0VOTUlTU1JPTExfT0ZTVAkJCSgxMykKKyNkZWZpbmUgRVRIRVJfTUFDX0NUTF9FTk1JU1NST0xMX01TSwkJCSgweDIwMDApCisjZGVmaW5lIEVUSEVSX01BQ19DVExfTElOSzEwX09GU1QJCQkJKDE1KQorI2RlZmluZSBFVEhFUl9NQUNfQ1RMX0xJTksxMF9NU0sJCQkJKDB4ODAwMCkKKworI2RlZmluZSBFVEhFUl9BUkNfQ1RMKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDQpKQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX1NUQVRJT05BQ0NfT0ZTVAkJCSgwKQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX1NUQVRJT05BQ0NfTVNLCQkJKDB4MSkKKyNkZWZpbmUJRVRIRVJfQVJDX0NUTF9HUk9VUEFDQ19PRlNUCQkJCSgxKQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX0dST1VQQUNDX01TSwkJCQkoMHgyKQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX0JST0FEQUNDX09GU1QJCQkJKDIpCisjZGVmaW5lCUVUSEVSX0FSQ19DVExfQlJPQURBQ0NfTVNLCQkJCSgweDQpCisjZGVmaW5lCUVUSEVSX0FSQ19DVExfTkVHQVJDX09GU1QJCQkJKDMpCisjZGVmaW5lCUVUSEVSX0FSQ19DVExfTkVHQVJDX01TSwkJCQkoMHg4KQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX0NPTVBFTl9PRlNUCQkJCSg0KQorI2RlZmluZQlFVEhFUl9BUkNfQ1RMX0NPTVBFTl9NU0sJCQkJKDB4MTApCisKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDgpKQorI2RlZmluZSBFVEhFUl9UWF9DVExfVFhFTl9PRlNUCQkJCQkoMCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX1RYRU5fTVNLCQkJCQkoMHgxKQorI2RlZmluZSBFVEhFUl9UWF9DVExfVFhIQUxUX09GU1QJCQkJKDEpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9UWEhBTFRfTVNLCQkJCQkoMHgyKQorI2RlZmluZSBFVEhFUl9UWF9DVExfTk9QQURfT0ZTVAkJCQkJKDIpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9OT1BBRF9NU0sJCQkJCSgweDQpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9OT0NSQ19PRlNUCQkJCQkoMykKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX05PQ1JDX01TSwkJCQkJKDB4OCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0ZCQUNLX09GU1QJCQkJCSg0KQorI2RlZmluZSBFVEhFUl9UWF9DVExfRkJBQ0tfTVNLCQkJCQkoMHgxMCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX05PRVhERUZfT0ZTVAkJCQkoNSkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX05PRVhERUZfTVNLCQkJCSgweDIwKQorI2RlZmluZSBFVEhFUl9UWF9DVExfU0RQQVVTRV9PRlNUCQkJCSg2KQorI2RlZmluZSBFVEhFUl9UWF9DVExfU0RQQVVTRV9NU0sJCQkJKDB4NDApCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9NSUkxMF9PRlNUCQkJCQkoNykKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX01JSTEwX01TSwkJCQkJKDB4ODApCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTlVOREVSX09GU1QJCQkJKDgpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTlVOREVSX01TSwkJCQkoMHgxMDApCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTkVYREVGRVJfT0ZTVAkJCQkoOSkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0VORVhERUZFUl9NU0sJCQkJKDB4MjAwKQorI2RlZmluZSBFVEhFUl9UWF9DVExfRU5MQ0FSUl9PRlNUCQkJCSgxMCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0VOTENBUlJfTVNLCQkJCSgweDQwMCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0VORVhDT0xMX09GU1QJCQkJKDExKQorI2RlZmluZSBFVEhFUl9UWF9DVExfRU5FWENPTExfTVNLCQkJCSgweDgwMCkKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0VOTEFURUNPTExfT0ZTVAkJCQkoMTIpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTkxBVEVDT0xMX01TSwkJCQkoMHgxMDAwKQorI2RlZmluZSBFVEhFUl9UWF9DVExfRU5UWFBBUl9PRlNUCQkJCSgxMykKKyNkZWZpbmUgRVRIRVJfVFhfQ1RMX0VOVFhQQVJfTVNLCQkJCSgweDIwMDApCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTkNPTVBfT0ZTVAkJCQkoMTQpCisjZGVmaW5lIEVUSEVSX1RYX0NUTF9FTkNPTVBfTVNLCQkJCQkoMHg0MDAwKQorCisjZGVmaW5lIEVUSEVSX1RYX1NUQVQoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4YykpCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVFhDT0xMX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVFhDT0xMX01TSwkJCQkoMHhGKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX0VYQ09MTF9PRlNUCQkJCSg0KQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX0VYQ09MTF9NU0sJCQkJKDB4MTApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVFhERUZFUl9PRlNUCQkJCSg1KQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1RYREVGRVJfTVNLCQkJCSgweDIwKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1BBVVNFRF9PRlNUCQkJCSg2KQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1BBVVNFRF9NU0sJCQkJKDB4NDApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfSU5UVFhfT0ZTVAkJCQkoNykKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9JTlRUWF9NU0sJCQkJCSgweDgwKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1VOREVSX09GU1QJCQkJKDgpCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVU5ERVJfTVNLCQkJCQkoMHgxMDApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfRVhERUZFUl9PRlNUCQkJCSg5KQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX0VYREVGRVJfTVNLCQkJCSgweDIwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9MQ0FSUl9PRlNUCQkJCSgxMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9MQ0FSUl9NU0sJCQkJCSgweDQwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWDEwU1RBVF9PRlNUCQkJCSgxMSkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWDEwU1RBVF9NU0sJCQkJKDB4ODAwKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX0xBVEVDT0xMX09GU1QJCQkJKDEyKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX0xBVEVDT0xMX01TSwkJCQkoMHgxMDAwKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1RYUEFSX09GU1QJCQkJKDEzKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1RYUEFSX01TSwkJCQkJKDB4MjAwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9DT01QX09GU1QJCQkJCSgxNCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9DT01QX01TSwkJCQkJKDB4NDAwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWEhBTFRFRF9PRlNUCQkJCSgxNSkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWEhBTFRFRF9NU0sJCQkJKDB4ODAwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9TUUVSUl9PRlNUCQkJCSgxNikKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9TUUVSUl9NU0sJCQkJCSgweDEwMDAwKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1RYTUNBU1RfT0ZTVAkJCQkoMTcpCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVFhNQ0FTVF9NU0sJCQkJKDB4MjAwMDApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfVFhCQ0FTVF9PRlNUCQkJCSgxOCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWEJDQVNUX01TSwkJCQkoMHg0MDAwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9WTEFOX09GU1QJCQkJCSgxOSkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9WTEFOX01TSwkJCQkJKDB4ODAwMDApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfTUFDQ19PRlNUCQkJCQkoMjApCisjZGVmaW5lIEVUSEVSX1RYX1NUQVRfTUFDQ19NU0sJCQkJCSgweDEwMDAwMCkKKyNkZWZpbmUgRVRIRVJfVFhfU1RBVF9UWFBBVVNFX09GU1QJCQkJKDIxKQorI2RlZmluZSBFVEhFUl9UWF9TVEFUX1RYUEFVU0VfTVNLCQkJCSgweDIwMDAwMCkKKworI2RlZmluZSBFVEhFUl9SWF9DVEwoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MTApKQorI2RlZmluZSBFVEhFUl9SWF9DVExfUlhFTl9PRlNUCQkJCQkoMCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX1JYRU5fTVNLCQkJCQkoMHgxKQorI2RlZmluZSBFVEhFUl9SWF9DVExfUlhIQUxUX09GU1QJCQkJKDEpCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9SWEhBTFRfTVNLCQkJCQkoMHgyKQorI2RlZmluZSBFVEhFUl9SWF9DVExfTE9OR0VOX09GU1QJCQkJKDIpCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9MT05HRU5fTVNLCQkJCQkoMHg0KQorI2RlZmluZSBFVEhFUl9SWF9DVExfU0hPUlRFTl9PRlNUCQkJCSgzKQorI2RlZmluZSBFVEhFUl9SWF9DVExfU0hPUlRFTl9NU0sJCQkJKDB4OCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX1NUUklQQ1JDX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9TVFJJUENSQ19NU0sJCQkJKDB4MTApCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9QQVNTQ1RMX09GU1QJCQkJKDUpCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9QQVNTQ1RMX01TSwkJCQkoMHgyMCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0lHTk9SRUNSQ19PRlNUCQkJCSg2KQorI2RlZmluZSBFVEhFUl9SWF9DVExfSUdOT1JFQ1JDX01TSwkJCQkoMHg0MCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0VOQUxJR05fT0ZTVAkJCQkoOCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0VOQUxJR05fTVNLCQkJCSgweDEwMCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0VOQ1JDRVJSX09GU1QJCQkJKDkpCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9FTkNSQ0VSUl9NU0sJCQkJKDB4MjAwKQorI2RlZmluZSBFVEhFUl9SWF9DVExfRU5PVkVSX09GU1QJCQkJKDEwKQorI2RlZmluZSBFVEhFUl9SWF9DVExfRU5PVkVSX01TSwkJCQkJKDB4NDAwKQorI2RlZmluZSBFVEhFUl9SWF9DVExfRU5MT05HRVJSX09GU1QJCQkJKDExKQorI2RlZmluZSBFVEhFUl9SWF9DVExfRU5MT05HRVJSX01TSwkJCQkoMHg4MDApCisjZGVmaW5lIEVUSEVSX1JYX0NUTF9FTlJYUEFSX09GU1QJCQkJKDEzKQorI2RlZmluZSBFVEhFUl9SWF9DVExfRU5SWFBBUl9NU0sJCQkJKDB4MjAwMCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0VOR09PRF9PRlNUCQkJCSgxNCkKKyNkZWZpbmUgRVRIRVJfUlhfQ1RMX0VOR09PRF9NU0sJCQkJCSgweDQwMDApCisKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVChiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxNCkpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfTEVORVJSX09GU1QJCQkJKDQpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfTEVORVJSX01TSwkJCQkoMHgxMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9DVExSRUNEX09GU1QJCQkJKDUpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfQ1RMUkVDRF9NU0sJCQkJKDB4MjApCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfSU5UUlhfT0ZTVAkJCQkoNikKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9JTlRSWF9NU0sJCQkJCSgweDQwKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYMTBTVEFUX09GU1QJCQkJKDcpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfUlgxMFNUQVRfTVNLCQkJCSgweDgwKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX0FMSUdORVJSX09GU1QJCQkJKDgpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfQUxJR05FUlJfTVNLCQkJCSgweDEwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9DUkNFUlJfT0ZTVAkJCQkoOSkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9DUkNFUlJfTVNLCQkJCSgweDIwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9PVkVSRkxPV19PRlNUCQkJCSgxMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9PVkVSRkxPV19NU0sJCQkJKDB4NDAwKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX0xPTkdFUlJfT0ZTVAkJCQkoMTEpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfTE9OR0VSUl9NU0sJCQkJKDB4ODAwKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYUEFSX09GU1QJCQkJKDEzKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYUEFSX01TSwkJCQkJKDB4MjAwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9HT09EX09GU1QJCQkJCSgxNCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9HT09EX01TSwkJCQkJKDB4NDAwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9SWEhBTFRFRF9PRlNUCQkJCSgxNSkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9SWEhBTFRFRF9NU0sJCQkJKDB4ODAwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9SWE1DQVNUX09GU1QJCQkJKDE3KQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYTUNBU1RfTVNLCQkJCSgweDEwMDAwKQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYQkNBU1RfT0ZTVAkJCQkoMTgpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfUlhCQ0FTVF9NU0sJCQkJKDB4MjAwMDApCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfUlhWTEFOX09GU1QJCQkJKDE5KQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX1JYVkxBTl9NU0sJCQkJKDB4NDAwMDApCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfUlhQQVVTRV9PRlNUCQkJCSgyMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9SWFBBVVNFX01TSwkJCQkoMHg4MDAwMCkKKyNkZWZpbmUgRVRIRVJfUlhfU1RBVF9BUkNTVEFUVVNfT0ZTVAkJCQkoMjEpCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfQVJDU1RBVFVTX01TSwkJCQkoMHhGMDAwMDApCisjZGVmaW5lIEVUSEVSX1JYX1NUQVRfQVJDRU5UX09GU1QJCQkJKDI1KQorI2RlZmluZSBFVEhFUl9SWF9TVEFUX0FSQ0VOVF9NU0sJCQkJKDB4MUYwMDAwMDApCisKKyNkZWZpbmUgRVRIRVJfTURfREFUQShiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgxOCkpCisKKyNkZWZpbmUgRVRIRVJfTURfQ0EoYmFzZSkJCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDFjKSkKKyNkZWZpbmUgRVRIRVJfTURfQ0FfQUREUl9PRlNUCQkJCQkoMCkKKyNkZWZpbmUgRVRIRVJfTURfQ0FfQUREUl9NU0sJCQkJCSgweDFGKQorI2RlZmluZSBFVEhFUl9NRF9DQV9QSFlfT0ZTVAkJCQkJKDUpCisjZGVmaW5lIEVUSEVSX01EX0NBX1BIWV9NU0sJCQkJCSgweDNFMCkKKyNkZWZpbmUgRVRIRVJfTURfQ0FfV1JfT0ZTVAkJCQkJKDEwKQorI2RlZmluZSBFVEhFUl9NRF9DQV9XUl9NU0sJCQkJCSgweDQwMCkKKyNkZWZpbmUgRVRIRVJfTURfQ0FfQlVTWV9PRlNUCQkJCQkoMTEpCisjZGVmaW5lIEVUSEVSX01EX0NBX0JVU1lfTVNLCQkJCQkoMHg4MDApCisjZGVmaW5lIEVUSEVSX01EX0NBX1BSRVNVUFBfT0ZTVAkJCQkoMTIpCisjZGVmaW5lIEVUSEVSX01EX0NBX1BSRVNVUFBfTVNLCQkJCQkoMHgxMDAwKQorCisjZGVmaW5lIEVUSEVSX0FSQ19BRFIoYmFzZSkJICAgICAgKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MTYwKSkKKyNkZWZpbmUgRVRIRVJfQVJDX0FEUl9BUkNfTE9DX09GU1QJCQkJKDIpCisjZGVmaW5lIEVUSEVSX0FSQ19BRFJfQVJDX0xPQ19NU0sJCQkJKDB4RkZDKQorCisjZGVmaW5lIEVUSEVSX0FSQ19EQVRBKGJhc2UpICAoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgzNjQpKQorCisjZGVmaW5lIEVUSEVSX0FSQ19FTkEoYmFzZSkgICAoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgyOCkpCisjZGVmaW5lIEVUSEVSX0FSQ19FTkFfTVNLCQkJCQkoMHgxRkZGRkYpCisKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVEwoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4MmMpKQorI2RlZmluZSBFVEhFUl9QUk9NX0NUTF9QUk9NX0FERFJfT0ZTVAkJCSgwKQorI2RlZmluZSBFVEhFUl9QUk9NX0NUTF9QUk9NX0FERFJfTVNLCQkJKDB4M0YpCisjZGVmaW5lIEVUSEVSX1BST01fQ1RMX09QQ09ERV9PRlNUCQkJCSgxMykKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVExfT1BDT0RFX01TSwkJCQkoMHg2MDAwKQorI2RlZmluZSBFVEhFUl9QUk9NX0NUTF9PUENPREVfUkVBRF9NU0sJCQkoMHg0MDAwKQorI2RlZmluZSBFVEhFUl9QUk9NX0NUTF9PUENPREVfV1JJVEVfTVNLCQkJKDB4MjAwMCkKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVExfT1BDT0RFX0VSQVNFX01TSwkJCSgweDYwMDApCisjZGVmaW5lIEVUSEVSX1BST01fQ1RMX0VOQUJMRV9NU0sJCQkJKDB4MDAzMCkKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVExfRElTQUJMRV9NU0sJCQkJKDB4MDAwMCkKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVExfQlVTWV9PRlNUCQkJCSgxNSkKKyNkZWZpbmUgRVRIRVJfUFJPTV9DVExfQlVTWV9NU0sJCQkJCSgweDgwMDApCisKKyNkZWZpbmUgRVRIRVJfUFJPTV9EQVRBKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDMwKSkKKworI2RlZmluZSBFVEhFUl9NSVNTX0NOVChiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHgzYykpCisjZGVmaW5lIEVUSEVSX01JU1NfQ05UX0NPVU5UX09GU1QJCQkJKDApCisjZGVmaW5lIEVUSEVSX01JU1NfQ05UX0NPVU5UX01TSwkJCQkoMHhGRkZGKQorCisjZGVmaW5lIEVUSEVSX0NOVERBVEEoYmFzZSkJCQkJCQkJKEVUSEVSMDBfVFlQRSAoYmFzZSArIDB4ODApKQorCisjZGVmaW5lIEVUSEVSX0NOVEFDQyhiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHg4NCkpCisjZGVmaW5lIEVUSEVSX0NOVEFDQ19BRERSX09GU1QJCQkJCSgwKQorI2RlZmluZSBFVEhFUl9DTlRBQ0NfQUREUl9NU0sJCQkJCSgweEZGKQorI2RlZmluZSBFVEhFUl9DTlRBQ0NfV1JSRE5fT0ZTVAkJCQkJKDgpCisjZGVmaW5lIEVUSEVSX0NOVEFDQ19XUlJETl9NU0sJCQkJCSgweDEwMCkKKyNkZWZpbmUgRVRIRVJfQ05UQUNDX0NMRUFSX09GU1QJCQkJCSg5KQorI2RlZmluZSBFVEhFUl9DTlRBQ0NfQ0xFQVJfTVNLCQkJCQkoMHgyMDApCisKKyNkZWZpbmUgRVRIRVJfVFhSTUlOVEVOKGJhc2UpCQkJCQkJCShFVEhFUjAwX1RZUEUgKGJhc2UgKyAweDg4KSkKKyNkZWZpbmUgRVRIRVJfVFhSTUlOVEVOX01TSwkJCQkJCSgweDNGRkZGRkZGKQorCisjZGVmaW5lIEVUSEVSX1JYUk1JTlRFTihiYXNlKQkJCQkJCQkoRVRIRVIwMF9UWVBFIChiYXNlICsgMHg4QykpCisjZGVmaW5lIEVUSEVSX1JYUk1JTlRFTl9NU0sJCQkJCQkoMHhGRkZGRkYpCisKKy8qCisqCVJNT04gUmVnaXN0ZXJzCisqLworI2RlZmluZQkJUk1PTl9DT0xMSVNJT04wCQkJCQkJMHgwCisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjEJCQkJCQkweDEKKyNkZWZpbmUJCVJNT05fQ09MTElTSU9OMgkJCQkJCTB4MgorI2RlZmluZQkJUk1PTl9DT0xMSVNJT04zCQkJCQkJMHgzCisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjQJCQkJCQkweDQKKyNkZWZpbmUJCVJNT05fQ09MTElTSU9ONQkJCQkJCTB4NQorI2RlZmluZQkJUk1PTl9DT0xMSVNJT042CQkJCQkJMHg2CisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjcJCQkJCQkweDcKKyNkZWZpbmUJCVJNT05fQ09MTElTSU9OOAkJCQkJCTB4OAorI2RlZmluZQkJUk1PTl9DT0xMSVNJT045CQkJCQkJMHg5CisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjEwCQkJCQkweGEKKyNkZWZpbmUJCVJNT05fQ09MTElTSU9OMTEJCQkJCTB4YgorI2RlZmluZQkJUk1PTl9DT0xMSVNJT04xMgkJCQkJMHhjCisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjEzCQkJCQkweGQKKyNkZWZpbmUJCVJNT05fQ09MTElTSU9OMTQJCQkJCTB4ZQorI2RlZmluZQkJUk1PTl9DT0xMSVNJT04xNQkJCQkJMHhmCisjZGVmaW5lCQlSTU9OX0NPTExJU0lPTjE2CQkJCQkweDEwCisjZGVmaW5lCQlSTU9OX0ZSQU1FU19XSVRIX0RFRkVSUkVEX1hNSVNTSU9OUwkweDExCisjZGVmaW5lCQlSTU9OX0xBVEVfQ09MTElTSU9OUwkJCQkweDEyCisjZGVmaW5lCQlSTU9OX0ZSQU1FU19MT1NUX0RVRV9UT19NQUNfWE1JVAkweDEzCisjZGVmaW5lCQlSTU9OX0NBUlJJRVJfU0VOU0VfRVJST1JTCQkJMHgxNAorI2RlZmluZQkJUk1PTl9GUkFNRVNfV0lUSF9FWENFU1NJVkVfREVGRVJBTAkweDE1CisjZGVmaW5lCQlSTU9OX1VOSUNBU1RfRlJBTUVTX1RSQU5TTUlUVEVEX09LCTB4MTYKKyNkZWZpbmUJCVJNT05fTVVMVElDQVNUX0ZSQU1FU19YTUlUVEVEX09LCTB4MTcKKyNkZWZpbmUJCVJNT05fQlJPQURDQVNUX0ZSQU1FU19YTUlUVEVEX09LCTB4MTgKKyNkZWZpbmUJCVJNT05fU1FFX1RFU1RfRVJST1JTCQkJCTB4MTkKKyNkZWZpbmUJCVJNT05fUEFVU0VfTUFDQ1RSTF9GUkFNRVNfWE1JVFRFRAkweDFBCisjZGVmaW5lCQlSTU9OX01BQ0NUUkxfRlJBTUVTX1hNSVRURUQJCQkweDFCCisjZGVmaW5lCQlSTU9OX1ZMQU5fRlJBTUVTX1hNSVRURUQJCQkweDFDCisjZGVmaW5lCQlSTU9OX09DVEVUU19YTUlUVEVEX09LCQkJCTB4MUQKKyNkZWZpbmUJCVJNT05fT0NURVRTX1hNSVRURURfT0tfSEkJCQkweDFFCisKKyNkZWZpbmUJCVJNT05fUlhfUEFDS0VUX1NJWkVTMAkJCQkweDQwCisjZGVmaW5lCQlSTU9OX1JYX1BBQ0tFVF9TSVpFUzEJCQkJMHg0MQorI2RlZmluZQkJUk1PTl9SWF9QQUNLRVRfU0laRVMyCQkJCTB4NDIKKyNkZWZpbmUJCVJNT05fUlhfUEFDS0VUX1NJWkVTMwkJCQkweDQzCisjZGVmaW5lCQlSTU9OX1JYX1BBQ0tFVF9TSVpFUzQJCQkJMHg0NAorI2RlZmluZQkJUk1PTl9SWF9QQUNLRVRfU0laRVM1CQkJCTB4NDUKKyNkZWZpbmUJCVJNT05fUlhfUEFDS0VUX1NJWkVTNgkJCQkweDQ2CisjZGVmaW5lCQlSTU9OX1JYX1BBQ0tFVF9TSVpFUzcJCQkJMHg0NworI2RlZmluZQkJUk1PTl9GUkFNRV9DSEVDS19TRVFVRU5DRV9FUlJPUlMJMHg0OAorI2RlZmluZQkJUk1PTl9BTElHTk1FTlRfRVJST1JTCQkJCTB4NDkKKyNkZWZpbmUJCVJNT05fRlJBR01FTlRTCQkJCQkJMHg0QQorI2RlZmluZQkJUk1PTl9KQUJCRVJTCQkJCQkJMHg0QgorI2RlZmluZQkJUk1PTl9GUkFNRVNfTE9TVF9UT19JTlRNQUNSQ1ZFUlIJMHg0QworI2RlZmluZQkJUk1PTl9VTklDQVNUX0ZSQU1FU19SQ1ZEX09LCQkJMHg0RAorI2RlZmluZQkJUk1PTl9NVUxUSUNBU1RfRlJBTUVTX1JDVkRfT0sJCTB4NEUKKyNkZWZpbmUJCVJNT05fQlJPQURDQVNUX0ZSQU1FU19SQ1ZEX09LCQkweDRGCisjZGVmaW5lCQlSTU9OX0lOX1JBTkdFX0xFTkdUSF9FUlJPUlMJCQkweDUwCisjZGVmaW5lCQlSTU9OX09VVF9PRl9SQU5HRV9MRU5HVEhfRVJST1JTCQkweDUxCisjZGVmaW5lCQlSTU9OX1ZMQU5fRlJBTUVTX1JDVkQJCQkJMHg1MgorI2RlZmluZQkJUk1PTl9QQVVTRV9NQUNfQ1RSTF9GUkFNRVNfUkNWRAkJMHg1MworI2RlZmluZQkJUk1PTl9NQUNfQ1RSTF9GUkFNRVNfUkNWRAkJCTB4NTQKKyNkZWZpbmUJCVJNT05fT0NURVRTX1JDVkRfT0sJCQkJCTB4NTUKKyNkZWZpbmUJCVJNT05fT0NURVRTX1JDVkRfT0tfSEkJCQkJMHg1NgorI2RlZmluZQkJUk1PTl9PQ1RFVFNfUkNWRF9PVEhFUgkJCQkweDU3CisjZGVmaW5lCQlSTU9OX09DVEVUU19SQ1ZEX09USEVSX0hJCQkJMHg1OAorCisjZW5kaWYgLyogX19FVEhFUjAwX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2V4Y2FsaWJ1ci5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvZXhjYWxpYnVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM5MWRkNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2V4Y2FsaWJ1ci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qIG1lZ2FmdW5jdGlvbiB3aXphcmQ6ICVBUk0tQmFzZWQgRXhjYWxpYnVyJQorICAgR0VORVJBVElPTjogU1RBTkRBUkQKKyAgIFZFUlNJT046IFdNMS4wCisgICBNT0RVTEU6IEFSTS1CYXNlZCBFeGNhbGlidXIKKyAgIFBST0pFQ1Q6IGV4Y2FsaWJ1cgorICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBGaWxlIE5hbWU6IHY6XGVtYmVkZGVkXGxpbnV4XGJvb3RsZHJcZXhjYWxpYnVyLmgKKyAgIE1lZ2FmdW5jdGlvbiBOYW1lKHMpOiBBUk0tQmFzZWQgRXhjYWxpYnVyCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICBUSElTIElTIEEgV0laQVJELUdFTkVSQVRFRCBGSUxFLiBETyBOT1QgRURJVCBUSElTIEZJTEUhCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYJRVhDQUxJQlVSX0hfSU5DTFVERUQKKyNkZWZpbmUJRVhDQUxJQlVSX0hfSU5DTFVERUQKKworI2RlZmluZSBFWENfREVGSU5FX1BST0NFU1NPUl9MSVRUTEVfRU5ESUFOCisjZGVmaW5lIEVYQ19ERUZJTkVfQk9PVF9GUk9NX0ZMQVNICisKKyNkZWZpbmUJRVhDX0lOUFVUX0NMS19GUkVRVUVOQ1kgKDUwMDAwMDAwKQorI2RlZmluZQlFWENfQUhCMV9DTEtfRlJFUVVFTkNZICgxNTAwMDAwMDApCisjZGVmaW5lCUVYQ19BSEIyX0NMS19GUkVRVUVOQ1kgKDc1MDAwMDAwKQorI2RlZmluZQlFWENfU0RSQU1fQ0xLX0ZSRVFVRU5DWSAoNzUwMDAwMDApCisKKy8qIFJlZ2lzdGVycyBCbG9jayAqLworI2RlZmluZQlFWENfUkVHSVNURVJTX0JBU0UgKDB4N2ZmZmMwMDApCisjZGVmaW5lCUVYQ19NT0RFX0NUUkwwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDAwMCkKKyNkZWZpbmUJRVhDX0lPX0NUUkwwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDA0MCkKKyNkZWZpbmUJRVhDX01NQVAwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDA4MCkKKyNkZWZpbmUJRVhDX1BMRF9DT05GSUcwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDE0MCkKKyNkZWZpbmUJRVhDX1RJTUVSMDBfQkFTRSAoRVhDX1JFR0lTVEVSU19CQVNFICsgMHgyMDApCisjZGVmaW5lCUVYQ19JTlRfQ1RSTDAwX0JBU0UgKEVYQ19SRUdJU1RFUlNfQkFTRSArIDB4YzAwKQorI2RlZmluZQlFWENfQ0xPQ0tfQ1RSTDAwX0JBU0UgKEVYQ19SRUdJU1RFUlNfQkFTRSArIDB4MzAwKQorI2RlZmluZQlFWENfV0FUQ0hET0cwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweGEwMCkKKyNkZWZpbmUJRVhDX1VBUlQwMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDI4MCkKKyNkZWZpbmUJRVhDX0VCSTAwX0JBU0UgKEVYQ19SRUdJU1RFUlNfQkFTRSArIDB4MzgwKQorI2RlZmluZQlFWENfU0RSQU0wMF9CQVNFIChFWENfUkVHSVNURVJTX0JBU0UgKyAweDQwMCkKKyNkZWZpbmUJRVhDX0FIQjEyX0JSSURHRV9DVFJMMDBfQkFTRSAoRVhDX1JFR0lTVEVSU19CQVNFICsgMHg4MDApCisjZGVmaW5lCUVYQ19QTERfU1RSSVBFX0JSSURHRV9DVFJMMDBfQkFTRSAoRVhDX1JFR0lTVEVSU19CQVNFICsgMHgxMDApCisjZGVmaW5lCUVYQ19TVFJJUEVfUExEX0JSSURHRV9DVFJMMDBfQkFTRSAoRVhDX1JFR0lTVEVSU19CQVNFICsgMHgxMDApCisKKyNkZWZpbmUJRVhDX1JFR0lTVEVSU19TSVpFICgweDAwMDA0MDAwKQorCisvKiBFQkkgQmxvY2socykgKi8KKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzBfQkFTRSAoMHg0MDAwMDAwMCkKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzBfU0laRSAoMHgwMDQwMDAwMCkKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzBfV0lEVEggKDgpCisjZGVmaW5lCUVYQ19FQklfQkxPQ0swX05PTl9DQUNIRUFCTEUKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzFfQkFTRSAoMHg0MDQwMDAwMCkKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzFfU0laRSAoMHgwMDQwMDAwMCkKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzFfV0lEVEggKDE2KQorI2RlZmluZQlFWENfRUJJX0JMT0NLMV9OT05fQ0FDSEVBQkxFCisjZGVmaW5lCUVYQ19FQklfQkxPQ0syX0JBU0UgKDB4NDA4MDAwMDApCisjZGVmaW5lCUVYQ19FQklfQkxPQ0syX1NJWkUgKDB4MDA0MDAwMDApCisjZGVmaW5lCUVYQ19FQklfQkxPQ0syX1dJRFRIICgxNikKKyNkZWZpbmUJRVhDX0VCSV9CTE9DSzJfTk9OX0NBQ0hFQUJMRQorI2RlZmluZQlFWENfRUJJX0JMT0NLM19CQVNFICgweDQwYzAwMDAwKQorI2RlZmluZQlFWENfRUJJX0JMT0NLM19TSVpFICgweDAwNDAwMDAwKQorI2RlZmluZQlFWENfRUJJX0JMT0NLM19XSURUSCAoMTYpCisjZGVmaW5lCUVYQ19FQklfQkxPQ0szX05PTl9DQUNIRUFCTEUKKworLyogU0RSQU0gQmxvY2socykgKi8KKyNkZWZpbmUJRVhDX1NEUkFNX0JMT0NLMF9CQVNFICgweDAwMDAwMDAwKQorI2RlZmluZQlFWENfU0RSQU1fQkxPQ0swX1NJWkUgKDB4MDQwMDAwMDApCisjZGVmaW5lCUVYQ19TRFJBTV9CTE9DSzBfV0lEVEggKDMyKQorI2RlZmluZQlFWENfU0RSQU1fQkxPQ0sxX0JBU0UgKDB4MDQwMDAwMDApCisjZGVmaW5lCUVYQ19TRFJBTV9CTE9DSzFfU0laRSAoMHgwNDAwMDAwMCkKKyNkZWZpbmUJRVhDX1NEUkFNX0JMT0NLMV9XSURUSCAoMzIpCisKKy8qIFNpbmdsZSBQb3J0IFNSQU0gQmxvY2socykgKi8KKyNkZWZpbmUJRVhDX1NQU1JBTV9CTE9DSzBfQkFTRSAoMHgwODAwMDAwMCkKKyNkZWZpbmUJRVhDX1NQU1JBTV9CTE9DSzBfU0laRSAoMHgwMDAyMDAwMCkKKyNkZWZpbmUJRVhDX1NQU1JBTV9CTE9DSzFfQkFTRSAoMHgwODAyMDAwMCkKKyNkZWZpbmUJRVhDX1NQU1JBTV9CTE9DSzFfU0laRSAoMHgwMDAyMDAwMCkKKworLyogUExEIEJsb2NrKHMpICovCisjZGVmaW5lCUVYQ19QTERfQkxPQ0swX0JBU0UgKDB4ODAwMDAwMDApCisjZGVmaW5lCUVYQ19QTERfQkxPQ0swX1NJWkUgKDB4MDAwMDQwMDApCisjZGVmaW5lCUVYQ19QTERfQkxPQ0swX05PTl9DQUNIRUFCTEUKKyNkZWZpbmUJRVhDX1BMRF9CTE9DSzFfQkFTRSAoMHhmMDAwMDAwKQorI2RlZmluZQlFWENfUExEX0JMT0NLMV9TSVpFICgweDAwMDA0MDAwKQorI2RlZmluZQlFWENfUExEX0JMT0NLMV9OT05fQ0FDSEVBQkxFCisjZGVmaW5lCUVYQ19QTERfQkxPQ0syX0JBU0UgKDB4ODAwMDgwMDApCisjZGVmaW5lCUVYQ19QTERfQkxPQ0syX1NJWkUgKDB4MDAwMDQwMDApCisjZGVmaW5lCUVYQ19QTERfQkxPQ0syX05PTl9DQUNIRUFCTEUKKyNkZWZpbmUJRVhDX1BMRF9CTE9DSzNfQkFTRSAoMHg4MDAwYzAwMCkKKyNkZWZpbmUJRVhDX1BMRF9CTE9DSzNfU0laRSAoMHgwMDAwNDAwMCkKKyNkZWZpbmUJRVhDX1BMRF9CTE9DSzNfTk9OX0NBQ0hFQUJMRQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OTJjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwL2hhcmR3YXJlLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgSW50ZWdyYXRvci4KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkLgorICogIENvcHlyaWdodCAoQykgMjAwMSBBbHRlcmEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvcGxhdGZvcm0uaD4KKworLyoKKyAqIFdoZXJlIGluIHZpcnR1YWwgbWVtb3J5IHRoZSBJTyBkZXZpY2VzICh0aW1lcnMsIHN5c3RlbSBjb250cm9sbGVycworICogYW5kIHNvIG9uKQorICovCisjZGVmaW5lIElPX0JBU0UJCQkweGYwMDAwMDAwICAgICAgICAgICAgICAgICAvLyBWQSBvZiBJTyAKKyNkZWZpbmUgSU9fU0laRQkJCTB4MTAwMDAwMDAgICAgICAgICAgICAgICAgIC8vIEhvdyBtdWNoPworI2RlZmluZSBJT19TVEFSVAkJRVhDX1JFR0lTVEVSU19CQVNFICAgICAgICAgICAgICAvLyBQQSBvZiBJTworLyogbWFjcm8gdG8gZ2V0IGF0IElPIHNwYWNlIHdoZW4gcnVubmluZyB2aXJ0dWFsbHkgKi8KKyNkZWZpbmUgSU9fQUREUkVTUyh4KSAoKHgpIHwgMHhmMDAwMDAwMCkgCisKKyNkZWZpbmUgRkxBU0hfVkJBU0UgICAgICAgICAgICAgMHhGRTAwMDAwMAorI2RlZmluZSBGTEFTSF9TSVpFICAgICAgICAgICAgICAweDAxMDAwMDAwCisjZGVmaW5lIEZMQVNIX1NUQVJUICAgICAgICAgICAgIEVYQ19FQklfQkxPQ0swX0JBU0UKKyNkZWZpbmUgRkxBU0hfVkFERFIoeCkgKCh4KXwweEZFMDAwMDAwKQorLyoKKyAqIFNpbWlsYXIgdG8gYWJvdmUsIGJ1dCBmb3IgUENJIGFkZHJlc3NlcyAobWVtb3J5LCBJTywgQ29uZmlnIGFuZCB0aGUKKyAqIFYzIGNoaXAgaXRzZWxmKS4gIFdBUk5JTkc6IHRoaXMgaGFzIHRvIG1pcnJvciBkZWZpbml0aW9ucyBpbiBwbGF0Zm9ybS5oCisgKi8KKyNpZiAwCisjZGVmaW5lIFBDSV9NRU1PUllfVkFERFIgICAgICAgIDB4ZTgwMDAwMDAKKyNkZWZpbmUgUENJX0NPTkZJR19WQUREUiAgICAgICAgMHhlYzAwMDAwMAorI2RlZmluZSBQQ0lfVjNfVkFERFIgICAgICAgICAgICAweGVkMDAwMDAwCisjZGVmaW5lIFBDSV9JT19WQUREUiAgICAgICAgICAgIDB4ZWUwMDAwMDAKKworI2RlZmluZSBQQ0lPX0JBU0UJCVBDSV9JT19WQUREUgorI2RlZmluZSBQQ0lNRU1fQkFTRQkJUENJX01FTU9SWV9WQUREUgorCisKKyNkZWZpbmUgcGNpYmlvc19hc3NpZ25fYWxsX2J1c3NlcygpCTEKKworI2RlZmluZSBQQ0lCSU9TX01JTl9JTwkJMHg2MDAwCisjZGVmaW5lIFBDSUJJT1NfTUlOX01FTSAJMHgwMDEwMDAwMAorI2VuZGlmCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2ludF9jdHJsMDAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2ludF9jdHJsMDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2VjODY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvaW50X2N0cmwwMC5oCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogIAorICogIFRoaXMgZmlsZSBjb250YWlucyB0aGUgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRoZSBFeGNhbGlidXIKKyAqICBUaW1lciBUSU1FUjAwLgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgQWx0ZXJhIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19JTlRfQ1RSTDAwX0gKKyNkZWZpbmUgX19JTlRfQ1RSTDAwX0gKKworI2RlZmluZSBJTlRfTVMoYmFzZV9hZGRyKSAoSU5UX0NUUkwwMF9UWVBFIChiYXNlX2FkZHIgICsgMHgwMCApKQorI2RlZmluZSBJTlRfTVNfRkNfTVNLICgweDEwMDAwKQorI2RlZmluZSBJTlRfTVNfRkNfT0ZTVCAoMTYpCisjZGVmaW5lIElOVF9NU19NMV9NU0sgKDB4ODAwMCkKKyNkZWZpbmUgSU5UX01TX00xX09GU1QgKDE1KQorI2RlZmluZSBJTlRfTVNfTTBfTVNLICgweDQwMDApCisjZGVmaW5lIElOVF9NU19NMF9PRlNUICgxNCkKKyNkZWZpbmUgSU5UX01TX0FFX01TSyAoMHgyMDAwKQorI2RlZmluZSBJTlRfTVNfQUVfT0ZTVCAoMTMpCisjZGVmaW5lIElOVF9NU19QRV9NU0sgKDB4MTAwMCkKKyNkZWZpbmUgSU5UX01TX1BFX09GU1QgKDEyKQorI2RlZmluZSBJTlRfTVNfRUVfTVNLICgweDA4MDApCisjZGVmaW5lIElOVF9NU19FRV9PRlNUICgxMSkKKyNkZWZpbmUgSU5UX01TX1BTX01TSyAoMHgwNDAwKQorI2RlZmluZSBJTlRfTVNfUFNfT0ZTVCAoMTApCisjZGVmaW5lIElOVF9NU19UMV9NU0sgKDB4MDIwMCkKKyNkZWZpbmUgSU5UX01TX1QxX09GU1QgKDkpCisjZGVmaW5lIElOVF9NU19UMF9NU0sgKDB4MDEwMCkKKyNkZWZpbmUgSU5UX01TX1QwX09GU1QgKDgpCisjZGVmaW5lIElOVF9NU19VQV9NU0sgKDB4MDA4MCkKKyNkZWZpbmUgSU5UX01TX1VBX09GU1QgKDcpCisjZGVmaW5lIElOVF9NU19JUF9NU0sgKDB4MDA0MCkKKyNkZWZpbmUgSU5UX01TX0lQX09GU1QgKDYpCisjZGVmaW5lIElOVF9NU19QNV9NU0sgKDB4MDAyMCkKKyNkZWZpbmUgSU5UX01TX1A1X09GU1QgKDUpCisjZGVmaW5lIElOVF9NU19QNF9NU0sgKDB4MDAxMCkKKyNkZWZpbmUgSU5UX01TX1A0X09GU1QgKDQpCisjZGVmaW5lIElOVF9NU19QM19NU0sgKDB4MDAwOCkKKyNkZWZpbmUgSU5UX01TX1AzX09GU1QgKDMpCisjZGVmaW5lIElOVF9NU19QMl9NU0sgKDB4MDAwNCkKKyNkZWZpbmUgSU5UX01TX1AyX09GU1QgKDIpCisjZGVmaW5lIElOVF9NU19QMV9NU0sgKDB4MDAwMikKKyNkZWZpbmUgSU5UX01TX1AxX09GU1QgKDEpCisjZGVmaW5lIElOVF9NU19QMF9NU0sgKDB4MDAwMSkKKyNkZWZpbmUgSU5UX01TX1AwX09GU1QgKDApCisKKyNkZWZpbmUgSU5UX01DKGJhc2VfYWRkcikgKElOVF9DVFJMMDBfVFlQRSAoYmFzZV9hZGRyICArIDB4MDQgKSkKKyNkZWZpbmUgSU5UX01DX0ZDX01TSyAoMHgxMDAwMCkKKyNkZWZpbmUgSU5UX01DX0ZDX09GU1QgKDE2KQorI2RlZmluZSBJTlRfTUNfTTFfTVNLICgweDgwMDApCisjZGVmaW5lIElOVF9NQ19NMV9PRlNUICgxNSkKKyNkZWZpbmUgSU5UX01DX00wX01TSyAoMHg0MDAwKQorI2RlZmluZSBJTlRfTUNfTTBfT0ZTVCAoMTQpCisjZGVmaW5lIElOVF9NQ19BRV9NU0sgKDB4MjAwMCkKKyNkZWZpbmUgSU5UX01DX0FFX09GU1QgKDEzKQorI2RlZmluZSBJTlRfTUNfUEVfTVNLICgweDEwMDApCisjZGVmaW5lIElOVF9NQ19QRV9PRlNUICgxMikKKyNkZWZpbmUgSU5UX01DX0VFX01TSyAoMHgwODAwKQorI2RlZmluZSBJTlRfTUNfRUVfT0ZTVCAoMTEpCisjZGVmaW5lIElOVF9NQ19QU19NU0sgKDB4MDQwMCkKKyNkZWZpbmUgSU5UX01DX1BTX09GU1QgKDEwKQorI2RlZmluZSBJTlRfTUNfVDFfTVNLICgweDAyMDApCisjZGVmaW5lIElOVF9NQ19UMV9PRlNUICg5KQorI2RlZmluZSBJTlRfTUNfVDBfTVNLICgweDAxMDApCisjZGVmaW5lIElOVF9NQ19UMF9PRlNUICg4KQorI2RlZmluZSBJTlRfTUNfVUFfTVNLICgweDAwODApCisjZGVmaW5lIElOVF9NQ19VQV9PRlNUICg3KQorI2RlZmluZSBJTlRfTUNfSVBfTVNLICgweDAwNDApCisjZGVmaW5lIElOVF9NQ19JUF9PRlNUICg2KQorI2RlZmluZSBJTlRfTUNfUDVfTVNLICgweDAwMjApCisjZGVmaW5lIElOVF9NQ19QNV9PRlNUICg1KQorI2RlZmluZSBJTlRfTUNfUDRfTVNLICgweDAwMTApCisjZGVmaW5lIElOVF9NQ19QNF9PRlNUICg0KQorI2RlZmluZSBJTlRfTUNfUDNfTVNLICgweDAwMDgpCisjZGVmaW5lIElOVF9NQ19QM19PRlNUICgzKQorI2RlZmluZSBJTlRfTUNfUDJfTVNLICgweDAwMDQpCisjZGVmaW5lIElOVF9NQ19QMl9PRlNUICgyKQorI2RlZmluZSBJTlRfTUNfUDFfTVNLICgweDAwMDIpCisjZGVmaW5lIElOVF9NQ19QMV9PRlNUICgxKQorI2RlZmluZSBJTlRfTUNfUDBfTVNLICgweDAwMDEpCisjZGVmaW5lIElOVF9NQ19QMF9PRlNUICgwKQorCisjZGVmaW5lIElOVF9TUyhiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDA4ICkpCisjZGVmaW5lIElOVF9TU19GQ19TU0sgKDB4ODAwMCkKKyNkZWZpbmUgSU5UX1NTX0ZDX09GU1QgKDE1KQorI2RlZmluZSBJTlRfU1NfTTFfU1NLICgweDgwMDApCisjZGVmaW5lIElOVF9TU19NMV9PRlNUICgxNSkKKyNkZWZpbmUgSU5UX1NTX00wX1NTSyAoMHg0MDAwKQorI2RlZmluZSBJTlRfU1NfTTBfT0ZTVCAoMTQpCisjZGVmaW5lIElOVF9TU19BRV9TU0sgKDB4MjAwMCkKKyNkZWZpbmUgSU5UX1NTX0FFX09GU1QgKDEzKQorI2RlZmluZSBJTlRfU1NfUEVfU1NLICgweDEwMDApCisjZGVmaW5lIElOVF9TU19QRV9PRlNUICgxMikKKyNkZWZpbmUgSU5UX1NTX0VFX1NTSyAoMHgwODAwKQorI2RlZmluZSBJTlRfU1NfRUVfT0ZTVCAoMTEpCisjZGVmaW5lIElOVF9TU19QU19TU0sgKDB4MDQwMCkKKyNkZWZpbmUgSU5UX1NTX1BTX09GU1QgKDEwKQorI2RlZmluZSBJTlRfU1NfVDFfU1NLICgweDAyMDApCisjZGVmaW5lIElOVF9TU19UMV9PRlNUICg5KQorI2RlZmluZSBJTlRfU1NfVDBfU1NLICgweDAxMDApCisjZGVmaW5lIElOVF9TU19UMF9PRlNUICg4KQorI2RlZmluZSBJTlRfU1NfVUFfU1NLICgweDAwODApCisjZGVmaW5lIElOVF9TU19VQV9PRlNUICg3KQorI2RlZmluZSBJTlRfU1NfSVBfU1NLICgweDAwNDApCisjZGVmaW5lIElOVF9TU19JUF9PRlNUICg2KQorI2RlZmluZSBJTlRfU1NfUDVfU1NLICgweDAwMjApCisjZGVmaW5lIElOVF9TU19QNV9PRlNUICg1KQorI2RlZmluZSBJTlRfU1NfUDRfU1NLICgweDAwMTApCisjZGVmaW5lIElOVF9TU19QNF9PRlNUICg0KQorI2RlZmluZSBJTlRfU1NfUDNfU1NLICgweDAwMDgpCisjZGVmaW5lIElOVF9TU19QM19PRlNUICgzKQorI2RlZmluZSBJTlRfU1NfUDJfU1NLICgweDAwMDQpCisjZGVmaW5lIElOVF9TU19QMl9PRlNUICgyKQorI2RlZmluZSBJTlRfU1NfUDFfU1NLICgweDAwMDIpCisjZGVmaW5lIElOVF9TU19QMV9PRlNUICgxKQorI2RlZmluZSBJTlRfU1NfUDBfU1NLICgweDAwMDEpCisjZGVmaW5lIElOVF9TU19QMF9PRlNUICgwKQorCisjZGVmaW5lIElOVF9SUyhiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDBDICkpCisjZGVmaW5lIElOVF9SU19GQ19SU0sgKDB4MTAwMDApCisjZGVmaW5lIElOVF9SU19GQ19PRlNUICgxNikKKyNkZWZpbmUgSU5UX1JTX00xX1JTSyAoMHg4MDAwKQorI2RlZmluZSBJTlRfUlNfTTFfT0ZTVCAoMTUpCisjZGVmaW5lIElOVF9SU19NMF9SU0sgKDB4NDAwMCkKKyNkZWZpbmUgSU5UX1JTX00wX09GU1QgKDE0KQorI2RlZmluZSBJTlRfUlNfQUVfUlNLICgweDIwMDApCisjZGVmaW5lIElOVF9SU19BRV9PRlNUICgxMykKKyNkZWZpbmUgSU5UX1JTX1BFX1JTSyAoMHgxMDAwKQorI2RlZmluZSBJTlRfUlNfUEVfT0ZTVCAoMTIpCisjZGVmaW5lIElOVF9SU19FRV9SU0sgKDB4MDgwMCkKKyNkZWZpbmUgSU5UX1JTX0VFX09GU1QgKDExKQorI2RlZmluZSBJTlRfUlNfUFNfUlNLICgweDA0MDApCisjZGVmaW5lIElOVF9SU19QU19PRlNUICgxMCkKKyNkZWZpbmUgSU5UX1JTX1QxX1JTSyAoMHgwMjAwKQorI2RlZmluZSBJTlRfUlNfVDFfT0ZTVCAoOSkKKyNkZWZpbmUgSU5UX1JTX1QwX1JTSyAoMHgwMTAwKQorI2RlZmluZSBJTlRfUlNfVDBfT0ZTVCAoOCkKKyNkZWZpbmUgSU5UX1JTX1VBX1JTSyAoMHgwMDgwKQorI2RlZmluZSBJTlRfUlNfVUFfT0ZTVCAoNykKKyNkZWZpbmUgSU5UX1JTX0lQX1JTSyAoMHgwMDQwKQorI2RlZmluZSBJTlRfUlNfSVBfT0ZTVCAoNikKKyNkZWZpbmUgSU5UX1JTX1A1X1JTSyAoMHgwMDIwKQorI2RlZmluZSBJTlRfUlNfUDVfT0ZTVCAoNSkKKyNkZWZpbmUgSU5UX1JTX1A0X1JTSyAoMHgwMDEwKQorI2RlZmluZSBJTlRfUlNfUDRfT0ZTVCAoNCkKKyNkZWZpbmUgSU5UX1JTX1AzX1JTSyAoMHgwMDA4KQorI2RlZmluZSBJTlRfUlNfUDNfT0ZTVCAoMykKKyNkZWZpbmUgSU5UX1JTX1AyX1JTSyAoMHgwMDA0KQorI2RlZmluZSBJTlRfUlNfUDJfT0ZTVCAoMikKKyNkZWZpbmUgSU5UX1JTX1AxX1JTSyAoMHgwMDAyKQorI2RlZmluZSBJTlRfUlNfUDFfT0ZTVCAoMSkKKyNkZWZpbmUgSU5UX1JTX1AwX1JTSyAoMHgwMDAxKQorI2RlZmluZSBJTlRfUlNfUDBfT0ZTVCAoMCkKKworI2RlZmluZSBJTlRfSUQoYmFzZV9hZGRyKSAoSU5UX0NUUkwwMF9UWVBFIChiYXNlX2FkZHIgICsgMHgxMCApKQorI2RlZmluZSBJTlRfSURfSURfTVNLICgweDNGKQorI2RlZmluZSBJTlRfSURfSURfT0ZTVCAoMCkKKworI2RlZmluZSBJTlRfUExEX1BSSU9SSVRZKGJhc2VfYWRkcikgKElOVF9DVFJMMDBfVFlQRSAoYmFzZV9hZGRyICArIDB4MTQgKSkKKyNkZWZpbmUgSU5UX1BMRF9QUklPUklUWV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUExEX1BSSU9SSVRZX1BSSV9PRlNUICgwKQorI2RlZmluZSBJTlRfUExEX1BSSU9SSVRZX0dBX01TSyAoMHg0MCkKKyNkZWZpbmUgSU5UX1BMRF9QUklPUklUWV9HQV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9NT0RFKGJhc2VfYWRkcikgKElOVF9DVFJMMDBfVFlQRSAoYmFzZV9hZGRyICArIDB4MTggKSkKKyNkZWZpbmUgSU5UX01PREVfTU9ERV9NU0sgKDB4MykKKyNkZWZpbmUgSU5UX01PREVfTU9ERV9PRlNUICgwKQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QMChiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDgwICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QMF9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDBfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMF9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMF9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QMShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDg0ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QMV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDFfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QMihiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDg4ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QMl9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDJfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMl9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QMl9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QMyhiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDhDICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QM19QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDNfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QM19GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QM19GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QNChiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDkwICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QNF9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDRfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QNF9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QNF9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QNShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDk0ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QNV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUDVfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QNV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QNV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9JUChiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDk0ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9JUF9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfSVBfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9JUF9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9JUF9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9VQShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweDlDICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9VQV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfVUFfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9VQV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9VQV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9UMChiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEEwICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9UMF9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfVDBfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9UMF9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9UMF9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9UMShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEE0ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9UMV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfVDFfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9UMV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9UMV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QUyhiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEE4ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QU19QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUFNfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QU19GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QU19GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9FRShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEFDICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9FRV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfRUVfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9FRV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9FRV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9QRShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEIwICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9QRV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfUEVfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QRV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9QRV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9BRShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEI0ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9BRV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfQUVfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9BRV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9BRV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9NMChiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEI4ICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9NMF9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfTTBfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9NMF9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9NMF9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9NMShiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEJDICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9NMV9QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfTTFfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9NMV9GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9NMV9GUV9PRlNUICg2KQorCisjZGVmaW5lIElOVF9QUklPUklUWV9GQyhiYXNlX2FkZHIpIChJTlRfQ1RSTDAwX1RZUEUgKGJhc2VfYWRkciAgKyAweEMwICkpCisjZGVmaW5lIElOVF9QUklPUklUWV9GQ19QUklfTVNLICgweDNGKQorI2RlZmluZSBJTlRfUFJJT1JJVFlfRkNfUFJJX09GU1QgKDApCisjZGVmaW5lIElOVF9QUklPUklUWV9GQ19GUV9NU0sgKDB4NDApCisjZGVmaW5lIElOVF9QUklPUklUWV9GQ19GUV9PRlNUICg2KQorCisjZW5kaWYgLyogX19JTlRfQ1RSTDAwX0ggKi8KKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjBhZmEyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvaW8uaApAQCAtMCwwICsxLDM5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2lvLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZgorCisKKy8qCisgKiBHZW5lcmljIHZpcnR1YWwgcmVhZC93cml0ZQorICovCisvKiNkZWZpbmUgb3V0c3cgICBfX2FyY2hfd3JpdGVzdworI2RlZmluZSBvdXRzbCAgIF9fYXJjaF93cml0ZXNsCisjZGVmaW5lIG91dHNiICAgX19hcmNoX3dyaXRlc2IKKyNkZWZpbmUgaW5zYiAgICBfX2FyY2hfcmVhZHNiCisjZGVmaW5lIGluc3cgICAgX19hcmNoX3JlYWRzdworI2RlZmluZSBpbnNsICAgIF9fYXJjaF9yZWFkc2wqLworCisjZGVmaW5lIF9faW8oYSkJCQkoKHZvaWQgX19pb21lbSAqKShhKSkKKyNkZWZpbmUgX19tZW1fcGNpKGEpICAgICAgICAgICAgKGEpIAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2lycXMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzc1OGEzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvaXJxcy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtY2FtZWxvdC9pcnFzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIEFsdGVyYSBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisvKiBVc2UgdGhlIEV4Y2FsaWJ1ciBjaGlwIGRlZmluaXRpb25zICovCisjZGVmaW5lIElOVF9DVFJMMDBfVFlQRQorI2luY2x1ZGUgImFzbS9hcmNoL2ludF9jdHJsMDAuaCIKKworCisjZGVmaW5lIElSUV9QTEQwICAgICAgICAgICAgICAgICAgICAgSU5UX01TX1AwX09GU1QKKyNkZWZpbmUgSVJRX1BMRDEgICAgICAgICAgICAgICAgICAgICBJTlRfTVNfUDFfT0ZTVAorI2RlZmluZSBJUlFfUExEMiAgICAgICAgICAgICAgICAgICAgIElOVF9NU19QMl9PRlNUCisjZGVmaW5lIElSUV9QTEQzICAgICAgICAgICAgICAgICAgICAgSU5UX01TX1AzX09GU1QKKyNkZWZpbmUgSVJRX1BMRDQgICAgICAgICAgICAgICAgICAgICBJTlRfTVNfUDRfT0ZTVAorI2RlZmluZSBJUlFfUExENSAgICAgICAgICAgICAgICAgICAgIElOVF9NU19QNV9PRlNUCisjZGVmaW5lIElSUV9FWFQgICAgICAgICAgICAgICAgICAgICAgSU5UX01TX0lQX09GU1QKKyNkZWZpbmUgSVJRX1VBUlQgICAgICAgICAgICAgICAgICAgICBJTlRfTVNfVUFfT0ZTVAorI2RlZmluZSBJUlFfVElNRVIwICAgICAgICAgICAgICAgICAgIElOVF9NU19UMF9PRlNUCisjZGVmaW5lIElSUV9USU1FUjEgICAgICAgICAgICAgICAgICAgSU5UX01TX1QxX09GU1QKKyNkZWZpbmUgSVJRX1BMTCAgICAgICAgICAgICAgICAgICAgICBJTlRfTVNfUExMX09GU1QKKyNkZWZpbmUgSVJRX0VCSSAgICAgICAgICAgICAgICAgICAgICBJTlRfTVNfRUJJX09GU1QKKyNkZWZpbmUgSVJRX1NUUklQRV9CUklER0UgICAgICAgICAgICBJTlRfTVNfUExMX09GU1QKKyNkZWZpbmUgSVJRX0FIQl9CUklER0UgICAgICAgICAgICAgICBJTlRfTVNfUExMX09GU1QKKyNkZWZpbmUgSVJRX0NPTU1SWCAgICAgICAgICAgICAgICAgICBJTlRfTVNfQ1JfT0ZTVAorI2RlZmluZSBJUlFfQ09NTVRYICAgICAgICAgICAgICAgICAgIElOVF9NU19DVF9PRlNUCisjZGVmaW5lIElSUV9GQVNUX0NPTU0gICAgICAgICAgICAgICAgSU5UX01TX0ZDX09GU1QKKworI2RlZmluZSBOUl9JUlFTICAgICAgICAgICAgICAgICAgICAgICAgIChJTlRfTVNfRkNfT0ZTVCArIDEpCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4NmJmNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL21lbW9yeS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwL21lbW9yeS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMSBBbHRlcmEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkoMHgwMDAwMDAwMFVMKQorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKiAgICAgICAgICAgICAgYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKiAgICAgICAgICAgICAgdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqLworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCSh4IC0gUEFHRV9PRkZTRVQgKyAvKlNEUkFNX0JBU0UqLzApCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJKHggLSAvKlNEUkFNX0JBU0UqLzAgKyBQQUdFX09GRlNFVCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9tb2RlX2N0cmwwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvbW9kZV9jdHJsMDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGE3ZWZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvbW9kZV9jdHJsMDAuaApAQCAtMCwwICsxLDgwIEBACisjaWZuZGVmIF9fTU9ERV9DVFJMMDBfSAorI2RlZmluZSBfX01PREVfQ1RSTDAwX0gKKworLyoKKyAqIFJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciB0aGUgcmVzZXQgYW5kIG1vZGUgY29udHJvbAorICovCisKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIEFsdGVyYSBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisKKworI2RlZmluZSBCT09UX0NSKEJBU0VfQUREUikgKE1PREVfQ1RSTDAwX1RZUEUgKEJBU0VfQUREUiAgKSkKKyNkZWZpbmUgQk9PVF9DUl9CRl9NU0sgKDB4MSkKKyNkZWZpbmUgQk9PVF9DUl9CRl9PRlNUICgwKQorI2RlZmluZSBCT09UX0NSX0hNX01TSyAoMHgyKQorI2RlZmluZSBCT09UX0NSX0hNX09GU1QgKDEpCisjZGVmaW5lIEJPT1RfQ1JfUkVfTVNLICgweDQpCisjZGVmaW5lIEJPT1RfQ1JfUkVfT0ZTVCAoMikKKworI2RlZmluZSBSRVNFVF9TUihCQVNFX0FERFIpIChNT0RFX0NUUkwwMF9UWVBFIChCQVNFX0FERFIgICsgMHg0ICkpCisjZGVmaW5lIFJFU0VUX1NSX1dSX01TSyAoMHgxKQorI2RlZmluZSBSRVNFVF9TUl9XUl9PRlNUICgwKQorI2RlZmluZSBSRVNFVF9TUl9DUl9NU0sgKDB4MikKKyNkZWZpbmUgUkVTRVRfU1JfQ1JfT0ZTVCAoMSkKKyNkZWZpbmUgUkVTRVRfU1JfSlRfTVNLICgweDQpCisjZGVmaW5lIFJFU0VUX1NSX0pUX09GU1QgKDIpCisjZGVmaW5lIFJFU0VUX1NSX0VSX01TSyAoMHg4KQorI2RlZmluZSBSRVNFVF9TUl9FUl9PRlNUICgzKQorCisjZGVmaW5lIElEX0NPREUoQkFTRV9BRERSKSAoTU9ERV9DVFJMMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDggKSkKKworI2RlZmluZSBTUkFNMF9TUihCQVNFX0FERFIpIChNT0RFX0NUUkwwMF9UWVBFIChCQVNFX0FERFIgICsgMHgyMCApKQorI2RlZmluZSBTUkFNMF9TUl9TSVpFX01TSyAoMHhGRkZGRjAwMCkKKyNkZWZpbmUgU1JBTTBfU1JfU0laRV9PRlNUICgxMikKKworI2RlZmluZSBTUkFNMV9TUihCQVNFX0FERFIpIChNT0RFX0NUUkwwMF9UWVBFIChCQVNFX0FERFIgICsgMHgyNCApKQorI2RlZmluZSBTUkFNMV9TUl9TSVpFX01TSyAoMHhGRkZGRjAwMCkKKyNkZWZpbmUgU1JBTTFfU1JfU0laRV9PRlNUICgxMikKKworI2RlZmluZSBEUFNSQU0wX1NSKEJBU0VfQUREUikgKE1PREVfQ1RSTDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDMwICkpCisKKyNkZWZpbmUgRFBTUkFNMF9TUl9NT0RFX01TSyAoMHhGKQorI2RlZmluZSBEUFNSQU0wX1NSX01PREVfT0ZTVCAoMCkKKyNkZWZpbmUgRFBTUkFNMF9TUl9HTEJMX01TSyAoMHgzMCkKKyNkZWZpbmUgRFBTUkFNMF9TUl9TSVpFX01TSyAoMHhGRkZGRjAwMCkKKyNkZWZpbmUgRFBTUkFNMF9TUl9TSVpFX09GU1QgKDEyKQorCisjZGVmaW5lIERQU1JBTTBfTENSKEJBU0VfQUREUikgKE1PREVfQ1RSTDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDM0ICkpCisjZGVmaW5lIERQU1JBTTBfTENSX0xDS0FERFJfTVNLICgweDFGRkUwKQorI2RlZmluZSBEUFNSQU0wX0xDUl9MQ0tBRERSX09GU1QgKDQpCisKKyNkZWZpbmUgRFBTUkFNMV9TUihCQVNFX0FERFIpIChNT0RFX0NUUkwwMF9UWVBFIChCQVNFX0FERFIgICsgMHgzOCApKQorI2RlZmluZSBEUFNSQU0xX1NSX01PREVfTVNLICgweEYpCisjZGVmaW5lIERQU1JBTTFfU1JfTU9ERV9PRlNUICgwKQorI2RlZmluZSBEUFNSQU0xX1NSX0dMQkxfTVNLICgweDMwKQorI2RlZmluZSBEUFNSQU0xX1NSX0dMQkxfT0ZTVCAoNCkKKyNkZWZpbmUgRFBTUkFNMV9TUl9TSVpFX01TSyAoMHhGRkZGRjAwMCkKKyNkZWZpbmUgRFBTUkFNMV9TUl9TSVpFX09GU1QgKDEyKQorCisjZGVmaW5lIERQU1JBTTFfTENSKEJBU0VfQUREUikgKE1PREVfQ1RSTDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDNDICkpCisjZGVmaW5lIERQU1JBTTFfTENSX0xDS0FERFJfTVNLICgweDFGRkUwKQorI2RlZmluZSBEUFNSQU0xX0xDUl9MQ0tBRERSX09GU1QgKDQpCisKKyNlbmRpZiAvKiBfX01PREVfQ1RSTDAwX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4M2RlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9wYXJhbS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvcGFyYW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3BsYXRmb3JtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9wbGF0Zm9ybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOWJiMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9wbGF0Zm9ybS5oCkBAIC0wLDAgKzEsNyBAQAorI2lmbmRlZiBQTEFURk9STV9ICisjZGVmaW5lIFBMQVRGT1JNX0gKKyNpbmNsdWRlICJleGNhbGlidXIuaCIKKworI2RlZmluZSBNQVhJUlFOVU0gMTUgCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvcGxkX2NvbmYwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvcGxkX2NvbmYwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjJjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi9wbGRfY29uZjAwLmgKQEAgLTAsMCArMSw3MyBAQAorI2lmbmRlZiBfX1BMRF9DT05GMDBfSAorI2RlZmluZSBfX1BMRF9DT05GMDBfSAorCisvKgorICogUmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRoZSBQTEQgQ29uZmlndXJhdGlvbiBMb2dpYworICovCisKKy8qCisgKiAgCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgdGhlIEV4Y2FsaWJ1cgorICogIEludGVycnVwdCBjb250cm9sbGVyIElOVF9DVFJMMDAuCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMSBBbHRlcmEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyAKKyNkZWZpbmUgQ09ORklHX0NPTlRST0woQkFTRV9BRERSKSAoUExEX0NPTkYwMF9UWVBFIChCQVNFX0FERFIpKSAgCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0xLX01TSyAoMHgxKQorI2RlZmluZSBDT05GSUdfQ09OVFJPTF9MS19PRlNUICgwKQorI2RlZmluZSBDT05GSUdfQ09OVFJPTF9DT19NU0sgKDB4MikKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfQ09fT0ZTVCAoMSkKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfQl9NU0sgICgweDQpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0JfT0ZTVCAoMikKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfUENfTVNLICgweDgpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX1BDX09GU1QgKDMpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0VfTVNLICgweDEwKQorI2RlZmluZSBDT05GSUdfQ09OVFJPTF9FX09GU1QgKDQpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0VTX01TSyAoMHhFMCkKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfRVNfT0ZTVCAoNSkKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfRVNfMF9NU0sgKDB4MjApCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0VTXzFfTVNLICgweDQwKQorI2RlZmluZSBDT05GSUdfQ09OVFJPTF9FU18yX01TSyAoMHg4MCkKKworI2RlZmluZSBDT05GSUdfQ09OVFJPTF9DTE9DSyhCQVNFX0FERFIpIChQTERfQ09ORjAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDQgKSkKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfQ0xPQ0tfUkFUSU9fTVNLICgweEZGRkYpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0NMT0NLX1JBVElPX09GU1QgKDApCisKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfREFUQShCQVNFX0FERFIpIChQTERfQ09ORjAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDggKSkKKyNkZWZpbmUgQ09ORklHX0NPTlRST0xfREFUQV9NU0sgKDB4RkZGRkZGRkYpCisjZGVmaW5lIENPTkZJR19DT05UUk9MX0RBVEFfT0ZTVCAoMCkKKworI2RlZmluZSBDT05GSUdfVU5MT0NLKEJBU0VfQUREUikgKFBMRF9DT05GMDBfVFlQRSAoQkFTRV9BRERSICArIDB4QyApKSAKKyNkZWZpbmUgQ09ORklHX1VOTE9DS19NU0sgKDB4RkZGRkZGRkYpCisjZGVmaW5lIENPTkZJR19VTkxPQ0tfT0ZTVCAoMCkKKworI2RlZmluZSBDT05GSUdfVU5MT0NLX01BR0lDICgweDU1NEU0QzRCKQorCisjZW5kaWYgLyogX19QTERfQ09ORjAwX0ggKi8KKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ1YjA5MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3N5c3RlbS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvc3lzdGVtLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIEFsdGVyYSBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX1NZU1RFTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKworI2luY2x1ZGUgPGFzbS9hcmNoL3BsYXRmb3JtLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2lkbGUodm9pZCkKK3sKKwkvKgorCSAqIFRoaXMgc2hvdWxkIGRvIGFsbCB0aGUgY2xvY2sgc3dpdGNoaW5nCisJICogYW5kIHdhaXQgZm9yIGludGVycnVwdCB0cmlja3MKKwkgKi8KKwljcHVfZG9faWRsZSgpOworfQorCitleHRlcm4gX19pbmxpbmVfXyB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCS8qIEhtbS4uLiBXZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIHdpdGggdGhlIHdhdGNoZG9nLi4uICovCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdGRrcGh5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi90ZGtwaHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTEwN2JkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdGRrcGh5LmgKQEAgLTAsMCArMSwyMDkgQEAKKy8qCisgKiAgbGludXgvZHJpdmVycy90ZGtwaHkuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgQWx0ZXJhIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19UREtQSFlfSAorI2RlZmluZSBfX1RES1BIWV9ICisKKy8qCisgKiBSZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgdGhlIFRESyA3OFEyMTIwIFBIWSAKKyAqIHdoaWNoIGlzIG9uIHRoZSBDYW1lbG90IGJvYXJkCisgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgQWx0ZXJhIENvcnBvcmF0aW9uIDIwMDAuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisjZGVmaW5lIFBIWV9DT05UUk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBQSFlfQ09OVFJPTF9DT0xUX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwKQorI2RlZmluZSBQSFlfQ09OVFJPTF9DT0xUX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg3KQorI2RlZmluZSBQSFlfQ09OVFJPTF9EVVBMRVhfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfRFVQTEVYX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUkFORUdfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDApCisjZGVmaW5lIFBIWV9DT05UUk9MX1JBTkVHX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDkpCisjZGVmaW5lIFBIWV9DT05UUk9MX0lTT19NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MDApCisjZGVmaW5lIFBIWV9DT05UUk9MX0lTT19PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwKQorI2RlZmluZSBQSFlfQ09OVFJPTF9QV1JETl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUFdSRE5fT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTEpCisjZGVmaW5lIFBIWV9DT05UUk9MX0FORUdFTl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTAwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfQU5FR0VOX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTIpCisjZGVmaW5lIFBIWV9DT05UUk9MX1NQRUVEU0xfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MjAwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfU1BFRURTTF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTMpCisjZGVmaW5lIFBIWV9DT05UUk9MX0xPT1BCS19NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfTE9PUEJLX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTQpCisjZGVmaW5lIFBIWV9DT05UUk9MX1JFU0VUX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUkVTRVRfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTUpCisKKyNkZWZpbmUgUEhZX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEpCisjZGVmaW5lIFBIWV9TVEFUVVNfRVRYRF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxKQorI2RlZmluZSBQSFlfU1RBVFVTX0VYVERfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBQSFlfU1RBVFVTX0pBQl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MikKKyNkZWZpbmUgUEhZX1NUQVRVU19KQUJfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKQorI2RlZmluZSBQSFlfU1RBVFVTX0xJTktfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKKyNkZWZpbmUgUEhZX1NUQVRVU19MSU5LX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMikKKyNkZWZpbmUgUEhZX1NUQVRVU19BTkVHQV9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4KQorI2RlZmluZSBQSFlfU1RBVFVTX0FORUdBX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzKQorI2RlZmluZSBQSFlfU1RBVFVTX1JGQVVMVF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwKQorI2RlZmluZSBQSFlfU1RBVFVTX1JGQVVMVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0KQorI2RlZmluZSBQSFlfU1RBVFVTX0FORUdDX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwKQorI2RlZmluZSBQSFlfU1RBVFVTX0FORUdDX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorI2RlZmluZSBQSFlfU1RBVFVTXzEwVF9IX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwMCkKKyNkZWZpbmUgUEhZX1NUQVRVU18xMFRfSF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTEpCisjZGVmaW5lIFBIWV9TVEFUVVNfMTBUX0ZfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTAwMCkKKyNkZWZpbmUgUEhZX1NUQVRVU18xMFRfRl9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTIpCisjZGVmaW5lIFBIWV9TVEFUVVNfMTAwX1hfSF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MjAwMCkKKyNkZWZpbmUgUEhZX1NUQVRVU18xMDBfWF9IX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTMpCisjZGVmaW5lIFBIWV9TVEFUVVNfMTAwX1hfRl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwMCkKKyNkZWZpbmUgUEhZX1NUQVRVU18xMDBfWF9GX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTQpCisjZGVmaW5lIFBIWV9TVEFUVVNfMTAwVDRfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMCkKKyNkZWZpbmUgUEhZX1NUQVRVU18xMDBUNF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTUpCisKKyNkZWZpbmUgUEhZX0lEMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIpCisjZGVmaW5lIFBIWV9JRDFfT1VJX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGRkZGKQorI2RlZmluZSBQSFlfSUQxX09VSV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDApCisKKyNkZWZpbmUgUEhZX0lEMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMpCisjZGVmaW5lIFBIWV9JRDJfUk5fTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGKQorI2RlZmluZSBQSFlfSUQyX1JOX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDApCisjZGVmaW5lIFBIWV9JRDJfTU5fTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzRjApCisjZGVmaW5lIFBIWV9JRDJfTU5fT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNCkKKyNkZWZpbmUgUEhZX0lEMl9PVUlfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweEZDMDApCisjZGVmaW5lIFBIWV9JRDJfT1VJX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTApCisKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlRfU0VMRUNUT1JfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICgweDFGKQorI2RlZmluZSBQSFlfQVVUT19ORUdfQURWRVJUSVNFTUVOVF9TRUxFQ1RPUl9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgKDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX0EwX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwKQorI2RlZmluZSBQSFlfQVVUT19ORUdfQURWRVJUSVNFTUVOVF9BMF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNSkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlRfQTFfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX0ExX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg2KQorI2RlZmluZSBQSFlfQVVUT19ORUdfQURWRVJUSVNFTUVOVF9BMl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlRfQTJfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDcpCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX0EzX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlRfQTNfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDgpCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX0E0X01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwMCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0FEVkVSVElTRU1FTlRfQTRfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDkpCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX1RBRl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFGRTApCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX1RBRl9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorI2RlZmluZSBQSFlfQVVUT19ORUdfQURWRVJUSVNFTUVOVF9SRl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDAwKQorI2RlZmluZSBQSFlfQVVUT19ORUdfQURWRVJUSVNFTUVOVF9SRl9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTMpCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX1JTVkRfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwMDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX1JWU0RfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTQpCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX05QX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwMDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19BRFZFUlRJU0VNRU5UX05QX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxNSkKKworI2RlZmluZSBQSFlfQVVUT19ORUdfTElOS19QQVJUTkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorI2RlZmluZSBQSFlfQVVUT19ORUdfTElOS19QQVJUTkVSX1M0X01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxRikKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0xJTktfUEFSVE5FUl9TNF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19MSU5LX1BBUlRORVJfQTdfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFGRTApCisjZGVmaW5lIFBIWV9BVVRPX05FR19MSU5LX1BBUlRORVJfQTdfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorI2RlZmluZSBQSFlfQVVUT19ORUdfTElOS19QQVJUTkVSX1JGX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDAwKQorI2RlZmluZSBQSFlfQVVUT19ORUdfTElOS19QQVJUTkVSX1JGX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTMpCisjZGVmaW5lIFBIWV9BVVRPX05FR19MSU5LX1BBUlRORVJfQUNLX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwMDApCisjZGVmaW5lIFBIWV9BVVRPX05FR19MSU5LX1BBUlRORVJfQUNLX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxNCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0xJTktfUEFSVE5FUl9OUF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4ODAwMCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0xJTktfUEFSVE5FUl9OUF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE1KQorCisjZGVmaW5lIFBIWV9BVVRPX05FR19FWFBBTlNJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDYpCisjZGVmaW5lIFBIWV9BVVRPX05FR19FWFBBTlNJT05fTFBBTkVHQV9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEpCisjZGVmaW5lIFBIWV9BVVRPX05FR19FWFBBTlNJT05fTFBBTkVHQV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBQSFlfQVVUT19ORUdfRVhQQU5TSU9OX1BSWF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyKQorI2RlZmluZSBQSFlfQVVUT19ORUdfRVhQQU5TSU9OX1BSWF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0VYUEFOU0lPTl9OUEFfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0VYUEFOU0lPTl9OUEFfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIpCisjZGVmaW5lIFBIWV9BVVRPX05FR19FWFBBTlNJT05fTFBOUEFfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgpCisjZGVmaW5lIFBIWV9BVVRPX05FR19FWFBBTlNJT05fTFBOUEFfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzKQorI2RlZmluZSBQSFlfQVVUT19ORUdfRVhQQU5TSU9OX1BERl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMCkKKyNkZWZpbmUgUEhZX0FVVE9fTkVHX0VYUEFOU0lPTl9QREZfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQpCisKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxNikKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19SWENDX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19SWENDX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDApCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfUENTQlBfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfUENTQlBfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX1JWU1BPTF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMCkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19SVlNQT0xfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQpCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfQVBPTF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwKSAgCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfQVBPTF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX0dQSU8wX0RJUl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MCkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19HUElPMF9ESVJfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDYpCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfR1BJTzBfREFUX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX0dQSU8wX0RBVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNykKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19HUElPMV9ESVJfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTAwKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX0dQSU8xX0RJUl9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOCkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19HUElPMV9EQVRfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MjAwKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX0dQSU8xX0RBVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOSkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ18xMEJUX05BVFVSQUxfTE9PUEJBQ0tfREFUX01TSyAgICAgICAoMHg0MDApCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfMTBCVF9OQVRVUkFMX0xPT1BCQUNLX0RBVF9PRlNUICAgICAgKDEwKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDXzEwQlRfU1FFX1RFU1RfSU5ISUJJVF9NU0sgICAgICAgICAgICgweDgwMCkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ18xMEJUX1NRRV9URVNUX0lOSElCSVRfT0ZTVCAgICAgICAgICAoMTEpCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfVFhISU1fTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMDApCisjZGVmaW5lIFBIWV9WRU5ET1JfU1BFQ0lGSUNfVFhISU1fT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMikKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19JTlRfTEVWRUxfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwMCkKKyNkZWZpbmUgUEhZX1ZFTkRPUl9TUEVDSUZJQ19JTlRfTEVWRUxfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE0KQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX1JQVFJfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MDAwKQorI2RlZmluZSBQSFlfVkVORE9SX1NQRUNJRklDX1JQVFJfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTUpCisKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxNykKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0FORUdfQ09NUF9JTlRfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0FORUdfQ09NUF9JTlRfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDApCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9SRkFVTFRfSU5UX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9SRkFVTFRfSU5UX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfTFNfQ0hHX0lOVF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0KQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfTFNfQ0hHX0lOVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMikKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0xQX0FDS19JTlRfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4OCkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0xQX0FDS19JTlRfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9QREZfSU5UX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTApCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9QREZfSU5UX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0KQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfUFJYX0lOVF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfUFJYX0lOVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNSkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX1JYRVJfSU5UX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDApCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9SWEVSX0lOVF9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg2KQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfSkFCQkVSX0lOVF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MCkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0pBQkJFUl9JTlRfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDcpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9BTkVHX0NPTVBfSUVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMCkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0FORUdfQ09NUF9JRV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDgpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9SRkFVTFRfSUVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDIwMCkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX1JGQVVMVF9JRV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDkpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9MU19DSEdfSUVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDQwMCkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX0xTX0NIR19JRV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEwKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfTFBfQUNLX0lFX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MDApCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9MUF9BQ0tfSUVfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMSkKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX1BERl9JRV9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxMDAwKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfUERGX0lFX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMikKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX1BSWF9JRV9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDAwKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfUFJYX0lFX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMykKKyNkZWZpbmUgUEhZX0lSUV9DT05UUk9MX1JYRVJfSUVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg0MDAwKQorI2RlZmluZSBQSFlfSVJRX0NPTlRST0xfUlhFUl9JRV9PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTQpCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9KQUJCRVJfSUVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDgwMDApCisjZGVmaW5lIFBIWV9JUlFfQ09OVFJPTF9KQUJCRVJfSUVfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxNSkKKworI2RlZmluZSBQSFlfRElBR05PU1RJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE4KQorI2RlZmluZSBQSFlfRElBR05PU1RJQ19SWF9MT0NLX01TSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMCkKKyNkZWZpbmUgUEhZX0RJQUdOT1NUSUNfUlhfTE9DS19PRlNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOCkKKyNkZWZpbmUgUEhZX0RJQUdOT1NUSUNfUlhfUEFTU19NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyMDApCisjZGVmaW5lIFBIWV9ESUFHTk9TVElDX1JYX1BBU1NfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDkpCisjZGVmaW5lIFBIWV9ESUFHTk9TVElDX1JBVEVfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4NDAwKQorI2RlZmluZSBQSFlfRElBR05PU1RJQ19SQVRFX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMCkKKyNkZWZpbmUgUEhZX0RJQUdOT1NUSUNfRFBMWF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg4MDApCisjZGVmaW5lIFBIWV9ESUFHTk9TVElDX0RQTFhfT0ZTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDExKQorI2RlZmluZSBQSFlfRElBR05PU1RJQ19BTkVHRl9NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwMDApCisjZGVmaW5lIFBIWV9ESUFHTk9TVElDX0FORUdGX09GU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEyKQorCisjZW5kaWYgLyogX19UREtQSFlfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdGltZXIwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdGltZXIwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYTNmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi90aW1lcjAwLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqICAKKyAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciB0aGUgRXhjYWxpYnVyCisgKiAgVGltZXIgVElNRVIwMC4KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIEFsdGVyYSBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX1RJTUVSMDBfSAorI2RlZmluZSBfX1RJTUVSMDBfSAorCisvKgorICogUmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRoZSB0aW1lcnMKKyAqLworCisKKyNkZWZpbmUgVElNRVIwX0NSKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDAgKSkKKyNkZWZpbmUgVElNRVIwX0NSX0JfTVNLICgweDIwKQorI2RlZmluZSBUSU1FUjBfQ1JfQl9PRlNUICgweDUpCisjZGVmaW5lIFRJTUVSMF9DUl9TX01TSyAgKDB4MTApCisjZGVmaW5lIFRJTUVSMF9DUl9TX09GU1QgKDB4NCkKKyNkZWZpbmUgVElNRVIwX0NSX0NJX01TSyAoMHgwOCkKKyNkZWZpbmUgVElNRVIwX0NSX0NJX09GU1QgKDB4MykKKyNkZWZpbmUgVElNRVIwX0NSX0lFX01TSyAoMHgwNCkKKyNkZWZpbmUgVElNRVIwX0NSX0lFX09GU1QgKDB4MikKKyNkZWZpbmUgVElNRVIwX0NSX01PREVfTVNLICgweDMpCisjZGVmaW5lIFRJTUVSMF9DUl9NT0RFX09GU1QgKDApCisjZGVmaW5lIFRJTUVSMF9DUl9NT0RFX0ZSRUUgKDApCisjZGVmaW5lIFRJTUVSMF9DUl9NT0RFX09ORSAgKDEpCisjZGVmaW5lIFRJTUVSMF9DUl9NT0RFX0lOVFZMICgyKQorCisjZGVmaW5lIFRJTUVSMF9TUihCQVNFX0FERFIpIChUSU1FUjAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDAwICkpCisjZGVmaW5lIFRJTUVSMF9TUl9CX01TSyAoMHgyMCkKKyNkZWZpbmUgVElNRVIwX1NSX0JfT0ZTVCAoMHg1KQorI2RlZmluZSBUSU1FUjBfU1JfU19NU0sgICgweDEwKQorI2RlZmluZSBUSU1FUjBfU1JfU19PRlNUICgweDQpCisjZGVmaW5lIFRJTUVSMF9TUl9DSV9NU0sgKDB4MDgpCisjZGVmaW5lIFRJTUVSMF9TUl9DSV9PRlNUICgweDMpCisjZGVmaW5lIFRJTUVSMF9TUl9JRV9NU0sgKDB4MDQpCisjZGVmaW5lIFRJTUVSMF9TUl9JRV9PRlNUICgweDIpCisjZGVmaW5lIFRJTUVSMF9TUl9NT0RFX01TSyAoMHgzKQorI2RlZmluZSBUSU1FUjBfU1JfTU9ERV9PRlNUICgwKQorI2RlZmluZSBUSU1FUjBfU1JfTU9ERV9GUkVFICgwKQorI2RlZmluZSBUSU1FUjBfU1JfTU9ERV9PTkUgICgxKQorI2RlZmluZSBUSU1FUjBfU1JfTU9ERV9JTlRWTCAoMikKKworI2RlZmluZSBUSU1FUjBfUFJFU0NBTEUoQkFTRV9BRERSKSAoVElNRVIwMF9UWVBFIChCQVNFX0FERFIgICsgMHgwMTAgKSkKKyNkZWZpbmUgVElNRVIwX0xJTUlUKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDIwICkpCisjZGVmaW5lIFRJTUVSMF9SRUFEKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDMwICkpCisKKyNkZWZpbmUgVElNRVIxX0NSKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4NDAgKSkKKyNkZWZpbmUgVElNRVIxX0NSX0JfTVNLICgweDIwKQorI2RlZmluZSBUSU1FUjFfQ1JfQl9PRlNUICgweDUpCisjZGVmaW5lIFRJTUVSMV9DUl9TX01TSyAgKDB4MTApCisjZGVmaW5lIFRJTUVSMV9DUl9TX09GU1QgKDB4NCkKKyNkZWZpbmUgVElNRVIxX0NSX0NJX01TSyAoMHgwOCkKKyNkZWZpbmUgVElNRVIxX0NSX0NJX09GU1QgKDB4MykKKyNkZWZpbmUgVElNRVIxX0NSX0lFX01TSyAoMHgwNCkKKyNkZWZpbmUgVElNRVIxX0NSX0lFX09GU1QgKDB4MikKKyNkZWZpbmUgVElNRVIxX0NSX01PREVfTVNLICgweDMpCisjZGVmaW5lIFRJTUVSMV9DUl9NT0RFX09GU1QgKDApCisjZGVmaW5lIFRJTUVSMV9DUl9NT0RFX0ZSRUUgKDApCisjZGVmaW5lIFRJTUVSMV9DUl9NT0RFX09ORSAgKDEpCisjZGVmaW5lIFRJTUVSMV9DUl9NT0RFX0lOVFZMICgyKQorCisjZGVmaW5lIFRJTUVSMV9TUihCQVNFX0FERFIpIChUSU1FUjAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDQwICkpCisjZGVmaW5lIFRJTUVSMV9TUl9CX01TSyAoMHgyMCkKKyNkZWZpbmUgVElNRVIxX1NSX0JfT0ZTVCAoMHg1KQorI2RlZmluZSBUSU1FUjFfU1JfU19NU0sgICgweDEwKQorI2RlZmluZSBUSU1FUjFfU1JfU19PRlNUICgweDQpCisjZGVmaW5lIFRJTUVSMV9TUl9DSV9NU0sgKDB4MDgpCisjZGVmaW5lIFRJTUVSMV9TUl9DSV9PRlNUICgweDMpCisjZGVmaW5lIFRJTUVSMV9TUl9JRV9NU0sgKDB4MDQpCisjZGVmaW5lIFRJTUVSMV9TUl9JRV9PRlNUICgweDIpCisjZGVmaW5lIFRJTUVSMV9TUl9NT0RFX01TSyAoMHgzKQorI2RlZmluZSBUSU1FUjFfU1JfTU9ERV9PRlNUICgwKQorI2RlZmluZSBUSU1FUjFfU1JfTU9ERV9GUkVFICgwKQorI2RlZmluZSBUSU1FUjFfU1JfTU9ERV9PTkUgICgxKQorI2RlZmluZSBUSU1FUjFfU1JfTU9ERV9JTlRWTCAoMikKKworI2RlZmluZSBUSU1FUjFfUFJFU0NBTEUoQkFTRV9BRERSKSAoVElNRVIwMF9UWVBFIChCQVNFX0FERFIgICsgMHgwNTAgKSkKKyNkZWZpbmUgVElNRVIxX0xJTUlUKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDYwICkpCisjZGVmaW5lIFRJTUVSMV9SRUFEKEJBU0VfQUREUikgKFRJTUVSMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDcwICkpCisKKyNlbmRpZiAvKiBfX1RJTUVSMDBfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3YTc1ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3RpbWV4LmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi90aW1leC5oCisgKgorICogIEV4Y2FsaWJ1ciB0aW1leCBzcGVjaWZpY2F0aW9ucworICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgQWx0ZXJhIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKy8qCisgKiA/PworICovCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJKDUwMDAwMDAwIC8gMTYpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi91YXJ0MDAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3VhcnQwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYmQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lcHhhMTBkYi91YXJ0MDAuaApAQCAtMCwwICsxLDE4MSBAQAorLyogKgorICogIENvcHlyaWdodCAoQykgMjAwMSBBbHRlcmEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19VQVJUMDBfSAorI2RlZmluZSBfX1VBUlQwMF9ICisKKy8qCisgKiBSZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgdGhlIFVBUlQKKyAqLworCisjZGVmaW5lIFVBUlRfVFhfRklGT19TSVpFICAgICAgKDE1KQorCisjZGVmaW5lIFVBUlRfUlNSKEJBU0VfQUREUikgKFVBUlQwMF9UWVBFIChCQVNFX0FERFIgICsgMHgwMCApKQorI2RlZmluZSBVQVJUX1JTUl9SWF9MRVZFTF9NU0sgKDB4MWYpCisjZGVmaW5lIFVBUlRfUlNSX1JYX0xFVkVMX09GU1QgKDApCisjZGVmaW5lIFVBUlRfUlNSX1JFX01TSyAoMHg4MCkKKyNkZWZpbmUgVUFSVF9SU1JfUkVfT0ZTVCAoNykKKworI2RlZmluZSBVQVJUX1JEUyhCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDQgKSkKKyNkZWZpbmUgVUFSVF9SRFNfQklfTVNLICgweDgpCisjZGVmaW5lIFVBUlRfUkRTX0JJX09GU1QgKDQpCisjZGVmaW5lIFVBUlRfUkRTX0ZFX01TSyAoMHg0KQorI2RlZmluZSBVQVJUX1JEU19GRV9PRlNUICgyKQorI2RlZmluZSBVQVJUX1JEU19QRV9NU0sgKDB4MikKKyNkZWZpbmUgVUFSVF9SRFNfUEVfT0ZTVCAoMSkKKyNkZWZpbmUgVUFSVF9SRFNfT0VfTVNLICgweDEpCisjZGVmaW5lIFVBUlRfUkRTX09FX09GU1QgKDApCisKKyNkZWZpbmUgVUFSVF9SRChCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MDggKSkKKyNkZWZpbmUgVUFSVF9SRF9SWF9EQVRBX01TSyAoMHhmZikKKyNkZWZpbmUgVUFSVF9SRF9SWF9EQVRBX09GU1QgKDApCisKKyNkZWZpbmUgVUFSVF9UU1IoQkFTRV9BRERSKSAoVUFSVDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDBjICkpCisjZGVmaW5lIFVBUlRfVFNSX1RYX0xFVkVMX01TSyAoMHgxZikKKyNkZWZpbmUgVUFSVF9UU1JfVFhfTEVWRUxfT0ZTVCAoMCkKKyNkZWZpbmUgVUFSVF9UU1JfVFhJX01TSyAoMHg4MCkKKyNkZWZpbmUgVUFSVF9UU1JfVFhJX09GU1QgKDcpCisKKyNkZWZpbmUgVUFSVF9URChCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MTAgKSkKKyNkZWZpbmUgVUFSVF9URF9UWF9EQVRBX01TSyAoMHhmZikKKyNkZWZpbmUgVUFSVF9URF9UWF9EQVRBX09GU1QgKDApCisKKyNkZWZpbmUgVUFSVF9GQ1IoQkFTRV9BRERSKSAoVUFSVDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDE0ICkpCisjZGVmaW5lIFVBUlRfRkNSX1JYX1RIUl9NU0sgKDB4ZDApCisjZGVmaW5lIFVBUlRfRkNSX1JYX1RIUl9PRlNUICg1KQorI2RlZmluZSBVQVJUX0ZDUl9SWF9USFJfMSAoMHgwMCkKKyNkZWZpbmUgVUFSVF9GQ1JfUlhfVEhSXzIgKDB4MjApCisjZGVmaW5lIFVBUlRfRkNSX1JYX1RIUl80ICgweDQwKQorI2RlZmluZSBVQVJUX0ZDUl9SWF9USFJfNiAoMHg2MCkKKyNkZWZpbmUgVUFSVF9GQ1JfUlhfVEhSXzggKDB4ODApCisjZGVmaW5lIFVBUlRfRkNSX1JYX1RIUl8xMCAoMHhhMCkKKyNkZWZpbmUgVUFSVF9GQ1JfUlhfVEhSXzEyICgweGMwKQorI2RlZmluZSBVQVJUX0ZDUl9SWF9USFJfMTQgKDB4ZDApCisjZGVmaW5lIFVBUlRfRkNSX1RYX1RIUl9NU0sgKDB4MWMpCisjZGVmaW5lIFVBUlRfRkNSX1RYX1RIUl9PRlNUICgyKQorI2RlZmluZSBVQVJUX0ZDUl9UWF9USFJfMCAoMHgwMCkKKyNkZWZpbmUgVUFSVF9GQ1JfVFhfVEhSXzIgKDB4MDQpCisjZGVmaW5lIFVBUlRfRkNSX1RYX1RIUl80ICgweDA4KQorI2RlZmluZSBVQVJUX0ZDUl9UWF9USFJfOCAoMHgwYykKKyNkZWZpbmUgVUFSVF9GQ1JfVFhfVEhSXzEwICgweDEwKQorI2RlZmluZSBVQVJUX0ZDUl9UWF9USFJfMTIgKDB4MTQpCisjZGVmaW5lIFVBUlRfRkNSX1RYX1RIUl8xNCAoMHgxOCkKKyNkZWZpbmUgVUFSVF9GQ1JfVFhfVEhSXzE1ICgweDFjKQorI2RlZmluZSBVQVJUX0ZDUl9SQ19NU0sgKDB4MDIpCisjZGVmaW5lIFVBUlRfRkNSX1JDX09GU1QgKDEpCisjZGVmaW5lIFVBUlRfRkNSX1RDX01TSyAoMHgwMSkKKyNkZWZpbmUgVUFSVF9GQ1JfVENfT0ZTVCAoMCkKKworI2RlZmluZSBVQVJUX0lFUyhCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MTggKSkKKyNkZWZpbmUgVUFSVF9JRVNfTUVfTVNLICgweDgpCisjZGVmaW5lIFVBUlRfSUVTX01FX09GU1QgKDMpCisjZGVmaW5lIFVBUlRfSUVTX1RJRV9NU0sgKDB4NCkKKyNkZWZpbmUgVUFSVF9JRVNfVElFX09GU1QgKDIpCisjZGVmaW5lIFVBUlRfSUVTX1RFX01TSyAoMHgyKQorI2RlZmluZSBVQVJUX0lFU19URV9PRlNUICgxKQorI2RlZmluZSBVQVJUX0lFU19SRV9NU0sgKDB4MSkKKyNkZWZpbmUgVUFSVF9JRVNfUkVfT0ZTVCAoMCkKKworI2RlZmluZSBVQVJUX0lFQyhCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MWMgKSkKKyNkZWZpbmUgVUFSVF9JRUNfTUVfTVNLICgweDgpCisjZGVmaW5lIFVBUlRfSUVDX01FX09GU1QgKDMpCisjZGVmaW5lIFVBUlRfSUVDX1RJRV9NU0sgKDB4NCkKKyNkZWZpbmUgVUFSVF9JRUNfVElFX09GU1QgKDIpCisjZGVmaW5lIFVBUlRfSUVDX1RFX01TSyAoMHgyKQorI2RlZmluZSBVQVJUX0lFQ19URV9PRlNUICgxKQorI2RlZmluZSBVQVJUX0lFQ19SRV9NU0sgKDB4MSkKKyNkZWZpbmUgVUFSVF9JRUNfUkVfT0ZTVCAoMCkKKworI2RlZmluZSBVQVJUX0lTUihCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MjAgKSkKKyNkZWZpbmUgVUFSVF9JU1JfTUlfTVNLICgweDgpCisjZGVmaW5lIFVBUlRfSVNSX01JX09GU1QgKDMpCisjZGVmaW5lIFVBUlRfSVNSX1RJSV9NU0sgKDB4NCkKKyNkZWZpbmUgVUFSVF9JU1JfVElJX09GU1QgKDIpCisjZGVmaW5lIFVBUlRfSVNSX1RJX01TSyAoMHgyKQorI2RlZmluZSBVQVJUX0lTUl9USV9PRlNUICgxKQorI2RlZmluZSBVQVJUX0lTUl9SSV9NU0sgKDB4MSkKKyNkZWZpbmUgVUFSVF9JU1JfUklfT0ZTVCAoMCkKKworI2RlZmluZSBVQVJUX0lJRChCQVNFX0FERFIpIChVQVJUMDBfVFlQRSAoQkFTRV9BRERSICArIDB4MjQgKSkKKyNkZWZpbmUgVUFSVF9JSURfSUlEX01TSyAoMHg3KQorI2RlZmluZSBVQVJUX0lJRF9JSURfT0ZTVCAoMCkKKworI2RlZmluZSBVQVJUX01DKEJBU0VfQUREUikgKFVBUlQwMF9UWVBFIChCQVNFX0FERFIgICsgMHgyOCApKQorI2RlZmluZSBVQVJUX01DX09FX01TSyAoMHg0MCkKKyNkZWZpbmUgVUFSVF9NQ19PRV9PRlNUICg2KQorI2RlZmluZSBVQVJUX01DX1NQX01TSyAoMHgyMCkKKyNkZWZpbmUgVUFSVF9NQ19TUF9PRlNUICg1KQorI2RlZmluZSBVQVJUX01DX0VQX01TSyAoMHgxMCkKKyNkZWZpbmUgVUFSVF9NQ19FUF9PRlNUICg0KQorI2RlZmluZSBVQVJUX01DX1BFX01TSyAoMHgwOCkKKyNkZWZpbmUgVUFSVF9NQ19QRV9PRlNUICgzKQorI2RlZmluZSBVQVJUX01DX1NUX01TSyAoMHgwNCkKKyNkZWZpbmUgVUFSVF9NQ19TVF9PTkUgKDB4MCkKKyNkZWZpbmUgVUFSVF9NQ19TVF9UV08gKDB4MDQpCisjZGVmaW5lIFVBUlRfTUNfU1RfT0ZTVCAoMikKKyNkZWZpbmUgVUFSVF9NQ19DTFNfTVNLICgweDAzKQorI2RlZmluZSBVQVJUX01DX0NMU19PRlNUICgwKQorI2RlZmluZSBVQVJUX01DX0NMU19DSEFSTEVOXzUgKDApCisjZGVmaW5lIFVBUlRfTUNfQ0xTX0NIQVJMRU5fNiAoMSkKKyNkZWZpbmUgVUFSVF9NQ19DTFNfQ0hBUkxFTl83ICgyKQorI2RlZmluZSBVQVJUX01DX0NMU19DSEFSTEVOXzggKDMpCisKKyNkZWZpbmUgVUFSVF9NQ1IoQkFTRV9BRERSKSAoVUFSVDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDJjICkpCisjZGVmaW5lIFVBUlRfTUNSX0FDX01TSyAoMHg4MCkKKyNkZWZpbmUgVUFSVF9NQ1JfQUNfT0ZTVCAoNykKKyNkZWZpbmUgVUFSVF9NQ1JfQVJfTVNLICgweDQwKQorI2RlZmluZSBVQVJUX01DUl9BUl9PRlNUICg2KQorI2RlZmluZSBVQVJUX01DUl9CUl9NU0sgKDB4MjApCisjZGVmaW5lIFVBUlRfTUNSX0JSX09GU1QgKDUpCisjZGVmaW5lIFVBUlRfTUNSX0xCX01TSyAoMHgxMCkKKyNkZWZpbmUgVUFSVF9NQ1JfTEJfT0ZTVCAoNCkKKyNkZWZpbmUgVUFSVF9NQ1JfRENEX01TSyAoMHgwOCkKKyNkZWZpbmUgVUFSVF9NQ1JfRENEX09GU1QgKDMpCisjZGVmaW5lIFVBUlRfTUNSX1JJX01TSyAoMHgwNCkKKyNkZWZpbmUgVUFSVF9NQ1JfUklfT0ZTVCAoMikKKyNkZWZpbmUgVUFSVF9NQ1JfRFRSX01TSyAoMHgwMikKKyNkZWZpbmUgVUFSVF9NQ1JfRFRSX09GU1QgKDEpCisjZGVmaW5lIFVBUlRfTUNSX1JUU19NU0sgKDB4MDEpCisjZGVmaW5lIFVBUlRfTUNSX1JUU19PRlNUICgwKQorCisjZGVmaW5lIFVBUlRfTVNSKEJBU0VfQUREUikgKFVBUlQwMF9UWVBFIChCQVNFX0FERFIgICsgMHgzMCApKQorI2RlZmluZSBVQVJUX01TUl9EQ0RfTVNLICgweDgwKQorI2RlZmluZSBVQVJUX01TUl9EQ0RfT0ZTVCAoNykKKyNkZWZpbmUgVUFSVF9NU1JfUklfTVNLICgweDQwKQorI2RlZmluZSBVQVJUX01TUl9SSV9PRlNUICg2KQorI2RlZmluZSBVQVJUX01TUl9EU1JfTVNLICgweDIwKQorI2RlZmluZSBVQVJUX01TUl9EU1JfT0ZTVCAoNSkKKyNkZWZpbmUgVUFSVF9NU1JfQ1RTX01TSyAoMHgxMCkKKyNkZWZpbmUgVUFSVF9NU1JfQ1RTX09GU1QgKDQpCisjZGVmaW5lIFVBUlRfTVNSX0REQ0RfTVNLICgweDA4KQorI2RlZmluZSBVQVJUX01TUl9ERENEX09GU1QgKDMpCisjZGVmaW5lIFVBUlRfTVNSX1RFUklfTVNLICgweDA0KQorI2RlZmluZSBVQVJUX01TUl9URVJJX09GU1QgKDIpCisjZGVmaW5lIFVBUlRfTVNSX0REU1JfTVNLICgweDAyKQorI2RlZmluZSBVQVJUX01TUl9ERFNSX09GU1QgKDEpCisjZGVmaW5lIFVBUlRfTVNSX0RDVFNfTVNLICgweDAxKQorI2RlZmluZSBVQVJUX01TUl9EQ1RTX09GU1QgKDApCisKKyNkZWZpbmUgVUFSVF9ESVZfTE8oQkFTRV9BRERSKSAoVUFSVDAwX1RZUEUgKEJBU0VfQUREUiAgKyAweDM0ICkpCisjZGVmaW5lIFVBUlRfRElWX0xPX0RJVl9NU0sgKDB4ZmYpCisjZGVmaW5lIFVBUlRfRElWX0xPX0RJVl9PRlNUICgwKQorCisjZGVmaW5lIFVBUlRfRElWX0hJKEJBU0VfQUREUikgKFVBUlQwMF9UWVBFIChCQVNFX0FERFIgICsgMHgzOCApKQorI2RlZmluZSBVQVJUX0RJVl9ISV9ESVZfTVNLICgweGZmKQorI2RlZmluZSBVQVJUX0RJVl9ISV9ESVZfT0ZTVCAoMCkKKworI2VuZGlmIC8qIF9fVUFSVDAwX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzNhZDZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdW5jb21wcmVzcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdW5jb21wcmVzcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBBUk0gTGltaXRlZAorICogIENvcHlyaWdodCAoQykgMjAwMSBBbHRlcmEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpbmNsdWRlICJhc20vYXJjaC9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImFzbS9hcmNoL2hhcmR3YXJlLmgiCisjZGVmaW5lIFVBUlQwMF9UWVBFICh2b2xhdGlsZSB1bnNpZ25lZCBpbnQqKQorI2luY2x1ZGUgImFzbS9hcmNoL3VhcnQwMC5oIgorCisvKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykgeworCQl3aGlsZSAoKCpVQVJUX1RTUihFWENfVUFSVDAwX0JBU0UpICYKKwkJICAgICAgIFVBUlRfVFNSX1RYX0xFVkVMX01TSyk9PTE1KQorCQkJYmFycmllcigpOworCisJCSpVQVJUX1REKEVYQ19VQVJUMDBfQkFTRSkgPSAqczsKKworCQlpZiAoKnMgPT0gJ1xuJykgeworCQkJd2hpbGUgKCgqVUFSVF9UU1IoRVhDX1VBUlQwMF9CQVNFKSAmCisJCQkgICAgICAgVUFSVF9UU1JfVFhfTEVWRUxfTVNLKT09MTUpCisJCQkJYmFycmllcigpOworCisJCQkqVUFSVF9URChFWENfVUFSVDAwX0JBU0UpID0gJ1xyJzsKKwkJfQorCQlzKys7CisJfQorfQorCisvKgorICogbm90aGluZyB0byBkbworICovCisjZGVmaW5lIGFyY2hfZGVjb21wX3NldHVwKCkKKworI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3ZtYWxsb2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWVweGExMGRiL3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzFlZjg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZXB4YTEwZGIvdm1hbGxvYy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKy8qCisgKiBKdXN0IGFueSBhcmJpdHJhcnkgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyBWTSBhcmVhOiB0aGUKKyAqIGN1cnJlbnQgOE1CIHZhbHVlIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgOE1CICJob2xlIiBhZnRlciB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB1bnRpbCB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN0YXJ0cy4gIFRoYXQgbWVhbnMgdGhhdAorICogYW55IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdpbGwgaG9wZWZ1bGx5IGJlIGNhdWdodC4KKyAqIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2VlbiBlYWNoIHZtYWxsb2NlZAorICogYXJlYSBmb3IgdGhlIHNhbWUgcmVhc29uLiA7KQorICovCisjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUCSAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfRU5EICAgICAgIChQQUdFX09GRlNFVCArIDB4MTAwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9ib2FyZHMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2JvYXJkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMjFmODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9ib2FyZHMuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvYm9hcmRzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CisgKiAgICAgICAgICAgKEMpIDIwMDMgUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgYm9hcmQgc3BlY2lmaWMgZGVmaW5lcyBmb3IgdmFyaW91cyBkZXZpY2VzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSU5DTUFDSF9ICisjZXJyb3IgRG8gbm90IGluY2x1ZGUgdGhpcyBmaWxlIGRpcmVjdGx5LiBJbmNsdWRlIGFzbS9oYXJkd2FyZS5oIGluc3RlYWQgIQorI2VuZGlmCisKKy8qIEh5bml4IEg3MjAyIGRldmVsb3BlciBib2FyZCBzcGVjaWZpYyBkZXZpY2UgZGVmaW5lcyAqLworI2lmZGVmIENPTkZJR19BUkNIX0g3MjAyCisKKy8qIEZMQVNIICovCisjZGVmaW5lIEZMQVNIX1ZJUlQJCTB4ZDAwMDAwMDAKKyNkZWZpbmUgRkxBU0hfUEhZUwkJMHgwMDAwMDAwMAorI2RlZmluZSBGTEFTSF9TSVpFCQkweDAyMDAwMDAwCisKKy8qIG9uYm9hcmQgTEFOIGNvbnRyb2xsZXIgKi8KKyMgZGVmaW5lIEVUSDBfUEhZUwkJMHgwODAwMDAwMAorCisvKiBUb3VjaCBzY3JlZW4gZGVmaW5lcyAqLworLyogR1BJTyBQb3J0ICovCisjZGVmaW5lIFBFTl9HUElPCQlHUElPX0JfVklSVAorLyogQml0bWFzayBmb3IgcGVuIGRvd24gaW50ZXJydXB0ICovCisjZGVmaW5lIFBFTl9JTlRfQklUCQkoMTw8NykKKy8qIEJpdG1hc2sgZm9yIHBlbiB1cCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgUEVOX0VOQV9CSVQJCSgxPDw2KQorLyogcGVuIHVwIGludGVycnVwdCAqLworI2RlZmluZSBJUlFfUEVOCQkJSVJRX01VWF9HUElPQig3KQorCisjZW5kaWYKKworLyogSHluaXggSDcyMDEgZGV2ZWxvcGVyIGJvYXJkIHNwZWNpZmljIGRldmljZSBkZWZpbmVzICovCisjaWYgZGVmaW5lZCAoQ09ORklHX0FSQ0hfSDcyMDEpCisvKiBST00gRElTSyBTUEFDRSAqLworI2RlZmluZSBST01fRElTS19CQVNFICAgICAgICAgICAweGMxODAwMDAwCisjZGVmaW5lIFJPTV9ESVNLX1NUQVJUICAgICAgICAgIDB4NDE4MDAwMDAKKyNkZWZpbmUgUk9NX0RJU0tfU0laRSAgICAgICAgICAgMHgwMDcwMDAwMAorCisvKiBTUkFNIERJU0sgU1BBQ0UgKi8KKyNkZWZpbmUgU1JBTV9ESVNLX0JBU0UgICAgICAgICAgMHhmMTAwMDAwMAorI2RlZmluZSBTUkFNX0RJU0tfU1RBUlQgICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIFNSQU1fRElTS19TSVpFICAgICAgICAgIDB4MDA0MDAwMDAKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjgyMmQzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDQwIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisJCS5lcXUgICAgaW9fdmlydCwgSU9fQkFTRQorCQkuZXF1ICAgIGlvX3BoeXMsIElPX1NUQVJUCisKKwkJLm1hY3JvICBhZGRydWFydCxyeAorCQltcmMgICAgIHAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0ICAgICBccngsICMxICAJICAgICAgIEAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxICAgXHJ4LCAjaW9fcGh5cwkgICAgICAgQCBwaHlzaWNhbCBiYXNlIGFkZHJlc3MKKwkJbW92bmUgICBccngsICNpb192aXJ0CSAgICAgICBAIHZpcnR1YWwgYWRkcmVzcworCQlhZGQgICAgIFxyeCwgXHJ4LCAjMHgwMDAyMDAwMCAgIEAgVUFSVDEKKwkJLmVuZG0KKworCQkubWFjcm8gIHNlbmR1YXJ0LHJkLHJ4CisJCXN0ciAgICAgXHJkLCBbXHJ4LCAjMHgwXSAgICAgICAgQCBVQVJURFIKKworCQkuZW5kbQorCisJCS5tYWNybyAgd2FpdHVhcnQscmQscngKKzEwMDE6CQlsZHIgICAgIFxyZCwgW1xyeCwgIzB4MThdICAgICAgIEAgVUFSVEZMRworCQl0c3QgICAgIFxyZCwgIzEgPDwgNQkgICAgICAgQCBVQVJURkxHVVRYRkYgLSAxIHdoZW4gZnVsbAorCQlibmUgICAgIDEwMDFiCisJCS5lbmRtCisKKwkJLm1hY3JvICBidXN5dWFydCxyZCxyeAorMTAwMToJCWxkciAgICAgXHJkLCBbXHJ4LCAjMHgxOF0gICAgICAgQCBVQVJURkxHCisJCXRzdCAgICAgXHJkLCAjMSA8PCAzCSAgICAgICBAIFVBUlRGTEdVQlVTWSAtIDEgd2hlbiBidXN5CisJCWJuZSAgICAgMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZjNjYzNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2RtYS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9kbWEuaAorICoKKyAqIEFyY2hpdGVjdHVyZSBETUEgcm91dGVzCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3LjE5OTggUnVzc2VsbCBLaW5nCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKy8qCisgKiBUaGlzIGlzIHRoZSBtYXhpbXVtIERNQSBhZGRyZXNzIHRoYXQgY2FuIGJlIERNQWQgdG8uCisgKiBUaGVyZSBzaG91bGQgbm90IGJlIG1vcmUgdGhhbiAoMHhkMDAwMDAwMCAtIDB4YzAwMDAwMDApCisgKiBieXRlcyBvZiBSQU0uCisgKi8KKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGQwMDAwMDAwCisKKyNpZiBkZWZpbmVkIChDT05GSUdfQ1BVX0g3MjAxKQorI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTMKKyNlbGlmIGRlZmluZWQgKENPTkZJR19DUFVfSDcyMDIpCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJNAorI2Vsc2UKKyNlcnJvciBwcm9jZXNzb3IgZGVmaW5pdGlvbiBtaXNzbWF0Y2gKKyNlbmRpZgorCisjZW5kaWYgLyogX19BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNjU2NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIEh5bml4IEhNUzcyMHggYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworCQkubWFjcm8gIGRpc2FibGVfZmlxCisJCS5lbmRtCisKKwkJLm1hY3JvICBnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKyNpZiBkZWZpbmVkIChDT05GSUdfQ1BVX0g3MjAxKSB8fCBkZWZpbmVkIChDT05GSUdfQ1BVX0g3MjAyKQorCQlAIHdlIGNvdWxkIHVzZSB0aGUgaWQgcmVnaXN0ZXIgb24gSDcyMDIsIGJ1dCB0aGlzIGlzIG5vdAorCQlAIHByb3Blcmx5IHVwZGF0ZWQgd2hlbiB3ZSBjb21lIGJhY2sgZnJvbSBhc21fZG9faXJxCisJCUAgd2l0aG91dCBhIHByZXZpb3VzIHJldHVybiBmcm9tIGludGVycnVwdAorCQlAIChzZWUgbG9vcHMgYmVsb3cgaW4gaXJxX3N2YywgaXJxX3VzcikKKwkJQCBXZSBzZWUgdW5tYXNrZWQgcGVuZGluZyBpbnRzIG9ubHksIGFzIHRoZSBtYXNrZWQgcGVuZGluZyBpbnRzCisJCUAgYXJlIG5vdCB2aXNpYmxlIGhlcmUKKworCQltb3YgICAgIFxiYXNlLCAjMHhmMDAwMDAwMAkgICAgICAgQCBiYXNlIHJlZ2lzdGVyCisJCW9yciAgICAgXGJhc2UsIFxiYXNlLCAjMHgyNDAwMAkgICAgICAgQCBpcnFiYXNlCisJCWxkciAgICAgXGlycXN0YXQsIFtcYmFzZSwgIzB4MDRdICAgICAgICBAIGdldCBpbnRlcnJ1cHQgc3RhdHVzCisjaWYgZGVmaW5lZCAoQ09ORklHX0NQVV9INzIwMSkKKwkJbGRyCVx0bXAsID0weDAwMWZmZmZmCisjZWxzZQorCQltdm4gICAgIFx0bXAsICMweGMwMDAwMDAwCisjZW5kaWYKKwkJYW5kICAgICBcaXJxc3RhdCwgXGlycXN0YXQsIFx0bXAgICAgICAgIEAgbWFzayBvdXQgdW51c2VkIGludHMKKwkJbW92ICAgICBcaXJxbnIsICMwCisKKwkJbW92ICAgICBcdG1wLCAjMHhmZjAwCisJCW9yciAgICAgXHRtcCwgXHRtcCwgIzB4ZmYKKwkJdHN0ICAgICBcaXJxc3RhdCwgXHRtcAorCQlhZGRlcSAgIFxpcnFuciwgXGlycW5yLCAjMTYKKwkJbW92ZXEgICBcaXJxc3RhdCwgXGlycXN0YXQsIGxzciAjMTYKKwkJdHN0ICAgICBcaXJxc3RhdCwgIzI1NQorCQlhZGRlcSAgIFxpcnFuciwgXGlycW5yLCAjOAorCQltb3ZlcSAgIFxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICM4CisJCXRzdCAgICAgXGlycXN0YXQsICMxNQorCQlhZGRlcSAgIFxpcnFuciwgXGlycW5yLCAjNAorCQltb3ZlcSAgIFxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICM0CisJCXRzdCAgICAgXGlycXN0YXQsICMzCisJCWFkZGVxICAgXGlycW5yLCBcaXJxbnIsICMyCisJCW1vdmVxICAgXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IgIzIKKwkJdHN0ICAgICBcaXJxc3RhdCwgIzEKKwkJYWRkZXEgICBcaXJxbnIsIFxpcnFuciwgIzEKKwkJbW92ZXEgICBcaXJxc3RhdCwgXGlycXN0YXQsIGxzciAjMQorCQl0c3QgICAgIFxpcnFzdGF0LCAjMQkJICAgICAgIEAgYml0IDAgc2hvdWxkIGJlIHNldAorCQkuZW5kbQorCisJCS5tYWNybyAgaXJxX3ByaW9fdGFibGUKKwkJLmVuZG0KKworI2Vsc2UKKyNlcnJvciBoeW5peCBwcm9jZXNzb3Igc2VsZWN0aW9uIG1pc3NtYXRjaAorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2g3MjAxLXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2g3MjAxLXJlZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWQ0ZjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaDcyMDEtcmVncy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9oNzIwMS1yZWdzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgSnVuZ2p1biBLaW0sIEh5bml4IFNlbWljb25kdWN0b3IgSW5jLgorICogICAgICAgICAgIChDKSAyMDAzIFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorICogICAgICAgICAgIChDKSAyMDAzIFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KKyAqICAgICAgICAgICAoQykgMjAwNCBTYXNjaGEgSGF1ZXIgICAgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgaDcyMHggcHJvY2Vzc29ycworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogRG8gbm90IGFkZCBpbXBsZW1lbnRhdGlvbnMgc3BlY2lmaWMgZGVmaW5lcyBoZXJlLiBUaGlzIGZpbGVzIGNvbnRhaW5zCisgKiBvbmx5IGRlZmluZXMgb2YgdGhlIG9uY2hpcCBwZXJpcGhlcmFscy4gQWRkIHRob3NlIGRlZmluZXMgdG8gYm9hcmRzLmgsCisgKiB3aGljaCBpcyBpbmNsdWRlZCBieSB0aGlzIGZpbGUuCisgKi8KKworI2RlZmluZSBTRVJJQUwyX1ZJUlQgCQkoSU9fVklSVCArIDB4NTAxMDApCisjZGVmaW5lIFNFUklBTDNfVklSVCAJCShJT19WSVJUICsgMHg1MDIwMCkKKworLyoKKyAqIFBDTUNJQQorICovCisjZGVmaW5lIFBDTUNJQTBfQVRUX0JBU0UgICAgICAgIDB4ZTUwMDAwMDAKKyNkZWZpbmUgUENNQ0lBMF9BVFRfU0laRSAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBQQ01DSUEwX0FUVF9TVEFSVCAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIFBDTUNJQTBfTUVNX0JBU0UgICAgICAgIDB4ZTUyMDAwMDAKKyNkZWZpbmUgUENNQ0lBMF9NRU1fU0laRSAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBQQ01DSUEwX01FTV9TVEFSVCAgICAgICAweDI0MDAwMDAwCisjZGVmaW5lIFBDTUNJQTBfSU9fQkFTRSAgICAgICAgIDB4ZTU0MDAwMDAKKyNkZWZpbmUgUENNQ0lBMF9JT19TSVpFICAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBQQ01DSUEwX0lPX1NUQVJUICAgICAgICAweDI4MDAwMDAwCisKKyNkZWZpbmUgUENNQ0lBMV9BVFRfQkFTRSAgICAgICAgMHhlNTYwMDAwMAorI2RlZmluZSBQQ01DSUExX0FUVF9TSVpFICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIFBDTUNJQTFfQVRUX1NUQVJUICAgICAgIDB4MzAwMDAwMDAKKyNkZWZpbmUgUENNQ0lBMV9NRU1fQkFTRSAgICAgICAgMHhlNTgwMDAwMAorI2RlZmluZSBQQ01DSUExX01FTV9TSVpFICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIFBDTUNJQTFfTUVNX1NUQVJUICAgICAgIDB4MzQwMDAwMDAKKyNkZWZpbmUgUENNQ0lBMV9JT19CQVNFICAgICAgICAgMHhlNWEwMDAwMAorI2RlZmluZSBQQ01DSUExX0lPX1NJWkUgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIFBDTUNJQTFfSU9fU1RBUlQgICAgICAgIDB4MzgwMDAwMDAKKworI2RlZmluZSBQUklNRTNDX0JBU0UgICAgICAgICAgICAweGYwMDUwMDAwCisjZGVmaW5lIFBSSU1FM0NfU0laRSAgICAgICAgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgUFJJTUUzQ19TVEFSVCAgICAgICAgICAgMHgxMDAwMDAwMAorCisvKiBWR0EgQ29udHJvbGxlciAqLworI2RlZmluZSBWR0FfUkFNQkFTRSAJCTB4NTAKKyNkZWZpbmUgVkdBX1RJTUlORzAgCQkweDYwCisjZGVmaW5lIFZHQV9USU1JTkcxIAkJMHg2NAorI2RlZmluZSBWR0FfVElNSU5HMiAJCTB4NjgKKyNkZWZpbmUgVkdBX1RJTUlORzMgCQkweDZjCisKKyNkZWZpbmUgTENEX0NUUkxfVkdBX0VOQUJMRSAgIAkweDAwMDAwMTAwCisjZGVmaW5lIExDRF9DVFJMX1ZHQV9CUFBfTUFTSyAJMHgwMDAwMDYwMAorI2RlZmluZSBMQ0RfQ1RSTF9WR0FfNEJQUCAgICAJMHgwMDAwMDAwMAorI2RlZmluZSBMQ0RfQ1RSTF9WR0FfOEJQUCAgICAJMHgwMDAwMDIwMAorI2RlZmluZSBMQ0RfQ1RSTF9WR0FfMTZCUFAgICAJMHgwMDAwMDMwMAorI2RlZmluZSBMQ0RfQ1RSTF9TSEFSRV9ETUEgICAgCTB4MDAwMDA4MDAKKyNkZWZpbmUgTENEX0NUUkxfVkRFICAgICAgICAgIAkweDAwMTAwMDAwCisjZGVmaW5lIExDRF9DVFJMX0xQRSAgICAgICAgICAJMHgwMDQwMDAwMAkvKiBMQ0QgUG93ZXIgZW5hYmxlICovCisjZGVmaW5lIExDRF9DVFJMX0JMRSAgICAgICAgICAJMHgwMDgwMDAwMAkvKiBMQ0QgYmFja2xpZ2h0IGVuYWJsZSAqLworCisjZGVmaW5lIFZHQV9QQUxFVFRFX0JBU0UJKElPX1ZJUlQgKyAweDEwODAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaDcyMDItcmVncy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaDcyMDItcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDhiYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9oNzIwMi1yZWdzLmgKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9oNzIwMi1yZWdzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgSnVuZ2p1biBLaW0sIEh5bml4IFNlbWljb25kdWN0b3IgSW5jLgorICogICAgICAgICAgIChDKSAyMDAzIFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorICogICAgICAgICAgIChDKSAyMDAzIFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KKyAqICAgICAgICAgICAoQykgMjAwNCBTYXNjaGEgSGF1ZXIgICAgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgaDcyMHggcHJvY2Vzc29ycworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogRG8gbm90IGFkZCBpbXBsZW1lbnRhdGlvbnMgc3BlY2lmaWMgZGVmaW5lcyBoZXJlLiBUaGlzIGZpbGVzIGNvbnRhaW5zCisgKiBvbmx5IGRlZmluZXMgb2YgdGhlIG9uY2hpcCBwZXJpcGhlcmFscy4gQWRkIHRob3NlIGRlZmluZXMgdG8gYm9hcmRzLmgsCisgKiB3aGljaCBpcyBpbmNsdWRlZCBieSB0aGlzIGZpbGUuCisgKi8KKworI2RlZmluZSBTRVJJQUwyX09GUwkJMHgyZDAwMAorI2RlZmluZSBTRVJJQUwyX0JBU0UJCShJT19QSFlTICsgU0VSSUFMMl9PRlMpCisjZGVmaW5lIFNFUklBTDJfVklSVCAJCShJT19WSVJUICsgU0VSSUFMMl9PRlMpCisjZGVmaW5lIFNFUklBTDNfT0ZTCQkweDJlMDAwCisjZGVmaW5lIFNFUklBTDNfQkFTRQkJKElPX1BIWVMgKyBTRVJJQUwzX09GUykKKyNkZWZpbmUgU0VSSUFMM19WSVJUIAkJKElPX1ZJUlQgKyBTRVJJQUwzX09GUykKKworLyogTWF0cml4IEtleWJvYXJkIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgS0JEX1ZJUlQJCShJT19WSVJUICsgMHgyMjAwMCkKKyNkZWZpbmUgS0JEX0tCQ1IJCTB4MDAKKyNkZWZpbmUgS0JEX0tCU0MJCTB4MDQKKyNkZWZpbmUgS0JEX0tCVFIJCTB4MDgKKyNkZWZpbmUgS0JEX0tCVlIwCQkweDBDCisjZGVmaW5lIEtCRF9LQlZSMQkJMHgxMAorI2RlZmluZSBLQkRfS0JTUgkJMHgxOAorCisjZGVmaW5lIEtCRF9LQkNSX1NDQU5FTkFCTEUJKDEgPDwgNykKKyNkZWZpbmUgS0JEX0tCQ1JfTlBPV0VSRE9XTgkoMSA8PCAyKQorI2RlZmluZSBLQkRfS0JDUl9DTEtTRUxfTUFTSwkoMykKKyNkZWZpbmUgS0JEX0tCQ1JfQ0xLU0VMX1BDTEsyCTB4MAorI2RlZmluZSBLQkRfS0JDUl9DTEtTRUxfUENMSzEyOAkweDEKKyNkZWZpbmUgS0JEX0tCQ1JfQ0xLU0VMX1BDTEsyNTYJMHgyCisjZGVmaW5lIEtCRF9LQkNSX0NMS1NFTF9QQ0xLNTEyCTB4MworCisjZGVmaW5lIEtCRF9LQlNSX0lOVFIJCSgxIDw8IDApCisjZGVmaW5lIEtCRF9LQlNSX1dBS0VVUAkJKDEgPDwgMSkKKworLyogVVNCIGRldmljZSBjb250cm9sbGVyICovCisKKyNkZWZpbmUgVVNCRF9CQVNFCQkoSU9fVklSVCArIDB4MTIwMDApCisjZGVmaW5lIFVTQkRfTEVOR1RICQkweDNDCisKKyNkZWZpbmUgVVNCRF9HQ1RSTAkJMHgwMAorI2RlZmluZSBVU0JEX0VQQ1RSTAkJMHgwNAorI2RlZmluZSBVU0JEX0lOVE1BU0sJCTB4MDgKKyNkZWZpbmUgVVNCRF9JTlRTVEFUCQkweDBDCisjZGVmaW5lIFVTQkRfUFdSCQkweDEwCisjZGVmaW5lIFVTQkRfRE1BUlhUWAkJMHgxNAorI2RlZmluZSBVU0JEX0RFVklECQkweDE4CisjZGVmaW5lIFVTQkRfREVWQ0xBU1MJCTB4MUMKKyNkZWZpbmUgVVNCRF9JTlRDTEFTUwkJMHgyMAorI2RlZmluZSBVU0JEX1NFVFVQMAkJMHgyNAorI2RlZmluZSBVU0JEX1NFVFVQMQkJMHgyOAorI2RlZmluZSBVU0JEX0VORFAwUkQJCTB4MkMKKyNkZWZpbmUgVVNCRF9FTkRQMFdUCQkweDMwCisjZGVmaW5lIFVTQkRfRU5EUDFSRAkJMHgzNAorI2RlZmluZSBVU0JEX0VORFAyV1QJCTB4MzgKKworLyogUFMvMiBwb3J0ICovCisjZGVmaW5lIFBTREFUQSAweDAwCisjZGVmaW5lIFBTU1RBVCAweDA0CisjZGVmaW5lIFBTU1RBVF9UWEVNUFRZICgxPDwwKQorI2RlZmluZSBQU1NUQVRfVFhCVVNZICgxPDwxKQorI2RlZmluZSBQU1NUQVRfUlhGVUxMICgxPDwyKQorI2RlZmluZSBQU1NUQVRfUlhCVVNZICgxPDwzKQorI2RlZmluZSBQU1NUQVRfQ0xLSU4gKDE8PDQpCisjZGVmaW5lIFBTU1RBVF9EQVRBSU4gKDE8PDUpCisjZGVmaW5lIFBTU1RBVF9QQVJJVFkgKDE8PDYpCisKKyNkZWZpbmUgUFNDT05GIDB4MDgKKyNkZWZpbmUgUFNDT05GX0VOQUJMRSAoMTw8MCkKKyNkZWZpbmUgUFNDT05GX1RYSU5URU4gKDE8PDIpCisjZGVmaW5lIFBTQ09ORl9SWElOVEVOICgxPDwzKQorI2RlZmluZSBQU0NPTkZfRk9SQ0VDTEtMT1cgKDE8PDQpCisjZGVmaW5lIFBTQ09ORl9GT1JDRURBVExPVyAoMTw8NSkKKyNkZWZpbmUgUFNDT05GX0xDRSAoMTw8NikKKworI2RlZmluZSBQU0lOVFIgMHgwQworI2RlZmluZSBQU0lOVFJfVFhJTlQgKDE8PDApCisjZGVmaW5lIFBTSU5UUl9SWElOVCAoMTw8MSkKKyNkZWZpbmUgUFNJTlRSX1BBUiAoMTw8MikKKyNkZWZpbmUgUFNJTlRSX1JYVE8gKDE8PDMpCisjZGVmaW5lIFBTSU5UUl9UWFRPICgxPDw0KQorCisjZGVmaW5lIFBTVERMTyAweDEwIC8qIGNsayBsb3cgYmVmb3JlIHN0YXJ0IHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSBQU1RQUkkgMHgxNCAvKiBQUkkgY2xvY2sgKi8KKyNkZWZpbmUgUFNUWE1UIDB4MTggLyogbWF4aW11bSB0cmFuc21pc3Npb24gdGltZSAqLworI2RlZmluZSBQU1RSRUMgMHgyMCAvKiBtYXhpbXVtIHJlY2VpdmUgdGltZSAqLworI2RlZmluZSBQU1BXRE4gMHgzYworCisvKiBBREMgY29udmVydGVyICovCisjZGVmaW5lIEFEQ19CQVNFIAkJKElPX1ZJUlQgKyAweDI5MDAwKQorI2RlZmluZSBBRENfQ1IgCQkJMHgwMAorI2RlZmluZSBBRENfVFNDVFJMIAkJMHgwNAorI2RlZmluZSBBRENfQlRfQ1RSTCAJCTB4MDgKKyNkZWZpbmUgQURDX01DX0NUUkwJCTB4MEMKKyNkZWZpbmUgQURDX1NUQVRVUwkJMHgxMAorCisvKiBBREMgY29udHJvbCByZWdpc3RlciBiaXRzICovCisjZGVmaW5lIEFEQ19DUl9QV19DVFJMIAkJMHg4MAorI2RlZmluZSBBRENfQ1JfRElSRUNUQwkJMHgwNAorI2RlZmluZSBBRENfQ1JfQ09OVElNRV9OTwkweDAwCisjZGVmaW5lIEFEQ19DUl9DT05USU1FXzIJMHgwNAorI2RlZmluZSBBRENfQ1JfQ09OVElNRV80CTB4MDgKKyNkZWZpbmUgQURDX0NSX0NPTlRJTUVfQURFCTB4MGMKKyNkZWZpbmUgQURDX0NSX0xPTkdDQUxUSU1FCTB4MDEKKworLyogQURDIHRvdWNoIHBhbmVsIHJlZ2lzdGVyIGJpdHMgKi8KKyNkZWZpbmUgQURDX1RTQ1RSTF9FTkFCTEUgCTB4ODAKKyNkZWZpbmUgQURDX1RTQ1RSTF9JTlRSICAgCTB4NDAKKyNkZWZpbmUJQURDX1RTQ1RSTF9TV0JZUFNTCTB4MjAKKyNkZWZpbmUgQURDX1RTQ1RSTF9TV0lOVlQJMHgxMAorI2RlZmluZSBBRENfVFNDVFJMX1M0MDAgICAJMHgwMworI2RlZmluZSBBRENfVFNDVFJMX1MyMDAgICAJMHgwMgorI2RlZmluZSBBRENfVFNDVFJMX1MxMDAgICAJMHgwMQorI2RlZmluZSBBRENfVFNDVFJMX1M1MCAgICAJMHgwMAorCisvKiBBREMgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciBiaXRzICovCisjZGVmaW5lIEFEQ19TVEFUVVNfVFNfQklUCTB4ODAKKyNkZWZpbmUgQURDX1NUQVRVU19NQlRfQklUCTB4NDAKKyNkZWZpbmUgQURDX1NUQVRVU19CQlRfQklUCTB4MjAKKyNkZWZpbmUgQURDX1NUQVRVU19NSUNfQklUCTB4MTAKKworLyogVG91Y2ggZGF0YSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgQURDX1RTX1gwWDEgIAkJMHgzMAorI2RlZmluZSBBRENfVFNfWDJYMwkJMHgzNAorI2RlZmluZSBBRENfVFNfWTBZMQkJMHgzOAorI2RlZmluZSBBRENfVFNfWTJZMyAgCQkweDNjCisjZGVmaW5lIEFEQ19UU19YNFg1ICAJCTB4NDAKKyNkZWZpbmUgQURDX1RTX1g2WDcgIAkJMHg0NAorI2RlZmluZSBBRENfVFNfWTRZNQkJMHg0OAorI2RlZmluZSBBRENfVFNfWTZZNwkJMHg1MAorCisvKiBiYXR0ZXJ5IGRhdGEgKi8KKyNkZWZpbmUgQURDX01CX0RBVEEJCTB4NTQKKyNkZWZpbmUgQURDX0JCX0RBVEEJCTB4NTgKKworLyogU291bmQgZGF0YSByZWdpc3RlciAqLworI2RlZmluZSBBRENfU0RfREFUMCAJCTB4NjAKKyNkZWZpbmUgQURDX1NEX0RBVDEJCTB4NjQKKyNkZWZpbmUgQURDX1NEX0RBVDIJCTB4NjgKKyNkZWZpbmUgQURDX1NEX0RBVDMJCTB4NmMKKyNkZWZpbmUgQURDX1NEX0RBVDQJCTB4NzAKKyNkZWZpbmUgQURDX1NEX0RBVDUJCTB4NzQKKyNkZWZpbmUgQURDX1NEX0RBVDYJCTB4NzgKKyNkZWZpbmUgQURDX1NEX0RBVDcJCTB4N2MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYjc3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaGFyZHdhcmUuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBKdW5nanVuIEtpbSwgSHluaXggU2VtaWNvbmR1Y3RvciBJbmMuCisgKiAgICAgICAgICAgKEMpIDIwMDMgVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CisgKiAgICAgICAgICAgKEMpIDIwMDMgUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGFyZHdhcmUgZGVmaW5pdGlvbnMgb2YgdGhlIGg3MjB4IHByb2Nlc3NvcnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIERvIG5vdCBhZGQgaW1wbGVtZW50YXRpb25zIHNwZWNpZmljIGRlZmluZXMgaGVyZS4gVGhpcyBmaWxlcyBjb250YWlucworICogb25seSBkZWZpbmVzIG9mIHRoZSBvbmNoaXAgcGVyaXBoZXJhbHMuIEFkZCB0aG9zZSBkZWZpbmVzIHRvIGJvYXJkcy5oLAorICogd2hpY2ggaXMgaW5jbHVkZWQgYnkgdGhpcyBmaWxlLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjZGVmaW5lIElPQ0xLICgzNjg2NDAwTCkKKworLyogT25jaGlwIHBlcmlwaGVyYWxzICovCisKKyNkZWZpbmUgSU9fVklSVAkJCTB4ZjAwMDAwMDAJLyogSU8gcGVyaXBoZXJhbHMgKi8KKyNkZWZpbmUgSU9fUEhZUwkJCTB4ODAwMDAwMDAKKyNkZWZpbmUgSU9fU0laRQkJCTB4MDAwNTAwMDAKKworI2lmZGVmIENPTkZJR19DUFVfSDcyMDIKKyNpbmNsdWRlICJoNzIwMi1yZWdzLmgiCisjZWxpZiBkZWZpbmVkIENPTkZJR19DUFVfSDcyMDEKKyNpbmNsdWRlICJoNzIwMS1yZWdzLmgiCisjZWxzZQorI2Vycm9yIG1hY2hpbmUgZGVmaW5pdGlvbiBtaXNtYXRjaAorI2VuZGlmCisKKy8qIE1hY3JvIHRvIGFjY2VzcyB0aGUgQ1BVIElPICovCisjZGVmaW5lIENQVV9JTyh4KSAoKih2b2xhdGlsZSB1MzIqKSh4KSkKKworLyogTWFjcm8gdG8gYWNjZXNzIGdlbmVyYWwgcHVycG9zZSByZWdzIChiYXNlLCBvZmZzZXQpICovCisjZGVmaW5lIENQVV9SRUcoeCx5KSBDUFVfSU8oeCt5KQorCisvKiBNYWNybyB0byBhY2Nlc3MgaXJxIHJlbGF0ZWQgcmVncyAqLworI2RlZmluZSBJUlFfUkVHKHgpIENQVV9SRUcoSVJRQ19WSVJULHgpCisKKy8qIENQVSByZWdpc3RlcnMgKi8KKy8qIGdlbmVyYWwgcHVycG9zZSBJL08gKi8KKyNkZWZpbmUgR1BJT19WSVJUKHgpCQkoSU9fVklSVCArIDB4MjMwMDAgKyAoKHgpPDw1KSkKKyNkZWZpbmUgR1BJT19BX1ZJUlQJCShHUElPX1ZJUlQoMCkpCisjZGVmaW5lIEdQSU9fQl9WSVJUCQkoR1BJT19WSVJUKDEpKQorI2RlZmluZSBHUElPX0NfVklSVAkJKEdQSU9fVklSVCgyKSkKKyNkZWZpbmUgR1BJT19EX1ZJUlQJCShHUElPX1ZJUlQoMykpCisjZGVmaW5lIEdQSU9fRV9WSVJUCQkoR1BJT19WSVJUKDQpKQorI2RlZmluZSBHUElPX0FNVUxTRUwJCShHUElPX1ZJUlQoMCkgKyAweEE0KQorCisjZGVmaW5lIEFNVUxTRUxfVVNJTjIJKDE8PDUpCisjZGVmaW5lIEFNVUxTRUxfVVNPVVQyCSgxPDw2KQorI2RlZmluZSBBTVVMU0VMX1VTSU4zCSgxPDwxMykKKyNkZWZpbmUgQU1VTFNFTF9VU09VVDMJKDE8PDE0KQorI2RlZmluZSBBTVVMU0VMX0lSRElOCSgxPDwxNSkKKyNkZWZpbmUgQU1VTFNFTF9JUkRPVVQJKDE8PDcpCisKKy8qIFJlZ2lzdGVyIG9mZnNldHMgZ2VuZXJhbCBwdXJwb3NlIEkvTyAqLworI2RlZmluZSBHUElPX0RBVEEJCTB4MDAKKyNkZWZpbmUgR1BJT19ESVIJCTB4MDQKKyNkZWZpbmUgR1BJT19NQVNLCQkweDA4CisjZGVmaW5lIEdQSU9fU1RBVAkJMHgwQworI2RlZmluZSBHUElPX0VER0UJCTB4MTAKKyNkZWZpbmUgR1BJT19DTFIJCTB4MTQKKyNkZWZpbmUgR1BJT19QT0wJCTB4MTgKKyNkZWZpbmUgR1BJT19FTgkJCTB4MUMKKworLyppbnRlcnJ1cHQgY29udHJvbGxlciAqLworI2RlZmluZSBJUlFDX1ZJUlQJCShJT19WSVJUICsgMHgyNDAwMCkKKy8qIHJlZ2lzdGVyIG9mZnNldCBpbnRlcnJ1cHQgY29udHJvbGxlciAqLworI2RlZmluZSBJUlFDX0lFUgkJMHgwMAorI2RlZmluZSBJUlFDX0lTUgkJMHgwNAorCisvKiB0aW1lciB1bml0ICovCisjZGVmaW5lIFRJTUVSX1ZJUlQJCShJT19WSVJUICsgMHgyNTAwMCkKKy8qIFJlZ2lzdGVyIG9mZnNldHMgdGltZXIgdW5pdCAqLworI2RlZmluZSBUTTBfUEVSSU9EICAgCQkweDAwCisjZGVmaW5lIFRNMF9DT1VOVCAgICAJCTB4MDgKKyNkZWZpbmUgVE0wX0NUUkwgICAgIAkJMHgxMAorI2RlZmluZSBUTTFfUEVSSU9EICAgCQkweDIwCisjZGVmaW5lIFRNMV9DT1VOVCAgICAJCTB4MjgKKyNkZWZpbmUgVE0xX0NUUkwgICAgIAkJMHgzMAorI2RlZmluZSBUTTJfUEVSSU9EICAgCQkweDQwCisjZGVmaW5lIFRNMl9DT1VOVCAgICAJCTB4NDgKKyNkZWZpbmUgVE0yX0NUUkwgICAgIAkJMHg1MAorI2RlZmluZSBUSU1FUl9UT1BDVFJMCQkweDYwCisjZGVmaW5lIFRJTUVSX1RPUFNUQVQJCTB4NjQKKyNkZWZpbmUgVDY0X0NPVU5UTAkJMHg4MAorI2RlZmluZSBUNjRfQ09VTlRICQkweDg0CisjZGVmaW5lIFQ2NF9DVFJMCQkweDg4CisjZGVmaW5lIFQ2NF9CQVNFTAkJMHg5NAorI2RlZmluZSBUNjRfQkFTRUgJCTB4OTgKKy8qIEJpdG1ha3MgdGltZXIgdW5pdCBUT1BTVEFUIHJlZyAqLworI2RlZmluZSBUU1RBVF9UMElOVAkJMHgxCisjZGVmaW5lIFRTVEFUX1QxSU5UCQkweDIKKyNkZWZpbmUgVFNUQVRfVDJJTlQJCTB4NAorI2RlZmluZSBUU1RBVF9UM0lOVAkJMHg4CisvKiBCaXQgZGVzY3JpcHRpb24gb2YgVE14X0NUUkwgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVE1fU1RBUlQgIAkJMHgxCisjZGVmaW5lIFRNX1JFUEVBVCAJCTB4MgorI2RlZmluZSBUTV9SRVNFVCAgCQkweDQKKy8qIEJpdCBkZXNjcmlwdGlvbiBvZiBUSU1FUl9DVFJMIHJlZ2lzdGVyICovCisjZGVmaW5lIEVOQUJMRV9UTTBfSU5UUiAgCTB4MQorI2RlZmluZSBFTkFCTEVfVE0xX0lOVFIgIAkweDIKKyNkZWZpbmUgRU5BQkxFX1RNMl9JTlRSICAJMHg0CisjZGVmaW5lIFRJTUVSX0VOQUJMRV9CSVQgCTB4OAorI2RlZmluZSBFTkFCTEVfVElNRVI2NCAgIAkweDEwCisjZGVmaW5lIEVOQUJMRV9USU1FUjY0X0lOVAkweDIwCisKKy8qIFBNVSAmIFBMTCAqLworI2RlZmluZSBQTVVfQkFTRSAJCShJT19WSVJUICsgMHgxMDAwKQorI2RlZmluZSBQTVVfTU9ERQkJMHgwMAorI2RlZmluZSBQTVVfU1RBVCAgIAkJMHgyMAorI2RlZmluZSBQTVVfUExMX0NUUkwgCQkweDI4CisKKy8qIFBNVSBNb2RlIGJpdHMgKi8KKyNkZWZpbmUgUE1VX01PREVfU0xPVwkJMHgwMAorI2RlZmluZSBQTVVfTU9ERV9SVU4JCTB4MDEKKyNkZWZpbmUgUE1VX01PREVfSURMRQkJMHgwMgorI2RlZmluZSBQTVVfTU9ERV9TTEVFUAkJMHgwMworI2RlZmluZSBQTVVfTU9ERV9JTklUCQkweDA0CisjZGVmaW5lIFBNVV9NT0RFX0RFRVBTTEVFUAkweDA3CisjZGVmaW5lIFBNVV9NT0RFX1dBS0VVUAkJMHgwOAorCisvKiBQTVUgLi4uICovCisjZGVmaW5lIFBMTF8yX0VOCQkweDgwMDAKKyNkZWZpbmUgUExMXzFfRU4JCTB4NDAwMAorI2RlZmluZSBQTExfM19NVVRFCQkweDAwODAKKworLyogQ29udHJvbCBiaXRzIGZvciBQTVUvIFBMTCAqLworI2RlZmluZSBQTVVfV0FSTVJFU0VUCQkweDAwMDEwMDAwCisjZGVmaW5lIFBMTF9DVFJMX01BU0syMwkJMHgwMDAwODBmZgorCisvKiBMQ0QgQ29udHJvbGxlciAqLworI2RlZmluZSBMQ0RfQkFTRSAJCShJT19WSVJUICsgMHgxMDAwMCkKKyNkZWZpbmUgTENEX0NUUkwgCQkweDAwCisjZGVmaW5lIExDRF9TVEFUVVMJCTB4MDQKKyNkZWZpbmUgTENEX1NUQVRVU19NCQkweDA4CisjZGVmaW5lIExDRF9JTlRFUlJVUFQJCTB4MEMKKyNkZWZpbmUgTENEX0RCQVIJCTB4MTAKKyNkZWZpbmUgTENEX0RDQVIJCTB4MTQKKyNkZWZpbmUgTENEX1RJTUlORzAgCQkweDIwCisjZGVmaW5lIExDRF9USU1JTkcxIAkJMHgyNAorI2RlZmluZSBMQ0RfVElNSU5HMiAJCTB4MjgKKyNkZWZpbmUgTENEX1RFU1QJCTB4NDAKKworLyogTENEIENvbnRyb2wgQml0cyAqLworI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfRU5BQkxFICAgCTB4MDAwMDAwMDEKKy8qIEJpdHMgcGVyIHBpeGVsICovCisjZGVmaW5lIExDRF9DVFJMX0xDRF9CUFBfTUFTSyAJMHgwMDAwMDAwNgorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfNEJQUCAgICAJMHgwMDAwMDAwMAorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfOEJQUCAgICAJMHgwMDAwMDAwMgorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfMTZCUFAgICAJMHgwMDAwMDAwNAorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfQlcJCTB4MDAwMDAwMDgKKyNkZWZpbmUgTENEX0NUUkxfTENEX1RGVAkweDAwMDAwMDEwCisjZGVmaW5lIExDRF9DVFJMX0JHUgkJMHgwMDAwMTAwMAorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfVkNPTVAJMHgwMDA4MDAwMAorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfTU9OTzgJMHgwMDIwMDAwMAorI2RlZmluZSBMQ0RfQ1RSTF9MQ0RfUFdSCTB4MDA0MDAwMDAKKyNkZWZpbmUgTENEX0NUUkxfTENEX0JMRQkweDAwODAwMDAwCisjZGVmaW5lIExDRF9DVFJMX0xEQlVTRU4JMHgwMTAwMDAwMAorCisvKiBQYWxldHRlICovCisjZGVmaW5lIExDRF9QQUxFVFRFX0JBU0UgCShJT19WSVJUICsgMHgxMDQwMCkKKworLyogU2VyaWFsIHBvcnRzICovCisjZGVmaW5lIFNFUklBTDBfT0ZTCQkweDIwMDAwCisjZGVmaW5lIFNFUklBTDBfVklSVCAJCShJT19WSVJUICsgU0VSSUFMMF9PRlMpCisjZGVmaW5lIFNFUklBTDBfQkFTRQkJKElPX1BIWVMgKyBTRVJJQUwwX09GUykKKworI2RlZmluZSBTRVJJQUwxX09GUwkJMHgyMTAwMAorI2RlZmluZSBTRVJJQUwxX1ZJUlQgCQkoSU9fVklSVCArIFNFUklBTDFfT0ZTKQorI2RlZmluZSBTRVJJQUwxX0JBU0UJCShJT19QSFlTICsgU0VSSUFMMV9PRlMpCisKKyNkZWZpbmUgU0VSSUFMX0VOQUJMRQkJMHgzMAorI2RlZmluZSBTRVJJQUxfRU5BQkxFX0VOCSgxPDwwKQorCisvKiBHZW5lcmFsIGRlZmluZXMgdG8gcGFjaWZ5IGdjYyAqLworI2RlZmluZSBQQ0lPX0JBU0UgCQkoMCkJLyogZm9yIGluYiwgb3V0YiBhbmQgZnJpZW5kcyAqLworI2RlZmluZSBQQ0lPX1ZJUlQJCVBDSU9fQkFTRQorCisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSU5DTUFDSF9ICisjaW5jbHVkZSAiYm9hcmRzLmgiCisjdW5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9JTkNNQUNIX0gKKworI2VuZGlmCQkJCS8qIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4MTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2lvLmgKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2lvLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqCisgKiAgMDktMTktMjAwMQlKSktJTQorICogIAkJQ3JlYXRlZCBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2lvLmgKKyAqCisgKiAgMDMtMjctMjAwMyAgUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPjoKKyAqICAJCXJlLXVuaWZpZWQgaGVhZGVyIGZpbGVzIGZvciBoNzIweAorICovCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweGZmZmZmZmZmCisKKyNkZWZpbmUgX19pbyhhKQkJKCh2b2lkIF9faW9tZW0gKikoYSkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkoYSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L2lycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODIxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9pcnEuaApAQCAtMCwwICsxLDE0IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaXJxLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiBKdW5nanVuIEtpbQorICogICAgICAgICAgIChDKSAyMDAzIFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KKyAqICAgICAgICAgICAoQykgMjAwMyBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSVJRX0gKKyNkZWZpbmUgX19BU01fQVJDSF9JUlFfSAorCitleHRlcm4gdm9pZCBfX2luaXQgaDcyMHhfaW5pdF9pcnEgKHZvaWQpOworCisjZW5kaWYgLyogX19BU01fQVJDSF9JUlFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaXJxcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDQ0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9pcnFzLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9pcnFzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgSnVuZ2p1biBLaW0KKyAqICAgICAgICAgICAoQykgMjAwMyBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+CisgKiAgICAgICAgICAgKEMpIDIwMDMgVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CisgKgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9JUlFTX0gKKyNkZWZpbmUgX19BU01fQVJDSF9JUlFTX0gKKworI2lmIGRlZmluZWQgKENPTkZJR19DUFVfSDcyMDEpCisKKyNkZWZpbmUgSVJRX1BNVQkJMAkJLyogMHgwMDAwMDEgKi8KKyNkZWZpbmUgSVJRX0RNQQkJMSAJCS8qIDB4MDAwMDAyICovCisjZGVmaW5lIElSUV9MQ0QJCTIJCS8qIDB4MDAwMDA0ICovCisjZGVmaW5lIElSUV9WR0EJCTMgCQkvKiAweDAwMDAwOCAqLworI2RlZmluZSBJUlFfUENNQ0lBMSAJNCAJCS8qIDB4MDAwMDEwICovCisjZGVmaW5lIElSUV9QQ01DSUEyIAk1IAkJLyogMHgwMDAwMjAgKi8KKyNkZWZpbmUgSVJRX0FGRQkJNiAJCS8qIDB4MDAwMDQwICovCisjZGVmaW5lIElSUV9BSUMJCTcgCQkvKiAweDAwMDA4MCAqLworI2RlZmluZSBJUlFfS0VZQk9BUkQgCTggCQkvKiAweDAwMDEwMCAqLworI2RlZmluZSBJUlFfVElNRVIwCTkgCQkvKiAweDAwMDIwMCAqLworI2RlZmluZSBJUlFfUlRDCQkxMAkJLyogMHgwMDA0MDAgKi8KKyNkZWZpbmUgSVJRX1NPVU5ECTExCQkvKiAweDAwMDgwMCAqLworI2RlZmluZSBJUlFfVVNCCQkxMgkJLyogMHgwMDEwMDAgKi8KKyNkZWZpbmUgSVJRX0lyREEgCTEzCQkvKiAweDAwMjAwMCAqLworI2RlZmluZSBJUlFfVUFSVDAJMTQJCS8qIDB4MDA0MDAwICovCisjZGVmaW5lIElSUV9VQVJUMQkxNQkJLyogMHgwMDgwMDAgKi8KKyNkZWZpbmUgSVJRX1NQSQkJMTYJCS8qIDB4MDEwMDAwICovCisjZGVmaW5lIElSUV9HUElPQSAJMTcJCS8qIDB4MDIwMDAwICovCisjZGVmaW5lIElSUV9HUElPQgkxOAkJLyogMHgwNDAwMDAgKi8KKyNkZWZpbmUgSVJRX0dQSU9DCTE5CQkvKiAweDA4MDAwMCAqLworI2RlZmluZSBJUlFfR1BJT0QJMjAJCS8qIDB4MTAwMDAwICovCisjZGVmaW5lIElSUV9Db21tUlgJMjEJCS8qIDB4MjAwMDAwICovCisjZGVmaW5lIElSUV9Db21tVFgJMjIJCS8qIDB4NDAwMDAwICovCisjZGVmaW5lIElSUV9Tb2Z0CTIzCQkvKiAweDgwMDAwMCAqLworCisjZGVmaW5lIE5SX0dMQkxfSVJRUwkyNAorCisjZGVmaW5lIElSUV9DSEFJTkVEX0dQSU9BKHgpICAoTlJfR0xCTF9JUlFTICsgeCkKKyNkZWZpbmUgSVJRX0NIQUlORURfR1BJT0IoeCkgIChJUlFfQ0hBSU5FRF9HUElPQSgzMikgKyB4KQorI2RlZmluZSBJUlFfQ0hBSU5FRF9HUElPQyh4KSAgKElSUV9DSEFJTkVEX0dQSU9CKDMyKSArIHgpCisjZGVmaW5lIElSUV9DSEFJTkVEX0dQSU9EKHgpICAoSVJRX0NIQUlORURfR1BJT0MoMzIpICsgeCkKKyNkZWZpbmUgTlJfSVJRUyAgICAgICAgICAgICAgIElSUV9DSEFJTkVEX0dQSU9EKDMyKQorCisvKiBFbmFibGUgbWFzayBmb3IgbXVsdGlwbGV4ZWQgaW50ZXJydXB0cyAqLworI2RlZmluZSBJUlFfRU5BX01VWAkoMTw8SVJRX0dQSU9BKSB8ICgxPDxJUlFfR1BJT0IpIFwKKwkJCXwgKDE8PElSUV9HUElPQykgfCAoMTw8SVJRX0dQSU9EKQorCisKKyNlbGlmIGRlZmluZWQgKENPTkZJR19DUFVfSDcyMDIpCisKKyNkZWZpbmUgSVJRX1BNVQkJMAkJLyogMHgwMDAwMDAwMSAqLworI2RlZmluZSBJUlFfRE1BCQkxCQkvKiAweDAwMDAwMDAyICovCisjZGVmaW5lIElSUV9MQ0QJCTIJCS8qIDB4MDAwMDAwMDQgKi8KKyNkZWZpbmUgSVJRX1NPVU5ECTMJCS8qIDB4MDAwMDAwMDggKi8KKyNkZWZpbmUgSVJRX0kyUwkJNAkJLyogMHgwMDAwMDAxMCAqLworI2RlZmluZSBJUlFfVVNCIAk1CQkvKiAweDAwMDAwMDIwICovCisjZGVmaW5lIElSUV9NTUMgCTYJCS8qIDB4MDAwMDAwNDAgKi8KKyNkZWZpbmUgSVJRX1JUQyAJNwkJLyogMHgwMDAwMDA4MCAqLworI2RlZmluZSBJUlFfVUFSVDAgCTgJCS8qIDB4MDAwMDAxMDAgKi8KKyNkZWZpbmUgSVJRX1VBUlQxIAk5CQkvKiAweDAwMDAwMjAwICovCisjZGVmaW5lIElSUV9VQVJUMiAJMTAJCS8qIDB4MDAwMDA0MDAgKi8KKyNkZWZpbmUgSVJRX1VBUlQzIAkxMQkJLyogMHgwMDAwMDgwMCAqLworI2RlZmluZSBJUlFfS0JEIAkxMgkJLyogMHgwMDAwMTAwMCAqLworI2RlZmluZSBJUlFfUFMyIAkxMwkJLyogMHgwMDAwMjAwMCAqLworI2RlZmluZSBJUlFfQUlDIAkxNAkJLyogMHgwMDAwNDAwMCAqLworI2RlZmluZSBJUlFfVElNRVIwIAkxNQkJLyogMHgwMDAwODAwMCAqLworI2RlZmluZSBJUlFfVElNRVJYIAkxNgkJLyogMHgwMDAxMDAwMCAqLworI2RlZmluZSBJUlFfV0RUIAkxNwkJLyogMHgwMDAyMDAwMCAqLworI2RlZmluZSBJUlFfQ0FOMCAJMTgJCS8qIDB4MDAwNDAwMDAgKi8KKyNkZWZpbmUgSVJRX0NBTjEgCTE5CQkvKiAweDAwMDgwMDAwICovCisjZGVmaW5lIElSUV9FWFQwIAkyMAkJLyogMHgwMDEwMDAwMCAqLworI2RlZmluZSBJUlFfRVhUMSAJMjEJCS8qIDB4MDAyMDAwMDAgKi8KKyNkZWZpbmUgSVJRX0dQSU9BIAkyMgkJLyogMHgwMDQwMDAwMCAqLworI2RlZmluZSBJUlFfR1BJT0IgCTIzCQkvKiAweDAwODAwMDAwICovCisjZGVmaW5lIElSUV9HUElPQyAJMjQJCS8qIDB4MDEwMDAwMDAgKi8KKyNkZWZpbmUgSVJRX0dQSU9EIAkyNQkJLyogMHgwMjAwMDAwMCAqLworI2RlZmluZSBJUlFfR1BJT0UgCTI2CQkvKiAweDA0MDAwMDAwICovCisjZGVmaW5lIElSUV9DT01NUlggCTI3CQkvKiAweDA4MDAwMDAwICovCisjZGVmaW5lIElSUV9DT01NVFggCTI4CQkvKiAweDEwMDAwMDAwICovCisjZGVmaW5lIElSUV9TTUMgCTI5CQkvKiAweDIwMDAwMDAwICovCisjZGVmaW5lIElSUV9Tb2Z0IAkzMAkJLyogMHg0MDAwMDAwMCAqLworI2RlZmluZSBJUlFfUkVTRVJWRUQxIAkzMQkJLyogMHg4MDAwMDAwMCAqLworI2RlZmluZSBOUl9HTEJMX0lSUVMJMzIKKworI2RlZmluZSBOUl9USU1FUlhfSVJRUwkzCisKKyNkZWZpbmUgSVJRX0NIQUlORURfR1BJT0EoeCkgIChOUl9HTEJMX0lSUVMgKyB4KQorI2RlZmluZSBJUlFfQ0hBSU5FRF9HUElPQih4KSAgKElSUV9DSEFJTkVEX0dQSU9BKDMyKSArIHgpCisjZGVmaW5lIElSUV9DSEFJTkVEX0dQSU9DKHgpICAoSVJRX0NIQUlORURfR1BJT0IoMzIpICsgeCkKKyNkZWZpbmUgSVJRX0NIQUlORURfR1BJT0QoeCkgIChJUlFfQ0hBSU5FRF9HUElPQygzMikgKyB4KQorI2RlZmluZSBJUlFfQ0hBSU5FRF9HUElPRSh4KSAgKElSUV9DSEFJTkVEX0dQSU9EKDMyKSArIHgpCisjZGVmaW5lIElSUV9DSEFJTkVEX1RJTUVSWCh4KSAoSVJRX0NIQUlORURfR1BJT0UoMzIpICsgeCkKKyNkZWZpbmUgSVJRX1RJTUVSMSAgICAgICAgICAgIChJUlFfQ0hBSU5FRF9USU1FUlgoMCkpCisjZGVmaW5lIElSUV9USU1FUjIgICAgICAgICAgICAoSVJRX0NIQUlORURfVElNRVJYKDEpKQorI2RlZmluZSBJUlFfVElNRVI2NEIgICAgICAgICAgKElSUV9DSEFJTkVEX1RJTUVSWCgyKSkKKworI2RlZmluZSBOUl9JUlFTCQkoSVJRX0NIQUlORURfVElNRVJYKE5SX1RJTUVSWF9JUlFTKSkKKworLyogRW5hYmxlIG1hc2sgZm9yIG11bHRpcGxleGVkIGludGVycnVwdHMgKi8KKyNkZWZpbmUgSVJRX0VOQV9NVVgJKDE8PElSUV9USU1FUlgpIHwgKDE8PElSUV9HUElPQSkgfCAoMTw8SVJRX0dQSU9CKSB8IFwKKwkJCSgxPDxJUlFfR1BJT0MpIAl8ICgxPDxJUlFfR1BJT0QpIHwgKDE8PElSUV9HUElPRSkgfCBcCisJCQkoMTw8SVJRX1RJTUVSWCkKKworI2Vsc2UKKyNlcnJvciBjcHUgZGVmaW5pdGlvbiBtaXNtYXRjaAorI2VuZGlmCisKKy8qIGRlY29kZSBpcnEgbnVtYmVyIHRvIHJlZ2lzdGVyIG51bWJlciAqLworI2RlZmluZSBJUlFfVE9fUkVHTk8oaXJxKSAoKGlycSAtIE5SX0dMQkxfSVJRUykgPj4gNSkKKyNkZWZpbmUgSVJRX1RPX0JJVChpcnEpICgxIDw8ICgoaXJxIC0gTlJfR0xCTF9JUlFTKSAlIDMyKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MzM0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9tZW1vcnkuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvbWVtb3J5LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAgSnVuZ2p1biBLaW0KKyAqCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKy8qCisgKiBQYWdlIG9mZnNldDoKKyAqICAgICggMHhjMDAwMDAwMFVMICkKKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkoMHg0MDAwMDAwMFVMKQorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKiAgICAgICAgICAgICAgYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKiAgICAgICAgICAgICAgdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqCisgKiBUaGVyZSBpcyBzb21ldGhpbmcgdG8gZG8gaGVyZSBsYXRlciAhLCBNYXIgMjAwMCwgSnVuZ2p1biBLaW0KKyAqLworCisjZGVmaW5lIF9fdmlydF90b19idXNfX2lzX2FfbWFjcm8KKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQlfX3ZpcnRfdG9fcGh5cyh4KQorI2RlZmluZSBfX2J1c190b192aXJ0X19pc19hX21hY3JvCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJX19waHlzX3RvX3ZpcnQoeCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjgwMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvcGFyYW0uaApAQCAtMCwwICsxLDEwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvcGFyYW0uaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBKdW5nanVuIEtpbQorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9QQVJBTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUEFSQU1fSAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIwMjVlMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L3N5c3RlbS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBsaW51eC9hcmNoL2FybS9tYWNoLWg3MjB4L3N5c3RlbS5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgSnVuZ2p1biBLaW0sIEh5bml4IFNlbWljb25kdWN0b3IgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC9zeXN0ZW0uaAorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKyNkZWZpbmUgX19BU01fQVJDSF9TWVNURU1fSAorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorCitzdGF0aWMgdm9pZCBhcmNoX2lkbGUodm9pZCkKK3sKKwlDUFVfUkVHIChQTVVfQkFTRSwgUE1VX01PREUpID0gUE1VX01PREVfSURMRTsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkibW92CXIwLCByMFxuXHQiCisJIm1vdglyMCwgcjAiKTsKK30KKworCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCUNQVV9SRUcgKFBNVV9CQVNFLCBQTVVfU1RBVCkgfD0gUE1VX1dBUk1SRVNFVDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC90aW1leC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGEzOTFjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdGltZXguaApAQCAtMCwwICsxLDE1IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdGltZXguaAorICogQ29weXJpZ2h0IChDKSAyMDAwIEp1bmdqdW4gS2ltLCBIeW5peCBTZW1pY29uZHVjdG9yIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9USU1FWAorI2RlZmluZSBfX0FTTV9BUkNIX1RJTUVYCisKKyNkZWZpbmUgQ0xPQ0tfVElDS19SQVRFCQkzNjg2NDAwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZmZhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC91bmNvbXByZXNzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L3VuY29tcHJlc3MuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEp1bmdqdW4gS2ltCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSAorI2RlZmluZSBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2RlZmluZSBMU1IgCTB4MTQKKyNkZWZpbmUgVEVNUFRZIAkweDQwCisKK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCWNoYXIgYzsKKwl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpwID0gKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikoSU9fUEhZUysweDIwMDAwKTsKKworCXdoaWxlICggKGMgPSAqcysrKSAhPSAnXDAnKSB7CisJCS8qIHdhaXQgdW50aWwgdHJhbnNtaXQgYnVmZmVyIGlzIGVtcHR5ICovCisJCXdoaWxlKChwW0xTUl0gJiBURU1QVFkpID09IDB4MCk7CisJCS8qIHdyaXRlIG5leHQgY2hhcmFjdGVyICovCisJCSpwID0gYzsKKworCQlpZihjID09ICdcbicpIHsKKwkJCXdoaWxlKChwW0xTUl0gJiBURU1QVFkpID09IDB4MCk7CisJCQkqcCA9ICdccic7CisJCX0KKwl9Cit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1oNzIweC92bWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmNTIzYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWg3MjB4L3ZtYWxsb2MuaApAQCAtMCwwICsxLDIxIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaDcyMHgvdm1hbGxvYy5oCisgKi8KKworI2lmbmRlZiBfX0FSQ0hfQVJNX1ZNQUxMT0NfSAorI2RlZmluZSBfX0FSQ0hfQVJNX1ZNQUxMT0NfSAorCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX1ZNQUREUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpKQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDEwMDAwMDAwKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmNTUyZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsMzQgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgIzB4MDAwMDAwMDAJQCBwaHlzaWNhbAorCQltb3ZuZQlccngsICMweGUwMDAwMDAwCUAgdmlydHVhbAorCQlvcnIJXHJ4LCBccngsICMweDAwMjAwMDAwCisJCW9ycglccngsIFxyeCwgIzB4MDAwMDYwMDAJQCBVQVJUMSBvZmZzZXQKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyCVxyZCwgW1xyeCwgIzB4NDBdCUAgVFhEQVRBCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisJCS5lbmRtCisKKwkJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisxMDAyOgkJbGRyCVxyZCwgW1xyeCwgIzB4OThdCUAgU1IyCisJCXRzdAlccmQsICMxIDw8IDMJCUAgVFhEQworCQliZXEJMTAwMmIJCQlAIHdhaXQgdW50aWwgdHJhbnNtaXQgZG9uZQorCQkuZW5kbQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZGMwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvZG1hLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaW14YWRzL2RtYS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NywxOTk4IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZmZmZmZmZmYKKworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworLyoKKyAqIERNQSByZWdpc3RyYXRpb24KKyAqLworCit0eXBlZGVmIGVudW0geworCURNQV9QUklPX0hJR0ggPSAwLAorCURNQV9QUklPX01FRElVTSA9IDMsCisJRE1BX1BSSU9fTE9XID0gNgorfSBpbXhfZG1hX3ByaW87CisKK2ludCBpbXhfcmVxdWVzdF9kbWEoY2hhciAqbmFtZSwgaW14X2RtYV9wcmlvIHByaW8sCisJCSAgICB2b2lkICgqaXJxX2hhbmRsZXIpIChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCisJCSAgICB2b2lkICgqZXJyX2hhbmRsZXIpIChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCisJCSAgICB2b2lkICpkYXRhKTsKKwordm9pZCBpbXhfZnJlZV9kbWEoaW50IGRtYV9jaCk7CisKKworI2RlZmluZSBETUFfUkVRX1VBUlQzX1QgICAgICAgIDIKKyNkZWZpbmUgRE1BX1JFUV9VQVJUM19SICAgICAgICAzCisjZGVmaW5lIERNQV9SRVFfU1NJMl9UICAgICAgICAgNAorI2RlZmluZSBETUFfUkVRX1NTSTJfUiAgICAgICAgIDUKKyNkZWZpbmUgRE1BX1JFUV9DU0lfU1RBVCAgICAgICA2CisjZGVmaW5lIERNQV9SRVFfQ1NJX1IgICAgICAgICAgNworI2RlZmluZSBETUFfUkVRX01TSEMgICAgICAgICAgIDgKKyNkZWZpbmUgRE1BX1JFUV9EU1BBX0RDVF9ET1VUICA5CisjZGVmaW5lIERNQV9SRVFfRFNQQV9EQ1RfRElOICAxMAorI2RlZmluZSBETUFfUkVRX0RTUEFfTUFDICAgICAgMTEKKyNkZWZpbmUgRE1BX1JFUV9FWFQgICAgICAgICAgIDEyCisjZGVmaW5lIERNQV9SRVFfU0RIQyAgICAgICAgICAxMworI2RlZmluZSBETUFfUkVRX1NQSTFfUiAgICAgICAgMTQKKyNkZWZpbmUgRE1BX1JFUV9TUEkxX1QgICAgICAgIDE1CisjZGVmaW5lIERNQV9SRVFfU1NJX1QgICAgICAgICAxNgorI2RlZmluZSBETUFfUkVRX1NTSV9SICAgICAgICAgMTcKKyNkZWZpbmUgRE1BX1JFUV9BU1BfREFDICAgICAgIDE4CisjZGVmaW5lIERNQV9SRVFfQVNQX0FEQyAgICAgICAxOQorI2RlZmluZSBETUFfUkVRX1VTUF9FUCh4KSAgICAoMjArKHgpKQorI2RlZmluZSBETUFfUkVRX1NQSTJfUiAgICAgICAgMjYKKyNkZWZpbmUgRE1BX1JFUV9TUEkyX1QgICAgICAgIDI3CisjZGVmaW5lIERNQV9SRVFfVUFSVDJfVCAgICAgICAyOAorI2RlZmluZSBETUFfUkVRX1VBUlQyX1IgICAgICAgMjkKKyNkZWZpbmUgRE1BX1JFUV9VQVJUMV9UICAgICAgIDMwCisjZGVmaW5lIERNQV9SRVFfVUFSVDFfUiAgICAgICAzMQorCisjZW5kaWYJCQkJLyogX0FTTV9BUkNIX0RNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MGVhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDI5IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIGlNWC1iYXNlZCBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKyNkZWZpbmUgQUlUQ19OSVZFQ1NSICAgMHg0MAorCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJCWxkcglcaXJxc3RhdCwgPUlPX0FERFJFU1MoSU1YX0FJVENfQkFTRSkKKwkJQCBMb2FkIG9mZnNldCAmIHByaW9yaXR5IG9mIHRoZSBoaWdoZXN0IHByaW9yaXR5CisJCUAgaW50ZXJydXB0IHBlbmRpbmcuCisJCWxkcglcaXJxbnIsIFtcaXJxc3RhdCwgI0FJVENfTklWRUNTUl0KKwkJQCBTaGlmdCBvZmYgdGhlIHByaW9yaXR5IGxlYXZpbmcgdGhlIG9mZnNldCBvcgorCQlAICJpbnRlcnJ1cHQgbnVtYmVyIgorCQltb3YJXGlycW5yLCBcaXJxbnIsIGxzciAjMTYKKyAJCWxkcglcaXJxc3RhdCwgPTEJQCBkdW1teSBjb21wYXJlCisJCWxkcglcYmFzZSwgPTB4RkZGRgkJLy8gaW52YWxpZCBpbnRlcnJ1cHQKKwkJY21wCVxpcnFuciwgXGJhc2UKKwkJYm5lCTEwMDFmCisJCWxkcglcaXJxc3RhdCwgPTAKKzEwMDE6CisJCXRzdAlcaXJxc3RhdCwgIzEJQCB0byBtYWtlIHRoZSBjb25kaXRpb24gY29kZSA9IFRSVUUKKwkJLmVuZG0KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGZmYjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2hhcmR3YXJlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaGFyZHdhcmUuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorI2RlZmluZSBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKworI2luY2x1ZGUgPGFzbS9zaXplcy5oPgorI2luY2x1ZGUgImlteC1yZWdzLmgiCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjIGRlZmluZSBfX1JFRyh4KQkoKigodm9sYXRpbGUgdTMyICopSU9fQUREUkVTUyh4KSkpCisKKyMgZGVmaW5lIF9fUkVHMih4LHkpICAgICAgICAoKih2b2xhdGlsZSB1MzIgKikoKHUzMikmX19SRUcoeCkgKyAoeSkpKQorI2VuZGlmCisKKy8qCisgKiBNZW1vcnkgbWFwCisgKi8KKworI2RlZmluZSBJTVhfSU9fUEhZUwkJMHgwMDIwMDAwMAorI2RlZmluZSBJTVhfSU9fU0laRQkJMHgwMDEwMDAwMAorI2RlZmluZSBJTVhfSU9fQkFTRQkJMHhlMDAwMDAwMAorCisjZGVmaW5lIElNWF9DUzBfUEhZUwkJMHgxMDAwMDAwMAorI2RlZmluZSBJTVhfQ1MwX1NJWkUJCTB4MDIwMDAwMDAKKyNkZWZpbmUgSU1YX0NTMF9WSVJUCQkweGU4MDAwMDAwCisKKyNkZWZpbmUgSU1YX0NTMV9QSFlTCQkweDEyMDAwMDAwCisjZGVmaW5lIElNWF9DUzFfU0laRQkJMHgwMTAwMDAwMAorI2RlZmluZSBJTVhfQ1MxX1ZJUlQJCTB4ZWEwMDAwMDAKKworI2RlZmluZSBJTVhfQ1MyX1BIWVMJCTB4MTMwMDAwMDAKKyNkZWZpbmUgSU1YX0NTMl9TSVpFCQkweDAxMDAwMDAwCisjZGVmaW5lIElNWF9DUzJfVklSVAkJMHhlYjAwMDAwMAorCisjZGVmaW5lIElNWF9DUzNfUEhZUwkJMHgxNDAwMDAwMAorI2RlZmluZSBJTVhfQ1MzX1NJWkUJCTB4MDEwMDAwMDAKKyNkZWZpbmUgSU1YX0NTM19WSVJUCQkweGVjMDAwMDAwCisKKyNkZWZpbmUgSU1YX0NTNF9QSFlTCQkweDE1MDAwMDAwCisjZGVmaW5lIElNWF9DUzRfU0laRQkJMHgwMTAwMDAwMAorI2RlZmluZSBJTVhfQ1M0X1ZJUlQJCTB4ZWQwMDAwMDAKKworI2RlZmluZSBJTVhfQ1M1X1BIWVMJCTB4MTYwMDAwMDAKKyNkZWZpbmUgSU1YX0NTNV9TSVpFCQkweDAxMDAwMDAwCisjZGVmaW5lIElNWF9DUzVfVklSVAkJMHhlZTAwMDAwMAorCisjZGVmaW5lIElNWF9GQl9WSVJUCQkweEYxMDAwMDAwCisjZGVmaW5lIElNWF9GQl9TSVpFCQkoMjU2KjEwMjQpCisKKy8qIG1hY3JvIHRvIGdldCBhdCBJTyBzcGFjZSB3aGVuIHJ1bm5pbmcgdmlydHVhbGx5ICovCisjZGVmaW5lIElPX0FERFJFU1MoeCkgKCh4KSB8IElNWF9JT19CQVNFKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworLyoKKyAqIEhhbmR5IHJvdXRpbmUgdG8gc2V0IEdQSU8gZnVuY3Rpb25zCisgKi8KK2V4dGVybiB2b2lkIGlteF9ncGlvX21vZGUoIGludCBncGlvX21vZGUgKTsKKworLyogZ2V0IGZyZXF1ZW5jaWVzIGluIEh6ICovCitleHRlcm4gdW5zaWduZWQgaW50IGlteF9nZXRfc3lzdGVtX2Nsayh2b2lkKTsKK2V4dGVybiB1bnNpZ25lZCBpbnQgaW14X2dldF9tY3VfY2xrKHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGludCBpbXhfZ2V0X3BlcmNsazEodm9pZCk7IC8qIFVBUlRbMTJdLCBUaW1lclsxMl0sIFBXTSAqLworZXh0ZXJuIHVuc2lnbmVkIGludCBpbXhfZ2V0X3BlcmNsazIodm9pZCk7IC8qIExDRCwgU0QsIFNQSVsxMl0gICAgICAgICAqLworZXh0ZXJuIHVuc2lnbmVkIGludCBpbXhfZ2V0X3BlcmNsazModm9pZCk7IC8qIFNTSSAgICAgICAgICAgICAgICAgICAgICAqLworZXh0ZXJuIHVuc2lnbmVkIGludCBpbXhfZ2V0X2hjbGsodm9pZCk7ICAgIC8qIFNEUkFNLCBDU0ksIE1lbW9yeSBTdGljaywqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEkyQywgRE1BICAgICAgICAgICAgICAgICAqLworI2VuZGlmCisKKyNkZWZpbmUgTUFYSVJRTlVNICAgICAgICAgICAgICAgICAgICAgICA2MgorI2RlZmluZSBNQVhGSVFOVU0gICAgICAgICAgICAgICAgICAgICAgIDYyCisjZGVmaW5lIE1BWFNXSU5VTSAgICAgICAgICAgICAgICAgICAgICAgNjIKKworLyoKKyAqIFVzZSBTRFJBTSBmb3IgbWVtb3J5CisgKi8KKyNkZWZpbmUgTUVNX1NJWkUJCTB4MDEwMDAwMDAKKworI2lmZGVmIENPTkZJR19BUkNIX01YMUFEUworI2luY2x1ZGUgIm14MWFkcy5oIgorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lteC1yZWdzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaW14LXJlZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzJjMjAzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lteC1yZWdzLmgKQEAgLTAsMCArMSw1NDggQEAKKyNpZm5kZWYgX0lNWF9SRUdTX0gKKyNkZWZpbmUgX0lNWF9SRUdTX0gKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIE1vdG9yb2xhIElNWCBzeXN0ZW0gcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKi8KKworLyoKKyAqICBSZWdpc3RlciBCQVNFcywgYmFzZWQgb24gT0ZGU0VUcworICoKKyAqLworI2RlZmluZSBJTVhfQUlQSTFfQkFTRSAgICAgICAgICAgICAoMHgwMDAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfV0RUX0JBU0UgICAgICAgICAgICAgICAoMHgwMTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfVElNMV9CQVNFICAgICAgICAgICAgICAoMHgwMjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfVElNMl9CQVNFICAgICAgICAgICAgICAoMHgwMzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfUlRDX0JBU0UgICAgICAgICAgICAgICAoMHgwNDAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfTENEQ19CQVNFICAgICAgICAgICAgICAoMHgwNTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfVUFSVDFfQkFTRSAgICAgICAgICAgICAoMHgwNjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfVUFSVDJfQkFTRSAgICAgICAgICAgICAoMHgwNzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfUFdNX0JBU0UgICAgICAgICAgICAgICAoMHgwODAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfRE1BQ19CQVNFICAgICAgICAgICAgICAoMHgwOTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfQUlQSTJfQkFTRSAgICAgICAgICAgICAoMHgxMDAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfU0lNX0JBU0UgICAgICAgICAgICAgICAoMHgxMTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfVVNCRF9CQVNFICAgICAgICAgICAgICAoMHgxMjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfU1BJMV9CQVNFICAgICAgICAgICAgICAoMHgxMzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfTU1DX0JBU0UgICAgICAgICAgICAgICAoMHgxNDAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfQVNQX0JBU0UgICAgICAgICAgICAgICAoMHgxNTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfQlRBX0JBU0UgICAgICAgICAgICAgICAoMHgxNjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfSTJDX0JBU0UgICAgICAgICAgICAgICAoMHgxNzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfU1NJX0JBU0UgICAgICAgICAgICAgICAoMHgxODAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfU1BJMl9CQVNFICAgICAgICAgICAgICAoMHgxOTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfTVNIQ19CQVNFICAgICAgICAgICAgICAoMHgxQTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfUExMX0JBU0UgICAgICAgICAgICAgICAoMHgxQjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfR1BJT19CQVNFICAgICAgICAgICAgICAoMHgxQzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfRUlNX0JBU0UgICAgICAgICAgICAgICAoMHgyMDAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfU0RSQU1DX0JBU0UgICAgICAgICAgICAoMHgyMTAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfTU1BX0JBU0UgICAgICAgICAgICAgICAoMHgyMjAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfQUlUQ19CQVNFICAgICAgICAgICAgICAoMHgyMzAwMCArIElNWF9JT19CQVNFKQorI2RlZmluZSBJTVhfQ1NJX0JBU0UgICAgICAgICAgICAgICAoMHgyNDAwMCArIElNWF9JT19CQVNFKQorCisvKiBQTEwgcmVnaXN0ZXJzICovCisjZGVmaW5lIENTQ1IgICBfX1JFRyhJTVhfUExMX0JBU0UpICAgICAgICAvKiBDbG9jayBTb3VyY2UgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBDU0NSX1NZU1RFTV9TRUwgKDE8PDE2KQorCisjZGVmaW5lIE1QQ1RMMCBfX1JFRyhJTVhfUExMX0JBU0UgKyAweDQpICAvKiBNQ1UgUExMIENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBNUENUTDEgX19SRUcoSU1YX1BMTF9CQVNFICsgMHg4KSAgLyogTUNVIFBMTCBhbmQgU3lzdGVtIENsb2NrIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgU1BDVEwwIF9fUkVHKElNWF9QTExfQkFTRSArIDB4YykgIC8qIFN5c3RlbSBQTEwgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNQQ1RMMSBfX1JFRyhJTVhfUExMX0JBU0UgKyAweDEwKSAvKiBTeXN0ZW0gUExMIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBQQ0RSICAgX19SRUcoSU1YX1BMTF9CQVNFICsgMHgyMCkgLyogUGVyaXBoZXJhbCBDbG9jayBEaXZpZGVyIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgQ1NDUl9NUExMX1JFU1RBUlQgKDE8PDIxKQorCisvKgorICogIEdQSU8gTW9kdWxlIGFuZCBJL08gTXVsdGlwbGV4ZXIKKyAqICB4ID0gMC4uMyBmb3IgcmVnX0EsIHJlZ19CLCByZWdfQywgcmVnX0QKKyAqLworI2RlZmluZSBERElSKHgpICAgIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgwMCwgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIE9DUjEoeCkgICAgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDA0LCAoKHgpICYgMykgPDwgOCkKKyNkZWZpbmUgT0NSMih4KSAgICBfX1JFRzIoSU1YX0dQSU9fQkFTRSArIDB4MDgsICgoeCkgJiAzKSA8PCA4KQorI2RlZmluZSBJQ09ORkExKHgpIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgwYywgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIElDT05GQTIoeCkgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDEwLCAoKHgpICYgMykgPDwgOCkKKyNkZWZpbmUgSUNPTkZCMSh4KSBfX1JFRzIoSU1YX0dQSU9fQkFTRSArIDB4MTQsICgoeCkgJiAzKSA8PCA4KQorI2RlZmluZSBJQ09ORkIyKHgpIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgxOCwgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIERSKHgpICAgICAgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDFjLCAoKHgpICYgMykgPDwgOCkKKyNkZWZpbmUgR0lVUyh4KSAgICBfX1JFRzIoSU1YX0dQSU9fQkFTRSArIDB4MjAsICgoeCkgJiAzKSA8PCA4KQorI2RlZmluZSBTU1IoeCkgICAgIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgyNCwgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIElDUjEoeCkgICAgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDI4LCAoKHgpICYgMykgPDwgOCkKKyNkZWZpbmUgSUNSMih4KSAgICBfX1JFRzIoSU1YX0dQSU9fQkFTRSArIDB4MmMsICgoeCkgJiAzKSA8PCA4KQorI2RlZmluZSBJTVIoeCkgICAgIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgzMCwgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIElTUih4KSAgICAgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDM0LCAoKHgpICYgMykgPDwgOCkKKyNkZWZpbmUgR1BSKHgpICAgICBfX1JFRzIoSU1YX0dQSU9fQkFTRSArIDB4MzgsICgoeCkgJiAzKSA8PCA4KQorI2RlZmluZSBTV1IoeCkgICAgIF9fUkVHMihJTVhfR1BJT19CQVNFICsgMHgzYywgKCh4KSAmIDMpIDw8IDgpCisjZGVmaW5lIFBVRU4oeCkgICAgX19SRUcyKElNWF9HUElPX0JBU0UgKyAweDQwLCAoKHgpICYgMykgPDwgOCkKKworI2RlZmluZSBHUElPX1BJTl9NQVNLIDB4MWYKKyNkZWZpbmUgR1BJT19QT1JUX01BU0sgKDB4MyA8PCA1KQorCisjZGVmaW5lIEdQSU9fUE9SVEEgKDA8PDUpCisjZGVmaW5lIEdQSU9fUE9SVEIgKDE8PDUpCisjZGVmaW5lIEdQSU9fUE9SVEMgKDI8PDUpCisjZGVmaW5lIEdQSU9fUE9SVEQgKDM8PDUpCisKKyNkZWZpbmUgR1BJT19PVVQgICAoMTw8NykKKyNkZWZpbmUgR1BJT19JTiAgICAoMDw8NykKKyNkZWZpbmUgR1BJT19QVUVOICAoMTw8OCkKKworI2RlZmluZSBHUElPX1BGICAgICgwPDw5KQorI2RlZmluZSBHUElPX0FGICAgICgxPDw5KQorCisjZGVmaW5lIEdQSU9fT0NSX01BU0sgKDM8PDEwKQorI2RlZmluZSBHUElPX0FJTiAgICgwPDwxMCkKKyNkZWZpbmUgR1BJT19CSU4gICAoMTw8MTApCisjZGVmaW5lIEdQSU9fQ0lOICAgKDI8PDEwKQorI2RlZmluZSBHUElPX0dQSU8gICgzPDwxMCkKKworI2RlZmluZSBHUElPX0FPVVQgICgxPDwxMikKKyNkZWZpbmUgR1BJT19CT1VUICAoMTw8MTMpCisKKy8qIGFzc2lnbmVtZW50cyBmb3IgR1BJTyBhbHRlcm5hdGUvcHJpbWFyeSBmdW5jdGlvbnMgKi8KKworLyogRklYTUU6IFRoaXMgbGlzdCBpcyBub3QgY29tcGxldGVkLiBUaGUgY29ycmVjdCBkaXJlY3Rpb25zIGFyZQorICogbWlzc2luZyBvbiBzb21lIChtYW55KSBwaW5zCisgKi8KKyNkZWZpbmUgUEEwX1BGX0EyNCAgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDAgKQorI2RlZmluZSBQQTBfQUlOX1NQSTJfQ0xLICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX09VVCB8IEdQSU9fQUlOIHwgMCApCisjZGVmaW5lIFBBMF9BRl9FVE1UUkFDRVNZTkMgICggR1BJT19QT1JUQSB8IEdQSU9fQUYgfCAwICkKKyNkZWZpbmUgUEExX0FPVVRfU1BJMl9SWEQgICAgKCBHUElPX1BPUlRBIHwgR1BJT19JTiB8IEdQSU9fQU9VVCB8IDEgKQorI2RlZmluZSBQQTFfUEZfVElOICAgICAgICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX1BGIHwgMSApCisjZGVmaW5lIFBBMl9QRl9QV00wICAgICAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDIgKQorI2RlZmluZSBQQTNfUEZfQ1NJX01DTEsgICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX1BGIHwgMyApCisjZGVmaW5lIFBBNF9QRl9DU0lfRDAgICAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCA0ICkKKyNkZWZpbmUgUEE1X1BGX0NTSV9EMSAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDUgKQorI2RlZmluZSBQQTZfUEZfQ1NJX0QyICAgICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX1BGIHwgNiApCisjZGVmaW5lIFBBN19QRl9DU0lfRDMgICAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCA3ICkKKyNkZWZpbmUgUEE4X1BGX0NTSV9ENCAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDggKQorI2RlZmluZSBQQTlfUEZfQ1NJX0Q1ICAgICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX1BGIHwgOSApCisjZGVmaW5lIFBBMTBfUEZfQ1NJX0Q2ICAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCAxMCApCisjZGVmaW5lIFBBMTFfUEZfQ1NJX0Q3ICAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCAxMSApCisjZGVmaW5lIFBBMTJfUEZfQ1NJX1ZTWU5DICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCAxMiApCisjZGVmaW5lIFBBMTNfUEZfQ1NJX0hTWU5DICAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCAxMyApCisjZGVmaW5lIFBBMTRfUEZfQ1NJX1BJWENMSyAgICggR1BJT19QT1JUQSB8IEdQSU9fUEYgfCAxNCApCisjZGVmaW5lIFBBMTVfUEZfSTJDX1NEQSAgICAgICggR1BJT19QT1JUQSB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDE1ICkKKyNkZWZpbmUgUEExNl9QRl9JMkNfU0NMICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMTYgKQorI2RlZmluZSBQQTE3X0FGX0VUTVRSQUNFUEtUNCAoIEdQSU9fUE9SVEEgfCBHUElPX0FGIHwgMTcgKQorI2RlZmluZSBQQTE3X0FJTl9TUEkyX1NTICAgICAoIEdQSU9fUE9SVEEgfCBHUElPX0FJTiB8IDE3ICkKKyNkZWZpbmUgUEExOF9BRl9FVE1UUkFDRVBLVDUgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDE4ICkKKyNkZWZpbmUgUEExOV9BRl9FVE1UUkFDRVBLVDYgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDE5ICkKKyNkZWZpbmUgUEEyMF9BRl9FVE1UUkFDRVBLVDcgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDIwICkKKyNkZWZpbmUgUEEyMV9QRl9BMCAgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDIxICkKKyNkZWZpbmUgUEEyMl9QRl9DUzQgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDIyICkKKyNkZWZpbmUgUEEyM19QRl9DUzUgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDIzICkKKyNkZWZpbmUgUEEyNF9QRl9BMTYgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI0ICkKKyNkZWZpbmUgUEEyNF9BRl9FVE1UUkFDRVBLVDAgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI0ICkKKyNkZWZpbmUgUEEyNV9QRl9BMTcgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI1ICkKKyNkZWZpbmUgUEEyNV9BRl9FVE1UUkFDRVBLVDEgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI1ICkKKyNkZWZpbmUgUEEyNl9QRl9BMTggICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI2ICkKKyNkZWZpbmUgUEEyNl9BRl9FVE1UUkFDRVBLVDIgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI2ICkKKyNkZWZpbmUgUEEyN19QRl9BMTkgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI3ICkKKyNkZWZpbmUgUEEyN19BRl9FVE1UUkFDRVBLVDMgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI3ICkKKyNkZWZpbmUgUEEyOF9QRl9BMjAgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI4ICkKKyNkZWZpbmUgUEEyOF9BRl9FVE1QSVBFU1RBVDAgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI4ICkKKyNkZWZpbmUgUEEyOV9QRl9BMjEgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDI5ICkKKyNkZWZpbmUgUEEyOV9BRl9FVE1QSVBFU1RBVDEgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDI5ICkKKyNkZWZpbmUgUEEzMF9QRl9BMjIgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDMwICkKKyNkZWZpbmUgUEEzMF9BRl9FVE1QSVBFU1RBVDIgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDMwICkKKyNkZWZpbmUgUEEzMV9QRl9BMjMgICAgICAgICAgKCBHUElPX1BPUlRBIHwgR1BJT19QRiB8IDMxICkKKyNkZWZpbmUgUEEzMV9BRl9FVE1UUkFDRUNMSyAgKCBHUElPX1BPUlRBIHwgR1BJT19BRiB8IDMxICkKKyNkZWZpbmUgUEI4X1BGX1NEX0RBVDAgICAgICAgKCBHUElPX1BPUlRCIHwgR1BJT19QRiB8IEdQSU9fUFVFTiB8IDggKQorI2RlZmluZSBQQjhfQUZfTVNfUElPICAgICAgICAoIEdQSU9fUE9SVEIgfCBHUElPX0FGIHwgOCApCisjZGVmaW5lIFBCOV9QRl9TRF9EQVQxICAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCBHUElPX1BVRU4gIHwgOSApCisjZGVmaW5lIFBCOV9BRl9NU19QSTEgICAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCA5ICkKKyNkZWZpbmUgUEIxMF9QRl9TRF9EQVQyICAgICAgKCBHUElPX1BPUlRCIHwgR1BJT19QRiB8IEdQSU9fUFVFTiAgfCAxMCApCisjZGVmaW5lIFBCMTBfQUZfTVNfU0NMS0kgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxMCApCisjZGVmaW5lIFBCMTFfUEZfU0RfREFUMyAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAxMSApCisjZGVmaW5lIFBCMTFfQUZfTVNfU0RJTyAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxMSApCisjZGVmaW5lIFBCMTJfUEZfU0RfQ0xLICAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAxMiApCisjZGVmaW5lIFBCMTJfQUZfTVNfU0NMSzAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxMiApCisjZGVmaW5lIFBCMTNfUEZfU0RfQ01EICAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCBHUElPX1BVRU4gfCAxMyApCisjZGVmaW5lIFBCMTNfQUZfTVNfQlMgICAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxMyApCisjZGVmaW5lIFBCMTRfQUZfU1NJX1JYRlMgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxNCApCisjZGVmaW5lIFBCMTVfQUZfU1NJX1JYQ0xLICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxNSApCisjZGVmaW5lIFBCMTZfQUZfU1NJX1JYREFUICAgICggR1BJT19QT1JUQiB8IEdQSU9fSU4gfCBHUElPX0FGIHwgMTYgKQorI2RlZmluZSBQQjE3X0FGX1NTSV9UWERBVCAgICAoIEdQSU9fUE9SVEIgfCBHUElPX09VVCB8IEdQSU9fQUYgfCAxNyApCisjZGVmaW5lIFBCMThfQUZfU1NJX1RYRlMgICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxOCApCisjZGVmaW5lIFBCMTlfQUZfU1NJX1RYQ0xLICAgICggR1BJT19QT1JUQiB8IEdQSU9fQUYgfCAxOSApCisjZGVmaW5lIFBCMjBfUEZfVVNCRF9BRkUgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyMCApCisjZGVmaW5lIFBCMjFfUEZfVVNCRF9PRSAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyMSApCisjZGVmaW5lIFBCMjJfUEZVU0JEX1JDViAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyMiApCisjZGVmaW5lIFBCMjNfUEZfVVNCRF9TVVNQTkQgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyMyApCisjZGVmaW5lIFBCMjRfUEZfVVNCRF9WUCAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyNCApCisjZGVmaW5lIFBCMjVfUEZfVVNCRF9WTSAgICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyNSApCisjZGVmaW5lIFBCMjZfUEZfVVNCRF9WUE8gICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyNiApCisjZGVmaW5lIFBCMjdfUEZfVVNCRF9WTU8gICAgICggR1BJT19QT1JUQiB8IEdQSU9fUEYgfCAyNyApCisjZGVmaW5lIFBCMjhfUEZfVUFSVDJfQ1RTICAgICggR1BJT19QT1JUQiB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDI4ICkKKyNkZWZpbmUgUEIyOV9QRl9VQVJUMl9SVFMgICAgKCBHUElPX1BPUlRCIHwgR1BJT19JTiB8IEdQSU9fUEYgfCAyOSApCisjZGVmaW5lIFBCMzBfUEZfVUFSVDJfVFhEICAgICggR1BJT19QT1JUQiB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDMwICkKKyNkZWZpbmUgUEIzMV9QRl9VQVJUMl9SWEQgICAgKCBHUElPX1BPUlRCIHwgR1BJT19JTiB8IEdQSU9fUEYgfCAzMSApCisjZGVmaW5lIFBDM19QRl9TU0lfUlhGUyAgICAgICggR1BJT19QT1JUQyB8IEdQSU9fUEYgfCAzICkKKyNkZWZpbmUgUEM0X1BGX1NTSV9SWENMSyAgICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDQgKQorI2RlZmluZSBQQzVfUEZfU1NJX1JYREFUICAgICAoIEdQSU9fUE9SVEMgfCBHUElPX0lOIHwgR1BJT19QRiB8IDUgKQorI2RlZmluZSBQQzZfUEZfU1NJX1RYREFUICAgICAoIEdQSU9fUE9SVEMgfCBHUElPX09VVCB8IEdQSU9fUEYgfCA2ICkKKyNkZWZpbmUgUEM3X1BGX1NTSV9UWEZTICAgICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDcgKQorI2RlZmluZSBQQzhfUEZfU1NJX1RYQ0xLICAgICAoIEdQSU9fUE9SVEMgfCBHUElPX1BGIHwgOCApCisjZGVmaW5lIFBDOV9QRl9VQVJUMV9DVFMgICAgICggR1BJT19QT1JUQyB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDkgKQorI2RlZmluZSBQQzEwX1BGX1VBUlQxX1JUUyAgICAoIEdQSU9fUE9SVEMgfCBHUElPX0lOIHwgR1BJT19QRiB8IDEwICkKKyNkZWZpbmUgUEMxMV9QRl9VQVJUMV9UWEQgICAgKCBHUElPX1BPUlRDIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMTEgKQorI2RlZmluZSBQQzEyX1BGX1VBUlQxX1JYRCAgICAoIEdQSU9fUE9SVEMgfCBHUElPX0lOIHwgR1BJT19QRiB8IDEyICkKKyNkZWZpbmUgUEMxM19QRl9TUEkxX1NQSV9SRFkgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDEzICkKKyNkZWZpbmUgUEMxNF9QRl9TUEkxX1NDTEsgICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDE0ICkKKyNkZWZpbmUgUEMxNV9QRl9TUEkxX1NTICAgICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDE1ICkKKyNkZWZpbmUgUEMxNl9QRl9TUEkxX01JU08gICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDE2ICkKKyNkZWZpbmUgUEMxN19QRl9TUEkxX01PU0kgICAgKCBHUElPX1BPUlRDIHwgR1BJT19QRiB8IDE3ICkKKyNkZWZpbmUgUEQ2X1BGX0xTQ0xLICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgNiApCisjZGVmaW5lIFBEN19QRl9SRVYgICAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fUEYgfCA3ICkKKyNkZWZpbmUgUEQ3X0FGX1VBUlQyX0RUUiAgICAgKCBHUElPX1BPUlREIHwgR1BJT19JTiB8IEdQSU9fQUYgfCA3ICkKKyNkZWZpbmUgUEQ3X0FJTl9TUEkyX1NDTEsgICAgKCBHUElPX1BPUlREIHwgR1BJT19BSU4gfCA3ICkKKyNkZWZpbmUgUEQ4X1BGX0NMUyAgICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19QRiB8IDggKQorI2RlZmluZSBQRDhfQUZfVUFSVDJfRENEICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fQUYgfCA4ICkKKyNkZWZpbmUgUEQ4X0FJTl9TUEkyX1NTICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19BSU4gfCA4ICkKKyNkZWZpbmUgUEQ5X1BGX1BTICAgICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19QRiB8IDkgKQorI2RlZmluZSBQRDlfQUZfVUFSVDJfUkkgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fQUYgfCA5ICkKKyNkZWZpbmUgUEQ5X0FPVVRfU1BJMl9SWEQgICAgKCBHUElPX1BPUlREIHwgR1BJT19JTiB8IEdQSU9fQU9VVCB8IDkgKQorI2RlZmluZSBQRDEwX1BGX1NQTF9TUFIgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAxMCApCisjZGVmaW5lIFBEMTBfQUZfVUFSVDJfRFNSICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19BRiB8IDEwICkKKyNkZWZpbmUgUEQxMF9BSU5fU1BJMl9UWEQgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX0FJTiB8IDEwICkKKyNkZWZpbmUgUEQxMV9QRl9DT05UUkFTVCAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMTEgKQorI2RlZmluZSBQRDEyX1BGX0FDRF9PRSAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAxMiApCisjZGVmaW5lIFBEMTNfUEZfTFBfSFNZTkMgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDEzICkKKyNkZWZpbmUgUEQxNF9QRl9GTE1fVlNZTkMgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMTQgKQorI2RlZmluZSBQRDE1X1BGX0xEMCAgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAxNSApCisjZGVmaW5lIFBEMTZfUEZfTEQxICAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDE2ICkKKyNkZWZpbmUgUEQxN19QRl9MRDIgICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMTcgKQorI2RlZmluZSBQRDE4X1BGX0xEMyAgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAxOCApCisjZGVmaW5lIFBEMTlfUEZfTEQ0ICAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDE5ICkKKyNkZWZpbmUgUEQyMF9QRl9MRDUgICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMjAgKQorI2RlZmluZSBQRDIxX1BGX0xENiAgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAyMSApCisjZGVmaW5lIFBEMjJfUEZfTEQ3ICAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDIyICkKKyNkZWZpbmUgUEQyM19QRl9MRDggICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMjMgKQorI2RlZmluZSBQRDI0X1BGX0xEOSAgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAyNCApCisjZGVmaW5lIFBEMjVfUEZfTEQxMCAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDI1ICkKKyNkZWZpbmUgUEQyNl9QRl9MRDExICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMjYgKQorI2RlZmluZSBQRDI3X1BGX0xEMTIgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAyNyApCisjZGVmaW5lIFBEMjhfUEZfTEQxMyAgICAgICAgICggR1BJT19QT1JURCB8IEdQSU9fT1VUIHwgR1BJT19QRiB8IDI4ICkKKyNkZWZpbmUgUEQyOV9QRl9MRDE0ICAgICAgICAgKCBHUElPX1BPUlREIHwgR1BJT19PVVQgfCBHUElPX1BGIHwgMjkgKQorI2RlZmluZSBQRDMwX1BGX0xEMTUgICAgICAgICAoIEdQSU9fUE9SVEQgfCBHUElPX09VVCB8IEdQSU9fUEYgfCAzMCApCisjZGVmaW5lIFBEMzFfUEZfVE1SMk9VVCAgICAgICggR1BJT19QT1JURCB8IEdQSU9fUEYgfCAzMSApCisjZGVmaW5lIFBEMzFfQklOX1NQSTJfVFhEICAgICggR1BJT19QT1JURCB8IEdQSU9fQklOIHwgMzEgKQorCisvKgorICogIERNQSBDb250cm9sbGVyCisgKi8KKyNkZWZpbmUgRENSICAgICBfX1JFRyhJTVhfRE1BQ19CQVNFICsweDAwKQkvKiBETUEgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBESVNSICAgIF9fUkVHKElNWF9ETUFDX0JBU0UgKzB4MDQpCS8qIERNQSBJbnRlcnJ1cHQgc3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIERJTVIgICAgX19SRUcoSU1YX0RNQUNfQkFTRSArMHgwOCkJLyogRE1BIEludGVycnVwdCBtYXNrIFJlZ2lzdGVyICovCisjZGVmaW5lIERCVE9TUiAgX19SRUcoSU1YX0RNQUNfQkFTRSArMHgwYykJLyogRE1BIEJ1cnN0IHRpbWVvdXQgc3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIERSVE9TUiAgX19SRUcoSU1YX0RNQUNfQkFTRSArMHgxMCkJLyogRE1BIFJlcXVlc3QgdGltZW91dCBSZWdpc3RlciAqLworI2RlZmluZSBEU0VTUiAgIF9fUkVHKElNWF9ETUFDX0JBU0UgKzB4MTQpCS8qIERNQSBUcmFuc2ZlciBFcnJvciBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgREJPU1IgICBfX1JFRyhJTVhfRE1BQ19CQVNFICsweDE4KQkvKiBETUEgQnVmZmVyIG92ZXJmbG93IHN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBEQlRPQ1IgIF9fUkVHKElNWF9ETUFDX0JBU0UgKzB4MWMpCS8qIERNQSBCdXJzdCB0aW1lb3V0IGNvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgV1NSQSAgICBfX1JFRyhJTVhfRE1BQ19CQVNFICsweDQwKQkvKiBXLVNpemUgUmVnaXN0ZXIgQSAqLworI2RlZmluZSBYU1JBICAgIF9fUkVHKElNWF9ETUFDX0JBU0UgKzB4NDQpCS8qIFgtU2l6ZSBSZWdpc3RlciBBICovCisjZGVmaW5lIFlTUkEgICAgX19SRUcoSU1YX0RNQUNfQkFTRSArMHg0OCkJLyogWS1TaXplIFJlZ2lzdGVyIEEgKi8KKyNkZWZpbmUgV1NSQiAgICBfX1JFRyhJTVhfRE1BQ19CQVNFICsweDRjKQkvKiBXLVNpemUgUmVnaXN0ZXIgQiAqLworI2RlZmluZSBYU1JCICAgIF9fUkVHKElNWF9ETUFDX0JBU0UgKzB4NTApCS8qIFgtU2l6ZSBSZWdpc3RlciBCICovCisjZGVmaW5lIFlTUkIgICAgX19SRUcoSU1YX0RNQUNfQkFTRSArMHg1NCkJLyogWS1TaXplIFJlZ2lzdGVyIEIgKi8KKyNkZWZpbmUgU0FSKHgpICBfX1JFRzIoIElNWF9ETUFDX0JBU0UgKyAweDgwLCAoeCkgPDwgNikJLyogU291cmNlIEFkZHJlc3MgUmVnaXN0ZXJzICovCisjZGVmaW5lIERBUih4KSAgX19SRUcyKCBJTVhfRE1BQ19CQVNFICsgMHg4NCwgKHgpIDw8IDYpCS8qIERlc3RpbmF0aW9uIEFkZHJlc3MgUmVnaXN0ZXJzICovCisjZGVmaW5lIENOVFIoeCkgX19SRUcyKCBJTVhfRE1BQ19CQVNFICsgMHg4OCwgKHgpIDw8IDYpCS8qIENvdW50IFJlZ2lzdGVycyAqLworI2RlZmluZSBDQ1IoeCkgIF9fUkVHMiggSU1YX0RNQUNfQkFTRSArIDB4OGMsICh4KSA8PCA2KQkvKqBDb250cm9sIFJlZ2lzdGVycyAqLworI2RlZmluZSBSU1NSKHgpIF9fUkVHMiggSU1YX0RNQUNfQkFTRSArIDB4OTAsICh4KSA8PCA2KQkvKiBSZXF1ZXN0IHNvdXJjZSBzZWxlY3QgUmVnaXN0ZXJzICovCisjZGVmaW5lIEJMUih4KSAgX19SRUcyKCBJTVhfRE1BQ19CQVNFICsgMHg5NCwgKHgpIDw8IDYpCS8qIEJ1cnN0IGxlbmd0aCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgUlRPUih4KSBfX1JFRzIoIElNWF9ETUFDX0JBU0UgKyAweDk4LCAoeCkgPDwgNikJLyogUmVxdWVzdCB0aW1lb3V0IFJlZ2lzdGVycyAqLworI2RlZmluZSBCVUNSKHgpIF9fUkVHMiggSU1YX0RNQUNfQkFTRSArIDB4OTgsICh4KSA8PCA2KQkvKiBCdXMgVXRpbGl6YXRpb24gUmVnaXN0ZXJzICovCisKKyNkZWZpbmUgRENSX0RSU1QgICAgICAgICAgICgxPDwxKQorI2RlZmluZSBEQ1JfREVOICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIERCVE9DUl9FTiAgICAgICAgICAoMTw8MTUpCisjZGVmaW5lIERCVE9DUl9DTlQoeCkgICAgICAoKHgpICYgMHg3ZmZmICkKKyNkZWZpbmUgQ05UUl9DTlQoeCkgICAgICAgICgoeCkgJiAweGZmZmZmZiApCisjZGVmaW5lIENDUl9ETU9EX0xJTkVBUiAgICAoIDB4MCA8PCAxMiApCisjZGVmaW5lIENDUl9ETU9EXzJEICAgICAgICAoIDB4MSA8PCAxMiApCisjZGVmaW5lIENDUl9ETU9EX0ZJRk8gICAgICAoIDB4MiA8PCAxMiApCisjZGVmaW5lIENDUl9ETU9EX0VPQkZJRk8gICAoIDB4MyA8PCAxMiApCisjZGVmaW5lIENDUl9TTU9EX0xJTkVBUiAgICAoIDB4MCA8PCAxMCApCisjZGVmaW5lIENDUl9TTU9EXzJEICAgICAgICAoIDB4MSA8PCAxMCApCisjZGVmaW5lIENDUl9TTU9EX0ZJRk8gICAgICAoIDB4MiA8PCAxMCApCisjZGVmaW5lIENDUl9TTU9EX0VPQkZJRk8gICAoIDB4MyA8PCAxMCApCisjZGVmaW5lIENDUl9NRElSX0RFQyAgICAgICAoMTw8OSkKKyNkZWZpbmUgQ0NSX01TRUxfQiAgICAgICAgICgxPDw4KQorI2RlZmluZSBDQ1JfRFNJWl8zMiAgICAgICAgKCAweDAgPDwgNiApCisjZGVmaW5lIENDUl9EU0laXzggICAgICAgICAoIDB4MSA8PCA2ICkKKyNkZWZpbmUgQ0NSX0RTSVpfMTYgICAgICAgICggMHgyIDw8IDYgKQorI2RlZmluZSBDQ1JfU1NJWl8zMiAgICAgICAgKCAweDAgPDwgNCApCisjZGVmaW5lIENDUl9TU0laXzggICAgICAgICAoIDB4MSA8PCA0ICkKKyNkZWZpbmUgQ0NSX1NTSVpfMTYgICAgICAgICggMHgyIDw8IDQgKQorI2RlZmluZSBDQ1JfUkVOICAgICAgICAgICAgKDE8PDMpCisjZGVmaW5lIENDUl9SUFQgICAgICAgICAgICAoMTw8MikKKyNkZWZpbmUgQ0NSX0ZSQyAgICAgICAgICAgICgxPDwxKQorI2RlZmluZSBDQ1JfQ0VOICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIFJUT1JfRU4gICAgICAgICAgICAoMTw8MTUpCisjZGVmaW5lIFJUT1JfQ0xLICAgICAgICAgICAoMTw8MTQpCisjZGVmaW5lIFJUT1JfUFNDICAgICAgICAgICAoMTw8MTMpCisKKy8qCisgKiAgSW50ZXJydXB0IGNvbnRyb2xsZXIKKyAqLworCisjZGVmaW5lIElNWF9JTlRDTlRMICAgICAgICBfX1JFRyhJTVhfQUlUQ19CQVNFKzB4MDApCisjZGVmaW5lIElOVENOVExfRklBRCAgICAgICAoMTw8MTkpCisjZGVmaW5lIElOVENOVExfTklBRCAgICAgICAoMTw8MjApCisKKyNkZWZpbmUgSU1YX05JTUFTSyAgICAgICAgIF9fUkVHKElNWF9BSVRDX0JBU0UrMHgwNCkKKyNkZWZpbmUgSU1YX0lOVEVOTlVNICAgICAgIF9fUkVHKElNWF9BSVRDX0JBU0UrMHgwOCkKKyNkZWZpbmUgSU1YX0lOVERJU05VTSAgICAgIF9fUkVHKElNWF9BSVRDX0JBU0UrMHgwYykKKyNkZWZpbmUgSU1YX0lOVEVOQUJMRUggICAgIF9fUkVHKElNWF9BSVRDX0JBU0UrMHgxMCkKKyNkZWZpbmUgSU1YX0lOVEVOQUJMRUwgICAgIF9fUkVHKElNWF9BSVRDX0JBU0UrMHgxNCkKKworLyoKKyAqICBHZW5lcmFsIHB1cnBvc2UgdGltZXJzCisgKi8KKyNkZWZpbmUgSU1YX1RDVEwoeCkgICAgICAgIF9fUkVHKCAweDAwICsgKHgpKQorI2RlZmluZSBUQ1RMX1NXUiAgICAgICAgICAgKDE8PDE1KQorI2RlZmluZSBUQ1RMX0ZSUiAgICAgICAgICAgKDE8PDgpCisjZGVmaW5lIFRDVExfQ0FQX1JJUyAgICAgICAoMTw8NikKKyNkZWZpbmUgVENUTF9DQVBfRkFMICAgICAgICgyPDw2KQorI2RlZmluZSBUQ1RMX0NBUF9SSVNfRkFMICAgKDM8PDYpCisjZGVmaW5lIFRDVExfT00gICAgICAgICAgICAoMTw8NSkKKyNkZWZpbmUgVENUTF9JUlFFTiAgICAgICAgICgxPDw0KQorI2RlZmluZSBUQ1RMX0NMS19QQ0xLMSAgICAgKDE8PDEpCisjZGVmaW5lIFRDVExfQ0xLX1BDTEsxXzE2ICAoMjw8MSkKKyNkZWZpbmUgVENUTF9DTEtfVElOICAgICAgICgzPDwxKQorI2RlZmluZSBUQ1RMX0NMS18zMiAgICAgICAgKDQ8PDEpCisjZGVmaW5lIFRDVExfVEVOICAgICAgICAgICAoMTw8MCkKKworI2RlZmluZSBJTVhfVFBSRVIoeCkgICAgICAgX19SRUcoIDB4MDQgKyAoeCkpCisjZGVmaW5lIElNWF9UQ01QKHgpICAgICAgICBfX1JFRyggMHgwOCArICh4KSkKKyNkZWZpbmUgSU1YX1RDUih4KSAgICAgICAgIF9fUkVHKCAweDBDICsgKHgpKQorI2RlZmluZSBJTVhfVENOKHgpICAgICAgICAgX19SRUcoIDB4MTAgKyAoeCkpCisjZGVmaW5lIElNWF9UU1RBVCh4KSAgICAgICBfX1JFRyggMHgxNCArICh4KSkKKyNkZWZpbmUgVFNUQVRfQ0FQVCAgICAgICAgICgxPDwxKQorI2RlZmluZSBUU1RBVF9DT01QICAgICAgICAgKDE8PDApCisKKy8qCisgKiBMQ0QgQ29udHJvbGxlcgorICovCisKKyNkZWZpbmUgTENEQ19TU0EJX19SRUcoSU1YX0xDRENfQkFTRSsweDAwKQorCisjZGVmaW5lIExDRENfU0laRQlfX1JFRyhJTVhfTENEQ19CQVNFKzB4MDQpCisjZGVmaW5lIFNJWkVfWE1BWCh4KQkoKCgoeCkgPj4gNCkgJiAweDNmKSA8PCAyMCkKKyNkZWZpbmUgU0laRV9ZTUFYKHkpICAgICggKHkpICYgMHgxZmYgKQorCisjZGVmaW5lIExDRENfVlBXCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHgwOCkKKyNkZWZpbmUgVlBXX1ZQVyh4KQkoICh4KSAmIDB4M2ZmICkKKworI2RlZmluZSBMQ0RDX0NQT1MJX19SRUcoSU1YX0xDRENfQkFTRSsweDBDKQorI2RlZmluZSBDUE9TX0NDMSAgICAgICAgKDE8PDMxKQorI2RlZmluZSBDUE9TX0NDMCAgICAgICAgKDE8PDMwKQorI2RlZmluZSBDUE9TX09QICAgICAgICAgKDE8PDI4KQorI2RlZmluZSBDUE9TX0NYUCh4KSAgICAgKCgoeCkgJiAzZmYpIDw8IDE2KQorI2RlZmluZSBDUE9TX0NZUCh5KSAgICAgKCh5KSAmIDB4MWZmKQorCisjZGVmaW5lIExDRENfTENXSEIJX19SRUcoSU1YX0xDRENfQkFTRSsweDEwKQorI2RlZmluZSBMQ1dIQl9CS19FTiAgICAgKDE8PDMxKQorI2RlZmluZSBMQ1dIQl9DVyh3KSAgICAgKCgodykgJiAweDFmKSA8PCAyNCkKKyNkZWZpbmUgTENXSEJfQ0goaCkgICAgICgoKGgpICYgMHgxZikgPDwgMTYpCisjZGVmaW5lIExDV0hCX0JEKHgpICAgICAoKHgpICYgMHhmZikKKworI2RlZmluZSBMQ0RDX0xDSENDCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHgxNCkKKyNkZWZpbmUgTENIQ0NfQ1VSX0NPTF9SKHIpICgoKHIpICYgMHgxZikgPDwgMTEpCisjZGVmaW5lIExDSENDX0NVUl9DT0xfRyhnKSAoKChnKSAmIDB4M2YpIDw8IDUpCisjZGVmaW5lIExDSENDX0NVUl9DT0xfQihiKSAoKGIpICYgMHgxZikKKworI2RlZmluZSBMQ0RDX1BDUglfX1JFRyhJTVhfTENEQ19CQVNFKzB4MTgpCisjZGVmaW5lIFBDUl9URlQgICAgICAgICAoMTw8MzEpCisjZGVmaW5lIFBDUl9DT0xPUiAgICAgICAoMTw8MzApCisjZGVmaW5lIFBDUl9QQlNJWl8xICAgICAoMDw8MjgpCisjZGVmaW5lIFBDUl9QQlNJWl8yICAgICAoMTw8MjgpCisjZGVmaW5lIFBDUl9QQlNJWl80ICAgICAoMjw8MjgpCisjZGVmaW5lIFBDUl9QQlNJWl84ICAgICAoMzw8MjgpCisjZGVmaW5lIFBDUl9CUElYXzEgICAgICAoMDw8MjUpCisjZGVmaW5lIFBDUl9CUElYXzIgICAgICAoMTw8MjUpCisjZGVmaW5lIFBDUl9CUElYXzQgICAgICAoMjw8MjUpCisjZGVmaW5lIFBDUl9CUElYXzggICAgICAoMzw8MjUpCisjZGVmaW5lIFBDUl9CUElYXzEyICAgICAoNDw8MjUpCisjZGVmaW5lIFBDUl9CUElYXzE2ICAgICAoNDw8MjUpCisjZGVmaW5lIFBDUl9QSVhQT0wgICAgICAoMTw8MjQpCisjZGVmaW5lIFBDUl9GTE1QT0wgICAgICAoMTw8MjMpCisjZGVmaW5lIFBDUl9MUFBPTCAgICAgICAoMTw8MjIpCisjZGVmaW5lIFBDUl9DTEtQT0wgICAgICAoMTw8MjEpCisjZGVmaW5lIFBDUl9PRVBPTCAgICAgICAoMTw8MjApCisjZGVmaW5lIFBDUl9TQ0xLSURMRSAgICAoMTw8MTkpCisjZGVmaW5lIFBDUl9FTkRfU0VMICAgICAoMTw8MTgpCisjZGVmaW5lIFBDUl9FTkRfQllURV9TV0FQICgxPDwxNykKKyNkZWZpbmUgUENSX1JFVl9WUyAgICAgICgxPDwxNikKKyNkZWZpbmUgUENSX0FDRF9TRUwgICAgICgxPDwxNSkKKyNkZWZpbmUgUENSX0FDRCh4KSAgICAgICgoKHgpICYgMHg3ZikgPDwgOCkKKyNkZWZpbmUgUENSX1NDTEtfU0VMICAgICgxPDw3KQorI2RlZmluZSBQQ1JfU0hBUlAgICAgICAgKDE8PDYpCisjZGVmaW5lIFBDUl9QQ0QoeCkgICAgICAoKHgpICYgMHgzZikKKworI2RlZmluZSBMQ0RDX0hDUglfX1JFRyhJTVhfTENEQ19CQVNFKzB4MUMpCisjZGVmaW5lIEhDUl9IX1dJRFRIKHgpICAoKCh4KSAmIDB4M2YpIDw8IDI2KQorI2RlZmluZSBIQ1JfSF9XQUlUXzEoeCkgKCgoeCkgJiAweGZmKSA8PCA4KQorI2RlZmluZSBIQ1JfSF9XQUlUXzIoeCkgKCh4KSAmIDB4ZmYpCisKKyNkZWZpbmUgTENEQ19WQ1IJX19SRUcoSU1YX0xDRENfQkFTRSsweDIwKQorI2RlZmluZSBWQ1JfVl9XSURUSCh4KSAgKCgoeCkgJiAweDNmKSA8PCAyNikKKyNkZWZpbmUgVkNSX1ZfV0FJVF8xKHgpICgoKHgpICYgMHhmZikgPDwgOCkKKyNkZWZpbmUgVkNSX1ZfV0FJVF8yKHgpICgoeCkgJiAweGZmKQorCisjZGVmaW5lIExDRENfUE9TCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHgyNCkKKyNkZWZpbmUgUE9TX1BPUyh4KSAgICAgICgoeCkgJiAxZikKKworI2RlZmluZSBMQ0RDX0xTQ1IxCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHgyOCkKKyNkZWZpbmUgTFNDUjFfUFNfUklTRV9ERUxBWSh4KSAgICAoKCh4KSAmIDB4N2YpIDw8IDI2KQorI2RlZmluZSBMU0NSMV9DTFNfUklTRV9ERUxBWSh4KSAgICgoKHgpICYgMHgzZikgPDwgMTYpCisjZGVmaW5lIExTQ1IxX1JFVl9UT0dHTEVfREVMQVkoeCkgKCgoeCkgJiAweGYpIDw8IDgpCisjZGVmaW5lIExTQ1IxX0dSQVkyKHgpICAgICAgICAgICAgKCgoeCkgJiAweGYpIDw8IDQpCisjZGVmaW5lIExTQ1IxX0dSQVkxKHgpICAgICAgICAgICAgKCgoeCkgJiAweGYpKQorCisjZGVmaW5lIExDRENfUFdNUglfX1JFRyhJTVhfTENEQ19CQVNFKzB4MkMpCisjZGVmaW5lIFBXTVJfQ0xTKHgpICAgICAoKCh4KSAmIDB4MWZmKSA8PCAxNikKKyNkZWZpbmUgUFdNUl9MRE1TSyAgICAgICgxPDwxNSkKKyNkZWZpbmUgUFdNUl9TQ1IxICAgICAgICgxPDwxMCkKKyNkZWZpbmUgUFdNUl9TQ1IwICAgICAgICgxPDw5KQorI2RlZmluZSBQV01SX0NDX0VOICAgICAgKDE8PDgpCisjZGVmaW5lIFBXTVJfUFcoeCkgICAgICAoKHgpICYgMHhmZikKKworI2RlZmluZSBMQ0RDX0RNQUNSCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHgzMCkKKyNkZWZpbmUgRE1BQ1JfQlVSU1QgICAgICgxPDwzMSkKKyNkZWZpbmUgRE1BQ1JfSE0oeCkgICAgICgoKHgpICYgMHhmKSA8PCAxNikKKyNkZWZpbmUgRE1BQ1JfVE0oeCkgICAgICgoeCkgJjB4ZikKKworI2RlZmluZSBMQ0RDX1JNQ1IJX19SRUcoSU1YX0xDRENfQkFTRSsweDM0KQorI2RlZmluZSBSTUNSX0xDRENfRU4JCSgxPDwxKQorI2RlZmluZSBSTUNSX1NFTEZfUkVGCQkoMTw8MCkKKworI2RlZmluZSBMQ0RDX0xDRElDUglfX1JFRyhJTVhfTENEQ19CQVNFKzB4MzgpCisjZGVmaW5lIExDRElDUl9JTlRfU1lOICAoMTw8MikKKyNkZWZpbmUgTENESUNSX0lOVF9DT04gICgxKQorCisjZGVmaW5lIExDRENfTENESVNSCV9fUkVHKElNWF9MQ0RDX0JBU0UrMHg0MCkKKyNkZWZpbmUgTENESVNSX1VEUl9FUlIgKDE8PDMpCisjZGVmaW5lIExDRElTUl9FUlJfUkVTICgxPDwyKQorI2RlZmluZSBMQ0RJU1JfRU9GICAgICAoMTw8MSkKKyNkZWZpbmUgTENESVNSX0JPRiAgICAgKDE8PDApCisKKy8qCisgKiAgVUFSVCBNb2R1bGUuIFRha2VzIHRoZSBVQVJUIGJhc2UgYWRkcmVzcyBhcyBhcmd1bWVudAorICovCisjZGVmaW5lIFVSWEQwKHgpIF9fUkVHKCAweDAgKyAoeCkpIC8qIFJlY2VpdmVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFVSVFgwKHgpIF9fUkVHKCAweDQwICsgKHgpKSAvKiBUcmFuc21pdHRlciBSZWdpc3RlciAqLworI2RlZmluZSBVQ1IxKHgpICBfX1JFRyggMHg4MCArICh4KSkgLyogQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIFVDUjIoeCkgIF9fUkVHKCAweDg0ICsgKHgpKSAvKiBDb250cm9sIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgVUNSMyh4KSAgX19SRUcoIDB4ODggKyAoeCkpIC8qIENvbnRyb2wgUmVnaXN0ZXIgMyAqLworI2RlZmluZSBVQ1I0KHgpICBfX1JFRyggMHg4YyArICh4KSkgLyogQ29udHJvbCBSZWdpc3RlciA0ICovCisjZGVmaW5lIFVGQ1IoeCkgIF9fUkVHKCAweDkwICsgKHgpKSAvKiBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVVNSMSh4KSAgX19SRUcoIDB4OTQgKyAoeCkpIC8qIFN0YXR1cyBSZWdpc3RlciAxICovCisjZGVmaW5lIFVTUjIoeCkgIF9fUkVHKCAweDk4ICsgKHgpKSAvKiBTdGF0dXMgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBVRVNDKHgpICBfX1JFRyggMHg5YyArICh4KSkgLyogRXNjYXBlIENoYXJhY3RlciBSZWdpc3RlciAqLworI2RlZmluZSBVVElNKHgpICBfX1JFRyggMHhhMCArICh4KSkgLyogRXNjYXBlIFRpbWVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFVCSVIoeCkgIF9fUkVHKCAweGE0ICsgKHgpKSAvKiBCUk0gSW5jcmVtZW50YWwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUJNUih4KSAgX19SRUcoIDB4YTggKyAoeCkpIC8qIEJSTSBNb2R1bGF0b3IgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUJSQyh4KSAgX19SRUcoIDB4YWMgKyAoeCkpIC8qIEJhdWQgUmF0ZSBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBCSVBSMSh4KSBfX1JFRyggMHhiMCArICh4KSkgLyogSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgQklQUjIoeCkgX19SRUcoIDB4YjQgKyAoeCkpIC8qIEluY3JlbWVudGFsIFByZXNldCBSZWdpc3RlciAyICovCisjZGVmaW5lIEJJUFIzKHgpIF9fUkVHKCAweGI4ICsgKHgpKSAvKiBJbmNyZW1lbnRhbCBQcmVzZXQgUmVnaXN0ZXIgMyAqLworI2RlZmluZSBCSVBSNCh4KSBfX1JFRyggMHhiYyArICh4KSkgLyogSW5jcmVtZW50YWwgUHJlc2V0IFJlZ2lzdGVyIDQgKi8KKyNkZWZpbmUgQk1QUjEoeCkgX19SRUcoIDB4YzAgKyAoeCkpIC8qIEJSTSBNb2R1bGF0b3IgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBCTVBSMih4KSBfX1JFRyggMHhjNCArICh4KSkgLyogQlJNIE1vZHVsYXRvciBSZWdpc3RlciAyICovCisjZGVmaW5lIEJNUFIzKHgpIF9fUkVHKCAweGM4ICsgKHgpKSAvKiBCUk0gTW9kdWxhdG9yIFJlZ2lzdGVyIDMgKi8KKyNkZWZpbmUgQk1QUjQoeCkgX19SRUcoIDB4Y2MgKyAoeCkpIC8qIEJSTSBNb2R1bGF0b3IgUmVnaXN0ZXIgNCAqLworI2RlZmluZSBVVFMoeCkgICBfX1JFRyggMHhkMCArICh4KSkgLyogVUFSVCBUZXN0IFJlZ2lzdGVyICovCisKKy8qIFVBUlQgQ29udHJvbCBSZWdpc3RlciBCaXQgRmllbGRzLiovCisjZGVmaW5lICBVUlhEX0NIQVJSRFkgICAgKDE8PDE1KQorI2RlZmluZSAgVVJYRF9FUlIgICAgICAgICgxPDwxNCkKKyNkZWZpbmUgIFVSWERfT1ZSUlVOICAgICAoMTw8MTMpCisjZGVmaW5lICBVUlhEX0ZSTUVSUiAgICAgKDE8PDEyKQorI2RlZmluZSAgVVJYRF9CUksgICAgICAgICgxPDwxMSkKKyNkZWZpbmUgIFVSWERfUFJFUlIgICAgICAoMTw8MTApCisjZGVmaW5lICBVQ1IxX0FERU4gICAgICAgKDE8PDE1KSAvKiBBdXRvIGRlY3RlY3QgaW50ZXJydXB0ICovCisjZGVmaW5lICBVQ1IxX0FEQlIgICAgICAgKDE8PDE0KSAvKiBBdXRvIGRldGVjdCBiYXVkIHJhdGUgKi8KKyNkZWZpbmUgIFVDUjFfVFJEWUVOICAgICAoMTw8MTMpIC8qIFRyYW5zbWl0dGVyIHJlYWR5IGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjFfSURFTiAgICAgICAoMTw8MTIpIC8qIElkbGUgY29uZGl0aW9uIGludGVycnVwdCAqLworI2RlZmluZSAgVUNSMV9SUkRZRU4gICAgICgxPDw5KQkgLyogUmVjdiByZWFkeSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1IxX1JETUFFTiAgICAgKDE8PDgpCSAvKiBSZWN2IHJlYWR5IERNQSBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjFfSVJFTiAgICAgICAoMTw8NykJIC8qIEluZnJhcmVkIGludGVyZmFjZSBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjFfVFhNUFRZRU4gICAoMTw8NikJIC8qIFRyYW5zaW1pdHRlciBlbXB0eSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1IxX1JUU0RFTiAgICAgKDE8PDUpCSAvKiBSVFMgZGVsdGEgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSMV9TTkRCUksgICAgICgxPDw0KQkgLyogU2VuZCBicmVhayAqLworI2RlZmluZSAgVUNSMV9URE1BRU4gICAgICgxPDwzKQkgLyogVHJhbnNtaXR0ZXIgcmVhZHkgRE1BIGVuYWJsZSAqLworI2RlZmluZSAgVUNSMV9VQVJUQ0xLRU4gICgxPDwyKQkgLyogVUFSVCBjbG9jayBlbmFibGVkICovCisjZGVmaW5lICBVQ1IxX0RPWkUgICAgICAgKDE8PDEpCSAvKiBEb3plICovCisjZGVmaW5lICBVQ1IxX1VBUlRFTiAgICAgKDE8PDApCSAvKiBVQVJUIGVuYWJsZWQgKi8KKyNkZWZpbmUgIFVDUjJfRVNDSSAgICAgCSAoMTw8MTUpIC8qIEVzY2FwZSBzZXEgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSMl9JUlRTICAJICgxPDwxNCkgLyogSWdub3JlIFJUUyBwaW4gKi8KKyNkZWZpbmUgIFVDUjJfQ1RTQyAgCSAoMTw8MTMpIC8qIENUUyBwaW4gY29udHJvbCAqLworI2RlZmluZSAgVUNSMl9DVFMgICAgICAgICgxPDwxMikgLyogQ2xlYXIgdG8gc2VuZCAqLworI2RlZmluZSAgVUNSMl9FU0NFTiAgICAgICgxPDwxMSkgLyogRXNjYXBlIGVuYWJsZSAqLworI2RlZmluZSAgVUNSMl9QUkVOICAgICAgICgxPDw4KSAgLyogUGFyaXR5IGVuYWJsZSAqLworI2RlZmluZSAgVUNSMl9QUk9FICAgICAgICgxPDw3KSAgLyogUGFyaXR5IG9kZC9ldmVuICovCisjZGVmaW5lICBVQ1IyX1NUUEIgICAgICAgKDE8PDYpCSAvKiBTdG9wICovCisjZGVmaW5lICBVQ1IyX1dTICAgICAgICAgKDE8PDUpCSAvKiBXb3JkIHNpemUgKi8KKyNkZWZpbmUgIFVDUjJfUlRTRU4gICAgICAoMTw8NCkJIC8qIFJlcXVlc3QgdG8gc2VuZCBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1IyX1RYRU4gICAgICAgKDE8PDIpCSAvKiBUcmFuc21pdHRlciBlbmFibGVkICovCisjZGVmaW5lICBVQ1IyX1JYRU4gICAgICAgKDE8PDEpCSAvKiBSZWNlaXZlciBlbmFibGVkICovCisjZGVmaW5lICBVQ1IyX1NSU1QgCSAoMTw8MCkJIC8qIFNXIHJlc2V0ICovCisjZGVmaW5lICBVQ1IzX0RUUkVOIAkgKDE8PDEzKSAvKiBEVFIgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSM19QQVJFUlJFTiAgICgxPDwxMikgLyogUGFyaXR5IGVuYWJsZSAqLworI2RlZmluZSAgVUNSM19GUkFFUlJFTiAgICgxPDwxMSkgLyogRnJhbWUgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSM19EU1IgICAgICAgICgxPDwxMCkgLyogRGF0YSBzZXQgcmVhZHkgKi8KKyNkZWZpbmUgIFVDUjNfRENEICAgICAgICAoMTw8OSkgIC8qIERhdGEgY2FycmllciBkZXRlY3QgKi8KKyNkZWZpbmUgIFVDUjNfUkkgICAgICAgICAoMTw8OCkgIC8qIFJpbmcgaW5kaWNhdG9yICovCisjZGVmaW5lICBVQ1IzX1RJTUVPVVRFTiAgKDE8PDcpICAvKiBUaW1lb3V0IGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjNfUlhEU0VOCSAoMTw8NikgIC8qIFJlY2VpdmUgc3RhdHVzIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjNfQUlSSU5URU4gICAoMTw8NSkgIC8qIEFzeW5jIElSIHdha2UgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSM19BV0FLRU4JICgxPDw0KSAgLyogQXN5bmMgd2FrZSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1IzX1JFRjI1IAkgKDE8PDMpICAvKiBSZWYgZnJlcSAyNSBNSHogKi8KKyNkZWZpbmUgIFVDUjNfUkVGMzAgCSAoMTw8MikgIC8qIFJlZiBGcmVxIDMwIE1IeiAqLworI2RlZmluZSAgVUNSM19JTlZUICAJICgxPDwxKSAgLyogSW52ZXJ0ZWQgSW5mcmFyZWQgdHJhbnNtaXNzaW9uICovCisjZGVmaW5lICBVQ1IzX0JQRU4gIAkgKDE8PDApICAvKiBQcmVzZXQgcmVnaXN0ZXJzIGVuYWJsZSAqLworI2RlZmluZSAgVUNSNF9DVFNUTF8zMiAgICgzMjw8MTApIC8qIENUUyB0cmlnZ2VyIGxldmVsICgzMiBjaGFycykgKi8KKyNkZWZpbmUgIFVDUjRfSU5WUiAgCSAoMTw8OSkgIC8qIEludmVydGVkIGluZnJhcmVkIHJlY2VwdGlvbiAqLworI2RlZmluZSAgVUNSNF9FTklSSSAJICgxPDw4KSAgLyogU2VyaWFsIGluZnJhcmVkIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfV0tFTiAgCSAoMTw8NykgIC8qIFdha2UgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSNF9SRUYxNiAJICgxPDw2KSAgLyogUmVmIGZyZXEgMTYgTUh6ICovCisjZGVmaW5lICBVQ1I0X0lSU0MgIAkgKDE8PDUpICAvKiBJUiBzcGVjaWFsIGNhc2UgKi8KKyNkZWZpbmUgIFVDUjRfVENFTiAgCSAoMTw8MykgIC8qIFRyYW5zbWl0IGNvbXBsZXRlIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfQktFTiAgCSAoMTw8MikgIC8qIEJyZWFrIGNvbmRpdGlvbiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1I0X09SRU4gIAkgKDE8PDEpICAvKiBSZWNlaXZlciBvdmVycnVuIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfRFJFTiAgCSAoMTw8MCkgIC8qIFJlY3YgZGF0YSByZWFkeSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVRkNSX1JYVExfU0hGICAgMCAgICAgICAvKiBSZWNlaXZlciB0cmlnZ2VyIGxldmVsIHNoaWZ0ICovCisjZGVmaW5lICBVRkNSX1JGRElWICAgICAgKDc8PDcpICAvKiBSZWZlcmVuY2UgZnJlcSBkaXZpZGVyIG1hc2sgKi8KKyNkZWZpbmUgIFVGQ1JfVFhUTF9TSEYgICAxMCAgICAgIC8qIFRyYW5zbWl0dGVyIHRyaWdnZXIgbGV2ZWwgc2hpZnQgKi8KKyNkZWZpbmUgIFVTUjFfUEFSSVRZRVJSICAoMTw8MTUpIC8qIFBhcml0eSBlcnJvciBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgVVNSMV9SVFNTICAJICgxPDwxNCkgLyogUlRTIHBpbiBzdGF0dXMgKi8KKyNkZWZpbmUgIFVTUjFfVFJEWSAgCSAoMTw8MTMpIC8qIFRyYW5zbWl0dGVyIHJlYWR5IGludGVycnVwdC9kbWEgZmxhZyAqLworI2RlZmluZSAgVVNSMV9SVFNEICAJICgxPDwxMikgLyogUlRTIGRlbHRhICovCisjZGVmaW5lICBVU1IxX0VTQ0YgIAkgKDE8PDExKSAvKiBFc2NhcGUgc2VxIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IxX0ZSQU1FUlIgICAgKDE8PDEwKSAvKiBGcmFtZSBlcnJvciBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgVVNSMV9SUkRZICAgICAgICgxPDw5KQkgLyogUmVjZWl2ZXIgcmVhZHkgaW50ZXJydXB0L2RtYSBmbGFnICovCisjZGVmaW5lICBVU1IxX1RJTUVPVVQgICAgKDE8PDcpCSAvKiBSZWNlaXZlIHRpbWVvdXQgaW50ZXJydXB0IHN0YXR1cyAqLworI2RlZmluZSAgVVNSMV9SWERTICAJICgxPDw2KQkgLyogUmVjZWl2ZXIgaWRsZSBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgVVNSMV9BSVJJTlQJICgxPDw1KQkgLyogQXN5bmMgSVIgd2FrZSBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgVVNSMV9BV0FLRSAJICgxPDw0KQkgLyogQXlzbmMgd2FrZSBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgVVNSMl9BREVUICAJICgxPDwxNSkgLyogQXV0byBiYXVkIHJhdGUgZGV0ZWN0IGNvbXBsZXRlICovCisjZGVmaW5lICBVU1IyX1RYRkUgIAkgKDE8PDE0KSAvKiBUcmFuc21pdCBidWZmZXIgRklGTyBlbXB0eSAqLworI2RlZmluZSAgVVNSMl9EVFJGICAJICgxPDwxMykgLyogRFRSIGVkZ2UgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFVTUjJfSURMRSAgCSAoMTw8MTIpIC8qIElkbGUgY29uZGl0aW9uICovCisjZGVmaW5lICBVU1IyX0lSSU5UIAkgKDE8PDgpCSAvKiBTZXJpYWwgaW5mcmFyZWQgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFVTUjJfV0FLRSAgCSAoMTw8NykJIC8qIFdha2UgKi8KKyNkZWZpbmUgIFVTUjJfUlRTRiAgCSAoMTw8NCkJIC8qIFJUUyBlZGdlIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IyX1RYREMgIAkgKDE8PDMpCSAvKiBUcmFuc21pdHRlciBjb21wbGV0ZSAqLworI2RlZmluZSAgVVNSMl9CUkNEICAJICgxPDwyKQkgLyogQnJlYWsgY29uZGl0aW9uICovCisjZGVmaW5lICBVU1IyX09SRSAgICAgICAgKDE8PDEpCSAvKiBPdmVycnVuIGVycm9yICovCisjZGVmaW5lICBVU1IyX1JEUiAgICAgICAgKDE8PDApCSAvKiBSZWN2IGRhdGEgcmVhZHkgKi8KKyNkZWZpbmUgIFVUU19GUkNQRVJSCSAoMTw8MTMpIC8qIEZvcmNlIHBhcml0eSBlcnJvciAqLworI2RlZmluZSAgVVRTX0xPT1AgICAgICAgICgxPDwxMikgLyogTG9vcCB0eCBhbmQgcnggKi8KKyNkZWZpbmUgIFVUU19UWEVNUFRZCSAoMTw8NikJIC8qIFR4RklGTyBlbXB0eSAqLworI2RlZmluZSAgVVRTX1JYRU1QVFkJICgxPDw1KQkgLyogUnhGSUZPIGVtcHR5ICovCisjZGVmaW5lICBVVFNfVFhGVUxMIAkgKDE8PDQpCSAvKiBUeEZJRk8gZnVsbCAqLworI2RlZmluZSAgVVRTX1JYRlVMTCAJICgxPDwzKQkgLyogUnhGSUZPIGZ1bGwgKi8KKyNkZWZpbmUgIFVUU19TT0ZUUlNUCSAoMTw8MCkJIC8qIFNvZnR3YXJlIHJlc2V0ICovCisKKyNlbmRpZgkJCQkvLyBfSU1YX1JFR1NfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGE0Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lvLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXhhZHMvaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisjZGVmaW5lIF9faW8oYSkJCSgodm9pZCBfX2lvbWVtICopKGEpKQorI2RlZmluZSBfX21lbV9wY2koYSkJKGEpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lycS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NWUwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaXJxLmgKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXhhZHMvaXJxLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjZGVmaW5lIGZpeHVwX2lycShpKQkoaSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzODE5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaXJxcy5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteGFkcy9pcnFzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaWZuZGVmIF9fQVJNX0lSUVNfSF9fCisjZGVmaW5lIF9fQVJNX0lSUVNfSF9fCisKKy8qIFVzZSB0aGUgaW14IGRlZmluaXRpb25zICovCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworLyoKKyAqICBJTVggSW50ZXJydXB0IG51bWJlcnMKKyAqCisgKi8KKyNkZWZpbmUgSU5UX1NPRlRJTlQgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgQ1NJX0lOVCAgICAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgRFNQQV9NQUNfSU5UICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgRFNQQV9JTlQgICAgICAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgQ09NUF9JTlQgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgTVNIQ19YSU5UICAgICAgICAgICAgICAgICAgIDEwCisjZGVmaW5lIEdQSU9fSU5UX1BPUlRBICAgICAgICAgICAgICAxMQorI2RlZmluZSBHUElPX0lOVF9QT1JUQiAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgR1BJT19JTlRfUE9SVEMgICAgICAgICAgICAgIDEzCisjZGVmaW5lIExDRENfSU5UICAgICAgICAgICAgICAgICAgICAxNAorI2RlZmluZSBTSU1fSU5UICAgICAgICAgICAgICAgICAgICAgMTUKKyNkZWZpbmUgU0lNX0RBVEFfSU5UICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIFJUQ19JTlQgICAgICAgICAgICAgICAgICAgICAxNworI2RlZmluZSBSVENfU0FNSU5UICAgICAgICAgICAgICAgICAgMTgKKyNkZWZpbmUgVUFSVDJfTUlOVF9QRkVSUiAgICAgICAgICAgIDE5CisjZGVmaW5lIFVBUlQyX01JTlRfUlRTICAgICAgICAgICAgICAyMAorI2RlZmluZSBVQVJUMl9NSU5UX0RUUiAgICAgICAgICAgICAgMjEKKyNkZWZpbmUgVUFSVDJfTUlOVF9VQVJUQyAgICAgICAgICAgIDIyCisjZGVmaW5lIFVBUlQyX01JTlRfVFggICAgICAgICAgICAgICAyMworI2RlZmluZSBVQVJUMl9NSU5UX1JYICAgICAgICAgICAgICAgMjQKKyNkZWZpbmUgVUFSVDFfTUlOVF9QRkVSUiAgICAgICAgICAgIDI1CisjZGVmaW5lIFVBUlQxX01JTlRfUlRTICAgICAgICAgICAgICAyNgorI2RlZmluZSBVQVJUMV9NSU5UX0RUUiAgICAgICAgICAgICAgMjcKKyNkZWZpbmUgVUFSVDFfTUlOVF9VQVJUQyAgICAgICAgICAgIDI4CisjZGVmaW5lIFVBUlQxX01JTlRfVFggICAgICAgICAgICAgICAyOQorI2RlZmluZSBVQVJUMV9NSU5UX1JYICAgICAgICAgICAgICAgMzAKKyNkZWZpbmUgVk9JQ0VfREFDX0lOVCAgICAgICAgICAgICAgIDMxCisjZGVmaW5lIFZPSUNFX0FEQ19JTlQgICAgICAgICAgICAgICAzMgorI2RlZmluZSBQRU5fREFUQV9JTlQgICAgICAgICAgICAgICAgMzMKKyNkZWZpbmUgUFdNX0lOVCAgICAgICAgICAgICAgICAgICAgIDM0CisjZGVmaW5lIFNESENfSU5UICAgICAgICAgICAgICAgICAgICAzNQorI2RlZmluZSBJMkNfSU5UICAgICAgICAgICAgICAgICAgICAgMzkKKyNkZWZpbmUgQ1NQSV9JTlQgICAgICAgICAgICAgICAgICAgIDQxCisjZGVmaW5lIFNTSV9UWF9JTlQgICAgICAgICAgICAgICAgICA0MgorI2RlZmluZSBTU0lfVFhfRVJSX0lOVCAgICAgICAgICAgICAgNDMKKyNkZWZpbmUgU1NJX1JYX0lOVCAgICAgICAgICAgICAgICAgIDQ0CisjZGVmaW5lIFNTSV9SWF9FUlJfSU5UICAgICAgICAgICAgICA0NQorI2RlZmluZSBUT1VDSF9JTlQgICAgICAgICAgICAgICAgICAgNDYKKyNkZWZpbmUgVVNCRF9JTlQwICAgICAgICAgICAgICAgICAgIDQ3CisjZGVmaW5lIFVTQkRfSU5UMSAgICAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBVU0JEX0lOVDIgICAgICAgICAgICAgICAgICAgNDkKKyNkZWZpbmUgVVNCRF9JTlQzICAgICAgICAgICAgICAgICAgIDUwCisjZGVmaW5lIFVTQkRfSU5UNCAgICAgICAgICAgICAgICAgICA1MQorI2RlZmluZSBVU0JEX0lOVDUgICAgICAgICAgICAgICAgICAgNTIKKyNkZWZpbmUgVVNCRF9JTlQ2ICAgICAgICAgICAgICAgICAgIDUzCisjZGVmaW5lIEJUU1lTX0lOVCAgICAgICAgICAgICAgICAgICA1NQorI2RlZmluZSBCVFRJTV9JTlQgICAgICAgICAgICAgICAgICAgNTYKKyNkZWZpbmUgQlRXVUlfSU5UICAgICAgICAgICAgICAgICAgIDU3CisjZGVmaW5lIFRJTTJfSU5UICAgICAgICAgICAgICAgICAgICA1OAorI2RlZmluZSBUSU0xX0lOVCAgICAgICAgICAgICAgICAgICAgNTkKKyNkZWZpbmUgRE1BX0VSUiAgICAgICAgICAgICAgICAgICAgIDYwCisjZGVmaW5lIERNQV9JTlQgICAgICAgICAgICAgICAgICAgICA2MQorI2RlZmluZSBHUElPX0lOVF9QT1JURCAgICAgICAgICAgICAgNjIKKworI2RlZmluZSBJTVhfSVJRUyAgICAgICAgICAgICAgICAgICAgICAgICAoNjQpCisKKy8qIG5vdGU6IHRoZSBJTVggaGFzIGZvdXIgZ3BpbyBwb3J0cyAoQS1EKSwgYnV0IG9ubHkKKyAqICAgICAgIHRoZSBmb2xsb3dpbmcgcGlucyBhcmUgY29ubmVjdGVkIHRvIHRoZSBvdXRzaWRlCisgKiAgICAgICB3b3JsZDoKKyAqCisgKiBQT1JUIEE6IGJpdHMgMC0zMQorICogUE9SVCBCOiBiaXRzIDgtMzEKKyAqIFBPUlQgQzogYml0cyAzLTE3CisgKiBQT1JUIEQ6IGJpdHMgNi0zMQorICoKKyAqIFdlIG1hcCB0aGVzZSBpbnRlcnJ1cHRzIHN0cmFpZ2h0IG9uLiBBcyBhIHJlc3VsdCB3ZSBoYXZlCisgKiBzZXZlcmFsIGhvbGVzIGluIHRoZSBpbnRlcnJ1cHQgbWFwcGluZy4gV2UgZG8gdGhpcyBmb3IgdHdvCisgKiByZWFzb25zOgorICogICAtIG1hcHBpbmcgdGhlIGludGVycnVwdHMgd2l0aG91dCBob2xlcyB3b3VsZCBnZXQKKyAqICAgICBmYXIgbW9yZSBjb21wbGljYXRlZAorICogICAtIE1vdG9yb2xhIGNvdWxkIHdlbGwgZGVjaWRlIHRvIGJyaW5nIHNvbWUgcHJvY2Vzc29yCisgKiAgICAgd2l0aCBtb3JlIHBpbnMgY29ubmVjdGVkCisgKi8KKworI2RlZmluZSBJUlFfR1BJT0EoeCkgIChJTVhfSVJRUyArIHgpCisjZGVmaW5lIElSUV9HUElPQih4KSAgKElSUV9HUElPQSgzMikgKyB4KQorI2RlZmluZSBJUlFfR1BJT0MoeCkgIChJUlFfR1BJT0IoMzIpICsgeCkKKyNkZWZpbmUgSVJRX0dQSU9EKHgpICAoSVJRX0dQSU9DKDMyKSArIHgpCisKKy8qIGRlY29kZSBpcnEgbnVtYmVyIHRvIHVzZSB3aXRoIElNUih4KSwgSVNSKHgpIGFuZCBmcmllbmRzICovCisjZGVmaW5lIElSUV9UT19SRUcoaXJxKSAoKGlycSAtIElNWF9JUlFTKSA+PiA1KQorCisjZGVmaW5lIE5SX0lSUVMgKElSUV9HUElPRCgzMikgKyAxKQorI2RlZmluZSBJUlFfR1BJTyh4KQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE2YTkxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9tZW1vcnkuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9tZW1vcnkuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIgU2hhbmUgTmF5IChzaGFuZUBtaW5pcmwuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX01NVV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTU1VX0gKKworI2RlZmluZSBQSFlTX09GRlNFVAkoMHgwODAwMDAwMFVMKQorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKiAgICAgICAgICAgICAgYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKiAgICAgICAgICAgICAgdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqLworI2RlZmluZSBfX3ZpcnRfdG9fYnVzX19pc19hX21hY3JvCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJKHggLSBQQUdFX09GRlNFVCArICBQSFlTX09GRlNFVCkKKyNkZWZpbmUgX19idXNfdG9fdmlydF9faXNfYV9tYWNybworI2RlZmluZSBfX2J1c190b192aXJ0KHgpCSh4IC0gIFBIWVNfT0ZGU0VUICsgUEFHRV9PRkZTRVQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L214MWFkcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L214MWFkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MGZhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvbXgxYWRzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9teDFhZHMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBSb2JlcnQgU2Nod2ViZWwsIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTVgxQURTX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NWDFBRFNfSAorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE1lbW9yeSBNYXAgZm9yIHRoZSBNOTMyOE1YMUFEUyAoTVgxQURTKSBCb2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgTVgxQURTX0ZMQVNIX1BIWVMJCTB4MTAwMDAwMDAKKyNkZWZpbmUgTVgxQURTX0ZMQVNIX1NJWkUJCSgxNioxMDI0KjEwMjQpCisKKyNkZWZpbmUgSU1YX0ZCX1BIWVMJCQkoMHgwQzAwMDAwMCAtIDB4NDAwMDApCisKKyNkZWZpbmUgQ0xLMzIgMzIwMDAKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfTVgxQURTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M3MjRmMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9wYXJhbS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3BhcmFtLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY0NWZlOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9zeXN0ZW0uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteGFkcy9zeXN0ZW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisKK3N0YXRpYyB2b2lkCithcmNoX2lkbGUodm9pZCkKK3sKKwkvKgorCSAqIFRoaXMgc2hvdWxkIGRvIGFsbCB0aGUgY2xvY2sgc3dpdGNoaW5nCisJICogYW5kIHdhaXQgZm9yIGludGVycnVwdCB0cmlja3MKKwkgKi8KKwljcHVfZG9faWRsZSgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2FyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWNwdV9yZXNldCgwKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NWFiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvdGltZXguaApAQCAtMCwwICsxLDI3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9pbXgvdGltZXguaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1RJTUVYX0gKKyNkZWZpbmUgX19BU01fQVJDSF9USU1FWF9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCShDTEszMikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTYwNzdmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteGFkcy91bmNvbXByZXNzLmgKKyAqCisgKgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIFNoYW5lIE5heSAoc2hhbmVAbWluaXJsLmNvbSkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBVQVJUKHgpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoc2VyaWFsX3BvcnQgKyAoeCkpKQorCisjZGVmaW5lIFVBUlQxX0JBU0UgMHgyMDYwMDAKKyNkZWZpbmUgVUFSVDJfQkFTRSAweDIwNzAwMAorI2RlZmluZSBVU1IyIDB4OTgKKyNkZWZpbmUgVVNSMl9UWEZFICgxPDwxNCkKKyNkZWZpbmUgVFhSICAweDQwCisjZGVmaW5lIFVDUjEgMHg4MAorI2RlZmluZSBVQ1IxX1VBUlRFTiAxCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGUgc2VyaWFsIHBvcnQgaGFzIGFscmVhZHkgYmVlbgorICogaW5pdGlhbGl6ZWQgYnkgdGhlIGJvb3Rsb2FkZXIuICBXZSBzZWFyY2ggZm9yIHRoZSBmaXJzdCBlbmFibGVkCisgKiBwb3J0IGluIHRoZSBtb3N0IHByb2JhYmxlIG9yZGVyLiAgSWYgeW91IGRpZG4ndCBzZXR1cCBhIHBvcnQgaW4KKyAqIHlvdXIgYm9vdGxvYWRlciB0aGVuIG5vdGhpbmcgd2lsbCBhcHBlYXIgKHdoaWNoIG1pZ2h0IGJlIGRlc2lyZWQpLgorICoKKyAqIFRoaXMgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZQorICovCitzdGF0aWMgdm9pZAorcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJdW5zaWduZWQgbG9uZyBzZXJpYWxfcG9ydDsKKworCWRvIHsKKwkJc2VyaWFsX3BvcnQgPSBVQVJUMV9CQVNFOworCQlpZiAoIFVBUlQoVUNSMSkgJiBVQ1IxX1VBUlRFTiApCisJCQlicmVhazsKKwkJc2VyaWFsX3BvcnQgPSBVQVJUMl9CQVNFOworCQlpZiAoIFVBUlQoVUNSMSkgJiBVQ1IxX1VBUlRFTiApCisJCQlicmVhazsKKwkJcmV0dXJuOworCX0gd2hpbGUoMCk7CisKKwl3aGlsZSAoKnMpIHsKKwkJd2hpbGUgKCAhKFVBUlQoVVNSMikgJiBVU1IyX1RYRkUpICkKKwkJCWJhcnJpZXIoKTsKKworCQlVQVJUKFRYUikgPSAqczsKKworCQlpZiAoKnMgPT0gJ1xuJykgeworCQkJd2hpbGUgKCAhKFVBUlQoVVNSMikgJiBVU1IyX1RYRkUpICkKKwkJCQliYXJyaWVyKCk7CisKKwkJCVVBUlQoVFhSKSA9ICdccic7CisJCX0KKwkJcysrOworCX0KK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisKKyNkZWZpbmUgYXJjaF9kZWNvbXBfd2RvZygpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTIwMzhmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L3ZtYWxsb2MuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC92bWFsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19WTUFERFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKFBBR0VfT0ZGU0VUICsgMHgxMDAwMDAwMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvYml0cy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliMDI0ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvYml0cy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKy8qIERPIE5PVCBFRElUISEgLSB0aGlzIGZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQKKyAqICAgICAgICAgICAgICAgICBmcm9tIC5zIGZpbGUgYnkgYXdrIC1mIHMyaC5hd2sKKyAqLworLyogIEJpdCBmaWVsZCBkZWZpbml0aW9ucworICogIENvcHlyaWdodCAoQykgQVJNIExpbWl0ZWQgMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaWZuZGVmIF9fYml0c19oCisjZGVmaW5lIF9fYml0c19oICAgICAgICAgICAgICAgICAgICAgICAgMQorCisjZGVmaW5lIEJJVDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBCSVQxICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgQklUMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEJJVDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBCSVQ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgQklUNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIEJJVDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBCSVQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgQklUOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIEJJVDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBCSVQxMCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKyNkZWZpbmUgQklUMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisjZGVmaW5lIEJJVDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBCSVQxMyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgQklUMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIEJJVDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorI2RlZmluZSBCSVQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKyNkZWZpbmUgQklUMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIEJJVDE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorI2RlZmluZSBCSVQxOSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKyNkZWZpbmUgQklUMjAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIEJJVDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBCSVQyMiAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKyNkZWZpbmUgQklUMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIEJJVDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBCSVQyNSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgQklUMjYgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIEJJVDI3ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwODAwMDAwMAorI2RlZmluZSBCSVQyOCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgQklUMjkgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIEJJVDMwICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBCSVQzMSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2VuZGlmCisKKy8qICAgICAgICAgRU5EICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2NtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2NtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxYzFhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2NtLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIHVwZGF0ZSB0aGUgY29yZSBtb2R1bGUgY29udHJvbCByZWdpc3Rlci4KKyAqLwordm9pZCBjbV9jb250cm9sKHUzMiwgdTMyKTsKKworI2RlZmluZSBDTV9DVFJMX0xFRAkJCSgxIDw8IDApCisjZGVmaW5lIENNX0NUUkxfbk1CREVUCQkJKDEgPDwgMSkKKyNkZWZpbmUgQ01fQ1RSTF9SRU1BUAkJCSgxIDw8IDIpCisjZGVmaW5lIENNX0NUUkxfUkVTRVQJCQkoMSA8PCAzKQorCisvKgorICogSW50ZWdyYXRvci9BUCxQUDIgc3BlY2lmaWMKKyAqLworI2RlZmluZSBDTV9DVFJMX0hJR0hWRUNUT1JTCQkoMSA8PCA0KQorI2RlZmluZSBDTV9DVFJMX0JJR0VORElBTgkJKDEgPDwgNSkKKyNkZWZpbmUgQ01fQ1RSTF9GQVNUQlVTCQkJKDEgPDwgNikKKyNkZWZpbmUgQ01fQ1RSTF9TWU5DCQkJKDEgPDwgNykKKworLyoKKyAqIEFSTTkyNi85NDYvOTY2IEludGVncmF0b3IvQ1Agc3BlY2lmaWMKKyAqLworI2RlZmluZSBDTV9DVFJMX0xDREJJQVNFTgkJKDEgPDwgOCkKKyNkZWZpbmUgQ01fQ1RSTF9MQ0RCSUFTVVAJCSgxIDw8IDkpCisjZGVmaW5lIENNX0NUUkxfTENEQklBU0ROCQkoMSA8PCAxMCkKKyNkZWZpbmUgQ01fQ1RSTF9MQ0RNVVhTRUxfTUFTSwkJKDcgPDwgMTEpCisjZGVmaW5lIENNX0NUUkxfTENETVVYU0VMX0dFTkxDRAkoMSA8PCAxMSkKKyNkZWZpbmUgQ01fQ1RSTF9MQ0RNVVhTRUxfU0hBUlBMQ0QxCSgzIDw8IDExKQorI2RlZmluZSBDTV9DVFJMX0xDRE1VWFNFTF9TSEFSUExDRDIJKDQgPDwgMTEpCisjZGVmaW5lIENNX0NUUkxfTENETVVYU0VMX1ZHQQkJKDcgPDwgMTEpCisjZGVmaW5lIENNX0NUUkxfTENERU4wCQkJKDEgPDwgMTQpCisjZGVmaW5lIENNX0NUUkxfTENERU4xCQkJKDEgPDwgMTUpCisjZGVmaW5lIENNX0NUUkxfU1RBVElDMQkJCSgxIDw8IDE2KQorI2RlZmluZSBDTV9DVFJMX1NUQVRJQzIJCQkoMSA8PCAxNykKKyNkZWZpbmUgQ01fQ1RSTF9TVEFUSUMJCQkoMSA8PCAxOCkKKyNkZWZpbmUgQ01fQ1RSTF9uMjRCSVRFTgkJKDEgPDwgMTkpCisjZGVmaW5lIENNX0NUUkxfRUJJV1AJCQkoMSA8PCAyMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODRhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsMzggQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9hbWJhX3NlcmlhbC5oPgorCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgIzB4MTYwMDAwMDAJQCBwaHlzaWNhbCBiYXNlIGFkZHJlc3MKKwkJbW92bmUJXHJ4LCAjMHhmMDAwMDAwMAlAIHZpcnR1YWwgYmFzZQorCQlhZGRuZQlccngsIFxyeCwgIzB4MTYwMDAwMDAgPj4gNAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHJiCVxyZCwgW1xyeCwgI1VBUlQwMXhfRFJdCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyCVxyZCwgW1xyeCwgIzB4MThdCUAgVUFSVEZMRworCQl0c3QJXHJkLCAjMSA8PCA1CQlAIFVBUlRGTEdVVFhGRiAtIDEgd2hlbiBmdWxsCisJCWJuZQkxMDAxYgorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICMweDE4XQlAIFVBUlRGTEcKKwkJdHN0CVxyZCwgIzEgPDwgMwkJQCBVQVJURkxHVUJVU1kgLSAxIHdoZW4gYnVzeQorCQlibmUJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzE3OTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2RtYS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9kbWEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGZmZmZmZmZmCisKKyNkZWZpbmUgTUFYX0RNQV9DSEFOTkVMUwkwCisKKyNlbmRpZiAvKiBfQVNNX0FSQ0hfRE1BX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9lbnRyeS1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZjdlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvZW50cnktbWFjcm8uUworICoKKyAqIExvdy1sZXZlbCBJUlEgaGVscGVyIG1hY3JvcyBmb3IgSW50ZWdyYXRvciBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCisgCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisvKiBGSVhNRTogc2hvdWxkIG5vdCBiZSB1c2luZyBzb28gbWFueSBMRFJzIGhlcmUgKi8KKwkJbGRyCVxiYXNlLCA9SU9fQUREUkVTUyhJTlRFR1JBVE9SX0lDX0JBU0UpCisJCW1vdglcaXJxbnIsICNJUlFfUElDX1NUQVJUCisJCWxkcglcaXJxc3RhdCwgW1xiYXNlLCAjSVJRX1NUQVRVU10JCUAgZ2V0IG1hc2tlZCBzdGF0dXMKKwkJbGRyCVxiYXNlLCA9SU9fQUREUkVTUyhJTlRFR1JBVE9SX0hEUl9CQVNFKQorCQl0ZXEJXGlycXN0YXQsICMwCisJCWxkcmVxCVxpcnFzdGF0LCBbXGJhc2UsICMoSU5URUdSQVRPUl9IRFJfSUNfT0ZGU0VUK0lSUV9TVEFUVVMpXQorCQltb3ZlcQlcaXJxbnIsICNJUlFfQ0lDX1NUQVJUCisKKzEwMDE6CQl0c3QJXGlycXN0YXQsICMxNQorCQlibmUJMTAwMmYKKwkJYWRkCVxpcnFuciwgXGlycW5yLCAjNAorCQltb3ZzCVxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICM0CisJCWJuZQkxMDAxYgorMTAwMjoJCXRzdAlcaXJxc3RhdCwgIzEKKwkJYm5lCTEwMDNmCisJCWFkZAlcaXJxbnIsIFxpcnFuciwgIzEKKwkJbW92cwlcaXJxc3RhdCwgXGlycXN0YXQsIGxzciAjMQorCQlibmUJMTAwMmIKKzEwMDM6CQkvKiBFUSB3aWxsIGJlIHNldCBpZiBubyBpcnFzIHBlbmRpbmcgKi8KKwkJLmVuZG0KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMjcxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2hhcmR3YXJlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2hhcmR3YXJlLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgSW50ZWdyYXRvci4KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKyNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9wbGF0Zm9ybS5oPgorCisvKgorICogV2hlcmUgaW4gdmlydHVhbCBtZW1vcnkgdGhlIElPIGRldmljZXMgKHRpbWVycywgc3lzdGVtIGNvbnRyb2xsZXJzCisgKiBhbmQgc28gb24pCisgKi8KKyNkZWZpbmUgSU9fQkFTRQkJCTB4RjAwMDAwMDAgICAgICAgICAgICAgICAgIC8vIFZBIG9mIElPIAorI2RlZmluZSBJT19TSVpFCQkJMHgwQjAwMDAwMCAgICAgICAgICAgICAgICAgLy8gSG93IG11Y2g/CisjZGVmaW5lIElPX1NUQVJUCQlJTlRFR1JBVE9SX0hEUl9CQVNFICAgICAgICAvLyBQQSBvZiBJTworCisvKgorICogU2ltaWxhciB0byBhYm92ZSwgYnV0IGZvciBQQ0kgYWRkcmVzc2VzIChtZW1vcnksIElPLCBDb25maWcgYW5kIHRoZQorICogVjMgY2hpcCBpdHNlbGYpLiAgV0FSTklORzogdGhpcyBoYXMgdG8gbWlycm9yIGRlZmluaXRpb25zIGluIHBsYXRmb3JtLmgKKyAqLworI2RlZmluZSBQQ0lfTUVNT1JZX1ZBRERSICAgICAgICAweGU4MDAwMDAwCisjZGVmaW5lIFBDSV9DT05GSUdfVkFERFIgICAgICAgIDB4ZWMwMDAwMDAKKyNkZWZpbmUgUENJX1YzX1ZBRERSICAgICAgICAgICAgMHhlZDAwMDAwMAorI2RlZmluZSBQQ0lfSU9fVkFERFIgICAgICAgICAgICAweGVlMDAwMDAwCisKKyNkZWZpbmUgUENJT19CQVNFCQlQQ0lfSU9fVkFERFIKKyNkZWZpbmUgUENJTUVNX0JBU0UJCVBDSV9NRU1PUllfVkFERFIKKworLyogbWFjcm8gdG8gZ2V0IGF0IElPIHNwYWNlIHdoZW4gcnVubmluZyB2aXJ0dWFsbHkgKi8KKyNkZWZpbmUgSU9fQUREUkVTUyh4KSAoKCh4KSA+PiA0KSArIElPX0JBU0UpIAorCisjZGVmaW5lIHBjaWJpb3NfYXNzaWduX2FsbF9idXNzZXMoKQkxCisKKyNkZWZpbmUgUENJQklPU19NSU5fSU8JCTB4NjAwMAorI2RlZmluZSBQQ0lCSU9TX01JTl9NRU0gCTB4MDAxMDAwMDAKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvaW1wZDEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvaW1wZDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzVkZTRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9pbXBkMS5oCkBAIC0wLDAgKzEsMTggQEAKKyNkZWZpbmUgSU1QRDFfT1NDMQkweDAwCisjZGVmaW5lIElNUEQxX09TQzIJMHgwNAorI2RlZmluZSBJTVBEMV9MT0NLCTB4MDgKKyNkZWZpbmUgSU1QRDFfTEVEUwkweDBjCisjZGVmaW5lIElNUEQxX0lOVAkweDEwCisjZGVmaW5lIElNUEQxX1NXCTB4MTQKKyNkZWZpbmUgSU1QRDFfQ1RSTAkweDE4CisKKyNkZWZpbmUgSU1QRDFfQ1RSTF9ESVNQX0xDRAkoMCA8PCAwKQorI2RlZmluZSBJTVBEMV9DVFJMX0RJU1BfVkdBCSgxIDw8IDApCisjZGVmaW5lIElNUEQxX0NUUkxfRElTUF9MQ0QxCSgyIDw8IDApCisjZGVmaW5lIElNUEQxX0NUUkxfRElTUF9FTkFCTEUJKDEgPDwgMikKKyNkZWZpbmUgSU1QRDFfQ1RSTF9ESVNQX01BU0sJKDcgPDwgMCkKKworc3RydWN0IGRldmljZTsKKwordm9pZCBpbXBkMV90d2Vha19jb250cm9sKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIG1hc2ssIHUzMiB2YWwpOworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJlYThiZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvaW8uaApAQCAtMCwwICsxLDI5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmCisKKyNkZWZpbmUgX19pbyhhKQkJCSgodm9pZCBfX2lvbWVtICopKFBDSV9JT19WQUREUiArIChhKSkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKChhKSArIFBDSV9NRU1PUllfVkFERFIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTdiM2FmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9pcnFzLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL2lycXMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKy8qIAorICogIEludGVycnVwdCBudW1iZXJzCisgKi8KKyNkZWZpbmUgSVJRX1BJQ19TVEFSVAkJCTAKKyNkZWZpbmUgSVJRX1NPRlRJTlQJCQkwCisjZGVmaW5lIElSUV9VQVJUSU5UMAkJCTEKKyNkZWZpbmUgSVJRX1VBUlRJTlQxCQkJMgorI2RlZmluZSBJUlFfS01JSU5UMAkJCTMKKyNkZWZpbmUgSVJRX0tNSUlOVDEJCQk0CisjZGVmaW5lIElSUV9USU1FUklOVDAJCQk1CisjZGVmaW5lIElSUV9USU1FUklOVDEJCQk2CisjZGVmaW5lIElSUV9USU1FUklOVDIJCQk3CisjZGVmaW5lIElSUV9SVENJTlQJCQk4CisjZGVmaW5lIElSUV9BUF9FWFBJTlQwCQkJOQorI2RlZmluZSBJUlFfQVBfRVhQSU5UMQkJCTEwCisjZGVmaW5lIElSUV9BUF9FWFBJTlQyCQkJMTEKKyNkZWZpbmUgSVJRX0FQX0VYUElOVDMJCQkxMgorI2RlZmluZSBJUlFfQVBfUENJSU5UMAkJCTEzCisjZGVmaW5lIElSUV9BUF9QQ0lJTlQxCQkJMTQKKyNkZWZpbmUgSVJRX0FQX1BDSUlOVDIJCQkxNQorI2RlZmluZSBJUlFfQVBfUENJSU5UMwkJCTE2CisjZGVmaW5lIElSUV9BUF9WM0lOVAkJCTE3CisjZGVmaW5lIElSUV9BUF9DUElOVDAJCQkxOAorI2RlZmluZSBJUlFfQVBfQ1BJTlQxCQkJMTkKKyNkZWZpbmUgSVJRX0FQX0xCVVNUSU1FT1VUIAkJMjAKKyNkZWZpbmUgSVJRX0FQX0FQQ0lOVAkJCTIxCisjZGVmaW5lIElSUV9DUF9DTENEQ0lOVAkJCTIyCisjZGVmaW5lIElSUV9DUF9NTUNJSU5UMAkJCTIzCisjZGVmaW5lIElSUV9DUF9NTUNJSU5UMQkJCTI0CisjZGVmaW5lIElSUV9DUF9BQUNJSU5UCQkJMjUKKyNkZWZpbmUgSVJRX0NQX0NQUExESU5UCQkJMjYKKyNkZWZpbmUgSVJRX0NQX0VUSElOVAkJCTI3CisjZGVmaW5lIElSUV9DUF9UU1BFTklOVAkJCTI4CisjZGVmaW5lIElSUV9QSUNfRU5ECQkJMzEKKworI2RlZmluZSBJUlFfQ0lDX1NUQVJUCQkJMzIKKyNkZWZpbmUgSVJRX0NNX1NPRlRJTlQJCQkzMgorI2RlZmluZSBJUlFfQ01fQ09NTVJYCQkJMzMKKyNkZWZpbmUgSVJRX0NNX0NPTU1UWAkJCTM0CisjZGVmaW5lIElSUV9DSUNfRU5ECQkJMzQKKworLyoKKyAqIEludGVncmF0b3JDUCBvbmx5CisgKi8KKyNkZWZpbmUgSVJRX1NJQ19TVEFSVAkJCTM1CisjZGVmaW5lIElSUV9TSUNfQ1BfU09GVElOVAkJMzUKKyNkZWZpbmUgSVJRX1NJQ19DUF9SSTAJCQkzNgorI2RlZmluZSBJUlFfU0lDX0NQX1JJMQkJCTM3CisjZGVmaW5lIElSUV9TSUNfQ1BfQ0FSRElOCQkzOAorI2RlZmluZSBJUlFfU0lDX0NQX0xNSU5UMAkJMzkKKyNkZWZpbmUgSVJRX1NJQ19DUF9MTUlOVDEJCTQwCisjZGVmaW5lIElSUV9TSUNfQ1BfTE1JTlQyCQk0MQorI2RlZmluZSBJUlFfU0lDX0NQX0xNSU5UMwkJNDIKKyNkZWZpbmUgSVJRX1NJQ19DUF9MTUlOVDQJCTQzCisjZGVmaW5lIElSUV9TSUNfQ1BfTE1JTlQ1CQk0NAorI2RlZmluZSBJUlFfU0lDX0NQX0xNSU5UNgkJNDUKKyNkZWZpbmUgSVJRX1NJQ19DUF9MTUlOVDcJCTQ2CisjZGVmaW5lIElSUV9TSUNfRU5ECQkJNDYKKworI2RlZmluZSBOUl9JUlFTICAgICAgICAgICAgICAgICAgICAgICAgIDQ3CisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvbG0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvbG0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODE4NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9sbS5oCkBAIC0wLDAgKzEsMjMgQEAKKworc3RydWN0IGxtX2RldmljZSB7CisJc3RydWN0IGRldmljZQkJZGV2OworCXN0cnVjdCByZXNvdXJjZQkJcmVzb3VyY2U7CisJdW5zaWduZWQgaW50CQlpcnE7CisJdW5zaWduZWQgaW50CQlpZDsKK307CisKK3N0cnVjdCBsbV9kcml2ZXIgeworCXN0cnVjdCBkZXZpY2VfZHJpdmVyCWRydjsKKwlpbnQJCQkoKnByb2JlKShzdHJ1Y3QgbG1fZGV2aWNlICopOworCXZvaWQJCQkoKnJlbW92ZSkoc3RydWN0IGxtX2RldmljZSAqKTsKKwlpbnQJCQkoKnN1c3BlbmQpKHN0cnVjdCBsbV9kZXZpY2UgKiwgcG1fbWVzc2FnZV90KTsKKwlpbnQJCQkoKnJlc3VtZSkoc3RydWN0IGxtX2RldmljZSAqKTsKK307CisKK2ludCBsbV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGxtX2RyaXZlciAqZHJ2KTsKK3ZvaWQgbG1fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGxtX2RyaXZlciAqZHJ2KTsKKworaW50IGxtX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbG1fZGV2aWNlICpkZXYpOworCisjZGVmaW5lIGxtX2dldF9kcnZkYXRhKGxtKQlkZXZfZ2V0X2RydmRhdGEoJihsbSktPmRldikKKyNkZWZpbmUgbG1fc2V0X2RydmRhdGEobG0sZCkJZGV2X3NldF9kcnZkYXRhKCYobG0pLT5kZXYsIGQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDg3ZWE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9tZW1vcnkuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvbWVtb3J5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisvKgorICogUGh5c2ljYWwgRFJBTSBvZmZzZXQuCisgKi8KKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4MDAwMDAwMDBVTCkKKyNkZWZpbmUgQlVTX09GRlNFVAkoMHg4MDAwMDAwMFVMKQorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKiAgICAgICAgICAgICAgYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKiAgICAgICAgICAgICAgdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqLworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCSh4IC0gUEFHRV9PRkZTRVQgKyBCVVNfT0ZGU0VUKQorI2RlZmluZSBfX2J1c190b192aXJ0KHgpCSh4IC0gQlVTX09GRlNFVCArIFBBR0VfT0ZGU0VUKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmE1ODJmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9wYXJhbS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9wYXJhbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9wbGF0Zm9ybS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9wbGF0Zm9ybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNjdlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3BsYXRmb3JtLmgKQEAgLTAsMCArMSw0NjUgQEAKKy8qCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKy8qIERPIE5PVCBFRElUISEgLSB0aGlzIGZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQKKyAqICAgICAgICAgICAgICAgICBmcm9tIC5zIGZpbGUgYnkgYXdrIC1mIHMyaC5hd2sKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqIENvcHlyaWdodCCpIEFSTSBMaW1pdGVkIDE5OTguICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIAorICogICBJbnRlZ3JhdG9yIGFkZHJlc3MgbWFwCisgKiAKKyAqIAlOT1RFOiBUaGlzIGlzIGEgbXVsdGktaG9zdGVkIGhlYWRlciBmaWxlIGZvciB1c2Ugd2l0aCB1SEFMIGFuZAorICogCSAgICAgIHN1cHBvcnRlZCBkZWJ1Z2dlcnMuCisgKiAKKyAqIAkkSWQ6IHBsYXRmb3JtLnMsdiAxLjMyIDIwMDAvMDIvMTggMTA6NTE6MzkgYXNpbXMgRXhwICQKKyAqIAorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19hZGRyZXNzX2gKKyNkZWZpbmUgX19hZGRyZXNzX2ggICAgICAgICAgICAgICAgICAgICAxCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogIEludGVncmF0b3IgZGVmaW5pdGlvbnMKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgTWVtb3J5IGRlZmluaXRpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBJbnRlZ3JhdG9yIG1lbW9yeSBtYXAKKyAqIAorICovCisjZGVmaW5lIElOVEVHUkFUT1JfQk9PVF9ST01fTE8gICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0JPT1RfUk9NX0hJICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9CT09UX1JPTV9CQVNFICAgICAgICBJTlRFR1JBVE9SX0JPT1RfUk9NX0hJCSAvKiAgTm9ybWFsIHBvc2l0aW9uICovCisjZGVmaW5lIElOVEVHUkFUT1JfQk9PVF9ST01fU0laRSAgICAgICAgU1pfNTEySworCisvKiAKKyAqICBOZXcgQ29yZSBNb2R1bGVzIGhhdmUgZGlmZmVyZW50IGFtb3VudHMgb2YgU1NSQU0sIHRoZSBhbW91bnQgb2YgU1NSQU0KKyAqICBmaXR0ZWQgY2FuIGJlIGZvdW5kIGluIEhEUl9TVEFULgorICogCisgKiAgVGhlIHN5bWJvbCBJTlRFR1JBVE9SX1NTUkFNX1NJWkUgaXMga2VwdCwgaG93ZXZlciB0aGlzIG5vdyByZWZlcnMgdG8KKyAqICB0aGUgbWluaW11bSBhbW91bnQgb2YgU1NSQU0gZml0dGVkIG9uIGFueSBjb3JlIG1vZHVsZS4KKyAqIAorICogIE5ldyBDb3JlIE1vZHVsZXMgYWxzbyBhbGlhcyB0aGUgU1NSQU0uCisgKiAKKyAqLworI2RlZmluZSBJTlRFR1JBVE9SX1NTUkFNX0JBU0UgICAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9TU1JBTV9BTElBU19CQVNFICAgICAweDEwODAwMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfU1NSQU1fU0laRSAgICAgICAgICAgU1pfMjU2SworCisjZGVmaW5lIElOVEVHUkFUT1JfRkxBU0hfQkFTRSAgICAgICAgICAgMHgyNDAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0ZMQVNIX1NJWkUgICAgICAgICAgIFNaXzMyTQorCisjZGVmaW5lIElOVEVHUkFUT1JfTUJSRF9TU1JBTV9CQVNFICAgICAgMHgyODAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX01CUkRfU1NSQU1fU0laRSAgICAgIFNaXzUxMksKKworLyogCisgKiAgU0RSQU0gaXMgYSBTSU1NIHRoZXJlZm9yZSB0aGUgc2l6ZSBpcyBub3Qga25vd24uCisgKiAKKyAqLworI2RlZmluZSBJTlRFR1JBVE9SX1NEUkFNX0JBU0UgICAgICAgICAgIDB4MDAwNDAwMDAKKworI2RlZmluZSBJTlRFR1JBVE9SX1NEUkFNX0FMSUFTX0JBU0UgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFIwX1NEUkFNX0JBU0UgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSMV9TRFJBTV9CQVNFICAgICAgMHg5MDAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUjJfU0RSQU1fQkFTRSAgICAgIDB4QTAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFIzX1NEUkFNX0JBU0UgICAgICAweEIwMDAwMDAwCisKKy8qIAorICogIExvZ2ljIGV4cGFuc2lvbiBtb2R1bGVzCisgKiAKKyAqLworI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRVNfQkFTRSAgIDB4QzAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9MT0dJQ19NT0RVTEUwX0JBU0UgICAweEMwMDAwMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfTE9HSUNfTU9EVUxFMV9CQVNFICAgMHhEMDAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRTJfQkFTRSAgIDB4RTAwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9MT0dJQ19NT0RVTEUzX0JBU0UgICAweEYwMDAwMDAwCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIEludGVncmF0b3IgaGVhZGVyIGNhcmQgcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIAorICovCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0lEX09GRlNFVCAgICAgICAgMHgwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9QUk9DX09GRlNFVCAgICAgIDB4MDQKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX09GRlNFVCAgICAgICAweDA4CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfT0ZGU0VUICAgICAgMHgwQworI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9TVEFUX09GRlNFVCAgICAgIDB4MTAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfTE9DS19PRkZTRVQgICAgICAweDE0CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX1NEUkFNX09GRlNFVCAgICAgMHgyMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9JTklUX09GRlNFVCAgICAgIDB4MjQJIC8qICBDTTl4NiAqLworI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9JQ19PRkZTRVQgICAgICAgIDB4NDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU1BEQkFTRV9PRkZTRVQgICAweDEwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9TUERUT1BfT0ZGU0VUICAgIDB4MjAwCisKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQkFTRSAgICAgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0lEICAgICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9JRF9PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX1BST0MgICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9QUk9DX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDICAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX09TQ19PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkwgICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9DVFJMX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU1RBVCAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX1NUQVRfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9MT0NLICAgICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfTE9DS19PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX1NEUkFNICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9TRFJBTV9PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0lOSVQgICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9JTklUX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfSUMgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX0lDX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU1BEQkFTRSAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX1NQREJBU0VfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9TUERUT1AgICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfU1BEVE9QX09GRlNFVCkKKworI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9DVFJMX0xFRCAgICAgICAgIDB4MDEKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQ1RSTF9NQlJEX0RFVEVDSCAweDAyCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfUkVNQVAgICAgICAgMHgwNAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9DVFJMX1JFU0VUICAgICAgIDB4MDgKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQ1RSTF9ISUdIVkVDVE9SUyAweDEwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfQklHX0VORElBTiAgMHgyMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9DVFJMX0ZBU1RCVVMgICAgIDB4NDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQ1RSTF9TWU5DICAgICAgICAweDgwCisKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTBNSHogICAweDEwMgorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xNU1IeiAgIDB4MTA3CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzIwTUh6ICAgMHgxMEMKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMjVNSHogICAweDExMQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8zME1IeiAgIDB4MTE2CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzM1TUh6ICAgMHgxMUIKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNDBNSHogICAweDEyMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV80NU1IeiAgIDB4MTI1CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzUwTUh6ICAgMHgxMkEKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNTVNSHogICAweDEyRgorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV82ME1IeiAgIDB4MTM0CisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzY1TUh6ICAgMHgxMzkKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNzBNSHogICAweDEzRQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV83NU1IeiAgIDB4MTQzCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzgwTUh6ICAgMHgxNDgKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfODVNSHogICAweDE0RAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV85ME1IeiAgIDB4MTUyCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzk1TUh6ICAgMHgxNTcKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTAwTUh6ICAweDE1QworI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMDVNSHogIDB4MTYxCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzExME1IeiAgMHgxNjYKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTE1TUh6ICAweDE2QgorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMjBNSHogIDB4MTcwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzEyNU1IeiAgMHgxNzUKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTMwTUh6ICAweDE3QQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMzVNSHogIDB4MTdGCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzE0ME1IeiAgMHgxODQKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTQ1TUh6ICAweDE4OQorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xNTBNSHogIDB4MThFCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzE1NU1IeiAgMHgxOTMKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTYwTUh6ICAweDE5OAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV9NQVNLICAgIDB4N0ZGCisKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV8xME1IeiAgICAweDEwQzAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzE1TUh6ICAgIDB4MTE2MDAwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fMjBNSHogICAgMHgxMjAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV8yNU1IeiAgICAweDEyQTAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzMwTUh6ICAgIDB4MTM0MDAwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fMzNNSHogICAgMHgxM0EwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV80ME1IeiAgICAweDE0ODAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzUwTUh6ICAgIDB4MTVDMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fNjBNSHogICAgMHgxNzAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV82Nk1IeiAgICAweDE3QzAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNX01BU0sgICAgIDB4N0ZGMDAwCisKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX0NNN3gwICAweDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX0NNOXgwICAweDA4MDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX0NNOXg2ICAweDEwMDAwMDAKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX0NNMTB4MDAgIDB4MTgwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQlVTX01PREVfTUFTSyAgMHgxODAwMDAwCisKKyNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU0RSQU1fU1BEX09LICAgICAoMSA8PCA1KQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIEludGVncmF0b3Igc3lzdGVtIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAKKyAqLworCisvKiAKKyAqICBTeXN0ZW0gQ29udHJvbGxlcgorICogCisgKi8KKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19JRF9PRkZTRVQgICAgICAgICAweDAwCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX09GRlNFVCAgICAgICAgMHgwNAorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxTX09GRlNFVCAgICAgIDB4MDgKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMQ19PRkZTRVQgICAgICAweDBDCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfREVDX09GRlNFVCAgICAgICAgMHgxMAorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0FSQl9PRkZTRVQgICAgICAgIDB4MTQKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19QQ0lFTkFCTEVfT0ZGU0VUICAweDE4CisjZGVmaW5lIElOVEVHUkFUT1JfU0NfTE9DS19PRkZTRVQgICAgICAgMHgxQworCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfQkFTRSAgICAgICAgICAgICAgMHgxMTAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0lEICAgICAgICAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX0lEX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0MgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19PU0NfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxTICAgICAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX0NUUkxTX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMQyAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19DVFJMQ19PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfREVDICAgICAgICAgICAgICAgKElOVEVHUkFUT1JfU0NfQkFTRSArIElOVEVHUkFUT1JfU0NfREVDX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19BUkIgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19BUkJfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX1NDX1BDSUVOQUJMRSAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX1BDSUVOQUJMRV9PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfTE9DSyAgICAgICAgICAgICAgKElOVEVHUkFUT1JfU0NfQkFTRSArIElOVEVHUkFUT1JfU0NfTE9DS19PRkZTRVQpCisKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzEwTUh6ICAgICAweDIwCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1NZU18xNU1IeiAgICAgMHgzNAorI2RlZmluZSBJTlRFR1JBVE9SX1NDX09TQ19TWVNfMjBNSHogICAgIDB4NDgKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzI1TUh6ICAgICAweDVDCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1NZU18zM01IeiAgICAgMHg3QworI2RlZmluZSBJTlRFR1JBVE9SX1NDX09TQ19TWVNfTUFTSyAgICAgIDB4RkYKKworI2RlZmluZSBJTlRFR1JBVE9SX1NDX09TQ19QQ0lfMjVNSHogICAgIDB4MTAwCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1BDSV8zM01IeiAgICAgMHgwCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1BDSV9NQVNLICAgICAgMHgxMDAKKworI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxfU09GVFJTVCAgICAgICgxIDw8IDApCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTF9uRkxWUFBFTiAgICAgKDEgPDwgMSkKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMX25GTFdQICAgICAgICAoMSA8PCAyKQorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxfVVJUUzAgICAgICAgICgxIDw8IDQpCisjZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTF9VRFRSMCAgICAgICAgKDEgPDwgNSkKKyNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMX1VSVFMxICAgICAgICAoMSA8PCA2KQorI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxfVURUUjEgICAgICAgICgxIDw8IDcpCisKKy8qIAorICogIEV4dGVybmFsIEJ1cyBJbnRlcmZhY2UKKyAqIAorICovCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX0JBU0UgICAgICAgICAgICAgMHgxMjAwMDAwMCAKKworI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9DU1IwX09GRlNFVCAgICAgIDB4MDAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfQ1NSMV9PRkZTRVQgICAgICAweDA0CisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjJfT0ZGU0VUICAgICAgMHgwOAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9DU1IzX09GRlNFVCAgICAgIDB4MEMKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfTE9DS19PRkZTRVQgICAgICAweDIwCisKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfQ1NSMCAgICAgICAgICAgICAoSU5URUdSQVRPUl9FQklfQkFTRSArIElOVEVHUkFUT1JfRUJJX0NTUjBfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9DU1IxICAgICAgICAgICAgIChJTlRFR1JBVE9SX0VCSV9CQVNFICsgSU5URUdSQVRPUl9FQklfQ1NSMV9PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjIgICAgICAgICAgICAgKElOVEVHUkFUT1JfRUJJX0JBU0UgKyBJTlRFR1JBVE9SX0VCSV9DU1IyX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfQ1NSMyAgICAgICAgICAgICAoSU5URUdSQVRPUl9FQklfQkFTRSArIElOVEVHUkFUT1JfRUJJX0NTUjNfT0ZGU0VUKQorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9MT0NLICAgICAgICAgICAgIChJTlRFR1JBVE9SX0VCSV9CQVNFICsgSU5URUdSQVRPUl9FQklfTE9DS19PRkZTRVQpCisKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfOF9CSVQgICAgICAgICAgICAweDAwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJXzE2X0JJVCAgICAgICAgICAgMHgwMQorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV8zMl9CSVQgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1JJVEVfRU5BQkxFICAgICAweDA0CisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1NZTkMgICAgICAgICAgICAgMHgwOAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18yICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1NfMyAgICAgICAgICAgICAweDEwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1dTXzQgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU181ICAgICAgICAgICAgIDB4MzAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1NfNiAgICAgICAgICAgICAweDQwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1dTXzcgICAgICAgICAgICAgMHg1MAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU184ICAgICAgICAgICAgIDB4NjAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1NfOSAgICAgICAgICAgICAweDcwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1dTXzEwICAgICAgICAgICAgMHg4MAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xMSAgICAgICAgICAgIDB4OTAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1NfMTIgICAgICAgICAgICAweEEwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1dTXzEzICAgICAgICAgICAgMHhCMAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNCAgICAgICAgICAgIDB4QzAKKyNkZWZpbmUgSU5URUdSQVRPUl9FQklfV1NfMTUgICAgICAgICAgICAweEQwCisjZGVmaW5lIElOVEVHUkFUT1JfRUJJX1dTXzE2ICAgICAgICAgICAgMHhFMAorI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNyAgICAgICAgICAgIDB4RjAKKworCisjZGVmaW5lIElOVEVHUkFUT1JfQ1RfQkFTRSAgICAgICAgICAgICAgMHgxMzAwMDAwMAkgLyogIENvdW50ZXIvVGltZXJzICovCisjZGVmaW5lIElOVEVHUkFUT1JfSUNfQkFTRSAgICAgICAgICAgICAgMHgxNDAwMDAwMAkgLyogIEludGVycnVwdCBDb250cm9sbGVyICovCisjZGVmaW5lIElOVEVHUkFUT1JfUlRDX0JBU0UgICAgICAgICAgICAgMHgxNTAwMDAwMAkgLyogIFJlYWwgVGltZSBDbG9jayAqLworI2RlZmluZSBJTlRFR1JBVE9SX1VBUlQwX0JBU0UgICAgICAgICAgIDB4MTYwMDAwMDAJIC8qICBVQVJUIDAgKi8KKyNkZWZpbmUgSU5URUdSQVRPUl9VQVJUMV9CQVNFICAgICAgICAgICAweDE3MDAwMDAwCSAvKiAgVUFSVCAxICovCisjZGVmaW5lIElOVEVHUkFUT1JfS0JEX0JBU0UgICAgICAgICAgICAgMHgxODAwMDAwMAkgLyogIEtleWJvYXJkICovCisjZGVmaW5lIElOVEVHUkFUT1JfTU9VU0VfQkFTRSAgICAgICAgICAgMHgxOTAwMDAwMAkgLyogIE1vdXNlICovCisKKy8qIAorICogIExFRCdzICYgU3dpdGNoZXMKKyAqIAorICovCisjZGVmaW5lIElOVEVHUkFUT1JfREJHX0FMUEhBX09GRlNFVCAgICAgMHgwMAorI2RlZmluZSBJTlRFR1JBVE9SX0RCR19MRURTX09GRlNFVCAgICAgIDB4MDQKKyNkZWZpbmUgSU5URUdSQVRPUl9EQkdfU1dJVENIX09GRlNFVCAgICAweDA4CisKKyNkZWZpbmUgSU5URUdSQVRPUl9EQkdfQkFTRSAgICAgICAgICAgICAweDFBMDAwMDAwCisjZGVmaW5lIElOVEVHUkFUT1JfREJHX0FMUEhBICAgICAgICAgICAgKElOVEVHUkFUT1JfREJHX0JBU0UgKyBJTlRFR1JBVE9SX0RCR19BTFBIQV9PRkZTRVQpCisjZGVmaW5lIElOVEVHUkFUT1JfREJHX0xFRFMgICAgICAgICAgICAgKElOVEVHUkFUT1JfREJHX0JBU0UgKyBJTlRFR1JBVE9SX0RCR19MRURTX09GRlNFVCkKKyNkZWZpbmUgSU5URUdSQVRPUl9EQkdfU1dJVENIICAgICAgICAgICAoSU5URUdSQVRPUl9EQkdfQkFTRSArIElOVEVHUkFUT1JfREJHX1NXSVRDSF9PRkZTRVQpCisKKworI2RlZmluZSBJTlRFR1JBVE9SX0dQSU9fQkFTRSAgICAgICAgICAgIDB4MUIwMDAwMDAJIC8qICBHUElPICovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIEtNSSBrZXlib2FyZC9tb3VzZSBkZWZpbml0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qIFBTMiBLZXlib2FyZCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgS01JMF9CQVNFICAgICAgICAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX0tCRF9CQVNFCQkKKworLyogUFMyIE1vdXNlIGludGVyZmFjZSAqLworI2RlZmluZSBLTUkxX0JBU0UgICAgICAgICAgICAgICAgICAgICAgIElOVEVHUkFUT1JfTU9VU0VfQkFTRQorCisvKiBLTUkgZGVmaW5pdGlvbnMgYXJlIG5vdyBpbiBpbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9rbWkuaCAtLSBybWsgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgV2hlcmUgaW4gdGhlIG1lbW9yeSBtYXAgZG9lcyBQQ0kgbGl2ZT8KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFRoaXMgcmVwcmVzZW50cyBhIGZhaXJseSBsaWJlcmFsIHVzYWdlIG9mIGFkZHJlc3Mgc3BhY2UuICBFdmVuIHRob3VnaAorICogIHRoZSBWMyBvbmx5IGhhcyB0d28gd2luZG93cyAodGhlcmVmb3JlIHdlIG5lZWQgdG8gbWFwIHN0dWZmIG9uIHRoZSBmbHkpLAorICogIHdlIG1haW50YWluIHRoZSBzYW1lIGFkZHJlc3NlcywgZXZlbiBpZiB0aGV5J3JlIG5vdCBtYXBwZWQuCisgKiAKKyAqLworI2RlZmluZSBQSFlTX1BDSV9NRU1fQkFTRSAgICAgICAgICAgICAgIDB4NDAwMDAwMDAgICAvKiA1MTJNIHRvIHh4eCAqLworLyogIHVudXNlZCAyNTZNIGZyb20gQTAwMDAwMDAtQUZGRkZGRkYgbWlnaHQgYmUgdXNlZCBmb3IgSTJPID8/PworICovCisjZGVmaW5lIFBIWVNfUENJX0lPX0JBU0UgICAgICAgICAgICAgICAgMHg2MDAwMDAwMCAgIC8qIDE2TSB0byB4eHggKi8KKy8qICB1bnVzZWQgKDEyOC0xNilNIGZyb20gQjEwMDAwMDAtQjdGRkZGRkYKKyAqLworI2RlZmluZSBQSFlTX1BDSV9DT05GSUdfQkFTRSAgICAgICAgICAgIDB4NjEwMDAwMDAgICAvKiAxNk0gdG8geHh4ICovCisvKiAgdW51c2VkICgoMTI4LTE2KU0gLSA2NEspIGZyb20gWFhYCisgKi8KKyNkZWZpbmUgUEhZU19QQ0lfVjNfQkFTRSAgICAgICAgICAgICAgICAweDYyMDAwMDAwCisKKyNkZWZpbmUgUENJX0RSQU1TSVpFICAgICAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX1NTUkFNX1NJWkUJCisKKy8qICdleHBvcnQnIHRoZXNlIHRvIFVIQUwgKi8KKyNkZWZpbmUgVUhBTF9QQ0lfSU8gICAgICAgICAgICAgICAgICAgICBQQ0lfSU9fQkFTRQorI2RlZmluZSBVSEFMX1BDSV9NRU0gICAgICAgICAgICAgICAgICAgIFBDSV9NRU1fQkFTRQorI2RlZmluZSBVSEFMX1BDSV9BTExPQ19JT19CQVNFICAgICAgICAgIDB4MDAwMDQwMDAKKyNkZWZpbmUgVUhBTF9QQ0lfQUxMT0NfTUVNX0JBU0UgICAgICAgICBQQ0lfTUVNX0JBU0UKKyNkZWZpbmUgVUhBTF9QQ0lfTUFYX1NMT1QgICAgICAgICAgICAgICAyMAorCQorLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgU3RhcnQgb2YgdUhBTCBkZWZpbml0aW9ucworICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgSW50ZWdyYXRvciBJbnRlcnJ1cHQgQ29udHJvbGxlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogCisgKiAgT2Zmc2V0cyBmcm9tIGludGVycnVwdCBjb250cm9sbGVyIGJhc2UgCisgKiAKKyAqICBTeXN0ZW0gQ29udHJvbGxlciBpbnRlcnJ1cHQgY29udHJvbGxlciBiYXNlIGlzCisgKiAKKyAqIAlJTlRFR1JBVE9SX0lDX0JBU0UgKyAoaGVhZGVyX251bWJlciA8PCA2KQorICogCisgKiAgQ29yZSBNb2R1bGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYmFzZSBpcworICogCisgKiAJSU5URUdSQVRPUl9IRFJfSUMgCisgKiAKKyAqLworI2RlZmluZSBJUlFfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgSVJRX1JBV19TVEFUVVMgICAgICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIElSUV9FTkFCTEUgICAgICAgICAgICAgICAgICAgICAgMHgwOAorI2RlZmluZSBJUlFfRU5BQkxFX1NFVCAgICAgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgSVJRX0VOQUJMRV9DTEVBUiAgICAgICAgICAgICAgICAweDBDCisKKyNkZWZpbmUgSU5UX1NPRlRfU0VUICAgICAgICAgICAgICAgICAgICAweDEwCisjZGVmaW5lIElOVF9TT0ZUX0NMRUFSICAgICAgICAgICAgICAgICAgMHgxNAorCisjZGVmaW5lIEZJUV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBGSVFfUkFXX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4MjQKKyNkZWZpbmUgRklRX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgICAweDI4CisjZGVmaW5lIEZJUV9FTkFCTEVfU0VUICAgICAgICAgICAgICAgICAgMHgyOAorI2RlZmluZSBGSVFfRU5BQkxFX0NMRUFSICAgICAgICAgICAgICAgIDB4MkMKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBJbnRlcnJ1cHRzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIAorICogIAorICogIEVhY2ggQ29yZSBNb2R1bGUgaGFzIHR3byBpbnRlcnJ1cHRzIGNvbnRyb2xsZXJzLCBvbmUgb24gdGhlIGNvcmUgbW9kdWxlCisgKiAgaXRzZWxmIGFuZCBvbmUgaW4gdGhlIHN5c3RlbSBjb250cm9sbGVyIG9uIHRoZSBtb3RoZXJib2FyZC4gIFRoZQorICogIFJFQURfSU5UIG1hY3JvIGluIHRhcmdldC5zIHJlYWRzIGJvdGggaW50ZXJydXB0IGNvbnRyb2xsZXJzIGFuZCByZXR1cm5zCisgKiAgYSAzMiBiaXQgYml0bWFzaywgYml0cyAwIHRvIDIzIGFyZSBpbnRlcnJ1cHRzIGZyb20gdGhlIHN5c3RlbSBjb250cm9sbGVyCisgKiAgYW5kIGJpdHMgMjQgdG8gMzEgYXJlIGZyb20gdGhlIGNvcmUgbW9kdWxlLgorICogIAorICogIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgcmVsYXRlIHRvIHRoZSBiaXRtYXNrIHJldHVybmVkIGJ5IFJFQURfSU5ULgorICogCisgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgTEVEJ3MgLSBUaGUgaGVhZGVyIExFRCBpcyBub3QgYWNjZXNzaWJsZSB2aWEgdGhlIHVIQUwgQVBJCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIAorICovCisjZGVmaW5lIEdSRUVOX0xFRCAgICAgICAgICAgICAgICAgICAgICAgMHgwMQorI2RlZmluZSBZRUxMT1dfTEVEICAgICAgICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgUkVEX0xFRCAgICAgICAgICAgICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIEdSRUVOX0xFRF8yICAgICAgICAgICAgICAgICAgICAgMHgwOAorI2RlZmluZSBBTExfTEVEUyAgICAgICAgICAgICAgICAgICAgICAgIDB4MEYKKworI2RlZmluZSBMRURfQkFOSyAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHUkFUT1JfREJHX0xFRFMKKworLyogCisgKiAgTWVtb3J5IGRlZmluaXRpb25zIC0gcnVuIHVIQUwgb3V0IG9mIFNTUkFNLgorICogCisgKi8KKyNkZWZpbmUgdUhBTF9NRU1PUllfU0laRSAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX1NTUkFNX1NJWkUKKworLyogCisgKiAgQXBwbGljYXRpb24gRmxhc2gKKyAqIAorICovCisjZGVmaW5lIEZMQVNIX0JBU0UgICAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9GTEFTSF9CQVNFCisjZGVmaW5lIEZMQVNIX1NJWkUgICAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9GTEFTSF9TSVpFCisjZGVmaW5lIEZMQVNIX0VORCAgICAgICAgICAgICAgICAgICAgICAgKEZMQVNIX0JBU0UgKyBGTEFTSF9TSVpFIC0gMSkKKyNkZWZpbmUgRkxBU0hfQkxPQ0tfU0laRSAgICAgICAgICAgICAgICBTWl8xMjhLCisKKy8qIAorICogIEJvb3QgRmxhc2gKKyAqIAorICovCisjZGVmaW5lIEVQUk9NX0JBU0UgICAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9CT09UX1JPTV9ISQorI2RlZmluZSBFUFJPTV9TSVpFICAgICAgICAgICAgICAgICAgICAgIElOVEVHUkFUT1JfQk9PVF9ST01fU0laRQorI2RlZmluZSBFUFJPTV9FTkQgICAgICAgICAgICAgICAgICAgICAgIChFUFJPTV9CQVNFICsgRVBST01fU0laRSAtIDEpCisKKy8qIAorICogIENsZWFuIGJhc2UgLSBkdW1teQorICogCisgKi8KKyNkZWZpbmUgQ0xFQU5fQkFTRSAgICAgICAgICAgICAgICAgICAgICBFUFJPTV9CQVNFCisKKy8qIAorICogIFRpbWVyIGRlZmluaXRpb25zCisgKiAKKyAqICBPbmx5IHVzZSB0aW1lciAxICYgMgorICogIChib3RoIHJ1biBhdCAyNE1IeiBhbmQgd2lsbCBuZWVkIHRoZSBjbG9jayBkaXZpZGVyIHNldCB0byAxNikuCisgKiAKKyAqICBUaW1lciAwIHJ1bnMgYXQgYnVzIGZyZXF1ZW5jeSBhbmQgdGhlcmVmb3JlIGNvdWxkIHZhcnkgYW5kIGN1cnJlbnRseQorICogIHVIQUwgY2FuJ3QgaGFuZGxlIHRoYXQuCisgKiAKKyAqLworCisjZGVmaW5lIElOVEVHUkFUT1JfVElNRVIwX0JBU0UgICAgICAgICAgSU5URUdSQVRPUl9DVF9CQVNFCisjZGVmaW5lIElOVEVHUkFUT1JfVElNRVIxX0JBU0UgICAgICAgICAgKElOVEVHUkFUT1JfQ1RfQkFTRSArIDB4MTAwKQorI2RlZmluZSBJTlRFR1JBVE9SX1RJTUVSMl9CQVNFICAgICAgICAgIChJTlRFR1JBVE9SX0NUX0JBU0UgKyAweDIwMCkKKworI2RlZmluZSBNQVhfVElNRVIgICAgICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgTUFYX1BFUklPRCAgICAgICAgICAgICAgICAgICAgICA2OTkwNTAKKyNkZWZpbmUgVElDS1NfUEVSX3VTRUMgICAgICAgICAgICAgICAgICAyNAorCisvKiAKKyAqICBUaGVzZSBhcmUgdXNlY29uZHMgTk9UIHRpY2tzLiAgCisgKiAKKyAqLworI2RlZmluZSBtU0VDXzEgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgbVNFQ181ICAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogNSkKKyNkZWZpbmUgbVNFQ18xMCAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMTApCisjZGVmaW5lIG1TRUNfMjUgICAgICAgICAgICAgICAgICAgICAgICAgKG1TRUNfMSAqIDI1KQorI2RlZmluZSBTRUNfMSAgICAgICAgICAgICAgICAgICAgICAgICAgIChtU0VDXzEgKiAxMDAwKQorCisjZGVmaW5lIElOVEVHUkFUT1JfQ1NSX0JBU0UgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBJTlRFR1JBVE9SX0NTUl9TSVpFICAgICAgICAgICAgIDB4MTAwMDAwMDAKKworI2VuZGlmCisKKy8qIAlFTkQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3Ivc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3N5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYTQ0MjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3N5c3RlbS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci9zeXN0ZW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9jbS5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJLyoKKwkgKiBUaGlzIHNob3VsZCBkbyBhbGwgdGhlIGNsb2NrIHN3aXRjaGluZworCSAqIGFuZCB3YWl0IGZvciBpbnRlcnJ1cHQgdHJpY2tzCisJICovCisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCS8qCisJICogVG8gcmVzZXQsIHdlIGhpdCB0aGUgb24tYm9hcmQgcmVzZXQgcmVnaXN0ZXIKKwkgKiBpbiB0aGUgc3lzdGVtIEZQR0EKKwkgKi8KKwljbV9jb250cm9sKENNX0NUUkxfUkVTRVQsIENNX0NUUkxfUkVTRVQpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3IvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2E3NjI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci90aW1leC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci90aW1leC5oCisgKgorICogIEludGVncmF0b3IgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisvKgorICogPz8KKyAqLworI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCSg1MDAwMDAwMCAvIDE2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTU3NDAyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZWdyYXRvci91bmNvbXByZXNzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3VuY29tcHJlc3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBBTUJBX1VBUlRfRFIJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKTB4MTYwMDAwMDApCisjZGVmaW5lIEFNQkFfVUFSVF9MQ1JICSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikweDE2MDAwMDA4KQorI2RlZmluZSBBTUJBX1VBUlRfTENSTQkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopMHgxNjAwMDAwYykKKyNkZWZpbmUgQU1CQV9VQVJUX0xDUkwJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKTB4MTYwMDAwMTApCisjZGVmaW5lIEFNQkFfVUFSVF9DUgkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopMHgxNjAwMDAxNCkKKyNkZWZpbmUgQU1CQV9VQVJUX0ZSCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikweDE2MDAwMDE4KQorCisvKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykgeworCQl3aGlsZSAoQU1CQV9VQVJUX0ZSICYgKDEgPDwgNSkpOworCisJCUFNQkFfVUFSVF9EUiA9ICpzOworCisJCWlmICgqcyA9PSAnXG4nKSB7CisJCQl3aGlsZSAoQU1CQV9VQVJUX0ZSICYgKDEgPDwgNSkpOworCisJCQlBTUJBX1VBUlRfRFIgPSAnXHInOworCQl9CisJCXMrKzsKKwl9CisJd2hpbGUgKEFNQkFfVUFSVF9GUiAmICgxIDw8IDMpKTsKK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisKKyNkZWZpbmUgYXJjaF9kZWNvbXBfd2RvZygpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3ZtYWxsb2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3Ivdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZTlhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbnRlZ3JhdG9yL3ZtYWxsb2MuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWludGVncmF0b3Ivdm1hbGxvYy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKy8qCisgKiBKdXN0IGFueSBhcmJpdHJhcnkgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyBWTSBhcmVhOiB0aGUKKyAqIGN1cnJlbnQgOE1CIHZhbHVlIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgOE1CICJob2xlIiBhZnRlciB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB1bnRpbCB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN0YXJ0cy4gIFRoYXQgbWVhbnMgdGhhdAorICogYW55IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdpbGwgaG9wZWZ1bGx5IGJlIGNhdWdodC4KKyAqIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2VlbiBlYWNoIHZtYWxsb2NlZAorICogYXJlYSBmb3IgdGhlIHNhbWUgcmVhc29uLiA7KQorICovCisjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUCSAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfRU5EICAgICAgIChQQUdFX09GRlNFVCArIDB4MTAwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMTVmODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDQ4IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbW92CVxyeCwgIzB4ZmUwMDAwMDAJQCBwaHlzaWNhbAorI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSVE4MDMyMSkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9JUTMxMjQ0KQorCQlvcnIJXHJ4LCBccngsICMweDAwODAwMDAwCUAgbG9jYXRpb24gb2YgdGhlIFVBUlQKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfSU9QMzMxKQorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgIzB4MDAwZmUwMDAJQCBQaHlzaWNhbCBCYXNlCisJCW1vdm5lCVxyeCwgIzAKKwkJb3JyCVxyeCwgXHJ4LCAjMHhmZTAwMDAwMAorCQlvcnIJXHJ4LCBccngsICMweDAwZjAwMDAwCUAgVmlydHVhbCBCYXNlCisJCW9ycglccngsIFxyeCwgIzB4MDAwMDE3MDAgICBAIGxvY2F0aW9uIG9mIHRoZSBVQVJUCisjZWxzZQorI2Vycm9yIFVua25vd24gSU9QM1hYIGltcGxlbWVudGF0aW9uCisjZW5kaWYKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyYglccmQsIFtccnhdCisJCS5lbmRtCisKKwkJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisxMDAyOgkJbGRyYglccmQsIFtccngsICMweDVdCisJCWFuZAlccmQsIFxyZCwgIzB4NjAKKwkJdGVxCVxyZCwgIzB4NjAKKwkJYm5lCTEwMDJiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisjaWYgIWRlZmluZWQoQ09ORklHX0FSQ0hfSVE4MDMyMSkgfHwgIWRlZmluZWQoQ09ORklHX0FSQ0hfSVEzMTI0NCkgfHwgIWRlZmluZWQoQ09ORklHX0FSQ0hfSVE4MDMzMSkKKzEwMDE6CQlsZHJiCVxyZCwgW1xyeCwgIzB4Nl0KKwkJdHN0CVxyZCwgIzB4MTAKKwkJYmVxCTEwMDFiCisjZW5kaWYKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTdmOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2RtYS5oCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZG1hLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9JT1AzWFhfRE1BX0hfUAorI2RlZmluZSBfSU9QM1hYX0RNQV9IX1AKKworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZmZmZmZmZmYKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSF9QICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyY2U3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDU2IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIElPUDN4eC1iYXNlZCBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JT1AzMjEpCisJCS5tYWNybyAgZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkvKgorCQkgKiBOb3RlOiBvbmx5IGRlYWwgd2l0aCBub3JtYWwgaW50ZXJydXB0cywgbm90IEZJUQorCQkgKi8KKwkJLm1hY3JvICBnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKwkJbW92ICAgICBcaXJxbnIsICMwCisJCW1yYyAgICAgcDYsIDAsIFxpcnFzdGF0LCBjOCwgYzAsIDAgICAgICBAIFJlYWQgSUlOVFNSQworCQljbXAgICAgIFxpcnFzdGF0LCAjMAorCQliZXEgICAgIDEwMDFmCisJCWNseiAgICAgXGlycW5yLCBcaXJxc3RhdAorCQltb3YgICAgIFxiYXNlLCAjMzEKKwkJc3VicyAgICBcaXJxbnIsXGJhc2UsXGlycW5yCisJCWFkZCAgICAgXGlycW5yLFxpcnFuciwjSVJRX0lPUDMyMV9ETUEwX0VPVAorMTAwMToKKwkJLmVuZG0KKworI2VsaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JT1AzMzEpCisJCS5tYWNybyAgZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkvKgorCQkgKiBOb3RlOiBvbmx5IGRlYWwgd2l0aCBub3JtYWwgaW50ZXJydXB0cywgbm90IEZJUQorCQkgKi8KKwkJLm1hY3JvICBnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKwkJbW92ICAgICBcaXJxbnIsICMwCisJCW1yYyAgICAgcDYsIDAsIFxpcnFzdGF0LCBjNCwgYzAsIDAgICAgICBAIFJlYWQgSUlOVFNSQzAKKwkJY21wICAgICBcaXJxc3RhdCwgIzAKKwkJYm5lICAgICAxMDAyZgorCQltcmMgICAgIHA2LCAwLCBcaXJxc3RhdCwgYzUsIGMwLCAwICAgICAgQCBSZWFkIElJTlRTUkMxCisJCWNtcAlcaXJxc3RhdCwgIzAKKwkJYmVxCTEwMDFmCisJCWNseglcaXJxbnIsIFxpcnFzdGF0CisJCXJzYnMgICAgXGlycW5yLFxpcnFuciwjMzEgICBAIHJlY29tbWVuZCBieSBSTUsKKwkJYWRkCVxpcnFucixcaXJxbnIsI0lSUV9JT1AzMzFfWElOVDgKKwkJYgkxMDAxZgorMTAwMjoJY2x6ICAgICBcaXJxbnIsIFxpcnFzdGF0CisJCXJzYnMgICAgXGlycW5yLFxpcnFuciwjMzEgICBAIHJlY29tbWVuZCBieSBSTUsKKwkJYWRkICAgICBcaXJxbnIsXGlycW5yLCNJUlFfSU9QMzMxX0RNQTBfRU9UCisxMDAxOgorCQkuZW5kbQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjEzODE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2hhcmR3YXJlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9oYXJkd2FyZS5oCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKKy8qCisgKiBOb3RlIGFib3V0IFBDSSBJTyBzcGFjZSBtYXBwaW5ncworICoKKyAqIFRvIG1ha2UgSU8gc3BhY2UgYWNjZXNzZXMgZWZmaWNpZW50LCB3ZSBzdG9yZSB2aXJ0dWFsIGFkZHJlc3NlcyBpbgorICogdGhlIElPIHJlc291cmNlcy4KKyAqCisgKiBUaGUgUENJIElPIHNwYWNlIGlzIGxvY2F0ZWQgYXQgdmlydHVhbCAweGZlMDAwMDAwIGZyb20gcGh5c2ljYWwKKyAqIDB4OTAwMDAwMDAuICBUaGUgUENJIEJBUnMgbXVzdCBiZSBwcm9ncmFtbWVkIHdpdGggcGh5c2ljYWwgYWRkcmVzc2VzLAorICogYnV0IHdoZW4gd2UgcmVhZCB0aGVtLCB3ZSBjb252ZXJ0IHRoZW0gdG8gdmlydHVhbCBhZGRyZXNzZXMuICBTZWUKKyAqIGFyY2gvYXJtL21hY2gtaW9wM3h4L2lvcDN4eC1wY2kuYworICovCisKKyNkZWZpbmUgcGNpYmlvc19hc3NpZ25fYWxsX2J1c3NlcygpIDEKKworCisvKgorICogVGhlIG1pbiBQQ0kgSS9PIGFuZCBNRU0gc3BhY2UgYXJlIGRlcGVuZGVudCBvbiB3aGF0IHNwZWNpZmljCisgKiBjaGlwc2V0L3BsYXRmb3JtIHdlIGFyZSBydW5uaW5nIG9uLCBzbyBpbnN0ZWFkIG9mIGhhcmRjb2Rpbmcgd2l0aAorICogI2lmZGVmcywgd2UganVzdCBmaWxsIHRoZXNlIGluIHRoZSBwbGF0Zm9ybSBsZXZlbCBQQ0kgaW5pdCBjb2RlLgorICovCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9wM3h4X3BjaWJpb3NfbWluX2lvOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9wM3h4X3BjaWJpb3NfbWluX21lbTsKKworZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9jZXNzb3JfaWQ7CisjZW5kaWYKKworLyoKKyAqIFdlIGp1c3Qgc2V0IHRoZXNlIHRvIHplcm8gc2luY2UgdGhleSBhcmUgcmVhbGx5IGJvZ3VzIGFueXdheXMKKyAqLworI2RlZmluZSBQQ0lCSU9TX01JTl9JTyAgICAgIChpb3AzeHhfcGNpYmlvc19taW5faW8pCisjZGVmaW5lIFBDSUJJT1NfTUlOX01FTSAgICAgKGlvcDN4eF9wY2liaW9zX21pbl9tZW0pCisKKy8qCisgKiBHZW5lcmljIGNoaXBzZXQgYml0cworICoKKyAqLworI2luY2x1ZGUgImlvcDMyMS5oIgorI2luY2x1ZGUgImlvcDMzMS5oIgorCisvKgorICogQm9hcmQgc3BlY2lmaWMgYml0cworICovCisjaW5jbHVkZSAiaXE4MDMyMS5oIgorI2luY2x1ZGUgImlxMzEyNDQuaCIKKyNpbmNsdWRlICJpcTgwMzMxLmgiCisjaW5jbHVkZSAiaXE4MDMzMi5oIgorCisjZW5kaWYgIC8qIF9BU01fQVJDSF9IQVJEV0FSRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NjFkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW8uaApAQCAtMCwwICsxLDIwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxICBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZmZmZmYKKworI2RlZmluZSBfX2lvKHApCQkJKCh2b2lkIF9faW9tZW0gKikocCkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKGEpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvcDMyMS1pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW9wMzIxLWlycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmNjMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvcDMyMS1pcnFzLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXJxcy5oCisgKgorICogQXV0aG9yOglSb3J5IEJvbHQgPHJvcnlib2x0QHBhY2JlbGwubmV0PgorICogQ29weXJpZ2h0OgkoQykgMjAwMiBSb3J5IEJvbHQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworI2lmbmRlZiBfSU9QMzIxX0lSUVNfSF8KKyNkZWZpbmUgX0lPUDMyMV9JUlFTX0hfCisKKy8qCisgKiBJT1A4MDMyMSBjaGlwc2V0IGludGVycnVwdHMKKyAqLworI2RlZmluZSBJT1AzMjFfSVJRX09GUwkJMAorI2RlZmluZSBJT1AzMjFfSVJRKHgpCQkoSU9QMzIxX0lSUV9PRlMgKyAoeCkpCisKKy8qCisgKiBPbiBJUlEgb3IgRklRIHJlZ2lzdGVyCisgKi8KKyNkZWZpbmUgSVJRX0lPUDMyMV9ETUEwX0VPVAlJT1AzMjFfSVJRKDApCisjZGVmaW5lIElSUV9JT1AzMjFfRE1BMF9FT0MJSU9QMzIxX0lSUSgxKQorI2RlZmluZSBJUlFfSU9QMzIxX0RNQTFfRU9UCUlPUDMyMV9JUlEoMikKKyNkZWZpbmUgSVJRX0lPUDMyMV9ETUExX0VPQwlJT1AzMjFfSVJRKDMpCisjZGVmaW5lIElSUV9JT1AzMjFfUlNWRF80CUlPUDMyMV9JUlEoNCkKKyNkZWZpbmUgSVJRX0lPUDMyMV9SU1ZEXzUJSU9QMzIxX0lSUSg1KQorI2RlZmluZSBJUlFfSU9QMzIxX0FBX0VPVAlJT1AzMjFfSVJRKDYpCisjZGVmaW5lIElSUV9JT1AzMjFfQUFfRU9DCUlPUDMyMV9JUlEoNykKKyNkZWZpbmUgSVJRX0lPUDMyMV9DT1JFX1BNT04JSU9QMzIxX0lSUSg4KQorI2RlZmluZSBJUlFfSU9QMzIxX1RJTUVSMAlJT1AzMjFfSVJRKDkpCisjZGVmaW5lIElSUV9JT1AzMjFfVElNRVIxCUlPUDMyMV9JUlEoMTApCisjZGVmaW5lIElSUV9JT1AzMjFfSTJDXzAJSU9QMzIxX0lSUSgxMSkKKyNkZWZpbmUgSVJRX0lPUDMyMV9JMkNfMQlJT1AzMjFfSVJRKDEyKQorI2RlZmluZSBJUlFfSU9QMzIxX01FU1NBR0lORwlJT1AzMjFfSVJRKDEzKQorI2RlZmluZSBJUlFfSU9QMzIxX0FUVV9CSVNUCUlPUDMyMV9JUlEoMTQpCisjZGVmaW5lIElSUV9JT1AzMjFfUEVSRk1PTglJT1AzMjFfSVJRKDE1KQorI2RlZmluZSBJUlFfSU9QMzIxX0NPUkVfUE1VCUlPUDMyMV9JUlEoMTYpCisjZGVmaW5lIElSUV9JT1AzMjFfQklVX0VSUglJT1AzMjFfSVJRKDE3KQorI2RlZmluZSBJUlFfSU9QMzIxX0FUVV9FUlIJSU9QMzIxX0lSUSgxOCkKKyNkZWZpbmUgSVJRX0lPUDMyMV9NQ1VfRVJSCUlPUDMyMV9JUlEoMTkpCisjZGVmaW5lIElSUV9JT1AzMjFfRE1BMF9FUlIJSU9QMzIxX0lSUSgyMCkKKyNkZWZpbmUgSVJRX0lPUDMyMV9ETUExX0VSUglJT1AzMjFfSVJRKDIxKQorI2RlZmluZSBJUlFfSU9QMzIxX1JTVkRfMjIJSU9QMzIxX0lSUSgyMikKKyNkZWZpbmUgSVJRX0lPUDMyMV9BQV9FUlIJSU9QMzIxX0lSUSgyMykKKyNkZWZpbmUgSVJRX0lPUDMyMV9NU0dfRVJSCUlPUDMyMV9JUlEoMjQpCisjZGVmaW5lIElSUV9JT1AzMjFfU1NQCQlJT1AzMjFfSVJRKDI1KQorI2RlZmluZSBJUlFfSU9QMzIxX1JTVkRfMjYJSU9QMzIxX0lSUSgyNikKKyNkZWZpbmUgSVJRX0lPUDMyMV9YSU5UMAlJT1AzMjFfSVJRKDI3KQorI2RlZmluZSBJUlFfSU9QMzIxX1hJTlQxCUlPUDMyMV9JUlEoMjgpCisjZGVmaW5lIElSUV9JT1AzMjFfWElOVDIJSU9QMzIxX0lSUSgyOSkKKyNkZWZpbmUgSVJRX0lPUDMyMV9YSU5UMwlJT1AzMjFfSVJRKDMwKQorI2RlZmluZSBJUlFfSU9QMzIxX0hQSQkJSU9QMzIxX0lSUSgzMSkKKworI2RlZmluZSBOUl9JT1AzMjFfSVJRUwkJKElPUDMyMV9JUlEoMzEpICsgMSkKKworI2RlZmluZSBOUl9JUlFTCQkJTlJfSU9QMzIxX0lSUVMKKworCisvKgorICogSW50ZXJydXB0cyBhdmFpbGFibGUgb24gdGhlIElRODAzMjEgYm9hcmQKKyAqLworCisvKgorICogT24gYm9hcmQgZGV2aWNlcworICovCisjZGVmaW5lCUlSUV9JUTgwMzIxX0k4MjU0NAlJUlFfSU9QMzIxX1hJTlQwCisjZGVmaW5lIElSUV9JUTgwMzIxX1VBUlQJSVJRX0lPUDMyMV9YSU5UMQorCisvKgorICogUENJIGludGVycnVwdHMKKyAqLworI2RlZmluZQlJUlFfSVE4MDMyMV9JTlRBCUlSUV9JT1AzMjFfWElOVDAKKyNkZWZpbmUJSVJRX0lRODAzMjFfSU5UQglJUlFfSU9QMzIxX1hJTlQxCisjZGVmaW5lCUlSUV9JUTgwMzIxX0lOVEMJSVJRX0lPUDMyMV9YSU5UMgorI2RlZmluZQlJUlFfSVE4MDMyMV9JTlRECUlSUV9JT1AzMjFfWElOVDMKKworLyoKKyAqIEludGVycnVwdHMgb24gdGhlIElRMzEyNDQgYm9hcmQKKyAqLworCisvKgorICogT24gYm9hcmQgZGV2aWNlcworICovCisjZGVmaW5lIElSUV9JUTMxMjQ0X1VBUlQJSVJRX0lPUDMyMV9YSU5UMQorI2RlZmluZQlJUlFfSVEzMTI0NF9JODI1NDYJSVJRX0lPUDMyMV9YSU5UMAorI2RlZmluZSBJUlFfSVEzMTI0NF9TQVRBCUlSUV9JT1AzMjFfWElOVDIKKyNkZWZpbmUJSVJRX0lRMzEyNDRfUENJWF9TTE9UCUlSUV9JT1AzMjFfWElOVDMKKworLyoKKyAqIFBDSSBpbnRlcnJ1cHRzCisgKi8KKyNkZWZpbmUJSVJRX0lRMzEyNDRfSU5UQQlJUlFfSU9QMzIxX1hJTlQwCisjZGVmaW5lCUlSUV9JUTMxMjQ0X0lOVEIJSVJRX0lPUDMyMV9YSU5UMQorI2RlZmluZQlJUlFfSVEzMTI0NF9JTlRDCUlSUV9JT1AzMjFfWElOVDIKKyNkZWZpbmUJSVJRX0lRMzEyNDRfSU5URAlJUlFfSU9QMzIxX1hJTlQzCisKKyNlbmRpZiAvLyBfSU9QMzIxX0lSUV9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvcDMyMS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvcDMyMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMDYyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW9wMzIxLmgKQEAgLTAsMCArMSwzNDUgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLWlvcDN4eC9pb3AzMjEuaAorICoKKyAqIEludGVsIElPUDMyMSBDaGlwIGRlZmluaXRpb25zCisgKgorICogQXV0aG9yOiBSb3J5IEJvbHQgPHJvcnlib2x0QHBhY2JlbGwubmV0PgorICogQ29weXJpZ2h0IChDKSAyMDAyIFJvcnkgQm9sdAorICogQ29weXJpZ2h0IChDKSAyMDA0IEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9JT1AzMjFfSFdfSF8KKyNkZWZpbmUgX0lPUDMyMV9IV19IXworCisKKy8qCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbWl4ZWQgZHJpdmVycyB0aGF0IG5lZWQgdG8gd29yayBvbiBhbGwKKyAqIElPUDN4eCB2YXJpYW50cyBidXQgYmVoYXZlIHNsaWdodGx5IGRpZmZlcmVudGx5IG9uIGVhY2guCisgKi8KKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZkZWYJQ09ORklHX0FSQ0hfSU9QMzIxCisjZGVmaW5lIGlvcF9pc18zMjEoKSAoKChwcm9jZXNzb3JfaWQgJiAweGZmZmZmNWUwKSA9PSAweDY5MDUyNDIwKSkKKyNlbHNlCisjZGVmaW5lCWlvcF9pc18zMjEoKQkwCisjZW5kaWYKKyNlbmRpZgorCisvKgorICogSU9QMzIxIEkvTyBhbmQgTWVtIHNwYWNlIHJlZ2lvbnMgZm9yIFBDSSBhdXRvY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIElPUDMyMV9QQ0lfSU9fV0lORE9XX1NJWkUgICAweDAwMDEwMDAwCisjZGVmaW5lIElPUDMyMV9QQ0lfTE9XRVJfSU9fUEEgICAgICAweDkwMDAwMDAwCisjZGVmaW5lIElPUDMyMV9QQ0lfTE9XRVJfSU9fVkEgICAgICAweGZlMDAwMDAwCisjZGVmaW5lIElPUDMyMV9QQ0lfTE9XRVJfSU9fQkEgICAgICAoKklPUDMyMV9PSU9XVFZSKQorI2RlZmluZSBJT1AzMjFfUENJX1VQUEVSX0lPX1BBICAgICAgKElPUDMyMV9QQ0lfTE9XRVJfSU9fUEEgKyBJT1AzMjFfUENJX0lPX1dJTkRPV19TSVpFIC0gMSkKKyNkZWZpbmUgSU9QMzIxX1BDSV9VUFBFUl9JT19WQSAgICAgIChJT1AzMjFfUENJX0xPV0VSX0lPX1ZBICsgSU9QMzIxX1BDSV9JT19XSU5ET1dfU0laRSAtIDEpCisjZGVmaW5lIElPUDMyMV9QQ0lfVVBQRVJfSU9fQkEgICAgICAoSU9QMzIxX1BDSV9MT1dFUl9JT19CQSArIElPUDMyMV9QQ0lfSU9fV0lORE9XX1NJWkUgLSAxKQorI2RlZmluZSBJT1AzMjFfUENJX0lPX09GRlNFVCAgICAgICAgKElPUDMyMV9QQ0lfTE9XRVJfSU9fVkEgLSBJT1AzMjFfUENJX0xPV0VSX0lPX0JBKQorCisvLyNkZWZpbmUgSU9QMzIxX1BDSV9NRU1fV0lORE9XX1NJWkUgICh+KklPUDMyMV9JQUxSMSArIDEpCisjZGVmaW5lIElPUDMyMV9QQ0lfTUVNX1dJTkRPV19TSVpFICAweDA0MDAwMDAwIC8qIDY0TSBvdXRib3VuZCB3aW5kb3cgKi8KKyNkZWZpbmUgSU9QMzIxX1BDSV9MT1dFUl9NRU1fUEEgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSU9QMzIxX1BDSV9MT1dFUl9NRU1fQkEgICAgICgqSU9QMzIxX09NV1RWUjApCisjZGVmaW5lIElPUDMyMV9QQ0lfVVBQRVJfTUVNX1BBICAgICAoSU9QMzIxX1BDSV9MT1dFUl9NRU1fUEEgKyBJT1AzMjFfUENJX01FTV9XSU5ET1dfU0laRSAtIDEpCisjZGVmaW5lIElPUDMyMV9QQ0lfVVBQRVJfTUVNX0JBICAgICAoSU9QMzIxX1BDSV9MT1dFUl9NRU1fQkEgKyBJT1AzMjFfUENJX01FTV9XSU5ET1dfU0laRSAtIDEpCisjZGVmaW5lIElPUDMyMV9QQ0lfTUVNX09GRlNFVCAgICAgICAoSU9QMzIxX1BDSV9MT1dFUl9NRU1fUEEgLSBJT1AzMjFfUENJX0xPV0VSX01FTV9CQSkKKworCisvKgorICogSU9QMzIxIGNoaXBzZXQgcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgSU9QMzIxX1ZJUlRfTUVNX0JBU0UgMHhmZWZmZTAwMCAgLyogY2hpcCB2aXJ0dWFsIG1lbSBhZGRyZXNzKi8KKyNkZWZpbmUgSU9QMzIxX1BIWVNfTUVNX0JBU0UgMHhmZmZmZTAwMCAgLyogY2hpcCBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcyAqLworI2RlZmluZSBJT1AzMjFfUkVHX0FERFIocmVnKSAoSU9QMzIxX1ZJUlRfTUVNX0JBU0UgfCAocmVnKSkKKworLyogUmVzZXJ2ZWQgMHgwMDAwMDAwMCB0aHJvdWdoIDB4MDAwMDAwRkYgKi8KKworLyogQWRkcmVzcyBUcmFuc2xhdGlvbiBVbml0IDB4MDAwMDAxMDAgdGhyb3VnaCAweDAwMDAwMUZGICovCisjZGVmaW5lIElPUDMyMV9BVFVWSUQgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEwMCkKKyNkZWZpbmUgSU9QMzIxX0FUVURJRCAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTAyKQorI2RlZmluZSBJT1AzMjFfQVRVQ01EICAgICAodm9sYXRpbGUgdTE2ICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMDQpCisjZGVmaW5lIElPUDMyMV9BVFVTUiAgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEwNikKKyNkZWZpbmUgSU9QMzIxX0FUVVJJRCAgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTA4KQorI2RlZmluZSBJT1AzMjFfQVRVQ0NSICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMDkpCisjZGVmaW5lIElPUDMyMV9BVFVDTFNSICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEwQykKKyNkZWZpbmUgSU9QMzIxX0FUVUxUICAgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTBEKQorI2RlZmluZSBJT1AzMjFfQVRVSFRSICAgICAodm9sYXRpbGUgdTggICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMEUpCisjZGVmaW5lIElPUDMyMV9BVFVCSVNUICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEwRikKKyNkZWZpbmUgSU9QMzIxX0lBQkFSMCAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTEwKQorI2RlZmluZSBJT1AzMjFfSUFVQkFSMCAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMTQpCisjZGVmaW5lIElPUDMyMV9JQUJBUjEgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDExOCkKKyNkZWZpbmUgSU9QMzIxX0lBVUJBUjEgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTFDKQorI2RlZmluZSBJT1AzMjFfSUFCQVIyICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMjApCisjZGVmaW5lIElPUDMyMV9JQVVCQVIyICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEyNCkKKyNkZWZpbmUgSU9QMzIxX0FTVklSICAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTJDKQorI2RlZmluZSBJT1AzMjFfQVNJUiAgICAgICAodm9sYXRpbGUgdTE2ICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxMkUpCisjZGVmaW5lIElPUDMyMV9FUkJBUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEzMCkKKy8qIFJlc2VydmVkIDB4MDAwMDAxMzQgdGhyb3VnaCAweDAwMDAwMTNCICovCisjZGVmaW5lIElPUDMyMV9BVFVJTFIgICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEzQykKKyNkZWZpbmUgSU9QMzIxX0FUVUlQUiAgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTNEKQorI2RlZmluZSBJT1AzMjFfQVRVTUdOVCAgICAodm9sYXRpbGUgdTggICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxM0UpCisjZGVmaW5lIElPUDMyMV9BVFVNTEFUICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDEzRikKKyNkZWZpbmUgSU9QMzIxX0lBTFIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTQwKQorI2RlZmluZSBJT1AzMjFfSUFUVlIwICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxNDQpCisjZGVmaW5lIElPUDMyMV9FUkxSICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE0OCkKKyNkZWZpbmUgSU9QMzIxX0VSVFZSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTRDKQorI2RlZmluZSBJT1AzMjFfSUFMUjEgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxNTApCisjZGVmaW5lIElPUDMyMV9JQUxSMiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE1NCkKKyNkZWZpbmUgSU9QMzIxX0lBVFZSMiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTU4KQorI2RlZmluZSBJT1AzMjFfT0lPV1RWUiAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxNUMpCisjZGVmaW5lIElPUDMyMV9PTVdUVlIwICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE2MCkKKyNkZWZpbmUgSU9QMzIxX09VTVdUVlIwICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTY0KQorI2RlZmluZSBJT1AzMjFfT01XVFZSMSAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxNjgpCisjZGVmaW5lIElPUDMyMV9PVU1XVFZSMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE2QykKKy8qIFJlc2VydmVkIDB4MDAwMDAxNzAgdGhyb3VnaCAweDAwMDAwMTc3Ki8KKyNkZWZpbmUgSU9QMzIxX09VRFdUVlIgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTc4KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDE3QyB0aHJvdWdoIDB4MDAwMDAxN0YqLworI2RlZmluZSBJT1AzMjFfQVRVQ1IgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxODApCisjZGVmaW5lIElPUDMyMV9QQ1NSICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE4NCkKKyNkZWZpbmUgSU9QMzIxX0FUVUlTUiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTg4KQorI2RlZmluZSBJT1AzMjFfQVRVSU1SICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxOEMpCisjZGVmaW5lIElPUDMyMV9JQUJBUjMgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE5MCkKKyNkZWZpbmUgSU9QMzIxX0lBVUJBUjMgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMTk0KQorI2RlZmluZSBJT1AzMjFfSUFMUjMgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxOTgpCisjZGVmaW5lIElPUDMyMV9JQVRWUjMgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDE5QykKKy8qIFJlc2VydmVkIDB4MDAwMDAxQTAgdGhyb3VnaCAweDAwMDAwMUEzKi8KKyNkZWZpbmUgSU9QMzIxX09DQ0FSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMUE0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDFBOCB0aHJvdWdoIDB4MDAwMDAxQUIqLworI2RlZmluZSBJT1AzMjFfT0NDRFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxQUMpCisvKiBSZXNlcnZlZCAweDAwMDAwMUIwIHRocm91Z2ggMHgwMDAwMDFCQiovCisjZGVmaW5lIElPUDMyMV9QRFNDUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDFCQykKKyNkZWZpbmUgSU9QMzIxX1BNQ0FQSUQgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMUMwKQorI2RlZmluZSBJT1AzMjFfUE1ORVhUICAgICAodm9sYXRpbGUgdTggICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxQzEpCisjZGVmaW5lIElPUDMyMV9BUE1DUiAgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDFDMikKKyNkZWZpbmUgSU9QMzIxX0FQTUNTUiAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMUM0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDFDNiB0aHJvdWdoIDB4MDAwMDAxREYgKi8KKyNkZWZpbmUgSU9QMzIxX1BDSVhDQVBJRCAgKHZvbGF0aWxlIHU4ICAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMUUwKQorI2RlZmluZSBJT1AzMjFfUENJWE5FWFQgICAodm9sYXRpbGUgdTggICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxRTEpCisjZGVmaW5lIElPUDMyMV9QQ0lYQ01EICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDFFMikKKyNkZWZpbmUgSU9QMzIxX1BDSVhTUiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMUU0KQorI2RlZmluZSBJT1AzMjFfUENJSVJTUiAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAxRUMpCisKKy8qIE1lc3NhZ2luZyBVbml0IDB4MDAwMDAzMDAgdGhyb3VnaCAweDAwMDAwM0ZGICovCisKKy8qIFJlc2VydmVkIDB4MDAwMDAzMDAgdGhyb3VnaCAweDAwMDAwMzBjICovCisjZGVmaW5lIElPUDMyMV9JTVIwICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDMxMCkKKyNkZWZpbmUgSU9QMzIxX0lNUjEgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzE0KQorI2RlZmluZSBJT1AzMjFfT01SMCAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzMTgpCisjZGVmaW5lIElPUDMyMV9PTVIxICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDMxQykKKyNkZWZpbmUgSU9QMzIxX0lEUiAgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzIwKQorI2RlZmluZSBJT1AzMjFfSUlTUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzMjQpCisjZGVmaW5lIElPUDMyMV9JSU1SICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDMyOCkKKyNkZWZpbmUgSU9QMzIxX09EUiAgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzJDKQorI2RlZmluZSBJT1AzMjFfT0lTUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzMzApCisjZGVmaW5lIElPUDMyMV9PSU1SICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDMzNCkKKy8qIFJlc2VydmVkIDB4MDAwMDAzMzggdGhyb3VnaCAweDAwMDAwMzRGICovCisjZGVmaW5lIElPUDMyMV9NVUNSICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDM1MCkKKyNkZWZpbmUgSU9QMzIxX1FCQVIgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzU0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDM1OCB0aHJvdWdoIDB4MDAwMDAzNUMgKi8KKyNkZWZpbmUgSU9QMzIxX0lGSFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzYwKQorI2RlZmluZSBJT1AzMjFfSUZUUFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzNjQpCisjZGVmaW5lIElPUDMyMV9JUEhQUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDM2OCkKKyNkZWZpbmUgSU9QMzIxX0lQVFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzZDKQorI2RlZmluZSBJT1AzMjFfT0ZIUFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzNzApCisjZGVmaW5lIElPUDMyMV9PRlRQUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDM3NCkKKyNkZWZpbmUgSU9QMzIxX09QSFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwMzc4KQorI2RlZmluZSBJT1AzMjFfT1BUUFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDAzN0MpCisjZGVmaW5lIElPUDMyMV9JQVIgICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDM4MCkKKworI2RlZmluZSBJT1AzMjFfSUl4Ul9NQVNLCTB4N2YgLyogbWFza3MgYWxsICovCisjZGVmaW5lIElPUDMyMV9JSXhSX0lSSQkJMHg0MCAvKiBSQyBJbmRleCBSZWdpc3RlciBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU9QMzIxX0lJeFJfT0ZRRgkweDIwIC8qIFJDIE91dHB1dCBGcmVlIFEgRnVsbCAoRVJST1IpICovCisjZGVmaW5lIElPUDMyMV9JSXhSX2lwcQkJMHgxMCAvKiBSQyBJbmJvdW5kIFBvc3QgUSAocG9zdCkgKi8KKyNkZWZpbmUgSU9QMzIxX0lJeFJfRVJSREkJMHgwOCAvKiBSTyBFcnJvciBEb29yYmVsbCBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU9QMzIxX0lJeFJfSURJCQkweDA0IC8qIFJPIEluYm91bmQgRG9vcmJlbGwgSW50ZXJydXB0ICovCisjZGVmaW5lIElPUDMyMV9JSXhSX0lNMQkJMHgwMiAvKiBSQyBJbmJvdW5kIE1lc3NhZ2UgMSBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU9QMzIxX0lJeFJfSU0wCQkweDAxIC8qIFJDIEluYm91bmQgTWVzc2FnZSAwIEludGVycnVwdCAqLworCisvKiBSZXNlcnZlZCAweDAwMDAwMzg0IHRocm91Z2ggMHgwMDAwMDNGRiAqLworCisvKiBETUEgQ29udHJvbGxlciAweDAwMDAwNDAwIHRocm91Z2ggMHgwMDAwMDRGRiAqLworI2RlZmluZSBJT1AzMjFfRE1BMF9DQ1IgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA0MDApCisjZGVmaW5lIElPUDMyMV9ETUEwX0NTUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQwNCkKKyNkZWZpbmUgSU9QMzIxX0RNQTBfREFSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDBDKQorI2RlZmluZSBJT1AzMjFfRE1BMF9OREFSICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA0MTApCisjZGVmaW5lIElPUDMyMV9ETUEwX1BBRFIgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQxNCkKKyNkZWZpbmUgSU9QMzIxX0RNQTBfUFVBRFIgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDE4KQorI2RlZmluZSBJT1AzMjFfRE1BMF9MQURSICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDBYMDAwMDA0MUMpCisjZGVmaW5lIElPUDMyMV9ETUEwX0JDUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQyMCkKKyNkZWZpbmUgSU9QMzIxX0RNQTBfRENSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDI0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDQyOCB0aHJvdWdoIDB4MDAwMDA0M0MgKi8KKyNkZWZpbmUgSU9QMzIxX0RNQTFfQ0NSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDQwKQorI2RlZmluZSBJT1AzMjFfRE1BMV9DU1IgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA0NDQpCisjZGVmaW5lIElPUDMyMV9ETUExX0RBUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQ0QykKKyNkZWZpbmUgSU9QMzIxX0RNQTFfTkRBUiAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDUwKQorI2RlZmluZSBJT1AzMjFfRE1BMV9QQURSICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA0NTQpCisjZGVmaW5lIElPUDMyMV9ETUExX1BVQURSICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQ1OCkKKyNkZWZpbmUgSU9QMzIxX0RNQTFfTEFEUiAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNDVDKQorI2RlZmluZSBJT1AzMjFfRE1BMV9CQ1IgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA0NjApCisjZGVmaW5lIElPUDMyMV9ETUExX0RDUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDQ2NCkKKy8qIFJlc2VydmVkIDB4MDAwMDA0NjggdGhyb3VnaCAweDAwMDAwNEZGICovCisKKy8qIE1lbW9yeSBjb250cm9sbGVyIDB4MDAwMDA1MDAgdGhyb3VnaCAweDAwMDVGRiAqLworCisvKiBQZXJpcGhlcmFsIGJ1cyBpbnRlcmZhY2UgdW5pdCAweDAwMDAwNjgwIHRocm91Z2ggMHgwMDA2RkYgKi8KKyNkZWZpbmUgSU9QMzIxX1BCQ1IgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNjgwKQorI2RlZmluZSBJT1AzMjFfUEJJU1IgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2ODQpCisjZGVmaW5lIElPUDMyMV9QQkJBUjAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDY4OCkKKyNkZWZpbmUgSU9QMzIxX1BCTFIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNjhDKQorI2RlZmluZSBJT1AzMjFfUEJCQVIxICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2OTApCisjZGVmaW5lIElPUDMyMV9QQkxSMSAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDY5NCkKKyNkZWZpbmUgSU9QMzIxX1BCQkFSMiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNjk4KQorI2RlZmluZSBJT1AzMjFfUEJMUjIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2OUMpCisjZGVmaW5lIElPUDMyMV9QQkJBUjMgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDZBMCkKKyNkZWZpbmUgSU9QMzIxX1BCTFIzICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNkE0KQorI2RlZmluZSBJT1AzMjFfUEJCQVI0ICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2QTgpCisjZGVmaW5lIElPUDMyMV9QQkxSNCAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDZBQykKKyNkZWZpbmUgSU9QMzIxX1BCQkFSNSAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNkIwKQorI2RlZmluZSBJT1AzMjFfUEJMUjUgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2QjQpCisjZGVmaW5lIElPUDMyMV9QQkRTQ1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDZCOCkKKy8qIFJlc2VydmVkIDB4MDAwMDA2QkMgKi8KKyNkZWZpbmUgSU9QMzIxX1BNQlIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNkMwKQorLyogUmVzZXJ2ZWQgMHgwMDAwMDZDNCB0aHJvdWdoIDB4MDAwMDA2REMgKi8KKyNkZWZpbmUgSU9QMzIxX1BNQlIxICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNkUwKQorI2RlZmluZSBJT1AzMjFfUE1CUjIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA2RTQpCisKKyNkZWZpbmUgSU9QMzIxX1BCQ1JfRU4gICAgMHgxCisKKyNkZWZpbmUgSU9QMzIxX1BCSVNSX0JPT1JfRVJSIDB4MQorCisvKiBQZXJpcGhlcmFsIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdCAweDAwMDAwNzAwIHRocm91Z2ggMHgwMDA3N0YgKi8KKyNkZWZpbmUgSU9QMzIxX0dUTVIJKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNzAwKQorI2RlZmluZSBJT1AzMjFfRVNSCSh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDcwNCkKKyNkZWZpbmUgSU9QMzIxX0VNSVNSCSh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDcwOCkKKy8qIHJlc2VydmVkIDB4MDAwMDAwNzBjICovCisjZGVmaW5lIElPUDMyMV9HVFNSCSh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDcxMCkKKy8qIFBFUkMwIERPRVNOJ1QgRVhJU1QgLSBpbmRleCBmcm9tIDEhICovCisjZGVmaW5lIElPUDMyMV9QRVJDUjAJKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNzEwKQorCisjZGVmaW5lIElPUDMyMV9HVE1SX05HQ0UJMHgwNCAvKiAoTm90KSBHbG9iYWwgQ291bnRlciBFbmFibGUgKi8KKworLyogSW50ZXJuYWwgYXJiaXRyYXRpb24gdW5pdCAweDAwMDAwNzgwIHRocm91Z2ggMHgwMDA3QkYgKi8KKyNkZWZpbmUgSU9QMzIxX0lBQ1IJKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNzgwKQorI2RlZmluZSBJT1AzMjFfTVRUUjEJKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNzg0KQorI2RlZmluZSBJT1AzMjFfTVRUUjIJKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwNzg4KQorCisvKiBHZW5lcmFsIFB1cnBvc2UgSS9PIFJlZ2lzdGVycyAqLworI2RlZmluZSBJT1AzMjFfR1BPRSAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3QzQpCisjZGVmaW5lIElPUDMyMV9HUElEICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDdDOCkKKyNkZWZpbmUgSU9QMzIxX0dQT0QgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwN0NDKQorCisvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLworI2RlZmluZSBJT1AzMjFfSU5UQ1RMICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3RDApCisjZGVmaW5lIElPUDMyMV9JTlRTVFIgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDdENCkKKyNkZWZpbmUgSU9QMzIxX0lJTlRTUkMgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwN0Q4KQorI2RlZmluZSBJT1AzMjFfRklOVFNSQyAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3REMpCisKKy8qIFRpbWVycyAqLworCisjZGVmaW5lIElPUDMyMV9UVV9UTVIwCQkodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3RTApCisjZGVmaW5lIElPUDMyMV9UVV9UTVIxCQkodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3RTQpCisKKyNpZmRlZiBDT05GSUdfQVJDSF9JUTgwMzIxCisjZGVmaW5lCUlPUDMyMV9USUNLX1JBVEUJMjAwMDAwMDAwCS8qIDIwMCBNSHogY2xvY2sgKi8KKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfSVEzMTI0NCkKKyNkZWZpbmUgSU9QMzIxX1RJQ0tfUkFURQkxOTgwMDAwMDAJLyogMzMuMDAwIE1IeiBjcnlzdGFsICovCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0VQODAyMTkKKyN1bmRlZiBJT1AzMjFfVElDS19SQVRFCisjZGVmaW5lIElPUDMyMV9USUNLX1JBVEUgMjAwMDAwMDAwIC8qIDMzLjMzMzMzMyBNaHogY3J5c3RhbCAqLworI2VuZGlmCisKKyNkZWZpbmUgSU9QMzIxX1RNUl9UQwkJMHgwMQorI2RlZmluZQlJT1AzMjFfVE1SX0VOCQkweDAyCisjZGVmaW5lIElPUDMyMV9UTVJfUkVMT0FECTB4MDQKKyNkZWZpbmUJSU9QMzIxX1RNUl9QUklWSUxFR0VECTB4MDkKKworI2RlZmluZQlJT1AzMjFfVE1SX1JBVElPXzFfMQkweDAwCisjZGVmaW5lCUlPUDMyMV9UTVJfUkFUSU9fNF8xCTB4MTAKKyNkZWZpbmUJSU9QMzIxX1RNUl9SQVRJT184XzEJMHgyMAorI2RlZmluZQlJT1AzMjFfVE1SX1JBVElPXzE2XzEJMHgzMAorCisjZGVmaW5lIElPUDMyMV9UVV9UQ1IwICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDdFOCkKKyNkZWZpbmUgSU9QMzIxX1RVX1RDUjEgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwN0VDKQorI2RlZmluZSBJT1AzMjFfVFVfVFJSMCAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3RjApCisjZGVmaW5lIElPUDMyMV9UVV9UUlIxICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDdGNCkKKyNkZWZpbmUgSU9QMzIxX1RVX1RJU1IgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAwN0Y4KQorI2RlZmluZSBJT1AzMjFfVFVfV0RUQ1IgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDA3RkMpCisKKy8qIEFwcGxpY2F0aW9uIGFjY2VsZXJhdG9yIHVuaXQgMHgwMDAwMDgwMCAtIDB4MDAwMDA4RkYgKi8KKyNkZWZpbmUgSU9QMzIxX0FBVV9BQ1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgwMCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9BU1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgwNCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9BREFSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgwOCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9BTkRBUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgwQykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgxMCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgxNCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIzICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgxOCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI0ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgxQykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI1ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgyQykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI2ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgzMCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI3ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgzNCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI4ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgzOCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVI5ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg0MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg0NCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg0OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg0QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxMyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg1MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxNCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg1NCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxNSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg1OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxNiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg1QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxNyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg2NCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxOCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg2OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIxOSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg2QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg3MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg3NCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg3OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyMyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg3QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyNCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg4MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyNSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg4OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyNiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg4QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyNyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg5MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyOCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg5NCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIyOSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg5OCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIzMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg5QykKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIzMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDhBMCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9TQVIzMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDhBNCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9EQVIgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgyMCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9BQkNSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgyNCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9BRENSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgyOCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9FRENSMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDgzYykKKyNkZWZpbmUgSU9QMzIxX0FBVV9FRENSMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg2MCkKKyNkZWZpbmUgSU9QMzIxX0FBVV9FRENSMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMDg4NCkKKworCisvKiBTU1Agc2VyaWFsIHBvcnQgdW5pdCAweDAwMDAxNjAwIC0gMHgwMDAwMTY3RiAqLworLyogSTJDIGJ1cyBpbnRlcmZhY2UgdW5pdCAweDAwMDAxNjgwIC0gMHgwMDAwMTZGRiAqLworI2RlZmluZSBJT1AzMjFfSUNSMCAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDE2ODApCisjZGVmaW5lIElPUDMyMV9JU1IwICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMTY4NCkKKyNkZWZpbmUgSU9QMzIxX0lTQVIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAxNjg4KQorI2RlZmluZSBJT1AzMjFfSURCUjAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDE2OEMpCisvKiBSZXNlcnZlZCAweDAwMDAxNjkwICovCisjZGVmaW5lIElPUDMyMV9JQk1SMCAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMTY5NCkKKy8qIFJlc2VydmVkIDB4MDAwMDE2OTggKi8KKy8qIFJlc2VydmVkIDB4MDAwMDE2OUMgKi8KKyNkZWZpbmUgSU9QMzIxX0lDUjEgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAxNkEwKQorI2RlZmluZSBJT1AzMjFfSVNSMSAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDE2QTQpCisjZGVmaW5lIElPUDMyMV9JU0FSMSAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMjFfUkVHX0FERFIoMHgwMDAwMTZBOCkKKyNkZWZpbmUgSU9QMzIxX0lEQlIxICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMyMV9SRUdfQUREUigweDAwMDAxNkFDKQorI2RlZmluZSBJT1AzMjFfSUJNUjEgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzIxX1JFR19BRERSKDB4MDAwMDE2QjQpCisvKiBSZXNlcnZlZCAweDAwMDAxNkI4IHRocm91Z2ggMHgwMDAwMTZGQyAqLworCisvKiBmb3IgSTJDIGJpdCBkZWZzIHNlZSBkcml2ZXJzL2kyYy9pMmMtaW9wM3h4LmggKi8KKworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHZvaWQgaW9wMzIxX21hcF9pbyh2b2lkKTsKK2V4dGVybiB2b2lkIGlvcDMyMV9pbml0X2lycSh2b2lkKTsKK2V4dGVybiB2b2lkIGlvcDMyMV90aW1lX2luaXQodm9pZCk7CisjZW5kaWYKKworI2VuZGlmIC8vIF9JT1AzMjFfSFdfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pb3AzMzEtaXJxcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lvcDMzMS1pcnFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZmNzNkNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pb3AzMzEtaXJxcy5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L2lycXMuaAorICoKKyAqIEF1dGhvcjoJRGF2ZSBKaWFuZyAoZGF2ZS5qaWFuZ0BpbnRlbC5jb20pCisgKiBDb3B5cmlnaHQ6CShDKSAyMDAzIEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKyNpZm5kZWYgX0lPUDMzMV9JUlFTX0hfCisjZGVmaW5lIF9JT1AzMzFfSVJRU19IXworCisvKgorICogSU9QODAzMzEgY2hpcHNldCBpbnRlcnJ1cHRzCisgKi8KKyNkZWZpbmUgSU9QMzMxX0lSUV9PRlMJCTAKKyNkZWZpbmUgSU9QMzMxX0lSUSh4KQkJKElPUDMzMV9JUlFfT0ZTICsgKHgpKQorCisvKgorICogT24gSVJRIG9yIEZJUSByZWdpc3RlcgorICovCisjZGVmaW5lIElSUV9JT1AzMzFfRE1BMF9FT1QJSU9QMzMxX0lSUSgwKQorI2RlZmluZSBJUlFfSU9QMzMxX0RNQTBfRU9DCUlPUDMzMV9JUlEoMSkKKyNkZWZpbmUgSVJRX0lPUDMzMV9ETUExX0VPVAlJT1AzMzFfSVJRKDIpCisjZGVmaW5lIElSUV9JT1AzMzFfRE1BMV9FT0MJSU9QMzMxX0lSUSgzKQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfNAlJT1AzMzFfSVJRKDQpCisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF81CUlPUDMzMV9JUlEoNSkKKyNkZWZpbmUgSVJRX0lPUDMzMV9BQV9FT1QJSU9QMzMxX0lSUSg2KQorI2RlZmluZSBJUlFfSU9QMzMxX0FBX0VPQwlJT1AzMzFfSVJRKDcpCisjZGVmaW5lIElSUV9JT1AzMzFfVElNRVIwCUlPUDMzMV9JUlEoOCkKKyNkZWZpbmUgSVJRX0lPUDMzMV9USU1FUjEJSU9QMzMxX0lSUSg5KQorI2RlZmluZSBJUlFfSU9QMzMxX0kyQ18wCUlPUDMzMV9JUlEoMTApCisjZGVmaW5lIElSUV9JT1AzMzFfSTJDXzEJSU9QMzMxX0lSUSgxMSkKKyNkZWZpbmUgSVJRX0lPUDMzMV9NU0cJICAgIElPUDMzMV9JUlEoMTIpCisjZGVmaW5lIElSUV9JT1AzMzFfTVNHSUJRICAgSU9QMzMxX0lSUSgxMykKKyNkZWZpbmUgSVJRX0lPUDMzMV9BVFVfQklTVAlJT1AzMzFfSVJRKDE0KQorI2RlZmluZSBJUlFfSU9QMzMxX1BFUkZNT04JSU9QMzMxX0lSUSgxNSkKKyNkZWZpbmUgSVJRX0lPUDMzMV9DT1JFX1BNVQlJT1AzMzFfSVJRKDE2KQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfMTcJSU9QMzMxX0lSUSgxNykKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzE4CUlPUDMzMV9JUlEoMTgpCisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF8xOQlJT1AzMzFfSVJRKDE5KQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfMjAJSU9QMzMxX0lSUSgyMCkKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzIxCUlPUDMzMV9JUlEoMjEpCisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF8yMglJT1AzMzFfSVJRKDIyKQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfMjMJSU9QMzMxX0lSUSgyMykKKyNkZWZpbmUgSVJRX0lPUDMzMV9YSU5UMAlJT1AzMzFfSVJRKDI0KQorI2RlZmluZSBJUlFfSU9QMzMxX1hJTlQxCUlPUDMzMV9JUlEoMjUpCisjZGVmaW5lIElSUV9JT1AzMzFfWElOVDIJSU9QMzMxX0lSUSgyNikKKyNkZWZpbmUgSVJRX0lPUDMzMV9YSU5UMwlJT1AzMzFfSVJRKDI3KQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfMjggIElPUDMzMV9JUlEoMjgpCisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF8yOSAgSU9QMzMxX0lSUSgyOSkKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzMwICBJT1AzMzFfSVJRKDMwKQorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfMzEgIElPUDMzMV9JUlEoMzEpCisjZGVmaW5lIElSUV9JT1AzMzFfWElOVDggICAgSU9QMzMxX0lSUSgzMikgIC8vIDAKKyNkZWZpbmUgSVJRX0lPUDMzMV9YSU5UOSAgICBJT1AzMzFfSVJRKDMzKSAgLy8gMQorI2RlZmluZSBJUlFfSU9QMzMxX1hJTlQxMCAgIElPUDMzMV9JUlEoMzQpICAvLyAyCisjZGVmaW5lIElSUV9JT1AzMzFfWElOVDExICAgSU9QMzMxX0lSUSgzNSkgIC8vIDMKKyNkZWZpbmUgSVJRX0lPUDMzMV9YSU5UMTIgICBJT1AzMzFfSVJRKDM2KSAgLy8gNAorI2RlZmluZSBJUlFfSU9QMzMxX1hJTlQxMyAgIElPUDMzMV9JUlEoMzcpICAvLyA1CisjZGVmaW5lIElSUV9JT1AzMzFfWElOVDE0ICAgSU9QMzMxX0lSUSgzOCkgIC8vIDYKKyNkZWZpbmUgSVJRX0lPUDMzMV9YSU5UMTUgICBJT1AzMzFfSVJRKDM5KSAgLy8gNworI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfNDAgIElPUDMzMV9JUlEoNDApICAvLyA4CisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF80MSAgSU9QMzMxX0lSUSg0MSkgIC8vIDkKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQyICBJT1AzMzFfSVJRKDQyKSAgLy8gMTAKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQzICBJT1AzMzFfSVJRKDQzKSAgLy8gMTEKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ0ICBJT1AzMzFfSVJRKDQ0KSAgLy8gMTIKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ1ICBJT1AzMzFfSVJRKDQ1KSAgLy8gMTMKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ2ICBJT1AzMzFfSVJRKDQ2KSAgLy8gMTQKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ3ICBJT1AzMzFfSVJRKDQ3KSAgLy8gMTUKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ4ICBJT1AzMzFfSVJRKDQ4KSAgLy8gMTYKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzQ5ICBJT1AzMzFfSVJRKDQ5KSAgLy8gMTcKKyNkZWZpbmUgSVJRX0lPUDMzMV9SU1ZEXzUwICBJT1AzMzFfSVJRKDUwKSAgLy8gMTgKKyNkZWZpbmUgSVJRX0lPUDMzMV9VQVJUMCAgICBJT1AzMzFfSVJRKDUxKSAgLy8gMTkKKyNkZWZpbmUgSVJRX0lPUDMzMV9VQVJUMSAgICBJT1AzMzFfSVJRKDUyKSAgLy8gMjAKKyNkZWZpbmUgSVJRX0lPUDMzMV9QQklFICAgICBJT1AzMzFfSVJRKDUzKSAgLy8gMjEKKyNkZWZpbmUgSVJRX0lPUDMzMV9BVFVfQ1JXICBJT1AzMzFfSVJRKDU0KSAgLy8gMjIKKyNkZWZpbmUgSVJRX0lPUDMzMV9BVFVfRVJSCUlPUDMzMV9JUlEoNTUpICAvLyAyMworI2RlZmluZSBJUlFfSU9QMzMxX01DVV9FUlIJSU9QMzMxX0lSUSg1NikgIC8vIDI0CisjZGVmaW5lIElSUV9JT1AzMzFfRE1BMF9FUlIJSU9QMzMxX0lSUSg1NykgIC8vIDI1CisjZGVmaW5lIElSUV9JT1AzMzFfRE1BMV9FUlIJSU9QMzMxX0lSUSg1OCkgIC8vIDI2CisjZGVmaW5lIElSUV9JT1AzMzFfUlNWRF81OSAgSU9QMzMxX0lSUSg1OSkgIC8vIDI3CisjZGVmaW5lIElSUV9JT1AzMzFfQUFfRVJSCUlPUDMzMV9JUlEoNjApICAvLyAyOAorI2RlZmluZSBJUlFfSU9QMzMxX1JTVkRfNjEgIElPUDMzMV9JUlEoNjEpICAvLyAyOQorI2RlZmluZSBJUlFfSU9QMzMxX01TR19FUlIJSU9QMzMxX0lSUSg2MikgIC8vIDMwCisjZGVmaW5lIElSUV9JT1AzMzFfSFBJCQlJT1AzMzFfSVJRKDYzKSAgLy8gMzEKKworI2RlZmluZSBOUl9JT1AzMzFfSVJRUwkJKElPUDMzMV9JUlEoNjMpICsgMSkKKworI2RlZmluZSBOUl9JUlFTCQkJTlJfSU9QMzMxX0lSUVMKKworCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JUTgwMzMxKQorLyoKKyAqIEludGVycnVwdHMgYXZhaWxhYmxlIG9uIHRoZSBJUTgwMzMxIGJvYXJkCisgKi8KKworLyoKKyAqIE9uIGJvYXJkIGRldmljZXMKKyAqLworI2RlZmluZQlJUlFfSVE4MDMzMV9JODI1NDQJSVJRX0lPUDMzMV9YSU5UMAorI2RlZmluZSBJUlFfSVE4MDMzMV9VQVJUMAlJUlFfSU9QMzMxX1VBUlQwCisjZGVmaW5lIElSUV9JUTgwMzMxX1VBUlQxCUlSUV9JT1AzMzFfVUFSVDEKKworLyoKKyAqIFBDSSBpbnRlcnJ1cHRzCisgKi8KKyNkZWZpbmUJSVJRX0lRODAzMzFfSU5UQQlJUlFfSU9QMzMxX1hJTlQwCisjZGVmaW5lCUlSUV9JUTgwMzMxX0lOVEIJSVJRX0lPUDMzMV9YSU5UMQorI2RlZmluZQlJUlFfSVE4MDMzMV9JTlRDCUlSUV9JT1AzMzFfWElOVDIKKyNkZWZpbmUJSVJRX0lRODAzMzFfSU5URAlJUlFfSU9QMzMxX1hJTlQzCisKKyNlbGlmIGRlZmluZWQoQ09ORklHX01BQ0hfSVE4MDMzMikKKy8qCisgKiBJbnRlcnJ1cHRzIGF2YWlsYWJsZSBvbiB0aGUgSVE4MDMzMiBib2FyZAorICovCisKKy8qCisgKiBPbiBib2FyZCBkZXZpY2VzCisgKi8KKyNkZWZpbmUJSVJRX0lRODAzMzJfSTgyNTQ0CUlSUV9JT1AzMzFfWElOVDAKKyNkZWZpbmUgSVJRX0lRODAzMzJfVUFSVDAJSVJRX0lPUDMzMV9VQVJUMAorI2RlZmluZSBJUlFfSVE4MDMzMl9VQVJUMQlJUlFfSU9QMzMxX1VBUlQxCisKKy8qCisgKiBQQ0kgaW50ZXJydXB0cworICovCisjZGVmaW5lCUlSUV9JUTgwMzMyX0lOVEEJSVJRX0lPUDMzMV9YSU5UMAorI2RlZmluZQlJUlFfSVE4MDMzMl9JTlRCCUlSUV9JT1AzMzFfWElOVDEKKyNkZWZpbmUJSVJRX0lRODAzMzJfSU5UQwlJUlFfSU9QMzMxX1hJTlQyCisjZGVmaW5lCUlSUV9JUTgwMzMyX0lOVEQJSVJRX0lPUDMzMV9YSU5UMworCisjZW5kaWYKKworI2VuZGlmIC8vIF9JT1AzMzFfSVJRX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW9wMzMxLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaW9wMzMxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhZGZmZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pb3AzMzEuaApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtL2FyY2gtaW9wM3h4L2lvcDMzMS5oCisgKgorICogSW50ZWwgSU9QMzMxIENoaXAgZGVmaW5pdGlvbnMKKyAqCisgKiBBdXRob3I6IERhdmUgSmlhbmcgKGRhdmUuamlhbmdAaW50ZWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0IEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9JT1AzMzFfSFdfSF8KKyNkZWZpbmUgX0lPUDMzMV9IV19IXworCisKKy8qCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbWl4ZWQgZHJpdmVycyB0aGF0IG5lZWQgdG8gd29yayBvbiBhbGwKKyAqIElPUDN4eCB2YXJpYW50cyBidXQgYmVoYXZlIHNsaWdodGx5IGRpZmZlcmVudGx5IG9uIGVhY2guCisgKi8KKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZkZWYJQ09ORklHX0FSQ0hfSU9QMzMxCisvKiNkZWZpbmUJaW9wX2lzXzMzMSgpCSgocHJvY2Vzc29yX2lkICYgMHhmZmZmZmZiMCkgPT0gMHg2OTA1NDA5MCkgKi8KKyNkZWZpbmUJaW9wX2lzXzMzMSgpCSgocHJvY2Vzc29yX2lkICYgMHhmZmZmZmYzMCkgPT0gMHg2OTA1NDAxMCkKKyNlbHNlCisjZGVmaW5lCWlvcF9pc18zMzEoKQkwCisjZW5kaWYKKyNlbmRpZgorCisvKgorICogSU9QMzMxIEkvTyBhbmQgTWVtIHNwYWNlIHJlZ2lvbnMgZm9yIFBDSSBhdXRvY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIElPUDMzMV9QQ0lfSU9fV0lORE9XX1NJWkUgICAweDAwMDEwMDAwCisjZGVmaW5lIElPUDMzMV9QQ0lfTE9XRVJfSU9fUEEgICAgICAweDkwMDAwMDAwCisjZGVmaW5lIElPUDMzMV9QQ0lfTE9XRVJfSU9fVkEgICAgICAweGZlMDAwMDAwCisjZGVmaW5lIElPUDMzMV9QQ0lfTE9XRVJfSU9fQkEgICAgICAoKklPUDMzMV9PSU9XVFZSKQorI2RlZmluZSBJT1AzMzFfUENJX1VQUEVSX0lPX1BBICAgICAgKElPUDMzMV9QQ0lfTE9XRVJfSU9fUEEgKyBJT1AzMzFfUENJX0lPX1dJTkRPV19TSVpFIC0gMSkKKyNkZWZpbmUgSU9QMzMxX1BDSV9VUFBFUl9JT19WQSAgICAgIChJT1AzMzFfUENJX0xPV0VSX0lPX1ZBICsgSU9QMzMxX1BDSV9JT19XSU5ET1dfU0laRSAtIDEpCisjZGVmaW5lIElPUDMzMV9QQ0lfVVBQRVJfSU9fQkEgICAgICAoSU9QMzMxX1BDSV9MT1dFUl9JT19CQSArIElPUDMzMV9QQ0lfSU9fV0lORE9XX1NJWkUgLSAxKQorI2RlZmluZSBJT1AzMzFfUENJX0lPX09GRlNFVCAgICAgICAgKElPUDMzMV9QQ0lfTE9XRVJfSU9fVkEgLSBJT1AzMzFfUENJX0xPV0VSX0lPX0JBKQorCisvKiB0aGlzIGNhbiBiZSAxMjhNIGlmIE9NV1RWUjEgaXMgc2V0ICovCisjZGVmaW5lIElPUDMzMV9QQ0lfTUVNX1dJTkRPV19TSVpFCTB4MDQwMDAwMDAgLyogNjRNIG91dGJvdW5kIHdpbmRvdyAqLworLy8jZGVmaW5lIElPUDMzMV9QQ0lfTUVNX1dJTkRPV19TSVpFICAofipJT1AzMzFfSUFMUjEgKyAxKQorI2RlZmluZSBJT1AzMzFfUENJX0xPV0VSX01FTV9QQSAgICAgMHg4MDAwMDAwMAorI2RlZmluZSBJT1AzMzFfUENJX0xPV0VSX01FTV9CQSAgICAgKCpJT1AzMzFfT01XVFZSMCkKKyNkZWZpbmUgSU9QMzMxX1BDSV9VUFBFUl9NRU1fUEEgICAgIChJT1AzMzFfUENJX0xPV0VSX01FTV9QQSArIElPUDMzMV9QQ0lfTUVNX1dJTkRPV19TSVpFIC0gMSkKKyNkZWZpbmUgSU9QMzMxX1BDSV9VUFBFUl9NRU1fQkEgICAgIChJT1AzMzFfUENJX0xPV0VSX01FTV9CQSArIElPUDMzMV9QQ0lfTUVNX1dJTkRPV19TSVpFIC0gMSkKKyNkZWZpbmUgSU9QMzMxX1BDSV9NRU1fT0ZGU0VUICAgICAgIChJT1AzMzFfUENJX0xPV0VSX01FTV9QQSAtIElPUDMzMV9QQ0lfTE9XRVJfTUVNX0JBKQorCisvKgorICogSU9QMzMxIGNoaXBzZXQgcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgSU9QMzMxX1ZJUlRfTUVNX0JBU0UgIDB4ZmVmZmUwMDAgIC8qIGNoaXAgdmlydHVhbCBtZW0gYWRkcmVzcyovCisjZGVmaW5lIElPUDMzMV9QSFlTX01FTV9CQVNFICAweGZmZmZlMDAwICAvKiBjaGlwIHBoeXNpY2FsIG1lbW9yeSBhZGRyZXNzICovCisjZGVmaW5lIElPUDMzMV9SRUdfQUREUihyZWcpIChJT1AzMzFfVklSVF9NRU1fQkFTRSB8IChyZWcpKQorCisvKiBSZXNlcnZlZCAweDAwMDAwMDAwIHRocm91Z2ggMHgwMDAwMDBGRiAqLworCisvKiBBZGRyZXNzIFRyYW5zbGF0aW9uIFVuaXQgMHgwMDAwMDEwMCB0aHJvdWdoIDB4MDAwMDAxRkYgKi8KKyNkZWZpbmUgSU9QMzMxX0FUVVZJRCAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTAwKQorI2RlZmluZSBJT1AzMzFfQVRVRElEICAgICAodm9sYXRpbGUgdTE2ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMDIpCisjZGVmaW5lIElPUDMzMV9BVFVDTUQgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEwNCkKKyNkZWZpbmUgSU9QMzMxX0FUVVNSICAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTA2KQorI2RlZmluZSBJT1AzMzFfQVRVUklEICAgICAodm9sYXRpbGUgdTggICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMDgpCisjZGVmaW5lIElPUDMzMV9BVFVDQ1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEwOSkKKyNkZWZpbmUgSU9QMzMxX0FUVUNMU1IgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTBDKQorI2RlZmluZSBJT1AzMzFfQVRVTFQgICAgICAodm9sYXRpbGUgdTggICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMEQpCisjZGVmaW5lIElPUDMzMV9BVFVIVFIgICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEwRSkKKyNkZWZpbmUgSU9QMzMxX0FUVUJJU1QgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTBGKQorI2RlZmluZSBJT1AzMzFfSUFCQVIwICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMTApCisjZGVmaW5lIElPUDMzMV9JQVVCQVIwICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDExNCkKKyNkZWZpbmUgSU9QMzMxX0lBQkFSMSAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTE4KQorI2RlZmluZSBJT1AzMzFfSUFVQkFSMSAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMUMpCisjZGVmaW5lIElPUDMzMV9JQUJBUjIgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEyMCkKKyNkZWZpbmUgSU9QMzMxX0lBVUJBUjIgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTI0KQorI2RlZmluZSBJT1AzMzFfQVNWSVIgICAgICAodm9sYXRpbGUgdTE2ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMkMpCisjZGVmaW5lIElPUDMzMV9BU0lSICAgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEyRSkKKyNkZWZpbmUgSU9QMzMxX0VSQkFSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTMwKQorI2RlZmluZSBJT1AzMzFfQVRVX0NBUFBUUiAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxMzQpCisvKiBSZXNlcnZlZCAweDAwMDAwMTM4IHRocm91Z2ggMHgwMDAwMDEzQiAqLworI2RlZmluZSBJT1AzMzFfQVRVSUxSICAgICAodm9sYXRpbGUgdTggICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxM0MpCisjZGVmaW5lIElPUDMzMV9BVFVJUFIgICAgICh2b2xhdGlsZSB1OCAgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDEzRCkKKyNkZWZpbmUgSU9QMzMxX0FUVU1HTlQgICAgKHZvbGF0aWxlIHU4ICAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTNFKQorI2RlZmluZSBJT1AzMzFfQVRVTUxBVCAgICAodm9sYXRpbGUgdTggICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxM0YpCisjZGVmaW5lIElPUDMzMV9JQUxSMCAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE0MCkKKyNkZWZpbmUgSU9QMzMxX0lBVFZSMCAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTQ0KQorI2RlZmluZSBJT1AzMzFfRVJMUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxNDgpCisjZGVmaW5lIElPUDMzMV9FUlRWUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE0QykKKyNkZWZpbmUgSU9QMzMxX0lBTFIxICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTUwKQorI2RlZmluZSBJT1AzMzFfSUFMUjIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxNTQpCisjZGVmaW5lIElPUDMzMV9JQVRWUjIgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE1OCkKKyNkZWZpbmUgSU9QMzMxX09JT1dUVlIgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTVDKQorI2RlZmluZSBJT1AzMzFfT01XVFZSMCAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxNjApCisjZGVmaW5lIElPUDMzMV9PVU1XVFZSMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE2NCkKKyNkZWZpbmUgSU9QMzMxX09NV1RWUjEgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTY4KQorI2RlZmluZSBJT1AzMzFfT1VNV1RWUjEgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxNkMpCisvKiBSZXNlcnZlZCAweDAwMDAwMTcwIHRocm91Z2ggMHgwMDAwMDE3NyovCisjZGVmaW5lIElPUDMzMV9PVURXVFZSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE3OCkKKy8qIFJlc2VydmVkIDB4MDAwMDAxN0MgdGhyb3VnaCAweDAwMDAwMTdGKi8KKyNkZWZpbmUgSU9QMzMxX0FUVUNSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTgwKQorI2RlZmluZSBJT1AzMzFfUENTUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxODQpCisjZGVmaW5lIElPUDMzMV9BVFVJU1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE4OCkKKyNkZWZpbmUgSU9QMzMxX0FUVUlNUiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMThDKQorI2RlZmluZSBJT1AzMzFfSUFCQVIzICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxOTApCisjZGVmaW5lIElPUDMzMV9JQVVCQVIzICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDE5NCkKKyNkZWZpbmUgSU9QMzMxX0lBTFIzICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMTk4KQorI2RlZmluZSBJT1AzMzFfSUFUVlIzICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxOUMpCisvKiBSZXNlcnZlZCAweDAwMDAwMUEwIHRocm91Z2ggMHgwMDAwMDFBMyovCisjZGVmaW5lIElPUDMzMV9PQ0NBUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFBNCkKKy8qIFJlc2VydmVkIDB4MDAwMDAxQTggdGhyb3VnaCAweDAwMDAwMUFCKi8KKyNkZWZpbmUgSU9QMzMxX09DQ0RSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUFDKQorLyogUmVzZXJ2ZWQgMHgwMDAwMDFCMCB0aHJvdWdoIDB4MDAwMDAxQkIqLworI2RlZmluZSBJT1AzMzFfVlBEQ0FQSUQgICAodm9sYXRpbGUgdTggKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFCOCkKKyNkZWZpbmUgSU9QMzMxX1ZQRE5YVFAgICAgKHZvbGF0aWxlIHU4ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxQjkpCisjZGVmaW5lIElPUDMzMV9WUERBUgkgICh2b2xhdGlsZSB1MTYgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFCQSkKKyNkZWZpbmUgSU9QMzMxX1ZQRERSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUJDKQorI2RlZmluZSBJT1AzMzFfUE1DQVBJRCAgICAodm9sYXRpbGUgdTggKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFDMCkKKyNkZWZpbmUgSU9QMzMxX1BNTkVYVCAgICAgKHZvbGF0aWxlIHU4ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxQzEpCisjZGVmaW5lIElPUDMzMV9BUE1DUiAgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFDMikKKyNkZWZpbmUgSU9QMzMxX0FQTUNTUiAgICAgKHZvbGF0aWxlIHUxNiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUM0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDFDNiB0aHJvdWdoIDB4MDAwMDAxQ0YgKi8KKyNkZWZpbmUgSU9QMzMxX01TSUNBUElEICAgKHZvbGF0aWxlIHU4ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxRDApCisjZGVmaW5lIElPUDMzMV9NU0lOWFRQCSAgKHZvbGF0aWxlIHU4ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxRDEpCisjZGVmaW5lIElPUDMzMV9NU0lNQ1IgICAgICh2b2xhdGlsZSB1MTYgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFEMikKKyNkZWZpbmUgSU9QMzMxX01TSU1BUiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUQ0KQorI2RlZmluZSBJT1AzMzFfTVNJTVVBUgkgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFEOCkKKyNkZWZpbmUgSU9QMzMxX01TSU1EUgkgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFEQykKKyNkZWZpbmUgSU9QMzMxX1BDSVhDQVBJRCAgKHZvbGF0aWxlIHU4ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxRTApCisjZGVmaW5lIElPUDMzMV9QQ0lYTkVYVCAgICh2b2xhdGlsZSB1OCAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUUxKQorI2RlZmluZSBJT1AzMzFfUENJWENNRCAgICAodm9sYXRpbGUgdTE2ICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAxRTIpCisjZGVmaW5lIElPUDMzMV9QQ0lYU1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDFFNCkKKyNkZWZpbmUgSU9QMzMxX1BDSUlSU1IgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMUVDKQorCisvKiBNZXNzYWdpbmcgVW5pdCAweDAwMDAwMzAwIHRocm91Z2ggMHgwMDAwMDNGRiAqLworCisvKiBSZXNlcnZlZCAweDAwMDAwMzAwIHRocm91Z2ggMHgwMDAwMDMwYyAqLworI2RlZmluZSBJT1AzMzFfSU1SMCAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzMTApCisjZGVmaW5lIElPUDMzMV9JTVIxICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDMxNCkKKyNkZWZpbmUgSU9QMzMxX09NUjAgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzE4KQorI2RlZmluZSBJT1AzMzFfT01SMSAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzMUMpCisjZGVmaW5lIElPUDMzMV9JRFIgICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDMyMCkKKyNkZWZpbmUgSU9QMzMxX0lJU1IgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzI0KQorI2RlZmluZSBJT1AzMzFfSUlNUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzMjgpCisjZGVmaW5lIElPUDMzMV9PRFIgICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDMyQykKKyNkZWZpbmUgSU9QMzMxX09JU1IgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzMwKQorI2RlZmluZSBJT1AzMzFfT0lNUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzMzQpCisvKiBSZXNlcnZlZCAweDAwMDAwMzM4IHRocm91Z2ggMHgwMDAwMDM0RiAqLworI2RlZmluZSBJT1AzMzFfTVVDUiAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzNTApCisjZGVmaW5lIElPUDMzMV9RQkFSICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDM1NCkKKy8qIFJlc2VydmVkIDB4MDAwMDAzNTggdGhyb3VnaCAweDAwMDAwMzVDICovCisjZGVmaW5lIElPUDMzMV9JRkhQUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDM2MCkKKyNkZWZpbmUgSU9QMzMxX0lGVFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzY0KQorI2RlZmluZSBJT1AzMzFfSVBIUFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzNjgpCisjZGVmaW5lIElPUDMzMV9JUFRQUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDM2QykKKyNkZWZpbmUgSU9QMzMxX09GSFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzcwKQorI2RlZmluZSBJT1AzMzFfT0ZUUFIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzNzQpCisjZGVmaW5lIElPUDMzMV9PUEhQUiAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDM3OCkKKyNkZWZpbmUgSU9QMzMxX09QVFBSICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwMzdDKQorI2RlZmluZSBJT1AzMzFfSUFSICAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDAzODApCisvKiBSZXNlcnZlZCAweDAwMDAwMzg0IHRocm91Z2ggMHgwMDAwMDNGRiAqLworCisvKiBETUEgQ29udHJvbGxlciAweDAwMDAwNDAwIHRocm91Z2ggMHgwMDAwMDRGRiAqLworI2RlZmluZSBJT1AzMzFfRE1BMF9DQ1IgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA0MDApCisjZGVmaW5lIElPUDMzMV9ETUEwX0NTUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQwNCkKKyNkZWZpbmUgSU9QMzMxX0RNQTBfREFSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDBDKQorI2RlZmluZSBJT1AzMzFfRE1BMF9OREFSICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA0MTApCisjZGVmaW5lIElPUDMzMV9ETUEwX1BBRFIgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQxNCkKKyNkZWZpbmUgSU9QMzMxX0RNQTBfUFVBRFIgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDE4KQorI2RlZmluZSBJT1AzMzFfRE1BMF9MQURSICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDBYMDAwMDA0MUMpCisjZGVmaW5lIElPUDMzMV9ETUEwX0JDUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQyMCkKKyNkZWZpbmUgSU9QMzMxX0RNQTBfRENSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDI0KQorLyogUmVzZXJ2ZWQgMHgwMDAwMDQyOCB0aHJvdWdoIDB4MDAwMDA0M0MgKi8KKyNkZWZpbmUgSU9QMzMxX0RNQTFfQ0NSICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDQwKQorI2RlZmluZSBJT1AzMzFfRE1BMV9DU1IgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA0NDQpCisjZGVmaW5lIElPUDMzMV9ETUExX0RBUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQ0QykKKyNkZWZpbmUgSU9QMzMxX0RNQTFfTkRBUiAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDUwKQorI2RlZmluZSBJT1AzMzFfRE1BMV9QQURSICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA0NTQpCisjZGVmaW5lIElPUDMzMV9ETUExX1BVQURSICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQ1OCkKKyNkZWZpbmUgSU9QMzMxX0RNQTFfTEFEUiAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNDVDKQorI2RlZmluZSBJT1AzMzFfRE1BMV9CQ1IgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA0NjApCisjZGVmaW5lIElPUDMzMV9ETUExX0RDUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDQ2NCkKKy8qIFJlc2VydmVkIDB4MDAwMDA0NjggdGhyb3VnaCAweDAwMDAwNEZGICovCisKKy8qIE1lbW9yeSBjb250cm9sbGVyIDB4MDAwMDA1MDAgdGhyb3VnaCAweDAwMDVGRiAqLworCisvKiBQZXJpcGhlcmFsIGJ1cyBpbnRlcmZhY2UgdW5pdCAweDAwMDAwNjgwIHRocm91Z2ggMHgwMDA2RkYgKi8KKyNkZWZpbmUgSU9QMzMxX1BCQ1IgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNjgwKQorI2RlZmluZSBJT1AzMzFfUEJJU1IgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2ODQpCisjZGVmaW5lIElPUDMzMV9QQkJBUjAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDY4OCkKKyNkZWZpbmUgSU9QMzMxX1BCTFIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNjhDKQorI2RlZmluZSBJT1AzMzFfUEJCQVIxICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2OTApCisjZGVmaW5lIElPUDMzMV9QQkxSMSAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDY5NCkKKyNkZWZpbmUgSU9QMzMxX1BCQkFSMiAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNjk4KQorI2RlZmluZSBJT1AzMzFfUEJMUjIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2OUMpCisjZGVmaW5lIElPUDMzMV9QQkJBUjMgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDZBMCkKKyNkZWZpbmUgSU9QMzMxX1BCTFIzICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNkE0KQorI2RlZmluZSBJT1AzMzFfUEJCQVI0ICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2QTgpCisjZGVmaW5lIElPUDMzMV9QQkxSNCAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDZBQykKKyNkZWZpbmUgSU9QMzMxX1BCQkFSNSAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNkIwKQorI2RlZmluZSBJT1AzMzFfUEJMUjUgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2QjQpCisjZGVmaW5lIElPUDMzMV9QQkRTQ1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDZCOCkKKy8qIFJlc2VydmVkIDB4MDAwMDA2QkMgKi8KKyNkZWZpbmUgSU9QMzMxX1BNQlIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNkMwKQorLyogUmVzZXJ2ZWQgMHgwMDAwMDZDNCB0aHJvdWdoIDB4MDAwMDA2REMgKi8KKyNkZWZpbmUgSU9QMzMxX1BNQlIxICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNkUwKQorI2RlZmluZSBJT1AzMzFfUE1CUjIgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA2RTQpCisKKyNkZWZpbmUgSU9QMzMxX1BCQ1JfRU4gICAgMHgxCisKKyNkZWZpbmUgSU9QMzMxX1BCSVNSX0JPT1JfRVJSIDB4MQorCisKKworLyogUGVyaXBoZXJhbCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHVuaXQgMHgwMDAwMDcwMCB0aHJvdWdoIDB4MDAwNzdGICovCisvKiBJbnRlcm5hbCBhcmJpdHJhdGlvbiB1bml0IDB4MDAwMDA3ODAgdGhyb3VnaCAweDAwMDdCRiAqLworCisvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLworI2RlZmluZSBJT1AzMzFfSU5UQ1RMMCAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3OTApCisjZGVmaW5lIElPUDMzMV9JTlRDVEwxICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDc5NCkKKyNkZWZpbmUgSU9QMzMxX0lOVFNUUjAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwNzk4KQorI2RlZmluZSBJT1AzMzFfSU5UU1RSMSAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3OUMpCisjZGVmaW5lIElPUDMzMV9JSU5UU1JDMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdBMCkKKyNkZWZpbmUgSU9QMzMxX0lJTlRTUkMxICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0E0KQorI2RlZmluZSBJT1AzMzFfRklOVFNSQzAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3QTgpCisjZGVmaW5lIElPUDMzMV9GSU5UU1JDMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdBQykKKyNkZWZpbmUgSU9QMzMxX0lQUjAgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0IwKQorI2RlZmluZSBJT1AzMzFfSVBSMSAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3QjQpCisjZGVmaW5lIElPUDMzMV9JUFIyICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdCOCkKKyNkZWZpbmUgSU9QMzMxX0lQUjMgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0JDKQorI2RlZmluZSBJT1AzMzFfSU5UQkFTRSAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3QzApCisjZGVmaW5lIElPUDMzMV9JTlRTSVpFICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdDNCkKKyNkZWZpbmUgSU9QMzMxX0lJTlRWRUMgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0M4KQorI2RlZmluZSBJT1AzMzFfRklOVFZFQyAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3Q0MpCisKKworLyogVGltZXJzICovCisKKyNkZWZpbmUgSU9QMzMxX1RVX1RNUjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdEMCkKKyNkZWZpbmUgSU9QMzMxX1RVX1RNUjEJCSh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdENCkKKworI2RlZmluZSBJT1AzMzFfVE1SX1RDCQkweDAxCisjZGVmaW5lCUlPUDMzMV9UTVJfRU4JCTB4MDIKKyNkZWZpbmUgSU9QMzMxX1RNUl9SRUxPQUQJMHgwNAorI2RlZmluZQlJT1AzMzFfVE1SX1BSSVZJTEVHRUQJMHgwOQorCisjZGVmaW5lCUlPUDMzMV9UTVJfUkFUSU9fMV8xCTB4MDAKKyNkZWZpbmUJSU9QMzMxX1RNUl9SQVRJT180XzEJMHgxMAorI2RlZmluZQlJT1AzMzFfVE1SX1JBVElPXzhfMQkweDIwCisjZGVmaW5lCUlPUDMzMV9UTVJfUkFUSU9fMTZfMQkweDMwCisKKyNkZWZpbmUgSU9QMzMxX1RVX1RDUjAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0Q4KQorI2RlZmluZSBJT1AzMzFfVFVfVENSMSAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3REMpCisjZGVmaW5lIElPUDMzMV9UVV9UUlIwICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdFMCkKKyNkZWZpbmUgSU9QMzMxX1RVX1RSUjEgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAwN0U0KQorI2RlZmluZSBJT1AzMzFfVFVfVElTUiAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDA3RTgpCisjZGVmaW5lIElPUDMzMV9UVV9XRFRDUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDdFQykKKworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSU9QMzMxKQorI2RlZmluZQlJT1AzMzFfVElDS19SQVRFCTI2NjAwMDAwMAkvKiAyNjYgTUh6IElCIGNsb2NrICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0lPUDMzMV9TVEVQRCkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9JUTgwMzMzKQorI3VuZGVmIElPUDMzMV9USUNLX1JBVEUKKyNkZWZpbmUgSU9QMzMxX1RJQ0tfUkFURQkzMzMwMDAwMDAJLyogMzMzIE1oeiBJQiBjbG9jayAqLworI2VuZGlmCisKKy8qIEFwcGxpY2F0aW9uIGFjY2VsZXJhdG9yIHVuaXQgMHgwMDAwMDgwMCAtIDB4MDAwMDA4RkYgKi8KKyNkZWZpbmUgSU9QMzMxX0FBVV9BQ1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgwMCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9BU1IgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgwNCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9BREFSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgwOCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9BTkRBUiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgwQykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgxMCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgxNCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIzICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgxOCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI0ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgxQykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI1ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgyQykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI2ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgzMCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI3ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgzNCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI4ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgzOCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVI5ICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg0MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg0NCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg0OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg0QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxMyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg1MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxNCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg1NCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxNSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg1OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxNiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg1QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxNyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg2NCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxOCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg2OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIxOSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg2QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg3MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg3NCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg3OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyMyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg3QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyNCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg4MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyNSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg4OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyNiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg4QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyNyAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg5MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyOCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg5NCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIyOSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg5OCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIzMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg5QykKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIzMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDhBMCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9TQVIzMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDhBNCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9EQVIgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgyMCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9BQkNSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgyNCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9BRENSICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgyOCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9FRENSMCAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDgzYykKKyNkZWZpbmUgSU9QMzMxX0FBVV9FRENSMSAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg2MCkKKyNkZWZpbmUgSU9QMzMxX0FBVV9FRENSMiAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMDg4NCkKKworCisjZGVmaW5lIElPUDMzMV9TUERTQ1IJICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE1QzApCisjZGVmaW5lIElPUDMzMV9QUERTQ1IJICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE1QzgpCisvKiBTU1Agc2VyaWFsIHBvcnQgdW5pdCAweDAwMDAxNjAwIC0gMHgwMDAwMTY3RiAqLworCisvKiBJMkMgYnVzIGludGVyZmFjZSB1bml0IDB4MDAwMDE2ODAgLSAweDAwMDAxNkZGICovCisvKiBmb3IgSTJDIGJpdCBkZWZzIHNlZSBkcml2ZXJzL2kyYy9pMmMtaW9wM3h4LmggKi8KKworI2RlZmluZSBJT1AzMzFfSUNSMCAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE2ODApCisjZGVmaW5lIElPUDMzMV9JU1IwICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMTY4NCkKKyNkZWZpbmUgSU9QMzMxX0lTQVIwICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAxNjg4KQorI2RlZmluZSBJT1AzMzFfSURCUjAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE2OEMpCisvKiBSZXNlcnZlZCAweDAwMDAxNjkwICovCisjZGVmaW5lIElPUDMzMV9JQk1SMCAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMTY5NCkKKy8qIFJlc2VydmVkIDB4MDAwMDE2OTggKi8KKy8qIFJlc2VydmVkIDB4MDAwMDE2OUMgKi8KKyNkZWZpbmUgSU9QMzMxX0lDUjEgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAxNkEwKQorI2RlZmluZSBJT1AzMzFfSVNSMSAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE2QTQpCisjZGVmaW5lIElPUDMzMV9JU0FSMSAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMTZBOCkKKyNkZWZpbmUgSU9QMzMxX0lEQlIxICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAxNkFDKQorI2RlZmluZSBJT1AzMzFfSUJNUjEgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE2QjQpCisvKiBSZXNlcnZlZCAweDAwMDAxNkI4IHRocm91Z2ggMHgwMDAwMTZGRiAqLworCisvKiAweDAwMDAxNzAwIHRocm91Z2ggMHgwMDAwMTcyQyAgVUFSVCAwICovCisKKy8qIFJlc2VydmVkIDB4MDAwMDE3MzAgdGhyb3VnaCAweDAwMDAxNzNGICovCisKKy8qIDB4MDAwMDE3NDAgdGhyb3VnaCAweDAwMDAxNzZDIFVBUlQgMSAqLworCisjZGVmaW5lIElPUDMzMV9VQVJUMF9QSFlTICAoSU9QMzMxX1BIWVNfTUVNX0JBU0UgfCAweDAwMDAxNzAwKQkvKiBVQVJUICMxIHBoeXNpY2FsICovCisjZGVmaW5lIElPUDMzMV9VQVJUMV9QSFlTICAoSU9QMzMxX1BIWVNfTUVNX0JBU0UgfCAweDAwMDAxNzQwKQkvKiBVQVJUICMyIHBoeXNpY2FsICovCisjZGVmaW5lIElPUDMzMV9VQVJUMF9WSVJUICAoSU9QMzMxX1ZJUlRfTUVNX0JBU0UgfCAweDAwMDAxNzAwKSAvKiBVQVJUICMxIHZpcnR1YWwgYWRkciAqLworI2RlZmluZSBJT1AzMzFfVUFSVDFfVklSVCAgKElPUDMzMV9WSVJUX01FTV9CQVNFIHwgMHgwMDAwMTc0MCkgLyogVUFSVCAjMiB2aXJ0dWFsIGFkZHIgKi8KKworLyogUmVzZXJ2ZWQgMHgwMDAwMTc3MCB0aHJvdWdoIDB4MDAwMDE3N0YgKi8KKworLyogR2VuZXJhbCBQdXJwb3NlIEkvTyBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgSU9QMzMxX0dQT0UgICAgICAgKHZvbGF0aWxlIHUzMiAqKUlPUDMzMV9SRUdfQUREUigweDAwMDAxNzgwKQorI2RlZmluZSBJT1AzMzFfR1BJRCAgICAgICAodm9sYXRpbGUgdTMyICopSU9QMzMxX1JFR19BRERSKDB4MDAwMDE3ODQpCisjZGVmaW5lIElPUDMzMV9HUE9EICAgICAgICh2b2xhdGlsZSB1MzIgKilJT1AzMzFfUkVHX0FERFIoMHgwMDAwMTc4OCkKKworLyogUmVzZXJ2ZWQgMHgwMDAwMTc4YyB0aHJvdWdoIDB4MDAwMDE5ZmYgKi8KKworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHZvaWQgaW9wMzMxX21hcF9pbyh2b2lkKTsKK2V4dGVybiB2b2lkIGlvcDMzMV9pbml0X2lycSh2b2lkKTsKK2V4dGVybiB2b2lkIGlvcDMzMV90aW1lX2luaXQodm9pZCk7CisjZW5kaWYKKworI2VuZGlmIC8vIF9JT1AzMzFfSFdfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pcTMxMjQ0LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXEzMTI0NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzdjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXEzMTI0NC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLWlvcDN4eC9pcTMxMjQ0LmgKKyAqCisgKiBJbnRlbCBJUTMxMjQ0IGV2YWx1YXRpb24gYm9hcmQgcmVnaXN0ZXJzCisgKi8KKworI2lmbmRlZiBfSVEzMTI0NF9IXworI2RlZmluZSBfSVEzMTI0NF9IXworCisjZGVmaW5lCUlRMzEyNDRfRkxBU0hCQVNFCTB4ZjAwMDAwMDAJLyogRmxhc2ggKi8KKyNkZWZpbmUJSVEzMTI0NF9GTEFTSFNJWkUJMHgwMDgwMDAwMAorI2RlZmluZQlJUTMxMjQ0X0ZMQVNIV0lEVEgJMgorCisjZGVmaW5lIElRMzEyNDRfVUFSVAkJMHhmZTgwMDAwMAkvKiBVQVJUICMxICovCisjZGVmaW5lIElRMzEyNDRfN1NFR18xCQkweGZlODQwMDAwCS8qIDctU2VnbWVudCBNU0IgKi8KKyNkZWZpbmUgSVEzMTI0NF83U0VHXzAJCTB4ZmU4NTAwMDAJLyogNy1TZWdtZW50IExTQiAoV08pICovCisjZGVmaW5lIElRMzEyNDRfUk9UQVJZX1NXCTB4ZmU4ZDAwMDAJLyogUm90YXJ5IFN3aXRjaCAqLworI2RlZmluZSBJUTMxMjQ0X0JBVFRfU1RBVAkweGZlOGYwMDAwCS8qIEJhdHRlcnkgU3RhdHVzICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBpcTMxMjQ0X21hcF9pbyh2b2lkKTsKKyNlbmRpZgorCisjZW5kaWYJLy8gX0lRMzEyNDRfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pcTgwMzIxLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMyMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODcyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMyMS5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLWlvcDN4eC9pcTgwMzIxLmgKKyAqCisgKiBJbnRlbCBJUTgwMzIxIGV2YWx1YXRpb24gYm9hcmQgcmVnaXN0ZXJzCisgKi8KKworI2lmbmRlZiBfSVE4MDMyMV9IXworI2RlZmluZSBfSVE4MDMyMV9IXworCisjZGVmaW5lCUlRODAzMjFfRkxBU0hCQVNFCTB4ZjAwMDAwMDAJLyogRmxhc2ggKi8KKyNkZWZpbmUJSVE4MDMyMV9GTEFTSFNJWkUJMHgwMDgwMDAwMAorI2RlZmluZQlJUTgwMzIxX0ZMQVNIV0lEVEgJMQorCisjZGVmaW5lIElRODAzMjFfVUFSVAkJMHhmZTgwMDAwMAkvKiBVQVJUICMxICovCisjZGVmaW5lIElRODAzMjFfN1NFR18xCQkweGZlODQwMDAwCS8qIDctU2VnbWVudCBNU0IgKi8KKyNkZWZpbmUgSVE4MDMyMV83U0VHXzAJCTB4ZmU4NTAwMDAJLyogNy1TZWdtZW50IExTQiAoV08pICovCisjZGVmaW5lIElRODAzMjFfUk9UQVJZX1NXCTB4ZmU4ZDAwMDAJLyogUm90YXJ5IFN3aXRjaCAqLworI2RlZmluZSBJUTgwMzIxX0JBVFRfU1RBVAkweGZlOGYwMDAwCS8qIEJhdHRlcnkgU3RhdHVzICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBpcTgwMzIxX21hcF9pbyh2b2lkKTsKKyNlbmRpZgorCisjZW5kaWYJLy8gX0lRODAzMjFfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pcTgwMzMxLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMzMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjhlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMzMS5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLWlvcDN4eC9pcTgwMzMxLmgKKyAqCisgKiBJbnRlbCBJUTgwMzMxIGV2YWx1YXRpb24gYm9hcmQgcmVnaXN0ZXJzCisgKi8KKworI2lmbmRlZiBfSVE4MDMzMV9IXworI2RlZmluZSBfSVE4MDMzMV9IXworCisjZGVmaW5lCUlRODAzMzFfRkxBU0hCQVNFCTB4YzAwMDAwMDAJLyogRmxhc2ggKi8KKyNkZWZpbmUJSVE4MDMzMV9GTEFTSFNJWkUJMHgwMDgwMDAwMAorI2RlZmluZQlJUTgwMzMxX0ZMQVNIV0lEVEgJMQorCisjZGVmaW5lIElRODAzMzFfN1NFR18xCQkweGNlODQwMDAwCS8qIDctU2VnbWVudCBNU0IgKi8KKyNkZWZpbmUgSVE4MDMzMV83U0VHXzAJCTB4Y2U4NTAwMDAJLyogNy1TZWdtZW50IExTQiAoV08pICovCisjZGVmaW5lIElRODAzMzFfUk9UQVJZX1NXCTB4Y2U4ZDAwMDAJLyogUm90YXJ5IFN3aXRjaCAqLworI2RlZmluZSBJUTgwMzMxX0JBVFRfU1RBVAkweGNlOGYwMDAwCS8qIEJhdHRlcnkgU3RhdHVzICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBpcTgwMzMxX21hcF9pbyh2b2lkKTsKKyNlbmRpZgorCisjZW5kaWYJLy8gX0lRODAzMzFfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pcTgwMzMyLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZmZmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXE4MDMzMi5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLWlvcDN4eC9pcTgwMzMyLmgKKyAqCisgKiBJbnRlbCBJUTgwMzMyIGV2YWx1YXRpb24gYm9hcmQgcmVnaXN0ZXJzCisgKi8KKworI2lmbmRlZiBfSVE4MDMzMl9IXworI2RlZmluZSBfSVE4MDMzMl9IXworCisjZGVmaW5lCUlRODAzMzJfRkxBU0hCQVNFCTB4YzAwMDAwMDAJLyogRmxhc2ggKi8KKyNkZWZpbmUJSVE4MDMzMl9GTEFTSFNJWkUJMHgwMDgwMDAwMAorI2RlZmluZQlJUTgwMzMyX0ZMQVNIV0lEVEgJMQorCisjZGVmaW5lIElRODAzMzJfN1NFR18xCQkweGNlODQwMDAwCS8qIDctU2VnbWVudCBNU0IgKi8KKyNkZWZpbmUgSVE4MDMzMl83U0VHXzAJCTB4Y2U4NTAwMDAJLyogNy1TZWdtZW50IExTQiAoV08pICovCisjZGVmaW5lIElRODAzMzJfUk9UQVJZX1NXCTB4Y2U4ZDAwMDAJLyogUm90YXJ5IFN3aXRjaCAqLworI2RlZmluZSBJUTgwMzMyX0JBVFRfU1RBVAkweGNlOGYwMDAwCS8qIEJhdHRlcnkgU3RhdHVzICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBpcTgwMzMyX21hcF9pbyh2b2lkKTsKKyNlbmRpZgorCisjZW5kaWYJLy8gX0lRODAzMzJfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYzAzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXJxcy5oCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvaXJxcy5oCisgKgorICogQ29weXJpZ2h0OgkoQykgMjAwMS0yMDAzIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKy8qCisgKiBDaGlwc2V0LXNwZWNpZmljIGJpdHMKKyAqLworI2lmZGVmIENPTkZJR19BUkNIX0lPUDMyMQorI2luY2x1ZGUgImlvcDMyMS1pcnFzLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lPUDMzMQorI2luY2x1ZGUgImlvcDMzMS1pcnFzLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ3MzVjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L21lbW9yeS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvbWVtb3J5LmgKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2lmbmRlZiBDT05GSUdfQVJDSF9JT1AzMzEKKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4YTAwMDAwMDBVTCkKKyNlbHNlCisjZGVmaW5lIFBIWVNfT0ZGU0VUCSgweDAwMDAwMDAwVUwpCisjZW5kaWYKKworLyoKKyAqIFZpcnR1YWwgdmlldyA8LT4gUENJIERNQSB2aWV3IG1lbW9yeSBhZGRyZXNzIHRyYW5zbGF0aW9ucworICogdmlydF90b19idXM6IFVzZWQgdG8gdHJhbnNsYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdG8gYW4KKyAqCQlhZGRyZXNzIHN1aXRhYmxlIHRvIGJlIHBhc3NlZCB0byBzZXRfZG1hX2FkZHIKKyAqIGJ1c190b192aXJ0OiBVc2VkIHRvIGNvbnZlcnQgYW4gYWRkcmVzcyBmb3IgRE1BIG9wZXJhdGlvbnMKKyAqCQl0byBhbiBhZGRyZXNzIHRoYXQgdGhlIGtlcm5lbCBjYW4gdXNlLgorICovCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JT1AzMjEpCisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQkoKChfX3ZpcnRfdG9fcGh5cyh4KSkgJiB+KCpJT1AzMjFfSUFUVlIyKSkgfCAoKCpJT1AzMjFfSUFCQVIyKSAmIDB4ZmZmZmZmZjApKQorI2RlZmluZSBfX2J1c190b192aXJ0KHgpICAgIChfX3BoeXNfdG9fdmlydCgoKHgpICYgfigqSU9QMzIxX0lBTFIyKSkgfCAoICpJT1AzMjFfSUFUVlIyKSkpCisKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfSU9QMzMxKQorCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJKCgoX192aXJ0X3RvX3BoeXMoeCkpICYgfigqSU9QMzMxX0lBVFZSMikpIHwgKCgqSU9QMzMxX0lBQkFSMikgJiAweGZmZmZmZmYwKSkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KSAgICAoX19waHlzX3RvX3ZpcnQoKCh4KSAmIH4oKklPUDMzMV9JQUxSMikpIHwgKCAqSU9QMzMxX0lBVFZSMikpKQorCisjZW5kaWYKKworI2RlZmluZSBQRk5fVE9fTklEKGFkZHIpCSgwKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmNDA0ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9wYXJhbS5oCkBAIC0wLDAgKzEsMyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvcGFyYW0uaAorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY2YWU4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC9zeXN0ZW0uaApAQCAtMCwwICsxLDM1IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3N5c3RlbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMSBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9yZXNldChjaGFyIG1vZGUpCit7CisjaWZkZWYgQ09ORklHX0FSQ0hfSU9QMzIxCisgICAgKklPUDMyMV9QQ1NSID0gMHgzMDsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSU9QMzMxCisgICAgKklPUDMzMV9QQ1NSID0gMHgzMDsKKyNlbmRpZgorCisJaWYgKCAxICYmIG1vZGUgPT0gJ3MnKSB7CisJCS8qIEp1bXAgaW50byBST00gYXQgYWRkcmVzcyAwICovCisJCWNwdV9yZXNldCgwKTsKKwl9IGVsc2UgeworCQkvKiBObyBvbi1jaGlwIHJlc2V0IGNhcGFiaWxpdHkgKi8KKwkJY3B1X3Jlc2V0KDApOworCX0KK30KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDE4N2ZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3RpbWV4LmgKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC90aW1leC5oCisgKgorICogSU9QM3h4IGFyY2hpdGVjdHVyZSB0aW1leCBzcGVjaWZpY2F0aW9ucworICovCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSVE4MDMyMSkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9JUTMxMjQ0KQorCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURSBJT1AzMjFfVElDS19SQVRFCisKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfSVE4MDMzMSkgfHwgZGVmaW5lZChDT05GSUdfTUFDSF9JUTgwMzMyKQorCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURSBJT1AzMzFfVElDS19SQVRFCisKKyNlbHNlCisKKyNlcnJvciAiTm8gSU9QM3h4IHRpbWV4IGluZm9ybWF0aW9uIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmI4ODc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWlvcDN4eC91bmNvbXByZXNzLmgKKyAqLworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2VyaWFsX3JlZy5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSU9QMzIxCisjZGVmaW5lIFVUWVBFIHVuc2lnbmVkIGNoYXIgKgorI2VsaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JT1AzMzEpCisjZGVmaW5lIFVUWVBFIHUzMiAqCisjZWxzZQorI2Vycm9yICJNaXNzaW5nIElPUDN4eCBhcmNoIHR5cGUgZGVmIgorI2VuZGlmCisKK3N0YXRpYyB2b2xhdGlsZSBVVFlQRSB1YXJ0X2Jhc2U7CisKKyNkZWZpbmUgVFhfRE9ORSAoVUFSVF9MU1JfVEVNVHxVQVJUX0xTUl9USFJFKQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCXdoaWxlICgodWFydF9iYXNlW1VBUlRfTFNSXSAmIFRYX0RPTkUpICE9IFRYX0RPTkUpOworCSp1YXJ0X2Jhc2UgPSBjOworfQorCisvKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykgeworCQlwdXRjKCpzKTsKKwkJaWYgKCpzID09ICdcbicpCisJCQlwdXRjKCdccicpOworCQlzKys7CisJfQorfQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXJjaF9kZWNvbXBfc2V0dXAodW5zaWduZWQgbG9uZyBhcmNoX2lkKQoreworICAgICAgICBpZihtYWNoaW5lX2lzX2lxODAzMjEoKSkKKwkJCXVhcnRfYmFzZSA9ICh2b2xhdGlsZSBVVFlQRSlJUTgwMzIxX1VBUlQ7CisJCWVsc2UgaWYobWFjaGluZV9pc19pcTMxMjQ0KCkpCisJCQl1YXJ0X2Jhc2UgPSAodm9sYXRpbGUgVVRZUEUpSVEzMTI0NF9VQVJUOworCQllbHNlIGlmKG1hY2hpbmVfaXNfaXE4MDMzMSgpIHx8IG1hY2hpbmVfaXNfaXE4MDMzMigpKQorCQkJdWFydF9iYXNlID0gKHZvbGF0aWxlIFVUWVBFKUlPUDMzMV9VQVJUMF9QSFlTOworCQllbHNlCisJCQl1YXJ0X2Jhc2UgPSAodm9sYXRpbGUgVVRZUEUpMHhmZTgwMDAwMDsKK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCV9fYXJjaF9kZWNvbXBfc2V0dXAoYXJjaF9pZCkKKyNkZWZpbmUgYXJjaF9kZWNvbXBfd2RvZygpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzFkMmE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3ZtYWxsb2MuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW9wM3h4L3ZtYWxsb2MuaAorICovCisKKy8qCisgKiBKdXN0IGFueSBhcmJpdHJhcnkgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyBWTSBhcmVhOiB0aGUKKyAqIGN1cnJlbnQgOE1CIHZhbHVlIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgOE1CICJob2xlIiBhZnRlciB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB1bnRpbCB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN0YXJ0cy4gIFRoYXQgbWVhbnMgdGhhdAorICogYW55IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdpbGwgaG9wZWZ1bGx5IGJlIGNhdWdodC4KKyAqIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2VlbiBlYWNoIHZtYWxsb2NlZAorICogYXJlYSBmb3IgdGhlIHNhbWUgcmVhc29uLiA7KQorICovCisjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUCSAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfVk1BRERSKHgpICgodW5zaWduZWQgbG9uZykoeCkpCisvLyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4ZTgwMDAwMDApCisvKiBpbmNyZWFzZSB1c2FibGUgcGh5c2ljYWwgUkFNIHRvIH45OTJNIHBlciBSTUsgKi8KKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4ZmUwMDAwMDApCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjMxZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsNDAgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworCQkubWFjcm8gIGFkZHJ1YXJ0LHJ4CisJCW1yYwlwMTUsIDAsIFxyeCwgYzEsIGMwCisJCXRzdAlccngsICMxCQkJQCBNTVUgZW5hYmxlZD8KKwkJbW92ZXEJXHJ4LCAjMHhjMDAwMDAwMAlAIFBoeXNpY2FsIGJhc2UKKwkJbW92bmUJXHJ4LCAjMHhmZTAwMDAwMAlAIHZpcnR1YWwgYmFzZQorCQlvcnJuZQlccngsIFxyeCwgIzB4MDBmMDAwMDAKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMDAzMDAwMAorI2lmZGVmCV9fQVJNRUJfXworCQlvcnIJXHJ4LCBccngsICMweDAwMDAwMDAzCisjZW5kaWYKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyYglccmQsIFtccnhdCisJCS5lbmRtCisKKwkJLm1hY3JvCWJ1c3l1YXJ0LHJkLHJ4CisxMDAyOgkJbGRyYglccmQsIFtccngsICMweDE0XQorCQl0c3QJXHJkLCAjMHgyMAorCQliZXEJMTAwMmIKKwkJLmVuZG0KKworCQkubWFjcm8Jd2FpdHVhcnQscmQscngKKwkJbm9wCisJCW5vcAorCQlub3AKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYjM1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2RtYS5oCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2RtYS5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZmZmZmZmZmYKKworLyogTm8gRE1BICovCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMAorCisjZW5kaWYgLyogX0FTTV9BUkNIX0RNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2VucDI2MTEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZW5wMjYxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYWU4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2VucDI2MTEuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9lbnAyNjExLmgKKyAqCisgKiBSZWdpc3RlciBhbmQgb3RoZXIgZGVmaW5lcyBmb3IgUmFkaXN5cyBFTlAtMjYxMQorICoKKyAqIENyZWF0ZWQgMjAwNCBieSBMZW5uZXJ0IEJ1eXRlbmhlayBmcm9tIHRoZSBpeGRwMngwMSBjb2RlLiAgVGhlCisgKiBvcmlnaW5hbCB2ZXJzaW9uIGNhcnJpZXMgdGhlIGZvbGxvd2luZyBub3RpY2VzOgorICoKKyAqIE9yaWdpbmFsIEF1dGhvcjogTmFlZW0gQWZ6YWwgPG5hZWVtLm0uYWZ6YWxAaW50ZWwuY29tPgorICogTWFpbnRhaW5lcjogRGVlcGFrIFNheGVuYSA8ZHNheGVuYUBwbGV4aXR5Lm5ldD4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgSW50ZWwgQ29ycC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRU5QMjYxMV9ICisjZGVmaW5lIF9fRU5QMjYxMV9ICisKKyNkZWZpbmUgRU5QMjYxMV9HUElPX1NDTAkweDA3CisjZGVmaW5lIEVOUDI2MTFfR1BJT19TREEJMHgwNgorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9lbnRyeS1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYTRlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZW50cnktbWFjcm8uUworICoKKyAqIExvdy1sZXZlbCBJUlEgaGVscGVyIG1hY3JvcyBmb3IgSVhQMjAwMC1iYXNlZCBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCisJCS5tYWNybyAgZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8gIGdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCisJCW1vdglcaXJxbnIsICMweDAgICAgICAgICAgICAgIEBjbGVhciBvdXQgaXJxbnIgYXMgZGVmYXVsdAorICAgICAgICAgICAgICAgIG1vdglcYmFzZSwgIzB4ZmUwMDAwMDAKKwkJb3JyCVxiYXNlLCBcYmFzZSwgIzB4MDBlMDAwMDAKKwkJb3JyCVxiYXNlLCBcYmFzZSwgIzB4MDgKKwkJbGRyCVxpcnFzdGF0LCBbXGJhc2VdICAgICAgICAgQCBnZXQgaW50ZXJydXB0cworCisJCWNtcAlcaXJxc3RhdCwgIzAKKwkJYmVxCTEwMDFmCisKKwkJY2x6ICAgICBcaXJxbnIsIFxpcnFzdGF0CisJCW1vdiAgICAgXGJhc2UsICMzMQorCQlzdWJzICAgIFxpcnFuciwgXGJhc2UsIFxpcnFucgorCisJCS8qCisJCSAqIFdlIGhhbmRsZSBQQ0lBIGFuZCBQQ0lCIGhlcmUgc28gd2UgZG9uJ3QgaGF2ZSBhbgorCQkgKiBleHRyYSBsYXllciBvZiBjb2RlIGp1c3QgdG8gY2hlY2sgdGhlc2UgdHdvIGJpdHMuCisJCSAqLworCQljbXAJXGlycW5yLCAjSVJRX0lYUDIwMDBfUENJCisJCWJuZQkxMDAxZgorCisJCW1vdglcYmFzZSwgIzB4ZmUwMDAwMDAKKwkJb3JyCVxiYXNlLCBcYmFzZSwgIzB4MDBjMDAwMDAKKwkJb3JyCVxiYXNlLCBcYmFzZSwgIzB4MDAwMDAxMDAKKwkJb3JyCVxiYXNlLCBcYmFzZSwgIzB4MDAwMDAwNTgKKwkJbGRyCVxpcnFzdGF0LCBbXGJhc2VdCisKKwkJbW92CVx0bXAsICMoMTw8MjYpCisJCXRzdAlcaXJxc3RhdCwgXHRtcAorCQltb3ZuZQlcaXJxbnIsICNJUlFfSVhQMjAwMF9QQ0lBCisJCWJuZQkxMDAxZgorCisJCW1vdglcdG1wLCAjKDE8PDI3KQorCQl0c3QJXGlycXN0YXQsIFx0bXAKKwkJbW92bmUJXGlycW5yLCAjSVJRX0lYUDIwMDBfUENJQgorCisxMDAxOgorCQkuZW5kbQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2dwaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NjM0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2dwaW8uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9peHAyMDAwLWdwaW8uaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZSwgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisvKgorICogSVhQMjAwMCBHUElPIGluL291dCwgZWRnZS9sZXZlbCBkZXRlY3Rpb24gZm9yIElSUXM6CisgKiBJUlFzIGFyZSBnZW5lcmF0ZWQgb24gRmFsbGluZy1lZGdlLCBSaXNpbmctRWRnZSwgTGV2ZWwtbG93LCBMZXZlbC1IaWdoCisgKiBvciBib3RoIEZhbGxpbmctZWRnZSBhbmQgUmlzaW5nLWVkZ2UuICAKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJlZm9yZSogdGhlIGNvcnJlc3BvbmRpbmcgSVJRIGlzIHJlZ2lzdGVyZC4KKyAqIFVzZSB0aGlzIGluc3RlYWQgb2YgZGlyZWN0bHkgc2V0dGluZyB0aGUgR1BJTyByZWdpc3RlcnMuCisgKiBHUElPcyBtYXkgYWxzbyBiZSB1c2VkIGFzIEdQSU9zIChlLmcuIGZvciBlbXVsYXRpbmcgaTJjL3NtYikKKyAqLworI2lmbmRlZiBfQVNNX0FSQ0hfSVhQMjAwMF9HUElPX0hfCisjZGVmaW5lIF9BU01fQVJDSF9JWFAyMDAwX0dQSU9fSF8KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgR1BJT19PVVQJCQkweDAKKyNkZWZpbmUgR1BJT19JTgkJCQkweDgwCisKKyNkZWZpbmUgSVhQMjAwMF9HUElPX0xPVwkJMAorI2RlZmluZSBJWFAyMDAwX0dQSU9fSElHSAkJMQorCisjZGVmaW5lIEdQSU9fTk9fRURHRVMgICAgICAgICAgIAkwCisjZGVmaW5lIEdQSU9fRkFMTElOR19FREdFICAgICAgIAkxCisjZGVmaW5lIEdQSU9fUklTSU5HX0VER0UgICAgICAgIAkyCisjZGVmaW5lIEdQSU9fQk9USF9FREdFUyAgICAgICAgIAkzCisjZGVmaW5lIEdQSU9fTEVWRUxfTE9XICAgICAgICAgIAk0CisjZGVmaW5lIEdQSU9fTEVWRUxfSElHSCAgICAgICAgIAk4CisKK2V4dGVybiB2b2lkIHNldF9HUElPX0lSUV9lZGdlKGludCBncGlvX25yLCBpbnQgZWRnZSk7CitleHRlcm4gdm9pZCBzZXRfR1BJT19JUlFfbGV2ZWwoaW50IGdwaW9fbnIsIGludCBsZXZlbCk7CitleHRlcm4gdm9pZCBncGlvX2xpbmVfY29uZmlnKGludCBsaW5lLCBpbnQgc3R5bGUpOworCitzdGF0aWMgaW5saW5lIGludCBncGlvX2xpbmVfZ2V0KGludCBsaW5lKQoreworCXJldHVybiAoKCgqSVhQMjAwMF9HUElPX1BMUikgPj4gbGluZSkgJiAxKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdwaW9fbGluZV9zZXQoaW50IGxpbmUsIGludCB2YWx1ZSkKK3sKKwlpZiAodmFsdWUgPT0gSVhQMjAwMF9HUElPX0hJR0gpIHsKKwkJaXhwX3JlZ193cml0ZShJWFAyMDAwX0dQSU9fUE9TUiwgQklUKGxpbmUpKTsKKwl9IGVsc2UgaWYgKHZhbHVlID09IElYUDIwMDBfR1BJT19MT1cpCisJCWl4cF9yZWdfd3JpdGUoSVhQMjAwMF9HUElPX1BPQ1IsIEJJVChsaW5lKSk7Cit9CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCisjZW5kaWYgLyogQVNNX0FSQ0hfSVhQMjAwMF9HUElPX0hfICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2VhNzgxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2hhcmR3YXJlLmgKKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgSVhQMjQwMC8yODAwIGJhc2VkIHN5c3RlbXMKKyAqCisgKiBPcmlnaW5hbCBBdXRob3I6IE5hZWVtIE0gQWZ6YWwgPG5hZWVtLm0uYWZ6YWxAaW50ZWwuY29tPgorICoKKyAqIE1haW50YWluZXI6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAbXZpc3RhLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBJbnRlbCBDb3JwLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqICB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9IX18KKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9IX18KKworLyoKKyAqIFRoaXMgbmVlZHMgdG8gYmUgcGxhdGZvcm0tc3BlY2lmaWM/CisgKi8KKyNkZWZpbmUgUENJQklPU19NSU5fSU8gICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBQQ0lCSU9TX01JTl9NRU0gICAgICAgICAweDAwMDAwMDAwCisKKyNpbmNsdWRlICJpeHAyMDAwLXJlZ3MuaCIJLyogQ2hpcHNldCBSZWdpc3RlcnMgKi8KKworI2RlZmluZSBwY2liaW9zX2Fzc2lnbl9hbGxfYnVzc2VzKCkgMAorCisvKgorICogUGxhdGZvcm0gaGVscGVyIGZ1bmN0aW9ucworICovCisjaW5jbHVkZSAicGxhdGZvcm0uaCIKKworLyoKKyAqIFBsYXRmb3JtLXNwZWNpZmljIGJpdHMKKyAqLworI2luY2x1ZGUgImVucDI2MTEuaCIJCS8qIEVOUC0yNjExICovCisjaW5jbHVkZSAiaXhkcDJ4MDAuaCIJCS8qIElYRFAyNDAwLzI4MDAgKi8KKyNpbmNsdWRlICJpeGRwMngwMS5oIgkJLyogSVhEUDI0MDEvMjgwMSAqLworCisjZW5kaWYgIC8qIF9BU01fQVJDSF9IQVJEV0FSRV9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGUzYzJkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pby5oCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pby5oCisgKgorICogT3JpZ2luYWwgQXV0aG9yOiBOYWVlbSBNIEFmemFsIDxuYWVlbS5tLmFmemFsQGludGVsLmNvbT4KKyAqIE1haW50YWluZXI6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyICBJbnRlbCBDb3JwLgorICogQ29weXJnaWh0IChDKSAyMDAzLTIwMDQgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2RlZmluZSBJT19TUEFDRV9MSU1JVAkJMHhmZmZmZmZmZgorI2RlZmluZSBfX21lbV9wY2koYSkJCShhKQorI2RlZmluZSBfX19pbyhwKQkJKCh2b2lkIF9faW9tZW0gKikoKHApK0lYUDIwMDBfUENJX0lPX1ZJUlRfQkFTRSkpCisKKy8qCisgKiBUaGUgSVhQMjQwMCBiZWZvcmUgcmV2aXNpb24gQjAgYXNzZXJ0cyBieXRlIGxhbmVzIGZvciBQQ0kgSS9PCisgKiB0cmFuc2FjdGlvbnMgdGhlIG90aGVyIHdheSByb3VuZCAoTUVNIHRyYW5zYWN0aW9ucyBkb24ndCBoYXZlIHRoaXMKKyAqIGlzc3VlKSwgc28gd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zLiAgQjAgYW5kIGxhdGVyCisgKiBoYXZlIGEgYml0IHRoYXQgY2FuIGJlIHNldCB0byAxIHRvIGdldCB0aGUgJ3Byb3BlcicgYmVoYXZpb3IsIGJ1dAorICogc2luY2UgdGhhdCBpc24ndCBhdmFpbGFibGUgb24gdGhlIEE/IHJldmlzaW9ucyB3ZSBqdXN0IGtlZXAgZG9pbmcKKyAqIHRoaW5ncyBtYW51YWxseS4KKyAqLworI2RlZmluZSBhbGlnbmIoYWRkcikJCSh2b2lkIF9faW9tZW0gKikoKHVuc2lnbmVkIGxvbmcpYWRkciBeIDMpCisjZGVmaW5lIGFsaWdudyhhZGRyKQkJKHZvaWQgX19pb21lbSAqKSgodW5zaWduZWQgbG9uZylhZGRyIF4gMikKKworI2RlZmluZSBvdXRiKHYscCkJCV9fcmF3X3dyaXRlYigodiksYWxpZ25iKF9fX2lvKHApKSkKKyNkZWZpbmUgb3V0dyh2LHApCQlfX3Jhd193cml0ZXcoKHYpLGFsaWdudyhfX19pbyhwKSkpCisjZGVmaW5lIG91dGwodixwKQkJX19yYXdfd3JpdGVsKCh2KSxfX19pbyhwKSkKKworI2RlZmluZSBpbmIocCkJCSh7IHVuc2lnbmVkIGludCBfX3YgPSBfX3Jhd19yZWFkYihhbGlnbmIoX19faW8ocCkpKTsgX192OyB9KQorI2RlZmluZSBpbncocCkJCVwKKwkoeyB1bnNpZ25lZCBpbnQgX192ID0gKF9fcmF3X3JlYWR3KGFsaWdudyhfX19pbyhwKSkpKTsgX192OyB9KQorI2RlZmluZSBpbmwocCkJCVwKKwkoeyB1bnNpZ25lZCBpbnQgX192ID0gKF9fcmF3X3JlYWRsKF9fX2lvKHApKSk7IF9fdjsgfSkKKworI2RlZmluZSBvdXRzYihwLGQsbCkJCV9fcmF3X3dyaXRlc2IoYWxpZ25iKF9fX2lvKHApKSxkLGwpCisjZGVmaW5lIG91dHN3KHAsZCxsKQkJX19yYXdfd3JpdGVzdyhhbGlnbncoX19faW8ocCkpLGQsbCkKKyNkZWZpbmUgb3V0c2wocCxkLGwpCQlfX3Jhd193cml0ZXNsKF9fX2lvKHApLGQsbCkKKworI2RlZmluZSBpbnNiKHAsZCxsKQkJX19yYXdfcmVhZHNiKGFsaWduYihfX19pbyhwKSksZCxsKQorI2RlZmluZSBpbnN3KHAsZCxsKQkJX19yYXdfcmVhZHN3KGFsaWdudyhfX19pbyhwKSksZCxsKQorI2RlZmluZSBpbnNsKHAsZCxsKQkJX19yYXdfcmVhZHNsKF9fX2lvKHApLGQsbCkKKworCisjaWZkZWYgQ09ORklHX0FSQ0hfSVhEUDJYMDEKKy8qCisgKiBUaGlzIGlzIGFuIHVnbHkgaGFjayBidXQgdGhlIENTODkwMCBvbiB0aGUgMngwMSdzIGRvZXMgbm90IHNpdCBpbiBhbnkgc29ydAorICogb2YgIkkvTyBzcGFjZSIgYW5kIGlzIGp1c3QgZGlyZWN0IG1hcHBlZCBpbnRvIGEgMzItYml0LW9ubHkgYWRkcmVzc2FibGUKKyAqIGJ1cy4gVGhlIGFkZHJlc3Mgc3BhY2UgZm9yIHRoaXMgYnVzIGlzIHN1Y2ggdGhhdCB3ZSBjYW4ndCByZWFsbHkgZWFzaWx5CisgKiBtYWtlIGl0IGNvbnRpZ3VvdXMgdG8gdGhlIFBDSSBJL08gYWRkcmVzcyByYW5nZSwgYW5kIGl0IGFsc28gZG9lcyBub3QKKyAqIG5lZWQgc3dhcHBpbmcgbGlrZSBQQ0kgYWRkcmVzc2VzIGRvIChJWERQMngwMSBpcyBhIEJFIHBsYXRmb3JtKS4KKyAqIEIvQyBvZiB0aGlzIHdlIGNhbid0IHVzZSB0aGUgc3RhbmRhcmQgaW4vb3V0IGZ1bmN0aW9ucyBhbmQgbmVlZCB0bworICogcnVudGltZSBjaGVjayBpZiB0aGUgaW5jb21pbmcgYWRkcmVzcyBpcyBhIFBDSSBhZGRyZXNzIG9yIGZvcgorICogdGhlIENTODl4MC4KKyAqLworI3VuZGVmIGludworI3VuZGVmIG91dHcKKyN1bmRlZiBpbnN3CisjdW5kZWYgb3V0c3cKKworI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnN3KHUzMiBwdHIsIHZvaWQgKmJ1ZiwgaW50IGxlbmd0aCkKK3sKKwlyZWdpc3RlciB2b2xhdGlsZSB1MzIgKnBvcnQgPSAodm9sYXRpbGUgdTMyICopcHRyOworCisJLyoKKwkgKiBJcyB0aGlzIGN5Y2xlIG1lYW50IGZvciB0aGUgQ1M4OTAwPworCSAqLworCWlmICgobWFjaGluZV9pc19peGRwMjQwMSgpIHx8IG1hY2hpbmVfaXNfaXhkcDI4MDEoKSkgJiYgCisJCSgocG9ydCA+PSBJWERQMlgwMV9DUzg5MDBfVklSVF9CQVNFKSAmJiAKKwkJIChwb3J0IDw9IElYRFAyWDAxX0NTODkwMF9WSVJUX0VORCkpKSB7CisJCXU4ICpidWY4ID0gKHU4KilidWY7CisJCXJlZ2lzdGVyIHUzMiB0bXAzMjsKKworCQlkbyB7CisJCQl0bXAzMiA9ICpwb3J0OworCQkJKmJ1ZjgrKyA9ICh1OCl0bXAzMjsKKwkJCSpidWY4KysgPSAodTgpKHRtcDMyID4+IDgpOworCQl9IHdoaWxlKC0tbGVuZ3RoKTsKKworCQlyZXR1cm47CisJfQorCisJX19yYXdfcmVhZHN3KGFsaWdudyhfX19pbyhwdHIpKSxidWYsbGVuZ3RoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIG91dHN3KHUzMiBwdHIsIHZvaWQgKmJ1ZiwgaW50IGxlbmd0aCkKK3sKKwlyZWdpc3RlciB2b2xhdGlsZSB1MzIgKnBvcnQgPSAodm9sYXRpbGUgdTMyICopcHRyOworCisJLyoKKwkgKiBJcyB0aGlzIGN5Y2xlIG1lYW50IGZvciB0aGUgQ1M4OTAwPworCSAqLworCWlmICgobWFjaGluZV9pc19peGRwMjQwMSgpIHx8IG1hY2hpbmVfaXNfaXhkcDI4MDEoKSkgJiYgCisJCSgocG9ydCA+PSBJWERQMlgwMV9DUzg5MDBfVklSVF9CQVNFKSAmJiAKKwkJIChwb3J0IDw9IElYRFAyWDAxX0NTODkwMF9WSVJUX0VORCkpKSB7CisJCXJlZ2lzdGVyIHUzMiB0bXAzMjsKKwkJdTggKmJ1ZjggPSAodTgqKWJ1ZjsKKwkJZG8geworCQkJdG1wMzIgPSAqYnVmOCsrOworCQkJdG1wMzIgfD0gKCpidWY4KyspIDw8IDg7CisJCQkqcG9ydCA9IHRtcDMyOworCQl9IHdoaWxlKC0tbGVuZ3RoKTsKKwkJcmV0dXJuOworCX0KKworCV9fcmF3X3dyaXRlc3coYWxpZ253KF9fX2lvKHB0cikpLGJ1ZixsZW5ndGgpOworfQorCisKK3N0YXRpYyBpbmxpbmUgdTE2IGludyh1MzIgcHRyKQoreworCXJlZ2lzdGVyIHZvbGF0aWxlIHUzMiAqcG9ydCA9ICh2b2xhdGlsZSB1MzIgKilwdHI7CisKKwkvKgorCSAqIElzIHRoaXMgY3ljbGUgbWVhbnQgZm9yIHRoZSBDUzg5MDA/CisJICovCisJaWYgKChtYWNoaW5lX2lzX2l4ZHAyNDAxKCkgfHwgbWFjaGluZV9pc19peGRwMjgwMSgpKSAmJiAKKwkJKChwb3J0ID49IElYRFAyWDAxX0NTODkwMF9WSVJUX0JBU0UpICYmIAorCQkgKHBvcnQgPD0gSVhEUDJYMDFfQ1M4OTAwX1ZJUlRfRU5EKSkpIHsKKwkJcmV0dXJuICh1MTYpKCpwb3J0KTsgIAorCX0KKworCXJldHVybiBfX3Jhd19yZWFkdyhhbGlnbncoX19faW8ocHRyKSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgb3V0dyh1MTYgdmFsdWUsIHUzMiBwdHIpCit7CisJcmVnaXN0ZXIgdm9sYXRpbGUgdTMyICpwb3J0ID0gKHZvbGF0aWxlIHUzMiAqKXB0cjsKKworCWlmICgobWFjaGluZV9pc19peGRwMjQwMSgpIHx8IG1hY2hpbmVfaXNfaXhkcDI4MDEoKSkgJiYgCisJCSgocG9ydCA+PSBJWERQMlgwMV9DUzg5MDBfVklSVF9CQVNFKSAmJiAKKwkJIChwb3J0IDw9IElYRFAyWDAxX0NTODkwMF9WSVJUX0VORCkpKSB7CisJCSpwb3J0ID0gdmFsdWU7ICAKKwkJcmV0dXJuOworCX0KKworCV9fcmF3X3dyaXRldygodmFsdWUpLGFsaWdudyhfX19pbyhwdHIpKSk7Cit9CisjZW5kaWYJLyogSVhEUDJ4MDEgKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2lycS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTAwYjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pcnEuaApAQCAtMCwwICsxLDEzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXJxLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnAuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjZGVmaW5lIGZpeHVwX2lycShpcnEpICAoaXJxKQorCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXJxcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pcnFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlYjk2YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXJxcy5oCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9pcnFzLmgKKyAqCisgKiBPcmlnaW5hbCBBdXRob3I6IE5hZWVtIEFmemFsIDxuYWVlbS5tLmFmemFsQGludGVsLmNvbT4KKyAqIE1haW50YWluZXI6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnAuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfSVJRU19ICisjZGVmaW5lIF9JUlFTX0gKKworLyoKKyAqIERvIE5PVCBhZGQgI2lmZGVmIE1BQ0hJTkVfRk9PIGluIGhlcmUuCisgKiBTaW1weSBhZGQgeW91ciBtYWNoaW5lIElSUXMgaGVyZSBhbmQgaW5jcmVhc2UgTlJfSVJRUyBpZiBuZWVkZWQgdG8KKyAqIGhvbGQgeW91ciBtYWNoaW5lJ3MgSVJRIHRhYmxlLgorICovCisKKy8qCisgKiBTb21lIGludGVycnVwdCBudW1iZXJzIGdvIHVudXNlZCBiL2MgdGhlIElSUSBtYXNrL3VtbWFzay9zdGF0dXMKKyAqIHJlZ2lzdGVyIGhhcyB0aG9zZSBiaXQgcmVzZXJ2ZWQuIFdlIGp1c3QgbWFyayB0aG9zZSBpbnRlcnJ1cHRzCisgKiBhcyBpbnZhbGlkIGFuZCB0aGlzIGFsbG93cyB1cyB0byBkbyBtYXNrL3VubWFzayB3aXRoIGEgc2luZ2xlCisgKiBzaGlmdCBvcGVyYXRpb24gaW5zdGVhZCBvZiBoYXZpbmcgdG8gbWFwIHRoZSBJUlEgbnVtYmVyIHRvCisgKiBhIEhXIElSUSBudW1iZXIuCisgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfU09GVF9JTlQJCTAgLyogc29mdCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfRVJSU1VNCQkxIC8qIE9SIG9mIGFsbCBiaXRzIGluIEVycm9yU3RhdHVzIHJlZyovCisjZGVmaW5lCUlSUV9JWFAyMDAwX1VBUlQJCTIKKyNkZWZpbmUJSVJRX0lYUDIwMDBfR1BJTwkJMworI2RlZmluZQlJUlFfSVhQMjAwMF9USU1FUjEgICAgIAkJNAorI2RlZmluZQlJUlFfSVhQMjAwMF9USU1FUjIgICAgIAkJNQorI2RlZmluZQlJUlFfSVhQMjAwMF9USU1FUjMgICAgIAkJNgorI2RlZmluZQlJUlFfSVhQMjAwMF9USU1FUjQgICAgIAkJNworI2RlZmluZQlJUlFfSVhQMjAwMF9QTVUgICAgICAgIAkJOCAgICAgICAgICAgICAgIAorI2RlZmluZQlJUlFfSVhQMjAwMF9TUEYgICAgICAgIAkJOSAgLyogU2xvdyBwb3J0IGZyYW1lciBJUlEgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfRE1BMSAgICAgIAkJMTAKKyNkZWZpbmUJSVJRX0lYUDIwMDBfRE1BMiAgICAgIAkJMTEKKyNkZWZpbmUJSVJRX0lYUDIwMDBfRE1BMyAgICAgIAkJMTIKKyNkZWZpbmUJSVJRX0lYUDIwMDBfUENJX0RPT1JCRUxMCTEzCisjZGVmaW5lCUlSUV9JWFAyMDAwX01FX0FUVE4gICAgICAgCTE0IAorI2RlZmluZQlJUlFfSVhQMjAwMF9QQ0kgICAJCTE1IC8qIFBDSSBJTlRBIG9yIElOVEIgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfVEhEQTAgICAJCTE2IC8qIHRocmVhZCAwLTMxQSAqLworI2RlZmluZQlJUlFfSVhQMjAwMF9USERBMSAgCQkxNyAvKiB0aHJlYWQgMzItNjNBLCBJWFAyODAwIG9ubHkgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfVEhEQTIJCTE4IC8qIHRocmVhZCA2NC05NUEgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfVEhEQTMgCQkxOSAvKiB0aHJlYWQgOTYtMTI3QSwgSVhQMjgwMCBvbmx5ICovCisjZGVmaW5lCUlSUV9JWFAyMDAwX1RIREIwCQkyNCAvKiB0aHJlYWQgMC0zMUIgKi8KKyNkZWZpbmUJSVJRX0lYUDIwMDBfVEhEQjEJCTI1IC8qIHRocmVhZCAzMi02M0IsIElYUDI4MDAgb25seSAqLworI2RlZmluZQlJUlFfSVhQMjAwMF9USERCMgkJMjYgLyogdGhyZWFkIDY0LTk1QiAqLworI2RlZmluZQlJUlFfSVhQMjAwMF9USERCMwkJMjcgLyogdGhyZWFkIDk2LTEyN0IsIElYUDI4MDAgb25seSAqLworCisvKiBkZWZpbmUgZ2VuZXJpYyBHUElPcyAqLworI2RlZmluZSBJUlFfSVhQMjAwMF9HUElPMAkJMzIKKyNkZWZpbmUgSVJRX0lYUDIwMDBfR1BJTzEJCTMzCisjZGVmaW5lIElSUV9JWFAyMDAwX0dQSU8yCQkzNAorI2RlZmluZSBJUlFfSVhQMjAwMF9HUElPMwkJMzUKKyNkZWZpbmUgSVJRX0lYUDIwMDBfR1BJTzQJCTM2CisjZGVmaW5lIElSUV9JWFAyMDAwX0dQSU81CQkzNworI2RlZmluZSBJUlFfSVhQMjAwMF9HUElPNgkJMzgKKyNkZWZpbmUgSVJRX0lYUDIwMDBfR1BJTzcJCTM5CisKKy8qIHNwbGl0IG9mZiB0aGUgMiBQQ0kgc291cmNlcyAqLworI2RlZmluZSBJUlFfSVhQMjAwMF9QQ0lBCQk0MAorI2RlZmluZSBJUlFfSVhQMjAwMF9QQ0lCCQk0MQorCisjZGVmaW5lIE5SX0lYUDIwMDBfSVJRUyAgICAgICAgICAgICAgICAgNDIKKworI2RlZmluZQlJWFAyMDAwX0JPQVJEX0lSUSh4KQkJKE5SX0lYUDIwMDBfSVJRUyArICh4KSkKKworI2RlZmluZQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKGlycSkJKDEgPDwgKGlycSAtIE5SX0lYUDIwMDBfSVJRUykpCQorCisvKgorICogVGhpcyBhbGxvd3MgZm9yIGFsbCB0aGUgb24tY2hpcCBzb3VyY2VzIHBsdXMgdXAgdG8gMzIgQ1BMRCBiYXNlZAorICogSVJRcy4gU2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2guCisgKi8KKyNkZWZpbmUJSVhQMjAwMF9CT0FSRF9JUlFTCQkzMgorI2RlZmluZSBOUl9JUlFTCQkJCShOUl9JWFAyMDAwX0lSUVMgKyBJWFAyMDAwX0JPQVJEX0lSUVMpCisKKworLyogCisgKiBJWERQMjQwMCBzcGVjaWZpYyBJUlFzCisgKi8KKyNkZWZpbmUJSVJRX0lYRFAyNDAwX0lOR1JFU1NfTlBVCUlYUDIwMDBfQk9BUkRfSVJRKDApIAorI2RlZmluZQlJUlFfSVhEUDI0MDBfRU5FVAkJSVhQMjAwMF9CT0FSRF9JUlEoMSkgCisjZGVmaW5lCUlSUV9JWERQMjQwMF9NRURJQV9QQ0kJCUlYUDIwMDBfQk9BUkRfSVJRKDIpIAorI2RlZmluZQlJUlFfSVhEUDI0MDBfTUVESUFfU1AJCUlYUDIwMDBfQk9BUkRfSVJRKDMpIAorI2RlZmluZQlJUlFfSVhEUDI0MDBfU0ZfUENJCQlJWFAyMDAwX0JPQVJEX0lSUSg0KSAKKyNkZWZpbmUJSVJRX0lYRFAyNDAwX1NGX1NQCQlJWFAyMDAwX0JPQVJEX0lSUSg1KSAKKyNkZWZpbmUJSVJRX0lYRFAyNDAwX1BNQwkJSVhQMjAwMF9CT0FSRF9JUlEoNikgCisjZGVmaW5lCUlSUV9JWERQMjQwMF9UVk0JCUlYUDIwMDBfQk9BUkRfSVJRKDcpIAorCisjZGVmaW5lCU5SX0lYRFAyNDAwX0lSUVMJCSgoSVJRX0lYRFAyNDAwX1RWTSkrMSkgIAorI2RlZmluZQlJWERQMjQwMF9OUl9JUlFTCQlOUl9JWERQMjQwMF9JUlFTIC0gTlJfSVhQMjAwMF9JUlFTCisKKy8qIElYRFAyODAwIHNwZWNpZmljIElSUXMgKi8KKyNkZWZpbmUgSVJRX0lYRFAyODAwX0VHUkVTU19FTkVUCUlYUDIwMDBfQk9BUkRfSVJRKDApCisjZGVmaW5lIElSUV9JWERQMjgwMF9JTkdSRVNTX05QVQlJWFAyMDAwX0JPQVJEX0lSUSgxKQorI2RlZmluZSBJUlFfSVhEUDI4MDBfUE1DCQlJWFAyMDAwX0JPQVJEX0lSUSgyKQorI2RlZmluZSBJUlFfSVhEUDI4MDBfRkFCUklDX1BDSQkJSVhQMjAwMF9CT0FSRF9JUlEoMykKKyNkZWZpbmUgSVJRX0lYRFAyODAwX0ZBQlJJQwkJSVhQMjAwMF9CT0FSRF9JUlEoNCkKKyNkZWZpbmUgSVJRX0lYRFAyODAwX01FRElBCQlJWFAyMDAwX0JPQVJEX0lSUSg1KQorCisjZGVmaW5lCU5SX0lYRFAyODAwX0lSUVMJCSgoSVJRX0lYRFAyODAwX01FRElBKSsxKQorI2RlZmluZQlJWERQMjgwMF9OUl9JUlFTCQlOUl9JWERQMjgwMF9JUlFTIC0gTlJfSVhQMjAwMF9JUlFTCisKKy8qIAorICogSVJRcyBvbiBib3RoIElYRFAyeDAxIGJvYXJkcworICovCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX0RCXzAJCUlYUDIwMDBfQk9BUkRfSVJRKDIpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX0RCXzEJCUlYUDIwMDBfQk9BUkRfSVJRKDMpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlRBCUlYUDIwMDBfQk9BUkRfSVJRKDQpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlRCCUlYUDIwMDBfQk9BUkRfSVJRKDUpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlRDCUlYUDIwMDBfQk9BUkRfSVJRKDYpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlRECUlYUDIwMDBfQk9BUkRfSVJRKDcpCisjZGVmaW5lIElSUV9JWERQMlgwMV9TUENJX0ZJQ19JTlQJSVhQMjAwMF9CT0FSRF9JUlEoOCkKKyNkZWZpbmUgSVJRX0lYRFAyWDAxX0lQTUlfRlJPTQkJSVhQMjAwMF9CT0FSRF9JUlEoMTYpCisjZGVmaW5lIElSUV9JWERQMlgwMV8xMjVVUwkJSVhQMjAwMF9CT0FSRF9JUlEoMTcpCisjZGVmaW5lIElSUV9JWERQMlgwMV9EQl8wX0FERAkJSVhQMjAwMF9CT0FSRF9JUlEoMTgpCisjZGVmaW5lIElSUV9JWERQMlgwMV9EQl8xX0FERAkJSVhQMjAwMF9CT0FSRF9JUlEoMTkpCisjZGVmaW5lIElSUV9JWERQMlgwMV9VQVJUMQkJSVhQMjAwMF9CT0FSRF9JUlEoMjEpCisjZGVmaW5lIElSUV9JWERQMlgwMV9VQVJUMgkJSVhQMjAwMF9CT0FSRF9JUlEoMjIpCisjZGVmaW5lIElSUV9JWERQMlgwMV9GSUNfQUREX0lOVAlJWFAyMDAwX0JPQVJEX0lSUSgyNCkKKyNkZWZpbmUgSVJRX0lYRFAyWDAxX0NTODkwMAkJSVhQMjAwMF9CT0FSRF9JUlEoMjUpCisjZGVmaW5lIElSUV9JWERQMlgwMV9CQlNSQU0JCUlYUDIwMDBfQk9BUkRfSVJRKDI2KQorCisjZGVmaW5lIElYRFAyWDAxX1ZBTElEX0lSUV9NQVNLICggXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9TUENJX0RCXzApIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9TUENJX0RCXzEpIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlRBKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfU1BDSV9QTUNfSU5UQikgfCBcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyWDAxX1NQQ0lfUE1DX0lOVEMpIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9TUENJX1BNQ19JTlREKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfU1BDSV9GSUNfSU5UKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfSVBNSV9GUk9NKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfMTI1VVMpIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9EQl8wX0FERCkgfCBcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyWDAxX0RCXzFfQUREKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfVUFSVDEpIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMlgwMV9VQVJUMikgfCBcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyWDAxX0ZJQ19BRERfSU5UKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfQ1M4OTAwKSB8IFwKKwkJSVhQMjAwMF9CT0FSRF9JUlFfTUFTSyhJUlFfSVhEUDJYMDFfQkJTUkFNKSApCisKKy8qIAorICogSVhEUDI0MDEgc3BlY2lmaWMgSVJRcworICovCisjZGVmaW5lIElSUV9JWERQMjQwMV9JTlRBXzgyNTQ2CQlJWFAyMDAwX0JPQVJEX0lSUSgwKQorI2RlZmluZSBJUlFfSVhEUDI0MDFfSU5UQl84MjU0NgkJSVhQMjAwMF9CT0FSRF9JUlEoMSkKKworI2RlZmluZQlJWERQMjQwMV9WQUxJRF9JUlFfTUFTSyAoIFwKKwkJSVhEUDJYMDFfVkFMSURfSVJRX01BU0sgfCBcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyNDAxX0lOVEFfODI1NDYpIHxcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyNDAxX0lOVEJfODI1NDYpKQorCisvKgorICogSVhEUDI4MDEtc3BlY2lmaWMgSVJRcworICovCisjZGVmaW5lIElSUV9JWERQMjgwMV9SSVYJCUlYUDIwMDBfQk9BUkRfSVJRKDApCisjZGVmaW5lIElSUV9JWERQMjgwMV9DTkZHX01FRElBCQlJWFAyMDAwX0JPQVJEX0lSUSgyNykKKyNkZWZpbmUgSVJRX0lYRFAyODAxX0NMT0NLX1JFRgkJSVhQMjAwMF9CT0FSRF9JUlEoMjgpCisKKyNkZWZpbmUJSVhEUDI4MDFfVkFMSURfSVJRX01BU0sgKCBcCisJCUlYRFAyWDAxX1ZBTElEX0lSUV9NQVNLIHwgXAorCQlJWFAyMDAwX0JPQVJEX0lSUV9NQVNLKElSUV9JWERQMjgwMV9SSVYpIHxcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyODAxX0NORkdfTUVESUEpIHxcCisJCUlYUDIwMDBfQk9BUkRfSVJRX01BU0soSVJRX0lYRFAyODAxX0NMT0NLX1JFRikpCisKKyNkZWZpbmUJTlJfSVhEUDJYMDFfSVJRUwkJKChJUlFfSVhEUDI4MDFfQ0xPQ0tfUkVGKSArIDEpCisKKyNlbmRpZiAvKl9JUlFTX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9peGRwMngwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9peGRwMngwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMzk4ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2l4ZHAyeDAwLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXhkcDJ4MDAuaAorICoKKyAqIFJlZ2lzdGVyIGFuZCBvdGhlciBkZWZpbmVzIGZvciBJWERQMls0OF0wMCBwbGF0Zm9ybXMKKyAqCisgKiBPcmlnaW5hbCBBdXRob3I6IE5hZWVtIEFmemFsIDxuYWVlbS5tLmFmemFsQGludGVsLmNvbT4KKyAqIE1haW50YWluZXI6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnAuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKyNpZm5kZWYgX0lYRFAyWDAwX0hfCisjZGVmaW5lIF9JWERQMlgwMF9IXworCisvKgorICogT24gYm9hcmQgQ1BMRCBtZW1vcnkgbWFwCisgKi8KKyNkZWZpbmUgSVhEUDJYMDBfUEhZU19DUExEX0JBU0UJCTB4YzcwMDAwMDAKKyNkZWZpbmUgSVhEUDJYMDBfVklSVF9DUExEX0JBU0UJCTB4ZmFmZmYwMDAKKyNkZWZpbmUgSVhEUDJYMDBfQ1BMRF9TSVpFCQkweDAwMDAxMDAwCisKKworI2RlZmluZSBJWERQMlgwMF9DUExEX1JFRyh4KSAgCVwKKwkodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShJWERQMlgwMF9WSVJUX0NQTERfQkFTRSB8IHgpCisKKy8qCisgKiBJWERQMjQwMCBDUExEIHJlZ2lzdGVycworICovCisjZGVmaW5lIElYRFAyNDAwX0NQTERfU1lTTEVECQlJWERQMlgwMF9DUExEX1JFRygweDApICAKKyNkZWZpbmUgSVhEUDI0MDBfQ1BMRF9ESVNQX0RBVEEJCUlYRFAyWDAwX0NQTERfUkVHKDB4NCkKKyNkZWZpbmUgSVhEUDI0MDBfQ1BMRF9DTE9DS19TUEVFRAlJWERQMlgwMF9DUExEX1JFRygweDgpCisjZGVmaW5lIElYRFAyNDAwX0NQTERfSU5UX1NUQVQJCUlYRFAyWDAwX0NQTERfUkVHKDB4YykKKyNkZWZpbmUgSVhEUDI0MDBfQ1BMRF9SRVYJCUlYRFAyWDAwX0NQTERfUkVHKDB4MTApCisjZGVmaW5lIElYRFAyNDAwX0NQTERfU1lTX0NMS19NCQlJWERQMlgwMF9DUExEX1JFRygweDE0KQorI2RlZmluZSBJWERQMjQwMF9DUExEX1NZU19DTEtfTgkJSVhEUDJYMDBfQ1BMRF9SRUcoMHgxOCkKKyNkZWZpbmUgSVhEUDI0MDBfQ1BMRF9JTlRfTUFTSwkJSVhEUDJYMDBfQ1BMRF9SRUcoMHg0OCkKKworLyoKKyAqIElYRFAyODAwIENQTEQgcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgSVhEUDI4MDBfQ1BMRF9JTlRfU1RBVAkJSVhEUDJYMDBfQ1BMRF9SRUcoMHgwKQorI2RlZmluZSBJWERQMjgwMF9DUExEX0lOVF9NQVNLCQlJWERQMlgwMF9DUExEX1JFRygweDE0MCkKKworCisjZGVmaW5lCUlYRFAyWDAwX0dQSU9fSTJDX0VOQUJMRQkweDAyCisjZGVmaW5lCUlYRFAyWDAwX0dQSU9fU0NMCQkweDA3CisjZGVmaW5lCUlYRFAyWDAwX0dQSU9fU0RBCQkweDA2CisKKy8qCisgKiBQQ0kgZGV2Zm5zIGZvciBvbi1ib2FyZCBkZXZpY2VzLiBXZSBuZWVkIHRoZXNlIHRvIGJlIGFibGUgdG8KKyAqIHByb3Blcmx5IHRyYW5zbGF0ZSBJUlFzIGFuZCBmb3IgZGV2aWNlIHJlbW92YWwuCisgKi8KKyNkZWZpbmUJSVhEUDI0MDBfU0xBVkVfRU5FVF9ERVZGTgkweDE4CS8qIEJ1cyAxICovCisjZGVmaW5lCUlYRFAyNDAwX01BU1RFUl9FTkVUX0RFVkZOCTB4MjAJLyogQnVzIDEgKi8KKyNkZWZpbmUJSVhEUDI0MDBfTUVESUFfREVWRk4JCTB4MjgJLyogQnVzIDEgKi8KKyNkZWZpbmUJSVhEUDI0MDBfU1dJVENIX0ZBQlJJQ19ERVZGTgkweDMwCS8qIEJ1cyAxICovCisKKyNkZWZpbmUJSVhEUDI4MDBfU0xBVkVfRU5FVF9ERVZGTgkweDIwCS8qIEJ1cyAxICovCisjZGVmaW5lCUlYRFAyODAwX01BU1RFUl9FTkVUX0RFVkZOCTB4MTgJLyogQnVzIDEgKi8KKyNkZWZpbmUJSVhEUDI4MDBfU1dJVENIX0ZBQlJJQ19ERVZGTgkweDMwCS8qIEJ1cyAxICovCisKKyNkZWZpbmUJSVhEUDJYMDBfUDJQX0RFVkZOCQkweDIwCS8qIEJ1cyAwICovCisjZGVmaW5lCUlYRFAyWDAwXzIxNTU1X0RFVkZOCQkweDMwCS8qIEJ1cyAwICovCisjZGVmaW5lIElYRFAyWDAwX1NMQVZFX05QVV9ERVZGTgkweDI4CS8qIEJ1cyAxICovCisjZGVmaW5lCUlYRFAyWDAwX1BNQ19ERVZGTgkJMHgzOAkvKiBCdXMgMSAqLworI2RlZmluZSBJWERQMlgwMF9NQVNURVJfTlBVX0RFVkZOCTB4MzgJLyogQnVzIDEgKi8KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qCisgKiBNYXN0ZXIgTlBVIHdpbGwgYWx3YXlzIGhhdmUgZmxhc2ggYW5kIGJlIFBDSSBtYXN0ZXIuCisgKiBTbGF2ZSBOUFUgbWF5IG9yIG1heSBub3QgaGF2ZSBmbGFzaCBidXQgd2lsbCBuZXZlciBiZSBQQ0kgbWFzdGVyLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpeGRwMngwMF9tYXN0ZXJfbnB1KHZvaWQpCit7CisJcmV0dXJuICgoaXhwMjAwMF9oYXNfZmxhc2goKSkgJiYgKGl4cDIwMDBfaXNfcGNpbWFzdGVyKCkpKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBpeGRwMjQwMCBhbmQgaXhkcDI4MDAgc3BlY2lmaWMgY29kZQorICovCit2b2lkIGl4ZHAyeDAwX2luaXRfaXJxKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcqLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcpOwordm9pZCBpeGRwMngwMF9zbGF2ZV9wY2lfcG9zdGluaXQodm9pZCk7Cit2b2lkIGl4ZHAyeDAwX2luaXRfbWFjaGluZSh2b2lkKTsKK3ZvaWQgaXhkcDJ4MDBfbWFwX2lvKHZvaWQpOworCisjZW5kaWYKKworI2VuZGlmIC8qX0lYRFAyWDAwX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2l4ZHAyeDAxLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2l4ZHAyeDAxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhMWJjZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXhkcDJ4MDEuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9peGRwMngwMS5oCisgKgorICogUGxhdGZvcm0gZGVmaW5pdGlvbnMgZm9yIElYRFAyWDAxICYmIElYRFAyODAxIHN5c3RlbXMKKyAqCisgKiBBdXRob3I6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IDIwMDQgKGMpIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4gCisgKgorICogQmFzZWQgb24gb3JpZ2luYWwgY29kZSBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBJbnRlbCBDb3Jwb3JhdGlvbgorICogCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIAorICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IAorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisKKyNpZm5kZWYgX19JWERQMlgwMV9IX18KKyNkZWZpbmUgX19JWERQMlgwMV9IX18KKworI2RlZmluZQlJWERQMlgwMV9QSFlTX0NQTERfQkFTRQkJMHhjNjAyNDAwMAorI2RlZmluZQlJWERQMlgwMV9WSVJUX0NQTERfQkFTRQkJMHhmYWZmZjAwMAorI2RlZmluZQlJWERQMlgwMV9DUExEX1JFR0lPTl9TSVpFCTB4MDAwMDEwMDAKKworI2RlZmluZSBJWERQMlgwMV9DUExEX1ZJUlRfUkVHKHJlZykgKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcqKShJWERQMlgwMV9WSVJUX0NQTERfQkFTRSB8IHJlZykKKyNkZWZpbmUgSVhEUDJYMDFfQ1BMRF9QSFlTX1JFRyhyZWcpICh2b2xhdGlsZSB1MzIqKShJWERQMlgwMV9QSFlTX0NQTERfQkFTRSB8IHJlZykKKworI2RlZmluZSBJWERQMlgwMV9VQVJUMV9WSVJUX0JBU0UJSVhEUDJYMDFfQ1BMRF9WSVJUX1JFRygweDQwKQorI2RlZmluZSBJWERQMlgwMV9VQVJUMV9QSFlTX0JBU0UJSVhEUDJYMDFfQ1BMRF9QSFlTX1JFRygweDQwKQorCisjZGVmaW5lIElYRFAyWDAxX1VBUlQyX1ZJUlRfQkFTRQlJWERQMlgwMV9DUExEX1ZJUlRfUkVHKDB4NjApCisjZGVmaW5lIElYRFAyWDAxX1VBUlQyX1BIWVNfQkFTRQlJWERQMlgwMV9DUExEX1BIWVNfUkVHKDB4NjApCisKKyNkZWZpbmUgSVhEUDJYMDFfQ1M4OTAwX1ZJUlRfQkFTRQlJWERQMlgwMV9DUExEX1ZJUlRfUkVHKDB4ODApCisjZGVmaW5lIElYRFAyWDAxX0NTODkwMF9WSVJUX0VORAkoSVhEUDJYMDFfQ1M4OTAwX1ZJUlRfQkFTRSArIDE2KQorCisjZGVmaW5lIElYRFAyWDAxX0NQTERfUkVTRVRfUkVHICAgICAgICAgSVhEUDJYMDFfQ1BMRF9WSVJUX1JFRygweDAwKQorI2RlZmluZSBJWERQMlgwMV9JTlRfTUFTS19TRVRfUkVHCUlYRFAyWDAxX0NQTERfVklSVF9SRUcoMHgwOCkKKyNkZWZpbmUgSVhEUDJYMDFfSU5UX1NUQVRfUkVHCQlJWERQMlgwMV9DUExEX1ZJUlRfUkVHKDB4MEMpCisjZGVmaW5lIElYRFAyWDAxX0lOVF9SQVdfUkVHCQlJWERQMlgwMV9DUExEX1ZJUlRfUkVHKDB4MTApIAorI2RlZmluZSBJWERQMlgwMV9JTlRfTUFTS19DTFJfUkVHCUlYRFAyWDAxX0lOVF9SQVdfUkVHCisjZGVmaW5lIElYRFAyWDAxX0lOVF9TSU1fUkVHCQlJWERQMlgwMV9DUExEX1ZJUlRfUkVHKDB4MTQpCisKKyNkZWZpbmUgSVhEUDJYMDFfQ1BMRF9GTEFTSF9SRUcJCUlYRFAyWDAxX0NQTERfVklSVF9SRUcoMHgyMCkKKworI2RlZmluZSBJWERQMlgwMV9DUExEX0ZMQVNIX0lOVEVSTiAJMHg4MDAwCisjZGVmaW5lIElYRFAyWDAxX0NQTERfRkxBU0hfQkFOS19NQVNLIAkweEYKKyNkZWZpbmUgSVhEUDJYMDFfRkxBU0hfV0lORE9XX0JJVFMgCTI1CisjZGVmaW5lIElYRFAyWDAxX0ZMQVNIX1dJTkRPV19TSVpFIAkoMSA8PCBJWERQMlgwMV9GTEFTSF9XSU5ET1dfQklUUykKKyNkZWZpbmUgSVhEUDJYMDFfRkxBU0hfV0lORE9XX01BU0sgCShJWERQMlgwMV9GTEFTSF9XSU5ET1dfU0laRSAtIDEpCisKKyNkZWZpbmUJSVhEUDJYMDFfVUFSVF9DTEsJCTE4NDMyMDAKKworI2RlZmluZQlJWERQMlgwMV9HUElPX0kyQ19FTkFCTEUJMHgwMgorI2RlZmluZQlJWERQMlgwMV9HUElPX1NDTAkJMHgwNworI2RlZmluZQlJWERQMlgwMV9HUElPX1NEQQkJMHgwNgorCisjZW5kaWYgLyogX19JWERQMngwMV9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvaXhwMjAwMC1yZWdzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2l4cDIwMDAtcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNTY3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL2l4cDIwMDAtcmVncy5oCkBAIC0wLDAgKzEsMzc3IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9peHAyMDAwLXJlZ3MuaAorICoKKyAqIENoaXBzZXQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIElYUDI0MDAvMjgwMCBiYXNlZCBzeXN0ZW1zLgorICoKKyAqIE9yaWdpbmFsIEF1dGhvcjogTmFlZW0gQWZ6YWwgPG5hZWVtLm0uYWZ6YWxAaW50ZWwuY29tPgorICoKKyAqIE1haW50YWluZXI6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnAuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKyNpZm5kZWYgX0lYUDIwMDBfUkVHU19IXworI2RlZmluZSBfSVhQMjAwMF9SRUdTX0hfCisKKy8qIAorICogU3RhdGljIEkvTyByZWdpb25zLgorICoKKyAqIE1vc3Qgb2YgdGhlIHJlZ2lzdGVycyBhcmUgY2x1bXBlZCBpbiA0SyByZWdpb25zIHNwcmVhZCB0aHJvdWdob3V0CisgKiB0aGUgMHhjMDAwMDAwMCAtPiAweGMwMTAwMDAwIGFkZHJlc3MgcmFuZ2UsIGJ1dCB3ZSBqdXN0IG1hcCBpbgorICogdGhlIHdob2xlIHJhbmdlIHVzaW5nIGEgc2luZ2xlIDEgTUIgc2VjdGlvbiBpbnN0ZWFkIG9mIHNtYWxsCisgKiA0SyBwYWdlcy4gIFRoaXMgaGFzIHR3byBhZHZhbnRhZ2VzIGZvciB1czoKKyAqCisgKiAxKSBXZSB1c2Ugb25seSBvbmUgVExCIGVudHJ5IGZvciBsYXJnZSBudW1iZXIgb2Ygb24tY2hpcCBJL08gZGV2aWNlcy4KKyAqCisgKiAyKSBXZSBjYW4gZWFzaWx5IHNldCB0aGUgU2VjdGlvbiBhdHRyaWJ1dGVzIHRvIFhDQj0xMDEgb24gdGhlIElYUDI0MDAKKyAqICAgIGFzIHJlcXVpcmVkIHBlciBlcnJhdHVtICM2Ni4gIFdlIGFjY29tcGxpc2ggdGhpcyBieSB1c2luZyBhCisgKiAgICBuZXcgTVRfSVhQMjAwMF9ERVZJQ0UgbWVtb3J5IHR5cGUgd2l0aCB0aGUgYml0cyBzZXQgYXMgcmVxdWlyZWQuCisgKgorICogQ0FQIHN0YW5kcyBmb3IgQ1NSIEFjY2VzcyBQcm94eS4KKyAqCisgKiBJZiB5b3UgY2hhbmdlIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhpcyBtYXBwaW5nLCBwbGVhc2UgcHJvcGFnYXRlCisgKiB0aGUgY2hhbmdlIHRvIGFyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TLCB3aGljaCBoYXJkY29kZXMgdGhlIHZpcnR1YWwKKyAqIGFkZHJlc3Mgb2YgdGhlIFVBUlQgbG9jYXRlZCBpbiB0aGlzIHJlZ2lvbi4KKyAqLworCisjZGVmaW5lCUlYUDIwMDBfQ0FQX1BIWVNfQkFTRQkJMHhjMDAwMDAwMAorI2RlZmluZQlJWFAyMDAwX0NBUF9WSVJUX0JBU0UJCTB4ZmVmMDAwMDAKKyNkZWZpbmUJSVhQMjAwMF9DQVBfU0laRQkJMHgwMDEwMDAwMAorCisvKgorICogQWRkcmVzc2VzIGZvciBzcGVjaWZpYyBvbi1jaGlwIHBlcmlwaGVyYWxzCisgKi8KKyNkZWZpbmUJSVhQMjAwMF9TTE9XUE9SVF9DU1JfVklSVF9CQVNFCTB4ZmVmODAwMDAKKyNkZWZpbmUJSVhQMjAwMF9HTE9CQUxfUkVHX1ZJUlRfQkFTRQkweGZlZjA0MDAwCisjZGVmaW5lCUlYUDIwMDBfVUFSVF9QSFlTX0JBU0UJCTB4YzAwMzAwMDAKKyNkZWZpbmUJSVhQMjAwMF9VQVJUX1ZJUlRfQkFTRQkJMHhmZWYzMDAwMAorI2RlZmluZQlJWFAyMDAwX1RJTUVSX1ZJUlRfQkFTRQkJMHhmZWYyMDAwMAorI2RlZmluZQlJWFAyMDAwX0dQSU9fVklSVF9CQVNFCQkwWGZlZjEwMDAwCisKKy8qCisgKiBEZXZpY2VzIG91dHNpZGUgb2YgdGhlIDB4YzAwMDAwMDAgLT4gMHhjMDEwMDAwMCByYW5nZS4gIFRoZSB2aXJ0dWFsCisgKiBhZGRyZXNzZXMgb2YgdGhlIElOVENUTCBhbmQgUENJX0NTUiBtYXBwaW5ncyBhcmUgaGFyZGNvZGVkIGluCisgKiBlbnRyeS1tYWNyby5TLCBzbyBpZiB5b3UgZXZlciBjaGFuZ2UgdGhlc2UgcGxlYXNlIHByb3BhZ2F0ZQorICogdGhlIGNoYW5nZS4KKyAqLworI2RlZmluZSBJWFAyMDAwX0lOVENUTF9QSFlTX0JBU0UJMHhkNjAwMDAwMAorI2RlZmluZQlJWFAyMDAwX0lOVENUTF9WSVJUX0JBU0UJMHhmZWUwMDAwMAorI2RlZmluZQlJWFAyMDAwX0lOVENUTF9TSVpFCQkweDAwMTAwMDAwCisKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ1JFR19QSFlTX0JBU0UJMHhkZTAwMDAwMAorI2RlZmluZQlJWFAyMDAwX1BDSV9DUkVHX1ZJUlRfQkFTRQkweGZlZDAwMDAwCisjZGVmaW5lCUlYUDIwMDBfUENJX0NSRUdfU0laRQkJMHgwMDEwMDAwMAorCisjZGVmaW5lIElYUDIwMDBfUENJX0NTUl9QSFlTX0JBU0UJMHhkZjAwMDAwMAorI2RlZmluZQlJWFAyMDAwX1BDSV9DU1JfVklSVF9CQVNFCTB4ZmVjMDAwMDAKKyNkZWZpbmUJSVhQMjAwMF9QQ0lfQ1NSX1NJWkUJCTB4MDAxMDAwMDAKKworI2RlZmluZSBJWFAyMDAwX1BDSV9JT19QSFlTX0JBU0UJMHhkODAwMDAwMAorI2RlZmluZQlJWFAyMDAwX1BDSV9JT19WSVJUX0JBU0UJMHhmZDAwMDAwMAorI2RlZmluZSBJWFAyMDAwX1BDSV9JT19TSVpFICAgICAJMHgwMTAwMDAwMAorCisjZGVmaW5lIElYUDIwMDBfUENJX0NGRzBfUEhZU19CQVNFCTB4ZGEwMDAwMDAKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0ZHMF9WSVJUX0JBU0UJMHhmYzAwMDAwMAorI2RlZmluZSBJWFAyMDAwX1BDSV9DRkcwX1NJWkUgICAJMHgwMTAwMDAwMAorCisjZGVmaW5lIElYUDIwMDBfUENJX0NGRzFfUEhZU19CQVNFCTB4ZGIwMDAwMDAKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0ZHMV9WSVJUX0JBU0UJMHhmYjAwMDAwMAorI2RlZmluZSBJWFAyMDAwX1BDSV9DRkcxX1NJWkUJCTB4MDEwMDAwMDAKKworLyogCisgKiBUaW1lcnMKKyAqLworI2RlZmluZQlJWFAyMDAwX1RJTUVSX1JFRyh4KQkJKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nKikoSVhQMjAwMF9USU1FUl9WSVJUX0JBU0UgfCAoeCkpKQorLyogVGltZXIgY29udHJvbCAqLworI2RlZmluZQlJWFAyMDAwX1QxX0NUTAkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MDApCisjZGVmaW5lCUlYUDIwMDBfVDJfQ1RMCQkJSVhQMjAwMF9USU1FUl9SRUcoMHgwNCkKKyNkZWZpbmUJSVhQMjAwMF9UM19DVEwJCQlJWFAyMDAwX1RJTUVSX1JFRygweDA4KQorI2RlZmluZQlJWFAyMDAwX1Q0X0NUTAkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MGMpCisvKiBTdG9yZSBpbml0aWFsIHZhbHVlICovCisjZGVmaW5lCUlYUDIwMDBfVDFfQ0xECQkJSVhQMjAwMF9USU1FUl9SRUcoMHgxMCkKKyNkZWZpbmUJSVhQMjAwMF9UMl9DTEQJCQlJWFAyMDAwX1RJTUVSX1JFRygweDE0KQorI2RlZmluZQlJWFAyMDAwX1QzX0NMRAkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MTgpCisjZGVmaW5lCUlYUDIwMDBfVDRfQ0xECQkJSVhQMjAwMF9USU1FUl9SRUcoMHgxYykKKy8qIFJlYWQgY3VycmVudCB2YWx1ZSAqLworI2RlZmluZQlJWFAyMDAwX1QxX0NTUgkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MjApCisjZGVmaW5lCUlYUDIwMDBfVDJfQ1NSCQkJSVhQMjAwMF9USU1FUl9SRUcoMHgyNCkKKyNkZWZpbmUJSVhQMjAwMF9UM19DU1IJCQlJWFAyMDAwX1RJTUVSX1JFRygweDI4KQorI2RlZmluZQlJWFAyMDAwX1Q0X0NTUgkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MmMpCisvKiBDbGVhciBhc3NvY2lhdGVkIHRpbWVyIGludGVycnVwdCAqLworI2RlZmluZQlJWFAyMDAwX1QxX0NMUgkJCUlYUDIwMDBfVElNRVJfUkVHKDB4MzApCisjZGVmaW5lCUlYUDIwMDBfVDJfQ0xSCQkJSVhQMjAwMF9USU1FUl9SRUcoMHgzNCkKKyNkZWZpbmUJSVhQMjAwMF9UM19DTFIJCQlJWFAyMDAwX1RJTUVSX1JFRygweDM4KQorI2RlZmluZQlJWFAyMDAwX1Q0X0NMUgkJCUlYUDIwMDBfVElNRVJfUkVHKDB4M2MpCisvKiBUaW1lciB3YXRjaGRvZyBlbmFibGUgZm9yIFQ0ICovCisjZGVmaW5lCUlYUDIwMDBfVFdERQkJCUlYUDIwMDBfVElNRVJfUkVHKDB4NDApCisKKyNkZWZpbmUJV0RUX0VOQUJMRQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUJVElNRVJfRElWSURFUl8yNTYJCTB4MDAwMDAwMDgKKyNkZWZpbmUJVElNRVJfRU5BQkxFCQkJMHgwMDAwMDA4MAorI2RlZmluZQlJUlFfTUFTS19USU1FUjEgICAgICAgICAJKDEgPDwgNCkKKworLyoKKyAqIEludGVycnVwdCBjb250cm9sbGVyIHJlZ2lzdGVycworICovCisjZGVmaW5lIElYUDIwMDBfSU5UQ1RMX1JFRyh4KQkJKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcqKShJWFAyMDAwX0lOVENUTF9WSVJUX0JBU0UgfCAoeCkpCisjZGVmaW5lIElYUDIwMDBfSVJRX1NUQVRVUwkJSVhQMjAwMF9JTlRDVExfUkVHKDB4MDgpCisjZGVmaW5lIElYUDIwMDBfSVJRX0VOQUJMRQkJSVhQMjAwMF9JTlRDVExfUkVHKDB4MTApCisjZGVmaW5lIElYUDIwMDBfSVJRX0VOQUJMRV9TRVQJCUlYUDIwMDBfSU5UQ1RMX1JFRygweDEwKQorI2RlZmluZSBJWFAyMDAwX0lSUV9FTkFCTEVfQ0xSCQlJWFAyMDAwX0lOVENUTF9SRUcoMHgxOCkKKyNkZWZpbmUgSVhQMjAwMF9GSVFfRU5BQkxFX0NMUgkJSVhQMjAwMF9JTlRDVExfUkVHKDB4MTQpCisjZGVmaW5lIElYUDIwMDBfSVJRX0VSUl9TVEFUVVMJCUlYUDIwMDBfSU5UQ1RMX1JFRygweDI0KQorI2RlZmluZSBJWFAyMDAwX0lSUV9FUlJfRU5BQkxFX1NFVAlJWFAyMDAwX0lOVENUTF9SRUcoMHgyYykKKyNkZWZpbmUgSVhQMjAwMF9GSVFfRVJSX0VOQUJMRV9DTFIJSVhQMjAwMF9JTlRDVExfUkVHKDB4MzApCisjZGVmaW5lIElYUDIwMDBfSVJRX0VSUl9FTkFCTEVfQ0xSCUlYUDIwMDBfSU5UQ1RMX1JFRygweDM0KQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfUkFXX1NUQVRVU19BXzAJSVhQMjAwMF9JTlRDVExfUkVHKDB4NjApCisjZGVmaW5lIElYUDIwMDBfSVJRX1RIRF9SQVdfU1RBVFVTX0FfMQlJWFAyMDAwX0lOVENUTF9SRUcoMHg2NCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX1JBV19TVEFUVVNfQV8yCUlYUDIwMDBfSU5UQ1RMX1JFRygweDY4KQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfUkFXX1NUQVRVU19BXzMJSVhQMjAwMF9JTlRDVExfUkVHKDB4NmMpCisjZGVmaW5lIElYUDIwMDBfSVJRX1RIRF9SQVdfU1RBVFVTX0JfMAlJWFAyMDAwX0lOVENUTF9SRUcoMHg4MCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX1JBV19TVEFUVVNfQl8xCUlYUDIwMDBfSU5UQ1RMX1JFRygweDg0KQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfUkFXX1NUQVRVU19CXzIJSVhQMjAwMF9JTlRDVExfUkVHKDB4ODgpCisjZGVmaW5lIElYUDIwMDBfSVJRX1RIRF9SQVdfU1RBVFVTX0JfMwlJWFAyMDAwX0lOVENUTF9SRUcoMHg4YykKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQV8wCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE2MCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQV8xCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE2NCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQV8yCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE2OCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQV8zCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE2YykKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQl8wCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE4MCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQl8xCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE4NCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQl8yCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE4OCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9TRVRfQl8zCUlYUDIwMDBfSU5UQ1RMX1JFRygweDE4YykKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9DTEVBUl9BXzAJSVhQMjAwMF9JTlRDVExfUkVHKDB4MWUwKQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfRU5BQkxFX0NMRUFSX0FfMQlJWFAyMDAwX0lOVENUTF9SRUcoMHgxZTQpCisjZGVmaW5lIElYUDIwMDBfSVJRX1RIRF9FTkFCTEVfQ0xFQVJfQV8yCUlYUDIwMDBfSU5UQ1RMX1JFRygweDFlOCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9DTEVBUl9BXzMJSVhQMjAwMF9JTlRDVExfUkVHKDB4MWVjKQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfRU5BQkxFX0NMRUFSX0JfMAlJWFAyMDAwX0lOVENUTF9SRUcoMHgyMDApCisjZGVmaW5lIElYUDIwMDBfSVJRX1RIRF9FTkFCTEVfQ0xFQVJfQl8xCUlYUDIwMDBfSU5UQ1RMX1JFRygweDIwNCkKKyNkZWZpbmUgSVhQMjAwMF9JUlFfVEhEX0VOQUJMRV9DTEVBUl9CXzIJSVhQMjAwMF9JTlRDVExfUkVHKDB4MjA4KQorI2RlZmluZSBJWFAyMDAwX0lSUV9USERfRU5BQkxFX0NMRUFSX0JfMwlJWFAyMDAwX0lOVENUTF9SRUcoMHgyMGMpCisKKy8qCisgKiBNYXNrIG9mIHZhbGlkIElSUXMgaW4gdGhlIDMyLWJpdCBJUlEgcmVnaXN0ZXIuIFdlIHVzZQorICogdGhpcyB0byBtYXJrIGNlcnRhaW4gSVJRcyBhcyBiZWluZyBpbnZhbGlkLgorICovCisjZGVmaW5lCUlYUDIwMDBfVkFMSURfSVJRX01BU0sJMHgwZjBmZmZmZgorCisvKgorICogUENJIGNvbmZpZyByZWdpc3RlciBhY2Nlc3MgZnJvbSBjb3JlCisgKi8KKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ1JFRyh4KQkJKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcqKShJWFAyMDAwX1BDSV9DUkVHX1ZJUlRfQkFTRSB8ICh4KSkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ01EU1RBVCAJCUlYUDIwMDBfUENJX0NSRUcoMHgwNCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ1NSX0JBUgkJSVhQMjAwMF9QQ0lfQ1JFRygweDEwKQorI2RlZmluZSBJWFAyMDAwX1BDSV9TUkFNX0JBUgkJSVhQMjAwMF9QQ0lfQ1JFRygweDE0KQorI2RlZmluZSBJWFAyMDAwX1BDSV9TRFJBTV9CQVIJCUlYUDIwMDBfUENJX0NSRUcoMHgxOCkKKworLyoKKyAqIFBDSSBDU1JzCisgKi8KKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ1NSKHgpCQkodm9sYXRpbGUgdW5zaWduZWQgbG9uZyopKElYUDIwMDBfUENJX0NTUl9WSVJUX0JBU0UgfCAoeCkpCisKKy8qCisgKiBQQ0kgb3V0Ym91bmQgaW50ZXJydXB0cworICovCisjZGVmaW5lIElYUDIwMDBfUENJX09VVF9JTlRfU1RBVFVTCUlYUDIwMDBfUENJX0NTUigweDMwKQorI2RlZmluZSBJWFAyMDAwX1BDSV9PVVRfSU5UX01BU0sJSVhQMjAwMF9QQ0lfQ1NSKDB4MzQpCisvKgorICogUENJIGNvbW11bmljYXRpb25zCisgKi8KKyNkZWZpbmUgSVhQMjAwMF9QQ0lfTUFJTEJPWDAJCUlYUDIwMDBfUENJX0NTUigweDUwKQorI2RlZmluZSBJWFAyMDAwX1BDSV9NQUlMQk9YMQkJSVhQMjAwMF9QQ0lfQ1NSKDB4NTQpCisjZGVmaW5lIElYUDIwMDBfUENJX01BSUxCT1gyCQlJWFAyMDAwX1BDSV9DU1IoMHg1OCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfTUFJTEJPWDMJCUlYUDIwMDBfUENJX0NTUigweDVDKQorI2RlZmluZSBJWFAyMDAwX1hTQ0FMRV9ET09SQkVMTAkJSVhQMjAwMF9QQ0lfQ1NSKDB4NjApCisjZGVmaW5lIElYUDIwMDBfWFNDQUxFX0RPT1JCRUxMX1NFVFVQCUlYUDIwMDBfUENJX0NTUigweDY0KQorI2RlZmluZSBJWFAyMDAwX1BDSV9ET09SQkVMTAkJSVhQMjAwMF9QQ0lfQ1NSKDB4NzApCisjZGVmaW5lIElYUDIwMDBfUENJX0RPT1JCRUxMX1NFVFVQCUlYUDIwMDBfUENJX0NTUigweDc0KQorCisvKgorICogRE1BIGVuZ2luZXMKKyAqLworI2RlZmluZSBJWFAyMDAwX1BDSV9DSDFfQllURV9DTlQJSVhQMjAwMF9QQ0lfQ1NSKDB4ODApCisjZGVmaW5lIElYUDIwMDBfUENJX0NIMV9BRERSCQlJWFAyMDAwX1BDSV9DU1IoMHg4NCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gxX0RSQU1fQUREUglJWFAyMDAwX1BDSV9DU1IoMHg4OCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gxX0RFU0NfUFRSCUlYUDIwMDBfUENJX0NTUigweDhDKQorI2RlZmluZSBJWFAyMDAwX1BDSV9DSDFfQ05UUkwJCUlYUDIwMDBfUENJX0NTUigweDkwKQorI2RlZmluZSBJWFAyMDAwX1BDSV9DSDFfTUVfUEFSQU0JSVhQMjAwMF9QQ0lfQ1NSKDB4OTQpCisjZGVmaW5lIElYUDIwMDBfUENJX0NIMl9CWVRFX0NOVAlJWFAyMDAwX1BDSV9DU1IoMHhBMCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gyX0FERFIJCUlYUDIwMDBfUENJX0NTUigweEE0KQorI2RlZmluZSBJWFAyMDAwX1BDSV9DSDJfRFJBTV9BRERSCUlYUDIwMDBfUENJX0NTUigweEE4KQorI2RlZmluZSBJWFAyMDAwX1BDSV9DSDJfREVTQ19QVFIJSVhQMjAwMF9QQ0lfQ1NSKDB4QUMpCisjZGVmaW5lIElYUDIwMDBfUENJX0NIMl9DTlRSTAkJSVhQMjAwMF9QQ0lfQ1NSKDB4QjApCisjZGVmaW5lIElYUDIwMDBfUENJX0NIMl9NRV9QQVJBTQlJWFAyMDAwX1BDSV9DU1IoMHhCNCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gzX0JZVEVfQ05UCUlYUDIwMDBfUENJX0NTUigweEMwKQorI2RlZmluZSBJWFAyMDAwX1BDSV9DSDNfQUREUgkJSVhQMjAwMF9QQ0lfQ1NSKDB4QzQpCisjZGVmaW5lIElYUDIwMDBfUENJX0NIM19EUkFNX0FERFIJSVhQMjAwMF9QQ0lfQ1NSKDB4QzgpCisjZGVmaW5lIElYUDIwMDBfUENJX0NIM19ERVNDX1BUUglJWFAyMDAwX1BDSV9DU1IoMHhDQykKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gzX0NOVFJMCQlJWFAyMDAwX1BDSV9DU1IoMHhEMCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQ0gzX01FX1BBUkFNCUlYUDIwMDBfUENJX0NTUigweEQ0KQorI2RlZmluZSBJWFAyMDAwX0RNQV9JTkZfTU9ERQkJSVhQMjAwMF9QQ0lfQ1NSKDB4RTApCisvKgorICogU2l6ZSBtYXNrcyBmb3IgQkFScworICovCisjZGVmaW5lIElYUDIwMDBfUENJX1NSQU1fQkFTRV9BRERSX01BU0sJSVhQMjAwMF9QQ0lfQ1NSKDB4RkMpCisjZGVmaW5lIElYUDIwMDBfUENJX0RSQU1fQkFTRV9BRERSX01BU0sJSVhQMjAwMF9QQ0lfQ1NSKDB4MTAwKQorLyoKKyAqIENvbnRyb2wgYW5kIHVFbmdpbmUgcmVsYXRlZAorICovCisjZGVmaW5lIElYUDIwMDBfUENJX0NPTlRST0wJCUlYUDIwMDBfUENJX0NTUigweDEzQykKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfQUREUl9FWFQJCUlYUDIwMDBfUENJX0NTUigweDE0MCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfTUVfUFVTSF9TVEFUVVMJSVhQMjAwMF9QQ0lfQ1NSKDB4MTQ4KQorI2RlZmluZSBJWFAyMDAwX1BDSV9NRV9QVVNIX0VOCQlJWFAyMDAwX1BDSV9DU1IoMHgxNEMpCisjZGVmaW5lIElYUDIwMDBfUENJX0VSUl9TVEFUVVMJCUlYUDIwMDBfUENJX0NTUigweDE1MCkKKyNkZWZpbmUgSVhQMjAwMF9QQ0lfRVJSX0VOQUJMRQkJSVhQMjAwMF9QQ0lfQ1NSKDB4MTU0KQorLyoKKyAqIEluYm91bmQgUENJIGludGVycnVwdCBjb250cm9sCisgKi8KKyNkZWZpbmUgSVhQMjAwMF9QQ0lfWFNDQUxFX0lOVF9TVEFUVVMJSVhQMjAwMF9QQ0lfQ1NSKDB4MTU4KQorI2RlZmluZSBJWFAyMDAwX1BDSV9YU0NBTEVfSU5UX0VOQUJMRQlJWFAyMDAwX1BDSV9DU1IoMHgxNUMpCisKKyNkZWZpbmUgSVhQMjAwMF9QQ0lDTlRMX1BOUgkJKDE8PDE3KQkvKiBQQ0kgbm90IFJlc2V0IGJpdCBvZiBQQ0lfQ09OVFJPTCAqLworI2RlZmluZSBJWFAyMDAwX1BDSUNOVExfUENGCQkoMTw8MjgpCS8qIFBDSSBDZW50cm9sZnVuY3Rpb24gYml0ICovCisjZGVmaW5lIElYUDIwMDBfWFNDQUxFX0lOVAkJKDE8PDEpCS8qIEludGVycnVwdCBmcm9tIFhTY2FsZSB0byBQQ0kgKi8KKworLyogVGhlc2UgYXJlIGZyb20gdGhlIElSUSByZWdpc3RlciBpbiB0aGUgUENJIElTUiByZWdpc3RlciAqLworI2RlZmluZSBQQ0lfQ09OVFJPTF9CRV9ERU8JCSgxIDw8IDIyKQkvKiBCaWcgRW5kaWFuIERhdGEgRW5hYmxlIE91dCAqLworI2RlZmluZSBQQ0lfQ09OVFJPTF9CRV9ERUkJCSgxIDw8IDIxKQkvKiBCaWcgRW5kaWFuIERhdGEgRW5hYmxlIEluICAqLworI2RlZmluZSBQQ0lfQ09OVFJPTF9CRV9CRU8JCSgxIDw8IDIwKQkvKiBCaWcgRW5kaWFuIEJ5dGUgRW5hYmxlIE91dCAqLworI2RlZmluZSBQQ0lfQ09OVFJPTF9CRV9CRUkJCSgxIDw8IDE5KQkvKiBCaWcgRW5kaWFuIEJ5dGUgRW5hYmxlIEluICAqLworI2RlZmluZSBQQ0lfQ09OVFJPTF9QTlIJCQkoMSA8PCAxNykJLyogUENJIE5vdCBSZXNldCBiaXQgKi8KKworI2RlZmluZSBJWFAyMDAwX1BDSV9SU1RfUkVMCQkoMSA8PCAyKQorI2RlZmluZSBDRkdfUlNUX0RJUgkJCSgqSVhQMjAwMF9QQ0lfQ09OVFJPTCAmIElYUDIwMDBfUENJQ05UTF9QQ0YpCisjZGVmaW5lIENGR19QQ0lfQk9PVF9IT1NUCQkoMSA8PCAyKQorI2RlZmluZSBDRkdfQk9PVF9QUk9NCQkJKDEgPDwgMSkKKworLyoKKyAqIFNsb3dQb3J0IENTUnMKKyAqCisgKiBUaGUgc2xvd3BvcnQgaXMgdXNlZCB0byBhY2Nlc3MgdGhpbmdzIGxpa2UgZmxhc2gsIFNPTkVUIGZyYW1lciBjb250cm9sCisgKiBwb3J0cywgc2xhdmUgbWljcm9wcm9jZXNzb3JzLCBDUExEcywgYW5kIG90aGVycyBvZiBjaGlwIG1lbW9yeSBtYXBwZWQKKyAqIHBlcmlwaGVyYWxzLgorICovCisjZGVmaW5lCVNMT1dQT1JUX0NTUih4KQkJKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcqKShJWFAyMDAwX1NMT1dQT1JUX0NTUl9WSVJUX0JBU0UgfCAoeCkpCisKKyNkZWZpbmUJSVhQMjAwMF9TTE9XUE9SVF9DQ1IJCVNMT1dQT1JUX0NTUigweDAwKQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX1dUQzEJCVNMT1dQT1JUX0NTUigweDA0KQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX1dUQzIJCVNMT1dQT1JUX0NTUigweDA4KQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX1JUQzEJCVNMT1dQT1JUX0NTUigweDBjKQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX1JUQzIJCVNMT1dQT1JUX0NTUigweDEwKQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX0ZTUgkJU0xPV1BPUlRfQ1NSKDB4MTQpCisjZGVmaW5lCUlYUDIwMDBfU0xPV1BPUlRfUENSCQlTTE9XUE9SVF9DU1IoMHgxOCkKKyNkZWZpbmUJSVhQMjAwMF9TTE9XUE9SVF9BREMJCVNMT1dQT1JUX0NTUigweDFDKQorI2RlZmluZQlJWFAyMDAwX1NMT1dQT1JUX0ZBQwkJU0xPV1BPUlRfQ1NSKDB4MjApCisjZGVmaW5lCUlYUDIwMDBfU0xPV1BPUlRfRlJNCQlTTE9XUE9SVF9DU1IoMHgyNCkKKyNkZWZpbmUJSVhQMjAwMF9TTE9XUE9SVF9GSU4JCVNMT1dQT1JUX0NTUigweDI4KQorCisvKgorICogQ0NSIHZhbHVlcy4gIAorICogVGhlIENDUiBjb25maWd1cmVzIHRoZSBjbG9jayBkaXZpc2lvbiBmb3IgdGhlIHNsb3dwb3J0IGludGVyZmFjZS4KKyAqLworI2RlZmluZQlTTE9XUE9SVF9DQ1JfRElWXzEJCTB4MDAKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl8yCQkweDAxCisjZGVmaW5lCVNMT1dQT1JUX0NDUl9ESVZfNAkJMHgwMgorI2RlZmluZQlTTE9XUE9SVF9DQ1JfRElWXzYJCTB4MDMKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl84CQkweDA0CisjZGVmaW5lCVNMT1dQT1JUX0NDUl9ESVZfMTAJCTB4MDUKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl8xMgkJMHgwNgorI2RlZmluZQlTTE9XUE9SVF9DQ1JfRElWXzE0CQkweDA3CisjZGVmaW5lCVNMT1dQT1JUX0NDUl9ESVZfMTYJCTB4MDgKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl8xOAkJMHgwOQorI2RlZmluZQlTTE9XUE9SVF9DQ1JfRElWXzIwCQkweDBhCisjZGVmaW5lCVNMT1dQT1JUX0NDUl9ESVZfMjIJCTB4MGIKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl8yNAkJMHgwYworI2RlZmluZQlTTE9XUE9SVF9DQ1JfRElWXzI2CQkweDBkCisjZGVmaW5lCVNMT1dQT1JUX0NDUl9ESVZfMjgJCTB4MGUKKyNkZWZpbmUJU0xPV1BPUlRfQ0NSX0RJVl8zMAkJMHgwZgorCisvKgorICogUENSIHZhbHVlcy4gIFBDUiBjb25maWd1cmUgdGhlIG1vZGUgb2YgdGhlIGludGVyZmFjZS4KKyAqLworI2RlZmluZQlTTE9XUE9SVF9NT0RFX0ZMQVNICQkweDAwCisjZGVmaW5lCVNMT1dQT1JUX01PREVfTFVDRU5UCQkweDAxCisjZGVmaW5lCVNMT1dQT1JUX01PREVfUE1DX1NJRVJSQQkweDAyCisjZGVmaW5lCVNMT1dQT1JUX01PREVfSU5URUxfVVAJCTB4MDMKKyNkZWZpbmUJU0xPV1BPUlRfTU9ERV9NT1RPUk9MQV9VUAkweDA0CisKKy8qCisgKiBBREMgdmFsdWVzLiAgRGVmaW5lcyBkYXRhIGFuZCBhZGRyZXNzIGJ1cyB3aWR0aHMuCisgKi8KKyNkZWZpbmUJU0xPV1BPUlRfQUREUl9XSURUSF84CQkweDAwCisjZGVmaW5lCVNMT1dQT1JUX0FERFJfV0lEVEhfMTYJCTB4MDEKKyNkZWZpbmUJU0xPV1BPUlRfQUREUl9XSURUSF8yNAkJMHgwMgorI2RlZmluZQlTTE9XUE9SVF9BRERSX1dJRFRIXzMyCQkweDAzCisjZGVmaW5lCVNMT1dQT1JUX0RBVEFfV0lEVEhfOAkJMHgwMAorI2RlZmluZQlTTE9XUE9SVF9EQVRBX1dJRFRIXzE2CQkweDEwCisjZGVmaW5lCVNMT1dQT1JUX0RBVEFfV0lEVEhfMjQJCTB4MjAKKyNkZWZpbmUJU0xPV1BPUlRfREFUQV9XSURUSF8zMgkJMHgzMAorCisvKgorICogTWFza3MgYW5kIHNoaWZ0cyBmb3IgdmFyaW91cyBmaWVsZHMgaW4gdGhlIFdUQyBhbmQgUlRDIHJlZ2lzdGVycy4KKyAqLworI2RlZmluZQlTTE9XUE9SVF9XUlRDX01BU0tfSEQJCTB4MDAwMworI2RlZmluZQlTTE9XUE9SVF9XUlRDX01BU0tfU1UJCTB4MDAzYworI2RlZmluZQlTTE9XUE9SVF9XUlRDX01BU0tfUFcJCTB4MDNjMAorCisjZGVmaW5lCVNMT1dQT1JUX1dSVENfU0hJRlRfSEQJCTB4MDAKKyNkZWZpbmUJU0xPV1BPUlRfV1JUQ19TSElGVF9TVQkJMHgwMgorI2RlZmluZQlTTE9XUE9SVF9XUlRDX1NIRklUX1BXCQkweDA2CisKKworLyoKKyAqIEdQSU8gcmVnaXN0ZXJzICYgR1BJTyBpbnRlcmZhY2UuCisgKi8KKyNkZWZpbmUgSVhQMjAwMF9HUElPX1JFRyh4KQkJKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nKikoSVhQMjAwMF9HUElPX1ZJUlRfQkFTRSsoeCkpKQorI2RlZmluZSBJWFAyMDAwX0dQSU9fUExSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MDApCisjZGVmaW5lIElYUDIwMDBfR1BJT19QRFBSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MDQpCisjZGVmaW5lIElYUDIwMDBfR1BJT19QRFNSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MDgpCisjZGVmaW5lIElYUDIwMDBfR1BJT19QRENSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MGMpCisjZGVmaW5lIElYUDIwMDBfR1BJT19QT1BSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MTApCisjZGVmaW5lIElYUDIwMDBfR1BJT19QT1NSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MTQpCisjZGVmaW5lIElYUDIwMDBfR1BJT19QT0NSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MTgpCisjZGVmaW5lIElYUDIwMDBfR1BJT19SRURSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MWMpCisjZGVmaW5lIElYUDIwMDBfR1BJT19GRURSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MjApCisjZGVmaW5lIElYUDIwMDBfR1BJT19FRFNSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MjQpCisjZGVmaW5lIElYUDIwMDBfR1BJT19MU0hSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MjgpCisjZGVmaW5lIElYUDIwMDBfR1BJT19MU0xSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MmMpCisjZGVmaW5lIElYUDIwMDBfR1BJT19MRFNSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MzApCisjZGVmaW5lIElYUDIwMDBfR1BJT19JTkVSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MzQpCisjZGVmaW5lIElYUDIwMDBfR1BJT19JTlNSCQlJWFAyMDAwX0dQSU9fUkVHKDB4MzgpCisjZGVmaW5lIElYUDIwMDBfR1BJT19JTkNSCQlJWFAyMDAwX0dQSU9fUkVHKDB4M2MpCisjZGVmaW5lIElYUDIwMDBfR1BJT19JTlNUCQlJWFAyMDAwX0dQSU9fUkVHKDB4NDApCisKKy8qCisgKiAiR2xvYmFsIiByZWdpc3RlcnMuLi53aGF0ZXZlciB0aGF0J3Mgc3VwcG9zZWQgdG8gbWVhbi4KKyAqLworI2RlZmluZSBHTE9CQUxfUkVHX0JBU0UJCQkoSVhQMjAwMF9HTE9CQUxfUkVHX1ZJUlRfQkFTRSArIDB4MGEwMCkKKyNkZWZpbmUgR0xPQkFMX1JFRyh4KQkJCSh2b2xhdGlsZSB1bnNpZ25lZCBsb25nKikoR0xPQkFMX1JFR19CQVNFIHwgKHgpKQorCisjZGVmaW5lIElYUDIwMDBfUFJPRF9JRAkJCUdMT0JBTF9SRUcoMHgwMCkKKworI2RlZmluZSBJWFAyMDAwX01BSl9QUk9EX1RZUEVfTUFTSwkweDAwMUYwMDAwCisjZGVmaW5lIElYUDIwMDBfTUFKX1BST0RfVFlQRV9JWFAyMDAwCTB4MDAwMDAwMDAKKyNkZWZpbmUgSVhQMjAwMF9NSU5fUFJPRF9UWVBFX01BU0sgCTB4MDAwMEZGMDAKKyNkZWZpbmUgSVhQMjAwMF9NSU5fUFJPRF9UWVBFX0lYUDI0MDAJMHgwMDAwMDIwMAorI2RlZmluZSBJWFAyMDAwX01JTl9QUk9EX1RZUEVfSVhQMjg1MAkweDAwMDAwMTAwCisjZGVmaW5lIElYUDIwMDBfTUlOX1BST0RfVFlQRV9JWFAyODAwCTB4MDAwMDAwMDAKKyNkZWZpbmUgSVhQMjAwMF9NQUpfUkVWX01BU0sJICAgICAgCTB4MDAwMDAwRjAKKyNkZWZpbmUgSVhQMjAwMF9NSU5fUkVWX01BU0sJICAgICAgCTB4MDAwMDAwMEYKKyNkZWZpbmUgSVhQMjAwMF9QUk9EX0lEX01BU0sJCTB4RkZGRkZGRkYKKworI2RlZmluZSBJWFAyMDAwX01JU0NfQ09OVFJPTAkJR0xPQkFMX1JFRygweDA0KQorI2RlZmluZSBJWFAyMDAwX01TRl9DTEtfQ05UUkwgIAkJR0xPQkFMX1JFRygweDA4KQorI2RlZmluZSBJWFAyMDAwX1JFU0VUMCAgICAgIAkJR0xPQkFMX1JFRygweDBjKQorI2RlZmluZSBJWFAyMDAwX1JFU0VUMSAgICAgIAkJR0xPQkFMX1JFRygweDEwKQorI2RlZmluZSBJWFAyMDAwX0NDUiAgICAgICAgICAgIAkJR0xPQkFMX1JFRygweDE0KQorI2RlZmluZQlJWFAyMDAwX1NUUkFQX09QVElPTlMgIAkJR0xPQkFMX1JFRygweDE4KQorCisjZGVmaW5lCVJTVEFMTAkJCQkoMSA8PCAxNikKKyNkZWZpbmUJV0RUX1JFU0VUX0VOQUJMRQkJMHgwMTAwMDAwMAorCisKKyNlbmRpZgkJCQkvKiBfSVhQMjAwMF9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBmNDE1YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvbWVtb3J5LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvbWVtb3J5LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgSW50ZWwgQ29ycC4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisjZGVmaW5lIFBIWVNfT0ZGU0VUCSgweDAwMDAwMDAwVUwpCisKKy8qCisgKiBWaXJ0dWFsIHZpZXcgPC0+IERNQSB2aWV3IG1lbW9yeSBhZGRyZXNzIHRyYW5zbGF0aW9ucworICogdmlydF90b19idXM6IFVzZWQgdG8gdHJhbnNsYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdG8gYW4KKyAqCQlhZGRyZXNzIHN1aXRhYmxlIHRvIGJlIHBhc3NlZCB0byBzZXRfZG1hX2FkZHIKKyAqIGJ1c190b192aXJ0OiBVc2VkIHRvIGNvbnZlcnQgYW4gYWRkcmVzcyBmb3IgRE1BIG9wZXJhdGlvbnMKKyAqCQl0byBhbiBhZGRyZXNzIHRoYXQgdGhlIGtlcm5lbCBjYW4gdXNlLgorICovCisjaW5jbHVkZSA8YXNtL2FyY2gvaXhwMjAwMC1yZWdzLmg+CisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh2KSBcCisJKCgoX192aXJ0X3RvX3BoeXModikgLSAweDApICsgKCpJWFAyMDAwX1BDSV9TRFJBTV9CQVIgJiAweGZmZmZmZmYwKSkpCisKKyNkZWZpbmUgX19idXNfdG9fdmlydChiKSBcCisJX19waHlzX3RvX3ZpcnQoKCgoYiAtICgqSVhQMjAwMF9QQ0lfU0RSQU1fQkFSICYgMHhmZmZmZmZmMCkpICsgMHgwKSkpCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0NmQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvcGFyYW0uaApAQCAtMCwwICsxLDMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9wYXJhbS5oCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvcGxhdGZvcm0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvcGxhdGZvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDllNDRkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9wbGF0Zm9ybS5oCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9wbGF0Zm9ybS5oCisgKgorICogVmFyaW91cyBiaXRzIG9mIGNvZGUgdXNlZCBieSBwbGF0Zm9ybS1sZXZlbCBjb2RlLgorICoKKyAqIEF1dGhvcjogRGVlcGFrIFNheGVuYSA8ZHNheGVuYUBwbGV4aXR5Lm5ldD4KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCAoYykgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLiAKKyAqIAorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueSAKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKy8qCisgKiBUaGUgSVhQMjQwMCBCMCBzaWxpY29uIGNvbnRhaW5zIGFuIGVycmF0dW0gKCM2NikgdGhhdCBjYXVzZXMgd3JpdGVzCisgKiB0byBvbi1jaGlwIEkvTyByZWdpc3RlciB0byBub3QgY29tcGxldGUgZnVsbHkuIFdoYXQgdGhpcyBtZWFucyBpcworICogdGhhdCBpZiB5b3UgaGF2ZSBhIHdyaXRlIHRvIG9uLWNoaXAgSS9PIGZvbGxvd2VkIGJ5IGEgYmFjay10by1iYWNrCisgKiByZWFkIG9yIHdyaXRlLCB0aGUgZmlyc3Qgd3JpdGUgd2lsbCBoYXBwZW4gdHdpY2UuIE9SLi4uaWYgaXQncworICogbm90IGEgYmFjay10by1iYWNrIHRyYW5zYWN0aW9uLCB0aGUgcmVhZCBvciB3cml0ZSB3aWxsIGdlbmVyYXRlCisgKiBpbmNvcnJlY3QgZGF0YS4KKyAqCisgKiBUaGUgb2ZmaWNpYWwgd29yayBhcm91bmQgZm9yIHRoaXMgaXMgdG8gc2V0IHRoZSBvbi1jaGlwIEkvTyByZWdpb25zCisgKiBhcyBYQ0I9MTAxIGFuZCB0aGVuIGZvcmNlIGEgcmVhZC1iYWNrIGZyb20gdGhlIHJlZ2lzdGVyLgorICoKKyAqLworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfRU5QMjYxMSkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9JWERQMjQwMCkgfHwgZGVmaW5lZChDT05GSUdfQVJDSF9JWERQMjQwMSkKKworI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4JCS8qIFBpY2t1cCBsb2NhbF9pcnFfIGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgaXhwMjAwMF9yZWdfd3JpdGUodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcmVnLCB1bnNpZ25lZCBsb25nIHZhbCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGR1bW15OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJKnJlZyA9IHZhbDsKKwliYXJyaWVyKCk7CisJZHVtbXkgPSAqcmVnOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKyNlbHNlCisjZGVmaW5lCWl4cDIwMDBfcmVnX3dyaXRlKHJlZywgdmFsKSAoKnJlZyA9IHZhbCkKKyNlbmRpZgkvKiBJWERQMjQwMCB8fCBJWERQMjQwMSAqLworCisvKgorICogQm9hcmRzIG1heSBtdWx0aXBsZXggZGlmZmVyZW50IGRldmljZXMgb24gdGhlIDJuZCBjaGFubmVsIG9mIAorICogdGhlIHNsb3dwb3J0IGludGVyZmFjZSB0aGF0IGVhY2ggbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiAKKyAqIHNldHRpbmdzLiAgRm9yIGV4YW1wbGUsIHRoZSBJWERQMjQwMCB1c2VzIGNoYW5uZWwgMiBvbiB0aGUgaW50ZXJmYWNlIAorICogdG8gYWNjZXNzIHRoZSBDUExELCB0aGUgc3dpdGNoIGZhYnJpYyBjYXJkLCBhbmQgdGhlIG1lZGlhIGNhcmQuICBFYWNoCisgKiBvbmUgbmVlZHMgYSBkaWZmZXJlbnQgbW9kZSBzbyBkcml2ZXJzIG11c3Qgc2F2ZS9yZXN0b3JlIHRoZSBtb2RlIAorICogYmVmb3JlIGFuZCBhZnRlciBlYWNoIG9wZXJhdGlvbi4gIAorICoKKyAqIGFjcXVpcmVfc2xvd3BvcnQoJnlvdXJfY29uZmlnKTsKKyAqIC4uLgorICogZG8gc2xvd3BvcnQgb3BlcmF0aW9ucworICogLi4uCisgKiByZWxlYXNlX3Nsb3dwb3J0KCk7CisgKgorICogTm90ZSB0aGF0IHdoaWxlIHlvdSBoYXZlIHRoZSBzbG93cG9ydCwgeW91IGFyZSBob2xkaW5nIGEgc3BpbmxvY2ssCisgKiBzbyB5b3VyIGNvZGUgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgaWYgeW91IGV4cGxpY2l0bHkgYWNxdWlyZWQgYSBsb2NrLgorICoKKyAqIFRoZSBjb25maWd1cmF0aW9uIG9ubHkgYWZmZWN0cyBkZXZpY2UgMiBvbiB0aGUgc2xvd3BvcnQsIHNvIHRoZQorICogTVREIG1hcCBkcml2ZXIgZG9lcyBub3QgYWNxdWlyZS9yZWxlYXNlIHRoZSBzbG93cG9ydC4gIAorICovCitzdHJ1Y3Qgc2xvd3BvcnRfY2ZnIHsKKwl1bnNpZ25lZCBsb25nIENDUjsJLyogQ2xvY2sgZGl2aWRlICovCisJdW5zaWduZWQgbG9uZyBXVEM7CS8qIFdyaXRlIFRpbWluZyBDb250cm9sICovCisJdW5zaWduZWQgbG9uZyBSVEM7CS8qIFJlYWQgVGltaW5nIENvbnRyb2wgKi8KKwl1bnNpZ25lZCBsb25nIFBDUjsJLyogUHJvdG9jb2wgQ29udHJvbCBSZWdpc3RlciAqLworCXVuc2lnbmVkIGxvbmcgQURDOwkvKiBBZGRyZXNzL0RhdGEgV2lkdGggQ29udHJvbCAqLworfTsKKworCit2b2lkIGl4cDIwMDBfYWNxdWlyZV9zbG93cG9ydChzdHJ1Y3Qgc2xvd3BvcnRfY2ZnICosIHN0cnVjdCBzbG93cG9ydF9jZmcgKik7Cit2b2lkIGl4cDIwMDBfcmVsZWFzZV9zbG93cG9ydChzdHJ1Y3Qgc2xvd3BvcnRfY2ZnICopOworCisvKgorICogSVhQMjQwMCBBMC9BMSBhbmQgIElYUDI4MDAgQTAvQTEvQTIgaGF2ZSBicm9rZW4gc2xvd3BvcnQgdGhhdCByZXF1aXJlcworICogdHdlYWtpbmcgb2YgYWRkcmVzc2VzIGluIHRoZSBNVEQgZHJpdmVyLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGl4cDIwMDBfaGFzX2Jyb2tlbl9zbG93cG9ydCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgaWQgPSAqSVhQMjAwMF9QUk9EX0lEOworCXVuc2lnbmVkIGxvbmcgaWRfcHJvZCA9IGlkICYgKElYUDIwMDBfTUFKX1BST0RfVFlQRV9NQVNLIHwKKwkJCQkgICAgICBJWFAyMDAwX01JTl9QUk9EX1RZUEVfTUFTSyk7CisJcmV0dXJuICgoKGlkX3Byb2QgPT0KKwkJICAvKiBmaXhlZCBpbiBJWFAyNDAwLUIwICovCisJCSAgKElYUDIwMDBfTUFKX1BST0RfVFlQRV9JWFAyMDAwIHwKKwkJICAgSVhQMjAwMF9NSU5fUFJPRF9UWVBFX0lYUDI0MDApKSAmJgorCQkgKChpZCAmIElYUDIwMDBfTUFKX1JFVl9NQVNLKSA9PSAwKSkgfHwKKwkJKChpZF9wcm9kID09CisJCSAgLyogZml4ZWQgaW4gSVhQMjgwMC1CMCAqLworCQkgIChJWFAyMDAwX01BSl9QUk9EX1RZUEVfSVhQMjAwMCB8CisJCSAgIElYUDIwMDBfTUlOX1BST0RfVFlQRV9JWFAyODAwKSkgJiYKKwkJICgoaWQgJiBJWFAyMDAwX01BSl9SRVZfTUFTSykgPT0gMCkpIHx8CisJCSgoaWRfcHJvZCA9PQorCQkgIC8qIGZpeGVkIGluIElYUDI4NTAtQjAgKi8KKwkJICAoSVhQMjAwMF9NQUpfUFJPRF9UWVBFX0lYUDIwMDAgfAorCQkgICBJWFAyMDAwX01JTl9QUk9EX1RZUEVfSVhQMjg1MCkpICYmCisJCSAoKGlkICYgSVhQMjAwMF9NQUpfUkVWX01BU0spID09IDApKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGl4cDIwMDBfaGFzX2ZsYXNoKHZvaWQpCit7CisJcmV0dXJuICgoKklYUDIwMDBfU1RSQVBfT1BUSU9OUykgJiAoQ0ZHX0JPT1RfUFJPTSkpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpeHAyMDAwX2lzX3BjaW1hc3Rlcih2b2lkKQoreworCXJldHVybiAoKCpJWFAyMDAwX1NUUkFQX09QVElPTlMpICYgKENGR19QQ0lfQk9PVF9IT1NUKSk7Cit9CisKK3ZvaWQgaXhwMjAwMF9tYXBfaW8odm9pZCk7Cit2b2lkIGl4cDIwMDBfaW5pdF9pcnEodm9pZCk7Cit2b2lkIGl4cDIwMDBfaW5pdF90aW1lKHVuc2lnbmVkIGxvbmcpOwordW5zaWduZWQgbG9uZyBpeHAyMDAwX2dldHRpbWVvZmZzZXQodm9pZCk7CisKK3N0cnVjdCBwY2lfc3lzX2RhdGE7CisKK3ZvaWQgaXhwMjAwMF9wY2lfcHJlaW5pdCh2b2lkKTsKK2ludCBpeHAyMDAwX3BjaV9zZXR1cChpbnQsIHN0cnVjdCBwY2lfc3lzX2RhdGEqKTsKK3N0cnVjdCBwY2lfYnVzKiBpeHAyMDAwX3BjaV9zY2FuX2J1cyhpbnQsIHN0cnVjdCBwY2lfc3lzX2RhdGEqKTsKK2ludCBpeHAyMDAwX3BjaV9yZWFkX2NvbmZpZyhzdHJ1Y3QgcGNpX2J1cyosIHVuc2lnbmVkIGludCwgaW50LCBpbnQsIHUzMiAqKTsKK2ludCBpeHAyMDAwX3BjaV93cml0ZV9jb25maWcoc3RydWN0IHBjaV9idXMqLCB1bnNpZ25lZCBpbnQsIGludCwgaW50LCB1MzIpOworCisvKgorICogU2V2ZXJhbCBvZiB0aGUgSVhQMjAwMCBzeXN0ZW1zIGhhdmUgYmFua2VkIGZsYXNoIHNvIHdlIG5lZWQgdG8gZXh0ZW5kIHRoZQorICogZmxhc2hfcGxhdGZvcm1fZGF0YSBzdHJ1Y3R1cmUgd2l0aCBzb21lIHByaXZhdGUgcG9pbnRlcnMKKyAqLworc3RydWN0IGl4cDIwMDBfZmxhc2hfZGF0YSB7CisJc3RydWN0IGZsYXNoX3BsYXRmb3JtX2RhdGEgKnBsYXRmb3JtX2RhdGE7CisJaW50IG5yX2JhbmtzOworCXVuc2lnbmVkIGxvbmcgKCpiYW5rX3NldHVwKSh1bnNpZ25lZCBsb25nKTsKK307CisKKy8qCisgKiBHUElPIGhlbHBlciBmdW5jdGlvbnMKKyAqLworI2RlZmluZQlHUElPX0lOCQkwCisjZGVmaW5lCUdQSU9fT1VUCTEKKworZXh0ZXJuIHZvaWQgZ3Bpb19saW5lX2NvbmZpZyhpbnQgbGluZSwgaW50IHN0eWxlKTsKKworc3RhdGljIGlubGluZSBpbnQgZ3Bpb19saW5lX2dldChpbnQgbGluZSkKK3sKKwlyZXR1cm4gKCgoKklYUDIwMDBfR1BJT19QTFIpID4+IGxpbmUpICYgMSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBncGlvX2xpbmVfc2V0KGludCBsaW5lLCBpbnQgdmFsdWUpCit7CisJaWYgKHZhbHVlKSAKKwkJaXhwMjAwMF9yZWdfd3JpdGUoSVhQMjAwMF9HUElPX1BPU1IsICgxIDw8IGxpbmUpKTsKKwllbHNlIAorCQlpeHAyMDAwX3JlZ193cml0ZShJWFAyMDAwX0dQSU9fUE9DUiwgKDEgPDwgbGluZSkpOworfQorCitzdHJ1Y3QgaXhwMjAwMF9pMmNfcGlucyB7CisJdW5zaWduZWQgbG9uZyBzZGFfcGluOworCXVuc2lnbmVkIGxvbmcgc2NsX3BpbjsKK307CisKKyNlbmRpZiAvKiAgIV9fQVNTRU1CTFlfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0ODljYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvc3lzdGVtLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvc3lzdGVtLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgSW50ZWwgQ29ycC4KKyAqIENvcHlyaWNodCAoQykgMjAwMy0yMDA1IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWxvY2FsX2lycV9kaXNhYmxlKCk7CisKKwkvKgorCSAqIFJlc2V0IGZsYXNoIGJhbmtpbmcgcmVnaXN0ZXIgc28gdGhhdCB3ZSBhcmUgcG9pbnRpbmcgYXQKKwkgKiBSZWRCb290IGJhbmsuCisJICovCisJaWYgKG1hY2hpbmVfaXNfaXhkcDI0MDEoKSkgeworCQkqSVhEUDJYMDFfQ1BMRF9GTEFTSF9SRUcgPSAoKDAgPj4gSVhEUDJYMDFfRkxBU0hfV0lORE9XX0JJVFMpCisJCQkJCQl8IElYRFAyWDAxX0NQTERfRkxBU0hfSU5URVJOKTsKKwkJKklYRFAyWDAxX0NQTERfUkVTRVRfUkVHID0gMHhmZmZmZmZmZjsKKwl9CisKKwkvKgorCSAqIE9uIElYRFAyODAxIHdlIG5lZWQgdG8gd3JpdGUgdGhpcyBtYWdpYyBzZXF1ZW5jZSB0byB0aGUgQ1BMRAorCSAqIHRvIGNhdXNlIGEgY29tcGxldGUgcmVzZXQgb2YgdGhlIENQVSBhbmQgYWxsIGV4dGVybmFsIGRldmljZXMKKwkgKiBhbmQgbW92ZXMgdGhlIGZsYXNoIGJhbmsgcmVnaXN0ZXIgYmFjayB0byAwLgorCSAqLworCWlmIChtYWNoaW5lX2lzX2l4ZHAyODAxKCkpIHsKKwkJdW5zaWduZWQgbG9uZyByZXNldF9yZWcgPSAqSVhEUDJYMDFfQ1BMRF9SRVNFVF9SRUc7CisJCXJlc2V0X3JlZyA9IDB4NTVBQTAwMDAgfCAocmVzZXRfcmVnICYgMHgwMDAwRkZGRik7CisJCSpJWERQMlgwMV9DUExEX1JFU0VUX1JFRyA9IHJlc2V0X3JlZzsKKwkJbWIoKTsKKwkJKklYRFAyWDAxX0NQTERfUkVTRVRfUkVHID0gMHg4MDAwMDAwMDsKKwl9CisKKwkvKgorCSAqIFdlIGRvIGEgcmVzZXQgYWxsIGlmIHdlIGFyZSBQQ0kgbWFzdGVyLiBXZSBjb3VsZCBiZSBhIHNsYXZlIGFuZCB3ZQorCSAqIGRvbid0IHdhbnQgdG8gZG8gYW55dGhpbmcgZnVua3kgb24gdGhlIFBDSSBidXMuCisJICovCisJaWYgKCpJWFAyMDAwX1NUUkFQX09QVElPTlMgJiBDRkdfUENJX0JPT1RfSE9TVCkgeworCQkqKElYUDIwMDBfUkVTRVQwKSB8PSAoUlNUQUxMKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4YTE4MwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvdGltZXguaApAQCAtMCwwICsxLDEzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC90aW1leC5oCisgKgorICogSVhQMjAwMCBhcmNoaXRlY3R1cmUgdGltZXggc3BlY2lmaWNhdGlvbnMKKyAqLworCisKKy8qCisgKiBEZWZhdWx0IGNsb2NrIGlzIDUwTUh6IEFQQiwgYnV0IHBsYXRmb3JtIGNvZGUgY2FuIG92ZXJyaWRlIHRoaXMKKyAqLworI2RlZmluZSBDTE9DS19USUNLX1JBVEUJNTAwMDAwMDAKKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkM2Q1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC91bmNvbXByZXNzLmgKKyAqCisgKgorICogT3JpZ2luYWwgQXV0aG9yOiBOYWVlbSBBZnphbCA8bmFlZW0ubS5hZnphbEBpbnRlbC5jb20+CisgKiBNYWludGFpbmVyOiBEZWVwYWsgU2F4ZW5hIDxkc2F4ZW5hQHBsZXhpdHkubmV0PgorICoKKyAqIENvcHlyaWdodCAyMDAyIEludGVsIENvcnAuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+CisKKyNkZWZpbmUgVUFSVF9CQVNFCTB4YzAwMzAwMDAKKworI2RlZmluZSBQSFlTKHgpICAgICAgICAgICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShVQVJUX0JBU0UgKyB4KSkKKworI2RlZmluZSBVQVJURFIgICAgICAgICAgUEhZUygweDAwKSAgICAgIC8qIFRyYW5zbWl0IHJlZyBkbGFiPTAgKi8KKyNkZWZpbmUgVUFSVERMTCAgICAgICAgIFBIWVMoMHgwMCkgICAgICAvKiBEaXZpc29yIExhdGNoIHJlZyBkbGFiPTEqLworI2RlZmluZSBVQVJURExNICAgICAgICAgUEhZUygweDA0KSAgICAgIC8qIERpdmlzb3IgTGF0Y2ggcmVnIGRsYWI9MSovCisjZGVmaW5lIFVBUlRJRVIgICAgICAgICBQSFlTKDB4MDQpICAgICAgLyogSW50ZXJydXB0IGVuYWJsZSByZWcgKi8KKyNkZWZpbmUgVUFSVEZDUiAgICAgICAgIFBIWVMoMHgwOCkgICAgICAvKiBGSUZPIGNvbnRyb2wgcmVnIGRsYWIgPTAqLworI2RlZmluZSBVQVJUTENSICAgICAgICAgUEhZUygweDBjKSAgICAgIC8qIENvbnRyb2wgcmVnICovCisjZGVmaW5lIFVBUlRTUiAgICAgICAgICBQSFlTKDB4MTQpICAgICAgLyogU3RhdHVzIHJlZyAqLworCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgcHV0YyhjaGFyIGMpCit7CisJaW50IGogPSAweDEwMDA7CisKKwl3aGlsZSAoLS1qICYmICEoKlVBUlRTUiAmIFVBUlRfTFNSX1RIUkUpKTsgCisJKlVBUlREUiA9IGM7Cit9CisKK3N0YXRpYyB2b2lkIHB1dHN0cihjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykKKwl7CisJCXB1dGMoKnMpOworCQlpZiAoKnMgPT0gJ1xuJykKKwkJCXB1dGMoJ1xyJyk7CisJCXMrKzsKKwl9Cit9CisKKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjAwMC92bWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0YmNiYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIwMDAvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyMDAwL3ZtYWxsb2MuaAorICoKKyAqIEF1dGhvcjogTmFlZW0gQWZ6YWwgPG5hZWVtLm0uYWZ6YWxAaW50ZWwuY29tPgorICoKKyAqIENvcHlyaWdodCAyMDAyIEludGVsIENvcnAuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19WTUFERFIoeCkgICAoKHVuc2lnbmVkIGxvbmcpKHgpKQorI2RlZmluZSBWTUFMTE9DX0VORAkgICAgMHhmYWZmZWZmZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2NveW90ZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2NveW90ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMGMyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvY295b3RlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9jb3lvdGUuaAorICoKKyAqIEFESSBFbmdpbmVlcmluZyBwbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbml0aW9ucworICoKKyAqIEF1dGhvcjogRGVlcGFrIFNheGVuYSA8ZHNheGVuYUBwbGV4aXR5Lm5ldD4KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCAoYykgTW9udGFWaXN0YSwgU29mdHdhcmUsIEluYy4gCisgKiAKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkgCisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0hfXworI2Vycm9yICJEbyBub3QgaW5jbHVkZSB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4iCisjZW5kaWYKKworI2RlZmluZQlDT1lPVEVfRkxBU0hfQkFTRQlJWFA0WFhfRVhQX0JVU19DUzBfQkFTRV9QSFlTCisjZGVmaW5lCUNPWU9URV9GTEFTSF9TSVpFCUlYUDRYWF9FWFBfQlVTX0NTWF9SRUdJT05fU0laRSAqIDIKKworLyogUENJIGNvbnRyb2xsZXIgR1BJTyB0byBJUlEgcGluIG1hcHBpbmdzICovCisjZGVmaW5lCUNPWU9URV9QQ0lfU0xPVDBfUElOCTYKKyNkZWZpbmUJQ09ZT1RFX1BDSV9TTE9UMV9QSU4JMTEKKworI2RlZmluZQlDT1lPVEVfUENJX1NMT1QwX0RFVklECTE0CisjZGVmaW5lCUNPWU9URV9QQ0lfU0xPVDFfREVWSUQJMTUKKworI2RlZmluZQlDT1lPVEVfSURFX0JBU0VfUEhZUwlJWFA0WFhfRVhQX0JVU19DUzNfQkFTRV9QSFlTCisjZGVmaW5lCUNPWU9URV9JREVfQkFTRV9WSVJUCTB4RkZGRTEwMDAKKyNkZWZpbmUJQ09ZT1RFX0lERV9SRUdJT05fU0laRQkweDEwMDAKKworI2RlZmluZQlDT1lPVEVfSURFX0RBVEFfUE9SVAkweEZGRkUxMEUwCisjZGVmaW5lCUNPWU9URV9JREVfQ1RSTF9QT1JUCTB4RkZGRTEwRkMKKyNkZWZpbmUJQ09ZT1RFX0lERV9FUlJPUl9QT1JUCTB4RkZGRTEwRTIKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDk5YWU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwzNCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorKi8KKworICAgICAgICAgICAgICAgIC5tYWNybyAgYWRkcnVhcnQscngKKyAgICAgICAgICAgICAgICBtcmMgICAgIHAxNSwgMCwgXHJ4LCBjMSwgYzAKKyAgICAgICAgICAgICAgICB0c3QgICAgIFxyeCwgIzEgICAgICAgICAgICAgICAgIEAgTU1VIGVuYWJsZWQ/CisgICAgICAgICAgICAgICAgbW92ZXEgICBccngsICMweGM4MDAwMDAwCisgICAgICAgICAgICAgICAgbW92bmUgICBccngsICMweGZmMDAwMDAwCisgICAgICAgICAgICAgICAgYWRkICAgICBccngsXHJ4LCMzICAgICAgICAgICAgICBAIFVhcnQgcmVncyBhcmUgYXQgb2ZmIHNldCBvZiAzIGlmCisJCQkJCQlAIGJ5dGUgd3JpdGVzIHVzZWQgLSBCaWcgRW5kaWFuLgorICAgICAgICAgICAgICAgIC5lbmRtCisKKyAgICAgICAgICAgICAgIC5tYWNybyAgc2VuZHVhcnQscmQscngKKyAgICAgICAgICAgICAgICBzdHJiICAgIFxyZCwgW1xyeF0KKyAgICAgICAgICAgICAgICAuZW5kbQorCisgICAgICAgICAgICAgICAgLm1hY3JvICB3YWl0dWFydCxyZCxyeAorMTAwMjogICAgICAgICAgIGxkcmIgICAgXHJkLCBbXHJ4LCAjMHgxNF0KKyAgICAgICAgICAgICAgICBhbmQgICAgIFxyZCwgXHJkLCAjMHg2MAkJQCBjaGVjayBUSFJFIGFuZCBURU1UIGJpdHMKKyAgICAgICAgICAgICAgICB0ZXEgICAgIFxyZCwgIzB4NjAKKyAgICAgICAgICAgICAgICBibmUgICAgIDEwMDJiCisgICAgICAgICAgICAgICAgLmVuZG0KKworICAgICAgICAgICAgICAgIC5tYWNybyAgYnVzeXVhcnQscmQscngKKyAgICAgICAgICAgICAgICAuZW5kbQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMjA2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvZG1hLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9kbWEuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkoUEFHRV9PRkZTRVQgKyBTWl82NE0pCisKKy8qIE5vIERNQSAqLworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTVkYTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBJWFA0eHgtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJCWxkcglcaXJxc3RhdCwgPShJWFA0WFhfSU5UQ19CQVNFX1ZJUlQrSVhQNFhYX0lDSVBfT0ZGU0VUKQorCQlsZHIJXGlycXN0YXQsIFtcaXJxc3RhdF0JCUAgZ2V0IGludGVycnVwdHMKKwkJY21wCVxpcnFzdGF0LCAjMAorCQliZXEJMTAwMWYKKwkJY2x6ICAgICBcaXJxbnIsIFxpcnFzdGF0CisJCW1vdiAgICAgXGJhc2UsICMzMQorCQlzdWJzICAgIFxpcnFuciwgXGJhc2UsIFxpcnFucgorCisxMDAxOgorCQkvKgorCQkgKiBJWFA0NjUgaGFzIGFuIHVwcGVyIElSUSBzdGF0dXMgcmVnaXN0ZXIKKwkJICovCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX0lYUDQ2WCkKKwkJYm5lIAkxMDAyZgorCQlsZHIJXGlycXN0YXQsID0oSVhQNFhYX0lOVENfQkFTRV9WSVJUK0lYUDRYWF9JQ0lQMl9PRkZTRVQpCisJCWxkcglcaXJxc3RhdCwgW1xpcnFzdGF0XQkJQCBnZXQgdXBwZXIgaW50ZXJydXB0cworCQltb3YJXGlycW5yLCAjNjMKKwkJY2x6CVxpcnFzdGF0LCBcaXJxc3RhdAorIAkJY21wCVxpcnFzdGF0LCAjMzIKKwkJc3VibmUJXGlycW5yLCBcaXJxbnIsIFxpcnFzdGF0CisxMDAyOgorI2VuZGlmCisJCS5lbmRtCisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2d0d3g1NzE1LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvZ3R3eDU3MTUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzQ2MGFmNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9ndHd4NTcxNS5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2d0d3g1NzE1LmgKKyAqCisgKiBHZW10ZWsgR1RXWDU3MTUgR2F0ZXdheSAoTGlua3N5cyBXUlY1NEcpCisgKgorICogQ29weXJpZ2h0IDIwMDQgKGMpIEdlb3JnZSBULiBKb3NlcGgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKKyAqIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSF9fCisjZXJyb3IgIkRvIG5vdCBpbmNsdWRlIHRoaXMgZGlyZWN0bHksIGluc3RlYWQgI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPiIKKyNlbmRpZgorI2luY2x1ZGUgImlycXMuaCIKKworI2RlZmluZSBHVFdYNTcxNV9HUElPMAkwCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xCTEKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzIJMgorI2RlZmluZSBHVFdYNTcxNV9HUElPMwkzCisjZGVmaW5lIEdUV1g1NzE1X0dQSU80CTQKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzUJNQorI2RlZmluZSBHVFdYNTcxNV9HUElPNgk2CisjZGVmaW5lIEdUV1g1NzE1X0dQSU83CTcKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzgJOAorI2RlZmluZSBHVFdYNTcxNV9HUElPOQk5CisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xMAkxMAorI2RlZmluZSBHVFdYNTcxNV9HUElPMTEJMTEKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzEyCTEyCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xMwkxMworI2RlZmluZSBHVFdYNTcxNV9HUElPMTQJMTQKKworI2RlZmluZSBHVFdYNTcxNV9HUElPMF9JUlEJCQlJUlFfSVhQNFhYX0dQSU8wCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xX0lSUQkJCUlSUV9JWFA0WFhfR1BJTzEKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzJfSVJRCQkJSVJRX0lYUDRYWF9HUElPMgorI2RlZmluZSBHVFdYNTcxNV9HUElPM19JUlEJCQlJUlFfSVhQNFhYX0dQSU8zCisjZGVmaW5lIEdUV1g1NzE1X0dQSU80X0lSUQkJCUlSUV9JWFA0WFhfR1BJTzQKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzVfSVJRCQkJSVJRX0lYUDRYWF9HUElPNQorI2RlZmluZSBHVFdYNTcxNV9HUElPNl9JUlEJCQlJUlFfSVhQNFhYX0dQSU82CisjZGVmaW5lIEdUV1g1NzE1X0dQSU83X0lSUQkJCUlSUV9JWFA0WFhfR1BJTzcKKyNkZWZpbmUgR1RXWDU3MTVfR1BJTzhfSVJRCQkJSVJRX0lYUDRYWF9HUElPOAorI2RlZmluZSBHVFdYNTcxNV9HUElPOV9JUlEJCQlJUlFfSVhQNFhYX0dQSU85CisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xMF9JUlEJCUlSUV9JWFA0WFhfR1BJTzEwCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xMV9JUlEJCUlSUV9JWFA0WFhfR1BJTzExCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xMl9JUlEJCUlSUV9JWFA0WFhfR1BJTzEyCisjZGVmaW5lIEdUV1g1NzE1X0dQSU8xM19JUlEJCUlSUV9JWFA0WFhfU1dfSU5UMQorI2RlZmluZSBHVFdYNTcxNV9HUElPMTRfSVJRCQlJUlFfSVhQNFhYX1NXX0lOVDIKKworCisjZGVmaW5lCUdUV1g1NzE1X0ZMQVNIX0JBU0UJSVhQNFhYX0VYUF9CVVNfQ1MwX0JBU0VfUEhZUworI2RlZmluZQlHVFdYNTcxNV9GTEFTSF9TSVpFCSgweDAwODAwMDAwKQorCisvKiBQQ0kgY29udHJvbGxlciBHUElPIHRvIElSUSBwaW4gbWFwcGluZ3MKKworCQkJSU5UQQlJTlRCCitTTE9UIDAJMTAJCTExCitTTE9UIDEJMTEJCTEwCisKKyovCisKKyNkZWZpbmUJR1RXWDU3MTVfUENJX1NMT1QwX0RFVklECTAKKyNkZWZpbmUJR1RXWDU3MTVfUENJX1NMT1QwX0lOVEFfR1BJTwlHVFdYNTcxNV9HUElPMTAKKyNkZWZpbmUJR1RXWDU3MTVfUENJX1NMT1QwX0lOVEJfR1BJTwlHVFdYNTcxNV9HUElPMTEKKyNkZWZpbmUJR1RXWDU3MTVfUENJX1NMT1QwX0lOVEFfSVJRCUdUV1g1NzE1X0dQSU8xMF9JUlEKKyNkZWZpbmUJR1RXWDU3MTVfUENJX1NMT1QwX0lOVEJfSVJRCUdUV1g1NzE1X0dQSU8xMV9JUlEKKworI2RlZmluZQlHVFdYNTcxNV9QQ0lfU0xPVDFfREVWSUQJMQorI2RlZmluZQlHVFdYNTcxNV9QQ0lfU0xPVDFfSU5UQV9HUElPCUdUV1g1NzE1X0dQSU8xMQorI2RlZmluZQlHVFdYNTcxNV9QQ0lfU0xPVDFfSU5UQl9HUElPCUdUV1g1NzE1X0dQSU8xMAorI2RlZmluZQlHVFdYNTcxNV9QQ0lfU0xPVDFfSU5UQV9JUlEJR1RXWDU3MTVfR1BJTzExX0lSUQorI2RlZmluZQlHVFdYNTcxNV9QQ0lfU0xPVDFfSU5UQl9JUlEJR1RXWDU3MTVfR1BJTzEwX0lSUQorCisjZGVmaW5lIEdUV1g1NzE1X1BDSV9TTE9UX0NPVU5UCQkJMgorI2RlZmluZSBHVFdYNTcxNV9QQ0lfSU5UX1BJTl9DT1VOVAkJMgorCisvKgorICogR1BJTyA1LDYsNyBhbmQxMiBhcmUgaGFyZCB3aXJlZCB0byB0aGUgS2VuZGluIEtTODk5NU0gU3dpdGNoCisgKiBhbmQgb3BlcmF0ZSBhcyBhbiBTUEkgdHlwZSBpbnRlcmZhY2UuICBUaGUgZGV0YWlscyBvZiB0aGUgaW50ZXJmYWNlCisgKiBhcmUgYXZhaWxhYmxlIG9uIEtlbmRpbi9NaWNyZWwncyB3ZWIgc2l0ZS4KKyAqLworCisjZGVmaW5lIEdUV1g1NzE1X0tTU1BJX1NFTEVDVAlHVFdYNTcxNV9HUElPNQorI2RlZmluZSBHVFdYNTcxNV9LU1NQSV9UWEQJCUdUV1g1NzE1X0dQSU82CisjZGVmaW5lIEdUV1g1NzE1X0tTU1BJX0NMT0NLCUdUV1g1NzE1X0dQSU83CisjZGVmaW5lIEdUV1g1NzE1X0tTU1BJX1JYRAkJR1RXWDU3MTVfR1BJTzEyCisKKy8qCisgKiBUaGUgInJlc2V0IiBidXR0b24gaXMgd2lyZWQgdG8gR1BJTyAzLgorICogVGhlIEdQSU8gaXMgYnJvdWdodCAibG93IiB3aGVuIHRoZSBidXR0b24gaXMgcHVzaGVkLgorICovCisKKyNkZWZpbmUgR1RXWDU3MTVfQlVUVE9OX0dQSU8JR1RXWDU3MTVfR1BJTzMKKyNkZWZpbmUgR1RXWDU3MTVfQlVUVE9OX0lSUQlHVFdYNTcxNV9HUElPM19JUlEKKworLyoKKyAqICBCb2FyZCBMYWJlbCAgICAgIEZyb250IExhYmVsCisgKiAgTEVEMSAgICAgICAgICAgICBQb3dlcgorICogIExFRDIgICAgICAgICAgICAgV2lyZWxlc3MtRworICogIExFRDMgICAgICAgICAgICAgbm90IHBvcHVsYXRlZCBidXQgY291bGQgYmUKKyAqICBMRUQ0ICAgICAgICAgICAgIEludGVybmV0CisgKiAgTEVENSAtIExFRDggICAgICBDb250cm9sbGVkIGJ5IEtTODk5NU0gU3dpdGNoCisgKiAgTEVEOSAgICAgICAgICAgICBETVoKKyAqLworCisjZGVmaW5lIEdUV1g1NzE1X0xFRDFfR1BJTwkJR1RXWDU3MTVfR1BJTzIKKyNkZWZpbmUgR1RXWDU3MTVfTEVEMl9HUElPCQlHVFdYNTcxNV9HUElPOQorI2RlZmluZSBHVFdYNTcxNV9MRUQzX0dQSU8JCUdUV1g1NzE1X0dQSU84CisjZGVmaW5lIEdUV1g1NzE1X0xFRDRfR1BJTwkJR1RXWDU3MTVfR1BJTzEKKyNkZWZpbmUgR1RXWDU3MTVfTEVEOV9HUElPCQlHVFdYNTcxNV9HUElPNApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM5NjRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2hhcmR3YXJlLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9oYXJkd2FyZS5oIAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisvKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIElYUDR4eCBiYXNlZCBzeXN0ZW1zCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0hfXworI2RlZmluZSBfX0FTTV9BUkNIX0hBUkRXQVJFX0hfXworCisjZGVmaW5lIFBDSUJJT1NfTUlOX0lPCQkJMHgwMDAwMTAwMAorI2RlZmluZSBQQ0lCSU9TX01JTl9NRU0JCQkweDQ4MDAwMDAwCisKKy8qCisgKiBXZSBvdmVycmlkZSB0aGUgc3RhbmRhcmQgZG1hLW1hc2sgcm91dGluZXMgZm9yIGJvdW5jaW5nLgorICovCisjZGVmaW5lCUhBVkVfQVJDSF9QQ0lfU0VUX0RNQV9NQVNLCisKKyNkZWZpbmUgcGNpYmlvc19hc3NpZ25fYWxsX2J1c3NlcygpCTEKKworI2lmIGRlZmluZWQoQ09ORklHX0NQVV9JWFA0NjUpICYmICFkZWZpbmVkKF9fQVNTRU1CTFlfXykKK2V4dGVybiB1bnNpZ25lZCBpbnQgcHJvY2Vzc29yX2lkOworI2RlZmluZSBjcHVfaXNfaXhwNDY1KCkgKChwcm9jZXNzb3JfaWQgJiAweGZmZmZmZmMwKSA9PSAweDY5MDU0MjAwKQorI2Vsc2UKKyNkZWZpbmUJY3B1X2lzX2l4cDQ2NSgpCSgwKQorI2VuZGlmCisKKy8qIFJlZ2lzdGVyIGxvY2F0aW9ucyBhbmQgYml0cyAqLworI2luY2x1ZGUgIml4cDR4eC1yZWdzLmgiCisKKy8qIFBsYXRmb3JtIGhlbHBlciBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zICovCisjaW5jbHVkZSAicGxhdGZvcm0uaCIKKworLyogUGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscyAqLworI2luY2x1ZGUgIml4ZHA0MjUuaCIKKyNpbmNsdWRlICJjb3lvdGUuaCIKKyNpbmNsdWRlICJwcnBtYzExMDAuaCIKKworI2VuZGlmICAvKiBfQVNNX0FSQ0hfSEFSRFdBUkVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjdiOWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2lvLmgKQEAgLTAsMCArMSwzODggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaW8uaAorICoKKyAqIEF1dGhvcjogRGVlcGFrIFNheGVuYSA8ZHNheGVuYUBwbGV4aXR5Lm5ldD4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCAgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZjAwMDAKKworI2RlZmluZQlCSVQoeCkJKCgxKTw8KHgpKQorCisKK2V4dGVybiBpbnQgKCppeHA0eHhfcGNpX3JlYWQpKHUzMiBhZGRyLCB1MzIgY21kLCB1MzIqIGRhdGEpOworZXh0ZXJuIGludCBpeHA0eHhfcGNpX3dyaXRlKHUzMiBhZGRyLCB1MzIgY21kLCB1MzIgZGF0YSk7CisKKworLyoKKyAqIElYUDR4eCBwcm92aWRlcyB0d28gbWV0aG9kcyBvZiBhY2Nlc3NpbmcgUENJIG1lbW9yeSBzcGFjZToKKyAqCisgKiAxKSBBIGRpcmVjdCBtYXBwZWQgd2luZG93IGZyb20gMHg0ODAwMDAwMCB0byAweDRiZmZmZmZmICg2NE1CKS4KKyAqICAgIFRvIGFjY2VzcyBQQ0kgdmlhIHRoaXMgc3BhY2UsIHdlIHNpbXBseSBpb3JlbWFwKCkgdGhlIEJBUgorICogICAgaW50byB0aGUga2VybmVsIGFuZCB3ZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCByZWFkW2J3bF0vd3JpdGVbYndsXQorICogICAgbWFjcm9zLiBUaGlzIGlzIHRoZSBwcmVmZmVyZWQgbWV0aG9kIGR1ZSB0byBzcGVlZCBidXQgaXQKKyAqICAgIGxpbWl0cyB0aGUgc3lzdGVtIHRvIGp1c3QgNjRNQiBvZiBQQ0kgbWVtb3J5LiBUaGlzIGNhbiBiZSAKKyAqICAgIHByb2JsYW1hdGljIGlmIHVzaW5nIHZpZGVvIGNhcmRzIGFuZCBvdGhlciBtZW1vcnktaGVhdnkKKyAqICAgIHRhcmdldHMuCisgKgorICogMikgSWYgPiA2NE1CIG9mIG1lbW9yeSBzcGFjZSBpcyByZXF1aXJlZCwgdGhlIElYUDR4eCBjYW4gYmUgY29uZmlndXJlZAorICogICAgdG8gdXNlIGluZGlyZWN0IHJlZ2lzdGVycyB0byBhY2Nlc3MgUENJIChhcyB3ZSBkbyBiZWxvdyBmb3IgSS9PCisgKiAgICB0cmFuc2FjdGlvbnMpLiBUaGlzIGFsbG93cyBmb3IgdXAgdG8gMTI4TUIgKDB4NDgwMDAwMDAgdG8gMHg0ZmZmZmZmZikKKyAqICAgIG9mIG1lbW9yeSBvbiB0aGUgYnVzLiBUaGUgZGlzYWR2YW50YWRnZSBvZiB0aGlzIGlzIHRoYXQgZXZlcnkgCisgKiAgICBQQ0kgYWNjZXNzIHJlcXVpcmVzIHRocmVlIGxvY2FsIHJlZ2lzdGVyIGFjY2Vzc2VzIHBsdXMgYSBzcGlubG9jaywKKyAqICAgIGJ1dCBpbiBzb21lIGNhc2VzIHRoZSBwZXJmb3JtYW5jZSBoaXQgaXMgYWNjZXB0YWJsZS4gSW4gYWRkaXRpb24sCisgKiAgICB5b3UgY2Fubm90IG1tYXAoKSBQQ0kgZGV2aWNlcyBpbiB0aGlzIGNhc2UuCisgKgorICovCisjaWZuZGVmCUNPTkZJR19JWFA0WFhfSU5ESVJFQ1RfUENJCisKKyNkZWZpbmUgX19tZW1fcGNpKGEpCQkoYSkKKworI2Vsc2UKKworI2luY2x1ZGUgPGxpbnV4L21tLmg+CisKKy8qCisgKiBJbiB0aGUgY2FzZSBvZiB1c2luZyBpbmRpcmVjdCBQQ0ksIHdlIHNpbXBseSByZXR1cm4gdGhlIGFjdHVhbCBQQ0kKKyAqIGFkZHJlc3MgYW5kIG91ciByZWFkL3dyaXRlIGltcGxlbWVudGF0aW9uIHVzZSB0aGF0IHRvIGRyaXZlIHRoZSAKKyAqIGFjY2VzcyByZWdpc3RlcnMuIElmIHNvbWV0aGluZyBvdXRzaWRlIG9mIFBDSSBpcyBpb3JlbWFwJ2QsIHdlCisgKiBmYWxsYmFjayB0byB0aGUgZGVmYXVsdC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKgorX19peHA0eHhfaW9yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzLCB1bnNpZ25lZCBsb25nIGFsaWduKQoreworCWV4dGVybiB2b2lkIF9faW9tZW0gKiBfX2lvcmVtYXAodW5zaWduZWQgbG9uZywgc2l6ZV90LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKwlpZigoYWRkciA8IDB4NDgwMDAwMDApIHx8IChhZGRyID4gMHg0ZmZmZmZmZikpCisJCXJldHVybiBfX2lvcmVtYXAoYWRkciwgc2l6ZSwgZmxhZ3MsIGFsaWduKTsKKworCXJldHVybiAodm9pZCAqKWFkZHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX19peHA0eHhfaW91bm1hcCh2b2lkIF9faW9tZW0gKmFkZHIpCit7CisJZXh0ZXJuIHZvaWQgX19pb3VubWFwKHZvaWQgX19pb21lbSAqYWRkcik7CisKKwlpZiAoKHUzMilhZGRyID49IFZNQUxMT0NfU1RBUlQpCisJCV9faW91bm1hcChhZGRyKTsKK30KKworI2RlZmluZSBfX2FyY2hfaW9yZW1hcChhLCBzLCBmLCB4KQlfX2l4cDR4eF9pb3JlbWFwKGEsIHMsIGYsIHgpCisjZGVmaW5lCV9fYXJjaF9pb3VubWFwKGEpCQlfX2l4cDR4eF9pb3VubWFwKGEpCisKKyNkZWZpbmUJd3JpdGViKHAsIHYpCQkJX19peHA0eHhfd3JpdGViKHAsIHYpCisjZGVmaW5lCXdyaXRldyhwLCB2KQkJCV9faXhwNHh4X3dyaXRldyhwLCB2KQorI2RlZmluZQl3cml0ZWwocCwgdikJCQlfX2l4cDR4eF93cml0ZWwocCwgdikKKworI2RlZmluZQl3cml0ZXNiKHAsIHYsIGwpCQlfX2l4cDR4eF93cml0ZXNiKHAsIHYsIGwpCisjZGVmaW5lCXdyaXRlc3cocCwgdiwgbCkJCV9faXhwNHh4X3dyaXRlc3cocCwgdiwgbCkKKyNkZWZpbmUJd3JpdGVzbChwLCB2LCBsKQkJX19peHA0eHhfd3JpdGVzbChwLCB2LCBsKQorCQorI2RlZmluZQlyZWFkYihwKQkJCV9faXhwNHh4X3JlYWRiKHApCisjZGVmaW5lCXJlYWR3KHApCQkJX19peHA0eHhfcmVhZHcocCkKKyNkZWZpbmUJcmVhZGwocCkJCQlfX2l4cDR4eF9yZWFkbChwKQorCQorI2RlZmluZQlyZWFkc2IocCwgdiwgbCkJCQlfX2l4cDR4eF9yZWFkc2IocCwgdiwgbCkKKyNkZWZpbmUJcmVhZHN3KHAsIHYsIGwpCQkJX19peHA0eHhfcmVhZHN3KHAsIHYsIGwpCisjZGVmaW5lCXJlYWRzbChwLCB2LCBsKQkJCV9faXhwNHh4X3JlYWRzbChwLCB2LCBsKQorCitzdGF0aWMgaW5saW5lIHZvaWQgCitfX2l4cDR4eF93cml0ZWIodTggdmFsdWUsIHUzMiBhZGRyKQoreworCXUzMiBuLCBieXRlX2VuYWJsZXMsIGRhdGE7CisKKwlpZiAoYWRkciA+PSBWTUFMTE9DX1NUQVJUKSB7CisJCV9fcmF3X3dyaXRlYih2YWx1ZSwgYWRkcik7CisJCXJldHVybjsKKwl9CisKKwluID0gYWRkciAlIDQ7CisJYnl0ZV9lbmFibGVzID0gKDB4ZiAmIH5CSVQobikpIDw8IElYUDRYWF9QQ0lfTlBfQ0JFX0JFU0w7CisJZGF0YSA9IHZhbHVlIDw8ICg4Km4pOworCWl4cDR4eF9wY2lfd3JpdGUoYWRkciwgYnl0ZV9lbmFibGVzIHwgTlBfQ01EX01FTVdSSVRFLCBkYXRhKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfX2l4cDR4eF93cml0ZXNiKHUzMiBidXNfYWRkciwgdTggKnZhZGRyLCBpbnQgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCXdyaXRlYigqdmFkZHIrKywgYnVzX2FkZHIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgCitfX2l4cDR4eF93cml0ZXcodTE2IHZhbHVlLCB1MzIgYWRkcikKK3sKKwl1MzIgbiwgYnl0ZV9lbmFibGVzLCBkYXRhOworCisJaWYgKGFkZHIgPj0gVk1BTExPQ19TVEFSVCkgeworCQlfX3Jhd193cml0ZXcodmFsdWUsIGFkZHIpOworCQlyZXR1cm47CisJfQorCisJbiA9IGFkZHIgJSA0OworCWJ5dGVfZW5hYmxlcyA9ICgweGYgJiB+KEJJVChuKSB8IEJJVChuKzEpKSkgPDwgSVhQNFhYX1BDSV9OUF9DQkVfQkVTTDsKKwlkYXRhID0gdmFsdWUgPDwgKDgqbik7CisJaXhwNHh4X3BjaV93cml0ZShhZGRyLCBieXRlX2VuYWJsZXMgfCBOUF9DTURfTUVNV1JJVEUsIGRhdGEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19faXhwNHh4X3dyaXRlc3codTMyIGJ1c19hZGRyLCB1MTYgKnZhZGRyLCBpbnQgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCXdyaXRldygqdmFkZHIrKywgYnVzX2FkZHIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgCitfX2l4cDR4eF93cml0ZWwodTMyIHZhbHVlLCB1MzIgYWRkcikKK3sKKwlpZiAoYWRkciA+PSBWTUFMTE9DX1NUQVJUKSB7CisJCV9fcmF3X3dyaXRlbCh2YWx1ZSwgYWRkcik7CisJCXJldHVybjsKKwl9CisKKwlpeHA0eHhfcGNpX3dyaXRlKGFkZHIsIE5QX0NNRF9NRU1XUklURSwgdmFsdWUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19faXhwNHh4X3dyaXRlc2wodTMyIGJ1c19hZGRyLCB1MzIgKnZhZGRyLCBpbnQgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCXdyaXRlbCgqdmFkZHIrKywgYnVzX2FkZHIpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgCitfX2l4cDR4eF9yZWFkYih1MzIgYWRkcikKK3sKKwl1MzIgbiwgYnl0ZV9lbmFibGVzLCBkYXRhOworCisJaWYgKGFkZHIgPj0gVk1BTExPQ19TVEFSVCkKKwkJcmV0dXJuIF9fcmF3X3JlYWRiKGFkZHIpOworCisJbiA9IGFkZHIgJSA0OworCWJ5dGVfZW5hYmxlcyA9ICgweGYgJiB+QklUKG4pKSA8PCBJWFA0WFhfUENJX05QX0NCRV9CRVNMOworCWlmIChpeHA0eHhfcGNpX3JlYWQoYWRkciwgYnl0ZV9lbmFibGVzIHwgTlBfQ01EX01FTVJFQUQsICZkYXRhKSkKKwkJcmV0dXJuIDB4ZmY7CisKKwlyZXR1cm4gZGF0YSA+PiAoOCpuKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfX2l4cDR4eF9yZWFkc2IodTMyIGJ1c19hZGRyLCB1OCAqdmFkZHIsIHUzMiBjb3VudCkKK3sKKwl3aGlsZSAoY291bnQtLSkKKwkJKnZhZGRyKysgPSByZWFkYihidXNfYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgCitfX2l4cDR4eF9yZWFkdyh1MzIgYWRkcikKK3sKKwl1MzIgbiwgYnl0ZV9lbmFibGVzLCBkYXRhOworCisJaWYgKGFkZHIgPj0gVk1BTExPQ19TVEFSVCkKKwkJcmV0dXJuIF9fcmF3X3JlYWR3KGFkZHIpOworCisJbiA9IGFkZHIgJSA0OworCWJ5dGVfZW5hYmxlcyA9ICgweGYgJiB+KEJJVChuKSB8IEJJVChuKzEpKSkgPDwgSVhQNFhYX1BDSV9OUF9DQkVfQkVTTDsKKwlpZiAoaXhwNHh4X3BjaV9yZWFkKGFkZHIsIGJ5dGVfZW5hYmxlcyB8IE5QX0NNRF9NRU1SRUFELCAmZGF0YSkpCisJCXJldHVybiAweGZmZmY7CisKKwlyZXR1cm4gZGF0YT4+KDgqbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19faXhwNHh4X3JlYWRzdyh1MzIgYnVzX2FkZHIsIHUxNiAqdmFkZHIsIHUzMiBjb3VudCkKK3sKKwl3aGlsZSAoY291bnQtLSkKKwkJKnZhZGRyKysgPSByZWFkdyhidXNfYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyAKK19faXhwNHh4X3JlYWRsKHUzMiBhZGRyKQoreworCXUzMiBkYXRhOworCisJaWYgKGFkZHIgPj0gVk1BTExPQ19TVEFSVCkKKwkJcmV0dXJuIF9fcmF3X3JlYWRsKGFkZHIpOworCisJaWYgKGl4cDR4eF9wY2lfcmVhZChhZGRyLCBOUF9DTURfTUVNUkVBRCwgJmRhdGEpKQorCQlyZXR1cm4gMHhmZmZmZmZmZjsKKworCXJldHVybiBkYXRhOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgCitfX2l4cDR4eF9yZWFkc2wodTMyIGJ1c19hZGRyLCB1MzIgKnZhZGRyLCB1MzIgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCSp2YWRkcisrID0gcmVhZGwoYnVzX2FkZHIpOworfQorCisKKy8qCisgKiBXZSBjYW4gdXNlIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYi9jIHRoZXkgZW5kIHVwIGNhbGxpbmcgd3JpdGViL3JlYWRiCisgKi8KKyNkZWZpbmUgbWVtc2V0X2lvKGMsdixsKQkJX21lbXNldF9pbygoYyksKHYpLChsKSkKKyNkZWZpbmUgbWVtY3B5X2Zyb21pbyhhLGMsbCkJCV9tZW1jcHlfZnJvbWlvKChhKSwoYyksKGwpKQorI2RlZmluZSBtZW1jcHlfdG9pbyhjLGEsbCkJCV9tZW1jcHlfdG9pbygoYyksKGEpLChsKSkKKworI2RlZmluZSBldGhfaW9fY29weV9hbmRfc3VtKHMsYyxsLGIpIFwKKwkJCQlldGhfY29weV9hbmRfc3VtKChzKSxfX21lbV9wY2koYyksKGwpLChiKSkKKworc3RhdGljIGlubGluZSBpbnQKK2NoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGJ1c19hZGRyLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWduYXR1cmUsCisJCWludCBsZW5ndGgpCit7CisJaW50IHJldHZhbCA9IDA7CisJZG8geworCQlpZiAocmVhZGIoYnVzX2FkZHIpICE9ICpzaWduYXR1cmUpCisJCQlnb3RvIG91dDsKKwkJYnVzX2FkZHIrKzsKKwkJc2lnbmF0dXJlKys7CisJCWxlbmd0aC0tOworCX0gd2hpbGUgKGxlbmd0aCk7CisJcmV0dmFsID0gMTsKK291dDoKKwlyZXR1cm4gcmV0dmFsOworfQorCisjZW5kaWYKKworLyoKKyAqIElYUDR4eCBkb2VzIG5vdCBoYXZlIGEgdHJhbnNwYXJlbnQgY3B1IC0+IFBDSSBJL08gdHJhbnNsYXRpb24KKyAqIHdpbmRvdy4gIEluc3RlYWQsIGl0IGhhcyBhIHNldCBvZiByZWdpc3RlcnMgdGhhdCBtdXN0IGJlIHR3ZWFrZWQKKyAqIHdpdGggdGhlIHByb3BlciBieXRlIGxhbmVzLCBjb21tYW5kIHR5cGVzLCBhbmQgYWRkcmVzcyBmb3IgdGhlCisgKiB0cmFuc2FjdGlvbi4gIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgKiBJL08gZnVuY3Rpb25zLgorICovCisjZGVmaW5lCW91dGIocCwgdikJCQlfX2l4cDR4eF9vdXRiKHAsIHYpCisjZGVmaW5lCW91dHcocCwgdikJCQlfX2l4cDR4eF9vdXR3KHAsIHYpCisjZGVmaW5lCW91dGwocCwgdikJCQlfX2l4cDR4eF9vdXRsKHAsIHYpCisJCisjZGVmaW5lCW91dHNiKHAsIHYsIGwpCQkJX19peHA0eHhfb3V0c2IocCwgdiwgbCkKKyNkZWZpbmUJb3V0c3cocCwgdiwgbCkJCQlfX2l4cDR4eF9vdXRzdyhwLCB2LCBsKQorI2RlZmluZQlvdXRzbChwLCB2LCBsKQkJCV9faXhwNHh4X291dHNsKHAsIHYsIGwpCisKKyNkZWZpbmUJaW5iKHApCQkJCV9faXhwNHh4X2luYihwKQorI2RlZmluZQlpbncocCkJCQkJX19peHA0eHhfaW53KHApCisjZGVmaW5lCWlubChwKQkJCQlfX2l4cDR4eF9pbmwocCkKKworI2RlZmluZQlpbnNiKHAsIHYsIGwpCQkJX19peHA0eHhfaW5zYihwLCB2LCBsKQorI2RlZmluZQlpbnN3KHAsIHYsIGwpCQkJX19peHA0eHhfaW5zdyhwLCB2LCBsKQorI2RlZmluZQlpbnNsKHAsIHYsIGwpCQkJX19peHA0eHhfaW5zbChwLCB2LCBsKQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19faXhwNHh4X291dGIodTggdmFsdWUsIHUzMiBhZGRyKQoreworCXUzMiBuLCBieXRlX2VuYWJsZXMsIGRhdGE7CisJbiA9IGFkZHIgJSA0OworCWJ5dGVfZW5hYmxlcyA9ICgweGYgJiB+QklUKG4pKSA8PCBJWFA0WFhfUENJX05QX0NCRV9CRVNMOworCWRhdGEgPSB2YWx1ZSA8PCAoOCpuKTsKKwlpeHA0eHhfcGNpX3dyaXRlKGFkZHIsIGJ5dGVfZW5hYmxlcyB8IE5QX0NNRF9JT1dSSVRFLCBkYXRhKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIAorX19peHA0eHhfb3V0c2IodTMyIGlvX2FkZHIsIGNvbnN0IHU4ICp2YWRkciwgdTMyIGNvdW50KQoreworCXdoaWxlIChjb3VudC0tKQorCQlvdXRiKCp2YWRkcisrLCBpb19hZGRyKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIAorX19peHA0eHhfb3V0dyh1MTYgdmFsdWUsIHUzMiBhZGRyKQoreworCXUzMiBuLCBieXRlX2VuYWJsZXMsIGRhdGE7CisJbiA9IGFkZHIgJSA0OworCWJ5dGVfZW5hYmxlcyA9ICgweGYgJiB+KEJJVChuKSB8IEJJVChuKzEpKSkgPDwgSVhQNFhYX1BDSV9OUF9DQkVfQkVTTDsKKwlkYXRhID0gdmFsdWUgPDwgKDgqbik7CisJaXhwNHh4X3BjaV93cml0ZShhZGRyLCBieXRlX2VuYWJsZXMgfCBOUF9DTURfSU9XUklURSwgZGF0YSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19faXhwNHh4X291dHN3KHUzMiBpb19hZGRyLCBjb25zdCB1MTYgKnZhZGRyLCB1MzIgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCW91dHcoY3B1X3RvX2xlMTYoKnZhZGRyKyspLCBpb19hZGRyKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIAorX19peHA0eHhfb3V0bCh1MzIgdmFsdWUsIHUzMiBhZGRyKQoreworCWl4cDR4eF9wY2lfd3JpdGUoYWRkciwgTlBfQ01EX0lPV1JJVEUsIHZhbHVlKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIAorX19peHA0eHhfb3V0c2wodTMyIGlvX2FkZHIsIGNvbnN0IHUzMiAqdmFkZHIsIHUzMiBjb3VudCkKK3sKKwl3aGlsZSAoY291bnQtLSkKKwkJb3V0bCgqdmFkZHIrKywgaW9fYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTggCitfX2l4cDR4eF9pbmIodTMyIGFkZHIpCit7CisJdTMyIG4sIGJ5dGVfZW5hYmxlcywgZGF0YTsKKwluID0gYWRkciAlIDQ7CisJYnl0ZV9lbmFibGVzID0gKDB4ZiAmIH5CSVQobikpIDw8IElYUDRYWF9QQ0lfTlBfQ0JFX0JFU0w7CisJaWYgKGl4cDR4eF9wY2lfcmVhZChhZGRyLCBieXRlX2VuYWJsZXMgfCBOUF9DTURfSU9SRUFELCAmZGF0YSkpCisJCXJldHVybiAweGZmOworCisJcmV0dXJuIGRhdGEgPj4gKDgqbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19faXhwNHh4X2luc2IodTMyIGlvX2FkZHIsIHU4ICp2YWRkciwgdTMyIGNvdW50KQoreworCXdoaWxlIChjb3VudC0tKQorCQkqdmFkZHIrKyA9IGluYihpb19hZGRyKTsKK30KKworc3RhdGljIGlubGluZSB1MTYgCitfX2l4cDR4eF9pbncodTMyIGFkZHIpCit7CisJdTMyIG4sIGJ5dGVfZW5hYmxlcywgZGF0YTsKKwluID0gYWRkciAlIDQ7CisJYnl0ZV9lbmFibGVzID0gKDB4ZiAmIH4oQklUKG4pIHwgQklUKG4rMSkpKSA8PCBJWFA0WFhfUENJX05QX0NCRV9CRVNMOworCWlmIChpeHA0eHhfcGNpX3JlYWQoYWRkciwgYnl0ZV9lbmFibGVzIHwgTlBfQ01EX0lPUkVBRCwgJmRhdGEpKQorCQlyZXR1cm4gMHhmZmZmOworCisJcmV0dXJuIGRhdGE+Pig4Km4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgCitfX2l4cDR4eF9pbnN3KHUzMiBpb19hZGRyLCB1MTYgKnZhZGRyLCB1MzIgY291bnQpCit7CisJd2hpbGUgKGNvdW50LS0pCisJCSp2YWRkcisrID0gbGUxNl90b19jcHUoaW53KGlvX2FkZHIpKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgCitfX2l4cDR4eF9pbmwodTMyIGFkZHIpCit7CisJdTMyIGRhdGE7CisJaWYgKGl4cDR4eF9wY2lfcmVhZChhZGRyLCBOUF9DTURfSU9SRUFELCAmZGF0YSkpCisJCXJldHVybiAweGZmZmZmZmZmOworCisJcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19faXhwNHh4X2luc2wodTMyIGlvX2FkZHIsIHUzMiAqdmFkZHIsIHUzMiBjb3VudCkKK3sKKwl3aGlsZSAoY291bnQtLSkKKwkJKnZhZGRyKysgPSBpbmwoaW9fYWRkcik7Cit9CisKKworI2VuZGlmCS8vICBfX0FTTV9BUk1fQVJDSF9JT19ICisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2RhNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2lycS5oCkBAIC0wLDAgKzEsMTMgQEAKKy8qCisgKiBpcnEuaCAKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNkZWZpbmUgZml4dXBfaXJxKGlycSkgIChpcnEpCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhODA4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXJxcy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXJxcy5oIAorICoKKyAqIElSUSBkZWZpbml0aW9ucyBmb3IgSVhQNFhYIGJhc2VkIHN5c3RlbXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX0FSQ0hfSVhQNFhYX0lSUVNfSF8KKyNkZWZpbmUgX0FSQ0hfSVhQNFhYX0lSUVNfSF8KKworCisjZGVmaW5lIElSUV9JWFA0WFhfTlBFQQkJMAorI2RlZmluZSBJUlFfSVhQNFhYX05QRUIJCTEKKyNkZWZpbmUgSVJRX0lYUDRYWF9OUEVDCQkyCisjZGVmaW5lIElSUV9JWFA0WFhfUU0xCQkzCisjZGVmaW5lIElSUV9JWFA0WFhfUU0yCQk0CisjZGVmaW5lIElSUV9JWFA0WFhfVElNRVIxCTUKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPMAk2CisjZGVmaW5lIElSUV9JWFA0WFhfR1BJTzEJNworI2RlZmluZSBJUlFfSVhQNFhYX1BDSV9JTlQJOAorI2RlZmluZSBJUlFfSVhQNFhYX1BDSV9ETUExCTkKKyNkZWZpbmUgSVJRX0lYUDRYWF9QQ0lfRE1BMgkxMAorI2RlZmluZSBJUlFfSVhQNFhYX1RJTUVSMgkxMQorI2RlZmluZSBJUlFfSVhQNFhYX1VTQgkJMTIKKyNkZWZpbmUgSVJRX0lYUDRYWF9VQVJUMgkxMworI2RlZmluZSBJUlFfSVhQNFhYX1RJTUVTVEFNUAkxNAorI2RlZmluZSBJUlFfSVhQNFhYX1VBUlQxCTE1CisjZGVmaW5lIElSUV9JWFA0WFhfV0RPRwkJMTYKKyNkZWZpbmUgSVJRX0lYUDRYWF9BSEJfUE1VCTE3CisjZGVmaW5lIElSUV9JWFA0WFhfWFNDQUxFX1BNVQkxOAorI2RlZmluZSBJUlFfSVhQNFhYX0dQSU8yCTE5CisjZGVmaW5lIElSUV9JWFA0WFhfR1BJTzMJMjAKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPNAkyMQorI2RlZmluZSBJUlFfSVhQNFhYX0dQSU81CTIyCisjZGVmaW5lIElSUV9JWFA0WFhfR1BJTzYJMjMKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPNwkyNAorI2RlZmluZSBJUlFfSVhQNFhYX0dQSU84CTI1CisjZGVmaW5lIElSUV9JWFA0WFhfR1BJTzkJMjYKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPMTAJMjcKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPMTEJMjgKKyNkZWZpbmUgSVJRX0lYUDRYWF9HUElPMTIJMjkKKyNkZWZpbmUgSVJRX0lYUDRYWF9TV19JTlQxCTMwCisjZGVmaW5lIElSUV9JWFA0WFhfU1dfSU5UMgkzMQorI2RlZmluZSBJUlFfSVhQNFhYX1VTQl9IT1NUCTMyCisjZGVmaW5lIElSUV9JWFA0WFhfSTJDCQkzMworI2RlZmluZSBJUlFfSVhQNFhYX1NTUAkJMzQKKyNkZWZpbmUgSVJRX0lYUDRYWF9UU1lOQwkzNQorI2RlZmluZSBJUlFfSVhQNFhYX0VBVV9ET05FCTM2CisjZGVmaW5lIElSUV9JWFA0WFhfU0hBX0RPTkUJMzcKKyNkZWZpbmUgSVJRX0lYUDRYWF9TV0NQX1BFCTU4CisjZGVmaW5lIElSUV9JWFA0WFhfUU1fUEUJNjAKKyNkZWZpbmUgSVJRX0lYUDRYWF9NQ1VfRUNDCTYxCisjZGVmaW5lIElSUV9JWFA0WFhfRVhQX1BFCTYyCisKKy8qCisgKiBPbmx5IGZpcnN0IDMyIHNvdXJjZXMgYXJlIHZhbGlkIGlmIHJ1bm5pbmcgb24gSVhQNDJ4IHN5c3RlbXMKKyAqLworI2lmbmRlZglDT05GSUdfQ1BVX0lYUDQ2WAorI2RlZmluZSBOUl9JUlFTCQkJMzIKKyNlbHNlCisjZGVmaW5lIE5SX0lSUVMJCQk2NAorI2VuZGlmCisKKyNkZWZpbmUJWFNDQUxFX1BNVV9JUlEJCShJUlFfSVhQNFhYX1hTQ0FMRV9QTVUpCisKKy8qCisgKiBJWERQNDI1IGJvYXJkIElSUXMKKyAqLworI2RlZmluZQlJUlFfSVhEUDQyNV9QQ0lfSU5UQQlJUlFfSVhQNFhYX0dQSU8xMQorI2RlZmluZQlJUlFfSVhEUDQyNV9QQ0lfSU5UQglJUlFfSVhQNFhYX0dQSU8xMAorI2RlZmluZQlJUlFfSVhEUDQyNV9QQ0lfSU5UQwlJUlFfSVhQNFhYX0dQSU85CisjZGVmaW5lCUlSUV9JWERQNDI1X1BDSV9JTlRECUlSUV9JWFA0WFhfR1BJTzgKKworLyoKKyAqIFByUE1DMTEwMCBCb2FyZCBJUlFzCisgKi8KKyNkZWZpbmUJSVJRX1BSUE1DMTEwMF9QQ0lfSU5UQQlJUlFfSVhQNFhYX0dQSU8xMQorI2RlZmluZQlJUlFfUFJQTUMxMTAwX1BDSV9JTlRCCUlSUV9JWFA0WFhfR1BJTzEwCisjZGVmaW5lCUlSUV9QUlBNQzExMDBfUENJX0lOVEMJSVJRX0lYUDRYWF9HUElPOQorI2RlZmluZQlJUlFfUFJQTUMxMTAwX1BDSV9JTlRECUlSUV9JWFA0WFhfR1BJTzgKKworLyoKKyAqIEFESSBDb3lvdGUgQm9hcmQgSVJRcworICovCisjZGVmaW5lCUlSUV9DT1lPVEVfUENJX1NMT1QwCUlSUV9JWFA0WFhfR1BJTzYKKyNkZWZpbmUJSVJRX0NPWU9URV9QQ0lfU0xPVDEJSVJRX0lYUDRYWF9HUElPMTEKKyNkZWZpbmUJSVJRX0NPWU9URV9JREUJCUlSUV9JWFA0WFhfR1BJTzUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXhkcDQyNS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2l4ZHA0MjUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDIxYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2l4ZHA0MjUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2l4ZHA0MjUuaAorICoKKyAqIElYRFA0MjUgcGxhdGZvcm0gc3BlY2lmaWMgZGVmaW5pdGlvbnMKKyAqCisgKiBBdXRob3I6IERlZXBhayBTYXhlbmEgPGRzYXhlbmFAcGxleGl0eS5uZXQ+CisgKgorICogQ29weXJpZ2h0IDIwMDQgKGMpIE1vbnRhVmlzdGEsIFNvZnR3YXJlLCBJbmMuIAorICogCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIAorICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IAorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9IX18KKyNlcnJvciAiRG8gbm90IGluY2x1ZGUgdGhpcyBkaXJlY3RseSwgaW5zdGVhZCAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+IgorI2VuZGlmCisKKyNkZWZpbmUJSVhEUDQyNV9GTEFTSF9CQVNFCUlYUDRYWF9FWFBfQlVTX0NTMF9CQVNFX1BIWVMKKyNkZWZpbmUJSVhEUDQyNV9GTEFTSF9TSVpFCUlYUDRYWF9FWFBfQlVTX0NTWF9SRUdJT05fU0laRQorCisjZGVmaW5lCUlYRFA0MjVfU0RBX1BJTgkJNworI2RlZmluZQlJWERQNDI1X1NDTF9QSU4JCTYKKworLyoKKyAqIElYRFA0MjUgUENJIElSUXMKKyAqLworI2RlZmluZSBJWERQNDI1X1BDSV9NQVhfREVWCTQKKyNkZWZpbmUgSVhEUDQyNV9QQ0lfSVJRX0xJTkVTCTQKKworCisvKiBQQ0kgY29udHJvbGxlciBHUElPIHRvIElSUSBwaW4gbWFwcGluZ3MgKi8KKyNkZWZpbmUgSVhEUDQyNV9QQ0lfSU5UQV9QSU4JMTEKKyNkZWZpbmUgSVhEUDQyNV9QQ0lfSU5UQl9QSU4JMTAKKyNkZWZpbmUJSVhEUDQyNV9QQ0lfSU5UQ19QSU4JOQorI2RlZmluZQlJWERQNDI1X1BDSV9JTlREX1BJTgk4CisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2l4cDR4eC1yZWdzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXhwNHh4LXJlZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWViMWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L2l4cDR4eC1yZWdzLmgKQEAgLTAsMCArMSw1OTEgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvaXhwNHh4LXJlZ3MuaAorICoKKyAqIFJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBJWFA0eHggY2hpcHNldC4gVGhpcyBmaWxlIGNvbnRhaW5zIAorICogcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGJpdCBkZWZpbml0aW9ucyBvbmx5LiBQbGF0Zm9ybSBzcGVjaWZpYyAKKyAqIGRlZmluaXRpb25zIGFuZCBoZWxwZXIgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFyZSBpbiBwbGF0Zm9ybS5oIAorICogYW5kIG1hY2hpbmUtbmFtZS5oLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSF9fCisjZXJyb3IgIkRvIG5vdCBpbmNsdWRlIHRoaXMgZGlyZWN0bHksIGluc3RlYWQgI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPiIKKyNlbmRpZgorCisjaWZuZGVmIF9BU01fQVJNX0lYUDRYWF9IXworI2RlZmluZSBfQVNNX0FSTV9JWFA0WFhfSF8KKworLyoKKyAqIElYUDR4eCBMaW51eCBNZW1vcnkgTWFwOgorICoKKyAqIFBoeQkJU2l6ZQkJVmlydAkJRGVzY3JpcHRpb24KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiAweDAwMDAwMDAwCTB4MTAwMDAwMDAobWF4KQlQQUdFX09GRlNFVAlTeXN0ZW0gUkFNCisgKgorICogMHg0ODAwMDAwMAkweDA0MDAwMDAwCWlvcmVtYXAnZAlQQ0kgTWVtb3J5IFNwYWNlCisgKgorICogMHg1MDAwMDAwMAkweDEwMDAwMDAwCWlvcmVtYXAnZAlFWFAgQlVTCisgKgorICogMHg2MDAwMDAwCTB4MDAwMDQwMDAJaW9yZW1hcCdkCVFNZ3IKKyAqCisgKiAweEMwMDAwMDAwCTB4MDAwMDEwMDAJMHhmZmJmZTAwMAlQQ0kgQ0ZHIAorICoKKyAqIDB4QzQwMDAwMDAJMHgwMDAwMTAwMAkweGZmYmZkMDAwCUVYUCBDRkcgCisgKgorICogMHhDODAwMDAwMAkweDAwMDBDMDAwCTB4ZmZiZjIwMDAJT24tQ2hpcCBQZXJpcGhlcmFscworICovCisKKy8qCisgKiBRdWV1ZSBNYW5hZ2VyCisgKi8KKyNkZWZpbmUgSVhQNFhYX1FNR1JfQkFTRV9QSFlTCQkoMHg2MDAwMDAwMCkKKworLyoKKyAqIEV4cGFuc2lvbiBCVVMgQ29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqLworI2RlZmluZSBJWFA0WFhfRVhQX0NGR19CQVNFX1BIWVMJKDB4QzQwMDAwMDApCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHX0JBU0VfVklSVAkoMHhGRkJGRDAwMCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkdfUkVHSU9OX1NJWkUJKDB4MDAwMDEwMDApCisKKy8qCisgKiBQQ0kgQ29uZmlnIHJlZ2lzdGVycworICovCisjZGVmaW5lIElYUDRYWF9QQ0lfQ0ZHX0JBU0VfUEhZUwkoMHhDMDAwMDAwMCkKKyNkZWZpbmUJSVhQNFhYX1BDSV9DRkdfQkFTRV9WSVJUCSgweEZGQkZFMDAwKQorI2RlZmluZSBJWFA0WFhfUENJX0NGR19SRUdJT05fU0laRQkoMHgwMDAwMTAwMCkKKworLyoKKyAqIFBlcmlwaGVyYWwgc3BhY2UKKyAqLworI2RlZmluZSBJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1BIWVMJKDB4QzgwMDAwMDApCisjZGVmaW5lIElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfVklSVAkoMHhGRkJGMjAwMCkKKyNkZWZpbmUgSVhQNFhYX1BFUklQSEVSQUxfUkVHSU9OX1NJWkUJKDB4MDAwMEMwMDApCisKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzBfT0ZGU0VUCTB4MDAKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzFfT0ZGU0VUICAgMHgwNAorI2RlZmluZSBJWFA0WFhfRVhQX0NTMl9PRkZTRVQgICAweDA4CisjZGVmaW5lIElYUDRYWF9FWFBfQ1MzX09GRlNFVCAgIDB4MEMKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzRfT0ZGU0VUICAgMHgxMAorI2RlZmluZSBJWFA0WFhfRVhQX0NTNV9PRkZTRVQgICAweDE0CisjZGVmaW5lIElYUDRYWF9FWFBfQ1M2X09GRlNFVCAgIDB4MTgKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzdfT0ZGU0VUICAgMHgxQworI2RlZmluZSBJWFA0WFhfRVhQX0NGRzBfT0ZGU0VUCTB4MjAKKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkcxX09GRlNFVAkweDI0CisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMl9PRkZTRVQJMHgyOAorI2RlZmluZSBJWFA0WFhfRVhQX0NGRzNfT0ZGU0VUCTB4MkMKKworLyoKKyAqIEV4cGFuc2lvbiBCdXMgQ29udHJvbGxlciByZWdpc3RlcnMuCisgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9SRUcoeCkgKCh2b2xhdGlsZSB1MzIgKikoSVhQNFhYX0VYUF9DRkdfQkFTRV9WSVJUKyh4KSkpCisKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzAgICAgICBJWFA0WFhfRVhQX1JFRyhJWFA0WFhfRVhQX0NTMF9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MxICAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DUzFfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfRVhQX0NTMiAgICAgIElYUDRYWF9FWFBfUkVHKElYUDRYWF9FWFBfQ1MyX09GRlNFVCkgCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MzICAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DUzNfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfRVhQX0NTNCAgICAgIElYUDRYWF9FWFBfUkVHKElYUDRYWF9FWFBfQ1M0X09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzUgICAgICBJWFA0WFhfRVhQX1JFRyhJWFA0WFhfRVhQX0NTNV9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9FWFBfQ1M2ICAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DUzZfT0ZGU0VUKSAgICAgCisjZGVmaW5lIElYUDRYWF9FWFBfQ1M3ICAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DUzdfT0ZGU0VUKQorCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMCAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DRkcwX09GRlNFVCkgCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMSAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DRkcxX09GRlNFVCkgCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMiAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DRkcyX09GRlNFVCkgCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMyAgICAgSVhQNFhYX0VYUF9SRUcoSVhQNFhYX0VYUF9DRkczX09GRlNFVCkKKworCisvKgorICogUGVyaXBoZXJhbCBTcGFjZSBSZWdpc3RlciBSZWdpb24gQmFzZSBBZGRyZXNzZXMKKyAqLworI2RlZmluZSBJWFA0WFhfVUFSVDFfQkFTRV9QSFlTCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1BIWVMgKyAweDAwMDApCisjZGVmaW5lIElYUDRYWF9VQVJUMl9CQVNFX1BIWVMJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfUEhZUyArIDB4MTAwMCkKKyNkZWZpbmUgSVhQNFhYX1BNVV9CQVNFX1BIWVMJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfUEhZUyArIDB4MjAwMCkKKyNkZWZpbmUgSVhQNFhYX0lOVENfQkFTRV9QSFlTCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1BIWVMgKyAweDMwMDApCisjZGVmaW5lIElYUDRYWF9HUElPX0JBU0VfUEhZUwkoSVhQNFhYX1BFUklQSEVSQUxfQkFTRV9QSFlTICsgMHg0MDAwKQorI2RlZmluZSBJWFA0WFhfVElNRVJfQkFTRV9QSFlTCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1BIWVMgKyAweDUwMDApCisjZGVmaW5lIElYUDRYWF9FdGhBX0JBU0VfUEhZUwkoSVhQNFhYX1BFUklQSEVSQUxfQkFTRV9QSFlTICsgMHg5MDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQl9CQVNFX1BIWVMJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfUEhZUyArIDB4QTAwMCkKKyNkZWZpbmUgSVhQNFhYX1VTQl9CQVNFX1BIWVMJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfUEhZUyArIDB4QjAwMCkKKworI2RlZmluZSBJWFA0WFhfVUFSVDFfQkFTRV9WSVJUCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1ZJUlQgKyAweDAwMDApCisjZGVmaW5lIElYUDRYWF9VQVJUMl9CQVNFX1ZJUlQJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfVklSVCArIDB4MTAwMCkKKyNkZWZpbmUgSVhQNFhYX1BNVV9CQVNFX1ZJUlQJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfVklSVCArIDB4MjAwMCkKKyNkZWZpbmUgSVhQNFhYX0lOVENfQkFTRV9WSVJUCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1ZJUlQgKyAweDMwMDApCisjZGVmaW5lIElYUDRYWF9HUElPX0JBU0VfVklSVAkoSVhQNFhYX1BFUklQSEVSQUxfQkFTRV9WSVJUICsgMHg0MDAwKQorI2RlZmluZSBJWFA0WFhfVElNRVJfQkFTRV9WSVJUCShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFX1ZJUlQgKyAweDUwMDApCisjZGVmaW5lIElYUDRYWF9FdGhBX0JBU0VfVklSVAkoSVhQNFhYX1BFUklQSEVSQUxfQkFTRV9WSVJUICsgMHg5MDAwKQorI2RlZmluZSBJWFA0WFhfRXRoQl9CQVNFX1ZJUlQJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfVklSVCArIDB4QTAwMCkKKyNkZWZpbmUgSVhQNFhYX1VTQl9CQVNFX1ZJUlQJKElYUDRYWF9QRVJJUEhFUkFMX0JBU0VfVklSVCArIDB4QjAwMCkKKworLyoKKyAqIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8gYWNjZXNzICBJbnRlcnJ1cHQgQ29udHJvbGxlciByZWdpc3RlcnMKKyAqLworI2RlZmluZSBJWFA0WFhfSUNQUl9PRkZTRVQJMHgwMCAvKiBJbnRlcnJ1cHQgU3RhdHVzICovCisjZGVmaW5lIElYUDRYWF9JQ01SX09GRlNFVAkweDA0IC8qIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgSVhQNFhYX0lDTFJfT0ZGU0VUCTB4MDggLyogSW50ZXJydXB0IElSUS9GSVEgU2VsZWN0ICovCisjZGVmaW5lIElYUDRYWF9JQ0lQX09GRlNFVCAgICAgIDB4MEMgLyogSVJRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhfSUNGUF9PRkZTRVQJMHgxMCAvKiBGSVEgU3RhdHVzICovCisjZGVmaW5lIElYUDRYWF9JQ0hSX09GRlNFVAkweDE0IC8qIEludGVycnVwdCBQcmlvcml0eSAqLworI2RlZmluZSBJWFA0WFhfSUNJSF9PRkZTRVQJMHgxOCAvKiBJUlEgSGlnaGVzdCBQcmkgSW50ICovCisjZGVmaW5lIElYUDRYWF9JQ0ZIX09GRlNFVAkweDFDIC8qIEZJUSBIaWdoZXN0IFByaSBJbnQgKi8KKworLyoKKyAqIElYUDQ2NS1vbmx5CisgKi8KKyNkZWZpbmUJSVhQNFhYX0lDUFIyX09GRlNFVAkweDIwIC8qIEludGVycnVwdCBTdGF0dXMgMiAqLworI2RlZmluZQlJWFA0WFhfSUNNUjJfT0ZGU0VUCTB4MjQgLyogSW50ZXJydXB0IEVuYWJsZSAyICovCisjZGVmaW5lCUlYUDRYWF9JQ0xSMl9PRkZTRVQJMHgyOCAvKiBJbnRlcnJ1cHQgSVJRL0ZJUSBTZWxlY3QgMiAqLworI2RlZmluZSBJWFA0WFhfSUNJUDJfT0ZGU0VUICAgICAweDJDIC8qIElSUSBTdGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDRlAyX09GRlNFVAkweDMwIC8qIEZJUSBTdGF0dXMgKi8KKyNkZWZpbmUgSVhQNFhYX0lDRUVOX09GRlNFVAkweDM0IC8qIEVycm9yIEhpZ2ggUHJpIEVuYWJsZSAqLworCisKKy8qCisgKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBSZWdpc3RlciBEZWZpbml0aW9ucy4KKyAqLworCisjZGVmaW5lIElYUDRYWF9JTlRDX1JFRyh4KSAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfSU5UQ19CQVNFX1ZJUlQrKHgpKSkKKworI2RlZmluZSBJWFA0WFhfSUNQUglJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNNUiAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ01SX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDTFIgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNMUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0lQICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSVBfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNGUCAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZQX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDSFIgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNIUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0lIICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSUhfT0ZGU0VUKSAKKyNkZWZpbmUgSVhQNFhYX0lDRkggICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNGSF9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ1BSMglJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFIyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDTVIyICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNNUjJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNMUjIgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0xSMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0lQMiAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSVAyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDRlAyICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNGUDJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNFRU4gICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0VFTl9PRkZTRVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyoKKyAqIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8gYWNjZXNzIEdQSU8gcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPVVRSX09GRlNFVCAgICAgICAweDAwCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT0VSX09GRlNFVCAgICAgICAgMHgwNAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElOUl9PRkZTRVQgICAgICAgIDB4MDgKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BJU1JfT0ZGU0VUICAgICAgICAweDBDCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQxUl9PRkZTRVQJMHgxMAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElUMlJfT0ZGU0VUCTB4MTQKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtSX09GRlNFVAkweDE4CisjZGVmaW5lIElYUDRYWF9HUElPX0dQREJTRUxSX09GRlNFVAkweDFDCisKKy8qIAorICogR1BJTyBSZWdpc3RlciBEZWZpbml0aW9ucy4KKyAqIFtPbmx5IHBlcmZvcm0gMzJiaXQgcmVhZHMvd3JpdGVzXQorICovCisjZGVmaW5lIElYUDRYWF9HUElPX1JFRyh4KSAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfR1BJT19CQVNFX1ZJUlQrKHgpKSkKKworI2RlZmluZSBJWFA0WFhfR1BJT19HUE9VVFIJSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQT1VUUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQT0VSICAgICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUE9FUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSU5SICAgICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElOUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVNSICAgICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElTUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQxUiAgICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElUMVJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfR1BJT19HUElUMlIgICAgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BJVDJSX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtSICAgICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQQ0xLUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQREJTRUxSICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUERCU0VMUl9PRkZTRVQpCisKKy8qCisgKiBHUElPIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucworICovCisKKy8qIEludGVycnVwdCBzdHlsZXMKKyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9BQ1RJVkVfSElHSAkweDAKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfQUNUSVZFX0xPVwkweDEKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfUklTSU5HX0VER0UJMHgyCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0ZBTExJTkdfRURHRQkweDMKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfVFJBTlNJVElPTkFMCTB4NAorCisvKiAKKyAqIE1hc2sgdXNlZCB0byBjbGVhciBpbnRlcnJ1cHQgc3R5bGVzIAorICovCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0NMRUFSCQkweDcKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfU0laRQkJMworCisvKgorICogQ29uc3RhbnRzIHRvIG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgVGltZXIgQ29udHJvbC9TdGF0dXMgcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgSVhQNFhYX09TVFNfT0ZGU0VUCTB4MDAgIC8qIENvbnRpbmlvdXMgVGltZVN0YW1wICovCisjZGVmaW5lIElYUDRYWF9PU1QxX09GRlNFVAkweDA0ICAvKiBUaW1lciAxIFRpbWVzdGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NSVDFfT0ZGU0VUCTB4MDggIC8qIFRpbWVyIDEgUmVsb2FkICovCisjZGVmaW5lIElYUDRYWF9PU1QyX09GRlNFVAkweDBDICAvKiBUaW1lciAyIFRpbWVzdGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NSVDJfT0ZGU0VUCTB4MTAgIC8qIFRpbWVyIDIgUmVsb2FkICovCisjZGVmaW5lIElYUDRYWF9PU1dUX09GRlNFVAkweDE0ICAvKiBXYXRjaGRvZyBUaW1lciAqLworI2RlZmluZSBJWFA0WFhfT1NXRV9PRkZTRVQJMHgxOCAgLyogV2F0Y2hkb2cgRW5hYmxlICovCisjZGVmaW5lIElYUDRYWF9PU1dLX09GRlNFVAkweDFDICAvKiBXYXRjaGRvZyBLZXkgKi8KKyNkZWZpbmUgSVhQNFhYX09TU1RfT0ZGU0VUCTB4MjAgIC8qIFRpbWVyIFN0YXR1cyAqLworCisvKgorICogT3BlcmF0aW5nIFN5c3RlbSBUaW1lciBSZWdpc3RlciBEZWZpbml0aW9ucy4KKyAqLworCisjZGVmaW5lIElYUDRYWF9USU1FUl9SRUcoeCkgKCh2b2xhdGlsZSB1MzIgKikoSVhQNFhYX1RJTUVSX0JBU0VfVklSVCsoeCkpKQorCisjZGVmaW5lIElYUDRYWF9PU1RTCUlYUDRYWF9USU1FUl9SRUcoSVhQNFhYX09TVFNfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfT1NUMQlJWFA0WFhfVElNRVJfUkVHKElYUDRYWF9PU1QxX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX09TUlQxCUlYUDRYWF9USU1FUl9SRUcoSVhQNFhYX09TUlQxX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX09TVDIJSVhQNFhYX1RJTUVSX1JFRyhJWFA0WFhfT1NUMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9PU1JUMglJWFA0WFhfVElNRVJfUkVHKElYUDRYWF9PU1JUMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9PU1dUCUlYUDRYWF9USU1FUl9SRUcoSVhQNFhYX09TV1RfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfT1NXRQlJWFA0WFhfVElNRVJfUkVHKElYUDRYWF9PU1dFX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX09TV0sJSVhQNFhYX1RJTUVSX1JFRyhJWFA0WFhfT1NXS19PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9PU1NUCUlYUDRYWF9USU1FUl9SRUcoSVhQNFhYX09TU1RfT0ZGU0VUKQorCisvKgorICogVGltZXIgcmVnaXN0ZXIgdmFsdWVzIGFuZCBiaXQgZGVmaW5pdGlvbnMgCisgKi8KKyNkZWZpbmUgSVhQNFhYX09TVF9FTkFCTEUJCTB4MDAwMDAwMDEKKyNkZWZpbmUgSVhQNFhYX09TVF9PTkVfU0hPVAkJMHgwMDAwMDAwMgorLyogTG93IG9yZGVyIGJpdHMgb2YgcmVsb2FkIHZhbHVlIGlnbm9yZWQgKi8KKyNkZWZpbmUgSVhQNFhYX09TVF9SRUxPQURfTUFTSwkJMHgwMDAwMDAwMworI2RlZmluZSBJWFA0WFhfT1NUX0RJU0FCTEVECQkweDAwMDAwMDAwCisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSXzFfUEVORAkweDAwMDAwMDAxCisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSXzJfUEVORAkweDAwMDAwMDAyCisjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSX1RTX1BFTkQJMHgwMDAwMDAwNAorI2RlZmluZSBJWFA0WFhfT1NTVF9USU1FUl9XRE9HX1BFTkQJMHgwMDAwMDAwOAorI2RlZmluZSBJWFA0WFhfT1NTVF9USU1FUl9XQVJNX1JFU0VUCTB4MDAwMDAwMTAKKworI2RlZmluZQlJWFA0WFhfV0RUX0tFWQkJCTB4MDAwMDQ4MkUKKworI2RlZmluZQlJWFA0WFhfV0RUX1JFU0VUX0VOQUJMRQkJMHgwMDAwMDAwMQorI2RlZmluZQlJWFA0WFhfV0RUX0lSUV9FTkFCTEUJCTB4MDAwMDAwMDIKKyNkZWZpbmUJSVhQNFhYX1dEVF9DT1VOVF9FTkFCTEUJCTB4MDAwMDAwMDQKKworCisvKgorICogQ29uc3RhbnRzIHRvIG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgUENJIENvbnRyb2wvU3RhdHVzIHJlZ2lzdGVycworICovCisjZGVmaW5lIFBDSV9OUF9BRF9PRkZTRVQgICAgICAgICAgICAweDAwCisjZGVmaW5lIFBDSV9OUF9DQkVfT0ZGU0VUICAgICAgICAgICAweDA0CisjZGVmaW5lIFBDSV9OUF9XREFUQV9PRkZTRVQgICAgICAgICAweDA4CisjZGVmaW5lIFBDSV9OUF9SREFUQV9PRkZTRVQgICAgICAgICAweDBjCisjZGVmaW5lIFBDSV9DUlBfQURfQ0JFX09GRlNFVCAgICAgICAweDEwCisjZGVmaW5lIFBDSV9DUlBfV0RBVEFfT0ZGU0VUICAgICAgICAweDE0CisjZGVmaW5lIFBDSV9DUlBfUkRBVEFfT0ZGU0VUICAgICAgICAweDE4CisjZGVmaW5lIFBDSV9DU1JfT0ZGU0VUICAgICAgICAgICAgICAweDFjCisjZGVmaW5lIFBDSV9JU1JfT0ZGU0VUICAgICAgICAgICAgICAweDIwCisjZGVmaW5lIFBDSV9JTlRFTl9PRkZTRVQgICAgICAgICAgICAweDI0CisjZGVmaW5lIFBDSV9ETUFDVFJMX09GRlNFVCAgICAgICAgICAweDI4CisjZGVmaW5lIFBDSV9BSEJNRU1CQVNFX09GRlNFVCAgICAgICAweDJjCisjZGVmaW5lIFBDSV9BSEJJT0JBU0VfT0ZGU0VUICAgICAgICAweDMwCisjZGVmaW5lIFBDSV9QQ0lNRU1CQVNFX09GRlNFVCAgICAgICAweDM0CisjZGVmaW5lIFBDSV9BSEJET09SQkVMTF9PRkZTRVQgICAgICAweDM4CisjZGVmaW5lIFBDSV9QQ0lET09SQkVMTF9PRkZTRVQgICAgICAweDNDCisjZGVmaW5lIFBDSV9BVFBETUEwX0FIQkFERFJfT0ZGU0VUICAweDQwCisjZGVmaW5lIFBDSV9BVFBETUEwX1BDSUFERFJfT0ZGU0VUICAweDQ0CisjZGVmaW5lIFBDSV9BVFBETUEwX0xFTkFERFJfT0ZGU0VUICAweDQ4CisjZGVmaW5lIFBDSV9BVFBETUExX0FIQkFERFJfT0ZGU0VUICAweDRDCisjZGVmaW5lIFBDSV9BVFBETUExX1BDSUFERFJfT0ZGU0VUICAweDUwCisjZGVmaW5lIFBDSV9BVFBETUExX0xFTkFERFJfT0ZGU0VUCTB4NTQKKworLyoKKyAqIFBDSSBDb250cm9sL1N0YXR1cyBSZWdpc3RlcnMKKyAqLworI2RlZmluZSBJWFA0WFhfUENJX0NTUih4KSAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfUENJX0NGR19CQVNFX1ZJUlQrKHgpKSkKKworI2RlZmluZSBQQ0lfTlBfQUQgICAgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfQURfT0ZGU0VUKQorI2RlZmluZSBQQ0lfTlBfQ0JFICAgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfQ0JFX09GRlNFVCkKKyNkZWZpbmUgUENJX05QX1dEQVRBICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX1dEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX05QX1JEQVRBICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX05QX1JEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9BRF9DQkUgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9BRF9DQkVfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQ1JQX1dEQVRBICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQ1JQX1dEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9SREFUQSAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9SREFUQV9PRkZTRVQpCisjZGVmaW5lIFBDSV9DU1IgICAgICAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9DU1JfT0ZGU0VUKSAKKyNkZWZpbmUgUENJX0lTUiAgICAgICAgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0lTUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9JTlRFTiAgICAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9JTlRFTl9PRkZTRVQpCisjZGVmaW5lIFBDSV9ETUFDVFJMICAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9ETUFDVFJMX09GRlNFVCkKKyNkZWZpbmUgUENJX0FIQk1FTUJBU0UgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0FIQk1FTUJBU0VfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQUhCSU9CQVNFICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQUhCSU9CQVNFX09GRlNFVCkKKyNkZWZpbmUgUENJX1BDSU1FTUJBU0UgICAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX1BDSU1FTUJBU0VfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQUhCRE9PUkJFTEwgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQUhCRE9PUkJFTExfT0ZGU0VUKQorI2RlZmluZSBQQ0lfUENJRE9PUkJFTEwgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfUENJRE9PUkJFTExfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMF9BSEJBRERSICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQVRQRE1BMF9BSEJBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTBfUENJQUREUiAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTBfUENJQUREUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9BVFBETUEwX0xFTkFERFIgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUEwX0xFTkFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMV9BSEJBRERSICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQVRQRE1BMV9BSEJBRERSX09GRlNFVCkKKyNkZWZpbmUgUENJX0FUUERNQTFfUENJQUREUiAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfUENJQUREUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9BVFBETUExX0xFTkFERFIgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUExX0xFTkFERFJfT0ZGU0VUKQorCisvKgorICogUENJIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYml0IGRlZmluaXRpb25zIAorICovCisKKy8qIENTUiBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgUENJX0NTUl9IT1NUICAgIAkweDAwMDAwMDAxCisjZGVmaW5lIFBDSV9DU1JfQVJCRU4gICAJMHgwMDAwMDAwMgorI2RlZmluZSBQQ0lfQ1NSX0FEUyAgICAgCTB4MDAwMDAwMDQKKyNkZWZpbmUgUENJX0NTUl9QRFMgICAgIAkweDAwMDAwMDA4CisjZGVmaW5lIFBDSV9DU1JfQUJFICAgICAJMHgwMDAwMDAxMAorI2RlZmluZSBQQ0lfQ1NSX0RCVCAgICAgCTB4MDAwMDAwMjAKKyNkZWZpbmUgUENJX0NTUl9BU0UgICAgIAkweDAwMDAwMTAwCisjZGVmaW5lIFBDSV9DU1JfSUMgICAgICAJMHgwMDAwODAwMAorCisvKiBJU1IgKEludGVycnVwdCBzdGF0dXMpIFJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBQQ0lfSVNSX1BTRSAgICAgCTB4MDAwMDAwMDEKKyNkZWZpbmUgUENJX0lTUl9QRkUgICAgIAkweDAwMDAwMDAyCisjZGVmaW5lIFBDSV9JU1JfUFBFICAgICAJMHgwMDAwMDAwNAorI2RlZmluZSBQQ0lfSVNSX0FIQkUgICAgCTB4MDAwMDAwMDgKKyNkZWZpbmUgUENJX0lTUl9BUERDICAgIAkweDAwMDAwMDEwCisjZGVmaW5lIFBDSV9JU1JfUEFEQyAgICAJMHgwMDAwMDAyMAorI2RlZmluZSBQQ0lfSVNSX0FEQiAgICAgCTB4MDAwMDAwNDAKKyNkZWZpbmUgUENJX0lTUl9QREIgICAgIAkweDAwMDAwMDgwCisKKy8qIElOVEVOIChJbnRlcnJ1cHQgRW5hYmxlKSBSZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgUENJX0lOVEVOX1BTRSAgIAkweDAwMDAwMDAxCisjZGVmaW5lIFBDSV9JTlRFTl9QRkUgICAJMHgwMDAwMDAwMgorI2RlZmluZSBQQ0lfSU5URU5fUFBFICAgCTB4MDAwMDAwMDQKKyNkZWZpbmUgUENJX0lOVEVOX0FIQkUgIAkweDAwMDAwMDA4CisjZGVmaW5lIFBDSV9JTlRFTl9BUERDICAJMHgwMDAwMDAxMAorI2RlZmluZSBQQ0lfSU5URU5fUEFEQyAgCTB4MDAwMDAwMjAKKyNkZWZpbmUgUENJX0lOVEVOX0FEQiAgIAkweDAwMDAwMDQwCisjZGVmaW5lIFBDSV9JTlRFTl9QREIgICAJMHgwMDAwMDA4MAorCisvKgorICogU2hpZnQgdmFsdWUgZm9yIGJ5dGUgZW5hYmxlIG9uIE5QIGNtZC9ieXRlIGVuYWJsZSByZWdpc3RlcgorICovCisjZGVmaW5lIElYUDRYWF9QQ0lfTlBfQ0JFX0JFU0wJCTQKKworLyoKKyAqIFBDSSBjb21tYW5kcyBzdXBwb3J0ZWQgYnkgTlAgYWNjZXNzIHVuaXQKKyAqLworI2RlZmluZSBOUF9DTURfSU9SRUFECQkJMHgyCisjZGVmaW5lIE5QX0NNRF9JT1dSSVRFCQkJMHgzCisjZGVmaW5lIE5QX0NNRF9DT05GSUdSRUFECQkweGEKKyNkZWZpbmUgTlBfQ01EX0NPTkZJR1dSSVRFCQkweGIKKyNkZWZpbmUgTlBfQ01EX01FTVJFQUQJCQkweDYKKyNkZWZpbmUJTlBfQ01EX01FTVdSSVRFCQkJMHg3CisKKy8qCisgKiBDb25zdGFudHMgZm9yIENSUCBhY2Nlc3MgaW50byBsb2NhbCBjb25maWcgc3BhY2UKKyAqLworI2RlZmluZSBDUlBfQURfQ0JFX0JFU0wgICAgICAgICAyMAorI2RlZmluZSBDUlBfQURfQ0JFX1dSSVRFCTB4MDAwMTAwMDAKKworCisvKgorICogVVNCIERldmljZSBDb250cm9sbGVyCisgKgorICogVGhlc2UgYXJlIHVzZWQgYnkgdGhlIFVTQiBnYWRnZXQgZHJpdmVyLCBzbyB0aGV5IGRvbid0IGZvbGxvdyB0aGUKKyAqIElYUDRYWF8gbmFtaW5nIGNvbnZldGlvbnMuCisgKgorICovCisjIGRlZmluZSBJWFA0WFhfVVNCX1JFRyh4KSAgICAgICAoKigodm9sYXRpbGUgdTMyICopKHgpKSkKKworLyogVURDIFVuZG9jdW1lbnRlZCAtIFJlc2VydmVkMSAqLworI2RlZmluZSBVRENfUkVTMQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwMDQpICAKKy8qIFVEQyBVbmRvY3VtZW50ZWQgLSBSZXNlcnZlZDIgKi8KKyNkZWZpbmUgVURDX1JFUzIJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDA4KSAgCisvKiBVREMgVW5kb2N1bWVudGVkIC0gUmVzZXJ2ZWQzICovCisjZGVmaW5lIFVEQ19SRVMzCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDAwQykgIAorLyogVURDIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1IJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDAwMCkgIAorLyogVURDIEVuZHBvaW50IDAgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MwCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwMTApICAKKy8qIFVEQyBFbmRwb2ludCAxIChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwMTQpICAKKy8qIFVEQyBFbmRwb2ludCAyIChPVVQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTMgkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDE4KSAgCisvKiBVREMgRW5kcG9pbnQgMyAoSU4pIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTMwkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDFDKSAgCisvKiBVREMgRW5kcG9pbnQgNCAoT1VUKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzQJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDAyMCkgIAorLyogVURDIEVuZHBvaW50IDUgKEludGVycnVwdCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1M1CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwMjQpICAKKy8qIFVEQyBFbmRwb2ludCA2IChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1M2CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwMjgpICAKKy8qIFVEQyBFbmRwb2ludCA3IChPVVQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTNwkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDJDKSAgCisvKiBVREMgRW5kcG9pbnQgOCAoSU4pIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTOAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDMwKSAgCisvKiBVREMgRW5kcG9pbnQgOSAoT1VUKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzkJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDAzNCkgIAorLyogVURDIEVuZHBvaW50IDEwIChJbnRlcnJ1cHQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTMTAJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDAzOCkgIAorLyogVURDIEVuZHBvaW50IDExIChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxMQkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDNDKSAgCisvKiBVREMgRW5kcG9pbnQgMTIgKE9VVCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxMgkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDQwKSAgCisvKiBVREMgRW5kcG9pbnQgMTMgKElOKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzEzCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwNDQpICAKKy8qIFVEQyBFbmRwb2ludCAxNCAoT1VUKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzE0CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwNDgpICAKKy8qIFVEQyBFbmRwb2ludCAxNSAoSW50ZXJydXB0KSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzE1CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwNEMpICAKKy8qIFVEQyBGcmFtZSBOdW1iZXIgUmVnaXN0ZXIgSGlnaCAqLworI2RlZmluZSBVRk5SSAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDYwKSAgCisvKiBVREMgRnJhbWUgTnVtYmVyIFJlZ2lzdGVyIExvdyAqLworI2RlZmluZSBVRk5STAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDY0KSAgCisvKiBVREMgQnl0ZSBDb3VudCBSZWcgMiAqLworI2RlZmluZSBVQkNSMgkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDY4KSAgCisvKiBVREMgQnl0ZSBDb3VudCBSZWcgNCAqLworI2RlZmluZSBVQkNSNAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDZjKSAgCisvKiBVREMgQnl0ZSBDb3VudCBSZWcgNyAqLworI2RlZmluZSBVQkNSNwkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDcwKSAgCisvKiBVREMgQnl0ZSBDb3VudCBSZWcgOSAqLworI2RlZmluZSBVQkNSOQkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDc0KSAgCisvKiBVREMgQnl0ZSBDb3VudCBSZWcgMTIgKi8KKyNkZWZpbmUgVUJDUjEyCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwNzgpICAKKy8qIFVEQyBCeXRlIENvdW50IFJlZyAxNCAqLworI2RlZmluZSBVQkNSMTQJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDA3YykgIAorLyogVURDIEVuZHBvaW50IDAgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSMAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDgwKSAgCisvKiBVREMgRW5kcG9pbnQgMSBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFIxCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAxMDApICAKKy8qIFVEQyBFbmRwb2ludCAyIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjIJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDE4MCkgIAorLyogVURDIEVuZHBvaW50IDMgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSMwkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMjAwKSAgCisvKiBVREMgRW5kcG9pbnQgNCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFI0CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDA0MDApICAKKy8qIFVEQyBFbmRwb2ludCA1IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjUJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDBBMCkgIAorLyogVURDIEVuZHBvaW50IDYgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSNgkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwNjAwKSAgCisvKiBVREMgRW5kcG9pbnQgNyBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFI3CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDA2ODApICAKKy8qIFVEQyBFbmRwb2ludCA4IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjgJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDcwMCkgIAorLyogVURDIEVuZHBvaW50IDkgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSOQkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwOTAwKSAgCisvKiBVREMgRW5kcG9pbnQgMTAgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSMTAJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDBDMCkgIAorLyogVURDIEVuZHBvaW50IDExIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjExCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDBCMDApICAKKy8qIFVEQyBFbmRwb2ludCAxMiBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFIxMgkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwQjgwKSAgCisvKiBVREMgRW5kcG9pbnQgMTMgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSMTMJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MEMwMCkgIAorLyogVURDIEVuZHBvaW50IDE0IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjE0CQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDBFMDApICAKKy8qIFVEQyBFbmRwb2ludCAxNSBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFIxNQkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMEUwKSAgCisvKiBVREMgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBVSUNSMAkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDUwKSAgCisvKiBVREMgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBVSUNSMQkJSVhQNFhYX1VTQl9SRUcoSVhQNFhYX1VTQl9CQVNFX1ZJUlQrMHgwMDU0KSAgCisvKiBVREMgU3RhdHVzIEludGVycnVwdCBSZWdpc3RlciAwICovCisjZGVmaW5lIFVTSVIwCQlJWFA0WFhfVVNCX1JFRyhJWFA0WFhfVVNCX0JBU0VfVklSVCsweDAwNTgpICAKKy8qIFVEQyBTdGF0dXMgSW50ZXJydXB0IFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgVVNJUjEJCUlYUDRYWF9VU0JfUkVHKElYUDRYWF9VU0JfQkFTRV9WSVJUKzB4MDA1QykgIAorCisjZGVmaW5lIFVEQ0NSX1VERQkoMSA8PCAwKQkvKiBVREMgZW5hYmxlICovCisjZGVmaW5lIFVEQ0NSX1VEQQkoMSA8PCAxKQkvKiBVREMgYWN0aXZlICovCisjZGVmaW5lIFVEQ0NSX1JTTQkoMSA8PCAyKQkvKiBEZXZpY2UgcmVzdW1lICovCisjZGVmaW5lIFVEQ0NSX1JFU0lSCSgxIDw8IDMpCS8qIFJlc3VtZSBpbnRlcnJ1cHQgcmVxdWVzdCAqLworI2RlZmluZSBVRENDUl9TVVNJUgkoMSA8PCA0KQkvKiBTdXNwZW5kIGludGVycnVwdCByZXF1ZXN0ICovCisjZGVmaW5lIFVEQ0NSX1NSTQkoMSA8PCA1KQkvKiBTdXNwZW5kL3Jlc3VtZSBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBVRENDUl9SU1RJUgkoMSA8PCA2KQkvKiBSZXNldCBpbnRlcnJ1cHQgcmVxdWVzdCAqLworI2RlZmluZSBVRENDUl9SRU0JKDEgPDwgNykJLyogUmVzZXQgaW50ZXJydXB0IG1hc2sgKi8KKworI2RlZmluZSBVRENDUzBfT1BSCSgxIDw8IDApCS8qIE9VVCBwYWNrZXQgcmVhZHkgKi8KKyNkZWZpbmUgVURDQ1MwX0lQUgkoMSA8PCAxKQkvKiBJTiBwYWNrZXQgcmVhZHkgKi8KKyNkZWZpbmUgVURDQ1MwX0ZURgkoMSA8PCAyKQkvKiBGbHVzaCBUeCBGSUZPICovCisjZGVmaW5lIFVEQ0NTMF9EUldGCSgxIDw8IDMpCS8qIERldmljZSByZW1vdGUgd2FrZXVwIGZlYXR1cmUgKi8KKyNkZWZpbmUgVURDQ1MwX1NTVAkoMSA8PCA0KQkvKiBTZW50IHN0YWxsICovCisjZGVmaW5lIFVEQ0NTMF9GU1QJKDEgPDwgNSkJLyogRm9yY2Ugc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1MwX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gbm8gZW1wdHkgKi8KKyNkZWZpbmUgVURDQ1MwX1NBCSgxIDw8IDcpCS8qIFNldHVwIGFjdGl2ZSAqLworCisjZGVmaW5lIFVEQ0NTX0JJX1RGUwkoMSA8PCAwKQkvKiBUcmFuc21pdCBGSUZPIHNlcnZpY2UgKi8KKyNkZWZpbmUgVURDQ1NfQklfVFBDCSgxIDw8IDEpCS8qIFRyYW5zbWl0IHBhY2tldCBjb21wbGV0ZSAqLworI2RlZmluZSBVRENDU19CSV9GVEYJKDEgPDwgMikJLyogRmx1c2ggVHggRklGTyAqLworI2RlZmluZSBVRENDU19CSV9UVVIJKDEgPDwgMykJLyogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biAqLworI2RlZmluZSBVRENDU19CSV9TU1QJKDEgPDwgNCkJLyogU2VudCBzdGFsbCAqLworI2RlZmluZSBVRENDU19CSV9GU1QJKDEgPDwgNSkJLyogRm9yY2Ugc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NfQklfVFNQCSgxIDw8IDcpCS8qIFRyYW5zbWl0IHNob3J0IHBhY2tldCAqLworCisjZGVmaW5lIFVEQ0NTX0JPX1JGUwkoMSA8PCAwKQkvKiBSZWNlaXZlIEZJRk8gc2VydmljZSAqLworI2RlZmluZSBVRENDU19CT19SUEMJKDEgPDwgMSkJLyogUmVjZWl2ZSBwYWNrZXQgY29tcGxldGUgKi8KKyNkZWZpbmUgVURDQ1NfQk9fRE1FCSgxIDw8IDMpCS8qIERNQSBlbmFibGUgKi8KKyNkZWZpbmUgVURDQ1NfQk9fU1NUCSgxIDw8IDQpCS8qIFNlbnQgc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NfQk9fRlNUCSgxIDw8IDUpCS8qIEZvcmNlIHN0YWxsICovCisjZGVmaW5lIFVEQ0NTX0JPX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIFVEQ0NTX0JPX1JTUAkoMSA8PCA3KQkvKiBSZWNlaXZlIHNob3J0IHBhY2tldCAqLworCisjZGVmaW5lIFVEQ0NTX0lJX1RGUwkoMSA8PCAwKQkvKiBUcmFuc21pdCBGSUZPIHNlcnZpY2UgKi8KKyNkZWZpbmUgVURDQ1NfSUlfVFBDCSgxIDw8IDEpCS8qIFRyYW5zbWl0IHBhY2tldCBjb21wbGV0ZSAqLworI2RlZmluZSBVRENDU19JSV9GVEYJKDEgPDwgMikJLyogRmx1c2ggVHggRklGTyAqLworI2RlZmluZSBVRENDU19JSV9UVVIJKDEgPDwgMykJLyogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biAqLworI2RlZmluZSBVRENDU19JSV9UU1AJKDEgPDwgNykJLyogVHJhbnNtaXQgc2hvcnQgcGFja2V0ICovCisKKyNkZWZpbmUgVURDQ1NfSU9fUkZTCSgxIDw8IDApCS8qIFJlY2VpdmUgRklGTyBzZXJ2aWNlICovCisjZGVmaW5lIFVEQ0NTX0lPX1JQQwkoMSA8PCAxKQkvKiBSZWNlaXZlIHBhY2tldCBjb21wbGV0ZSAqLworI2RlZmluZSBVRENDU19JT19ST0YJKDEgPDwgMykJLyogUmVjZWl2ZSBvdmVyZmxvdyAqLworI2RlZmluZSBVRENDU19JT19ETUUJKDEgPDwgMykJLyogRE1BIGVuYWJsZSAqLworI2RlZmluZSBVRENDU19JT19STkUJKDEgPDwgNikJLyogUmVjZWl2ZSBGSUZPIG5vdCBlbXB0eSAqLworI2RlZmluZSBVRENDU19JT19SU1AJKDEgPDwgNykJLyogUmVjZWl2ZSBzaG9ydCBwYWNrZXQgKi8KKworI2RlZmluZSBVRENDU19JTlRfVEZTCSgxIDw8IDApCS8qIFRyYW5zbWl0IEZJRk8gc2VydmljZSAqLworI2RlZmluZSBVRENDU19JTlRfVFBDCSgxIDw8IDEpCS8qIFRyYW5zbWl0IHBhY2tldCBjb21wbGV0ZSAqLworI2RlZmluZSBVRENDU19JTlRfRlRGCSgxIDw8IDIpCS8qIEZsdXNoIFR4IEZJRk8gKi8KKyNkZWZpbmUgVURDQ1NfSU5UX1RVUgkoMSA8PCAzKQkvKiBUcmFuc21pdCBGSUZPIHVuZGVycnVuICovCisjZGVmaW5lIFVEQ0NTX0lOVF9TU1QJKDEgPDwgNCkJLyogU2VudCBzdGFsbCAqLworI2RlZmluZSBVRENDU19JTlRfRlNUCSgxIDw8IDUpCS8qIEZvcmNlIHN0YWxsICovCisjZGVmaW5lIFVEQ0NTX0lOVF9UU1AJKDEgPDwgNykJLyogVHJhbnNtaXQgc2hvcnQgcGFja2V0ICovCisKKyNkZWZpbmUgVUlDUjBfSU0wCSgxIDw8IDApCS8qIEludGVycnVwdCBtYXNrIGVwIDAgKi8KKyNkZWZpbmUgVUlDUjBfSU0xCSgxIDw8IDEpCS8qIEludGVycnVwdCBtYXNrIGVwIDEgKi8KKyNkZWZpbmUgVUlDUjBfSU0yCSgxIDw8IDIpCS8qIEludGVycnVwdCBtYXNrIGVwIDIgKi8KKyNkZWZpbmUgVUlDUjBfSU0zCSgxIDw8IDMpCS8qIEludGVycnVwdCBtYXNrIGVwIDMgKi8KKyNkZWZpbmUgVUlDUjBfSU00CSgxIDw8IDQpCS8qIEludGVycnVwdCBtYXNrIGVwIDQgKi8KKyNkZWZpbmUgVUlDUjBfSU01CSgxIDw8IDUpCS8qIEludGVycnVwdCBtYXNrIGVwIDUgKi8KKyNkZWZpbmUgVUlDUjBfSU02CSgxIDw8IDYpCS8qIEludGVycnVwdCBtYXNrIGVwIDYgKi8KKyNkZWZpbmUgVUlDUjBfSU03CSgxIDw8IDcpCS8qIEludGVycnVwdCBtYXNrIGVwIDcgKi8KKworI2RlZmluZSBVSUNSMV9JTTgJKDEgPDwgMCkJLyogSW50ZXJydXB0IG1hc2sgZXAgOCAqLworI2RlZmluZSBVSUNSMV9JTTkJKDEgPDwgMSkJLyogSW50ZXJydXB0IG1hc2sgZXAgOSAqLworI2RlZmluZSBVSUNSMV9JTTEwCSgxIDw8IDIpCS8qIEludGVycnVwdCBtYXNrIGVwIDEwICovCisjZGVmaW5lIFVJQ1IxX0lNMTEJKDEgPDwgMykJLyogSW50ZXJydXB0IG1hc2sgZXAgMTEgKi8KKyNkZWZpbmUgVUlDUjFfSU0xMgkoMSA8PCA0KQkvKiBJbnRlcnJ1cHQgbWFzayBlcCAxMiAqLworI2RlZmluZSBVSUNSMV9JTTEzCSgxIDw8IDUpCS8qIEludGVycnVwdCBtYXNrIGVwIDEzICovCisjZGVmaW5lIFVJQ1IxX0lNMTQJKDEgPDwgNikJLyogSW50ZXJydXB0IG1hc2sgZXAgMTQgKi8KKyNkZWZpbmUgVUlDUjFfSU0xNQkoMSA8PCA3KQkvKiBJbnRlcnJ1cHQgbWFzayBlcCAxNSAqLworCisjZGVmaW5lIFVTSVIwX0lSMAkoMSA8PCAwKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDAgKi8KKyNkZWZpbmUgVVNJUjBfSVIxCSgxIDw8IDEpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMSAqLworI2RlZmluZSBVU0lSMF9JUjIJKDEgPDwgMikJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAyICovCisjZGVmaW5lIFVTSVIwX0lSMwkoMSA8PCAzKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDMgKi8KKyNkZWZpbmUgVVNJUjBfSVI0CSgxIDw8IDQpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgNCAqLworI2RlZmluZSBVU0lSMF9JUjUJKDEgPDwgNSkJLyogSW50ZXJydXAgcmVxdWVzdCBlcCA1ICovCisjZGVmaW5lIFVTSVIwX0lSNgkoMSA8PCA2KQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDYgKi8KKyNkZWZpbmUgVVNJUjBfSVI3CSgxIDw8IDcpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgNyAqLworCisjZGVmaW5lIFVTSVIxX0lSOAkoMSA8PCAwKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDggKi8KKyNkZWZpbmUgVVNJUjFfSVI5CSgxIDw8IDEpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgOSAqLworI2RlZmluZSBVU0lSMV9JUjEwCSgxIDw8IDIpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMTAgKi8KKyNkZWZpbmUgVVNJUjFfSVIxMQkoMSA8PCAzKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDExICovCisjZGVmaW5lIFVTSVIxX0lSMTIJKDEgPDwgNCkJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAxMiAqLworI2RlZmluZSBVU0lSMV9JUjEzCSgxIDw8IDUpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMTMgKi8KKyNkZWZpbmUgVVNJUjFfSVIxNAkoMSA8PCA2KQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDE0ICovCisjZGVmaW5lIFVTSVIxX0lSMTUJKDEgPDwgNykJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAxNSAqLworCisjZGVmaW5lIERDTURfTEVOR1RICTB4MDFmZmYJCS8qIGxlbmd0aCBtYXNrIChtYXggPSA4SyAtIDEpICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdGF0aWMgaW5saW5lIGludCBjcHVfaXNfaXhwNDZ4KHZvaWQpCit7CisjaWZkZWYgQ09ORklHX0NQVV9JWFA0NlgKKwl1bnNpZ25lZCBpbnQgcHJvY2Vzc29yX2lkOworCisJYXNtKCJtcmMgcDE1LCAwLCAlMCwgY3IwLCBjcjAsIDA7IiA6ICI9ciIocHJvY2Vzc29yX2lkKSA6KTsKKworCWlmICgocHJvY2Vzc29yX2lkICYgMHhmZmZmZmYwMCkgPT0gMHg2OTA1NDIwMCkKKwkJcmV0dXJuIDE7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzQ4NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L21lbW9yeS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvbWVtb3J5LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworI2luY2x1ZGUgPGFzbS9zaXplcy5oPgorCisvKgorICogUGh5c2ljYWwgRFJBTSBvZmZzZXQuCisgKi8KKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4MDAwMDAwMDBVTCkKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyoKKyAqIE9ubHkgZmlyc3QgNjRNQiBvZiBtZW1vcnkgY2FuIGJlIGFjY2Vzc2VkIHZpYSBQQ0kuCisgKiBXZSB1c2UgR0ZQX0RNQSB0byBhbGxvY2F0ZSBzYWZlIGJ1ZmZlcnMgdG8gZG8gbWFwL3VubWFwLgorICogVGhpcyBpcyByZWFsbHkgdWdseSBhbmQgd2UgbmVlZCBhIGJldHRlciB3YXkgb2Ygc3BlY2lmeWluZworICogRE1BLWNhcGFibGUgcmVnaW9ucyBvZiBtZW1vcnkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2FyY2hfYWRqdXN0X3pvbmVzKGludCBub2RlLCB1bnNpZ25lZCBsb25nICp6b25lX3NpemUsIAorCXVuc2lnbmVkIGxvbmcgKnpob2xlX3NpemUpIAoreworCXVuc2lnbmVkIGludCBzeiA9IFNaXzY0TSA+PiBQQUdFX1NISUZUOworCisJLyoKKwkgKiBPbmx5IGFkanVzdCBpZiA+IDY0TSBvbiBjdXJyZW50IHN5c3RlbQorCSAqLworCWlmIChub2RlIHx8ICh6b25lX3NpemVbMF0gPD0gc3opKQorCQlyZXR1cm47CisKKwl6b25lX3NpemVbMV0gPSB6b25lX3NpemVbMF0gLSBzejsKKwl6b25lX3NpemVbMF0gPSBzejsKKwl6aG9sZV9zaXplWzFdID0gemhvbGVfc2l6ZVswXTsKKwl6aG9sZV9zaXplWzBdID0gMDsKK30KKworI2RlZmluZSBhcmNoX2FkanVzdF96b25lcyhub2RlLCBzaXplLCBob2xlcykgXAorCV9fYXJjaF9hZGp1c3Rfem9uZXMobm9kZSwgc2l6ZSwgaG9sZXMpCisKKyNkZWZpbmUgSVNBX0RNQV9USFJFU0hPTEQgKFNaXzY0TSAtIDEpCisKKyNlbmRpZgorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKgkJYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKgkJdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqCisgKiBUaGVzZSBhcmUgZHVtbWllcyBmb3Igbm93LgorICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJIF9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJIF9fcGh5c190b192aXJ0KHgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTc1NzEyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BhcmFtLmgKQEAgLTAsMCArMSwzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BhcmFtLmgKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BsYXRmb3JtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvcGxhdGZvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTYyNmMwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BsYXRmb3JtLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvcGxhdGZvcm0uaAorICoKKyAqIENvbnN0YW50cyBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWZ1bCB0byBJWFA0eHggcGxhdGZvcm0tc3BlY2lmaWMgY29kZQorICogYW5kIGRldmljZSBkcml2ZXJzLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0hfXworI2Vycm9yICJEbyBub3QgaW5jbHVkZSB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4iCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCisjaWZuZGVmCV9fQVJNRUJfXworI2RlZmluZQlSRUdfT0ZGU0VUCTAKKyNlbHNlCisjZGVmaW5lCVJFR19PRkZTRVQJMworI2VuZGlmCisKKy8qCisgKiBFeHBhbnNpb24gYnVzIG1lbW9yeSByZWdpb25zCisgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9CVVNfQkFTRV9QSFlTCSgweDUwMDAwMDAwKQorCisjZGVmaW5lCUlYUDRYWF9FWFBfQlVTX0NTWF9SRUdJT05fU0laRQkoMHgwMTAwMDAwMCkKKworI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzBfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDAwMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzFfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDAxMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzJfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDAyMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzNfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDAzMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzRfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDA0MDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzVfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDA1MDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzZfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDA2MDAwMDAwKQorI2RlZmluZSBJWFA0WFhfRVhQX0JVU19DUzdfQkFTRV9QSFlTCShJWFA0WFhfRVhQX0JVU19CQVNFX1BIWVMgKyAweDA3MDAwMDAwKQorCisjZGVmaW5lIElYUDRYWF9GTEFTSF9XUklUQUJMRQkoMHgyKQorI2RlZmluZSBJWFA0WFhfRkxBU0hfREVGQVVMVAkoMHhiY2QyM2M0MCkKKyNkZWZpbmUgSVhQNFhYX0ZMQVNIX1dSSVRFCSgweGJjZDIzYzQyKQorCisvKgorICogQ2xvY2sgU3BlZWQgRGVmaW5pdGlvbnMuCisgKi8KKyNkZWZpbmUgSVhQNFhYX1BFUklQSEVSQUxfQlVTX0NMT0NLIAkoNjYpIC8qIDY2TWh6aSBBUEIgQlVTICAgKi8gCisjZGVmaW5lIElYUDRYWF9VQVJUX1hUQUwgICAgICAgIAkxNDc0NTYwMAorCisvKgorICogVGhlIElYUDR4eCBjaGlwcyBkbyBub3QgaGF2ZSBhbiBJMkMgdW5pdCwgc28gR1BJTyBsaW5lcyBhcmUganVzdAorICogdXNlZCB0byAKKyAqIFVzZWQgYXMgcGxhdGZvcm1fZGF0YSB0byBwcm92aWRlIEdQSU8gcGluIGluZm9ybWF0aW9uIHRvIHRoZSBpeHA0MngKKyAqIEkyQyBkcml2ZXIuCisgKi8KK3N0cnVjdCBpeHA0eHhfaTJjX3BpbnMgeworCXVuc2lnbmVkIGxvbmcgc2RhX3BpbjsKKwl1bnNpZ25lZCBsb25nIHNjbF9waW47Cit9OworCisKK3N0cnVjdCBzeXNfdGltZXI7CisKKy8qCisgKiBGdW5jdGlvbnMgdXNlZCBieSBwbGF0Zm9ybS1sZXZlbCBzZXR1cCBjb2RlCisgKi8KK2V4dGVybiB2b2lkIGl4cDR4eF9tYXBfaW8odm9pZCk7CitleHRlcm4gdm9pZCBpeHA0eHhfaW5pdF9pcnEodm9pZCk7CitleHRlcm4gdm9pZCBpeHA0eHhfc3lzX2luaXQodm9pZCk7CitleHRlcm4gc3RydWN0IHN5c190aW1lciBpeHA0eHhfdGltZXI7CitleHRlcm4gdm9pZCBpeHA0eHhfcGNpX3ByZWluaXQodm9pZCk7CitzdHJ1Y3QgcGNpX3N5c19kYXRhOworZXh0ZXJuIGludCBpeHA0eHhfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpOworZXh0ZXJuIHN0cnVjdCBwY2lfYnVzICppeHA0eHhfc2Nhbl9idXMoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpOworCisvKgorICogR1BJTy1mdW5jdGlvbnMKKyAqLworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29udmVydGVkIHRvIHRoZSByZWFsIEhXIGJpdHMgdGhlIGdwaW9fbGluZV9jb25maWcKKyAqLworLyogR1BJTyBwaW4gdHlwZXMgKi8KKyNkZWZpbmUgSVhQNFhYX0dQSU9fT1VUIAkJMHgxCisjZGVmaW5lIElYUDRYWF9HUElPX0lOICAJCTB4MgorCisjZGVmaW5lIElYUDRYWF9HUElPX0lOVFNUWUxFX01BU0sJMHg3QyAgLyogQml0cyBbNjoyXSBkZWZpbmUgaW50ZXJydXB0IHN0eWxlICovCisKKy8qIAorICogR1BJTyBpbnRlcnJ1cHQgdHlwZXMuCisgKi8KKyNkZWZpbmUgSVhQNFhYX0dQSU9fQUNUSVZFX0hJR0gJCTB4NCAvKiBEZWZhdWx0ICovCisjZGVmaW5lIElYUDRYWF9HUElPX0FDVElWRV9MT1cJCTB4OAorI2RlZmluZSBJWFA0WFhfR1BJT19SSVNJTkdfRURHRQkJMHgxMAorI2RlZmluZSBJWFA0WFhfR1BJT19GQUxMSU5HX0VER0UgCTB4MjAKKyNkZWZpbmUgSVhQNFhYX0dQSU9fVFJBTlNJVElPTkFMIAkweDQwCisKKy8qIEdQSU8gc2lnbmFsIHR5cGVzICovCisjZGVmaW5lIElYUDRYWF9HUElPX0xPVwkJCTAKKyNkZWZpbmUgSVhQNFhYX0dQSU9fSElHSAkJMQorCisvKiBHUElPIENsb2NrcyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19DTEtfMAkJMTQKKyNkZWZpbmUgSVhQNFhYX0dQSU9fQ0xLXzEJCTE1CisKK2V4dGVybiB2b2lkIGdwaW9fbGluZV9jb25maWcodTggbGluZSwgdTMyIHN0eWxlKTsKKworc3RhdGljIGlubGluZSB2b2lkIGdwaW9fbGluZV9nZXQodTggbGluZSwgaW50ICp2YWx1ZSkKK3sKKwkqdmFsdWUgPSAoKklYUDRYWF9HUElPX0dQSU5SID4+IGxpbmUpICYgMHgxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ3Bpb19saW5lX3NldCh1OCBsaW5lLCBpbnQgdmFsdWUpCit7CisJaWYgKHZhbHVlID09IElYUDRYWF9HUElPX0hJR0gpCisJICAgICpJWFA0WFhfR1BJT19HUE9VVFIgfD0gKDEgPDwgbGluZSk7CisJZWxzZSBpZiAodmFsdWUgPT0gSVhQNFhYX0dQSU9fTE9XKQorCSAgICAqSVhQNFhYX0dQSU9fR1BPVVRSICY9IH4oMSA8PCBsaW5lKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdwaW9fbGluZV9pc3JfY2xlYXIodTggbGluZSkKK3sKKwkqSVhQNFhYX0dQSU9fR1BJU1IgPSAoMSA8PCBsaW5lKTsKK30KKworI2VuZGlmIC8vIF9fQVNTRU1CTFlfXworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvcHJwbWMxMTAwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvcHJwbWMxMTAwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MzJhYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9wcnBtYzExMDAuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3BycG1jMTEwMC5oCisgKgorICogTW90b3JvbGxhIFByUE1DMTEwMCBwbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbml0aW9ucworICoKKyAqIEF1dGhvcjogRGVlcGFrIFNheGVuYSA8ZHNheGVuYUBwbGV4aXR5Lm5ldD4KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCAoYykgTW9udGFWaXN0YSwgU29mdHdhcmUsIEluYy4gCisgKiAKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkgCisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0hfXworI2Vycm9yICJEbyBub3QgaW5jbHVkZSB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4iCisjZW5kaWYKKworI2RlZmluZQlQUlBNQzExMDBfRkxBU0hfQkFTRQlJWFA0WFhfRVhQX0JVU19DUzBfQkFTRV9QSFlTCisjZGVmaW5lCVBSUE1DMTEwMF9GTEFTSF9TSVpFCUlYUDRYWF9FWFBfQlVTX0NTWF9SRUdJT05fU0laRQorCisjZGVmaW5lCVBSUE1DMTEwMF9QQ0lfTUlOX0RFVklECTEwCisjZGVmaW5lCVBSUE1DMTEwMF9QQ0lfTUFYX0RFVklECTE2CisjZGVmaW5lCVBSUE1DMTEwMF9QQ0lfSVJRX0xJTkVTCTQKKworCisvKiBQQ0kgY29udHJvbGxlciBHUElPIHRvIElSUSBwaW4gbWFwcGluZ3MgKi8KKyNkZWZpbmUgUFJQTUMxMTAwX1BDSV9JTlRBX1BJTgkxMQorI2RlZmluZSBQUlBNQzExMDBfUENJX0lOVEJfUElOCTEwCisjZGVmaW5lCVBSUE1DMTEwMF9QQ0lfSU5UQ19QSU4JOQorI2RlZmluZQlQUlBNQzExMDBfUENJX0lOVERfUElOCTgKKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM1ODlhYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC9zeXN0ZW0uaApAQCAtMCwwICsxLDQyIEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHgvL3N5c3RlbS5oIAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2lkbGUodm9pZCkKK3sKKyNpZiAwCisJaWYgKCFobHRfY291bnRlcikKKwkJY3B1X2RvX2lkbGUoMCk7CisjZW5kaWYKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9yZXNldChjaGFyIG1vZGUpCit7CisJaWYgKCAxICYmIG1vZGUgPT0gJ3MnKSB7CisJCS8qIEp1bXAgaW50byBST00gYXQgYWRkcmVzcyAwICovCisJCWNwdV9yZXNldCgwKTsKKwl9IGVsc2UgeworCQkvKiBVc2Ugb24tY2hpcCByZXNldCBjYXBhYmlsaXR5ICovCisKKwkJLyogc2V0IHRoZSAia2V5IiByZWdpc3RlciB0byBlbmFibGUgYWNjZXNzIHRvCisJCSAqICJ0aW1lciIgYW5kICJlbmFibGUiIHJlZ2lzdGVycworCQkgKi8KKwkJKklYUDRYWF9PU1dLID0gSVhQNFhYX1dEVF9LRVk7CisKKwkJLyogd3JpdGUgMCB0byB0aGUgdGltZXIgcmVnaXN0ZXIgZm9yIGFuIGltbWVkaWF0ZSByZXNldCAqLworCQkqSVhQNFhYX09TV1QgPSAwOworCisJCSpJWFA0WFhfT1NXRSA9IElYUDRYWF9XRFRfUkVTRVRfRU5BQkxFIHwgSVhQNFhYX1dEVF9DT1VOVF9FTkFCTEU7CisJfQorfQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YzlkNzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdGltZXguaApAQCAtMCwwICsxLDEzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3RpbWV4LmgKKyAqIAorICovCisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKworLyoKKyAqIFdlIHVzZSBJWFA0MjUgR2VuZXJhbCBwdXJwb3NlIHRpbWVyIGZvciBvdXIgdGltZXIgbmVlZHMsIGl0IHJ1bnMgYXQgCisgKiA2Ni42Ni4uLiBNSHoKKyAqLworI2RlZmluZSBDTE9DS19USUNLX1JBVEUgKDY2NjY2NjY2KQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjBjMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwNHh4L3VuY29tcHJlc3MuaCAKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfQVJDSF9VTkNPTVBSRVNTX0hfCisjZGVmaW5lIF9BUkNIX1VOQ09NUFJFU1NfSF8KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2VyaWFsX3JlZy5oPgorCisjZGVmaW5lIFRYX0RPTkUgKFVBUlRfTFNSX1RFTVR8VUFSVF9MU1JfVEhSRSkKKworc3RhdGljIHZvbGF0aWxlIHUzMiogdWFydF9iYXNlOworCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCS8qIENoZWNrIFRIUkUgYW5kIFRFTVQgYml0cyBiZWZvcmUgd2UgdHJhbnNtaXQgdGhlIGNoYXJhY3Rlci4KKwkgKi8KKwl3aGlsZSAoKHVhcnRfYmFzZVtVQVJUX0xTUl0gJiBUWF9ET05FKSAhPSBUWF9ET05FKTsgCisJKnVhcnRfYmFzZSA9IGM7Cit9CisKKy8qCisgKiBUaGlzIGRvZXMgbm90IGFwcGVuZCBhIG5ld2xpbmUKKyAqLworc3RhdGljIHZvaWQgcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJd2hpbGUgKCpzKQorCXsKKwkJcHV0Yygqcyk7CisJCWlmICgqcyA9PSAnXG4nKQorCQkJcHV0YygnXHInKTsKKwkJcysrOworCX0KK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2FyY2hfZGVjb21wX3NldHVwKHVuc2lnbmVkIGxvbmcgYXJjaF9pZCkKK3sKKwkvKgorCSAqIENveW90ZSBhbmQgZ3R3eDU3MTUgb25seSBoYXZlIFVBUlQyIGNvbm5lY3RlZAorCSAqLworCWlmIChtYWNoaW5lX2lzX2FkaV9jb3lvdGUoKSB8fCBtYWNoaW5lX2lzX2d0d3g1NzE1KCkpCisJCXVhcnRfYmFzZSA9ICh2b2xhdGlsZSB1MzIqKSBJWFA0WFhfVUFSVDJfQkFTRV9QSFlTOworCWVsc2UKKwkJdWFydF9iYXNlID0gKHZvbGF0aWxlIHUzMiopIElYUDRYWF9VQVJUMV9CQVNFX1BIWVM7Cit9CisKKy8qCisgKiBhcmNoX2lkIGlzIGEgdmFyaWFibGUgaW4gZGVjb21wcmVzc19rZXJuZWwoKQorICovCisjZGVmaW5lIGFyY2hfZGVjb21wX3NldHVwKCkJX19hcmNoX2RlY29tcF9zZXR1cChhcmNoX2lkKQorCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDR4eC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNDZlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHA0eHgvdm1hbGxvYy5oCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19WTUFERFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4RkYwMDAwMDApCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2F1eF9yZWcuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2F1eF9yZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjJjYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvYXV4X3JlZy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9hdXhfcmVnLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAgMDgtMDItMjAwMAlTSkgJQ3JlYXRlZCBmaWxlCisgKi8KKyNpZm5kZWYgX0FTTV9BUkNIX0FVWFJFR19ICisjZGVmaW5lIF9BU01fQVJDSF9BVVhSRUdfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2RlZmluZSBsNzIwMGF1eF9yZWcJKigodm9sYXRpbGUgdW5zaWduZWQgaW50ICopIChBVVhfQkFTRSkpCisKKy8qCisgKiBBdXhpbGxhcnkgcmVnaXN0ZXIgdmFsdWVzCisgKi8KKyNkZWZpbmUgQVVYX0NMRUFSCQkweDAwMDAwMDAwCisjZGVmaW5lIEFVWF9ESUFHX0xFRF9PTgkJMHgwMDAwMDAwMgorI2RlZmluZSBBVVhfUlRTX1VBUlQxCQkweDAwMDAwMDA0CisjZGVmaW5lIEFVWF9EVFJfVUFSVDEJCTB4MDAwMDAwMDgKKyNkZWZpbmUgQVVYX0tCRF9DT0xVTU5fMTJfSElHSAkweDAwMDAwMDEwCisjZGVmaW5lIEFVWF9LQkRfQ09MVU1OXzEyX09GRgkweDAwMDAwMDIwCisjZGVmaW5lIEFVWF9LQkRfQ09MVU1OXzEzX0hJR0gJMHgwMDAwMDA0MAorI2RlZmluZSBBVVhfS0JEX0NPTFVNTl8xM19PRkYJMHgwMDAwMDA4MAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NjQ3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsNDAgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyovCisKKwkJLmVxdQlpb192aXJ0LCBJT19CQVNFCisJCS5lcXUJaW9fcGh5cywgSU9fU1RBUlQKKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEJCQlAIE1NVSBlbmFibGVkPworCQltb3ZlcQlccngsICNpb19waHlzCQlAIHBoeXNpY2FsIGJhc2UgYWRkcmVzcworCQltb3ZuZQlccngsICNpb192aXJ0CQlAIHZpcnR1YWwgYWRkcmVzcworCQlhZGQJXHJ4LCBccngsICMweDAwMDQ0MDAwCUAgVUFSVDEKK0AJCWFkZAlccngsIFxyeCwgIzB4MDAwNDUwMDAJQCBVQVJUMgorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHIJXHJkLCBbXHJ4LCAjMHgwXQlAIFVBUlREUgorCQkuZW5kbQorCisJCS5tYWNybwl3YWl0dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICMweDE4XQlAIFVBUlRGTEcKKwkJdHN0CVxyZCwgIzEgPDwgNQkJQCBVQVJURkxHVVRYRkYgLSAxIHdoZW4gZnVsbAorCQlibmUJMTAwMWIKKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDE6CQlsZHIJXHJkLCBbXHJ4LCAjMHgxOF0JQCBVQVJURkxHCisJCXRzdAlccmQsICMxIDw8IDMJCUAgVUFSVEZMR1VCVVNZIC0gMSB3aGVuIGJ1c3kKKwkJYm5lCTEwMDFiCisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OTViMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9kbWEuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvZG1hLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwOC0yOS0yMDAwCVNKSAlDcmVhdGVkCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKy8qIERNQSBpcyBub3QgeWV0IGltcGxlbWVudGVkISBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgYWNvcm4sIGNvcHkgb3Zlci4uICovCisKKy8qCisgKiBUaGlzIGlzIHRoZSBtYXhpbXVtIERNQSBhZGRyZXNzIHRoYXQgY2FuIGJlIERNQWQgdG8uCisgKiBUaGVyZSBzaG91bGQgbm90IGJlIG1vcmUgdGhhbiAoMHhkMDAwMDAwMCAtIDB4YzAwMDAwMDApCisgKiBieXRlcyBvZiBSQU0uCisgKi8KKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTICAgICAgICAgMHhkMDAwMDAwMAorI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTICAgICAgICAwCisKKyNkZWZpbmUgRE1BX1MwICAgICAgICAgICAgICAgICAgMAorCisjZW5kaWYgLyogX0FTTV9BUkNIX0RNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9lbnRyeS1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjYzNDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDI5IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvZW50cnktbWFjcm8uUworICoKKyAqIExvdy1sZXZlbCBJUlEgaGVscGVyIG1hY3JvcyBmb3IgTDcyMDAtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKworCQkuZXF1CWlycV9iYXNlX2FkZHIsCUlPX0JBU0VfMgorCisJCS5tYWNybyAgZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8gIGdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCQltb3YgICAgIFxpcnFzdGF0LCAjaXJxX2Jhc2VfYWRkcgkJQCBWaXJ0IGFkZHIgSVJRIHJlZ3MKKwkJYWRkCVxpcnFzdGF0LCBcaXJxc3RhdCwgIzB4MDAwMDEwMDAJCUAgU3RhdHVzIHJlZworCQlsZHIgICAgIFxpcnFzdGF0LCBbXGlycXN0YXQsICMwXQkJQCBnZXQgaW50ZXJydXB0cworCQltb3YgICAgIFxpcnFuciwgIzAKKzEwMDE6CQl0c3QgICAgIFxpcnFzdGF0LCAjMQorCQlhZGRlcSAgIFxpcnFuciwgXGlycW5yLCAjMQorCQltb3ZlcSAgIFxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICMxCisJCXRzdGVxICAgXGlycW5yLCAjMzIKKwkJYmVxICAgICAxMDAxYgorCQl0ZXEgICAgIFxpcnFuciwgIzMyCisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2dwX3RpbWVycy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvZ3BfdGltZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYyMDk2MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2dwX3RpbWVycy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9ncF90aW1lcnMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBTdGV2ZSBIaWxsIChzamhpbGxAY290dy5jb20pCisgKgorICogQ2hhbmdlbG9nOgorICogICAwNy0yOC0yMDAwCVNKSAlDcmVhdGVkIGZpbGUKKyAqICAgMDgtMDItMjAwMAlTSkgJVXNlZCBzdHJ1Y3R1cmUgZm9yIHJlZ2lzdGVycworICovCisjaWZuZGVmIF9BU01fQVJDSF9HUFRJTUVSU19ICisjZGVmaW5lIF9BU01fQVJDSF9HUFRJTUVSU19ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorCisvKgorICogTGF5b3V0IG9mIEw3MjAwIGdlbmVyYWwgcHVycG9zZSB0aW1lciByZWdpc3RlcnMKKyAqLworc3RydWN0IEdQVF9SZWdzIHsKKwl1bnNpZ25lZCBpbnQgVElNRVJMT0FEOworCXVuc2lnbmVkIGludCBUSU1FUlZBTFVFOworCXVuc2lnbmVkIGludCBUSU1FUkNPTlRST0w7CisJdW5zaWduZWQgaW50IFRJTUVSQ0xFQVI7Cit9OworCisjZGVmaW5lIEdQVF9CQVNFCQkoSU9fQkFTRV8yICsgMHgzMDAwKQorI2RlZmluZSBsNzIwMF90aW1lcjFfcmVncwkoKHZvbGF0aWxlIHN0cnVjdCBHUFRfUmVncyAqKSAoR1BUX0JBU0UpKQorI2RlZmluZSBsNzIwMF90aW1lcjJfcmVncwkoKHZvbGF0aWxlIHN0cnVjdCBHUFRfUmVncyAqKSAoR1BUX0JBU0UgKyAweDIwKSkKKworLyoKKyAqIEdlbmVyYWwgcmVnaXN0ZXIgdmFsdWVzCisgKi8KKyNkZWZpbmUJR1BUX1BSRVNDQUxFXzEJCTB4MDAwMDAwMDAKKyNkZWZpbmUJR1BUX1BSRVNDQUxFXzE2CQkweDAwMDAwMDA0CisjZGVmaW5lCUdQVF9QUkVTQ0FMRV8yNTYJMHgwMDAwMDAwOAorI2RlZmluZSBHUFRfTU9ERV9GUkVFUlVOCTB4MDAwMDAwMDAKKyNkZWZpbmUgR1BUX01PREVfUEVSSU9ESUMJMHgwMDAwMDA0MAorI2RlZmluZSBHUFRfRU5BQkxFCQkweDAwMDAwMDgwCisjZGVmaW5lIEdQVF9CWlRPRwkJMHgwMDAwMDEwMAorI2RlZmluZSBHUFRfQlpNT0QJCTB4MDAwMDAyMDAKKyNkZWZpbmUgR1BUX0xPQURfTUFTSyAJCTB4MDAwMGZmZmYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9ncGlvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9ncGlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2M2U0MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2dwaW8uaApAQCAtMCwwICsxLDEwNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogICAgICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9ncGlvLmgKKyAqCisgKiAgICAgIFJlZ2lzdGVycyBhbmQgIGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoZSBMNzIwMCBMaW5rLVVwIFN5c3RlbXMKKyAqICAgICAgR1BJTy4KKyAqCisgKiAgICAgIChDKSBDb3B5cmlnaHQgMjAwMCwgUyBBIE1jQ29ubmVsbCAgKHNhbWNjb25uQGNvdHcuY29tKQorICoKKyAqICBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9yCisgKiAgbW9yZSBkZXRhaWxzLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEdQSU9fT0ZGICAgMHgwMDAwNTAwMCAgLyogT2Zmc2V0IGZyb20gSU9fU1RBUlQgdG8gdGhlIEdQSU8gcmVnJ3MuICovCisKKy8qIElPX1NUQVJUIGFuZCBJT19CQVNFIGFyZSBkZWZpbmVkIGluIGhhcmR3YXJlLmggKi8KKworI2RlZmluZSBHUElPX1NUQVJUIChJT19TVEFSVF8yICsgR1BJT19PRkYpIC8qIFBoeXNpY2FsIGFkZHIgb2YgdGhlIEdQSU8gcmVnLiAqLworI2RlZmluZSBHUElPX0JBU0UgIChJT19CQVNFXzIgICsgR1BJT19PRkYpIC8qIFZpcnR1YWwgYWRkciBvZiB0aGUgR1BJTyByZWcuICovCisKKy8qIE9mZnNldHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIEdQSU8gZm9yIGFsbCB0aGUgcmVnaXN0ZXJzLiAqLworI2RlZmluZSBQQURSX09GRiAgICAgMHgwMDAKKyNkZWZpbmUgUEFERFJfT0ZGICAgIDB4MDA0CisjZGVmaW5lIFBBU0JTUl9PRkYgICAweDAwOAorI2RlZmluZSBQQUVFTlJfT0ZGICAgMHgwMGMKKyNkZWZpbmUgUEFFU05SX09GRiAgIDB4MDEwCisjZGVmaW5lIFBBRVNUUl9PRkYgICAweDAxNAorI2RlZmluZSBQQUlNUl9PRkYgICAgMHgwMTgKKyNkZWZpbmUgUEFJTlRfT0ZGICAgIDB4MDFjCisKKyNkZWZpbmUgUEJEUl9PRkYgICAgIDB4MDIwCisjZGVmaW5lIFBCRERSX09GRiAgICAweDAyNAorI2RlZmluZSBQQlNCU1JfT0ZGICAgMHgwMjgKKyNkZWZpbmUgUEJJTVJfT0ZGICAgIDB4MDM4CisjZGVmaW5lIFBCSU5UX09GRiAgICAweDAzYworCisjZGVmaW5lIFBDRFJfT0ZGICAgICAweDA0MAorI2RlZmluZSBQQ0REUl9PRkYgICAgMHgwNDQKKyNkZWZpbmUgUENTQlNSX09GRiAgIDB4MDQ4CisjZGVmaW5lIFBDSU1SX09GRiAgICAweDA1OAorI2RlZmluZSBQQ0lOVF9PRkYgICAgMHgwNWMKKworI2RlZmluZSBQRERSX09GRiAgICAgMHgwNjAKKyNkZWZpbmUgUERERFJfT0ZGICAgIDB4MDY0CisjZGVmaW5lIFBEU0JTUl9PRkYgICAweDA2OAorI2RlZmluZSBQREVFTlJfT0ZGICAgMHgwNmMKKyNkZWZpbmUgUERFU05SX09GRiAgIDB4MDcwCisjZGVmaW5lIFBERVNUUl9PRkYgICAweDA3NAorI2RlZmluZSBQRElNUl9PRkYgICAgMHgwNzgKKyNkZWZpbmUgUERJTlRfT0ZGICAgIDB4MDdjCisKKyNkZWZpbmUgUEVEUl9PRkYgICAgIDB4MDgwCisjZGVmaW5lIFBFRERSX09GRiAgICAweDA4NAorI2RlZmluZSBQRVNCU1JfT0ZGICAgMHgwODgKKyNkZWZpbmUgUEVFRU5SX09GRiAgIDB4MDhjCisjZGVmaW5lIFBFRVNOUl9PRkYgICAweDA5MAorI2RlZmluZSBQRUVTVFJfT0ZGICAgMHgwOTQKKyNkZWZpbmUgUEVJTVJfT0ZGICAgIDB4MDk4CisjZGVmaW5lIFBFSU5UX09GRiAgICAweDA5YworCisvKiBEZWZpbmUgdGhlIEdQSU8gcmVnaXN0ZXJzIGZvciB1c2UgYnkgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBrZXJuZWwuICovCisjZGVmaW5lIFBBRFIgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQURSX09GRikpCisjZGVmaW5lIFBBRERSICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQUREUl9PRkYpKQorI2RlZmluZSBQQVNCU1IgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEFTQlNSX09GRikpCisjZGVmaW5lIFBBRUVOUiAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQUVFTlJfT0ZGKSkKKyNkZWZpbmUgUEFFU05SICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BBRVNOUl9PRkYpKQorI2RlZmluZSBQQUVTVFIgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEFFU1RSX09GRikpCisjZGVmaW5lIFBBSU1SICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQUlNUl9PRkYpKQorI2RlZmluZSBQQUlOVCAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEFJTlRfT0ZGKSkKKworI2RlZmluZSBQQkRSICAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEJEUl9PRkYpKQorI2RlZmluZSBQQkREUiAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEJERFJfT0ZGKSkKKyNkZWZpbmUgUEJTQlNSICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BCU0JTUl9PRkYpKQorI2RlZmluZSBQQklNUiAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEJJTVJfT0ZGKSkKKyNkZWZpbmUgUEJJTlQgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BCSU5UX09GRikpCisKKyNkZWZpbmUgUENEUiAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BDRFJfT0ZGKSkKKyNkZWZpbmUgUENERFIgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BDRERSX09GRikpCisjZGVmaW5lIFBDU0JTUiAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQ1NCU1JfT0ZGKSkKKyNkZWZpbmUgUENJTVIgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BDSU1SX09GRikpCisjZGVmaW5lIFBDSU5UICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQQ0lOVF9PRkYpKQorCisjZGVmaW5lIFBERFIgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQRERSX09GRikpCisjZGVmaW5lIFBERERSICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQREREUl9PRkYpKQorI2RlZmluZSBQRFNCU1IgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUERTQlNSX09GRikpCisjZGVmaW5lIFBERUVOUiAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQREVFTlJfT0ZGKSkKKyNkZWZpbmUgUERFU05SICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BERVNOUl9PRkYpKQorI2RlZmluZSBQREVTVFIgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUERFU1RSX09GRikpCisjZGVmaW5lIFBESU1SICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQRElNUl9PRkYpKQorI2RlZmluZSBQRElOVCAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUERJTlRfT0ZGKSkKKworI2RlZmluZSBQRURSICAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEVEUl9PRkYpKQorI2RlZmluZSBQRUREUiAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEVERFJfT0ZGKSkKKyNkZWZpbmUgUEVTQlNSICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BFU0JTUl9PRkYpKQorI2RlZmluZSBQRUVFTlIgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEVFRU5SX09GRikpCisjZGVmaW5lIFBFRVNOUiAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEdQSU9fQkFTRStQRUVTTlJfT0ZGKSkKKyNkZWZpbmUgUEVFU1RSICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BFRVNUUl9PRkYpKQorI2RlZmluZSBQRUlNUiAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShHUElPX0JBU0UrUEVJTVJfT0ZGKSkKKyNkZWZpbmUgUEVJTlQgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoR1BJT19CQVNFK1BFSU5UX09GRikpCisKKyNkZWZpbmUgVkVFX0VOICAgICAgICAgMHgwMgorI2RlZmluZSBCQUNLTElHSFRfRU4gICAweDA0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzU1MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvaGFyZHdhcmUuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBSb2IgU2NvdHQgKHJzY290dEBtdHJvYi5mZG5zLm5ldCkKKyAqICAgICAgICAgICAgICAgICAgICBTdGV2ZSBIaWxsIChzamhpbGxAY290dy5jb20pCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgdGhlIAorICogTGlua1VwIFN5c3RlbXMgTDcyMDAgU09DIGRldmVsb3BtZW50IGJvYXJkLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAgMDItMDEtMjAwMAkgUlMJQ3JlYXRlZCBMNzIwMCB2ZXJzaW9uLCBkZXJpdmVkIGZyb20gcnBjIGNvZGUKKyAqICAgMDMtMjEtMjAwMAlTSkgJQ2xlYW5lZCB1cCBmaWxlCisgKiAgIDA0LTIxLTIwMDAJIFJTIAlDaGFuZ2VkIG1hcHBpbmcgb2YgSS9PIGluIHZpcnR1YWwgc3BhY2UKKyAqICAgMDQtMjUtMjAwMAlTSkgJUmVtb3ZlZCB1bnVzZWQgc3ltYm9scyBhbmQgc3VjaAorICogICAwNS0wNS0yMDAwCVNKSAlDb21wbGV0ZSByZXdyaXRlCisgKiAgIDA3LTMxLTIwMDAJU0pICUFkZGVkIHVuZG9jdW1lbnRlZCBkZWJ1ZyBhdXhpbGxhcnkgcG9ydCB0bworICoJCQlnZXQgYXQgbGFzdCB0d28gY29sdW1ucyBmb3Iga2V5Ym9hcmQgZHJpdmVyCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisvKiBIYXJkd2FyZSBhZGRyZXNzZXMgb2YgbWFqb3IgYXJlYXMuCisgKiAgKl9TVEFSVCBpcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworICogICpfU0laRSAgaXMgdGhlIHNpemUgb2YgdGhlIHJlZ2lvbgorICogICpfQkFTRSAgaXMgdGhlIHZpcnR1YWwgYWRkcmVzcworICovCisjZGVmaW5lIFJBTV9TVEFSVAkJMHhmMDAwMDAwMAorI2RlZmluZSBSQU1fU0laRQkJMHgwMjAwMDAwMAorI2RlZmluZSBSQU1fQkFTRQkJMHhjMDAwMDAwMAorCisjZGVmaW5lIElPX1NUQVJUCQkweDgwMDAwMDAwICAgICAgLyogSS9PICovCisjZGVmaW5lIElPX1NJWkUJCQkweDAxMDAwMDAwCisjZGVmaW5lIElPX0JBU0UJCQkweGQwMDAwMDAwCisKKyNkZWZpbmUgSU9fU1RBUlRfMgkJMHg5MDAwMDAwMCAgICAgIC8qIEkvTyAqLworI2RlZmluZSBJT19TSVpFXzIJCTB4MDEwMDAwMDAKKyNkZWZpbmUgSU9fQkFTRV8yCQkweGQxMDAwMDAwCisKKyNkZWZpbmUgQVVYX1NUQVJUCQkweDFhMDAwMDAwICAgICAgLyogQVVYIFBPUlQgKi8KKyNkZWZpbmUgQVVYX1NJWkUgCQkweDAxMDAwMDAwCisjZGVmaW5lIEFVWF9CQVNFCQkweGQyMDAwMDAwCisKKyNkZWZpbmUgRkxBU0gxX1NUQVJUCQkweDAwMDAwMDAwICAgICAgLyogRkxBU0ggQkFOSyAxICovCisjZGVmaW5lIEZMQVNIMV9TSVpFIAkJMHgwMTAwMDAwMAorI2RlZmluZSBGTEFTSDFfQkFTRQkJMHhkMzAwMDAwMAorCisjZGVmaW5lIEZMQVNIMl9TVEFSVAkJMHgxMDAwMDAwMCAgICAgIC8qIEZMQVNIIEJBTksgMiAqLworI2RlZmluZSBGTEFTSDJfU0laRSAJCTB4MDEwMDAwMDAKKyNkZWZpbmUgRkxBU0gyX0JBU0UJCTB4ZDQwMDAwMDAKKworI2RlZmluZSBJU0FfU1RBUlQJCTB4MjAwMDAwMDAJLyogSVNBICovCisjZGVmaW5lIElTQV9TSVpFCQkweDIwMDAwMDAwCisjZGVmaW5lIElTQV9CQVNFCQkweGUwMDAwMDAwCisKKyNkZWZpbmUgRkxVU0hfQkFTRV9QSFlTCQkweDQwMDAwMDAwCS8qIFJPTSAqLworI2RlZmluZSBGTFVTSF9CQVNFCQkweGRmMDAwMDAwCisKKyNkZWZpbmUgUENJT19CQVNFCQlJT19CQVNFCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwMTJhMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2lvLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2lvLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwMy0yMS0yMDAwCVNKSAlDcmVhdGVkIGZyb20gbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV4dXNwY2kvaW8uaAorICogIDA4LTMxLTIwMDAJU0pICUFkZGVkIGluIElPIGZ1bmN0aW9ucyBuZWNlc3NhcnkgZm9yIG5ldyBkcml2ZXJzCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZmZmZmYKKworLyoKKyAqIFRoZXJlIGFyZSBub3QgcmVhbCBJU0Egbm9yIFBDSSBidXNlcywgc28gd2UgZmFrZSBpdC4KKyAqLworI2RlZmluZSBfX2lvX3BjaShhKQkJKCh2b2lkIF9faW9tZW0gKikoUENJT19CQVNFICsgKGEpKSkKKyNkZWZpbmUgX19tZW1fcGNpKGEpCQkoYSkKKyNkZWZpbmUgX19tZW1faXNhKGEpCQkoYSkKKworI2RlZmluZSBfX2lvYWRkcihwKSAgICAgICAgICAgICBfX2lvX3BjaShwKQorCisvKgorICogR2VuZXJpYyB2aXJ0dWFsIHJlYWQvd3JpdGUKKyAqLworI2RlZmluZSBfX2FyY2hfZ2V0YihhKSAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKGEpKQorI2RlZmluZSBfX2FyY2hfZ2V0bChhKSAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgICopKGEpKQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2FyY2hfZ2V0dyh1bnNpZ25lZCBsb25nIGEpCit7CisJdW5zaWduZWQgaW50IHZhbHVlOworCV9fYXNtX18gX192b2xhdGlsZV9fKCJsZHIlP2ggICAgJTAsIFslMSwgIzBdICAgIEAgZ2V0dyIKKwkJOiAiPSZyIiAodmFsdWUpCisJCTogInIiIChhKSk7CisJcmV0dXJuIHZhbHVlOworfQorCisjZGVmaW5lIF9fYXJjaF9wdXRiKHYsYSkgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikoYSkgPSAodikpCisjZGVmaW5lIF9fYXJjaF9wdXRsKHYsYSkgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAgKikoYSkgPSAodikpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2FyY2hfcHV0dyh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIGxvbmcgYSkKK3sKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0ciU/aCAgICAlMCwgWyUxLCAjMF0gICAgQCBwdXR3IgorICAgICAgICAgICAgICAgIDogOiAiciIgKHZhbHVlKSwgInIiIChhKSk7Cit9CisKKy8qCisgKiBUcmFuc2xhdGVkIGFkZHJlc3MgSU8gZnVuY3Rpb25zCisgKgorICogSU8gYWRkcmVzcyBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zbGF0ZWQgdG8gYSB2aXJ0dWFsIGFkZHJlc3MKKyAqLworI2RlZmluZSBvdXRiX3QodixwKQkJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKShwKSA9ICh2KSkKKyNkZWZpbmUgaW5iX3QocCkJCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikocCkpCisjZGVmaW5lIG91dHdfdCh2LHApCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikocCkgPSAodikpCisjZGVmaW5lIGlud190KHApCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikocCkpCisjZGVmaW5lIG91dGxfdCh2LHApCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKHApID0gKHYpKQorI2RlZmluZSBpbmxfdChwKQkJKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShwKSkKKworLyoKKyAqIEZJWE1FIC0gVGhlc2UgYXJlIHRvIGFsbG93IGZvciBsaW5raW5nLiBPbiBhbGwgdGhlIG90aGVyCisgKiAgICAgICAgIEFSTSBwbGF0Zm9ybXMsIHRoZSBlbnRpcmUgSU8gc3BhY2UgaXMgY29udGlndW91cy4KKyAqICAgICAgICAgVGhlIDcyMDAgaGFzIHRocmVlIHNlcGFyYXRlIElPIHNwYWNlcy4gVGhlIGJlbG93CisgKiAgICAgICAgIG1hY3JvcyB3aWxsIGV2ZW50dWFsbHkgYmVjb21lIG1vcmUgaW52b2x2ZWQuIFVzZQorICogICAgICAgICB3aXRoIGNhdXRpb24gYW5kIGRvbid0IGJlIHN1cnByaXNlZCBieSBrZXJuZWwgb29wc2VzISEhCisgKi8KKyNkZWZpbmUgaW5iKHApCQkgCWluYl90KHApCisjZGVmaW5lIGludyhwKQkgCQlpbndfdChwKQorI2RlZmluZSBpbmwocCkJIAkJaW5sX3QocCkKKyNkZWZpbmUgb3V0Yih2LHApCQlvdXRiX3QodixwKQorI2RlZmluZSBvdXR3KHYscCkJCW91dHdfdCh2LHApCisjZGVmaW5lIG91dGwodixwKQkJb3V0bF90KHYscCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9pcnFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEyMGMwMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL2lycXMuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvaXJxcy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFJvYiBTY290dCAocnNjb3R0QG10cm9iLmZkbnMubmV0KQorICogICAgICAgICAgICAgICAgICAgIFN0ZXZlIEhpbGwgKHNqaGlsbEBjb3R3LmNvbSkKKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgIDAxLTAyLTIwMDAgUlMJQ3JlYXRlIGw3MjAwIHZlcnNpb24KKyAqICAgMDMtMjgtMjAwMCBTSkgJUmVtb3ZlZCB1bnVzZWQgaW50ZXJydXB0CisgKiAgIDA3LTI4LTIwMDAgU0pICUFkZGVkIHBzZXVkby1rZXlib2FyZCBpbnRlcnJ1cHQKKyAqLworCisvKgorICogTk9URTogVGhlIHNlY29uZCB0aW1lciAoVGltZXIgMikgaXMgdXNlZCBhcyB0aGUga2V5Ym9hcmQKKyAqICAgICAgIGludGVycnVwdCB3aGVuIHRoZSBrZXlib2FyZCBkcml2ZXIgaXMgZW5hYmxlZC4KKyAqLworCisjZGVmaW5lIE5SX0lSUVMgICAgICAgICAgMzIKKworI2RlZmluZSBJUlFfU1RXRE9HICAgICAgICAwICAgLyogV2F0Y2hkb2cgdGltZXIgKi8KKyNkZWZpbmUgSVJRX1BST0cgICAgICAgICAgMSAgIC8qIFByb2dyYW1tYWJsZSBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVJRX0RFQlVHX1JYICAgICAgMiAgIC8qIENvbW0gUnggZGVidWcgKi8KKyNkZWZpbmUgSVJRX0RFQlVHX1RYICAgICAgMyAgIC8qIENvbW0gVHggZGVidWcgKi8KKyNkZWZpbmUgSVJRX0dDVEMxICAgICAgICAgNCAgIC8qIFRpbWVyIDEgKi8KKyNkZWZpbmUgSVJRX0dDVEMyICAgICAgICAgNSAgIC8qIFRpbWVyIDIgLyBLZXlib2FyZCAqLworI2RlZmluZSBJUlFfRE1BICAgICAgICAgICA2ICAgLyogRE1BIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgSVJRX0NMQ0QgICAgICAgICAgNyAgIC8qIENvbG9yIExDRCBjb250cm9sbGVyICovCisjZGVmaW5lIElSUV9TTV9SWCAgICAgICAgIDggICAvKiBTbWFydCBjYXJkICovCisjZGVmaW5lIElSUV9TTV9UWCAgICAgICAgIDkgICAvKiBTbWFydCBjYXJ0ICovCisjZGVmaW5lIElSUV9TTV9SU1QgICAgICAgMTAgICAvKiBTbWFydCBjYXJkICovCisjZGVmaW5lIElSUV9TSUIgICAgICAgICAgMTEgICAvKiBTZXJpYWwgSW50ZXJmYWNlIEJ1cyAqLworI2RlZmluZSBJUlFfTU1DICAgICAgICAgIDEyICAgLyogTXVsdGlNZWRpYUNhcmQgKi8KKyNkZWZpbmUgSVJRX1NTUDEgICAgICAgICAxMyAgIC8qIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0IDEgKi8KKyNkZWZpbmUgSVJRX1NTUDIgICAgICAgICAxNCAgIC8qIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0IDEgKi8KKyNkZWZpbmUgSVJRX1NQSSAgICAgICAgICAxNSAgIC8qIFNQSSBzbGF2ZSAqLworI2RlZmluZSBJUlFfVUFSVF8xICAgICAgIDE2ICAgLyogVUFSVCAxICovCisjZGVmaW5lIElSUV9VQVJUXzIgICAgICAgMTcgICAvKiBVQVJUIDIgKi8KKyNkZWZpbmUgSVJRX0lSREEgICAgICAgICAxOCAgIC8qIElSREEgKi8KKyNkZWZpbmUgSVJRX1JUQ19USUNLICAgICAxOSAgIC8qIFJlYWwgVGltZSBDbG9jayB0aWNrICovCisjZGVmaW5lIElSUV9SVENfQUxBUk0gICAgMjAgICAvKiBSZWFsIFRpbWUgQ2xvY2sgYWxhcm0gKi8KKyNkZWZpbmUgSVJRX0dQSU8gICAgICAgICAyMSAgIC8qIEdlbmVyYWwgUHVycG9zZSBJTyAqLworI2RlZmluZSBJUlFfR1BJT19ETUEgICAgIDIyICAgLyogR2VuZXJhbCBQdXJwb3NlIElPLCBETUEgKi8KKyNkZWZpbmUgSVJRX00yTSAgICAgICAgICAyMyAgIC8qIE1lbW9yeSB0byBtZW1vcnkgRE1BICAqLworI2RlZmluZSBJUlFfUkVTRVJWRUQgICAgIDI0ICAgLyogUkVTRVJWRUQsIGRvbid0IHVzZSAqLworI2RlZmluZSBJUlFfSU5URiAgICAgICAgIDI1ICAgLyogRXh0ZXJuYWwgYWN0aXZlIGxvdyBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVJRX0lOVDAgICAgICAgICAyNiAgIC8qIEV4dGVybmFsIGFjdGl2ZSBsb3cgaW50ZXJydXB0ICovCisjZGVmaW5lIElSUV9JTlQxICAgICAgICAgMjcgICAvKiBFeHRlcm5hbCBhY3RpdmUgbG93IGludGVycnVwdCAqLworI2RlZmluZSBJUlFfSU5UMiAgICAgICAgIDI4ICAgLyogRXh0ZXJuYWwgYWN0aXZlIGxvdyBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVJRX1VDQjEyMDAgICAgICAyOSAgIC8qIEludGVycnVwdCBnZW5lcmF0ZWQgYnkgVUNCMTIwMCovCisjZGVmaW5lIElSUV9CQVRfTE8gICAgICAgMzAgICAvKiBMb3cgYmF0ZXJ5IG9yIGV4dGVybmFsIHBvd2VyICovCisjZGVmaW5lIElSUV9NRURJQV9DSEcgICAgMzEgICAvKiBNZWRpYSBjaGFuZ2UgaW50ZXJydXB0ICovCisKKy8qCisgKiBUaGlzIGlzIHRoZSBvZmZzZXQgb2YgdGhlIEZJUSAiSVJRIiBudW1iZXJzCisgKi8KKyNkZWZpbmUgRklRX1NUQVJUCTY0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1Yjk2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9tZW1vcnkuaApAQCAtMCwwICsxLDIzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvbWVtb3J5LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICogQ29weXJpZ2h0IChjKSAyMDAwIFJvYiBTY290dCAocnNjb3R0QG10cm9iLmZkbnMubmV0KQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwMy0xMy0yMDAwCVNKSAlDcmVhdGVkCisgKiAgMDQtMTMtMjAwMCAgUlMgICAgICBDaGFuZ2VkIGJ1cyBtYWNyb3MgZm9yIG5ldyBhZGRyCisgKiAgMDUtMDMtMjAwMCAgU0pIICAgICBSZW1vdmVkIGJ1cyBtYWNyb3MgYW5kIGZpeGVkIHZpcnRfdG9fcGh5cyBtYWNybworICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisvKgorICogUGh5c2ljYWwgRFJBTSBvZmZzZXQgb24gdGhlIEw3MjAwIFNEQi4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVCAgICAgKDB4ZjAwMDAwMDBVTCkKKworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpIF9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkgX19waHlzX3RvX3ZpcnQoeCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTYyYTEyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcGFyYW0uaApAQCAtMCwwICsxLDE5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3BhcmFtLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgUm9iIFNjb3R0IChyc2NvdHRAbXRyb2IuZmRucy5uZXQpCisgKiAgICAgICAgICAgICAgICAgICAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIHRoZQorICogTGlua1VwIFN5c3RlbXMgTDcyMDAgU09DIGRldmVsb3BtZW50IGJvYXJkLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAgMDQtMjEtMjAwMCBSUyAgICAgIENyZWF0ZWQgTDcyMDAgdmVyc2lvbgorICogICAwNC0yNS0yMDAwIFNKSCAgICAgQ2xlYW5lZCB1cCBmaWxlCisgKiAgIDA1LTAzLTIwMDAgU0pIICAgICBDaGFuZ2UgY29tbWVudHMgYW5kIHJhdGUKKyAqLworCisvKgorICogU2VlICd0aW1lLmgnIGZvciBob3cgdGhlIFJUQyBIWiByYXRlIGlzIHNldAorICovCisjZGVmaW5lIEhaIDEyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcG1wY29uLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9wbXBjb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzAwNTZjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcG1wY29uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3BtcGNvbi5oCisgKgorICogICBSZWdpc3RlcnMgYW5kICBoZWxwZXIgZnVuY3Rpb25zIGZvciB0aGUgTDcyMDAgTGluay1VcCBTeXN0ZW1zCisgKiAgIERDL0RDIGNvbnZlcnRlciByZWdpc3Rlci4KKyAqCisgKiAgIChDKSBDb3B5cmlnaHQgMjAwMCwgUyBBIE1jQ29ubmVsbCAgKHNhbWNjb25uQGNvdHcuY29tKQorICoKKyAqICBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9yCisgKiAgbW9yZSBkZXRhaWxzLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFBNUENPTl9PRkYgMHgwMDAwNjAwMCAgLyogT2Zmc2V0IGZyb20gSU9fU1RBUlRfMi4gKi8KKworLyogSU9fU1RBUlRfMiBhbmQgSU9fQkFTRV8yIGFyZSBkZWZpbmVkIGluIGhhcmR3YXJlLmggKi8KKworI2RlZmluZSBQTVBDT05fU1RBUlQgKElPX1NUQVJUXzIgKyBQTVBDT05fT0ZGKSAgLyogUGh5c2ljYWwgYWRkcmVzcyBvZiByZWcuICovCisjZGVmaW5lIFBNUENPTl9CQVNFICAoSU9fQkFTRV8yICArIFBNUENPTl9PRkYpICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgcmVnLiAqLworCisKKyNkZWZpbmUgUE1QQ09OICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKShQTVBDT05fQkFTRSkpCisKKyNkZWZpbmUgUFdNMl81MENZQ0xFIDB4ODAwCisjZGVmaW5lIENPTlRSQVNUICAgICAweDkKKworI2RlZmluZSBQV00xSCAoQ09OVFJBU1QpCisjZGVmaW5lIFBXTTFMIChDT05UUkFTVCA8PCA0KQorCisjZGVmaW5lIFBNUENPTl9WQUxVRSAgKFBXTTJfNTBDWUNMRSB8IFBXTTFMIHwgUFdNMUgpIAorCQorLyogUE1QQ09OID0gMHg4MTE7ICAgLy8gdG9vIGxpZ2h0IGFuZCBmdXp6eQorICogUE1QQ09OID0gMHg4NDQ7ICAgCisgKiBQTVBDT04gPSAweDg2NjsgICAvLyBiZXR0ZXIgY29sb3IgcG9vciBkZXB0aAorICogUE1QQ09OID0gMHg4ODg7ICAgLy8gRGFya2VyIGJ1dCBiZXR0ZXIgZGVwdGggCisgKiBQTVBDT04gPSAweDg5OTsgICAvLyBEYXJrZXIgZXZlbiBiZXR0ZXIgZGVwdGgKKyAqIFBNUENPTiA9IDB4OGFhOyAgIC8vIHRvbyBkYXJrIGV2ZW4gYmV0dGVyIGRlcHRoCisgKiBQTVBDT04gPSAwWDhjYzsgICAvLyBXYXkgdG9vIGRhcmsKKyAqLworCisvKiBBcyBDT05UUkFTVCB2YWx1ZSBpbmNyZWFzZXMgdGhlIGdyZWF0ZXIgdGhlIGRlcHRoIHBlcmNlcHRpb24gYW5kCisgKiB0aGUgZGFya2VyIHRoZSBjb2xvcnMuCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3BtdS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcG11LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdmYWVhNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3BtdS5oCkBAIC0wLDAgKzEsMTI1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvcG11LmgKKyAqCisgKiAgIFJlZ2lzdGVycyBhbmQgIGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoZSBMNzIwMCBMaW5rLVVwIFN5c3RlbXMKKyAqICAgUG93ZXIgTWFuYWdlbWVudCBVbml0IChQTVUpLgorICoKKyAqICAgKEMpIENvcHlyaWdodCAyMDAwLCBTIEEgTWNDb25uZWxsICAoc2FtY2Nvbm5AY290dy5jb20pCisgKgorICogIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZS4gU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZSBmb3IKKyAqICBtb3JlIGRldGFpbHMuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgUE1VX09GRiAgIDB4MDAwNTAwMDAgIC8qIE9mZnNldCBmcm9tIElPX1NUQVJUIHRvIHRoZSBQTVUgcmVnaXN0ZXJzLiAqLworCisvKiBJT19TVEFSVCBhbmQgSU9fQkFTRSBhcmUgZGVmaW5lZCBpbiBoYXJkd2FyZS5oICovCisKKyNkZWZpbmUgUE1VX1NUQVJUIChJT19TVEFSVCArIFBNVV9PRkYpICAvKiBQaHlzaWNhbCBhZGRyLiBvZiB0aGUgUE1VIHJlZy4gKi8KKyNkZWZpbmUgUE1VX0JBU0UgIChJT19CQVNFICArIFBNVV9PRkYpICAvKiBWaXJ0dWFsIGFkZHIuIG9mIHRoZSBQTVUgcmVnLiAqLworCisKKy8qIERlZmluZSB0aGUgUE1VIHJlZ2lzdGVycyBmb3IgdXNlIGJ5IGRldmljZSBkcml2ZXJzIGFuZCB0aGUga2VybmVsLiAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgIHVuc2lnbmVkIGludCBDVVJSRU5UOyAgLyogQ3VycmVudCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCisgICAgIHVuc2lnbmVkIGludCBORVhUOyAgICAgLyogTmV4dCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCisgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDsKKyAgICAgdW5zaWduZWQgaW50IFJVTjsgICAgICAvKiBSdW4gY29uZmlndXJhdGlvbiByZWdpc3RlciAqLworICAgICB1bnNpZ25lZCBpbnQgQ09NTTsgICAgIC8qIENvbmZpZ3VyYXRpb24gY29tbWFuZCByZWdpc3RlciAqLworICAgICB1bnNpZ25lZCBpbnQgU0RSQU07ICAgIC8qIFNEUkFNIGNvbmZpZ3VyYXRpb24gYnlwYXNzIHJlZ2lzdGVyICovCit9IHBtdV9pbnRlcmZhY2U7CisKKyNkZWZpbmUgUE1VICgodm9sYXRpbGUgcG11X2ludGVyZmFjZSAqKShQTVVfQkFTRSkpCisKKworLyogTWFjcm8ncyBmb3IgcmVhZGluZyB0aGUgY29tbW9uIHJlZ2lzdGVyIGZpZWxkcy4gKi8KKworI2RlZmluZSBHRVRfVFJBTlNPUChyZWcpICAoKHJlZyA+PiAyNSkgJiAweDAzKSAvKiBCaXRzIDI2LTI1ICovCisjZGVmaW5lIEdFVF9PU0NFTihyZWcpICAgICgocmVnID4+IDE2KSAmIDB4MDEpCisjZGVmaW5lIEdFVF9PU0NNVVgocmVnKSAgICgocmVnID4+IDE1KSAmIDB4MDEpCisjZGVmaW5lIEdFVF9QTExNVUwocmVnKSAgICgocmVnID4+ICA5KSAmIDB4M2YpIC8qIEJpdHMgMTQtOSAqLworI2RlZmluZSBHRVRfUExMRU4ocmVnKSAgICAoKHJlZyA+PiAgOCkgJiAweDAxKQorI2RlZmluZSBHRVRfUExMTVVYKHJlZykgICAoKHJlZyA+PiAgNykgJiAweDAxKQorI2RlZmluZSBHRVRfQkNMS19ESVYocmVnKSAoKHJlZyA+PiAgMykgJiAweDAzKSAvKiBCaXRzIDQtMyAqLworI2RlZmluZSBHRVRfU0RSQl9TRUwocmVnKSAoKHJlZyA+PiAgMikgJiAweDAxKQorI2RlZmluZSBHRVRfU0RSRl9TRUwocmVnKSAoKHJlZyA+PiAgMSkgJiAweDAxKQorI2RlZmluZSBHRVRfRkFTVEJVUyhyZWcpICAocmVnICYgMHgxKQorCisvKiBDRkdfTkVYVCByZWdpc3RlciAqLworCisjZGVmaW5lIENGR19ORVhUX0NMT0NLUkVDT1ZFUlkgKChQTVUtPk5FWFQgPj4gMTgpICYgMHg3ZikgICAvKiBCaXRzIDI0LTE4ICovCisjZGVmaW5lIENGR19ORVhUX0lOVFJFVCAgICAgICAgKChQTVUtPk5FWFQgPj4gMTcpICYgMHgwMSkKKyNkZWZpbmUgQ0ZHX05FWFRfU0RSX1NUT1AgICAgICAoKFBNVS0+TkVYVCA+PiAgNikgJiAweDAxKQorI2RlZmluZSBDRkdfTkVYVF9TWVNDTEtFTiAgICAgICgoUE1VLT5ORVhUID4+ICA1KSAmIDB4MDEpCisKKy8qIFVzZWZ1bCBmaWVsZCB2YWx1ZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlCisgKiBDRkdfTkVYVCBhbmQgQ0ZHX1JVTiByZWdpc3RlcnMuCisgKi8KKworI2RlZmluZSBUUkFOU09QX05PUCAgICAgIDA8PDI1ICAvKiBOT0NIQU5HRV9OT1NUQUxMICovCisjZGVmaW5lIE5PQ0hBTkdFX1NUQUxMICAgMTw8MjUKKyNkZWZpbmUgQ0hBTkdFX05PU1RBTEwgICAyPDwyNQorI2RlZmluZSBDSEFOR0VfU1RBTEwgICAgIDM8PDI1CisKKyNkZWZpbmUgSU5UUkVUICAgICAgICAgICAxPDwxNworI2RlZmluZSBPU0NFTiAgICAgICAgICAgIDE8PDE2CisjZGVmaW5lIE9TQ01VWCAgICAgICAgICAgMTw8MTUKKworLyogUExMIGZyZXF1ZW5jaWVzICovCisKKyNkZWZpbmUgUExMTVVMXzAgICAgICAgICAwPDw5ICAgICAgICAgLyogIDMuNjg2NCBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzEgICAgICAgICAxPDw5ICAgICAgICAgLyogID8/Pz8/PyBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzUgICAgICAgICA1PDw5ICAgICAgICAgLyogIDE4LjQzMiBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzEwICAgICAgIDEwPDw5ICAgICAgICAgLyogIDM2Ljg2NCBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzE4ICAgICAgIDE4PDw5ICAgICAgICAgLyogID8/Pz8/PyBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzIwICAgICAgIDIwPDw5ICAgICAgICAgLyogIDczLjcyOCBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzMyICAgICAgIDMyPDw5ICAgICAgICAgLyogID8/Pz8/PyBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzM1ICAgICAgIDM1PDw5ICAgICAgICAgLyogMTI5LjAyNCBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzM2ICAgICAgIDM2PDw5ICAgICAgICAgLyogID8/Pz8/PyBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzM5ICAgICAgIDM5PDw5ICAgICAgICAgLyogID8/Pz8/PyBNSHogKi8KKyNkZWZpbmUgUExMTVVMXzQwICAgICAgIDQwPDw5ICAgICAgICAgLyogMTQ3LjQ1NiBNSHogKi8KKworLyogQ2xvY2sgcmVjb3ZlcnkgdGltZXMgKi8KKworI2RlZmluZSBDUkNMT0NLXzEgICAgICAgIDE8PDE4CisjZGVmaW5lIENSQ0xPQ0tfMiAgICAgICAgMjw8MTgKKyNkZWZpbmUgQ1JDTE9DS180ICAgICAgICA0PDwxOAorI2RlZmluZSBDUkNMT0NLXzggICAgICAgIDg8PDE4CisjZGVmaW5lIENSQ0xPQ0tfMTYgICAgICAxNjw8MTgKKyNkZWZpbmUgQ1JDTE9DS18zMiAgICAgIDMyPDwxOAorI2RlZmluZSBDUkNMT0NLXzYzICAgICAgNjM8PDE4CisjZGVmaW5lIENSQ0xPQ0tfMTI3ICAgIDEyNzw8MTgKKworI2RlZmluZSBQTExFTiAgICAgICAgICAgIDE8PDgKKyNkZWZpbmUgUExMTVVYICAgICAgICAgICAxPDw3CisjZGVmaW5lIFNEUl9TVE9QICAgICAgICAgMTw8NgorI2RlZmluZSBTWVNDTEtFTiAgICAgICAgIDE8PDUKKworI2RlZmluZSBCQ0xLX0RJVl80ICAgICAgIDI8PDMKKyNkZWZpbmUgQkNMS19ESVZfMiAgICAgICAxPDwzCisjZGVmaW5lIEJDTEtfRElWXzEgICAgICAgMDw8MworCisjZGVmaW5lIFNEUkJfU0VMICAgICAgICAgMTw8MgorI2RlZmluZSBTRFJGX1NFTCAgICAgICAgIDE8PDEKKyNkZWZpbmUgRkFTVEJVUyAgICAgICAgICAxPDwwCisKKworLyogQ0ZHX1NEUkFNICovCisKKyNkZWZpbmUgU0RSUkVGRlEgICAgICAgICAxPDwwICAvKiBPbmx5IGlmIFNEUlNUT1BSUSBpcyBub3Qgc2V0LiAqLworI2RlZmluZSBTRFJSRUZBQ0sgICAgICAgIDE8PDEgIC8qIFJlYWQtb25seSAqLworI2RlZmluZSBTRFJTVE9QUlEgICAgICAgIDE8PDIgIC8qIE9ubHkgaWYgU0RSUkVGRlEgaXMgbm90IHNldC4gKi8KKyNkZWZpbmUgU0RSU1RPUEFDSyAgICAgICAxPDwzICAvKiBSZWFkLW9ubHkgKi8KKyNkZWZpbmUgUElDRU4gICAgICAgICAgICAxPDw0ICAvKiBFbmFibGUgQ28tcHJvY2Vzb3IgKi8KKyNkZWZpbmUgUElDVEVTVCAgICAgICAgICAxPDw1CisKKyNkZWZpbmUgR0VUX1NEUlJFRkZRICAgICgoUE1VLT5TRFJBTSA+PiAwKSAmIDB4MDEpCisjZGVmaW5lIEdFVF9TRFJSRUZBQ0sgICAoKFBNVS0+U0RSQU0gPj4gMSkgJiAweDAxKSAvKiBSZWFkLW9ubHkgKi8KKyNkZWZpbmUgR0VUX1NEUlNUT1BSUSAgICgoUE1VLT5TRFJBTSA+PiAyKSAmIDB4MDEpCisjZGVmaW5lIEdFVF9TRFJTVE9QQUNLICAoKFBNVS0+U0RSQU0gPj4gMykgJiAweDAxKSAvKiBSZWFkLW9ubHkgKi8KKyNkZWZpbmUgR0VUX1BJQ0VOICAgICAgICgoUE1VLT5TRFJBTSA+PiA0KSAmIDB4MDEpCisjZGVmaW5lIEdFVF9QSUNURVNUICAgICAoKFBNVS0+U0RSQU0gPj4gNSkgJiAweDAxKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2VyaWFsLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zZXJpYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWZiOGI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2VyaWFsLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3NlcmlhbC5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAwIFJvYiBTY290dCAocnNjb3R0QG10cm9iLmZkbnMubmV0KQorICogICAgICAgICAgICAgICAgICAgIFN0ZXZlIEhpbGwgKHNqaGlsbEBjb3R3LmNvbSkKKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMDMtMjAtMjAwMCAgU0pIICAgICBDcmVhdGVkCisgKiAgMDMtMjYtMjAwMCAgU0pIICAgICBBZGRlZCBmbGFncyBmb3Igc2VyaWFsIHBvcnRzCisgKiAgMDMtMjctMjAwMCAgU0pIICAgICBDb3JyZWN0ZWQgQkFTRV9CQVVEIHZhbHVlCisgKiAgMDQtMTQtMjAwMCAgUlMgICAgICBNYWRlIHJlZ2lzdGVyIGFkZHIgZGVwZW5kZW50IG9uIElPX0JBU0UKKyAqICAwNS0wMy0yMDAwICBTSkggICAgIENvbXBsZXRlIHJld3JpdGUKKyAqICAwNS0wOS0yMDAwCVNKSAlTdHJpcHBlZCBvdXQgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNlcmlhbCBzdHVmZgorICogICAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlZCBpdCBpbiBhIHNlcGFyYXRlIGZpbGUKKyAqICAwNy0yOC0yMDAwCVNKSAlNb3ZlZCBiYXNlIGJhdWQgcmF0ZSB2YXJpYWJsZQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfU0VSSUFMX0gKKyNkZWZpbmUgX19BU01fQVJDSF9TRVJJQUxfSAorCisvKgorICogVGhpcyBhc3N1bWVzIHlvdSBoYXZlIGEgMy42ODY0IE1IeiBjbG9jayBmb3IgeW91ciBVQVJULgorICovCisjZGVmaW5lIEJBU0VfQkFVRAkzNjg2NDAwCisKKy8qCisgKiBTdGFuZGFyZCBDT00gZmxhZ3MKKyAqLworI2RlZmluZSBTVERfQ09NX0ZMQUdTIChBU1lOQ19CT09UX0FVVE9DT05GIHwgQVNZTkNfU0tJUF9URVNUKQorCisjZGVmaW5lIFNURF9TRVJJQUxfUE9SVF9ERUZOUwkJXAorCS8qIE1BR0lDIFVBUlQgQ0xLICAgUE9SVCAgICAgICBJUlEgICAgIEZMQUdTICovCQkJXAorCXsgMCwgQkFTRV9CQVVELCBVQVJUMV9CQVNFLCBJUlFfVUFSVF8xLCBTVERfQ09NX0ZMQUdTIH0sICAvKiB0dHlMVTAgKi8gXAorCXsgMCwgQkFTRV9CQVVELCBVQVJUMl9CQVNFLCBJUlFfVUFSVF8yLCBTVERfQ09NX0ZMQUdTIH0sICAvKiB0dHlMVTEgKi8gXAorCisjZGVmaW5lIEVYVFJBX1NFUklBTF9QT1JUX0RFRk5TCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2VyaWFsX2w3MjAwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zZXJpYWxfbDcyMDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhjNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2VyaWFsX2w3MjAwLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zZXJpYWxfbDcyMDAuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMCBTdGV2ZW4gSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwNS0wOS0yMDAwCVNKSAlDcmVhdGVkCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TRVJJQUxfTDcyMDBfSAorI2RlZmluZSBfX0FTTV9BUkNIX1NFUklBTF9MNzIwMF9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9tZW1vcnkuaD4KKworLyoKKyAqIFRoaXMgYXNzdW1lcyB5b3UgaGF2ZSBhIDMuNjg2NCBNSHogY2xvY2sgZm9yIHlvdXIgVUFSVC4KKyAqLworI2RlZmluZSBCQVNFX0JBVUQgMzY4NjQwMAorCisvKgorICogVUFSVCBiYXNlIHJlZ2lzdGVyIGFkZHJlc3NlcworICovCisjZGVmaW5lIFVBUlQxX0JBU0UJKElPX0JBU0UgKyAweDAwMDQ0MDAwKQorI2RlZmluZSBVQVJUMl9CQVNFCShJT19CQVNFICsgMHgwMDA0NTAwMCkKKworLyoKKyAqIFVBUlQgcmVnaXN0ZXIgb2Zmc2V0cworICovCisjZGVmaW5lIFVBUlREUgkJCTB4MDAJLyogVHgvUnggZGF0YSAqLworI2RlZmluZSBSWFNUQVQJCQkweDA0CS8qIFJ4IHN0YXR1cyAqLworI2RlZmluZSBIX1VCUkxDUgkJMHgwOAkvKiBtb2RlIHJlZ2lzdGVyIGhpZ2ggKi8KKyNkZWZpbmUgTV9VQlJMQ1IJCTB4MEMJLyogbW9kZSByZWcgbWlkIChNU0Igb2YgYnVhZCkqLworI2RlZmluZSBMX1VCUkxDUgkJMHgxMAkvKiBtb2RlIHJlZyBsb3cgKExTQiBvZiBiYXVkKSovCisjZGVmaW5lIFVBUlRDT04JCQkweDE0CS8qIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVEZMRwkJCTB4MTgJLyogZmxhZyByZWdpc3RlciAqLworI2RlZmluZSBVQVJUSU5UU1RBVAkJMHgxQwkvKiBGSUZPIElSUSBzdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVElOVE1BU0sJCTB4MjAJLyogRklGTyBJUlEgbWFzayByZWdpc3RlciAqLworCisvKgorICogVUFSVCBiYXVkIHJhdGUgcmVnaXN0ZXIgdmFsdWVzCisgKi8KKyNkZWZpbmUgQlJfMTEwCQkJMHg4MjcKKyNkZWZpbmUgQlJfMTIwMAkJCTB4MDZlCisjZGVmaW5lIEJSXzI0MDAJCQkweDA1ZgorI2RlZmluZSBCUl80ODAwCQkJMHgwMmYKKyNkZWZpbmUgQlJfOTYwMAkJCTB4MDE3CisjZGVmaW5lIEJSXzE0NDAwCQkweDAwZgorI2RlZmluZSBCUl8xOTIwMAkJMHgwMGIKKyNkZWZpbmUgQlJfMzg0MDAJCTB4MDA1CisjZGVmaW5lIEJSXzU3NjAwCQkweDAwMworI2RlZmluZSBCUl83NjgwMCAJCTB4MDAyCisjZGVmaW5lIEJSXzExNTIwMAkJMHgwMDEKKworLyoKKyAqIFJlY2VpdmVyIHN0YXR1cyByZWdpc3RlciAoUlhTVEFUKSBtYXNrIHZhbHVlcworICovCisjZGVmaW5lIFJYU1RBVF9OT19FUlIJCTB4MDAJLyogTm8gZXJyb3IgKi8KKyNkZWZpbmUgUlhTVEFUX0ZSTV9FUlIJCTB4MDEJLyogRnJhbWluZyBlcnJvciAqLworI2RlZmluZSBSWFNUQVRfUEFSX0VSUgkJMHgwMgkvKiBQYXJpdHkgZXJyb3IgKi8KKyNkZWZpbmUgUlhTVEFUX09WUl9FUlIJCTB4MDQJLyogT3ZlcnJ1biBlcnJvciAqLworCisvKgorICogSGlnaCBieXRlIG9mIFVBUlQgYml0IHJhdGUgYW5kIGxpbmUgY29udHJvbCByZWdpc3RlciAoSF9VQlJMQ1IpIHZhbHVlcworICovCisjZGVmaW5lIFVCUkxDUl9CUksJCTB4MDEJLyogZ2VuZXJhdGUgYnJlYWsgb24gdHggKi8KKyNkZWZpbmUgVUJSTENSX1BFTgkJMHgwMgkvKiBlbmFibGUgcGFyaXR5ICovCisjZGVmaW5lIFVCUkxDUl9QRElTCQkweDAwCS8qIGRpc2FibGUgcGFyaXR5ICovCisjZGVmaW5lIFVCUkxDUl9FVkVOCQkweDA0CS8qIDE9IGV2ZW4gcGFyaXR5LDAgPSBvZGQgcGFyaXR5ICovCisjZGVmaW5lIFVCUkxDUl9TVFAyCQkweDA4CS8qIHRyYW5zbWl0IDIgc3RvcCBiaXRzICovCisjZGVmaW5lIFVCUkxDUl9GSUZPCQkweDEwCS8qIGVuYWJsZSBGSUZPICovCisjZGVmaW5lIFVCUkxDUl9MRU41CQkweDYwCS8qIHdvcmQgbGVuZ3RoNSAqLworI2RlZmluZSBVQlJMQ1JfTEVONgkJMHg0MAkvKiB3b3JkIGxlbmd0aDYgKi8KKyNkZWZpbmUgVUJSTENSX0xFTjcJCTB4MjAJLyogd29yZCBsZW5ndGg3ICovCisjZGVmaW5lIFVCUkxDUl9MRU44CQkweDAwCS8qIHdvcmQgbGVuZ3RoOCAqLworCisvKgorICogVUFSVCBjb250cm9sIHJlZ2lzdGVyIChVQVJUQ09OKSB2YWx1ZXMKKyAqLworI2RlZmluZSBVQVJUQ09OX1VBUlRFTgkJMHgwMQkvKiBFbmFibGUgVUFSVCAqLworI2RlZmluZSBVQVJUQ09OX0RNQU9ORVJSCTB4MDgJLyogTWFzayBSeERtYVJxIHdoZW4gZXJyb3JzIG9jY3VyICovCisKKy8qCisgKiBVQVJUIGZsYWcgcmVnaXN0ZXIgKFVBUlRGTEcpIG1hc2sgdmFsdWVzCisgKi8KKyNkZWZpbmUgVUFSVEZMR19VVFhGRgkJMHgyMAkvKiBUcmFuc21pdCBGSUZPIGZ1bGwgKi8KKyNkZWZpbmUgVUFSVEZMR19VUlhGRQkJMHgxMAkvKiBSZWNlaXZlciBGSUZPIGVtcHR5ICovCisjZGVmaW5lIFVBUlRGTEdfVUJVU1kJCTB4MDgJLyogVHJhbnNtaXR0ZXIgYnVzeSAqLworI2RlZmluZSBVQVJURkxHX0RDRAkJMHgwNAkvKiBEYXRhIGNhcnJpZXIgZGV0ZWN0ICovCisjZGVmaW5lIFVBUlRGTEdfRFNSCQkweDAyCS8qIERhdGEgc2V0IHJlYWR5ICovCisjZGVmaW5lIFVBUlRGTEdfQ1RTCQkweDAxCS8qIENsZWFyIHRvIHNlbmQgKi8KKworLyoKKyAqIFVBUlQgaW50ZXJydXB0IHN0YXR1cy9jbGVhciByZWdpc3RlcnMgKFVBUlRJTlRTVEFUL0NMUikgdmFsdWVzCisgKi8KKyNkZWZpbmUgVUFSVF9UWElOVAkJMHgwMQkvKiBUWCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgVUFSVF9SWElOVAkJMHgwMgkvKiBSWCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgVUFSVF9SWEVSUklOVAkJMHgwNAkvKiBSWCBlcnJvciBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgVUFSVF9NU0lOVAkJMHgwOAkvKiBNb2RlbSBTdGF0dXMgaW50ZXJydXB0ICovCisjZGVmaW5lIFVBUlRfVURJTlQJCTB4MTAJLyogVUFSVCBEaXNhYmxlZCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgVUFSVF9BTExJUlFTCQkweDFmCS8qIEFsbCBpbnRlcnJ1cHRzICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2liLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjQzNjRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc2liLmgKQEAgLTAsMCArMSwxMTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zaWIuaAorICoKKyAqICBSZWdpc3RlcnMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoZSBTZXJpYWwgSW50ZXJmYWNlIEJ1cy4KKyAqCisgKiAgKEMpIENvcHlyaWdodCAyMDAwLCBTIEEgTWNDb25uZWxsICAoc2FtY2Nvbm5AY290dy5jb20pCisgKgorICogIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZS4gU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZSBmb3IKKyAqICBtb3JlIGRldGFpbHMuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgU0lCX09GRiAgIDB4MDAwNDAwMDAgIC8qIE9mZnNldCBmcm9tIElPX1NUQVJUIHRvIHRoZSBTSUIgcmVnJ3MuICovCisKKy8qIElPX1NUQVJUIGFuZCBJT19CQVNFIGFyZSBkZWZpbmVkIGluIGhhcmR3YXJlLmggKi8KKworI2RlZmluZSBTSUJfU1RBUlQgKElPX1NUQVJUICsgU0lCX09GRikgLyogUGh5c2ljYWwgYWRkciBvZiB0aGUgU0lCIHJlZy4gKi8KKyNkZWZpbmUgU0lCX0JBU0UgIChJT19CQVNFICArIFNJQl9PRkYpIC8qIFZpcnR1YWwgYWRkciBvZiB0aGUgU0lCIHJlZy4gICovCisKKy8qIE9mZnNldHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFNJQiBmb3IgYWxsIHRoZSByZWdpc3RlcnMuICovCisKKy8qIERlZmluZSB0aGUgU0lCIHJlZ2lzdGVycyBmb3IgdXNlIGJ5IGRldmljZSBkcml2ZXJzIGFuZCB0aGUga2VybmVsLiAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAgICB1bnNpZ25lZCBpbnQgTUNDUjsgICAgLyogU0lCIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICAgIE9mZnNldDogMHgwMCAqLworICAgICB1bnNpZ25lZCBpbnQgUkVTMTsgICAgLyogUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldDogMHgwNCAqLworICAgICB1bnNpZ25lZCBpbnQgTUNEUjA7ICAgLyogU0lCIERhdGEgUmVnaXN0ZXIgMCAgICAgICAgICAgIE9mZnNldDogMHgwOCAqLworICAgICB1bnNpZ25lZCBpbnQgTUNEUjE7ICAgLyogU0lCIERhdGEgUmVnaXN0ZXIgMSAgICAgICAgICAgIE9mZnNldDogMHgwYyAqLworICAgICB1bnNpZ25lZCBpbnQgTUNEUjI7ICAgLyogU0lCIERhdGEgUmVnaXN0ZXIgMiAoVUNCMXgwMCkgIE9mZnNldDogMHgxMCAqLworICAgICB1bnNpZ25lZCBpbnQgUkVTMjsgICAgLyogUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldDogMHgxNCAqLworICAgICB1bnNpZ25lZCBpbnQgTUNTUjsgICAgLyogU0lCIFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgIE9mZnNldDogMHgxOCAqLworfSBTSUJfSW50ZXJmYWNlOworCisjZGVmaW5lIFNJQiAoKHZvbGF0aWxlIFNJQl9JbnRlcmZhY2UgKikgKFNJQl9CQVNFKSkKKworLyogTUNDUiAqLworCisjZGVmaW5lIElOVEVSTkFMX0ZSRVEgICA5MjE2MDAwICAvKiBIZXJ0eiAqLworI2RlZmluZSBBVURJT19GUkVRICAgICAgICAgNTAwMCAgLyogSGVydHogKi8KKyNkZWZpbmUgVEVMRUNPTV9GUkVRICAgICAgIDUwMDAgIC8qIEhlcnR6ICovCisKKyNkZWZpbmUgQVVESU9fRElWSURFICAgIChJTlRFUk5BTF9GUkVRIC8gKDMyICogQVVESU9fRlJFUSkpCisjZGVmaW5lIFRFTEVDT01fRElWSURFICAoSU5URVJOQUxfRlJFUSAvICgzMiAqIFRFTEVDT01fRlJFUSkpCisKKyNkZWZpbmUgTUNDUl9BU0Q1NyAgICAgIEFVRElPX0RJVklERQorI2RlZmluZSBNQ0NSX1RTRDU3ICAgICAgKFRFTEVDT01fRElWSURFIDw8IDgpCisjZGVmaW5lIE1DQ1JfTUNFICAgICAgICAoMSA8PCAxNikgICAgICAgICAgICAgLyogU0lCIGVuYWJsZSAqLworI2RlZmluZSBNQ0NSX0VDUyAgICAgICAgKDEgPDwgMTcpICAgICAgICAgICAgIC8qIEV4dGVybmFsIENsb2NrIFNlbGVjdCAqLworI2RlZmluZSBNQ0NSX0FETSAgICAgICAgKDEgPDwgMTgpICAgICAgICAgICAgIC8qIEEvRCBEYXRhIFNhbXBsaW5nICovCisjZGVmaW5lIE1DQ1JfUE1DICAgICAgICAoMSA8PCAyNikgICAgICAgICAgICAgLyogUElOIE11bHRpcGxleGVyIENvbnRyb2wgKi8KKworCisjZGVmaW5lIEdFVF9BU0QgKChTSUItPk1DQ1IgPj4gIDApICYgMHgzZikgLyogQXVkaW8gU2FtcGxlIFJhdGUgRGl2LiAqLworI2RlZmluZSBHRVRfVFNEICgoU0lCLT5NQ0NSID4+ICA4KSAmIDB4M2YpIC8qIFRlbGNvbSBTYW1wbGUgUmF0ZSBEaXYuICovCisjZGVmaW5lIEdFVF9NQ0UgKChTSUItPk1DQ1IgPj4gMTYpICYgMHgwMSkgLyogU0lCIEVuYWJsZSAqLworI2RlZmluZSBHRVRfRUNTICgoU0lCLT5NQ0NSID4+IDE3KSAmIDB4MDEpIC8qIEV4dGVybmFsIENsb2NrIFNlbGVjdCAqLworI2RlZmluZSBHRVRfQURNICgoU0lCLT5NQ0NSID4+IDE4KSAmIDB4MDEpIC8qIEEvRCBEYXRhIFNhbXBsaW5nIE1vZGUgKi8KKyNkZWZpbmUgR0VUX1RUTSAoKFNJQi0+TUNDUiA+PiAxOSkgJiAweDAxKSAvKiBUZWxjbyBUcmFucy4gRklGTyBJIG1hc2sgKi8gCisjZGVmaW5lIEdFVF9UUk0gKChTSUItPk1DQ1IgPj4gMjApICYgMHgwMSkgLyogVGVsY28gUmVjdi4gRklGTyBJIG1hc2sgKi8KKyNkZWZpbmUgR0VUX0FUTSAoKFNJQi0+TUNDUiA+PiAyMSkgJiAweDAxKSAvKiBBdWRpbyBUcmFucy4gRklGTyBJIG1hc2sgKi8gCisjZGVmaW5lIEdFVF9BUk0gKChTSUItPk1DQ1IgPj4gMjIpICYgMHgwMSkgLyogQXVkaW8gUmVjdi4gRklGTyBJIG1hc2sgKi8KKyNkZWZpbmUgR0VUX0xCTSAoKFNJQi0+TUNDUiA+PiAyMykgJiAweDAxKSAvKiBMb29wIEJhY2sgTW9kZSAqLworI2RlZmluZSBHRVRfRUNQICgoU0lCLT5NQ0NSID4+IDI0KSAmIDB4MDMpIC8qIEV4dGVybi4gQ2xjayBQcmVzY2FsZSBzZWwgKi8KKyNkZWZpbmUgR0VUX1BNQyAoKFNJQi0+TUNDUiA+PiAyNikgJiAweDAxKSAvKiBQSU4gTXVsdGlwbGV4ZXIgQ29udHJvbCAqLworI2RlZmluZSBHRVRfRVJJICgoU0lCLT5NQ0NSID4+IDI3KSAmIDB4MDEpIC8qIEV4dGVybmFsIFJlYWQgSW50ZXJydXB0ICovCisjZGVmaW5lIEdFVF9FV0kgKChTSUItPk1DQ1IgPj4gMjgpICYgMHgwMSkgLyogRXh0ZXJuYWwgV3JpdGUgSW50ZXJydXB0ICovCisKKy8qIE1DRFIwICovCisKKyNkZWZpbmUgQVVESU9fUkVDViAgICAgKChTSUItPk1DRFIwID4+IDQpICYgMHhmZmYpCisjZGVmaW5lIEFVRElPX1dSSVRFKHYpICgoU0lCLT5NQ0RSMCA9ICh2ICYgMHhmZmYpIDw8IDQpKQorCisvKiBNQ0RSMSAqLworCisjZGVmaW5lIFRFTEVDT01fUkVDViAgICAgKChTSUItPk1DRFIxID4+IDIpICYgMDMyZmZmKQorI2RlZmluZSBURUxFQ09NX1dSSVRFKHYpICgoU0lCLT5NQ0RSMSA9ICh2ICYgMHgzZmZmKSA8PCAyKSkKKworCisvKiBNQ1NSICovCisKKyNkZWZpbmUgTUNTUl9BVFUgKDEgPDwgNCkgIC8qIEF1ZGlvIFRyYW5zbWl0IEZJRk8gVW5kZXJydW4gKi8KKyNkZWZpbmUgTUNTUl9BUk8gKDEgPDwgNSkgIC8qIEF1ZGlvIFJlY2VpdmUgIEZJRk8gVW5kZXJydW4gKi8KKyNkZWZpbmUgTUNTUl9UVFUgKDEgPDwgNikgIC8qIFRFTEVDT00gVHJhbnNtaXQgRklGTyBVbmRlcnJ1biAqLworI2RlZmluZSBNQ1NSX1RSTyAoMSA8PCA3KSAgLyogVEVMRUNPTSBSZWNlaXZlICBGSUZPIFVuZGVycnVuICovCisKKyNkZWZpbmUgTUNTUl9DTEVBUl9VTkRFUlVOX0JJVFMgKE1DU1JfQVRVIHwgTUNTUl9BUk8gfCBNQ1NSX1RUVSB8IE1DU1JfVFJPKQorCisKKyNkZWZpbmUgR0VUX0FUUyAoKFNJQi0+TUNTUiA+PiAgMCkgJiAweDAxKSAvKiBBdWRpbyBUcmFuc21pdCBGSUZPIFNlcnZpY2UgUmVxKi8KKyNkZWZpbmUgR0VUX0FSUyAoKFNJQi0+TUNTUiA+PiAgMSkgJiAweDAxKSAvKiBBdWRpbyBSZWN2IEZJRk8gU2VydmljZSBSZXF1ZXN0Ki8KKyNkZWZpbmUgR0VUX1RUUyAoKFNJQi0+TUNTUiA+PiAgMikgJiAweDAxKSAvKiBURUxFQ09NIFRyYW5zbWl0IEZJRk8gIEZsYWcgKi8KKyNkZWZpbmUgR0VUX1RSUyAoKFNJQi0+TUNTUiA+PiAgMykgJiAweDAxKSAvKiBURUxFQ09NIFJlY3YgRklGTyBTZXJ2aWNlIFJlcS4gKi8KKyNkZWZpbmUgR0VUX0FUVSAoKFNJQi0+TUNTUiA+PiAgNCkgJiAweDAxKSAvKiBBdWRpbyBUcmFuc21pdCBGSUZPIFVuZGVycnVuICovCisjZGVmaW5lIEdFVF9BUk8gKChTSUItPk1DU1IgPj4gIDUpICYgMHgwMSkgLyogQXVkaW8gUmVjZWl2ZSAgRklGTyBVbmRlcnJ1biAqLworI2RlZmluZSBHRVRfVFRVICgoU0lCLT5NQ1NSID4+ICA2KSAmIDB4MDEpIC8qIFRFTEVDT00gVHJhbnNtaXQgRklGTyBVbmRlcnJ1biAqLworI2RlZmluZSBHRVRfVFJPICgoU0lCLT5NQ1NSID4+ICA3KSAmIDB4MDEpIC8qIFRFTEVDT00gUmVjZWl2ZSAgRklGTyBVbmRlcnJ1biAqLworI2RlZmluZSBHRVRfQU5GICgoU0lCLT5NQ1NSID4+ICA4KSAmIDB4MDEpIC8qIEF1ZGlvIFRyYW5zbWl0IEZJRk8gbm90IGZ1bGwgKi8KKyNkZWZpbmUgR0VUX0FORSAoKFNJQi0+TUNTUiA+PiAgOSkgJiAweDAxKSAvKiBBdWRpbyBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIEdFVF9UTkYgKChTSUItPk1DU1IgPj4gMTApICYgMHgwMSkgLyogVGVsZWNvbSBUcmFuc21pdCBGSUZPIG5vdCBmdWxsICovCisjZGVmaW5lIEdFVF9UTkUgKChTSUItPk1DU1IgPj4gMTEpICYgMHgwMSkgLyogVGVsZWNvbSBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIEdFVF9DV0MgKChTSUItPk1DU1IgPj4gMTIpICYgMHgwMSkgLyogQ29kZWMgV3JpdGUgQ29tcGxldGUgKi8KKyNkZWZpbmUgR0VUX0NSQyAoKFNJQi0+TUNTUiA+PiAxMykgJiAweDAxKSAvKiBDb2RlYyBSZWFkIENvbXBsZXRlICovCisjZGVmaW5lIEdFVF9BQ0UgKChTSUItPk1DU1IgPj4gMTQpICYgMHgwMSkgLyogQXVkaW8gQ29kZWMgRW5hYmxlZCAqLworI2RlZmluZSBHRVRfVENFICgoU0lCLT5NQ1NSID4+IDE1KSAmIDB4MDEpIC8qIFRlbGVjb20gQ29kZWMgRW5hYmxlZCAqLworCisvKiBNQ0RSMiAqLworCisjZGVmaW5lIE1DRFIyX3JXICAgICAgICAgICAgICAgKDEgPDwgMTYpCisKKyNkZWZpbmUgV1JJVEVfTUNEUjIocmVnLCBkYXRhKSAoU0lCLT5NQ0RSMiA9KChyZWc8PDE3KXxNQ0RSMl9yV3woZGF0YSYweGZmZmYpKSkKKyNkZWZpbmUgTUNEUjJfV1JJVEVfQ09NUExFVEUgICBHRVRfQ1dDCisKKyNkZWZpbmUgSU5JVElBVEVfTUNEUjJfUkVBRChyZWcpIChTSUItPk1DRFIyID0gKHJlZyA8PCAxNykpCisjZGVmaW5lIE1DRFIyX1JFQURfQ09NUExFVEUgICAgICBHRVRfQ1JDCisjZGVmaW5lIE1DRFIyX1JFQUQgICAgICAgICAgICAgICAoU0lCLT5NQ0RSMiAmIDB4ZmZmZikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3N5cy1jbG9jay5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc3lzLWNsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxYzc3NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3N5cy1jbG9jay5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zeXMtY2xvY2suaAorICoKKyAqICAgUmVnaXN0ZXJzIGFuZCAgaGVscGVyIGZ1bmN0aW9ucyBmb3IgdGhlIEw3MjAwIExpbmstVXAgU3lzdGVtcworICogICBTeXN0ZW0gY2xvY2tzLgorICoKKyAqICAgKEMpIENvcHlyaWdodCAyMDAwLCBTIEEgTWNDb25uZWxsICAoc2FtY2Nvbm5AY290dy5jb20pCisgKgorICogIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZS4gU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZSBmb3IKKyAqICBtb3JlIGRldGFpbHMuCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgU1lTX0NMT0NLX09GRiAgIDB4MDAwNTAwMzAgIC8qIE9mZnNldCBmcm9tIElPX1NUQVJULiAqLworCisvKiBJT19TVEFSVCBhbmQgSU9fQkFTRSBhcmUgZGVmaW5lZCBpbiBoYXJkd2FyZS5oICovCisKKyNkZWZpbmUgU1lTX0NMT0NLX1NUQVJUIChJT19TVEFSVCArIFNZU19DTENPS19PRkYpICAvKiBQaHlzaWNhbCBhZGRyZXNzICovCisjZGVmaW5lIFNZU19DTE9DS19CQVNFICAoSU9fQkFTRSAgKyBTWVNfQ0xPQ0tfT0ZGKSAgLyogVmlydHVhbCBhZGRyZXNzICAqLworCisvKiBEZWZpbmUgdGhlIGludGVyZmFjZSB0byB0aGUgU1lTX0NMT0NLICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgIHVuc2lnbmVkIGludCBFTkFCTEU7CisgICAgIHVuc2lnbmVkIGludCBFU1lOQzsKKyAgICAgdW5zaWduZWQgaW50IFNFTEVDVDsKK30gc3lzX2Nsb2NrX2ludGVyZmFjZTsKKworI2RlZmluZSBTWVNfQ0xPQ0sgICAoKHZvbGF0aWxlIHN5c19jbG9ja19pbnRlcmZhY2UgKikoU1lTX0NMT0NLX0JBU0UpKQorCisvLyNkZWZpbmUgQ0xPQ0tfRU4gICAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShQTVVfQkFTRStDTE9DS19FTl9PRkYpKQorLy8jZGVmaW5lIENMT0NLX0VTWU5DICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoUE1VX0JBU0UrQ0xPQ0tfRVNZTkNfT0ZGKSkKKy8vI2RlZmluZSBDTE9DS19TRUwgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKFBNVV9CQVNFK0NMT0NLX1NFTF9PRkYpKQorCisvKiBTWVNfQ0xPQ0sgLT4gRU5BQkxFICovCisKKyNkZWZpbmUgU1lOX0VOICAgICAgICAgIDE8PDAKKyNkZWZpbmUgQjE4TV9FTiAgICAgICAgIDE8PDEKKyNkZWZpbmUgQ0xLM002X0VOICAgICAgIDE8PDIKKyNkZWZpbmUgQlVBUlRfRU4gICAgICAgIDE8PDMKKyNkZWZpbmUgQ0xLMThNVV9FTiAgICAgIDE8PDQKKyNkZWZpbmUgRklSX0VOICAgICAgICAgIDE8PDUKKyNkZWZpbmUgTUlSTl9FTiAgICAgICAgIDE8PDYKKyNkZWZpbmUgVUFSVE1fRU4gICAgICAgIDE8PDcKKyNkZWZpbmUgU0lCQURDX0VOICAgICAgIDE8PDgKKyNkZWZpbmUgQUxURF9FTiAgICAgICAgIDE8PDkKKyNkZWZpbmUgQ0xDTEtfRU4gICAgICAgIDE8PDEwCisKKy8qIFNZU19DTE9DSyAtPiBTRUxFQ1QgKi8KKworI2RlZmluZSBDTEsxOE1fRElWICAgICAgMTw8MAorI2RlZmluZSBNSVJfU0VMICAgICAgICAgMTw8MQorI2RlZmluZSBTU1BfU0VMICAgICAgICAgMTw8NAorI2RlZmluZSBNTV9ESVYgICAgICAgICAgMTw8NQorI2RlZmluZSBNTV9TRUwgICAgICAgICAgMTw8NgorI2RlZmluZSBBRENfU0VMXzIgICAgICAgMDw8NworI2RlZmluZSBBRENfU0VMXzQgICAgICAgMTw8NworI2RlZmluZSBBRENfU0VMXzggICAgICAgMzw8NworI2RlZmluZSBBRENfU0VMXzE2ICAgICAgNzw8NworI2RlZmluZSBBRENfU0VMXzMyICAgICAgMHgwZjw8NworI2RlZmluZSBBRENfU0VMXzY0ICAgICAgMHgxZjw8NworI2RlZmluZSBBRENfU0VMXzEyOCAgICAgMHgzZjw8NworI2RlZmluZSBBTFREX1NFTCAgICAgICAgMTw8MTMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I0ZmYyOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3N5c3RlbS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC9zeXN0ZW0uaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMCBTdGV2ZSBIaWxsIChzamhpbGxAY290dy5jb20pCisgKgorICogQ2hhbmdlbG9nCisgKiAgMDMtMjEtMjAwMCAgU0pICUNyZWF0ZWQKKyAqICAwNC0yNi0yMDAwICBTSkgJRml4ZWQgZnVuY3Rpb25zCisgKiAgMDUtMDMtMjAwMCAgU0pICVJlbW92ZWQgdXNhZ2Ugb2Ygb2Jzb2xldGUgJ2lvbWQuaCcKKyAqICAwNS0zMS0yMDAwICBTSkgJUHJvcGVybHkgaW1wbGVtZW50ZWQgJ2FyY2hfaWRsZScKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX1NZU1RFTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCSoodW5zaWduZWQgbG9uZyAqKShJT19CQVNFICsgMHg1MDAwNCkgPSAxOwkvKiBpZGxlIG1vZGUgKi8KK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWlmIChtb2RlID09ICdzJykgeworCQljcHVfcmVzZXQoMCk7CisJfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3RpbWUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3RpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjk4YjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvdGltZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC90aW1lLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgUm9iIFNjb3R0IChyc2NvdHRAbXRyb2IuZmRucy5uZXQpCisgKiAgICAgICAgICAgICAgICAgICAgU3RldmUgSGlsbCAoc2poaWxsQGNvdHcuY29tKQorICoKKyAqIENoYW5nZWxvZzoKKyAqICAgMDEtMDItMjAwMAlSUwlDcmVhdGVkIGw3MjAwIHZlcnNpb24sIGRlcml2ZWQgZnJvbSBycGMgY29kZQorICogICAwNS0wMy0yMDAwCVNKSAlDb21wbGV0ZSByZXdyaXRlCisgKi8KKyNpZm5kZWYgX0FTTV9BUkNIX1RJTUVfSAorI2RlZmluZSBfQVNNX0FSQ0hfVElNRV9ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+CisKKy8qCisgKiBSVEMgYmFzZSByZWdpc3RlciBhZGRyZXNzCisgKi8KKyNkZWZpbmUgUlRDX0JBU0UJKElPX0JBU0VfMiArIDB4MjAwMCkKKworLyoKKyAqIFJUQyByZWdpc3RlcnMKKyAqLworI2RlZmluZSBSVENfUlRDRFIJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoUlRDX0JBU0UgKyAweDAwMCkpCisjZGVmaW5lIFJUQ19SVENNUgkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIChSVENfQkFTRSArIDB4MDA0KSkKKyNkZWZpbmUgUlRDX1JUQ1MJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoUlRDX0JBU0UgKyAweDAwOCkpCisjZGVmaW5lIFJUQ19SVENDCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKFJUQ19CQVNFICsgMHgwMDgpKQorI2RlZmluZSBSVENfUlRDRFYJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoUlRDX0JBU0UgKyAweDAwYykpCisjZGVmaW5lIFJUQ19SVENDUgkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIChSVENfQkFTRSArIDB4MDEwKSkKKworLyoKKyAqIFJUQ0NSIHJlZ2lzdGVyIHZhbHVlcworICovCisjZGVmaW5lIFJUQ19SQVRFXzMyCTB4MDAgICAgICAvKiAzMiBIeiB0aWNrICovCisjZGVmaW5lIFJUQ19SQVRFXzY0CTB4MTAgICAgICAvKiA2NCBIeiB0aWNrICovCisjZGVmaW5lIFJUQ19SQVRFXzEyOAkweDIwICAgICAgLyogMTI4IEh6IHRpY2sgKi8KKyNkZWZpbmUgUlRDX1JBVEVfMjU2CTB4MzAgICAgICAvKiAyNTYgSHogdGljayAqLworI2RlZmluZSBSVENfRU5fQUxBUk0JMHgwMSAgICAgIC8qIEVuYWJsZSBhbGFybSAqLworI2RlZmluZSBSVENfRU5fVElDCTB4MDQgICAgICAvKiBFbmFibGUgY291bnRlciAqLworI2RlZmluZSBSVENfRU5fU1RXRE9HCTB4MDggICAgICAvKiBFbmFibGUgd2F0Y2hkb2cgKi8KKworLyoKKyAqIEhhbmRsZXIgZm9yIFJUQyB0aW1lciBpbnRlcnJ1cHQKKyAqLworc3RhdGljIGlycXJldHVybl90Cit0aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlkb190aW1lcihyZWdzKTsKKyNpZm5kZWYgQ09ORklHX1NNUAorCXVwZGF0ZV9wcm9jZXNzX3RpbWVzKHVzZXJfbW9kZShyZWdzKSk7CisjZW5kaWYKKwlkb19wcm9maWxlKHJlZ3MpOworCVJUQ19SVENDID0gMDsJCQkJLyogQ2xlYXIgaW50ZXJydXB0ICovCisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKKy8qCisgKiBTZXQgdXAgUlRDIHRpbWVyIGludGVycnVwdCwgYW5kIHJldHVybiB0aGUgY3VycmVudCB0aW1lIGluIHNlY29uZHMuCisgKi8KK3ZvaWQgX19pbml0IHRpbWVfaW5pdCh2b2lkKQoreworCVJUQ19SVENDID0gMDsJCQkJLyogQ2xlYXIgaW50ZXJydXB0ICovCisKKwl0aW1lcl9pcnEuaGFuZGxlciA9IHRpbWVyX2ludGVycnVwdDsKKworCXNldHVwX2lycShJUlFfUlRDX1RJQ0ssICZ0aW1lcl9pcnEpOworCisJUlRDX1JUQ0NSID0gUlRDX1JBVEVfMTI4IHwgUlRDX0VOX1RJQzsJLyogU2V0IHJhdGUgYW5kIGVuYWJsZSB0aW1lciAqLworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMzIwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC90aW1leC5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC90aW1leC5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFJvYiBTY290dCAocnNjb3R0QG10cm9iLmZkbnMubmV0KQorICogICAgICAgICAgICAgICAgICAgIFN0ZXZlIEhpbGwgKHNqaGlsbEBjb3R3LmNvbSkKKyAqCisgKiAwNC0yMS0yMDAwICBSUyBDcmVhdGVkIGZpbGUKKyAqIDA1LTAzLTIwMDAgU0pIIFRpY2sgcmF0ZSB3YXMgd3JvbmcKKyAqCisgKi8KKworLyoKKyAqIE9uIHRoZSBBUk03MjBULCBjbG9jayB0aWNrcyBhcmUgc2V0IHRvIDEyOCBIei4KKyAqCisgKiBOT1RFOiBUaGUgYWN0dWFsIFJUQyB2YWx1ZSBpcyBzZXQgaW4gJ3RpbWUuaCcgd2hpY2gKKyAqICAgICAgIG11c3QgYmUgY2hhbmdlZCB3aGVuIGNob29zaW5nIGEgZGlmZmVyZW50IHRpY2sKKyAqICAgICAgIHJhdGUuIFRoZSB2YWx1ZSBvZiBIWiBpbiAncGFyYW0uaCcgbXVzdCBhbHNvCisgKiAgICAgICBiZSBjaGFuZ2VkIHRvIG1hdGNoIGJlbG93LgorICovCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJMTI4CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhYTJiNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvdW5jb21wcmVzcy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFN0ZXZlIEhpbGwgKHNqaGlsbEBjb3R3LmNvbSkKKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMDUtMDEtMjAwMAlTSkgJQ3JlYXRlZAorICogIDA1LTEzLTIwMDAJU0pICUZpbGxlZCBpbiBmdW5jdGlvbiBib2RpZXMKKyAqICAwNy0yNi0yMDAwCVNKSAlSZW1vdmVkIGhhcmQgY29kZWQgYnVhZCByYXRlCisgKi8KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorCisjZGVmaW5lIElPX1VBUlQgIElPX1NUQVJUICsgMHgwMDA0NDAwMAorCisjZGVmaW5lIF9fcmF3X3dyaXRlYih2LHApCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikocCkgPSAodikpCisjZGVmaW5lIF9fcmF3X3JlYWRiKHApCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKHApKQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCXdoaWxlKF9fcmF3X3JlYWRiKElPX1VBUlQgKyAweDE4KSAmIDB4MjAgfHwKKwkJX19yYXdfcmVhZGIoSU9fVUFSVCArIDB4MTgpICYgMHgwOCk7CisJX19yYXdfd3JpdGViKGMsIElPX1VBUlQgKyAweDAwKTsKK30KKworc3RhdGljIHZvaWQgcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJd2hpbGUgKCpzKSB7CisJCWlmICgqcyA9PSAxMCkgewkJCS8qIElmIGEgTEYsIGFkZCBDUiAqLworCQkJcHV0YygxMCk7CisJCQlwdXRjKDEzKTsKKwkJfQorCQlwdXRjKCoocysrKSk7CisJfQorfQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFyY2hfZGVjb21wX3NldHVwKHZvaWQpCit7CisJX19yYXdfd3JpdGViKDB4MDAsIElPX1VBUlQgKyAweDA4KTsJLyogU2V0IEhTQiAqLworCV9fcmF3X3dyaXRlYigweDAwLCBJT19VQVJUICsgMHgyMCk7CS8qIERpc2FibGUgSVJRcyAqLworCV9fcmF3X3dyaXRlYigweDAxLCBJT19VQVJUICsgMHgxNCk7CS8qIEVuYWJsZSBVQVJUICovCit9CisKKyNkZWZpbmUgYXJjaF9kZWNvbXBfd2RvZygpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1sNzIwMC92bWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlYWViZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWw3MjAwL3ZtYWxsb2MuaApAQCAtMCwwICsxLDE1IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbDcyMDAvdm1hbGxvYy5oCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKFBBR0VfT0ZGU0VUICsgMHgxMDAwMDAwMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvY29uc3RhbnRzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2NvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYzFjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2NvbnN0YW50cy5oCkBAIC0wLDAgKzEsODggQEAKKy8qIGluY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvY29uc3RhbnRzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IExvZ2ljIFByb2R1Y3QgRGV2ZWxvcG1lbnQKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfQ09OU1RBTlRTX0gKKyNkZWZpbmUgX19BU01fQVJDSF9DT05TVEFOVFNfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qIEFkZHJlc3NpbmcgY29uc3RhbnRzICovCisKKwkvKiBTb0MgQ1BVIElPIGFkZHJlc3NpbmcgKi8KKyNkZWZpbmUgSU9fUEhZUwkJCSgweDgwMDAwMDAwKQorI2RlZmluZSBJT19WSVJUCQkJKDB4ZjgwMDAwMDApCisjZGVmaW5lIElPX1NJWkUJCQkoMHgwMDAwQjAwMCkKKworI2lmZGVmIENPTkZJR19NQUNIX0tFVjdBNDAwCisjIGRlZmluZSBDUExEX1BIWVMJCSgweDIwMDAwMDAwKQorIyBkZWZpbmUgQ1BMRF9WSVJUCQkoMHhmMjAwMDAwMCkKKyMgZGVmaW5lIENQTERfU0laRQkJUEFHRV9TSVpFCisjZW5kaWYKKworI2lmIGRlZmluZWQgKENPTkZJR19NQUNIX0xQRDdBNDAwKSB8fCBkZWZpbmVkIChDT05GSUdfTUFDSF9MUEQ3QTQwNCkKKworIyBkZWZpbmUgSU9CQVJSSUVSX1BIWVMJCTB4YzAwMDAwMDAgLyogU3RhcnQgb2YgU0RSQU0gKi8KKy8qIyBkZWZpbmUgSU9CQVJSSUVSX1BIWVMJCTB4MDAwMDAwMDAgKi8gLyogU3RhcnQgb2YgZmxhc2ggKi8KKyMgZGVmaW5lIElPQkFSUklFUl9WSVJUCQkweGYwMDAwMDAwCisjIGRlZmluZSBJT0JBUlJJRVJfU0laRQkJUEFHRV9TSVpFCisKKyMgZGVmaW5lIENGX1BIWVMJCTB4NjAyMDAwMDAKKyMgZGVmaW5lIENGX1ZJUlQJCTB4ZjYwMjAwMDAKKyMgZGVmaW5lIENGX1NJWkUJCSg4KjEwMjQpCisKKwkvKiBUaGUgSU8gbWFwcGluZ3MgZm9yIHRoZSBMUEQgQ1BMRCBhcmUsIHVuZm9ydHVuYXRlbHksIHNwYXJzZS4gICovCisjIGRlZmluZSBDUExEWF9QSFlTKHgpCQkoMHg3MDAwMDAwMCB8ICgoeCkgPDwgMjApKQorIyBkZWZpbmUgQ1BMRFhfVklSVCh4KQkJKDB4ZjcwMDAwMDAgfCAoKHgpIDw8IDE2KSkKKyMgZGVmaW5lIENQTEQwMF9QSFlTCQlDUExEWF9QSFlTICgweDAwKSAvKiBXaXJlZCBMQU4gKi8KKyMgZGVmaW5lIENQTEQwMF9WSVJUCQlDUExEWF9WSVJUICgweDAwKQorIyBkZWZpbmUgQ1BMRDAwX1NJWkUJCVBBR0VfU0laRQorIyBkZWZpbmUgQ1BMRDAyX1BIWVMJCUNQTERYX1BIWVMgKDB4MDIpCisjIGRlZmluZSBDUExEMDJfVklSVAkJQ1BMRFhfVklSVCAoMHgwMikKKyMgZGVmaW5lIENQTEQwMl9TSVpFCQlQQUdFX1NJWkUKKyMgZGVmaW5lIENQTEQwNl9QSFlTCQlDUExEWF9QSFlTICgweDA2KQorIyBkZWZpbmUgQ1BMRDA2X1ZJUlQJCUNQTERYX1ZJUlQgKDB4MDYpCisjIGRlZmluZSBDUExEMDZfU0laRQkJUEFHRV9TSVpFCisjIGRlZmluZSBDUExEMDhfUEhZUwkJQ1BMRFhfUEhZUyAoMHgwOCkKKyMgZGVmaW5lIENQTEQwOF9WSVJUCQlDUExEWF9WSVJUICgweDA4KQorIyBkZWZpbmUgQ1BMRDA4X1NJWkUJCVBBR0VfU0laRQorIyBkZWZpbmUgQ1BMRDBDX1BIWVMJCUNQTERYX1BIWVMgKDB4MGMpCisjIGRlZmluZSBDUExEMENfVklSVAkJQ1BMRFhfVklSVCAoMHgwYykKKyMgZGVmaW5lIENQTEQwQ19TSVpFCQlQQUdFX1NJWkUKKyMgZGVmaW5lIENQTEQwRV9QSFlTCQlDUExEWF9QSFlTICgweDBlKQorIyBkZWZpbmUgQ1BMRDBFX1ZJUlQJCUNQTERYX1ZJUlQgKDB4MGUpCisjIGRlZmluZSBDUExEMEVfU0laRQkJUEFHRV9TSVpFCisjIGRlZmluZSBDUExEMTBfUEhZUwkJQ1BMRFhfUEhZUyAoMHgxMCkKKyMgZGVmaW5lIENQTEQxMF9WSVJUCQlDUExEWF9WSVJUICgweDEwKQorIyBkZWZpbmUgQ1BMRDEwX1NJWkUJCVBBR0VfU0laRQorIyBkZWZpbmUgQ1BMRDEyX1BIWVMJCUNQTERYX1BIWVMgKDB4MTIpCisjIGRlZmluZSBDUExEMTJfVklSVAkJQ1BMRFhfVklSVCAoMHgxMikKKyMgZGVmaW5lIENQTEQxMl9TSVpFCQlQQUdFX1NJWkUKKyMgZGVmaW5lIENQTEQxNF9QSFlTCQlDUExEWF9QSFlTICgweDE0KQorIyBkZWZpbmUgQ1BMRDE0X1ZJUlQJCUNQTERYX1ZJUlQgKDB4MTQpCisjIGRlZmluZSBDUExEMTRfU0laRQkJUEFHRV9TSVpFCisjIGRlZmluZSBDUExEMTZfUEhZUwkJQ1BMRFhfUEhZUyAoMHgxNikKKyMgZGVmaW5lIENQTEQxNl9WSVJUCQlDUExEWF9WSVJUICgweDE2KQorIyBkZWZpbmUgQ1BMRDE2X1NJWkUJCVBBR0VfU0laRQorIyBkZWZpbmUgQ1BMRDE4X1BIWVMJCUNQTERYX1BIWVMgKDB4MTgpCisjIGRlZmluZSBDUExEMThfVklSVAkJQ1BMRFhfVklSVCAoMHgxOCkKKyMgZGVmaW5lIENQTEQxOF9TSVpFCQlQQUdFX1NJWkUKKyMgZGVmaW5lIENQTEQxQV9QSFlTCQlDUExEWF9QSFlTICgweDFhKQorIyBkZWZpbmUgQ1BMRDFBX1ZJUlQJCUNQTERYX1ZJUlQgKDB4MWEpCisjIGRlZmluZSBDUExEMUFfU0laRQkJUEFHRV9TSVpFCisjZW5kaWYKKworCS8qIFRpbWluZyBjb25zdGFudHMgKi8KKworI2RlZmluZQlYVEFMX0lOCQkJMTQ3NDU2MDAJLyogMTQuNzQ1NiBNSHogY3J5c3RhbCAqLworI2RlZmluZSBQTExfQ0xPQ0sJCShYVEFMX0lOICogMjEpCS8qIDMwOSBNSHogUExMIGNsb2NrICovCisjZGVmaW5lIE1BWF9IQ0xLX0tIWgkJMTAwMDAwCQkvKiBIQ0xLIG1heCBsaW1pdCB+MTAwTUh6ICovCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0NPTlNUQU5UU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIxZGNkNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDM5IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyovCisKKwlAIEl0IGlzIG5vdCBrbm93biBpZiB0aGlzIHdpbGwgYmUgYXBwcm9wcmlhdGUgZm9yIGV2ZXJ5IDQweAorCUAgYm9hcmQuCisKKwkJLm1hY3JvICBhZGRydWFydCxyeAorCQltcmMgICAgIHAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0ICAgICBccngsICMxICAgICAgICAgICAgICAgICBAIE1NVSBlbmFibGVkPworCQltb3YgICAgIFxyeCwgIzB4MDAwMDA3MDAgICAgICAgIEAgb2Zmc2V0IGZyb20gYmFzZQorCQlvcnJlcSAgIFxyeCwgXHJ4LCAjMHg4MDAwMDAwMCAgIEAgcGh5c2ljYWwgYmFzZQorCQlvcnJuZSAgIFxyeCwgXHJ4LCAjMHhmODAwMDAwMCAgIEAgdmlydHVhbCBiYXNlCisJCS5lbmRtCisKKwkJLm1hY3JvICBzZW5kdWFydCxyZCxyeAorCQlzdHJiICAgIFxyZCwgW1xyeF0gICAgICAgICAgICAgIEAgREFUQQorCQkuZW5kbQorCisJCS5tYWNybyAgYnVzeXVhcnQscmQscnggICAgICAgICAgQCBzcGluIHdoaWxlIGJ1c3kKKzEwMDE6CQlsZHIgICAgIFxyZCwgW1xyeCwgIzB4MTBdICAgICAgIEAgU1RBVFVTCisJCXRzdCAgICAgXHJkLCAjMSA8PCAzICAgICAgICAgICAgQCBCVVNZIChUWCBGSUZPIG5vdCBlbXB0eSkKKwkJYm5lICAgICAxMDAxYiAgICAgICAgICAgICAgICAgICBAIHllcywgc3BpbgorCQkuZW5kbQorCisJCS5tYWNybyAgd2FpdHVhcnQscmQscnggICAgICAgICAgQCB3YWl0IGZvciBUeCBGSUZPIHJvb20KKzEwMDE6CQlsZHJiICAgIFxyZCwgW1xyeCwgIzB4MTBdICAgICAgIEAgU1RBVFVTCisJCXRzdCAgICAgXHJkLCAjMSA8PCA1ICAgICAgICAgICAgQCBUWEZGIChUWCBGSUZPIGZ1bGwpCisJCWJuZSAgICAgMTAwMWIgICAgICAgICAgICAgICAgICAgQCB5ZXMsIHNwaW4KKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTdmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2RtYS5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qIGluY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvZG1hLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZmZmZmZmZmYKKyNkZWZpbmUgTUFYX0RNQV9DSEFOTkVMUwkwIC8qIEFsbCBETUEgaXMgaW50ZXJuYWwgdG8gQ1BVICovCisKKyNlbmRpZiAvKiBfQVNNX0FSQ0hfRE1BX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjVmMzk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIExIN0E0MHggcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworIyBpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9MSDdBNDAwKSAmJiBkZWZpbmVkIChDT05GSUdfQVJDSF9MSDdBNDA0KQorIyAgZXJyb3IgIkxIN0E0MDAgYW5kIExIN0E0MDQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKKyMgZW5kaWYKKworIyBpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9MSDdBNDAwKQorCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJCW1vdglcaXJxbnIsICMwCisJCW1vdglcYmFzZSwgI2lvX3AydigweDgwMDAwMDAwKQlAIEFQQiByZWdpc3RlcnMKKwkJbGRyCVxpcnFzdGF0LCBbXGJhc2UsICMweDUwMF0JQCBQSUMgSU5UU1IKKworMTAwMToJCW1vdnMJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IgIzEJQCBTaGlmdCBpbnRvIGNhcnJ5CisJCWJjcwkxMDA4ZgkJCQlAIEJpdCBzZXQ7IGlycSBmb3VuZAorCQlhZGQJXGlycW5yLCBcaXJxbnIsICMxCisJCWJuZQkxMDAxYgkJCQlAIFVudGlsIG5vIGJpdHMKKwkJYgkxMDA5ZgkJCQlAIE5vdGhpbmc/ICBIbW0uCisxMDA4OgkJbW92cwlcaXJxc3RhdCwgIzEJCQlAIEZvcmNlICFaCisxMDA5OgorICAgICAgICAgICAgICAgLmVuZG0KKworI2VsaWYgZGVmaW5lZChDT05GSUdfQVJDSF9MSDdBNDA0KQorCisJCS5tYWNybwlkaXNhYmxlX2ZpcQorCQkuZW5kbQorCisJCS5tYWNybwlnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKwkJbW92CVxpcnFuciwgIzAJCQlAIFZJQzEgaXJxIGJhc2UKKwkJbW92CVxiYXNlLCAjaW9fcDJ2KDB4ODAwMDAwMDApCUAgQVBCIHJlZ2lzdGVycworCQlhZGQJXGJhc2UsIFxiYXNlLCAjMHg4MDAwCisJCWxkcglcdG1wLCBbXGJhc2UsICMweDAwMzBdCQlAIFZJQzFfVkVDVEFERFIKKwkJdHN0CVx0bXAsICNWQV9WRUNUT1JFRAkJQCBEaXJlY3QgdmVjdG9yZWQKKwkJYm5lCTEwMDJmCisJCXRzdAlcdG1wLCAjVkFfVklDMURFRkFVTFQJCUAgRGVmYXVsdCB2ZWN0b3JlZCBWSUMxCisJCWxkcm5lCVxpcnFzdGF0LCBbXGJhc2UsICMwXQkJQCBWSUMxX0lSUVNUQVRVUworCQlibmUJMTAwMWYKKwkJYWRkCVxiYXNlLCBcYmFzZSwgIygweGEwMDAgLSAweDgwMDApCisJCWxkcglcdG1wLCBbXGJhc2UsICMweDAwMzBdCQlAIFZJQzJfVkVDVEFERFIKKwkJdHN0CVx0bXAsICNWQV9WRUNUT1JFRAkJQCBEaXJlY3QgdmVjdG9yZWQKKwkJYm5lCTEwMDJmCisJCWxkcglcaXJxc3RhdCwgW1xiYXNlLCAjMF0JCUAgVklDMl9JUlFTVEFUVVMKKwkJbW92CVxpcnFuciwgIzMyCQkJQCBWSUMyIGlycSBiYXNlCisKKzEwMDE6CQltb3ZzCVxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICMxCUAgU2hpZnQgaW50byBjYXJyeQorCQliY3MJMTAwOGYJCQkJQCBCaXQgc2V0OyBpcnEgZm91bmQKKwkJYWRkCVxpcnFuciwgXGlycW5yLCAjMQorCQlibmUJMTAwMWIJCQkJQCBVbnRpbCBubyBiaXRzCisJCWIJMTAwOWYJCQkJQCBOb3RoaW5nPyAgSG1tLgorMTAwMjoJCWFuZAlcaXJxbnIsIFx0bXAsICMweDNmCQlAIE1hc2sgZm9yIHZhbGlkIGJpdHMKKzEwMDg6CQltb3ZzCVxpcnFzdGF0LCAjMQkJCUAgRm9yY2UgIVoKKwkJc3RyCVx0bXAsIFtcYmFzZSwgIzB4MDAzMF0JCUAgQ2xlYXIgdmVjdG9yCisxMDA5OgorICAgICAgICAgICAgICAgLmVuZG0KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWIwN2MxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qIGluY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaGFyZHdhcmUuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgQ29hc3RhbCBFbnZpcm9ubWVudGFsIFN5c3RlbXMKKyAqCisgKiAgWyBTdWJzdGFudGlhbGx5IGNyaWJiZWQgZnJvbSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaGFyZHdhcmUuaCBdCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKyNkZWZpbmUgaW9fcDJ2KHgpICgweGYwMDAwMDAwIHwgKCgoeCkgJiAweGZmZjAwMDAwKSA+PiA0KSB8ICgoeCkgJiAweDAwMDBmZmZmKSkKKyNkZWZpbmUgaW9fdjJwKHgpICggICAgICAgICAgICAgKCgoeCkgJiAweDBmZmYwMDAwKSA8PCA0KSB8ICgoeCkgJiAweDAwMDBmZmZmKSkKKworI2lmZGVmIF9fQVNTRU1CTFlfXworCisjIGRlZmluZSBfX1JFRyh4KQlpb19wMnYoeCkKKyMgZGVmaW5lIF9fUFJFRyh4KQlpb192MnAoeCkKKworI2Vsc2UKKworIyBpZiAwCisjICBkZWZpbmUgX19SRUcoeCkJKCooKHZvbGF0aWxlIHUzMiAqKWlvX3Aydih4KSkpCisjIGVsc2UKKy8qCisgKiBUaGlzIF9fUkVHKCkgdmVyc2lvbiBnaXZlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBvbmUgYWJvdmUsICBleGNlcHQKKyAqIHRoYXQgd2UgYXJlIGZvb2xpbmcgZ2NjIHNvbWVob3cgc28gaXQgZ2VuZXJhdGVzIGZhciBiZXR0ZXIgYW5kIHNtYWxsZXIKKyAqIGFzc2VtYmx5IGNvZGUgZm9yIGFjY2VzcyB0byBjb250aWdvdXMgcmVnaXN0ZXJzLiAgSXQncyBhIHNoYW1lIHRoYXQgZ2NjCisgKiBkb2Vzbid0IGd1ZXNzIHRoaXMgYnkgaXRzZWxmLgorICovCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Cit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUzMiBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlOworIyBkZWZpbmUgX19SRUdQKHgpCSgoX19yZWdiYXNlICopKCh4KSZ+NDA5NSkpLT5vZmZzZXRbKCh4KSY0MDk1KT4+Ml0KKyMgZGVmaW5lIF9fUkVHKHgpCV9fUkVHUChpb19wMnYoeCkpCit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUxNiBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlMTY7CisjIGRlZmluZSBfX1JFR1AxNih4KQkoKF9fcmVnYmFzZTE2ICopKCh4KSZ+NDA5NSkpLT5vZmZzZXRbKCh4KSY0MDk1KT4+MV0KKyMgZGVmaW5lIF9fUkVHMTYoeCkJX19SRUdQMTYoaW9fcDJ2KHgpKQordHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSB1OCBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlODsKKyMgZGVmaW5lIF9fUkVHUDgoeCkJKChfX3JlZ2Jhc2U4ICopKCh4KSZ+NDA5NSkpLT5vZmZzZXRbKHgpJjQwOTVdCisjIGRlZmluZSBfX1JFRzgoeCkJX19SRUdQOChpb19wMnYoeCkpCisjZW5kaWYKKworLyogTGV0J3Mga2ljayBnY2MncyBhc3MgYWdhaW4uLi4gKi8KKyMgZGVmaW5lIF9fUkVHMih4LHkpCVwKKwkoIF9fYnVpbHRpbl9jb25zdGFudF9wKHkpID8gKF9fUkVHKCh4KSArICh5KSkpIFwKKwkJCQkgIDogKCoodm9sYXRpbGUgdTMyICopKCh1MzIpJl9fUkVHKHgpICsgKHkpKSkgKQorCisjIGRlZmluZSBfX1BSRUcoeCkJKGlvX3YycCgodTMyKSYoeCkpKQorCisjZW5kaWYKKworI2luY2x1ZGUgInJlZ2lzdGVycy5oIgorCisjZW5kaWYgIC8qIF9BU01fQVJDSF9IQVJEV0FSRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzYmRkOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaW8uaApAQCAtMCwwICsxLDIxIEBACisvKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2lvLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisvKiBObyBJU0Egb3IgUENJIGJ1cyBvbiB0aGlzIG1hY2hpbmUuICovCisjZGVmaW5lIF9faW8oYSkJCQkoKHZvaWQgX19pb21lbSAqKShhKSkKKyNkZWZpbmUgX19tZW1fcGNpKGEpCQkoYSkKKyNkZWZpbmUgX19tZW1faXNhKGEpCQkoYSkKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfSU9fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaXJxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY1ZjBiMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaXJxLmgKQEAgLTAsMCArMSwxMSBAQAorLyogaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9pcnEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudAorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKK3ZvaWQgX19pbml0IGxoN2E0MHhfaW5pdF9ib2FyZF9pcnEgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTFmM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9pcnFzLmgKQEAgLTAsMCArMSwxOTYgQEAKKy8qIGluY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvaXJxcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNCBDb2FzdGFsIEVudmlyb25tZW50YWwgU3lzdGVtcworICogIENvcHlyaWdodCAoQykgMjAwNCBMb2dpYyBQcm9kdWN0IERldmVsb3BtZW50CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworLyogSXQgaXMgdG8gYmUgc2VlbiB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYnVpbGQgYSBrZXJuZWwgZm9yIG1vcmUgdGhhbgorICogb25lIGJvYXJkLiAgRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGVzZSBtYWNyb3MgYXNzdW1lIHRoYXQgd2UgY2Fubm90LgorICogVGh1cywgaXQgaXMgT0sgdG8gaWZkZWYgbWFjaGluZS9ib2FyZCBzcGVjaWZpYyBJUlEgYXNzaWdubWVudHMuCisgKi8KKworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSVJRU19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSVJRU19ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2RlZmluZSBGSVFfU1RBUlQJODAKKworI2lmIGRlZmluZWQgKENPTkZJR19BUkNIX0xIN0E0MDApCisKKyAgLyogRklRcyAqLworCisjIGRlZmluZSBJUlFfR1BJTzBGSVEJMAkvKiBHUElPIEV4dGVybmFsIEZJUSBJbnRlcnJ1cHQgb24gRjAgKi8KKyMgZGVmaW5lIElSUV9CTElOVAkxCS8qIEJhdHRlcnkgTG93ICovCisjIGRlZmluZSBJUlFfV0VJTlQJMgkvKiBXYXRjaGRvZyBUaW1lciwgV0RUIG92ZXJmbG93CSovCisjIGRlZmluZSBJUlFfTUNJTlQJMwkvKiBNZWRpYSBDaGFuZ2UsIE1FRENIRyBwaW4gcmlzaW5nICovCisKKyAgLyogSVJRcyAqLworCisjIGRlZmluZSBJUlFfQ1NJTlQJNAkvKiBBdWRpbyBDb2RlYyAoQUNJKSAqLworIyBkZWZpbmUgSVJRX0dQSU8xSU5UUgk1CS8qIEdQSU8gRXh0ZXJuYWwgSVJRIEludGVycnVwdCBvbiBGMSAqLworIyBkZWZpbmUgSVJRX0dQSU8ySU5UUgk2CS8qIEdQSU8gRXh0ZXJuYWwgSVJRIEludGVycnVwdCBvbiBGMiAqLworIyBkZWZpbmUgSVJRX0dQSU8zSU5UUgk3CS8qIEdQSU8gRXh0ZXJuYWwgSVJRIEludGVycnVwdCBvbiBGMyAqLworIyBkZWZpbmUgSVJRX1QxVUkJOAkvKiBUaW1lciAxIHVuZGVyZmxvdyAqLworIyBkZWZpbmUgSVJRX1QyVUkJOQkvKiBUaW1lciAyIHVuZGVyZmxvdyAqLworIyBkZWZpbmUgSVJRX1JUQ01JCTEwCisjIGRlZmluZSBJUlFfVElOVFIJMTEJLyogQ2xvY2sgU3RhdGUgQ29udHJvbGxlciA2NCBIeiB0aWNrIChDU0MpICovCisjIGRlZmluZSBJUlFfVUFSVDFJTlRSCTEyCisjIGRlZmluZSBJUlFfVUFSVDJJTlRSCTEzCisjIGRlZmluZSBJUlFfTENESU5UUgkxNAorIyBkZWZpbmUgSVJRX1NTSUVPVAkxNQkvKiBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlIChTU0kpICovCisjIGRlZmluZSBJUlFfVUFSVDNJTlRSCTE2CisjIGRlZmluZSBJUlFfU0NJSU5UUgkxNwkvKiBTbWFydCBDYXJkIEludGVyZmFjZSAoU0NJKSAqLworIyBkZWZpbmUgSVJRX0FBQ0lOVFIJMTgJLyogQWR2YW5jZWQgQXVkaW8gQ29kZWMgKEFBQykgKi8KKyMgZGVmaW5lIElSUV9NTUNJTlRSCTE5CS8qIE11bHRpbWVkaWEgQ2FyZCAoTU1DKSAqLworIyBkZWZpbmUgSVJRX1VTQklOVFIJMjAKKyMgZGVmaW5lIElSUV9ETUFJTlRSCTIxCisjIGRlZmluZSBJUlFfVDNVSQkyMgkvKiBUaW1lciAzIHVuZGVyZmxvdyAqLworIyBkZWZpbmUgSVJRX0dQSU80SU5UUgkyMwkvKiBHUElPIEV4dGVybmFsIElSUSBJbnRlcnJ1cHQgb24gRjQgKi8KKyMgZGVmaW5lIElSUV9HUElPNUlOVFIJMjQJLyogR1BJTyBFeHRlcm5hbCBJUlEgSW50ZXJydXB0IG9uIEY1ICovCisjIGRlZmluZSBJUlFfR1BJTzZJTlRSCTI1CS8qIEdQSU8gRXh0ZXJuYWwgSVJRIEludGVycnVwdCBvbiBGNiAqLworIyBkZWZpbmUgSVJRX0dQSU83SU5UUgkyNgkvKiBHUElPIEV4dGVybmFsIElSUSBJbnRlcnJ1cHQgb24gRjcgKi8KKyMgZGVmaW5lIElSUV9CTUlJTlRSCTI3CS8qIEJhdHRlcnkgTW9uaXRvciBJbnRlcmZhY2UgKEJNSSkgKi8KKworIyBkZWZpbmUgTlJfSVJRX0NQVQkyOAkvKiBJUlFzIGRpcmVjdGx5IHJlY29nbml6ZWQgYnkgQ1BVICovCisKKwkvKiBHaXZlbiBJUlEsIHJldHVybiBHUElPIGludGVycnVwdCBudW1iZXIgMC03ICovCisjIGRlZmluZSBJUlFfVE9fR1BJTyhpKSAgKChpKSBcCisJLSAoKChpKSA+IElSUV9HUElPM0lOVFIpID8gSVJRX0dQSU80SU5UUiAtIElSUV9HUElPM0lOVFIgLSAxIDogMClcCisJLSAoKChpKSA+IElSUV9HUElPMElOVFIpID8gSVJRX0dQSU8xSU5UUiAtIElSUV9HUElPMElOVFIgLSAxIDogMCkpCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoQ09ORklHX0FSQ0hfTEg3QTQwNCkKKworIyBkZWZpbmUgSVJRX0JST1dOCTAJLyogQnJvd25vdXQgKi8KKyMgZGVmaW5lIElSUV9XRFRJTlRSCTEJLyogV2F0Y2hkb2cgVGltZXIgKi8KKyMgZGVmaW5lIElSUV9DT01NUlgJMgkvKiBBUk0gQ29tbSBSeCBmb3IgRGVidWcgKi8KKyMgZGVmaW5lIElSUV9DT01NVFgJMwkvKiBBUk0gQ29tbSBUeCBmb3IgRGVidWcgKi8KKyMgZGVmaW5lIElSUV9UMVVJCTQJLyogVGltZXIgMSB1bmRlcmZsb3cgKi8KKyMgZGVmaW5lIElSUV9UMlVJCTUJLyogVGltZXIgMiB1bmRlcmZsb3cgKi8KKyMgZGVmaW5lIElSUV9DU0lOVAk2CS8qIENvZGVjIEludGVycnVwdCAoc2hhcmVkIGJ5IEFBQyBvbiA0MDQpICovCisjIGRlZmluZSBJUlFfRE1BTTJQMAk3CS8qIC0tIERNQSBNZW1vcnkgdG8gUGVyaXBoZXJhbCAqLworIyBkZWZpbmUgSVJRX0RNQU0yUDEJOAorIyBkZWZpbmUgSVJRX0RNQU0yUDIJOQorIyBkZWZpbmUgSVJRX0RNQU0yUDMJMTAKKyMgZGVmaW5lIElSUV9ETUFNMlA0CTExCisjIGRlZmluZSBJUlFfRE1BTTJQNQkxMgorIyBkZWZpbmUgSVJRX0RNQU0yUDYJMTMKKyMgZGVmaW5lIElSUV9ETUFNMlA3CTE0CisjIGRlZmluZSBJUlFfRE1BTTJQOAkxNQorIyBkZWZpbmUgSVJRX0RNQU0yUDkJMTYKKyMgZGVmaW5lIElSUV9ETUFNMk0wCTE3CS8qIC0tIERNQSBNZW1vcnkgdG8gTWVtb3J5ICovCisjIGRlZmluZSBJUlFfRE1BTTJNMQkxOAorIyBkZWZpbmUgSVJRX0dQSU8wSU5UUgkxOQkvKiAtLSBHUElPRiBJbnRlcnJ1cHQgKi8KKyMgZGVmaW5lIElSUV9HUElPMUlOVFIJMjAKKyMgZGVmaW5lIElSUV9HUElPMklOVFIJMjEKKyMgZGVmaW5lIElSUV9HUElPM0lOVFIJMjIKKyMgZGVmaW5lIElSUV9TT0ZUX1YxXzIzCTIzCS8qIC0tIFVuYXNzaWduZWQgKi8KKyMgZGVmaW5lIElSUV9TT0ZUX1YxXzI0CTI0CisjIGRlZmluZSBJUlFfU09GVF9WMV8yNQkyNQorIyBkZWZpbmUgSVJRX1NPRlRfVjFfMjYJMjYKKyMgZGVmaW5lIElSUV9TT0ZUX1YxXzI3CTI3CisjIGRlZmluZSBJUlFfU09GVF9WMV8yOAkyOAorIyBkZWZpbmUgSVJRX1NPRlRfVjFfMjkJMjkKKyMgZGVmaW5lIElSUV9TT0ZUX1YxXzMwCTMwCisjIGRlZmluZSBJUlFfU09GVF9WMV8zMQkzMQorCisjIGRlZmluZSBJUlFfQkxJTlQJMzIJLyogQmF0dGVyeSBMb3cgKi8KKyMgZGVmaW5lIElSUV9CTUlJTlRSCTMzCS8qIEJhdHRlcnkgTW9uaXRvciAqLworIyBkZWZpbmUgSVJRX01DSU5UUgkzNAkvKiBNZWRpYSBDaGFuZ2UgKi8KKyMgZGVmaW5lIElSUV9USU5UUgkzNQkvKiA2NEh6IFRpY2sgKi8KKyMgZGVmaW5lIElSUV9XRUlOVAkzNgkvKiBXYXRjaGRvZyBFeHBpcmVkICovCisjIGRlZmluZSBJUlFfUlRDTUkJMzcJLyogUmVhbC10aW1lIENsb2NrIE1hdGNoICovCisjIGRlZmluZSBJUlFfVUFSVDFJTlRSCTM4CS8qIFVBUlQxIEludGVycnVwdCAoaW5jbHVkaW5nIGVycm9yKSAqLworIyBkZWZpbmUgSVJRX1VBUlQxRVJSCTM5CS8qIFVBUlQxIEVycm9yICovCisjIGRlZmluZSBJUlFfVUFSVDJJTlRSCTQwCS8qIFVBUlQyIEludGVycnVwdCAoaW5jbHVkaW5nIGVycm9yKSAqLworIyBkZWZpbmUgSVJRX1VBUlQyRVJSCTQxCS8qIFVBUlQyIEVycm9yICovCisjIGRlZmluZSBJUlFfVUFSVDNJTlRSCTQyCS8qIFVBUlQzIEludGVycnVwdCAoaW5jbHVkaW5nIGVycm9yKSAqLworIyBkZWZpbmUgSVJRX1VBUlQzRVJSCTQzCS8qIFVBUlQzIEVycm9yICovCisjIGRlZmluZSBJUlFfU0NJSU5UUgk0NAkvKiBTbWFydCBDYXJkICovCisjIGRlZmluZSBJUlFfVFNDSU5UUgk0NQkvKiBUb3VjaHNjcmVlbiAqLworIyBkZWZpbmUgSVJRX0tNSUlOVFIJNDYJLyogS2V5Ym9hcmQvTW91c2UgKFBTLzIpICovCisjIGRlZmluZSBJUlFfR1BJTzRJTlRSCTQ3CS8qIC0tIEdQSU9GIEludGVycnVwdCAqLworIyBkZWZpbmUgSVJRX0dQSU81SU5UUgk0OAorIyBkZWZpbmUgSVJRX0dQSU82SU5UUgk0OQorIyBkZWZpbmUgSVJRX0dQSU83SU5UUgk1MAorIyBkZWZpbmUgSVJRX1QzVUkJNTEJLyogVGltZXIgMyB1bmRlcmZsb3cgKi8KKyMgZGVmaW5lIElSUV9MQ0RJTlRSCTUyCS8qIExDRCBDb250cm9sbGVyICovCisjIGRlZmluZSBJUlFfU1NQSU5UUgk1MwkvKiBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCAqLworIyBkZWZpbmUgSVJRX1NESU5UUgk1NAkvKiBTZWN1cmUgRGlnaXRhbCBQb3J0IChNTUMpICovCisjIGRlZmluZSBJUlFfVVNCSU5UUgk1NQkvKiBVU0IgRGV2aWNlIFBvcnQgKi8KKyMgZGVmaW5lIElSUV9VU0hJTlRSCTU2CS8qIFVTQiBIb3N0IFBvcnQgKi8KKyMgZGVmaW5lIElSUV9TT0ZUX1YyXzI1CTU3CS8qIC0tIFVuYXNzaWduZWQgKi8KKyMgZGVmaW5lIElSUV9TT0ZUX1YyXzI2CTU4CisjIGRlZmluZSBJUlFfU09GVF9WMl8yNwk1OQorIyBkZWZpbmUgSVJRX1NPRlRfVjJfMjgJNjAKKyMgZGVmaW5lIElSUV9TT0ZUX1YyXzI5CTYxCisjIGRlZmluZSBJUlFfU09GVF9WMl8zMAk2MgorIyBkZWZpbmUgSVJRX1NPRlRfVjJfMzEJNjMKKworIyBkZWZpbmUgTlJfSVJRX0NQVQk2NAkvKiBJUlFzIGRpcmVjdGx5IHJlY29nbml6ZWQgYnkgQ1BVICovCisKKwkvKiBHaXZlbiBJUlEsIHJldHVybiBHUElPIGludGVycnVwdCBudW1iZXIgMC03ICovCisjIGRlZmluZSBJUlFfVE9fR1BJTyhpKSAgKChpKSBcCisJLSAoKChpKSA+IElSUV9HUElPM0lOVFIpID8gSVJRX0dQSU80SU5UUiAtIElSUV9HUElPM0lOVFIgLSAxIDogMClcCisJLSBJUlFfR1BJTzBJTlRSKQorCisJCQkvKiBWZWN0b3IgQWRkcmVzcyBjb25zdGFudHMgKi8KKyMgZGVmaW5lIFZBX1ZFQ1RPUkVECTB4MTAwCS8qIFNldCBmb3IgdmVjdG9yZWQgaW50ZXJydXB0ICovCisjIGRlZmluZSBWQV9WSUMxREVGQVVMVAkweDIwMAkvKiBTZXQgYXMgZGVmYXVsdCBWRUNUQUREUiBmb3IgVklDMSAqLworIyBkZWZpbmUgVkFfVklDMkRFRkFVTFQJMHg0MDAJLyogU2V0IGFzIGRlZmF1bHQgVkVDVEFERFIgZm9yIFZJQzIgKi8KKworI2VuZGlmCisKKyAgLyogSVJRIGFsaWFzZXMgKi8KKworI2lmICFkZWZpbmVkIChJUlFfR1BJTzBJTlRSKQorIyBkZWZpbmUgSVJRX0dQSU8wSU5UUglJUlFfR1BJTzBGSVEKKyNlbmRpZgorI2RlZmluZSBJUlFfVElDSyAJSVJRX1RJTlRSCisjZGVmaW5lIElSUV9QQ0MxX1JEWQlJUlFfR1BJTzZJTlRSCS8qIFBDQ2FyZCAxIHJlYWR5ICovCisjZGVmaW5lIElSUV9QQ0MyX1JEWQlJUlFfR1BJTzdJTlRSCS8qIFBDQ2FyZCAyIHJlYWR5ICovCisKKyNpZmRlZiBDT05GSUdfTUFDSF9LRVY3QTQwMAorIyBkZWZpbmUgSVJRX1RTCQlJUlFfR1BJT0ZJUQkvKiBUb3VjaHNjcmVlbiAqLworIyBkZWZpbmUgSVJRX0NQTEQJSVJRX0dQSU8xSU5UUgkvKiBDUExEIGNhc2NhZGUgKi8KKyMgZGVmaW5lIElSUV9QQ0MxX0NECUlSUV9HUElPX0YyCS8qIFBDQ2FyZCAxIGNhcmQgZGV0ZWN0ICovCisjIGRlZmluZSBJUlFfUENDMl9DRAlJUlFfR1BJT19GMwkvKiBQQ0NhcmQgMiBjYXJkIGRldGVjdCAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChDT05GSUdfTUFDSF9MUEQ3QTQwMCkgfHwgZGVmaW5lZCAoQ09ORklHX01BQ0hfTFBEN0E0MDQpCisjIGRlZmluZSBJUlFfQ1BMRF9WMjgJSVJRX0dQSU83SU5UUgkvKiBDUExEIGNhc2NhZGUgdGhyb3VnaCBHUElPX1BGNyAqLworIyBkZWZpbmUgSVJRX0NQTERfVjM0CUlSUV9HUElPM0lOVFIJLyogQ1BMRCBjYXNjYWRlIHRocm91Z2ggR1BJT19QRjMgKi8KKyNlbmRpZgorCisgIC8qIFN5c3RlbSBzcGVjaWZpYyBJUlFzICovCisKKyNkZWZpbmUgSVJRX0JPQVJEX1NUQVJUIE5SX0lSUV9DUFUKKworI2lmZGVmIENPTkZJR19NQUNIX0tFVjdBNDAwCisjIGRlZmluZSBJUlFfS0VWN0E0MDBfQ1BMRAlJUlFfQk9BUkRfU1RBUlQKKyMgZGVmaW5lIE5SX0lSUV9CT0FSRAkJNQorIyBkZWZpbmUgSVJRX0tFVjdBNDAwX01NQ19DRAlJUlFfS0VWN0E0MDBfQ1BMRCArIDAJLyogTU1DIENhcmQgRGV0ZWN0ICovCisjIGRlZmluZSBJUlFfS0VWN0E0MDBfUkkyCUlSUV9LRVY3QTQwMF9DUExEICsgMQkvKiBSaW5nIEluZGljYXRvciAyICovCisjIGRlZmluZSBJUlFfS0VWN0E0MDBfSURFX0NGCUlSUV9LRVY3QTQwMF9DUExEICsgMgkvKiBDb21wYWN0IEZsYXNoICg/KSAqLworIyBkZWZpbmUgSVJRX0tFVjdBNDAwX0VUSF9JTlQJSVJRX0tFVjdBNDAwX0NQTEQgKyAzCS8qIEV0aGVybmV0IGNoaXAgKi8KKyMgZGVmaW5lIElSUV9LRVY3QTQwMF9JTlQJSVJRX0tFVjdBNDAwX0NQTEQgKyA0CisjZW5kaWYKKworI2lmIGRlZmluZWQgKENPTkZJR19NQUNIX0xQRDdBNDAwKSB8fCBkZWZpbmVkIChDT05GSUdfTUFDSF9MUEQ3QTQwNCkKKyMgZGVmaW5lIElSUV9MUEQ3QTQwWF9DUExECUlSUV9CT0FSRF9TVEFSVAorIyBkZWZpbmUgTlJfSVJRX0JPQVJECQkyCisjIGRlZmluZSBJUlFfTFBEN0E0MFhfRVRIX0lOVAlJUlFfTFBEN0E0MFhfQ1BMRCArIDAJLyogRXRoZXJuZXQgY2hpcCAqLworIyBkZWZpbmUgSVJRX0xQRDdBNDAwX1RTCUlSUV9MUEQ3QTQwWF9DUExEICsgMQkvKiBUb3VjaCBzY3JlZW4gKi8KKyNlbmRpZgorCisjZGVmaW5lIE5SX0lSUVMJCShOUl9JUlFfQ1BVICsgTlJfSVJRX0JPQVJEKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMmZlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L21lbW9yeS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qIGluY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvbWVtb3J5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKgorICogIFJlZmVyIHRvIDxmaWxlOkRvY3VtZW50YXRpb24vYXJtL1NoYXJwLUxIL1NEUkFNPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworLyoKKyAqIFBoeXNpY2FsIERSQU0gb2Zmc2V0LgorICovCisjZGVmaW5lIFBIWVNfT0ZGU0VUCSgweGMwMDAwMDAwVUwpCisKKy8qCisgKiBWaXJ0dWFsIHZpZXcgPC0+IERNQSB2aWV3IG1lbW9yeSBhZGRyZXNzIHRyYW5zbGF0aW9ucworICogdmlydF90b19idXM6IFVzZWQgdG8gdHJhbnNsYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdG8gYW4KKyAqCQlhZGRyZXNzIHN1aXRhYmxlIHRvIGJlIHBhc3NlZCB0byBzZXRfZG1hX2FkZHIKKyAqIGJ1c190b192aXJ0OiBVc2VkIHRvIGNvbnZlcnQgYW4gYWRkcmVzcyBmb3IgRE1BIG9wZXJhdGlvbnMKKyAqCQl0byBhbiBhZGRyZXNzIHRoYXQgdGhlIGtlcm5lbCBjYW4gdXNlLgorICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJIF9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJIF9fcGh5c190b192aXJ0KHgpCisKKyNpZmRlZiBDT05GSUdfRElTQ09OVElHTUVNCisKKyNkZWZpbmUgTk9ERVNfU0hJRlQJNAkvKiBVcCB0byAxNiBub2RlcyAqLworCisvKgorICogR2l2ZW4gYSBrZXJuZWwgYWRkcmVzcywgZmluZCB0aGUgaG9tZSBub2RlIG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KKyAqLworCisjIGlmZGVmIENPTkZJR19MSDdBNDBYX09ORV9CQU5LX1BFUl9OT0RFCisjICBkZWZpbmUgS1ZBRERSX1RPX05JRChhZGRyKSBcCisgICggICgoKCh1bnNpZ25lZCBsb25nKSAoYWRkcikgLSBQQUdFX09GRlNFVCkgPj4gMjQpICYgIDEpXAorICAgfCAoKCgodW5zaWduZWQgbG9uZykgKGFkZHIpIC0gUEFHRV9PRkZTRVQpID4+IDI1KSAmIH4xKSkKKyMgZWxzZSAgLyogMiBiYW5rcyBwZXIgbm9kZSAqLworIyAgZGVmaW5lIEtWQUREUl9UT19OSUQoYWRkcikgXAorICAgICAgKCgodW5zaWduZWQgbG9uZykgKGFkZHIpIC0gUEFHRV9PRkZTRVQpID4+IDI2KQorIyBlbmRpZgorCisvKgorICogR2l2ZW4gYSBwYWdlIGZyYW1lIG51bWJlciwgY29udmVydCBpdCB0byBhIG5vZGUgaWQuCisgKi8KKworIyBpZmRlZiBDT05GSUdfTEg3QTQwWF9PTkVfQkFOS19QRVJfTk9ERQorIyAgZGVmaW5lIFBGTl9UT19OSUQocGZuKSBcCisgICgoKCgocGZuKSAtIFBIWVNfUEZOX09GRlNFVCkgPj4gKDI0IC0gUEFHRV9TSElGVCkpICYgIDEpXAorIHwgKCgoKHBmbikgLSBQSFlTX1BGTl9PRkZTRVQpID4+ICgyNSAtIFBBR0VfU0hJRlQpKSAmIH4xKSkKKyMgZWxzZSAgLyogMiBiYW5rcyBwZXIgbm9kZSAqLworIyAgZGVmaW5lIFBGTl9UT19OSUQocGZuKSBcCisgICAgKCgocGZuKSAtIFBIWVNfUEZOX09GRlNFVCkgPj4gKDI2IC0gUEFHRV9TSElGVCkpCisjZW5kaWYKKworLyoKKyAqIEdpdmVuIGEga2FkZHIsIEFERFJfVE9fTUFQQkFTRSBmaW5kcyB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybiB0aGUgbWVtX21hcCBvZiB0aGF0IG5vZGUuCisgKi8KKyMgZGVmaW5lIEFERFJfVE9fTUFQQkFTRShrYWRkcikJTk9ERV9NRU1fTUFQKEtWQUREUl9UT19OSUQoa2FkZHIpKQorCisvKgorICogR2l2ZW4gYSBwYWdlIGZyYW1lIG51bWJlciwgZmluZCB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybiB0aGUgbWVtX21hcCBvZiB0aGF0IG5vZGUuCisgKi8KKyMgZGVmaW5lIFBGTl9UT19NQVBCQVNFKHBmbikJTk9ERV9NRU1fTUFQKFBGTl9UT19OSUQocGZuKSkKKworLyoKKyAqIEdpdmVuIGEga2FkZHIsIExPQ0FMX01FTV9NQVAgZmluZHMgdGhlIG93bmluZyBub2RlIG9mIHRoZSBtZW1vcnkKKyAqIGFuZCByZXR1cm5zIHRoZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBwYWdlIGluIHRoZQorICogbm9kZSdzIG1lbV9tYXAuCisgKi8KKworIyBpZmRlZiBDT05GSUdfTEg3QTQwWF9PTkVfQkFOS19QRVJfTk9ERQorIyAgZGVmaW5lIExPQ0FMX01BUF9OUihhZGRyKSBcCisgICAgICAgKCgodW5zaWduZWQgbG9uZykoYWRkcikgJiAweDAwM2ZmZmZmKSA+PiBQQUdFX1NISUZUKQorIyBlbHNlICAvKiAyIGJhbmtzIHBlciBub2RlICovCisjICBkZWZpbmUgTE9DQUxfTUFQX05SKGFkZHIpIFwKKyAgICAgICAoKCh1bnNpZ25lZCBsb25nKShhZGRyKSAmIDB4MDFmZmZmZmYpID4+IFBBR0VfU0hJRlQpCisjIGVuZGlmCisKKyNlbHNlCisKKyMgZGVmaW5lIFBGTl9UT19OSUQoYWRkcikJKDApCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FkMGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9wYXJhbS5oCkBAIC0wLDAgKzEsOSBAQAorLyogaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9wYXJhbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNCBDb2FzdGFsIEVudmlyb25tZW50YWwgU3lzdGVtcworICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3JlZ2lzdGVycy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9yZWdpc3RlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWRiMjJlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9yZWdpc3RlcnMuaApAQCAtMCwwICsxLDE5MyBAQAorLyogaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9yZWdpc3RlcnMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgQ29hc3RhbCBFbnZpcm9ubWVudGFsIFN5c3RlbXMKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgTG9naWMgUHJvZHVjdCBEZXZlbG9wbWVudAorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9jb25zdGFudHMuaD4KKworI2lmbmRlZiBfX0FTTV9BUkNIX1JFR0lTVEVSU19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUkVHSVNURVJTX0gKKworCisJLyogUGh5c2ljYWwgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzZXMgKi8KKworI2RlZmluZSBBQzk3X1BIWVMJKDB4ODAwMDAwMDApCS8qIEFDOTcgQ29udHJvbGxlciAqLworI2RlZmluZSBNTUNfUEhZUwkoMHg4MDAwMDEwMCkJLyogTXVsdGltZWRpYSBDYXJkIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgVVNCX1BIWVMJKDB4ODAwMDAyMDApCS8qIFVTQiBDbGllbnQgKi8KKyNkZWZpbmUgU0NJX1BIWVMJKDB4ODAwMDAzMDApCS8qIFNlY3VyZSBDYXJkIEludGVyZmFjZSAqLworI2RlZmluZSBDU0NfUEhZUwkoMHg4MDAwMDQwMCkJLyogQ2xvY2svU3RhdGUgQ29udHJvbGxlciAgKi8KKyNkZWZpbmUgSU5UQ19QSFlTCSgweDgwMDAwNTAwKQkvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLworI2RlZmluZSBVQVJUMV9QSFlTCSgweDgwMDAwNjAwKQkvKiBVQVJUMSBDb250cm9sbGVyICovCisjZGVmaW5lIFNJUl9QSFlTCSgweDgwMDAwNjAwKQkvKiBJUiBDb250cm9sbGVyLCBzYW1lIGFyZSBVQVJUMSAqLworI2RlZmluZSBVQVJUMl9QSFlTCSgweDgwMDAwNzAwKQkvKiBVQVJUMiBDb250cm9sbGVyICovCisjZGVmaW5lIFVBUlQzX1BIWVMJKDB4ODAwMDA4MDApCS8qIFVBUlQzIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgRENEQ19QSFlTCSgweDgwMDAwOTAwKQkvKiBEQyB0byBEQyBDb250cm9sbGVyICovCisjZGVmaW5lIEFDSV9QSFlTCSgweDgwMDAwYTAwKQkvKiBBdWRpbyBDb2RlYyBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgU1NQX1BIWVMJKDB4ODAwMDBiMDApCS8qIFN5bmNocm9ub3VzIC4uLiAqLworI2RlZmluZSBUSU1FUl9QSFlTCSgweDgwMDAwYzAwKQkvKiBUaW1lciBDb250cm9sbGVyICovCisjZGVmaW5lIFJUQ19QSFlTCSgweDgwMDAwZDAwKQkvKiBSZWFsLXRpbWUgQ2xvY2sgKi8KKyNkZWZpbmUgR1BJT19QSFlTCSgweDgwMDAwZTAwKQkvKiBHZW5lcmFsIFB1cnBvc2UgSU8gKi8KKyNkZWZpbmUgQk1JX1BIWVMJKDB4ODAwMDBmMDApCS8qIEJhdHRlcnkgTW9uaXRvciBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgV0RUX1BIWVMJKDB4ODAwMDE0MDApCS8qIFdhdGNoZG9nIFRpbWVyICovCisjZGVmaW5lIFNNQ19QSFlTCSgweDgwMDAyMDAwKQkvKiBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgU0RSQ19QSFlTCSgweDgwMDAyNDAwKQkvKiBTRFJBTSBDb250cm9sbGVyICovCisjZGVmaW5lIERNQUNfUEhZUwkoMHg4MDAwMjgwMCkJLyogRE1BIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQ0xDRENfUEhZUwkoMHg4MDAwMzAwMCkJLyogQ29sb3IgTENEIENvbnRyb2xsZXIgKi8KKworCS8qIFBoeXNpY2FsIHJlZ2lzdGVycyBvZiB0aGUgTEg3QTQwNCAqLworCisjZGVmaW5lIFZJQzFfUEhZUwkoMHg4MDAwODAwMCkJLyogVmVjdG9yZWQgSW50ZXJydXB0IENvbnRyb2xsZXIgMSAqLworI2RlZmluZSBVU0JIX1BIWVMJKDB4ODAwMDkwMDApCS8qIFVTQiBPSENJIGhvc3QgY29udHJvbGxlciAqLworI2RlZmluZSBWSUMyX1BIWVMJKDB4ODAwMGEwMDApCS8qIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyIDIgKi8KKworLyojZGVmaW5lIEtCRF9QSFlTCSgweDgwMDAwZTAwKSAqLworLyojZGVmaW5lIExDRElDUF9QSFlTCSgweDgwMDAxMDAwKSAqLworCisKKwkvKiBDbG9jay9TdGF0ZSBDb250cm9sbGVyIHJlZ2lzdGVyICovCisKKyNkZWZpbmUgQ1NDX1BXUkNOVAlfX1JFRyhDU0NfUEhZUyArIDB4MDQpIC8qIFBvd2VyIGNvbnRyb2wgKi8KKworI2RlZmluZSBDU0NfUFdSQ05UX1VTQkhfRU4JKDE8PDI4KQkvKiBVU0IgSG9zdCBwb3dlciBlbmFibGUgKi8KKworCisJLyogSW50ZXJydXB0IENvbnRyb2xsZXIgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgSU5UQ19JTlRTUglfX1JFRyhJTlRDX1BIWVMgKyAweDAwKQkvKiBTdGF0dXMgKi8KKyNkZWZpbmUgSU5UQ19JTlRSU1IJX19SRUcoSU5UQ19QSFlTICsgMHgwNCkJLyogUmF3IFN0YXR1cyAqLworI2RlZmluZSBJTlRDX0lOVEVOUwlfX1JFRyhJTlRDX1BIWVMgKyAweDA4KQkvKiBFbmFibGUgU2V0ICovCisjZGVmaW5lIElOVENfSU5URU5DCV9fUkVHKElOVENfUEhZUyArIDB4MGMpCS8qIEVuYWJsZSBDbGVhciAqLworCisKKwkvKiBWZWN0b3JlZCBJbnRlcnJ1cHRlZCBDb250cm9sbGVyIHJlZ2lzdGVycyAqLworCisjZGVmaW5lIFZJQzFfSVJRU1RBVFVTCV9fUkVHKFZJQzFfUEhZUyArIDB4MDApCisjZGVmaW5lIFZJQzFfRklRU1RBVFVTCV9fUkVHKFZJQzFfUEhZUyArIDB4MDQpCisjZGVmaW5lIFZJQzFfUkFXSU5UUglfX1JFRyhWSUMxX1BIWVMgKyAweDA4KQorI2RlZmluZSBWSUMxX0lOVFNFTAlfX1JFRyhWSUMxX1BIWVMgKyAweDBjKQorI2RlZmluZSBWSUMxX0lOVEVOCV9fUkVHKFZJQzFfUEhZUyArIDB4MTApCisjZGVmaW5lIFZJQzFfSU5URU5DTFIJX19SRUcoVklDMV9QSFlTICsgMHgxNCkKKyNkZWZpbmUgVklDMV9TT0ZUSU5UCV9fUkVHKFZJQzFfUEhZUyArIDB4MTgpCisjZGVmaW5lIFZJQzFfU09GVElOVENMUglfX1JFRyhWSUMxX1BIWVMgKyAweDFjKQorI2RlZmluZSBWSUMxX1BST1RFQ1QJX19SRUcoVklDMV9QSFlTICsgMHgyMCkKKyNkZWZpbmUgVklDMV9WRUNUQUREUglfX1JFRyhWSUMxX1BIWVMgKyAweDMwKQorI2RlZmluZSBWSUMxX05WQUREUglfX1JFRyhWSUMxX1BIWVMgKyAweDM0KQorI2RlZmluZSBWSUMxX1ZBRDAJX19SRUcoVklDMV9QSFlTICsgMHgxMDApCisjZGVmaW5lIFZJQzFfVkVDVENOVEwwCV9fUkVHKFZJQzFfUEhZUyArIDB4MjAwKQorI2RlZmluZSBWSUMyX0lSUVNUQVRVUwlfX1JFRyhWSUMyX1BIWVMgKyAweDAwKQorI2RlZmluZSBWSUMyX0ZJUVNUQVRVUwlfX1JFRyhWSUMyX1BIWVMgKyAweDA0KQorI2RlZmluZSBWSUMyX1JBV0lOVFIJX19SRUcoVklDMl9QSFlTICsgMHgwOCkKKyNkZWZpbmUgVklDMl9JTlRTRUwJX19SRUcoVklDMl9QSFlTICsgMHgwYykKKyNkZWZpbmUgVklDMl9JTlRFTglfX1JFRyhWSUMyX1BIWVMgKyAweDEwKQorI2RlZmluZSBWSUMyX0lOVEVOQ0xSCV9fUkVHKFZJQzJfUEhZUyArIDB4MTQpCisjZGVmaW5lIFZJQzJfU09GVElOVAlfX1JFRyhWSUMyX1BIWVMgKyAweDE4KQorI2RlZmluZSBWSUMyX1NPRlRJTlRDTFIJX19SRUcoVklDMl9QSFlTICsgMHgxYykKKyNkZWZpbmUgVklDMl9QUk9URUNUCV9fUkVHKFZJQzJfUEhZUyArIDB4MjApCisjZGVmaW5lIFZJQzJfVkVDVEFERFIJX19SRUcoVklDMl9QSFlTICsgMHgzMCkKKyNkZWZpbmUgVklDMl9OVkFERFIJX19SRUcoVklDMl9QSFlTICsgMHgzNCkKKyNkZWZpbmUgVklDMl9WQUQwCV9fUkVHKFZJQzJfUEhZUyArIDB4MTAwKQorI2RlZmluZSBWSUMyX1ZFQ1RDTlRMMAlfX1JFRyhWSUMyX1BIWVMgKyAweDIwMCkKKworI2RlZmluZSBWSUNfQ05UTF9FTkFCTEUJKDB4MjApCisKKwkvKiBVU0IgSG9zdCByZWdpc3RlcnMgKE9wZW4gSENJIGNvbXBhdGlibGUpICovCisKKyNkZWZpbmUgVVNCSF9DTURTVEFUVVMJX19SRUcoVVNCSF9QSFlTICsgMHgwOCkKKworCisJLyogR1BJTyByZWdpc3RlcnMgKi8KKworI2RlZmluZSBHUElPX0lOVFRZUEUxCV9fUkVHKEdQSU9fUEhZUyArIDB4NGMpCS8qIEludGVycnVwdCBUeXBlIDEgKEVkZ2UpICovCisjZGVmaW5lIEdQSU9fSU5UVFlQRTIJX19SRUcoR1BJT19QSFlTICsgMHg1MCkJLyogSW50ZXJydXB0IFR5cGUgMiAqLworI2RlZmluZSBHUElPX0dQSU9GRU9JCV9fUkVHKEdQSU9fUEhZUyArIDB4NTQpCS8qIEdQSU8gRW5kLW9mLUludGVycnVwdCAqLworI2RlZmluZSBHUElPX0dQSU9JTlRFTglfX1JFRyhHUElPX1BIWVMgKyAweDU4KQkvKiBHUElPIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgR1BJT19JTlRTVEFUVVMJX19SRUcoR1BJT19QSFlTICsgMHg1YykJLyogR1BJTyBJbnRlcnJ1cHQgU3RhdHVzICovCisKKworCS8qIFN0YXRpYyBNZW1vcnkgQ29udHJvbGxlciByZWdpc3RlcnMgKi8KKworI2RlZmluZSBTTUNfQkNSMAlfX1JFRyhTTUNfUEhZUyArIDB4MDApCS8qIEJhbmsgMCBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIFNNQ19CQ1IxCV9fUkVHKFNNQ19QSFlTICsgMHgwNCkJLyogQmFuayAxIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgU01DX0JDUjIJX19SRUcoU01DX1BIWVMgKyAweDA4KQkvKiBCYW5rIDIgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBTTUNfQkNSMwlfX1JFRyhTTUNfUEhZUyArIDB4MEMpCS8qIEJhbmsgMyBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIFNNQ19CQ1I2CV9fUkVHKFNNQ19QSFlTICsgMHgxOCkJLyogQmFuayA2IENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgU01DX0JDUjcJX19SRUcoU01DX1BIWVMgKyAweDFjKQkvKiBCYW5rIDcgQ29uZmlndXJhdGlvbiAqLworCisKKyNpZmRlZiBDT05GSUdfTUFDSF9LRVY3QTQwMAorIyBkZWZpbmUgQ1BMRF9SRF9PUFRfRElQX1NXCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwMCkgLyogUmVhZCBPcHRpb24gU1cgKi8KKyMgZGVmaW5lIENQTERfV1JfSU9fQlJEX0NUTAlfX1JFRzE2KENQTERfUEhZUyArIDB4MDApIC8qIFdyaXRlIENvbnRyb2wgKi8KKyMgZGVmaW5lIENQTERfUkRfUEJfS0VZUwlfX1JFRzE2KENQTERfUEhZUyArIDB4MDIpIC8qIFJlYWQgQnRuIEtleXMgKi8KKyMgZGVmaW5lIENQTERfTEFUQ0hFRF9JTlRTCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwNCkgLyogUmVhZCBJTlRSIHN0YXQuICovCisjIGRlZmluZSBDUExEX0NMX0lOVAkJX19SRUcxNihDUExEX1BIWVMgKyAweDA0KSAvKiBDbGVhciBJTlRSIHN0YXQgKi8KKyMgZGVmaW5lIENQTERfQk9PVF9NTUNfU1RBVFVTCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwNikgLyogUi9PICovCisjIGRlZmluZSBDUExEX1JEX0tQRF9ST1dfU0VOU0UJX19SRUcxNihDUExEX1BIWVMgKyAweDA4KQorIyBkZWZpbmUgQ1BMRF9XUl9QQl9JTlRfTUFTSwlfX1JFRzE2KENQTERfUEhZUyArIDB4MDgpCisjIGRlZmluZSBDUExEX1JEX0JSRF9ESVNQX1NXCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwYSkKKyMgZGVmaW5lIENQTERfV1JfRVhUX0lOVF9NQVNLCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwYSkKKyMgZGVmaW5lIENQTERfTENEX1BXUl9DTlRMCV9fUkVHMTYoQ1BMRF9QSFlTICsgMHgwYykKKyMgZGVmaW5lIENQTERfU0VWRU5fU0VHCQlfX1JFRzE2KENQTERfUEhZUyArIDB4MGUpIC8qIDcgc2VnLiBMRUQgbWFzayAqLworCisjZW5kaWYKKworI2lmIGRlZmluZWQgKENPTkZJR19NQUNIX0xQRDdBNDAwKSB8fCBkZWZpbmVkIChDT05GSUdfTUFDSF9MUEQ3QTQwNCkKKyMgZGVmaW5lIENQTERfQ09OVFJPTAkJX19SRUc4KENQTEQwMl9QSFlTKQorIyBkZWZpbmUgQ1BMRF9TUElfREFUQQkJX19SRUc4KENQTEQwNl9QSFlTKQorIyBkZWZpbmUgQ1BMRF9TUElfQ09OVFJPTAlfX1JFRzgoQ1BMRDA4X1BIWVMpCisjIGRlZmluZSBDUExEX1NQSV9FRVBST00JX19SRUc4KENQTEQwQV9QSFlTKQorIyBkZWZpbmUgQ1BMRF9JTlRFUlJVUFRTCV9fUkVHOChDUExEMENfUEhZUykgLyogSVJRIG1hc2svc3RhdHVzICovCisjIGRlZmluZSBDUExEX0JPT1RfTU9ERQkJX19SRUc4KENQTEQwRV9QSFlTKQorIyBkZWZpbmUgQ1BMRF9GTEFTSAkJX19SRUc4KENQTEQxMF9QSFlTKQorIyBkZWZpbmUgQ1BMRF9QT1dFUl9NR01UCV9fUkVHOChDUExEMTJfUEhZUykKKyMgZGVmaW5lIENQTERfUkVWSVNJT04JCV9fUkVHOChDUExEMTRfUEhZUykKKyMgZGVmaW5lIENQTERfR1BJT19FWFQJCV9fUkVHOChDUExEMTZfUEhZUykKKyMgZGVmaW5lIENQTERfR1BJT19EQVRBCQlfX1JFRzgoQ1BMRDE4X1BIWVMpCisjIGRlZmluZSBDUExEX0dQSU9fRElSCQlfX1JFRzgoQ1BMRDFBX1BIWVMpCisjZW5kaWYKKworCisJLyogVGltZXIgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgVElNRVJfTE9BRDEJX19SRUcoVElNRVJfUEhZUyArIDB4MDApIC8qIFRpbWVyIDEgaW5pdGlhbCB2YWx1ZSAqLworI2RlZmluZSBUSU1FUl9WQUxVRTEJX19SRUcoVElNRVJfUEhZUyArIDB4MDQpIC8qIFRpbWVyIDEgY3VycmVudCB2YWx1ZSAqLworI2RlZmluZSBUSU1FUl9DT05UUk9MMQlfX1JFRyhUSU1FUl9QSFlTICsgMHgwOCkgLyogVGltZXIgMSBjb250cm9sIHdvcmQgKi8KKyNkZWZpbmUgVElNRVJfRU9JMQlfX1JFRyhUSU1FUl9QSFlTICsgMHgwYykgLyogVGltZXIgMSBpbnRlcnJ1cHQgY2xlYXIgKi8KKworI2RlZmluZSBUSU1FUl9MT0FEMglfX1JFRyhUSU1FUl9QSFlTICsgMHgyMCkgLyogVGltZXIgMiBpbml0aWFsIHZhbHVlICovCisjZGVmaW5lIFRJTUVSX1ZBTFVFMglfX1JFRyhUSU1FUl9QSFlTICsgMHgyNCkgLyogVGltZXIgMiBjdXJyZW50IHZhbHVlICovCisjZGVmaW5lIFRJTUVSX0NPTlRST0wyCV9fUkVHKFRJTUVSX1BIWVMgKyAweDI4KSAvKiBUaW1lciAyIGNvbnRyb2wgd29yZCAqLworI2RlZmluZSBUSU1FUl9FT0kyCV9fUkVHKFRJTUVSX1BIWVMgKyAweDJjKSAvKiBUaW1lciAyIGludGVycnVwdCBjbGVhciAqLworCisjZGVmaW5lIFRJTUVSX0JVWlpDT04JX19SRUcoVElNRVJfUEhZUyArIDB4NDApIC8qIEJ1enplciBjb25maWd1cmF0aW9uICovCisKKyNkZWZpbmUgVElNRVJfTE9BRDMJX19SRUcoVElNRVJfUEhZUyArIDB4ODApIC8qIFRpbWVyIDMgaW5pdGlhbCB2YWx1ZSAqLworI2RlZmluZSBUSU1FUl9WQUxVRTMJX19SRUcoVElNRVJfUEhZUyArIDB4ODQpIC8qIFRpbWVyIDMgY3VycmVudCB2YWx1ZSAqLworI2RlZmluZSBUSU1FUl9DT05UUk9MMwlfX1JFRyhUSU1FUl9QSFlTICsgMHg4OCkgLyogVGltZXIgMyBjb250cm9sIHdvcmQgKi8KKyNkZWZpbmUgVElNRVJfRU9JMwlfX1JFRyhUSU1FUl9QSFlTICsgMHg4YykgLyogVGltZXIgMyBpbnRlcnJ1cHQgY2xlYXIgKi8KKworI2RlZmluZSBUSU1FUl9DX0VOQUJMRQkJKDE8PDcpCisjZGVmaW5lIFRJTUVSX0NfUEVSSU9ESUMJKDE8PDYpCisjZGVmaW5lIFRJTUVSX0NfRlJFRVJVTk5JTkcJKDApCisjZGVmaW5lIFRJTUVSX0NfMktIWgkJKDB4MDApCQkvKiAxLjk4NiBrSHogKi8KKyNkZWZpbmUgVElNRVJfQ181MDhLSFoJCSgweDA4KQorCisJLyogR1BJTyByZWdpc3RlcnMgKi8KKworI2RlZmluZSBHUElPX1BGREQJCV9fUkVHKEdQSU9fUEhZUyArIDB4MzQpCS8qIFBGIGRpcmVjdGlvbiAqLworI2RlZmluZSBHUElPX0lOVFRZUEUxCQlfX1JFRyhHUElPX1BIWVMgKyAweDRjKQkvKiBJUlEgZWRnZSBvciBsdmwgICovCisjZGVmaW5lIEdQSU9fSU5UVFlQRTIJCV9fUkVHKEdQSU9fUEhZUyArIDB4NTApCS8qIElSUSBhY3RpdiBoaS9sbyAqLworI2RlZmluZSBHUElPX0dQSU9GRU9JCQlfX1JFRyhHUElPX1BIWVMgKyAweDU0KQkvKiBHUElPRiBlbmQgb2YgSVJRICovCisjZGVmaW5lIEdQSU9fR1BJT0ZJTlRFTgkJX19SRUcoR1BJT19QSFlTICsgMHg1OCkJLyogR1BJT0YgSVJRIGVuYWJsZSAqLworI2RlZmluZSBHUElPX0lOVFNUQVRVUwkJX19SRUcoR1BJT19QSFlTICsgMHg1YykJLyogR1BJT0YgSVJRIGxhdGNoICovCisjZGVmaW5lIEdQSU9fUkFXSU5UU1RBVFVTCV9fUkVHKEdQSU9fUEhZUyArIDB4NjApCS8qIEdQSU9GIElSUSByYXcgKi8KKworCisjZW5kaWYgIC8qIF9BU01fQVJDSF9SRUdJU1RFUlNfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWRmOGFhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC9zeXN0ZW0uaApAQCAtMCwwICsxLDE5IEBACisvKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3N5c3RlbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNCBDb2FzdGFsIEVudmlyb25tZW50YWwgU3lzdGVtcworICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2lkbGUodm9pZCkKK3sKKwljcHVfZG9faWRsZSAoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWNwdV9yZXNldCAoMCk7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE3MjZiNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvdGltZXguaApAQCAtMCwwICsxLDE3IEBACisvKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3RpbWV4LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGFzbS9hcmNoL2NvbnN0YW50cy5oPgorCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJKFBMTF9DTE9DSy82LzE2KQorCisvKgorI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCTM2ODY0MDAKKyovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWxoN2E0MHgvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOGFiNjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDQzIEBACisvKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3VuY29tcHJlc3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgQ29hc3RhbCBFbnZpcm9ubWVudGFsIFN5c3RlbXMKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8YXNtL2FyY2gvcmVnaXN0ZXJzLmg+CisKKyNpZm5kZWYgVUFSVF9SX0RBVEEKKyMgZGVmaW5lIFVBUlRfUl9EQVRBCSgweDAwKQorI2VuZGlmCisjaWZuZGVmIFVBUlRfUl9TVEFUVVMKKyMgZGVmaW5lIFVBUlRfUl9TVEFUVVMJKDB4MTApCisjZW5kaWYKKyNkZWZpbmUgblR4UmR5ICAJKDB4MjApCS8qIE5vdCBUeFJlYWR5IChsaXRlcmFsbHkgVHggRklGTyBmdWxsKSAqLworCisJLyogQWNjZXNzIFVBUlQgd2l0aCBwaHlzaWNhbCBhZGRyZXNzZXMgYmVmb3JlIE1NVSBpcyBzZXR1cCAqLworI2RlZmluZSBVQVJUX1NUQVRVUyAoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nKikgKFVBUlQyX1BIWVMgKyBVQVJUX1JfU1RBVFVTKSkKKyNkZWZpbmUgVUFSVF9EQVRBICAgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyopIChVQVJUMl9QSFlTICsgVUFSVF9SX0RBVEEpKQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMgKGNoYXIgY2gpCit7CisJd2hpbGUgKFVBUlRfU1RBVFVTICYgblR4UmR5KQorCQk7CisJVUFSVF9EQVRBID0gY2g7Cit9CisKK3N0YXRpYyB2b2lkIHB1dHN0ciAoY29uc3QgY2hhciogc3opCit7CisJZm9yICg7ICpzejsgKytzeikgeworCQlwdXRjICgqc3opOworCQlpZiAoKnN6ID09ICdcbicpCisJCQlwdXRjICgnXHInKTsKKwl9Cit9CisKKwkvKiBOVUxMIGZ1bmN0aW9uczsgd2UgZG9uJ3QgcHJlc2VudGx5IG5lZWQgdGhlbSAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1saDdhNDB4L3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWM2MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC92bWFsbG9jLmgKQEAgLTAsMCArMSwyMSBAQAorLyogaW5jbHVkZS9hc20tYXJtL2FyY2gtbGg3YTQweC92bWFsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0IENvYXN0YWwgRW52aXJvbm1lbnRhbCBTeXN0ZW1zCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyCisgKiB0aGUgcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdAorICogbWVhbnMgdGhhdCBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUKKyAqIGNhdWdodC4gIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgKG9uZSBwYWdlKQorICogYmV0d2VlbiBlYWNoIHZtYWxsb2NlZCBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4ZTgwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2FpYzIzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2FpYzIzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwYmFjMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYWljMjMuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYWljMjMuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBUTFYzMjBBSUMyMyBhdWRpbyBjb2RlYworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBTdGV2ZSBKb2huc29uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfQUlDMjNfSAorI2RlZmluZSBfX0FTTV9BUkNIX0FJQzIzX0gKKworLy8gQ29kZWMgVExWMzIwQUlDMjMKKyNkZWZpbmUgTEVGVF9MSU5FX1ZPTFVNRV9BRERSCQkweDAwCisjZGVmaW5lIFJJR0hUX0xJTkVfVk9MVU1FX0FERFIJCTB4MDEKKyNkZWZpbmUgTEVGVF9DSEFOTkVMX1ZPTFVNRV9BRERSCTB4MDIKKyNkZWZpbmUgUklHSFRfQ0hBTk5FTF9WT0xVTUVfQUREUgkweDAzCisjZGVmaW5lIEFOQUxPR19BVURJT19DT05UUk9MX0FERFIJMHgwNAorI2RlZmluZSBESUdJVEFMX0FVRElPX0NPTlRST0xfQUREUgkweDA1CisjZGVmaW5lIFBPV0VSX0RPV05fQ09OVFJPTF9BRERSCQkweDA2CisjZGVmaW5lIERJR0lUQUxfQVVESU9fRk9STUFUX0FERFIJMHgwNworI2RlZmluZSBTQU1QTEVfUkFURV9DT05UUk9MX0FERFIJMHgwOAorI2RlZmluZSBESUdJVEFMX0lOVEVSRkFDRV9BQ1RfQUREUgkweDA5CisjZGVmaW5lIFJFU0VUX0NPTlRST0xfQUREUgkJMHgwRgorCisvLyBMZWZ0IChyaWdodCkgbGluZSBpbnB1dCB2b2x1bWUgY29udHJvbCByZWdpc3RlcgorI2RlZmluZSBMUlNfRU5BQkxFRAkJCTB4MDEwMAorI2RlZmluZSBMSU1fTVVURUQJCQkweDAwODAKKyNkZWZpbmUgTElWX0RFRkFVTFQJCQkweDAwMTcKKyNkZWZpbmUgTElWX01BWAkJCQkweDAwMWYKKyNkZWZpbmUgTElWX01JTgkJCQkweDAwMDAKKworLy8gTGVmdCAocmlnaHQpIGNoYW5uZWwgaGVhZHBob25lIHZvbHVtZSBjb250cm9sIHJlZ2lzdGVyCisjZGVmaW5lIExaQ19PTgkJCQkweDAwODAKKyNkZWZpbmUgTEhWX0RFRkFVTFQJCQkweDAwNzkKKyNkZWZpbmUgTEhWX01BWAkJCQkweDAwN2YKKyNkZWZpbmUgTEhWX01JTgkJCQkweDAwMDAKKworLy8gQW5hbG9nIGF1ZGlvIHBhdGggY29udHJvbCByZWdpc3RlcgorI2RlZmluZSBTVEVfRU5BQkxFRAkJCTB4MDAyMAorI2RlZmluZSBEQUNfU0VMRUNURUQJCQkweDAwMTAKKyNkZWZpbmUgQllQQVNTX09OCQkJMHgwMDA4CisjZGVmaW5lIElOU0VMX01JQwkJCTB4MDAwNAorI2RlZmluZSBNSUNNX01VVEVECQkJMHgwMDAyCisjZGVmaW5lIE1JQ0JfMjBEQgkJCTB4MDAwMQorCisvLyBEaWdpdGFsIGF1ZGlvIHBhdGggY29udHJvbCByZWdpc3RlcgorI2RlZmluZSBEQUNNX01VVEUJCQkweDAwMDgKKyNkZWZpbmUgREVFTVBfMzJLCQkJMHgwMDAyCisjZGVmaW5lIERFRU1QXzQ0SwkJCTB4MDAwNAorI2RlZmluZSBERUVNUF80OEsJCQkweDAwMDYKKyNkZWZpbmUgQURDSFBfT04JCQkweDAwMDEKKworLy8gUG93ZXIgY29udHJvbCBkb3duIHJlZ2lzdGVyCisjZGVmaW5lIERFVklDRV9QT1dFUl9PRkYJICAJMHgwMDgwCisjZGVmaW5lIENMS19PRkYJCQkJMHgwMDQwCisjZGVmaW5lIE9TQ19PRkYJCQkJMHgwMDIwCisjZGVmaW5lIE9VVF9PRkYJCQkJMHgwMDEwCisjZGVmaW5lIERBQ19PRkYJCQkJMHgwMDA4CisjZGVmaW5lIEFEQ19PRkYJCQkJMHgwMDA0CisjZGVmaW5lIE1JQ19PRkYJCQkJMHgwMDAyCisjZGVmaW5lIExJTkVfT0ZGCQkJMHgwMDAxCisKKy8vIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlIHJlZ2lzdGVyCisjZGVmaW5lIE1TX01BU1RFUgkJCTB4MDA0MAorI2RlZmluZSBMUlNXQVBfT04JCQkweDAwMjAKKyNkZWZpbmUgTFJQX09OCQkJCTB4MDAxMAorI2RlZmluZSBJV0xfMTYJCQkJMHgwMDAwCisjZGVmaW5lIElXTF8yMAkJCQkweDAwMDQKKyNkZWZpbmUgSVdMXzI0CQkJCTB4MDAwOAorI2RlZmluZSBJV0xfMzIJCQkJMHgwMDBDCisjZGVmaW5lIEZPUl9JMlMJCQkJMHgwMDAyCisjZGVmaW5lIEZPUl9EU1AJCQkJMHgwMDAzCisKKy8vIFNhbXBsZSByYXRlIGNvbnRyb2wgcmVnaXN0ZXIKKyNkZWZpbmUgQ0xLT1VUX0hBTEYJCQkweDAwODAKKyNkZWZpbmUgQ0xLSU5fSEFMRgkJCTB4MDA0MAorI2RlZmluZSBCT1NSXzM4NGZzCQkJMHgwMDAyIC8vIEJPU1JfMjcyZnMgd2hlbiBpbiBVU0IgbW9kZQorI2RlZmluZSBVU0JfQ0xLX09OCQkJMHgwMDAxCisjZGVmaW5lIFNSX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgMHhmCisjZGVmaW5lIENMS09VVF9TSElGVCAgICAgICAgICAgICAgICAgICAgNworI2RlZmluZSBDTEtJTl9TSElGVCAgICAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgU1JfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIEJPU1JfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgMQorCisvLyBEaWdpdGFsIGludGVyZmFjZSByZWdpc3RlcgorI2RlZmluZSBBQ1RfT04JCQkJMHgwMDAxCisKKyNkZWZpbmUgVExWMzIwQUlDMjNJRDEgICAgICAgICAgICAgICAgICAoMHgxYSkJLy8gY3MgbG93CisjZGVmaW5lIFRMVjMyMEFJQzIzSUQyICAgICAgICAgICAgICAgICAgKDB4MWIpCS8vIGNzIGhpZ2gKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfQUlDMjNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMi5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjAwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDIuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQMTYxMCBIMiBib2FyZC4KKyAqCisgKiBDbGVhbnVwIGZvciBMaW51eC0yLjYgYnkgRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBkZS5ib3NjaC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfSDJfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfSDJfSAorCisvKiBQbGFjZWhvbGRlciBmb3IgSDIgc3BlY2lmaWMgZGVmaW5lcyAqLworCisvKiBBdCBPTUFQMTYxMCBJbm5vdmF0b3IgdGhlIEV0aGVybmV0IGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBDUzEgKi8KKyNkZWZpbmUgT01BUDE2MTBfRVRIUl9TVEFSVAkJMHgwNDAwMDMwMAorCisvKiBJbnRlbCBTVFJBVEEgTk9SIGZsYXNoIGF0IENTMyBvciBDUzJCKE5BTkQgQm9vdCkgKi8KKyNkZWZpbmUgT01BUF9OT1JfRkxBU0hfU0laRSAgICAgICAgICAgICBTWl8zMk0KKyNkZWZpbmUgT01BUF9OT1JfRkxBU0hfU1RBUlQxICAgICAgICAgICAweDBDMDAwMDAwIC8qIENTMyAqLworI2RlZmluZSBPTUFQX05PUl9GTEFTSF9TVEFSVDIgICAgICAgICAgIDB4MEEwMDAwMDAgLyogQ1MyQiAqLworCisvKiBTYW1zdW5nIE5BTkQgZmxhc2ggYXQgQ1MyQiBvciBDUzMoTkFORCBCb290KSAqLworI2RlZmluZSBPTUFQX05BTkRfRkxBU0hfU1RBUlQxICAgICAgICAgICAweDBBMDAwMDAwIC8qIENTMkIgKi8KKyNkZWZpbmUgT01BUF9OQU5EX0ZMQVNIX1NUQVJUMiAgICAgICAgICAgMHgwQzAwMDAwMCAvKiBDUzMgKi8KKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVBfSDJfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWgzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRkMWNkMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaDMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oMy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJpZGdlUnVuLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9IM19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9IM19ICisKKy8qIEluIE9NQVAxNzEwIEgzIHRoZSBFdGhlcm5ldCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gQ1MxICovCisjZGVmaW5lIE9NQVAxNzEwX0VUSFJfU1RBUlQJCTB4MDQwMDAzMDAKKworLyogSW50ZWwgU1RSQVRBIE5PUiBmbGFzaCBhdCBDUzMgb3IgQ1MyQihOQU5EIEJvb3QpICovCisjZGVmaW5lIE9NQVBfTk9SX0ZMQVNIX1NJWkUgICAgICAgICAgICAgU1pfMzJNCisjZGVmaW5lIE9NQVBfTk9SX0ZMQVNIX1NUQVJUMSAJCTB4MEMwMDAwMDAgLyogQ1MzICovCisjZGVmaW5lIE9NQVBfTk9SX0ZMQVNIX1NUQVJUMiAJCTB4MEEwMDAwMDAgLyogQ1MyQiAqLworCisvKiBTYW1zdW5nIE5BTkQgZmxhc2ggYXQgQ1MyQiBvciBDUzMoTkFORCBCb290KSAqLworI2RlZmluZSBPTUFQX05BTkRfRkxBU0hfU1RBUlQxICAgICAgICAgICAweDBBMDAwMDAwIC8qIENTMkIgKi8KKyNkZWZpbmUgT01BUF9OQU5EX0ZMQVNIX1NUQVJUMiAgICAgICAgICAgMHgwQzAwMDAwMCAvKiBDUzMgKi8KKworI2RlZmluZSBNQVhJUlFOVU0JCQkoSUhfQk9BUkRfQkFTRSkKKyNkZWZpbmUgTUFYRklRTlVNCQkJTUFYSVJRTlVNCisjZGVmaW5lIE1BWFNXSU5VTQkJCU1BWElSUU5VTQorCisjZGVmaW5lIE5SX0lSUVMJCQkJKE1BWElSUU5VTSArIDEpCisKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVBfSDNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oNC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oNC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTM4ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1oNC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWg0LmgKKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgVEkgT01BUDE2MTAgSDQgYm9hcmQuCisgKgorICogSW5pdGlhbCBjcmVhdGlvbiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9INF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9INF9ICisKKy8qIFBsYWNlaG9sZGVyIGZvciBINCBzcGVjaWZpYyBkZWZpbmVzICovCisKKyNlbmRpZiAvKiAgX19BU01fQVJDSF9PTUFQX0g0X0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1pbm5vdmF0b3IuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaW5ub3ZhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxYWJhZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaW5ub3ZhdG9yLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtaW5ub3ZhdG9yLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUmlkZ2VSdW4sIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfSU5OT1ZBVE9SX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0lOTk9WQVRPUl9ICisKKyNpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9PTUFQMTUxMCkKKworI2lmbmRlZiBPTUFQX1NEUkFNX0RFVklDRQorI2RlZmluZSBPTUFQX1NEUkFNX0RFVklDRQkJCUQyNTZNXzFYMTZfNEIKKyNlbmRpZgorCisjZGVmaW5lIE9NQVAxNTEwUDFfSU1JRl9QUklfVkFMVUUJCTB4MDAKKyNkZWZpbmUgT01BUDE1MTBQMV9FTUlGU19QUklfVkFMVUUJCTB4MDAKKyNkZWZpbmUgT01BUDE1MTBQMV9FTUlGRl9QUklfVkFMVUUJCTB4MDAKKworLyoKKyAqIFRoZXNlIGRlZmluaXRpb25zIGRlZmluZSBhbiBhcmVhIG9mIEZMQVNIIHNldCBhc2lkZQorICogZm9yIHRoZSB1c2Ugb2YgTVREL0pGRlMyLiBUaGlzIGlzIHRoZSBhcmVhIG9mIGZsYXNoCisgKiB0aGF0IGEgSkZGUzIgZmlsZXN5c3RlbSB3aWxsIHJlc2lkZSB3aGljaCBpcyBtb3VudGVkCisgKiBhdCBib290IHdpdGggdGhlICJyb290PS9kZXYvbXRkYmxvY2svMCBydyIKKyAqIGNvbW1hbmQgbGluZSBvcHRpb24uIFRoZSBmbGFzaCBhZGRyZXNzIHVzZWQgaGVyZSBtdXN0CisgKiBmYWxsIHdpdGhpbiB0aGUgbGVnYWwgcmFuZ2UgZGVmaW5lZCBieSBycmxvYWQgZm9yIHN0b3JpbmcKKyAqIHRoZSBmaWxlc3lzdGVtIGNvbXBvbmVudC4gVGhpcyBhZGRyZXNzIHdpbGwgYmUgc3VmZmljaWVudGx5CisgKiBkZWVwIGludG8gdGhlIG92ZXJhbGwgZmxhc2ggcmFuZ2UgdG8gYXZvaWQgdGhlIG90aGVyCisgKiBjb21wb25lbnRzIGFsc28gc3RvcmVkIGluIGZsYXNoIHN1Y2ggYXMgdGhlIGJvb3Rsb2FkZXIsCisgKiB0aGUgYm9vdGxvYWRlciBwYXJhbXMsIGFuZCB0aGUga2VybmVsLgorICogVGhlIFNXMiBzZXR0aW5ncyBmb3IgdGhlIG1hcCBiZWxvdyBhcmU6CisgKiAxIG9mZiwgMiBvZmYsIDMgb24sIDQgb2ZmLgorICovCisKKy8qIEludGVsIGZsYXNoXzAsIHBhcnRpdGlvbmVkIGFzIGV4cGVjdGVkIGJ5IHJybG9hZCAqLworI2RlZmluZSBPTUFQX0ZMQVNIXzBfQkFTRQkweEQ4MDAwMDAwCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9TVEFSVAkweDAwMDAwMDAwCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9TSVpFCVNaXzE2TQorCisvKiBJbnRlbCBmbGFzaF8xLCB1c2VkIGZvciBjcmFtZnMgb3Igb3RoZXIgZmxhc2ggZmlsZSBzeXN0ZW1zICovCisjZGVmaW5lIE9NQVBfRkxBU0hfMV9CQVNFCTB4RDkwMDAwMDAKKyNkZWZpbmUgT01BUF9GTEFTSF8xX1NUQVJUCTB4MDEwMDAwMDAKKyNkZWZpbmUgT01BUF9GTEFTSF8xX1NJWkUJU1pfMTZNCisKKyNkZWZpbmUgTlJfRlBHQV9JUlFTCQkyNAorI2RlZmluZSBOUl9JUlFTICAgICAgICAgICAgICAgICBJSF9CT0FSRF9CQVNFICsgTlJfRlBHQV9JUlFTCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCit2b2lkIGZwZ2Ffd3JpdGUodW5zaWduZWQgY2hhciB2YWwsIGludCByZWcpOwordW5zaWduZWQgY2hhciBmcGdhX3JlYWQoaW50IHJlZyk7CisjZW5kaWYKKworI2VuZGlmIC8qIENPTkZJR19BUkNIX09NQVAxNTEwICovCisKKyNpZiBkZWZpbmVkIChDT05GSUdfQVJDSF9PTUFQMTZYWCkKKworLyogQXQgT01BUDE2MTAgSW5ub3ZhdG9yIHRoZSBFdGhlcm5ldCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gQ1MxICovCisjZGVmaW5lIElOTk9WQVRPUjE2MTBfRVRIUl9TVEFSVAkweDA0MDAwMzAwCisKKyNlbmRpZiAvKiBDT05GSUdfQVJDSF9PTUFQMTYxMCAqLworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfT01BUF9JTk5PVkFUT1JfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1uZXRzdGFyLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLW5ldHN0YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2NjMGZiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1uZXRzdGFyLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCAyTiBUZWxla29tdW5pa2FjZSwgTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBPTUFQNTkxMCBiYXNlZCBOZXRTdGFyIGJvYXJkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX05FVFNUQVJfSAorI2RlZmluZSBfX0FTTV9BUkNIX05FVFNUQVJfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvdGMuaD4KKworI2RlZmluZSBPTUFQX05BTkRfRkxBU0hfU1RBUlQxCQlPTUFQX0NTMV9QSFlTICsgKDEgPDwgMjMpCisjZGVmaW5lIE9NQVBfTkFORF9GTEFTSF9TVEFSVDIJCU9NQVBfQ1MxX1BIWVMgKyAoMiA8PCAyMykKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX05FVFNUQVJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1vc2suaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtb3NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhNDlhMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtb3NrLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtb3NrLmgKKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgVEkgT01BUDU5MTIgT1NLIGJvYXJkLgorICoKKyAqIFdyaXR0ZW4gYnkgRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBkZS5ib3NjaC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfT1NLX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX09TS19ICisKKy8qIEF0IE9NQVA1OTEyIE9TSyB0aGUgRXRoZXJuZXQgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIENTMSAqLworI2RlZmluZSBPTUFQX09TS19FVEhSX1NUQVJUCQkweDA0ODAwMzAwCisKKy8qIE1pY3JvbiBOT1IgZmxhc2ggYXQgQ1MzIG1hcHBlZCB0byBhZGRyZXNzIDB4MCBpZiBCTSBiaXQgaXMgMSAqLworI2RlZmluZSBPTUFQX09TS19OT1JfRkxBU0hfQkFTRQkJMHhEODAwMDAwMAorI2RlZmluZSBPTUFQX09TS19OT1JfRkxBU0hfU0laRQkJU1pfMzJNCisjZGVmaW5lIE9NQVBfT1NLX05PUl9GTEFTSF9TVEFSVAkweDAwMDAwMDAwCisKKyNlbmRpZiAvKiAgX19BU01fQVJDSF9PTUFQX09TS19IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtcGVyc2V1czIuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtcGVyc2V1czIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzIyNGNjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1wZXJzZXVzMi5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1wZXJzZXVzMi5oCisgKgorICogIENvcHlyaWdodCAyMDAzIGJ5IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZAorICogICAgT01BUDczMCAvIFBlcnNldXMyIHN1cHBvcnQgYnkgSmVhbiBQaWhldAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSaWRnZVJ1biwgSW5jLiAoaHR0cDovL3d3dy5yaWRnZXJ1bi5jb20pCisgKiBBdXRob3I6IFJpZGdlUnVuLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQX1BFUlNFVVMyX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX1BFUlNFVVMyX0gKKworI2luY2x1ZGUgPGFzbS9hcmNoL2ZwZ2EuaD4KKworI2lmbmRlZiBPTUFQX1NEUkFNX0RFVklDRQorI2RlZmluZSBPTUFQX1NEUkFNX0RFVklDRQkJRDI1Nk1fMVgxNl80QgorI2VuZGlmCisKKy8qCisgKiBUaGVzZSBkZWZpbml0aW9ucyBkZWZpbmUgYW4gYXJlYSBvZiBGTEFTSCBzZXQgYXNpZGUKKyAqIGZvciB0aGUgdXNlIG9mIE1URC9KRkZTMi4gVGhpcyBpcyB0aGUgYXJlYSBvZiBmbGFzaAorICogdGhhdCBhIEpGRlMyIGZpbGVzeXN0ZW0gd2lsbCByZXNpZGUgd2hpY2ggaXMgbW91bnRlZAorICogYXQgYm9vdCB3aXRoIHRoZSAicm9vdD0vZGV2L210ZGJsb2NrLzAgcnciCisgKiBjb21tYW5kIGxpbmUgb3B0aW9uLgorICovCisKKy8qIEludGVsIGZsYXNoXzAsIHBhcnRpdGlvbmVkIGFzIGV4cGVjdGVkIGJ5IHJybG9hZCAqLworI2RlZmluZSBPTUFQX0ZMQVNIXzBfQkFTRQkweEQ4MDAwMDAwCS8qIFZBICovCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9TVEFSVAkweDAwMDAwMDAwCS8qIFBBICovCisjZGVmaW5lIE9NQVBfRkxBU0hfMF9TSVpFCVNaXzMyTQorCisjZGVmaW5lIE1BWElSUU5VTQkJSUhfQk9BUkRfQkFTRQorI2RlZmluZSBNQVhGSVFOVU0JCU1BWElSUU5VTQorI2RlZmluZSBNQVhTV0lOVU0JCU1BWElSUU5VTQorCisjZGVmaW5lIE5SX0lSUVMJCQkoTUFYSVJRTlVNICsgMSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLXZvaWNlYmx1ZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC12b2ljZWJsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzk3N2I4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC12b2ljZWJsdWUuaApAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IDJOIFRlbGVrb211bmlrYWNlLCBMYWRpc2xhdiBNaWNobCA8bWljaGxAMm4uY3o+CisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIE9NQVA1OTEwIGJhc2VkIFZvaWNlQmx1ZSBib2FyZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9WT0lDRUJMVUVfSAorI2RlZmluZSBfX0FTTV9BUkNIX1ZPSUNFQkxVRV9ICisKKyNpZiAoRVhURVJOQUxfTUFYX05SX1BPUlRTIDwgNCkKKyN1bmRlZiBFWFRFUk5BTF9NQVhfTlJfUE9SVFMKKyNkZWZpbmUgRVhURVJOQUxfTUFYX05SX1BPUlRTCTQKKyNlbmRpZgorCitleHRlcm4gdm9pZCB2b2ljZWJsdWVfd2R0X2VuYWJsZSh2b2lkKTsKK2V4dGVybiB2b2lkIHZvaWNlYmx1ZV93ZHRfZGlzYWJsZSh2b2lkKTsKK2V4dGVybiB2b2lkIHZvaWNlYmx1ZV93ZHRfcGluZyh2b2lkKTsKK2V4dGVybiB2b2lkIHZvaWNlYmx1ZV9yZXNldCh2b2lkKTsKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX1ZPSUNFQkxVRV9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2VmZDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC5oCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQuaAorICoKKyAqICBJbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzIGZvciBib2FyZC1zcGVjaWZpYyBkYXRhCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNAlOb2tpYSBDb3Jwb3JhdGlvbgorICogIFdyaXR0ZW4gYnkgSnVoYSBZcmr2bOQgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KKyAqLworCisjaWZuZGVmIF9PTUFQX0JPQVJEX0gKKyNkZWZpbmUgX09NQVBfQk9BUkRfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworLyogRGlmZmVyZW50IHBlcmlwaGVyYWwgaWRzICovCisjZGVmaW5lIE9NQVBfVEFHX0NMT0NLCQkweDRmMDEKKyNkZWZpbmUgT01BUF9UQUdfTU1DCQkweDRmMDIKKyNkZWZpbmUgT01BUF9UQUdfVUFSVAkJMHg0ZjAzCisjZGVmaW5lIE9NQVBfVEFHX1VTQgkJMHg0ZjA0CisjZGVmaW5lIE9NQVBfVEFHX0xDRAkJMHg0ZjA1CisjZGVmaW5lIE9NQVBfVEFHX0dQSU9fU1dJVENICTB4NGYwNgorCisjZGVmaW5lIE9NQVBfVEFHX0JPT1RfUkVBU09OICAgIDB4NGY4MAorI2RlZmluZSBPTUFQX1RBR19GTEFTSF9QQVJUCTB4NGY4MQorCitzdHJ1Y3Qgb21hcF9jbG9ja19jb25maWcgeworCS8qIDAgZm9yIDEyIE1IeiwgMSBmb3IgMTMgTUh6IGFuZCAyIGZvciAxOS4yIE1IeiAqLworCXU4IHN5c3RlbV9jbG9ja190eXBlOworfTsKKworc3RydWN0IG9tYXBfbW1jX2NvbmZpZyB7CisJdTggbW1jX2Jsb2NrczsKKwlzMTYgbW1jMV9wb3dlcl9waW4sIG1tYzJfcG93ZXJfcGluOworCXMxNiBtbWMxX3N3aXRjaF9waW4sIG1tYzJfc3dpdGNoX3BpbjsKK307CisKK3N0cnVjdCBvbWFwX3VhcnRfY29uZmlnIHsKKwl1OCBjb25zb2xlX3VhcnQ7CisJdTMyIGNvbnNvbGVfc3BlZWQ7Cit9OworCitzdHJ1Y3Qgb21hcF91c2JfY29uZmlnIHsKKwkvKiBDb25maWd1cmUgZHJpdmVycyBhY2NvcmRpbmcgdG8gdGhlIGNvbm5lY3RvcnMgb24geW91ciBib2FyZDoKKwkgKiAgLSAiQSIgY29ubmVjdG9yIChyZWN0YWd1bGFyKQorCSAqCS4uLiBmb3IgaG9zdC9PSENJIHVzZSwgc2V0ICJyZWdpc3Rlcl9ob3N0Ii4KKwkgKiAgLSAiQiIgY29ubmVjdG9yIChzcXVhcmlzaCkgb3IgIk1pbmktQiIKKwkgKgkuLi4gZm9yIGRldmljZS9nYWRnZXQgdXNlLCBzZXQgInJlZ2lzdGVyX2RldiIuCisJICogIC0gIk1pbmktQUIiIGNvbm5lY3RvciAodmVyeSBzaW1pbGFyIHRvIE1pbmktQikKKwkgKgkuLi4gZm9yIE9URyB1c2UgYXMgZGV2aWNlIE9SIGhvc3QsIGluaXRpYWxpemUgIm90ZyIKKwkgKi8KKwl1bnNpZ25lZAlyZWdpc3Rlcl9ob3N0OjE7CisJdW5zaWduZWQJcmVnaXN0ZXJfZGV2OjE7CisJdTgJCW90ZzsJLyogcG9ydCBudW1iZXIsIDEtYmFzZWQ6ICB1c2IxID09IDIgKi8KKworCXU4CQlobWNfbW9kZTsKKworCS8qIGltcGxpY2l0bHkgdHJ1ZSBpZiBvdGc6ICBob3N0IHN1cHBvcnRzIHJlbW90ZSB3YWtldXA/ICovCisJdTgJCXJ3YzsKKworCS8qIHNpZ25hbGluZyBwaW5zIHVzZWQgdG8gdGFsayB0byB0cmFuc2NlaXZlciBvbiB1c2JOOgorCSAqICAwID09IHVzYk4gdW51c2VkCisJICogIDIgPT0gdXNiMC1vbmx5LCB1c2luZyBpbnRlcm5hbCB0cmFuc2NlaXZlcgorCSAqICAzID09IDMgd2lyZSBiaWRpcmVjdGlvbmFsCisJICogIDQgPT0gNCB3aXJlIGJpZGlyZWN0aW9uYWwKKwkgKiAgNiA9PSA2IHdpcmUgdW5pZGlyZWN0aW9uYWwgKG9yIFRMTCkKKwkgKi8KKwl1OAkJcGluc1szXTsKK307CisKK3N0cnVjdCBvbWFwX2xjZF9jb25maWcgeworCWNoYXIgcGFuZWxfbmFtZVsxNl07CisJY2hhciBjdHJsX25hbWVbMTZdOworfTsKKworLyogQ292ZXI6CisgKiAgICAgIGhpZ2ggLT4gY2xvc2VkCisgKiAgICAgIGxvdyAgLT4gb3BlbgorICogQ29ubmVjdGlvbjoKKyAqICAgICAgaGlnaCAtPiBjb25uZWN0ZWQKKyAqICAgICAgbG93ICAtPiBkaXNjb25uZWN0ZWQKKyAqLworI2RlZmluZSBPTUFQX0dQSU9fU1dJVENIX1RZUEVfQ09WRVIJCTB4MDAwMAorI2RlZmluZSBPTUFQX0dQSU9fU1dJVENIX1RZUEVfQ09OTkVDVElPTgkweDAwMDEKKyNkZWZpbmUgT01BUF9HUElPX1NXSVRDSF9GTEFHX0lOVkVSVEVEICAgICAgICAgIDB4MDAwMQorc3RydWN0IG9tYXBfZ3Bpb19zd2l0Y2hfY29uZmlnIHsKKwljaGFyIG5hbWVbMTJdOworCXUxNiBncGlvOworCWludCBmbGFnczo0OworCWludCB0eXBlOjQ7CisJaW50IGtleV9jb2RlOjI0OyAvKiBMaW51eCBrZXkgY29kZSAqLworfTsKKworc3RydWN0IG9tYXBfZmxhc2hfcGFydF9jb25maWcgeworCWNoYXIgcGFydF90YWJsZVswXTsKK307CisKK3N0cnVjdCBvbWFwX2Jvb3RfcmVhc29uX2NvbmZpZyB7CisJY2hhciByZWFzb25fc3RyWzEyXTsKK307CisKKworc3RydWN0IG9tYXBfYm9hcmRfY29uZmlnX2VudHJ5IHsKKwl1MTYgdGFnOworCXUxNiBsZW47CisJdTggIGRhdGFbMF07Cit9OworCitzdHJ1Y3Qgb21hcF9ib2FyZF9jb25maWdfa2VybmVsIHsKKwl1MTYgdGFnOworCWNvbnN0IHZvaWQgKmRhdGE7Cit9OworCitleHRlcm4gY29uc3Qgdm9pZCAqX19vbWFwX2dldF9jb25maWcodTE2IHRhZywgc2l6ZV90IGxlbiwgaW50IG5yKTsKKworI2RlZmluZSBvbWFwX2dldF9jb25maWcodGFnLCB0eXBlKSBcCisJKChjb25zdCB0eXBlICopIF9fb21hcF9nZXRfY29uZmlnKCh0YWcpLCBzaXplb2YodHlwZSksIDApKQorI2RlZmluZSBvbWFwX2dldF9ucl9jb25maWcodGFnLCB0eXBlLCBucikgXAorCSgoY29uc3QgdHlwZSAqKSBfX29tYXBfZ2V0X2NvbmZpZygodGFnKSwgc2l6ZW9mKHR5cGUpLCAobnIpKSkKKworZXh0ZXJuIGNvbnN0IHZvaWQgKm9tYXBfZ2V0X3Zhcl9jb25maWcodTE2IHRhZywgc2l6ZV90ICpsZW4pOworCitleHRlcm4gc3RydWN0IG9tYXBfYm9hcmRfY29uZmlnX2tlcm5lbCAqb21hcF9ib2FyZF9jb25maWc7CitleHRlcm4gaW50IG9tYXBfYm9hcmRfY29uZmlnX3NpemU7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9jcHUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3ODY3MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvY3B1LmgKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2NwdS5oCisgKgorICogT01BUCBjcHUgdHlwZSBkZXRlY3Rpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgTm9raWEgQ29ycG9yYXRpb24KKyAqCisgKiBXcml0dGVuIGJ5IFRvbnkgTGluZGdyZW4gPHRvbnkubGluZGdyZW5Abm9raWEuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfQ1BVX0gKKyNkZWZpbmUgX19BU01fQVJDSF9PTUFQX0NQVV9ICisKK2V4dGVybiB1bnNpZ25lZCBpbnQgc3lzdGVtX3JldjsKKworI2RlZmluZSBPTUFQX0RJRV9JRF8wCQkweGZmZmUxODAwCisjZGVmaW5lIE9NQVBfRElFX0lEXzEJCTB4ZmZmZTE4MDQKKyNkZWZpbmUgT01BUF9QUk9EVUNUSU9OX0lEXzAJMHhmZmZlMjAwMAorI2RlZmluZSBPTUFQX1BST0RVQ1RJT05fSURfMQkweGZmZmUyMDA0CisjZGVmaW5lIE9NQVAzMl9JRF8wCQkweGZmZmVkNDAwCisjZGVmaW5lIE9NQVAzMl9JRF8xCQkweGZmZmVkNDA0CisKKy8qCisgKiBUZXN0IGlmIG11bHRpY29yZSBPTUFQIHN1cHBvcnQgaXMgbmVlZGVkCisgKi8KKyN1bmRlZiBNVUxUSV9PTUFQCisjdW5kZWYgT01BUF9OQU1FCisKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQNzMwCisjIGlmZGVmIE9NQVBfTkFNRQorIyAgdW5kZWYgIE1VTFRJX09NQVAKKyMgIGRlZmluZSBNVUxUSV9PTUFQCisjIGVsc2UKKyMgIGRlZmluZSBPTUFQX05BTUUgb21hcDczMAorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE1MTAKKyMgaWZkZWYgT01BUF9OQU1FCisjICB1bmRlZiAgTVVMVElfT01BUAorIyAgZGVmaW5lIE1VTFRJX09NQVAKKyMgZWxzZQorIyAgZGVmaW5lIE9NQVBfTkFNRSBvbWFwMTUxMAorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE2WFgKKyMgaWZkZWYgT01BUF9OQU1FCisjICB1bmRlZiAgTVVMVElfT01BUAorIyAgZGVmaW5lIE1VTFRJX09NQVAKKyMgZWxzZQorIyAgZGVmaW5lIE9NQVBfTkFNRSBvbWFwMTYxMAorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE2WFgKKyMgaWZkZWYgT01BUF9OQU1FCisjICB1bmRlZiAgTVVMVElfT01BUAorIyAgZGVmaW5lIE1VTFRJX09NQVAKKyMgZWxzZQorIyAgZGVmaW5lIE9NQVBfTkFNRSBvbWFwMTcxMAorIyBlbmRpZgorI2VuZGlmCisKKy8qCisgKiBHZW5lcmF0ZSB2YXJpb3VzIE9NQVAgY3B1IHNwZWNpZmljIG1hY3JvcywgYW5kIGNwdSBjbGFzcworICogc3BlY2lmaWMgbWFjcm9zCisgKi8KKyNkZWZpbmUgR0VUX09NQVBfVFlQRQkoKHN5c3RlbV9yZXYgPj4gMjQpICYgMHhmZikKKyNkZWZpbmUgR0VUX09NQVBfQ0xBU1MJKHN5c3RlbV9yZXYgJiAweGZmKQorCisjZGVmaW5lIElTX09NQVBfVFlQRSh0eXBlLCBpZCkJCQkJXAorc3RhdGljIGlubGluZSBpbnQgaXNfb21hcCAjI3R5cGUgKHZvaWQpCQkJXAorewkJCQkJCQlcCisJcmV0dXJuIChHRVRfT01BUF9UWVBFID09IChpZCkpID8gMSA6IDA7CQlcCit9CisKKyNkZWZpbmUgSVNfT01BUF9DTEFTUyhjbGFzcywgaWQpCQkJXAorc3RhdGljIGlubGluZSBpbnQgaXNfb21hcCAjI2NsYXNzICh2b2lkKQkJXAorewkJCQkJCQlcCisJcmV0dXJuIChHRVRfT01BUF9DTEFTUyA9PSAoaWQpKSA/IDEgOiAwOwlcCit9CisKK0lTX09NQVBfVFlQRSg3MzAsIDB4MDcpCitJU19PTUFQX1RZUEUoMTUxMCwgMHgxNSkKK0lTX09NQVBfVFlQRSgxNjEwLCAweDE2KQorSVNfT01BUF9UWVBFKDU5MTIsIDB4MTYpCitJU19PTUFQX1RZUEUoMTcxMCwgMHgxNykKK0lTX09NQVBfVFlQRSgyNDIwLCAweDI0KQorCitJU19PTUFQX0NMQVNTKDd4eCwgMHgwNykKK0lTX09NQVBfQ0xBU1MoMTV4eCwgMHgxNSkKK0lTX09NQVBfQ0xBU1MoMTZ4eCwgMHgxNikKK0lTX09NQVBfQ0xBU1MoMjR4eCwgMHgyNCkKKworLyoKKyAqIE1hY3JvcyB0byBncm91cCBPTUFQIHR5cGVzIGludG8gY3B1IGNsYXNzZXMuCisgKiBUaGVzZSBjYW4gYmUgdXNlZCBpbiBtb3N0IHBsYWNlcy4KKyAqIGNwdV9pc19vbWFwMTV4eCgpOglUcnVlIGZvciAxNTEwIGFuZCA1OTEwCisgKiBjcHVfaXNfb21hcDE2eHgoKToJVHJ1ZSBmb3IgMTYxMCwgNTkxMiBhbmQgMTcxMAorICovCisjaWYgZGVmaW5lZChNVUxUSV9PTUFQKQorIyBkZWZpbmUgY3B1X2lzX29tYXA3eHgoKQkJaXNfb21hcDd4eCgpCisjIGRlZmluZSBjcHVfaXNfb21hcDE1eHgoKQkJaXNfb21hcDE1eHgoKQorIyBpZiAhKGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE1MTApIHx8IGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDczMCkpCisjICBkZWZpbmUgY3B1X2lzX29tYXAxNnh4KCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTZ4eCgpCQlpc19vbWFwMTZ4eCgpCisjIGVuZGlmCisjZWxzZQorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVA3MzApCisjICBkZWZpbmUgY3B1X2lzX29tYXA3eHgoKQkJMQorIyBlbHNlCisjICBkZWZpbmUgY3B1X2lzX29tYXA3eHgoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNTEwKQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTV4eCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDE1eHgoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTZ4eCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDE2eHgoKQkJMAorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1VTFRJX09NQVApCisjIGRlZmluZSBjcHVfaXNfb21hcDczMCgpCQlpc19vbWFwNzMwKCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTUxMCgpCQlpc19vbWFwMTUxMCgpCisjIGRlZmluZSBjcHVfaXNfb21hcDE2MTAoKQkJaXNfb21hcDE2MTAoKQorIyBkZWZpbmUgY3B1X2lzX29tYXA1OTEyKCkJCWlzX29tYXA1OTEyKCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTcxMCgpCQlpc19vbWFwMTcxMCgpCisjZWxzZQorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVA3MzApCisjICBkZWZpbmUgY3B1X2lzX29tYXA3MzAoKQkJMQorIyBlbHNlCisjICBkZWZpbmUgY3B1X2lzX29tYXA3MzAoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNTEwKQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTUxMCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDE1MTAoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMTYxMCgpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDE2MTAoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorIyAgZGVmaW5lIGNwdV9pc19vbWFwNTkxMigpCQkxCisjIGVsc2UKKyMgIGRlZmluZSBjcHVfaXNfb21hcDU5MTIoKQkJMAorIyBlbmRpZgorIyBpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxNlhYKQorIyBkZWZpbmUgY3B1X2lzX29tYXAxNjEwKCkJCWlzX29tYXAxNjEwKCkKKyMgZGVmaW5lIGNwdV9pc19vbWFwNTkxMigpCQlpc19vbWFwNTkxMigpCisjIGRlZmluZSBjcHVfaXNfb21hcDE3MTAoKQkJaXNfb21hcDE3MTAoKQorIyBlbHNlCisjIGRlZmluZSBjcHVfaXNfb21hcDE2MTAoKQkJMAorIyBkZWZpbmUgY3B1X2lzX29tYXA1OTEyKCkJCTAKKyMgZGVmaW5lIGNwdV9pc19vbWFwMTcxMCgpCQkwCisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDI0MjApCisjICBkZWZpbmUgY3B1X2lzX29tYXAyNDIwKCkJCTEKKyMgZWxzZQorIyAgZGVmaW5lIGNwdV9pc19vbWFwMjQyMCgpCQkwCisjIGVuZGlmCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNiYjQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDQ1IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyovCisKKwkJLm1hY3JvCWFkZHJ1YXJ0LHJ4CisJCW1yYwlwMTUsIDAsIFxyeCwgYzEsIGMwCisJCXRzdAlccngsICMxCQkJQCBNTVUgZW5hYmxlZD8KKwkJbW92ZXEJXHJ4LCAjMHhmZjAwMDAwMAlAIHBoeXNpY2FsIGJhc2UgYWRkcmVzcworCQltb3ZuZQlccngsICMweGZlMDAwMDAwCUAgdmlydHVhbCBiYXNlCisJCW9ycglccngsIFxyeCwgIzB4MDBmYjAwMDAKKyNpZmRlZiBDT05GSUdfT01BUF9MTF9ERUJVR19VQVJUMworCQlvcnIJXHJ4LCBccngsICMweDAwMDA5MDAwCUAgVUFSVCAzCisjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR19PTUFQX0xMX0RFQlVHX1VBUlQyKSB8fCBkZWZpbmVkKENPTkZJR19PTUFQX0xMX0RFQlVHX1VBUlQzKQorCQlvcnIJXHJ4LCBccngsICMweDAwMDAwODAwCUAgVUFSVCAyICYgMworI2VuZGlmCisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cmIJXHJkLCBbXHJ4XQorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMToJCWxkcmIJXHJkLCBbXHJ4LCAjKDB4NSA8PCAyKV0JQCBPTUFQLTE1MTAgYW5kIGZyaWVuZHMKKwkJYW5kCVxyZCwgXHJkLCAjMHg2MAorCQl0ZXEJXHJkLCAjMHg2MAorCQliZXEJMTAwMmYKKwkJbGRyYglccmQsIFtccngsICMoMHg1IDw8IDApXQlAIE9NQVAtNzMwIG9ubHkKKwkJYW5kCVxyZCwgXHJkLCAjMHg2MAorCQl0ZXEJXHJkLCAjMHg2MAorCQlibmUJMTAwMWIKKzEwMDI6CisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzg1MjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbWEuaApAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RtYS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBOb2tpYSBDb3Jwb3JhdGlvbgorICogIEF1dGhvcjogSnVoYSBZcmr2bOQgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkJMHhmZmZmZmZmZgorCisjZGVmaW5lIE9NQVBfTE9HSUNBTF9ETUFfQ0hfQ09VTlQJMTcKKworI2RlZmluZSBPTUFQX0RNQV9OT19ERVZJQ0UJCTAKKyNkZWZpbmUgT01BUF9ETUFfTUNTSTFfVFgJCTEKKyNkZWZpbmUgT01BUF9ETUFfTUNTSTFfUlgJCTIKKyNkZWZpbmUgT01BUF9ETUFfSTJDX1JYCQkJMworI2RlZmluZSBPTUFQX0RNQV9JMkNfVFgJCQk0CisjZGVmaW5lIE9NQVBfRE1BX0VYVF9ORE1BX1JFUQkJNQorI2RlZmluZSBPTUFQX0RNQV9FWFRfTkRNQV9SRVEyCQk2CisjZGVmaW5lIE9NQVBfRE1BX1VXSVJFX1RYCQk3CisjZGVmaW5lIE9NQVBfRE1BX01DQlNQMV9UWAkJOAorI2RlZmluZSBPTUFQX0RNQV9NQ0JTUDFfUlgJCTkKKyNkZWZpbmUgT01BUF9ETUFfTUNCU1AzX1RYCQkxMAorI2RlZmluZSBPTUFQX0RNQV9NQ0JTUDNfUlgJCTExCisjZGVmaW5lIE9NQVBfRE1BX1VBUlQxX1RYCQkxMgorI2RlZmluZSBPTUFQX0RNQV9VQVJUMV9SWAkJMTMKKyNkZWZpbmUgT01BUF9ETUFfVUFSVDJfVFgJCTE0CisjZGVmaW5lIE9NQVBfRE1BX1VBUlQyX1JYCQkxNQorI2RlZmluZSBPTUFQX0RNQV9NQ0JTUDJfVFgJCTE2CisjZGVmaW5lIE9NQVBfRE1BX01DQlNQMl9SWAkJMTcKKyNkZWZpbmUgT01BUF9ETUFfVUFSVDNfVFgJCTE4CisjZGVmaW5lIE9NQVBfRE1BX1VBUlQzX1JYCQkxOQorI2RlZmluZSBPTUFQX0RNQV9DQU1FUkFfSUZfUlgJCTIwCisjZGVmaW5lIE9NQVBfRE1BX01NQ19UWAkJCTIxCisjZGVmaW5lIE9NQVBfRE1BX01NQ19SWAkJCTIyCisjZGVmaW5lIE9NQVBfRE1BX05BTkQJCQkyMworI2RlZmluZSBPTUFQX0RNQV9JUlFfTENEX0xJTkUJCTI0CisjZGVmaW5lIE9NQVBfRE1BX01FTU9SWV9TVElDSwkJMjUKKyNkZWZpbmUgT01BUF9ETUFfVVNCX1cyRkNfUlgwCQkyNgorI2RlZmluZSBPTUFQX0RNQV9VU0JfVzJGQ19SWDEJCTI3CisjZGVmaW5lIE9NQVBfRE1BX1VTQl9XMkZDX1JYMgkJMjgKKyNkZWZpbmUgT01BUF9ETUFfVVNCX1cyRkNfVFgwCQkyOQorI2RlZmluZSBPTUFQX0RNQV9VU0JfVzJGQ19UWDEJCTMwCisjZGVmaW5lIE9NQVBfRE1BX1VTQl9XMkZDX1RYMgkJMzEKKworLyogVGhlc2UgYXJlIG9ubHkgZm9yIDE2MTAgKi8KKyNkZWZpbmUgT01BUF9ETUFfQ1JZUFRPX0RFU19JTgkJMzIKKyNkZWZpbmUgT01BUF9ETUFfU1BJX1RYCQkJMzMKKyNkZWZpbmUgT01BUF9ETUFfU1BJX1JYCQkJMzQKKyNkZWZpbmUgT01BUF9ETUFfQ1JZUFRPX0hBU0gJCTM1CisjZGVmaW5lIE9NQVBfRE1BX0NDUF9BVFROCQkzNgorI2RlZmluZSBPTUFQX0RNQV9DQ1BfRklGT19OT1RfRU1QVFkJMzcKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzAJMzgKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzAJMzkKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzEJNDAKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzEJNDEKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzIJNDIKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzIJNDMKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzMJNDQKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzMJNDUKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzQJNDYKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzQJNDcKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzUJNDgKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzUJNDkKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzYJNTAKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzYJNTEKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9UWF9DSEFOXzcJNTIKKyNkZWZpbmUgT01BUF9ETUFfQ01UX0FQRV9SVl9DSEFOXzcJNTMKKyNkZWZpbmUgT01BUF9ETUFfTU1DMl9UWAkJNTQKKyNkZWZpbmUgT01BUF9ETUFfTU1DMl9SWAkJNTUKKyNkZWZpbmUgT01BUF9ETUFfQ1JZUFRPX0RFU19PVVQJCTU2CisKKworI2RlZmluZSBPTUFQX0RNQV9CQVNFCQkJKDB4ZmZmZWQ4MDApCisjZGVmaW5lIE9NQVBfRE1BX0dDUgkJCShPTUFQX0RNQV9CQVNFICsgMHg0MDApCisjZGVmaW5lIE9NQVBfRE1BX0dTQ1IJCQkoT01BUF9ETUFfQkFTRSArIDB4NDA0KQorI2RlZmluZSBPTUFQX0RNQV9HUlNUCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwOCkKKyNkZWZpbmUgT01BUF9ETUFfSFdfSUQJCQkoT01BUF9ETUFfQkFTRSArIDB4NDQyKQorI2RlZmluZSBPTUFQX0RNQV9QQ0gyX0lECQkoT01BUF9ETUFfQkFTRSArIDB4NDQ0KQorI2RlZmluZSBPTUFQX0RNQV9QQ0gwX0lECQkoT01BUF9ETUFfQkFTRSArIDB4NDQ2KQorI2RlZmluZSBPTUFQX0RNQV9QQ0gxX0lECQkoT01BUF9ETUFfQkFTRSArIDB4NDQ4KQorI2RlZmluZSBPTUFQX0RNQV9QQ0hHX0lECQkoT01BUF9ETUFfQkFTRSArIDB4NDRhKQorI2RlZmluZSBPTUFQX0RNQV9QQ0hEX0lECQkoT01BUF9ETUFfQkFTRSArIDB4NDRjKQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzBfVQkJKE9NQVBfRE1BX0JBU0UgKyAweDQ0ZSkKKyNkZWZpbmUgT01BUF9ETUFfQ0FQU18wX0wJCShPTUFQX0RNQV9CQVNFICsgMHg0NTApCisjZGVmaW5lIE9NQVBfRE1BX0NBUFNfMV9VCQkoT01BUF9ETUFfQkFTRSArIDB4NDUyKQorI2RlZmluZSBPTUFQX0RNQV9DQVBTXzFfTAkJKE9NQVBfRE1BX0JBU0UgKyAweDQ1NCkKKyNkZWZpbmUgT01BUF9ETUFfQ0FQU18yCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQ1NikKKyNkZWZpbmUgT01BUF9ETUFfQ0FQU18zCQkJKE9NQVBfRE1BX0JBU0UgKyAweDQ1OCkKKyNkZWZpbmUgT01BUF9ETUFfQ0FQU180CQkJKE9NQVBfRE1BX0JBU0UgKyAweDQ1YSkKKyNkZWZpbmUgT01BUF9ETUFfUENIMl9TUgkJKE9NQVBfRE1BX0JBU0UgKyAweDQ2MCkKKyNkZWZpbmUgT01BUF9ETUFfUENIMF9TUgkJKE9NQVBfRE1BX0JBU0UgKyAweDQ4MCkKKyNkZWZpbmUgT01BUF9ETUFfUENIMV9TUgkJKE9NQVBfRE1BX0JBU0UgKyAweDQ4MikKKyNkZWZpbmUgT01BUF9ETUFfUENIRF9TUgkJKE9NQVBfRE1BX0JBU0UgKyAweDRjMCkKKworI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX0JBU0UJCSgweGZmZmVkYjAwKQorI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX0NUUkwJCShPTUFQMTUxMF9ETUFfTENEX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX1RPUF9GMV9MCShPTUFQMTUxMF9ETUFfTENEX0JBU0UgKyAweDAyKQorI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX1RPUF9GMV9VCShPTUFQMTUxMF9ETUFfTENEX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX0JPVF9GMV9MCShPTUFQMTUxMF9ETUFfTENEX0JBU0UgKyAweDA2KQorI2RlZmluZSBPTUFQMTUxMF9ETUFfTENEX0JPVF9GMV9VCShPTUFQMTUxMF9ETUFfTENEX0JBU0UgKyAweDA4KQorCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQkFTRQkJKDB4ZmZmZWUzMDApCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfQ1NEUCAgICAgIAkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhjMCkKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9DQ1IJCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGMyKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0NUUkwJCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGM0KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1RPUF9CMV9MCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGM4KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1RPUF9CMV9VCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGNhKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0JPVF9CMV9MCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGNjKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0JPVF9CMV9VCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGNlKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1RPUF9CMl9MCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGQwKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1RPUF9CMl9VCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGQyKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0JPVF9CMl9MCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGQ0KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0JPVF9CMl9VCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGQ2KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1NSQ19FSV9CMQkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhkOCkKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9TUkNfRklfQjFfTAkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhkYSkKKyNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9TUkNfRU5fQjEJKE9NQVAxNjEwX0RNQV9MQ0RfQkFTRSArIDB4ZTApCisjZGVmaW5lIE9NQVAxNjEwX0RNQV9MQ0RfU1JDX0ZOX0IxCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGU0KQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX0xDSF9DVFJMCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGVhKQorI2RlZmluZSBPTUFQMTYxMF9ETUFfTENEX1NSQ19GSV9CMV9VCShPTUFQMTYxMF9ETUFfTENEX0JBU0UgKyAweGY0KQorCisKKy8qIEV2ZXJ5IExDaCBoYXMgaXRzIG93biBzZXQgb2YgdGhlIHJlZ2lzdGVycyBiZWxvdyAqLworI2RlZmluZSBPTUFQX0RNQV9DU0RQKG4pCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDAwKQorI2RlZmluZSBPTUFQX0RNQV9DQ1IobikJCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDAyKQorI2RlZmluZSBPTUFQX0RNQV9DSUNSKG4pCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDA0KQorI2RlZmluZSBPTUFQX0RNQV9DU1IobikJCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDA2KQorI2RlZmluZSBPTUFQX0RNQV9DU1NBX0wobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MDgpCisjZGVmaW5lIE9NQVBfRE1BX0NTU0FfVShuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgwYSkKKyNkZWZpbmUgT01BUF9ETUFfQ0RTQV9MKG4pCQkoT01BUF9ETUFfQkFTRSArIDB4NDAgKiAobikgKyAweDBjKQorI2RlZmluZSBPTUFQX0RNQV9DRFNBX1UobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MGUpCisjZGVmaW5lIE9NQVBfRE1BX0NFTihuKQkJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MTApCisjZGVmaW5lIE9NQVBfRE1BX0NGTihuKQkJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MTIpCisjZGVmaW5lIE9NQVBfRE1BX0NTRkkobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MTQpCisjZGVmaW5lIE9NQVBfRE1BX0NTRUkobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MTYpCisjZGVmaW5lIE9NQVBfRE1BX0NTQUMobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MTgpCisjZGVmaW5lIE9NQVBfRE1BX0NEQUMobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MWEpCisjZGVmaW5lIE9NQVBfRE1BX0NERUkobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MWMpCisjZGVmaW5lIE9NQVBfRE1BX0NERkkobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MWUpCisjZGVmaW5lIE9NQVBfRE1BX0NPTE9SX0wobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MjApCisjZGVmaW5lIE9NQVBfRE1BX0NPTE9SX1UobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MjIpCisjZGVmaW5lIE9NQVBfRE1BX0NDUjIobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MjQpCisjZGVmaW5lIE9NQVBfRE1BX0NMTktfQ1RSTChuKQkJKE9NQVBfRE1BX0JBU0UgKyAweDQwICogKG4pICsgMHgyOCkKKyNkZWZpbmUgT01BUF9ETUFfTENIX0NUUkwobikJCShPTUFQX0RNQV9CQVNFICsgMHg0MCAqIChuKSArIDB4MmEpCisKKyNkZWZpbmUgT01BUF9ETUFfVE9VVF9JUlEJCSgxIDw8IDApCisjZGVmaW5lIE9NQVBfRE1BX0RST1BfSVJRCQkoMSA8PCAxKQorI2RlZmluZSBPTUFQX0RNQV9IQUxGX0lSUQkJKDEgPDwgMikKKyNkZWZpbmUgT01BUF9ETUFfRlJBTUVfSVJRCQkoMSA8PCAzKQorI2RlZmluZSBPTUFQX0RNQV9MQVNUX0lSUQkJKDEgPDwgNCkKKyNkZWZpbmUgT01BUF9ETUFfQkxPQ0tfSVJRCQkoMSA8PCA1KQorI2RlZmluZSBPTUFQX0RNQV9TWU5DX0lSUQkJKDEgPDwgNikKKworI2RlZmluZSBPTUFQX0RNQV9EQVRBX1RZUEVfUzgJCTB4MDAKKyNkZWZpbmUgT01BUF9ETUFfREFUQV9UWVBFX1MxNgkJMHgwMQorI2RlZmluZSBPTUFQX0RNQV9EQVRBX1RZUEVfUzMyCQkweDAyCisKKyNkZWZpbmUgT01BUF9ETUFfU1lOQ19FTEVNRU5UCQkweDAwCisjZGVmaW5lIE9NQVBfRE1BX1NZTkNfRlJBTUUJCTB4MDEKKyNkZWZpbmUgT01BUF9ETUFfU1lOQ19CTE9DSwkJMHgwMgorCisjZGVmaW5lIE9NQVBfRE1BX1BPUlRfRU1JRkYJCTB4MDAKKyNkZWZpbmUgT01BUF9ETUFfUE9SVF9FTUlGUwkJMHgwMQorI2RlZmluZSBPTUFQX0RNQV9QT1JUX09DUF9UMQkJMHgwMgorI2RlZmluZSBPTUFQX0RNQV9QT1JUX1RJUEIJCTB4MDMKKyNkZWZpbmUgT01BUF9ETUFfUE9SVF9PQ1BfVDIJCTB4MDQKKyNkZWZpbmUgT01BUF9ETUFfUE9SVF9NUFVJCQkweDA1CisKKyNkZWZpbmUgT01BUF9ETUFfQU1PREVfQ09OU1RBTlQJCTB4MDAKKyNkZWZpbmUgT01BUF9ETUFfQU1PREVfUE9TVF9JTkMJCTB4MDEKKyNkZWZpbmUgT01BUF9ETUFfQU1PREVfU0lOR0xFX0lEWAkweDAyCisjZGVmaW5lIE9NQVBfRE1BX0FNT0RFX0RPVUJMRV9JRFgJMHgwMworCisvKiBMQ0QgRE1BIGJsb2NrIG51bWJlcnMgKi8KK2VudW0geworCU9NQVBfTENEX0RNQV9CMV9UT1AsCisJT01BUF9MQ0RfRE1BX0IxX0JPVFRPTSwKKwlPTUFQX0xDRF9ETUFfQjJfVE9QLAorCU9NQVBfTENEX0RNQV9CMl9CT1RUT00KK307CisKK2VudW0gb21hcF9kbWFfYnVyc3RfbW9kZSB7CisJT01BUF9ETUFfREFUQV9CVVJTVF9ESVMgPSAwLAorCU9NQVBfRE1BX0RBVEFfQlVSU1RfNCwKKwlPTUFQX0RNQV9EQVRBX0JVUlNUXzgKK307CisKK2VudW0gb21hcF9kbWFfY29sb3JfbW9kZSB7CisJT01BUF9ETUFfQ09MT1JfRElTID0gMCwKKwlPTUFQX0RNQV9DT05TVEFOVF9GSUxMLAorCU9NQVBfRE1BX1RSQU5TUEFSRU5UX0NPUFkKK307CisKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9wcmlvcml0eShpbnQgZHN0X3BvcnQsIGludCBwcmlvcml0eSk7CitleHRlcm4gaW50IG9tYXBfcmVxdWVzdF9kbWEoaW50IGRldl9pZCwgY29uc3QgY2hhciAqZGV2X25hbWUsCisJCQkgICAgdm9pZCAoKiBjYWxsYmFjaykoaW50IGxjaCwgdTE2IGNoX3N0YXR1cywgdm9pZCAqZGF0YSksCisJCQkgICAgdm9pZCAqZGF0YSwgaW50ICpkbWFfY2gpOworZXh0ZXJuIHZvaWQgb21hcF9lbmFibGVfZG1hX2lycShpbnQgY2gsIHUxNiBpcnFfYml0cyk7CitleHRlcm4gdm9pZCBvbWFwX2Rpc2FibGVfZG1hX2lycShpbnQgY2gsIHUxNiBpcnFfYml0cyk7CitleHRlcm4gdm9pZCBvbWFwX2ZyZWVfZG1hKGludCBjaCk7CitleHRlcm4gdm9pZCBvbWFwX3N0YXJ0X2RtYShpbnQgbGNoKTsKK2V4dGVybiB2b2lkIG9tYXBfc3RvcF9kbWEoaW50IGxjaCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfdHJhbnNmZXJfcGFyYW1zKGludCBsY2gsIGludCBkYXRhX3R5cGUsCisJCQkJCSBpbnQgZWxlbV9jb3VudCwgaW50IGZyYW1lX2NvdW50LAorCQkJCQkgaW50IHN5bmNfbW9kZSk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfY29sb3JfbW9kZShpbnQgbGNoLCBlbnVtIG9tYXBfZG1hX2NvbG9yX21vZGUgbW9kZSwKKwkJCQkgICAgdTMyIGNvbG9yKTsKKworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX3NyY19wYXJhbXMoaW50IGxjaCwgaW50IHNyY19wb3J0LCBpbnQgc3JjX2Ftb2RlLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIHNyY19zdGFydCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfc3JjX2luZGV4KGludCBsY2gsIGludCBlaWR4LCBpbnQgZmlkeCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfc3JjX2RhdGFfcGFjayhpbnQgbGNoLCBpbnQgZW5hYmxlKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9zcmNfYnVyc3RfbW9kZShpbnQgbGNoLAorCQkJCQllbnVtIG9tYXBfZG1hX2J1cnN0X21vZGUgYnVyc3RfbW9kZSk7CisKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2RtYV9kZXN0X3BhcmFtcyhpbnQgbGNoLCBpbnQgZGVzdF9wb3J0LCBpbnQgZGVzdF9hbW9kZSwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZGVzdF9zdGFydCk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9kbWFfZGVzdF9pbmRleChpbnQgbGNoLCBpbnQgZWlkeCwgaW50IGZpZHgpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX2Rlc3RfZGF0YV9wYWNrKGludCBsY2gsIGludCBlbmFibGUpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZG1hX2Rlc3RfYnVyc3RfbW9kZShpbnQgbGNoLAorCQkJCQkgZW51bSBvbWFwX2RtYV9idXJzdF9tb2RlIGJ1cnN0X21vZGUpOworCitleHRlcm4gdm9pZCBvbWFwX2RtYV9saW5rX2xjaCAoaW50IGxjaF9oZWFkLCBpbnQgbGNoX3F1ZXVlKTsKK2V4dGVybiB2b2lkIG9tYXBfZG1hX3VubGlua19sY2ggKGludCBsY2hfaGVhZCwgaW50IGxjaF9xdWV1ZSk7CisKK2V4dGVybiBkbWFfYWRkcl90IG9tYXBfZ2V0X2RtYV9zcmNfcG9zKGludCBsY2gpOworZXh0ZXJuIGRtYV9hZGRyX3Qgb21hcF9nZXRfZG1hX2RzdF9wb3MoaW50IGxjaCk7CitleHRlcm4gdm9pZCBvbWFwX2NsZWFyX2RtYShpbnQgbGNoKTsKKworLyogUmV0dXJucyAxIGlmIHRoZSBETUEgbW9kdWxlIGlzIGluIE9NQVAxNTEwLWNvbXBhdGlibGUgbW9kZSwgMCBvdGhlcndpc2UgKi8KK2V4dGVybiBpbnQgb21hcF9kbWFfaW5fMTUxMF9tb2RlKHZvaWQpOworCisvKiBMQ0QgRE1BIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGludCBvbWFwX3JlcXVlc3RfbGNkX2RtYSh2b2lkICgqIGNhbGxiYWNrKSh1MTYgc3RhdHVzLCB2b2lkICpkYXRhKSwKKwkJCQl2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIG9tYXBfZnJlZV9sY2RfZG1hKHZvaWQpOworZXh0ZXJuIHZvaWQgb21hcF9zZXR1cF9sY2RfZG1hKHZvaWQpOworZXh0ZXJuIHZvaWQgb21hcF9lbmFibGVfbGNkX2RtYSh2b2lkKTsKK2V4dGVybiB2b2lkIG9tYXBfc3RvcF9sY2RfZG1hKHZvaWQpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfbGNkX2RtYV9leHRfY29udHJvbGxlcihpbnQgZXh0ZXJuYWwpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfbGNkX2RtYV9zaW5nbGVfdHJhbnNmZXIoaW50IHNpbmdsZSk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9sY2RfZG1hX2IxKHVuc2lnbmVkIGxvbmcgYWRkciwgdTE2IGZiX3hyZXMsIHUxNiBmYl95cmVzLAorCQkJCWludCBkYXRhX3R5cGUpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfbGNkX2RtYV9iMV9yb3RhdGlvbihpbnQgcm90YXRlKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2xjZF9kbWFfYjFfdnhyZXModW5zaWduZWQgbG9uZyB2eHJlcyk7CitleHRlcm4gdm9pZCBvbWFwX3NldF9sY2RfZG1hX2IxX21pcnJvcihpbnQgbWlycm9yKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2xjZF9kbWFfYjFfc2NhbGUodW5zaWduZWQgaW50IHhzY2FsZSwgdW5zaWduZWQgaW50IHlzY2FsZSk7CisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0RNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdiMTI2OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDMyIEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBPTUFQLWJhc2VkIHBsYXRmb3JtcworICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisKKyAJCS5tYWNybwlkaXNhYmxlX2ZpcQorCQkuZW5kbQorCisJCS5tYWNybwlnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKwkJbGRyCVxiYXNlLCA9SU9fQUREUkVTUyhPTUFQX0lIMV9CQVNFKQorCQlsZHIJXGlycW5yLCBbXGJhc2UsICNJUlFfSVRSX1JFR19PRkZTRVRdCisJCWxkcglcdG1wLCBbXGJhc2UsICNJUlFfTUlSX1JFR19PRkZTRVRdCisJCW1vdglcaXJxc3RhdCwgIzB4ZmZmZmZmZmYKKwkJYmljCVx0bXAsIFxpcnFzdGF0LCBcdG1wCisJCXRzdAlcaXJxbnIsIFx0bXAKKwkJYmVxCTE1MTBmCisKKwkJbGRyCVxpcnFuciwgW1xiYXNlLCAjSVJRX1NJUl9GSVFfUkVHX09GRlNFVF0KKwkJY21wCVxpcnFuciwgIzAKKwkJbGRyZXEJXGlycW5yLCBbXGJhc2UsICNJUlFfU0lSX0lSUV9SRUdfT0ZGU0VUXQorCQljbXBlcQlcaXJxbnIsICNJTlRfSUgyX0lSUQorCQlsZHJlcQlcYmFzZSwgPUlPX0FERFJFU1MoT01BUF9JSDJfQkFTRSkKKwkJbGRyZXEJXGlycW5yLCBbXGJhc2UsICNJUlFfU0lSX0lSUV9SRUdfT0ZGU0VUXQorCQlhZGRlcXMJXGlycW5yLCBcaXJxbnIsICMzMgorMTUxMDoKKwkJLmVuZG0KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9mcGdhLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2ZwZ2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzY4MDdkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9mcGdhLmgKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2ZwZ2EuaAorICoKKyAqIEludGVycnVwdCBoYW5kbGVyIGZvciBPTUFQLTE1MTAgRlBHQQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBHcmVnIExvbm5vbiA8Z2xvbm5vbkByaWRnZXJ1bi5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqCisgKiBTZXBhcmF0ZWQgRlBHQSBpbnRlcnJ1cHRzIGZyb20gaW5ub3ZhdG9yMTUxMC5jIGFuZCBjbGVhbmVkIHVwIGZvciAyLjYKKyAqIENvcHlyaWdodCAoQykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbiBieSBUb255IExpbmRyZ2VuIDx0b255QGF0b21pZGUuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfRlBHQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9GUEdBX0gKKworI2lmIGRlZmluZWQoQ09ORklHX01BQ0hfT01BUF9JTk5PVkFUT1IpICYmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE1MTApCitleHRlcm4gdm9pZCBvbWFwMTUxMF9mcGdhX2luaXRfaXJxKHZvaWQpOworI2Vsc2UKKyNkZWZpbmUgb21hcDE1MTBfZnBnYV9pbml0X2lycSgpCSgwKQorI2VuZGlmCisKKyNkZWZpbmUgZnBnYV9yZWFkKHJlZykJCQlfX3Jhd19yZWFkYihyZWcpCisjZGVmaW5lIGZwZ2Ffd3JpdGUodmFsLCByZWcpCQlfX3Jhd193cml0ZWIodmFsLCByZWcpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBIMi9QMiBEZWJ1ZyBib2FyZCBGUEdBCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworLyogbWFwcyBpbiB0aGUgRlBHQSByZWdpc3RlcnMgYW5kIHRoZSBFVEhSIHJlZ2lzdGVycyAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX0JBU0UJCTB4RTgwMDAwMDAJLyogVkEgKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9TSVpFCQlTWl80SwkJLyogU0laRSAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX1NUQVJUCQkweDA0MDAwMDAwCS8qIFBBICovCisKKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9FVEhSX1NUQVJUCShIMlAyX0RCR19GUEdBX1NUQVJUICsgMHgzMDApCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfRlBHQV9SRVYJCShIMlAyX0RCR19GUEdBX0JBU0UgKyAweDEwKQkvKiBGUEdBIFJldmlzaW9uICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfQk9BUkRfUkVWCQkoSDJQMl9EQkdfRlBHQV9CQVNFICsgMHgxMikJLyogQm9hcmQgUmV2aXNpb24gKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9HUElPCQkoSDJQMl9EQkdfRlBHQV9CQVNFICsgMHgxNCkJLyogR1BJTyBvdXRwdXRzICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEVEUwkJKEgyUDJfREJHX0ZQR0FfQkFTRSArIDB4MTYpCS8qIExFRHMgb3V0cHV0cyAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX01JU0NfSU5QVVRTCShIMlAyX0RCR19GUEdBX0JBU0UgKyAweDE4KQkvKiBNaXNjIGlucHV0cyAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX0xBTl9TVEFUVVMJKEgyUDJfREJHX0ZQR0FfQkFTRSArIDB4MUEpCS8qIExBTiBTdGF0dXMgbGluZSAqLworI2RlZmluZSBIMlAyX0RCR19GUEdBX0xBTl9SRVNFVAkJKEgyUDJfREJHX0ZQR0FfQkFTRSArIDB4MUMpCS8qIExBTiBSZXNldCBsaW5lICovCisKKy8qIE5PVEU6ICBtb3N0IGJvYXJkcyBkb24ndCBoYXZlIGEgc3RhdGljIG1hcHBpbmcgZm9yIHRoZSBGUEdBIC4uLiAqLworc3RydWN0IGgycDJfZGJnX2ZwZ2EgeworCS8qIG9mZnNldCAweDAwICovCisJdTE2CQlzbWM5MXhbOF07CisJLyogb2Zmc2V0IDB4MTAgKi8KKwl1MTYJCWZwZ2FfcmV2OworCXUxNgkJYm9hcmRfcmV2OworCXUxNgkJZ3Bpb19vdXRwdXRzOworCXUxNgkJbGVkczsKKwkvKiBvZmZzZXQgMHgxOCAqLworCXUxNgkJbWlzY19pbnB1dHM7CisJdTE2CQlsYW5fc3RhdHVzOworCXUxNgkJbGFuX3Jlc2V0OworCXUxNgkJcmVzZXJ2ZWQwOworCS8qIG9mZnNldCAweDIwICovCisJdTE2CQlwczJfZGF0YTsKKwl1MTYJCXBzMl9jdHJsOworCS8qIHBsdXMgYWxzbyA0IHJzMjMyIHBvcnRzIC4uLiAqLworfTsKKworLyogTEVEcyBkZWZpbml0aW9uIG9uIGRlYnVnIGJvYXJkICgxNiBMRURzLCBhbGwgcGh5c2ljYWxseSBncmVlbikgKi8KKyNkZWZpbmUgSDJQMl9EQkdfRlBHQV9MRURfR1JFRU4JCSgxIDw8IDE1KQorI2RlZmluZSBIMlAyX0RCR19GUEdBX0xFRF9BTUJFUgkJKDEgPDwgMTQpCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEVEX1JFRAkJKDEgPDwgMTMpCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTEVEX0JMVUUJCSgxIDw8IDEyKQorLyogIGNwdTAgbG9hZC1tZXRlciBMRURzICovCisjZGVmaW5lIEgyUDJfREJHX0ZQR0FfTE9BRF9NRVRFUgkoMSA8PCAwKQkvLyBBIGJpdCBvZiBmdW4gb24gb3VyIGJvYXJkIC4uLgorI2RlZmluZSBIMlAyX0RCR19GUEdBX0xPQURfTUVURVJfU0laRQkxMQorI2RlZmluZSBIMlAyX0RCR19GUEdBX0xPQURfTUVURVJfTUFTSwkoKDEgPDwgSDJQMl9EQkdfRlBHQV9MT0FEX01FVEVSX1NJWkUpIC0gMSkKKworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgT01BUC0xNTEwIEZQR0EKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfQkFTRQkJCTB4RTgwMDAwMDAJLyogVmlydHVhbCAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX1NJWkUJCQlTWl80SworI2RlZmluZSBPTUFQMTUxMF9GUEdBX1NUQVJUCQkJMHgwODAwMDAwMAkvKiBQaHlzaWNhbCAqLworCisvKiBSZXZpc2lvbiAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX1JFVl9MT1cJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgwKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX1JFVl9ISUdICQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MSkKKworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0xDRF9QQU5FTF9DT05UUk9MCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX0xFRF9ESUdJVAkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDMpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0hJRF9TUEkJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHg0KQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX1BPV0VSCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4NSkKKworLyogSW50ZXJydXB0IHN0YXR1cyAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0lTUl9MTwkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDYpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSVNSX0hJCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4NykKKworLyogSW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9JTVJfTE8JCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHg4KQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX0lNUl9ISQkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDkpCisKKy8qIFJlc2V0IHJlZ2lzdGVycyAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hPU1RfUkVTRVQJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweGEpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUlNUCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4YikKKworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0FVRElPCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4YykKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ESVAJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHhlKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX0ZQR0FfSU8JCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHhmKQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX1VBUlQxCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MTQpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfVUFSVDIJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxNSkKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9PTUFQMTUxMF9TVEFUVVMJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDE2KQorI2RlZmluZSBPTUFQMTUxMF9GUEdBX0JPQVJEX1JFVgkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDE4KQorI2RlZmluZSBPTUFQMTUxMFAxX1BQVF9EQVRBCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MTAwKQorI2RlZmluZSBPTUFQMTUxMFAxX1BQVF9TVEFUVVMJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxMDEpCisjZGVmaW5lIE9NQVAxNTEwUDFfUFBUX0NPTlRST0wJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgxMDIpCisKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9UT1VDSFNDUkVFTgkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjA0KQorCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0lORk8JCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMDUpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0xDRF9CUklHSFRfTE8JCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIwNikKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfTENEX0JSSUdIVF9ISQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjA3KQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9MRURfR1JOX0xPCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMDgpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0xFRF9HUk5fSEkJCShPTUFQMTUxMF9GUEdBX0JBU0UgKyAweDIwOSkKKyNkZWZpbmUgSU5OT1ZBVE9SX0ZQR0FfTEVEX1JFRF9MTwkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjBhKQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9MRURfUkVEX0hJCQkoT01BUDE1MTBfRlBHQV9CQVNFICsgMHgyMGIpCisjZGVmaW5lIElOTk9WQVRPUl9GUEdBX0NBTV9VU0JfQ09OVFJPTAkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjBjKQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9FWFBfQ09OVFJPTAkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjBkKQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9JU1IyCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjBlKQorI2RlZmluZSBJTk5PVkFUT1JfRlBHQV9JTVIyCQkJKE9NQVAxNTEwX0ZQR0FfQkFTRSArIDB4MjEwKQorCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfRVRIUl9TVEFSVAkJKE9NQVAxNTEwX0ZQR0FfU1RBUlQgKyAweDMwMCkKKworLyoKKyAqIFBvd2VyIHVwIEdpZ2EgVUFSVCBkcml2ZXIsIHR1cm4gb24gSElEIGNsb2NrLgorICogVHVybiBvZmYgQlQgcG93ZXIsIHNpbmNlIHdlJ3JlIG5vdCB1c2luZyBpdCBhbmQgaXQKKyAqIGRyYXdzIHBvd2VyLgorICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUkVTRVRfVkFMVUUJCTB4NDIKKworI2RlZmluZSBPTUFQMTUxMF9GUEdBX1BDUl9JRl9QRDAJCSgxIDw8IDcpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX0NPTTJfRU4JCSgxIDw8IDYpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX0NPTTFfRU4JCSgxIDw8IDUpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX0VYUF9QRDAJCSgxIDw8IDQpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX0VYUF9QRDEJCSgxIDw8IDMpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSXzQ4TUhaX0NMSwkJKDEgPDwgMikKKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9QQ1JfNE1IWl9DTEsJCSgxIDw8IDEpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfUENSX1JTUlZEX0JJVDAJCSgxIDw8IDApCisKKy8qCisgKiBJbm5vdmF0b3IvT01BUDE1MTAgRlBHQSBISUQgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zCisgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfU0NMSwkoMTw8MCkJLyogb3V0cHV0ICovCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSElEX01PU0kJKDE8PDEpCS8qIG91dHB1dCAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9uU1MJKDE8PDIpCS8qIG91dHB1dCAwLzEgY2hpcCBpZGxlL3NlbGVjdCAqLworI2RlZmluZSBPTUFQMTUxMF9GUEdBX0hJRF9uSFNVUwkoMTw8MykJLyogb3V0cHV0IDAvMSBob3N0IGFjdGl2ZS9zdXNwZW5kZWQgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfTUlTTwkoMTw8NCkJLyogaW5wdXQgKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfQVROCSgxPDw1KQkvKiBpbnB1dCAgMC8xIGNoaXAgaWRsZS9BVE4gKi8KKyNkZWZpbmUgT01BUDE1MTBfRlBHQV9ISURfcnNydmQJKDE8PDYpCisjZGVmaW5lIE9NQVAxNTEwX0ZQR0FfSElEX1JFU0VUbiAoMTw8NykJLyogb3V0cHV0IC0gMC8xIFVTQVIgcmVzZXQvcnVuICovCisKKy8qIFRoZSBGUEdBIElSUSBpcyBjYXNjYWRlZCB0aHJvdWdoIEdQSU9fMTMgKi8KKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0EJCShJSF9HUElPX0JBU0UgKyAxMykKKworLyogSVJRIE51bWJlcnMgZm9yIGludGVycnVwdHMgbXV4ZWQgdGhyb3VnaCB0aGUgRlBHQSAqLworI2RlZmluZSBPTUFQMTUxMF9JSF9GUEdBX0JBU0UJCUlIX0JPQVJEX0JBU0UKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0FfQVROCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMCkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0FfQUNLCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMSkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0EyCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMikKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0EzCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMykKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E0CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgNCkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E1CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgNSkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E2CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgNikKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E3CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgNykKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E4CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgOCkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0E5CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgOSkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0ExMAkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDEwKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTExCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTEpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBMTIJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxMikKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0VUSEVSCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTMpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBVUFSVDEJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAxNCkKKyNkZWZpbmUgT01BUDE1MTBfSU5UX0ZQR0FVQVJUMgkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDE1KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9UUwkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDE2KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTE3CQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMTcpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBX0NBTQkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDE4KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9SVENfQQkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDE5KQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9SVENfQgkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDIwKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQV9DRAkJKE9NQVAxNTEwX0lIX0ZQR0FfQkFTRSArIDIxKQorI2RlZmluZSBPTUFQMTUxMF9JTlRfRlBHQTIyCQkoT01BUDE1MTBfSUhfRlBHQV9CQVNFICsgMjIpCisjZGVmaW5lIE9NQVAxNTEwX0lOVF9GUEdBMjMJCShPTUFQMTUxMF9JSF9GUEdBX0JBU0UgKyAyMykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2dwaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZDJmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2dwaW8uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncGlvLmgKKyAqCisgKiBPTUFQIEdQSU8gaGFuZGxpbmcgZGVmaW5lcyBhbmQgZnVuY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAzIE5va2lhIENvcnBvcmF0aW9uCisgKgorICogV3JpdHRlbiBieSBKdWhhIFlyavZs5CA8anVoYS55cmpvbGFAbm9raWEuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfR1BJT19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9HUElPX0gKKworI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaXJxcy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCisjZGVmaW5lIE9NQVBfTVBVSU9fQkFTRQkJCTB4ZmZmYjUwMDAKKyNkZWZpbmUgT01BUF9NUFVJT19JTlBVVF9MQVRDSAkJMHgwMAorI2RlZmluZSBPTUFQX01QVUlPX09VVFBVVAkJMHgwNAorI2RlZmluZSBPTUFQX01QVUlPX0lPX0NOVEwJCTB4MDgKKyNkZWZpbmUgT01BUF9NUFVJT19LQlJfTEFUQ0gJCTB4MTAKKyNkZWZpbmUgT01BUF9NUFVJT19LQkMJCQkweDE0CisjZGVmaW5lIE9NQVBfTVBVSU9fR1BJT19FVkVOVF9NT0RFCTB4MTgKKyNkZWZpbmUgT01BUF9NUFVJT19HUElPX0lOVF9FREdFCTB4MWMKKyNkZWZpbmUgT01BUF9NUFVJT19LQkRfSU5UCQkweDIwCisjZGVmaW5lIE9NQVBfTVBVSU9fR1BJT19JTlQJCTB4MjQKKyNkZWZpbmUgT01BUF9NUFVJT19LQkRfTUFTS0lUCQkweDI4CisjZGVmaW5lIE9NQVBfTVBVSU9fR1BJT19NQVNLSVQJCTB4MmMKKyNkZWZpbmUgT01BUF9NUFVJT19HUElPX0RFQk9VTkNJTkcJMHgzMAorI2RlZmluZSBPTUFQX01QVUlPX0xBVENICQkweDM0CisKKyNkZWZpbmUgT01BUF9NUFVJTyhucikJCShPTUFQX01BWF9HUElPX0xJTkVTICsgKG5yKSkKKyNkZWZpbmUgT01BUF9HUElPX0lTX01QVUlPKG5yKQkoKG5yKSA+PSBPTUFQX01BWF9HUElPX0xJTkVTKQorCisjZGVmaW5lIE9NQVBfR1BJT19JUlEobnIpCShPTUFQX0dQSU9fSVNfTVBVSU8obnIpID8gXAorCQkJCSBJSF9NUFVJT19CQVNFICsgKChucikgJiAweDBmKSA6IFwKKwkJCQkgSUhfR1BJT19CQVNFICsgKChucikgJiAweDNmKSkKKworLyogRm9yIEVER0VDVFJMICovCisjZGVmaW5lIE9NQVBfR1BJT19OT19FREdFCSAgMHgwMAorI2RlZmluZSBPTUFQX0dQSU9fRkFMTElOR19FREdFCSAgMHgwMQorI2RlZmluZSBPTUFQX0dQSU9fUklTSU5HX0VER0UJICAweDAyCisjZGVmaW5lIE9NQVBfR1BJT19CT1RIX0VER0VTCSAgMHgwMworCitleHRlcm4gaW50IG9tYXBfZ3Bpb19pbml0KHZvaWQpOwkvKiBDYWxsIGZyb20gYm9hcmQgaW5pdCBvbmx5ICovCitleHRlcm4gaW50IG9tYXBfcmVxdWVzdF9ncGlvKGludCBncGlvKTsKK2V4dGVybiB2b2lkIG9tYXBfZnJlZV9ncGlvKGludCBncGlvKTsKK2V4dGVybiB2b2lkIG9tYXBfc2V0X2dwaW9fZGlyZWN0aW9uKGludCBncGlvLCBpbnQgaXNfaW5wdXQpOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZ3Bpb19kYXRhb3V0KGludCBncGlvLCBpbnQgZW5hYmxlKTsKK2V4dGVybiBpbnQgb21hcF9nZXRfZ3Bpb19kYXRhaW4oaW50IGdwaW8pOworZXh0ZXJuIHZvaWQgb21hcF9zZXRfZ3Bpb19lZGdlX2N0cmwoaW50IGdwaW8sIGludCBlZGdlKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlMDZjNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDMyNCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaGFyZHdhcmUuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQIHByb2Nlc3NvcnMgYW5kIGJvYXJkcworICoKKyAqIE5PVEU6IFBsZWFzZSBwdXQgZGV2aWNlIGRyaXZlciBzcGVjaWZpYyBkZWZpbmVzIGludG8gYSBzZXBhcmF0ZSBoZWFkZXIKKyAqCSBmaWxlIGZvciBlYWNoIGRyaXZlci4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUmlkZ2VSdW4sIEluYy4KKyAqIEF1dGhvcjogUmlkZ2VSdW4sIEluYy4gR3JlZyBMb25ub24gPGdsb25ub25AcmlkZ2VydW4uY29tPgorICoKKyAqIFJlb3JnYW5pemVkIGZvciBMaW51eC0yLjYgYnkgVG9ueSBMaW5kZ3JlbiA8dG9ueUBhdG9taWRlLmNvbT4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBkZS5ib3NjaC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfSEFSRFdBUkVfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL3NpemVzLmg+CisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaWZuZGVmIF9fQVNTRU1CTEVSX18KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9jcHUuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGFzbS9hcmNoL2lvLmg+CisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvbW1vbiBkZWZpbml0aW9ucyBmb3IgYWxsIE9NQVAgcHJvY2Vzc29ycworICogTk9URTogUHV0IGFsbCBwcm9jZXNzb3Igb3IgYm9hcmQgc3BlY2lmaWMgcGFydHMgdG8gdGhlIHNwZWNpYWwgaGVhZGVyCisgKgkgZmlsZXMuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ2xvY2tzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgQ0xLR0VOX1JFR19CQVNFCQkoMHhmZmZlY2UwMCkKKyNkZWZpbmUgQVJNX0NLQ1RMCQkoQ0xLR0VOX1JFR19CQVNFICsgMHgwKQorI2RlZmluZSBBUk1fSURMRUNUMQkJKENMS0dFTl9SRUdfQkFTRSArIDB4NCkKKyNkZWZpbmUgQVJNX0lETEVDVDIJCShDTEtHRU5fUkVHX0JBU0UgKyAweDgpCisjZGVmaW5lIEFSTV9FV1VQQ1QJCShDTEtHRU5fUkVHX0JBU0UgKyAweEMpCisjZGVmaW5lIEFSTV9SU1RDVDEJCShDTEtHRU5fUkVHX0JBU0UgKyAweDEwKQorI2RlZmluZSBBUk1fUlNUQ1QyCQkoQ0xLR0VOX1JFR19CQVNFICsgMHgxNCkKKyNkZWZpbmUgQVJNX1NZU1NUCQkoQ0xLR0VOX1JFR19CQVNFICsgMHgxOCkKKyNkZWZpbmUgQVJNX0lETEVDVDMJCShDTEtHRU5fUkVHX0JBU0UgKyAweDI0KQorCisjZGVmaW5lIENLX1JBVEVGCQkxCisjZGVmaW5lIENLX0lETEVGCQkyCisjZGVmaW5lIENLX0VOQUJMRUYJCTQKKyNkZWZpbmUgQ0tfU0VMRUNURgkJOAorI2RlZmluZSBTRVRBUk1fSURMRV9TSElGVAorCisvKiBEUExMIGNvbnRyb2wgcmVnaXN0ZXJzICovCisjZGVmaW5lIERQTExfQ1RMCQkoMHhmZmZlY2YwMCkKKworLyogRFNQIGNsb2NrIGNvbnRyb2wgKi8KKyNkZWZpbmUgRFNQX0NPTkZJR19SRUdfQkFTRSAgICAgKDB4ZTEwMDgwMDApCisjZGVmaW5lIERTUF9JRExFQ1QxCQkoRFNQX0NPTkZJR19SRUdfQkFTRSArIDB4NCkKKyNkZWZpbmUgRFNQX0lETEVDVDIJCShEU1BfQ09ORklHX1JFR19CQVNFICsgMHg4KQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBVUExECisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBVTFBEX1JFR19CQVNFCQkoMHhmZmZlMDgwMCkKKyNkZWZpbmUgVUxQRF9JVF9TVEFUVVMJCShVTFBEX1JFR19CQVNFICsgMHgxNCkKKyNkZWZpbmUgVUxQRF9DTE9DS19DVFJMCQkoVUxQRF9SRUdfQkFTRSArIDB4MzApCisjCWRlZmluZSBESVNfVVNCX1BWQ0lfQ0xLCQkoMSA8PCA1KQkvKiBubyBVU0IvRkFDIHN5bmNoICovCisjCWRlZmluZSBVU0JfTUNMS19FTgkJKDEgPDwgNCkJLyogZW5hYmxlIFc0X1VTQl9DTEtPICovCisjZGVmaW5lIFVMUERfU09GVF9SRVEJCShVTFBEX1JFR19CQVNFICsgMHgzNCkKKyMJZGVmaW5lIFNPRlRfVURDX1JFUQkJKDEgPDwgNCkKKyMJZGVmaW5lIFNPRlRfVVNCX0NMS19SRVEJCSgxIDw8IDMpCisjCWRlZmluZSBTT0ZUX0RQTExfUkVRCQkoMSA8PCAwKQorI2RlZmluZSBVTFBEX0RQTExfQ1RSTAkJKFVMUERfUkVHX0JBU0UgKyAweDNjKQorI2RlZmluZSBVTFBEX1NUQVRVU19SRVEJCShVTFBEX1JFR19CQVNFICsgMHg0MCkKKyNkZWZpbmUgVUxQRF9BUExMX0NUUkwJCShVTFBEX1JFR19CQVNFICsgMHg0YykKKyNkZWZpbmUgVUxQRF9QT1dFUl9DVFJMCQkoVUxQRF9SRUdfQkFTRSArIDB4NTApCisjZGVmaW5lIFVMUERfU09GVF9ESVNBQkxFX1JFUV9SRUcJKFVMUERfUkVHX0JBU0UgKyAweDY4KQorIwlkZWZpbmUgRElTX01NQzJfRFBMTF9SRVEJKDEgPDwgMTEpCisjCWRlZmluZSBESVNfTU1DMV9EUExMX1JFUQkoMSA8PCAxMCkKKyMJZGVmaW5lIERJU19VQVJUM19EUExMX1JFUQkoMSA8PCA5KQorIwlkZWZpbmUgRElTX1VBUlQyX0RQTExfUkVRCSgxIDw8IDgpCisjCWRlZmluZSBESVNfVUFSVDFfRFBMTF9SRVEJKDEgPDwgNykKKyMJZGVmaW5lIERJU19VU0JfSE9TVF9EUExMX1JFUQkoMSA8PCA2KQorI2RlZmluZSBVTFBEX1NEV19DTEtfRElWX0NUUkxfU0VMCShVTFBEX1JFR19CQVNFICsgMHg3NCkKKyNkZWZpbmUgVUxQRF9DQU1fQ0xLX0NUUkwJKFVMUERfUkVHX0JBU0UgKyAweDdjKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBXYXRjaGRvZyB0aW1lcgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogV2F0Y2hkb2cgdGltZXIgd2l0aGluIHRoZSBPTUFQMy4yIGdpZ2FjZWxsICovCisjZGVmaW5lIE9NQVBfTVBVX1dBVENIRE9HX0JBU0UJKDB4ZmZmZWM4MDApCisjZGVmaW5lIE9NQVBfV0RUX1RJTUVSCQkoT01BUF9NUFVfV0FUQ0hET0dfQkFTRSArIDB4MCkKKyNkZWZpbmUgT01BUF9XRFRfTE9BRF9USU0JKE9NQVBfTVBVX1dBVENIRE9HX0JBU0UgKyAweDQpCisjZGVmaW5lIE9NQVBfV0RUX1JFQURfVElNCShPTUFQX01QVV9XQVRDSERPR19CQVNFICsgMHg0KQorI2RlZmluZSBPTUFQX1dEVF9USU1FUl9NT0RFCShPTUFQX01QVV9XQVRDSERPR19CQVNFICsgMHg4KQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJbnRlcnJ1cHRzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQX0lIMV9CQVNFCQkweGZmZmVjYjAwCisjZGVmaW5lIE9NQVBfSUgyX0JBU0UJCTB4ZmZmZTAwMDAKKworI2RlZmluZSBPTUFQX0lIMV9JVFIJCShPTUFQX0lIMV9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9JSDFfTUlSCQkoT01BUF9JSDFfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVBfSUgxX1NJUl9JUlEJKE9NQVBfSUgxX0JBU0UgKyAweDEwKQorI2RlZmluZSBPTUFQX0lIMV9TSVJfRklRCShPTUFQX0lIMV9CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUF9JSDFfQ09OVFJPTAkoT01BUF9JSDFfQkFTRSArIDB4MTgpCisjZGVmaW5lIE9NQVBfSUgxX0lMUjAJCShPTUFQX0lIMV9CQVNFICsgMHgxYykKKyNkZWZpbmUgT01BUF9JSDFfSVNSCQkoT01BUF9JSDFfQkFTRSArIDB4OWMpCisKKyNkZWZpbmUgT01BUF9JSDJfSVRSCQkoT01BUF9JSDJfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfSUgyX01JUgkJKE9NQVBfSUgyX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0lIMl9TSVJfSVJRCShPTUFQX0lIMl9CQVNFICsgMHgxMCkKKyNkZWZpbmUgT01BUF9JSDJfU0lSX0ZJUQkoT01BUF9JSDJfQkFTRSArIDB4MTQpCisjZGVmaW5lIE9NQVBfSUgyX0NPTlRST0wJKE9NQVBfSUgyX0JBU0UgKyAweDE4KQorI2RlZmluZSBPTUFQX0lIMl9JTFIwCQkoT01BUF9JSDJfQkFTRSArIDB4MWMpCisjZGVmaW5lIE9NQVBfSUgyX0lTUgkJKE9NQVBfSUgyX0JBU0UgKyAweDljKQorCisjZGVmaW5lIElSUV9JVFJfUkVHX09GRlNFVAkweDAwCisjZGVmaW5lIElSUV9NSVJfUkVHX09GRlNFVAkweDA0CisjZGVmaW5lIElSUV9TSVJfSVJRX1JFR19PRkZTRVQJMHgxMAorI2RlZmluZSBJUlFfU0lSX0ZJUV9SRUdfT0ZGU0VUCTB4MTQKKyNkZWZpbmUgSVJRX0NPTlRST0xfUkVHX09GRlNFVAkweDE4CisjZGVmaW5lIElSUV9JU1JfUkVHX09GRlNFVAkweDljCisjZGVmaW5lIElSUV9JTFIwX1JFR19PRkZTRVQJMHgxYworI2RlZmluZSBJUlFfR01SX1JFR19PRkZTRVQJMHhhMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgTU9EX0NPTkZfQ1RSTF8wCQkweGZmZmUxMDgwCisjZGVmaW5lIE1PRF9DT05GX0NUUkxfMQkJMHhmZmZlMTExMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUGluIG11bHRpcGxleGluZyByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBGVU5DX01VWF9DVFJMXzAJCTB4ZmZmZTEwMDAKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF8xCQkweGZmZmUxMDA0CisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfMgkJMHhmZmZlMTAwOAorI2RlZmluZSBDT01QX01PREVfQ1RSTF8wCTB4ZmZmZTEwMGMKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF8zCQkweGZmZmUxMDEwCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfNAkJMHhmZmZlMTAxNAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzUJCTB4ZmZmZTEwMTgKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF82CQkweGZmZmUxMDFDCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfNwkJMHhmZmZlMTAyMAorI2RlZmluZSBGVU5DX01VWF9DVFJMXzgJCTB4ZmZmZTEwMjQKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF85CQkweGZmZmUxMDI4CisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfQQkJMHhmZmZlMTAyQworI2RlZmluZSBGVU5DX01VWF9DVFJMX0IJCTB4ZmZmZTEwMzAKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF9DCQkweGZmZmUxMDM0CisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfRAkJMHhmZmZlMTAzOAorI2RlZmluZSBQVUxMX0RXTl9DVFJMXzAJCTB4ZmZmZTEwNDAKKyNkZWZpbmUgUFVMTF9EV05fQ1RSTF8xCQkweGZmZmUxMDQ0CisjZGVmaW5lIFBVTExfRFdOX0NUUkxfMgkJMHhmZmZlMTA0OAorI2RlZmluZSBQVUxMX0RXTl9DVFJMXzMJCTB4ZmZmZTEwNGMKKyNkZWZpbmUgUFVMTF9EV05fQ1RSTF80CQkweGZmZmUxMGFjCisKKy8qIE9NQVAtMTYxMCBzcGVjaWZpYyBtdWx0aXBsZXhpbmcgcmVnaXN0ZXJzICovCisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfRQkJMHhmZmZlMTA5MAorI2RlZmluZSBGVU5DX01VWF9DVFJMX0YJCTB4ZmZmZTEwOTQKKyNkZWZpbmUgRlVOQ19NVVhfQ1RSTF8xMAkweGZmZmUxMDk4CisjZGVmaW5lIEZVTkNfTVVYX0NUUkxfMTEJMHhmZmZlMTA5YworI2RlZmluZSBGVU5DX01VWF9DVFJMXzEyCTB4ZmZmZTEwYTAKKyNkZWZpbmUgUFVfUERfU0VMXzAJCTB4ZmZmZTEwYjQKKyNkZWZpbmUgUFVfUERfU0VMXzEJCTB4ZmZmZTEwYjgKKyNkZWZpbmUgUFVfUERfU0VMXzIJCTB4ZmZmZTEwYmMKKyNkZWZpbmUgUFVfUERfU0VMXzMJCTB4ZmZmZTEwYzAKKyNkZWZpbmUgUFVfUERfU0VMXzQJCTB4ZmZmZTEwYzQKKworLyogVGltZXIzMksgZm9yIDE2MTAgYW5kIDE3MTAqLworI2RlZmluZSBPTUFQX1RJTUVSMzJLX0JBU0UJMHhGRkZCQzQwMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBUSVBCIGJ1cyBpbnRlcmZhY2UKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFRJUEJfUFVCTElDX0NOVExfQkFTRQkJMHhmZmZlZDMwMAorI2RlZmluZSBNUFVfUFVCTElDX1RJUEJfQ05UTAkJKFRJUEJfUFVCTElDX0NOVExfQkFTRSArIDB4OCkKKyNkZWZpbmUgVElQQl9QUklWQVRFX0NOVExfQkFTRQkJMHhmZmZlY2EwMAorI2RlZmluZSBNUFVfUFJJVkFURV9USVBCX0NOVEwJCShUSVBCX1BSSVZBVEVfQ05UTF9CQVNFICsgMHg4KQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVBVSSBpbnRlcmZhY2UKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBNUFVJX0JBU0UJCQkoMHhmZmZlYzkwMCkKKyNkZWZpbmUgTVBVSV9DVFJMCQkJKE1QVUlfQkFTRSArIDB4MCkKKyNkZWZpbmUgTVBVSV9ERUJVR19BRERSCQkJKE1QVUlfQkFTRSArIDB4NCkKKyNkZWZpbmUgTVBVSV9ERUJVR19EQVRBCQkJKE1QVUlfQkFTRSArIDB4OCkKKyNkZWZpbmUgTVBVSV9ERUJVR19GTEFHCQkJKE1QVUlfQkFTRSArIDB4YykKKyNkZWZpbmUgTVBVSV9TVEFUVVNfUkVHCQkJKE1QVUlfQkFTRSArIDB4MTApCisjZGVmaW5lIE1QVUlfRFNQX1NUQVRVUwkJCShNUFVJX0JBU0UgKyAweDE0KQorI2RlZmluZSBNUFVJX0RTUF9CT09UX0NPTkZJRwkJKE1QVUlfQkFTRSArIDB4MTgpCisjZGVmaW5lIE1QVUlfRFNQX0FQSV9DT05GSUcJCShNUFVJX0JBU0UgKyAweDFjKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTEVEIFB1bHNlIEdlbmVyYXRvcgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVBfTFBHMV9CQVNFCQkJMHhmZmZiZDAwMAorI2RlZmluZSBPTUFQX0xQRzJfQkFTRQkJCTB4ZmZmYmQ4MDAKKyNkZWZpbmUgT01BUF9MUEcxX0xDUgkJCShPTUFQX0xQRzFfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfTFBHMV9QTVIJCQkoT01BUF9MUEcxX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0xQRzJfTENSCQkJKE9NQVBfTFBHMl9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9MUEcyX1BNUgkJCShPTUFQX0xQRzJfQkFTRSArIDB4MDQpCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTZXJpYWwgcG9ydHMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVBfVUFSVDFfQkFTRQkJKHVuc2lnbmVkIGNoYXIgKikweGZmZmIwMDAwCisjZGVmaW5lIE9NQVBfVUFSVDJfQkFTRQkJKHVuc2lnbmVkIGNoYXIgKikweGZmZmIwODAwCisjZGVmaW5lIE9NQVBfVUFSVDNfQkFTRQkJKHVuc2lnbmVkIGNoYXIgKikweGZmZmI5ODAwCisjZGVmaW5lIE9NQVBfTUFYX05SX1BPUlRTCTMKKyNkZWZpbmUgT01BUDE1MTBfQkFTRV9CQVVECSgxMjAwMDAwMC8xNikKKyNkZWZpbmUgT01BUDE2WFhfQkFTRV9CQVVECSg0ODAwMDAwMC8xNikKKworI2RlZmluZSBpc19vbWFwX3BvcnQocCkJKHtpbnQgX19yZXQgPSAwOwkJCVwKKwkJCWlmIChwID09IElPX0FERFJFU1MoT01BUF9VQVJUMV9CQVNFKSB8fAlcCisJCQkgICAgcCA9PSBJT19BRERSRVNTKE9NQVBfVUFSVDJfQkFTRSkgfHwJXAorCQkJICAgIHAgPT0gSU9fQUREUkVTUyhPTUFQX1VBUlQzX0JBU0UpKQlcCisJCQkJX19yZXQgPSAxOwkJCVwKKwkJCV9fcmV0OwkJCQkJXAorCQkJfSkKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHJvY2Vzc29yIHNwZWNpZmljIGRlZmluZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDczMAorI2luY2x1ZGUgIm9tYXA3MzAuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE1MTAKKyNpbmNsdWRlICJvbWFwMTUxMC5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTZYWAorI2luY2x1ZGUgIm9tYXAxNnh4LmgiCisjZW5kaWYKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQm9hcmQgc3BlY2lmaWMgZGVmaW5lcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmZGVmIENPTkZJR19NQUNIX09NQVBfSU5OT1ZBVE9SCisjaW5jbHVkZSAiYm9hcmQtaW5ub3ZhdG9yLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NQUNIX09NQVBfSDIKKyNpbmNsdWRlICJib2FyZC1oMi5oIgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTUFDSF9PTUFQX1BFUlNFVVMyCisjaW5jbHVkZSAiYm9hcmQtcGVyc2V1czIuaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9IMworI2luY2x1ZGUgImJvYXJkLWgzLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NQUNIX09NQVBfSDQKKyNpbmNsdWRlICJib2FyZC1oNC5oIgorI2Vycm9yICJTdXBwb3J0IGZvciBINCBib2FyZCBub3QgeWV0IGltcGxlbWVudGVkLiIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9PU0sKKyNpbmNsdWRlICJib2FyZC1vc2suaCIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0hfVk9JQ0VCTFVFCisjaW5jbHVkZSAiYm9hcmQtdm9pY2VibHVlLmgiCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NQUNIX05FVFNUQVIKKyNpbmNsdWRlICJib2FyZC1uZXRzdGFyLmgiCisjZW5kaWYKKworI2VuZGlmIC8qICFfX0FTU0VNQkxFUl9fICovCisKKyNlbmRpZgkvKiBfX0FTTV9BUkNIX09NQVBfSEFSRFdBUkVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGM5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lvLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lvLmgKKyAqCisgKiBJTyBkZWZpbml0aW9ucyBmb3IgVEkgT01BUCBwcm9jZXNzb3JzIGFuZCBib2FyZHMKKyAqCisgKiBDb3BpZWQgZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaW8uaAorICogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgorICogTW9kaWZpY2F0aW9uczoKKyAqICAwNi0xMi0xOTk3CVJNSwlDcmVhdGVkLgorICogIDA3LTA0LTE5OTkJUk1LCU1ham9yIGNsZWFudXAKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZmZmZmYKKworLyoKKyAqIFdlIGRvbid0IGFjdHVhbGx5IGhhdmUgcmVhbCBJU0Egbm9yIFBDSSBidXNlcywgYnV0IHRoZXJlIGlzIHNvIG1hbnkKKyAqIGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgbWlnaHQganVzdCB3b3JrIGlmIHdlIGZha2UgdGhlbS4uLgorICovCisjZGVmaW5lIF9faW8oYSkJCQkoKHZvaWQgX19pb21lbSAqKShQQ0lPX0JBU0UgKyAoYSkpKQorI2RlZmluZSBfX21lbV9wY2koYSkJCShhKQorI2RlZmluZSBfX21lbV9pc2EoYSkJCShhKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSS9PIG1hcHBpbmcKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBJT19QSFlTCQkJMHhGRkZCMDAwMAorI2RlZmluZSBJT19PRkZTRVQJCTB4MDEwMDAwMDAJLyogVmlydHVhbCBJTyA9IDB4ZmVmYjAwMDAgKi8KKyNkZWZpbmUgSU9fVklSVAkJCShJT19QSFlTIC0gSU9fT0ZGU0VUKQorI2RlZmluZSBJT19TSVpFCQkJMHg0MDAwMAorI2RlZmluZSBJT19BRERSRVNTKHgpCQkoKHgpIC0gSU9fT0ZGU0VUKQorCisjZGVmaW5lIFBDSU9fQkFTRQkJMAorCisjZGVmaW5lIGlvX3Aydih4KSAgICAgICAgICAgICAgICgoeCkgLSBJT19PRkZTRVQpCisjZGVmaW5lIGlvX3YycCh4KSAgICAgICAgICAgICAgICgoeCkgKyBJT19PRkZTRVQpCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworCisvKgorICogRnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgT01BUCBJTyByZWdpb24KKyAqCisgKiBOT1RFOiAtIFVzZSBvbWFwX3JlYWQvd3JpdGVbYndsXSBmb3IgcGh5c2ljYWwgcmVnaXN0ZXIgYWRkcmVzc2VzCisgKgkgLSBVc2UgX19yYXdfcmVhZC93cml0ZVtid2xdKCkgZm9yIHZpcnR1YWwgcmVnaXN0ZXIgYWRkcmVzc2VzCisgKgkgLSBVc2UgSU9fQUREUkVTUyhwaHlzX2FkZHIpIHRvIGNvbnZlcnQgcmVnaXN0ZXJzIHRvIHZpcnR1YWwgYWRkcmVzc2VzCisgKgkgLSBETyBOT1QgdXNlIGhhcmRjb2RlZCB2aXJ0dWFsIGFkZHJlc3NlcyB0byBhbGxvdyBjaGFuZ2luZyB0aGUKKyAqCSAgIElPIGFkZHJlc3Mgc3BhY2UgYWdhaW4gaWYgbmVlZGVkCisgKi8KKyNkZWZpbmUgb21hcF9yZWFkYihhKQkJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAgKilJT19BRERSRVNTKGEpKQorI2RlZmluZSBvbWFwX3JlYWR3KGEpCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUlPX0FERFJFU1MoYSkpCisjZGVmaW5lIG9tYXBfcmVhZGwoYSkJCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAgICopSU9fQUREUkVTUyhhKSkKKworI2RlZmluZSBvbWFwX3dyaXRlYih2LGEpCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICopSU9fQUREUkVTUyhhKSA9ICh2KSkKKyNkZWZpbmUgb21hcF93cml0ZXcodixhKQkoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUlPX0FERFJFU1MoYSkgPSAodikpCisjZGVmaW5lIG9tYXBfd3JpdGVsKHYsYSkJKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICAgKilJT19BRERSRVNTKGEpID0gKHYpKQorCisvKiAxNiBiaXQgdXNlcyBMRFJIL1NUUkgsIGJhc2UgKy8tIG9mZnNldF84ICovCit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUxNiBvZmZzZXRbMjU2XTsgfSBfX3JlZ2Jhc2UxNjsKKyNkZWZpbmUgX19SRUdWMTYodmFkZHIpCQkoKF9fcmVnYmFzZTE2ICopKCh2YWRkcikmfjB4ZmYpKSBcCisJCQkJCS0+b2Zmc2V0WygodmFkZHIpJjB4ZmYpPj4xXQorI2RlZmluZSBfX1JFRzE2KHBhZGRyKSAgICAgICAgICBfX1JFR1YxNihpb19wMnYocGFkZHIpKQorCisvKiA4LzMyIGJpdCB1c2VzIExEUi9TVFIsIGJhc2UgKy8tIG9mZnNldF8xMiAqLwordHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSB1OCBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlODsKKyNkZWZpbmUgX19SRUdWOCh2YWRkcikJCSgoX19yZWdiYXNlOCAgKikoKHZhZGRyKSZ+NDA5NSkpIFwKKwkJCQkJLT5vZmZzZXRbKCh2YWRkcikmNDA5NSk+PjBdCisjZGVmaW5lIF9fUkVHOChwYWRkcikJCV9fUkVHVjgoaW9fcDJ2KHBhZGRyKSkKKwordHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSB1MzIgb2Zmc2V0WzQwOTZdOyB9IF9fcmVnYmFzZTMyOworI2RlZmluZSBfX1JFR1YzMih2YWRkcikJCSgoX19yZWdiYXNlMzIgKikoKHZhZGRyKSZ+NDA5NSkpIFwKKwkJCQkJLT5vZmZzZXRbKCh2YWRkcikmNDA5NSk+PjJdCisjZGVmaW5lIF9fUkVHMzIocGFkZHIpCQlfX1JFR1YzMihpb19wMnYocGFkZHIpKQorCisjZWxzZQorCisjZGVmaW5lIF9fUkVHOChwYWRkcikJCWlvX3AydihwYWRkcikKKyNkZWZpbmUgX19SRUcxNihwYWRkcikJCWlvX3AydihwYWRkcikKKyNkZWZpbmUgX19SRUczMihwYWRkcikJCWlvX3AydihwYWRkcikKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzAxZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmgKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSBHcmVnIExvbm5vbiAyMDAxCisgKiAgVXBkYXRlZCBmb3IgT01BUC0xNjEwIGJ5IFRvbnkgTGluZGdyZW4gPHRvbnlAYXRvbWlkZS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICoKKyAqIE5PVEU6IFRoZSBpbnRlcnJ1cHQgdmVjdG9ycyBmb3IgdGhlIE9NQVAtMTUwOSwgT01BUC0xNTEwLCBhbmQgT01BUC0xNjEwCisgKgkgYXJlIGRpZmZlcmVudC4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUDE1MTBfSVJRU19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUDE1MTBfSVJRU19ICisKKy8qCisgKiBJUlEgbnVtYmVycyBmb3IgaW50ZXJydXB0IGhhbmRsZXIgMQorICoKKyAqIE5PVEU6IFNlZSBhbHNvIHRoZSBPTUFQLTE1MTAgYW5kIDE2MTAgc3BlY2lmaWMgSVJRIG51bWJlcnMgYmVsb3cKKyAqCisgKi8KKyNkZWZpbmUgSU5UX0lIMl9JUlEJCTAKKyNkZWZpbmUgSU5UX0NBTUVSQQkJMQorI2RlZmluZSBJTlRfRklRCQkJMworI2RlZmluZSBJTlRfUlREWAkJNgorI2RlZmluZSBJTlRfRFNQX01NVV9BQk9SVAk3CisjZGVmaW5lIElOVF9IT1NUCQk4CisjZGVmaW5lIElOVF9BQk9SVAkJOQorI2RlZmluZSBJTlRfRFNQX01BSUxCT1gxCTEwCisjZGVmaW5lIElOVF9EU1BfTUFJTEJPWDIJMTEKKyNkZWZpbmUgSU5UX0JSSURHRV9QUklWCQkxMworI2RlZmluZSBJTlRfR1BJT19CQU5LMQkJMTQKKyNkZWZpbmUgSU5UX1VBUlQzCQkxNQorI2RlZmluZSBJTlRfVElNRVIzCQkxNgorI2RlZmluZSBJTlRfRE1BX0NIMF82CQkxOQorI2RlZmluZSBJTlRfRE1BX0NIMV83CQkyMAorI2RlZmluZSBJTlRfRE1BX0NIMl84CQkyMQorI2RlZmluZSBJTlRfRE1BX0NIMwkJMjIKKyNkZWZpbmUgSU5UX0RNQV9DSDQJCTIzCisjZGVmaW5lIElOVF9ETUFfQ0g1CQkyNAorI2RlZmluZSBJTlRfRE1BX0xDRAkJMjUKKyNkZWZpbmUgSU5UX1RJTUVSMQkJMjYKKyNkZWZpbmUgSU5UX1dEX1RJTUVSCQkyNworI2RlZmluZSBJTlRfQlJJREdFX1BVQgkJMjgKKyNkZWZpbmUgSU5UX1RJTUVSMgkJMzAKKyNkZWZpbmUgSU5UX0xDRF9DVFJMCQkzMQorCisvKgorICogT01BUC0xNTEwIHNwZWNpZmljIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAxCisgKi8KKyNkZWZpbmUgSU5UXzE1MTBfUkVTMgkJMgorI2RlZmluZSBJTlRfMTUxMF9TUElfVFgJCTQKKyNkZWZpbmUgSU5UXzE1MTBfU1BJX1JYCQk1CisjZGVmaW5lIElOVF8xNTEwX1JFUzEyCQkxMgorI2RlZmluZSBJTlRfMTUxMF9MQl9NTVUJCTE3CisjZGVmaW5lIElOVF8xNTEwX1JFUzE4CQkxOAorI2RlZmluZSBJTlRfMTUxMF9MT0NBTF9CVVMJMjkKKworLyoKKyAqIE9NQVAtMTYxMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBmb3IgaW50ZXJydXB0IGhhbmRsZXIgMQorICovCisjZGVmaW5lIElOVF8xNjEwX0lIMl9GSVEJMgorI2RlZmluZSBJTlRfMTYxMF9NY0JTUDJfVFgJNAorI2RlZmluZSBJTlRfMTYxMF9NY0JTUDJfUlgJNQorI2RlZmluZSBJTlRfMTYxMF9MQ0RfTElORQkxMgorI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSMQkxNworI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSMgkxOAorI2RlZmluZSBJTlRfMTYxMF9TU1JfRklGT18wCTI5CisKKy8qCisgKiBPTUFQLTczMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBmb3IgaW50ZXJydXB0IGhhbmRsZXIgMQorICovCisjZGVmaW5lIElOVF83MzBfSUgyX0ZJUQkJMAorI2RlZmluZSBJTlRfNzMwX0lIMl9JUlEJCTEKKyNkZWZpbmUgSU5UXzczMF9VU0JfTk9OX0lTTwkyCisjZGVmaW5lIElOVF83MzBfVVNCX0lTTwkJMworI2RlZmluZSBJTlRfNzMwX0lDUgkJNAorI2RlZmluZSBJTlRfNzMwX0VBQwkJNQorI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzEJNgorI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzIJNworI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzMJOAorI2RlZmluZSBJTlRfNzMwX01jQlNQMlRYCTEwCisjZGVmaW5lIElOVF83MzBfTWNCU1AyUlgJMTEKKyNkZWZpbmUgSU5UXzczMF9NY0JTUDJSWF9PVkYJMTIKKyNkZWZpbmUgSU5UXzczMF9MQ0RfTElORQkxNAorI2RlZmluZSBJTlRfNzMwX0dTTV9QUk9URUNUCTE1CisjZGVmaW5lIElOVF83MzBfVElNRVIzCQkxNgorI2RlZmluZSBJTlRfNzMwX0dQSU9fQkFOSzUJMTcKKyNkZWZpbmUgSU5UXzczMF9HUElPX0JBTks2CTE4CisjZGVmaW5lIElOVF83MzBfU1BHSU9fV1IJMjkKKworLyoKKyAqIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAyCisgKgorICogTk9URTogU2VlIGFsc28gdGhlIE9NQVAtMTUxMCBhbmQgMTYxMCBzcGVjaWZpYyBJUlEgbnVtYmVycyBiZWxvdworICovCisjZGVmaW5lIElIMl9CQVNFCQkzMgorCisjZGVmaW5lIElOVF9LRVlCT0FSRAkJKDEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX3VXaXJlVFgJCSgyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF91V2lyZVJYCQkoMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfSTJDCQkJKDQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX01QVUlPCQkoNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfVVNCX0hIQ18xCQkoNiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTWNCU1AzVFgJCSgxMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTWNCU1AzUlgJCSgxMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTWNCU1AxVFgJCSgxMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTWNCU1AxUlgJCSgxMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfVUFSVDEJCSgxNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfVUFSVDIJCSgxNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfQlRfTUNTSTFUWAkJKDE2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9CVF9NQ1NJMVJYCQkoMTcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX1VTQl9XMkZDCQkoMjAgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzFXSVJFCQkoMjEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX09TX1RJTUVSCQkoMjIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX01NQwkJCSgyMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfR0FVR0VfMzJLCQkoMjQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX1JUQ19USU1FUgkJKDI1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF9SVENfQUxBUk0JCSgyNiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfTUVNX1NUSUNLCQkoMjcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UX0RTUF9NTVUJCSgyOCArIElIMl9CQVNFKQorCisvKgorICogT01BUC0xNTEwIHNwZWNpZmljIElSUSBudW1iZXJzIGZvciBpbnRlcnJ1cHQgaGFuZGxlciAyCisgKi8KKyNkZWZpbmUgSU5UXzE1MTBfT1NfMzJrSHpfVElNRVIgKDIyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNTEwX0NPTV9TUElfUk8JKDMxICsgSUgyX0JBU0UpCisKKy8qCisgKiBPTUFQLTE2MTAgc3BlY2lmaWMgSVJRIG51bWJlcnMgZm9yIGludGVycnVwdCBoYW5kbGVyIDIKKyAqLworI2RlZmluZSBJTlRfMTYxMF9GQUMJCSgwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1VTQl9ISENfMgkoNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9VU0JfT1RHCSg4ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1NvU1NJCQkoOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9Tb1NTSV9NQVRDSAkoMTkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfTWNCU1AyUlhfT0YJKDMxICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1NUSQkJKDMyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1NUSV9XQUtFVVAJKDMzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVIzCSgzNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSNAkoMzUgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BUSU1FUjUJKDM2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQVElNRVI2CSgzNyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9HUFRJTUVSNwkoMzggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfR1BUSU1FUjgJKDM5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQSU9fQkFOSzIJKDQwICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQSU9fQkFOSzMJKDQxICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX01NQzIJCSg0MiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9DRgkJKDQzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0dQSU9fQkFOSzQJKDQ4ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX1NQSQkJKDQ5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDYJKDUzICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDcJKDU0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDgJKDU1ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDkJKDU2ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDEwCSg1NyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9ETUFfQ0gxMQkoNTggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIMTIJKDU5ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX0RNQV9DSDEzCSg2MCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfMTYxMF9ETUFfQ0gxNAkoNjEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzE2MTBfRE1BX0NIMTUJKDYyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF8xNjEwX05BTkQJCSg2MyArIElIMl9CQVNFKQorCisvKgorICogT01BUC03MzAgc3BlY2lmaWMgSVJRIG51bWJlcnMgZm9yIGludGVycnVwdCBoYW5kbGVyIDIKKyAqLworI2RlZmluZSBJTlRfNzMwX0hXX0VSUk9SUwkoMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX05GSVFfUFdSX0ZBSUwJKDEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9DRkNECQkoMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0NGSVJFUQkJKDMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9JMkMJCSg0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfUENDCQkoNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01QVV9FWFRfTklSUQkoNiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NQSV8xMDBLXzEJKDcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9TWVJFTl9TUEkJKDggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9WTFlOUQkJKDkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9HUElPX0JBTks0CSgxMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01jQlNQMVRYCSgxMSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01jQlNQMVJYCSgxMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX01jQlNQMVJYX09GCSgxMyArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VBUlRfTU9ERU1fSVJEQV8yICgxNCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VBUlRfTU9ERU1fMQkoMTUgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9NQ1NJCQkoMTYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF91V2lyZVRYCQkoMTcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF91V2lyZVJYCQkoMTggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9TTUNfQ0QJCSgxOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NNQ19JUkVRCSgyMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0hEUV8xV0lSRQkoMjEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9USU1FUjMySwkoMjIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9NTUNfU0RJTwkoMjMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9VUExECQkoMjQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9VU0JfSEhDXzEJKDI3ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfVVNCX0hIQ18yCSgyOCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VTQl9HRU5JCSgyOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1VTQl9PVEcJCSgzMCArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0NBTUVSQV9JRgkoMzEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9STkcJCSgzMiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0RVQUxfTU9ERV9USU1FUiAoMzMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9EQkJfUkZfRU4JKDM0ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTVBVSU9fS0VZUEFECSgzNSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NIQTFfTUQ1CSgzNiArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX1NQSV8xMDBLXzIJKDM3ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfUk5HX0lETEUJKDM4ICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTVBVSU8JCSgzOSArIElIMl9CQVNFKQorI2RlZmluZSBJTlRfNzMwX0xMUENfTENEX0NUUkxfQ0FOX0JFX09GRgkoNDAgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9MTFBDX09FX0ZBTExJTkcgKDQxICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTExQQ19PRV9SSVNJTkcJKDQyICsgSUgyX0JBU0UpCisjZGVmaW5lIElOVF83MzBfTExQQ19WU1lOQwkoNDMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9XQUtFX1VQX1JFUQkoNDYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0g2CQkoNTMgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0g3CQkoNTQgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0g4CQkoNTUgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0g5CQkoNTYgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxMAkoNTcgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxMQkoNTggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxMgkoNTkgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxMwkoNjAgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxNAkoNjEgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9ETUFfQ0gxNQkoNjIgKyBJSDJfQkFTRSkKKyNkZWZpbmUgSU5UXzczMF9OQU5ECQkoNjMgKyBJSDJfQkFTRSkKKworLyogTWF4LiAxMjggbGV2ZWwgMiBJUlFzIChPTUFQMTYxMCksIDE5MiBHUElPcyAoT01BUDczMCkgYW5kCisgKiAxNiBNUFVJTyBsaW5lcyAqLworI2RlZmluZSBPTUFQX01BWF9HUElPX0xJTkVTCTE5MgorI2RlZmluZSBJSF9HUElPX0JBU0UJCSgxMjggKyBJSDJfQkFTRSkKKyNkZWZpbmUgSUhfTVBVSU9fQkFTRQkJKE9NQVBfTUFYX0dQSU9fTElORVMgKyBJSF9HUElPX0JBU0UpCisjZGVmaW5lIElIX0JPQVJEX0JBU0UJCSgxNiArIElIX01QVUlPX0JBU0UpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBvbWFwX2luaXRfaXJxKHZvaWQpOworI2VuZGlmCisKKy8qCisgKiBUaGUgZGVmaW5pdGlvbiBvZiBOUl9JUlFTIGlzIGluIGJvYXJkLXNwZWNpZmljIGhlYWRlciBmaWxlLCB3aGljaCBpcworICogaW5jbHVkZWQgdmlhIGhhcmR3YXJlLmgKKyAqLworI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisKKyNpZm5kZWYgTlJfSVJRUworI2RlZmluZSBOUl9JUlFTICAgICAgICAgICAgICAgICBJSF9CT0FSRF9CQVNFCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21jYnNwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21jYnNwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1YmRlYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbWNic3AuaApAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3Bpby5oCisgKgorICogRGVmaW5lcyBmb3IgTXVsdGktQ2hhbm5lbCBCdWZmZXJlZCBTZXJpYWwgUG9ydAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBTdGV2ZSBKb2huc29uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICoKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX09NQVBfTUNCU1BfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfTUNCU1BfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2RlZmluZSBPTUFQNzMwX01DQlNQMV9CQVNFCTB4ZmZmYjEwMDAKKyNkZWZpbmUgT01BUDczMF9NQ0JTUDJfQkFTRQkweGZmZmIxODAwCisKKyNkZWZpbmUgT01BUDE1MTBfTUNCU1AxX0JBU0UJMHhlMTAxMTgwMAorI2RlZmluZSBPTUFQMTUxMF9NQ0JTUDJfQkFTRQkweGZmZmIxMDAwCisjZGVmaW5lIE9NQVAxNTEwX01DQlNQM19CQVNFCTB4ZTEwMTcwMDAKKworI2RlZmluZSBPTUFQMTYxMF9NQ0JTUDFfQkFTRQkweGUxMDExODAwCisjZGVmaW5lIE9NQVAxNjEwX01DQlNQMl9CQVNFCTB4ZmZmYjEwMDAKKyNkZWZpbmUgT01BUDE2MTBfTUNCU1AzX0JBU0UJMHhlMTAxNzAwMAorCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX0RSUjIJMHgwMAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19EUlIxCTB4MDIKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfRFhSMgkweDA0CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX0RYUjEJMHgwNgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19TUENSMgkweDA4CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1NQQ1IxCTB4MGEKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNSMgkweDBjCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDUjEJMHgwZQorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ1IyCTB4MTAKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENSMQkweDEyCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1NSR1IyCTB4MTQKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfU1JHUjEJMHgxNgorI2RlZmluZSBPTUFQX01DQlNQX1JFR19NQ1IyCTB4MTgKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfTUNSMQkweDFhCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDRVJBCTB4MWMKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkIJMHgxZQorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ0VSQQkweDIwCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJCCTB4MjIKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUENSMAkweDI0CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDRVJDCTB4MjYKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkQJMHgyOAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ0VSQwkweDJBCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJECTB4MkMKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfUkNFUkUJMHgyRQorI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ0VSRgkweDMwCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1hDRVJFCTB4MzIKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENFUkYJMHgzNAorI2RlZmluZSBPTUFQX01DQlNQX1JFR19SQ0VSRwkweDM2CisjZGVmaW5lIE9NQVBfTUNCU1BfUkVHX1JDRVJICTB4MzgKKyNkZWZpbmUgT01BUF9NQ0JTUF9SRUdfWENFUkcJMHgzQQorI2RlZmluZSBPTUFQX01DQlNQX1JFR19YQ0VSSAkweDNDCisKKyNkZWZpbmUgT01BUF9NQVhfTUNCU1BfQ09VTlQgMworCisjZGVmaW5lIE9NQVBfTUNCU1BfUkVBRChiYXNlLCByZWcpCQlfX3Jhd19yZWFkdygoYmFzZSkgKyBPTUFQX01DQlNQX1JFR18jI3JlZykKKyNkZWZpbmUgT01BUF9NQ0JTUF9XUklURShiYXNlLCByZWcsIHZhbCkJX19yYXdfd3JpdGV3KCh2YWwpLCAoYmFzZSkgKyBPTUFQX01DQlNQX1JFR18jI3JlZykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFNQQ1IxIGJpdCBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgUlJTVAkJCTB4MDAwMQorI2RlZmluZSBSUkRZCQkJMHgwMDAyCisjZGVmaW5lIFJGVUxMCQkJMHgwMDA0CisjZGVmaW5lIFJTWU5DX0VSUgkJMHgwMDA4CisjZGVmaW5lIFJJTlRNKHZhbHVlKQkJKCh2YWx1ZSk8PDQpCS8qIGJpdHMgNDo1ICovCisjZGVmaW5lIEFCSVMJCQkweDAwNDAKKyNkZWZpbmUgRFhFTkEJCQkweDAwODAKKyNkZWZpbmUgQ0xLU1RQKHZhbHVlKQkJKCh2YWx1ZSk8PDExKQkvKiBiaXRzIDExOjEyICovCisjZGVmaW5lIFJKVVNUKHZhbHVlKQkJKCh2YWx1ZSk8PDEzKQkvKiBiaXRzIDEzOjE0ICovCisjZGVmaW5lIERMQgkJCTB4ODAwMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgU1BDUjIgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBYUlNUCQkweDAwMDEKKyNkZWZpbmUgWFJEWQkJMHgwMDAyCisjZGVmaW5lIFhFTVBUWQkJMHgwMDA0CisjZGVmaW5lIFhTWU5DX0VSUgkweDAwMDgKKyNkZWZpbmUgWElOVE0odmFsdWUpCSgodmFsdWUpPDw0KQkJLyogYml0cyA0OjUgKi8KKyNkZWZpbmUgR1JTVAkJMHgwMDQwCisjZGVmaW5lIEZSU1QJCTB4MDA4MAorI2RlZmluZSBTT0ZUCQkweDAxMDAKKyNkZWZpbmUgRlJFRQkJMHgwMjAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBQQ1IgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIENMS1JQCQkweDAwMDEKKyNkZWZpbmUgQ0xLWFAJCTB4MDAwMgorI2RlZmluZSBGU1JQCQkweDAwMDQKKyNkZWZpbmUgRlNYUAkJMHgwMDA4CisjZGVmaW5lIERSX1NUQVQJCTB4MDAxMAorI2RlZmluZSBEWF9TVEFUCQkweDAwMjAKKyNkZWZpbmUgQ0xLU19TVEFUCTB4MDA0MAorI2RlZmluZSBTQ0xLTUUJCTB4MDA4MAorI2RlZmluZSBDTEtSTQkJMHgwMTAwCisjZGVmaW5lIENMS1hNCQkweDAyMDAKKyNkZWZpbmUgRlNSTQkJMHgwNDAwCisjZGVmaW5lIEZTWE0JCTB4MDgwMAorI2RlZmluZSBSSU9FTgkJMHgxMDAwCisjZGVmaW5lIFhJT0VOCQkweDIwMDAKKyNkZWZpbmUgSURMRV9FTgkJMHg0MDAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBSQ1IxIGJpdCBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFJXRExFTjEodmFsdWUpCQkoKHZhbHVlKTw8NSkJLyogQml0cyA1OjcgKi8KKyNkZWZpbmUgUkZSTEVOMSh2YWx1ZSkJCSgodmFsdWUpPDw4KQkvKiBCaXRzIDg6MTQgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFhDUjEgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgWFdETEVOMSh2YWx1ZSkJCSgodmFsdWUpPDw1KQkvKiBCaXRzIDU6NyAqLworI2RlZmluZSBYRlJMRU4xKHZhbHVlKQkJKCh2YWx1ZSk8PDgpCS8qIEJpdHMgODoxNCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFJDUjIgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBSREFURExZKHZhbHVlKQkJKHZhbHVlKQkJLyogQml0cyAwOjEgKi8KKyNkZWZpbmUgUkZJRwkJCTB4MDAwNAorI2RlZmluZSBSQ09NUEFORCh2YWx1ZSkJCSgodmFsdWUpPDwzKQkvKiBCaXRzIDM6NCAqLworI2RlZmluZSBSV0RMRU4yKHZhbHVlKQkJKCh2YWx1ZSk8PDUpCS8qIEJpdHMgNTo3ICovCisjZGVmaW5lIFJGUkxFTjIodmFsdWUpCQkoKHZhbHVlKTw8OCkJLyogQml0cyA4OjE0ICovCisjZGVmaW5lIFJQSEFTRQkJCTB4ODAwMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIFhDUjIgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBYREFURExZKHZhbHVlKQkJKHZhbHVlKQkJLyogQml0cyAwOjEgKi8KKyNkZWZpbmUgWEZJRwkJCTB4MDAwNAorI2RlZmluZSBYQ09NUEFORCh2YWx1ZSkJCSgodmFsdWUpPDwzKQkvKiBCaXRzIDM6NCAqLworI2RlZmluZSBYV0RMRU4yKHZhbHVlKQkJKCh2YWx1ZSk8PDUpCS8qIEJpdHMgNTo3ICovCisjZGVmaW5lIFhGUkxFTjIodmFsdWUpCQkoKHZhbHVlKTw8OCkJLyogQml0cyA4OjE0ICovCisjZGVmaW5lIFhQSEFTRQkJCTB4ODAwMAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBTUkdSMSBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBDTEtHRFYodmFsdWUpCQkodmFsdWUpCQkvKiBCaXRzIDA6NyAqLworI2RlZmluZSBGV0lEKHZhbHVlKQkJKCh2YWx1ZSk8PDgpCS8qIEJpdHMgODoxNSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKiBNY0JTUCBTUkdSMiBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBGUEVSKHZhbHVlKQkJKHZhbHVlKQkJLyogQml0cyAwOjExICovCisjZGVmaW5lIEZTR00JCQkweDEwMDAKKyNkZWZpbmUgQ0xLU00JCQkweDIwMDAKKyNkZWZpbmUgQ0xLU1AJCQkweDQwMDAKKyNkZWZpbmUgR1NZTkMJCQkweDgwMDAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKiogTWNCU1AgTUNSMSBiaXQgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgUk1DTQkJCTB4MDAwMQorI2RlZmluZSBSQ0JMSyh2YWx1ZSkJCSgodmFsdWUpPDwyKQkvKiBCaXRzIDI6NCAqLworI2RlZmluZSBSUEFCTEsodmFsdWUpCQkoKHZhbHVlKTw8NSkJLyogQml0cyA1OjYgKi8KKyNkZWZpbmUgUlBCQkxLKHZhbHVlKQkJKCh2YWx1ZSk8PDcpCS8qIEJpdHMgNzo4ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqIE1jQlNQIE1DUjIgYml0IGRlZmluaXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFhNQ00odmFsdWUpCQkodmFsdWUpCQkvKiBCaXRzIDA6MSAqLworI2RlZmluZSBYQ0JMSyh2YWx1ZSkJCSgodmFsdWUpPDwyKQkvKiBCaXRzIDI6NCAqLworI2RlZmluZSBYUEFCTEsodmFsdWUpCQkoKHZhbHVlKTw8NSkJLyogQml0cyA1OjYgKi8KKyNkZWZpbmUgWFBCQkxLKHZhbHVlKQkJKCh2YWx1ZSk8PDcpCS8qIEJpdHMgNzo4ICovCisKKworLyogd2UgZG9uJ3QgZG8gbXVsdGljaGFubmVsIGZvciBub3cgKi8KK3N0cnVjdCBvbWFwX21jYnNwX3JlZ19jZmcgeworCXUxNiBzcGNyMjsKKwl1MTYgc3BjcjE7CisJdTE2IHJjcjI7CisJdTE2IHJjcjE7CisJdTE2IHhjcjI7CisJdTE2IHhjcjE7CisJdTE2IHNyZ3IyOworCXUxNiBzcmdyMTsKKwl1MTYgbWNyMjsKKwl1MTYgbWNyMTsKKwl1MTYgcGNyMDsKKwl1MTYgcmNlcmM7CisJdTE2IHJjZXJkOworCXUxNiB4Y2VyYzsKKwl1MTYgeGNlcmQ7CisJdTE2IHJjZXJlOworCXUxNiByY2VyZjsKKwl1MTYgeGNlcmU7CisJdTE2IHhjZXJmOworCXUxNiByY2VyZzsKKwl1MTYgcmNlcmg7CisJdTE2IHhjZXJnOworCXUxNiB4Y2VyaDsKK307CisKK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUDEgPSAwLAorCU9NQVBfTUNCU1AyLAorCU9NQVBfTUNCU1AzLAorfSBvbWFwX21jYnNwX2lkOworCit0eXBlZGVmIGVudW0geworCU9NQVBfTUNCU1BfV09SRF84ID0gMCwKKwlPTUFQX01DQlNQX1dPUkRfMTIsCisJT01BUF9NQ0JTUF9XT1JEXzE2LAorCU9NQVBfTUNCU1BfV09SRF8yMCwKKwlPTUFQX01DQlNQX1dPUkRfMjQsCisJT01BUF9NQ0JTUF9XT1JEXzMyLAorfSBvbWFwX21jYnNwX3dvcmRfbGVuZ3RoOworCit0eXBlZGVmIGVudW0geworCU9NQVBfTUNCU1BfQ0xLX1JJU0lORyA9IDAsCisJT01BUF9NQ0JTUF9DTEtfRkFMTElORywKK30gb21hcF9tY2JzcF9jbGtfcG9sYXJpdHk7CisKK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUF9GU19BQ1RJVkVfSElHSCA9IDAsCisJT01BUF9NQ0JTUF9GU19BQ1RJVkVfTE9XLAorfSBvbWFwX21jYnNwX2ZzX3BvbGFyaXR5OworCit0eXBlZGVmIGVudW0geworCU9NQVBfTUNCU1BfQ0xLX1NUUF9NT0RFX05PX0RFTEFZID0gMCwKKwlPTUFQX01DQlNQX0NMS19TVFBfTU9ERV9ERUxBWSwKK30gb21hcF9tY2JzcF9jbGtfc3RwX21vZGU7CisKKworLyoqKioqKiogU1BJIHNwZWNpZmljIG1vZGUgKioqKioqKioqKi8KK3R5cGVkZWYgZW51bSB7CisJT01BUF9NQ0JTUF9TUElfTUFTVEVSID0gMCwKKwlPTUFQX01DQlNQX1NQSV9TTEFWRSwKK30gb21hcF9tY2JzcF9zcGlfbW9kZTsKKworc3RydWN0IG9tYXBfbWNic3Bfc3BpX2NmZyB7CisJb21hcF9tY2JzcF9zcGlfbW9kZQkJc3BpX21vZGU7CisJb21hcF9tY2JzcF9jbGtfcG9sYXJpdHkJCXJ4X2Nsb2NrX3BvbGFyaXR5OworCW9tYXBfbWNic3BfY2xrX3BvbGFyaXR5CQl0eF9jbG9ja19wb2xhcml0eTsKKwlvbWFwX21jYnNwX2ZzX3BvbGFyaXR5CQlmc3hfcG9sYXJpdHk7CisJdTgJCQkJY2xrX2RpdjsKKwlvbWFwX21jYnNwX2Nsa19zdHBfbW9kZQkJY2xrX3N0cF9tb2RlOworCW9tYXBfbWNic3Bfd29yZF9sZW5ndGgJCXdvcmRfbGVuZ3RoOworfTsKKwordm9pZCBvbWFwX21jYnNwX2NvbmZpZyh1bnNpZ25lZCBpbnQgaWQsIGNvbnN0IHN0cnVjdCBvbWFwX21jYnNwX3JlZ19jZmcgKiBjb25maWcpOworaW50IG9tYXBfbWNic3BfcmVxdWVzdCh1bnNpZ25lZCBpbnQgaWQpOwordm9pZCBvbWFwX21jYnNwX2ZyZWUodW5zaWduZWQgaW50IGlkKTsKK3ZvaWQgb21hcF9tY2JzcF9zdGFydCh1bnNpZ25lZCBpbnQgaWQpOwordm9pZCBvbWFwX21jYnNwX3N0b3AodW5zaWduZWQgaW50IGlkKTsKK3ZvaWQgb21hcF9tY2JzcF94bWl0X3dvcmQodW5zaWduZWQgaW50IGlkLCB1MzIgd29yZCk7Cit1MzIgb21hcF9tY2JzcF9yZWN2X3dvcmQodW5zaWduZWQgaW50IGlkKTsKKworaW50IG9tYXBfbWNic3BfeG1pdF9idWZmZXIodW5zaWduZWQgaW50IGlkLCBkbWFfYWRkcl90IGJ1ZmZlciwgdW5zaWduZWQgaW50IGxlbmd0aCk7CitpbnQgb21hcF9tY2JzcF9yZWN2X2J1ZmZlcih1bnNpZ25lZCBpbnQgaWQsIGRtYV9hZGRyX3QgYnVmZmVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKworLyogU1BJIHNwZWNpZmljIEFQSSAqLwordm9pZCBvbWFwX21jYnNwX3NldF9zcGlfbW9kZSh1bnNpZ25lZCBpbnQgaWQsIGNvbnN0IHN0cnVjdCBvbWFwX21jYnNwX3NwaV9jZmcgKiBzcGlfY2ZnKTsKKworLyogUG9sbGVkIHJlYWQvd3JpdGUgZnVuY3Rpb25zICovCitpbnQgb21hcF9tY2JzcF9wb2xscmVhZCh1bnNpZ25lZCBpbnQgaWQsIHUxNiAqIGJ1Zik7CitpbnQgb21hcF9tY2JzcF9wb2xsd3JpdGUodW5zaWduZWQgaW50IGlkLCB1MTYgYnVmKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmI1N2RkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tZW1vcnkuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tZW1vcnkuaAorICoKKyAqIE1lbW9yeSBtYXAgZm9yIE9NQVAtMTUxMCBhbmQgMTYxMAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBSaWRnZVJ1biwgSW5jLgorICogQXV0aG9yOiBHcmVnIExvbm5vbiA8Z2xvbm5vbkByaWRnZXJ1bi5jb20+CisgKgorICogVGhpcyBmaWxlIHdhcyBkZXJpdmVkIGZyb20gbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW50ZXJncmF0b3IvbWVtb3J5LmgKKyAqIENvcHlyaWdodCAoQykgMTk5OSBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTgorICogTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkJKDB4MTAwMDAwMDBVTCkKKworLyoKKyAqIE9NQVAtMTUxMCBMb2NhbCBCdXMgYWRkcmVzcyBvZmZzZXQKKyAqLworI2RlZmluZSBPTUFQMTUxMF9MQl9PRkZTRVQJKDB4MzAwMDAwMDBVTCkKKworLyoKKyAqIENvbnZlcnNpb24gYmV0d2VlbiBTRFJBTSBhbmQgZmFrZSBQQ0kgYnVzLCB1c2VkIGJ5IFVTQgorICogTk9URTogUGh5c2ljYWwgYWRkcmVzcyBtdXN0IGJlIGNvbnZlcnRlZCB0byBMb2NhbCBCdXMgYWRkcmVzcworICoJIG9uIE9NQVAtMTUxMCBvbmx5CisgKi8KKworLyoKKyAqIEJ1cyBhZGRyZXNzIGlzIHBoeXNpY2FsIGFkZHJlc3MsIGV4Y2VwdCBmb3IgT01BUC0xNTEwIExvY2FsIEJ1cy4KKyAqLworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCV9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJX19waHlzX3RvX3ZpcnQoeCkKKworLyoKKyAqIE9NQVAtMTUxMCBidXMgYWRkcmVzcyBpcyB0cmFuc2xhdGVkIGludG8gYSBMb2NhbCBCdXMgYWRkcmVzcyBpZiB0aGUKKyAqIE9NQVAgYnVzIHR5cGUgaXMgbGJ1cy4gV2UgZG8gdGhlIGFkZHJlc3MgdHJhbnNsYXRpb24gYmFzZWQgb24gdGhlCisgKiBkZXZpY2Ugb3ZlcnJpZGluZyB0aGUgZGVmYXVsdHMgdXNlZCBpbiB0aGUgZG1hLW1hcHBpbmcgQVBJLgorICogTm90ZSB0aGF0IHRoZSBpc19sYnVzX2RldmljZSgpIHRlc3QgaXMgbm90IHZlcnkgZWZmaWNpZW50IG9uIDE1MTAKKyAqIGJlY2F1c2Ugb2YgdGhlIHN0cm5jbXAoKS4KKyAqLworI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNTEwCisKKyNkZWZpbmUgdmlydF90b19sYnVzKHgpCQkoKHgpIC0gUEFHRV9PRkZTRVQgKyBPTUFQMTUxMF9MQl9PRkZTRVQpCisjZGVmaW5lIGxidXNfdG9fdmlydCh4KQkJKCh4KSAtIE9NQVAxNTEwX0xCX09GRlNFVCArIFBBR0VfT0ZGU0VUKQorI2RlZmluZSBpc19sYnVzX2RldmljZShkZXYpCShjcHVfaXNfb21hcDE1MTAoKSAmJiBkZXYgJiYgKHN0cm5jbXAoZGV2LT5idXNfaWQsICJvaGNpIiwgNCkgPT0gMCkpCisKKyNkZWZpbmUgX19hcmNoX3BhZ2VfdG9fZG1hKGRldiwgcGFnZSkJKHtpc19sYnVzX2RldmljZShkZXYpID8gXAorCQkJCQkoZG1hX2FkZHJfdCl2aXJ0X3RvX2xidXMocGFnZV9hZGRyZXNzKHBhZ2UpKSA6IFwKKwkJCQkJKGRtYV9hZGRyX3QpX192aXJ0X3RvX2J1cyhwYWdlX2FkZHJlc3MocGFnZSkpO30pCisKKyNkZWZpbmUgX19hcmNoX2RtYV90b192aXJ0KGRldiwgYWRkcikJKHtpc19sYnVzX2RldmljZShkZXYpID8gXAorCQkJCQlsYnVzX3RvX3ZpcnQoYWRkcikgOiBcCisJCQkJCV9fYnVzX3RvX3ZpcnQoYWRkcik7fSkKKworI2RlZmluZSBfX2FyY2hfdmlydF90b19kbWEoZGV2LCBhZGRyKQkoe2lzX2xidXNfZGV2aWNlKGRldikgPyBcCisJCQkJCXZpcnRfdG9fbGJ1cyhhZGRyKSA6IFwKKwkJCQkJX192aXJ0X3RvX2J1cyhhZGRyKTt9KQorCisjZW5kaWYJLyogQ09ORklHX0FSQ0hfT01BUDE1MTAgKi8KKworI2RlZmluZSBQSFlTX1RPX05JRChhZGRyKSAoMCkKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL211eC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tdXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWY5OWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tdXguaApAQCAtMCwwICsxLDU2MSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbXV4LmgKKyAqCisgKiBUYWJsZSBvZiB0aGUgT21hcCByZWdpc3RlciBjb25maWd1cmF0aW9ucyBmb3IgdGhlIEZVTkNfTVVYIGFuZAorICogUFVMTF9EV04gY29tYmluYXRpb25zLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBOb2tpYSBDb3Jwb3JhdGlvbgorICoKKyAqIFdyaXR0ZW4gYnkgVG9ueSBMaW5kZ3JlbiA8dG9ueS5saW5kZ3JlbkBub2tpYS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICoKKyAqIE5PVEU6IFBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBuYW1pbmcgc3R5bGUgZm9yIG5ldyBwaW4gZW50cmllcy4KKyAqCSBGb3IgZXhhbXBsZSwgVzhfMTYxMF9NTUMyX0RBVDAsIHdoZXJlOgorICoJIC0gVzgJICAgICA9IGJhbGwKKyAqCSAtIDE2MTAJICAgICA9IDE1MTAgb3IgMTYxMCwgbm9uZSBpZiBjb21tb24gZm9yIGJvdGggMTUxMCBhbmQgMTYxMAorICoJIC0gTU1DMl9EQVQwID0gZnVuY3Rpb24KKyAqCisgKiBDaGFuZ2UgbG9nOgorICogICBBZGRlZCBlbnRyeSBmb3IgdGhlIEkyQyBpbnRlcmZhY2UuICgwMkZlYiAyMDA0KQorICogICBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMKKyAqCisgKiAgIEFkZGVkIGVudHJ5IGZvciB0aGUga2V5cGFkIGFuZCB1d2lyZSBDUzEuICgwOU1hciAyMDA0KQorICogICBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMKKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01VWF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTVVYX0gKKworI2RlZmluZSBQVV9QRF9TRUxfTkEJCTAJLyogTm8gcHVfcGQgcmVnIGF2YWlsYWJsZSAqLworI2RlZmluZSBQVUxMX0RXTl9DVFJMX05BCTAJLyogTm8gcHVsbC1kb3duIGNvbnRyb2wgbmVlZGVkICovCisKKyNpZmRlZglDT05GSUdfT01BUF9NVVhfREVCVUcKKyNkZWZpbmUgTVVYX1JFRyhyZWcsIG1vZGVfb2Zmc2V0LCBtb2RlKSAubXV4X3JlZ19uYW1lID0gIkZVTkNfTVVYX0NUUkxfIiNyZWcsIFwKKwkJCQkJLm11eF9yZWcgPSBGVU5DX01VWF9DVFJMXyMjcmVnLCBcCisJCQkJCS5tYXNrX29mZnNldCA9IG1vZGVfb2Zmc2V0LCBcCisJCQkJCS5tYXNrID0gbW9kZSwKKworI2RlZmluZSBQVUxMX1JFRyhyZWcsIGJpdCwgc3RhdHVzKQkucHVsbF9uYW1lID0gIlBVTExfRFdOX0NUUkxfIiNyZWcsIFwKKwkJCQkJLnB1bGxfcmVnID0gUFVMTF9EV05fQ1RSTF8jI3JlZywgXAorCQkJCQkucHVsbF9iaXQgPSBiaXQsIFwKKwkJCQkJLnB1bGxfdmFsID0gc3RhdHVzLAorCisjZGVmaW5lIFBVX1BEX1JFRyhyZWcsIHN0YXR1cykJCS5wdV9wZF9uYW1lID0gIlBVX1BEX1NFTF8iI3JlZywgXAorCQkJCQkucHVfcGRfcmVnID0gUFVfUERfU0VMXyMjcmVnLCBcCisJCQkJCS5wdV9wZF92YWwgPSBzdGF0dXMsCisKKyNlbHNlCisKKyNkZWZpbmUgTVVYX1JFRyhyZWcsIG1vZGVfb2Zmc2V0LCBtb2RlKSAubXV4X3JlZyA9IEZVTkNfTVVYX0NUUkxfIyNyZWcsIFwKKwkJCQkJLm1hc2tfb2Zmc2V0ID0gbW9kZV9vZmZzZXQsIFwKKwkJCQkJLm1hc2sgPSBtb2RlLAorCisjZGVmaW5lIFBVTExfUkVHKHJlZywgYml0LCBzdGF0dXMpCS5wdWxsX3JlZyA9IFBVTExfRFdOX0NUUkxfIyNyZWcsIFwKKwkJCQkJLnB1bGxfYml0ID0gYml0LCBcCisJCQkJCS5wdWxsX3ZhbCA9IHN0YXR1cywKKworI2RlZmluZSBQVV9QRF9SRUcocmVnLCBzdGF0dXMpCQkucHVfcGRfcmVnID0gUFVfUERfU0VMXyMjcmVnLCBcCisJCQkJCS5wdV9wZF92YWwgPSBzdGF0dXMsCisKKyNlbmRpZiAvKiBDT05GSUdfT01BUF9NVVhfREVCVUcgKi8KKworI2RlZmluZSBNVVhfQ0ZHKGRlc2MsIG11eF9yZWcsIG1vZGVfb2Zmc2V0LCBtb2RlLAlcCisJCXB1bGxfcmVnLCBwdWxsX2JpdCwgcHVsbF9zdGF0dXMsCVwKKwkJcHVfcGRfcmVnLCBwdV9wZF9zdGF0dXMsIGRlYnVnX3N0YXR1cykJXAorewkJCQkJCQlcCisJLm5hbWUgPQkgZGVzYywJCQkJCVwKKwkuZGVidWcgPSBkZWJ1Z19zdGF0dXMsCQkJCVwKKwlNVVhfUkVHKG11eF9yZWcsIG1vZGVfb2Zmc2V0LCBtb2RlKQkJXAorCVBVTExfUkVHKHB1bGxfcmVnLCBwdWxsX2JpdCwgcHVsbF9zdGF0dXMpCVwKKwlQVV9QRF9SRUcocHVfcGRfcmVnLCBwdV9wZF9zdGF0dXMpCQlcCit9LAorCisjZGVmaW5lIFBVTExfRElTQUJMRUQJMAorI2RlZmluZSBQVUxMX0VOQUJMRUQJMQorCisjZGVmaW5lIFBVTExfRE9XTgkwCisjZGVmaW5lIFBVTExfVVAJCTEKKwordHlwZWRlZiBzdHJ1Y3QgeworCWNoYXIgKm5hbWU7CisJdW5zaWduZWQgY2hhciBidXN5OworCXVuc2lnbmVkIGNoYXIgZGVidWc7CisKKwljb25zdCBjaGFyICptdXhfcmVnX25hbWU7CisJY29uc3QgdW5zaWduZWQgaW50IG11eF9yZWc7CisJY29uc3QgdW5zaWduZWQgY2hhciBtYXNrX29mZnNldDsKKwljb25zdCB1bnNpZ25lZCBjaGFyIG1hc2s7CisKKwljb25zdCBjaGFyICpwdWxsX25hbWU7CisJY29uc3QgdW5zaWduZWQgaW50IHB1bGxfcmVnOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgcHVsbF92YWw7CisJY29uc3QgdW5zaWduZWQgY2hhciBwdWxsX2JpdDsKKworCWNvbnN0IGNoYXIgKnB1X3BkX25hbWU7CisJY29uc3QgdW5zaWduZWQgaW50IHB1X3BkX3JlZzsKKwljb25zdCB1bnNpZ25lZCBjaGFyIHB1X3BkX3ZhbDsKK30gcmVnX2NmZ19zZXQ7CisKKy8qCisgKiBMb29rdXAgdGFibGUgZm9yIEZVTkNfTVVYIGFuZCBQVUxMX0RXTiByZWdpc3RlciBjb21iaW5hdGlvbnMgZm9yIGVhY2gKKyAqIGRldmljZS4gU2VlIGFsc28gcmVnX2NmZ190YWJsZSBiZWxvdyBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlcy4KKyAqLwordHlwZWRlZiBlbnVtIHsKKwkvKiBVQVJUMSAoQlRfVUFSVF9HQVRJTkcpKi8KKwlVQVJUMV9UWCA9IDAsCisJVUFSVDFfUlRTLAorCisJLyogVUFSVDIgKENPTV9VQVJUX0dBVElORykqLworCVVBUlQyX1RYLAorCVVBUlQyX1JYLAorCVVBUlQyX0NUUywKKwlVQVJUMl9SVFMsCisKKwkvKiBVQVJUMyAoR0lHQV9VQVJUX0dBVElORykgKi8KKwlVQVJUM19UWCwKKwlVQVJUM19SWCwKKwlVQVJUM19DVFMsCisJVUFSVDNfUlRTLAorCVVBUlQzX0NMS1JFUSwKKwlVQVJUM19CQ0xLLAkvKiAxMk1IeiBjbG9jayBvdXQgKi8KKwlZMTVfMTYxMF9VQVJUM19SVFMsCisKKwkvKiBQV1QgJiBQV0wgKi8KKwlQV1QsCisJUFdMLAorCisJLyogVVNCIG1hc3RlciBnZW5lcmljICovCisJUjE4X1VTQl9WQlVTLAorCVIxOF8xNTEwX1VTQl9HUElPMCwKKwlXNF9VU0JfUFVFTiwKKwlXNF9VU0JfQ0xLTywKKwlXNF9VU0JfSElHSFosCisJVzRfR1BJTzU4LAorCisJLyogVVNCMSBtYXN0ZXIgKi8KKwlVU0IxX1NVU1AsCisJVVNCMV9TRU8sCisJVzEzXzE2MTBfVVNCMV9TRTAsCisJVVNCMV9UWEVOLAorCVVTQjFfVFhELAorCVVTQjFfVlAsCisJVVNCMV9WTSwKKwlVU0IxX1JDViwKKwlVU0IxX1NQRUVELAorCVIxM18xNjEwX1VTQjFfU1BFRUQsCisJUjEzXzE3MTBfVVNCMV9TRTAsCisKKwkvKiBVU0IyIG1hc3RlciAqLworCVVTQjJfU1VTUCwKKwlVU0IyX1ZQLAorCVVTQjJfVFhFTiwKKwlVU0IyX1ZNLAorCVVTQjJfUkNWLAorCVVTQjJfU0VPLAorCVVTQjJfVFhELAorCisJLyogT01BUC0xNTEwIEdQSU8gKi8KKwlSMThfMTUxMF9HUElPMCwKKwlSMTlfMTUxMF9HUElPMSwKKwlNMTRfMTUxMF9HUElPMiwKKworCS8qIE9NQVAxNjEwIEdQSU8gKi8KKwlQMThfMTYxMF9HUElPMywKKwlZMTVfMTYxMF9HUElPMTcsCisKKwkvKiBPTUFQLTE3MTAgR1BJTyAqLworCVIxOF8xNzEwX0dQSU8wLAorCVYyXzE3MTBfR1BJTzEwLAorCU4yMV8xNzEwX0dQSU8xNCwKKwlXMTVfMTcxMF9HUElPNDAsCisKKwkvKiBNUFVJTyAqLworCU1QVUlPMiwKKwlNUFVJTzQsCisJTVBVSU81LAorCVQyMF8xNjEwX01QVUlPNSwKKwlXMTFfMTYxMF9NUFVJTzYsCisJVjEwXzE2MTBfTVBVSU83LAorCVcxMV8xNjEwX01QVUlPOSwKKwlWMTBfMTYxMF9NUFVJTzEwLAorCVcxMF8xNjEwX01QVUlPMTEsCisJRTIwXzE2MTBfTVBVSU8xMywKKwlVMjBfMTYxMF9NUFVJTzE0LAorCUUxOV8xNjEwX01QVUlPMTUsCisKKwkvKiBNQ0JTUDIgKi8KKwlNQ0JTUDJfQ0xLUiwKKwlNQ0JTUDJfQ0xLWCwKKwlNQ0JTUDJfRFIsCisJTUNCU1AyX0RYLAorCU1DQlNQMl9GU1IsCisJTUNCU1AyX0ZTWCwKKworCS8qIE1DQlNQMyAqLworCU1DQlNQM19DTEtYLAorCisJLyogTWlzYyBiYWxsb3V0cyAqLworCUJBTExPVVRfVjhfQVJNSU8zLAorCisJLyogT01BUC0xNjEwIE1NQzIgKi8KKwlXOF8xNjEwX01NQzJfREFUMCwKKwlWOF8xNjEwX01NQzJfREFUMSwKKwlXMTVfMTYxMF9NTUMyX0RBVDIsCisJUjEwXzE2MTBfTU1DMl9EQVQzLAorCVkxMF8xNjEwX01NQzJfQ0xLLAorCVk4XzE2MTBfTU1DMl9DTUQsCisJVjlfMTYxMF9NTUMyX0NNRERJUiwKKwlWNV8xNjEwX01NQzJfREFURElSMCwKKwlXMTlfMTYxMF9NTUMyX0RBVERJUjEsCisJUjE4XzE2MTBfTU1DMl9DTEtJTiwKKworCS8qIE9NQVAtMTYxMCBFeHRlcm5hbCBUcmFjZSBJbnRlcmZhY2UgKi8KKwlNMTlfMTYxMF9FVE1fUFNUQVQwLAorCUwxNV8xNjEwX0VUTV9QU1RBVDEsCisJTDE4XzE2MTBfRVRNX1BTVEFUMiwKKwlMMTlfMTYxMF9FVE1fRDAsCisJSjE5XzE2MTBfRVRNX0Q2LAorCUoxOF8xNjEwX0VUTV9ENywKKworCS8qIE9NQVAtMTYxMCBHUElPICovCisJUDIwXzE2MTBfR1BJTzQsCisJVjlfMTYxMF9HUElPNywKKwlXOF8xNjEwX0dQSU85LAorCU4xOV8xNjEwX0dQSU8xMywKKwlQMTBfMTYxMF9HUElPMjIsCisJVjVfMTYxMF9HUElPMjQsCisJQUEyMF8xNjEwX0dQSU9fNDEsCisJVzE5XzE2MTBfR1BJTzQ4LAorCU03XzE2MTBfR1BJTzYyLAorCisJLyogT01BUC0xNjEwIHVXaXJlICovCisJVjE5XzE2MTBfVVdJUkVfU0NMSywKKwlVMThfMTYxMF9VV0lSRV9TREksCisJVzIxXzE2MTBfVVdJUkVfU0RPLAorCU4xNF8xNjEwX1VXSVJFX0NTMCwKKwlQMTVfMTYxMF9VV0lSRV9DUzAsCisJTjE1XzE2MTBfVVdJUkVfQ1MxLAorCisJLyogT01BUC0xNjEwIEZsYXNoICovCisJTDNfMTYxMF9GTEFTSF9DUzJCX09FLAorCU04XzE2MTBfRkxBU0hfQ1MyQl9XRSwKKworCS8qIEZpcnN0IE1NQyAqLworCU1NQ19DTUQsCisJTU1DX0RBVDEsCisJTU1DX0RBVDIsCisJTU1DX0RBVDAsCisJTU1DX0NMSywKKwlNTUNfREFUMywKKworCS8qIE9NQVAtMTcxMCBNTUMgQ01ERElSIGFuZCBEQVRESVIwICovCisJTTE1XzE3MTBfTU1DX0NMS0ksCisJUDE5XzE3MTBfTU1DX0NNRERJUiwKKwlQMjBfMTcxMF9NTUNfREFURElSMCwKKworCS8qIE9NQVAtMTYxMCBVU0IwIGFsdGVybmF0ZSBwaW4gY29uZmlndXJhdGlvbiAqLworCVc5X1VTQjBfVFhFTiwKKwlBQTlfVVNCMF9WUCwKKwlZNV9VU0IwX1JDViwKKwlSOV9VU0IwX1ZNLAorCVY2X1VTQjBfVFhELAorCVc1X1VTQjBfU0UwLAorCVY5X1VTQjBfU1BFRUQsCisJVjlfVVNCMF9TVVNQLAorCisJLyogVVNCMiAqLworCVc5X1VTQjJfVFhFTiwKKwlBQTlfVVNCMl9WUCwKKwlZNV9VU0IyX1JDViwKKwlSOV9VU0IyX1ZNLAorCVY2X1VTQjJfVFhELAorCVc1X1VTQjJfU0UwLAorCisJLyogVUFSVDEgMTYxMCAqLworCisJUjEzXzE2MTBfVUFSVDFfVFgsCisJVjE0XzE2MTBfVUFSVDFfUlgsCisJUjE0XzE2MTBfVUFSVDFfQ1RTLAorCUFBMTVfMTYxMF9VQVJUMV9SVFMsCisKKwkvKiBJMkMgT01BUC0xNjEwICovCisJSTJDX1NDTCwKKwlJMkNfU0RBLAorCisJLyogS2V5cGFkICovCisJRjE4XzE2MTBfS0JDMCwKKwlEMjBfMTYxMF9LQkMxLAorCUQxOV8xNjEwX0tCQzIsCisJRTE4XzE2MTBfS0JDMywKKwlDMjFfMTYxMF9LQkM0LAorCUcxOF8xNjEwX0tCUjAsCisJRjE5XzE2MTBfS0JSMSwKKwlIMTRfMTYxMF9LQlIyLAorCUUyMF8xNjEwX0tCUjMsCisJRTE5XzE2MTBfS0JSNCwKKwlOMTlfMTYxMF9LQlI1LAorCisJLyogUG93ZXIgbWFuYWdlbWVudCAqLworCVQyMF8xNjEwX0xPV19QV1IsCisKKwkvKiBNQ0xLIFNldHRpbmdzICovCisJVjVfMTcxMF9NQ0xLX09OLAorCVY1XzE3MTBfTUNMS19PRkYsCisJUjEwXzE2MTBfTUNMS19PTiwKKwlSMTBfMTYxMF9NQ0xLX09GRiwKKworCS8qIENvbXBhY3RGbGFzaCBjb250cm9sbGVyICovCisJUDExXzE2MTBfQ0ZfQ0QyLAorCVIxMV8xNjEwX0NGX0lPSVMxNiwKKwlWMTBfMTYxMF9DRl9JUkVRLAorCVcxMF8xNjEwX0NGX1JFU0VULAorCVcxMV8xNjEwX0NGX0NEMSwKK30gcmVnX2NmZ190OworCisjaWYgZGVmaW5lZChfX01VWF9DX18pICYmIGRlZmluZWQoQ09ORklHX09NQVBfTVVYKQorCisvKgorICogVGFibGUgb2YgdmFyaW91cyBGVU5DX01VWCBhbmQgUFVMTF9EV04gY29tYmluYXRpb25zIGZvciBlYWNoIGRldmljZS4KKyAqIFNlZSBhbHNvIHJlZ19jZmdfdCBhYm92ZSBmb3IgdGhlIGxvb2t1cCB0YWJsZS4KKyAqLworc3RhdGljIHJlZ19jZmdfc2V0IF9faW5pdGRhdGFfb3JfbW9kdWxlCityZWdfY2ZnX3RhYmxlW10gPSB7CisvKgorICoJIGRlc2NyaXB0aW9uCQltdXggIG1vZGUgICBtdXgJIHB1bGwgcHVsbCAgcHVsbCAgcHVfcGQJIHB1ICBkYmcKKyAqCQkJCXJlZyAgb2Zmc2V0IG1vZGUgcmVnICBiaXQgICBlbmEJICByZWcKKyAqLworTVVYX0NGRygiVUFSVDFfVFgiLAkJIDksICAgMjEsICAgIDEsCSAgMiwgICAzLCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDFfUlRTIiwJCSA5LCAgIDEyLCAgICAxLAkgIDIsICAgMCwgICAwLAkgTkEsCSAwLCAgMCkKKworLyogVUFSVDIgKENPTV9VQVJUX0dBVElORyksIGNvbmZsaWN0cyB3aXRoIFVTQjIgKi8KK01VWF9DRkcoIlVBUlQyX1RYIiwJCSBDLCAgIDI3LCAgICAxLAkgIDMsICAgMywgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQyX1JYIiwJCSBDLCAgIDE4LCAgICAwLAkgIDMsICAgMSwgICAxLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQyX0NUUyIsCQkgQywgICAyMSwgICAgMCwJICAzLCAgIDEsICAgMSwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJVQVJUMl9SVFMiLAkJIEMsICAgMjQsICAgIDEsCSAgMywgICAyLCAgIDAsCSBOQSwJIDAsICAwKQorCisvKiBVQVJUMyAoR0lHQV9VQVJUX0dBVElORykgKi8KK01VWF9DRkcoIlVBUlQzX1RYIiwJCSA2LCAgICAwLCAgICAxLAkgIDAsICAzMCwgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQzX1JYIiwJCSA2LCAgICAzLCAgICAwLAkgIDAsICAzMSwgICAxLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQzX0NUUyIsCQkgNSwgICAxMiwgICAgMiwJICAwLCAgMjQsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJVQVJUM19SVFMiLAkJIDUsICAgMTUsICAgIDIsCSAgMCwgIDI1LCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiVUFSVDNfQ0xLUkVRIiwJCSA5LCAgIDI3LCAgICAwLAkgIDIsICAgNSwgICAwLAkgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlVBUlQzX0JDTEsiLAkJIEEsICAgIDAsICAgIDAsCSAgMiwgICA2LCAgIDAsCSBOQSwJIDAsICAwKQorTVVYX0NGRygiWTE1XzE2MTBfVUFSVDNfUlRTIiwJIEEsICAgIDAsICAgIDEsCSAgMiwgICA2LCAgIDAsCSBOQSwJIDAsICAwKQorCisvKiBQV1QgJiBQV0wsIGNvbmZsaWN0cyB3aXRoIFVBUlQzICovCitNVVhfQ0ZHKCJQV1QiLAkJIAkgNiwgICAgMCwgICAgMiwJICAwLCAgMzAsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJQV0wiLAkJIAkgNiwgICAgMywgICAgMSwJICAwLCAgMzEsICAgMSwJIE5BLAkgMCwgIDApCisKKy8qIFVTQiBpbnRlcm5hbCBtYXN0ZXIgZ2VuZXJpYyAqLworTVVYX0NGRygiUjE4X1VTQl9WQlVTIiwJCSA3LCAgICA5LCAgICAyLAkgIDEsICAxMSwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlIxOF8xNTEwX1VTQl9HUElPMCIsCSA3LCAgICA5LCAgICAwLAkgIDEsICAxMSwgICAxLAkgTkEsCSAwLCAgMSkKKy8qIHdvcmtzIGFyb3VuZCBlcnJhdHVtOiAgVzRfVVNCX1BVRU4gYW5kIFc0X1VTQl9QVURJUyBhcmUgc3dpdGNoZWQhICovCitNVVhfQ0ZHKCJXNF9VU0JfUFVFTiIsCQkgRCwgICAgMywgICAgMywJICAzLCAgIDUsICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJXNF9VU0JfQ0xLTyIsCQkgRCwgICAgMywgICAgMSwJICAzLCAgIDUsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJXNF9VU0JfSElHSFoiLAkJIEQsICAgIDMsICAgIDQsCSAgMywgICA1LCAgIDAsCSAgMywJIDAsICAxKQorTVVYX0NGRygiVzRfR1BJTzU4IiwJCSBELCAgICAzLCAgICA3LAkgIDMsICAgNSwgICAwLAkgIDMsCSAwLCAgMSkKKworLyogVVNCMSBtYXN0ZXIgKi8KK01VWF9DRkcoIlVTQjFfU1VTUCIsCQkgOCwgICAyNywgICAgMiwJICAxLCAgMjcsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IxX1NFMCIsCQkgOSwgICAgMCwgICAgMiwJICAxLCAgMjgsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJXMTNfMTYxMF9VU0IxX1NFMCIsCSA5LCAgICAwLCAgICA0LAkgIDEsICAyOCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjFfVFhFTiIsCQkgOSwgICAgMywgICAgMiwJICAxLCAgMjksICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IxX1RYRCIsCQkgOSwgICAyNCwgICAgMSwJICAyLCAgIDQsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJVU0IxX1ZQIiwJCSBBLCAgICAzLCAgICAxLAkgIDIsICAgNywgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjFfVk0iLAkJIEEsICAgIDYsICAgIDEsCSAgMiwgICA4LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMV9SQ1YiLAkJIEEsICAgIDksICAgIDEsCSAgMiwgICA5LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMV9TUEVFRCIsCQkgQSwgICAxMiwgICAgMiwJICAyLCAgMTAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJSMTNfMTYxMF9VU0IxX1NQRUVEIiwJIEEsICAgMTIsICAgIDUsCSAgMiwgIDEwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiUjEzXzE3MTBfVVNCMV9TRU8iLAkgQSwgICAxMiwgICAgNSwgICAyLCAgMTAsICAgMCwgICBOQSwgICAgIDAsICAxKQorCisvKiBVU0IyIG1hc3RlciAqLworTVVYX0NGRygiVVNCMl9TVVNQIiwJCSBCLCAgICAzLCAgICAxLAkgIDIsICAxNywgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjJfVlAiLAkJIEIsICAgIDYsICAgIDEsCSAgMiwgIDE4LCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9UWEVOIiwJCSBCLCAgICA5LCAgICAxLAkgIDIsICAxOSwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlVTQjJfVk0iLAkJIEMsICAgMTgsICAgIDEsCSAgMywgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9SQ1YiLAkJIEMsICAgMjEsICAgIDEsCSAgMywgICAxLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9TRTAiLAkJIEMsICAgMjQsICAgIDIsCSAgMywgICAyLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVVNCMl9UWEQiLAkJIEMsICAgMjcsICAgIDIsCSAgMywgICAzLCAgIDAsCSBOQSwJIDAsICAxKQorCisvKiBPTUFQLTE1MTAgR1BJTyAqLworTVVYX0NGRygiUjE4XzE1MTBfR1BJTzAiLAkgNywgICAgOSwgICAgMCwgICAxLCAgMTEsICAgMSwgICAgMCwgICAgIDAsICAxKQorTVVYX0NGRygiUjE5XzE1MTBfR1BJTzEiLAkgNywgICAgNiwgICAgMCwgICAxLCAgMTAsICAgMSwgICAgMCwgICAgIDAsICAxKQorTVVYX0NGRygiTTE0XzE1MTBfR1BJTzIiLAkgNywgICAgMywgICAgMCwgICAxLCAgIDksICAgMSwgICAgMCwgICAgIDAsICAxKQorCisvKiBPTUFQMTYxMCBHUElPICovCitNVVhfQ0ZHKCJQMThfMTYxMF9HUElPMyIsCSA3LCAgICAwLCAgICAwLCAgIDEsICAgOCwgICAwLCAgIE5BLCAgICAgMCwgIDEpCitNVVhfQ0ZHKCJZMTVfMTYxMF9HUElPMTciLAkgQSwgICAgMCwgICAgNywgICAyLCAgIDYsICAgMCwgICBOQSwgICAgIDAsICAxKQorCisvKiBPTUFQLTE3MTAgR1BJTyAqLworTVVYX0NGRygiUjE4XzE3MTBfR1BJTzAiLCAgICAgICAgNywgICAgOSwgICAgMCwgICAxLCAgMTEsICAgMSwgICAgMSwgICAgIDEsICAxKQorTVVYX0NGRygiVjJfMTcxMF9HUElPMTAiLCAgICAgICAgRiwgICAyNywgICAgMSwgICA0LCAgIDMsICAgMSwgICAgNCwgICAgIDEsICAxKQorTVVYX0NGRygiTjIxXzE3MTBfR1BJTzE0IiwgICAgICAgNiwgICAgOSwgICAgMCwgICAxLCAgIDEsICAgMSwgICAgMSwgICAgIDEsICAxKQorTVVYX0NGRygiVzE1XzE3MTBfR1BJTzQwIiwgICAgICAgOSwgICAyNywgICAgNywgICAyLCAgIDUsICAgMSwgICAgMiwgICAgIDEsICAxKQorCisvKiBNUFVJTyAqLworTVVYX0NGRygiTVBVSU8yIiwJCSA3LCAgIDE4LCAgICAwLAkgIDEsICAgMSwgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1QVUlPNCIsCQkgNywgICAxNSwgICAgMCwJICAxLCAgMTMsICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNUFVJTzUiLAkJIDcsICAgMTIsICAgIDAsCSAgMSwgIDEyLCAgIDEsCSBOQSwJIDAsICAxKQorCitNVVhfQ0ZHKCJUMjBfMTYxMF9NUFVJTzUiLAkgNywgICAxMiwgICAgMCwJICAxLCAgMTIsICAgMCwJICAzLAkgMCwgIDEpCitNVVhfQ0ZHKCJXMTFfMTYxMF9NUFVJTzYiLAkxMCwgICAxNSwgICAgMiwJICAzLCAgIDgsICAgMCwJICAzLAkgMCwgIDEpCitNVVhfQ0ZHKCJWMTBfMTYxMF9NUFVJTzciLAkgQSwgICAyNCwgICAgMiwJICAyLCAgMTQsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJXMTFfMTYxMF9NUFVJTzkiLAkxMCwgICAxNSwgICAgMSwJICAzLCAgIDgsICAgMCwJICAzLAkgMCwgIDEpCitNVVhfQ0ZHKCJWMTBfMTYxMF9NUFVJTzEwIiwJIEEsICAgMjQsICAgIDEsCSAgMiwgIDE0LCAgIDAsCSAgMiwJIDAsICAxKQorTVVYX0NGRygiVzEwXzE2MTBfTVBVSU8xMSIsCSBBLCAgIDE4LCAgICAyLAkgIDIsICAxMSwgICAwLAkgIDIsCSAwLCAgMSkKK01VWF9DRkcoIkUyMF8xNjEwX01QVUlPMTMiLAkgMywgICAyMSwgICAgMSwJICAwLCAgIDcsICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJVMjBfMTYxMF9NUFVJTzE0IiwJIDksICAgIDYsICAgIDYsCSAgMCwgIDMwLCAgIDAsCSAgMCwJIDAsICAxKQorTVVYX0NGRygiRTE5XzE2MTBfTVBVSU8xNSIsCSAzLCAgIDE4LCAgICAxLAkgIDAsICAgNiwgICAwLAkgIDAsCSAwLCAgMSkKKworLyogTUNCU1AyICovCitNVVhfQ0ZHKCJNQ0JTUDJfQ0xLUiIsCQkgQywgICAgNiwgICAgMCwJICAyLCAgMjcsICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNQ0JTUDJfQ0xLWCIsCQkgQywgICAgOSwgICAgMCwJICAyLCAgMjksICAgMSwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNQ0JTUDJfRFIiLAkJIEMsICAgIDAsICAgIDAsCSAgMiwgIDI2LCAgIDEsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiTUNCU1AyX0RYIiwJCSBDLCAgIDE1LCAgICAwLAkgIDIsICAzMSwgICAxLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk1DQlNQMl9GU1IiLAkJIEMsICAgMTIsICAgIDAsCSAgMiwgIDMwLCAgIDEsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiTUNCU1AyX0ZTWCIsCQkgQywgICAgMywgICAgMCwJICAyLCAgMjcsICAgMSwJIE5BLAkgMCwgIDEpCisKKy8qIE1DQlNQMyBOT1RFOiBNb2RlIG11c3QgMSBmb3IgY2xvY2sgKi8KK01VWF9DRkcoIk1DQlNQM19DTEtYIiwJCSA5LCAgICAzLCAgICAxLAkgIDEsICAyOSwgICAwLAkgTkEsCSAwLCAgMSkKKworLyogTWlzYyBiYWxsb3V0cyAqLworTVVYX0NGRygiQkFMTE9VVF9WOF9BUk1JTzMiLAkgQiwgICAxOCwgICAgMCwJICAyLCAgMjUsICAgMSwJIE5BLAkgMCwgIDEpCisKKy8qIE9NQVAtMTYxMCBNTUMyICovCitNVVhfQ0ZHKCJXOF8xNjEwX01NQzJfREFUMCIsCSBCLCAgIDIxLCAgICA2LAkgIDIsICAyMywgICAxLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIlY4XzE2MTBfTU1DMl9EQVQxIiwJIEIsICAgMjcsICAgIDYsCSAgMiwgIDI1LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVzE1XzE2MTBfTU1DMl9EQVQyIiwJIDksICAgMTIsICAgIDYsCSAgMiwgICA1LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiUjEwXzE2MTBfTU1DMl9EQVQzIiwJIEIsICAgMTgsICAgIDYsCSAgMiwgIDIyLCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiWTEwXzE2MTBfTU1DMl9DTEsiLAkgQiwgICAgMywgICAgNiwJICAyLCAgMTcsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJZOF8xNjEwX01NQzJfQ01EIiwJIEIsICAgMjQsICAgIDYsCSAgMiwgIDI0LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVjlfMTYxMF9NTUMyX0NNRERJUiIsCSBCLCAgIDEyLCAgICA2LAkgIDIsICAyMCwgICAwLAkgIDIsCSAxLCAgMSkKK01VWF9DRkcoIlY1XzE2MTBfTU1DMl9EQVRESVIwIiwJIEIsICAgMTUsICAgIDYsCSAgMiwgIDIxLCAgIDAsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVzE5XzE2MTBfTU1DMl9EQVRESVIxIiwgOCwgICAxNSwgICAgNiwJICAxLCAgMjMsICAgMCwJICAxLAkgMSwgIDEpCitNVVhfQ0ZHKCJSMThfMTYxMF9NTUMyX0NMS0lOIiwJIDcsICAgIDksICAgIDYsCSAgMSwgIDExLCAgIDAsCSAgMSwJMTEsICAxKQorCisvKiBPTUFQLTE2MTAgRXh0ZXJuYWwgVHJhY2UgSW50ZXJmYWNlICovCitNVVhfQ0ZHKCJNMTlfMTYxMF9FVE1fUFNUQVQwIiwJIDUsICAgMjcsICAgIDEsCSAgMCwgIDI5LCAgIDAsCSAgMCwJIDAsICAxKQorTVVYX0NGRygiTDE1XzE2MTBfRVRNX1BTVEFUMSIsCSA1LCAgIDI0LCAgICAxLAkgIDAsICAyOCwgICAwLAkgIDAsCSAwLCAgMSkKK01VWF9DRkcoIkwxOF8xNjEwX0VUTV9QU1RBVDIiLAkgNSwgICAyMSwgICAgMSwJICAwLCAgMjcsICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJMMTlfMTYxMF9FVE1fRDAiLAkgNSwgICAxOCwgICAgMSwJICAwLCAgMjYsICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJKMTlfMTYxMF9FVE1fRDYiLAkgNSwgICAgMCwgICAgMSwJICAwLCAgMjAsICAgMCwJICAwLAkgMCwgIDEpCitNVVhfQ0ZHKCJKMThfMTYxMF9FVE1fRDciLAkgNSwgICAyNywgICAgMSwJICAwLCAgMTksICAgMCwJICAwLAkgMCwgIDEpCisKKy8qIE9NQVAtMTYxMCBHUElPICovCitNVVhfQ0ZHKCJQMjBfMTYxMF9HUElPNCIsCSA2LCAgIDI3LCAgICAwLAkgIDEsICAgNywgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlY5XzE2MTBfR1BJTzciLAkgQiwgICAxMiwgICAgMSwJICAyLCAgMjAsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJXOF8xNjEwX0dQSU85IiwJIEIsICAgMjEsICAgIDAsCSAgMiwgIDIzLCAgIDAsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiTjE5XzE2MTBfR1BJTzEzIiwJIDYsICAgMTIsICAgIDAsCSAgMSwgICAyLCAgIDAsCSAgMSwJIDEsICAxKQorTVVYX0NGRygiUDEwXzE2MTBfR1BJTzIyIiwJIEMsICAgIDAsICAgIDcsCSAgMiwgIDI2LCAgIDAsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVjVfMTYxMF9HUElPMjQiLAkgQiwgICAxNSwgICAgNywJICAyLCAgMjEsICAgMCwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJBQTIwXzE2MTBfR1BJT180MSIsCSA5LCAgICA5LCAgICA3LAkgIDEsICAzMSwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlcxOV8xNjEwX0dQSU80OCIsCSA4LCAgIDE1LCAgICA3LCAgIDEsICAyMywgICAxLCAgICAxLCAgICAgMCwgIDEpCitNVVhfQ0ZHKCJNN18xNjEwX0dQSU82MiIsCTEwLCAgICAwLCAgICAwLCAgIDQsICAyNCwgICAwLCAgICA0LCAgICAgMCwgIDEpCisKKy8qIE9NQVAtMTYxMCB1V2lyZSAqLworTVVYX0NGRygiVjE5XzE2MTBfVVdJUkVfU0NMSyIsCSA4LCAgICA2LCAgICAwLAkgIDEsICAyMCwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlUxOF8xNjEwX1VXSVJFX1NESSIsCSA4LCAgICAwLCAgICAwLAkgIDEsICAxOCwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlcyMV8xNjEwX1VXSVJFX1NETyIsCSA4LCAgICAzLCAgICAwLAkgIDEsICAxOSwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIk4xNF8xNjEwX1VXSVJFX0NTMCIsCSA4LCAgICA5LCAgICAxLAkgIDEsICAyMSwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIlAxNV8xNjEwX1VXSVJFX0NTMyIsCSA4LCAgIDEyLCAgICAxLAkgIDEsICAyMiwgICAwLAkgIDEsCSAxLCAgMSkKK01VWF9DRkcoIk4xNV8xNjEwX1VXSVJFX0NTMSIsCSA3LCAgIDE4LCAgICAyLAkgIDEsICAxNCwgICAwLAkgTkEsCSAwLCAgMSkKKworLyogT01BUC0xNjEwIEZsYXNoICovCitNVVhfQ0ZHKCJMM18xNjEwX0ZMQVNIX0NTMkJfT0UiLDEwLCAgICA2LCAgICAxLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIk04XzE2MTBfRkxBU0hfQ1MyQl9XRSIsMTAsICAgIDMsICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorCisvKiBGaXJzdCBNTUMgaW50ZXJmYWNlLCBzYW1lIG9uIDE1MTAsIDE2MTAgYW5kIDE3MTAgKi8KK01VWF9DRkcoIk1NQ19DTUQiLAkJIEEsICAgMjcsICAgIDAsCSAgMiwgIDE1LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiTU1DX0RBVDEiLAkJIEEsICAgMjQsICAgIDAsCSAgMiwgIDE0LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiTU1DX0RBVDIiLAkJIEEsICAgMTgsICAgIDAsCSAgMiwgIDEyLCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiTU1DX0RBVDAiLAkJIEIsICAgIDAsICAgIDAsCSAgMiwgIDE2LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiTU1DX0NMSyIsCQkgQSwgICAyMSwgICAgMCwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDEpCitNVVhfQ0ZHKCJNTUNfREFUMyIsCQkxMCwgICAxNSwgICAgMCwJICAzLCAgIDgsICAgMSwJICAzLAkgMSwgIDEpCitNVVhfQ0ZHKCJNMTVfMTcxMF9NTUNfQ0xLSSIsCSA2LCAgIDIxLCAgICAyLCAgIDAsICAgMCwgICAwLCAgIE5BLCAgICAgMCwgIDEpCitNVVhfQ0ZHKCJQMTlfMTcxMF9NTUNfQ01ERElSIiwJIDYsICAgMjQsICAgIDYsICAgMCwgICAwLCAgIDAsICAgTkEsICAgICAwLCAgMSkKK01VWF9DRkcoIlAyMF8xNzEwX01NQ19EQVRESVIwIiwJIDYsICAgMjcsICAgIDUsICAgMCwgICAwLCAgIDAsICAgTkEsICAgICAwLCAgMSkKKworLyogT01BUC0xNjEwIFVTQjAgYWx0ZXJuYXRlIGNvbmZpZ3VyYXRpb24gKi8KK01VWF9DRkcoIlc5X1VTQjBfVFhFTiIsCQkgQiwgICA5LCAgICAgNSwJICAyLCAgMTksICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJBQTlfVVNCMF9WUCIsCQkgQiwgICA2LCAgICAgNSwJICAyLCAgMTgsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJZNV9VU0IwX1JDViIsCQkgQywgIDIxLCAgICAgNSwJICAzLCAgIDEsICAgMCwJICAxLAkgMCwgIDEpCitNVVhfQ0ZHKCJSOV9VU0IwX1ZNIiwJCSBDLCAgMTgsICAgICA1LAkgIDMsICAgMCwgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlY2X1VTQjBfVFhEIiwJCSBDLCAgMjcsICAgICA1LAkgIDMsICAgMywgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlc1X1VTQjBfU0UwIiwJCSBDLCAgMjQsICAgICA1LAkgIDMsICAgMiwgICAwLAkgIDMsCSAwLCAgMSkKK01VWF9DRkcoIlY5X1VTQjBfU1BFRUQiLAkgQiwgIDEyLCAgICAgNSwJICAyLCAgMjAsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJZMTBfVVNCMF9TVVNQIiwJIEIsICAgMywgICAgIDUsCSAgMiwgIDE3LCAgIDAsCSAgMiwJIDAsICAxKQorCisvKiBVU0IyIGludGVyZmFjZSAqLworTVVYX0NGRygiVzlfVVNCMl9UWEVOIiwJCSBCLCAgIDksICAgICAxLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIkFBOV9VU0IyX1ZQIiwJCSBCLCAgIDYsICAgICAxLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlk1X1VTQjJfUkNWIiwJCSBDLCAgMjEsICAgICAxLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMSkKK01VWF9DRkcoIlI4X1VTQjJfVk0iLAkJIEMsICAxOCwgICAgIDEsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVjZfVVNCMl9UWEQiLAkJIEMsICAyNywgICAgIDIsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorTVVYX0NGRygiVzVfVVNCMl9TRTAiLAkJIEMsICAyNCwgICAgIDIsCSBOQSwgICAwLCAgIDAsCSBOQSwJIDAsICAxKQorCisKKy8qIFVBUlQxICovCitNVVhfQ0ZHKCJSMTNfMTYxMF9VQVJUMV9UWCIsCSBBLCAgMTIsICAgICA2LAkgIDIsICAxMCwgICAwLAkgIDIsCTEwLCAgMSkKK01VWF9DRkcoIlYxNF8xNjEwX1VBUlQxX1JYIiwJIDksICAxOCwgICAgIDAsCSAgMiwgICAyLCAgIDAsCSAgMiwJIDIsICAxKQorTVVYX0NGRygiUjE0XzE2MTBfVUFSVDFfQ1RTIiwJIDksICAxNSwgICAgIDAsCSAgMiwgICAxLCAgIDAsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiQUExNV8xNjEwX1VBUlQxX1JUUyIsCSA5LCAgMTIsICAgICAxLAkgIDIsICAgMCwgICAwLAkgIDIsCSAwLCAgMSkKKworLyogSTJDIGludGVyZmFjZSAqLworTVVYX0NGRygiSTJDX1NDTCIsCQkgNywgIDI0LCAgICAgMCwJIE5BLCAgIDAsICAgMCwJIE5BLAkgMCwgIDApCitNVVhfQ0ZHKCJJMkNfU0RBIiwJCSA3LCAgMjcsICAgICAwLAkgTkEsICAgMCwgICAwLAkgTkEsCSAwLCAgMCkKKworLyogS2V5cGFkICovCitNVVhfQ0ZHKCJGMThfMTYxMF9LQkMwIiwJIDMsICAxNSwgICAgIDAsCSAgMCwgICA1LCAgIDEsCSAgMCwJIDAsICAwKQorTVVYX0NGRygiRDIwXzE2MTBfS0JDMSIsCSAzLCAgMTIsICAgICAwLAkgIDAsICAgNCwgICAxLAkgIDAsCSAwLCAgMCkKK01VWF9DRkcoIkQxOV8xNjEwX0tCQzIiLAkgMywgICA5LCAgICAgMCwJICAwLCAgIDMsICAgMSwJICAwLAkgMCwgIDApCitNVVhfQ0ZHKCJFMThfMTYxMF9LQkMzIiwJIDMsICAgNiwgICAgIDAsCSAgMCwgICAyLCAgIDEsCSAgMCwJIDAsICAwKQorTVVYX0NGRygiQzIxXzE2MTBfS0JDNCIsCSAzLCAgIDMsICAgICAwLAkgIDAsICAgMSwgICAxLAkgIDAsCSAwLCAgMCkKK01VWF9DRkcoIkcxOF8xNjEwX0tCUjAiLAkgNCwgICAwLCAgICAgMCwJICAwLCAgIDEwLCAgMSwJICAwLAkgMSwgIDApCitNVVhfQ0ZHKCJGMTlfMTYxMF9LQlIxIiwJIDMsICAgMjcsICAgIDAsCSAgMCwgICA5LCAgIDEsCSAgMCwJIDEsICAwKQorTVVYX0NGRygiSDE0XzE2MTBfS0JSMiIsCSAzLCAgIDI0LCAgICAwLAkgIDAsICAgOCwgICAxLAkgIDAsCSAxLCAgMCkKK01VWF9DRkcoIkUyMF8xNjEwX0tCUjMiLAkgMywgICAyMSwgICAgMCwJICAwLCAgIDcsICAgMSwJICAwLAkgMSwgIDApCitNVVhfQ0ZHKCJFMTlfMTYxMF9LQlI0IiwJIDMsICAgMTgsICAgIDAsCSAgMCwgICA2LCAgIDEsCSAgMCwJIDEsICAwKQorTVVYX0NGRygiTjE5XzE2MTBfS0JSNSIsCSA2LCAgMTIsICAgICAxLAkgIDEsICAgMiwgICAxLAkgIDEsCSAxLCAgMCkKKworLyogUG93ZXIgbWFuYWdlbWVudCAqLworTVVYX0NGRygiVDIwXzE2MTBfTE9XX1BXUiIsCSA3LCAgIDEyLCAgICAxLAkgIE5BLCAgIDAsICAgMCwgICBOQSwJIDAsICAwKQorCisvKiBNQ0xLIFNldHRpbmdzICovCitNVVhfQ0ZHKCJWNV8xNzEwX01DTEtfT04iLAkgQiwgICAxNSwgICAgMCwJICBOQSwgICAwLCAgIDAsICAgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlY1XzE3MTBfTUNMS19PRkYiLAkgQiwgICAxNSwgICAgNiwJICBOQSwgICAwLCAgIDAsICAgTkEsCSAwLCAgMCkKK01VWF9DRkcoIlIxMF8xNjEwX01DTEtfT04iLAkgQiwgICAxOCwgICAgMCwJICBOQSwgIDIyLCAgIDAsCSAgTkEsCSAxLCAgMCkKK01VWF9DRkcoIlIxMF8xNjEwX01DTEtfT0ZGIiwJIEIsICAgMTgsICAgIDYsCSAgMiwgICAyMiwgICAxLAkgIDIsCSAxLCAgMSkKKworLyogQ29tcGFjdEZsYXNoIGNvbnRyb2xsZXIsIGNvbmZsaWN0cyB3aXRoIE1NQzEgKi8KK01VWF9DRkcoIlAxMV8xNjEwX0NGX0NEMiIsCSBBLCAgIDI3LCAgICAzLAkgIDIsICAgMTUsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJSMTFfMTYxMF9DRl9JT0lTMTYiLAkgQiwgICAgMCwgICAgMywJICAyLCAgIDE2LCAgIDEsCSAgMiwJIDEsICAxKQorTVVYX0NGRygiVjEwXzE2MTBfQ0ZfSVJFUSIsCSBBLCAgIDI0LCAgICAzLAkgIDIsICAgMTQsICAgMCwJICAyLAkgMCwgIDEpCitNVVhfQ0ZHKCJXMTBfMTYxMF9DRl9SRVNFVCIsCSBBLCAgIDE4LCAgICAzLAkgIDIsICAgMTIsICAgMSwJICAyLAkgMSwgIDEpCitNVVhfQ0ZHKCJXMTFfMTYxMF9DRl9DRDEiLAkxMCwgICAxNSwgICAgMywJICAzLCAgICA4LCAgIDEsCSAgMywJIDEsICAxKQorfTsKKworI2VuZGlmCS8qIF9fTVVYX0NfXyAqLworCisjaWZkZWYJQ09ORklHX09NQVBfTVVYCisvKiBzZXR1cCBwaW4gbXV4aW5nIGluIExpbnV4ICovCitleHRlcm4gaW50IG9tYXBfY2ZnX3JlZyhyZWdfY2ZnX3QgcmVnX2NmZyk7CisjZWxzZQorLyogYm9vdCBsb2FkZXIgZG9lcyBpdCBhbGwgKG5vIHdhcm5pbmdzIGZyb20gQ09ORklHX09NQVBfTVVYX1dBUk5JTkdTKSAqLworc3RhdGljIGlubGluZSBpbnQgb21hcF9jZmdfcmVnKHJlZ19jZmdfdCByZWdfY2ZnKSB7IHJldHVybiAwOyB9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNTEwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNTEwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5MWE0OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE1MTAuaApAQCAtMCwwICsxLDYxIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNTEwLmgKKyAqCisgKiBIYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgVEkgT01BUDE1MTAgcHJvY2Vzc29yLgorICoKKyAqIENsZWFudXAgZm9yIExpbnV4LTIuNiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQMTUxMF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUDE1MTBfSAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQmFzZSBhZGRyZXNzZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBTeW50YXg6IFhYX0JBU0UgPSBWaXJ0dWFsIGJhc2UgYWRkcmVzcywgWFhfU1RBUlQgPSBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgKi8KKworI2RlZmluZSBPTUFQMTUxMF9TUkFNX0JBU0UJMHhEMDAwMDAwMAorI2RlZmluZSBPTUFQMTUxMF9TUkFNX1NJWkUJKFNaXzEyOEsgKyBTWl82NEspCisjZGVmaW5lIE9NQVAxNTEwX1NSQU1fU1RBUlQJMHgyMDAwMDAwMAorCisjZGVmaW5lIE9NQVAxNTEwX0RTUF9CQVNFCTB4RTAwMDAwMDAKKyNkZWZpbmUgT01BUDE1MTBfRFNQX1NJWkUJMHgyODAwMAorI2RlZmluZSBPTUFQMTUxMF9EU1BfU1RBUlQJMHhFMDAwMDAwMAorCisjZGVmaW5lIE9NQVAxNTEwX0RTUFJFR19CQVNFCTB4RTEwMDAwMDAKKyNkZWZpbmUgT01BUDE1MTBfRFNQUkVHX1NJWkUJU1pfMTI4SworI2RlZmluZSBPTUFQMTUxMF9EU1BSRUdfU1RBUlQJMHhFMTAwMDAwMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTWVtb3J5IHVzZWQgYnkgcG93ZXIgbWFuYWdlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNkZWZpbmUgT01BUDE1MTBfU1JBTV9JRExFX1NVU1BFTkQJKE9NQVAxNTEwX1NSQU1fQkFTRSArIE9NQVAxNTEwX1NSQU1fU0laRSAtIDB4MjAwKQorI2RlZmluZSBPTUFQMTUxMF9TUkFNX0FQSV9TVVNQRU5ECShPTUFQMTUxMF9TUkFNX0lETEVfU1VTUEVORCArIDB4MTAwKQorCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfT01BUDE1MTBfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNnh4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXAxNnh4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiMWZlNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDE2eHguaApAQCAtMCwwICsxLDE4NyBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwMTZ4eC5oCisgKgorICogSGFyZHdhcmUgZGVmaW5pdGlvbnMgZm9yIFRJIE9NQVAxNjEwLzU5MTIvMTcxMCBwcm9jZXNzb3JzLgorICoKKyAqIENsZWFudXAgZm9yIExpbnV4LTIuNiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQMTZYWF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUDE2WFhfSAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQmFzZSBhZGRyZXNzZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBTeW50YXg6IFhYX0JBU0UgPSBWaXJ0dWFsIGJhc2UgYWRkcmVzcywgWFhfU1RBUlQgPSBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgKi8KKworI2RlZmluZSBPTUFQMTZYWF9TUkFNX0JBU0UJMHhEMDAwMDAwMAorI2RlZmluZSBPTUFQMTYxMF9TUkFNX1NJWkUJKFNaXzE2SykKKyNkZWZpbmUgT01BUDU5MTJfU1JBTV9TSVpFCTB4M0U4MDAKKyNkZWZpbmUgT01BUDE2WFhfU1JBTV9TVEFSVAkweDIwMDAwMDAwCisKKyNkZWZpbmUgT01BUDE2WFhfRFNQX0JBU0UJMHhFMDAwMDAwMAorI2RlZmluZSBPTUFQMTZYWF9EU1BfU0laRQkweDI4MDAwCisjZGVmaW5lIE9NQVAxNlhYX0RTUF9TVEFSVAkweEUwMDAwMDAwCisKKyNkZWZpbmUgT01BUDE2WFhfRFNQUkVHX0JBU0UJMHhFMTAwMDAwMAorI2RlZmluZSBPTUFQMTZYWF9EU1BSRUdfU0laRQlTWl8xMjhLCisjZGVmaW5lIE9NQVAxNlhYX0RTUFJFR19TVEFSVAkweEUxMDAwMDAwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNZW1vcnkgdXNlZCBieSBwb3dlciBtYW5hZ2VtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2RlZmluZSBPTUFQMTYxMF9TUkFNX0lETEVfU1VTUEVORAkoT01BUDE2WFhfU1JBTV9CQVNFICsgT01BUDE2MTBfU1JBTV9TSVpFIC0gMHgyMDApCisjZGVmaW5lIE9NQVAxNjEwX1NSQU1fQVBJX1NVU1BFTkQJKE9NQVAxNjEwX1NSQU1fSURMRV9TVVNQRU5EICsgMHgxMDApCisjZGVmaW5lIE9NQVA1OTEyX1NSQU1fSURMRV9TVVNQRU5ECShPTUFQMTZYWF9TUkFNX0JBU0UgKyBPTUFQNTkxMl9TUkFNX1NJWkUgLSAweDIwMCkKKyNkZWZpbmUgT01BUDU5MTJfU1JBTV9BUElfU1VTUEVORAkoT01BUDU5MTJfU1JBTV9JRExFX1NVU1BFTkQgKyAweDEwMCkKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSW50ZXJydXB0cworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUF9JSDJfMF9CQVNFCQkoMHhmZmZlMDAwMCkKKyNkZWZpbmUgT01BUF9JSDJfMV9CQVNFCQkoMHhmZmZlMDEwMCkKKyNkZWZpbmUgT01BUF9JSDJfMl9CQVNFCQkoMHhmZmZlMDIwMCkKKyNkZWZpbmUgT01BUF9JSDJfM19CQVNFCQkoMHhmZmZlMDMwMCkKKworI2RlZmluZSBPTUFQX0lIMl8wX0lUUgkJKE9NQVBfSUgyXzBfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfSUgyXzBfTUlSCQkoT01BUF9JSDJfMF9CQVNFICsgMHgwNCkKKyNkZWZpbmUgT01BUF9JSDJfMF9TSVJfSVJRCShPTUFQX0lIMl8wX0JBU0UgKyAweDEwKQorI2RlZmluZSBPTUFQX0lIMl8wX1NJUl9GSVEJKE9NQVBfSUgyXzBfQkFTRSArIDB4MTQpCisjZGVmaW5lIE9NQVBfSUgyXzBfQ09OVFJPTAkoT01BUF9JSDJfMF9CQVNFICsgMHgxOCkKKyNkZWZpbmUgT01BUF9JSDJfMF9JTFIwCQkoT01BUF9JSDJfMF9CQVNFICsgMHgxYykKKyNkZWZpbmUgT01BUF9JSDJfMF9JU1IJCShPTUFQX0lIMl8wX0JBU0UgKyAweDljKQorCisjZGVmaW5lIE9NQVBfSUgyXzFfSVRSCQkoT01BUF9JSDJfMV9CQVNFICsgMHgwMCkKKyNkZWZpbmUgT01BUF9JSDJfMV9NSVIJCShPTUFQX0lIMl8xX0JBU0UgKyAweDA0KQorI2RlZmluZSBPTUFQX0lIMl8xX1NJUl9JUlEJKE9NQVBfSUgyXzFfQkFTRSArIDB4MTApCisjZGVmaW5lIE9NQVBfSUgyXzFfU0lSX0ZJUQkoT01BUF9JSDJfMV9CQVNFICsgMHgxNCkKKyNkZWZpbmUgT01BUF9JSDJfMV9DT05UUk9MCShPTUFQX0lIMl8xX0JBU0UgKyAweDE4KQorI2RlZmluZSBPTUFQX0lIMl8xX0lMUjEJCShPTUFQX0lIMl8xX0JBU0UgKyAweDFjKQorI2RlZmluZSBPTUFQX0lIMl8xX0lTUgkJKE9NQVBfSUgyXzFfQkFTRSArIDB4OWMpCisKKyNkZWZpbmUgT01BUF9JSDJfMl9JVFIJCShPTUFQX0lIMl8yX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQX0lIMl8yX01JUgkJKE9NQVBfSUgyXzJfQkFTRSArIDB4MDQpCisjZGVmaW5lIE9NQVBfSUgyXzJfU0lSX0lSUQkoT01BUF9JSDJfMl9CQVNFICsgMHgxMCkKKyNkZWZpbmUgT01BUF9JSDJfMl9TSVJfRklRCShPTUFQX0lIMl8yX0JBU0UgKyAweDE0KQorI2RlZmluZSBPTUFQX0lIMl8yX0NPTlRST0wJKE9NQVBfSUgyXzJfQkFTRSArIDB4MTgpCisjZGVmaW5lIE9NQVBfSUgyXzJfSUxSMgkJKE9NQVBfSUgyXzJfQkFTRSArIDB4MWMpCisjZGVmaW5lIE9NQVBfSUgyXzJfSVNSCQkoT01BUF9JSDJfMl9CQVNFICsgMHg5YykKKworI2RlZmluZSBPTUFQX0lIMl8zX0lUUgkJKE9NQVBfSUgyXzNfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVBfSUgyXzNfTUlSCQkoT01BUF9JSDJfM19CQVNFICsgMHgwNCkKKyNkZWZpbmUgT01BUF9JSDJfM19TSVJfSVJRCShPTUFQX0lIMl8zX0JBU0UgKyAweDEwKQorI2RlZmluZSBPTUFQX0lIMl8zX1NJUl9GSVEJKE9NQVBfSUgyXzNfQkFTRSArIDB4MTQpCisjZGVmaW5lIE9NQVBfSUgyXzNfQ09OVFJPTAkoT01BUF9JSDJfM19CQVNFICsgMHgxOCkKKyNkZWZpbmUgT01BUF9JSDJfM19JTFIzCQkoT01BUF9JSDJfM19CQVNFICsgMHgxYykKKyNkZWZpbmUgT01BUF9JSDJfM19JU1IJCShPTUFQX0lIMl8zX0JBU0UgKyAweDljKQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ2xvY2tzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUDE2WFhfQVJNX0lETEVDVDMJKENMS0dFTl9SRUdfQkFTRSArIDB4MjQpCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQaW4gY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQMTZYWF9DT05GX1ZPTFRBR0VfVkREU0hWNgkoMSA8PCA4KQorI2RlZmluZSBPTUFQMTZYWF9DT05GX1ZPTFRBR0VfVkREU0hWNwkoMSA8PCA5KQorI2RlZmluZSBPTUFQMTZYWF9DT05GX1ZPTFRBR0VfVkREU0hWOAkoMSA8PCAxMCkKKyNkZWZpbmUgT01BUDE2WFhfQ09ORl9WT0xUQUdFX1ZERFNIVjkJKDEgPDwgMTEpCisjZGVmaW5lIE9NQVAxNlhYX1NVQkxWRFNfQ09ORl9WQUxJRAkoMSA8PCAxMykKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFN5c3RlbSBjb250cm9sIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVAxNjEwX1JFU0VUX0NPTlRST0wgIDB4ZmZmZTExNDAKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVElQQiBidXMgaW50ZXJmYWNlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBUSVBCX1NXSVRDSF9CQVNFCQkgKDB4ZmZmYmM4MDApCisjZGVmaW5lIE9NQVAxNlhYX01NQ1NEMl9TU1dfTVBVX0NPTkYJKFRJUEJfU1dJVENIX0JBU0UgKyAweDE2MCkKKworLyogVUFSVDMgUmVnaXN0ZXJzIE1hcGluZyB0aHJvdWdoIE1QVSBidXMgKi8KKyNkZWZpbmUgVUFSVDNfUkhSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDApCisjZGVmaW5lIFVBUlQzX1RIUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAwKQorI2RlZmluZSBVQVJUM19ETEwgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMCkKKyNkZWZpbmUgVUFSVDNfSUVSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDQpCisjZGVmaW5lIFVBUlQzX0RMSCAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyA0KQorI2RlZmluZSBVQVJUM19JSVIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgOCkKKyNkZWZpbmUgVUFSVDNfRkNSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDgpCisjZGVmaW5lIFVBUlQzX0VGUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyA4KQorI2RlZmluZSBVQVJUM19MQ1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgwQykKKyNkZWZpbmUgVUFSVDNfTUNSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MTApCisjZGVmaW5lIFVBUlQzX1hPTjFfQUREUjEgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDEwKQorI2RlZmluZSBVQVJUM19YT04yX0FERFIyICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxNCkKKyNkZWZpbmUgVUFSVDNfTFNSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MTQpCisjZGVmaW5lIFVBUlQzX1RDUiAgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDE4KQorI2RlZmluZSBVQVJUM19NU1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxOCkKKyNkZWZpbmUgVUFSVDNfWE9GRjEgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MTgpCisjZGVmaW5lIFVBUlQzX1hPRkYyICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDFDKQorI2RlZmluZSBVQVJUM19TUFIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgxQykKKyNkZWZpbmUgVUFSVDNfVExSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MUMpCisjZGVmaW5lIFVBUlQzX01EUjEgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDIwKQorI2RlZmluZSBVQVJUM19NRFIyICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgyNCkKKyNkZWZpbmUgVUFSVDNfU0ZMU1IgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MjgpCisjZGVmaW5lIFVBUlQzX1RYRkxMICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDI4KQorI2RlZmluZSBVQVJUM19SRVNVTUUgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgyQykKKyNkZWZpbmUgVUFSVDNfVFhGTEggICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MkMpCisjZGVmaW5lIFVBUlQzX1NGUkVHTCAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDMwKQorI2RlZmluZSBVQVJUM19SWEZMTCAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgzMCkKKyNkZWZpbmUgVUFSVDNfU0ZSRUdIICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4MzQpCisjZGVmaW5lIFVBUlQzX1JYRkxIICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDM0KQorI2RlZmluZSBVQVJUM19CTFIgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHgzOCkKKyNkZWZpbmUgVUFSVDNfQUNSRUcgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4M0MpCisjZGVmaW5lIFVBUlQzX0RJVjE2ICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDNDKQorI2RlZmluZSBVQVJUM19TQ1IgICAgICAgICAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHg0MCkKKyNkZWZpbmUgVUFSVDNfU1NSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4NDQpCisjZGVmaW5lIFVBUlQzX0VCTFIgICAgICAgICAgICAgIChPTUFQX1VBUlQzX0JBU0UgKyAweDQ4KQorI2RlZmluZSBVQVJUM19PU0NfMTJNX1NFTCAgICAgICAoT01BUF9VQVJUM19CQVNFICsgMHg0QykKKyNkZWZpbmUgVUFSVDNfTVZSICAgICAgICAgICAgICAgKE9NQVBfVUFSVDNfQkFTRSArIDB4NTApCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdWxzZS1XaWR0aCBMaWdodAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIE9NQVAxNlhYX1BXTF9CQVNFCSgweGZmZmI1ODAwKQorI2RlZmluZSBPTUFQMTZYWF9QV0xfRU5BQkxFCShPTUFQMTZYWF9QV0xfQkFTRSArIDB4MDApCisjZGVmaW5lIE9NQVAxNlhYX1BXTF9DTEtfRU5BQkxFCShPTUFQMTZYWF9QV0xfQkFTRSArIDB4MDQpCisKKyNlbmRpZiAvKiAgX19BU01fQVJDSF9PTUFQMTZYWF9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDczMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9vbWFwNzMwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk5YWIwMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvb21hcDczMC5oCkBAIC0wLDAgKzEsMTA2IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL29tYXA3MzAuaAorICoKKyAqIEhhcmR3YXJlIGRlZmluaXRpb25zIGZvciBUSSBPTUFQNzMwIHByb2Nlc3Nvci4KKyAqCisgKiBDbGVhbnVwIGZvciBMaW51eC0yLjYgYnkgRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBkZS5ib3NjaC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUDczMF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUDczMF9ICisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBCYXNlIGFkZHJlc3NlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFN5bnRheDogWFhfQkFTRSA9IFZpcnR1YWwgYmFzZSBhZGRyZXNzLCBYWF9TVEFSVCA9IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyAqLworCisjZGVmaW5lIE9NQVA3MzBfU1JBTV9CQVNFCTB4RDAwMDAwMDAKKyNkZWZpbmUgT01BUDczMF9TUkFNX1NJWkUJKFNaXzEyOEsgKyBTWl82NEsgKyBTWl84SykKKyNkZWZpbmUgT01BUDczMF9TUkFNX1NUQVJUCTB4MjAwMDAwMDAKKworI2RlZmluZSBPTUFQNzMwX0RTUF9CQVNFCTB4RTAwMDAwMDAKKyNkZWZpbmUgT01BUDczMF9EU1BfU0laRQkweDUwMDAwCisjZGVmaW5lIE9NQVA3MzBfRFNQX1NUQVJUCTB4RTAwMDAwMDAKKworI2RlZmluZSBPTUFQNzMwX0RTUFJFR19CQVNFCTB4RTEwMDAwMDAKKyNkZWZpbmUgT01BUDczMF9EU1BSRUdfU0laRQlTWl8xMjhLCisjZGVmaW5lIE9NQVA3MzBfRFNQUkVHX1NUQVJUCTB4RTEwMDAwMDAKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9NQVA3MzAgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQNzMwX0NPTkZJR19CQVNFCTB4ZmZmZTEwMDAKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzAJMHhmZmZlMTA3MAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMQkweGZmZmUxMDc0CisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl8yCTB4ZmZmZTEwNzgKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzMJMHhmZmZlMTA3YworI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfNAkweGZmZmUxMDgwCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl81CTB4ZmZmZTEwODQKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzYJMHhmZmZlMTA4OAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfNwkweGZmZmUxMDhjCisjZGVmaW5lIE9NQVA3MzBfSU9fQ09ORl84CTB4ZmZmZTEwOTAKKyNkZWZpbmUgT01BUDczMF9JT19DT05GXzkJMHhmZmZlMTA5NAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMTAJMHhmZmZlMTA5OAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMTEJMHhmZmZlMTA5YworI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMTIJMHhmZmZlMTBhMAorI2RlZmluZSBPTUFQNzMwX0lPX0NPTkZfMTMJMHhmZmZlMTBhNAorCisjZGVmaW5lIE9NQVA3MzBfTU9ERV8xCQkweGZmZmUxMDEwCisjZGVmaW5lIE9NQVA3MzBfTU9ERV8yCQkweGZmZmUxMDE0CisKKy8qIENTTUkgc3BlY2lhbHM6IGluIHRlcm1zIG9mIGJhc2UgKyBvZmZzZXQgKi8KKyNkZWZpbmUgT01BUDczMF9NT0RFMl9PRkZTRVQJMHgxNAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT01BUDczMCB0cmFmZmljIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQNzMwX0ZMQVNIX0NGR18wCTB4ZmZmZWNjMTAKKyNkZWZpbmUgT01BUDczMF9GTEFTSF9BQ0ZHXzAJMHhmZmZlY2M1MAorI2RlZmluZSBPTUFQNzMwX0ZMQVNIX0NGR18xCTB4ZmZmZWNjMTQKKyNkZWZpbmUgT01BUDczMF9GTEFTSF9BQ0ZHXzEJMHhmZmZlY2M1NAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT01BUDczMCBEU1AgY29udHJvbCByZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBPTUFQNzMwX0lDUl9CQVNFCTB4ZmZmYmI4MDAKKyNkZWZpbmUgT01BUDczMF9EU1BfTV9DVEwJMHhmZmZiYjgwNAorI2RlZmluZSBPTUFQNzMwX0RTUF9NTVVfQkFTRQkweGZmZmVkMjAwCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPTUFQNzMwIFBDQ19VUExEIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgT01BUDczMF9QQ0NfVVBMRF9DVFJMX0JBU0UJKDB4ZmZmZTA5MDApCisjZGVmaW5lIE9NQVA3MzBfUENDX1VQTERfQ1RSTAkJKE9NQVA3MzBfUENDX1VQTERfQ1RSTF9CQVNFICsgMHgwMCkKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX09NQVA3MzBfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjZTlhZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcGFyYW0uaApAQCAtMCwwICsxLDggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wYXJhbS5oCisgKgorICovCisKKyNpZmRlZiBDT05GSUdfT01BUF8zMktfVElNRVJfSFoKKyNkZWZpbmUgSFoJQ09ORklHX09NQVBfMzJLX1RJTUVSX0haCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcG0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcG0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjA5ZmMwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wbS5oCkBAIC0wLDAgKzEsMjI5IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20vYXJjaC1vbWFwL3BtLmgKKyAqCisgKiBIZWFkZXIgZmlsZSBmb3IgT01BUCBQb3dlciBNYW5hZ2VtZW50IFJvdXRpbmVzCisgKgorICogQXV0aG9yOiBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgkgICBzdXBwb3J0QG12aXN0YS5jb20KKyAqCisgKiBDb3B5cmlnaHQgMjAwMiBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBDbGVhbnVwIDIwMDQgZm9yIExpbnV4IDIuNiBieSBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT01BUF9QTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9QTV9ICisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZWdpc3RlciBhbmQgb2Zmc2V0IGRlZmluaXRpb25zIHRvIGJlIHVzZWQgaW4gUE0gYXNzZW1ibGVyIGNvZGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBDTEtHRU5fUkVHX0FTTV9CQVNFCQlpb19wMnYoMHhmZmZlY2UwMCkKKyNkZWZpbmUgQVJNX0lETEVDVDFfQVNNX09GRlNFVAkJMHgwNAorI2RlZmluZSBBUk1fSURMRUNUMl9BU01fT0ZGU0VUCQkweDA4CisKKyNkZWZpbmUgVENNSUZfQVNNX0JBU0UJCQlpb19wMnYoMHhmZmZlY2MwMCkKKyNkZWZpbmUgRU1JRlNfQ09ORklHX0FTTV9PRkZTRVQJCTB4MGMKKyNkZWZpbmUgRU1JRkZfU0RSQU1fQ09ORklHX0FTTV9PRkZTRVQJMHgyMAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUG93ZXJtYW5hZ2VtZW50IGJpdG1hc2tzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgSURMRV9XQUlUX0NZQ0xFUwkJMHgwMDAwMGZmZgorI2RlZmluZSBQRVJJUEhFUkFMX0VOQUJMRQkJMHgyCisKKyNkZWZpbmUgU0VMRl9SRUZSRVNIX01PREUJCTB4MGMwMDAwMDEKKyNkZWZpbmUgSURMRV9FTUlGU19SRVFVRVNUCQkweGMKKyNkZWZpbmUgTU9ERU1fMzJLX0VOCQkJMHgxCisjZGVmaW5lIFBFUl9FTgkJCQkweDEKKworI2RlZmluZSBDUFVfU1VTUEVORF9TSVpFCQkyMDAKKyNkZWZpbmUgVUxQRF9MT1dfUE9XRVJfRU4JCTB4MDAwMQorCisjZGVmaW5lIERTUF9JRExFX0RFTEFZCQkJMTAKKyNkZWZpbmUgRFNQX0lETEUJCQkweDAwNDAKKyNkZWZpbmUgRFNQX1JTVAkJCQkweDAwMDQKKyNkZWZpbmUgRFNQX0VOQUJMRQkJCTB4MDAwMgorI2RlZmluZSBTVUZGSUNJRU5UX0RTUF9SRVNFVF9USU1FCTEwMDAKKyNkZWZpbmUgREVGQVVMVF9NUFVJX0NPTkZJRwkJMHgwNWNmCisjZGVmaW5lIEVOQUJMRV9YT1JDTEsJCQkweDIKKyNkZWZpbmUgRFNQX0NMT0NLX0VOQUJMRQkJMHgyMDAwCisjZGVmaW5lIERTUF9JRExFX01PREUJCQkweDIKKyNkZWZpbmUgVENfSURMRV9SRVFVRVNUCQkJKDB4MDAwMDAwMGMpCisKKyNkZWZpbmUgSVJRX0xFVkVMMgkJCSgxPDwwKQorI2RlZmluZSBJUlFfS0VZQk9BUkQJCQkoMTw8MSkKKyNkZWZpbmUgSVJRX1VBUlQyCQkJKDE8PDE1KQorCisjZGVmaW5lIFBERV9CSVQJCQkJMHgwOAorI2RlZmluZSBQV0RfRU5fQklUCQkJMHgwNAorI2RlZmluZSBFTl9QRVJDS19CSVQJCQkweDA0CisKKyNkZWZpbmUgT01BUDE1MTBfREVFUF9TTEVFUF9SRVFVRVNUCTB4MGVjNworI2RlZmluZSBPTUFQMTUxMF9CSUdfU0xFRVBfUkVRVUVTVAkweDBjYzUKKyNkZWZpbmUgT01BUDE1MTBfSURMRV9MT09QX1JFUVVFU1QJMHgwYzAwCisjZGVmaW5lIE9NQVAxNTEwX0lETEVfQ0xPQ0tfRE9NQUlOUwkweDIKKyNkZWZpbmUgT01BUDE1MTBfVUxQRF9MT1dfUE9XRVJfUkVRCTB4MDAwMQorCisjZGVmaW5lIE9NQVAxNjEwX0RFRVBfU0xFRVBfUkVRVUVTVAkweDE3YzcKKyNkZWZpbmUgT01BUDE2MTBfQklHX1NMRUVQX1JFUVVFU1QJVEJECisjZGVmaW5lIE9NQVAxNjEwX0lETEVfTE9PUF9SRVFVRVNUCTB4MDQwMAorI2RlZmluZSBPTUFQMTYxMF9JRExFX0NMT0NLX0RPTUFJTlMJMHgwOWM3CisjZGVmaW5lIE9NQVAxNjEwX1VMUERfTE9XX1BPV0VSX1JFUQkweDMKKworI2lmbmRlZiBPTUFQMTUxMF9TUkFNX0lETEVfU1VTUEVORAorI2RlZmluZSBPTUFQMTUxMF9TUkFNX0lETEVfU1VTUEVORCAwCisjZW5kaWYKKyNpZm5kZWYgT01BUDE2MTBfU1JBTV9JRExFX1NVU1BFTkQKKyNkZWZpbmUgT01BUDE2MTBfU1JBTV9JRExFX1NVU1BFTkQgMAorI2VuZGlmCisjaWZuZGVmIE9NQVA1OTEyX1NSQU1fSURMRV9TVVNQRU5ECisjZGVmaW5lIE9NQVA1OTEyX1NSQU1fSURMRV9TVVNQRU5EIDAKKyNlbmRpZgorCisjaWZuZGVmIE9NQVAxNTEwX1NSQU1fQVBJX1NVU1BFTkQKKyNkZWZpbmUgT01BUDE1MTBfU1JBTV9BUElfU1VTUEVORCAwCisjZW5kaWYKKyNpZm5kZWYgT01BUDE2MTBfU1JBTV9BUElfU1VTUEVORAorI2RlZmluZSBPTUFQMTYxMF9TUkFNX0FQSV9TVVNQRU5EIDAKKyNlbmRpZgorI2lmbmRlZiBPTUFQNTkxMl9TUkFNX0FQSV9TVVNQRU5ECisjZGVmaW5lIE9NQVA1OTEyX1NSQU1fQVBJX1NVU1BFTkQgMAorI2VuZGlmCisKKyNpZiAgICAgIWRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDE1MTApICYmIFwKKwkhZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTZYWCkKKyNlcnJvciAiUG93ZXIgbWFuYWdlbWVudCBmb3IgdGhpcyBwcm9jZXNzb3Igbm90IGltcGxlbWVudGVkIHlldCIKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTEVSX18KK2V4dGVybiB2b2lkIG9tYXBfcG1faWRsZSh2b2lkKTsKK2V4dGVybiB2b2lkIG9tYXBfcG1fc3VzcGVuZCh2b2lkKTsKK2V4dGVybiBpbnQgb21hcDE1MTBfY3B1X3N1c3BlbmQodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0KTsKK2V4dGVybiBpbnQgb21hcDE2MTBfY3B1X3N1c3BlbmQodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0KTsKK2V4dGVybiBpbnQgb21hcDE1MTBfaWRsZV9sb29wX3N1c3BlbmQodm9pZCk7CitleHRlcm4gaW50IG9tYXAxNjEwX2lkbGVfbG9vcF9zdXNwZW5kKHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGludCBvbWFwMTUxMF9jcHVfc3VzcGVuZF9zejsKK2V4dGVybiB1bnNpZ25lZCBpbnQgb21hcDE1MTBfaWRsZV9sb29wX3N1c3BlbmRfc3o7CitleHRlcm4gdW5zaWduZWQgaW50IG9tYXAxNjEwX2NwdV9zdXNwZW5kX3N6OworZXh0ZXJuIHVuc2lnbmVkIGludCBvbWFwMTYxMF9pZGxlX2xvb3Bfc3VzcGVuZF9zejsKKworI2RlZmluZSBBUk1fU0FWRSh4KSBhcm1fc2xlZXBfc2F2ZVtBUk1fU0xFRVBfU0FWRV8jI3hdID0gb21hcF9yZWFkbCh4KQorI2RlZmluZSBBUk1fUkVTVE9SRSh4KSBvbWFwX3dyaXRlbCgoYXJtX3NsZWVwX3NhdmVbQVJNX1NMRUVQX1NBVkVfIyN4XSksICh4KSkKKyNkZWZpbmUgQVJNX1NIT1coeCkgYXJtX3NsZWVwX3NhdmVbQVJNX1NMRUVQX1NBVkVfIyN4XQorCisjZGVmaW5lIFVMUERfU0FWRSh4KSB1bHBkX3NsZWVwX3NhdmVbVUxQRF9TTEVFUF9TQVZFXyMjeF0gPSBvbWFwX3JlYWR3KHgpCisjZGVmaW5lIFVMUERfUkVTVE9SRSh4KSBvbWFwX3dyaXRldygodWxwZF9zbGVlcF9zYXZlW1VMUERfU0xFRVBfU0FWRV8jI3hdKSwgKHgpKQorI2RlZmluZSBVTFBEX1NIT1coeCkgdWxwZF9zbGVlcF9zYXZlW1VMUERfU0xFRVBfU0FWRV8jI3hdCisKKyNkZWZpbmUgTVBVSTE1MTBfU0FWRSh4KSBtcHVpMTUxMF9zbGVlcF9zYXZlW01QVUkxNTEwX1NMRUVQX1NBVkVfIyN4XSA9IG9tYXBfcmVhZGwoeCkKKyNkZWZpbmUgTVBVSTE1MTBfUkVTVE9SRSh4KSBvbWFwX3dyaXRlbCgobXB1aTE1MTBfc2xlZXBfc2F2ZVtNUFVJMTUxMF9TTEVFUF9TQVZFXyMjeF0pLCAoeCkpCisjZGVmaW5lIE1QVUkxNTEwX1NIT1coeCkgbXB1aTE1MTBfc2xlZXBfc2F2ZVtNUFVJMTUxMF9TTEVFUF9TQVZFXyMjeF0KKworI2RlZmluZSBNUFVJMTYxMF9TQVZFKHgpIG1wdWkxNjEwX3NsZWVwX3NhdmVbTVBVSTE2MTBfU0xFRVBfU0FWRV8jI3hdID0gb21hcF9yZWFkbCh4KQorI2RlZmluZSBNUFVJMTYxMF9SRVNUT1JFKHgpIG9tYXBfd3JpdGVsKChtcHVpMTYxMF9zbGVlcF9zYXZlW01QVUkxNjEwX1NMRUVQX1NBVkVfIyN4XSksICh4KSkKKyNkZWZpbmUgTVBVSTE2MTBfU0hPVyh4KSBtcHVpMTYxMF9zbGVlcF9zYXZlW01QVUkxNjEwX1NMRUVQX1NBVkVfIyN4XQorCisvKgorICogTGlzdCBvZiBnbG9iYWwgT01BUCByZWdpc3RlcnMgdG8gcHJlc2VydmUuCisgKiBNb3JlIG9uZXMgbGlrZSBDUCBhbmQgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVyIHZhbHVlcyBhcmUgcHJlc2VydmVkCisgKiB3aXRoIHRoZSBzdGFjayBwb2ludGVyIGluIHNsZWVwLlMuCisgKi8KKworZW51bSBhcm1fc2F2ZV9zdGF0ZSB7CisJQVJNX1NMRUVQX1NBVkVfU1RBUlQgPSAwLAorCS8qCisJICogTVBVIGNvbnRyb2wgcmVnaXN0ZXJzIDMyIGJpdHMKKwkgKi8KKwlBUk1fU0xFRVBfU0FWRV9BUk1fQ0tDVEwsCisJQVJNX1NMRUVQX1NBVkVfQVJNX0lETEVDVDEsCisJQVJNX1NMRUVQX1NBVkVfQVJNX0lETEVDVDIsCisJQVJNX1NMRUVQX1NBVkVfQVJNX0VXVVBDVCwKKwlBUk1fU0xFRVBfU0FWRV9BUk1fUlNUQ1QxLAorCUFSTV9TTEVFUF9TQVZFX0FSTV9SU1RDVDIsCisJQVJNX1NMRUVQX1NBVkVfQVJNX1NZU1NULAorCUFSTV9TTEVFUF9TQVZFX1NJWkUKK307CisKK2VudW0gdWxwZF9zYXZlX3N0YXRlIHsKKwlVTFBEX1NMRUVQX1NBVkVfU1RBUlQgPSAwLAorCS8qCisJICogVUxQRCByZWdpc3RlcnMgMTYgYml0cworCSAqLworCVVMUERfU0xFRVBfU0FWRV9VTFBEX0lUX1NUQVRVUywKKwlVTFBEX1NMRUVQX1NBVkVfVUxQRF9DTE9DS19DVFJMLAorCVVMUERfU0xFRVBfU0FWRV9VTFBEX1NPRlRfUkVRLAorCVVMUERfU0xFRVBfU0FWRV9VTFBEX1NUQVRVU19SRVEsCisJVUxQRF9TTEVFUF9TQVZFX1VMUERfRFBMTF9DVFJMLAorCVVMUERfU0xFRVBfU0FWRV9VTFBEX1BPV0VSX0NUUkwsCisJVUxQRF9TTEVFUF9TQVZFX1NJWkUKK307CisKK2VudW0gbXB1aTE1MTBfc2F2ZV9zdGF0ZSB7CisJTVBVSTE1MTBfU0xFRVBfU0FWRV9TVEFSVCA9IDAsCisJLyoKKwkgKiBNUFVJIHJlZ2lzdGVycyAzMiBiaXRzCisJICovCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9NUFVJX0NUUkwsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9NUFVJX0RTUF9CT09UX0NPTkZJRywKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX01QVUlfRFNQX0FQSV9DT05GSUcsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9NUFVJX0RTUF9TVEFUVVMsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9FTUlGRl9TRFJBTV9DT05GSUcsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9FTUlGU19DT05GSUcsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9PTUFQX0lIMV9NSVIsCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9PTUFQX0lIMl9NSVIsCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTUxMCkKKwlNUFVJMTUxMF9TTEVFUF9TQVZFX1NJWkUKKyNlbHNlCisJTVBVSTE1MTBfU0xFRVBfU0FWRV9TSVpFID0gMAorI2VuZGlmCit9OworCitlbnVtIG1wdWkxNjEwX3NhdmVfc3RhdGUgeworCU1QVUkxNjEwX1NMRUVQX1NBVkVfU1RBUlQgPSAwLAorCS8qCisJICogTVBVSSByZWdpc3RlcnMgMzIgYml0cworCSAqLworCU1QVUkxNjEwX1NMRUVQX1NBVkVfTVBVSV9DVFJMLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfTVBVSV9EU1BfQk9PVF9DT05GSUcsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9NUFVJX0RTUF9BUElfQ09ORklHLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfTVBVSV9EU1BfU1RBVFVTLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfRU1JRkZfU0RSQU1fQ09ORklHLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfRU1JRlNfQ09ORklHLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfT01BUF9JSDFfTUlSLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfT01BUF9JSDJfMF9NSVIsCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9PTUFQX0lIMl8xX01JUiwKKwlNUFVJMTYxMF9TTEVFUF9TQVZFX09NQVBfSUgyXzJfTUlSLAorCU1QVUkxNjEwX1NMRUVQX1NBVkVfT01BUF9JSDJfM19NSVIsCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMTZYWCkKKwlNUFVJMTYxMF9TTEVFUF9TQVZFX1NJWkUKKyNlbHNlCisJTVBVSTE2MTBfU0xFRVBfU0FWRV9TSVpFID0gMAorI2VuZGlmCit9OworCisjZW5kaWYgLyogQVNTRU1CTEVSICovCisjZW5kaWYgLyogX19BU01fQVJDSF9PTUFQX1BNX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3N5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YTJjNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3N5c3RlbS5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3BpZWQgZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvc3lzdGVtLmgKKyAqIENvcHlyaWdodCAoYykgMTk5OSBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWNwdV9kb19pZGxlKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX3Jlc2V0KGNoYXIgbW9kZSkKK3sKKwlvbWFwX3dyaXRldygxLCBBUk1fUlNUQ1QxKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RjLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlZDIxOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGMuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGMuaAorICoKKyAqIE9NQVAgVHJhZmZpYyBDb250cm9sbGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA0IE5va2lhIENvcnBvcmF0aW9uCisgKiBBdXRob3I6IEltcmUgRGVhayA8aW1yZS5kZWFrQG5va2lhLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfVENfSAorI2RlZmluZSBfX0FTTV9BUkNIX1RDX0gKKworI2RlZmluZSBUQ01JRl9CQVNFCQkweGZmZmVjYzAwCisjZGVmaW5lIE9NQVBfVENfT0NQVDFfUFJJT1IJKFRDTUlGX0JBU0UgKyAweDAwKQorI2RlZmluZSBPTUFQX1RDX0VNSUZTX1BSSU9SCShUQ01JRl9CQVNFICsgMHgwNCkKKyNkZWZpbmUgT01BUF9UQ19FTUlGRl9QUklPUgkoVENNSUZfQkFTRSArIDB4MDgpCisjZGVmaW5lIEVNSUZTX0NPTkZJRwkJKFRDTUlGX0JBU0UgKyAweDBjKQorI2RlZmluZSBFTUlGU19DUzBfQ09ORklHCShUQ01JRl9CQVNFICsgMHgxMCkKKyNkZWZpbmUgRU1JRlNfQ1MxX0NPTkZJRwkoVENNSUZfQkFTRSArIDB4MTQpCisjZGVmaW5lIEVNSUZTX0NTMl9DT05GSUcJKFRDTUlGX0JBU0UgKyAweDE4KQorI2RlZmluZSBFTUlGU19DUzNfQ09ORklHCShUQ01JRl9CQVNFICsgMHgxYykKKyNkZWZpbmUgRU1JRkZfU0RSQU1fQ09ORklHCShUQ01JRl9CQVNFICsgMHgyMCkKKyNkZWZpbmUgRU1JRkZfTVJTCQkoVENNSUZfQkFTRSArIDB4MjQpCisjZGVmaW5lIFRDX1RJTUVPVVQxCQkoVENNSUZfQkFTRSArIDB4MjgpCisjZGVmaW5lIFRDX1RJTUVPVVQyCQkoVENNSUZfQkFTRSArIDB4MmMpCisjZGVmaW5lIFRDX1RJTUVPVVQzCQkoVENNSUZfQkFTRSArIDB4MzApCisjZGVmaW5lIFRDX0VORElBTklTTQkJKFRDTUlGX0JBU0UgKyAweDM0KQorI2RlZmluZSBFTUlGRl9TRFJBTV9DT05GSUdfMgkoVENNSUZfQkFTRSArIDB4M2MpCisjZGVmaW5lIEVNSUZfQ0ZHX0RZTkFNSUNfV1MJKFRDTUlGX0JBU0UgKyAweDQwKQorI2RlZmluZSBFTUlGU19BQ1MwCQkoVENNSUZfQkFTRSArIDB4NTApCisjZGVmaW5lIEVNSUZTX0FDUzEJCShUQ01JRl9CQVNFICsgMHg1NCkKKyNkZWZpbmUgRU1JRlNfQUNTMgkJKFRDTUlGX0JBU0UgKyAweDU4KQorI2RlZmluZSBFTUlGU19BQ1MzCQkoVENNSUZfQkFTRSArIDB4NWMpCisjZGVmaW5lIE9NQVBfVENfT0NQVDJfUFJJT1IJKFRDTUlGX0JBU0UgKyAweGQwKQorCisvKiBleHRlcm5hbCBFTUlGUyBjaGlwc2VsZWN0IHJlZ2lvbnMgKi8KKyNkZWZpbmUJT01BUF9DUzBfUEhZUwkJMHgwMDAwMDAwMAorI2RlZmluZQlPTUFQX0NTMF9TSVpFCQlTWl82NE0KKworI2RlZmluZQlPTUFQX0NTMV9QSFlTCQkweDA0MDAwMDAwCisjZGVmaW5lCU9NQVBfQ1MxX1NJWkUJCVNaXzY0TQorCisjZGVmaW5lCU9NQVBfQ1MxQV9QSFlTCQlPTUFQX0NTMV9QSFlTCisjZGVmaW5lCU9NQVBfQ1MxQV9TSVpFCQlTWl8zMk0KKworI2RlZmluZQlPTUFQX0NTMUJfUEhZUwkJKE9NQVBfQ1MxQV9QSFlTICsgT01BUF9DUzFBX1NJWkUpCisjZGVmaW5lCU9NQVBfQ1MxQl9TSVpFCQlTWl8zMk0KKworI2RlZmluZQlPTUFQX0NTMl9QSFlTCQkweDA4MDAwMDAwCisjZGVmaW5lCU9NQVBfQ1MyX1NJWkUJCVNaXzY0TQorCisjZGVmaW5lCU9NQVBfQ1MyQV9QSFlTCQlPTUFQX0NTMl9QSFlTCisjZGVmaW5lCU9NQVBfQ1MyQV9TSVpFCQlTWl8zMk0KKworI2RlZmluZQlPTUFQX0NTMkJfUEhZUwkJKE9NQVBfQ1MyQV9QSFlTICsgT01BUF9DUzJBX1NJWkUpCisjZGVmaW5lCU9NQVBfQ1MyQl9TSVpFCQlTWl8zMk0KKworI2RlZmluZQlPTUFQX0NTM19QSFlTCQkweDBjMDAwMDAwCisjZGVmaW5lCU9NQVBfQ1MzX1NJWkUJCVNaXzY0TQorCisjaWZuZGVmCV9fQVNTRU1CTEVSX18KKworLyogRU1JRiBTbG93IEludGVyZmFjZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lCU9NQVBfRU1JRlNfQ09ORklHX1JFRwlfX1JFRzMyKEVNSUZTX0NPTkZJRykKKworI2RlZmluZSBPTUFQX0VNSUZTX0NPTkZJR19GUgkJKDEgPDwgNCkKKyNkZWZpbmUgT01BUF9FTUlGU19DT05GSUdfUERFCQkoMSA8PCAzKQorI2RlZmluZSBPTUFQX0VNSUZTX0NPTkZJR19QV0RfRU4JKDEgPDwgMikKKyNkZWZpbmUgT01BUF9FTUlGU19DT05GSUdfQk0JCSgxIDw8IDEpCisjZGVmaW5lIE9NQVBfRU1JRlNfQ09ORklHX1dQCQkoMSA8PCAwKQorCisjZGVmaW5lIEVNSUZTX0NDUyhuKQkJX19SRUczMihFTUlGU19DUzBfQ09ORklHICsgKDQgKiAobikpKQorI2RlZmluZSBFTUlGU19BQ1MobikJCV9fUkVHMzIoRU1JRlNfQUNTMCArICg0ICogKG4pKSkKKworLyogQWxtb3N0IGFsbCBkb2N1bWVudGF0aW9uIGZvciBjaGlwIGFuZCBib2FyZCBtZW1vcnkgbWFwcyBhc3N1bWVzCisgKiBCTSBpcyBjbGVhci4gIE1vc3QgZGV2ZWwgYm9hcmRzIGhhdmUgYSBzd2l0Y2ggdG8gY29udHJvbCBib290aW5nCisgKiBmcm9tIE5PUiBmbGFzaCAodXNpbmcgZXh0ZXJuYWwgY2hpcHNlbGVjdCAzKSByYXRoZXIgdGhhbiBtYXNrIFJPTSwKKyAqIHdoaWNoIHVzZXMgQk0gdG8gaW50ZXJjaGFuZ2UgdGhlIHBoeXNpY2FsIENTMCBhbmQgQ1MzIGFkZHJlc3Nlcy4KKyAqLworc3RhdGljIGlubGluZSB1MzIgb21hcF9jczBfcGh5cyh2b2lkKQoreworCXJldHVybiAoT01BUF9FTUlGU19DT05GSUdfUkVHICYgT01BUF9FTUlGU19DT05GSUdfQk0pCisJCQk/ICBPTUFQX0NTM19QSFlTIDogMDsKK30KKworc3RhdGljIGlubGluZSB1MzIgb21hcF9jczNfcGh5cyh2b2lkKQoreworCXJldHVybiAoT01BUF9FTUlGU19DT05GSUdfUkVHICYgT01BUF9FTUlGU19DT05GSUdfQk0pCisJCQk/IDAgOiBPTUFQX0NTM19QSFlTOworfQorCisjZW5kaWYJLyogX19BU1NFTUJMRVJfXyAqLworCisjZW5kaWYJLyogX19BU01fQVJDSF9UQ19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxZGRiNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdGltZXguaApAQCAtMCwwICsxLDMzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC90aW1leC5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFJpZGdlUnVuLCBJbmMuCisgKiBBdXRob3I6ICBHcmVnIExvbm5vbiA8Z2xvbm5vbkByaWRnZXJ1bi5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCisgKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19BU01fQVJDSF9PTUFQX1RJTUVYX0gpCisjZGVmaW5lIF9fQVNNX0FSQ0hfT01BUF9USU1FWF9ICisKKyNkZWZpbmUgQ0xPQ0tfVElDS19SQVRFCQkoSFogKiAxMDAwMDBVTCkKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfT01BUF9USU1FWF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RwczY1MDEwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RwczY1MDEwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY5N2JiMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdHBzNjUwMTAuaApAQCAtMCwwICsxLDgwIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3RwczY1MDEwLmgKKyAqCisgKiBGdW5jdGlvbnMgdG8gYWNjZXNzIFRQUzY1MDEwIHBvd2VyIG1hbmFnZW1lbnQgZGV2aWNlLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGRlLmJvc2NoLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KKyAqIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9UUFM2NTAxMF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfVFBTNjUwMTBfSAorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTWFjcm9zIHVzZWQgYnkgZXhwb3J0ZWQgZnVuY3Rpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2RlZmluZSBMRUQxICAxCisjZGVmaW5lIExFRDIgIDIKKyNkZWZpbmUgT0ZGICAgMAorI2RlZmluZSBPTiAgICAxCisjZGVmaW5lIEJMSU5LIDIKKyNkZWZpbmUgR1BJTzEgMQorI2RlZmluZSBHUElPMiAyCisjZGVmaW5lIEdQSU8zIDMKKyNkZWZpbmUgR1BJTzQgNAorI2RlZmluZSBMT1cgICAwCisjZGVmaW5lIEhJR0ggIDEKKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV4cG9ydGVkIGZ1bmN0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIERyYXcgZnJvbSBWQlVTOgorICogICAwIG1BIC0tIERPTidUIERSQVcgKG1pZ2h0IHN1cHBseSBwb3dlciBpbnN0ZWFkKQorICogMTAwIG1BIC0tIHVzYiB1bml0IGxvYWQgKHNsb3dlc3QgY2hhcmdlIHJhdGUpCisgKiA1MDAgbUEgLS0gdXNiIGhpZ2ggcG93ZXIgKGZhc3QgYmF0dGVyeSBjaGFyZ2UpCisgKi8KK2V4dGVybiBpbnQgdHBzNjUwMTBfc2V0X3ZidXNfZHJhdyh1bnNpZ25lZCBtQSk7CisKKy8qIHRwczY1MDEwX3NldF9ncGlvX291dF92YWx1ZSBwYXJhbWV0ZXI6CisgKiBncGlvOiAgR1BJTzEsIEdQSU8yLCBHUElPMyBvciBHUElPNAorICogdmFsdWU6IExPVyBvciBISUdICisgKi8KK2V4dGVybiBpbnQgdHBzNjUwMTBfc2V0X2dwaW9fb3V0X3ZhbHVlKHVuc2lnbmVkIGdwaW8sIHVuc2lnbmVkIHZhbHVlKTsKKworLyogdHBzNjUwMTBfc2V0X2xlZCBwYXJhbWV0ZXI6CisgKiBsZWQ6ICBMRUQxIG9yIExFRDIKKyAqIG1vZGU6IE9OLCBPRkYgb3IgQkxJTksKKyAqLworZXh0ZXJuIGludCB0cHM2NTAxMF9zZXRfbGVkKHVuc2lnbmVkIGxlZCwgdW5zaWduZWQgbW9kZSk7CisKKy8qIHRwczY1MDEwX3NldF9sb3dfcHdyIHBhcmFtZXRlcjoKKyAqIG1vZGU6IE9OIG9yIE9GRgorICovCitleHRlcm4gaW50IHRwczY1MDEwX3NldF9sb3dfcHdyKHVuc2lnbmVkIG1vZGUpOworCisjZW5kaWYgLyogIF9fQVNNX0FSQ0hfVFBTNjUwMTBfSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNjQwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC91bmNvbXByZXNzLmgKKyAqCisgKiBTZXJpYWwgcG9ydCBzdHVicyBmb3Iga2VybmVsIGRlY29tcHJlc3Mgc3RhdHVzIG1lc3NhZ2VzCisgKgorICogSW5pdGlhbGx5IGJhc2VkIG9uOgorICogbGludXgtMi40LjE1LXJtazEtZHNwbGludXgxLjYvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcDE1MTAvdW5jb21wcmVzcy5oCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgUmlkZ2VSdW4sIEluYy4KKyAqIEF1dGhvcjogR3JlZyBMb25ub24gPGdsb25ub25AcmlkZ2VydW4uY29tPgorICoKKyAqIFJld3JpdHRlbiBieToKKyAqIEF1dGhvcjogPHNvdXJjZUBtdmlzdGEuY29tPgorICogMjAwNCAoYykgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2VyaWFsX3JlZy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisKK3Vuc2lnbmVkIGludCBzeXN0ZW1fcmV2OworCisjZGVmaW5lIFVBUlRfT01BUF9NRFIxCQkweDA4CS8qIG1vZGUgZGVmaW5pdGlvbiByZWdpc3RlciAqLworI2RlZmluZSBPTUFQX0lEXzczMAkJMHgzNTVGCisjZGVmaW5lIElEX01BU0sJCQkweDdmZmYKKyNkZWZpbmUgY2hlY2tfcG9ydChiYXNlLCBzaGlmdCkgKChiYXNlW1VBUlRfT01BUF9NRFIxIDw8IHNoaWZ0XSAmIDcpID09IDApCisjZGVmaW5lIG9tYXBfZ2V0X2lkKCkgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSgweGZmZmVkNDA0KSkgPj4gMTIpICYgSURfTUFTSworCitzdGF0aWMgdm9pZAorcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJdm9sYXRpbGUgdTggKiB1YXJ0ID0gMDsKKwlpbnQgc2hpZnQ7CisKKyNpZmRlZglDT05GSUdfT01BUF9MTF9ERUJVR19VQVJUMworCXVhcnQgPSAodm9sYXRpbGUgdTggKikoT01BUF9VQVJUM19CQVNFKTsKKyNlbGlmCUNPTkZJR19PTUFQX0xMX0RFQlVHX1VBUlQyCisJdWFydCA9ICh2b2xhdGlsZSB1OCAqKShPTUFQX1VBUlQyX0JBU0UpOworI2Vsc2UKKwl1YXJ0ID0gKHZvbGF0aWxlIHU4ICopKE9NQVBfVUFSVDFfQkFTRSk7CisjZW5kaWYKKworCS8qIERldGVybWluZSB3aGljaCBzZXJpYWwgcG9ydCB0byB1c2UgKi8KKwlkbyB7CisJCS8qIE1NVSBpcyBub3Qgb24sIHNvIGNwdV9pc19vbWFwWFhYWCgpIHdvbid0IHdvcmsgaGVyZSAqLworCQl1bnNpZ25lZCBpbnQgb21hcF9pZCA9IG9tYXBfZ2V0X2lkKCk7CisKKwkJaWYgKG9tYXBfaWQgPT0gT01BUF9JRF83MzApCisJCQlzaGlmdCA9IDA7CisJCWVsc2UKKwkJCXNoaWZ0ID0gMjsKKworCQlpZiAoY2hlY2tfcG9ydCh1YXJ0LCBzaGlmdCkpCisJCQlicmVhazsKKwkJLyogU2lsZW50IGJvb3QgaWYgbm8gc2VyaWFsIHBvcnRzIGFyZSBlbmFibGVkLiAqLworCQlyZXR1cm47CisJfSB3aGlsZSAoMCk7CisKKwkvKgorCSAqIE5vdywgeG1pdCBlYWNoIGNoYXJhY3RlcgorCSAqLworCXdoaWxlICgqcykgeworCQl3aGlsZSAoISh1YXJ0W1VBUlRfTFNSIDw8IHNoaWZ0XSAmIFVBUlRfTFNSX1RIUkUpKQorCQkJYmFycmllcigpOworCQl1YXJ0W1VBUlRfVFggPDwgc2hpZnRdID0gKnM7CisJCWlmICgqcysrID09ICdcbicpIHsKKwkJCXdoaWxlICghKHVhcnRbVUFSVF9MU1IgPDwgc2hpZnRdICYgVUFSVF9MU1JfVEhSRSkpCisJCQkJYmFycmllcigpOworCQkJdWFydFtVQVJUX1RYIDw8IHNoaWZ0XSA9ICdccic7CisJCX0KKwl9Cit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdXNiLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3VzYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MzhjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3VzYi5oCkBAIC0wLDAgKzEsMTA4IEBACisvLyBpbmNsdWRlL2FzbS1hcm0vbWFjaC1vbWFwL3VzYi5oCisKKyNpZm5kZWYJX19BU01fQVJDSF9PTUFQX1VTQl9ICisjZGVmaW5lCV9fQVNNX0FSQ0hfT01BUF9VU0JfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSBPVEdfQkFTRQkJCTB4ZmZmYjA0MDAKKyNkZWZpbmUgVURDX0JBU0UJCQkweGZmZmI0MDAwCisjZGVmaW5lIE9NQVBfT0hDSV9CQVNFCQkJMHhmZmZiYTAwMAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKgorICogT1RHIGFuZCB0cmFuc2NlaXZlciByZWdpc3RlcnMsIGZvciBPTUFQcyBzdGFydGluZyB3aXRoIEFSTTkyNgorICovCisjZGVmaW5lIE9UR19SRUczMihvZmZzZXQpCQlfX1JFRzMyKE9UR19CQVNFICsgKG9mZnNldCkpCisjZGVmaW5lIE9UR19SRUcxNihvZmZzZXQpCQlfX1JFRzE2KE9UR19CQVNFICsgKG9mZnNldCkpCisKKyNkZWZpbmUgT1RHX1JFVl9SRUcJCQlPVEdfUkVHMzIoMHgwMCkKKyNkZWZpbmUgT1RHX1NZU0NPTl8xX1JFRwkJT1RHX1JFRzMyKDB4MDQpCisjCWRlZmluZQkgVVNCMl9UUlhfTU9ERSh3KQkoKCh3KT4+MjQpJjB4MDcpCisjCWRlZmluZQkgVVNCMV9UUlhfTU9ERSh3KQkoKCh3KT4+MjApJjB4MDcpCisjCWRlZmluZQkgVVNCMF9UUlhfTU9ERSh3KQkoKCh3KT4+MTYpJjB4MDcpCisjCWRlZmluZQkgT1RHX0lETEVfRU4JCSgxIDw8IDE1KQorIwlkZWZpbmUJIEhTVF9JRExFX0VOCQkoMSA8PCAxNCkKKyMJZGVmaW5lCSBERVZfSURMRV9FTgkJKDEgPDwgMTMpCisjCWRlZmluZQkgT1RHX1JFU0VUX0RPTkUJCSgxIDw8IDIpCisjZGVmaW5lIE9UR19TWVNDT05fMl9SRUcJCU9UR19SRUczMigweDA4KQorIwlkZWZpbmUJIE9UR19FTgkJCSgxIDw8IDMxKQorIwlkZWZpbmUJIFVTQlhfU1lOQ0hSTwkJKDEgPDwgMzApCisjCWRlZmluZQkgT1RHX01TVDE2CQkoMSA8PCAyOSkKKyMJZGVmaW5lCSBTUlBfR1BEQVRBCQkoMSA8PCAyOCkKKyMJZGVmaW5lCSBTUlBfR1BEVkJVUwkJKDEgPDwgMjcpCisjCWRlZmluZQkgU1JQX0dQVVZCVVModykJCSgoKHcpPj4yNCkmMHgwNykKKyMJZGVmaW5lCSBBX1dBSVRfVlJJU0UodykJKCgodyk+PjIwKSYweDA3KQorIwlkZWZpbmUJIEJfQVNFX0JSU1QodykJCSgoKHcpPj4xNikmMHgwNykKKyMJZGVmaW5lCSBTUlBfRFBXCQkoMSA8PCAxNCkKKyMJZGVmaW5lCSBTUlBfREFUQQkJKDEgPDwgMTMpCisjCWRlZmluZQkgU1JQX1ZCVVMJCSgxIDw8IDEyKQorIwlkZWZpbmUJIE9UR19QQURFTgkJKDEgPDwgMTApCisjCWRlZmluZQkgSE1DX1BBREVOCQkoMSA8PCA5KQorIwlkZWZpbmUJIFVIT1NUX0VOCQkoMSA8PCA4KQorIwlkZWZpbmUJIEhNQ19UTExTUEVFRAkJKDEgPDwgNykKKyMJZGVmaW5lCSBITUNfVExMQVRUQUNICQkoMSA8PCA2KQorIwlkZWZpbmUJIE9UR19ITUModykJCSgoKHcpPj4wKSYweDNmKQorI2RlZmluZSBPVEdfQ1RSTF9SRUcJCQlPVEdfUkVHMzIoMHgwYykKKyMJZGVmaW5lCSBPVEdfQVNFU1NWTEQJCSgxIDw8IDIwKQorIwlkZWZpbmUJIE9UR19CU0VTU0VORAkJKDEgPDwgMTkpCisjCWRlZmluZQkgT1RHX0JTRVNTVkxECQkoMSA8PCAxOCkKKyMJZGVmaW5lCSBPVEdfVkJVU1ZMRAkJKDEgPDwgMTcpCisjCWRlZmluZQkgT1RHX0lECQkJKDEgPDwgMTYpCisjCWRlZmluZQkgT1RHX0RSSVZFUl9TRUwJCSgxIDw8IDE1KQorIwlkZWZpbmUJIE9UR19BX1NFVEJfSE5QRU4JKDEgPDwgMTIpCisjCWRlZmluZQkgT1RHX0FfQlVTUkVRCQkoMSA8PCAxMSkKKyMJZGVmaW5lCSBPVEdfQl9ITlBFTgkJKDEgPDwgOSkKKyMJZGVmaW5lCSBPVEdfQl9CVVNSRVEJCSgxIDw8IDgpCisjCWRlZmluZQkgT1RHX0JVU0RST1AJCSgxIDw8IDcpCisjCWRlZmluZQkgT1RHX1BVTExET1dOCQkoMSA8PCA1KQorIwlkZWZpbmUJIE9UR19QVUxMVVAJCSgxIDw8IDQpCisjCWRlZmluZQkgT1RHX0RSVl9WQlVTCQkoMSA8PCAzKQorIwlkZWZpbmUJIE9UR19QRF9WQlVTCQkoMSA8PCAyKQorIwlkZWZpbmUJIE9UR19QVV9WQlVTCQkoMSA8PCAxKQorIwlkZWZpbmUJIE9UR19QVV9JRAkJKDEgPDwgMCkKKyNkZWZpbmUgT1RHX0lSUV9FTl9SRUcJCQlPVEdfUkVHMTYoMHgxMCkKKyMJZGVmaW5lCSBEUklWRVJfU1dJVENICQkoMSA8PCAxNSkKKyMJZGVmaW5lCSBBX1ZCVVNfRVJSCQkoMSA8PCAxMykKKyMJZGVmaW5lCSBBX1JFUV9UTVJPVVQJCSgxIDw8IDEyKQorIwlkZWZpbmUJIEFfU1JQX0RFVEVDVAkJKDEgPDwgMTEpCisjCWRlZmluZQkgQl9ITlBfRkFJTAkJKDEgPDwgMTApCisjCWRlZmluZQkgQl9TUlBfVE1ST1VUCQkoMSA8PCA5KQorIwlkZWZpbmUJIEJfU1JQX0RPTkUJCSgxIDw8IDgpCisjCWRlZmluZQkgQl9TUlBfU1RBUlRFRAkJKDEgPDwgNykKKyMJZGVmaW5lCSBPUFJUX0NIRwkJKDEgPDwgMCkKKyNkZWZpbmUgT1RHX0lSUV9TUkNfUkVHCQkJT1RHX1JFRzE2KDB4MTQpCisJLy8gc2FtZSBiaXRzIGFzIGluIElSUV9FTgorI2RlZmluZSBPVEdfT1VUQ1RSTF9SRUcJCQlPVEdfUkVHMTYoMHgxOCkKKyMJZGVmaW5lCSBPVEdWUEQJCQkoMSA8PCAxNCkKKyMJZGVmaW5lCSBPVEdWUFUJCQkoMSA8PCAxMykKKyMJZGVmaW5lCSBPVEdQVUlECQkoMSA8PCAxMikKKyMJZGVmaW5lCSBVU0IyVkRSCQkoMSA8PCAxMCkKKyMJZGVmaW5lCSBVU0IyUERFTgkJKDEgPDwgOSkKKyMJZGVmaW5lCSBVU0IyUFVFTgkJKDEgPDwgOCkKKyMJZGVmaW5lCSBVU0IxVkRSCQkoMSA8PCA2KQorIwlkZWZpbmUJIFVTQjFQREVOCQkoMSA8PCA1KQorIwlkZWZpbmUJIFVTQjFQVUVOCQkoMSA8PCA0KQorIwlkZWZpbmUJIFVTQjBWRFIJCSgxIDw8IDIpCisjCWRlZmluZQkgVVNCMFBERU4JCSgxIDw8IDEpCisjCWRlZmluZQkgVVNCMFBVRU4JCSgxIDw8IDApCisjZGVmaW5lIE9UR19URVNUX1JFRwkJCU9UR19SRUcxNigweDIwKQorI2RlZmluZSBPVEdfVkVORE9SX0NPREVfUkVHCQlPVEdfUkVHMzIoMHhmYykKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZQlVU0JfVFJBTlNDRUlWRVJfQ1RSTF9SRUcJX19SRUczMigweGZmZmUxMDAwICsgMHgwMDY0KQorIwlkZWZpbmUJQ09ORl9VU0IyX1VOSV9SCQkoMSA8PCA4KQorIwlkZWZpbmUJQ09ORl9VU0IxX1VOSV9SCQkoMSA8PCA3KQorIwlkZWZpbmUJQ09ORl9VU0JfUE9SVDBfUih4KQkoKCh4KT4+NCkmMHg3KQorIwlkZWZpbmUJQ09ORl9VU0IwX0lTT0xBVEVfUgkoMSA8PCAzKQorIwlkZWZpbmUJQ09ORl9VU0JfUFdSRE5fRE1fUgkoMSA8PCAyKQorIwlkZWZpbmUJQ09ORl9VU0JfUFdSRE5fRFBfUgkoMSA8PCAxKQorCisKKworCisjZW5kaWYJLyogX19BU01fQVJDSF9PTUFQX1VTQl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3ZtYWxsb2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTgzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3ZtYWxsb2MuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvdm1hbGxvYy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiBKdXN0IGFueSBhcmJpdHJhcnkgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyBWTSBhcmVhOiB0aGUKKyAqIGN1cnJlbnQgOE1CIHZhbHVlIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIGEgOE1CICJob2xlIiBhZnRlciB0aGUKKyAqIHBoeXNpY2FsIG1lbW9yeSB1bnRpbCB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN0YXJ0cy4gIFRoYXQgbWVhbnMgdGhhdAorICogYW55IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdpbGwgaG9wZWZ1bGx5IGJlIGNhdWdodC4KKyAqIFRoZSB2bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2VlbiBlYWNoIHZtYWxsb2NlZAorICogYXJlYSBmb3IgdGhlIHNhbWUgcmVhc29uLiA7KQorICovCisjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUCSAgKDgqMTAyNCoxMDI0KQorI2RlZmluZSBWTUFMTE9DX1NUQVJUCSAgKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfVk1BRERSKHgpICgodW5zaWduZWQgbG9uZykoeCkpCisjZGVmaW5lIFZNQUxMT0NfRU5ECSAgKFBBR0VfT0ZGU0VUICsgMHgxMDAwMDAwMCkKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2F1ZGlvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvYXVkaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDk3NmY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2F1ZGlvLmgKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRlZiBfX0FTTV9BUkNIX0FVRElPX0hfXworI2RlZmluZSBfX0FTTV9BUkNIX0FVRElPX0hfXworCisjaW5jbHVkZSA8c291bmQvZHJpdmVyLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorCit0eXBlZGVmIHN0cnVjdCB7CisJaW50ICgqc3RhcnR1cCkoc25kX3BjbV9zdWJzdHJlYW1fdCAqLCB2b2lkICopOworCXZvaWQgKCpzaHV0ZG93bikoc25kX3BjbV9zdWJzdHJlYW1fdCAqLCB2b2lkICopOworCXZvaWQgKCpzdXNwZW5kKSh2b2lkICopOworCXZvaWQgKCpyZXN1bWUpKHZvaWQgKik7CisJdm9pZCAqcHJpdjsKK30gcHhhMnh4X2F1ZGlvX29wc190OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9iaXRmaWVsZC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2JpdGZpZWxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFmMGUzMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9iaXRmaWVsZC5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICoJRklMRSAgICAJYml0ZmllbGQuaAorICoKKyAqCVZlcnNpb24gCTEuMQorICoJQXV0aG9yICAJQ29weXJpZ2h0IChjKSBNYXJjIEEuIFZpcmVkYXosIDE5OTgKKyAqCSAgICAgICAgCURFQyBXZXN0ZXJuIFJlc2VhcmNoIExhYm9yYXRvcnksIFBhbG8gQWx0bywgQ0EKKyAqCURhdGUgICAgCUFwcmlsIDE5OTggKEFwcmlsIDE5OTcpCisgKglTeXN0ZW0gIAlBZHZhbmNlZCBSSVNDIE1hY2hpbmUgKEFSTSkKKyAqCUxhbmd1YWdlCUMgb3IgQVJNIEFzc2VtYmx5CisgKglQdXJwb3NlIAlEZWZpbml0aW9uIG9mIG1hY3JvcyB0byBvcGVyYXRlIG9uIGJpdCBmaWVsZHMuCisgKi8KKworCisKKyNpZm5kZWYgX19CSVRGSUVMRF9ICisjZGVmaW5lIF9fQklURklFTERfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBVRGF0YShEYXRhKQkoKHVuc2lnbmVkIGxvbmcpIChEYXRhKSkKKyNlbHNlCisjZGVmaW5lIFVEYXRhKERhdGEpCShEYXRhKQorI2VuZGlmCisKKworLyoKKyAqIE1BQ1JPOiBGbGQKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm8gIkZsZCIgZW5jb2RlcyBhIGJpdCBmaWVsZCwgZ2l2ZW4gaXRzIHNpemUgYW5kIGl0cyBzaGlmdCB2YWx1ZQorICogICAgd2l0aCByZXNwZWN0IHRvIGJpdCAwLgorICoKKyAqIE5vdGUKKyAqICAgIEEgbW9yZSBpbnR1aXRpdmUgd2F5IHRvIGVuY29kZSBiaXQgZmllbGRzIHdvdWxkIGhhdmUgYmVlbiB0byB1c2UgdGhlaXIKKyAqICAgIG1hc2suIEhvd2V2ZXIsIGV4dHJhY3Rpbmcgc2l6ZSBhbmQgc2hpZnQgdmFsdWUgaW5mb3JtYXRpb24gZnJvbSBhIGJpdAorICogICAgZmllbGQncyBtYXNrIGlzIGN1bWJlcnNvbWUgYW5kIG1pZ2h0IGJyZWFrIHRoZSBhc3NlbWJsZXIgKDI1NS1jaGFyYWN0ZXIKKyAqICAgIGxpbmUtc2l6ZSBsaW1pdCkuCisgKgorICogSW5wdXQKKyAqICAgIFNpemUgICAgICAJU2l6ZSBvZiB0aGUgYml0IGZpZWxkLCBpbiBudW1iZXIgb2YgYml0cy4KKyAqICAgIFNoZnQgICAgICAJU2hpZnQgdmFsdWUgb2YgdGhlIGJpdCBmaWVsZCB3aXRoIHJlc3BlY3QgdG8gYml0IDAuCisgKgorICogT3V0cHV0CisgKiAgICBGbGQgICAgICAgCUVuY29kZWQgYml0IGZpZWxkLgorICovCisKKyNkZWZpbmUgRmxkKFNpemUsIFNoZnQpCSgoKFNpemUpIDw8IDE2KSArIChTaGZ0KSkKKworCisvKgorICogTUFDUk9TOiBGU2l6ZSwgRlNoZnQsIEZNc2ssIEZBbG5Nc2ssIEYxc3RCaXQKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm9zICJGU2l6ZSIsICJGU2hmdCIsICJGTXNrIiwgIkZBbG5Nc2siLCBhbmQgIkYxc3RCaXQiIHJldHVybgorICogICAgdGhlIHNpemUsIHNoaWZ0IHZhbHVlLCBtYXNrLCBhbGlnbmVkIG1hc2ssIGFuZCBmaXJzdCBiaXQgb2YgYQorICogICAgYml0IGZpZWxkLgorICoKKyAqIElucHV0CisgKiAgICBGaWVsZCAgICAgCUVuY29kZWQgYml0IGZpZWxkICh1c2luZyB0aGUgbWFjcm8gIkZsZCIpLgorICoKKyAqIE91dHB1dAorICogICAgRlNpemUgICAgIAlTaXplIG9mIHRoZSBiaXQgZmllbGQsIGluIG51bWJlciBvZiBiaXRzLgorICogICAgRlNoZnQgICAgIAlTaGlmdCB2YWx1ZSBvZiB0aGUgYml0IGZpZWxkIHdpdGggcmVzcGVjdCB0byBiaXQgMC4KKyAqICAgIEZNc2sgICAgICAJTWFzayBmb3IgdGhlIGJpdCBmaWVsZC4KKyAqICAgIEZBbG5Nc2sgICAJTWFzayBmb3IgdGhlIGJpdCBmaWVsZCwgYWxpZ25lZCBvbiBiaXQgMC4KKyAqICAgIEYxc3RCaXQgICAJRmlyc3QgYml0IG9mIHRoZSBiaXQgZmllbGQuCisgKi8KKworI2RlZmluZSBGU2l6ZShGaWVsZCkJKChGaWVsZCkgPj4gMTYpCisjZGVmaW5lIEZTaGZ0KEZpZWxkKQkoKEZpZWxkKSAmIDB4MDAwMEZGRkYpCisjZGVmaW5lIEZNc2soRmllbGQpCSgoKFVEYXRhICgxKSA8PCBGU2l6ZSAoRmllbGQpKSAtIDEpIDw8IEZTaGZ0IChGaWVsZCkpCisjZGVmaW5lIEZBbG5Nc2soRmllbGQpCSgoVURhdGEgKDEpIDw8IEZTaXplIChGaWVsZCkpIC0gMSkKKyNkZWZpbmUgRjFzdEJpdChGaWVsZCkJKFVEYXRhICgxKSA8PCBGU2hmdCAoRmllbGQpKQorCisKKy8qCisgKiBNQUNSTzogRkluc3J0CisgKgorICogUHVycG9zZQorICogICAgVGhlIG1hY3JvICJGSW5zcnQiIGluc2VydHMgYSB2YWx1ZSBpbnRvIGEgYml0IGZpZWxkIGJ5IHNoaWZ0aW5nIHRoZQorICogICAgZm9ybWVyIGFwcHJvcHJpYXRlbHkuCisgKgorICogSW5wdXQKKyAqICAgIFZhbHVlICAgICAJQml0LWZpZWxkIHZhbHVlLgorICogICAgRmllbGQgICAgIAlFbmNvZGVkIGJpdCBmaWVsZCAodXNpbmcgdGhlIG1hY3JvICJGbGQiKS4KKyAqCisgKiBPdXRwdXQKKyAqICAgIEZJbnNydCAgICAJQml0LWZpZWxkIHZhbHVlIHBvc2l0aW9uZWQgYXBwcm9wcmlhdGVseS4KKyAqLworCisjZGVmaW5lIEZJbnNydChWYWx1ZSwgRmllbGQpIFwKKyAgICAgICAgICAgICAgICAJKFVEYXRhIChWYWx1ZSkgPDwgRlNoZnQgKEZpZWxkKSkKKworCisvKgorICogTUFDUk86IEZFeHRyCisgKgorICogUHVycG9zZQorICogICAgVGhlIG1hY3JvICJGRXh0ciIgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIGEgYml0IGZpZWxkIGJ5IG1hc2tpbmcgYW5kCisgKiAgICBzaGlmdGluZyBpdCBhcHByb3ByaWF0ZWx5LgorICoKKyAqIElucHV0CisgKiAgICBEYXRhICAgICAgCURhdGEgY29udGFpbmluZyB0aGUgYml0LWZpZWxkIHRvIGJlIGV4dHJhY3RlZC4KKyAqICAgIEZpZWxkICAgICAJRW5jb2RlZCBiaXQgZmllbGQgKHVzaW5nIHRoZSBtYWNybyAiRmxkIikuCisgKgorICogT3V0cHV0CisgKiAgICBGRXh0ciAgICAgCUJpdC1maWVsZCB2YWx1ZS4KKyAqLworCisjZGVmaW5lIEZFeHRyKERhdGEsIEZpZWxkKSBcCisgICAgICAgICAgICAgICAgCSgoVURhdGEgKERhdGEpID4+IEZTaGZ0IChGaWVsZCkpICYgRkFsbk1zayAoRmllbGQpKQorCisKKyNlbmRpZiAvKiBfX0JJVEZJRUxEX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9jb3JnaS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2NvcmdpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0ZGIwNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9jb3JnaS5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogSGFyZHdhcmUgc3BlY2lmaWMgZGVmaW5pdGlvbnMgZm9yIFNMLUM3eHggc2VyaWVzIG9mIFBEQXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNSBSaWNoYXJkIFB1cmRpZQorICoKKyAqIEJhc2VkIG9uIFNoYXJwJ3MgMi40IGtlcm5lbCBwYXRjaGVzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9DT1JHSV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfQ09SR0lfSCAgMQorCisKKy8qCisgKiBDb3JnaSAoTm9uIFN0YW5kYXJkKSBHUElPIERlZmluaXRpb25zCisgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19LRVlfSU5UCQkJKDApCS8qIEtleWJvYXJkIEludGVycnVwdCAqLworI2RlZmluZSBDT1JHSV9HUElPX0FDX0lOCQkJKDEpIC8qIENoYXJnZXIgRGV0ZWN0aW9uICovCisjZGVmaW5lIENPUkdJX0dQSU9fV0FLRVVQCQkJKDMpIC8qIFN5c3RlbSB3YWtldXAgbm90aWZpY2F0aW9uPyAqLworI2RlZmluZSBDT1JHSV9HUElPX0FLX0lOVAkJCSg0KQkvKiBIZWFkcGhvbmUgSmFjayBDb250cm9sIEludGVycnVwdCAqLworI2RlZmluZSBDT1JHSV9HUElPX1RQX0lOVAkJCSg1KQkvKiBUb3VjaCBQYW5lbCBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19uU0RfV1AJCQkoNykgLyogU0QgV3JpdGUgUHJvdGVjdD8gKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19uU0RfREVURUNUCQkoOSkgLyogTU1DL1NEIENhcmQgRGV0ZWN0ICovCisjZGVmaW5lIENPUkdJX0dQSU9fblNEX0lOVAkJCSgxMCkgLyogU0QgSW50ZXJydXB0IGZvciBTRElPPyAqLworI2RlZmluZSBDT1JHSV9HUElPX01BSU5fQkFUX0xPVwkJKDExKSAvKiBNYWluIEJhdHRlcnkgTG93IE5vdGlmaWNhdGlvbiAqLworI2RlZmluZSBDT1JHSV9HUElPX0JBVF9DT1ZFUgkJKDExKSAvKiBCYXR0ZXJ5IENvdmVyIERldGVjdCAqLworI2RlZmluZSBDT1JHSV9HUElPX0xFRF9PUkFOR0UJCSgxMykgLyogT3JhbmdlIExFRCBDb250cm9sICovCisjZGVmaW5lIENPUkdJX0dQSU9fQ0ZfQ0QJCQkoMTQpIC8qIENvbXBhY3QgRmxhc2ggQ2FyZCBEZXRlY3QgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19DSFJHX0ZVTEwJCSgxNikgLyogQ2hhcmdpbmcgQ29tcGxldGUgTm90aWZpY2F0aW9uICovCisjZGVmaW5lIENPUkdJX0dQSU9fQ0ZfSVJRCQkJKDE3KSAvKiBDb21wYWN0IEZsYXNoIEludGVycnVwdCAqLworI2RlZmluZSBDT1JHSV9HUElPX0xDRENPTl9DUwkJKDE5KSAvKiBMQ0QgQ29udHJvbCBDaGlwIFNlbGVjdCAqLworI2RlZmluZSBDT1JHSV9HUElPX01BWDExMTFfQ1MJCSgyMCkgLyogTUFYMTExMSBDaGlwIFNlbGVjdCAqLworI2RlZmluZSBDT1JHSV9HUElPX0FEQ19URU1QX09OCQkoMjEpIC8qIFNlbGVjdCBiYXR0ZXJ5IHZvbHRhZ2Ugb3IgdGVtcGVyYXR1cmUgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19JUl9PTgkJCSgyMikgLyogRW5hYmxlIElSIFRyYW5zY2lldmVyICovCisjZGVmaW5lIENPUkdJX0dQSU9fQURTNzg0Nl9DUwkJKDI0KSAvKiBBRFM3ODQ2IENoaXAgU2VsZWN0ICovCisjZGVmaW5lIENPUkdJX0dQSU9fU0RfUFdSCQkJKDMzKSAvKiBNTUMvU0QgUG93ZXIgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19DSFJHX09OCQkJKDM4KSAvKiBFbmFibGUgYmF0dGVyeSBDaGFyZ2luZyAqLworI2RlZmluZSBDT1JHSV9HUElPX0RJU0NIQVJHRV9PTgkJKDQyKSAvKiBFbmFibGUgYmF0dGVyeSBEaXNjaGFyZ2UgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19DSFJHX1VLTgkJCSg0MykgLyogVW5rbm93biBDaGFyZ2luZyAoQnlwYXNzIENvbnRyb2w/KSAqLworI2RlZmluZSBDT1JHSV9HUElPX0hTWU5DCQkJKDQ0KSAvKiBMQ0QgSFN5bmMgUHVsc2UgKi8KKyNkZWZpbmUgQ09SR0lfR1BJT19VU0JfUFVMTFVQCQkoNDUpIC8qIFVTQiBzaG93IHByZXNlbmNlIHRvIGhvc3QgKi8KKworCisvKgorICogQ29yZ2kgS2V5Ym9hcmQgRGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBDT1JHSV9LRVlfU1RST0JFX05VTQkJKDEyKQorI2RlZmluZSBDT1JHSV9LRVlfU0VOU0VfTlVNCQkJKDgpCisjZGVmaW5lIENPUkdJX0dQSU9fQUxMX1NUUk9CRV9CSVQJKDB4MDAwMDNmZmMpCisjZGVmaW5lIENPUkdJX0dQSU9fSElHSF9TRU5TRV9CSVQJKDB4ZmMwMDAwMDApCisjZGVmaW5lIENPUkdJX0dQSU9fSElHSF9TRU5TRV9SU0hJRlQJKDI2KQorI2RlZmluZSBDT1JHSV9HUElPX0xPV19TRU5TRV9CSVQJKDB4MDAwMDAwMDMpCisjZGVmaW5lIENPUkdJX0dQSU9fTE9XX1NFTlNFX0xTSElGVAkoNikKKyNkZWZpbmUgQ09SR0lfR1BJT19TVFJPQkVfQklUKGEpCUdQSU9fYml0KDY2KyhhKSkKKyNkZWZpbmUgQ09SR0lfR1BJT19TRU5TRV9CSVQoYSkJCUdQSU9fYml0KDU4KyhhKSkKKyNkZWZpbmUgQ09SR0lfR0FGUl9BTExfU1RST0JFX0JJVAkoMHgwZmZmZmZmMCkKKyNkZWZpbmUgQ09SR0lfR0FGUl9ISUdIX1NFTlNFX0JJVAkoMHhmZmYwMDAwMCkKKyNkZWZpbmUgQ09SR0lfR0FGUl9MT1dfU0VOU0VfQklUCSgweDAwMDAwMDBmKQorI2RlZmluZSBDT1JHSV9HUElPX0tFWV9TRU5TRShhKQkJKDU4KyhhKSkKKyNkZWZpbmUgQ09SR0lfR1BJT19LRVlfU1RST0JFKGEpCSg2NisoYSkpCisKKworLyoKKyAqIENvcmdpIEludGVycnVwdHMKKyAqLworI2RlZmluZSBDT1JHSV9JUlFfR1BJT19LRVlfSU5UCQlJUlFfR1BJTygwKQorI2RlZmluZSBDT1JHSV9JUlFfR1BJT19BQ19JTgkJSVJRX0dQSU8oMSkKKyNkZWZpbmUgQ09SR0lfSVJRX0dQSU9fV0FLRVVQCQlJUlFfR1BJTygzKQorI2RlZmluZSBDT1JHSV9JUlFfR1BJT19BS19JTlQJCUlSUV9HUElPKDQpCisjZGVmaW5lIENPUkdJX0lSUV9HUElPX1RQX0lOVAkJSVJRX0dQSU8oNSkKKyNkZWZpbmUgQ09SR0lfSVJRX0dQSU9fblNEX0RFVEVDVAlJUlFfR1BJTyg5KQorI2RlZmluZSBDT1JHSV9JUlFfR1BJT19uU0RfSU5UCQlJUlFfR1BJTygxMCkKKyNkZWZpbmUgQ09SR0lfSVJRX0dQSU9fTUFJTl9CQVRfTE9XCUlSUV9HUElPKDExKQorI2RlZmluZSBDT1JHSV9JUlFfR1BJT19DRl9DRAkJSVJRX0dQSU8oMTQpCisjZGVmaW5lIENPUkdJX0lSUV9HUElPX0NIUkdfRlVMTAlJUlFfR1BJTygxNikJLyogQmF0dGVyeSBmdWxseSBjaGFyZ2VkICovCisjZGVmaW5lIENPUkdJX0lSUV9HUElPX0NGX0lSUQkJSVJRX0dQSU8oMTcpCisjZGVmaW5lIENPUkdJX0lSUV9HUElPX0tFWV9TRU5TRShhKQlJUlFfR1BJTyg1OCsoYSkpCS8qIEtleWJvYXJkIFNlbnNlIGxpbmVzICovCisKKworLyoKKyAqIENvcmdpIFNDT09QIEdQSU9zIGFuZCBDb25maWcKKyAqLworI2RlZmluZSBDT1JHSV9TQ1BfTEVEX0dSRUVOCQlTQ09PUF9HUENSX1BBMTEKKyNkZWZpbmUgQ09SR0lfU0NQX1NXQQkJCVNDT09QX0dQQ1JfUEExMiAgLyogSGluZ2UgU3dpdGNoIEEgKi8KKyNkZWZpbmUgQ09SR0lfU0NQX1NXQgkJCVNDT09QX0dQQ1JfUEExMyAgLyogSGluZ2UgU3dpdGNoIEIgKi8KKyNkZWZpbmUgQ09SR0lfU0NQX01VVEVfTAkJU0NPT1BfR1BDUl9QQTE0CisjZGVmaW5lIENPUkdJX1NDUF9NVVRFX1IJCVNDT09QX0dQQ1JfUEExNQorI2RlZmluZSBDT1JHSV9TQ1BfQUtJTl9QVUxMVVAJU0NPT1BfR1BDUl9QQTE2CisjZGVmaW5lIENPUkdJX1NDUF9BUE1fT04JCVNDT09QX0dQQ1JfUEExNworI2RlZmluZSBDT1JHSV9TQ1BfQkFDS0xJR0hUX0NPTlQJU0NPT1BfR1BDUl9QQTE4CisjZGVmaW5lIENPUkdJX1NDUF9NSUNfQklBUwkJU0NPT1BfR1BDUl9QQTE5CisKKyNkZWZpbmUgQ09SR0lfU0NPT1BfSU9fRElSCSggQ09SR0lfU0NQX0xFRF9HUkVFTiB8IENPUkdJX1NDUF9NVVRFX0wgfCBDT1JHSV9TQ1BfTVVURV9SIHwgXAorCQkJQ09SR0lfU0NQX0FLSU5fUFVMTFVQIHwgQ09SR0lfU0NQX0FQTV9PTiB8IENPUkdJX1NDUF9CQUNLTElHSFRfQ09OVCB8IFwKKwkJCUNPUkdJX1NDUF9NSUNfQklBUyApCisjZGVmaW5lIENPUkdJX1NDT09QX0lPX09VVAkoIENPUkdJX1NDUF9NVVRFX0wgfCBDT1JHSV9TQ1BfTVVURV9SICkKKworCisvKgorICogU2hhcmVkIGRhdGEgc3RydWN0dXJlcworICovCitleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RldmljZSBjb3JnaXNjb29wX2RldmljZTsKKworLyoKKyAqIEV4dGVybmFsIEZ1bmN0aW9ucworICovCitleHRlcm4gdW5zaWduZWQgbG9uZyBjb3JnaV9zc3BfYWRzNzg0Nl9wdXRnZXQodW5zaWduZWQgbG9uZyk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBjb3JnaV9zc3BfYWRzNzg0Nl9nZXQodm9pZCk7CitleHRlcm4gdm9pZCBjb3JnaV9zc3BfYWRzNzg0Nl9wdXQodWxvbmcgZGF0YSk7CitleHRlcm4gdm9pZCBjb3JnaV9zc3BfYWRzNzg0Nl9sb2NrKHZvaWQpOworZXh0ZXJuIHZvaWQgY29yZ2lfc3NwX2Fkczc4NDZfdW5sb2NrKHZvaWQpOworZXh0ZXJuIHZvaWQgY29yZ2lfc3NwX2xjZHRnX3NlbmQgKHU4IGFkcnMsIHU4IGRhdGEpOworZXh0ZXJuIHZvaWQgY29yZ2lfc3NwX2JsZHV0eV9zZXQoaW50IGR1dHkpOworZXh0ZXJuIGludCBjb3JnaV9zc3BfbWF4MTExMV9nZXQodWxvbmcgZGF0YSk7CisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0NPUkdJX0ggICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2RlYnVnLW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI4OGU3NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsMzYgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltcmMJcDE1LCAwLCBccngsIGMxLCBjMAorCQl0c3QJXHJ4LCAjMQkJCUAgTU1VIGVuYWJsZWQ/CisJCW1vdmVxCVxyeCwgIzB4NDAwMDAwMDAJCUAgcGh5c2ljYWwKKwkJbW92bmUJXHJ4LCAjaW9fcDJ2KDB4NDAwMDAwMDApCUAgdmlydHVhbAorCQlvcnIJXHJ4LCBccngsICMweDAwMTAwMDAwCisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cglccmQsIFtccngsICMwXQorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMjoJCWxkcglccmQsIFtccngsICMweDE0XQorCQl0c3QJXHJkLCAjKDEgPDwgNikKKwkJYmVxCTEwMDJiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyCVxyZCwgW1xyeCwgIzB4MTRdCisJCXRzdAlccmQsICMoMSA8PCA1KQorCQliZXEJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmRiM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2RtYS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2RtYS5oCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENyZWF0ZWQ6CUp1biAxNSwgMjAwMQorICogIENvcHlyaWdodDoJTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGZmZmZmZmZmCisKKy8qIE5vIERNQSBhcyB0aGUgcmVzdCBvZiB0aGUgd29ybGQgc2VlIGl0ICovCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMAorCisvKgorICogRGVzY3JpcHRvciBzdHJ1Y3R1cmUgZm9yIFBYQSdzIERNQSBlbmdpbmUKKyAqIE5vdGU6IHRoaXMgc3RydWN0dXJlIG11c3QgYWx3YXlzIGJlIGFsaWduZWQgdG8gYSAxNi1ieXRlIGJvdW5kYXJ5LgorICovCisKK3R5cGVkZWYgc3RydWN0IHB4YV9kbWFfZGVzYyB7CisJdm9sYXRpbGUgdTMyIGRkYWRyOwkvKiBQb2ludHMgdG8gdGhlIG5leHQgZGVzY3JpcHRvciArIGZsYWdzICovCisJdm9sYXRpbGUgdTMyIGRzYWRyOwkvKiBEU0FEUiB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNmZXIgKi8KKwl2b2xhdGlsZSB1MzIgZHRhZHI7CS8qIERUQURSIHZhbHVlIGZvciB0aGUgY3VycmVudCB0cmFuc2ZlciAqLworCXZvbGF0aWxlIHUzMiBkY21kOwkvKiBEQ01EIHZhbHVlIGZvciB0aGUgY3VycmVudCB0cmFuc2ZlciAqLworfSBweGFfZG1hX2Rlc2M7CisKKyNpZiBkZWZpbmVkKENPTkZJR19QWEEyN3gpCisKKyNkZWZpbmUgUFhBX0RNQV9DSEFOTkVMUwkzMgorI2RlZmluZSBQWEFfRE1BX05CQ0gocHJpbykJKChwcmlvID09IERNQV9QUklPX0xPVykgPyAxNiA6IDgpCisKK3R5cGVkZWYgZW51bSB7CisJRE1BX1BSSU9fSElHSCA9IDAsCisJRE1BX1BSSU9fTUVESVVNID0gOCwKKwlETUFfUFJJT19MT1cgPSAxNgorfSBweGFfZG1hX3ByaW87CisKKyNlbGlmIGRlZmluZWQoQ09ORklHX1BYQTI1eCkKKworI2RlZmluZSBQWEFfRE1BX0NIQU5ORUxTCTE2CisjZGVmaW5lIFBYQV9ETUFfTkJDSChwcmlvKQkoKHByaW8gPT0gRE1BX1BSSU9fTE9XKSA/IDggOiA0KQorCit0eXBlZGVmIGVudW0geworCURNQV9QUklPX0hJR0ggPSAwLAorCURNQV9QUklPX01FRElVTSA9IDQsCisJRE1BX1BSSU9fTE9XID0gOAorfSBweGFfZG1hX3ByaW87CisKKyNlbmRpZgorCisvKgorICogRE1BIHJlZ2lzdHJhdGlvbgorICovCisKK2ludCBweGFfcmVxdWVzdF9kbWEgKGNoYXIgKm5hbWUsCisJCQkgcHhhX2RtYV9wcmlvIHByaW8sCisJCQkgdm9pZCAoKmlycV9oYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCisJCQkgdm9pZCAqZGF0YSk7CisKK3ZvaWQgcHhhX2ZyZWVfZG1hIChpbnQgZG1hX2NoKTsKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWJmYzhiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBQWEEtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisjaWZkZWYgQ09ORklHX1BYQTI3eAorCQltcmMJcDYsIDAsIFxpcnFzdGF0LCBjMCwgYzAsIDAJCUAgSUNJUAorCQltcmMJcDYsIDAsIFxpcnFuciwgYzEsIGMwLCAwCQlAIElDTVIKKyNlbHNlCisJCW1vdglcYmFzZSwgI2lvX3AydigweDQwMDAwMDAwKQlAIElJUiBDdGwgPSAweDQwZDAwMDAwCisJCWFkZAlcYmFzZSwgXGJhc2UsICMweDAwZDAwMDAwCisJCWxkcglcaXJxc3RhdCwgW1xiYXNlLCAjMF0JCUAgSUNJUAorCQlsZHIJXGlycW5yLCBbXGJhc2UsICM0XQkJQCBJQ01SCisjZW5kaWYKKwkJYW5kcwlcaXJxbnIsIFxpcnFzdGF0LCBcaXJxbnIKKwkJYmVxCTEwMDFmCisJCXJzYglcaXJxc3RhdCwgXGlycW5yLCAjMAorCQlhbmQJXGlycXN0YXQsIFxpcnFzdGF0LCBcaXJxbnIKKwkJY2x6CVxpcnFuciwgXGlycXN0YXQKKwkJcnNiCVxpcnFuciwgXGlycW5yLCAjKDMxIC0gUFhBX0lSUV9TS0lQKQorMTAwMToKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiMDRkOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2hhcmR3YXJlLmgKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAgQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisvKgorICogV2UgcmVxdWlyZXMgYWJzb2x1dGUgYWRkcmVzc2VzLgorICovCisjZGVmaW5lIFBDSU9fQkFTRQkJMAorCisvKgorICogV29ya2Fyb3VuZHMgZm9yIGF0IGxlYXN0IDIgZXJyYXRhIHNvIGZhciByZXF1aXJlIHRoaXMuCisgKiBUaGUgbWFwcGluZyBpcyBzZXQgaW4gbWFjaC1weGEvZ2VuZXJpYy5jLgorICovCisjZGVmaW5lIFVOQ0FDSEVEX1BIWVNfMAkJMHhmZjAwMDAwMAorI2RlZmluZSBVTkNBQ0hFRF9BRERSCQlVTkNBQ0hFRF9QSFlTXzAKKworLyoKKyAqIEludGVsIFBYQTJ4eCBpbnRlcm5hbCByZWdpc3RlciBtYXBwaW5nOgorICoKKyAqIDB4NDAwMDAwMDAgLSAweDQxZmZmZmZmIDwtLT4gMHhmMjAwMDAwMCAtIDB4ZjNmZmZmZmYKKyAqIDB4NDQwMDAwMDAgLSAweDQ1ZmZmZmZmIDwtLT4gMHhmNDAwMDAwMCAtIDB4ZjVmZmZmZmYKKyAqIDB4NDgwMDAwMDAgLSAweDQ5ZmZmZmZmIDwtLT4gMHhmNjAwMDAwMCAtIDB4ZjdmZmZmZmYKKyAqIDB4NGMwMDAwMDAgLSAweDRkZmZmZmZmIDwtLT4gMHhmODAwMDAwMCAtIDB4ZjlmZmZmZmYKKyAqIDB4NTAwMDAwMDAgLSAweDUxZmZmZmZmIDwtLT4gMHhmYTAwMDAwMCAtIDB4ZmJmZmZmZmYKKyAqIDB4NTQwMDAwMDAgLSAweDU1ZmZmZmZmIDwtLT4gMHhmYzAwMDAwMCAtIDB4ZmRmZmZmZmYKKyAqIDB4NTgwMDAwMDAgLSAweDU5ZmZmZmZmIDwtLT4gMHhmZTAwMDAwMCAtIDB4ZmZmZmZmZmYKKyAqCisgKiBOb3RlIHRoYXQgbm90IGFsbCBQWEEyeHggY2hpcHMgaW1wbGVtZW50IGFsbCB0aG9zZSBhZGRyZXNzZXMsIGFuZCB0aGUKKyAqIGtlcm5lbCBvbmx5IG1hcHMgdGhlIG1pbmltdW0gbmVlZGVkIHJhbmdlIG9mIHRoaXMgbWFwcGluZy4KKyAqLworI2RlZmluZSBpb19wMnYoeCkgKDB4ZjIwMDAwMDAgKyAoKHgpICYgMHgwMWZmZmZmZikgKyAoKCh4KSAmIDB4MWMwMDAwMDApID4+IDEpKQorI2RlZmluZSBpb192MnAoeCkgKDB4M2MwMDAwMDAgKyAoKHgpICYgMHgwMWZmZmZmZikgKyAoKCh4KSAmIDB4MGUwMDAwMDApIDw8IDEpKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaWYgMAorIyBkZWZpbmUgX19SRUcoeCkJKCooKHZvbGF0aWxlIHUzMiAqKWlvX3Aydih4KSkpCisjZWxzZQorLyoKKyAqIFRoaXMgX19SRUcoKSB2ZXJzaW9uIGdpdmVzIHRoZSBzYW1lIHJlc3VsdHMgYXMgdGhlIG9uZSBhYm92ZSwgIGV4Y2VwdAorICogdGhhdCB3ZSBhcmUgZm9vbGluZyBnY2Mgc29tZWhvdyBzbyBpdCBnZW5lcmF0ZXMgZmFyIGJldHRlciBhbmQgc21hbGxlcgorICogYXNzZW1ibHkgY29kZSBmb3IgYWNjZXNzIHRvIGNvbnRpZ291cyByZWdpc3RlcnMuICBJdCdzIGEgc2hhbWUgdGhhdCBnY2MKKyAqIGRvZXNuJ3QgZ3Vlc3MgdGhpcyBieSBpdHNlbGYuCisgKi8KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KK3R5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgdTMyIG9mZnNldFs0MDk2XTsgfSBfX3JlZ2Jhc2U7CisjIGRlZmluZSBfX1JFR1AoeCkJKChfX3JlZ2Jhc2UgKikoKHgpJn40MDk1KSktPm9mZnNldFsoKHgpJjQwOTUpPj4yXQorIyBkZWZpbmUgX19SRUcoeCkJX19SRUdQKGlvX3Aydih4KSkKKyNlbmRpZgorCisvKiBXaXRoIGluZGV4ZWQgcmVncyB3ZSBkb24ndCB3YW50IHRvIGZlZWQgdGhlIGluZGV4IHRocm91Z2ggaW9fcDJ2KCkKKyAgIGVzcGVjaWFsbHkgaWYgaXQgaXMgYSB2YXJpYWJsZSwgb3RoZXJ3aXNlIGhvcnJpYmxlIGNvZGUgd2lsbCByZXN1bHQuICovCisjIGRlZmluZSBfX1JFRzIoeCx5KSAgICAgKCoodm9sYXRpbGUgdTMyICopKCh1MzIpJl9fUkVHKHgpICsgKHkpKSkKKworIyBkZWZpbmUgX19QUkVHKHgpCShpb192MnAoKHUzMikmKHgpKSkKKworI2Vsc2UKKworIyBkZWZpbmUgX19SRUcoeCkJaW9fcDJ2KHgpCisjIGRlZmluZSBfX1BSRUcoeCkJaW9fdjJwKHgpCisKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKgorICogSGFuZHkgcm91dGluZSB0byBzZXQgR1BJTyBhbHRlcm5hdGUgZnVuY3Rpb25zCisgKi8KK2V4dGVybiB2b2lkIHB4YV9ncGlvX21vZGUoIGludCBncGlvX21vZGUgKTsKKworLyoKKyAqIFJvdXRpbmUgdG8gZW5hYmxlIG9yIGRpc2FibGUgQ0tFTgorICovCitleHRlcm4gdm9pZCBweGFfc2V0X2NrZW4oaW50IGNsb2NrLCBpbnQgZW5hYmxlKTsKKworLyoKKyAqIHJldHVybiBjdXJyZW50IG1lbW9yeSBhbmQgTENEIGNsb2NrIGZyZXF1ZW5jeSBpbiB1bml0cyBvZiAxMGtIegorICovCitleHRlcm4gdW5zaWduZWQgaW50IGdldF9tZW1jbGtfZnJlcXVlbmN5XzEwa2h6KHZvaWQpOworZXh0ZXJuIHVuc2lnbmVkIGludCBnZXRfbGNkY2xrX2ZyZXF1ZW5jeV8xMGtoeih2b2lkKTsKKworI2VuZGlmCisKKyNlbmRpZiAgLyogX0FTTV9BUkNIX0hBUkRXQVJFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pZHAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pZHAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2VmNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2lkcC5oCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pZHAuaAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAxIENsaWZmIEJyYWtlLCBBY2NlbGVudCBTeXN0ZW1zIEluYy4KKyAqCisgKiAyMDAxLTA5LTEzOiBDbGlmZiBCcmFrZSA8Y2JyYWtlQGFjY2VsZW50LmNvbT4KKyAqICAgICAgICAgICAgIEluaXRpYWwgY29kZQorICoKKyAqIDIwMDUtMDItMTU6IENsaWZmIEJyYWtlIDxjbGlmZi5icmFrZUBnbWFpbC5jb20+CisgKiAgICAgICAgICAgICA8aHR0cDovL3d3dy52aWJyZW4uY29tPiA8aHR0cDovL2JlYy1zeXN0ZW1zLmNvbT4KKyAqICAgICAgICAgICAgIENoYW5nZXMgZm9yIDIuNiBrZXJuZWwuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKgorICogTm90ZTogdGhpcyBmaWxlIG11c3QgYmUgc2FmZSB0byBpbmNsdWRlIGluIGFzc2VtYmx5IGZpbGVzCisgKgorICogU3VwcG9ydCBmb3IgdGhlIFZpYnJlbiBQWEEyNTUgSURQIHJlcXVpcmVzIHJldjA0IG9yIGxhdGVyCisgKiBJRFAgaGFyZHdhcmUuCisgKi8KKworCisjZGVmaW5lIElEUF9GTEFTSF9QSFlTCQkoUFhBX0NTMF9QSFlTKQorI2RlZmluZSBJRFBfQUxUX0ZMQVNIX1BIWVMJKFBYQV9DUzFfUEhZUykKKyNkZWZpbmUgSURQX01FRElBUV9QSFlTCQkoUFhBX0NTM19QSFlTKQorI2RlZmluZSBJRFBfSURFX1BIWVMJCShQWEFfQ1M1X1BIWVMgKyAweDAzMDAwMDAwKQorI2RlZmluZSBJRFBfRVRIX1BIWVMJCShQWEFfQ1M1X1BIWVMgKyAweDAzNDAwMDAwKQorI2RlZmluZSBJRFBfQ09SRVZPTFRfUEhZUwkoUFhBX0NTNV9QSFlTICsgMHgwMzgwMDAwMCkKKyNkZWZpbmUgSURQX0NQTERfUEhZUwkJKFBYQV9DUzVfUEhZUyArIDB4MDNDMDAwMDApCisKKworLyoKKyAqIHZpcnR1YWwgbWVtb3J5IG1hcAorICovCisKKyNkZWZpbmUgSURQX0NPUkVWT0xUX1ZJUlQJKDB4ZjAwMDAwMDApCisjZGVmaW5lIElEUF9DT1JFVk9MVF9TSVpFCSgxKjEwMjQqMTAyNCkKKworI2RlZmluZSBJRFBfQ1BMRF9WSVJUCQkoSURQX0NPUkVWT0xUX1ZJUlQgKyBJRFBfQ09SRVZPTFRfU0laRSkKKyNkZWZpbmUgSURQX0NQTERfU0laRQkJKDEqMTAyNCoxMDI0KQorCisjaWYgKElEUF9DUExEX1ZJUlQgKyBJRFBfQ1BMRF9TSVpFKSA+IDB4ZmMwMDAwMDAKKyNlcnJvciBZb3VyIGN1c3RvbSBJTyBzcGFjZSBpcyBnZXR0aW5nIGEgYml0IGxhcmdlICEhCisjZW5kaWYKKworI2RlZmluZSBDUExEX1AyVih4KQkJKCh4KSAtIElEUF9DUExEX1BIWVMgKyBJRFBfQ1BMRF9WSVJUKQorI2RlZmluZSBDUExEX1YyUCh4KQkJKCh4KSAtIElEUF9DUExEX1ZJUlQgKyBJRFBfQ1BMRF9QSFlTKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworIyAgZGVmaW5lIF9fQ1BMRF9SRUcoeCkJCSgqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopQ1BMRF9QMlYoeCkpKQorI2Vsc2UKKyMgIGRlZmluZSBfX0NQTERfUkVHKHgpCQlDUExEX1AyVih4KQorI2VuZGlmCisKKy8qIGJvYXJkIGxldmVsIHJlZ2lzdGVycyBpbiB0aGUgQ1BMRDogKG9mZnNldHMgZnJvbSBDUExEX1ZJUlQpICovCisKKyNkZWZpbmUgX0lEUF9DUExEX1JFVgkJCShJRFBfQ1BMRF9QSFlTICsgMHgwMCkKKyNkZWZpbmUgX0lEUF9DUExEX1BFUklQSF9QV1IJCShJRFBfQ1BMRF9QSFlTICsgMHgwNCkKKyNkZWZpbmUgX0lEUF9DUExEX0xFRF9DT05UUk9MCQkoSURQX0NQTERfUEhZUyArIDB4MDgpCisjZGVmaW5lIF9JRFBfQ1BMRF9LQl9DT0xfSElHSAkJKElEUF9DUExEX1BIWVMgKyAweDBDKQorI2RlZmluZSBfSURQX0NQTERfS0JfQ09MX0xPVwkJKElEUF9DUExEX1BIWVMgKyAweDEwKQorI2RlZmluZSBfSURQX0NQTERfUENDQVJEX0VOCQkoSURQX0NQTERfUEhZUyArIDB4MTQpCisjZGVmaW5lIF9JRFBfQ1BMRF9HUElPSF9ESVIJCShJRFBfQ1BMRF9QSFlTICsgMHgxOCkKKyNkZWZpbmUgX0lEUF9DUExEX0dQSU9IX1ZBTFVFCQkoSURQX0NQTERfUEhZUyArIDB4MUMpCisjZGVmaW5lIF9JRFBfQ1BMRF9HUElPTF9ESVIJCShJRFBfQ1BMRF9QSFlTICsgMHgyMCkKKyNkZWZpbmUgX0lEUF9DUExEX0dQSU9MX1ZBTFVFCQkoSURQX0NQTERfUEhZUyArIDB4MjQpCisjZGVmaW5lIF9JRFBfQ1BMRF9QQ0NBUkRfUFdSCQkoSURQX0NQTERfUEhZUyArIDB4MjgpCisjZGVmaW5lIF9JRFBfQ1BMRF9NSVNDX0NUUkwJCShJRFBfQ1BMRF9QSFlTICsgMHgyQykKKyNkZWZpbmUgX0lEUF9DUExEX0xDRAkJCShJRFBfQ1BMRF9QSFlTICsgMHgzMCkKKyNkZWZpbmUgX0lEUF9DUExEX0ZMQVNIX1dFCQkoSURQX0NQTERfUEhZUyArIDB4MzQpCisKKyNkZWZpbmUgX0lEUF9DUExEX0tCX1JPVwkJKElEUF9DUExEX1BIWVMgKyAweDUwKQorI2RlZmluZSBfSURQX0NQTERfUENDQVJEMF9TVEFUVVMJKElEUF9DUExEX1BIWVMgKyAweDU0KQorI2RlZmluZSBfSURQX0NQTERfUENDQVJEMV9TVEFUVVMJKElEUF9DUExEX1BIWVMgKyAweDU4KQorI2RlZmluZSBfSURQX0NQTERfTUlTQ19TVEFUVVMJCShJRFBfQ1BMRF9QSFlTICsgMHg1QykKKworLyogRlBHQSByZWdpc3RlciB2aXJ0dWFsIGFkZHJlc3NlcyAqLworCisjZGVmaW5lIElEUF9DUExEX1JFVgkJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX1JFVikKKyNkZWZpbmUgSURQX0NQTERfUEVSSVBIX1BXUgkJX19DUExEX1JFRyhfSURQX0NQTERfUEVSSVBIX1BXUikKKyNkZWZpbmUgSURQX0NQTERfTEVEX0NPTlRST0wJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0xFRF9DT05UUk9MKQorI2RlZmluZSBJRFBfQ1BMRF9LQl9DT0xfSElHSAkJX19DUExEX1JFRyhfSURQX0NQTERfS0JfQ09MX0hJR0gpCisjZGVmaW5lIElEUF9DUExEX0tCX0NPTF9MT1cJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0tCX0NPTF9MT1cpCisjZGVmaW5lIElEUF9DUExEX1BDQ0FSRF9FTgkJX19DUExEX1JFRyhfSURQX0NQTERfUENDQVJEX0VOKQorI2RlZmluZSBJRFBfQ1BMRF9HUElPSF9ESVIJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0dQSU9IX0RJUikKKyNkZWZpbmUgSURQX0NQTERfR1BJT0hfVkFMVUUJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0dQSU9IX1ZBTFVFKQorI2RlZmluZSBJRFBfQ1BMRF9HUElPTF9ESVIJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0dQSU9MX0RJUikKKyNkZWZpbmUgSURQX0NQTERfR1BJT0xfVkFMVUUJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX0dQSU9MX1ZBTFVFKQorI2RlZmluZSBJRFBfQ1BMRF9QQ0NBUkRfUFdSCQlfX0NQTERfUkVHKF9JRFBfQ1BMRF9QQ0NBUkRfUFdSKQorI2RlZmluZSBJRFBfQ1BMRF9NSVNDX0NUUkwJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX01JU0NfQ1RSTCkKKyNkZWZpbmUgSURQX0NQTERfTENECQkJX19DUExEX1JFRyhfSURQX0NQTERfTENEKQorI2RlZmluZSBJRFBfQ1BMRF9GTEFTSF9XRQkJX19DUExEX1JFRyhfSURQX0NQTERfRkxBU0hfV0UpCisKKyNkZWZpbmUgSURQX0NQTERfS0JfUk9XCQkgICAgICAgIF9fQ1BMRF9SRUcoX0lEUF9DUExEX0tCX1JPVykKKyNkZWZpbmUgSURQX0NQTERfUENDQVJEMF9TVEFUVVMJICAgICAgICBfX0NQTERfUkVHKF9JRFBfQ1BMRF9QQ0NBUkQwX1NUQVRVUykKKyNkZWZpbmUgSURQX0NQTERfUENDQVJEMV9TVEFUVVMJICAgICAgICBfX0NQTERfUkVHKF9JRFBfQ1BMRF9QQ0NBUkQxX1NUQVRVUykKKyNkZWZpbmUgSURQX0NQTERfTUlTQ19TVEFUVVMJCV9fQ1BMRF9SRUcoX0lEUF9DUExEX01JU0NfU1RBVFVTKQorCisKKy8qCisgKiBCaXQgbWFza3MgZm9yIHZhcmlvdXMgcmVnaXN0ZXJzCisgKi8KKworLy8gSURQX0NQTERfUENDQVJEX1BXUgorI2RlZmluZSBQQ0MwX1BXUjAJKDEgPDwgMCkKKyNkZWZpbmUgUENDMF9QV1IxCSgxIDw8IDEpCisjZGVmaW5lIFBDQzBfUFdSMgkoMSA8PCAyKQorI2RlZmluZSBQQ0MwX1BXUjMJKDEgPDwgMykKKyNkZWZpbmUgUENDMV9QV1IwCSgxIDw8IDQpCisjZGVmaW5lIFBDQzFfUFdSMQkoMSA8PCA1KQorI2RlZmluZSBQQ0MxX1BXUjIJKDEgPDwgNikKKyNkZWZpbmUgUENDMV9QV1IzCSgxIDw8IDcpCisKKy8vIElEUF9DUExEX1BDQ0FSRF9FTgorI2RlZmluZSBQQ0MwX1JFU0VUCSgxIDw8IDYpCisjZGVmaW5lIFBDQzFfUkVTRVQJKDEgPDwgNykKKyNkZWZpbmUgUENDMF9FTkFCTEUJKDEgPDwgMCkKKyNkZWZpbmUgUENDMV9FTkFCTEUJKDEgPDwgMSkKKworLy8gSURQX0NQTERfUENDQVJEeF9TVEFUVVMKKyNkZWZpbmUgX1BDQ19XUlBST1QJKDEgPDwgNykgLy8gNy00IHJlYWQgYXMgbG93IHRydWUKKyNkZWZpbmUgX1BDQ19SRVNFVAkoMSA8PCA2KQorI2RlZmluZSBfUENDX0lSUQkoMSA8PCA1KQorI2RlZmluZSBfUENDX0lOUEFDSwkoMSA8PCA0KQorI2RlZmluZSBQQ0NfQlZEMgkoMSA8PCAzKQorI2RlZmluZSBQQ0NfQlZEMQkoMSA8PCAyKQorI2RlZmluZSBQQ0NfVlMyCQkoMSA8PCAxKQorI2RlZmluZSBQQ0NfVlMxCQkoMSA8PCAwKQorCisjZGVmaW5lIFBDQ19ERVRFQ1QoeCkJKEdQTFIoNyArICh4KSkgJiBHUElPX2JpdCg3ICsgKHgpKSkKKworLyogQSBsaXN0aW5nIG9mIGludGVycnVwdHMgdXNlZCBieSBleHRlcm5hbCBoYXJkd2FyZSBkZXZpY2VzICovCisKKyNkZWZpbmUgVE9VQ0hfUEFORUxfSVJRCQkJSVJRX0dQSU8oNSkKKyNkZWZpbmUgSURFX0lSUQkJCQlJUlFfR1BJTygyMSkKKworI2RlZmluZSBUT1VDSF9QQU5FTF9JUlFfRURHRQkJSVJRVF9GQUxMSU5HCisKKyNkZWZpbmUgRVRIRVJORVRfSVJRCQkJSVJRX0dQSU8oNCkKKyNkZWZpbmUgRVRIRVJORVRfSVJRX0VER0UJCUlSUVRfUklTSU5HCisKKyNkZWZpbmUgSURFX0lSUV9FREdFCQkJSVJRVF9SSVNJTkcKKworI2RlZmluZSBQQ01DSUFfUzBfQ0RfVkFMSUQJCUlSUV9HUElPKDcpCisjZGVmaW5lIFBDTUNJQV9TMF9DRF9WQUxJRF9FREdFCQlJUlFUX0JPVEhFREdFCisKKyNkZWZpbmUgUENNQ0lBX1MxX0NEX1ZBTElECQlJUlFfR1BJTyg4KQorI2RlZmluZSBQQ01DSUFfUzFfQ0RfVkFMSURfRURHRQkJSVJRVF9CT1RIRURHRQorCisjZGVmaW5lIFBDTUNJQV9TMF9SRFlJTlQJCUlSUV9HUElPKDE5KQorI2RlZmluZSBQQ01DSUFfUzFfUkRZSU5UCQlJUlFfR1BJTygyMikKKworCisvKgorICogTWFjcm9zIGZvciBMRUQgRHJpdmVyCisgKi8KKworLyogbGVkcyAwID0gT04gKi8KKyNkZWZpbmUgSURQX0hCX0xFRAkoMTw8NSkKKyNkZWZpbmUgSURQX0JVU1lfTEVECSgxPDw2KQorCisjZGVmaW5lIElEUF9MRURTX01BU0sJKElEUF9IQl9MRUQgfCBJRFBfQlVTWV9MRUQpCisKKy8qCisgKiBtYWNyb3MgZm9yIE1URCBkcml2ZXIKKyAqLworCisjZGVmaW5lIEZMQVNIX1dSSVRFX1BST1RFQ1RfRElTQUJMRSgpCSgoSURQX0NQTERfRkxBU0hfV0UpICY9IH4oMHgxKSkKKyNkZWZpbmUgRkxBU0hfV1JJVEVfUFJPVEVDVF9FTkFCTEUoKQkoKElEUF9DUExEX0ZMQVNIX1dFKSB8PSAoMHgxKSkKKworLyoKKyAqIG1hY3JvcyBmb3IgbWF0cml4IGtleWJvYXJkIGRyaXZlcgorICovCisKKyNkZWZpbmUgS0VZQkRfTUFUUklYX05VTUJFUl9JTlBVVFMJNworI2RlZmluZSBLRVlCRF9NQVRSSVhfTlVNQkVSX09VVFBVVFMJMTQKKworI2RlZmluZSBLRVlCRF9NQVRSSVhfSU5WRVJUX09VVFBVVF9MT0dJQwlGQUxTRQorI2RlZmluZSBLRVlCRF9NQVRSSVhfSU5WRVJUX0lOUFVUX0xPR0lDCQlGQUxTRQorCisjZGVmaW5lIEtFWUJEX01BVFJJWF9TRVRUTElOR19USU1FX1VTCQkJMTAwCisjZGVmaW5lIEtFWUJEX01BVFJJWF9LRVlTVEFURV9ERUJPVU5DRV9DT05TVEFOVAkJMgorCisjZGVmaW5lIEtFWUJEX01BVFJJWF9TRVRfT1VUUFVUUyhvdXRwdXRzKSBcCit7XAorCUlEUF9DUExEX0tCX0NPTF9MT1cgPSBvdXRwdXRzO1wKKwlJRFBfQ1BMRF9LQl9DT0xfSElHSCA9IG91dHB1dHMgPj4gNztcCit9CisKKyNkZWZpbmUgS0VZQkRfTUFUUklYX0dFVF9JTlBVVFMoaW5wdXRzKSBcCit7XAorCWlucHV0cyA9IChJRFBfQ1BMRF9LQl9ST1cgJiAweDdmKTtcCit9CisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2JkYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2lvLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pby5oCisgKgorICogQ29waWVkIGZyb20gYXNtL2FyY2gvc2ExMTAwL2lvLmgKKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweGZmZmZmZmZmCisKKy8qCisgKiBXZSBkb24ndCBhY3R1YWxseSBoYXZlIHJlYWwgSVNBIG5vciBQQ0kgYnVzZXMsIGJ1dCB0aGVyZSBpcyBzbyBtYW55CisgKiBkcml2ZXJzIG91dCB0aGVyZSB0aGF0IG1pZ2h0IGp1c3Qgd29yayBpZiB3ZSBmYWtlIHRoZW0uLi4KKyAqLworI2RlZmluZSBfX2lvKGEpCQkJKCh2b2lkIF9faW9tZW0gKikoYSkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKGEpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2lycS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2lycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NzBlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaXJxLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pcnEuaAorICoKKyAqIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiBDb3B5cmlnaHQ6CU1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2RlZmluZSBmaXh1cF9pcnEoeCkJKHgpCisKKy8qCisgKiBUaGlzIHByb3RvdHlwZSBpcyByZXF1aXJlZCBmb3IgY2FzY2FkaW5nIG9mIG11bHRpcGxleGVkIGludGVycnVwdHMuCisgKiBTaW5jZSBpdCBkb2Vzbid0IGV4aXN0IGVsc2V3aGVyZSwgd2UnbGwgcHV0IGl0IGhlcmUgZm9yIG5vdy4KKyAqLworZXh0ZXJuIHZvaWQgZG9fSVJRKGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzRiNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaXJxcy5oCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9pcnFzLmgKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAgQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2lmZGVmIENPTkZJR19QWEEyN3gKKyNkZWZpbmUgUFhBX0lSUV9TS0lQCTAKKyNlbHNlCisjZGVmaW5lIFBYQV9JUlFfU0tJUAk3CisjZW5kaWYKKworI2RlZmluZSBQWEFfSVJRKHgpCSgoeCkgLSBQWEFfSVJRX1NLSVApCisKKyNkZWZpbmUgSVJRX1NTUDMJUFhBX0lSUSgwKQkvKiBTU1AzIHNlcnZpY2UgcmVxdWVzdCAqLworI2RlZmluZSBJUlFfTVNMCQlQWEFfSVJRKDEpCS8qIE1TTCBJbnRlcmZhY2UgaW50ZXJydXB0ICovCisjZGVmaW5lIElSUV9VU0JIMglQWEFfSVJRKDIpCS8qIFVTQiBIb3N0IGludGVycnVwdCAxIChPSENJKSAqLworI2RlZmluZSBJUlFfVVNCSDEJUFhBX0lSUSgzKQkvKiBVU0IgSG9zdCBpbnRlcnJ1cHQgMiAobm9uLU9IQ0kpICovCisjZGVmaW5lIElSUV9LRVlQQUQJUFhBX0lSUSg0KQkvKiBLZXkgcGFkIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgSVJRX01FTVNUSwlQWEFfSVJRKDUpCS8qIE1lbW9yeSBTdGljayBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVJRX1BXUkkyQwlQWEFfSVJRKDYpCS8qIFBvd2VyIEkyQyBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVJRX0hXVUFSVAlQWEFfSVJRKDcpCS8qIEhXVUFSVCBUcmFuc21pdC9SZWNlaXZlL0Vycm9yIChQWEEyNngpICovCisjZGVmaW5lIElSUV9PU1RfNF8xMQlQWEFfSVJRKDcpCS8qIE9TIHRpbWVyIDQtMTEgbWF0Y2hlcyAoUFhBMjd4KSAqLworI2RlZmluZQlJUlFfR1BJTzAJUFhBX0lSUSg4KQkvKiBHUElPMCBFZGdlIERldGVjdCAqLworI2RlZmluZQlJUlFfR1BJTzEJUFhBX0lSUSg5KQkvKiBHUElPMSBFZGdlIERldGVjdCAqLworI2RlZmluZQlJUlFfR1BJT18yX3gJUFhBX0lSUSgxMCkJLyogR1BJT1syLXhdIEVkZ2UgRGV0ZWN0ICovCisjZGVmaW5lCUlSUV9VU0IJCVBYQV9JUlEoMTEpCS8qIFVTQiBTZXJ2aWNlICovCisjZGVmaW5lCUlSUV9QTVUJCVBYQV9JUlEoMTIpCS8qIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAqLworI2RlZmluZQlJUlFfSTJTCQlQWEFfSVJRKDEzKQkvKiBJMlMgSW50ZXJydXB0ICovCisjZGVmaW5lCUlSUV9BQzk3CVBYQV9JUlEoMTQpCS8qIEFDOTcgSW50ZXJydXB0ICovCisjZGVmaW5lIElSUV9BU1NQCVBYQV9JUlEoMTUpCS8qIEF1ZGlvIFNTUCBTZXJ2aWNlIFJlcXVlc3QgKFBYQTI1eCkgKi8KKyNkZWZpbmUgSVJRX1VTSU0JUFhBX0lSUSgxNSkgICAgIC8qIFNtYXJ0IENhcmQgaW50ZXJmYWNlIGludGVycnVwdCAoUFhBMjd4KSAqLworI2RlZmluZSBJUlFfTlNTUAlQWEFfSVJRKDE2KQkvKiBOZXR3b3JrIFNTUCBTZXJ2aWNlIFJlcXVlc3QgKFBYQTI1eCkgKi8KKyNkZWZpbmUgSVJRX1NTUDIJUFhBX0lSUSgxNikJLyogU1NQMiBpbnRlcnJ1cHQgKFBYQTI3eCkgKi8KKyNkZWZpbmUJSVJRX0xDRAkJUFhBX0lSUSgxNykJLyogTENEIENvbnRyb2xsZXIgU2VydmljZSBSZXF1ZXN0ICovCisjZGVmaW5lCUlSUV9JMkMJCVBYQV9JUlEoMTgpCS8qIEkyQyBTZXJ2aWNlIFJlcXVlc3QgKi8KKyNkZWZpbmUJSVJRX0lDUAkJUFhBX0lSUSgxOSkJLyogSUNQIFRyYW5zbWl0L1JlY2VpdmUvRXJyb3IgKi8KKyNkZWZpbmUJSVJRX1NUVUFSVAlQWEFfSVJRKDIwKQkvKiBTVFVBUlQgVHJhbnNtaXQvUmVjZWl2ZS9FcnJvciAqLworI2RlZmluZQlJUlFfQlRVQVJUCVBYQV9JUlEoMjEpCS8qIEJUVUFSVCBUcmFuc21pdC9SZWNlaXZlL0Vycm9yICovCisjZGVmaW5lCUlSUV9GRlVBUlQJUFhBX0lSUSgyMikJLyogRkZVQVJUIFRyYW5zbWl0L1JlY2VpdmUvRXJyb3IqLworI2RlZmluZQlJUlFfTU1DCQlQWEFfSVJRKDIzKQkvKiBNTUMgU3RhdHVzL0Vycm9yIERldGVjdGlvbiAqLworI2RlZmluZQlJUlFfU1NQCQlQWEFfSVJRKDI0KQkvKiBTU1AgU2VydmljZSBSZXF1ZXN0ICovCisjZGVmaW5lCUlSUV9ETUEgCVBYQV9JUlEoMjUpCS8qIERNQSBDaGFubmVsIFNlcnZpY2UgUmVxdWVzdCAqLworI2RlZmluZQlJUlFfT1NUMCAJUFhBX0lSUSgyNikJLyogT1MgVGltZXIgbWF0Y2ggMCAqLworI2RlZmluZQlJUlFfT1NUMSAJUFhBX0lSUSgyNykJLyogT1MgVGltZXIgbWF0Y2ggMSAqLworI2RlZmluZQlJUlFfT1NUMiAJUFhBX0lSUSgyOCkJLyogT1MgVGltZXIgbWF0Y2ggMiAqLworI2RlZmluZQlJUlFfT1NUMyAJUFhBX0lSUSgyOSkJLyogT1MgVGltZXIgbWF0Y2ggMyAqLworI2RlZmluZQlJUlFfUlRDMUh6CVBYQV9JUlEoMzApCS8qIFJUQyBIWiBDbG9jayBUaWNrICovCisjZGVmaW5lCUlSUV9SVENBbHJtCVBYQV9JUlEoMzEpCS8qIFJUQyBBbGFybSAqLworCisjaWZkZWYgQ09ORklHX1BYQTI3eAorI2RlZmluZSBJUlFfVFBNCQlQWEFfSVJRKDMyKQkvKiBUUE0gaW50ZXJydXB0ICovCisjZGVmaW5lIElSUV9DQU1FUkEJUFhBX0lSUSgzMykJLyogQ2FtZXJhIEludGVyZmFjZSAqLworCisjZGVmaW5lIFBYQV9JTlRFUk5BTF9JUlFTIDM0CisjZWxzZQorI2RlZmluZSBQWEFfSU5URVJOQUxfSVJRUyAzMgorI2VuZGlmCisKKyNkZWZpbmUgR1BJT18yX3hfVE9fSVJRKHgpCVwKKwkJCVBYQV9JUlEoKHgpIC0gMiArIFBYQV9JTlRFUk5BTF9JUlFTKQorI2RlZmluZSBJUlFfR1BJTyh4KQkoKCh4KSA8IDIpID8gKElSUV9HUElPMCArICh4KSkgOiBHUElPXzJfeF9UT19JUlEoeCkpCisKKyNkZWZpbmUgSVJRX1RPX0dQSU9fMl94KGkpCVwKKwkJCSgoaSkgLSBJUlFfR1BJTygyKSArIDIpCisjZGVmaW5lIElSUV9UT19HUElPKGkpCSgoKGkpIDwgSVJRX0dQSU8oMikpID8gKChpKSAtIElSUV9HUElPMCkgOiBJUlFfVE9fR1BJT18yX3goaSkpCisKKyNpZiBkZWZpbmVkKENPTkZJR19QWEEyNXgpCisjZGVmaW5lIFBYQV9MQVNUX0dQSU8JODAKKyNlbGlmIGRlZmluZWQoQ09ORklHX1BYQTI3eCkKKyNkZWZpbmUgUFhBX0xBU1RfR1BJTwkxMjcKKyNlbmRpZgorCisvKgorICogVGhlIG5leHQgMTYgaW50ZXJydXB0cyBhcmUgZm9yIGJvYXJkIHNwZWNpZmljIHB1cnBvc2VzLiAgU2luY2UKKyAqIHRoZSBrZXJuZWwgY2FuIG9ubHkgcnVuIG9uIG9uZSBtYWNoaW5lIGF0IGEgdGltZSwgd2UgY2FuIHJlLXVzZQorICogdGhlc2UuICBJZiB5b3UgbmVlZCBtb3JlLCBpbmNyZWFzZSBJUlFfQk9BUkRfRU5ELCBidXQga2VlcCBpdAorICogd2l0aGluIHNlbnNpYmxlIGxpbWl0cy4KKyAqLworI2RlZmluZSBJUlFfQk9BUkRfU1RBUlQJCShJUlFfR1BJTyhQWEFfTEFTVF9HUElPKSArIDEpCisjZGVmaW5lIElSUV9CT0FSRF9FTkQJCShJUlFfQk9BUkRfU1RBUlQgKyAxNikKKworI2RlZmluZSBJUlFfU0ExMTExX1NUQVJUCShJUlFfQk9BUkRfRU5EKQorI2RlZmluZSBJUlFfR1BBSU4wCQkoSVJRX0JPQVJEX0VORCArIDApCisjZGVmaW5lIElSUV9HUEFJTjEJCShJUlFfQk9BUkRfRU5EICsgMSkKKyNkZWZpbmUgSVJRX0dQQUlOMgkJKElSUV9CT0FSRF9FTkQgKyAyKQorI2RlZmluZSBJUlFfR1BBSU4zCQkoSVJRX0JPQVJEX0VORCArIDMpCisjZGVmaW5lIElSUV9HUEJJTjAJCShJUlFfQk9BUkRfRU5EICsgNCkKKyNkZWZpbmUgSVJRX0dQQklOMQkJKElSUV9CT0FSRF9FTkQgKyA1KQorI2RlZmluZSBJUlFfR1BCSU4yCQkoSVJRX0JPQVJEX0VORCArIDYpCisjZGVmaW5lIElSUV9HUEJJTjMJCShJUlFfQk9BUkRfRU5EICsgNykKKyNkZWZpbmUgSVJRX0dQQklONAkJKElSUV9CT0FSRF9FTkQgKyA4KQorI2RlZmluZSBJUlFfR1BCSU41CQkoSVJRX0JPQVJEX0VORCArIDkpCisjZGVmaW5lIElSUV9HUENJTjAJCShJUlFfQk9BUkRfRU5EICsgMTApCisjZGVmaW5lIElSUV9HUENJTjEJCShJUlFfQk9BUkRfRU5EICsgMTEpCisjZGVmaW5lIElSUV9HUENJTjIJCShJUlFfQk9BUkRfRU5EICsgMTIpCisjZGVmaW5lIElSUV9HUENJTjMJCShJUlFfQk9BUkRfRU5EICsgMTMpCisjZGVmaW5lIElSUV9HUENJTjQJCShJUlFfQk9BUkRfRU5EICsgMTQpCisjZGVmaW5lIElSUV9HUENJTjUJCShJUlFfQk9BUkRfRU5EICsgMTUpCisjZGVmaW5lIElSUV9HUENJTjYJCShJUlFfQk9BUkRfRU5EICsgMTYpCisjZGVmaW5lIElSUV9HUENJTjcJCShJUlFfQk9BUkRfRU5EICsgMTcpCisjZGVmaW5lIElSUV9NU1RYSU5UCQkoSVJRX0JPQVJEX0VORCArIDE4KQorI2RlZmluZSBJUlFfTVNSWElOVAkJKElSUV9CT0FSRF9FTkQgKyAxOSkKKyNkZWZpbmUgSVJRX01TU1RPUEVSUklOVAkoSVJRX0JPQVJEX0VORCArIDIwKQorI2RlZmluZSBJUlFfVFBUWElOVAkJKElSUV9CT0FSRF9FTkQgKyAyMSkKKyNkZWZpbmUgSVJRX1RQUlhJTlQJCShJUlFfQk9BUkRfRU5EICsgMjIpCisjZGVmaW5lIElSUV9UUFNUT1BFUlJJTlQJKElSUV9CT0FSRF9FTkQgKyAyMykKKyNkZWZpbmUgU1NQWE1USU5UCQkoSVJRX0JPQVJEX0VORCArIDI0KQorI2RlZmluZSBTU1BSQ1ZJTlQJCShJUlFfQk9BUkRfRU5EICsgMjUpCisjZGVmaW5lIFNTUFJPUgkJCShJUlFfQk9BUkRfRU5EICsgMjYpCisjZGVmaW5lIEFVRFhNVERNQURPTkVBCQkoSVJRX0JPQVJEX0VORCArIDMyKQorI2RlZmluZSBBVURSQ1ZETUFET05FQQkJKElSUV9CT0FSRF9FTkQgKyAzMykKKyNkZWZpbmUgQVVEWE1URE1BRE9ORUIJCShJUlFfQk9BUkRfRU5EICsgMzQpCisjZGVmaW5lIEFVRFJDVkRNQURPTkVCCQkoSVJRX0JPQVJEX0VORCArIDM1KQorI2RlZmluZSBBVURURlNSCQkJKElSUV9CT0FSRF9FTkQgKyAzNikKKyNkZWZpbmUgQVVEUkZTUgkJCShJUlFfQk9BUkRfRU5EICsgMzcpCisjZGVmaW5lIEFVRFRVUgkJCShJUlFfQk9BUkRfRU5EICsgMzgpCisjZGVmaW5lIEFVRFJPUgkJCShJUlFfQk9BUkRfRU5EICsgMzkpCisjZGVmaW5lIEFVRERUUwkJCShJUlFfQk9BUkRfRU5EICsgNDApCisjZGVmaW5lIEFVRFJERAkJCShJUlFfQk9BUkRfRU5EICsgNDEpCisjZGVmaW5lIEFVRFNUTwkJCShJUlFfQk9BUkRfRU5EICsgNDIpCisjZGVmaW5lIElSUV9VU0JQV1IJCShJUlFfQk9BUkRfRU5EICsgNDMpCisjZGVmaW5lIElSUV9IQ0lNCQkoSVJRX0JPQVJEX0VORCArIDQ0KQorI2RlZmluZSBJUlFfSENJQlVGRkFDQwkJKElSUV9CT0FSRF9FTkQgKyA0NSkKKyNkZWZpbmUgSVJRX0hDSVJNVFdLUAkJKElSUV9CT0FSRF9FTkQgKyA0NikKKyNkZWZpbmUgSVJRX05IQ0lNRkNJUgkJKElSUV9CT0FSRF9FTkQgKyA0NykKKyNkZWZpbmUgSVJRX1VTQl9QT1JUX1JFU1VNRQkoSVJRX0JPQVJEX0VORCArIDQ4KQorI2RlZmluZSBJUlFfUzBfUkVBRFlfTklOVAkoSVJRX0JPQVJEX0VORCArIDQ5KQorI2RlZmluZSBJUlFfUzFfUkVBRFlfTklOVAkoSVJRX0JPQVJEX0VORCArIDUwKQorI2RlZmluZSBJUlFfUzBfQ0RfVkFMSUQJCShJUlFfQk9BUkRfRU5EICsgNTEpCisjZGVmaW5lIElSUV9TMV9DRF9WQUxJRAkJKElSUV9CT0FSRF9FTkQgKyA1MikKKyNkZWZpbmUgSVJRX1MwX0JWRDFfU1RTQ0hHCShJUlFfQk9BUkRfRU5EICsgNTMpCisjZGVmaW5lIElSUV9TMV9CVkQxX1NUU0NIRwkoSVJRX0JPQVJEX0VORCArIDU0KQorCisjZGVmaW5lIElSUV9MT0NPTU9fU1RBUlQJKElSUV9CT0FSRF9FTkQpCisjZGVmaW5lIElSUV9MT0NPTU9fS0VZCQkoSVJRX0JPQVJEX0VORCArIDApCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzAJKElSUV9CT0FSRF9FTkQgKyAxKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xCShJUlFfQk9BUkRfRU5EICsgMikKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMgkoSVJRX0JPQVJEX0VORCArIDMpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzMJKElSUV9CT0FSRF9FTkQgKyA0KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU80CShJUlFfQk9BUkRfRU5EICsgNSkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPNQkoSVJRX0JPQVJEX0VORCArIDYpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzYJKElSUV9CT0FSRF9FTkQgKyA3KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU83CShJUlFfQk9BUkRfRU5EICsgOCkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPOAkoSVJRX0JPQVJEX0VORCArIDkpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzkJKElSUV9CT0FSRF9FTkQgKyAxMCkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTAJKElSUV9CT0FSRF9FTkQgKyAxMSkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTEJKElSUV9CT0FSRF9FTkQgKyAxMikKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTIJKElSUV9CT0FSRF9FTkQgKyAxMykKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTMJKElSUV9CT0FSRF9FTkQgKyAxNCkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTQJKElSUV9CT0FSRF9FTkQgKyAxNSkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMTUJKElSUV9CT0FSRF9FTkQgKyAxNikKKyNkZWZpbmUgSVJRX0xPQ09NT19MVAkJKElSUV9CT0FSRF9FTkQgKyAxNykKKyNkZWZpbmUgSVJRX0xPQ09NT19TUElfUkZSCShJUlFfQk9BUkRfRU5EICsgMTgpCisjZGVmaW5lIElSUV9MT0NPTU9fU1BJX1JGVwkoSVJRX0JPQVJEX0VORCArIDE5KQorI2RlZmluZSBJUlFfTE9DT01PX1NQSV9PVlJOCShJUlFfQk9BUkRfRU5EICsgMjApCisjZGVmaW5lIElSUV9MT0NPTU9fU1BJX1RFTkQJKElSUV9CT0FSRF9FTkQgKyAyMSkKKworLyoKKyAqIEZpZ3VyZSBvdXQgdGhlIE1BWCBJUlEgbnVtYmVyLgorICoKKyAqIElmIHdlIGhhdmUgYW4gU0ExMTExLCB0aGUgbWF4IElSUSBpcyBTMV9CVkQxX1NUU0NIRysxLgorICogSWYgd2UgaGF2ZSBhbiBMb0NvTW8sIHRoZSBtYXggSVJRIGlzIElSUV9MT0NPTU9fU1BJX1RFTkQrMQorICogT3RoZXJ3aXNlLCB3ZSBoYXZlIHRoZSBzdGFuZGFyZCBJUlFzIG9ubHkuCisgKi8KKyNpZmRlZiBDT05GSUdfU0ExMTExCisjZGVmaW5lIE5SX0lSUVMJCQkoSVJRX1MxX0JWRDFfU1RTQ0hHICsgMSkKKyNlbGlmIGRlZmluZWQoQ09ORklHX1NIQVJQX0xPQ09NTykKKyNkZWZpbmUgTlJfSVJRUwkJCShJUlFfTE9DT01PX1NQSV9URU5EICsgMSkKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfTFVCQk9DSykgfHwgXAorICAgICAgZGVmaW5lZChDT05GSUdfTUFDSF9NQUlOU1RPTkUpCisjZGVmaW5lIE5SX0lSUVMJCQkoSVJRX0JPQVJEX0VORCkKKyNlbHNlCisjZGVmaW5lIE5SX0lSUVMJCQkoSVJRX0JPQVJEX1NUQVJUKQorI2VuZGlmCisKKy8qCisgKiBCb2FyZCBzcGVjaWZpYyBJUlFzLiAgRGVmaW5lIHRoZW0gaGVyZS4KKyAqIERvIG5vdCBzdXJyb3VuZCB0aGVtIHdpdGggaWZkZWZzLgorICovCisjZGVmaW5lIExVQkJPQ0tfSVJRKHgpCQkoSVJRX0JPQVJEX1NUQVJUICsgKHgpKQorI2RlZmluZSBMVUJCT0NLX1NEX0lSUQkJTFVCQk9DS19JUlEoMCkKKyNkZWZpbmUgTFVCQk9DS19TQTExMTFfSVJRCUxVQkJPQ0tfSVJRKDEpCisjZGVmaW5lIExVQkJPQ0tfVVNCX0lSUQkJTFVCQk9DS19JUlEoMikgIC8qIHVzYiBjb25uZWN0ICovCisjZGVmaW5lIExVQkJPQ0tfRVRIX0lSUQkJTFVCQk9DS19JUlEoMykKKyNkZWZpbmUgTFVCQk9DS19VQ0IxNDAwX0lSUQlMVUJCT0NLX0lSUSg0KQorI2RlZmluZSBMVUJCT0NLX0JCX0lSUQkJTFVCQk9DS19JUlEoNSkKKyNkZWZpbmUgTFVCQk9DS19VU0JfRElTQ19JUlEJTFVCQk9DS19JUlEoNikgIC8qIHVzYiBkaXNjb25uZWN0ICovCisjZGVmaW5lIExVQkJPQ0tfTEFTVF9JUlEJTFVCQk9DS19JUlEoNikKKworI2RlZmluZSBNQUlOU1RPTkVfSVJRKHgpCShJUlFfQk9BUkRfU1RBUlQgKyAoeCkpCisjZGVmaW5lIE1BSU5TVE9ORV9NTUNfSVJRCU1BSU5TVE9ORV9JUlEoMCkKKyNkZWZpbmUgTUFJTlNUT05FX1VTSU1fSVJRCU1BSU5TVE9ORV9JUlEoMSkKKyNkZWZpbmUgTUFJTlNUT05FX1VTQkNfSVJRCU1BSU5TVE9ORV9JUlEoMikKKyNkZWZpbmUgTUFJTlNUT05FX0VUSEVSTkVUX0lSUQlNQUlOU1RPTkVfSVJRKDMpCisjZGVmaW5lIE1BSU5TVE9ORV9BQzk3X0lSUQlNQUlOU1RPTkVfSVJRKDQpCisjZGVmaW5lIE1BSU5TVE9ORV9QRU5fSVJRCU1BSU5TVE9ORV9JUlEoNSkKKyNkZWZpbmUgTUFJTlNUT05FX01TSU5TX0lSUQlNQUlOU1RPTkVfSVJRKDYpCisjZGVmaW5lIE1BSU5TVE9ORV9FWEJSRF9JUlEJTUFJTlNUT05FX0lSUSg3KQorI2RlZmluZSBNQUlOU1RPTkVfUzBfQ0RfSVJRCU1BSU5TVE9ORV9JUlEoOSkKKyNkZWZpbmUgTUFJTlNUT05FX1MwX1NUU0NIR19JUlEJTUFJTlNUT05FX0lSUSgxMCkKKyNkZWZpbmUgTUFJTlNUT05FX1MwX0lSUQlNQUlOU1RPTkVfSVJRKDExKQorI2RlZmluZSBNQUlOU1RPTkVfUzFfQ0RfSVJRCU1BSU5TVE9ORV9JUlEoMTMpCisjZGVmaW5lIE1BSU5TVE9ORV9TMV9TVFNDSEdfSVJRCU1BSU5TVE9ORV9JUlEoMTQpCisjZGVmaW5lIE1BSU5TVE9ORV9TMV9JUlEJTUFJTlNUT05FX0lSUSgxNSkKKworLyogTG9Db01vIEludGVycnVwdHMgKENPTkZJR19TSEFSUF9MT0NPTU8pICovCisjZGVmaW5lIElSUV9MT0NPTU9fS0VZX0JBU0UJKElSUV9CT0FSRF9TVEFSVCArIDApCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJT19CQVNFCShJUlFfQk9BUkRfU1RBUlQgKyAxKQorI2RlZmluZSBJUlFfTE9DT01PX0xUX0JBU0UJKElSUV9CT0FSRF9TVEFSVCArIDIpCisjZGVmaW5lIElSUV9MT0NPTU9fU1BJX0JBU0UJKElSUV9CT0FSRF9TVEFSVCArIDMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvbHViYm9jay5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2x1YmJvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWVlNzM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2x1YmJvY2suaApAQCAtMCwwICsxLDQwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9sdWJib2NrLmgKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAgQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNkZWZpbmUgTFVCQk9DS19FVEhfUEhZUwlQWEFfQ1MzX1BIWVMKKworI2RlZmluZSBMVUJCT0NLX0ZQR0FfUEhZUwlQWEFfQ1MyX1BIWVMKKyNkZWZpbmUgTFVCQk9DS19GUEdBX1ZJUlQJKDB4ZjAwMDAwMDApCisjZGVmaW5lIExVQl9QMlYoeCkJCSgoeCkgLSBMVUJCT0NLX0ZQR0FfUEhZUyArIExVQkJPQ0tfRlBHQV9WSVJUKQorI2RlZmluZSBMVUJfVjJQKHgpCQkoKHgpIC0gTFVCQk9DS19GUEdBX1ZJUlQgKyBMVUJCT0NLX0ZQR0FfUEhZUykKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyMgIGRlZmluZSBfX0xVQl9SRUcoeCkJCSgqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopTFVCX1AyVih4KSkpCisjZWxzZQorIyAgZGVmaW5lIF9fTFVCX1JFRyh4KQkJTFVCX1AyVih4KQorI2VuZGlmCisKKy8qIEZQR0EgcmVnaXN0ZXIgdmlydHVhbCBhZGRyZXNzZXMgKi8KKyNkZWZpbmUgTFVCX1dIT0FNSQkJX19MVUJfUkVHKExVQkJPQ0tfRlBHQV9QSFlTICsgMHgwMDApCisjZGVmaW5lIExVQl9IRVhMRUQJCV9fTFVCX1JFRyhMVUJCT0NLX0ZQR0FfUEhZUyArIDB4MDEwKQorI2RlZmluZSBMVUJfRElTQ19CTE5LX0xFRAlfX0xVQl9SRUcoTFVCQk9DS19GUEdBX1BIWVMgKyAweDA0MCkKKyNkZWZpbmUgTFVCX0NPTkZfU1dJVENIRVMJX19MVUJfUkVHKExVQkJPQ0tfRlBHQV9QSFlTICsgMHgwNTApCisjZGVmaW5lIExVQl9VU0VSX1NXSVRDSEVTCV9fTFVCX1JFRyhMVUJCT0NLX0ZQR0FfUEhZUyArIDB4MDYwKQorI2RlZmluZSBMVUJfTUlTQ19XUgkJX19MVUJfUkVHKExVQkJPQ0tfRlBHQV9QSFlTICsgMHgwODApCisjZGVmaW5lIExVQl9NSVNDX1JECQlfX0xVQl9SRUcoTFVCQk9DS19GUEdBX1BIWVMgKyAweDA5MCkKKyNkZWZpbmUgTFVCX0lSUV9NQVNLX0VOCQlfX0xVQl9SRUcoTFVCQk9DS19GUEdBX1BIWVMgKyAweDBjMCkKKyNkZWZpbmUgTFVCX0lSUV9TRVRfQ0xSCQlfX0xVQl9SRUcoTFVCQk9DS19GUEdBX1BIWVMgKyAweDBkMCkKKyNkZWZpbmUgTFVCX0dQCQkJX19MVUJfUkVHKExVQkJPQ0tfRlBHQV9QSFlTICsgMHgxMDApCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBsdWJib2NrX3NldF9taXNjX3dyKHVuc2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBpbnQgc2V0KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL21haW5zdG9uZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL21haW5zdG9uZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Yzg2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvbWFpbnN0b25lLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL21haW5zdG9uZS5oCisgKgorICogIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogIENyZWF0ZWQ6CU5vdiAxNCwgMjAwMgorICogIENvcHlyaWdodDoJTW9udGFWaXN0YSBTb2Z0d2FyZSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIEFTTV9BUkNIX01BSU5TVE9ORV9ICisjZGVmaW5lIEFTTV9BUkNIX01BSU5TVE9ORV9ICisKKyNkZWZpbmUgTVNUX0VUSF9QSFlTCQlQWEFfQ1M0X1BIWVMKKworI2RlZmluZSBNU1RfRlBHQV9QSFlTCQlQWEFfQ1MyX1BIWVMKKyNkZWZpbmUgTVNUX0ZQR0FfVklSVAkJKDB4ZjAwMDAwMDApCisjZGVmaW5lIE1TVF9QMlYoeCkJCSgoeCkgLSBNU1RfRlBHQV9QSFlTICsgTVNUX0ZQR0FfVklSVCkKKyNkZWZpbmUgTVNUX1YyUCh4KQkJKCh4KSAtIE1TVF9GUEdBX1ZJUlQgKyBNU1RfRlBHQV9QSFlTKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworIyBkZWZpbmUgX19NU1RfUkVHKHgpCQkoKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKU1TVF9QMlYoeCkpKQorI2Vsc2UKKyMgZGVmaW5lIF9fTVNUX1JFRyh4KQkJTVNUX1AyVih4KQorI2VuZGlmCisKKy8qIGJvYXJkIGxldmVsIHJlZ2lzdGVycyBpbiB0aGUgRlBHQSAqLworCisjZGVmaW5lIE1TVF9MRUREQVQxCQlfX01TVF9SRUcoMHgwODAwMDAxMCkKKyNkZWZpbmUgTVNUX0xFRERBVDIJCV9fTVNUX1JFRygweDA4MDAwMDE0KQorI2RlZmluZSBNU1RfTEVEQ1RSTAkJX19NU1RfUkVHKDB4MDgwMDAwNDApCisjZGVmaW5lIE1TVF9HUFNXUgkJX19NU1RfUkVHKDB4MDgwMDAwNjApCisjZGVmaW5lIE1TVF9NU0NXUjEJCV9fTVNUX1JFRygweDA4MDAwMDgwKQorI2RlZmluZSBNU1RfTVNDV1IyCQlfX01TVF9SRUcoMHgwODAwMDA4NCkKKyNkZWZpbmUgTVNUX01TQ1dSMwkJX19NU1RfUkVHKDB4MDgwMDAwODgpCisjZGVmaW5lIE1TVF9NU0NSRAkJX19NU1RfUkVHKDB4MDgwMDAwOTApCisjZGVmaW5lIE1TVF9JTlRNU0tFTkEJCV9fTVNUX1JFRygweDA4MDAwMGMwKQorI2RlZmluZSBNU1RfSU5UU0VUQ0xSCQlfX01TVF9SRUcoMHgwODAwMDBkMCkKKyNkZWZpbmUgTVNUX1BDTUNJQTAJCV9fTVNUX1JFRygweDA4MDAwMGUwKQorI2RlZmluZSBNU1RfUENNQ0lBMQkJX19NU1RfUkVHKDB4MDgwMDAwZTQpCisKKyNkZWZpbmUgTVNUX01TQ1dSMV9DQU1FUkFfT04JKDEgPDwgMTUpICAvKiBDYW1lcmEgaW50ZXJmYWNlIHBvd2VyIGNvbnRyb2wgKi8KKyNkZWZpbmUgTVNUX01TQ1dSMV9DQU1FUkFfU0VMCSgxIDw8IDE0KSAgLyogQ2FtZXJhIGludGVyZmFjZSBtdXggY29udHJvbCAqLworI2RlZmluZSBNU1RfTVNDV1IxX0xDRF9DVEwJKDEgPDwgMTMpICAvKiBHZW5lcmFsLXB1cnBvc2UgTENEIGNvbnRyb2wgKi8KKyNkZWZpbmUgTVNUX01TQ1dSMV9NU19PTgkoMSA8PCAxMikgIC8qIE1lbW9yeSBTdGljayBwb3dlciBjb250cm9sICovCisjZGVmaW5lIE1TVF9NU0NXUjFfTU1DX09OCSgxIDw8IDExKSAgLyogTXVsdGlNZWRpYUNhcmQqIHBvd2VyIGNvbnRyb2wgKi8KKyNkZWZpbmUgTVNUX01TQ1dSMV9NU19TRUwJKDEgPDwgMTApICAvKiBTRC9NUyBtdWx0aXBsZXhlciBjb250cm9sICovCisjZGVmaW5lIE1TVF9NU0NXUjFfQkJfU0VMCSgxIDw8IDkpICAgLyogUENNQ0lBL0Jhc2ViYW5kIG11bHRpcGxleGVyICovCisjZGVmaW5lIE1TVF9NU0NXUjFfQlRfT04JKDEgPDwgOCkgICAvKiBCbHVldG9vdGggVUFSVCB0cmFuc2NlaXZlciAqLworI2RlZmluZSBNU1RfTVNDV1IxX0JURFRSCSgxIDw8IDcpICAgLyogQmx1ZXRvb3RoIFVBUlQgRFRSICovCisKKyNkZWZpbmUgTVNUX01TQ1dSMV9JUkRBX01BU0sJKDMgPDwgNSkgICAvKiBJckRBIHRyYW5zY2VpdmVyIG1vZGUgKi8KKyNkZWZpbmUgTVNUX01TQ1dSMV9JUkRBX0ZVTEwJKDAgPDwgNSkgICAvKiBmdWxsIGRpc3RhbmNlIHBvd2VyICovCisjZGVmaW5lIE1TVF9NU0NXUjFfSVJEQV9PRkYJKDEgPDwgNSkgICAvKiBzaHV0ZG93biAqLworI2RlZmluZSBNU1RfTVNDV1IxX0lSREFfTUVECSgyIDw8IDUpICAgLyogMi8zIGRpc3RhbmNlIHBvd2VyICovCisjZGVmaW5lIE1TVF9NU0NXUjFfSVJEQV9MT1cJKDMgPDwgNSkgICAvKiAxLzMgZGlzdGFuY2UgcG93ZXIgKi8KKworI2RlZmluZSBNU1RfTVNDV1IxX0lSREFfRklSCSgxIDw8IDQpICAgLyogSXJEQSB0cmFuc2NlaXZlciBTSVIvRklSICovCisjZGVmaW5lIE1TVF9NU0NXUjFfR1JFRU5MRUQJKDEgPDwgMykgICAvKiBMRUQgRDEgY29udHJvbCAqLworI2RlZmluZSBNU1RfTVNDV1IxX1BEQ19DVEwJKDEgPDwgMikgICAvKiByZXNlcnZlZCAqLworI2RlZmluZSBNU1RfTVNDV1IxX01UUl9PTgkoMSA8PCAxKSAgIC8qIFNpbGVudCBhbGVydCBtb3RvciAqLworI2RlZmluZSBNU1RfTVNDV1IxX1NZU1JFU0VUCSgxIDw8IDApICAgLyogU3lzdGVtIHJlc2V0ICovCisKKyNkZWZpbmUgTVNUX01TQ1dSMl9VU0JfT1RHX1JTVAkoMSA8PCA2KSAgIC8qIFVTQiBPbiBUaGUgR28gcmVzZXQgKi8KKyNkZWZpbmUgTVNUX01TQ1dSMl9VU0JfT1RHX1NFTAkoMSA8PCA1KSAgIC8qIFVTQiBPbiBUaGUgR28gY29udHJvbCAqLworI2RlZmluZSBNU1RfTVNDV1IyX25VU0JDX1NDCSgxIDw8IDQpICAgLyogVVNCIGNsaWVudCBzb2Z0IGNvbm5lY3QgY29udHJvbCAqLworI2RlZmluZSBNU1RfTVNDV1IyX0kyU19TUEtST0ZGCSgxIDw8IDMpICAgLyogSTJTIENPREVDIGFtcGxpZmllciBjb250cm9sICovCisjZGVmaW5lIE1TVF9NU0NXUjJfQUM5N19TUEtST0ZGCSgxIDw8IDIpICAgLyogQUM5NyBDT0RFQyBhbXBsaWZpZXIgY29udHJvbCAqLworI2RlZmluZSBNU1RfTVNDV1IyX1JBRElPX1BXUgkoMSA8PCAxKSAgIC8qIFJhZGlvIG1vZHVsZSBwb3dlciBjb250cm9sICovCisjZGVmaW5lIE1TVF9NU0NXUjJfUkFESU9fV0FLRQkoMSA8PCAwKSAgIC8qIFJhZGlvIG1vZHVsZSB3YWtlLXVwIHNpZ25hbCAqLworCisjZGVmaW5lIE1TVF9NU0NXUjNfR1BJT19SRVNFVF9FTgkoMSA8PCAyKSAvKiBFbmFibGUgR1BJTyBSZXNldCAqLworI2RlZmluZSBNU1RfTVNDV1IzX0dQSU9fUkVTRVQJCSgxIDw8IDEpIC8qIEluaXRpYXRlIGEgR1BJTyBSZXNldCAqLworI2RlZmluZSBNU1RfTVNDV1IzX0NPTU1TX1NXX1JFU0VUCSgxIDw8IDApIC8qIENvbW11bmljYXRpb25zIFByb2Nlc3NvciBSZXNldCBDb250cm9sICovCisKKyNkZWZpbmUgTVNUX01TQ1JEX25QRU5JUlEJKDEgPDwgOSkgICAvKiBBREk3ODczKiBuUEVOSVJRIHNpZ25hbCAqLworI2RlZmluZSBNU1RfTVNDUkRfbk1FTVNUS19DRAkoMSA8PCA4KSAgIC8qIE1lbW9yeSBTdGljayBkZXRlY3Rpb24gc2lnbmFsICovCisjZGVmaW5lIE1TVF9NU0NSRF9uTU1DX0NECSgxIDw8IDcpICAgLyogU0QvTU1DIGNhcmQgZGV0ZWN0aW9uIHNpZ25hbCAqLworI2RlZmluZSBNU1RfTVNDUkRfblVTSU1fQ0QJKDEgPDwgNikgICAvKiBVU0lNIGNhcmQgZGV0ZWN0aW9uIHNpZ25hbCAqLworI2RlZmluZSBNU1RfTVNDUkRfVVNCX0NCTAkoMSA8PCA1KSAgIC8qIFVTQiBjbGllbnQgY2FibGUgc3RhdHVzICovCisjZGVmaW5lIE1TVF9NU0NSRF9UU19CVVNZCSgxIDw8IDQpICAgLyogQURJNzg3MyBidXN5ICovCisjZGVmaW5lIE1TVF9NU0NSRF9CVERTUgkJKDEgPDwgMykgICAvKiBCbHVldG9vdGggVUFSVCBEU1IgKi8KKyNkZWZpbmUgTVNUX01TQ1JEX0JUUkkJCSgxIDw8IDIpICAgLyogQmx1ZXRvb3RoIFVBUlQgUmluZyBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgTVNUX01TQ1JEX0JURENECQkoMSA8PCAxKSAgIC8qIEJsdWV0b290aCBVQVJUIERDRCAqLworI2RlZmluZSBNU1RfTVNDUkRfbk1NQ19XUAkoMSA8PCAwKSAgIC8qIFNEL01NQyB3cml0ZS1wcm90ZWN0IHN0YXR1cyAqLworCisjZGVmaW5lIE1TVF9JTlRfUzFfSVJRCQkoMSA8PCAxNSkgIC8qIFBDTUNJQSBzb2NrZXQgMSBJUlEgKi8KKyNkZWZpbmUgTVNUX0lOVF9TMV9TVFNDSEcJKDEgPDwgMTQpICAvKiBQQ01DSUEgc29ja2V0IDEgc3RhdHVzIGNoYW5nZWQgKi8KKyNkZWZpbmUgTVNUX0lOVF9TMV9DRAkJKDEgPDwgMTMpICAvKiBQQ01DSUEgc29ja2V0IDEgY2FyZCBkZXRlY3Rpb24gKi8KKyNkZWZpbmUgTVNUX0lOVF9TMF9JUlEJCSgxIDw8IDExKSAgLyogUENNQ0lBIHNvY2tldCAwIElSUSAqLworI2RlZmluZSBNU1RfSU5UX1MwX1NUU0NIRwkoMSA8PCAxMCkgIC8qIFBDTUNJQSBzb2NrZXQgMCBzdGF0dXMgY2hhbmdlZCAqLworI2RlZmluZSBNU1RfSU5UX1MwX0NECQkoMSA8PCA5KSAgIC8qIFBDTUNJQSBzb2NrZXQgMCBjYXJkIGRldGVjdGlvbiAqLworI2RlZmluZSBNU1RfSU5UX25FWEJSRF9JTlQJKDEgPDwgNykgICAvKiBFeHBhbnNpb24gYm9hcmQgSVJRICovCisjZGVmaW5lIE1TVF9JTlRfTVNJTlMJCSgxIDw8IDYpICAgLyogTWVtb3J5IFN0aWNrKiBkZXRlY3Rpb24gKi8KKyNkZWZpbmUgTVNUX0lOVF9QRU5JUlEJCSgxIDw8IDUpICAgLyogQURJNzg3MyogdG91Y2gtc2NyZWVuIElSUSAqLworI2RlZmluZSBNU1RfSU5UX0FDOTcJCSgxIDw8IDQpICAgLyogQUMnOTcgQ09ERUMgSVJRICovCisjZGVmaW5lIE1TVF9JTlRfRVRIRVJORVQJKDEgPDwgMykgICAvKiBFdGhlcm5ldCBjb250cm9sbGVyIElSUSAqLworI2RlZmluZSBNU1RfSU5UX1VTQkMJCSgxIDw8IDIpICAgLyogVVNCIGNsaWVudCBjYWJsZSBkZXRlY3Rpb24gSVJRICovCisjZGVmaW5lIE1TVF9JTlRfVVNJTQkJKDEgPDwgMSkgICAvKiBVU0lNIGNhcmQgZGV0ZWN0aW9uIElSUSAqLworI2RlZmluZSBNU1RfSU5UX01NQwkJKDEgPDwgMCkgICAvKiBNTUMvU0QgY2FyZCBkZXRlY3Rpb24gSVJRICovCisKKyNkZWZpbmUgTVNUX1BDTUNJQV9uSVJRCQkoMSA8PCAxMCkgIC8qIElSUSAvIHJlYWR5IHNpZ25hbCAqLworI2RlZmluZSBNU1RfUENNQ0lBX25TUEtSX0JWRDIJKDEgPDwgOSkgICAvKiBWREQgc2Vuc2UgLyBkaWdpdGFsIHNwZWFrZXIgKi8KKyNkZWZpbmUgTVNUX1BDTUNJQV9uU1RTQ0hHX0JWRDEJKDEgPDwgOCkgICAvKiBWREQgc2Vuc2UgLyBjYXJkIHN0YXR1cyBjaGFuZ2VkICovCisjZGVmaW5lIE1TVF9QQ01DSUFfblZTMgkJKDEgPDwgNykgICAvKiBWU1Mgdm9sdGFnZSBzZW5zZSAqLworI2RlZmluZSBNU1RfUENNQ0lBX25WUzEJCSgxIDw8IDYpICAgLyogVlNTIHZvbHRhZ2Ugc2Vuc2UgKi8KKyNkZWZpbmUgTVNUX1BDTUNJQV9uQ0QJCSgxIDw8IDUpICAgLyogQ2FyZCBkZXRlY3Rpb24gc2lnbmFsICovCisjZGVmaW5lIE1TVF9QQ01DSUFfUkVTRVQJKDEgPDwgNCkgICAvKiBDYXJkIHJlc2V0IHNpZ25hbCAqLworI2RlZmluZSBNU1RfUENNQ0lBX1BXUl9NQVNLCSgweDAwMGYpICAgLyogTUFYMTYwMiBwb3dlci1zdXBwbHkgY29udHJvbHMgKi8KKworI2RlZmluZSBNU1RfUENNQ0lBX1BXUl9WUFBfMCAgICAweDAJICAgLyogdm9sdGFnZSBWUFAgPSAwViAqLworI2RlZmluZSBNU1RfUENNQ0lBX1BXUl9WUFBfMTIwICAweDIgCSAgIC8qIHZvbHRhZ2UgVlBQID0gMTJWKi8KKyNkZWZpbmUgTVNUX1BDTUNJQV9QV1JfVlBQX1ZDQyAgMHgxCSAgIC8qIHZvbHRhZ2UgVlBQID0gVkNDICovCisjZGVmaW5lIE1TVF9QQ01DSUFfUFdSX1ZDQ18wICAgIDB4MAkgICAvKiB2b2x0YWdlIFZDQyA9IDBWICovCisjZGVmaW5lIE1TVF9QQ01DSUFfUFdSX1ZDQ18zMyAgIDB4OAkgICAvKiB2b2x0YWdlIFZDQyA9IDMuM1YgKi8KKyNkZWZpbmUgTVNUX1BDTUNJQV9QV1JfVkNDXzUwICAgMHg0CSAgIC8qIHZvbHRhZ2UgVkNDID0gNS4wViAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTdhODBiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL21lbW9yeS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL21lbW9yeS5oCisgKgorICogQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiBDb3B5cmlnaHQ6CShDKSAyMDAxIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworLyoKKyAqIFBoeXNpY2FsIERSQU0gb2Zmc2V0LgorICovCisjZGVmaW5lIFBIWVNfT0ZGU0VUCSgweGEwMDAwMDAwVUwpCisKKy8qCisgKiBWaXJ0dWFsIHZpZXcgPC0+IERNQSB2aWV3IG1lbW9yeSBhZGRyZXNzIHRyYW5zbGF0aW9ucworICogdmlydF90b19idXM6IFVzZWQgdG8gdHJhbnNsYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdG8gYW4KKyAqCQlhZGRyZXNzIHN1aXRhYmxlIHRvIGJlIHBhc3NlZCB0byBzZXRfZG1hX2FkZHIKKyAqIGJ1c190b192aXJ0OiBVc2VkIHRvIGNvbnZlcnQgYW4gYWRkcmVzcyBmb3IgRE1BIG9wZXJhdGlvbnMKKyAqCQl0byBhbiBhZGRyZXNzIHRoYXQgdGhlIGtlcm5lbCBjYW4gdXNlLgorICovCisjZGVmaW5lIF9fdmlydF90b19idXMoeCkJIF9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJIF9fcGh5c190b192aXJ0KHgpCisKKyNpZmRlZiBDT05GSUdfRElTQ09OVElHTUVNCisvKgorICogVGhlIG5vZGVzIGFyZSBtYXRjaGVkIHdpdGggdGhlIHBoeXNpY2FsIFNEUkFNIGJhbmtzIGFzIGZvbGxvd3M6CisgKgorICogCW5vZGUgMDogIDB4YTAwMDAwMDAtMHhhM2ZmZmZmZgktLT4gIDB4YzAwMDAwMDAtMHhjM2ZmZmZmZgorICogCW5vZGUgMTogIDB4YTQwMDAwMDAtMHhhN2ZmZmZmZgktLT4gIDB4YzQwMDAwMDAtMHhjN2ZmZmZmZgorICogCW5vZGUgMjogIDB4YTgwMDAwMDAtMHhhYmZmZmZmZgktLT4gIDB4YzgwMDAwMDAtMHhjYmZmZmZmZgorICogCW5vZGUgMzogIDB4YWMwMDAwMDAtMHhhZmZmZmZmZgktLT4gIDB4Y2MwMDAwMDAtMHhjZmZmZmZmZgorICovCisKKy8qCisgKiBHaXZlbiBhIGtlcm5lbCBhZGRyZXNzLCBmaW5kIHRoZSBob21lIG5vZGUgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5LgorICovCisjZGVmaW5lIEtWQUREUl9UT19OSUQoYWRkcikgKCgodW5zaWduZWQgbG9uZykoYWRkcikgLSBQQUdFX09GRlNFVCkgPj4gMjYpCisKKy8qCisgKiBHaXZlbiBhIHBhZ2UgZnJhbWUgbnVtYmVyLCBjb252ZXJ0IGl0IHRvIGEgbm9kZSBpZC4KKyAqLworI2RlZmluZSBQRk5fVE9fTklEKHBmbikJCSgoKHBmbikgLSBQSFlTX1BGTl9PRkZTRVQpID4+ICgyNiAtIFBBR0VfU0hJRlQpKQorCisvKgorICogR2l2ZW4gYSBrYWRkciwgQUREUl9UT19NQVBCQVNFIGZpbmRzIHRoZSBvd25pbmcgbm9kZSBvZiB0aGUgbWVtb3J5CisgKiBhbmQgcmV0dXJucyB0aGUgbWVtX21hcCBvZiB0aGF0IG5vZGUuCisgKi8KKyNkZWZpbmUgQUREUl9UT19NQVBCQVNFKGthZGRyKQlOT0RFX01FTV9NQVAoS1ZBRERSX1RPX05JRChrYWRkcikpCisKKy8qCisgKiBHaXZlbiBhIHBhZ2UgZnJhbWUgbnVtYmVyLCBmaW5kIHRoZSBvd25pbmcgbm9kZSBvZiB0aGUgbWVtb3J5CisgKiBhbmQgcmV0dXJucyB0aGUgbWVtX21hcCBvZiB0aGF0IG5vZGUuCisgKi8KKyNkZWZpbmUgUEZOX1RPX01BUEJBU0UocGZuKQlOT0RFX01FTV9NQVAoUEZOX1RPX05JRChwZm4pKQorCisvKgorICogR2l2ZW4gYSBrYWRkciwgTE9DQUxfTUVNX01BUCBmaW5kcyB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybnMgdGhlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIHBhZ2UgaW4gdGhlCisgKiBub2RlJ3MgbWVtX21hcC4KKyAqLworI2RlZmluZSBMT0NBTF9NQVBfTlIoYWRkcikgXAorCSgoKHVuc2lnbmVkIGxvbmcpKGFkZHIpICYgMHgwM2ZmZmZmZikgPj4gUEFHRV9TSElGVCkKKworI2Vsc2UKKworI2RlZmluZSBQRk5fVE9fTklEKGFkZHIpCSgwKQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvbW1jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvbW1jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ5MmVhNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9tbWMuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIEFTTUFSTV9BUkNIX01NQ19ICisjZGVmaW5lIEFTTUFSTV9BUkNIX01NQ19ICisKKyNpbmNsdWRlIDxsaW51eC9tbWMvcHJvdG9jb2wuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKworc3RydWN0IGRldmljZTsKK3N0cnVjdCBtbWNfaG9zdDsKKworc3RydWN0IHB4YW1jaV9wbGF0Zm9ybV9kYXRhIHsKKwl1bnNpZ25lZCBpbnQgb2NyX21hc2s7CQkJLyogYXZhaWxhYmxlIHZvbHRhZ2VzICovCisJaW50ICgqaW5pdCkoc3RydWN0IGRldmljZSAqLCBpcnFyZXR1cm5fdCAoKikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLCB2b2lkICopOworCXZvaWQgKCpzZXRwb3dlcikoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBpbnQpOworCXZvaWQgKCpleGl0KShzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKik7Cit9OworCitleHRlcm4gdm9pZCBweGFfc2V0X21jaV9pbmZvKHN0cnVjdCBweGFtY2lfcGxhdGZvcm1fZGF0YSAqaW5mbyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTk3ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3BhcmFtLmgKQEAgLTAsMCArMSwzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9wYXJhbS5oCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9wb29kbGUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9wb29kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGJkYTlkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3Bvb2RsZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcG9vZGxlLmgKKyAqCisgKiBNYXkgYmUgY29waWVkIG9yIG1vZGlmaWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlLiAgU2VlIGxpbnV4L0NPUFlJTkcgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKgorICogQmFzZWQgb246CisgKiAgIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jb2xsaWUuaAorICoKKyAqIENoYW5nZUxvZzoKKyAqICAgMDQtMDYtMjAwMSBMaW5lbyBKYXBhbiwgSW5jLgorICogICAwNC0xNi0yMDAxIFNIQVJQIENvcnBvcmF0aW9uCisgKiAgIFVwZGF0ZSB0byAyLjYgSm9obiBMZW56CisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9QT09ETEVfSAorI2RlZmluZSBfX0FTTV9BUkNIX1BPT0RMRV9IICAxCisKKy8qCisgKiBHUElPcworICovCisvKiBQWEEgR1BJT3MgKi8KKyNkZWZpbmUgUE9PRExFX0dQSU9fT05fS0VZCQkoMCkKKyNkZWZpbmUgUE9PRExFX0dQSU9fQUNfSU4JCSgxKQorI2RlZmluZSBQT09ETEVfR1BJT19DTwkJCTE2CisjZGVmaW5lIFBPT0RMRV9HUElPX1RQX0lOVAkJKDUpCisjZGVmaW5lIFBPT0RMRV9HUElPX1dBS0VVUAkJKDExKQkvKiBjaGFuZ2UgYmF0dGVyeSAqLworI2RlZmluZSBQT09ETEVfR1BJT19HQV9JTlQJCSgxMCkKKyNkZWZpbmUgUE9PRExFX0dQSU9fSVJfT04JCSgyMikKKyNkZWZpbmUgUE9PRExFX0dQSU9fSFBfSU4JCSg0KQorI2RlZmluZSBQT09ETEVfR1BJT19DRl9JUlEJCSgxNykKKyNkZWZpbmUgUE9PRExFX0dQSU9fQ0ZfQ0QJCSgxNCkKKyNkZWZpbmUgUE9PRExFX0dQSU9fQ0ZfU1RTQ0hHCQkoMTQpCisjZGVmaW5lIFBPT0RMRV9HUElPX1NEX1BXUgkJKDMzKQorI2RlZmluZSBQT09ETEVfR1BJT19uU0RfQ0xLCQkoNikKKyNkZWZpbmUgUE9PRExFX0dQSU9fblNEX1dQCQkoNykKKyNkZWZpbmUgUE9PRExFX0dQSU9fblNEX0lOVAkJKDgpCisjZGVmaW5lIFBPT0RMRV9HUElPX25TRF9ERVRFQ1QJCSg5KQorI2RlZmluZSBQT09ETEVfR1BJT19NQUlOX0JBVF9MT1cJKDEzKQorI2RlZmluZSBQT09ETEVfR1BJT19CQVRfQ09WRVIJCSgxMykKKyNkZWZpbmUgUE9PRExFX0dQSU9fQURDX1RFTVBfT04JCSgyMSkKKyNkZWZpbmUgUE9PRExFX0dQSU9fQllQQVNTX09OCQkoMzYpCisjZGVmaW5lIFBPT0RMRV9HUElPX0NIUkdfT04JCSgzOCkKKyNkZWZpbmUgUE9PRExFX0dQSU9fQ0hSR19GVUxMCQkoMTYpCisKKy8qIFBYQSBHUElPcyAqLworI2RlZmluZSBQT09ETEVfSVJRX0dQSU9fT05fS0VZCQlJUlFfR1BJTzAKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX0FDX0lOCQlJUlFfR1BJTzEKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX0hQX0lOCQlJUlFfR1BJTzQKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX0NPCQlJUlFfR1BJTzE2CisjZGVmaW5lIFBPT0RMRV9JUlFfR1BJT19UUF9JTlQJCUlSUV9HUElPNQorI2RlZmluZSBQT09ETEVfSVJRX0dQSU9fV0FLRVVQCQlJUlFfR1BJTzExCisjZGVmaW5lIFBPT0RMRV9JUlFfR1BJT19HQV9JTlQJCUlSUV9HUElPMTAKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX0NGX0lSUQkJSVJRX0dQSU8xNworI2RlZmluZSBQT09ETEVfSVJRX0dQSU9fQ0ZfQ0QJCUlSUV9HUElPMTQKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX25TRF9JTlQJCUlSUV9HUElPOAorI2RlZmluZSBQT09ETEVfSVJRX0dQSU9fblNEX0RFVEVDVAlJUlFfR1BJTzkKKyNkZWZpbmUgUE9PRExFX0lSUV9HUElPX01BSU5fQkFUX0xPVwlJUlFfR1BJTzEzCisKKy8qIFNDT09QIEdQSU9zICovCisjZGVmaW5lIFBPT0RMRV9TQ09PUF9DSEFSR0VfT04JU0NPT1BfR1BDUl9QQTExCisjZGVmaW5lIFBPT0RMRV9TQ09PUF9DUDQwMQlTQ09PUF9HUENSX1BBMTMKKyNkZWZpbmUgUE9PRExFX1NDT09QX1ZQRU4JU0NPT1BfR1BDUl9QQTE4CisjZGVmaW5lIFBPT0RMRV9TQ09PUF9MX1BDTEsJU0NPT1BfR1BDUl9QQTIwCisjZGVmaW5lIFBPT0RMRV9TQ09PUF9MX0xDTEsJU0NPT1BfR1BDUl9QQTIxCisjZGVmaW5lIFBPT0RMRV9TQ09PUF9IU19PVVQJU0NPT1BfR1BDUl9QQTIyCisKKyNkZWZpbmUgUE9PRExFX1NDT09QX0lPX0RJUgkoIFBPT0RMRV9TQ09PUF9WUEVOIHwgUE9PRExFX1NDT09QX0hTX09VVCApCisjZGVmaW5lIFBPT0RMRV9TQ09PUF9JT19PVVQJKCAwICkKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfUE9PRExFX0ggICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhLXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NzQxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhLXJlZ3MuaApAQCAtMCwwICsxLDIyNTEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKKyAqCisgKiAgQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiAgQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19QWEFfUkVHU19ICisjZGVmaW5lIF9fUFhBX1JFR1NfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qCisgKiBQWEEgQ2hpcCBzZWxlY3RzCisgKi8KKworI2RlZmluZSBQWEFfQ1MwX1BIWVMJMHgwMDAwMDAwMAorI2RlZmluZSBQWEFfQ1MxX1BIWVMJMHgwNDAwMDAwMAorI2RlZmluZSBQWEFfQ1MyX1BIWVMJMHgwODAwMDAwMAorI2RlZmluZSBQWEFfQ1MzX1BIWVMJMHgwQzAwMDAwMAorI2RlZmluZSBQWEFfQ1M0X1BIWVMJMHgxMDAwMDAwMAorI2RlZmluZSBQWEFfQ1M1X1BIWVMJMHgxNDAwMDAwMAorCisKKy8qCisgKiBQZXJzb25hbCBDb21wdXRlciBNZW1vcnkgQ2FyZCBJbnRlcm5hdGlvbmFsIEFzc29jaWF0aW9uIChQQ01DSUEpIHNvY2tldHMKKyAqLworCisjZGVmaW5lIFBDTUNJQVBydFNwCTB4MDQwMDAwMDAJLyogUENNQ0lBIFBhcnRpdGlvbiBTcGFjZSBbYnl0ZV0gICAqLworI2RlZmluZSBQQ01DSUFTcAkoNCpQQ01DSUFQcnRTcCkJLyogUENNQ0lBIFNwYWNlIFtieXRlXSAgICAgICAgICAgICAqLworI2RlZmluZSBQQ01DSUFJT1NwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBJL08gU3BhY2UgW2J5dGVdICAgICAgICAgKi8KKyNkZWZpbmUgUENNQ0lBQXR0clNwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICAgKi8KKyNkZWZpbmUgUENNQ0lBTWVtU3AJUENNQ0lBUHJ0U3AJLyogUENNQ0lBIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgICAqLworCisjZGVmaW5lIFBDTUNJQTBTcAlQQ01DSUFTcAkvKiBQQ01DSUEgMCBTcGFjZSBbYnl0ZV0gICAgICAgICAgICovCisjZGVmaW5lIFBDTUNJQTBJT1NwCVBDTUNJQUlPU3AJLyogUENNQ0lBIDAgSS9PIFNwYWNlIFtieXRlXSAgICAgICAqLworI2RlZmluZSBQQ01DSUEwQXR0clNwCVBDTUNJQUF0dHJTcAkvKiBQQ01DSUEgMCBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICovCisjZGVmaW5lIFBDTUNJQTBNZW1TcAlQQ01DSUFNZW1TcAkvKiBQQ01DSUEgMCBNZW1vcnkgU3BhY2UgW2J5dGVdICAgICovCisKKyNkZWZpbmUgUENNQ0lBMVNwCVBDTUNJQVNwCS8qIFBDTUNJQSAxIFNwYWNlIFtieXRlXSAgICAgICAgICAgKi8KKyNkZWZpbmUgUENNQ0lBMUlPU3AJUENNQ0lBSU9TcAkvKiBQQ01DSUEgMSBJL08gU3BhY2UgW2J5dGVdICAgICAgICovCisjZGVmaW5lIFBDTUNJQTFBdHRyU3AJUENNQ0lBQXR0clNwCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSBTcGFjZSBbYnl0ZV0gKi8KKyNkZWZpbmUgUENNQ0lBMU1lbVNwCVBDTUNJQU1lbVNwCS8qIFBDTUNJQSAxIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgKi8KKworI2RlZmluZSBfUENNQ0lBKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgWzAuLjFdICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MjAwMDAwMDAgKyAoTmIpKlBDTUNJQVNwKQorI2RlZmluZSBfUENNQ0lBSU8oTmIpCV9QQ01DSUEgKE5iKQkvKiBQQ01DSUEgSS9PIFswLi4xXSAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUFBdHRyKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgQXR0cmlidXRlIFswLi4xXSAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKF9QQ01DSUEgKE5iKSArIDIqUENNQ0lBUHJ0U3ApCisjZGVmaW5lIF9QQ01DSUFNZW0oTmIpCSAgICAgICAgCS8qIFBDTUNJQSBNZW1vcnkgWzAuLjFdICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoX1BDTUNJQSAoTmIpICsgMypQQ01DSUFQcnRTcCkKKworI2RlZmluZSBfUENNQ0lBMAlfUENNQ0lBICgwKQkvKiBQQ01DSUEgMCAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUEwSU8JX1BDTUNJQUlPICgwKQkvKiBQQ01DSUEgMCBJL08gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUEwQXR0cglfUENNQ0lBQXR0ciAoMCkJLyogUENNQ0lBIDAgQXR0cmlidXRlICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBME1lbQlfUENNQ0lBTWVtICgwKQkvKiBQQ01DSUEgMCBNZW1vcnkgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgX1BDTUNJQTEJX1BDTUNJQSAoMSkJLyogUENNQ0lBIDEgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBMUlPCV9QQ01DSUFJTyAoMSkJLyogUENNQ0lBIDEgSS9PICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBMUF0dHIJX1BDTUNJQUF0dHIgKDEpCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX1BDTUNJQTFNZW0JX1BDTUNJQU1lbSAoMSkJLyogUENNQ0lBIDEgTWVtb3J5ICAgICAgICAgICAgICAgICAqLworCisKKworLyoKKyAqIERNQSBDb250cm9sbGVyCisgKi8KKworI2RlZmluZSBEQ1NSMAkJX19SRUcoMHg0MDAwMDAwMCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDAgKi8KKyNkZWZpbmUgRENTUjEJCV9fUkVHKDB4NDAwMDAwMDQpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAxICovCisjZGVmaW5lIERDU1IyCQlfX1JFRygweDQwMDAwMDA4KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMiAqLworI2RlZmluZSBEQ1NSMwkJX19SRUcoMHg0MDAwMDAwYykgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDMgKi8KKyNkZWZpbmUgRENTUjQJCV9fUkVHKDB4NDAwMDAwMTApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCA0ICovCisjZGVmaW5lIERDU1I1CQlfX1JFRygweDQwMDAwMDE0KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgNSAqLworI2RlZmluZSBEQ1NSNgkJX19SRUcoMHg0MDAwMDAxOCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDYgKi8KKyNkZWZpbmUgRENTUjcJCV9fUkVHKDB4NDAwMDAwMWMpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCA3ICovCisjZGVmaW5lIERDU1I4CQlfX1JFRygweDQwMDAwMDIwKSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgOCAqLworI2RlZmluZSBEQ1NSOQkJX19SRUcoMHg0MDAwMDAyNCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDkgKi8KKyNkZWZpbmUgRENTUjEwCQlfX1JFRygweDQwMDAwMDI4KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTAgKi8KKyNkZWZpbmUgRENTUjExCQlfX1JFRygweDQwMDAwMDJjKSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTEgKi8KKyNkZWZpbmUgRENTUjEyCQlfX1JFRygweDQwMDAwMDMwKSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTIgKi8KKyNkZWZpbmUgRENTUjEzCQlfX1JFRygweDQwMDAwMDM0KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTMgKi8KKyNkZWZpbmUgRENTUjE0CQlfX1JFRygweDQwMDAwMDM4KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTQgKi8KKyNkZWZpbmUgRENTUjE1CQlfX1JFRygweDQwMDAwMDNjKSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMTUgKi8KKworI2RlZmluZSBEQ1NSKHgpCQlfX1JFRzIoMHg0MDAwMDAwMCwgKHgpIDw8IDIpCisKKyNkZWZpbmUgRENTUl9SVU4JKDEgPDwgMzEpCS8qIFJ1biBCaXQgKHJlYWQgLyB3cml0ZSkgKi8KKyNkZWZpbmUgRENTUl9OT0RFU0MJKDEgPDwgMzApCS8qIE5vLURlc2NyaXB0b3IgRmV0Y2ggKHJlYWQgLyB3cml0ZSkgKi8KKyNkZWZpbmUgRENTUl9TVE9QSVJRRU4JKDEgPDwgMjkpCS8qIFN0b3AgSW50ZXJydXB0IEVuYWJsZSAocmVhZCAvIHdyaXRlKSAqLworI2lmZGVmIENPTkZJR19QWEEyN3gKKyNkZWZpbmUgRENTUl9FT1JJUlFFTgkoMSA8PCAyOCkgICAgICAgLyogRW5kIG9mIFJlY2VpdmUgSW50ZXJydXB0IEVuYWJsZSAoUi9XKSAqLworI2RlZmluZSBEQ1NSX0VPUkpNUEVOCSgxIDw8IDI3KSAgICAgICAvKiBKdW1wIHRvIG5leHQgZGVzY3JpcHRvciBvbiBFT1IgKi8KKyNkZWZpbmUgRENTUl9FT1JTVE9QRU4JKDEgPDwgMjYpICAgICAgIC8qIFNUT1Agb24gYW4gRU9SICovCisjZGVmaW5lIERDU1JfU0VUQ01QU1QJKDEgPDwgMjUpICAgICAgIC8qIFNldCBEZXNjcmlwdG9yIENvbXBhcmUgU3RhdHVzICovCisjZGVmaW5lIERDU1JfQ0xSQ01QU1QJKDEgPDwgMjQpICAgICAgIC8qIENsZWFyIERlc2NyaXB0b3IgQ29tcGFyZSBTdGF0dXMgKi8KKyNkZWZpbmUgRENTUl9DTVBTVAkoMSA8PCAxMCkgICAgICAgLyogVGhlIERlc2NyaXB0b3IgQ29tcGFyZSBTdGF0dXMgKi8KKyNkZWZpbmUgRENTUl9FTlJJTlRSCSgxIDw8IDkpICAgICAgICAvKiBUaGUgZW5kIG9mIFJlY2VpdmUgKi8KKyNlbmRpZgorI2RlZmluZSBEQ1NSX1JFUVBFTkQJKDEgPDwgOCkJLyogUmVxdWVzdCBQZW5kaW5nIChyZWFkLW9ubHkpICovCisjZGVmaW5lIERDU1JfU1RPUFNUQVRFCSgxIDw8IDMpCS8qIFN0b3AgU3RhdGUgKHJlYWQtb25seSkgKi8KKyNkZWZpbmUgRENTUl9FTkRJTlRSCSgxIDw8IDIpCS8qIEVuZCBJbnRlcnJ1cHQgKHJlYWQgLyB3cml0ZSkgKi8KKyNkZWZpbmUgRENTUl9TVEFSVElOVFIJKDEgPDwgMSkJLyogU3RhcnQgSW50ZXJydXB0IChyZWFkIC8gd3JpdGUpICovCisjZGVmaW5lIERDU1JfQlVTRVJSCSgxIDw8IDApCS8qIEJ1cyBFcnJvciBJbnRlcnJ1cHQgKHJlYWQgLyB3cml0ZSkgKi8KKworI2RlZmluZSBESU5UCQlfX1JFRygweDQwMDAwMGYwKSAgLyogRE1BIEludGVycnVwdCBSZWdpc3RlciAqLworCisjZGVmaW5lIERSQ01SKG4pCV9fUkVHMigweDQwMDAwMTAwLCAobik8PDIpCisjZGVmaW5lIERSQ01SMAkJX19SRUcoMHg0MDAwMDEwMCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIERSRVEgMCAqLworI2RlZmluZSBEUkNNUjEJCV9fUkVHKDB4NDAwMDAxMDQpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBEUkVRIDEgKi8KKyNkZWZpbmUgRFJDTVIyCQlfX1JFRygweDQwMDAwMTA4KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgSTJTIHJlY2VpdmUgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjMJCV9fUkVHKDB4NDAwMDAxMGMpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBJMlMgdHJhbnNtaXQgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjQJCV9fUkVHKDB4NDAwMDAxMTApICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBCVFVBUlQgcmVjZWl2ZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SNQkJX19SRUcoMHg0MDAwMDExNCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIEJUVUFSVCB0cmFuc21pdCBSZXF1ZXN0LiAqLworI2RlZmluZSBEUkNNUjYJCV9fUkVHKDB4NDAwMDAxMTgpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBGRlVBUlQgcmVjZWl2ZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SNwkJX19SRUcoMHg0MDAwMDExYykgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIEZGVUFSVCB0cmFuc21pdCBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SOAkJX19SRUcoMHg0MDAwMDEyMCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIEFDOTcgbWljcm9waG9uZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SOQkJX19SRUcoMHg0MDAwMDEyNCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIEFDOTcgbW9kZW0gcmVjZWl2ZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMTAJCV9fUkVHKDB4NDAwMDAxMjgpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBBQzk3IG1vZGVtIHRyYW5zbWl0IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIxMQkJX19SRUcoMHg0MDAwMDEyYykgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIEFDOTcgYXVkaW8gcmVjZWl2ZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMTIJCV9fUkVHKDB4NDAwMDAxMzApICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBBQzk3IGF1ZGlvIHRyYW5zbWl0IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIxMwkJX19SRUcoMHg0MDAwMDEzNCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFNTUCByZWNlaXZlIFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIxNAkJX19SRUcoMHg0MDAwMDEzOCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFNTUCB0cmFuc21pdCBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMTUJCV9fUkVHKDB4NDAwMDAxM2MpICAvKiBSZXNlcnZlZCAqLworI2RlZmluZSBEUkNNUjE2CQlfX1JFRygweDQwMDAwMTQwKSAgLyogUmVzZXJ2ZWQgKi8KKyNkZWZpbmUgRFJDTVIxNwkJX19SRUcoMHg0MDAwMDE0NCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIElDUCByZWNlaXZlIFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIxOAkJX19SRUcoMHg0MDAwMDE0OCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIElDUCB0cmFuc21pdCBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMTkJCV9fUkVHKDB4NDAwMDAxNGMpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBTVFVBUlQgcmVjZWl2ZSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMjAJCV9fUkVHKDB4NDAwMDAxNTApICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBTVFVBUlQgdHJhbnNtaXQgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjIxCQlfX1JFRygweDQwMDAwMTU0KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgTU1DIHJlY2VpdmUgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjIyCQlfX1JFRygweDQwMDAwMTU4KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgTU1DIHRyYW5zbWl0IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIyMwkJX19SRUcoMHg0MDAwMDE1YykgIC8qIFJlc2VydmVkICovCisjZGVmaW5lIERSQ01SMjQJCV9fUkVHKDB4NDAwMDAxNjApICAvKiBSZXNlcnZlZCAqLworI2RlZmluZSBEUkNNUjI1CQlfX1JFRygweDQwMDAwMTY0KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgVVNCIGVuZHBvaW50IDEgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjI2CQlfX1JFRygweDQwMDAwMTY4KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgVVNCIGVuZHBvaW50IDIgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjI3CQlfX1JFRygweDQwMDAwMTZDKSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgVVNCIGVuZHBvaW50IDMgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjI4CQlfX1JFRygweDQwMDAwMTcwKSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgVVNCIGVuZHBvaW50IDQgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjI5CQlfX1JFRygweDQwMDAwMTc0KSAgLyogUmVzZXJ2ZWQgKi8KKyNkZWZpbmUgRFJDTVIzMAkJX19SRUcoMHg0MDAwMDE3OCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCA2IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIzMQkJX19SRUcoMHg0MDAwMDE3QykgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCA3IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIzMgkJX19SRUcoMHg0MDAwMDE4MCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCA4IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIzMwkJX19SRUcoMHg0MDAwMDE4NCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCA5IFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIzNAkJX19SRUcoMHg0MDAwMDE4OCkgIC8qIFJlc2VydmVkICovCisjZGVmaW5lIERSQ01SMzUJCV9fUkVHKDB4NDAwMDAxOEMpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBVU0IgZW5kcG9pbnQgMTEgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjM2CQlfX1JFRygweDQwMDAwMTkwKSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgVVNCIGVuZHBvaW50IDEyIFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVIzNwkJX19SRUcoMHg0MDAwMDE5NCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCAxMyBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SMzgJCV9fUkVHKDB4NDAwMDAxOTgpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBVU0IgZW5kcG9pbnQgMTQgUmVxdWVzdCAqLworI2RlZmluZSBEUkNNUjM5CQlfX1JFRygweDQwMDAwMTlDKSAgLyogUmVzZXJ2ZWQgKi8KKworI2RlZmluZSBEUkNNUjY4CQlfX1JFRygweDQwMDAxMTEwKSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgQ2FtZXJhIEZJRk8gMCBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SNjkJCV9fUkVHKDB4NDAwMDExMTQpICAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIFJlZ2lzdGVyIGZvciBDYW1lcmEgRklGTyAxIFJlcXVlc3QgKi8KKyNkZWZpbmUgRFJDTVI3MAkJX19SRUcoMHg0MDAwMTExOCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIENhbWVyYSBGSUZPIDIgUmVxdWVzdCAqLworCisjZGVmaW5lIERSQ01SUlhTQURSCURSQ01SMgorI2RlZmluZSBEUkNNUlRYU0FEUglEUkNNUjMKKyNkZWZpbmUgRFJDTVJSWEJUUkJSCURSQ01SNAorI2RlZmluZSBEUkNNUlRYQlRUSFIJRFJDTVI1CisjZGVmaW5lIERSQ01SUlhGRlJCUglEUkNNUjYKKyNkZWZpbmUgRFJDTVJUWEZGVEhSCURSQ01SNworI2RlZmluZSBEUkNNUlJYTUNEUglEUkNNUjgKKyNkZWZpbmUgRFJDTVJSWE1PRFIJRFJDTVI5CisjZGVmaW5lIERSQ01SVFhNT0RSCURSQ01SMTAKKyNkZWZpbmUgRFJDTVJSWFBDRFIJRFJDTVIxMQorI2RlZmluZSBEUkNNUlRYUENEUglEUkNNUjEyCisjZGVmaW5lIERSQ01SUlhTU0RSCURSQ01SMTMKKyNkZWZpbmUgRFJDTVJUWFNTRFIJRFJDTVIxNAorI2RlZmluZSBEUkNNUlJYU1MyRFIgICBEUkNNUjE1CisjZGVmaW5lIERSQ01SVFhTUzJEUiAgIERSQ01SMTYKKyNkZWZpbmUgRFJDTVJSWElDRFIJRFJDTVIxNworI2RlZmluZSBEUkNNUlRYSUNEUglEUkNNUjE4CisjZGVmaW5lIERSQ01SUlhTVFJCUglEUkNNUjE5CisjZGVmaW5lIERSQ01SVFhTVFRIUglEUkNNUjIwCisjZGVmaW5lIERSQ01SUlhNTUMJRFJDTVIyMQorI2RlZmluZSBEUkNNUlRYTU1DCURSQ01SMjIKKyNkZWZpbmUgRFJDTVJSWFNTM0RSICAgRFJDTVI2NgorI2RlZmluZSBEUkNNUlRYU1MzRFIgICBEUkNNUjY3CisjZGVmaW5lIERSQ01SVURDKHgpCURSQ01SKCh4KSArIDI0KQorCisjZGVmaW5lIERSQ01SX01BUFZMRAkoMSA8PCA3KQkvKiBNYXAgVmFsaWQgKHJlYWQgLyB3cml0ZSkgKi8KKyNkZWZpbmUgRFJDTVJfQ0hMTlVNCTB4MWYJCS8qIG1hc2sgZm9yIENoYW5uZWwgTnVtYmVyIChyZWFkIC8gd3JpdGUpICovCisKKyNkZWZpbmUgRERBRFIwCQlfX1JFRygweDQwMDAwMjAwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDAgKi8KKyNkZWZpbmUgRFNBRFIwCQlfX1JFRygweDQwMDAwMjA0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMCAqLworI2RlZmluZSBEVEFEUjAJCV9fUkVHKDB4NDAwMDAyMDgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAwICovCisjZGVmaW5lIERDTUQwCQlfX1JFRygweDQwMDAwMjBjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDAgKi8KKyNkZWZpbmUgRERBRFIxCQlfX1JFRygweDQwMDAwMjEwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDEgKi8KKyNkZWZpbmUgRFNBRFIxCQlfX1JFRygweDQwMDAwMjE0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMSAqLworI2RlZmluZSBEVEFEUjEJCV9fUkVHKDB4NDAwMDAyMTgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxICovCisjZGVmaW5lIERDTUQxCQlfX1JFRygweDQwMDAwMjFjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDEgKi8KKyNkZWZpbmUgRERBRFIyCQlfX1JFRygweDQwMDAwMjIwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDIgKi8KKyNkZWZpbmUgRFNBRFIyCQlfX1JFRygweDQwMDAwMjI0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMiAqLworI2RlZmluZSBEVEFEUjIJCV9fUkVHKDB4NDAwMDAyMjgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAyICovCisjZGVmaW5lIERDTUQyCQlfX1JFRygweDQwMDAwMjJjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDIgKi8KKyNkZWZpbmUgRERBRFIzCQlfX1JFRygweDQwMDAwMjMwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDMgKi8KKyNkZWZpbmUgRFNBRFIzCQlfX1JFRygweDQwMDAwMjM0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMyAqLworI2RlZmluZSBEVEFEUjMJCV9fUkVHKDB4NDAwMDAyMzgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAzICovCisjZGVmaW5lIERDTUQzCQlfX1JFRygweDQwMDAwMjNjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDMgKi8KKyNkZWZpbmUgRERBRFI0CQlfX1JFRygweDQwMDAwMjQwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDQgKi8KKyNkZWZpbmUgRFNBRFI0CQlfX1JFRygweDQwMDAwMjQ0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgNCAqLworI2RlZmluZSBEVEFEUjQJCV9fUkVHKDB4NDAwMDAyNDgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA0ICovCisjZGVmaW5lIERDTUQ0CQlfX1JFRygweDQwMDAwMjRjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDQgKi8KKyNkZWZpbmUgRERBRFI1CQlfX1JFRygweDQwMDAwMjUwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDUgKi8KKyNkZWZpbmUgRFNBRFI1CQlfX1JFRygweDQwMDAwMjU0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgNSAqLworI2RlZmluZSBEVEFEUjUJCV9fUkVHKDB4NDAwMDAyNTgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA1ICovCisjZGVmaW5lIERDTUQ1CQlfX1JFRygweDQwMDAwMjVjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDUgKi8KKyNkZWZpbmUgRERBRFI2CQlfX1JFRygweDQwMDAwMjYwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDYgKi8KKyNkZWZpbmUgRFNBRFI2CQlfX1JFRygweDQwMDAwMjY0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgNiAqLworI2RlZmluZSBEVEFEUjYJCV9fUkVHKDB4NDAwMDAyNjgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA2ICovCisjZGVmaW5lIERDTUQ2CQlfX1JFRygweDQwMDAwMjZjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDYgKi8KKyNkZWZpbmUgRERBRFI3CQlfX1JFRygweDQwMDAwMjcwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDcgKi8KKyNkZWZpbmUgRFNBRFI3CQlfX1JFRygweDQwMDAwMjc0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgNyAqLworI2RlZmluZSBEVEFEUjcJCV9fUkVHKDB4NDAwMDAyNzgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA3ICovCisjZGVmaW5lIERDTUQ3CQlfX1JFRygweDQwMDAwMjdjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDcgKi8KKyNkZWZpbmUgRERBRFI4CQlfX1JFRygweDQwMDAwMjgwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDggKi8KKyNkZWZpbmUgRFNBRFI4CQlfX1JFRygweDQwMDAwMjg0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgOCAqLworI2RlZmluZSBEVEFEUjgJCV9fUkVHKDB4NDAwMDAyODgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA4ICovCisjZGVmaW5lIERDTUQ4CQlfX1JFRygweDQwMDAwMjhjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDggKi8KKyNkZWZpbmUgRERBRFI5CQlfX1JFRygweDQwMDAwMjkwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDkgKi8KKyNkZWZpbmUgRFNBRFI5CQlfX1JFRygweDQwMDAwMjk0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgOSAqLworI2RlZmluZSBEVEFEUjkJCV9fUkVHKDB4NDAwMDAyOTgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCA5ICovCisjZGVmaW5lIERDTUQ5CQlfX1JFRygweDQwMDAwMjljKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDkgKi8KKyNkZWZpbmUgRERBRFIxMAkJX19SRUcoMHg0MDAwMDJhMCkgIC8qIERNQSBEZXNjcmlwdG9yIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMCAqLworI2RlZmluZSBEU0FEUjEwCQlfX1JFRygweDQwMDAwMmE0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTAgKi8KKyNkZWZpbmUgRFRBRFIxMAkJX19SRUcoMHg0MDAwMDJhOCkgIC8qIERNQSBUYXJnZXQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDEwICovCisjZGVmaW5lIERDTUQxMAkJX19SRUcoMHg0MDAwMDJhYykgIC8qIERNQSBDb21tYW5kIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMCAqLworI2RlZmluZSBEREFEUjExCQlfX1JFRygweDQwMDAwMmIwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDExICovCisjZGVmaW5lIERTQURSMTEJCV9fUkVHKDB4NDAwMDAyYjQpICAvKiBETUEgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMSAqLworI2RlZmluZSBEVEFEUjExCQlfX1JFRygweDQwMDAwMmI4KSAgLyogRE1BIFRhcmdldCBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTEgKi8KKyNkZWZpbmUgRENNRDExCQlfX1JFRygweDQwMDAwMmJjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDExICovCisjZGVmaW5lIEREQURSMTIJCV9fUkVHKDB4NDAwMDAyYzApICAvKiBETUEgRGVzY3JpcHRvciBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTIgKi8KKyNkZWZpbmUgRFNBRFIxMgkJX19SRUcoMHg0MDAwMDJjNCkgIC8qIERNQSBTb3VyY2UgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDEyICovCisjZGVmaW5lIERUQURSMTIJCV9fUkVHKDB4NDAwMDAyYzgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMiAqLworI2RlZmluZSBEQ01EMTIJCV9fUkVHKDB4NDAwMDAyY2MpICAvKiBETUEgQ29tbWFuZCBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTIgKi8KKyNkZWZpbmUgRERBRFIxMwkJX19SRUcoMHg0MDAwMDJkMCkgIC8qIERNQSBEZXNjcmlwdG9yIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMyAqLworI2RlZmluZSBEU0FEUjEzCQlfX1JFRygweDQwMDAwMmQ0KSAgLyogRE1BIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTMgKi8KKyNkZWZpbmUgRFRBRFIxMwkJX19SRUcoMHg0MDAwMDJkOCkgIC8qIERNQSBUYXJnZXQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDEzICovCisjZGVmaW5lIERDTUQxMwkJX19SRUcoMHg0MDAwMDJkYykgIC8qIERNQSBDb21tYW5kIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxMyAqLworI2RlZmluZSBEREFEUjE0CQlfX1JFRygweDQwMDAwMmUwKSAgLyogRE1BIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDE0ICovCisjZGVmaW5lIERTQURSMTQJCV9fUkVHKDB4NDAwMDAyZTQpICAvKiBETUEgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxNCAqLworI2RlZmluZSBEVEFEUjE0CQlfX1JFRygweDQwMDAwMmU4KSAgLyogRE1BIFRhcmdldCBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTQgKi8KKyNkZWZpbmUgRENNRDE0CQlfX1JFRygweDQwMDAwMmVjKSAgLyogRE1BIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDE0ICovCisjZGVmaW5lIEREQURSMTUJCV9fUkVHKDB4NDAwMDAyZjApICAvKiBETUEgRGVzY3JpcHRvciBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTUgKi8KKyNkZWZpbmUgRFNBRFIxNQkJX19SRUcoMHg0MDAwMDJmNCkgIC8qIERNQSBTb3VyY2UgQWRkcmVzcyBSZWdpc3RlciBDaGFubmVsIDE1ICovCisjZGVmaW5lIERUQURSMTUJCV9fUkVHKDB4NDAwMDAyZjgpICAvKiBETUEgVGFyZ2V0IEFkZHJlc3MgUmVnaXN0ZXIgQ2hhbm5lbCAxNSAqLworI2RlZmluZSBEQ01EMTUJCV9fUkVHKDB4NDAwMDAyZmMpICAvKiBETUEgQ29tbWFuZCBBZGRyZXNzIFJlZ2lzdGVyIENoYW5uZWwgMTUgKi8KKworI2RlZmluZSBEREFEUih4KQlfX1JFRzIoMHg0MDAwMDIwMCwgKHgpIDw8IDQpCisjZGVmaW5lIERTQURSKHgpCV9fUkVHMigweDQwMDAwMjA0LCAoeCkgPDwgNCkKKyNkZWZpbmUgRFRBRFIoeCkJX19SRUcyKDB4NDAwMDAyMDgsICh4KSA8PCA0KQorI2RlZmluZSBEQ01EKHgpCQlfX1JFRzIoMHg0MDAwMDIwYywgKHgpIDw8IDQpCisKKyNkZWZpbmUgRERBRFJfREVTQ0FERFIJMHhmZmZmZmZmMAkvKiBBZGRyZXNzIG9mIG5leHQgZGVzY3JpcHRvciAobWFzaykgKi8KKyNkZWZpbmUgRERBRFJfU1RPUAkoMSA8PCAwKQkvKiBTdG9wIChyZWFkIC8gd3JpdGUpICovCisKKyNkZWZpbmUgRENNRF9JTkNTUkNBRERSCSgxIDw8IDMxKQkvKiBTb3VyY2UgQWRkcmVzcyBJbmNyZW1lbnQgU2V0dGluZy4gKi8KKyNkZWZpbmUgRENNRF9JTkNUUkdBRERSCSgxIDw8IDMwKQkvKiBUYXJnZXQgQWRkcmVzcyBJbmNyZW1lbnQgU2V0dGluZy4gKi8KKyNkZWZpbmUgRENNRF9GTE9XU1JDCSgxIDw8IDI5KQkvKiBGbG93IENvbnRyb2wgYnkgdGhlIHNvdXJjZS4gKi8KKyNkZWZpbmUgRENNRF9GTE9XVFJHCSgxIDw8IDI4KQkvKiBGbG93IENvbnRyb2wgYnkgdGhlIHRhcmdldC4gKi8KKyNkZWZpbmUgRENNRF9TVEFSVElSUUVOCSgxIDw8IDIyKQkvKiBTdGFydCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIERDTURfRU5ESVJRRU4JKDEgPDwgMjEpCS8qIEVuZCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIERDTURfRU5ESUFOCSgxIDw8IDE4KQkvKiBEZXZpY2UgRW5kaWFuLW5lc3MuICovCisjZGVmaW5lIERDTURfQlVSU1Q4CSgxIDw8IDE2KQkvKiA4IGJ5dGUgYnVyc3QgKi8KKyNkZWZpbmUgRENNRF9CVVJTVDE2CSgyIDw8IDE2KQkvKiAxNiBieXRlIGJ1cnN0ICovCisjZGVmaW5lIERDTURfQlVSU1QzMgkoMyA8PCAxNikJLyogMzIgYnl0ZSBidXJzdCAqLworI2RlZmluZSBEQ01EX1dJRFRIMQkoMSA8PCAxNCkJLyogMSBieXRlIHdpZHRoICovCisjZGVmaW5lIERDTURfV0lEVEgyCSgyIDw8IDE0KQkvKiAyIGJ5dGUgd2lkdGggKEhhbGZXb3JkKSAqLworI2RlZmluZSBEQ01EX1dJRFRINAkoMyA8PCAxNCkJLyogNCBieXRlIHdpZHRoIChXb3JkKSAqLworI2RlZmluZSBEQ01EX0xFTkdUSAkweDAxZmZmCQkvKiBsZW5ndGggbWFzayAobWF4ID0gOEsgLSAxKSAqLworCisKKy8qCisgKiBVQVJUcworICovCisKKy8qIEZ1bGwgRnVuY3Rpb24gVUFSVCAoRkZVQVJUKSAqLworI2RlZmluZSBGRlVBUlQJCUZGUkJSCisjZGVmaW5lIEZGUkJSCQlfX1JFRygweDQwMTAwMDAwKSAgLyogUmVjZWl2ZSBCdWZmZXIgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgRkZUSFIJCV9fUkVHKDB4NDAxMDAwMDApICAvKiBUcmFuc21pdCBIb2xkaW5nIFJlZ2lzdGVyICh3cml0ZSBvbmx5KSAqLworI2RlZmluZSBGRklFUgkJX19SRUcoMHg0MDEwMDAwNCkgIC8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIEZGSUlSCQlfX1JFRygweDQwMTAwMDA4KSAgLyogSW50ZXJydXB0IElEIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIEZGRkNSCQlfX1JFRygweDQwMTAwMDA4KSAgLyogRklGTyBDb250cm9sIFJlZ2lzdGVyICh3cml0ZSBvbmx5KSAqLworI2RlZmluZSBGRkxDUgkJX19SRUcoMHg0MDEwMDAwQykgIC8qIExpbmUgQ29udHJvbCBSZWdpc3RlciAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgRkZNQ1IJCV9fUkVHKDB4NDAxMDAwMTApICAvKiBNb2RlbSBDb250cm9sIFJlZ2lzdGVyIChyZWFkL3dyaXRlKSAqLworI2RlZmluZSBGRkxTUgkJX19SRUcoMHg0MDEwMDAxNCkgIC8qIExpbmUgU3RhdHVzIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIEZGTVNSCQlfX1JFRygweDQwMTAwMDE4KSAgLyogTW9kZW0gU3RhdHVzIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIEZGU1BSCQlfX1JFRygweDQwMTAwMDFDKSAgLyogU2NyYXRjaCBQYWQgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIEZGSVNSCQlfX1JFRygweDQwMTAwMDIwKSAgLyogSW5mcmFyZWQgU2VsZWN0aW9uIFJlZ2lzdGVyIChyZWFkL3dyaXRlKSAqLworI2RlZmluZSBGRkRMTAkJX19SRUcoMHg0MDEwMDAwMCkgIC8qIERpdmlzb3IgTGF0Y2ggTG93IFJlZ2lzdGVyIChETEFCID0gMSkgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIEZGRExICQlfX1JFRygweDQwMTAwMDA0KSAgLyogRGl2aXNvciBMYXRjaCBIaWdoIFJlZ2lzdGVyIChETEFCID0gMSkgKHJlYWQvd3JpdGUpICovCisKKy8qIEJsdWV0b290aCBVQVJUIChCVFVBUlQpICovCisjZGVmaW5lIEJUVUFSVAkJQlRSQlIKKyNkZWZpbmUgQlRSQlIJCV9fUkVHKDB4NDAyMDAwMDApICAvKiBSZWNlaXZlIEJ1ZmZlciBSZWdpc3RlciAocmVhZCBvbmx5KSAqLworI2RlZmluZSBCVFRIUgkJX19SRUcoMHg0MDIwMDAwMCkgIC8qIFRyYW5zbWl0IEhvbGRpbmcgUmVnaXN0ZXIgKHdyaXRlIG9ubHkpICovCisjZGVmaW5lIEJUSUVSCQlfX1JFRygweDQwMjAwMDA0KSAgLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgQlRJSVIJCV9fUkVHKDB4NDAyMDAwMDgpICAvKiBJbnRlcnJ1cHQgSUQgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgQlRGQ1IJCV9fUkVHKDB4NDAyMDAwMDgpICAvKiBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgKHdyaXRlIG9ubHkpICovCisjZGVmaW5lIEJUTENSCQlfX1JFRygweDQwMjAwMDBDKSAgLyogTGluZSBDb250cm9sIFJlZ2lzdGVyIChyZWFkL3dyaXRlKSAqLworI2RlZmluZSBCVE1DUgkJX19SRUcoMHg0MDIwMDAxMCkgIC8qIE1vZGVtIENvbnRyb2wgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIEJUTFNSCQlfX1JFRygweDQwMjAwMDE0KSAgLyogTGluZSBTdGF0dXMgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgQlRNU1IJCV9fUkVHKDB4NDAyMDAwMTgpICAvKiBNb2RlbSBTdGF0dXMgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgQlRTUFIJCV9fUkVHKDB4NDAyMDAwMUMpICAvKiBTY3JhdGNoIFBhZCBSZWdpc3RlciAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgQlRJU1IJCV9fUkVHKDB4NDAyMDAwMjApICAvKiBJbmZyYXJlZCBTZWxlY3Rpb24gUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIEJURExMCQlfX1JFRygweDQwMjAwMDAwKSAgLyogRGl2aXNvciBMYXRjaCBMb3cgUmVnaXN0ZXIgKERMQUIgPSAxKSAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgQlRETEgJCV9fUkVHKDB4NDAyMDAwMDQpICAvKiBEaXZpc29yIExhdGNoIEhpZ2ggUmVnaXN0ZXIgKERMQUIgPSAxKSAocmVhZC93cml0ZSkgKi8KKworLyogU3RhbmRhcmQgVUFSVCAoU1RVQVJUKSAqLworI2RlZmluZSBTVFVBUlQJCVNUUkJSCisjZGVmaW5lIFNUUkJSCQlfX1JFRygweDQwNzAwMDAwKSAgLyogUmVjZWl2ZSBCdWZmZXIgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgU1RUSFIJCV9fUkVHKDB4NDA3MDAwMDApICAvKiBUcmFuc21pdCBIb2xkaW5nIFJlZ2lzdGVyICh3cml0ZSBvbmx5KSAqLworI2RlZmluZSBTVElFUgkJX19SRUcoMHg0MDcwMDAwNCkgIC8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIFNUSUlSCQlfX1JFRygweDQwNzAwMDA4KSAgLyogSW50ZXJydXB0IElEIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIFNURkNSCQlfX1JFRygweDQwNzAwMDA4KSAgLyogRklGTyBDb250cm9sIFJlZ2lzdGVyICh3cml0ZSBvbmx5KSAqLworI2RlZmluZSBTVExDUgkJX19SRUcoMHg0MDcwMDAwQykgIC8qIExpbmUgQ29udHJvbCBSZWdpc3RlciAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgU1RNQ1IJCV9fUkVHKDB4NDA3MDAwMTApICAvKiBNb2RlbSBDb250cm9sIFJlZ2lzdGVyIChyZWFkL3dyaXRlKSAqLworI2RlZmluZSBTVExTUgkJX19SRUcoMHg0MDcwMDAxNCkgIC8qIExpbmUgU3RhdHVzIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIFNUTVNSCQlfX1JFRygweDQwNzAwMDE4KSAgLyogUmVzZXJ2ZWQgKi8KKyNkZWZpbmUgU1RTUFIJCV9fUkVHKDB4NDA3MDAwMUMpICAvKiBTY3JhdGNoIFBhZCBSZWdpc3RlciAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgU1RJU1IJCV9fUkVHKDB4NDA3MDAwMjApICAvKiBJbmZyYXJlZCBTZWxlY3Rpb24gUmVnaXN0ZXIgKHJlYWQvd3JpdGUpICovCisjZGVmaW5lIFNURExMCQlfX1JFRygweDQwNzAwMDAwKSAgLyogRGl2aXNvciBMYXRjaCBMb3cgUmVnaXN0ZXIgKERMQUIgPSAxKSAocmVhZC93cml0ZSkgKi8KKyNkZWZpbmUgU1RETEgJCV9fUkVHKDB4NDA3MDAwMDQpICAvKiBEaXZpc29yIExhdGNoIEhpZ2ggUmVnaXN0ZXIgKERMQUIgPSAxKSAocmVhZC93cml0ZSkgKi8KKworI2RlZmluZSBJRVJfRE1BRQkoMSA8PCA3KQkvKiBETUEgUmVxdWVzdHMgRW5hYmxlICovCisjZGVmaW5lIElFUl9VVUUJCSgxIDw8IDYpCS8qIFVBUlQgVW5pdCBFbmFibGUgKi8KKyNkZWZpbmUgSUVSX05SWkUJKDEgPDwgNSkJLyogTlJaIGNvZGluZyBFbmFibGUgKi8KKyNkZWZpbmUgSUVSX1JUSU9FCSgxIDw8IDQpCS8qIFJlY2VpdmVyIFRpbWUgT3V0IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgSUVSX01JRQkJKDEgPDwgMykJLyogTW9kZW0gSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBJRVJfUkxTRQkoMSA8PCAyKQkvKiBSZWNlaXZlciBMaW5lIFN0YXR1cyBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIElFUl9USUUJCSgxIDw8IDEpCS8qIFRyYW5zbWl0IERhdGEgcmVxdWVzdCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIElFUl9SQVZJRQkoMSA8PCAwKQkvKiBSZWNlaXZlciBEYXRhIEF2YWlsYWJsZSBJbnRlcnJ1cHQgRW5hYmxlICovCisKKyNkZWZpbmUgSUlSX0ZJRk9FUzEJKDEgPDwgNykJLyogRklGTyBNb2RlIEVuYWJsZSBTdGF0dXMgKi8KKyNkZWZpbmUgSUlSX0ZJRk9FUzAJKDEgPDwgNikJLyogRklGTyBNb2RlIEVuYWJsZSBTdGF0dXMgKi8KKyNkZWZpbmUgSUlSX1RPRAkJKDEgPDwgMykJLyogVGltZSBPdXQgRGV0ZWN0ZWQgKi8KKyNkZWZpbmUgSUlSX0lJRDIJKDEgPDwgMikJLyogSW50ZXJydXB0IFNvdXJjZSBFbmNvZGVkICovCisjZGVmaW5lIElJUl9JSUQxCSgxIDw8IDEpCS8qIEludGVycnVwdCBTb3VyY2UgRW5jb2RlZCAqLworI2RlZmluZSBJSVJfSVAJCSgxIDw8IDApCS8qIEludGVycnVwdCBQZW5kaW5nIChhY3RpdmUgbG93KSAqLworCisjZGVmaW5lIEZDUl9JVEwyCSgxIDw8IDcpCS8qIEludGVycnVwdCBUcmlnZ2VyIExldmVsICovCisjZGVmaW5lIEZDUl9JVEwxCSgxIDw8IDYpCS8qIEludGVycnVwdCBUcmlnZ2VyIExldmVsICovCisjZGVmaW5lIEZDUl9SRVNFVFRGCSgxIDw8IDIpCS8qIFJlc2V0IFRyYW5zbWl0dGVyIEZJRk8gKi8KKyNkZWZpbmUgRkNSX1JFU0VUUkYJKDEgPDwgMSkJLyogUmVzZXQgUmVjZWl2ZXIgRklGTyAqLworI2RlZmluZSBGQ1JfVFJGSUZPRQkoMSA8PCAwKQkvKiBUcmFuc21pdCBhbmQgUmVjZWl2ZSBGSUZPIEVuYWJsZSAqLworI2RlZmluZSBGQ1JfSVRMXzEJKDApCisjZGVmaW5lIEZDUl9JVExfOAkoRkNSX0lUTDEpCisjZGVmaW5lIEZDUl9JVExfMTYJKEZDUl9JVEwyKQorI2RlZmluZSBGQ1JfSVRMXzMyCShGQ1JfSVRMMnxGQ1JfSVRMMSkKKworI2RlZmluZSBMQ1JfRExBQgkoMSA8PCA3KQkvKiBEaXZpc29yIExhdGNoIEFjY2VzcyBCaXQgKi8KKyNkZWZpbmUgTENSX1NCCQkoMSA8PCA2KQkvKiBTZXQgQnJlYWsgKi8KKyNkZWZpbmUgTENSX1NUS1lQCSgxIDw8IDUpCS8qIFN0aWNreSBQYXJpdHkgKi8KKyNkZWZpbmUgTENSX0VQUwkJKDEgPDwgNCkJLyogRXZlbiBQYXJpdHkgU2VsZWN0ICovCisjZGVmaW5lIExDUl9QRU4JCSgxIDw8IDMpCS8qIFBhcml0eSBFbmFibGUgKi8KKyNkZWZpbmUgTENSX1NUQgkJKDEgPDwgMikJLyogU3RvcCBCaXQgKi8KKyNkZWZpbmUgTENSX1dMUzEJKDEgPDwgMSkJLyogV29yZCBMZW5ndGggU2VsZWN0ICovCisjZGVmaW5lIExDUl9XTFMwCSgxIDw8IDApCS8qIFdvcmQgTGVuZ3RoIFNlbGVjdCAqLworCisjZGVmaW5lIExTUl9GSUZPRQkoMSA8PCA3KQkvKiBGSUZPIEVycm9yIFN0YXR1cyAqLworI2RlZmluZSBMU1JfVEVNVAkoMSA8PCA2KQkvKiBUcmFuc21pdHRlciBFbXB0eSAqLworI2RlZmluZSBMU1JfVERSUQkoMSA8PCA1KQkvKiBUcmFuc21pdCBEYXRhIFJlcXVlc3QgKi8KKyNkZWZpbmUgTFNSX0JJCQkoMSA8PCA0KQkvKiBCcmVhayBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgTFNSX0ZFCQkoMSA8PCAzKQkvKiBGcmFtaW5nIEVycm9yICovCisjZGVmaW5lIExTUl9QRQkJKDEgPDwgMikJLyogUGFyaXR5IEVycm9yICovCisjZGVmaW5lIExTUl9PRQkJKDEgPDwgMSkJLyogT3ZlcnJ1biBFcnJvciAqLworI2RlZmluZSBMU1JfRFIJCSgxIDw8IDApCS8qIERhdGEgUmVhZHkgKi8KKworI2RlZmluZSBNQ1JfTE9PUAkoMSA8PCA0KQorI2RlZmluZSBNQ1JfT1VUMgkoMSA8PCAzKQkvKiBmb3JjZSBNU1JfRENEIGluIGxvb3BiYWNrIG1vZGUgKi8KKyNkZWZpbmUgTUNSX09VVDEJKDEgPDwgMikJLyogZm9yY2UgTVNSX1JJIGluIGxvb3BiYWNrIG1vZGUgKi8KKyNkZWZpbmUgTUNSX1JUUwkJKDEgPDwgMSkJLyogUmVxdWVzdCB0byBTZW5kICovCisjZGVmaW5lIE1DUl9EVFIJCSgxIDw8IDApCS8qIERhdGEgVGVybWluYWwgUmVhZHkgKi8KKworI2RlZmluZSBNU1JfRENECQkoMSA8PCA3KQkvKiBEYXRhIENhcnJpZXIgRGV0ZWN0ICovCisjZGVmaW5lIE1TUl9SSQkJKDEgPDwgNikJLyogUmluZyBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgTVNSX0RTUgkJKDEgPDwgNSkJLyogRGF0YSBTZXQgUmVhZHkgKi8KKyNkZWZpbmUgTVNSX0NUUwkJKDEgPDwgNCkJLyogQ2xlYXIgVG8gU2VuZCAqLworI2RlZmluZSBNU1JfRERDRAkoMSA8PCAzKQkvKiBEZWx0YSBEYXRhIENhcnJpZXIgRGV0ZWN0ICovCisjZGVmaW5lIE1TUl9URVJJCSgxIDw8IDIpCS8qIFRyYWlsaW5nIEVkZ2UgUmluZyBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgTVNSX0REU1IJKDEgPDwgMSkJLyogRGVsdGEgRGF0YSBTZXQgUmVhZHkgKi8KKyNkZWZpbmUgTVNSX0RDVFMJKDEgPDwgMCkJLyogRGVsdGEgQ2xlYXIgVG8gU2VuZCAqLworCisvKgorICogSXJTUiAoSW5mcmFyZWQgU2VsZWN0aW9uIFJlZ2lzdGVyKQorICovCisjZGVmaW5lIFNUSVNSX1JYUEwgICAgICAoMSA8PCA0KSAgICAgICAgLyogUmVjZWl2ZSBEYXRhIFBvbGFyaXR5ICovCisjZGVmaW5lIFNUSVNSX1RYUEwgICAgICAoMSA8PCAzKSAgICAgICAgLyogVHJhbnNtaXQgRGF0YSBQb2xhcml0eSAqLworI2RlZmluZSBTVElTUl9YTU9ERSAgICAgKDEgPDwgMikgICAgICAgIC8qIFRyYW5zbWl0IFB1bHNlIFdpZHRoIFNlbGVjdCAqLworI2RlZmluZSBTVElTUl9SQ1ZFSVIgICAgKDEgPDwgMSkgICAgICAgIC8qIFJlY2VpdmVyIFNJUiBFbmFibGUgKi8KKyNkZWZpbmUgU1RJU1JfWE1JVElSICAgICgxIDw8IDApICAgICAgICAvKiBUcmFuc21pdHRlciBTSVIgRW5hYmxlICovCisKKworLyoKKyAqIEkyQyByZWdpc3RlcnMKKyAqLworCisjZGVmaW5lIElCTVIJCV9fUkVHKDB4NDAzMDE2ODApICAvKiBJMkMgQnVzIE1vbml0b3IgUmVnaXN0ZXIgLSBJQk1SICovCisjZGVmaW5lIElEQlIJCV9fUkVHKDB4NDAzMDE2ODgpICAvKiBJMkMgRGF0YSBCdWZmZXIgUmVnaXN0ZXIgLSBJREJSICovCisjZGVmaW5lIElDUgkJX19SRUcoMHg0MDMwMTY5MCkgIC8qIEkyQyBDb250cm9sIFJlZ2lzdGVyIC0gSUNSICovCisjZGVmaW5lIElTUgkJX19SRUcoMHg0MDMwMTY5OCkgIC8qIEkyQyBTdGF0dXMgUmVnaXN0ZXIgLSBJU1IgKi8KKyNkZWZpbmUgSVNBUgkJX19SRUcoMHg0MDMwMTZBMCkgIC8qIEkyQyBTbGF2ZSBBZGRyZXNzIFJlZ2lzdGVyIC0gSVNBUiAqLworCisjZGVmaW5lIFBXUklCTVIgICAgX19SRUcoMHg0MGYwMDE4MCkgIC8qIFBvd2VyIEkyQyBCdXMgTW9uaXRvciBSZWdpc3Rlci1JQk1SICovCisjZGVmaW5lIFBXUklEQlIgICAgX19SRUcoMHg0MGYwMDE4OCkgIC8qIFBvd2VyIEkyQyBEYXRhIEJ1ZmZlciBSZWdpc3Rlci1JREJSICovCisjZGVmaW5lIFBXUklDUiBfX1JFRygweDQwZjAwMTkwKSAgLyogUG93ZXIgSTJDIENvbnRyb2wgUmVnaXN0ZXIgLSBJQ1IgKi8KKyNkZWZpbmUgUFdSSVNSIF9fUkVHKDB4NDBmMDAxOTgpICAvKiBQb3dlciBJMkMgU3RhdHVzIFJlZ2lzdGVyIC0gSVNSICovCisjZGVmaW5lIFBXUklTQVIgICAgX19SRUcoMHg0MGYwMDFBMCkgIC8qUG93ZXIgSTJDIFNsYXZlIEFkZHJlc3MgUmVnaXN0ZXItSVNBUiAqLworCisjZGVmaW5lIElDUl9TVEFSVAkoMSA8PCAwKQkgICAvKiBzdGFydCBiaXQgKi8KKyNkZWZpbmUgSUNSX1NUT1AJKDEgPDwgMSkJICAgLyogc3RvcCBiaXQgKi8KKyNkZWZpbmUgSUNSX0FDS05BSwkoMSA8PCAyKQkgICAvKiBzZW5kIEFDSygwKSBvciBOQUsoMSkgKi8KKyNkZWZpbmUgSUNSX1RCCQkoMSA8PCAzKQkgICAvKiB0cmFuc2ZlciBieXRlIGJpdCAqLworI2RlZmluZSBJQ1JfTUEJCSgxIDw8IDQpCSAgIC8qIG1hc3RlciBhYm9ydCAqLworI2RlZmluZSBJQ1JfU0NMRQkoMSA8PCA1KQkgICAvKiBtYXN0ZXIgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lIElDUl9JVUUJCSgxIDw8IDYpCSAgIC8qIHVuaXQgZW5hYmxlICovCisjZGVmaW5lIElDUl9HQ0QJCSgxIDw8IDcpCSAgIC8qIGdlbmVyYWwgY2FsbCBkaXNhYmxlICovCisjZGVmaW5lIElDUl9JVEVJRQkoMSA8PCA4KQkgICAvKiBlbmFibGUgdHggaW50ZXJydXB0cyAqLworI2RlZmluZSBJQ1JfSVJGSUUJKDEgPDwgOSkJICAgLyogZW5hYmxlIHJ4IGludGVycnVwdHMgKi8KKyNkZWZpbmUgSUNSX0JFSUUJKDEgPDwgMTApCSAgIC8qIGVuYWJsZSBidXMgZXJyb3IgaW50cyAqLworI2RlZmluZSBJQ1JfU1NESUUJKDEgPDwgMTEpCSAgIC8qIHNsYXZlIFNUT1AgZGV0ZWN0ZWQgaW50IGVuYWJsZSAqLworI2RlZmluZSBJQ1JfQUxESUUJKDEgPDwgMTIpCSAgIC8qIGVuYWJsZSBhcmJpdHJhdGlvbiBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSUNSX1NBRElFCSgxIDw8IDEzKQkgICAvKiBzbGF2ZSBhZGRyZXNzIGRldGVjdGVkIGludCBlbmFibGUgKi8KKyNkZWZpbmUgSUNSX1VSCQkoMSA8PCAxNCkJICAgLyogdW5pdCByZXNldCAqLworCisjZGVmaW5lIElTUl9SV00JCSgxIDw8IDApCSAgIC8qIHJlYWQvd3JpdGUgbW9kZSAqLworI2RlZmluZSBJU1JfQUNLTkFLCSgxIDw8IDEpCSAgIC8qIGFjay9uYWsgc3RhdHVzICovCisjZGVmaW5lIElTUl9VQgkJKDEgPDwgMikJICAgLyogdW5pdCBidXN5ICovCisjZGVmaW5lIElTUl9JQkIJCSgxIDw8IDMpCSAgIC8qIGJ1cyBidXN5ICovCisjZGVmaW5lIElTUl9TU0QJCSgxIDw8IDQpCSAgIC8qIHNsYXZlIHN0b3AgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgSVNSX0FMRAkJKDEgPDwgNSkJICAgLyogYXJiaXRyYXRpb24gbG9zcyBkZXRlY3RlZCAqLworI2RlZmluZSBJU1JfSVRFCQkoMSA8PCA2KQkgICAvKiB0eCBidWZmZXIgZW1wdHkgKi8KKyNkZWZpbmUgSVNSX0lSRgkJKDEgPDwgNykJICAgLyogcnggYnVmZmVyIGZ1bGwgKi8KKyNkZWZpbmUgSVNSX0dDQUQJKDEgPDwgOCkJICAgLyogZ2VuZXJhbCBjYWxsIGFkZHJlc3MgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgSVNSX1NBRAkJKDEgPDwgOSkJICAgLyogc2xhdmUgYWRkcmVzcyBkZXRlY3RlZCAqLworI2RlZmluZSBJU1JfQkVECQkoMSA8PCAxMCkJICAgLyogYnVzIGVycm9yIG5vIEFDSy9OQUsgKi8KKworCisvKgorICogU2VyaWFsIEF1ZGlvIENvbnRyb2xsZXIKKyAqLworCisvKiBGSVhNRTogVGhpcyBjbGFzaCB3aXRoIFNBMTExMSBkZWZpbmVzICovCisjaWZuZGVmIF9BU01fQVJDSF9TQTExMTEKKworI2RlZmluZSBTQUNSMAkJX19SRUcoMHg0MDQwMDAwMCkgIC8qIEdsb2JhbCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFNBQ1IxCQlfX1JFRygweDQwNDAwMDA0KSAgLyogU2VyaWFsIEF1ZGlvIEkgMiBTL01TQi1KdXN0aWZpZWQgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBTQVNSMAkJX19SRUcoMHg0MDQwMDAwQykgIC8qIFNlcmlhbCBBdWRpbyBJIDIgUy9NU0ItSnVzdGlmaWVkIEludGVyZmFjZSBhbmQgRklGTyBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU0FJTVIJCV9fUkVHKDB4NDA0MDAwMTQpICAvKiBTZXJpYWwgQXVkaW8gSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU0FJQ1IJCV9fUkVHKDB4NDA0MDAwMTgpICAvKiBTZXJpYWwgQXVkaW8gSW50ZXJydXB0IENsZWFyIFJlZ2lzdGVyICovCisjZGVmaW5lIFNBRElWCQlfX1JFRygweDQwNDAwMDYwKSAgLyogQXVkaW8gQ2xvY2sgRGl2aWRlciBSZWdpc3Rlci4gKi8KKyNkZWZpbmUgU0FEUgkJX19SRUcoMHg0MDQwMDA4MCkgIC8qIFNlcmlhbCBBdWRpbyBEYXRhIFJlZ2lzdGVyIChUWCBhbmQgUlggRklGTyBhY2Nlc3MgUmVnaXN0ZXIpLiAqLworCisjZGVmaW5lIFNBQ1IwX1JGVEgoeCkJKHggPDwgMTIpCS8qIFJ4IEZJRk8gSW50ZXJydXB0IG9yIERNQSBUcmlnZ2VyIFRocmVzaG9sZCAqLworI2RlZmluZSBTQUNSMF9URlRIKHgpCSh4IDw8IDgpCS8qIFR4IEZJRk8gSW50ZXJydXB0IG9yIERNQSBUcmlnZ2VyIFRocmVzaG9sZCAqLworI2RlZmluZSBTQUNSMF9TVFJGCSgxIDw8IDUpCS8qIEZJRk8gU2VsZWN0IGZvciBFRldSIFNwZWNpYWwgRnVuY3Rpb24gKi8KKyNkZWZpbmUgU0FDUjBfRUZXUgkoMSA8PCA0KQkvKiBFbmFibGUgRUZXUiBGdW5jdGlvbiAgKi8KKyNkZWZpbmUgU0FDUjBfUlNUCSgxIDw8IDMpCS8qIEZJRk8sIGkycyBSZWdpc3RlciBSZXNldCAqLworI2RlZmluZSBTQUNSMF9CQ0tECSgxIDw8IDIpIAkvKiBCaXQgQ2xvY2sgRGlyZWN0aW9uICovCisjZGVmaW5lIFNBQ1IwX0VOQgkoMSA8PCAwKQkvKiBFbmFibGUgSTJTIExpbmsgKi8KKyNkZWZpbmUgU0FDUjFfRU5MQkYJKDEgPDwgNSkJLyogRW5hYmxlIExvb3BiYWNrICovCisjZGVmaW5lIFNBQ1IxX0RSUEwJKDEgPDwgNCkgCS8qIERpc2FibGUgUmVwbGF5aW5nIEZ1bmN0aW9uICovCisjZGVmaW5lIFNBQ1IxX0RSRUMJKDEgPDwgMykJLyogRGlzYWJsZSBSZWNvcmRpbmcgRnVuY3Rpb24gKi8KKyNkZWZpbmUgU0FDUjFfQU1TTAkoMSA8PCAxKQkvKiBTcGVjaWZ5IEFsdGVybmF0ZSBNb2RlICovCisKKyNkZWZpbmUgU0FTUjBfSTJTT0ZGCSgxIDw8IDcpCS8qIENvbnRyb2xsZXIgU3RhdHVzICovCisjZGVmaW5lIFNBU1IwX1JPUgkoMSA8PCA2KQkvKiBSeCBGSUZPIE92ZXJydW4gKi8KKyNkZWZpbmUgU0FTUjBfVFVSCSgxIDw8IDUpCS8qIFR4IEZJRk8gVW5kZXJydW4gKi8KKyNkZWZpbmUgU0FTUjBfUkZTCSgxIDw8IDQpCS8qIFJ4IEZJRk8gU2VydmljZSBSZXF1ZXN0ICovCisjZGVmaW5lIFNBU1IwX1RGUwkoMSA8PCAzKQkvKiBUeCBGSUZPIFNlcnZpY2UgUmVxdWVzdCAqLworI2RlZmluZSBTQVNSMF9CU1kJKDEgPDwgMikJLyogSTJTIEJ1c3kgKi8KKyNkZWZpbmUgU0FTUjBfUk5FCSgxIDw8IDEpCS8qIFJ4IEZJRk8gTm90IEVtcHR5ICovCisjZGVmaW5lIFNBU1IwX1RORgkoMSA8PCAwKSAJLyogVHggRklGTyBOb3QgRW1wdHkgKi8KKworI2RlZmluZSBTQUlDUl9ST1IJKDEgPDwgNikJLyogQ2xlYXIgUnggRklGTyBPdmVycnVuIEludGVycnVwdCAqLworI2RlZmluZSBTQUlDUl9UVVIJKDEgPDwgNSkJLyogQ2xlYXIgVHggRklGTyBVbmRlcnJ1biBJbnRlcnJ1cHQgKi8KKworI2RlZmluZSBTQUlNUl9ST1IJKDEgPDwgNikJLyogRW5hYmxlIFJ4IEZJRk8gT3ZlcnJ1biBDb25kaXRpb24gSW50ZXJydXB0ICovCisjZGVmaW5lIFNBSU1SX1RVUgkoMSA8PCA1KQkvKiBFbmFibGUgVHggRklGTyBVbmRlcnJ1biBDb25kaXRpb24gSW50ZXJydXB0ICovCisjZGVmaW5lIFNBSU1SX1JGUwkoMSA8PCA0KQkvKiBFbmFibGUgUnggRklGTyBTZXJ2aWNlIEludGVycnVwdCAqLworI2RlZmluZSBTQUlNUl9URlMJKDEgPDwgMykJLyogRW5hYmxlIFR4IEZJRk8gU2VydmljZSBJbnRlcnJ1cHQgKi8KKworI2VuZGlmCisKKy8qCisgKiBBQzk3IENvbnRyb2xsZXIgcmVnaXN0ZXJzCisgKi8KKworI2RlZmluZSBQT0NSCQlfX1JFRygweDQwNTAwMDAwKSAgLyogUENNIE91dCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFBPQ1JfRkVJRQkoMSA8PCAzKQkvKiBGSUZPIEVycm9yIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgUE9DUl9GU1JJRQkoMSA8PCAxKQkvKiBGSUZPIFNlcnZpY2UgUmVxdWVzdCBJbnRlcnJ1cHQgRW5hYmxlICovCisKKyNkZWZpbmUgUElDUgkJX19SRUcoMHg0MDUwMDAwNCkgIC8qIFBDTSBJbiBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFBJQ1JfRkVJRQkoMSA8PCAzKQkvKiBGSUZPIEVycm9yIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgUElDUl9GU1JJRQkoMSA8PCAxKQkvKiBGSUZPIFNlcnZpY2UgUmVxdWVzdCBJbnRlcnJ1cHQgRW5hYmxlICovCisKKyNkZWZpbmUgTUNDUgkJX19SRUcoMHg0MDUwMDAwOCkgIC8qIE1pYyBJbiBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIE1DQ1JfRkVJRQkoMSA8PCAzKQkvKiBGSUZPIEVycm9yIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgTUNDUl9GU1JJRQkoMSA8PCAxKQkvKiBGSUZPIFNlcnZpY2UgUmVxdWVzdCBJbnRlcnJ1cHQgRW5hYmxlICovCisKKyNkZWZpbmUgR0NSCQlfX1JFRygweDQwNTAwMDBDKSAgLyogR2xvYmFsIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgR0NSX25ETUFFTgkoMSA8PCAyNCkJLyogbm9uIERNQSBFbmFibGUgKi8KKyNkZWZpbmUgR0NSX0NET05FX0lFCSgxIDw8IDE5KQkvKiBDb21tYW5kIERvbmUgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBHQ1JfU0RPTkVfSUUJKDEgPDwgMTgpCS8qIFN0YXR1cyBEb25lIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgR0NSX1NFQ1JEWV9JRU4JKDEgPDwgOSkJLyogU2Vjb25kYXJ5IFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgR0NSX1BSSVJEWV9JRU4JKDEgPDwgOCkJLyogUHJpbWFyeSBSZWFkeSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIEdDUl9TRUNSRVNfSUVOCSgxIDw8IDUpCS8qIFNlY29uZGFyeSBSZXN1bWUgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBHQ1JfUFJJUkVTX0lFTgkoMSA8PCA0KQkvKiBQcmltYXJ5IFJlc3VtZSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIEdDUl9BQ0xJTktfT0ZGCSgxIDw8IDMpCS8qIEFDLWxpbmsgU2h1dCBPZmYgKi8KKyNkZWZpbmUgR0NSX1dBUk1fUlNUCSgxIDw8IDIpCS8qIEFDOTcgV2FybSBSZXNldCAqLworI2RlZmluZSBHQ1JfQ09MRF9SU1QJKDEgPDwgMSkJLyogQUMnOTcgQ29sZCBSZXNldCAoMCA9IGFjdGl2ZSkgKi8KKyNkZWZpbmUgR0NSX0dJRQkJKDEgPDwgMCkJLyogQ29kZWMgR1BJIEludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBQT1NSCQlfX1JFRygweDQwNTAwMDEwKSAgLyogUENNIE91dCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUE9TUl9GSUZPRQkoMSA8PCA0KQkvKiBGSUZPIGVycm9yICovCisjZGVmaW5lIFBPU1JfRlNSCSgxIDw8IDIpCS8qIEZJRk8gU2VydmljZSBSZXF1ZXN0ICovCisKKyNkZWZpbmUgUElTUgkJX19SRUcoMHg0MDUwMDAxNCkgIC8qIFBDTSBJbiBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUElTUl9GSUZPRQkoMSA8PCA0KQkvKiBGSUZPIGVycm9yICovCisjZGVmaW5lIFBJU1JfRU9DCSgxIDw8IDMpCS8qIERNQSBFbmQtb2YtQ2hhaW4gKGV4Y2x1c2l2ZSBjbGVhcikgKi8KKyNkZWZpbmUgUElTUl9GU1IJKDEgPDwgMikJLyogRklGTyBTZXJ2aWNlIFJlcXVlc3QgKi8KKworI2RlZmluZSBNQ1NSCQlfX1JFRygweDQwNTAwMDE4KSAgLyogTWljIEluIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBNQ1NSX0ZJRk9FCSgxIDw8IDQpCS8qIEZJRk8gZXJyb3IgKi8KKyNkZWZpbmUgTUNTUl9FT0MJKDEgPDwgMykJLyogRE1BIEVuZC1vZi1DaGFpbiAoZXhjbHVzaXZlIGNsZWFyKSAqLworI2RlZmluZSBNQ1NSX0ZTUgkoMSA8PCAyKQkvKiBGSUZPIFNlcnZpY2UgUmVxdWVzdCAqLworCisjZGVmaW5lIEdTUgkJX19SRUcoMHg0MDUwMDAxQykgIC8qIEdsb2JhbCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgR1NSX0NET05FCSgxIDw8IDE5KQkvKiBDb21tYW5kIERvbmUgKi8KKyNkZWZpbmUgR1NSX1NET05FCSgxIDw8IDE4KQkvKiBTdGF0dXMgRG9uZSAqLworI2RlZmluZSBHU1JfUkRDUwkoMSA8PCAxNSkJLyogUmVhZCBDb21wbGV0aW9uIFN0YXR1cyAqLworI2RlZmluZSBHU1JfQklUM1NMVDEyCSgxIDw8IDE0KQkvKiBCaXQgMyBvZiBzbG90IDEyICovCisjZGVmaW5lIEdTUl9CSVQyU0xUMTIJKDEgPDwgMTMpCS8qIEJpdCAyIG9mIHNsb3QgMTIgKi8KKyNkZWZpbmUgR1NSX0JJVDFTTFQxMgkoMSA8PCAxMikJLyogQml0IDEgb2Ygc2xvdCAxMiAqLworI2RlZmluZSBHU1JfU0VDUkVTCSgxIDw8IDExKQkvKiBTZWNvbmRhcnkgUmVzdW1lIEludGVycnVwdCAqLworI2RlZmluZSBHU1JfUFJJUkVTCSgxIDw8IDEwKQkvKiBQcmltYXJ5IFJlc3VtZSBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgR1NSX1NDUgkJKDEgPDwgOSkJLyogU2Vjb25kYXJ5IENvZGVjIFJlYWR5ICovCisjZGVmaW5lIEdTUl9QQ1IJCSgxIDw8IDgpCS8qICBQcmltYXJ5IENvZGVjIFJlYWR5ICovCisjZGVmaW5lIEdTUl9NQ0lOVAkoMSA8PCA3KQkvKiBNaWMgSW4gSW50ZXJydXB0ICovCisjZGVmaW5lIEdTUl9QT0lOVAkoMSA8PCA2KQkvKiBQQ00gT3V0IEludGVycnVwdCAqLworI2RlZmluZSBHU1JfUElJTlQJKDEgPDwgNSkJLyogUENNIEluIEludGVycnVwdCAqLworI2RlZmluZSBHU1JfQUNPRkZECSgxIDw8IDMpCS8qIEFDLWxpbmsgU2h1dCBPZmYgRG9uZSAqLworI2RlZmluZSBHU1JfTU9JTlQJKDEgPDwgMikJLyogTW9kZW0gT3V0IEludGVycnVwdCAqLworI2RlZmluZSBHU1JfTUlJTlQJKDEgPDwgMSkJLyogTW9kZW0gSW4gSW50ZXJydXB0ICovCisjZGVmaW5lIEdTUl9HU0NJCSgxIDw8IDApCS8qIENvZGVjIEdQSSBTdGF0dXMgQ2hhbmdlIEludGVycnVwdCAqLworCisjZGVmaW5lIENBUgkJX19SRUcoMHg0MDUwMDAyMCkgIC8qIENPREVDIEFjY2VzcyBSZWdpc3RlciAqLworI2RlZmluZSBDQVJfQ0FJUAkoMSA8PCAwKQkvKiBDb2RlYyBBY2Nlc3MgSW4gUHJvZ3Jlc3MgKi8KKworI2RlZmluZSBQQ0RSCQlfX1JFRygweDQwNTAwMDQwKSAgLyogUENNIEZJRk8gRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBNQ0RSCQlfX1JFRygweDQwNTAwMDYwKSAgLyogTWljLWluIEZJRk8gRGF0YSBSZWdpc3RlciAqLworCisjZGVmaW5lIE1PQ1IJCV9fUkVHKDB4NDA1MDAxMDApICAvKiBNb2RlbSBPdXQgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBNT0NSX0ZFSUUJKDEgPDwgMykJLyogRklGTyBFcnJvciAqLworI2RlZmluZSBNT0NSX0ZTUklFCSgxIDw8IDEpCS8qIEZJRk8gU2VydmljZSBSZXF1ZXN0IEludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBNSUNSCQlfX1JFRygweDQwNTAwMTA4KSAgLyogTW9kZW0gSW4gQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBNSUNSX0ZFSUUJKDEgPDwgMykJLyogRklGTyBFcnJvciAqLworI2RlZmluZSBNSUNSX0ZTUklFCSgxIDw8IDEpCS8qIEZJRk8gU2VydmljZSBSZXF1ZXN0IEludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBNT1NSCQlfX1JFRygweDQwNTAwMTEwKSAgLyogTW9kZW0gT3V0IFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBNT1NSX0ZJRk9FCSgxIDw8IDQpCS8qIEZJRk8gZXJyb3IgKi8KKyNkZWZpbmUgTU9TUl9GU1IJKDEgPDwgMikJLyogRklGTyBTZXJ2aWNlIFJlcXVlc3QgKi8KKworI2RlZmluZSBNSVNSCQlfX1JFRygweDQwNTAwMTE4KSAgLyogTW9kZW0gSW4gU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1JU1JfRklGT0UJKDEgPDwgNCkJLyogRklGTyBlcnJvciAqLworI2RlZmluZSBNSVNSX0VPQwkoMSA8PCAzKQkvKiBETUEgRW5kLW9mLUNoYWluIChleGNsdXNpdmUgY2xlYXIpICovCisjZGVmaW5lIE1JU1JfRlNSCSgxIDw8IDIpCS8qIEZJRk8gU2VydmljZSBSZXF1ZXN0ICovCisKKyNkZWZpbmUgTU9EUgkJX19SRUcoMHg0MDUwMDE0MCkgIC8qIE1vZGVtIEZJRk8gRGF0YSBSZWdpc3RlciAqLworCisjZGVmaW5lIFBBQ19SRUdfQkFTRQlfX1JFRygweDQwNTAwMjAwKSAgLyogUHJpbWFyeSBBdWRpbyBDb2RlYyAqLworI2RlZmluZSBTQUNfUkVHX0JBU0UJX19SRUcoMHg0MDUwMDMwMCkgIC8qIFNlY29uZGFyeSBBdWRpbyBDb2RlYyAqLworI2RlZmluZSBQTUNfUkVHX0JBU0UJX19SRUcoMHg0MDUwMDQwMCkgIC8qIFByaW1hcnkgTW9kZW0gQ29kZWMgKi8KKyNkZWZpbmUgU01DX1JFR19CQVNFCV9fUkVHKDB4NDA1MDA1MDApICAvKiBTZWNvbmRhcnkgTW9kZW0gQ29kZWMgKi8KKworCisvKgorICogVVNCIERldmljZSBDb250cm9sbGVyCisgKiBQWEEyNXggYW5kIFBYQTI3eCBVU0IgZGV2aWNlIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFyZSBkaWZmZXJlbnQuCisgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19QWEEyNXgpCisKKyNkZWZpbmUgVURDX1JFUzEJX19SRUcoMHg0MDYwMDAwNCkgIC8qIFVEQyBVbmRvY3VtZW50ZWQgLSBSZXNlcnZlZDEgKi8KKyNkZWZpbmUgVURDX1JFUzIJX19SRUcoMHg0MDYwMDAwOCkgIC8qIFVEQyBVbmRvY3VtZW50ZWQgLSBSZXNlcnZlZDIgKi8KKyNkZWZpbmUgVURDX1JFUzMJX19SRUcoMHg0MDYwMDAwQykgIC8qIFVEQyBVbmRvY3VtZW50ZWQgLSBSZXNlcnZlZDMgKi8KKworI2RlZmluZSBVRENDUgkJX19SRUcoMHg0MDYwMDAwMCkgIC8qIFVEQyBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NSX1VERQkoMSA8PCAwKQkvKiBVREMgZW5hYmxlICovCisjZGVmaW5lIFVEQ0NSX1VEQQkoMSA8PCAxKQkvKiBVREMgYWN0aXZlICovCisjZGVmaW5lIFVEQ0NSX1JTTQkoMSA8PCAyKQkvKiBEZXZpY2UgcmVzdW1lICovCisjZGVmaW5lIFVEQ0NSX1JFU0lSCSgxIDw8IDMpCS8qIFJlc3VtZSBpbnRlcnJ1cHQgcmVxdWVzdCAqLworI2RlZmluZSBVRENDUl9TVVNJUgkoMSA8PCA0KQkvKiBTdXNwZW5kIGludGVycnVwdCByZXF1ZXN0ICovCisjZGVmaW5lIFVEQ0NSX1NSTQkoMSA8PCA1KQkvKiBTdXNwZW5kL3Jlc3VtZSBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBVRENDUl9SU1RJUgkoMSA8PCA2KQkvKiBSZXNldCBpbnRlcnJ1cHQgcmVxdWVzdCAqLworI2RlZmluZSBVRENDUl9SRU0JKDEgPDwgNykJLyogUmVzZXQgaW50ZXJydXB0IG1hc2sgKi8KKworI2RlZmluZSBVRENDUzAJCV9fUkVHKDB4NDA2MDAwMTApICAvKiBVREMgRW5kcG9pbnQgMCBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzBfT1BSCSgxIDw8IDApCS8qIE9VVCBwYWNrZXQgcmVhZHkgKi8KKyNkZWZpbmUgVURDQ1MwX0lQUgkoMSA8PCAxKQkvKiBJTiBwYWNrZXQgcmVhZHkgKi8KKyNkZWZpbmUgVURDQ1MwX0ZURgkoMSA8PCAyKQkvKiBGbHVzaCBUeCBGSUZPICovCisjZGVmaW5lIFVEQ0NTMF9EUldGCSgxIDw8IDMpCS8qIERldmljZSByZW1vdGUgd2FrZXVwIGZlYXR1cmUgKi8KKyNkZWZpbmUgVURDQ1MwX1NTVAkoMSA8PCA0KQkvKiBTZW50IHN0YWxsICovCisjZGVmaW5lIFVEQ0NTMF9GU1QJKDEgPDwgNSkJLyogRm9yY2Ugc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1MwX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gbm8gZW1wdHkgKi8KKyNkZWZpbmUgVURDQ1MwX1NBCSgxIDw8IDcpCS8qIFNldHVwIGFjdGl2ZSAqLworCisvKiBCdWxrIElOIC0gRW5kcG9pbnQgMSw2LDExICovCisjZGVmaW5lIFVEQ0NTMQkJX19SRUcoMHg0MDYwMDAxNCkgIC8qIFVEQyBFbmRwb2ludCAxIChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1M2CQlfX1JFRygweDQwNjAwMDI4KSAgLyogVURDIEVuZHBvaW50IDYgKElOKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUzExCQlfX1JFRygweDQwNjAwMDNDKSAgLyogVURDIEVuZHBvaW50IDExIChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBVRENDU19CSV9URlMJKDEgPDwgMCkJLyogVHJhbnNtaXQgRklGTyBzZXJ2aWNlICovCisjZGVmaW5lIFVEQ0NTX0JJX1RQQwkoMSA8PCAxKQkvKiBUcmFuc21pdCBwYWNrZXQgY29tcGxldGUgKi8KKyNkZWZpbmUgVURDQ1NfQklfRlRGCSgxIDw8IDIpCS8qIEZsdXNoIFR4IEZJRk8gKi8KKyNkZWZpbmUgVURDQ1NfQklfVFVSCSgxIDw8IDMpCS8qIFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gKi8KKyNkZWZpbmUgVURDQ1NfQklfU1NUCSgxIDw8IDQpCS8qIFNlbnQgc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NfQklfRlNUCSgxIDw8IDUpCS8qIEZvcmNlIHN0YWxsICovCisjZGVmaW5lIFVEQ0NTX0JJX1RTUAkoMSA8PCA3KQkvKiBUcmFuc21pdCBzaG9ydCBwYWNrZXQgKi8KKworLyogQnVsayBPVVQgLSBFbmRwb2ludCAyLDcsMTIgKi8KKyNkZWZpbmUgVURDQ1MyCQlfX1JFRygweDQwNjAwMDE4KSAgLyogVURDIEVuZHBvaW50IDIgKE9VVCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1M3CQlfX1JFRygweDQwNjAwMDJDKSAgLyogVURDIEVuZHBvaW50IDcgKE9VVCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxMgkJX19SRUcoMHg0MDYwMDA0MCkgIC8qIFVEQyBFbmRwb2ludCAxMiAoT1VUKSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworCisjZGVmaW5lIFVEQ0NTX0JPX1JGUwkoMSA8PCAwKQkvKiBSZWNlaXZlIEZJRk8gc2VydmljZSAqLworI2RlZmluZSBVRENDU19CT19SUEMJKDEgPDwgMSkJLyogUmVjZWl2ZSBwYWNrZXQgY29tcGxldGUgKi8KKyNkZWZpbmUgVURDQ1NfQk9fRE1FCSgxIDw8IDMpCS8qIERNQSBlbmFibGUgKi8KKyNkZWZpbmUgVURDQ1NfQk9fU1NUCSgxIDw8IDQpCS8qIFNlbnQgc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NfQk9fRlNUCSgxIDw8IDUpCS8qIEZvcmNlIHN0YWxsICovCisjZGVmaW5lIFVEQ0NTX0JPX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIFVEQ0NTX0JPX1JTUAkoMSA8PCA3KQkvKiBSZWNlaXZlIHNob3J0IHBhY2tldCAqLworCisvKiBJc29jaHJvbm91cyBJTiAtIEVuZHBvaW50IDMsOCwxMyAqLworI2RlZmluZSBVRENDUzMJCV9fUkVHKDB4NDA2MDAwMUMpICAvKiBVREMgRW5kcG9pbnQgMyAoSU4pIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTOAkJX19SRUcoMHg0MDYwMDAzMCkgIC8qIFVEQyBFbmRwb2ludCA4IChJTikgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxMwkJX19SRUcoMHg0MDYwMDA0NCkgIC8qIFVEQyBFbmRwb2ludCAxMyAoSU4pIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgVURDQ1NfSUlfVEZTCSgxIDw8IDApCS8qIFRyYW5zbWl0IEZJRk8gc2VydmljZSAqLworI2RlZmluZSBVRENDU19JSV9UUEMJKDEgPDwgMSkJLyogVHJhbnNtaXQgcGFja2V0IGNvbXBsZXRlICovCisjZGVmaW5lIFVEQ0NTX0lJX0ZURgkoMSA8PCAyKQkvKiBGbHVzaCBUeCBGSUZPICovCisjZGVmaW5lIFVEQ0NTX0lJX1RVUgkoMSA8PCAzKQkvKiBUcmFuc21pdCBGSUZPIHVuZGVycnVuICovCisjZGVmaW5lIFVEQ0NTX0lJX1RTUAkoMSA8PCA3KQkvKiBUcmFuc21pdCBzaG9ydCBwYWNrZXQgKi8KKworLyogSXNvY2hyb25vdXMgT1VUIC0gRW5kcG9pbnQgNCw5LDE0ICovCisjZGVmaW5lIFVEQ0NTNAkJX19SRUcoMHg0MDYwMDAyMCkgIC8qIFVEQyBFbmRwb2ludCA0IChPVVQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTOQkJX19SRUcoMHg0MDYwMDAzNCkgIC8qIFVEQyBFbmRwb2ludCA5IChPVVQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTMTQJCV9fUkVHKDB4NDA2MDAwNDgpICAvKiBVREMgRW5kcG9pbnQgMTQgKE9VVCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBVRENDU19JT19SRlMJKDEgPDwgMCkJLyogUmVjZWl2ZSBGSUZPIHNlcnZpY2UgKi8KKyNkZWZpbmUgVURDQ1NfSU9fUlBDCSgxIDw8IDEpCS8qIFJlY2VpdmUgcGFja2V0IGNvbXBsZXRlICovCisjZGVmaW5lIFVEQ0NTX0lPX1JPRgkoMSA8PCAzKQkvKiBSZWNlaXZlIG92ZXJmbG93ICovCisjZGVmaW5lIFVEQ0NTX0lPX0RNRQkoMSA8PCAzKQkvKiBETUEgZW5hYmxlICovCisjZGVmaW5lIFVEQ0NTX0lPX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIFVEQ0NTX0lPX1JTUAkoMSA8PCA3KQkvKiBSZWNlaXZlIHNob3J0IHBhY2tldCAqLworCisvKiBJbnRlcnJ1cHQgSU4gLSBFbmRwb2ludCA1LDEwLDE1ICovCisjZGVmaW5lIFVEQ0NTNQkJX19SRUcoMHg0MDYwMDAyNCkgIC8qIFVEQyBFbmRwb2ludCA1IChJbnRlcnJ1cHQpIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ0NTMTAJCV9fUkVHKDB4NDA2MDAwMzgpICAvKiBVREMgRW5kcG9pbnQgMTAgKEludGVycnVwdCkgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVURDQ1MxNQkJX19SRUcoMHg0MDYwMDA0QykgIC8qIFVEQyBFbmRwb2ludCAxNSAoSW50ZXJydXB0KSBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworCisjZGVmaW5lIFVEQ0NTX0lOVF9URlMJKDEgPDwgMCkJLyogVHJhbnNtaXQgRklGTyBzZXJ2aWNlICovCisjZGVmaW5lIFVEQ0NTX0lOVF9UUEMJKDEgPDwgMSkJLyogVHJhbnNtaXQgcGFja2V0IGNvbXBsZXRlICovCisjZGVmaW5lIFVEQ0NTX0lOVF9GVEYJKDEgPDwgMikJLyogRmx1c2ggVHggRklGTyAqLworI2RlZmluZSBVRENDU19JTlRfVFVSCSgxIDw8IDMpCS8qIFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gKi8KKyNkZWZpbmUgVURDQ1NfSU5UX1NTVAkoMSA8PCA0KQkvKiBTZW50IHN0YWxsICovCisjZGVmaW5lIFVEQ0NTX0lOVF9GU1QJKDEgPDwgNSkJLyogRm9yY2Ugc3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NfSU5UX1RTUAkoMSA8PCA3KQkvKiBUcmFuc21pdCBzaG9ydCBwYWNrZXQgKi8KKworI2RlZmluZSBVRk5SSAkJX19SRUcoMHg0MDYwMDA2MCkgIC8qIFVEQyBGcmFtZSBOdW1iZXIgUmVnaXN0ZXIgSGlnaCAqLworI2RlZmluZSBVRk5STAkJX19SRUcoMHg0MDYwMDA2NCkgIC8qIFVEQyBGcmFtZSBOdW1iZXIgUmVnaXN0ZXIgTG93ICovCisjZGVmaW5lIFVCQ1IyCQlfX1JFRygweDQwNjAwMDY4KSAgLyogVURDIEJ5dGUgQ291bnQgUmVnIDIgKi8KKyNkZWZpbmUgVUJDUjQJCV9fUkVHKDB4NDA2MDAwNmMpICAvKiBVREMgQnl0ZSBDb3VudCBSZWcgNCAqLworI2RlZmluZSBVQkNSNwkJX19SRUcoMHg0MDYwMDA3MCkgIC8qIFVEQyBCeXRlIENvdW50IFJlZyA3ICovCisjZGVmaW5lIFVCQ1I5CQlfX1JFRygweDQwNjAwMDc0KSAgLyogVURDIEJ5dGUgQ291bnQgUmVnIDkgKi8KKyNkZWZpbmUgVUJDUjEyCQlfX1JFRygweDQwNjAwMDc4KSAgLyogVURDIEJ5dGUgQ291bnQgUmVnIDEyICovCisjZGVmaW5lIFVCQ1IxNAkJX19SRUcoMHg0MDYwMDA3YykgIC8qIFVEQyBCeXRlIENvdW50IFJlZyAxNCAqLworI2RlZmluZSBVRERSMAkJX19SRUcoMHg0MDYwMDA4MCkgIC8qIFVEQyBFbmRwb2ludCAwIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjEJCV9fUkVHKDB4NDA2MDAxMDApICAvKiBVREMgRW5kcG9pbnQgMSBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFIyCQlfX1JFRygweDQwNjAwMTgwKSAgLyogVURDIEVuZHBvaW50IDIgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSMwkJX19SRUcoMHg0MDYwMDIwMCkgIC8qIFVEQyBFbmRwb2ludCAzIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjQJCV9fUkVHKDB4NDA2MDA0MDApICAvKiBVREMgRW5kcG9pbnQgNCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFI1CQlfX1JFRygweDQwNjAwMEEwKSAgLyogVURDIEVuZHBvaW50IDUgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSNgkJX19SRUcoMHg0MDYwMDYwMCkgIC8qIFVEQyBFbmRwb2ludCA2IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjcJCV9fUkVHKDB4NDA2MDA2ODApICAvKiBVREMgRW5kcG9pbnQgNyBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFVERFI4CQlfX1JFRygweDQwNjAwNzAwKSAgLyogVURDIEVuZHBvaW50IDggRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBVRERSOQkJX19SRUcoMHg0MDYwMDkwMCkgIC8qIFVEQyBFbmRwb2ludCA5IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjEwCQlfX1JFRygweDQwNjAwMEMwKSAgLyogVURDIEVuZHBvaW50IDEwIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjExCQlfX1JFRygweDQwNjAwQjAwKSAgLyogVURDIEVuZHBvaW50IDExIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjEyCQlfX1JFRygweDQwNjAwQjgwKSAgLyogVURDIEVuZHBvaW50IDEyIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjEzCQlfX1JFRygweDQwNjAwQzAwKSAgLyogVURDIEVuZHBvaW50IDEzIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjE0CQlfX1JFRygweDQwNjAwRTAwKSAgLyogVURDIEVuZHBvaW50IDE0IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUREUjE1CQlfX1JFRygweDQwNjAwMEUwKSAgLyogVURDIEVuZHBvaW50IDE1IERhdGEgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBVSUNSMAkJX19SRUcoMHg0MDYwMDA1MCkgIC8qIFVEQyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAwICovCisKKyNkZWZpbmUgVUlDUjBfSU0wCSgxIDw8IDApCS8qIEludGVycnVwdCBtYXNrIGVwIDAgKi8KKyNkZWZpbmUgVUlDUjBfSU0xCSgxIDw8IDEpCS8qIEludGVycnVwdCBtYXNrIGVwIDEgKi8KKyNkZWZpbmUgVUlDUjBfSU0yCSgxIDw8IDIpCS8qIEludGVycnVwdCBtYXNrIGVwIDIgKi8KKyNkZWZpbmUgVUlDUjBfSU0zCSgxIDw8IDMpCS8qIEludGVycnVwdCBtYXNrIGVwIDMgKi8KKyNkZWZpbmUgVUlDUjBfSU00CSgxIDw8IDQpCS8qIEludGVycnVwdCBtYXNrIGVwIDQgKi8KKyNkZWZpbmUgVUlDUjBfSU01CSgxIDw8IDUpCS8qIEludGVycnVwdCBtYXNrIGVwIDUgKi8KKyNkZWZpbmUgVUlDUjBfSU02CSgxIDw8IDYpCS8qIEludGVycnVwdCBtYXNrIGVwIDYgKi8KKyNkZWZpbmUgVUlDUjBfSU03CSgxIDw8IDcpCS8qIEludGVycnVwdCBtYXNrIGVwIDcgKi8KKworI2RlZmluZSBVSUNSMQkJX19SRUcoMHg0MDYwMDA1NCkgIC8qIFVEQyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAxICovCisKKyNkZWZpbmUgVUlDUjFfSU04CSgxIDw8IDApCS8qIEludGVycnVwdCBtYXNrIGVwIDggKi8KKyNkZWZpbmUgVUlDUjFfSU05CSgxIDw8IDEpCS8qIEludGVycnVwdCBtYXNrIGVwIDkgKi8KKyNkZWZpbmUgVUlDUjFfSU0xMAkoMSA8PCAyKQkvKiBJbnRlcnJ1cHQgbWFzayBlcCAxMCAqLworI2RlZmluZSBVSUNSMV9JTTExCSgxIDw8IDMpCS8qIEludGVycnVwdCBtYXNrIGVwIDExICovCisjZGVmaW5lIFVJQ1IxX0lNMTIJKDEgPDwgNCkJLyogSW50ZXJydXB0IG1hc2sgZXAgMTIgKi8KKyNkZWZpbmUgVUlDUjFfSU0xMwkoMSA8PCA1KQkvKiBJbnRlcnJ1cHQgbWFzayBlcCAxMyAqLworI2RlZmluZSBVSUNSMV9JTTE0CSgxIDw8IDYpCS8qIEludGVycnVwdCBtYXNrIGVwIDE0ICovCisjZGVmaW5lIFVJQ1IxX0lNMTUJKDEgPDwgNykJLyogSW50ZXJydXB0IG1hc2sgZXAgMTUgKi8KKworI2RlZmluZSBVU0lSMAkJX19SRUcoMHg0MDYwMDA1OCkgIC8qIFVEQyBTdGF0dXMgSW50ZXJydXB0IFJlZ2lzdGVyIDAgKi8KKworI2RlZmluZSBVU0lSMF9JUjAJKDEgPDwgMCkJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAwICovCisjZGVmaW5lIFVTSVIwX0lSMQkoMSA8PCAxKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDEgKi8KKyNkZWZpbmUgVVNJUjBfSVIyCSgxIDw8IDIpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMiAqLworI2RlZmluZSBVU0lSMF9JUjMJKDEgPDwgMykJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAzICovCisjZGVmaW5lIFVTSVIwX0lSNAkoMSA8PCA0KQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDQgKi8KKyNkZWZpbmUgVVNJUjBfSVI1CSgxIDw8IDUpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgNSAqLworI2RlZmluZSBVU0lSMF9JUjYJKDEgPDwgNikJLyogSW50ZXJydXAgcmVxdWVzdCBlcCA2ICovCisjZGVmaW5lIFVTSVIwX0lSNwkoMSA8PCA3KQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDcgKi8KKworI2RlZmluZSBVU0lSMQkJX19SRUcoMHg0MDYwMDA1QykgIC8qIFVEQyBTdGF0dXMgSW50ZXJydXB0IFJlZ2lzdGVyIDEgKi8KKworI2RlZmluZSBVU0lSMV9JUjgJKDEgPDwgMCkJLyogSW50ZXJydXAgcmVxdWVzdCBlcCA4ICovCisjZGVmaW5lIFVTSVIxX0lSOQkoMSA8PCAxKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDkgKi8KKyNkZWZpbmUgVVNJUjFfSVIxMAkoMSA8PCAyKQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDEwICovCisjZGVmaW5lIFVTSVIxX0lSMTEJKDEgPDwgMykJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAxMSAqLworI2RlZmluZSBVU0lSMV9JUjEyCSgxIDw8IDQpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMTIgKi8KKyNkZWZpbmUgVVNJUjFfSVIxMwkoMSA8PCA1KQkvKiBJbnRlcnJ1cCByZXF1ZXN0IGVwIDEzICovCisjZGVmaW5lIFVTSVIxX0lSMTQJKDEgPDwgNikJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAxNCAqLworI2RlZmluZSBVU0lSMV9JUjE1CSgxIDw8IDcpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMTUgKi8KKworI2VsaWYgZGVmaW5lZChDT05GSUdfUFhBMjd4KQorCisjZGVmaW5lIFVEQ0NSICAgICAgICAgICBfX1JFRygweDQwNjAwMDAwKSAvKiBVREMgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBVRENDUl9PRU4JKDEgPDwgMzEpCS8qIE9uLXRoZS1HbyBFbmFibGUgKi8KKyNkZWZpbmUgVURDQ1JfQUFMVEhOUAkoMSA8PCAzMCkJLyogQS1kZXZpY2UgQWx0ZXJuYXRlIEhvc3QgTmVnb3RpYXRpb24KKwkJCQkJICAgUHJvdG9jb2wgUG9ydCBTdXBwb3J0ICovCisjZGVmaW5lIFVEQ0NSX0FITlAJKDEgPDwgMjkpCS8qIEEtZGV2aWNlIEhvc3QgTmVnb3RpYXRpb24gUHJvdG9jb2wKKwkJCQkJICAgU3VwcG9ydCAqLworI2RlZmluZSBVRENDUl9CSE5QCSgxIDw8IDI4KQkvKiBCLWRldmljZSBIb3N0IE5lZ290aWF0aW9uIFByb3RvY29sCisJCQkJCSAgIEVuYWJsZSAqLworI2RlZmluZSBVRENDUl9EV1JFCSgxIDw8IDE2KQkvKiBEZXZpY2UgUmVtb3RlIFdha2UtdXAgRW5hYmxlICovCisjZGVmaW5lIFVEQ0NSX0FDTgkoMHgwMyA8PCAxMSkJLyogQWN0aXZlIFVEQyBjb25maWd1cmF0aW9uIE51bWJlciAqLworI2RlZmluZSBVRENDUl9BQ05fUwkxMQorI2RlZmluZSBVRENDUl9BSU4JKDB4MDcgPDwgOCkJLyogQWN0aXZlIFVEQyBpbnRlcmZhY2UgTnVtYmVyICovCisjZGVmaW5lIFVEQ0NSX0FJTl9TCTgKKyNkZWZpbmUgVURDQ1JfQUFJU04JKDB4MDcgPDwgNSkJLyogQWN0aXZlIFVEQyBBbHRlcm5hdGUgSW50ZXJmYWNlCisJCQkJCSAgIFNldHRpbmcgTnVtYmVyICovCisjZGVmaW5lIFVEQ0NSX0FBSVNOX1MJNQorI2RlZmluZSBVRENDUl9TTUFDCSgxIDw8IDQpCS8qIFN3aXRjaCBFbmRwb2ludCBNZW1vcnkgdG8gQWN0aXZlCisJCQkJCSAgIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgVURDQ1JfRU1DRQkoMSA8PCAzKQkvKiBFbmRwb2ludCBNZW1vcnkgQ29uZmlndXJhdGlvbgorCQkJCQkgICBFcnJvciAqLworI2RlZmluZSBVRENDUl9VRFIJKDEgPDwgMikJLyogVURDIFJlc3VtZSAqLworI2RlZmluZSBVRENDUl9VREEJKDEgPDwgMSkJLyogVURDIEFjdGl2ZSAqLworI2RlZmluZSBVRENDUl9VREUJKDEgPDwgMCkJLyogVURDIEVuYWJsZSAqLworCisjZGVmaW5lIFVEQ0lDUjAgICAgICAgICBfX1JFRygweDQwNjAwMDA0KSAvKiBVREMgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIwICovCisjZGVmaW5lIFVEQ0lDUjEgICAgICAgICBfX1JFRygweDQwNjAwMDA4KSAvKiBVREMgSW50ZXJydXB0IENvbnRyb2wgUmVnaXN0ZXIxICovCisjZGVmaW5lIFVEQ0lDUl9GSUZPRVJSCSgxIDw8IDEpCS8qIEZJRk8gRXJyb3IgaW50ZXJydXB0IGZvciBFUCAqLworI2RlZmluZSBVRENJQ1JfUEtUQ09NUEwgKDEgPDwgMCkJLyogUGFja2V0IENvbXBsZXRlIGludGVycnVwdCBmb3IgRVAgKi8KKworI2RlZmluZSBVRENfSU5UX0ZJRk9FUlJPUiAgKDB4MikKKyNkZWZpbmUgVURDX0lOVF9QQUNLRVRDTVAgICgweDEpCisKKyNkZWZpbmUgVURDSUNSX0lOVChuLGludHIpICgoKGludHIpICYgMHgwMykgPDwgKCgobikgJiAweDBGKSAqIDIpKQorI2RlZmluZSBVRENJQ1IxX0lFQ0MJKDEgPDwgMzEpCS8qIEludEVuIC0gQ29uZmlndXJhdGlvbiBDaGFuZ2UgKi8KKyNkZWZpbmUgVURDSUNSMV9JRVNPRgkoMSA8PCAzMCkJLyogSW50RW4gLSBTdGFydCBvZiBGcmFtZSAqLworI2RlZmluZSBVRENJQ1IxX0lFUlUJKDEgPDwgMjkpCS8qIEludEVuIC0gUmVzdW1lICovCisjZGVmaW5lIFVEQ0lDUjFfSUVTVQkoMSA8PCAyOCkJLyogSW50RW4gLSBTdXNwZW5kICovCisjZGVmaW5lIFVEQ0lDUjFfSUVSUwkoMSA8PCAyNykJLyogSW50RW4gLSBSZXNldCAqLworCisjZGVmaW5lIFVEQ0lTUjAgICAgICAgICBfX1JFRygweDQwNjAwMDBDKSAvKiBVREMgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAwICovCisjZGVmaW5lIFVEQ0lTUjEgICAgICAgICBfX1JFRygweDQwNjAwMDEwKSAvKiBVREMgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAxICovCisjZGVmaW5lIFVEQ0lTUl9JTlQobixpbnRyKSAoKChpbnRyKSAmIDB4MDMpIDw8ICgoKG4pICYgMHgwRikgKiAyKSkKKyNkZWZpbmUgVURDSVNSMV9JRUNDCSgxIDw8IDMxKQkvKiBJbnRFbiAtIENvbmZpZ3VyYXRpb24gQ2hhbmdlICovCisjZGVmaW5lIFVEQ0lTUjFfSUVTT0YJKDEgPDwgMzApCS8qIEludEVuIC0gU3RhcnQgb2YgRnJhbWUgKi8KKyNkZWZpbmUgVURDSVNSMV9JRVJVCSgxIDw8IDI5KQkvKiBJbnRFbiAtIFJlc3VtZSAqLworI2RlZmluZSBVRENJU1IxX0lFU1UJKDEgPDwgMjgpCS8qIEludEVuIC0gU3VzcGVuZCAqLworI2RlZmluZSBVRENJU1IxX0lFUlMJKDEgPDwgMjcpCS8qIEludEVuIC0gUmVzZXQgKi8KKworCisjZGVmaW5lIFVEQ0ZOUiAgICAgICAgICBfX1JFRygweDQwNjAwMDE0KSAvKiBVREMgRnJhbWUgTnVtYmVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFVEQ09UR0lDUglfX1JFRygweDQwNjAwMDE4KSAvKiBVREMgT24tVGhlLUdvIGludGVycnVwdCBjb250cm9sICovCisjZGVmaW5lIFVEQ09UR0lDUl9JRVNGCSgxIDw8IDI0KQkvKiBPVEcgU0VUX0ZFQVRVUkUgY29tbWFuZCByZWN2ZCAqLworI2RlZmluZSBVRENPVEdJQ1JfSUVYUgkoMSA8PCAxNykJLyogRXh0cmEgVHJhbnNjaWV2ZXIgSW50ZXJydXB0CisJCQkJCSAgIFJpc2luZyBFZGdlIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFWEYJKDEgPDwgMTYpCS8qIEV4dHJhIFRyYW5zY2lldmVyIEludGVycnVwdAorCQkJCQkgICBGYWxsaW5nIEVkZ2UgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBVRENPVEdJQ1JfSUVWVjQwUiAoMSA8PCA5KQkvKiBPVEcgVmJ1cyBWYWxpZCA0LjBWIFJpc2luZyBFZGdlCisJCQkJCSAgIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFVlY0MEYgKDEgPDwgOCkJLyogT1RHIFZidXMgVmFsaWQgNC4wViBGYWxsaW5nIEVkZ2UKKwkJCQkJICAgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBVRENPVEdJQ1JfSUVWVjQ0UiAoMSA8PCA3KQkvKiBPVEcgVmJ1cyBWYWxpZCA0LjRWIFJpc2luZyBFZGdlCisJCQkJCSAgIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFVlY0NEYgKDEgPDwgNikJLyogT1RHIFZidXMgVmFsaWQgNC40ViBGYWxsaW5nIEVkZ2UKKwkJCQkJICAgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBVRENPVEdJQ1JfSUVTVlIJKDEgPDwgNSkJLyogT1RHIFNlc3Npb24gVmFsaWQgUmlzaW5nIEVkZ2UKKwkJCQkJICAgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBVRENPVEdJQ1JfSUVTVkYJKDEgPDwgNCkJLyogT1RHIFNlc3Npb24gVmFsaWQgRmFsbGluZyBFZGdlCisJCQkJCSAgIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFU0RSCSgxIDw8IDMpCS8qIE9URyBBLURldmljZSBTUlAgRGV0ZWN0IFJpc2luZworCQkJCQkgICBFZGdlIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFU0RGCSgxIDw8IDIpCS8qIE9URyBBLURldmljZSBTUlAgRGV0ZWN0IEZhbGxpbmcKKwkJCQkJICAgRWRnZSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIFVEQ09UR0lDUl9JRUlEUgkoMSA8PCAxKQkvKiBPVEcgSUQgQ2hhbmdlIFJpc2luZyBFZGdlCisJCQkJCSAgIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgVURDT1RHSUNSX0lFSURGCSgxIDw8IDApCS8qIE9URyBJRCBDaGFuZ2UgRmFsbGluZyBFZGdlCisJCQkJCSAgIEludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBVRENDU04oeCkJX19SRUcyKDB4NDA2MDAxMDAsICh4KSA8PCAyKQorI2RlZmluZSBVRENDU1IwICAgICAgICAgX19SRUcoMHg0MDYwMDEwMCkgLyogVURDIENvbnRyb2wvU3RhdHVzIHJlZ2lzdGVyIC0gRW5kcG9pbnQgMCAqLworI2RlZmluZSBVRENDU1IwX1NBCSgxIDw8IDcpCS8qIFNldHVwIEFjdGl2ZSAqLworI2RlZmluZSBVRENDU1IwX1JORQkoMSA8PCA2KQkvKiBSZWNlaXZlIEZJRk8gTm90IEVtcHR5ICovCisjZGVmaW5lIFVEQ0NTUjBfRlNUCSgxIDw8IDUpCS8qIEZvcmNlIFN0YWxsICovCisjZGVmaW5lIFVEQ0NTUjBfU1NUCSgxIDw8IDQpCS8qIFNlbnQgU3RhbGwgKi8KKyNkZWZpbmUgVURDQ1NSMF9ETUUJKDEgPDwgMykJLyogRE1BIEVuYWJsZSAqLworI2RlZmluZSBVRENDU1IwX0ZURgkoMSA8PCAyKQkvKiBGbHVzaCBUcmFuc21pdCBGSUZPICovCisjZGVmaW5lIFVEQ0NTUjBfSVBSCSgxIDw8IDEpCS8qIElOIFBhY2tldCBSZWFkeSAqLworI2RlZmluZSBVRENDU1IwX09QQwkoMSA8PCAwKQkvKiBPVVQgUGFja2V0IENvbXBsZXRlICovCisKKyNkZWZpbmUgVURDQ1NSQSAgICAgICAgIF9fUkVHKDB4NDA2MDAxMDQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEEgKi8KKyNkZWZpbmUgVURDQ1NSQiAgICAgICAgIF9fUkVHKDB4NDA2MDAxMDgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEIgKi8KKyNkZWZpbmUgVURDQ1NSQyAgICAgICAgIF9fUkVHKDB4NDA2MDAxMEMpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEMgKi8KKyNkZWZpbmUgVURDQ1NSRCAgICAgICAgIF9fUkVHKDB4NDA2MDAxMTApIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEQgKi8KKyNkZWZpbmUgVURDQ1NSRSAgICAgICAgIF9fUkVHKDB4NDA2MDAxMTQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEUgKi8KKyNkZWZpbmUgVURDQ1NSRiAgICAgICAgIF9fUkVHKDB4NDA2MDAxMTgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEYgKi8KKyNkZWZpbmUgVURDQ1NSRyAgICAgICAgIF9fUkVHKDB4NDA2MDAxMUMpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEcgKi8KKyNkZWZpbmUgVURDQ1NSSCAgICAgICAgIF9fUkVHKDB4NDA2MDAxMjApIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEggKi8KKyNkZWZpbmUgVURDQ1NSSSAgICAgICAgIF9fUkVHKDB4NDA2MDAxMjQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEkgKi8KKyNkZWZpbmUgVURDQ1NSSiAgICAgICAgIF9fUkVHKDB4NDA2MDAxMjgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEogKi8KKyNkZWZpbmUgVURDQ1NSSyAgICAgICAgIF9fUkVHKDB4NDA2MDAxMkMpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEsgKi8KKyNkZWZpbmUgVURDQ1NSTCAgICAgICAgIF9fUkVHKDB4NDA2MDAxMzApIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IEwgKi8KKyNkZWZpbmUgVURDQ1NSTSAgICAgICAgIF9fUkVHKDB4NDA2MDAxMzQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IE0gKi8KKyNkZWZpbmUgVURDQ1NSTiAgICAgICAgIF9fUkVHKDB4NDA2MDAxMzgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IE4gKi8KKyNkZWZpbmUgVURDQ1NSUCAgICAgICAgIF9fUkVHKDB4NDA2MDAxM0MpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFAgKi8KKyNkZWZpbmUgVURDQ1NSUSAgICAgICAgIF9fUkVHKDB4NDA2MDAxNDApIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFEgKi8KKyNkZWZpbmUgVURDQ1NSUiAgICAgICAgIF9fUkVHKDB4NDA2MDAxNDQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFIgKi8KKyNkZWZpbmUgVURDQ1NSUyAgICAgICAgIF9fUkVHKDB4NDA2MDAxNDgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFMgKi8KKyNkZWZpbmUgVURDQ1NSVCAgICAgICAgIF9fUkVHKDB4NDA2MDAxNEMpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFQgKi8KKyNkZWZpbmUgVURDQ1NSVSAgICAgICAgIF9fUkVHKDB4NDA2MDAxNTApIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFUgKi8KKyNkZWZpbmUgVURDQ1NSViAgICAgICAgIF9fUkVHKDB4NDA2MDAxNTQpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFYgKi8KKyNkZWZpbmUgVURDQ1NSVyAgICAgICAgIF9fUkVHKDB4NDA2MDAxNTgpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFcgKi8KKyNkZWZpbmUgVURDQ1NSWCAgICAgICAgIF9fUkVHKDB4NDA2MDAxNUMpIC8qIFVEQyBDb250cm9sL1N0YXR1cyByZWdpc3RlciAtIEVuZHBvaW50IFggKi8KKworI2RlZmluZSBVRENDU1JfRFBFCSgxIDw8IDkpCS8qIERhdGEgUGFja2V0IEVycm9yICovCisjZGVmaW5lIFVEQ0NTUl9GRUYJKDEgPDwgOCkJLyogRmx1c2ggRW5kcG9pbnQgRklGTyAqLworI2RlZmluZSBVRENDU1JfU1AJKDEgPDwgNykJLyogU2hvcnQgUGFja2V0IENvbnRyb2wvU3RhdHVzICovCisjZGVmaW5lIFVEQ0NTUl9CTkUJKDEgPDwgNikJLyogQnVmZmVyIE5vdCBFbXB0eSAoSU4gZW5kcG9pbnRzKSAqLworI2RlZmluZSBVRENDU1JfQk5GCSgxIDw8IDYpCS8qIEJ1ZmZlciBOb3QgRnVsbCAoT1VUIGVuZHBvaW50cykgKi8KKyNkZWZpbmUgVURDQ1NSX0ZTVAkoMSA8PCA1KQkvKiBGb3JjZSBTVEFMTCAqLworI2RlZmluZSBVRENDU1JfU1NUCSgxIDw8IDQpCS8qIFNlbnQgU1RBTEwgKi8KKyNkZWZpbmUgVURDQ1NSX0RNRQkoMSA8PCAzKQkvKiBETUEgRW5hYmxlICovCisjZGVmaW5lIFVEQ0NTUl9UUk4JKDEgPDwgMikJLyogVHgvUnggTkFLICovCisjZGVmaW5lIFVEQ0NTUl9QQwkoMSA8PCAxKQkvKiBQYWNrZXQgQ29tcGxldGUgKi8KKyNkZWZpbmUgVURDQ1NSX0ZTCSgxIDw8IDApCS8qIEZJRk8gbmVlZHMgc2VydmljZSAqLworCisjZGVmaW5lIFVEQ0JDTih4KQlfX1JFRzIoMHg0MDYwMDIwMCwgKHgpPDwyKQorI2RlZmluZSBVRENCQ1IwICAgICAgICAgX19SRUcoMHg0MDYwMDIwMCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQMCAqLworI2RlZmluZSBVRENCQ1JBICAgICAgICAgX19SRUcoMHg0MDYwMDIwNCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQQSAqLworI2RlZmluZSBVRENCQ1JCICAgICAgICAgX19SRUcoMHg0MDYwMDIwOCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQQiAqLworI2RlZmluZSBVRENCQ1JDICAgICAgICAgX19SRUcoMHg0MDYwMDIwQykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQQyAqLworI2RlZmluZSBVRENCQ1JEICAgICAgICAgX19SRUcoMHg0MDYwMDIxMCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQRCAqLworI2RlZmluZSBVRENCQ1JFICAgICAgICAgX19SRUcoMHg0MDYwMDIxNCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQRSAqLworI2RlZmluZSBVRENCQ1JGICAgICAgICAgX19SRUcoMHg0MDYwMDIxOCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQRiAqLworI2RlZmluZSBVRENCQ1JHICAgICAgICAgX19SRUcoMHg0MDYwMDIxQykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQRyAqLworI2RlZmluZSBVRENCQ1JIICAgICAgICAgX19SRUcoMHg0MDYwMDIyMCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQSCAqLworI2RlZmluZSBVRENCQ1JJICAgICAgICAgX19SRUcoMHg0MDYwMDIyNCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQSSAqLworI2RlZmluZSBVRENCQ1JKICAgICAgICAgX19SRUcoMHg0MDYwMDIyOCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQSiAqLworI2RlZmluZSBVRENCQ1JLICAgICAgICAgX19SRUcoMHg0MDYwMDIyQykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQSyAqLworI2RlZmluZSBVRENCQ1JMICAgICAgICAgX19SRUcoMHg0MDYwMDIzMCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQTCAqLworI2RlZmluZSBVRENCQ1JNICAgICAgICAgX19SRUcoMHg0MDYwMDIzNCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQTSAqLworI2RlZmluZSBVRENCQ1JOICAgICAgICAgX19SRUcoMHg0MDYwMDIzOCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQTiAqLworI2RlZmluZSBVRENCQ1JQICAgICAgICAgX19SRUcoMHg0MDYwMDIzQykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQUCAqLworI2RlZmluZSBVRENCQ1JRICAgICAgICAgX19SRUcoMHg0MDYwMDI0MCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQUSAqLworI2RlZmluZSBVRENCQ1JSICAgICAgICAgX19SRUcoMHg0MDYwMDI0NCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQUiAqLworI2RlZmluZSBVRENCQ1JTICAgICAgICAgX19SRUcoMHg0MDYwMDI0OCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQUyAqLworI2RlZmluZSBVRENCQ1JUICAgICAgICAgX19SRUcoMHg0MDYwMDI0QykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQVCAqLworI2RlZmluZSBVRENCQ1JVICAgICAgICAgX19SRUcoMHg0MDYwMDI1MCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQVSAqLworI2RlZmluZSBVRENCQ1JWICAgICAgICAgX19SRUcoMHg0MDYwMDI1NCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQViAqLworI2RlZmluZSBVRENCQ1JXICAgICAgICAgX19SRUcoMHg0MDYwMDI1OCkgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQVyAqLworI2RlZmluZSBVRENCQ1JYICAgICAgICAgX19SRUcoMHg0MDYwMDI1QykgLyogQnl0ZSBDb3VudCBSZWdpc3RlciAtIEVQWCAqLworCisjZGVmaW5lIFVEQ0ROKHgpCV9fUkVHMigweDQwNjAwMzAwLCAoeCk8PDIpCisjZGVmaW5lIFBIWVNfVURDRE4oeCkJKDB4NDA2MDAzMDAgKyAoKHgpPDwyKSkKKyNkZWZpbmUgUFVEQ0ROKHgpCSh2b2xhdGlsZSB1MzIgKikoaW9fcDJ2KFBIWVNfVURDRE4oKHgpKSkpCisjZGVmaW5lIFVEQ0RSMCAgICAgICAgICBfX1JFRygweDQwNjAwMzAwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVAwICovCisjZGVmaW5lIFVEQ0RSQSAgICAgICAgICBfX1JFRygweDQwNjAwMzA0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBBICovCisjZGVmaW5lIFVEQ0RSQiAgICAgICAgICBfX1JFRygweDQwNjAwMzA4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBCICovCisjZGVmaW5lIFVEQ0RSQyAgICAgICAgICBfX1JFRygweDQwNjAwMzBDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBDICovCisjZGVmaW5lIFVEQ0RSRCAgICAgICAgICBfX1JFRygweDQwNjAwMzEwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBEICovCisjZGVmaW5lIFVEQ0RSRSAgICAgICAgICBfX1JFRygweDQwNjAwMzE0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBFICovCisjZGVmaW5lIFVEQ0RSRiAgICAgICAgICBfX1JFRygweDQwNjAwMzE4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBGICovCisjZGVmaW5lIFVEQ0RSRyAgICAgICAgICBfX1JFRygweDQwNjAwMzFDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBHICovCisjZGVmaW5lIFVEQ0RSSCAgICAgICAgICBfX1JFRygweDQwNjAwMzIwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBIICovCisjZGVmaW5lIFVEQ0RSSSAgICAgICAgICBfX1JFRygweDQwNjAwMzI0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBJICovCisjZGVmaW5lIFVEQ0RSSiAgICAgICAgICBfX1JFRygweDQwNjAwMzI4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBKICovCisjZGVmaW5lIFVEQ0RSSyAgICAgICAgICBfX1JFRygweDQwNjAwMzJDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBLICovCisjZGVmaW5lIFVEQ0RSTCAgICAgICAgICBfX1JFRygweDQwNjAwMzMwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBMICovCisjZGVmaW5lIFVEQ0RSTSAgICAgICAgICBfX1JFRygweDQwNjAwMzM0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBNICovCisjZGVmaW5lIFVEQ0RSTiAgICAgICAgICBfX1JFRygweDQwNjAwMzM4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBOICovCisjZGVmaW5lIFVEQ0RSUCAgICAgICAgICBfX1JFRygweDQwNjAwMzNDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBQICovCisjZGVmaW5lIFVEQ0RSUSAgICAgICAgICBfX1JFRygweDQwNjAwMzQwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBRICovCisjZGVmaW5lIFVEQ0RSUiAgICAgICAgICBfX1JFRygweDQwNjAwMzQ0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBSICovCisjZGVmaW5lIFVEQ0RSUyAgICAgICAgICBfX1JFRygweDQwNjAwMzQ4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBTICovCisjZGVmaW5lIFVEQ0RSVCAgICAgICAgICBfX1JFRygweDQwNjAwMzRDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBUICovCisjZGVmaW5lIFVEQ0RSVSAgICAgICAgICBfX1JFRygweDQwNjAwMzUwKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBVICovCisjZGVmaW5lIFVEQ0RSViAgICAgICAgICBfX1JFRygweDQwNjAwMzU0KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBWICovCisjZGVmaW5lIFVEQ0RSVyAgICAgICAgICBfX1JFRygweDQwNjAwMzU4KSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBXICovCisjZGVmaW5lIFVEQ0RSWCAgICAgICAgICBfX1JFRygweDQwNjAwMzVDKSAvKiBEYXRhIFJlZ2lzdGVyIC0gRVBYICovCisKKyNkZWZpbmUgVURDQ04oeCkgICAgICAgX19SRUcyKDB4NDA2MDA0MDAsICh4KTw8MikKKyNkZWZpbmUgVURDQ1JBICAgICAgICAgIF9fUkVHKDB4NDA2MDA0MDQpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBBICovCisjZGVmaW5lIFVEQ0NSQiAgICAgICAgICBfX1JFRygweDQwNjAwNDA4KSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQQiAqLworI2RlZmluZSBVRENDUkMgICAgICAgICAgX19SRUcoMHg0MDYwMDQwQykgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUEMgKi8KKyNkZWZpbmUgVURDQ1JEICAgICAgICAgIF9fUkVHKDB4NDA2MDA0MTApIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBEICovCisjZGVmaW5lIFVEQ0NSRSAgICAgICAgICBfX1JFRygweDQwNjAwNDE0KSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQRSAqLworI2RlZmluZSBVRENDUkYgICAgICAgICAgX19SRUcoMHg0MDYwMDQxOCkgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUEYgKi8KKyNkZWZpbmUgVURDQ1JHICAgICAgICAgIF9fUkVHKDB4NDA2MDA0MUMpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBHICovCisjZGVmaW5lIFVEQ0NSSCAgICAgICAgICBfX1JFRygweDQwNjAwNDIwKSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQSCAqLworI2RlZmluZSBVRENDUkkgICAgICAgICAgX19SRUcoMHg0MDYwMDQyNCkgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUEkgKi8KKyNkZWZpbmUgVURDQ1JKICAgICAgICAgIF9fUkVHKDB4NDA2MDA0MjgpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBKICovCisjZGVmaW5lIFVEQ0NSSyAgICAgICAgICBfX1JFRygweDQwNjAwNDJDKSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQSyAqLworI2RlZmluZSBVRENDUkwgICAgICAgICAgX19SRUcoMHg0MDYwMDQzMCkgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUEwgKi8KKyNkZWZpbmUgVURDQ1JNICAgICAgICAgIF9fUkVHKDB4NDA2MDA0MzQpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBNICovCisjZGVmaW5lIFVEQ0NSTiAgICAgICAgICBfX1JFRygweDQwNjAwNDM4KSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQTiAqLworI2RlZmluZSBVRENDUlAgICAgICAgICAgX19SRUcoMHg0MDYwMDQzQykgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUFAgKi8KKyNkZWZpbmUgVURDQ1JRICAgICAgICAgIF9fUkVHKDB4NDA2MDA0NDApIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBRICovCisjZGVmaW5lIFVEQ0NSUiAgICAgICAgICBfX1JFRygweDQwNjAwNDQ0KSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQUiAqLworI2RlZmluZSBVRENDUlMgICAgICAgICAgX19SRUcoMHg0MDYwMDQ0OCkgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUFMgKi8KKyNkZWZpbmUgVURDQ1JUICAgICAgICAgIF9fUkVHKDB4NDA2MDA0NEMpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBUICovCisjZGVmaW5lIFVEQ0NSVSAgICAgICAgICBfX1JFRygweDQwNjAwNDUwKSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQVSAqLworI2RlZmluZSBVRENDUlYgICAgICAgICAgX19SRUcoMHg0MDYwMDQ1NCkgLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciBFUFYgKi8KKyNkZWZpbmUgVURDQ1JXICAgICAgICAgIF9fUkVHKDB4NDA2MDA0NTgpIC8qIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgRVBXICovCisjZGVmaW5lIFVEQ0NSWCAgICAgICAgICBfX1JFRygweDQwNjAwNDVDKSAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIEVQWCAqLworCisjZGVmaW5lIFVEQ0NPTlJfQ04JKDB4MDMgPDwgMjUpCS8qIENvbmZpZ3VyYXRpb24gTnVtYmVyICovCisjZGVmaW5lIFVEQ0NPTlJfQ05fUwkoMjUpCisjZGVmaW5lIFVEQ0NPTlJfSU4JKDB4MDcgPDwgMjIpCS8qIEludGVyZmFjZSBOdW1iZXIgKi8KKyNkZWZpbmUgVURDQ09OUl9JTl9TCSgyMikKKyNkZWZpbmUgVURDQ09OUl9BSVNOCSgweDA3IDw8IDE5KQkvKiBBbHRlcm5hdGUgSW50ZXJmYWNlIE51bWJlciAqLworI2RlZmluZSBVRENDT05SX0FJU05fUwkoMTkpCisjZGVmaW5lIFVEQ0NPTlJfRU4JKDB4MGYgPDwgMTUpCS8qIEVuZHBvaW50IE51bWJlciAqLworI2RlZmluZSBVRENDT05SX0VOX1MJKDE1KQorI2RlZmluZSBVRENDT05SX0VUCSgweDAzIDw8IDEzKQkvKiBFbmRwb2ludCBUeXBlOiAqLworI2RlZmluZSBVRENDT05SX0VUX1MJKDEzKQorI2RlZmluZSBVRENDT05SX0VUX0lOVAkoMHgwMyA8PCAxMykJLyogICBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgVURDQ09OUl9FVF9CVUxLCSgweDAyIDw8IDEzKQkvKiAgIEJ1bGsgKi8KKyNkZWZpbmUgVURDQ09OUl9FVF9JU08JKDB4MDEgPDwgMTMpCS8qICAgSXNvY2hyb25vdXMgKi8KKyNkZWZpbmUgVURDQ09OUl9FVF9OVQkoMHgwMCA8PCAxMykJLyogICBOb3QgdXNlZCAqLworI2RlZmluZSBVRENDT05SX0VECSgxIDw8IDEyKQkvKiBFbmRwb2ludCBEaXJlY3Rpb24gKi8KKyNkZWZpbmUgVURDQ09OUl9NUFMJKDB4M2ZmIDw8IDIpCS8qIE1heGltdW0gUGFja2V0IFNpemUgKi8KKyNkZWZpbmUgVURDQ09OUl9NUFNfUwkoMikKKyNkZWZpbmUgVURDQ09OUl9ERQkoMSA8PCAxKQkvKiBEb3VibGUgQnVmZmVyaW5nIEVuYWJsZSAqLworI2RlZmluZSBVRENDT05SX0VFCSgxIDw8IDApCS8qIEVuZHBvaW50IEVuYWJsZSAqLworCisKKyNkZWZpbmUgVURDX0lOVF9GSUZPRVJST1IgICgweDIpCisjZGVmaW5lIFVEQ19JTlRfUEFDS0VUQ01QICAoMHgxKQorCisjZGVmaW5lIFVEQ19GTlJfTUFTSyAgICAgKDB4N2ZmKQorCisjZGVmaW5lIFVEQ0NTUl9XUl9NQVNLICAgKFVEQ0NTUl9ETUV8VURDQ1NSX0ZTVCkKKyNkZWZpbmUgVURDX0JDUl9NQVNLICAgICgweDNmZikKKyNlbmRpZgorCisvKgorICogRmFzdCBJbmZyYXJlZCBDb21tdW5pY2F0aW9uIFBvcnQKKyAqLworCisjZGVmaW5lIEZJQ1AJCV9fUkVHKDB4NDA4MDAwMDApICAvKiBTdGFydCBvZiBGSUNQIGFyZWEgKi8KKyNkZWZpbmUgSUNDUjAJCV9fUkVHKDB4NDA4MDAwMDApICAvKiBJQ1AgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIElDQ1IxCQlfX1JFRygweDQwODAwMDA0KSAgLyogSUNQIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBJQ0NSMgkJX19SRUcoMHg0MDgwMDAwOCkgIC8qIElDUCBDb250cm9sIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgSUNEUgkJX19SRUcoMHg0MDgwMDAwYykgIC8qIElDUCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIElDU1IwCQlfX1JFRygweDQwODAwMDE0KSAgLyogSUNQIFN0YXR1cyBSZWdpc3RlciAwICovCisjZGVmaW5lIElDU1IxCQlfX1JFRygweDQwODAwMDE4KSAgLyogSUNQIFN0YXR1cyBSZWdpc3RlciAxICovCisKKyNkZWZpbmUgSUNDUjBfQU1FCSgxIDw8IDcpCS8qIEFkcmVzcyBtYXRjaCBlbmFibGUgKi8KKyNkZWZpbmUgSUNDUjBfVElFCSgxIDw8IDYpCS8qIFRyYW5zbWl0IEZJRk8gaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSBJQ0NSMF9SSUUJKDEgPDwgNSkJLyogUmVjaWV2ZSBGSUZPIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgSUNDUjBfUlhFCSgxIDw8IDQpCS8qIFJlY2VpdmUgZW5hYmxlICovCisjZGVmaW5lIElDQ1IwX1RYRQkoMSA8PCAzKQkvKiBUcmFuc21pdCBlbmFibGUgKi8KKyNkZWZpbmUgSUNDUjBfVFVTCSgxIDw8IDIpCS8qIFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gc2VsZWN0ICovCisjZGVmaW5lIElDQ1IwX0xCTQkoMSA8PCAxKQkvKiBMb29wYmFjayBtb2RlICovCisjZGVmaW5lIElDQ1IwX0lUUgkoMSA8PCAwKQkvKiBJckRBIHRyYW5zbWlzc2lvbiAqLworCisjaWZkZWYgQ09ORklHX1BYQTI3eAorI2RlZmluZSBJQ0NSMl9SWFAgICAgICAgKDEgPDwgMykJLyogUmVjZWl2ZSBQaW4gUG9sYXJpdHkgc2VsZWN0ICovCisjZGVmaW5lIElDQ1IyX1RYUCAgICAgICAoMSA8PCAyKQkvKiBUcmFuc21pdCBQaW4gUG9sYXJpdHkgc2VsZWN0ICovCisjZGVmaW5lIElDQ1IyX1RSSUcJKDMgPDwgMCkJLyogUmVjZWl2ZSBGSUZPIFRyaWdnZXIgdGhyZXNob2xkICovCisjZGVmaW5lIElDQ1IyX1RSSUdfOCAgICAoMCA8PCAwKQkvKiAJPj0gOCBieXRlcyAqLworI2RlZmluZSBJQ0NSMl9UUklHXzE2ICAgKDEgPDwgMCkJLyoJPj0gMTYgYnl0ZXMgKi8KKyNkZWZpbmUgSUNDUjJfVFJJR18zMiAgICgyIDw8IDApCS8qCT49IDMyIGJ5dGVzICovCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QWEEyN3gKKyNkZWZpbmUgSUNTUjBfRU9DCSgxIDw8IDYpCS8qIERNQSBFbmQgb2YgRGVzY3JpcHRvciBDaGFpbiAqLworI2VuZGlmCisjZGVmaW5lIElDU1IwX0ZSRQkoMSA8PCA1KQkvKiBGcmFtaW5nIGVycm9yICovCisjZGVmaW5lIElDU1IwX1JGUwkoMSA8PCA0KQkvKiBSZWNlaXZlIEZJRk8gc2VydmljZSByZXF1ZXN0ICovCisjZGVmaW5lIElDU1IwX1RGUwkoMSA8PCAzKQkvKiBUcmFuc25pdCBGSUZPIHNlcnZpY2UgcmVxdWVzdCAqLworI2RlZmluZSBJQ1NSMF9SQUIJKDEgPDwgMikJLyogUmVjZWl2ZXIgYWJvcnQgKi8KKyNkZWZpbmUgSUNTUjBfVFVSCSgxIDw8IDEpCS8qIFRydW5zbWl0IEZJRk8gdW5kZXJ1biAqLworI2RlZmluZSBJQ1NSMF9FSUYJKDEgPDwgMCkJLyogRW5kL0Vycm9yIGluIEZJRk8gKi8KKworI2RlZmluZSBJQ1NSMV9ST1IJKDEgPDwgNikJLyogUmVjZWl2ZXIgRklGTyB1bmRlcnJ1biAgKi8KKyNkZWZpbmUgSUNTUjFfQ1JFCSgxIDw8IDUpCS8qIENSQyBlcnJvciAqLworI2RlZmluZSBJQ1NSMV9FT0YJKDEgPDwgNCkJLyogRW5kIG9mIGZyYW1lICovCisjZGVmaW5lIElDU1IxX1RORgkoMSA8PCAzKQkvKiBUcmFuc21pdCBGSUZPIG5vdCBmdWxsICovCisjZGVmaW5lIElDU1IxX1JORQkoMSA8PCAyKQkvKiBSZWNlaXZlIEZJRk8gbm90IGVtcHR5ICovCisjZGVmaW5lIElDU1IxX1RCWQkoMSA8PCAxKQkvKiBUcmFtc21pdGVyIGJ1c3kgZmxhZyAqLworI2RlZmluZSBJQ1NSMV9SU1kJKDEgPDwgMCkJLyogUmVjZXZpZXIgc3luY2hyb25pemVkIGZsYWcgKi8KKworCisvKgorICogUmVhbCBUaW1lIENsb2NrCisgKi8KKworI2RlZmluZSBSQ05SCQlfX1JFRygweDQwOTAwMDAwKSAgLyogUlRDIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIFJUQVIJCV9fUkVHKDB4NDA5MDAwMDQpICAvKiBSVEMgQWxhcm0gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUlRTUgkJX19SRUcoMHg0MDkwMDAwOCkgIC8qIFJUQyBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUlRUUgkJX19SRUcoMHg0MDkwMDAwQykgIC8qIFJUQyBUaW1lciBUcmltIFJlZ2lzdGVyICovCisjZGVmaW5lIFBJQVIJCV9fUkVHKDB4NDA5MDAwMzgpICAvKiBQZXJpb2RpYyBJbnRlcnJ1cHQgQWxhcm0gUmVnaXN0ZXIgKi8KKworI2RlZmluZSBSVFNSX1BJQ0UJKDEgPDwgMTUpCS8qIFBlcmlvZGljIGludGVycnVwdCBjb3VudCBlbmFibGUgKi8KKyNkZWZpbmUgUlRTUl9QSUFMRQkoMSA8PCAxNCkJLyogUGVyaW9kaWMgaW50ZXJydXB0IEFsYXJtIGVuYWJsZSAqLworI2RlZmluZSBSVFNSX0haRQkoMSA8PCAzKQkvKiBIWiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIFJUU1JfQUxFCSgxIDw8IDIpCS8qIFJUQyBhbGFybSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIFJUU1JfSFoJCSgxIDw8IDEpCS8qIEhaIHJpc2luZy1lZGdlIGRldGVjdGVkICovCisjZGVmaW5lIFJUU1JfQUwJCSgxIDw8IDApCS8qIFJUQyBhbGFybSBkZXRlY3RlZCAqLworCisKKy8qCisgKiBPUyBUaW1lciAmIE1hdGNoIFJlZ2lzdGVycworICovCisKKyNkZWZpbmUgT1NNUjAJCV9fUkVHKDB4NDBBMDAwMDApICAvKiAqLworI2RlZmluZSBPU01SMQkJX19SRUcoMHg0MEEwMDAwNCkgIC8qICovCisjZGVmaW5lIE9TTVIyCQlfX1JFRygweDQwQTAwMDA4KSAgLyogKi8KKyNkZWZpbmUgT1NNUjMJCV9fUkVHKDB4NDBBMDAwMEMpICAvKiAqLworI2RlZmluZSBPU01SNAkJX19SRUcoMHg0MEEwMDA4MCkgIC8qICovCisjZGVmaW5lIE9TQ1IJCV9fUkVHKDB4NDBBMDAwMTApICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIE9TQ1I0CQlfX1JFRygweDQwQTAwMDQwKSAgLyogT1MgVGltZXIgQ291bnRlciBSZWdpc3RlciAqLworI2RlZmluZSBPTUNSNAkJX19SRUcoMHg0MEEwMDBDMCkgIC8qICovCisjZGVmaW5lIE9TU1IJCV9fUkVHKDB4NDBBMDAwMTQpICAvKiBPUyBUaW1lciBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgT1dFUgkJX19SRUcoMHg0MEEwMDAxOCkgIC8qIE9TIFRpbWVyIFdhdGNoZG9nIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBPSUVSCQlfX1JFRygweDQwQTAwMDFDKSAgLyogT1MgVGltZXIgSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLworCisjZGVmaW5lIE9TU1JfTTMJCSgxIDw8IDMpCS8qIE1hdGNoIHN0YXR1cyBjaGFubmVsIDMgKi8KKyNkZWZpbmUgT1NTUl9NMgkJKDEgPDwgMikJLyogTWF0Y2ggc3RhdHVzIGNoYW5uZWwgMiAqLworI2RlZmluZSBPU1NSX00xCQkoMSA8PCAxKQkvKiBNYXRjaCBzdGF0dXMgY2hhbm5lbCAxICovCisjZGVmaW5lIE9TU1JfTTAJCSgxIDw8IDApCS8qIE1hdGNoIHN0YXR1cyBjaGFubmVsIDAgKi8KKworI2RlZmluZSBPV0VSX1dNRQkoMSA8PCAwKQkvKiBXYXRjaGRvZyBNYXRjaCBFbmFibGUgKi8KKworI2RlZmluZSBPSUVSX0UzCQkoMSA8PCAzKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMyAqLworI2RlZmluZSBPSUVSX0UyCQkoMSA8PCAyKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMiAqLworI2RlZmluZSBPSUVSX0UxCQkoMSA8PCAxKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMSAqLworI2RlZmluZSBPSUVSX0UwCQkoMSA8PCAwKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMCAqLworCisKKy8qCisgKiBQdWxzZSBXaWR0aCBNb2R1bGF0b3IKKyAqLworCisjZGVmaW5lIFBXTV9DVFJMMAlfX1JFRygweDQwQjAwMDAwKSAgLyogUFdNIDAgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBQV01fUFdEVVRZMAlfX1JFRygweDQwQjAwMDA0KSAgLyogUFdNIDAgRHV0eSBDeWNsZSBSZWdpc3RlciAqLworI2RlZmluZSBQV01fUEVSVkFMMAlfX1JFRygweDQwQjAwMDA4KSAgLyogUFdNIDAgUGVyaW9kIENvbnRyb2wgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBQV01fQ1RSTDEJX19SRUcoMHg0MEMwMDAwMCkgIC8qIFBXTSAxQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBQV01fUFdEVVRZMQlfX1JFRygweDQwQzAwMDA0KSAgLyogUFdNIDEgRHV0eSBDeWNsZSBSZWdpc3RlciAqLworI2RlZmluZSBQV01fUEVSVkFMMQlfX1JFRygweDQwQzAwMDA4KSAgLyogUFdNIDEgUGVyaW9kIENvbnRyb2wgUmVnaXN0ZXIgKi8KKworCisvKgorICogSW50ZXJydXB0IENvbnRyb2xsZXIKKyAqLworCisjZGVmaW5lIElDSVAJCV9fUkVHKDB4NDBEMDAwMDApICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBJUlEgUGVuZGluZyBSZWdpc3RlciAqLworI2RlZmluZSBJQ01SCQlfX1JFRygweDQwRDAwMDA0KSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTWFzayBSZWdpc3RlciAqLworI2RlZmluZSBJQ0xSCQlfX1JFRygweDQwRDAwMDA4KSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTGV2ZWwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgSUNGUAkJX19SRUcoMHg0MEQwMDAwQykgIC8qIEludGVycnVwdCBDb250cm9sbGVyIEZJUSBQZW5kaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIElDUFIJCV9fUkVHKDB4NDBEMDAwMTApICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBQZW5kaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIElDQ1IJCV9fUkVHKDB4NDBEMDAwMTQpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb250cm9sIFJlZ2lzdGVyICovCisKKworLyoKKyAqIEdlbmVyYWwgUHVycG9zZSBJL08KKyAqLworCisjZGVmaW5lIEdQTFIwCQlfX1JFRygweDQwRTAwMDAwKSAgLyogR1BJTyBQaW4tTGV2ZWwgUmVnaXN0ZXIgR1BJTzwzMTowPiAqLworI2RlZmluZSBHUExSMQkJX19SRUcoMHg0MEUwMDAwNCkgIC8qIEdQSU8gUGluLUxldmVsIFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCisjZGVmaW5lIEdQTFIyCQlfX1JFRygweDQwRTAwMDA4KSAgLyogR1BJTyBQaW4tTGV2ZWwgUmVnaXN0ZXIgR1BJTzw4MDo2ND4gKi8KKworI2RlZmluZSBHUERSMAkJX19SRUcoMHg0MEUwMDAwQykgIC8qIEdQSU8gUGluIERpcmVjdGlvbiBSZWdpc3RlciBHUElPPDMxOjA+ICovCisjZGVmaW5lIEdQRFIxCQlfX1JFRygweDQwRTAwMDEwKSAgLyogR1BJTyBQaW4gRGlyZWN0aW9uIFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCisjZGVmaW5lIEdQRFIyCQlfX1JFRygweDQwRTAwMDE0KSAgLyogR1BJTyBQaW4gRGlyZWN0aW9uIFJlZ2lzdGVyIEdQSU88ODA6NjQ+ICovCisKKyNkZWZpbmUgR1BTUjAJCV9fUkVHKDB4NDBFMDAwMTgpICAvKiBHUElPIFBpbiBPdXRwdXQgU2V0IFJlZ2lzdGVyIEdQSU88MzE6MD4gKi8KKyNkZWZpbmUgR1BTUjEJCV9fUkVHKDB4NDBFMDAwMUMpICAvKiBHUElPIFBpbiBPdXRwdXQgU2V0IFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCisjZGVmaW5lIEdQU1IyCQlfX1JFRygweDQwRTAwMDIwKSAgLyogR1BJTyBQaW4gT3V0cHV0IFNldCBSZWdpc3RlciBHUElPPDgwOjY0PiAqLworCisjZGVmaW5lIEdQQ1IwCQlfX1JFRygweDQwRTAwMDI0KSAgLyogR1BJTyBQaW4gT3V0cHV0IENsZWFyIFJlZ2lzdGVyIEdQSU88MzE6MD4gKi8KKyNkZWZpbmUgR1BDUjEJCV9fUkVHKDB4NDBFMDAwMjgpICAvKiBHUElPIFBpbiBPdXRwdXQgQ2xlYXIgUmVnaXN0ZXIgR1BJTyA8NjM6MzI+ICovCisjZGVmaW5lIEdQQ1IyCQlfX1JFRygweDQwRTAwMDJDKSAgLyogR1BJTyBQaW4gT3V0cHV0IENsZWFyIFJlZ2lzdGVyIEdQSU8gPDgwOjY0PiAqLworCisjZGVmaW5lIEdSRVIwCQlfX1JFRygweDQwRTAwMDMwKSAgLyogR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgUmVnaXN0ZXIgR1BJTzwzMTowPiAqLworI2RlZmluZSBHUkVSMQkJX19SRUcoMHg0MEUwMDAzNCkgIC8qIEdQSU8gUmlzaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCisjZGVmaW5lIEdSRVIyCQlfX1JFRygweDQwRTAwMDM4KSAgLyogR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgUmVnaXN0ZXIgR1BJTzw4MDo2ND4gKi8KKworI2RlZmluZSBHRkVSMAkJX19SRUcoMHg0MEUwMDAzQykgIC8qIEdQSU8gRmFsbGluZy1FZGdlIERldGVjdCBSZWdpc3RlciBHUElPPDMxOjA+ICovCisjZGVmaW5lIEdGRVIxCQlfX1JFRygweDQwRTAwMDQwKSAgLyogR1BJTyBGYWxsaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCisjZGVmaW5lIEdGRVIyCQlfX1JFRygweDQwRTAwMDQ0KSAgLyogR1BJTyBGYWxsaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88ODA6NjQ+ICovCisKKyNkZWZpbmUgR0VEUjAJCV9fUkVHKDB4NDBFMDAwNDgpICAvKiBHUElPIEVkZ2UgRGV0ZWN0IFN0YXR1cyBSZWdpc3RlciBHUElPPDMxOjA+ICovCisjZGVmaW5lIEdFRFIxCQlfX1JFRygweDQwRTAwMDRDKSAgLyogR1BJTyBFZGdlIERldGVjdCBTdGF0dXMgUmVnaXN0ZXIgR1BJTzw2MzozMj4gKi8KKyNkZWZpbmUgR0VEUjIJCV9fUkVHKDB4NDBFMDAwNTApICAvKiBHUElPIEVkZ2UgRGV0ZWN0IFN0YXR1cyBSZWdpc3RlciBHUElPPDgwOjY0PiAqLworCisjZGVmaW5lIEdBRlIwX0wJCV9fUkVHKDB4NDBFMDAwNTQpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzwxNTowPiAqLworI2RlZmluZSBHQUZSMF9VCQlfX1JFRygweDQwRTAwMDU4KSAgLyogR1BJTyBBbHRlcm5hdGUgRnVuY3Rpb24gU2VsZWN0IFJlZ2lzdGVyIEdQSU88MzE6MTY+ICovCisjZGVmaW5lIEdBRlIxX0wJCV9fUkVHKDB4NDBFMDAwNUMpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzw0NzozMj4gKi8KKyNkZWZpbmUgR0FGUjFfVQkJX19SRUcoMHg0MEUwMDA2MCkgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPPDYzOjQ4PiAqLworI2RlZmluZSBHQUZSMl9MCQlfX1JFRygweDQwRTAwMDY0KSAgLyogR1BJTyBBbHRlcm5hdGUgRnVuY3Rpb24gU2VsZWN0IFJlZ2lzdGVyIEdQSU88Nzk6NjQ+ICovCisjZGVmaW5lIEdBRlIyX1UJCV9fUkVHKDB4NDBFMDAwNjgpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzw5NS04MD4gKi8KKyNkZWZpbmUgR0FGUjNfTAkJX19SRUcoMHg0MEUwMDA2QykgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPPDExMTo5Nj4gKi8KKyNkZWZpbmUgR0FGUjNfVQkJX19SRUcoMHg0MEUwMDA3MCkgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPPDEyNzoxMTI+ICovCisKKyNkZWZpbmUgR1BMUjMJCV9fUkVHKDB4NDBFMDAxMDApICAvKiBHUElPIFBpbi1MZXZlbCBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKyNkZWZpbmUgR1BEUjMJCV9fUkVHKDB4NDBFMDAxMEMpICAvKiBHUElPIFBpbiBEaXJlY3Rpb24gUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdQU1IzCQlfX1JFRygweDQwRTAwMTE4KSAgLyogR1BJTyBQaW4gT3V0cHV0IFNldCBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKyNkZWZpbmUgR1BDUjMJCV9fUkVHKDB4NDBFMDAxMjQpICAvKiBHUElPIFBpbiBPdXRwdXQgQ2xlYXIgUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdSRVIzCQlfX1JFRygweDQwRTAwMTMwKSAgLyogR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdGRVIzCQlfX1JFRygweDQwRTAwMTNDKSAgLyogR1BJTyBGYWxsaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworI2RlZmluZSBHRURSMwkJX19SRUcoMHg0MEUwMDE0OCkgIC8qIEdQSU8gRWRnZSBEZXRlY3QgU3RhdHVzIFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworCisvKiBNb3JlIGhhbmR5IG1hY3Jvcy4gIFRoZSBhcmd1bWVudCBpcyBhIGxpdGVyYWwgR1BJTyBudW1iZXIuICovCisKKyNkZWZpbmUgR1BJT19iaXQoeCkJKDEgPDwgKCh4KSAmIDB4MWYpKQorCisjaWZkZWYgQ09ORklHX1BYQTI3eAorCisvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLworCisjZGVmaW5lIElDSVAyCQlfX1JFRygweDQwRDAwMDlDKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgSVJRIFBlbmRpbmcgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ01SMgkJX19SRUcoMHg0MEQwMDBBMCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIE1hc2sgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ0xSMgkJX19SRUcoMHg0MEQwMDBBNCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIExldmVsIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgSUNGUDIJCV9fUkVHKDB4NDBEMDAwQTgpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBGSVEgUGVuZGluZyBSZWdpc3RlciAyICovCisjZGVmaW5lIElDUFIyCQlfX1JFRygweDQwRDAwMEFDKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgUGVuZGluZyBSZWdpc3RlciAyICovCisKKyNkZWZpbmUgX0dQTFIoeCkJX19SRUcyKDB4NDBFMDAwMDAsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBfR1BEUih4KQlfX1JFRzIoMHg0MEUwMDAwQywgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIF9HUFNSKHgpCV9fUkVHMigweDQwRTAwMDE4LCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgX0dQQ1IoeCkJX19SRUcyKDB4NDBFMDAwMjQsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBfR1JFUih4KQlfX1JFRzIoMHg0MEUwMDAzMCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIF9HRkVSKHgpCV9fUkVHMigweDQwRTAwMDNDLCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgX0dFRFIoeCkJX19SRUcyKDB4NDBFMDAwNDgsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBfR0FGUih4KQlfX1JFRzIoMHg0MEUwMDA1NCwgKCh4KSAmIDB4NzApID4+IDIpCisKKyNkZWZpbmUgR1BMUih4KSAJKCooKCgoeCkgJiAweDdmKSA8IDk2KSA/ICZfR1BMUih4KSA6ICZHUExSMykpCisjZGVmaW5lIEdQRFIoeCkJCSgqKCgoKHgpICYgMHg3ZikgPCA5NikgPyAmX0dQRFIoeCkgOiAmR1BEUjMpKQorI2RlZmluZSBHUFNSKHgpCQkoKigoKCh4KSAmIDB4N2YpIDwgOTYpID8gJl9HUFNSKHgpIDogJkdQU1IzKSkKKyNkZWZpbmUgR1BDUih4KQkJKCooKCgoeCkgJiAweDdmKSA8IDk2KSA/ICZfR1BDUih4KSA6ICZHUENSMykpCisjZGVmaW5lIEdSRVIoeCkJCSgqKCgoKHgpICYgMHg3ZikgPCA5NikgPyAmX0dSRVIoeCkgOiAmR1JFUjMpKQorI2RlZmluZSBHRkVSKHgpCQkoKigoKCh4KSAmIDB4N2YpIDwgOTYpID8gJl9HRkVSKHgpIDogJkdGRVIzKSkKKyNkZWZpbmUgR0VEUih4KQkJKCooKCgoeCkgJiAweDdmKSA8IDk2KSA/ICZfR0VEUih4KSA6ICZHRURSMykpCisjZGVmaW5lIEdBRlIoeCkJCSgqKCgoKHgpICYgMHg3ZikgPCA5NikgPyAmX0dBRlIoeCkgOiBcCisJCQkgKCgoKHgpICYgMHg3ZikgPCAxMTIpID8gJkdBRlIzX0wgOiAmR0FGUjNfVSkpKQorI2Vsc2UKKworI2RlZmluZSBHUExSKHgpCQlfX1JFRzIoMHg0MEUwMDAwMCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIEdQRFIoeCkJCV9fUkVHMigweDQwRTAwMDBDLCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgR1BTUih4KQkJX19SRUcyKDB4NDBFMDAwMTgsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBHUENSKHgpCQlfX1JFRzIoMHg0MEUwMDAyNCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIEdSRVIoeCkJCV9fUkVHMigweDQwRTAwMDMwLCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgR0ZFUih4KQkJX19SRUcyKDB4NDBFMDAwM0MsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBHRURSKHgpCQlfX1JFRzIoMHg0MEUwMDA0OCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIEdBRlIoeCkJCV9fUkVHMigweDQwRTAwMDU0LCAoKHgpICYgMHg3MCkgPj4gMikKKworI2VuZGlmCisKKworLyogR1BJTyBhbHRlcm5hdGUgZnVuY3Rpb24gYXNzaWdubWVudHMgKi8KKworI2RlZmluZSBHUElPMV9SU1QJCTEJLyogcmVzZXQgKi8KKyNkZWZpbmUgR1BJTzZfTU1DQ0xLCQk2CS8qIE1NQyBDbG9jayAqLworI2RlZmluZSBHUElPN180OE1IegkJNwkvKiA0OCBNSHogY2xvY2sgb3V0cHV0ICovCisjZGVmaW5lIEdQSU84X01NQ0NTMAkJOAkvKiBNTUMgQ2hpcCBTZWxlY3QgMCAqLworI2RlZmluZSBHUElPOV9NTUNDUzEJCTkJLyogTU1DIENoaXAgU2VsZWN0IDEgKi8KKyNkZWZpbmUgR1BJTzEwX1JUQ0NMSwkJMTAJLyogcmVhbCB0aW1lIGNsb2NrICgxIEh6KSAqLworI2RlZmluZSBHUElPMTFfM182TUh6CQkxMQkvKiAzLjYgTUh6IG9zY2lsbGF0b3Igb3V0ICovCisjZGVmaW5lIEdQSU8xMl8zMktIegkJMTIJLyogMzIga0h6IG91dCAqLworI2RlZmluZSBHUElPMTNfTUJHTlQJCTEzCS8qIG1lbW9yeSBjb250cm9sbGVyIGdyYW50ICovCisjZGVmaW5lIEdQSU8xNF9NQlJFUQkJMTQJLyogYWx0ZXJuYXRlIGJ1cyBtYXN0ZXIgcmVxdWVzdCAqLworI2RlZmluZSBHUElPMTVfbkNTXzEJCTE1CS8qIGNoaXAgc2VsZWN0IDEgKi8KKyNkZWZpbmUgR1BJTzE2X1BXTTAJCTE2CS8qIFBXTTAgb3V0cHV0ICovCisjZGVmaW5lIEdQSU8xN19QV00xCQkxNwkvKiBQV00xIG91dHB1dCAqLworI2RlZmluZSBHUElPMThfUkRZCQkxOAkvKiBFeHQuIEJ1cyBSZWFkeSAqLworI2RlZmluZSBHUElPMTlfRFJFUTEJCTE5CS8qIEV4dGVybmFsIERNQSBSZXF1ZXN0ICovCisjZGVmaW5lIEdQSU8yMF9EUkVRMAkJMjAJLyogRXh0ZXJuYWwgRE1BIFJlcXVlc3QgKi8KKyNkZWZpbmUgR1BJTzIzX1NDTEsJCTIzCS8qIFNTUCBjbG9jayAqLworI2RlZmluZSBHUElPMjRfU0ZSTQkJMjQJLyogU1NQIEZyYW1lICovCisjZGVmaW5lIEdQSU8yNV9TVFhECQkyNQkvKiBTU1AgdHJhbnNtaXQgKi8KKyNkZWZpbmUgR1BJTzI2X1NSWEQJCTI2CS8qIFNTUCByZWNlaXZlICovCisjZGVmaW5lIEdQSU8yN19TRVhUQ0xLCQkyNwkvKiBTU1AgZXh0X2NsayAqLworI2RlZmluZSBHUElPMjhfQklUQ0xLCQkyOAkvKiBBQzk3L0kyUyBiaXRfY2xrICovCisjZGVmaW5lIEdQSU8yOV9TREFUQV9JTgkJMjkJLyogQUM5NyBTZGF0YV9pbjAgLyBJMlMgU2RhdGFfaW4gKi8KKyNkZWZpbmUgR1BJTzMwX1NEQVRBX09VVAkzMAkvKiBBQzk3L0kyUyBTZGF0YV9vdXQgKi8KKyNkZWZpbmUgR1BJTzMxX1NZTkMJCTMxCS8qIEFDOTcvSTJTIHN5bmMgKi8KKyNkZWZpbmUgR1BJTzMyX1NEQVRBX0lOMQkzMgkvKiBBQzk3IFNkYXRhX2luMSAqLworI2RlZmluZSBHUElPMzJfU1lTQ0xLCQkzMgkvKiBJMlMgU3lzdGVtIENsb2NrICovCisjZGVmaW5lIEdQSU8zMl9NTUNDTEsJCTMyCS8qIE1NQyBDbG9jayAoUFhBMjcwKSAqLworI2RlZmluZSBHUElPMzNfbkNTXzUJCTMzCS8qIGNoaXAgc2VsZWN0IDUgKi8KKyNkZWZpbmUgR1BJTzM0X0ZGUlhECQkzNAkvKiBGRlVBUlQgcmVjZWl2ZSAqLworI2RlZmluZSBHUElPMzRfTU1DQ1MwCQkzNAkvKiBNTUMgQ2hpcCBTZWxlY3QgMCAqLworI2RlZmluZSBHUElPMzVfRkZDVFMJCTM1CS8qIEZGVUFSVCBDbGVhciB0byBzZW5kICovCisjZGVmaW5lIEdQSU8zNl9GRkRDRAkJMzYJLyogRkZVQVJUIERhdGEgY2FycmllciBkZXRlY3QgKi8KKyNkZWZpbmUgR1BJTzM3X0ZGRFNSCQkzNwkvKiBGRlVBUlQgZGF0YSBzZXQgcmVhZHkgKi8KKyNkZWZpbmUgR1BJTzM4X0ZGUkkJCTM4CS8qIEZGVUFSVCBSaW5nIEluZGljYXRvciAqLworI2RlZmluZSBHUElPMzlfTU1DQ1MxCQkzOQkvKiBNTUMgQ2hpcCBTZWxlY3QgMSAqLworI2RlZmluZSBHUElPMzlfRkZUWEQJCTM5CS8qIEZGVUFSVCB0cmFuc21pdCBkYXRhICovCisjZGVmaW5lIEdQSU80MF9GRkRUUgkJNDAJLyogRkZVQVJUIGRhdGEgdGVybWluYWwgUmVhZHkgKi8KKyNkZWZpbmUgR1BJTzQxX0ZGUlRTCQk0MQkvKiBGRlVBUlQgcmVxdWVzdCB0byBzZW5kICovCisjZGVmaW5lIEdQSU80Ml9CVFJYRAkJNDIJLyogQlRVQVJUIHJlY2VpdmUgZGF0YSAqLworI2RlZmluZSBHUElPNDNfQlRUWEQJCTQzCS8qIEJUVUFSVCB0cmFuc21pdCBkYXRhICovCisjZGVmaW5lIEdQSU80NF9CVENUUwkJNDQJLyogQlRVQVJUIGNsZWFyIHRvIHNlbmQgKi8KKyNkZWZpbmUgR1BJTzQ1X0JUUlRTCQk0NQkvKiBCVFVBUlQgcmVxdWVzdCB0byBzZW5kICovCisjZGVmaW5lIEdQSU80NV9BQzk3X1NZU0NMSwk0NQkvKiBBQzk3IFN5c3RlbSBDbG9jayAqLworI2RlZmluZSBHUElPNDZfSUNQUlhECQk0NgkvKiBJQ1AgcmVjZWl2ZSBkYXRhICovCisjZGVmaW5lIEdQSU80Nl9TVFJYRAkJNDYJLyogU1REX1VBUlQgcmVjZWl2ZSBkYXRhICovCisjZGVmaW5lIEdQSU80N19JQ1BUWEQJCTQ3CS8qIElDUCB0cmFuc21pdCBkYXRhICovCisjZGVmaW5lIEdQSU80N19TVFRYRAkJNDcJLyogU1REX1VBUlQgdHJhbnNtaXQgZGF0YSAqLworI2RlZmluZSBHUElPNDhfblBPRQkJNDgJLyogT3V0cHV0IEVuYWJsZSBmb3IgQ2FyZCBTcGFjZSAqLworI2RlZmluZSBHUElPNDlfblBXRQkJNDkJLyogV3JpdGUgRW5hYmxlIGZvciBDYXJkIFNwYWNlICovCisjZGVmaW5lIEdQSU81MF9uUElPUgkJNTAJLyogSS9PIFJlYWQgZm9yIENhcmQgU3BhY2UgKi8KKyNkZWZpbmUgR1BJTzUxX25QSU9XCQk1MQkvKiBJL08gV3JpdGUgZm9yIENhcmQgU3BhY2UgKi8KKyNkZWZpbmUgR1BJTzUyX25QQ0VfMQkJNTIJLyogQ2FyZCBFbmFibGUgZm9yIENhcmQgU3BhY2UgKi8KKyNkZWZpbmUgR1BJTzUzX25QQ0VfMgkJNTMJLyogQ2FyZCBFbmFibGUgZm9yIENhcmQgU3BhY2UgKi8KKyNkZWZpbmUgR1BJTzUzX01NQ0NMSwkJNTMJLyogTU1DIENsb2NrICovCisjZGVmaW5lIEdQSU81NF9NTUNDTEsJCTU0CS8qIE1NQyBDbG9jayAqLworI2RlZmluZSBHUElPNTRfcFNLVFNFTAkJNTQJLyogU29ja2V0IFNlbGVjdCBmb3IgQ2FyZCBTcGFjZSAqLworI2RlZmluZSBHUElPNTRfblBDRV8yCQk1NAkvKiBDYXJkIEVuYWJsZSBmb3IgQ2FyZCBTcGFjZSAoUFhBMjd4KSAqLworI2RlZmluZSBHUElPNTVfblBSRUcJCTU1CS8qIENhcmQgQWRkcmVzcyBiaXQgMjYgKi8KKyNkZWZpbmUgR1BJTzU2X25QV0FJVAkJNTYJLyogV2FpdCBzaWduYWwgZm9yIENhcmQgU3BhY2UgKi8KKyNkZWZpbmUgR1BJTzU3X25JT0lTMTYJCTU3CS8qIEJ1cyBXaWR0aCBzZWxlY3QgZm9yIEkvTyBDYXJkIFNwYWNlICovCisjZGVmaW5lIEdQSU81OF9MRERfMAkJNTgJLyogTENEIGRhdGEgcGluIDAgKi8KKyNkZWZpbmUgR1BJTzU5X0xERF8xCQk1OQkvKiBMQ0QgZGF0YSBwaW4gMSAqLworI2RlZmluZSBHUElPNjBfTEREXzIJCTYwCS8qIExDRCBkYXRhIHBpbiAyICovCisjZGVmaW5lIEdQSU82MV9MRERfMwkJNjEJLyogTENEIGRhdGEgcGluIDMgKi8KKyNkZWZpbmUgR1BJTzYyX0xERF80CQk2MgkvKiBMQ0QgZGF0YSBwaW4gNCAqLworI2RlZmluZSBHUElPNjNfTEREXzUJCTYzCS8qIExDRCBkYXRhIHBpbiA1ICovCisjZGVmaW5lIEdQSU82NF9MRERfNgkJNjQJLyogTENEIGRhdGEgcGluIDYgKi8KKyNkZWZpbmUgR1BJTzY1X0xERF83CQk2NQkvKiBMQ0QgZGF0YSBwaW4gNyAqLworI2RlZmluZSBHUElPNjZfTEREXzgJCTY2CS8qIExDRCBkYXRhIHBpbiA4ICovCisjZGVmaW5lIEdQSU82Nl9NQlJFUQkJNjYJLyogYWx0ZXJuYXRlIGJ1cyBtYXN0ZXIgcmVxICovCisjZGVmaW5lIEdQSU82N19MRERfOQkJNjcJLyogTENEIGRhdGEgcGluIDkgKi8KKyNkZWZpbmUgR1BJTzY3X01NQ0NTMAkJNjcJLyogTU1DIENoaXAgU2VsZWN0IDAgKi8KKyNkZWZpbmUgR1BJTzY4X0xERF8xMAkJNjgJLyogTENEIGRhdGEgcGluIDEwICovCisjZGVmaW5lIEdQSU82OF9NTUNDUzEJCTY4CS8qIE1NQyBDaGlwIFNlbGVjdCAxICovCisjZGVmaW5lIEdQSU82OV9MRERfMTEJCTY5CS8qIExDRCBkYXRhIHBpbiAxMSAqLworI2RlZmluZSBHUElPNjlfTU1DQ0xLCQk2OQkvKiBNTUNfQ0xLICovCisjZGVmaW5lIEdQSU83MF9MRERfMTIJCTcwCS8qIExDRCBkYXRhIHBpbiAxMiAqLworI2RlZmluZSBHUElPNzBfUlRDQ0xLCQk3MAkvKiBSZWFsIFRpbWUgY2xvY2sgKDEgSHopICovCisjZGVmaW5lIEdQSU83MV9MRERfMTMJCTcxCS8qIExDRCBkYXRhIHBpbiAxMyAqLworI2RlZmluZSBHUElPNzFfM182TUh6CQk3MQkvKiAzLjYgTUh6IE9zY2lsbGF0b3IgY2xvY2sgKi8KKyNkZWZpbmUgR1BJTzcyX0xERF8xNAkJNzIJLyogTENEIGRhdGEgcGluIDE0ICovCisjZGVmaW5lIEdQSU83Ml8zMmtIegkJNzIJLyogMzIga0h6IGNsb2NrICovCisjZGVmaW5lIEdQSU83M19MRERfMTUJCTczCS8qIExDRCBkYXRhIHBpbiAxNSAqLworI2RlZmluZSBHUElPNzNfTUJHTlQJCTczCS8qIE1lbW9yeSBjb250cm9sbGVyIGdyYW50ICovCisjZGVmaW5lIEdQSU83NF9MQ0RfRkNMSwkJNzQJLyogTENEIEZyYW1lIGNsb2NrICovCisjZGVmaW5lIEdQSU83NV9MQ0RfTENMSwkJNzUJLyogTENEIGxpbmUgY2xvY2sgKi8KKyNkZWZpbmUgR1BJTzc2X0xDRF9QQ0xLCQk3NgkvKiBMQ0QgUGl4ZWwgY2xvY2sgKi8KKyNkZWZpbmUgR1BJTzc3X0xDRF9BQ0JJQVMJNzcJLyogTENEIEFDIEJpYXMgKi8KKyNkZWZpbmUgR1BJTzc4X25DU18yCQk3OAkvKiBjaGlwIHNlbGVjdCAyICovCisjZGVmaW5lIEdQSU83OV9uQ1NfMwkJNzkJLyogY2hpcCBzZWxlY3QgMyAqLworI2RlZmluZSBHUElPODBfbkNTXzQJCTgwCS8qIGNoaXAgc2VsZWN0IDQgKi8KKyNkZWZpbmUgR1BJTzgxX05TQ0xLCQk4MQkvKiBOU1NQIGNsb2NrICovCisjZGVmaW5lIEdQSU84Ml9OU0ZSTQkJODIJLyogTlNTUCBGcmFtZSAqLworI2RlZmluZSBHUElPODNfTlNUWEQJCTgzCS8qIE5TU1AgdHJhbnNtaXQgKi8KKyNkZWZpbmUgR1BJTzg0X05TUlhECQk4NAkvKiBOU1NQIHJlY2VpdmUgKi8KKyNkZWZpbmUgR1BJTzg1X25QQ0VfMQkJODUJLyogQ2FyZCBFbmFibGUgZm9yIENhcmQgU3BhY2UgKFBYQTI3eCkgKi8KKyNkZWZpbmUgR1BJTzkyX01NQ0RBVDAJCTkyCS8qIE1NQyBEQVQwIChQWEEyN3gpICovCisjZGVmaW5lIEdQSU8xMDlfTU1DREFUMQkJMTA5CS8qIE1NQyBEQVQxIChQWEEyN3gpICovCisjZGVmaW5lIEdQSU8xMTBfTU1DREFUMgkJMTEwCS8qIE1NQyBEQVQyIChQWEEyN3gpICovCisjZGVmaW5lIEdQSU8xMTBfTU1DQ1MwCQkxMTAJLyogTU1DIENoaXAgU2VsZWN0IDAgKFBYQTI3eCkgKi8KKyNkZWZpbmUgR1BJTzExMV9NTUNEQVQzCQkxMTEJLyogTU1DIERBVDMgKFBYQTI3eCkgKi8KKyNkZWZpbmUgR1BJTzExMV9NTUNDUzEJCTExMQkvKiBNTUMgQ2hpcCBTZWxlY3QgMSAoUFhBMjd4KSAqLworI2RlZmluZSBHUElPMTEyX01NQ0NNRAkJMTEyCS8qIE1NQyBDTUQgKFBYQTI3eCkgKi8KKyNkZWZpbmUgR1BJTzExM19BQzk3X1JFU0VUX04JMTEzCS8qIEFDOTcgTlJFU0VUIG9uIChQWEEyN3gpICovCisKKy8qIEdQSU8gYWx0ZXJuYXRlIGZ1bmN0aW9uIG1vZGUgJiBkaXJlY3Rpb24gKi8KKworI2RlZmluZSBHUElPX0lOCQkJMHgwMDAKKyNkZWZpbmUgR1BJT19PVVQJCTB4MDgwCisjZGVmaW5lIEdQSU9fQUxUX0ZOXzFfSU4JMHgxMDAKKyNkZWZpbmUgR1BJT19BTFRfRk5fMV9PVVQJMHgxODAKKyNkZWZpbmUgR1BJT19BTFRfRk5fMl9JTgkweDIwMAorI2RlZmluZSBHUElPX0FMVF9GTl8yX09VVAkweDI4MAorI2RlZmluZSBHUElPX0FMVF9GTl8zX0lOCTB4MzAwCisjZGVmaW5lIEdQSU9fQUxUX0ZOXzNfT1VUCTB4MzgwCisjZGVmaW5lIEdQSU9fTURfTUFTS19OUgkJMHgwN2YKKyNkZWZpbmUgR1BJT19NRF9NQVNLX0RJUgkweDA4MAorI2RlZmluZSBHUElPX01EX01BU0tfRk4JCTB4MzAwCisjZGVmaW5lIEdQSU9fREZMVF9MT1cJCTB4NDAwCisjZGVmaW5lIEdQSU9fREZMVF9ISUdICQkweDgwMAorCisjZGVmaW5lIEdQSU8xX1JUU19NRAkJKCAxIHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzZfTU1DQ0xLX01ECQkoIDYgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzdfNDhNSHpfTUQJCSggNyB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPOF9NTUNDUzBfTUQJCSggOCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPOV9NTUNDUzFfTUQJCSggOSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTBfUlRDQ0xLX01ECSgxMCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTFfM182TUh6X01ECSgxMSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTJfMzJLSHpfTUQJCSgxMiB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTNfTUJHTlRfTUQJCSgxMyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMTRfTUJSRVFfTUQJCSgxNCB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8xNV9uQ1NfMV9NRAkJKDE1IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU8xNl9QV00wX01ECQkoMTYgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzE3X1BXTTFfTUQJCSgxNyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMThfUkRZX01ECQkoMTggfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPMTlfRFJFUTFfTUQJCSgxOSB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8yMF9EUkVRMF9NRAkJKDIwIHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzIzX1NDTEtfTUQJCSgyMyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMjRfU0ZSTV9NRAkJKDI0IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU8yNV9TVFhEX01ECQkoMjUgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzI2X1NSWERfTUQJCSgyNiB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8yN19TRVhUQ0xLX01ECSgyNyB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8yOF9CSVRDTEtfQUM5N19NRAkoMjggfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPMjhfQklUQ0xLX0lOX0kyU19NRAkoMjggfCBHUElPX0FMVF9GTl8yX0lOKQorI2RlZmluZSBHUElPMjhfQklUQ0xLX09VVF9JMlNfTUQJKDI4IHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU8yOV9TREFUQV9JTl9BQzk3X01ECSgyOSB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8yOV9TREFUQV9JTl9JMlNfTUQJKDI5IHwgR1BJT19BTFRfRk5fMl9JTikKKyNkZWZpbmUgR1BJTzMwX1NEQVRBX09VVF9BQzk3X01ECSgzMCB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMzBfU0RBVEFfT1VUX0kyU19NRAkoMzAgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzMxX1NZTkNfSTJTX01ECSgzMSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMzFfU1lOQ19BQzk3X01ECSgzMSB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMzJfU0RBVEFfSU4xX0FDOTdfTUQJKDMyIHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzMyX1NZU0NMS19JMlNfTUQJKDMyIHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU8zMl9NTUNDTEtfTUQJCSggMzIgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzMzX25DU181X01ECQkoMzMgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzM0X0ZGUlhEX01ECQkoMzQgfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPMzRfTU1DQ1MwX01ECSgzNCB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMzVfRkZDVFNfTUQJCSgzNSB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU8zNl9GRkRDRF9NRAkJKDM2IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzM3X0ZGRFNSX01ECQkoMzcgfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPMzhfRkZSSV9NRAkJKDM4IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzM5X01NQ0NTMV9NRAkoMzkgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzM5X0ZGVFhEX01ECQkoMzkgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzQwX0ZGRFRSX01ECQkoNDAgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzQxX0ZGUlRTX01ECQkoNDEgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzQyX0JUUlhEX01ECQkoNDIgfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPNDNfQlRUWERfTUQJCSg0MyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNDRfQlRDVFNfTUQJCSg0NCB8IEdQSU9fQUxUX0ZOXzFfSU4pCisjZGVmaW5lIEdQSU80NV9CVFJUU19NRAkJKDQ1IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU80NV9TWVNDTEtfQUM5N19NRAkJKDQ1IHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU80Nl9JQ1BSWERfTUQJKDQ2IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzQ2X1NUUlhEX01ECQkoNDYgfCBHUElPX0FMVF9GTl8yX0lOKQorI2RlZmluZSBHUElPNDdfSUNQVFhEX01ECSg0NyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNDdfU1RUWERfTUQJCSg0NyB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNDhfblBPRV9NRAkJKDQ4IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU80OV9uUFdFX01ECQkoNDkgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzUwX25QSU9SX01ECQkoNTAgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzUxX25QSU9XX01ECQkoNTEgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzUyX25QQ0VfMV9NRAkoNTIgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzUzX25QQ0VfMl9NRAkoNTMgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzUzX01NQ0NMS19NRAkoNTMgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzU0X01NQ0NMS19NRAkoNTQgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzU0X25QQ0VfMl9NRAkoNTQgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzU0X3BTS1RTRUxfTUQJKDU0IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU81NV9uUFJFR19NRAkJKDU1IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU81Nl9uUFdBSVRfTUQJKDU2IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzU3X25JT0lTMTZfTUQJKDU3IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzU4X0xERF8wX01ECQkoNTggfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzU5X0xERF8xX01ECQkoNTkgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzYwX0xERF8yX01ECQkoNjAgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzYxX0xERF8zX01ECQkoNjEgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzYyX0xERF80X01ECQkoNjIgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzYzX0xERF81X01ECQkoNjMgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzY0X0xERF82X01ECQkoNjQgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzY1X0xERF83X01ECQkoNjUgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzY2X0xERF84X01ECQkoNjYgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzY2X01CUkVRX01ECQkoNjYgfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPNjdfTEREXzlfTUQJCSg2NyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNjdfTU1DQ1MwX01ECSg2NyB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNjhfTEREXzEwX01ECSg2OCB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNjhfTU1DQ1MxX01ECSg2OCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNjlfTEREXzExX01ECSg2OSB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNjlfTU1DQ0xLX01ECSg2OSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNzBfTEREXzEyX01ECSg3MCB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNzBfUlRDQ0xLX01ECSg3MCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNzFfTEREXzEzX01ECSg3MSB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNzFfM182TUh6X01ECSg3MSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNzJfTEREXzE0X01ECSg3MiB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNzJfMzJrSHpfTUQJCSg3MiB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNzNfTEREXzE1X01ECSg3MyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNzNfTUJHTlRfTUQJCSg3MyB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPNzRfTENEX0ZDTEtfTUQJKDc0IHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU83NV9MQ0RfTENMS19NRAkoNzUgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzc2X0xDRF9QQ0xLX01ECSg3NiB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPNzdfTENEX0FDQklBU19NRAkoNzcgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzc4X25DU18yX01ECQkoNzggfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzc5X25DU18zX01ECQkoNzkgfCBHUElPX0FMVF9GTl8yX09VVCkKKyNkZWZpbmUgR1BJTzc5X3BTS1RTRUxfTUQJKDc5IHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU84MF9uQ1NfNF9NRAkJKDgwIHwgR1BJT19BTFRfRk5fMl9PVVQpCisjZGVmaW5lIEdQSU84MV9OU1NQX0NMS19PVVQgCSg4MSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPODFfTlNTUF9DTEtfSU4gIAkoODEgfCBHUElPX0FMVF9GTl8xX0lOKQorI2RlZmluZSBHUElPODJfTlNTUF9GUk1fT1VUIAkoODIgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzgyX05TU1BfRlJNX0lOICAJKDgyIHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzgzX05TU1BfVFggICAgICAJKDgzIHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU84M19OU1NQX1JYICAgICAgCSg4MyB8IEdQSU9fQUxUX0ZOXzJfSU4pCisjZGVmaW5lIEdQSU84NF9OU1NQX1RYICAgICAgCSg4NCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPODRfTlNTUF9SWCAgICAgIAkoODQgfCBHUElPX0FMVF9GTl8yX0lOKQorI2RlZmluZSBHUElPODVfblBDRV8xX01ECSg4NSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPOTJfTU1DREFUMF9NRAkoOTIgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzEwOV9NTUNEQVQxX01ECSgxMDkgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzExMF9NTUNEQVQyX01ECSgxMTAgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzExMF9NTUNDUzBfTUQJKDExMCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTExX01NQ0RBVDNfTUQJKDExMSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMTEwX01NQ0NTMV9NRAkoMTExIHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU8xMTJfTU1DQ01EX01ECSgxMTIgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzExM19BQzk3X1JFU0VUX05fTUQJKDExMyB8IEdQSU9fQUxUX0ZOXzJfT1VUKQorI2RlZmluZSBHUElPMTE3X0kyQ1NDTF9NRAkoMTE3IHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU8xMThfSTJDU0RBX01ECSgxMTggfCBHUElPX0FMVF9GTl8xX0lOKQorCisvKgorICogUG93ZXIgTWFuYWdlcgorICovCisKKyNkZWZpbmUgUE1DUgkJX19SRUcoMHg0MEYwMDAwMCkgIC8qIFBvd2VyIE1hbmFnZXIgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBQU1NSCQlfX1JFRygweDQwRjAwMDA0KSAgLyogUG93ZXIgTWFuYWdlciBTbGVlcCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFNQUgkJX19SRUcoMHg0MEYwMDAwOCkgIC8qIFBvd2VyIE1hbmFnZXIgU2NyYXRjaCBQYWQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFdFUgkJX19SRUcoMHg0MEYwMDAwQykgIC8qIFBvd2VyIE1hbmFnZXIgV2FrZS11cCBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFJFUgkJX19SRUcoMHg0MEYwMDAxMCkgIC8qIFBvd2VyIE1hbmFnZXIgR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIFBGRVIJCV9fUkVHKDB4NDBGMDAwMTQpICAvKiBQb3dlciBNYW5hZ2VyIEdQSU8gRmFsbGluZy1FZGdlIERldGVjdCBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUEVEUgkJX19SRUcoMHg0MEYwMDAxOCkgIC8qIFBvd2VyIE1hbmFnZXIgR1BJTyBFZGdlIERldGVjdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUENGUgkJX19SRUcoMHg0MEYwMDAxQykgIC8qIFBvd2VyIE1hbmFnZXIgR2VuZXJhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIFBHU1IwCQlfX1JFRygweDQwRjAwMDIwKSAgLyogUG93ZXIgTWFuYWdlciBHUElPIFNsZWVwIFN0YXRlIFJlZ2lzdGVyIGZvciBHUFszMS0wXSAqLworI2RlZmluZSBQR1NSMQkJX19SRUcoMHg0MEYwMDAyNCkgIC8qIFBvd2VyIE1hbmFnZXIgR1BJTyBTbGVlcCBTdGF0ZSBSZWdpc3RlciBmb3IgR1BbNjMtMzJdICovCisjZGVmaW5lIFBHU1IyCQlfX1JFRygweDQwRjAwMDI4KSAgLyogUG93ZXIgTWFuYWdlciBHUElPIFNsZWVwIFN0YXRlIFJlZ2lzdGVyIGZvciBHUFs4NC02NF0gKi8KKyNkZWZpbmUgUEdTUjMJCV9fUkVHKDB4NDBGMDAwMkMpICAvKiBQb3dlciBNYW5hZ2VyIEdQSU8gU2xlZXAgU3RhdGUgUmVnaXN0ZXIgZm9yIEdQWzExOC05Nl0gKi8KKyNkZWZpbmUgUkNTUgkJX19SRUcoMHg0MEYwMDAzMCkgIC8qIFJlc2V0IENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgUFNMUgkJX19SRUcoMHg0MEYwMDAzNCkJLyogUG93ZXIgTWFuYWdlciBTbGVlcCBDb25maWcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFNUUgkJX19SRUcoMHg0MEYwMDAzOCkJLypQb3dlciBNYW5hZ2VyIFN0YW5kYnkgQ29uZmlnIFJlZ2lzdGVyICovCisjZGVmaW5lIFBTTlIJCV9fUkVHKDB4NDBGMDAwM0MpCS8qUG93ZXIgTWFuYWdlciBTZW5zZSBDb25maWcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFZDUgkJX19SRUcoMHg0MEYwMDA0MCkJLypQb3dlciBNYW5hZ2VyIFZvbHRhZ2VDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFBLV1IJCV9fUkVHKDB4NDBGMDAwNTApCS8qIFBvd2VyIE1hbmFnZXIgS0IgV2FrZS11cCBFbmFibGUgUmVnICovCisjZGVmaW5lIFBLU1IJCV9fUkVHKDB4NDBGMDAwNTQpCS8qIFBvd2VyIE1hbmFnZXIgS0IgTGV2ZWwtRGV0ZWN0IFJlZ2lzdGVyICovCisjZGVmaW5lIFBDTUQoeCkJX19SRUcyKDB4NDBGMDAwODAsICh4KTw8MikKKyNkZWZpbmUgUENNRDAJX19SRUcoMHg0MEYwMDA4MCArIDAgKiA0KQorI2RlZmluZSBQQ01EMQlfX1JFRygweDQwRjAwMDgwICsgMSAqIDQpCisjZGVmaW5lIFBDTUQyCV9fUkVHKDB4NDBGMDAwODAgKyAyICogNCkKKyNkZWZpbmUgUENNRDMJX19SRUcoMHg0MEYwMDA4MCArIDMgKiA0KQorI2RlZmluZSBQQ01ENAlfX1JFRygweDQwRjAwMDgwICsgNCAqIDQpCisjZGVmaW5lIFBDTUQ1CV9fUkVHKDB4NDBGMDAwODAgKyA1ICogNCkKKyNkZWZpbmUgUENNRDYJX19SRUcoMHg0MEYwMDA4MCArIDYgKiA0KQorI2RlZmluZSBQQ01ENwlfX1JFRygweDQwRjAwMDgwICsgNyAqIDQpCisjZGVmaW5lIFBDTUQ4CV9fUkVHKDB4NDBGMDAwODAgKyA4ICogNCkKKyNkZWZpbmUgUENNRDkJX19SRUcoMHg0MEYwMDA4MCArIDkgKiA0KQorI2RlZmluZSBQQ01EMTAJX19SRUcoMHg0MEYwMDA4MCArIDEwICogNCkKKyNkZWZpbmUgUENNRDExCV9fUkVHKDB4NDBGMDAwODAgKyAxMSAqIDQpCisjZGVmaW5lIFBDTUQxMglfX1JFRygweDQwRjAwMDgwICsgMTIgKiA0KQorI2RlZmluZSBQQ01EMTMJX19SRUcoMHg0MEYwMDA4MCArIDEzICogNCkKKyNkZWZpbmUgUENNRDE0CV9fUkVHKDB4NDBGMDAwODAgKyAxNCAqIDQpCisjZGVmaW5lIFBDTUQxNQlfX1JFRygweDQwRjAwMDgwICsgMTUgKiA0KQorI2RlZmluZSBQQ01EMTYJX19SRUcoMHg0MEYwMDA4MCArIDE2ICogNCkKKyNkZWZpbmUgUENNRDE3CV9fUkVHKDB4NDBGMDAwODAgKyAxNyAqIDQpCisjZGVmaW5lIFBDTUQxOAlfX1JFRygweDQwRjAwMDgwICsgMTggKiA0KQorI2RlZmluZSBQQ01EMTkJX19SRUcoMHg0MEYwMDA4MCArIDE5ICogNCkKKyNkZWZpbmUgUENNRDIwCV9fUkVHKDB4NDBGMDAwODAgKyAyMCAqIDQpCisjZGVmaW5lIFBDTUQyMQlfX1JFRygweDQwRjAwMDgwICsgMjEgKiA0KQorI2RlZmluZSBQQ01EMjIJX19SRUcoMHg0MEYwMDA4MCArIDIyICogNCkKKyNkZWZpbmUgUENNRDIzCV9fUkVHKDB4NDBGMDAwODAgKyAyMyAqIDQpCisjZGVmaW5lIFBDTUQyNAlfX1JFRygweDQwRjAwMDgwICsgMjQgKiA0KQorI2RlZmluZSBQQ01EMjUJX19SRUcoMHg0MEYwMDA4MCArIDI1ICogNCkKKyNkZWZpbmUgUENNRDI2CV9fUkVHKDB4NDBGMDAwODAgKyAyNiAqIDQpCisjZGVmaW5lIFBDTUQyNwlfX1JFRygweDQwRjAwMDgwICsgMjcgKiA0KQorI2RlZmluZSBQQ01EMjgJX19SRUcoMHg0MEYwMDA4MCArIDI4ICogNCkKKyNkZWZpbmUgUENNRDI5CV9fUkVHKDB4NDBGMDAwODAgKyAyOSAqIDQpCisjZGVmaW5lIFBDTUQzMAlfX1JFRygweDQwRjAwMDgwICsgMzAgKiA0KQorI2RlZmluZSBQQ01EMzEJX19SRUcoMHg0MEYwMDA4MCArIDMxICogNCkKKworI2RlZmluZSBQQ01EX01CQwkoMTw8MTIpCisjZGVmaW5lIFBDTURfRENFCSgxPDwxMSkKKyNkZWZpbmUgUENNRF9MQwkoMTw8MTApCisvKiBGSVhNRTogIFBDTURfU1FDIG5lZWQgYmUgY2hlY2tlZC4gICAqLworI2RlZmluZSBQQ01EX1NRQwkoMzw8OCkJLyogY3VycmVudGx5IG9ubHkgYml0IDggaXMgY2hhbmdlYWJsZSwKKwkJCQkgICBiaXQgOSBzaG91bGQgYmUgMCBhbGwgZGF5LiAqLworI2RlZmluZSBQVkNSX1ZDU0EJKDB4MTw8MTQpCisjZGVmaW5lIFBWQ1JfQ29tbWFuZERlbGF5ICgweGY4MCkKKyNkZWZpbmUgUENGUl9QSTJDX0VOCSgweDEgPDwgNikKKworI2RlZmluZSBQU1NSX09UR1BICSgxIDw8IDYpCS8qIE9URyBQZXJpcGhlcmFsIGNvbnRyb2wgSG9sZCAqLworI2RlZmluZSBQU1NSX1JESAkoMSA8PCA1KQkvKiBSZWFkIERpc2FibGUgSG9sZCAqLworI2RlZmluZSBQU1NSX1BICQkoMSA8PCA0KQkvKiBQZXJpcGhlcmFsIENvbnRyb2wgSG9sZCAqLworI2RlZmluZSBQU1NSX1ZGUwkoMSA8PCAyKQkvKiBWREQgRmF1bHQgU3RhdHVzICovCisjZGVmaW5lIFBTU1JfQkZTCSgxIDw8IDEpCS8qIEJhdHRlcnkgRmF1bHQgU3RhdHVzICovCisjZGVmaW5lIFBTU1JfU1NTCSgxIDw8IDApCS8qIFNvZnR3YXJlIFNsZWVwIFN0YXR1cyAqLworCisjZGVmaW5lIFBDRlJfUk8JCSgxIDw8IDE1KQkvKiBSREggT3ZlcnJpZGUgKi8KKyNkZWZpbmUgUENGUl9QTwkJKDEgPDwgMTQpCS8qIFBIIE92ZXJyaWRlICovCisjZGVmaW5lIFBDRlJfR1BST0QJKDEgPDwgMTIpCS8qIEdQSU8gblJFU0VUX09VVCBEaXNhYmxlICovCisjZGVmaW5lIFBDRlJfTDFfRU4JKDEgPDwgMTEpCS8qIFNsZWVwIE1vZGUgTDEgY29udmVydGVyIEVuYWJsZSAqLworI2RlZmluZSBQQ0ZSX0ZWQwkoMSA8PCAxMCkJLyogRnJlcXVlbmN5L1ZvbHRhZ2UgQ2hhbmdlICovCisjZGVmaW5lIFBDRlJfRENfRU4JKDEgPDwgNykJLyogU2xlZXAvZGVlcC1zbGVlcCBEQy1EQyBDb252ZXJ0ZXIgRW5hYmxlICovCisjZGVmaW5lIFBDRlJfUEkyQ0VOCSgxIDw8IDYpCS8qIEVuYWJsZSBQSTJDIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgUENGUl9EUwkJKDEgPDwgMykJLyogRGVlcCBTbGVlcCBNb2RlICovCisjZGVmaW5lIFBDRlJfRlMJCSgxIDw8IDIpCS8qIEZsb2F0IFN0YXRpYyBDaGlwIFNlbGVjdHMgKi8KKyNkZWZpbmUgUENGUl9GUAkJKDEgPDwgMSkJLyogRmxvYXQgUENNQ0lBIGNvbnRyb2xzICovCisjZGVmaW5lIFBDRlJfT1BERQkoMSA8PCAwKQkvKiAzLjY4NjQgTUh6IG9zY2lsbGF0b3IgcG93ZXItZG93biBlbmFibGUgKi8KKworI2RlZmluZSBSQ1NSX0dQUgkoMSA8PCAzKQkvKiBHUElPIFJlc2V0ICovCisjZGVmaW5lIFJDU1JfU01SCSgxIDw8IDIpCS8qIFNsZWVwIE1vZGUgKi8KKyNkZWZpbmUgUkNTUl9XRFIJKDEgPDwgMSkJLyogV2F0Y2hkb2cgUmVzZXQgKi8KKyNkZWZpbmUgUkNTUl9IV1IJKDEgPDwgMCkJLyogSGFyZHdhcmUgUmVzZXQgKi8KKworI2RlZmluZSBQV0VSX0dQSU8oTmIpCSgxIDw8IE5iKQkvKiBHUElPIFswLi4xNV0gd2FrZS11cCBlbmFibGUgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzAJUFdFUl9HUElPICgwKQkvKiBHUElPICBbMF0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzEJUFdFUl9HUElPICgxKQkvKiBHUElPICBbMV0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzIJUFdFUl9HUElPICgyKQkvKiBHUElPICBbMl0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzMJUFdFUl9HUElPICgzKQkvKiBHUElPICBbM10gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzQJUFdFUl9HUElPICg0KQkvKiBHUElPICBbNF0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzUJUFdFUl9HUElPICg1KQkvKiBHUElPICBbNV0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzYJUFdFUl9HUElPICg2KQkvKiBHUElPICBbNl0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzcJUFdFUl9HUElPICg3KQkvKiBHUElPICBbN10gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzgJUFdFUl9HUElPICg4KQkvKiBHUElPICBbOF0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzkJUFdFUl9HUElPICg5KQkvKiBHUElPICBbOV0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzEwCVBXRVJfR1BJTyAoMTApCS8qIEdQSU8gWzEwXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTEJUFdFUl9HUElPICgxMSkJLyogR1BJTyBbMTFdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8xMglQV0VSX0dQSU8gKDEyKQkvKiBHUElPIFsxMl0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzEzCVBXRVJfR1BJTyAoMTMpCS8qIEdQSU8gWzEzXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTQJUFdFUl9HUElPICgxNCkJLyogR1BJTyBbMTRdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8xNQlQV0VSX0dQSU8gKDE1KQkvKiBHUElPIFsxNV0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfUlRDCTB4ODAwMDAwMDAJLyogUlRDIGFsYXJtIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworCisKKy8qCisgKiBTU1AgU2VyaWFsIFBvcnQgUmVnaXN0ZXJzCisgKiBQWEEyNTAsIFBYQTI1NSwgUFhBMjZ4IGFuZCBQWEEyN3ggU1NQIGNvbnRyb2xsZXJzIGFyZSBhbGwgc2xpZ2h0bHkgZGlmZmVyZW50LgorICogUFhBMjU1LCBQWEEyNnggYW5kIFBYQTI3eCBoYXZlIGV4dHJhIHBvcnRzLCByZWdpc3RlcnMgYW5kIGJpdHMuCisgKi8KKworIC8qIENvbW1vbiBQWEEyeHggYml0cyBmaXJzdCAqLworI2RlZmluZSBTU0NSMF9EU1MJKDB4MDAwMDAwMGYpCS8qIERhdGEgU2l6ZSBTZWxlY3QgKG1hc2spICovCisjZGVmaW5lIFNTQ1IwX0RhdGFTaXplKHgpICAoKHgpIC0gMSkJLyogRGF0YSBTaXplIFNlbGVjdCBbNC4uMTZdICovCisjZGVmaW5lIFNTQ1IwX0ZSRgkoMHgwMDAwMDAzMCkJLyogRlJhbWUgRm9ybWF0IChtYXNrKSAqLworI2RlZmluZSBTU0NSMF9Nb3Rvcm9sYQkoMHgwIDw8IDQpCS8qIE1vdG9yb2xhJ3MgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIChTUEkpICovCisjZGVmaW5lIFNTQ1IwX1RJCSgweDEgPDwgNCkJLyogVGV4YXMgSW5zdHJ1bWVudHMnIFN5bmNocm9ub3VzIFNlcmlhbCBQcm90b2NvbCAoU1NQKSAqLworI2RlZmluZSBTU0NSMF9OYXRpb25hbAkoMHgyIDw8IDQpCS8qIE5hdGlvbmFsIE1pY3Jvd2lyZSAqLworI2RlZmluZSBTU0NSMF9FQ1MJKDEgPDwgNikJLyogRXh0ZXJuYWwgY2xvY2sgc2VsZWN0ICovCisjZGVmaW5lIFNTQ1IwX1NTRQkoMSA8PCA3KQkvKiBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCBFbmFibGUgKi8KKyNkZWZpbmUgU1NDUjBfU0NSCSgweDAwMDBmZjAwKQkvKiBTZXJpYWwgQ2xvY2sgUmF0ZSAobWFzaykgKi8KKyNkZWZpbmUgU1NDUjBfU2VyQ2xrRGl2KHgpICgoKCh4KSAtIDIpLzIpIDw8IDgpIC8qIERpdmlzb3IgWzIuLjUxMl0gKi8KKworI2RlZmluZSBTU0NSMV9SSUUJKDEgPDwgMCkJLyogUmVjZWl2ZSBGSUZPIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgU1NDUjFfVElFCSgxIDw8IDEpCS8qIFRyYW5zbWl0IEZJRk8gSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBTU0NSMV9MQk0JKDEgPDwgMikJLyogTG9vcC1CYWNrIE1vZGUgKi8KKyNkZWZpbmUgU1NDUjFfU1BPCSgxIDw8IDMpCS8qIE1vdG9yb2xhIFNQSSBTU1BTQ0xLIHBvbGFyaXR5IHNldHRpbmcgKi8KKyNkZWZpbmUgU1NDUjFfU1BICSgxIDw8IDQpCS8qIE1vdG9yb2xhIFNQSSBTU1BTQ0xLIHBoYXNlIHNldHRpbmcgKi8KKyNkZWZpbmUgU1NDUjFfTVdEUwkoMSA8PCA1KQkvKiBNaWNyb3dpcmUgVHJhbnNtaXQgRGF0YSBTaXplICovCisjZGVmaW5lIFNTQ1IxX1RGVAkoMHgwMDAwMDNjMCkJLyogVHJhbnNtaXQgRklGTyBUaHJlc2hvbGQgKG1hc2spICovCisjZGVmaW5lIFNTQ1IxX1R4VHJlc2goeCkgKCgoeCkgLSAxKSA8PCA2KSAvKiBsZXZlbCBbMS4uMTZdICovCisjZGVmaW5lIFNTQ1IxX1JGVAkoMHgwMDAwM2MwMCkJLyogUmVjZWl2ZSBGSUZPIFRocmVzaG9sZCAobWFzaykgKi8KKyNkZWZpbmUgU1NDUjFfUnhUcmVzaCh4KSAoKCh4KSAtIDEpIDw8IDEwKSAvKiBsZXZlbCBbMS4uMTZdICovCisKKyNkZWZpbmUgU1NTUl9UTkYJKDEgPDwgMikJLyogVHJhbnNtaXQgRklGTyBOb3QgRnVsbCAqLworI2RlZmluZSBTU1NSX1JORQkoMSA8PCAzKQkvKiBSZWNlaXZlIEZJRk8gTm90IEVtcHR5ICovCisjZGVmaW5lIFNTU1JfQlNZCSgxIDw8IDQpCS8qIFNTUCBCdXN5ICovCisjZGVmaW5lIFNTU1JfVEZTCSgxIDw8IDUpCS8qIFRyYW5zbWl0IEZJRk8gU2VydmljZSBSZXF1ZXN0ICovCisjZGVmaW5lIFNTU1JfUkZTCSgxIDw8IDYpCS8qIFJlY2VpdmUgRklGTyBTZXJ2aWNlIFJlcXVlc3QgKi8KKyNkZWZpbmUgU1NTUl9ST1IJKDEgPDwgNykJLyogUmVjZWl2ZSBGSUZPIE92ZXJydW4gKi8KKworI2RlZmluZSBTU0NSMF9USU0JCSgxIDw8IDIzKQkvKiBUcmFuc21pdCBGSUZPIFVuZGVyIFJ1biBJbnRlcnJ1cHQgTWFzayAqLworI2RlZmluZSBTU0NSMF9SSU0JCSgxIDw8IDIyKQkvKiBSZWNlaXZlIEZJRk8gT3ZlciBSdW4gaW50ZXJydXB0IE1hc2sgKi8KKyNkZWZpbmUgU1NDUjBfTkNTCQkoMSA8PCAyMSkJLyogTmV0d29yayBDbG9jayBTZWxlY3QgKi8KKyNkZWZpbmUgU1NDUjBfRURTUwkJKDEgPDwgMjApCS8qIEV4dGVuZGVkIERhdGEgU2l6ZSBTZWxlY3QgKi8KKworLyogZXh0cmEgYml0cyBpbiBQWEEyNTUsIFBYQTI2eCBhbmQgUFhBMjd4IFNTUCBwb3J0cyAqLworI2RlZmluZSBTU0NSMF9QU1AJCSgzIDw8IDQpCS8qIFBTUCAtIFByb2dyYW1tYWJsZSBTZXJpYWwgUHJvdG9jb2wgKi8KKyNkZWZpbmUgU1NDUjFfVFRFTFAJCSgxIDw8IDMxKQkvKiBUWEQgVHJpc3RhdGUgRW5hYmxlIExhc3QgUGhhc2UgKi8KKyNkZWZpbmUgU1NDUjFfVFRFCQkoMSA8PCAzMCkJLyogVFhEIFRyaXN0YXRlIEVuYWJsZSAqLworI2RlZmluZSBTU0NSMV9FQkNFSQkJKDEgPDwgMjkpCS8qIEVuYWJsZSBCaXQgQ291bnQgRXJyb3IgaW50ZXJydXB0ICovCisjZGVmaW5lIFNTQ1IxX1NDRlIJCSgxIDw8IDI4KQkvKiBTbGF2ZSBDbG9jayBmcmVlIFJ1bm5pbmcgKi8KKyNkZWZpbmUgU1NDUjFfRUNSQQkJKDEgPDwgMjcpCS8qIEVuYWJsZSBDbG9jayBSZXF1ZXN0IEEgKi8KKyNkZWZpbmUgU1NDUjFfRUNSQgkJKDEgPDwgMjYpCS8qIEVuYWJsZSBDbG9jayByZXF1ZXN0IEIgKi8KKyNkZWZpbmUgU1NDUjFfU0NMS0RJUgkoMSA8PCAyNSkJLyogU2VyaWFsIEJpdCBSYXRlIENsb2NrIERpcmVjdGlvbiAqLworI2RlZmluZSBTU0NSMV9TRlJNRElSCSgxIDw8IDI0KQkvKiBGcmFtZSBEaXJlY3Rpb24gKi8KKyNkZWZpbmUgU1NDUjFfUldPVAkJKDEgPDwgMjMpCS8qIFJlY2VpdmUgV2l0aG91dCBUcmFuc21pdCAqLworI2RlZmluZSBTU0NSMV9UUkFJTAkJKDEgPDwgMjIpCS8qIFRyYWlsaW5nIEJ5dGUgKi8KKyNkZWZpbmUgU1NDUjFfVFNSRQkJKDEgPDwgMjEpCS8qIFRyYW5zbWl0IFNlcnZpY2UgUmVxdWVzdCBFbmFibGUgKi8KKyNkZWZpbmUgU1NDUjFfUlNSRQkJKDEgPDwgMjApCS8qIFJlY2VpdmUgU2VydmljZSBSZXF1ZXN0IEVuYWJsZSAqLworI2RlZmluZSBTU0NSMV9USU5URQkJKDEgPDwgMTkpCS8qIFJlY2VpdmVyIFRpbWUtb3V0IEludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgU1NDUjFfUElOVEUJCSgxIDw8IDE4KQkvKiBQZXJpcGhlcmFsIFRyYWlsaW5nIEJ5dGUgSW50ZXJ1cHQgRW5hYmxlICovCisjZGVmaW5lIFNTQ1IxX1NUUkYJCSgxIDw8IDE1KQkvKiBTZWxlY3QgRklGTyBvciBFRldSICovCisjZGVmaW5lIFNTQ1IxX0VGV1IJCSgxIDw8IDE0KQkvKiBFbmFibGUgRklGTyBXcml0ZS9SZWFkICovCisKKyNkZWZpbmUgU1NTUl9CQ0UJCSgxIDw8IDIzKQkvKiBCaXQgQ291bnQgRXJyb3IgKi8KKyNkZWZpbmUgU1NTUl9DU1MJCSgxIDw8IDIyKQkvKiBDbG9jayBTeW5jaHJvbmlzYXRpb24gU3RhdHVzICovCisjZGVmaW5lIFNTU1JfVFVSCQkoMSA8PCAyMSkJLyogVHJhbnNtaXQgRklGTyBVbmRlciBSdW4gKi8KKyNkZWZpbmUgU1NTUl9FT0MJCSgxIDw8IDIwKQkvKiBFbmQgT2YgQ2hhaW4gKi8KKyNkZWZpbmUgU1NTUl9USU5UCQkoMSA8PCAxOSkJLyogUmVjZWl2ZXIgVGltZS1vdXQgSW50ZXJydXB0ICovCisjZGVmaW5lIFNTU1JfUElOVAkJKDEgPDwgMTgpCS8qIFBlcmlwaGVyYWwgVHJhaWxpbmcgQnl0ZSBJbnRlcnJ1cHQgKi8KKworI2RlZmluZSBTU1BTUF9ETVlTVE9QKHgpCSh4IDw8IDIzKQkvKiBEdW1teSBTdG9wICovCisjZGVmaW5lIFNTUFNQX1NGUk1XRFRIKHgpCSh4IDw8IDE2KQkvKiBTZXJpYWwgRnJhbWUgV2lkdGggKi8KKyNkZWZpbmUgU1NQU1BfU0ZSTURMWSh4KQkoeCA8PCA5KQkvKiBTZXJpYWwgRnJhbWUgRGVsYXkgKi8KKyNkZWZpbmUgU1NQU1BfRE1ZU1RSVCh4KQkoeCA8PCA3KQkvKiBEdW1teSBTdGFydCAqLworI2RlZmluZSBTU1BTUF9TVFJURExZKHgpCSh4IDw8IDQpCS8qIFN0YXJ0IERlbGF5ICovCisjZGVmaW5lIFNTUFNQX0VURFMJCQkoMSA8PCAzKQkvKiBFbmQgb2YgVHJhbnNmZXIgZGF0YSBTdGF0ZSAqLworI2RlZmluZSBTU1BTUF9TRlJNUAkJCSgxIDw8IDIpCS8qIFNlcmlhbCBGcmFtZSBQb2xhcml0eSAqLworI2RlZmluZSBTU1BTUF9TQ01PREUoeCkJCSh4IDw8IDApCS8qIFNlcmlhbCBCaXQgUmF0ZSBDbG9jayBNb2RlICovCisKKworI2RlZmluZSBTU0NSMF9QMQlfX1JFRygweDQxMDAwMDAwKSAgLyogU1NQIFBvcnQgMSBDb250cm9sIFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgU1NDUjFfUDEJX19SRUcoMHg0MTAwMDAwNCkgIC8qIFNTUCBQb3J0IDEgQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIFNTU1JfUDEJCV9fUkVHKDB4NDEwMDAwMDgpICAvKiBTU1AgUG9ydCAxIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBTU0lUUl9QMQlfX1JFRygweDQxMDAwMDBDKSAgLyogU1NQIFBvcnQgMSBJbnRlcnJ1cHQgVGVzdCBSZWdpc3RlciAqLworI2RlZmluZSBTU0RSX1AxCQlfX1JFRygweDQxMDAwMDEwKSAgLyogKFdyaXRlIC8gUmVhZCkgU1NQIFBvcnQgMSBEYXRhIFdyaXRlIFJlZ2lzdGVyL1NTUCBEYXRhIFJlYWQgUmVnaXN0ZXIgKi8KKworLyogU3VwcG9ydCBleGlzdGluZyBQWEEyNXggZHJpdmVycyAqLworI2RlZmluZSBTU0NSMAkJU1NDUjBfUDEgIC8qIFNTUCBDb250cm9sIFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgU1NDUjEJCVNTQ1IxX1AxICAvKiBTU1AgQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIFNTU1IJCVNTU1JfUDEJICAvKiBTU1AgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFNTSVRSCQlTU0lUUl9QMSAgLyogU1NQIEludGVycnVwdCBUZXN0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTRFIJCVNTRFJfUDEJICAvKiAoV3JpdGUgLyBSZWFkKSBTU1AgRGF0YSBXcml0ZSBSZWdpc3Rlci9TU1AgRGF0YSBSZWFkIFJlZ2lzdGVyICovCisKKy8qIFBYQTI3eCBwb3J0cyAqLworI2lmIGRlZmluZWQgKENPTkZJR19QWEEyN3gpCisjZGVmaW5lIFNTVE9fUDEJCV9fUkVHKDB4NDEwMDAwMjgpICAvKiBTU1AgUG9ydCAxIFRpbWUgT3V0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTUFNQX1AxCV9fUkVHKDB4NDEwMDAwMkMpICAvKiBTU1AgUG9ydCAxIFByb2dyYW1tYWJsZSBTZXJpYWwgUHJvdG9jb2wgKi8KKyNkZWZpbmUgU1NDUjBfUDIJX19SRUcoMHg0MTcwMDAwMCkgIC8qIFNTUCBQb3J0IDIgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNTQ1IxX1AyCV9fUkVHKDB4NDE3MDAwMDQpICAvKiBTU1AgUG9ydCAyIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBTU1NSX1AyCQlfX1JFRygweDQxNzAwMDA4KSAgLyogU1NQIFBvcnQgMiBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1NJVFJfUDIJX19SRUcoMHg0MTcwMDAwQykgIC8qIFNTUCBQb3J0IDIgSW50ZXJydXB0IFRlc3QgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1NEUl9QMgkJX19SRUcoMHg0MTcwMDAxMCkgIC8qIChXcml0ZSAvIFJlYWQpIFNTUCBQb3J0IDIgRGF0YSBXcml0ZSBSZWdpc3Rlci9TU1AgRGF0YSBSZWFkIFJlZ2lzdGVyICovCisjZGVmaW5lIFNTVE9fUDIJCV9fUkVHKDB4NDE3MDAwMjgpICAvKiBTU1AgUG9ydCAyIFRpbWUgT3V0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTUFNQX1AyCV9fUkVHKDB4NDE3MDAwMkMpICAvKiBTU1AgUG9ydCAyIFByb2dyYW1tYWJsZSBTZXJpYWwgUHJvdG9jb2wgKi8KKyNkZWZpbmUgU1NDUjBfUDMJX19SRUcoMHg0MTkwMDAwMCkgIC8qIFNTUCBQb3J0IDMgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNTQ1IxX1AzCV9fUkVHKDB4NDE5MDAwMDQpICAvKiBTU1AgUG9ydCAzIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBTU1NSX1AzCQlfX1JFRygweDQxOTAwMDA4KSAgLyogU1NQIFBvcnQgMyBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1NJVFJfUDMJX19SRUcoMHg0MTkwMDAwQykgIC8qIFNTUCBQb3J0IDMgSW50ZXJydXB0IFRlc3QgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1NEUl9QMwkJX19SRUcoMHg0MTkwMDAxMCkgIC8qIChXcml0ZSAvIFJlYWQpIFNTUCBQb3J0IDMgRGF0YSBXcml0ZSBSZWdpc3Rlci9TU1AgRGF0YSBSZWFkIFJlZ2lzdGVyICovCisjZGVmaW5lIFNTVE9fUDMJCV9fUkVHKDB4NDE5MDAwMjgpICAvKiBTU1AgUG9ydCAzIFRpbWUgT3V0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTUFNQX1AzCV9fUkVHKDB4NDE5MDAwMkMpICAvKiBTU1AgUG9ydCAzIFByb2dyYW1tYWJsZSBTZXJpYWwgUHJvdG9jb2wgKi8KKyNlbHNlIC8qIFBYQTI1NSAob25seSBwb3J0IDIpIGFuZCBQWEEyNnggcG9ydHMqLworI2RlZmluZSBTU1RPX1AxCQlfX1JFRygweDQxMDAwMDI4KSAgLyogU1NQIFBvcnQgMSBUaW1lIE91dCBSZWdpc3RlciAqLworI2RlZmluZSBTU1BTUF9QMQlfX1JFRygweDQxMDAwMDJDKSAgLyogU1NQIFBvcnQgMSBQcm9ncmFtbWFibGUgU2VyaWFsIFByb3RvY29sICovCisjZGVmaW5lIFNTQ1IwX1AyCV9fUkVHKDB4NDE0MDAwMDApICAvKiBTU1AgUG9ydCAyIENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBTU0NSMV9QMglfX1JFRygweDQxNDAwMDA0KSAgLyogU1NQIFBvcnQgMiBDb250cm9sIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgU1NTUl9QMgkJX19SRUcoMHg0MTQwMDAwOCkgIC8qIFNTUCBQb3J0IDIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFNTSVRSX1AyCV9fUkVHKDB4NDE0MDAwMEMpICAvKiBTU1AgUG9ydCAyIEludGVycnVwdCBUZXN0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTRFJfUDIJCV9fUkVHKDB4NDE0MDAwMTApICAvKiAoV3JpdGUgLyBSZWFkKSBTU1AgUG9ydCAyIERhdGEgV3JpdGUgUmVnaXN0ZXIvU1NQIERhdGEgUmVhZCBSZWdpc3RlciAqLworI2RlZmluZSBTU1RPX1AyCQlfX1JFRygweDQxNDAwMDI4KSAgLyogU1NQIFBvcnQgMiBUaW1lIE91dCBSZWdpc3RlciAqLworI2RlZmluZSBTU1BTUF9QMglfX1JFRygweDQxNDAwMDJDKSAgLyogU1NQIFBvcnQgMiBQcm9ncmFtbWFibGUgU2VyaWFsIFByb3RvY29sICovCisjZGVmaW5lIFNTQ1IwX1AzCV9fUkVHKDB4NDE1MDAwMDApICAvKiBTU1AgUG9ydCAzIENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBTU0NSMV9QMwlfX1JFRygweDQxNTAwMDA0KSAgLyogU1NQIFBvcnQgMyBDb250cm9sIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgU1NTUl9QMwkJX19SRUcoMHg0MTUwMDAwOCkgIC8qIFNTUCBQb3J0IDMgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFNTSVRSX1AzCV9fUkVHKDB4NDE1MDAwMEMpICAvKiBTU1AgUG9ydCAzIEludGVycnVwdCBUZXN0IFJlZ2lzdGVyICovCisjZGVmaW5lIFNTRFJfUDMJCV9fUkVHKDB4NDE1MDAwMTApICAvKiAoV3JpdGUgLyBSZWFkKSBTU1AgUG9ydCAzIERhdGEgV3JpdGUgUmVnaXN0ZXIvU1NQIERhdGEgUmVhZCBSZWdpc3RlciAqLworI2RlZmluZSBTU1RPX1AzCQlfX1JFRygweDQxNTAwMDI4KSAgLyogU1NQIFBvcnQgMyBUaW1lIE91dCBSZWdpc3RlciAqLworI2RlZmluZSBTU1BTUF9QMwlfX1JFRygweDQxNTAwMDJDKSAgLyogU1NQIFBvcnQgMyBQcm9ncmFtbWFibGUgU2VyaWFsIFByb3RvY29sICovCisjZW5kaWYKKworI2RlZmluZSBTU0NSMF9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NDUjBfUDEgOiAoKHgpID09IDIpID8gJlNTQ1IwX1AyIDogKCh4KSA9PSAzKSA/ICZTU0NSMF9QMyA6IE5VTEwpKQorI2RlZmluZSBTU0NSMV9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NDUjFfUDEgOiAoKHgpID09IDIpID8gJlNTQ1IxX1AyIDogKCh4KSA9PSAzKSA/ICZTU0NSMV9QMyA6IE5VTEwpKQorI2RlZmluZSBTU1NSX1AoeCkgKCooKCh4KSA9PSAxKSA/ICZTU1NSX1AxIDogKCh4KSA9PSAyKSA/ICZTU1NSX1AyIDogKCh4KSA9PSAzKSA/ICZTU1NSX1AzIDogTlVMTCkpCisjZGVmaW5lIFNTSVRSX1AoeCkgKCooKCh4KSA9PSAxKSA/ICZTU0lUUl9QMSA6ICgoeCkgPT0gMikgPyAmU1NJVFJfUDIgOiAoKHgpID09IDMpID8gJlNTSVRSX1AzIDogTlVMTCkpCisjZGVmaW5lIFNTRFJfUCh4KSAoKigoKHgpID09IDEpID8gJlNTRFJfUDEgOiAoKHgpID09IDIpID8gJlNTRFJfUDIgOiAoKHgpID09IDMpID8gJlNTRFJfUDMgOiBOVUxMKSkKKyNkZWZpbmUgU1NUT19QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NUT19QMSA6ICgoeCkgPT0gMikgPyAmU1NUT19QMiA6ICgoeCkgPT0gMykgPyAmU1NUT19QMyA6IE5VTEwpKQorI2RlZmluZSBTU1BTUF9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NQU1BfUDEgOiAoKHgpID09IDIpID8gJlNTUFNQX1AyIDogKCh4KSA9PSAzKSA/ICZTU1BTUF9QMyA6IE5VTEwpKQorCisvKgorICogTXVsdGlNZWRpYUNhcmQgKE1NQykgY29udHJvbGxlcgorICovCisKKyNkZWZpbmUgTU1DX1NUUlBDTAlfX1JFRygweDQxMTAwMDAwKSAgLyogQ29udHJvbCB0byBzdGFydCBhbmQgc3RvcCBNTUMgY2xvY2sgKi8KKyNkZWZpbmUgTU1DX1NUQVQJX19SRUcoMHg0MTEwMDAwNCkgIC8qIE1NQyBTdGF0dXMgUmVnaXN0ZXIgKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgTU1DX0NMS1JUCV9fUkVHKDB4NDExMDAwMDgpICAvKiBNTUMgY2xvY2sgcmF0ZSAqLworI2RlZmluZSBNTUNfU1BJCQlfX1JFRygweDQxMTAwMDBjKSAgLyogU1BJIG1vZGUgY29udHJvbCBiaXRzICovCisjZGVmaW5lIE1NQ19DTURBVAlfX1JFRygweDQxMTAwMDEwKSAgLyogQ29tbWFuZC9yZXNwb25zZS9kYXRhIHNlcXVlbmNlIGNvbnRyb2wgKi8KKyNkZWZpbmUgTU1DX1JFU1RPCV9fUkVHKDB4NDExMDAwMTQpICAvKiBFeHBlY3RlZCByZXNwb25zZSB0aW1lIG91dCAqLworI2RlZmluZSBNTUNfUkRUTwlfX1JFRygweDQxMTAwMDE4KSAgLyogRXhwZWN0ZWQgZGF0YSByZWFkIHRpbWUgb3V0ICovCisjZGVmaW5lIE1NQ19CTEtMRU4JX19SRUcoMHg0MTEwMDAxYykgIC8qIEJsb2NrIGxlbmd0aCBvZiBkYXRhIHRyYW5zYWN0aW9uICovCisjZGVmaW5lIE1NQ19OT0IJCV9fUkVHKDB4NDExMDAwMjApICAvKiBOdW1iZXIgb2YgYmxvY2tzLCBmb3IgYmxvY2sgbW9kZSAqLworI2RlZmluZSBNTUNfUFJUQlVGCV9fUkVHKDB4NDExMDAwMjQpICAvKiBQYXJ0aWFsIE1NQ19UWEZJRk8gRklGTyB3cml0dGVuICovCisjZGVmaW5lIE1NQ19JX01BU0sJX19SRUcoMHg0MTEwMDAyOCkgIC8qIEludGVycnVwdCBNYXNrICovCisjZGVmaW5lIE1NQ19JX1JFRwlfX1JFRygweDQxMTAwMDJjKSAgLyogSW50ZXJydXB0IFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCisjZGVmaW5lIE1NQ19DTUQJCV9fUkVHKDB4NDExMDAwMzApICAvKiBJbmRleCBvZiBjdXJyZW50IGNvbW1hbmQgKi8KKyNkZWZpbmUgTU1DX0FSR0gJX19SRUcoMHg0MTEwMDAzNCkgIC8qIE1TVyBwYXJ0IG9mIHRoZSBjdXJyZW50IGNvbW1hbmQgYXJndW1lbnQgKi8KKyNkZWZpbmUgTU1DX0FSR0wJX19SRUcoMHg0MTEwMDAzOCkgIC8qIExTVyBwYXJ0IG9mIHRoZSBjdXJyZW50IGNvbW1hbmQgYXJndW1lbnQgKi8KKyNkZWZpbmUgTU1DX1JFUwkJX19SRUcoMHg0MTEwMDAzYykgIC8qIFJlc3BvbnNlIEZJRk8gKHJlYWQgb25seSkgKi8KKyNkZWZpbmUgTU1DX1JYRklGTwlfX1JFRygweDQxMTAwMDQwKSAgLyogUmVjZWl2ZSBGSUZPIChyZWFkIG9ubHkpICovCisjZGVmaW5lIE1NQ19UWEZJRk8JX19SRUcoMHg0MTEwMDA0NCkgIC8qIFRyYW5zbWl0IEZJRk8gKHdyaXRlIG9ubHkpICovCisKKworLyoKKyAqIENvcmUgQ2xvY2sKKyAqLworCisjZGVmaW5lIENDQ1IJCV9fUkVHKDB4NDEzMDAwMDApICAvKiBDb3JlIENsb2NrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0tFTgkJX19SRUcoMHg0MTMwMDAwNCkgIC8qIENsb2NrIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBPU0NDCQlfX1JFRygweDQxMzAwMDA4KSAgLyogT3NjaWxsYXRvciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIENDU1IJCV9fUkVHKDB4NDEzMDAwMEMpICAvKiBDb3JlIENsb2NrIFN0YXR1cyBSZWdpc3RlciAqLworCisjZGVmaW5lIENDQ1JfTl9NQVNLCTB4MDM4MAkJLyogUnVuIE1vZGUgRnJlcXVlbmN5IHRvIFR1cmJvIE1vZGUgRnJlcXVlbmN5IE11bHRpcGxpZXIgKi8KKyNkZWZpbmUgQ0NDUl9NX01BU0sJMHgwMDYwCQkvKiBNZW1vcnkgRnJlcXVlbmN5IHRvIFJ1biBNb2RlIEZyZXF1ZW5jeSBNdWx0aXBsaWVyICovCisjZGVmaW5lIENDQ1JfTF9NQVNLCTB4MDAxZgkJLyogQ3J5c3RhbCBGcmVxdWVuY3kgdG8gTWVtb3J5IEZyZXF1ZW5jeSBNdWx0aXBsaWVyICovCisKKyNkZWZpbmUgQ0tFTjI0X0NBTUVSQQkoMSA8PCAyNCkJLyogQ2FtZXJhIEludGVyZmFjZSBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjIzX1NTUDEJKDEgPDwgMjMpCS8qIFNTUDEgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjIyX01FTUMJKDEgPDwgMjIpCS8qIE1lbW9yeSBDb250cm9sbGVyIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMjFfTUVNU1RLCSgxIDw8IDIxKQkvKiBNZW1vcnkgU3RpY2sgSG9zdCBDb250cm9sbGVyICovCisjZGVmaW5lIENLRU4yMF9JTQkoMSA8PCAyMCkJLyogSW50ZXJuYWwgTWVtb3J5IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTlfS0VZUEFECSgxIDw8IDE5KQkvKiBLZXlwYWQgSW50ZXJmYWNlIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMThfVVNJTQkoMSA8PCAxOCkJLyogVVNJTSBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTdfTVNMCSgxIDw8IDE3KQkvKiBNU0wgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjE2X0xDRAkoMSA8PCAxNikJLyogTENEIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xNV9QV1JJMkMJKDEgPDwgMTUpCS8qIFBXUiBJMkMgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjE0X0kyQwkoMSA8PCAxNCkJLyogSTJDIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xM19GSUNQCSgxIDw8IDEzKQkvKiBGSUNQIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xMl9NTUMJKDEgPDwgMTIpCS8qIE1NQyBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTFfVVNCCSgxIDw8IDExKQkvKiBVU0IgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjEwX0FTU1AJKDEgPDwgMTApCS8qIEFTU1AgKFNTUDMpIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTBfVVNCSE9TVAkoMSA8PCAxMCkJLyogVVNCIEhvc3QgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjlfT1NUSU1FUgkoMSA8PCA5KQkvKiBPUyBUaW1lciBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOOV9OU1NQCSgxIDw8IDkpCS8qIE5TU1AgKFNTUDIpIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOOF9JMlMJKDEgPDwgOCkJLyogSTJTIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU43X0JUVUFSVAkoMSA8PCA3KQkvKiBCVFVBUlQgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjZfRkZVQVJUCSgxIDw8IDYpCS8qIEZGVUFSVCBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VONV9TVFVBUlQJKDEgPDwgNSkJLyogU1RVQVJUIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU40X1NTUDMJKDEgPDwgNCkJLyogU1NQMyBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOM19TU1AJKDEgPDwgMykJLyogU1NQIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4zX1NTUDIJKDEgPDwgMykJLyogU1NQMiBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMl9BQzk3CSgxIDw8IDIpCS8qIEFDOTcgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjFfUFdNMQkoMSA8PCAxKQkvKiBQV00xIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMF9QV00wCSgxIDw8IDApCS8qIFBXTTAgQ2xvY2sgRW5hYmxlICovCisKKyNkZWZpbmUgT1NDQ19PT04JKDEgPDwgMSkJLyogMzIuNzY4a0h6IE9PTiAod3JpdGUtb25jZSBvbmx5IGJpdCkgKi8KKyNkZWZpbmUgT1NDQ19PT0sJKDEgPDwgMCkJLyogMzIuNzY4a0h6IE9PSyAocmVhZC1vbmx5IGJpdCkgKi8KKworCisvKgorICogTENECisgKi8KKworI2RlZmluZSBMQ0NSMAkJX19SRUcoMHg0NDAwMDAwMCkgIC8qIExDRCBDb250cm9sbGVyIENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBMQ0NSMQkJX19SRUcoMHg0NDAwMDAwNCkgIC8qIExDRCBDb250cm9sbGVyIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBMQ0NSMgkJX19SRUcoMHg0NDAwMDAwOCkgIC8qIExDRCBDb250cm9sbGVyIENvbnRyb2wgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBMQ0NSMwkJX19SRUcoMHg0NDAwMDAwQykgIC8qIExDRCBDb250cm9sbGVyIENvbnRyb2wgUmVnaXN0ZXIgMyAqLworI2RlZmluZSBERkJSMAkJX19SRUcoMHg0NDAwMDAyMCkgIC8qIERNQSBDaGFubmVsIDAgRnJhbWUgQnJhbmNoIFJlZ2lzdGVyICovCisjZGVmaW5lIERGQlIxCQlfX1JFRygweDQ0MDAwMDI0KSAgLyogRE1BIENoYW5uZWwgMSBGcmFtZSBCcmFuY2ggUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTENTUgkJX19SRUcoMHg0NDAwMDAzOCkgIC8qIExDRCBDb250cm9sbGVyIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBMSUlEUgkJX19SRUcoMHg0NDAwMDAzQykgIC8qIExDRCBDb250cm9sbGVyIEludGVycnVwdCBJRCBSZWdpc3RlciAqLworI2RlZmluZSBUTUVEUkdCUglfX1JFRygweDQ0MDAwMDQwKSAgLyogVE1FRCBSR0IgU2VlZCBSZWdpc3RlciAqLworI2RlZmluZSBUTUVEQ1IJCV9fUkVHKDB4NDQwMDAwNDQpICAvKiBUTUVEIENvbnRyb2wgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBMQ0NSM18xQlBQICgwIDw8IDI0KQorI2RlZmluZSBMQ0NSM18yQlBQICgxIDw8IDI0KQorI2RlZmluZSBMQ0NSM180QlBQICgyIDw8IDI0KQorI2RlZmluZSBMQ0NSM184QlBQICgzIDw8IDI0KQorI2RlZmluZSBMQ0NSM18xNkJQUCAoNCA8PCAyNCkKKworI2RlZmluZSBGREFEUjAJCV9fUkVHKDB4NDQwMDAyMDApICAvKiBETUEgQ2hhbm5lbCAwIEZyYW1lIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBGU0FEUjAJCV9fUkVHKDB4NDQwMDAyMDQpICAvKiBETUEgQ2hhbm5lbCAwIEZyYW1lIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIEZJRFIwCQlfX1JFRygweDQ0MDAwMjA4KSAgLyogRE1BIENoYW5uZWwgMCBGcmFtZSBJRCBSZWdpc3RlciAqLworI2RlZmluZSBMRENNRDAJCV9fUkVHKDB4NDQwMDAyMEMpICAvKiBETUEgQ2hhbm5lbCAwIENvbW1hbmQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRkRBRFIxCQlfX1JFRygweDQ0MDAwMjEwKSAgLyogRE1BIENoYW5uZWwgMSBGcmFtZSBEZXNjcmlwdG9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRlNBRFIxCQlfX1JFRygweDQ0MDAwMjE0KSAgLyogRE1BIENoYW5uZWwgMSBGcmFtZSBTb3VyY2UgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBGSURSMQkJX19SRUcoMHg0NDAwMDIxOCkgIC8qIERNQSBDaGFubmVsIDEgRnJhbWUgSUQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTERDTUQxCQlfX1JFRygweDQ0MDAwMjFDKSAgLyogRE1BIENoYW5uZWwgMSBDb21tYW5kIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgTENDUjBfRU5CCSgxIDw8IDApCS8qIExDRCBDb250cm9sbGVyIGVuYWJsZSAqLworI2RlZmluZSBMQ0NSMF9DTVMJKDEgPDwgMSkJLyogQ29sb3IvTW9ub2Nocm9tZSBEaXNwbGF5IFNlbGVjdCAqLworI2RlZmluZSBMQ0NSMF9Db2xvciAgICAgKExDQ1IwX0NNUyowKSAgIC8qICBDb2xvciBkaXNwbGF5ICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfTW9ubyAgICAgIChMQ0NSMF9DTVMqMSkgICAvKiAgTW9ub2Nocm9tZSBkaXNwbGF5ICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX1NEUwkoMSA8PCAyKQkvKiBTaW5nbGUvRHVhbCBQYW5lbCBEaXNwbGF5ICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMF9TbmdsICAgICAgKExDQ1IwX1NEUyowKSAgIC8qICBTaW5nbGUgcGFuZWwgZGlzcGxheSAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfRHVhbCAgICAgIChMQ0NSMF9TRFMqMSkgICAvKiAgRHVhbCBwYW5lbCBkaXNwbGF5ICAgICAgICAgICAgICovCisKKyNkZWZpbmUgTENDUjBfTERNCSgxIDw8IDMpCS8qIExDRCBEaXNhYmxlIERvbmUgTWFzayAqLworI2RlZmluZSBMQ0NSMF9TRk0JKDEgPDwgNCkJLyogU3RhcnQgb2YgZnJhbWUgbWFzayAqLworI2RlZmluZSBMQ0NSMF9JVU0JKDEgPDwgNSkJLyogSW5wdXQgRklGTyB1bmRlcnJ1biBtYXNrICovCisjZGVmaW5lIExDQ1IwX0VGTQkoMSA8PCA2KQkvKiBFbmQgb2YgRnJhbWUgbWFzayAqLworI2RlZmluZSBMQ0NSMF9QQVMJKDEgPDwgNykJLyogUGFzc2l2ZS9BY3RpdmUgZGlzcGxheSBTZWxlY3QgICAqLworI2RlZmluZSBMQ0NSMF9QYXMgICAgICAgKExDQ1IwX1BBUyowKSAgIC8qICBQYXNzaXZlIGRpc3BsYXkgKFNUTikgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfQWN0ICAgICAgIChMQ0NSMF9QQVMqMSkgICAvKiAgQWN0aXZlIGRpc3BsYXkgKFRGVCkgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX0RQRAkoMSA8PCA5KQkvKiBEb3VibGUgUGl4ZWwgRGF0YSAobW9ub2Nocm9tZSAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGlzcGxheSBtb2RlKSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMF80UGl4TW9ubyAgKExDQ1IwX0RQRCowKSAgIC8qICA0LVBpeGVsL2Nsb2NrIE1vbm9jaHJvbWUgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwXzhQaXhNb25vICAoTENDUjBfRFBEKjEpICAgLyogIDgtUGl4ZWwvY2xvY2sgTW9ub2Nocm9tZSAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfRElTCSgxIDw8IDEwKQkvKiBMQ0QgRGlzYWJsZSAqLworI2RlZmluZSBMQ0NSMF9RRE0JKDEgPDwgMTEpCS8qIExDRCBRdWljayBEaXNhYmxlIG1hc2sgKi8KKyNkZWZpbmUgTENDUjBfUERECSgweGZmIDw8IDEyKQkvKiBQYWxldHRlIERNQSByZXF1ZXN0IGRlbGF5ICovCisjZGVmaW5lIExDQ1IwX1BERF9TCTEyCisjZGVmaW5lIExDQ1IwX0JNCSgxIDw8IDIwKSAJLyogQnJhbmNoIG1hc2sgKi8KKyNkZWZpbmUgTENDUjBfT1VNCSgxIDw8IDIxKQkvKiBPdXRwdXQgRklGTyB1bmRlcnJ1biBtYXNrICovCisKKyNkZWZpbmUgTENDUjFfUFBMICAgICAgIEZsZCAoMTAsIDApICAgICAgLyogUGl4ZWxzIFBlciBMaW5lIC0gMSAqLworI2RlZmluZSBMQ0NSMV9EaXNXZHRoKFBpeGVsKSAgICAgICAgICAgIC8qIERpc3BsYXkgV2lkdGggWzEuLjgwMCBwaXguXSAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgKCgoUGl4ZWwpIC0gMSkgPDwgRlNoZnQgKExDQ1IxX1BQTCkpCisKKyNkZWZpbmUgTENDUjFfSFNXICAgICAgIEZsZCAoNiwgMTApICAgICAvKiBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KKyNkZWZpbmUgTENDUjFfSG9yU25jaFdkdGgoVHBpeCkgICAgICAgICAvKiBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHB1bHNlIFdpZHRoIFsxLi42NCBUcGl4XSAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAoKChUcGl4KSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9IU1cpKQorCisjZGVmaW5lIExDQ1IxX0VMVyAgICAgICBGbGQgKDgsIDE2KSAgICAgLyogRW5kLW9mLUxpbmUgcGl4ZWwgY2xvY2sgV2FpdCAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50IC0gMSBbVHBpeF0gICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjFfRW5kTG5EZWwoVHBpeCkgICAgICAgICAgICAvKiAgRW5kLW9mLUxpbmUgRGVsYXkgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgWzEuLjI1NiBUcGl4XSAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoKFRwaXgpIC0gMSkgPDwgRlNoZnQgKExDQ1IxX0VMVykpCisKKyNkZWZpbmUgTENDUjFfQkxXICAgICAgIEZsZCAoOCwgMjQpICAgICAvKiBCZWdpbm5pbmctb2YtTGluZSBwaXhlbCBjbG9jayAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2FpdCBjb3VudCAtIDEgW1RwaXhdICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMV9CZWdMbkRlbChUcGl4KSAgICAgICAgICAgIC8qICBCZWdpbm5pbmctb2YtTGluZSBEZWxheSAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBbMS4uMjU2IFRwaXhdICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgKCgoVHBpeCkgLSAxKSA8PCBGU2hmdCAoTENDUjFfQkxXKSkKKworCisjZGVmaW5lIExDQ1IyX0xQUCAgICAgICBGbGQgKDEwLCAwKSAgICAgLyogTGluZSBQZXIgUGFuZWwgLSAxICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMl9EaXNIZ2h0KExpbmUpICAgICAgICAgICAgIC8qICBEaXNwbGF5IEhlaWdodCBbMS4uMTAyNCBsaW5lc10gKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgKCgoTGluZSkgLSAxKSA8PCBGU2hmdCAoTENDUjJfTFBQKSkKKworI2RlZmluZSBMQ0NSMl9WU1cgICAgICAgRmxkICg2LCAxMCkgICAgIC8qIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXaWR0aCAtIDEgW1Rsbl0gKExfRkNMSykgICAgICAgICovCisjZGVmaW5lIExDQ1IyX1ZydFNuY2hXZHRoKFRsbikgICAgICAgICAgLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdpZHRoIFsxLi42NCBUbG5dICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAoKChUbG4pIC0gMSkgPDwgRlNoZnQgKExDQ1IyX1ZTVykpCisKKyNkZWZpbmUgTENDUjJfRUZXICAgICAgIEZsZCAoOCwgMTYpICAgICAvKiBFbmQtb2YtRnJhbWUgbGluZSBjbG9jayBXYWl0ICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMl9FbmRGcm1EZWwoVGxuKSAgICAgICAgICAgIC8qICBFbmQtb2YtRnJhbWUgRGVsYXkgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBbMC4uMjU1IFRsbl0gICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgKChUbG4pIDw8IEZTaGZ0IChMQ0NSMl9FRlcpKQorCisjZGVmaW5lIExDQ1IyX0JGVyAgICAgICBGbGQgKDgsIDI0KSAgICAgLyogQmVnaW5uaW5nLW9mLUZyYW1lIGxpbmUgY2xvY2sgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjJfQmVnRnJtRGVsKFRsbikgICAgICAgICAgICAvKiAgQmVnaW5uaW5nLW9mLUZyYW1lIERlbGF5ICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgWzAuLjI1NSBUbG5dICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVGxuKSA8PCBGU2hmdCAoTENDUjJfQkZXKSkKKworI2lmIDAKKyNkZWZpbmUgTENDUjNfUENECSgweGZmKQkJLyogUGl4ZWwgY2xvY2sgZGl2aXNvciAqLworI2RlZmluZSBMQ0NSM19BQ0IJKDB4ZmYgPDwgOCkJLyogQUMgQmlhcyBwaW4gZnJlcXVlbmN5ICovCisjZGVmaW5lIExDQ1IzX0FDQl9TCTgKKyNlbmRpZgorCisjZGVmaW5lIExDQ1IzX0FQSQkoMHhmIDw8IDE2KQkvKiBBQyBCaWFzIHBpbiB0cmFzaXRpb25zIHBlciBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgTENDUjNfQVBJX1MJMTYKKyNkZWZpbmUgTENDUjNfVlNQCSgxIDw8IDIwKQkvKiB2ZXJ0aWNhbCBzeW5jIHBvbGFyaXR5ICovCisjZGVmaW5lIExDQ1IzX0hTUAkoMSA8PCAyMSkJLyogaG9yaXpvbnRhbCBzeW5jIHBvbGFyaXR5ICovCisjZGVmaW5lIExDQ1IzX1BDUAkoMSA8PCAyMikJLyogUGl4ZWwgQ2xvY2sgUG9sYXJpdHkgKExfUENMSykgICAqLworI2RlZmluZSBMQ0NSM19QaXhSc0VkZyAgKExDQ1IzX1BDUCowKSAgIC8qICBQaXhlbCBjbG9jayBSaXNpbmctRWRnZSAgICAgICAgKi8KKyNkZWZpbmUgTENDUjNfUGl4RmxFZGcgIChMQ0NSM19QQ1AqMSkgICAvKiAgUGl4ZWwgY2xvY2sgRmFsbGluZy1FZGdlICAgICAgICovCisKKyNkZWZpbmUgTENDUjNfT0VQICAgICAgICgxIDw8IDIzKSAgICAgICAvKiBPdXRwdXQgRW5hYmxlIFBvbGFyaXR5IChMX0JJQVMsICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWN0aXZlIGRpc3BsYXkgbW9kZSkgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSM19PdXRFbkggICAgKExDQ1IzX09FUCowKSAgIC8qICBPdXRwdXQgRW5hYmxlIGFjdGl2ZSBIaWdoICAgICAgKi8KKyNkZWZpbmUgTENDUjNfT3V0RW5MICAgIChMQ0NSM19PRVAqMSkgICAvKiAgT3V0cHV0IEVuYWJsZSBhY3RpdmUgTG93ICAgICAgICovCisKKyNpZiAwCisjZGVmaW5lIExDQ1IzX0JQUAkoNyA8PCAyNCkJLyogYml0cyBwZXIgcGl4ZWwgKi8KKyNkZWZpbmUgTENDUjNfQlBQX1MJMjQKKyNlbmRpZgorI2RlZmluZSBMQ0NSM19EUEMJKDEgPDwgMjcpCS8qIGRvdWJsZSBwaXhlbCBjbG9jayBtb2RlICovCisKKworI2RlZmluZSBMQ0NSM19QQ0QgICAgICAgRmxkICg4LCAwKSAgICAgIC8qIFBpeGVsIENsb2NrIERpdmlzb3IgKi8KKyNkZWZpbmUgTENDUjNfUGl4Q2xrRGl2KERpdikgICAgICAgICAgICAvKiBQaXhlbCBDbG9jayBEaXZpc29yICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoKERpdikgPDwgRlNoZnQgKExDQ1IzX1BDRCkpKQorCisKKyNkZWZpbmUgTENDUjNfQlBQICAgICAgIEZsZCAoMywgMjQpICAgICAvKiBCaXQgUGVyIFBpeGVsICovCisjZGVmaW5lIExDQ1IzX0JwcChCcHApICAgICAgICAgICAgICAgICAgLyogQml0IFBlciBQaXhlbCAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAoKChCcHApIDw8IEZTaGZ0IChMQ0NSM19CUFApKSkKKworI2RlZmluZSBMQ0NSM19BQ0IgICAgICAgRmxkICg4LCA4KSAgICAgIC8qIEFDIEJpYXMgKi8KKyNkZWZpbmUgTENDUjNfQWNiKEFjYikgICAgICAgICAgICAgICAgICAvKiBCQUMgQmlhcyAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAoKChBY2IpIDw8IEZTaGZ0IChMQ0NSM19BQ0IpKSkKKworI2RlZmluZSBMQ0NSM19Ib3JTbmNoSCAgKExDQ1IzX0hTUCowKSAgIC8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgcHVsc2UgYWN0aXZlIEhpZ2ggICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX0hvclNuY2hMICAoTENDUjNfSFNQKjEpICAgLyogIEhvcml6b250YWwgU3luY2hyb25pemF0aW9uICAgICAqLworCisjZGVmaW5lIExDQ1IzX1ZydFNuY2hIICAoTENDUjNfVlNQKjApICAgLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBhY3RpdmUgSGlnaCAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjNfVnJ0U25jaEwgIChMQ0NSM19WU1AqMSkgICAvKiAgVmVydGljYWwgU3luY2hyb25pemF0aW9uIHB1bHNlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIGFjdGl2ZSBMb3cgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIExDU1JfTERECSgxIDw8IDApCS8qIExDRCBEaXNhYmxlIERvbmUgKi8KKyNkZWZpbmUgTENTUl9TT0YJKDEgPDwgMSkJLyogU3RhcnQgb2YgZnJhbWUgKi8KKyNkZWZpbmUgTENTUl9CRVIJKDEgPDwgMikJLyogQnVzIGVycm9yICovCisjZGVmaW5lIExDU1JfQUJDCSgxIDw8IDMpCS8qIEFDIEJpYXMgY291bnQgKi8KKyNkZWZpbmUgTENTUl9JVUwJKDEgPDwgNCkJLyogaW5wdXQgRklGTyB1bmRlcnJ1biBMb3dlciBwYW5lbCAqLworI2RlZmluZSBMQ1NSX0lVVQkoMSA8PCA1KQkvKiBpbnB1dCBGSUZPIHVuZGVycnVuIFVwcGVyIHBhbmVsICovCisjZGVmaW5lIExDU1JfT1UJCSgxIDw8IDYpCS8qIG91dHB1dCBGSUZPIHVuZGVycnVuICovCisjZGVmaW5lIExDU1JfUUQJCSgxIDw8IDcpCS8qIHF1aWNrIGRpc2FibGUgKi8KKyNkZWZpbmUgTENTUl9FT0YJKDEgPDwgOCkJLyogZW5kIG9mIGZyYW1lICovCisjZGVmaW5lIExDU1JfQlMJCSgxIDw8IDkpCS8qIGJyYW5jaCBzdGF0dXMgKi8KKyNkZWZpbmUgTENTUl9TSU5UCSgxIDw8IDEwKQkvKiBzdWJzZXF1ZW50IGludGVycnVwdCAqLworCisjZGVmaW5lIExEQ01EX1BBTAkoMSA8PCAyNikJLyogaW5zdHJ1Y3RzIERNQSB0byBsb2FkIHBhbGV0dGUgYnVmZmVyICovCisKKyNkZWZpbmUgTENTUl9MREQJKDEgPDwgMCkJLyogTENEIERpc2FibGUgRG9uZSAqLworI2RlZmluZSBMQ1NSX1NPRgkoMSA8PCAxKQkvKiBTdGFydCBvZiBmcmFtZSAqLworI2RlZmluZSBMQ1NSX0JFUgkoMSA8PCAyKQkvKiBCdXMgZXJyb3IgKi8KKyNkZWZpbmUgTENTUl9BQkMJKDEgPDwgMykJLyogQUMgQmlhcyBjb3VudCAqLworI2RlZmluZSBMQ1NSX0lVTAkoMSA8PCA0KQkvKiBpbnB1dCBGSUZPIHVuZGVycnVuIExvd2VyIHBhbmVsICovCisjZGVmaW5lIExDU1JfSVVVCSgxIDw8IDUpCS8qIGlucHV0IEZJRk8gdW5kZXJydW4gVXBwZXIgcGFuZWwgKi8KKyNkZWZpbmUgTENTUl9PVQkJKDEgPDwgNikJLyogb3V0cHV0IEZJRk8gdW5kZXJydW4gKi8KKyNkZWZpbmUgTENTUl9RRAkJKDEgPDwgNykJLyogcXVpY2sgZGlzYWJsZSAqLworI2RlZmluZSBMQ1NSX0VPRgkoMSA8PCA4KQkvKiBlbmQgb2YgZnJhbWUgKi8KKyNkZWZpbmUgTENTUl9CUwkJKDEgPDwgOSkJLyogYnJhbmNoIHN0YXR1cyAqLworI2RlZmluZSBMQ1NSX1NJTlQJKDEgPDwgMTApCS8qIHN1YnNlcXVlbnQgaW50ZXJydXB0ICovCisKKyNkZWZpbmUgTERDTURfUEFMCSgxIDw8IDI2KQkvKiBpbnN0cnVjdHMgRE1BIHRvIGxvYWQgcGFsZXR0ZSBidWZmZXIgKi8KKworLyoKKyAqIE1lbW9yeSBjb250cm9sbGVyCisgKi8KKworI2RlZmluZSBNRENORkcJCV9fUkVHKDB4NDgwMDAwMDApICAvKiBTRFJBTSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgTURSRUZSCQlfX1JFRygweDQ4MDAwMDA0KSAgLyogU0RSQU0gUmVmcmVzaCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIE1TQzAJCV9fUkVHKDB4NDgwMDAwMDgpICAvKiBTdGF0aWMgTWVtb3J5IENvbnRyb2wgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBNU0MxCQlfX1JFRygweDQ4MDAwMDBDKSAgLyogU3RhdGljIE1lbW9yeSBDb250cm9sIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgTVNDMgkJX19SRUcoMHg0ODAwMDAxMCkgIC8qIFN0YXRpYyBNZW1vcnkgQ29udHJvbCBSZWdpc3RlciAyICovCisjZGVmaW5lIE1FQ1IJCV9fUkVHKDB4NDgwMDAwMTQpICAvKiBFeHBhbnNpb24gTWVtb3J5IChQQ01DSUEvQ29tcGFjdCBGbGFzaCkgQnVzIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgU1hMQ1IJCV9fUkVHKDB4NDgwMDAwMTgpICAvKiBMQ1IgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byBTRFJBTS1UaW1pbmcgU3luY2hyb25vdXMgRmxhc2ggKi8KKyNkZWZpbmUgU1hDTkZHCQlfX1JFRygweDQ4MDAwMDFDKSAgLyogU3luY2hyb25vdXMgU3RhdGljIE1lbW9yeSBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFNYTVJTCQlfX1JFRygweDQ4MDAwMDI0KSAgLyogTVJTIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gU3luY2hyb25vdXMgRmxhc2ggb3IgU01ST00gKi8KKyNkZWZpbmUgTUNNRU0wCQlfX1JFRygweDQ4MDAwMDI4KSAgLyogQ2FyZCBpbnRlcmZhY2UgQ29tbW9uIE1lbW9yeSBTcGFjZSBTb2NrZXQgMCBUaW1pbmcgKi8KKyNkZWZpbmUgTUNNRU0xCQlfX1JFRygweDQ4MDAwMDJDKSAgLyogQ2FyZCBpbnRlcmZhY2UgQ29tbW9uIE1lbW9yeSBTcGFjZSBTb2NrZXQgMSBUaW1pbmcgKi8KKyNkZWZpbmUgTUNBVFQwCQlfX1JFRygweDQ4MDAwMDMwKSAgLyogQ2FyZCBpbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFNvY2tldCAwIFRpbWluZyBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIE1DQVRUMQkJX19SRUcoMHg0ODAwMDAzNCkgIC8qIENhcmQgaW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBTb2NrZXQgMSBUaW1pbmcgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBNQ0lPMAkJX19SRUcoMHg0ODAwMDAzOCkgIC8qIENhcmQgaW50ZXJmYWNlIEkvTyBTcGFjZSBTb2NrZXQgMCBUaW1pbmcgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBNQ0lPMQkJX19SRUcoMHg0ODAwMDAzQykgIC8qIENhcmQgaW50ZXJmYWNlIEkvTyBTcGFjZSBTb2NrZXQgMSBUaW1pbmcgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBNRE1SUwkJX19SRUcoMHg0ODAwMDA0MCkgIC8qIE1SUyB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIFNEUkFNICovCisjZGVmaW5lIEJPT1RfREVGCV9fUkVHKDB4NDgwMDAwNDQpICAvKiBSZWFkLU9ubHkgQm9vdC1UaW1lIFJlZ2lzdGVyLiBDb250YWlucyBCT09UX1NFTCBhbmQgUEtHX1NFTCAqLworCisvKgorICogTW9yZSBoYW5keSBtYWNyb3MgZm9yIFBDTUNJQQorICoKKyAqIEFyZyBpcyBzb2NrZXQgbnVtYmVyCisgKi8KKyNkZWZpbmUgTUNNRU0ocykJX19SRUcyKDB4NDgwMDAwMjgsIChzKTw8MiApICAvKiBDYXJkIGludGVyZmFjZSBDb21tb24gTWVtb3J5IFNwYWNlIFNvY2tldCBzIFRpbWluZyAqLworI2RlZmluZSBNQ0FUVChzKQlfX1JFRzIoMHg0ODAwMDAzMCwgKHMpPDwyICkgIC8qIENhcmQgaW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBTb2NrZXQgcyBUaW1pbmcgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBNQ0lPKHMpCQlfX1JFRzIoMHg0ODAwMDAzOCwgKHMpPDwyICkgIC8qIENhcmQgaW50ZXJmYWNlIEkvTyBTcGFjZSBTb2NrZXQgcyBUaW1pbmcgQ29uZmlndXJhdGlvbiAqLworCisvKiBNRUNSIHJlZ2lzdGVyIGRlZmluZXMgKi8KKyNkZWZpbmUgTUVDUl9OT1MJKDEgPDwgMCkJLyogTnVtYmVyIE9mIFNvY2tldHM6IDAgLT4gMSBzb2NrLCAxIC0+IDIgc29jayAqLworI2RlZmluZSBNRUNSX0NJVAkoMSA8PCAxKQkvKiBDYXJkIElzIFRoZXJlOiAwIC0+IG5vIGNhcmQsIDEgLT4gY2FyZCBpbnNlcnRlZCAqLworCisjZGVmaW5lIE1EUkVGUl9LMkZSRUUJKDEgPDwgMjUpCS8qIFNEUkFNIEZyZWUtUnVubmluZyBDb250cm9sICovCisjZGVmaW5lIE1EUkVGUl9LMUZSRUUJKDEgPDwgMjQpCS8qIFNEUkFNIEZyZWUtUnVubmluZyBDb250cm9sICovCisjZGVmaW5lIE1EUkVGUl9LMEZSRUUJKDEgPDwgMjMpCS8qIFNEUkFNIEZyZWUtUnVubmluZyBDb250cm9sICovCisjZGVmaW5lIE1EUkVGUl9TTEZSU0gJKDEgPDwgMjIpCS8qIFNEUkFNIFNlbGYtUmVmcmVzaCBDb250cm9sL1N0YXR1cyAqLworI2RlZmluZSBNRFJFRlJfQVBECSgxIDw8IDIwKQkvKiBTRFJBTS9TU1JBTSBBdXRvLVBvd2VyLURvd24gRW5hYmxlICovCisjZGVmaW5lIE1EUkVGUl9LMkRCMgkoMSA8PCAxOSkJLyogU0RDTEsyIERpdmlkZSBieSAyIENvbnRyb2wvU3RhdHVzICovCisjZGVmaW5lIE1EUkVGUl9LMlJVTgkoMSA8PCAxOCkJLyogU0RDTEsyIFJ1biBDb250cm9sL1N0YXR1cyAqLworI2RlZmluZSBNRFJFRlJfSzFEQjIJKDEgPDwgMTcpCS8qIFNEQ0xLMSBEaXZpZGUgYnkgMiBDb250cm9sL1N0YXR1cyAqLworI2RlZmluZSBNRFJFRlJfSzFSVU4JKDEgPDwgMTYpCS8qIFNEQ0xLMSBSdW4gQ29udHJvbC9TdGF0dXMgKi8KKyNkZWZpbmUgTURSRUZSX0UxUElOCSgxIDw8IDE1KQkvKiBTRENLRTEgTGV2ZWwgQ29udHJvbC9TdGF0dXMgKi8KKyNkZWZpbmUgTURSRUZSX0swREIyCSgxIDw8IDE0KQkvKiBTRENMSzAgRGl2aWRlIGJ5IDIgQ29udHJvbC9TdGF0dXMgKi8KKyNkZWZpbmUgTURSRUZSX0swUlVOCSgxIDw8IDEzKQkvKiBTRENMSzAgUnVuIENvbnRyb2wvU3RhdHVzICovCisjZGVmaW5lIE1EUkVGUl9FMFBJTgkoMSA8PCAxMikJLyogU0RDS0UwIExldmVsIENvbnRyb2wvU3RhdHVzICovCisKKworI2lmZGVmIENPTkZJR19QWEEyN3gKKworLyoKKyAqIEtleXBhZAorICovCisjZGVmaW5lIEtQQyAgICAgICAgICAgICBfX1JFRygweDQxNTAwMDAwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgS1BESyAgICAgICAgICAgIF9fUkVHKDB4NDE1MDAwMDgpIC8qIEtleXBhZCBJbnRlcmZhY2UgRGlyZWN0IEtleSByZWdpc3RlciAqLworI2RlZmluZSBLUFJFQyAgICAgICAgICAgX19SRUcoMHg0MTUwMDAxMCkgLyogS2V5cGFkIEludGVyZmFjZSBSb3RhcnkgRW5jb2RlciByZWdpc3RlciAqLworI2RlZmluZSBLUE1LICAgICAgICAgICAgX19SRUcoMHg0MTUwMDAxOCkgLyogS2V5cGFkIEludGVyZmFjZSBNYXRyaXggS2V5IHJlZ2lzdGVyICovCisjZGVmaW5lIEtQQVMgICAgICAgICAgICBfX1JFRygweDQxNTAwMDIwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIEF1dG9tYXRpYyBTY2FuIHJlZ2lzdGVyICovCisjZGVmaW5lIEtQQVNNS1AwICAgICAgICBfX1JFRygweDQxNTAwMDI4KSAvKiBLZXlwYWQgSW50ZXJmYWNlIEF1dG9tYXRpYyBTY2FuIE11bHRpcGxlIEtleSBQcmVzc2VyIHJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgS1BBU01LUDEgICAgICAgIF9fUkVHKDB4NDE1MDAwMzApIC8qIEtleXBhZCBJbnRlcmZhY2UgQXV0b21hdGljIFNjYW4gTXVsdGlwbGUgS2V5IFByZXNzZXIgcmVnaXN0ZXIgMSAqLworI2RlZmluZSBLUEFTTUtQMiAgICAgICAgX19SRUcoMHg0MTUwMDAzOCkgLyogS2V5cGFkIEludGVyZmFjZSBBdXRvbWF0aWMgU2NhbiBNdWx0aXBsZSBLZXkgUHJlc3NlciByZWdpc3RlciAyICovCisjZGVmaW5lIEtQQVNNS1AzICAgICAgICBfX1JFRygweDQxNTAwMDQwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIEF1dG9tYXRpYyBTY2FuIE11bHRpcGxlIEtleSBQcmVzc2VyIHJlZ2lzdGVyIDMgKi8KKyNkZWZpbmUgS1BLREkgICAgICAgICAgIF9fUkVHKDB4NDE1MDAwNDgpIC8qIEtleXBhZCBJbnRlcmZhY2UgS2V5IERlYm91bmNlIEludGVydmFsIHJlZ2lzdGVyICovCisKKyNkZWZpbmUgS1BDX0FTICAgICAgICAgICgweDEgPDwgMzApICAvKiBBdXRvbWF0aWMgU2NhbiBiaXQgKi8KKyNkZWZpbmUgS1BDX0FTQUNUICAgICAgICgweDEgPDwgMjkpICAvKiBBdXRvbWF0aWMgU2NhbiBvbiBBY3Rpdml0eSAqLworI2RlZmluZSBLUENfTUkgICAgICAgICAgKDB4MSA8PCAyMikgIC8qIE1hdHJpeCBpbnRlcnJ1cHQgYml0ICovCisjZGVmaW5lIEtQQ19JTUtQICAgICAgICAoMHgxIDw8IDIxKSAgLyogSWdub3JlIE11bHRpcGxlIEtleSBQcmVzcyAqLworI2RlZmluZSBLUENfTVM3ICAgICAgICAgKDB4MSA8PCAyMCkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgNyAqLworI2RlZmluZSBLUENfTVM2ICAgICAgICAgKDB4MSA8PCAxOSkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgNiAqLworI2RlZmluZSBLUENfTVM1ICAgICAgICAgKDB4MSA8PCAxOCkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgNSAqLworI2RlZmluZSBLUENfTVM0ICAgICAgICAgKDB4MSA8PCAxNykgIC8qIE1hdHJpeCBzY2FuIGxpbmUgNCAqLworI2RlZmluZSBLUENfTVMzICAgICAgICAgKDB4MSA8PCAxNikgIC8qIE1hdHJpeCBzY2FuIGxpbmUgMyAqLworI2RlZmluZSBLUENfTVMyICAgICAgICAgKDB4MSA8PCAxNSkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgMiAqLworI2RlZmluZSBLUENfTVMxICAgICAgICAgKDB4MSA8PCAxNCkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgMSAqLworI2RlZmluZSBLUENfTVMwICAgICAgICAgKDB4MSA8PCAxMykgIC8qIE1hdHJpeCBzY2FuIGxpbmUgMCAqLworI2RlZmluZSBLUENfTVNfQUxMICAgICAgKEtQQ19NUzAgfCBLUENfTVMxIHwgS1BDX01TMiB8IEtQQ19NUzMgfCBLUENfTVM0IHwgS1BDX01TNSB8IEtQQ19NUzYgfCBLUENfTVM3KQorI2RlZmluZSBLUENfTUUgICAgICAgICAgKDB4MSA8PCAxMikgIC8qIE1hdHJpeCBLZXlwYWQgRW5hYmxlICovCisjZGVmaW5lIEtQQ19NSUUgICAgICAgICAoMHgxIDw8IDExKSAgLyogTWF0cml4IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgS1BDX0RLX0RFQl9TRUwJKDB4MSA8PCAgOSkgIC8qIERpcmVjdCBLZXlwYWQgRGVib3VuY2UgU2VsZWN0ICovCisjZGVmaW5lIEtQQ19ESSAgICAgICAgICAoMHgxIDw8ICA1KSAgLyogRGlyZWN0IGtleSBpbnRlcnJ1cHQgYml0ICovCisjZGVmaW5lIEtQQ19SRV9aRVJPX0RFQiAoMHgxIDw8ICA0KSAgLyogUm90YXJ5IEVuY29kZXIgWmVybyBEZWJvdW5jZSAqLworI2RlZmluZSBLUENfUkVFMSAgICAgICAgKDB4MSA8PCAgMykgIC8qIFJvdGFyeSBFbmNvZGVyMSBFbmFibGUgKi8KKyNkZWZpbmUgS1BDX1JFRTAgICAgICAgICgweDEgPDwgIDIpICAvKiBSb3RhcnkgRW5jb2RlcjAgRW5hYmxlICovCisjZGVmaW5lIEtQQ19ERSAgICAgICAgICAoMHgxIDw8ICAxKSAgLyogRGlyZWN0IEtleXBhZCBFbmFibGUgKi8KKyNkZWZpbmUgS1BDX0RJRSAgICAgICAgICgweDEgPDwgIDApICAvKiBEaXJlY3QgS2V5cGFkIGludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBLUERLX0RLUCAgICAgICAgKDB4MSA8PCAzMSkKKyNkZWZpbmUgS1BES19ESzcgICAgICAgICgweDEgPDwgIDcpCisjZGVmaW5lIEtQREtfREs2ICAgICAgICAoMHgxIDw8ICA2KQorI2RlZmluZSBLUERLX0RLNSAgICAgICAgKDB4MSA8PCAgNSkKKyNkZWZpbmUgS1BES19ESzQgICAgICAgICgweDEgPDwgIDQpCisjZGVmaW5lIEtQREtfREszICAgICAgICAoMHgxIDw8ICAzKQorI2RlZmluZSBLUERLX0RLMiAgICAgICAgKDB4MSA8PCAgMikKKyNkZWZpbmUgS1BES19ESzEgICAgICAgICgweDEgPDwgIDEpCisjZGVmaW5lIEtQREtfREswICAgICAgICAoMHgxIDw8ICAwKQorCisjZGVmaW5lIEtQUkVDX09GMSAgICAgICAoMHgxIDw8IDMxKQorI2RlZmluZSBrUFJFQ19VRjEgICAgICAgKDB4MSA8PCAzMCkKKyNkZWZpbmUgS1BSRUNfT0YwICAgICAgICgweDEgPDwgMTUpCisjZGVmaW5lIEtQUkVDX1VGMCAgICAgICAoMHgxIDw8IDE0KQorCisjZGVmaW5lIEtQTUtfTUtQICAgICAgICAoMHgxIDw8IDMxKQorI2RlZmluZSBLUEFTX1NPICAgICAgICAgKDB4MSA8PCAzMSkKKyNkZWZpbmUgS1BBU01LUHhfU08gICAgICgweDEgPDwgMzEpCisKKy8qCisgKiBVSEM6IFVTQiBIb3N0IENvbnRyb2xsZXIgKE9IQ0ktbGlrZSkgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBVSENfQkFTRV9QSFlTCSgweDRDMDAwMDAwKQorI2RlZmluZSBVSENSRVYJCV9fUkVHKDB4NEMwMDAwMDApIC8qIFVIQyBIQ0kgU3BlYyBSZXZpc2lvbiAqLworI2RlZmluZSBVSENIQ09OCQlfX1JFRygweDRDMDAwMDA0KSAvKiBVSEMgSG9zdCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFVIQ0NPTVMJCV9fUkVHKDB4NEMwMDAwMDgpIC8qIFVIQyBDb21tYW5kIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVSENJTlRTCQlfX1JFRygweDRDMDAwMDBDKSAvKiBVSEMgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBVSENJTlRFCQlfX1JFRygweDRDMDAwMDEwKSAvKiBVSEMgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBVSENJTlRECQlfX1JFRygweDRDMDAwMDE0KSAvKiBVSEMgSW50ZXJydXB0IERpc2FibGUgKi8KKyNkZWZpbmUgVUhDSENDQQkJX19SRUcoMHg0QzAwMDAxOCkgLyogVUhDIEhvc3QgQ29udHJvbGxlciBDb21tLiBBcmVhICovCisjZGVmaW5lIFVIQ1BDRUQJCV9fUkVHKDB4NEMwMDAwMUMpIC8qIFVIQyBQZXJpb2QgQ3VycmVudCBFbmRwdCBEZXNjciAqLworI2RlZmluZSBVSENDSEVECQlfX1JFRygweDRDMDAwMDIwKSAvKiBVSEMgQ29udHJvbCBIZWFkIEVuZHB0IERlc2NyICovCisjZGVmaW5lIFVIQ0NDRUQJCV9fUkVHKDB4NEMwMDAwMjQpIC8qIFVIQyBDb250cm9sIEN1cnJlbnQgRW5kcHQgRGVzY3IgKi8KKyNkZWZpbmUgVUhDQkhFRAkJX19SRUcoMHg0QzAwMDAyOCkgLyogVUhDIEJ1bGsgSGVhZCBFbmRwdCBEZXNjciAqLworI2RlZmluZSBVSENCQ0VECQlfX1JFRygweDRDMDAwMDJDKSAvKiBVSEMgQnVsayBDdXJyZW50IEVuZHB0IERlc2NyICovCisjZGVmaW5lIFVIQ0RIRUFECV9fUkVHKDB4NEMwMDAwMzApIC8qIFVIQyBEb25lIEhlYWQgKi8KKyNkZWZpbmUgVUhDRk1JCQlfX1JFRygweDRDMDAwMDM0KSAvKiBVSEMgRnJhbWUgSW50ZXJ2YWwgKi8KKyNkZWZpbmUgVUhDRk1SCQlfX1JFRygweDRDMDAwMDM4KSAvKiBVSEMgRnJhbWUgUmVtYWluaW5nICovCisjZGVmaW5lIFVIQ0ZNTgkJX19SRUcoMHg0QzAwMDAzQykgLyogVUhDIEZyYW1lIE51bWJlciAqLworI2RlZmluZSBVSENQRVJTCQlfX1JFRygweDRDMDAwMDQwKSAvKiBVSEMgUGVyaW9kaWMgU3RhcnQgKi8KKyNkZWZpbmUgVUhDTFMJCV9fUkVHKDB4NEMwMDAwNDQpIC8qIFVIQyBMb3cgU3BlZWQgVGhyZXNob2xkICovCisjZGVmaW5lIFVIQ1JIREEJCV9fUkVHKDB4NEMwMDAwNDgpIC8qIFVIQyBSb290IEh1YiBEZXNjcmlwdG9yIEEgKi8KKyNkZWZpbmUgVUhDUkhEQgkJX19SRUcoMHg0QzAwMDA0QykgLyogVUhDIFJvb3QgSHViIERlc2NyaXB0b3IgQiAqLworI2RlZmluZSBVSENSSFMJCV9fUkVHKDB4NEMwMDAwNTApIC8qIFVIQyBSb290IEh1YiBTdGF0dXMgKi8KKyNkZWZpbmUgVUhDUkhQUzEJX19SRUcoMHg0QzAwMDA1NCkgLyogVUhDIFJvb3QgSHViIFBvcnQgMSBTdGF0dXMgKi8KKyNkZWZpbmUgVUhDUkhQUzIJX19SRUcoMHg0QzAwMDA1OCkgLyogVUhDIFJvb3QgSHViIFBvcnQgMiBTdGF0dXMgKi8KKyNkZWZpbmUgVUhDUkhQUzMJX19SRUcoMHg0QzAwMDA1QykgLyogVUhDIFJvb3QgSHViIFBvcnQgMyBTdGF0dXMgKi8KKworI2RlZmluZSBVSENTVEFUCQlfX1JFRygweDRDMDAwMDYwKSAvKiBVSEMgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFVIQ1NUQVRfVVBTMwkoMSA8PCAxNikJLyogVVNCIFBvd2VyIFNlbnNlIFBvcnQzICovCisjZGVmaW5lIFVIQ1NUQVRfU0JNQUkJKDEgPDwgMTUpCS8qIFN5c3RlbSBCdXMgTWFzdGVyIEFib3J0IEludGVycnVwdCovCisjZGVmaW5lIFVIQ1NUQVRfU0JUQUkJKDEgPDwgMTQpCS8qIFN5c3RlbSBCdXMgVGFyZ2V0IEFib3J0IEludGVycnVwdCovCisjZGVmaW5lIFVIQ1NUQVRfVVBSSQkoMSA8PCAxMykJLyogVVNCIFBvcnQgUmVzdW1lIEludGVycnVwdCAqLworI2RlZmluZSBVSENTVEFUX1VQUzIJKDEgPDwgMTIpCS8qIFVTQiBQb3dlciBTZW5zZSBQb3J0IDIgKi8KKyNkZWZpbmUgVUhDU1RBVF9VUFMxCSgxIDw8IDExKQkvKiBVU0IgUG93ZXIgU2Vuc2UgUG9ydCAxICovCisjZGVmaW5lIFVIQ1NUQVRfSFRBCSgxIDw8IDEwKQkvKiBIQ0kgVGFyZ2V0IEFib3J0ICovCisjZGVmaW5lIFVIQ1NUQVRfSEJBCSgxIDw8IDgpCS8qIEhDSSBCdWZmZXIgQWN0aXZlICovCisjZGVmaW5lIFVIQ1NUQVRfUldVRQkoMSA8PCA3KQkvKiBIQ0kgUmVtb3RlIFdha2UgVXAgRXZlbnQgKi8KKworI2RlZmluZSBVSENIUiAgICAgICAgICAgX19SRUcoMHg0QzAwMDA2NCkgLyogVUhDIFJlc2V0IFJlZ2lzdGVyICovCisjZGVmaW5lIFVIQ0hSX1NTRVAzCSgxIDw8IDExKQkvKiBTbGVlcCBTdGFuZGJ5IEVuYWJsZSBmb3IgUG9ydDMgKi8KKyNkZWZpbmUgVUhDSFJfU1NFUDIJKDEgPDwgMTApCS8qIFNsZWVwIFN0YW5kYnkgRW5hYmxlIGZvciBQb3J0MiAqLworI2RlZmluZSBVSENIUl9TU0VQMQkoMSA8PCA5KQkvKiBTbGVlcCBTdGFuZGJ5IEVuYWJsZSBmb3IgUG9ydDEgKi8KKyNkZWZpbmUgVUhDSFJfUENQTAkoMSA8PCA3KQkvKiBQb3dlciBjb250cm9sIHBvbGFyaXR5IGxvdyAqLworI2RlZmluZSBVSENIUl9QU1BMCSgxIDw8IDYpCS8qIFBvd2VyIHNlbnNlIHBvbGFyaXR5IGxvdyAqLworI2RlZmluZSBVSENIUl9TU0UJKDEgPDwgNSkJLyogU2xlZXAgU3RhbmRieSBFbmFibGUgKi8KKyNkZWZpbmUgVUhDSFJfVUlUCSgxIDw8IDQpCS8qIFVTQiBJbnRlcnJ1cHQgVGVzdCAqLworI2RlZmluZSBVSENIUl9TU0RDCSgxIDw8IDMpCS8qIFNpbXVsYXRpb24gU2NhbGUgRG93biBDbG9jayAqLworI2RlZmluZSBVSENIUl9DR1IJKDEgPDwgMikJLyogQ2xvY2sgR2VuZXJhdGlvbiBSZXNldCAqLworI2RlZmluZSBVSENIUl9GSFIJKDEgPDwgMSkJLyogRm9yY2UgSG9zdCBDb250cm9sbGVyIFJlc2V0ICovCisjZGVmaW5lIFVIQ0hSX0ZTQklSCSgxIDw8IDApCS8qIEZvcmNlIFN5c3RlbSBCdXMgSWZhY2UgUmVzZXQgKi8KKworI2RlZmluZSBVSENISUUgICAgICAgICAgX19SRUcoMHg0QzAwMDA2OCkgLyogVUhDIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIqLworI2RlZmluZSBVSENISUVfVVBTM0lFCSgxIDw8IDE0KQkvKiBQb3dlciBTZW5zZSBQb3J0MyBJbnRFbiAqLworI2RlZmluZSBVSENISUVfVVBSSUUJKDEgPDwgMTMpCS8qIFBvcnQgUmVzdW1lIEludEVuICovCisjZGVmaW5lIFVIQ0hJRV9VUFMySUUJKDEgPDwgMTIpCS8qIFBvd2VyIFNlbnNlIFBvcnQyIEludEVuICovCisjZGVmaW5lIFVIQ0hJRV9VUFMxSUUJKDEgPDwgMTEpCS8qIFBvd2VyIFNlbnNlIFBvcnQxIEludEVuICovCisjZGVmaW5lIFVIQ0hJRV9UQUlFCSgxIDw8IDEwKQkvKiBIQ0kgSW50ZXJmYWNlIFRyYW5zZmVyIEFib3J0CisJCQkJCSAgIEludGVycnVwdCBFbmFibGUqLworI2RlZmluZSBVSENISUVfSEJBSUUJKDEgPDwgOCkJLyogSENJIEJ1ZmZlciBBY3RpdmUgSW50RW4gKi8KKyNkZWZpbmUgVUhDSElFX1JXSUUJKDEgPDwgNykJLyogUmVtb3RlIFdha2UtdXAgSW50RW4gKi8KKworI2RlZmluZSBVSENISVQgICAgICAgICAgX19SRUcoMHg0QzAwMDA2QykgLyogVUhDIEludGVycnVwdCBUZXN0IHJlZ2lzdGVyICovCisKKy8qIENhbWVyYSBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgQ0lDUjAJCV9fUkVHKDB4NTAwMDAwMDApCisjZGVmaW5lIENJQ1IxCQlfX1JFRygweDUwMDAwMDA0KQorI2RlZmluZSBDSUNSMgkJX19SRUcoMHg1MDAwMDAwOCkKKyNkZWZpbmUgQ0lDUjMJCV9fUkVHKDB4NTAwMDAwMEMpCisjZGVmaW5lIENJQ1I0CQlfX1JFRygweDUwMDAwMDEwKQorI2RlZmluZSBDSVNSCQlfX1JFRygweDUwMDAwMDE0KQorI2RlZmluZSBDSUZSCQlfX1JFRygweDUwMDAwMDE4KQorI2RlZmluZSBDSVRPUgkJX19SRUcoMHg1MDAwMDAxQykKKyNkZWZpbmUgQ0lCUjAJCV9fUkVHKDB4NTAwMDAwMjgpCisjZGVmaW5lIENJQlIxCQlfX1JFRygweDUwMDAwMDMwKQorI2RlZmluZSBDSUJSMgkJX19SRUcoMHg1MDAwMDAzOCkKKworI2RlZmluZSBDSUNSMF9ETUFFTgkoMSA8PCAzMSkJLyogRE1BIHJlcXVlc3QgZW5hYmxlICovCisjZGVmaW5lIENJQ1IwX1BBUl9FTgkoMSA8PCAzMCkJLyogUGFyaXR5IGVuYWJsZSAqLworI2RlZmluZSBDSUNSMF9TTF9DQVBfRU4JKDEgPDwgMjkpCS8qIENhcHR1cmUgZW5hYmxlIGZvciBzbGF2ZSBtb2RlICovCisjZGVmaW5lIENJQ1IwX0VOQgkoMSA8PCAyOCkJLyogQ2FtZXJhIGludGVyZmFjZSBlbmFibGUgKi8KKyNkZWZpbmUgQ0lDUjBfRElTCSgxIDw8IDI3KQkvKiBDYW1lcmEgaW50ZXJmYWNlIGRpc2FibGUgKi8KKyNkZWZpbmUgQ0lDUjBfU0lNCSgweDcgPDwgMjQpCS8qIFNlbnNvciBpbnRlcmZhY2UgbW9kZSBtYXNrICovCisjZGVmaW5lIENJQ1IwX1RPTQkoMSA8PCA5KQkvKiBUaW1lLW91dCBtYXNrICovCisjZGVmaW5lIENJQ1IwX1JEQVZNCSgxIDw8IDgpCS8qIFJlY2VpdmUtZGF0YS1hdmFpbGFibGUgbWFzayAqLworI2RlZmluZSBDSUNSMF9GRU0JKDEgPDwgNykJLyogRklGTy1lbXB0eSBtYXNrICovCisjZGVmaW5lIENJQ1IwX0VPTE0JKDEgPDwgNikJLyogRW5kLW9mLWxpbmUgbWFzayAqLworI2RlZmluZSBDSUNSMF9QRVJSTQkoMSA8PCA1KQkvKiBQYXJpdHktZXJyb3IgbWFzayAqLworI2RlZmluZSBDSUNSMF9RRE0JKDEgPDwgNCkJLyogUXVpY2stZGlzYWJsZSBtYXNrICovCisjZGVmaW5lIENJQ1IwX0NETQkoMSA8PCAzKQkvKiBEaXNhYmxlLWRvbmUgbWFzayAqLworI2RlZmluZSBDSUNSMF9TT0ZNCSgxIDw8IDIpCS8qIFN0YXJ0LW9mLWZyYW1lIG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjBfRU9GTQkoMSA8PCAxKQkvKiBFbmQtb2YtZnJhbWUgbWFzayAqLworI2RlZmluZSBDSUNSMF9GT00JKDEgPDwgMCkJLyogRklGTy1vdmVycnVuIG1hc2sgKi8KKworI2RlZmluZSBDSUNSMV9UQklUCSgxIDw8IDMxKQkvKiBUcmFuc3BhcmVuY3kgYml0ICovCisjZGVmaW5lIENJQ1IxX1JHQlRfQ09OVgkoMHgzIDw8IDMwKQkvKiBSR0JUIGNvbnZlcnNpb24gbWFzayAqLworI2RlZmluZSBDSUNSMV9QUEwJKDB4M2YgPDwgMTUpCS8qIFBpeGVscyBwZXIgbGluZSBtYXNrICovCisjZGVmaW5lIENJQ1IxX1JHQl9DT05WCSgweDcgPDwgMTIpCS8qIFJHQiBjb252ZXJzaW9uIG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjFfUkdCX0YJKDEgPDwgMTEpCS8qIFJHQiBmb3JtYXQgKi8KKyNkZWZpbmUgQ0lDUjFfWUNCQ1JfRgkoMSA8PCAxMCkJLyogWUNiQ3IgZm9ybWF0ICovCisjZGVmaW5lIENJQ1IxX1JHQl9CUFAJKDB4NyA8PCA3KQkvKiBSR0IgYmlzIHBlciBwaXhlbCBtYXNrICovCisjZGVmaW5lIENJQ1IxX1JBV19CUFAJKDB4MyA8PCA1KQkvKiBSYXcgYmlzIHBlciBwaXhlbCBtYXNrICovCisjZGVmaW5lIENJQ1IxX0NPTE9SX1NQCSgweDMgPDwgMykJLyogQ29sb3Igc3BhY2UgbWFzayAqLworI2RlZmluZSBDSUNSMV9EVwkoMHg3IDw8IDApCS8qIERhdGEgd2lkdGggbWFzayAqLworCisjZGVmaW5lIENJQ1IyX0JMVwkoMHhmZiA8PCAyNCkJLyogQmVnaW5uaW5nLW9mLWxpbmUgcGl4ZWwgY2xvY2sKKwkJCQkJICAgd2FpdCBjb3VudCBtYXNrICovCisjZGVmaW5lIENJQ1IyX0VMVwkoMHhmZiA8PCAxNikJLyogRW5kLW9mLWxpbmUgcGl4ZWwgY2xvY2sKKwkJCQkJICAgd2FpdCBjb3VudCBtYXNrICovCisjZGVmaW5lIENJQ1IyX0hTVwkoMHgzZiA8PCAxMCkJLyogSG9yaXpvbnRhbCBzeW5jIHB1bHNlIHdpZHRoIG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjJfQkZQVwkoMHgzZiA8PCAzKQkvKiBCZWdpbm5pbmctb2YtZnJhbWUgcGl4ZWwgY2xvY2sKKwkJCQkJICAgd2FpdCBjb3VudCBtYXNrICovCisjZGVmaW5lIENJQ1IyX0ZTVwkoMHg3IDw8IDApCS8qIEZyYW1lIHN0YWJpbGl6YXRpb24KKwkJCQkJICAgd2FpdCBjb3VudCBtYXNrICovCisKKyNkZWZpbmUgQ0lDUjNfQkZXCSgweGZmIDw8IDI0KQkvKiBCZWdpbm5pbmctb2YtZnJhbWUgbGluZSBjbG9jaworCQkJCQkgICB3YWl0IGNvdW50IG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjNfRUZXCSgweGZmIDw8IDE2KQkvKiBFbmQtb2YtZnJhbWUgbGluZSBjbG9jaworCQkJCQkgICB3YWl0IGNvdW50IG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjNfVlNXCSgweDNmIDw8IDEwKQkvKiBWZXJ0aWNhbCBzeW5jIHB1bHNlIHdpZHRoIG1hc2sgKi8KKyNkZWZpbmUgQ0lDUjNfQkZQVwkoMHgzZiA8PCAzKQkvKiBCZWdpbm5pbmctb2YtZnJhbWUgcGl4ZWwgY2xvY2sKKwkJCQkJICAgd2FpdCBjb3VudCBtYXNrICovCisjZGVmaW5lIENJQ1IzX0xQRgkoMHgzZmYgPDwgMCkJLyogTGluZXMgcGVyIGZyYW1lIG1hc2sgKi8KKworI2RlZmluZSBDSUNSNF9NQ0xLX0RMWQkoMHgzIDw8IDI0KQkvKiBNQ0xLIERhdGEgQ2FwdHVyZSBEZWxheSBtYXNrICovCisjZGVmaW5lIENJQ1I0X1BDTEtfRU4JKDEgPDwgMjMpCS8qIFBpeGVsIGNsb2NrIGVuYWJsZSAqLworI2RlZmluZSBDSUNSNF9QQ1AJKDEgPDwgMjIpCS8qIFBpeGVsIGNsb2NrIHBvbGFyaXR5ICovCisjZGVmaW5lIENJQ1I0X0hTUAkoMSA8PCAyMSkJLyogSG9yaXpvbnRhbCBzeW5jIHBvbGFyaXR5ICovCisjZGVmaW5lIENJQ1I0X1ZTUAkoMSA8PCAyMCkJLyogVmVydGljYWwgc3luYyBwb2xhcml0eSAqLworI2RlZmluZSBDSUNSNF9NQ0xLX0VOCSgxIDw8IDE5KQkvKiBNQ0xLIGVuYWJsZSAqLworI2RlZmluZSBDSUNSNF9GUl9SQVRFCSgweDcgPDwgOCkJLyogRnJhbWUgcmF0ZSBtYXNrICovCisjZGVmaW5lIENJQ1I0X0RJVgkoMHhmZiA8PCAwKQkvKiBDbG9jayBkaXZpc29yIG1hc2sgKi8KKworI2RlZmluZSBDSVNSX0ZUTwkoMSA8PCAxNSkJLyogRklGTyB0aW1lLW91dCAqLworI2RlZmluZSBDSVNSX1JEQVZfMgkoMSA8PCAxNCkJLyogQ2hhbm5lbCAyIHJlY2VpdmUgZGF0YSBhdmFpbGFibGUgKi8KKyNkZWZpbmUgQ0lTUl9SREFWXzEJKDEgPDwgMTMpCS8qIENoYW5uZWwgMSByZWNlaXZlIGRhdGEgYXZhaWxhYmxlICovCisjZGVmaW5lIENJU1JfUkRBVl8wCSgxIDw8IDEyKQkvKiBDaGFubmVsIDAgcmVjZWl2ZSBkYXRhIGF2YWlsYWJsZSAqLworI2RlZmluZSBDSVNSX0ZFTVBUWV8yCSgxIDw8IDExKQkvKiBDaGFubmVsIDIgRklGTyBlbXB0eSAqLworI2RlZmluZSBDSVNSX0ZFTVBUWV8xCSgxIDw8IDEwKQkvKiBDaGFubmVsIDEgRklGTyBlbXB0eSAqLworI2RlZmluZSBDSVNSX0ZFTVBUWV8wCSgxIDw8IDkpCS8qIENoYW5uZWwgMCBGSUZPIGVtcHR5ICovCisjZGVmaW5lIENJU1JfRU9MCSgxIDw8IDgpCS8qIEVuZCBvZiBsaW5lICovCisjZGVmaW5lIENJU1JfUEFSX0VSUgkoMSA8PCA3KQkvKiBQYXJpdHkgZXJyb3IgKi8KKyNkZWZpbmUgQ0lTUl9DUUQJKDEgPDwgNikJLyogQ2FtZXJhIGludGVyZmFjZSBxdWljayBkaXNhYmxlICovCisjZGVmaW5lIENJU1JfU09GCSgxIDw8IDUpCS8qIFN0YXJ0IG9mIGZyYW1lICovCisjZGVmaW5lIENJU1JfQ0RECSgxIDw8IDQpCS8qIENhbWVyYSBpbnRlcmZhY2UgZGlzYWJsZSBkb25lICovCisjZGVmaW5lIENJU1JfRU9GCSgxIDw8IDMpCS8qIEVuZCBvZiBmcmFtZSAqLworI2RlZmluZSBDSVNSX0lGT18yCSgxIDw8IDIpCS8qIEZJRk8gb3ZlcnJ1biBmb3IgQ2hhbm5lbCAyICovCisjZGVmaW5lIENJU1JfSUZPXzEJKDEgPDwgMSkJLyogRklGTyBvdmVycnVuIGZvciBDaGFubmVsIDEgKi8KKyNkZWZpbmUgQ0lTUl9JRk9fMAkoMSA8PCAwKQkvKiBGSUZPIG92ZXJydW4gZm9yIENoYW5uZWwgMCAqLworCisjZGVmaW5lIENJRlJfRkxWTDIJKDB4N2YgPDwgMjMpCS8qIEZJRk8gMiBsZXZlbCBtYXNrICovCisjZGVmaW5lIENJRlJfRkxWTDEJKDB4N2YgPDwgMTYpCS8qIEZJRk8gMSBsZXZlbCBtYXNrICovCisjZGVmaW5lIENJRlJfRkxWTDAJKDB4ZmYgPDwgOCkJLyogRklGTyAwIGxldmVsIG1hc2sgKi8KKyNkZWZpbmUgQ0lGUl9USExfMAkoMHgzIDw8IDQpCS8qIFRocmVzaG9sZCBMZXZlbCBmb3IgQ2hhbm5lbCAwIEZJRk8gKi8KKyNkZWZpbmUgQ0lGUl9SRVNFVF9GCSgxIDw8IDMpCS8qIFJlc2V0IGlucHV0IEZJRk9zICovCisjZGVmaW5lIENJRlJfRkVOMgkoMSA8PCAyKQkvKiBGSUZPIGVuYWJsZSBmb3IgY2hhbm5lbCAyICovCisjZGVmaW5lIENJRlJfRkVOMQkoMSA8PCAxKQkvKiBGSUZPIGVuYWJsZSBmb3IgY2hhbm5lbCAxICovCisjZGVmaW5lIENJRlJfRkVOMAkoMSA8PCAwKQkvKiBGSUZPIGVuYWJsZSBmb3IgY2hhbm5lbCAwICovCisKKyNkZWZpbmUgU1JBTV9TSVpFCQkweDQwMDAwIC8qIDR4NjRLICAqLworCisjZGVmaW5lIFNSQU1fTUVNX1BIWVMJCTB4NUMwMDAwMDAKKworI2RlZmluZSBJTVBNQ1IJCV9fUkVHKDB4NTgwMDAwMDApIC8qIElNIFBvd2VyIE1hbmFnZW1lbnQgQ29udHJvbCBSZWcgKi8KKyNkZWZpbmUgSU1QTVNSCQlfX1JFRygweDU4MDAwMDA4KSAvKiBJTSBQb3dlciBNYW5hZ2VtZW50IFN0YXR1cyBSZWcgKi8KKworI2RlZmluZSBJTVBNQ1JfUEMzCQkoMHgzIDw8IDIyKSAvKiBCYW5rIDMgUG93ZXIgQ29udHJvbCAqLworI2RlZmluZSBJTVBNQ1JfUEMzX1JVTl9NT0RFCSgweDAgPDwgMjIpIC8qICAgUnVuIG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDM19TVEFOREJZX01PREUJKDB4MSA8PCAyMikgLyogICBTdGFuZGJ5IG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDM19BVVRPX01PREUJKDB4MyA8PCAyMikgLyogICBBdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgKi8KKworI2RlZmluZSBJTVBNQ1JfUEMyCQkoMHgzIDw8IDIwKSAvKiBCYW5rIDIgUG93ZXIgQ29udHJvbCAqLworI2RlZmluZSBJTVBNQ1JfUEMyX1JVTl9NT0RFCSgweDAgPDwgMjApIC8qICAgUnVuIG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMl9TVEFOREJZX01PREUJKDB4MSA8PCAyMCkgLyogICBTdGFuZGJ5IG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMl9BVVRPX01PREUJKDB4MyA8PCAyMCkgLyogICBBdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgKi8KKworI2RlZmluZSBJTVBNQ1JfUEMxCQkoMHgzIDw8IDE4KSAvKiBCYW5rIDEgUG93ZXIgQ29udHJvbCAqLworI2RlZmluZSBJTVBNQ1JfUEMxX1JVTl9NT0RFCSgweDAgPDwgMTgpIC8qICAgUnVuIG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMV9TVEFOREJZX01PREUJKDB4MSA8PCAxOCkgLyogICBTdGFuZGJ5IG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMV9BVVRPX01PREUJKDB4MyA8PCAxOCkgLyogICBBdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgKi8KKworI2RlZmluZSBJTVBNQ1JfUEMwCQkoMHgzIDw8IDE2KSAvKiBCYW5rIDAgUG93ZXIgQ29udHJvbCAqLworI2RlZmluZSBJTVBNQ1JfUEMwX1JVTl9NT0RFCSgweDAgPDwgMTYpIC8qICAgUnVuIG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMF9TVEFOREJZX01PREUJKDB4MSA8PCAxNikgLyogICBTdGFuZGJ5IG1vZGUgKi8KKyNkZWZpbmUgSU1QTUNSX1BDMF9BVVRPX01PREUJKDB4MyA8PCAxNikgLyogICBBdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgKi8KKworI2RlZmluZSBJTVBNQ1JfQVczCQkoMSA8PCAxMSkgLyogQmFuayAzIEF1dG9tYXRpYyBXYWtlLXVwIGVuYWJsZSAqLworI2RlZmluZSBJTVBNQ1JfQVcyCQkoMSA8PCAxMCkgLyogQmFuayAyIEF1dG9tYXRpYyBXYWtlLXVwIGVuYWJsZSAqLworI2RlZmluZSBJTVBNQ1JfQVcxCQkoMSA8PCA5KSAgLyogQmFuayAxIEF1dG9tYXRpYyBXYWtlLXVwIGVuYWJsZSAqLworI2RlZmluZSBJTVBNQ1JfQVcwCQkoMSA8PCA4KSAgLyogQmFuayAwIEF1dG9tYXRpYyBXYWtlLXVwIGVuYWJsZSAqLworCisjZGVmaW5lIElNUE1DUl9EU1QJCSgweEZGIDw8IDApIC8qIERlbGF5IFN0YW5kYnkgVGltZSwgbXMgKi8KKworI2RlZmluZSBJTVBNU1JfUFMzCQkoMHgzIDw8IDYpIC8qIEJhbmsgMyBQb3dlciBTdGF0dXM6ICovCisjZGVmaW5lIElNUE1TUl9QUzNfUlVOX01PREUJKDB4MCA8PCA2KSAvKiAgICBSdW4gbW9kZSAqLworI2RlZmluZSBJTVBNU1JfUFMzX1NUQU5EQllfTU9ERQkoMHgxIDw8IDYpIC8qICAgIFN0YW5kYnkgbW9kZSAqLworCisjZGVmaW5lIElNUE1TUl9QUzIJCSgweDMgPDwgNCkgLyogQmFuayAyIFBvd2VyIFN0YXR1czogKi8KKyNkZWZpbmUgSU1QTVNSX1BTMl9SVU5fTU9ERQkoMHgwIDw8IDQpIC8qICAgIFJ1biBtb2RlICovCisjZGVmaW5lIElNUE1TUl9QUzJfU1RBTkRCWV9NT0RFCSgweDEgPDwgNCkgLyogICAgU3RhbmRieSBtb2RlICovCisKKyNkZWZpbmUgSU1QTVNSX1BTMQkJKDB4MyA8PCAyKSAvKiBCYW5rIDEgUG93ZXIgU3RhdHVzOiAqLworI2RlZmluZSBJTVBNU1JfUFMxX1JVTl9NT0RFCSgweDAgPDwgMikgLyogICAgUnVuIG1vZGUgKi8KKyNkZWZpbmUgSU1QTVNSX1BTMV9TVEFOREJZX01PREUJKDB4MSA8PCAyKSAvKiAgICBTdGFuZGJ5IG1vZGUgKi8KKworI2RlZmluZSBJTVBNU1JfUFMwCQkoMHgzIDw8IDApIC8qIEJhbmsgMCBQb3dlciBTdGF0dXM6ICovCisjZGVmaW5lIElNUE1TUl9QUzBfUlVOX01PREUJKDB4MCA8PCAwKSAvKiAgICBSdW4gbW9kZSAqLworI2RlZmluZSBJTVBNU1JfUFMwX1NUQU5EQllfTU9ERQkoMHgxIDw8IDApIC8qICAgIFN0YW5kYnkgbW9kZSAqLworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhZmIuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGFmYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZDcxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhZmIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGFmYi5oCisgKgorICogIFN1cHBvcnQgZm9yIHRoZSB4c2NhbGUgZnJhbWUgYnVmZmVyLgorICoKKyAqICBBdXRob3I6ICAgICBKZWFuLUZyZWRlcmljIENsZXJlCisgKiAgQ3JlYXRlZDogICAgU2VwIDIyLCAyMDAzCisgKiAgQ29weXJpZ2h0OiAgamZjbGVyZUBzaW5peC5uZXQKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIG1hY2hpbmUgd2hpY2ggd2UgYXJlIHJ1bm5pbmcgb24uCisgKiBJdCBpcyBzZXQgaW4gbGludXgvYXJjaC9hcm0vbWFjaC1weGEvbWFjaGluZV9uYW1lLmMgYW5kIHVzZWQgaW4gdGhlIHByb2JlIHJvdXRpbmUKKyAqIG9mIGxpbnV4L2RyaXZlcnMvdmlkZW8vcHhhZmIuYworICovCitzdHJ1Y3QgcHhhZmJfbWFjaF9pbmZvIHsKKwl1X2xvbmcJCXBpeGNsb2NrOworCisJdV9zaG9ydAkJeHJlczsKKwl1X3Nob3J0CQl5cmVzOworCisJdV9jaGFyCQlicHA7CisJdV9jaGFyCQloc3luY19sZW47CisJdV9jaGFyCQlsZWZ0X21hcmdpbjsKKwl1X2NoYXIJCXJpZ2h0X21hcmdpbjsKKworCXVfY2hhcgkJdnN5bmNfbGVuOworCXVfY2hhcgkJdXBwZXJfbWFyZ2luOworCXVfY2hhcgkJbG93ZXJfbWFyZ2luOworCXVfY2hhcgkJc3luYzsKKworCXVfaW50CQljbWFwX2dyZXlzY2FsZToxLAorCQkJY21hcF9pbnZlcnNlOjEsCisJCQljbWFwX3N0YXRpYzoxLAorCQkJdW51c2VkOjI5OworCisJLyogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZGVmaW5lZCBpbiBMQ0NSMAorCSAqICAgICAgTENDUjBfQWN0IG9yIExDQ1IwX1BhcyAgICAgICAgICBBY3RpdmUgb3IgUGFzc2l2ZQorCSAqICAgICAgTENDUjBfU25nbCBvciBMQ0NSMF9EdWFsICAgICAgICBTaW5nbGUvRHVhbCBwYW5lbAorCSAqICAgICAgTENDUjBfTW9ubyBvciBMQ0NSMF9Db2xvciAgICAgICBNb25vL0NvbG9yCisJICogICAgICBMQ0NSMF80UGl4TW9ubyBvciBMQ0NSMF84UGl4TW9ubyAoaW4gbW9ubyBzaW5nbGUgbW9kZSkKKwkgKiAgICAgIExDQ1IwX0RNQURlbChUY3B1KSAob3B0aW9uYWwpICAgRE1BIHJlcXVlc3QgZGVsYXkKKwkgKgorCSAqIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBiZSBkZWZpbmVkIGluIExDQ1IwOgorCSAqICAgICAgTENDUjBfT1VNLCBMQ0NSMF9CTSwgTENDUjBfUURNLCBMQ0NSMF9ESVMsIExDQ1IwX0VGTQorCSAqICAgICAgTENDUjBfSVVNLCBMQ0NSMF9TRk0sIExDQ1IwX0xETSwgTENDUjBfRU5CCisJICovCisJdV9pbnQJCWxjY3IwOworCS8qIFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIGRlZmluZWQgaW4gTENDUjMKKwkgKiAgICAgIExDQ1IzX091dEVuSCBvciBMQ0NSM19PdXRFbkwgICAgT3V0cHV0IGVuYWJsZSBwb2xhcml0eQorCSAqICAgICAgTENDUjNfUGl4UnNFZGcgb3IgTENDUjNfUGl4RmxFZGcgUGl4ZWwgY2xvY2sgZWRnZSB0eXBlCisJICogICAgICBMQ0NSM19BY2IoWCkgICAgICAgICAgICAgICAgICAgIEFCIEJpYXMgcGluIGZyZXF1ZW5jeQorCSAqICAgICAgTENDUjNfRFBDIChvcHRpb25hbCkgICAgICAgICAgICBEb3VibGUgUGl4ZWwgQ2xvY2sgbW9kZSAodW50ZXN0ZWQpCisJICoKKwkgKiBUaGUgZm9sbG93aW5nIHNob3VsZCBub3QgYmUgZGVmaW5lZCBpbiBMQ0NSMworCSAqICAgICAgTENDUjNfSFNQLCBMQ0NSM19WU1AsIExDQ1IwX1BjZCh4KSwgTENDUjNfQnBwCisJICovCisJdV9pbnQJCWxjY3IzOworCisJdm9pZCAoKnB4YWZiX2JhY2tsaWdodF9wb3dlcikoaW50KTsKKwl2b2lkICgqcHhhZmJfbGNkX3Bvd2VyKShpbnQpOworCit9Owordm9pZCBzZXRfcHhhX2ZiX2luZm8oc3RydWN0IHB4YWZiX21hY2hfaW5mbyAqaGFyZF9weGFfZmJfaW5mbyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvc3NwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvc3NwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjNjdiMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9zc3AuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogIHNzcC5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBSdXNzZWxsIEtpbmcsIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIFBYQSBDUFUvU1NQIHBvcnRzOi0KKyAqCisgKiAgICAgICBQWEEyNTAgICAgIFNTUAorICogICAgICAgUFhBMjU1ICAgICBTU1AsIE5TU1AKKyAqICAgICAgIFBYQTI2eCAgICAgU1NQLCBOU1NQLCBBU1NQCisgKiAgICAgICBQWEEyN3ggICAgIFNTUDEsIFNTUDIsIFNTUDMKKyAqLworCisjaWZuZGVmIFNTUF9ICisjZGVmaW5lIFNTUF9ICisKK3N0cnVjdCBzc3Bfc3RhdGUgeworCXUzMgljcjA7CisJdTMyIGNyMTsKKwl1MzIgdG87CisJdTMyIHBzcDsKK307CisKK3N0cnVjdCBzc3BfZGV2IHsKKwl1MzIgcG9ydDsKKwl1MzIgbW9kZTsKKwl1MzIgZmxhZ3M7CisJdTMyIHBzcF9mbGFnczsKKwl1MzIgc3BlZWQ7Cit9OworCitpbnQgc3NwX3dyaXRlX3dvcmQoc3RydWN0IHNzcF9kZXYgKmRldiwgdTMyIGRhdGEpOworaW50IHNzcF9yZWFkX3dvcmQoc3RydWN0IHNzcF9kZXYgKmRldik7Cit2b2lkIHNzcF9mbHVzaChzdHJ1Y3Qgc3NwX2RldiAqZGV2KTsKK3ZvaWQgc3NwX2VuYWJsZShzdHJ1Y3Qgc3NwX2RldiAqZGV2KTsKK3ZvaWQgc3NwX2Rpc2FibGUoc3RydWN0IHNzcF9kZXYgKmRldik7Cit2b2lkIHNzcF9zYXZlX3N0YXRlKHN0cnVjdCBzc3BfZGV2ICpkZXYsIHN0cnVjdCBzc3Bfc3RhdGUgKnNzcCk7Cit2b2lkIHNzcF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBzc3BfZGV2ICpkZXYsIHN0cnVjdCBzc3Bfc3RhdGUgKnNzcCk7CitpbnQgc3NwX2luaXQoc3RydWN0IHNzcF9kZXYgKmRldiwgdTMyIHBvcnQpOworaW50IHNzcF9jb25maWcoc3RydWN0IHNzcF9kZXYgKmRldiwgdTMyIG1vZGUsIHUzMiBmbGFncywgdTMyIHBzcF9mbGFncywgdTMyIHNwZWVkKTsKK3ZvaWQgc3NwX2V4aXQoc3RydWN0IHNzcF9kZXYgKmRldik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3N5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MGE0NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvc3lzdGVtLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9zeXN0ZW0uaAorICoKKyAqIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogQ3JlYXRlZDoJSnVuIDE1LCAyMDAxCisgKiBDb3B5cmlnaHQ6CU1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgImhhcmR3YXJlLmgiCisjaW5jbHVkZSAicHhhLXJlZ3MuaCIKKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWNwdV9kb19pZGxlKCk7Cit9CisKKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWlmIChtb2RlID09ICdzJykgeworCQkvKiBKdW1wIGludG8gUk9NIGF0IGFkZHJlc3MgMCAqLworCQljcHVfcmVzZXQoMCk7CisJfSBlbHNlIHsKKwkJLyogSW5pdGlhbGl6ZSB0aGUgd2F0Y2hkb2cgYW5kIGxldCBpdCBmaXJlICovCisJCU9XRVIgPSBPV0VSX1dNRTsKKwkJT1NTUiA9IE9TU1JfTTM7CisJCU9TTVIzID0gT1NDUiArIDM2ODY0MDsJLyogLi4uIGluIDEwMCBtcyAqLworCX0KK30KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3RpbWV4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTEyNWVjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3RpbWV4LmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS90aW1leC5oCisgKgorICogQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiBDcmVhdGVkOglKdW4gMTUsIDIwMDEKKyAqIENvcHlyaWdodDoJTW9udGFWaXN0YSBTb2Z0d2FyZSBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19QWEEyNXgpCisvKiBQWEEyNTAvMjEwIHRpbWVyIGJhc2UgKi8KKyNkZWZpbmUgQ0xPQ0tfVElDS19SQVRFIDM2ODY0MDAKKyNlbGlmIGRlZmluZWQoQ09ORklHX1BYQTI3eCkKKy8qIFBYQTI3eCB0aW1lciBiYXNlICovCisjaWZkZWYgQ09ORklHX01BQ0hfTUFJTlNUT05FCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURSAzMjQ5NjAwCisjZWxzZQorI2RlZmluZSBDTE9DS19USUNLX1JBVEUgMzI1MDAwMAorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS91ZGMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS91ZGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU0OGEzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3VkYy5oCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdWRjLmgKKyAqCisgKiBUaGlzIHN1cHBvcnRzIG1hY2hpbmUtc3BlY2lmaWMgZGlmZmVyZW5jZXMgaW4gaG93IHRoZSBQWEEyeHgKKyAqIFVTQiBEZXZpY2UgQ29udHJvbGxlciAoVURDKSBpcyB3aXJlZC4KKyAqCisgKiBJdCBpcyBzZXQgaW4gbGludXgvYXJjaC9hcm0vbWFjaC1weGEvPG1hY2hpbmU+LmMgYW5kIHVzZWQgaW4KKyAqIHRoZSBwcm9iZSByb3V0aW5lIG9mIGxpbnV4L2RyaXZlcnMvdXNiL2dhZGdldC9weGEyeHhfdWRjLmMKKyAqLworc3RydWN0IHB4YTJ4eF91ZGNfbWFjaF9pbmZvIHsKKyAgICAgICAgaW50ICAoKnVkY19pc19jb25uZWN0ZWQpKHZvaWQpOwkJLyogZG8gd2Ugc2VlIGhvc3Q/ICovCisgICAgICAgIHZvaWQgKCp1ZGNfY29tbWFuZCkoaW50IGNtZCk7CisjZGVmaW5lCVBYQTJYWF9VRENfQ01EX0NPTk5FQ1QJCTAJLyogbGV0IGhvc3Qgc2VlIHVzICovCisjZGVmaW5lCVBYQTJYWF9VRENfQ01EX0RJU0NPTk5FQ1QJMQkvKiBzbyBob3N0IHdvbid0IHNlZSB1cyAqLworfTsKKworZXh0ZXJuIHZvaWQgcHhhX3NldF91ZGNfaW5mbyhzdHJ1Y3QgcHhhMnh4X3VkY19tYWNoX2luZm8gKmluZm8pOworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDI4ZDNlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3VuY29tcHJlc3MuaAorICoKKyAqIEF1dGhvcjoJTmljb2xhcyBQaXRyZQorICogQ29weXJpZ2h0OgkoQykgMjAwMSBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNkZWZpbmUgRkZVQVJUCQkoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikweDQwMTAwMDAwKQorI2RlZmluZSBCVFVBUlQJCSgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKTB4NDAyMDAwMDApCisjZGVmaW5lIFNUVUFSVAkJKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopMHg0MDcwMDAwMCkKKworI2RlZmluZSBVQVJUCQlGRlVBUlQKKworCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCXdoaWxlICghKFVBUlRbNV0gJiAweDIwKSk7CisJVUFSVFswXSA9IGM7Cit9CisKKy8qCisgKiBUaGlzIGRvZXMgbm90IGFwcGVuZCBhIG5ld2xpbmUKKyAqLworc3RhdGljIHZvaWQgcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJd2hpbGUgKCpzKSB7CisJCXB1dGMoKnMpOworCQlpZiAoKnMgPT0gJ1xuJykKKwkJCXB1dGMoJ1xyJyk7CisJCXMrKzsKKwl9Cit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODFhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvdm1hbGxvYy5oCisgKgorICogQXV0aG9yOglOaWNvbGFzIFBpdHJlCisgKiBDb3B5cmlnaHQ6CShDKSAyMDAxIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4ZTgwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvYWNvcm5mYi5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2Fjb3JuZmIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2I3NzMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2Fjb3JuZmIuaApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvYWNvcm5mYi5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBBY29ybkZCIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb2RlCisgKi8KKworI2RlZmluZSBhY29ybmZiX2JhbmR3aWR0aCh2YXIpICgodmFyKS0+cGl4Y2xvY2sgKiA4IC8gKHZhciktPmJpdHNfcGVyX3BpeGVsKQorCitzdGF0aWMgaW5saW5lIGludAorYWNvcm5mYl92YWxpZF9waXhyYXRlKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyKQoreworCXVfbG9uZyBsaW1pdDsKKworCWlmICghdmFyLT5waXhjbG9jaykKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIExpbWl0cyBiZWxvdyBhcmUgdGFrZW4gZnJvbSBSSVNDIE9TIGJhbmR3aWR0aGxpbWl0IGZpbGUKKwkgKi8KKwlpZiAoY3VycmVudF9wYXIudXNpbmdfdnJhbSkgeworCQlpZiAoY3VycmVudF9wYXIudnJhbV9oYWxmX3NhbSA9PSAyMDQ4KQorCQkJbGltaXQgPSA2NTc4OworCQllbHNlCisJCQlsaW1pdCA9IDEzMTU3OworCX0gZWxzZSB7CisJCWxpbWl0ID0gMjYzMTU7CisJfQorCisJcmV0dXJuIGFjb3JuZmJfYmFuZHdpZHRoKHZhcikgPj0gbGltaXQ7Cit9CisKKy8qCisgKiBUcnkgdG8gZmluZCB0aGUgYmVzdCBQTEwgcGFyYW1ldGVycyBmb3IgdGhlIHBpeGVsIGNsb2NrLgorICogVGhpcyBhbGdvcml0aG0gc2VlbXMgdG8gZ2l2ZSBiZXN0IHByZWRpY3RhYmxlIHJlc3VsdHMsCisgKiBhbmQgcHJvZHVjZXMgdGhlIHNhbWUgdmFsdWVzIGFzIGRldGFpbGVkIGluIHRoZSBWSURDMjAKKyAqIGRhdGEgc2hlZXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdV9pbnQKK2Fjb3JuZmJfdmlkYzIwX2ZpbmRfcGxsKHVfaW50IHBpeGNsaykKK3sKKwl1X2ludCByLCBiZXN0X3IgPSAyLCBiZXN0X3YgPSAyOworCWludCBiZXN0X2QgPSAweDdmZmZmZmZmOworCisJZm9yIChyID0gMjsgciA8PSAzMjsgcisrKSB7CisJCXVfaW50IHJyLCB2LCBwOworCQlpbnQgZDsKKworCQlyciA9IDQxNjY3ICogcjsKKworCQl2ID0gKHJyICsgcGl4Y2xrIC8gMikgLyBwaXhjbGs7CisKKwkJaWYgKHYgPiAzMiB8fCB2IDwgMikKKwkJCWNvbnRpbnVlOworCisJCXAgPSAocnIgKyB2IC8gMikgLyB2OworCisJCWQgPSBwaXhjbGsgLSBwOworCisJCWlmIChkIDwgMCkKKwkJCWQgPSAtZDsKKworCQlpZiAoZCA8IGJlc3RfZCkgeworCQkJYmVzdF9kID0gZDsKKwkJCWJlc3RfdiA9IHYgLSAxOworCQkJYmVzdF9yID0gciAtIDE7CisJCX0KKworCQlpZiAoZCA9PSAwKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIGJlc3RfdiA8PCA4IHwgYmVzdF9yOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2Fjb3JuZmJfdmlkYzIwX2ZpbmRfcmF0ZXMoc3RydWN0IHZpZGNfdGltaW5nICp2aWRjLAorCQkJICBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikKK3sKKwl1X2ludCBkaXY7CisKKwkvKiBTZWxlY3QgcGl4ZWwtY2xvY2sgZGl2aXNvciB0byBrZWVwIFBMTCBpbiByYW5nZSAqLworCWRpdiA9IHZhci0+cGl4Y2xvY2sgLyA5MDkwOyAvKjk5MjEqLworCisJLyogTGltaXQgZGl2aXNvciAqLworCWlmIChkaXYgPT0gMCkKKwkJZGl2ID0gMTsKKwlpZiAoZGl2ID4gOCkKKwkJZGl2ID0gODsKKworCS8qIEVuY29kZSBkaXZpc29yIHRvIFZJREMyMCBzZXR0aW5nICovCisJc3dpdGNoIChkaXYpIHsKKwljYXNlIDE6CXZpZGMtPmNvbnRyb2wgfD0gVklEQzIwX0NUUkxfUElYX0NLOyAgYnJlYWs7CisJY2FzZSAyOgl2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX1BJWF9DSzI7IGJyZWFrOworCWNhc2UgMzoJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9QSVhfQ0szOyBicmVhazsKKwljYXNlIDQ6CXZpZGMtPmNvbnRyb2wgfD0gVklEQzIwX0NUUkxfUElYX0NLNDsgYnJlYWs7CisJY2FzZSA1Ogl2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX1BJWF9DSzU7IGJyZWFrOworCWNhc2UgNjoJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9QSVhfQ0s2OyBicmVhazsKKwljYXNlIDc6CXZpZGMtPmNvbnRyb2wgfD0gVklEQzIwX0NUUkxfUElYX0NLNzsgYnJlYWs7CisJY2FzZSA4OiB2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX1BJWF9DSzg7IGJyZWFrOworCX0KKworCS8qCisJICogV2l0aCBWUkFNLCB0aGUgRklGTyBjYW4gYmUgc2V0IHRvIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHNldHRpbmcKKwkgKiBiZWNhdXNlIHRoZXJlIGFyZSBubyBsYXRlbmN5IGNvbnNpZGVyYXRpb25zIGZvciBvdGhlciBtZW1vcnkKKwkgKiBhY2Nlc3Nlcy4gSG93ZXZlciwgaW4gNjQgYml0IGJ1cyBtb2RlIHRoZSBGSUZPIHByZWxvYWQgdmFsdWUKKwkgKiBtdXN0IG5vdCBiZSBzZXQgdG8gVklEQzIwX0NUUkxfRklGT18yOCBiZWNhdXNlIHRoaXMgd2lsbCBsZXQKKwkgKiB0aGUgRklGTyBvdmVyZmxvdy4gU2VlIFZJREMyMCBtYW51YWwgcGFnZSAzMyAoNi4wIFNldHRpbmcgdGhlCisJICogRklGTyBwcmVsb2FkIHZhbHVlKS4KKwkgKi8KKwlpZiAoY3VycmVudF9wYXIudXNpbmdfdnJhbSkgeworCQlpZiAoY3VycmVudF9wYXIudnJhbV9oYWxmX3NhbSA9PSAyMDQ4KQorCQkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzI0OworCQllbHNlCisJCQl2aWRjLT5jb250cm9sIHw9IFZJREMyMF9DVFJMX0ZJRk9fMjg7CisJfSBlbHNlIHsKKwkJdW5zaWduZWQgbG9uZyBiYW5kd2lkdGggPSBhY29ybmZiX2JhbmR3aWR0aCh2YXIpOworCisJCS8qIEVuY29kZSBiYW5kd2lkdGggYXMgVklEQzIwIHNldHRpbmcgKi8KKwkJaWYgKGJhbmR3aWR0aCA+IDMzMzM0KQkJLyogPCAzMC4wTUIvcyAqLworCQkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzE2OworCQllbHNlIGlmIChiYW5kd2lkdGggPiAyNjY2NikJLyogPCAzNy41TUIvcyAqLworCQkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzIwOworCQllbHNlIGlmIChiYW5kd2lkdGggPiAyMjIyMikJLyogPCA0NS4wTUIvcyAqLworCQkJdmlkYy0+Y29udHJvbCB8PSBWSURDMjBfQ1RSTF9GSUZPXzI0OworCQllbHNlCQkJCS8qID4gNDUuME1CL3MgKi8KKwkJCXZpZGMtPmNvbnRyb2wgfD0gVklEQzIwX0NUUkxfRklGT18yODsKKwl9CisKKwkvKiBGaW5kIHRoZSBQTEwgdmFsdWVzICovCisJdmlkYy0+cGxsX2N0bCA9IGFjb3JuZmJfdmlkYzIwX2ZpbmRfcGxsKHZhci0+cGl4Y2xvY2sgLyBkaXYpOworfQorCisjZGVmaW5lIGFjb3JuZmJfZGVmYXVsdF9jb250cm9sKCkJKFZJREMyMF9DVFJMX1BJWF9WQ0xLKQorI2RlZmluZSBhY29ybmZiX2RlZmF1bHRfZWNvbnRyb2woKQkoVklEQzIwX0VDVExfREFDIHwgVklEQzIwX0VDVExfUkVHKDMpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzExODI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwzNSBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyovCisKKwkJLm1hY3JvCWFkZHJ1YXJ0LHJ4CisJCW1vdglccngsICMweGUwMDAwMDAwCisJCW9ycglccngsIFxyeCwgIzB4MDAwMTAwMDAKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMDAwMGZlMAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHJiCVxyZCwgW1xyeF0KKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDE6CQlsZHJiCVxyZCwgW1xyeCwgIzB4MTRdCisJCWFuZAlccmQsIFxyZCwgIzB4NjAKKwkJdGVxCVxyZCwgIzB4NjAKKwkJYm5lCTEwMDFiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyYglccmQsIFtccngsICMweDE4XQorCQl0c3QJXHJkLCAjMHgxMAorCQliZXEJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjRhMjdlMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9kbWEuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9kbWEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworLyoKKyAqIFRoaXMgaXMgdGhlIG1heGltdW0gRE1BIGFkZHJlc3MgdGhhdCBjYW4gYmUgRE1BZCB0by4KKyAqIFRoZXJlIHNob3VsZCBub3QgYmUgbW9yZSB0aGFuICgweGQwMDAwMDAwIC0gMHhjMDAwMDAwMCkKKyAqIGJ5dGVzIG9mIFJBTS4KKyAqLworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZDAwMDAwMDAKKyNkZWZpbmUgTUFYX0RNQV9DSEFOTkVMUwk4CisKKyNkZWZpbmUgRE1BXzAJCQkwCisjZGVmaW5lIERNQV8xCQkJMQorI2RlZmluZSBETUFfMgkJCTIKKyNkZWZpbmUgRE1BXzMJCQkzCisjZGVmaW5lIERNQV9TMAkJCTQKKyNkZWZpbmUgRE1BX1MxCQkJNQorI2RlZmluZSBETUFfVklSVFVBTF9GTE9QUFkJNgorI2RlZmluZSBETUFfVklSVFVBTF9TT1VORAk3CisKKyNkZWZpbmUgRE1BX0ZMT1BQWQkJRE1BX1ZJUlRVQUxfRkxPUFBZCisKKyNlbmRpZiAvKiBfQVNNX0FSQ0hfRE1BX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODZmNDEzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwzIEBACisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvZW50cnktbWFjcm8taW9tZC5TPgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOTc1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaGFyZHdhcmUuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9oYXJkd2FyZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGhhcmR3YXJlIGRlZmluaXRpb25zIG9mIHRoZSBSaXNjUEMgc2VyaWVzIG1hY2hpbmVzLgorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorI2RlZmluZSBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKworI2luY2x1ZGUgPGFzbS9hcmNoL21lbW9yeS5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBJT01FTSh4KSAoKHZvaWQgX19pb21lbSAqKSh4KSkKKyNlbHNlCisjZGVmaW5lIElPTUVNKHgpIHgKKyNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworLyoKKyAqIFdoYXQgaGFyZHdhcmUgbXVzdCBiZSBwcmVzZW50CisgKi8KKyNkZWZpbmUgSEFTX0lPTUQKKyNkZWZpbmUgSEFTX1ZJREMyMAorCisvKiBIYXJkd2FyZSBhZGRyZXNzZXMgb2YgbWFqb3IgYXJlYXMuCisgKiAgKl9TVEFSVCBpcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworICogICpfU0laRSAgaXMgdGhlIHNpemUgb2YgdGhlIHJlZ2lvbgorICogICpfQkFTRSAgaXMgdGhlIHZpcnR1YWwgYWRkcmVzcworICovCisjZGVmaW5lIFJBTV9TSVpFCQkweDEwMDAwMDAwCisjZGVmaW5lIFJBTV9TVEFSVAkJMHgxMDAwMDAwMAorCisjZGVmaW5lIEVBU0lfU0laRQkJMHgwODAwMDAwMAkvKiBFQVNJIEkvTyAqLworI2RlZmluZSBFQVNJX1NUQVJUCQkweDA4MDAwMDAwCisjZGVmaW5lIEVBU0lfQkFTRQkJMHhlNTAwMDAwMAorCisjZGVmaW5lIElPX1NUQVJUCQkweDAzMDAwMDAwCS8qIEkvTyAqLworI2RlZmluZSBJT19TSVpFCQkJMHgwMTAwMDAwMAorI2RlZmluZSBJT19CQVNFCQkJSU9NRU0oMHhlMDAwMDAwMCkKKworI2RlZmluZSBTQ1JFRU5fU1RBUlQJCTB4MDIwMDAwMDAJLyogVlJBTSAqLworI2RlZmluZSBTQ1JFRU5fRU5ECQkweGRmYzAwMDAwCisjZGVmaW5lIFNDUkVFTl9CQVNFCQkweGRmODAwMDAwCisKKyNkZWZpbmUgRkxVU0hfQkFTRQkJMHhkZjAwMDAwMAorI2RlZmluZSBVTkNBQ0hFQUJMRV9BRERSCTB4ZGYwMTAwMDAKKworLyoKKyAqIElPIEFkZHJlc3NlcworICovCisjZGVmaW5lIFZJRENfQkFTRQkJKHZvaWQgX19pb21lbSAqKTB4ZTA0MDAwMDAKKyNkZWZpbmUgRVhQTUFTS19CQVNFCQkweGUwMzYwMDAwCisjZGVmaW5lIElPTURfQkFTRQkJSU9NRU0oMHhlMDIwMDAwMCkKKyNkZWZpbmUgSU9DX0JBU0UJCUlPTUVNKDB4ZTAyMDAwMDApCisjZGVmaW5lIFBDSU9fQkFTRQkJSU9NRU0oMHhlMDAxMDAwMCkKKyNkZWZpbmUgRkxPUFBZRE1BX0JBU0UJCUlPTUVNKDB4ZTAwMmEwMDApCisKKyNkZWZpbmUgRkxVU0hfQkFTRV9QSFlTCQkweDAwMDAwMDAwCS8qIFJPTSAqLworCisjZGVmaW5lIHZpZGNfd3JpdGVsKHZhbCkJX19yYXdfd3JpdGVsKHZhbCwgVklEQ19CQVNFKQorCisjZGVmaW5lIElPX0VDX0VBU0lfQkFTRQkJMHg4MTQwMDAwMAorI2RlZmluZSBJT19FQ19JT0M0X0JBU0UJCTB4ODAwOWMwMDAKKyNkZWZpbmUgSU9fRUNfSU9DX0JBU0UJCTB4ODAwOTAwMDAKKyNkZWZpbmUgSU9fRUNfTUVNQzhfQkFTRQkweDgwMDBhYzAwCisjZGVmaW5lIElPX0VDX01FTUNfQkFTRQkJMHg4MDAwMDAwMAorCisjZGVmaW5lIE5FVFNMT1RfQkFTRQkJMHgwMzAyYjAwMAorI2RlZmluZSBORVRTTE9UX1NJWkUJCTB4MDAwMDEwMDAKKworI2RlZmluZSBQT0RTTE9UX0lPQzBfQkFTRQkweDAzMjQwMDAwCisjZGVmaW5lIFBPRFNMT1RfSU9DNF9CQVNFCTB4MDMyNzAwMDAKKyNkZWZpbmUgUE9EU0xPVF9JT0NfU0laRQkoMSA8PCAxNCkKKyNkZWZpbmUgUE9EU0xPVF9NRU1DX0JBU0UJMHgwMzAwMDAwMAorI2RlZmluZSBQT0RTTE9UX01FTUNfU0laRQkoMSA8PCAxNCkKKyNkZWZpbmUgUE9EU0xPVF9FQVNJX0JBU0UJMHgwODAwMDAwMAorI2RlZmluZSBQT0RTTE9UX0VBU0lfU0laRQkoMSA8PCAyNCkKKworI2RlZmluZQlFWFBNQVNLX1NUQVRVUwkJKEVYUE1BU0tfQkFTRSArIDB4MDApCisjZGVmaW5lIEVYUE1BU0tfRU5BQkxFCQkoRVhQTUFTS19CQVNFICsgMHgwNCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NDUzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaW8uaApAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogIDA2LURlYy0xOTk3CVJNSwlDcmVhdGVkLgorICovCisjaWZuZGVmIF9fQVNNX0FSTV9BUkNIX0lPX0gKKyNkZWZpbmUgX19BU01fQVJNX0FSQ0hfSU9fSAorCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUIDB4ZmZmZmZmZmYKKworLyoKKyAqIEdDQyBpcyB0b3RhbGx5IGNyYXAgYXQgbG9hZGluZy9zdG9yaW5nIGRhdGEuICBXZSB0cnkgdG8gcGVyc3VhZGUgaXQKKyAqIHRvIGRvIHRoZSByaWdodCB0aGluZyBieSB1c2luZyB0aGVzZSB3aGVyZWV2ZXIgcG9zc2libGUgaW5zdGVhZCBvZgorICogdGhlIGFib3ZlLgorICovCisjZGVmaW5lIF9fYXJjaF9iYXNlX2dldGIoYixvKQkJCVwKKyAoewkJCQkJCVwKKwl1bnNpZ25lZCBpbnQgX192LCBfX3IgPSAoYik7CQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCQkibGRyYgklMCwgWyUxLCAlMl0iCQlcCisJCTogIj1yIiAoX192KQkJCVwKKwkJOiAiciIgKF9fciksICJJciIgKG8pKTsJCVwKKwlfX3Y7CQkJCQlcCisgfSkKKworI2RlZmluZSBfX2FyY2hfYmFzZV9nZXRsKGIsbykJCQlcCisgKHsJCQkJCQlcCisJdW5zaWduZWQgaW50IF9fdiwgX19yID0gKGIpOwkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0iCQlcCisJCTogIj1yIiAoX192KQkJCVwKKwkJOiAiciIgKF9fciksICJJciIgKG8pKTsJCVwKKwlfX3Y7CQkJCQlcCisgfSkKKworI2RlZmluZSBfX2FyY2hfYmFzZV9wdXRiKHYsYixvKQkJCVwKKyAoewkJCQkJCVwKKwl1bnNpZ25lZCBpbnQgX19yID0gKGIpOwkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJCSJzdHJiCSUwLCBbJTEsICUyXSIJCVwKKwkJOgkJCQlcCisJCTogInIiICh2KSwgInIiIChfX3IpLCAiSXIiIChvKSk7XAorIH0pCisKKyNkZWZpbmUgX19hcmNoX2Jhc2VfcHV0bCh2LGIsbykJCQlcCisgKHsJCQkJCQlcCisJdW5zaWduZWQgaW50IF9fciA9IChiKTsJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCQkic3RyCSUwLCBbJTEsICUyXSIJCVwKKwkJOgkJCQlcCisJCTogInIiICh2KSwgInIiIChfX3IpLCAiSXIiIChvKSk7XAorIH0pCisKKy8qCisgKiBXZSB1c2UgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBhZGRyZXNzaW5nIC0gUEMgc3R5bGUgYWRkcmVzc2VzLCBhbmQgQVJNCisgKiBhZGRyZXNzZXMuICBQQyBzdHlsZSBhY2Nlc3NlcyB0aGUgUEMgaGFyZHdhcmUgd2l0aCB0aGUgbm9ybWFsIFBDIElPCisgKiBhZGRyZXNzZXMsIGVnIDB4M2Y4IGZvciBzZXJpYWwjMS4gIEFSTSBhZGRyZXNzZXMgYXJlIDB4ODAwMDAwMDArCisgKiBhbmQgYXJlIHRyYW5zbGF0ZWQgdG8gdGhlIHN0YXJ0IG9mIElPLiAgTm90ZSB0aGF0IGFsbCBhZGRyZXNzZXMgYXJlCisgKiBzaGlmdGVkIGxlZnQhCisgKi8KKyNkZWZpbmUgX19QT1JUX1BDSU8oeCkJKCEoKHgpICYgMHg4MDAwMDAwMCkpCisKKy8qCisgKiBEeW5hbWljIElPIGZ1bmN0aW9ucy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9fb3V0YiAodW5zaWduZWQgaW50IHZhbHVlLCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBsb25nIHRlbXA7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJInRzdAklMiwgIzB4ODAwMDAwMDBcblx0IgorCSJtb3YJJTAsICU0XG5cdCIKKwkiYWRkZXEJJTAsICUwLCAlM1xuXHQiCisJInN0cmIJJTEsIFslMCwgJTIsIGxzbCAjMl0JQCBvdXRiIgorCTogIj0mciIgKHRlbXApCisJOiAiciIgKHZhbHVlKSwgInIiIChwb3J0KSwgIklyIiAoUENJT19CQVNFIC0gSU9fQkFTRSksICJJciIgKElPX0JBU0UpCisJOiAiY2MiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fb3V0dyAodW5zaWduZWQgaW50IHZhbHVlLCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBsb25nIHRlbXA7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJInRzdAklMiwgIzB4ODAwMDAwMDBcblx0IgorCSJtb3YJJTAsICU0XG5cdCIKKwkiYWRkZXEJJTAsICUwLCAlM1xuXHQiCisJInN0cgklMSwgWyUwLCAlMiwgbHNsICMyXQlAIG91dHciCisJOiAiPSZyIiAodGVtcCkKKwk6ICJyIiAodmFsdWV8dmFsdWU8PDE2KSwgInIiIChwb3J0KSwgIklyIiAoUENJT19CQVNFIC0gSU9fQkFTRSksICJJciIgKElPX0JBU0UpCisJOiAiY2MiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fb3V0bCAodW5zaWduZWQgaW50IHZhbHVlLCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKwl1bnNpZ25lZCBsb25nIHRlbXA7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJInRzdAklMiwgIzB4ODAwMDAwMDBcblx0IgorCSJtb3YJJTAsICU0XG5cdCIKKwkiYWRkZXEJJTAsICUwLCAlM1xuXHQiCisJInN0cgklMSwgWyUwLCAlMiwgbHNsICMyXQlAIG91dGwiCisJOiAiPSZyIiAodGVtcCkKKwk6ICJyIiAodmFsdWUpLCAiciIgKHBvcnQpLCAiSXIiIChQQ0lPX0JBU0UgLSBJT19CQVNFKSwgIklyIiAoSU9fQkFTRSkKKwk6ICJjYyIpOworfQorCisjZGVmaW5lIERFQ0xBUkVfRFlOX0lOKHN6LGZuc3VmZml4LGluc3RyKQkJCQkJXAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBzeiBfX2luIyNmbnN1ZmZpeCAodW5zaWduZWQgaW50IHBvcnQpCQlcCit7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHRlbXAsIHZhbHVlOwkJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQkJXAorCSJ0c3QJJTIsICMweDgwMDAwMDAwXG5cdCIJCQkJCQlcCisJIm1vdgklMCwgJTRcblx0IgkJCQkJCQlcCisJImFkZGVxCSUwLCAlMCwgJTNcblx0IgkJCQkJCQlcCisJImxkciIgaW5zdHIgIgklMSwgWyUwLCAlMiwgbHNsICMyXQlAIGluIiAjZm5zdWZmaXgJCQlcCisJOiAiPSZyIiAodGVtcCksICI9ciIgKHZhbHVlKQkJCQkJCVwKKwk6ICJyIiAocG9ydCksICJJciIgKFBDSU9fQkFTRSAtIElPX0JBU0UpLCAiSXIiIChJT19CQVNFKQkJXAorCTogImNjIik7CQkJCQkJCQlcCisJcmV0dXJuICh1bnNpZ25lZCBzeil2YWx1ZTsJCQkJCQlcCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICpfX2lvYWRkcih1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKwl2b2lkIF9faW9tZW0gKnJldDsKKwlpZiAoX19QT1JUX1BDSU8ocG9ydCkpCisJCXJldCA9IFBDSU9fQkFTRTsKKwllbHNlCisJCXJldCA9IElPX0JBU0U7CisJcmV0dXJuIHJldCArIChwb3J0IDw8IDIpOworfQorCisjZGVmaW5lIERFQ0xBUkVfSU8oc3osZm5zdWZmaXgsaW5zdHIpCVwKKwlERUNMQVJFX0RZTl9JTihzeixmbnN1ZmZpeCxpbnN0cikKKworREVDTEFSRV9JTyhjaGFyLGIsImIiKQorREVDTEFSRV9JTyhzaG9ydCx3LCIiKQorREVDTEFSRV9JTyhpbnQsbCwiIikKKworI3VuZGVmIERFQ0xBUkVfSU8KKyN1bmRlZiBERUNMQVJFX0RZTl9JTgorCisvKgorICogQ29uc3RhbnQgYWRkcmVzcyBJTyBmdW5jdGlvbnMKKyAqCisgKiBUaGVzZSBoYXZlIHRvIGJlIG1hY3JvcyBmb3IgdGhlICdKJyBjb25zdHJhaW50IHRvIHdvcmsgLQorICogKy8tNDA5NiBpbW1lZGlhdGUgb3BlcmFuZC4KKyAqLworI2RlZmluZSBfX291dGJjKHZhbHVlLHBvcnQpCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cmIJJTAsIFslMSwgJTJdCUAgb3V0YmMiCQkJCVwKKwkJOiA6ICJyIiAodmFsdWUpLCAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSA8PCAyKSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyYgklMCwgWyUxLCAlMl0JQCBvdXRiYyIJCQkJXAorCQk6IDogInIiICh2YWx1ZSksICJyIiAoSU9fQkFTRSksICJyIiAoKHBvcnQpIDw8IDIpKTsJCVwKK30pCisKKyNkZWZpbmUgX19pbmJjKHBvcnQpCQkJCQkJCQlcCisoewkJCQkJCQkJCQlcCisJdW5zaWduZWQgY2hhciByZXN1bHQ7CQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcmIJJTAsIFslMSwgJTJdCUAgaW5iYyIJCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwkJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcmIJJTAsIFslMSwgJTJdCUAgaW5iYyIJCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChJT19CQVNFKSwgInIiICgocG9ydCkgPDwgMikpOwkJXAorCXJlc3VsdDsJCQkJCQkJCQlcCit9KQorCisjZGVmaW5lIF9fb3V0d2ModmFsdWUscG9ydCkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX192ID0gdmFsdWU7CQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyCSUwLCBbJTEsICUyXQlAIG91dHdjIgkJCQlcCisJCTogOiAiciIgKF9fdnxfX3Y8PDE2KSwgInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyCSUwLCBbJTEsICUyXQlAIG91dHdjIgkJCQlcCisJCTogOiAiciIgKF9fdnxfX3Y8PDE2KSwgInIiIChJT19CQVNFKSwgInIiICgocG9ydCkgPDwgMikpOwkJXAorfSkKKworI2RlZmluZSBfX2lud2MocG9ydCkJCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBzaG9ydCByZXN1bHQ7CQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0JQCBpbndjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSA8PCAyKSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyCSUwLCBbJTEsICUyXQlAIGlud2MiCQkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoSU9fQkFTRSksICJyIiAoKHBvcnQpIDw8IDIpKTsJCVwKKwlyZXN1bHQgJiAweGZmZmY7CQkJCQkJCVwKK30pCisKKyNkZWZpbmUgX19vdXRsYyh2YWx1ZSxwb3J0KQkJCQkJCQlcCisoewkJCQkJCQkJCQlcCisJdW5zaWduZWQgbG9uZyBfX3YgPSB2YWx1ZTsJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJzdHIJJTAsIFslMSwgJTJdCUAgb3V0bGMiCQkJCVwKKwkJOiA6ICJyIiAoX192KSwgInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwkJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cgklMCwgWyUxLCAlMl0JQCBvdXRsYyIJCQkJXAorCQk6IDogInIiIChfX3YpLCAiciIgKElPX0JBU0UpLCAiciIgKChwb3J0KSA8PCAyKSk7CQlcCit9KQorCisjZGVmaW5lIF9faW5sYyhwb3J0KQkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgcmVzdWx0OwkJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJsZHIJJTAsIFslMSwgJTJdCUAgaW5sYyIJCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkgPDwgMikpOwkJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcgklMCwgWyUxLCAlMl0JQCBpbmxjIgkJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKElPX0JBU0UpLCAiciIgKChwb3J0KSA8PCAyKSk7CQlcCisJcmVzdWx0OwkJCQkJCQkJCVwKK30pCisKKyNkZWZpbmUgX19pb2FkZHJjKHBvcnQpCQlcCisJKChfX1BPUlRfUENJTyhwb3J0KSA/IFBDSU9fQkFTRSA6IElPX0JBU0UpICsgKChwb3J0KSA8PCAyKSkKKworI2RlZmluZSBpbmIocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW5iYyhwKSAgICA6IF9faW5iKHApKQorI2RlZmluZSBpbncocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW53YyhwKSAgICA6IF9faW53KHApKQorI2RlZmluZSBpbmwocCkJIAkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW5sYyhwKSAgICA6IF9faW5sKHApKQorI2RlZmluZSBvdXRiKHYscCkJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX291dGJjKHYscCkgOiBfX291dGIodixwKSkKKyNkZWZpbmUgb3V0dyh2LHApCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19vdXR3Yyh2LHApIDogX19vdXR3KHYscCkpCisjZGVmaW5lIG91dGwodixwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9fb3V0bGModixwKSA6IF9fb3V0bCh2LHApKQorI2RlZmluZSBfX2lvYWRkcihwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW9hZGRyKHApICA6IF9faW9hZGRyYyhwKSkKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm8gaXMgZGVwcmVjYXRlZCAqLworI2RlZmluZSBpb2FkZHIocG9ydCkJKCh1bnNpZ25lZCBsb25nKV9faW9hZGRyKChwb3J0KSkpCisKKyNkZWZpbmUgaW5zYihwLGQsbCkJX19yYXdfcmVhZHNiKF9faW9hZGRyKHApLGQsbCkKKyNkZWZpbmUgaW5zdyhwLGQsbCkJX19yYXdfcmVhZHN3KF9faW9hZGRyKHApLGQsbCkKKworI2RlZmluZSBvdXRzYihwLGQsbCkJX19yYXdfd3JpdGVzYihfX2lvYWRkcihwKSxkLGwpCisjZGVmaW5lIG91dHN3KHAsZCxsKQlfX3Jhd193cml0ZXN3KF9faW9hZGRyKHApLGQsbCkKKworLyoKKyAqIDE6MSBtYXBwaW5nIGZvciBpb3JlbWFwcGVkIHJlZ2lvbnMuCisgKi8KKyNkZWZpbmUgX19tZW1fcGNpKHgpCSh4KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzM1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvaXJxcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL2lycXMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjZGVmaW5lIElSUV9QUklOVEVSCQkwCisjZGVmaW5lIElSUV9CQVRMT1cJCTEKKyNkZWZpbmUgSVJRX0ZMT1BQWUlOREVYCQkyCisjZGVmaW5lIElSUV9WU1lOQ1BVTFNFCQkzCisjZGVmaW5lIElSUV9QT1dFUk9OCQk0CisjZGVmaW5lIElSUV9USU1FUjAJCTUKKyNkZWZpbmUgSVJRX1RJTUVSMQkJNgorI2RlZmluZSBJUlFfSU1NRURJQVRFCQk3CisjZGVmaW5lIElSUV9FWFBDQVJERklRCQk4CisjZGVmaW5lIElSUV9IQVJERElTSwkJOQorI2RlZmluZSBJUlFfU0VSSUFMUE9SVAkJMTAKKyNkZWZpbmUgSVJRX0ZMT1BQWURJU0sJCTEyCisjZGVmaW5lIElSUV9FWFBBTlNJT05DQVJECTEzCisjZGVmaW5lIElSUV9LRVlCT0FSRFRYCQkxNAorI2RlZmluZSBJUlFfS0VZQk9BUkRSWAkJMTUKKworI2RlZmluZSBJUlFfRE1BMAkJMTYKKyNkZWZpbmUgSVJRX0RNQTEJCTE3CisjZGVmaW5lIElSUV9ETUEyCQkxOAorI2RlZmluZSBJUlFfRE1BMwkJMTkKKyNkZWZpbmUgSVJRX0RNQVMwCQkyMAorI2RlZmluZSBJUlFfRE1BUzEJCTIxCisKKyNkZWZpbmUgRklRX0ZMT1BQWURBVEEJCTAKKyNkZWZpbmUgRklRX0VDT05FVAkJMgorI2RlZmluZSBGSVFfU0VSSUFMUE9SVAkJNAorI2RlZmluZSBGSVFfRVhQQU5TSU9OQ0FSRAk2CisjZGVmaW5lIEZJUV9GT1JDRQkJNworCisvKgorICogVGhpcyBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBGSVEgIklSUSIgbnVtYmVycworICovCisjZGVmaW5lIEZJUV9TVEFSVAkJNjQKKworI2RlZmluZSBJUlFfVElNRVIJCUlSUV9USU1FUjAKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZmM3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvbWVtb3J5LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvbWVtb3J5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk2LDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAyMC1PY3QtMTk5NiBSTUsJQ3JlYXRlZAorICogICAzMS1EZWMtMTk5NyBSTUsJRml4ZWQgZGVmaW5pdGlvbnMgdG8gcmVkdWNlIHdhcm5pbmdzCisgKiAgIDExLUphbi0xOTk4IFJNSwlVbmlubGluZWQgdG8gcmVkdWNlIGhpdHMgb24gY2FjaGUKKyAqICAgMDgtRmViLTE5OTggUk1LCUFkZGVkIF9fdmlydF90b19idXMgYW5kIF9fYnVzX3RvX3ZpcnQKKyAqICAgMjEtTWFyLTE5OTkgUk1LCVJlbmFtZWQgdG8gbWVtb3J5LmgKKyAqCQkgUk1LCUFkZGVkIFRBU0tfU0laRSBhbmQgUEFHRV9PRkZTRVQKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworLyoKKyAqIFBoeXNpY2FsIERSQU0gb2Zmc2V0LgorICovCisjZGVmaW5lIFBIWVNfT0ZGU0VUCSgweDEwMDAwMDAwVUwpCisKKy8qCisgKiBUaGVzZSBhcmUgZXhhY3RseSB0aGUgc2FtZSBvbiB0aGUgUmlzY1BDIGFzIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHZpZXcuCisgKi8KKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KSBfX3ZpcnRfdG9fcGh5cyh4KQorI2RlZmluZSBfX2J1c190b192aXJ0KHgpIF9fcGh5c190b192aXJ0KHgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjFkY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3BhcmFtLmgKQEAgLTAsMCArMSwzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9wYXJhbS5oCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTMyNzdkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3N5c3RlbS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3N5c3RlbS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvaW9tZC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWlvbWRfd3JpdGViKDAsIElPTURfUk9NQ1IwKTsKKworCS8qCisJICogSnVtcCBpbnRvIHRoZSBST00KKwkgKi8KKwljcHVfcmVzZXQoMCk7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkN2RmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdGltZXguaApAQCAtMCwwICsxLDE3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy90aW1leC5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NywgMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBSaXNjUEMgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKi8KKworLyoKKyAqIE9uIHRoZSBSaXNjUEMsIHRoZSBjbG9jayB0aWNrcyBhdCAyTUh6LgorICovCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURQkJMjAwMDAwMAorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3VuY29tcHJlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzAzNWZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdW5jb21wcmVzcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NiBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjZGVmaW5lIFZJRE1FTSAoKGNoYXIgKilTQ1JFRU5fU1RBUlQpCisgCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK2ludCB2aWRlb19udW1fY29sdW1ucywgdmlkZW9fbnVtX2xpbmVzLCB2aWRlb19zaXplX3JvdzsKK2ludCB3aGl0ZSwgYnl0ZXNfcGVyX2NoYXJfaDsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGNvbl9jaGFyY29udnRhYmxlWzI1Nl07CisKK3N0cnVjdCBwYXJhbV9zdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcgcGFnZV9zaXplOworCXVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7CisJdW5zaWduZWQgbG9uZyByYW1kaXNrX3NpemU7CisJdW5zaWduZWQgbG9uZyBtb3VudHJvb3RyZG9ubHk7CisJdW5zaWduZWQgbG9uZyByb290ZGV2OworCXVuc2lnbmVkIGxvbmcgdmlkZW9fbnVtX2NvbHM7CisJdW5zaWduZWQgbG9uZyB2aWRlb19udW1fcm93czsKKwl1bnNpZ25lZCBsb25nIHZpZGVvX3g7CisJdW5zaWduZWQgbG9uZyB2aWRlb195OworCXVuc2lnbmVkIGxvbmcgbWVtY19jb250cm9sX3JlZzsKKwl1bnNpZ25lZCBjaGFyIHNvdW5kZGVmYXVsdDsKKwl1bnNpZ25lZCBjaGFyIGFkZnNkcml2ZXM7CisJdW5zaWduZWQgY2hhciBieXRlc19wZXJfY2hhcl9oOworCXVuc2lnbmVkIGNoYXIgYnl0ZXNfcGVyX2NoYXJfdjsKKwl1bnNpZ25lZCBsb25nIHVudXNlZFsyNTYvNC0xMV07Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwYWxldHRlXzRbMTZdID0geworCTB4MDAwMDAwMDAsCisJMHgwMDAwMDBjYywKKwkweDAwMDBjYzAwLCAgICAgICAgICAgICAvKiBHcmVlbiAgICovCisJMHgwMDAwY2NjYywgICAgICAgICAgICAgLyogWWVsbG93ICAqLworCTB4MDBjYzAwMDAsICAgICAgICAgICAgIC8qIEJsdWUgICAgKi8KKwkweDAwY2MwMGNjLCAgICAgICAgICAgICAvKiBNYWdlbnRhICovCisJMHgwMGNjY2MwMCwgICAgICAgICAgICAgLyogQ3lhbiAgICAqLworCTB4MDBjY2NjY2MsICAgICAgICAgICAgIC8qIFdoaXRlICAgKi8KKwkweDAwMDAwMDAwLAorCTB4MDAwMDAwZmYsCisJMHgwMDAwZmYwMCwKKwkweDAwMDBmZmZmLAorCTB4MDBmZjAwMDAsCisJMHgwMGZmMDBmZiwKKwkweDAwZmZmZjAwLAorCTB4MDBmZmZmZmYKK307CisKKyNkZWZpbmUgcGFsZXR0ZV9zZXRwaXhlbChwKQkqKHVuc2lnbmVkIGxvbmcgKikoSU9fU1RBUlQrMHgwMDQwMDAwMCkgPSAweDEwMDAwMDAwfCgocCkgJiAyNTUpCisjZGVmaW5lIHBhbGV0dGVfd3JpdGUodikJKih1bnNpZ25lZCBsb25nICopKElPX1NUQVJUKzB4MDA0MDAwMDApID0gMHgwMDAwMDAwMHwoKHYpICYgMHgwMGZmZmZmZikKKworLyoKKyAqIHBhcmFtc19waHlzIGlzIGEgbGlua2VyIGRlZmluZWQgc3ltYm9sIC0gc2VlCisgKiBhcmNoL2FybS9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKKyAqLworZXh0ZXJuIF9fYXR0cmlidXRlX18oKHB1cmUpKSBzdHJ1Y3QgcGFyYW1fc3RydWN0ICpwYXJhbXModm9pZCk7CisjZGVmaW5lIHBhcmFtcyAocGFyYW1zKCkpCisKKyNpZm5kZWYgU1RBTkRBTE9ORV9ERUJVRyAKKy8qCisgKiBUaGlzIGRvZXMgbm90IGFwcGVuZCBhIG5ld2xpbmUKKyAqLworc3RhdGljIHZvaWQgcHV0c3RyKGNvbnN0IGNoYXIgKnMpCit7CisJZXh0ZXJuIHZvaWQgbGxfd3JpdGVfY2hhcihjaGFyICosIGNoYXIgYywgY2hhciB3aGl0ZSk7CisJaW50IHgseTsKKwl1bnNpZ25lZCBjaGFyIGM7CisJY2hhciAqcHRyOworCisJeCA9IHBhcmFtcy0+dmlkZW9feDsKKwl5ID0gcGFyYW1zLT52aWRlb195OworCisJd2hpbGUgKCAoIGMgPSAqKHVuc2lnbmVkIGNoYXIgKilzKysgKSAhPSAnXDAnICkgeworCQlpZiAoIGMgPT0gJ1xuJyApIHsKKwkJCXggPSAwOworCQkJaWYgKCArK3kgPj0gdmlkZW9fbnVtX2xpbmVzICkgeworCQkJCXktLTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXB0ciA9IFZJRE1FTSArICgoeSp2aWRlb19udW1fY29sdW1ucypwYXJhbXMtPmJ5dGVzX3Blcl9jaGFyX3YreCkqYnl0ZXNfcGVyX2NoYXJfaCk7CisJCQlsbF93cml0ZV9jaGFyKHB0ciwgYywgd2hpdGUpOworCQkJaWYgKCArK3ggPj0gdmlkZW9fbnVtX2NvbHVtbnMgKSB7CisJCQkJeCA9IDA7CisJCQkJaWYgKCArK3kgPj0gdmlkZW9fbnVtX2xpbmVzICkgeworCQkJCQl5LS07CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcGFyYW1zLT52aWRlb194ID0geDsKKwlwYXJhbXMtPnZpZGVvX3kgPSB5OworfQorCitzdGF0aWMgdm9pZCBlcnJvcihjaGFyICp4KTsKKworLyoKKyAqIFNldHVwIGZvciBkZWNvbXByZXNzaW9uCisgKi8KK3N0YXRpYyB2b2lkIGFyY2hfZGVjb21wX3NldHVwKHZvaWQpCit7CisJaW50IGk7CisJCisJdmlkZW9fbnVtX2xpbmVzID0gcGFyYW1zLT52aWRlb19udW1fcm93czsKKwl2aWRlb19udW1fY29sdW1ucyA9IHBhcmFtcy0+dmlkZW9fbnVtX2NvbHM7CisJYnl0ZXNfcGVyX2NoYXJfaCA9IHBhcmFtcy0+Ynl0ZXNfcGVyX2NoYXJfaDsKKwl2aWRlb19zaXplX3JvdyA9IHZpZGVvX251bV9jb2x1bW5zICogYnl0ZXNfcGVyX2NoYXJfaDsKKwlpZiAoYnl0ZXNfcGVyX2NoYXJfaCA9PSA0KQorCQlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCisJCQljb25fY2hhcmNvbnZ0YWJsZVtpXSA9CisJCQkJKGkgJiAxMjggPyAxIDw8IDAgIDogMCkgfAorCQkJCShpICYgNjQgID8gMSA8PCA0ICA6IDApIHwKKwkJCQkoaSAmIDMyICA/IDEgPDwgOCAgOiAwKSB8CisJCQkJKGkgJiAxNiAgPyAxIDw8IDEyIDogMCkgfAorCQkJCShpICYgOCAgID8gMSA8PCAxNiA6IDApIHwKKwkJCQkoaSAmIDQgICA/IDEgPDwgMjAgOiAwKSB8CisJCQkJKGkgJiAyICAgPyAxIDw8IDI0IDogMCkgfAorCQkJCShpICYgMSAgID8gMSA8PCAyOCA6IDApOworCWVsc2UKKwkJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisJCQljb25fY2hhcmNvbnZ0YWJsZVtpXSA9CisJCQkJKGkgJiA4ICAgPyAxIDw8IDAgIDogMCkgfAorCQkJCShpICYgNCAgID8gMSA8PCA4ICA6IDApIHwKKwkJCQkoaSAmIDIgICA/IDEgPDwgMTYgOiAwKSB8CisJCQkJKGkgJiAxICAgPyAxIDw8IDI0IDogMCk7CisKKworCXBhbGV0dGVfc2V0cGl4ZWwoMCk7CisJaWYgKGJ5dGVzX3Blcl9jaGFyX2ggPT0gMSkgeworCQlwYWxldHRlX3dyaXRlICgwKTsKKwkJcGFsZXR0ZV93cml0ZSAoMHgwMGZmZmZmZik7CisJCWZvciAoaSA9IDI7IGkgPCAyNTY7IGkrKykKKwkJCXBhbGV0dGVfd3JpdGUgKDApOworCQl3aGl0ZSA9IDE7CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorCQkJcGFsZXR0ZV93cml0ZSAoaSA8IDE2ID8gcGFsZXR0ZV80W2ldIDogMCk7CisJCXdoaXRlID0gNzsKKwl9CisKKwlpZiAocGFyYW1zLT5ucl9wYWdlcyAqIHBhcmFtcy0+cGFnZV9zaXplIDwgNDA5NioxMDI0KSBlcnJvcigiPDRNIG9mIG1lbVxuIik7Cit9CisjZW5kaWYKKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2MyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtcnBjL3ZtYWxsb2MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDFjMDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9iYXN0LWNwbGQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1jcGxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4Y2E1MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1jcGxkLmgKQEAgLTAsMCArMSw1OCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9iYXN0LWNwbGQuaAorICoKKyAqIChjKSAyMDAzLDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIEJBU1QgLSBDUExEIGNvbnRyb2wgY29uc3RhbnRzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMjUtTWF5LTIwMDMgQkpEICBDcmVhdGVkIGZpbGUsIGFkZGVkIENUUkwxIHJlZ2lzdGVycworICogIDMwLUF1Zy0yMDA0IEJKRCAgVXBkYXRlZCBkZWZpbml0aW9ucyBmcm9tIDIuNC4yNiBwb3J0CisgKiAgMzAtQXVnLTIwMDQgQkpEICBBZGRlZCBDVFJMMyBhbmQgQ1RSTDQgZGVmaW5pdGlvbnMKKyovCisKKyNpZm5kZWYgX19BU01fQVJDSF9CQVNUQ1BMRF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfQkFTVENQTERfSAorCisvKiBDVFJMMSAtIEF1ZGlvIExSIHJvdXRpbmcgKi8KKworI2RlZmluZSBCQVNUX0NQTERfQ1RSTDFfTFJDT0ZGCSAgICAoMHgwMCkKKyNkZWZpbmUgQkFTVF9DUExEX0NUUkwxX0xSQ0FEQwkgICAgKDB4MDEpCisjZGVmaW5lIEJBU1RfQ1BMRF9DVFJMMV9MUkNEQUMJICAgICgweDAyKQorI2RlZmluZSBCQVNUX0NQTERfQ1RSTDFfTFJDQVJNCSAgICAoMHgwMykKKyNkZWZpbmUgQkFTVF9DUExEX0NUUkwxX0xSTUFTSwkgICAgKDB4MDMpCisKKy8qIENUUkwyIC0gTkFORCBXUCBjb250cm9sLCBJREUgUmVzZXQgYXNzZXJ0L2NoZWNrICovCisKKyNkZWZpbmUgQkFTVF9DUExEX0NUUkwyX1dOQU5EICAgICAgICgweDA0KQorI2RlZmluZSBCQVNUX0NQTERfQ1RMUjJfSURFUlNUICAgICAgKDB4MDgpCisKKy8qIENUUkwzIC0gcm9tIHdyaXRlIGNvbnRyb2wsIENQTEQgaWRlbnRpdHkgKi8KKworI2RlZmluZSBCQVNUX0NQTERfQ1RSTDNfSURNQVNLICAgICAgKDB4MGUpCisjZGVmaW5lIEJBU1RfQ1BMRF9DVFJMM19ST01XRU4gICAgICAoMHgwMSkKKworLyogQ1RSTDQgLSA4Yml0IExDRCBpbnRlcmZhY2UgY29udHJvbC9zdGF0dXMgKi8KKworI2RlZmluZSBCQVNUX0NQTERfQ1RSTDRfTExBVAkgICAgKDB4MDEpCisjZGVmaW5lIEJBU1RfQ1BMRF9DVFJMNF9MQ0RSVwkgICAgKDB4MDIpCisjZGVmaW5lIEJBU1RfQ1BMRF9DVFJMNF9MQ0RDTUQJICAgICgweDA0KQorI2RlZmluZSBCQVNUX0NQTERfQ1RSTDRfTENERTIJICAgICgweDAxKQorCisvKiBDVFJMNSAtIERNQSByb3V0aW5nICovCisKKyNkZWZpbmUgQkFTVF9DUExEX0RNQTBfUFJJSURFICAgICAgKDA8PDApCisjZGVmaW5lIEJBU1RfQ1BMRF9ETUEwX1NFQ0lERSAgICAgICgxPDwwKQorI2RlZmluZSBCQVNUX0NQTERfRE1BMF9JU0ExNSAgICAgICAoMjw8MCkKKyNkZWZpbmUgQkFTVF9DUExEX0RNQTBfSVNBMzYgICAgICAgKDM8PDApCisKKyNkZWZpbmUgQkFTVF9DUExEX0RNQTFfUFJJSURFICAgICAgKDA8PDIpCisjZGVmaW5lIEJBU1RfQ1BMRF9ETUExX1NFQ0lERSAgICAgICgxPDwyKQorI2RlZmluZSBCQVNUX0NQTERfRE1BMV9JU0ExNSAgICAgICAoMjw8MikKKyNkZWZpbmUgQkFTVF9DUExEX0RNQTFfSVNBMzYgICAgICAgKDM8PDIpCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0JBU1RDUExEX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzliNDdmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9iYXN0LWlycS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1pcnEuaAorICoKKyAqIChjKSAyMDAzLDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIE1hY2hpbmUgQkFTVCAtIElSUSBOdW1iZXIgZGVmaW5pdGlvbnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAxNC1TZXAtMjAwNCBCSkQgIEZpeGVkIElSUV9VU0JPQyBkZWZpbml0aW9uCisgKiAgMDYtSmFuLTIwMDMgQkpEICBMaW51eCAyLjYuMCB2ZXJzaW9uCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0JBU1RJUlFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0JBU1RJUlFfSAorCisvKiBpcnEgbnVtYmVycyB0byBvbmJvYXJkIHBlcmlwaGVyYWxzICovCisKKyNkZWZpbmUgSVJRX1VTQk9DICAgICAgSVJRX0VJTlQxOAorI2RlZmluZSBJUlFfSURFMCAgICAgICBJUlFfRUlOVDE2CisjZGVmaW5lIElSUV9JREUxICAgICAgIElSUV9FSU5UMTcKKyNkZWZpbmUgSVJRX1BDU0VSSUFMMSAgSVJRX0VJTlQxNQorI2RlZmluZSBJUlFfUENTRVJJQUwyICBJUlFfRUlOVDE0CisjZGVmaW5lIElSUV9QQ1BBUkFMTEVMIElSUV9FSU5UMTMKKyNkZWZpbmUgSVJRX0FTSVggICAgICAgSVJRX0VJTlQxMQorI2RlZmluZSBJUlFfRE05MDAwICAgICBJUlFfRUlOVDEwCisjZGVmaW5lIElSUV9JU0EJICAgICAgIElSUV9FSU5UOQorI2RlZmluZSBJUlFfU01BTEVSVCAgICBJUlFfRUlOVDgKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfQkFTVElSUV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2Jhc3QtbWFwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2Jhc3QtbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjljMDdlMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1tYXAuaApAQCAtMCwwICsxLDE1MCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9iYXN0LW1hcC5oCisgKgorICogKGMpIDIwMDMsMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MKKyAqICBCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CisgKgorICogTWFjaGluZSBCQVNUIC0gTWVtb3J5IG1hcCBkZWZpbml0aW9ucworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICogIDA2LUphbi0yMDAzIEJKRCAgTGludXggMi42LjAgdmVyc2lvbiwgbW92ZWQgYmFzdCBzcGVjaWZpY3MgZnJvbSBhcmNoL21hcC5oCisgKiAgMTItTWFyLTIwMDQgQkpEICBGaXhlZCBoZWFkZXIgaW5jbHVkZSBwcm90ZWN0aW9uCisqLworCisvKiBuZWVkcyBhcmNoL21hcC5oIGluY2x1ZGluZyB3aXRoIHRoaXMgKi8KKworLyogb2ssIHdlJ3ZlIHVzZWQgdXAgdG8gMHgxMzAwMDAwMCwgbm93IHdlIG5lZWQgdG8gZmluZCBzcGFjZSBmb3IgdGhlCisgKiBwZXJpcGhlcmFscyB0aGF0IGxpdmUgaW4gdGhlIG5HQ1NbeF0gYXJlYXMsIHdoaWNoIGFyZSBxdWl0ZSBudW1lcm91cworICogaW4gdGhlaXIgc3BhY2UuIFdlIGFsc28gaGF2ZSB0aGUgYm9hcmQncyBDUExEIHRvIGZpbmQgcmVnaXN0ZXIgc3BhY2UKKyAqIGZvci4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfQkFTVE1BUF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfQkFTVE1BUF9ICisKKyNkZWZpbmUgQkFTVF9JT0FERFIoeCkJICAgKFMzQzI0MTBfQUREUigoeCkgKyAweDAxMzAwMDAwKSkKKworLyogd2UgcHV0IHRoZSBDUExEIHJlZ2lzdGVycyBuZXh0LCB0byBnZXQgdGhlbSBvdXQgb2YgdGhlIHdheSAqLworCisjZGVmaW5lIEJBU1RfVkFfQ1RSTDEJICAgIEJBU1RfSU9BRERSKDB4MDAwMDAwMDApCSAvKiAweDAxMzAwMDAwICovCisjZGVmaW5lIEJBU1RfUEFfQ1RSTDEJICAgIChTM0MyNDEwX0NTNSB8IDB4NzgwMDAwMCkKKworI2RlZmluZSBCQVNUX1ZBX0NUUkwyCSAgICBCQVNUX0lPQUREUigweDAwMTAwMDAwKQkgLyogMHgwMTQwMDAwMCAqLworI2RlZmluZSBCQVNUX1BBX0NUUkwyCSAgICAoUzNDMjQxMF9DUzEgfCAweDYwMDAwMDApCisKKyNkZWZpbmUgQkFTVF9WQV9DVFJMMwkgICAgQkFTVF9JT0FERFIoMHgwMDIwMDAwMCkJIC8qIDB4MDE1MDAwMDAgKi8KKyNkZWZpbmUgQkFTVF9QQV9DVFJMMwkgICAgKFMzQzI0MTBfQ1MxIHwgMHg2ODAwMDAwKQorCisjZGVmaW5lIEJBU1RfVkFfQ1RSTDQJICAgIEJBU1RfSU9BRERSKDB4MDAzMDAwMDApCSAvKiAweDAxNjAwMDAwICovCisjZGVmaW5lIEJBU1RfUEFfQ1RSTDQJICAgIChTM0MyNDEwX0NTMSB8IDB4NzAwMDAwMCkKKworLyogbmV4dCwgd2UgaGF2ZSB0aGUgUEMxMDQgSVNBIGludGVycnVwdCByZWdpc3RlcnMgKi8KKworI2RlZmluZSBCQVNUX1BBX1BDMTA0X0lSUVJFUSAgKFMzQzI0MTBfQ1M1IHwgMHg2MDAwMDAwKSAvKiAweDAxNzAwMDAwICovCisjZGVmaW5lIEJBU1RfVkFfUEMxMDRfSVJRUkVRICBCQVNUX0lPQUREUigweDAwNDAwMDAwKQorCisjZGVmaW5lIEJBU1RfUEFfUEMxMDRfSVJRUkFXICAoUzNDMjQxMF9DUzUgfCAweDY4MDAwMDApIC8qIDB4MDE4MDAwMDAgKi8KKyNkZWZpbmUgQkFTVF9WQV9QQzEwNF9JUlFSQVcgIEJBU1RfSU9BRERSKDB4MDA1MDAwMDApCisKKyNkZWZpbmUgQkFTVF9QQV9QQzEwNF9JUlFNQVNLIChTM0MyNDEwX0NTNSB8IDB4NzAwMDAwMCkgLyogMHgwMTkwMDAwMCAqLworI2RlZmluZSBCQVNUX1ZBX1BDMTA0X0lSUU1BU0sgQkFTVF9JT0FERFIoMHgwMDYwMDAwMCkKKworI2RlZmluZSBCQVNUX1BBX0xDRF9SQ01EMSAgICAgKDB4ODgwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQV9MQ0RfUkNNRDEgICAgIEJBU1RfSU9BRERSKDB4MDA3MDAwMDApCisKKyNkZWZpbmUgQkFTVF9QQV9MQ0RfV0NNRDEgICAgICgweDgwMDAwMDApCisjZGVmaW5lIEJBU1RfVkFfTENEX1dDTUQxICAgICBCQVNUX0lPQUREUigweDAwODAwMDAwKQorCisjZGVmaW5lIEJBU1RfUEFfTENEX1JEQVRBMSAgICAoMHg5ODAwMDAwKQorI2RlZmluZSBCQVNUX1ZBX0xDRF9SREFUQTEgICAgQkFTVF9JT0FERFIoMHgwMDkwMDAwMCkKKworI2RlZmluZSBCQVNUX1BBX0xDRF9XREFUQTEgICAgKDB4OTAwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQV9MQ0RfV0RBVEExICAgIEJBU1RfSU9BRERSKDB4MDBBMDAwMDApCisKKyNkZWZpbmUgQkFTVF9QQV9MQ0RfUkNNRDIgICAgICgweEE4MDAwMDApCisjZGVmaW5lIEJBU1RfVkFfTENEX1JDTUQyICAgICBCQVNUX0lPQUREUigweDAwQjAwMDAwKQorCisjZGVmaW5lIEJBU1RfUEFfTENEX1dDTUQyICAgICAoMHhBMDAwMDAwKQorI2RlZmluZSBCQVNUX1ZBX0xDRF9XQ01EMiAgICAgQkFTVF9JT0FERFIoMHgwMEMwMDAwMCkKKworI2RlZmluZSBCQVNUX1BBX0xDRF9SREFUQTIgICAgKDB4QjgwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQV9MQ0RfUkRBVEEyICAgIEJBU1RfSU9BRERSKDB4MDBEMDAwMDApCisKKyNkZWZpbmUgQkFTVF9QQV9MQ0RfV0RBVEEyICAgICgweEIwMDAwMDApCisjZGVmaW5lIEJBU1RfVkFfTENEX1dEQVRBMiAgICBCQVNUX0lPQUREUigweDAwRTAwMDAwKQorCisKKy8qIDB4RTAwMDAwMDAgY29udGFpbnMgdGhlIElPIHNwYWNlIHRoYXQgaXMgc3BsaXQgYnkgc3BlZWQgYW5kCisgKiB3ZXRoZXIgdGhlIGFjY2VzcyBpcyBmb3IgOCBvciAxNmJpdCBJTy4uLiB0aGlzIGVuc3VyZXMgdGhhdAorICogdGhlIGNvcnJlY3QgYWNjZXNzIGlzIG1hZGUKKyAqCisgKiAweDEwMDAwMDAwIG9mIHNwYWNlLCBwYXJ0aXRpb25lZCBhcyBzbzoKKyAqCisgKiAweDAwMDAwMDAwIHRvIDB4MDQwMDAwMDAgIDhiaXQsICBzbG93CisgKiAweDA0MDAwMDAwIHRvIDB4MDgwMDAwMDAgIDE2Yml0LCBzbG93CisgKiAweDA4MDAwMDAwIHRvIDB4MEMwMDAwMDAgIDE2Yml0LCBuZXQKKyAqIDB4MEMwMDAwMDAgdG8gMHgxMDAwMDAwMCAgMTZiaXQsIGZhc3QKKyAqCisgKiBlYWNoIG9mIHRoZXNlIHNwYWNlcyBoYXMgdGhlIGZvbGxvd2luZyBpbjoKKyAqCisgKiAweDAwMDAwMDAwIHRvIDB4MDEwMDAwMDAgMTZNQiBJU0EgSU8gc3BhY2UKKyAqIDB4MDEwMDAwMDAgdG8gMHgwMjAwMDAwMCAxNk1CIElTQSBtZW1vcnkgc3BhY2UKKyAqIDB4MDIwMDAwMDAgdG8gMHgwMjEwMDAwMCAxTUIgIElERSBwcmltYXJ5IGNoYW5uZWwKKyAqIDB4MDIxMDAwMDAgdG8gMHgwMjIwMDAwMCAxTUIgIElERSBwcmltYXJ5IGNoYW5uZWwgYXV4CisgKiAweDAyMjAwMDAwIHRvIDB4MDI0MDAwMDAgMU1CICBJREUgc2Vjb25kYXJ5IGNoYW5uZWwKKyAqIDB4MDIzMDAwMDAgdG8gMHgwMjQwMDAwMCAxTUIgIElERSBzZWNvbmRhcnkgY2hhbm5lbCBhdXgKKyAqIDB4MDI0MDAwMDAgdG8gMHgwMjUwMDAwMCAxTUIgIEFTSVggZXRoZXJuZXQgY29udHJvbGxlcgorICogMHgwMjUwMDAwMCB0byAweDAyNjAwMDAwIDFNQiAgRGF2aWNvbSBETTkwMDAgZXRoZXJuZXQgY29udHJvbGxlcgorICogMHgwMjYwMDAwMCB0byAweDAyNzAwMDAwIDFNQiAgUEMgU3VwZXJJTyBjb250cm9sbGVyCisgKgorICogdGhlIHBoeWlzY2FsIGxheW91dCBvZiB0aGUgem9uZXMgYXJlOgorICogIG5HQ1MyIC0gOGJpdCwgc2xvdworICogIG5HQ1MzIC0gMTZiaXQsIHNsb3cKKyAqICBuR0NTNCAtIDE2Yml0LCBuZXQKKyAqICBuR0NTNSAtIDE2Yml0LCBmYXN0CisgKi8KKworI2RlZmluZSBCQVNUX1ZBX01VTFRJU1BBQ0UgKDB4RTAwMDAwMDApCisKKyNkZWZpbmUgQkFTVF9WQV9JU0FJTwkgICAoQkFTVF9WQV9NVUxUSVNQQUNFICsgMHgwMDAwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQV9JU0FNRU0JICAgKEJBU1RfVkFfTVVMVElTUEFDRSArIDB4MDEwMDAwMDApCisjZGVmaW5lIEJBU1RfVkFfSURFUFJJCSAgIChCQVNUX1ZBX01VTFRJU1BBQ0UgKyAweDAyMDAwMDAwKQorI2RlZmluZSBCQVNUX1ZBX0lERVBSSUFVWCAgKEJBU1RfVkFfTVVMVElTUEFDRSArIDB4MDIxMDAwMDApCisjZGVmaW5lIEJBU1RfVkFfSURFU0VDCSAgIChCQVNUX1ZBX01VTFRJU1BBQ0UgKyAweDAyMjAwMDAwKQorI2RlZmluZSBCQVNUX1ZBX0lERVNFQ0FVWCAgKEJBU1RfVkFfTVVMVElTUEFDRSArIDB4MDIzMDAwMDApCisjZGVmaW5lIEJBU1RfVkFfQVNJWE5FVAkgICAoQkFTVF9WQV9NVUxUSVNQQUNFICsgMHgwMjQwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQV9ETTkwMDAJICAgKEJBU1RfVkFfTVVMVElTUEFDRSArIDB4MDI1MDAwMDApCisjZGVmaW5lIEJBU1RfVkFfU1VQRVJJTwkgICAoQkFTVF9WQV9NVUxUSVNQQUNFICsgMHgwMjYwMDAwMCkKKworI2RlZmluZSBCQVNUX1ZBX01VTFRJU1BBQ0UgKDB4RTAwMDAwMDApCisKKyNkZWZpbmUgQkFTVF9WQU1fQ1MyICgweDAwMDAwMDAwKQorI2RlZmluZSBCQVNUX1ZBTV9DUzMgKDB4MDQwMDAwMDApCisjZGVmaW5lIEJBU1RfVkFNX0NTNCAoMHgwODAwMDAwMCkKKyNkZWZpbmUgQkFTVF9WQU1fQ1M1ICgweDBDMDAwMDAwKQorCisvKiBwaHlzaWNhbCBvZmZzZXQgYWRkcmVzc2VzIGZvciB0aGUgcGVyaXBoZXJhbHMgKi8KKworI2RlZmluZSBCQVNUX1BBX0lTQUlPCSAgKDB4MDAwMDAwMDApCisjZGVmaW5lIEJBU1RfUEFfQVNJWE5FVAkgICgweDAxMDAwMDAwKQorI2RlZmluZSBCQVNUX1BBX1NVUEVSSU8JICAoMHgwMTgwMDAwMCkKKyNkZWZpbmUgQkFTVF9QQV9JREVQUkkJICAoMHgwMjAwMDAwMCkKKyNkZWZpbmUgQkFTVF9QQV9JREVQUklBVVggKDB4MDI4MDAwMDApCisjZGVmaW5lIEJBU1RfUEFfSURFU0VDCSAgKDB4MDMwMDAwMDApCisjZGVmaW5lIEJBU1RfUEFfSURFU0VDQVVYICgweDAzODAwMDAwKQorI2RlZmluZSBCQVNUX1BBX0lTQU1FTQkgICgweDA0MDAwMDAwKQorI2RlZmluZSBCQVNUX1BBX0RNOTAwMAkgICgweDA1MDAwMDAwKQorCisvKiBzb21lIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgcGVyaXBoZXJhbHMgKi8KKworI2RlZmluZSBCQVNUX1BDU0lPIChCQVNUX1ZBX1NVUEVSSU8gKyBCQVNUX1ZBTV9DUzIpCisvKiAgKi8KKworI2RlZmluZSBCQVNUX0FTSVhORVRfQ1MgIEJBU1RfVkFNX0NTNQorI2RlZmluZSBCQVNUX0lERV9DUwkgQkFTVF9WQU1fQ1M1CisjZGVmaW5lIEJBU1RfRE05MDAwX0NTCSBCQVNUX1ZBTV9DUzQKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfQkFTVE1BUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2Jhc3QtcG11LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2Jhc3QtcG11LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU4YzVjNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvYmFzdC1wbXUuaApAQCAtMCwwICsxLDQzIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2Jhc3QtcG11LmgKKyAqCisgKiAoYykgMjAwMywyMDA0IFNpbXRlYyBFbGVjdHJvbmljcworICoJQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoJVmluY2VudCBTYW5kZXJzIDx2aW5jZUBzaW10ZWMuY28udWs+CisgKgorICogTWFjaGluZSBCQVNUIC0gUG93ZXIgTWFuYWdlbWVudCBjaGlwCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBDaGFuZ2Vsb2c6CisgKgkwOC1PY3QtMjAwMwlCSkQJSW5pdGlhbCBjcmVhdGlvbgorKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0JBU1RQTVVfSAorI2RlZmluZSBfX0FTTV9BUkNIX0JBU1RQTVVfSCAiMDhfT0NUXzIwMDQiCisKKyNkZWZpbmUgQkFTVFBNVV9SRUdfSURFTlQJKDB4MDApCisjZGVmaW5lIEJBU1RQTVVfUkVHX1ZFUlNJT04JKDB4MDEpCisjZGVmaW5lIEJBU1RQTVVfUkVHX0REQ0NUUkwJKDB4MDIpCisjZGVmaW5lIEJBU1RQTVVfUkVHX1BPV0VSCSgweDAzKQorI2RlZmluZSBCQVNUUE1VX1JFR19SRVNFVAkoMHgwNCkKKyNkZWZpbmUgQkFTVFBNVV9SRUdfR1dPCQkoMHgwNSkKKyNkZWZpbmUgQkFTVFBNVV9SRUdfV09MCQkoMHgwNikKKyNkZWZpbmUgQkFTVFBNVV9SRUdfV09SCQkoMHgwNykKKyNkZWZpbmUgQkFTVFBNVV9SRUdfVUlECQkoMHgwOSkKKworI2RlZmluZSBCQVNUUE1VX0VFUFJPTQkJKDB4QzApCisKKyNkZWZpbmUgQkFTVFBNVV9FRVBfVUlECQkoQkFTVFBNVV9FRVBST00gKyAwKQorI2RlZmluZSBCQVNUUE1VX0VFUF9XT0wJCShCQVNUUE1VX0VFUFJPTSArIDgpCisjZGVmaW5lIEJBU1RQTVVfRUVQX1dPUgkJKEJBU1RQTVVfRUVQUk9NICsgOSkKKworI2RlZmluZSBCQVNUUE1VX0lERU5UXzAJCTB4NTMKKyNkZWZpbmUgQkFTVFBNVV9JREVOVF8xCQkweDQyCisjZGVmaW5lIEJBU1RQTVVfSURFTlRfMgkJMHg1MAorI2RlZmluZSBCQVNUUE1VX0lERU5UXzMJCTB4NGQKKworI2RlZmluZSBCQVNUUE1VX1JFU0VUX0dVQVJECSgweDU1KQorCisjZW5kaWYgLyogX19BU01fQVJDSF9CQVNUUE1VX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmZiZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9kZWJ1Zy1tYWNyby5TCkBAIC0wLDAgKzEsOTkgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUgU2ltdGVjIEVsZWN0cm9uaWNzCisgKgorICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogICAgIDEwLU1hci0yMDA1IExDVlIgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBCisqLworCisjaW5jbHVkZSA8YXNtL2FyY2gvbWFwLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvcmVncy1zZXJpYWwuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9yZWdzLWdwaW8uaD4KKworI2RlZmluZSBTM0MyNDEwX1VBUlQxX09GRiAoMHg0MDAwKQorI2RlZmluZSBTSElGVF8yNDQwVFhGICgxNC05KQorCisJCS5tYWNybyBhZGRydWFydCwgcngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEKKwkJbGRyZXEJXHJ4LCA9IFMzQzI0MTBfUEFfVUFSVAorCQlsZHJuZQlccngsID0gUzNDMjRYWF9WQV9VQVJUCisjaWYgQ09ORklHX0RFQlVHX1MzQzI0MTBfVUFSVCAhPSAwCisJCWFkZAlccngsIFxyeCwgIyhTM0MyNDEwX1VBUlQxX09GRiAqIENPTkZJR19ERUJVR19TM0MyNDEwX1VBUlQpCisjZW5kaWYKKwkJLmVuZG0KKworCQkubWFjcm8Jc2VuZHVhcnQscmQscngKKwkJc3RyCVxyZCwgW1xyeCwgIyBTM0MyNDEwX1VUWEggXQorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCwgcmQsIHJ4CisJCWxkcglccmQsIFsgXHJ4LCAjIFMzQzI0MTBfVUZDT04gXQorCQl0c3QJXHJkLCAjUzNDMjQxMF9VRkNPTl9GSUZPTU9ERQlAIGZpZm8gZW5hYmxlZD8KKwkJYmVxCTEwMDFmCQkJCUAKKwkJQCBGSUZPIGVuYWJsZWQuLi4KKzEwMDM6CisJCW1yYwlwMTUsIDAsIFxyZCwgYzEsIGMwCisJCXRzdAlccmQsICMxCisJCWFkZGVxCVxyZCwgXHJ4LCAjKFMzQzI0MTBfUEFfR1BJTyAtIFMzQzI0MTBfUEFfVUFSVCkKKwkJYWRkbmUJXHJkLCBccngsICMoUzNDMjRYWF9WQV9HUElPIC0gUzNDMjRYWF9WQV9VQVJUKQorCQliaWMJXHJkLCBccmQsICMweGZmMDAwCisJCWxkcglccmQsIFsgXHJkLCAjIFMzQzI0MTBfR1NUQVRVUzEgLSBTM0MyNDEwX0dQSU9SRUcoMCkgXQorCQlhbmQJXHJkLCBccmQsICMweDAwZmYwMDAwCisJCXRlcQlccmQsICMweDAwNDQwMDAwCQlAIGlzIGl0IDI0NDA/CisKKwkJbGRyCVxyZCwgWyBccngsICMgUzNDMjQxMF9VRlNUQVQgXQorCQltb3ZlcQlccmQsIFxyZCwgbHNyICNTSElGVF8yNDQwVFhGCisJCXRzdAlccmQsICNTM0MyNDEwX1VGU1RBVF9UWEZVTEwKKwkJYm5lCTEwMDNiCisJCWIJMTAwMmYKKworMTAwMToKKwkJQCBidXN5IHdhaXRpbmcgZm9yIG5vbiBmaWZvCisJCWxkcglccmQsIFsgXHJ4LCAjIFMzQzI0MTBfVVRSU1RBVCBdCisJCXRzdAlccmQsICNTM0MyNDEwX1VUUlNUQVRfVFhGRQorCQliZXEJMTAwMWIKKworMTAwMjoJCUAgZXhpdCBidXN5dWFydAorCQkuZW5kbQorCisJCS5tYWNybwl3YWl0dWFydCxyZCxyeAorCisJCWxkcglccmQsIFsgXHJ4LCAjIFMzQzI0MTBfVUZDT04gXQorCQl0c3QJXHJkLCAjUzNDMjQxMF9VRkNPTl9GSUZPTU9ERQlAIGZpZm8gZW5hYmxlZD8KKwkJYmVxCTEwMDFmCQkJCUAKKwkJQCBGSUZPIGVuYWJsZWQuLi4KKzEwMDM6CisJCW1yYwlwMTUsIDAsIFxyZCwgYzEsIGMwCisJCXRzdAlccmQsICMxCisJCWFkZGVxCVxyZCwgXHJ4LCAjKFMzQzI0MTBfUEFfR1BJTyAtIFMzQzI0MTBfUEFfVUFSVCkKKwkJYWRkbmUJXHJkLCBccngsICMoUzNDMjRYWF9WQV9HUElPIC0gUzNDMjRYWF9WQV9VQVJUKQorCQliaWMJXHJkLCBccmQsICMweGZmMDAwCisJCWxkcglccmQsIFsgXHJkLCAjIFMzQzI0MTBfR1NUQVRVUzEgLSBTM0MyNDEwX0dQSU9SRUcoMCkgXQorCQlhbmQJXHJkLCBccmQsICMweDAwZmYwMDAwCisJCXRlcQlccmQsICMweDAwNDQwMDAwCQlAIGlzIGl0IDI0NDA/CisKKwkJbGRyCVxyZCwgWyBccngsICMgUzNDMjQxMF9VRlNUQVQgXQorCQlhbmRuZQlccmQsIFxyZCwgI1MzQzI0MTBfVUZTVEFUX1RYTUFTSworCQlhbmRlcQlccmQsIFxyZCwgI1MzQzI0NDBfVUZTVEFUX1RYTUFTSworCQl0ZXEJXHJkLCAjMAorCQlibmUJMTAwM2IKKwkJYgkxMDAyZgorCisxMDAxOgorCQlAIGlkbGUgd2FpdGluZyBmb3Igbm9uIGZpZm8KKwkJbGRyCVxyZCwgWyBccngsICMgUzNDMjQxMF9VVFJTVEFUIF0KKwkJdHN0CVxyZCwgI1MzQzI0MTBfVVRSU1RBVF9UWEZFCisJCWJlcQkxMDAxYgorCisxMDAyOgkJQCBleGl0IGJ1c3l1YXJ0CisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODMwYTQwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9kbWEuaApAQCAtMCwwICsxLDM3NiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtYmFzdC9kbWEuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMywyMDA0IFNpbXRlYyBFbGVjdHJvbmljcworICoJQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFNhbXN1bmcgUzNDMjQxMFggRE1BIHN1cHBvcnQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICA/Py1NYXktMjAwMyBCSkQgICBDcmVhdGVkIGZpbGUKKyAqICA/Py1KdW4tMjAwMyBCSkQgICBBZGRlZCBtb3JlIGRtYSBmdW5jdGlvbmFsaXR5IHRvIGdvIHdpdGggYXJjaAorICogIDEwLU5vdi0yMDA0IEJKRCAgIEFkZGVkIHN5c19kZXZpY2Ugc3VwcG9ydAorKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0ggX19GSUxFX18KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2Rldi5oPgorI2luY2x1ZGUgImhhcmR3YXJlLmgiCisKKworLyoKKyAqIFRoaXMgaXMgdGhlIG1heGltdW0gRE1BIGFkZHJlc3MocGh5c2ljYWwgYWRkcmVzcykgdGhhdCBjYW4gYmUgRE1BZCB0by4KKyAqCisgKi8KKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweDIwMDAwMDAwCisjZGVmaW5lIE1BWF9ETUFfVFJBTlNGRVJfU0laRSAgIDB4MTAwMDAwIC8qIERhdGEgVW5pdCBpcyBoYWxmIHdvcmQgICovCisKKworLyogYWNjb3JkaW5nIHRvIHRoZSBzYW1zdW5nIHBvcnQsIHdlIGNhbm5vdCB1c2UgdGhlIHJlZ3VsYXIKKyAqIGRtYSBjaGFubmVscy4uLiB3ZSBtdXN0IHRoZXJlZm9yZSBwcm92aWRlIG91ciBvd24gaW50ZXJmYWNlCisgKiBmb3IgRE1BLCBhbmQgYWxsb3cgb3VyIGRyaXZlcnMgdG8gdXNlIHRoYXQuCisgKi8KKworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworCisvKiB3ZSBoYXZlIDQgZG1hIGNoYW5uZWxzICovCisjZGVmaW5lIFMzQzI0MTBfRE1BX0NIQU5ORUxTICAgICAgICAoNCkKKworLyogdHlwZXMgKi8KKwordHlwZWRlZiBlbnVtIHsKKwlTM0MyNDEwX0RNQV9JRExFLAorCVMzQzI0MTBfRE1BX1JVTk5JTkcsCisJUzNDMjQxMF9ETUFfUEFVU0VECit9IHMzYzI0MTBfZG1hX3N0YXRlX3Q7CisKKworLyogczNjMjQxMF9kbWFfbG9hZHN0X3QKKyAqCisgKiBUaGlzIHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHRoZSBETUEgZW5naW5lLCB3cnQgdG8gdGhlIGxvYWRlZCAvIHJ1bm5pbmcKKyAqIHRyYW5zZmVycy4gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IG9mIGtub3dpbmcgZXhhY3RseSB0aGUgc3RhdGUgb2YKKyAqIHRoZSBETUEgdHJhbnNmZXJzLCB3ZSBuZWVkIHRvIGtub3cgdGhlIHN0YXRlIHRvIG1ha2UgZGVjaXNpb25zIG9uIHdldGhlcgorICogd2UgY2FuCisgKgorICogUzNDMjQxMF9ETUFfTk9ORQorICoKKyAqIFRoZXJlIGFyZSBubyBidWZmZXJzIGxvYWRlZCAodGhlIGNoYW5uZWwgc2hvdWxkIGJlIGluYWN0aXZlKQorICoKKyAqIFMzQzI0MTBfRE1BXzFMT0FERUQKKyAqCisgKiBUaGVyZSBpcyBvbmUgYnVmZmVyIGxvYWRlZCwgaG93ZXZlciBpdCBoYXMgbm90IGJlZW4gY29uZmlybWVkIHRvIGJlCisgKiBsb2FkZWQgYnkgdGhlIERNQSBlbmdpbmUuIFRoaXMgbWF5IGJlIGJlY2F1c2UgdGhlIGNoYW5uZWwgaXMgbm90CisgKiB5ZXQgcnVubmluZywgb3IgdGhlIERNQSBkcml2ZXIgZGVjaWRlZCB0aGF0IGl0IHdhcyB0b28gY29zdGx5IHRvCisgKiBzaXQgYW5kIHdhaXQgZm9yIGl0IHRvIGhhcHBlbi4KKyAqCisgKiBTM0MyNDEwX0RNQV8xUlVOTklORworICoKKyAqIFRoZSBidWZmZXIgaGFzIGJlZW4gY29uZmlybWVkIHJ1bm5pbmcsIGFuZCBub3QgZmluaXNnZWQKKyAqCisgKiBTM0MyNDEwX0RNQV8xTE9BREVEXzFSVU5OSU5HCisgKgorICogVGhlcmUgaXMgYSBidWZmZXIgd2FpdGluZyB0byBiZSBsb2FkZWQgYnkgdGhlIERNQSBlbmdpbmUsIGFuZCBvbmUKKyAqIGN1cnJlbnRseSBydW5uaW5nLgorKi8KKwordHlwZWRlZiBlbnVtIHsKKwlTM0MyNDEwX0RNQUxPQURfTk9ORSwKKwlTM0MyNDEwX0RNQUxPQURfMUxPQURFRCwKKwlTM0MyNDEwX0RNQUxPQURfMVJVTk5JTkcsCisJUzNDMjQxMF9ETUFMT0FEXzFMT0FERURfMVJVTk5JTkcsCit9IHMzYzI0MTBfZG1hX2xvYWRzdF90OworCit0eXBlZGVmIGVudW0geworCVMzQzI0MTBfUkVTX09LLAorCVMzQzI0MTBfUkVTX0VSUiwKKwlTM0MyNDEwX1JFU19BQk9SVAorfSBzM2MyNDEwX2RtYV9idWZmcmVzdWx0X3Q7CisKKwordHlwZWRlZiBlbnVtIHMzYzI0MTBfZG1hc3JjX2UgczNjMjQxMF9kbWFzcmNfdDsKKworZW51bSBzM2MyNDEwX2RtYXNyY19lIHsKKwlTM0MyNDEwX0RNQVNSQ19IVywgICAgICAvKiBzb3VyY2UgaXMgbWVtb3J5ICovCisJUzNDMjQxMF9ETUFTUkNfTUVNICAgICAgLyogc291cmNlIGlzIGhhcmR3YXJlICovCit9OworCisvKiBlbnVtIHMzYzI0MTBfY2hhbl9vcF9lCisgKgorICogb3BlcmF0aW9uIGNvZGVzIHBhc3NlZCB0byB0aGUgRE1BIGNvZGUgYnkgdGhlIHVzZXIsIGFuZCBhbHNvIHVzZWQKKyAqIHRvIGluZm9ybSB0aGUgY3VycmVudCBjaGFubmVsIG93bmVyIG9mIGFueSBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0gc3RhdGUKKyovCisKK2VudW0gczNjMjQxMF9jaGFuX29wX2UgeworCVMzQzI0MTBfRE1BT1BfU1RBUlQsCisJUzNDMjQxMF9ETUFPUF9TVE9QLAorCVMzQzI0MTBfRE1BT1BfUEFVU0UsCisJUzNDMjQxMF9ETUFPUF9SRVNVTUUsCisJUzNDMjQxMF9ETUFPUF9GTFVTSCwKKwlTM0MyNDEwX0RNQU9QX1RJTUVPVVQsICAgICAgICAgICAvKiBpbnRlcm5hbCBzaWduYWwgdG8gaGFuZGxlciAqLworfTsKKwordHlwZWRlZiBlbnVtIHMzYzI0MTBfY2hhbl9vcF9lIHMzYzI0MTBfY2hhbl9vcF90OworCisvKiBmbGFncyAqLworCisjZGVmaW5lIFMzQzI0MTBfRE1BRl9TTE9XICAgICAgICAgKDE8PDApICAgLyogc2xvdywgc28gZG9uJ3Qgd29ycnkgYWJvdXQKKwkJCQkJICAgICogd2FpdGluZyBmb3IgcmVsb2FkcyAqLworI2RlZmluZSBTM0MyNDEwX0RNQUZfQVVUT1NUQVJUICAgICgxPDwxKSAgIC8qIGF1dG8tc3RhcnQgaWYgYnVmZmVyIHF1ZXVlZCAqLworCisvKiBkbWEgYnVmZmVyICovCisKK3R5cGVkZWYgc3RydWN0IHMzYzI0MTBfZG1hX2J1Zl9zIHMzYzI0MTBfZG1hX2J1Zl90OworCitzdHJ1Y3QgczNjMjQxMF9kbWFfY2xpZW50IHsKKwljaGFyICAgICAgICAgICAgICAgICpuYW1lOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgczNjMjQxMF9kbWFfY2xpZW50IHMzYzI0MTBfZG1hX2NsaWVudF90OworCisvKiBzM2MyNDEwX2RtYV9idWZfcworICoKKyAqIGludGVybmFsbHkgdXNlZCBidWZmZXIgc3RydWN0dXJlIHRvIGRlc2NyaWJlIGEgcXVldWVkIG9yIHJ1bm5pbmcKKyAqIGJ1ZmZlci4KKyovCisKK3N0cnVjdCBzM2MyNDEwX2RtYV9idWZfcyB7CisJczNjMjQxMF9kbWFfYnVmX3QgICAqbmV4dDsKKwlpbnQgICAgICAgICAgICAgICAgICBtYWdpYzsgICAgICAgIC8qIG1hZ2ljICovCisJaW50ICAgICAgICAgICAgICAgICAgc2l6ZTsgICAgICAgICAvKiBidWZmZXIgc2l6ZSBpbiBieXRlcyAqLworCWRtYV9hZGRyX3QgICAgICAgICAgIGRhdGE7ICAgICAgICAgLyogc3RhcnQgb2YgRE1BIGRhdGEgKi8KKwlkbWFfYWRkcl90ICAgICAgICAgICBwdHI7ICAgICAgICAgIC8qIHdoZXJlIHRoZSBETUEgZ290IHRvIFsxXSAqLworCXZvaWQgICAgICAgICAgICAgICAgKmlkOyAgICAgICAgICAgLyogY2xpZW50J3MgaWQgKi8KK307CisKKy8qIFsxXSBpcyB0aGlzIHVwZGF0ZWQgZm9yIGJvdGggcmVjdi9zZW5kIG1vZGVzPyAqLworCit0eXBlZGVmIHN0cnVjdCBzM2MyNDEwX2RtYV9jaGFuX3MgczNjMjQxMF9kbWFfY2hhbl90OworCisvKiBzM2MyNDEwX2RtYV9jYmZuX3QKKyAqCisgKiBidWZmZXIgY2FsbGJhY2sgcm91dGluZSB0eXBlCisqLworCit0eXBlZGVmIHZvaWQgKCpzM2MyNDEwX2RtYV9jYmZuX3QpKHMzYzI0MTBfZG1hX2NoYW5fdCAqLCB2b2lkICpidWYsIGludCBzaXplLAorCQkJCSAgIHMzYzI0MTBfZG1hX2J1ZmZyZXN1bHRfdCByZXN1bHQpOworCit0eXBlZGVmIGludCAgKCpzM2MyNDEwX2RtYV9vcGZuX3QpKHMzYzI0MTBfZG1hX2NoYW5fdCAqLAorCQkJCSAgIHMzYzI0MTBfY2hhbl9vcF90ICk7CisKK3N0cnVjdCBzM2MyNDEwX2RtYV9zdGF0c19zIHsKKwl1bnNpZ25lZCBsb25nICAgICAgICAgIGxvYWRzOworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgdGltZW91dF9sb25nZXN0OworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgdGltZW91dF9zaG9ydGVzdDsKKwl1bnNpZ25lZCBsb25nICAgICAgICAgIHRpbWVvdXRfYXZnOworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgdGltZW91dF9mYWlsZWQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCBzM2MyNDEwX2RtYV9zdGF0c19zIHMzYzI0MTBfZG1hX3N0YXRzX3Q7CisKKy8qIHN0cnVjdCBzM2MyNDEwX2RtYV9jaGFuX3MKKyAqCisgKiBmdWxsIHN0YXRlIGluZm9ybWF0aW9uIGZvciBlYWNoIERNQSBjaGFubmVsCisqLworCitzdHJ1Y3QgczNjMjQxMF9kbWFfY2hhbl9zIHsKKwkvKiBjaGFubmVsIHN0YXRlIGZsYWdzIGFuZCBpbmZvcm1hdGlvbiAqLworCXVuc2lnbmVkIGNoYXIgICAgICAgICAgbnVtYmVyOyAgICAgIC8qIG51bWJlciBvZiB0aGlzIGRtYSBjaGFubmVsICovCisJdW5zaWduZWQgY2hhciAgICAgICAgICBpbl91c2U7ICAgICAgLyogY2hhbm5lbCBhbGxvY2F0ZWQgKi8KKwl1bnNpZ25lZCBjaGFyICAgICAgICAgIGlycV9jbGFpbWVkOyAvKiBpcnEgY2xhaW1lZCBmb3IgY2hhbm5lbCAqLworCXVuc2lnbmVkIGNoYXIgICAgICAgICAgaXJxX2VuYWJsZWQ7IC8qIGlycSBlbmFibGVkIGZvciBjaGFubmVsICovCisJdW5zaWduZWQgY2hhciAgICAgICAgICB4ZmVyX3VuaXQ7ICAgLyogc2l6ZSBvZiBhbiB0cmFuc2ZlciAqLworCisJLyogY2hhbm5lbCBzdGF0ZSAqLworCisJczNjMjQxMF9kbWFfc3RhdGVfdCAgICBzdGF0ZTsKKwlzM2MyNDEwX2RtYV9sb2Fkc3RfdCAgIGxvYWRfc3RhdGU7CisJczNjMjQxMF9kbWFfY2xpZW50X3QgICpjbGllbnQ7CisKKwkvKiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gKi8KKwlzM2MyNDEwX2RtYXNyY190ICAgICAgIHNvdXJjZTsKKwl1bnNpZ25lZCBsb25nICAgICAgICAgIGRldl9hZGRyOworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgbG9hZF90aW1lb3V0OworCXVuc2lnbmVkIGludCAgICAgICAgICAgZmxhZ3M7ICAgICAgICAvKiBjaGFubmVsIGZsYWdzICovCisKKwkvKiBjaGFubmVsJ3MgaGFyZHdhcmUgcG9zaXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gKi8KKwl2b2lkIF9faW9tZW0gICAgICAgICAgICpyZWdzOyAgICAgICAgLyogY2hhbm5lbHMgcmVnaXN0ZXJzICovCisJdm9pZCBfX2lvbWVtICAgICAgICAgICAqYWRkcl9yZWc7ICAgIC8qIGRhdGEgYWRkcmVzcyByZWdpc3RlciAqLworCXVuc2lnbmVkIGludCAgICAgICAgICAgaXJxOyAgICAgICAgICAvKiBjaGFubmVsIGlycSAqLworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgZGNvbjsgICAgICAgICAvKiBkZWZhdWx0IHZhbHVlIG9mIERDT04gKi8KKworCS8qIGRyaXZlciBoYW5kbGVzICovCisJczNjMjQxMF9kbWFfY2Jmbl90ICAgICBjYWxsYmFja19mbjsgIC8qIGJ1ZmZlciBkb25lIGNhbGxiYWNrICovCisJczNjMjQxMF9kbWFfb3Bmbl90ICAgICBvcF9mbjsgICAgICAgIC8qIGNoYW5uZWwgb3BlcmF0aW9uIGNhbGxiYWNrICovCisKKwkvKiBzdGF0cyBnYXRoZXJpbmcgKi8KKwlzM2MyNDEwX2RtYV9zdGF0c190ICAgKnN0YXRzOworCXMzYzI0MTBfZG1hX3N0YXRzX3QgICAgc3RhdHNfc3RvcmU7CisKKwkvKiBidWZmZXIgbGlzdCBhbmQgaW5mb3JtYXRpb24gKi8KKwlzM2MyNDEwX2RtYV9idWZfdCAgICAgICpjdXJyOyAgICAgICAgLyogY3VycmVudCBkbWEgYnVmZmVyICovCisJczNjMjQxMF9kbWFfYnVmX3QgICAgICAqbmV4dDsgICAgICAgIC8qIG5leHQgYnVmZmVyIHRvIGxvYWQgKi8KKwlzM2MyNDEwX2RtYV9idWZfdCAgICAgICplbmQ7ICAgICAgICAgLyogZW5kIG9mIHF1ZXVlICovCisKKwkvKiBzeXN0ZW0gZGV2aWNlICovCisJc3RydWN0IHN5c19kZXZpY2UJZGV2OworfTsKKworLyogdGhlIGN1cnJlbnRseSBhbGxvY2F0ZWQgY2hhbm5lbCBpbmZvcm1hdGlvbiAqLworZXh0ZXJuIHMzYzI0MTBfZG1hX2NoYW5fdCBzM2MyNDEwX2NoYW5zW107CisKKy8qIG5vdGUsIHdlIGRvbid0IHJlYWxseSB1c2UgZG1hX2RldmljZV90IGF0IHRoZSBtb21lbnQgKi8KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBkbWFfZGV2aWNlX3Q7CisKKy8qIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogczNjMjQxMF9kbWFfcmVxdWVzdAorICoKKyAqIHJlcXVlc3QgYSBkbWEgY2hhbm5lbCBleGNsdXNpdmxleQorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9yZXF1ZXN0KGRtYWNoX3QgY2hhbm5lbCwKKwkJCSAgICAgICBzM2MyNDEwX2RtYV9jbGllbnRfdCAqLCB2b2lkICpkZXYpOworCisKKy8qIHMzYzI0MTBfZG1hX2N0cmwKKyAqCisgKiBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSBkbWEgY2hhbm5lbAorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9jdHJsKGRtYWNoX3QgY2hhbm5lbCwgczNjMjQxMF9jaGFuX29wX3Qgb3ApOworCisvKiBzM2MyNDEwX2RtYV9zZXRmbGFncworICoKKyAqIHNldCB0aGUgY2hhbm5lbCdzIGZsYWdzIHRvIGEgZ2l2ZW4gc3RhdGUKKyovCisKK2V4dGVybiBpbnQgczNjMjQxMF9kbWFfc2V0ZmxhZ3MoZG1hY2hfdCBjaGFubmVsLAorCQkJCXVuc2lnbmVkIGludCBmbGFncyk7CisKKy8qIHMzYzI0MTBfZG1hX2ZyZWUKKyAqCisgKiBmcmVlIHRoZSBkbWEgY2hhbm5lbCAod2lsbCBhbHNvIGFib3J0IGFueSBvdXRzdGFuZGluZyBvcGVyYXRpb25zKQorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9mcmVlKGRtYWNoX3QgY2hhbm5lbCwgczNjMjQxMF9kbWFfY2xpZW50X3QgKik7CisKKy8qIHMzYzI0MTBfZG1hX2VucXVldWUKKyAqCisgKiBwbGFjZSB0aGUgZ2l2ZW4gYnVmZmVyIG9udG8gdGhlIHF1ZXVlIG9mIG9wZXJhdGlvbnMgZm9yIHRoZSBjaGFubmVsLgorICogVGhlIGJ1ZmZlciBtdXN0IGJlIGFsbG9jYXRlZCBmcm9tIGRtYSBjb2hlcmVudCBtZW1vcnksIG9yIHRoZSBEY2FjaGUvV0IKKyAqIGRyYWluZWQgYmVmb3JlIHRoZSBidWZmZXIgaXMgZ2l2ZW4gdG8gdGhlIERNQSBzeXN0ZW0uCisqLworCitleHRlcm4gaW50IHMzYzI0MTBfZG1hX2VucXVldWUoZG1hY2hfdCBjaGFubmVsLCB2b2lkICppZCwKKwkJCSAgICAgICBkbWFfYWRkcl90IGRhdGEsIGludCBzaXplKTsKKworLyogczNjMjQxMF9kbWFfY29uZmlnCisgKgorICogY29uZmlndXJlIHRoZSBkbWEgY2hhbm5lbAorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9jb25maWcoZG1hY2hfdCBjaGFubmVsLCBpbnQgeGZlcnVuaXQsIGludCBkY29uKTsKKworLyogczNjMjQxMF9kbWFfZGV2Y29uZmlnCisgKgorICogY29uZmlndXJlIHRoZSBkZXZpY2Ugd2UncmUgdGFsa2luZyB0bworKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9kZXZjb25maWcoaW50IGNoYW5uZWwsIHMzYzI0MTBfZG1hc3JjX3Qgc291cmNlLAorCQkJCSBpbnQgaHdjZmcsIHVuc2lnbmVkIGxvbmcgZGV2YWRkcik7CisKKy8qIHMzYzI0MTBfZG1hX2dldHBvc2l0aW9uCisgKgorICogZ2V0IHRoZSBwb3NpdGlvbiB0aGF0IHRoZSBkbWEgdHJhbnNmZXIgaXMgY3VycmVudGx5IGF0CisqLworCitleHRlcm4gaW50IHMzYzI0MTBfZG1hX2dldHBvc2l0aW9uKGRtYWNoX3QgY2hhbm5lbCwKKwkJCQkgICBkbWFfYWRkcl90ICpzcmMsIGRtYV9hZGRyX3QgKmRlc3QpOworCitleHRlcm4gaW50IHMzYzI0MTBfZG1hX3NldF9vcGZuKGRtYWNoX3QsIHMzYzI0MTBfZG1hX29wZm5fdCBydG4pOworZXh0ZXJuIGludCBzM2MyNDEwX2RtYV9zZXRfYnVmZmRvbmVfZm4oZG1hY2hfdCwgczNjMjQxMF9kbWFfY2Jmbl90IHJ0bik7CisKKy8qIERNQSBSZWdpc3RlciBkZWZpbml0aW9ucyAqLworCisjZGVmaW5lIFMzQzI0MTBfRE1BX0RJU1JDICAgICAgICgweDAwKQorI2RlZmluZSBTM0MyNDEwX0RNQV9ESVNSQ0MgICAgICAoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9ETUFfRElEU1QgICAgICAgKDB4MDgpCisjZGVmaW5lIFMzQzI0MTBfRE1BX0RJRFNUQyAgICAgICgweDBDKQorI2RlZmluZSBTM0MyNDEwX0RNQV9EQ09OICAgICAgICAoMHgxMCkKKyNkZWZpbmUgUzNDMjQxMF9ETUFfRFNUQVQgICAgICAgKDB4MTQpCisjZGVmaW5lIFMzQzI0MTBfRE1BX0RDU1JDICAgICAgICgweDE4KQorI2RlZmluZSBTM0MyNDEwX0RNQV9EQ0RTVCAgICAgICAoMHgxQykKKyNkZWZpbmUgUzNDMjQxMF9ETUFfRE1BU0tUUklHICAgKDB4MjApCisKKyNkZWZpbmUgUzNDMjQxMF9ESVNSQ0NfSU5DCSgxPDwwKQorI2RlZmluZSBTM0MyNDEwX0RJU1JDQ19BUEIJKDE8PDEpCisKKyNkZWZpbmUgUzNDMjQxMF9ETUFTS1RSSUdfU1RPUCAgICgxPDwyKQorI2RlZmluZSBTM0MyNDEwX0RNQVNLVFJJR19PTiAgICAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfRE1BU0tUUklHX1NXVFJJRyAoMTw8MCkKKworI2RlZmluZSBTM0MyNDEwX0RDT05fREVNQU5EICAgICAoMDw8MzEpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9IQU5EU0hBS0UgICgxPDwzMSkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX1NZTkNfUENMSyAgKDA8PDMwKQorI2RlZmluZSBTM0MyNDEwX0RDT05fU1lOQ19IQ0xLICAoMTw8MzApCisKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0lOVFJFUSAgICAgKDE8PDI5KQorCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDBfWERSRVEwCSgwPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIMF9VQVJUMAkoMTw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDBfU0RJCSgyPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIMF9USU1FUgkoMzw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDBfVVNCRVAxCSg0PDwyNCkKKworI2RlZmluZSBTM0MyNDEwX0RDT05fQ0gxX1hEUkVRMQkoMDw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDFfVUFSVDEJKDE8PDI0KQorI2RlZmluZSBTM0MyNDEwX0RDT05fQ0gxX0kyU1NESQkoMjw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDFfU1BJCSgzPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIMV9VU0JFUDIJKDQ8PDI0KQorCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDJfSTJTU0RPCSgwPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIMl9JMlNTREkJKDE8PDI0KQorI2RlZmluZSBTM0MyNDEwX0RDT05fQ0gyX1NESQkoMjw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDJfVElNRVIJKDM8PDI0KQorI2RlZmluZSBTM0MyNDEwX0RDT05fQ0gyX1VTQkVQMwkoNDw8MjQpCisKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIM19VQVJUMgkoMDw8MjQpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9DSDNfU0RJCSgxPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIM19TUEkJKDI8PDI0KQorI2RlZmluZSBTM0MyNDEwX0RDT05fQ0gzX1RJTUVSCSgzPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0NIM19VU0JFUDQJKDQ8PDI0KQorCisjZGVmaW5lIFMzQzI0MTBfRENPTl9TUkNTSElGVCAgICgyNCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX1NSQ01BU0sJKDc8PDI0KQorCisjZGVmaW5lIFMzQzI0MTBfRENPTl9CWVRFICAgICAgICgwPDwyMCkKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0hBTEZXT1JEICAgKDE8PDIwKQorI2RlZmluZSBTM0MyNDEwX0RDT05fV09SRCAgICAgICAoMjw8MjApCisKKyNkZWZpbmUgUzNDMjQxMF9EQ09OX0FVVE9SRUxPQUQgKDA8PDIyKQorI2RlZmluZSBTM0MyNDEwX0RDT05fTk9SRUxPQUQgICAoMTw8MjIpCisjZGVmaW5lIFMzQzI0MTBfRENPTl9IV1RSSUcgICAgICgxPDwyMykKKworI2lmZGVmIENPTkZJR19DUFVfUzNDMjQ0MAorI2RlZmluZSBTM0MyNDQwX0RJRFNUQ19DSEtJTlQJKDE8PDIpCisKKyNkZWZpbmUgUzNDMjQ0MF9EQ09OX0NIMF9JMlNTRE8JKDU8PDI0KQorI2RlZmluZSBTM0MyNDQwX0RDT05fQ0gwX1BDTUlOCSg2PDwyNCkKKworI2RlZmluZSBTM0MyNDQwX0RDT05fQ0gxX1BDTU9VVAkoNTw8MjQpCisjZGVmaW5lIFMzQzI0NDBfRENPTl9DSDFfU0RJCSg2PDwyNCkKKworI2RlZmluZSBTM0MyNDQwX0RDT05fQ0gyX1BDTUlOCSg1PDwyNCkKKyNkZWZpbmUgUzNDMjQ0MF9EQ09OX0NIMl9NSUNJTgkoNjw8MjQpCisKKyNkZWZpbmUgUzNDMjQ0MF9EQ09OX0NIM19NSUNJTgkoNTw8MjQpCisjZGVmaW5lIFMzQzI0NDBfRENPTl9DSDNfUENNT1VUCSg2PDwyNCkKKyNlbmRpZgorCisjZW5kaWYgLyogX19BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9lbnRyeS1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZDRkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIFMzQzI0MTAtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisKKyAqIE1vZGlmaWNhdGlvbnM6CisgKiAgICAgMTAtTWFyLTIwMDUgTENWUiAgQ2hhbmdlZCBTM0MyNDEwX1ZBIHRvIFMzQzI0WFhfVkEKKyAqLworCisKKwkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisKKwkJbW92CVx0bXAsICNTM0MyNFhYX1ZBX0lSUQorCQlsZHIJXGlycW5yLCBbIFx0bXAsICMweDE0IF0JCUAgZ2V0IGlycSBubworMzAwMDA6CisJCXRlcQlcaXJxbnIsICM0CisJCXRlcW5lCVxpcnFuciwgIzUKKwkJYmVxCTEwMDJmCQkJCUAgZXh0ZXJuYWwgaXJxIHJlZworCisJCUAgZGVidWcgY2hlY2sgdG8gc2VlIGlmIGludGVycnVwdCByZXBvcnRlZCBpcyB0aGUgc2FtZQorCQlAIGFzIHRoZSBvZmZzZXQuLi4uCisKKwkJdGVxCVxpcnFuciwgIzAKKwkJYmVxCTIwMDAyZgorCQlsZHIJXGlycXN0YXQsIFsgXHRtcCwgIzB4MTAgXQlAIElOVFBORAorCQltb3YJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IgXGlycW5yCisJCXRzdAlcaXJxc3RhdCwgIzEKKwkJYm5lCTIwMDAyZgorCisJCS8qIGRlYnVnL3dhcm5pbmcgaWYgd2UgZ2V0IGFuIGludmFsdWQgcmVzcG9uc2UgZnJvbSB0aGUKKwkJICogSU5UT0ZGU0VUIHJlZ2lzdGVyICovCisjaWYgMQorCQlzdG1mZAlyMTMhLCB7IHIwIC0gcjQgLCByOC1yMTIsIHIxNCB9CisJCWxkcglyMSwJWyBcdG1wLCAjMHgxNCBdCQlAIElOVE9GRlNFVAorCQlsZHIJcjIsCVsgXHRtcCwgIzB4MTAgXQkJQCBJTlRQTkQKKwkJbGRyCXIzLAlbIFx0bXAsICMweDAwIF0JCUAgU1JDUE5ECisJCWFkcglyMCwgMjAwMDNmCisJCWJsCXByaW50aworCQliCTIwMDA0ZgorCisyMDAwMzoKKwkJLmFzY2lpCSI8Nz5pcnE6IGVyciAtIGJhZCBvZmZzZXQgJWQsIGludHBuZD0lMDh4LCBzcmNwbmQ9JTA4eFxuIgorCQkuYnl0ZQkwCisJCS5hbGlnbgk0CisyMDAwNDoKKwkJbW92CXIxLCAjMQorCQltb3YJXHRtcCwgI1MzQzI0WFhfVkFfSVJRCisJCWxkbWZkCXIxMyEsIHsgcjAgLSByNCAsIHI4LXIxMiwgcjE0IH0KKyNlbmRpZgorCisJCUAgdHJ5IHdvcmtpbmcgb3V0IGludGVycnVwdCBudW1iZXIgZm9yIG91cnNlbHZlcworCQltb3YJXGlycW5yLCAjMAorCQlsZHIJXGlycXN0YXQsIFsgXHRtcCwgIzB4MTAgXQlAIElOVFBORAorMTAwMjE6CisJCW1vdnMJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IjMQorCQliY3MJMzAwMDBiCQlAIHRyeSBhbmQgcmUtc3RhcnQgdGhlIHByb2NjZXNzCisJCWFkZAlcaXJxbnIsIFxpcnFuciwgIzEKKwkJY21wCVxpcnFuciwgIzMyCisJCWJsZQkxMDAyMWIKKworCQlAIGZvdW5kIG5vIGludGVycnVwdCwgc2V0IFogZmxhZyBhbmQgbGVhdmUKKwkJbW92cwlcaXJxbnIsICMwCisJCWIJMTAwMWYKKworMjAwMDU6CisyMDAwMjoJCUAgZXhpdAorCQlAIHdlIGJhc2UgdGhlIHMzYzI0MTB4IGludGVycnVwdHMgYXQgMTYgYW5kIGFib3ZlIHRvIGFsbG93CisJCUAgaXNhIHBlcmlwaGVyYWxzIHRvIGhhdmUgdGhlaXIgc3RhbmRhcmQgaW50ZXJydXB0cywgYWxzbworCQlAIGVuc3VyZSB0aGF0IFogZmxhZyBpcyB1bi1zZXQgb24gZXhpdAorCisJCUAgbm90ZSwgd2UgY2Fubm90IGJlIHN1cmUgaWYgd2UgZ2V0IElSUV9FSU5UMCAoMCkgdGhhdAorCQlAIHRoZXJlIGlzIHNpbXBseSBubyBpbnRlcnJ1cHQgcGVuZGluZywgc28gaW4gYWxsIG90aGVyCisJCUAgY2FzZXMgd2UganVtcCB0byBzYXkgd2UgaGF2ZSBmb3VuZCBzb21ldGhpbmcsIG90aGVyd2lzZQorCQlAIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgaW50ZXJydXB0IHJlYWxseSBpcyBhc3NydGVkCisJCWFkZHMJXGlycW5yLCBcaXJxbnIsICNJUlFfRUlOVDAKKwkJdGVxCVxpcnFuciwgI0lSUV9FSU5UMAorCQlibmUJMTAwMWYJCQkJQCBleGl0CisJCWxkcglcaXJxc3RhdCwgWyBcdG1wLCAjMHgxMCBdCUAgSU5UUE5ECisJCXRlcQlcaXJxc3RhdCwgIzAKKwkJbW92ZXEJXGlycW5yLCAjMAorCQliCTEwMDFmCisKKwkJQCB3ZSBnZXQgaGVyZSBmcm9tIG5vIG1haW4gb3IgZXh0ZXJuYWwgaW50ZXJydXB0cyBwZW5kaW5nCisxMDAyOgorCQlhZGQJXHRtcCwgXHRtcCwgI1MzQzI0WFhfVkFfR1BJTyAtIFMzQzI0WFhfVkFfSVJRCisJCWxkcglcaXJxc3RhdCwgWyBcdG1wLCAjIDB4YTggXQlAIEVYVElOVFBFTkQKKwkJbGRyCVxpcnFuciwgWyBcdG1wLCAjIDB4YTQgXQlAIEVYVElOVE1BU0sKKworCQliaWMJXGlycXN0YXQsIFxpcnFzdGF0LCBcaXJxbnIJQCBjbGVhciBtYXNrZWQgaXJxcworCisJCW1vdglcaXJxbnIsICNJUlFfRUlOVDQJCUAgc3RhcnQgZXh0aW50IG5vcworCQltb3YJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IjNAlAIGlnbm9yZSBib3R0b20gNCBiaXRzCisxMDAyMToKKwkJbW92cwlcaXJxc3RhdCwgXGlycXN0YXQsIGxzciMxCisJCWJjcwkxMDA0ZgorCQlhZGQJXGlycW5yLCBcaXJxbnIsICMxCisJCWNtcAlcaXJxbnIsICNJUlFfRUlOVDIzCisJCWJsZQkxMDAyMWIKKworCQlAIGZvdW5kIG5vIGludGVycnVwdCwgc2V0IFogZmxhZyBhbmQgbGVhdmUKKwkJbW92cwlcaXJxbnIsICMwCisKKzEwMDQ6CQlAIGVuc3VyZSBaIGZsYWcgY2xlYXIgaW4gY2FzZSBvdXIgTU9WUyBzaGlmdGVkIG91dCB0aGUgbGFzdCBiaXQKKwkJdGVxCVxpcnFuciwgIzAKKzEwMDE6CisJCUAgZXhpdCBpcnEgcm91dGluZQorCQkuZW5kbQorCisKKwkJLyogY3VycmVudGx5IGRvbid0IG5lZWQgYW4gZGlzYWJsZV9maXEgbWFjcm8gKi8KKworCQkubWFjcm8JZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhMzk5MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDEwNSBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9oYXJkd2FyZS5oCisgKgorICogKGMpIDIwMDMgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFMzQzI0MTAgLSBoYXJkd2FyZQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICogIDIxLU1heS0yMDAzIEJKRCAgQ3JlYXRlZCBmaWxlCisgKiAgMDYtSnVuLTIwMDMgQkpEICBBZGRlZCBDUFUgZnJlcXVlbmN5IHNldHRpbmdzCisgKiAgMDMtU2VwLTIwMDMgQkpEICBMaW51eCB2Mi42IHN1cHBvcnQKKyAqICAxMi1NYXItMjAwNCBCSkQgIEZpeGVkIGluY2x1ZGUgcHJvdGVjdGlvbiwgZml4ZWQgdHlwZSBvZiBjbG9jayB2YXJzCisgKiAgMTQtU2VwLTIwMDQgQkpEICBBZGRlZCBtaXNjY3IgYW5kIGdldHBpbiB0byBncGlvCisgKiAgMDEtT2N0LTIwMDQgQkpEICBBZGRlZCB0aGUgbmV3IGdwaW8gZnVuY3Rpb25zCisgKiAgMTYtT2N0LTIwMDQgQkpEICBSZW1vdmVkIHRoZSBjbG9jayB2YXJpYWJsZXMKKyovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKiBleHRlcm5hbCBmdW5jdGlvbnMgZm9yIEdQSU8gc3VwcG9ydAorICoKKyAqIFRoZXNlIGFsbG93IHZhcmlvdXMgZGlmZmVyZW50IGNsaWVudHMgdG8gYWNjZXNzIHRoZSBzYW1lIEdQSU8KKyAqIHJlZ2lzdGVycyB3aXRob3V0IGNvbmZsaWN0aW5nLiBJZiB5b3VyIGRyaXZlciBvbmx5IG93bnMgdGhlIGVudGlyZQorICogR1BJTyByZWdpc3RlciwgdGhlbiBpdCBpcyBzYWZlIHRvIGlvcmVtYXAvX19yYXdfe3JlYWR8d3JpdGV9IHRvIGl0LgorKi8KKworLyogczNjMjQxMF9ncGlvX2NmZ3BpbgorICoKKyAqIHNldCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZ2l2ZW4gcGluIHRvIHRoZSB2YWx1ZSBwYXNzZWQuCisgKgorICogZWc6CisgKiAgICBzM2MyNDEwX2dwaW9fY2ZncGluKFMzQzI0MTBfR1BBMCwgUzNDMjQxMF9HUEEwX0FERFIwKTsKKyAqICAgIHMzYzI0MTBfZ3Bpb19jZmdwaW4oUzNDMjQxMF9HUEU4LCBTM0MyNDEwX0dQRThfU0REQVQxKTsKKyovCisKK2V4dGVybiB2b2lkIHMzYzI0MTBfZ3Bpb19jZmdwaW4odW5zaWduZWQgaW50IHBpbiwgdW5zaWduZWQgaW50IGZ1bmN0aW9uKTsKKworZXh0ZXJuIHVuc2lnbmVkIGludCBzM2MyNDEwX2dwaW9fZ2V0Y2ZnKHVuc2lnbmVkIGludCBwaW4pOworCisvKiBzM2MyNDEwX2dwaW9fZ2V0aXJxCisgKgorICogdHVybiB0aGUgZ2l2ZW4gcGluIG51bWJlciBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIElSUSBudW1iZXIKKyAqCisgKiByZXR1cm5zOgorICoJPCAwID0gbm8gaW50ZXJydXB0IGZvciB0aGlzIHBpbgorICoJPj0wID0gaW50ZXJydXB0IG51bWJlciBmb3IgdGhlIHBpbgorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2dwaW9fZ2V0aXJxKHVuc2lnbmVkIGludCBwaW4pOworCisvKiBzM2MyNDEwX2dwaW9faXJxZmlsdGVyCisgKgorICogc2V0IHRoZSBpcnEgZmlsdGVyaW5nIG9uIHRoZSBnaXZlbiBwaW4KKyAqCisgKiBvbiA9IDAgPT4gZGlzYWJsZSBmaWx0ZXJpbmcKKyAqICAgICAgMSA9PiBlbmFibGUgZmlsdGVyaW5nCisgKgorICogY29uZmlnID0gUzNDMjQxMF9FSU5URkxUX1BDTEsgb3IgUzNDMjQxMF9FSU5URkxUX0VYVENMSyBvcnJlZCB3aXRoCisgKiAgICAgICAgICB3aWR0aCBvZiBmaWx0ZXIgKDAgdGhyb3VnaCA2MykKKyAqCisgKgorKi8KKworZXh0ZXJuIGludCBzM2MyNDEwX2dwaW9faXJxZmlsdGVyKHVuc2lnbmVkIGludCBwaW4sIHVuc2lnbmVkIGludCBvbiwKKwkJCQkgIHVuc2lnbmVkIGludCBjb25maWcpOworCisvKiBzM2MyNDEwX2dwaW9fcHVsbHVwCisgKgorICogY29uZmlndXJlIHRoZSBwdWxsLXVwIGNvbnRyb2wgb24gdGhlIGdpdmVuIHBpbgorICoKKyAqIHRvID0gMSA9PiBkaXNhYmxlIHRoZSBwdWxsLXVwCisgKiAgICAgIDAgPT4gZW5hYmxlIHRoZSBwdWxsLXVwCisgKgorICogZWc7CisgKgorICogICBzM2MyNDEwX2dwaW9fcHVsbHVwKFMzQzI0MTBfR1BCMCwgMCk7CisgKiAgIHMzYzI0MTBfZ3Bpb19wdWxsdXAoUzNDMjQxMF9HUEU4LCAwKTsKKyovCisKK2V4dGVybiB2b2lkIHMzYzI0MTBfZ3Bpb19wdWxsdXAodW5zaWduZWQgaW50IHBpbiwgdW5zaWduZWQgaW50IHRvKTsKKworZXh0ZXJuIHZvaWQgczNjMjQxMF9ncGlvX3NldHBpbih1bnNpZ25lZCBpbnQgcGluLCB1bnNpZ25lZCBpbnQgdG8pOworCitleHRlcm4gdW5zaWduZWQgaW50IHMzYzI0MTBfZ3Bpb19nZXRwaW4odW5zaWduZWQgaW50IHBpbik7CisKK2V4dGVybiB1bnNpZ25lZCBpbnQgczNjMjQxMF9tb2RpZnlfbWlzY2NyKHVuc2lnbmVkIGludCBjbHIsIHVuc2lnbmVkIGludCBjaGcpOworCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKyNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9tYXAuaD4KKworLyogbWFjaGluZSBzcGVjaWZpYyBoYXJkd2FyZSBkZWZpbml0aW9ucyBzaG91bGQgZ28gYWZ0ZXIgdGhpcyAqLworCisvKiBjdXJyZW50bHkgaGVyZSB1bnRpbCBtb3ZlZCBpbnRvIGNvbmZpZyAodG9kbykgKi8KKyNkZWZpbmUgQ09ORklHX05PX01VTFRJV09SRF9JTworCisjZW5kaWYgLyogX19BU01fQVJDSF9IQVJEV0FSRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lkbGUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvaWRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OTIyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lkbGUuaApAQCAtMCwwICsxLDI4IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lkbGUuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQlodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBDUFUgSWRsZSBjb250cm9scworICoKKyAqICBDaGFuZ2Vsb2c6CisgKgkyOC1PY3QtMjAwNCAgQkpEICBJbml0aWFsIHZlcnNpb24KKyAqCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSURMRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSURMRV9IIF9fRklMRV9fCisKKy8qIFRoaXMgYWxsb3dzIHRoZSBvdmVyLXJpZGUgb2YgdGhlIGRlZmF1bHQgaWRsZSBjb2RlLCBpbiBjYXNlIHRoZXJlCisgKiBpcyBhbnkgb3RoZXIgdGhpbmdzIHRvIGJlIGRvbmUgb3ZlciBpZGxlIChsaWtlIERWUykKKyovCisKK2V4dGVybiB2b2lkICgqczNjMjR4eF9pZGxlKSh2b2lkKTsKKworZXh0ZXJuIHZvaWQgczNjMjR4eF9kZWZhdWx0X2lkbGUodm9pZCk7CisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0lETEVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9paWMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvaWljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4NTQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvaWljLmgKQEAgLTAsMCArMSwzNiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9paWMuaAorICoKKyAqIChjKSAyMDA0IFNpbXRlYyBFbGVjdHJvbmljcworICoJQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFMzQzI0MTAgLSBJMkMgQ29udHJvbGxlciBwbGF0ZnJvbV9kZXZpY2UgaW5mbworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICoJMDUtT2N0LTIwMDQgQkpEICBDcmVhdGVkIGZpbGUKKyAqCTE5LU9jdC0yMDA0IEJKRAkgVXBkYXRlZCBmb3IgczNjMjQ0MAorKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0lJQ19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSUlDX0ggX19GSUxFX18KKworI2RlZmluZSBTM0NfSUlDRkxHX0ZJTFRFUgkoMTw8MCkJLyogZW5hYmxlIHMzYzI0NDAgZmlsdGVyICovCisKKy8qIE5vdGVzOgorICoJMSkgQWxsIGZyZXF1ZW5jaWVzIGFyZSBleHByZXNzZWQgaW4gSHoKKyAqCTIpIEEgdmFsdWUgb2YgemVybyBpcyBgZG8gbm90IGNhcmVgCisqLworCitzdHJ1Y3QgczNjMjQxMF9wbGF0Zm9ybV9pMmMgeworCXVuc2lnbmVkIGludAlmbGFnczsKKwl1bnNpZ25lZCBpbnQJc2xhdmVfYWRkcjsJLyogc2xhdmUgYWRkcmVzcyBmb3IgY29udHJvbGxlciAqLworCXVuc2lnbmVkIGxvbmcJYnVzX2ZyZXE7CS8qIHN0YW5kYXJkIGJ1cyBmcmVxdWVuY3kgKi8KKwl1bnNpZ25lZCBsb25nCW1heF9mcmVxOwkvKiBtYXggZnJlcXVlbmN5IGZvciB0aGUgYnVzICovCisJdW5zaWduZWQgbG9uZwltaW5fZnJlcTsJLyogbWluIGZyZXF1ZW5jeSBmb3IgdGhlIGJ1cyAqLworCXVuc2lnbmVkIGludAlzZGFfZGVsYXk7CS8qIHBjbGtzIChzM2MyNDQwIG9ubHkpICovCit9OworCisjZW5kaWYgLyogX19BU01fQVJDSF9JSUNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxODIzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lvLmgKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lvLmgKKyAqICBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9pby5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3IFJ1c3NlbGwgS2luZworICoJICAgICAoQykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MKKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogIDA2LURlYy0xOTk3CVJNSwlDcmVhdGVkLgorICogIDAyLVNlcC0yMDAzIEJKRAlNb2RpZmllZCBmb3IgUzNDMjQxMAorICogIDEwLU1hci0yMDA1IExDVlIJQ2hhbmdlZCBTM0MyNDEwX1ZBIHRvIFMzQzI0WFhfVkEKKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweGZmZmZmZmZmCisKKy8qCisgKiBXZSB1c2UgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBhZGRyZXNzaW5nIC0gUEMgc3R5bGUgYWRkcmVzc2VzLCBhbmQgQVJNCisgKiBhZGRyZXNzZXMuICBQQyBzdHlsZSBhY2Nlc3NlcyB0aGUgUEMgaGFyZHdhcmUgd2l0aCB0aGUgbm9ybWFsIFBDIElPCisgKiBhZGRyZXNzZXMsIGVnIDB4M2Y4IGZvciBzZXJpYWwjMS4gIEFSTSBhZGRyZXNzZXMgYXJlIGFib3ZlIEEyOAorICogYW5kIGFyZSB0cmFuc2xhdGVkIHRvIHRoZSBzdGFydCBvZiBJTy4gIE5vdGUgdGhhdCBhbGwgYWRkcmVzc2VzIGFyZQorICogbm90IHNoaWZ0ZWQgbGVmdCEKKyAqLworCisjZGVmaW5lIF9fUE9SVF9QQ0lPKHgpCSgoeCkgPCAoMTw8MjgpKQorCisjZGVmaW5lIFBDSU9fQkFTRQkgKFMzQzI0WFhfVkFfSVNBX1dPUkQpCisjZGVmaW5lIFBDSU9fQkFTRV9iCSAoUzNDMjRYWF9WQV9JU0FfQllURSkKKyNkZWZpbmUgUENJT19CQVNFX3cJIChTM0MyNFhYX1ZBX0lTQV9XT1JEKQorI2RlZmluZSBQQ0lPX0JBU0VfbAkgKFMzQzI0WFhfVkFfSVNBX1dPUkQpCisvKgorICogRHluYW1pYyBJTyBmdW5jdGlvbnMgLSBsZXQgdGhlIGNvbXBpbGVyCisgKiBvcHRpbWl6ZSB0aGUgZXhwcmVzc2lvbnMKKyAqLworCisjZGVmaW5lIERFQ0xBUkVfRFlOX09VVChzeixmbnN1ZmZpeCxpbnN0cikgXAorc3RhdGljIGlubGluZSB2b2lkIF9fb3V0IyNmbnN1ZmZpeCAodW5zaWduZWQgaW50IHZhbCwgdW5zaWduZWQgaW50IHBvcnQpIFwKK3sgXAorCXVuc2lnbmVkIGxvbmcgdGVtcDsJCQkJICAgICAgXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkgICAgICBcCisJImNtcAklMiwgIygxPDwyOClcblx0IgkJCSAgICAgIFwKKwkibW92CSUwLCAlMlxuXHQiCQkJCSAgICAgIFwKKwkiYWRkY2MJJTAsICUwLCAlM1xuXHQiCQkJCSAgICAgIFwKKwkic3RyIiBpbnN0ciAiICUxLCBbJTAsICMwIF0JQCBvdXQiICNmbnN1ZmZpeCAgICAgIFwKKwk6ICI9JnIiICh0ZW1wKQkJCQkJICAgICAgXAorCTogInIiICh2YWwpLCAiciIgKHBvcnQpLCAiSXIiIChQQ0lPX0JBU0VfIyNmbnN1ZmZpeCkgIFwKKwk6ICJjYyIpOwkJCQkJICAgICAgXAorfQorCisKKyNkZWZpbmUgREVDTEFSRV9EWU5fSU4oc3osZm5zdWZmaXgsaW5zdHIpCQkJCVwKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc3ogX19pbiMjZm5zdWZmaXggKHVuc2lnbmVkIGludCBwb3J0KQkJXAorewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHRlbXAsIHZhbHVlOwkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkiY21wCSUyLCAjKDE8PDI4KVxuXHQiCQkJCQlcCisJIm1vdgklMCwgJTJcblx0IgkJCQkJCVwKKwkiYWRkY2MJJTAsICUwLCAlM1xuXHQiCQkJCQkJXAorCSJsZHIiIGluc3RyICIJJTEsIFslMCwgIzAgXQlAIGluIiAjZm5zdWZmaXgJCVwKKwk6ICI9JnIiICh0ZW1wKSwgIj1yIiAodmFsdWUpCQkJCQlcCisJOiAiciIgKHBvcnQpLCAiSXIiIChQQ0lPX0JBU0VfIyNmbnN1ZmZpeCkJXAorCTogImNjIik7CQkJCQkJCVwKKwlyZXR1cm4gKHVuc2lnbmVkIHN6KXZhbHVlOwkJCQkJXAorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqX19pb2FkZHIgKHVuc2lnbmVkIGxvbmcgcG9ydCkKK3sKKwlyZXR1cm4gX19QT1JUX1BDSU8ocG9ydCkgPyAoUENJT19CQVNFICsgcG9ydCkgOiAodm9pZCBfX2lvbWVtICopcG9ydDsKK30KKworI2RlZmluZSBERUNMQVJFX0lPKHN6LGZuc3VmZml4LGluc3RyKQlcCisJREVDTEFSRV9EWU5fSU4oc3osZm5zdWZmaXgsaW5zdHIpIFwKKwlERUNMQVJFX0RZTl9PVVQoc3osZm5zdWZmaXgsaW5zdHIpCisKK0RFQ0xBUkVfSU8oY2hhcixiLCJiIikKK0RFQ0xBUkVfSU8oc2hvcnQsdywiaCIpCitERUNMQVJFX0lPKGludCxsLCIiKQorCisjdW5kZWYgREVDTEFSRV9JTworI3VuZGVmIERFQ0xBUkVfRFlOX0lOCisKKy8qCisgKiBDb25zdGFudCBhZGRyZXNzIElPIGZ1bmN0aW9ucworICoKKyAqIFRoZXNlIGhhdmUgdG8gYmUgbWFjcm9zIGZvciB0aGUgJ0onIGNvbnN0cmFpbnQgdG8gd29yayAtCisgKiArLy00MDk2IGltbWVkaWF0ZSBvcGVyYW5kLgorICovCisjZGVmaW5lIF9fb3V0YmModmFsdWUscG9ydCkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJCSJzdHJiCSUwLCBbJTEsICUyXQlAIG91dGJjIgkJCVwKKwkJOiA6ICJyIiAodmFsdWUpLCAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSkpOwlcCisJZWxzZQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkJInN0cmIJJTAsIFslMSwgIzBdCUAgb3V0YmMiCQkJXAorCQk6IDogInIiICh2YWx1ZSksICJyIiAoKHBvcnQpKSk7CQlcCit9KQorCisjZGVmaW5lIF9faW5iYyhwb3J0KQkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBjaGFyIHJlc3VsdDsJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCQkibGRyYgklMCwgWyUxLCAlMl0JQCBpbmJjIgkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoUENJT19CQVNFKSwgIkpyIiAoKHBvcnQpKSk7CVwKKwllbHNlCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCQkibGRyYgklMCwgWyUxLCAjMF0JQCBpbmJjIgkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoKHBvcnQpKSk7CVwKKwlyZXN1bHQ7CQkJCQkJCQlcCit9KQorCisjZGVmaW5lIF9fb3V0d2ModmFsdWUscG9ydCkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHYgPSB2YWx1ZTsJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJCSJzdHJoCSUwLCBbJTEsICUyXQlAIG91dHdjIgkJCVwKKwkJOiA6ICJyIiAodiksICJyIiAoUENJT19CQVNFKSwgIkpyIiAoKHBvcnQpKSk7CVwKKwllbHNlCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCQkic3RyaAklMCwgWyUxLCAjMF0JQCBvdXR3YyIJCQlcCisJCTogOiAiciIgKHYpLCAiciIgKChwb3J0KSkpOwlcCit9KQorCisjZGVmaW5lIF9faW53Yyhwb3J0KQkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBzaG9ydCByZXN1bHQ7CQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkJImxkcmgJJTAsIFslMSwgJTJdCUAgaW53YyIJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSkpOwlcCisJZWxzZQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkJImxkcmgJJTAsIFslMSwgIzBdCUAgaW53YyIJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKChwb3J0KSkpOwkJXAorCXJlc3VsdDsJCQkJCQlcCit9KQorCisjZGVmaW5lIF9fb3V0bGModmFsdWUscG9ydCkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHYgPSB2YWx1ZTsJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJCSJzdHIJJTAsIFslMSwgJTJdCUAgb3V0bGMiCQkJXAorCQk6IDogInIiICh2KSwgInIiIChQQ0lPX0JBU0UpLCAiSnIiICgocG9ydCkpKTsJXAorCWVsc2UJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJCSJzdHIJJTAsIFslMSwgIzBdCUAgb3V0bGMiCQkJXAorCQk6IDogInIiICh2KSwgInIiICgocG9ydCkpKTsJCVwKK30pCisKKyNkZWZpbmUgX19pbmxjKHBvcnQpCQkJCQkJCVwKKyh7CQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgcmVzdWx0OwkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJCSJsZHIJJTAsIFslMSwgJTJdCUAgaW5sYyIJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKFBDSU9fQkFTRSksICJKciIgKChwb3J0KSkpOwlcCisJZWxzZQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkJImxkcgklMCwgWyUxLCAjMF0JQCBpbmxjIgkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoKHBvcnQpKSk7CQlcCisJcmVzdWx0OwkJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX2lvYWRkcmMocG9ydCkJKChfX1BPUlRfUENJTyhwb3J0KSA/IFBDSU9fQkFTRSArIChwb3J0KSA6ICh2b2lkIF9faW9tZW0gKikocG9ydCkpKQorCisjZGVmaW5lIGluYihwKQkJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX2luYmMocCkJICAgOiBfX2luYihwKSkKKyNkZWZpbmUgaW53KHApCQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9faW53YyhwKQkgICA6IF9faW53KHApKQorI2RlZmluZSBpbmwocCkJCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19pbmxjKHApCSAgIDogX19pbmwocCkpCisjZGVmaW5lIG91dGIodixwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9fb3V0YmModixwKSA6IF9fb3V0Yih2LHApKQorI2RlZmluZSBvdXR3KHYscCkJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX291dHdjKHYscCkgOiBfX291dHcodixwKSkKKyNkZWZpbmUgb3V0bCh2LHApCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19vdXRsYyh2LHApIDogX19vdXRsKHYscCkpCisjZGVmaW5lIF9faW9hZGRyKHApCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19pb2FkZHIocCkgIDogX19pb2FkZHJjKHApKQorLyogdGhlIGZvbGxvd2luZyBtYWNybyBpcyBkZXByZWNhdGVkICovCisjZGVmaW5lIGlvYWRkcihwb3J0KQlfX2lvYWRkcigocG9ydCkpCisKKyNkZWZpbmUgaW5zYihwLGQsbCkJX19yYXdfcmVhZHNiKF9faW9hZGRyKHApLGQsbCkKKyNkZWZpbmUgaW5zdyhwLGQsbCkJX19yYXdfcmVhZHN3KF9faW9hZGRyKHApLGQsbCkKKyNkZWZpbmUgaW5zbChwLGQsbCkJX19yYXdfcmVhZHNsKF9faW9hZGRyKHApLGQsbCkKKworI2RlZmluZSBvdXRzYihwLGQsbCkJX19yYXdfd3JpdGVzYihfX2lvYWRkcihwKSxkLGwpCisjZGVmaW5lIG91dHN3KHAsZCxsKQlfX3Jhd193cml0ZXN3KF9faW9hZGRyKHApLGQsbCkKKyNkZWZpbmUgb3V0c2wocCxkLGwpCV9fcmF3X3dyaXRlc2woX19pb2FkZHIocCksZCxsKQorCisvKgorICogMToxIG1hcHBpbmcgZm9yIGlvcmVtYXBwZWQgcmVnaW9ucy4KKyAqLworI2RlZmluZSBfX21lbV9wY2koeCkJKHgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTc3M2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9pcnFzLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvaXJxcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDUgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgIEJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAxMi1NYXktMjAwMyBCSkQgIENyZWF0ZWQgZmlsZQorICogIDA4LUphbi0yMDAzIEJKRCAgTGludXggMi42LjAgdmVyc2lvbiwgbW92ZWQgQkFTVCBiaXRzIG91dAorICogIDEyLU1hci0yMDA0IEJKRCAgRml4ZWQgYnVnIGluIGhlYWRlciBwcm90ZWN0aW9uCisgKiAgMTAtRmViLTIwMDUgQkpEICBBZGRlZCBjYW1lcmEgSVJRIGZyb20gZ3VpbGxhdW1lLmdvdXJhdEBuZXh2aXNpb24udHYKKyAqICAyOC1GZWItMjAwNSBCSkQgIFVwZGF0ZWQgczNjMjQ0MCBJUlFzCisgKi8KKworCisjaWZuZGVmIF9fQVNNX0FSQ0hfSVJRU19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSVJRU19IIF9fRklMRV9fCisKKworLyogd2Uga2VlcCB0aGUgZmlyc3Qgc2V0IG9mIENQVSBJUlFzIG91dCBvZiB0aGUgcmFuZ2Ugb2YKKyAqIHRoZSBJU0Egc3BhY2UsIHNvIHRoYXQgdGhlIFBDMTA0IGhhcyB0aGVtIHRvIGl0c2VsZgorICogYW5kIHdlIGRvbid0IGVuZCB1cCBoYXZpbmcgdG8gZG8gaG9ycmlibGUgdGhpbmdzIHRvIHRoZQorICogc3RhbmRhcmQgSVNBIGRyaXZlcnMuLi4uCisgKi8KKworI2RlZmluZSBTM0MyNDEwX0NQVUlSUV9PRkZTRVQJICgxNikKKworI2RlZmluZSBTM0MyNDEwX0lSUSh4KSAoKHgpICsgUzNDMjQxMF9DUFVJUlFfT0ZGU0VUKQorCisvKiBtYWluIGNwdSBpbnRlcnJ1cHRzICovCisjZGVmaW5lIElSUV9FSU5UMCAgICAgIFMzQzI0MTBfSVJRKDApCSAgICAvKiAxNiAqLworI2RlZmluZSBJUlFfRUlOVDEgICAgICBTM0MyNDEwX0lSUSgxKQorI2RlZmluZSBJUlFfRUlOVDIgICAgICBTM0MyNDEwX0lSUSgyKQorI2RlZmluZSBJUlFfRUlOVDMgICAgICBTM0MyNDEwX0lSUSgzKQorI2RlZmluZSBJUlFfRUlOVDR0NyAgICBTM0MyNDEwX0lSUSg0KQkgICAgLyogMjAgKi8KKyNkZWZpbmUgSVJRX0VJTlQ4dDIzICAgUzNDMjQxMF9JUlEoNSkKKyNkZWZpbmUgSVJRX1JFU0VSVkVENiAgUzNDMjQxMF9JUlEoNikJICAgIC8qIGZvciBzM2MyNDEwICovCisjZGVmaW5lIElSUV9DQU0gICAgICAgIFMzQzI0MTBfSVJRKDYpCSAgICAvKiBmb3IgczNjMjQ0MCAqLworI2RlZmluZSBJUlFfQkFUVF9GTFQgICBTM0MyNDEwX0lSUSg3KQorI2RlZmluZSBJUlFfVElDSyAgICAgICBTM0MyNDEwX0lSUSg4KQkgICAgLyogMjQgKi8KKyNkZWZpbmUgSVJRX1dEVAkgICAgICAgUzNDMjQxMF9JUlEoOSkKKyNkZWZpbmUgSVJRX1RJTUVSMCAgICAgUzNDMjQxMF9JUlEoMTApCisjZGVmaW5lIElSUV9USU1FUjEgICAgIFMzQzI0MTBfSVJRKDExKQorI2RlZmluZSBJUlFfVElNRVIyICAgICBTM0MyNDEwX0lSUSgxMikKKyNkZWZpbmUgSVJRX1RJTUVSMyAgICAgUzNDMjQxMF9JUlEoMTMpCisjZGVmaW5lIElSUV9USU1FUjQgICAgIFMzQzI0MTBfSVJRKDE0KQorI2RlZmluZSBJUlFfVUFSVDIgICAgICBTM0MyNDEwX0lSUSgxNSkKKyNkZWZpbmUgSVJRX0xDRAkgICAgICAgUzNDMjQxMF9JUlEoMTYpCSAgICAvKiAzMiAqLworI2RlZmluZSBJUlFfRE1BMCAgICAgICBTM0MyNDEwX0lSUSgxNykKKyNkZWZpbmUgSVJRX0RNQTEgICAgICAgUzNDMjQxMF9JUlEoMTgpCisjZGVmaW5lIElSUV9ETUEyICAgICAgIFMzQzI0MTBfSVJRKDE5KQorI2RlZmluZSBJUlFfRE1BMyAgICAgICBTM0MyNDEwX0lSUSgyMCkKKyNkZWZpbmUgSVJRX1NESQkgICAgICAgUzNDMjQxMF9JUlEoMjEpCisjZGVmaW5lIElSUV9TUEkwICAgICAgIFMzQzI0MTBfSVJRKDIyKQorI2RlZmluZSBJUlFfVUFSVDEgICAgICBTM0MyNDEwX0lSUSgyMykKKyNkZWZpbmUgSVJRX1JFU0VSVkVEMjQgUzNDMjQxMF9JUlEoMjQpCSAgICAvKiA0MCAqLworI2RlZmluZSBJUlFfTkZDT04gICAgICBTM0MyNDEwX0lSUSgyNCkJICAgIC8qIGZvciBzM2MyNDQwICovCisjZGVmaW5lIElSUV9VU0JEICAgICAgIFMzQzI0MTBfSVJRKDI1KQorI2RlZmluZSBJUlFfVVNCSCAgICAgICBTM0MyNDEwX0lSUSgyNikKKyNkZWZpbmUgSVJRX0lJQwkgICAgICAgUzNDMjQxMF9JUlEoMjcpCisjZGVmaW5lIElSUV9VQVJUMCAgICAgIFMzQzI0MTBfSVJRKDI4KQkgICAgLyogNDQgKi8KKyNkZWZpbmUgSVJRX1NQSTEgICAgICAgUzNDMjQxMF9JUlEoMjkpCisjZGVmaW5lIElSUV9SVEMJICAgICAgIFMzQzI0MTBfSVJRKDMwKQorI2RlZmluZSBJUlFfQURDUEFSRU5UICBTM0MyNDEwX0lSUSgzMSkKKworLyogaW50ZXJydXB0cyBnZW5lcmF0ZWQgZnJvbSB0aGUgZXh0ZXJuYWwgaW50ZXJydXB0cyBzb3VyY2VzICovCisjZGVmaW5lIElSUV9FSU5UNCAgICAgIFMzQzI0MTBfSVJRKDMyKQkgICAvKiA0OCAqLworI2RlZmluZSBJUlFfRUlOVDUgICAgICBTM0MyNDEwX0lSUSgzMykKKyNkZWZpbmUgSVJRX0VJTlQ2ICAgICAgUzNDMjQxMF9JUlEoMzQpCisjZGVmaW5lIElSUV9FSU5UNyAgICAgIFMzQzI0MTBfSVJRKDM1KQorI2RlZmluZSBJUlFfRUlOVDggICAgICBTM0MyNDEwX0lSUSgzNikKKyNkZWZpbmUgSVJRX0VJTlQ5ICAgICAgUzNDMjQxMF9JUlEoMzcpCisjZGVmaW5lIElSUV9FSU5UMTAgICAgIFMzQzI0MTBfSVJRKDM4KQorI2RlZmluZSBJUlFfRUlOVDExICAgICBTM0MyNDEwX0lSUSgzOSkKKyNkZWZpbmUgSVJRX0VJTlQxMiAgICAgUzNDMjQxMF9JUlEoNDApCisjZGVmaW5lIElSUV9FSU5UMTMgICAgIFMzQzI0MTBfSVJRKDQxKQorI2RlZmluZSBJUlFfRUlOVDE0ICAgICBTM0MyNDEwX0lSUSg0MikKKyNkZWZpbmUgSVJRX0VJTlQxNSAgICAgUzNDMjQxMF9JUlEoNDMpCisjZGVmaW5lIElSUV9FSU5UMTYgICAgIFMzQzI0MTBfSVJRKDQ0KQorI2RlZmluZSBJUlFfRUlOVDE3ICAgICBTM0MyNDEwX0lSUSg0NSkKKyNkZWZpbmUgSVJRX0VJTlQxOCAgICAgUzNDMjQxMF9JUlEoNDYpCisjZGVmaW5lIElSUV9FSU5UMTkgICAgIFMzQzI0MTBfSVJRKDQ3KQorI2RlZmluZSBJUlFfRUlOVDIwICAgICBTM0MyNDEwX0lSUSg0OCkJICAgLyogNjQgKi8KKyNkZWZpbmUgSVJRX0VJTlQyMSAgICAgUzNDMjQxMF9JUlEoNDkpCisjZGVmaW5lIElSUV9FSU5UMjIgICAgIFMzQzI0MTBfSVJRKDUwKQorI2RlZmluZSBJUlFfRUlOVDIzICAgICBTM0MyNDEwX0lSUSg1MSkKKworCisjZGVmaW5lIElSUV9FSU5UKHgpICAgIFMzQzI0MTBfSVJRKCh4ID49IDQpID8gKElSUV9FSU5UNCArICh4KSAtIDQpIDogKFMzQzI0MTBfSVJRKDApICsgKHgpKSkKKworI2RlZmluZSBJUlFfTENEX0ZJRk8gICBTM0MyNDEwX0lSUSg1MikKKyNkZWZpbmUgSVJRX0xDRF9GUkFNRSAgUzNDMjQxMF9JUlEoNTMpCisKKy8qIElSUXMgZm9yIHRoZSBpbnRlcmFsIFVBUlRzLCBhbmQgQURDCisgKiB0aGVzZSBuZWVkIHRvIGJlIG9yZGVyZWQgaW4gbnVtYmVyIG9mIGFwcGVhcmFuY2UgaW4gdGhlCisgKiBTVUJTUkMgbWFzayByZWdpc3RlcgorKi8KKyNkZWZpbmUgSVJRX1MzQ1VBUlRfUlgwICBTM0MyNDEwX0lSUSg1NCkgICAvKiA3MCAqLworI2RlZmluZSBJUlFfUzNDVUFSVF9UWDAgIFMzQzI0MTBfSVJRKDU1KSAgIC8qIDcxICovCisjZGVmaW5lIElSUV9TM0NVQVJUX0VSUjAgUzNDMjQxMF9JUlEoNTYpCisKKyNkZWZpbmUgSVJRX1MzQ1VBUlRfUlgxICBTM0MyNDEwX0lSUSg1NykKKyNkZWZpbmUgSVJRX1MzQ1VBUlRfVFgxICBTM0MyNDEwX0lSUSg1OCkKKyNkZWZpbmUgSVJRX1MzQ1VBUlRfRVJSMSBTM0MyNDEwX0lSUSg1OSkKKworI2RlZmluZSBJUlFfUzNDVUFSVF9SWDIgIFMzQzI0MTBfSVJRKDYwKQorI2RlZmluZSBJUlFfUzNDVUFSVF9UWDIgIFMzQzI0MTBfSVJRKDYxKQorI2RlZmluZSBJUlFfUzNDVUFSVF9FUlIyIFMzQzI0MTBfSVJRKDYyKQorCisjZGVmaW5lIElSUV9UQwkJIFMzQzI0MTBfSVJRKDYzKQorI2RlZmluZSBJUlFfQURDCQkgUzNDMjQxMF9JUlEoNjQpCisKKy8qIGV4dHJhIGlycXMgZm9yIHMzYzI0NDAgKi8KKworI2RlZmluZSBJUlFfUzNDMjQ0MF9DQU1fQwlTM0MyNDEwX0lSUSg2NSkKKyNkZWZpbmUgSVJRX1MzQzI0NDBfQ0FNX1AJUzNDMjQxMF9JUlEoNjYpCisjZGVmaW5lIElSUV9TM0MyNDQwX1dEVAkJUzNDMjQxMF9JUlEoNjcpCisjZGVmaW5lIElSUV9TM0MyNDQwX0FDOTcJUzNDMjQxMF9JUlEoNjgpCisKKyNkZWZpbmUgTlJfSVJRUyAoSVJRX1MzQzI0NDBfQUM5NysxKQorCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX0lSUV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL21hcC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODMzZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9tYXAuaApAQCAtMCwwICsxLDE5MiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9tYXAuaAorICoKKyAqIChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcworICogIEJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4KKyAqCisgKiBTM0MyNDEwIC0gTWVtb3J5IG1hcCBkZWZpbml0aW9ucworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICogIDEyLU1heS0yMDAzIEJKRCAgIENyZWF0ZWQgZmlsZQorICogIDA2LUphbi0yMDAzIEJKRCAgIExpbnV4IDIuNi4wIHZlcnNpb24sIG1vdmVkIGJhc3Qgc3BlY2lmaWNzIG91dAorICogIDEwLUZlYi0yMDA1IEJKRCAgIEFkZGVkIENBTUlGIGRlZmluaXRpb24gZnJvbSBndWlsbGF1bWUuZ291cmF0QG5leHZpc2lvbi50dgorICogIDEwLU1hci0yMDA1IExDVlIgIEFkZGVkIHN1cHBvcnQgdG8gUzNDMjQwMCwgY2hhbmdlZCB7VkEsU1p9IG5hbWVzCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUFQX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NQVBfSAorCisvKiB3ZSBoYXZlIGEgYml0IG9mIGEgdGlnaHQgc3F1ZWV6ZSB0byBmaXQgYWxsIG91ciByZWdpc3RlcnMgZnJvbQorICogMHhGMDAwMDAwMDAgdXB3YXJkcywgc2luY2Ugd2UgdXNlIGFsbCBvZiB0aGUgbkdDUyBzcGFjZSBpbiBzb21lCisgKiBjYXBhY2l0eSwgYW5kIGFsc28gbmVlZCB0byBmaXQgdGhlIFMzQzI0MTAgcmVnaXN0ZXJzIGluIGFzIHdlbGwuLi4KKyAqCisgKiB3ZSB0cnkgdG8gZW5zdXJlIHN0dWZmIGxpa2UgdGhlIElSUSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBmb3IKKyAqIGFuIHNpbmdsZSBNT1ZTIGluc3RydWN0aW9uIChpZSwgb25seSA4IGJpdHMgb2Ygc2V0IGRhdGEpCisgKgorICogTm90ZSwgd2UgYXJlIHRyeWluZyB0byByZW1vdmUgc29tZSBvZiB0aGVzZSBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbgorICogYXMgdGhleSBhcmUgb25seSB1c2VmdWwgdG8gY2VydGFpbiBkcml2ZXJzLi4uCisgKi8KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgUzNDMjQxMF9BRERSKHgpCSAgKCh2b2lkIF9faW9tZW0gKikweEYwMDAwMDAwICsgKHgpKQorI2Vsc2UKKyNkZWZpbmUgUzNDMjQxMF9BRERSKHgpCSAgKDB4RjAwMDAwMDAgKyAoeCkpCisjZW5kaWYKKworI2RlZmluZSBTM0MyNDAwX0FERFIoeCkJICBTM0MyNDEwX0FERFIoeCkKKworLyogaW50ZXJydXB0IGNvbnRyb2xsZXIgaXMgdGhlIGZpcnN0IHRoaW5nIHdlIHB1dCBpbiwgdG8gbWFrZQorICogdGhlIGFzc2VtYmx5IGNvZGUgZm9yIHRoZSBpcnEgZGV0ZWN0aW9uIGVhc2llcgorICovCisjZGVmaW5lIFMzQzI0WFhfVkFfSVJRCSAgIFMzQzI0MTBfQUREUigweDAwMDAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX0lSUQkgICAoMHgxNDQwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9JUlEJICAgKDB4NEEwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfSVJRCSAgIFNaXzFNCisKKy8qIG1lbW9yeSBjb250cm9sbGVyIHJlZ2lzdGVycyAqLworI2RlZmluZSBTM0MyNFhYX1ZBX01FTUNUUkwgUzNDMjQxMF9BRERSKDB4MDAxMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfUEFfTUVNQ1RSTCAoMHgxNDAwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9NRU1DVFJMICgweDQ4MDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX01FTUNUUkwgU1pfMU0KKworLyogVVNCIGhvc3QgY29udHJvbGxlciAqLworI2RlZmluZSBTM0MyNFhYX1ZBX1VTQkhPU1QgUzNDMjQxMF9BRERSKDB4MDAyMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfUEFfVVNCSE9TVCAoMHgxNDIwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9VU0JIT1NUICgweDQ5MDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX1VTQkhPU1QgU1pfMU0KKworLyogRE1BIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgUzNDMjRYWF9WQV9ETUEJICAgUzNDMjQxMF9BRERSKDB4MDAzMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfUEFfRE1BCSAgICgweDE0NjAwMDAwKQorI2RlZmluZSBTM0MyNDEwX1BBX0RNQQkgICAoMHg0QjAwMDAwMCkKKyNkZWZpbmUgUzNDMjRYWF9TWl9ETUEJICAgU1pfMU0KKworLyogQ2xvY2sgYW5kIFBvd2VyIG1hbmFnZW1lbnQgKi8KKyNkZWZpbmUgUzNDMjRYWF9WQV9DTEtQV1IgIFMzQzI0MTBfQUREUigweDAwNDAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX0NMS1BXUiAgKDB4MTQ4MDAwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfQ0xLUFdSICAoMHg0QzAwMDAwMCkKKyNkZWZpbmUgUzNDMjRYWF9TWl9DTEtQV1IgIFNaXzFNCisKKy8qIExDRCBjb250cm9sbGVyICovCisjZGVmaW5lIFMzQzI0WFhfVkFfTENECSAgIFMzQzI0MTBfQUREUigweDAwNjAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX0xDRAkgICAoMHgxNEEwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9MQ0QJICAgKDB4NEQwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfTENECSAgIFNaXzFNCisKKy8qIE5BTkQgZmxhc2ggY29udHJvbGxlciAqLworI2RlZmluZSBTM0MyNFhYX1ZBX05BTkQJICAgUzNDMjQxMF9BRERSKDB4MDA3MDAwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfTkFORAkgICAoMHg0RTAwMDAwMCkKKyNkZWZpbmUgUzNDMjRYWF9TWl9OQU5ECSAgIFNaXzFNCisKKy8qIE1NQyBjb250cm9sbGVyIC0gYXZhaWxhYmxlIG9uIHRoZSBTM0MyNDAwICovCisjZGVmaW5lIFMzQzI0MDBfVkFfTU1DIAkgICBTM0MyNDAwX0FERFIoMHgwMDcwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9QQV9NTUMgCSAgICgweDE1QTAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1NaX01NQyAJICAgU1pfMU0KKworLyogVUFSVHMgKi8KKyNkZWZpbmUgUzNDMjRYWF9WQV9VQVJUCSAgIFMzQzI0MTBfQUREUigweDAwODAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX1VBUlQJICAgKDB4MTUwMDAwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfVUFSVAkgICAoMHg1MDAwMDAwMCkKKyNkZWZpbmUgUzNDMjRYWF9TWl9VQVJUCSAgIFNaXzFNCisKKy8qIFRpbWVycyAqLworI2RlZmluZSBTM0MyNFhYX1ZBX1RJTUVSICAgUzNDMjQxMF9BRERSKDB4MDA5MDAwMDApCisjZGVmaW5lIFMzQzI0MDBfUEFfVElNRVIgICAoMHgxNTEwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9USU1FUiAgICgweDUxMDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX1RJTUVSICAgU1pfMU0KKworLyogVVNCIERldmljZSBwb3J0ICovCisjZGVmaW5lIFMzQzI0WFhfVkFfVVNCREVWICBTM0MyNDEwX0FERFIoMHgwMEEwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9QQV9VU0JERVYgICgweDE1MjAwMTQwKQorI2RlZmluZSBTM0MyNDEwX1BBX1VTQkRFViAgKDB4NTIwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfVVNCREVWICBTWl8xTQorCisvKiBXYXRjaGRvZyAqLworI2RlZmluZSBTM0MyNFhYX1ZBX1dBVENIRE9HIFMzQzI0MTBfQUREUigweDAwQjAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX1dBVENIRE9HICgweDE1MzAwMDAwKQorI2RlZmluZSBTM0MyNDEwX1BBX1dBVENIRE9HICgweDUzMDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX1dBVENIRE9HIFNaXzFNCisKKy8qIElJQyBoYXJkd2FyZSBjb250cm9sbGVyICovCisjZGVmaW5lIFMzQzI0WFhfVkFfSUlDCSAgIFMzQzI0MTBfQUREUigweDAwQzAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX0lJQwkgICAoMHgxNTQwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9JSUMJICAgKDB4NTQwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfSUlDCSAgIFNaXzFNCisKKyNkZWZpbmUgVkFfSUlDX0JBU0UJICAgKFMzQzI0WFhfVkFfSUlDKQorCisvKiBJSVMgY29udHJvbGxlciAqLworI2RlZmluZSBTM0MyNFhYX1ZBX0lJUwkgICBTM0MyNDEwX0FERFIoMHgwMEQwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9QQV9JSVMJICAgKDB4MTU1MDgwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfSUlTCSAgICgweDU1MDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX0lJUwkgICBTWl8xTQorCisvKiBHUElPIHBvcnRzICovCisjZGVmaW5lIFMzQzI0WFhfVkFfR1BJTwkgICBTM0MyNDEwX0FERFIoMHgwMEUwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9QQV9HUElPCSAgICgweDE1NjAwMDAwKQorI2RlZmluZSBTM0MyNDEwX1BBX0dQSU8JICAgKDB4NTYwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfR1BJTwkgICBTWl8xTQorCisvKiBSVEMgKi8KKyNkZWZpbmUgUzNDMjRYWF9WQV9SVEMJICAgUzNDMjQxMF9BRERSKDB4MDBGMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfUEFfUlRDCSAgICgweDE1NzAwMDQwKQorI2RlZmluZSBTM0MyNDEwX1BBX1JUQwkgICAoMHg1NzAwMDAwMCkKKyNkZWZpbmUgUzNDMjRYWF9TWl9SVEMJICAgU1pfMU0KKworLyogQURDICovCisjZGVmaW5lIFMzQzI0WFhfVkFfQURDCSAgIFMzQzI0MTBfQUREUigweDAxMDAwMDAwKQorI2RlZmluZSBTM0MyNDAwX1BBX0FEQwkgICAoMHgxNTgwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9BREMJICAgKDB4NTgwMDAwMDApCisjZGVmaW5lIFMzQzI0WFhfU1pfQURDCSAgIFNaXzFNCisKKy8qIFNQSSAqLworI2RlZmluZSBTM0MyNFhYX1ZBX1NQSQkgICBTM0MyNDEwX0FERFIoMHgwMTEwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9QQV9TUEkJICAgKDB4MTU5MDAwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfU1BJCSAgICgweDU5MDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX1NQSQkgICBTWl8xTQorCisvKiBTREkgKi8KKyNkZWZpbmUgUzNDMjRYWF9WQV9TREkJICAgUzNDMjQxMF9BRERSKDB4MDEyMDAwMDApCisjZGVmaW5lIFMzQzI0MTBfUEFfU0RJCSAgICgweDVBMDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1NaX1NESQkgICBTWl8xTQorCisvKiBDQU1JRiAqLworI2RlZmluZSBTM0MyNDQwX1BBX0NBTUlGICAgKDB4NEYwMDAwMDApCisjZGVmaW5lIFMzQzI0NDBfU1pfQ0FNSUYgICBTWl8xTQorCisvKiBJU0Egc3R5bGUgSU8sIGZvciBlYWNoIG1hY2hpbmUgdG8gc29ydCBvdXQgbWFwcGluZ3MgZm9yLCBpZiBpdAorICogaW1wbGVtZW50cyBpdC4gV2UgcmVzZXJ2ZSB0d28gMTZNIHJlZ2lvbnMgZm9yIElTQS4KKyAqLworCisjZGVmaW5lIFMzQzI0WFhfVkFfSVNBX1dPUkQgIFMzQzI0MTBfQUREUigweDAyMDAwMDAwKQorI2RlZmluZSBTM0MyNFhYX1ZBX0lTQV9CWVRFICBTM0MyNDEwX0FERFIoMHgwMzAwMDAwMCkKKworLyogcGh5c2ljYWwgYWRkcmVzc2VzIG9mIGFsbCB0aGUgY2hpcC1zZWxlY3QgYXJlYXMgKi8KKworI2RlZmluZSBTM0MyNDEwX0NTMCAoMHgwMDAwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9DUzEgKDB4MDgwMDAwMDApCisjZGVmaW5lIFMzQzI0MTBfQ1MyICgweDEwMDAwMDAwKQorI2RlZmluZSBTM0MyNDEwX0NTMyAoMHgxODAwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9DUzQgKDB4MjAwMDAwMDApCisjZGVmaW5lIFMzQzI0MTBfQ1M1ICgweDI4MDAwMDAwKQorI2RlZmluZSBTM0MyNDEwX0NTNiAoMHgzMDAwMDAwMCkKKyNkZWZpbmUgUzNDMjQxMF9DUzcgKDB4MzgwMDAwMDApCisKKyNkZWZpbmUgUzNDMjQxMF9TRFJBTV9QQSAgICAoUzNDMjQxMF9DUzYpCisKKyNkZWZpbmUgUzNDMjQwMF9DUzAgKDB4MDAwMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfQ1MxICgweDAyMDAwMDAwKQorI2RlZmluZSBTM0MyNDAwX0NTMiAoMHgwNDAwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9DUzMgKDB4MDYwMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfQ1M0ICgweDA4MDAwMDAwKQorI2RlZmluZSBTM0MyNDAwX0NTNSAoMHgwQTAwMDAwMCkKKyNkZWZpbmUgUzNDMjQwMF9DUzYgKDB4MEMwMDAwMDApCisjZGVmaW5lIFMzQzI0MDBfQ1M3ICgweDBFMDAwMDAwKQorCisjZGVmaW5lIFMzQzI0MDBfU0RSQU1fUEEgICAgKFMzQzI0MDBfQ1M2KQorCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX01BUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzgwYWIxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9tZW1vcnkuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvbWVtb3J5LmgKKyAqCisgKiAgZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1ycGMvbWVtb3J5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk2LDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAyMC1PY3QtMTk5NiBSTUsJQ3JlYXRlZAorICogICAzMS1EZWMtMTk5NyBSTUsJRml4ZWQgZGVmaW5pdGlvbnMgdG8gcmVkdWNlIHdhcm5pbmdzCisgKiAgIDExLUphbi0xOTk4IFJNSwlVbmlubGluZWQgdG8gcmVkdWNlIGhpdHMgb24gY2FjaGUKKyAqICAgMDgtRmViLTE5OTggUk1LCUFkZGVkIF9fdmlydF90b19idXMgYW5kIF9fYnVzX3RvX3ZpcnQKKyAqICAgMjEtTWFyLTE5OTkgUk1LCVJlbmFtZWQgdG8gbWVtb3J5LmgKKyAqCQkgUk1LCUFkZGVkIFRBU0tfU0laRSBhbmQgUEFHRV9PRkZTRVQKKyAqICAgMDUtQXByLTIwMDQgQkpEICAgIENvcGllZCBhbmQgYWx0ZXJlZCBmb3IgYXJjaC1zM2MyNDEwCisgKiAgIDE3LU1hci0yMDA1IExDVlIgICBNb2RpZmllZCBmb3IgUzNDMjQwMAorKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01FTU9SWV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKworLyoKKyAqIERSQU0gc3RhcnRzIGF0IDB4MzAwMDAwMDAgZm9yIFMzQzI0MTAvUzNDMjQ0MAorICogYW5kIGF0IDB4MEMwMDAwMDAgZm9yIFMzQzI0MDAKKyAqLworI2lmZGVmIENPTkZJR19DUFVfUzNDMjQwMAorI2RlZmluZSBQSFlTX09GRlNFVAkoMHgwQzAwMDAwMFVMKQorI2Vsc2UKKyNkZWZpbmUgUEhZU19PRkZTRVQJKDB4MzAwMDAwMDBVTCkKKyNlbmRpZgorCisvKgorICogVGhlc2UgYXJlIGV4YWN0bHkgdGhlIHNhbWUgb24gdGhlIFMzQzI0MTAgYXMgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdmlldy4KKyovCisKKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KSBfX3ZpcnRfdG9fcGh5cyh4KQorI2RlZmluZSBfX2J1c190b192aXJ0KHgpIF9fcGh5c190b192aXJ0KHgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9uYW5kLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL25hbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTQ4YWMwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9uYW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9uYW5kLmgKKyAqCisgKiAoYykgMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MKKyAqICBCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CisgKgorICogUzNDMjQxMCAtIE5BTkQgZGV2aWNlIGNvbnRyb2xsZXIgcGxhdGZyb21fZGV2aWNlIGluZm8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqCTIzLVNlcC0yMDA0IEJKRCAgQ3JlYXRlZCBmaWxlCisqLworCisvKiBzdHJ1Y3QgczNjMjQxMF9uYW5kX3NldAorICoKKyAqIGRlZmluZSBhbiBzZXQgb2Ygb25lIG9yIG1vcmUgbmFuZCBjaGlwcyByZWdpc3RlcmVkIHdpdGggYW4gdW5pcXVlIG10ZAorICoKKyAqIG5yX2NoaXBzCSA9IG51bWJlciBvZiBjaGlwcyBpbiB0aGlzIHNldAorICogbnJfcGFydGl0aW9ucyA9IG51bWJlciBvZiBwYXJ0aXRpb25zIHBvaW50ZWQgdG8gYmUgcGFydGl0b29ucyAob3IgemVybykKKyAqIG5hbWUJCSA9IG5hbWUgb2Ygc2V0IChvcHRpb25hbCkKKyAqIG5yX21hcAkgPSBtYXAgZm9yIGxvdy1sYXllciBsb2dpY2FsIHRvIHBoeXNpY2FsIGNoaXAgbnVtYmVycyAob3B0aW9uKQorICogcGFydGl0aW9ucwkgPSBtdGQgcGFydGl0aW9uIGxpc3QKKyovCisKK3N0cnVjdCBzM2MyNDEwX25hbmRfc2V0IHsKKwlpbnQJCQlucl9jaGlwczsKKwlpbnQJCQlucl9wYXJ0aXRpb25zOworCWNoYXIJCQkqbmFtZTsKKwlpbnQJCQkqbnJfbWFwOworCXN0cnVjdCBtdGRfcGFydGl0aW9uCSpwYXJ0aXRpb25zOworfTsKKworc3RydWN0IHMzYzI0MTBfcGxhdGZvcm1fbmFuZCB7CisJLyogdGltaW5nIGluZm9ybWF0aW9uIGZvciBjb250cm9sbGVyLCBhbGwgdGltZXMgaW4gbmFub3NlY29uZHMgKi8KKworCWludAl0YWNsczsJLyogdGltZSBmb3IgYWN0aXZlIENMRS9BTEUgdG8gbldFL25PRSAqLworCWludAl0d3JwaDA7CS8qIGFjdGl2ZSB0aW1lIGZvciBuV0Uvbk9FICovCisJaW50CXR3cnBoMTsJLyogdGltZSBmb3IgcmVsZWFzZSBDTEUvQUxFIGZyb20gbldFL25PRSBpbmFjdGl2ZSAqLworCisJaW50CQkJbnJfc2V0czsKKwlzdHJ1Y3QgczNjMjQxMF9uYW5kX3NldCAqc2V0czsKKworCXZvaWQJCQkoKnNlbGVjdF9jaGlwKShzdHJ1Y3QgczNjMjQxMF9uYW5kX3NldCAqLAorCQkJCQkgICAgICAgaW50IGNoaXApOworfTsKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9vdG9tLW1hcC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9vdG9tLW1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MGM5MzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL290b20tbWFwLmgKQEAgLTAsMCArMSwzMCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9vdG9tLW1hcC5oCisgKgorICogKGMpIDIwMDUgR3VpbGxhdW1lIEdPVVJBVCAvIE5leFZpc2lvbgorICogICAgICAgICAgZ3VpbGxhdW1lLmdvdXJhdEBuZXh2aXNpb24uZnIKKyAqCisgKiBOZXhWaXNpb24gT1RPTSBib2FyZCBtZW1vcnkgbWFwIGRlZmluaXRpb25zCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyovCisKKy8qIG5lZWRzIGFyY2gvbWFwLmggaW5jbHVkaW5nIHdpdGggdGhpcyAqLworCisvKiBvaywgd2UndmUgdXNlZCB1cCB0byAweDAxMzAwMDAwLCBub3cgd2UgbmVlZCB0byBmaW5kIHNwYWNlIGZvciB0aGUKKyAqIHBlcmlwaGVyYWxzIHRoYXQgbGl2ZSBpbiB0aGUgbkdDU1t4XSBhcmVhcywgd2hpY2ggYXJlIHF1aXRlIG51bWVyb3VzCisgKiBpbiB0aGVpciBzcGFjZS4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfT1RPTU1BUF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfT1RPTU1BUF9ICisKKyNkZWZpbmUgT1RPTV9QQV9DUzg5MDBBX0JBU0UgICAgICAgKFMzQzI0MTBfQ1MzICsgMHgwMTAwMDAwMCkJLyogbkdDUzMgKzB4MDEwMDAwMDAgKi8KKyNkZWZpbmUgT1RPTV9WQV9DUzg5MDBBX0JBU0UgICAgICAgUzNDMjQxMF9BRERSKDB4MDQwMDAwMDApCQkvKiAweEY0MDAwMDAwICovCisKKy8qIHBoeXNpY2FsIG9mZnNldCBhZGRyZXNzZXMgZm9yIHRoZSBwZXJpcGhlcmFscyAqLworCisjZGVmaW5lIE9UT01fUEFfRkxBU0gwX0JBU0UgICAgICAgIChTM0MyNDEwX0NTMCkJCQkJLyogQmFuayAwICovCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX09UT01NQVBfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4M2QzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3BhcmFtLmgKQEAgLTAsMCArMSwyNyBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9wYXJhbS5oCisgKgorICogKGMpIDIwMDMgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFMzQzI0MTAgLSBNYWNoaW5lIHBhcmFtZXRlcnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwMi1TZXAtMjAwMyBCSkQgIENyZWF0ZWQgZmlsZQorICogIDEyLU1hci0yMDA0IEJKRCAgQWRkZWQgaW5jbHVkZSBwcm90ZWN0aW9uCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfUEFSQU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1BBUkFNX0gKKworLyogd2UgY2Fubm90IGdldCBvdXIgdGltZXIgZG93biB0byAxMDBIeiB3aXRoIHRoZSBzZXR1cCBhcyBpcywgYnV0IHdlIGNhbgorICogbWFuYWdlIDIwMCBjbG9jayB0aWNrcyBwZXIgc2Vjb25kLi4uIGlmIHRoaXMgaXMgYSBwcm9ibGVtLCB3ZSBjYW4gYWx3YXlzCisgKiBhZGQgYSBzb2Z0d2FyZSBwcmUtc2NhbGVyIHRvIHRoZSBldmlsIHRpbWVyIHN5c3RlbXMuCisqLworCisjZGVmaW5lIEhaICAgMjAwCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1BBUkFNX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1hZGMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1hZGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWJmYzJmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWFkYy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtL2FyY2gtczNjMjQxMC9yZWdzLWFkYy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IFNoYW5ub24gSG9sbGFuZCA8aG9sbGFuZEBsb3Nlci5uZXQ+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvc3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBBREMgcmVnaXN0ZXJzCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDI3LTA5LTIwMDQgICAgIFNBSCAgICAgQ3JlYXRlZCBmaWxlCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfUkVHU19BRENfSAorI2RlZmluZSBfX0FTTV9BUkNIX1JFR1NfQURDX0ggInJlZ3MtYWRjLmgiCisKKyNkZWZpbmUgUzNDMjQxMF9BRENSRUcoeCkgKHgpCisKKyNkZWZpbmUgUzNDMjQxMF9BRENDT04JICAgUzNDMjQxMF9BRENSRUcoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9BRENUU0MJICAgUzNDMjQxMF9BRENSRUcoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9BRENETFkJICAgUzNDMjQxMF9BRENSRUcoMHgwOCkKKyNkZWZpbmUgUzNDMjQxMF9BRENEQVQwCSAgIFMzQzI0MTBfQURDUkVHKDB4MEMpCisjZGVmaW5lIFMzQzI0MTBfQURDREFUMQkgICBTM0MyNDEwX0FEQ1JFRygweDEwKQorCisKKy8qIEFEQ0NPTiBSZWdpc3RlciBCaXRzICovCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX0VDRkxHCQkoMTw8MTUpCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX1BSU0NFTgkJKDE8PDE0KQorI2RlZmluZSBTM0MyNDEwX0FEQ0NPTl9QUlNDVkwoeCkJKCgoeCkmMHhGRik8PDYpCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX1BSU0NWTE1BU0sJKDB4RkY8PDYpCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX1NFTE1VWCh4KQkoKCh4KSYweDcpPDwzKQorI2RlZmluZSBTM0MyNDEwX0FEQ0NPTl9NVVhNQVNLCQkoMHg3PDwzKQorI2RlZmluZSBTM0MyNDEwX0FEQ0NPTl9TVERCTQkJKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX1JFQURfU1RBUlQJKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfQURDQ09OX0VOQUJMRV9TVEFSVAkoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9BRENDT05fU1RBUlRNQVNLCSgweDM8PDApCisKKworLyogQURDVFNDIFJlZ2lzdGVyIEJpdHMgKi8KKyNkZWZpbmUgUzNDMjQxMF9BRENUU0NfWU1fU0VOCQkoMTw8NykKKyNkZWZpbmUgUzNDMjQxMF9BRENUU0NfWVBfU0VOCQkoMTw8NikKKyNkZWZpbmUgUzNDMjQxMF9BRENUU0NfWE1fU0VOCQkoMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9BRENUU0NfWFBfU0VOCQkoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9BRENUU0NfUFVMTF9VUF9ESVNBQkxFCSgxPDwzKQorI2RlZmluZSBTM0MyNDEwX0FEQ1RTQ19BVVRPX1BTVAkJKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfQURDVFNDX1hZX1BTVAkJKDB4Mzw8MCkKKworLyogQURDREFUMCBCaXRzICovCisjZGVmaW5lIFMzQzI0MTBfQURDREFUMF9VUERPV04JCSgxPDwxNSkKKyNkZWZpbmUgUzNDMjQxMF9BRENEQVQwX0FVVE9fUFNUCSgxPDwxNCkKKyNkZWZpbmUgUzNDMjQxMF9BRENEQVQwX1hZX1BTVAkJKDB4Mzw8MTIpCisjZGVmaW5lIFMzQzI0MTBfQURDREFUMF9YUERBVEFfTUFTSwkoMHgwM0ZGKQorCisvKiBBRENEQVQxIEJpdHMgKi8KKyNkZWZpbmUgUzNDMjQxMF9BRENEQVQxX1VQRE9XTgkJKDE8PDE1KQorI2RlZmluZSBTM0MyNDEwX0FEQ0RBVDFfQVVUT19QU1QJKDE8PDE0KQorI2RlZmluZSBTM0MyNDEwX0FEQ0RBVDFfWFlfUFNUCQkoMHgzPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9BRENEQVQxX1lQREFUQV9NQVNLCSgweDAzRkYpCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1JFR1NfQURDX0ggKi8KKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtY2xvY2suaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1jbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZTkzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtY2xvY2suaApAQCAtMCwwICsxLDEyMiBAQAorLyogbGludXgvaW5jbHVkZS9hc20vYXJjaC1zM2MyNDEwL3JlZ3MtY2xvY2suaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMywyMDA0IFNpbXRlYyBFbGVjdHJvbmljcyA8bGludXhAc2ltdGVjLmNvLnVrPgorICoJCSAgICAgIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBTM0MyNDEwIGNsb2NrIHJlZ2lzdGVyIGRlZmluaXRpb25zCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDE4LUF1Zy0yMDA0IEJlbiBEb29rcyAgICAgICAgIEFkZGVkIDI0NDAgZGVmaW5pdGlvbnMKKyAqICAgIDA4LUF1Zy0yMDA0IEhlcmJlcnQgUPZ0emwgICAgIEFkZGVkIENMS0NPTiBkZWZpbml0aW9ucworICogICAgMTktMDYtMjAwMyAgQmVuIERvb2tzICAgICAgICAgQ3JlYXRlZCBmaWxlCisgKiAgICAxMi0wMy0yMDA0ICBCZW4gRG9va3MgICAgICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMjktU2VwLTIwMDQgQmVuIERvb2tzCSAgICBGaXhlZCB1c2FnZSBmb3IgYXNzZW1ibHkgaW5jbHVzaW9uCisgKiAgICAxMC1GZWItMjAwNSBCZW4gRG9va3MJICAgIEZpeGVkIENBTURJVk4gYWRkcmVzcyAoR3VpbGxhdW1lIEdvdXJhdCkKKyAqICAgIDEwLU1hci0yMDA1IEx1Y2FzIFZpbGxhIFJlYWwgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19DTE9DSworI2RlZmluZSBfX0FTTV9BUk1fUkVHU19DTE9DSyAiJElkOiBjbG9jay5oLHYgMS40IDIwMDMvMDQvMzAgMTQ6NTA6NTEgYmVuIEV4cCAkIgorCisjZGVmaW5lIFMzQzI0MTBfQ0xLUkVHKHgpICgoeCkgKyBTM0MyNFhYX1ZBX0NMS1BXUikKKworI2RlZmluZSBTM0MyNDEwX1BMTFZBTChfbSxfcCxfcykgKChfbSkgPDwgMTIgfCAoKF9wKSA8PCA0KSB8ICgoX3MpKSkKKworI2RlZmluZSBTM0MyNDEwX0xPQ0tUSU1FICAgIFMzQzI0MTBfQ0xLUkVHKDB4MDApCisjZGVmaW5lIFMzQzI0MTBfTVBMTENPTgkgICAgUzNDMjQxMF9DTEtSRUcoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9VUExMQ09OCSAgICBTM0MyNDEwX0NMS1JFRygweDA4KQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTgkgICAgUzNDMjQxMF9DTEtSRUcoMHgwQykKKyNkZWZpbmUgUzNDMjQxMF9DTEtTTE9XCSAgICBTM0MyNDEwX0NMS1JFRygweDEwKQorI2RlZmluZSBTM0MyNDEwX0NMS0RJVk4JICAgIFMzQzI0MTBfQ0xLUkVHKDB4MTQpCisKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fSURMRQkgICAgICgxPDwyKQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9QT1dFUgkgICAgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9OQU5ECSAgICAgKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX0xDREMJICAgICAoMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVVNCSAkgICAgICgxPDw2KQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9VU0JECSAgICAgKDE8PDcpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX1BXTVQJICAgICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fU0RJCSAgICAgKDE8PDkpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX1VBUlQwCSAgICAgKDE8PDEwKQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9VQVJUMQkgICAgICgxPDwxMSkKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVUFSVDIJICAgICAoMTw8MTIpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX0dQSU8JICAgICAoMTw8MTMpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX1JUQwkgICAgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fQURDCSAgICAgKDE8PDE1KQorI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9JSUMJICAgICAoMTw8MTYpCisjZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX0lJUwkgICAgICgxPDwxNykKKyNkZWZpbmUgUzNDMjQxMF9DTEtDT05fU1BJCSAgICAgKDE8PDE4KQorCisjZGVmaW5lIFMzQzI0MTBfUExMQ09OX01ESVZTSElGVCAgICAgMTIKKyNkZWZpbmUgUzNDMjQxMF9QTExDT05fUERJVlNISUZUICAgICA0CisjZGVmaW5lIFMzQzI0MTBfUExMQ09OX1NESVZTSElGVCAgICAgMAorI2RlZmluZSBTM0MyNDEwX1BMTENPTl9NRElWTUFTSwkgICAgICgoMTw8KDErKDE5LTEyKSkpLTEpCisjZGVmaW5lIFMzQzI0MTBfUExMQ09OX1BESVZNQVNLCSAgICAgKCgxPDw1KS0xKQorI2RlZmluZSBTM0MyNDEwX1BMTENPTl9TRElWTUFTSwkgICAgIDMKKworLyogRENMS0NPTiByZWdpc3RlciBhZGRyZXNzZXMgaW4gZ3Bpby5oICovCisKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswRU4JICAgICAoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX1BDTEsgICAoMDw8MSkKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX1VDTEsgICAoMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX0RJVih4KSAoKCh4KSAtIDEgKTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX0NNUCh4KSAoKCh4KSAtIDEgKTw8OCkKKworI2RlZmluZSBTM0MyNDEwX0RDTEtDT05fRENMSzFFTgkgICAgICgxPDwxNikKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEsxX1BDTEsgICAoMDw8MTcpCisjZGVmaW5lIFMzQzI0MTBfRENMS0NPTl9EQ0xLMV9VQ0xLICAgKDE8PDE3KQorI2RlZmluZSBTM0MyNDEwX0RDTEtDT05fRENMSzFfRElWKHgpICgoKHgpIC0gMSkgPDwyMCkKKworI2RlZmluZSBTM0MyNDEwX0NMS0RJVk5fUERJVk4JICAgICAoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9DTEtESVZOX0hESVZOCSAgICAgKDE8PDEpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CitzM2MyNDEwX2dldF9wbGwoaW50IHBsbHZhbCwgaW50IGJhc2VjbGspCit7CisJaW50IG1kaXYsIHBkaXYsIHNkaXY7CisKKwltZGl2ID0gcGxsdmFsID4+IFMzQzI0MTBfUExMQ09OX01ESVZTSElGVDsKKwlwZGl2ID0gcGxsdmFsID4+IFMzQzI0MTBfUExMQ09OX1BESVZTSElGVDsKKwlzZGl2ID0gcGxsdmFsID4+IFMzQzI0MTBfUExMQ09OX1NESVZTSElGVDsKKworCW1kaXYgJj0gUzNDMjQxMF9QTExDT05fTURJVk1BU0s7CisJcGRpdiAmPSBTM0MyNDEwX1BMTENPTl9QRElWTUFTSzsKKwlzZGl2ICY9IFMzQzI0MTBfUExMQ09OX1NESVZNQVNLOworCisJcmV0dXJuIChiYXNlY2xrICogKG1kaXYgKyA4KSkgLyAoKHBkaXYgKyAyKSA8PCBzZGl2KTsKK30KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjaWZkZWYgQ09ORklHX0NQVV9TM0MyNDQwCisKKy8qIGV4dHJhIHJlZ2lzdGVycyAqLworI2RlZmluZSBTM0MyNDQwX0NBTURJVk4JICAgIFMzQzI0MTBfQ0xLUkVHKDB4MTgpCisKKyNkZWZpbmUgUzNDMjQ0MF9DTEtDT05fQ0FNRVJBICAgICAgICAoMTw8MTkpCisjZGVmaW5lIFMzQzI0NDBfQ0xLQ09OX0FDOTcgICAgICAgICAgKDE8PDIwKQorCisjZGVmaW5lIFMzQzI0NDBfQ0xLRElWTl9QRElWTgkgICAgICgxPDwwKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fTUFTSyAgICgzPDwxKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fMSAgICAgICgwPDwxKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fMiAgICAgICgxPDwxKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fNF84ICAgICgyPDwxKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fM182ICAgICgzPDwxKQorI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fVUNMSyAgICAgICAgICgxPDwzKQorCisjZGVmaW5lIFMzQzI0NDBfQ0FNRElWTl9DQU1DTEtfTUFTSyAgKDB4Zjw8MCkKKyNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0NBTUNMS19TRUwgICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0hDTEszX0hBTEYgICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0hDTEs0X0hBTEYgICAoMTw8OSkKKyNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0RWU0VOICAgICAgICAoMTw8MTIpCisKKyNlbmRpZiAvKiBDT05GSUdfQ1BVX1MzQzI0NDAgKi8KKworCisjZW5kaWYgLyogX19BU01fQVJNX1JFR1NfQ0xPQ0sgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1kc2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1kc2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDIzYjA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWRzYy5oCkBAIC0wLDAgKzEsMTgzIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS9oYXJkd2FyZS9zM2MyNDEwL3JlZ3MtZHNjLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzIDxsaW51eEBzaW10ZWMuY28udWs+CisgKgkJICAgICAgaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvU1dMSU5VWC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFMzQzI0NDAgU2lnbmFsIERyaXZlIFN0cmVuZ3RoIENvbnRyb2wKKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAgMTEtQXVnLTIwMDQgICAgIEJKRCAgICAgQ3JlYXRlZCBmaWxlCisgKiAgICAyNS1BdWctMjAwNCAgICAgQkpEICAgICBBZGRlZCB0aGUgX1NFTEVDVF8qIGRlZnMgZm9yIHVzaW5nIHdpdGggZnVuY3Rpb25zCisqLworCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX0RTQ19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUkVHU19EU0NfSCAiMjQ0MC1kc2MiCisKKyNpZmRlZiBDT05GSUdfQ1BVX1MzQzI0NDAKKworI2RlZmluZSBTM0MyNDQwX0RTQzAJICAgUzNDMjQxMF9HUElPUkVHKDB4YzQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMQkgICBTM0MyNDEwX0dQSU9SRUcoMHhjOCkKKworI2RlZmluZSBTM0MyNDQwX1NFTEVDVF9EU0MwICgwKQorI2RlZmluZSBTM0MyNDQwX1NFTEVDVF9EU0MxICgxPDwzMSkKKworI2RlZmluZSBTM0MyNDQwX0RTQ19HRVRTSElGVCh4KSAoKHgpICYgMzEpCisKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RJU0FCTEUJKDE8PDMxKQorCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9BRERSICAgICAgIChTM0MyNDQwX1NFTEVDVF9EU0MwIHwgOCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0FERFJfMTJtQSAgKDA8PDgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9BRERSXzEwbUEgICgxPDw4KQorI2RlZmluZSBTM0MyNDQwX0RTQzBfQUREUl84bUEgICAoMjw8OCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0FERFJfNm1BICAgKDM8PDgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9BRERSX01BU0sgICgzPDw4KQorCisvKiBEMjQuLkQzMSAqLworI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTMgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMCB8IDYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBM18xMm1BICgwPDw2KQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTNfMTBtQSAoMTw8NikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEEzXzhtQSAgKDI8PDYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBM182bUEgICgzPDw2KQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTNfTUFTSyAoMzw8NikKKworLyogRDE2Li5EMjMgKi8KKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEEyICAgICAgKFMzQzI0NDBfU0VMRUNUX0RTQzAgfCA0KQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTJfMTJtQSAoMDw8NCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEEyXzEwbUEgKDE8PDQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBMl84bUEgICgyPDw0KQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTJfNm1BICAoMzw8NCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEEyX01BU0sgKDM8PDQpCisKKy8qIEQ4Li5EMTUgKi8KKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEExICAgICAgKFMzQzI0NDBfU0VMRUNUX0RTQzAgfCAyKQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTFfMTJtQSAoMDw8MikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEExXzEwbUEgKDE8PDIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBMV84bUEgICgyPDwyKQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTFfNm1BICAoMzw8MikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEExX01BU0sgKDM8PDIpCisKKy8qIEQwLi5ENyAqLworI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMCB8IDApCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBMF8xMm1BICgwPDwwKQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTBfMTBtQSAoMTw8MCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MwX0RBVEEwXzhtQSAgKDI8PDApCisjZGVmaW5lIFMzQzI0NDBfRFNDMF9EQVRBMF82bUEgICgzPDwwKQorI2RlZmluZSBTM0MyNDQwX0RTQzBfREFUQTBfTUFTSyAoMzw8MCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMSAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDI4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMV8xMm1BICAoMDw8MjgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0sxXzEwbUEgICgxPDwyOCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1NDSzFfOG1BICAgKDI8PDI4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMV82bUEgICAoMzw8MjgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0sxX01BU0sgICgzPDwyOCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMCAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDI2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMF8xMm1BICAoMDw8MjYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0swXzEwbUEgICgxPDwyNikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1NDSzBfOG1BICAgKDI8PDI2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLMF82bUEgICAoMzw8MjYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0swX01BU0sgICgzPDwyNikKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLRSAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDI0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLRV8xMG1BICAoMDw8MjQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0tFXzhtQSAgICgxPDwyNCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1NDS0VfNm1BICAgKDI8PDI0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0NLRV80bUEgICAoMzw8MjQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TQ0tFX01BU0sgICgzPDwyNCkKKworLyogU0RSQU0gblJBUy9uQ0FTICovCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TRFIgICAgICAgIChTM0MyNDQwX1NFTEVDVF9EU0MxIHwgMjIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TRFJfMTBtQSAgICgwPDwyMikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1NEUl84bUEgICAgKDE8PDIyKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfU0RSXzZtQSAgICAoMjw8MjIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9TRFJfNG1BICAgICgzPDwyMikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1NEUl9NQVNLICAgKDM8PDIyKQorCisvKiBOQU5EIEZsYXNoIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX05GQyAgICAgICAgKFMzQzI0NDBfU0VMRUNUX0RTQzEgfCAyMCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX05GQ18xMG1BICAgKDA8PDIwKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfTkZDXzhtQSAgICAoMTw8MjApCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9ORkNfNm1BICAgICgyPDwyMCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX05GQ180bUEgICAgKDM8PDIwKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfTkZDX01BU0sgICAoMzw8MjApCisKKy8qIG5CRVswLi4zXSAqLworI2RlZmluZSBTM0MyNDQwX0RTQzFfbkJFICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDE4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfbkJFXzEwbUEgICAoMDw8MTgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9uQkVfOG1BICAgICgxPDwxOCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX25CRV82bUEgICAgKDI8PDE4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfbkJFXzRtQSAgICAoMzw8MTgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9uQkVfTUFTSyAgICgzPDwxOCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfV09FICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDE2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfV09FXzEwbUEgICAoMDw8MTYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9XT0VfOG1BICAgICgxPDwxNikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX1dPRV82bUEgICAgKDI8PDE2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfV09FXzRtQSAgICAoMzw8MTYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9XT0VfTUFTSyAgICgzPDwxNikKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M3ICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDE0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M3XzEwbUEgICAoMDw8MTQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzdfOG1BICAgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTN182bUEgICAgKDI8PDE0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M3XzRtQSAgICAoMzw8MTQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzdfTUFTSyAgICgzPDwxNCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M2ICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDEyKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M2XzEwbUEgICAoMDw8MTIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzZfOG1BICAgICgxPDwxMikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTNl82bUEgICAgKDI8PDEyKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M2XzRtQSAgICAoMzw8MTIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzZfTUFTSyAgICgzPDwxMikKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M1ICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDEwKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M1XzEwbUEgICAoMDw8MTApCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzVfOG1BICAgICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTNV82bUEgICAgKDI8PDEwKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M1XzRtQSAgICAoMzw8MTApCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzVfTUFTSyAgICgzPDwxMCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M0ICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzRfMTBtQSAgICgwPDw4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M0XzhtQSAgICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTNF82bUEgICAgKDI8PDgpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzRfNG1BICAgICgzPDw4KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1M0X01BU0sgICAoMzw8OCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MzICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzNfMTBtQSAgICgwPDw2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MzXzhtQSAgICAoMTw8NikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTM182bUEgICAgKDI8PDYpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzNfNG1BICAgICgzPDw2KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MzX01BU0sgICAoMzw8NikKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MyICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzJfMTBtQSAgICgwPDw0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MyXzhtQSAgICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMl82bUEgICAgKDI8PDQpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzJfNG1BICAgICgzPDw0KQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MyX01BU0sgICAoMzw8NCkKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MxICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzFfMTBtQSAgICgwPDwyKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MxXzhtQSAgICAoMTw8MikKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMV82bUEgICAgKDI8PDIpCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzFfNG1BICAgICgzPDwyKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MxX01BU0sgICAoMzw8MikKKworI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MwICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDAKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMF8xMG1BICAgKDA8PDApCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzBfOG1BICAgICgxPDwwKQorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MwXzZtQSAgICAoMjw8MCkKKyNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMF80bUEgICAgKDM8PDApCisjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzBfTUFTSyAgICgzPDwwKQorCisjZW5kaWYgLyogQ09ORklHX0NQVV9TM0MyNDQwICovCisKKyNlbmRpZgkvKiBfX0FTTV9BUkNIX1JFR1NfRFNDX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWdwaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1ncGlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA1M2NiYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1ncGlvLmgKQEAgLTAsMCArMSw4MzEgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtL2hhcmR3YXJlL3MzYzI0MTAvcmVncy1ncGlvLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMsMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICAgICAgIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBTM0MyNDEwIEdQSU8gcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAgMTktMDYtMjAwMyAgICAgQkpEICAgICBDcmVhdGVkIGZpbGUKKyAqICAgIDIzLTA2LTIwMDMgICAgIEJKRCAgICAgVXBkYXRlZCBHU1RBVFVTIHJlZ2lzdGVycworICogICAgMTItMDMtMjAwNCAgICAgQkpEICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMjAtMDctMjAwNCAgICAgQkpEICAgICBBZGRlZCBHUElPIHBpbiBudW1iZXJzLCBhZGRlZCBQb3J0IEEgZGVmaW5pdGlvbnMKKyAqICAgIDA0LTEwLTIwMDQgICAgIEJKRCAgICAgRml4ZWQgbnVtYmVyIG9mIGJ1Z3MsIGFkZGVkIEVYVCBJUlEgZmlsdGVyIGRlZnMKKyAqICAgIDE3LTEwLTIwMDQgICAgIEJKRCAgICAgQWRkZWQgR1NUQVRVUzEgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqICAgIDE4LTExLTIwMDQgICAgIEJKRCAgICAgRml4ZWQgZGVmaW5pdGlvbnMgb2YgR1BFMywgR1BFNCwgR1BFNSBhbmQgR1BFNgorICogICAgMTgtMTEtMjAwNCAgICAgQkpEICAgICBBZGRlZCBTM0MyNDQwIEFDOTcgY29udHJvbHMKKyAqICAgIDEwLU1hci0yMDA1ICAgIExDVlIgICAgQ2hhbmdlZCBTM0MyNDEwX1ZBIHRvIFMzQzI0WFhfVkEKKyAqICAgIDI4LU1hci0yMDA1ICAgIExDVlIgICAgRml4ZWQgZGVmaW5pdGlvbiBvZiBHUEIxMAorKi8KKworCisjaWZuZGVmIF9fQVNNX0FSQ0hfUkVHU19HUElPX0gKKyNkZWZpbmUgX19BU01fQVJDSF9SRUdTX0dQSU9fSCAiJElkOiBncGlvLmgsdiAxLjUgMjAwMy8wNS8xOSAxMjo1MTowOCBiZW4gRXhwICQiCisKKyNkZWZpbmUgUzNDMjQxMF9HUElPTk8oYmFuayxvZmZzZXQpICgoYmFuaykgKyAob2Zmc2V0KSkKKworI2RlZmluZSBTM0MyNDEwX0dQSU9fQkFOS0EgICAoMzIqMCkKKyNkZWZpbmUgUzNDMjQxMF9HUElPX0JBTktCICAgKDMyKjEpCisjZGVmaW5lIFMzQzI0MTBfR1BJT19CQU5LQyAgICgzMioyKQorI2RlZmluZSBTM0MyNDEwX0dQSU9fQkFOS0QgICAoMzIqMykKKyNkZWZpbmUgUzNDMjQxMF9HUElPX0JBTktFICAgKDMyKjQpCisjZGVmaW5lIFMzQzI0MTBfR1BJT19CQU5LRiAgICgzMio1KQorI2RlZmluZSBTM0MyNDEwX0dQSU9fQkFOS0cgICAoMzIqNikKKyNkZWZpbmUgUzNDMjQxMF9HUElPX0JBTktIICAgKDMyKjcpCisKKyNkZWZpbmUgUzNDMjQxMF9HUElPX0JBU0UocGluKSAgICgoKChwaW4pICYgfjMxKSA+PiAxKSArIFMzQzI0WFhfVkFfR1BJTykKKyNkZWZpbmUgUzNDMjQxMF9HUElPX09GRlNFVChwaW4pICgocGluKSAmIDMxKQorCisvKiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAqLworCisjZGVmaW5lIFMzQzI0MTBfR1BJT19MRUFWRSAgICgweEZGRkZGRkZGKQorCisvKiBjb25maWd1cmUgR1BJTyBwb3J0cyBBLi5HICovCisKKyNkZWZpbmUgUzNDMjQxMF9HUElPUkVHKHgpICgoeCkgKyBTM0MyNFhYX1ZBX0dQSU8pCisKKy8qIHBvcnQgQSAtIDIyYml0cywgemVybyBpbiBiaXQgWCBtYWtlcyBwaW4gWCBvdXRwdXQKKyAqIDEgbWFrZXMgcG9ydCBzcGVjaWFsIGZ1bmN0aW9uLCB0aGlzIGlzIGRlZmF1bHQKKyovCisjZGVmaW5lIFMzQzI0MTBfR1BBQ09OCSAgIFMzQzI0MTBfR1BJT1JFRygweDAwKQorI2RlZmluZSBTM0MyNDEwX0dQQURBVAkgICBTM0MyNDEwX0dQSU9SRUcoMHgwNCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDApCisjZGVmaW5lIFMzQzI0MTBfR1BBMF9PVVQgICAgICgwPDwwKQorI2RlZmluZSBTM0MyNDEwX0dQQTBfQUREUjAgICAoMTw8MCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTEgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDEpCisjZGVmaW5lIFMzQzI0MTBfR1BBMV9PVVQgICAgICgwPDwxKQorI2RlZmluZSBTM0MyNDEwX0dQQTFfQUREUjE2ICAoMTw8MSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTIgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDIpCisjZGVmaW5lIFMzQzI0MTBfR1BBMl9PVVQgICAgICgwPDwyKQorI2RlZmluZSBTM0MyNDEwX0dQQTJfQUREUjE3ICAoMTw8MikKKworI2RlZmluZSBTM0MyNDEwX0dQQTMgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDMpCisjZGVmaW5lIFMzQzI0MTBfR1BBM19PVVQgICAgICgwPDwzKQorI2RlZmluZSBTM0MyNDEwX0dQQTNfQUREUjE4ICAoMTw8MykKKworI2RlZmluZSBTM0MyNDEwX0dQQTQgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDQpCisjZGVmaW5lIFMzQzI0MTBfR1BBNF9PVVQgICAgICgwPDw0KQorI2RlZmluZSBTM0MyNDEwX0dQQTRfQUREUjE5ICAoMTw8NCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTUgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDUpCisjZGVmaW5lIFMzQzI0MTBfR1BBNV9PVVQgICAgICgwPDw1KQorI2RlZmluZSBTM0MyNDEwX0dQQTVfQUREUjIwICAoMTw8NSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTYgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDYpCisjZGVmaW5lIFMzQzI0MTBfR1BBNl9PVVQgICAgICgwPDw2KQorI2RlZmluZSBTM0MyNDEwX0dQQTZfQUREUjIxICAoMTw8NikKKworI2RlZmluZSBTM0MyNDEwX0dQQTcgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDcpCisjZGVmaW5lIFMzQzI0MTBfR1BBN19PVVQgICAgICgwPDw3KQorI2RlZmluZSBTM0MyNDEwX0dQQTdfQUREUjIyICAoMTw8NykKKworI2RlZmluZSBTM0MyNDEwX0dQQTggICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDgpCisjZGVmaW5lIFMzQzI0MTBfR1BBOF9PVVQgICAgICgwPDw4KQorI2RlZmluZSBTM0MyNDEwX0dQQThfQUREUjIzICAoMTw8OCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTkgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDkpCisjZGVmaW5lIFMzQzI0MTBfR1BBOV9PVVQgICAgICgwPDw5KQorI2RlZmluZSBTM0MyNDEwX0dQQTlfQUREUjI0ICAoMTw8OSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTEwICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDEwKQorI2RlZmluZSBTM0MyNDEwX0dQQTEwX09VVCAgICAoMDw8MTApCisjZGVmaW5lIFMzQzI0MTBfR1BBMTBfQUREUjI1ICgxPDwxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTExICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDExKQorI2RlZmluZSBTM0MyNDEwX0dQQTExX09VVCAgICAoMDw8MTEpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTFfQUREUjI2ICgxPDwxMSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTEyICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDEyKQorI2RlZmluZSBTM0MyNDEwX0dQQTEyX09VVCAgICAoMDw8MTIpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTJfbkdDUzEgICgxPDwxMikKKworI2RlZmluZSBTM0MyNDEwX0dQQTEzICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDEzKQorI2RlZmluZSBTM0MyNDEwX0dQQTEzX09VVCAgICAoMDw8MTMpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTNfbkdDUzIgICgxPDwxMykKKworI2RlZmluZSBTM0MyNDEwX0dQQTE0ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE0KQorI2RlZmluZSBTM0MyNDEwX0dQQTE0X09VVCAgICAoMDw8MTQpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTRfbkdDUzMgICgxPDwxNCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTE1ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE1KQorI2RlZmluZSBTM0MyNDEwX0dQQTE1X09VVCAgICAoMDw8MTUpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTVfbkdDUzQgICgxPDwxNSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTE2ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE2KQorI2RlZmluZSBTM0MyNDEwX0dQQTE2X09VVCAgICAoMDw8MTYpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTZfbkdDUzUgICgxPDwxNikKKworI2RlZmluZSBTM0MyNDEwX0dQQTE3ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE3KQorI2RlZmluZSBTM0MyNDEwX0dQQTE3X09VVCAgICAoMDw8MTcpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTdfQ0xFICAgICgxPDwxNykKKworI2RlZmluZSBTM0MyNDEwX0dQQTE4ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE4KQorI2RlZmluZSBTM0MyNDEwX0dQQTE4X09VVCAgICAoMDw8MTgpCisjZGVmaW5lIFMzQzI0MTBfR1BBMThfQUxFICAgICgxPDwxOCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTE5ICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDE5KQorI2RlZmluZSBTM0MyNDEwX0dQQTE5X09VVCAgICAoMDw8MTkpCisjZGVmaW5lIFMzQzI0MTBfR1BBMTlfbkZXRSAgICgxPDwxOSkKKworI2RlZmluZSBTM0MyNDEwX0dQQTIwICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDIwKQorI2RlZmluZSBTM0MyNDEwX0dQQTIwX09VVCAgICAoMDw8MjApCisjZGVmaW5lIFMzQzI0MTBfR1BBMjBfbkZSRSAgICgxPDwyMCkKKworI2RlZmluZSBTM0MyNDEwX0dQQTIxICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0EsIDIxKQorI2RlZmluZSBTM0MyNDEwX0dQQTIxX09VVCAgICAoMDw8MjEpCisjZGVmaW5lIFMzQzI0MTBfR1BBMjFfblJTVE9VVCAoMTw8MjEpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEEyMiAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktBLCAyMikKKyNkZWZpbmUgUzNDMjQxMF9HUEEyMl9PVVQgICAgKDA8PDIyKQorI2RlZmluZSBTM0MyNDEwX0dQQTIyX25GQ0UgICAoMTw8MjIpCisKKy8qIDB4MDggYW5kIDB4MGMgYXJlIHJlc2VydmVkICovCisKKy8qIEdQQiBpcyAxMCBJTyBwaW5zLCBlYWNoIGNvbmZpZ3VyZWQgYnkgMiBiaXRzIGVhY2ggaW4gR1BCQ09OLgorICogICAwMCA9IGlucHV0LCAwMSA9IG91dHB1dCwgMTA9c3BlY2lhbCBmdW5jdGlvbiwgMTE9cmVzZXJ2ZWQKKyAqIGJpdCAwLDEgPSBwaW4gMCwgMiwzPSBwaW4gMS4uLgorICoKKyAqIENQQlVQID0gcHVsbCB1cCByZXNpc3RvciBjb250cm9sLCAxPWRpc2FibGVkLCAwPWVuYWJsZWQKKyovCisKKyNkZWZpbmUgUzNDMjQxMF9HUEJDT04JICAgUzNDMjQxMF9HUElPUkVHKDB4MTApCisjZGVmaW5lIFMzQzI0MTBfR1BCREFUCSAgIFMzQzI0MTBfR1BJT1JFRygweDE0KQorI2RlZmluZSBTM0MyNDEwX0dQQlVQCSAgIFMzQzI0MTBfR1BJT1JFRygweDE4KQorCisvKiBubyBpL28gcGluIGluIHBvcnQgYiBjYW4gaGF2ZSB2YWx1ZSAzISAqLworCisjZGVmaW5lIFMzQzI0MTBfR1BCMCAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQiwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEIwX0lOUCAgICAgKDB4MDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEIwX09VVFAgICAgKDB4MDEgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEIwX1RPVVQwICAgKDB4MDIgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX0dQQjEgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0IsIDEpCisjZGVmaW5lIFMzQzI0MTBfR1BCMV9JTlAgICAgICgweDAwIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BCMV9PVVRQICAgICgweDAxIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BCMV9UT1VUMSAgICgweDAyIDw8IDIpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEIyICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktCLCAyKQorI2RlZmluZSBTM0MyNDEwX0dQQjJfSU5QICAgICAoMHgwMCA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQQjJfT1VUUCAgICAoMHgwMSA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQQjJfVE9VVDIgICAoMHgwMiA8PCA0KQorCisjZGVmaW5lIFMzQzI0MTBfR1BCMyAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQiwgMykKKyNkZWZpbmUgUzNDMjQxMF9HUEIzX0lOUCAgICAgKDB4MDAgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEIzX09VVFAgICAgKDB4MDEgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEIzX1RPVVQzICAgKDB4MDIgPDwgNikKKworI2RlZmluZSBTM0MyNDEwX0dQQjQgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0IsIDQpCisjZGVmaW5lIFMzQzI0MTBfR1BCNF9JTlAgICAgICgweDAwIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BCNF9PVVRQICAgICgweDAxIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BCNF9UQ0xLMCAgICgweDAyIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BCNF9NQVNLICAgICgweDAzIDw8IDgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEI1ICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktCLCA1KQorI2RlZmluZSBTM0MyNDEwX0dQQjVfSU5QICAgICAoMHgwMCA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEI1X09VVFAgICAgKDB4MDEgPDwgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BCNV9uWEJBQ0sgICgweDAyIDw8IDEwKQorCisjZGVmaW5lIFMzQzI0MTBfR1BCNiAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQiwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEI2X0lOUCAgICAgKDB4MDAgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BCNl9PVVRQICAgICgweDAxIDw8IDEyKQorI2RlZmluZSBTM0MyNDEwX0dQQjZfblhCUkVRICAoMHgwMiA8PCAxMikKKworI2RlZmluZSBTM0MyNDEwX0dQQjcgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0IsIDcpCisjZGVmaW5lIFMzQzI0MTBfR1BCN19JTlAgICAgICgweDAwIDw8IDE0KQorI2RlZmluZSBTM0MyNDEwX0dQQjdfT1VUUCAgICAoMHgwMSA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEI3X25YREFDSzEgKDB4MDIgPDwgMTQpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEI4ICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktCLCA4KQorI2RlZmluZSBTM0MyNDEwX0dQQjhfSU5QICAgICAoMHgwMCA8PCAxNikKKyNkZWZpbmUgUzNDMjQxMF9HUEI4X09VVFAgICAgKDB4MDEgPDwgMTYpCisjZGVmaW5lIFMzQzI0MTBfR1BCOF9uWERSRVExICgweDAyIDw8IDE2KQorCisjZGVmaW5lIFMzQzI0MTBfR1BCOSAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQiwgOSkKKyNkZWZpbmUgUzNDMjQxMF9HUEI5X0lOUCAgICAgKDB4MDAgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BCOV9PVVRQICAgICgweDAxIDw8IDE4KQorI2RlZmluZSBTM0MyNDEwX0dQQjlfblhEQUNLMCAoMHgwMiA8PCAxOCkKKworI2RlZmluZSBTM0MyNDEwX0dQQjEwICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0IsIDEwKQorI2RlZmluZSBTM0MyNDEwX0dQQjEwX0lOUCAgICAoMHgwMCA8PCAyMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEIxMF9PVVRQICAgKDB4MDEgPDwgMjApCisjZGVmaW5lIFMzQzI0MTBfR1BCMTBfblhEUkUwICgweDAyIDw8IDIwKQorCisvKiBQb3J0IEMgY29uc2l0cyBvZiAxNiBHUElPL1NwZWNpYWwgZnVuY3Rpb24KKyAqCisgKiBhbG1vc3QgaWRlbnRpY2FsIHNldHVwIHRvIHBvcnQgYiwgYnV0IHRoZSBzcGVjaWFsIGZ1bmN0aW9ucyBhcmUgbW9zdGx5CisgKiB0byBkbyB3aXRoIHRoZSB2aWRlbyBzeXN0ZW0ncyBzeW5jL2V0Yy4KKyovCisKKyNkZWZpbmUgUzNDMjQxMF9HUENDT04JICAgUzNDMjQxMF9HUElPUkVHKDB4MjApCisjZGVmaW5lIFMzQzI0MTBfR1BDREFUCSAgIFMzQzI0MTBfR1BJT1JFRygweDI0KQorI2RlZmluZSBTM0MyNDEwX0dQQ1VQCSAgIFMzQzI0MTBfR1BJT1JFRygweDI4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMCAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEMwX0lOUAkoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQQzBfT1VUUAkoMHgwMSA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQQzBfTEVORAkoMHgwMiA8PCAwKQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMSAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEMxX0lOUAkoMHgwMCA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQQzFfT1VUUAkoMHgwMSA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQQzFfVkNMSwkoMHgwMiA8PCAyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMiAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEMyX0lOUAkoMHgwMCA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQQzJfT1VUUAkoMHgwMSA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQQzJfVkxJTkUJKDB4MDIgPDwgNCkKKworI2RlZmluZSBTM0MyNDEwX0dQQzMgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0MsIDMpCisjZGVmaW5lIFMzQzI0MTBfR1BDM19JTlAJKDB4MDAgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEMzX09VVFAJKDB4MDEgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEMzX1ZGUkFNRQkoMHgwMiA8PCA2KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDNCAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEM0X0lOUAkoMHgwMCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQQzRfT1VUUAkoMHgwMSA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQQzRfVk0JCSgweDAyIDw8IDgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEM1ICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktDLCA1KQorI2RlZmluZSBTM0MyNDEwX0dQQzVfSU5QCSgweDAwIDw8IDEwKQorI2RlZmluZSBTM0MyNDEwX0dQQzVfT1VUUAkoMHgwMSA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEM1X0xDRFZGMAkoMHgwMiA8PCAxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQQzYgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0MsIDYpCisjZGVmaW5lIFMzQzI0MTBfR1BDNl9JTlAJKDB4MDAgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BDNl9PVVRQCSgweDAxIDw8IDEyKQorI2RlZmluZSBTM0MyNDEwX0dQQzZfTENEVkYxCSgweDAyIDw8IDEyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BDNyAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgNykKKyNkZWZpbmUgUzNDMjQxMF9HUEM3X0lOUAkoMHgwMCA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEM3X09VVFAJKDB4MDEgPDwgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BDN19MQ0RWRjIJKDB4MDIgPDwgMTQpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEM4ICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktDLCA4KQorI2RlZmluZSBTM0MyNDEwX0dQQzhfSU5QCSgweDAwIDw8IDE2KQorI2RlZmluZSBTM0MyNDEwX0dQQzhfT1VUUAkoMHgwMSA8PCAxNikKKyNkZWZpbmUgUzNDMjQxMF9HUEM4X1ZEMAkoMHgwMiA8PCAxNikKKworI2RlZmluZSBTM0MyNDEwX0dQQzkgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0MsIDkpCisjZGVmaW5lIFMzQzI0MTBfR1BDOV9JTlAJKDB4MDAgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BDOV9PVVRQCSgweDAxIDw8IDE4KQorI2RlZmluZSBTM0MyNDEwX0dQQzlfVkQxCSgweDAyIDw8IDE4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BDMTBfSU5QCSgweDAwIDw8IDIwKQorI2RlZmluZSBTM0MyNDEwX0dQQzEwX09VVFAJKDB4MDEgPDwgMjApCisjZGVmaW5lIFMzQzI0MTBfR1BDMTBfVkQyCSgweDAyIDw8IDIwKQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTEgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTEpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTFfSU5QCSgweDAwIDw8IDIyKQorI2RlZmluZSBTM0MyNDEwX0dQQzExX09VVFAJKDB4MDEgPDwgMjIpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTFfVkQzCSgweDAyIDw8IDIyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTIgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTJfSU5QCSgweDAwIDw8IDI0KQorI2RlZmluZSBTM0MyNDEwX0dQQzEyX09VVFAJKDB4MDEgPDwgMjQpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTJfVkQ0CSgweDAyIDw8IDI0KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTMgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTMpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTNfSU5QCSgweDAwIDw8IDI2KQorI2RlZmluZSBTM0MyNDEwX0dQQzEzX09VVFAJKDB4MDEgPDwgMjYpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTNfVkQ1CSgweDAyIDw8IDI2KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTQgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTRfSU5QCSgweDAwIDw8IDI4KQorI2RlZmluZSBTM0MyNDEwX0dQQzE0X09VVFAJKDB4MDEgPDwgMjgpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTRfVkQ2CSgweDAyIDw8IDI4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BDMTUgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LQywgMTUpCisjZGVmaW5lIFMzQzI0MTBfR1BDMTVfSU5QCSgweDAwIDw8IDMwKQorI2RlZmluZSBTM0MyNDEwX0dQQzE1X09VVFAJKDB4MDEgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BDMTVfVkQ3CSgweDAyIDw8IDMwKQorCisvKiBQb3J0IEQgY29uc2lzdHMgb2YgMTYgR1BJTy9TcGVjaWFsIGZ1bmN0aW9uCisgKgorICogYWxtb3N0IGlkZW50aWNhbCBzZXR1cCB0byBwb3J0IGIsIGJ1dCB0aGUgc3BlY2lhbCBmdW5jdGlvbnMgYXJlIG1vc3RseQorICogdG8gZG8gd2l0aCB0aGUgdmlkZW8gc3lzdGVtJ3MgZGF0YS4KKyovCisKKyNkZWZpbmUgUzNDMjQxMF9HUERDT04JICAgUzNDMjQxMF9HUElPUkVHKDB4MzApCisjZGVmaW5lIFMzQzI0MTBfR1BEREFUCSAgIFMzQzI0MTBfR1BJT1JFRygweDM0KQorI2RlZmluZSBTM0MyNDEwX0dQRFVQCSAgIFMzQzI0MTBfR1BJT1JFRygweDM4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BEMCAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRCwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQwX0lOUAkoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQRDBfT1VUUAkoMHgwMSA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQRDBfVkQ4CSgweDAyIDw8IDApCisKKyNkZWZpbmUgUzNDMjQxMF9HUEQxICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktELCAxKQorI2RlZmluZSBTM0MyNDEwX0dQRDFfSU5QCSgweDAwIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BEMV9PVVRQCSgweDAxIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BEMV9WRDkJKDB4MDIgPDwgMikKKworI2RlZmluZSBTM0MyNDEwX0dQRDIgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDIpCisjZGVmaW5lIFMzQzI0MTBfR1BEMl9JTlAJKDB4MDAgPDwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQyX09VVFAJKDB4MDEgPDwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQyX1ZEMTAJKDB4MDIgPDwgNCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDMgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDMpCisjZGVmaW5lIFMzQzI0MTBfR1BEM19JTlAJKDB4MDAgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEQzX09VVFAJKDB4MDEgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEQzX1ZEMTEJKDB4MDIgPDwgNikKKworI2RlZmluZSBTM0MyNDEwX0dQRDQgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDQpCisjZGVmaW5lIFMzQzI0MTBfR1BENF9JTlAJKDB4MDAgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQ0X09VVFAJKDB4MDEgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQ0X1ZEMTIJKDB4MDIgPDwgOCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDUgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDUpCisjZGVmaW5lIFMzQzI0MTBfR1BENV9JTlAJKDB4MDAgPDwgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BENV9PVVRQCSgweDAxIDw8IDEwKQorI2RlZmluZSBTM0MyNDEwX0dQRDVfVkQxMwkoMHgwMiA8PCAxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDYgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDYpCisjZGVmaW5lIFMzQzI0MTBfR1BENl9JTlAJKDB4MDAgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BENl9PVVRQCSgweDAxIDw8IDEyKQorI2RlZmluZSBTM0MyNDEwX0dQRDZfVkQxNAkoMHgwMiA8PCAxMikKKworI2RlZmluZSBTM0MyNDEwX0dQRDcgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDcpCisjZGVmaW5lIFMzQzI0MTBfR1BEN19JTlAJKDB4MDAgPDwgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BEN19PVVRQCSgweDAxIDw8IDE0KQorI2RlZmluZSBTM0MyNDEwX0dQRDdfVkQxNQkoMHgwMiA8PCAxNCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDggICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDgpCisjZGVmaW5lIFMzQzI0MTBfR1BEOF9JTlAJKDB4MDAgPDwgMTYpCisjZGVmaW5lIFMzQzI0MTBfR1BEOF9PVVRQCSgweDAxIDw8IDE2KQorI2RlZmluZSBTM0MyNDEwX0dQRDhfVkQxNgkoMHgwMiA8PCAxNikKKworI2RlZmluZSBTM0MyNDEwX0dQRDkgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDkpCisjZGVmaW5lIFMzQzI0MTBfR1BEOV9JTlAJKDB4MDAgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BEOV9PVVRQCSgweDAxIDw8IDE4KQorI2RlZmluZSBTM0MyNDEwX0dQRDlfVkQxNwkoMHgwMiA8PCAxOCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDEwICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDEwKQorI2RlZmluZSBTM0MyNDEwX0dQRDEwX0lOUAkoMHgwMCA8PCAyMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQxMF9PVVRQCSgweDAxIDw8IDIwKQorI2RlZmluZSBTM0MyNDEwX0dQRDEwX1ZEMTgJKDB4MDIgPDwgMjApCisKKyNkZWZpbmUgUzNDMjQxMF9HUEQxMSAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktELCAxMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEQxMV9JTlAJKDB4MDAgPDwgMjIpCisjZGVmaW5lIFMzQzI0MTBfR1BEMTFfT1VUUAkoMHgwMSA8PCAyMikKKyNkZWZpbmUgUzNDMjQxMF9HUEQxMV9WRDE5CSgweDAyIDw8IDIyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BEMTIgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRCwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BEMTJfSU5QCSgweDAwIDw8IDI0KQorI2RlZmluZSBTM0MyNDEwX0dQRDEyX09VVFAJKDB4MDEgPDwgMjQpCisjZGVmaW5lIFMzQzI0MTBfR1BEMTJfVkQyMAkoMHgwMiA8PCAyNCkKKworI2RlZmluZSBTM0MyNDEwX0dQRDEzICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0QsIDEzKQorI2RlZmluZSBTM0MyNDEwX0dQRDEzX0lOUAkoMHgwMCA8PCAyNikKKyNkZWZpbmUgUzNDMjQxMF9HUEQxM19PVVRQCSgweDAxIDw8IDI2KQorI2RlZmluZSBTM0MyNDEwX0dQRDEzX1ZEMjEJKDB4MDIgPDwgMjYpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEQxNCAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktELCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQxNF9JTlAJKDB4MDAgPDwgMjgpCisjZGVmaW5lIFMzQzI0MTBfR1BEMTRfT1VUUAkoMHgwMSA8PCAyOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEQxNF9WRDIyCSgweDAyIDw8IDI4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BEMTUgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRCwgMTUpCisjZGVmaW5lIFMzQzI0MTBfR1BEMTVfSU5QCSgweDAwIDw8IDMwKQorI2RlZmluZSBTM0MyNDEwX0dQRDE1X09VVFAJKDB4MDEgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BEMTVfVkQyMwkoMHgwMiA8PCAzMCkKKworLyogUG9ydCBFIGNvbnNpc3RzIG9mIDE2IEdQSU8vU3BlY2lhbCBmdW5jdGlvbgorICoKKyAqIGFnYWluLCB0aGUgc2FtZSBhcyBwb3J0IEIsIGJ1dCBkZWFsaW5nIHdpdGggSTJTLCBTREksIGFuZAorICogbW9yZSBtaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucworKi8KKworI2RlZmluZSBTM0MyNDEwX0dQRUNPTgkgICBTM0MyNDEwX0dQSU9SRUcoMHg0MCkKKyNkZWZpbmUgUzNDMjQxMF9HUEVEQVQJICAgUzNDMjQxMF9HUElPUkVHKDB4NDQpCisjZGVmaW5lIFMzQzI0MTBfR1BFVVAJICAgUzNDMjQxMF9HUElPUkVHKDB4NDgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEUwICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDApCisjZGVmaW5lIFMzQzI0MTBfR1BFMF9JTlAgICAgICAgKDB4MDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUwX09VVFAgICAgICAoMHgwMSA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQRTBfSTJTTFJDSyAgICgweDAyIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfR1BFMF9NQVNLICAgICAgKDB4MDMgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRTEgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRSwgMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxX0lOUCAgICAgICAoMHgwMCA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQRTFfT1VUUCAgICAgICgweDAxIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BFMV9JMlNTQ0xLICAgKDB4MDIgPDwgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEUxX01BU0sgICAgICAoMHgwMyA8PCAyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BFMiAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktFLCAyKQorI2RlZmluZSBTM0MyNDEwX0dQRTJfSU5QICAgICAgICgweDAwIDw8IDQpCisjZGVmaW5lIFMzQzI0MTBfR1BFMl9PVVRQICAgICAgKDB4MDEgPDwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUyX0NEQ0xLICAgICAoMHgwMiA8PCA0KQorCisjZGVmaW5lIFMzQzI0MTBfR1BFMyAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktFLCAzKQorI2RlZmluZSBTM0MyNDEwX0dQRTNfSU5QICAgICAgICgweDAwIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfR1BFM19PVVRQICAgICAgKDB4MDEgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEUzX0kyU1NESSAgICAoMHgwMiA8PCA2KQorI2RlZmluZSBTM0MyNDEwX0dQRTNfblNTMCAgICAgICgweDAzIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfR1BFM19NQVNLICAgICAgKDB4MDMgPDwgNikKKworI2RlZmluZSBTM0MyNDEwX0dQRTQgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRSwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEU0X0lOUCAgICAgICAoMHgwMCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQRTRfT1VUUCAgICAgICgweDAxIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BFNF9JMlNTRE8gICAgKDB4MDIgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEU0X0kyU1NESSAgICAoMHgwMyA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQRTRfTUFTSyAgICAgICgweDAzIDw8IDgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEU1ICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDUpCisjZGVmaW5lIFMzQzI0MTBfR1BFNV9JTlAgICAgICAgKDB4MDAgPDwgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BFNV9PVVRQICAgICAgKDB4MDEgPDwgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BFNV9TRENMSyAgICAgKDB4MDIgPDwgMTApCisKKyNkZWZpbmUgUzNDMjQxMF9HUEU2ICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDYpCisjZGVmaW5lIFMzQzI0MTBfR1BFNl9JTlAgICAgICAgKDB4MDAgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BFNl9PVVRQICAgICAgKDB4MDEgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BFNl9TRENNRCAgICAgKDB4MDIgPDwgMTIpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEU3ICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDcpCisjZGVmaW5lIFMzQzI0MTBfR1BFN19JTlAgICAgICAgKDB4MDAgPDwgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BFN19PVVRQICAgICAgKDB4MDEgPDwgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BFN19TRERBVDAgICAgKDB4MDIgPDwgMTQpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEU4ICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDgpCisjZGVmaW5lIFMzQzI0MTBfR1BFOF9JTlAgICAgICAgKDB4MDAgPDwgMTYpCisjZGVmaW5lIFMzQzI0MTBfR1BFOF9PVVRQICAgICAgKDB4MDEgPDwgMTYpCisjZGVmaW5lIFMzQzI0MTBfR1BFOF9TRERBVDEgICAgKDB4MDIgPDwgMTYpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEU5ICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDkpCisjZGVmaW5lIFMzQzI0MTBfR1BFOV9JTlAgICAgICAgKDB4MDAgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BFOV9PVVRQICAgICAgKDB4MDEgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BFOV9TRERBVDIgICAgKDB4MDIgPDwgMTgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEUxMCAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDEwKQorI2RlZmluZSBTM0MyNDEwX0dQRTEwX0lOUCAgICAgICgweDAwIDw8IDIwKQorI2RlZmluZSBTM0MyNDEwX0dQRTEwX09VVFAgICAgICgweDAxIDw8IDIwKQorI2RlZmluZSBTM0MyNDEwX0dQRTEwX1NEREFUMyAgICgweDAyIDw8IDIwKQorCisjZGVmaW5lIFMzQzI0MTBfR1BFMTEgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktFLCAxMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxMV9JTlAgICAgICAoMHgwMCA8PCAyMikKKyNkZWZpbmUgUzNDMjQxMF9HUEUxMV9PVVRQICAgICAoMHgwMSA8PCAyMikKKyNkZWZpbmUgUzNDMjQxMF9HUEUxMV9TUElNSVNPMCAoMHgwMiA8PCAyMikKKworI2RlZmluZSBTM0MyNDEwX0dQRTEyICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRSwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BFMTJfSU5QICAgICAgKDB4MDAgPDwgMjQpCisjZGVmaW5lIFMzQzI0MTBfR1BFMTJfT1VUUCAgICAgKDB4MDEgPDwgMjQpCisjZGVmaW5lIFMzQzI0MTBfR1BFMTJfU1BJTU9TSTAgKDB4MDIgPDwgMjQpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEUxMyAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0UsIDEzKQorI2RlZmluZSBTM0MyNDEwX0dQRTEzX0lOUCAgICAgICgweDAwIDw8IDI2KQorI2RlZmluZSBTM0MyNDEwX0dQRTEzX09VVFAgICAgICgweDAxIDw8IDI2KQorI2RlZmluZSBTM0MyNDEwX0dQRTEzX1NQSUNMSzAgICgweDAyIDw8IDI2KQorCisjZGVmaW5lIFMzQzI0MTBfR1BFMTQgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktFLCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxNF9JTlAgICAgICAoMHgwMCA8PCAyOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxNF9PVVRQICAgICAoMHgwMSA8PCAyOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxNF9JSUNTQ0wgICAoMHgwMiA8PCAyOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEUxNF9NQVNLICAgICAoMHgwMyA8PCAyOCkKKworI2RlZmluZSBTM0MyNDEwX0dQRTE1ICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRSwgMTUpCisjZGVmaW5lIFMzQzI0MTBfR1BFMTVfSU5QICAgICAgKDB4MDAgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BFMTVfT1VUUCAgICAgKDB4MDEgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BFMTVfSUlDU0RBICAgKDB4MDIgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BFMTVfTUFTSyAgICAgKDB4MDMgPDwgMzApCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEUwX0FDU1lOQyAgICAoMHgwMyA8PCAwKQorI2RlZmluZSBTM0MyNDQwX0dQRTFfQUNCSVRDTEsgICgweDAzIDw8IDIpCisjZGVmaW5lIFMzQzI0NDBfR1BFMl9BQ1JFU0VUICAgKDB4MDMgPDwgNCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEUzX0FDSU4gICAgICAoMHgwMyA8PCA2KQorI2RlZmluZSBTM0MyNDQwX0dQRTRfQUNPVVQgICAgICgweDAzIDw8IDgpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEVfUFVQRElTKHgpICAoMTw8KHgpKQorCisvKiBQb3J0IEYgY29uc2lzdHMgb2YgOCBHUElPL1NwZWNpYWwgZnVuY3Rpb24KKyAqCisgKiBHUElPIC8gaW50ZXJydXB0IGlucHV0cworICoKKyAqIEdQRkNPTiBoYXMgMiBiaXRzIGZvciBlYWNoIG9mIHRoZSBpbnB1dCBwaW5zIG9uIHBvcnQgRgorICogICAwMCA9IDAgaW5wdXQsIDEgb3V0cHV0LCAyIGludGVycnVwdCAoRUlOVDAuLjcpLCAzIHVuZGVmaW5lZAorICoKKyAqIHB1bGwgdXAgd29ya3MgbGlrZSBhbGwgb3RoZXIgcG9ydHMuCisqLworCisjZGVmaW5lIFMzQzI0MTBfR1BGQ09OCSAgIFMzQzI0MTBfR1BJT1JFRygweDUwKQorI2RlZmluZSBTM0MyNDEwX0dQRkRBVAkgICBTM0MyNDEwX0dQSU9SRUcoMHg1NCkKKyNkZWZpbmUgUzNDMjQxMF9HUEZVUAkgICBTM0MyNDEwX0dQSU9SRUcoMHg1OCkKKworI2RlZmluZSBTM0MyNDEwX0dQRjAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEYwX0lOUCAgICAoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQRjBfT1VUUCAgICgweDAxIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfR1BGMF9FSU5UMCAgKDB4MDIgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRjEgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEYxX0lOUCAgICAoMHgwMCA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQRjFfT1VUUCAgICgweDAxIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BGMV9FSU5UMSAgKDB4MDIgPDwgMikKKworI2RlZmluZSBTM0MyNDEwX0dQRjIgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEYyX0lOUCAgICAoMHgwMCA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQRjJfT1VUUCAgICgweDAxIDw8IDQpCisjZGVmaW5lIFMzQzI0MTBfR1BGMl9FSU5UMiAgKDB4MDIgPDwgNCkKKworI2RlZmluZSBTM0MyNDEwX0dQRjMgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgMykKKyNkZWZpbmUgUzNDMjQxMF9HUEYzX0lOUCAgICAoMHgwMCA8PCA2KQorI2RlZmluZSBTM0MyNDEwX0dQRjNfT1VUUCAgICgweDAxIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfR1BGM19FSU5UMyAgKDB4MDIgPDwgNikKKworI2RlZmluZSBTM0MyNDEwX0dQRjQgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEY0X0lOUCAgICAoMHgwMCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQRjRfT1VUUCAgICgweDAxIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BGNF9FSU5UNCAgKDB4MDIgPDwgOCkKKworI2RlZmluZSBTM0MyNDEwX0dQRjUgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgNSkKKyNkZWZpbmUgUzNDMjQxMF9HUEY1X0lOUCAgICAoMHgwMCA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEY1X09VVFAgICAoMHgwMSA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEY1X0VJTlQ1ICAoMHgwMiA8PCAxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRjYgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEY2X0lOUCAgICAoMHgwMCA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEY2X09VVFAgICAoMHgwMSA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEY2X0VJTlQ2ICAoMHgwMiA8PCAxMikKKworI2RlZmluZSBTM0MyNDEwX0dQRjcgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRiwgNykKKyNkZWZpbmUgUzNDMjQxMF9HUEY3X0lOUCAgICAoMHgwMCA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEY3X09VVFAgICAoMHgwMSA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEY3X0VJTlQ3ICAoMHgwMiA8PCAxNCkKKworLyogUG9ydCBHIGNvbnNpc3RzIG9mIDggR1BJTy9JUlEvU3BlY2lhbCBmdW5jdGlvbgorICoKKyAqIEdQR0NPTiBoYXMgMiBiaXRzIGZvciBlYWNoIG9mIHRoZSBpbnB1dCBwaW5zIG9uIHBvcnQgRgorICogICAwMCA9IDAgaW5wdXQsIDEgb3V0cHV0LCAyIGludGVycnVwdCAoRUlOVDAuLjcpLCAzIHNwZWNpYWwgZnVuYworICoKKyAqIHB1bGwgdXAgd29ya3MgbGlrZSBhbGwgb3RoZXIgcG9ydHMuCisqLworCisjZGVmaW5lIFMzQzI0MTBfR1BHQ09OCSAgIFMzQzI0MTBfR1BJT1JFRygweDYwKQorI2RlZmluZSBTM0MyNDEwX0dQR0RBVAkgICBTM0MyNDEwX0dQSU9SRUcoMHg2NCkKKyNkZWZpbmUgUzNDMjQxMF9HUEdVUAkgICBTM0MyNDEwX0dQSU9SRUcoMHg2OCkKKworI2RlZmluZSBTM0MyNDEwX0dQRzAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCAwKQorI2RlZmluZSBTM0MyNDEwX0dQRzBfSU5QICAgICAgKDB4MDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcwX09VVFAgICAgICgweDAxIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfR1BHMF9FSU5UOCAgICAoMHgwMiA8PCAwKQorCisjZGVmaW5lIFMzQzI0MTBfR1BHMSAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDEpCisjZGVmaW5lIFMzQzI0MTBfR1BHMV9JTlAgICAgICAoMHgwMCA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQRzFfT1VUUCAgICAgKDB4MDEgPDwgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEcxX0VJTlQ5ICAgICgweDAyIDw8IDIpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEcyICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRywgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEcyX0lOUCAgICAgICgweDAwIDw8IDQpCisjZGVmaW5lIFMzQzI0MTBfR1BHMl9PVVRQICAgICAoMHgwMSA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQRzJfRUlOVDEwICAgKDB4MDIgPDwgNCkKKworI2RlZmluZSBTM0MyNDEwX0dQRzMgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCAzKQorI2RlZmluZSBTM0MyNDEwX0dQRzNfSU5QICAgICAgKDB4MDAgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEczX09VVFAgICAgICgweDAxIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfR1BHM19FSU5UMTEgICAoMHgwMiA8PCA2KQorCisjZGVmaW5lIFMzQzI0MTBfR1BHNCAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDQpCisjZGVmaW5lIFMzQzI0MTBfR1BHNF9JTlAgICAgICAoMHgwMCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQRzRfT1VUUCAgICAgKDB4MDEgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEc0X0VJTlQxMiAgICgweDAyIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BHNF9MQ0RQV1JFTiAoMHgwMyA8PCA4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BHNSAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDUpCisjZGVmaW5lIFMzQzI0MTBfR1BHNV9JTlAgICAgICAoMHgwMCA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEc1X09VVFAgICAgICgweDAxIDw8IDEwKQorI2RlZmluZSBTM0MyNDEwX0dQRzVfRUlOVDEzICAgKDB4MDIgPDwgMTApCisjZGVmaW5lIFMzQzI0MTBfR1BHNV9TUElNSVNPMSAoMHgwMyA8PCAxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRzYgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCA2KQorI2RlZmluZSBTM0MyNDEwX0dQRzZfSU5QICAgICAgKDB4MDAgPDwgMTIpCisjZGVmaW5lIFMzQzI0MTBfR1BHNl9PVVRQICAgICAoMHgwMSA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEc2X0VJTlQxNCAgICgweDAyIDw8IDEyKQorI2RlZmluZSBTM0MyNDEwX0dQRzZfU1BJTU9TSTEgKDB4MDMgPDwgMTIpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEc3ICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRywgNykKKyNkZWZpbmUgUzNDMjQxMF9HUEc3X0lOUCAgICAgICgweDAwIDw8IDE0KQorI2RlZmluZSBTM0MyNDEwX0dQRzdfT1VUUCAgICAgKDB4MDEgPDwgMTQpCisjZGVmaW5lIFMzQzI0MTBfR1BHN19FSU5UMTUgICAoMHgwMiA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEc3X1NQSUNMSzEgICgweDAzIDw8IDE0KQorCisjZGVmaW5lIFMzQzI0MTBfR1BHOCAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDgpCisjZGVmaW5lIFMzQzI0MTBfR1BHOF9JTlAgICAgICAoMHgwMCA8PCAxNikKKyNkZWZpbmUgUzNDMjQxMF9HUEc4X09VVFAgICAgICgweDAxIDw8IDE2KQorI2RlZmluZSBTM0MyNDEwX0dQRzhfRUlOVDE2ICAgKDB4MDIgPDwgMTYpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEc5ICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRywgOSkKKyNkZWZpbmUgUzNDMjQxMF9HUEc5X0lOUCAgICAgICgweDAwIDw8IDE4KQorI2RlZmluZSBTM0MyNDEwX0dQRzlfT1VUUCAgICAgKDB4MDEgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BHOV9FSU5UMTcgICAoMHgwMiA8PCAxOCkKKworI2RlZmluZSBTM0MyNDEwX0dQRzEwICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxMF9JTlAgICAgICgweDAwIDw8IDIwKQorI2RlZmluZSBTM0MyNDEwX0dQRzEwX09VVFAgICAgKDB4MDEgPDwgMjApCisjZGVmaW5lIFMzQzI0MTBfR1BHMTBfRUlOVDE4ICAoMHgwMiA8PCAyMCkKKworI2RlZmluZSBTM0MyNDEwX0dQRzExICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCAxMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxMV9JTlAgICAgICgweDAwIDw8IDIyKQorI2RlZmluZSBTM0MyNDEwX0dQRzExX09VVFAgICAgKDB4MDEgPDwgMjIpCisjZGVmaW5lIFMzQzI0MTBfR1BHMTFfRUlOVDE5ICAoMHgwMiA8PCAyMikKKyNkZWZpbmUgUzNDMjQxMF9HUEcxMV9UQ0xLMSAgICgweDAzIDw8IDIyKQorCisjZGVmaW5lIFMzQzI0MTBfR1BHMTIgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDEyKQorI2RlZmluZSBTM0MyNDEwX0dQRzEyX0lOUCAgICAgKDB4MDAgPDwgMjQpCisjZGVmaW5lIFMzQzI0MTBfR1BHMTJfT1VUUCAgICAoMHgwMSA8PCAyNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxMl9FSU5UMjAgICgweDAyIDw8IDI0KQorI2RlZmluZSBTM0MyNDEwX0dQRzEyX1hNT04gICAgKDB4MDMgPDwgMjQpCisKKyNkZWZpbmUgUzNDMjQxMF9HUEcxMyAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LRywgMTMpCisjZGVmaW5lIFMzQzI0MTBfR1BHMTNfSU5QICAgICAoMHgwMCA8PCAyNikKKyNkZWZpbmUgUzNDMjQxMF9HUEcxM19PVVRQICAgICgweDAxIDw8IDI2KQorI2RlZmluZSBTM0MyNDEwX0dQRzEzX0VJTlQyMSAgKDB4MDIgPDwgMjYpCisjZGVmaW5lIFMzQzI0MTBfR1BHMTNfblhQT04gICAoMHgwMyA8PCAyNikKKworI2RlZmluZSBTM0MyNDEwX0dQRzE0ICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktHLCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxNF9JTlAgICAgICgweDAwIDw8IDI4KQorI2RlZmluZSBTM0MyNDEwX0dQRzE0X09VVFAgICAgKDB4MDEgPDwgMjgpCisjZGVmaW5lIFMzQzI0MTBfR1BHMTRfRUlOVDIyICAoMHgwMiA8PCAyOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxNF9ZTU9OICAgICgweDAzIDw8IDI4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BHMTUgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0csIDE1KQorI2RlZmluZSBTM0MyNDEwX0dQRzE1X0lOUCAgICAgKDB4MDAgPDwgMzApCisjZGVmaW5lIFMzQzI0MTBfR1BHMTVfT1VUUCAgICAoMHgwMSA8PCAzMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEcxNV9FSU5UMjMgICgweDAyIDw8IDMwKQorI2RlZmluZSBTM0MyNDEwX0dQRzE1X25ZUE9OICAgKDB4MDMgPDwgMzApCisKKworI2RlZmluZSBTM0MyNDEwX0dQR19QVVBESVMoeCkgICgxPDwoeCkpCisKKy8qIFBvcnQgSCBjb25zaXN0cyBvZjExIEdQSU8vc2VyaWFsL01pc2MgcGlucworICoKKyAqIEdQR0NPTiBoYXMgMiBiaXRzIGZvciBlYWNoIG9mIHRoZSBpbnB1dCBwaW5zIG9uIHBvcnQgRgorICogICAwMCA9IDAgaW5wdXQsIDEgb3V0cHV0LCAyIGludGVycnVwdCAoRUlOVDAuLjcpLCAzIHNwZWNpYWwgZnVuYworICoKKyAqIHB1bGwgdXAgd29ya3MgbGlrZSBhbGwgb3RoZXIgcG9ydHMuCisqLworCisjZGVmaW5lIFMzQzI0MTBfR1BIQ09OCSAgIFMzQzI0MTBfR1BJT1JFRygweDcwKQorI2RlZmluZSBTM0MyNDEwX0dQSERBVAkgICBTM0MyNDEwX0dQSU9SRUcoMHg3NCkKKyNkZWZpbmUgUzNDMjQxMF9HUEhVUAkgICBTM0MyNDEwX0dQSU9SRUcoMHg3OCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEgwX0lOUCAgICAoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0dQSDBfT1VUUCAgICgweDAxIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfR1BIMF9uQ1RTMCAgKDB4MDIgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDEgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgMSkKKyNkZWZpbmUgUzNDMjQxMF9HUEgxX0lOUCAgICAoMHgwMCA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0dQSDFfT1VUUCAgICgweDAxIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfR1BIMV9uUlRTMCAgKDB4MDIgPDwgMikKKworI2RlZmluZSBTM0MyNDEwX0dQSDIgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgMikKKyNkZWZpbmUgUzNDMjQxMF9HUEgyX0lOUCAgICAoMHgwMCA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0dQSDJfT1VUUCAgICgweDAxIDw8IDQpCisjZGVmaW5lIFMzQzI0MTBfR1BIMl9UWEQwICAgKDB4MDIgPDwgNCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDMgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgMykKKyNkZWZpbmUgUzNDMjQxMF9HUEgzX0lOUCAgICAoMHgwMCA8PCA2KQorI2RlZmluZSBTM0MyNDEwX0dQSDNfT1VUUCAgICgweDAxIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfR1BIM19SWEQwICAgKDB4MDIgPDwgNikKKworI2RlZmluZSBTM0MyNDEwX0dQSDQgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg0X0lOUCAgICAoMHgwMCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0dQSDRfT1VUUCAgICgweDAxIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfR1BINF9UWEQxICAgKDB4MDIgPDwgOCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDUgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgNSkKKyNkZWZpbmUgUzNDMjQxMF9HUEg1X0lOUCAgICAoMHgwMCA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg1X09VVFAgICAoMHgwMSA8PCAxMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg1X1JYRDEgICAoMHgwMiA8PCAxMCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDYgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgNikKKyNkZWZpbmUgUzNDMjQxMF9HUEg2X0lOUCAgICAoMHgwMCA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEg2X09VVFAgICAoMHgwMSA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEg2X1RYRDIgICAoMHgwMiA8PCAxMikKKyNkZWZpbmUgUzNDMjQxMF9HUEg2X25SVFMxICAoMHgwMyA8PCAxMikKKworI2RlZmluZSBTM0MyNDEwX0dQSDcgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgNykKKyNkZWZpbmUgUzNDMjQxMF9HUEg3X0lOUCAgICAoMHgwMCA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg3X09VVFAgICAoMHgwMSA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg3X1JYRDIgICAoMHgwMiA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg3X25DVFMxICAoMHgwMyA8PCAxNCkKKworI2RlZmluZSBTM0MyNDEwX0dQSDggICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0MTBfR1BJT19CQU5LSCwgOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg4X0lOUCAgICAoMHgwMCA8PCAxNikKKyNkZWZpbmUgUzNDMjQxMF9HUEg4X09VVFAgICAoMHgwMSA8PCAxNikKKyNkZWZpbmUgUzNDMjQxMF9HUEg4X1VDTEsgICAoMHgwMiA8PCAxNikKKworI2RlZmluZSBTM0MyNDEwX0dQSDkgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQxMF9HUElPX0JBTktILCA5KQorI2RlZmluZSBTM0MyNDEwX0dQSDlfSU5QICAgICAgKDB4MDAgPDwgMTgpCisjZGVmaW5lIFMzQzI0MTBfR1BIOV9PVVRQICAgICAoMHgwMSA8PCAxOCkKKyNkZWZpbmUgUzNDMjQxMF9HUEg5X0NMS09VVDAgICgweDAyIDw8IDE4KQorCisjZGVmaW5lIFMzQzI0MTBfR1BIMTAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDEwX0dQSU9fQkFOS0gsIDEwKQorI2RlZmluZSBTM0MyNDEwX0dQSDEwX0lOUCAgICAgKDB4MDAgPDwgMjApCisjZGVmaW5lIFMzQzI0MTBfR1BIMTBfT1VUUCAgICAoMHgwMSA8PCAyMCkKKyNkZWZpbmUgUzNDMjQxMF9HUEgxMF9DTEtPVVQxICgweDAyIDw8IDIwKQorCisvKiBtaXNjZWxsYW5lb3VzIGNvbnRyb2wgKi8KKworI2RlZmluZSBTM0MyNDEwX01JU0NDUgkgICBTM0MyNDEwX0dQSU9SRUcoMHg4MCkKKyNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OCSAgIFMzQzI0MTBfR1BJT1JFRygweDg0KQorCisvKiBzZWUgY2xvY2suaCBmb3IgZGNsayBkZWZpbml0aW9ucyAqLworCisvKiBwdWxsdXAgY29udHJvbCBvbiBkYXRhYnVzICovCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX1NQVUNSX0hFTiAgICAoMCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfU1BVQ1JfSERJUyAgICgxPDwwKQorI2RlZmluZSBTM0MyNDEwX01JU0NDUl9TUFVDUl9MRU4gICAgKDApCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX1NQVUNSX0xESVMgICAoMTw8MSkKKworI2RlZmluZSBTM0MyNDEwX01JU0NDUl9VU0JERVYJICAgICgwKQorI2RlZmluZSBTM0MyNDEwX01JU0NDUl9VU0JIT1NUCSAgICAoMTw8MykKKworI2RlZmluZSBTM0MyNDEwX01JU0NDUl9DTEswX01QTEwgICAgKDA8PDQpCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX0NMSzBfVVBMTCAgICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfQ0xLMF9GQ0xLICAgICgyPDw0KQorI2RlZmluZSBTM0MyNDEwX01JU0NDUl9DTEswX0hDTEsgICAgKDM8PDQpCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX0NMSzBfUENMSyAgICAoNDw8NCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfQ0xLMF9EQ0xLMCAgICg1PDw0KQorCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX0NMSzFfTVBMTCAgICAoMDw8OCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfQ0xLMV9VUExMICAgICgxPDw4KQorI2RlZmluZSBTM0MyNDEwX01JU0NDUl9DTEsxX0ZDTEsgICAgKDI8PDgpCisjZGVmaW5lIFMzQzI0MTBfTUlTQ0NSX0NMSzFfSENMSyAgICAoMzw8OCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfQ0xLMV9QQ0xLICAgICg0PDw4KQorI2RlZmluZSBTM0MyNDEwX01JU0NDUl9DTEsxX0RDTEsxICAgKDU8PDgpCisKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfVVNCU1VTUE5EMCAgICgxPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfVVNCU1VTUE5EMSAgICgxPDwxMykKKworI2RlZmluZSBTM0MyNDEwX01JU0NDUl9uUlNUQ09OCSAgICAoMTw8MTYpCisKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfbkVOX1NDTEswICAgICgxPDwxNykKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfbkVOX1NDTEsxICAgICgxPDwxOCkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfbkVOX1NDTEtFICAgICgxPDwxOSkKKyNkZWZpbmUgUzNDMjQxMF9NSVNDQ1JfU0RTTEVFUAkgICAgKDc8PDE3KQorCisvKiBleHRlcm5hbCBpbnRlcnJ1cHQgY29udHJvbC4uLiAqLworLyogUzNDMjQxMF9FWFRJTlQwIC0+IGlycSBzZW5zZSBjb250cm9sIGZvciBFSU5UMC4uRUlOVDcKKyAqIFMzQzI0MTBfRVhUSU5UMSAtPiBpcnEgc2Vuc2UgY29udHJvbCBmb3IgRUlOVDguLkVJTlQxNQorICogUzNDMjQxMF9FWFRJTlQyIC0+IGlycSBzZW5zZSBjb250cm9sIGZvciBFSU5UMTYuLkVJTlQyMworICoKKyAqIG5vdGUgUzNDMjQxMF9FWFRJTlQyIGhhcyBmaWx0ZXJpbmcgb3B0aW9ucyBmb3IgRUlOVDE2Li5FSU5UMjMKKyAqCisgKiBTYW1zdW5nIGRhdGFzaGVldCBwOS0yNQorKi8KKworI2RlZmluZSBTM0MyNDEwX0VYVElOVDAJICAgUzNDMjQxMF9HUElPUkVHKDB4ODgpCisjZGVmaW5lIFMzQzI0MTBfRVhUSU5UMQkgICBTM0MyNDEwX0dQSU9SRUcoMHg4QykKKyNkZWZpbmUgUzNDMjQxMF9FWFRJTlQyCSAgIFMzQzI0MTBfR1BJT1JFRygweDkwKQorCisvKiB2YWx1ZXMgZm9yIFMzQzI0MTBfRVhUSU5UMC8xLzIgKi8KKyNkZWZpbmUgUzNDMjQxMF9FWFRJTlRfTE9XTEVWCSAoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9FWFRJTlRfSElMRVYJICgweDAxKQorI2RlZmluZSBTM0MyNDEwX0VYVElOVF9GQUxMRURHRQkgKDB4MDIpCisjZGVmaW5lIFMzQzI0MTBfRVhUSU5UX1JJU0VFREdFCSAoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9FWFRJTlRfQk9USEVER0UJICgweDA2KQorCisvKiBpbnRlcnJ1cHQgZmlsdGVyaW5nIGNvbnJyb2wgZm9yIEVJTlQxNi4uRUlOVDIzICovCisjZGVmaW5lIFMzQzI0MTBfRUlORkxUMAkgICBTM0MyNDEwX0dQSU9SRUcoMHg5NCkKKyNkZWZpbmUgUzNDMjQxMF9FSU5GTFQxCSAgIFMzQzI0MTBfR1BJT1JFRygweDk4KQorI2RlZmluZSBTM0MyNDEwX0VJTkZMVDIJICAgUzNDMjQxMF9HUElPUkVHKDB4OUMpCisjZGVmaW5lIFMzQzI0MTBfRUlORkxUMwkgICBTM0MyNDEwX0dQSU9SRUcoMHhBMCkKKworLyogdmFsdWVzIGZvciBpbnRlcnJ1cHQgZmlsdGVyaW5nICovCisjZGVmaW5lIFMzQzI0MTBfRUlOVEZMVF9QQ0xLCQkoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9FSU5URkxUX0VYVENMSwkJKDE8PDcpCisjZGVmaW5lIFMzQzI0MTBfRUlOVEZMVF9XSURUSE1TSyh4KQkoKHgpICYgMHgzZikKKworLyogcmVtb3ZlZCBFSU5UeHh4eCBkZWZzIGZyb20gaGVyZSwgbm90IG1lYW50IGZvciB0aGlzICovCisKKy8qIEdTVEFUVVMgaGF2ZSBtaXNjZWxsYW5lb3VzIGluZm9ybWF0aW9uIGluIHRoZW0KKyAqCisgKi8KKworI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMwICAgUzNDMjQxMF9HUElPUkVHKDB4MEFDKQorI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMxICAgUzNDMjQxMF9HUElPUkVHKDB4MEIwKQorI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMyICAgUzNDMjQxMF9HUElPUkVHKDB4MEI0KQorI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMzICAgUzNDMjQxMF9HUElPUkVHKDB4MEI4KQorI2RlZmluZSBTM0MyNDEwX0dTVEFUVVM0ICAgUzNDMjQxMF9HUElPUkVHKDB4MEJDKQorCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzBfbldBSVQJICAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzBfTkNPTgkgICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9HU1RBVFVTMF9SbkIJICAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzBfbkJBVFRGTFQgICgxPDwwKQorCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzFfSURNQVNLCSAgICgweGZmZmYwMDAwKQorI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMxXzI0MTAJICAgKDB4MzI0MTAwMDApCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzFfMjQ0MAkgICAoMHgzMjQ0MDAwMCkKKworI2RlZmluZSBTM0MyNDEwX0dTVEFUVVMyX1dUUkVTRVQgICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9HU1RBVFVTMl9PRkZSRVNFVCAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfR1NUQVRVUzJfUE9OUkVTRVQgICgxPDwwKQorCisjZW5kaWYJLyogX19BU01fQVJDSF9SRUdTX0dQSU9fSCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtZ3Bpb2ouaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1ncGlvai5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZDIzMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtZ3Bpb2ouaApAQCAtMCwwICsxLDEwMSBAQAorLyogbGludXgvaW5jbHVkZS9hc20vaGFyZHdhcmUvczNjMjQxMC9yZWdzLWdwaW9qLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzIDxsaW51eEBzaW10ZWMuY28udWs+CisgKgkJICAgICAgaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvU1dMSU5VWC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFMzQzI0NDAgR1BJTyBKIHJlZ2lzdGVyIGRlZmluaXRpb25zCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDExLUF1Zy0yMDA0ICAgICBCSkQgICAgIENyZWF0ZWQgZmlsZQorICogICAgMTAtRmViLTIwMDUgICAgIEJKRCAgICAgRml4IEdQSjEyIGRlZmluaXRpb24gKEd1aWxsYXVtZSBHb3VyYXQpCisqLworCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX0dQSU9KX0gKKyNkZWZpbmUgX19BU01fQVJDSF9SRUdTX0dQSU9KX0ggImdwaW9qIgorCisvKiBQb3J0IEogY29uc2lzdHMgb2YgMTMgR1BJTy9DYW1lcmEgcGlucworICoKKyAqIEdQSkNPTiBoYXMgMiBiaXRzIGZvciBlYWNoIG9mIHRoZSBpbnB1dCBwaW5zIG9uIHBvcnQgRgorICogICAwMCA9IDAgaW5wdXQsIDEgb3V0cHV0LCAyIENhbWVyYQorICoKKyAqIHB1bGwgdXAgd29ya3MgbGlrZSBhbGwgb3RoZXIgcG9ydHMuCisqLworCisjZGVmaW5lIFMzQzI0NDBfR1BJT19CQU5LSiAgKDQxNikKKworI2RlZmluZSBTM0MyNDQwX0dQSkNPTgkgICAgUzNDMjQxMF9HUElPUkVHKDB4ZDApCisjZGVmaW5lIFMzQzI0NDBfR1BKREFUCSAgICBTM0MyNDEwX0dQSU9SRUcoMHhkNCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEpVUAkgICAgUzNDMjQxMF9HUElPUkVHKDB4ZDgpCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEowICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQ0MF9HUElPX0JBTktKLCAwKQorI2RlZmluZSBTM0MyNDQwX0dQSjBfSU5QICAgICAgICAoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDQwX0dQSjBfT1VUUCAgICAgICAoMHgwMSA8PCAwKQorI2RlZmluZSBTM0MyNDQwX0dQSjBfQ0FNREFUQTAgICAoMHgwMiA8PCAwKQorCisjZGVmaW5lIFMzQzI0NDBfR1BKMSAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0NDBfR1BJT19CQU5LSiwgMSkKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxX0lOUCAgICAgICAgKDB4MDAgPDwgMikKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxX09VVFAgICAgICAgKDB4MDEgPDwgMikKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxX0NBTURBVEExICAgKDB4MDIgPDwgMikKKworI2RlZmluZSBTM0MyNDQwX0dQSjIgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDQwX0dQSU9fQkFOS0osIDIpCisjZGVmaW5lIFMzQzI0NDBfR1BKMl9JTlAgICAgICAgICgweDAwIDw8IDQpCisjZGVmaW5lIFMzQzI0NDBfR1BKMl9PVVRQICAgICAgICgweDAxIDw8IDQpCisjZGVmaW5lIFMzQzI0NDBfR1BKMl9DQU1EQVRBMiAgICgweDAyIDw8IDQpCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEozICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQ0MF9HUElPX0JBTktKLCAzKQorI2RlZmluZSBTM0MyNDQwX0dQSjNfSU5QICAgICAgICAoMHgwMCA8PCA2KQorI2RlZmluZSBTM0MyNDQwX0dQSjNfT1VUUCAgICAgICAoMHgwMSA8PCA2KQorI2RlZmluZSBTM0MyNDQwX0dQSjNfQ0FNREFUQTMgICAoMHgwMiA8PCA2KQorCisjZGVmaW5lIFMzQzI0NDBfR1BKNCAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0NDBfR1BJT19CQU5LSiwgNCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEo0X0lOUCAgICAgICAgKDB4MDAgPDwgOCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEo0X09VVFAgICAgICAgKDB4MDEgPDwgOCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEo0X0NBTURBVEE0ICAgKDB4MDIgPDwgOCkKKworI2RlZmluZSBTM0MyNDQwX0dQSjUgICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDQwX0dQSU9fQkFOS0osIDUpCisjZGVmaW5lIFMzQzI0NDBfR1BKNV9JTlAgICAgICAgICgweDAwIDw8IDEwKQorI2RlZmluZSBTM0MyNDQwX0dQSjVfT1VUUCAgICAgICAoMHgwMSA8PCAxMCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEo1X0NBTURBVEE1ICAgKDB4MDIgPDwgMTApCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEo2ICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQ0MF9HUElPX0JBTktKLCA2KQorI2RlZmluZSBTM0MyNDQwX0dQSjZfSU5QICAgICAgICAoMHgwMCA8PCAxMikKKyNkZWZpbmUgUzNDMjQ0MF9HUEo2X09VVFAgICAgICAgKDB4MDEgPDwgMTIpCisjZGVmaW5lIFMzQzI0NDBfR1BKNl9DQU1EQVRBNiAgICgweDAyIDw8IDEyKQorCisjZGVmaW5lIFMzQzI0NDBfR1BKNyAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0NDBfR1BJT19CQU5LSiwgNykKKyNkZWZpbmUgUzNDMjQ0MF9HUEo3X0lOUCAgICAgICAgKDB4MDAgPDwgMTQpCisjZGVmaW5lIFMzQzI0NDBfR1BKN19PVVRQICAgICAgICgweDAxIDw8IDE0KQorI2RlZmluZSBTM0MyNDQwX0dQSjdfQ0FNREFUQTcgICAoMHgwMiA8PCAxNCkKKworI2RlZmluZSBTM0MyNDQwX0dQSjggICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDQwX0dQSU9fQkFOS0osIDgpCisjZGVmaW5lIFMzQzI0NDBfR1BKOF9JTlAgICAgICAgICgweDAwIDw8IDE2KQorI2RlZmluZSBTM0MyNDQwX0dQSjhfT1VUUCAgICAgICAoMHgwMSA8PCAxNikKKyNkZWZpbmUgUzNDMjQ0MF9HUEo4X0NBTVBDTEsgICAgKDB4MDIgPDwgMTYpCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEo5ICAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQ0MF9HUElPX0JBTktKLCA5KQorI2RlZmluZSBTM0MyNDQwX0dQSjlfSU5QICAgICAgICAoMHgwMCA8PCAxOCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEo5X09VVFAgICAgICAgKDB4MDEgPDwgMTgpCisjZGVmaW5lIFMzQzI0NDBfR1BKOV9DQU1WU1lOQyAgICgweDAyIDw8IDE4KQorCisjZGVmaW5lIFMzQzI0NDBfR1BKMTAgICAgICAgICAgIFMzQzI0MTBfR1BJT05PKFMzQzI0NDBfR1BJT19CQU5LSiwgMTApCisjZGVmaW5lIFMzQzI0NDBfR1BKMTBfSU5QICAgICAgICgweDAwIDw8IDIwKQorI2RlZmluZSBTM0MyNDQwX0dQSjEwX09VVFAgICAgICAoMHgwMSA8PCAyMCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxMF9DQU1IUkVGICAgKDB4MDIgPDwgMjApCisKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxMSAgICAgICAgICAgUzNDMjQxMF9HUElPTk8oUzNDMjQ0MF9HUElPX0JBTktKLCAxMSkKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxMV9JTlAgICAgICAgKDB4MDAgPDwgMjIpCisjZGVmaW5lIFMzQzI0NDBfR1BKMTFfT1VUUCAgICAgICgweDAxIDw8IDIyKQorI2RlZmluZSBTM0MyNDQwX0dQSjExX0NBTUNMS09VVCAoMHgwMiA8PCAyMikKKworI2RlZmluZSBTM0MyNDQwX0dQSjEyICAgICAgICAgICBTM0MyNDEwX0dQSU9OTyhTM0MyNDQwX0dQSU9fQkFOS0osIDEyKQorI2RlZmluZSBTM0MyNDQwX0dQSjEyX0lOUCAgICAgICAoMHgwMCA8PCAyNCkKKyNkZWZpbmUgUzNDMjQ0MF9HUEoxMl9PVVRQICAgICAgKDB4MDEgPDwgMjQpCisjZGVmaW5lIFMzQzI0NDBfR1BKMTJfQ0FNUkVTRVQgICgweDAyIDw8IDI0KQorCisjZW5kaWYJLyogX19BU01fQVJDSF9SRUdTX0dQSU9KX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWlpYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWlpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDMyODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtaWljLmgKQEAgLTAsMCArMSw2MCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWlpYy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IFNpbXRlYyBFbGVjdHJvbmljcyA8bGludXhAc2ltdGVjLmNvLnVrPgorICoJCWh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBTM0MyNDEwIEkyQyBDb250cm9sbGVyCisgKgorICogIENoYW5nZWxvZzoKKyAqCTAzLU9jdC0yMDA0ICBCSkQgIEluaXRpYWwgaW5jbHVkZSBmb3IgTGludXgKKyAqCTA4LU5vdi0yMDA0ICBCSkQgIEFkZGVkIFMzQzI0NDAgZmlsdGVyIHJlZ2lzdGVyCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfUkVHU19JSUNfSAorI2RlZmluZSBfX0FTTV9BUkNIX1JFR1NfSUlDX0ggX19GSUxFX18KKworLyogc2VlIHMzYzI0MTB4IHVzZXIgZ3VpZGUsIHYxLjEsIHNlY3Rpb24gOSAocDQ0NykgZm9yIG1vcmUgaW5mbyAqLworCisjZGVmaW5lIFMzQzI0MTBfSUlDUkVHKHgpICh4KQorCisjZGVmaW5lIFMzQzI0MTBfSUlDQ09OICAgIFMzQzI0MTBfSUlDUkVHKDB4MDApCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVCAgIFMzQzI0MTBfSUlDUkVHKDB4MDQpCisjZGVmaW5lIFMzQzI0MTBfSUlDQUREICAgIFMzQzI0MTBfSUlDUkVHKDB4MDgpCisjZGVmaW5lIFMzQzI0MTBfSUlDRFMgICAgIFMzQzI0MTBfSUlDUkVHKDB4MEMpCisjZGVmaW5lIFMzQzI0NDBfSUlDTEMJICBTM0MyNDEwX0lJQ1JFRygweDEwKQorCisjZGVmaW5lIFMzQzI0MTBfSUlDQ09OX0FDS0VOCQkoMTw8NykKKyNkZWZpbmUgUzNDMjQxMF9JSUNDT05fVFhESVZfMTYJCSgwPDw2KQorI2RlZmluZSBTM0MyNDEwX0lJQ0NPTl9UWERJVl81MTIJKDE8PDYpCisjZGVmaW5lIFMzQzI0MTBfSUlDQ09OX0lSUUVOCQkoMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9JSUNDT05fSVJRUEVORAkJKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfSUlDQ09OX1NDQUxFKHgpCQkoKHgpJjE1KQorI2RlZmluZSBTM0MyNDEwX0lJQ0NPTl9TQ0FMRU1BU0sJKDB4ZikKKworI2RlZmluZSBTM0MyNDEwX0lJQ1NUQVRfTUFTVEVSX1JYCSgyPDw2KQorI2RlZmluZSBTM0MyNDEwX0lJQ1NUQVRfTUFTVEVSX1RYCSgzPDw2KQorI2RlZmluZSBTM0MyNDEwX0lJQ1NUQVRfU0xBVkVfUlgJKDA8PDYpCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9TTEFWRV9UWAkoMTw8NikKKyNkZWZpbmUgUzNDMjQxMF9JSUNTVEFUX01PREVNQVNLCSgzPDw2KQorCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9TVEFSVAkJKDE8PDUpCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9CVVNCVVNZCQkoMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9JSUNTVEFUX1RYUlhFTgkJKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9BUkJJVFIJCSgxPDwzKQorI2RlZmluZSBTM0MyNDEwX0lJQ1NUQVRfQVNTTEFWRQkJKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9BRERSMAkJKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfSUlDU1RBVF9MQVNUQklUCQkoMTw8MCkKKworI2RlZmluZSBTM0MyNDEwX0lJQ0xDX1NEQV9ERUxBWTAJKDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9JSUNMQ19TREFfREVMQVk1CSgxIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfSUlDTENfU0RBX0RFTEFZMTAJKDIgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9JSUNMQ19TREFfREVMQVkxNQkoMyA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0lJQ0xDX1NEQV9ERUxBWV9NQVNLCSgzIDw8IDApCisKKyNkZWZpbmUgUzNDMjQxMF9JSUNMQ19GSUxURVJfT04JCSgxPDwyKQorCisjZW5kaWYgLyogX19BU01fQVJDSF9SRUdTX0lJQ19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtaWlzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtaWlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FlOGUxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1paXMuaApAQCAtMCwwICsxLDcyIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLXMzYzI0MTAvcmVncy1paXMuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBJSVMgcmVnaXN0ZXIgZGVmaW5pdGlvbgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgICAxOS0wNi0yMDAzICAgICBCSkQgICAgIENyZWF0ZWQgZmlsZQorICogICAgMjYtMDYtMjAwMyAgICAgQkpEICAgICBGaW5pc2hlZCBvZmYgZGVmaW5pdGlvbnMgZm9yIHJlZ2lzdGVyIGFkZHJlc3NlcworICogICAgMTItMDMtMjAwNCAgICAgQkpEICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMDctMDMtMjAwNSAgICAgQkpEICAgICBBZGRlZCBGSUZPIHNpemUgZmxhZ3MgYW5kIFMzQzI0NDAgTVBMTAorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX0lJU19ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUkVHU19JSVNfSAorCisjZGVmaW5lIFMzQzI0MTBfSUlTQ09OCSAoMHgwMCkKKworI2RlZmluZSBTM0MyNDQwX0lJU0NPTl9NUExMCSAgKDE8PDkpCisjZGVmaW5lIFMzQzI0MTBfSUlTQ09OX0xSSU5ERVgJICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9JSVNDT05fVFhGSUZPUkRZICAoMTw8NykKKyNkZWZpbmUgUzNDMjQxMF9JSVNDT05fUlhGSUZPUkRZICAoMTw8NikKKyNkZWZpbmUgUzNDMjQxMF9JSVNDT05fVFhETUFFTgkgICgxPDw1KQorI2RlZmluZSBTM0MyNDEwX0lJU0NPTl9SWERNQUVOCSAgKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfSUlTQ09OX1RYSURMRQkgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX0lJU0NPTl9SWElETEUJICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9JSVNDT05fSUlTRU4JICAoMTw8MCkKKworI2RlZmluZSBTM0MyNDEwX0lJU01PRAkgKDB4MDQpCisKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfU0xBVkUJICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfTk9YRkVSCSAgKDA8PDYpCisjZGVmaW5lIFMzQzI0MTBfSUlTTU9EX1JYTU9ERQkgICgxPDw2KQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF9UWE1PREUJICAoMjw8NikKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfVFhSWE1PREUJICAoMzw8NikKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfTFJfTExPVwkgICgwPDw1KQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF9MUl9STE9XCSAgKDE8PDUpCisjZGVmaW5lIFMzQzI0MTBfSUlTTU9EX0lJUwkgICgwPDw0KQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF9NU0IJICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfOEJJVAkgICgwPDwzKQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF8xNkJJVAkgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF9CSVRNQVNLCSAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfSUlTTU9EXzI1NkZTCSAgKDA8PDEpCisjZGVmaW5lIFMzQzI0MTBfSUlTTU9EXzM4NEZTCSAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfSUlTTU9EXzE2RlMJICAoMDw8MCkKKyNkZWZpbmUgUzNDMjQxMF9JSVNNT0RfMzJGUwkgICgxPDwwKQorI2RlZmluZSBTM0MyNDEwX0lJU01PRF80OEZTCSAgKDI8PDApCisKKyNkZWZpbmUgUzNDMjQxMF9JSVNQU1IJCSgweDA4KQorI2RlZmluZSBTM0MyNDEwX0lJU1BTUl9JTlRNQVNLCSgzMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9JSVNQU1JfSU5UU0hJRlQJKDUpCisjZGVmaW5lIFMzQzI0MTBfSUlTUFNSX0VYVE1BU0sJKDMxPDwwKQorI2RlZmluZSBTM0MyNDEwX0lJU1BTUl9FWFRTSEZJVAkoMCkKKworI2RlZmluZSBTM0MyNDEwX0lJU0ZDT04gICgweDBjKQorCisjZGVmaW5lIFMzQzI0MTBfSUlTRkNPTl9UWERNQQkgICgxPDwxNSkKKyNkZWZpbmUgUzNDMjQxMF9JSVNGQ09OX1JYRE1BCSAgKDE8PDE0KQorI2RlZmluZSBTM0MyNDEwX0lJU0ZDT05fVFhFTkFCTEUgICgxPDwxMykKKyNkZWZpbmUgUzNDMjQxMF9JSVNGQ09OX1JYRU5BQkxFICAoMTw8MTIpCisjZGVmaW5lIFMzQzI0MTBfSUlTRkNPTl9UWE1BU0sJICAoMHgzZiA8PCA2KQorI2RlZmluZSBTM0MyNDEwX0lJU0ZDT05fVFhTSElGVAkgICg2KQorI2RlZmluZSBTM0MyNDEwX0lJU0ZDT05fUlhNQVNLCSAgKDB4M2YpCisjZGVmaW5lIFMzQzI0MTBfSUlTRkNPTl9SWFNISUZUCSAgKDApCisKKyNkZWZpbmUgUzNDMjQxMF9JSVNGSUZPICAoMHgxMCkKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1JFR1NfSUlTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1pcnEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI3MjkyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWlycS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtL2FyY2gtczNjMjQxMC9yZWdzLWlycS5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcyA8bGludXhAc2ltdGVjLmNvLnVrPgorICoJCSAgICAgIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgICAxOS0wNi0yMDAzICAgICBCSkQgICAgIENyZWF0ZWQgZmlsZQorICogICAgMTItMDMtMjAwNCAgICAgQkpEICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMTAtMDMtMjAwNSAgICAgTENWUiAgICBDaGFuZ2VkIFMzQzI0MTBfVkEgdG8gUzNDMjRYWF9WQQorICovCisKKworI2lmbmRlZiBfX19BU01fQVJDSF9SRUdTX0lSUV9ICisjZGVmaW5lIF9fX0FTTV9BUkNIX1JFR1NfSVJRX0ggIiRJZDogaXJxLmgsdiAxLjMgMjAwMy8wMy8yNSAyMToyOTowNiBiZW4gRXhwICQiCisKKy8qIGludGVycnVwdCBjb250cm9sbGVyICovCisKKyNkZWZpbmUgUzNDMjQxMF9JUlFSRUcoeCkgICAoKHgpICsgUzNDMjRYWF9WQV9JUlEpCisjZGVmaW5lIFMzQzI0MTBfRUlOVFJFRyh4KSAgKCh4KSArIFMzQzI0WFhfVkFfR1BJTykKKworI2RlZmluZSBTM0MyNDEwX1NSQ1BORAkgICAgICAgUzNDMjQxMF9JUlFSRUcoMHgwMDApCisjZGVmaW5lIFMzQzI0MTBfSU5UTU9ECSAgICAgICBTM0MyNDEwX0lSUVJFRygweDAwNCkKKyNkZWZpbmUgUzNDMjQxMF9JTlRNU0sJICAgICAgIFMzQzI0MTBfSVJRUkVHKDB4MDA4KQorI2RlZmluZSBTM0MyNDEwX1BSSU9SSVRZICAgICAgIFMzQzI0MTBfSVJRUkVHKDB4MDBDKQorI2RlZmluZSBTM0MyNDEwX0lOVFBORAkgICAgICAgUzNDMjQxMF9JUlFSRUcoMHgwMTApCisjZGVmaW5lIFMzQzI0MTBfSU5UT0ZGU0VUICAgICAgUzNDMjQxMF9JUlFSRUcoMHgwMTQpCisjZGVmaW5lIFMzQzI0MTBfU1VCU1JDUE5EICAgICAgUzNDMjQxMF9JUlFSRUcoMHgwMTgpCisjZGVmaW5lIFMzQzI0MTBfSU5UU1VCTVNLICAgICAgUzNDMjQxMF9JUlFSRUcoMHgwMUMpCisKKy8qIG1hc2s6IDA9ZW5hYmxlLCAxPWRpc2FibGUKKyAqIDEgYml0IEVJTlQsIDQ9RUlOVDQsIDIzPUVJTlQyMworICogRUlOVDAsMSwyLDMgYXJlIG5vdCBoYW5kbGVkIGhlcmUuCisqLworCisjZGVmaW5lIFMzQzI0MTBfRUlOVE1BU0sgICAgICAgUzNDMjQxMF9FSU5UUkVHKDB4MEE0KQorI2RlZmluZSBTM0MyNDEwX0VJTlRQRU5EICAgICAgIFMzQzI0MTBfRUlOVFJFRygwWDBBOCkKKworI2VuZGlmIC8qIF9fX0FTTV9BUkNIX1JFR1NfSVJRX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1sY2QuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1sY2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjg4MmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWxjZC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLXMzYzI0MTAvcmVncy1sY2QuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICoKKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAgMTItMDYtMjAwMyAgICAgQkpEICAgICBDcmVhdGVkIGZpbGUKKyAqICAgIDI2LTA2LTIwMDMgICAgIEJKRCAgICAgVXBkYXRlZCBMQ0RDT04gcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqICAgIDEyLTAzLTIwMDQgICAgIEJKRCAgICAgVXBkYXRlZCBpbmNsdWRlIHByb3RlY3Rpb24KKyAqICAgIDEwLTAzLTIwMDUgICAgIExDVlIgICAgQ2hhbmdlZCBTM0MyNDEwX1ZBIHRvIFMzQzI0WFhfVkEKKyovCisKKworI2lmbmRlZiBfX19BU01fQVJDSF9SRUdTX0xDRF9ICisjZGVmaW5lIF9fX0FTTV9BUkNIX1JFR1NfTENEX0ggIiRJZDogbGNkLmgsdiAxLjMgMjAwMy8wNi8yNiAxMzoyNTowNiBiZW4gRXhwICQiCisKKyNkZWZpbmUgUzNDMjQxMF9MQ0RSRUcoeCkgKCh4KSArIFMzQzI0WFhfVkFfTENEKQorCisvKiBMQ0QgY29udHJvbCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xCSAgICBTM0MyNDEwX0xDRFJFRygweDAwKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjIJICAgIFMzQzI0MTBfTENEUkVHKDB4MDQpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMwkgICAgUzNDMjQxMF9MQ0RSRUcoMHgwOCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT040CSAgICBTM0MyNDEwX0xDRFJFRygweDBDKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjUJICAgIFMzQzI0MTBfTENEUkVHKDB4MTApCisKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX0NMS1ZBTCh4KSAgKCh4KSA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfTU1PREUJICAgKDE8PDcpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMV9EU0NBTjQJICAgKDA8PDUpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMV9TVE40CSAgICgxPDw1KQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfU1ROOAkgICAoMjw8NSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX1RGVAkgICAoMzw8NSkKKworI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfU1ROMUJQUAkgICAoMDw8MSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX1NUTjJHUkVZICAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMV9TVE40R1JFWSAgICgyPDwxKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfU1ROOEJQUAkgICAoMzw8MSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX1NUTjEyQlBQICAgKDQ8PDEpCisKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX1RGVDFCUFAJICAgKDg8PDEpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMV9URlQyQlBQCSAgICg5PDwxKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfVEZUNEJQUAkgICAoMTA8PDEpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMV9URlQ4QlBQCSAgICgxMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX1RGVDE2QlBQICAgKDEyPDwxKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjFfVEZUMjRCUFAgICAoMTM8PDEpCisKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04xX0VOVklECSAgICgxKQorCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OMl9WQlBEKHgpCSAgICAoKHgpIDw8IDI0KQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjJfTElORVZBTCh4KSAgKCh4KSA8PCAxNCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04yX1ZGUEQoeCkJICAgICgoeCkgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04yX1ZTUFcoeCkJICAgICgoeCkgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX0xDRENPTjNfSEJQRCh4KQkgICAgKCh4KSA8PCAxOSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT04zX1dETFkoeCkJICAgICgoeCkgPDwgMTkpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OM19IT1pWQUwoeCkgICAoKHgpIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OM19IRlBEKHgpCSAgICAoKHgpIDw8IDApCisjZGVmaW5lIFMzQzI0MTBfTENEQ09OM19MSU5FQkxBTksoeCkoKHgpIDw8IDApCisKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT040X01WQUwoeCkJICAgICgoeCkgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT040X0hTUFcoeCkJICAgICgoeCkgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT040X1dMSCh4KQkgICAgKCh4KSA8PCAwKQorCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9CUFAyNEJMCSAgICAoMTw8MTIpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9GUk01NjUJICAgICgxPDwxMSkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT041X0lOVlZDTEsJICAgICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT041X0lOVlZMSU5FICAgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjVfSU5WVkZSQU1FICAgKDE8PDgpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9JTlZWRAkgICAgKDE8PDcpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9JTlZWREVOCSAgICAoMTw8NikKKyNkZWZpbmUgUzNDMjQxMF9MQ0RDT041X0lOVlBXUkVOICAgICgxPDw1KQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjVfSU5WTEVORAkgICAgKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9QV1JFTgkgICAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9FTkxFTkQJICAgICgxPDwyKQorI2RlZmluZSBTM0MyNDEwX0xDRENPTjVfQlNXUAkgICAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfTENEQ09ONV9IV1NXUAkgICAgKDE8PDApCisKKy8qIGZyYW1lYnVmZmVyIHN0YXJ0IGFkZHJlc3NlZCAqLworI2RlZmluZSBTM0MyNDEwX0xDRFNBRERSMSAgIFMzQzI0MTBfTENEUkVHKDB4MTQpCisjZGVmaW5lIFMzQzI0MTBfTENEU0FERFIyICAgUzNDMjQxMF9MQ0RSRUcoMHgxOCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RTQUREUjMgICBTM0MyNDEwX0xDRFJFRygweDFDKQorCisjZGVmaW5lIFMzQzI0MTBfTENEQkFOSyh4KQkoKHgpIDw8IDIxKQorI2RlZmluZSBTM0MyNDEwX0xDREJBU0VVKHgpCSh4KQorCisjZGVmaW5lIFMzQzI0MTBfT0ZGU0laRSh4KQkoKHgpIDw8IDExKQorI2RlZmluZSBTM0MyNDEwX1BBR0VXSURUSCh4KQkoeCkKKworLyogY29sb3VyIGxvb2t1cCBhbmQgbWlzY2VsbGFuZW91cyBjb250cm9scyAqLworCisjZGVmaW5lIFMzQzI0MTBfUkVETFVUCSAgIFMzQzI0MTBfTENEUkVHKDB4MjApCisjZGVmaW5lIFMzQzI0MTBfR1JFRU5MVVQgICBTM0MyNDEwX0xDRFJFRygweDI0KQorI2RlZmluZSBTM0MyNDEwX0JMVUVMVVQJICAgUzNDMjQxMF9MQ0RSRUcoMHgyOCkKKworI2RlZmluZSBTM0MyNDEwX0RJVEhNT0RFICAgUzNDMjQxMF9MQ0RSRUcoMHg0QykKKyNkZWZpbmUgUzNDMjQxMF9UUEFMCSAgIFMzQzI0MTBfTENEUkVHKDB4NTApCisKKy8qIGludGVycnVwdCBpbmZvICovCisjZGVmaW5lIFMzQzI0MTBfTENESU5UUE5EICBTM0MyNDEwX0xDRFJFRygweDU0KQorI2RlZmluZSBTM0MyNDEwX0xDRFNSQ1BORCAgUzNDMjQxMF9MQ0RSRUcoMHg1OCkKKyNkZWZpbmUgUzNDMjQxMF9MQ0RJTlRNU0sgIFMzQzI0MTBfTENEUkVHKDB4NUMpCisjZGVmaW5lIFMzQzI0MTBfTFBDU0VMCSAgIFMzQzI0MTBfTENEUkVHKDB4NjApCisKKyNkZWZpbmUgUzNDMjQxMF9URlRQQUwoeCkgIFMzQzI0MTBfTENEUkVHKCgweDQwMCArICh4KSo0KSkKKworI2VuZGlmIC8qIF9fX0FTTV9BUkNIX1JFR1NfTENEX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1tZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1tZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTEzMjhhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLW1lbS5oCkBAIC0wLDAgKzEsMjEyIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtbWVtLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzIDxsaW51eEBzaW10ZWMuY28udWs+CisgKgkJaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvU1dMSU5VWC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFMzQzI0MTAgTWVtb3J5IENvbnRyb2wgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKiAgQ2hhbmdlbG9nOgorICoJMjktU2VwLTIwMDQgIEJKRCAgSW5pdGlhbCBpbmNsdWRlIGZvciBMaW51eAorICogICAgICAxMC1NYXItMjAwNSAgTENWUiBDaGFuZ2VkIFMzQzI0MTBfVkEgdG8gUzNDMjRYWF9WQQorICoKKyovCisKKyNpZm5kZWYgX19BU01fQVJNX01FTVJFR1NfSAorI2RlZmluZSBfX0FTTV9BUk1fTUVNUkVHU19IICIkSWQ6IHJlZ3MuaCx2IDEuOCAyMDAzLzA1LzAxIDE1OjU1OjQxIGJlbiBFeHAgJCIKKworI2lmbmRlZiBTM0MyNDEwX01FTVJFRworI2RlZmluZSBTM0MyNDEwX01FTVJFRyh4KSAoUzNDMjRYWF9WQV9NRU1DVFJMICsgKHgpKQorI2VuZGlmCisKKy8qIGJ1cyB3aWR0aCwgYW5kIHdhaXQgc3RhdGUgY29udHJvbCAqLworI2RlZmluZSBTM0MyNDEwX0JXU0NPTgkJCVMzQzI0MTBfTUVNUkVHKDB4MDAwMCkKKworLyogYmFuayB6ZXJvIGNvbmZpZyAtIG5vdGUsIHBpbnN0cmFwcGVkIGZyb20gT00gcGlucyEgKi8KKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFcwXzE2CQkoMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFcwXzMyCQkoMjw8MSkKKworLyogYmFuayBvbmUgY29uZmlncyAqLworI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzFfOAkJKDA8PDQpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXMV8xNgkJKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXMV8zMgkJKDI8PDQpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1dTMQkJKDE8PDYpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1NUMQkJKDE8PDcpCisKKy8qIGJhbmsgMiBjb25maWd1cmF0aW9ucyAqLworI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzJfOAkJKDA8PDgpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXMl8xNgkJKDE8PDgpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXMl8zMgkJKDI8PDgpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1dTMgkJKDE8PDEwKQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9TVDIJCSgxPDwxMSkKKworLyogYmFuayAzIGNvbmZpZ3VyYXRpb25zICovCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXM184CQkoMDw8MTIpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXM18xNgkJKDE8PDEyKQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzNfMzIJCSgyPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fV1MzCQkoMTw8MTQpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1NUMwkJKDE8PDE1KQorCisvKiBiYW5rIDQgY29uZmlndXJhdGlvbnMgKi8KKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFc0XzgJCSgwPDwxNikKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFc0XzE2CQkoMTw8MTYpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXNF8zMgkJKDI8PDE2KQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9XUzQJCSgxPDwxOCkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fU1Q0CQkoMTw8MTkpCisKKy8qIGJhbmsgNSBjb25maWd1cmF0aW9ucyAqLworI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzVfOAkJKDA8PDIwKQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzVfMTYJCSgxPDwyMCkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFc1XzMyCQkoMjw8MjApCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1dTNQkJKDE8PDIyKQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9TVDUJCSgxPDwyMykKKworLyogYmFuayA2IGNvbmZpZ3VyYXRpb25zICovCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXNl84CQkoMDw8MjQpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXNl8xNgkJKDE8PDI0KQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9EVzZfMzIJCSgyPDwyNCkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fV1M2CQkoMTw8MjYpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX1NUNgkJKDE8PDI3KQorCisvKiBiYW5rIDcgY29uZmlndXJhdGlvbnMgKi8KKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFc3XzgJCSgwPDwyOCkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fRFc3XzE2CQkoMTw8MjgpCisjZGVmaW5lIFMzQzI0MTBfQldTQ09OX0RXN18zMgkJKDI8PDI4KQorI2RlZmluZSBTM0MyNDEwX0JXU0NPTl9XUzcJCSgxPDwzMCkKKyNkZWZpbmUgUzNDMjQxMF9CV1NDT05fU1Q3CQkoMTw8MzEpCisKKy8qIG1lbW9yeSBzZXQgKHJvbSwgcmFtKSAqLworI2RlZmluZSBTM0MyNDEwX0JBTktDT04wCQlTM0MyNDEwX01FTVJFRygweDAwMDQpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTjEJCVMzQzI0MTBfTUVNUkVHKDB4MDAwOCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OMgkJUzNDMjQxMF9NRU1SRUcoMHgwMDBDKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT04zCQlTM0MyNDEwX01FTVJFRygweDAwMTApCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTjQJCVMzQzI0MTBfTUVNUkVHKDB4MDAxNCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09ONQkJUzNDMjQxMF9NRU1SRUcoMHgwMDE4KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT042CQlTM0MyNDEwX01FTVJFRygweDAwMUMpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTjcJCVMzQzI0MTBfTUVNUkVHKDB4MDAyMCkKKworLyogYmFuayBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAqLworCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9QTUNub3JtCQkoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1BNQzQJCSgweDAxKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fUE1DOAkJKDB4MDIpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9QTUMxNgkJKDB4MDMpCisKKy8qIGJhbmsgY29uZmlndXJhdGlvbnMgZm9yIGJhbmtzIDAuLjcsIG5vdGUgYmFua3MKKyAqIDYgYW5kIDcgaGF2ZSBkaWZmZXJudCBjb25maWd1cmF0aW9ucyBkZXBlbmRpbmcgb24KKyAqIHRoZSBtZW1vcnkgdHlwZSBiaXRzICovCisKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY3AyCQkoMHgwIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UYWNwMwkJKDB4MSA8PCAyKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGFjcDQJCSgweDIgPDwgMikKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY3A2CQkoMHgzIDw8IDIpCisKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RjYWgwCQkoMHgwIDw8IDQpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UY2FoMQkJKDB4MSA8PCA0KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGNhaDIJCSgweDIgPDwgNCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RjYWg0CQkoMHgzIDw8IDQpCisKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1Rjb2gwCQkoMHgwIDw8IDYpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UY29oMQkJKDB4MSA8PCA2KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGNvaDIJCSgweDIgPDwgNikKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1Rjb2g0CQkoMHgzIDw8IDYpCisKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY2MxCQkoMHgwIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UYWNjMgkJKDB4MSA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGFjYzMJCSgweDIgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY2M0CQkoMHgzIDw8IDgpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UYWNjNgkJKDB4NCA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGFjYzgJCSgweDUgPDwgOCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY2MxMAkJKDB4NiA8PCA4KQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGFjYzE0CQkoMHg3IDw8IDgpCisKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1Rjb3MwCQkoMHgwIDw8IDExKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGNvczEJCSgweDEgPDwgMTEpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UY29zMgkJKDB4MiA8PCAxMSkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1Rjb3M0CQkoMHgzIDw8IDExKQorCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UYWNzMAkJKDB4MCA8PCAxMykKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY3MxCQkoMHgxIDw8IDEzKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVGFjczIJCSgweDIgPDwgMTMpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UYWNzNAkJKDB4MyA8PCAxMykKKworI2RlZmluZSBTM0MyNDEwX0JBTktDT05fU1JBTQkJKDB4MCA8PCAxNSkKKyNkZWZpbmUgUzNDMjQwMF9CQU5LQ09OX0VET0RSQU0JCSgweDIgPDwgMTUpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9TRFJBTQkJKDB4MyA8PCAxNSkKKworLyogbmV4dCBiaXRzIG9ubHkgZm9yIEVETyBEUkFNIGluIDYsNyAqLworI2RlZmluZSBTM0MyNDAwX0JBTktDT05fRURPX1RyZGMxICAgICAgKDB4MDAgPDwgNCkKKyNkZWZpbmUgUzNDMjQwMF9CQU5LQ09OX0VET19UcmRjMiAgICAgICgweDAxIDw8IDQpCisjZGVmaW5lIFMzQzI0MDBfQkFOS0NPTl9FRE9fVHJkYzMgICAgICAoMHgwMiA8PCA0KQorI2RlZmluZSBTM0MyNDAwX0JBTktDT05fRURPX1RyZGM0ICAgICAgKDB4MDMgPDwgNCkKKworLyogQ0FTIHB1bHNlIHdpZHRoICovCisjZGVmaW5lIFMzQzI0MDBfQkFOS0NPTl9FRE9fUFVMU0UxICAgICAoMHgwMCA8PCAzKQorI2RlZmluZSBTM0MyNDAwX0JBTktDT05fRURPX1BVTFNFMiAgICAgKDB4MDEgPDwgMykKKworLyogQ0FTIHByZS1jaGFyZ2UgKi8KKyNkZWZpbmUgUzNDMjQwMF9CQU5LQ09OX0VET19UQ1AxICAgICAgICgweDAwIDw8IDIpCisjZGVmaW5lIFMzQzI0MDBfQkFOS0NPTl9FRE9fVENQMiAgICAgICAoMHgwMSA8PCAyKQorCisvKiBjb250cm9sIGNvbHVtbiBhZGRyZXNzIHNlbGVjdCAqLworI2RlZmluZSBTM0MyNDAwX0JBTktDT05fRURPX1NDQU5iOCAgICAgKDB4MDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQwMF9CQU5LQ09OX0VET19TQ0FOYjkgICAgICgweDAxIDw8IDApCisjZGVmaW5lIFMzQzI0MDBfQkFOS0NPTl9FRE9fU0NBTmIxMCAgICAoMHgwMiA8PCAwKQorI2RlZmluZSBTM0MyNDAwX0JBTktDT05fRURPX1NDQU5iMTEgICAgKDB4MDMgPDwgMCkKKworLyogbmV4dCBiaXRzIG9ubHkgZm9yIFNEUkFNIGluIDYsNyAqLworI2RlZmluZSBTM0MyNDEwX0JBTktDT05fVHJkYzIJCSgweDAwIDw8IDIpCisjZGVmaW5lIFMzQzI0MTBfQkFOS0NPTl9UcmRjMwkJKDB4MDEgPDwgMikKKyNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RyZGM0CQkoMHgwMiA8PCAyKQorCisvKiBjb250cm9sIGNvbHVtbiBhZGRyZXNzIHNlbGVjdCAqLworI2RlZmluZSBTM0MyNDEwX0JBTktDT05fU0NBTmI4CQkoMHgwMCA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fU0NBTmI5CQkoMHgwMSA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0JBTktDT05fU0NBTmIxMAkJKDB4MDIgPDwgMCkKKworI2RlZmluZSBTM0MyNDEwX1JFRlJFU0gJCQlTM0MyNDEwX01FTVJFRygweDAwMjQpCisjZGVmaW5lIFMzQzI0MTBfQkFOS1NJWkUJCVMzQzI0MTBfTUVNUkVHKDB4MDAyOCkKKyNkZWZpbmUgUzNDMjQxMF9NUlNSQjYJCQlTM0MyNDEwX01FTVJFRygweDAwMkMpCisjZGVmaW5lIFMzQzI0MTBfTVJTUkI3CQkJUzNDMjQxMF9NRU1SRUcoMHgwMDMwKQorCisvKiByZWZyZXNoIGNvbnRyb2wgKi8KKworI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfUkVGRU4JCSgxPDwyMykKKyNkZWZpbmUgUzNDMjQxMF9SRUZSRVNIX1NFTEYJCSgxPDwyMikKKyNkZWZpbmUgUzNDMjQxMF9SRUZSRVNIX1JFRkNPVU5URVIJKCgxPDwxMSktMSkKKworI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFJQX01BU0sJKDM8PDIwKQorI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFJQXzJjbGsJKDA8PDIwKQorI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFJQXzNjbGsJKDE8PDIwKQorI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFJQXzRjbGsJKDI8PDIwKQorCisjZGVmaW5lIFMzQzI0MTBfUkVGUkVTSF9UU1JDX01BU0sJKDM8PDE4KQorI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFNSQ180Y2xrCSgwPDwxOCkKKyNkZWZpbmUgUzNDMjQxMF9SRUZSRVNIX1RTUkNfNWNsawkoMTw8MTgpCisjZGVmaW5lIFMzQzI0MTBfUkVGUkVTSF9UU1JDXzZjbGsJKDI8PDE4KQorI2RlZmluZSBTM0MyNDEwX1JFRlJFU0hfVFNSQ183Y2xrCSgzPDwxOCkKKworCisvKiBtb2RlIHNlbGVjdCByZWdpc3RlcihzKSAqLworCisjZGVmaW5lICBTM0MyNDEwX01SU1JCX0NMMQkJKDB4MDAgPDwgNCkKKyNkZWZpbmUgIFMzQzI0MTBfTVJTUkJfQ0wyCQkoMHgwMiA8PCA0KQorI2RlZmluZSAgUzNDMjQxMF9NUlNSQl9DTDMJCSgweDAzIDw8IDQpCisKKy8qIGJhbmsgc2l6ZSByZWdpc3RlciAqLworI2RlZmluZSBTM0MyNDEwX0JBTktTSVpFXzEyOE0JCSgweDIgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV82NE0JCSgweDEgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV8zMk0JCSgweDAgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV8xNk0JCSgweDcgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV84TQkJKDB4NiA8PCAwKQorI2RlZmluZSBTM0MyNDEwX0JBTktTSVpFXzRNCQkoMHg1IDw8IDApCisjZGVmaW5lIFMzQzI0MTBfQkFOS1NJWkVfMk0JCSgweDQgPDwgMCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV9NQVNLCQkoMHg3IDw8IDApCisjZGVmaW5lIFMzQzI0MTBfQkFOS1NJWkVfU0NMS19FTgkoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9CQU5LU0laRV9TQ0tFX0VOCSgxPDw1KQorI2RlZmluZSBTM0MyNDEwX0JBTktTSVpFX0JVUlNUCQkoMTw8NykKKworI2VuZGlmIC8qIF9fQVNNX0FSTV9NRU1SRUdTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1uYW5kLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtbmFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NDNhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtbmFuZC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1uYW5kLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzIDxsaW51eEBzaW10ZWMuY28udWs+CisgKgkJICAgICAgaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvU1dMSU5VWC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFMzQzI0MTAgY2xvY2sgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAgMTgtQXVnLTIwMDQgICAgQkpEICAgICBDb3BpZWQgZmlsZSBmcm9tIDIuNCBhbmQgdXBkYXRlZAorKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19OQU5ECisjZGVmaW5lIF9fQVNNX0FSTV9SRUdTX05BTkQgIiRJZDogbmFuZC5oLHYgMS4zIDIwMDMvMTIvMDkgMTE6MzY6MjkgYmVuIEV4cCAkIgorCisKKyNkZWZpbmUgUzNDMjQxMF9ORlJFRyh4KSAoeCkKKworI2RlZmluZSBTM0MyNDEwX05GQ09ORiAgUzNDMjQxMF9ORlJFRygweDAwKQorI2RlZmluZSBTM0MyNDEwX05GQ01EICAgUzNDMjQxMF9ORlJFRygweDA0KQorI2RlZmluZSBTM0MyNDEwX05GQUREUiAgUzNDMjQxMF9ORlJFRygweDA4KQorI2RlZmluZSBTM0MyNDEwX05GREFUQSAgUzNDMjQxMF9ORlJFRygweDBDKQorI2RlZmluZSBTM0MyNDEwX05GU1RBVCAgUzNDMjQxMF9ORlJFRygweDEwKQorI2RlZmluZSBTM0MyNDEwX05GRUNDICAgUzNDMjQxMF9ORlJFRygweDE0KQorCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GX0VOICAgICAgICAgICgxPDwxNSkKKyNkZWZpbmUgUzNDMjQxMF9ORkNPTkZfNTEyQllURSAgICAgKDE8PDE0KQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl80U1RFUCAgICAgICAoMTw8MTMpCisjZGVmaW5lIFMzQzI0MTBfTkZDT05GX0lOSVRFQ0MgICAgICgxPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9ORkNPTkZfbkZDRSAgICAgICAgKDE8PDExKQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl9UQUNMUyh4KSAgICAoKHgpPDw4KQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl9UV1JQSDAoeCkgICAoKHgpPDw0KQorI2RlZmluZSBTM0MyNDEwX05GQ09ORl9UV1JQSDEoeCkgICAoKHgpPDwwKQorCisjZGVmaW5lIFMzQzI0MTBfTkZTVEFUX0JVU1kgICAgICAgICgxPDwwKQorCisvKiB0aGluayBFQ0MgY2FuIG9ubHkgYmUgOGJpdCByZWFkPyAqLworCisjZW5kaWYgLyogX19BU01fQVJNX1JFR1NfTkFORCAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtcnRjLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtcnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4OTgzZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1ydGMuaApAQCAtMCwwICsxLDY2IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLXMzYzI0MTAvcmVncy1ydGMuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBJbnRlcm5hbCBSVEMgcmVnaXN0ZXIgZGVmaW5pdGlvbgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgICAxOS0wNi0yMDAzICAgICBCSkQgICAgIENyZWF0ZWQgZmlsZQorICogICAgMTItMDMtMjAwNCAgICAgQkpEICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMTUtMDEtMjAwNSAgICAgTENWUiAgICBDaGFuZ2VkIFMzQzI0MTBfVkEgdG8gUzNDMjRYWF9WQSAoczNjMjQwMCBzdXBwb3J0KQorKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1JFR1NfUlRDX0gKKyNkZWZpbmUgX19BU01fQVJDSF9SRUdTX1JUQ19IIF9fRklMRV9fCisKKyNkZWZpbmUgUzNDMjQxMF9SVENSRUcoeCkgKCh4KSArIFMzQzI0WFhfVkFfUlRDKQorCisjZGVmaW5lIFMzQzI0MTBfUlRDQ09OCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4NDApCisjZGVmaW5lIFMzQzI0MTBfUlRDQ09OX1JUQ0VOICAoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9SVENDT05fQ0xLU0VMICgxPDwxKQorI2RlZmluZSBTM0MyNDEwX1JUQ0NPTl9DTlRTRUwgKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfUlRDQ09OX0NMS1JTVCAoMTw8MykKKworI2RlZmluZSBTM0MyNDEwX1RJQ05UCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4NDQpCisjZGVmaW5lIFMzQzI0MTBfVElDTlRfRU5BQkxFICAoMTw8NykKKworI2RlZmluZSBTM0MyNDEwX1JUQ0FMTQkgICAgICBTM0MyNDEwX1JUQ1JFRygweDUwKQorI2RlZmluZSBTM0MyNDEwX1JUQ0FMTV9BTE1FTiAgKDE8PDYpCisjZGVmaW5lIFMzQzI0MTBfUlRDQUxNX1lFQVJFTiAoMTw8NSkKKyNkZWZpbmUgUzNDMjQxMF9SVENBTE1fTU9ORU4gICgxPDw0KQorI2RlZmluZSBTM0MyNDEwX1JUQ0FMTV9EQVlFTiAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfUlRDQUxNX0hPVVJFTiAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9SVENBTE1fTUlORU4gICgxPDwxKQorI2RlZmluZSBTM0MyNDEwX1JUQ0FMTV9TRUNFTiAgKDE8PDApCisKKyNkZWZpbmUgUzNDMjQxMF9SVENBTE1fQUxMIFwKKyAgUzNDMjQxMF9SVENBTE1fQUxNRU4gfCBTM0MyNDEwX1JUQ0FMTV9ZRUFSRU4gfCBTM0MyNDEwX1JUQ0FMTV9NT05FTiB8XAorICBTM0MyNDEwX1JUQ0FMTV9EQVlFTiB8IFMzQzI0MTBfUlRDQUxNX0hPVVJFTiB8IFMzQzI0MTBfUlRDQUxNX01JTkVOIHxcCisgIFMzQzI0MTBfUlRDQUxNX1NFQ0VOCisKKworI2RlZmluZSBTM0MyNDEwX0FMTVNFQwkgICAgICBTM0MyNDEwX1JUQ1JFRygweDU0KQorI2RlZmluZSBTM0MyNDEwX0FMTU1JTgkgICAgICBTM0MyNDEwX1JUQ1JFRygweDU4KQorI2RlZmluZSBTM0MyNDEwX0FMTUhPVVIJICAgICAgUzNDMjQxMF9SVENSRUcoMHg1YykKKworI2RlZmluZSBTM0MyNDEwX0FMTURBVEUJICAgICAgUzNDMjQxMF9SVENSRUcoMHg2MCkKKyNkZWZpbmUgUzNDMjQxMF9BTE1NT04JICAgICAgUzNDMjQxMF9SVENSRUcoMHg2NCkKKyNkZWZpbmUgUzNDMjQxMF9BTE1ZRUFSCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4NjgpCisKKyNkZWZpbmUgUzNDMjQxMF9SVENSU1QJICAgICAgUzNDMjQxMF9SVENSRUcoMHg2YykKKworI2RlZmluZSBTM0MyNDEwX1JUQ1NFQwkgICAgICBTM0MyNDEwX1JUQ1JFRygweDcwKQorI2RlZmluZSBTM0MyNDEwX1JUQ01JTgkgICAgICBTM0MyNDEwX1JUQ1JFRygweDc0KQorI2RlZmluZSBTM0MyNDEwX1JUQ0hPVVIJICAgICAgUzNDMjQxMF9SVENSRUcoMHg3OCkKKyNkZWZpbmUgUzNDMjQxMF9SVENEQVRFCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4N2MpCisjZGVmaW5lIFMzQzI0MTBfUlRDREFZCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4ODApCisjZGVmaW5lIFMzQzI0MTBfUlRDTU9OCSAgICAgIFMzQzI0MTBfUlRDUkVHKDB4ODQpCisjZGVmaW5lIFMzQzI0MTBfUlRDWUVBUgkgICAgICBTM0MyNDEwX1JUQ1JFRygweDg4KQorCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1JFR1NfUlRDX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1zZGkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1zZGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTlhMjZmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXNkaS5oCkBAIC0wLDAgKzEsMTE4IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS9hcmNoLXMzYzI0MTAvcmVncy1zZGkuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBNTUMvU0RJTyByZWdpc3RlciBkZWZpbml0aW9ucworICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgICAxOC1BdWctMjAwNCBCZW4gRG9va3MgICAgICBDcmVhdGVkIGluaXRpYWwgZmlsZQorICogICAgMjktTm92LTIwMDQgS29lbiBNYXJ0ZW5zICAgQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMsIGZpeGVkIGR1cGxpY2F0ZXMKKyAqICAgIDI5LU5vdi0yMDA0IEJlbiBEb29rcwkgVXBkYXRlZCBLb2VuJ3MgcGF0Y2gKKyovCisKKyNpZm5kZWYgX19BU01fQVJNX1JFR1NfU0RJCisjZGVmaW5lIF9fQVNNX0FSTV9SRUdTX1NESSAicmVncy1zZGkuaCIKKworI2RlZmluZSBTM0MyNDEwX1NESUNPTiAgICAgICAgICAgICAgICAoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9TRElQUkUgICAgICAgICAgICAgICAgKDB4MDQpCisjZGVmaW5lIFMzQzI0MTBfU0RJQ01EQVJHICAgICAgICAgICAgICgweDA4KQorI2RlZmluZSBTM0MyNDEwX1NESUNNRENPTiAgICAgICAgICAgICAoMHgwQykKKyNkZWZpbmUgUzNDMjQxMF9TRElDTURTVEFUICAgICAgICAgICAgKDB4MTApCisjZGVmaW5lIFMzQzI0MTBfU0RJUlNQMCAgICAgICAgICAgICAgICgweDE0KQorI2RlZmluZSBTM0MyNDEwX1NESVJTUDEgICAgICAgICAgICAgICAoMHgxOCkKKyNkZWZpbmUgUzNDMjQxMF9TRElSU1AyICAgICAgICAgICAgICAgKDB4MUMpCisjZGVmaW5lIFMzQzI0MTBfU0RJUlNQMyAgICAgICAgICAgICAgICgweDIwKQorI2RlZmluZSBTM0MyNDEwX1NESVRJTUVSICAgICAgICAgICAgICAoMHgyNCkKKyNkZWZpbmUgUzNDMjQxMF9TRElCU0laRSAgICAgICAgICAgICAgKDB4MjgpCisjZGVmaW5lIFMzQzI0MTBfU0RJRENPTiAgICAgICAgICAgICAgICgweDJDKQorI2RlZmluZSBTM0MyNDEwX1NESURDTlQgICAgICAgICAgICAgICAoMHgzMCkKKyNkZWZpbmUgUzNDMjQxMF9TRElEU1RBICAgICAgICAgICAgICAgKDB4MzQpCisjZGVmaW5lIFMzQzI0MTBfU0RJRlNUQSAgICAgICAgICAgICAgICgweDM4KQorI2RlZmluZSBTM0MyNDEwX1NESURBVEEgICAgICAgICAgICAgICAoMHgzQykKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLICAgICAgICAgICAgICAgKDB4NDApCisKKyNkZWZpbmUgUzNDMjQxMF9TRElDT05fQllURU9SREVSICAgICAgKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfU0RJQ09OX1NESU9JUlEgICAgICAgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX1NESUNPTl9SV0FJVEVOICAgICAgICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9TRElDT05fRklGT1JFU0VUICAgICAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfU0RJQ09OX0NMT0NLVFlQRSAgICAgICgxPDwwKQorCisjZGVmaW5lIFMzQzI0MTBfU0RJQ01EQ09OX0FCT1JUICAgICAgICgxPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9TRElDTURDT05fV0lUSERBVEEgICAgKDE8PDExKQorI2RlZmluZSBTM0MyNDEwX1NESUNNRENPTl9MT05HUlNQICAgICAoMTw8MTApCisjZGVmaW5lIFMzQzI0MTBfU0RJQ01EQ09OX1dBSVRSU1AgICAgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1NESUNNRENPTl9DTURTVEFSVCAgICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9TRElDTURDT05fSU5ERVggICAgICAgKDB4ZmYpCisKKyNkZWZpbmUgUzNDMjQxMF9TRElDTURTVEFUX0NSQ0ZBSUwgICAgKDE8PDEyKQorI2RlZmluZSBTM0MyNDEwX1NESUNNRFNUQVRfQ01EU0VOVCAgICAoMTw8MTEpCisjZGVmaW5lIFMzQzI0MTBfU0RJQ01EU1RBVF9DTURUSU1FT1VUICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQxMF9TRElDTURTVEFUX1JTUEZJTiAgICAgKDE8PDkpCisjZGVmaW5lIFMzQzI0MTBfU0RJQ01EU1RBVF9YRkVSSU5HICAgICgxPDw4KQorI2RlZmluZSBTM0MyNDEwX1NESUNNRFNUQVRfSU5ERVggICAgICAoMHhmZikKKworI2RlZmluZSBTM0MyNDEwX1NESURDT05fSVJRUEVSSU9EICAgICAoMTw8MjEpCisjZGVmaW5lIFMzQzI0MTBfU0RJRENPTl9UWEFGVEVSUkVTUCAgICgxPDwyMCkKKyNkZWZpbmUgUzNDMjQxMF9TRElEQ09OX1JYQUZURVJDTUQgICAgKDE8PDE5KQorI2RlZmluZSBTM0MyNDEwX1NESURDT05fQlVTWUFGVEVSQ01EICAoMTw8MTgpCisjZGVmaW5lIFMzQzI0MTBfU0RJRENPTl9CTE9DS01PREUgICAgICgxPDwxNykKKyNkZWZpbmUgUzNDMjQxMF9TRElEQ09OX1dJREVCVVMgICAgICAgKDE8PDE2KQorI2RlZmluZSBTM0MyNDEwX1NESURDT05fRE1BRU4gICAgICAgICAoMTw8MTUpCisjZGVmaW5lIFMzQzI0MTBfU0RJRENPTl9TVE9QICAgICAgICAgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQxMF9TRElEQ09OX0RBVE1PREUJICAgICAgKDM8PDEyKQorI2RlZmluZSBTM0MyNDEwX1NESURDT05fQkxLTlVNICAgICAgICAoMHg3ZmYpCisKKy8qIGNvbnN0YW50cyBmb3IgUzNDMjQxMF9TRElEQ09OX0RBVE1PREUgKi8KKyNkZWZpbmUgUzNDMjQxMF9TRElEQ09OX1hGRVJfUkVBRFkgICAgKDA8PDEyKQorI2RlZmluZSBTM0MyNDEwX1NESURDT05fWEZFUl9DSEtTVEFSVCAoMTw8MTIpCisjZGVmaW5lIFMzQzI0MTBfU0RJRENPTl9YRkVSX1JYU1RBUlQgICgyPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9TRElEQ09OX1hGRVJfVFhTVEFSVCAgKDM8PDEyKQorCisjZGVmaW5lIFMzQzI0MTBfU0RJRENOVF9CTEtOVU1fU0hJRlQgICgxMikKKworI2RlZmluZSBTM0MyNDEwX1NESURTVEFfUkRZV0FJVFJFUSAgICAoMTw8MTApCisjZGVmaW5lIFMzQzI0MTBfU0RJRFNUQV9TRElPSVJRREVURUNUICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1NESURTVEFfRklGT0ZBSUwgICAgICAoMTw8OCkJLyogcmVzZXJ2ZWQgb24gMjQ0MCAqLworI2RlZmluZSBTM0MyNDEwX1NESURTVEFfQ1JDRkFJTCAgICAgICAoMTw8NykKKyNkZWZpbmUgUzNDMjQxMF9TRElEU1RBX1JYQ1JDRkFJTCAgICAgKDE8PDYpCisjZGVmaW5lIFMzQzI0MTBfU0RJRFNUQV9EQVRBVElNRU9VVCAgICgxPDw1KQorI2RlZmluZSBTM0MyNDEwX1NESURTVEFfWEZFUkZJTklTSCAgICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9TRElEU1RBX0JVU1lGSU5JU0ggICAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfU0RJRFNUQV9TQklURVJSICAgICAgICgxPDwyKQkvKiByZXNlcnZlZCBvbiAyNDEwYS8yNDQwICovCisjZGVmaW5lIFMzQzI0MTBfU0RJRFNUQV9UWERBVEFPTiAgICAgICgxPDwxKQorI2RlZmluZSBTM0MyNDEwX1NESURTVEFfUlhEQVRBT04gICAgICAoMTw8MCkKKworI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfVEZERVQgICAgICAgICAgKDE8PDEzKQorI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfUkZERVQgICAgICAgICAgKDE8PDEyKQorI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfVFhIQUxGICAgICAgICAgKDE8PDExKQorI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfVFhFTVBUWSAgICAgICAgKDE8PDEwKQorI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfUkZMQVNUICAgICAgICAgKDE8PDkpCisjZGVmaW5lIFMzQzI0MTBfU0RJRlNUQV9SRkZVTEwgICAgICAgICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9TRElGU1RBX1JGSEFMRiAgICAgICAgICgxPDw3KQorI2RlZmluZSBTM0MyNDEwX1NESUZTVEFfQ09VTlRNQVNLICAgICAgKDB4N2YpCisKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1JFU1BPTlNFQ1JDICAgICgxPDwxNykKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0NNRFNFTlQgICAgICAgICgxPDwxNikKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0NNRFRJTUVPVVQgICAgICgxPDwxNSkKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1JFU1BPTlNFTkQgICAgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1JFQURXQUlUICAgICAgICgxPDwxMykKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1NESU9JUlEgICAgICAgICgxPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0ZJRk9GQUlMICAgICAgICgxPDwxMSkKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0NSQ1NUQVRVUyAgICAgICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0RBVEFDUkMgICAgICAgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1NESUlNU0tfREFUQVRJTUVPVVQgICAgKDE8PDgpCisjZGVmaW5lIFMzQzI0MTBfU0RJSU1TS19EQVRBRklOSVNIICAgICAoMTw8NykKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX0JVU1lGSU5JU0ggICAgICgxPDw2KQorI2RlZmluZSBTM0MyNDEwX1NESUlNU0tfU0JJVEVSUiAgICAgICAgKDE8PDUpCS8qIHJlc2VydmVkIDI0NDAvMjQxMGEgKi8KKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1RYRklGT0hBTEYgICAgICgxPDw0KQorI2RlZmluZSBTM0MyNDEwX1NESUlNU0tfVFhGSUZPRU1QVFkgICAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfU0RJSU1TS19SWEZJRk9MQVNUICAgICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9TRElJTVNLX1JYRklGT0ZVTEwgICAgICgxPDwxKQorI2RlZmluZSBTM0MyNDEwX1NESUlNU0tfUlhGSUZPSEFMRiAgICAgKDE8PDApCisKKyNlbmRpZiAvKiBfX0FTTV9BUk1fUkVHU19TREkgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1zZXJpYWwuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1zZXJpYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTFiYmJhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXNlcmlhbC5oCkBAIC0wLDAgKzEsMjA5IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3Mtc2VyaWFsLmgKKyAqCisgKiAgRnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2VyaWFsX3MzYzI0MTAuaAorICoKKyAqICBJbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3IgU2Ftc3VuZyBTM0MyNDEwIHNlcmlhbCBwb3J0cyAoVUFSVDAtMikKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIFNoYW5lIE5heSAoc2hhbmVAbWluaXJsLmNvbSkKKyAqCisgKiAgQWRkaXRpb25hbCBkZWZpbmVzLCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgKGxpbnV4QHNpbXRlYy5jby51aykKKyAqCisgKiAgQWRhcHRlZCBmcm9tOgorICoKKyAqICBJbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3IgTVgxQURTIHNlcmlhbCBwb3J0cyAoVUFSVDEgJiAyKQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIgU2hhbmUgTmF5IChzaGFuZUBtaW5pcmwuY29tKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqCisgKiBNb2RpZmljYXRpb25zOgorICogICAgIDEwLU1hci0yMDA1IExDVlIgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBIChzM2MyNDAwIHN1cHBvcnQpCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19TRVJJQUxfSAorI2RlZmluZSBfX0FTTV9BUk1fUkVHU19TRVJJQUxfSAorCisjZGVmaW5lIFMzQzI0WFhfVkFfVUFSVDAgICAgICAoUzNDMjRYWF9WQV9VQVJUKQorI2RlZmluZSBTM0MyNFhYX1ZBX1VBUlQxICAgICAgKFMzQzI0WFhfVkFfVUFSVCArIDB4NDAwMCApCisjZGVmaW5lIFMzQzI0WFhfVkFfVUFSVDIgICAgICAoUzNDMjRYWF9WQV9VQVJUICsgMHg4MDAwICkKKworI2RlZmluZSBTM0MyNDEwX1BBX1VBUlQwICAgICAgKFMzQzI0MTBfUEFfVUFSVCkKKyNkZWZpbmUgUzNDMjQxMF9QQV9VQVJUMSAgICAgIChTM0MyNDEwX1BBX1VBUlQgKyAweDQwMDAgKQorI2RlZmluZSBTM0MyNDEwX1BBX1VBUlQyICAgICAgKFMzQzI0MTBfUEFfVUFSVCArIDB4ODAwMCApCisKKyNkZWZpbmUgUzNDMjQxMF9VUlhICSAgKDB4MjQpCisjZGVmaW5lIFMzQzI0MTBfVVRYSAkgICgweDIwKQorI2RlZmluZSBTM0MyNDEwX1VMQ09OCSAgKDB4MDApCisjZGVmaW5lIFMzQzI0MTBfVUNPTgkgICgweDA0KQorI2RlZmluZSBTM0MyNDEwX1VGQ09OCSAgKDB4MDgpCisjZGVmaW5lIFMzQzI0MTBfVU1DT04JICAoMHgwQykKKyNkZWZpbmUgUzNDMjQxMF9VQlJESVYJICAoMHgyOCkKKyNkZWZpbmUgUzNDMjQxMF9VVFJTVEFUCSAgKDB4MTApCisjZGVmaW5lIFMzQzI0MTBfVUVSU1RBVAkgICgweDE0KQorI2RlZmluZSBTM0MyNDEwX1VGU1RBVAkgICgweDE4KQorI2RlZmluZSBTM0MyNDEwX1VNU1RBVAkgICgweDFDKQorCisjZGVmaW5lIFMzQzI0MTBfTENPTl9DRkdNQVNLCSAgKCgweEY8PDMpfCgweDMpKQorCisjZGVmaW5lIFMzQzI0MTBfTENPTl9DUzUJICAoMHgwKQorI2RlZmluZSBTM0MyNDEwX0xDT05fQ1M2CSAgKDB4MSkKKyNkZWZpbmUgUzNDMjQxMF9MQ09OX0NTNwkgICgweDIpCisjZGVmaW5lIFMzQzI0MTBfTENPTl9DUzgJICAoMHgzKQorI2RlZmluZSBTM0MyNDEwX0xDT05fQ1NNQVNLCSAgKDB4MykKKworI2RlZmluZSBTM0MyNDEwX0xDT05fUE5PTkUJICAoMHgwKQorI2RlZmluZSBTM0MyNDEwX0xDT05fUEVWRU4JICAoMHg1IDw8IDMpCisjZGVmaW5lIFMzQzI0MTBfTENPTl9QT0RECSAgKDB4NCA8PCAzKQorI2RlZmluZSBTM0MyNDEwX0xDT05fUE1BU0sJICAoMHg3IDw8IDMpCisKKyNkZWZpbmUgUzNDMjQxMF9MQ09OX1NUT1BCCSAgKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfTENPTl9JUk0gICAgICAgICAgKDE8PDYpCisKKyNkZWZpbmUgUzNDMjQ0MF9VQ09OX0NMS01BU0sJICAoMzw8MTApCisjZGVmaW5lIFMzQzI0NDBfVUNPTl9QQ0xLCSAgKDA8PDEwKQorI2RlZmluZSBTM0MyNDQwX1VDT05fVUNMSwkgICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQ0MF9VQ09OX1BDTEsyCSAgKDI8PDEwKQorI2RlZmluZSBTM0MyNDQwX1VDT05fRkNMSwkgICgzPDwxMCkKKyNkZWZpbmUgUzNDMjQ0MF9VQ09OMl9GQ0xLX0VOCSAgKDE8PDE1KQorI2RlZmluZSBTM0MyNDQwX1VDT04wX0RJVk1BU0sJICAoMTUgPDwgMTIpCisjZGVmaW5lIFMzQzI0NDBfVUNPTjFfRElWTUFTSwkgICgxNSA8PCAxMikKKyNkZWZpbmUgUzNDMjQ0MF9VQ09OMl9ESVZNQVNLCSAgKDcgPDwgMTIpCisjZGVmaW5lIFMzQzI0NDBfVUNPTl9ESVZTSElGVAkgICgxMikKKworI2RlZmluZSBTM0MyNDEwX1VDT05fVUNMSwkgICgxPDwxMCkKKyNkZWZpbmUgUzNDMjQxMF9VQ09OX1NCUkVBSwkgICgxPDw0KQorCisjZGVmaW5lIFMzQzI0MTBfVUNPTl9UWElMRVZFTAkgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1VDT05fUlhJTEVWRUwJICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9VQ09OX1RYSVJRTU9ERQkgICgxPDwyKQorI2RlZmluZSBTM0MyNDEwX1VDT05fUlhJUlFNT0RFCSAgKDE8PDApCisjZGVmaW5lIFMzQzI0MTBfVUNPTl9SWEZJRk9fVE9JCSAgKDE8PDcpCisKKyNkZWZpbmUgUzNDMjQxMF9VQ09OX0RFRkFVTFQJICAoUzNDMjQxMF9VQ09OX1RYSUxFVkVMICB8IFwKKwkJCQkgICBTM0MyNDEwX1VDT05fUlhJTEVWRUwgIHwgXAorCQkJCSAgIFMzQzI0MTBfVUNPTl9UWElSUU1PREUgfCBcCisJCQkJICAgUzNDMjQxMF9VQ09OX1JYSVJRTU9ERSB8IFwKKwkJCQkgICBTM0MyNDEwX1VDT05fUlhGSUZPX1RPSSkKKworI2RlZmluZSBTM0MyNDEwX1VGQ09OX0ZJRk9NT0RFCSAgKDE8PDApCisjZGVmaW5lIFMzQzI0MTBfVUZDT05fVFhUUklHMAkgICgwPDw2KQorI2RlZmluZSBTM0MyNDEwX1VGQ09OX1JYVFJJRzgJICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9VRkNPTl9SWFRSSUcxMgkgICgyPDw0KQorCisvKiBTM0MyNDQwIEZJRk8gdHJpZ2dlciBsZXZlbHMgKi8KKyNkZWZpbmUgUzNDMjQ0MF9VRkNPTl9SWFRSSUcxCSAgKDA8PDQpCisjZGVmaW5lIFMzQzI0NDBfVUZDT05fUlhUUklHOAkgICgxPDw0KQorI2RlZmluZSBTM0MyNDQwX1VGQ09OX1JYVFJJRzE2CSAgKDI8PDQpCisjZGVmaW5lIFMzQzI0NDBfVUZDT05fUlhUUklHMzIJICAoMzw8NCkKKworI2RlZmluZSBTM0MyNDQwX1VGQ09OX1RYVFJJRzAJICAoMDw8NikKKyNkZWZpbmUgUzNDMjQ0MF9VRkNPTl9UWFRSSUcxNgkgICgxPDw2KQorI2RlZmluZSBTM0MyNDQwX1VGQ09OX1RYVFJJRzMyCSAgKDI8PDYpCisjZGVmaW5lIFMzQzI0NDBfVUZDT05fVFhUUklHNDgJICAoMzw8NikKKworI2RlZmluZSBTM0MyNDEwX1VGQ09OX1JFU0VUQk9USAkgICgzPDwxKQorI2RlZmluZSBTM0MyNDEwX1VGQ09OX1JFU0VUVFgJICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9VRkNPTl9SRVNFVFJYCSAgKDE8PDEpCisKKyNkZWZpbmUgUzNDMjQxMF9VRkNPTl9ERUZBVUxUCSAgKFMzQzI0MTBfVUZDT05fRklGT01PREUgfCBcCisJCQkJICAgUzNDMjQxMF9VRkNPTl9UWFRSSUcwICB8IFwKKwkJCQkgICBTM0MyNDEwX1VGQ09OX1JYVFJJRzggKQorCisjZGVmaW5lCVMzQzI0MTBfVU1DT01fQUZDCSAgKDE8PDQpCisjZGVmaW5lCVMzQzI0MTBfVU1DT01fUlRTX0xPVwkgICgxPDwwKQorCisjZGVmaW5lIFMzQzI0MTBfVUZTVEFUX1RYRlVMTAkgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1VGU1RBVF9SWEZVTEwJICAoMTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9VRlNUQVRfVFhNQVNLCSAgKDE1PDw0KQorI2RlZmluZSBTM0MyNDEwX1VGU1RBVF9UWFNISUZUCSAgKDQpCisjZGVmaW5lIFMzQzI0MTBfVUZTVEFUX1JYTUFTSwkgICgxNTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9VRlNUQVRfUlhTSElGVAkgICgwKQorCisjZGVmaW5lIFMzQzI0NDBfVUZTVEFUX1RYRlVMTAkgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQ0MF9VRlNUQVRfUlhGVUxMCSAgKDE8PDYpCisjZGVmaW5lIFMzQzI0NDBfVUZTVEFUX1RYU0hJRlQJICAoOCkKKyNkZWZpbmUgUzNDMjQ0MF9VRlNUQVRfUlhTSElGVAkgICgwKQorI2RlZmluZSBTM0MyNDQwX1VGU1RBVF9UWE1BU0sJICAoNjM8PDgpCisjZGVmaW5lIFMzQzI0NDBfVUZTVEFUX1JYTUFTSwkgICg2MykKKworI2RlZmluZSBTM0MyNDEwX1VUUlNUQVRfVFhFCSAgKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfVVRSU1RBVF9UWEZFCSAgKDE8PDEpCisjZGVmaW5lIFMzQzI0MTBfVVRSU1RBVF9SWERSCSAgKDE8PDApCisKKyNkZWZpbmUgUzNDMjQxMF9VRVJTVEFUX09WRVJSVU4JICAoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9VRVJTVEFUX0ZSQU1FCSAgKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfVUVSU1RBVF9CUkVBSwkgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX1VFUlNUQVRfQU5ZCSAgKFMzQzI0MTBfVUVSU1RBVF9PVkVSUlVOIHwgXAorCQkJCSAgIFMzQzI0MTBfVUVSU1RBVF9GUkFNRSB8IFwKKwkJCQkgICBTM0MyNDEwX1VFUlNUQVRfQlJFQUspCisKKyNkZWZpbmUgUzNDMjQxMF9VTVNUQVRfQ1RTCSAgKDE8PDApCisjZGVmaW5lIFMzQzI0MTBfVU1TVEFUX0RlbHRhQ1RTCSAgKDE8PDIpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKy8qIHN0cnVjdCBzM2MyNHh4X3VhcnRfY2xrc3JjCisgKgorICogdGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBhIG5hbWVkIGNsb2NrIHNvdXJjZSB0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGUKKyAqIHVhcnQsIHNvIHRoYXQgdGhlIGJlc3QgY2xvY2sgY2FuIGJlIHNlbGVjdGVkIGZvciB0aGUgcmVxdWVzdGVkIGJhdWQKKyAqIHJhdGUuCisgKgorICogbWluX2JhdWQgYW5kIG1heF9iYXVkIGRlZmluZSB0aGUgcmFuZ2Ugb2YgYmF1ZC1yYXRlcyB0aGlzIGNsb2NrIGlzCisgKiBhY2NlcHRhYmxlIGZvciwgaWYgdGhleSBhcmUgYm90aCB6ZXJvLCBpdCBpcyBhc3N1bWVkIGFueSBiYXVkIHJhdGUgdGhhdAorICogY2FuIGJlIGdlbmVyYXRlZCBmcm9tIHRoaXMgY2xvY2sgd2lsbCBiZSB1c2VkLgorICoKKyAqIGRpdmlzb3IgZ2l2ZXMgdGhlIGRpdmlzb3IgZnJvbSB0aGUgY2xvY2sgdG8gdGhlIG9uZSBzZWVuIGJ5IHRoZSB1YXJ0CisqLworCitzdHJ1Y3QgczNjMjR4eF91YXJ0X2Nsa3NyYyB7CisJY29uc3QgY2hhcgkqbmFtZTsKKwl1bnNpZ25lZCBpbnQJIGRpdmlzb3I7CisJdW5zaWduZWQgaW50CSBtaW5fYmF1ZDsKKwl1bnNpZ25lZCBpbnQJIG1heF9iYXVkOworfTsKKworLyogY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHBlci1tYWNoaW5lIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAqIHNlcmlhbCBwb3J0CisgKgorICogdGhlIHBvaW50ZXIgaXMgc2V0dXAgYnkgdGhlIG1hY2hpbmUgc3BlY2lmaWMgaW5pdGlhbGlzYXRpb24gZnJvbSB0aGUKKyAqIGFyY2gvYXJtL21hY2gtczNjMjQxMC8gZGlyZWN0b3J5LgorKi8KKworc3RydWN0IHMzYzI0MTBfdWFydGNmZyB7CisJdW5zaWduZWQgY2hhcgkgICBod3BvcnQ7CSAvKiBoYXJkd2FyZSBwb3J0IG51bWJlciAqLworCXVuc2lnbmVkIGNoYXIJICAgdW51c2VkOworCXVuc2lnbmVkIHNob3J0CSAgIGZsYWdzOworCXVuc2lnbmVkIGxvbmcJICAgdWFydF9mbGFnczsJIC8qIGRlZmF1bHQgdWFydCBmbGFncyAqLworCisJdW5zaWduZWQgbG9uZwkgICB1Y29uOwkgLyogdmFsdWUgb2YgdWNvbiBmb3IgcG9ydCAqLworCXVuc2lnbmVkIGxvbmcJICAgdWxjb247CSAvKiB2YWx1ZSBvZiB1bGNvbiBmb3IgcG9ydCAqLworCXVuc2lnbmVkIGxvbmcJICAgdWZjb247CSAvKiB2YWx1ZSBvZiB1ZmNvbiBmb3IgcG9ydCAqLworCisJc3RydWN0IHMzYzI0eHhfdWFydF9jbGtzcmMgKmNsb2NrczsKKwl1bnNpZ25lZCBpbnQJCSAgICBjbG9ja3Nfc2l6ZTsKK307CisKKy8qIHMzYzI0eHhfdWFydF9kZXZzCisgKgorICogdGhpcyBpcyBleHBvcnRlZCBmcm9tIHRoZSBjb3JlIGFzIHdlIGNhbm5vdCB1c2UgZHJpdmVyX3JlZ2lzdGVyKCksCisgKiBvciBwbGF0Zm9ybV9hZGRfZGV2aWNlKCkgYmVmb3JlIHRoZSBjb25zb2xlX2luaXRjYWxsKCkKKyovCisKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpzM2MyNHh4X3VhcnRfZGV2c1szXTsKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19BU01fQVJNX1JFR1NfU0VSSUFMX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXNwaS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXNwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTAyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3Mtc3BpLmgKQEAgLTAsMCArMSw1NiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXNwaS5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IEZldHJvbiBHbWJICisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBTM0MyNDEwIFNQSSByZWdpc3RlciBkZWZpbml0aW9uCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDIwLTA0LTIwMDQgICAgIEtGICAgICAgQ3JlYXRlZCBmaWxlCisgKiAgICAwNC0xMC0yMDA0ICAgICBCSkQgICAgIFJlbW92ZWQgVkEgYWRkcmVzcyAobm8gbG9uZ2VyIG1hcHBlZCkKKyAqCQkJICAgICB0aWRpZWQgZmlsZSBmb3Igc3VibWlzc2lvbgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX1NQSV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfUkVHU19TUElfSAorCisKKyNkZWZpbmUgUzNDMjQxMF9TUENPTgkoMHgwMCkKKworI2RlZmluZSBTM0MyNDEwX1NQQ09OX1NNT0RfRE1BCSAgKDI8PDUpCS8qIERNQSBtb2RlICovCisjZGVmaW5lIFMzQzI0MTBfU1BDT05fU01PRF9JTlQJICAoMTw8NSkJLyogaW50ZXJydXB0IG1vZGUgKi8KKyNkZWZpbmUgUzNDMjQxMF9TUENPTl9TTU9EX1BPTEwgICAoMDw8NSkJLyogcG9sbGluZyBtb2RlICovCisjZGVmaW5lIFMzQzI0MTBfU1BDT05fRU5TQ0sJICAoMTw8NCkJLyogRW5hYmxlIFNDSyAqLworI2RlZmluZSBTM0MyNDEwX1NQQ09OX01TVFIJICAoMTw8MykJLyogTWFzdGVyL1NsYXZlIHNlbGVjdAorCQkJCQkJICAgMDogc2xhdmUsIDE6IG1hc3RlciAqLworI2RlZmluZSBTM0MyNDEwX1NQQ09OX0NQT0xfSElHSAkgICgxPDwyKQkvKiBDbG9jayBwb2xhcml0eSBzZWxlY3QgKi8KKyNkZWZpbmUgUzNDMjQxMF9TUENPTl9DUE9MX0xPVwkgICgwPDwyKQkvKiBDbG9jayBwb2xhcml0eSBzZWxlY3QgKi8KKworI2RlZmluZSBTM0MyNDEwX1NQQ09OX0NQSEFfRk1UQgkgICgxPDwxKQkvKiBDbG9jayBQaGFzZSBTZWxlY3QgKi8KKyNkZWZpbmUgUzNDMjQxMF9TUENPTl9DUEhBX0ZNVEEJICAoMDw8MSkJLyogQ2xvY2sgUGhhc2UgU2VsZWN0ICovCisKKyNkZWZpbmUgUzNDMjQxMF9TUENPTl9UQUdECSAgKDE8PDApCS8qIFR4IGF1dG8gZ2FyYmFnZSBkYXRhIG1vZGUgKi8KKworCisjZGVmaW5lIFMzQzI0MTBfU1BTVEEJICgweDA0KQorCisjZGVmaW5lIFMzQzI0MTBfU1BTVEFfRENPTAkgICgxPDwyKQkvKiBEYXRhIENvbGxpc2lvbiBFcnJvciAqLworI2RlZmluZSBTM0MyNDEwX1NQU1RBX01VTEQJICAoMTw8MSkJLyogTXVsdGkgTWFzdGVyIEVycm9yICovCisjZGVmaW5lIFMzQzI0MTBfU1BTVEFfUkVBRFkJICAoMTw8MCkJLyogRGF0YSBUeC9SeCByZWFkeSAqLworCisKKyNkZWZpbmUgUzNDMjQxMF9TUFBJTgkgKDB4MDgpCisKKyNkZWZpbmUgUzNDMjQxMF9TUFBJTl9FTk1VTAkgICgxPDwyKQkvKiBNdWx0aSBNYXN0ZXIgRXJyb3IgZGV0ZWN0ICovCisjZGVmaW5lIFMzQzI0MTBfU1BQSU5fUkVTRVJWRUQJICAoMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9TUFBJTl9LRUVQCSAgKDE8PDApCS8qIE1hc3RlciBPdXQga2VlcCAqLworCisKKyNkZWZpbmUgUzNDMjQxMF9TUFBSRQkgKDB4MEMpCisjZGVmaW5lIFMzQzI0MTBfU1BUREFUCSAoMHgxMCkKKyNkZWZpbmUgUzNDMjQxMF9TUFJEQVQJICgweDE0KQorCisjZW5kaWYgLyogX19BU01fQVJDSF9SRUdTX1NQSV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtdGltZXIuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy10aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2OTA2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtdGltZXIuaApAQCAtMCwwICsxLDExMyBAQAorLyogbGludXgvaW5jbHVkZS9hc20vYXJjaC1zM2MyNDEwL3JlZ3MtdGltZXIuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBUaW1lciBjb25maWd1cmF0aW9uCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDA1LTA2LTIwMDMgICAgIEJKRCAgICAgQ3JlYXRlZCBmaWxlCisgKiAgICAyNi0wNi0yMDAzICAgICBCSkQgICAgIEFkZGVkIG1vcmUgdGltZXIgZGVmaW5pdGlvbnMgdG8gbXV4IC8gY29udHJvbAorICogICAgMTItMDMtMjAwNCAgICAgQkpEICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgorICogICAgMTAtMDItMjAwNSAgICAgQkpEICAgICBBZGRlZCBTM0MyNDEwX1RDRkcxX01VWDRfU0hJRlQgKEd1aWxsYXVtZSBHb3VyYXQpCisgKiAgICAxMC0wMy0yMDA1ICAgICBMQ1ZSICAgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBCisqLworCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX1RJTUVSX0gKKyNkZWZpbmUgX19BU01fQVJDSF9SRUdTX1RJTUVSX0ggIiRJZDogdGltZXIuaCx2IDEuNCAyMDAzLzA1LzA2IDE5OjMwOjUwIGJlbiBFeHAgJCIKKworI2RlZmluZSBTM0MyNDEwX1RJTUVSUkVHKHgpIChTM0MyNFhYX1ZBX1RJTUVSICsgKHgpKQorI2RlZmluZSBTM0MyNDEwX1RJTUVSUkVHMih0bXIscmVnKSBTM0MyNDEwX1RJTUVSUkVHKChyZWcpKzB4MGMrKCh0bXIpKjB4MGMpKQorCisjZGVmaW5lIFMzQzI0MTBfVENGRzAJICAgICAgUzNDMjQxMF9USU1FUlJFRygweDAwKQorI2RlZmluZSBTM0MyNDEwX1RDRkcxCSAgICAgIFMzQzI0MTBfVElNRVJSRUcoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9UQ09OCSAgICAgIFMzQzI0MTBfVElNRVJSRUcoMHgwOCkKKworI2RlZmluZSBTM0MyNDEwX1RDRkdfUFJFU0NBTEVSMF9NQVNLICgyNTU8PDApCisjZGVmaW5lIFMzQzI0MTBfVENGR19QUkVTQ0FMRVIxX01BU0sgKDI1NTw8OCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHX1BSRVNDQUxFUjFfU0hJRlQgKDgpCisjZGVmaW5lIFMzQzI0MTBfVENGR19ERUFEWk9ORV9NQVNLICAgKDI1NTw8MTYpCisjZGVmaW5lIFMzQzI0MTBfVENGR19ERUFEWk9ORV9TSElGVCAgKDE2KQorCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYNF9ESVYyCSAgKDA8PDE2KQorI2RlZmluZSBTM0MyNDEwX1RDRkcxX01VWDRfRElWNAkgICgxPDwxNikKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVg0X0RJVjgJICAoMjw8MTYpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYNF9ESVYxNiAgKDM8PDE2KQorI2RlZmluZSBTM0MyNDEwX1RDRkcxX01VWDRfVENMSzEgICg0PDwxNikKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVg0X01BU0sJICAoMTU8PDE2KQorI2RlZmluZSBTM0MyNDEwX1RDRkcxX01VWDRfU0hJRlQgICgxNikKKworI2RlZmluZSBTM0MyNDEwX1RDRkcxX01VWDNfRElWMgkgICgwPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgzX0RJVjQJICAoMTw8MTIpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYM19ESVY4CSAgKDI8PDEyKQorI2RlZmluZSBTM0MyNDEwX1RDRkcxX01VWDNfRElWMTYgICgzPDwxMikKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgzX1RDTEsxICAoNDw8MTIpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYM19NQVNLCSAgKDE1PDwxMikKKworCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9ESVYyCSAgKDA8PDgpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9ESVY0CSAgKDE8PDgpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9ESVY4CSAgKDI8PDgpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9ESVYxNiAgKDM8PDgpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9UQ0xLMSAgKDQ8PDgpCisjZGVmaW5lIFMzQzI0MTBfVENGRzFfTVVYMl9NQVNLCSAgKDE1PDw4KQorCisKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX0RJVjIJICAoMDw8NCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX0RJVjQJICAoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX0RJVjgJICAoMjw8NCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX0RJVjE2ICAoMzw8NCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX1RDTEswICAoNDw8NCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgxX01BU0sJICAoMTU8PDQpCisKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX0RJVjIJICAoMDw8MCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX0RJVjQJICAoMTw8MCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX0RJVjgJICAoMjw8MCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX0RJVjE2ICAoMzw8MCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX1RDTEswICAoNDw8MCkKKyNkZWZpbmUgUzNDMjQxMF9UQ0ZHMV9NVVgwX01BU0sJICAoMTU8PDApCisKKy8qIGZvciBlYWNoIHRpbWVyLCB3ZSBoYXZlIGFuIGNvdW50IGJ1ZmZlciwgYW4gY29tcGFyZSBidWZmZXIgYW5kCisgKiBhbiBvYnNlcnZhdGlvbiBidWZmZXIKKyovCisKKy8qIFdBUk5JTkcgLSB0aW1lciA0IGhhcyBubyBidWZmZXIgcmVnLCBhbmQgaXQncyBvYnNlcnZhdGlvbiBpcyBhdCArNCAqLworCisjZGVmaW5lIFMzQzI0MTBfVENOVEIodG1yKSAgICBTM0MyNDEwX1RJTUVSUkVHMih0bXIsIDB4MDApCisjZGVmaW5lIFMzQzI0MTBfVENNUEIodG1yKSAgICBTM0MyNDEwX1RJTUVSUkVHMih0bXIsIDB4MDQpCisjZGVmaW5lIFMzQzI0MTBfVENOVE8odG1yKSAgICBTM0MyNDEwX1RJTUVSUkVHMih0bXIsICgoKHRtcikgPT0gNCkgPyAweDA0IDogMHgwOCkpCisKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1Q0UkVMT0FECSAgKDE8PDIyKQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDRNQU5VQUxVUEQgICgxPDwyMSkKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1Q0U1RBUlQJICAoMTw8MjApCisKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1QzUkVMT0FECSAgKDE8PDE5KQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDNJTlZFUlQJICAoMTw8MTgpCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UM01BTlVBTFVQRCAgKDE8PDE3KQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDNTVEFSVAkgICgxPDwxNikKKworI2RlZmluZSBTM0MyNDEwX1RDT05fVDJSRUxPQUQJICAoMTw8MTUpCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UMklOVkVSVAkgICgxPDwxNCkKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1QyTUFOVUFMVVBEICAoMTw8MTMpCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UMlNUQVJUCSAgKDE8PDEyKQorCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UMVJFTE9BRAkgICgxPDwxMSkKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1QxSU5WRVJUCSAgKDE8PDEwKQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDFNQU5VQUxVUEQgICgxPDw5KQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDFTVEFSVAkgICgxPDw4KQorCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UMERFQURaT05FCSAgKDE8PDQpCisjZGVmaW5lIFMzQzI0MTBfVENPTl9UMFJFTE9BRAkgICgxPDwzKQorI2RlZmluZSBTM0MyNDEwX1RDT05fVDBJTlZFUlQJICAoMTw8MikKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1QwTUFOVUFMVVBEICAoMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9UQ09OX1QwU1RBUlQJICAoMTw8MCkKKworI2VuZGlmIC8qICBfX0FTTV9BUkNIX1JFR1NfVElNRVJfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXVkYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXVkYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMzE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtdWRjLmgKQEAgLTAsMCArMSwxNjQgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtL2FyY2gtczNjMjQxMC9yZWdzLXVkYy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEhlcmJlcnQgUG9ldHpsIDxoZXJiZXJ0QDEzdGhmbG9vci5hdD4KKyAqCisgKiBUaGlzIGluY2x1ZGUgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDAxLTA4LTIwMDQJSW5pdGlhbCBjcmVhdGlvbgorICogICAgMTItMDktMjAwNAlDbGVhbnVwIGZvciBzdWJtaXNzaW9uCisgKiAgICAyNC0xMC0yMDA0CUZpeGVkIFMzQzI0MTBfVURDX01BWFBfUkVHIGRlZmluaXRpb24KKyAqICAgIDEwLTAzLTIwMDUJQ2hhbmdlZCBTM0MyNDEwX1ZBIHRvIFMzQzI0WFhfVkEKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfUkVHU19VRENfSAorI2RlZmluZSBfX0FTTV9BUkNIX1JFR1NfVURDX0gKKworCisjZGVmaW5lIFMzQzI0MTBfVVNCRFJFRyh4KSAoKHgpICsgUzNDMjRYWF9WQV9VU0JERVYpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfRlVOQ19BRERSX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTQwKQorI2RlZmluZSBTM0MyNDEwX1VEQ19QV1JfUkVHCQlTM0MyNDEwX1VTQkRSRUcoMHgwMTQ0KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUF9JTlRfUkVHCQlTM0MyNDEwX1VTQkRSRUcoMHgwMTQ4KQorCisjZGVmaW5lIFMzQzI0MTBfVURDX1VTQl9JTlRfUkVHCQlTM0MyNDEwX1VTQkRSRUcoMHgwMTU4KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUF9JTlRfRU5fUkVHCVMzQzI0MTBfVVNCRFJFRygweDAxNWMpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfVVNCX0lOVF9FTl9SRUcJUzNDMjQxMF9VU0JEUkVHKDB4MDE2YykKKworI2RlZmluZSBTM0MyNDEwX1VEQ19GUkFNRV9OVU0xX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTcwKQorI2RlZmluZSBTM0MyNDEwX1VEQ19GUkFNRV9OVU0yX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTc0KQorCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMF9GSUZPX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMWMwKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDFfRklGT19SRUcJUzNDMjQxMF9VU0JEUkVHKDB4MDFjNCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAyX0ZJRk9fUkVHCVMzQzI0MTBfVVNCRFJFRygweDAxYzgpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQM19GSUZPX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMWNjKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDRfRklGT19SRUcJUzNDMjQxMF9VU0JEUkVHKDB4MDFkMCkKKworI2RlZmluZSBTM0MyNDEwX1VEQ19FUDFfRE1BX0NPTgkJUzNDMjQxMF9VU0JEUkVHKDB4MDIwMCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAxX0RNQV9VTklUCVMzQzI0MTBfVVNCRFJFRygweDAyMDQpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMV9ETUFfRklGTwlTM0MyNDEwX1VTQkRSRUcoMHgwMjA4KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDFfRE1BX1RUQ19MCVMzQzI0MTBfVVNCRFJFRygweDAyMGMpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMV9ETUFfVFRDX00JUzNDMjQxMF9VU0JEUkVHKDB4MDIxMCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAxX0RNQV9UVENfSAlTM0MyNDEwX1VTQkRSRUcoMHgwMjE0KQorCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMl9ETUFfQ09OCQlTM0MyNDEwX1VTQkRSRUcoMHgwMjE4KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDJfRE1BX1VOSVQJUzNDMjQxMF9VU0JEUkVHKDB4MDIxYykKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAyX0RNQV9GSUZPCVMzQzI0MTBfVVNCRFJFRygweDAyMjApCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMl9ETUFfVFRDX0wJUzNDMjQxMF9VU0JEUkVHKDB4MDIyNCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAyX0RNQV9UVENfTQlTM0MyNDEwX1VTQkRSRUcoMHgwMjI4KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDJfRE1BX1RUQ19ICVMzQzI0MTBfVVNCRFJFRygweDAyMmMpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAzX0RNQV9DT04JCVMzQzI0MTBfVVNCRFJFRygweDAyNDApCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQM19ETUFfVU5JVAlTM0MyNDEwX1VTQkRSRUcoMHgwMjQ0KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDNfRE1BX0ZJRk8JUzNDMjQxMF9VU0JEUkVHKDB4MDI0OCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAzX0RNQV9UVENfTAlTM0MyNDEwX1VTQkRSRUcoMHgwMjRjKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDNfRE1BX1RUQ19NCVMzQzI0MTBfVVNCRFJFRygweDAyNTApCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQM19ETUFfVFRDX0gJUzNDMjQxMF9VU0JEUkVHKDB4MDI1NCkKKworI2RlZmluZSBTM0MyNDEwX1VEQ19FUDRfRE1BX0NPTgkJUzNDMjQxMF9VU0JEUkVHKDB4MDI1OCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVA0X0RNQV9VTklUCVMzQzI0MTBfVVNCRFJFRygweDAyNWMpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQNF9ETUFfRklGTwlTM0MyNDEwX1VTQkRSRUcoMHgwMjYwKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDRfRE1BX1RUQ19MCVMzQzI0MTBfVVNCRFJFRygweDAyNjQpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQNF9ETUFfVFRDX00JUzNDMjQxMF9VU0JEUkVHKDB4MDI2OCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVA0X0RNQV9UVENfSAlTM0MyNDEwX1VTQkRSRUcoMHgwMjZjKQorCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOREVYX1JFRwkJUzNDMjQxMF9VU0JEUkVHKDB4MDE3OCkKKworLyogaW5kZXhlZCByZWdpc3RlcnMgKi8KKworI2RlZmluZSBTM0MyNDEwX1VEQ19NQVhQX1JFRwkJUzNDMjQxMF9VU0JEUkVHKDB4MDE4MCkKKworI2RlZmluZSBTM0MyNDEwX1VEQ19FUDBfQ1NSX1JFRwkJUzNDMjQxMF9VU0JEUkVHKDB4MDE4NCkKKworI2RlZmluZSBTM0MyNDEwX1VEQ19JTl9DU1IxX1JFRwkJUzNDMjQxMF9VU0JEUkVHKDB4MDE4NCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5fQ1NSMl9SRUcJCVMzQzI0MTBfVVNCRFJFRygweDAxODgpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfT1VUX0NTUjFfUkVHCVMzQzI0MTBfVVNCRFJFRygweDAxOTApCisjZGVmaW5lIFMzQzI0MTBfVURDX09VVF9DU1IyX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTk0KQorI2RlZmluZSBTM0MyNDEwX1VEQ19PVVRfRklGT19DTlQxX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTk4KQorI2RlZmluZSBTM0MyNDEwX1VEQ19PVVRfRklGT19DTlQyX1JFRwlTM0MyNDEwX1VTQkRSRUcoMHgwMTljKQorCisKKworI2RlZmluZSBTM0MyNDEwX1VEQ19QV1JfSVNPVVAJCSgxPDw3KSAvLyBSL1cKKyNkZWZpbmUgUzNDMjQxMF9VRENfUFdSX1JFU0VUCQkoMTw8MykgLy8gUgorI2RlZmluZSBTM0MyNDEwX1VEQ19QV1JfUkVTVU1FCQkoMTw8MikgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX1BXUl9TVVNQRU5ECQkoMTw8MSkgLy8gUgorI2RlZmluZSBTM0MyNDEwX1VEQ19QV1JfRU5TVVNQRU5ECSgxPDwwKSAvLyBSL1cKKworI2RlZmluZSBTM0MyNDEwX1VEQ19QV1JfREVGQVVMVAkJMHgwMAorCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOVF9FUDQJCSgxPDw0KSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOVF9FUDMJCSgxPDwzKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOVF9FUDIJCSgxPDwyKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOVF9FUDEJCSgxPDwxKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lOVF9FUDAJCSgxPDwwKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfVVNCSU5UX1JFU0VUCSgxPDwyKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX1VTQklOVF9SRVNVTUUJKDE8PDEpIC8vIFIvVyAoY2xlYXIgb25seSkKKyNkZWZpbmUgUzNDMjQxMF9VRENfVVNCSU5UX1NVU1BFTkQJKDE8PDApIC8vIFIvVyAoY2xlYXIgb25seSkKKworI2RlZmluZSBTM0MyNDEwX1VEQ19JTlRFX0VQNAkJKDE8PDQpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JTlRFX0VQMwkJKDE8PDMpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JTlRFX0VQMgkJKDE8PDIpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JTlRFX0VQMQkJKDE8PDEpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JTlRFX0VQMAkJKDE8PDApIC8vIFIvVworCisjZGVmaW5lIFMzQzI0MTBfVURDX1VTQklOVEVfUkVTRVQJKDE8PDIpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19VU0JJTlRFX1NVU1BFTkQJKDE8PDApIC8vIFIvVworCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5ERVhfRVAwCQkoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5ERVhfRVAxCQkoMHgwMSkgLy8gPz8KKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5ERVhfRVAyCQkoMHgwMikgLy8gPz8KKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5ERVhfRVAzCQkoMHgwMykgLy8gPz8KKyNkZWZpbmUgUzNDMjQxMF9VRENfSU5ERVhfRVA0CQkoMHgwNCkgLy8gPz8KKworI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMV9DTFJEVAkJKDE8PDYpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMV9TRU5UU1RMCSgxPDw1KSAvLyBSL1cgKGNsZWFyIG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lDU1IxX1NFTkRTVEwJKDE8PDQpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMV9GRkxVU0gJKDE8PDMpIC8vIFcgICAoc2V0IG9ubHkpCisjZGVmaW5lIFMzQzI0MTBfVURDX0lDU1IxX1VORFJVTgkoMTw8MikgLy8gUi9XIChjbGVhciBvbmx5KQorI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMV9QS1RSRFkJKDE8PDApIC8vIFIvVyAoc2V0IG9ubHkpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfSUNTUjJfQVVUT1NFVAkoMTw8NykgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX0lDU1IyX0lTTwkJKDE8PDYpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMl9NT0RFSU4JKDE8PDUpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19JQ1NSMl9ETUFJRU4JKDE8PDQpIC8vIFIvVworCisjZGVmaW5lIFMzQzI0MTBfVURDX09DU1IxX0NMUkRUCQkoMTw8NykgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX09DU1IxX1NFTlRTVEwJKDE8PDYpIC8vIFIvVyAoY2xlYXIgb25seSkKKyNkZWZpbmUgUzNDMjQxMF9VRENfT0NTUjFfU0VORFNUTAkoMTw8NSkgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX09DU1IxX0ZGTFVTSAkoMTw8NCkgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX09DU1IxX0RFUlJPUgkoMTw8MykgLy8gUgorI2RlZmluZSBTM0MyNDEwX1VEQ19PQ1NSMV9PVlJSVU4JKDE8PDIpIC8vIFIvVyAoY2xlYXIgb25seSkKKyNkZWZpbmUgUzNDMjQxMF9VRENfT0NTUjFfUEtUUkRZCSgxPDwwKSAvLyBSL1cgKGNsZWFyIG9ubHkpCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfT0NTUjJfQVVUT0NMUgkoMTw8NykgLy8gUi9XCisjZGVmaW5lIFMzQzI0MTBfVURDX09DU1IyX0lTTwkJKDE8PDYpIC8vIFIvVworI2RlZmluZSBTM0MyNDEwX1VEQ19PQ1NSMl9ETUFJRU4JKDE8PDUpIC8vIFIvVworCisjZGVmaW5lIFMzQzI0MTBfVURDX1NFVElYKHgpCSAgICBcCisJX19yYXdfd3JpdGVsKFMzQzI0MTBfVURDX0lOREVYXyAjIyB4LCBTM0MyNDEwX1VEQ19JTkRFWF9SRUcpOworCisKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAwX0NTUl9PUEtSRFkJKDE8PDApCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMF9DU1JfSVBLUkRZCSgxPDwxKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDBfQ1NSX1NFTlRTVEwJKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfVURDX0VQMF9DU1JfREUJCSgxPDwzKQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDBfQ1NSX1NFCQkoMTw8NCkKKyNkZWZpbmUgUzNDMjQxMF9VRENfRVAwX0NTUl9TRU5EU1RMCSgxPDw1KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDBfQ1NSX1NPUEtUUkRZCSgxPDw2KQorI2RlZmluZSBTM0MyNDEwX1VEQ19FUDBfQ1NSX1NTRQkoMTw8NykKKworI2RlZmluZSBTM0MyNDEwX1VEQ19NQVhQXzgJCSgxPDwwKQorI2RlZmluZSBTM0MyNDEwX1VEQ19NQVhQXzE2CQkoMTw8MSkKKyNkZWZpbmUgUzNDMjQxMF9VRENfTUFYUF8zMgkJKDE8PDIpCisjZGVmaW5lIFMzQzI0MTBfVURDX01BWFBfNjQJCSgxPDwzKQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXdhdGNoZG9nLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3Mtd2F0Y2hkb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTk5Y2E2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLXdhdGNoZG9nLmgKQEAgLTAsMCArMSw0NiBAQAorLyogbGludXgvaW5jbHVkZS9hc20vYXJjaC1zM2MyNDEwL3JlZ3Mwd2F0Y2hkb2cuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KKyAqCQkgICAgICBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0xJTlVYLworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUzNDMjQxMCBXYXRjaGRvZyB0aW1lciBjb250cm9sCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgIDIxLTA2LTIwMDMgICAgIEJKRCAgICAgQ3JlYXRlZCBmaWxlCisgKiAgICAxMi0wMy0yMDA0ICAgICBCSkQgICAgIFVwZGF0ZWQgaW5jbHVkZSBwcm90ZWN0aW9uCisgKiAgICAxMC0wMy0yMDA1ICAgICBMQ1ZSICAgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBCisqLworCisKKyNpZm5kZWYgX19BU01fQVJDSF9SRUdTX1dBVENIRE9HX0gKKyNkZWZpbmUgX19BU01fQVJDSF9SRUdTX1dBVENIRE9HX0ggIiRJZDogd2F0Y2hkb2cuaCx2IDEuMiAyMDAzLzA0LzI5IDEzOjMxOjA5IGJlbiBFeHAgJCIKKworI2RlZmluZSBTM0MyNDEwX1dET0dSRUcoeCkgKCh4KSArIFMzQzI0WFhfVkFfV0FUQ0hET0cpCisKKyNkZWZpbmUgUzNDMjQxMF9XVENPTgkgICBTM0MyNDEwX1dET0dSRUcoMHgwMCkKKyNkZWZpbmUgUzNDMjQxMF9XVERBVAkgICBTM0MyNDEwX1dET0dSRUcoMHgwNCkKKyNkZWZpbmUgUzNDMjQxMF9XVENOVAkgICBTM0MyNDEwX1dET0dSRUcoMHgwOCkKKworLyogdGhlIHdhdGNoZG9nIGNhbiBlaXRoZXIgZ2VuZXJhdGUgYSByZXNldCBwdWxzZSwgb3IgYW4KKyAqIGludGVycnVwdC4KKyAqLworCisjZGVmaW5lIFMzQzI0MTBfV1RDT05fUlNURU4gICAoMHgwMSkKKyNkZWZpbmUgUzNDMjQxMF9XVENPTl9JTlRFTiAgICgxPDwyKQorI2RlZmluZSBTM0MyNDEwX1dUQ09OX0VOQUJMRSAgKDE8PDUpCisKKyNkZWZpbmUgUzNDMjQxMF9XVENPTl9ESVYxNiAgICgwPDwzKQorI2RlZmluZSBTM0MyNDEwX1dUQ09OX0RJVjMyICAgKDE8PDMpCisjZGVmaW5lIFMzQzI0MTBfV1RDT05fRElWNjQgICAoMjw8MykKKyNkZWZpbmUgUzNDMjQxMF9XVENPTl9ESVYxMjggICgzPDwzKQorCisjZGVmaW5lIFMzQzI0MTBfV1RDT05fUFJFU0NBTEUoeCkgKCh4KSA8PCA4KQorI2RlZmluZSBTM0MyNDEwX1dUQ09OX1BSRVNDQUxFX01BU0sgKDB4ZmYwMCkKKworI2VuZGlmIC8qIF9fQVNNX0FSQ0hfUkVHU19XQVRDSERPR19IICovCisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwZDg1MAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvc3lzdGVtLmgKQEAgLTAsMCArMSw5MCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9zeXN0ZW0uaAorICoKKyAqIChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcworICogIEJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4KKyAqCisgKiBTM0MyNDEwIC0gU3lzdGVtIGZ1bmN0aW9uIGRlZmluZXMgYW5kIGluY2x1ZGVzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMTItTWF5LTIwMDMgQkpEICBDcmVhdGVkIGZpbGUKKyAqICAxNC1NYXktMjAwMyBCSkQgIFJlbW92ZWQgaWRsZSB0byBhaWQgZGVidWdnaW5nCisgKiAgMTItSnVuLTIwMDMgQkpEICBBZGRlZCByZXNldCB2aWEgd2F0Y2hkb2cKKyAqICAwNC1TZXAtMjAwMyBCSkQgIE1vdmVkIHRvIHYyLjYKKyAqICAyOC1PY3QtMjAwNCBCSkQgIEFkZGVkIG92ZXItcmlkZSBmb3IgaWRsZSwgYW5kIGZpeGVkIHJlc2V0IHBhbmljKCkKKyAqLworCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9tYXAuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9pZGxlLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9yZWdzLXdhdGNoZG9nLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvcmVncy1jbG9jay5oPgorCit2b2lkICgqczNjMjR4eF9pZGxlKSh2b2lkKTsKKwordm9pZCBzM2MyNHh4X2RlZmF1bHRfaWRsZSh2b2lkKQoreworCXZvaWQgX19pb21lbSAqcmVnID0gUzNDMjQxMF9DTEtDT047CisJdW5zaWduZWQgbG9uZyB0bXA7CisJaW50IGk7CisKKwkvKiBpZGxlIHRoZSBzeXN0ZW0gYnkgdXNpbmcgdGhlIGlkbGUgbW9kZSB3aGljaCB3aWxsIHdhaXQgZm9yIGFuCisJICogaW50ZXJydXB0IHRvIGhhcHBlbiBiZWZvcmUgcmVzdGFydGluZyB0aGUgc3lzdGVtLgorCSAqLworCisJLyogV2FybmluZzogZ29pbmcgaW50byBpZGxlIHN0YXRlIHVwc2V0cyBqdGFnIHNjYW5uaW5nICovCisKKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwocmVnKSB8ICgxPDwyKSwgcmVnKTsKKworCS8qIHRoZSBzYW1zdW5nIHBvcnQgc2VlbXMgdG8gZG8gYSBsb29wIGFuZCB0aGVuIHVuc2V0IGlkbGUuLiAqLworCWZvciAoaSA9IDA7IGkgPCA1MDsgaSsrKSB7CisJCXRtcCArPSBfX3Jhd19yZWFkbChyZWcpOyAvKiBlbnN1cmUgbG9vcCBub3Qgb3B0aW1pc2VkIG91dCAqLworCX0KKworCS8qIHRoaXMgYml0IGlzIG5vdCBjbGVhcmVkIG9uIHJlLXN0YXJ0Li4uICovCisKKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwocmVnKSAmIH4oMTw8MiksIHJlZyk7Cit9CisKK3N0YXRpYyB2b2lkIGFyY2hfaWRsZSh2b2lkKQoreworCWlmIChzM2MyNHh4X2lkbGUgIT0gTlVMTCkKKwkJKHMzYzI0eHhfaWRsZSkoKTsKKwllbHNlCisJCXMzYzI0eHhfZGVmYXVsdF9pZGxlKCk7Cit9CisKKworc3RhdGljIHZvaWQKK2FyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCWlmIChtb2RlID09ICdzJykgeworCQljcHVfcmVzZXQoMCk7CisJfQorCisJcHJpbnRrKCJhcmNoX3Jlc2V0OiBhdHRlbXB0aW5nIHdhdGNoZG9nIHJlc2V0XG4iKTsKKworCV9fcmF3X3dyaXRlbCgwLCBTM0MyNDEwX1dUQ09OKTsJICAvKiBkaXNhYmxlIHdhdGNoZG9nLCB0byBiZSBzYWZlICAqLworCisJLyogcHV0IGluaXRpYWwgdmFsdWVzIGludG8gY291bnQgYW5kIGRhdGEgKi8KKwlfX3Jhd193cml0ZWwoMHgxMDAsIFMzQzI0MTBfV1RDTlQpOworCV9fcmF3X3dyaXRlbCgweDEwMCwgUzNDMjQxMF9XVERBVCk7CisKKwkvKiBzZXQgdGhlIHdhdGNoZG9nIHRvIGdvIGFuZCByZXNldC4uLiAqLworCV9fcmF3X3dyaXRlbChTM0MyNDEwX1dUQ09OX0VOQUJMRXxTM0MyNDEwX1dUQ09OX0RJVjE2fFMzQzI0MTBfV1RDT05fUlNURU4gfAorCQkgICAgIFMzQzI0MTBfV1RDT05fUFJFU0NBTEUoMHg4MCksIFMzQzI0MTBfV1RDT04pOworCisJLyogd2FpdCBmb3IgcmVzZXQgdG8gYXNzZXJ0Li4uICovCisJbWRlbGF5KDUwMDApOworCisJcHJpbnRrKEtFUk5fRVJSICJXYXRjaGRvZyByZXNldCBmYWlsZWQgdG8gYXNzZXJ0IHJlc2V0XG4iKTsKKworCS8qIHdlJ2xsIHRha2UgYSBqdW1wIHRocm91Z2ggemVybyBhcyBhIHBvb3Igc2Vjb25kICovCisJY3B1X3Jlc2V0KDApOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC90aW1leC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NThhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3RpbWV4LmgKQEAgLTAsMCArMSwzMiBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC90aW1leC5oCisgKgorICogKGMpIDIwMDMtMjAwNSBTaW10ZWMgRWxlY3Ryb25pY3MKKyAqICBCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CisgKgorICogUzNDMjQxMCAtIHRpbWUgcGFyYW1ldGVycworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICogIDAyLVNlcC0yMDAzIEJKRCAgQ3JlYXRlZCBmaWxlCisgKiAgMDUtSmFuLTIwMDQgQkpEICBVcGRhdGVkIGZvciBMaW51eCAyLjYuMAorICogIDIyLU5vdi0yMDA0IEJKRCAgRml4ZWQgQ0xPQ0tfVElDS19SQVRFCisgKiAgMTAtSmFuLTIwMDQgQkpEICBSZW1vdmVkIHMzYzI0MTBfY2xvY2tfdGlja19yYXRlCisqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfVElNRVhfSAorI2RlZmluZSBfX0FTTV9BUkNIX1RJTUVYX0gKKworLyogQ0xPQ0tfVElDS19SQVRFIG5lZWRzIHRvIGJlIGV2YWx1YXRhYmxlIGJ5IHRoZSBjcHAsIHNvIG1ha2luZyBpdAorICogYSB2YXJpYWJsZSBpcyB1c2VsZXNzLiBJdCBzZWVtcyBhcyBsb25nIGFzIHdlIG1ha2Ugb3VyIHRpbWVycyBhbgorICogZXhhY3QgbXVsdGlwbGUgb2YgSFosIGFueSB2YWx1ZSB0aGF0IG1ha2VzIGEgMS0+MSBjb3JyZXNwb25kZW5jZQorICogZm9yIHRoZSB0aW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvL2Zyb20gamlmZmllcyBpcyBhY2NlcHRhYmxlLgorKi8KKworCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURSAxMjAwMDAwMAorCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1RJTUVYX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0MjUyZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdW5jb21wcmVzcy5oCkBAIC0wLDAgKzEsMTU4IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3VuY29tcHJlc3MuaAorICoKKyAqIChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcworICogICAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFMzQzI0MTAgLSB1bmNvbXByZXNzIGNvZGUKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAyMi1NYXktMjAwMyBCSkQgIENyZWF0ZWQKKyAqICAwOC1TZXAtMjAwMyBCSkQgIE1vdmVkIHRvIGxpbnV4IHYyLjYKKyAqICAxMi1NYXItMjAwNCBCSkQgIFVwZGF0ZWQgaGVhZGVyIHByb3RlY3Rpb24KKyAqICAxMi1PY3QtMjAwNCBCSkQgIFRha2UgYWNjb3VudCBvZiBkZWJ1ZyB1YXJ0IGNvbmZpZ3VyYXRpb24KKyAqICAxNS1Ob3YtMjAwNCBCSkQgIEZpeGVkIHVhcnQgY29uZmlndXJhdGlvbgorICogIDIyLUZlYi0yMDA1IEJKRCAgQWRkZWQgd2F0Y2hkb2cgdG8gdW5jb21wcmVzcworKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSAorI2RlZmluZSBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qIGRlZmluZXMgZm9yIFVBUlQgcmVnaXN0ZXJzICovCisjaW5jbHVkZSAiYXNtL2FyY2gvcmVncy1zZXJpYWwuaCIKKyNpbmNsdWRlICJhc20vYXJjaC9yZWdzLWdwaW8uaCIKKyNpbmNsdWRlICJhc20vYXJjaC9yZWdzLXdhdGNoZG9nLmgiCisKKyNpbmNsdWRlIDxhc20vYXJjaC9tYXAuaD4KKworLyogd29ya2luZyBpbiBwaHlzaWNhbCBzcGFjZS4uLiAqLworI3VuZGVmIFMzQzI0MTBfR1BJT1JFRworI3VuZGVmIFMzQzI0MTBfV0RPR1JFRworCisjZGVmaW5lIFMzQzI0MTBfR1BJT1JFRyh4KSAoKFMzQzI0MTBfUEFfR1BJTyArICh4KSkpCisjZGVmaW5lIFMzQzI0MTBfV0RPR1JFRyh4KSAoKFMzQzI0MTBfUEFfV0FUQ0hET0cgKyAoeCkpKQorCisvKiBob3cgbWFueSBieXRlcyB3ZSBhbGxvdyBpbnRvIHRoZSBGSUZPIGF0IGEgdGltZSBpbiBGSUZPIG1vZGUgKi8KKyNkZWZpbmUgRklGT19NQVgJICgxNCkKKworI2RlZmluZSB1YXJ0X2Jhc2UgUzNDMjQxMF9QQV9VQVJUICsgKDB4NDAwMCpDT05GSUdfUzNDMjQxMF9MT1dMRVZFTF9VQVJUX1BPUlQpCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQKK3VhcnRfd3IodW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbCkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnB0cjsKKworCXB0ciA9ICh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikocmVnICsgdWFydF9iYXNlKTsKKwkqcHRyID0gdmFsOworfQorCitzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQKK3VhcnRfcmQodW5zaWduZWQgaW50IHJlZykKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnB0cjsKKworCXB0ciA9ICh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikocmVnICsgdWFydF9iYXNlKTsKKwlyZXR1cm4gKnB0cjsKK30KKworCisvKiB3ZSBjYW4gZGVhbCB3aXRoIHRoZSBjYXNlIHRoZSBVQVJUcyBhcmUgYmVpbmcgcnVuCisgKiBpbiBGSUZPIG1vZGUsIHNvIHRoYXQgd2UgZG9uJ3QgaG9sZCB1cCBvdXIgZXhlY3V0aW9uCisgKiB3YWl0aW5nIGZvciB0eCB0byBoYXBwZW4uLi4KKyovCisKK3N0YXRpYyB2b2lkCitwdXRjKGNoYXIgY2gpCit7CisJaW50IGNwdWlkID0gKigodm9sYXRpbGUgdW5zaWduZWQgaW50ICopUzNDMjQxMF9HU1RBVFVTMSk7CisKKwljcHVpZCAmPSBTM0MyNDEwX0dTVEFUVVMxX0lETUFTSzsKKworCWlmIChjaCA9PSAnXG4nKQorCQlwdXRjKCdccicpOyAgICAvKiBleHBhbmQgbmV3bGluZSB0byBcclxuICovCisKKwlpZiAodWFydF9yZChTM0MyNDEwX1VGQ09OKSAmIFMzQzI0MTBfVUZDT05fRklGT01PREUpIHsKKwkJaW50IGxldmVsOworCisJCXdoaWxlICgxKSB7CisJCQlsZXZlbCA9IHVhcnRfcmQoUzNDMjQxMF9VRlNUQVQpOworCisJCQlpZiAoY3B1aWQgPT0gUzNDMjQxMF9HU1RBVFVTMV8yNDQwKSB7CisJCQkJbGV2ZWwgJj0gUzNDMjQ0MF9VRlNUQVRfVFhNQVNLOworCQkJCWxldmVsID4+PSBTM0MyNDQwX1VGU1RBVF9UWFNISUZUOworCQkJfSBlbHNlIHsKKwkJCQlsZXZlbCAmPSBTM0MyNDEwX1VGU1RBVF9UWE1BU0s7CisJCQkJbGV2ZWwgPj49IFMzQzI0MTBfVUZTVEFUX1RYU0hJRlQ7CisJCQl9CisKKwkJCWlmIChsZXZlbCA8IEZJRk9fTUFYKQorCQkJCWJyZWFrOworCQl9CisKKwl9IGVsc2UgeworCQkvKiBub3QgdXNpbmcgZmlmb3MgKi8KKworCQl3aGlsZSAoKHVhcnRfcmQoUzNDMjQxMF9VVFJTVEFUKSAmIFMzQzI0MTBfVVRSU1RBVF9UWEUpICE9IFMzQzI0MTBfVVRSU1RBVF9UWEUpOworCX0KKworCS8qIHdyaXRlIGJ5dGUgdG8gdHJhbnNtaXNzaW9uIHJlZ2lzdGVyICovCisJdWFydF93cihTM0MyNDEwX1VUWEgsIGNoKTsKK30KKworc3RhdGljIHZvaWQKK3B1dHN0cihjb25zdCBjaGFyICpwdHIpCit7CisJZm9yICg7ICpwdHIgIT0gJ1wwJzsgcHRyKyspIHsKKwkJcHV0YygqcHRyKTsKKwl9Cit9CisKKy8qIENPTkZJR19TM0MyNDEwX0JPT1RfV0FUQ0hET0cKKyAqCisgKiBTaW1wbGUgYm9vdC10aW1lIHdhdGNoZG9nIHNldHVwLCB0byByZWJvb3QgdGhlIHN5c3RlbSBpZiB0aGVyZSBpcworICogYW55IHByb2JsZW0gd2l0aCB0aGUgYm9vdCBwcm9jZXNzCisqLworCisjaWZkZWYgQ09ORklHX1MzQzI0MTBfQk9PVF9XQVRDSERPRworCisjZGVmaW5lIFdET0dfQ09VTlQgKDB4ZmYwMCkKKworI2RlZmluZSBfX3Jhd193cml0ZWwoZCxhZCkgZG8geyAqKCh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoYWQpKSA9IChkKTsgfSB3aGlsZSgwKQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9kZWNvbXBfd2RvZyh2b2lkKQoreworCV9fcmF3X3dyaXRlbChXRE9HX0NPVU5ULCBTM0MyNDEwX1dUQ05UKTsKK30KKworc3RhdGljIHZvaWQgYXJjaF9kZWNvbXBfd2RvZ19zdGFydCh2b2lkKQoreworCV9fcmF3X3dyaXRlbChXRE9HX0NPVU5ULCBTM0MyNDEwX1dUREFUKTsKKwlfX3Jhd193cml0ZWwoV0RPR19DT1VOVCwgUzNDMjQxMF9XVENOVCk7CisJX19yYXdfd3JpdGVsKFMzQzI0MTBfV1RDT05fRU5BQkxFIHwgUzNDMjQxMF9XVENPTl9ESVYxMjggfCBTM0MyNDEwX1dUQ09OX1JTVEVOIHwgUzNDMjQxMF9XVENPTl9QUkVTQ0FMRSgweDQwKSwgUzNDMjQxMF9XVENPTik7Cit9CisKKyNlbHNlCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2dfc3RhcnQoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBlcnJvcihjaGFyICplcnIpOworCitzdGF0aWMgdm9pZAorYXJjaF9kZWNvbXBfc2V0dXAodm9pZCkKK3sKKwkvKiB3ZSBtYXkgbmVlZCB0byBzZXR1cCB0aGUgdWFydChzKSBoZXJlIGlmIHdlIGFyZSBub3QgcnVubmluZworCSAqIG9uIGFuIEJBU1QuLi4gdGhlIEJBU1Qgd2lsbCBoYXZlIGxlZnQgdGhlIHVhcnRzIGNvbmZpZ3VyZWQKKwkgKiBhZnRlciBjYWxsaW5nIGxpbnV4LgorCSAqLworCisJYXJjaF9kZWNvbXBfd2RvZ19zdGFydCgpOworfQorCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1VOQ09NUFJFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC91c2ItY29udHJvbC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC91c2ItY29udHJvbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYzg1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3VzYi1jb250cm9sLmgKQEAgLTAsMCArMSw0NSBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC91c2ItY29udHJvbC5oCisgKgorICogKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzCisgKiAgQmVuIERvb2tzIDxiZW5Ac2ltdGVjLmNvLnVrPgorICoKKyAqIFMzQzI0MTAgLSB1c2IgcG9ydCBpbmZvcm1hdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogQ2hhbmdlbG9nOgorICogIDExLVNlcC0yMDA0IEJKRCAgQ3JlYXRlZCBmaWxlCisgKiAgMjEtU2VwLTIwMDQgQkpEICBVcGRhdGVkIHBvcnQgaW5mbworKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1VTQkNPTlRST0xfSAorI2RlZmluZSBfX0FTTV9BUkNIX1VTQkNPTlRST0xfSCAiaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC91c2ItY29udHJvbC5oIgorCisjZGVmaW5lIFMzQ19IQ0RGTEdfVVNFRAkoMSkKKworc3RydWN0IHMzYzI0MTBfaGNkX3BvcnQgeworCXVuc2lnbmVkIGNoYXIJZmxhZ3M7CisJdW5zaWduZWQgY2hhcglwb3dlcjsKKwl1bnNpZ25lZCBjaGFyCW9jX3N0YXR1czsKKwl1bnNpZ25lZCBjaGFyCW9jX2NoYW5nZWQ7Cit9OworCitzdHJ1Y3QgczNjMjQxMF9oY2RfaW5mbyB7CisJc3RydWN0IHVzYl9oY2QJCSpoY2Q7CisJc3RydWN0IHMzYzI0MTBfaGNkX3BvcnQJcG9ydFsyXTsKKworCXZvaWQJCSgqcG93ZXJfY29udHJvbCkoaW50IHBvcnQsIGludCB0byk7CisJdm9pZAkJKCplbmFibGVfb2MpKHN0cnVjdCBzM2MyNDEwX2hjZF9pbmZvICosIGludCBvbik7CisJdm9pZAkJKCpyZXBvcnRfb2MpKHN0cnVjdCBzM2MyNDEwX2hjZF9pbmZvICosIGludCBwb3J0cyk7Cit9OworCitzdGF0aWMgdm9pZCBpbmxpbmUgczNjMjQxMF9yZXBvcnRfb2Moc3RydWN0IHMzYzI0MTBfaGNkX2luZm8gKmluZm8sIGludCBwb3J0cykKK3sKKwlpZiAoaW5mby0+cmVwb3J0X29jICE9IE5VTEwpIHsKKwkJKGluZm8tPnJlcG9ydF9vYykoaW5mbywgcG9ydHMpOworCX0KK30KKworI2VuZGlmIC8qX19BU01fQVJDSF9VU0JDT05UUk9MX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92bWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlNzJhZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdm1hbGxvYy5oCisgKgorICogZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pb3AzeHgvdm1hbGxvYy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcyA8bGludXhAc2ltdGVjLmNvLnVrPgorICoJCSAgICAgIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBTM0MyNDEwIHZtYWxsb2MgZGVmaW5pdGlvbgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgICAxMi1NYXItMjAwNCBCSkQJRml4ZWQgaGVhZGVyLCBhZGRlZCBpbmNsdWRlIHByb3RlY3Rpb24KKyAqICAgIDEyPU1hci0yMDA0IEJKRAlGaXhlZCBWTUFMTE9DX0VORCBkZWZpbml0aW9ucworICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9WTUFMTE9DX0gKKyNkZWZpbmUgX19BU01fQVJDSF9WTUFMTE9DX0gKKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX1ZNQUREUih4KSAoKHVuc2lnbmVkIGxvbmcpKHgpKQorI2RlZmluZSBWTUFMTE9DX0VORAkgICgweEUwMDAwMDAwKQorCisjZW5kaWYgLyogX19BU01fQVJDSF9WTUFMTE9DX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdnIxMDAwLWNwbGQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdnIxMDAwLWNwbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWUzNzNhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtY3BsZC5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdnIxMDAwLWNwbGQuaAorICoKKyAqIChjKSAyMDAzIFNpbXRlYyBFbGVjdHJvbmljcworICogIEJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4KKyAqCisgKiBWUjEwMDAgLSBDUExEIGNvbnRyb2wgY29uc3RhbnRzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMjUtTWF5LTIwMDMgQkpEICBDcmVhdGVkIGZpbGUsIGFkZGVkIENUUkwxIHJlZ2lzdGVycworICogIDE5LU1hci0yMDA0IEJKRCAgQWRkZWQgVlIxMDAwIENQTEQgZGVmaW5pdGlvbnMKKyovCisKKyNpZm5kZWYgX19BU01fQVJDSF9WUjEwMDBDUExEX0gKKyNkZWZpbmUgX19BU01fQVJDSF9WUjEwMDBDUExEX0gKKworI2RlZmluZSBWUjEwMDBfQ1BMRF9DVFJMMl9SQU1XRU4gICAgICgweDA0KSAgIC8qIFNSQU0gV3JpdGUgRW5hYmxlICovCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1ZSMTAwMENQTERfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtaXJxLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3ZyMTAwMC1pcnEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTRmNzcxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtaXJxLmgKQEAgLTAsMCArMSwzMCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtaXJxLmgKKyAqCisgKiAoYykgMjAwMywyMDA0IFNpbXRlYyBFbGVjdHJvbmljcworICogIEJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4KKyAqCisgKiBNYWNoaW5lIFZSMTAwMCAtIElSUSBOdW1iZXIgZGVmaW5pdGlvbnMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIENoYW5nZWxvZzoKKyAqICAwNi1KYW4tMjAwMyBCSkQgIExpbnV4IDIuNi4wIHZlcnNpb24KKyAqICAxOS1NYXItMjAwNCBCSkQgIFVwZGF0ZXMgZm9yIFZSMTAwMAorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9WUjEwMDBJUlFfSAorI2RlZmluZSBfX0FTTV9BUkNIX1ZSMTAwMElSUV9ICisKKy8qIGlycSBudW1iZXJzIHRvIG9uYm9hcmQgcGVyaXBoZXJhbHMgKi8KKworI2RlZmluZSBJUlFfVVNCT0MJICAgICBJUlFfRUlOVDE5CisjZGVmaW5lIElSUV9JREUwCSAgICAgSVJRX0VJTlQxNgorI2RlZmluZSBJUlFfSURFMQkgICAgIElSUV9FSU5UMTcKKyNkZWZpbmUgSVJRX1ZSMTAwMF9TRVJJQUwgICAgSVJRX0VJTlQxMgorI2RlZmluZSBJUlFfVlIxMDAwX0RNOTAwMEEgICBJUlFfRUlOVDEwCisjZGVmaW5lIElSUV9WUjEwMDBfRE05MDAwTiAgIElSUV9FSU5UOQorI2RlZmluZSBJUlFfU01BTEVSVAkgICAgIElSUV9FSU5UOAorCisjZW5kaWYgLyogX19BU01fQVJDSF9WUjEwMDBJUlFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtbWFwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3ZyMTAwMC1tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjdjOTM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC92cjEwMDAtbWFwLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvdnIxMDAwLW1hcC5oCisgKgorICogKGMpIDIwMDMtMjAwNSBTaW10ZWMgRWxlY3Ryb25pY3MKKyAqICBCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CisgKgorICogTWFjaGluZSBWUjEwMDAgLSBNZW1vcnkgbWFwIGRlZmluaXRpb25zCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBDaGFuZ2Vsb2c6CisgKiAgMDYtSmFuLTIwMDMgQkpEICBMaW51eCAyLjYuMCB2ZXJzaW9uLCBzcGxpdCBzcGVjaWZpY3MgZnJvbSBhcmNoL21hcC5oCisgKiAgMTItTWFyLTIwMDQgQkpEICBGaXhlZCBoZWFkZXIgaW5jbHVkZSBwcm90ZWN0aW9uCisgKiAgMTktTWFyLTIwMDQgQkpEICBDb3BpZWQgdG8gVlIxMDAwIG1hY2hpbmUgaGVhZGVycy4KKyAqICAxOS1KYW4tMjAwNSBCSkQgIFVwZGF0ZWQgbWFwIGRlZmluaXRpb25zCisqLworCisvKiBuZWVkcyBhcmNoL21hcC5oIGluY2x1ZGluZyB3aXRoIHRoaXMgKi8KKworLyogb2ssIHdlJ3ZlIHVzZWQgdXAgdG8gMHgxMzAwMDAwMCwgbm93IHdlIG5lZWQgdG8gZmluZCBzcGFjZSBmb3IgdGhlCisgKiBwZXJpcGhlcmFscyB0aGF0IGxpdmUgaW4gdGhlIG5HQ1NbeF0gYXJlYXMsIHdoaWNoIGFyZSBxdWl0ZSBudW1lcm91cworICogaW4gdGhlaXIgc3BhY2UuIFdlIGFsc28gaGF2ZSB0aGUgYm9hcmQncyBDUExEIHRvIGZpbmQgcmVnaXN0ZXIgc3BhY2UKKyAqIGZvci4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfVlIxMDAwTUFQX0gKKyNkZWZpbmUgX19BU01fQVJDSF9WUjEwMDBNQVBfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvYmFzdC1tYXAuaD4KKworI2RlZmluZSBWUjEwMDBfSU9BRERSKHgpIEJBU1RfSU9BRERSKHgpCisKKy8qIHdlIHB1dCB0aGUgQ1BMRCByZWdpc3RlcnMgbmV4dCwgdG8gZ2V0IHRoZW0gb3V0IG9mIHRoZSB3YXkgKi8KKworI2RlZmluZSBWUjEwMDBfVkFfQ1RSTDEJICAgIFZSMTAwMF9JT0FERFIoMHgwMDAwMDAwMCkJIC8qIDB4MDEzMDAwMDAgKi8KKyNkZWZpbmUgVlIxMDAwX1BBX0NUUkwxCSAgICAoUzNDMjQxMF9DUzUgfCAweDc4MDAwMDApCisKKyNkZWZpbmUgVlIxMDAwX1ZBX0NUUkwyCSAgICBWUjEwMDBfSU9BRERSKDB4MDAxMDAwMDApCSAvKiAweDAxNDAwMDAwICovCisjZGVmaW5lIFZSMTAwMF9QQV9DVFJMMgkgICAgKFMzQzI0MTBfQ1MxIHwgMHg2MDAwMDAwKQorCisjZGVmaW5lIFZSMTAwMF9WQV9DVFJMMwkgICAgVlIxMDAwX0lPQUREUigweDAwMjAwMDAwKQkgLyogMHgwMTUwMDAwMCAqLworI2RlZmluZSBWUjEwMDBfUEFfQ1RSTDMJICAgIChTM0MyNDEwX0NTMSB8IDB4NjgwMDAwMCkKKworI2RlZmluZSBWUjEwMDBfVkFfQ1RSTDQJICAgIFZSMTAwMF9JT0FERFIoMHgwMDMwMDAwMCkJIC8qIDB4MDE2MDAwMDAgKi8KKyNkZWZpbmUgVlIxMDAwX1BBX0NUUkw0CSAgICAoUzNDMjQxMF9DUzEgfCAweDcwMDAwMDApCisKKy8qIG5leHQsIHdlIGhhdmUgdGhlIFBDMTA0IElTQSBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgVlIxMDAwX1BBX1BDMTA0X0lSUVJFUSAgKFMzQzI0MTBfQ1M1IHwgMHg2MDAwMDAwKSAvKiAweDAxNzAwMDAwICovCisjZGVmaW5lIFZSMTAwMF9WQV9QQzEwNF9JUlFSRVEgIFZSMTAwMF9JT0FERFIoMHgwMDQwMDAwMCkKKworI2RlZmluZSBWUjEwMDBfUEFfUEMxMDRfSVJRUkFXICAoUzNDMjQxMF9DUzUgfCAweDY4MDAwMDApIC8qIDB4MDE4MDAwMDAgKi8KKyNkZWZpbmUgVlIxMDAwX1ZBX1BDMTA0X0lSUVJBVyAgVlIxMDAwX0lPQUREUigweDAwNTAwMDAwKQorCisjZGVmaW5lIFZSMTAwMF9QQV9QQzEwNF9JUlFNQVNLIChTM0MyNDEwX0NTNSB8IDB4NzAwMDAwMCkgLyogMHgwMTkwMDAwMCAqLworI2RlZmluZSBWUjEwMDBfVkFfUEMxMDRfSVJRTUFTSyBWUjEwMDBfSU9BRERSKDB4MDA2MDAwMDApCisKKy8qIDB4RTAwMDAwMDAgY29udGFpbnMgdGhlIElPIHNwYWNlIHRoYXQgaXMgc3BsaXQgYnkgc3BlZWQgYW5kCisgKiB3ZXRoZXIgdGhlIGFjY2VzcyBpcyBmb3IgOCBvciAxNmJpdCBJTy4uLiB0aGlzIGVuc3VyZXMgdGhhdAorICogdGhlIGNvcnJlY3QgYWNjZXNzIGlzIG1hZGUKKyAqCisgKiAweDEwMDAwMDAwIG9mIHNwYWNlLCBwYXJ0aXRpb25lZCBhcyBzbzoKKyAqCisgKiAweDAwMDAwMDAwIHRvIDB4MDQwMDAwMDAgIDhiaXQsICBzbG93CisgKiAweDA0MDAwMDAwIHRvIDB4MDgwMDAwMDAgIDE2Yml0LCBzbG93CisgKiAweDA4MDAwMDAwIHRvIDB4MEMwMDAwMDAgIDE2Yml0LCBuZXQKKyAqIDB4MEMwMDAwMDAgdG8gMHgxMDAwMDAwMCAgMTZiaXQsIGZhc3QKKyAqCisgKiBlYWNoIG9mIHRoZXNlIHNwYWNlcyBoYXMgdGhlIGZvbGxvd2luZyBpbjoKKyAqCisgKiAweDAyMDAwMDAwIHRvIDB4MDIxMDAwMDAgMU1CICBJREUgcHJpbWFyeSBjaGFubmVsCisgKiAweDAyMTAwMDAwIHRvIDB4MDIyMDAwMDAgMU1CICBJREUgcHJpbWFyeSBjaGFubmVsIGF1eAorICogMHgwMjIwMDAwMCB0byAweDAyNDAwMDAwIDFNQiAgSURFIHNlY29uZGFyeSBjaGFubmVsCisgKiAweDAyMzAwMDAwIHRvIDB4MDI0MDAwMDAgMU1CICBJREUgc2Vjb25kYXJ5IGNoYW5uZWwgYXV4CisgKiAweDAyNTAwMDAwIHRvIDB4MDI2MDAwMDAgMU1CICBEYXZpY29tIERNOTAwMCBldGhlcm5ldCBjb250cm9sbGVycworICogMHgwMjYwMDAwMCB0byAweDAyNzAwMDAwIDFNQgorICoKKyAqIHRoZSBwaHlpc2NhbCBsYXlvdXQgb2YgdGhlIHpvbmVzIGFyZToKKyAqICBuR0NTMiAtIDhiaXQsIHNsb3cKKyAqICBuR0NTMyAtIDE2Yml0LCBzbG93CisgKiAgbkdDUzQgLSAxNmJpdCwgbmV0CisgKiAgbkdDUzUgLSAxNmJpdCwgZmFzdAorICovCisKKyNkZWZpbmUgVlIxMDAwX1ZBX01VTFRJU1BBQ0UgKDB4RTAwMDAwMDApCisKKyNkZWZpbmUgVlIxMDAwX1ZBX0lTQUlPCQkgICAoVlIxMDAwX1ZBX01VTFRJU1BBQ0UgKyAweDAwMDAwMDAwKQorI2RlZmluZSBWUjEwMDBfVkFfSVNBTUVNCSAgIChWUjEwMDBfVkFfTVVMVElTUEFDRSArIDB4MDEwMDAwMDApCisjZGVmaW5lIFZSMTAwMF9WQV9JREVQUkkJICAgKFZSMTAwMF9WQV9NVUxUSVNQQUNFICsgMHgwMjAwMDAwMCkKKyNkZWZpbmUgVlIxMDAwX1ZBX0lERVBSSUFVWAkgICAoVlIxMDAwX1ZBX01VTFRJU1BBQ0UgKyAweDAyMTAwMDAwKQorI2RlZmluZSBWUjEwMDBfVkFfSURFU0VDCSAgIChWUjEwMDBfVkFfTVVMVElTUEFDRSArIDB4MDIyMDAwMDApCisjZGVmaW5lIFZSMTAwMF9WQV9JREVTRUNBVVgJICAgKFZSMTAwMF9WQV9NVUxUSVNQQUNFICsgMHgwMjMwMDAwMCkKKyNkZWZpbmUgVlIxMDAwX1ZBX0FTSVhORVQJICAgKFZSMTAwMF9WQV9NVUxUSVNQQUNFICsgMHgwMjQwMDAwMCkKKyNkZWZpbmUgVlIxMDAwX1ZBX0RNOTAwMAkgICAoVlIxMDAwX1ZBX01VTFRJU1BBQ0UgKyAweDAyNTAwMDAwKQorI2RlZmluZSBWUjEwMDBfVkFfU1VQRVJJTwkgICAoVlIxMDAwX1ZBX01VTFRJU1BBQ0UgKyAweDAyNjAwMDAwKQorCisvKiBwaHlzaWNhbCBvZmZzZXQgYWRkcmVzc2VzIGZvciB0aGUgcGVyaXBoZXJhbHMgKi8KKworI2RlZmluZSBWUjEwMDBfUEFfSURFUFJJCSAgICgweDAyMDAwMDAwKQorI2RlZmluZSBWUjEwMDBfUEFfSURFUFJJQVVYCSAgICgweDAyODAwMDAwKQorI2RlZmluZSBWUjEwMDBfUEFfSURFU0VDCSAgICgweDAzMDAwMDAwKQorI2RlZmluZSBWUjEwMDBfUEFfSURFU0VDQVVYCSAgICgweDAzODAwMDAwKQorI2RlZmluZSBWUjEwMDBfUEFfRE05MDAwCSAgICgweDA1MDAwMDAwKQorCisjZGVmaW5lIFZSMTAwMF9QQV9TRVJJQUwJICAgKDB4MTE4MDAwMDApCisjZGVmaW5lIFZSMTAwMF9WQV9TRVJJQUwJICAgKFZSMTAwMF9JT0FERFIoMHgwMDcwMDAwMCkpCisKKy8qIFZSMTAwMCByYW0gaXMgaW4gQ1MxLCB3aXRoIEEyNi4uQTI0ID0gMl8xMDEgKi8KKyNkZWZpbmUgVlIxMDAwX1BBX1NSQU0JCSAgIChTM0MyNDEwX0NTMSB8IDB4MDUwMDAwMDApCisKKy8qIHNvbWUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBwZXJpcGhlcmFscyAqLworCisjZGVmaW5lIFZSMTAwMF9ETTkwMDBfQ1MJIFZSMTAwMF9WQU1fQ1M0CisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX1ZSMTAwME1BUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvU0EtMTEwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL1NBLTExMDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmFhZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL1NBLTExMDAuaApAQCAtMCwwICsxLDIwNzIgQEAKKy8qCisgKglGSUxFICAgIAlTQS0xMTAwLmgKKyAqCisgKglWZXJzaW9uIAkxLjIKKyAqCUF1dGhvciAgCUNvcHlyaWdodCAoYykgTWFyYyBBLiBWaXJlZGF6LCAxOTk4CisgKgkgICAgICAgIAlERUMgV2VzdGVybiBSZXNlYXJjaCBMYWJvcmF0b3J5LCBQYWxvIEFsdG8sIENBCisgKglEYXRlICAgIAlKYW51YXJ5IDE5OTggKEFwcmlsIDE5OTcpCisgKglTeXN0ZW0gIAlTdHJvbmdBUk0gU0EtMTEwMAorICoJTGFuZ3VhZ2UJQyBvciBBUk0gQXNzZW1ibHkKKyAqCVB1cnBvc2UgCURlZmluaXRpb24gb2YgY29uc3RhbnRzIHJlbGF0ZWQgdG8gdGhlIFN0cm9uZ0FSTQorICoJICAgICAgICAJU0EtMTEwMCBtaWNyb3Byb2Nlc3NvciAoQWR2YW5jZWQgUklTQyBNYWNoaW5lIChBUk0pCisgKgkgICAgICAgIAlhcmNoaXRlY3R1cmUgdmVyc2lvbiA0KS4gVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZQorICoJICAgICAgICAJU3Ryb25nQVJNIFNBLTExMDAgZGF0YSBzaGVldCB2ZXJzaW9uIDIuMi4KKyAqCisgKi8KKworCisvKiBCZSBzdXJlIHRoYXQgdmlydHVhbCBtYXBwaW5nIGlzIGRlZmluZWQgcmlnaHQgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZXJyb3IgWW91IG11c3QgaW5jbHVkZSBoYXJkd2FyZS5oIG5vdCBTQS0xMTAwLmgKKyNlbmRpZgorCisjaW5jbHVkZSAiYml0ZmllbGQuaCIKKworLyoKKyAqIFNBMTEwMCBDUyBsaW5lIHRvIHBoeXNpY2FsIGFkZHJlc3MKKyAqLworCisjZGVmaW5lIFNBMTEwMF9DUzBfUEhZUwkweDAwMDAwMDAwCisjZGVmaW5lIFNBMTEwMF9DUzFfUEhZUwkweDA4MDAwMDAwCisjZGVmaW5lIFNBMTEwMF9DUzJfUEhZUwkweDEwMDAwMDAwCisjZGVmaW5lIFNBMTEwMF9DUzNfUEhZUwkweDE4MDAwMDAwCisjZGVmaW5lIFNBMTEwMF9DUzRfUEhZUwkweDQwMDAwMDAwCisjZGVmaW5lIFNBMTEwMF9DUzVfUEhZUwkweDQ4MDAwMDAwCisKKy8qCisgKiBQZXJzb25hbCBDb21wdXRlciBNZW1vcnkgQ2FyZCBJbnRlcm5hdGlvbmFsIEFzc29jaWF0aW9uIChQQ01DSUEpIHNvY2tldHMKKyAqLworCisjZGVmaW5lIFBDTUNJQVBydFNwCTB4MDQwMDAwMDAJLyogUENNQ0lBIFBhcnRpdGlvbiBTcGFjZSBbYnl0ZV0gICAqLworI2RlZmluZSBQQ01DSUFTcAkoNCpQQ01DSUFQcnRTcCkJLyogUENNQ0lBIFNwYWNlIFtieXRlXSAgICAgICAgICAgICAqLworI2RlZmluZSBQQ01DSUFJT1NwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBJL08gU3BhY2UgW2J5dGVdICAgICAgICAgKi8KKyNkZWZpbmUgUENNQ0lBQXR0clNwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICAgKi8KKyNkZWZpbmUgUENNQ0lBTWVtU3AJUENNQ0lBUHJ0U3AJLyogUENNQ0lBIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgICAqLworCisjZGVmaW5lIFBDTUNJQTBTcAlQQ01DSUFTcAkvKiBQQ01DSUEgMCBTcGFjZSBbYnl0ZV0gICAgICAgICAgICovCisjZGVmaW5lIFBDTUNJQTBJT1NwCVBDTUNJQUlPU3AJLyogUENNQ0lBIDAgSS9PIFNwYWNlIFtieXRlXSAgICAgICAqLworI2RlZmluZSBQQ01DSUEwQXR0clNwCVBDTUNJQUF0dHJTcAkvKiBQQ01DSUEgMCBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICovCisjZGVmaW5lIFBDTUNJQTBNZW1TcAlQQ01DSUFNZW1TcAkvKiBQQ01DSUEgMCBNZW1vcnkgU3BhY2UgW2J5dGVdICAgICovCisKKyNkZWZpbmUgUENNQ0lBMVNwCVBDTUNJQVNwCS8qIFBDTUNJQSAxIFNwYWNlIFtieXRlXSAgICAgICAgICAgKi8KKyNkZWZpbmUgUENNQ0lBMUlPU3AJUENNQ0lBSU9TcAkvKiBQQ01DSUEgMSBJL08gU3BhY2UgW2J5dGVdICAgICAgICovCisjZGVmaW5lIFBDTUNJQTFBdHRyU3AJUENNQ0lBQXR0clNwCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSBTcGFjZSBbYnl0ZV0gKi8KKyNkZWZpbmUgUENNQ0lBMU1lbVNwCVBDTUNJQU1lbVNwCS8qIFBDTUNJQSAxIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgKi8KKworI2RlZmluZSBfUENNQ0lBKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgWzAuLjFdICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MjAwMDAwMDAgKyAoTmIpKlBDTUNJQVNwKQorI2RlZmluZSBfUENNQ0lBSU8oTmIpCV9QQ01DSUEgKE5iKQkvKiBQQ01DSUEgSS9PIFswLi4xXSAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUFBdHRyKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgQXR0cmlidXRlIFswLi4xXSAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKF9QQ01DSUEgKE5iKSArIDIqUENNQ0lBUHJ0U3ApCisjZGVmaW5lIF9QQ01DSUFNZW0oTmIpCSAgICAgICAgCS8qIFBDTUNJQSBNZW1vcnkgWzAuLjFdICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoX1BDTUNJQSAoTmIpICsgMypQQ01DSUFQcnRTcCkKKworI2RlZmluZSBfUENNQ0lBMAlfUENNQ0lBICgwKQkvKiBQQ01DSUEgMCAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUEwSU8JX1BDTUNJQUlPICgwKQkvKiBQQ01DSUEgMCBJL08gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUEwQXR0cglfUENNQ0lBQXR0ciAoMCkJLyogUENNQ0lBIDAgQXR0cmlidXRlICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBME1lbQlfUENNQ0lBTWVtICgwKQkvKiBQQ01DSUEgMCBNZW1vcnkgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgX1BDTUNJQTEJX1BDTUNJQSAoMSkJLyogUENNQ0lBIDEgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBMUlPCV9QQ01DSUFJTyAoMSkJLyogUENNQ0lBIDEgSS9PICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBfUENNQ0lBMUF0dHIJX1BDTUNJQUF0dHIgKDEpCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX1BDTUNJQTFNZW0JX1BDTUNJQU1lbSAoMSkJLyogUENNQ0lBIDEgTWVtb3J5ICAgICAgICAgICAgICAgICAqLworCisKKy8qCisgKiBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBEZXZpY2UgQ29udHJvbGxlciAoVURDKSBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgU2VyMFVEQ0NSIAlTZXJpYWwgcG9ydCAwIFVuaXZlcnNhbCBTZXJpYWwgQnVzIChVU0IpIERldmljZQorICogICAgICAgICAgICAgIAlDb250cm9sbGVyIChVREMpIENvbnRyb2wgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgU2VyMFVEQ0FSIAlTZXJpYWwgcG9ydCAwIFVuaXZlcnNhbCBTZXJpYWwgQnVzIChVU0IpIERldmljZQorICogICAgICAgICAgICAgIAlDb250cm9sbGVyIChVREMpIEFkZHJlc3MgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgU2VyMFVEQ09NUAlTZXJpYWwgcG9ydCAwIFVuaXZlcnNhbCBTZXJpYWwgQnVzIChVU0IpIERldmljZQorICogICAgICAgICAgICAgIAlDb250cm9sbGVyIChVREMpIE91dHB1dCBNYXhpbXVtIFBhY2tldCBzaXplIHJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjBVRENJTVAJU2VyaWFsIHBvcnQgMCBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBEZXZpY2UKKyAqICAgICAgICAgICAgICAJQ29udHJvbGxlciAoVURDKSBJbnB1dCBNYXhpbXVtIFBhY2tldCBzaXplIHJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjBVRENDUzAJU2VyaWFsIHBvcnQgMCBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBEZXZpY2UKKyAqICAgICAgICAgICAgICAJQ29udHJvbGxlciAoVURDKSBDb250cm9sL1N0YXR1cyByZWdpc3RlciBlbmQtcG9pbnQgMAorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIwVURDQ1MxCVNlcmlhbCBwb3J0IDAgVW5pdmVyc2FsIFNlcmlhbCBCdXMgKFVTQikgRGV2aWNlCisgKiAgICAgICAgICAgICAgCUNvbnRyb2xsZXIgKFVEQykgQ29udHJvbC9TdGF0dXMgcmVnaXN0ZXIgZW5kLXBvaW50IDEKKyAqICAgICAgICAgICAgICAJKG91dHB1dCwgcmVhZC93cml0ZSkuCisgKiAgICBTZXIwVURDQ1MyCVNlcmlhbCBwb3J0IDAgVW5pdmVyc2FsIFNlcmlhbCBCdXMgKFVTQikgRGV2aWNlCisgKiAgICAgICAgICAgICAgCUNvbnRyb2xsZXIgKFVEQykgQ29udHJvbC9TdGF0dXMgcmVnaXN0ZXIgZW5kLXBvaW50IDIKKyAqICAgICAgICAgICAgICAJKGlucHV0LCByZWFkL3dyaXRlKS4KKyAqICAgIFNlcjBVRENEMCAJU2VyaWFsIHBvcnQgMCBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBEZXZpY2UKKyAqICAgICAgICAgICAgICAJQ29udHJvbGxlciAoVURDKSBEYXRhIHJlZ2lzdGVyIGVuZC1wb2ludCAwCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjBVRENXQyAJU2VyaWFsIHBvcnQgMCBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBEZXZpY2UKKyAqICAgICAgICAgICAgICAJQ29udHJvbGxlciAoVURDKSBXcml0ZSBDb3VudCByZWdpc3RlciBlbmQtcG9pbnQgMAorICogICAgICAgICAgICAgIAkocmVhZCkuCisgKiAgICBTZXIwVURDRFIgCVNlcmlhbCBwb3J0IDAgVW5pdmVyc2FsIFNlcmlhbCBCdXMgKFVTQikgRGV2aWNlCisgKiAgICAgICAgICAgICAgCUNvbnRyb2xsZXIgKFVEQykgRGF0YSBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBTZXIwVURDU1IgCVNlcmlhbCBwb3J0IDAgVW5pdmVyc2FsIFNlcmlhbCBCdXMgKFVTQikgRGV2aWNlCisgKiAgICAgICAgICAgICAgCUNvbnRyb2xsZXIgKFVEQykgU3RhdHVzIFJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqLworCisjZGVmaW5lIFNlcjBVRENDUglfX1JFRygweDgwMDAwMDAwKSAgLyogU2VyLiBwb3J0IDAgVURDIENvbnRyb2wgUmVnLiAqLworI2RlZmluZSBTZXIwVURDQVIJX19SRUcoMHg4MDAwMDAwNCkgIC8qIFNlci4gcG9ydCAwIFVEQyBBZGRyZXNzIFJlZy4gKi8KKyNkZWZpbmUgU2VyMFVEQ09NUAlfX1JFRygweDgwMDAwMDA4KSAgLyogU2VyLiBwb3J0IDAgVURDIE91dHB1dCBNYXhpbXVtIFBhY2tldCBzaXplIHJlZy4gKi8KKyNkZWZpbmUgU2VyMFVEQ0lNUAlfX1JFRygweDgwMDAwMDBDKSAgLyogU2VyLiBwb3J0IDAgVURDIElucHV0IE1heGltdW0gUGFja2V0IHNpemUgcmVnLiAqLworI2RlZmluZSBTZXIwVURDQ1MwCV9fUkVHKDB4ODAwMDAwMTApICAvKiBTZXIuIHBvcnQgMCBVREMgQ29udHJvbC9TdGF0dXMgcmVnLiBlbmQtcG9pbnQgMCAqLworI2RlZmluZSBTZXIwVURDQ1MxCV9fUkVHKDB4ODAwMDAwMTQpICAvKiBTZXIuIHBvcnQgMCBVREMgQ29udHJvbC9TdGF0dXMgcmVnLiBlbmQtcG9pbnQgMSAob3V0cHV0KSAqLworI2RlZmluZSBTZXIwVURDQ1MyCV9fUkVHKDB4ODAwMDAwMTgpICAvKiBTZXIuIHBvcnQgMCBVREMgQ29udHJvbC9TdGF0dXMgcmVnLiBlbmQtcG9pbnQgMiAoaW5wdXQpICovCisjZGVmaW5lIFNlcjBVRENEMAlfX1JFRygweDgwMDAwMDFDKSAgLyogU2VyLiBwb3J0IDAgVURDIERhdGEgcmVnLiBlbmQtcG9pbnQgMCAqLworI2RlZmluZSBTZXIwVURDV0MJX19SRUcoMHg4MDAwMDAyMCkgIC8qIFNlci4gcG9ydCAwIFVEQyBXcml0ZSBDb3VudCByZWcuIGVuZC1wb2ludCAwICovCisjZGVmaW5lIFNlcjBVRENEUglfX1JFRygweDgwMDAwMDI4KSAgLyogU2VyLiBwb3J0IDAgVURDIERhdGEgUmVnLiAqLworI2RlZmluZSBTZXIwVURDU1IJX19SRUcoMHg4MDAwMDAzMCkgIC8qIFNlci4gcG9ydCAwIFVEQyBTdGF0dXMgUmVnLiAqLworCisjZGVmaW5lIFVEQ0NSX1VERAkweDAwMDAwMDAxCS8qIFVEQyBEaXNhYmxlICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1JfVURBCTB4MDAwMDAwMDIJLyogVURDIEFjdGl2ZSAocmVhZCkgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUl9SRVNJTQkweDAwMDAwMDA0CS8qIFJlc3VtZSBJbnRlcnJ1cHQgTWFzaywgcGVyIGVycmF0YSAqLworI2RlZmluZSBVRENDUl9FSU0JMHgwMDAwMDAwOAkvKiBFbmQtcG9pbnQgMCBJbnRlcnJ1cHQgTWFzayAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChkaXNhYmxlKSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1JfUklNCTB4MDAwMDAwMTAJLyogUmVjZWl2ZSBJbnRlcnJ1cHQgTWFzayAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAoZGlzYWJsZSkgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVEQ0NSX1RJTQkweDAwMDAwMDIwCS8qIFRyYW5zbWl0IEludGVycnVwdCBNYXNrICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKGRpc2FibGUpICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUl9TUk0JMHgwMDAwMDA0MAkvKiBTdXNwZW5kL1Jlc3VtZSBpbnRlcnJ1cHQgTWFzayAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChkaXNhYmxlKSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1JfU1VTSU0JVURDQ1JfU1JNCS8qIFBlciBlcnJhdGEsIFNSTSBqdXN0IG1hc2tzIHN1c3BlbmQgKi8KKyNkZWZpbmUgVURDQ1JfUkVNCTB4MDAwMDAwODAJLyogUkVzZXQgaW50ZXJydXB0IE1hc2sgKGRpc2FibGUpICAqLworCisjZGVmaW5lIFVEQ0FSX0FERAlGbGQgKDcsIDApCS8qIGZ1bmN0aW9uIEFERHJlc3MgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBVRENPTVBfT1VUTUFYUAlGbGQgKDgsIDApCS8qIE9VVHB1dCBNQVhpbXVtIFBhY2tldCBzaXplIC0gMSAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogW2J5dGVdICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENPTVBfT3V0TWF4UGt0KFNpemUpICAJLyogT3V0cHV0IE1heGltdW0gUGFja2V0IHNpemUgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFsxLi4yNTYgYnl0ZV0gICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChTaXplKSAtIDEpIDw8IEZTaGZ0IChVRENPTVBfT1VUTUFYUCkpCisKKyNkZWZpbmUgVURDSU1QX0lOTUFYUAlGbGQgKDgsIDApCS8qIElOcHV0IE1BWGltdW0gUGFja2V0IHNpemUgLSAxICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogW2J5dGVdICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENJTVBfSW5NYXhQa3QoU2l6ZSkgICAJLyogSW5wdXQgTWF4aW11bSBQYWNrZXQgc2l6ZSAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFsxLi4yNTYgYnl0ZV0gICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChTaXplKSAtIDEpIDw8IEZTaGZ0IChVRENJTVBfSU5NQVhQKSkKKworI2RlZmluZSBVRENDUzBfT1BSCTB4MDAwMDAwMDEJLyogT3V0cHV0IFBhY2tldCBSZWFkeSAocmVhZCkgICAgICAqLworI2RlZmluZSBVRENDUzBfSVBSCTB4MDAwMDAwMDIJLyogSW5wdXQgUGFja2V0IFJlYWR5ICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUzBfU1NUCTB4MDAwMDAwMDQJLyogU2VudCBTVGFsbCAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUzBfRlNUCTB4MDAwMDAwMDgJLyogRm9yY2UgU1RhbGwgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUzBfREUJMHgwMDAwMDAxMAkvKiBEYXRhIEVuZCAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVEQ0NTMF9TRQkweDAwMDAwMDIwCS8qIFNldHVwIEVuZCAocmVhZCkgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1MwX1NPCTB4MDAwMDAwNDAJLyogU2VydmljZWQgT3V0cHV0IHBhY2tldCByZWFkeSAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAod3JpdGUpICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVEQ0NTMF9TU0UJMHgwMDAwMDA4MAkvKiBTZXJ2aWNlZCBTZXR1cCBFbmQgKHdyaXRlKSAgICAgICovCisKKyNkZWZpbmUgVURDQ1MxX1JGUwkweDAwMDAwMDAxCS8qIFJlY2VpdmUgRklGTyAxMi1ieXRlcyBvciBtb3JlICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogU2VydmljZSByZXF1ZXN0IChyZWFkKSAgICAgICAgICAqLworI2RlZmluZSBVRENDUzFfUlBDCTB4MDAwMDAwMDIJLyogUmVjZWl2ZSBQYWNrZXQgQ29tcGxldGUgICAgICAgICAqLworI2RlZmluZSBVRENDUzFfUlBFCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBQYWNrZXQgRXJyb3IgKHJlYWQpICAgICAqLworI2RlZmluZSBVRENDUzFfU1NUCTB4MDAwMDAwMDgJLyogU2VudCBTVGFsbCAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUzFfRlNUCTB4MDAwMDAwMTAJLyogRm9yY2UgU1RhbGwgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVRENDUzFfUk5FCTB4MDAwMDAwMjAJLyogUmVjZWl2ZSBGSUZPIE5vdCBFbXB0eSAocmVhZCkgICAqLworCisjZGVmaW5lIFVEQ0NTMl9URlMJMHgwMDAwMDAwMQkvKiBUcmFuc21pdCBGSUZPIDgtYnl0ZXMgb3IgbGVzcyAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1MyX1RQQwkweDAwMDAwMDAyCS8qIFRyYW5zbWl0IFBhY2tldCBDb21wbGV0ZSAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1MyX1RQRQkweDAwMDAwMDA0CS8qIFRyYW5zbWl0IFBhY2tldCBFcnJvciAocmVhZCkgICAgKi8KKyNkZWZpbmUgVURDQ1MyX1RVUgkweDAwMDAwMDA4CS8qIFRyYW5zbWl0IEZJRk8gVW5kZXItUnVuICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1MyX1NTVAkweDAwMDAwMDEwCS8qIFNlbnQgU1RhbGwgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVURDQ1MyX0ZTVAkweDAwMDAwMDIwCS8qIEZvcmNlIFNUYWxsICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBVRENEMF9EQVRBCUZsZCAoOCwgMCkJLyogcmVjZWl2ZS90cmFuc21pdCBEQVRBIEZJRk9zICAgICAqLworCisjZGVmaW5lIFVEQ1dDX1dDCUZsZCAoNCwgMCkJLyogV3JpdGUgQ291bnQgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIFVEQ0RSX0RBVEEJRmxkICg4LCAwKQkvKiByZWNlaXZlL3RyYW5zbWl0IERBVEEgRklGT3MgICAgICovCisKKyNkZWZpbmUgVURDU1JfRUlSCTB4MDAwMDAwMDEJLyogRW5kLXBvaW50IDAgSW50ZXJydXB0IFJlcXVlc3QgICAqLworI2RlZmluZSBVRENTUl9SSVIJMHgwMDAwMDAwMgkvKiBSZWNlaXZlIEludGVycnVwdCBSZXF1ZXN0ICAgICAgICovCisjZGVmaW5lIFVEQ1NSX1RJUgkweDAwMDAwMDA0CS8qIFRyYW5zbWl0IEludGVycnVwdCBSZXF1ZXN0ICAgICAgKi8KKyNkZWZpbmUgVURDU1JfU1VTSVIJMHgwMDAwMDAwOAkvKiBTVVNwZW5kIEludGVycnVwdCBSZXF1ZXN0ICAgICAgICovCisjZGVmaW5lIFVEQ1NSX1JFU0lSCTB4MDAwMDAwMTAJLyogUkVTdW1lIEludGVycnVwdCBSZXF1ZXN0ICAgICAgICAqLworI2RlZmluZSBVRENTUl9SU1RJUgkweDAwMDAwMDIwCS8qIFJlU2VUIEludGVycnVwdCBSZXF1ZXN0ICAgICAgICAgKi8KKworCisvKgorICogVW5pdmVyc2FsIEFzeW5jaHJvbm91cyBSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFNlcjFVVENSMCAJU2VyaWFsIHBvcnQgMSBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBDb250cm9sIFJlZ2lzdGVyIDAKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyMVVUQ1IxIAlTZXJpYWwgcG9ydCAxIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIENvbnRyb2wgUmVnaXN0ZXIgMQorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIxVVRDUjIgCVNlcmlhbCBwb3J0IDEgVW5pdmVyc2FsIEFzeW5jaHJvbm91cworICogICAgICAgICAgICAgIAlSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgQ29udHJvbCBSZWdpc3RlciAyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFVVENSMyAJU2VyaWFsIHBvcnQgMSBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBDb250cm9sIFJlZ2lzdGVyIDMKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyMVVURFIgIAlTZXJpYWwgcG9ydCAxIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIERhdGEgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyMVVUU1IwIAlTZXJpYWwgcG9ydCAxIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIFN0YXR1cyBSZWdpc3RlciAwCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFVVFNSMSAJU2VyaWFsIHBvcnQgMSBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBTdGF0dXMgUmVnaXN0ZXIgMSAocmVhZCkuCisgKgorICogICAgU2VyMlVUQ1IwIAlTZXJpYWwgcG9ydCAyIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIENvbnRyb2wgUmVnaXN0ZXIgMAorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIyVVRDUjEgCVNlcmlhbCBwb3J0IDIgVW5pdmVyc2FsIEFzeW5jaHJvbm91cworICogICAgICAgICAgICAgIAlSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgQ29udHJvbCBSZWdpc3RlciAxCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjJVVENSMiAJU2VyaWFsIHBvcnQgMiBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBDb250cm9sIFJlZ2lzdGVyIDIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyMlVUQ1IzIAlTZXJpYWwgcG9ydCAyIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIENvbnRyb2wgUmVnaXN0ZXIgMworICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIyVVRDUjQgCVNlcmlhbCBwb3J0IDIgVW5pdmVyc2FsIEFzeW5jaHJvbm91cworICogICAgICAgICAgICAgIAlSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgQ29udHJvbCBSZWdpc3RlciA0CisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjJVVERSICAJU2VyaWFsIHBvcnQgMiBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBEYXRhIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjJVVFNSMCAJU2VyaWFsIHBvcnQgMiBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBTdGF0dXMgUmVnaXN0ZXIgMAorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIyVVRTUjEgCVNlcmlhbCBwb3J0IDIgVW5pdmVyc2FsIEFzeW5jaHJvbm91cworICogICAgICAgICAgICAgIAlSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgU3RhdHVzIFJlZ2lzdGVyIDEgKHJlYWQpLgorICoKKyAqICAgIFNlcjNVVENSMCAJU2VyaWFsIHBvcnQgMyBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBDb250cm9sIFJlZ2lzdGVyIDAKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyM1VUQ1IxIAlTZXJpYWwgcG9ydCAzIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIENvbnRyb2wgUmVnaXN0ZXIgMQorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBTZXIzVVRDUjIgCVNlcmlhbCBwb3J0IDMgVW5pdmVyc2FsIEFzeW5jaHJvbm91cworICogICAgICAgICAgICAgIAlSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkgQ29udHJvbCBSZWdpc3RlciAyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjNVVENSMyAJU2VyaWFsIHBvcnQgMyBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBDb250cm9sIFJlZ2lzdGVyIDMKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyM1VURFIgIAlTZXJpYWwgcG9ydCAzIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIERhdGEgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgU2VyM1VUU1IwIAlTZXJpYWwgcG9ydCAzIFVuaXZlcnNhbCBBc3luY2hyb25vdXMKKyAqICAgICAgICAgICAgICAJUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpIFN0YXR1cyBSZWdpc3RlciAwCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjNVVFNSMSAJU2VyaWFsIHBvcnQgMyBVbml2ZXJzYWwgQXN5bmNocm9ub3VzCisgKiAgICAgICAgICAgICAgCVJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKSBTdGF0dXMgUmVnaXN0ZXIgMSAocmVhZCkuCisgKgorICogQ2xvY2tzCisgKiAgICBmeHRsLCBUeHRsCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBzeXN0ZW0gY3J5c3RhbCAoMy42ODY0IE1IegorICogICAgICAgICAgICAgIAlvciAzLjU3OTUgTUh6KS4KKyAqICAgIGZ1YSwgVHVhICAJRnJlcXVlbmN5LCBwZXJpb2Qgb2YgdGhlIFVBUlQgY29tbXVuaWNhdGlvbi4KKyAqLworCisjZGVmaW5lIF9VVENSMChOYikJX19SRUcoMHg4MDAxMDAwMCArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgQ29udHJvbCBSZWcuIDAgWzEuLjNdICovCisjZGVmaW5lIF9VVENSMShOYikJX19SRUcoMHg4MDAxMDAwNCArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgQ29udHJvbCBSZWcuIDEgWzEuLjNdICovCisjZGVmaW5lIF9VVENSMihOYikJX19SRUcoMHg4MDAxMDAwOCArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgQ29udHJvbCBSZWcuIDIgWzEuLjNdICovCisjZGVmaW5lIF9VVENSMyhOYikJX19SRUcoMHg4MDAxMDAwQyArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgQ29udHJvbCBSZWcuIDMgWzEuLjNdICovCisjZGVmaW5lIF9VVENSNChOYikJX19SRUcoMHg4MDAxMDAxMCArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgQ29udHJvbCBSZWcuIDQgWzJdICovCisjZGVmaW5lIF9VVERSKE5iKQlfX1JFRygweDgwMDEwMDE0ICsgKChOYikgLSAxKSoweDAwMDIwMDAwKSAgLyogVUFSVCBEYXRhIFJlZy4gWzEuLjNdICovCisjZGVmaW5lIF9VVFNSMChOYikJX19SRUcoMHg4MDAxMDAxQyArICgoTmIpIC0gMSkqMHgwMDAyMDAwMCkgIC8qIFVBUlQgU3RhdHVzIFJlZy4gMCBbMS4uM10gKi8KKyNkZWZpbmUgX1VUU1IxKE5iKQlfX1JFRygweDgwMDEwMDIwICsgKChOYikgLSAxKSoweDAwMDIwMDAwKSAgLyogVUFSVCBTdGF0dXMgUmVnLiAxIFsxLi4zXSAqLworCisjZGVmaW5lIFNlcjFVVENSMAlfVVRDUjAgKDEpCS8qIFNlci4gcG9ydCAxIFVBUlQgQ29udHJvbCBSZWcuIDAgKi8KKyNkZWZpbmUgU2VyMVVUQ1IxCV9VVENSMSAoMSkJLyogU2VyLiBwb3J0IDEgVUFSVCBDb250cm9sIFJlZy4gMSAqLworI2RlZmluZSBTZXIxVVRDUjIJX1VUQ1IyICgxKQkvKiBTZXIuIHBvcnQgMSBVQVJUIENvbnRyb2wgUmVnLiAyICovCisjZGVmaW5lIFNlcjFVVENSMwlfVVRDUjMgKDEpCS8qIFNlci4gcG9ydCAxIFVBUlQgQ29udHJvbCBSZWcuIDMgKi8KKyNkZWZpbmUgU2VyMVVURFIJX1VURFIgKDEpCS8qIFNlci4gcG9ydCAxIFVBUlQgRGF0YSBSZWcuICAgICAgKi8KKyNkZWZpbmUgU2VyMVVUU1IwCV9VVFNSMCAoMSkJLyogU2VyLiBwb3J0IDEgVUFSVCBTdGF0dXMgUmVnLiAwICAqLworI2RlZmluZSBTZXIxVVRTUjEJX1VUU1IxICgxKQkvKiBTZXIuIHBvcnQgMSBVQVJUIFN0YXR1cyBSZWcuIDEgICovCisKKyNkZWZpbmUgU2VyMlVUQ1IwCV9VVENSMCAoMikJLyogU2VyLiBwb3J0IDIgVUFSVCBDb250cm9sIFJlZy4gMCAqLworI2RlZmluZSBTZXIyVVRDUjEJX1VUQ1IxICgyKQkvKiBTZXIuIHBvcnQgMiBVQVJUIENvbnRyb2wgUmVnLiAxICovCisjZGVmaW5lIFNlcjJVVENSMglfVVRDUjIgKDIpCS8qIFNlci4gcG9ydCAyIFVBUlQgQ29udHJvbCBSZWcuIDIgKi8KKyNkZWZpbmUgU2VyMlVUQ1IzCV9VVENSMyAoMikJLyogU2VyLiBwb3J0IDIgVUFSVCBDb250cm9sIFJlZy4gMyAqLworI2RlZmluZSBTZXIyVVRDUjQJX1VUQ1I0ICgyKQkvKiBTZXIuIHBvcnQgMiBVQVJUIENvbnRyb2wgUmVnLiA0ICovCisjZGVmaW5lIFNlcjJVVERSCV9VVERSICgyKQkvKiBTZXIuIHBvcnQgMiBVQVJUIERhdGEgUmVnLiAgICAgICovCisjZGVmaW5lIFNlcjJVVFNSMAlfVVRTUjAgKDIpCS8qIFNlci4gcG9ydCAyIFVBUlQgU3RhdHVzIFJlZy4gMCAgKi8KKyNkZWZpbmUgU2VyMlVUU1IxCV9VVFNSMSAoMikJLyogU2VyLiBwb3J0IDIgVUFSVCBTdGF0dXMgUmVnLiAxICAqLworCisjZGVmaW5lIFNlcjNVVENSMAlfVVRDUjAgKDMpCS8qIFNlci4gcG9ydCAzIFVBUlQgQ29udHJvbCBSZWcuIDAgKi8KKyNkZWZpbmUgU2VyM1VUQ1IxCV9VVENSMSAoMykJLyogU2VyLiBwb3J0IDMgVUFSVCBDb250cm9sIFJlZy4gMSAqLworI2RlZmluZSBTZXIzVVRDUjIJX1VUQ1IyICgzKQkvKiBTZXIuIHBvcnQgMyBVQVJUIENvbnRyb2wgUmVnLiAyICovCisjZGVmaW5lIFNlcjNVVENSMwlfVVRDUjMgKDMpCS8qIFNlci4gcG9ydCAzIFVBUlQgQ29udHJvbCBSZWcuIDMgKi8KKyNkZWZpbmUgU2VyM1VURFIJX1VURFIgKDMpCS8qIFNlci4gcG9ydCAzIFVBUlQgRGF0YSBSZWcuICAgICAgKi8KKyNkZWZpbmUgU2VyM1VUU1IwCV9VVFNSMCAoMykJLyogU2VyLiBwb3J0IDMgVUFSVCBTdGF0dXMgUmVnLiAwICAqLworI2RlZmluZSBTZXIzVVRTUjEJX1VUU1IxICgzKQkvKiBTZXIuIHBvcnQgMyBVQVJUIFN0YXR1cyBSZWcuIDEgICovCisKKy8qIFRob3NlIGFyZSBzdGlsbCB1c2VkIGluIHNvbWUgcGxhY2VzICovCisjZGVmaW5lIF9TZXIxVVRDUjAJX19QUkVHKFNlcjFVVENSMCkKKyNkZWZpbmUgX1NlcjJVVENSMAlfX1BSRUcoU2VyMlVUQ1IwKQorI2RlZmluZSBfU2VyM1VUQ1IwCV9fUFJFRyhTZXIzVVRDUjApCisKKy8qIFJlZ2lzdGVyIG9mZnNldHMgKi8KKyNkZWZpbmUgVVRDUjAJCTB4MDAKKyNkZWZpbmUgVVRDUjEJCTB4MDQKKyNkZWZpbmUgVVRDUjIJCTB4MDgKKyNkZWZpbmUgVVRDUjMJCTB4MGMKKyNkZWZpbmUgVVREUgkJMHgxNAorI2RlZmluZSBVVFNSMAkJMHgxYworI2RlZmluZSBVVFNSMQkJMHgyMAorCisjZGVmaW5lIFVUQ1IwX1BFCTB4MDAwMDAwMDEJLyogUGFyaXR5IEVuYWJsZSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSMF9PRVMJMHgwMDAwMDAwMgkvKiBPZGQvRXZlbiBwYXJpdHkgU2VsZWN0ICAgICAgICAgICovCisjZGVmaW5lIFVUQ1IwX09kZFBhcgkoVVRDUjBfT0VTKjApCS8qICBPZGQgUGFyaXR5ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjBfRXZlblBhcgkoVVRDUjBfT0VTKjEpCS8qICBFdmVuIFBhcml0eSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjBfU0JTCTB4MDAwMDAwMDQJLyogU3RvcCBCaXQgU2VsZWN0ICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSMF8xU3RwQml0CShVVENSMF9TQlMqMCkJLyogIDEgU3RvcCBCaXQgcGVyIGZyYW1lICAgICAgICAgICAqLworI2RlZmluZSBVVENSMF8yU3RwQml0CShVVENSMF9TQlMqMSkJLyogIDIgU3RvcCBCaXRzIHBlciBmcmFtZSAgICAgICAgICAqLworI2RlZmluZSBVVENSMF9EU1MJMHgwMDAwMDAwOAkvKiBEYXRhIFNpemUgU2VsZWN0ICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVUQ1IwXzdCaXREYXRhCShVVENSMF9EU1MqMCkJLyogIDctQml0IERhdGEgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSMF84Qml0RGF0YQkoVVRDUjBfRFNTKjEpCS8qICA4LUJpdCBEYXRhICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjBfU0NFCTB4MDAwMDAwMTAJLyogU2FtcGxlIENsb2NrIEVuYWJsZSAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAoc2VyLiBwb3J0IDE6IEdQSU8gWzE4XSwgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHNlci4gcG9ydCAzOiBHUElPIFsyMF0pICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjBfUkNFCTB4MDAwMDAwMjAJLyogUmVjZWl2ZSBDbG9jayBFZGdlIHNlbGVjdCAgICAgICAqLworI2RlZmluZSBVVENSMF9SY1JzRWRnCShVVENSMF9SQ0UqMCkJLyogIFJlY2VpdmUgY2xvY2sgUmlzaW5nLUVkZ2UgICAgICAqLworI2RlZmluZSBVVENSMF9SY0ZsRWRnCShVVENSMF9SQ0UqMSkJLyogIFJlY2VpdmUgY2xvY2sgRmFsbGluZy1FZGdlICAgICAqLworI2RlZmluZSBVVENSMF9UQ0UJMHgwMDAwMDA0MAkvKiBUcmFuc21pdCBDbG9jayBFZGdlIHNlbGVjdCAgICAgICovCisjZGVmaW5lIFVUQ1IwX1RyUnNFZGcJKFVUQ1IwX1RDRSowKQkvKiAgVHJhbnNtaXQgY2xvY2sgUmlzaW5nLUVkZ2UgICAgICovCisjZGVmaW5lIFVUQ1IwX1RyRmxFZGcJKFVUQ1IwX1RDRSoxKQkvKiAgVHJhbnNtaXQgY2xvY2sgRmFsbGluZy1FZGdlICAgICovCisjZGVmaW5lIFVUQ1IwX1NlcjJJckRBCSAgICAgICAgCS8qIFNlci4gcG9ydCAyIElyREEgc2V0dGluZ3MgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoVVRDUjBfMVN0cEJpdCArIFVUQ1IwXzhCaXREYXRhKQorCisjZGVmaW5lIFVUQ1IxX0JSRAlGbGQgKDQsIDApCS8qIEJhdWQgUmF0ZSBEaXZpc29yLzE2IC0gMSBbMTE6OF0gKi8KKyNkZWZpbmUgVVRDUjJfQlJECUZsZCAoOCwgMCkJLyogQmF1ZCBSYXRlIERpdmlzb3IvMTYgLSAxICBbNzowXSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBmdWEgPSBmeHRsLygxNiooQlJEWzExOjBdICsgMSkpICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFR1YSA9IDE2KihCUkQgWzExOjBdICsgMSkqVHh0bCAgKi8KKyNkZWZpbmUgVVRDUjFfQmRSdERpdihEaXYpICAgICAgCS8qICBCYXVkIFJhdGUgRGl2aXNvciBbMTYuLjY1NTM2XSAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMTYpLzE2ID4+IEZTaXplIChVVENSMl9CUkQpIDw8IFwKKyAgICAgICAgICAgICAgICAJIEZTaGZ0IChVVENSMV9CUkQpKQorI2RlZmluZSBVVENSMl9CZFJ0RGl2KERpdikgICAgICAJLyogIEJhdWQgUmF0ZSBEaXZpc29yIFsxNi4uNjU1MzZdICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKERpdikgLSAxNikvMTYgJiBGQWxuTXNrIChVVENSMl9CUkQpIDw8IFwKKyAgICAgICAgICAgICAgICAJIEZTaGZ0IChVVENSMl9CUkQpKQorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZnVhID0gZnh0bC8oMTYqRmxvb3IgKERpdi8xNikpICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBUdWEgPSAxNipGbG9vciAoRGl2LzE2KSpUeHRsICAgKi8KKyNkZWZpbmUgVVRDUjFfQ2VpbEJkUnREaXYoRGl2KSAgCS8qICBDZWlsLiBvZiBCZFJ0RGl2IFsxNi4uNjU1MzZdICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMSkvMTYgPj4gRlNpemUgKFVUQ1IyX0JSRCkgPDwgXAorICAgICAgICAgICAgICAgIAkgRlNoZnQgKFVUQ1IxX0JSRCkpCisjZGVmaW5lIFVUQ1IyX0NlaWxCZFJ0RGl2KERpdikgIAkvKiAgQ2VpbC4gb2YgQmRSdERpdiBbMTYuLjY1NTM2XSAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDEpLzE2ICYgRkFsbk1zayAoVVRDUjJfQlJEKSA8PCBcCisgICAgICAgICAgICAgICAgCSBGU2hmdCAoVVRDUjJfQlJEKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZ1YSA9IGZ4dGwvKDE2KkNlaWwgKERpdi8xNikpICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVHVhID0gMTYqQ2VpbCAoRGl2LzE2KSpUeHRsICAgICovCisKKyNkZWZpbmUgVVRDUjNfUlhFCTB4MDAwMDAwMDEJLyogUmVjZWl2ZSBFbmFibGUgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSM19UWEUJMHgwMDAwMDAwMgkvKiBUcmFuc21pdCBFbmFibGUgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVUQ1IzX0JSSwkweDAwMDAwMDA0CS8qIEJSZWFLIG1vZGUgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjNfUklFCTB4MDAwMDAwMDgJLyogUmVjZWl2ZSBGSUZPIDEvMy10by0yLzMtZnVsbCBvciAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBtb3JlIEludGVycnVwdCBFbmFibGUgICAgICAgICAgICovCisjZGVmaW5lIFVUQ1IzX1RJRQkweDAwMDAwMDEwCS8qIFRyYW5zbWl0IEZJRk8gMS8yLWZ1bGwgb3IgbGVzcyAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSM19MQk0JMHgwMDAwMDAyMAkvKiBMb29rLUJhY2sgTW9kZSAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVUQ1IzX1NlcjJJckRBCSAgICAgICAgCS8qIFNlci4gcG9ydCAyIElyREEgc2V0dGluZ3MgKFJJRSwgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBUSUUsIExCTSBjYW4gYmUgc2V0IG9yIGNsZWFyZWQpICovIFwKKyAgICAgICAgICAgICAgICAJKFVUQ1IzX1JYRSArIFVUQ1IzX1RYRSkKKworI2RlZmluZSBVVENSNF9IU0UJMHgwMDAwMDAwMQkvKiBIZXdsZXR0LVBhY2thcmQgU2VyaWFsIEluZnJhUmVkICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChIUC1TSVIpIG1vZHVsYXRpb24gRW5hYmxlICAgICAgKi8KKyNkZWZpbmUgVVRDUjRfTlJaCShVVENSNF9IU0UqMCkJLyogIE5vbi1SZXR1cm4gdG8gWmVybyBtb2R1bGF0aW9uICAqLworI2RlZmluZSBVVENSNF9IUFNJUgkoVVRDUjRfSFNFKjEpCS8qICBIUC1TSVIgbW9kdWxhdGlvbiAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRDUjRfTFBNCTB4MDAwMDAwMDIJLyogTG93LVBvd2VyIE1vZGUgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVVENSNF9aM18xNkJpdAkoVVRDUjRfTFBNKjApCS8qICBaZXJvIHB1bHNlID0gMy8xNiBCaXQgdGltZSAgICAgKi8KKyNkZWZpbmUgVVRDUjRfWjFfNnVzCShVVENSNF9MUE0qMSkJLyogIFplcm8gcHVsc2UgPSAxLjYgdXMgICAgICAgICAgICAqLworCisjZGVmaW5lIFVURFJfREFUQQlGbGQgKDgsIDApCS8qIHJlY2VpdmUvdHJhbnNtaXQgREFUQSBGSUZPcyAgICAgKi8KKyNpZiAwICAgICAgICAgICAJICAgICAgICAJLyogSGlkZGVuIHJlY2VpdmUgRklGTyBiaXRzICAgICAgICAqLworI2RlZmluZSBVVERSX1BSRQkweDAwMDAwMTAwCS8qICByZWNlaXZlIFBhUml0eSBFcnJvciAocmVhZCkgICAgKi8KKyNkZWZpbmUgVVREUl9GUkUJMHgwMDAwMDIwMAkvKiAgcmVjZWl2ZSBGUmFtaW5nIEVycm9yIChyZWFkKSAgICovCisjZGVmaW5lIFVURFJfUk9SCTB4MDAwMDA0MDAJLyogIFJlY2VpdmUgRklGTyBPdmVyLVJ1biAocmVhZCkgICAqLworI2VuZGlmIC8qIDAgKi8KKworI2RlZmluZSBVVFNSMF9URlMJMHgwMDAwMDAwMQkvKiBUcmFuc21pdCBGSUZPIDEvMi1mdWxsIG9yIGxlc3MgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICAgICAgKi8KKyNkZWZpbmUgVVRTUjBfUkZTCTB4MDAwMDAwMDIJLyogUmVjZWl2ZSBGSUZPIDEvMy10by0yLzMtZnVsbCBvciAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBtb3JlIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICovCisjZGVmaW5lIFVUU1IwX1JJRAkweDAwMDAwMDA0CS8qIFJlY2VpdmVyIElEbGUgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVVRTUjBfUkJCCTB4MDAwMDAwMDgJLyogUmVjZWl2ZSBCZWdpbm5pbmcgb2YgQnJlYWsgICAgICAqLworI2RlZmluZSBVVFNSMF9SRUIJMHgwMDAwMDAxMAkvKiBSZWNlaXZlIEVuZCBvZiBCcmVhayAgICAgICAgICAgICovCisjZGVmaW5lIFVUU1IwX0VJRgkweDAwMDAwMDIwCS8qIEVycm9yIEluIEZJRk8gKHJlYWQpICAgICAgICAgICAgKi8KKworI2RlZmluZSBVVFNSMV9UQlkJMHgwMDAwMDAwMQkvKiBUcmFuc21pdHRlciBCdXNZIChyZWFkKSAgICAgICAgICovCisjZGVmaW5lIFVUU1IxX1JORQkweDAwMDAwMDAyCS8qIFJlY2VpdmUgRklGTyBOb3QgRW1wdHkgKHJlYWQpICAgKi8KKyNkZWZpbmUgVVRTUjFfVE5GCTB4MDAwMDAwMDQJLyogVHJhbnNtaXQgRklGTyBOb3QgRnVsbCAocmVhZCkgICAqLworI2RlZmluZSBVVFNSMV9QUkUJMHgwMDAwMDAwOAkvKiByZWNlaXZlIFBhUml0eSBFcnJvciAocmVhZCkgICAgICovCisjZGVmaW5lIFVUU1IxX0ZSRQkweDAwMDAwMDEwCS8qIHJlY2VpdmUgRlJhbWluZyBFcnJvciAocmVhZCkgICAgKi8KKyNkZWZpbmUgVVRTUjFfUk9SCTB4MDAwMDAwMjAJLyogUmVjZWl2ZSBGSUZPIE92ZXItUnVuIChyZWFkKSAgICAqLworCisKKy8qCisgKiBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFNlcjFTRENSMCAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciAwIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRENSMSAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciAxIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRENSMiAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciAyIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRENSMyAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciAzIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRENSNCAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciA0IChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRERSICAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJRGF0YSBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBTZXIxU0RTUjAgCVNlcmlhbCBwb3J0IDEgU3luY2hyb25vdXMgRGF0YSBMaW5rIENvbnRyb2xsZXIgKFNETEMpCisgKiAgICAgICAgICAgICAgCVN0YXR1cyBSZWdpc3RlciAwIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjFTRFNSMSAJU2VyaWFsIHBvcnQgMSBTeW5jaHJvbm91cyBEYXRhIExpbmsgQ29udHJvbGxlciAoU0RMQykKKyAqICAgICAgICAgICAgICAJU3RhdHVzIFJlZ2lzdGVyIDEgKHJlYWQvd3JpdGUpLgorICoKKyAqIENsb2NrcworICogICAgZnh0bCwgVHh0bAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgc3lzdGVtIGNyeXN0YWwgKDMuNjg2NCBNSHoKKyAqICAgICAgICAgICAgICAJb3IgMy41Nzk1IE1IeikuCisgKiAgICBmc2QsIFRzZCAgCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBTRExDIGNvbW11bmljYXRpb24uCisgKi8KKworI2RlZmluZSBTZXIxU0RDUjAJX19SRUcoMHg4MDAyMDA2MCkgIC8qIFNlci4gcG9ydCAxIFNETEMgQ29udHJvbCBSZWcuIDAgKi8KKyNkZWZpbmUgU2VyMVNEQ1IxCV9fUkVHKDB4ODAwMjAwNjQpICAvKiBTZXIuIHBvcnQgMSBTRExDIENvbnRyb2wgUmVnLiAxICovCisjZGVmaW5lIFNlcjFTRENSMglfX1JFRygweDgwMDIwMDY4KSAgLyogU2VyLiBwb3J0IDEgU0RMQyBDb250cm9sIFJlZy4gMiAqLworI2RlZmluZSBTZXIxU0RDUjMJX19SRUcoMHg4MDAyMDA2QykgIC8qIFNlci4gcG9ydCAxIFNETEMgQ29udHJvbCBSZWcuIDMgKi8KKyNkZWZpbmUgU2VyMVNEQ1I0CV9fUkVHKDB4ODAwMjAwNzApICAvKiBTZXIuIHBvcnQgMSBTRExDIENvbnRyb2wgUmVnLiA0ICovCisjZGVmaW5lIFNlcjFTRERSCV9fUkVHKDB4ODAwMjAwNzgpICAvKiBTZXIuIHBvcnQgMSBTRExDIERhdGEgUmVnLiAgICAgICovCisjZGVmaW5lIFNlcjFTRFNSMAlfX1JFRygweDgwMDIwMDgwKSAgLyogU2VyLiBwb3J0IDEgU0RMQyBTdGF0dXMgUmVnLiAwICAqLworI2RlZmluZSBTZXIxU0RTUjEJX19SRUcoMHg4MDAyMDA4NCkgIC8qIFNlci4gcG9ydCAxIFNETEMgU3RhdHVzIFJlZy4gMSAgKi8KKworI2RlZmluZSBTRENSMF9TVVMJMHgwMDAwMDAwMQkvKiBTRExDL1VBUlQgU2VsZWN0ICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFNEQ1IwX1NETEMJKFNEQ1IwX1NVUyowKQkvKiAgU0RMQyBtb2RlIChUWEQxICYgUlhEMSkgICAgICAgICovCisjZGVmaW5lIFNEQ1IwX1VBUlQJKFNEQ1IwX1NVUyoxKQkvKiAgVUFSVCBtb2RlIChUWEQxICYgUlhEMSkgICAgICAgICovCisjZGVmaW5lIFNEQ1IwX1NERgkweDAwMDAwMDAyCS8qIFNpbmdsZS9Eb3VibGUgc3RhcnQgRmxhZyBzZWxlY3QgKi8KKyNkZWZpbmUgU0RDUjBfU2dsRmxnCShTRENSMF9TREYqMCkJLyogIFNpbmdsZSBzdGFydCBGbGFnICAgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMF9EYmxGbGcJKFNEQ1IwX1NERioxKQkvKiAgRG91YmxlIHN0YXJ0IEZsYWcgICAgICAgICAgICAgICovCisjZGVmaW5lIFNEQ1IwX0xCTQkweDAwMDAwMDA0CS8qIExvb2stQmFjayBNb2RlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0RDUjBfQk1TCTB4MDAwMDAwMDgJLyogQml0IE1vZHVsYXRpb24gU2VsZWN0ICAgICAgICAgICAqLworI2RlZmluZSBTRENSMF9GTTAJKFNEQ1IwX0JNUyowKQkvKiAgRnJlcS4gTW9kdWxhdGlvbiB6ZXJvICgwKSAgICAgICovCisjZGVmaW5lIFNEQ1IwX05SWgkoU0RDUjBfQk1TKjEpCS8qICBOb24tUmV0dXJuIHRvIFplcm8gbW9kdWxhdGlvbiAgKi8KKyNkZWZpbmUgU0RDUjBfU0NFCTB4MDAwMDAwMTAJLyogU2FtcGxlIENsb2NrIEVuYWJsZSAoR1BJTyBbMTZdKSAqLworI2RlZmluZSBTRENSMF9TQ0QJMHgwMDAwMDAyMAkvKiBTYW1wbGUgQ2xvY2sgRGlyZWN0aW9uIHNlbGVjdCAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChHUElPIFsxNl0pICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0RDUjBfU0Nsa0luCShTRENSMF9TQ0QqMCkJLyogIFNhbXBsZSBDbG9jayBJbnB1dCAgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMF9TQ2xrT3V0CShTRENSMF9TQ0QqMSkJLyogIFNhbXBsZSBDbG9jayBPdXRwdXQgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMF9SQ0UJMHgwMDAwMDA0MAkvKiBSZWNlaXZlIENsb2NrIEVkZ2Ugc2VsZWN0ICAgICAgICovCisjZGVmaW5lIFNEQ1IwX1JjUnNFZGcJKFNEQ1IwX1JDRSowKQkvKiAgUmVjZWl2ZSBjbG9jayBSaXNpbmctRWRnZSAgICAgICovCisjZGVmaW5lIFNEQ1IwX1JjRmxFZGcJKFNEQ1IwX1JDRSoxKQkvKiAgUmVjZWl2ZSBjbG9jayBGYWxsaW5nLUVkZ2UgICAgICovCisjZGVmaW5lIFNEQ1IwX1RDRQkweDAwMDAwMDgwCS8qIFRyYW5zbWl0IENsb2NrIEVkZ2Ugc2VsZWN0ICAgICAgKi8KKyNkZWZpbmUgU0RDUjBfVHJSc0VkZwkoU0RDUjBfVENFKjApCS8qICBUcmFuc21pdCBjbG9jayBSaXNpbmctRWRnZSAgICAgKi8KKyNkZWZpbmUgU0RDUjBfVHJGbEVkZwkoU0RDUjBfVENFKjEpCS8qICBUcmFuc21pdCBjbG9jayBGYWxsaW5nLUVkZ2UgICAgKi8KKworI2RlZmluZSBTRENSMV9BQUYJMHgwMDAwMDAwMQkvKiBBYm9ydCBBZnRlciBGcmFtZSBlbmFibGUgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChHUElPIFsxN10pICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0RDUjFfVFhFCTB4MDAwMDAwMDIJLyogVHJhbnNtaXQgRW5hYmxlICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMV9SWEUJMHgwMDAwMDAwNAkvKiBSZWNlaXZlIEVuYWJsZSAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFNEQ1IxX1JJRQkweDAwMDAwMDA4CS8qIFJlY2VpdmUgRklGTyAxLzMtdG8tMi8zLWZ1bGwgb3IgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogbW9yZSBJbnRlcnJ1cHQgRW5hYmxlICAgICAgICAgICAqLworI2RlZmluZSBTRENSMV9USUUJMHgwMDAwMDAxMAkvKiBUcmFuc21pdCBGSUZPIDEvMi1mdWxsIG9yIGxlc3MgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIEludGVycnVwdCBFbmFibGUgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0RDUjFfQU1FCTB4MDAwMDAwMjAJLyogQWRkcmVzcyBNYXRjaCBFbmFibGUgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMV9UVVMJMHgwMDAwMDA0MAkvKiBUcmFuc21pdCBGSUZPIFVuZGVyLXJ1biBTZWxlY3QgICovCisjZGVmaW5lIFNEQ1IxX0VGcm1VUm4JKFNEQ1IxX1RVUyowKQkvKiAgRW5kIEZyYW1lIG9uIFVuZGVyLVJ1biAgICAgICAgICovCisjZGVmaW5lIFNEQ1IxX0Fib3J0VVJuCShTRENSMV9UVVMqMSkJLyogIEFib3J0IG9uIFVuZGVyLVJ1biAgICAgICAgICAgICAqLworI2RlZmluZSBTRENSMV9SQUUJMHgwMDAwMDA4MAkvKiBSZWNlaXZlIEFib3J0IGludGVycnVwdCBFbmFibGUgICovCisKKyNkZWZpbmUgU0RDUjJfQU1WCUZsZCAoOCwgMCkJLyogQWRkcmVzcyBNYXRjaCBWYWx1ZSAgICAgICAgICAgICAqLworCisjZGVmaW5lIFNEQ1IzX0JSRAlGbGQgKDQsIDApCS8qIEJhdWQgUmF0ZSBEaXZpc29yLzE2IC0gMSBbMTE6OF0gKi8KKyNkZWZpbmUgU0RDUjRfQlJECUZsZCAoOCwgMCkJLyogQmF1ZCBSYXRlIERpdmlzb3IvMTYgLSAxICBbNzowXSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBmc2QgPSBmeHRsLygxNiooQlJEWzExOjBdICsgMSkpICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFRzZCA9IDE2KihCUkRbMTE6MF0gKyAxKSpUeHRsICAgKi8KKyNkZWZpbmUgU0RDUjNfQmRSdERpdihEaXYpICAgICAgCS8qICBCYXVkIFJhdGUgRGl2aXNvciBbMTYuLjY1NTM2XSAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMTYpLzE2ID4+IEZTaXplIChTRENSNF9CUkQpIDw8IFwKKyAgICAgICAgICAgICAgICAJIEZTaGZ0IChTRENSM19CUkQpKQorI2RlZmluZSBTRENSNF9CZFJ0RGl2KERpdikgICAgICAJLyogIEJhdWQgUmF0ZSBEaXZpc29yIFsxNi4uNjU1MzZdICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKERpdikgLSAxNikvMTYgJiBGQWxuTXNrIChTRENSNF9CUkQpIDw8IFwKKyAgICAgICAgICAgICAgICAJIEZTaGZ0IChTRENSNF9CUkQpKQorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZnNkID0gZnh0bC8oMTYqRmxvb3IgKERpdi8xNikpICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBUc2QgPSAxNipGbG9vciAoRGl2LzE2KSpUeHRsICAgKi8KKyNkZWZpbmUgU0RDUjNfQ2VpbEJkUnREaXYoRGl2KSAgCS8qICBDZWlsLiBvZiBCZFJ0RGl2IFsxNi4uNjU1MzZdICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMSkvMTYgPj4gRlNpemUgKFNEQ1I0X0JSRCkgPDwgXAorICAgICAgICAgICAgICAgIAkgRlNoZnQgKFNEQ1IzX0JSRCkpCisjZGVmaW5lIFNEQ1I0X0NlaWxCZFJ0RGl2KERpdikgIAkvKiAgQ2VpbC4gb2YgQmRSdERpdiBbMTYuLjY1NTM2XSAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDEpLzE2ICYgRkFsbk1zayAoU0RDUjRfQlJEKSA8PCBcCisgICAgICAgICAgICAgICAgCSBGU2hmdCAoU0RDUjRfQlJEKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZzZCA9IGZ4dGwvKDE2KkNlaWwgKERpdi8xNikpICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVHNkID0gMTYqQ2VpbCAoRGl2LzE2KSpUeHRsICAgICovCisKKyNkZWZpbmUgU0REUl9EQVRBCUZsZCAoOCwgMCkJLyogcmVjZWl2ZS90cmFuc21pdCBEQVRBIEZJRk9zICAgICAqLworI2lmIDAgICAgICAgICAgIAkgICAgICAgIAkvKiBIaWRkZW4gcmVjZWl2ZSBGSUZPIGJpdHMgICAgICAgICovCisjZGVmaW5lIFNERFJfRU9GCTB4MDAwMDAxMDAJLyogIHJlY2VpdmUgRW5kLU9mLUZyYW1lIChyZWFkKSAgICAqLworI2RlZmluZSBTRERSX0NSRQkweDAwMDAwMjAwCS8qICByZWNlaXZlIENSQyBFcnJvciAocmVhZCkgICAgICAgKi8KKyNkZWZpbmUgU0REUl9ST1IJMHgwMDAwMDQwMAkvKiAgUmVjZWl2ZSBGSUZPIE92ZXItUnVuIChyZWFkKSAgICovCisjZW5kaWYgLyogMCAqLworCisjZGVmaW5lIFNEU1IwX0VJRgkweDAwMDAwMDAxCS8qIEVycm9yIEluIEZJRk8gKHJlYWQpICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0RTUjBfVFVSCTB4MDAwMDAwMDIJLyogVHJhbnNtaXQgRklGTyBVbmRlci1SdW4gICAgICAgICAqLworI2RlZmluZSBTRFNSMF9SQUIJMHgwMDAwMDAwNAkvKiBSZWNlaXZlIEFCb3J0ICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFNEU1IwX1RGUwkweDAwMDAwMDA4CS8qIFRyYW5zbWl0IEZJRk8gMS8yLWZ1bGwgb3IgbGVzcyAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogU2VydmljZSByZXF1ZXN0IChyZWFkKSAgICAgICAgICAqLworI2RlZmluZSBTRFNSMF9SRlMJMHgwMDAwMDAxMAkvKiBSZWNlaXZlIEZJRk8gMS8zLXRvLTIvMy1mdWxsIG9yICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIG1vcmUgU2VydmljZSByZXF1ZXN0IChyZWFkKSAgICAgKi8KKworI2RlZmluZSBTRFNSMV9SU1kJMHgwMDAwMDAwMQkvKiBSZWNlaXZlciBTWW5jaHJvbml6ZWQgKHJlYWQpICAgICovCisjZGVmaW5lIFNEU1IxX1RCWQkweDAwMDAwMDAyCS8qIFRyYW5zbWl0dGVyIEJ1c1kgKHJlYWQpICAgICAgICAgKi8KKyNkZWZpbmUgU0RTUjFfUk5FCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBGSUZPIE5vdCBFbXB0eSAocmVhZCkgICAqLworI2RlZmluZSBTRFNSMV9UTkYJMHgwMDAwMDAwOAkvKiBUcmFuc21pdCBGSUZPIE5vdCBGdWxsIChyZWFkKSAgICovCisjZGVmaW5lIFNEU1IxX1JURAkweDAwMDAwMDEwCS8qIFJlY2VpdmUgVHJhbnNpdGlvbiBEZXRlY3RlZCAgICAgKi8KKyNkZWZpbmUgU0RTUjFfRU9GCTB4MDAwMDAwMjAJLyogcmVjZWl2ZSBFbmQtT2YtRnJhbWUgKHJlYWQpICAgICAqLworI2RlZmluZSBTRFNSMV9DUkUJMHgwMDAwMDA0MAkvKiByZWNlaXZlIENSQyBFcnJvciAocmVhZCkgICAgICAgICovCisjZGVmaW5lIFNEU1IxX1JPUgkweDAwMDAwMDgwCS8qIFJlY2VpdmUgRklGTyBPdmVyLVJ1biAocmVhZCkgICAgKi8KKworCisvKgorICogSGlnaC1TcGVlZCBTZXJpYWwgdG8gUGFyYWxsZWwgY29udHJvbGxlciAoSFNTUCkgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFNlcjJIU0NSMCAJU2VyaWFsIHBvcnQgMiBIaWdoLVNwZWVkIFNlcmlhbCB0byBQYXJhbGxlbAorICogICAgICAgICAgICAgIAljb250cm9sbGVyIChIU1NQKSBDb250cm9sIFJlZ2lzdGVyIDAgKHJlYWQvd3JpdGUpLgorICogICAgU2VyMkhTQ1IxIAlTZXJpYWwgcG9ydCAyIEhpZ2gtU3BlZWQgU2VyaWFsIHRvIFBhcmFsbGVsCisgKiAgICAgICAgICAgICAgCWNvbnRyb2xsZXIgKEhTU1ApIENvbnRyb2wgUmVnaXN0ZXIgMSAocmVhZC93cml0ZSkuCisgKiAgICBTZXIySFNEUiAgCVNlcmlhbCBwb3J0IDIgSGlnaC1TcGVlZCBTZXJpYWwgdG8gUGFyYWxsZWwKKyAqICAgICAgICAgICAgICAJY29udHJvbGxlciAoSFNTUCkgRGF0YSBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBTZXIySFNTUjAgCVNlcmlhbCBwb3J0IDIgSGlnaC1TcGVlZCBTZXJpYWwgdG8gUGFyYWxsZWwKKyAqICAgICAgICAgICAgICAJY29udHJvbGxlciAoSFNTUCkgU3RhdHVzIFJlZ2lzdGVyIDAgKHJlYWQvd3JpdGUpLgorICogICAgU2VyMkhTU1IxIAlTZXJpYWwgcG9ydCAyIEhpZ2gtU3BlZWQgU2VyaWFsIHRvIFBhcmFsbGVsCisgKiAgICAgICAgICAgICAgCWNvbnRyb2xsZXIgKEhTU1ApIFN0YXR1cyBSZWdpc3RlciAxIChyZWFkKS4KKyAqICAgIFNlcjJIU0NSMiAJU2VyaWFsIHBvcnQgMiBIaWdoLVNwZWVkIFNlcmlhbCB0byBQYXJhbGxlbAorICogICAgICAgICAgICAgIAljb250cm9sbGVyIChIU1NQKSBDb250cm9sIFJlZ2lzdGVyIDIgKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbVGhlIEhTQ1IyIHJlZ2lzdGVyIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4KKyAqICAgICAgICAgICAgICAJdmVyc2lvbnMgMi4wIChyZXYuID0gOCkgYW5kIGhpZ2hlciBvZiB0aGUgU3Ryb25nQVJNCisgKiAgICAgICAgICAgICAgCVNBLTExMDAuXQorICovCisKKyNkZWZpbmUgU2VyMkhTQ1IwCV9fUkVHKDB4ODAwNDAwNjApICAvKiBTZXIuIHBvcnQgMiBIU1NQIENvbnRyb2wgUmVnLiAwICovCisjZGVmaW5lIFNlcjJIU0NSMQlfX1JFRygweDgwMDQwMDY0KSAgLyogU2VyLiBwb3J0IDIgSFNTUCBDb250cm9sIFJlZy4gMSAqLworI2RlZmluZSBTZXIySFNEUglfX1JFRygweDgwMDQwMDZDKSAgLyogU2VyLiBwb3J0IDIgSFNTUCBEYXRhIFJlZy4gICAgICAqLworI2RlZmluZSBTZXIySFNTUjAJX19SRUcoMHg4MDA0MDA3NCkgIC8qIFNlci4gcG9ydCAyIEhTU1AgU3RhdHVzIFJlZy4gMCAgKi8KKyNkZWZpbmUgU2VyMkhTU1IxCV9fUkVHKDB4ODAwNDAwNzgpICAvKiBTZXIuIHBvcnQgMiBIU1NQIFN0YXR1cyBSZWcuIDEgICovCisjZGVmaW5lIFNlcjJIU0NSMglfX1JFRygweDkwMDYwMDI4KSAgLyogU2VyLiBwb3J0IDIgSFNTUCBDb250cm9sIFJlZy4gMiAqLworCisjZGVmaW5lIEhTQ1IwX0lUUgkweDAwMDAwMDAxCS8qIElyREEgVHJhbnNtaXNzaW9uIFJhdGUgICAgICAgICAgKi8KKyNkZWZpbmUgSFNDUjBfVUFSVAkoSFNDUjBfSVRSKjApCS8qICBVQVJUIG1vZGUgKDExNS4yIGtiL3MgaWYgSXJEQSkgKi8KKyNkZWZpbmUgSFNDUjBfSFNTUAkoSFNDUjBfSVRSKjEpCS8qICBIU1NQIG1vZGUgKDQgTWIvcykgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSFNDUjBfTEJNCTB4MDAwMDAwMDIJLyogTG9vay1CYWNrIE1vZGUgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBIU0NSMF9UVVMJMHgwMDAwMDAwNAkvKiBUcmFuc21pdCBGSUZPIFVuZGVyLXJ1biBTZWxlY3QgICovCisjZGVmaW5lIEhTQ1IwX0VGcm1VUm4JKEhTQ1IwX1RVUyowKQkvKiAgRW5kIEZyYW1lIG9uIFVuZGVyLVJ1biAgICAgICAgICovCisjZGVmaW5lIEhTQ1IwX0Fib3J0VVJuCShIU0NSMF9UVVMqMSkJLyogIEFib3J0IG9uIFVuZGVyLVJ1biAgICAgICAgICAgICAqLworI2RlZmluZSBIU0NSMF9UWEUJMHgwMDAwMDAwOAkvKiBUcmFuc21pdCBFbmFibGUgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEhTQ1IwX1JYRQkweDAwMDAwMDEwCS8qIFJlY2VpdmUgRW5hYmxlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSFNDUjBfUklFCTB4MDAwMDAwMjAJLyogUmVjZWl2ZSBGSUZPIDIvNS10by0zLzUtZnVsbCBvciAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBtb3JlIEludGVycnVwdCBFbmFibGUgICAgICAgICAgICovCisjZGVmaW5lIEhTQ1IwX1RJRQkweDAwMDAwMDQwCS8qIFRyYW5zbWl0IEZJRk8gMS8yLWZ1bGwgb3IgbGVzcyAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBIU0NSMF9BTUUJMHgwMDAwMDA4MAkvKiBBZGRyZXNzIE1hdGNoIEVuYWJsZSAgICAgICAgICAgICovCisKKyNkZWZpbmUgSFNDUjFfQU1WCUZsZCAoOCwgMCkJLyogQWRkcmVzcyBNYXRjaCBWYWx1ZSAgICAgICAgICAgICAqLworCisjZGVmaW5lIEhTRFJfREFUQQlGbGQgKDgsIDApCS8qIHJlY2VpdmUvdHJhbnNtaXQgREFUQSBGSUZPcyAgICAgKi8KKyNpZiAwICAgICAgICAgICAJICAgICAgICAJLyogSGlkZGVuIHJlY2VpdmUgRklGTyBiaXRzICAgICAgICAqLworI2RlZmluZSBIU0RSX0VPRgkweDAwMDAwMTAwCS8qICByZWNlaXZlIEVuZC1PZi1GcmFtZSAocmVhZCkgICAgKi8KKyNkZWZpbmUgSFNEUl9DUkUJMHgwMDAwMDIwMAkvKiAgcmVjZWl2ZSBDUkMgRXJyb3IgKHJlYWQpICAgICAgICovCisjZGVmaW5lIEhTRFJfUk9SCTB4MDAwMDA0MDAJLyogIFJlY2VpdmUgRklGTyBPdmVyLVJ1biAocmVhZCkgICAqLworI2VuZGlmIC8qIDAgKi8KKworI2RlZmluZSBIU1NSMF9FSUYJMHgwMDAwMDAwMQkvKiBFcnJvciBJbiBGSUZPIChyZWFkKSAgICAgICAgICAgICovCisjZGVmaW5lIEhTU1IwX1RVUgkweDAwMDAwMDAyCS8qIFRyYW5zbWl0IEZJRk8gVW5kZXItUnVuICAgICAgICAgKi8KKyNkZWZpbmUgSFNTUjBfUkFCCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBBQm9ydCAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBIU1NSMF9URlMJMHgwMDAwMDAwOAkvKiBUcmFuc21pdCBGSUZPIDEvMi1mdWxsIG9yIGxlc3MgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICAgICAgKi8KKyNkZWZpbmUgSFNTUjBfUkZTCTB4MDAwMDAwMTAJLyogUmVjZWl2ZSBGSUZPIDIvNS10by0zLzUtZnVsbCBvciAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBtb3JlIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICovCisjZGVmaW5lIEhTU1IwX0ZSRQkweDAwMDAwMDIwCS8qIHJlY2VpdmUgRlJhbWluZyBFcnJvciAgICAgICAgICAgKi8KKworI2RlZmluZSBIU1NSMV9SU1kJMHgwMDAwMDAwMQkvKiBSZWNlaXZlciBTWW5jaHJvbml6ZWQgKHJlYWQpICAgICovCisjZGVmaW5lIEhTU1IxX1RCWQkweDAwMDAwMDAyCS8qIFRyYW5zbWl0dGVyIEJ1c1kgKHJlYWQpICAgICAgICAgKi8KKyNkZWZpbmUgSFNTUjFfUk5FCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBGSUZPIE5vdCBFbXB0eSAocmVhZCkgICAqLworI2RlZmluZSBIU1NSMV9UTkYJMHgwMDAwMDAwOAkvKiBUcmFuc21pdCBGSUZPIE5vdCBGdWxsIChyZWFkKSAgICovCisjZGVmaW5lIEhTU1IxX0VPRgkweDAwMDAwMDEwCS8qIHJlY2VpdmUgRW5kLU9mLUZyYW1lIChyZWFkKSAgICAgKi8KKyNkZWZpbmUgSFNTUjFfQ1JFCTB4MDAwMDAwMjAJLyogcmVjZWl2ZSBDUkMgRXJyb3IgKHJlYWQpICAgICAgICAqLworI2RlZmluZSBIU1NSMV9ST1IJMHgwMDAwMDA0MAkvKiBSZWNlaXZlIEZJRk8gT3Zlci1SdW4gKHJlYWQpICAgICovCisKKyNkZWZpbmUgSFNDUjJfVFhQCTB4MDAwNDAwMDAJLyogVHJhbnNtaXQgZGF0YSBQb2xhcml0eSAoVFhEXzIpICAqLworI2RlZmluZSBIU0NSMl9UckRhdGFMCShIU0NSMl9UWFAqMCkJLyogIFRyYW5zbWl0IERhdGEgYWN0aXZlIExvdyAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKGludmVydGVkKSAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEhTQ1IyX1RyRGF0YUgJKEhTQ1IyX1RYUCoxKQkvKiAgVHJhbnNtaXQgRGF0YSBhY3RpdmUgSGlnaCAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAobm9uLWludmVydGVkKSAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSFNDUjJfUlhQCTB4MDAwODAwMDAJLyogUmVjZWl2ZSBkYXRhIFBvbGFyaXR5IChSWERfMikgICAqLworI2RlZmluZSBIU0NSMl9SY0RhdGFMCShIU0NSMl9SWFAqMCkJLyogIFJlY2VpdmUgRGF0YSBhY3RpdmUgTG93ICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKGludmVydGVkKSAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEhTQ1IyX1JjRGF0YUgJKEhTQ1IyX1JYUCoxKQkvKiAgUmVjZWl2ZSBEYXRhIGFjdGl2ZSBIaWdoICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAobm9uLWludmVydGVkKSAgICAgICAgICAgICAgICAgKi8KKworCisvKgorICogTXVsdGktbWVkaWEgQ29tbXVuaWNhdGlvbnMgUG9ydCAoTUNQKSBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgU2VyNE1DQ1IwIAlTZXJpYWwgcG9ydCA0IE11bHRpLW1lZGlhIENvbW11bmljYXRpb25zIFBvcnQgKE1DUCkKKyAqICAgICAgICAgICAgICAJQ29udHJvbCBSZWdpc3RlciAwIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjRNQ0RSMCAJU2VyaWFsIHBvcnQgNCBNdWx0aS1tZWRpYSBDb21tdW5pY2F0aW9ucyBQb3J0IChNQ1ApCisgKiAgICAgICAgICAgICAgCURhdGEgUmVnaXN0ZXIgMCAoYXVkaW8sIHJlYWQvd3JpdGUpLgorICogICAgU2VyNE1DRFIxIAlTZXJpYWwgcG9ydCA0IE11bHRpLW1lZGlhIENvbW11bmljYXRpb25zIFBvcnQgKE1DUCkKKyAqICAgICAgICAgICAgICAJRGF0YSBSZWdpc3RlciAxICh0ZWxlY29tLCByZWFkL3dyaXRlKS4KKyAqICAgIFNlcjRNQ0RSMiAJU2VyaWFsIHBvcnQgNCBNdWx0aS1tZWRpYSBDb21tdW5pY2F0aW9ucyBQb3J0IChNQ1ApCisgKiAgICAgICAgICAgICAgCURhdGEgUmVnaXN0ZXIgMiAoQ09ERUMgcmVnaXN0ZXJzLCByZWFkL3dyaXRlKS4KKyAqICAgIFNlcjRNQ1NSICAJU2VyaWFsIHBvcnQgNCBNdWx0aS1tZWRpYSBDb21tdW5pY2F0aW9ucyBQb3J0IChNQ1ApCisgKiAgICAgICAgICAgICAgCVN0YXR1cyBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBTZXI0TUNDUjEgCVNlcmlhbCBwb3J0IDQgTXVsdGktbWVkaWEgQ29tbXVuaWNhdGlvbnMgUG9ydCAoTUNQKQorICogICAgICAgICAgICAgIAlDb250cm9sIFJlZ2lzdGVyIDEgKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbVGhlIE1DQ1IxIHJlZ2lzdGVyIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4KKyAqICAgICAgICAgICAgICAJdmVyc2lvbnMgMi4wIChyZXYuID0gOCkgYW5kIGhpZ2hlciBvZiB0aGUgU3Ryb25nQVJNCisgKiAgICAgICAgICAgICAgCVNBLTExMDAuXQorICoKKyAqIENsb2NrcworICogICAgZm1jLCBUbWMgIAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgTUNQIGNvbW11bmljYXRpb24gKDEwIE1IeiwKKyAqICAgICAgICAgICAgICAJMTIgTUh6LCBvciBHUElPIFsyMV0pLgorICogICAgZmF1ZCwgVGF1ZAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgYXVkaW8gc2FtcGxpbmcuCisgKiAgICBmdGNtLCBUdGNtCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSB0ZWxlY29tIHNhbXBsaW5nLgorICovCisKKyNkZWZpbmUgU2VyNE1DQ1IwCV9fUkVHKDB4ODAwNjAwMDApICAvKiBTZXIuIHBvcnQgNCBNQ1AgQ29udHJvbCBSZWcuIDAgKi8KKyNkZWZpbmUgU2VyNE1DRFIwCV9fUkVHKDB4ODAwNjAwMDgpICAvKiBTZXIuIHBvcnQgNCBNQ1AgRGF0YSBSZWcuIDAgKGF1ZGlvKSAqLworI2RlZmluZSBTZXI0TUNEUjEJX19SRUcoMHg4MDA2MDAwQykgIC8qIFNlci4gcG9ydCA0IE1DUCBEYXRhIFJlZy4gMSAodGVsZWNvbSkgKi8KKyNkZWZpbmUgU2VyNE1DRFIyCV9fUkVHKDB4ODAwNjAwMTApICAvKiBTZXIuIHBvcnQgNCBNQ1AgRGF0YSBSZWcuIDIgKENPREVDIHJlZy4pICovCisjZGVmaW5lIFNlcjRNQ1NSCV9fUkVHKDB4ODAwNjAwMTgpICAvKiBTZXIuIHBvcnQgNCBNQ1AgU3RhdHVzIFJlZy4gKi8KKyNkZWZpbmUgU2VyNE1DQ1IxCV9fUkVHKDB4OTAwNjAwMzApICAvKiBTZXIuIHBvcnQgNCBNQ1AgQ29udHJvbCBSZWcuIDEgKi8KKworI2RlZmluZSBNQ0NSMF9BU0QJRmxkICg3LCAwKQkvKiBBdWRpbyBTYW1wbGluZyByYXRlIERpdmlzb3IvMzIgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFs2Li4xMjddICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogZmF1ZCA9IGZtYy8oMzIqQVNEKSAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBUYXVkID0gMzIqQVNEKlRtYyAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1DQ1IwX0F1ZFNtcERpdihEaXYpICAgIAkvKiAgQXVkaW8gU2FtcGxpbmcgcmF0ZSBEaXZpc29yICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFsxOTIuLjQwNjRdICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoRGl2KS8zMiA8PCBGU2hmdCAoTUNDUjBfQVNEKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZhdWQgPSBmbWMvKDMyKkZsb29yIChEaXYvMzIpKSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVGF1ZCA9IDMyKkZsb29yIChEaXYvMzIpKlRtYyAgICovCisjZGVmaW5lIE1DQ1IwX0NlaWxBdWRTbXBEaXYoRGl2KQkvKiAgQ2VpbC4gb2YgQXVkU21wRGl2IFsxOTIuLjQwNjRdICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSArIDMxKS8zMiA8PCBGU2hmdCAoTUNDUjBfQVNEKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZhdWQgPSBmbWMvKDMyKkNlaWwgKERpdi8zMikpICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVGF1ZCA9IDMyKkNlaWwgKERpdi8zMikqVG1jICAgICovCisjZGVmaW5lIE1DQ1IwX1RTRAlGbGQgKDcsIDgpCS8qIFRlbGVjb20gU2FtcGxpbmcgcmF0ZSAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogRGl2aXNvci8zMiBbMTYuLjEyN10gICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBmdGNtID0gZm1jLygzMipUU0QpICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFR0Y20gPSAzMipUU0QqVG1jICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTUNDUjBfVGNtU21wRGl2KERpdikgICAgCS8qICBUZWxlY29tIFNhbXBsaW5nIHJhdGUgRGl2aXNvciAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgWzUxMi4uNDA2NF0gICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKChEaXYpLzMyIDw8IEZTaGZ0IChNQ0NSMF9UU0QpKQorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZnRjbSA9IGZtYy8oMzIqRmxvb3IgKERpdi8zMikpICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBUdGNtID0gMzIqRmxvb3IgKERpdi8zMikqVG1jICAgKi8KKyNkZWZpbmUgTUNDUjBfQ2VpbFRjbVNtcERpdihEaXYpCS8qICBDZWlsLiBvZiBUY21TbXBEaXYgWzUxMi4uNDA2NF0gKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpICsgMzEpLzMyIDw8IEZTaGZ0IChNQ0NSMF9UU0QpKQorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZnRjbSA9IGZtYy8oMzIqQ2VpbCAoRGl2LzMyKSkgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBUdGNtID0gMzIqQ2VpbCAoRGl2LzMyKSpUbWMgICAgKi8KKyNkZWZpbmUgTUNDUjBfTUNFCTB4MDAwMTAwMDAJLyogTUNQIEVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ0NSMF9FQ1MJMHgwMDAyMDAwMAkvKiBFeHRlcm5hbCBDbG9jayBTZWxlY3QgICAgICAgICAgICovCisjZGVmaW5lIE1DQ1IwX0ludENsawkoTUNDUjBfRUNTKjApCS8qICBJbnRlcm5hbCBDbG9jayAoMTAgb3IgMTIgTUh6KSAgKi8KKyNkZWZpbmUgTUNDUjBfRXh0Q2xrCShNQ0NSMF9FQ1MqMSkJLyogIEV4dGVybmFsIENsb2NrIChHUElPIFsyMV0pICAgICAqLworI2RlZmluZSBNQ0NSMF9BRE0JMHgwMDA0MDAwMAkvKiBBL0QgKGF1ZGlvL3RlbGVjb20pIGRhdGEgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHNhbXBsaW5nL3N0b3JpbmcgTW9kZSAgICAgICAgICAgKi8KKyNkZWZpbmUgTUNDUjBfVmxkQml0CShNQ0NSMF9BRE0qMCkJLyogIFZhbGlkIEJpdCBzdG9yaW5nIG1vZGUgICAgICAgICAqLworI2RlZmluZSBNQ0NSMF9TbXBDbnQJKE1DQ1IwX0FETSoxKQkvKiAgU2FtcGxpbmcgQ291bnRlciBzdG9yaW5nIG1vZGUgICovCisjZGVmaW5lIE1DQ1IwX1RURQkweDAwMDgwMDAwCS8qIFRlbGVjb20gVHJhbnNtaXQgRklGTyAxLzItZnVsbCAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogb3IgbGVzcyBpbnRlcnJ1cHQgRW5hYmxlICAgICAgICAqLworI2RlZmluZSBNQ0NSMF9UUkUJMHgwMDEwMDAwMAkvKiBUZWxlY29tIFJlY2VpdmUgRklGTyAxLzItZnVsbCAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIG9yIG1vcmUgaW50ZXJydXB0IEVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgTUNDUjBfQVRFCTB4MDAyMDAwMDAJLyogQXVkaW8gVHJhbnNtaXQgRklGTyAxLzItZnVsbCAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBvciBsZXNzIGludGVycnVwdCBFbmFibGUgICAgICAgICovCisjZGVmaW5lIE1DQ1IwX0FSRQkweDAwNDAwMDAwCS8qIEF1ZGlvIFJlY2VpdmUgRklGTyAxLzItZnVsbCBvciAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogbW9yZSBpbnRlcnJ1cHQgRW5hYmxlICAgICAgICAgICAqLworI2RlZmluZSBNQ0NSMF9MQk0JMHgwMDgwMDAwMAkvKiBMb29rLUJhY2sgTW9kZSAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1DQ1IwX0VDUAlGbGQgKDIsIDI0KQkvKiBFeHRlcm5hbCBDbG9jayBQcmVzY2FsZXIgLSAxICAgICovCisjZGVmaW5lIE1DQ1IwX0V4dENsa0RpdihEaXYpICAgIAkvKiAgRXh0ZXJuYWwgQ2xvY2sgRGl2aXNvciBbMS4uNF0gICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDEpIDw8IEZTaGZ0IChNQ0NSMF9FQ1ApKQorCisjZGVmaW5lIE1DRFIwX0RBVEEJRmxkICgxMiwgNCkJLyogcmVjZWl2ZS90cmFuc21pdCBhdWRpbyBEQVRBICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBGSUZPcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgTUNEUjFfREFUQQlGbGQgKDE0LCAyKQkvKiByZWNlaXZlL3RyYW5zbWl0IHRlbGVjb20gREFUQSAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIEZJRk9zICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiByZWNlaXZlL3RyYW5zbWl0IENPREVDIHJlZy4gICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIEZJRk9zOiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTUNEUjJfREFUQQlGbGQgKDE2LCAwKQkvKiAgcmVnLiBEQVRBICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1DRFIyX1JXCTB4MDAwMTAwMDAJLyogIHJlZy4gUmVhZC9Xcml0ZSAodHJhbnNtaXQpICAgICAqLworI2RlZmluZSBNQ0RSMl9SZAkoTUNEUjJfUlcqMCkJLyogICByZWcuIFJlYWQgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ0RSMl9XcgkoTUNEUjJfUlcqMSkJLyogICByZWcuIFdyaXRlICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ0RSMl9BREQJRmxkICg0LCAxNykJLyogIHJlZy4gQUREcmVzcyAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIE1DU1JfQVRTCTB4MDAwMDAwMDEJLyogQXVkaW8gVHJhbnNtaXQgRklGTyAxLzItZnVsbCAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBvciBsZXNzIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICovCisjZGVmaW5lIE1DU1JfQVJTCTB4MDAwMDAwMDIJLyogQXVkaW8gUmVjZWl2ZSBGSUZPIDEvMi1mdWxsIG9yICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBtb3JlIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICovCisjZGVmaW5lIE1DU1JfVFRTCTB4MDAwMDAwMDQJLyogVGVsZWNvbSBUcmFuc21pdCBGSUZPIDEvMi1mdWxsICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBvciBsZXNzIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICovCisjZGVmaW5lIE1DU1JfVFJTCTB4MDAwMDAwMDgJLyogVGVsZWNvbSBSZWNlaXZlIEZJRk8gMS8yLWZ1bGwgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBvciBtb3JlIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICovCisjZGVmaW5lIE1DU1JfQVRVCTB4MDAwMDAwMTAJLyogQXVkaW8gVHJhbnNtaXQgRklGTyBVbmRlci1ydW4gICAqLworI2RlZmluZSBNQ1NSX0FSTwkweDAwMDAwMDIwCS8qIEF1ZGlvIFJlY2VpdmUgRklGTyBPdmVyLXJ1biAgICAgKi8KKyNkZWZpbmUgTUNTUl9UVFUJMHgwMDAwMDA0MAkvKiBUZWxlY29tIFRyYW5zbWl0IEZJRk8gVW5kZXItcnVuICovCisjZGVmaW5lIE1DU1JfVFJPCTB4MDAwMDAwODAJLyogVGVsZWNvbSBSZWNlaXZlIEZJRk8gT3Zlci1ydW4gICAqLworI2RlZmluZSBNQ1NSX0FORgkweDAwMDAwMTAwCS8qIEF1ZGlvIHRyYW5zbWl0IEZJRk8gTm90IEZ1bGwgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX0FORQkweDAwMDAwMjAwCS8qIEF1ZGlvIHJlY2VpdmUgRklGTyBOb3QgRW1wdHkgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX1RORgkweDAwMDAwNDAwCS8qIFRlbGVjb20gdHJhbnNtaXQgRklGTyBOb3QgRnVsbCAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX1RORQkweDAwMDAwODAwCS8qIFRlbGVjb20gcmVjZWl2ZSBGSUZPIE5vdCBFbXB0eSAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX0NXQwkweDAwMDAxMDAwCS8qIENPREVDIHJlZ2lzdGVyIFdyaXRlIENvbXBsZXRlZCAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX0NSQwkweDAwMDAyMDAwCS8qIENPREVDIHJlZ2lzdGVyIFJlYWQgQ29tcGxldGVkICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ1NSX0FDRQkweDAwMDA0MDAwCS8qIEF1ZGlvIENPREVDIEVuYWJsZWQgKHJlYWQpICAgICAgKi8KKyNkZWZpbmUgTUNTUl9UQ0UJMHgwMDAwODAwMAkvKiBUZWxlY29tIENPREVDIEVuYWJsZWQgKHJlYWQpICAgICovCisKKyNkZWZpbmUgTUNDUjFfQ0ZTCTB4MDAxMDAwMDAJLyogQ2xvY2sgRnJlcS4gU2VsZWN0ICAgICAgICAgICAgICAqLworI2RlZmluZSBNQ0NSMV9GMTJNSHoJKE1DQ1IxX0NGUyowKQkvKiAgRnJlcS4gKGZtYykgPSB+IDEyIE1IeiAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAoMTEuOTgxIE1IeikgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTUNDUjFfRjEwTUh6CShNQ0NSMV9DRlMqMSkJLyogIEZyZXEuIChmbWMpID0gfiAxMCBNSHogICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKDkuNTg1IE1IeikgICAgICAgICAgICAgICAgICAgICovCisKKworLyoKKyAqIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0IChTU1ApIGNvbnRyb2wgcmVnaXN0ZXJzCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBTZXI0U1NDUjAgCVNlcmlhbCBwb3J0IDQgU3luY2hyb25vdXMgU2VyaWFsIFBvcnQgKFNTUCkgQ29udHJvbAorICogICAgICAgICAgICAgIAlSZWdpc3RlciAwIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjRTU0NSMSAJU2VyaWFsIHBvcnQgNCBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCAoU1NQKSBDb250cm9sCisgKiAgICAgICAgICAgICAgCVJlZ2lzdGVyIDEgKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbQml0cyBTUE8gYW5kIFNQIGFyZSBvbmx5IGltcGxlbWVudGVkIGluIHZlcnNpb25zIDIuMAorICogICAgICAgICAgICAgIAkocmV2LiA9IDgpIGFuZCBoaWdoZXIgb2YgdGhlIFN0cm9uZ0FSTSBTQS0xMTAwLl0KKyAqICAgIFNlcjRTU0RSICAJU2VyaWFsIHBvcnQgNCBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCAoU1NQKSBEYXRhCisgKiAgICAgICAgICAgICAgCVJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqICAgIFNlcjRTU1NSICAJU2VyaWFsIHBvcnQgNCBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCAoU1NQKSBTdGF0dXMKKyAqICAgICAgICAgICAgICAJUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICoKKyAqIENsb2NrcworICogICAgZnh0bCwgVHh0bAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgc3lzdGVtIGNyeXN0YWwgKDMuNjg2NCBNSHoKKyAqICAgICAgICAgICAgICAJb3IgMy41Nzk1IE1IeikuCisgKiAgICBmc3MsIFRzcyAgCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBTU1AgY29tbXVuaWNhdGlvbi4KKyAqLworCisjZGVmaW5lIFNlcjRTU0NSMAlfX1JFRygweDgwMDcwMDYwKSAgLyogU2VyLiBwb3J0IDQgU1NQIENvbnRyb2wgUmVnLiAwICovCisjZGVmaW5lIFNlcjRTU0NSMQlfX1JFRygweDgwMDcwMDY0KSAgLyogU2VyLiBwb3J0IDQgU1NQIENvbnRyb2wgUmVnLiAxICovCisjZGVmaW5lIFNlcjRTU0RSCV9fUkVHKDB4ODAwNzAwNkMpICAvKiBTZXIuIHBvcnQgNCBTU1AgRGF0YSBSZWcuICovCisjZGVmaW5lIFNlcjRTU1NSCV9fUkVHKDB4ODAwNzAwNzQpICAvKiBTZXIuIHBvcnQgNCBTU1AgU3RhdHVzIFJlZy4gKi8KKworI2RlZmluZSBTU0NSMF9EU1MJRmxkICg0LCAwKQkvKiBEYXRhIFNpemUgLSAxIFNlbGVjdCBbMy4uMTVdICAgICovCisjZGVmaW5lIFNTQ1IwX0RhdGFTaXplKFNpemUpICAgIAkvKiAgRGF0YSBTaXplIFNlbGVjdCBbNC4uMTZdICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoU2l6ZSkgLSAxKSA8PCBGU2hmdCAoU1NDUjBfRFNTKSkKKyNkZWZpbmUgU1NDUjBfRlJGCUZsZCAoMiwgNCkJLyogRlJhbWUgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTU0NSMF9Nb3Rvcm9sYQkgICAgICAgIAkvKiAgTW90b3JvbGEgU2VyaWFsIFBlcmlwaGVyYWwgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIEludGVyZmFjZSAoU1BJKSBmb3JtYXQgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgwIDw8IEZTaGZ0IChTU0NSMF9GUkYpKQorI2RlZmluZSBTU0NSMF9USQkgICAgICAgIAkvKiAgVGV4YXMgSW5zdHJ1bWVudHMgU3luY2hyb25vdXMgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFNlcmlhbCBmb3JtYXQgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgxIDw8IEZTaGZ0IChTU0NSMF9GUkYpKQorI2RlZmluZSBTU0NSMF9OYXRpb25hbAkgICAgICAgIAkvKiAgTmF0aW9uYWwgTWljcm93aXJlIGZvcm1hdCAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDIgPDwgRlNoZnQgKFNTQ1IwX0ZSRikpCisjZGVmaW5lIFNTQ1IwX1NTRQkweDAwMDAwMDgwCS8qIFNTUCBFbmFibGUgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1NDUjBfU0NSCUZsZCAoOCwgOCkJLyogU2VyaWFsIENsb2NrIFJhdGUgZGl2aXNvci8yIC0gMSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBmc3MgPSBmeHRsLygyKihTQ1IgKyAxKSkgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFRzcyA9IDIqKFNDUiArIDEpKlR4dGwgICAgICAgICAgKi8KKyNkZWZpbmUgU1NDUjBfU2VyQ2xrRGl2KERpdikgICAgCS8qICBTZXJpYWwgQ2xvY2sgRGl2aXNvciBbMi4uNTEyXSAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMikvMiA8PCBGU2hmdCAoU1NDUjBfU0NSKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZzcyA9IGZ4dGwvKDIqRmxvb3IgKERpdi8yKSkgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVHNzID0gMipGbG9vciAoRGl2LzIpKlR4dGwgICAgICovCisjZGVmaW5lIFNTQ1IwX0NlaWxTZXJDbGtEaXYoRGl2KQkvKiAgQ2VpbC4gb2YgU2VyQ2xrRGl2IFsyLi41MTJdICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDEpLzIgPDwgRlNoZnQgKFNTQ1IwX1NDUikpCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBmc3MgPSBmeHRsLygyKkNlaWwgKERpdi8yKSkgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFRzcyA9IDIqQ2VpbCAoRGl2LzIpKlR4dGwgICAgICAqLworCisjZGVmaW5lIFNTQ1IxX1JJRQkweDAwMDAwMDAxCS8qIFJlY2VpdmUgRklGTyAxLzItZnVsbCBvciBtb3JlICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTU0NSMV9USUUJMHgwMDAwMDAwMgkvKiBUcmFuc21pdCBGSUZPIDEvMi1mdWxsIG9yIGxlc3MgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIEludGVycnVwdCBFbmFibGUgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1NDUjFfTEJNCTB4MDAwMDAwMDQJLyogTG9vay1CYWNrIE1vZGUgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTU0NSMV9TUE8JMHgwMDAwMDAwOAkvKiBTYW1wbGUgY2xvY2sgKFNDTEspIFBPbGFyaXR5ICAgICovCisjZGVmaW5lIFNTQ1IxX1NDbGtJYWN0TAkoU1NDUjFfU1BPKjApCS8qICBTYW1wbGUgQ2xvY2sgSW5hY3RpdmUgTG93ICAgICAgKi8KKyNkZWZpbmUgU1NDUjFfU0Nsa0lhY3RICShTU0NSMV9TUE8qMSkJLyogIFNhbXBsZSBDbG9jayBJbmFjdGl2ZSBIaWdoICAgICAqLworI2RlZmluZSBTU0NSMV9TUAkweDAwMDAwMDEwCS8qIFNhbXBsZSBjbG9jayAoU0NMSykgUGhhc2UgICAgICAgKi8KKyNkZWZpbmUgU1NDUjFfU0NsazFQCShTU0NSMV9TUCowKQkvKiAgU2FtcGxlIENsb2NrIGFjdGl2ZSAxIFBlcmlvZCAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBhZnRlciBmcmFtZSAoU0ZSTSwgMXN0IGVkZ2UpICAgKi8KKyNkZWZpbmUgU1NDUjFfU0NsazFfMlAJKFNTQ1IxX1NQKjEpCS8qICBTYW1wbGUgQ2xvY2sgYWN0aXZlIDEvMiBQZXJpb2QgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGFmdGVyIGZyYW1lIChTRlJNLCAxc3QgZWRnZSkgICAqLworI2RlZmluZSBTU0NSMV9FQ1MJMHgwMDAwMDAyMAkvKiBFeHRlcm5hbCBDbG9jayBTZWxlY3QgICAgICAgICAgICovCisjZGVmaW5lIFNTQ1IxX0ludENsawkoU1NDUjFfRUNTKjApCS8qICBJbnRlcm5hbCBDbG9jayAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1NDUjFfRXh0Q2xrCShTU0NSMV9FQ1MqMSkJLyogIEV4dGVybmFsIENsb2NrIChHUElPIFsxOV0pICAgICAqLworCisjZGVmaW5lIFNTRFJfREFUQQlGbGQgKDE2LCAwKQkvKiByZWNlaXZlL3RyYW5zbWl0IERBVEEgRklGT3MgICAgICovCisKKyNkZWZpbmUgU1NTUl9UTkYJMHgwMDAwMDAwMgkvKiBUcmFuc21pdCBGSUZPIE5vdCBGdWxsIChyZWFkKSAgICovCisjZGVmaW5lIFNTU1JfUk5FCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBGSUZPIE5vdCBFbXB0eSAocmVhZCkgICAqLworI2RlZmluZSBTU1NSX0JTWQkweDAwMDAwMDA4CS8qIFNTUCBCdVNZIChyZWFkKSAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1NTUl9URlMJMHgwMDAwMDAxMAkvKiBUcmFuc21pdCBGSUZPIDEvMi1mdWxsIG9yIGxlc3MgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICAgICAgKi8KKyNkZWZpbmUgU1NTUl9SRlMJMHgwMDAwMDAyMAkvKiBSZWNlaXZlIEZJRk8gMS8yLWZ1bGwgb3IgbW9yZSAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFNlcnZpY2UgcmVxdWVzdCAocmVhZCkgICAgICAgICAgKi8KKyNkZWZpbmUgU1NTUl9ST1IJMHgwMDAwMDA0MAkvKiBSZWNlaXZlIEZJRk8gT3Zlci1SdW4gICAgICAgICAgICovCisKKworLyoKKyAqIE9wZXJhdGluZyBTeXN0ZW0gKE9TKSB0aW1lciBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgT1NNUjAgICAgIAlPcGVyYXRpbmcgU3lzdGVtIChPUykgdGltZXIgTWF0Y2ggUmVnaXN0ZXIgMAorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBPU01SMSAgICAgCU9wZXJhdGluZyBTeXN0ZW0gKE9TKSB0aW1lciBNYXRjaCBSZWdpc3RlciAxCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIE9TTVIyICAgICAJT3BlcmF0aW5nIFN5c3RlbSAoT1MpIHRpbWVyIE1hdGNoIFJlZ2lzdGVyIDIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgT1NNUjMgICAgIAlPcGVyYXRpbmcgU3lzdGVtIChPUykgdGltZXIgTWF0Y2ggUmVnaXN0ZXIgMworICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBPU0NSICAgICAgCU9wZXJhdGluZyBTeXN0ZW0gKE9TKSB0aW1lciBDb3VudGVyIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIE9TU1IgICAgICAJT3BlcmF0aW5nIFN5c3RlbSAoT1MpIHRpbWVyIFN0YXR1cyBSZWdpc3RlcgorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBPV0VSICAgICAgCU9wZXJhdGluZyBTeXN0ZW0gKE9TKSB0aW1lciBXYXRjaC1kb2cgRW5hYmxlIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIE9JRVIgICAgICAJT3BlcmF0aW5nIFN5c3RlbSAoT1MpIHRpbWVyIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICovCisKKyNkZWZpbmUgT1NNUjAgIAkJX19SRUcoMHg5MDAwMDAwMCkgIC8qIE9TIHRpbWVyIE1hdGNoIFJlZy4gMCAqLworI2RlZmluZSBPU01SMSAgCQlfX1JFRygweDkwMDAwMDA0KSAgLyogT1MgdGltZXIgTWF0Y2ggUmVnLiAxICovCisjZGVmaW5lIE9TTVIyICAJCV9fUkVHKDB4OTAwMDAwMDgpICAvKiBPUyB0aW1lciBNYXRjaCBSZWcuIDIgKi8KKyNkZWZpbmUgT1NNUjMgIAkJX19SRUcoMHg5MDAwMDAwYykgIC8qIE9TIHRpbWVyIE1hdGNoIFJlZy4gMyAqLworI2RlZmluZSBPU0NSICAgCV9fUkVHKDB4OTAwMDAwMTApICAvKiBPUyB0aW1lciBDb3VudGVyIFJlZy4gKi8KKyNkZWZpbmUgT1NTUiAgIAlfX1JFRygweDkwMDAwMDE0CSkgIC8qIE9TIHRpbWVyIFN0YXR1cyBSZWcuICovCisjZGVmaW5lIE9XRVIgICAJX19SRUcoMHg5MDAwMDAxOAkpICAvKiBPUyB0aW1lciBXYXRjaC1kb2cgRW5hYmxlIFJlZy4gKi8KKyNkZWZpbmUgT0lFUiAgIAlfX1JFRygweDkwMDAwMDFDCSkgIC8qIE9TIHRpbWVyIEludGVycnVwdCBFbmFibGUgUmVnLiAqLworCisjZGVmaW5lIE9TU1JfTShOYikJICAgICAgICAJLyogTWF0Y2ggZGV0ZWN0ZWQgWzAuLjNdICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDAwMDAwMDAxIDw8IChOYikpCisjZGVmaW5lIE9TU1JfTTAgCU9TU1JfTSAoMCkJLyogTWF0Y2ggZGV0ZWN0ZWQgMCAgICAgICAgICAgICAgICAqLworI2RlZmluZSBPU1NSX00xIAlPU1NSX00gKDEpCS8qIE1hdGNoIGRldGVjdGVkIDEgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgT1NTUl9NMiAJT1NTUl9NICgyKQkvKiBNYXRjaCBkZXRlY3RlZCAyICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE9TU1JfTTMgCU9TU1JfTSAoMykJLyogTWF0Y2ggZGV0ZWN0ZWQgMyAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIE9XRVJfV01FCTB4MDAwMDAwMDEJLyogV2F0Y2gtZG9nIE1hdGNoIEVuYWJsZSAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAoc2V0IG9ubHkpICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgT0lFUl9FKE5iKQkgICAgICAgIAkvKiBtYXRjaCBpbnRlcnJ1cHQgRW5hYmxlIFswLi4zXSAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MDAwMDAwMDEgPDwgKE5iKSkKKyNkZWZpbmUgT0lFUl9FMCAJT0lFUl9FICgwKQkvKiBtYXRjaCBpbnRlcnJ1cHQgRW5hYmxlIDAgICAgICAgICovCisjZGVmaW5lIE9JRVJfRTEgCU9JRVJfRSAoMSkJLyogbWF0Y2ggaW50ZXJydXB0IEVuYWJsZSAxICAgICAgICAqLworI2RlZmluZSBPSUVSX0UyIAlPSUVSX0UgKDIpCS8qIG1hdGNoIGludGVycnVwdCBFbmFibGUgMiAgICAgICAgKi8KKyNkZWZpbmUgT0lFUl9FMyAJT0lFUl9FICgzKQkvKiBtYXRjaCBpbnRlcnJ1cHQgRW5hYmxlIDMgICAgICAgICovCisKKworLyoKKyAqIFJlYWwtVGltZSBDbG9jayAoUlRDKSBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgUlRBUiAgICAgIAlSZWFsLVRpbWUgQ2xvY2sgKFJUQykgQWxhcm0gUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgUkNOUiAgICAgIAlSZWFsLVRpbWUgQ2xvY2sgKFJUQykgQ291TnQgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgUlRUUiAgICAgIAlSZWFsLVRpbWUgQ2xvY2sgKFJUQykgVHJpbSBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBSVFNSICAgICAgCVJlYWwtVGltZSBDbG9jayAoUlRDKSBTdGF0dXMgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICoKKyAqIENsb2NrcworICogICAgZnJ0eCwgVHJ0eAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgcmVhbC10aW1lIGNsb2NrIGNyeXN0YWwKKyAqICAgICAgICAgICAgICAJKDMyLjc2OCBrSHogbm9taW5hbCkuCisgKiAgICBmcnRjLCBUcnRjCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSByZWFsLXRpbWUgY2xvY2sgY291bnRlcgorICogICAgICAgICAgICAgIAkoMSBIeiBub21pbmFsKS4KKyAqLworCisjZGVmaW5lIFJUQVIJCV9fUkVHKDB4OTAwMTAwMDApICAvKiBSVEMgQWxhcm0gUmVnLiAqLworI2RlZmluZSBSQ05SCQlfX1JFRygweDkwMDEwMDA0KSAgLyogUlRDIENvdU50IFJlZy4gKi8KKyNkZWZpbmUgUlRUUgkJX19SRUcoMHg5MDAxMDAwOCkgIC8qIFJUQyBUcmltIFJlZy4gKi8KKyNkZWZpbmUgUlRTUgkJX19SRUcoMHg5MDAxMDAxMCkgIC8qIFJUQyBTdGF0dXMgUmVnLiAqLworCisjZGVmaW5lIFJUVFJfQyAgCUZsZCAoMTYsIDApCS8qIGNsb2NrIGRpdmlkZXIgQ291bnQgLSAxICAgICAgICAgKi8KKyNkZWZpbmUgUlRUUl9EICAJRmxkICgxMCwgMTYpCS8qIHRyaW0gRGVsZXRlIGNvdW50ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogZnJ0YyA9ICgxMDIzKihDICsgMSkgLSBEKSpmcnR4LyAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgICAgICAgKDEwMjMqKEMgKyAxKV4yKSAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFRydGMgPSAoMTAyMyooQyArIDEpXjIpKlRydHgvICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogICAgICAgICgxMDIzKihDICsgMSkgLSBEKSAgICAgICAqLworCisjZGVmaW5lIFJUU1JfQUwgCTB4MDAwMDAwMDEJLyogQUxhcm0gZGV0ZWN0ZWQgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSVFNSX0haIAkweDAwMDAwMDAyCS8qIDEgSHogY2xvY2sgZGV0ZWN0ZWQgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUlRTUl9BTEUJMHgwMDAwMDAwNAkvKiBBTGFybSBpbnRlcnJ1cHQgRW5hYmxlICAgICAgICAgICovCisjZGVmaW5lIFJUU1JfSFpFCTB4MDAwMDAwMDgJLyogMSBIeiBjbG9jayBpbnRlcnJ1cHQgRW5hYmxlICAgICAqLworCisKKy8qCisgKiBQb3dlciBNYW5hZ2VyIChQTSkgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFBNQ1IgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIENvbnRyb2wgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgUFNTUiAgICAgIAlQb3dlciBNYW5hZ2VyIChQTSkgU2xlZXAgU3RhdHVzIFJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqICAgIFBTUFIgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIFNjcmF0Y2gtUGFkIFJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqICAgIFBXRVIgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIFdha2UtdXAgRW5hYmxlIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIFBDRlIgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIGdlbmVyYWwgQ29uRmlndXJhdGlvbiBSZWdpc3RlcgorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBQUENSICAgICAgCVBvd2VyIE1hbmFnZXIgKFBNKSBQaGFzZS1Mb2NrZWQgTG9vcCAoUExMKQorICogICAgICAgICAgICAgIAlDb25maWd1cmF0aW9uIFJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqICAgIFBHU1IgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIEdlbmVyYWwtUHVycG9zZSBJbnB1dC9PdXRwdXQgKEdQSU8pCisgKiAgICAgICAgICAgICAgCVNsZWVwIHN0YXRlIFJlZ2lzdGVyIChyZWFkL3dyaXRlLCBzZWUgR1BJTyBwaW5zKS4KKyAqICAgIFBPU1IgICAgICAJUG93ZXIgTWFuYWdlciAoUE0pIE9zY2lsbGF0b3IgU3RhdHVzIFJlZ2lzdGVyIChyZWFkKS4KKyAqCisgKiBDbG9ja3MKKyAqICAgIGZ4dGwsIFR4dGwJRnJlcXVlbmN5LCBwZXJpb2Qgb2YgdGhlIHN5c3RlbSBjcnlzdGFsICgzLjY4NjQgTUh6CisgKiAgICAgICAgICAgICAgCW9yIDMuNTc5NSBNSHopLgorICogICAgZmNwdSwgVGNwdQlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgQ1BVIGNvcmUgY2xvY2sgKENDTEspLgorICovCisKKyNkZWZpbmUgUE1DUgkJX19SRUcoMHg5MDAyMDAwMCkgIC8qIFBNIENvbnRyb2wgUmVnLiAqLworI2RlZmluZSBQU1NSCQlfX1JFRygweDkwMDIwMDA0KSAgLyogUE0gU2xlZXAgU3RhdHVzIFJlZy4gKi8KKyNkZWZpbmUgUFNQUgkJX19SRUcoMHg5MDAyMDAwOCkgIC8qIFBNIFNjcmF0Y2gtUGFkIFJlZy4gKi8KKyNkZWZpbmUgUFdFUgkJX19SRUcoMHg5MDAyMDAwQykgIC8qIFBNIFdha2UtdXAgRW5hYmxlIFJlZy4gKi8KKyNkZWZpbmUgUENGUgkJX19SRUcoMHg5MDAyMDAxMCkgIC8qIFBNIGdlbmVyYWwgQ29uRmlndXJhdGlvbiBSZWcuICovCisjZGVmaW5lIFBQQ1IJCV9fUkVHKDB4OTAwMjAwMTQpICAvKiBQTSBQTEwgQ29uZmlndXJhdGlvbiBSZWcuICovCisjZGVmaW5lIFBHU1IJCV9fUkVHKDB4OTAwMjAwMTgpICAvKiBQTSBHUElPIFNsZWVwIHN0YXRlIFJlZy4gKi8KKyNkZWZpbmUgUE9TUgkJX19SRUcoMHg5MDAyMDAxQykgIC8qIFBNIE9zY2lsbGF0b3IgU3RhdHVzIFJlZy4gKi8KKworI2RlZmluZSBQTUNSX1NGIAkweDAwMDAwMDAxCS8qIFNsZWVwIEZvcmNlIChzZXQgb25seSkgICAgICAgICAgKi8KKworI2RlZmluZSBQU1NSX1NTIAkweDAwMDAwMDAxCS8qIFNvZnR3YXJlIFNsZWVwICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFNTUl9CRlMJMHgwMDAwMDAwMgkvKiBCYXR0ZXJ5IEZhdWx0IFN0YXR1cyAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIChCQVRUX0ZBVUxUKSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFNTUl9WRlMJMHgwMDAwMDAwNAkvKiBWZGQgRmF1bHQgU3RhdHVzIChWRERfRkFVTFQpICAgICovCisjZGVmaW5lIFBTU1JfREggCTB4MDAwMDAwMDgJLyogRFJBTSBjb250cm9sIEhvbGQgICAgICAgICAgICAgICAqLworI2RlZmluZSBQU1NSX1BIIAkweDAwMDAwMDEwCS8qIFBlcmlwaGVyYWwgY29udHJvbCBIb2xkICAgICAgICAgKi8KKworI2RlZmluZSBQV0VSX0dQSU8oTmIpCUdQSU9fR1BJTyAoTmIpCS8qIEdQSU8gWzAuLjI3XSB3YWtlLXVwIGVuYWJsZSAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMAlQV0VSX0dQSU8gKDApCS8qIEdQSU8gIFswXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMQlQV0VSX0dQSU8gKDEpCS8qIEdQSU8gIFsxXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMglQV0VSX0dQSU8gKDIpCS8qIEdQSU8gIFsyXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMwlQV0VSX0dQSU8gKDMpCS8qIEdQSU8gIFszXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPNAlQV0VSX0dQSU8gKDQpCS8qIEdQSU8gIFs0XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPNQlQV0VSX0dQSU8gKDUpCS8qIEdQSU8gIFs1XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPNglQV0VSX0dQSU8gKDYpCS8qIEdQSU8gIFs2XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPNwlQV0VSX0dQSU8gKDcpCS8qIEdQSU8gIFs3XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPOAlQV0VSX0dQSU8gKDgpCS8qIEdQSU8gIFs4XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPOQlQV0VSX0dQSU8gKDkpCS8qIEdQSU8gIFs5XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTAJUFdFUl9HUElPICgxMCkJLyogR1BJTyBbMTBdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8xMQlQV0VSX0dQSU8gKDExKQkvKiBHUElPIFsxMV0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzEyCVBXRVJfR1BJTyAoMTIpCS8qIEdQSU8gWzEyXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTMJUFdFUl9HUElPICgxMykJLyogR1BJTyBbMTNdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8xNAlQV0VSX0dQSU8gKDE0KQkvKiBHUElPIFsxNF0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzE1CVBXRVJfR1BJTyAoMTUpCS8qIEdQSU8gWzE1XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTYJUFdFUl9HUElPICgxNikJLyogR1BJTyBbMTZdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8xNwlQV0VSX0dQSU8gKDE3KQkvKiBHUElPIFsxN10gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzE4CVBXRVJfR1BJTyAoMTgpCS8qIEdQSU8gWzE4XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMTkJUFdFUl9HUElPICgxOSkJLyogR1BJTyBbMTldIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8yMAlQV0VSX0dQSU8gKDIwKQkvKiBHUElPIFsyMF0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzIxCVBXRVJfR1BJTyAoMjEpCS8qIEdQSU8gWzIxXSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMjIJUFdFUl9HUElPICgyMikJLyogR1BJTyBbMjJdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8yMwlQV0VSX0dQSU8gKDIzKQkvKiBHUElPIFsyM10gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzI0CVBXRVJfR1BJTyAoMjQpCS8qIEdQSU8gWzI0XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9HUElPMjUJUFdFUl9HUElPICgyNSkJLyogR1BJTyBbMjVdIHdha2UtdXAgZW5hYmxlICAgICAgICAqLworI2RlZmluZSBQV0VSX0dQSU8yNglQV0VSX0dQSU8gKDI2KQkvKiBHUElPIFsyNl0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisjZGVmaW5lIFBXRVJfR1BJTzI3CVBXRVJfR1BJTyAoMjcpCS8qIEdQSU8gWzI3XSB3YWtlLXVwIGVuYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgUFdFUl9SVEMJMHg4MDAwMDAwMAkvKiBSVEMgYWxhcm0gd2FrZS11cCBlbmFibGUgICAgICAgICovCisKKyNkZWZpbmUgUENGUl9PUERFCTB4MDAwMDAwMDEJLyogT3NjaWxsYXRvciBQb3dlci1Eb3duIEVuYWJsZSAgICAqLworI2RlZmluZSBQQ0ZSX0Nsa1J1bgkoUENGUl9PUERFKjApCS8qICBDbG9jayBSdW5uaW5nIGluIHNsZWVwIG1vZGUgICAgKi8KKyNkZWZpbmUgUENGUl9DbGtTdHAJKFBDRlJfT1BERSoxKQkvKiAgQ2xvY2sgU3RvcHBlZCBpbiBzbGVlcCBtb2RlICAgICovCisjZGVmaW5lIFBDRlJfRlAgCTB4MDAwMDAwMDIJLyogRmxvYXQgUENNQ0lBIHBpbnMgICAgICAgICAgICAgICAqLworI2RlZmluZSBQQ0ZSX1BDTUNJQU5lZwkoUENGUl9GUCowKQkvKiAgUENNQ0lBIHBpbnMgTmVnYXRlZCAoMSkgICAgICAgICovCisjZGVmaW5lIFBDRlJfUENNQ0lBRmx0CShQQ0ZSX0ZQKjEpCS8qICBQQ01DSUEgcGlucyBGbG9hdGluZyAgICAgICAgICAgKi8KKyNkZWZpbmUgUENGUl9GUyAJMHgwMDAwMDAwNAkvKiBGbG9hdCBTdGF0aWMgbWVtb3J5IHBpbnMgICAgICAgICovCisjZGVmaW5lIFBDRlJfU3RNZW1OZWcJKFBDRlJfRlMqMCkJLyogIFN0YXRpYyBNZW1vcnkgcGlucyBOZWdhdGVkICgxKSAqLworI2RlZmluZSBQQ0ZSX1N0TWVtRmx0CShQQ0ZSX0ZTKjEpCS8qICBTdGF0aWMgTWVtb3J5IHBpbnMgRmxvYXRpbmcgICAgKi8KKyNkZWZpbmUgUENGUl9GTyAJMHgwMDAwMDAwOAkvKiBGb3JjZSBSVEMgb3NjaWxsYXRvciAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICgzMi43Njgga0h6KSBlbmFibGUgT24gICAgICAgICAgKi8KKworI2RlZmluZSBQUENSX0NDRglGbGQgKDUsIDApCS8qIENQVSBjb3JlIENsb2NrIChDQ0xLKSBGcmVxLiAgICAgKi8KKyNkZWZpbmUgUFBDUl9GeDE2CSAgICAgICAgCS8qICBGcmVxLiB4IDE2IChmY3B1ID0gMTYqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwMCA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorI2RlZmluZSBQUENSX0Z4MjAJICAgICAgICAJLyogIEZyZXEuIHggMjAgKGZjcHUgPSAyMCpmeHRsKSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDAxIDw8IEZTaGZ0IChQUENSX0NDRikpCisjZGVmaW5lIFBQQ1JfRngyNAkgICAgICAgIAkvKiAgRnJlcS4geCAyNCAoZmNwdSA9IDI0KmZ4dGwpICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MDIgPDwgRlNoZnQgKFBQQ1JfQ0NGKSkKKyNkZWZpbmUgUFBDUl9GeDI4CSAgICAgICAgCS8qICBGcmVxLiB4IDI4IChmY3B1ID0gMjgqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwMyA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorI2RlZmluZSBQUENSX0Z4MzIJICAgICAgICAJLyogIEZyZXEuIHggMzIgKGZjcHUgPSAzMipmeHRsKSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDA0IDw8IEZTaGZ0IChQUENSX0NDRikpCisjZGVmaW5lIFBQQ1JfRngzNgkgICAgICAgIAkvKiAgRnJlcS4geCAzNiAoZmNwdSA9IDM2KmZ4dGwpICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MDUgPDwgRlNoZnQgKFBQQ1JfQ0NGKSkKKyNkZWZpbmUgUFBDUl9GeDQwCSAgICAgICAgCS8qICBGcmVxLiB4IDQwIChmY3B1ID0gNDAqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwNiA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorI2RlZmluZSBQUENSX0Z4NDQJICAgICAgICAJLyogIEZyZXEuIHggNDQgKGZjcHUgPSA0NCpmeHRsKSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDA3IDw8IEZTaGZ0IChQUENSX0NDRikpCisjZGVmaW5lIFBQQ1JfRng0OAkgICAgICAgIAkvKiAgRnJlcS4geCA0OCAoZmNwdSA9IDQ4KmZ4dGwpICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MDggPDwgRlNoZnQgKFBQQ1JfQ0NGKSkKKyNkZWZpbmUgUFBDUl9GeDUyCSAgICAgICAgCS8qICBGcmVxLiB4IDUyIChmY3B1ID0gNTIqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwOSA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorI2RlZmluZSBQUENSX0Z4NTYJICAgICAgICAJLyogIEZyZXEuIHggNTYgKGZjcHUgPSA1NipmeHRsKSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDBBIDw8IEZTaGZ0IChQUENSX0NDRikpCisjZGVmaW5lIFBQQ1JfRng2MAkgICAgICAgIAkvKiAgRnJlcS4geCA2MCAoZmNwdSA9IDYwKmZ4dGwpICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MEIgPDwgRlNoZnQgKFBQQ1JfQ0NGKSkKKyNkZWZpbmUgUFBDUl9GeDY0CSAgICAgICAgCS8qICBGcmVxLiB4IDY0IChmY3B1ID0gNjQqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwQyA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorI2RlZmluZSBQUENSX0Z4NjgJICAgICAgICAJLyogIEZyZXEuIHggNjggKGZjcHUgPSA2OCpmeHRsKSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDBEIDw8IEZTaGZ0IChQUENSX0NDRikpCisjZGVmaW5lIFBQQ1JfRng3MgkgICAgICAgIAkvKiAgRnJlcS4geCA3MiAoZmNwdSA9IDcyKmZ4dGwpICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4MEUgPDwgRlNoZnQgKFBQQ1JfQ0NGKSkKKyNkZWZpbmUgUFBDUl9GeDc2CSAgICAgICAgCS8qICBGcmVxLiB4IDc2IChmY3B1ID0gNzYqZnh0bCkgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwRiA8PCBGU2hmdCAoUFBDUl9DQ0YpKQorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgMy42ODY0IE1IeiBjcnlzdGFsIChmeHRsKTogICAgICovCisjZGVmaW5lIFBQQ1JfRjU5XzBNSHoJUFBDUl9GeDE2CS8qICAgRnJlcS4gKGZjcHUpID0gIDU5LjAgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GNzNfN01IeglQUENSX0Z4MjAJLyogICBGcmVxLiAoZmNwdSkgPSAgNzMuNyBNSHogICAgICAqLworI2RlZmluZSBQUENSX0Y4OF81TUh6CVBQQ1JfRngyNAkvKiAgIEZyZXEuIChmY3B1KSA9ICA4OC41IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjEwM18yTUh6CVBQQ1JfRngyOAkvKiAgIEZyZXEuIChmY3B1KSA9IDEwMy4yIE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjExOF8wTUh6CVBQQ1JfRngzMgkvKiAgIEZyZXEuIChmY3B1KSA9IDExOC4wIE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjEzMl83TUh6CVBQQ1JfRngzNgkvKiAgIEZyZXEuIChmY3B1KSA9IDEzMi43IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjE0N181TUh6CVBQQ1JfRng0MAkvKiAgIEZyZXEuIChmY3B1KSA9IDE0Ny41IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjE2Ml8yTUh6CVBQQ1JfRng0NAkvKiAgIEZyZXEuIChmY3B1KSA9IDE2Mi4yIE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjE3Nl85TUh6CVBQQ1JfRng0OAkvKiAgIEZyZXEuIChmY3B1KSA9IDE3Ni45IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjE5MV83TUh6CVBQQ1JfRng1MgkvKiAgIEZyZXEuIChmY3B1KSA9IDE5MS43IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjIwNl80TUh6CVBQQ1JfRng1NgkvKiAgIEZyZXEuIChmY3B1KSA9IDIwNi40IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjIyMV8yTUh6CVBQQ1JfRng2MAkvKiAgIEZyZXEuIChmY3B1KSA9IDIyMS4yIE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjIzOV82TUh6CVBQQ1JfRng2NAkvKiAgIEZyZXEuIChmY3B1KSA9IDIzOS42IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjI1MF83TUh6CVBQQ1JfRng2OAkvKiAgIEZyZXEuIChmY3B1KSA9IDI1MC43IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjI2NV80TUh6CVBQQ1JfRng3MgkvKiAgIEZyZXEuIChmY3B1KSA9IDI2NS40IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjI4MF8yTUh6CVBQQ1JfRng3NgkvKiAgIEZyZXEuIChmY3B1KSA9IDI4MC4yIE1IeiAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAzLjU3OTUgTUh6IGNyeXN0YWwgKGZ4dGwpOiAgICAgKi8KKyNkZWZpbmUgUFBDUl9GNTdfM01IeglQUENSX0Z4MTYJLyogICBGcmVxLiAoZmNwdSkgPSAgNTcuMyBNSHogICAgICAqLworI2RlZmluZSBQUENSX0Y3MV82TUh6CVBQQ1JfRngyMAkvKiAgIEZyZXEuIChmY3B1KSA9ICA3MS42IE1IeiAgICAgICovCisjZGVmaW5lIFBQQ1JfRjg1XzlNSHoJUFBDUl9GeDI0CS8qICAgRnJlcS4gKGZjcHUpID0gIDg1LjkgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTAwXzJNSHoJUFBDUl9GeDI4CS8qICAgRnJlcS4gKGZjcHUpID0gMTAwLjIgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTE0XzVNSHoJUFBDUl9GeDMyCS8qICAgRnJlcS4gKGZjcHUpID0gMTE0LjUgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTI4XzlNSHoJUFBDUl9GeDM2CS8qICAgRnJlcS4gKGZjcHUpID0gMTI4LjkgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTQzXzJNSHoJUFBDUl9GeDQwCS8qICAgRnJlcS4gKGZjcHUpID0gMTQzLjIgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTU3XzVNSHoJUFBDUl9GeDQ0CS8qICAgRnJlcS4gKGZjcHUpID0gMTU3LjUgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTcxXzhNSHoJUFBDUl9GeDQ4CS8qICAgRnJlcS4gKGZjcHUpID0gMTcxLjggTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMTg2XzFNSHoJUFBDUl9GeDUyCS8qICAgRnJlcS4gKGZjcHUpID0gMTg2LjEgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjAwXzVNSHoJUFBDUl9GeDU2CS8qICAgRnJlcS4gKGZjcHUpID0gMjAwLjUgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjE0XzhNSHoJUFBDUl9GeDYwCS8qICAgRnJlcS4gKGZjcHUpID0gMjE0LjggTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjI5XzFNSHoJUFBDUl9GeDY0CS8qICAgRnJlcS4gKGZjcHUpID0gMjI5LjEgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjQzXzRNSHoJUFBDUl9GeDY4CS8qICAgRnJlcS4gKGZjcHUpID0gMjQzLjQgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjU3XzdNSHoJUFBDUl9GeDcyCS8qICAgRnJlcS4gKGZjcHUpID0gMjU3LjcgTUh6ICAgICAgKi8KKyNkZWZpbmUgUFBDUl9GMjcyXzBNSHoJUFBDUl9GeDc2CS8qICAgRnJlcS4gKGZjcHUpID0gMjcyLjAgTUh6ICAgICAgKi8KKworI2RlZmluZSBQT1NSX09PSwkweDAwMDAwMDAxCS8qIFJUQyBPc2NpbGxhdG9yICgzMi43Njgga0h6KSBPSyAgKi8KKworCisvKgorICogUmVzZXQgQ29udHJvbGxlciAoUkMpIGNvbnRyb2wgcmVnaXN0ZXJzCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBSU1JSICAgICAgCVJlc2V0IENvbnRyb2xsZXIgKFJDKSBTb2Z0d2FyZSBSZXNldCBSZWdpc3RlcgorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBSQ1NSICAgICAgCVJlc2V0IENvbnRyb2xsZXIgKFJDKSBTdGF0dXMgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICovCisKKyNkZWZpbmUgUlNSUgkJX19SRUcoMHg5MDAzMDAwMCkgIC8qIFJDIFNvZnR3YXJlIFJlc2V0IFJlZy4gKi8KKyNkZWZpbmUgUkNTUgkJX19SRUcoMHg5MDAzMDAwNCkgIC8qIFJDIFN0YXR1cyBSZWcuICovCisKKyNkZWZpbmUgUlNSUl9TV1IJMHgwMDAwMDAwMQkvKiBTb2Z0V2FyZSBSZXNldCAoc2V0IG9ubHkpICAgICAgICovCisKKyNkZWZpbmUgUkNTUl9IV1IJMHgwMDAwMDAwMQkvKiBIYXJkV2FyZSBSZXNldCAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFJDU1JfU1dSCTB4MDAwMDAwMDIJLyogU29mdFdhcmUgUmVzZXQgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSQ1NSX1dEUgkweDAwMDAwMDA0CS8qIFdhdGNoLURvZyBSZXNldCAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUkNTUl9TTVIJMHgwMDAwMDAwOAkvKiBTbGVlcC1Nb2RlIFJlc2V0ICAgICAgICAgICAgICAgICovCisKKworLyoKKyAqIFRlc3QgdW5pdCBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgVFVDUiAgICAgIAlUZXN0IFVuaXQgQ29udHJvbCBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKi8KKworI2RlZmluZSBUVUNSCQlfX1JFRygweDkwMDMwMDA4KSAgLyogVGVzdCBVbml0IENvbnRyb2wgUmVnLiAqLworCisjZGVmaW5lIFRVQ1JfVElDCTB4MDAwMDAwNDAJLyogVElDIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVUNSX1RUU1QJMHgwMDAwMDA4MAkvKiBUcmltIFRlU1QgbW9kZSAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRVQ1JfUkNSQwkweDAwMDAwMTAwCS8qIFJpY2hhcmQncyBDeWNsaWMgUmVkdW5kYW5jeSAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVUNSX1BNRAkweDAwMDAwMjAwCS8qIFBvd2VyIE1hbmFnZW1lbnQgRGlzYWJsZSAgICAgICAgKi8KKyNkZWZpbmUgVFVDUl9NUiAJMHgwMDAwMDQwMAkvKiBNZW1vcnkgUmVxdWVzdCBtb2RlICAgICAgICAgICAgICovCisjZGVmaW5lIFRVQ1JfTm9NQgkoVFVDUl9NUiowKQkvKiAgTm8gTWVtb3J5IEJ1cyByZXF1ZXN0ICYgZ3JhbnQgICovCisjZGVmaW5lIFRVQ1JfTUJHUElPCShUVUNSX01SKjEpCS8qICBNZW1vcnkgQnVzIHJlcXVlc3QgKE1CUkVRKSAmICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGdyYW50IChNQkdOVCkgb24gR1BJTyBbMjI6MjFdICAqLworI2RlZmluZSBUVUNSX0NUQglGbGQgKDMsIDIwKQkvKiBDbG9jayBUZXN0IEJpdHMgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRVQ1JfRkRDCTB4MDA4MDAwMDAJLyogUlRDIEZvcmNlIERlbGV0ZSBDb3VudCAgICAgICAgICAqLworI2RlZmluZSBUVUNSX0ZNQwkweDAxMDAwMDAwCS8qIEZvcmNlIE1pY2hlbGxlJ3MgQ29udHJvbCBtb2RlICAgKi8KKyNkZWZpbmUgVFVDUl9UTUMJMHgwMjAwMDAwMAkvKiBSVEMgVHJpbW1lciBNdWx0aXBsZXhlciBDb250cm9sICovCisjZGVmaW5lIFRVQ1JfRFBTCTB4MDQwMDAwMDAJLyogRGlzYWxsb3cgUGFkIFNsZWVwICAgICAgICAgICAgICAqLworI2RlZmluZSBUVUNSX1RTRUwJRmxkICgzLCAyOSkJLyogY2xvY2sgVGVzdCBTRUxlY3Qgb24gR1BJTyBbMjddICAqLworI2RlZmluZSBUVUNSXzMyXzc2OGtIegkgICAgICAgIAkvKiAgMzIuNzY4IGtIeiBvc2MuIG9uIEdQSU8gWzI3XSAgICovIFwKKyAgICAgICAgICAgICAgICAJKDAgPDwgRlNoZnQgKFRVQ1JfVFNFTCkpCisjZGVmaW5lIFRVQ1JfM182ODY0TUh6CSAgICAgICAgCS8qICAzLjY4NjQgTUh6IG9zYy4gb24gR1BJTyBbMjddICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMSA8PCBGU2hmdCAoVFVDUl9UU0VMKSkKKyNkZWZpbmUgVFVDUl9WREQJICAgICAgICAJLyogIFZERCByaW5nIG9zYy4vMTYgb24gR1BJTyBbMjddICAqLyBcCisgICAgICAgICAgICAgICAgCSgyIDw8IEZTaGZ0IChUVUNSX1RTRUwpKQorI2RlZmluZSBUVUNSXzk2TUh6UExMCSAgICAgICAgCS8qICA5NiBNSHogUExMLzQgb24gR1BJTyBbMjddICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMyA8PCBGU2hmdCAoVFVDUl9UU0VMKSkKKyNkZWZpbmUgVFVDUl9DbG9jawkgICAgICAgIAkvKiAgaW50ZXJuYWwgKGZjcHUvMikgJiAzMi43Njgga0h6ICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIENsb2NrcyBvbiBHUElPIFsyNjoyN10gICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSg0IDw8IEZTaGZ0IChUVUNSX1RTRUwpKQorI2RlZmluZSBUVUNSXzNfNjg2NE1IekEJICAgICAgICAJLyogIDMuNjg2NCBNSHogb3NjLiBvbiBHUElPIFsyN10gICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAoQWx0ZXJuYXRpdmUpICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoNSA8PCBGU2hmdCAoVFVDUl9UU0VMKSkKKyNkZWZpbmUgVFVDUl9NYWluUExMCSAgICAgICAgCS8qICBNYWluIFBMTC8xNiBvbiBHUElPIFsyN10gICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoNiA8PCBGU2hmdCAoVFVDUl9UU0VMKSkKKyNkZWZpbmUgVFVDUl9WRERMCSAgICAgICAgCS8qICBWRERMIHJpbmcgb3NjLi80IG9uIEdQSU8gWzI3XSAgKi8gXAorICAgICAgICAgICAgICAgIAkoNyA8PCBGU2hmdCAoVFVDUl9UU0VMKSkKKworCisvKgorICogR2VuZXJhbC1QdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIEdQTFIgICAgICAJR2VuZXJhbC1QdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgUGluIExldmVsCisgKiAgICAgICAgICAgICAgCVJlZ2lzdGVyIChyZWFkKS4KKyAqICAgIEdQRFIgICAgICAJR2VuZXJhbC1QdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgUGluIERpcmVjdGlvbgorICogICAgICAgICAgICAgIAlSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBHUFNSICAgICAgCUdlbmVyYWwtUHVycG9zZSBJbnB1dC9PdXRwdXQgKEdQSU8pIFBpbiBvdXRwdXQgU2V0CisgKiAgICAgICAgICAgICAgCVJlZ2lzdGVyICh3cml0ZSkuCisgKiAgICBHUENSICAgICAgCUdlbmVyYWwtUHVycG9zZSBJbnB1dC9PdXRwdXQgKEdQSU8pIFBpbiBvdXRwdXQgQ2xlYXIKKyAqICAgICAgICAgICAgICAJUmVnaXN0ZXIgKHdyaXRlKS4KKyAqICAgIEdSRVIgICAgICAJR2VuZXJhbC1QdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgUmlzaW5nLUVkZ2UKKyAqICAgICAgICAgICAgICAJZGV0ZWN0IFJlZ2lzdGVyIChyZWFkL3dyaXRlKS4KKyAqICAgIEdGRVIgICAgICAJR2VuZXJhbC1QdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgRmFsbGluZy1FZGdlCisgKiAgICAgICAgICAgICAgCWRldGVjdCBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBHRURSICAgICAgCUdlbmVyYWwtUHVycG9zZSBJbnB1dC9PdXRwdXQgKEdQSU8pIEVkZ2UgRGV0ZWN0CisgKiAgICAgICAgICAgICAgCXN0YXR1cyBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBHQUZSICAgICAgCUdlbmVyYWwtUHVycG9zZSBJbnB1dC9PdXRwdXQgKEdQSU8pIEFsdGVybmF0ZQorICogICAgICAgICAgICAgIAlGdW5jdGlvbiBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKgorICogQ2xvY2sKKyAqICAgIGZjcHUsIFRjcHUJRnJlcXVlbmN5LCBwZXJpb2Qgb2YgdGhlIENQVSBjb3JlIGNsb2NrIChDQ0xLKS4KKyAqLworCisjZGVmaW5lIEdQTFIJCV9fUkVHKDB4OTAwNDAwMDApICAvKiBHUElPIFBpbiBMZXZlbCBSZWcuICAgICAgICAgICAgICovCisjZGVmaW5lIEdQRFIJCV9fUkVHKDB4OTAwNDAwMDQpICAvKiBHUElPIFBpbiBEaXJlY3Rpb24gUmVnLiAgICAgICAgICovCisjZGVmaW5lIEdQU1IJCV9fUkVHKDB4OTAwNDAwMDgpICAvKiBHUElPIFBpbiBvdXRwdXQgU2V0IFJlZy4gICAgICAgICovCisjZGVmaW5lIEdQQ1IJCV9fUkVHKDB4OTAwNDAwMEMpICAvKiBHUElPIFBpbiBvdXRwdXQgQ2xlYXIgUmVnLiAgICAgICovCisjZGVmaW5lIEdSRVIJCV9fUkVHKDB4OTAwNDAwMTApICAvKiBHUElPIFJpc2luZy1FZGdlIGRldGVjdCBSZWcuICAgICovCisjZGVmaW5lIEdGRVIJCV9fUkVHKDB4OTAwNDAwMTQpICAvKiBHUElPIEZhbGxpbmctRWRnZSBkZXRlY3QgUmVnLiAgICovCisjZGVmaW5lIEdFRFIJCV9fUkVHKDB4OTAwNDAwMTgpICAvKiBHUElPIEVkZ2UgRGV0ZWN0IHN0YXR1cyBSZWcuICAgICovCisjZGVmaW5lIEdBRlIJCV9fUkVHKDB4OTAwNDAwMUMpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBSZWcuICAgICovCisKKyNkZWZpbmUgR1BJT19NSU4JKDApCisjZGVmaW5lIEdQSU9fTUFYCSgyNykKKworI2RlZmluZSBHUElPX0dQSU8oTmIpCSAgICAgICAgCS8qIEdQSU8gWzAuLjI3XSAgICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwMDAwMDAwMSA8PCAoTmIpKQorI2RlZmluZSBHUElPX0dQSU8wCUdQSU9fR1BJTyAoMCkJLyogR1BJTyAgWzBdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8xCUdQSU9fR1BJTyAoMSkJLyogR1BJTyAgWzFdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8yCUdQSU9fR1BJTyAoMikJLyogR1BJTyAgWzJdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8zCUdQSU9fR1BJTyAoMykJLyogR1BJTyAgWzNdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU80CUdQSU9fR1BJTyAoNCkJLyogR1BJTyAgWzRdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU81CUdQSU9fR1BJTyAoNSkJLyogR1BJTyAgWzVdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU82CUdQSU9fR1BJTyAoNikJLyogR1BJTyAgWzZdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU83CUdQSU9fR1BJTyAoNykJLyogR1BJTyAgWzddICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU84CUdQSU9fR1BJTyAoOCkJLyogR1BJTyAgWzhdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU85CUdQSU9fR1BJTyAoOSkJLyogR1BJTyAgWzldICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8xMAlHUElPX0dQSU8gKDEwKQkvKiBHUElPIFsxMF0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzExCUdQSU9fR1BJTyAoMTEpCS8qIEdQSU8gWzExXSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMTIJR1BJT19HUElPICgxMikJLyogR1BJTyBbMTJdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8xMwlHUElPX0dQSU8gKDEzKQkvKiBHUElPIFsxM10gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzE0CUdQSU9fR1BJTyAoMTQpCS8qIEdQSU8gWzE0XSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMTUJR1BJT19HUElPICgxNSkJLyogR1BJTyBbMTVdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8xNglHUElPX0dQSU8gKDE2KQkvKiBHUElPIFsxNl0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzE3CUdQSU9fR1BJTyAoMTcpCS8qIEdQSU8gWzE3XSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMTgJR1BJT19HUElPICgxOCkJLyogR1BJTyBbMThdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8xOQlHUElPX0dQSU8gKDE5KQkvKiBHUElPIFsxOV0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzIwCUdQSU9fR1BJTyAoMjApCS8qIEdQSU8gWzIwXSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMjEJR1BJT19HUElPICgyMSkJLyogR1BJTyBbMjFdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8yMglHUElPX0dQSU8gKDIyKQkvKiBHUElPIFsyMl0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzIzCUdQSU9fR1BJTyAoMjMpCS8qIEdQSU8gWzIzXSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMjQJR1BJT19HUElPICgyNCkJLyogR1BJTyBbMjRdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0dQSU8yNQlHUElPX0dQSU8gKDI1KQkvKiBHUElPIFsyNV0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fR1BJTzI2CUdQSU9fR1BJTyAoMjYpCS8qIEdQSU8gWzI2XSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19HUElPMjcJR1BJT19HUElPICgyNykJLyogR1BJTyBbMjddICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIEdQSU9fTEREKE5iKQkgICAgICAgIAkvKiBMQ0QgRGF0YSBbOC4uMTVdIChPKSAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJR1BJT19HUElPICgoTmIpIC0gNikKKyNkZWZpbmUgR1BJT19MREQ4CUdQSU9fTEREICg4KQkvKiBMQ0QgRGF0YSAgWzhdIChPKSAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fTEREOQlHUElPX0xERCAoOSkJLyogTENEIERhdGEgIFs5XSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDEwCUdQSU9fTEREICgxMCkJLyogTENEIERhdGEgWzEwXSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDExCUdQSU9fTEREICgxMSkJLyogTENEIERhdGEgWzExXSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDEyCUdQSU9fTEREICgxMikJLyogTENEIERhdGEgWzEyXSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDEzCUdQSU9fTEREICgxMykJLyogTENEIERhdGEgWzEzXSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDE0CUdQSU9fTEREICgxNCkJLyogTENEIERhdGEgWzE0XSAoTykgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX0xERDE1CUdQSU9fTEREICgxNSkJLyogTENEIERhdGEgWzE1XSAoTykgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBzZXIuIHBvcnQgNDogICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fU1NQX1RYRAlHUElPX0dQSU8gKDEwKQkvKiAgU1NQIFRyYW5zbWl0IERhdGEgKE8pICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fU1NQX1JYRAlHUElPX0dQSU8gKDExKQkvKiAgU1NQIFJlY2VpdmUgRGF0YSAoSSkgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fU1NQX1NDTEsJR1BJT19HUElPICgxMikJLyogIFNTUCBTYW1wbGUgQ0xvY0sgKE8pICAgICAgICAgICAqLworI2RlZmluZSBHUElPX1NTUF9TRlJNCUdQSU9fR1BJTyAoMTMpCS8qICBTU1AgU2FtcGxlIEZSYU1lIChPKSAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogc2VyLiBwb3J0IDE6ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX1VBUlRfVFhECUdQSU9fR1BJTyAoMTQpCS8qICBVQVJUIFRyYW5zbWl0IERhdGEgKE8pICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19VQVJUX1JYRAlHUElPX0dQSU8gKDE1KQkvKiAgVUFSVCBSZWNlaXZlIERhdGEgKEkpICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fU0RMQ19TQ0xLCUdQSU9fR1BJTyAoMTYpCS8qICBTRExDIFNhbXBsZSBDTG9jSyAoSS9PKSAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19TRExDX0FBRglHUElPX0dQSU8gKDE3KQkvKiAgU0RMQyBBYm9ydCBBZnRlciBGcmFtZSAoTykgICAgICovCisjZGVmaW5lIEdQSU9fVUFSVF9TQ0xLMQlHUElPX0dQSU8gKDE4KQkvKiAgVUFSVCBTYW1wbGUgQ0xvY0sgMSAoSSkgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHNlci4gcG9ydCA0OiAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19TU1BfQ0xLCUdQSU9fR1BJTyAoMTkpCS8qICBTU1AgZXh0ZXJuYWwgQ0xvY0sgKEkpICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogc2VyLiBwb3J0IDM6ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX1VBUlRfU0NMSzMJR1BJT19HUElPICgyMCkJLyogIFVBUlQgU2FtcGxlIENMb2NLIDMgKEkpICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBzZXIuIHBvcnQgNDogICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fTUNQX0NMSwlHUElPX0dQSU8gKDIxKQkvKiAgTUNQIENMb2NLIChJKSAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHRlc3QgY29udHJvbGxlcjogICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19USUNfQUNLCUdQSU9fR1BJTyAoMjEpCS8qICBUSUMgQUNLbm93bGVkZ2UgKE8pICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19NQkdOVAlHUElPX0dQSU8gKDIxKQkvKiAgTWVtb3J5IEJ1cyBHcmFOVCAoTykgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fVFJFUUEJR1BJT19HUElPICgyMikJLyogIFRJQyBSRVF1ZXN0IEEgKEkpICAgICAgICAgICAgICAqLworI2RlZmluZSBHUElPX01CUkVRCUdQSU9fR1BJTyAoMjIpCS8qICBNZW1vcnkgQnVzIFJFUXVlc3QgKEkpICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19UUkVRQglHUElPX0dQSU8gKDIzKQkvKiAgVElDIFJFUXVlc3QgQiAoSSkgICAgICAgICAgICAgICovCisjZGVmaW5lIEdQSU9fMUh6CUdQSU9fR1BJTyAoMjUpCS8qIDEgSHogY2xvY2sgKE8pICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BJT19SQ0xLCUdQSU9fR1BJTyAoMjYpCS8qIGludGVybmFsIChSKSBDTG9jSyAoTywgZmNwdS8yKSAgKi8KKyNkZWZpbmUgR1BJT18zMl83NjhrSHoJR1BJT19HUElPICgyNykJLyogMzIuNzY4IGtIeiBjbG9jayAoTywgUlRDKSAgICAgICAqLworCisjZGVmaW5lIEdQRFJfSW4gCTAgICAgICAgCS8qIElucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR1BEUl9PdXQJMSAgICAgICAJLyogT3V0cHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKy8qCisgKiBJbnRlcnJ1cHQgQ29udHJvbGxlciAoSUMpIGNvbnRyb2wgcmVnaXN0ZXJzCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBJQ0lQICAgICAgCUludGVycnVwdCBDb250cm9sbGVyIChJQykgSW50ZXJydXB0IFJlUXVlc3QgKElSUSkKKyAqICAgICAgICAgICAgICAJUGVuZGluZyByZWdpc3RlciAocmVhZCkuCisgKiAgICBJQ01SICAgICAgCUludGVycnVwdCBDb250cm9sbGVyIChJQykgTWFzayBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBJQ0xSICAgICAgCUludGVycnVwdCBDb250cm9sbGVyIChJQykgTGV2ZWwgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgSUNDUiAgICAgIAlJbnRlcnJ1cHQgQ29udHJvbGxlciAoSUMpIENvbnRyb2wgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbVGhlIElDQ1IgcmVnaXN0ZXIgaXMgb25seSBpbXBsZW1lbnRlZCBpbiB2ZXJzaW9ucyAyLjAKKyAqICAgICAgICAgICAgICAJKHJldi4gPSA4KSBhbmQgaGlnaGVyIG9mIHRoZSBTdHJvbmdBUk0gU0EtMTEwMC5dCisgKiAgICBJQ0ZQICAgICAgCUludGVycnVwdCBDb250cm9sbGVyIChJQykgRmFzdCBJbnRlcnJ1cHQgcmVRdWVzdAorICogICAgICAgICAgICAgIAkoRklRKSBQZW5kaW5nIHJlZ2lzdGVyIChyZWFkKS4KKyAqICAgIElDUFIgICAgICAJSW50ZXJydXB0IENvbnRyb2xsZXIgKElDKSBQZW5kaW5nIFJlZ2lzdGVyIChyZWFkKS4KKyAqICAgICAgICAgICAgICAJW1RoZSBJQ1BSIHJlZ2lzdGVyIGlzIGFjdGl2ZSBsb3cgKGludmVydGVkKSBpbgorICogICAgICAgICAgICAgIAl2ZXJzaW9ucyAxLjAgKHJldi4gPSAxKSBhbmQgMS4xIChyZXYuID0gMikgb2YgdGhlCisgKiAgICAgICAgICAgICAgCVN0cm9uZ0FSTSBTQS0xMTAwLCBpdCBpcyBhY3RpdmUgaGlnaCAobm9uLWludmVydGVkKSBpbgorICogICAgICAgICAgICAgIAl2ZXJzaW9ucyAyLjAgKHJldi4gPSA4KSBhbmQgaGlnaGVyLl0KKyAqLworCisjZGVmaW5lIElDSVAJCV9fUkVHKDB4OTAwNTAwMDApICAvKiBJQyBJUlEgUGVuZGluZyByZWcuICAgICAgICAgICAgICovCisjZGVmaW5lIElDTVIJCV9fUkVHKDB4OTAwNTAwMDQpICAvKiBJQyBNYXNrIFJlZy4gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDTFIJCV9fUkVHKDB4OTAwNTAwMDgpICAvKiBJQyBMZXZlbCBSZWcuICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDQ1IJCV9fUkVHKDB4OTAwNTAwMEMpICAvKiBJQyBDb250cm9sIFJlZy4gICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDRlAJCV9fUkVHKDB4OTAwNTAwMTApICAvKiBJQyBGSVEgUGVuZGluZyByZWcuICAgICAgICAgICAgICovCisjZGVmaW5lIElDUFIJCV9fUkVHKDB4OTAwNTAwMjApICAvKiBJQyBQZW5kaW5nIFJlZy4gICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgSUNfR1BJTyhOYikJICAgICAgICAJLyogR1BJTyBbMC4uMTBdICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDAwMDAwMDAxIDw8IChOYikpCisjZGVmaW5lIElDX0dQSU8wCUlDX0dQSU8gKDApCS8qIEdQSU8gIFswXSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfR1BJTzEJSUNfR1BJTyAoMSkJLyogR1BJTyAgWzFdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19HUElPMglJQ19HUElPICgyKQkvKiBHUElPICBbMl0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX0dQSU8zCUlDX0dQSU8gKDMpCS8qIEdQSU8gIFszXSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfR1BJTzQJSUNfR1BJTyAoNCkJLyogR1BJTyAgWzRdICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19HUElPNQlJQ19HUElPICg1KQkvKiBHUElPICBbNV0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX0dQSU82CUlDX0dQSU8gKDYpCS8qIEdQSU8gIFs2XSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfR1BJTzcJSUNfR1BJTyAoNykJLyogR1BJTyAgWzddICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19HUElPOAlJQ19HUElPICg4KQkvKiBHUElPICBbOF0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX0dQSU85CUlDX0dQSU8gKDkpCS8qIEdQSU8gIFs5XSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfR1BJTzEwCUlDX0dQSU8gKDEwKQkvKiBHUElPIFsxMF0gICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX0dQSU8xMV8yNwkweDAwMDAwODAwCS8qIEdQSU8gWzExOjI3XSAoT1JlZCkgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfTENEICAJMHgwMDAwMTAwMAkvKiBMQ0QgY29udHJvbGxlciAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX1NlcjBVREMJMHgwMDAwMjAwMAkvKiBTZXIuIHBvcnQgMCBVREMgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX1NlcjFTRExDCTB4MDAwMDQwMDAJLyogU2VyLiBwb3J0IDEgU0RMQyAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19TZXIxVUFSVAkweDAwMDA4MDAwCS8qIFNlci4gcG9ydCAxIFVBUlQgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfU2VyMklDUAkweDAwMDEwMDAwCS8qIFNlci4gcG9ydCAyIElDUCAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfU2VyM1VBUlQJMHgwMDAyMDAwMAkvKiBTZXIuIHBvcnQgMyBVQVJUICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX1NlcjRNQ1AJMHgwMDA0MDAwMAkvKiBTZXIuIHBvcnQgNCBNQ1AgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX1NlcjRTU1AJMHgwMDA4MDAwMAkvKiBTZXIuIHBvcnQgNCBTU1AgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX0RNQShOYikJICAgICAgICAJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCBbMC4uNV0gICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDAwMTAwMDAwIDw8IChOYikpCisjZGVmaW5lIElDX0RNQTAgCUlDX0RNQSAoMCkJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAwICAgICAgICAqLworI2RlZmluZSBJQ19ETUExIAlJQ19ETUEgKDEpCS8qIERNQSBjb250cm9sbGVyIGNoYW5uZWwgMSAgICAgICAgKi8KKyNkZWZpbmUgSUNfRE1BMiAJSUNfRE1BICgyKQkvKiBETUEgY29udHJvbGxlciBjaGFubmVsIDIgICAgICAgICovCisjZGVmaW5lIElDX0RNQTMgCUlDX0RNQSAoMykJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAzICAgICAgICAqLworI2RlZmluZSBJQ19ETUE0IAlJQ19ETUEgKDQpCS8qIERNQSBjb250cm9sbGVyIGNoYW5uZWwgNCAgICAgICAgKi8KKyNkZWZpbmUgSUNfRE1BNSAJSUNfRE1BICg1KQkvKiBETUEgY29udHJvbGxlciBjaGFubmVsIDUgICAgICAgICovCisjZGVmaW5lIElDX09TVChOYikJICAgICAgICAJLyogT1MgVGltZXIgbWF0Y2ggWzAuLjNdICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDA0MDAwMDAwIDw8IChOYikpCisjZGVmaW5lIElDX09TVDAgCUlDX09TVCAoMCkJLyogT1MgVGltZXIgbWF0Y2ggMCAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19PU1QxIAlJQ19PU1QgKDEpCS8qIE9TIFRpbWVyIG1hdGNoIDEgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNfT1NUMiAJSUNfT1NUICgyKQkvKiBPUyBUaW1lciBtYXRjaCAyICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX09TVDMgCUlDX09TVCAoMykJLyogT1MgVGltZXIgbWF0Y2ggMyAgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ19SVEMxSHoJMHg0MDAwMDAwMAkvKiBSVEMgMSBIeiBjbG9jayAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElDX1JUQ0Fscm0JMHg4MDAwMDAwMAkvKiBSVEMgQWxhcm0gICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgSUNMUl9JUlEJMCAgICAgICAJLyogSW50ZXJydXB0IFJlUXVlc3QgICAgICAgICAgICAgICAqLworI2RlZmluZSBJQ0xSX0ZJUQkxICAgICAgIAkvKiBGYXN0IEludGVycnVwdCByZVF1ZXN0ICAgICAgICAgICovCisKKyNkZWZpbmUgSUNDUl9ESU0JMHgwMDAwMDAwMQkvKiBEaXNhYmxlIElkbGUtbW9kZSBpbnRlcnJ1cHQgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIE1hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNDUl9JZGxlQWxsSW50CShJQ0NSX0RJTSowKQkvKiAgSWRsZS1tb2RlIEFsbCBJbnRlcnJ1cHQgZW5hYmxlICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAoSUNNUiBpZ25vcmVkKSAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSUNDUl9JZGxlTXNrSW50CShJQ0NSX0RJTSoxKQkvKiAgSWRsZS1tb2RlIG5vbi1NYXNrZWQgSW50ZXJydXB0ICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBlbmFibGUgKElDTVIgdXNlZCkgICAgICAgICAgICAgKi8KKworCisvKgorICogUGVyaXBoZXJhbCBQaW4gQ29udHJvbGxlciAoUFBDKSBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgUFBEUiAgICAgIAlQZXJpcGhlcmFsIFBpbiBDb250cm9sbGVyIChQUEMpIFBpbiBEaXJlY3Rpb24KKyAqICAgICAgICAgICAgICAJUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgUFBTUiAgICAgIAlQZXJpcGhlcmFsIFBpbiBDb250cm9sbGVyIChQUEMpIFBpbiBTdGF0ZSBSZWdpc3RlcgorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICBQUEFSICAgICAgCVBlcmlwaGVyYWwgUGluIENvbnRyb2xsZXIgKFBQQykgUGluIEFzc2lnbm1lbnQKKyAqICAgICAgICAgICAgICAJUmVnaXN0ZXIgKHJlYWQvd3JpdGUpLgorICogICAgUFNEUiAgICAgIAlQZXJpcGhlcmFsIFBpbiBDb250cm9sbGVyIChQUEMpIFNsZWVwLW1vZGUgcGluCisgKiAgICAgICAgICAgICAgCURpcmVjdGlvbiBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBQUEZSICAgICAgCVBlcmlwaGVyYWwgUGluIENvbnRyb2xsZXIgKFBQQykgUGluIEZsYWcgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQpLgorICovCisKKyNkZWZpbmUgUFBEUgkJX19SRUcoMHg5MDA2MDAwMCkgIC8qIFBQQyBQaW4gRGlyZWN0aW9uIFJlZy4gICAgICAgICAgKi8KKyNkZWZpbmUgUFBTUgkJX19SRUcoMHg5MDA2MDAwNCkgIC8qIFBQQyBQaW4gU3RhdGUgUmVnLiAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBBUgkJX19SRUcoMHg5MDA2MDAwOCkgIC8qIFBQQyBQaW4gQXNzaWdubWVudCBSZWcuICAgICAgICAgKi8KKyNkZWZpbmUgUFNEUgkJX19SRUcoMHg5MDA2MDAwQykgIC8qIFBQQyBTbGVlcC1tb2RlIHBpbiBEaXJlY3Rpb24gUmVnLiAqLworI2RlZmluZSBQUEZSCQlfX1JFRygweDkwMDYwMDEwKSAgLyogUFBDIFBpbiBGbGFnIFJlZy4gICAgICAgICAgICAgICAqLworCisjZGVmaW5lIFBQQ19MREQoTmIpCSAgICAgICAgCS8qIExDRCBEYXRhIFswLi43XSAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwMDAwMDAwMSA8PCAoTmIpKQorI2RlZmluZSBQUENfTEREMAlQUENfTEREICgwKQkvKiBMQ0QgRGF0YSBbMF0gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQ19MREQxCVBQQ19MREQgKDEpCS8qIExDRCBEYXRhIFsxXSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xERDIJUFBDX0xERCAoMikJLyogTENEIERhdGEgWzJdICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQUENfTEREMwlQUENfTEREICgzKQkvKiBMQ0QgRGF0YSBbM10gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQ19MREQ0CVBQQ19MREQgKDQpCS8qIExDRCBEYXRhIFs0XSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xERDUJUFBDX0xERCAoNSkJLyogTENEIERhdGEgWzVdICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQUENfTERENglQUENfTEREICg2KQkvKiBMQ0QgRGF0YSBbNl0gICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQ19MREQ3CVBQQ19MREQgKDcpCS8qIExDRCBEYXRhIFs3XSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xfUENMSwkweDAwMDAwMTAwCS8qIExDRCBQaXhlbCBDTG9jSyAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xfTENMSwkweDAwMDAwMjAwCS8qIExDRCBMaW5lIENMb2NLICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xfRkNMSwkweDAwMDAwNDAwCS8qIExDRCBGcmFtZSBDTG9jSyAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX0xfQklBUwkweDAwMDAwODAwCS8qIExDRCBBQyBCSUFTICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogc2VyLiBwb3J0IDE6ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQUENfVFhEMQkweDAwMDAxMDAwCS8qICBTRExDL1VBUlQgVHJhbnNtaXQgRGF0YSAxICAgICAgKi8KKyNkZWZpbmUgUFBDX1JYRDEJMHgwMDAwMjAwMAkvKiAgU0RMQy9VQVJUIFJlY2VpdmUgRGF0YSAxICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHNlci4gcG9ydCAyOiAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBDX1RYRDIJMHgwMDAwNDAwMAkvKiAgSVBDIFRyYW5zbWl0IERhdGEgMiAgICAgICAgICAgICovCisjZGVmaW5lIFBQQ19SWEQyCTB4MDAwMDgwMDAJLyogIElQQyBSZWNlaXZlIERhdGEgMiAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBzZXIuIHBvcnQgMzogICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQ19UWEQzCTB4MDAwMTAwMDAJLyogIFVBUlQgVHJhbnNtaXQgRGF0YSAzICAgICAgICAgICAqLworI2RlZmluZSBQUENfUlhEMwkweDAwMDIwMDAwCS8qICBVQVJUIFJlY2VpdmUgRGF0YSAzICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogc2VyLiBwb3J0IDQ6ICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQUENfVFhENAkweDAwMDQwMDAwCS8qICBNQ1AvU1NQIFRyYW5zbWl0IERhdGEgNCAgICAgICAgKi8KKyNkZWZpbmUgUFBDX1JYRDQJMHgwMDA4MDAwMAkvKiAgTUNQL1NTUCBSZWNlaXZlIERhdGEgNCAgICAgICAgICovCisjZGVmaW5lIFBQQ19TQ0xLCTB4MDAxMDAwMDAJLyogIE1DUC9TU1AgU2FtcGxlIENMb2NLICAgICAgICAgICAqLworI2RlZmluZSBQUENfU0ZSTQkweDAwMjAwMDAwCS8qICBNQ1AvU1NQIFNhbXBsZSBGUmFNZSAgICAgICAgICAgKi8KKworI2RlZmluZSBQUERSX0luIAkwICAgICAgIAkvKiBJbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQRFJfT3V0CTEgICAgICAgCS8qIE91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBzZXIuIHBvcnQgMTogICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQVJfVVBSCTB4MDAwMDEwMDAJLyogIFVBUlQgUGluIFJlYXNzaWdubWVudCAgICAgICAgICAqLworI2RlZmluZSBQUEFSX1VBUlRUUgkoUFBBUl9VUFIqMCkJLyogICBVQVJUIG9uIFRYRF8xICYgUlhEXzEgICAgICAgICAqLworI2RlZmluZSBQUEFSX1VBUlRHUElPCShQUEFSX1VQUioxKQkvKiAgIFVBUlQgb24gR1BJTyBbMTQ6MTVdICAgICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHNlci4gcG9ydCA0OiAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBBUl9TUFIJMHgwMDA0MDAwMAkvKiAgU1NQIFBpbiBSZWFzc2lnbm1lbnQgICAgICAgICAgICovCisjZGVmaW5lIFBQQVJfU1NQVFJTUwkoUFBBUl9TUFIqMCkJLyogICBTU1Agb24gVFhEX0MsIFJYRF9DLCBTQ0xLX0MsICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgICYgU0ZSTV9DICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBQQVJfU1NQR1BJTwkoUFBBUl9TUFIqMSkJLyogICBTU1Agb24gR1BJTyBbMTA6MTNdICAgICAgICAgICAqLworCisjZGVmaW5lIFBTRFJfT3V0TAkwICAgICAgIAkvKiBPdXRwdXQgTG93IGluIHNsZWVwIG1vZGUgICAgICAgICovCisjZGVmaW5lIFBTRFJfRmx0CTEgICAgICAgCS8qIEZsb2F0aW5nIChpbnB1dCkgaW4gc2xlZXAgbW9kZSAgKi8KKworI2RlZmluZSBQUEZSX0xDRAkweDAwMDAwMDAxCS8qIExDRCBjb250cm9sbGVyICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFBGUl9TUDFUWAkweDAwMDAxMDAwCS8qIFNlci4gUG9ydCAxIFNETEMvVUFSVCBUcmFuc21pdCAgKi8KKyNkZWZpbmUgUFBGUl9TUDFSWAkweDAwMDAyMDAwCS8qIFNlci4gUG9ydCAxIFNETEMvVUFSVCBSZWNlaXZlICAgKi8KKyNkZWZpbmUgUFBGUl9TUDJUWAkweDAwMDA0MDAwCS8qIFNlci4gUG9ydCAyIElDUCBUcmFuc21pdCAgICAgICAgKi8KKyNkZWZpbmUgUFBGUl9TUDJSWAkweDAwMDA4MDAwCS8qIFNlci4gUG9ydCAyIElDUCBSZWNlaXZlICAgICAgICAgKi8KKyNkZWZpbmUgUFBGUl9TUDNUWAkweDAwMDEwMDAwCS8qIFNlci4gUG9ydCAzIFVBUlQgVHJhbnNtaXQgICAgICAgKi8KKyNkZWZpbmUgUFBGUl9TUDNSWAkweDAwMDIwMDAwCS8qIFNlci4gUG9ydCAzIFVBUlQgUmVjZWl2ZSAgICAgICAgKi8KKyNkZWZpbmUgUFBGUl9TUDQJMHgwMDA0MDAwMAkvKiBTZXIuIFBvcnQgNCBNQ1AvU1NQICAgICAgICAgICAgICovCisjZGVmaW5lIFBQRlJfUGVyRW4JMCAgICAgICAJLyogUGVyaXBoZXJhbCBFbmFibGVkICAgICAgICAgICAgICAqLworI2RlZmluZSBQUEZSX1BQQ0VuCTEgICAgICAgCS8qIFBQQyBFbmFibGVkICAgICAgICAgICAgICAgICAgICAgKi8KKworCisvKgorICogRHluYW1pYyBSYW5kb20tQWNjZXNzIE1lbW9yeSAoRFJBTSkgY29udHJvbCByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIE1EQ05GRyAgICAJTWVtb3J5IHN5c3RlbTogRHluYW1pYyBSYW5kb20tQWNjZXNzIE1lbW9yeSAoRFJBTSkKKyAqICAgICAgICAgICAgICAJQ29ORmlHdXJhdGlvbiByZWdpc3RlciAocmVhZC93cml0ZSkuCisgKiAgICBNRENBUzAgICAgCU1lbW9yeSBzeXN0ZW06IER5bmFtaWMgUmFuZG9tLUFjY2VzcyBNZW1vcnkgKERSQU0pCisgKiAgICAgICAgICAgICAgCUNvbHVtbiBBZGRyZXNzIFN0cm9iZSAoQ0FTKSBzaGlmdCByZWdpc3RlciAwCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIE1EQ0FTMSAgICAJTWVtb3J5IHN5c3RlbTogRHluYW1pYyBSYW5kb20tQWNjZXNzIE1lbW9yeSAoRFJBTSkKKyAqICAgICAgICAgICAgICAJQ29sdW1uIEFkZHJlc3MgU3Ryb2JlIChDQVMpIHNoaWZ0IHJlZ2lzdGVyIDEKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgTURDQVMyICAgIAlNZW1vcnkgc3lzdGVtOiBEeW5hbWljIFJhbmRvbS1BY2Nlc3MgTWVtb3J5IChEUkFNKQorICogICAgICAgICAgICAgIAlDb2x1bW4gQWRkcmVzcyBTdHJvYmUgKENBUykgc2hpZnQgcmVnaXN0ZXIgMgorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKgorICogQ2xvY2tzCisgKiAgICBmY3B1LCBUY3B1CUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBDUFUgY29yZSBjbG9jayAoQ0NMSykuCisgKiAgICBmbWVtLCBUbWVtCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBtZW1vcnkgY2xvY2sgKGZtZW0gPSBmY3B1LzIpLgorICogICAgZmNhcywgVGNhcwlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgRFJBTSBDQVMgc2hpZnQgcmVnaXN0ZXJzLgorICovCisKKyNkZWZpbmUgTURDTkZHCQlfX1JFRygweEEwMDAwMDAwKSAgLyogIERSQU0gQ29ORmlHdXJhdGlvbiByZWcuICovCisjZGVmaW5lIE1EQ0FTMAkJX19SRUcoMHhBMDAwMDAwNCkgIC8qIERSQU0gQ0FTIHNoaWZ0IHJlZy4gMCAqLworI2RlZmluZSBNRENBUzEJCV9fUkVHKDB4QTAwMDAwMDgpICAvKiBEUkFNIENBUyBzaGlmdCByZWcuIDEgKi8KKyNkZWZpbmUgTURDQVMyCQlfX1JFRygweEEwMDAwMDBjKSAgLyogRFJBTSBDQVMgc2hpZnQgcmVnLiAyICovCisKKy8qIFNBMTEwMCBNRENORkcgdmFsdWVzICovCisjZGVmaW5lIE1EQ05GR19ERShOYikJICAgICAgICAJLyogRFJBTSBFbmFibGUgYmFuayBbMC4uM10gICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDAwMDAwMDAxIDw8IChOYikpCisjZGVmaW5lIE1EQ05GR19ERTAJTURDTkZHX0RFICgwKQkvKiBEUkFNIEVuYWJsZSBiYW5rIDAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19ERTEJTURDTkZHX0RFICgxKQkvKiBEUkFNIEVuYWJsZSBiYW5rIDEgICAgICAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19ERTIJTURDTkZHX0RFICgyKQkvKiBEUkFNIEVuYWJsZSBiYW5rIDIgICAgICAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19ERTMJTURDTkZHX0RFICgzKQkvKiBEUkFNIEVuYWJsZSBiYW5rIDMgICAgICAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19EUkFDCUZsZCAoMiwgNCkJLyogRFJBTSBSb3cgQWRkcmVzcyBDb3VudCAtIDkgICAgICAqLworI2RlZmluZSBNRENORkdfUm93QWRkKEFkZCkgICAgICAJLyogIFJvdyBBZGRyZXNzIGNvdW50IFs5Li4xMl0gICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKEFkZCkgLSA5KSA8PCBGU2hmdCAoTURDTkZHX0RSQUMpKQorI2RlZmluZSBNRENORkdfQ0RCMgkweDAwMDAwMDQwCS8qIHNoaWZ0IHJlZy4gQ2xvY2sgRGl2aWRlIEJ5IDIgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKGZjYXMgPSBmY3B1LzIpICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNRENORkdfVFJQCUZsZCAoNCwgNykJLyogVGltZSBSQVMgUHJlLWNoYXJnZSAtIDEgW1RtZW1dICAqLworI2RlZmluZSBNRENORkdfUHJDaHJnKFRjcHUpICAgICAJLyogIFByZS1DaGFyZ2UgdGltZSBbMi4uMzIgVGNwdV0gICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKFRjcHUpIC0gMikvMiA8PCBGU2hmdCAoTURDTkZHX1RSUCkpCisjZGVmaW5lIE1EQ05GR19DZWlsUHJDaHJnKFRjcHUpIAkvKiAgQ2VpbC4gb2YgUHJDaHJnIFsyLi4zMiBUY3B1XSAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoVGNwdSkgLSAxKS8yIDw8IEZTaGZ0IChNRENORkdfVFJQKSkKKyNkZWZpbmUgTURDTkZHX1RSQVNSCUZsZCAoNCwgMTEpCS8qIFRpbWUgUkFTIFJlZnJlc2ggLSAxIFtUbWVtXSAgICAgKi8KKyNkZWZpbmUgTURDTkZHX1JlZihUY3B1KSAgICAgICAgCS8qICBSZWZyZXNoIHRpbWUgWzIuLjMyIFRjcHVdICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChUY3B1KSAtIDIpLzIgPDwgRlNoZnQgKE1EQ05GR19UUkFTUikpCisjZGVmaW5lIE1EQ05GR19DZWlsUmVmKFRjcHUpICAgIAkvKiAgQ2VpbC4gb2YgUmVmIFsyLi4zMiBUY3B1XSAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoVGNwdSkgLSAxKS8yIDw8IEZTaGZ0IChNRENORkdfVFJBU1IpKQorI2RlZmluZSBNRENORkdfVERMCUZsZCAoMiwgMTUpCS8qIFRpbWUgRGF0YSBMYXRjaCBbVGNwdV0gICAgICAgICAgKi8KKyNkZWZpbmUgTURDTkZHX0RhdGFMdGNoKFRjcHUpICAgCS8qICBEYXRhIExhdGNoIGRlbGF5IFswLi4zIFRjcHVdICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKFRjcHUpIDw8IEZTaGZ0IChNRENORkdfVERMKSkKKyNkZWZpbmUgTURDTkZHX0RSSQlGbGQgKDE1LCAxNykJLyogbWluLiBEUkFNIFJlZnJlc2ggSW50ZXJ2YWwvNCAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBbVG1lbV0gICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19SZWZJbnQoVGNwdSkgICAgIAkvKiAgbWluLiBSZWZyZXNoIEludGVydmFsICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFswLi4yNjIxMzYgVGNwdV0gICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoVGNwdSkvOCA8PCBGU2hmdCAoTURDTkZHX0RSSSkpCisKKy8qIFNBMTExMCBNRENORkcgdmFsdWVzICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfREUwCTB4MDAwMDAwMDEJLyogRFJBTSBFbmFibGUgYmFuayAwICAgICAgICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0RFMQkweDAwMDAwMDAyIAkvKiBEUkFNIEVuYWJsZSBiYW5rIDEgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfRFRJTTAJMHgwMDAwMDAwNAkvKiBEUkFNIHRpbWluZyB0eXBlIDAvMSAgICAgICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfRFdJRDAJMHgwMDAwMDAwOAkvKiBEUkFNIGJ1cyB3aWR0aCAwLzEgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfRFJBQzAJRmxkKDMsIDQpCS8qIERSQU0gcm93IGFkZHIgYml0IGNvdW50ICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJCS8qIGJhbmsgMC8xICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTURDTkZHX1NBMTExMF9DREIyMAkweDAwMDAwMDgwCS8qIE1lbSBDbG9jayBkaXZpZGUgYnkgMiAwLzEgKi8KKyNkZWZpbmUgTURDTkZHX1NBMTExMF9UUlAwCUZsZCgzLCA4KQkvKiBSQVMgcHJlY2hhcmdlIDAvMSAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfVERMMAlGbGQoMiwgMTIpCS8qIERhdGEgaW5wdXQgbGF0Y2ggYWZ0ZXIgQ0FTKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJCS8qIGRlYXNzZXJ0aW9uIDAvMSAgICAgICAgICAgKi8KKyNkZWZpbmUgTURDTkZHX1NBMTExMF9UV1IwCUZsZCgyLCAxNCkJLyogU0RSQU0gd3JpdGUgcmVjb3ZlcnkgMC8xICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0RFMgkweDAwMDEwMDAwCS8qIERSQU0gRW5hYmxlIGJhbmsgMCAgICAgICAgKi8KKyNkZWZpbmUgTURDTkZHX1NBMTExMF9ERTMJMHgwMDAyMDAwMCAJLyogRFJBTSBFbmFibGUgYmFuayAxICAgICAgICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0RUSU0yCTB4MDAwNDAwMDAJLyogRFJBTSB0aW1pbmcgdHlwZSAwLzEgICAgICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0RXSUQyCTB4MDAwODAwMDAJLyogRFJBTSBidXMgd2lkdGggMC8xICAgICAgICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0RSQUMyCUZsZCgzLCAyMCkJLyogRFJBTSByb3cgYWRkciBiaXQgY291bnQgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkJLyogYmFuayAwLzEgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX0NEQjIyCTB4MDA4MDAwMDAJLyogTWVtIENsb2NrIGRpdmlkZSBieSAyIDAvMSAqLworI2RlZmluZSBNRENORkdfU0ExMTEwX1RSUDIJRmxkKDMsIDI0KQkvKiBSQVMgcHJlY2hhcmdlIDAvMSAgICAgICAgICovCisjZGVmaW5lIE1EQ05GR19TQTExMTBfVERMMglGbGQoMiwgMjgpCS8qIERhdGEgaW5wdXQgbGF0Y2ggYWZ0ZXIgQ0FTKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJCS8qIGRlYXNzZXJ0aW9uIDAvMSAgICAgICAgICAgKi8KKyNkZWZpbmUgTURDTkZHX1NBMTExMF9UV1IyCUZsZCgyLCAzMCkJLyogU0RSQU0gd3JpdGUgcmVjb3ZlcnkgMC8xICAqLworCisKKy8qCisgKiBTdGF0aWMgbWVtb3J5IGNvbnRyb2wgcmVnaXN0ZXJzCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBNU0MwICAgICAgCU1lbW9yeSBzeXN0ZW06IFN0YXRpYyBtZW1vcnkgQ29udHJvbCByZWdpc3RlciAwCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgIE1TQzEgICAgICAJTWVtb3J5IHN5c3RlbTogU3RhdGljIG1lbW9yeSBDb250cm9sIHJlZ2lzdGVyIDEKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICoKKyAqIENsb2NrcworICogICAgZmNwdSwgVGNwdQlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgQ1BVIGNvcmUgY2xvY2sgKENDTEspLgorICogICAgZm1lbSwgVG1lbQlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgbWVtb3J5IGNsb2NrIChmbWVtID0gZmNwdS8yKS4KKyAqLworCisjZGVmaW5lIE1TQzAJCV9fUkVHKDB4YTAwMDAwMTApICAvKiBTdGF0aWMgbWVtb3J5IENvbnRyb2wgcmVnLiAwICovCisjZGVmaW5lIE1TQzEJCV9fUkVHKDB4YTAwMDAwMTQpICAvKiBTdGF0aWMgbWVtb3J5IENvbnRyb2wgcmVnLiAxICovCisjZGVmaW5lIE1TQzIJCV9fUkVHKDB4YTAwMDAwMmMpICAvKiBTdGF0aWMgbWVtb3J5IENvbnRyb2wgcmVnLiAyLCBub3QgY29udGlndW91cyAgICovCisKKyNkZWZpbmUgTVNDX0JuayhOYikJICAgICAgICAJLyogc3RhdGljIG1lbW9yeSBCYW5rIFswLi4zXSAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCUZsZCAoMTYsICgoTmIpIE1vZHVsbyAyKSoxNikKKyNkZWZpbmUgTVNDMF9CbmswCU1TQ19CbmsgKDApCS8qIHN0YXRpYyBtZW1vcnkgQmFuayAwICAgICAgICAgICAgKi8KKyNkZWZpbmUgTVNDMF9CbmsxCU1TQ19CbmsgKDEpCS8qIHN0YXRpYyBtZW1vcnkgQmFuayAxICAgICAgICAgICAgKi8KKyNkZWZpbmUgTVNDMV9CbmsyCU1TQ19CbmsgKDIpCS8qIHN0YXRpYyBtZW1vcnkgQmFuayAyICAgICAgICAgICAgKi8KKyNkZWZpbmUgTVNDMV9CbmszCU1TQ19CbmsgKDMpCS8qIHN0YXRpYyBtZW1vcnkgQmFuayAzICAgICAgICAgICAgKi8KKworI2RlZmluZSBNU0NfUlQgIAlGbGQgKDIsIDApCS8qIFJPTS9zdGF0aWMgbWVtb3J5IFR5cGUgICAgICAgICAgKi8KKyNkZWZpbmUgTVNDX05vbkJyc3QJICAgICAgICAJLyogIE5vbi1CdXJzdCBzdGF0aWMgbWVtb3J5ICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgwIDw8IEZTaGZ0IChNU0NfUlQpKQorI2RlZmluZSBNU0NfU1JBTQkgICAgICAgIAkvKiAgMzItYml0IGJ5dGUtd3JpdGFibGUgU1JBTSAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDEgPDwgRlNoZnQgKE1TQ19SVCkpCisjZGVmaW5lIE1TQ19CcnN0NAkgICAgICAgIAkvKiAgQnVyc3Qtb2YtNCBzdGF0aWMgbWVtb3J5ICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDIgPDwgRlNoZnQgKE1TQ19SVCkpCisjZGVmaW5lIE1TQ19CcnN0OAkgICAgICAgIAkvKiAgQnVyc3Qtb2YtOCBzdGF0aWMgbWVtb3J5ICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDMgPDwgRlNoZnQgKE1TQ19SVCkpCisjZGVmaW5lIE1TQ19SQlcgCTB4MDAwNCAgCS8qIFJPTS9zdGF0aWMgbWVtb3J5IEJ1cyBXaWR0aCAgICAgKi8KKyNkZWZpbmUgTVNDXzMyQml0U3RNZW0JKE1TQ19SQlcqMCkJLyogIDMyLUJpdCBTdGF0aWMgTWVtb3J5ICAgICAgICAgICAqLworI2RlZmluZSBNU0NfMTZCaXRTdE1lbQkoTVNDX1JCVyoxKQkvKiAgMTYtQml0IFN0YXRpYyBNZW1vcnkgICAgICAgICAgICovCisjZGVmaW5lIE1TQ19SREYgCUZsZCAoNSwgMykJLyogUk9NL3N0YXRpYyBtZW1vcnkgcmVhZCBEZWxheSAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBGaXJzdCBhY2Nlc3MgLSAxKC41KSBbVG1lbV0gICAgICovCisjZGVmaW5lIE1TQ18xc3RSZEFjYyhUY3B1KSAgICAgIAkvKiAgMXN0IFJlYWQgQWNjZXNzIHRpbWUgKGJ1cnN0ICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHN0YXRpYyBtZW1vcnkpIFszLi42NSBUY3B1XSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDMpLzIpIDw8IEZTaGZ0IChNU0NfUkRGKSkKKyNkZWZpbmUgTVNDX0NlaWwxc3RSZEFjYyhUY3B1KSAgCS8qICBDZWlsLiBvZiAxc3RSZEFjYyBbMy4uNjUgVGNwdV0gKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAyKS8yKSA8PCBGU2hmdCAoTVNDX1JERikpCisjZGVmaW5lIE1TQ19SZEFjYyhUY3B1KQkgICAgICAgIAkvKiAgUmVhZCBBY2Nlc3MgdGltZSAobm9uLWJ1cnN0ICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHN0YXRpYyBtZW1vcnkpIFsyLi42NCBUY3B1XSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDIpLzIpIDw8IEZTaGZ0IChNU0NfUkRGKSkKKyNkZWZpbmUgTVNDX0NlaWxSZEFjYyhUY3B1KSAgICAgCS8qICBDZWlsLiBvZiBSZEFjYyBbMi4uNjQgVGNwdV0gICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAxKS8yKSA8PCBGU2hmdCAoTVNDX1JERikpCisjZGVmaW5lIE1TQ19SRE4gCUZsZCAoNSwgOCkJLyogUk9NL3N0YXRpYyBtZW1vcnkgcmVhZCBEZWxheSAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBOZXh0IGFjY2VzcyAtIDEgW1RtZW1dICAgICAgICAgICovCisjZGVmaW5lIE1TQ19OeHRSZEFjYyhUY3B1KSAgICAgIAkvKiAgTmV4dCBSZWFkIEFjY2VzcyB0aW1lIChidXJzdCAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHN0YXRpYyBtZW1vcnkpIFsyLi42NCBUY3B1XSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDIpLzIpIDw8IEZTaGZ0IChNU0NfUkROKSkKKyNkZWZpbmUgTVNDX0NlaWxOeHRSZEFjYyhUY3B1KSAgCS8qICBDZWlsLiBvZiBOeHRSZEFjYyBbMi4uNjQgVGNwdV0gKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAxKS8yKSA8PCBGU2hmdCAoTVNDX1JETikpCisjZGVmaW5lIE1TQ19XckFjYyhUY3B1KQkgICAgICAgIAkvKiAgV3JpdGUgQWNjZXNzIHRpbWUgKG5vbi1idXJzdCAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHN0YXRpYyBtZW1vcnkpIFsyLi42NCBUY3B1XSAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDIpLzIpIDw8IEZTaGZ0IChNU0NfUkROKSkKKyNkZWZpbmUgTVNDX0NlaWxXckFjYyhUY3B1KSAgICAgCS8qICBDZWlsLiBvZiBXckFjYyBbMi4uNjQgVGNwdV0gICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAxKS8yKSA8PCBGU2hmdCAoTVNDX1JETikpCisjZGVmaW5lIE1TQ19SUlIgCUZsZCAoMywgMTMpCS8qIFJPTS9zdGF0aWMgbWVtb3J5IFJlY292ZVJ5ICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogdGltZS8yIFtUbWVtXSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNU0NfUmVjKFRjcHUpCSAgICAgICAgCS8qICBSZWNvdmVyeSB0aW1lIFswLi4yOCBUY3B1XSAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChUY3B1KS80KSA8PCBGU2hmdCAoTVNDX1JSUikpCisjZGVmaW5lIE1TQ19DZWlsUmVjKFRjcHUpICAgICAgIAkvKiAgQ2VpbC4gb2YgUmVjIFswLi4yOCBUY3B1XSAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoKFRjcHUpICsgMykvNCkgPDwgRlNoZnQgKE1TQ19SUlIpKQorCisKKy8qCisgKiBQZXJzb25hbCBDb21wdXRlciBNZW1vcnkgQ2FyZCBJbnRlcm5hdGlvbmFsIEFzc29jaWF0aW9uIChQQ01DSUEpIGNvbnRyb2wKKyAqIHJlZ2lzdGVyCisgKgorICogUmVnaXN0ZXIKKyAqICAgIE1FQ1IgICAgICAJTWVtb3J5IHN5c3RlbTogRXhwYW5zaW9uIG1lbW9yeSBidXMgKFBDTUNJQSkKKyAqICAgICAgICAgICAgICAJQ29uZmlndXJhdGlvbiBSZWdpc3RlciAocmVhZC93cml0ZSkuCisgKgorICogQ2xvY2tzCisgKiAgICBmY3B1LCBUY3B1CUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBDUFUgY29yZSBjbG9jayAoQ0NMSykuCisgKiAgICBmbWVtLCBUbWVtCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBtZW1vcnkgY2xvY2sgKGZtZW0gPSBmY3B1LzIpLgorICogICAgZmJjbGssIFRiY2xrCUZyZXF1ZW5jeSwgcGVyaW9kIG9mIHRoZSBQQ01DSUEgY2xvY2sgKEJDTEspLgorICovCisKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogTWVtb3J5IHN5c3RlbTogICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNRUNSCQlfX1JFRygweEEwMDAwMDE4KSAgLyogIEV4cGFuc2lvbiBtZW1vcnkgYnVzIChQQ01DSUEpIENvbmZpZ3VyYXRpb24gUmVnLiAgICAgICAgICAgICAqLworCisjZGVmaW5lIE1FQ1JfUENNQ0lBKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgWzAuLjFdICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJRmxkICgxNSwgKE5iKSoxNikKKyNkZWZpbmUgTUVDUl9QQ01DSUEwCU1FQ1JfUENNQ0lBICgwKQkvKiBQQ01DSUEgMCAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE1FQ1JfUENNQ0lBMQlNRUNSX1BDTUNJQSAoMSkJLyogUENNQ0lBIDEgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIE1FQ1JfQlNJTwlGbGQgKDUsIDApCS8qIEJDTEsgU2VsZWN0IEkvTyAtIDEgW1RtZW1dICAgICAgKi8KKyNkZWZpbmUgTUVDUl9JT0NsayhUY3B1KSAgICAgICAgCS8qICBJL08gQ2xvY2sgWzIuLjY0IFRjcHVdICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAyKS8yKSA8PCBGU2hmdCAoTUVDUl9CU0lPKSkKKyNkZWZpbmUgTUVDUl9DZWlsSU9DbGsoVGNwdSkgICAgCS8qICBDZWlsLiBvZiBJT0NsayBbMi4uNjQgVGNwdV0gICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAxKS8yKSA8PCBGU2hmdCAoTUVDUl9CU0lPKSkKKyNkZWZpbmUgTUVDUl9CU0EJRmxkICg1LCA1KQkvKiBCQ0xLIFNlbGVjdCBBdHRyaWJ1dGUgLSAxICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFtUbWVtXSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTUVDUl9BdHRyQ2xrKFRjcHUpICAgICAgCS8qICBBdHRyaWJ1dGUgQ2xvY2sgWzIuLjY0IFRjcHVdICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAyKS8yKSA8PCBGU2hmdCAoTUVDUl9CU0EpKQorI2RlZmluZSBNRUNSX0NlaWxBdHRyQ2xrKFRjcHUpICAJLyogIENlaWwuIG9mIEF0dHJDbGsgWzIuLjY0IFRjcHVdICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDEpLzIpIDw8IEZTaGZ0IChNRUNSX0JTQSkpCisjZGVmaW5lIE1FQ1JfQlNNCUZsZCAoNSwgMTApCS8qIEJDTEsgU2VsZWN0IE1lbW9yeSAtIDEgW1RtZW1dICAgKi8KKyNkZWZpbmUgTUVDUl9NZW1DbGsoVGNwdSkgICAgICAgCS8qICBNZW1vcnkgQ2xvY2sgWzIuLjY0IFRjcHVdICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKCgoVGNwdSkgLSAyKS8yKSA8PCBGU2hmdCAoTUVDUl9CU00pKQorI2RlZmluZSBNRUNSX0NlaWxNZW1DbGsoVGNwdSkgICAJLyogIENlaWwuIG9mIE1lbUNsayBbMi4uNjQgVGNwdV0gICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKChUY3B1KSAtIDEpLzIpIDw8IEZTaGZ0IChNRUNSX0JTTSkpCisKKy8qCisgKiBPbiBTQTExMTAgb25seQorICovCisKKyNkZWZpbmUgTURSRUZSCQlfX1JFRygweEEwMDAwMDFDKQorCisjZGVmaW5lIE1EUkVGUl9UUkFTUgkJRmxkICg0LCAwKQorI2RlZmluZSBNRFJFRlJfRFJJCQlGbGQgKDEyLCA0KQorI2RlZmluZSBNRFJFRlJfRTBQSU4JCSgxIDw8IDE2KQorI2RlZmluZSBNRFJFRlJfSzBSVU4JCSgxIDw8IDE3KQorI2RlZmluZSBNRFJFRlJfSzBEQjIJCSgxIDw8IDE4KQorI2RlZmluZSBNRFJFRlJfRTFQSU4JCSgxIDw8IDIwKQorI2RlZmluZSBNRFJFRlJfSzFSVU4JCSgxIDw8IDIxKQorI2RlZmluZSBNRFJFRlJfSzFEQjIJCSgxIDw8IDIyKQorI2RlZmluZSBNRFJFRlJfSzJSVU4JCSgxIDw8IDI1KQorI2RlZmluZSBNRFJFRlJfSzJEQjIJCSgxIDw8IDI2KQorI2RlZmluZSBNRFJFRlJfRUFQRAkJKDEgPDwgMjgpCisjZGVmaW5lIE1EUkVGUl9LQVBECQkoMSA8PCAyOSkKKyNkZWZpbmUgTURSRUZSX1NMRlJTSAkJKDEgPDwgMzEpCisKKworLyoKKyAqIERpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIGNvbnRyb2wgcmVnaXN0ZXJzCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBEREFSMCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgMCAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSMCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDAgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTAgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMCAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBMCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMCAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCMCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAwIChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEIwICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAwIChyZWFkL3dyaXRlKS4KKyAqCisgKiAgICBEREFSMSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgMSAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSMSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDEgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTEgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMSAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBMSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMSAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCMSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAxIChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEIxICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAxIChyZWFkL3dyaXRlKS4KKyAqCisgKiAgICBEREFSMiAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgMiAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSMiAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDIgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTIgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMiAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBMiAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMiAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCMiAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAyIChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEIyICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAyIChyZWFkL3dyaXRlKS4KKyAqCisgKiAgICBEREFSMyAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgMyAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSMyAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDMgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTMgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMyAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBMyAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgMyAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCMyAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAzIChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEIzICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCAzIChyZWFkL3dyaXRlKS4KKyAqCisgKiAgICBEREFSNCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgNCAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSNCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDQgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTQgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgNCAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBNCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgNCAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCNCAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCA0IChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEI0ICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCA0IChyZWFkL3dyaXRlKS4KKyAqCisgKiAgICBEREFSNSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIERldmljZSBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICAgICAgICAgICAgCWNoYW5uZWwgNSAocmVhZC93cml0ZSkuCisgKiAgICBEQ1NSNSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIENvbnRyb2wgYW5kIFN0YXR1cworICogICAgICAgICAgICAgIAlSZWdpc3RlciBjaGFubmVsIDUgKHJlYWQvd3JpdGUpLgorICogICAgREJTQTUgICAgIAlEaXJlY3QgTWVtb3J5IEFjY2VzcyAoRE1BKSBCdWZmZXIgU3RhcnQgYWRkcmVzcworICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgNSAocmVhZC93cml0ZSkuCisgKiAgICBEQlRBNSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBUcmFuc2ZlciBjb3VudAorICogICAgICAgICAgICAgIAlyZWdpc3RlciBBIGNoYW5uZWwgNSAocmVhZC93cml0ZSkuCisgKiAgICBEQlNCNSAgICAgCURpcmVjdCBNZW1vcnkgQWNjZXNzIChETUEpIEJ1ZmZlciBTdGFydCBhZGRyZXNzCisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCA1IChyZWFkL3dyaXRlKS4KKyAqICAgIERCVEI1ICAgICAJRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQnVmZmVyIFRyYW5zZmVyIGNvdW50CisgKiAgICAgICAgICAgICAgCXJlZ2lzdGVyIEIgY2hhbm5lbCA1IChyZWFkL3dyaXRlKS4KKyAqLworCisjZGVmaW5lIERNQVNwICAgCTB4MDAwMDAwMjAJLyogRE1BIGNvbnRyb2wgcmVnLiBTcGFjZSBbYnl0ZV0gICAqLworCisjZGVmaW5lIEREQVIoTmIpCV9fUkVHKDB4QjAwMDAwMDAgKyAoTmIpKkRNQVNwKSAgLyogRE1BIERldmljZSBBZGRyZXNzIFJlZy4gY2hhbm5lbCBbMC4uNV0gKi8KKyNkZWZpbmUgU2V0RENTUihOYikJX19SRUcoMHhCMDAwMDAwNCArIChOYikqRE1BU3ApICAvKiBTZXQgRE1BIENvbnRyb2wgJiBTdGF0dXMgUmVnLiBjaGFubmVsIFswLi41XSAod3JpdGUpICovCisjZGVmaW5lIENsckRDU1IoTmIpCV9fUkVHKDB4QjAwMDAwMDggKyAoTmIpKkRNQVNwKSAgLyogQ2xlYXIgRE1BIENvbnRyb2wgJiBTdGF0dXMgUmVnLiBjaGFubmVsIFswLi41XSAod3JpdGUpICovCisjZGVmaW5lIFJkRENTUihOYikJX19SRUcoMHhCMDAwMDAwQyArIChOYikqRE1BU3ApICAvKiBSZWFkIERNQSBDb250cm9sICYgU3RhdHVzIFJlZy4gY2hhbm5lbCBbMC4uNV0gKHJlYWQpICovCisjZGVmaW5lIERCU0EoTmIpCV9fUkVHKDB4QjAwMDAwMTAgKyAoTmIpKkRNQVNwKSAgLyogRE1BIEJ1ZmZlciBTdGFydCBhZGRyZXNzIHJlZy4gQSBjaGFubmVsIFswLi41XSAqLworI2RlZmluZSBEQlRBKE5iKQlfX1JFRygweEIwMDAwMDE0ICsgKE5iKSpETUFTcCkgIC8qIERNQSBCdWZmZXIgVHJhbnNmZXIgY291bnQgcmVnLiBBIGNoYW5uZWwgWzAuLjVdICovCisjZGVmaW5lIERCU0IoTmIpCV9fUkVHKDB4QjAwMDAwMTggKyAoTmIpKkRNQVNwKSAgLyogRE1BIEJ1ZmZlciBTdGFydCBhZGRyZXNzIHJlZy4gQiBjaGFubmVsIFswLi41XSAqLworI2RlZmluZSBEQlRCKE5iKQlfX1JFRygweEIwMDAwMDFDICsgKE5iKSpETUFTcCkgIC8qIERNQSBCdWZmZXIgVHJhbnNmZXIgY291bnQgcmVnLiBCIGNoYW5uZWwgWzAuLjVdICovCisKKyNkZWZpbmUgRERBUl9SVyAJMHgwMDAwMDAwMQkvKiBkZXZpY2UgZGF0YSBSZWFkL1dyaXRlICAgICAgICAgICovCisjZGVmaW5lIEREQVJfRGV2V3IJKEREQVJfUlcqMCkJLyogIERldmljZSBkYXRhIFdyaXRlICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKG1lbW9yeSAtPiBkZXZpY2UpICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfRGV2UmQJKEREQVJfUlcqMSkJLyogIERldmljZSBkYXRhIFJlYWQgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKGRldmljZSAtPiBtZW1vcnkpICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfRSAgCTB4MDAwMDAwMDIJLyogYmlnL2xpdHRsZSBFbmRpYW4gZGV2aWNlICAgICAgICAqLworI2RlZmluZSBEREFSX0x0bEVuZAkoRERBUl9FKjApCS8qICBMaXR0bGUgRW5kaWFuIGRldmljZSAgICAgICAgICAgKi8KKyNkZWZpbmUgRERBUl9CaWdFbmQJKEREQVJfRSoxKQkvKiAgQmlnIEVuZGlhbiBkZXZpY2UgICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfQlMgCTB4MDAwMDAwMDQJLyogZGV2aWNlIEJ1cnN0IFNpemUgICAgICAgICAgICAgICAqLworI2RlZmluZSBEREFSX0Jyc3Q0CShEREFSX0JTKjApCS8qICBCdXJzdC1vZi00IGRldmljZSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRERBUl9CcnN0OAkoRERBUl9CUyoxKQkvKiAgQnVyc3Qtb2YtOCBkZXZpY2UgICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfRFcgCTB4MDAwMDAwMDgJLyogZGV2aWNlIERhdGEgV2lkdGggICAgICAgICAgICAgICAqLworI2RlZmluZSBEREFSXzhCaXREZXYJKEREQVJfRFcqMCkJLyogIDgtQml0IERldmljZSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBEREFSXzE2Qml0RGV2CShEREFSX0RXKjEpCS8qICAxNi1CaXQgRGV2aWNlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRERBUl9EUyAJRmxkICg0LCA0KQkvKiBEZXZpY2UgU2VsZWN0ICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfU2VyMFVEQ1RyCSAgICAgICAgCS8qICBTZXIuIHBvcnQgMCBVREMgVHJhbnNtaXQgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHgwIDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXIwVURDUmMJICAgICAgICAJLyogIFNlci4gcG9ydCAwIFVEQyBSZWNlaXZlICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDEgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjFTRExDVHIJICAgICAgICAJLyogIFNlci4gcG9ydCAxIFNETEMgVHJhbnNtaXQgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDIgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjFTRExDUmMJICAgICAgICAJLyogIFNlci4gcG9ydCAxIFNETEMgUmVjZWl2ZSAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDMgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjFVQVJUVHIJICAgICAgICAJLyogIFNlci4gcG9ydCAxIFVBUlQgVHJhbnNtaXQgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDQgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjFVQVJUUmMJICAgICAgICAJLyogIFNlci4gcG9ydCAxIFVBUlQgUmVjZWl2ZSAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweDUgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjJJQ1BUcgkgICAgICAgIAkvKiAgU2VyLiBwb3J0IDIgSUNQIFRyYW5zbWl0ICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4NiA8PCBGU2hmdCAoRERBUl9EUykpCisjZGVmaW5lIEREQVJfU2VyMklDUFJjCSAgICAgICAgCS8qICBTZXIuIHBvcnQgMiBJQ1AgUmVjZWl2ZSAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHg3IDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXIzVUFSVFRyCSAgICAgICAgCS8qICBTZXIuIHBvcnQgMyBVQVJUIFRyYW5zbWl0ICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHg4IDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXIzVUFSVFJjCSAgICAgICAgCS8qICBTZXIuIHBvcnQgMyBVQVJUIFJlY2VpdmUgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHg5IDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXI0TUNQMFRyCSAgICAgICAgCS8qICBTZXIuIHBvcnQgNCBNQ1AgMCBUcmFuc21pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKGF1ZGlvKSAgICAgICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4QSA8PCBGU2hmdCAoRERBUl9EUykpCisjZGVmaW5lIEREQVJfU2VyNE1DUDBSYwkgICAgICAgIAkvKiAgU2VyLiBwb3J0IDQgTUNQIDAgUmVjZWl2ZSAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIChhdWRpbykgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweEIgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX1NlcjRNQ1AxVHIJICAgICAgICAJLyogIFNlci4gcG9ydCA0IE1DUCAxIFRyYW5zbWl0ICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICAodGVsZWNvbSkgICAgICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHhDIDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXI0TUNQMVJjCSAgICAgICAgCS8qICBTZXIuIHBvcnQgNCBNQ1AgMSBSZWNlaXZlICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgKHRlbGVjb20pICAgICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDB4RCA8PCBGU2hmdCAoRERBUl9EUykpCisjZGVmaW5lIEREQVJfU2VyNFNTUFRyCSAgICAgICAgCS8qICBTZXIuIHBvcnQgNCBTU1AgVHJhbnNtaXQgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMHhFIDw8IEZTaGZ0IChEREFSX0RTKSkKKyNkZWZpbmUgRERBUl9TZXI0U1NQUmMJICAgICAgICAJLyogIFNlci4gcG9ydCA0IFNTUCBSZWNlaXZlICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgweEYgPDwgRlNoZnQgKEREQVJfRFMpKQorI2RlZmluZSBEREFSX0RBIAlGbGQgKDI0LCA4KQkvKiBEZXZpY2UgQWRkcmVzcyAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEREQVJfRGV2QWRkKEFkZCkgICAgICAgIAkvKiAgRGV2aWNlIEFkZHJlc3MgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoQWRkKSAmIDB4RjAwMDAwMDApIHwgXAorICAgICAgICAgICAgICAgIAkgKCgoQWRkKSAmIDBYMDAzRkZGRkMpIDw8IChGU2hmdCAoRERBUl9EQSkgLSAyKSkpCisjZGVmaW5lIEREQVJfU2VyMFVEQ1dyCSAgICAgICAgCS8qIFNlci4gcG9ydCAwIFVEQyBXcml0ZSAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoRERBUl9EZXZXciArIEREQVJfQnJzdDggKyBEREFSXzhCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjBVRENUciArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyMFVEQ0RSKSkpCisjZGVmaW5lIEREQVJfU2VyMFVEQ1JkCSAgICAgICAgCS8qIFNlci4gcG9ydCAwIFVEQyBSZWFkICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoRERBUl9EZXZSZCArIEREQVJfQnJzdDggKyBEREFSXzhCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjBVRENSYyArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyMFVEQ0RSKSkpCisjZGVmaW5lIEREQVJfU2VyMVVBUlRXcgkgICAgICAgIAkvKiBTZXIuIHBvcnQgMSBVQVJUIFdyaXRlICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKEREQVJfRGV2V3IgKyBEREFSX0Jyc3Q0ICsgRERBUl84Qml0RGV2ICsgXAorICAgICAgICAgICAgICAgIAkgRERBUl9TZXIxVUFSVFRyICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIxVVREUikpKQorI2RlZmluZSBEREFSX1NlcjFVQVJUUmQJICAgICAgICAJLyogU2VyLiBwb3J0IDEgVUFSVCBSZWFkICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldlJkICsgRERBUl9CcnN0NCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyMVVBUlRSYyArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyMVVURFIpKSkKKyNkZWZpbmUgRERBUl9TZXIxU0RMQ1dyCSAgICAgICAgCS8qIFNlci4gcG9ydCAxIFNETEMgV3JpdGUgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoRERBUl9EZXZXciArIEREQVJfQnJzdDQgKyBEREFSXzhCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjFTRExDVHIgKyBEREFSX0RldkFkZCAoX19QUkVHKFNlcjFTRERSKSkpCisjZGVmaW5lIEREQVJfU2VyMVNETENSZAkgICAgICAgIAkvKiBTZXIuIHBvcnQgMSBTRExDIFJlYWQgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKEREQVJfRGV2UmQgKyBEREFSX0Jyc3Q0ICsgRERBUl84Qml0RGV2ICsgXAorICAgICAgICAgICAgICAgIAkgRERBUl9TZXIxU0RMQ1JjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIxU0REUikpKQorI2RlZmluZSBEREFSX1NlcjJVQVJUV3IJICAgICAgICAJLyogU2VyLiBwb3J0IDIgVUFSVCBXcml0ZSAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldldyICsgRERBUl9CcnN0NCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyMklDUFRyICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIyVVREUikpKQorI2RlZmluZSBEREFSX1NlcjJVQVJUUmQJICAgICAgICAJLyogU2VyLiBwb3J0IDIgVUFSVCBSZWFkICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldlJkICsgRERBUl9CcnN0NCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyMklDUFJjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIyVVREUikpKQorI2RlZmluZSBEREFSX1NlcjJIU1NQV3IJICAgICAgICAJLyogU2VyLiBwb3J0IDIgSFNTUCBXcml0ZSAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldldyICsgRERBUl9CcnN0OCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyMklDUFRyICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIySFNEUikpKQorI2RlZmluZSBEREFSX1NlcjJIU1NQUmQJICAgICAgICAJLyogU2VyLiBwb3J0IDIgSFNTUCBSZWFkICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldlJkICsgRERBUl9CcnN0OCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyMklDUFJjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXIySFNEUikpKQorI2RlZmluZSBEREFSX1NlcjNVQVJUV3IJICAgICAgICAJLyogU2VyLiBwb3J0IDMgVUFSVCBXcml0ZSAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldldyICsgRERBUl9CcnN0NCArIEREQVJfOEJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyM1VBUlRUciArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyM1VURFIpKSkKKyNkZWZpbmUgRERBUl9TZXIzVUFSVFJkCSAgICAgICAgCS8qIFNlci4gcG9ydCAzIFVBUlQgUmVhZCAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoRERBUl9EZXZSZCArIEREQVJfQnJzdDQgKyBEREFSXzhCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjNVQVJUUmMgKyBEREFSX0RldkFkZCAoX19QUkVHKFNlcjNVVERSKSkpCisjZGVmaW5lIEREQVJfU2VyNE1DUDBXcgkgICAgICAgIAkvKiBTZXIuIHBvcnQgNCBNQ1AgMCBXcml0ZSAoYXVkaW8pICovIFwKKyAgICAgICAgICAgICAgICAJKEREQVJfRGV2V3IgKyBEREFSX0Jyc3Q0ICsgRERBUl8xNkJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyNE1DUDBUciArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyNE1DRFIwKSkpCisjZGVmaW5lIEREQVJfU2VyNE1DUDBSZAkgICAgICAgIAkvKiBTZXIuIHBvcnQgNCBNQ1AgMCBSZWFkIChhdWRpbykgICovIFwKKyAgICAgICAgICAgICAgICAJKEREQVJfRGV2UmQgKyBEREFSX0Jyc3Q0ICsgRERBUl8xNkJpdERldiArIFwKKyAgICAgICAgICAgICAgICAJIEREQVJfU2VyNE1DUDBSYyArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyNE1DRFIwKSkpCisjZGVmaW5lIEREQVJfU2VyNE1DUDFXcgkgICAgICAgIAkvKiBTZXIuIHBvcnQgNCBNQ1AgMSBXcml0ZSAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogKHRlbGVjb20pICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldldyICsgRERBUl9CcnN0NCArIEREQVJfMTZCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjRNQ1AxVHIgKyBEREFSX0RldkFkZCAoX19QUkVHKFNlcjRNQ0RSMSkpKQorI2RlZmluZSBEREFSX1NlcjRNQ1AxUmQJICAgICAgICAJLyogU2VyLiBwb3J0IDQgTUNQIDEgUmVhZCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICh0ZWxlY29tKSAgICAgICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoRERBUl9EZXZSZCArIEREQVJfQnJzdDQgKyBEREFSXzE2Qml0RGV2ICsgXAorICAgICAgICAgICAgICAgIAkgRERBUl9TZXI0TUNQMVJjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXI0TUNEUjEpKSkKKyNkZWZpbmUgRERBUl9TZXI0U1NQV3IJICAgICAgICAJLyogU2VyLiBwb3J0IDQgU1NQIFdyaXRlICgxNiBiaXRzKSAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldldyICsgRERBUl9CcnN0NCArIEREQVJfMTZCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjRTU1BUciArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyNFNTRFIpKSkKKyNkZWZpbmUgRERBUl9TZXI0U1NQUmQJICAgICAgICAJLyogU2VyLiBwb3J0IDQgU1NQIFJlYWQgKDE2IGJpdHMpICAqLyBcCisgICAgICAgICAgICAgICAgCShEREFSX0RldlJkICsgRERBUl9CcnN0NCArIEREQVJfMTZCaXREZXYgKyBcCisgICAgICAgICAgICAgICAgCSBEREFSX1NlcjRTU1BSYyArIEREQVJfRGV2QWRkIChfX1BSRUcoU2VyNFNTRFIpKSkKKworI2RlZmluZSBEQ1NSX1JVTgkweDAwMDAwMDAxCS8qIERNQSBSVU5pbmcgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRENTUl9JRSAJMHgwMDAwMDAwMgkvKiBETUEgSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICovCisjZGVmaW5lIERDU1JfRVJST1IJMHgwMDAwMDAwNAkvKiBETUEgRVJST1IgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIERDU1JfRE9ORUEJMHgwMDAwMDAwOAkvKiBET05FIERNQSB0cmFuc2ZlciBidWZmZXIgQSAgICAgICovCisjZGVmaW5lIERDU1JfU1RSVEEJMHgwMDAwMDAxMAkvKiBTVGFSVGVkIERNQSB0cmFuc2ZlciBidWZmZXIgQSAgICovCisjZGVmaW5lIERDU1JfRE9ORUIJMHgwMDAwMDAyMAkvKiBET05FIERNQSB0cmFuc2ZlciBidWZmZXIgQiAgICAgICovCisjZGVmaW5lIERDU1JfU1RSVEIJMHgwMDAwMDA0MAkvKiBTVGFSVGVkIERNQSB0cmFuc2ZlciBidWZmZXIgQiAgICovCisjZGVmaW5lIERDU1JfQklVCTB4MDAwMDAwODAJLyogRE1BIEJ1ZmZlciBJbiBVc2UgICAgICAgICAgICAgICAqLworI2RlZmluZSBEQ1NSX0J1ZkEJKERDU1JfQklVKjApCS8qICBETUEgQnVmZmVyIEEgaW4gdXNlICAgICAgICAgICAgKi8KKyNkZWZpbmUgRENTUl9CdWZCCShEQ1NSX0JJVSoxKQkvKiAgRE1BIEJ1ZmZlciBCIGluIHVzZSAgICAgICAgICAgICovCisKKyNkZWZpbmUgREJUX1RDICAJRmxkICgxMywgMCkJLyogVHJhbnNmZXIgQ291bnQgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBEQlRBX1RDQQlEQlRfVEMgIAkvKiBUcmFuc2ZlciBDb3VudCBidWZmZXIgQSAgICAgICAgICovCisjZGVmaW5lIERCVEJfVENCCURCVF9UQyAgCS8qIFRyYW5zZmVyIENvdW50IGJ1ZmZlciBCICAgICAgICAgKi8KKworCisvKgorICogTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBjb250cm9sIHJlZ2lzdGVycworICoKKyAqIFJlZ2lzdGVycworICogICAgTENDUjAgICAgIAlMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5IChMQ0QpIENvbnRyb2wgUmVnaXN0ZXIgMAorICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICAgICAgICAgICAgCVtCaXRzIExETSwgQkFNLCBhbmQgRVJNIGFyZSBvbmx5IGltcGxlbWVudGVkIGluCisgKiAgICAgICAgICAgICAgCXZlcnNpb25zIDIuMCAocmV2LiA9IDgpIGFuZCBoaWdoZXIgb2YgdGhlIFN0cm9uZ0FSTQorICogICAgICAgICAgICAgIAlTQS0xMTAwLl0KKyAqICAgIExDU1IgICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBTdGF0dXMgUmVnaXN0ZXIKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbQml0IExERCBjYW4gYmUgb25seSByZWFkIGluIHZlcnNpb25zIDEuMCAocmV2LiA9IDEpCisgKiAgICAgICAgICAgICAgCWFuZCAxLjEgKHJldi4gPSAyKSBvZiB0aGUgU3Ryb25nQVJNIFNBLTExMDAsIGl0IGNhbiBiZQorICogICAgICAgICAgICAgIAlyZWFkIGFuZCB3cml0dGVuIChjbGVhcmVkKSBpbiB2ZXJzaW9ucyAyLjAgKHJldi4gPSA4KQorICogICAgICAgICAgICAgIAlhbmQgaGlnaGVyLl0KKyAqICAgIERCQVIxICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBEaXJlY3QgTWVtb3J5IEFjY2VzcworICogICAgICAgICAgICAgIAkoRE1BKSBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgY2hhbm5lbCAxIChyZWFkL3dyaXRlKS4KKyAqICAgIERDQVIxICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBEaXJlY3QgTWVtb3J5IEFjY2VzcworICogICAgICAgICAgICAgIAkoRE1BKSBDdXJyZW50IEFkZHJlc3MgUmVnaXN0ZXIgY2hhbm5lbCAxIChyZWFkKS4KKyAqICAgIERCQVIyICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBEaXJlY3QgTWVtb3J5IEFjY2VzcworICogICAgICAgICAgICAgIAkoRE1BKSBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgY2hhbm5lbCAyIChyZWFkL3dyaXRlKS4KKyAqICAgIERDQVIyICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBEaXJlY3QgTWVtb3J5IEFjY2VzcworICogICAgICAgICAgICAgIAkoRE1BKSBDdXJyZW50IEFkZHJlc3MgUmVnaXN0ZXIgY2hhbm5lbCAyIChyZWFkKS4KKyAqICAgIExDQ1IxICAgICAJTGlxdWlkIENyeXN0YWwgRGlzcGxheSAoTENEKSBDb250cm9sIFJlZ2lzdGVyIDEKKyAqICAgICAgICAgICAgICAJKHJlYWQvd3JpdGUpLgorICogICAgICAgICAgICAgIAlbVGhlIExDQ1IxIHJlZ2lzdGVyIGNhbiBiZSBvbmx5IHdyaXR0ZW4gaW4KKyAqICAgICAgICAgICAgICAJdmVyc2lvbnMgMS4wIChyZXYuID0gMSkgYW5kIDEuMSAocmV2LiA9IDIpIG9mIHRoZQorICogICAgICAgICAgICAgIAlTdHJvbmdBUk0gU0EtMTEwMCwgaXQgY2FuIGJlIHdyaXR0ZW4gYW5kIHJlYWQgaW4KKyAqICAgICAgICAgICAgICAJdmVyc2lvbnMgMi4wIChyZXYuID0gOCkgYW5kIGhpZ2hlci5dCisgKiAgICBMQ0NSMiAgICAgCUxpcXVpZCBDcnlzdGFsIERpc3BsYXkgKExDRCkgQ29udHJvbCBSZWdpc3RlciAyCisgKiAgICAgICAgICAgICAgCShyZWFkL3dyaXRlKS4KKyAqICAgICAgICAgICAgICAJW1RoZSBMQ0NSMSByZWdpc3RlciBjYW4gYmUgb25seSB3cml0dGVuIGluCisgKiAgICAgICAgICAgICAgCXZlcnNpb25zIDEuMCAocmV2LiA9IDEpIGFuZCAxLjEgKHJldi4gPSAyKSBvZiB0aGUKKyAqICAgICAgICAgICAgICAJU3Ryb25nQVJNIFNBLTExMDAsIGl0IGNhbiBiZSB3cml0dGVuIGFuZCByZWFkIGluCisgKiAgICAgICAgICAgICAgCXZlcnNpb25zIDIuMCAocmV2LiA9IDgpIGFuZCBoaWdoZXIuXQorICogICAgTENDUjMgICAgIAlMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5IChMQ0QpIENvbnRyb2wgUmVnaXN0ZXIgMworICogICAgICAgICAgICAgIAkocmVhZC93cml0ZSkuCisgKiAgICAgICAgICAgICAgCVtUaGUgTENDUjEgcmVnaXN0ZXIgY2FuIGJlIG9ubHkgd3JpdHRlbiBpbgorICogICAgICAgICAgICAgIAl2ZXJzaW9ucyAxLjAgKHJldi4gPSAxKSBhbmQgMS4xIChyZXYuID0gMikgb2YgdGhlCisgKiAgICAgICAgICAgICAgCVN0cm9uZ0FSTSBTQS0xMTAwLCBpdCBjYW4gYmUgd3JpdHRlbiBhbmQgcmVhZCBpbgorICogICAgICAgICAgICAgIAl2ZXJzaW9ucyAyLjAgKHJldi4gPSA4KSBhbmQgaGlnaGVyLiBCaXQgUENQIGlzIG9ubHkKKyAqICAgICAgICAgICAgICAJaW1wbGVtZW50ZWQgaW4gdmVyc2lvbnMgMi4wIChyZXYuID0gOCkgYW5kIGhpZ2hlciBvZgorICogICAgICAgICAgICAgIAl0aGUgU3Ryb25nQVJNIFNBLTExMDAuXQorICoKKyAqIENsb2NrcworICogICAgZmNwdSwgVGNwdQlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgQ1BVIGNvcmUgY2xvY2sgKENDTEspLgorICogICAgZm1lbSwgVG1lbQlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgbWVtb3J5IGNsb2NrIChmbWVtID0gZmNwdS8yKS4KKyAqICAgIGZwaXgsIFRwaXgJRnJlcXVlbmN5LCBwZXJpb2Qgb2YgdGhlIHBpeGVsIGNsb2NrLgorICogICAgZmxuLCBUbG4gIAlGcmVxdWVuY3ksIHBlcmlvZCBvZiB0aGUgbGluZSBjbG9jay4KKyAqICAgIGZhYywgVGFjICAJRnJlcXVlbmN5LCBwZXJpb2Qgb2YgdGhlIEFDIGJpYXMgY2xvY2suCisgKi8KKworI2RlZmluZSBMQ0RfUEVudHJ5U3AJMiAgICAgICAJLyogTENEIFBhbGV0dGUgRW50cnkgU3BhY2UgW2J5dGVdICAqLworI2RlZmluZSBMQ0RfNEJpdFBTcAkgICAgICAgIAkvKiBMQ0QgNC1CaXQgcGl4ZWwgUGFsZXR0ZSBTcGFjZSAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogW2J5dGVdICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgxNipMQ0RfUEVudHJ5U3ApCisjZGVmaW5lIExDRF84Qml0UFNwCSAgICAgICAgCS8qIExDRCA4LUJpdCBwaXhlbCBQYWxldHRlIFNwYWNlICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBbYnl0ZV0gICAgICAgICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDI1NipMQ0RfUEVudHJ5U3ApCisjZGVmaW5lIExDRF8xMl8xNkJpdFBTcAkgICAgICAgIAkvKiBMQ0QgMTIvMTYtQml0IHBpeGVsICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogZHVtbXktUGFsZXR0ZSBTcGFjZSBbYnl0ZV0gICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgxNipMQ0RfUEVudHJ5U3ApCisKKyNkZWZpbmUgTENEX1BHcmV5CUZsZCAoNCwgMCkJLyogTENEIFBhbGV0dGUgZW50cnkgR3JleSB2YWx1ZSAgICAqLworI2RlZmluZSBMQ0RfUEJsdWUJRmxkICg0LCAwKQkvKiBMQ0QgUGFsZXR0ZSBlbnRyeSBCbHVlIHZhbHVlICAgICovCisjZGVmaW5lIExDRF9QR3JlZW4JRmxkICg0LCA0KQkvKiBMQ0QgUGFsZXR0ZSBlbnRyeSBHcmVlbiB2YWx1ZSAgICovCisjZGVmaW5lIExDRF9QUmVkCUZsZCAoNCwgOCkJLyogTENEIFBhbGV0dGUgZW50cnkgUmVkIHZhbHVlICAgICAqLworI2RlZmluZSBMQ0RfUEJTIAlGbGQgKDIsIDEyKQkvKiBMQ0QgUGl4ZWwgQml0IFNpemUgICAgICAgICAgICAgICovCisjZGVmaW5lIExDRF80Qml0CSAgICAgICAgCS8qICBMQ0QgNC1CaXQgcGl4ZWwgbW9kZSAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMCA8PCBGU2hmdCAoTENEX1BCUykpCisjZGVmaW5lIExDRF84Qml0CSAgICAgICAgCS8qICBMQ0QgOC1CaXQgcGl4ZWwgbW9kZSAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoMSA8PCBGU2hmdCAoTENEX1BCUykpCisjZGVmaW5lIExDRF8xMl8xNkJpdAkgICAgICAgIAkvKiAgTENEIDEyLzE2LUJpdCBwaXhlbCBtb2RlICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKDIgPDwgRlNoZnQgKExDRF9QQlMpKQorCisjZGVmaW5lIExDRF9JbnQwXzAJMHgwICAgICAJLyogTENEIEludGVuc2l0eSA9ICAgMC4wJSA9ICAwICAgICAqLworI2RlZmluZSBMQ0RfSW50MTFfMQkweDEgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gIDExLjElID0gIDEvOSAgICovCisjZGVmaW5lIExDRF9JbnQyMF8wCTB4MiAgICAgCS8qIExDRCBJbnRlbnNpdHkgPSAgMjAuMCUgPSAgMS81ICAgKi8KKyNkZWZpbmUgTENEX0ludDI2XzcJMHgzICAgICAJLyogTENEIEludGVuc2l0eSA9ICAyNi43JSA9ICA0LzE1ICAqLworI2RlZmluZSBMQ0RfSW50MzNfMwkweDQgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gIDMzLjMlID0gIDMvOSAgICovCisjZGVmaW5lIExDRF9JbnQ0MF8wCTB4NSAgICAgCS8qIExDRCBJbnRlbnNpdHkgPSAgNDAuMCUgPSAgMi81ICAgKi8KKyNkZWZpbmUgTENEX0ludDQ0XzQJMHg2ICAgICAJLyogTENEIEludGVuc2l0eSA9ICA0NC40JSA9ICA0LzkgICAqLworI2RlZmluZSBMQ0RfSW50NTBfMAkweDcgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gIDUwLjAlID0gIDEvMiAgICovCisjZGVmaW5lIExDRF9JbnQ1NV82CTB4OCAgICAgCS8qIExDRCBJbnRlbnNpdHkgPSAgNTUuNiUgPSAgNS85ICAgKi8KKyNkZWZpbmUgTENEX0ludDYwXzAJMHg5ICAgICAJLyogTENEIEludGVuc2l0eSA9ICA2MC4wJSA9ICAzLzUgICAqLworI2RlZmluZSBMQ0RfSW50NjZfNwkweEEgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gIDY2LjclID0gIDYvOSAgICovCisjZGVmaW5lIExDRF9JbnQ3M18zCTB4QiAgICAgCS8qIExDRCBJbnRlbnNpdHkgPSAgNzMuMyUgPSAxMS8xNSAgKi8KKyNkZWZpbmUgTENEX0ludDgwXzAJMHhDICAgICAJLyogTENEIEludGVuc2l0eSA9ICA4MC4wJSA9ICA0LzUgICAqLworI2RlZmluZSBMQ0RfSW50ODhfOQkweEQgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gIDg4LjklID0gIDgvOSAgICovCisjZGVmaW5lIExDRF9JbnQxMDBfMAkweEUgICAgIAkvKiBMQ0QgSW50ZW5zaXR5ID0gMTAwLjAlID0gIDEgICAgICovCisjZGVmaW5lIExDRF9JbnQxMDBfMEEJMHhGICAgICAJLyogTENEIEludGVuc2l0eSA9IDEwMC4wJSA9ICAxICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAoQWx0ZXJuYXRpdmUpICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgTENDUjAJCV9fUkVHKDB4QjAxMDAwMDApICAvKiBMQ0QgQ29udHJvbCBSZWcuIDAgKi8KKyNkZWZpbmUgTENTUgkJX19SRUcoMHhCMDEwMDAwNCkgIC8qIExDRCBTdGF0dXMgUmVnLiAqLworI2RlZmluZSBEQkFSMQkJX19SRUcoMHhCMDEwMDAxMCkgIC8qIExDRCBETUEgQmFzZSBBZGRyZXNzIFJlZy4gY2hhbm5lbCAxICovCisjZGVmaW5lIERDQVIxCQlfX1JFRygweEIwMTAwMDE0KSAgLyogTENEIERNQSBDdXJyZW50IEFkZHJlc3MgUmVnLiBjaGFubmVsIDEgKi8KKyNkZWZpbmUgREJBUjIJCV9fUkVHKDB4QjAxMDAwMTgpICAvKiBMQ0QgRE1BIEJhc2UgQWRkcmVzcyBSZWcuICBjaGFubmVsIDIgKi8KKyNkZWZpbmUgRENBUjIJCV9fUkVHKDB4QjAxMDAwMUMpICAvKiBMQ0QgRE1BIEN1cnJlbnQgQWRkcmVzcyBSZWcuIGNoYW5uZWwgMiAqLworI2RlZmluZSBMQ0NSMQkJX19SRUcoMHhCMDEwMDAyMCkgIC8qIExDRCBDb250cm9sIFJlZy4gMSAqLworI2RlZmluZSBMQ0NSMgkJX19SRUcoMHhCMDEwMDAyNCkgIC8qIExDRCBDb250cm9sIFJlZy4gMiAqLworI2RlZmluZSBMQ0NSMwkJX19SRUcoMHhCMDEwMDAyOCkgIC8qIExDRCBDb250cm9sIFJlZy4gMyAqLworCisjZGVmaW5lIExDQ1IwX0xFTgkweDAwMDAwMDAxCS8qIExDRCBFTmFibGUgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfQ01TCTB4MDAwMDAwMDIJLyogQ29sb3IvTW9ub2Nocm9tZSBkaXNwbGF5IFNlbGVjdCAqLworI2RlZmluZSBMQ0NSMF9Db2xvcgkoTENDUjBfQ01TKjApCS8qICBDb2xvciBkaXNwbGF5ICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfTW9ubwkoTENDUjBfQ01TKjEpCS8qICBNb25vY2hyb21lIGRpc3BsYXkgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfU0RTCTB4MDAwMDAwMDQJLyogU2luZ2xlL0R1YWwgcGFuZWwgZGlzcGxheSAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBTZWxlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX1NuZ2wJKExDQ1IwX1NEUyowKQkvKiAgU2luZ2xlIHBhbmVsIGRpc3BsYXkgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX0R1YWwJKExDQ1IwX1NEUyoxKQkvKiAgRHVhbCBwYW5lbCBkaXNwbGF5ICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX0xETQkweDAwMDAwMDA4CS8qIExDRCBEaXNhYmxlIGRvbmUgKExERCkgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogaW50ZXJydXB0IE1hc2sgKGRpc2FibGUpICAgICAgICAqLworI2RlZmluZSBMQ0NSMF9CQU0JMHgwMDAwMDAxMAkvKiBCYXNlIEFkZHJlc3MgdXBkYXRlIChCQVUpICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIGludGVycnVwdCBNYXNrIChkaXNhYmxlKSAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfRVJNCTB4MDAwMDAwMjAJLyogTENEIEVScm9yIChCRVIsIElPTCwgSVVMLCBJT1UsICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBJVVUsIE9PTCwgT1VMLCBPT1UsIGFuZCBPVVUpICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIGludGVycnVwdCBNYXNrIChkaXNhYmxlKSAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfUEFTCTB4MDAwMDAwODAJLyogUGFzc2l2ZS9BY3RpdmUgZGlzcGxheSBTZWxlY3QgICAqLworI2RlZmluZSBMQ0NSMF9QYXMJKExDQ1IwX1BBUyowKQkvKiAgUGFzc2l2ZSBkaXNwbGF5IChTVE4pICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX0FjdAkoTENDUjBfUEFTKjEpCS8qICBBY3RpdmUgZGlzcGxheSAoVEZUKSAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfQkxFCTB4MDAwMDAxMDAJLyogQmlnL0xpdHRsZSBFbmRpYW4gc2VsZWN0ICAgICAgICAqLworI2RlZmluZSBMQ0NSMF9MdGxFbmQJKExDQ1IwX0JMRSowKQkvKiAgTGl0dGxlIEVuZGlhbiBmcmFtZSBidWZmZXIgICAgICovCisjZGVmaW5lIExDQ1IwX0JpZ0VuZAkoTENDUjBfQkxFKjEpCS8qICBCaWcgRW5kaWFuIGZyYW1lIGJ1ZmZlciAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfRFBECTB4MDAwMDAyMDAJLyogRG91YmxlIFBpeGVsIERhdGEgKG1vbm9jaHJvbWUgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBkaXNwbGF5IG1vZGUpICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwXzRQaXhNb25vCShMQ0NSMF9EUEQqMCkJLyogIDQtUGl4ZWwvY2xvY2sgTW9ub2Nocm9tZSAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwXzhQaXhNb25vCShMQ0NSMF9EUEQqMSkJLyogIDgtUGl4ZWwvY2xvY2sgTW9ub2Nocm9tZSAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IwX1BERAlGbGQgKDgsIDEyKQkvKiBQYWxldHRlIERNQSByZXF1ZXN0IERlbGF5ICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFtUbWVtXSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjBfRE1BRGVsKFRjcHUpICAgICAgCS8qICBwYWxldHRlIERNQSByZXF1ZXN0IERlbGF5ICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgWzAuLjUxMCBUY3B1XSAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKChUY3B1KS8yIDw8IEZTaGZ0IChMQ0NSMF9QREQpKQorCisjZGVmaW5lIExDU1JfTERECTB4MDAwMDAwMDEJLyogTENEIERpc2FibGUgRG9uZSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX0JBVQkweDAwMDAwMDAyCS8qIEJhc2UgQWRkcmVzcyBVcGRhdGUgKHJlYWQpICAgICAgKi8KKyNkZWZpbmUgTENTUl9CRVIJMHgwMDAwMDAwNAkvKiBCdXMgRVJyb3IgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDU1JfQUJDCTB4MDAwMDAwMDgJLyogQUMgQmlhcyBjbG9jayBDb3VudCAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX0lPTAkweDAwMDAwMDEwCS8qIElucHV0IEZJRk8gT3Zlci1ydW4gTG93ZXIgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX0lVTAkweDAwMDAwMDIwCS8qIElucHV0IEZJRk8gVW5kZXItcnVuIExvd2VyICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX0lPVQkweDAwMDAwMDQwCS8qIElucHV0IEZJRk8gT3Zlci1ydW4gVXBwZXIgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX0lVVQkweDAwMDAwMDgwCS8qIElucHV0IEZJRk8gVW5kZXItcnVuIFVwcGVyICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX09PTAkweDAwMDAwMTAwCS8qIE91dHB1dCBGSUZPIE92ZXItcnVuIExvd2VyICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX09VTAkweDAwMDAwMjAwCS8qIE91dHB1dCBGSUZPIFVuZGVyLXJ1biBMb3dlciAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX09PVQkweDAwMDAwNDAwCS8qIE91dHB1dCBGSUZPIE92ZXItcnVuIFVwcGVyICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ1NSX09VVQkweDAwMDAwODAwCS8qIE91dHB1dCBGSUZPIFVuZGVyLXJ1biBVcHBlciAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcGFuZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIExDQ1IxX1BQTAlGbGQgKDYsIDQpCS8qIFBpeGVscyBQZXIgTGluZS8xNiAtIDEgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjFfRGlzV2R0aChQaXhlbCkgICAgCS8qICBEaXNwbGF5IFdpZHRoIFsxNi4uMTAyNCBwaXguXSAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChQaXhlbCkgLSAxNikvMTYgPDwgRlNoZnQgKExDQ1IxX1BQTCkpCisjZGVmaW5lIExDQ1IxX0hTVwlGbGQgKDYsIDEwKQkvKiBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIHB1bHNlIFdpZHRoIC0gMSBbVHBpeF0gKExfTENMSykgKi8KKyNkZWZpbmUgTENDUjFfSG9yU25jaFdkdGgoVHBpeCkgCS8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgcHVsc2UgV2lkdGggWzEuLjY0IFRwaXhdICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoVHBpeCkgLSAxKSA8PCBGU2hmdCAoTENDUjFfSFNXKSkKKyNkZWZpbmUgTENDUjFfRUxXCUZsZCAoOCwgMTYpCS8qIEVuZC1vZi1MaW5lIHBpeGVsIGNsb2NrIFdhaXQgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogY291bnQgLSAxIFtUcGl4XSAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMV9FbmRMbkRlbChUcGl4KSAgICAJLyogIEVuZC1vZi1MaW5lIERlbGF5ICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBbMS4uMjU2IFRwaXhdICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChUcGl4KSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9FTFcpKQorI2RlZmluZSBMQ0NSMV9CTFcJRmxkICg4LCAyNCkJLyogQmVnaW5uaW5nLW9mLUxpbmUgcGl4ZWwgY2xvY2sgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBXYWl0IGNvdW50IC0gMSBbVHBpeF0gICAgICAgICAgICovCisjZGVmaW5lIExDQ1IxX0JlZ0xuRGVsKFRwaXgpICAgIAkvKiAgQmVnaW5uaW5nLW9mLUxpbmUgRGVsYXkgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFsxLi4yNTYgVHBpeF0gICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKFRwaXgpIC0gMSkgPDwgRlNoZnQgKExDQ1IxX0JMVykpCisKKyNkZWZpbmUgTENDUjJfTFBQCUZsZCAoMTAsIDApCS8qIExpbmUgUGVyIFBhbmVsIC0gMSAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjJfRGlzSGdodChMaW5lKSAgICAgCS8qICBEaXNwbGF5IEhlaWdodCBbMS4uMTAyNCBsaW5lc10gKi8gXAorICAgICAgICAgICAgICAgIAkoKChMaW5lKSAtIDEpIDw8IEZTaGZ0IChMQ0NSMl9MUFApKQorI2RlZmluZSBMQ0NSMl9WU1cJRmxkICg2LCAxMCkJLyogVmVydGljYWwgU3luY2hyb25pemF0aW9uIHB1bHNlICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBXaWR0aCAtIDEgW1Rsbl0gKExfRkNMSykgICAgICAgICovCisjZGVmaW5lIExDQ1IyX1ZydFNuY2hXZHRoKFRsbikgIAkvKiAgVmVydGljYWwgU3luY2hyb25pemF0aW9uIHB1bHNlICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFdpZHRoIFsxLi42NCBUbG5dICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgoKFRsbikgLSAxKSA8PCBGU2hmdCAoTENDUjJfVlNXKSkKKyNkZWZpbmUgTENDUjJfRUZXCUZsZCAoOCwgMTYpCS8qIEVuZC1vZi1GcmFtZSBsaW5lIGNsb2NrIFdhaXQgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSMl9FbmRGcm1EZWwoVGxuKSAgICAJLyogIEVuZC1vZi1GcmFtZSBEZWxheSAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBbMC4uMjU1IFRsbl0gICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKFRsbikgPDwgRlNoZnQgKExDQ1IyX0VGVykpCisjZGVmaW5lIExDQ1IyX0JGVwlGbGQgKDgsIDI0KQkvKiBCZWdpbm5pbmctb2YtRnJhbWUgbGluZSBjbG9jayAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFdhaXQgY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjJfQmVnRnJtRGVsKFRsbikgICAgCS8qICBCZWdpbm5pbmctb2YtRnJhbWUgRGVsYXkgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgWzAuLjI1NSBUbG5dICAgICAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKChUbG4pIDw8IEZTaGZ0IChMQ0NSMl9CRlcpKQorCisjZGVmaW5lIExDQ1IzX1BDRAlGbGQgKDgsIDApCS8qIFBpeGVsIENsb2NrIERpdmlzb3IvMiAtIDIgICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogWzEuLjI1NV0gKExfUENMSykgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBmcGl4ID0gZmNwdS8oMiooUENEICsgMikpICAgICAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFRwaXggPSAyKihQQ0QgKyAyKSpUY3B1ICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjNfUGl4Q2xrRGl2KERpdikgICAgCS8qICBQaXhlbCBDbG9jayBEaXZpc29yIFs2Li41MTRdICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gNCkvMiA8PCBGU2hmdCAoTENDUjNfUENEKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZwaXggPSBmY3B1LygyKkZsb29yIChEaXYvMikpICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVHBpeCA9IDIqRmxvb3IgKERpdi8yKSpUY3B1ICAgICovCisjZGVmaW5lIExDQ1IzX0NlaWxQaXhDbGtEaXYoRGl2KQkvKiAgQ2VpbC4gb2YgUGl4Q2xrRGl2IFs2Li41MTRdICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDMpLzIgPDwgRlNoZnQgKExDQ1IzX1BDRCkpCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBmcGl4ID0gZmNwdS8oMipDZWlsIChEaXYvMikpICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFRwaXggPSAyKkNlaWwgKERpdi8yKSpUY3B1ICAgICAqLworI2RlZmluZSBMQ0NSM19BQ0IJRmxkICg4LCA4KQkvKiBBQyBCaWFzIGNsb2NrIGhhbGYgcGVyaW9kIC0gMSAgICovCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qIFtUbG5dIChMX0JJQVMpICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTENDUjNfQUNCc0RpdihEaXYpICAgICAgCS8qICBBQyBCaWFzIGNsb2NrIERpdmlzb3IgWzIuLjUxMl0gKi8gXAorICAgICAgICAgICAgICAgIAkoKChEaXYpIC0gMikvMiA8PCBGU2hmdCAoTENDUjNfQUNCKSkKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIGZhYyA9IGZsbi8oMipGbG9vciAoRGl2LzIpKSAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgVGFjID0gMipGbG9vciAoRGl2LzIpKlRsbiAgICAgICovCisjZGVmaW5lIExDQ1IzX0NlaWxBQ0JzRGl2KERpdikgIAkvKiAgQ2VpbC4gb2YgQUNCc0RpdiBbMi4uNTEyXSAgICAgICovIFwKKyAgICAgICAgICAgICAgICAJKCgoRGl2KSAtIDEpLzIgPDwgRlNoZnQgKExDQ1IzX0FDQikpCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBmYWMgPSBmbG4vKDIqQ2VpbCAoRGl2LzIpKSAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIFRhYyA9IDIqQ2VpbCAoRGl2LzIpKlRsbiAgICAgICAqLworI2RlZmluZSBMQ0NSM19BUEkJRmxkICg0LCAxNikJLyogQUMgYmlhcyBQaW4gdHJhbnNpdGlvbnMgcGVyICAgICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX0FDQnNDbnRPZmYgICAgICAgIAkvKiAgQUMgQmlhcyBjbG9jayB0cmFuc2l0aW9uIENvdW50ICovIFwKKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIE9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgCSgwIDw8IEZTaGZ0IChMQ0NSM19BUEkpKQorI2RlZmluZSBMQ0NSM19BQ0JzQ250KFRyYW5zKSAgICAJLyogIEFDIEJpYXMgY2xvY2sgdHJhbnNpdGlvbiBDb3VudCAqLyBcCisgICAgICAgICAgICAgICAgCSAgICAgICAgCS8qICBbMS4uMTVdICAgICAgICAgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgIAkoKFRyYW5zKSA8PCBGU2hmdCAoTENDUjNfQVBJKSkKKyNkZWZpbmUgTENDUjNfVlNQCTB4MDAxMDAwMDAJLyogVmVydGljYWwgU3luY2hyb25pemF0aW9uIHB1bHNlICAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBQb2xhcml0eSAoTF9GQ0xLKSAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX1ZydFNuY2hICShMQ0NSM19WU1AqMCkJLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgYWN0aXZlIEhpZ2ggICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX1ZydFNuY2hMCShMQ0NSM19WU1AqMSkJLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiAgYWN0aXZlIExvdyAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX0hTUAkweDAwMjAwMDAwCS8qIEhvcml6b250YWwgU3luY2hyb25pemF0aW9uICAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogcHVsc2UgUG9sYXJpdHkgKExfTENMSykgICAgICAgICAqLworI2RlZmluZSBMQ0NSM19Ib3JTbmNoSAkoTENDUjNfSFNQKjApCS8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHB1bHNlIGFjdGl2ZSBIaWdoICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSM19Ib3JTbmNoTAkoTENDUjNfSFNQKjEpCS8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KKyAgICAgICAgICAgICAgICAJICAgICAgICAJLyogIHB1bHNlIGFjdGl2ZSBMb3cgICAgICAgICAgICAgICAqLworI2RlZmluZSBMQ0NSM19QQ1AJMHgwMDQwMDAwMAkvKiBQaXhlbCBDbG9jayBQb2xhcml0eSAoTF9QQ0xLKSAgICovCisjZGVmaW5lIExDQ1IzX1BpeFJzRWRnCShMQ0NSM19QQ1AqMCkJLyogIFBpeGVsIGNsb2NrIFJpc2luZy1FZGdlICAgICAgICAqLworI2RlZmluZSBMQ0NSM19QaXhGbEVkZwkoTENDUjNfUENQKjEpCS8qICBQaXhlbCBjbG9jayBGYWxsaW5nLUVkZ2UgICAgICAgKi8KKyNkZWZpbmUgTENDUjNfT0VQCTB4MDA4MDAwMDAJLyogT3V0cHV0IEVuYWJsZSBQb2xhcml0eSAoTF9CSUFTLCAqLworICAgICAgICAgICAgICAgIAkgICAgICAgIAkvKiBhY3RpdmUgZGlzcGxheSBtb2RlKSAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX091dEVuSAkoTENDUjNfT0VQKjApCS8qICBPdXRwdXQgRW5hYmxlIGFjdGl2ZSBIaWdoICAgICAgKi8KKyNkZWZpbmUgTENDUjNfT3V0RW5MCShMQ0NSM19PRVAqMSkJLyogIE91dHB1dCBFbmFibGUgYWN0aXZlIExvdyAgICAgICAqLworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9jZXNzb3JfaWQ7CisjZW5kaWYKKworI2RlZmluZSBDUFVfUkVWSVNJT04JKHByb2Nlc3Nvcl9pZCAmIDE1KQorI2RlZmluZSBDUFVfU0ExMTEwX0EwCSgwKQorI2RlZmluZSBDUFVfU0ExMTEwX0IwCSg0KQorI2RlZmluZSBDUFVfU0ExMTEwX0IxCSg1KQorI2RlZmluZSBDUFVfU0ExMTEwX0IyCSg2KQorI2RlZmluZSBDUFVfU0ExMTEwX0I0CSg4KQorCisjZGVmaW5lIENQVV9TQTExMDBfSUQJKDB4NDQwMWExMTApCisjZGVmaW5lIENQVV9TQTExMDBfTUFTSwkoMHhmZmZmZmZmMCkKKyNkZWZpbmUgQ1BVX1NBMTExMF9JRAkoMHg2OTAxYjExMCkKKyNkZWZpbmUgQ1BVX1NBMTExMF9NQVNLCSgweGZmZmZmZmYwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL1NBLTExMDEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9TQS0xMTAxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI3ZDg4NwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9TQS0xMTAxLmgKQEAgLTAsMCArMSw5MjUgQEAKKy8qCisgKiBTQS0xMTAxLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIFBldGVyIERhbmllbHNzb24gMTk5OQorICoKKyAqIERlZmluaXRpb24gb2YgY29uc3RhbnRzIHJlbGF0ZWQgdG8gdGhlIHNhMTEwMQorICogc3VwcG9ydCBjaGlwIGZvciB0aGUgc2ExMTAwCisgKgorICovCisKKworLyogQmUgc3VyZSB0aGF0IHZpcnR1YWwgbWFwcGluZyBpcyBkZWZpbmVkIHJpZ2h0ICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorI2Vycm9yIFlvdSBtdXN0IGluY2x1ZGUgaGFyZHdhcmUuaCBub3QgU0EtMTEwMS5oCisjZW5kaWYKKworI2lmbmRlZiBTQTExMDFfQkFTRQorI2Vycm9yIFlvdSBtdXN0IGRlZmluZSBTQS0xMTAxIHBoeXNpY2FsIGJhc2UgYWRkcmVzcworI2VuZGlmCisKKyNpZm5kZWYgTEFOR1VBR0UKKyMgaWZkZWYgX19BU1NFTUJMWV9fCisjICBkZWZpbmUgTEFOR1VBR0UgQXNzZW1ibHkKKyMgZWxzZQorIyAgZGVmaW5lIExBTkdVQUdFIEMKKyMgZW5kaWYKKyNlbmRpZgorCisvKgorICogV2UgaGF2ZSBtYXBwZWQgdGhlIHNhMTEwMSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFNBMTEwMV9CQVNFLgorICogSXQgdGhlbiBhcHBlYXJzIGZyb20gMHhmNDAwMDAwMC4KKyAqLworCisjZGVmaW5lIFNBMTEwMV9wMnYoIHggKSAgICAgICAgICgoeCkgLSBTQTExMDFfQkFTRSArIDB4ZjQwMDAwMDApCisjZGVmaW5lIFNBMTEwMV92MnAoIHggKSAgICAgICAgICgoeCkgLSAweGY0MDAwMDAwICArIFNBMTEwMV9CQVNFKQorCisjaWZuZGVmIFNBMTEwMV9wMnYKKyNkZWZpbmUgU0ExMTAxX3AydihQaEFkZCkgIChQaEFkZCkKKyNlbmRpZgorCisjaW5jbHVkZSA8YXNtL2FyY2gvYml0ZmllbGQuaD4KKworI2RlZmluZSBDICAgICAgICAgICAgICAgMAorI2RlZmluZSBBc3NlbWJseSAgICAgICAgMQorCisKKy8qCisgKiBNZW1vcnkgbWFwCisgKi8KKworI2RlZmluZSBfX1NITUVNX0NPTlRST0wwCTB4MDAwMDAwMDAKKyNkZWZpbmUgX19TWVNURU1fQ09OVFJPTDEJMHgwMDAwMDQwMAorI2RlZmluZSBfX0FSQklURVIJCTB4MDAwMjAwMDAKKyNkZWZpbmUgX19TWVNURU1fQ09OVFJPTDIJMHgwMDA0MDAwMAorI2RlZmluZSBfX1NZU1RFTV9DT05UUk9MMwkweDAwMDYwMDAwCisjZGVmaW5lIF9fUEFSQUxMRUxfUE9SVAkJMHgwMDA4MDAwMAorI2RlZmluZSBfX1ZJRE1FTV9DT05UUk9MCTB4MDAxMDAwMDAKKyNkZWZpbmUgX19VUERBVEVfRklGTwkJMHgwMDEyMDAwMAorI2RlZmluZSBfX1NITUVNX0NPTlRST0wxCTB4MDAxNDAwMDAKKyNkZWZpbmUgX19JTlRFUlJVUFRfQ09OVFJPTAkweDAwMTYwMDAwCisjZGVmaW5lIF9fVVNCX0NPTlRST0wJCTB4MDAxODAwMDAKKyNkZWZpbmUgX19UUkFDS19JTlRFUkZBQ0UJMHgwMDFhMDAwMAorI2RlZmluZSBfX01PVVNFX0lOVEVSRkFDRQkweDAwMWIwMDAwCisjZGVmaW5lIF9fS0VZUEFEX0lOVEVSRkFDRQkweDAwMWMwMDAwCisjZGVmaW5lIF9fUENNQ0lBX0lOVEVSRkFDRQkweDAwMWUwMDAwCisjZGVmaW5lCV9fVkdBX0NPTlRST0wJCTB4MDAyMDAwMDAKKyNkZWZpbmUgX19HUElPX0lOVEVSRkFDRQkweDAwMzAwMDAwCisKKy8qCisgKiBNYWNybyB0aGF0IGNhbGN1bGF0ZXMgcmVhbCBhZGRyZXNzIGZvciByZWdpc3RlcnMgaW4gdGhlIFNBLTExMDEKKyAqLworCisjZGVmaW5lIF9TQTExMDEoIHggKSAgICAoKHgpICsgU0ExMTAxX0JBU0UpCisKKy8qCisgKiBJbnRlcmZhY2UgYW5kIHNoYXJlZCBtZW1vcnkgY29udHJvbGxlciByZWdpc3RlcnMKKyAqCisgKiBSZWdpc3RlcnMKKyAqCVNLQ1IJCVNBLTExMDEgY29udHJvbCByZWdpc3RlciAocmVhZC93cml0ZSkKKyAqCVNNQ1IJCVNoYXJlZCBNZW1vcnkgQ29udHJvbGxlciBSZWdpc3RlcgorICoJU05QUgkJU25vb3AgUmVnaXN0ZXIKKyAqLworCisjZGVmaW5lIF9TS0NSCQlfU0ExMTAxKCAweDAwMDAwMDAwICkgLyogU0EtMTEwMSBDb250cm9sIFJlZy4gKi8KKyNkZWZpbmUgX1NNQ1IJCV9TQTExMDEoIDB4MDAxNDAwMDAgKSAvKiBTaGFyZWQgTWVtLiBDb250cm9sIFJlZy4gKi8KKyNkZWZpbmUgX1NOUFIJCV9TQTExMDEoIDB4MDAxNDA0MDAgKSAvKiBTbm9vcCBSZWcuICovCisKKyNpZiBMQU5HVUFHRSA9PSBDCisjZGVmaW5lIFNLQ1IJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9TS0NSKSkpCisjZGVmaW5lIFNNQ1IJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9TTUNSKSkpCisjZGVmaW5lIFNOUFIJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9TTlBSKSkpCisKKyNkZWZpbmUgU0tDUl9QTExFbgkgIDB4MDAwMQkgIC8qIEVuYWJsZSBPbi1DaGlwIFBMTCAqLworI2RlZmluZSBTS0NSX0JDTEtFbgkgIDB4MDAwMgkgIC8qIEVuYWJsZXMgQkNMSyAqLworI2RlZmluZSBTS0NSX1NsZWVwCSAgMHgwMDA0CSAgLyogU2xlZXAgTW9kZSAqLworI2RlZmluZSBTS0NSX0lSZWZFbgkgIDB4MDAwOAkgIC8qIERBQyBJcmVmIGlucHV0IGVuYWJsZSAqLworI2RlZmluZSBTS0NSX1ZDT09OCSAgMHgwMDEwCSAgLyogVkNPIGJpYXMgKi8KKyNkZWZpbmUgU0tDUl9TY2FuVGVzdEVuCSAgMHgwMDIwCSAgLyogRW5hYmxlcyBzY2FuIHRlc3QgKi8KKyNkZWZpbmUgU0tDUl9DbG9ja1Rlc3RFbiAgMHgwMDQwCSAgLyogRW5hYmxlcyBjbG9jayB0ZXN0ICovCisKKyNkZWZpbmUgU01DUl9EQ0FDCSAgRmxkKDIsMCkJICAvKiBOdW1iZXIgb2YgY29sdW1uIGFkZHJlc3MgYml0cyAqLworI2RlZmluZSBTTUNSX0RSQUMJICBGbGQoMiwyKQkgIC8qIE51bWJlciBvZiByb3cgYWRkcmVzcyBiaXRzICovCisjZGVmaW5lIFNNQ1JfQXJiaXRlckJpYXMgIDB4MDAwOAkgIC8qIGZhdm9yIHZpZGVvIG9yIFVTQiAqLworI2RlZmluZSBTTUNSX1RvcFZpZE1lbQkgIEZsZCg0LDUpCSAgLyogVG9wIDQgYml0cyBvZiB2aWRtZW0gYWRkci4gKi8KKworI2RlZmluZSBTTUNSX0NvbEFkckJpdHMoIHggKQkJICAvKiBjb2wuIGFkZHIgYml0cyA4Li4xMSAqLyBcCisJKCggKHgpIC0gOCApIDw8IEZTaGZ0IChTTUNSX0RDQUMpKQorI2RlZmluZSBTTUNSX1Jvd0FkckJpdHMoIHggKQkJICAvKiByb3cgYWRkciBiaXRzIDkuLjEyICovXAorCSgoICh4KSAtIDkgKSA8PCBGU2hmdCAoU01DUl9EUkFDKQorCisjZGVmaW5lIFNOUFJfVkZCc3RhcnQJICBGbGQoMTIsMCkJLyogVmlkZW8gZnJhbWUgYnVmZmVyIGFkZHIgKi8KKyNkZWZpbmUgU05QUl9WRkJzaXplCSAgRmxkKDExLDEyKQkvKiBWaWRlbyBmcmFtZSBidWZmZXIgc2l6ZSAqLworI2RlZmluZSBTTlBSX1dob2xlQmFuawkgICgxIDw8IDIzKQkvKiBXaG9sZSBiYW5rIGJpdCAqLworI2RlZmluZSBTTlBSX0JhbmtTZWxlY3QJICBGbGQoMiwyNykJLyogQmFuayBzZWxlY3QgKi8KKyNkZWZpbmUgU05QUl9Tbm9vcEVuCSAgKDEgPDwgMzEpCS8qIEVuYWJsZSBzbm9vcCBvcGVyYXRpb24gKi8KKworI2RlZmluZSBTTlBSX1NldF9WRkJzaXplKCB4ICkgICAvKiBzZXQgZnJhbWUgYnVmZmVyIHNpemUgKGluIGtiKSAqLyBcCisJKCAoeCkgPDwgRlNoZnQgKFNOUFJfVkZCc2l6ZSkpCisjZGVmaW5lIFNOUFJfU2VsZWN0X0JhbmsoeCkgICAgIC8qIHNlbGVjdCBiYW5rIDAgb3IgMSAqLyAgXAorCSgoICh4KSArIDEgKSA8PCBGU2hmdCAoU05QUl9CYW5rU2VsZWN0ICkpCisKKyNlbmRpZiAvKiBMQU5HVUFHRSA9PSBDICovCisKKy8qCisgKiBWaWRlbyBNZW1vcnkgQ29udHJvbGxlcgorICoKKyAqIFJlZ2lzdGVycworICogICAgVk1DQ1IJQ29uZmlndXJhdGlvbiByZWdpc3RlcgorICogICAgVk1DQVIJVk1DIGFkZHJlc3MgcmVnaXN0ZXIKKyAqICAgIFZNQ0RSCVZNQyBkYXRhIHJlZ2lzdGVyCisgKgorICovCisKKyNkZWZpbmUgX1ZNQ0NSCQlfU0ExMTAxKCAweDAwMTAwMDAwICkJLyogQ29uZmlndXJhdGlvbiByZWdpc3RlciAqLworI2RlZmluZSBfVk1DQVIJCV9TQTExMDEoIDB4MDAxMDEwMDAgKQkvKiBWTUMgYWRkcmVzcyByZWdpc3RlciAqLworI2RlZmluZSBfVk1DRFIJCV9TQTExMDEoIDB4MDAxMDE0MDAgKQkvKiBWTUMgZGF0YSByZWdpc3RlciAqLworCisjaWYgTEFOR1VBR0UgPT0gQworI2RlZmluZSBWTUNDUgkJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1ZNQ0NSKSkpCisjZGVmaW5lIFZNQ0FSCQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfVk1DQVIpKSkKKyNkZWZpbmUgVk1DRFIJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WTUNEUikpKQorCisjZGVmaW5lIFZNQ0NSX1JlZnJlc2hFbgkgICAgMHgwMDAwCSAgLyogRW5hYmxlIG1lbW9yeSByZWZyZXNoICovCisjZGVmaW5lIFZNQ0NSX0NvbmZpZwkgICAgMHgwMDAxCSAgLyogRFJBTSBzaXplICovCisjZGVmaW5lIFZNQ0NSX1JlZlBlcmlvZAkgICAgRmxkKDIsMykJICAvKiBSZWZyZXNoIHBlcmlvZCAqLworI2RlZmluZSBWTUNDUl9TdGFsZURhdGFXYWl0IEZsZCg0LDUpCSAgLyogU3RhbGUgRklGTyBkYXRhIHRpbWVvdXQgY291bnRlciAqLworI2RlZmluZSBWTUNDUl9TbGVlcFN0YXRlICAgICgxPDw5KQkgIC8qIFN0YXRlIG9mIGludGVyZmFjZSBwaW5zIGluIHNsZWVwKi8KKyNkZWZpbmUgVk1DQ1JfUmVmVGVzdAkgICAgKDE8PDEwKQkgIC8qIHJlZnJlc2ggdGVzdCAqLworI2RlZmluZSBWTUNDUl9SZWZMb3cJICAgIEZsZCg2LDExKQkgIC8qIHJlZnJlc2ggbG93IGNvdW50ZXIgKi8KKyNkZWZpbmUgVk1DQ1JfUmVmSGlnaAkgICAgRmxkKDcsMTcpCSAgLyogcmVmcmVzaCBoaWdoIGNvdW50ZXIgKi8KKyNkZWZpbmUgVk1DQ1JfU0RUQ1Rlc3QJICAgIEZsZCg3LDI0KQkgIC8qIHN0YWxlIGRhdGEgdGltZW91dCBjb3VudGVyICovCisjZGVmaW5lIFZNQ0NSX0ZvcmNlU2VsZlJlZiAgKDE8PDMxKQkgIC8qIEZvcmNlIHNlbGYgcmVmcmVzaCAqLworCisjZW5kaWYgTEFOR1VBR0UgPT0gQworCisKKy8qIFVwZGF0ZSBGSUZPCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBVRkNSCVVwZGF0ZSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIFVGU1IJVXBkYXRlIEZJRk8gU3RhdHVzIFJlZ2lzdGVyCisgKiAgICBVRkxWTFIJdXBkYXRlIEZJRk8gbGV2ZWwgcmVnaXN0ZXIKKyAqICAgIFVGRFIJdXBkYXRlIEZJRk8gZGF0YSByZWdpc3RlcgorICovCisKKyNkZWZpbmUgX1VGQ1IJX1NBMTEwMSgweDAwMTIwMDAwKSAgIC8qIFVwZGF0ZSBGSUZPIENvbnRyb2wgUmVnLiAqLworI2RlZmluZSBfVUZTUglfU0ExMTAxKDB4MDAxMjA0MDApICAgLyogVXBkYXRlIEZJRk8gU3RhdHVzIFJlZy4gKi8JCisjZGVmaW5lIF9VRkxWTFIJX1NBMTEwMSgweDAwMTIwODAwKSAgIC8qIFVwZGF0ZSBGSUZPIGxldmVsIHJlZy4gKi8KKyNkZWZpbmUgX1VGRFIJX1NBMTEwMSgweDAwMTIwYzAwKSAgIC8qIFVwZGF0ZSBGSUZPIGRhdGEgcmVnLiAqLworCisjaWYgTEFOR1VBR0UgPT0gQworCisjZGVmaW5lIFVGQ1IgCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9VRkNSKSkpCisjZGVmaW5lIFVGU1IJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1VGU1IpKSkKKyNkZWZpbmUgVUZMVkxSCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9VRkxWTFIpKSkgCisjZGVmaW5lIFVGRFIJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1VGRFIpKSkKKworCisjZGVmaW5lIFVGQ1JfRmlmb1RocmVzaGhvbGQJRmxkKDcsMCkJLyogTGV2ZWwgZm9yIEZpZm9HVG4gZmxhZyAqLworCisjZGVmaW5lIFVGU1JfRmlmb0dUbkZsYWcJMHgwMQkJLyogRmlmb0dUbiBmbGFnICovI2RlZmluZSBVRlNSX0ZpZm9FbXB0eQkJMHg4MAkJLyogRklGTyBpcyBlbXB0eSAqLworCisjZW5kaWYgLyogTEFOR1VBR0UgPT0gQyAqLworCisvKiBTeXN0ZW0gQ29udHJvbGxlcgorICoKKyAqIFJlZ2lzdGVycworICogICAgU0tQQ1IJUG93ZXIgQ29udHJvbCBSZWdpc3RlcgorICogICAgU0tDRFIJQ2xvY2sgRGl2aWRlciBSZWdpc3RlcgorICogICAgREFDRFIxCURBQzEgRGF0YSByZWdpc3RlcgorICogICAgREFDRFIyCURBQzIgRGF0YSByZWdpc3RlcgorICovCisKKyNkZWZpbmUgX1NLUENSCQlfU0ExMTAxKDB4MDAwMDA0MDApCisjZGVmaW5lIF9TS0NEUgkJX1NBMTEwMSgweDAwMDQwMDAwKQorI2RlZmluZSBfREFDRFIxCQlfU0ExMTAxKDB4MDAwNjAwMDApCisjZGVmaW5lIF9EQUNEUjIJCV9TQTExMDEoMHgwMDA2MDQwMCkKKworI2lmIExBTkdVQUdFID09IEMKKyNkZWZpbmUgU0tQQ1IgCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9TS1BDUikpKQorI2RlZmluZSBTS0NEUgkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfU0tDRFIpKSkKKyNkZWZpbmUgREFDRFIxCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9EQUNEUjEpKSkKKyNkZWZpbmUgREFDRFIyCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9EQUNEUjIpKSkKKworI2RlZmluZSBTS1BDUl9VQ0xLRW4JICAgICAweDAxICAgIC8qIFVTQiBFbmFibGUgKi8KKyNkZWZpbmUgU0tQQ1JfUENMS0VuCSAgICAgMHgwMiAgICAvKiBQUy8yIEVuYWJsZSAqLworI2RlZmluZSBTS1BDUl9JQ0xLRW4JICAgICAweDA0ICAgIC8qIEludGVycnVwdCBDb250cm9sbGVyIEVuYWJsZSAqLworI2RlZmluZSBTS1BDUl9WQ0xLRW4JICAgICAweDA4ICAgIC8qIFZpZGVvIENvbnRyb2xsZXIgRW5hYmxlICovCisjZGVmaW5lIFNLUENSX1BJQ0xLRW4JICAgICAweDEwICAgIC8qIHBhcmFsbGVsIHBvcnQgRW5hYmxlICovCisjZGVmaW5lIFNLUENSX0RDTEtFbgkgICAgIDB4MjAgICAgLyogREFDcyBFbmFibGUgKi8KKyNkZWZpbmUgU0tQQ1JfbktQQURFbgkgICAgIDB4NDAgICAgLyogTXVsdGlwbGV4ZXIgKi8KKworI2RlZmluZSBTS0NEUl9QTExNdWwJICAgICBGbGQoNywwKQkvKiBQTEwgTXVsdGlwbGllciAqLworI2RlZmluZSBTS0NEUl9WQ0xLRW4JICAgICBGbGQoMiw3KQkvKiBWaWRlbyBjb250cm9sbGVyIGNsb2NrIGRpdmlkZXIgKi8KKyNkZWZpbmUgU0tEQ1JfQkNMS0VuCSAgICAgKDE8PDkpCS8qIEJDTEsgRGl2aWRlciAqLworI2RlZmluZSBTS0RDUl9VVEVTVENMS0VuICAgICAoMTw8MTApCS8qIFJvdXRlIFVTQiBjbG9jayBkdXJpbmcgdGVzdCBtb2RlICovCisjZGVmaW5lIFNLRENSX0RpdlJWYWx1ZQkgICAgIEZsZCg2LDExKQkvKiBJbnB1dCBjbG9jayBkaXZpZGVyIGZvciBQTEwgKi8KKyNkZWZpbmUgU0tEQ1JfRGl2TlZhbHVlCSAgICAgRmxkKDUsMTcpCS8qIE91dHB1dCBjbG9jayBkaXZpZGVyIGZvciBQTEwgKi8KKyNkZWZpbmUgU0tEQ1JfUExMUlNICSAgICAgRmxkKDMsMjIpCS8qIFBMTCBiYW5kd2lkdGggY29udHJvbCAqLworI2RlZmluZSBTS0RDUl9DaGFyZ2VQdW1wICAgICAoMTw8MjUpCS8qIENoYXJnZSBwdW1wIGNvbnRyb2wgKi8KKyNkZWZpbmUgU0tEQ1JfQ2xrVGVzdE1vZGUgICAgKDE8PDI2KQkvKiBDbG9jayBvdXRwdXQgdGVzdCBtb2RlICovCisjZGVmaW5lIFNLRENSX0Nsa1Rlc3RFbgkgICAgICgxPDwyNykJLyogVGVzdCBjbG9jayBnZW5lcmF0b3IgKi8KKyNkZWZpbmUgU0tEQ1JfQ2xrSml0dGVyQ250bCAgRmxkKDMsMjgpCS8qIHZpZGVvIGNsb2NrIGppdHRlciBjb21wZW5zYXRpb24gKi8KKworI2RlZmluZSBEQUNEUl9EQUNDb3VudAkgICAgIEZsZCg4LDApCS8qIENvdW50IHZhbHVlICovCisjZGVmaW5lIERBQ0RSMV9EQUNDb3VudAkgICAgIERBQ0RSX0RBQ0NvdW50CisjZGVmaW5lIERBQ0RSMl9EQUNDb3VudAkgICAgIERBQ0RSX0RBQ0NvdW50CisKKyNlbmRpZiAvKiBMQU5HVUFHRSA9PSBDICovCisKKy8qCisgKiBQYXJhbGxlbCBQb3J0IEludGVyZmFjZQorICoKKyAqIFJlZ2lzdGVycworICogICAgSUVFRV9Db25maWcJSUVFRSBtb2RlIHNlbGVjdGlvbiBhbmQgcHJvZ3JhbW1hYmxlIGF0dHJpYnV0ZXMKKyAqICAgIElFRUVfQ29udHJvbAlDb250cm9scyB0aGUgc3RhdGVzIG9mIElFRUUgcG9ydCBjb250cm9sIG91dHB1dHMKKyAqICAgIElFRUVfRGF0YQkJRm9yd2FyZCB0cmFuc2ZlciBkYXRhIHJlZ2lzdGVyCisgKiAgICBJRUVFX0FkZHIJCUZvcndhcmQgdHJhbnNmZXIgYWRkcmVzcyByZWdpc3RlcgorICogICAgSUVFRV9TdGF0dXMJUG9ydCBJTyBzaWduYWwgc3RhdHVzIHJlZ2lzdGVyCisgKiAgICBJRUVFX0ludFN0YXR1cwlQb3J0IGludGVycnVwdHMgc3RhdHVzIHJlZ2lzdGVyCisgKiAgICBJRUVFX0ZpZm9MZXZlbHMgICBSeCBhbmQgVHggRklGTyBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiBsZXZlbHMKKyAqICAgIElFRUVfSW5pdFRpbWUJRm9yd2FyZCB0aW1lb3V0IGNvdW50ZXIgaW5pdGlhbCB2YWx1ZQorICogICAgSUVFRV9UaW1lclN0YXR1cwlGb3J3YXJkIHRpbWVvdXQgY291bnRlciBjdXJyZW50IHZhbHVlCisgKiAgICBJRUVFX0ZpZm9SZXNldAlSZXNldCBmb3J3YXJkIHRyYW5zZmVyIEZJRk8KKyAqICAgIElFRUVfUmVsb2FkVmFsdWUJQ291bnRlciByZWxvYWQgdmFsdWUKKyAqICAgIElFRUVfVGVzdENvbnRyb2wJQ29udHJvbCB0ZXN0bW9kZQorICogICAgSUVFRV9UZXN0RGF0YUluCVRlc3QgZGF0YSByZWdpc3RlcgorICogICAgSUVFRV9UZXN0RGF0YUluRW4JRW5hYmxlIHRlc3QgZGF0YQorICogICAgSUVFRV9UZXN0Q3RybEluCVRlc3QgY29udHJvbCBzaWduYWxzCisgKiAgICBJRUVFX1Rlc3RDdHJsSW5FbglFbmFibGUgdGVzdCBjb250cm9sIHNpZ25hbHMKKyAqICAgIElFRUVfVGVzdERhdGFTdGF0CUN1cnJlbnQgZGF0YSBidXMgdmFsdWUKKyAqCisgKi8KKworLyoKKyAqIFRoZSBjb250cm9sIHJlZ2lzdGVycyBhcmUgZGVmaW5lZCBhcyBvZmZzZXRzIGZyb20gYSBiYXNlIGFkZHJlc3MgCisgKi8KKyAKKyNkZWZpbmUgX0lFRUUoIHggKSBfU0ExMTAxKCAoeCkgKyBfX1BBUkFMTEVMX1BPUlQgKQorCisjZGVmaW5lIF9JRUVFX0NvbmZpZwkgICAgX0lFRUUoIDB4MDAwMCApCisjZGVmaW5lIF9JRUVFX0NvbnRyb2wJICAgIF9JRUVFKCAweDA0MDAgKQorI2RlZmluZSBfSUVFRV9EYXRhCSAgICBfSUVFRSggMHg0MDAwICkKKyNkZWZpbmUgX0lFRUVfQWRkcgkgICAgX0lFRUUoIDB4MDgwMCApCisjZGVmaW5lIF9JRUVFX1N0YXR1cwkgICAgX0lFRUUoIDB4MGMwMCApCisjZGVmaW5lIF9JRUVFX0ludFN0YXR1cwkgICAgX0lFRUUoIDB4MTAwMCApCisjZGVmaW5lIF9JRUVFX0ZpZm9MZXZlbHMgICAgX0lFRUUoIDB4MTQwMCApCisjZGVmaW5lIF9JRUVFX0luaXRUaW1lCSAgICBfSUVFRSggMHgxODAwICkKKyNkZWZpbmUgX0lFRUVfVGltZXJTdGF0dXMgICBfSUVFRSggMHgxYzAwICkKKyNkZWZpbmUgX0lFRUVfRmlmb1Jlc2V0CSAgICBfSUVFRSggMHgyMDAwICkKKyNkZWZpbmUgX0lFRUVfUmVsb2FkVmFsdWUgICBfSUVFRSggMHgzYzAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdENvbnRyb2wgICBfSUVFRSggMHgyNDAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdERhdGFJbiAgICBfSUVFRSggMHgyODAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdERhdGFJbkVuICBfSUVFRSggMHgyYzAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdEN0cmxJbiAgICBfSUVFRSggMHgzMDAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdEN0cmxJbkVuICBfSUVFRSggMHgzNDAwICkKKyNkZWZpbmUgX0lFRUVfVGVzdERhdGFTdGF0ICBfSUVFRSggMHgzODAwICkKKyAKKworI2lmIExBTkdVQUdFID09IEMKKyNkZWZpbmUgSUVFRV9Db25maWcJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX0NvbmZpZykpKQorI2RlZmluZSBJRUVFX0NvbnRyb2wJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX0NvbnRyb2wpKSkKKyNkZWZpbmUgSUVFRV9EYXRhCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSUVFRV9EYXRhKSkpCisjZGVmaW5lIElFRUVfQWRkcgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfQWRkcikpKQorI2RlZmluZSBJRUVFX1N0YXR1cwkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfU3RhdHVzKSkpCisjZGVmaW5lIElFRUVfSW50U3RhdHVzCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSUVFRV9JbnRTdGF0dXMpKSkKKyNkZWZpbmUgSUVFRV9GaWZvTGV2ZWxzCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSUVFRV9GaWZvTGV2ZWxzKSkpCisjZGVmaW5lIElFRUVfSW5pdFRpbWUJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX0luaXRUaW1lKSkpCisjZGVmaW5lIElFRUVfVGltZXJTdGF0dXMgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfVGltZXJTdGF0dXMpKSkKKyNkZWZpbmUgSUVFRV9GaWZvUmVzZXQJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX0ZpZm9SZXNldCkpKQorI2RlZmluZSBJRUVFX1JlbG9hZFZhbHVlICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX1JlbG9hZFZhbHVlKSkpCisjZGVmaW5lIElFRUVfVGVzdENvbnRyb2wgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfVGVzdENvbnRyb2wpKSkKKyNkZWZpbmUgSUVFRV9UZXN0RGF0YUluICAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSUVFRV9UZXN0RGF0YUluKSkpCisjZGVmaW5lIElFRUVfVGVzdERhdGFJbkVuICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfVGVzdERhdGFJbkVuKSkpCisjZGVmaW5lIElFRUVfVGVzdEN0cmxJbiAgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lFRUVfVGVzdEN0cmxJbikpKQorI2RlZmluZSBJRUVFX1Rlc3RDdHJsSW5FbiAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX1Rlc3RDdHJsSW5FbikpKQorI2RlZmluZSBJRUVFX1Rlc3REYXRhU3RhdCAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JRUVFX1Rlc3REYXRhU3RhdCkpKQorCisKKyNkZWZpbmUgSUVFRV9Db25maWdfTQkgICAgRmxkKDMsMCkJIC8qIE1vZGUgc2VsZWN0ICovCisjZGVmaW5lIElFRUVfQ29uZmlnX0QJICAgIDB4MDQJIC8qIEZJRk8gYWNjZXNzIGVuYWJsZSAqLworI2RlZmluZSBJRUVFX0NvbmZpZ19CCSAgICAweDA4CSAvKiA5LWJpdCB3b3JkIGVuYWJsZSAqLworI2RlZmluZSBJRUVFX0NvbmZpZ19UCSAgICAweDEwCSAvKiBEYXRhIHRyYW5zZmVyIGVuYWJsZSAqLworI2RlZmluZSBJRUVFX0NvbmZpZ19BCSAgICAweDIwCSAvKiBEYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworI2RlZmluZSBJRUVFX0NvbmZpZ19FCSAgICAweDQwCSAvKiBUaW1lciBlbmFibGUgKi8KKyNkZWZpbmUgSUVFRV9Db250cm9sX0EJICAgIDB4MDgJIC8qIEF1dG9GZCBvdXRwdXQgKi8KKyNkZWZpbmUgSUVFRV9Db250cm9sX0UJICAgIDB4MDQJIC8qIFNlbGVjdGluIG91dHB1dCAqLworI2RlZmluZSBJRUVFX0NvbnRyb2xfVAkgICAgMHgwMgkgLyogU3Ryb2JlIG91dHB1dCAqLworI2RlZmluZSBJRUVFX0NvbnRyb2xfSQkgICAgMHgwMQkgLyogUG9ydCBpbml0IG91dHB1dCAqLworI2RlZmluZSBJRUVFX0RhdGFfQwkgICAgKDE8PDMxKQkgLyogQnl0ZSBjb3VudCAqLworI2RlZmluZSBJRUVFX0RhdGFfRGIJICAgIEZsZCg5LDE2KQkgLyogRGF0YSBieXRlIDIgKi8KKyNkZWZpbmUgSUVFRV9EYXRhX0RhCSAgICBGbGQoOSwwKQkgLyogRGF0YSBieXRlIDEgKi8KKyNkZWZpbmUgSUVFRV9BZGRyX0EJICAgIEZsZCg4LDApCSAvKiBmb3J3YXJkIGFkZHJlc3MgdHJhbnNmZXIgYnl0ZSAqLworI2RlZmluZSBJRUVFX1N0YXR1c19BCSAgICAweDAxMDAJIC8qIG5BdXRvRmQgcG9ydCBvdXRwdXQgc3RhdHVzICovCisjZGVmaW5lIElFRUVfU3RhdHVzX0UJICAgIDB4MDA4MAkgLyogblNlbGVjdEluIHBvcnQgb3V0cHV0IHN0YXR1cyAqLworI2RlZmluZSBJRUVFX1N0YXR1c19UCSAgICAweDAwNDAJIC8qIG5TdHJvYmUgcG9ydCBvdXRwdXQgc3RhdHVzICovCisjZGVmaW5lIElFRUVfU3RhdHVzX0kJICAgIDB4MDAyMAkgLyogbkluaXQgcG9ydCBvdXRwdXQgc3RhdHVzICovCisjZGVmaW5lIElFRUVfU3RhdHVzX0IJICAgIDB4MDAxMAkgLyogQnVzeSBwb3J0IGlub3V0IHN0YXR1cyAqLworI2RlZmluZSBJRUVFX1N0YXR1c19TCSAgICAweDAwMDgJIC8qIFNlbGVjdCBwb3J0IGlucHV0IHN0YXR1cyAqLworI2RlZmluZSBJRUVFX1N0YXR1c19LCSAgICAweDAwMDQJIC8qIG5BY2sgcG9ydCBpbnB1dCBzdGF0dXMgKi8KKyNkZWZpbmUgSUVFRV9TdGF0dXNfRgkgICAgMHgwMDAyCSAvKiBuRmF1bHQgcG9ydCBpbnB1dCBzdGF0dXMgKi8KKyNkZWZpbmUgSUVFRV9TdGF0dXNfUgkgICAgMHgwMDAxCSAvKiBwRXJyb3IgcG9ydCBpbnB1dCBzdGF0dXMgKi8KKworI2RlZmluZSBJRUVFX0ludFN0YXR1c19JbnRSZXFEYXQJIDB4MDEwMAorI2RlZmluZSBJRUVFX0ludFN0YXR1c19JbnRSZXFFbXAJIDB4MDA4MAorI2RlZmluZSBJRUVFX0ludFN0YXR1c19JbnRSZXFJbnQJIDB4MDA0MAorI2RlZmluZSBJRUVFX0ludFN0YXR1c19JbnRSZXFSYXYJIDB4MDAyMAorI2RlZmluZSBJRUVFX0ludFN0YXR1c19JbnRSZXFUaW0JIDB4MDAxMAorI2RlZmluZSBJRUVFX0ludFN0YXR1c19SZXZBZGRyQ29tcAkgMHgwMDA4CisjZGVmaW5lIElFRUVfSW50U3RhdHVzX1JldkRhdGFDb21wCSAweDAwMDQKKyNkZWZpbmUgSUVFRV9JbnRTdGF0dXNfRndkQWRkckNvbXAJIDB4MDAwMgorI2RlZmluZSBJRUVFX0ludFN0YXR1c19Gd2REYXRhQ29tcAkgMHgwMDAxCisjZGVmaW5lIElFRUVfRmlmb0xldmVsc19SZXZGaWZvTGV2ZWwJIDIKKyNkZWZpbmUgSUVFRV9GaWZvTGV2ZWxzX0Z3ZEZpZm9MZXZlbAkgMQorI2RlZmluZSBJRUVFX0luaXRUaW1lX1RpbVZhbEluaXQJIEZsZCgyMiwwKQorI2RlZmluZSBJRUVFX1RpbWVyU3RhdHVzX1RpbVZhbFN0YXQJIEZsZCgyMiwwKQorI2RlZmluZSBJRUVFX1JlbG9hZFZhbHVlX1JlbG9hZAkJIEZsZCg0LDApCisKKyNkZWZpbmUgSUVFRV9UZXN0Q29udHJvbF9SZWdDbGsJCSAweDA0CisjZGVmaW5lIElFRUVfVGVzdENvbnRyb2xfQ2xvY2tTZWxlY3QJIEZsZCgyLDEpCisjZGVmaW5lIElFRUVfVGVzdENvbnRyb2xfVGltZXJUZXN0TW9kZUVuIDB4MDEKKyNkZWZpbmUgSUVFRV9UZXN0Q3RybEluX1BFcnJvcgkJIDB4MTAKKyNkZWZpbmUgSUVFRV9UZXN0Q3RybEluX25GYXVsdAkJIDB4MDgKKyNkZWZpbmUgSUVFRV9UZXN0Q3RybEluX25BY2sJCSAweDA0CisjZGVmaW5lIElFRUVfVGVzdEN0cmxJbl9QU2VsCQkgMHgwMgorI2RlZmluZSBJRUVFX1Rlc3RDdHJsSW5fQnVzeQkJIDB4MDEKKworI2VuZGlmIC8qIExBTkdVQUdFID09IEMgKi8KKworLyoKKyAqIFZHQSBDb250cm9sbGVyCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBWaWRlb0NvbnRyb2wJVmlkZW8gQ29udHJvbCBSZWdpc3RlcgorICogICAgVmdhVGltaW5nMAlWR0EgVGltaW5nIFJlZ2lzdGVyIDAKKyAqICAgIFZnYVRpbWluZzEJVkdBIFRpbWluZyBSZWdpc3RlciAxCisgKiAgICBWZ2FUaW1pbmcyCVZHQSBUaW1pbmcgUmVnaXN0ZXIgMgorICogICAgVmdhVGltaW5nMwlWR0EgVGltaW5nIFJlZ2lzdGVyIDMKKyAqICAgIFZnYUJvcmRlcgkJVkdBIEJvcmRlciBDb2xvciBSZWdpc3RlcgorICogICAgVmdhREJBUgkJVkdBRE1BIEJhc2UgQWRkcmVzcyBSZWdpc3RlcgorICogICAgVmdhRENBUgkJVkdBRE1BIENoYW5uZWwgQ3VycmVudCBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICBWZ2FTdGF0dXMJCVZHQSBTdGF0dXMgUmVnaXN0ZXIKKyAqICAgIFZnYUludGVycnVwdE1hc2sJVkdBIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCisgKiAgICBWZ2FQYWxldHRlCVZHQSBQYWxldHRlIFJlZ2lzdGVycworICogICAgRGFjQ29udHJvbAlEQUMgQ29udHJvbCBSZWdpc3RlcgorICogICAgVmdhVGVzdAkJVkdBIENvbnRyb2xsZXIgVGVzdCBSZWdpc3RlcgorICovCisKKyNkZWZpbmUgX1ZHQSggeCApCV9TQTExMDEoICggeCApICsgX19WR0FfQ09OVFJPTCApCisKKyNkZWZpbmUgX1ZpZGVvQ29udHJvbAkgICAgX1ZHQSggMHgwMDAwICkKKyNkZWZpbmUgX1ZnYVRpbWluZzAJICAgIF9WR0EoIDB4MDQwMCApCisjZGVmaW5lIF9WZ2FUaW1pbmcxCSAgICBfVkdBKCAweDA4MDAgKQorI2RlZmluZSBfVmdhVGltaW5nMgkgICAgX1ZHQSggMHgwYzAwICkKKyNkZWZpbmUgX1ZnYVRpbWluZzMJICAgIF9WR0EoIDB4MTAwMCApCisjZGVmaW5lIF9WZ2FCb3JkZXIJICAgIF9WR0EoIDB4MTQwMCApCisjZGVmaW5lIF9WZ2FEQkFSCSAgICBfVkdBKCAweDE4MDAgKQorI2RlZmluZSBfVmdhRENBUgkgICAgX1ZHQSggMHgxYzAwICkKKyNkZWZpbmUgX1ZnYVN0YXR1cwkgICAgX1ZHQSggMHgyMDAwICkKKyNkZWZpbmUgX1ZnYUludGVycnVwdE1hc2sgICBfVkdBKCAweDI0MDAgKQorI2RlZmluZSBfVmdhUGFsZXR0ZQkgICAgX1ZHQSggMHg0MDAwMCApCisjZGVmaW5lIF9EYWNDb250cm9sCSAgICBfVkdBKCAweDMwMDAgKQorI2RlZmluZSBfVmdhVGVzdAkgICAgX1ZHQSggMHgyYzAwICkKKworI2lmIChMQU5HVUFHRSA9PSBDKQorI2RlZmluZSBWaWRlb0NvbnRyb2wgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfVmlkZW9Db250cm9sKSkpCisjZGVmaW5lIFZnYVRpbWluZzAgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FUaW1pbmcwKSkpCisjZGVmaW5lIFZnYVRpbWluZzEgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FUaW1pbmcxKSkpCisjZGVmaW5lIFZnYVRpbWluZzIgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FUaW1pbmcyKSkpCisjZGVmaW5lIFZnYVRpbWluZzMgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FUaW1pbmczKSkpCisjZGVmaW5lIFZnYUJvcmRlciAgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FCb3JkZXIpKSkKKyNkZWZpbmUgVmdhREJBUgkgICAgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1ZnYURCQVIpKSkKKyNkZWZpbmUgVmdhRENBUgkgICAgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1ZnYURDQVIpKSkKKyNkZWZpbmUgVmdhU3RhdHVzICAgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1ZnYVN0YXR1cykpKQorI2RlZmluZSBWZ2FJbnRlcnJ1cHRNYXNrICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FJbnRlcnJ1cHRNYXNrKSkpCisjZGVmaW5lIFZnYVBhbGV0dGUgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9WZ2FQYWxldHRlKSkpCisjZGVmaW5lIERhY0NvbnRyb2wgICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9EYWNDb250cm9sKSkKKyNkZWZpbmUgVmdhVGVzdCAgICAgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1ZnYVRlc3QpKSkKKworI2RlZmluZSBWaWRlb0NvbnRyb2xfVmdhRW4gICAgMHgwMDAwMDAwMAorI2RlZmluZSBWaWRlb0NvbnRyb2xfQkdSICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBWaWRlb0NvbnRyb2xfVkNvbXBWYWwgRmxkKDIsMikKKyNkZWZpbmUgVmlkZW9Db250cm9sX1ZnYVJlcSAgIEZsZCg0LDQpCisjZGVmaW5lIFZpZGVvQ29udHJvbF9WQnVyc3RMICBGbGQoNCw4KQorI2RlZmluZSBWaWRlb0NvbnRyb2xfVk1vZGUgICAgKDE8PDEyKQorI2RlZmluZSBWaWRlb0NvbnRyb2xfUGFsUmVhZCAgKDE8PDEzKQorCisjZGVmaW5lIFZnYVRpbWluZzBfUFBMCSAgICAgIEZsZCg2LDIpCisjZGVmaW5lIFZnYVRpbWluZzBfSFNXCSAgICAgIEZsZCg4LDgpCisjZGVmaW5lIFZnYVRpbWluZzBfSEZQCSAgICAgIEZsZCg4LDE2KQorI2RlZmluZSBWZ2FUaW1pbmcwX0hCUAkgICAgICBGbGQoOCwyNCkKKworI2RlZmluZSBWZ2FUaW1pbmcxX0xQUwkgICAgICBGbGQoMTAsMCkKKyNkZWZpbmUgVmdhVGltaW5nMV9WU1cJICAgICAgRmxkKDYsMTApCisjZGVmaW5lIFZnYVRpbWluZzFfVkZQCSAgICAgIEZsZCg4LDE2KQorI2RlZmluZSBWZ2FUaW1pbmcxX1ZCUAkgICAgICBGbGQoOCwyNCkKKworI2RlZmluZSBWZ2FUaW1pbmcyX0lWUwkgICAgICAweDAxCisjZGVmaW5lIFZnYVRpbWluZzJfSUhTCSAgICAgIDB4MDIKKyNkZWZpbmUgVmdhVGltaW5nMl9DVlMJICAgICAgMHgwNAorI2RlZmluZSBWZ2FUaW1pbmcyX0NIUwkgICAgICAweDA4CisKKyNkZWZpbmUgVmdhVGltaW5nM19IQlMJICAgICAgRmxkKDgsMCkKKyNkZWZpbmUgVmdhVGltaW5nM19IQkUJICAgICAgRmxkKDgsOCkKKyNkZWZpbmUgVmdhVGltaW5nM19WQlMJICAgICAgRmxkKDgsMTYpCisjZGVmaW5lIFZnYVRpbWluZzNfVkJFCSAgICAgIEZsZCg4LDI0KQorCisjZGVmaW5lIFZnYUJvcmRlcl9CQ09MCSAgICAgIEZsZCgyNCwwKQorCisjZGVmaW5lIFZnYVN0YXR1c19WRlVGCSAgICAgIDB4MDEKKyNkZWZpbmUgVmdhU3RhdHVzX1ZOZXh0CSAgICAgIDB4MDIKKyNkZWZpbmUgVmdhU3RhdHVzX1ZDb21wCSAgICAgIDB4MDQKKworI2RlZmluZSBWZ2FJbnRlcnJ1cHRNYXNrX1ZGVUZNYXNrICAgMHgwMAorI2RlZmluZSBWZ2FJbnRlcnJ1cHRNYXNrX1ZOZXh0TWFzayAgMHgwMQorI2RlZmluZSBWZ2FJbnRlcnJ1cHRNYXNrX1ZDb21wTWFzayAgMHgwMgorCisjZGVmaW5lIFZnYVBhbGV0dGVfUgkgICAgICBGbGQoOCwwKQorI2RlZmluZSBWZ2FQYWxldHRlX0cJICAgICAgRmxkKDgsOCkKKyNkZWZpbmUgVmdhUGFsZXR0ZV9CCSAgICAgIEZsZCg4LDE2KQorCisjZGVmaW5lIERhY0NvbnRyb2xfREFDT04gICAgICAweDAwMDEKKyNkZWZpbmUgRGFjQ29udHJvbF9DT01QT04gICAgIDB4MDAwMgorI2RlZmluZSBEYWNDb250cm9sX1BFRE9OICAgICAgMHgwMDA0CisjZGVmaW5lIERhY0NvbnRyb2xfUlRyaW0gICAgICBGbGQoNSw0KQorI2RlZmluZSBEYWNDb250cm9sX0dUcmltICAgICAgRmxkKDUsOSkKKyNkZWZpbmUgRGFjQ29udHJvbF9CVHJpbSAgICAgIEZsZCg1LDE0KQorCisjZGVmaW5lIFZnYVRlc3RfVERBQwkgICAgICAweDAwCisjZGVmaW5lIFZnYVRlc3RfRGF0YXRlc3QgICAgICBGbGQoNCwxKQorI2RlZmluZSBWZ2FUZXN0X0RBQ1RFU1REQUMgICAgMHgxMAorI2RlZmluZSBWZ2FUZXN0X0RBQ1RFU1RPVVQgICAgRmxkKDMsNSkKKworI2VuZGlmIC8qIExBTkdVQUdFID09IEMgKi8KKworLyoKKyAqIFVTQiBIb3N0IEludGVyZmFjZSBDb250cm9sbGVyCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBSZXZpc2lvbgorICogICAgQ29udHJvbAorICogICAgQ29tbWFuZFN0YXR1cworICogICAgSW50ZXJydXB0U3RhdHVzCisgKiAgICBJbnRlcnJ1cHRFbmFibGUKKyAqICAgIEhDQ0EKKyAqICAgIFBlcmlvZEN1cnJlbnRFRAorICogICAgQ29udHJvbEhlYWRFRAorICogICAgQnVsa0hlYWRFRAorICogICAgQnVsa0N1cnJlbnRFRAorICogICAgRG9uZUhlYWQKKyAqICAgIEZtSW50ZXJ2YWwKKyAqICAgIEZtUmVtYWluaW5nCisgKiAgICBGbU51bWJlcgorICogICAgUGVyaW9kaWNTdGFydAorICogICAgTFNUaHJlc2hvbGQKKyAqICAgIFJoRGVzY3JpcHRvckEKKyAqICAgIFJoRGVzY3JpcHRvckIKKyAqICAgIFJoU3RhdHVzCisgKiAgICBSaFBvcnRTdGF0dXMKKyAqICAgIFVTQlN0YXR1cworICogICAgVVNCUmVzZXQKKyAqICAgIFVTVEFSCisgKiAgICBVU1dFUgorICogICAgVVNSRlIKKyAqICAgIFVTTkZSCisgKiAgICBVU1RDU1IKKyAqICAgIFVTU1IKKyAqICAgIAorICovCisKKyNkZWZpbmUgX1VTQiggeCApCV9TQTExMDEoICggeCApICsgX19VU0JfQ09OVFJPTCApCisKKworI2RlZmluZSBfUmV2aXNpb24JICBfVVNCKCAweDAwMDAgKQorI2RlZmluZSBfQ29udHJvbAkgIF9VU0IoIDB4MDg4OCApCisjZGVmaW5lIF9Db21tYW5kU3RhdHVzCSAgX1VTQiggMHgwYzAwICkKKyNkZWZpbmUgX0ludGVycnVwdFN0YXR1cyAgX1VTQiggMHgxMDAwICkKKyNkZWZpbmUgX0ludGVycnVwdEVuYWJsZSAgX1VTQiggMHgxNDAwICkKKyNkZWZpbmUgX0hDQ0EJCSAgX1VTQiggMHgxODAwICkKKyNkZWZpbmUgX1BlcmlvZEN1cnJlbnRFRCAgX1VTQiggMHgxYzAwICkKKyNkZWZpbmUgX0NvbnRyb2xIZWFkRUQJICBfVVNCKCAweDIwMDAgKQorI2RlZmluZSBfQnVsa0hlYWRFRAkgIF9VU0IoIDB4MjgwMCApCisjZGVmaW5lIF9CdWxrQ3VycmVudEVECSAgX1VTQiggMHgyYzAwICkKKyNkZWZpbmUgX0RvbmVIZWFkCSAgX1VTQiggMHgzMDAwICkKKyNkZWZpbmUgX0ZtSW50ZXJ2YWwJICBfVVNCKCAweDM0MDAgKQorI2RlZmluZSBfRm1SZW1haW5pbmcJICBfVVNCKCAweDM4MDAgKQorI2RlZmluZSBfRm1OdW1iZXIJICBfVVNCKCAweDNjMDAgKQorI2RlZmluZSBfUGVyaW9kaWNTdGFydAkgIF9VU0IoIDB4NDAwMCApCisjZGVmaW5lIF9MU1RocmVzaG9sZAkgIF9VU0IoIDB4NDQwMCApCisjZGVmaW5lIF9SaERlc2NyaXB0b3JBCSAgX1VTQiggMHg0ODAwICkKKyNkZWZpbmUgX1JoRGVzY3JpcHRvckIJICBfVVNCKCAweDRjMDAgKQorI2RlZmluZSBfUmhTdGF0dXMJICBfVVNCKCAweDUwMDAgKQorI2RlZmluZSBfUmhQb3J0U3RhdHVzCSAgX1VTQiggMHg1NDAwICkKKyNkZWZpbmUgX1VTQlN0YXR1cwkgIF9VU0IoIDB4MTE4MDAgKQorI2RlZmluZSBfVVNCUmVzZXQJICBfVVNCKCAweDExYzAwICkKKworI2RlZmluZSBfVVNUQVIJCSAgX1VTQiggMHgxMDQwMCApCisjZGVmaW5lIF9VU1dFUgkJICBfVVNCKCAweDEwODAwICkKKyNkZWZpbmUgX1VTUkZSCQkgIF9VU0IoIDB4MTBjMDAgKQorI2RlZmluZSBfVVNORlIJCSAgX1VTQiggMHgxMTAwMCApCisjZGVmaW5lIF9VU1RDU1IJCSAgX1VTQiggMHgxMTQwMCApCisjZGVmaW5lIF9VU1NSCQkgIF9VU0IoIDB4MTE4MDAgKQorCisKKyNpZiAoTEFOR1VBR0UgPT0gQykKKworI2RlZmluZSBSZXZpc2lvbgkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUmV2aXNpb24pKSkKKyNkZWZpbmUgQ29udHJvbAkJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0NvbnRyb2wpKSkKKyNkZWZpbmUgQ29tbWFuZFN0YXR1cwkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfQ29tbWFuZFN0YXR1cykpKQorI2RlZmluZSBJbnRlcnJ1cHRTdGF0dXMJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0ludGVycnVwdFN0YXR1cykpKQorI2RlZmluZSBJbnRlcnJ1cHRFbmFibGUJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0ludGVycnVwdEVuYWJsZSkpKQorI2RlZmluZSBIQ0NBCQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSENDQSkpKQorI2RlZmluZSBQZXJpb2RDdXJyZW50RUQJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BlcmlvZEN1cnJlbnRFRCkpKQorI2RlZmluZSBDb250cm9sSGVhZEVECSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9Db250cm9sSGVhZEVEKSkpCisjZGVmaW5lIEJ1bGtIZWFkRUQJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0J1bGtIZWFkRUQpKSkKKyNkZWZpbmUgQnVsa0N1cnJlbnRFRAkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfQnVsa0N1cnJlbnRFRCkpKQorI2RlZmluZSBEb25lSGVhZAkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfRG9uZUhlYWQpKSkKKyNkZWZpbmUgRm1JbnRlcnZhbAkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfRm1JbnRlcnZhbCkpKQorI2RlZmluZSBGbVJlbWFpbmluZwkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfRm1SZW1haW5pbmcpKSkKKyNkZWZpbmUgRm1OdW1iZXIJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0ZtTnVtYmVyKSkpCisjZGVmaW5lIFBlcmlvZGljU3RhcnQJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BlcmlvZGljU3RhcnQpKSkKKyNkZWZpbmUgTFNUaHJlc2hvbGQJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0xTVGhyZXNob2xkKSkpCisjZGVmaW5lIFJoRGVzY3JpcHRvckEJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1JoRGVzY3JpcHRvckEpKSkKKyNkZWZpbmUgUmhEZXNjcmlwdG9yQgkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUmhEZXNjcmlwdG9yQikpKQorI2RlZmluZSBSaFN0YXR1cwkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUmhTdGF0dXMpKSkKKyNkZWZpbmUgUmhQb3J0U3RhdHVzCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9SaFBvcnRTdGF0dXMpKSkKKyNkZWZpbmUgVVNCU3RhdHVzCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9VU0JTdGF0dXMpKSkKKyNkZWZpbmUgVVNCUmVzZXQJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1VTQlJlc2V0KSkpCisjZGVmaW5lIFVTVEFSCQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfVVNUQVIpKSkKKyNkZWZpbmUgVVNXRVIJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9VU1dFUikpKQorI2RlZmluZSBVU1JGUgkJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1VTUkZSKSkpCisjZGVmaW5lIFVTTkZSCQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfVVNORlIpKSkKKyNkZWZpbmUgVVNUQ1NSCQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfVVNUQ1NSKSkpCisjZGVmaW5lIFVTU1IJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9VU1NSKSkpCisKKworI2RlZmluZSBVU0JTdGF0dXNfSXJxSGNpUm10V2twCSAgICAgKDE8PDcpCisjZGVmaW5lIFVTQlN0YXR1c19JcnFIY2lCdWZmQWNjCSAgICAgKDE8PDgpCisjZGVmaW5lIFVTQlN0YXR1c19uSXJxSGNpTQkgICAgICgxPDw5KQorI2RlZmluZSBVU0JTdGF0dXNfbkhjaU1GQ2xyCSAgICAgKDE8PDEwKQorCisjZGVmaW5lIFVTQlJlc2V0X0ZvcmNlSWZSZXNldAkgICAgIDB4MDEKKyNkZWZpbmUgVVNCUmVzZXRfRm9yY2VIY1Jlc2V0CSAgICAgMHgwMgorI2RlZmluZSBVU0JSZXNldF9DbGtHZW5SZXNldAkgICAgIDB4MDQKKworI2RlZmluZSBVU1RDUl9SZEJzdENudHJsCSAgICAgRmxkKDMsMCkKKyNkZWZpbmUgVVNUQ1JfQnl0ZUVuYWJsZQkgICAgIEZsZCg0LDMpCisjZGVmaW5lIFVTVENSX1dyaXRlRW4JCSAgICAgKDE8PDcpCisjZGVmaW5lIFVTVENSX0ZpZm9DaXIJCSAgICAgKDE8PDgpCisjZGVmaW5lIFVTVENSX1Rlc3RYZmVyU2VsCSAgICAgKDE8PDkpCisjZGVmaW5lIFVTVENSX0ZpZm9DaXJBdEVuZAkgICAgICgxPDwxMCkKKyNkZWZpbmUgVVNUQ1JfblNpbVNjYWxlRG93bkNsawkgICAgICgxPDwxMSkKKworI2RlZmluZSBVU1NSX25BcHBNREVtcHR5CSAgICAgMHgwMQorI2RlZmluZSBVU1NSX25BcHBNREZpcnN0CSAgICAgMHgwMgorI2RlZmluZSBVU1NSX25BcHBNRExhc3QJCSAgICAgMHgwNAorI2RlZmluZSBVU1NSX25BcHBNREZ1bGwJCSAgICAgMHgwOAorI2RlZmluZSBVU1NSX25BcHBNQUZ1bGwJCSAgICAgMHgxMAorI2RlZmluZSBVU1NSX1hmZXJSZXEJCSAgICAgMHgyMAorI2RlZmluZSBVU1NSX1hmZXJFbmQJCSAgICAgMHg0MAorCisjZW5kaWYgLyogTEFOR1VBR0UgPT0gQyAqLworCisKKy8qCisgKiBJbnRlcnJ1cHQgQ29udHJvbGxlcgorICoKKyAqIFJlZ2lzdGVycworICogICAgSU5UVEVTVDAJCVRlc3QgcmVnaXN0ZXIgMAorICogICAgSU5UVEVTVDEJCVRlc3QgcmVnaXN0ZXIgMQorICogICAgSU5URU5BQkxFMAlJbnRlcnJ1cHQgRW5hYmxlIHJlZ2lzdGVyIDAKKyAqICAgIElOVEVOQUJMRTEJSW50ZXJydXB0IEVuYWJsZSByZWdpc3RlciAxCisgKiAgICBJTlRQT0wwCQlJbnRlcnJ1cHQgUG9sYXJpdHkgc2VsZWN0aW9uIDAKKyAqICAgIElOVFBPTDEJCUludGVycnVwdCBQb2xhcml0eSBzZWxlY3Rpb24gMQorICogICAgSU5UVFNUU0VMCQlJbnRlcnJ1cHQgc291cmNlIHNlbGVjdGlvbgorICogICAgSU5UU1RBVENMUjAJSW50ZXJydXB0IFN0YXR1cyAwCisgKiAgICBJTlRTVEFUQ0xSMQlJbnRlcnJ1cHQgU3RhdHVzIDEKKyAqICAgIElOVFNFVDAJCUludGVycnVwdCBTZXQgMAorICogICAgSU5UU0VUMQkJSW50ZXJydXB0IFNldCAxCisgKi8KKworI2RlZmluZSBfSU5UKCB4ICkJX1NBMTEwMSggKCB4ICkgKyBfX0lOVEVSUlVQVF9DT05UUk9MKQorCisjZGVmaW5lIF9JTlRURVNUMAlfSU5UKCAweDEwMDAgKQorI2RlZmluZSBfSU5UVEVTVDEJX0lOVCggMHgxNDAwICkKKyNkZWZpbmUgX0lOVEVOQUJMRTAJX0lOVCggMHgyMDAwICkKKyNkZWZpbmUgX0lOVEVOQUJMRTEJX0lOVCggMHgyNDAwICkKKyNkZWZpbmUgX0lOVFBPTDAJX0lOVCggMHgzMDAwICkKKyNkZWZpbmUgX0lOVFBPTDEJX0lOVCggMHgzNDAwICkKKyNkZWZpbmUgX0lOVFRTVFNFTCAgICAgCV9JTlQoIDB4NTAwMCApCisjZGVmaW5lIF9JTlRTVEFUQ0xSMAlfSU5UKCAweDYwMDAgKQorI2RlZmluZSBfSU5UU1RBVENMUjEJX0lOVCggMHg2NDAwICkKKyNkZWZpbmUgX0lOVFNFVDAJX0lOVCggMHg3MDAwICkKKyNkZWZpbmUgX0lOVFNFVDEJX0lOVCggMHg3NDAwICkKKworI2lmICggTEFOR1VBR0UgPT0gQyApCisjZGVmaW5lIElOVFRFU1QwCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JTlRURVNUMCkpKQorI2RlZmluZSBJTlRURVNUMQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSU5UVEVTVDEpKSkKKyNkZWZpbmUgSU5URU5BQkxFMAkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSU5URU5BQkxFMCkpKQorI2RlZmluZSBJTlRFTkFCTEUxCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JTlRFTkFCTEUxKSkpCisjZGVmaW5lIElOVFBPTDAJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JTlRQT0wwKSkpCisjZGVmaW5lIElOVFBPTDEJCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JTlRQT0wxKSkpCisjZGVmaW5lIElOVFRTVFNFTAkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSU5UVFNUU0VMKSkpCisjZGVmaW5lIElOVFNUQVRDTFIwCSgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9JTlRTVEFUQ0xSMCkpKQorI2RlZmluZSBJTlRTVEFUQ0xSMQkoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfSU5UU1RBVENMUjEpKSkKKyNkZWZpbmUgSU5UU0VUMAkJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lOVFNFVDApKSkKKyNkZWZpbmUgSU5UU0VUMQkJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0lOVFNFVDEpKSkKKworI2VuZGlmIC8qIExBTkdVQUdFID09IEMgKi8KKworLyoKKyAqIFBTLzIgVHJhY2twYWQgYW5kIE1vdXNlIEludGVyZmFjZXMKKyAqCisgKiBSZWdpc3RlcnMgICAocHJlZml4IGtiZCBhcHBsaWVzIHRvIHRyYWNrcGFkIGludGVyZmFjZSwgbXNlIHRvIG1vdXNlKQorICogICAgS0JEQ1IJCUNvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIEtCRFNUQVQJCVN0YXR1cyBSZWdpc3RlcgorICogICAgS0JEREFUQQkJVHJhbnNtaXQvUmVjZWl2ZSBEYXRhIHJlZ2lzdGVyCisgKiAgICBLQkRDTEtESVYJCUNsb2NrIERpdmlzaW9uIFJlZ2lzdGVyCisgKiAgICBLQkRQUkVDTlQJCUNsb2NrIFByZWNvdW50IFJlZ2lzdGVyCisgKiAgICBLQkRURVNUMQkJVGVzdCByZWdpc3RlciAxCisgKiAgICBLQkRURVNUMgkJVGVzdCByZWdpc3RlciAyCisgKiAgICBLQkRURVNUMwkJVGVzdCByZWdpc3RlciAzCisgKiAgICBLQkRURVNUNAkJVGVzdCByZWdpc3RlciA0CisgKiAgICBNU0VDUgkKKyAqICAgIE1TRVNUQVQKKyAqICAgIE1TRURBVEEKKyAqICAgIE1TRUNMS0RJVgorICogICAgTVNFUFJFQ05UCisgKiAgICBNU0VURVNUMQorICogICAgTVNFVEVTVDIKKyAqICAgIE1TRVRFU1QzCisgKiAgICBNU0VURVNUNAorICogICAgIAorICovCisKKyNkZWZpbmUgX0tCRCggeCApCV9TQTExMDEoICggeCApICsgX19UUkFDS19JTlRFUkZBQ0UgKQorI2RlZmluZSBfTVNFKCB4ICkJX1NBMTEwMSggKCB4ICkgKyBfX01PVVNFX0lOVEVSRkFDRSApCisKKyNkZWZpbmUgX0tCRENSCQlfS0JEKCAweDAwMDAgKQorI2RlZmluZSBfS0JEU1RBVAlfS0JEKCAweDA0MDAgKQorI2RlZmluZSBfS0JEREFUQQlfS0JEKCAweDA4MDAgKQorI2RlZmluZSBfS0JEQ0xLRElWCV9LQkQoIDB4MGMwMCApCisjZGVmaW5lIF9LQkRQUkVDTlQJX0tCRCggMHgxMDAwICkKKyNkZWZpbmUJX0tCRFRFU1QxCV9LQkQoIDB4MjAwMCApCisjZGVmaW5lIF9LQkRURVNUMglfS0JEKCAweDI0MDAgKQorI2RlZmluZSBfS0JEVEVTVDMJX0tCRCggMHgyODAwICkKKyNkZWZpbmUgX0tCRFRFU1Q0CV9LQkQoIDB4MmMwMCApCisjZGVmaW5lIF9NU0VDUgkJX01TRSggMHgwMDAwICkKKyNkZWZpbmUgX01TRVNUQVQJX01TRSggMHgwNDAwICkKKyNkZWZpbmUgX01TRURBVEEJX01TRSggMHgwODAwICkKKyNkZWZpbmUgX01TRUNMS0RJVglfTVNFKCAweDBjMDAgKQorI2RlZmluZSBfTVNFUFJFQ05UCV9NU0UoIDB4MTAwMCApCisjZGVmaW5lCV9NU0VURVNUMQlfTVNFKCAweDIwMDAgKQorI2RlZmluZSBfTVNFVEVTVDIJX01TRSggMHgyNDAwICkKKyNkZWZpbmUgX01TRVRFU1QzCV9NU0UoIDB4MjgwMCApCisjZGVmaW5lIF9NU0VURVNUNAlfTVNFKCAweDJjMDAgKQorCisjaWYgKCBMQU5HVUFHRSA9PSBDICkKKworI2RlZmluZSBLQkRDUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0tCRENSKSkpCisjZGVmaW5lIEtCRFNUQVQJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9LQkRTVEFUKSkpCisjZGVmaW5lIEtCRERBVEEJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9LQkREQVRBKSkpCisjZGVmaW5lIEtCRENMS0RJViAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9LQkRDTEtESVYpKSkKKyNkZWZpbmUgS0JEUFJFQ05UICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0tCRFBSRUNOVCkpKQorI2RlZmluZSBLQkRURVNUMSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfS0JEVEVTVDEpKSkKKyNkZWZpbmUgS0JEVEVTVDIgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX0tCRFRFU1QyKSkpCisjZGVmaW5lIEtCRFRFU1QzICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9LQkRURVNUMykpKQorI2RlZmluZSBLQkRURVNUNCAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfS0JEVEVTVDQpKSkKKyNkZWZpbmUgTVNFQ1IJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9NU0VDUikpKQorI2RlZmluZSBNU0VTVEFUCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfTVNFU1RBVCkpKQorI2RlZmluZSBNU0VEQVRBCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfTVNFREFUQSkpKQorI2RlZmluZSBNU0VDTEtESVYgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfTVNFQ0xLRElWKSkpCisjZGVmaW5lIE1TRVBSRUNOVCAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9NU0VQUkVDTlQpKSkKKyNkZWZpbmUgTVNFVEVTVDEgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX01TRVRFU1QxKSkpCisjZGVmaW5lIE1TRVRFU1QyICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9NU0VURVNUMikpKQorI2RlZmluZSBNU0VURVNUMyAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfTVNFVEVTVDMpKSkKKyNkZWZpbmUgTVNFVEVTVDQgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX01TRVRFU1Q0KSkpCisKKworI2RlZmluZSBLQkRDUl9FTkEJCSAweDA4CisjZGVmaW5lIEtCRENSX0ZLRAkJIDB4MDIKKyNkZWZpbmUgS0JEQ1JfRktDCQkgMHgwMQorCisjZGVmaW5lIEtCRFNUQVRfVFhFCQkgMHg4MAorI2RlZmluZSBLQkRTVEFUX1RYQgkJIDB4NDAKKyNkZWZpbmUgS0JEU1RBVF9SWEYJCSAweDIwCisjZGVmaW5lIEtCRFNUQVRfUlhCCQkgMHgxMAorI2RlZmluZSBLQkRTVEFUX0VOQQkJIDB4MDgKKyNkZWZpbmUgS0JEU1RBVF9SWFAJCSAweDA0CisjZGVmaW5lIEtCRFNUQVRfS0JECQkgMHgwMgorI2RlZmluZSBLQkRTVEFUX0tCQwkJIDB4MDEKKworI2RlZmluZSBLQkRDTEtESVZfRGl2VmFsCSBGbGQoNCwwKQorCisjZGVmaW5lIE1TRUNSX0VOQQkJIDB4MDgKKyNkZWZpbmUgTVNFQ1JfRktECQkgMHgwMgorI2RlZmluZSBNU0VDUl9GS0MJCSAweDAxCisKKyNkZWZpbmUgTVNFU1RBVF9UWEUJCSAweDgwCisjZGVmaW5lIE1TRVNUQVRfVFhCCQkgMHg0MAorI2RlZmluZSBNU0VTVEFUX1JYRgkJIDB4MjAKKyNkZWZpbmUgTVNFU1RBVF9SWEIJCSAweDEwCisjZGVmaW5lIE1TRVNUQVRfRU5BCQkgMHgwOAorI2RlZmluZSBNU0VTVEFUX1JYUAkJIDB4MDQJCisjZGVmaW5lIE1TRVNUQVRfTVNECQkgMHgwMgorI2RlZmluZSBNU0VTVEFUX01TQwkJIDB4MDEKKworI2RlZmluZSBNU0VDTEtESVZfRGl2VmFsCSBGbGQoNCwwKQorCisjZGVmaW5lIEtCRFRFU1QxX0NECQkgMHg4MAorI2RlZmluZSBLQkRURVNUMV9SQzEJCSAweDQwCisjZGVmaW5lIEtCRFRFU1QxX01DCQkgMHgyMAorI2RlZmluZSBLQkRURVNUMV9DCQkgRmxkKDIsMykKKyNkZWZpbmUgS0JEVEVTVDFfVDIJCSAweDQwCisjZGVmaW5lIEtCRFRFU1QxX1QxCQkgMHgyMAorI2RlZmluZSBLQkRURVNUMV9UMAkJIDB4MTAKKyNkZWZpbmUgS0JEVEVTVDJfVElDQm5SRVMJIDB4MDgKKyNkZWZpbmUgS0JEVEVTVDJfUktDCQkgMHgwNAorI2RlZmluZSBLQkRURVNUMl9SS0QJCSAweDAyCisjZGVmaW5lIEtCRFRFU1QyX1NFTAkJIDB4MDEKKyNkZWZpbmUgS0JEVEVTVDNfbXNfMTYJCSAweDgwCisjZGVmaW5lIEtCRFRFU1QzX3VzXzY0CQkgMHg0MAorI2RlZmluZSBLQkRURVNUM191c18xNgkJIDB4MjAKKyNkZWZpbmUgS0JEVEVTVDNfRElWOAkJIDB4MTAKKyNkZWZpbmUgS0JEVEVTVDNfREluCQkgMHgwOAorI2RlZmluZSBLQkRURVNUM19DSW4JCSAweDA0CisjZGVmaW5lIEtCRFRFU1QzX0tECQkgMHgwMgorI2RlZmluZSBLQkRURVNUM19LQwkJIDB4MDEKKyNkZWZpbmUgS0JEVEVTVDRfQkMxMgkJIDB4ODAKKyNkZWZpbmUgS0JEVEVTVDRfQkMxMQkJIDB4NDAKKyNkZWZpbmUgS0JEVEVTVDRfVFJFUwkJIDB4MjAKKyNkZWZpbmUgS0JEVEVTVDRfQ0xLT0UJCSAweDEwCisjZGVmaW5lIEtCRFRFU1Q0X0NSRVMJCSAweDA4CisjZGVmaW5lIEtCRFRFU1Q0X1JYQgkJIDB4MDQKKyNkZWZpbmUgS0JEVEVTVDRfVFhCCQkgMHgwMgorI2RlZmluZSBLQkRURVNUNF9TUlgJCSAweDAxCisKKyNkZWZpbmUgTVNFVEVTVDFfQ0QJCSAweDgwCisjZGVmaW5lIE1TRVRFU1QxX1JDMQkJIDB4NDAKKyNkZWZpbmUgTVNFVEVTVDFfTUMJCSAweDIwCisjZGVmaW5lIE1TRVRFU1QxX0MJCSBGbGQoMiwzKQorI2RlZmluZSBNU0VURVNUMV9UMgkJIDB4NDAKKyNkZWZpbmUgTVNFVEVTVDFfVDEJCSAweDIwCisjZGVmaW5lIE1TRVRFU1QxX1QwCQkgMHgxMAorI2RlZmluZSBNU0VURVNUMl9USUNCblJFUwkgMHgwOAorI2RlZmluZSBNU0VURVNUMl9SS0MJCSAweDA0CisjZGVmaW5lIE1TRVRFU1QyX1JLRAkJIDB4MDIKKyNkZWZpbmUgTVNFVEVTVDJfU0VMCQkgMHgwMQorI2RlZmluZSBNU0VURVNUM19tc18xNgkJIDB4ODAKKyNkZWZpbmUgTVNFVEVTVDNfdXNfNjQJCSAweDQwCisjZGVmaW5lIE1TRVRFU1QzX3VzXzE2CQkgMHgyMAorI2RlZmluZSBNU0VURVNUM19ESVY4CQkgMHgxMAorI2RlZmluZSBNU0VURVNUM19ESW4JCSAweDA4CisjZGVmaW5lIE1TRVRFU1QzX0NJbgkJIDB4MDQKKyNkZWZpbmUgTVNFVEVTVDNfS0QJCSAweDAyCisjZGVmaW5lIE1TRVRFU1QzX0tDCQkgMHgwMQorI2RlZmluZSBNU0VURVNUNF9CQzEyCQkgMHg4MAorI2RlZmluZSBNU0VURVNUNF9CQzExCQkgMHg0MAorI2RlZmluZSBNU0VURVNUNF9UUkVTCQkgMHgyMAorI2RlZmluZSBNU0VURVNUNF9DTEtPRQkJIDB4MTAKKyNkZWZpbmUgTVNFVEVTVDRfQ1JFUwkJIDB4MDgKKyNkZWZpbmUgTVNFVEVTVDRfUlhCCQkgMHgwNAorI2RlZmluZSBNU0VURVNUNF9UWEIJCSAweDAyCisjZGVmaW5lIE1TRVRFU1Q0X1NSWAkJIDB4MDEKKworI2VuZGlmICAvKiBMQU5HVUFHRSA9PSBDICovCisKKworLyoKKyAqIEdlbmVyYWwtUHVycG9zZSBJL08gSW50ZXJmYWNlCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBQQURXUglQb3J0IEEgRGF0YSBXcml0ZSBSZWdpc3RlcgorICogICAgUEJEV1IJUG9ydCBCIERhdGEgV3JpdGUgUmVnaXN0ZXIKKyAqICAgIFBBRFJSCVBvcnQgQSBEYXRhIFJlYWQgUmVnaXN0ZXIKKyAqICAgIFBCRFJSCVBvcnQgQiBEYXRhIFJlYWQgUmVnaXN0ZXIKKyAqICAgIFBBRERSCVBvcnQgQSBEYXRhIERpcmVjdGlvbiBSZWdpc3RlcgorICogICAgUEJERFIJUG9ydCBCIERhdGEgRGlyZWN0aW9uIFJlZ2lzdGVyCisgKiAgICBQQVNTUglQb3J0IEEgU2xlZXAgU3RhdGUgUmVnaXN0ZXIKKyAqICAgIFBCU1NSCVBvcnQgQiBTbGVlcCBTdGF0ZSBSZWdpc3RlcgorICoKKyAqLworCisjZGVmaW5lIF9QSU8oIHggKSAgICAgIF9TQTExMDEoICggeCApICsgX19HUElPX0lOVEVSRkFDRSApCisKKyNkZWZpbmUgX1BBRFdSCSAgICAgICBfUElPKCAweDAwMDAgKQorI2RlZmluZSBfUEJEV1IJICAgICAgIF9QSU8oIDB4MDQwMCApCisjZGVmaW5lIF9QQURSUgkgICAgICAgX1BJTyggMHgwMDAwICkKKyNkZWZpbmUgX1BCRFJSCSAgICAgICBfUElPKCAweDA0MDAgKQorI2RlZmluZSBfUEFERFIJICAgICAgIF9QSU8oIDB4MDgwMCApCisjZGVmaW5lIF9QQkREUgkgICAgICAgX1BJTyggMHgwYzAwICkKKyNkZWZpbmUgX1BBU1NSCSAgICAgICBfUElPKCAweDEwMDAgKQorI2RlZmluZSBfUEJTU1IJICAgICAgIF9QSU8oIDB4MTQwMCApCisKKworI2lmICggTEFOR1VBR0UgPT0gQyApCisKKworI2RlZmluZSBQQURXUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BBRFdSKSkpCisjZGVmaW5lIFBCRFdSCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUEJEV1IpKSkKKyNkZWZpbmUgUEFEUlIJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9QQURSUikpKQorI2RlZmluZSBQQkRSUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BCRFJSKSkpCisjZGVmaW5lIFBBRERSCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUEFERFIpKSkKKyNkZWZpbmUgUEJERFIJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9QQkREUikpKQorI2RlZmluZSBQQVNTUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BBU1NSKSkpCisjZGVmaW5lIFBCU1NSCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUEJTU1IpKSkKKworI2VuZGlmCisKKworCisvKgorICogS2V5cGFkIEludGVyZmFjZQorICoKKyAqIFJlZ2lzdGVycworICogICAgUFhEV1IKKyAqICAgIFBYRFJSCisgKiAgICBQWURXUgorICogICAgUFlEUlIKKyAqCisgKi8KKworI2RlZmluZSBfS0VZUEFEKCB4ICkJX1NBMTEwMSggKCB4ICkgKyBfX0tFWVBBRF9JTlRFUkZBQ0UgKSAKKworI2RlZmluZSBfUFhEV1IJICAgX0tFWVBBRCggMHgwMDAwICkKKyNkZWZpbmUgX1BYRFJSCSAgIF9LRVlQQUQoIDB4MDAwMCApCisjZGVmaW5lIF9QWURXUgkgICBfS0VZUEFEKCAweDA0MDAgKQorI2RlZmluZSBfUFlEUlIJICAgX0tFWVBBRCggMHgwNDAwICkKKworI2lmICggTEFOR1VBR0UgPT0gQyApCisKKworI2RlZmluZSBQWERXUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BYRFdSKSkpCisjZGVmaW5lIFBYRFJSCSAgICAoKigodm9sYXRpbGUgV29yZCAqKSBTQTExMDFfcDJ2IChfUFhEUlIpKSkKKyNkZWZpbmUgUFlEV1IJICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9QWURXUikpKQorI2RlZmluZSBQWURSUgkgICAgKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BZRFJSKSkpCisKKyNlbmRpZgorCisKKworLyoKKyAqIFBDTUNJQSBJbnRlcmZhY2UKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFBDU1IJU3RhdHVzIFJlZ2lzdGVyCisgKiAgICBQQ0NSCUNvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIFBDU1NSCVNsZWVwIFN0YXRlIFJlZ2lzdGVyCisgKgorICovCisKKyNkZWZpbmUgX0NBUkQoIHggKQlfU0ExMTAxKCAoIHggKSArIF9fUENNQ0lBX0lOVEVSRkFDRSApCisKKyNkZWZpbmUgX1BDU1IJICAgX0NBUkQoIDB4MDAwMCApCisjZGVmaW5lIF9QQ0NSCSAgIF9DQVJEKCAweDA0MDAgKQorI2RlZmluZSBfUENTU1IJICAgX0NBUkQoIDB4MDgwMCApCisKKyNpZiAoIExBTkdVQUdFID09IEMgKQorI2RlZmluZSBQQ1NSICAgICgqKCh2b2xhdGlsZSBXb3JkICopIFNBMTEwMV9wMnYgKF9QQ1NSKSkpCisjZGVmaW5lIFBDQ1IJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BDQ1IpKSkKKyNkZWZpbmUgUENTU1IJKCooKHZvbGF0aWxlIFdvcmQgKikgU0ExMTAxX3AydiAoX1BDU1NSKSkpCisKKyNkZWZpbmUgUENTUl9TMF9yZWFkeQkJMHgwMDAxCisjZGVmaW5lIFBDU1JfUzFfcmVhZHkJCTB4MDAwMgorI2RlZmluZSBQQ1NSX1MwX2RldGVjdGVkCTB4MDAwNAorI2RlZmluZSBQQ1NSX1MxX2RldGVjdGVkCTB4MDAwOAorI2RlZmluZSBQQ1NSX1MwX1ZTMQkJMHgwMDEwCisjZGVmaW5lIFBDU1JfUzBfVlMyCQkweDAwMjAKKyNkZWZpbmUgUENTUl9TMV9WUzEJCTB4MDA0MAorI2RlZmluZSBQQ1NSX1MxX1ZTMgkJMHgwMDgwCisjZGVmaW5lIFBDU1JfUzBfV1AJCTB4MDEwMAorI2RlZmluZSBQQ1NSX1MxX1dQCQkweDAyMDAKKyNkZWZpbmUgUENTUl9TMF9CVkQxX25TVFNDSEcJMHgwNDAwCisjZGVmaW5lIFBDU1JfUzBfQlZEMl9uU1BLUgkweDA4MDAKKyNkZWZpbmUgUENTUl9TMV9CVkQxX25TVFNDSEcJMHgxMDAwCisjZGVmaW5lIFBDU1JfUzFfQlZEMl9uU1BLUgkweDIwMDAKKworI2RlZmluZSBQQ0NSX1MwX1ZQUDAJCTB4MDAwMQorI2RlZmluZSBQQ0NSX1MwX1ZQUDEJCTB4MDAwMgorI2RlZmluZSBQQ0NSX1MwX1ZDQzAJCTB4MDAwNAorI2RlZmluZSBQQ0NSX1MwX1ZDQzEJCTB4MDAwOAorI2RlZmluZSBQQ0NSX1MxX1ZQUDAJCTB4MDAxMAorI2RlZmluZSBQQ0NSX1MxX1ZQUDEJCTB4MDAyMAorI2RlZmluZSBQQ0NSX1MxX1ZDQzAJCTB4MDA0MAorI2RlZmluZSBQQ0NSX1MxX1ZDQzEJCTB4MDA4MAorI2RlZmluZSBQQ0NSX1MwX3Jlc2V0CQkweDAxMDAKKyNkZWZpbmUgUENDUl9TMV9yZXNldAkJMHgwMjAwCisjZGVmaW5lIFBDQ1JfUzBfZmxvYXQJCTB4MDQwMAorI2RlZmluZSBQQ0NSX1MxX2Zsb2F0CQkweDA4MDAKKworI2RlZmluZSBQQ1NTUl9TMF9WQ0MwCQkweDAwMDEKKyNkZWZpbmUgUENTU1JfUzBfVkNDMQkJMHgwMDAyCisjZGVmaW5lIFBDU1NSX1MwX1ZQUDAJCTB4MDAwNAorI2RlZmluZSBQQ1NTUl9TMF9WUFAxCQkweDAwMDgKKyNkZWZpbmUgUENTU1JfUzBfY29udHJvbAkweDAwMTAKKyNkZWZpbmUgUENTU1JfUzFfVkNDMAkJMHgwMDIwCisjZGVmaW5lIFBDU1NSX1MxX1ZDQzEJCTB4MDA0MAorI2RlZmluZSBQQ1NTUl9TMV9WUFAwCQkweDAwODAKKyNkZWZpbmUgUENTU1JfUzFfVlBQMQkJMHgwMTAwCisjZGVmaW5lIFBDU1NSX1MxX2NvbnRyb2wJMHgwMjAwCisKKyNlbmRpZgorCisjdW5kZWYgQworI3VuZGVmIEFzc2VtYmx5CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvU0EtMTExMS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL1NBLTExMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzhmNjA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL1NBLTExMTEuaApAQCAtMCwwICsxLDUgQEAKKy8qCisgKiBNb3ZlZCB0byBuZXcgbG9jYXRpb24KKyAqLworI3dhcm5pbmcgdXNpbmcgb2xkIFNBLTExMTEuaCAtIHVwZGF0ZSB0byA8YXNtL2hhcmR3YXJlL3NhMTExMS5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9zYTExMTEuaD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9hc3NhYmV0LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvYXNzYWJldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNTliMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvYXNzYWJldC5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2Fzc2FiZXQuaAorICoKKyAqIENyZWF0ZWQgMjAwMC8wNi8wNSBieSBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBzcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgQXNzYWJldAorICogT25seSBpbmNsdWRlIHRoaXMgZmlsZSBmcm9tIFNBMTEwMC1zcGVjaWZpYyBmaWxlcy4KKyAqCisgKiAyMDAwLzA1LzIzIEpvaG4gRG9yc2V5IDxqb2huK0Bjcy5jbXUuZWR1PgorICogICAgICBEZWZpbml0aW9ucyBmb3IgTmVwb25zZXQgYWRkZWQuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9BU1NBQkVUX0gKKyNkZWZpbmUgX19BU01fQVJDSF9BU1NBQkVUX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKiBTeXN0ZW0gQ29uZmlndXJhdGlvbiBSZWdpc3RlciBmbGFncyAqLworCisjZGVmaW5lIEFTU0FCRVRfU0NSX1NEUkFNX0xPVwkoMTw8MikJLyogU0RSQU0gc2l6ZSAobG93IGJpdCkgKi8KKyNkZWZpbmUgQVNTQUJFVF9TQ1JfU0RSQU1fSElHSAkoMTw8MykJLyogU0RSQU0gc2l6ZSAoaGlnaCBiaXQpICovCisjZGVmaW5lIEFTU0FCRVRfU0NSX0ZMQVNIX0xPVwkoMTw8NCkJLyogRmxhc2ggc2l6ZSAobG93IGJpdCkgKi8KKyNkZWZpbmUgQVNTQUJFVF9TQ1JfRkxBU0hfSElHSAkoMTw8NSkJLyogRmxhc2ggc2l6ZSAoaGlnaCBiaXQpICovCisjZGVmaW5lIEFTU0FCRVRfU0NSX0dGWAkJKDE8PDgpCS8qIEdyYXBoaWNzIEFjY2VsZXJhdG9yICgwID0gcHJlc2VudCkgKi8KKyNkZWZpbmUgQVNTQUJFVF9TQ1JfU0ExMTExCSgxPDw5KQkvKiBOZXBvbnNldCAoMCA9IHByZXNlbnQpICovCisKKyNkZWZpbmUgQVNTQUJFVF9TQ1JfSU5JVAktMQorCitleHRlcm4gdW5zaWduZWQgbG9uZyBTQ1JfdmFsdWU7CisKKyNpZmRlZiBDT05GSUdfQVNTQUJFVF9ORVBPTlNFVAorI2RlZmluZSBtYWNoaW5lX2hhc19uZXBvbnNldCgpICAoKFNDUl92YWx1ZSAmIEFTU0FCRVRfU0NSX1NBMTExMSkgPT0gMCkKKyNlbHNlCisjZGVmaW5lIG1hY2hpbmVfaGFzX25lcG9uc2V0KCkJKDApCisjZW5kaWYKKworLyogQm9hcmQgQ29udHJvbCBSZWdpc3RlciAqLworCisjZGVmaW5lIEFTU0FCRVRfQkNSX0JBU0UgIDB4ZjEwMDAwMDAKKyNkZWZpbmUgQVNTQUJFVF9CQ1IgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKEFTU0FCRVRfQkNSX0JBU0UpKQorCisjZGVmaW5lIEFTU0FCRVRfQkNSX0NGX1BXUgkoMTw8MCkJLyogQ29tcGFjdCBGbGFzaCBQb3dlciAoMSA9IDMuM3YsIDAgPSBvZmYpICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0NGX1JTVAkoMTw8MSkJLyogQ29tcGFjdCBGbGFzaCBSZXNldCAoMSA9IHBvd2VyIHVwIHJlc2V0KSAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9HRlhfUlNUCSgxPDwxKQkvKiBHcmFwaGljcyBBY2NlbGVyYXRvciBSZXNldCAoMCA9IGhvbGQgcmVzZXQpICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0NPREVDX1JTVAkoMTw8MikJLyogMCA9IEhvbGRzIFVDQjEzMDAsIEFESTcxNzEsIGFuZCBVREExMzQxIGluIHJlc2V0ICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0lSREFfRlNFTAkoMTw8MykJLyogSVJEQSBGcmVxdWVuY3kgc2VsZWN0ICgwID0gU0lSLCAxID0gTUlSLyBGSVIpICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0lSREFfTUQwCSgxPDw0KQkvKiBSYW5nZS9Qb3dlciBzZWxlY3QgKi8KKyNkZWZpbmUgQVNTQUJFVF9CQ1JfSVJEQV9NRDEJKDE8PDUpCS8qIFJhbmdlL1Bvd2VyIHNlbGVjdCAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9TVEVSRU9fTEIJKDE8PDYpCS8qIFN0ZXJlbyBMb29wYmFjayAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9DRl9CVVNfT0ZGCSgxPDw3KQkvKiBDb21wYWN0IEZsYXNoIGJ1cyAoMCA9IG9uLCAxID0gb2ZmIChmbG9hdCkpICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0FVRElPX09OCSgxPDw4KQkvKiBBdWRpbyBwb3dlciBvbiAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9MSUdIVF9PTgkoMTw8OSkJLyogQmFja2xpZ2h0ICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0xDRF8xMlJHQgkoMTw8MTApCS8qIDAgPSAxNlJHQiwgMSA9IDEyUkdCICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0xDRF9PTgkoMTw8MTEpCS8qIExDRCBwb3dlciBvbiAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9SUzIzMkVOCSgxPDwxMikJLyogUlMyMzIgdHJhbnNjZWl2ZXIgZW5hYmxlICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0xFRF9SRUQJKDE8PDEzKQkvKiBEOSAoMCA9IG9uLCAxID0gb2ZmKSAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9MRURfR1JFRU4JKDE8PDE0KQkvKiBEOCAoMCA9IG9uLCAxID0gb2ZmKSAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9WSUJfT04JKDE8PDE1KQkvKiBWaWJyYXRpb24gbW90b3IgKHF1aWV0IGFsZXJ0KSAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9DT01fRFRSCSgxPDwxNikJLyogQ09NcG9ydCBEYXRhIFRlcm1pbmFsIFJlYWR5ICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX0NPTV9SVFMJKDE8PDE3KQkvKiBDT01wb3J0IFJlcXVlc3QgVG8gU2VuZCAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9SQURfV1UJKDE8PDE4KQkvKiBSYWRpbyB3YWtlIHVwIGludGVycnVwdCAqLworI2RlZmluZSBBU1NBQkVUX0JDUl9TTUJfRU4JKDE8PDE5KQkvKiBTeXN0ZW0gbWFuYWdlbWVudCBidXMgZW5hYmxlICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX1RWX0lSX0RFQwkoMTw8MjApCS8qIFRWIElSIERlY29kZSBFbmFibGUgKG5vdCBpbXBsZW1lbnRlZCkgKi8KKyNkZWZpbmUgQVNTQUJFVF9CQ1JfUU1VVEUJKDE8PDIxKQkvKiBRdWljayBNdXRlICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX1JBRF9PTgkoMTw8MjIpCS8qIFJhZGlvIFBvd2VyIE9uICovCisjZGVmaW5lIEFTU0FCRVRfQkNSX1NQS19PRkYJKDE8PDIzKQkvKiAxID0gU3BlYWtlciBhbXBsaWZpZXIgcG93ZXIgb2ZmICovCisKKyNpZmRlZiBDT05GSUdfU0ExMTAwX0FTU0FCRVQKK2V4dGVybiB2b2lkIEFTU0FCRVRfQkNSX2Zyb2IodW5zaWduZWQgaW50IG1hc2ssIHVuc2lnbmVkIGludCBzZXQpOworI2Vsc2UKKyNkZWZpbmUgQVNTQUJFVF9CQ1JfZnJvYih4LHkpCWRvIHsgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0FCRVRfQkNSX3NldCh4KQlBU1NBQkVUX0JDUl9mcm9iKCh4KSwgKHgpKQorI2RlZmluZSBBU1NBQkVUX0JDUl9jbGVhcih4KQlBU1NBQkVUX0JDUl9mcm9iKCh4KSwgMCkKKworI2RlZmluZSBBU1NBQkVUX0JTUl9CQVNFCTB4ZjEwMDAwMDAKKyNkZWZpbmUgQVNTQUJFVF9CU1IgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50KikoQVNTQUJFVF9CU1JfQkFTRSkpCisKKyNkZWZpbmUgQVNTQUJFVF9CU1JfUlMyMzJfVkFMSUQJKDEgPDwgMjQpCisjZGVmaW5lIEFTU0FCRVRfQlNSX0NPTV9EQ0QJKDEgPDwgMjUpCisjZGVmaW5lIEFTU0FCRVRfQlNSX0NPTV9DVFMJKDEgPDwgMjYpCisjZGVmaW5lIEFTU0FCRVRfQlNSX0NPTV9EU1IJKDEgPDwgMjcpCisjZGVmaW5lIEFTU0FCRVRfQlNSX1JBRF9DVFMJKDEgPDwgMjgpCisjZGVmaW5lIEFTU0FCRVRfQlNSX1JBRF9EU1IJKDEgPDwgMjkpCisjZGVmaW5lIEFTU0FCRVRfQlNSX1JBRF9EQ0QJKDEgPDwgMzApCisjZGVmaW5lIEFTU0FCRVRfQlNSX1JBRF9SSQkoMSA8PCAzMSkKKworCisvKiBHUElPcyBmb3Igd2hpY2ggdGhlIGdlbmVyaWMgZGVmaW5pdGlvbiBkb2Vzbid0IHNheSBtdWNoICovCisjZGVmaW5lIEFTU0FCRVRfR1BJT19SQURJT19JUlEJCUdQSU9fR1BJTyAoMTQpCS8qIFJhZGlvIGludGVycnVwdCByZXF1ZXN0ICAqLworI2RlZmluZSBBU1NBQkVUX0dQSU9fUFNfTU9ERV9TWU5DCUdQSU9fR1BJTyAoMTYpCS8qIFBvd2VyIHN1cHBseSBtb2RlL3N5bmMgICAqLworI2RlZmluZSBBU1NBQkVUX0dQSU9fU1RFUkVPXzY0RlNfQ0xLCUdQSU9fR1BJTyAoMTkpCS8qIFNTUCBVREExMzQxIGNsb2NrIGlucHV0ICAqLworI2RlZmluZSBBU1NBQkVUX0dQSU9fQ0ZfSVJRCQlHUElPX0dQSU8gKDIxKQkvKiBDRiBJUlEgICAqLworI2RlZmluZSBBU1NBQkVUX0dQSU9fQ0ZfQ0QJCUdQSU9fR1BJTyAoMjIpCS8qIENGIENEICovCisjZGVmaW5lIEFTU0FCRVRfR1BJT19DRl9CVkQyCQlHUElPX0dQSU8gKDI0KQkvKiBDRiBCVkQgKi8KKyNkZWZpbmUgQVNTQUJFVF9HUElPX0dGWF9JUlEJCUdQSU9fR1BJTyAoMjQpCS8qIEdyYXBoaWNzIElSUSAqLworI2RlZmluZSBBU1NBQkVUX0dQSU9fQ0ZfQlZEMQkJR1BJT19HUElPICgyNSkJLyogQ0YgQlZEICovCisjZGVmaW5lIEFTU0FCRVRfR1BJT19CQVRUX0xPVwkJR1BJT19HUElPICgyNikJLyogTG93IGJhdHRlcnkgKi8KKyNkZWZpbmUgQVNTQUJFVF9HUElPX1JDTEsJCUdQSU9fR1BJTyAoMjYpCS8qIENDTEsvMiAgKi8KKworI2RlZmluZSBBU1NBQkVUX0lSUV9HUElPX0NGX0lSUQkJSVJRX0dQSU8yMQorI2RlZmluZSBBU1NBQkVUX0lSUV9HUElPX0NGX0NECQlJUlFfR1BJTzIyCisjZGVmaW5lIEFTU0FCRVRfSVJRX0dQSU9fQ0ZfQlZEMglJUlFfR1BJTzI0CisjZGVmaW5lIEFTU0FCRVRfSVJRX0dQSU9fQ0ZfQlZEMQlJUlFfR1BJTzI1CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2JhZGdlNC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2JhZGdlNC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkN2E2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvYmFkZ2U0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9iYWRnZTQuaAorICoKKyAqICAgVGltIENvbm5vcnMgPGNvbm5vcnNAaHBsLmhwLmNvbT4KKyAqICAgQ2hyaXN0b3BoZXIgSG9vdmVyIDxjaEBocGwuaHAuY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZXJyb3IgImluY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPiBpbnN0ZWFkIgorI2VuZGlmCisKKyNkZWZpbmUgQkFER0U0X1NBMTExMV9CQVNFCQkoMHg0ODAwMDAwMCkKKworLyogR1BJT3Mgb24gdGhlIEJhZGdlUEFEIDQgKi8KKyNkZWZpbmUgQkFER0U0X0dQSU9fSU5UXzExMTEJCUdQSU9fR1BJTzAgICAvKiBTQS0xMTExIElSUSAqLworCisjZGVmaW5lIEJBREdFNF9HUElPX0lOVF9WSUQJCUdQSU9fR1BJTzEgICAvKiBWaWRlbyBleHBhbnNpb24gKi8KKyNkZWZpbmUgQkFER0U0X0dQSU9fTEdQMgkJR1BJT19HUElPMiAgIC8qIEdQSU9fTEREOCAqLworI2RlZmluZSBCQURHRTRfR1BJT19MR1AzCQlHUElPX0dQSU8zICAgLyogR1BJT19MREQ5ICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDQJCUdQSU9fR1BJTzQgICAvKiBHUElPX0xERDEwICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDUJCUdQSU9fR1BJTzUgICAvKiBHUElPX0xERDExICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDYJCUdQSU9fR1BJTzYgICAvKiBHUElPX0xERDEyICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDcJCUdQSU9fR1BJTzcgICAvKiBHUElPX0xERDEzICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDgJCUdQSU9fR1BJTzggICAvKiBHUElPX0xERDE0ICovCisjZGVmaW5lIEJBREdFNF9HUElPX0xHUDkJCUdQSU9fR1BJTzkgICAvKiBHUElPX0xERDE1ICovCisjZGVmaW5lIEJBREdFNF9HUElPX0dQQV9WSUQJCUdQSU9fR1BJTzEwICAvKiBWaWRlbyBleHBhbnNpb24gKi8KKyNkZWZpbmUgQkFER0U0X0dQSU9fR1BCX1ZJRAkJR1BJT19HUElPMTEgIC8qIFZpZGVvIGV4cGFuc2lvbiAqLworI2RlZmluZSBCQURHRTRfR1BJT19HUENfVklECQlHUElPX0dQSU8xMiAgLyogVmlkZW8gZXhwYW5zaW9uICovCisKKyNkZWZpbmUgQkFER0U0X0dQSU9fVUFSVF9IUzEJCUdQSU9fR1BJTzEzCisjZGVmaW5lIEJBREdFNF9HUElPX1VBUlRfSFMyCQlHUElPX0dQSU8xNAorCisjZGVmaW5lIEJBREdFNF9HUElPX01VWFNFTDAJCUdQSU9fR1BJTzE1CisjZGVmaW5lIEJBREdFNF9HUElPX1RFU1RQVF9KNwkJR1BJT19HUElPMTYKKworI2RlZmluZSBCQURHRTRfR1BJT19TRFNEQQkJR1BJT19HUElPMTcgIC8qIFNEUkFNIFNQRCBEYXRhICovCisjZGVmaW5lIEJBREdFNF9HUElPX1NEU0NMCQlHUElPX0dQSU8xOCAgLyogU0RSQU0gU1BEIENsb2NrICovCisjZGVmaW5lIEJBREdFNF9HUElPX1NEVFlQMAkJR1BJT19HUElPMTkgIC8qIFNEUkFNIFR5cGUgQ29udHJvbCAqLworI2RlZmluZSBCQURHRTRfR1BJT19TRFRZUDEJCUdQSU9fR1BJTzIwICAvKiBTRFJBTSBUeXBlIENvbnRyb2wgKi8KKworI2RlZmluZSBCQURHRTRfR1BJT19CR05UXzExMTEJCUdQSU9fR1BJTzIxICAvKiBHUElPX01CR05UICovCisjZGVmaW5lIEJBREdFNF9HUElPX0JSRVFfMTExMQkJR1BJT19HUElPMjIgIC8qIEdQSU9fVFJFUUEgKi8KKworI2RlZmluZSBCQURHRTRfR1BJT19URVNUUFRfSjYJCUdQSU9fR1BJTzIzCisKKyNkZWZpbmUgQkFER0U0X0dQSU9fUENNRU41VgkJR1BJT19HUElPMjQgIC8qIDVWIHBvd2VyICovCisKKyNkZWZpbmUgQkFER0U0X0dQSU9fU0ExMTExX05SU1QJCUdQSU9fR1BJTzI1ICAvKiBTQS0xMTExIG5SRVNFVCAqLworCisjZGVmaW5lIEJBREdFNF9HUElPX1RFU1RQVF9KNQkJR1BJT19HUElPMjYKKworI2RlZmluZSBCQURHRTRfR1BJT19DTEtfMTExMQkJR1BJT19HUElPMjcgIC8qIEdQSU9fMzJfNzY4a0h6ICovCisKKy8qIEludGVycnVwdHMgb24gdGhlIEJhZGdlUEFEIDQgKi8KKyNkZWZpbmUgQkFER0U0X0lSUV9HUElPX1NBMTExMQkJSVJRX0dQSU8wICAgIC8qIFNBLTExMTEgaW50ZXJydXB0ICovCisKKworLyogUENNNUVOViBVc2FnZSB0cmFja2luZyAqLworCisjZGVmaW5lIEJBREdFNF81Vl9QQ01DSUFfU09DSzAJCSgxPDwwKQorI2RlZmluZSBCQURHRTRfNVZfUENNQ0lBX1NPQ0sxCQkoMTw8MSkKKyNkZWZpbmUgQkFER0U0XzVWX1BDTUNJQV9TT0NLKG4pCSgxPDwobikpCisjZGVmaW5lIEJBREdFNF81Vl9VU0IJCQkoMTw8MikKKyNkZWZpbmUgQkFER0U0XzVWX0lOSVRJQUxMWQkJKDE8PDMpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCBiYWRnZTRfc2V0XzVWKHVuc2lnbmVkIHN1YnN5c3RlbSwgaW50IG9uKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2JpdGZpZWxkLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvYml0ZmllbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWYwZTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2JpdGZpZWxkLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKglGSUxFICAgIAliaXRmaWVsZC5oCisgKgorICoJVmVyc2lvbiAJMS4xCisgKglBdXRob3IgIAlDb3B5cmlnaHQgKGMpIE1hcmMgQS4gVmlyZWRheiwgMTk5OAorICoJICAgICAgICAJREVDIFdlc3Rlcm4gUmVzZWFyY2ggTGFib3JhdG9yeSwgUGFsbyBBbHRvLCBDQQorICoJRGF0ZSAgICAJQXByaWwgMTk5OCAoQXByaWwgMTk5NykKKyAqCVN5c3RlbSAgCUFkdmFuY2VkIFJJU0MgTWFjaGluZSAoQVJNKQorICoJTGFuZ3VhZ2UJQyBvciBBUk0gQXNzZW1ibHkKKyAqCVB1cnBvc2UgCURlZmluaXRpb24gb2YgbWFjcm9zIHRvIG9wZXJhdGUgb24gYml0IGZpZWxkcy4KKyAqLworCisKKworI2lmbmRlZiBfX0JJVEZJRUxEX0gKKyNkZWZpbmUgX19CSVRGSUVMRF9ICisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIFVEYXRhKERhdGEpCSgodW5zaWduZWQgbG9uZykgKERhdGEpKQorI2Vsc2UKKyNkZWZpbmUgVURhdGEoRGF0YSkJKERhdGEpCisjZW5kaWYKKworCisvKgorICogTUFDUk86IEZsZAorICoKKyAqIFB1cnBvc2UKKyAqICAgIFRoZSBtYWNybyAiRmxkIiBlbmNvZGVzIGEgYml0IGZpZWxkLCBnaXZlbiBpdHMgc2l6ZSBhbmQgaXRzIHNoaWZ0IHZhbHVlCisgKiAgICB3aXRoIHJlc3BlY3QgdG8gYml0IDAuCisgKgorICogTm90ZQorICogICAgQSBtb3JlIGludHVpdGl2ZSB3YXkgdG8gZW5jb2RlIGJpdCBmaWVsZHMgd291bGQgaGF2ZSBiZWVuIHRvIHVzZSB0aGVpcgorICogICAgbWFzay4gSG93ZXZlciwgZXh0cmFjdGluZyBzaXplIGFuZCBzaGlmdCB2YWx1ZSBpbmZvcm1hdGlvbiBmcm9tIGEgYml0CisgKiAgICBmaWVsZCdzIG1hc2sgaXMgY3VtYmVyc29tZSBhbmQgbWlnaHQgYnJlYWsgdGhlIGFzc2VtYmxlciAoMjU1LWNoYXJhY3RlcgorICogICAgbGluZS1zaXplIGxpbWl0KS4KKyAqCisgKiBJbnB1dAorICogICAgU2l6ZSAgICAgIAlTaXplIG9mIHRoZSBiaXQgZmllbGQsIGluIG51bWJlciBvZiBiaXRzLgorICogICAgU2hmdCAgICAgIAlTaGlmdCB2YWx1ZSBvZiB0aGUgYml0IGZpZWxkIHdpdGggcmVzcGVjdCB0byBiaXQgMC4KKyAqCisgKiBPdXRwdXQKKyAqICAgIEZsZCAgICAgICAJRW5jb2RlZCBiaXQgZmllbGQuCisgKi8KKworI2RlZmluZSBGbGQoU2l6ZSwgU2hmdCkJKCgoU2l6ZSkgPDwgMTYpICsgKFNoZnQpKQorCisKKy8qCisgKiBNQUNST1M6IEZTaXplLCBGU2hmdCwgRk1zaywgRkFsbk1zaywgRjFzdEJpdAorICoKKyAqIFB1cnBvc2UKKyAqICAgIFRoZSBtYWNyb3MgIkZTaXplIiwgIkZTaGZ0IiwgIkZNc2siLCAiRkFsbk1zayIsIGFuZCAiRjFzdEJpdCIgcmV0dXJuCisgKiAgICB0aGUgc2l6ZSwgc2hpZnQgdmFsdWUsIG1hc2ssIGFsaWduZWQgbWFzaywgYW5kIGZpcnN0IGJpdCBvZiBhCisgKiAgICBiaXQgZmllbGQuCisgKgorICogSW5wdXQKKyAqICAgIEZpZWxkICAgICAJRW5jb2RlZCBiaXQgZmllbGQgKHVzaW5nIHRoZSBtYWNybyAiRmxkIikuCisgKgorICogT3V0cHV0CisgKiAgICBGU2l6ZSAgICAgCVNpemUgb2YgdGhlIGJpdCBmaWVsZCwgaW4gbnVtYmVyIG9mIGJpdHMuCisgKiAgICBGU2hmdCAgICAgCVNoaWZ0IHZhbHVlIG9mIHRoZSBiaXQgZmllbGQgd2l0aCByZXNwZWN0IHRvIGJpdCAwLgorICogICAgRk1zayAgICAgIAlNYXNrIGZvciB0aGUgYml0IGZpZWxkLgorICogICAgRkFsbk1zayAgIAlNYXNrIGZvciB0aGUgYml0IGZpZWxkLCBhbGlnbmVkIG9uIGJpdCAwLgorICogICAgRjFzdEJpdCAgIAlGaXJzdCBiaXQgb2YgdGhlIGJpdCBmaWVsZC4KKyAqLworCisjZGVmaW5lIEZTaXplKEZpZWxkKQkoKEZpZWxkKSA+PiAxNikKKyNkZWZpbmUgRlNoZnQoRmllbGQpCSgoRmllbGQpICYgMHgwMDAwRkZGRikKKyNkZWZpbmUgRk1zayhGaWVsZCkJKCgoVURhdGEgKDEpIDw8IEZTaXplIChGaWVsZCkpIC0gMSkgPDwgRlNoZnQgKEZpZWxkKSkKKyNkZWZpbmUgRkFsbk1zayhGaWVsZCkJKChVRGF0YSAoMSkgPDwgRlNpemUgKEZpZWxkKSkgLSAxKQorI2RlZmluZSBGMXN0Qml0KEZpZWxkKQkoVURhdGEgKDEpIDw8IEZTaGZ0IChGaWVsZCkpCisKKworLyoKKyAqIE1BQ1JPOiBGSW5zcnQKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm8gIkZJbnNydCIgaW5zZXJ0cyBhIHZhbHVlIGludG8gYSBiaXQgZmllbGQgYnkgc2hpZnRpbmcgdGhlCisgKiAgICBmb3JtZXIgYXBwcm9wcmlhdGVseS4KKyAqCisgKiBJbnB1dAorICogICAgVmFsdWUgICAgIAlCaXQtZmllbGQgdmFsdWUuCisgKiAgICBGaWVsZCAgICAgCUVuY29kZWQgYml0IGZpZWxkICh1c2luZyB0aGUgbWFjcm8gIkZsZCIpLgorICoKKyAqIE91dHB1dAorICogICAgRkluc3J0ICAgIAlCaXQtZmllbGQgdmFsdWUgcG9zaXRpb25lZCBhcHByb3ByaWF0ZWx5LgorICovCisKKyNkZWZpbmUgRkluc3J0KFZhbHVlLCBGaWVsZCkgXAorICAgICAgICAgICAgICAgIAkoVURhdGEgKFZhbHVlKSA8PCBGU2hmdCAoRmllbGQpKQorCisKKy8qCisgKiBNQUNSTzogRkV4dHIKKyAqCisgKiBQdXJwb3NlCisgKiAgICBUaGUgbWFjcm8gIkZFeHRyIiBleHRyYWN0cyB0aGUgdmFsdWUgb2YgYSBiaXQgZmllbGQgYnkgbWFza2luZyBhbmQKKyAqICAgIHNoaWZ0aW5nIGl0IGFwcHJvcHJpYXRlbHkuCisgKgorICogSW5wdXQKKyAqICAgIERhdGEgICAgICAJRGF0YSBjb250YWluaW5nIHRoZSBiaXQtZmllbGQgdG8gYmUgZXh0cmFjdGVkLgorICogICAgRmllbGQgICAgIAlFbmNvZGVkIGJpdCBmaWVsZCAodXNpbmcgdGhlIG1hY3JvICJGbGQiKS4KKyAqCisgKiBPdXRwdXQKKyAqICAgIEZFeHRyICAgICAJQml0LWZpZWxkIHZhbHVlLgorICovCisKKyNkZWZpbmUgRkV4dHIoRGF0YSwgRmllbGQpIFwKKyAgICAgICAgICAgICAgICAJKChVRGF0YSAoRGF0YSkgPj4gRlNoZnQgKEZpZWxkKSkgJiBGQWxuTXNrIChGaWVsZCkpCisKKworI2VuZGlmIC8qIF9fQklURklFTERfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2NlcmYuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jZXJmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2ZDViYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jZXJmLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jZXJmLmgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIEFwci0yMDAzIDogUmVtb3ZlZCBzb21lIG9sZCBQREEgY3J1ZCBbRkJdCisgKi8KKyNpZm5kZWYgX0lOQ0xVREVfQ0VSRl9IXworI2RlZmluZSBfSU5DTFVERV9DRVJGX0hfCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2RlZmluZSBDRVJGX0VUSF9JTwkJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgQ0VSRl9FVEhfSVJRIElSUV9HUElPMjYKKworI2RlZmluZSBDRVJGX0dQSU9fQ0ZfQlZEMgkJR1BJT19HUElPICgxOSkKKyNkZWZpbmUgQ0VSRl9HUElPX0NGX0JWRDEJCUdQSU9fR1BJTyAoMjApCisjZGVmaW5lIENFUkZfR1BJT19DRl9SRVNFVAkJR1BJT19HUElPICgyMSkKKyNkZWZpbmUgQ0VSRl9HUElPX0NGX0lSUQkJR1BJT19HUElPICgyMikKKyNkZWZpbmUgQ0VSRl9HUElPX0NGX0NECQkJR1BJT19HUElPICgyMykKKworI2RlZmluZSBDRVJGX0lSUV9HUElPX0NGX0JWRDIJCUlSUV9HUElPMTkKKyNkZWZpbmUgQ0VSRl9JUlFfR1BJT19DRl9CVkQxCQlJUlFfR1BJTzIwCisjZGVmaW5lIENFUkZfSVJRX0dQSU9fQ0ZfSVJRCQlJUlFfR1BJTzIyCisjZGVmaW5lIENFUkZfSVJRX0dQSU9fQ0ZfQ0QJCUlSUV9HUElPMjMKKworI2VuZGlmIC8vIF9JTkNMVURFX0NFUkZfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jb2xsaWUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9jb2xsaWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDllNWZmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2NvbGxpZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvY29sbGllLmgKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGhhcmR3YXJlIHNwZWNpZmljIGRlZmluaXRpb25zIGZvciBBc3NhYmV0CisgKiBPbmx5IGluY2x1ZGUgdGhpcyBmaWxlIGZyb20gU0ExMTAwLXNwZWNpZmljIGZpbGVzLgorICoKKyAqIENoYW5nZUxvZzoKKyAqICAgMDQtMDYtMjAwMSBMaW5lbyBKYXBhbiwgSW5jLgorICogICAwNC0xNi0yMDAxIFNIQVJQIENvcnBvcmF0aW9uCisgKiAgIDA3LTA3LTIwMDIgQ2hyaXMgTGFyc29uIDxjbGFyc29uQGRpZ2kuY29tPgorICoKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0NPTExJRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfQ09MTElFX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisjZGVmaW5lIENPTExJRV9TQ1BfQ0hBUkdFX09OCVNDT09QX0dQQ1JfUEExMQorI2RlZmluZSBDT0xMSUVfU0NQX0RJQUdfQk9PVDEJU0NPT1BfR1BDUl9QQTEyCisjZGVmaW5lIENPTExJRV9TQ1BfRElBR19CT09UMglTQ09PUF9HUENSX1BBMTMKKyNkZWZpbmUgQ09MTElFX1NDUF9NVVRFX0wJU0NPT1BfR1BDUl9QQTE0CisjZGVmaW5lIENPTExJRV9TQ1BfTVVURV9SCVNDT09QX0dQQ1JfUEExNQorI2RlZmluZSBDT0xMSUVfU0NQXzVWT04JCVNDT09QX0dQQ1JfUEExNgorI2RlZmluZSBDT0xMSUVfU0NQX0FNUF9PTglTQ09PUF9HUENSX1BBMTcKKyNkZWZpbmUgQ09MTElFX1NDUF9WUEVOCQlTQ09PUF9HUENSX1BBMTgKKyNkZWZpbmUgQ09MTElFX1NDUF9MQl9WT0xfQ0hHCVNDT09QX0dQQ1JfUEExOQorCisjZGVmaW5lIENPTExJRV9TQ09PUF9JT19ESVIJKCBDT0xMSUVfU0NQX0NIQVJHRV9PTiB8IENPTExJRV9TQ1BfTVVURV9MIHwgQ09MTElFX1NDUF9NVVRFX1IgfCBcCisJCQkJQ09MTElFX1NDUF81Vk9OIHwgQ09MTElFX1NDUF9BTVBfT04gfCBDT0xMSUVfU0NQX1ZQRU4gfCBcCisJCQkJQ09MTElFX1NDUF9MQl9WT0xfQ0hHICkKKyNkZWZpbmUgQ09MTElFX1NDT09QX0lPX09VVAkoIENPTExJRV9TQ1BfTVVURV9MIHwgQ09MTElFX1NDUF9NVVRFX1IgfCBDT0xMSUVfU0NQX1ZQRU4gfCBcCisJCQkJQ09MTElFX1NDUF9DSEFSR0VfT04gKQorCisvKiBHUElPcyBmb3Igd2hpY2ggdGhlIGdlbmVyaWMgZGVmaW5pdGlvbiBkb2Vzbid0IHNheSBtdWNoICovCisKKyNkZWZpbmUgQ09MTElFX0dQSU9fT05fS0VZCQlHUElPX0dQSU8gKDApCisjZGVmaW5lIENPTExJRV9HUElPX0FDX0lOCQlHUElPX0dQSU8gKDEpCisjZGVmaW5lIENPTExJRV9HUElPX0NGX0lSUQkJR1BJT19HUElPICgxNCkKKyNkZWZpbmUgQ09MTElFX0dQSU9fblJFTU9DT05fSU5UCUdQSU9fR1BJTyAoMTUpCisjZGVmaW5lIENPTExJRV9HUElPX1VDQjF4MDBfUkVTRVQJR1BJT19HUElPICgxNikKKyNkZWZpbmUgQ09MTElFX0dQSU9fQ08JCQlHUElPX0dQSU8gKDIwKQorI2RlZmluZSBDT0xMSUVfR1BJT19NQ1BfQ0xLCQlHUElPX0dQSU8gKDIxKQorI2RlZmluZSBDT0xMSUVfR1BJT19DRl9DRAkJR1BJT19HUElPICgyMikKKyNkZWZpbmUgQ09MTElFX0dQSU9fVUNCMXgwMF9JUlEJCUdQSU9fR1BJTyAoMjMpCisjZGVmaW5lIENPTExJRV9HUElPX1dBS0VVUAkJR1BJT19HUElPICgyNCkKKyNkZWZpbmUgQ09MTElFX0dQSU9fR0FfSU5UCQlHUElPX0dQSU8gKDI1KQorI2RlZmluZSBDT0xMSUVfR1BJT19NQUlOX0JBVF9MT1cJR1BJT19HUElPICgyNikKKworLyogSW50ZXJydXB0cyAqLworCisjZGVmaW5lIENPTExJRV9JUlFfR1BJT19PTl9LRVkJCUlSUV9HUElPMAorI2RlZmluZSBDT0xMSUVfSVJRX0dQSU9fQUNfSU4JCUlSUV9HUElPMQorI2RlZmluZSBDT0xMSUVfSVJRX0dQSU9fQ0ZfSVJRCQlJUlFfR1BJTzE0CisjZGVmaW5lIENPTExJRV9JUlFfR1BJT19uUkVNT0NPTl9JTlQJSVJRX0dQSU8xNQorI2RlZmluZSBDT0xMSUVfSVJRX0dQSU9fQ08JCUlSUV9HUElPMjAKKyNkZWZpbmUgQ09MTElFX0lSUV9HUElPX0NGX0NECQlJUlFfR1BJTzIyCisjZGVmaW5lIENPTExJRV9JUlFfR1BJT19VQ0IxeDAwX0lSUQlJUlFfR1BJTzIzCisjZGVmaW5lIENPTExJRV9JUlFfR1BJT19XQUtFVVAJCUlSUV9HUElPMjQKKyNkZWZpbmUgQ09MTElFX0lSUV9HUElPX0dBX0lOVAkJSVJRX0dQSU8yNQorI2RlZmluZSBDT0xMSUVfSVJRX0dQSU9fTUFJTl9CQVRfTE9XCUlSUV9HUElPMjYKKworI2RlZmluZSBDT0xMSUVfTENNX0lSUV9HUElPX1JUUwkJSVJRX0xPQ09NT19HUElPMAorI2RlZmluZSBDT0xMSUVfTENNX0lSUV9HUElPX0NUUwkJSVJRX0xPQ09NT19HUElPMQorI2RlZmluZSBDT0xMSUVfTENNX0lSUV9HUElPX0RTUgkJSVJRX0xPQ09NT19HUElPMgorI2RlZmluZSBDT0xMSUVfTENNX0lSUV9HUElPX0RUUgkJSVJRX0xPQ09NT19HUElPMworI2RlZmluZSBDT0xMSUVfTENNX0lSUV9HUElPX25TRF9ERVRFQ1QJSVJRX0xPQ09NT19HUElPMTMKKyNkZWZpbmUgQ09MTElFX0xDTV9JUlFfR1BJT19uU0RfV1AJSVJRX0xPQ09NT19HUElPMTQKKworLyogR1BJTydzIG9uIHRoZSBUQzM1MTQzQUYgKFRvc2hpYmEgQW5hbG9nIEZyb250ZW5kKSAqLworI2RlZmluZSBDT0xMSUVfVEMzNTE0M19HUElPX1ZFUlNJT04wICAgIFVDQl9JT18wCS8qIEdQSU8wPVZlcnNpb24gICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENPTExJRV9UQzM1MTQzX0dQSU9fVEJMX0NISyAgICAgVUNCX0lPXzEJLyogR1BJTzE9VEJMX0NISyAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ09MTElFX1RDMzUxNDNfR1BJT19WUEVOX09OICAgICBVQ0JfSU9fMgkvKiBHUElPMj1WUE5FX09OICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT0xMSUVfVEMzNTE0M19HUElPX0lSX09OICAgICAgIFVDQl9JT18zCS8qIEdQSU8zPUlSX09OICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENPTExJRV9UQzM1MTQzX0dQSU9fQU1QX09OICAgICAgVUNCX0lPXzQJLyogR1BJTzQ9QU1QX09OICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ09MTElFX1RDMzUxNDNfR1BJT19WRVJTSU9OMSAgICBVQ0JfSU9fNQkvKiBHUElPNT1WZXJzaW9uICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT0xMSUVfVEMzNTE0M19HUElPX0ZTOEtMUEYgICAgIFVDQl9JT181CS8qIEdQSU81PWZzIDhrIExQRiAgICAgICAgICAgICAgICovCisjZGVmaW5lIENPTExJRV9UQzM1MTQzX0dQSU9fQlVaWkVSX0JJQVMgVUNCX0lPXzYJLyogR1BJTzY9QlVaWkVSIEJJQVMgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ09MTElFX1RDMzUxNDNfR1BJT19NQkFUX09OICAgICBVQ0JfSU9fNwkvKiBHUElPNz1NQkFUX09OICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT0xMSUVfVEMzNTE0M19HUElPX0JCQVRfT04gICAgIFVDQl9JT184CS8qIEdQSU84PUJCQVRfT04gICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENPTExJRV9UQzM1MTQzX0dQSU9fVE1QX09OICAgICAgVUNCX0lPXzkJLyogR1BJTzk9VE1QX09OICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ09MTElFX1RDMzUxNDNfR1BJT19JTgkJKCBVQ0JfSU9fMCB8IFVDQl9JT18yIHwgVUNCX0lPXzUgKQorI2RlZmluZSBDT0xMSUVfVEMzNTE0M19HUElPX09VVAkJKCBVQ0JfSU9fMSB8IFVDQl9JT18zIHwgVUNCX0lPXzQgfCBVQ0JfSU9fNiB8IFwKKwkJCQkJVUNCX0lPXzcgfCBVQ0JfSU9fOCB8IFVDQl9JT185ICkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZGVidWctbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NWZhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDU3IEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZGVidWctbWFjcm8uUworICoKKyAqIERlYnVnZ2luZyBtYWNybyBpbmNsdWRlIGhlYWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OSBSdXNzZWxsIEtpbmcKKyAqICBNb3ZlZCBmcm9tIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9kZWJ1Zy5TIGJ5IEJlbiBEb29rcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorKi8KKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEJCQlAIE1NVSBlbmFibGVkPworCQltb3ZlcQlccngsICMweDgwMDAwMDAwCUAgcGh5c2ljYWwgYmFzZSBhZGRyZXNzCisJCW1vdm5lCVxyeCwgIzB4ZjgwMDAwMDAJQCB2aXJ0dWFsIGFkZHJlc3MKKworCQlAIFdlIHByb2JlIGZvciB0aGUgYWN0aXZlIHNlcmlhbCBwb3J0IGhlcmUsIGNvaGVyZW50bHkgd2l0aAorCQlAIHRoZSBjb21tZW50IGluIGluY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC91bmNvbXByZXNzLmguCisJCUAgV2UgYXNzdW1lIHIxIGNhbiBiZSBjbG9iYmVyZWQuCisKKwkJQCBzZWUgaWYgU2VyMyBpcyBhY3RpdmUKKwkJYWRkCVxyeCwgXHJ4LCAjMHgwMDA1MDAwMAorCQlsZHIJcjEsIFtccngsICNVVENSM10KKwkJdHN0CXIxLCAjVVRDUjNfVFhFCisKKwkJQCBpZiBTZXIzIGlzIGluYWN0aXZlLCB0aGVuIHRyeSBTZXIxCisJCWFkZGVxCVxyeCwgXHJ4LCAjKDB4MDAwMTAwMDAgLSAweDAwMDUwMDAwKQorCQlsZHJlcQlyMSwgW1xyeCwgI1VUQ1IzXQorCQl0c3RlcQlyMSwgI1VUQ1IzX1RYRQorCisJCUAgaWYgU2VyMSBpcyBpbmFjdGl2ZSwgdGhlbiB0cnkgU2VyMgorCQlhZGRlcQlccngsIFxyeCwgIygweDAwMDMwMDAwIC0gMHgwMDAxMDAwMCkKKwkJbGRyZXEJcjEsIFtccngsICNVVENSM10KKwkJdHN0ZXEJcjEsICNVVENSM19UWEUKKworCQlAIGlmIGFsbCBwb3J0cyBhcmUgaW5hY3RpdmUsIHRoZW4gdGhlcmUgaXMgbm90aGluZyB3ZSBjYW4gZG8KKwkJbW92ZXEJcGMsIGxyCisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cglccmQsIFtccngsICNVVERSXQorCQkuZW5kbQorCisJCS5tYWNybwl3YWl0dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICNVVFNSMV0KKwkJdHN0CVxyZCwgI1VUU1IxX1RORgorCQliZXEJMTAwMWIKKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDE6CQlsZHIJXHJkLCBbXHJ4LCAjVVRTUjFdCisJCXRzdAlccmQsICNVVFNSMV9UQlkKKwkJYm5lCTEwMDFiCisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q2MGVkOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9kbWEuaApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9kbWEuaAorICoKKyAqIEdlbmVyaWMgU0ExMTAwIERNQSBzdXBwb3J0CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIE5pY29sYXMgUGl0cmUKKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1BX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgImhhcmR3YXJlLmgiCisKKworLyoKKyAqIFRoaXMgaXMgdGhlIG1heGltdW0gRE1BIGFkZHJlc3MgdGhhdCBjYW4gYmUgRE1BZCB0by4KKyAqLworI2RlZmluZSBNQVhfRE1BX0FERFJFU1MJCTB4ZmZmZmZmZmYKKworCisvKgorICogVGhlIHJlZ3VsYXIgZ2VuZXJpYyBETUEgaW50ZXJmYWNlIGlzIGluYXBwcm9wcmlhdGUgZm9yIHRoZQorICogU0ExMTAwIERNQSBtb2RlbC4gIE5vbmUgb2YgdGhlIFNBMTEwMCBzcGVjaWZpYyBkcml2ZXJzIHVzaW5nCisgKiBETUEgYXJlIHBvcnRhYmxlIGFueXdheSBzbyBpdCdzIHBvaW50bGVzcyB0byB0cnkgdG8gdHdpc3QgdGhlCisgKiByZWd1bGFyIERNQSBBUEkgdG8gYWNjb21tb2RhdGUgdGhlbS4KKyAqLworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTAKKworLyoKKyAqIFRoZSBTQTExMDAgaGFzIHNpeCBpbnRlcm5hbCBETUEgY2hhbm5lbHMuCisgKi8KKyNkZWZpbmUgU0ExMTAwX0RNQV9DSEFOTkVMUwk2CisKKy8qCisgKiBNYXhpbXVtIHBoeXNpY2FsIERNQSBidWZmZXIgc2l6ZQorICovCisjZGVmaW5lIE1BWF9ETUFfU0laRQkJMHgxZmZmCisjZGVmaW5lIENVVF9ETUFfU0laRQkJMHgxMDAwCisKKy8qCisgKiBBbGwgcG9zc2libGUgU0ExMTAwIGRldmljZXMgYSBETUEgY2hhbm5lbCBjYW4gYmUgYXR0YWNoZWQgdG8uCisgKi8KK3R5cGVkZWYgZW51bSB7CisJRE1BX1NlcjBVRENXciAgPSBEREFSX1NlcjBVRENXciwgICAvKiBTZXIuIHBvcnQgMCBVREMgV3JpdGUgKi8KKwlETUFfU2VyMFVEQ1JkICA9IEREQVJfU2VyMFVEQ1JkLCAgIC8qIFNlci4gcG9ydCAwIFVEQyBSZWFkICovCisJRE1BX1NlcjFVQVJUV3IgPSBEREFSX1NlcjFVQVJUV3IsICAvKiBTZXIuIHBvcnQgMSBVQVJUIFdyaXRlICovCisJRE1BX1NlcjFVQVJUUmQgPSBEREFSX1NlcjFVQVJUUmQsICAvKiBTZXIuIHBvcnQgMSBVQVJUIFJlYWQgKi8KKwlETUFfU2VyMVNETENXciA9IEREQVJfU2VyMVNETENXciwgIC8qIFNlci4gcG9ydCAxIFNETEMgV3JpdGUgKi8KKwlETUFfU2VyMVNETENSZCA9IEREQVJfU2VyMVNETENSZCwgIC8qIFNlci4gcG9ydCAxIFNETEMgUmVhZCAqLworCURNQV9TZXIyVUFSVFdyID0gRERBUl9TZXIyVUFSVFdyLCAgLyogU2VyLiBwb3J0IDIgVUFSVCBXcml0ZSAqLworCURNQV9TZXIyVUFSVFJkID0gRERBUl9TZXIyVUFSVFJkLCAgLyogU2VyLiBwb3J0IDIgVUFSVCBSZWFkICovCisJRE1BX1NlcjJIU1NQV3IgPSBEREFSX1NlcjJIU1NQV3IsICAvKiBTZXIuIHBvcnQgMiBIU1NQIFdyaXRlICovCisJRE1BX1NlcjJIU1NQUmQgPSBEREFSX1NlcjJIU1NQUmQsICAvKiBTZXIuIHBvcnQgMiBIU1NQIFJlYWQgKi8KKwlETUFfU2VyM1VBUlRXciA9IEREQVJfU2VyM1VBUlRXciwgIC8qIFNlci4gcG9ydCAzIFVBUlQgV3JpdGUgKi8KKwlETUFfU2VyM1VBUlRSZCA9IEREQVJfU2VyM1VBUlRSZCwgIC8qIFNlci4gcG9ydCAzIFVBUlQgUmVhZCAqLworCURNQV9TZXI0TUNQMFdyID0gRERBUl9TZXI0TUNQMFdyLCAgLyogU2VyLiBwb3J0IDQgTUNQIDAgV3JpdGUgKGF1ZGlvKSAqLworCURNQV9TZXI0TUNQMFJkID0gRERBUl9TZXI0TUNQMFJkLCAgLyogU2VyLiBwb3J0IDQgTUNQIDAgUmVhZCAoYXVkaW8pICovCisJRE1BX1NlcjRNQ1AxV3IgPSBEREFSX1NlcjRNQ1AxV3IsICAvKiBTZXIuIHBvcnQgNCBNQ1AgMSBXcml0ZSAqLworCURNQV9TZXI0TUNQMVJkID0gRERBUl9TZXI0TUNQMVJkLCAgLyogU2VyLiBwb3J0IDQgTUNQIDEgUmVhZCAqLworCURNQV9TZXI0U1NQV3IgID0gRERBUl9TZXI0U1NQV3IsICAgLyogU2VyLiBwb3J0IDQgU1NQIFdyaXRlICgxNiBiaXRzKSAqLworCURNQV9TZXI0U1NQUmQgID0gRERBUl9TZXI0U1NQUmQgICAgLyogU2VyLiBwb3J0IDQgU1NQIFJlYWQgKDE2IGJpdHMpICovCit9IGRtYV9kZXZpY2VfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCXZvbGF0aWxlIHVfbG9uZyBEREFSOworCXZvbGF0aWxlIHVfbG9uZyBTZXREQ1NSOworCXZvbGF0aWxlIHVfbG9uZyBDbHJEQ1NSOworCXZvbGF0aWxlIHVfbG9uZyBSZERDU1I7CisJdm9sYXRpbGUgZG1hX2FkZHJfdCBEQlNBOworCXZvbGF0aWxlIHVfbG9uZyBEQlRBOworCXZvbGF0aWxlIGRtYV9hZGRyX3QgREJTQjsKKwl2b2xhdGlsZSB1X2xvbmcgREJUQjsKK30gZG1hX3JlZ3NfdDsKKwordHlwZWRlZiB2b2lkICgqZG1hX2NhbGxiYWNrX3QpKHZvaWQgKmRhdGEpOworCisvKgorICogRE1BIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAqLworCitleHRlcm4gaW50IHNhMTEwMF9yZXF1ZXN0X2RtYSggZG1hX2RldmljZV90IGRldmljZSwgY29uc3QgY2hhciAqZGV2aWNlX2lkLAorCQkJICAgICAgIGRtYV9jYWxsYmFja190IGNhbGxiYWNrLCB2b2lkICpkYXRhLAorCQkJICAgICAgIGRtYV9yZWdzX3QgKipyZWdzICk7CitleHRlcm4gdm9pZCBzYTExMDBfZnJlZV9kbWEoIGRtYV9yZWdzX3QgKnJlZ3MgKTsKK2V4dGVybiBpbnQgc2ExMTAwX3N0YXJ0X2RtYSggZG1hX3JlZ3NfdCAqcmVncywgZG1hX2FkZHJfdCBkbWFfcHRyLCB1X2ludCBzaXplICk7CitleHRlcm4gZG1hX2FkZHJfdCBzYTExMDBfZ2V0X2RtYV9wb3MoZG1hX3JlZ3NfdCAqcmVncyk7CitleHRlcm4gdm9pZCBzYTExMDBfcmVzZXRfZG1hKGRtYV9yZWdzX3QgKnJlZ3MpOworCisvKioKKyAqIAlzYTExMDBfc3RvcF9kbWEgLSBzdG9wIERNQSBpbiBwcm9ncmVzcworICogCUByZWdzOiBpZGVudGlmaWVyIGZvciB0aGUgY2hhbm5lbCB0byB1c2UKKyAqCisgKiAJVGhpcyBzdG9wcyBETUEgd2l0aG91dCBjbGVhcmluZyBidWZmZXIgcG9pbnRlcnMuIFVubGlrZQorICogCXNhMTEwMF9jbGVhcl9kbWEoKSB0aGlzIGFsbG93cyBzdWJzZXF1ZW50IHVzZSBvZiBzYTExMDBfcmVzdW1lX2RtYSgpCisgKiAJb3Igc2ExMTAwX2dldF9kbWFfcG9zKCkuCisgKgorICogCVRoZSBAcmVncyBpZGVudGlmaWVyIGlzIHByb3ZpZGVkIGJ5IGEgc3VjY2Vzc2Z1bCBjYWxsIHRvCisgKiAJc2ExMTAwX3JlcXVlc3RfZG1hKCkuCisgKiovCisKKyNkZWZpbmUgc2ExMTAwX3N0b3BfZG1hKHJlZ3MpCSgocmVncyktPkNsckRDU1IgPSBEQ1NSX0lFfERDU1JfUlVOKQorCisvKioKKyAqIAlzYTExMDBfcmVzdW1lX2RtYSAtIHJlc3VtZSBETUEgb24gYSBzdG9wcGVkIGNoYW5uZWwKKyAqIAlAcmVnczogaWRlbnRpZmllciBmb3IgdGhlIGNoYW5uZWwgdG8gdXNlCisgKgorICogCVRoaXMgcmVzdW1lcyBETUEgb24gYSBjaGFubmVsIHByZXZpb3VzbHkgc3RvcHBlZCB3aXRoCisgKiAJc2ExMTAwX3N0b3BfZG1hKCkuCisgKgorICogCVRoZSBAcmVncyBpZGVudGlmaWVyIGlzIHByb3ZpZGVkIGJ5IGEgc3VjY2Vzc2Z1bCBjYWxsIHRvCisgKiAJc2ExMTAwX3JlcXVlc3RfZG1hKCkuCisgKiovCisKKyNkZWZpbmUgc2ExMTAwX3Jlc3VtZV9kbWEocmVncykJKChyZWdzKS0+U2V0RENTUiA9IERDU1JfSUV8RENTUl9SVU4pCisKKy8qKgorICogCXNhMTEwMF9jbGVhcl9kbWEgLSBjbGVhciBETUEgcG9pbnRlcnMKKyAqIAlAcmVnczogaWRlbnRpZmllciBmb3IgdGhlIGNoYW5uZWwgdG8gdXNlCisgKgorICogCVRoaXMgY2xlYXIgYW55IERNQSBzdGF0ZSBzbyB0aGUgRE1BIGVuZ2luZSBpcyByZWFkeSB0byByZXN0YXJ0CisgKiAJd2l0aCBuZXcgYnVmZmVycyB0aHJvdWdoIHNhMTEwMF9zdGFydF9kbWEoKS4gQW55IGJ1ZmZlcnMgaW4gZmxpZ2h0CisgKiAJYXJlIGRpc2NhcmRlZC4KKyAqCisgKiAJVGhlIEByZWdzIGlkZW50aWZpZXIgaXMgcHJvdmlkZWQgYnkgYSBzdWNjZXNzZnVsIGNhbGwgdG8KKyAqIAlzYTExMDBfcmVxdWVzdF9kbWEoKS4KKyAqKi8KKworI2RlZmluZSBzYTExMDBfY2xlYXJfZG1hKHJlZ3MpCSgocmVncyktPkNsckRDU1IgPSBEQ1NSX0lFfERDU1JfUlVOfERDU1JfU1RSVEF8RENTUl9TVFJUQikKKworI2VuZGlmIC8qIF9BU01fQVJDSF9ETUFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvZW50cnktbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWZiNTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2VudHJ5LW1hY3JvLlMKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBTQTExMDAtYmFzZWQgcGxhdGZvcm1zCisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CisgKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworIAkJLm1hY3JvCWRpc2FibGVfZmlxCisJCS5lbmRtCisKKwkJLm1hY3JvCWdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCQltb3YJcjQsICMweGZhMDAwMDAwCQkJQCBJQ0lQID0gMHhmYTA1MDAwMAorCQlhZGQJcjQsIHI0LCAjMHgwMDA1MDAwMAorCQlsZHIJXGlycXN0YXQsIFtyNF0JCQlAIGdldCBpcnFzCisJCWxkcglcaXJxbnIsIFtyNCwgIzRdCQlAIElDTVIgPSAweGZhMDUwMDA0CisJCWFuZHMJXGlycXN0YXQsIFxpcnFzdGF0LCBcaXJxbnIKKwkJbW92CVxpcnFuciwgIzAKKwkJYmVxCTEwMDFmCisJCXRzdAlcaXJxc3RhdCwgIzB4ZmYKKwkJbW92ZXEJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IgIzgKKwkJYWRkZXEJXGlycW5yLCBcaXJxbnIsICM4CisJCXRzdGVxCVxpcnFzdGF0LCAjMHhmZgorCQltb3ZlcQlcaXJxc3RhdCwgXGlycXN0YXQsIGxzciAjOAorCQlhZGRlcQlcaXJxbnIsIFxpcnFuciwgIzgKKwkJdHN0ZXEJXGlycXN0YXQsICMweGZmCisJCW1vdmVxCVxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICM4CisJCWFkZGVxCVxpcnFuciwgXGlycW5yLCAjOAorCQl0c3QJXGlycXN0YXQsICMweDBmCisJCW1vdmVxCVxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICM0CisJCWFkZGVxCVxpcnFuciwgXGlycW5yLCAjNAorCQl0c3QJXGlycXN0YXQsICMweDAzCisJCW1vdmVxCVxpcnFzdGF0LCBcaXJxc3RhdCwgbHNyICMyCisJCWFkZGVxCVxpcnFuciwgXGlycW5yLCAjMgorCQl0c3QJXGlycXN0YXQsICMweDAxCisJCWFkZGVxcwlcaXJxbnIsIFxpcnFuciwgIzEKKzEwMDE6CisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9oMzYwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2gzNjAwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2MzU1OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9oMzYwMC5oCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICoKKyAqIERlZmluaXRpb25zIGZvciBIMzYwMCBIYW5kaGVsZCBDb21wdXRlcgorICoKKyAqIENvcHlyaWdodCAyMDAwIENvbXBhcSBDb21wdXRlciBDb3Jwb3JhdGlvbi4KKyAqCisgKiBVc2UgY29uc2lzdGVudCB3aXRoIHRoZSBHTlUgR1BMIGlzIHBlcm1pdHRlZCwKKyAqIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGlzCisgKiBwcmVzZXJ2ZWQgaW4gaXRzIGVudGlyZXR5IGluIGFsbCBjb3BpZXMgYW5kIGRlcml2ZWQgd29ya3MuCisgKgorICogQ09NUEFRIENPTVBVVEVSIENPUlBPUkFUSU9OIE1BS0VTIE5PIFdBUlJBTlRJRVMsIEVYUFJFU1NFRCBPUiBJTVBMSUVELAorICogQVMgVE8gVEhFIFVTRUZVTE5FU1MgT1IgQ09SUkVDVE5FU1MgT0YgVEhJUyBDT0RFIE9SIElUUworICogRklUTkVTUyBGT1IgQU5ZIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAqCisgKiBBdXRob3I6IEphbWV5IEhpY2tzLgorICoKKyAqIEhpc3Rvcnk6CisgKgorICogMjAwMS0xMC0/PwlBbmRyZXcgQ2hyaXN0aWFuICAgQWRkZWQgc3VwcG9ydCBmb3IgaVBBUSBIMzgwMAorICoKKyAqLworCisjaWZuZGVmIF9JTkNMVURFX0gzNjAwX0hfCisjZGVmaW5lIF9JTkNMVURFX0gzNjAwX0hfCisKKy8qIGdlbmVyYWxpemVkIHN1cHBvcnQgZm9yIEgzeHh4IHNlcmllcyBDb21wYXEgUG9ja2V0IFBDJ3MgKi8KKyNkZWZpbmUgbWFjaGluZV9pc19oM3h4eCgpIChtYWNoaW5lX2lzX2gzMTAwKCkgfHwgbWFjaGluZV9pc19oMzYwMCgpIHx8IG1hY2hpbmVfaXNfaDM4MDAoKSkKKworLyogUGh5c2ljYWwgbWVtb3J5IHJlZ2lvbnMgY29ycmVzcG9uZGluZyB0byBjaGlwIHNlbGVjdHMgKi8KKyNkZWZpbmUgSDM2MDBfRUdQSU9fUEhZUyAgICAgKFNBMTEwMF9DUzVfUEhZUyArIDB4MDEwMDAwMDApCisjZGVmaW5lIEgzNjAwX0JBTktfMl9QSFlTICAgIFNBMTEwMF9DUzJfUEhZUworI2RlZmluZSBIMzYwMF9CQU5LXzRfUEhZUyAgICBTQTExMDBfQ1M0X1BIWVMKKworLyogVmlydHVhbCBtZW1vcnkgcmVnaW9ucyBjb3JyZXNwb25kaW5nIHRvIGNoaXAgc2VsZWN0cyAyICYgNCAodXNlZCBvbiBzbGVldmVzKSAqLworI2RlZmluZSBIMzYwMF9FR1BJT19WSVJUICAgICAweGYwMDAwMDAwCisjZGVmaW5lIEgzNjAwX0JBTktfMl9WSVJUICAgIDB4ZjEwMDAwMDAKKyNkZWZpbmUgSDM2MDBfQkFOS180X1ZJUlQgICAgMHhmMzgwMDAwMAorCisvKgorICAgTWFjaGluZS1pbmRlcGVuZGVudCBHUElPIGRlZmluaXRpb25zCisgICAtLS0gdGhlc2UgYXJlIGNvbW1vbiBhY3Jvc3MgYWxsIGN1cnJlbnQgaVBBUSBwbGF0Zm9ybXMKKyovCisKKyNkZWZpbmUgR1BJT19IMzYwMF9OUE9XRVJfQlVUVE9OCUdQSU9fR1BJTyAoMCkJLyogQWxzbyBrbm93biBhcyB0aGUgIm9mZiBidXR0b24iICAqLworCisjZGVmaW5lIEdQSU9fSDM2MDBfUENNQ0lBX0NEMQkJR1BJT19HUElPICgxMCkKKyNkZWZpbmUgR1BJT19IMzYwMF9QQ01DSUFfSVJRMQkJR1BJT19HUElPICgxMSkKKworLyogVURBMTM0MSBMMyBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgR1BJT19IMzYwMF9MM19EQVRBCQlHUElPX0dQSU8gKDE0KQorI2RlZmluZSBHUElPX0gzNjAwX0wzX01PREUJCUdQSU9fR1BJTyAoMTUpCisjZGVmaW5lIEdQSU9fSDM2MDBfTDNfQ0xPQ0sJCUdQSU9fR1BJTyAoMTYpCisKKyNkZWZpbmUgR1BJT19IMzYwMF9QQ01DSUFfQ0QwCQlHUElPX0dQSU8gKDE3KQorI2RlZmluZSBHUElPX0gzNjAwX1NZU19DTEsJCUdQSU9fR1BJTyAoMTkpCisjZGVmaW5lIEdQSU9fSDM2MDBfUENNQ0lBX0lSUTAJCUdQSU9fR1BJTyAoMjEpCisKKyNkZWZpbmUgR1BJT19IMzYwMF9DT01fRENECQlHUElPX0dQSU8gKDIzKQorI2RlZmluZSBHUElPX0gzNjAwX09QVF9JUlEJCUdQSU9fR1BJTyAoMjQpCisjZGVmaW5lIEdQSU9fSDM2MDBfQ09NX0NUUwkJR1BJT19HUElPICgyNSkKKyNkZWZpbmUgR1BJT19IMzYwMF9DT01fUlRTCQlHUElPX0dQSU8gKDI2KQorCisjZGVmaW5lIElSUV9HUElPX0gzNjAwX05QT1dFUl9CVVRUT04JSVJRX0dQSU8wCisjZGVmaW5lIElSUV9HUElPX0gzNjAwX1BDTUNJQV9DRDEJSVJRX0dQSU8xMAorI2RlZmluZSBJUlFfR1BJT19IMzYwMF9QQ01DSUFfSVJRMQlJUlFfR1BJTzExCisjZGVmaW5lIElSUV9HUElPX0gzNjAwX1BDTUNJQV9DRDAJSVJRX0dQSU8xNworI2RlZmluZSBJUlFfR1BJT19IMzYwMF9QQ01DSUFfSVJRMAlJUlFfR1BJTzIxCisjZGVmaW5lIElSUV9HUElPX0gzNjAwX0NPTV9EQ0QJCUlSUV9HUElPMjMKKyNkZWZpbmUgSVJRX0dQSU9fSDM2MDBfT1BUX0lSUQkJSVJRX0dQSU8yNAorI2RlZmluZSBJUlFfR1BJT19IMzYwMF9DT01fQ1RTCQlJUlFfR1BJTzI1CisKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworZW51bSBpcGFxX2VncGlvX3R5cGUgeworCUlQQVFfRUdQSU9fTENEX1BPV0VSLAkgIC8qIFBvd2VyIHRvIHRoZSBMQ0QgcGFuZWwgKi8KKwlJUEFRX0VHUElPX0NPREVDX05SRVNFVCwgIC8qIENsZWFyIHRvIHJlc2V0IHRoZSBhdWRpbyBjb2RlYyAocmVtZW1iZXIgdG8gcmV0dXJuIGhpZ2gpICovCisJSVBBUV9FR1BJT19BVURJT19PTiwJICAvKiBBdWRpbyBwb3dlciAqLworCUlQQVFfRUdQSU9fUU1VVEUsCSAgLyogQXVkaW8gbXV0aW5nICovCisJSVBBUV9FR1BJT19PUFRfTlZSQU1fT04sICAvKiBOb24tdm9sYXRpbGUgUkFNIG9uIGV4dGVuc2lvbiBzbGVldmVzIChTUEkgaW50ZXJmYWNlKSAqLworCUlQQVFfRUdQSU9fT1BUX09OLAkgIC8qIFBvd2VyIHRvIGV4dGVuc2lvbiBzbGVldmVzICovCisJSVBBUV9FR1BJT19DQVJEX1JFU0VULAkgIC8qIFJlc2V0IFBDTUNJQSBjYXJkcyBvbiBleHRlbnNpb24gc2xlZXZlICg/Pz8pICovCisJSVBBUV9FR1BJT19PUFRfUkVTRVQsCSAgLyogUmVzZXQgb3B0aW9uIHBhY2sgKD8/PykgKi8KKwlJUEFRX0VHUElPX0lSX09OLAkgIC8qIElSIHNlbnNvci9lbWl0dGVyIHBvd2VyICovCisJSVBBUV9FR1BJT19JUl9GU0VMLAkgIC8qIElSIHNwZWVkIHNlbGVjdGlvbiAxLT5mYXN0LCAwLT5zbG93ICovCisJSVBBUV9FR1BJT19SUzIzMl9PTiwJICAvKiBNYXhpbSBSUzIzMiBjaGlwIHBvd2VyICovCisJSVBBUV9FR1BJT19WUFBfT04sCSAgLyogVHVybiBvbiBwb3dlciB0byBmbGFzaCBwcm9ncmFtbWluZyAqLworCUlQQVFfRUdQSU9fTENEX0VOQUJMRSwJICAvKiBFbmFibGUvZGlzYWJsZSBMQ0QgY29udHJvbGxlciAqLworfTsKKworc3RydWN0IGlwYXFfbW9kZWxfb3BzIHsKKwljb25zdCBjaGFyICAgICAqZ2VuZXJpY19uYW1lOworCXZvaWQJICAgICAgKCpjb250cm9sKShlbnVtIGlwYXFfZWdwaW9fdHlwZSwgaW50KTsKKwl1bnNpZ25lZCBsb25nICgqcmVhZCkodm9pZCk7CisJdm9pZAkgICAgICAoKmJsYW5rX2NhbGxiYWNrKShpbnQgYmxhbmspOworCWludAkgICAgICAoKnBtX2NhbGxiYWNrKShpbnQgcmVxKTsJICAgIC8qIFByaW1hcnkgbW9kZWwgY2FsbGJhY2sgKi8KKwlpbnQJICAgICAgKCpwbV9jYWxsYmFja19hdXgpKGludCByZXEpOyAgLyogU2Vjb25kYXJ5IGNhbGxiYWNrICh1c2VkIGJ5IEhBTCBtb2R1bGVzKSAqLworfTsKKworZXh0ZXJuIHN0cnVjdCBpcGFxX21vZGVsX29wcyBpcGFxX21vZGVsX29wczsKKworc3RhdGljIF9faW5saW5lX18gY29uc3QgY2hhciAqIGgzNjAwX2dlbmVyaWNfbmFtZSh2b2lkKQoreworCXJldHVybiBpcGFxX21vZGVsX29wcy5nZW5lcmljX25hbWU7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgYXNzaWduX2gzNjAwX2VncGlvKGVudW0gaXBhcV9lZ3Bpb190eXBlIHgsIGludCBsZXZlbCkKK3sKKwlpZiAoaXBhcV9tb2RlbF9vcHMuY29udHJvbCkKKwkJaXBhcV9tb2RlbF9vcHMuY29udHJvbCh4LGxldmVsKTsKK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBjbHJfaDM2MDBfZWdwaW8oZW51bSBpcGFxX2VncGlvX3R5cGUgeCkKK3sKKwlpZiAoaXBhcV9tb2RlbF9vcHMuY29udHJvbCkKKwkJaXBhcV9tb2RlbF9vcHMuY29udHJvbCh4LDApOworfQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9oMzYwMF9lZ3BpbyhlbnVtIGlwYXFfZWdwaW9fdHlwZSB4KQoreworCWlmIChpcGFxX21vZGVsX29wcy5jb250cm9sKQorCQlpcGFxX21vZGVsX29wcy5jb250cm9sKHgsMSk7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgcmVhZF9oMzYwMF9lZ3Bpbyh2b2lkKQoreworCWlmIChpcGFxX21vZGVsX29wcy5yZWFkKQorCQlyZXR1cm4gaXBhcV9tb2RlbF9vcHMucmVhZCgpOworCXJldHVybiAwOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgIGgzNjAwX3JlZ2lzdGVyX2JsYW5rX2NhbGxiYWNrKHZvaWQgKCpmKShpbnQpKQoreworCWlwYXFfbW9kZWxfb3BzLmJsYW5rX2NhbGxiYWNrID0gZjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBoMzYwMF91bnJlZ2lzdGVyX2JsYW5rX2NhbGxiYWNrKHZvaWQgKCpmKShpbnQpKQoreworCWlwYXFfbW9kZWxfb3BzLmJsYW5rX2NhbGxiYWNrID0gTlVMTDsKK30KKworCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgIGgzNjAwX3JlZ2lzdGVyX3BtX2NhbGxiYWNrKGludCAoKmYpKGludCkpCit7CisJaXBhcV9tb2RlbF9vcHMucG1fY2FsbGJhY2tfYXV4ID0gZjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBoMzYwMF91bnJlZ2lzdGVyX3BtX2NhbGxiYWNrKGludCAoKmYpKGludCkpCit7CisJaXBhcV9tb2RlbF9vcHMucG1fY2FsbGJhY2tfYXV4ID0gTlVMTDsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IGgzNjAwX3Bvd2VyX21hbmFnZW1lbnQoaW50IHJlcSkKK3sKKwlpZiAoaXBhcV9tb2RlbF9vcHMucG1fY2FsbGJhY2spCisJCXJldHVybiBpcGFxX21vZGVsX29wcy5wbV9jYWxsYmFjayhyZXEpOworCXJldHVybiAwOworfQorCisjZW5kaWYgLyogQVNTRU1CTFkgKi8KKworI2VuZGlmIC8qIF9JTkNMVURFX0gzNjAwX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaDM2MDBfZ3Bpby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2gzNjAwX2dwaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmIwYjc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2gzNjAwX2dwaW8uaApAQCAtMCwwICsxLDU0MCBAQAorLyoKKyAqCisgKiBEZWZpbml0aW9ucyBmb3IgSDM2MDAgSGFuZGhlbGQgQ29tcHV0ZXIKKyAqCisgKiBDb3B5cmlnaHQgMjAwMCBDb21wYXEgQ29tcHV0ZXIgQ29ycG9yYXRpb24uCisgKgorICogVXNlIGNvbnNpc3RlbnQgd2l0aCB0aGUgR05VIEdQTCBpcyBwZXJtaXR0ZWQsCisgKiBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcworICogcHJlc2VydmVkIGluIGl0cyBlbnRpcmV0eSBpbiBhbGwgY29waWVzIGFuZCBkZXJpdmVkIHdvcmtzLgorICoKKyAqIENPTVBBUSBDT01QVVRFUiBDT1JQT1JBVElPTiBNQUtFUyBOTyBXQVJSQU5USUVTLCBFWFBSRVNTRUQgT1IgSU1QTElFRCwKKyAqIEFTIFRPIFRIRSBVU0VGVUxORVNTIE9SIENPUlJFQ1RORVNTIE9GIFRISVMgQ09ERSBPUiBJVFMKKyAqIEZJVE5FU1MgRk9SIEFOWSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgKgorICogQXV0aG9yOiBKYW1leSBIaWNrcy4KKyAqCisgKiBIaXN0b3J5OgorICoKKyAqIDIwMDEtMTAtPz8gICBBbmRyZXcgQ2hyaXN0aWFuICAgQWRkZWQgc3VwcG9ydCBmb3IgaVBBUSBIMzgwMAorICoKKyAqLworCisjaWZuZGVmIF9JTkNMVURFX0gzNjAwX0dQSU9fSF8KKyNkZWZpbmUgX0lOQ0xVREVfSDM2MDBfR1BJT19IXworCisvKgorICogR1BJTyBsaW5lcyB0aGF0IGFyZSBjb21tb24gYWNyb3NzIEFMTCBpUEFRIG1vZGVscyBhcmUgaW4gImgzNjAwLmgiCisgKiBUaGlzIGZpbGUgY29udGFpbnMgbWFjaGluZS1zcGVjaWZpYyBkZWZpbml0aW9ucworICovCisKKyNkZWZpbmUgR1BJT19IMzYwMF9TVVNQRU5EICAgICAgICAgICAgICBHUElPX0dQSU8gKDApCisvKiBHUElPWzI6OV0gdXNlZCBieSBMQ0Qgb24gSDM2MDAvMzgwMCwgdXNlZCBhcyBHUElPIG9uIEgzMTAwICovCisjZGVmaW5lIEdQSU9fSDMxMDBfQlRfT04JCUdQSU9fR1BJTyAoMikKKyNkZWZpbmUgR1BJT19IMzEwMF9HUElPMwkJR1BJT19HUElPICgzKQorI2RlZmluZSBHUElPX0gzMTAwX1FNVVRFCQlHUElPX0dQSU8gKDQpCisjZGVmaW5lIEdQSU9fSDMxMDBfTENEXzNWX09OCQlHUElPX0dQSU8gKDUpCisjZGVmaW5lIEdQSU9fSDMxMDBfQVVEX09OCQlHUElPX0dQSU8gKDYpCisjZGVmaW5lIEdQSU9fSDMxMDBfQVVEX1BXUl9PTgkJR1BJT19HUElPICg3KQorI2RlZmluZSBHUElPX0gzMTAwX0lSX09OCQlHUElPX0dQSU8gKDgpCisjZGVmaW5lIEdQSU9fSDMxMDBfSVJfRlNFTAkJR1BJT19HUElPICg5KQorCisvKiBmb3IgSDM2MDAsIGF1ZGlvIHNhbXBsZSByYXRlIGNsb2NrIGdlbmVyYXRvciAqLworI2RlZmluZSBHUElPX0gzNjAwX0NMS19TRVQwCQlHUElPX0dQSU8gKDEyKQorI2RlZmluZSBHUElPX0gzNjAwX0NMS19TRVQxCQlHUElPX0dQSU8gKDEzKQorCisjZGVmaW5lIEdQSU9fSDM2MDBfQUNUSU9OX0JVVFRPTglHUElPX0dQSU8gKDE4KQorI2RlZmluZSBHUElPX0gzNjAwX1NPRlRfUkVTRVQgICAgICAgICAgIEdQSU9fR1BJTyAoMjApICAgLyogQWxzbyBrbm93biBhcyBCQVRUX0ZBVUxUICovCisjZGVmaW5lIEdQSU9fSDM2MDBfT1BUX0xPQ0sJCUdQSU9fR1BJTyAoMjIpCisjZGVmaW5lIEdQSU9fSDM2MDBfT1BUX0RFVAkJR1BJT19HUElPICgyNykKKworLyogSDM4MDAgc3BlY2lmaWMgcGlucyAqLworI2RlZmluZSBHUElPX0gzODAwX0FDX0lOICAgICAgICAgICAgICAgIEdQSU9fR1BJTyAoMTIpCisjZGVmaW5lIEdQSU9fSDM4MDBfQ09NX0RTUiAgICAgICAgICAgICAgR1BJT19HUElPICgxMykKKyNkZWZpbmUgR1BJT19IMzgwMF9NTUNfSU5UICAgICAgICAgICAgICBHUElPX0dQSU8gKDE4KQorI2RlZmluZSBHUElPX0gzODAwX05PUFRfSU5EICAgICAgICAgICAgIEdQSU9fR1BJTyAoMjApICAgLyogQWxtb3N0IGV4YWN0bHkgdGhlIHNhbWUgYXMgR1BJT19IMzYwMF9PUFRfREVUICovCisjZGVmaW5lIEdQSU9fSDM4MDBfT1BUX0JBVF9GQVVMVCAgICAgICAgR1BJT19HUElPICgyMikKKyNkZWZpbmUgR1BJT19IMzgwMF9DTEtfT1VUICAgICAgICAgICAgICBHUElPX0dQSU8gKDI3KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBJUlFfR1BJT19IMzYwMF9BQ1RJT05fQlVUVE9OICAgIElSUV9HUElPMTgKKyNkZWZpbmUgSVJRX0dQSU9fSDM2MDBfT1BUX0RFVAkJSVJRX0dQSU8yNworCisjZGVmaW5lIElSUV9HUElPX0gzODAwX01NQ19JTlQgICAgICAgICAgSVJRX0dQSU8xOAorI2RlZmluZSBJUlFfR1BJT19IMzgwMF9OT1BUX0lORCAgICAgICAgIElSUV9HUElPMjAgLyogYWxtb3N0IHNhbWUgYXMgT1BUX0RFVCAqLworCisvKiBIMzEwMCAvIDM2MDAgRUdQSU8gcGlucyAqLworI2RlZmluZSBFR1BJT19IMzYwMF9WUFBfT04JCSgxIDw8IDApCisjZGVmaW5lIEVHUElPX0gzNjAwX0NBUkRfUkVTRVQJCSgxIDw8IDEpICAgLyogcmVzZXQgdGhlIGF0dGFjaGVkIHBjbWNpYS9jb21wYWN0Zmxhc2ggY2FyZC4gIGFjdGl2ZSBoaWdoLiAqLworI2RlZmluZSBFR1BJT19IMzYwMF9PUFRfUkVTRVQJCSgxIDw8IDIpICAgLyogcmVzZXQgdGhlIGF0dGFjaGVkIG9wdGlvbiBwYWNrLiAgYWN0aXZlIGhpZ2guICovCisjZGVmaW5lIEVHUElPX0gzNjAwX0NPREVDX05SRVNFVAkoMSA8PCAzKSAgIC8qIHJlc2V0IHRoZSBvbmJvYXJkIFVEQTEzNDEuICBhY3RpdmUgbG93LiAqLworI2RlZmluZSBFR1BJT19IMzYwMF9PUFRfTlZSQU1fT04JKDEgPDwgNCkgICAvKiBhcHBseSBwb3dlciB0byBvcHRpb25wYWNrIG52cmFtLCBhY3RpdmUgaGlnaC4gKi8KKyNkZWZpbmUgRUdQSU9fSDM2MDBfT1BUX09OCQkoMSA8PCA1KSAgIC8qIGZ1bGwgcG93ZXIgdG8gb3B0aW9uIHBhY2suICBhY3RpdmUgaGlnaC4gKi8KKyNkZWZpbmUgRUdQSU9fSDM2MDBfTENEX09OCQkoMSA8PCA2KSAgIC8qIGVuYWJsZSAzLjNWIHRvIExDRC4gIGFjdGl2ZSBoaWdoLiAqLworI2RlZmluZSBFR1BJT19IMzYwMF9SUzIzMl9PTgkJKDEgPDwgNykgICAvKiBVQVJUMyB0cmFuc2NlaXZlciBmb3JjZSBvbi4gIEFjdGl2ZSBoaWdoLiAqLworCisvKiBIMzYwMCBvbmx5IEVHUElPIHBpbnMgKi8KKyNkZWZpbmUgRUdQSU9fSDM2MDBfTENEX1BDSQkJKDEgPDwgOCkgICAvKiBMQ0QgY29udHJvbCBJQyBlbmFibGUuICBhY3RpdmUgaGlnaC4gKi8KKyNkZWZpbmUgRUdQSU9fSDM2MDBfSVJfT04JCSgxIDw8IDkpICAgLyogYXBwbHkgcG93ZXIgdG8gSVIgbW9kdWxlLiAgYWN0aXZlIGhpZ2guICovCisjZGVmaW5lIEVHUElPX0gzNjAwX0FVRF9BTVBfT04JCSgxIDw8IDEwKSAgLyogYXBwbHkgcG93ZXIgdG8gYXVkaW8gcG93ZXIgYW1wLiAgYWN0aXZlIGhpZ2guICovCisjZGVmaW5lIEVHUElPX0gzNjAwX0FVRF9QV1JfT04JCSgxIDw8IDExKSAgLyogYXBwbHkgcG93ZXIgdG8gcmVzZXQgb2YgYXVkaW8gY2lyY3VpdC4gIGFjdGl2ZSBoaWdoLiAqLworI2RlZmluZSBFR1BJT19IMzYwMF9RTVVURQkJKDEgPDwgMTIpICAvKiBtdXRlIGNvbnRyb2wgZm9yIG9uYm9hcmQgVURBMTM0MS4gIGFjdGl2ZSBoaWdoLiAqLworI2RlZmluZSBFR1BJT19IMzYwMF9JUl9GU0VMCQkoMSA8PCAxMykgIC8qIElSIHNwZWVkIHNlbGVjdDogMS0+ZmFzdCwgMC0+c2xvdyAqLworI2RlZmluZSBFR1BJT19IMzYwMF9MQ0RfNVZfT04JCSgxIDw8IDE0KSAgLyogZW5hYmxlIDVWIHRvIExDRC4gYWN0aXZlIGhpZ2guICovCisjZGVmaW5lIEVHUElPX0gzNjAwX0xWRERfT04JCSgxIDw8IDE1KSAgLyogZW5hYmxlIDlWIGFuZCAtNi41ViB0byBMQ0QuICovCisKKy8qKioqKioqKioqKioqKioqKioqKiogSDM4MDAsIEFTSUMgIzIgKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0Jhc2UgICAgICAgICAgICAoSDM2MDBfRUdQSU9fVklSVCkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfT0ZGU0VUKHMseCx5KSAgICBcCisgICAgKCooKHZvbGF0aWxlIHMgKikgKF9IMzgwMF9BU0lDMl9CYXNlICsgX0gzODAwX0FTSUMyXyAjIyB4ICMjIF9CYXNlICsgX0gzODAwX0FTSUMyXyAjIyB4ICMjIF8gIyMgeSkpKQorI2RlZmluZSBIMzgwMF9BU0lDMl9OT0ZGU0VUKHMseCxuLHkpIFwKKyAgICAoKigodm9sYXRpbGUgcyAqKSAoX0gzODAwX0FTSUMyX0Jhc2UgKyBfSDM4MDBfQVNJQzJfICMjIHggIyMgXyAjIyBuICMjIF9CYXNlICsgX0gzODAwX0FTSUMyXyAjIyB4ICMjIF8gIyMgeSkpKQorCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9HUElPX0Jhc2UgICAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBfSDM4MDBfQVNJQzJfR1BJT19EaXJlY3Rpb24gICAgICAgICAgICAweDAwMDAgICAgLyogUi9XLCAxNiBiaXRzIDE6aW5wdXQsIDA6b3V0cHV0ICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdFR5cGUgICAgICAgIDB4MDAwNCAgICAvKiBSL1csIDEyIGJpdHMgMTplZGdlLCAwOmxldmVsICAgICAgICAgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdEVkZ2VUeXBlICAgIDB4MDAwOCAgICAvKiBSL1csIDEyIGJpdHMgMTpyaXNpbmcsIDA6ZmFsbGluZyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfR1BJT19JbnRlcnJ1cHRMZXZlbFR5cGUgICAweDAwMEMgICAgLyogUi9XLCAxMiBiaXRzIDE6aGlnaCwgMDpsb3cgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdENsZWFyICAgICAgIDB4MDAxMCAgICAvKiBXLCAgIDEyIGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0dQSU9fSW50ZXJydXB0RmxhZyAgICAgICAgMHgwMDEwICAgIC8qIFIsICAgMTIgYml0cyAtIHJlYWRzIGludCBzdGF0dXMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0dQSU9fRGF0YSAgICAgICAgICAgICAgICAgMHgwMDE0ICAgIC8qIFIvVywgMTYgYml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfR1BJT19CYXR0RmF1bHRPdXQgICAgICAgICAweDAwMTggICAgLyogUi9XLCAxNiBiaXQgLSBzZXRzIGxldmVsIG9uIGJhdHQgZmF1bHQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0dQSU9fSW50ZXJydXB0RW5hYmxlICAgICAgMHgwMDFjICAgIC8qIFIvVywgMTIgYml0cyAxOmVuYWJsZSBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0dQSU9fQWx0ZXJuYXRlICAgICAgICAgICAgMHgwMDNjICAgIC8qIFIvVywgMTIrMSBiaXRzIC0gc2V0IGFsdGVybmF0ZSBmdW5jdGlvbnMgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMl9HUElPX0RpcmVjdGlvbiAgICAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgR1BJTywgRGlyZWN0aW9uICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfR1BJT19JbnRlcnJ1cHRUeXBlICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1MTYsIEdQSU8sIEludGVycnVwdFR5cGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdEVkZ2VUeXBlICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgR1BJTywgSW50ZXJydXB0RWRnZVR5cGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdExldmVsVHlwZSBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgR1BJTywgSW50ZXJydXB0TGV2ZWxUeXBlICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfR1BJT19JbnRlcnJ1cHRDbGVhciAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1MTYsIEdQSU8sIEludGVycnVwdENsZWFyICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfR1BJT19JbnRlcnJ1cHRGbGFnICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1MTYsIEdQSU8sIEludGVycnVwdEZsYWcgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9HUElPX0RhdGEgICAgICAgICAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgR1BJTywgRGF0YSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0dQSU9fQmF0dEZhdWx0T3V0ICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBHUElPLCBCYXR0RmF1bHRPdXQgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9HUElPX0ludGVycnVwdEVuYWJsZSAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgR1BJTywgSW50ZXJydXB0RW5hYmxlICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfR1BJT19BbHRlcm5hdGUgICAgICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1MTYsIEdQSU8sIEFsdGVybmF0ZSApCisKKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMl9JTl9ZMV9OICAgICAgICAgICgxIDw8IDApICAgLyogT3V0cHV0OiBUb3VjaHNjcmVlbiBZMSAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX0lOX1gwICAgICAgICAgICAgKDEgPDwgMSkgICAvKiBPdXRwdXQ6IFRvdWNoc2NyZWVuIFgwICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzJfSU5fWTAgICAgICAgICAgICAoMSA8PCAyKSAgIC8qIE91dHB1dDogVG91Y2hzY3JlZW4gWTAgKi8KKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMl9JTl9YMV9OICAgICAgICAgICgxIDw8IDMpICAgLyogT3V0cHV0OiBUb3VjaHNjcmVlbiBYMSAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX0JUX1JTVCAgICAgICAgICAgKDEgPDwgNCkgICAvKiBPdXRwdXQ6IEJsdWV0b290aCByZXNldCAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX1BFTl9JUlEgICAgICAgICAgKDEgPDwgNSkgICAvKiBJbnB1dCA6IFBlbiBkb3duICAgICAgICAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX1NEX0RFVEVDVCAgICAgICAgKDEgPDwgNikgICAvKiBJbnB1dCA6IFNEIGRldGVjdCAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX0VBUl9JTl9OICAgICAgICAgKDEgPDwgNykgICAvKiBJbnB1dCA6IEF1ZGlvIGphY2sgcGx1ZyBpbnNlcnRlZCAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX09QVF9QQ01fUkVTRVQgICAgKDEgPDwgOCkgICAvKiBPdXRwdXQ6ICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzJfT1BUX1JFU0VUICAgICAgICAoMSA8PCA5KSAgIC8qIE91dHB1dDogKi8KKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMl9VU0JfREVURUNUX04gICAgICgxIDw8IDEwKSAgLyogSW5wdXQgOiAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMyX1NEX0NPTl9TTFQgICAgICAgKDEgPDwgMTEpICAvKiBJbnB1dCA6ICovCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0tQSU9fQmFzZSAgICAgICAgICAgICAgICAgMHgwMjAwCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9LUElPX0RpcmVjdGlvbiAgICAgICAgICAgIDB4MDAwMCAgICAvKiBSL1csIDEyIGJpdHMgMTppbnB1dCwgMDpvdXRwdXQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0VHlwZSAgICAgICAgMHgwMDA0ICAgIC8qIFIvVywgMTIgYml0cyAxOmVkZ2UsIDA6bGV2ZWwgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0RWRnZVR5cGUgICAgMHgwMDA4ICAgIC8qIFIvVywgMTIgYml0cyAxOnJpc2luZywgMDpmYWxsaW5nICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9LUElPX0ludGVycnVwdExldmVsVHlwZSAgIDB4MDAwQyAgICAvKiBSL1csIDEyIGJpdHMgMTpoaWdoLCAwOmxvdyAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0Q2xlYXIgICAgICAgMHgwMDEwICAgIC8qIFcsICAgMjAgYml0cyAtIDggc3BlY2lhbCAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfS1BJT19JbnRlcnJ1cHRGbGFnICAgICAgICAweDAwMTAgICAgLyogUiwgICAyMCBiaXRzIC0gOCBzcGVjaWFsIC0gcmVhZHMgaW50IHN0YXR1cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfS1BJT19EYXRhICAgICAgICAgICAgICAgICAweDAwMTQgICAgLyogUi9XLCAxNiBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9LUElPX0JhdHRGYXVsdE91dCAgICAgICAgIDB4MDAxOCAgICAvKiBSL1csIDE2IGJpdCAtIHNldHMgbGV2ZWwgb24gYmF0dCBmYXVsdCAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfS1BJT19JbnRlcnJ1cHRFbmFibGUgICAgICAweDAwMWMgICAgLyogUi9XLCAyMCBiaXRzIC0gOCBzcGVjaWFsICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9LUElPX0FsdGVybmF0ZSAgICAgICAgICAgIDB4MDAzYyAgICAvKiBSL1csIDYgYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fRGlyZWN0aW9uICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBLUElPLCBEaXJlY3Rpb24gKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX0ludGVycnVwdFR5cGUgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgS1BJTywgSW50ZXJydXB0VHlwZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0RWRnZVR5cGUgIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBLUElPLCBJbnRlcnJ1cHRFZGdlVHlwZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0TGV2ZWxUeXBlIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBLUElPLCBJbnRlcnJ1cHRMZXZlbFR5cGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX0ludGVycnVwdENsZWFyICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUzMiwgS1BJTywgSW50ZXJydXB0Q2xlYXIgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX0ludGVycnVwdEZsYWcgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUzMiwgS1BJTywgSW50ZXJydXB0RmxhZyApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fRGF0YSAgICAgICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBLUElPLCBEYXRhICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfS1BJT19CYXR0RmF1bHRPdXQgICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1MTYsIEtQSU8sIEJhdHRGYXVsdE91dCApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fSW50ZXJydXB0RW5hYmxlICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTMyLCBLUElPLCBJbnRlcnJ1cHRFbmFibGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX0FsdGVybmF0ZSAgICAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHUxNiwgS1BJTywgQWx0ZXJuYXRlICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX1NQSV9JTlQgICAgICAgICggMSA8PCAxNiApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fT1dNX0lOVCAgICAgICAgKCAxIDw8IDE3ICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfS1BJT19BRENfSU5UICAgICAgICAoIDEgPDwgMTggKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX1VBUlRfMF9JTlQgICAgICggMSA8PCAxOSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fVUFSVF8xX0lOVCAgICAgKCAxIDw8IDIwICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfS1BJT19USU1FUl8wX0lOVCAgICAoIDEgPDwgMjEgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9LUElPX1RJTUVSXzFfSU5UICAgICggMSA8PCAyMiApCisjZGVmaW5lIEgzODAwX0FTSUMyX0tQSU9fVElNRVJfMl9JTlQgICAgKCAxIDw8IDIzICkKKworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX1JFQ09SRF9CVE5fTiAgICAgKDEgPDwgMCkgICAvKiBSZWNvcmQgYnV0dG9uICovCisjZGVmaW5lIEtQSU9fSDM4MDBfQVNJQzJfS0VZXzVXMV9OICAgICAgICAoMSA8PCAxKSAgIC8qIEtleXBhZCAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV81VzJfTiAgICAgICAgKDEgPDwgMikgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV81VzNfTiAgICAgICAgKDEgPDwgMykgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV81VzRfTiAgICAgICAgKDEgPDwgNCkgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV81VzVfTiAgICAgICAgKDEgPDwgNSkgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9MRUZUX04gICAgICAgKDEgPDwgNikgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9SSUdIVF9OICAgICAgKDEgPDwgNykgICAvKiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9BUDFfTiAgICAgICAgKDEgPDwgOCkgICAvKiBPbGQgIkNhbGVuZGFyIiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9BUDJfTiAgICAgICAgKDEgPDwgOSkgICAvKiBPbGQgIlNjaGVkdWxlIiAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9BUDNfTiAgICAgICAgKDEgPDwgMTApICAvKiBPbGQgIlEiICAgICAgICAqLworI2RlZmluZSBLUElPX0gzODAwX0FTSUMyX0tFWV9BUDRfTiAgICAgICAgKDEgPDwgMTEpICAvKiBPbGQgIlVuZG8iICAgICAqLworCisvKiBBbHRlcm5hdGUgS1BJTyBmdW5jdGlvbnMgKHNldCBieSBkZWZhdWx0KSAqLworI2RlZmluZSBLUElPX0FMVF9IMzgwMF9BU0lDMl9LRVlfNVcxX04gICAgICAgICgxIDw8IDEpICAgLyogQWN0aW9uIGtleSAqLworI2RlZmluZSBLUElPX0FMVF9IMzgwMF9BU0lDMl9LRVlfNVcyX04gICAgICAgICgxIDw8IDIpICAgLyogSjEgb2Yga2V5cGFkIGlucHV0ICovCisjZGVmaW5lIEtQSU9fQUxUX0gzODAwX0FTSUMyX0tFWV81VzNfTiAgICAgICAgKDEgPDwgMykgICAvKiBKMiBvZiBrZXlwYWQgaW5wdXQgKi8KKyNkZWZpbmUgS1BJT19BTFRfSDM4MDBfQVNJQzJfS0VZXzVXNF9OICAgICAgICAoMSA8PCA0KSAgIC8qIEozIG9mIGtleXBhZCBpbnB1dCAqLworI2RlZmluZSBLUElPX0FMVF9IMzgwMF9BU0lDMl9LRVlfNVc1X04gICAgICAgICgxIDw8IDUpICAgLyogSjQgb2Yga2V5cGFkIGlucHV0ICovCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX1NQSV9CYXNlICAgICAgICAgICAgICAgICAgMHgwNDAwCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9TUElfQ29udHJvbCAgICAgICAgICAgICAgIDB4MDAwMCAgICAvKiBSL1cgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9TUElfRGF0YSAgICAgICAgICAgICAgICAgIDB4MDAwNCAgICAvKiBSL1cgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9TUElfQ2hpcFNlbGVjdERpc2FibGVkICAgIDB4MDAwOCAgICAvKiBXICAgOCBiaXRzICovCisKKyNkZWZpbmUgSDM4MDBfQVNJQzJfU1BJX0NvbnRyb2wgICAgICAgICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgU1BJLCBDb250cm9sICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfU1BJX0RhdGEgICAgICAgICAgICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgU1BJLCBEYXRhICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfU1BJX0NoaXBTZWxlY3REaXNhYmxlZCAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgU1BJLCBDaGlwU2VsZWN0RGlzYWJsZWQgKQorCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9QV01fMF9CYXNlICAgICAgICAgICAgICAgIDB4MDYwMAorI2RlZmluZSBfSDM4MDBfQVNJQzJfUFdNXzFfQmFzZSAgICAgICAgICAgICAgICAweDA3MDAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX1BXTV9UaW1lQmFzZSAgICAgICAgICAgICAgMHgwMDAwICAgIC8qIFIvVyA2IGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX1BXTV9QZXJpb2RUaW1lICAgICAgICAgICAgMHgwMDA0ICAgIC8qIFIvVyAxMiBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9QV01fRHV0eVRpbWUgICAgICAgICAgICAgIDB4MDAwOCAgICAvKiBSL1cgMTIgYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX1BXTV8wX1RpbWVCYXNlICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgUFdNLCAwLCBUaW1lQmFzZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX1BXTV8wX1BlcmlvZFRpbWUgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoIHUxNiwgUFdNLCAwLCBQZXJpb2RUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfUFdNXzBfRHV0eVRpbWUgICAgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBQV00sIDAsIER1dHlUaW1lICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9QV01fMV9UaW1lQmFzZSAgICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFBXTSwgMSwgVGltZUJhc2UgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9QV01fMV9QZXJpb2RUaW1lICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCB1MTYsIFBXTSwgMSwgUGVyaW9kVGltZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX1BXTV8xX0R1dHlUaW1lICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoIHUxNiwgUFdNLCAxLCBEdXR5VGltZSApCisKKyNkZWZpbmUgSDM4MDBfQVNJQzJfUFdNX1RJTUVCQVNFX01BU0sgICAgICAgICAgICAgMHhmICAgIC8qIExvdyA0IGJpdHMgc2V0cyB0aW1lIGJhc2UsIG1heCA9IDggKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfUFdNX1RJTUVCQVNFX0VOQUJMRSAgICAoIDEgPDwgNCApICAgIC8qIEVuYWJsZSBjbG9jayAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9QV01fVElNRUJBU0VfQ0xFQVIgICAgICggMSA8PCA1ICkgICAgLyogQ2xlYXIgdGhlIFBXTSAqLworCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9MRURfMF9CYXNlICAgICAgICAgICAgICAgIDB4MDgwMAorI2RlZmluZSBfSDM4MDBfQVNJQzJfTEVEXzFfQmFzZSAgICAgICAgICAgICAgICAweDA4ODAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0xFRF8yX0Jhc2UgICAgICAgICAgICAgICAgMHgwOTAwCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9MRURfVGltZUJhc2UgICAgICAgICAgICAgIDB4MDAwMCAgICAvKiBSL1cgIDcgYml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfTEVEX1BlcmlvZFRpbWUgICAgICAgICAgICAweDAwMDQgICAgLyogUi9XIDEyIGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX0xFRF9EdXR5VGltZSAgICAgICAgICAgICAgMHgwMDA4ICAgIC8qIFIvVyAxMiBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9MRURfQXV0b1N0b3BDb3VudCAgICAgICAgIDB4MDAwYyAgICAvKiBSL1cgMTYgYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8wX1RpbWVCYXNlICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgTEVELCAwLCBUaW1lQmFzZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8wX1BlcmlvZFRpbWUgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoIHUxNiwgTEVELCAwLCBQZXJpb2RUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzBfRHV0eVRpbWUgICAgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDAsIER1dHlUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzBfQXV0b1N0b3BDbG9jayAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDAsIEF1dG9TdG9wQ2xvY2sgKQorCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8xX1RpbWVCYXNlICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgTEVELCAxLCBUaW1lQmFzZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8xX1BlcmlvZFRpbWUgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoIHUxNiwgTEVELCAxLCBQZXJpb2RUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzFfRHV0eVRpbWUgICAgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDEsIER1dHlUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzFfQXV0b1N0b3BDbG9jayAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDEsIEF1dG9TdG9wQ2xvY2sgKQorCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8yX1RpbWVCYXNlICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgTEVELCAyLCBUaW1lQmFzZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF8yX1BlcmlvZFRpbWUgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoIHUxNiwgTEVELCAyLCBQZXJpb2RUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzJfRHV0eVRpbWUgICAgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDIsIER1dHlUaW1lICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfTEVEXzJfQXV0b1N0b3BDbG9jayAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggdTE2LCBMRUQsIDIsIEF1dG9TdG9wQ2xvY2sgKQorCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF9USU1FQkFTRV9NQVNLICAgICAgICAgICAgMHgwZiAgICAvKiBMb3cgNCBiaXRzIHNldHMgdGltZSBiYXNlLCBtYXggPSAxMyAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9MRURfVElNRUJBU0VfQkxJTksgICAgICggMSA8PCA0ICkgICAgLyogRW5hYmxlIGJsaW5raW5nICovCisjZGVmaW5lIEgzODAwX0FTSUMyX0xFRF9USU1FQkFTRV9BVVRPU1RPUCAgKCAxIDw8IDUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9MRURfVElNRUJBU0VfQUxXQVlTICAgICggMSA8PCA2ICkgICAgLyogRW5hYmxlIGJsaW5rIGFsd2F5cyAqLworCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9VQVJUXzBfQmFzZSAgICAgICAgICAgICAgIDB4MEEwMAorI2RlZmluZSBfSDM4MDBfQVNJQzJfVUFSVF8xX0Jhc2UgICAgICAgICAgICAgICAweDBDMDAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX1VBUlRfUmVjZWl2ZSAgICAgICAgICAgICAgMHgwMDAwICAgIC8qIFIgICAgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9VQVJUX1RyYW5zbWl0ICAgICAgICAgICAgIDB4MDAwMCAgICAvKiAgIFcgIDggYml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfVUFSVF9JbnRFbmFibGUgICAgICAgICAgICAweDAwMDQgICAgLyogUi9XICA4IGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX1VBUlRfSW50VmVyaWZ5ICAgICAgICAgICAgMHgwMDA4ICAgIC8qIFIvVyAgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9VQVJUX0ZJRk9Db250cm9sICAgICAgICAgIDB4MDAwYyAgICAvKiBSL1cgIDggYml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfVUFSVF9MaW5lQ29udHJvbCAgICAgICAgICAweDAwMTAgICAgLyogUi9XICA4IGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX1VBUlRfTW9kZW1TdGF0dXMgICAgICAgICAgMHgwMDE0ICAgIC8qIFIvVyAgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9VQVJUX0xpbmVTdGF0dXMgICAgICAgICAgIDB4MDAxOCAgICAvKiBSL1cgIDggYml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfVUFSVF9TY3JhdGNoUGFkICAgICAgICAgICAweDAwMWMgICAgLyogUi9XICA4IGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX1VBUlRfRGl2aXNvckxhdGNoTCAgICAgICAgMHgwMDIwICAgIC8qIFIvVyAgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9VQVJUX0Rpdmlzb3JMYXRjaEggICAgICAgIDB4MDAyNCAgICAvKiBSL1cgIDggYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMF9SZWNlaXZlICAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMCwgUmVjZWl2ZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMF9UcmFuc21pdCAgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMCwgVHJhbnNtaXQgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzBfSW50RW5hYmxlICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDAsIEludEVuYWJsZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMF9JbnRWZXJpZnkgICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMCwgSW50VmVyaWZ5ICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8wX0ZJRk9Db250cm9sICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAwLCBGSUZPQ29udHJvbCApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMF9MaW5lQ29udHJvbCAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMCwgTGluZUNvbnRyb2wgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzBfTW9kZW1TdGF0dXMgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDAsIE1vZGVtU3RhdHVzICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8wX0xpbmVTdGF0dXMgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAwLCBMaW5lU3RhdHVzICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8wX1NjcmF0Y2hQYWQgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAwLCBTY3JhdGNoUGFkICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8wX0Rpdmlzb3JMYXRjaEwgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAwLCBEaXZpc29yTGF0Y2hMICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8wX0Rpdmlzb3JMYXRjaEggICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAwLCBEaXZpc29yTGF0Y2hIICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzFfUmVjZWl2ZSAgICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDEsIFJlY2VpdmUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzFfVHJhbnNtaXQgICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDEsIFRyYW5zbWl0ICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8xX0ludEVuYWJsZSAgICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAxLCBJbnRFbmFibGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzFfSW50VmVyaWZ5ICAgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDEsIEludFZlcmlmeSApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMV9GSUZPQ29udHJvbCAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMSwgRklGT0NvbnRyb2wgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9VQVJUXzFfTGluZUNvbnRyb2wgICAgICBIMzgwMF9BU0lDMl9OT0ZGU0VUKCAgdTgsIFVBUlQsIDEsIExpbmVDb250cm9sICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfVUFSVF8xX01vZGVtU3RhdHVzICAgICAgSDM4MDBfQVNJQzJfTk9GRlNFVCggIHU4LCBVQVJULCAxLCBNb2RlbVN0YXR1cyApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMV9MaW5lU3RhdHVzICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMSwgTGluZVN0YXR1cyApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMV9TY3JhdGNoUGFkICAgICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMSwgU2NyYXRjaFBhZCApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMV9EaXZpc29yTGF0Y2hMICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMSwgRGl2aXNvckxhdGNoTCApCisjZGVmaW5lIEgzODAwX0FTSUMyX1VBUlRfMV9EaXZpc29yTGF0Y2hIICAgIEgzODAwX0FTSUMyX05PRkZTRVQoICB1OCwgVUFSVCwgMSwgRGl2aXNvckxhdGNoSCApCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX1RJTUVSX0Jhc2UgICAgICAgICAgICAgICAgMHgwRTAwCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9USU1FUl9Db21tYW5kICAgICAgICAgICAgIDB4MDAwMCAgICAvKiBSL1cgIDggYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX1RJTUVSX0NvbW1hbmQgICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTgsIFRpbWVyLCBDb21tYW5kICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9USU1FUl9HQVRfMCAgICAgICAgICAgICggMSA8PCAwICkgICAgLyogR2F0ZSBlbmFibGUsIGNvdW50ZXIgMCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9USU1FUl9HQVRfMSAgICAgICAgICAgICggMSA8PCAxICkgICAgLyogR2F0ZSBlbmFibGUsIGNvdW50ZXIgMSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9USU1FUl9HQVRfMiAgICAgICAgICAgICggMSA8PCAyICkgICAgLyogR2F0ZSBlbmFibGUsIGNvdW50ZXIgMiAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9USU1FUl9DTEtfMCAgICAgICAgICAgICggMSA8PCAzICkgICAgLyogQ2xvY2sgZW5hYmxlLCBjb3VudGVyIDAgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfVElNRVJfQ0xLXzEgICAgICAgICAgICAoIDEgPDwgNCApICAgIC8qIENsb2NrIGVuYWJsZSwgY291bnRlciAxICovCisjZGVmaW5lIEgzODAwX0FTSUMyX1RJTUVSX0NMS18yICAgICAgICAgICAgKCAxIDw8IDUgKSAgICAvKiBDbG9jayBlbmFibGUsIGNvdW50ZXIgMiAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9USU1FUl9NT0RFXzAgICAgICAgICAgICggMSA8PCA2ICkgICAgLyogTW9kZSAwIGVuYWJsZSwgY291bnRlciAwICovCisjZGVmaW5lIEgzODAwX0FTSUMyX1RJTUVSX01PREVfMSAgICAgICAgICAgKCAxIDw8IDcgKSAgICAvKiBNb2RlIDAgZW5hYmxlLCBjb3VudGVyIDEgKi8KKworI2RlZmluZSBfSDM4MDBfQVNJQzJfQ0xPQ0tfQmFzZSAgICAgICAgICAgICAgICAweDEwMDAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0NMT0NLX0VuYWJsZSAgICAgICAgICAgICAgMHgwMDAwICAgIC8qIFIvVyAgMTggYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX0NMT0NLX0VuYWJsZSAgICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTMyLCBDTE9DSywgRW5hYmxlICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19BVURJT18xICAgICAgICAgICAgICAweDAwMDEgICAgLyogRW5hYmxlIDQuMSBNSHogY2xvY2sgZm9yIDhLaHogYW5kIDRraHogc2FtcGxlIHJhdGUgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfQ0xPQ0tfQVVESU9fMiAgICAgICAgICAgICAgMHgwMDAyICAgIC8qIEVuYWJsZSAxMi4zIE1IeiBjbG9jayBmb3IgNDhLaHogYW5kIDMya2h6IHNhbXBsZSByYXRlICovCisjZGVmaW5lIEgzODAwX0FTSUMyX0NMT0NLX0FVRElPXzMgICAgICAgICAgICAgIDB4MDAwNCAgICAvKiBFbmFibGUgNS42IE1IeiBjbG9jayBmb3IgMTEga0haIHNhbXBsZSByYXRlICovCisjZGVmaW5lIEgzODAwX0FTSUMyX0NMT0NLX0FVRElPXzQgICAgICAgICAgICAgIDB4MDAwOCAgICAvKiBFbmFibGUgMTEuMjg5IE1IeiBjbG9jayBmb3IgNDQgYW5kIDIyIGtIeiBzYW1wbGUgcmF0ZSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19BREMgICAgICAgICAgICAgICggMSA8PCA0ICkgICAgLyogMS4wMjQgTUh6IGNsb2NrIHRvIEFEQyAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TUEkgICAgICAgICAgICAgICggMSA8PCA1ICkgICAgLyogNC4wOTYgTUh6IGNsb2NrIHRvIFNQSSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19PV00gICAgICAgICAgICAgICggMSA8PCA2ICkgICAgLyogNC4wOTYgTUh6IGNsb2NrIHRvIE9XTSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19QV00gICAgICAgICAgICAgICggMSA8PCA3ICkgICAgLyogMi4wNDggTUh6IGNsb2NrIHRvIFBXTSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19VQVJUXzEgICAgICAgICAgICggMSA8PCA4ICkgICAgLyogMjQuNTc2IE1IeiBjbG9jayB0byBVQVJUMSAodHVybiBvZmYgYml0IDE2KSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19VQVJUXzAgICAgICAgICAgICggMSA8PCA5ICkgICAgLyogMjQuNTc2IE1IeiBjbG9jayB0byBVQVJUMCAodHVybiBvZmYgYml0IDE3KSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TRF8xICAgICAgICAgICAgICggMSA8PCAxMCApICAgLyogMTYuOTM0IE1IeiB0byBTRCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TRF8yICAgICAgICAgICAgICggMiA8PCAxMCApICAgLyogMjQuNTc2IE1IeiB0byBTRCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TRF8zICAgICAgICAgICAgICggMyA8PCAxMCApICAgLyogMzMuODY5IE1IeiB0byBTRCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TRF80ICAgICAgICAgICAgICggNCA8PCAxMCApICAgLyogNDkuMTUyIE1IeiB0byBTRCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19FWDAgICAgICAgICAgICAgICggMSA8PCAxMyApICAgLyogRW5hYmxlIDMyLjc2OCBrSHogY3J5c3RhbCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19FWDEgICAgICAgICAgICAgICggMSA8PCAxNCApICAgLyogRW5hYmxlIDI0LjU3NiBNSHogY3J5c3RhbCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19FWDIgICAgICAgICAgICAgICggMSA8PCAxNSApICAgLyogRW5hYmxlIDMzLjg2OSBNSHogY3J5c3RhbCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9DTE9DS19TTE9XX1VBUlRfMSAgICAgICggMSA8PCAxNiApICAgLyogRW5hYmxlIDMuNjg2IE1IeiB0byBVQVJUMSAodHVybiBvZmYgYml0IDgpICovCisjZGVmaW5lIEgzODAwX0FTSUMyX0NMT0NLX1NMT1dfVUFSVF8wICAgICAgKCAxIDw8IDE3ICkgICAvKiBFbmFibGUgMy42ODYgTUh6IHRvIFVBUlQwICh0dXJuIG9mZiBiaXQgOSkgKi8KKworI2RlZmluZSBfSDM4MDBfQVNJQzJfQURDX0Jhc2UgICAgICAgICAgICAgICAgICAweDEyMDAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0FEQ19NdWx0aXBsZXhlciAgICAgICAgICAgMHgwMDAwICAgIC8qIFIvVyA0IGJpdHMgLSBsb3cgMyBiaXRzIHNldCBjaGFubmVsICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9BRENfQ29udHJvbFN0YXR1cyAgICAgICAgIDB4MDAwNCAgICAvKiBSL1cgOCBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9BRENfRGF0YSAgICAgICAgICAgICAgICAgIDB4MDAwOCAgICAvKiBSICAgMTAgYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX0FEQ19NdWx0aXBsZXhlciAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoICB1OCwgQURDLCBNdWx0aXBsZXhlciApCisjZGVmaW5lIEgzODAwX0FTSUMyX0FEQ19Db250cm9sU3RhdHVzICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoICB1OCwgQURDLCBDb250cm9sU3RhdHVzICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfQURDX0RhdGEgICAgICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTE2LCBBREMsIERhdGEgKQorCisjZGVmaW5lIEgzNjAwX0FTSUMyX0FEQ19NVVhfQ0hBTk5FTF9NQVNLICAgICAgICAgMHgwNyAgICAvKiBMb3cgMyBiaXRzIHNldHMgY2hhbm5lbC4gIG1heCA9IDQgKi8KKyNkZWZpbmUgSDM2MDBfQVNJQzJfQURDX01VWF9DTEtFTiAgICAgICAgICAoIDEgPDwgMyApICAgIC8qIEVuYWJsZSBjbG9jayAqLworCisjZGVmaW5lIEgzNjAwX0FTSUMyX0FEQ19DU1JfQURQU19NQVNLICAgICAgICAgICAgMHgwZiAgICAvKiBMb3cgNCBiaXRzIHNldHMgcHJlc2NhbGUsIG1heCA9IDggKi8KKyNkZWZpbmUgSDM2MDBfQVNJQzJfQURDX0NTUl9GUkVFX1JVTiAgICAgICAoIDEgPDwgNCApCisjZGVmaW5lIEgzNjAwX0FTSUMyX0FEQ19DU1JfSU5UX0VOQUJMRSAgICAgKCAxIDw8IDUgKQorI2RlZmluZSBIMzYwMF9BU0lDMl9BRENfQ1NSX1NUQVJUICAgICAgICAgICggMSA8PCA2ICkgICAgLyogU2V0IHRvIHN0YXJ0IGNvbnZlcnNpb24uICBHb2VzIHRvIDAgd2hlbiBkb25lICovCisjZGVmaW5lIEgzNjAwX0FTSUMyX0FEQ19DU1JfRU5BQkxFICAgICAgICAgKCAxIDw8IDcgKSAgICAvKiAxOnBvd2VyIHVwIEFEQywgMDpwb3dlciBkb3duICovCisKKworI2RlZmluZSBfSDM4MDBfQVNJQzJfSU5UUl9CYXNlICAgICAgICAgICAgICAgICAweDE2MDAKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0lOVFJfTWFza0FuZEZsYWcgICAgICAgICAgMHgwMDAwICAgIC8qIFIvKFcpIDhiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9JTlRSX0Nsb2NrUHJlc2NhbGUgICAgICAgIDB4MDAwNCAgICAvKiBSLyhXKSA1Yml0cyAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfSU5UUl9UaW1lclNldCAgICAgICAgICAgICAweDAwMDggICAgLyogUi8oVykgOGJpdHMgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMl9JTlRSX01hc2tBbmRGbGFnICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgSU5UUiwgTWFza0FuZEZsYWcgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9JTlRSX0Nsb2NrUHJlc2NhbGUgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgSU5UUiwgQ2xvY2tQcmVzY2FsZSApCisjZGVmaW5lIEgzODAwX0FTSUMyX0lOVFJfVGltZXJTZXQgICAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHU4LCBJTlRSLCBUaW1lclNldCApCisKKyNkZWZpbmUgSDM4MDBfQVNJQzJfSU5UUl9HTE9CQUxfTUFTSyAgICAgICAoIDEgPDwgMCApICAgIC8qIEdsb2JhbCBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9JTlRSX1BPV0VSX09OX1JFU0VUICAgICggMSA8PCAxICkgICAgLyogMDE6IFBvd2VyIG9uIHJlc2V0IChiaXRzIDEgJiAyICkgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfSU5UUl9FWFRFUk5BTF9SRVNFVCAgICAoIDIgPDwgMSApICAgIC8qIDEwOiBFeHRlcm5hbCByZXNldCAoYml0cyAxICYgMiApICovCisjZGVmaW5lIEgzODAwX0FTSUMyX0lOVFJfTUFTS19VQVJUXzAgICAgICAgKCAxIDw8IDQgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9JTlRSX01BU0tfVUFSVF8xICAgICAgICggMSA8PCA1ICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfSU5UUl9NQVNLX1RJTUVSICAgICAgICAoIDEgPDwgNiApCisjZGVmaW5lIEgzODAwX0FTSUMyX0lOVFJfTUFTS19PV00gICAgICAgICAgKCAxIDw8IDcgKQorCisjZGVmaW5lIEgzODAwX0FTSUMyX0lOVFJfQ0xPQ0tfUFJFU0NBTEUgICAgICAgICAgMHgwZiAgICAvKiA0IGJpdHMsIG1heCAxNCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9JTlRSX1NFVCAgICAgICAgICAgICAgICggMSA8PCA0ICkgICAgLyogVGltZSBiYXNlIGVuYWJsZSAqLworCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX09XTV9CYXNlICAgICAgICAgICAgICAgICAgMHgxODAwCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9PV01fQ29tbWFuZCAgICAgICAgICAgICAgIDB4MDAwMCAgICAvKiBSL1cgNCBiaXRzIGNvbW1hbmQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX09XTV9EYXRhICAgICAgICAgICAgICAgICAgMHgwMDA0ICAgIC8qIFIvVyA4IGJpdHMsIHRyYW5zbWl0IC8gcmVjZWl2ZSBidWZmZXIgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMyX09XTV9JbnRlcnJ1cHQgICAgICAgICAgICAgMHgwMDA4ICAgIC8qIFIvVyBDb21tYW5kIHJlZ2lzdGVyICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMl9PV01fSW50ZXJydXB0RW5hYmxlICAgICAgIDB4MDAwYyAgICAvKiBSL1cgQ29tbWFuZCByZWdpc3RlciAqLworI2RlZmluZSBfSDM4MDBfQVNJQzJfT1dNX0Nsb2NrRGl2aXNvciAgICAgICAgICAweDAwMTAgICAgLyogUi9XIDUgYml0cyBvZiBkaXZpc29yIGFuZCBwcmUtc2NhbGUgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fQ29tbWFuZCAgICAgICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTgsIE9XTSwgQ29tbWFuZCApCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9EYXRhICAgICAgICAgICAgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgT1dNLCBEYXRhICkKKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0ludGVycnVwdCAgICAgICAgICBIMzgwMF9BU0lDMl9PRkZTRVQoIHU4LCBPV00sIEludGVycnVwdCApCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9JbnRlcnJ1cHRFbmFibGUgICAgSDM4MDBfQVNJQzJfT0ZGU0VUKCB1OCwgT1dNLCBJbnRlcnJ1cHRFbmFibGUgKQorI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fQ2xvY2tEaXZpc29yICAgICAgIEgzODAwX0FTSUMyX09GRlNFVCggdTgsIE9XTSwgQ2xvY2tEaXZpc29yICkKKworI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fQ01EX09ORV9XSVJFX1JFU0VUICggMSA8PCAwICkgICAgLyogU2V0IHRvIGZvcmNlIHJlc2V0IG9uIDEtd2lyZSBidXMgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0NNRF9TUkEgICAgICAgICAgICAoIDEgPDwgMSApICAgIC8qIFNldCB0byBzd2l0Y2ggdG8gU2VhcmNoIFJPTSBhY2NlbGVyYXRvciBtb2RlICovCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9DTURfRFFfT1VUUFVUICAgICAgKCAxIDw8IDIgKSAgICAvKiBXcml0ZSBvbmx5IC0gZm9yY2VzIGJ1cyBsb3cgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0NNRF9EUV9JTlBVVCAgICAgICAoIDEgPDwgMyApICAgIC8qIFJlYWQgb25seSAtIHJlZmxlY3RzIHN0YXRlIG9mIGJ1cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9JTlRfUEQgICAgICAgICAgICAgKCAxIDw8IDAgKSAgICAvKiBQcmVzZW5jZSBkZXRlY3QgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0lOVF9QRFIgICAgICAgICAgICAoIDEgPDwgMSApICAgIC8qIFByZXNlbmNlIGRldGVjdCByZXN1bHQgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0lOVF9UQkUgICAgICAgICAgICAoIDEgPDwgMiApICAgIC8qIFRyYW5zbWl0IGJ1ZmZlciBlbXB0eSAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fSU5UX1RFTVQgICAgICAgICAgICggMSA8PCAzICkgICAgLyogVHJhbnNtaXQgc2hpZnQgcmVnaXN0ZXIgZW1wdHkgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0lOVF9SQkYgICAgICAgICAgICAoIDEgPDwgNCApICAgIC8qIFJlY2VpdmUgYnVmZmVyIGZ1bGwgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fSU5URU5fRVBEICAgICAgICAgICggMSA8PCAwICkgICAgLyogRW5hYmxlIHJlY2VpdmUgYnVmZmVyIGZ1bGwgaW50ZXJydXB0ICovCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9JTlRFTl9JQVMgICAgICAgICAgKCAxIDw8IDEgKSAgICAvKiBFbmFibGUgdHJhbnNtaXQgc2hpZnQgcmVnaXN0ZXIgZW1wdHkgaW50ZXJydXB0ICovCisjZGVmaW5lIEgzODAwX0FTSUMyX09XTV9JTlRFTl9FVEJFICAgICAgICAgKCAxIDw8IDIgKSAgICAvKiBFbmFibGUgdHJhbnNtaXQgYnVmZmVyIGVtcHR5IGludGVycnVwdCAqLworI2RlZmluZSBIMzgwMF9BU0lDMl9PV01fSU5URU5fRVRNVCAgICAgICAgICggMSA8PCAzICkgICAgLyogSU5UUiBhY3RpdmUgc3RhdGUgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzJfT1dNX0lOVEVOX0VSQkYgICAgICAgICAoIDEgPDwgNCApICAgIC8qIEVuYWJsZSBwcmVzZW5jZSBkZXRlY3QgaW50ZXJydXB0ICovCisKKyNkZWZpbmUgX0gzODAwX0FTSUMyX0ZsYXNoQ3RsX0Jhc2UgICAgICAgICAgICAgMHgxQTAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogSDM4MDAsIEFTSUMgIzEKKyAqIFRoaXMgQVNJQyBpcyBhY2Nlc2VkIHRocm91Z2ggQVNJQyAjMiwgYW5kCisgKiBtYXBwZWQgaW50byB0aGUgMWMwMCAtIDFmMDAgcmVnaW9uCisgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMV9PRkZTRVQocyx4LHkpICAgXAorICAgICAoKigodm9sYXRpbGUgcyAqKSAoX0gzODAwX0FTSUMyX0Jhc2UgKyBfSDM4MDBfQVNJQzFfICMjIHggIyMgX0Jhc2UgKyAoX0gzODAwX0FTSUMxXyAjIyB4ICMjIF8gIyMgeSA8PCAxKSkpKQorCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfQmFzZSAgICAgICAgICAgICAweDFjMDAKKworI2RlZmluZSBfSDM4MDBfQVNJQzFfTU1DX1N0YXJ0U3RvcENsb2NrICAgICAweDAwICAgIC8qIFIvVyA4Yml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfU3RhdHVzICAgICAgICAgICAgIDB4MDIgICAgLyogUiAgIFNlZSBiZWxvdywgZGVmYXVsdCAweDAwNDAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19DbG9ja1JhdGUgICAgICAgICAgMHgwNCAgICAvKiBSL1cgOGJpdCwgbG93IDMgYml0cyBhcmUgY2xvY2sgZGl2aXNvciAgICAqLworI2RlZmluZSBfSDM4MDBfQVNJQzFfTU1DX1NQSVJlZ2lzdGVyICAgICAgICAweDA4ICAgIC8qIFIvVyA4Yml0LCBzZWUgYmVsb3cgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfQ21kRGF0YUNvbnQgICAgICAgIDB4MGEgICAgLyogUi9XIDhiaXQsIHdyaXRlIHRvIHN0YXJ0IE1NQyBhZGFwdGVyICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19SZXNwb25zZVRpbWVvdXQgICAgMHgwYyAgICAvKiBSL1cgOGJpdCwgY2xvY2tzIGJlZm9yZSByZXNwb25zZSB0aW1lb3V0ICAqLworI2RlZmluZSBfSDM4MDBfQVNJQzFfTU1DX1JlYWRUaW1lb3V0ICAgICAgICAweDBlICAgIC8qIFIvVyAxNmJpdCwgY2xvY2tzIGJlZm9yZSByZWNlaXZlZCBkYXRhIHRpbWVvdXQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19CbG9ja0xlbmd0aCAgICAgICAgMHgxMCAgICAvKiBSL1cgMTBiaXQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19OdW1PZkJsb2NrcyAgICAgICAgMHgxMiAgICAvKiBSL1cgMTZiaXQsIGluIGJsb2NrIG1vZGUsIG51bWJlciBvZiBibG9ja3MgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfSW50ZXJydXB0TWFzayAgICAgIDB4MWEgICAgLyogUi9XIDhiaXQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19Db21tYW5kTnVtYmVyICAgICAgMHgxYyAgICAvKiBSL1cgNiBiaXRzICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfQXJndW1lbnRIICAgICAgICAgIDB4MWUgICAgLyogUi9XIDE2IGJpdHMgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfQXJndW1lbnRMICAgICAgICAgIDB4MjAgICAgLyogUi9XIDE2IGJpdHMgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX01NQ19SZXNGaWZvICAgICAgICAgICAgMHgyMiAgICAvKiBSICAgOCB4IDE2IGJpdHMgLSBjb250YWlucyByZXNwb25zZSBGSUZPICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9NTUNfQnVmZmVyUGFydEZ1bGwgICAgIDB4MjggICAgLyogUi9XIDggYml0cyAqLworCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19TdGFydFN0b3BDbG9jayAgICBIMzgwMF9BU0lDMV9PRkZTRVQoICB1OCwgTU1DLCBTdGFydFN0b3BDbG9jayApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19TdGF0dXMgICAgICAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgTU1DLCBTdGF0dXMgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfQ2xvY2tSYXRlICAgICAgICAgSDM4MDBfQVNJQzFfT0ZGU0VUKCAgdTgsIE1NQywgQ2xvY2tSYXRlICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NQSVJlZ2lzdGVyICAgICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBNTUMsIFNQSVJlZ2lzdGVyICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NtZERhdGFDb250ICAgICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBNTUMsIENtZERhdGFDb250ICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1Jlc3BvbnNlVGltZW91dCAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBNTUMsIFJlc3BvbnNlVGltZW91dCApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19SZWFkVGltZW91dCAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgTU1DLCBSZWFkVGltZW91dCApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19CbG9ja0xlbmd0aCAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgTU1DLCBCbG9ja0xlbmd0aCApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19OdW1PZkJsb2NrcyAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgTU1DLCBOdW1PZkJsb2NrcyApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19JbnRlcnJ1cHRNYXNrICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoICB1OCwgTU1DLCBJbnRlcnJ1cHRNYXNrICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NvbW1hbmROdW1iZXIgICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBNTUMsIENvbW1hbmROdW1iZXIgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfQXJndW1lbnRIICAgICAgICAgSDM4MDBfQVNJQzFfT0ZGU0VUKCB1MTYsIE1NQywgQXJndW1lbnRIICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0FyZ3VtZW50TCAgICAgICAgIEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBNTUMsIEFyZ3VtZW50TCApCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19SZXNGaWZvICAgICAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgTU1DLCBSZXNGaWZvICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0J1ZmZlclBhcnRGdWxsICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBNTUMsIEJ1ZmZlclBhcnRGdWxsICkKKworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RPUF9DTE9DSyAgICAgICAgICAgICAgICAgICAoMSA8PCAwKSAgIC8qIFdyaXRlIHRvICJTdGFydFN0b3BDbG9jayIgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVJUX0NMT0NLICAgICAgICAgICAgICAgICAgKDEgPDwgMSkKKworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX1JFQURfVElNRU9VVCAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX1JFU1BPTlNFX1RJTUVPVVQgICAgICAoMSA8PCAxKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX0NSQ19XUklURV9FUlJPUiAgICAgICAoMSA8PCAyKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX0NSQ19SRUFEX0VSUk9SICAgICAgICAoMSA8PCAzKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX1NQSV9SRUFEX0VSUk9SICAgICAgICAoMSA8PCA0KSAgLyogU1BJIGRhdGEgdG9rZW4gZXJyb3IgcmVjZWl2ZWQgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVRVU19DUkNfUkVTUE9OU0VfRVJST1IgICAgKDEgPDwgNSkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVRVU19GSUZPX0VNUFRZICAgICAgICAgICAgKDEgPDwgNikKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVRVU19GSUZPX0ZVTEwgICAgICAgICAgICAgKDEgPDwgNykKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVRVU19DTE9DS19FTkFCTEUgICAgICAgICAgKDEgPDwgOCkgIC8qIE11bHRpTWVkaWFDYXJkIGNsb2NrIHN0b3BwZWQgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX1NUQVRVU19EQVRBX1RSQU5TRkVSX0RPTkUgICAgKDEgPDwgMTEpIC8qIFdyaXRlIG9wZXJhdGlvbiwgaW5kaWNhdGVzIHRyYW5zZmVyIGZpbmlzaGVkICovCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19TVEFUVVNfRU5EX1BST0dSQU0gICAgICAgICAgICgxIDw8IDEyKSAvKiBFbmQgd3JpdGUgYW5kIHJlYWQgb3BlcmF0aW9ucyAqLworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1RBVFVTX0VORF9DT01NQU5EX1JFU1BPTlNFICAoMSA8PCAxMykgLyogRW5kIGNvbW1hbmQgcmVzcG9uc2UgKi8KKworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1BJX1JFR19TUElfRU5BQkxFICAgICAgICAgICAoMSA8PCAwKSAgLyogRW5hYmxlcyBTUEkgbW9kZSAqLworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1BJX1JFR19DUkNfT04gICAgICAgICAgICAgICAoMSA8PCAxKSAgLyogMTp0dXJuIG9uIENSQyAgICAqLworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1BJX1JFR19TUElfQ1NfRU5BQkxFICAgICAgICAoMSA8PCAyKSAgLyogMTp0dXJuIG9uIFNQSSBDUyAqLworI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfU1BJX1JFR19DU19BRERSRVNTX01BU0sgICAgICAweDM4ICAgICAgLyogQml0cyAzLDQsNSBhcmUgdGhlIFNQSSBDUyByZWxhdGl2ZSBhZGRyZXNzICovCisKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NNRF9EQVRBX0NPTlRfRk9STUFUX05PX1JFU1BPTlNFICAweDAwCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19DTURfREFUQV9DT05UX0ZPUk1BVF9SMSAgICAgICAgICAgMHgwMQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfQ01EX0RBVEFfQ09OVF9GT1JNQVRfUjIgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NNRF9EQVRBX0NPTlRfRk9STUFUX1IzICAgICAgICAgICAweDAzCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19DTURfREFUQV9DT05UX0RBVEFfRU5BQkxFICAgICAgICAgKDEgPDwgMikgIC8qIFRoaXMgY29tbWFuZCBjb250YWlucyBhIGRhdGEgdHJhbnNmZXIgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NNRF9EQVRBX0NPTlRfV1JJVEUgICAgICAgICAgICAgICAoMSA8PCAzKSAgLyogVGhpcyBkYXRhIHRyYW5zZmVyIGlzIGEgd3JpdGUgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0NNRF9EQVRBX0NPTlRfU1RSRUFNX01PREUgICAgICAgICAoMSA8PCA0KSAgLyogVGhpcyBkYXRhIHRyYW5zZmVyIGlzIGluIHN0cmVhbSBtb2RlICovCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19DTURfREFUQV9DT05UX0JVU1lfQklUICAgICAgICAgICAgKDEgPDwgNSkgIC8qIEJ1c3kgc2lnbmFsIGV4cGVjdGVkIGFmdGVyIGN1cnJlbnQgY21kICovCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19DTURfREFUQV9DT05UX0lOSVRJQUxJWkUgICAgICAgICAgKDEgPDwgNikgIC8qIEVuYWJsZXMgdGhlIDgwIGJpdHMgZm9yIGluaXRpYWxpemluZyBjYXJkICovCisKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0lOVF9NQVNLX0RBVEFfVFJBTlNGRVJfRE9ORSAgICAgICAoMSA8PCAwKQorI2RlZmluZSBIMzgwMF9BU0lDMV9NTUNfSU5UX01BU0tfUFJPR1JBTV9ET05FICAgICAgICAgICAgICgxIDw8IDEpCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19JTlRfTUFTS19FTkRfQ09NTUFORF9SRVNQT05TRSAgICAgKDEgPDwgMikKKyNkZWZpbmUgSDM4MDBfQVNJQzFfTU1DX0lOVF9NQVNLX0JVRkZFUl9SRUFEWSAgICAgICAgICAgICAoMSA8PCAzKQorCisjZGVmaW5lIEgzODAwX0FTSUMxX01NQ19CVUZGRVJfUEFSVF9GVUxMICAgICAgICAgICAgICAgICAgKDEgPDwgMCkKKworLyoqKioqKioqKiBHUElPICoqKioqKioqKiovCisKKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fQmFzZSAgICAgICAgMHgxZTAwCisKKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fTWFzayAgICAgICAgICAweDMwICAgIC8qIFIvVyAwOmRvbid0IG1hc2ssIDE6bWFzayBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fRGlyZWN0aW9uICAgICAweDMyICAgIC8qIFIvVyAwOmlucHV0LCAxOm91dHB1dCAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fT3V0ICAgICAgICAgICAweDM0ICAgIC8qIFIvVyAwOm91dHB1dCBsb3csIDE6b3V0cHV0IGhpZ2ggICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fVHJpZ2dlclR5cGUgICAweDM2ICAgIC8qIFIvVyAwOmxldmVsLCAxOmVkZ2UgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fRWRnZVRyaWdnZXIgICAweDM4ICAgIC8qIFIvVyAwOmZhbGxpbmcsIDE6cmlzaW5nICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fTGV2ZWxUcmlnZ2VyICAweDNBICAgIC8qIFIvVyAwOmxvdywgMTpoaWdoIGxldmVsIGRldGVjdCAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fTGV2ZWxTdGF0dXMgICAweDNDICAgIC8qIFIvVyAwOm5vbmUsIDE6ZGV0ZWN0ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fRWRnZVN0YXR1cyAgICAweDNFICAgIC8qIFIvVyAwOm5vbmUsIDE6ZGV0ZWN0ICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fU3RhdGUgICAgICAgICAweDQwICAgIC8qIFIgICBTZWUgbWFza3MgYmVsb3cgIChkZWZhdWx0IDApICAgICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fUmVzZXQgICAgICAgICAweDQyICAgIC8qIFIvVyBTZWUgbWFza3MgYmVsb3cgIChkZWZhdWx0IDB4MDQpICAgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fU2xlZXBNYXNrICAgICAweDQ0ICAgIC8qIFIvVyAwOmRvbid0IG1hc2ssIDE6bWFzayB0cmlnZ2VyIGluIHNsZWVwIG1vZGUgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9HUElPX1NsZWVwRGlyICAgICAgMHg0NiAgICAvKiBSL1cgZGlyZWN0aW9uIDA6aW5wdXQsIDE6b3V0cHV0IGluIHNsZWVwIG1vZGUgICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fU2xlZXBPdXQgICAgICAweDQ4ICAgIC8qIFIvVyBsZXZlbCAwOmxvdywgMTpoaWdoIGluIHNsZWVwIG1vZGUgICAgICAgICAgICovCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9HUElPX1N0YXR1cyAgICAgICAgMHg0QSAgICAvKiBSICAgUGluIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBfSDM4MDBfQVNJQzFfR1BJT19CYXR0RmF1bHREaXIgIDB4NEMgICAgLyogUi9XIGRpcmVjdGlvbiAwOmlucHV0LCAxOm91dHB1dCBpbiBiYXR0X2ZhdWx0ICAgKi8KKyNkZWZpbmUgX0gzODAwX0FTSUMxX0dQSU9fQmF0dEZhdWx0T3V0ICAweDRFICAgIC8qIFIvVyBsZXZlbCAwOmxvdywgMTpoaWdoIGluIGJhdHRfZmF1bHQgICAgICAgICAgICovCisKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19NYXNrICAgICAgICAgSDM4MDBfQVNJQzFfT0ZGU0VUKCB1MTYsIEdQSU8sIE1hc2sgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX0RpcmVjdGlvbiAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgRGlyZWN0aW9uICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19PdXQgICAgICAgICAgSDM4MDBfQVNJQzFfT0ZGU0VUKCB1MTYsIEdQSU8sIE91dCApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fVHJpZ2dlclR5cGUgIEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBHUElPLCBUcmlnZ2VyVHlwZSApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fRWRnZVRyaWdnZXIgIEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBHUElPLCBFZGdlVHJpZ2dlciApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fTGV2ZWxUcmlnZ2VyIEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBHUElPLCBMZXZlbFRyaWdnZXIgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX0xldmVsU3RhdHVzICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgTGV2ZWxTdGF0dXMgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX0VkZ2VTdGF0dXMgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgRWRnZVN0YXR1cyApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU3RhdGUgICAgICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBHUElPLCBTdGF0ZSApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fUmVzZXQgICAgICAgIEgzODAwX0FTSUMxX09GRlNFVCggIHU4LCBHUElPLCBSZXNldCApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU2xlZXBNYXNrICAgIEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBHUElPLCBTbGVlcE1hc2sgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX1NsZWVwRGlyICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgU2xlZXBEaXIgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX1NsZWVwT3V0ICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgU2xlZXBPdXQgKQorI2RlZmluZSBIMzgwMF9BU0lDMV9HUElPX1N0YXR1cyAgICAgICBIMzgwMF9BU0lDMV9PRkZTRVQoIHUxNiwgR1BJTywgU3RhdHVzICkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19CYXR0RmF1bHREaXIgSDM4MDBfQVNJQzFfT0ZGU0VUKCB1MTYsIEdQSU8sIEJhdHRGYXVsdERpciApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fQmF0dEZhdWx0T3V0IEgzODAwX0FTSUMxX09GRlNFVCggdTE2LCBHUElPLCBCYXR0RmF1bHRPdXQgKQorCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfTUFTSyAgICAgICAgICAgICgxIDw8IDApCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfRElSRUNUSU9OICAgICAgICgxIDw8IDEpCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfT1VUICAgICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfVFJJR0dFUl9UWVBFICAgICgxIDw8IDMpCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfRURHRV9UUklHR0VSICAgICgxIDw8IDQpCisjZGVmaW5lIEgzODAwX0FTSUMxX0dQSU9fU1RBVEVfTEVWRUxfVFJJR0dFUiAgICgxIDw8IDUpCisKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19SRVNFVF9TT0ZUV0FSRSAgICAgICAgKDEgPDwgMCkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19SRVNFVF9BVVRPX1NMRUVQICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgSDM4MDBfQVNJQzFfR1BJT19SRVNFVF9GSVJTVF9QV1JfT04gICAgKDEgPDwgMikKKworLyogVGhlc2UgYXJlIGFsbCBvdXRwdXRzICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfSVJfT05fTiAgICAgICAgICAoMSA8PCAwKSAgIC8qIEFwcGx5IHBvd2VyIHRvIHRoZSBJUiBNb2R1bGUgKi8KKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMV9TRF9QV1JfT04gICAgICAgICgxIDw8IDEpICAgLyogU2VjdXJlIERpZ2l0YWwgcG93ZXIgb24gKi8KKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMV9SUzIzMl9PTiAgICAgICAgICgxIDw8IDIpICAgLyogVHVybiBvbiBwb3dlciB0byB0aGUgUlMyMzIgY2hpcCA/ICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfUFVMU0VfR0VOICAgICAgICAoMSA8PCAzKSAgIC8qIEdvZXMgdG8gc3BlYWtlciAvIGVhcnBob25lICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfQ0hfVElNRVIgICAgICAgICAoMSA8PCA0KSAgIC8qICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfTENEXzVWX09OICAgICAgICAoMSA8PCA1KSAgIC8qIEVuYWJsZXMgTENEXzVWICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfTENEX09OICAgICAgICAgICAoMSA8PCA2KSAgIC8qIEVuYWJsZXMgTENEXzNWICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfTENEX1BDSSAgICAgICAgICAoMSA8PCA3KSAgIC8qIENvbm5lY3RzIHRvIFBEV04gb24gTENEIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgR1BJT19IMzgwMF9BU0lDMV9WR0hfT04gICAgICAgICAgICgxIDw8IDgpICAgLyogRHJpdmVzIFZHSCBvbiB0aGUgTENEICgrOT8/KSAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMxX1ZHTF9PTiAgICAgICAgICAgKDEgPDwgOSkgICAvKiBEcml2ZXJzIFZHTCBvbiB0aGUgTENEICgtNj8/KSAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMxX0ZMX1BXUl9PTiAgICAgICAgKDEgPDwgMTApICAvKiBGcm9udGxpZ2h0IHBvd2VyIG9uICovCisjZGVmaW5lIEdQSU9fSDM4MDBfQVNJQzFfQlRfUFdSX09OICAgICAgICAoMSA8PCAxMSkgIC8qIEJsdWV0b290aCBwb3dlciBvbiAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMxX1NQS19PTiAgICAgICAgICAgKDEgPDwgMTIpICAvKiAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMxX0VBUl9PTl9OICAgICAgICAgKDEgPDwgMTMpICAvKiAqLworI2RlZmluZSBHUElPX0gzODAwX0FTSUMxX0FVRF9QV1JfT04gICAgICAgKDEgPDwgMTQpICAvKiAqLworCisvKiBXcml0ZSBlbmFibGUgZm9yIHRoZSBmbGFzaCAqLworCisjZGVmaW5lIF9IMzgwMF9BU0lDMV9GbGFzaFdQX0Jhc2UgICAgICAgICAweDFGMDAKKyNkZWZpbmUgX0gzODAwX0FTSUMxX0ZsYXNoV1BfVlBQX09OICAgICAgICAgMHgwMCAgICAvKiBSICAgMTogd3JpdGUsIDA6IHByb3RlY3QgKi8KKyNkZWZpbmUgSDM4MDBfQVNJQzFfRmxhc2hXUF9WUFBfT04gICAgICAgSDM4MDBfQVNJQzFfT0ZGU0VUKCB1OCwgRmxhc2hXUCwgVlBQX09OICkKKworI2VuZGlmIC8qIF9JTkNMVURFX0gzNjAwX0dQSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjNjJkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9oYXJkd2FyZS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaGFyZHdhcmUuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBmb3IgU0ExMTAwIGFyY2hpdGVjdHVyZQorICoKKyAqIDIwMDAvMDUvMjMgSm9obiBEb3JzZXkgPGpvaG4rQGNzLmNtdS5lZHU+CisgKiAgICAgIERlZmluaXRpb25zIGZvciBTQTExMTEgYWRkZWQuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworLyogRmx1c2hpbmcgYXJlYXMgKi8KKyNkZWZpbmUgRkxVU0hfQkFTRV9QSFlTCQkweGUwMDAwMDAwCS8qIFNBMTEwMCB6ZXJvIGJhbmsgKi8KKyNkZWZpbmUgRkxVU0hfQkFTRQkJMHhmNTAwMDAwMAorI2RlZmluZSBGTFVTSF9CQVNFX01JTklDQUNIRQkweGY1ODAwMDAwCisjZGVmaW5lIFVOQ0FDSEVBQkxFX0FERFIJMHhmYTA1MDAwMAorCisKKy8qCisgKiBXZSByZXF1aXJlcyBhYnNvbHV0ZSBhZGRyZXNzZXMgaS5lLiAoUENNQ0lBX0lPXzBfQkFTRSArIDB4M2Y4KSBmb3IgCisgKiBpbiooKS9vdXQqKCkgbWFjcm9zIHRvIGJlIHVzYWJsZSBmb3IgYWxsIGNhc2VzLgorICovCisjZGVmaW5lIFBDSU9fQkFTRQkJMAorCisKKy8qCisgKiBTQTExMDAgaW50ZXJuYWwgSS9PIG1hcHBpbmdzCisgKgorICogV2UgaGF2ZSB0aGUgZm9sbG93aW5nIG1hcHBpbmc6CisgKiAgICAgIHBoeXMgICAgICAgICAgICB2aXJ0CisgKiAgICAgIDgwMDAwMDAwICAgICAgICBmODAwMDAwMAorICogICAgICA5MDAwMDAwMCAgICAgICAgZmEwMDAwMDAKKyAqICAgICAgYTAwMDAwMDAgICAgICAgIGZjMDAwMDAwCisgKiAgICAgIGIwMDAwMDAwICAgICAgICBmZTAwMDAwMAorICovCisKKyNkZWZpbmUgVklPX0JBU0UgICAgICAgIDB4ZjgwMDAwMDAJLyogdmlydHVhbCBzdGFydCBvZiBJTyBzcGFjZSAqLworI2RlZmluZSBWSU9fU0hJRlQgICAgICAgMwkJLyogeCA9IElPIHNwYWNlIHNocmluayBwb3dlciAqLworI2RlZmluZSBQSU9fU1RBUlQgICAgICAgMHg4MDAwMDAwMAkvKiBwaHlzaWNhbCBzdGFydCBvZiBJTyBzcGFjZSAqLworCisjZGVmaW5lIGlvX3AydiggeCApICAgICAgICAgICAgIFwKKyAgICggKCgoeCkmMHgwMGZmZmZmZikgfCAoKCh4KSYweDMwMDAwMDAwKT4+VklPX1NISUZUKSkgKyBWSU9fQkFTRSApCisjZGVmaW5lIGlvX3YycCggeCApICAgICAgICAgICAgIFwKKyAgICggKCgoeCkmMHgwMGZmZmZmZikgfCAoKCh4KSYoMHgzMDAwMDAwMD4+VklPX1NISUZUKSk8PFZJT19TSElGVCkpICsgUElPX1NUQVJUICkKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworI2lmIDAKKyMgZGVmaW5lIF9fUkVHKHgpCSgqKCh2b2xhdGlsZSB1MzIgKilpb19wMnYoeCkpKQorI2Vsc2UKKy8qCisgKiBUaGlzIF9fUkVHKCkgdmVyc2lvbiBnaXZlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBvbmUgYWJvdmUsICBleGNlcHQKKyAqIHRoYXQgd2UgYXJlIGZvb2xpbmcgZ2NjIHNvbWVob3cgc28gaXQgZ2VuZXJhdGVzIGZhciBiZXR0ZXIgYW5kIHNtYWxsZXIKKyAqIGFzc2VtYmx5IGNvZGUgZm9yIGFjY2VzcyB0byBjb250aWdvdXMgcmVnaXN0ZXJzLiAgSXQncyBhIHNoYW1lIHRoYXQgZ2NjCisgKiBkb2Vzbid0IGd1ZXNzIHRoaXMgYnkgaXRzZWxmLgorICovCit0eXBlZGVmIHN0cnVjdCB7IHZvbGF0aWxlIHUzMiBvZmZzZXRbNDA5Nl07IH0gX19yZWdiYXNlOworIyBkZWZpbmUgX19SRUdQKHgpCSgoX19yZWdiYXNlICopKCh4KSZ+NDA5NSkpLT5vZmZzZXRbKCh4KSY0MDk1KT4+Ml0KKyMgZGVmaW5lIF9fUkVHKHgpCV9fUkVHUChpb19wMnYoeCkpCisjZW5kaWYKKworIyBkZWZpbmUgX19QUkVHKHgpCShpb192MnAoKHUzMikmKHgpKSkKKworI2Vsc2UKKworIyBkZWZpbmUgX19SRUcoeCkJaW9fcDJ2KHgpCisjIGRlZmluZSBfX1BSRUcoeCkJaW9fdjJwKHgpCisKKyNlbmRpZgorCisjaW5jbHVkZSAiU0EtMTEwMC5oIgorCisjaWZkZWYgQ09ORklHX1NBMTEwMQorI2luY2x1ZGUgIlNBLTExMDEuaCIKKyNlbmRpZgorCisjZW5kaWYgIC8qIF9BU01fQVJDSF9IQVJEV0FSRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaWRlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaWRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1MzUzOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9pZGUuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2lkZS5oCisgKgorICogQ29weXJpZ2h0IChjKSAxOTk4IEh1Z28gRmllbm5lcyAmIE5pY29sYXMgUGl0cmUKKyAqCisgKiAxOC1hdWctMjAwMDogQ2xlYW51cCBieSBFcmlrIE1vdXcgKEouQS5LLk1vdXdAaXRzLnR1ZGVsZnQubmwpCisgKiAgICAgICAgICAgICAgR2V0IHJpZCBvZiB0aGUgc3BlY2lhbCBpZGVfaW5pdF9od2lmX3BvcnRzKCkgZnVuY3Rpb25zCisgKiAgICAgICAgICAgICAgYW5kIG1ha2UgYSBnZW5lcmFsaXNlZCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IGFsbAorICogICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorCisjZXJyb3IgIlRoaXMgY29kZSBpcyBicm9rZW4gYW5kIG5lZWRzIHVwZGF0ZSB0byBtYXRjaCB3aXRoIGN1cnJlbnQgaWRlIHN1cHBvcnQiCisKKworLyoKKyAqIFNldCB1cCBhIGh3IHN0cnVjdHVyZSBmb3IgYSBzcGVjaWZpZWQgZGF0YSBwb3J0LCBjb250cm9sIHBvcnQgYW5kIElSUS4KKyAqIFRoaXMgc2hvdWxkIGZvbGxvdyB3aGF0ZXZlciB0aGUgZGVmYXVsdCBpbnRlcmZhY2UgdXNlcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywgdW5zaWduZWQgbG9uZyBkYXRhX3BvcnQsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgY3RybF9wb3J0LCBpbnQgKmlycSkKK3sKKwl1bnNpZ25lZCBsb25nIHJlZyA9IGRhdGFfcG9ydDsKKwlpbnQgaTsKKwlpbnQgcmVnaW5jciA9IDE7CisKKwkvKiBUaGUgRW1wZWcgYm9hcmQgaGFzIHRoZSBmaXJzdCB0d28gYWRkcmVzcyBsaW5lcyB1bnVzZWQgKi8KKwlpZiAobWFjaGluZV9pc19lbXBlZygpKQorCQlyZWdpbmNyID0gMSA8PCAyOworCisJLyogVGhlIExBUlQgZG9lc24ndCB1c2UgQTAgZm9yIElERSAqLworCWlmIChtYWNoaW5lX2lzX2xhcnQoKSkKKwkJcmVnaW5jciA9IDEgPDwgMTsKKworCW1lbXNldChodywgMCwgc2l6ZW9mKCpodykpOworCisJZm9yIChpID0gSURFX0RBVEFfT0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBpKyspIHsKKwkJaHctPmlvX3BvcnRzW2ldID0gcmVnOworCQlyZWcgKz0gcmVnaW5jcjsKKwl9CisKKwlody0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9IGN0cmxfcG9ydDsKKworCWlmIChpcnEpCisJCSppcnEgPSAwOworfQorCisvKgorICogVGhpcyByZWdpc3RlcnMgdGhlIHN0YW5kYXJkIHBvcnRzIGZvciB0aGlzIGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBJREUKKyAqIGRyaXZlci4KKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZAoraWRlX2luaXRfZGVmYXVsdF9od2lmcyh2b2lkKQoreworICAgIGlmIChtYWNoaW5lX2lzX2xhcnQoKSkgeworI2lmZGVmIENPTkZJR19TQTExMDBfTEFSVAorICAgICAgICBod19yZWdzX3QgaHc7CisKKyAgICAgICAgLyogRW5hYmxlIEdQSU8gYXMgaW50ZXJydXB0IGxpbmUgKi8KKyAgICAgICAgR1BEUiAmPSB+TEFSVF9HUElPX0lERTsKKwlzZXRfaXJxX3R5cGUoTEFSVF9JUlFfSURFLCBJUlFUX1JJU0lORyk7CisKKyAgICAgICAgLyogc2V0IFBDTUNJQSBpbnRlcmZhY2UgdGltaW5nICovCisgICAgICAgIE1FQ1IgPSAweDAwMDYwMDA2OworCisgICAgICAgIC8qIGluaXQgdGhlIGludGVyZmFjZSAqLworCWlkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBQQ01DSUFfSU9fMF9CQVNFICsgMHgwMDAwLCBQQ01DSUFfSU9fMF9CQVNFICsgMHgxMDAwLCBOVUxMKTsKKyAgICAgICAgaHcuaXJxID0gTEFSVF9JUlFfSURFOworICAgICAgICBpZGVfcmVnaXN0ZXJfaHcoJmh3KTsKKyNlbmRpZgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q5NjlmZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9pby5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaW8uaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5Ny0xOTk5IFJ1c3NlbGwgS2luZworICoKKyAqIE1vZGlmaWNhdGlvbnM6CisgKiAgMDYtMTItMTk5NwlSTUsJQ3JlYXRlZC4KKyAqICAwNy0wNC0xOTk5CVJNSwlNYWpvciBjbGVhbnVwCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisvKgorICogV2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSByZWFsIElTQSBub3IgUENJIGJ1c2VzLCBidXQgdGhlcmUgaXMgc28gbWFueSAKKyAqIGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgbWlnaHQganVzdCB3b3JrIGlmIHdlIGZha2UgdGhlbS4uLgorICovCisjZGVmaW5lIF9faW8oYSkJCQkoKHZvaWQgX19pb21lbSAqKShQQ0lPX0JBU0UgKyAoYSkpKQorI2RlZmluZSBfX21lbV9wY2koYSkJCShhKQorI2RlZmluZSBfX21lbV9pc2EoYSkJCShhKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaXJxcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYmQzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvaXJxcy5oCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2lycXMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiBSdXNzZWxsIEtpbmcKKyAqIENvcHlyaWdodCAoQykgMTk5OCBEZWJvcmFoIFdhbGxhY2ggKHVwZGF0ZXMgZm9yIFNBMTEwMC9CcnV0dXMpLgorICogQ29weXJpZ2h0IChDKSAxOTk5IE5pY29sYXMgUGl0cmUgKGZ1bGwgR1BJTyBpcnEgaXNvbGF0aW9uKQorICoKKyAqIDIwMDEvMTEvMTQJUk1LCUNsZWFuZWQgdXAgYW5kIHN0YW5kYXJkaXNlZCBhIGxvdCBvZiB0aGUgSVJRcy4KKyAqLworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisjZGVmaW5lCUlSUV9HUElPMAkJMAorI2RlZmluZQlJUlFfR1BJTzEJCTEKKyNkZWZpbmUJSVJRX0dQSU8yCQkyCisjZGVmaW5lCUlSUV9HUElPMwkJMworI2RlZmluZQlJUlFfR1BJTzQJCTQKKyNkZWZpbmUJSVJRX0dQSU81CQk1CisjZGVmaW5lCUlSUV9HUElPNgkJNgorI2RlZmluZQlJUlFfR1BJTzcJCTcKKyNkZWZpbmUJSVJRX0dQSU84CQk4CisjZGVmaW5lCUlSUV9HUElPOQkJOQorI2RlZmluZQlJUlFfR1BJTzEwCQkxMAorI2RlZmluZQlJUlFfR1BJTzExXzI3CQkxMQorI2RlZmluZQlJUlFfTENEICAJCTEyCS8qIExDRCBjb250cm9sbGVyICAgICAgICAgICAqLworI2RlZmluZQlJUlFfU2VyMFVEQwkJMTMJLyogU2VyLiBwb3J0IDAgVURDICAgICAgICAgICovCisjZGVmaW5lCUlSUV9TZXIxU0RMQwkJMTQJLyogU2VyLiBwb3J0IDEgU0RMQyAgICAgICAgICovCisjZGVmaW5lCUlSUV9TZXIxVUFSVAkJMTUJLyogU2VyLiBwb3J0IDEgVUFSVCAgICAgICAgICovCisjZGVmaW5lCUlSUV9TZXIySUNQCQkxNgkvKiBTZXIuIHBvcnQgMiBJQ1AgICAgICAgICAgKi8KKyNkZWZpbmUJSVJRX1NlcjNVQVJUCQkxNwkvKiBTZXIuIHBvcnQgMyBVQVJUICAgICAgICAgKi8KKyNkZWZpbmUJSVJRX1NlcjRNQ1AJCTE4CS8qIFNlci4gcG9ydCA0IE1DUCAgICAgICAgICAqLworI2RlZmluZQlJUlFfU2VyNFNTUAkJMTkJLyogU2VyLiBwb3J0IDQgU1NQICAgICAgICAgICovCisjZGVmaW5lCUlSUV9ETUEwIAkJMjAJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAwICovCisjZGVmaW5lCUlSUV9ETUExIAkJMjEJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAxICovCisjZGVmaW5lCUlSUV9ETUEyIAkJMjIJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAyICovCisjZGVmaW5lCUlSUV9ETUEzIAkJMjMJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCAzICovCisjZGVmaW5lCUlSUV9ETUE0IAkJMjQJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCA0ICovCisjZGVmaW5lCUlSUV9ETUE1IAkJMjUJLyogRE1BIGNvbnRyb2xsZXIgY2hhbm5lbCA1ICovCisjZGVmaW5lCUlSUV9PU1QwIAkJMjYJLyogT1MgVGltZXIgbWF0Y2ggMCAgICAgICAgICovCisjZGVmaW5lCUlSUV9PU1QxIAkJMjcJLyogT1MgVGltZXIgbWF0Y2ggMSAgICAgICAgICovCisjZGVmaW5lCUlSUV9PU1QyIAkJMjgJLyogT1MgVGltZXIgbWF0Y2ggMiAgICAgICAgICovCisjZGVmaW5lCUlSUV9PU1QzIAkJMjkJLyogT1MgVGltZXIgbWF0Y2ggMyAgICAgICAgICovCisjZGVmaW5lCUlSUV9SVEMxSHoJCTMwCS8qIFJUQyAxIEh6IGNsb2NrICAgICAgICAgICAqLworI2RlZmluZQlJUlFfUlRDQWxybQkJMzEJLyogUlRDIEFsYXJtICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUJSVJRX0dQSU8xMQkJMzIKKyNkZWZpbmUJSVJRX0dQSU8xMgkJMzMKKyNkZWZpbmUJSVJRX0dQSU8xMwkJMzQKKyNkZWZpbmUJSVJRX0dQSU8xNAkJMzUKKyNkZWZpbmUJSVJRX0dQSU8xNQkJMzYKKyNkZWZpbmUJSVJRX0dQSU8xNgkJMzcKKyNkZWZpbmUJSVJRX0dQSU8xNwkJMzgKKyNkZWZpbmUJSVJRX0dQSU8xOAkJMzkKKyNkZWZpbmUJSVJRX0dQSU8xOQkJNDAKKyNkZWZpbmUJSVJRX0dQSU8yMAkJNDEKKyNkZWZpbmUJSVJRX0dQSU8yMQkJNDIKKyNkZWZpbmUJSVJRX0dQSU8yMgkJNDMKKyNkZWZpbmUJSVJRX0dQSU8yMwkJNDQKKyNkZWZpbmUJSVJRX0dQSU8yNAkJNDUKKyNkZWZpbmUJSVJRX0dQSU8yNQkJNDYKKyNkZWZpbmUJSVJRX0dQSU8yNgkJNDcKKyNkZWZpbmUJSVJRX0dQSU8yNwkJNDgKKworLyoKKyAqIFRoZSBuZXh0IDE2IGludGVycnVwdHMgYXJlIGZvciBib2FyZCBzcGVjaWZpYyBwdXJwb3Nlcy4gIFNpbmNlCisgKiB0aGUga2VybmVsIGNhbiBvbmx5IHJ1biBvbiBvbmUgbWFjaGluZSBhdCBhIHRpbWUsIHdlIGNhbiByZS11c2UKKyAqIHRoZXNlLiAgSWYgeW91IG5lZWQgbW9yZSwgaW5jcmVhc2UgSVJRX0JPQVJEX0VORCwgYnV0IGtlZXAgaXQKKyAqIHdpdGhpbiBzZW5zaWJsZSBsaW1pdHMuICBJUlFzIDQ5IHRvIDY0IGFyZSBhdmFpbGFibGUuCisgKi8KKyNkZWZpbmUgSVJRX0JPQVJEX1NUQVJUCQk0OQorI2RlZmluZSBJUlFfQk9BUkRfRU5ECQk2NQorCisjZGVmaW5lIElSUV9TQTExMTFfU1RBUlQJKElSUV9CT0FSRF9FTkQpCisjZGVmaW5lIElSUV9HUEFJTjAJCShJUlFfQk9BUkRfRU5EICsgMCkKKyNkZWZpbmUgSVJRX0dQQUlOMQkJKElSUV9CT0FSRF9FTkQgKyAxKQorI2RlZmluZSBJUlFfR1BBSU4yCQkoSVJRX0JPQVJEX0VORCArIDIpCisjZGVmaW5lIElSUV9HUEFJTjMJCShJUlFfQk9BUkRfRU5EICsgMykKKyNkZWZpbmUgSVJRX0dQQklOMAkJKElSUV9CT0FSRF9FTkQgKyA0KQorI2RlZmluZSBJUlFfR1BCSU4xCQkoSVJRX0JPQVJEX0VORCArIDUpCisjZGVmaW5lIElSUV9HUEJJTjIJCShJUlFfQk9BUkRfRU5EICsgNikKKyNkZWZpbmUgSVJRX0dQQklOMwkJKElSUV9CT0FSRF9FTkQgKyA3KQorI2RlZmluZSBJUlFfR1BCSU40CQkoSVJRX0JPQVJEX0VORCArIDgpCisjZGVmaW5lIElSUV9HUEJJTjUJCShJUlFfQk9BUkRfRU5EICsgOSkKKyNkZWZpbmUgSVJRX0dQQ0lOMAkJKElSUV9CT0FSRF9FTkQgKyAxMCkKKyNkZWZpbmUgSVJRX0dQQ0lOMQkJKElSUV9CT0FSRF9FTkQgKyAxMSkKKyNkZWZpbmUgSVJRX0dQQ0lOMgkJKElSUV9CT0FSRF9FTkQgKyAxMikKKyNkZWZpbmUgSVJRX0dQQ0lOMwkJKElSUV9CT0FSRF9FTkQgKyAxMykKKyNkZWZpbmUgSVJRX0dQQ0lONAkJKElSUV9CT0FSRF9FTkQgKyAxNCkKKyNkZWZpbmUgSVJRX0dQQ0lONQkJKElSUV9CT0FSRF9FTkQgKyAxNSkKKyNkZWZpbmUgSVJRX0dQQ0lONgkJKElSUV9CT0FSRF9FTkQgKyAxNikKKyNkZWZpbmUgSVJRX0dQQ0lONwkJKElSUV9CT0FSRF9FTkQgKyAxNykKKyNkZWZpbmUgSVJRX01TVFhJTlQJCShJUlFfQk9BUkRfRU5EICsgMTgpCisjZGVmaW5lIElSUV9NU1JYSU5UCQkoSVJRX0JPQVJEX0VORCArIDE5KQorI2RlZmluZSBJUlFfTVNTVE9QRVJSSU5UCShJUlFfQk9BUkRfRU5EICsgMjApCisjZGVmaW5lIElSUV9UUFRYSU5UCQkoSVJRX0JPQVJEX0VORCArIDIxKQorI2RlZmluZSBJUlFfVFBSWElOVAkJKElSUV9CT0FSRF9FTkQgKyAyMikKKyNkZWZpbmUgSVJRX1RQU1RPUEVSUklOVAkoSVJRX0JPQVJEX0VORCArIDIzKQorI2RlZmluZSBTU1BYTVRJTlQJCShJUlFfQk9BUkRfRU5EICsgMjQpCisjZGVmaW5lIFNTUFJDVklOVAkJKElSUV9CT0FSRF9FTkQgKyAyNSkKKyNkZWZpbmUgU1NQUk9SCQkJKElSUV9CT0FSRF9FTkQgKyAyNikKKyNkZWZpbmUgQVVEWE1URE1BRE9ORUEJCShJUlFfQk9BUkRfRU5EICsgMzIpCisjZGVmaW5lIEFVRFJDVkRNQURPTkVBCQkoSVJRX0JPQVJEX0VORCArIDMzKQorI2RlZmluZSBBVURYTVRETUFET05FQgkJKElSUV9CT0FSRF9FTkQgKyAzNCkKKyNkZWZpbmUgQVVEUkNWRE1BRE9ORUIJCShJUlFfQk9BUkRfRU5EICsgMzUpCisjZGVmaW5lIEFVRFRGU1IJCQkoSVJRX0JPQVJEX0VORCArIDM2KQorI2RlZmluZSBBVURSRlNSCQkJKElSUV9CT0FSRF9FTkQgKyAzNykKKyNkZWZpbmUgQVVEVFVSCQkJKElSUV9CT0FSRF9FTkQgKyAzOCkKKyNkZWZpbmUgQVVEUk9SCQkJKElSUV9CT0FSRF9FTkQgKyAzOSkKKyNkZWZpbmUgQVVERFRTCQkJKElSUV9CT0FSRF9FTkQgKyA0MCkKKyNkZWZpbmUgQVVEUkRECQkJKElSUV9CT0FSRF9FTkQgKyA0MSkKKyNkZWZpbmUgQVVEU1RPCQkJKElSUV9CT0FSRF9FTkQgKyA0MikKKyNkZWZpbmUgSVJRX1VTQlBXUgkJKElSUV9CT0FSRF9FTkQgKyA0MykKKyNkZWZpbmUgSVJRX0hDSU0JCShJUlFfQk9BUkRfRU5EICsgNDQpCisjZGVmaW5lIElSUV9IQ0lCVUZGQUNDCQkoSVJRX0JPQVJEX0VORCArIDQ1KQorI2RlZmluZSBJUlFfSENJUk1UV0tQCQkoSVJRX0JPQVJEX0VORCArIDQ2KQorI2RlZmluZSBJUlFfTkhDSU1GQ0lSCQkoSVJRX0JPQVJEX0VORCArIDQ3KQorI2RlZmluZSBJUlFfVVNCX1BPUlRfUkVTVU1FCShJUlFfQk9BUkRfRU5EICsgNDgpCisjZGVmaW5lIElSUV9TMF9SRUFEWV9OSU5UCShJUlFfQk9BUkRfRU5EICsgNDkpCisjZGVmaW5lIElSUV9TMV9SRUFEWV9OSU5UCShJUlFfQk9BUkRfRU5EICsgNTApCisjZGVmaW5lIElSUV9TMF9DRF9WQUxJRAkJKElSUV9CT0FSRF9FTkQgKyA1MSkKKyNkZWZpbmUgSVJRX1MxX0NEX1ZBTElECQkoSVJRX0JPQVJEX0VORCArIDUyKQorI2RlZmluZSBJUlFfUzBfQlZEMV9TVFNDSEcJKElSUV9CT0FSRF9FTkQgKyA1MykKKyNkZWZpbmUgSVJRX1MxX0JWRDFfU1RTQ0hHCShJUlFfQk9BUkRfRU5EICsgNTQpCisKKyNkZWZpbmUgSVJRX0xPQ09NT19TVEFSVAkoSVJRX0JPQVJEX0VORCkKKyNkZWZpbmUgSVJRX0xPQ09NT19LRVkJCShJUlFfQk9BUkRfRU5EICsgMCkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMAkoSVJRX0JPQVJEX0VORCArIDEpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzEJKElSUV9CT0FSRF9FTkQgKyAyKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8yCShJUlFfQk9BUkRfRU5EICsgMykKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPMwkoSVJRX0JPQVJEX0VORCArIDQpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzQJKElSUV9CT0FSRF9FTkQgKyA1KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU81CShJUlFfQk9BUkRfRU5EICsgNikKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPNgkoSVJRX0JPQVJEX0VORCArIDcpCisjZGVmaW5lIElSUV9MT0NPTU9fR1BJTzcJKElSUV9CT0FSRF9FTkQgKyA4KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU84CShJUlFfQk9BUkRfRU5EICsgOSkKKyNkZWZpbmUgSVJRX0xPQ09NT19HUElPOQkoSVJRX0JPQVJEX0VORCArIDEwKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xMAkoSVJRX0JPQVJEX0VORCArIDExKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xMQkoSVJRX0JPQVJEX0VORCArIDEyKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xMgkoSVJRX0JPQVJEX0VORCArIDEzKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xMwkoSVJRX0JPQVJEX0VORCArIDE0KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xNAkoSVJRX0JPQVJEX0VORCArIDE1KQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU8xNQkoSVJRX0JPQVJEX0VORCArIDE2KQorI2RlZmluZSBJUlFfTE9DT01PX0xUCQkoSVJRX0JPQVJEX0VORCArIDE3KQorI2RlZmluZSBJUlFfTE9DT01PX1NQSV9SRlIJKElSUV9CT0FSRF9FTkQgKyAxOCkKKyNkZWZpbmUgSVJRX0xPQ09NT19TUElfUkZXCShJUlFfQk9BUkRfRU5EICsgMTkpCisjZGVmaW5lIElSUV9MT0NPTU9fU1BJX09WUk4JKElSUV9CT0FSRF9FTkQgKyAyMCkKKyNkZWZpbmUgSVJRX0xPQ09NT19TUElfVEVORAkoSVJRX0JPQVJEX0VORCArIDIxKQorCisvKgorICogRmlndXJlIG91dCB0aGUgTUFYIElSUSBudW1iZXIuCisgKgorICogSWYgd2UgaGF2ZSBhbiBTQTExMTEsIHRoZSBtYXggSVJRIGlzIFMxX0JWRDFfU1RTQ0hHKzEuCisgKiBJZiB3ZSBoYXZlIGFuIExvQ29NbywgdGhlIG1heCBJUlEgaXMgSVJRX0xPQ09NT19TUElfVEVORCsxCisgKiBPdGhlcndpc2UsIHdlIGhhdmUgdGhlIHN0YW5kYXJkIElSUXMgb25seS4KKyAqLworI2lmZGVmIENPTkZJR19TQTExMTEKKyNkZWZpbmUgTlJfSVJRUwkJCShJUlFfUzFfQlZEMV9TVFNDSEcgKyAxKQorI2VsaWYgZGVmaW5lZChDT05GSUdfU0ExMTAwX0gzODAwKQorI2RlZmluZSBOUl9JUlFTCQkJKElSUV9CT0FSRF9FTkQpCisjZWxpZiBkZWZpbmVkKENPTkZJR19TSEFSUF9MT0NPTU8pCisjZGVmaW5lIE5SX0lSUVMJCQkoSVJRX0xPQ09NT19TUElfVEVORCArIDEpCisjZWxzZQorI2RlZmluZSBOUl9JUlFTCQkJKElSUV9CT0FSRF9TVEFSVCkKKyNlbmRpZgorCisvKgorICogQm9hcmQgc3BlY2lmaWMgSVJRcy4gIERlZmluZSB0aGVtIGhlcmUuCisgKiBEbyBub3Qgc3Vycm91bmQgdGhlbSB3aXRoIGlmZGVmcy4KKyAqLworI2RlZmluZSBJUlFfTkVQT05TRVRfU01DOTE5NgkoSVJRX0JPQVJEX1NUQVJUICsgMCkKKyNkZWZpbmUgSVJRX05FUE9OU0VUX1VTQVIJKElSUV9CT0FSRF9TVEFSVCArIDEpCisjZGVmaW5lIElSUV9ORVBPTlNFVF9TQTExMTEJKElSUV9CT0FSRF9TVEFSVCArIDIpCisKKy8qIExvQ29NbyBJbnRlcnJ1cHRzIChDT05GSUdfU0hBUlBfTE9DT01PKSAqLworI2RlZmluZSBJUlFfTE9DT01PX0tFWV9CQVNFCShJUlFfQk9BUkRfU1RBUlQgKyAwKQorI2RlZmluZSBJUlFfTE9DT01PX0dQSU9fQkFTRQkoSVJRX0JPQVJEX1NUQVJUICsgMSkKKyNkZWZpbmUgSVJRX0xPQ09NT19MVF9CQVNFCShJUlFfQk9BUkRfU1RBUlQgKyAyKQorI2RlZmluZSBJUlFfTE9DT01PX1NQSV9CQVNFCShJUlFfQk9BUkRfU1RBUlQgKyAzKQorCisvKiBIMzgwMC1zcGVjaWZpYyBJUlFzIChDT05GSUdfU0ExMTAwX0gzODAwKSAqLworI2RlZmluZSBIMzgwMF9LUElPX0lSUV9TVEFSVCAgICAoSVJRX0JPQVJEX1NUQVJUKQorI2RlZmluZSBJUlFfSDM4MDBfS0VZICAgICAgICAgICAoSVJRX0JPQVJEX1NUQVJUICsgMCkKKyNkZWZpbmUgSVJRX0gzODAwX1NQSSAgICAgICAgICAgKElSUV9CT0FSRF9TVEFSVCArIDEpCisjZGVmaW5lIElSUV9IMzgwMF9PV00gICAgICAgICAgIChJUlFfQk9BUkRfU1RBUlQgKyAyKQorI2RlZmluZSBJUlFfSDM4MDBfQURDICAgICAgICAgICAoSVJRX0JPQVJEX1NUQVJUICsgMykKKyNkZWZpbmUgSVJRX0gzODAwX1VBUlRfMCAgICAgICAgKElSUV9CT0FSRF9TVEFSVCArIDQpCisjZGVmaW5lIElSUV9IMzgwMF9VQVJUXzEgICAgICAgIChJUlFfQk9BUkRfU1RBUlQgKyA1KQorI2RlZmluZSBJUlFfSDM4MDBfVElNRVJfMCAgICAgICAoSVJRX0JPQVJEX1NUQVJUICsgNikKKyNkZWZpbmUgSVJRX0gzODAwX1RJTUVSXzEgICAgICAgKElSUV9CT0FSRF9TVEFSVCArIDcpCisjZGVmaW5lIElSUV9IMzgwMF9USU1FUl8yICAgICAgIChJUlFfQk9BUkRfU1RBUlQgKyA4KQorI2RlZmluZSBIMzgwMF9LUElPX0lSUV9DT1VOVCAgICA5CisKKyNkZWZpbmUgSDM4MDBfR1BJT19JUlFfU1RBUlQgICAgKElSUV9CT0FSRF9TVEFSVCArIDkpCisjZGVmaW5lIElSUV9IMzgwMF9QRU4gICAgICAgICAgIChJUlFfQk9BUkRfU1RBUlQgKyA5KQorI2RlZmluZSBJUlFfSDM4MDBfU0RfREVURUNUICAgICAoSVJRX0JPQVJEX1NUQVJUICsgMTApCisjZGVmaW5lIElSUV9IMzgwMF9FQVJfSU4gICAgICAgIChJUlFfQk9BUkRfU1RBUlQgKyAxMSkKKyNkZWZpbmUgSVJRX0gzODAwX1VTQl9ERVRFQ1QgICAgKElSUV9CT0FSRF9TVEFSVCArIDEyKQorI2RlZmluZSBJUlFfSDM4MDBfU0RfQ09OX1NMVCAgICAoSVJRX0JPQVJEX1NUQVJUICsgMTMpCisjZGVmaW5lIEgzODAwX0dQSU9fSVJRX0NPVU5UICAgIDUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9qb3JuYWRhNzIwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvam9ybmFkYTcyMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiOGU4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvam9ybmFkYTcyMC5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvam9ybmFkYTcyMC5oCisgKgorICogQ3JlYXRlZCAyMDAwLzExLzI5IGJ5IEpvaG4gQW5rY29ybiA8amNhQGxjcy5taXQuZWR1PgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGFyZHdhcmUgc3BlY2lmaWMgZGVmaW5pdGlvbnMgZm9yIEhQIEpvcm5hZGEgNzIwCisgKgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZXJyb3IgImluY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPiBpbnN0ZWFkIgorI2VuZGlmCisKKyNkZWZpbmUgU0ExMTExX0JBU0UgICAgICAgICAgICAgKDB4NDAwMDAwMDApCisKKyNkZWZpbmUgR1BJT19KT1JOQURBNzIwX0tFWUJPQVJECUdQSU9fR1BJTygwKQorI2RlZmluZSBHUElPX0pPUk5BREE3MjBfTU9VU0UJCUdQSU9fR1BJTyg5KQorCisjZGVmaW5lIEdQSU9fSk9STkFEQTcyMF9LRVlCT0FSRF9JUlEJSVJRX0dQSU8wCisjZGVmaW5lIEdQSU9fSk9STkFEQTcyMF9NT1VTRV9JUlEJCUlSUV9HUElPOQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCit2b2lkIGpvcm5hZGE3MjBfbWN1X2luaXQodm9pZCk7Cit2b2lkIGpvcm5hZGFfY29udHJhc3QoaW50IGFyZ19jb250cmFzdCk7Cit2b2lkIGpvcm5hZGE3MjBfYmF0dGVyeSh2b2lkKTsKK2ludCBqb3JuYWRhNzIwX2dldGtleSh1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgc2l6ZSk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9sYXJ0LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbGFydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNTQ4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbGFydC5oCkBAIC0wLDAgKzEsMTMgQEAKKyNpZm5kZWYgX0lOQ0xVREVfTEFSVF9ICisjZGVmaW5lIF9JTkNMVURFX0xBUlRfSAorCisjZGVmaW5lIExBUlRfR1BJT19FVEgwCQkJR1BJT19HUElPMAorI2RlZmluZSBMQVJUX0lSUV9FVEgwCQkJSVJRX0dQSU8wCisKKyNkZWZpbmUgTEFSVF9HUElPX0lERQkJCUdQSU9fR1BJTzEKKyNkZWZpbmUgTEFSVF9JUlFfSURFCQkJSVJRX0dQSU8xCisKKyNkZWZpbmUgTEFSVF9HUElPX1VDQjEyMDAJCUdQSU9fR1BJTzE4CisjZGVmaW5lIExBUlRfSVJRX1VDQjEyMDAJCUlSUV9HUElPMTgKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkM2Q1YgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9tZW1vcnkuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9tZW1vcnkuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIE5pY29sYXMgUGl0cmUgPG5pY29AY2FtLm9yZz4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSQ0hfTUVNT1JZX0gKKyNkZWZpbmUgX19BU01fQVJDSF9NRU1PUllfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3NpemVzLmg+CisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldCBpcyAweGMwMDAwMDAwIG9uIHRoZSBTQTExMDAKKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkoMHhjMDAwMDAwMFVMKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaWZkZWYgQ09ORklHX1NBMTExMQorc3RhdGljIGlubGluZSB2b2lkCitfX2FyY2hfYWRqdXN0X3pvbmVzKGludCBub2RlLCB1bnNpZ25lZCBsb25nICpzaXplLCB1bnNpZ25lZCBsb25nICpob2xlcykKK3sKKwl1bnNpZ25lZCBpbnQgc3ogPSBTWl8xTSA+PiBQQUdFX1NISUZUOworCisJaWYgKG5vZGUgIT0gMCkKKwkJc3ogPSAwOworCisJc2l6ZVsxXSA9IHNpemVbMF0gLSBzejsKKwlzaXplWzBdID0gc3o7Cit9CisKKyNkZWZpbmUgYXJjaF9hZGp1c3Rfem9uZXMobm9kZSwgc2l6ZSwgaG9sZXMpIFwKKwlfX2FyY2hfYWRqdXN0X3pvbmVzKG5vZGUsIHNpemUsIGhvbGVzKQorCisjZGVmaW5lIElTQV9ETUFfVEhSRVNIT0xECShQSFlTX09GRlNFVCArIFNaXzFNIC0gMSkKKworI2VuZGlmCisjZW5kaWYKKworLyoKKyAqIFZpcnR1YWwgdmlldyA8LT4gRE1BIHZpZXcgbWVtb3J5IGFkZHJlc3MgdHJhbnNsYXRpb25zCisgKiB2aXJ0X3RvX2J1czogVXNlZCB0byB0cmFuc2xhdGUgdGhlIHZpcnR1YWwgYWRkcmVzcyB0byBhbgorICoJCWFkZHJlc3Mgc3VpdGFibGUgdG8gYmUgcGFzc2VkIHRvIHNldF9kbWFfYWRkcgorICogYnVzX3RvX3ZpcnQ6IFVzZWQgdG8gY29udmVydCBhbiBhZGRyZXNzIGZvciBETUEgb3BlcmF0aW9ucworICoJCXRvIGFuIGFkZHJlc3MgdGhhdCB0aGUga2VybmVsIGNhbiB1c2UuCisgKgorICogT24gdGhlIFNBMTEwMCwgYnVzIGFkZHJlc3NlcyBhcmUgZXF1aXZhbGVudCB0byBwaHlzaWNhbCBhZGRyZXNzZXMuCisgKi8KKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KQkgX192aXJ0X3RvX3BoeXMoeCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkgX19waHlzX3RvX3ZpcnQoeCkKKworI2lmZGVmIENPTkZJR19ESVNDT05USUdNRU0KKy8qCisgKiBCZWNhdXNlIG9mIHRoZSB3aWRlIG1lbW9yeSBhZGRyZXNzIHNwYWNlIGJldHdlZW4gcGh5c2ljYWwgUkFNIGJhbmtzIG9uIHRoZSAKKyAqIFNBMTEwMCwgaXQncyBtdWNoIGNvbnZlbmllbnQgdG8gdXNlIExpbnV4J3MgTlVNQSBzdXBwb3J0IHRvIGltcGxlbWVudCBvdXIgCisgKiBtZW1vcnkgbWFwIHJlcHJlc2VudGF0aW9uLiAgQXNzdW1pbmcgYWxsIG1lbW9yeSBub2RlcyBoYXZlIGVxdWFsIGFjY2VzcyAKKyAqIGNoYXJhY3RlcmlzdGljcywgd2UgdGhlbiBoYXZlIGdlbmVyaWMgZGlzY29udGlndW91cyBtZW1vcnkgc3VwcG9ydC4KKyAqCisgKiBPZiBjb3Vyc2UsIGFsbCB0aGlzIGlzbid0IG1hbmRhdG9yeSBmb3IgU0ExMTAwIGltcGxlbWVudGF0aW9ucyB3aXRoIG9ubHkKKyAqIG9uZSB1c2VkIG1lbW9yeSBiYW5rLiAgRm9yIHRob3NlLCBzaW1wbHkgdW5kZWZpbmUgQ09ORklHX0RJU0NPTlRJR01FTS4KKyAqCisgKiBUaGUgbm9kZXMgYXJlIG1hdGNoZWQgd2l0aCB0aGUgcGh5c2ljYWwgbWVtb3J5IGJhbmsgYWRkcmVzc2VzIHdoaWNoIGFyZSAKKyAqIGluY2lkZW50YWxseSB0aGUgc2FtZSBhcyB2aXJ0dWFsIGFkZHJlc3Nlcy4KKyAqIAorICogCW5vZGUgMDogIDB4YzAwMDAwMDAgLSAweGM3ZmZmZmZmCisgKiAJbm9kZSAxOiAgMHhjODAwMDAwMCAtIDB4Y2ZmZmZmZmYKKyAqIAlub2RlIDI6ICAweGQwMDAwMDAwIC0gMHhkN2ZmZmZmZgorICogCW5vZGUgMzogIDB4ZDgwMDAwMDAgLSAweGRmZmZmZmZmCisgKi8KKworLyoKKyAqIEdpdmVuIGEga2VybmVsIGFkZHJlc3MsIGZpbmQgdGhlIGhvbWUgbm9kZSBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkuCisgKi8KKyNkZWZpbmUgS1ZBRERSX1RPX05JRChhZGRyKSAoKCh1bnNpZ25lZCBsb25nKShhZGRyKSAtIFBBR0VfT0ZGU0VUKSA+PiAyNykKKworLyoKKyAqIEdpdmVuIGEgcGFnZSBmcmFtZSBudW1iZXIsIGNvbnZlcnQgaXQgdG8gYSBub2RlIGlkLgorICovCisjZGVmaW5lIFBGTl9UT19OSUQocGZuKQkJKCgocGZuKSAtIFBIWVNfUEZOX09GRlNFVCkgPj4gKDI3IC0gUEFHRV9TSElGVCkpCisKKy8qCisgKiBHaXZlbiBhIGthZGRyLCBBRERSX1RPX01BUEJBU0UgZmluZHMgdGhlIG93bmluZyBub2RlIG9mIHRoZSBtZW1vcnkKKyAqIGFuZCByZXR1cm4gdGhlIG1lbV9tYXAgb2YgdGhhdCBub2RlLgorICovCisjZGVmaW5lIEFERFJfVE9fTUFQQkFTRShrYWRkcikJTk9ERV9NRU1fTUFQKEtWQUREUl9UT19OSUQoa2FkZHIpKQorCisvKgorICogR2l2ZW4gYSBwYWdlIGZyYW1lIG51bWJlciwgZmluZCB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybiB0aGUgbWVtX21hcCBvZiB0aGF0IG5vZGUuCisgKi8KKyNkZWZpbmUgUEZOX1RPX01BUEJBU0UocGZuKQlOT0RFX01FTV9NQVAoUEZOX1RPX05JRChwZm4pKQorCisvKgorICogR2l2ZW4gYSBrYWRkciwgTE9DQUxfTUVNX01BUCBmaW5kcyB0aGUgb3duaW5nIG5vZGUgb2YgdGhlIG1lbW9yeQorICogYW5kIHJldHVybnMgdGhlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIHBhZ2UgaW4gdGhlCisgKiBub2RlJ3MgbWVtX21hcC4KKyAqLworI2RlZmluZSBMT0NBTF9NQVBfTlIoYWRkcikgXAorCSgoKHVuc2lnbmVkIGxvbmcpKGFkZHIpICYgMHgwN2ZmZmZmZikgPj4gUEFHRV9TSElGVCkKKworI2Vsc2UKKworI2RlZmluZSBQRk5fVE9fTklEKGFkZHIpCSgwKQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbmVwb25zZXQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9uZXBvbnNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNTFmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvbmVwb25zZXQuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL2Fzc2FiZXQuaAorICoKKyAqIENyZWF0ZWQgMjAwMC8wNi8wNSBieSBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBzcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgQXNzYWJldAorICogT25seSBpbmNsdWRlIHRoaXMgZmlsZSBmcm9tIFNBMTEwMC1zcGVjaWZpYyBmaWxlcy4KKyAqCisgKiAyMDAwLzA1LzIzIEpvaG4gRG9yc2V5IDxqb2huK0Bjcy5jbXUuZWR1PgorICogICAgICBEZWZpbml0aW9ucyBmb3IgTmVwb25zZXQgYWRkZWQuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ORVBPTlNFVF9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfTkVQT05TRVRfSAorCisvKgorICogTmVwb25zZXQgZGVmaW5pdGlvbnM6IAorICovCisKKyNkZWZpbmUgTkVQT05TRVRfQ1BMRF9CQVNFICAgICAgKDB4MTAwMDAwMDApCisjZGVmaW5lIE5lcF9wMnYoIHggKSAgICAgICAgICAgICgoeCkgLSBORVBPTlNFVF9DUExEX0JBU0UgKyAweGYzMDAwMDAwKQorI2RlZmluZSBOZXBfdjJwKCB4ICkgICAgICAgICAgICAoKHgpIC0gMHhmMzAwMDAwMCArIE5FUE9OU0VUX0NQTERfQkFTRSkKKworI2RlZmluZSBfSVJSICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDI0ICAgICAgLyogSW50ZXJydXB0IFJlYXNvbiBSZWdpc3RlciAqLworI2RlZmluZSBfQVVEX0NUTCAgICAgICAgICAgICAgICAweDEwMDAwMGMwICAgICAgLyogQXVkaW8gY29udHJvbHMgKFJXKSAgICAgICAqLworI2RlZmluZSBfTURNX0NUTF8wICAgICAgICAgICAgICAweDEwMDAwMGIwICAgICAgLyogTW9kZW0gY29udHJvbCAwIChSVykgICAgICAqLworI2RlZmluZSBfTURNX0NUTF8xICAgICAgICAgICAgICAweDEwMDAwMGI0ICAgICAgLyogTW9kZW0gY29udHJvbCAxIChSVykgICAgICAqLworI2RlZmluZSBfTkNSXzAJICAgICAgICAgICAgICAgIDB4MTAwMDAwYTAgICAgICAvKiBDb250cm9sIFJlZ2lzdGVyIChSVykgICAgICovCisjZGVmaW5lIF9LUF9YX09VVCAgICAgICAgICAgICAgIDB4MTAwMDAwOTAgICAgICAvKiBLZXlwYWQgcm93IHdyaXRlIChSVykgICAgICovCisjZGVmaW5lIF9LUF9ZX0lOICAgICAgICAgICAgICAgIDB4MTAwMDAwODAgICAgICAvKiBLZXlwYWQgY29sdW1uIHJlYWQgKFJPKSAgICovCisjZGVmaW5lIF9TV1BLICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMjAgICAgICAvKiBTd2l0Y2ggcGFjayAoUk8pICAgICAgICAgICovCisjZGVmaW5lIF9XSE9BTUkgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAgICAgICAvKiBTeXN0ZW0gSUQgUmVnaXN0ZXIgKFJPKSAgICovCisKKyNkZWZpbmUgX0xFRFMgICAgICAgICAgICAgICAgICAgMHgxMDAwMDAxMCAgICAgIC8qIExFRHMgWzMxOjBdIChXTykgICAgICAgICAgKi8KKworI2RlZmluZSBJUlIgICAgICAgICAgICAgICAgICAgICAoKigodm9sYXRpbGUgdV9jaGFyICopIE5lcF9wMnYoX0lSUikpKQorI2RlZmluZSBBVURfQ1RMICAgICAgICAgICAgICAgICAoKigodm9sYXRpbGUgdV9jaGFyICopIE5lcF9wMnYoX0FVRF9DVEwpKSkKKyNkZWZpbmUgTURNX0NUTF8wICAgICAgICAgICAgICAgKCooKHZvbGF0aWxlIHVfY2hhciAqKSBOZXBfcDJ2KF9NRE1fQ1RMXzApKSkKKyNkZWZpbmUgTURNX0NUTF8xICAgICAgICAgICAgICAgKCooKHZvbGF0aWxlIHVfY2hhciAqKSBOZXBfcDJ2KF9NRE1fQ1RMXzEpKSkKKyNkZWZpbmUgTkNSXzAJCQkoKigodm9sYXRpbGUgdV9jaGFyICopIE5lcF9wMnYoX05DUl8wKSkpCisjZGVmaW5lIEtQX1hfT1VUICAgICAgICAgICAgICAgICgqKCh2b2xhdGlsZSB1X2NoYXIgKikgTmVwX3AydihfS1BfWF9PVVQpKSkKKyNkZWZpbmUgS1BfWV9JTiAgICAgICAgICAgICAgICAgKCooKHZvbGF0aWxlIHVfY2hhciAqKSBOZXBfcDJ2KF9LUF9ZX0lOKSkpCisjZGVmaW5lIFNXUEsgICAgICAgICAgICAgICAgICAgICgqKCh2b2xhdGlsZSB1X2NoYXIgKikgTmVwX3AydihfU1dQSykpKQorI2RlZmluZSBXSE9BTUkgICAgICAgICAgICAgICAgICAoKigodm9sYXRpbGUgdV9jaGFyICopIE5lcF9wMnYoX1dIT0FNSSkpKQorCisjZGVmaW5lIExFRFMgICAgICAgICAgICAgICAgICAgICgqKCh2b2xhdGlsZSBXb3JkICAgKikgTmVwX3AydihfTEVEUykpKQorCisjZGVmaW5lIElSUl9FVEhFUk5FVAkJKDE8PDApCisjZGVmaW5lIElSUl9VU0FSCQkoMTw8MSkKKyNkZWZpbmUgSVJSX1NBMTExMQkJKDE8PDIpCisKKyNkZWZpbmUgQVVEX1NFTF8xMzQxICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIEFVRF9NVVRFXzEzNDEgICAgICAgICAgICgxPDwxKQorCisjZGVmaW5lIE1ETV9DVEwwX1JUUzEJCSgxIDw8IDApCisjZGVmaW5lIE1ETV9DVEwwX0RUUjEJCSgxIDw8IDEpCisjZGVmaW5lIE1ETV9DVEwwX1JUUzIJCSgxIDw8IDIpCisjZGVmaW5lIE1ETV9DVEwwX0RUUjIJCSgxIDw8IDMpCisKKyNkZWZpbmUgTURNX0NUTDFfQ1RTMQkJKDEgPDwgMCkKKyNkZWZpbmUgTURNX0NUTDFfRFNSMQkJKDEgPDwgMSkKKyNkZWZpbmUgTURNX0NUTDFfRENEMQkJKDEgPDwgMikKKyNkZWZpbmUgTURNX0NUTDFfQ1RTMgkJKDEgPDwgMykKKyNkZWZpbmUgTURNX0NUTDFfRFNSMgkJKDEgPDwgNCkKKyNkZWZpbmUgTURNX0NUTDFfRENEMgkJKDEgPDwgNSkKKworI2RlZmluZSBOQ1JfR1AwMV9PRkYJCSgxPDwwKQorI2RlZmluZSBOQ1JfVFBfUFdSX0VOCQkoMTw8MSkKKyNkZWZpbmUgTkNSX01TX1BXUl9FTgkJKDE8PDIpCisjZGVmaW5lIE5DUl9FTkVUX09TQ19FTgkJKDE8PDMpCisjZGVmaW5lIE5DUl9TUElfS0JfV0tfVVAJKDE8PDQpCisjZGVmaW5lIE5DUl9BMFZQUAkJKDE8PDUpCisjZGVmaW5lIE5DUl9BMVZQUAkJKDE8PDYpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njc0ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3BhcmFtLmgKQEAgLTAsMCArMSwzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9wYXJhbS5oCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zaGFubm9uLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvc2hhbm5vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjdkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvc2hhbm5vbi5oCkBAIC0wLDAgKzEsNDMgQEAKKyNpZm5kZWYgX0lOQ0xVREVfU0hBTk5PTl9ICisjZGVmaW5lIF9JTkNMVURFX1NIQU5OT05fSAorCisvKiB0YWtlbiBmcm9tIGNvbXAub3MuaW5mZXJubyBUdWUsIDEyIFNlcCAyMDAwIDA5OjIxOjUwIEdNVCwKKyAqIHdyaXR0ZW4gYnkgPGZvcnN5dGhAdml0YW51b3ZhLmNvbT4gKi8KKworI2RlZmluZSBTSEFOTk9OX0dQSU9fU1BJX0ZMQVNICQlHUElPX0dQSU8gKDApCS8qIE91dHB1dCAtIERyaXZlbiBsb3csIGVuYWJsZXMgU1BJIHRvIGZsYXNoICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19TUElfRFNQCQlHUElPX0dQSU8gKDEpCS8qIE91dHB1dCAtIERyaXZlbiBsb3csIGVuYWJsZXMgU1BJIHRvIERTUCAqLworLyogbGNkIGxvd2VyID0gR1BJTyAyLTkgKi8KKyNkZWZpbmUgU0hBTk5PTl9HUElPX1NQSV9PVVRQVVQJCUdQSU9fR1BJTyAoMTApCS8qIE91dHB1dCAtIFNQSSBvdXRwdXQgdG8gRFNQICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19TUElfSU5QVVQJCUdQSU9fR1BJTyAoMTEpCS8qIElucHV0ICAtIFNQSSBpbnB1dCBmcm9tIERTUCAqLworI2RlZmluZSBTSEFOTk9OX0dQSU9fU1BJX0NMT0NLCQlHUElPX0dQSU8gKDEyKQkvKiBPdXRwdXQgLSBDbG9jayBmb3IgU1BJICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19TUElfRlJBTUUJCUdQSU9fR1BJTyAoMTMpCS8qIE91dHB1dCAtIEZyYW1lIG1hcmtlciAtIG5vdCB1c2VkICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19TUElfUlRTCQlHUElPX0dQSU8gKDE0KQkvKiBJbnB1dCAgLSBTUEkgUmVhZHkgdG8gU2VuZCAqLworI2RlZmluZSBTSEFOTk9OX0lSUV9HUElPX1NQSV9SVFMJSVJRX0dQSU8xNAorI2RlZmluZSBTSEFOTk9OX0dQSU9fU1BJX0NUUwkJR1BJT19HUElPICgxNSkJLyogT3V0cHV0IC0gU1BJIENsZWFyIHRvIFNlbmQgKi8KKyNkZWZpbmUgU0hBTk5PTl9HUElPX0lSUV9DT0RFQwkJR1BJT19HUElPICgxNikJLyogaW4sIGlycSBmcm9tIHVjYjEyMDAgKi8KKyNkZWZpbmUgU0hBTk5PTl9JUlFfR1BJT19JUlFfQ09ERUMJSVJRX0dQSU8xNgorI2RlZmluZSBTSEFOTk9OX0dQSU9fRFNQX1JFU0VUCQlHUElPX0dQSU8gKDE3KQkvKiBPdXRwdXQgLSBEcml2ZSBsb3cgdG8gcmVzZXQgdGhlIERTUCAqLworI2RlZmluZSBTSEFOTk9OX0dQSU9fQ09ERUNfUkVTRVQJR1BJT19HUElPICgxOCkJLyogT3V0cHV0IC0gRHJpdmUgbG93IHRvIHJlc2V0IHRoZSBVQ0IxeDAwICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19VM19SVFMJCUdQSU9fR1BJTyAoMTkpCS8qID8/ICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19VM19DVFMJCUdQSU9fR1BJTyAoMjApCS8qID8/ICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19TRU5TRV8xMlYJCUdQSU9fR1BJTyAoMjEpCS8qIElucHV0LCAxMnYgZmxhc2ggdW5wcm90ZWN0IGRldGVjdGVkICovCisjZGVmaW5lIFNIQU5OT05fR1BJT19ESVNQX0VOCQlHUElPX0dQSU8gKDIyKQkvKiBvdXQgKi8KKy8qIFhYWCBHUElPIDIzIHVuYWNjb3VudGVkIGZvciAqLworI2RlZmluZSBTSEFOTk9OX0dQSU9fRUpFQ1RfMAkJR1BJT19HUElPICgyNCkJLyogaW4gKi8KKyNkZWZpbmUgU0hBTk5PTl9JUlFfR1BJT19FSkVDVF8wCUlSUV9HUElPMjQKKyNkZWZpbmUgU0hBTk5PTl9HUElPX0VKRUNUXzEJCUdQSU9fR1BJTyAoMjUpCS8qIGluICovCisjZGVmaW5lIFNIQU5OT05fSVJRX0dQSU9fRUpFQ1RfMQlJUlFfR1BJTzI1CisjZGVmaW5lIFNIQU5OT05fR1BJT19SRFlfMAkJR1BJT19HUElPICgyNikJLyogaW4gKi8KKyNkZWZpbmUgU0hBTk5PTl9JUlFfR1BJT19SRFlfMAkJSVJRX0dQSU8yNgorI2RlZmluZSBTSEFOTk9OX0dQSU9fUkRZXzEJCUdQSU9fR1BJTyAoMjcpCS8qIGluICovCisjZGVmaW5lIFNIQU5OT05fSVJRX0dQSU9fUkRZXzEJCUlSUV9HUElPMjcKKworLyogTUNQIFVDQiBjb2RlYyBHUElPIHBpbnMuLi4gKi8KKworI2RlZmluZSBTSEFOTk9OX1VDQl9HUElPX0JBQ0tMSUdIVAk5CisjZGVmaW5lIFNIQU5OT05fVUNCX0dQSU9fQlJJR0hUX01BU0sgIAk3CisjZGVmaW5lIFNIQU5OT05fVUNCX0dQSU9fQlJJR0hUCQk2CisjZGVmaW5lIFNIQU5OT05fVUNCX0dQSU9fQ09OVFJBU1RfTUFTSwkweDNmCisjZGVmaW5lIFNIQU5OT05fVUNCX0dQSU9fQ09OVFJBU1QJMAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zaW1wYWQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zaW1wYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzQzMDFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3NpbXBhZC5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3NpbXBhZC5oCisgKgorICogYmFzZWQgb2YgYXNzYWJldC5oIHNhbWUgYXMgSFVXX1dlYnBhbmVsCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBzcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgU0lNcGFkCisgKgorICogMjAwMS8wNS8xNCBKdWVyZ2VuIE1lc3NlcmVyIDxqdWVyZ2VuLm1lc3NlcmVyQGZyZWVzdXJmLmNoPgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9TSU1QQURfSAorI2RlZmluZSBfX0FTTV9BUkNIX1NJTVBBRF9ICisKKworI2RlZmluZSBHUElPX1VBUlQxX1JUUwlHUElPX0dQSU8xNAorI2RlZmluZSBHUElPX1VBUlQxX0RUUglHUElPX0dQSU83CisjZGVmaW5lIEdQSU9fVUFSVDFfQ1RTCUdQSU9fR1BJTzgKKyNkZWZpbmUgR1BJT19VQVJUMV9EQ0QJR1BJT19HUElPMjMKKyNkZWZpbmUgR1BJT19VQVJUMV9EU1IJR1BJT19HUElPNgorCisjZGVmaW5lIEdQSU9fVUFSVDNfUlRTCUdQSU9fR1BJTzEyCisjZGVmaW5lIEdQSU9fVUFSVDNfRFRSCUdQSU9fR1BJTzE2CisjZGVmaW5lIEdQSU9fVUFSVDNfQ1RTCUdQSU9fR1BJTzEzCisjZGVmaW5lIEdQSU9fVUFSVDNfRENECUdQSU9fR1BJTzE4CisjZGVmaW5lIEdQSU9fVUFSVDNfRFNSCUdQSU9fR1BJTzE3CisKKyNkZWZpbmUgR1BJT19QT1dFUl9CVVRUT04JR1BJT19HUElPMAorI2RlZmluZSBHUElPX1VDQjEzMDBfSVJRCUdQSU9fR1BJTzIyCS8qIFVDQiBHUElPIGFuZCB0b3VjaHNjcmVlbiAqLworCisjZGVmaW5lIElSUV9VQVJUMV9DVFMJSVJRX0dQSU8xNQorI2RlZmluZSBJUlFfVUFSVDFfRENECUdQSU9fR1BJTzIzCisjZGVmaW5lIElSUV9VQVJUMV9EU1IJR1BJT19HUElPNgorI2RlZmluZSBJUlFfVUFSVDNfQ1RTCUdQSU9fR1BJTzEzCisjZGVmaW5lIElSUV9VQVJUM19EQ0QJR1BJT19HUElPMTgKKyNkZWZpbmUgSVJRX1VBUlQzX0RTUglHUElPX0dQSU8xNworCisjZGVmaW5lIElSUV9HUElPX1VDQjEzMDBfSVJRIElSUV9HUElPMjIKKyNkZWZpbmUgSVJRX0dQSU9fUE9XRVJfQlVUVE9OIElSUV9HUElPMAorCisKKy8qLS0tICBQQ01DSUEgIC0tLSovCisjZGVmaW5lIEdQSU9fQ0ZfQ0QgICAgICAgICAgICAgIEdQSU9fR1BJTzI0CisjZGVmaW5lIEdQSU9fQ0ZfSVJRICAgICAgICAgICAgIEdQSU9fR1BJTzEKKyNkZWZpbmUgSVJRX0dQSU9fQ0ZfSVJRICAgICAgICAgSVJRX0dQSU8xCisjZGVmaW5lIElSUV9HUElPX0NGX0NEICAgICAgICAgIElSUV9HUElPMjQKKworLyotLS0gU21hcnRDYXJkIC0tLSovCisjZGVmaW5lIEdQSU9fU01BUlRfQ0FSRAkJR1BJT19HUElPMTAKKyNkZWZpbmUgSVJRX0dQSU9fU01BUkRfQ0FSRAlJUlFfR1BJTzEwCisKKy8vIENTMyBMYXRjaCBpcyB3cml0ZSBvbmx5LCBhIHNoYWRvdyBpcyBuZWNlc3NhcnkKKworI2RlZmluZSBDUzNCVVNUWVBFIHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcKKyNkZWZpbmUgQ1MzX0JBU0UgICAgICAgIDB4ZjEwMDAwMDAKKworI2RlZmluZSBWQ0NfNVZfRU4gICAgICAgMHgwMDAxIC8vIEZvciA1ViBQQ01DSUEKKyNkZWZpbmUgVkNDXzNWX0VOICAgICAgIDB4MDAwMiAvLyBGT1IgMy4zViBQQ01DSUEKKyNkZWZpbmUgRU4xICAgICAgICAgICAgIDB4MDAwNCAvLyBUaGlzIGlzIG9ubHkgZm9yIEVQUk9NJ3MKKyNkZWZpbmUgRU4wICAgICAgICAgICAgIDB4MDAwOCAvLyBCb3RoIHNob3VsZCBiZSBlbmFibGUgZm9yIDMuM1Ygb3IgNVYKKyNkZWZpbmUgRElTUExBWV9PTiAgICAgIDB4MDAxMAorI2RlZmluZSBQQ01DSUFfQlVGRl9ESVMgMHgwMDIwCisjZGVmaW5lIE1RX1JFU0VUICAgICAgICAweDAwNDAKKyNkZWZpbmUgUENNQ0lBX1JFU0VUICAgIDB4MDA4MAorI2RlZmluZSBERUNUX1BPV0VSX09OICAgMHgwMTAwCisjZGVmaW5lIElSREFfU0QgICAgICAgICAweDAyMDAgLy8gU2h1dGRvd24gZm9yIHBvd2Vyc2F2ZQorI2RlZmluZSBSUzIzMl9PTiAgICAgICAgMHgwNDAwCisjZGVmaW5lIFNEX01FRElBUSAgICAgICAweDA4MDAgLy8gU2h1dGRvd24gZm9yIHBvd2Vyc2F2ZQorI2RlZmluZSBMRUQyX09OICAgICAgICAgMHgxMDAwCisjZGVmaW5lIElSREFfTU9ERSAgICAgICAweDIwMDAgLy8gRmFzdC9TbG93IElyREEgbW9kZQorI2RlZmluZSBFTkFCTEVfNVYgICAgICAgMHg0MDAwIC8vIEVuYWJsZSA1ViBjaXJjdWl0CisjZGVmaW5lIFJFU0VUX1NJTUNBUkQgICAweDgwMDAKKworI2RlZmluZSBSUzIzMl9FTkFCTEUgICAgMHgwNDQwCisjZGVmaW5lIFBDTUNJQU1BU0sgICAgICAweDQwMmYKKworCitzdHJ1Y3Qgc2ltcGFkX2JhdHRlcnkgeworCXVuc2lnbmVkIGNoYXIgYWNfc3RhdHVzOwkvKiBsaW5lIGNvbm5lY3RlZCB5ZXMvbm8gKi8KKwl1bnNpZ25lZCBjaGFyIHN0YXR1czsJCS8qIGJhdHRlcnkgbG9hZGluZyB5ZXMvbm8gKi8KKwl1bnNpZ25lZCBjaGFyIHBlcmNlbnRhZ2U7CS8qIHBlcmNlbnRhZ2UgbG9hZGVkICovCisJdW5zaWduZWQgc2hvcnQgbGlmZTsJCS8qIGxpZmUgdGlsbCBlbXB0eSAqLworfTsKKworLyogVGhlc2Ugc2hvdWxkIG1hdGNoIHRoZSBhcG1fYmlvcy5oIGRlZmluaXRpb25zICovCisjZGVmaW5lIFNJTVBBRF9BQ19TVEFUVVNfQUNfT0ZGTElORSAgICAgIDB4MDAKKyNkZWZpbmUgU0lNUEFEX0FDX1NUQVRVU19BQ19PTkxJTkUgICAgICAgMHgwMQorI2RlZmluZSBTSU1QQURfQUNfU1RBVFVTX0FDX0JBQ0tVUCAgICAgICAweDAyICAgLyogV2hhdCBkb2VzIHRoaXMgbWVhbj8gKi8KKyNkZWZpbmUgU0lNUEFEX0FDX1NUQVRVU19BQ19VTktOT1dOICAgICAgMHhmZgorCisvKiBUaGVzZSBiaXRmaWVsZHMgYXJlIHJhcmVseSAib3InZCIgdG9nZXRoZXIgKi8KKyNkZWZpbmUgU0lNUEFEX0JBVFRfU1RBVFVTX0hJR0ggICAgICAgICAgMHgwMQorI2RlZmluZSBTSU1QQURfQkFUVF9TVEFUVVNfTE9XICAgICAgICAgICAweDAyCisjZGVmaW5lIFNJTVBBRF9CQVRUX1NUQVRVU19DUklUSUNBTCAgICAgIDB4MDQKKyNkZWZpbmUgU0lNUEFEX0JBVFRfU1RBVFVTX0NIQVJHSU5HICAgICAgMHgwOAorI2RlZmluZSBTSU1QQURfQkFUVF9TVEFUVVNfQ0hBUkdFX01BSU4gICAweDEwCisjZGVmaW5lIFNJTVBBRF9CQVRUX1NUQVRVU19ERUFEICAgICAgICAgIDB4MjAgICAvKiBCYXR0ZXJ5IHdpbGwgbm90IGNoYXJnZSAqLworI2RlZmluZSBTSU1QQURfQkFUVF9OT1RfSU5TVEFMTEVEICAgICAgICAweDIwICAgLyogRm9yIGV4cGFuc2lvbiBwYWNrIGJhdHRlcmllcyAqLworI2RlZmluZSBTSU1QQURfQkFUVF9TVEFUVVNfRlVMTCAgICAgICAgICAweDQwICAgLyogQmF0dGVyeSBmdWxseSBjaGFyZ2VkIChhbmQgY29ubmVjdGVkIHRvIEFDKSAqLworI2RlZmluZSBTSU1QQURfQkFUVF9TVEFUVVNfTk9CQVRUICAgICAgICAweDgwCisjZGVmaW5lIFNJTVBBRF9CQVRUX1NUQVRVU19VTktOT1dOICAgICAgIDB4ZmYKKworZXh0ZXJuIGludCBzaW1wYWRfZ2V0X2JhdHRlcnkoc3RydWN0IHNpbXBhZF9iYXR0ZXJ5KiApOworCisjZW5kaWYgLy8gX19BU01fQVJDSF9TSU1QQURfSAorCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjUyMTE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3N5c3RlbS5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvc3lzdGVtLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTkgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgorICovCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2lkbGUodm9pZCkKK3sKKwljcHVfZG9faWRsZSgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9yZXNldChjaGFyIG1vZGUpCit7CisJaWYgKG1vZGUgPT0gJ3MnKSB7CisJCS8qIEp1bXAgaW50byBST00gYXQgYWRkcmVzcyAwICovCisJCWNwdV9yZXNldCgwKTsKKwl9IGVsc2UgeworCQkvKiBVc2Ugb24tY2hpcCByZXNldCBjYXBhYmlsaXR5ICovCisJCVJTUlIgPSBSU1JSX1NXUjsKKwl9Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzN2JlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdGltZXguaApAQCAtMCwwICsxLDEyIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2ExMTAwL3RpbWV4LmgKKyAqCisgKiBTQTExMDAgYXJjaGl0ZWN0dXJlIHRpbWV4IHNwZWNpZmljYXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IAorICovCisKKy8qCisgKiBTQTExMDAgdGltZXIKKyAqLworI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCTM2ODY0MDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNDUzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdW5jb21wcmVzcy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1icnV0dXMvdW5jb21wcmVzcy5oCisgKgorICogKEMpIDE5OTkgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgorICoKKyAqIFJlb3JnYW5pc2VkIHRvIGJlIG1hY2hpbmUgaW5kZXBlbmRlbnQuCisgKi8KKworI2luY2x1ZGUgImhhcmR3YXJlLmgiCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGUgc2VyaWFsIHBvcnQgaGFzIGFscmVhZHkgYmVlbgorICogaW5pdGlhbGl6ZWQgYnkgdGhlIGJvb3Rsb2FkZXIuICBXZSBzZWFyY2ggZm9yIHRoZSBmaXJzdCBlbmFibGVkCisgKiBwb3J0IGluIHRoZSBtb3N0IHByb2JhYmxlIG9yZGVyLiAgSWYgeW91IGRpZG4ndCBzZXR1cCBhIHBvcnQgaW4KKyAqIHlvdXIgYm9vdGxvYWRlciB0aGVuIG5vdGhpbmcgd2lsbCBhcHBlYXIgKHdoaWNoIG1pZ2h0IGJlIGRlc2lyZWQpLgorICovCisKKyNkZWZpbmUgVUFSVCh4KQkJKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShzZXJpYWxfcG9ydCArICh4KSkpCisKK3N0YXRpYyB2b2lkIHB1dHN0ciggY29uc3QgY2hhciAqcyApCit7CisJdW5zaWduZWQgbG9uZyBzZXJpYWxfcG9ydDsKKworCWRvIHsKKwkJc2VyaWFsX3BvcnQgPSBfU2VyM1VUQ1IwOworCQlpZiAoVUFSVChVVENSMykgJiBVVENSM19UWEUpIGJyZWFrOworCQlzZXJpYWxfcG9ydCA9IF9TZXIxVVRDUjA7CisJCWlmIChVQVJUKFVUQ1IzKSAmIFVUQ1IzX1RYRSkgYnJlYWs7CisJCXNlcmlhbF9wb3J0ID0gX1NlcjJVVENSMDsKKwkJaWYgKFVBUlQoVVRDUjMpICYgVVRDUjNfVFhFKSBicmVhazsKKwkJcmV0dXJuOworCX0gd2hpbGUgKDApOworCisJZm9yICg7ICpzOyBzKyspIHsKKwkJLyogd2FpdCBmb3Igc3BhY2UgaW4gdGhlIFVBUlQncyB0cmFuc21pdHRlciAqLworCQl3aGlsZSAoIShVQVJUKFVUU1IxKSAmIFVUU1IxX1RORikpOworCisJCS8qIHNlbmQgdGhlIGNoYXJhY3RlciBvdXQuICovCisJCVVBUlQoVVREUikgPSAqczsKKworCQkvKiBpZiBhIExGLCBhbHNvIGRvIENSLi4uICovCisJCWlmICgqcyA9PSAxMCkgeworCQkJd2hpbGUgKCEoVUFSVChVVFNSMSkgJiBVVFNSMV9UTkYpKTsKKwkJCVVBUlQoVVREUikgPSAxMzsKKwkJfQorCX0KK30KKworLyoKKyAqIE5vdGhpbmcgdG8gZG8gZm9yIHRoZXNlCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNhMTEwMC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNWJjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdm1hbGxvYy5oCkBAIC0wLDAgKzEsMTUgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zYTExMDAvdm1hbGxvYy5oCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJICAoOCoxMDI0KjEwMjQpCisjZGVmaW5lIFZNQUxMT0NfU1RBUlQJICAoKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ICsgVk1BTExPQ19PRkZTRVQpICYgfihWTUFMTE9DX09GRlNFVC0xKSkKKyNkZWZpbmUgVk1BTExPQ19FTkQgICAgICAgKDB4ZTgwMDAwMDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2IzN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvZGVidWctbWFjcm8uUwpAQCAtMCwwICsxLDMxIEBACisvKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisJCS5tYWNybwlhZGRydWFydCxyeAorCQltb3YJXHJ4LCAjMHhlMDAwMDAwMAorCQlvcnIJXHJ4LCBccngsICMweDAwMDAwM2Y4CisJCS5lbmRtCisKKwkJLm1hY3JvCXNlbmR1YXJ0LHJkLHJ4CisJCXN0cmIJXHJkLCBbXHJ4XQorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorCQltb3YJXHJkLCAjMAorMTAwMToJCWFkZAlccmQsIFxyZCwgIzEKKwkJdGVxCVxyZCwgIzB4MTAwMDAKKwkJYm5lCTEwMDFiCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOTg1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9kbWEuaApAQCAtMCwwICsxLDE4IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvZG1hLmgKKyAqCisgKiBieSBBbGV4YW5kZXIgU2NodWx6CisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKy8qIFVzZSBvbmx5IHRoZSBsb3dlc3QgNE1CLCBub3RoaW5nIGVsc2Ugd29ya3MuCisgKiBUaGUgcmVzdCBpcyBub3QgRE1BYWJsZS4gU2VlIGRldiAvICAucHJvcGVydGllcworICogaW4gT3BlbkZpcm13YXJlLgorICovCisjZGVmaW5lIE1BWF9ETUFfQUREUkVTUwkJMHhDMDQwMDAwMAorI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTCTgKKyNkZWZpbmUgRE1BX0lTQV9DQVNDQURFICAgICAgICAgNAorCisjZW5kaWYgLyogX0FTTV9BUkNIX0RNQV9IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MjRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9lbnRyeS1tYWNyby5TCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBTaGFyayBwbGF0Zm9ybQorICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisJCS5tYWNybwlkaXNhYmxlX2ZpcQorCQkuZW5kbQorCisJCS5tYWNybwlnZXRfaXJxbnJfYW5kX2Jhc2UsIGlycW5yLCBpcnFzdGF0LCBiYXNlLCB0bXAKKwkJbW92CXI0LCAjMHhlMDAwMDAwMAorCisJCW1vdglcaXJxc3RhdCwgIzB4MEMKKwkJc3RyYglcaXJxc3RhdCwgW3I0LCAjMHgyMF0JCUBvdXRiKDB4MEMsIDB4MjApIC8qIFBvbGwgY29tbWFuZCAqLworCQlsZHJiCVxpcnFuciwgW3I0LCAjMHgyMF0JCUBpcnEgPSBpbmIoMHgyMCkgJiA3CisJCWFuZAlcaXJxc3RhdCwgXGlycW5yLCAjMHg4MAorCQl0ZXEJXGlycXN0YXQsICMwCisJCWJlcQk0M2YKKwkJYW5kCVxpcnFuciwgXGlycW5yLCAjNworCQl0ZXEJXGlycW5yLCAjMgorCQlibmUJNDRmCis0MzoJCW1vdglcaXJxc3RhdCwgIzB4MEMKKwkJc3RyYglcaXJxc3RhdCwgW3I0LCAjMHhhMF0JCUBvdXRiKDB4MEMsIDB4QTApIC8qIFBvbGwgY29tbWFuZCAqLworCQlsZHJiCVxpcnFuciwgW3I0LCAjMHhhMF0JCUBpcnEgPSAoaW5iKDB4QTApICYgNykgKyA4CisJCWFuZAlcaXJxc3RhdCwgXGlycW5yLCAjMHg4MAorCQl0ZXEJXGlycXN0YXQsICMwCisJCWJlcQk0NGYKKwkJYW5kCVxpcnFuciwgXGlycW5yLCAjNworCQlhZGQJXGlycW5yLCBcaXJxbnIsICM4Cis0NDoJCXRlcQlcaXJxc3RhdCwgIzAKKwkJLmVuZG0KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNWY4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2hhcmR3YXJlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2hhcmR3YXJlLmgKKyAqCisgKiBieSBBbGV4YW5kZXIgU2NodWx6CisgKgorICogZGVyaXZlZCBmcm9tOgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTExMC9oYXJkd2FyZS5oCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSBSdXNzZWxsIEtpbmcuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKgorICogTWFwcGluZyBhcmVhcworICovCisjZGVmaW5lIElPX0JBU0UJCQkweGUwMDAwMDAwCisKKy8qCisgKiBSQU0gZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBGTFVTSF9CQVNFX1BIWVMJCTB4ODAwMDAwMDAKKworI2Vsc2UKKworI2RlZmluZSBJT19CQVNFCQkJMAorCisjZW5kaWYKKworI2RlZmluZSBJT19TSVpFCQkJMHgwODAwMDAwMAorI2RlZmluZSBJT19TVEFSVAkJMHg0MDAwMDAwMAorI2RlZmluZSBST01DQVJEX1NJWkUJCTB4MDgwMDAwMDAKKyNkZWZpbmUgUk9NQ0FSRF9TVEFSVAkJMHgxMDAwMDAwMAorCisjZGVmaW5lIEZMVVNIX0JBU0UJCTB4ZGYwMDAwMDAKKyNkZWZpbmUgUENJT19CQVNFCQkweGUwMDAwMDAwCisKKworLyogZGVmaW5lcyBmb3IgdGhlIEZyYW1lYnVmZmVyICovCisjZGVmaW5lIEZCX1NUQVJUCQkweDA2MDAwMDAwCisjZGVmaW5lIEZCX1NJWkUJCQkweDAxMDAwMDAwCisKKyNkZWZpbmUgVU5DQUNIRUFCTEVfQUREUiAgICAgICAgMHhkZjAxMDAwMAorCisjZGVmaW5lIFNFUVVPSUFfTEVEX0dSRUVOICAgICAgICgxPDw2KQorI2RlZmluZSBTRVFVT0lBX0xFRF9BTUJFUiAgICAgICAoMTw8NSkKKyNkZWZpbmUgU0VRVU9JQV9MRURfQkFDSyAgICAgICAgKDE8PDcpCisKKyNkZWZpbmUgcGNpYmlvc19hc3NpZ25fYWxsX2J1c3NlcygpICAgICAxCisKKyNkZWZpbmUgUENJQklPU19NSU5fSU8gICAgICAgICAgMHg2MDAwCisjZGVmaW5lIFBDSUJJT1NfTUlOX01FTSAgICAgICAgIDB4NTAwMDAwMDAKKyNkZWZpbmUgUENJTUVNX0JBU0UJCTB4ZTgwMDAwMDAKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2lvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlN2YyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9pby5oCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvaW8uaAorICoKKyAqIGJ5IEFsZXhhbmRlciBTY2h1bHoKKyAqCisgKiBkZXJpdmVkIGZyb206CisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL2lvLmgKKyAqIENvcHlyaWdodCAoQykgMTk5NywxOTk4IFJ1c3NlbGwgS2luZworICovCisKKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fQVJDSF9JT19ICisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQgMHhmZmZmZmZmZgorCisvKgorICogV2UgdXNlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgYWRkcmVzc2luZyAtIFBDIHN0eWxlIGFkZHJlc3NlcywgYW5kIEFSTQorICogYWRkcmVzc2VzLiAgUEMgc3R5bGUgYWNjZXNzZXMgdGhlIFBDIGhhcmR3YXJlIHdpdGggdGhlIG5vcm1hbCBQQyBJTworICogYWRkcmVzc2VzLCBlZyAweDNmOCBmb3Igc2VyaWFsIzEuICBBUk0gYWRkcmVzc2VzIGFyZSAweDgwMDAwMDAwKworICogYW5kIGFyZSB0cmFuc2xhdGVkIHRvIHRoZSBzdGFydCBvZiBJTy4KKyAqLworI2RlZmluZSBfX1BPUlRfUENJTyh4KQkoISgoeCkgJiAweDgwMDAwMDAwKSkKKworLyoKKyAqIER5bmFtaWMgSU8gZnVuY3Rpb25zIC0gbGV0IHRoZSBjb21waWxlcgorICogb3B0aW1pemUgdGhlIGV4cHJlc3Npb25zCisgKi8KKyNkZWZpbmUgREVDTEFSRV9EWU5fT1VUKGZuc3VmZml4LGluc3RyKQkJCQkJCVwKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX291dCMjZm5zdWZmaXggKHVuc2lnbmVkIGludCB2YWx1ZSwgdW5zaWduZWQgaW50IHBvcnQpCVwKK3sJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgdGVtcDsJCQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCQlcCisJInRzdAklMiwgIzB4ODAwMDAwMDBcblx0IgkJCQkJCVwKKwkibW92CSUwLCAlNFxuXHQiCQkJCQkJCVwKKwkiYWRkZXEJJTAsICUwLCAlM1xuXHQiCQkJCQkJCVwKKwkic3RyIiBpbnN0ciAiCSUxLCBbJTAsICUyXQlAIG91dCIgI2Zuc3VmZml4CQkJXAorCTogIj0mciIgKHRlbXApCQkJCQkJCQlcCisJOiAiciIgKHZhbHVlKSwgInIiIChwb3J0KSwgIklyIiAoUENJT19CQVNFIC0gSU9fQkFTRSksICJJciIgKElPX0JBU0UpCVwKKwk6ICJjYyIpOwkJCQkJCQkJXAorfQorCisjZGVmaW5lIERFQ0xBUkVfRFlOX0lOKHN6LGZuc3VmZml4LGluc3RyKQkJCQkJXAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBzeiBfX2luIyNmbnN1ZmZpeCAodW5zaWduZWQgaW50IHBvcnQpCQlcCit7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHRlbXAsIHZhbHVlOwkJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQkJXAorCSJ0c3QJJTIsICMweDgwMDAwMDAwXG5cdCIJCQkJCQlcCisJIm1vdgklMCwgJTRcblx0IgkJCQkJCQlcCisJImFkZGVxCSUwLCAlMCwgJTNcblx0IgkJCQkJCQlcCisJImxkciIgaW5zdHIgIgklMSwgWyUwLCAlMl0JQCBpbiIgI2Zuc3VmZml4CQkJCVwKKwk6ICI9JnIiICh0ZW1wKSwgIj1yIiAodmFsdWUpCQkJCQkJXAorCTogInIiIChwb3J0KSwgIklyIiAoUENJT19CQVNFIC0gSU9fQkFTRSksICJJciIgKElPX0JBU0UpCQlcCisJOiAiY2MiKTsJCQkJCQkJCVwKKwlyZXR1cm4gKHVuc2lnbmVkIHN6KXZhbHVlOwkJCQkJCVwKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgX19pb2FkZHIgKHVuc2lnbmVkIGludCBwb3J0KQkJCVwKK3sJCQkJCQkJCQkJXAorCWlmIChfX1BPUlRfUENJTyhwb3J0KSkJCQkJCQkJXAorCQlyZXR1cm4gKHVuc2lnbmVkIGludCkoUENJT19CQVNFICsgKHBvcnQpKTsJCQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJcmV0dXJuICh1bnNpZ25lZCBpbnQpKElPX0JBU0UgKyAocG9ydCkpOwkJCVwKK30KKworI2RlZmluZSBERUNMQVJFX0lPKHN6LGZuc3VmZml4LGluc3RyKQlcCisJREVDTEFSRV9EWU5fT1VUKGZuc3VmZml4LGluc3RyKQlcCisJREVDTEFSRV9EWU5fSU4oc3osZm5zdWZmaXgsaW5zdHIpCisKK0RFQ0xBUkVfSU8oY2hhcixiLCJiIikKK0RFQ0xBUkVfSU8oc2hvcnQsdywiaCIpCitERUNMQVJFX0lPKGxvbmcsbCwiIikKKworI3VuZGVmIERFQ0xBUkVfSU8KKyN1bmRlZiBERUNMQVJFX0RZTl9PVVQKKyN1bmRlZiBERUNMQVJFX0RZTl9JTgorCisvKgorICogQ29uc3RhbnQgYWRkcmVzcyBJTyBmdW5jdGlvbnMKKyAqCisgKiBUaGVzZSBoYXZlIHRvIGJlIG1hY3JvcyBmb3IgdGhlICdKJyBjb25zdHJhaW50IHRvIHdvcmsgLQorICogKy8tNDA5NiBpbW1lZGlhdGUgb3BlcmFuZC4KKyAqLworI2RlZmluZSBfX291dGJjKHZhbHVlLHBvcnQpCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cmIJJTAsIFslMSwgJTJdCQlAIG91dGJjIgkJCVwKKwkJOiA6ICJyIiAodmFsdWUpLCAiciIgKFBDSU9fQkFTRSksICJKciIgKHBvcnQpKTsJCVwKKwllbHNlCQkJCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJzdHJiCSUwLCBbJTEsICUyXQkJQCBvdXRiYyIJCQlcCisJCTogOiAiciIgKHZhbHVlKSwgInIiIChJT19CQVNFKSwgInIiIChwb3J0KSk7CQlcCit9KQorCisjZGVmaW5lIF9faW5iYyhwb3J0KQkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGNoYXIgcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcmIJJTAsIFslMSwgJTJdCQlAIGluYmMiCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiIChwb3J0KSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyYgklMCwgWyUxLCAlMl0JCUAgaW5iYyIJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKElPX0JBU0UpLCAiciIgKHBvcnQpKTsJCVwKKwlyZXN1bHQ7CQkJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX291dHdjKHZhbHVlLHBvcnQpCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIHYgPSB2YWx1ZTsJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJzdHJoCSUwLCBbJTEsICUyXQkJQCBvdXR3YyIJCQlcCisJCTogOiAiciIgKHZ8djw8MTYpLCAiciIgKFBDSU9fQkFTRSksICJKciIgKHBvcnQpKTsJXAorCWVsc2UJCQkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cmgJJTAsIFslMSwgJTJdCQlAIG91dHdjIgkJCVwKKwkJOiA6ICJyIiAodnx2PDwxNiksICJyIiAoSU9fQkFTRSksICJyIiAocG9ydCkpOwkJXAorfSkKKworI2RlZmluZSBfX2lud2MocG9ydCkJCQkJCQkJCVwKKyh7CQkJCQkJCQkJCVwKKwl1bnNpZ25lZCBzaG9ydCByZXN1bHQ7CQkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJImxkcmgJJTAsIFslMSwgJTJdCQlAIGlud2MiCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiIChwb3J0KSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyaAklMCwgWyUxLCAlMl0JCUAgaW53YyIJCQkJXAorCQk6ICI9ciIgKHJlc3VsdCkgOiAiciIgKElPX0JBU0UpLCAiciIgKHBvcnQpKTsJCVwKKwlyZXN1bHQgJiAweGZmZmY7CQkJCQkJCVwKK30pCisKKyNkZWZpbmUgX19vdXRsYyh2YWx1ZSxwb3J0KQkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgdiA9IHZhbHVlOwkJCQkJCVwKKwlpZiAoX19QT1JUX1BDSU8oKHBvcnQpKSkJCQkJCQlcCisJCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKKwkJInN0cgklMCwgWyUxLCAlMl0JCUAgb3V0bGMiCQkJXAorCQk6IDogInIiICh2KSwgInIiIChQQ0lPX0JBU0UpLCAiSnIiIChwb3J0KSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkic3RyCSUwLCBbJTEsICUyXQkJQCBvdXRsYyIJCQlcCisJCTogOiAiciIgKHYpLCAiciIgKElPX0JBU0UpLCAiciIgKHBvcnQpKTsJCQlcCit9KQorCisjZGVmaW5lIF9faW5sYyhwb3J0KQkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgcmVzdWx0OwkJCQkJCQlcCisJaWYgKF9fUE9SVF9QQ0lPKChwb3J0KSkpCQkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQlcCisJCSJsZHIJJTAsIFslMSwgJTJdCQlAIGlubGMiCQkJCVwKKwkJOiAiPXIiIChyZXN1bHQpIDogInIiIChQQ0lPX0JBU0UpLCAiSnIiIChwb3J0KSk7CQlcCisJZWxzZQkJCQkJCQkJCVwKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAorCQkibGRyCSUwLCBbJTEsICUyXQkJQCBpbmxjIgkJCQlcCisJCTogIj1yIiAocmVzdWx0KSA6ICJyIiAoSU9fQkFTRSksICJyIiAocG9ydCkpOwkJXAorCXJlc3VsdDsJCQkJCQkJCQlcCit9KQorCisjZGVmaW5lIF9faW9hZGRyYyhwb3J0KQkJCQkJCQkJXAorKHsJCQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgYWRkcjsJCQkJCQkJXAorCWlmIChfX1BPUlRfUENJTygocG9ydCkpKQkJCQkJCVwKKwkJYWRkciA9IFBDSU9fQkFTRSArIChwb3J0KTsJCQkJXAorCWVsc2UJCQkJCQkJCQlcCisJCWFkZHIgPSBJT19CQVNFICsgKHBvcnQpOwkJCQkJXAorCWFkZHI7CQkJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX21lbV9wY2koYWRkcikgKGFkZHIpCisKKyNkZWZpbmUgaW5iKHApCSAJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX2luYmMocCkgICAgOiBfX2luYihwKSkKKyNkZWZpbmUgaW53KHApCSAJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX2lud2MocCkgICAgOiBfX2ludyhwKSkKKyNkZWZpbmUgaW5sKHApCSAJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX2lubGMocCkgICAgOiBfX2lubChwKSkKKyNkZWZpbmUgb3V0Yih2LHApCShfX2J1aWx0aW5fY29uc3RhbnRfcCgocCkpID8gX19vdXRiYyh2LHApIDogX19vdXRiKHYscCkpCisjZGVmaW5lIG91dHcodixwKQkoX19idWlsdGluX2NvbnN0YW50X3AoKHApKSA/IF9fb3V0d2ModixwKSA6IF9fb3V0dyh2LHApKQorI2RlZmluZSBvdXRsKHYscCkJKF9fYnVpbHRpbl9jb25zdGFudF9wKChwKSkgPyBfX291dGxjKHYscCkgOiBfX291dGwodixwKSkKKworLyoKKyAqIFRyYW5zbGF0ZWQgYWRkcmVzcyBJTyBmdW5jdGlvbnMKKyAqCisgKiBJTyBhZGRyZXNzIGhhcyBhbHJlYWR5IGJlZW4gdHJhbnNsYXRlZCB0byBhIHZpcnR1YWwgYWRkcmVzcworICovCisjZGVmaW5lIG91dGJfdCh2LHApCQkJCQkJCQlcCisJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKShwKSA9ICh2KSkKKworI2RlZmluZSBpbmJfdChwKQkJCQkJCQkJXAorCSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikocCkpCisKKyNkZWZpbmUgb3V0bF90KHYscCkJCQkJCQkJCVwKKwkoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKHApID0gKHYpKQorCisjZGVmaW5lIGlubF90KHApCQkJCQkJCQlcCisJKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShwKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9pcnFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2Y2M5NwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL2lycXMuaApAQCAtMCwwICsxLDEzIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvaXJxcy5oCisgKgorICogYnkgQWxleGFuZGVyIFNjaHVsegorICovCisKKyNkZWZpbmUgTlJfSVJRUwkJCTE2CisKKyNkZWZpbmUgSVJRX0lTQV9LRVlCT0FSRAkgMQorI2RlZmluZSBSVENfSVJRCQkJIDgKKyNkZWZpbmUgSTgwNDJfS0JEX0lSUQkJIDEKKyNkZWZpbmUgSTgwNDJfQVVYX0lSUQkJMTIKKyNkZWZpbmUgSVJRX0hBUkRESVNLICAgICAgICAgICAgMTQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZmOTU2ZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL21lbW9yeS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9tZW1vcnkuaAorICoKKyAqIGJ5IEFsZXhhbmRlciBTY2h1bHoKKyAqCisgKiBkZXJpdmVkIGZyb206CisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1lYnNhMTEwL21lbW9yeS5oCisgKiBDb3B5cmlnaHQgKGMpIDE5OTYtMTk5OSBSdXNzZWxsIEtpbmcuCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKyNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KKworLyoKKyAqIFBoeXNpY2FsIERSQU0gb2Zmc2V0LgorICovCisjZGVmaW5lIFBIWVNfT0ZGU0VUICAgICAoMHgwODAwMDAwMFVMKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCitzdGF0aWMgaW5saW5lIHZvaWQgX19hcmNoX2FkanVzdF96b25lcyhpbnQgbm9kZSwgdW5zaWduZWQgbG9uZyAqem9uZV9zaXplLCB1bnNpZ25lZCBsb25nICp6aG9sZV9zaXplKSAKK3sKKyAgaWYgKG5vZGUgIT0gMCkgcmV0dXJuOworICAvKiBPbmx5IHRoZSBmaXJzdCA0IE1CICg9MTAyNCBQYWdlcykgYXJlIHVzYWJsZSBmb3IgRE1BICovCisgIHpvbmVfc2l6ZVsxXSA9IHpvbmVfc2l6ZVswXSAtIDEwMjQ7CisgIHpvbmVfc2l6ZVswXSA9IDEwMjQ7CisgIHpob2xlX3NpemVbMV0gPSB6aG9sZV9zaXplWzBdOworICB6aG9sZV9zaXplWzBdID0gMDsKK30KKworI2RlZmluZSBhcmNoX2FkanVzdF96b25lcyhub2RlLCBzaXplLCBob2xlcykgXAorCV9fYXJjaF9hZGp1c3Rfem9uZXMobm9kZSwgc2l6ZSwgaG9sZXMpCisKKyNkZWZpbmUgSVNBX0RNQV9USFJFU0hPTEQJKFBIWVNfT0ZGU0VUICsgU1pfNE0gLSAxKQorCisjZW5kaWYKKworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCV9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkJX19waHlzX3RvX3ZpcnQoeCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9wYXJhbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTdlZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvcGFyYW0uaApAQCAtMCwwICsxLDUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvcGFyYW0uaAorICoKKyAqIGJ5IEFsZXhhbmRlciBTY2h1bHoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTJkNzcxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvc3lzdGVtLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL3N5c3RlbS5oCisgKgorICogYnkgQWxleGFuZGVyIFNjaHVsegorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKyNkZWZpbmUgX19BU01fQVJDSF9TWVNURU1fSAorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK3N0YXRpYyB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCXNob3J0IHRlbXA7CisJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKwkvKiBSZXNldCB0aGUgTWFjaGluZSB2aWEgcGNbM10gb2YgdGhlIHNlcXVvaWEgY2hpcHNldCAqLworCW91dHcoMHgwOSwweDI0KTsKKwl0ZW1wPWludygweDI2KTsKKwl0ZW1wID0gdGVtcCB8ICgxPDwzKSB8ICgxPDwxMCk7CisJb3V0dygweDA5LDB4MjQpOworCW91dHcodGVtcCwweDI2KTsKKworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwMmQyNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL3RpbWV4LmgKQEAgLTAsMCArMSw3IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvdGltZXguaAorICoKKyAqIGJ5IEFsZXhhbmRlciBTY2h1bHoKKyAqLworCisjZGVmaW5lIENMT0NLX1RJQ0tfUkFURSAxMTkzMTgwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay91bmNvbXByZXNzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEwYThlMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXNoYXJrL3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvdW5jb21wcmVzcy5oCisgKiBieSBBbGV4YW5kZXIgU2NodWx6CisgKgorICogZGVyaXZlZCBmcm9tOgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtZWJzYTI4NS91bmNvbXByZXNzLmgKKyAqIENvcHlyaWdodCAoQykgMTk5NiwxOTk3LDE5OTggUnVzc2VsbCBLaW5nCisgKi8KKworI2RlZmluZSBTRVJJQUxfQkFTRSAoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikweDQwMDAwM2Y4KQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB1dGMoY2hhciBjKQoreworCWludCB0OworCisJU0VSSUFMX0JBU0VbMF0gPSBjOworCXQ9MHgxMDAwMDsKKwl3aGlsZSAodC0tKTsKK30KKworLyoKKyAqIFRoaXMgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZQorICovCitzdGF0aWMgdm9pZCBwdXRzdHIoY29uc3QgY2hhciAqcykKK3sKKwl3aGlsZSAoKnMpIHsKKwkJcHV0Yygqcyk7CisJCWlmICgqcyA9PSAnXG4nKQorCQkJcHV0YygnXHInKTsKKwkJcysrOworCX0KK30KKworI2lmZGVmIERFQlVHCitzdGF0aWMgdm9pZCBwdXRuKHVuc2lnbmVkIGxvbmcgeikKK3sKKwlpbnQgaTsKKwljaGFyIHg7CisKKwlwdXRjKCcwJyk7CisJcHV0YygneCcpOworCWZvciAoaT0wO2k8ODtpKyspIHsKKwkJeD0nMCcrKCh6Pj4oKDctaSkqNCkpJjB4Zik7CisJCWlmICh4Pic5JykgeD14LScwJysnQSctMTA7CisJCXB1dGMoeCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwdXRyKCkKK3sKKwlwdXRjKCdcbicpOworCXB1dGMoJ1xyJyk7Cit9CisjZW5kaWYKKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvdm1hbGxvYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtc2hhcmsvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYzIwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zaGFyay92bWFsbG9jLmgKQEAgLTAsMCArMSwxNSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy92bWFsbG9jLmgKKyAqLworCisvKgorICogSnVzdCBhbnkgYXJiaXRyYXJ5IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIHZtYWxsb2MgVk0gYXJlYTogdGhlCisgKiBjdXJyZW50IDhNQiB2YWx1ZSBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBiZSBhIDhNQiAiaG9sZSIgYWZ0ZXIgdGhlCisgKiBwaHlzaWNhbCBtZW1vcnkgdW50aWwgdGhlIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBzdGFydHMuICBUaGF0IG1lYW5zIHRoYXQKKyAqIGFueSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGhvcGVmdWxseSBiZSBjYXVnaHQuCisgKiBUaGUgdm1hbGxvYygpIHJvdXRpbmVzIGxlYXZlcyBhIGhvbGUgb2YgNGtCIGJldHdlZW4gZWFjaCB2bWFsbG9jZWQKKyAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNvbi4gOykKKyAqLworI2RlZmluZSBWTUFMTE9DX09GRlNFVAkgICg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkgICgoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgKyBWTUFMTE9DX09GRlNFVCkgJiB+KFZNQUxMT0NfT0ZGU0VULTEpKQorI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDEwMDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvZGVidWctbWFjcm8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWUzOGFjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwzOSBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2RlYnVnLW1hY3JvLlMKKyAqCisgKiBEZWJ1Z2dpbmcgbWFjcm8gaW5jbHVkZSBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgTW92ZWQgZnJvbSBsaW51eC9hcmNoL2FybS9rZXJuZWwvZGVidWcuUyBieSBCZW4gRG9va3MKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyovCisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvYW1iYV9zZXJpYWwuaD4KKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEJCQlAIE1NVSBlbmFibGVkPworCQltb3ZlcQlccngsICAgICAgIzB4MTAwMDAwMDAKKwkJbW92bmUJXHJ4LCAgICAgICMweGYxMDAwMDAwCUAgdmlydHVhbCBiYXNlCisJCW9ycglccngsIFxyeCwgIzB4MDAxRjAwMDAKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMDAwMTAwMAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHJiCVxyZCwgW1xyeCwgI1VBUlQwMXhfRFJdCisJCS5lbmRtCisKKwkJLm1hY3JvCXdhaXR1YXJ0LHJkLHJ4CisxMDAxOgkJbGRyCVxyZCwgW1xyeCwgIzB4MThdCUAgVUFSVEZMRworCQl0c3QJXHJkLCAjMSA8PCA1CQlAIFVBUlRGTEdVVFhGRiAtIDEgd2hlbiBmdWxsCisJCWJuZQkxMDAxYgorCQkuZW5kbQorCisJCS5tYWNybwlidXN5dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICMweDE4XQlAIFVBUlRGTEcKKwkJdHN0CVxyZCwgIzEgPDwgMwkJQCBVQVJURkxHVUJVU1kgLSAxIHdoZW4gYnVzeQorCQlibmUJMTAwMWIKKwkJLmVuZG0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2M4YWMyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2RtYS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2RtYS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBBUk0gTGltaXRlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDE5OTcsMTk5OCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9ETUFfSAorI2RlZmluZSBfX0FTTV9BUkNIX0RNQV9ICisKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTCQkweGZmZmZmZmZmCisjZGVmaW5lIE1BWF9ETUFfQ0hBTk5FTFMJMAorCisjZW5kaWYgLyogX0FTTV9BUkNIX0RNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9lbnRyeS1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTRlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDM1IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2VudHJ5LW1hY3JvLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIFZlcnNhdGlsZSBwbGF0Zm9ybXMKKyAqCisgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqLworCQkJLm1hY3JvCWRpc2FibGVfZmlxCisJCS5lbmRtCisKKwkJLm1hY3JvCWdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCQlsZHIJXGJhc2UsID1JT19BRERSRVNTKFZFUlNBVElMRV9WSUNfQkFTRSkKKwkJbGRyCVxpcnFzdGF0LCBbXGJhc2UsICNWSUNfSVJRX1NUQVRVU10JQCBnZXQgbWFza2VkIHN0YXR1cworCQltb3YJXGlycW5yLCAjMAorCQl0ZXEJXGlycXN0YXQsICMwCisJCWJlcQkxMDAzZgorCisxMDAxOgkJdHN0CVxpcnFzdGF0LCAjMTUKKwkJYm5lCTEwMDJmCisJCWFkZAlcaXJxbnIsIFxpcnFuciwgIzQKKwkJbW92cwlcaXJxc3RhdCwgXGlycXN0YXQsIGxzciAjNAorCQlibmUJMTAwMWIKKzEwMDI6CQl0c3QJXGlycXN0YXQsICMxCisJCWJuZQkxMDAzZgorCQlhZGQJXGlycW5yLCBcaXJxbnIsICMxCisJCW1vdnMJXGlycXN0YXQsIFxpcnFzdGF0LCBsc3IgIzEKKwkJYm5lCTEwMDJiCisxMDAzOgkJLyogRVEgd2lsbCBiZSBzZXQgaWYgbm8gaXJxcyBwZW5kaW5nICovCisKK0AJCWNseglcaXJxbnIsIFxpcnFzdGF0CitAMTAwMzoJCS8qIEVRIHdpbGwgYmUgc2V0IGlmIHdlIHJlYWNoIE1BWElSUU5VTSAqLworCQkuZW5kbQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZmI0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvaGFyZHdhcmUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9oYXJkd2FyZS5oCisgKgorICogIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGFyZHdhcmUgZGVmaW5pdGlvbnMgb2YgdGhlIFZlcnNhdGlsZSBib2FyZHMuCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBBUk0gTGltaXRlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9IQVJEV0FSRV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvcGxhdGZvcm0uaD4KKworLy8gRklYTUUgPSBQQ0kgc2V0dGluZ3MgbmVlZCB0byBiZSBmaXhlZCEhISEhCisKKy8qCisgKiBTaW1pbGFyIHRvIGFib3ZlLCBidXQgZm9yIFBDSSBhZGRyZXNzZXMgKG1lbW9yeSwgSU8sIENvbmZpZyBhbmQgdGhlCisgKiBWMyBjaGlwIGl0c2VsZikuICBXQVJOSU5HOiB0aGlzIGhhcyB0byBtaXJyb3IgZGVmaW5pdGlvbnMgaW4gcGxhdGZvcm0uaAorICovCisjZGVmaW5lIFBDSV9NRU1PUllfVkFERFIgICAgICAgMHhlODAwMDAwMAorI2RlZmluZSBQQ0lfQ09ORklHX1ZBRERSICAgICAgIDB4ZWMwMDAwMDAKKyNkZWZpbmUgUENJX1YzX1ZBRERSICAgICAgICAgICAweGVkMDAwMDAwCisjZGVmaW5lIFBDSV9JT19WQUREUiAgICAgICAgICAgMHhlZTAwMDAwMAorCisjZGVmaW5lIFBDSU9fQkFTRQkJUENJX0lPX1ZBRERSCisjZGVmaW5lIFBDSU1FTV9CQVNFCQlQQ0lfTUVNT1JZX1ZBRERSCisKKy8qIG1hY3JvIHRvIGdldCBhdCBJTyBzcGFjZSB3aGVuIHJ1bm5pbmcgdmlydHVhbGx5ICovCisjZGVmaW5lIElPX0FERFJFU1MoeCkJCSgoKHgpICYgMHgwZmZmZmZmZikgKyAoKCh4KSA+PiA0KSAmIDB4MGYwMDAwMDApICsgMHhmMDAwMDAwMCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYjcxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvaW8uaApAQCAtMCwwICsxLDI5IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9pby5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweGZmZmYKKworI2RlZmluZSBfX2lvKGEpCQkJKCh2b2lkIF9faW9tZW0gKikoYSkpCisjZGVmaW5lIF9fbWVtX3BjaShhKQkJKGEpCisjZGVmaW5lIF9fbWVtX2lzYShhKQkJKGEpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2lycXMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9pcnFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ1YWE4NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9pcnFzLmgKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL2lycXMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpbmNsdWRlIDxhc20vYXJjaC9wbGF0Zm9ybS5oPgorCisvKiAKKyAqICBJUlEgaW50ZXJydXB0cyBkZWZpbml0aW9ucyBhcmUgdGhlIHNhbWUgdGhlIElOVCBkZWZpbml0aW9ucworICogIGhlbGQgd2l0aGluIHBsYXRmb3JtLmgKKyAqLworI2RlZmluZSBJUlFfVklDX1NUQVJUCQkwCisjZGVmaW5lIElSUV9XRE9HSU5UCQkoSVJRX1ZJQ19TVEFSVCArIElOVF9XRE9HSU5UKQorI2RlZmluZSBJUlFfU09GVElOVAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfU09GVElOVCkKKyNkZWZpbmUgSVJRX0NPTU1SeAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfQ09NTVJ4KQorI2RlZmluZSBJUlFfQ09NTVR4CQkoSVJRX1ZJQ19TVEFSVCArIElOVF9DT01NVHgpCisjZGVmaW5lIElSUV9USU1FUklOVDBfMQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVElNRVJJTlQwXzEpCisjZGVmaW5lIElSUV9USU1FUklOVDJfMwkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVElNRVJJTlQyXzMpCisjZGVmaW5lIElSUV9HUElPSU5UMAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfR1BJT0lOVDApCisjZGVmaW5lIElSUV9HUElPSU5UMQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfR1BJT0lOVDEpCisjZGVmaW5lIElSUV9HUElPSU5UMgkJKElSUV9WSUNfU1RBUlQgKyBJTlRfR1BJT0lOVDIpCisjZGVmaW5lIElSUV9HUElPSU5UMwkJKElSUV9WSUNfU1RBUlQgKyBJTlRfR1BJT0lOVDMpCisjZGVmaW5lIElSUV9SVENJTlQJCShJUlFfVklDX1NUQVJUICsgSU5UX1JUQ0lOVCkKKyNkZWZpbmUgSVJRX1NTUElOVAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfU1NQSU5UKQorI2RlZmluZSBJUlFfVUFSVElOVDAJCShJUlFfVklDX1NUQVJUICsgSU5UX1VBUlRJTlQwKQorI2RlZmluZSBJUlFfVUFSVElOVDEJCShJUlFfVklDX1NUQVJUICsgSU5UX1VBUlRJTlQxKQorI2RlZmluZSBJUlFfVUFSVElOVDIJCShJUlFfVklDX1NUQVJUICsgSU5UX1VBUlRJTlQyKQorI2RlZmluZSBJUlFfU0NJSU5UCQkoSVJRX1ZJQ19TVEFSVCArIElOVF9TQ0lJTlQpCisjZGVmaW5lIElSUV9DTENESU5UCQkoSVJRX1ZJQ19TVEFSVCArIElOVF9DTENESU5UKQorI2RlZmluZSBJUlFfRE1BSU5UCQkoSVJRX1ZJQ19TVEFSVCArIElOVF9ETUFJTlQpCisjZGVmaW5lIElSUV9QV1JGQUlMSU5UIAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfUFdSRkFJTElOVCkKKyNkZWZpbmUgSVJRX01CWElOVAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfTUJYSU5UKQorI2RlZmluZSBJUlFfR05ESU5UCQkoSVJRX1ZJQ19TVEFSVCArIElOVF9HTkRJTlQpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyMQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjEpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyMgkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjIpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyMwkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjMpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyNAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjQpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyNQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjUpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyNgkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjYpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyNwkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjcpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyOAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjgpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UyOQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMjkpCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UzMAkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMzApCisjZGVmaW5lIElSUV9WSUNTT1VSQ0UzMQkJKElSUV9WSUNfU1RBUlQgKyBJTlRfVklDU09VUkNFMzEpCisjZGVmaW5lIElSUV9WSUNfRU5ECQkoSVJRX1ZJQ19TVEFSVCArIDMxKQorCisjZGVmaW5lIElSUU1BU0tfV0RPR0lOVAkJSU5UTUFTS19XRE9HSU5UCisjZGVmaW5lIElSUU1BU0tfU09GVElOVAkJSU5UTUFTS19TT0ZUSU5UCisjZGVmaW5lIElSUU1BU0tfQ09NTVJ4IAkJSU5UTUFTS19DT01NUngKKyNkZWZpbmUgSVJRTUFTS19DT01NVHggCQlJTlRNQVNLX0NPTU1UeAorI2RlZmluZSBJUlFNQVNLX1RJTUVSSU5UMF8xCUlOVE1BU0tfVElNRVJJTlQwXzEKKyNkZWZpbmUgSVJRTUFTS19USU1FUklOVDJfMwlJTlRNQVNLX1RJTUVSSU5UMl8zCisjZGVmaW5lIElSUU1BU0tfR1BJT0lOVDAJSU5UTUFTS19HUElPSU5UMAorI2RlZmluZSBJUlFNQVNLX0dQSU9JTlQxCUlOVE1BU0tfR1BJT0lOVDEKKyNkZWZpbmUgSVJRTUFTS19HUElPSU5UMglJTlRNQVNLX0dQSU9JTlQyCisjZGVmaW5lIElSUU1BU0tfR1BJT0lOVDMJSU5UTUFTS19HUElPSU5UMworI2RlZmluZSBJUlFNQVNLX1JUQ0lOVCAJCUlOVE1BU0tfUlRDSU5UCisjZGVmaW5lIElSUU1BU0tfU1NQSU5UIAkJSU5UTUFTS19TU1BJTlQKKyNkZWZpbmUgSVJRTUFTS19VQVJUSU5UMAlJTlRNQVNLX1VBUlRJTlQwCisjZGVmaW5lIElSUU1BU0tfVUFSVElOVDEJSU5UTUFTS19VQVJUSU5UMQorI2RlZmluZSBJUlFNQVNLX1VBUlRJTlQyCUlOVE1BU0tfVUFSVElOVDIKKyNkZWZpbmUgSVJRTUFTS19TQ0lJTlQgCQlJTlRNQVNLX1NDSUlOVAorI2RlZmluZSBJUlFNQVNLX0NMQ0RJTlQJCUlOVE1BU0tfQ0xDRElOVAorI2RlZmluZSBJUlFNQVNLX0RNQUlOVCAJCUlOVE1BU0tfRE1BSU5UCisjZGVmaW5lIElSUU1BU0tfUFdSRkFJTElOVAlJTlRNQVNLX1BXUkZBSUxJTlQKKyNkZWZpbmUgSVJRTUFTS19NQlhJTlQgCQlJTlRNQVNLX01CWElOVAorI2RlZmluZSBJUlFNQVNLX0dORElOVCAJCUlOVE1BU0tfR05ESU5UCisjZGVmaW5lIElSUU1BU0tfVklDU09VUkNFMjEJSU5UTUFTS19WSUNTT1VSQ0UyMQorI2RlZmluZSBJUlFNQVNLX1ZJQ1NPVVJDRTIyCUlOVE1BU0tfVklDU09VUkNFMjIKKyNkZWZpbmUgSVJRTUFTS19WSUNTT1VSQ0UyMwlJTlRNQVNLX1ZJQ1NPVVJDRTIzCisjZGVmaW5lIElSUU1BU0tfVklDU09VUkNFMjQJSU5UTUFTS19WSUNTT1VSQ0UyNAorI2RlZmluZSBJUlFNQVNLX1ZJQ1NPVVJDRTI1CUlOVE1BU0tfVklDU09VUkNFMjUKKyNkZWZpbmUgSVJRTUFTS19WSUNTT1VSQ0UyNglJTlRNQVNLX1ZJQ1NPVVJDRTI2CisjZGVmaW5lIElSUU1BU0tfVklDU09VUkNFMjcJSU5UTUFTS19WSUNTT1VSQ0UyNworI2RlZmluZSBJUlFNQVNLX1ZJQ1NPVVJDRTI4CUlOVE1BU0tfVklDU09VUkNFMjgKKyNkZWZpbmUgSVJRTUFTS19WSUNTT1VSQ0UyOQlJTlRNQVNLX1ZJQ1NPVVJDRTI5CisjZGVmaW5lIElSUU1BU0tfVklDU09VUkNFMzAJSU5UTUFTS19WSUNTT1VSQ0UzMAorI2RlZmluZSBJUlFNQVNLX1ZJQ1NPVVJDRTMxCUlOVE1BU0tfVklDU09VUkNFMzEKKworLyogCisgKiAgRklRIGludGVycnVwdHMgZGVmaW5pdGlvbnMgYXJlIHRoZSBzYW1lIHRoZSBJTlQgZGVmaW5pdGlvbnMuCisgKi8KKyNkZWZpbmUgRklRX1dET0dJTlQJCUlOVF9XRE9HSU5UCisjZGVmaW5lIEZJUV9TT0ZUSU5UCQlJTlRfU09GVElOVAorI2RlZmluZSBGSVFfQ09NTVJ4CQlJTlRfQ09NTVJ4CisjZGVmaW5lIEZJUV9DT01NVHgJCUlOVF9DT01NVHgKKyNkZWZpbmUgRklRX1RJTUVSSU5UMF8xCQlJTlRfVElNRVJJTlQwXzEKKyNkZWZpbmUgRklRX1RJTUVSSU5UMl8zCQlJTlRfVElNRVJJTlQyXzMKKyNkZWZpbmUgRklRX0dQSU9JTlQwCQlJTlRfR1BJT0lOVDAKKyNkZWZpbmUgRklRX0dQSU9JTlQxCQlJTlRfR1BJT0lOVDEKKyNkZWZpbmUgRklRX0dQSU9JTlQyCQlJTlRfR1BJT0lOVDIKKyNkZWZpbmUgRklRX0dQSU9JTlQzCQlJTlRfR1BJT0lOVDMKKyNkZWZpbmUgRklRX1JUQ0lOVAkJSU5UX1JUQ0lOVAorI2RlZmluZSBGSVFfU1NQSU5UCQlJTlRfU1NQSU5UCisjZGVmaW5lIEZJUV9VQVJUSU5UMAkJSU5UX1VBUlRJTlQwCisjZGVmaW5lIEZJUV9VQVJUSU5UMQkJSU5UX1VBUlRJTlQxCisjZGVmaW5lIEZJUV9VQVJUSU5UMgkJSU5UX1VBUlRJTlQyCisjZGVmaW5lIEZJUV9TQ0lJTlQJCUlOVF9TQ0lJTlQKKyNkZWZpbmUgRklRX0NMQ0RJTlQJCUlOVF9DTENESU5UCisjZGVmaW5lIEZJUV9ETUFJTlQJCUlOVF9ETUFJTlQKKyNkZWZpbmUgRklRX1BXUkZBSUxJTlQgCQlJTlRfUFdSRkFJTElOVAorI2RlZmluZSBGSVFfTUJYSU5UCQlJTlRfTUJYSU5UCisjZGVmaW5lIEZJUV9HTkRJTlQJCUlOVF9HTkRJTlQKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTIxCQlJTlRfVklDU09VUkNFMjEKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTIyCQlJTlRfVklDU09VUkNFMjIKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTIzCQlJTlRfVklDU09VUkNFMjMKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI0CQlJTlRfVklDU09VUkNFMjQKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI1CQlJTlRfVklDU09VUkNFMjUKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI2CQlJTlRfVklDU09VUkNFMjYKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI3CQlJTlRfVklDU09VUkNFMjcKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI4CQlJTlRfVklDU09VUkNFMjgKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTI5CQlJTlRfVklDU09VUkNFMjkKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTMwCQlJTlRfVklDU09VUkNFMzAKKyNkZWZpbmUgRklRX1ZJQ1NPVVJDRTMxCQlJTlRfVklDU09VUkNFMzEKKworCisjZGVmaW5lIEZJUU1BU0tfV0RPR0lOVAkJSU5UTUFTS19XRE9HSU5UCisjZGVmaW5lIEZJUU1BU0tfU09GVElOVAkJSU5UTUFTS19TT0ZUSU5UCisjZGVmaW5lIEZJUU1BU0tfQ09NTVJ4IAkJSU5UTUFTS19DT01NUngKKyNkZWZpbmUgRklRTUFTS19DT01NVHggCQlJTlRNQVNLX0NPTU1UeAorI2RlZmluZSBGSVFNQVNLX1RJTUVSSU5UMF8xCUlOVE1BU0tfVElNRVJJTlQwXzEKKyNkZWZpbmUgRklRTUFTS19USU1FUklOVDJfMwlJTlRNQVNLX1RJTUVSSU5UMl8zCisjZGVmaW5lIEZJUU1BU0tfR1BJT0lOVDAJSU5UTUFTS19HUElPSU5UMAorI2RlZmluZSBGSVFNQVNLX0dQSU9JTlQxCUlOVE1BU0tfR1BJT0lOVDEKKyNkZWZpbmUgRklRTUFTS19HUElPSU5UMglJTlRNQVNLX0dQSU9JTlQyCisjZGVmaW5lIEZJUU1BU0tfR1BJT0lOVDMJSU5UTUFTS19HUElPSU5UMworI2RlZmluZSBGSVFNQVNLX1JUQ0lOVCAJCUlOVE1BU0tfUlRDSU5UCisjZGVmaW5lIEZJUU1BU0tfU1NQSU5UIAkJSU5UTUFTS19TU1BJTlQKKyNkZWZpbmUgRklRTUFTS19VQVJUSU5UMAlJTlRNQVNLX1VBUlRJTlQwCisjZGVmaW5lIEZJUU1BU0tfVUFSVElOVDEJSU5UTUFTS19VQVJUSU5UMQorI2RlZmluZSBGSVFNQVNLX1VBUlRJTlQyCUlOVE1BU0tfVUFSVElOVDIKKyNkZWZpbmUgRklRTUFTS19TQ0lJTlQgCQlJTlRNQVNLX1NDSUlOVAorI2RlZmluZSBGSVFNQVNLX0NMQ0RJTlQJCUlOVE1BU0tfQ0xDRElOVAorI2RlZmluZSBGSVFNQVNLX0RNQUlOVCAJCUlOVE1BU0tfRE1BSU5UCisjZGVmaW5lIEZJUU1BU0tfUFdSRkFJTElOVAlJTlRNQVNLX1BXUkZBSUxJTlQKKyNkZWZpbmUgRklRTUFTS19NQlhJTlQgCQlJTlRNQVNLX01CWElOVAorI2RlZmluZSBGSVFNQVNLX0dORElOVCAJCUlOVE1BU0tfR05ESU5UCisjZGVmaW5lIEZJUU1BU0tfVklDU09VUkNFMjEJSU5UTUFTS19WSUNTT1VSQ0UyMQorI2RlZmluZSBGSVFNQVNLX1ZJQ1NPVVJDRTIyCUlOVE1BU0tfVklDU09VUkNFMjIKKyNkZWZpbmUgRklRTUFTS19WSUNTT1VSQ0UyMwlJTlRNQVNLX1ZJQ1NPVVJDRTIzCisjZGVmaW5lIEZJUU1BU0tfVklDU09VUkNFMjQJSU5UTUFTS19WSUNTT1VSQ0UyNAorI2RlZmluZSBGSVFNQVNLX1ZJQ1NPVVJDRTI1CUlOVE1BU0tfVklDU09VUkNFMjUKKyNkZWZpbmUgRklRTUFTS19WSUNTT1VSQ0UyNglJTlRNQVNLX1ZJQ1NPVVJDRTI2CisjZGVmaW5lIEZJUU1BU0tfVklDU09VUkNFMjcJSU5UTUFTS19WSUNTT1VSQ0UyNworI2RlZmluZSBGSVFNQVNLX1ZJQ1NPVVJDRTI4CUlOVE1BU0tfVklDU09VUkNFMjgKKyNkZWZpbmUgRklRTUFTS19WSUNTT1VSQ0UyOQlJTlRNQVNLX1ZJQ1NPVVJDRTI5CisjZGVmaW5lIEZJUU1BU0tfVklDU09VUkNFMzAJSU5UTUFTS19WSUNTT1VSQ0UzMAorI2RlZmluZSBGSVFNQVNLX1ZJQ1NPVVJDRTMxCUlOVE1BU0tfVklDU09VUkNFMzEKKworLyoKKyAqIFNlY29uZGFyeSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICovCisjZGVmaW5lIElSUV9TSUNfU1RBUlQJCTMyCisjZGVmaW5lIElSUV9TSUNfTU1DSTBCIAkJKElSUV9TSUNfU1RBUlQgKyBTSUNfSU5UX01NQ0kwQikKKyNkZWZpbmUgSVJRX1NJQ19NTUNJMUIgCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfTU1DSTFCKQorI2RlZmluZSBJUlFfU0lDX0tNSTAJCShJUlFfU0lDX1NUQVJUICsgU0lDX0lOVF9LTUkwKQorI2RlZmluZSBJUlFfU0lDX0tNSTEJCShJUlFfU0lDX1NUQVJUICsgU0lDX0lOVF9LTUkxKQorI2RlZmluZSBJUlFfU0lDX1NDSTMJCShJUlFfU0lDX1NUQVJUICsgU0lDX0lOVF9TQ0kzKQorI2RlZmluZSBJUlFfU0lDX1VBUlQzCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfVUFSVDMpCisjZGVmaW5lIElSUV9TSUNfQ0xDRAkJKElSUV9TSUNfU1RBUlQgKyBTSUNfSU5UX0NMQ0QpCisjZGVmaW5lIElSUV9TSUNfVE9VQ0gJCShJUlFfU0lDX1NUQVJUICsgU0lDX0lOVF9UT1VDSCkKKyNkZWZpbmUgSVJRX1NJQ19LRVlQQUQgCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfS0VZUEFEKQorI2RlZmluZSBJUlFfU0lDX0RvQwkJKElSUV9TSUNfU1RBUlQgKyBTSUNfSU5UX0RvQykKKyNkZWZpbmUgSVJRX1NJQ19NTUNJMEEgCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfTU1DSTBBKQorI2RlZmluZSBJUlFfU0lDX01NQ0kxQSAJCShJUlFfU0lDX1NUQVJUICsgU0lDX0lOVF9NTUNJMUEpCisjZGVmaW5lIElSUV9TSUNfQUFDSQkJKElSUV9TSUNfU1RBUlQgKyBTSUNfSU5UX0FBQ0kpCisjZGVmaW5lIElSUV9TSUNfRVRICQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfRVRIKQorI2RlZmluZSBJUlFfU0lDX1VTQgkJKElSUV9TSUNfU1RBUlQgKyBTSUNfSU5UX1VTQikKKyNkZWZpbmUgSVJRX1NJQ19QQ0kwCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfUENJMCkKKyNkZWZpbmUgSVJRX1NJQ19QQ0kxCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfUENJMSkKKyNkZWZpbmUgSVJRX1NJQ19QQ0kyCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfUENJMikKKyNkZWZpbmUgSVJRX1NJQ19QQ0kzCQkoSVJRX1NJQ19TVEFSVCArIFNJQ19JTlRfUENJMykKKyNkZWZpbmUgSVJRX1NJQ19FTkQJCTYzCisKKyNkZWZpbmUgU0lDX0lSUU1BU0tfTU1DSTBCCVNJQ19JTlRNQVNLX01NQ0kwQgorI2RlZmluZSBTSUNfSVJRTUFTS19NTUNJMUIJU0lDX0lOVE1BU0tfTU1DSTFCCisjZGVmaW5lIFNJQ19JUlFNQVNLX0tNSTAJU0lDX0lOVE1BU0tfS01JMAorI2RlZmluZSBTSUNfSVJRTUFTS19LTUkxCVNJQ19JTlRNQVNLX0tNSTEKKyNkZWZpbmUgU0lDX0lSUU1BU0tfU0NJMwlTSUNfSU5UTUFTS19TQ0kzCisjZGVmaW5lIFNJQ19JUlFNQVNLX1VBUlQzCVNJQ19JTlRNQVNLX1VBUlQzCisjZGVmaW5lIFNJQ19JUlFNQVNLX0NMQ0QJU0lDX0lOVE1BU0tfQ0xDRAorI2RlZmluZSBTSUNfSVJRTUFTS19UT1VDSAlTSUNfSU5UTUFTS19UT1VDSAorI2RlZmluZSBTSUNfSVJRTUFTS19LRVlQQUQJU0lDX0lOVE1BU0tfS0VZUEFECisjZGVmaW5lIFNJQ19JUlFNQVNLX0RvQwkJU0lDX0lOVE1BU0tfRG9DCisjZGVmaW5lIFNJQ19JUlFNQVNLX01NQ0kwQQlTSUNfSU5UTUFTS19NTUNJMEEKKyNkZWZpbmUgU0lDX0lSUU1BU0tfTU1DSTFBCVNJQ19JTlRNQVNLX01NQ0kxQQorI2RlZmluZSBTSUNfSVJRTUFTS19BQUNJCVNJQ19JTlRNQVNLX0FBQ0kKKyNkZWZpbmUgU0lDX0lSUU1BU0tfRVRICQlTSUNfSU5UTUFTS19FVEgKKyNkZWZpbmUgU0lDX0lSUU1BU0tfVVNCCQlTSUNfSU5UTUFTS19VU0IKKyNkZWZpbmUgU0lDX0lSUU1BU0tfUENJMAlTSUNfSU5UTUFTS19QQ0kwCisjZGVmaW5lIFNJQ19JUlFNQVNLX1BDSTEJU0lDX0lOVE1BU0tfUENJMQorI2RlZmluZSBTSUNfSVJRTUFTS19QQ0kyCVNJQ19JTlRNQVNLX1BDSTIKKyNkZWZpbmUgU0lDX0lSUU1BU0tfUENJMwlTSUNfSU5UTUFTS19QQ0kzCisKKyNkZWZpbmUgTlJfSVJRUwkJCTY0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4YjdjYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9tZW1vcnkuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9tZW1vcnkuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKy8qCisgKiBQaHlzaWNhbCBEUkFNIG9mZnNldC4KKyAqLworI2RlZmluZSBQSFlTX09GRlNFVAkoMHgwMDAwMDAwMFVMKQorCisvKgorICogVmlydHVhbCB2aWV3IDwtPiBETUEgdmlldyBtZW1vcnkgYWRkcmVzcyB0cmFuc2xhdGlvbnMKKyAqIHZpcnRfdG9fYnVzOiBVc2VkIHRvIHRyYW5zbGF0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRvIGFuCisgKiAgICAgICAgICAgICAgYWRkcmVzcyBzdWl0YWJsZSB0byBiZSBwYXNzZWQgdG8gc2V0X2RtYV9hZGRyCisgKiBidXNfdG9fdmlydDogVXNlZCB0byBjb252ZXJ0IGFuIGFkZHJlc3MgZm9yIERNQSBvcGVyYXRpb25zCisgKiAgICAgICAgICAgICAgdG8gYW4gYWRkcmVzcyB0aGF0IHRoZSBrZXJuZWwgY2FuIHVzZS4KKyAqLworI2RlZmluZSBfX3ZpcnRfdG9fYnVzKHgpCSgoeCkgLSBQQUdFX09GRlNFVCkKKyNkZWZpbmUgX19idXNfdG9fdmlydCh4KQkoKHgpICsgUEFHRV9PRkZTRVQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGI4OTczCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3BhcmFtLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvcGFyYW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9wbGF0Zm9ybS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3BsYXRmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5OGQxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9wbGF0Zm9ybS5oCkBAIC0wLDAgKzEsNTEwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3BsYXRmb3JtLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIEFSTSBMaW1pdGVkIDIwMDMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaWZuZGVmIF9fYWRkcmVzc19oCisjZGVmaW5lIF9fYWRkcmVzc19oICAgICAgICAgICAgICAgICAgICAgMQorCisvKgorICogTWVtb3J5IGRlZmluaXRpb25zCisgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0JPT1RfUk9NX0xPICAgICAgICAgIDB4MzAwMDAwMDAJCS8qIERvQyBCYXNlICg2NE1iKS4uLiovCisjZGVmaW5lIFZFUlNBVElMRV9CT09UX1JPTV9ISSAgICAgICAgICAweDMwMDAwMDAwCisjZGVmaW5lIFZFUlNBVElMRV9CT09UX1JPTV9CQVNFICAgICAgICBWRVJTQVRJTEVfQk9PVF9ST01fSEkJIC8qICBOb3JtYWwgcG9zaXRpb24gKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0JPT1RfUk9NX1NJWkUgICAgICAgIFNaXzY0TQorCisjZGVmaW5lIFZFUlNBVElMRV9TU1JBTV9CQVNFICAgICAgICAgICAvKiBWRVJTQVRJTEVfU1NNQ19CQVNFID8gKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1NTUkFNX1NJWkUgICAgICAgICAgIFNaXzJNCisKKyNkZWZpbmUgVkVSU0FUSUxFX0ZMQVNIX0JBU0UgICAgICAgICAgIDB4MzQwMDAwMDAKKyNkZWZpbmUgVkVSU0FUSUxFX0ZMQVNIX1NJWkUgICAgICAgICAgIFNaXzY0TQorCisvKiAKKyAqICBTRFJBTQorICovCisjZGVmaW5lIFZFUlNBVElMRV9TRFJBTV9CQVNFICAgICAgICAgICAweDAwMDAwMDAwCisKKy8qIAorICogIExvZ2ljIGV4cGFuc2lvbiBtb2R1bGVzCisgKiAKKyAqLworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFZlcnNhdGlsZSBSZWdpc3RlcnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogCisgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19JRF9PRkZTRVQgICAgICAgICAgICAgICAweDAwCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfU1dfT0ZGU0VUICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xFRF9PRkZTRVQgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0MwX09GRlNFVCAgICAgICAgICAgICAweDBDCisKKyNpZiBkZWZpbmVkKENPTkZJR19BUkNIX1ZFUlNBVElMRV9QQikKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0MxX09GRlNFVCAgICAgICAgICAgICAweDEwCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfT1NDMl9PRkZTRVQgICAgICAgICAgICAgMHgxNAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX09TQzNfT0ZGU0VUICAgICAgICAgICAgIDB4MTgKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0M0X09GRlNFVCAgICAgICAgICAgICAweDFDCisjZWxpZiBkZWZpbmVkKENPTkZJR19NQUNIX1ZFUlNBVElMRV9BQikKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0MxX09GRlNFVCAgICAgICAgICAgICAweDFDCisjZW5kaWYKKworI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xPQ0tfT0ZGU0VUICAgICAgICAgICAgIDB4MjAKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU18xMDBIWl9PRkZTRVQgICAgICAgICAgICAweDI0CisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ0ZHREFUQTFfT0ZGU0VUICAgICAgICAgMHgyOAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0NGR0RBVEEyX09GRlNFVCAgICAgICAgIDB4MkMKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19GTEFHU19PRkZTRVQgICAgICAgICAgICAweDMwCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfRkxBR1NTRVRfT0ZGU0VUICAgICAgICAgMHgzMAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0ZMQUdTQ0xSX09GRlNFVCAgICAgICAgIDB4MzQKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19OVkZMQUdTX09GRlNFVCAgICAgICAgICAweDM4CisjZGVmaW5lIFZFUlNBVElMRV9TWVNfTlZGTEFHU1NFVF9PRkZTRVQgICAgICAgMHgzOAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX05WRkxBR1NDTFJfT0ZGU0VUICAgICAgIDB4M0MKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19SRVNFVENUTF9PRkZTRVQgICAgICAgICAweDQwCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfUElDQ1RMX09GRlNFVCAgICAgICAgICAgMHg0NAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX01DSV9PRkZTRVQgICAgICAgICAgICAgIDB4NDgKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19GTEFTSF9PRkZTRVQgICAgICAgICAgICAweDRDCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ0xDRF9PRkZTRVQgICAgICAgICAgICAgMHg1MAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0NMQ0RTRVJfT0ZGU0VUICAgICAgICAgIDB4NTQKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19CT09UQ1NfT0ZGU0VUICAgICAgICAgICAweDU4CisjZGVmaW5lIFZFUlNBVElMRV9TWVNfMjRNSHpfT0ZGU0VUICAgICAgICAgICAgMHg1QworI2RlZmluZSBWRVJTQVRJTEVfU1lTX01JU0NfT0ZGU0VUICAgICAgICAgICAgIDB4NjAKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19URVNUX09TQzBfT0ZGU0VUICAgICAgICAweDgwCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfVEVTVF9PU0MxX09GRlNFVCAgICAgICAgMHg4NAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX1RFU1RfT1NDMl9PRkZTRVQgICAgICAgIDB4ODgKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19URVNUX09TQzNfT0ZGU0VUICAgICAgICAweDhDCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfVEVTVF9PU0M0X09GRlNFVCAgICAgICAgMHg5MAorCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQkFTRSAgICAgICAgICAgICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0lEICAgICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX0lEX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19TVyAgICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19TV19PRkZTRVQpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfTEVEICAgICAgICAgICAgICAgICAgICAgKFZFUlNBVElMRV9TWVNfQkFTRSArIFZFUlNBVElMRV9TWVNfTEVEX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0MwICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19PU0MwX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19PU0MxICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19PU0MxX09GRlNFVCkKKworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfVkVSU0FUSUxFX1BCKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX09TQzIgICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX09TQzJfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX09TQzMgICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX09TQzNfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX09TQzQgICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX09TQzRfT0ZGU0VUKQorI2VuZGlmCisKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19MT0NLICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19MT0NLX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU18xMDBIWiAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU18xMDBIWl9PRkZTRVQpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ0ZHREFUQTEgICAgICAgICAgICAgICAgKFZFUlNBVElMRV9TWVNfQkFTRSArIFZFUlNBVElMRV9TWVNfQ0ZHREFUQTFfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0NGR0RBVEEyICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX0NGR0RBVEEyX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19GTEFHUyAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19GTEFHU19PRkZTRVQpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfRkxBR1NTRVQgICAgICAgICAgICAgICAgKFZFUlNBVElMRV9TWVNfQkFTRSArIFZFUlNBVElMRV9TWVNfRkxBR1NTRVRfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0ZMQUdTQ0xSICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX0ZMQUdTQ0xSX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19OVkZMQUdTICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19OVkZMQUdTX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19OVkZMQUdTU0VUICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19OVkZMQUdTU0VUX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19OVkZMQUdTQ0xSICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19OVkZMQUdTQ0xSX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19SRVNFVENUTCAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19SRVNFVENUTF9PRkZTRVQpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfUElDQ1RMICAgICAgICAgICAgICAgICAgKFZFUlNBVElMRV9TWVNfQkFTRSArIFZFUlNBVElMRV9TWVNfUElDQ1RMX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19NQ0kgICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19NQ0lfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0ZMQVNIICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX0ZMQVNIX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19DTENEICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19DTENEX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19DTENEU0VSICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19DTENEU0VSX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19CT09UQ1MgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19CT09UQ1NfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTXzI0TUh6ICAgICAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTXzI0TUh6X09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19NSVNDICAgICAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19NSVNDX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19URVNUX09TQzAgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19URVNUX09TQzBfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX1RFU1RfT1NDMSAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX1RFU1RfT1NDMV9PRkZTRVQpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfVEVTVF9PU0MyICAgICAgICAgICAgICAgKFZFUlNBVElMRV9TWVNfQkFTRSArIFZFUlNBVElMRV9TWVNfVEVTVF9PU0MyX09GRlNFVCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19URVNUX09TQzMgICAgICAgICAgICAgICAoVkVSU0FUSUxFX1NZU19CQVNFICsgVkVSU0FUSUxFX1NZU19URVNUX09TQzNfT0ZGU0VUKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX1RFU1RfT1NDNCAgICAgICAgICAgICAgIChWRVJTQVRJTEVfU1lTX0JBU0UgKyBWRVJTQVRJTEVfU1lTX1RFU1RfT1NDNF9PRkZTRVQpCisKKy8qIAorICogVmFsdWVzIGZvciBWRVJTQVRJTEVfU1lTX1JFU0VUX0NUUkwKKyAqLworI2RlZmluZSBWRVJTQVRJTEVfU1lTX0NUUkxfUkVTRVRfQ09ORklHQ0xSICAgIDB4MDEKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19DVFJMX1JFU0VUX0NPTkZJR0lOSVQgICAweDAyCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ1RSTF9SRVNFVF9ETExSRVNFVCAgICAgMHgwMworI2RlZmluZSBWRVJTQVRJTEVfU1lTX0NUUkxfUkVTRVRfUExMUkVTRVQgICAgIDB4MDQKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19DVFJMX1JFU0VUX1BPUiAgICAgICAgICAweDA1CisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ1RSTF9SRVNFVF9Eb0MgICAgICAgICAgMHgwNgorCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfQ1RSTF9MRUQgICAgICAgICAoMSA8PCAwKQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFZlcnNhdGlsZSBjb250cm9sIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogCisgKiBWRVJTQVRJTEVfSURGSUVMRAorICoKKyAqIDMxOjI0ID0gbWFudWZhY3R1cmVyICgweDQxID0gQVJNKQorICogMjM6MTYgPSBhcmNoaXRlY3R1cmUgKDB4MDggPSBBSEIgc3lzdGVtIGJ1cywgQVNCIHByb2Nlc3NvciBidXMpCisgKiAxNToxMiA9IEZQR0EgKDB4MyA9IFhWQzYwMCBvciBYVkM2MDBFKQorICogMTE6NCAgPSBidWlsZCB2YWx1ZQorICogMzowICAgPSByZXZpc2lvbiBudW1iZXIgKDB4MSA9IHJldiBCIChBSEIpKQorICovCisKKy8qCisgKiBWRVJTQVRJTEVfU1lTX0xPQ0sKKyAqICAgICBjb250cm9sIGFjY2VzcyB0byBTWVNfT1NDeCwgU1lTX0NGR0RBVEF4LCBTWVNfUkVTRVRDVEwsIAorICogICAgIFNZU19DTEQsIFNZU19CT09UQ1MKKyAqLworI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xPQ0tfTE9DS0VEICAgICgxIDw8IDE2KQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xPQ0tWQUxfTUFTSwkweEZGRkYJCS8qIHdyaXRlIDB4QTA1RiB0byBlbmFibGUgd3JpdGUgYWNjZXNzICovCisKKy8qCisgKiBWRVJTQVRJTEVfU1lTX0ZMQVNICisgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0ZMQVNIUFJPR19GTFZQUEVOCSgxIDw8IDApCS8qIEVuYWJsZSB3cml0aW5nIHRvIGZsYXNoICovCisKKy8qCisgKiBWRVJTQVRJTEVfSU5UUkVHCisgKiAgICAgLSB1c2VkIHRvIGFja25vd2xlZGdlIGFuZCBjb250cm9sIE1NQ0kgYW5kIFVBUlQgaW50ZXJydXB0cyAKKyAqLworI2RlZmluZSBWRVJTQVRJTEVfSU5UUkVHX1dQUk9UICAgICAgICAweDAwICAgIC8qIE1NQyBwcm90ZWN0aW9uIHN0YXR1cyAobm8gaW50ZXJydXB0IGdlbmVyYXRlZCkgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0lOVFJFR19SSTAgICAgICAgICAgMHgwMSAgICAvKiBSaW5nIGluZGljYXRvciBVQVJUMCBpcyBhc3NlcnRlZCwgICAgICAgICAgICAgICovCisjZGVmaW5lIFZFUlNBVElMRV9JTlRSRUdfQ0FSRElOICAgICAgIDB4MDggICAgLyogTU1DSSBjYXJkIGluIGRldGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd3JpdGUgMSB0byBhY2tub3dsZWRnZSBhbmQgY2xlYXIgICAgICAgICAgICAgICAqLworI2RlZmluZSBWRVJTQVRJTEVfSU5UUkVHX1JJMSAgICAgICAgICAweDAyICAgIC8qIFJpbmcgaW5kaWNhdG9yIFVBUlQxIGlzIGFzc2VydGVkLCAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0lOVFJFR19DQVJESU5TRVJUICAgMHgwMyAgICAvKiBTaWduYWwgaW5zZXJ0aW9uIG9mIE1NQyBjYXJkICAgICAgICAgICAgICAgICAgICovCisKKy8qCisgKiBWRVJTQVRJTEUgcGVyaXBoZXJhbCBhZGRyZXNzZXMKKyAqLworI2RlZmluZSBWRVJTQVRJTEVfUENJX0NPUkVfQkFTRSAgICAgICAgMHgxMDAwMTAwMAkvKiBQQ0kgY29yZSBjb250cm9sICovCisjZGVmaW5lIFZFUlNBVElMRV9JMkNfQkFTRSAgICAgICAgICAgICAweDEwMDAyMDAwCS8qIEkyQyBjb250cm9sICovCisjZGVmaW5lIFZFUlNBVElMRV9TSUNfQkFTRSAgICAgICAgICAgICAweDEwMDAzMDAwCS8qIFNlY29uZGFyeSBpbnRlcnJ1cHQgY29udHJvbGxlciAqLworI2RlZmluZSBWRVJTQVRJTEVfQUFDSV9CQVNFICAgICAgICAgICAgMHgxMDAwNDAwMAkvKiBBdWRpbyAqLworI2RlZmluZSBWRVJTQVRJTEVfTU1DSTBfQkFTRSAgICAgICAgICAgMHgxMDAwNTAwMAkvKiBNTUMgaW50ZXJmYWNlICovCisjZGVmaW5lIFZFUlNBVElMRV9LTUkwX0JBU0UgICAgICAgICAgICAweDEwMDA2MDAwCS8qIEtNSSBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0tNSTFfQkFTRSAgICAgICAgICAgIDB4MTAwMDcwMDAJLyogS01JIDJuZCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0NIQVJfTENEX0JBU0UgICAgICAgIDB4MTAwMDgwMDAJLyogQ2hhcmFjdGVyIExDRCAqLworI2RlZmluZSBWRVJTQVRJTEVfVUFSVDNfQkFTRSAgICAgICAgICAgMHgxMDAwOTAwMAkvKiBVQVJUIDMgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1NDSTFfQkFTRSAgICAgICAgICAgIDB4MTAwMEEwMDAKKyNkZWZpbmUgVkVSU0FUSUxFX01NQ0kxX0JBU0UgICAgICAgICAgIDB4MTAwMEIwMDAgICAgLyogTU1DIEludGVyZmFjZSAqLworCS8qIDB4MTAwMEMwMDAgLSAweDEwMDBDRkZGID0gcmVzZXJ2ZWQgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0VUSF9CQVNFICAgICAgICAgICAgIDB4MTAwMTAwMDAJLyogRXRoZXJuZXQgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1VTQl9CQVNFICAgICAgICAgICAgIDB4MTAwMjAwMDAJLyogVVNCICovCisJLyogMHgxMDAzMDAwMCAtIDB4MTAwRkZGRkYgPSByZXNlcnZlZCAqLworI2RlZmluZSBWRVJTQVRJTEVfU01DX0JBU0UgICAgICAgICAgICAgMHgxMDEwMDAwMAkvKiBTTUMgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX01QTUNfQkFTRSAgICAgICAgICAgIDB4MTAxMTAwMDAJLyogTVBNQyAqLworI2RlZmluZSBWRVJTQVRJTEVfQ0xDRF9CQVNFICAgICAgICAgICAgMHgxMDEyMDAwMAkvKiBDTENEICovCisjZGVmaW5lIFZFUlNBVElMRV9ETUFDX0JBU0UgICAgICAgICAgICAweDEwMTMwMDAwCS8qIERNQSBjb250cm9sbGVyICovCisjZGVmaW5lIFZFUlNBVElMRV9WSUNfQkFTRSAgICAgICAgICAgICAweDEwMTQwMDAwCS8qIFZlY3RvcmVkIGludGVycnVwdCBjb250cm9sbGVyICovCisjZGVmaW5lIFZFUlNBVElMRV9QRVJJUEhfQkFTRSAgICAgICAgICAweDEwMTUwMDAwICAgIC8qIG9mZi1jaGlwIHBlcmlwaGVyYWxzIGFsaWFzIGZyb20gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDB4MTAwMDAwMDAgLSAweDEwMEZGRkZGICovCisjZGVmaW5lIFZFUlNBVElMRV9BSEJNX0JBU0UgICAgICAgICAgICAweDEwMUQwMDAwCS8qIEFIQiBtb25pdG9yICovCisjZGVmaW5lIFZFUlNBVElMRV9TQ1RMX0JBU0UgICAgICAgICAgICAweDEwMUUwMDAwCS8qIFN5c3RlbSBjb250cm9sbGVyICovCisjZGVmaW5lIFZFUlNBVElMRV9XQVRDSERPR19CQVNFICAgICAgICAweDEwMUUxMDAwCS8qIFdhdGNoZG9nICovCisjZGVmaW5lIFZFUlNBVElMRV9USU1FUjBfMV9CQVNFICAgICAgICAweDEwMUUyMDAwCS8qIFRpbWVyIDAgYW5kIDEgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1RJTUVSMl8zX0JBU0UgICAgICAgIDB4MTAxRTMwMDAJLyogVGltZXIgMiBhbmQgMyAqLworI2RlZmluZSBWRVJTQVRJTEVfR1BJTzBfQkFTRSAgICAgICAgICAgMHgxMDFFNDAwMAkvKiBHUElPIHBvcnQgMCAqLworI2RlZmluZSBWRVJTQVRJTEVfR1BJTzFfQkFTRSAgICAgICAgICAgMHgxMDFFNTAwMCAgICAvKiBHUElPIHBvcnQgMSAqLworI2RlZmluZSBWRVJTQVRJTEVfR1BJTzJfQkFTRSAgICAgICAgICAgMHgxMDFFNjAwMAkvKiBHUElPIHBvcnQgMiAqLworI2RlZmluZSBWRVJTQVRJTEVfR1BJTzNfQkFTRSAgICAgICAgICAgMHgxMDFFNzAwMAkvKiBHUElPIHBvcnQgMyAqLworI2RlZmluZSBWRVJTQVRJTEVfUlRDX0JBU0UgICAgICAgICAgICAgMHgxMDFFODAwMAkvKiBSZWFsIFRpbWUgQ2xvY2sgKi8KKwkvKiAweDEwMUU5MDAwIC0gcmVzZXJ2ZWQgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1NDSV9CQVNFICAgICAgICAgICAgIDB4MTAxRjAwMDAJLyogU21hcnQgY2FyZCBjb250cm9sbGVyICovCisjZGVmaW5lIFZFUlNBVElMRV9VQVJUMF9CQVNFICAgICAgICAgICAweDEwMUYxMDAwCS8qIFVhcnQgMCAqLworI2RlZmluZSBWRVJTQVRJTEVfVUFSVDFfQkFTRSAgICAgICAgICAgMHgxMDFGMjAwMAkvKiBVYXJ0IDEgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX1VBUlQyX0JBU0UgICAgICAgICAgIDB4MTAxRjMwMDAJLyogVWFydCAyICovCisjZGVmaW5lIFZFUlNBVElMRV9TU1BfQkFTRSAgICAgICAgICAgICAweDEwMUY0MDAwCS8qIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0ICovCisKKyNkZWZpbmUgVkVSU0FUSUxFX1NTTUNfQkFTRSAgICAgICAgICAgIDB4MjAwMDAwMDAJLyogU1NNQyAqLworI2RlZmluZSBWRVJTQVRJTEVfSUIyX0JBU0UgICAgICAgICAgICAgMHgyNDAwMDAwMAkvKiBJQjIgbW9kdWxlICovCisjZGVmaW5lIFZFUlNBVElMRV9NQlhfQkFTRSAgICAgICAgICAgICAweDQwMDAwMDAwCS8qIE1CWCAqLworI2RlZmluZSBWRVJTQVRJTEVfUENJX0JBU0UgICAgICAgICAgICAgMHg0MTAwMDAwMAkvKiBQQ0kgSW50ZXJmYWNlICovCisjZGVmaW5lIFZFUlNBVElMRV9TRFJBTTY3X0JBU0UgICAgICAgICAweDcwMDAwMDAwCS8qIFNEUkFNIGJhbmtzIDYgYW5kIDcgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0xUX0JBU0UgICAgICAgICAgICAgIDB4ODAwMDAwMDAJLyogTG9naWMgVGlsZSBleHBhbnNpb24gKi8KKworLyoKKyAqIERpc2sgb24gQ2hpcAorICovCisjZGVmaW5lIFZFUlNBVElMRV9ET0NfQkFTRSAgICAgICAgICAgICAweDJDMDAwMDAwCisjZGVmaW5lIFZFUlNBVElMRV9ET0NfU0laRSAgICAgICAgICAgICAoMTYgPDwgMjApCisjZGVmaW5lIFZFUlNBVElMRV9ET0NfUEFHRV9TSVpFICAgICAgICA1MTIKKyNkZWZpbmUgVkVSU0FUSUxFX0RPQ19UT1RBTF9QQUdFUyAgICAgKERPQ19TSVpFIC8gUEFHRV9TSVpFKQorCisjZGVmaW5lIEVSQVNFX1VOSVRfUEFHRVMgICAgMzIKKyNkZWZpbmUgU1RBUlRfUEFHRSAgICAgICAgICAweDgwCisKKy8qIAorICogIExFRCBzZXR0aW5ncywgYml0cyBbNzowXQorICovCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfTEVEMCAgICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xFRDEgICAgICAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19MRUQyICAgICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfTEVEMyAgICAgICAgICAgICAoMSA8PCAzKQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xFRDQgICAgICAgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgVkVSU0FUSUxFX1NZU19MRUQ1ICAgICAgICAgICAgICgxIDw8IDUpCisjZGVmaW5lIFZFUlNBVElMRV9TWVNfTEVENiAgICAgICAgICAgICAoMSA8PCA2KQorI2RlZmluZSBWRVJTQVRJTEVfU1lTX0xFRDcgICAgICAgICAgICAgKDEgPDwgNykKKworI2RlZmluZSBBTExfTEVEUyAgICAgICAgICAgICAgICAgIDB4RkYKKworI2RlZmluZSBMRURfQkFOSyAgICAgICAgICAgICAgICAgIFZFUlNBVElMRV9TWVNfTEVECisKKy8qIAorICogQ29udHJvbCByZWdpc3RlcnMKKyAqLworI2RlZmluZSBWRVJTQVRJTEVfSURGSUVMRF9PRkZTRVQJMHgwCS8qIFZlcnNhdGlsZSBidWlsZCBpbmZvcm1hdGlvbiAqLworI2RlZmluZSBWRVJTQVRJTEVfRkxBU0hQUk9HX09GRlNFVAkweDQJLyogRmxhc2ggZGV2aWNlcyAqLworI2RlZmluZSBWRVJTQVRJTEVfSU5UUkVHX09GRlNFVAkJMHg4CS8qIEludGVycnVwdCBjb250cm9sICovCisjZGVmaW5lIFZFUlNBVElMRV9ERUNPREVfT0ZGU0VUCQkweEMJLyogRml0dGVkIGxvZ2ljIG1vZHVsZXMgKi8KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBWZXJzYXRpbGUgSW50ZXJydXB0IENvbnRyb2xsZXIgLSBjb250cm9sIHJlZ2lzdGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAKKyAqICBPZmZzZXRzIGZyb20gaW50ZXJydXB0IGNvbnRyb2xsZXIgYmFzZSAKKyAqIAorICogIFN5c3RlbSBDb250cm9sbGVyIGludGVycnVwdCBjb250cm9sbGVyIGJhc2UgaXMKKyAqIAorICogCVZFUlNBVElMRV9JQ19CQVNFCisgKiAKKyAqICBDb3JlIE1vZHVsZSBpbnRlcnJ1cHQgY29udHJvbGxlciBiYXNlIGlzCisgKiAKKyAqIAlWRVJTQVRJTEVfU1lTX0lDIAorICogCisgKi8KKyNkZWZpbmUgVklDX0lSUV9TVEFUVVMgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFZJQ19GSVFfU1RBVFVTICAgICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBWSUNfSVJRX1JBV19TVEFUVVMgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgVklDX0lOVF9TRUxFQ1QgICAgICAgICAgICAgICAgICAweDBDCS8qIDEgPSBGSVEsIDAgPSBJUlEgKi8KKyNkZWZpbmUgVklDX0lSUV9FTkFCTEUgICAgICAgICAgICAgICAgICAweDEwCS8qIDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlICovCisjZGVmaW5lIFZJQ19JUlFfRU5BQkxFX0NMRUFSICAgICAgICAgICAgMHgxNAorI2RlZmluZSBWSUNfSVJRX1NPRlQgICAgICAgICAgICAgICAgICAgIDB4MTgKKyNkZWZpbmUgVklDX0lSUV9TT0ZUX0NMRUFSICAgICAgICAgICAgICAweDFDCisjZGVmaW5lIFZJQ19QUk9URUNUICAgICAgICAgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBWSUNfVkVDVF9BRERSICAgICAgICAgICAgICAgICAgIDB4MzAKKyNkZWZpbmUgVklDX0RFRl9WRUNUX0FERFIgICAgICAgICAgICAgICAweDM0CisjZGVmaW5lIFZJQ19WRUNUX0FERFIwICAgICAgICAgICAgICAgICAgMHgxMDAJLyogMCB0byAxNSAqLworI2RlZmluZSBWSUNfVkVDVF9DTlRMMCAgICAgICAgICAgICAgICAgIDB4MjAwCS8qIDAgdG8gMTUgKi8KKyNkZWZpbmUgVklDX0lUQ1IgICAgICAgICAgICAgICAgICAgICAgICAweDMwMCAgIC8qIFZJQyB0ZXN0IGNvbnRyb2wgcmVnaXN0ZXIgKi8KKworI2RlZmluZSBWSUNfRklRX1JBV19TVEFUVVMgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgVklDX0ZJUV9FTkFCTEUgICAgICAgICAgICAgICAgICAweDEwCS8qIDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlICovCisjZGVmaW5lIFZJQ19GSVFfRU5BQkxFX0NMRUFSICAgICAgICAgICAgMHgxNAorI2RlZmluZSBWSUNfRklRX1NPRlQgICAgICAgICAgICAgICAgICAgIDB4MTgKKyNkZWZpbmUgVklDX0ZJUV9TT0ZUX0NMRUFSICAgICAgICAgICAgICAweDFDCisKKyNkZWZpbmUgU0lDX0lSUV9TVEFUVVMgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFNJQ19JUlFfUkFXX1NUQVRVUyAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBTSUNfSVJRX0VOQUJMRSAgICAgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgU0lDX0lSUV9FTkFCTEVfU0VUICAgICAgICAgICAgICAweDA4CisjZGVmaW5lIFNJQ19JUlFfRU5BQkxFX0NMRUFSICAgICAgICAgICAgMHgwQworI2RlZmluZSBTSUNfSU5UX1NPRlRfU0VUICAgICAgICAgICAgICAgIDB4MTAKKyNkZWZpbmUgU0lDX0lOVF9TT0ZUX0NMRUFSICAgICAgICAgICAgICAweDE0CisjZGVmaW5lIFNJQ19JTlRfUElDX0VOQUJMRSAgICAgICAgICAgICAgMHgyMAkvKiByZWFkIHN0YXR1cyBvZiBwYXNzIHRocm91Z2ggbWFzayAqLworI2RlZmluZSBTSUNfSU5UX1BJQ19FTkFCTEVTICAgICAgICAgICAgIDB4MjAJLyogc2V0IGludGVycnVwdCBwYXNzIHRocm91Z2ggYml0cyAqLworI2RlZmluZSBTSUNfSU5UX1BJQ19FTkFCTEVDICAgICAgICAgICAgIDB4MjQJLyogQ2xlYXIgaW50ZXJydXB0IHBhc3MgdGhyb3VnaCBiaXRzICovCisKKyNkZWZpbmUgVklDVmVjdENudGxfRW5hYmxlCQkoMSA8PCA1KQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBJbnRlcnJ1cHRzIC0gYml0IGFzc2lnbm1lbnQgKHByaW1hcnkpCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjZGVmaW5lIElOVF9XRE9HSU5UICAgICAgICAgICAgICAgICAgICAgMAkvKiBXYXRjaGRvZyB0aW1lciAqLworI2RlZmluZSBJTlRfU09GVElOVCAgICAgICAgICAgICAgICAgICAgIDEJLyogU29mdHdhcmUgaW50ZXJydXB0ICovCisjZGVmaW5lIElOVF9DT01NUnggICAgICAgICAgICAgICAgICAgICAgMgkvKiBEZWJ1ZyBDb21tIFJ4IGludGVycnVwdCAqLworI2RlZmluZSBJTlRfQ09NTVR4ICAgICAgICAgICAgICAgICAgICAgIDMJLyogRGVidWcgQ29tbSBUeCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU5UX1RJTUVSSU5UMF8xICAgICAgICAgICAgICAgICA0CS8qIFRpbWVyIDAgYW5kIDEgKi8KKyNkZWZpbmUgSU5UX1RJTUVSSU5UMl8zICAgICAgICAgICAgICAgICA1CS8qIFRpbWVyIDIgYW5kIDMgKi8KKyNkZWZpbmUgSU5UX0dQSU9JTlQwICAgICAgICAgICAgICAgICAgICA2CS8qIEdQSU8gMCAqLworI2RlZmluZSBJTlRfR1BJT0lOVDEgICAgICAgICAgICAgICAgICAgIDcJLyogR1BJTyAxICovCisjZGVmaW5lIElOVF9HUElPSU5UMiAgICAgICAgICAgICAgICAgICAgOAkvKiBHUElPIDIgKi8KKyNkZWZpbmUgSU5UX0dQSU9JTlQzICAgICAgICAgICAgICAgICAgICA5CS8qIEdQSU8gMyAqLworI2RlZmluZSBJTlRfUlRDSU5UICAgICAgICAgICAgICAgICAgICAgIDEwCS8qIFJlYWwgVGltZSBDbG9jayAqLworI2RlZmluZSBJTlRfU1NQSU5UICAgICAgICAgICAgICAgICAgICAgIDExCS8qIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0ICovCisjZGVmaW5lIElOVF9VQVJUSU5UMCAgICAgICAgICAgICAgICAgICAgMTIJLyogVUFSVCAwIG9uIGRldmVsb3BtZW50IGNoaXAgKi8KKyNkZWZpbmUgSU5UX1VBUlRJTlQxICAgICAgICAgICAgICAgICAgICAxMwkvKiBVQVJUIDEgb24gZGV2ZWxvcG1lbnQgY2hpcCAqLworI2RlZmluZSBJTlRfVUFSVElOVDIgICAgICAgICAgICAgICAgICAgIDE0CS8qIFVBUlQgMiBvbiBkZXZlbG9wbWVudCBjaGlwICovCisjZGVmaW5lIElOVF9TQ0lJTlQgICAgICAgICAgICAgICAgICAgICAgMTUJLyogU21hcnQgQ2FyZCBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgSU5UX0NMQ0RJTlQgICAgICAgICAgICAgICAgICAgICAxNgkvKiBDTENEIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgSU5UX0RNQUlOVCAgICAgICAgICAgICAgICAgICAgICAxNwkvKiBETUEgY29udHJvbGxlciAqLworI2RlZmluZSBJTlRfUFdSRkFJTElOVCAgICAgICAgICAgICAgICAgIDE4CS8qIFBvd2VyIGZhaWx1cmUgKi8KKyNkZWZpbmUgSU5UX01CWElOVCAgICAgICAgICAgICAgICAgICAgICAxOQkvKiBHcmFwaGljcyBwcm9jZXNzb3IgKi8KKyNkZWZpbmUgSU5UX0dORElOVCAgICAgICAgICAgICAgICAgICAgICAyMAkvKiBSZXNlcnZlZCAqLworCS8qIEV4dGVybmFsIGludGVycnVwdCBzaWduYWxzIGZyb20gbG9naWMgdGlsZXMgb3Igc2Vjb25kYXJ5IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgSU5UX1ZJQ1NPVVJDRTIxICAgICAgICAgICAgICAgICAyMQkvKiBEaXNrIG9uIENoaXAgKi8KKyNkZWZpbmUgSU5UX1ZJQ1NPVVJDRTIyICAgICAgICAgICAgICAgICAyMgkvKiBNQ0kwQSAqLworI2RlZmluZSBJTlRfVklDU09VUkNFMjMgICAgICAgICAgICAgICAgIDIzCS8qIE1DSTFBICovCisjZGVmaW5lIElOVF9WSUNTT1VSQ0UyNCAgICAgICAgICAgICAgICAgMjQJLyogQUFDSSAqLworI2RlZmluZSBJTlRfVklDU09VUkNFMjUgICAgICAgICAgICAgICAgIDI1CS8qIEV0aGVybmV0ICovCisjZGVmaW5lIElOVF9WSUNTT1VSQ0UyNiAgICAgICAgICAgICAgICAgMjYJLyogVVNCICovCisjZGVmaW5lIElOVF9WSUNTT1VSQ0UyNyAgICAgICAgICAgICAgICAgMjcJLyogUENJIDAgKi8KKyNkZWZpbmUgSU5UX1ZJQ1NPVVJDRTI4ICAgICAgICAgICAgICAgICAyOAkvKiBQQ0kgMSAqLworI2RlZmluZSBJTlRfVklDU09VUkNFMjkgICAgICAgICAgICAgICAgIDI5CS8qIFBDSSAyICovCisjZGVmaW5lIElOVF9WSUNTT1VSQ0UzMCAgICAgICAgICAgICAgICAgMzAJLyogUENJIDMgKi8KKyNkZWZpbmUgSU5UX1ZJQ1NPVVJDRTMxICAgICAgICAgICAgICAgICAzMQkvKiBTSUMgc291cmNlICovCisKKy8qIAorICogIEludGVycnVwdCBiaXQgcG9zaXRpb25zCisgKiAKKyAqLworI2RlZmluZSBJTlRNQVNLX1dET0dJTlQgICAgICAgICAgICAgICAgICgxIDw8IElOVF9XRE9HSU5UKQorI2RlZmluZSBJTlRNQVNLX1NPRlRJTlQgICAgICAgICAgICAgICAgICgxIDw8IElOVF9TT0ZUSU5UKQorI2RlZmluZSBJTlRNQVNLX0NPTU1SeCAgICAgICAgICAgICAgICAgICgxIDw8IElOVF9DT01NUngpCisjZGVmaW5lIElOVE1BU0tfQ09NTVR4ICAgICAgICAgICAgICAgICAgKDEgPDwgSU5UX0NPTU1UeCkKKyNkZWZpbmUgSU5UTUFTS19USU1FUklOVDBfMSAgICAgICAgICAgICAoMSA8PCBJTlRfVElNRVJJTlQwXzEpCisjZGVmaW5lIElOVE1BU0tfVElNRVJJTlQyXzMgICAgICAgICAgICAgKDEgPDwgSU5UX1RJTUVSSU5UMl8zKQorI2RlZmluZSBJTlRNQVNLX0dQSU9JTlQwICAgICAgICAgICAgICAgICgxIDw8IElOVF9HUElPSU5UMCkKKyNkZWZpbmUgSU5UTUFTS19HUElPSU5UMSAgICAgICAgICAgICAgICAoMSA8PCBJTlRfR1BJT0lOVDEpCisjZGVmaW5lIElOVE1BU0tfR1BJT0lOVDIgICAgICAgICAgICAgICAgKDEgPDwgSU5UX0dQSU9JTlQyKQorI2RlZmluZSBJTlRNQVNLX0dQSU9JTlQzICAgICAgICAgICAgICAgICgxIDw8IElOVF9HUElPSU5UMykKKyNkZWZpbmUgSU5UTUFTS19SVENJTlQgICAgICAgICAgICAgICAgICAoMSA8PCBJTlRfUlRDSU5UKQorI2RlZmluZSBJTlRNQVNLX1NTUElOVCAgICAgICAgICAgICAgICAgICgxIDw8IElOVF9TU1BJTlQpCisjZGVmaW5lIElOVE1BU0tfVUFSVElOVDAgICAgICAgICAgICAgICAgKDEgPDwgSU5UX1VBUlRJTlQwKQorI2RlZmluZSBJTlRNQVNLX1VBUlRJTlQxICAgICAgICAgICAgICAgICgxIDw8IElOVF9VQVJUSU5UMSkKKyNkZWZpbmUgSU5UTUFTS19VQVJUSU5UMiAgICAgICAgICAgICAgICAoMSA8PCBJTlRfVUFSVElOVDIpCisjZGVmaW5lIElOVE1BU0tfU0NJSU5UICAgICAgICAgICAgICAgICAgKDEgPDwgSU5UX1NDSUlOVCkKKyNkZWZpbmUgSU5UTUFTS19DTENESU5UICAgICAgICAgICAgICAgICAoMSA8PCBJTlRfQ0xDRElOVCkKKyNkZWZpbmUgSU5UTUFTS19ETUFJTlQgICAgICAgICAgICAgICAgICAoMSA8PCBJTlRfRE1BSU5UKQorI2RlZmluZSBJTlRNQVNLX1BXUkZBSUxJTlQgICAgICAgICAgICAgICgxIDw8IElOVF9QV1JGQUlMSU5UKQorI2RlZmluZSBJTlRNQVNLX01CWElOVCAgICAgICAgICAgICAgICAgICgxIDw8IElOVF9NQlhJTlQpCisjZGVmaW5lIElOVE1BU0tfR05ESU5UICAgICAgICAgICAgICAgICAgKDEgPDwgSU5UX0dORElOVCkKKyNkZWZpbmUgSU5UTUFTS19WSUNTT1VSQ0UyMSAgICAgICAgICAgICAoMSA8PCBJTlRfVklDU09VUkNFMjEpCisjZGVmaW5lIElOVE1BU0tfVklDU09VUkNFMjIgICAgICAgICAgICAgKDEgPDwgSU5UX1ZJQ1NPVVJDRTIyKQorI2RlZmluZSBJTlRNQVNLX1ZJQ1NPVVJDRTIzICAgICAgICAgICAgICgxIDw8IElOVF9WSUNTT1VSQ0UyMykKKyNkZWZpbmUgSU5UTUFTS19WSUNTT1VSQ0UyNCAgICAgICAgICAgICAoMSA8PCBJTlRfVklDU09VUkNFMjQpCisjZGVmaW5lIElOVE1BU0tfVklDU09VUkNFMjUgICAgICAgICAgICAgKDEgPDwgSU5UX1ZJQ1NPVVJDRTI1KQorI2RlZmluZSBJTlRNQVNLX1ZJQ1NPVVJDRTI2ICAgICAgICAgICAgICgxIDw8IElOVF9WSUNTT1VSQ0UyNikKKyNkZWZpbmUgSU5UTUFTS19WSUNTT1VSQ0UyNyAgICAgICAgICAgICAoMSA8PCBJTlRfVklDU09VUkNFMjcpCisjZGVmaW5lIElOVE1BU0tfVklDU09VUkNFMjggICAgICAgICAgICAgKDEgPDwgSU5UX1ZJQ1NPVVJDRTI4KQorI2RlZmluZSBJTlRNQVNLX1ZJQ1NPVVJDRTI5ICAgICAgICAgICAgICgxIDw8IElOVF9WSUNTT1VSQ0UyOSkKKyNkZWZpbmUgSU5UTUFTS19WSUNTT1VSQ0UzMCAgICAgICAgICAgICAoMSA8PCBJTlRfVklDU09VUkNFMzApCisjZGVmaW5lIElOVE1BU0tfVklDU09VUkNFMzEgICAgICAgICAgICAgKDEgPDwgSU5UX1ZJQ1NPVVJDRTMxKQorCisKKyNkZWZpbmUgVkVSU0FUSUxFX1NDX1ZBTElEX0lOVCAgICAgICAgICAgICAgIDB4MDAzRkZGRkYKKworI2RlZmluZSBNQVhJUlFOVU0gICAgICAgICAgICAgICAgICAgICAgIDMxCisjZGVmaW5lIE1BWEZJUU5VTSAgICAgICAgICAgICAgICAgICAgICAgMzEKKyNkZWZpbmUgTUFYU1dJTlVNICAgICAgICAgICAgICAgICAgICAgICAzMQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBJbnRlcnJ1cHRzIC0gYml0IGFzc2lnbm1lbnQgKHNlY29uZGFyeSkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFNJQ19JTlRfTU1DSTBCICAgICAgICAgICAgICAgICAgMQkvKiBNdWx0aW1lZGlhIENhcmQgMEIgKi8KKyNkZWZpbmUgU0lDX0lOVF9NTUNJMUIgICAgICAgICAgICAgICAgICAyCS8qIE11bHRpbWVkaWEgQ2FyZCAxQiAqLworI2RlZmluZSBTSUNfSU5UX0tNSTAgICAgICAgICAgICAgICAgICAgIDMJLyogS2V5Ym9hcmQvTW91c2UgcG9ydCAwICovCisjZGVmaW5lIFNJQ19JTlRfS01JMSAgICAgICAgICAgICAgICAgICAgNAkvKiBLZXlib2FyZC9Nb3VzZSBwb3J0IDEgKi8KKyNkZWZpbmUgU0lDX0lOVF9TQ0kzICAgICAgICAgICAgICAgICAgICA1CS8qIFNtYXJ0IENhcmQgaW50ZXJmYWNlICovCisjZGVmaW5lIFNJQ19JTlRfVUFSVDMgICAgICAgICAgICAgICAgICAgNgkvKiBVQVJUIDMgZW1wdHkgb3IgZGF0YSBhdmFpbGFibGUgKi8KKyNkZWZpbmUgU0lDX0lOVF9DTENEICAgICAgICAgICAgICAgICAgICA3CS8qIENoYXJhY3RlciBMQ0QgKi8KKyNkZWZpbmUgU0lDX0lOVF9UT1VDSCAgICAgICAgICAgICAgICAgICA4CS8qIFRvdWNoc2NyZWVuICovCisjZGVmaW5lIFNJQ19JTlRfS0VZUEFEICAgICAgICAgICAgICAgICAgOQkvKiBLZXkgcHJlc3NlZCBvbiBkaXNwbGF5IGtleXBhZCAqLworCS8qIDEwOjIwIC0gcmVzZXJ2ZWQgKi8KKyNkZWZpbmUgU0lDX0lOVF9Eb0MgICAgICAgICAgICAgICAgICAgICAyMQkvKiBEaXNrIG9uIENoaXAgbWVtb3J5IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgU0lDX0lOVF9NTUNJMEEgICAgICAgICAgICAgICAgICAyMgkvKiBNTUMgMEEgKi8KKyNkZWZpbmUgU0lDX0lOVF9NTUNJMUEgICAgICAgICAgICAgICAgICAyMwkvKiBNTUMgMUEgKi8KKyNkZWZpbmUgU0lDX0lOVF9BQUNJICAgICAgICAgICAgICAgICAgICAyNAkvKiBBdWRpbyBDb2RlYyAqLworI2RlZmluZSBTSUNfSU5UX0VUSCAgICAgICAgICAgICAgICAgICAgIDI1CS8qIEV0aGVybmV0IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgU0lDX0lOVF9VU0IgICAgICAgICAgICAgICAgICAgICAyNgkvKiBVU0IgY29udHJvbGxlciAqLworI2RlZmluZSBTSUNfSU5UX1BDSTAgICAgICAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIFNJQ19JTlRfUENJMSAgICAgICAgICAgICAgICAgICAgMjgKKyNkZWZpbmUgU0lDX0lOVF9QQ0kyICAgICAgICAgICAgICAgICAgICAyOQorI2RlZmluZSBTSUNfSU5UX1BDSTMgICAgICAgICAgICAgICAgICAgIDMwCisKKworI2RlZmluZSBTSUNfSU5UTUFTS19NTUNJMEIgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfTU1DSTBCKQorI2RlZmluZSBTSUNfSU5UTUFTS19NTUNJMUIgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfTU1DSTFCKQorI2RlZmluZSBTSUNfSU5UTUFTS19LTUkwICAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfS01JMCkKKyNkZWZpbmUgU0lDX0lOVE1BU0tfS01JMSAgICAgICAgICAgICAgICAoMSA8PCBTSUNfSU5UX0tNSTEpCisjZGVmaW5lIFNJQ19JTlRNQVNLX1NDSTMgICAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9TQ0kzKQorI2RlZmluZSBTSUNfSU5UTUFTS19VQVJUMyAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfVUFSVDMpCisjZGVmaW5lIFNJQ19JTlRNQVNLX0NMQ0QgICAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9DTENEKQorI2RlZmluZSBTSUNfSU5UTUFTS19UT1VDSCAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfVE9VQ0gpCisjZGVmaW5lIFNJQ19JTlRNQVNLX0tFWVBBRCAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9LRVlQQUQpCisjZGVmaW5lIFNJQ19JTlRNQVNLX0RvQyAgICAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9Eb0MpCisjZGVmaW5lIFNJQ19JTlRNQVNLX01NQ0kwQSAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9NTUNJMEEpCisjZGVmaW5lIFNJQ19JTlRNQVNLX01NQ0kxQSAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9NTUNJMUEpCisjZGVmaW5lIFNJQ19JTlRNQVNLX0FBQ0kgICAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9BQUNJKQorI2RlZmluZSBTSUNfSU5UTUFTS19FVEggICAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfRVRIKQorI2RlZmluZSBTSUNfSU5UTUFTS19VU0IgICAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfVVNCKQorI2RlZmluZSBTSUNfSU5UTUFTS19QQ0kwICAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfUENJMCkKKyNkZWZpbmUgU0lDX0lOVE1BU0tfUENJMSAgICAgICAgICAgICAgICAoMSA8PCBTSUNfSU5UX1BDSTEpCisjZGVmaW5lIFNJQ19JTlRNQVNLX1BDSTIgICAgICAgICAgICAgICAgKDEgPDwgU0lDX0lOVF9QQ0kyKQorI2RlZmluZSBTSUNfSU5UTUFTS19QQ0kzICAgICAgICAgICAgICAgICgxIDw8IFNJQ19JTlRfUENJMykKKy8qIAorICogIEFwcGxpY2F0aW9uIEZsYXNoCisgKiAKKyAqLworI2RlZmluZSBGTEFTSF9CQVNFICAgICAgICAgICAgICAgICAgICAgIFZFUlNBVElMRV9GTEFTSF9CQVNFCisjZGVmaW5lIEZMQVNIX1NJWkUgICAgICAgICAgICAgICAgICAgICAgVkVSU0FUSUxFX0ZMQVNIX1NJWkUKKyNkZWZpbmUgRkxBU0hfRU5EICAgICAgICAgICAgICAgICAgICAgICAoRkxBU0hfQkFTRSArIEZMQVNIX1NJWkUgLSAxKQorI2RlZmluZSBGTEFTSF9CTE9DS19TSVpFICAgICAgICAgICAgICAgIFNaXzEyOEsKKworLyogCisgKiAgQm9vdCBGbGFzaAorICogCisgKi8KKyNkZWZpbmUgRVBST01fQkFTRSAgICAgICAgICAgICAgICAgICAgICBWRVJTQVRJTEVfQk9PVF9ST01fSEkKKyNkZWZpbmUgRVBST01fU0laRSAgICAgICAgICAgICAgICAgICAgICBWRVJTQVRJTEVfQk9PVF9ST01fU0laRQorI2RlZmluZSBFUFJPTV9FTkQgICAgICAgICAgICAgICAgICAgICAgIChFUFJPTV9CQVNFICsgRVBST01fU0laRSAtIDEpCisKKy8qIAorICogIENsZWFuIGJhc2UgLSBkdW1teQorICogCisgKi8KKyNkZWZpbmUgQ0xFQU5fQkFTRSAgICAgICAgICAgICAgICAgICAgICBFUFJPTV9CQVNFCisKKy8qCisgKiBTeXN0ZW0gY29udHJvbGxlciBiaXQgYXNzaWdubWVudAorICovCisjZGVmaW5lIFZFUlNBVElMRV9SRUZDTEsJMAorI2RlZmluZSBWRVJTQVRJTEVfVElNQ0xLCTEKKworI2RlZmluZSBWRVJTQVRJTEVfVElNRVIxX0VuU2VsCTE1CisjZGVmaW5lIFZFUlNBVElMRV9USU1FUjJfRW5TZWwJMTcKKyNkZWZpbmUgVkVSU0FUSUxFX1RJTUVSM19FblNlbAkxOQorI2RlZmluZSBWRVJTQVRJTEVfVElNRVI0X0VuU2VsCTIxCisKKworI2RlZmluZSBNQVhfVElNRVIgICAgICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgTUFYX1BFUklPRCAgICAgICAgICAgICAgICAgICAgICA2OTkwNTAKKyNkZWZpbmUgVElDS1NfUEVSX3VTRUMgICAgICAgICAgICAgICAgICAxCisKKy8qIAorICogIFRoZXNlIGFyZSB1c2Vjb25kcyBOT1QgdGlja3MuICAKKyAqIAorICovCisjZGVmaW5lIG1TRUNfMSAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMAorI2RlZmluZSBtU0VDXzUgICAgICAgICAgICAgICAgICAgICAgICAgIChtU0VDXzEgKiA1KQorI2RlZmluZSBtU0VDXzEwICAgICAgICAgICAgICAgICAgICAgICAgIChtU0VDXzEgKiAxMCkKKyNkZWZpbmUgbVNFQ18yNSAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMjUpCisjZGVmaW5lIFNFQ18xICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1TRUNfMSAqIDEwMDApCisKKyNkZWZpbmUgVkVSU0FUSUxFX0NTUl9CQVNFICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgVkVSU0FUSUxFX0NTUl9TSVpFICAgICAgICAgICAgIDB4MTAwMDAwMDAKKworI2lmZGVmIENPTkZJR19NQUNIX1ZFUlNBVElMRV9BQgorLyoKKyAqIElCMiBWZXJzYXRpbGUvQUIgZXhwYW5zaW9uIGJvYXJkIGRlZmluaXRpb25zCisgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0lCMl9DQU1FUkFfQkFOSwkweDI0MDAwMDAwCisjZGVmaW5lIFZFUlNBVElMRV9JQjJfS0JEX0RBVEFSRUcJMHgyNTAwMDAwMAorI2RlZmluZSBWRVJTQVRJTEVfSUIyX0lFUgkJMHgyNjAwMDAwMAkvKiBmb3IgVklDSU5UU09VUkNFMjcgKi8KKyNkZWZpbmUgVkVSU0FUSUxFX0lCMl9DVFJMCQkweDI3MDAwMDAwCisjZGVmaW5lIFZFUlNBVElMRV9JQjJfU1RBVAkJMHgyNzAwMDAwNAorI2VuZGlmCisKKyNlbmRpZgorCisvKiAJRU5EICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg4OWExOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9zeXN0ZW0uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9zeXN0ZW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAorI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9wbGF0Zm9ybS5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJLyoKKwkgKiBUaGlzIHNob3VsZCBkbyBhbGwgdGhlIGNsb2NrIHN3aXRjaGluZworCSAqIGFuZCB3YWl0IGZvciBpbnRlcnJ1cHQgdHJpY2tzCisJICovCisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCXVuc2lnbmVkIGludCBoZHJfY3RybCA9CShJT19BRERSRVNTKFZFUlNBVElMRV9TWVNfQkFTRSkgKyBWRVJTQVRJTEVfU1lTX1JFU0VUQ1RMX09GRlNFVCk7CisJdW5zaWduZWQgaW50IHZhbDsKKworCS8qCisJICogVG8gcmVzZXQsIHdlIGhpdCB0aGUgb24tYm9hcmQgcmVzZXQgcmVnaXN0ZXIKKwkgKiBpbiB0aGUgc3lzdGVtIEZQR0EKKwkgKi8KKwl2YWwgPSBfX3Jhd19yZWFkbChoZHJfY3RybCk7CisJdmFsIHw9IFZFUlNBVElMRV9TWVNfQ1RSTF9SRVNFVF9DT05GSUdDTFI7CisJX19yYXdfd3JpdGVsKHZhbCwgaGRyX2N0cmwpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS90aW1leC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3RpbWV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmZDA0ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS90aW1leC5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3RpbWV4LmgKKyAqCisgKiAgVmVyc2F0aWxlIGFyY2hpdGVjdHVyZSB0aW1leCBzcGVjaWZpY2F0aW9ucworICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCSg1MDAwMDAwMCAvIDE2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS91bmNvbXByZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY1NzQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS91bmNvbXByZXNzLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvdW5jb21wcmVzcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2RlZmluZSBBTUJBX1VBUlRfRFIJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKTB4MTAxRjEwMDApCisjZGVmaW5lIEFNQkFfVUFSVF9MQ1JICSgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikweDEwMUYxMDJDKQorI2RlZmluZSBBTUJBX1VBUlRfQ1IJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKTB4MTAxRjEwMzApCisjZGVmaW5lIEFNQkFfVUFSVF9GUgkoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopMHgxMDFGMTAxOCkKKworLyoKKyAqIFRoaXMgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZQorICovCitzdGF0aWMgdm9pZCBwdXRzdHIoY29uc3QgY2hhciAqcykKK3sKKwl3aGlsZSAoKnMpIHsKKwkJd2hpbGUgKEFNQkFfVUFSVF9GUiAmICgxIDw8IDUpKQorCQkJYmFycmllcigpOworCisJCUFNQkFfVUFSVF9EUiA9ICpzOworCisJCWlmICgqcyA9PSAnXG4nKSB7CisJCQl3aGlsZSAoQU1CQV9VQVJUX0ZSICYgKDEgPDwgNSkpCisJCQkJYmFycmllcigpOworCisJCQlBTUJBX1VBUlRfRFIgPSAnXHInOworCQl9CisJCXMrKzsKKwl9CisJd2hpbGUgKEFNQkFfVUFSVF9GUiAmICgxIDw8IDMpKQorCQliYXJyaWVyKCk7Cit9CisKKy8qCisgKiBub3RoaW5nIHRvIGRvCisgKi8KKyNkZWZpbmUgYXJjaF9kZWNvbXBfc2V0dXAoKQorI2RlZmluZSBhcmNoX2RlY29tcF93ZG9nKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvdm1hbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZmIzNDgyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3ZtYWxsb2MuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS92bWFsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIEFSTSBMaW1pdGVkCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyoKKyAqIEp1c3QgYW55IGFyYml0cmFyeSBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIFZNIGFyZWE6IHRoZQorICogY3VycmVudCA4TUIgdmFsdWUganVzdCBtZWFucyB0aGF0IHRoZXJlIHdpbGwgYmUgYSA4TUIgImhvbGUiIGFmdGVyIHRoZQorICogcGh5c2ljYWwgbWVtb3J5IHVudGlsIHRoZSBrZXJuZWwgdmlydHVhbCBtZW1vcnkgc3RhcnRzLiAgVGhhdCBtZWFucyB0aGF0CisgKiBhbnkgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2lsbCBob3BlZnVsbHkgYmUgY2F1Z2h0LgorICogVGhlIHZtYWxsb2MoKSByb3V0aW5lcyBsZWF2ZXMgYSBob2xlIG9mIDRrQiBiZXR3ZWVuIGVhY2ggdm1hbGxvY2VkCisgKiBhcmVhIGZvciB0aGUgc2FtZSByZWFzb24uIDspCisgKi8KKyNkZWZpbmUgVk1BTExPQ19PRkZTRVQJCSg4KjEwMjQqMTAyNCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVAkJKCgodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQtMSkpCisjZGVmaW5lIFZNQUxMT0NfVk1BRERSKHgpCSgodW5zaWduZWQgbG9uZykoeCkpCisjZGVmaW5lIFZNQUxMT0NfRU5ECQkoUEFHRV9PRkZTRVQgKyAweDE4MDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2Fzc2VtYmxlci5oIGIvaW5jbHVkZS9hc20tYXJtL2Fzc2VtYmxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YTI4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXNzZW1ibGVyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2Fzc2VtYmxlci5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIFRoaXMgZmlsZSBjb250YWlucyBhcm0gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRlZmluZXMKKyAqICBmb3IgdGhlIGRpZmZlcmVudCBwcm9jZXNzb3JzLgorICoKKyAqICBEbyBub3QgaW5jbHVkZSBhbnkgQyBkZWNsYXJhdGlvbnMgaW4gdGhpcyBmaWxlIC0gaXQgaXMgaW5jbHVkZWQgYnkKKyAqICBhc3NlbWJsZXIgc291cmNlLgorICovCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2Vycm9yICJPbmx5IGluY2x1ZGUgdGhpcyBmcm9tIGFzc2VtYmx5IGNvZGUiCisjZW5kaWYKKworI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKworLyoKKyAqIEVuZGlhbiBpbmRlcGVuZGVudCBtYWNyb3MgZm9yIHNoaWZ0aW5nIGJ5dGVzIHdpdGhpbiByZWdpc3RlcnMuCisgKi8KKyNpZm5kZWYgX19BUk1FQl9fCisjZGVmaW5lIHB1bGwgICAgICAgICAgICBsc3IKKyNkZWZpbmUgcHVzaCAgICAgICAgICAgIGxzbAorI2RlZmluZSBnZXRfYnl0ZV8wICAgICAgbHNsICMwCisjZGVmaW5lIGdldF9ieXRlXzEJbHNyICM4CisjZGVmaW5lIGdldF9ieXRlXzIJbHNyICMxNgorI2RlZmluZSBnZXRfYnl0ZV8zCWxzciAjMjQKKyNkZWZpbmUgcHV0X2J5dGVfMCAgICAgIGxzbCAjMAorI2RlZmluZSBwdXRfYnl0ZV8xCWxzbCAjOAorI2RlZmluZSBwdXRfYnl0ZV8yCWxzbCAjMTYKKyNkZWZpbmUgcHV0X2J5dGVfMwlsc2wgIzI0CisjZWxzZQorI2RlZmluZSBwdWxsICAgICAgICAgICAgbHNsCisjZGVmaW5lIHB1c2ggICAgICAgICAgICBsc3IKKyNkZWZpbmUgZ2V0X2J5dGVfMAlsc3IgIzI0CisjZGVmaW5lIGdldF9ieXRlXzEJbHNyICMxNgorI2RlZmluZSBnZXRfYnl0ZV8yCWxzciAjOAorI2RlZmluZSBnZXRfYnl0ZV8zICAgICAgbHNsICMwCisjZGVmaW5lIHB1dF9ieXRlXzAJbHNsICMyNAorI2RlZmluZSBwdXRfYnl0ZV8xCWxzbCAjMTYKKyNkZWZpbmUgcHV0X2J5dGVfMglsc2wgIzgKKyNkZWZpbmUgcHV0X2J5dGVfMyAgICAgIGxzbCAjMAorI2VuZGlmCisKKy8qCisgKiBEYXRhIHByZWxvYWQgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBzdXBwb3J0IGl0CisgKi8KKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNQorI2RlZmluZSBQTEQoY29kZS4uLikJY29kZQorI2Vsc2UKKyNkZWZpbmUgUExEKGNvZGUuLi4pCisjZW5kaWYKKworI2RlZmluZSBNT0RFX1VTUglVU1JfTU9ERQorI2RlZmluZSBNT0RFX0ZJUQlGSVFfTU9ERQorI2RlZmluZSBNT0RFX0lSUQlJUlFfTU9ERQorI2RlZmluZSBNT0RFX1NWQwlTVkNfTU9ERQorCisjZGVmaW5lIERFRkFVTFRfRklRCU1PREVfRklRCisKKy8qCisgKiBMT0FEUkVHUyAtIGxkbSB3aXRoIFBDIGluIHJlZ2lzdGVyIGxpc3QgKGVnLCBsZG1mZCBzcCEsIHtwY30pCisgKi8KKyNpZmRlZiBfX1NURENfXworI2RlZmluZSBMT0FEUkVHUyhjb25kLCBiYXNlLCByZWdsaXN0Li4uKVwKKwlsZG0jI2NvbmQJYmFzZSxyZWdsaXN0CisjZWxzZQorI2RlZmluZSBMT0FEUkVHUyhjb25kLCBiYXNlLCByZWdsaXN0Li4uKVwKKwlsZG0vKiovY29uZAliYXNlLHJlZ2xpc3QKKyNlbmRpZgorCisvKgorICogQnVpbGQgYSByZXR1cm4gaW5zdHJ1Y3Rpb24gZm9yIHRoaXMgcHJvY2Vzc29yIHR5cGUuCisgKi8KKyNkZWZpbmUgUkVUSU5TVFIoaW5zdHIsIHJlZ3MuLi4pXAorCWluc3RyCXJlZ3MKKworLyoKKyAqIFNhdmUgdGhlIGN1cnJlbnQgSVJRIHN0YXRlIGFuZCBkaXNhYmxlIElSUXMuICBOb3RlIHRoYXQgdGhpcyBtYWNybworICogYXNzdW1lcyBGSVFzIGFyZSBlbmFibGVkLCBhbmQgdGhhdCB0aGUgcHJvY2Vzc29yIGlzIGluIFNWQyBtb2RlLgorICovCisJLm1hY3JvCXNhdmVfYW5kX2Rpc2FibGVfaXJxcywgb2xkY3BzciwgdGVtcAorCW1ycwlcb2xkY3BzciwgY3BzcgorCW1vdglcdGVtcCwgI1BTUl9JX0JJVCB8IE1PREVfU1ZDCisJbXNyCWNwc3JfYywgXHRlbXAKKwkuZW5kbQorCisvKgorICogUmVzdG9yZSBpbnRlcnJ1cHQgc3RhdGUgcHJldmlvdXNseSBzdG9yZWQgaW4gYSByZWdpc3Rlci4gIFdlIGRvbid0CisgKiBndWFyYW50ZWUgdGhhdCB0aGlzIHdpbGwgcHJlc2VydmUgdGhlIGZsYWdzLgorICovCisJLm1hY3JvCXJlc3RvcmVfaXJxcywgb2xkY3BzcgorCW1zcgljcHNyX2MsIFxvbGRjcHNyCisJLmVuZG0KKworLyoKKyAqIFRoZXNlIHR3byBhcmUgdXNlZCB0byBzYXZlIExSL3Jlc3RvcmUgUEMgb3ZlciBhIHVzZXItYmFzZWQgYWNjZXNzLgorICogVGhlIG9sZCAyNi1iaXQgYXJjaGl0ZWN0dXJlIHJlcXVpcmVzIHRoYXQgd2UgZG8uICBPbiAzMi1iaXQKKyAqIGFyY2hpdGVjdHVyZSwgd2UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyByZXF1aXJlbWVudC4KKyAqLworCS5tYWNybwlzYXZlX2xyCisJLmVuZG0KKworCS5tYWNybwlyZXN0b3JlX3BjCisJbW92CXBjLCBscgorCS5lbmRtCisKKyNkZWZpbmUgVVNFUih4Li4uKQkJCQlcCis5OTk5Ogl4OwkJCQkJXAorCS5zZWN0aW9uIF9fZXhfdGFibGUsImEiOwkJXAorCS5hbGlnbgkzOwkJCQlcCisJLmxvbmcJOTk5OWIsOTAwMWY7CQkJXAorCS5wcmV2aW91cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2F0b21pYy5oIGIvaW5jbHVkZS9hc20tYXJtL2F0b21pYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ODU5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXRvbWljLmgKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2F0b21pYy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NiBSdXNzZWxsIEtpbmcuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0FUT01JQ19ICisjZGVmaW5lIF9fQVNNX0FSTV9BVE9NSUNfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKK3R5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CisKKyNkZWZpbmUgQVRPTUlDX0lOSVQoaSkJeyAoaSkgfQorCisjaWZkZWYgX19LRVJORUxfXworCisjZGVmaW5lIGF0b21pY19yZWFkKHYpCSgodiktPmNvdW50ZXIpCisKKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorCisvKgorICogQVJNdjYgVVAgYW5kIFNNUCBzYWZlIGF0b21pYyBvcHMuICBXZSB1c2UgbG9hZCBleGNsdXNpdmUgYW5kCisgKiBzdG9yZSBleGNsdXNpdmUgdG8gZW5zdXJlIHRoYXQgdGhlc2UgYXJlIGF0b21pYy4gIFdlIG1heSBsb29wCisgKiB0byBlbnN1cmUgdGhhdCB0aGUgdXBkYXRlIGhhcHBlbnMuICBXcml0aW5nIHRvICd2LT5jb3VudGVyJworICogd2l0aG91dCB1c2luZyB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgV0lMTCBicmVhayB0aGUgYXRvbWljCisgKiBuYXR1cmUgb2YgdGhlc2Ugb3BzLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX3NldChhdG9taWNfdCAqdiwgaW50IGkpCit7CisJdW5zaWduZWQgbG9uZyB0bXA7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygiQCBhdG9taWNfc2V0XG4iCisiMToJbGRyZXgJJTAsIFslMV1cbiIKKyIJc3RyZXgJJTAsICUyLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJYm5lCTFiIgorCTogIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiciIgKGkpCisJOiAiY2MiKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgYXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCWludCByZXN1bHQ7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygiQCBhdG9taWNfYWRkX3JldHVyblxuIgorIjE6CWxkcmV4CSUwLCBbJTJdXG4iCisiCWFkZAklMCwgJTAsICUzXG4iCisiCXN0cmV4CSUxLCAlMCwgWyUyXVxuIgorIgl0ZXEJJTEsICMwXG4iCisiCWJuZQkxYiIKKwk6ICI9JnIiIChyZXN1bHQpLCAiPSZyIiAodG1wKQorCTogInIiICgmdi0+Y291bnRlciksICJJciIgKGkpCisJOiAiY2MiKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21pY19zdWJfcmV0dXJuKGludCBpLCBhdG9taWNfdCAqdikKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKwlpbnQgcmVzdWx0OworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oIkAgYXRvbWljX3N1Yl9yZXR1cm5cbiIKKyIxOglsZHJleAklMCwgWyUyXVxuIgorIglzdWIJJTAsICUwLCAlM1xuIgorIglzdHJleAklMSwgJTAsIFslMl1cbiIKKyIJdGVxCSUxLCAjMFxuIgorIglibmUJMWIiCisJOiAiPSZyIiAocmVzdWx0KSwgIj0mciIgKHRtcCkKKwk6ICJyIiAoJnYtPmNvdW50ZXIpLCAiSXIiIChpKQorCTogImNjIik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX2NsZWFyX21hc2sodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nICphZGRyKQoreworCXVuc2lnbmVkIGxvbmcgdG1wLCB0bXAyOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oIkAgYXRvbWljX2NsZWFyX21hc2tcbiIKKyIxOglsZHJleAklMCwgJTJcbiIKKyIJYmljCSUwLCAlMCwgJTNcbiIKKyIJc3RyZXgJJTEsICUwLCAlMlxuIgorIgl0ZXEJJTEsICMwXG4iCisiCWJuZQkxYiIKKwk6ICI9JnIiICh0bXApLCAiPSZyIiAodG1wMikKKwk6ICJyIiAoYWRkciksICJJciIgKG1hc2spCisJOiAiY2MiKTsKK30KKworI2Vsc2UgLyogQVJNX0FSQ0hfNiAqLworCisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorCisjaWZkZWYgQ09ORklHX1NNUAorI2Vycm9yIFNNUCBub3Qgc3VwcG9ydGVkIG9uIHByZS1BUk12NiBDUFVzCisjZW5kaWYKKworI2RlZmluZSBhdG9taWNfc2V0KHYsaSkJKCgodiktPmNvdW50ZXIpID0gKGkpKQorCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNfYWRkX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgdmFsOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCXZhbCA9IHYtPmNvdW50ZXI7CisJdi0+Y291bnRlciA9IHZhbCArPSBpOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21pY19zdWJfcmV0dXJuKGludCBpLCBhdG9taWNfdCAqdikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCB2YWw7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJdmFsID0gdi0+Y291bnRlcjsKKwl2LT5jb3VudGVyID0gdmFsIC09IGk7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCisJcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19jbGVhcl9tYXNrKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyAqYWRkcikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCSphZGRyICY9IH5tYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKworI2VuZGlmIC8qIF9fTElOVVhfQVJNX0FSQ0hfXyAqLworCisjZGVmaW5lIGF0b21pY19hZGQoaSwgdikJKHZvaWQpIGF0b21pY19hZGRfcmV0dXJuKGksIHYpCisjZGVmaW5lIGF0b21pY19pbmModikJCSh2b2lkKSBhdG9taWNfYWRkX3JldHVybigxLCB2KQorI2RlZmluZSBhdG9taWNfc3ViKGksIHYpCSh2b2lkKSBhdG9taWNfc3ViX3JldHVybihpLCB2KQorI2RlZmluZSBhdG9taWNfZGVjKHYpCQkodm9pZCkgYXRvbWljX3N1Yl9yZXR1cm4oMSwgdikKKworI2RlZmluZSBhdG9taWNfaW5jX2FuZF90ZXN0KHYpCShhdG9taWNfYWRkX3JldHVybigxLCB2KSA9PSAwKQorI2RlZmluZSBhdG9taWNfZGVjX2FuZF90ZXN0KHYpCShhdG9taWNfc3ViX3JldHVybigxLCB2KSA9PSAwKQorI2RlZmluZSBhdG9taWNfaW5jX3JldHVybih2KSAgICAoYXRvbWljX2FkZF9yZXR1cm4oMSwgdikpCisjZGVmaW5lIGF0b21pY19kZWNfcmV0dXJuKHYpICAgIChhdG9taWNfc3ViX3JldHVybigxLCB2KSkKKyNkZWZpbmUgYXRvbWljX3N1Yl9hbmRfdGVzdChpLCB2KSAoYXRvbWljX3N1Yl9yZXR1cm4oaSwgdikgPT0gMCkKKworI2RlZmluZSBhdG9taWNfYWRkX25lZ2F0aXZlKGksdikgKGF0b21pY19hZGRfcmV0dXJuKGksIHYpIDwgMCkKKworLyogQXRvbWljIG9wZXJhdGlvbnMgYXJlIGFscmVhZHkgc2VyaWFsaXppbmcgb24gQVJNICovCisjZGVmaW5lIHNtcF9tYl9fYmVmb3JlX2F0b21pY19kZWMoKQliYXJyaWVyKCkKKyNkZWZpbmUgc21wX21iX19hZnRlcl9hdG9taWNfZGVjKCkJYmFycmllcigpCisjZGVmaW5lIHNtcF9tYl9fYmVmb3JlX2F0b21pY19pbmMoKQliYXJyaWVyKCkKKyNkZWZpbmUgc21wX21iX19hZnRlcl9hdG9taWNfaW5jKCkJYmFycmllcigpCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmggYi9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkZDRkYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaApAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHlyaWdodCAxOTk1LCBSdXNzZWxsIEtpbmcuCisgKiBWYXJpb3VzIGJpdHMgYW5kIHBpZWNlcyBjb3B5cmlnaHRzIGluY2x1ZGU6CisgKiAgTGludXMgVG9ydmFsZHMgKHRlc3RfYml0KS4KKyAqIEJpZyBlbmRpYW4gc3VwcG9ydDogQ29weXJpZ2h0IDIwMDEsIE5pY29sYXMgUGl0cmUKKyAqICByZXdvcmtlZCBieSBybWsuCisgKgorICogYml0IDAgaXMgdGhlIExTQiBvZiBhbiAidW5zaWduZWQgbG9uZyIgcXVhbnRpdHkuCisgKgorICogUGxlYXNlIG5vdGUgdGhhdCB0aGUgY29kZSBpbiB0aGlzIGZpbGUgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkCisgKiBmcm9tIHVzZXIgc3BhY2UuICBNYW55IG9mIHRoZXNlIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gYXNzZW1ibGVyCisgKiBzaW5jZSB0aGV5IHdvdWxkIGJlIHRvbyBjb3N0bHkuICBBbHNvLCB0aGV5IHJlcXVpcmUgcHJpdmlsZWdlZAorICogaW5zdHJ1Y3Rpb25zICh3aGljaCBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHVzZXIgbW9kZSkgdG8gZW5zdXJlCisgKiB0aGF0IHRoZXkgYXJlIGF0b21pYy4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSTV9CSVRPUFNfSAorI2RlZmluZSBfX0FTTV9BUk1fQklUT1BTX0gKKworI2lmZGVmIF9fS0VSTkVMX18KKworI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworI2RlZmluZSBzbXBfbWJfX2JlZm9yZV9jbGVhcl9iaXQoKQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNtcF9tYl9fYWZ0ZXJfY2xlYXJfYml0KCkJZG8geyB9IHdoaWxlICgwKQorCisvKgorICogVGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgYmFzaXMgb2Ygb3VyIGJpdCBvcHMuCisgKgorICogRmlyc3QsIHRoZSBhdG9taWMgYml0b3BzLiBUaGVzZSB1c2UgbmF0aXZlIGVuZGlhbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9fX19hdG9taWNfc2V0X2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVMIDw8IChiaXQgJiAzMSk7CisKKwlwICs9IGJpdCA+PiA1OworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCSpwIHw9IG1hc2s7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19fX2F0b21pY19jbGVhcl9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkqcCAmPSB+bWFzazsKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX19fYXRvbWljX2NoYW5nZV9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCAoYml0ICYgMzEpOworCisJcCArPSBiaXQgPj4gNTsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkqcCBePSBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK19fX19hdG9taWNfdGVzdF9hbmRfc2V0X2JpdCh1bnNpZ25lZCBpbnQgYml0LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgaW50IHJlczsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwgPDwgKGJpdCAmIDMxKTsKKworCXAgKz0gYml0ID4+IDU7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJcmVzID0gKnA7CisJKnAgPSByZXMgfCBtYXNrOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworCXJldHVybiByZXMgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5lIGludAorX19fX2F0b21pY190ZXN0X2FuZF9jbGVhcl9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGludCByZXM7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVMIDw8IChiaXQgJiAzMSk7CisKKwlwICs9IGJpdCA+PiA1OworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCXJlcyA9ICpwOworCSpwID0gcmVzICYgfm1hc2s7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCisJcmV0dXJuIHJlcyAmIG1hc2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitfX19fYXRvbWljX3Rlc3RfYW5kX2NoYW5nZV9iaXQodW5zaWduZWQgaW50IGJpdCwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGludCByZXM7CisJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVMIDw8IChiaXQgJiAzMSk7CisKKwlwICs9IGJpdCA+PiA1OworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCXJlcyA9ICpwOworCSpwID0gcmVzIF4gbWFzazsKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisKKwlyZXR1cm4gcmVzICYgbWFzazsKK30KKworLyoKKyAqIE5vdyB0aGUgbm9uLWF0b21pYyB2YXJpYW50cy4gIFdlIGxldCB0aGUgY29tcGlsZXIgaGFuZGxlIGFsbAorICogb3B0aW1pc2F0aW9ucyBmb3IgdGhlc2UuICBUaGVzZSBhcmUgYWxsIF9uYXRpdmVfIGVuZGlhbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKnApCit7CisJcFtuciA+PiA1XSB8PSAoMVVMIDw8IChuciAmIDMxKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKnApCit7CisJcFtuciA+PiA1XSAmPSB+KDFVTCA8PCAobnIgJiAzMSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwlwW25yID4+IDVdIF49ICgxVUwgPDwgKG5yICYgMzEpKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIG9sZHZhbCwgbWFzayA9IDFVTCA8PCAobnIgJiAzMSk7CisKKwlwICs9IG5yID4+IDU7CisKKwlvbGR2YWwgPSAqcDsKKwkqcCA9IG9sZHZhbCB8IG1hc2s7CisJcmV0dXJuIG9sZHZhbCAmIG1hc2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IF9fdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCkKK3sKKwl1bnNpZ25lZCBsb25nIG9sZHZhbCwgbWFzayA9IDFVTCA8PCAobnIgJiAzMSk7CisKKwlwICs9IG5yID4+IDU7CisKKwlvbGR2YWwgPSAqcDsKKwkqcCA9IG9sZHZhbCAmIH5tYXNrOworCXJldHVybiBvbGR2YWwgJiBtYXNrOworfQorCitzdGF0aWMgaW5saW5lIGludCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKQoreworCXVuc2lnbmVkIGxvbmcgb2xkdmFsLCBtYXNrID0gMVVMIDw8IChuciAmIDMxKTsKKworCXAgKz0gbnIgPj4gNTsKKworCW9sZHZhbCA9ICpwOworCSpwID0gb2xkdmFsIF4gbWFzazsKKwlyZXR1cm4gb2xkdmFsICYgbWFzazsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSBkb2Vzbid0IG5lZWQgdG8gYmUgYXRvbWljLgorICovCitzdGF0aWMgaW5saW5lIGludCBfX3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIHApCit7CisJcmV0dXJuIChwW25yID4+IDVdID4+IChuciAmIDMxKSkgJiAxVUw7Cit9CisKKy8qCisgKiAgQSBub3RlIGFib3V0IEVuZGlhbi1uZXNzLgorICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBXaGVuIHRoZSBBUk0gaXMgcHV0IGludG8gYmlnIGVuZGlhbiBtb2RlIHZpYSBDUjE1LCB0aGUgcHJvY2Vzc29yCisgKiBtZXJlbHkgc3dhcHMgdGhlIG9yZGVyIG9mIGJ5dGVzIHdpdGhpbiB3b3JkcywgdGh1czoKKyAqCisgKiAgICAgICAgICAtLS0tLS0tLS0tLS0gcGh5c2ljYWwgZGF0YSBidXMgYml0cyAtLS0tLS0tLS0tLQorICogICAgICAgICAgRDMxIC4uLiBEMjQgIEQyMyAuLi4gRDE2ICBEMTUgLi4uIEQ4ICBENyAuLi4gRDAKKyAqIGxpdHRsZSAgICAgYnl0ZSAzICAgICAgIGJ5dGUgMiAgICAgICBieXRlIDEgICAgICBieXRlIDAKKyAqIGJpZyAgICAgICAgYnl0ZSAwICAgICAgIGJ5dGUgMSAgICAgICBieXRlIDIgICAgICBieXRlIDMKKyAqCisgKiBUaGlzIG1lYW5zIHRoYXQgcmVhZGluZyBhIDMyLWJpdCB3b3JkIGF0IGFkZHJlc3MgMCByZXR1cm5zIHRoZSBzYW1lCisgKiB2YWx1ZSBpcnJlc3BlY3RpdmUgb2YgdGhlIGVuZGlhbiBtb2RlIGJpdC4KKyAqCisgKiBQZXJpcGhlcmFsIGRldmljZXMgc2hvdWxkIGJlIGNvbm5lY3RlZCB3aXRoIHRoZSBkYXRhIGJ1cyByZXZlcnNlZCBpbgorICogIkJpZyBFbmRpYW4iIG1vZGUuICBBUk0gQXBwbGljYXRpb24gTm90ZSA2MSBpcyBhcHBsaWNhYmxlLCBhbmQgaXMKKyAqIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly93d3cuYXJtLmNvbS8uCisgKgorICogVGhlIGZvbGxvd2luZyBhc3N1bWVzIHRoYXQgdGhlIGRhdGEgYnVzIGNvbm5lY3Rpdml0eSBmb3IgYmlnIGVuZGlhbgorICogbW9kZSBoYXMgYmVlbiBmb2xsb3dlZC4KKyAqCisgKiBOb3RlIHRoYXQgYml0IDAgaXMgZGVmaW5lZCB0byBiZSAzMi1iaXQgd29yZCBiaXQgMCwgbm90IGJ5dGUgMCBiaXQgMC4KKyAqLworCisvKgorICogTGl0dGxlIGVuZGlhbiBhc3NlbWJseSBiaXRvcHMuICBuciA9IDAgLT4gYnl0ZSAwIGJpdCAwLgorICovCitleHRlcm4gdm9pZCBfc2V0X2JpdF9sZShpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBwKTsKK2V4dGVybiB2b2lkIF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogcCk7CitleHRlcm4gdm9pZCBfY2hhbmdlX2JpdF9sZShpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBwKTsKK2V4dGVybiBpbnQgX3Rlc3RfYW5kX3NldF9iaXRfbGUoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogcCk7CitleHRlcm4gaW50IF90ZXN0X2FuZF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogcCk7CitleHRlcm4gaW50IF90ZXN0X2FuZF9jaGFuZ2VfYml0X2xlKGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIHApOworZXh0ZXJuIGludCBfZmluZF9maXJzdF96ZXJvX2JpdF9sZShjb25zdCB2b2lkICogcCwgdW5zaWduZWQgc2l6ZSk7CitleHRlcm4gaW50IF9maW5kX25leHRfemVyb19iaXRfbGUoY29uc3Qgdm9pZCAqIHAsIGludCBzaXplLCBpbnQgb2Zmc2V0KTsKK2V4dGVybiBpbnQgX2ZpbmRfZmlyc3RfYml0X2xlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnAsIHVuc2lnbmVkIHNpemUpOworZXh0ZXJuIGludCBfZmluZF9uZXh0X2JpdF9sZShjb25zdCB1bnNpZ25lZCBsb25nICpwLCBpbnQgc2l6ZSwgaW50IG9mZnNldCk7CisKKy8qCisgKiBCaWcgZW5kaWFuIGFzc2VtYmx5IGJpdG9wcy4gIG5yID0gMCAtPiBieXRlIDMgYml0IDAuCisgKi8KK2V4dGVybiB2b2lkIF9zZXRfYml0X2JlKGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIHApOworZXh0ZXJuIHZvaWQgX2NsZWFyX2JpdF9iZShpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBwKTsKK2V4dGVybiB2b2lkIF9jaGFuZ2VfYml0X2JlKGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIHApOworZXh0ZXJuIGludCBfdGVzdF9hbmRfc2V0X2JpdF9iZShpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBwKTsKK2V4dGVybiBpbnQgX3Rlc3RfYW5kX2NsZWFyX2JpdF9iZShpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBwKTsKK2V4dGVybiBpbnQgX3Rlc3RfYW5kX2NoYW5nZV9iaXRfYmUoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogcCk7CitleHRlcm4gaW50IF9maW5kX2ZpcnN0X3plcm9fYml0X2JlKGNvbnN0IHZvaWQgKiBwLCB1bnNpZ25lZCBzaXplKTsKK2V4dGVybiBpbnQgX2ZpbmRfbmV4dF96ZXJvX2JpdF9iZShjb25zdCB2b2lkICogcCwgaW50IHNpemUsIGludCBvZmZzZXQpOworZXh0ZXJuIGludCBfZmluZF9maXJzdF9iaXRfYmUoY29uc3QgdW5zaWduZWQgbG9uZyAqcCwgdW5zaWduZWQgc2l6ZSk7CitleHRlcm4gaW50IF9maW5kX25leHRfYml0X2JlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnAsIGludCBzaXplLCBpbnQgb2Zmc2V0KTsKKworLyoKKyAqIFRoZSBfXyogZm9ybSBvZiBiaXRvcHMgYXJlIG5vbi1hdG9taWMgYW5kIG1heSBiZSByZW9yZGVyZWQuCisgKi8KKyNkZWZpbmUJQVRPTUlDX0JJVE9QX0xFKG5hbWUsbnIscCkJCVwKKwkoX19idWlsdGluX2NvbnN0YW50X3AobnIpID8JCVwKKwkgX19fX2F0b21pY18jI25hbWUobnIsIHApIDoJCVwKKwkgXyMjbmFtZSMjX2xlKG5yLHApKQorCisjZGVmaW5lCUFUT01JQ19CSVRPUF9CRShuYW1lLG5yLHApCQlcCisJKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSA/CQlcCisJIF9fX19hdG9taWNfIyNuYW1lKG5yLCBwKSA6CQlcCisJIF8jI25hbWUjI19iZShucixwKSkKKworI2RlZmluZSBOT05BVE9NSUNfQklUT1AobmFtZSxucixwKQkJXAorCShfX19fbm9uYXRvbWljXyMjbmFtZShuciwgcCkpCisKKyNpZm5kZWYgX19BUk1FQl9fCisvKgorICogVGhlc2UgYXJlIHRoZSBsaXR0bGUgZW5kaWFuLCBhdG9taWMgZGVmaW5pdGlvbnMuCisgKi8KKyNkZWZpbmUgc2V0X2JpdChucixwKQkJCUFUT01JQ19CSVRPUF9MRShzZXRfYml0LG5yLHApCisjZGVmaW5lIGNsZWFyX2JpdChucixwKQkJCUFUT01JQ19CSVRPUF9MRShjbGVhcl9iaXQsbnIscCkKKyNkZWZpbmUgY2hhbmdlX2JpdChucixwKQkJQVRPTUlDX0JJVE9QX0xFKGNoYW5nZV9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfc2V0X2JpdChucixwKQkJQVRPTUlDX0JJVE9QX0xFKHRlc3RfYW5kX3NldF9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfY2xlYXJfYml0KG5yLHApCUFUT01JQ19CSVRPUF9MRSh0ZXN0X2FuZF9jbGVhcl9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfY2hhbmdlX2JpdChucixwKQlBVE9NSUNfQklUT1BfTEUodGVzdF9hbmRfY2hhbmdlX2JpdCxucixwKQorI2RlZmluZSB0ZXN0X2JpdChucixwKQkJCV9fdGVzdF9iaXQobnIscCkKKyNkZWZpbmUgZmluZF9maXJzdF96ZXJvX2JpdChwLHN6KQlfZmluZF9maXJzdF96ZXJvX2JpdF9sZShwLHN6KQorI2RlZmluZSBmaW5kX25leHRfemVyb19iaXQocCxzeixvZmYpCV9maW5kX25leHRfemVyb19iaXRfbGUocCxzeixvZmYpCisjZGVmaW5lIGZpbmRfZmlyc3RfYml0KHAsc3opCQlfZmluZF9maXJzdF9iaXRfbGUocCxzeikKKyNkZWZpbmUgZmluZF9uZXh0X2JpdChwLHN6LG9mZikJCV9maW5kX25leHRfYml0X2xlKHAsc3osb2ZmKQorCisjZGVmaW5lIFdPUkRfQklUT0ZGX1RPX0xFKHgpCQkoKHgpKQorCisjZWxzZQorCisvKgorICogVGhlc2UgYXJlIHRoZSBiaWcgZW5kaWFuLCBhdG9taWMgZGVmaW5pdGlvbnMuCisgKi8KKyNkZWZpbmUgc2V0X2JpdChucixwKQkJCUFUT01JQ19CSVRPUF9CRShzZXRfYml0LG5yLHApCisjZGVmaW5lIGNsZWFyX2JpdChucixwKQkJCUFUT01JQ19CSVRPUF9CRShjbGVhcl9iaXQsbnIscCkKKyNkZWZpbmUgY2hhbmdlX2JpdChucixwKQkJQVRPTUlDX0JJVE9QX0JFKGNoYW5nZV9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfc2V0X2JpdChucixwKQkJQVRPTUlDX0JJVE9QX0JFKHRlc3RfYW5kX3NldF9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfY2xlYXJfYml0KG5yLHApCUFUT01JQ19CSVRPUF9CRSh0ZXN0X2FuZF9jbGVhcl9iaXQsbnIscCkKKyNkZWZpbmUgdGVzdF9hbmRfY2hhbmdlX2JpdChucixwKQlBVE9NSUNfQklUT1BfQkUodGVzdF9hbmRfY2hhbmdlX2JpdCxucixwKQorI2RlZmluZSB0ZXN0X2JpdChucixwKQkJCV9fdGVzdF9iaXQobnIscCkKKyNkZWZpbmUgZmluZF9maXJzdF96ZXJvX2JpdChwLHN6KQlfZmluZF9maXJzdF96ZXJvX2JpdF9iZShwLHN6KQorI2RlZmluZSBmaW5kX25leHRfemVyb19iaXQocCxzeixvZmYpCV9maW5kX25leHRfemVyb19iaXRfYmUocCxzeixvZmYpCisjZGVmaW5lIGZpbmRfZmlyc3RfYml0KHAsc3opCQlfZmluZF9maXJzdF9iaXRfYmUocCxzeikKKyNkZWZpbmUgZmluZF9uZXh0X2JpdChwLHN6LG9mZikJCV9maW5kX25leHRfYml0X2JlKHAsc3osb2ZmKQorCisjZGVmaW5lIFdPUkRfQklUT0ZGX1RPX0xFKHgpCQkoKHgpIF4gMHgxOCkKKworI2VuZGlmCisKKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPCA1CisKKy8qCisgKiBmZnogPSBGaW5kIEZpcnN0IFplcm8gaW4gd29yZC4gVW5kZWZpbmVkIGlmIG5vIHplcm8gZXhpc3RzLAorICogc28gY29kZSBzaG91bGQgY2hlY2sgYWdhaW5zdCB+MFVMIGZpcnN0Li4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCit7CisJaW50IGs7CisKKwl3b3JkID0gfndvcmQ7CisJayA9IDMxOworCWlmICh3b3JkICYgMHgwMDAwZmZmZikgeyBrIC09IDE2OyB3b3JkIDw8PSAxNjsgfQorCWlmICh3b3JkICYgMHgwMGZmMDAwMCkgeyBrIC09IDg7ICB3b3JkIDw8PSA4OyAgfQorCWlmICh3b3JkICYgMHgwZjAwMDAwMCkgeyBrIC09IDQ7ICB3b3JkIDw8PSA0OyAgfQorCWlmICh3b3JkICYgMHgzMDAwMDAwMCkgeyBrIC09IDI7ICB3b3JkIDw8PSAyOyAgfQorCWlmICh3b3JkICYgMHg0MDAwMDAwMCkgeyBrIC09IDE7IH0KKyAgICAgICAgcmV0dXJuIGs7Cit9CisKKy8qCisgKiBmZnogPSBGaW5kIEZpcnN0IFplcm8gaW4gd29yZC4gVW5kZWZpbmVkIGlmIG5vIHplcm8gZXhpc3RzLAorICogc28gY29kZSBzaG91bGQgY2hlY2sgYWdhaW5zdCB+MFVMIGZpcnN0Li4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgd29yZCkKK3sKKwlpbnQgazsKKworCWsgPSAzMTsKKwlpZiAod29yZCAmIDB4MDAwMGZmZmYpIHsgayAtPSAxNjsgd29yZCA8PD0gMTY7IH0KKwlpZiAod29yZCAmIDB4MDBmZjAwMDApIHsgayAtPSA4OyAgd29yZCA8PD0gODsgIH0KKwlpZiAod29yZCAmIDB4MGYwMDAwMDApIHsgayAtPSA0OyAgd29yZCA8PD0gNDsgIH0KKwlpZiAod29yZCAmIDB4MzAwMDAwMDApIHsgayAtPSAyOyAgd29yZCA8PD0gMjsgIH0KKwlpZiAod29yZCAmIDB4NDAwMDAwMDApIHsgayAtPSAxOyB9CisgICAgICAgIHJldHVybiBrOworfQorCisvKgorICogZmxzOiBmaW5kIGxhc3QgYml0IHNldC4KKyAqLworCisjZGVmaW5lIGZscyh4KSBnZW5lcmljX2Zscyh4KQorCisvKgorICogZmZzOiBmaW5kIGZpcnN0IGJpdCBzZXQuIFRoaXMgaXMgZGVmaW5lZCB0aGUgc2FtZSB3YXkgYXMKKyAqIHRoZSBsaWJjIGFuZCBjb21waWxlciBidWlsdGluIGZmcyByb3V0aW5lcywgdGhlcmVmb3JlCisgKiBkaWZmZXJzIGluIHNwaXJpdCBmcm9tIHRoZSBhYm92ZSBmZnogKG1hbiBmZnMpLgorICovCisKKyNkZWZpbmUgZmZzKHgpIGdlbmVyaWNfZmZzKHgpCisKKyNlbHNlCisKKy8qCisgKiBPbiBBUk12NSBhbmQgYWJvdmUgdGhvc2UgZnVuY3Rpb25zIGNhbiBiZSBpbXBsZW1lbnRlZCBhcm91bmQKKyAqIHRoZSBjbHogaW5zdHJ1Y3Rpb24gZm9yIG11Y2ggYmV0dGVyIGNvZGUgZWZmaWNpZW5jeS4KKyAqLworCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2VuZXJpY19mbHMoaW50IHgpOworI2RlZmluZSBmbHMoeCkgXAorCSggX19idWlsdGluX2NvbnN0YW50X3AoeCkgPyBnZW5lcmljX2Zscyh4KSA6IFwKKwkgICh7IGludCBfX3I7IGFzbSgiY2x6XHQlMCwgJTEiIDogIj1yIihfX3IpIDogInIiKHgpIDogImNjIik7IDMyLV9fcjsgfSkgKQorI2RlZmluZSBmZnMoeCkgKHsgdW5zaWduZWQgbG9uZyBfX3QgPSAoeCk7IGZscyhfX3QgJiAtX190KTsgfSkKKyNkZWZpbmUgX19mZnMoeCkgKGZmcyh4KSAtIDEpCisjZGVmaW5lIGZmeih4KSBfX2Zmcyggfih4KSApCisKKyNlbmRpZgorCisvKgorICogRmluZCBmaXJzdCBiaXQgc2V0IGluIGEgMTY4LWJpdCBiaXRtYXAsIHdoZXJlIHRoZSBmaXJzdAorICogMTI4IGJpdHMgYXJlIHVubGlrZWx5IHRvIGJlIHNldC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgc2NoZWRfZmluZF9maXJzdF9iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYikKK3sKKwl1bnNpZ25lZCBsb25nIHY7CisJdW5zaWduZWQgaW50IG9mZjsKKworCWZvciAob2ZmID0gMDsgdiA9IGJbb2ZmXSwgb2ZmIDwgNDsgb2ZmKyspIHsKKwkJaWYgKHVubGlrZWx5KHYpKQorCQkJYnJlYWs7CisJfQorCXJldHVybiBfX2Zmcyh2KSArIG9mZiAqIDMyOworfQorCisvKgorICogaHdlaWdodE46IHJldHVybnMgdGhlIGhhbW1pbmcgd2VpZ2h0IChpLmUuIHRoZSBudW1iZXIKKyAqIG9mIGJpdHMgc2V0KSBvZiBhIE4tYml0IHdvcmQKKyAqLworCisjZGVmaW5lIGh3ZWlnaHQzMih4KSBnZW5lcmljX2h3ZWlnaHQzMih4KQorI2RlZmluZSBod2VpZ2h0MTYoeCkgZ2VuZXJpY19od2VpZ2h0MTYoeCkKKyNkZWZpbmUgaHdlaWdodDgoeCkgZ2VuZXJpY19od2VpZ2h0OCh4KQorCisvKgorICogRXh0MiBpcyBkZWZpbmVkIHRvIHVzZSBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXJpbmcuCisgKiBUaGVzZSBkbyBub3QgbmVlZCB0byBiZSBhdG9taWMuCisgKi8KKyNkZWZpbmUgZXh0Ml9zZXRfYml0KG5yLHApCQkJXAorCQlfX3Rlc3RfYW5kX3NldF9iaXQoV09SRF9CSVRPRkZfVE9fTEUobnIpLCAodW5zaWduZWQgbG9uZyAqKShwKSkKKyNkZWZpbmUgZXh0Ml9zZXRfYml0X2F0b21pYyhsb2NrLG5yLHApICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB0ZXN0X2FuZF9zZXRfYml0KFdPUkRfQklUT0ZGX1RPX0xFKG5yKSwgKHVuc2lnbmVkIGxvbmcgKikocCkpCisjZGVmaW5lIGV4dDJfY2xlYXJfYml0KG5yLHApCQkJXAorCQlfX3Rlc3RfYW5kX2NsZWFyX2JpdChXT1JEX0JJVE9GRl9UT19MRShuciksICh1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBleHQyX2NsZWFyX2JpdF9hdG9taWMobG9jayxucixwKSAgICAgICAgXAorICAgICAgICAgICAgICAgIHRlc3RfYW5kX2NsZWFyX2JpdChXT1JEX0JJVE9GRl9UT19MRShuciksICh1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBleHQyX3Rlc3RfYml0KG5yLHApCQkJXAorCQlfX3Rlc3RfYml0KFdPUkRfQklUT0ZGX1RPX0xFKG5yKSwgKHVuc2lnbmVkIGxvbmcgKikocCkpCisjZGVmaW5lIGV4dDJfZmluZF9maXJzdF96ZXJvX2JpdChwLHN6KQkJXAorCQlfZmluZF9maXJzdF96ZXJvX2JpdF9sZShwLHN6KQorI2RlZmluZSBleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdChwLHN6LG9mZikJXAorCQlfZmluZF9uZXh0X3plcm9fYml0X2xlKHAsc3osb2ZmKQorCisvKgorICogTWluaXggaXMgZGVmaW5lZCB0byB1c2UgbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyaW5nLgorICogVGhlc2UgZG8gbm90IG5lZWQgdG8gYmUgYXRvbWljLgorICovCisjZGVmaW5lIG1pbml4X3NldF9iaXQobnIscCkJCQlcCisJCV9fc2V0X2JpdChXT1JEX0JJVE9GRl9UT19MRShuciksICh1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBtaW5peF90ZXN0X2JpdChucixwKQkJCVwKKwkJX190ZXN0X2JpdChXT1JEX0JJVE9GRl9UT19MRShuciksICh1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBtaW5peF90ZXN0X2FuZF9zZXRfYml0KG5yLHApCQlcCisJCV9fdGVzdF9hbmRfc2V0X2JpdChXT1JEX0JJVE9GRl9UT19MRShuciksICh1bnNpZ25lZCBsb25nICopKHApKQorI2RlZmluZSBtaW5peF90ZXN0X2FuZF9jbGVhcl9iaXQobnIscCkJCVwKKwkJX190ZXN0X2FuZF9jbGVhcl9iaXQoV09SRF9CSVRPRkZfVE9fTEUobnIpLCAodW5zaWduZWQgbG9uZyAqKShwKSkKKyNkZWZpbmUgbWluaXhfZmluZF9maXJzdF96ZXJvX2JpdChwLHN6KQkJXAorCQlfZmluZF9maXJzdF96ZXJvX2JpdF9sZShwLHN6KQorCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworCisjZW5kaWYgLyogX0FSTV9CSVRPUFNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2J1Zy5oIGIvaW5jbHVkZS9hc20tYXJtL2J1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTFiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYnVnLmgKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBfQVNNQVJNX0JVR19ICisjZGVmaW5lIF9BU01BUk1fQlVHX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisjaWZkZWYgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UKK2V4dGVybiB2b2xhdGlsZSB2b2lkIF9fYnVnKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCB2b2lkICpkYXRhKTsKKworLyogZ2l2ZSBmaWxlL2xpbmUgaW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgQlVHKCkJCV9fYnVnKF9fRklMRV9fLCBfX0xJTkVfXywgTlVMTCkKKworI2Vsc2UKKworLyogdGhpcyBqdXN0IGNhdXNlcyBhbiBvb3BzICovCisjZGVmaW5lIEJVRygpCQkoKihpbnQgKikwID0gMCkKKworI2VuZGlmCisKKyNkZWZpbmUgSEFWRV9BUkNIX0JVRworI2luY2x1ZGUgPGFzbS1nZW5lcmljL2J1Zy5oPgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9idWdzLmggYi9pbmNsdWRlL2FzbS1hcm0vYnVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjODBlYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYnVncy5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2J1Z3MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9fQVNNX0JVR1NfSAorI2RlZmluZSBfX0FTTV9CVUdTX0gKKworZXh0ZXJuIHZvaWQgY2hlY2tfd3JpdGVidWZmZXJfYnVncyh2b2lkKTsKKworI2RlZmluZSBjaGVja19idWdzKCkgY2hlY2tfd3JpdGVidWZmZXJfYnVncygpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2J5dGVvcmRlci5oIGIvaW5jbHVkZS9hc20tYXJtL2J5dGVvcmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDhhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVyLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVyLmgKKyAqCisgKiBBUk0gRW5kaWFuLW5lc3MuICBJbiBsaXR0bGUgZW5kaWFuIG1vZGUsIHRoZSBkYXRhIGJ1cyBpcyBjb25uZWN0ZWQgc3VjaAorICogdGhhdCBieXRlIGFjY2Vzc2VzIGFwcGVhciBhczoKKyAqICAwID0gZDAuLi5kNywgMSA9IGQ4Li4uZDE1LCAyID0gZDE2Li4uZDIzLCAzID0gZDI0Li4uZDMxCisgKiBhbmQgd29yZCBhY2Nlc3NlcyAoZGF0YSBvciBpbnN0cnVjdGlvbikgYXBwZWFyIGFzOgorICogIGQwLi4uZDMxCisgKgorICogV2hlbiBpbiBiaWcgZW5kaWFuIG1vZGUsIGJ5dGUgYWNjZXNzZXMgYXBwZWFyIGFzOgorICogIDAgPSBkMjQuLi5kMzEsIDEgPSBkMTYuLi5kMjMsIDIgPSBkOC4uLmQxNSwgMyA9IGQwLi4uZDcKKyAqIGFuZCB3b3JkIGFjY2Vzc2VzIChkYXRhIG9yIGluc3RydWN0aW9uKSBhcHBlYXIgYXM6CisgKiAgZDAuLi5kMzEKKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fQllURU9SREVSX0gKKyNkZWZpbmUgX19BU01fQVJNX0JZVEVPUkRFUl9ICisKKworI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCisjaWYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKSB8fCBkZWZpbmVkKF9fS0VSTkVMX18pCisjICBkZWZpbmUgX19CWVRFT1JERVJfSEFTX1U2NF9fCisjICBkZWZpbmUgX19TV0FCXzY0X1RIUlVfMzJfXworI2VuZGlmCisKKyNpZmRlZiBfX0FSTUVCX18KKyNpbmNsdWRlIDxsaW51eC9ieXRlb3JkZXIvYmlnX2VuZGlhbi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxsaW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oPgorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vY2FjaGUuaCBiL2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMTYxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vY2FjaGUuaApAQCAtMCwwICsxLDE1IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9jYWNoZS5oCisgKi8KKyNpZm5kZWYgX19BU01BUk1fQ0FDSEVfSAorI2RlZmluZSBfX0FTTUFSTV9DQUNIRV9ICisKKyNkZWZpbmUgTDFfQ0FDSEVfU0hJRlQJCTUKKyNkZWZpbmUgTDFfQ0FDSEVfQllURVMJCSgxIDw8IEwxX0NBQ0hFX1NISUZUKQorCisvKgorICogbGFyZ2VzdCBMMSB3aGljaCB0aGlzIGFyY2ggc3VwcG9ydHMKKyAqLworI2RlZmluZSBMMV9DQUNIRV9TSElGVF9NQVgJNQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9jYWNoZWZsdXNoLmggYi9pbmNsdWRlL2FzbS1hcm0vY2FjaGVmbHVzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmZlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vY2FjaGVmbHVzaC5oCkBAIC0wLDAgKzEsMzg3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9jYWNoZWZsdXNoLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfQVNNQVJNX0NBQ0hFRkxVU0hfSAorI2RlZmluZSBfQVNNQVJNX0NBQ0hFRkxVU0hfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorCisjaW5jbHVkZSA8YXNtL21tYW4uaD4KKyNpbmNsdWRlIDxhc20vZ2x1ZS5oPgorCisvKgorICoJQ2FjaGUgTW9kZWwKKyAqCT09PT09PT09PT09CisgKi8KKyN1bmRlZiBfQ0FDSEUKKyN1bmRlZiBNVUxUSV9DQUNIRQorCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX0FSTTYxMCkgfHwgZGVmaW5lZChDT05GSUdfQ1BVX0FSTTcxMCkKKyMgaWZkZWYgX0NBQ0hFCisjICBkZWZpbmUgTVVMVElfQ0FDSEUgMQorIyBlbHNlCisjICBkZWZpbmUgX0NBQ0hFIHYzCisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0NQVV9BUk03MjBUKQorIyBpZmRlZiBfQ0FDSEUKKyMgIGRlZmluZSBNVUxUSV9DQUNIRSAxCisjIGVsc2UKKyMgIGRlZmluZSBfQ0FDSEUgdjQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX0FSTTkyMFQpIHx8IGRlZmluZWQoQ09ORklHX0NQVV9BUk05MjJUKSB8fCBcCisgICAgZGVmaW5lZChDT05GSUdfQ1BVX0FSTTkyNVQpIHx8IGRlZmluZWQoQ09ORklHX0NQVV9BUk0xMDIwKQorIyBkZWZpbmUgTVVMVElfQ0FDSEUgMQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTkZJR19DUFVfQVJNOTI2VCkKKyMgaWZkZWYgX0NBQ0hFCisjICBkZWZpbmUgTVVMVElfQ0FDSEUgMQorIyBlbHNlCisjICBkZWZpbmUgX0NBQ0hFIGFybTkyNgorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTkZJR19DUFVfU0ExMTApIHx8IGRlZmluZWQoQ09ORklHX0NQVV9TQTExMDApCisjIGlmZGVmIF9DQUNIRQorIyAgZGVmaW5lIE1VTFRJX0NBQ0hFIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9DQUNIRSB2NHdiCisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0NQVV9YU0NBTEUpCisjIGlmZGVmIF9DQUNIRQorIyAgZGVmaW5lIE1VTFRJX0NBQ0hFIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9DQUNIRSB4c2NhbGUKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX1Y2KQorLy8jIGlmZGVmIF9DQUNIRQorIyAgZGVmaW5lIE1VTFRJX0NBQ0hFIDEKKy8vIyBlbHNlCisvLyMgIGRlZmluZSBfQ0FDSEUgdjYKKy8vIyBlbmRpZgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChfQ0FDSEUpICYmICFkZWZpbmVkKE1VTFRJX0NBQ0hFKQorI2Vycm9yIFVua25vd24gY2FjaGUgbWFpbnRhaW5lbmNlIG1vZGVsCisjZW5kaWYKKworLyoKKyAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHBhZ2UgcG9pbnRlZCB0byBieSBhIHB0ZQorICogaXMgZGlydHkgYW5kIHJlcXVpcmVzIGNsZWFuaW5nIGJlZm9yZSByZXR1cm5pbmcgaXQgdG8gdGhlIHVzZXIuCisgKi8KKyNkZWZpbmUgUEdfZGNhY2hlX2RpcnR5IFBHX2FyY2hfMQorCisvKgorICoJTU0gQ2FjaGUgTWFuYWdlbWVudAorICoJPT09PT09PT09PT09PT09PT09PQorICoKKyAqCVRoZSBhcmNoL2FybS9tbS9jYWNoZS0qLlMgYW5kIGFyY2gvYXJtL21tL3Byb2MtKi5TIGZpbGVzCisgKglpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcy4KKyAqCisgKglTdGFydCBhZGRyZXNzZXMgYXJlIGluY2x1c2l2ZSBhbmQgZW5kIGFkZHJlc3NlcyBhcmUgZXhjbHVzaXZlOworICoJc3RhcnQgYWRkcmVzc2VzIHNob3VsZCBiZSByb3VuZGVkIGRvd24sIGVuZCBhZGRyZXNzZXMgdXAuCisgKgorICoJU2VlIERvY3VtZW50YXRpb24vY2FjaGV0bGIudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICoJUGxlYXNlIG5vdGUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UsIGFuZCB0aGUgcmVxdWlyZWQKKyAqCWVmZmVjdHMgYXJlIGNhY2hlLXR5cGUgKFZJVlQvVklQVC9QSVBUKSBzcGVjaWZpYy4KKyAqCisgKglmbHVzaF9jYWNoZV9rZXJuX2FsbCgpCisgKgorICoJCVVuY29uZGl0aW9uYWxseSBjbGVhbiBhbmQgaW52YWxpZGF0ZSB0aGUgZW50aXJlIGNhY2hlLgorICoKKyAqCWZsdXNoX2NhY2hlX3VzZXJfbW0obW0pCisgKgorICoJCUNsZWFuIGFuZCBpbnZhbGlkYXRlIGFsbCB1c2VyIHNwYWNlIGNhY2hlIGVudHJpZXMKKyAqCQliZWZvcmUgYSBjaGFuZ2Ugb2YgcGFnZSB0YWJsZXMuCisgKgorICoJZmx1c2hfY2FjaGVfdXNlcl9yYW5nZShzdGFydCwgZW5kLCBmbGFncykKKyAqCisgKgkJQ2xlYW4gYW5kIGludmFsaWRhdGUgYSByYW5nZSBvZiBjYWNoZSBlbnRyaWVzIGluIHRoZQorICoJCXNwZWNpZmllZCBhZGRyZXNzIHNwYWNlIGJlZm9yZSBhIGNoYW5nZSBvZiBwYWdlIHRhYmxlcy4KKyAqCQktIHN0YXJ0IC0gdXNlciBzdGFydCBhZGRyZXNzIChpbmNsdXNpdmUsIHBhZ2UgYWxpZ25lZCkKKyAqCQktIGVuZCAgIC0gdXNlciBlbmQgYWRkcmVzcyAgIChleGNsdXNpdmUsIHBhZ2UgYWxpZ25lZCkKKyAqCQktIGZsYWdzIC0gdm1hLT52bV9mbGFncyBmaWVsZAorICoKKyAqCWNvaGVyZW50X2tlcm5fcmFuZ2Uoc3RhcnQsIGVuZCkKKyAqCisgKgkJRW5zdXJlIGNvaGVyZW5jeSBiZXR3ZWVuIHRoZSBJY2FjaGUgYW5kIHRoZSBEY2FjaGUgaW4gdGhlCisgKgkJcmVnaW9uIGRlc2NyaWJlZCBieSBzdGFydCwgZW5kLiAgSWYgeW91IGhhdmUgbm9uLXNub29waW5nCisgKgkJSGFydmFyZCBjYWNoZXMsIHlvdSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoJCS0gc3RhcnQgIC0gdmlydHVhbCBzdGFydCBhZGRyZXNzCisgKgkJLSBlbmQgICAgLSB2aXJ0dWFsIGVuZCBhZGRyZXNzCisgKgorICoJRE1BIENhY2hlIENvaGVyZW5jeQorICoJPT09PT09PT09PT09PT09PT09PQorICoKKyAqCWRtYV9pbnZfcmFuZ2Uoc3RhcnQsIGVuZCkKKyAqCisgKgkJSW52YWxpZGF0ZSAoZGlzY2FyZCkgdGhlIHNwZWNpZmllZCB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2UuCisgKgkJTWF5IG5vdCB3cml0ZSBiYWNrIGFueSBlbnRyaWVzLiAgSWYgJ3N0YXJ0JyBvciAnZW5kJworICoJCWFyZSBub3QgY2FjaGUgbGluZSBhbGlnbmVkLCB0aG9zZSBsaW5lcyBtdXN0IGJlIHdyaXR0ZW4KKyAqCQliYWNrLgorICoJCS0gc3RhcnQgIC0gdmlydHVhbCBzdGFydCBhZGRyZXNzCisgKgkJLSBlbmQgICAgLSB2aXJ0dWFsIGVuZCBhZGRyZXNzCisgKgorICoJZG1hX2NsZWFuX3JhbmdlKHN0YXJ0LCBlbmQpCisgKgorICoJCUNsZWFuICh3cml0ZSBiYWNrKSB0aGUgc3BlY2lmaWVkIHZpcnR1YWwgYWRkcmVzcyByYW5nZS4KKyAqCQktIHN0YXJ0ICAtIHZpcnR1YWwgc3RhcnQgYWRkcmVzcworICoJCS0gZW5kICAgIC0gdmlydHVhbCBlbmQgYWRkcmVzcworICoKKyAqCWRtYV9mbHVzaF9yYW5nZShzdGFydCwgZW5kKQorICoKKyAqCQlDbGVhbiBhbmQgaW52YWxpZGF0ZSB0aGUgc3BlY2lmaWVkIHZpcnR1YWwgYWRkcmVzcyByYW5nZS4KKyAqCQktIHN0YXJ0ICAtIHZpcnR1YWwgc3RhcnQgYWRkcmVzcworICoJCS0gZW5kICAgIC0gdmlydHVhbCBlbmQgYWRkcmVzcworICovCisKK3N0cnVjdCBjcHVfY2FjaGVfZm5zIHsKKwl2b2lkICgqZmx1c2hfa2Vybl9hbGwpKHZvaWQpOworCXZvaWQgKCpmbHVzaF91c2VyX2FsbCkodm9pZCk7CisJdm9pZCAoKmZsdXNoX3VzZXJfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGludCk7CisKKwl2b2lkICgqY29oZXJlbnRfa2Vybl9yYW5nZSkodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CisJdm9pZCAoKmNvaGVyZW50X3VzZXJfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCXZvaWQgKCpmbHVzaF9rZXJuX2RjYWNoZV9wYWdlKSh2b2lkICopOworCisJdm9pZCAoKmRtYV9pbnZfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCXZvaWQgKCpkbWFfY2xlYW5fcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCXZvaWQgKCpkbWFfZmx1c2hfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworfTsKKworLyoKKyAqIFNlbGVjdCB0aGUgY2FsbGluZyBtZXRob2QKKyAqLworI2lmZGVmIE1VTFRJX0NBQ0hFCisKK2V4dGVybiBzdHJ1Y3QgY3B1X2NhY2hlX2ZucyBjcHVfY2FjaGU7CisKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX2tlcm5fYWxsCQljcHVfY2FjaGUuZmx1c2hfa2Vybl9hbGwKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX3VzZXJfYWxsCQljcHVfY2FjaGUuZmx1c2hfdXNlcl9hbGwKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX3VzZXJfcmFuZ2UJCWNwdV9jYWNoZS5mbHVzaF91c2VyX3JhbmdlCisjZGVmaW5lIF9fY3B1Y19jb2hlcmVudF9rZXJuX3JhbmdlCWNwdV9jYWNoZS5jb2hlcmVudF9rZXJuX3JhbmdlCisjZGVmaW5lIF9fY3B1Y19jb2hlcmVudF91c2VyX3JhbmdlCWNwdV9jYWNoZS5jb2hlcmVudF91c2VyX3JhbmdlCisjZGVmaW5lIF9fY3B1Y19mbHVzaF9kY2FjaGVfcGFnZQljcHVfY2FjaGUuZmx1c2hfa2Vybl9kY2FjaGVfcGFnZQorCisvKgorICogVGhlc2UgYXJlIHByaXZhdGUgdG8gdGhlIGRtYS1tYXBwaW5nIEFQSS4gIERvIG5vdCB1c2UgZGlyZWN0bHkuCisgKiBUaGVpciBzb2xlIHB1cnBvc2UgaXMgdG8gZW5zdXJlIHRoYXQgZGF0YSBoZWxkIGluIHRoZSBjYWNoZQorICogaXMgdmlzaWJsZSB0byBETUEsIG9yIGRhdGEgd3JpdHRlbiBieSBETUEgdG8gc3lzdGVtIG1lbW9yeSBpcworICogdmlzaWJsZSB0byB0aGUgQ1BVLgorICovCisjZGVmaW5lIGRtYWNfaW52X3JhbmdlCQkJY3B1X2NhY2hlLmRtYV9pbnZfcmFuZ2UKKyNkZWZpbmUgZG1hY19jbGVhbl9yYW5nZQkJY3B1X2NhY2hlLmRtYV9jbGVhbl9yYW5nZQorI2RlZmluZSBkbWFjX2ZsdXNoX3JhbmdlCQljcHVfY2FjaGUuZG1hX2ZsdXNoX3JhbmdlCisKKyNlbHNlCisKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX2tlcm5fYWxsCQlfX2dsdWUoX0NBQ0hFLF9mbHVzaF9rZXJuX2NhY2hlX2FsbCkKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX3VzZXJfYWxsCQlfX2dsdWUoX0NBQ0hFLF9mbHVzaF91c2VyX2NhY2hlX2FsbCkKKyNkZWZpbmUgX19jcHVjX2ZsdXNoX3VzZXJfcmFuZ2UJCV9fZ2x1ZShfQ0FDSEUsX2ZsdXNoX3VzZXJfY2FjaGVfcmFuZ2UpCisjZGVmaW5lIF9fY3B1Y19jb2hlcmVudF9rZXJuX3JhbmdlCV9fZ2x1ZShfQ0FDSEUsX2NvaGVyZW50X2tlcm5fcmFuZ2UpCisjZGVmaW5lIF9fY3B1Y19jb2hlcmVudF91c2VyX3JhbmdlCV9fZ2x1ZShfQ0FDSEUsX2NvaGVyZW50X3VzZXJfcmFuZ2UpCisjZGVmaW5lIF9fY3B1Y19mbHVzaF9kY2FjaGVfcGFnZQlfX2dsdWUoX0NBQ0hFLF9mbHVzaF9rZXJuX2RjYWNoZV9wYWdlKQorCitleHRlcm4gdm9pZCBfX2NwdWNfZmx1c2hfa2Vybl9hbGwodm9pZCk7CitleHRlcm4gdm9pZCBfX2NwdWNfZmx1c2hfdXNlcl9hbGwodm9pZCk7CitleHRlcm4gdm9pZCBfX2NwdWNfZmx1c2hfdXNlcl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQpOworZXh0ZXJuIHZvaWQgX19jcHVjX2NvaGVyZW50X2tlcm5fcmFuZ2UodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CitleHRlcm4gdm9pZCBfX2NwdWNfY29oZXJlbnRfdXNlcl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKK2V4dGVybiB2b2lkIF9fY3B1Y19mbHVzaF9kY2FjaGVfcGFnZSh2b2lkICopOworCisvKgorICogVGhlc2UgYXJlIHByaXZhdGUgdG8gdGhlIGRtYS1tYXBwaW5nIEFQSS4gIERvIG5vdCB1c2UgZGlyZWN0bHkuCisgKiBUaGVpciBzb2xlIHB1cnBvc2UgaXMgdG8gZW5zdXJlIHRoYXQgZGF0YSBoZWxkIGluIHRoZSBjYWNoZQorICogaXMgdmlzaWJsZSB0byBETUEsIG9yIGRhdGEgd3JpdHRlbiBieSBETUEgdG8gc3lzdGVtIG1lbW9yeSBpcworICogdmlzaWJsZSB0byB0aGUgQ1BVLgorICovCisjZGVmaW5lIGRtYWNfaW52X3JhbmdlCQkJX19nbHVlKF9DQUNIRSxfZG1hX2ludl9yYW5nZSkKKyNkZWZpbmUgZG1hY19jbGVhbl9yYW5nZQkJX19nbHVlKF9DQUNIRSxfZG1hX2NsZWFuX3JhbmdlKQorI2RlZmluZSBkbWFjX2ZsdXNoX3JhbmdlCQlfX2dsdWUoX0NBQ0hFLF9kbWFfZmx1c2hfcmFuZ2UpCisKK2V4dGVybiB2b2lkIGRtYWNfaW52X3JhbmdlKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworZXh0ZXJuIHZvaWQgZG1hY19jbGVhbl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKK2V4dGVybiB2b2lkIGRtYWNfZmx1c2hfcmFuZ2UodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CisKKyNlbmRpZgorCisvKgorICogZmx1c2hfY2FjaGVfdm1hcCgpIGlzIHVzZWQgd2hlbiBjcmVhdGluZyBtYXBwaW5ncyAoZWcsIHZpYSB2bWFwLAorICogdm1hbGxvYywgaW9yZW1hcCBldGMpIGluIGtlcm5lbCBzcGFjZSBmb3IgcGFnZXMuICBTaW5jZSB0aGUKKyAqIGRpcmVjdC1tYXBwaW5ncyBvZiB0aGVzZSBwYWdlcyBtYXkgY29udGFpbiBjYWNoZWQgZGF0YSwgd2UgbmVlZAorICogdG8gZG8gYSBmdWxsIGNhY2hlIGZsdXNoIHRvIGVuc3VyZSB0aGF0IHdyaXRlYmFja3MgZG9uJ3QgY29ycnVwdAorICogZGF0YSBwbGFjZWQgaW50byB0aGVzZSBwYWdlcyB2aWEgdGhlIG5ldyBtYXBwaW5ncy4KKyAqLworI2RlZmluZSBmbHVzaF9jYWNoZV92bWFwKHN0YXJ0LCBlbmQpCQlmbHVzaF9jYWNoZV9hbGwoKQorI2RlZmluZSBmbHVzaF9jYWNoZV92dW5tYXAoc3RhcnQsIGVuZCkJCWZsdXNoX2NhY2hlX2FsbCgpCisKKy8qCisgKiBDb3B5IHVzZXIgZGF0YSBmcm9tL3RvIGEgcGFnZSB3aGljaCBpcyBtYXBwZWQgaW50byBhIGRpZmZlcmVudAorICogcHJvY2Vzc2VzIGFkZHJlc3Mgc3BhY2UuICBSZWFsbHksIHdlIHdhbnQgdG8gYWxsb3cgb3VyICJ1c2VyCisgKiBzcGFjZSIgbW9kZWwgdG8gaGFuZGxlIHRoaXMuCisgKi8KKyNkZWZpbmUgY29weV90b191c2VyX3BhZ2Uodm1hLCBwYWdlLCB2YWRkciwgZHN0LCBzcmMsIGxlbikgXAorCWRvIHsJCQkJCQkJXAorCQlmbHVzaF9jYWNoZV9wYWdlKHZtYSwgdmFkZHIsIHBhZ2VfdG9fcGZuKHBhZ2UpKTtcCisJCW1lbWNweShkc3QsIHNyYywgbGVuKTsJCQkJXAorCQlmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTsJCQlcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X2Zyb21fdXNlcl9wYWdlKHZtYSwgcGFnZSwgdmFkZHIsIGRzdCwgc3JjLCBsZW4pIFwKKwlkbyB7CQkJCQkJCVwKKwkJZmx1c2hfY2FjaGVfcGFnZSh2bWEsIHZhZGRyLCBwYWdlX3RvX3BmbihwYWdlKSk7XAorCQltZW1jcHkoZHN0LCBzcmMsIGxlbik7CQkJCVwKKwl9IHdoaWxlICgwKQorCisvKgorICogQ29udmVydCBjYWxscyB0byBvdXIgY2FsbGluZyBjb252ZW50aW9uLgorICovCisjZGVmaW5lIGZsdXNoX2NhY2hlX2FsbCgpCQlfX2NwdWNfZmx1c2hfa2Vybl9hbGwoKQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfY2FjaGVfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pCit7CisJaWYgKGNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCksIG1tLT5jcHVfdm1fbWFzaykpCisJCV9fY3B1Y19mbHVzaF91c2VyX2FsbCgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2ZsdXNoX2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlpZiAoY3B1X2lzc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSwgdm1hLT52bV9tbS0+Y3B1X3ZtX21hc2spKQorCQlfX2NwdWNfZmx1c2hfdXNlcl9yYW5nZShzdGFydCAmIFBBR0VfTUFTSywgUEFHRV9BTElHTihlbmQpLAorCQkJCQl2bWEtPnZtX2ZsYWdzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitmbHVzaF9jYWNoZV9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHVzZXJfYWRkciwgdW5zaWduZWQgbG9uZyBwZm4pCit7CisJaWYgKGNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCksIHZtYS0+dm1fbW0tPmNwdV92bV9tYXNrKSkgeworCQl1bnNpZ25lZCBsb25nIGFkZHIgPSB1c2VyX2FkZHIgJiBQQUdFX01BU0s7CisJCV9fY3B1Y19mbHVzaF91c2VyX3JhbmdlKGFkZHIsIGFkZHIgKyBQQUdFX1NJWkUsIHZtYS0+dm1fZmxhZ3MpOworCX0KK30KKworLyoKKyAqIGZsdXNoX2NhY2hlX3VzZXJfcmFuZ2UgaXMgdXNlZCB3aGVuIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlCisgKiBIYXJ2YXJkIGNhY2hlcyBhcmUgc3luY2hyb25pc2VkIGZvciB0aGUgdXNlciBzcGFjZSBhZGRyZXNzIHJhbmdlLgorICogVGhpcyBpcyB1c2VkIGZvciB0aGUgQVJNIHByaXZhdGUgc3lzX2NhY2hlZmx1c2ggc3lzdGVtIGNhbGwuCisgKi8KKyNkZWZpbmUgZmx1c2hfY2FjaGVfdXNlcl9yYW5nZSh2bWEsc3RhcnQsZW5kKSBcCisJX19jcHVjX2NvaGVyZW50X3VzZXJfcmFuZ2UoKHN0YXJ0KSAmIFBBR0VfTUFTSywgUEFHRV9BTElHTihlbmQpKQorCisvKgorICogUGVyZm9ybSBuZWNlc3NhcnkgY2FjaGUgb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCBkYXRhIHByZXZpb3VzbHkKKyAqIHN0b3JlZCB3aXRoaW4gdGhpcyByYW5nZSBvZiBhZGRyZXNzZXMgY2FuIGJlIGV4ZWN1dGVkIGJ5IHRoZSBDUFUuCisgKi8KKyNkZWZpbmUgZmx1c2hfaWNhY2hlX3JhbmdlKHMsZSkJCV9fY3B1Y19jb2hlcmVudF9rZXJuX3JhbmdlKHMsZSkKKworLyoKKyAqIFBlcmZvcm0gbmVjZXNzYXJ5IGNhY2hlIG9wZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhlIFRMQiB3aWxsCisgKiBzZWUgZGF0YSB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgYXJlYS4KKyAqLworI2RlZmluZSBjbGVhbl9kY2FjaGVfYXJlYShzdGFydCxzaXplKQljcHVfZGNhY2hlX2NsZWFuX2FyZWEoc3RhcnQsIHNpemUpCisKKy8qCisgKiBmbHVzaF9kY2FjaGVfcGFnZSBpcyB1c2VkIHdoZW4gdGhlIGtlcm5lbCBoYXMgd3JpdHRlbiB0byB0aGUgcGFnZQorICogY2FjaGUgcGFnZSBhdCB2aXJ0dWFsIGFkZHJlc3MgcGFnZS0+dmlydHVhbC4KKyAqCisgKiBJZiB0aGlzIHBhZ2UgaXNuJ3QgbWFwcGVkIChpZSwgcGFnZV9tYXBwaW5nID09IE5VTEwpLCBvciBpdCBtaWdodAorICogaGF2ZSB1c2Vyc3BhY2UgbWFwcGluZ3MsIHRoZW4gd2UgX211c3RfIGFsd2F5cyBjbGVhbiArIGludmFsaWRhdGUKKyAqIHRoZSBkY2FjaGUgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtlcm5lbCBtYXBwaW5nLgorICoKKyAqIE90aGVyd2lzZSB3ZSBjYW4gZGVmZXIgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHRoZSBjYWNoZSB3aGVuIHdlIGFyZQorICogYWJvdXQgdG8gY2hhbmdlIHRvIHVzZXIgc3BhY2UuICBUaGlzIGlzIHRoZSBzYW1lIG1ldGhvZCBhcyB1c2VkIG9uIFNQQVJDNjQuCisgKiBTZWUgdXBkYXRlX21tdV9jYWNoZSBmb3IgdGhlIHVzZXIgc3BhY2UgcGFydC4KKyAqLworZXh0ZXJuIHZvaWQgZmx1c2hfZGNhY2hlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CisKKyNkZWZpbmUgZmx1c2hfZGNhY2hlX21tYXBfbG9jayhtYXBwaW5nKSBcCisJd3JpdGVfbG9ja19pcnEoJihtYXBwaW5nKS0+dHJlZV9sb2NrKQorI2RlZmluZSBmbHVzaF9kY2FjaGVfbW1hcF91bmxvY2sobWFwcGluZykgXAorCXdyaXRlX3VubG9ja19pcnEoJihtYXBwaW5nKS0+dHJlZV9sb2NrKQorCisjZGVmaW5lIGZsdXNoX2ljYWNoZV91c2VyX3JhbmdlKHZtYSxwYWdlLGFkZHIsbGVuKSBcCisJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSkKKworLyoKKyAqIFdlIGRvbid0IGFwcGVhciB0byBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUuICBJbiBmYWN0LCBpZiB3ZSBkaWQsIHdlJ2QKKyAqIGR1cGxpY2F0ZSBjYWNoZSBmbHVzaGluZyBlbHNld2hlcmUgcGVyZm9ybWVkIGJ5IGZsdXNoX2RjYWNoZV9wYWdlKCkuCisgKi8KKyNkZWZpbmUgZmx1c2hfaWNhY2hlX3BhZ2Uodm1hLHBhZ2UpCWRvIHsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBfX2NhY2hlaWRfcHJlc2VudCh2YWwpCQkodmFsICE9IHJlYWRfY3B1aWQoQ1BVSURfSUQpKQorI2RlZmluZSBfX2NhY2hlaWRfdml2dCh2YWwpCQkoKHZhbCAmICgxNSA8PCAyNSkpICE9ICgxNCA8PCAyNSkpCisjZGVmaW5lIF9fY2FjaGVpZF92aXB0KHZhbCkJCSgodmFsICYgKDE1IDw8IDI1KSkgPT0gKDE0IDw8IDI1KSkKKyNkZWZpbmUgX19jYWNoZWlkX3ZpcHRfbm9uYWxpYXNpbmcodmFsKQkoKHZhbCAmICgxNSA8PCAyNSB8IDEgPDwgMjMpKSA9PSAoMTQgPDwgMjUpKQorI2RlZmluZSBfX2NhY2hlaWRfdmlwdF9hbGlhc2luZyh2YWwpCSgodmFsICYgKDE1IDw8IDI1IHwgMSA8PCAyMykpID09ICgxNCA8PCAyNSB8IDEgPDwgMjMpKQorCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX0NBQ0hFX1ZJVlQpICYmICFkZWZpbmVkKENPTkZJR19DUFVfQ0FDSEVfVklQVCkKKworI2RlZmluZSBjYWNoZV9pc192aXZ0KCkJCQkxCisjZGVmaW5lIGNhY2hlX2lzX3ZpcHQoKQkJCTAKKyNkZWZpbmUgY2FjaGVfaXNfdmlwdF9ub25hbGlhc2luZygpCTAKKyNkZWZpbmUgY2FjaGVfaXNfdmlwdF9hbGlhc2luZygpCTAKKworI2VsaWYgZGVmaW5lZChDT05GSUdfQ1BVX0NBQ0hFX1ZJUFQpCisKKyNkZWZpbmUgY2FjaGVfaXNfdml2dCgpCQkJMAorI2RlZmluZSBjYWNoZV9pc192aXB0KCkJCQkxCisjZGVmaW5lIGNhY2hlX2lzX3ZpcHRfbm9uYWxpYXNpbmcoKQkJCQkJXAorCSh7CQkJCQkJCQlcCisJCXVuc2lnbmVkIGludCBfX3ZhbCA9IHJlYWRfY3B1aWQoQ1BVSURfQ0FDSEVUWVBFKTsJXAorCQlfX2NhY2hlaWRfdmlwdF9ub25hbGlhc2luZyhfX3ZhbCk7CQkJXAorCX0pCisKKyNkZWZpbmUgY2FjaGVfaXNfdmlwdF9hbGlhc2luZygpCQkJCQlcCisJKHsJCQkJCQkJCVwKKwkJdW5zaWduZWQgaW50IF9fdmFsID0gcmVhZF9jcHVpZChDUFVJRF9DQUNIRVRZUEUpOwlcCisJCV9fY2FjaGVpZF92aXB0X2FsaWFzaW5nKF9fdmFsKTsJCQkJXAorCX0pCisKKyNlbHNlCisKKyNkZWZpbmUgY2FjaGVfaXNfdml2dCgpCQkJCQkJCVwKKwkoewkJCQkJCQkJXAorCQl1bnNpZ25lZCBpbnQgX192YWwgPSByZWFkX2NwdWlkKENQVUlEX0NBQ0hFVFlQRSk7CVwKKwkJKCFfX2NhY2hlaWRfcHJlc2VudChfX3ZhbCkpIHx8IF9fY2FjaGVpZF92aXZ0KF9fdmFsKTsJXAorCX0pCisJCQorI2RlZmluZSBjYWNoZV9pc192aXB0KCkJCQkJCQkJXAorCSh7CQkJCQkJCQlcCisJCXVuc2lnbmVkIGludCBfX3ZhbCA9IHJlYWRfY3B1aWQoQ1BVSURfQ0FDSEVUWVBFKTsJXAorCQlfX2NhY2hlaWRfcHJlc2VudChfX3ZhbCkgJiYgX19jYWNoZWlkX3ZpcHQoX192YWwpOwlcCisJfSkKKworI2RlZmluZSBjYWNoZV9pc192aXB0X25vbmFsaWFzaW5nKCkJCQkJCVwKKwkoewkJCQkJCQkJXAorCQl1bnNpZ25lZCBpbnQgX192YWwgPSByZWFkX2NwdWlkKENQVUlEX0NBQ0hFVFlQRSk7CVwKKwkJX19jYWNoZWlkX3ByZXNlbnQoX192YWwpICYmCQkJCVwKKwkJIF9fY2FjaGVpZF92aXB0X25vbmFsaWFzaW5nKF9fdmFsKTsJCQlcCisJfSkKKworI2RlZmluZSBjYWNoZV9pc192aXB0X2FsaWFzaW5nKCkJCQkJCVwKKwkoewkJCQkJCQkJXAorCQl1bnNpZ25lZCBpbnQgX192YWwgPSByZWFkX2NwdWlkKENQVUlEX0NBQ0hFVFlQRSk7CVwKKwkJX19jYWNoZWlkX3ByZXNlbnQoX192YWwpICYmCQkJCVwKKwkJIF9fY2FjaGVpZF92aXB0X2FsaWFzaW5nKF9fdmFsKTsJCQlcCisJfSkKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2NoZWNrc3VtLmggYi9pbmNsdWRlL2FzbS1hcm0vY2hlY2tzdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDI1NmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2NoZWNrc3VtLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2NoZWNrc3VtLmgKKyAqCisgKiBJUCBjaGVja3N1bSByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoQykgT3JpZ2luYWwgYXV0aG9ycyBvZiAuLi9hc20taTM4Ni9jaGVja3N1bS5oCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSBSdXNzZWxsIEtpbmcKKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fQ0hFQ0tTVU1fSAorI2RlZmluZSBfX0FTTV9BUk1fQ0hFQ0tTVU1fSAorCisjaW5jbHVkZSA8bGludXgvaW42Lmg+CisKKy8qCisgKiBjb21wdXRlcyB0aGUgY2hlY2tzdW0gb2YgYSBtZW1vcnkgYmxvY2sgYXQgYnVmZiwgbGVuZ3RoIGxlbiwKKyAqIGFuZCBhZGRzIGluICJzdW0iICgzMi1iaXQpCisgKgorICogcmV0dXJucyBhIDMyLWJpdCBudW1iZXIgc3VpdGFibGUgZm9yIGZlZWRpbmcgaW50byBpdHNlbGYKKyAqIG9yIGNzdW1fdGNwdWRwX21hZ2ljCisgKgorICogdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIGV2ZW4gbGVuZ3RocywgZXhjZXB0CisgKiBmb3IgdGhlIGxhc3QgZnJhZ21lbnQsIHdoaWNoIG1heSBiZSBvZGQKKyAqCisgKiBpdCdzIGJlc3QgdG8gaGF2ZSBidWZmIGFsaWduZWQgb24gYSAzMi1iaXQgYm91bmRhcnkKKyAqLwordW5zaWduZWQgaW50IGNzdW1fcGFydGlhbChjb25zdCB1bnNpZ25lZCBjaGFyICogYnVmZiwgaW50IGxlbiwgdW5zaWduZWQgaW50IHN1bSk7CisKKy8qCisgKiB0aGUgc2FtZSBhcyBjc3VtX3BhcnRpYWwsIGJ1dCBjb3BpZXMgZnJvbSBzcmMgd2hpbGUgaXQKKyAqIGNoZWNrc3VtcywgYW5kIGhhbmRsZXMgdXNlci1zcGFjZSBwb2ludGVyIGV4Y2VwdGlvbnMgY29ycmVjdGx5LCB3aGVuIG5lZWRlZC4KKyAqCisgKiBoZXJlIGV2ZW4gbW9yZSBpbXBvcnRhbnQgdG8gYWxpZ24gc3JjIGFuZCBkc3Qgb24gYSAzMi1iaXQgKG9yIGV2ZW4KKyAqIGJldHRlciA2NC1iaXQpIGJvdW5kYXJ5CisgKi8KKwordW5zaWduZWQgaW50Citjc3VtX3BhcnRpYWxfY29weV9ub2NoZWNrKGNvbnN0IGNoYXIgKnNyYywgY2hhciAqZHN0LCBpbnQgbGVuLCBpbnQgc3VtKTsKKwordW5zaWduZWQgaW50Citjc3VtX3BhcnRpYWxfY29weV9mcm9tX3VzZXIoY29uc3QgY2hhciBfX3VzZXIgKnNyYywgY2hhciAqZHN0LCBpbnQgbGVuLCBpbnQgc3VtLCBpbnQgKmVycl9wdHIpOworCisvKgorICogVGhpcyBpcyB0aGUgb2xkIChhbmQgdW5zYWZlKSB3YXkgb2YgZG9pbmcgY2hlY2tzdW1zLCBhIHdhcm5pbmcgbWVzc2FnZSB3aWxsCisgKiBiZSBwcmludGVkIGlmIGl0IGlzIHVzZWQgYW5kIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCisgKgorICogdGhpcyBmdW5jdGlvbnMgc2hvdWxkIGdvIGF3YXkgYWZ0ZXIgc29tZSB0aW1lLgorICovCisjZGVmaW5lIGNzdW1fcGFydGlhbF9jb3B5KHNyYyxkc3QsbGVuLHN1bSkJY3N1bV9wYXJ0aWFsX2NvcHlfbm9jaGVjayhzcmMsZHN0LGxlbixzdW0pCisKKy8qCisgKglUaGlzIGlzIGEgdmVyc2lvbiBvZiBpcF9jb21wdXRlX2NzdW0oKSBvcHRpbWl6ZWQgZm9yIElQIGhlYWRlcnMsCisgKgl3aGljaCBhbHdheXMgY2hlY2tzdW0gb24gNCBvY3RldCBib3VuZGFyaWVzLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0CitpcF9mYXN0X2NzdW0odW5zaWduZWQgY2hhciAqIGlwaCwgdW5zaWduZWQgaW50IGlobCkKK3sKKwl1bnNpZ25lZCBpbnQgc3VtLCB0bXAxOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJImxkcgklMCwgWyUxXSwgIzQJCUAgaXBfZmFzdF9jc3VtCQlcblwKKwlsZHIJJTMsIFslMV0sICM0CQkJCQlcblwKKwlzdWIJJTIsICUyLCAjNQkJCQkJXG5cCisJYWRkcwklMCwgJTAsICUzCQkJCQlcblwKKwlsZHIJJTMsIFslMV0sICM0CQkJCQlcblwKKwlhZGNzCSUwLCAlMCwgJTMJCQkJCVxuXAorCWxkcgklMywgWyUxXSwgIzQJCQkJCVxuXAorMToJYWRjcwklMCwgJTAsICUzCQkJCQlcblwKKwlsZHIJJTMsIFslMV0sICM0CQkJCQlcblwKKwl0c3QJJTIsICMxNQkJCUAgZG8gdGhpcyBjYXJlZnVsbHkJXG5cCisJc3VibmUJJTIsICUyLCAjMQkJQCB3aXRob3V0IGRlc3Ryb3lpbmcJXG5cCisJYm5lCTFiCQkJQCB0aGUgY2FycnkgZmxhZwlcblwKKwlhZGNzCSUwLCAlMCwgJTMJCQkJCVxuXAorCWFkYwklMCwgJTAsICMwCQkJCQlcblwKKwlhZGRzCSUwLCAlMCwgJTAsIGxzbCAjMTYJCQkJXG5cCisJYWRkY3MJJTAsICUwLCAjMHgxMDAwMAkJCQlcblwKKwltdm4JJTAsICUwCQkJCQkJXG5cCisJbW92CSUwLCAlMCwgbHNyICMxNiIKKwk6ICI9ciIgKHN1bSksICI9ciIgKGlwaCksICI9ciIgKGlobCksICI9ciIgKHRtcDEpCisJOiAiMSIgKGlwaCksICIyIiAoaWhsKQorCTogImNjIik7CisJcmV0dXJuIHN1bTsKK30KKworLyoKKyAqIAlGb2xkIGEgcGFydGlhbCBjaGVja3N1bSB3aXRob3V0IGFkZGluZyBwc2V1ZG8gaGVhZGVycworICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAorY3N1bV9mb2xkKHVuc2lnbmVkIGludCBzdW0pCit7CisJX19hc21fXygKKwkiYWRkcwklMCwgJTEsICUxLCBsc2wgIzE2CUAgY3N1bV9mb2xkCQlcblwKKwlhZGRjcwklMCwgJTAsICMweDEwMDAwIgorCTogIj1yIiAoc3VtKQorCTogInIiIChzdW0pCisJOiAiY2MiKTsKKwlyZXR1cm4gKH5zdW0pID4+IDE2OworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAorY3N1bV90Y3B1ZHBfbm9mb2xkKHVuc2lnbmVkIGxvbmcgc2FkZHIsIHVuc2lnbmVkIGxvbmcgZGFkZHIsIHVuc2lnbmVkIHNob3J0IGxlbiwKKwkJICAgdW5zaWduZWQgaW50IHByb3RvLCB1bnNpZ25lZCBpbnQgc3VtKQoreworCV9fYXNtX18oCisJImFkZHMJJTAsICUxLCAlMgkJQCBjc3VtX3RjcHVkcF9ub2ZvbGQJXG5cCisJYWRjcwklMCwgJTAsICUzCQkJCQlcblwKKwlhZGNzCSUwLCAlMCwgJTQJCQkJCVxuXAorCWFkY3MJJTAsICUwLCAlNQkJCQkJXG5cCisJYWRjCSUwLCAlMCwgIzAiCisJOiAiPSZyIihzdW0pCisJOiAiciIgKHN1bSksICJyIiAoZGFkZHIpLCAiciIgKHNhZGRyKSwgInIiIChudG9ocyhsZW4pKSwgIklyIiAobnRvaHMocHJvdG8pKQorCTogImNjIik7CisJcmV0dXJuIHN1bTsKK30JCisvKgorICogY29tcHV0ZXMgdGhlIGNoZWNrc3VtIG9mIHRoZSBUQ1AvVURQIHBzZXVkby1oZWFkZXIKKyAqIHJldHVybnMgYSAxNi1iaXQgY2hlY2tzdW0sIGFscmVhZHkgY29tcGxlbWVudGVkCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaW50Citjc3VtX3RjcHVkcF9tYWdpYyh1bnNpZ25lZCBsb25nIHNhZGRyLCB1bnNpZ25lZCBsb25nIGRhZGRyLCB1bnNpZ25lZCBzaG9ydCBsZW4sCisJCSAgdW5zaWduZWQgaW50IHByb3RvLCB1bnNpZ25lZCBpbnQgc3VtKQoreworCV9fYXNtX18oCisJImFkZHMJJTAsICUxLCAlMgkJQCBjc3VtX3RjcHVkcF9tYWdpYwlcblwKKwlhZGNzCSUwLCAlMCwgJTMJCQkJCVxuXAorCWFkY3MJJTAsICUwLCAlNAkJCQkJXG5cCisJYWRjcwklMCwgJTAsICU1CQkJCQlcblwKKwlhZGMJJTAsICUwLCAjMAkJCQkJXG5cCisJYWRkcwklMCwgJTAsICUwLCBsc2wgIzE2CQkJCVxuXAorCWFkZGNzCSUwLCAlMCwgIzB4MTAwMDAJCQkJXG5cCisJbXZuCSUwLCAlMCIKKwk6ICI9JnIiKHN1bSkKKwk6ICJyIiAoc3VtKSwgInIiIChkYWRkciksICJyIiAoc2FkZHIpLCAiciIgKG50b2hzKGxlbikpLCAiSXIiIChudG9ocyhwcm90bykpCisJOiAiY2MiKTsKKwlyZXR1cm4gc3VtID4+IDE2OworfQorCisKKy8qCisgKiB0aGlzIHJvdXRpbmUgaXMgdXNlZCBmb3IgbWlzY2VsbGFuZW91cyBJUC1saWtlIGNoZWNrc3VtcywgbWFpbmx5CisgKiBpbiBpY21wLmMKKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydAoraXBfY29tcHV0ZV9jc3VtKHVuc2lnbmVkIGNoYXIgKiBidWZmLCBpbnQgbGVuKQoreworCXJldHVybiBjc3VtX2ZvbGQoY3N1bV9wYXJ0aWFsKGJ1ZmYsIGxlbiwgMCkpOworfQorCisjZGVmaW5lIF9IQVZFX0FSQ0hfSVBWNl9DU1VNCitleHRlcm4gdW5zaWduZWQgbG9uZworX19jc3VtX2lwdjZfbWFnaWMoc3RydWN0IGluNl9hZGRyICpzYWRkciwgc3RydWN0IGluNl9hZGRyICpkYWRkciwgX191MzIgbGVuLAorCQlfX3UzMiBwcm90bywgdW5zaWduZWQgaW50IHN1bSk7CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaW50Citjc3VtX2lwdjZfbWFnaWMoc3RydWN0IGluNl9hZGRyICpzYWRkciwgc3RydWN0IGluNl9hZGRyICpkYWRkciwgX191MzIgbGVuLAorCQl1bnNpZ25lZCBzaG9ydCBwcm90bywgdW5zaWduZWQgaW50IHN1bSkKK3sKKwlyZXR1cm4gY3N1bV9mb2xkKF9fY3N1bV9pcHY2X21hZ2ljKHNhZGRyLCBkYWRkciwgaHRvbmwobGVuKSwKKwkJCQkJICAgaHRvbmwocHJvdG8pLCBzdW0pKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2NwdS1tdWx0aTMyLmggYi9pbmNsdWRlL2FzbS1hcm0vY3B1LW11bHRpMzIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQ4MDIyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2NwdS1tdWx0aTMyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vY3B1LW11bHRpMzIuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisKK3N0cnVjdCBtbV9zdHJ1Y3Q7CisKKy8qCisgKiBEb24ndCBjaGFuZ2UgdGhpcyBzdHJ1Y3R1cmUgLSBBU00gY29kZQorICogcmVsaWVzIG9uIGl0LgorICovCitleHRlcm4gc3RydWN0IHByb2Nlc3NvciB7CisJLyogTUlTQworCSAqIGdldCBkYXRhIGFib3J0IGFkZHJlc3MvZmxhZ3MKKwkgKi8KKwl2b2lkICgqX2RhdGFfYWJvcnQpKHVuc2lnbmVkIGxvbmcgcGMpOworCS8qCisJICogU2V0IHVwIGFueSBwcm9jZXNzb3Igc3BlY2lmaWNzCisJICovCisJdm9pZCAoKl9wcm9jX2luaXQpKHZvaWQpOworCS8qCisJICogRGlzYWJsZSBhbnkgcHJvY2Vzc29yIHNwZWNpZmljcworCSAqLworCXZvaWQgKCpfcHJvY19maW4pKHZvaWQpOworCS8qCisJICogU3BlY2lhbCBzdHVmZiBmb3IgYSByZXNldAorCSAqLworCXZvbGF0aWxlIHZvaWQgKCpyZXNldCkodW5zaWduZWQgbG9uZyBhZGRyKTsKKwkvKgorCSAqIElkbGUgdGhlIHByb2Nlc3NvcgorCSAqLworCWludCAoKl9kb19pZGxlKSh2b2lkKTsKKwkvKgorCSAqIFByb2Nlc3NvciBhcmNoaXRlY3R1cmUgc3BlY2lmaWMKKwkgKi8KKwkvKgorCSAqIGNsZWFuIGEgdmlydHVhbCBhZGRyZXNzIHJhbmdlIGZyb20gdGhlCisJICogRC1jYWNoZSB3aXRob3V0IGZsdXNoaW5nIHRoZSBjYWNoZS4KKwkgKi8KKwl2b2lkICgqZGNhY2hlX2NsZWFuX2FyZWEpKHZvaWQgKmFkZHIsIGludCBzaXplKTsKKworCS8qCisJICogU2V0IHRoZSBwYWdlIHRhYmxlCisJICovCisJdm9pZCAoKnN3aXRjaF9tbSkodW5zaWduZWQgbG9uZyBwZ2RfcGh5cywgc3RydWN0IG1tX3N0cnVjdCAqbW0pOworCS8qCisJICogU2V0IGEgUFRFCisJICovCisJdm9pZCAoKnNldF9wdGUpKHB0ZV90ICpwdGVwLCBwdGVfdCBwdGUpOworfSBwcm9jZXNzb3I7CisKKyNkZWZpbmUgY3B1X3Byb2NfaW5pdCgpCQkJcHJvY2Vzc29yLl9wcm9jX2luaXQoKQorI2RlZmluZSBjcHVfcHJvY19maW4oKQkJCXByb2Nlc3Nvci5fcHJvY19maW4oKQorI2RlZmluZSBjcHVfcmVzZXQoYWRkcikJCQlwcm9jZXNzb3IucmVzZXQoYWRkcikKKyNkZWZpbmUgY3B1X2RvX2lkbGUoKQkJCXByb2Nlc3Nvci5fZG9faWRsZSgpCisjZGVmaW5lIGNwdV9kY2FjaGVfY2xlYW5fYXJlYShhZGRyLHN6KQlwcm9jZXNzb3IuZGNhY2hlX2NsZWFuX2FyZWEoYWRkcixzeikKKyNkZWZpbmUgY3B1X3NldF9wdGUocHRlcCwgcHRlKQkJcHJvY2Vzc29yLnNldF9wdGUocHRlcCwgcHRlKQorI2RlZmluZSBjcHVfZG9fc3dpdGNoX21tKHBnZCxtbSkJcHJvY2Vzc29yLnN3aXRjaF9tbShwZ2QsbW0pCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vY3B1LXNpbmdsZS5oIGIvaW5jbHVkZS9hc20tYXJtL2NwdS1zaW5nbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWVjNWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2NwdS1zaW5nbGUuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9jcHUtc2luZ2xlLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKy8qCisgKiBTaW5nbGUgQ1BVCisgKi8KKyNpZmRlZiBfX1NURENfXworI2RlZmluZSBfX2NhdGlmeV9mbihuYW1lLHgpCW5hbWUjI3gKKyNlbHNlCisjZGVmaW5lIF9fY2F0aWZ5X2ZuKG5hbWUseCkJbmFtZS8qKi94CisjZW5kaWYKKyNkZWZpbmUgX19jcHVfZm4obmFtZSx4KQlfX2NhdGlmeV9mbihuYW1lLHgpCisKKy8qCisgKiBJZiB3ZSBhcmUgc3VwcG9ydGluZyBtdWx0aXBsZSBDUFVzLCB0aGVuIHdlIG11c3QgdXNlIGEgdGFibGUgb2YKKyAqIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciB0aGlzIGxvdC4gIE90aGVyd2lzZSwgd2UgY2FuIG9wdGltaXNlIHRoZQorICogdGFibGUgYXdheS4KKyAqLworI2RlZmluZSBjcHVfcHJvY19pbml0CQkJX19jcHVfZm4oQ1BVX05BTUUsX3Byb2NfaW5pdCkKKyNkZWZpbmUgY3B1X3Byb2NfZmluCQkJX19jcHVfZm4oQ1BVX05BTUUsX3Byb2NfZmluKQorI2RlZmluZSBjcHVfcmVzZXQJCQlfX2NwdV9mbihDUFVfTkFNRSxfcmVzZXQpCisjZGVmaW5lIGNwdV9kb19pZGxlCQkJX19jcHVfZm4oQ1BVX05BTUUsX2RvX2lkbGUpCisjZGVmaW5lIGNwdV9kY2FjaGVfY2xlYW5fYXJlYQkJX19jcHVfZm4oQ1BVX05BTUUsX2RjYWNoZV9jbGVhbl9hcmVhKQorI2RlZmluZSBjcHVfZG9fc3dpdGNoX21tCQlfX2NwdV9mbihDUFVfTkFNRSxfc3dpdGNoX21tKQorI2RlZmluZSBjcHVfc2V0X3B0ZQkJCV9fY3B1X2ZuKENQVV9OQU1FLF9zZXRfcHRlKQorCisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKworc3RydWN0IG1tX3N0cnVjdDsKKworLyogZGVjbGFyZSBhbGwgdGhlIGZ1bmN0aW9ucyBhcyBleHRlcm4gKi8KK2V4dGVybiB2b2lkIGNwdV9wcm9jX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBjcHVfcHJvY19maW4odm9pZCk7CitleHRlcm4gaW50IGNwdV9kb19pZGxlKHZvaWQpOworZXh0ZXJuIHZvaWQgY3B1X2RjYWNoZV9jbGVhbl9hcmVhKHZvaWQgKiwgaW50KTsKK2V4dGVybiB2b2lkIGNwdV9kb19zd2l0Y2hfbW0odW5zaWduZWQgbG9uZyBwZ2RfcGh5cywgc3RydWN0IG1tX3N0cnVjdCAqbW0pOworZXh0ZXJuIHZvaWQgY3B1X3NldF9wdGUocHRlX3QgKnB0ZXAsIHB0ZV90IHB0ZSk7CitleHRlcm4gdm9sYXRpbGUgdm9pZCBjcHVfcmVzZXQodW5zaWduZWQgbG9uZyBhZGRyKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9jcHUuaCBiL2luY2x1ZGUvYXNtLWFybS9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2JkZDQwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2NwdS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2NwdS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA1IEFSTSBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fQ1BVX0gKKyNkZWZpbmUgX19BU01fQVJNX0NQVV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KKworc3RydWN0IGNwdWluZm9fYXJtIHsKKwlzdHJ1Y3QgY3B1CWNwdTsKKyNpZmRlZiBDT05GSUdfU01QCisJdW5zaWduZWQgaW50CWxvb3BzX3Blcl9qaWZmeTsKKyNlbmRpZgorfTsKKworREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBjcHVpbmZvX2FybSwgY3B1X2RhdGEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9jcHV0aW1lLmggYi9pbmNsdWRlL2FzbS1hcm0vY3B1dGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhODAwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vY3B1dGltZS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfX0FSTV9DUFVUSU1FX0gKKyNkZWZpbmUgX19BUk1fQ1BVVElNRV9ICisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9jcHV0aW1lLmg+CisKKyNlbmRpZiAvKiBfX0FSTV9DUFVUSU1FX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmggYi9pbmNsdWRlL2FzbS1hcm0vY3VycmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDIxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vY3VycmVudC5oCkBAIC0wLDAgKzEsMTUgQEAKKyNpZm5kZWYgX0FTTUFSTV9DVVJSRU5UX0gKKyNkZWZpbmUgX0FTTUFSTV9DVVJSRU5UX0gKKworI2luY2x1ZGUgPGxpbnV4L3RocmVhZF9pbmZvLmg+CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpnZXRfY3VycmVudCh2b2lkKSBfX2F0dHJpYnV0ZV9jb25zdF9fOworCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2V0X2N1cnJlbnQodm9pZCkKK3sKKwlyZXR1cm4gY3VycmVudF90aHJlYWRfaW5mbygpLT50YXNrOworfQorCisjZGVmaW5lIGN1cnJlbnQgKGdldF9jdXJyZW50KCkpCisKKyNlbmRpZiAvKiBfQVNNQVJNX0NVUlJFTlRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2RlbGF5LmggYi9pbmNsdWRlL2FzbS1hcm0vZGVsYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzA0MzYwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2RlbGF5LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA0IFJ1c3NlbGwgS2luZworICoKKyAqIERlbGF5IHJvdXRpbmVzLCB1c2luZyBhIHByZS1jb21wdXRlZCAibG9vcHNfcGVyX3NlY29uZCIgdmFsdWUuCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0RFTEFZX0gKKyNkZWZpbmUgX19BU01fQVJNX0RFTEFZX0gKKworZXh0ZXJuIHZvaWQgX19kZWxheShpbnQgbG9vcHMpOworCisvKgorICogVGhpcyBmdW5jdGlvbiBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGV4aXN0OyBpZiB5b3Ugc2VlIHJlZmVyZW5jZXMgdG8KKyAqIGl0LCBpdCBtZWFucyB0aGF0IHlvdSdyZSBjYWxsaW5nIHVkZWxheSgpIHdpdGggYW4gb3V0IG9mIHJhbmdlIHZhbHVlLgorICoKKyAqIFdpdGggY3VycmVudGx5IGltcG9zZWQgbGltaXRzLCB0aGlzIG1lYW5zIHRoYXQgd2Ugc3VwcG9ydCBhIG1heCBkZWxheQorICogb2YgMjAwMHVzIGFuZCA2NzEgYm9nb21pcHMKKyAqLworZXh0ZXJuIHZvaWQgX19iYWRfdWRlbGF5KHZvaWQpOworCisvKgorICogZGl2aXNpb24gYnkgbXVsdGlwbGljYXRpb246IHlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0CisgKiBsb3NzIG9mIHByZWNpc2lvbi4KKyAqCisgKiBVc2Ugb25seSBmb3IgdmVyeSBzbWFsbCBkZWxheXMgKCA8IDEgbXNlYykuICBTaG91bGQgcHJvYmFibHkgdXNlIGEKKyAqIGxvb2t1cCB0YWJsZSwgcmVhbGx5LCBhcyB0aGUgbXVsdGlwbGljYXRpb25zIHRha2UgbXVjaCB0b28gbG9uZyB3aXRoCisgKiBzaG9ydCBkZWxheXMuICBUaGlzIGlzIGEgInJlYXNvbmFibGUiIGltcGxlbWVudGF0aW9uLCB0aG91Z2ggKGFuZCB0aGUKKyAqIGZpcnN0IGNvbnN0YW50IG11bHRpcGxpY2F0aW9ucyBnZXRzIG9wdGltaXplZCBhd2F5IGlmIHRoZSBkZWxheSBpcworICogYSBjb25zdGFudCkKKyAqLworZXh0ZXJuIHZvaWQgX191ZGVsYXkodW5zaWduZWQgbG9uZyB1c2Vjcyk7CitleHRlcm4gdm9pZCBfX2NvbnN0X3VkZWxheSh1bnNpZ25lZCBsb25nKTsKKworI2RlZmluZSBNQVhfVURFTEFZX01TIDIKKworI2RlZmluZSB1ZGVsYXkobikJCQkJCQlcCisJKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8JCQkJXAorCSAgKChuKSA+IChNQVhfVURFTEFZX01TICogMTAwMCkgPyBfX2JhZF91ZGVsYXkoKSA6CVwKKwkJCV9fY29uc3RfdWRlbGF5KChuKSAqIDB4NjhkYnVsKSkgOglcCisJICBfX3VkZWxheShuKSkKKworI2VuZGlmIC8qIGRlZmluZWQoX0FSTV9ERUxBWV9IKSAqLworCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vZGl2NjQuaCBiL2luY2x1ZGUvYXNtLWFybS9kaXY2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ODI2MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vZGl2NjQuaApAQCAtMCwwICsxLDQ4IEBACisjaWZuZGVmIF9fQVNNX0FSTV9ESVY2NAorI2RlZmluZSBfX0FTTV9BUk1fRElWNjQKKworI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworLyoKKyAqIFRoZSBzZW1hbnRpY3Mgb2YgZG9fZGl2KCkgYXJlOgorICoKKyAqIHVpbnQzMl90IGRvX2Rpdih1aW50NjRfdCAqbiwgdWludDMyX3QgYmFzZSkKKyAqIHsKKyAqIAl1aW50MzJfdCByZW1haW5kZXIgPSAqbiAlIGJhc2U7CisgKiAJKm4gPSAqbiAvIGJhc2U7CisgKiAJcmV0dXJuIHJlbWFpbmRlcjsKKyAqIH0KKyAqCisgKiBJbiBvdGhlciB3b3JkcywgYSA2NC1iaXQgZGl2aWRlbmQgd2l0aCBhIDMyLWJpdCBkaXZpc29yIHByb2R1Y2luZworICogYSA2NC1iaXQgcmVzdWx0IGFuZCBhIDMyLWJpdCByZW1haW5kZXIuICBUbyBhY2NvbXBsaXNoIHRoaXMgb3B0aW1hbGx5CisgKiB3ZSBjYWxsIGEgc3BlY2lhbCBfX2RvX2RpdjY0IGhlbHBlciB3aXRoIGNvbXBsZXRlbHkgbm9uIHN0YW5kYXJkCisgKiBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIGFyZ3VtZW50cyBhbmQgcmVzdWx0cyAoYmV3YXJlKS4KKyAqLworCisjaWZkZWYgX19BUk1FQl9fCisjZGVmaW5lIF9feGggInIwIgorI2RlZmluZSBfX3hsICJyMSIKKyNlbHNlCisjZGVmaW5lIF9feGwgInIwIgorI2RlZmluZSBfX3hoICJyMSIKKyNlbmRpZgorCisjZGVmaW5lIGRvX2RpdihuLGJhc2UpCQkJCQkJXAorKHsJCQkJCQkJCVwKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgX19iYXNlICAgICAgYXNtKCJyNCIpID0gYmFzZTsJXAorCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgbG9uZyBfX24gICBhc20oInIwIikgPSBuOwlcCisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzIGFzbSgicjIiKTsJCVwKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgX19yZW0gICAgICAgYXNtKF9feGgpOwkJXAorCWFzbSgJX19hc21lcSgiJTAiLCBfX3hoKQkJCQlcCisJCV9fYXNtZXEoIiUxIiwgInIyIikJCQkJXAorCQlfX2FzbWVxKCIlMiIsICJyMCIpCQkJCVwKKwkJX19hc21lcSgiJTMiLCAicjQiKQkJCQlcCisJCSJibAlfX2RvX2RpdjY0IgkJCQlcCisJCTogIj1yIiAoX19yZW0pLCAiPXIiIChfX3JlcykJCQlcCisJCTogInIiIChfX24pLCAiciIgKF9fYmFzZSkJCQlcCisJCTogImlwIiwgImxyIiwgImNjIik7CQkJCVwKKwluID0gX19yZXM7CQkJCQkJXAorCV9fcmVtOwkJCQkJCQlcCit9KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9kbWEtbWFwcGluZy5oIGIvaW5jbHVkZS9hc20tYXJtL2RtYS1tYXBwaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI1ZDAxNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9kbWEtbWFwcGluZy5oCkBAIC0wLDAgKzEsNDI2IEBACisjaWZuZGVmIEFTTUFSTV9ETUFfTUFQUElOR19ICisjZGVmaW5lIEFTTUFSTV9ETUFfTUFQUElOR19ICisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPiAvKiBuZWVkIHN0cnVjdCBwYWdlICovCisKKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKworLyoKKyAqIERNQS1jb25zaXN0ZW50IG1hcHBpbmcgZnVuY3Rpb25zLiAgVGhlc2UgYWxsb2NhdGUvZnJlZSBhIHJlZ2lvbiBvZgorICogdW5jYWNoZWQsIHVud3JpdGUtYnVmZmVyZWQgbWFwcGVkIG1lbW9yeSBzcGFjZSBmb3IgdXNlIHdpdGggRE1BCisgKiBkZXZpY2VzLiAgVGhpcyBpcyB0aGUgImdlbmVyaWMiIHZlcnNpb24uICBUaGUgUENJIHNwZWNpZmljIHZlcnNpb24KKyAqIGlzIGluIHBjaS5oCisgKi8KK2V4dGVybiB2b2lkIGNvbnNpc3RlbnRfc3luYyh2b2lkICprYWRkciwgc2l6ZV90IHNpemUsIGludCBydyk7CisKKy8qCisgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZGV2aWNlIERNQSBhZGRyZXNzIG1hc2sgY2FuIGJlIHN1cHBvcnRlZAorICogcHJvcGVybHkuICBGb3IgZXhhbXBsZSwgaWYgeW91ciBkZXZpY2UgY2FuIG9ubHkgZHJpdmUgdGhlIGxvdyAyNC1iaXRzCisgKiBkdXJpbmcgYnVzIG1hc3RlcmluZywgdGhlbiB5b3Ugd291bGQgcGFzcyAweDAwZmZmZmZmIGFzIHRoZSBtYXNrCisgKiB0byB0aGlzIGZ1bmN0aW9uLgorICovCitzdGF0aWMgaW5saW5lIGludCBkbWFfc3VwcG9ydGVkKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IG1hc2spCit7CisJcmV0dXJuIGRldi0+ZG1hX21hc2sgJiYgKmRldi0+ZG1hX21hc2sgIT0gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgZG1hX3NldF9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IGRtYV9tYXNrKQoreworCWlmICghZGV2LT5kbWFfbWFzayB8fCAhZG1hX3N1cHBvcnRlZChkZXYsIGRtYV9tYXNrKSkKKwkJcmV0dXJuIC1FSU87CisKKwkqZGV2LT5kbWFfbWFzayA9IGRtYV9tYXNrOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KHZvaWQpCit7CisJcmV0dXJuIDMyOworfQorCitzdGF0aWMgaW5saW5lIGludCBkbWFfaXNfY29uc2lzdGVudChkbWFfYWRkcl90IGhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIERNQSBlcnJvcnMgYXJlIGRlZmluZWQgYnkgYWxsLWJpdHMtc2V0IGluIHRoZSBETUEgYWRkcmVzcy4KKyAqLworc3RhdGljIGlubGluZSBpbnQgZG1hX21hcHBpbmdfZXJyb3IoZG1hX2FkZHJfdCBkbWFfYWRkcikKK3sKKwlyZXR1cm4gZG1hX2FkZHIgPT0gfjA7Cit9CisKKy8qKgorICogZG1hX2FsbG9jX2NvaGVyZW50IC0gYWxsb2NhdGUgY29uc2lzdGVudCBtZW1vcnkgZm9yIERNQQorICogQGRldjogdmFsaWQgc3RydWN0IGRldmljZSBwb2ludGVyLCBvciBOVUxMIGZvciBJU0EgYW5kIEVJU0EtbGlrZSBkZXZpY2VzCisgKiBAc2l6ZTogcmVxdWlyZWQgbWVtb3J5IHNpemUKKyAqIEBoYW5kbGU6IGJ1cy1zcGVjaWZpYyBETUEgYWRkcmVzcworICoKKyAqIEFsbG9jYXRlIHNvbWUgdW5jYWNoZWQsIHVuYnVmZmVyZWQgbWVtb3J5IGZvciBhIGRldmljZSBmb3IKKyAqIHBlcmZvcm1pbmcgRE1BLiAgVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgcGFnZXMsIGFuZCB3aWxsCisgKiByZXR1cm4gdGhlIENQVS12aWV3ZWQgYWRkcmVzcywgYW5kIHNldHMgQGhhbmRsZSB0byBiZSB0aGUKKyAqIGRldmljZS12aWV3ZWQgYWRkcmVzcy4KKyAqLworZXh0ZXJuIHZvaWQgKgorZG1hX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmhhbmRsZSwgaW50IGdmcCk7CisKKy8qKgorICogZG1hX2ZyZWVfY29oZXJlbnQgLSBmcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgZG1hX2FsbG9jX2NvaGVyZW50CisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIsIG9yIE5VTEwgZm9yIElTQSBhbmQgRUlTQS1saWtlIGRldmljZXMKKyAqIEBzaXplOiBzaXplIG9mIG1lbW9yeSBvcmlnaW5hbGx5IHJlcXVlc3RlZCBpbiBkbWFfYWxsb2NfY29oZXJlbnQKKyAqIEBjcHVfYWRkcjogQ1BVLXZpZXcgYWRkcmVzcyByZXR1cm5lZCBmcm9tIGRtYV9hbGxvY19jb2hlcmVudAorICogQGhhbmRsZTogZGV2aWNlLXZpZXcgYWRkcmVzcyByZXR1cm5lZCBmcm9tIGRtYV9hbGxvY19jb2hlcmVudAorICoKKyAqIEZyZWUgKGFuZCB1bm1hcCkgYSBETUEgYnVmZmVyIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJ5CisgKiBkbWFfYWxsb2NfY29oZXJlbnQoKS4KKyAqCisgKiBSZWZlcmVuY2VzIHRvIG1lbW9yeSBhbmQgbWFwcGluZ3MgYXNzb2NpYXRlZCB3aXRoIGNwdV9hZGRyL2hhbmRsZQorICogZHVyaW5nIGFuZCBhZnRlciB0aGlzIGNhbGwgZXhlY3V0aW5nIGFyZSBpbGxlZ2FsLgorICovCitleHRlcm4gdm9pZAorZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgdm9pZCAqY3B1X2FkZHIsCisJCSAgZG1hX2FkZHJfdCBoYW5kbGUpOworCisvKioKKyAqIGRtYV9tbWFwX2NvaGVyZW50IC0gbWFwIGEgY29oZXJlbnQgRE1BIGFsbG9jYXRpb24gaW50byB1c2VyIHNwYWNlCisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIsIG9yIE5VTEwgZm9yIElTQSBhbmQgRUlTQS1saWtlIGRldmljZXMKKyAqIEB2bWE6IHZtX2FyZWFfc3RydWN0IGRlc2NyaWJpbmcgcmVxdWVzdGVkIHVzZXIgbWFwcGluZworICogQGNwdV9hZGRyOiBrZXJuZWwgQ1BVLXZpZXcgYWRkcmVzcyByZXR1cm5lZCBmcm9tIGRtYV9hbGxvY19jb2hlcmVudAorICogQGhhbmRsZTogZGV2aWNlLXZpZXcgYWRkcmVzcyByZXR1cm5lZCBmcm9tIGRtYV9hbGxvY19jb2hlcmVudAorICogQHNpemU6IHNpemUgb2YgbWVtb3J5IG9yaWdpbmFsbHkgcmVxdWVzdGVkIGluIGRtYV9hbGxvY19jb2hlcmVudAorICoKKyAqIE1hcCBhIGNvaGVyZW50IERNQSBidWZmZXIgcHJldmlvdXNseSBhbGxvY2F0ZWQgYnkgZG1hX2FsbG9jX2NvaGVyZW50CisgKiBpbnRvIHVzZXIgc3BhY2UuICBUaGUgY29oZXJlbnQgRE1BIGJ1ZmZlciBtdXN0IG5vdCBiZSBmcmVlZCBieSB0aGUKKyAqIGRyaXZlciB1bnRpbCB0aGUgdXNlciBzcGFjZSBtYXBwaW5nIGhhcyBiZWVuIHJlbGVhc2VkLgorICovCitpbnQgZG1hX21tYXBfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJICAgICAgdm9pZCAqY3B1X2FkZHIsIGRtYV9hZGRyX3QgaGFuZGxlLCBzaXplX3Qgc2l6ZSk7CisKKworLyoqCisgKiBkbWFfYWxsb2Nfd3JpdGVjb21iaW5lIC0gYWxsb2NhdGUgd3JpdGVjb21iaW5pbmcgbWVtb3J5IGZvciBETUEKKyAqIEBkZXY6IHZhbGlkIHN0cnVjdCBkZXZpY2UgcG9pbnRlciwgb3IgTlVMTCBmb3IgSVNBIGFuZCBFSVNBLWxpa2UgZGV2aWNlcworICogQHNpemU6IHJlcXVpcmVkIG1lbW9yeSBzaXplCisgKiBAaGFuZGxlOiBidXMtc3BlY2lmaWMgRE1BIGFkZHJlc3MKKyAqCisgKiBBbGxvY2F0ZSBzb21lIHVuY2FjaGVkLCBidWZmZXJlZCBtZW1vcnkgZm9yIGEgZGV2aWNlIGZvcgorICogcGVyZm9ybWluZyBETUEuICBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBwYWdlcywgYW5kIHdpbGwKKyAqIHJldHVybiB0aGUgQ1BVLXZpZXdlZCBhZGRyZXNzLCBhbmQgc2V0cyBAaGFuZGxlIHRvIGJlIHRoZQorICogZGV2aWNlLXZpZXdlZCBhZGRyZXNzLgorICovCitleHRlcm4gdm9pZCAqCitkbWFfYWxsb2Nfd3JpdGVjb21iaW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmhhbmRsZSwgaW50IGdmcCk7CisKKyNkZWZpbmUgZG1hX2ZyZWVfd3JpdGVjb21iaW5lKGRldixzaXplLGNwdV9hZGRyLGhhbmRsZSkgXAorCWRtYV9mcmVlX2NvaGVyZW50KGRldixzaXplLGNwdV9hZGRyLGhhbmRsZSkKKworaW50IGRtYV9tbWFwX3dyaXRlY29tYmluZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJICB2b2lkICpjcHVfYWRkciwgZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplKTsKKworCisvKioKKyAqIGRtYV9tYXBfc2luZ2xlIC0gbWFwIGEgc2luZ2xlIGJ1ZmZlciBmb3Igc3RyZWFtaW5nIERNQQorICogQGRldjogdmFsaWQgc3RydWN0IGRldmljZSBwb2ludGVyLCBvciBOVUxMIGZvciBJU0EgYW5kIEVJU0EtbGlrZSBkZXZpY2VzCisgKiBAY3B1X2FkZHI6IENQVSBkaXJlY3QgbWFwcGVkIGFkZHJlc3Mgb2YgYnVmZmVyCisgKiBAc2l6ZTogc2l6ZSBvZiBidWZmZXIgdG8gbWFwCisgKiBAZGlyOiBETUEgdHJhbnNmZXIgZGlyZWN0aW9uCisgKgorICogRW5zdXJlIHRoYXQgYW55IGRhdGEgaGVsZCBpbiB0aGUgY2FjaGUgaXMgYXBwcm9wcmlhdGVseSBkaXNjYXJkZWQKKyAqIG9yIHdyaXR0ZW4gYmFjay4KKyAqCisgKiBUaGUgZGV2aWNlIG93bnMgdGhpcyBtZW1vcnkgb25jZSB0aGlzIGNhbGwgaGFzIGNvbXBsZXRlZC4gIFRoZSBDUFUKKyAqIGNhbiByZWdhaW4gb3duZXJzaGlwIGJ5IGNhbGxpbmcgZG1hX3VubWFwX3NpbmdsZSgpIG9yCisgKiBkbWFfc3luY19zaW5nbGVfZm9yX2NwdSgpLgorICovCisjaWZuZGVmIENPTkZJR19ETUFCT1VOQ0UKK3N0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdAorZG1hX21hcF9zaW5nbGUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpjcHVfYWRkciwgc2l6ZV90IHNpemUsCisJICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKwljb25zaXN0ZW50X3N5bmMoY3B1X2FkZHIsIHNpemUsIGRpcik7CisJcmV0dXJuIHZpcnRfdG9fZG1hKGRldiwgKHVuc2lnbmVkIGxvbmcpY3B1X2FkZHIpOworfQorI2Vsc2UKK2V4dGVybiBkbWFfYWRkcl90IGRtYV9tYXBfc2luZ2xlKHN0cnVjdCBkZXZpY2UgKix2b2lkICosIHNpemVfdCwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24pOworI2VuZGlmCisKKy8qKgorICogZG1hX21hcF9wYWdlIC0gbWFwIGEgcG9ydGlvbiBvZiBhIHBhZ2UgZm9yIHN0cmVhbWluZyBETUEKKyAqIEBkZXY6IHZhbGlkIHN0cnVjdCBkZXZpY2UgcG9pbnRlciwgb3IgTlVMTCBmb3IgSVNBIGFuZCBFSVNBLWxpa2UgZGV2aWNlcworICogQHBhZ2U6IHBhZ2UgdGhhdCBidWZmZXIgcmVzaWRlcyBpbgorICogQG9mZnNldDogb2Zmc2V0IGludG8gcGFnZSBmb3Igc3RhcnQgb2YgYnVmZmVyCisgKiBAc2l6ZTogc2l6ZSBvZiBidWZmZXIgdG8gbWFwCisgKiBAZGlyOiBETUEgdHJhbnNmZXIgZGlyZWN0aW9uCisgKgorICogRW5zdXJlIHRoYXQgYW55IGRhdGEgaGVsZCBpbiB0aGUgY2FjaGUgaXMgYXBwcm9wcmlhdGVseSBkaXNjYXJkZWQKKyAqIG9yIHdyaXR0ZW4gYmFjay4KKyAqCisgKiBUaGUgZGV2aWNlIG93bnMgdGhpcyBtZW1vcnkgb25jZSB0aGlzIGNhbGwgaGFzIGNvbXBsZXRlZC4gIFRoZSBDUFUKKyAqIGNhbiByZWdhaW4gb3duZXJzaGlwIGJ5IGNhbGxpbmcgZG1hX3VubWFwX3BhZ2UoKSBvcgorICogZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoKS4KKyAqLworc3RhdGljIGlubGluZSBkbWFfYWRkcl90CitkbWFfbWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwKKwkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKwlyZXR1cm4gZG1hX21hcF9zaW5nbGUoZGV2LCBwYWdlX2FkZHJlc3MocGFnZSkgKyBvZmZzZXQsIHNpemUsIChpbnQpZGlyKTsKK30KKworLyoqCisgKiBkbWFfdW5tYXBfc2luZ2xlIC0gdW5tYXAgYSBzaW5nbGUgYnVmZmVyIHByZXZpb3VzbHkgbWFwcGVkCisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIsIG9yIE5VTEwgZm9yIElTQSBhbmQgRUlTQS1saWtlIGRldmljZXMKKyAqIEBoYW5kbGU6IERNQSBhZGRyZXNzIG9mIGJ1ZmZlcgorICogQHNpemU6IHNpemUgb2YgYnVmZmVyIHRvIG1hcAorICogQGRpcjogRE1BIHRyYW5zZmVyIGRpcmVjdGlvbgorICoKKyAqIFVubWFwIGEgc2luZ2xlIHN0cmVhbWluZyBtb2RlIERNQSB0cmFuc2xhdGlvbi4gIFRoZSBoYW5kbGUgYW5kIHNpemUKKyAqIG11c3QgbWF0Y2ggd2hhdCB3YXMgcHJvdmlkZWQgaW4gdGhlIHByZXZpb3VzIGRtYV9tYXBfc2luZ2xlKCkgY2FsbC4KKyAqIEFsbCBvdGhlciB1c2FnZXMgYXJlIHVuZGVmaW5lZC4KKyAqCisgKiBBZnRlciB0aGlzIGNhbGwsIHJlYWRzIGJ5IHRoZSBDUFUgdG8gdGhlIGJ1ZmZlciBhcmUgZ3VhcmFudGVlZCB0byBzZWUKKyAqIHdoYXRldmVyIHRoZSBkZXZpY2Ugd3JvdGUgdGhlcmUuCisgKi8KKyNpZm5kZWYgQ09ORklHX0RNQUJPVU5DRQorc3RhdGljIGlubGluZSB2b2lkCitkbWFfdW5tYXBfc2luZ2xlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLAorCQkgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQoreworCS8qIG5vdGhpbmcgdG8gZG8gKi8KK30KKyNlbHNlCitleHRlcm4gdm9pZCBkbWFfdW5tYXBfc2luZ2xlKHN0cnVjdCBkZXZpY2UgKiwgZG1hX2FkZHJfdCwgc2l6ZV90LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CisjZW5kaWYKKworLyoqCisgKiBkbWFfdW5tYXBfcGFnZSAtIHVubWFwIGEgYnVmZmVyIHByZXZpb3VzbHkgbWFwcGVkIHRocm91Z2ggZG1hX21hcF9wYWdlKCkKKyAqIEBkZXY6IHZhbGlkIHN0cnVjdCBkZXZpY2UgcG9pbnRlciwgb3IgTlVMTCBmb3IgSVNBIGFuZCBFSVNBLWxpa2UgZGV2aWNlcworICogQGhhbmRsZTogRE1BIGFkZHJlc3Mgb2YgYnVmZmVyCisgKiBAc2l6ZTogc2l6ZSBvZiBidWZmZXIgdG8gbWFwCisgKiBAZGlyOiBETUEgdHJhbnNmZXIgZGlyZWN0aW9uCisgKgorICogVW5tYXAgYSBzaW5nbGUgc3RyZWFtaW5nIG1vZGUgRE1BIHRyYW5zbGF0aW9uLiAgVGhlIGhhbmRsZSBhbmQgc2l6ZQorICogbXVzdCBtYXRjaCB3aGF0IHdhcyBwcm92aWRlZCBpbiB0aGUgcHJldmlvdXMgZG1hX21hcF9zaW5nbGUoKSBjYWxsLgorICogQWxsIG90aGVyIHVzYWdlcyBhcmUgdW5kZWZpbmVkLgorICoKKyAqIEFmdGVyIHRoaXMgY2FsbCwgcmVhZHMgYnkgdGhlIENQVSB0byB0aGUgYnVmZmVyIGFyZSBndWFyYW50ZWVkIHRvIHNlZQorICogd2hhdGV2ZXIgdGhlIGRldmljZSB3cm90ZSB0aGVyZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkbWFfdW5tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgaGFuZGxlLCBzaXplX3Qgc2l6ZSwKKwkgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQoreworCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBoYW5kbGUsIHNpemUsIChpbnQpZGlyKTsKK30KKworLyoqCisgKiBkbWFfbWFwX3NnIC0gbWFwIGEgc2V0IG9mIFNHIGJ1ZmZlcnMgZm9yIHN0cmVhbWluZyBtb2RlIERNQQorICogQGRldjogdmFsaWQgc3RydWN0IGRldmljZSBwb2ludGVyLCBvciBOVUxMIGZvciBJU0EgYW5kIEVJU0EtbGlrZSBkZXZpY2VzCisgKiBAc2c6IGxpc3Qgb2YgYnVmZmVycworICogQG5lbnRzOiBudW1iZXIgb2YgYnVmZmVycyB0byBtYXAKKyAqIEBkaXI6IERNQSB0cmFuc2ZlciBkaXJlY3Rpb24KKyAqCisgKiBNYXAgYSBzZXQgb2YgYnVmZmVycyBkZXNjcmliZWQgYnkgc2NhdHRlcmxpc3QgaW4gc3RyZWFtaW5nCisgKiBtb2RlIGZvciBETUEuICBUaGlzIGlzIHRoZSBzY2F0dGVyLWdhdGhlciB2ZXJzaW9uIG9mIHRoZQorICogYWJvdmUgZG1hX21hcF9zaW5nbGUgaW50ZXJmYWNlLiAgSGVyZSB0aGUgc2NhdHRlciBnYXRoZXIgbGlzdAorICogZWxlbWVudHMgYXJlIGVhY2ggdGFnZ2VkIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRtYSBhZGRyZXNzCisgKiBhbmQgbGVuZ3RoLiAgVGhleSBhcmUgb2J0YWluZWQgdmlhIHNnX2RtYV97YWRkcmVzcyxsZW5ndGh9KFNHKS4KKyAqCisgKiBOT1RFOiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgYmUgYWJsZSB0byB1c2UgYSBzbWFsbGVyIG51bWJlciBvZgorICogICAgICAgRE1BIGFkZHJlc3MvbGVuZ3RoIHBhaXJzIHRoYW4gdGhlcmUgYXJlIFNHIHRhYmxlIGVsZW1lbnRzLgorICogICAgICAgKGZvciBleGFtcGxlIHZpYSB2aXJ0dWFsIG1hcHBpbmcgY2FwYWJpbGl0aWVzKQorICogICAgICAgVGhlIHJvdXRpbmUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFkZHIvbGVuZ3RoIHBhaXJzIGFjdHVhbGx5CisgKiAgICAgICB1c2VkLCBhdCBtb3N0IG5lbnRzLgorICoKKyAqIERldmljZSBvd25lcnNoaXAgaXNzdWVzIGFzIG1lbnRpb25lZCBhYm92ZSBmb3IgZG1hX21hcF9zaW5nbGUgYXJlCisgKiB0aGUgc2FtZSBoZXJlLgorICovCisjaWZuZGVmIENPTkZJR19ETUFCT1VOQ0UKK3N0YXRpYyBpbmxpbmUgaW50CitkbWFfbWFwX3NnKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5lbnRzLAorCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuZW50czsgaSsrLCBzZysrKSB7CisJCWNoYXIgKnZpcnQ7CisKKwkJc2ctPmRtYV9hZGRyZXNzID0gcGFnZV90b19kbWEoZGV2LCBzZy0+cGFnZSkgKyBzZy0+b2Zmc2V0OworCQl2aXJ0ID0gcGFnZV9hZGRyZXNzKHNnLT5wYWdlKSArIHNnLT5vZmZzZXQ7CisJCWNvbnNpc3RlbnRfc3luYyh2aXJ0LCBzZy0+bGVuZ3RoLCBkaXIpOworCX0KKworCXJldHVybiBuZW50czsKK30KKyNlbHNlCitleHRlcm4gaW50IGRtYV9tYXBfc2coc3RydWN0IGRldmljZSAqLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKiwgaW50LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CisjZW5kaWYKKworLyoqCisgKiBkbWFfdW5tYXBfc2cgLSB1bm1hcCBhIHNldCBvZiBTRyBidWZmZXJzIG1hcHBlZCBieSBkbWFfbWFwX3NnCisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIsIG9yIE5VTEwgZm9yIElTQSBhbmQgRUlTQS1saWtlIGRldmljZXMKKyAqIEBzZzogbGlzdCBvZiBidWZmZXJzCisgKiBAbmVudHM6IG51bWJlciBvZiBidWZmZXJzIHRvIG1hcAorICogQGRpcjogRE1BIHRyYW5zZmVyIGRpcmVjdGlvbgorICoKKyAqIFVubWFwIGEgc2V0IG9mIHN0cmVhbWluZyBtb2RlIERNQSB0cmFuc2xhdGlvbnMuCisgKiBBZ2FpbiwgQ1BVIHJlYWQgcnVsZXMgY29uY2VybmluZyBjYWxscyBoZXJlIGFyZSB0aGUgc2FtZSBhcyBmb3IKKyAqIGRtYV91bm1hcF9zaW5nbGUoKSBhYm92ZS4KKyAqLworI2lmbmRlZiBDT05GSUdfRE1BQk9VTkNFCitzdGF0aWMgaW5saW5lIHZvaWQKK2RtYV91bm1hcF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuZW50cywKKwkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKworCS8qIG5vdGhpbmcgdG8gZG8gKi8KK30KKyNlbHNlCitleHRlcm4gdm9pZCBkbWFfdW5tYXBfc2coc3RydWN0IGRldmljZSAqLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKiwgaW50LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CisjZW5kaWYKKworCisvKioKKyAqIGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1CisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIsIG9yIE5VTEwgZm9yIElTQSBhbmQgRUlTQS1saWtlIGRldmljZXMKKyAqIEBoYW5kbGU6IERNQSBhZGRyZXNzIG9mIGJ1ZmZlcgorICogQHNpemU6IHNpemUgb2YgYnVmZmVyIHRvIG1hcAorICogQGRpcjogRE1BIHRyYW5zZmVyIGRpcmVjdGlvbgorICoKKyAqIE1ha2UgcGh5c2ljYWwgbWVtb3J5IGNvbnNpc3RlbnQgZm9yIGEgc2luZ2xlIHN0cmVhbWluZyBtb2RlIERNQQorICogdHJhbnNsYXRpb24gYWZ0ZXIgYSB0cmFuc2Zlci4KKyAqCisgKiBJZiB5b3UgcGVyZm9ybSBhIGRtYV9tYXBfc2luZ2xlKCkgYnV0IHdpc2ggdG8gaW50ZXJyb2dhdGUgdGhlCisgKiBidWZmZXIgdXNpbmcgdGhlIGNwdSwgeWV0IGRvIG5vdCB3aXNoIHRvIHRlYXJkb3duIHRoZSBQQ0kgZG1hCisgKiBtYXBwaW5nLCB5b3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGRvaW5nIHNvLiAgQXQgdGhlCisgKiBuZXh0IHBvaW50IHlvdSBnaXZlIHRoZSBQQ0kgZG1hIGFkZHJlc3MgYmFjayB0byB0aGUgY2FyZCwgeW91CisgKiBtdXN0IGZpcnN0IHRoZSBwZXJmb3JtIGEgZG1hX3N5bmNfZm9yX2RldmljZSwgYW5kIHRoZW4gdGhlCisgKiBkZXZpY2UgYWdhaW4gb3ducyB0aGUgYnVmZmVyLgorICovCisjaWZuZGVmIENPTkZJR19ETUFCT1VOQ0UKK3N0YXRpYyBpbmxpbmUgdm9pZAorZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGhhbmRsZSwgc2l6ZV90IHNpemUsCisJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCit7CisJY29uc2lzdGVudF9zeW5jKCh2b2lkICopZG1hX3RvX3ZpcnQoZGV2LCBoYW5kbGUpLCBzaXplLCBkaXIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2RtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBoYW5kbGUsIHNpemVfdCBzaXplLAorCQkJICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQoreworCWNvbnNpc3RlbnRfc3luYygodm9pZCAqKWRtYV90b192aXJ0KGRldiwgaGFuZGxlKSwgc2l6ZSwgZGlyKTsKK30KKyNlbHNlCitleHRlcm4gdm9pZCBkbWFfc3luY19zaW5nbGVfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlKiwgZG1hX2FkZHJfdCwgc2l6ZV90LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CitleHRlcm4gdm9pZCBkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlKiwgZG1hX2FkZHJfdCwgc2l6ZV90LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CisjZW5kaWYKKworCisvKioKKyAqIGRtYV9zeW5jX3NnX2Zvcl9jcHUKKyAqIEBkZXY6IHZhbGlkIHN0cnVjdCBkZXZpY2UgcG9pbnRlciwgb3IgTlVMTCBmb3IgSVNBIGFuZCBFSVNBLWxpa2UgZGV2aWNlcworICogQHNnOiBsaXN0IG9mIGJ1ZmZlcnMKKyAqIEBuZW50czogbnVtYmVyIG9mIGJ1ZmZlcnMgdG8gbWFwCisgKiBAZGlyOiBETUEgdHJhbnNmZXIgZGlyZWN0aW9uCisgKgorICogTWFrZSBwaHlzaWNhbCBtZW1vcnkgY29uc2lzdGVudCBmb3IgYSBzZXQgb2Ygc3RyZWFtaW5nCisgKiBtb2RlIERNQSB0cmFuc2xhdGlvbnMgYWZ0ZXIgYSB0cmFuc2Zlci4KKyAqCisgKiBUaGUgc2FtZSBhcyBkbWFfc3luY19zaW5nbGVfZm9yXyogYnV0IGZvciBhIHNjYXR0ZXItZ2F0aGVyIGxpc3QsCisgKiBzYW1lIHJ1bGVzIGFuZCB1c2FnZS4KKyAqLworI2lmbmRlZiBDT05GSUdfRE1BQk9VTkNFCitzdGF0aWMgaW5saW5lIHZvaWQKK2RtYV9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgbmVudHMsCisJCSAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKywgc2crKykgeworCQljaGFyICp2aXJ0ID0gcGFnZV9hZGRyZXNzKHNnLT5wYWdlKSArIHNnLT5vZmZzZXQ7CisJCWNvbnNpc3RlbnRfc3luYyh2aXJ0LCBzZy0+bGVuZ3RoLCBkaXIpOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkCitkbWFfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5lbnRzLAorCQkgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKyssIHNnKyspIHsKKwkJY2hhciAqdmlydCA9IHBhZ2VfYWRkcmVzcyhzZy0+cGFnZSkgKyBzZy0+b2Zmc2V0OworCQljb25zaXN0ZW50X3N5bmModmlydCwgc2ctPmxlbmd0aCwgZGlyKTsKKwl9Cit9CisjZWxzZQorZXh0ZXJuIHZvaWQgZG1hX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlKiwgc3RydWN0IHNjYXR0ZXJsaXN0KiwgaW50LCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CitleHRlcm4gdm9pZCBkbWFfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBkZXZpY2UqLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QqLCBpbnQsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uKTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0RNQUJPVU5DRQorLyoKKyAqIEZvciBTQS0xMTExLCBJWFA0MjUsIGFuZCBBREkgc3lzdGVtcyAgdGhlIGRtYS1tYXBwaW5nIGZ1bmN0aW9ucyBhcmUgIm1hZ2ljIgorICogYW5kIHV0aWxpemUgYm91bmNlIGJ1ZmZlcnMgYXMgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIGxpbWl0ZWQgRE1BIHdpbmRvd3MuCisgKgorICogT24gdGhlIFNBLTExMTEsIGEgYnVnIGxpbWl0cyBETUEgdG8gb25seSBjZXJ0YWluIHJlZ2lvbnMgb2YgUkFNLgorICogT24gdGhlIElYUDQyNSwgdGhlIFBDSSBpbmJvdW5kIHdpbmRvdyBpcyA2NE1CICgyNTZNQiB0b3RhbCBSQU0pCisgKiBPbiBzb21lIEFESSBlbmdpbmVlcmluZyBzeXRlbXMsIFBDSSBpbmJvdW5kIHdpbmRvdyBpcyAzMk1CICgxMk1CIHRvdGFsIFJBTSkKKyAqCisgKiBUaGUgZm9sbG93aW5nIGFyZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIGRtYWJvdW5jZSBzdWJ5c3RlbQorICoKKyAqLworCisvKioKKyAqIGRtYWJvdW5jZV9yZWdpc3Rlcl9kZXYKKyAqCisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIKKyAqIEBzbWFsbF9idWZfc2l6ZTogc2l6ZSBvZiBidWZmZXJzIHRvIHVzZSB3aXRoIHNtYWxsIGJ1ZmZlciBwb29sCisgKiBAbGFyZ2VfYnVmX3NpemU6IHNpemUgb2YgYnVmZmVycyB0byB1c2Ugd2l0aCBsYXJnZSBidWZmZXIgcG9vbCAoY2FuIGJlIDApCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJ5IGxvdy1sZXZlbCBwbGF0Zm9ybSBjb2RlIHRvIHJlZ2lzdGVyCisgKiBhIGRldmljZSBhcyByZXF1aXJlaW5nIERNQSBidWZmZXIgYm91bmNpbmcuIFRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlCisgKiBhcHByb3ByaWF0ZSBETUEgcG9vbHMgZm9yIHRoZSBkZXZpY2UuCisgKgorICovCitleHRlcm4gaW50IGRtYWJvdW5jZV9yZWdpc3Rlcl9kZXYoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKworLyoqCisgKiBkbWFib3VuY2VfdW5yZWdpc3Rlcl9kZXYKKyAqCisgKiBAZGV2OiB2YWxpZCBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYnkgbG93LWxldmVsIHBsYXRmb3JtIGNvZGUgd2hlbiBkZXZpY2UKKyAqIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIGRtYWJvdW5jZV9yZWdpc3Rlcl9kZXYgaXMgcmVtb3ZlZAorICogZnJvbSB0aGUgc3lzdGVtLgorICoKKyAqLworZXh0ZXJuIHZvaWQgZG1hYm91bmNlX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBkZXZpY2UgKik7CisKKy8qKgorICogZG1hX25lZWRzX2JvdW5jZQorICoKKyAqIEBkZXY6IHZhbGlkIHN0cnVjdCBkZXZpY2UgcG9pbnRlcgorICogQGRtYV9oYW5kbGU6IGRtYV9oYW5kbGUgb2YgdW5ib3VuY2VkIGJ1ZmZlcgorICogQHNpemU6IHNpemUgb2YgcmVnaW9uIGJlaW5nIG1hcHBlZAorICoKKyAqIFBsYXRmb3JtcyB0aGF0IHV0aWxpemUgdGhlIGRtYWJvdW5jZSBtZWNoYW5pc20gbXVzdCBpbXBsZW1lbnQKKyAqIHRoaXMgZnVuY3Rpb24uCisgKgorICogVGhlIGRtYWJvdW5jZSByb3V0aW5lcyBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbmV2ZXIgYSBkbWEtbWFwcGluZworICogaXMgcmVxdWVzdGVkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gYnVmZmVyIG5lZWRzIHRvIGJlIGJvdW5jZWQKKyAqIG9yIG5vdC4gVGhlIGZ1bmN0aW9uIG11c3QgcmV0dXJuIDAgaWYgdGhlIHRoZSBidWZmZXIgaXMgT0sgZm9yCisgKiBETUEgYWNjZXNzIGFuZCAxIGlmIHRoZSBidWZmZXIgbmVlZHMgdG8gYmUgYm91bmNlZC4KKyAqCisgKi8KK2V4dGVybiBpbnQgZG1hX25lZWRzX2JvdW5jZShzdHJ1Y3QgZGV2aWNlKiwgZG1hX2FkZHJfdCwgc2l6ZV90KTsKKyNlbmRpZiAvKiBDT05GSUdfRE1BQk9VTkNFICovCisKKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjQxZGY0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vZG1hLmgKQEAgLTAsMCArMSwxMzUgQEAKKyNpZm5kZWYgX19BU01fQVJNX0RNQV9ICisjZGVmaW5lIF9fQVNNX0FSTV9ETUFfSAorCit0eXBlZGVmIHVuc2lnbmVkIGludCBkbWFjaF90OworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZG1hLmg+CisKKy8qCisgKiBETUEgbW9kZXMKKyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgZG1hbW9kZV90OworCisjZGVmaW5lIERNQV9NT0RFX01BU0sJMworCisjZGVmaW5lIERNQV9NT0RFX1JFQUQJIDAKKyNkZWZpbmUgRE1BX01PREVfV1JJVEUJIDEKKyNkZWZpbmUgRE1BX01PREVfQ0FTQ0FERSAyCisjZGVmaW5lIERNQV9BVVRPSU5JVAkgNAorCitleHRlcm4gc3BpbmxvY2tfdCAgZG1hX3NwaW5fbG9jazsKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNsYWltX2RtYV9sb2NrKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZG1hX3NwaW5fbG9jaywgZmxhZ3MpOworCXJldHVybiBmbGFnczsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfZG1hX2xvY2sodW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkbWFfc3Bpbl9sb2NrLCBmbGFncyk7Cit9CisKKy8qIENsZWFyIHRoZSAnRE1BIFBvaW50ZXIgRmxpcCBGbG9wJy4KKyAqIFdyaXRlIDAgZm9yIExTQi9NU0IsIDEgZm9yIE1TQi9MU0IgYWNjZXNzLgorICovCisjZGVmaW5lIGNsZWFyX2RtYV9mZihjaGFubmVsKQorCisvKiBTZXQgb25seSB0aGUgcGFnZSByZWdpc3RlciBiaXRzIG9mIHRoZSB0cmFuc2ZlciBhZGRyZXNzLgorICoKKyAqIE5PVEU6IFRoaXMgaXMgYW4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQgc2hvdWxkCisgKiAgICAgICBiZSBoaWRkZW4gZnJvbSB0aGUgZHJpdmVycworICovCitleHRlcm4gdm9pZCBzZXRfZG1hX3BhZ2UoZG1hY2hfdCBjaGFubmVsLCBjaGFyIHBhZ2Vucik7CisKKy8qIFJlcXVlc3QgYSBETUEgY2hhbm5lbAorICoKKyAqIFNvbWUgYXJjaGl0ZWN0dXJlcyBtYXkgbmVlZCB0byBkbyBhbGxvY2F0ZSBhbiBpbnRlcnJ1cHQKKyAqLworZXh0ZXJuIGludCAgcmVxdWVzdF9kbWEoZG1hY2hfdCBjaGFubmVsLCBjb25zdCBjaGFyICogZGV2aWNlX2lkKTsKKworLyogRnJlZSBhIERNQSBjaGFubmVsCisgKgorICogU29tZSBhcmNoaXRlY3R1cmVzIG1heSBuZWVkIHRvIGRvIGZyZWUgYW4gaW50ZXJydXB0CisgKi8KK2V4dGVybiB2b2lkIGZyZWVfZG1hKGRtYWNoX3QgY2hhbm5lbCk7CisKKy8qIEVuYWJsZSBETUEgZm9yIHRoaXMgY2hhbm5lbAorICoKKyAqIE9uIHNvbWUgYXJjaGl0ZWN0dXJlcywgdGhpcyBtYXkgaGF2ZSBvdGhlciBzaWRlIGVmZmVjdHMgbGlrZQorICogZW5hYmxpbmcgYW4gaW50ZXJydXB0IGFuZCBzZXR0aW5nIHRoZSBETUEgcmVnaXN0ZXJzLgorICovCitleHRlcm4gdm9pZCBlbmFibGVfZG1hKGRtYWNoX3QgY2hhbm5lbCk7CisKKy8qIERpc2FibGUgRE1BIGZvciB0aGlzIGNoYW5uZWwKKyAqCisgKiBPbiBzb21lIGFyY2hpdGVjdHVyZXMsIHRoaXMgbWF5IGhhdmUgb3RoZXIgc2lkZSBlZmZlY3RzIGxpa2UKKyAqIGRpc2FibGluZyBhbiBpbnRlcnJ1cHQgb3Igd2hhdGV2ZXIuCisgKi8KK2V4dGVybiB2b2lkIGRpc2FibGVfZG1hKGRtYWNoX3QgY2hhbm5lbCk7CisKKy8qIFRlc3Qgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNoYW5uZWwgaGFzIGFuIGFjdGl2ZSBETUEgdHJhbnNmZXIKKyAqLworZXh0ZXJuIGludCBkbWFfY2hhbm5lbF9hY3RpdmUoZG1hY2hfdCBjaGFubmVsKTsKKworLyogU2V0IHRoZSBETUEgc2NhdHRlciBnYXRoZXIgbGlzdCBmb3IgdGhpcyBjaGFubmVsCisgKgorICogVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBhIERNQSBjaGFubmVsIGlzIGVuYWJsZWQsCisgKiBlc3BlY2lhbGx5IHNpbmNlIHNvbWUgRE1BIGFyY2hpdGVjdHVyZXMgZG9uJ3QgdXBkYXRlIHRoZQorICogRE1BIGFkZHJlc3MgaW1tZWRpYXRlbHksIGJ1dCBkZWZlciBpdCB0byB0aGUgZW5hYmxlX2RtYSgpLgorICovCitleHRlcm4gdm9pZCBzZXRfZG1hX3NnKGRtYWNoX3QgY2hhbm5lbCwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5yX3NnKTsKKworLyogU2V0IHRoZSBETUEgYWRkcmVzcyBmb3IgdGhpcyBjaGFubmVsCisgKgorICogVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBhIERNQSBjaGFubmVsIGlzIGVuYWJsZWQsCisgKiBlc3BlY2lhbGx5IHNpbmNlIHNvbWUgRE1BIGFyY2hpdGVjdHVyZXMgZG9uJ3QgdXBkYXRlIHRoZQorICogRE1BIGFkZHJlc3MgaW1tZWRpYXRlbHksIGJ1dCBkZWZlciBpdCB0byB0aGUgZW5hYmxlX2RtYSgpLgorICovCitleHRlcm4gdm9pZCBzZXRfZG1hX2FkZHIoZG1hY2hfdCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIHBoeXNhZGRyKTsKKworLyogU2V0IHRoZSBETUEgYnl0ZSBjb3VudCBmb3IgdGhpcyBjaGFubmVsCisgKgorICogVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBhIERNQSBjaGFubmVsIGlzIGVuYWJsZWQsCisgKiBlc3BlY2lhbGx5IHNpbmNlIHNvbWUgRE1BIGFyY2hpdGVjdHVyZXMgZG9uJ3QgdXBkYXRlIHRoZQorICogRE1BIGNvdW50IGltbWVkaWF0ZWx5LCBidXQgZGVmZXIgaXQgdG8gdGhlIGVuYWJsZV9kbWEoKS4KKyAqLworZXh0ZXJuIHZvaWQgc2V0X2RtYV9jb3VudChkbWFjaF90IGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgY291bnQpOworCisvKiBTZXQgdGhlIHRyYW5zZmVyIGRpcmVjdGlvbiBmb3IgdGhpcyBjaGFubmVsCisgKgorICogVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiBhIERNQSBjaGFubmVsIGlzIGVuYWJsZWQsCisgKiBlc3BlY2lhbGx5IHNpbmNlIHNvbWUgRE1BIGFyY2hpdGVjdHVyZXMgZG9uJ3QgdXBkYXRlIHRoZQorICogRE1BIHRyYW5zZmVyIGRpcmVjdGlvbiBpbW1lZGlhdGVseSwgYnV0IGRlZmVyIGl0IHRvIHRoZQorICogZW5hYmxlX2RtYSgpLgorICovCitleHRlcm4gdm9pZCBzZXRfZG1hX21vZGUoZG1hY2hfdCBjaGFubmVsLCBkbWFtb2RlX3QgbW9kZSk7CisKKy8qIFNldCB0aGUgdHJhbnNmZXIgc3BlZWQgZm9yIHRoaXMgY2hhbm5lbAorICovCitleHRlcm4gdm9pZCBzZXRfZG1hX3NwZWVkKGRtYWNoX3QgY2hhbm5lbCwgaW50IGN5Y2xlX25zKTsKKworLyogR2V0IERNQSByZXNpZHVlIGNvdW50LiBBZnRlciBhIERNQSB0cmFuc2ZlciwgdGhpcworICogc2hvdWxkIHJldHVybiB6ZXJvLiBSZWFkaW5nIHRoaXMgd2hpbGUgYSBETUEgdHJhbnNmZXIgaXMKKyAqIHN0aWxsIGluIHByb2dyZXNzIHdpbGwgcmV0dXJuIHVucHJlZGljdGFibGUgcmVzdWx0cy4KKyAqIElmIGNhbGxlZCBiZWZvcmUgdGhlIGNoYW5uZWwgaGFzIGJlZW4gdXNlZCwgaXQgbWF5IHJldHVybiAxLgorICogT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgX2J5dGVzXyBsZWZ0IHRvIHRyYW5zZmVyLgorICovCitleHRlcm4gaW50ICBnZXRfZG1hX3Jlc2lkdWUoZG1hY2hfdCBjaGFubmVsKTsKKworI2lmbmRlZiBOT19ETUEKKyNkZWZpbmUgTk9fRE1BCTI1NQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUENJCitleHRlcm4gaW50IGlzYV9kbWFfYnJpZGdlX2J1Z2d5OworI2Vsc2UKKyNkZWZpbmUgaXNhX2RtYV9icmlkZ2VfYnVnZ3kgICAgKDApCisjZW5kaWYKKworI2VuZGlmIC8qIF9BUk1fRE1BX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTFkOTYwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9QUk9DX0RPTUFJTl9ICisjZGVmaW5lIF9fQVNNX1BST0NfRE9NQUlOX0gKKworLyoKKyAqIERvbWFpbiBudW1iZXJzCisgKgorICogIERPTUFJTl9JTyAgICAgLSBkb21haW4gMiBpbmNsdWRlcyBhbGwgSU8gb25seQorICogIERPTUFJTl9VU0VSICAgLSBkb21haW4gMSBpbmNsdWRlcyBhbGwgdXNlciBtZW1vcnkgb25seQorICogIERPTUFJTl9LRVJORUwgLSBkb21haW4gMCBpbmNsdWRlcyBhbGwga2VybmVsIG1lbW9yeSBvbmx5CisgKi8KKyNkZWZpbmUgRE9NQUlOX0tFUk5FTAkwCisjZGVmaW5lIERPTUFJTl9UQUJMRQkwCisjZGVmaW5lIERPTUFJTl9VU0VSCTEKKyNkZWZpbmUgRE9NQUlOX0lPCTIKKworLyoKKyAqIERvbWFpbiB0eXBlcworICovCisjZGVmaW5lIERPTUFJTl9OT0FDQ0VTUwkwCisjZGVmaW5lIERPTUFJTl9DTElFTlQJMQorI2RlZmluZSBET01BSU5fTUFOQUdFUgkzCisKKyNkZWZpbmUgZG9tYWluX3ZhbChkb20sdHlwZSkJKCh0eXBlKSA8PCAoMiooZG9tKSkpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjZGVmaW5lIHNldF9kb21haW4oeCkJCQkJCVwKKwlkbyB7CQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQlcCisJIm1jcglwMTUsIDAsICUwLCBjMywgYzAJQCBzZXQgZG9tYWluIglcCisJICA6IDogInIiICh4KSk7CQkJCQlcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBtb2RpZnlfZG9tYWluKGRvbSx0eXBlKQkJCQkJXAorCWRvIHsJCQkJCQkJXAorCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkID0gY3VycmVudF90aHJlYWRfaW5mbygpOwlcCisJdW5zaWduZWQgaW50IGRvbWFpbiA9IHRocmVhZC0+Y3B1X2RvbWFpbjsJCVwKKwlkb21haW4gJj0gfmRvbWFpbl92YWwoZG9tLCBET01BSU5fTUFOQUdFUik7CQlcCisJdGhyZWFkLT5jcHVfZG9tYWluID0gZG9tYWluIHwgZG9tYWluX3ZhbChkb20sIHR5cGUpOwlcCisJc2V0X2RvbWFpbih0aHJlYWQtPmNwdV9kb21haW4pOwkJCQlcCisJfSB3aGlsZSAoMCkKKworI2VuZGlmCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2VjYXJkLmggYi9pbmNsdWRlL2FzbS1hcm0vZWNhcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGFlMmI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2VjYXJkLmgKQEAgLTAsMCArMSwyOTggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vZWNhcmQuaAorICoKKyAqIGRlZmluaXRpb25zIGZvciBleHBhbnNpb24gY2FyZHMKKyAqCisgKiBUaGlzIGlzIGEgbmV3IHN5c3RlbSBhcyBmcm9tIExpbnV4IDEuMi4zCisgKgorICogQ2hhbmdlbG9nOgorICogIDExLTEyLTE5OTYJUk1LCUZ1cnRoZXIgbWlub3IgaW1wcm92ZW1lbnRzCisgKiAgMTItMDktMTk5NwlSTUsJQWRkZWQgaW50ZXJydXB0IGVuYWJsZS9kaXNhYmxlIGZvciBjYXJkIGxldmVsCisgKgorICogUmVmZXJlbmNlOiBBY29ybnMgUmlzYyBPUyAzIFByb2dyYW1tZXJzIFJlZmVyZW5jZSBNYW51YWxzLgorICovCisKKyNpZm5kZWYgX19BU01fRUNBUkRfSAorI2RlZmluZSBfX0FTTV9FQ0FSRF9ICisKKy8qCisgKiBDdXJyZW50bHkgdW5kZXJzdG9vZCBjYXJkcyAoYnV0IG5vdCBuZWNlc3NhcmlseQorICogc3VwcG9ydGVkKToKKyAqICAgICAgICAgICAgICAgICAgICAgICAgTWFudWZhY3R1cmVyICBQcm9kdWN0IElECisgKi8KKyNkZWZpbmUgTUFOVV9BQ09STgkJMHgwMDAwCisjZGVmaW5lIFBST0RfQUNPUk5fU0NTSQkJCTB4MDAwMgorI2RlZmluZSBQUk9EX0FDT1JOX0VUSEVSMQkJMHgwMDAzCisjZGVmaW5lIFBST0RfQUNPUk5fTUZNCQkJMHgwMDBiCisKKyNkZWZpbmUgTUFOVV9BTlQyCQkweDAwMTEKKyNkZWZpbmUgUFJPRF9BTlRfRVRIRVIzCQkJMHgwMGE0CisKKyNkZWZpbmUgTUFOVV9BVE9NV0lERQkJMHgwMDE3CisjZGVmaW5lIFBST0RfQVRPTVdJREVfM1BTRVJJQUwJCTB4MDA5MAorCisjZGVmaW5lIE1BTlVfSVJMQU1fSU5TVFJVTUVOVFMJMHgwMDFmCisjZGVmaW5lIE1BTlVfSVJMQU1fSU5TVFJVTUVOVFNfRVRIRVJOCTB4NTY3OAorCisjZGVmaW5lIE1BTlVfT0FLCQkweDAwMjEKKyNkZWZpbmUgUFJPRF9PQUtfU0NTSQkJCTB4MDA1OAorCisjZGVmaW5lIE1BTlVfTU9STEVZCQkweDAwMmIKKyNkZWZpbmUgUFJPRF9NT1JMRVlfU0NTSV9VTkNBQ0hFRAkweDAwNjcKKworI2RlZmluZSBNQU5VX0NVTUFOQQkJMHgwMDNhCisjZGVmaW5lIFBST0RfQ1VNQU5BX1NDU0lfMgkJMHgwMDNhCisjZGVmaW5lIFBST0RfQ1VNQU5BX1NDU0lfMQkJMHgwMGEwCisKKyNkZWZpbmUgTUFOVV9JQ1MJCTB4MDAzYworI2RlZmluZSBQUk9EX0lDU19JREUJCQkweDAwYWUKKworI2RlZmluZSBNQU5VX0lDUzIJCTB4MDAzZAorI2RlZmluZSBQUk9EX0lDUzJfSURFCQkJMHgwMGFlCisKKyNkZWZpbmUgTUFOVV9TRVJQT1JUCQkweDAwM2YKKyNkZWZpbmUgUFJPRF9TRVJQT1JUX0RTUE9SVAkJMHgwMGI5CisKKyNkZWZpbmUgTUFOVV9BUlhFCQkweDAwNDEKKyNkZWZpbmUgUFJPRF9BUlhFX1NDU0kJCQkweDAwYmUKKworI2RlZmluZSBNQU5VX0kzCQkJMHgwMDQ2CisjZGVmaW5lIFBST0RfSTNfRVRIRVJMQU41MDAJCTB4MDBkNAorI2RlZmluZSBQUk9EX0kzX0VUSEVSTEFONjAwCQkweDAwZWMKKyNkZWZpbmUgUFJPRF9JM19FVEhFUkxBTjYwMEEJCTB4MDExZQorCisjZGVmaW5lIE1BTlVfQU5UCQkweDAwNTMKKyNkZWZpbmUgUFJPRF9BTlRfRVRIRVJNCQkJMHgwMGQ4CisjZGVmaW5lIFBST0RfQU5UX0VUSEVSQgkJCTB4MDBlNAorCisjZGVmaW5lIE1BTlVfQUxTWVNURU1TCQkweDAwNWIKKyNkZWZpbmUgUFJPRF9BTFNZU19TQ1NJQVRBUEkJCTB4MDEwNworCisjZGVmaW5lIE1BTlVfTUNTCQkweDAwNjMKKyNkZWZpbmUgUFJPRF9NQ1NfQ09OTkVDVDMyCQkweDAxMjUKKworI2RlZmluZSBNQU5VX0VFU09YCQkweDAwNjQKKyNkZWZpbmUgUFJPRF9FRVNPWF9TQ1NJMgkJMHgwMDhjCisKKyNkZWZpbmUgTUFOVV9ZRUxMT1dTVE9ORQkweDAwOTYKKyNkZWZpbmUgUFJPRF9ZRUxMT1dTVE9ORV9SQVBJREUzMgkweDAxMjAKKworI2lmZGVmIEVDQVJEX0MKKyNkZWZpbmUgQ09OU1QKKyNlbHNlCisjZGVmaW5lIENPTlNUIGNvbnN0CisjZW5kaWYKKworI2RlZmluZSBNQVhfRUNBUkRTCTkKKwordHlwZWRlZiBlbnVtIHsJCQkJLyogQ2FyZHMgYWRkcmVzcyBzcGFjZQkJKi8KKwlFQ0FSRF9JT0MsCisJRUNBUkRfTUVNQywKKwlFQ0FSRF9FQVNJCit9IGNhcmRfdHlwZV90OworCit0eXBlZGVmIGVudW0gewkJCQkvKiBTcGVlZCBmb3IgRUNBUkRfSU9DIHNwYWNlCSovCisJRUNBUkRfU0xPVwkgPSAwLAorCUVDQVJEX01FRElVTQkgPSAxLAorCUVDQVJEX0ZBU1QJID0gMiwKKwlFQ0FSRF9TWU5DCSA9IDMKK30gY2FyZF9zcGVlZF90OworCitzdHJ1Y3QgZWNhcmRfaWQgewkJCS8qIENhcmQgSUQgc3RydWN0dXJlCQkqLworCXVuc2lnbmVkIHNob3J0CW1hbnVmYWN0dXJlcjsKKwl1bnNpZ25lZCBzaG9ydAlwcm9kdWN0OworCXZvaWQJCSpkYXRhOworfTsKKworc3RydWN0IGluX2VjaWQgewkJCS8qIFBhY2tlZCBjYXJkIElEIGluZm9ybWF0aW9uCSovCisJdW5zaWduZWQgc2hvcnQJcHJvZHVjdDsJLyogUHJvZHVjdCBjb2RlCQkJKi8KKwl1bnNpZ25lZCBzaG9ydAltYW51ZmFjdHVyZXI7CS8qIE1hbnVmYWN0dXJlciBjb2RlCQkqLworCXVuc2lnbmVkIGNoYXIJaWQ6NDsJCS8qIFNpbXBsZSBJRAkJCSovCisJdW5zaWduZWQgY2hhcgljZDoxOwkJLyogQ2h1bmsgZGlyIHByZXNlbnQJCSovCisJdW5zaWduZWQgY2hhcglpczoxOwkJLyogSW50ZXJydXB0IHN0YXR1cyBwb2ludGVycwkqLworCXVuc2lnbmVkIGNoYXIJdzoyOwkJLyogV2lkdGgJCQkqLworCXVuc2lnbmVkIGNoYXIJY291bnRyeTsJLyogQ291bnRyeQkJCSovCisJdW5zaWduZWQgY2hhcglpcnFtYXNrOwkvKiBJUlEgbWFzawkJCSovCisJdW5zaWduZWQgY2hhcglmaXFtYXNrOwkvKiBGSVEgbWFzawkJCSovCisJdW5zaWduZWQgbG9uZwlpcnFvZmY7CQkvKiBJUlEgb2Zmc2V0CQkJKi8KKwl1bnNpZ25lZCBsb25nCWZpcW9mZjsJCS8qIEZJUSBvZmZzZXQJCQkqLworfTsKKwordHlwZWRlZiBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgZWNhcmRfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAqbG9hZGVyX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsJCQkvKiBDYXJkIGhhbmRsZXIgcm91dGluZXMJKi8KKwl2b2lkICgqaXJxZW5hYmxlKShlY2FyZF90ICplYywgaW50IGlycW5yKTsKKwl2b2lkICgqaXJxZGlzYWJsZSkoZWNhcmRfdCAqZWMsIGludCBpcnFucik7CisJaW50ICAoKmlycXBlbmRpbmcpKGVjYXJkX3QgKmVjKTsKKwl2b2lkICgqZmlxZW5hYmxlKShlY2FyZF90ICplYywgaW50IGZpcW5yKTsKKwl2b2lkICgqZmlxZGlzYWJsZSkoZWNhcmRfdCAqZWMsIGludCBmaXFucik7CisJaW50ICAoKmZpcXBlbmRpbmcpKGVjYXJkX3QgKmVjKTsKK30gZXhwYW5zaW9uY2FyZF9vcHNfdDsKKworI2RlZmluZSBFQ0FSRF9OVU1fUkVTT1VSQ0VTCSg2KQorCisjZGVmaW5lIEVDQVJEX1JFU19JT0NTTE9XCSgwKQorI2RlZmluZSBFQ0FSRF9SRVNfSU9DTUVESVVNCSgxKQorI2RlZmluZSBFQ0FSRF9SRVNfSU9DRkFTVAkoMikKKyNkZWZpbmUgRUNBUkRfUkVTX0lPQ1NZTkMJKDMpCisjZGVmaW5lIEVDQVJEX1JFU19NRU1DCQkoNCkKKyNkZWZpbmUgRUNBUkRfUkVTX0VBU0kJCSg1KQorCisjZGVmaW5lIGVjYXJkX3Jlc291cmNlX3N0YXJ0KGVjLG5yKQkoKGVjKS0+cmVzb3VyY2VbbnJdLnN0YXJ0KQorI2RlZmluZSBlY2FyZF9yZXNvdXJjZV9lbmQoZWMsbnIpCSgoZWMpLT5yZXNvdXJjZVtucl0uZW5kKQorI2RlZmluZSBlY2FyZF9yZXNvdXJjZV9sZW4oZWMsbnIpCSgoZWMpLT5yZXNvdXJjZVtucl0uZW5kIC0gXAorCQkJCQkgKGVjKS0+cmVzb3VyY2VbbnJdLnN0YXJ0ICsgMSkKKyNkZWZpbmUgZWNhcmRfcmVzb3VyY2VfZmxhZ3MoZWMsbnIpCSgoZWMpLT5yZXNvdXJjZVtucl0uZmxhZ3MpCisKKy8qCisgKiBUaGlzIGNvbnRhaW5zIGFsbCB0aGUgaW5mbyBuZWVkZWQgb24gYW4gZXhwYW5zaW9uIGNhcmQKKyAqLworc3RydWN0IGV4cGFuc2lvbl9jYXJkIHsKKwlzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgICpuZXh0OworCisJc3RydWN0IGRldmljZQkJZGV2OworCXN0cnVjdCByZXNvdXJjZQkJcmVzb3VyY2VbRUNBUkRfTlVNX1JFU09VUkNFU107CisKKwkvKiBQdWJsaWMgZGF0YSAqLworCXZvaWQgX19pb21lbQkJKmlycWFkZHI7CS8qIGFkZHJlc3Mgb2YgSVJRIHJlZ2lzdGVyCSovCisJdm9pZCBfX2lvbWVtCQkqZmlxYWRkcjsJLyogYWRkcmVzcyBvZiBGSVEgcmVnaXN0ZXIJKi8KKwl1bnNpZ25lZCBjaGFyCQlpcnFtYXNrOwkvKiBJUlEgbWFzawkJCSovCisJdW5zaWduZWQgY2hhcgkJZmlxbWFzazsJLyogRklRIG1hc2sJCQkqLworCXVuc2lnbmVkIGNoYXIgIAkJY2xhaW1lZDsJLyogQ2FyZCBjbGFpbWVkPwkJKi8KKworCXZvaWQJCQkqaXJxX2RhdGE7CS8qIERhdGEgZm9yIHVzZSBmb3IgSVJRIGJ5IGNhcmQJKi8KKwl2b2lkCQkJKmZpcV9kYXRhOwkvKiBEYXRhIGZvciB1c2UgZm9yIEZJUSBieSBjYXJkCSovCisJY29uc3QgZXhwYW5zaW9uY2FyZF9vcHNfdCAqb3BzOwkJLyogRW5hYmxlL0Rpc2FibGUgT3BzIGZvciBjYXJkCSovCisKKwlDT05TVCB1bnNpZ25lZCBpbnQJc2xvdF9ubzsJLyogU2xvdCBudW1iZXIJCQkqLworCUNPTlNUIHVuc2lnbmVkIGludAlkbWE7CQkvKiBETUEgbnVtYmVyIChmb3IgcmVxdWVzdF9kbWEpCSovCisJQ09OU1QgdW5zaWduZWQgaW50CWlycTsJCS8qIElSUSBudW1iZXIgKGZvciByZXF1ZXN0X2lycSkJKi8KKwlDT05TVCB1bnNpZ25lZCBpbnQJZmlxOwkJLyogRklRIG51bWJlciAoZm9yIHJlcXVlc3RfaXJxKQkqLworCUNPTlNUIGNhcmRfdHlwZV90CXR5cGU7CQkvKiBUeXBlIG9mIGNhcmQJCQkqLworCUNPTlNUIHN0cnVjdCBpbl9lY2lkCWNpZDsJCS8qIENhcmQgSWRlbnRpZmljYXRpb24JCSovCisKKwkvKiBQcml2YXRlIGludGVybmFsIGRhdGEgKi8KKwljb25zdCBjaGFyCQkqY2FyZF9kZXNjOwkvKiBDYXJkIGRlc2NyaXB0aW9uCQkqLworCUNPTlNUIHVuc2lnbmVkIGludAlwb2RhZGRyOwkvKiBCYXNlIExpbnV4IGFkZHJlc3MgZm9yIGNhcmQJKi8KKwlDT05TVCBsb2FkZXJfdAkJbG9hZGVyOwkJLyogbG9hZGVyIHByb2dyYW0gKi8KKwl1NjQJCQlkbWFfbWFzazsKK307CisKK3N0cnVjdCBpbl9jaHVua19kaXIgeworCXVuc2lnbmVkIGludCBzdGFydF9vZmZzZXQ7CisJdW5pb24geworCQl1bnNpZ25lZCBjaGFyIHN0cmluZ1syNTZdOworCQl1bnNpZ25lZCBjaGFyIGRhdGFbMV07CisJfSBkOworfTsKKworLyoKKyAqIGVjYXJkX2NsYWltOiBjbGFpbSBhbiBleHBhbnNpb24gY2FyZCBlbnRyeQorICovCisjZGVmaW5lIGVjYXJkX2NsYWltKGVjKSAoKGVjKS0+Y2xhaW1lZCA9IDEpCisKKy8qCisgKiBlY2FyZF9yZWxlYXNlOiByZWxlYXNlIGFuIGV4cGFuc2lvbiBjYXJkIGVudHJ5CisgKi8KKyNkZWZpbmUgZWNhcmRfcmVsZWFzZShlYykgKChlYyktPmNsYWltZWQgPSAwKQorCisvKgorICogUmVhZCBhIGNodW5rIGZyb20gYW4gZXhwYW5zaW9uIGNhcmQKKyAqIGNkIDogd2hlcmUgdG8gcHV0IHJlYWQgZGF0YQorICogZWMgOiBleHBhbnNpb24gY2FyZCBpbmZvIHN0cnVjdAorICogaWQgOiBpZCBudW1iZXIgdG8gZmluZAorICogbnVtOiAobisxKSd0aCBpZCB0byBmaW5kLgorICovCitleHRlcm4gaW50IGVjYXJkX3JlYWRjaHVuayAoc3RydWN0IGluX2NodW5rX2RpciAqY2QsIHN0cnVjdCBleHBhbnNpb25fY2FyZCAqZWMsIGludCBpZCwgaW50IG51bSk7CisKKy8qCisgKiBPYnRhaW4gdGhlIGFkZHJlc3Mgb2YgYSBjYXJkLiAgVGhpcyByZXR1cm5zIHRoZSAib2xkIHN0eWxlIiBhZGRyZXNzCisgKiBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2RlcHJlY2F0ZWQKK2VjYXJkX2FkZHJlc3Moc3RydWN0IGV4cGFuc2lvbl9jYXJkICplYywgY2FyZF90eXBlX3QgdHlwZSwgY2FyZF9zcGVlZF90IHNwZWVkKQoreworCWV4dGVybiB1bnNpZ25lZCBpbnQgX19lY2FyZF9hZGRyZXNzKHN0cnVjdCBleHBhbnNpb25fY2FyZCAqLAorCQkJCQkgICAgY2FyZF90eXBlX3QsIGNhcmRfc3BlZWRfdCk7CisJcmV0dXJuIF9fZWNhcmRfYWRkcmVzcyhlYywgdHlwZSwgc3BlZWQpOworfQorCisvKgorICogUmVxdWVzdCBhbmQgcmVsZWFzZSBlY2FyZCByZXNvdXJjZXMKKyAqLworZXh0ZXJuIGludCBlY2FyZF9yZXF1ZXN0X3Jlc291cmNlcyhzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKmVjKTsKK2V4dGVybiB2b2lkIGVjYXJkX3JlbGVhc2VfcmVzb3VyY2VzKHN0cnVjdCBleHBhbnNpb25fY2FyZCAqZWMpOworCisjaWZkZWYgRUNBUkRfQworLyogRGVmaW5pdGlvbnMgaW50ZXJuYWwgdG8gZWNhcmQuYyAtIGZvciBpdCdzIHVzZSBvbmx5ISEKKyAqCisgKiBFeHRlcm5hbCBleHBhbnNpb24gY2FyZCBoZWFkZXIgYXMgcmVhZCBmcm9tIHRoZSBjYXJkCisgKi8KK3N0cnVjdCBleF9lY2lkIHsKKwl1bnNpZ25lZCBjaGFyCXJfaXJxOjE7CisJdW5zaWduZWQgY2hhcglyX3plcm86MTsKKwl1bnNpZ25lZCBjaGFyCXJfZmlxOjE7CisJdW5zaWduZWQgY2hhcglyX2lkOjQ7CisJdW5zaWduZWQgY2hhcglyX2E6MTsKKworCXVuc2lnbmVkIGNoYXIJcl9jZDoxOworCXVuc2lnbmVkIGNoYXIJcl9pczoxOworCXVuc2lnbmVkIGNoYXIJcl93OjI7CisJdW5zaWduZWQgY2hhcglyX3IxOjQ7CisKKwl1bnNpZ25lZCBjaGFyCXJfcjI6ODsKKworCXVuc2lnbmVkIGNoYXIJcl9wcm9kWzJdOworCisJdW5zaWduZWQgY2hhcglyX21hbnVbMl07CisKKwl1bnNpZ25lZCBjaGFyCXJfY291bnRyeTsKKworCXVuc2lnbmVkIGNoYXIJcl9maXFtYXNrOworCXVuc2lnbmVkIGNoYXIJcl9maXFvZmZbM107CisKKwl1bnNpZ25lZCBjaGFyCXJfaXJxbWFzazsKKwl1bnNpZ25lZCBjaGFyCXJfaXJxb2ZmWzNdOworfTsKKworLyoKKyAqIENodW5rIGRpcmVjdG9yeSBlbnRyeSBhcyByZWFkIGZyb20gdGhlIGNhcmQKKyAqLworc3RydWN0IGV4X2NodW5rX2RpciB7CisJdW5zaWduZWQgY2hhciByX2lkOworCXVuc2lnbmVkIGNoYXIgcl9sZW5bM107CisJdW5zaWduZWQgbG9uZyByX3N0YXJ0OworCXVuaW9uIHsKKwkJY2hhciBzdHJpbmdbMjU2XTsKKwkJY2hhciBkYXRhWzFdOworCX0gZDsKKyNkZWZpbmUgY19pZCh4KQkJKCh4KS0+cl9pZCkKKyNkZWZpbmUgY19sZW4oeCkJKCh4KS0+cl9sZW5bMF18KCh4KS0+cl9sZW5bMV08PDgpfCgoeCktPnJfbGVuWzJdPDwxNikpCisjZGVmaW5lIGNfc3RhcnQoeCkJKCh4KS0+cl9zdGFydCkKK307CisKKyNlbmRpZgorCitleHRlcm4gc3RydWN0IGJ1c190eXBlIGVjYXJkX2J1c190eXBlOworCisjZGVmaW5lIEVDQVJEX0RFVihfZCkJY29udGFpbmVyX29mKChfZCksIHN0cnVjdCBleHBhbnNpb25fY2FyZCwgZGV2KQorCitzdHJ1Y3QgZWNhcmRfZHJpdmVyIHsKKwlpbnQJCQkoKnByb2JlKShzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKiwgY29uc3Qgc3RydWN0IGVjYXJkX2lkICppZCk7CisJdm9pZAkJCSgqcmVtb3ZlKShzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKik7CisJdm9pZAkJCSgqc2h1dGRvd24pKHN0cnVjdCBleHBhbnNpb25fY2FyZCAqKTsKKwljb25zdCBzdHJ1Y3QgZWNhcmRfaWQJKmlkX3RhYmxlOworCXVuc2lnbmVkIGludAkJaWQ7CisJc3RydWN0IGRldmljZV9kcml2ZXIJZHJ2OworfTsKKworI2RlZmluZSBFQ0FSRF9EUlYoX2QpCWNvbnRhaW5lcl9vZigoX2QpLCBzdHJ1Y3QgZWNhcmRfZHJpdmVyLCBkcnYpCisKKyNkZWZpbmUgZWNhcmRfc2V0X2RydmRhdGEoZWMsZGF0YSkJZGV2X3NldF9kcnZkYXRhKCYoZWMpLT5kZXYsIChkYXRhKSkKKyNkZWZpbmUgZWNhcmRfZ2V0X2RydmRhdGEoZWMpCQlkZXZfZ2V0X2RydmRhdGEoJihlYyktPmRldikKKworaW50IGVjYXJkX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgZWNhcmRfZHJpdmVyICopOwordm9pZCBlY2FyZF9yZW1vdmVfZHJpdmVyKHN0cnVjdCBlY2FyZF9kcml2ZXIgKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2VsZi5oIGIvaW5jbHVkZS9hc20tYXJtL2VsZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiY2VhY2JlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2VsZi5oCkBAIC0wLDAgKzEsMTMzIEBACisjaWZuZGVmIF9fQVNNQVJNX0VMRl9ICisjZGVmaW5lIF9fQVNNQVJNX0VMRl9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworLyoKKyAqIEVMRiByZWdpc3RlciBkZWZpbml0aW9ucy4uCisgKi8KKworI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vdXNlci5oPgorI2luY2x1ZGUgPGFzbS9wcm9jaW5mby5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZnJlZ190WzNdOworCisjZGVmaW5lIEVNX0FSTQk0MAorI2RlZmluZSBFRl9BUk1fQVBDUzI2IDB4MDgKKyNkZWZpbmUgRUZfQVJNX1NPRlRfRkxPQVQgMHgyMDAKKyNkZWZpbmUgRUZfQVJNX0VBQklfTUFTSyAweEZGMDAwMDAwCisKKyNkZWZpbmUgUl9BUk1fTk9ORQkwCisjZGVmaW5lIFJfQVJNX1BDMjQJMQorI2RlZmluZSBSX0FSTV9BQlMzMgkyCisKKyNkZWZpbmUgRUxGX05HUkVHIChzaXplb2YgKHN0cnVjdCBwdF9yZWdzKSAvIHNpemVvZihlbGZfZ3JlZ190KSkKK3R5cGVkZWYgZWxmX2dyZWdfdCBlbGZfZ3JlZ3NldF90W0VMRl9OR1JFR107CisKK3R5cGVkZWYgc3RydWN0IHVzZXJfZnAgZWxmX2ZwcmVnc2V0X3Q7CisKKy8qCisgKiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHdlIGRvbid0IGxvYWQgc29tZXRoaW5nIGZvciB0aGUgd3JvbmcgYXJjaGl0ZWN0dXJlLgorICovCisjZGVmaW5lIGVsZl9jaGVja19hcmNoKHgpICggKCh4KS0+ZV9tYWNoaW5lID09IEVNX0FSTSkgJiYgKEVMRl9QUk9DX09LKCh4KSkpICkKKworLyoKKyAqIFRoZXNlIGFyZSB1c2VkIHRvIHNldCBwYXJhbWV0ZXJzIGluIHRoZSBjb3JlIGR1bXBzLgorICovCisjZGVmaW5lIEVMRl9DTEFTUwlFTEZDTEFTUzMyCisjaWZkZWYgX19BUk1FQl9fCisjZGVmaW5lIEVMRl9EQVRBCUVMRkRBVEEyTVNCOworI2Vsc2UKKyNkZWZpbmUgRUxGX0RBVEEJRUxGREFUQTJMU0I7CisjZW5kaWYKKyNkZWZpbmUgRUxGX0FSQ0gJRU1fQVJNCisKKyNkZWZpbmUgVVNFX0VMRl9DT1JFX0RVTVAKKyNkZWZpbmUgRUxGX0VYRUNfUEFHRVNJWkUJNDA5NgorCisvKiBUaGlzIGlzIHRoZSBsb2NhdGlvbiB0aGF0IGFuIEVUX0RZTiBwcm9ncmFtIGlzIGxvYWRlZCBpZiBleGVjJ2VkLiAgVHlwaWNhbAorICAgdXNlIG9mIHRoaXMgaXMgdG8gaW52b2tlICIuL2xkLnNvIHNvbWVwcm9nIiB0byB0ZXN0IG91dCBhIG5ldyB2ZXJzaW9uIG9mCisgICB0aGUgbG9hZGVyLiAgV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBpdCBpcyBvdXQgb2YgdGhlIHdheSBvZiB0aGUgcHJvZ3JhbQorICAgdGhhdCBpdCB3aWxsICJleGVjIiwgYW5kIHRoYXQgdGhlcmUgaXMgc3VmZmljaWVudCByb29tIGZvciB0aGUgYnJrLiAgKi8KKworI2RlZmluZSBFTEZfRVRfRFlOX0JBU0UJKDIgKiBUQVNLX1NJWkUgLyAzKQorCisvKiBXaGVuIHRoZSBwcm9ncmFtIHN0YXJ0cywgYTEgY29udGFpbnMgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdG8gYmUgCisgICByZWdpc3RlcmVkIHdpdGggYXRleGl0LCBhcyBwZXIgdGhlIFNWUjQgQUJJLiAgQSB2YWx1ZSBvZiAwIG1lYW5zIHdlIAorICAgaGF2ZSBubyBzdWNoIGhhbmRsZXIuICAqLworI2RlZmluZSBFTEZfUExBVF9JTklUKF9yLCBsb2FkX2FkZHIpCShfciktPkFSTV9yMCA9IDAKKworLyogVGhpcyB5aWVsZHMgYSBtYXNrIHRoYXQgdXNlciBwcm9ncmFtcyBjYW4gdXNlIHRvIGZpZ3VyZSBvdXQgd2hhdAorICAgaW5zdHJ1Y3Rpb24gc2V0IHRoaXMgY3B1IHN1cHBvcnRzLiAqLworCisjZGVmaW5lIEVMRl9IV0NBUAkoZWxmX2h3Y2FwKQorCisvKiBUaGlzIHlpZWxkcyBhIHN0cmluZyB0aGF0IGxkLnNvIHdpbGwgdXNlIHRvIGxvYWQgaW1wbGVtZW50YXRpb24KKyAgIHNwZWNpZmljIGxpYnJhcmllcyBmb3Igb3B0aW1pemF0aW9uLiAgVGhpcyBpcyBtb3JlIHNwZWNpZmljIGluCisgICBpbnRlbnQgdGhhbiBwb2tpbmcgYXQgdW5hbWUgb3IgL3Byb2MvY3B1aW5mby4gKi8KKworLyogRm9yIG5vdyB3ZSBqdXN0IHByb3ZpZGUgYSBmYWlybHkgZ2VuZXJhbCBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlCisgICBwcm9jZXNzb3IgZmFtaWx5LiAgVGhpcyBjb3VsZCBiZSBtYWRlIG1vcmUgc3BlY2lmaWMgbGF0ZXIgaWYgc29tZW9uZQorICAgaW1wbGVtZW50ZWQgb3B0aW1pc2F0aW9ucyB0aGF0IHJlcXVpcmUgaXQuICAyNi1iaXQgQ1BVcyBnaXZlIHlvdQorICAgInYxbCIgZm9yIEFSTTIgKG5vIFNXUCkgYW5kICJ2MmwiIGZvciBhbnl0aGluZyBlbHNlIChBUk0xIGlzbid0CisgICBzdXBwb3J0ZWQpLiAgMzItYml0IENQVXMgZ2l2ZSB5b3UgInYzW2xiXSIgZm9yIGFueXRoaW5nIGJhc2VkIG9uIGFuCisgICBBUk02IG9yIEFSTTcgY29yZSBhbmQgImFybXY0W2xiXSIgZm9yIGFueXRoaW5nIGJhc2VkIG9uIGEgU3Ryb25nQVJNLTEKKyAgIGNvcmUuICAqLworCisjZGVmaW5lIEVMRl9QTEFURk9STV9TSVpFIDgKK2V4dGVybiBjaGFyIGVsZl9wbGF0Zm9ybVtdOworI2RlZmluZSBFTEZfUExBVEZPUk0JKGVsZl9wbGF0Zm9ybSkKKworI2lmZGVmIF9fS0VSTkVMX18KKworLyoKKyAqIDMyLWJpdCBjb2RlIGlzIGFsd2F5cyBPSy4gIFNvbWUgY3B1cyBjYW4gZG8gMjYtYml0LCBzb21lIGNhbid0LgorICovCisjZGVmaW5lIEVMRl9QUk9DX09LKHgpCShFTEZfVEhVTUJfT0soeCkgJiYgRUxGXzI2QklUX09LKHgpKQorCisjZGVmaW5lIEVMRl9USFVNQl9PSyh4KSBcCisJKCggKGVsZl9od2NhcCAmIEhXQ0FQX1RIVU1CKSAmJiAoKHgpLT5lX2VudHJ5ICYgMSkgPT0gMSkgfHwgXAorCSAoKHgpLT5lX2VudHJ5ICYgMykgPT0gMCkKKworI2RlZmluZSBFTEZfMjZCSVRfT0soeCkgXAorCSgoIChlbGZfaHdjYXAgJiBIV0NBUF8yNkJJVCkgJiYgKHgpLT5lX2ZsYWdzICYgRUZfQVJNX0FQQ1MyNikgfHwgXAorCSAgKCh4KS0+ZV9mbGFncyAmIEVGX0FSTV9BUENTMjYpID09IDApCisKKyNpZm5kZWYgQ09ORklHX0lXTU1YVAorCisvKiBPbGQgTmV0V2luZGVyIGJpbmFyaWVzIHdlcmUgY29tcGlsZWQgaW4gc3VjaCBhIHdheSB0aGF0IHRoZSBpQkNTCisgICBoZXVyaXN0aWMgYWx3YXlzIHRyaXBzIG9uIHRoZW0uICBVbnRpbCB0aGVzZSBiaW5hcmllcyBiZWNvbWUgdW5jb21tb24KKyAgIGVub3VnaCBub3QgdG8gY2FyZSwgZG9uJ3QgdHJ1c3QgdGhlIGBpYmNzJyBmbGFnIGhlcmUuICBJbiBhbnkgY2FzZQorICAgdGhlcmUgaXMgbm8gb3RoZXIgRUxGIHN5c3RlbSBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IGlCQ1MuCisgICBAQCBDb3VsZCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSB0byBlbmNvdXJhZ2UgdXNlcnMgdG8gdXBncmFkZS4gICovCisjZGVmaW5lIFNFVF9QRVJTT05BTElUWShleCxpYmNzMikgXAorCXNldF9wZXJzb25hbGl0eSgoKGV4KS5lX2ZsYWdzJkVGX0FSTV9BUENTMjYgP1BFUl9MSU5VWCA6UEVSX0xJTlVYXzMyQklUKSkKKworI2Vsc2UKKworLyoKKyAqIEFsbCBpV01NWHQgY2FwYWJsZSBDUFVzIGRvbid0IHN1cHBvcnQgMjYtYml0IG1vZGUuICBZZXQgdGhleSBjYW4gcnVuCisgKiBsZWdhY3kgYmluYXJpZXMgd2hpY2ggdXNlZCB0byBjb250YWluIEZQQTExIGZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9ucworICogdGhhdCBoYXZlIGFsd2F5cyBiZWVuIGVtdWxhdGVkIGJ5IHRoZSBrZXJuZWwuICBQRkExMSBhbmQgaVdNTVh0IG92ZXJsYXAKKyAqIG9uIGNvcHJvY2Vzc29yIDEgc3BhY2UgdGhvdWdoLiAgV2UgdGhlcmVmb3JlIG11c3QgZGVjaWRlIGlmIGdpdmVuIHRhc2sKKyAqIGlzIGFsbG93ZWQgdG8gdXNlIENQIDAgYW5kIDEgZm9yIGlXTU1YdCwgb3IgaWYgdGhleSBzaG91bGQgYmUgYmxvY2tlZAorICogYXQgYWxsIHRpbWVzIGZvciB0aGUgcHJlZmV0Y2ggZXhjZXB0aW9uIGhhbmRsZXIgdG8gY2F0Y2ggRlBBMTEgb3Bjb2RlcworICogYW5kIGVtdWxhdGUgdGhlbS4gIFRoZSBiZXN0IGluZGljYXRpb24gdG8gZGlzY3JpbWluYXRlIHRob3NlIHR3byBjYXNlcworICogaXMgdGhlIFNPRlRfRkxPQVQgZmxhZyBpbiB0aGUgRUxGIGhlYWRlci4KKyAqLworCisjZGVmaW5lIFNFVF9QRVJTT05BTElUWShleCxpYmNzMikgXAorZG8geyBcCisJc2V0X3BlcnNvbmFsaXR5KFBFUl9MSU5VWF8zMkJJVCk7IFwKKwlpZiAoKChleCkuZV9mbGFncyAmIEVGX0FSTV9FQUJJX01BU0spIHx8IFwKKwkgICAgKChleCkuZV9mbGFncyAmIEVGX0FSTV9TT0ZUX0ZMT0FUKSkgXAorCQlzZXRfdGhyZWFkX2ZsYWcoVElGX1VTSU5HX0lXTU1YVCk7IFwKK30gd2hpbGUgKDApCisKKyNlbmRpZgorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vZXJybm8uaCBiL2luY2x1ZGUvYXNtLWFybS9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNjBmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vZXJybm8uaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX0FSTV9FUlJOT19ICisjZGVmaW5lIF9BUk1fRVJSTk9fSAorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvZXJybm8uaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vZmNudGwuaCBiL2luY2x1ZGUvYXNtLWFybS9mY250bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NWI2YmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vZmNudGwuaApAQCAtMCwwICsxLDg3IEBACisjaWZuZGVmIF9BUk1fRkNOVExfSAorI2RlZmluZSBfQVJNX0ZDTlRMX0gKKworLyogb3Blbi9mY250bCAtIE9fU1lOQyBpcyBvbmx5IGltcGxlbWVudGVkIG9uIGJsb2NrcyBkZXZpY2VzIGFuZCBvbiBmaWxlcworICAgbG9jYXRlZCBvbiBhbiBleHQyIGZpbGUgc3lzdGVtICovCisjZGVmaW5lIE9fQUNDTU9ERQkgICAwMDAzCisjZGVmaW5lIE9fUkRPTkxZCSAgICAgMDAKKyNkZWZpbmUgT19XUk9OTFkJICAgICAwMQorI2RlZmluZSBPX1JEV1IJCSAgICAgMDIKKyNkZWZpbmUgT19DUkVBVAkJICAgMDEwMAkvKiBub3QgZmNudGwgKi8KKyNkZWZpbmUgT19FWENMCQkgICAwMjAwCS8qIG5vdCBmY250bCAqLworI2RlZmluZSBPX05PQ1RUWQkgICAwNDAwCS8qIG5vdCBmY250bCAqLworI2RlZmluZSBPX1RSVU5DCQkgIDAxMDAwCS8qIG5vdCBmY250bCAqLworI2RlZmluZSBPX0FQUEVORAkgIDAyMDAwCisjZGVmaW5lIE9fTk9OQkxPQ0sJICAwNDAwMAorI2RlZmluZSBPX05ERUxBWQlPX05PTkJMT0NLCisjZGVmaW5lIE9fU1lOQwkJIDAxMDAwMAorI2RlZmluZSBGQVNZTkMJCSAwMjAwMDAJLyogZmNudGwsIGZvciBCU0QgY29tcGF0aWJpbGl0eSAqLworI2RlZmluZSBPX0RJUkVDVE9SWQkgMDQwMDAwCS8qIG11c3QgYmUgYSBkaXJlY3RvcnkgKi8KKyNkZWZpbmUgT19OT0ZPTExPVwkwMTAwMDAwCS8qIGRvbid0IGZvbGxvdyBsaW5rcyAqLworI2RlZmluZSBPX0RJUkVDVAkwMjAwMDAwCS8qIGRpcmVjdCBkaXNrIGFjY2VzcyBoaW50IC0gY3VycmVudGx5IGlnbm9yZWQgKi8KKyNkZWZpbmUgT19MQVJHRUZJTEUJMDQwMDAwMAorI2RlZmluZSBPX05PQVRJTUUJMDEwMDAwMDAKKworI2RlZmluZSBGX0RVUEZECQkwCS8qIGR1cCAqLworI2RlZmluZSBGX0dFVEZECQkxCS8qIGdldCBjbG9zZV9vbl9leGVjICovCisjZGVmaW5lIEZfU0VURkQJCTIJLyogc2V0L2NsZWFyIGNsb3NlX29uX2V4ZWMgKi8KKyNkZWZpbmUgRl9HRVRGTAkJMwkvKiBnZXQgZmlsZS0+Zl9mbGFncyAqLworI2RlZmluZSBGX1NFVEZMCQk0CS8qIHNldCBmaWxlLT5mX2ZsYWdzICovCisjZGVmaW5lIEZfR0VUTEsJCTUKKyNkZWZpbmUgRl9TRVRMSwkJNgorI2RlZmluZSBGX1NFVExLVwk3CisKKyNkZWZpbmUgRl9TRVRPV04JOAkvKiAgZm9yIHNvY2tldHMuICovCisjZGVmaW5lIEZfR0VUT1dOCTkJLyogIGZvciBzb2NrZXRzLiAqLworI2RlZmluZSBGX1NFVFNJRwkxMAkvKiAgZm9yIHNvY2tldHMuICovCisjZGVmaW5lIEZfR0VUU0lHCTExCS8qICBmb3Igc29ja2V0cy4gKi8KKworI2RlZmluZSBGX0dFVExLNjQJMTIJLyogIHVzaW5nICdzdHJ1Y3QgZmxvY2s2NCcgKi8KKyNkZWZpbmUgRl9TRVRMSzY0CTEzCisjZGVmaW5lIEZfU0VUTEtXNjQJMTQKKworLyogZm9yIEZfW0dFVHxTRVRdRkwgKi8KKyNkZWZpbmUgRkRfQ0xPRVhFQwkxCS8qIGFjdHVhbGx5IGFueXRoaW5nIHdpdGggbG93IGJpdCBzZXQgZ29lcyAqLworCisvKiBmb3IgcG9zaXggZmNudGwoKSBhbmQgbG9ja2YoKSAqLworI2RlZmluZSBGX1JETENLCQkwCisjZGVmaW5lIEZfV1JMQ0sJCTEKKyNkZWZpbmUgRl9VTkxDSwkJMgorCisvKiBmb3Igb2xkIGltcGxlbWVudGF0aW9uIG9mIGJzZCBmbG9jayAoKSAqLworI2RlZmluZSBGX0VYTENLCQk0CS8qIG9yIDMgKi8KKyNkZWZpbmUgRl9TSExDSwkJOAkvKiBvciA0ICovCisKKy8qIGZvciBsZWFzZXMgKi8KKyNkZWZpbmUgRl9JTlBST0dSRVNTCTE2CisKKy8qIG9wZXJhdGlvbnMgZm9yIGJzZCBmbG9jaygpLCBhbHNvIHVzZWQgYnkgdGhlIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiAqLworI2RlZmluZSBMT0NLX1NICQkxCS8qIHNoYXJlZCBsb2NrICovCisjZGVmaW5lIExPQ0tfRVgJCTIJLyogZXhjbHVzaXZlIGxvY2sgKi8KKyNkZWZpbmUgTE9DS19OQgkJNAkvKiBvcidkIHdpdGggb25lIG9mIHRoZSBhYm92ZSB0byBwcmV2ZW50CisJCQkJICAgYmxvY2tpbmcgKi8KKyNkZWZpbmUgTE9DS19VTgkJOAkvKiByZW1vdmUgbG9jayAqLworCisjZGVmaW5lIExPQ0tfTUFORAkzMgkvKiBUaGlzIGlzIGEgbWFuZGF0b3J5IGZsb2NrICovCisjZGVmaW5lIExPQ0tfUkVBRAk2NAkvKiAuLi4gV2hpY2ggYWxsb3dzIGNvbmN1cnJlbnQgcmVhZCBvcGVyYXRpb25zICovCisjZGVmaW5lIExPQ0tfV1JJVEUJMTI4CS8qIC4uLiBXaGljaCBhbGxvd3MgY29uY3VycmVudCB3cml0ZSBvcGVyYXRpb25zICovCisjZGVmaW5lIExPQ0tfUlcJCTE5MgkvKiAuLi4gV2hpY2ggYWxsb3dzIGNvbmN1cnJlbnQgcmVhZCAmIHdyaXRlIG9wcyAqLworCitzdHJ1Y3QgZmxvY2sgeworCXNob3J0IGxfdHlwZTsKKwlzaG9ydCBsX3doZW5jZTsKKwlvZmZfdCBsX3N0YXJ0OworCW9mZl90IGxfbGVuOworCXBpZF90IGxfcGlkOworfTsKKworc3RydWN0IGZsb2NrNjQgeworCXNob3J0ICBsX3R5cGU7CisJc2hvcnQgIGxfd2hlbmNlOworCWxvZmZfdCBsX3N0YXJ0OworCWxvZmZfdCBsX2xlbjsKKwlwaWRfdCAgbF9waWQ7Cit9OworCisjZGVmaW5lIEZfTElOVVhfU1BFQ0lGSUNfQkFTRQkxMDI0CisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9maXEuaCBiL2luY2x1ZGUvYXNtLWFybS9maXEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2JhZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2ZpcS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2ZpcS5oCisgKgorICogU3VwcG9ydCBmb3IgRklRIG9uIEFSTSBhcmNoaXRlY3R1cmVzLgorICogV3JpdHRlbiBieSBQaGlsaXAgQmx1bmRlbGwgPHBoaWxiQGdudS5vcmc+LCAxOTk4CisgKiBSZS13cml0dGVuIGJ5IFJ1c3NlbGwgS2luZworICovCisKKyNpZm5kZWYgX19BU01fRklRX0gKKyNkZWZpbmUgX19BU01fRklRX0gKKworI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKworc3RydWN0IGZpcV9oYW5kbGVyIHsKKwlzdHJ1Y3QgZmlxX2hhbmRsZXIgKm5leHQ7CisJLyogTmFtZQorCSAqLworCWNvbnN0IGNoYXIgKm5hbWU7CisJLyogQ2FsbGVkIHRvIGFzayBkcml2ZXIgdG8gcmVsaW5xdWlzaC8KKwkgKiByZWFjcXVpcmUgRklRCisJICogcmV0dXJuIHplcm8gdG8gYWNjZXB0LCBvciAtPGVycm5vPgorCSAqLworCWludCAoKmZpcV9vcCkodm9pZCAqLCBpbnQgcmVsaW5xdWlzaCk7CisJLyogZGF0YSBmb3IgdGhlIHJlbGlucXVpc2gvcmVhY3F1aXJlIGZ1bmN0aW9ucworCSAqLworCXZvaWQgKmRldl9pZDsKK307CisKK2V4dGVybiBpbnQgY2xhaW1fZmlxKHN0cnVjdCBmaXFfaGFuZGxlciAqZik7CitleHRlcm4gdm9pZCByZWxlYXNlX2ZpcShzdHJ1Y3QgZmlxX2hhbmRsZXIgKmYpOworZXh0ZXJuIHZvaWQgc2V0X2ZpcV9oYW5kbGVyKHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK2V4dGVybiB2b2lkIHNldF9maXFfcmVncyhzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBnZXRfZmlxX3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgZW5hYmxlX2ZpcShpbnQgZmlxKTsKK2V4dGVybiB2b2lkIGRpc2FibGVfZmlxKGludCBmaXEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9mbG9wcHkuaCBiL2luY2x1ZGUvYXNtLWFybS9mbG9wcHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWE2NTdjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2Zsb3BweS5oCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9mbG9wcHkuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBOb3RlIHRoYXQgd2UgZG9uJ3QgdG91Y2ggRkxPUFBZX0RNQSBub3IgRkxPUFBZX0lSUSBoZXJlCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0ZMT1BQWV9ICisjZGVmaW5lIF9fQVNNX0FSTV9GTE9QUFlfSAorI2lmIDAKKyNpbmNsdWRlIDxhc20vYXJjaC9mbG9wcHkuaD4KKyNlbmRpZgorCisjZGVmaW5lIGZkX291dGIodmFsLHBvcnQpCQkJXAorCWRvIHsJCQkJCVwKKwkJaWYgKChwb3J0KSA9PSBGRF9ET1IpCQlcCisJCQlmZF9zZXRkb3IoKHZhbCkpOwlcCisJCWVsc2UJCQkJXAorCQkJb3V0YigodmFsKSwocG9ydCkpOwlcCisJfSB3aGlsZSgwKQorCisjZGVmaW5lIGZkX2luYihwb3J0KQkJaW5iKChwb3J0KSkKKyNkZWZpbmUgZmRfcmVxdWVzdF9pcnEoKQlyZXF1ZXN0X2lycShJUlFfRkxPUFBZRElTSyxmbG9wcHlfaW50ZXJydXB0LFwKKwkJCQkJU0FfSU5URVJSVVBUfFNBX1NBTVBMRV9SQU5ET00sImZsb3BweSIsTlVMTCkKKyNkZWZpbmUgZmRfZnJlZV9pcnEoKQkJZnJlZV9pcnEoSVJRX0ZMT1BQWURJU0ssTlVMTCkKKyNkZWZpbmUgZmRfZGlzYWJsZV9pcnEoKQlkaXNhYmxlX2lycShJUlFfRkxPUFBZRElTSykKKyNkZWZpbmUgZmRfZW5hYmxlX2lycSgpCQllbmFibGVfaXJxKElSUV9GTE9QUFlESVNLKQorCisjZGVmaW5lIGZkX3JlcXVlc3RfZG1hKCkJcmVxdWVzdF9kbWEoRE1BX0ZMT1BQWSwiZmxvcHB5IikKKyNkZWZpbmUgZmRfZnJlZV9kbWEoKQkJZnJlZV9kbWEoRE1BX0ZMT1BQWSkKKyNkZWZpbmUgZmRfZGlzYWJsZV9kbWEoKQlkaXNhYmxlX2RtYShETUFfRkxPUFBZKQorI2RlZmluZSBmZF9lbmFibGVfZG1hKCkJCWVuYWJsZV9kbWEoRE1BX0ZMT1BQWSkKKyNkZWZpbmUgZmRfY2xlYXJfZG1hX2ZmKCkJY2xlYXJfZG1hX2ZmKERNQV9GTE9QUFkpCisjZGVmaW5lIGZkX3NldF9kbWFfbW9kZShtb2RlKQlzZXRfZG1hX21vZGUoRE1BX0ZMT1BQWSwgKG1vZGUpKQorI2RlZmluZSBmZF9zZXRfZG1hX2FkZHIoYWRkcikJc2V0X2RtYV9hZGRyKERNQV9GTE9QUFksIHZpcnRfdG9fYnVzKChhZGRyKSkpCisjZGVmaW5lIGZkX3NldF9kbWFfY291bnQobGVuKQlzZXRfZG1hX2NvdW50KERNQV9GTE9QUFksIChsZW4pKQorI2RlZmluZSBmZF9jYWNoZWZsdXNoKGFkZHIsc3opCisKKy8qIG5lZWQgdG8gY2xlYW4gdXAgZG1hLmggKi8KKyNkZWZpbmUgRE1BX0ZMT1BQWURJU0sJCURNQV9GTE9QUFkKKworLyogRmxvcHB5X3NlbGVjdHMgaXMgdGhlIGxpc3Qgb2YgRE9SJ3MgdG8gc2VsZWN0IGRyaXZlIGZkCisgKgorICogT24gaW5pdGlhbGlzYXRpb24sIHRoZSBmbG9wcHkgbGlzdCBpcyBzY2FubmVkLCBhbmQgdGhlIGRyaXZlcyBhbGxvY2F0ZWQKKyAqIGluIHRoZSBvcmRlciB0aGF0IHRoZXkgYXJlIGZvdW5kLiAgVGhpcyBpcyBkb25lIGJ5IHNlZWtpbmcgdGhlIGRyaXZlCisgKiB0byBhIG5vbi16ZXJvIHRyYWNrLCBhbmQgdGhlbiByZXN0b3JpbmcgaXQgdG8gdHJhY2sgMC4gIElmIGFuIGVycm9yIG9jY3VycywKKyAqIHRoZW4gdGhlcmUgaXMgbm8gZmxvcHB5IGRyaXZlIHByZXNlbnQuICAgICAgIFt0byBiZSBwdXQgYmFjayBpbiBhZ2Fpbl0KKyAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgZmxvcHB5X3NlbGVjdHNbMl1bNF0gPQoreworCXsgMHgxMCwgMHgyMSwgMHgyMywgMHgzMyB9LAorCXsgMHgxMCwgMHgyMSwgMHgyMywgMHgzMyB9Cit9OworCisjZGVmaW5lIGZkX3NldGRvcihkb3IpCQkJCQkJCQlcCitkbyB7CQkJCQkJCQkJCVwKKwlpbnQgbmV3X2RvciA9IChkb3IpOwkJCQkJCQlcCisJaWYgKG5ld19kb3IgJiAweGYwKQkJCQkJCQlcCisJCW5ld19kb3IgPSAobmV3X2RvciAmIDB4MGMpIHwgZmxvcHB5X3NlbGVjdHNbZmRjXVtuZXdfZG9yICYgM107CVwKKwllbHNlCQkJCQkJCQkJXAorCQluZXdfZG9yICY9IDB4MGM7CQkJCQkJXAorCW91dGIobmV3X2RvciwgRkRfRE9SKTsJCQkJCQkJXAorfSB3aGlsZSAoMCkKKworLyoKKyAqIFNvbWVkYXksIHdlJ2xsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoaWNoIGRyaXZlcyBhcmUgcHJlc2VudC4uLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgZmRfc2NhbmRyaXZlcyAodm9pZCkKK3sKKyNpZiAwCisJaW50IGZsb3BweSwgZHJpdmVfY291bnQ7CisKKwlmZF9kaXNhYmxlX2lycSgpOworCXJhd19jbWQgPSAmZGVmYXVsdF9yYXdfY21kOworCXJhd19jbWQtPmZsYWdzID0gRkRfUkFXX1NQSU4gfCBGRF9SQVdfTkVFRF9TRUVLOworCXJhd19jbWQtPnRyYWNrID0gMDsKKwlyYXdfY21kLT5yYXRlID0gPzsKKwlkcml2ZV9jb3VudCA9IDA7CisJZm9yIChmbG9wcHkgPSAwOyBmbG9wcHkgPCA0OyBmbG9wcHkgKyspIHsKKwkJY3VycmVudF9kcml2ZSA9IGRyaXZlX2NvdW50OworCQkvKgorCQkgKiBUdXJuIG9uIGZsb3BweSBtb3RvcgorCQkgKi8KKwkJaWYgKHN0YXJ0X21vdG9yKHJlZG9fZmRfcmVxdWVzdCkpCisJCQljb250aW51ZTsKKwkJLyoKKwkJICogU2V0IHVwIEZEQworCQkgKi8KKwkJZmRjX3NwZWNpZnkoKTsKKwkJLyoKKwkJICogVGVsbCBGREMgdG8gcmVjYWxpYnJhdGUKKwkJICovCisJCW91dHB1dF9ieXRlKEZEX1JFQ0FMSUJSQVRFKTsKKwkJTEFTVF9PVVQoVU5JVChmbG9wcHkpKTsKKwkJLyogd2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSAqLworCQlpZiAoIXN1Y2Nlc3NmdWwpIHsKKwkJCWludCBpOworCQkJZm9yIChpID0gZHJpdmVfY291bnQ7IGkgPCAzOyBpLS0pCisJCQkJZmxvcHB5X3NlbGVjdHNbZmRjXVtpXSA9IGZsb3BweV9zZWxlY3RzW2ZkY11baSArIDFdOworCQkJZmxvcHB5X3NlbGVjdHNbZmRjXVszXSA9IDA7CisJCQlmbG9wcHkgLT0gMTsKKwkJfSBlbHNlCisJCQlkcml2ZV9jb3VudCsrOworCX0KKyNlbHNlCisJZmxvcHB5X3NlbGVjdHNbMF1bMF0gPSAweDEwOworCWZsb3BweV9zZWxlY3RzWzBdWzFdID0gMHgyMTsKKwlmbG9wcHlfc2VsZWN0c1swXVsyXSA9IDB4MjM7CisJZmxvcHB5X3NlbGVjdHNbMF1bM10gPSAweDMzOworI2VuZGlmCit9CisKKyNkZWZpbmUgRkRDMSAoMHgzZjApCisKKyNkZWZpbmUgRkxPUFBZMF9UWVBFIDQKKyNkZWZpbmUgRkxPUFBZMV9UWVBFIDQKKworI2RlZmluZSBOX0ZEQyAxCisjZGVmaW5lIE5fRFJJVkUgNAorCisjZGVmaW5lIEZMT1BQWV9NT1RPUl9NQVNLIDB4ZjAKKworI2RlZmluZSBDUk9TU182NEtCKGEscykgKDApCisKKy8qCisgKiBUaGlzIGFsbG93cyBwZW9wbGUgdG8gcmV2ZXJzZSB0aGUgb3JkZXIgb2YKKyAqIGZkMCBhbmQgZmQxLCBpbiBjYXNlIHRoZWlyIGhhcmR3YXJlIGlzCisgKiBzdHJhbmdlbHkgY29ubmVjdGVkIChhcyBzb21lIFJpc2NQQ3MKKyAqIGFuZCBBNTAwMHMgc2VlbSB0byBiZSkuCisgKi8KK3N0YXRpYyB2b2lkIGRyaXZlc3dhcChpbnQgKmludHMsIGludCBkdW1teSwgaW50IGR1bW15MikKK3sKKwlmbG9wcHlfc2VsZWN0c1swXVswXSBePSBmbG9wcHlfc2VsZWN0c1swXVsxXTsKKwlmbG9wcHlfc2VsZWN0c1swXVsxXSBePSBmbG9wcHlfc2VsZWN0c1swXVswXTsKKwlmbG9wcHlfc2VsZWN0c1swXVswXSBePSBmbG9wcHlfc2VsZWN0c1swXVsxXTsKK30KKworI2RlZmluZSBFWFRSQV9GTE9QUFlfUEFSQU1TICx7ICJkcml2ZXN3YXAiLCAmZHJpdmVzd2FwLCBOVUxMLCAwLCAwIH0KKwkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2Zwc3RhdGUuaCBiL2luY2x1ZGUvYXNtLWFybS9mcHN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc0MzBlMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9mcHN0YXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vZnBzdGF0ZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJNX0ZQU1RBVEVfSAorI2RlZmluZSBfX0FTTV9BUk1fRlBTVEFURV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyoKKyAqIFZGUCBzdG9yYWdlIGFyZWEgaGFzOgorICogIC0gRlBFWEMsIEZQU0NSLCBGUElOU1QgYW5kIEZQSU5TVDIuCisgKiAgLSAxNiBkb3VibGUgcHJlY2lzaW9uIGRhdGEgcmVnaXN0ZXJzCisgKiAgLSBhbiBpbXBsZW1lbnRhdGlvbi1kZXBlbmRhbnQgd29yZCBvZiBzdGF0ZSBmb3IgRkxETVgvRlNUTVgKKyAqIAorICogIEZQRVhDIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvIG9uY2UgdGhlIFZGUCBoYXMgYmVlbiB1c2VkIGluIHRoaXMgcHJvY2Vzcy4KKyAqLworCitzdHJ1Y3QgdmZwX2hhcmRfc3RydWN0IHsKKwlfX3U2NCBmcHJlZ3NbMTZdOworCV9fdTMyIGZwbXhfc3RhdGU7CisJX191MzIgZnBleGM7CisJX191MzIgZnBzY3I7CisJLyoKKwkgKiBWRlAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgc3RhdGUKKwkgKi8KKwlfX3UzMiBmcGluc3Q7CisJX191MzIgZnBpbnN0MjsKK307CisKK3VuaW9uIHZmcF9zdGF0ZSB7CisJc3RydWN0IHZmcF9oYXJkX3N0cnVjdAloYXJkOworfTsKKworZXh0ZXJuIHZvaWQgdmZwX2ZsdXNoX3RocmVhZCh1bmlvbiB2ZnBfc3RhdGUgKik7CitleHRlcm4gdm9pZCB2ZnBfcmVsZWFzZV90aHJlYWQodW5pb24gdmZwX3N0YXRlICopOworCisjZGVmaW5lIEZQX0hBUkRfU0laRSAzNQorCitzdHJ1Y3QgZnBfaGFyZF9zdHJ1Y3QgeworCXVuc2lnbmVkIGludCBzYXZlW0ZQX0hBUkRfU0laRV07CQkvKiBhcyB5ZXQgdW5kZWZpbmVkICovCit9OworCisjZGVmaW5lIEZQX1NPRlRfU0laRSAzNQorCitzdHJ1Y3QgZnBfc29mdF9zdHJ1Y3QgeworCXVuc2lnbmVkIGludCBzYXZlW0ZQX1NPRlRfU0laRV07CQkvKiB1bmRlZmluZWQgaW5mb3JtYXRpb24gKi8KK307CisKK3N0cnVjdCBpd21teHRfc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgc2F2ZVsweDk4L3NpemVvZihpbnQpICsgMV07Cit9OworCit1bmlvbiBmcF9zdGF0ZSB7CisJc3RydWN0IGZwX2hhcmRfc3RydWN0CWhhcmQ7CisJc3RydWN0IGZwX3NvZnRfc3RydWN0CXNvZnQ7CisjaWZkZWYgQ09ORklHX0lXTU1YVAorCXN0cnVjdCBpd21teHRfc3RydWN0CWl3bW14dDsKKyNlbmRpZgorfTsKKworI2RlZmluZSBGUF9TSVpFIChzaXplb2YodW5pb24gZnBfc3RhdGUpIC8gc2l6ZW9mKGludCkpCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9nbHVlLmggYi9pbmNsdWRlL2FzbS1hcm0vZ2x1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyM2UwZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vZ2x1ZS5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9nbHVlLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgUnVzc2VsbCBLaW5nCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBnbHVlIHRvIHN0aWNrIHRoZSBwcm9jZXNzb3Itc3BlY2lmaWMgYml0cworICogIGludG8gdGhlIGtlcm5lbCBpbiBhbiBlZmZpY2llbnQgbWFubmVyLiAgVGhlIGlkZWEgaXMgdG8gdXNlIGJyYW5jaGVzCisgKiAgd2hlbiB3ZSdyZSBvbmx5IHRhcmdldHRpbmcgb25lIGNsYXNzIG9mIFRMQiwgb3IgaW5kaXJlY3QgY2FsbHMKKyAqICB3aGVuIHdlJ3JlIHRhcmdldHRpbmcgbXVsdGlwbGUgY2xhc3NlcyBvZiBUTEJzLgorICovCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKyNpZmRlZiBfX1NURENfXworI2RlZmluZSBfX19fZ2x1ZShuYW1lLGZuKQluYW1lIyNmbgorI2Vsc2UKKyNkZWZpbmUgX19fX2dsdWUobmFtZSxmbikJbmFtZS8qKi9mbgorI2VuZGlmCisjZGVmaW5lIF9fZ2x1ZShuYW1lLGZuKQkJX19fX2dsdWUobmFtZSxmbikKKworCisKKy8qCisgKglEYXRhIEFib3J0IE1vZGVsCisgKgk9PT09PT09PT09PT09PT09CisgKgorICoJV2UgaGF2ZSB0aGUgZm9sbG93aW5nIHRvIGNob29zZSBmcm9tOgorICoJICBhcm02ICAgICAgICAgIC0gQVJNNiBzdHlsZQorICoJICBhcm03CQktIEFSTTcgc3R5bGUKKyAqCSAgdjRfZWFybHkJLSBBUk12NCB3aXRob3V0IFRodW1iIGVhcmx5IGFib3J0IGhhbmRsZXIKKyAqCSAgdjR0X2xhdGUJLSBBUk12NCB3aXRoIFRodW1iIGxhdGUgYWJvcnQgaGFuZGxlcgorICoJICB2NHRfZWFybHkJLSBBUk12NCB3aXRoIFRodW1iIGVhcmx5IGFib3J0IGhhbmRsZXIKKyAqCSAgdjV0ZWpfZWFybHkJLSBBUk12NSB3aXRoIFRodW1iIGFuZCBKYXZhIGVhcmx5IGFib3J0IGhhbmRsZXIKKyAqCSAgeHNjYWxlCS0gQVJNdjUgd2l0aCBUaHVtYiB3aXRoIFhzY2FsZSBleHRlbnNpb25zCisgKgkgIHY2X2Vhcmx5CS0gQVJNdjYgZ2VuZXJpYyBlYXJseSBhYm9ydCBoYW5kbGVyCisgKi8KKyN1bmRlZiBDUFVfQUJPUlRfSEFORExFUgorI3VuZGVmIE1VTFRJX0FCT1JUCisKKyNpZiBkZWZpbmVkKENPTkZJR19DUFVfQVJNNjEwKQorIyBpZmRlZiBDUFVfQUJPUlRfSEFORExFUgorIyAgZGVmaW5lIE1VTFRJX0FCT1JUIDEKKyMgZWxzZQorIyAgZGVmaW5lIENQVV9BQk9SVF9IQU5ETEVSIGNwdV9hcm02X2RhdGFfYWJvcnQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX0FSTTcxMCkKKyMgaWZkZWYgQ1BVX0FCT1JUX0hBTkRMRVIKKyMgIGRlZmluZSBNVUxUSV9BQk9SVCAxCisjIGVsc2UKKyMgIGRlZmluZSBDUFVfQUJPUlRfSEFORExFUiBjcHVfYXJtN19kYXRhX2Fib3J0CisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19DUFVfQUJSVF9MVjRUCisjIGlmZGVmIENQVV9BQk9SVF9IQU5ETEVSCisjICBkZWZpbmUgTVVMVElfQUJPUlQgMQorIyBlbHNlCisjICBkZWZpbmUgQ1BVX0FCT1JUX0hBTkRMRVIgdjR0X2xhdGVfYWJvcnQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9BQlJUX0VWNAorIyBpZmRlZiBDUFVfQUJPUlRfSEFORExFUgorIyAgZGVmaW5lIE1VTFRJX0FCT1JUIDEKKyMgZWxzZQorIyAgZGVmaW5lIENQVV9BQk9SVF9IQU5ETEVSIHY0X2Vhcmx5X2Fib3J0CisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19DUFVfQUJSVF9FVjRUCisjIGlmZGVmIENQVV9BQk9SVF9IQU5ETEVSCisjICBkZWZpbmUgTVVMVElfQUJPUlQgMQorIyBlbHNlCisjICBkZWZpbmUgQ1BVX0FCT1JUX0hBTkRMRVIgdjR0X2Vhcmx5X2Fib3J0CisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19DUFVfQUJSVF9FVjVUSgorIyBpZmRlZiBDUFVfQUJPUlRfSEFORExFUgorIyAgZGVmaW5lIE1VTFRJX0FCT1JUIDEKKyMgZWxzZQorIyAgZGVmaW5lIENQVV9BQk9SVF9IQU5ETEVSIHY1dGpfZWFybHlfYWJvcnQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9BQlJUX0VWNVQKKyMgaWZkZWYgQ1BVX0FCT1JUX0hBTkRMRVIKKyMgIGRlZmluZSBNVUxUSV9BQk9SVCAxCisjIGVsc2UKKyMgIGRlZmluZSBDUFVfQUJPUlRfSEFORExFUiB2NXRfZWFybHlfYWJvcnQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9BQlJUX0VWNgorIyBpZmRlZiBDUFVfQUJPUlRfSEFORExFUgorIyAgZGVmaW5lIE1VTFRJX0FCT1JUIDEKKyMgZWxzZQorIyAgZGVmaW5lIENQVV9BQk9SVF9IQU5ETEVSIHY2X2Vhcmx5X2Fib3J0CisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBDUFVfQUJPUlRfSEFORExFUgorI2Vycm9yIFVua25vd24gZGF0YSBhYm9ydCBoYW5kbGVyIHR5cGUKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkaXJxLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZGlycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Y2NiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZGlycS5oCkBAIC0wLDAgKzEsMzIgQEAKKyNpZm5kZWYgX19BU01fSEFSRElSUV9ICisjZGVmaW5lIF9fQVNNX0hBUkRJUlFfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvY2FjaGUuaD4KKyNpbmNsdWRlIDxsaW51eC90aHJlYWRzLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgaW50IF9fc29mdGlycV9wZW5kaW5nOworfSBfX19fY2FjaGVsaW5lX2FsaWduZWQgaXJxX2NwdXN0YXRfdDsKKworI2luY2x1ZGUgPGxpbnV4L2lycV9jcHVzdGF0Lmg+CS8qIFN0YW5kYXJkIG1hcHBpbmdzIGZvciBpcnFfY3B1c3RhdF90IGFib3ZlICovCisKKyNpZiBOUl9JUlFTID4gMjU2CisjZGVmaW5lIEhBUkRJUlFfQklUUwk5CisjZWxzZQorI2RlZmluZSBIQVJESVJRX0JJVFMJOAorI2VuZGlmCisKKy8qCisgKiBUaGUgaGFyZGlycSBtYXNrIGhhcyB0byBiZSBsYXJnZSBlbm91Z2ggdG8gaGF2ZSBzcGFjZQorICogZm9yIHBvdGVudGlhbGx5IGFsbCBJUlEgc291cmNlcyBpbiB0aGUgc3lzdGVtIG5lc3RpbmcKKyAqIG9uIGEgc2luZ2xlIENQVToKKyAqLworI2lmICgxIDw8IEhBUkRJUlFfQklUUykgPCBOUl9JUlFTCisjIGVycm9yIEhBUkRJUlFfQklUUyBpcyB0b28gbG93IQorI2VuZGlmCisKKyNkZWZpbmUgX19BUkNIX0lSUV9FWElUX0lSUVNfRElTQUJMRUQJMQorCisjZW5kaWYgLyogX19BU01fSEFSRElSUV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZDFhNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUuaApAQCAtMCwwICsxLDE4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NiBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBDb21tb24gaGFyZHdhcmUgZGVmaW5pdGlvbnMKKyAqLworCisjaWZuZGVmIF9fQVNNX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fSEFSRFdBUkVfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYS5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWU2ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmEuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLCBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgQVNNQVJNX0FNQkFfSAorI2RlZmluZSBBU01BUk1fQU1CQV9ICisKKyNkZWZpbmUgQU1CQV9OUl9JUlFTCTIKKworc3RydWN0IGFtYmFfZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2aWNlCQlkZXY7CisJc3RydWN0IHJlc291cmNlCQlyZXM7CisJdTY0CQkJZG1hX21hc2s7CisJdW5zaWduZWQgaW50CQlwZXJpcGhpZDsKKwl1bnNpZ25lZCBpbnQJCWlycVtBTUJBX05SX0lSUVNdOworfTsKKworc3RydWN0IGFtYmFfaWQgeworCXVuc2lnbmVkIGludAkJaWQ7CisJdW5zaWduZWQgaW50CQltYXNrOworCXZvaWQJCQkqZGF0YTsKK307CisKK3N0cnVjdCBhbWJhX2RyaXZlciB7CisJc3RydWN0IGRldmljZV9kcml2ZXIJZHJ2OworCWludAkJCSgqcHJvYmUpKHN0cnVjdCBhbWJhX2RldmljZSAqLCB2b2lkICopOworCWludAkJCSgqcmVtb3ZlKShzdHJ1Y3QgYW1iYV9kZXZpY2UgKik7CisJdm9pZAkJCSgqc2h1dGRvd24pKHN0cnVjdCBhbWJhX2RldmljZSAqKTsKKwlpbnQJCQkoKnN1c3BlbmQpKHN0cnVjdCBhbWJhX2RldmljZSAqLCBwbV9tZXNzYWdlX3QpOworCWludAkJCSgqcmVzdW1lKShzdHJ1Y3QgYW1iYV9kZXZpY2UgKik7CisJc3RydWN0IGFtYmFfaWQJCSppZF90YWJsZTsKK307CisKKyNkZWZpbmUgYW1iYV9nZXRfZHJ2ZGF0YShkKQlkZXZfZ2V0X2RydmRhdGEoJmQtPmRldikKKyNkZWZpbmUgYW1iYV9zZXRfZHJ2ZGF0YShkLHApCWRldl9zZXRfZHJ2ZGF0YSgmZC0+ZGV2LCBwKQorCitpbnQgYW1iYV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGFtYmFfZHJpdmVyICopOwordm9pZCBhbWJhX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBhbWJhX2RyaXZlciAqKTsKK2ludCBhbWJhX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgYW1iYV9kZXZpY2UgKiwgc3RydWN0IHJlc291cmNlICopOwordm9pZCBhbWJhX2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBhbWJhX2RldmljZSAqKTsKK3N0cnVjdCBhbWJhX2RldmljZSAqYW1iYV9maW5kX2RldmljZShjb25zdCBjaGFyICosIHN0cnVjdCBkZXZpY2UgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOworaW50IGFtYmFfcmVxdWVzdF9yZWdpb25zKHN0cnVjdCBhbWJhX2RldmljZSAqLCBjb25zdCBjaGFyICopOwordm9pZCBhbWJhX3JlbGVhc2VfcmVnaW9ucyhzdHJ1Y3QgYW1iYV9kZXZpY2UgKik7CisKKyNkZWZpbmUgYW1iYV9jb25maWcoZCkJKCgoZCktPnBlcmlwaGlkID4+IDI0KSAmIDB4ZmYpCisjZGVmaW5lIGFtYmFfcmV2KGQpCSgoKGQpLT5wZXJpcGhpZCA+PiAyMCkgJiAweDBmKQorI2RlZmluZSBhbWJhX21hbmYoZCkJKCgoZCktPnBlcmlwaGlkID4+IDEyKSAmIDB4ZmYpCisjZGVmaW5lIGFtYmFfcGFydChkKQkoKGQpLT5wZXJpcGhpZCAmIDB4ZmZmKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX2NsY2QuaCBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX2NsY2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTQ5YmU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmFfY2xjZC5oCkBAIC0wLDAgKzEsMjY0IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmFfY2xjZC5oIC0tIEludGVncmF0b3IgTENEIHBhbmVsLgorICoKKyAqIERhdmlkIEEgUnVzbGluZworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBBUk0gTGltaXRlZAorICoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqLworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisKKy8qCisgKiBDTENEIENvbnRyb2xsZXIgSW50ZXJuYWwgUmVnaXN0ZXIgYWRkcmVzc2VzCisgKi8KKyNkZWZpbmUgQ0xDRF9USU0wCQkweDAwMDAwMDAwCisjZGVmaW5lIENMQ0RfVElNMSAJCTB4MDAwMDAwMDQKKyNkZWZpbmUgQ0xDRF9USU0yIAkJMHgwMDAwMDAwOAorI2RlZmluZSBDTENEX1RJTTMgCQkweDAwMDAwMDBjCisjZGVmaW5lIENMQ0RfVUJBUyAJCTB4MDAwMDAwMTAKKyNkZWZpbmUgQ0xDRF9MQkFTIAkJMHgwMDAwMDAxNAorCisjaWZuZGVmIENPTkZJR19BUkNIX1ZFUlNBVElMRQorI2RlZmluZSBDTENEX0lFTkIgCQkweDAwMDAwMDE4CisjZGVmaW5lIENMQ0RfQ05UTCAJCTB4MDAwMDAwMWMKKyNlbHNlCisvKgorICogU29tZW9uZSByZWFycmFuZ2VkIHRoZXNlIHR3byByZWdpc3RlcnMgb24gdGhlIFZlcnNhdGlsZQorICogcGxhdGZvcm0uLi4KKyAqLworI2RlZmluZSBDTENEX0lFTkIgCQkweDAwMDAwMDFjCisjZGVmaW5lIENMQ0RfQ05UTCAJCTB4MDAwMDAwMTgKKyNlbmRpZgorCisjZGVmaW5lIENMQ0RfU1RBVCAJCTB4MDAwMDAwMjAKKyNkZWZpbmUgQ0xDRF9JTlRSIAkJMHgwMDAwMDAyNAorI2RlZmluZSBDTENEX1VDVVIgCQkweDAwMDAwMDI4CisjZGVmaW5lIENMQ0RfTENVUiAJCTB4MDAwMDAwMkMKKyNkZWZpbmUgQ0xDRF9QQUxMIAkJMHgwMDAwMDIwMAorI2RlZmluZSBDTENEX1BBTEVUVEUJCTB4MDAwMDAyMDAKKworI2RlZmluZSBUSU0yX0NMS1NFTAkJKDEgPDwgNSkKKyNkZWZpbmUgVElNMl9JVlMJCSgxIDw8IDExKQorI2RlZmluZSBUSU0yX0lIUwkJKDEgPDwgMTIpCisjZGVmaW5lIFRJTTJfSVBDCQkoMSA8PCAxMykKKyNkZWZpbmUgVElNMl9JT0UJCSgxIDw8IDE0KQorI2RlZmluZSBUSU0yX0JDRAkJKDEgPDwgMjYpCisKKyNkZWZpbmUgQ05UTF9MQ0RFTgkJKDEgPDwgMCkKKyNkZWZpbmUgQ05UTF9MQ0RCUFAxCQkoMCA8PCAxKQorI2RlZmluZSBDTlRMX0xDREJQUDIJCSgxIDw8IDEpCisjZGVmaW5lIENOVExfTENEQlBQNAkJKDIgPDwgMSkKKyNkZWZpbmUgQ05UTF9MQ0RCUFA4CQkoMyA8PCAxKQorI2RlZmluZSBDTlRMX0xDREJQUDE2CQkoNCA8PCAxKQorI2RlZmluZSBDTlRMX0xDREJQUDI0CQkoNSA8PCAxKQorI2RlZmluZSBDTlRMX0xDREJXCQkoMSA8PCA0KQorI2RlZmluZSBDTlRMX0xDRFRGVAkJKDEgPDwgNSkKKyNkZWZpbmUgQ05UTF9MQ0RNT05POAkJKDEgPDwgNikKKyNkZWZpbmUgQ05UTF9MQ0REVUFMCQkoMSA8PCA3KQorI2RlZmluZSBDTlRMX0JHUgkJKDEgPDwgOCkKKyNkZWZpbmUgQ05UTF9CRUJPCQkoMSA8PCA5KQorI2RlZmluZSBDTlRMX0JFUE8JCSgxIDw8IDEwKQorI2RlZmluZSBDTlRMX0xDRFBXUgkJKDEgPDwgMTEpCisjZGVmaW5lIENOVExfTENEVkNPTVAoeCkJKCh4KSA8PCAxMikKKyNkZWZpbmUgQ05UTF9MRE1BRklGT1RJTUUJKDEgPDwgMTUpCisjZGVmaW5lIENOVExfV0FURVJNQVJLCQkoMSA8PCAxNikKKworc3RydWN0IGNsY2RfcGFuZWwgeworCXN0cnVjdCBmYl92aWRlb21vZGUJbW9kZTsKKwlzaWduZWQgc2hvcnQJCXdpZHRoOwkvKiB3aWR0aCBpbiBtbSAqLworCXNpZ25lZCBzaG9ydAkJaGVpZ2h0OwkvKiBoZWlnaHQgaW4gbW0gKi8KKwl1MzIJCQl0aW0yOworCXUzMgkJCXRpbTM7CisJdTMyCQkJY250bDsKKwl1bnNpZ25lZCBpbnQJCWJwcDo4LAorCQkJCWZpeGVkdGltaW5nczoxLAorCQkJCWdyYXlzY2FsZToxOworCXVuc2lnbmVkIGludAkJY29ubmVjdG9yOworfTsKKworc3RydWN0IGNsY2RfcmVncyB7CisJdTMyCQkJdGltMDsKKwl1MzIJCQl0aW0xOworCXUzMgkJCXRpbTI7CisJdTMyCQkJdGltMzsKKwl1MzIJCQljbnRsOworCXVuc2lnbmVkIGxvbmcJCXBpeGNsb2NrOworfTsKKworc3RydWN0IGNsY2RfZmI7CisKKy8qCisgKiB0aGUgYm9hcmQtdHlwZSBzcGVjaWZpYyByb3V0aW5lcworICovCitzdHJ1Y3QgY2xjZF9ib2FyZCB7CisJY29uc3QgY2hhciAqbmFtZTsKKworCS8qCisJICogT3B0aW9uYWwuICBDaGVjayB3aGV0aGVyIHRoZSB2YXIgc3RydWN0dXJlIGlzIGFjY2VwdGFibGUKKwkgKiBmb3IgdGhpcyBkaXNwbGF5LgorCSAqLworCWludAkoKmNoZWNrKShzdHJ1Y3QgY2xjZF9mYiAqZmIsIHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyKTsKKworCS8qCisJICogQ29tcHVsc2FyeS4gIERlY29kZSBmYi0+ZmIudmFyIGludG8gcmVncy0+Ki4gIEluIHRoZSBjYXNlIG9mCisJICogZml4ZWQgdGltaW5nLCBzZXQgcmVncy0+KiB0byB0aGUgcmVnaXN0ZXIgdmFsdWVzIHJlcXVpcmVkLgorCSAqLworCXZvaWQJKCpkZWNvZGUpKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGNsY2RfcmVncyAqcmVncyk7CisKKwkvKgorCSAqIE9wdGlvbmFsLiAgRGlzYWJsZSBhbnkgZXh0cmEgZGlzcGxheSBoYXJkd2FyZS4KKwkgKi8KKwl2b2lkCSgqZGlzYWJsZSkoc3RydWN0IGNsY2RfZmIgKik7CisKKwkvKgorCSAqIE9wdGlvbmFsLiAgRW5hYmxlIGFueSBleHRyYSBkaXNwbGF5IGhhcmR3YXJlLgorCSAqLworCXZvaWQJKCplbmFibGUpKHN0cnVjdCBjbGNkX2ZiICopOworCisJLyoKKwkgKiBTZXR1cCBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJ0cyBvZiBDTENEIGRyaXZlcgorCSAqLworCWludAkoKnNldHVwKShzdHJ1Y3QgY2xjZF9mYiAqKTsKKworCS8qCisJICogbW1hcCB0aGUgZnJhbWVidWZmZXIgbWVtb3J5CisJICovCisJaW50CSgqbW1hcCkoc3RydWN0IGNsY2RfZmIgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOworCisJLyoKKwkgKiBSZW1vdmUgcGxhdGZvcm0gc3BlY2lmaWMgcGFydHMgb2YgQ0xDRCBkcml2ZXIKKwkgKi8KKwl2b2lkCSgqcmVtb3ZlKShzdHJ1Y3QgY2xjZF9mYiAqKTsKK307CisKK3N0cnVjdCBhbWJhX2RldmljZTsKK3N0cnVjdCBjbGs7CisKKy8qIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGVhY2ggZnJhbWUgYnVmZmVyIGRldmljZSB3ZSBmaW5kICovCitzdHJ1Y3QgY2xjZF9mYiB7CisJc3RydWN0IGZiX2luZm8JCWZiOworCXN0cnVjdCBhbWJhX2RldmljZQkqZGV2OworCXN0cnVjdCBjbGsJCSpjbGs7CisJc3RydWN0IGNsY2RfcGFuZWwJKnBhbmVsOworCXN0cnVjdCBjbGNkX2JvYXJkCSpib2FyZDsKKwl2b2lkCQkJKmJvYXJkX2RhdGE7CisJdm9pZCBfX2lvbWVtCQkqcmVnczsKKwl1MzIJCQljbGNkX2NudGw7CisJdTMyCQkJY21hcFsxNl07Cit9OworCitzdGF0aWMgaW5saW5lIHZvaWQgY2xjZGZiX2RlY29kZShzdHJ1Y3QgY2xjZF9mYiAqZmIsIHN0cnVjdCBjbGNkX3JlZ3MgKnJlZ3MpCit7CisJdTMyIHZhbDsKKworCS8qCisJICogUHJvZ3JhbSB0aGUgQ0xDRCBjb250cm9sbGVyIHJlZ2lzdGVycyBhbmQgc3RhcnQgdGhlIENMQ0QKKwkgKi8KKwl2YWwgPSAoKGZiLT5mYi52YXIueHJlcyAvIDE2KSAtIDEpIDw8IDI7CisJdmFsIHw9IChmYi0+ZmIudmFyLmhzeW5jX2xlbiAtIDEpIDw8IDg7CisJdmFsIHw9IChmYi0+ZmIudmFyLnJpZ2h0X21hcmdpbiAtIDEpIDw8IDE2OworCXZhbCB8PSAoZmItPmZiLnZhci5sZWZ0X21hcmdpbiAtIDEpIDw8IDI0OworCXJlZ3MtPnRpbTAgPSB2YWw7CisKKwl2YWwgPSBmYi0+ZmIudmFyLnlyZXMgLSAxOworCXZhbCB8PSAoZmItPmZiLnZhci52c3luY19sZW4gLSAxKSA8PCAxMDsKKwl2YWwgfD0gZmItPmZiLnZhci5sb3dlcl9tYXJnaW4gPDwgMTY7CisJdmFsIHw9IGZiLT5mYi52YXIudXBwZXJfbWFyZ2luIDw8IDI0OworCXJlZ3MtPnRpbTEgPSB2YWw7CisKKwl2YWwgPSBmYi0+cGFuZWwtPnRpbTI7CisJdmFsIHw9IGZiLT5mYi52YXIuc3luYyAmIEZCX1NZTkNfSE9SX0hJR0hfQUNUICA/IDAgOiBUSU0yX0lIUzsKKwl2YWwgfD0gZmItPmZiLnZhci5zeW5jICYgRkJfU1lOQ19WRVJUX0hJR0hfQUNUID8gMCA6IFRJTTJfSVZTOworCisJaWYgKGZiLT5wYW5lbC0+Y250bCAmIENOVExfTENEVEZUKQorCQl2YWwgfD0gKGZiLT5mYi52YXIueHJlc192aXJ0dWFsIC0gMSkgPDwgMTY7CisJZWxzZSBpZiAoZmItPnBhbmVsLT5jbnRsICYgQ05UTF9MQ0RCVykKKwkJcHJpbnRrKCJ3aGF0IHZhbHVlIGZvciBDUEwgZm9yIHN0bm1vbm8gcGFuZWxzPyIpOworCWVsc2UKKwkJdmFsIHw9ICgoZmItPmZiLnZhci54cmVzX3ZpcnR1YWwgKiA4IC8gMykgLSAxKSA8PCAxNjsKKwlyZWdzLT50aW0yID0gdmFsOworCisJcmVncy0+dGltMyA9IGZiLT5wYW5lbC0+dGltMzsKKworCXZhbCA9IGZiLT5wYW5lbC0+Y250bDsKKwlpZiAoZmItPmZiLnZhci5ncmF5c2NhbGUpCisJCXZhbCB8PSBDTlRMX0xDREJXOworCisJc3dpdGNoIChmYi0+ZmIudmFyLmJpdHNfcGVyX3BpeGVsKSB7CisJY2FzZSAxOgorCQl2YWwgfD0gQ05UTF9MQ0RCUFAxOworCQlicmVhazsKKwljYXNlIDI6CisJCXZhbCB8PSBDTlRMX0xDREJQUDI7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJdmFsIHw9IENOVExfTENEQlBQNDsKKwkJYnJlYWs7CisJY2FzZSA4OgorCQl2YWwgfD0gQ05UTF9MQ0RCUFA4OworCQlicmVhazsKKwljYXNlIDE2OgorCQl2YWwgfD0gQ05UTF9MQ0RCUFAxNjsKKwkJYnJlYWs7CisJY2FzZSAyNDoKKwkJdmFsIHw9IENOVExfTENEQlBQMjQ7CisJCWJyZWFrOworCX0KKworCXJlZ3MtPmNudGwgPSB2YWw7CisJcmVncy0+cGl4Y2xvY2sgPSBmYi0+ZmIudmFyLnBpeGNsb2NrOworfQorCitzdGF0aWMgaW5saW5lIGludCBjbGNkZmJfY2hlY2soc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikKK3sKKwl2YXItPnhyZXNfdmlydHVhbCA9IHZhci0+eHJlcyA9ICh2YXItPnhyZXMgKyA3KSAmIH43OworCXZhci0+eXJlc192aXJ0dWFsID0gdmFyLT55cmVzOworCisjZGVmaW5lIENIRUNLKGUsbCxoKSAodmFyLT5lIDwgbCB8fCB2YXItPmUgPiBoKQorCWlmIChDSEVDSyhyaWdodF9tYXJnaW4sICg1KzEpLCAyNTYpIHx8CS8qIGJhY2sgcG9yY2ggKi8KKwkgICAgQ0hFQ0sobGVmdF9tYXJnaW4sICg1KzEpLCAyNTYpIHx8CS8qIGZyb250IHBvcmNoICovCisJICAgIENIRUNLKGhzeW5jX2xlbiwgKDUrMSksIDI1NikgfHwKKwkgICAgdmFyLT54cmVzID4gNDA5NiB8fAorCSAgICB2YXItPmxvd2VyX21hcmdpbiA+IDI1NSB8fAkJLyogYmFjayBwb3JjaCAqLworCSAgICB2YXItPnVwcGVyX21hcmdpbiA+IDI1NSB8fAkJLyogZnJvbnQgcG9yY2ggKi8KKwkgICAgdmFyLT52c3luY19sZW4gPiAzMiB8fAorCSAgICB2YXItPnlyZXMgPiAxMDI0KQorCQlyZXR1cm4gLUVJTlZBTDsKKyN1bmRlZiBDSEVDSworCisJLyogc2luZ2xlIHBhbmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDEpICovCisJLyogZHVhbCBwYW5lbCBtb2RlOiBQQ0QgPSBtYXgoUENELCA1KSAqLworCisJLyoKKwkgKiBZb3UgY2FuJ3QgY2hhbmdlIHRoZSBncmF5c2NhbGUgc2V0dGluZywgYW5kCisJICogd2UgY2FuIG9ubHkgZG8gbm9uLWludGVybGFjZWQgdmlkZW8uCisJICovCisJaWYgKHZhci0+Z3JheXNjYWxlICE9IGZiLT5mYi52YXIuZ3JheXNjYWxlIHx8CisJICAgICh2YXItPnZtb2RlICYgRkJfVk1PREVfTUFTSykgIT0gRkJfVk1PREVfTk9OSU5URVJMQUNFRCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKyNkZWZpbmUgQ0hFQ0soZSkgKHZhci0+ZSAhPSBmYi0+ZmIudmFyLmUpCisJaWYgKGZiLT5wYW5lbC0+Zml4ZWR0aW1pbmdzICYmCisJICAgIChDSEVDSyh4cmVzKQkJfHwKKwkgICAgIENIRUNLKHlyZXMpCQl8fAorCSAgICAgQ0hFQ0soYml0c19wZXJfcGl4ZWwpCXx8CisJICAgICBDSEVDSyhwaXhjbG9jaykJCXx8CisJICAgICBDSEVDSyhsZWZ0X21hcmdpbikJCXx8CisJICAgICBDSEVDSyhyaWdodF9tYXJnaW4pCXx8CisJICAgICBDSEVDSyh1cHBlcl9tYXJnaW4pCXx8CisJICAgICBDSEVDSyhsb3dlcl9tYXJnaW4pCXx8CisJICAgICBDSEVDSyhoc3luY19sZW4pCQl8fAorCSAgICAgQ0hFQ0sodnN5bmNfbGVuKQkJfHwKKwkgICAgIENIRUNLKHN5bmMpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisjdW5kZWYgQ0hFQ0sKKworCXZhci0+bm9uc3RkID0gMDsKKwl2YXItPmFjY2VsX2ZsYWdzID0gMDsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmFfa21pLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9rbWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzllNWJlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2FtYmFfa21pLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9rbWkuaAorICoKKyAqICBJbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3IgQU1CQSBLTUkgcG9ydHMKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgRnJvbSBBUk0gUHJpbWVDZWxsKHRtKSBQUzIgS2V5Ym9hcmQvTW91c2UgSW50ZXJmYWNlIChQTDA1MCkgVGVjaG5pY2FsCisgKiAgUmVmZXJlbmNlIE1hbnVhbCAtIEFSTSBEREkgMDE0M0IgLSBzZWUgaHR0cDovL3d3dy5hcm0uY29tLworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgQVNNX0FSTV9IQVJEV0FSRV9BTUJBX0tNSV9ICisjZGVmaW5lIEFTTV9BUk1fSEFSRFdBUkVfQU1CQV9LTUlfSAorCisvKgorICogS01JIGNvbnRyb2wgcmVnaXN0ZXI6CisgKiAgS01JQ1JfVFlQRSAgICAgICAwID0gUFMyL0FUIG1vZGUsIDEgPSBObyBsaW5lIGNvbnRyb2wgYml0IG1vZGUKKyAqICBLTUlDUl9SWElOVFJFTiAgIDEgPSBlbmFibGUgUlggaW50ZXJydXB0cworICogIEtNSUNSX1RYSU5UUkVOICAgMSA9IGVuYWJsZSBUWCBpbnRlcnJ1cHRzCisgKiAgS01JQ1JfRU4gICAgICAgICAxID0gZW5hYmxlIEtNSQorICogIEtNSUNSX0ZEICAgICAgICAgMSA9IGZvcmNlIEtNSSBkYXRhIGxvdworICogIEtNSUNSX0ZDICAgICAgICAgMSA9IGZvcmNlIEtNSSBjbG9jayBsb3cKKyAqLworI2RlZmluZSBLTUlDUgkJKEtNSV9CQVNFICsgMHgwMCkKKyNkZWZpbmUgS01JQ1JfVFlQRQkJKDEgPDwgNSkKKyNkZWZpbmUgS01JQ1JfUlhJTlRSRU4JCSgxIDw8IDQpCisjZGVmaW5lIEtNSUNSX1RYSU5UUkVOCQkoMSA8PCAzKQorI2RlZmluZSBLTUlDUl9FTgkJKDEgPDwgMikKKyNkZWZpbmUgS01JQ1JfRkQJCSgxIDw8IDEpCisjZGVmaW5lIEtNSUNSX0ZDCQkoMSA8PCAwKQorCisvKgorICogS01JIHN0YXR1cyByZWdpc3RlcjoKKyAqICBLTUlTVEFUX1RYRU1QVFkgIDEgPSB0cmFuc21pdHRlciByZWdpc3RlciBlbXB0eQorICogIEtNSVNUQVRfVFhCVVNZICAgMSA9IGN1cnJlbnRseSBzZW5kaW5nIGRhdGEKKyAqICBLTUlTVEFUX1JYRlVMTCAgIDEgPSByZWNlaXZlciByZWdpc3RlciByZWFkeSB0byBiZSByZWFkCisgKiAgS01JU1RBVF9SWEJVU1kgICAxID0gY3VycmVudGx5IHJlY2VpdmluZyBkYXRhCisgKiAgS01JU1RBVF9SWFBBUklUWSBwYXJpdHkgb2YgbGFzdCBkYXRhYnl0ZSByZWNlaXZlZAorICogIEtNSVNUQVRfSUMgICAgICAgY3VycmVudCBsZXZlbCBvZiBLTUkgY2xvY2sgaW5wdXQKKyAqICBLTUlTVEFUX0lEICAgICAgIGN1cnJlbnQgbGV2ZWwgb2YgS01JIGRhdGEgaW5wdXQKKyAqLworI2RlZmluZSBLTUlTVEFUCQkoS01JX0JBU0UgKyAweDA0KQorI2RlZmluZSBLTUlTVEFUX1RYRU1QVFkJCSgxIDw8IDYpCisjZGVmaW5lIEtNSVNUQVRfVFhCVVNZCQkoMSA8PCA1KQorI2RlZmluZSBLTUlTVEFUX1JYRlVMTAkJKDEgPDwgNCkKKyNkZWZpbmUgS01JU1RBVF9SWEJVU1kJCSgxIDw8IDMpCisjZGVmaW5lIEtNSVNUQVRfUlhQQVJJVFkJKDEgPDwgMikKKyNkZWZpbmUgS01JU1RBVF9JQwkJKDEgPDwgMSkKKyNkZWZpbmUgS01JU1RBVF9JRAkJKDEgPDwgMCkKKworLyoKKyAqIEtNSSBkYXRhIHJlZ2lzdGVyCisgKi8KKyNkZWZpbmUgS01JREFUQQkJKEtNSV9CQVNFICsgMHgwOCkKKworLyoKKyAqIEtNSSBjbG9jayBkaXZpc29yOiB0byBnZW5lcmF0ZSA4TUh6IGludGVybmFsIGNsb2NrCisgKiAgZGl2ID0gKHJlZiAvIDhNSHopIC0gMTsgMCA8PSBkaXYgPD0gMTUKKyAqLworI2RlZmluZSBLTUlDTEtESVYJKEtNSV9CQVNFICsgMHgwYykKKworLyoKKyAqIEtNSSBpbnRlcnJ1cHQgcmVnaXN0ZXI6CisgKiAgS01JSVJfVFhJTlRSICAgICAxID0gdHJhbnNtaXQgaW50ZXJydXB0IGFzc2VydGVkCisgKiAgS01JSVJfUlhJTlRSICAgICAxID0gcmVjZWl2ZSBpbnRlcnJ1cHQgYXNzZXJ0ZWQKKyAqLworI2RlZmluZSBLTUlJUgkJKEtNSV9CQVNFICsgMHgxMCkKKyNkZWZpbmUgS01JSVJfVFhJTlRSCQkoMSA8PCAxKQorI2RlZmluZSBLTUlJUl9SWElOVFIJCSgxIDw8IDApCisKKy8qCisgKiBUaGUgc2l6ZSBvZiB0aGUgS01JIHByaW1lY2VsbAorICovCisjZGVmaW5lIEtNSV9TSVpFCSgweDEwMCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9zZXJpYWwuaCBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX3NlcmlhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzcwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9zZXJpYWwuaApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2VyaWFsX2FtYmEuaAorICoKKyAqICBJbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3IgQU1CQSBzZXJpYWwgcG9ydHMKKyAqCisgKiAgQ29weXJpZ2h0IChDKSBBUk0gTGltaXRlZAorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgQVNNX0FSTV9IQVJEV0FSRV9TRVJJQUxfQU1CQV9ICisjZGVmaW5lIEFTTV9BUk1fSEFSRFdBUkVfU0VSSUFMX0FNQkFfSAorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgRnJvbSBBTUJBIFVBUlQgKFBMMDEwKSBCbG9jayBTcGVjaWZpY2F0aW9uCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgVUFSVCBSZWdpc3RlciBPZmZzZXRzLgorICovCisjZGVmaW5lIFVBUlQwMXhfRFIJCTB4MDAJLyogRGF0YSByZWFkIG9yIHdyaXR0ZW4gZnJvbSB0aGUgaW50ZXJmYWNlLiAqLworI2RlZmluZSBVQVJUMDF4X1JTUgkJMHgwNAkvKiBSZWNlaXZlIHN0YXR1cyByZWdpc3RlciAoUmVhZCkuICovCisjZGVmaW5lIFVBUlQwMXhfRUNSCQkweDA0CS8qIEVycm9yIGNsZWFyIHJlZ2lzdGVyIChXcml0ZSkuICovCisjZGVmaW5lIFVBUlQwMTBfTENSSAkJMHgwOAkvKiBMaW5lIGNvbnRyb2wgcmVnaXN0ZXIsIGhpZ2ggYnl0ZS4gKi8KKyNkZWZpbmUgVUFSVDAxMF9MQ1JNCQkweDBDCS8qIExpbmUgY29udHJvbCByZWdpc3RlciwgbWlkZGxlIGJ5dGUuICovCisjZGVmaW5lIFVBUlQwMTBfTENSTAkJMHgxMAkvKiBMaW5lIGNvbnRyb2wgcmVnaXN0ZXIsIGxvdyBieXRlLiAqLworI2RlZmluZSBVQVJUMDEwX0NSCQkweDE0CS8qIENvbnRyb2wgcmVnaXN0ZXIuICovCisjZGVmaW5lIFVBUlQwMXhfRlIJCTB4MTgJLyogRmxhZyByZWdpc3RlciAoUmVhZCBvbmx5KS4gKi8KKyNkZWZpbmUgVUFSVDAxMF9JSVIJCTB4MUMJLyogSW50ZXJydXB0IGluZGVudGlmaWNhdGlvbiByZWdpc3RlciAoUmVhZCkuICovCisjZGVmaW5lIFVBUlQwMTBfSUNSCQkweDFDCS8qIEludGVycnVwdCBjbGVhciByZWdpc3RlciAoV3JpdGUpLiAqLworI2RlZmluZSBVQVJUMDF4X0lMUFIJCTB4MjAJLyogSXJEQSBsb3cgcG93ZXIgY291bnRlciByZWdpc3Rlci4gKi8KKyNkZWZpbmUgVUFSVDAxMV9JQlJECQkweDI0CS8qIEludGVnZXIgYmF1ZCByYXRlIGRpdmlzb3IgcmVnaXN0ZXIuICovCisjZGVmaW5lIFVBUlQwMTFfRkJSRAkJMHgyOAkvKiBGcmFjdGlvbmFsIGJhdWQgcmF0ZSBkaXZpc29yIHJlZ2lzdGVyLiAqLworI2RlZmluZSBVQVJUMDExX0xDUkgJCTB4MmMJLyogTGluZSBjb250cm9sIHJlZ2lzdGVyLiAqLworI2RlZmluZSBVQVJUMDExX0NSCQkweDMwCS8qIENvbnRyb2wgcmVnaXN0ZXIuICovCisjZGVmaW5lIFVBUlQwMTFfSUZMUwkJMHgzNAkvKiBJbnRlcnJ1cHQgZmlmbyBsZXZlbCBzZWxlY3QuICovCisjZGVmaW5lIFVBUlQwMTFfSU1TQwkJMHgzOAkvKiBJbnRlcnJ1cHQgbWFzay4gKi8KKyNkZWZpbmUgVUFSVDAxMV9SSVMJCTB4M2MJLyogUmF3IGludGVycnVwdCBzdGF0dXMuICovCisjZGVmaW5lIFVBUlQwMTFfTUlTCQkweDQwCS8qIE1hc2tlZCBpbnRlcnJ1cHQgc3RhdHVzLiAqLworI2RlZmluZSBVQVJUMDExX0lDUgkJMHg0NAkvKiBJbnRlcnJ1cHQgY2xlYXIgcmVnaXN0ZXIuICovCisjZGVmaW5lIFVBUlQwMTFfRE1BQ1IJCTB4NDgJLyogRE1BIGNvbnRyb2wgcmVnaXN0ZXIuICovCisKKyNkZWZpbmUgVUFSVDAxeF9SU1JfT0UgCQkweDA4CisjZGVmaW5lIFVBUlQwMXhfUlNSX0JFIAkJMHgwNAorI2RlZmluZSBVQVJUMDF4X1JTUl9QRSAJCTB4MDIKKyNkZWZpbmUgVUFSVDAxeF9SU1JfRkUgCQkweDAxCisKKyNkZWZpbmUgVUFSVDAxMV9GUl9SSQkJMHgxMDAKKyNkZWZpbmUgVUFSVDAxMV9GUl9UWEZFCQkweDA4MAorI2RlZmluZSBVQVJUMDExX0ZSX1JYRkYJCTB4MDQwCisjZGVmaW5lIFVBUlQwMXhfRlJfVFhGRgkJMHgwMjAKKyNkZWZpbmUgVUFSVDAxeF9GUl9SWEZFCQkweDAxMAorI2RlZmluZSBVQVJUMDF4X0ZSX0JVU1kJCTB4MDA4CisjZGVmaW5lIFVBUlQwMXhfRlJfRENEIAkJMHgwMDQKKyNkZWZpbmUgVUFSVDAxeF9GUl9EU1IgCQkweDAwMgorI2RlZmluZSBVQVJUMDF4X0ZSX0NUUyAJCTB4MDAxCisjZGVmaW5lIFVBUlQwMXhfRlJfVE1TSwkJKFVBUlQwMXhfRlJfVFhGRiArIFVBUlQwMXhfRlJfQlVTWSkKKworI2RlZmluZSBVQVJUMDExX0NSX0NUU0VOCTB4ODAwMAkvKiBDVFMgaGFyZHdhcmUgZmxvdyBjb250cm9sICovCisjZGVmaW5lIFVBUlQwMTFfQ1JfUlRTRU4JMHg0MDAwCS8qIFJUUyBoYXJkd2FyZSBmbG93IGNvbnRyb2wgKi8KKyNkZWZpbmUgVUFSVDAxMV9DUl9PVVQyCQkweDIwMDAJLyogT1VUMiAqLworI2RlZmluZSBVQVJUMDExX0NSX09VVDEJCTB4MTAwMAkvKiBPVVQxICovCisjZGVmaW5lIFVBUlQwMTFfQ1JfUlRTCQkweDA4MDAJLyogUlRTICovCisjZGVmaW5lIFVBUlQwMTFfQ1JfRFRSCQkweDA0MDAJLyogRFRSICovCisjZGVmaW5lIFVBUlQwMTFfQ1JfUlhFCQkweDAyMDAJLyogcmVjZWl2ZSBlbmFibGUgKi8KKyNkZWZpbmUgVUFSVDAxMV9DUl9UWEUJCTB4MDEwMAkvKiB0cmFuc21pdCBlbmFibGUgKi8KKyNkZWZpbmUgVUFSVDAxMV9DUl9MQkUJCTB4MDA4MAkvKiBsb29wYmFjayBlbmFibGUgKi8KKyNkZWZpbmUgVUFSVDAxMF9DUl9SVElFCQkweDAwNDAKKyNkZWZpbmUgVUFSVDAxMF9DUl9USUUgCQkweDAwMjAKKyNkZWZpbmUgVUFSVDAxMF9DUl9SSUUgCQkweDAwMTAKKyNkZWZpbmUgVUFSVDAxMF9DUl9NU0lFCQkweDAwMDgKKyNkZWZpbmUgVUFSVDAxeF9DUl9JSVJMUAkweDAwMDQJLyogU0lSIGxvdyBwb3dlciBtb2RlICovCisjZGVmaW5lIFVBUlQwMXhfQ1JfU0lSRU4JMHgwMDAyCS8qIFNJUiBlbmFibGUgKi8KKyNkZWZpbmUgVUFSVDAxeF9DUl9VQVJURU4JMHgwMDAxCS8qIFVBUlQgZW5hYmxlICovCisgCisjZGVmaW5lIFVBUlQwMTFfTENSSF9TUFMJMHg4MAorI2RlZmluZSBVQVJUMDF4X0xDUkhfV0xFTl84CTB4NjAKKyNkZWZpbmUgVUFSVDAxeF9MQ1JIX1dMRU5fNwkweDQwCisjZGVmaW5lIFVBUlQwMXhfTENSSF9XTEVOXzYJMHgyMAorI2RlZmluZSBVQVJUMDF4X0xDUkhfV0xFTl81CTB4MDAKKyNkZWZpbmUgVUFSVDAxeF9MQ1JIX0ZFTgkweDEwCisjZGVmaW5lIFVBUlQwMXhfTENSSF9TVFAyCTB4MDgKKyNkZWZpbmUgVUFSVDAxeF9MQ1JIX0VQUwkweDA0CisjZGVmaW5lIFVBUlQwMXhfTENSSF9QRU4JMHgwMgorI2RlZmluZSBVQVJUMDF4X0xDUkhfQlJLCTB4MDEKKworI2RlZmluZSBVQVJUMDEwX0lJUl9SVElTCTB4MDgKKyNkZWZpbmUgVUFSVDAxMF9JSVJfVElTCQkweDA0CisjZGVmaW5lIFVBUlQwMTBfSUlSX1JJUwkJMHgwMgorI2RlZmluZSBVQVJUMDEwX0lJUl9NSVMJCTB4MDEKKworI2RlZmluZSBVQVJUMDExX0lGTFNfUlgxXzgJKDAgPDwgMykKKyNkZWZpbmUgVUFSVDAxMV9JRkxTX1JYMl84CSgxIDw8IDMpCisjZGVmaW5lIFVBUlQwMTFfSUZMU19SWDRfOAkoMiA8PCAzKQorI2RlZmluZSBVQVJUMDExX0lGTFNfUlg2XzgJKDMgPDwgMykKKyNkZWZpbmUgVUFSVDAxMV9JRkxTX1JYN184CSg0IDw8IDMpCisjZGVmaW5lIFVBUlQwMTFfSUZMU19UWDFfOAkoMCA8PCAwKQorI2RlZmluZSBVQVJUMDExX0lGTFNfVFgyXzgJKDEgPDwgMCkKKyNkZWZpbmUgVUFSVDAxMV9JRkxTX1RYNF84CSgyIDw8IDApCisjZGVmaW5lIFVBUlQwMTFfSUZMU19UWDZfOAkoMyA8PCAwKQorI2RlZmluZSBVQVJUMDExX0lGTFNfVFg3XzgJKDQgPDwgMCkKKworI2RlZmluZSBVQVJUMDExX09FSU0JCSgxIDw8IDEwKQkvKiBvdmVycnVuIGVycm9yIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIFVBUlQwMTFfQkVJTQkJKDEgPDwgOSkJLyogYnJlYWsgZXJyb3IgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgVUFSVDAxMV9QRUlNCQkoMSA8PCA4KQkvKiBwYXJpdHkgZXJyb3IgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgVUFSVDAxMV9GRUlNCQkoMSA8PCA3KQkvKiBmcmFtaW5nIGVycm9yIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIFVBUlQwMTFfUlRJTQkJKDEgPDwgNikJLyogcmVjZWl2ZSB0aW1lb3V0IGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIFVBUlQwMTFfVFhJTQkJKDEgPDwgNSkJLyogdHJhbnNtaXQgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgVUFSVDAxMV9SWElNCQkoMSA8PCA0KQkvKiByZWNlaXZlIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIFVBUlQwMTFfRFNSTUlNCQkoMSA8PCAzKQkvKiBEU1IgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgVUFSVDAxMV9EQ0RNSU0JCSgxIDw8IDIpCS8qIERDRCBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBVQVJUMDExX0NUU01JTQkJKDEgPDwgMSkJLyogQ1RTIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIFVBUlQwMTFfUklNSU0JCSgxIDw8IDApCS8qIFJJIGludGVycnVwdCBtYXNrICovCisKKyNkZWZpbmUgVUFSVDAxMV9PRUlTCQkoMSA8PCAxMCkJLyogb3ZlcnJ1biBlcnJvciBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfQkVJUwkJKDEgPDwgOSkJLyogYnJlYWsgZXJyb3IgaW50ZXJydXB0IHN0YXR1cyAqLworI2RlZmluZSBVQVJUMDExX1BFSVMJCSgxIDw8IDgpCS8qIHBhcml0eSBlcnJvciBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfRkVJUwkJKDEgPDwgNykJLyogZnJhbWluZyBlcnJvciBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfUlRJUwkJKDEgPDwgNikJLyogcmVjZWl2ZSB0aW1lb3V0IGludGVycnVwdCBzdGF0dXMgKi8KKyNkZWZpbmUgVUFSVDAxMV9UWElTCQkoMSA8PCA1KQkvKiB0cmFuc21pdCBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfUlhJUwkJKDEgPDwgNCkJLyogcmVjZWl2ZSBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfRFNSTUlTCQkoMSA8PCAzKQkvKiBEU1IgaW50ZXJydXB0IHN0YXR1cyAqLworI2RlZmluZSBVQVJUMDExX0RDRE1JUwkJKDEgPDwgMikJLyogRENEIGludGVycnVwdCBzdGF0dXMgKi8KKyNkZWZpbmUgVUFSVDAxMV9DVFNNSVMJCSgxIDw8IDEpCS8qIENUUyBpbnRlcnJ1cHQgc3RhdHVzICovCisjZGVmaW5lIFVBUlQwMTFfUklNSVMJCSgxIDw8IDApCS8qIFJJIGludGVycnVwdCBzdGF0dXMgKi8KKworI2RlZmluZSBVQVJUMDExX09FSUMJCSgxIDw8IDEwKQkvKiBvdmVycnVuIGVycm9yIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX0JFSUMJCSgxIDw8IDkpCS8qIGJyZWFrIGVycm9yIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX1BFSUMJCSgxIDw8IDgpCS8qIHBhcml0eSBlcnJvciBpbnRlcnJ1cHQgY2xlYXIgKi8KKyNkZWZpbmUgVUFSVDAxMV9GRUlDCQkoMSA8PCA3KQkvKiBmcmFtaW5nIGVycm9yIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX1JUSUMJCSgxIDw8IDYpCS8qIHJlY2VpdmUgdGltZW91dCBpbnRlcnJ1cHQgY2xlYXIgKi8KKyNkZWZpbmUgVUFSVDAxMV9UWElDCQkoMSA8PCA1KQkvKiB0cmFuc21pdCBpbnRlcnJ1cHQgY2xlYXIgKi8KKyNkZWZpbmUgVUFSVDAxMV9SWElDCQkoMSA8PCA0KQkvKiByZWNlaXZlIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX0RTUk1JQwkJKDEgPDwgMykJLyogRFNSIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX0RDRE1JQwkJKDEgPDwgMikJLyogRENEIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX0NUU01JQwkJKDEgPDwgMSkJLyogQ1RTIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSBVQVJUMDExX1JJTUlDCQkoMSA8PCAwKQkvKiBSSSBpbnRlcnJ1cHQgY2xlYXIgKi8KKworI2RlZmluZSBVQVJUMDExX0RNQU9ORVJSCSgxIDw8IDIpCS8qIGRpc2FibGUgZG1hIG9uIGVycm9yICovCisjZGVmaW5lIFVBUlQwMTFfVFhETUFFCQkoMSA8PCAxKQkvKiBlbmFibGUgdHJhbnNtaXQgZG1hICovCisjZGVmaW5lIFVBUlQwMTFfUlhETUFFCQkoMSA8PCAwKQkvKiBlbmFibGUgcmVjZWl2ZSBkbWEgKi8KKworI2RlZmluZSBVQVJUMDF4X1JTUl9BTlkJCShVQVJUMDF4X1JTUl9PRXxVQVJUMDF4X1JTUl9CRXxVQVJUMDF4X1JTUl9QRXxVQVJUMDF4X1JTUl9GRSkKKyNkZWZpbmUgVUFSVDAxeF9GUl9NT0RFTV9BTlkJKFVBUlQwMXhfRlJfRENEfFVBUlQwMXhfRlJfRFNSfFVBUlQwMXhfRlJfQ1RTKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9jbG9jay5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2Nsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk4MzQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9jbG9jay5oCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9jbG9jay5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNCBBUk0gTGltaXRlZC4KKyAqICBXcml0dGVuIGJ5IERlZXAgQmx1ZSBTb2x1dGlvbnMgTGltaXRlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIEFTTUFSTV9DTE9DS19ICisjZGVmaW5lIEFTTUFSTV9DTE9DS19ICisKK3N0cnVjdCBkZXZpY2U7CisKKy8qCisgKiBUaGUgYmFzZSBBUEkuCisgKi8KKworCisvKgorICogc3RydWN0IGNsayAtIGFuIG1hY2hpbmUgY2xhc3MgZGVmaW5lZCBvYmplY3QgLyBjb29raWUuCisgKi8KK3N0cnVjdCBjbGs7CisKKy8qKgorICogY2xrX2dldCAtIGxvb2t1cCBhbmQgb2J0YWluIGEgcmVmZXJlbmNlIHRvIGEgY2xvY2sgcHJvZHVjZXIuCisgKiBAZGV2OiBkZXZpY2UgZm9yIGNsb2NrICJjb25zdW1lciIKKyAqIEBpZDogZGV2aWNlIElECisgKgorICogUmV0dXJucyBhIHN0cnVjdCBjbGsgY29ycmVzcG9uZGluZyB0byB0aGUgY2xvY2sgcHJvZHVjZXIsIG9yCisgKiB2YWxpZCBJU19FUlIoKSBjb25kaXRpb24gY29udGFpbmluZyBlcnJuby4KKyAqLworc3RydWN0IGNsayAqY2xrX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmlkKTsKKworLyoqCisgKiBjbGtfZW5hYmxlIC0gaW5mb3JtIHRoZSBzeXN0ZW0gd2hlbiB0aGUgY2xvY2sgc291cmNlIHNob3VsZCBiZSBydW5uaW5nLgorICogQGNsazogY2xvY2sgc291cmNlCisgKgorICogSWYgdGhlIGNsb2NrIGNhbiBub3QgYmUgZW5hYmxlZC9kaXNhYmxlZCwgdGhpcyBzaG91bGQgcmV0dXJuIHN1Y2Nlc3MuCisgKgorICogUmV0dXJucyBzdWNjZXNzICgwKSBvciBuZWdhdGl2ZSBlcnJuby4KKyAqLworaW50IGNsa19lbmFibGUoc3RydWN0IGNsayAqY2xrKTsKKworLyoqCisgKiBjbGtfZGlzYWJsZSAtIGluZm9ybSB0aGUgc3lzdGVtIHdoZW4gdGhlIGNsb2NrIHNvdXJjZSBpcyBubyBsb25nZXIgcmVxdWlyZWQuCisgKiBAY2xrOiBjbG9jayBzb3VyY2UKKyAqLwordm9pZCBjbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspOworCisvKioKKyAqIGNsa191c2UgLSBpbmNyZW1lbnQgdGhlIHVzZSBjb3VudAorICogQGNsazogY2xvY2sgc291cmNlCisgKgorICogUmV0dXJucyBzdWNjZXNzICgwKSBvciBuZWdhdGl2ZSBlcnJuby4KKyAqLworaW50IGNsa191c2Uoc3RydWN0IGNsayAqY2xrKTsKKworLyoqCisgKiBjbGtfdW51c2UgLSBkZWNyZW1lbnQgdGhlIHVzZSBjb3VudAorICogQGNsazogY2xvY2sgc291cmNlCisgKi8KK3ZvaWQgY2xrX3VudXNlKHN0cnVjdCBjbGsgKmNsayk7CisKKy8qKgorICogY2xrX2dldF9yYXRlIC0gb2J0YWluIHRoZSBjdXJyZW50IGNsb2NrIHJhdGUgKGluIEh6KSBmb3IgYSBjbG9jayBzb3VyY2UuCisgKgkJICBUaGlzIGlzIG9ubHkgdmFsaWQgb25jZSB0aGUgY2xvY2sgc291cmNlIGhhcyBiZWVuIGVuYWJsZWQuCisgKiBAY2xrOiBjbG9jayBzb3VyY2UKKyAqLwordW5zaWduZWQgbG9uZyBjbGtfZ2V0X3JhdGUoc3RydWN0IGNsayAqY2xrKTsKKworLyoqCisgKiBjbGtfcHV0CS0gImZyZWUiIHRoZSBjbG9jayBzb3VyY2UKKyAqIEBjbGs6IGNsb2NrIHNvdXJjZQorICovCit2b2lkIGNsa19wdXQoc3RydWN0IGNsayAqY2xrKTsKKworCisvKgorICogVGhlIHJlbWFpbmluZyBBUElzIGFyZSBvcHRpb25hbCBmb3IgbWFjaGluZSBjbGFzcyBzdXBwb3J0LgorICovCisKKworLyoqCisgKiBjbGtfcm91bmRfcmF0ZSAtIGFkanVzdCBhIHJhdGUgdG8gdGhlIGV4YWN0IHJhdGUgYSBjbG9jayBjYW4gcHJvdmlkZQorICogQGNsazogY2xvY2sgc291cmNlCisgKiBAcmF0ZTogZGVzaXJlZCBjbG9jayByYXRlIGluIEh6CisgKgorICogUmV0dXJucyByb3VuZGVkIGNsb2NrIHJhdGUgaW4gSHosIG9yIG5lZ2F0aXZlIGVycm5vLgorICovCitsb25nIGNsa19yb3VuZF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKTsKKyAKKy8qKgorICogY2xrX3NldF9yYXRlIC0gc2V0IHRoZSBjbG9jayByYXRlIGZvciBhIGNsb2NrIHNvdXJjZQorICogQGNsazogY2xvY2sgc291cmNlCisgKiBAcmF0ZTogZGVzaXJlZCBjbG9jayByYXRlIGluIEh6CisgKgorICogUmV0dXJucyBzdWNjZXNzICgwKSBvciBuZWdhdGl2ZSBlcnJuby4KKyAqLworaW50IGNsa19zZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSk7CisgCisvKioKKyAqIGNsa19zZXRfcGFyZW50IC0gc2V0IHRoZSBwYXJlbnQgY2xvY2sgc291cmNlIGZvciB0aGlzIGNsb2NrCisgKiBAY2xrOiBjbG9jayBzb3VyY2UKKyAqIEBwYXJlbnQ6IHBhcmVudCBjbG9jayBzb3VyY2UKKyAqCisgKiBSZXR1cm5zIHN1Y2Nlc3MgKDApIG9yIG5lZ2F0aXZlIGVycm5vLgorICovCitpbnQgY2xrX3NldF9wYXJlbnQoc3RydWN0IGNsayAqY2xrLCBzdHJ1Y3QgY2xrICpwYXJlbnQpOworCisvKioKKyAqIGNsa19nZXRfcGFyZW50IC0gZ2V0IHRoZSBwYXJlbnQgY2xvY2sgc291cmNlIGZvciB0aGlzIGNsb2NrCisgKiBAY2xrOiBjbG9jayBzb3VyY2UKKyAqCisgKiBSZXR1cm5zIHN0cnVjdCBjbGsgY29ycmVzcG9uZGluZyB0byBwYXJlbnQgY2xvY2sgc291cmNlLCBvcgorICogdmFsaWQgSVNfRVJSKCkgY29uZGl0aW9uIGNvbnRhaW5pbmcgZXJybm8uCisgKi8KK3N0cnVjdCBjbGsgKmNsa19nZXRfcGFyZW50KHN0cnVjdCBjbGsgKmNsayk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2NscHM3MTExLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvY2xwczcxMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDMyMjhkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2NscHM3MTExLmgKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2NscHM3MTExLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgQ0xQUzcxMTEgaW50ZXJuYWwKKyAqICByZWdpc3RlcnMuCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgX19BU01fSEFSRFdBUkVfQ0xQUzcxMTFfSAorI2RlZmluZSBfX0FTTV9IQVJEV0FSRV9DTFBTNzExMV9ICisKKyNkZWZpbmUgQ0xQUzcxMTFfUEhZU19CQVNFCSgweDgwMDAwMDAwKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBjbHBzX3JlYWRiKG9mZikJCV9fcmF3X3JlYWRiKENMUFM3MTExX0JBU0UgKyAob2ZmKSkKKyNkZWZpbmUgY2xwc19yZWFkdyhvZmYpCQlfX3Jhd19yZWFkdyhDTFBTNzExMV9CQVNFICsgKG9mZikpCisjZGVmaW5lIGNscHNfcmVhZGwob2ZmKQkJX19yYXdfcmVhZGwoQ0xQUzcxMTFfQkFTRSArIChvZmYpKQorI2RlZmluZSBjbHBzX3dyaXRlYih2YWwsb2ZmKQlfX3Jhd193cml0ZWIodmFsLCBDTFBTNzExMV9CQVNFICsgKG9mZikpCisjZGVmaW5lIGNscHNfd3JpdGV3KHZhbCxvZmYpCV9fcmF3X3dyaXRldyh2YWwsIENMUFM3MTExX0JBU0UgKyAob2ZmKSkKKyNkZWZpbmUgY2xwc193cml0ZWwodmFsLG9mZikJX19yYXdfd3JpdGVsKHZhbCwgQ0xQUzcxMTFfQkFTRSArIChvZmYpKQorI2VuZGlmCisKKyNkZWZpbmUgUEFEUgkJKDB4MDAwMCkKKyNkZWZpbmUgUEJEUgkJKDB4MDAwMSkKKyNkZWZpbmUgUEREUgkJKDB4MDAwMykKKyNkZWZpbmUgUEFERFIJCSgweDAwNDApCisjZGVmaW5lIFBCRERSCQkoMHgwMDQxKQorI2RlZmluZSBQREREUgkJKDB4MDA0MykKKyNkZWZpbmUgUEVEUgkJKDB4MDA4MCkKKyNkZWZpbmUgUEVERFIJCSgweDAwYzApCisjZGVmaW5lIFNZU0NPTjEJCSgweDAxMDApCisjZGVmaW5lIFNZU0ZMRzEJCSgweDAxNDApCisjZGVmaW5lIE1FTUNGRzEJCSgweDAxODApCisjZGVmaW5lIE1FTUNGRzIJCSgweDAxYzApCisjZGVmaW5lIERSRlBSCQkoMHgwMjAwKQorI2RlZmluZSBJTlRTUjEJCSgweDAyNDApCisjZGVmaW5lIElOVE1SMQkJKDB4MDI4MCkKKyNkZWZpbmUgTENEQ09OCQkoMHgwMmMwKQorI2RlZmluZSBUQzFEICAgICAgICAgICAgKDB4MDMwMCkKKyNkZWZpbmUgVEMyRAkJKDB4MDM0MCkKKyNkZWZpbmUgUlRDRFIJCSgweDAzODApCisjZGVmaW5lIFJUQ01SCQkoMHgwM2MwKQorI2RlZmluZSBQTVBDT04JCSgweDA0MDApCisjZGVmaW5lIENPRFIJCSgweDA0NDApCisjZGVmaW5lIFVBUlREUjEJCSgweDA0ODApCisjZGVmaW5lIFVCUkxDUjEJCSgweDA0YzApCisjZGVmaW5lIFNZTkNJTwkJKDB4MDUwMCkKKyNkZWZpbmUgUEFMTFNXCQkoMHgwNTQwKQorI2RlZmluZSBQQUxNU1cJCSgweDA1ODApCisjZGVmaW5lIFNURkNMUgkJKDB4MDVjMCkKKyNkZWZpbmUgQkxFT0kJCSgweDA2MDApCisjZGVmaW5lIE1DRU9JCQkoMHgwNjQwKQorI2RlZmluZSBURU9JCQkoMHgwNjgwKQorI2RlZmluZSBUQzFFT0kJCSgweDA2YzApCisjZGVmaW5lIFRDMkVPSQkJKDB4MDcwMCkKKyNkZWZpbmUgUlRDRU9JCQkoMHgwNzQwKQorI2RlZmluZSBVTVNFT0kJCSgweDA3ODApCisjZGVmaW5lIENPRU9JCQkoMHgwN2MwKQorI2RlZmluZSBIQUxUCQkoMHgwODAwKQorI2RlZmluZSBTVERCWQkJKDB4MDg0MCkKKworI2RlZmluZSBGQkFERFIJCSgweDEwMDApCisjZGVmaW5lIFNZU0NPTjIJCSgweDExMDApCisjZGVmaW5lIFNZU0ZMRzIJCSgweDExNDApCisjZGVmaW5lIElOVFNSMgkJKDB4MTI0MCkKKyNkZWZpbmUgSU5UTVIyCQkoMHgxMjgwKQorI2RlZmluZSBVQVJURFIyCQkoMHgxNDgwKQorI2RlZmluZSBVQlJMQ1IyCQkoMHgxNGMwKQorI2RlZmluZSBTUzJEUgkJKDB4MTUwMCkKKyNkZWZpbmUgU1JYRU9GCQkoMHgxNjAwKQorI2RlZmluZSBTUzJQT1AJCSgweDE2YzApCisjZGVmaW5lIEtCREVPSQkJKDB4MTcwMCkKKworLyogY29tbW9uIGJpdHM6IFNZU0NPTjEgLyBTWVNDT04yICovCisjZGVmaW5lIFNZU0NPTl9VQVJURU4JCSgxIDw8IDgpCisKKyNkZWZpbmUgU1lTQ09OMV9LQkRTQ0FOKHgpCSgoeCkgJiAxNSkKKyNkZWZpbmUgU1lTQ09OMV9LQkRTQ0FOTUFTSwkoMTUpCisjZGVmaW5lIFNZU0NPTjFfVEMxTQkJKDEgPDwgNCkKKyNkZWZpbmUgU1lTQ09OMV9UQzFTCQkoMSA8PCA1KQorI2RlZmluZSBTWVNDT04xX1RDMk0JCSgxIDw8IDYpCisjZGVmaW5lIFNZU0NPTjFfVEMyUwkJKDEgPDwgNykKKyNkZWZpbmUgU1lTQ09OMV9VQVJUMUVOCQlTWVNDT05fVUFSVEVOCisjZGVmaW5lIFNZU0NPTjFfQlpUT0cJCSgxIDw8IDkpCisjZGVmaW5lIFNZU0NPTjFfQlpNT0QJCSgxIDw8IDEwKQorI2RlZmluZSBTWVNDT04xX0RCR0VOCQkoMSA8PCAxMSkKKyNkZWZpbmUgU1lTQ09OMV9MQ0RFTgkJKDEgPDwgMTIpCisjZGVmaW5lIFNZU0NPTjFfQ0RFTlRYCQkoMSA8PCAxMykKKyNkZWZpbmUgU1lTQ09OMV9DREVOUlgJCSgxIDw8IDE0KQorI2RlZmluZSBTWVNDT04xX1NJUkVOCQkoMSA8PCAxNSkKKyNkZWZpbmUgU1lTQ09OMV9BRENLU0VMKHgpCSgoKHgpICYgMykgPDwgMTYpCisjZGVmaW5lIFNZU0NPTjFfQURDS1NFTF9NQVNLCSgzIDw8IDE2KQorI2RlZmluZSBTWVNDT04xX0VYQ0tFTgkJKDEgPDwgMTgpCisjZGVmaW5lIFNZU0NPTjFfV0FLRURJUwkJKDEgPDwgMTkpCisjZGVmaW5lIFNZU0NPTjFfSVJUWE0JCSgxIDw8IDIwKQorCisvKiBjb21tb24gYml0czogU1lTRkxHMSAvIFNZU0ZMRzIgKi8KKyNkZWZpbmUgU1lTRkxHX1VCVVNZCQkoMSA8PCAxMSkKKyNkZWZpbmUgU1lTRkxHX1VSWEZFCQkoMSA8PCAyMikKKyNkZWZpbmUgU1lTRkxHX1VUWEZGCQkoMSA8PCAyMykKKworI2RlZmluZSBTWVNGTEcxX01DRFIJCSgxIDw8IDApCisjZGVmaW5lIFNZU0ZMRzFfRENERVQJCSgxIDw8IDEpCisjZGVmaW5lIFNZU0ZMRzFfV1VEUgkJKDEgPDwgMikKKyNkZWZpbmUgU1lTRkxHMV9XVU9OCQkoMSA8PCAzKQorI2RlZmluZSBTWVNGTEcxX0NUUwkJKDEgPDwgOCkKKyNkZWZpbmUgU1lTRkxHMV9EU1IJCSgxIDw8IDkpCisjZGVmaW5lIFNZU0ZMRzFfRENECQkoMSA8PCAxMCkKKyNkZWZpbmUgU1lTRkxHMV9VQlVTWQkJU1lTRkxHX1VCVVNZCisjZGVmaW5lIFNZU0ZMRzFfTkJGTEcJCSgxIDw8IDEyKQorI2RlZmluZSBTWVNGTEcxX1JTVEZMRwkJKDEgPDwgMTMpCisjZGVmaW5lIFNZU0ZMRzFfUEZGTEcJCSgxIDw8IDE0KQorI2RlZmluZSBTWVNGTEcxX0NMREZMRwkJKDEgPDwgMTUpCisjZGVmaW5lIFNZU0ZMRzFfVVJYRkUJCVNZU0ZMR19VUlhGRQorI2RlZmluZSBTWVNGTEcxX1VUWEZGCQlTWVNGTEdfVVRYRkYKKyNkZWZpbmUgU1lTRkxHMV9DUlhGRQkJKDEgPDwgMjQpCisjZGVmaW5lIFNZU0ZMRzFfQ1RYRkYJCSgxIDw8IDI1KQorI2RlZmluZSBTWVNGTEcxX1NTSUJVU1kJCSgxIDw8IDI2KQorI2RlZmluZSBTWVNGTEcxX0lECQkoMSA8PCAyOSkKKworI2RlZmluZSBTWVNGTEcyX1NTUlhPRgkJKDEgPDwgMCkKKyNkZWZpbmUgU1lTRkxHMl9SRVNWQUwJCSgxIDw8IDEpCisjZGVmaW5lIFNZU0ZMRzJfUkVTRlJNCQkoMSA8PCAyKQorI2RlZmluZSBTWVNGTEcyX1NTMlJYRkUJCSgxIDw8IDMpCisjZGVmaW5lIFNZU0ZMRzJfU1MyVFhGRgkJKDEgPDwgNCkKKyNkZWZpbmUgU1lTRkxHMl9TUzJUWFVGCQkoMSA8PCA1KQorI2RlZmluZSBTWVNGTEcyX0NLTU9ERQkJKDEgPDwgNikKKyNkZWZpbmUgU1lTRkxHMl9VQlVTWQkJU1lTRkxHX1VCVVNZCisjZGVmaW5lIFNZU0ZMRzJfVVJYRkUJCVNZU0ZMR19VUlhGRQorI2RlZmluZSBTWVNGTEcyX1VUWEZGCQlTWVNGTEdfVVRYRkYKKworI2RlZmluZSBMQ0RDT05fR1NFTgkJKDEgPDwgMzApCisjZGVmaW5lIExDRENPTl9HU01ECQkoMSA8PCAzMSkKKworI2RlZmluZSBTWVNDT04yX1NFUlNFTAkJKDEgPDwgMCkKKyNkZWZpbmUgU1lTQ09OMl9LQkQ2CQkoMSA8PCAxKQorI2RlZmluZSBTWVNDT04yX0RSQU1aCQkoMSA8PCAyKQorI2RlZmluZSBTWVNDT04yX0tCV0VOCQkoMSA8PCAzKQorI2RlZmluZSBTWVNDT04yX1NTMlRYRU4JCSgxIDw8IDQpCisjZGVmaW5lIFNZU0NPTjJfUENDQVJEMQkJKDEgPDwgNSkKKyNkZWZpbmUgU1lTQ09OMl9QQ0NBUkQyCQkoMSA8PCA2KQorI2RlZmluZSBTWVNDT04yX1NTMlJYRU4JCSgxIDw8IDcpCisjZGVmaW5lIFNZU0NPTjJfVUFSVDJFTgkJU1lTQ09OX1VBUlRFTgorI2RlZmluZSBTWVNDT04yX1NTMk1BRU4JCSgxIDw8IDkpCisjZGVmaW5lIFNZU0NPTjJfT1NUQgkJKDEgPDwgMTIpCisjZGVmaW5lIFNZU0NPTjJfQ0xLRU5TTAkJKDEgPDwgMTMpCisjZGVmaW5lIFNZU0NPTjJfQlVaRlJFUQkJKDEgPDwgMTQpCisKKy8qIGNvbW1vbiBiaXRzOiBVQVJURFIxIC8gVUFSVERSMiAqLworI2RlZmluZSBVQVJURFJfRlJNRVJSCQkoMSA8PCA4KQorI2RlZmluZSBVQVJURFJfUEFSRVJSCQkoMSA8PCA5KQorI2RlZmluZSBVQVJURFJfT1ZFUlIJCSgxIDw8IDEwKQorCisvKiBjb21tb24gYml0czogVUJSTENSMSAvIFVCUkxDUjIgKi8KKyNkZWZpbmUgVUJSTENSX0JBVURfTUFTSwkoKDEgPDwgMTIpIC0gMSkKKyNkZWZpbmUgVUJSTENSX0JSRUFLCQkoMSA8PCAxMikKKyNkZWZpbmUgVUJSTENSX1BSVEVOCQkoMSA8PCAxMykKKyNkZWZpbmUgVUJSTENSX0VWRU5QUlQJCSgxIDw8IDE0KQorI2RlZmluZSBVQlJMQ1JfWFNUT1AJCSgxIDw8IDE1KQorI2RlZmluZSBVQlJMQ1JfRklGT0VOCQkoMSA8PCAxNikKKyNkZWZpbmUgVUJSTENSX1dSRExFTjUJCSgwIDw8IDE3KQorI2RlZmluZSBVQlJMQ1JfV1JETEVONgkJKDEgPDwgMTcpCisjZGVmaW5lIFVCUkxDUl9XUkRMRU43CQkoMiA8PCAxNykKKyNkZWZpbmUgVUJSTENSX1dSRExFTjgJCSgzIDw8IDE3KQorI2RlZmluZSBVQlJMQ1JfV1JETEVOX01BU0sJKDMgPDwgMTcpCisKKyNkZWZpbmUgU1lOQ0lPX1NNQ0tFTgkJKDEgPDwgMTMpCisjZGVmaW5lIFNZTkNJT19UWEZSTUVOCQkoMSA8PCAxNCkKKworI2VuZGlmIC8qIF9fQVNNX0hBUkRXQVJFX0NMUFM3MTExX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9jczg5NzEyLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvY3M4OTcxMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOTlhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvY3M4OTcxMi5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2NzODk3MTIuaAorICoKKyAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGhhcmR3YXJlIGRlZmluaXRpb25zIG9mIHRoZSBDUzg5NzEyCisgKiAgYWRkaXRpb25hbCBpbnRlcm5hbCByZWdpc3RlcnMuCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMSBUaG9tYXMgR2xlaXhuZXIgYXV0cm9uaXggYXV0b21hdGlvbiA8Z2xlaXhuZXJAYXV0cm9uaXguZGU+CisgKgkJCQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9IQVJEV0FSRV9DUzg5NzEyX0gKKyNkZWZpbmUgX19BU01fSEFSRFdBUkVfQ1M4OTcxMl9ICisKKy8qCisqCUNTODk3MTIgYWRkaXRpb25hbCByZWdpc3RlcnMKKyovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIFBDRFIJCQkweDAwMDIJLyogUG9ydCBDIERhdGEgcmVnaXN0ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworI2RlZmluZSBQQ0REUgkJCTB4MDA0MgkvKiBQb3J0IEMgRGF0YSBEaXJlY3Rpb24gcmVnaXN0ZXIgLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIFNEQ09ORgkJCTB4MjMwMCAgLyogU0RSQU0gQ29uZmlndXJhdGlvbiByZWdpc3RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBTRFJGUFIJCQkweDIzNDAgIC8qIFNEUkFNIFJlZnJlc2ggcGVyaW9kIHJlZ2lzdGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSBTRENPTkZfQUNUSVZFCQkoMSA8PCAxMCkKKyNkZWZpbmUgU0RDT05GX0NMS0NUTAkJKDEgPDwgOSkKKyNkZWZpbmUgU0RDT05GX1dJRFRIXzQJCSgwIDw8IDcpCisjZGVmaW5lIFNEQ09ORl9XSURUSF84CQkoMSA8PCA3KQorI2RlZmluZSBTRENPTkZfV0lEVEhfMTYJCSgyIDw8IDcpCisjZGVmaW5lIFNEQ09ORl9XSURUSF8zMgkJKDMgPDwgNykKKyNkZWZpbmUgU0RDT05GX1NJWkVfMTYJCSgwIDw8IDUpCisjZGVmaW5lIFNEQ09ORl9TSVpFXzY0CQkoMSA8PCA1KQorI2RlZmluZSBTRENPTkZfU0laRV8xMjgJCSgyIDw8IDUpCisjZGVmaW5lIFNEQ09ORl9TSVpFXzI1NgkJKDMgPDwgNSkKKyNkZWZpbmUgU0RDT05GX0NBU0xBVF8yCQkoMikKKyNkZWZpbmUgU0RDT05GX0NBU0xBVF8zCQkoMykKKworI2VuZGlmIC8qIF9fQVNNX0hBUkRXQVJFX0NTODk3MTJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2RlYzIxMjg1LmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZGVjMjEyODUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDQ5ZjBkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2RlYzIxMjg1LmgKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2RlYzIxMjg1LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk4IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIERDMjEyODUgcmVnaXN0ZXJzCisgKi8KKyNkZWZpbmUgREMyMTI4NV9QQ0lfSUFDSwkJMHg3OTAwMDAwMAorI2RlZmluZSBEQzIxMjg1X0FSTUNTUl9CQVNFCQkweDQyMDAwMDAwCisjZGVmaW5lIERDMjEyODVfUENJX1RZUEVfMF9DT05GSUcJMHg3YjAwMDAwMAorI2RlZmluZSBEQzIxMjg1X1BDSV9UWVBFXzFfQ09ORklHCTB4N2EwMDAwMDAKKyNkZWZpbmUgREMyMTI4NV9PVVRCT1VORF9XUklURV9GTFVTSAkweDc4MDAwMDAwCisjZGVmaW5lIERDMjEyODVfRkxBU0gJCQkweDQxMDAwMDAwCisjZGVmaW5lIERDMjEyODVfUENJX0lPCQkJMHg3YzAwMDAwMAorI2RlZmluZSBEQzIxMjg1X1BDSV9NRU0JCQkweDgwMDAwMDAwCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNkZWZpbmUgREMyMTI4NV9JTyh4KQkJKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKEFSTUNTUl9CQVNFKyh4KSkpCisjZWxzZQorI2RlZmluZSBEQzIxMjg1X0lPKHgpCQkoeCkKKyNlbmRpZgorCisjZGVmaW5lIENTUl9QQ0lDTUQJCURDMjEyODVfSU8oMHgwMDA0KQorI2RlZmluZSBDU1JfQ0xBU1NSRVYJCURDMjEyODVfSU8oMHgwMDA4KQorI2RlZmluZSBDU1JfUENJQ0FDSEVMSU5FU0laRQlEQzIxMjg1X0lPKDB4MDAwYykKKyNkZWZpbmUgQ1NSX1BDSUNTUkJBU0UJCURDMjEyODVfSU8oMHgwMDEwKQorI2RlZmluZSBDU1JfUENJQ1NSSU9CQVNFCURDMjEyODVfSU8oMHgwMDE0KQorI2RlZmluZSBDU1JfUENJU0RSQU1CQVNFCURDMjEyODVfSU8oMHgwMDE4KQorI2RlZmluZSBDU1JfUENJUk9NQkFTRQkJREMyMTI4NV9JTygweDAwMzApCisjZGVmaW5lIENTUl9NQk9YMAkJREMyMTI4NV9JTygweDAwNTApCisjZGVmaW5lIENTUl9NQk9YMQkJREMyMTI4NV9JTygweDAwNTQpCisjZGVmaW5lIENTUl9NQk9YMgkJREMyMTI4NV9JTygweDAwNTgpCisjZGVmaW5lIENTUl9NQk9YMwkJREMyMTI4NV9JTygweDAwNWMpCisjZGVmaW5lIENTUl9ET09SQkVMTAkJREMyMTI4NV9JTygweDAwNjApCisjZGVmaW5lIENTUl9ET09SQkVMTF9TRVRVUAlEQzIxMjg1X0lPKDB4MDA2NCkKKyNkZWZpbmUgQ1NSX1JPTVdSSVRFUkVHCQlEQzIxMjg1X0lPKDB4MDA2OCkKKyNkZWZpbmUgQ1NSX0NTUkJBU0VNQVNLCQlEQzIxMjg1X0lPKDB4MDBmOCkKKyNkZWZpbmUgQ1NSX0NTUkJBU0VPRkZTRVQJREMyMTI4NV9JTygweDAwZmMpCisjZGVmaW5lIENTUl9TRFJBTUJBU0VNQVNLCURDMjEyODVfSU8oMHgwMTAwKQorI2RlZmluZSBDU1JfU0RSQU1CQVNFT0ZGU0VUCURDMjEyODVfSU8oMHgwMTA0KQorI2RlZmluZSBDU1JfUk9NQkFTRU1BU0sJCURDMjEyODVfSU8oMHgwMTA4KQorI2RlZmluZSBDU1JfU0RSQU1USU1JTkcJCURDMjEyODVfSU8oMHgwMTBjKQorI2RlZmluZSBDU1JfU0RSQU1BRERSU0laRTAJREMyMTI4NV9JTygweDAxMTApCisjZGVmaW5lIENTUl9TRFJBTUFERFJTSVpFMQlEQzIxMjg1X0lPKDB4MDExNCkKKyNkZWZpbmUgQ1NSX1NEUkFNQUREUlNJWkUyCURDMjEyODVfSU8oMHgwMTE4KQorI2RlZmluZSBDU1JfU0RSQU1BRERSU0laRTMJREMyMTI4NV9JTygweDAxMWMpCisjZGVmaW5lIENTUl9JMk9fSU5GUkVFSEVBRAlEQzIxMjg1X0lPKDB4MDEyMCkKKyNkZWZpbmUgQ1NSX0kyT19JTlBPU1RUQUlMCURDMjEyODVfSU8oMHgwMTI0KQorI2RlZmluZSBDU1JfSTJPX09VVFBPU1RIRUFECURDMjEyODVfSU8oMHgwMTI4KQorI2RlZmluZSBDU1JfSTJPX09VVEZSRUVUQUlMCURDMjEyODVfSU8oMHgwMTJjKQorI2RlZmluZSBDU1JfSTJPX0lORlJFRUNPVU5UCURDMjEyODVfSU8oMHgwMTMwKQorI2RlZmluZSBDU1JfSTJPX09VVFBPU1RDT1VOVAlEQzIxMjg1X0lPKDB4MDEzNCkKKyNkZWZpbmUgQ1NSX0kyT19JTlBPU1RDT1VOVAlEQzIxMjg1X0lPKDB4MDEzOCkKKyNkZWZpbmUgQ1NSX1NBMTEwX0NOVEwJCURDMjEyODVfSU8oMHgwMTNjKQorI2RlZmluZSBTQTExMF9DTlRMX0lOSVRDTVBMRVRFCQkoMSA8PCAwKQorI2RlZmluZSBTQTExMF9DTlRMX0FTU0VSVFNFUlIJCSgxIDw8IDEpCisjZGVmaW5lIFNBMTEwX0NOVExfUlhTRVJSCQkoMSA8PCAzKQorI2RlZmluZSBTQTExMF9DTlRMX1NBMTEwRFJBTVBBUklUWQkoMSA8PCA0KQorI2RlZmluZSBTQTExMF9DTlRMX1BDSVNEUkFNUEFSSVRZCSgxIDw8IDUpCisjZGVmaW5lIFNBMTEwX0NOVExfRE1BU0RSQU1QQVJJVFkJKDEgPDwgNikKKyNkZWZpbmUgU0ExMTBfQ05UTF9ESVNDQVJEVElNRVIJCSgxIDw8IDgpCisjZGVmaW5lIFNBMTEwX0NOVExfUENJTlJFU0VUCQkoMSA8PCA5KQorI2RlZmluZSBTQTExMF9DTlRMX0kyT18yNTYJCSgwIDw8IDEwKQorI2RlZmluZSBTQTExMF9DTlRMX0kyMF81MTIJCSgxIDw8IDEwKQorI2RlZmluZSBTQTExMF9DTlRMX0kyT18xMDI0CQkoMiA8PCAxMCkKKyNkZWZpbmUgU0ExMTBfQ05UTF9JMk9fMjA0OAkJKDMgPDwgMTApCisjZGVmaW5lIFNBMTEwX0NOVExfSTJPXzQwOTYJCSg0IDw8IDEwKQorI2RlZmluZSBTQTExMF9DTlRMX0kyT184MTkyCQkoNSA8PCAxMCkKKyNkZWZpbmUgU0ExMTBfQ05UTF9JMk9fMTYzODQJCSg2IDw8IDEwKQorI2RlZmluZSBTQTExMF9DTlRMX0kyT18zMjc2OAkJKDcgPDwgMTApCisjZGVmaW5lIFNBMTEwX0NOVExfV0FUQ0hET0cJCSgxIDw8IDEzKQorI2RlZmluZSBTQTExMF9DTlRMX1JPTVdJRFRIX1VOREVGCSgwIDw8IDE0KQorI2RlZmluZSBTQTExMF9DTlRMX1JPTVdJRFRIXzE2CQkoMSA8PCAxNCkKKyNkZWZpbmUgU0ExMTBfQ05UTF9ST01XSURUSF8zMgkJKDIgPDwgMTQpCisjZGVmaW5lIFNBMTEwX0NOVExfUk9NV0lEVEhfOAkJKDMgPDwgMTQpCisjZGVmaW5lIFNBMTEwX0NOVExfUk9NQUNDRVNTVElNRSh4KQkoKHgpPDwxNikKKyNkZWZpbmUgU0ExMTBfQ05UTF9ST01CVVJTVFRJTUUoeCkJKCh4KTw8MjApCisjZGVmaW5lIFNBMTEwX0NOVExfUk9NVFJJU1RBVEVUSU1FKHgpCSgoeCk8PDI0KQorI2RlZmluZSBTQTExMF9DTlRMX1hDU0RJUih4KQkJKCh4KTw8MjgpCisjZGVmaW5lIFNBMTEwX0NOVExfUENJQ0ZOCQkoMSA8PCAzMSkKKworLyoKKyAqIGZvb3RicmlkZ2VfY2ZuX21vZGUoKSBpcyB1c2VkIHdoZW4gd2Ugd2FudAorICogdG8gY2hlY2sgd2hldGhlciB3ZSBhcmUgdGhlIGNlbnRyYWwgZnVuY3Rpb24KKyAqLworI2RlZmluZSBfX2Zvb3RicmlkZ2VfY2ZuX21vZGUoKSAoKkNTUl9TQTExMF9DTlRMICYgU0ExMTBfQ05UTF9QQ0lDRk4pCisjaWYgZGVmaW5lZChDT05GSUdfRk9PVEJSSURHRV9IT1NUKSAmJiBkZWZpbmVkKENPTkZJR19GT09UQlJJREdFX0FERElOKQorI2RlZmluZSBmb290YnJpZGdlX2Nmbl9tb2RlKCkgX19mb290YnJpZGdlX2Nmbl9tb2RlKCkKKyNlbGlmIGRlZmluZWQoQ09ORklHX0ZPT1RCUklER0VfSE9TVCkKKyNkZWZpbmUgZm9vdGJyaWRnZV9jZm5fbW9kZSgpICgxKQorI2Vsc2UKKyNkZWZpbmUgZm9vdGJyaWRnZV9jZm5fbW9kZSgpICgwKQorI2VuZGlmCisKKyNkZWZpbmUgQ1NSX1BDSUFERFJfRVhUTglEQzIxMjg1X0lPKDB4MDE0MCkKKyNkZWZpbmUgQ1NSX1BSRUZFVENITUVNUkFOR0UJREMyMTI4NV9JTygweDAxNDQpCisjZGVmaW5lIENTUl9YQlVTX0NZQ0xFCQlEQzIxMjg1X0lPKDB4MDE0OCkKKyNkZWZpbmUgQ1NSX1hCVVNfSU9TVFJPQkUJREMyMTI4NV9JTygweDAxNGMpCisjZGVmaW5lIENTUl9ET09SQkVMTF9QQ0kJREMyMTI4NV9JTygweDAxNTApCisjZGVmaW5lIENTUl9ET09SQkVMTF9TQTExMAlEQzIxMjg1X0lPKDB4MDE1NCkKKyNkZWZpbmUgQ1NSX1VBUlREUgkJREMyMTI4NV9JTygweDAxNjApCisjZGVmaW5lIENTUl9SWFNUQVQJCURDMjEyODVfSU8oMHgwMTY0KQorI2RlZmluZSBDU1JfSF9VQlJMQ1IJCURDMjEyODVfSU8oMHgwMTY4KQorI2RlZmluZSBDU1JfTV9VQlJMQ1IJCURDMjEyODVfSU8oMHgwMTZjKQorI2RlZmluZSBDU1JfTF9VQlJMQ1IJCURDMjEyODVfSU8oMHgwMTcwKQorI2RlZmluZSBDU1JfVUFSVENPTgkJREMyMTI4NV9JTygweDAxNzQpCisjZGVmaW5lIENTUl9VQVJURkxHCQlEQzIxMjg1X0lPKDB4MDE3OCkKKyNkZWZpbmUgQ1NSX0lSUV9TVEFUVVMJCURDMjEyODVfSU8oMHgwMTgwKQorI2RlZmluZSBDU1JfSVJRX1JBV1NUQVRVUwlEQzIxMjg1X0lPKDB4MDE4NCkKKyNkZWZpbmUgQ1NSX0lSUV9FTkFCTEUJCURDMjEyODVfSU8oMHgwMTg4KQorI2RlZmluZSBDU1JfSVJRX0RJU0FCTEUJCURDMjEyODVfSU8oMHgwMThjKQorI2RlZmluZSBDU1JfSVJRX1NPRlQJCURDMjEyODVfSU8oMHgwMTkwKQorI2RlZmluZSBDU1JfRklRX1NUQVRVUwkJREMyMTI4NV9JTygweDAyODApCisjZGVmaW5lIENTUl9GSVFfUkFXU1RBVFVTCURDMjEyODVfSU8oMHgwMjg0KQorI2RlZmluZSBDU1JfRklRX0VOQUJMRQkJREMyMTI4NV9JTygweDAyODgpCisjZGVmaW5lIENTUl9GSVFfRElTQUJMRQkJREMyMTI4NV9JTygweDAyOGMpCisjZGVmaW5lIENTUl9GSVFfU09GVAkJREMyMTI4NV9JTygweDAyOTApCisjZGVmaW5lIENTUl9USU1FUjFfTE9BRAkJREMyMTI4NV9JTygweDAzMDApCisjZGVmaW5lIENTUl9USU1FUjFfVkFMVUUJREMyMTI4NV9JTygweDAzMDQpCisjZGVmaW5lIENTUl9USU1FUjFfQ05UTAkJREMyMTI4NV9JTygweDAzMDgpCisjZGVmaW5lIENTUl9USU1FUjFfQ0xSCQlEQzIxMjg1X0lPKDB4MDMwYykKKyNkZWZpbmUgQ1NSX1RJTUVSMl9MT0FECQlEQzIxMjg1X0lPKDB4MDMyMCkKKyNkZWZpbmUgQ1NSX1RJTUVSMl9WQUxVRQlEQzIxMjg1X0lPKDB4MDMyNCkKKyNkZWZpbmUgQ1NSX1RJTUVSMl9DTlRMCQlEQzIxMjg1X0lPKDB4MDMyOCkKKyNkZWZpbmUgQ1NSX1RJTUVSMl9DTFIJCURDMjEyODVfSU8oMHgwMzJjKQorI2RlZmluZSBDU1JfVElNRVIzX0xPQUQJCURDMjEyODVfSU8oMHgwMzQwKQorI2RlZmluZSBDU1JfVElNRVIzX1ZBTFVFCURDMjEyODVfSU8oMHgwMzQ0KQorI2RlZmluZSBDU1JfVElNRVIzX0NOVEwJCURDMjEyODVfSU8oMHgwMzQ4KQorI2RlZmluZSBDU1JfVElNRVIzX0NMUgkJREMyMTI4NV9JTygweDAzNGMpCisjZGVmaW5lIENTUl9USU1FUjRfTE9BRAkJREMyMTI4NV9JTygweDAzNjApCisjZGVmaW5lIENTUl9USU1FUjRfVkFMVUUJREMyMTI4NV9JTygweDAzNjQpCisjZGVmaW5lIENTUl9USU1FUjRfQ05UTAkJREMyMTI4NV9JTygweDAzNjgpCisjZGVmaW5lIENTUl9USU1FUjRfQ0xSCQlEQzIxMjg1X0lPKDB4MDM2YykKKworI2RlZmluZSBUSU1FUl9DTlRMX0VOQUJMRQkoMSA8PCA3KQorI2RlZmluZSBUSU1FUl9DTlRMX0FVVE9SRUxPQUQJKDEgPDwgNikKKyNkZWZpbmUgVElNRVJfQ05UTF9ESVYxCQkoMCkKKyNkZWZpbmUgVElNRVJfQ05UTF9ESVYxNgkoMSA8PCAyKQorI2RlZmluZSBUSU1FUl9DTlRMX0RJVjI1NgkoMiA8PCAyKQorI2RlZmluZSBUSU1FUl9DTlRMX0NOVEVYVAkoMyA8PCAyKQorCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9lbnRyeS1tYWNyby1pb21kLlMgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZW50cnktbWFjcm8taW9tZC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYzdiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZW50cnktbWFjcm8taW9tZC5TCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogYXJjaC9hcm0vY29tbW9uZC9lbnRyeS1tYWNyby1pb21kLlMKKyAqCisgKiBMb3ctbGV2ZWwgSVJRIGhlbHBlciBtYWNyb3MgZm9yIElPQy9JT01EIGJhc2VkIHBsYXRmb3JtcworICoKKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQorICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICovCisKKy8qIElPQyAvIElPTUQgYmFzZWQgaGFyZHdhcmUgKi8KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvaW9tZC5oPgorCisJCS5lcXUJaW9jX2Jhc2VfaGlnaCwgSU9DX0JBU0UgJiAweGZmMDAwMDAwCisJCS5lcXUJaW9jX2Jhc2VfbG93LCBJT0NfQkFTRSAmIDB4MDBmZjAwMDAKKwkJLm1hY3JvCWRpc2FibGVfZmlxCisJCW1vdglyMTIsICNpb2NfYmFzZV9oaWdoCisJCS5pZglpb2NfYmFzZV9sb3cKKwkJb3JyCXIxMiwgcjEyLCAjaW9jX2Jhc2VfbG93CisJCS5lbmRpZgorCQlzdHJiCXIxMiwgW3IxMiwgIzB4MzhdCUAgRGlzYWJsZSBGSVEgcmVnaXN0ZXIKKwkJLmVuZG0KKworCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCisJCW1vdglyNCwgI2lvY19iYXNlX2hpZ2gJCUAgcG9pbnQgYXQgSU9DCisJCS5pZglpb2NfYmFzZV9sb3cKKwkJb3JyCXI0LCByNCwgI2lvY19iYXNlX2xvdworCQkuZW5kaWYKKwkJbGRyYglcaXJxc3RhdCwgW3I0LCAjSU9NRF9JUlFSRVFCXQlAIGdldCBoaWdoIHByaW9yaXR5IGZpcnN0CisJCWxkcglcYmFzZSwgPWlycV9wcmlvX2gKKwkJdGVxCVxpcnFzdGF0LCAjMAorI2lmZGVmIElPTURfQkFTRQorCQlsZHJlcWIJXGlycXN0YXQsIFtyNCwgI0lPTURfRE1BUkVRXQlAIGdldCBkbWEKKwkJYWRkZXEJXGJhc2UsIFxiYXNlLCAjMjU2CQlAIGlycV9wcmlvX2ggdGFibGUgc2l6ZQorCQl0ZXFlcQlcaXJxc3RhdCwgIzAKKwkJYm5lCTI0MDZmCisjZW5kaWYKKwkJbGRyZXFiCVxpcnFzdGF0LCBbcjQsICNJT01EX0lSUVJFUUFdCUAgZ2V0IGxvdyBwcmlvcml0eQorCQlhZGRlcQlcYmFzZSwgXGJhc2UsICMyNTYJCUAgaXJxX3ByaW9fZCB0YWJsZSBzaXplCisJCXRlcWVxCVxpcnFzdGF0LCAjMAorI2lmZGVmIElPTURfSVJRUkVRQworCQlsZHJlcWIJXGlycXN0YXQsIFtyNCwgI0lPTURfSVJRUkVRQ10KKwkJYWRkZXEJXGJhc2UsIFxiYXNlLCAjMjU2CQlAIGlycV9wcmlvX2wgdGFibGUgc2l6ZQorCQl0ZXFlcQlcaXJxc3RhdCwgIzAKKyNlbmRpZgorI2lmZGVmIElPTURfSVJRUkVRRAorCQlsZHJlcWIJXGlycXN0YXQsIFtyNCwgI0lPTURfSVJRUkVRRF0KKwkJYWRkZXEJXGJhc2UsIFxiYXNlLCAjMjU2CQlAIGlycV9wcmlvX2xjIHRhYmxlIHNpemUKKwkJdGVxZXEJXGlycXN0YXQsICMwCisjZW5kaWYKKzI0MDY6CQlsZHJuZWIJXGlycW5yLCBbXGJhc2UsIFxpcnFzdGF0XQlAIGdldCBJUlEgbnVtYmVyCisJCS5lbmRtCisKKy8qCisgKiBJbnRlcnJ1cHQgdGFibGUgKGluY29ycG9yYXRlcyBwcmlvcml0eSkuICBQbGVhc2Ugbm90ZSB0aGF0IHdlCisgKiByZWx5IG9uIHRoZSBvcmRlciBvZiB0aGVzZSB0YWJsZXMgKHNlZSBhYm92ZSBjb2RlKS4KKyAqLworCQkuYWxpZ24JNQoraXJxX3ByaW9faDoJLmJ5dGUJIDAsIDgsIDksIDgsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTIsIDgsIDksIDgsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTQsMTQsMTQsMTQsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTQsMTQsMTQsMTQsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTUsMTUsMTUsMTUsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTUsMTUsMTUsMTUsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTUsMTUsMTUsMTUsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTUsMTUsMTUsMTUsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKwkJLmJ5dGUJMTMsMTMsMTMsMTMsMTAsMTAsMTAsMTAsMTEsMTEsMTEsMTEsMTAsMTAsMTAsMTAKKyNpZmRlZiBJT01EX0JBU0UKK2lycV9wcmlvX2Q6CS5ieXRlCSAwLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIwLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIyLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIyLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIzLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIzLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIyLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIyLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisJCS5ieXRlCTIxLDE2LDE3LDE2LDE4LDE2LDE3LDE2LDE5LDE2LDE3LDE2LDE4LDE2LDE3LDE2CisjZW5kaWYKK2lycV9wcmlvX2w6CS5ieXRlCSAwLCAwLCAxLCAwLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzCisJCS5ieXRlCSA0LCAwLCAxLCAwLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzCisJCS5ieXRlCSA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1CisJCS5ieXRlCSA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1CisJCS5ieXRlCSA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzCisJCS5ieXRlCSA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzCisJCS5ieXRlCSA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1CisJCS5ieXRlCSA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisJCS5ieXRlCSA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3CisjaWZkZWYgSU9NRF9JUlFSRVFDCitpcnFfcHJpb19sYzoJLmJ5dGUJMjQsMjQsMjUsMjQsMjYsMjYsMjYsMjYsMjcsMjcsMjcsMjcsMjcsMjcsMjcsMjcKKwkJLmJ5dGUJMjgsMjQsMjUsMjQsMjYsMjYsMjYsMjYsMjcsMjcsMjcsMjcsMjcsMjcsMjcsMjcKKwkJLmJ5dGUJMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjkKKwkJLmJ5dGUJMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjkKKwkJLmJ5dGUJMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMjcsMjcsMjcsMjcsMjcsMjcsMjcsMjcKKwkJLmJ5dGUJMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMjcsMjcsMjcsMjcsMjcsMjcsMjcsMjcKKwkJLmJ5dGUJMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjkKKwkJLmJ5dGUJMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjksMjkKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKwkJLmJ5dGUJMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzEKKyNlbmRpZgorI2lmZGVmIElPTURfSVJRUkVRRAoraXJxX3ByaW9fbGQ6CS5ieXRlCTQwLDQwLDQxLDQwLDQyLDQyLDQyLDQyLDQzLDQzLDQzLDQzLDQzLDQzLDQzLDQzCisJCS5ieXRlCTQ0LDQwLDQxLDQwLDQyLDQyLDQyLDQyLDQzLDQzLDQzLDQzLDQzLDQzLDQzLDQzCisJCS5ieXRlCTQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1CisJCS5ieXRlCTQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1CisJCS5ieXRlCTQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQzLDQzLDQzLDQzLDQzLDQzLDQzLDQzCisJCS5ieXRlCTQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQ2LDQzLDQzLDQzLDQzLDQzLDQzLDQzLDQzCisJCS5ieXRlCTQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1CisJCS5ieXRlCTQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1LDQ1CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisJCS5ieXRlCTQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3LDQ3CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2VwNzIxMS5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2VwNzIxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxN2FhNjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZXA3MjExLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZXA3MjExLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgRVA3MjExIGludGVybmFsCisgKiAgcmVnaXN0ZXJzLgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgQmx1ZSBNdWcsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0hBUkRXQVJFX0VQNzIxMV9ICisjZGVmaW5lIF9fQVNNX0hBUkRXQVJFX0VQNzIxMV9ICisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUvY2xwczcxMTEuaD4KKworLyoKKyAqIGRlZmluZSBFUDcyMTFfQkFTRSB0byBiZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSByZWdpb24KKyAqIHlvdSB3YW50IHRvIGFjY2Vzcy4KKyAqLworCisjZGVmaW5lIEVQNzIxMV9QSFlTX0JBU0UJKDB4ODAwMDAwMDApCisKKy8qCisgKiBYWFggbWlrZXRAYmx1ZW11Zy5jb206IG5lZWQgdG8gaW50cm9kdWNlIEVQNzIxMSByZWdpc3RlcnMgKHRob3NlIG5vdAorICogcHJlc2VudCBpbiA3MjEyKSBoZXJlLgorICovCisKKyNlbmRpZiAvKiBfX0FTTV9IQVJEV0FSRV9FUDcyMTFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2VwNzIxMi5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2VwNzIxMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOTUyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZXA3MjEyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvZXA3MjEyLmgKKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9ucyBvZiB0aGUgRVA3MjEyIGludGVybmFsCisgKiAgcmVnaXN0ZXJzLgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgRGVlcCBCbHVlIFNvbHV0aW9ucyBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0hBUkRXQVJFX0VQNzIxMl9ICisjZGVmaW5lIF9fQVNNX0hBUkRXQVJFX0VQNzIxMl9ICisKKy8qCisgKiBkZWZpbmUgRVA3MjEyX0JBU0UgdG8gYmUgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgcmVnaW9uCisgKiB5b3Ugd2FudCB0byBhY2Nlc3MuCisgKi8KKworI2RlZmluZSBFUDcyMTJfUEhZU19CQVNFCSgweDgwMDAwMDAwKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBlcF9yZWFkbChvZmYpCQlfX3Jhd19yZWFkbChFUDcyMTJfQkFTRSArIChvZmYpKQorI2RlZmluZSBlcF93cml0ZWwodmFsLG9mZikJX19yYXdfd3JpdGVsKHZhbCwgRVA3MjEyX0JBU0UgKyAob2ZmKSkKKyNlbmRpZgorCisvKgorICogVGhlc2UgcmVnaXN0ZXJzIGFyZSBzcGVjaWZpYyB0byB0aGUgRVA3MjEyIG9ubHkKKyAqLworI2RlZmluZSBEQUlSCQkJMHgyMDAwCisjZGVmaW5lIERBSVIwCQkJMHgyMDQwCisjZGVmaW5lIERBSURSMQkJCTB4MjA4MAorI2RlZmluZSBEQUlEUjIJCQkweDIwYzAKKyNkZWZpbmUgREFJU1IJCQkweDIxMDAKKyNkZWZpbmUgU1lTQ09OMwkJCTB4MjIwMAorI2RlZmluZSBJTlRTUjMJCQkweDIyNDAKKyNkZWZpbmUgSU5UTVIzCQkJMHgyMjgwCisjZGVmaW5lIExFREZMU0gJCQkweDIyYzAKKworI2RlZmluZSBEQUlSX0RBSUVOCQkoMSA8PCAxNikKKyNkZWZpbmUgREFJUl9FQ1MJCSgxIDw8IDE3KQorI2RlZmluZSBEQUlSX0xDVE0JCSgxIDw8IDE5KQorI2RlZmluZSBEQUlSX0xDUk0JCSgxIDw8IDIwKQorI2RlZmluZSBEQUlSX1JDVE0JCSgxIDw8IDIxKQorI2RlZmluZSBEQUlSX1JDUk0JCSgxIDw8IDIyKQorI2RlZmluZSBEQUlSX0xCTQkJKDEgPDwgMjMpCisKKyNkZWZpbmUgREFJRFIyX0ZJRk9FTgkJKDEgPDwgMTUpCisjZGVmaW5lIERBSURSMl9GSUZPTEVGVAkJKDB4MGQgPDwgMTYpCisjZGVmaW5lIERBSURSMl9GSUZPUklHSFQJKDB4MTEgPDwgMTYpCisKKyNkZWZpbmUgREFJU1JfUkNUUwkJKDEgPDwgMCkKKyNkZWZpbmUgREFJU1JfUkNSUwkJKDEgPDwgMSkKKyNkZWZpbmUgREFJU1JfTENUUwkJKDEgPDwgMikKKyNkZWZpbmUgREFJU1JfTENSUwkJKDEgPDwgMykKKyNkZWZpbmUgREFJU1JfUkNUVQkJKDEgPDwgNCkKKyNkZWZpbmUgREFJU1JfUkNSTwkJKDEgPDwgNSkKKyNkZWZpbmUgREFJU1JfTENUVQkJKDEgPDwgNikKKyNkZWZpbmUgREFJU1JfTENSTwkJKDEgPDwgNykKKyNkZWZpbmUgREFJU1JfUkNORgkJKDEgPDwgOCkKKyNkZWZpbmUgREFJU1JfUkNORQkJKDEgPDwgOSkKKyNkZWZpbmUgREFJU1JfTENORgkJKDEgPDwgMTApCisjZGVmaW5lIERBSVNSX0xDTkUJCSgxIDw8IDExKQorI2RlZmluZSBEQUlTUl9GSUZPCQkoMSA8PCAxMikKKworI2RlZmluZSBTWVNDT04zX0FEQ0NPTgkJKDEgPDwgMCkKKyNkZWZpbmUgU1lTQ09OM19EQUlTRUwJCSgxIDw8IDMpCisjZGVmaW5lIFNZU0NPTjNfQURDQ0tOU0VOCSgxIDw8IDQpCisjZGVmaW5lIFNZU0NPTjNfRkFTVFdBS0UJKDEgPDwgOCkKKyNkZWZpbmUgU1lTQ09OM19EQUlFTgkJKDEgPDwgOSkKKworI2VuZGlmIC8qIF9fQVNNX0hBUkRXQVJFX0VQNzIxMl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvaWNzdDMwNy5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2ljc3QzMDcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjg2MThhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2ljc3QzMDcuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pY3N0MzA3LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIERlZXAgQmx1ZSBTb2x1dGlvbnMsIEx0ZCwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgY2FsY3VsYXRpbmcgY2xvY2tzL2Rpdmlzb3JzIGZvciB0aGUgSUNTMzA3CisgKiAgY2xvY2sgZ2VuZXJhdG9ycy4gIFNlZSBodHRwOi8vd3d3Lmljc3QuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICogIG9uIHRoZXNlIGRldmljZXMuCisgKgorICogIFRoaXMgZmlsZSBpcyBzaW1pbGFyIHRvIHRoZSBpY3N0NTI1LmggZmlsZQorICovCisjaWZuZGVmIEFTTUFSTV9IQVJEV0FSRV9JQ1NUMzA3X0gKKyNkZWZpbmUgQVNNQVJNX0hBUkRXQVJFX0lDU1QzMDdfSAorCitzdHJ1Y3QgaWNzdDMwN19wYXJhbXMgeworCXVuc2lnbmVkIGxvbmcJcmVmOworCXVuc2lnbmVkIGxvbmcJdmNvX21heDsJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgc2hvcnQJdmRfbWluOwkJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgc2hvcnQJdmRfbWF4OwkJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgY2hhcglyZF9taW47CQkvKiBpbmNsdXNpdmUgKi8KKwl1bnNpZ25lZCBjaGFyCXJkX21heDsJCS8qIGluY2x1c2l2ZSAqLworfTsKKworc3RydWN0IGljc3QzMDdfdmNvIHsKKwl1bnNpZ25lZCBzaG9ydAl2OworCXVuc2lnbmVkIGNoYXIJcjsKKwl1bnNpZ25lZCBjaGFyCXM7Cit9OworCit1bnNpZ25lZCBsb25nIGljc3QzMDdfa2h6KGNvbnN0IHN0cnVjdCBpY3N0MzA3X3BhcmFtcyAqcCwgc3RydWN0IGljc3QzMDdfdmNvIHZjbyk7CitzdHJ1Y3QgaWNzdDMwN192Y28gaWNzdDMwN19raHpfdG9fdmNvKGNvbnN0IHN0cnVjdCBpY3N0MzA3X3BhcmFtcyAqcCwgdW5zaWduZWQgbG9uZyBmcmVxKTsKK3N0cnVjdCBpY3N0MzA3X3ZjbyBpY3N0MzA3X3BzX3RvX3Zjbyhjb25zdCBzdHJ1Y3QgaWNzdDMwN19wYXJhbXMgKnAsIHVuc2lnbmVkIGxvbmcgcGVyaW9kKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvaWNzdDUyNS5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2ljc3Q1MjUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ1YTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2ljc3Q1MjUuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pY3N0NTI1LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzIERlZXAgQmx1ZSBTb2x1dGlvbnMsIEx0ZCwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgY2FsY3VsYXRpbmcgY2xvY2tzL2Rpdmlzb3JzIGZvciB0aGUgSUNTVDUyNQorICogIGNsb2NrIGdlbmVyYXRvcnMuICBTZWUgaHR0cDovL3d3dy5pY3N0LmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAqICBvbiB0aGVzZSBkZXZpY2VzLgorICovCisjaWZuZGVmIEFTTUFSTV9IQVJEV0FSRV9JQ1NUNTI1X0gKKyNkZWZpbmUgQVNNQVJNX0hBUkRXQVJFX0lDU1Q1MjVfSAorCitzdHJ1Y3QgaWNzdDUyNV9wYXJhbXMgeworCXVuc2lnbmVkIGxvbmcJcmVmOworCXVuc2lnbmVkIGxvbmcJdmNvX21heDsJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgc2hvcnQJdmRfbWluOwkJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgc2hvcnQJdmRfbWF4OwkJLyogaW5jbHVzaXZlICovCisJdW5zaWduZWQgY2hhcglyZF9taW47CQkvKiBpbmNsdXNpdmUgKi8KKwl1bnNpZ25lZCBjaGFyCXJkX21heDsJCS8qIGluY2x1c2l2ZSAqLworfTsKKworc3RydWN0IGljc3Q1MjVfdmNvIHsKKwl1bnNpZ25lZCBzaG9ydAl2OworCXVuc2lnbmVkIGNoYXIJcjsKKwl1bnNpZ25lZCBjaGFyCXM7Cit9OworCit1bnNpZ25lZCBsb25nIGljc3Q1MjVfa2h6KGNvbnN0IHN0cnVjdCBpY3N0NTI1X3BhcmFtcyAqcCwgc3RydWN0IGljc3Q1MjVfdmNvIHZjbyk7CitzdHJ1Y3QgaWNzdDUyNV92Y28gaWNzdDUyNV9raHpfdG9fdmNvKGNvbnN0IHN0cnVjdCBpY3N0NTI1X3BhcmFtcyAqcCwgdW5zaWduZWQgbG9uZyBmcmVxKTsKK3N0cnVjdCBpY3N0NTI1X3ZjbyBpY3N0NTI1X3BzX3RvX3Zjbyhjb25zdCBzdHJ1Y3QgaWNzdDUyNV9wYXJhbXMgKnAsIHVuc2lnbmVkIGxvbmcgcGVyaW9kKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvaW9jLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvaW9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiNDZlZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pb2MuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pb2MuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIFVzZSB0aGVzZSBtYWNyb3MgdG8gcmVhZC93cml0ZSB0aGUgSU9DLiAgQWxsIGl0IGRvZXMgaXMgcGVyZm9ybSB0aGUgYWN0dWFsCisgKiAgcmVhZC93cml0ZS4KKyAqLworI2lmbmRlZiBfX0FTTUFSTV9IQVJEV0FSRV9JT0NfSAorI2RlZmluZSBfX0FTTUFSTV9IQVJEV0FSRV9JT0NfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKgorICogV2UgdXNlIF9fcmF3X2Jhc2UgdmFyaWFudHMgaGVyZSBzbyB0aGF0IHdlIGdpdmUgdGhlIGNvbXBpbGVyIHRoZQorICogY2hhbmNlIHRvIGtlZXAgSU9DX0JBU0UgaW4gYSByZWdpc3Rlci4KKyAqLworI2RlZmluZSBpb2NfcmVhZGIob2ZmKQkJX19yYXdfcmVhZGIoSU9DX0JBU0UgKyAob2ZmKSkKKyNkZWZpbmUgaW9jX3dyaXRlYih2YWwsb2ZmKQlfX3Jhd193cml0ZWIodmFsLCBJT0NfQkFTRSArIChvZmYpKQorCisjZW5kaWYKKworI2RlZmluZSBJT0NfQ09OVFJPTAkoMHgwMCkKKyNkZWZpbmUgSU9DX0tBUlRUWAkoMHgwNCkKKyNkZWZpbmUgSU9DX0tBUlRSWAkoMHgwNCkKKworI2RlZmluZSBJT0NfSVJRU1RBVEEJKDB4MTApCisjZGVmaW5lIElPQ19JUlFSRVFBCSgweDE0KQorI2RlZmluZSBJT0NfSVJRQ0xSQQkoMHgxNCkKKyNkZWZpbmUgSU9DX0lSUU1BU0tBCSgweDE4KQorCisjZGVmaW5lIElPQ19JUlFTVEFUQgkoMHgyMCkKKyNkZWZpbmUgSU9DX0lSUVJFUUIJKDB4MjQpCisjZGVmaW5lIElPQ19JUlFNQVNLQgkoMHgyOCkKKworI2RlZmluZSBJT0NfRklRU1RBVAkoMHgzMCkKKyNkZWZpbmUgSU9DX0ZJUVJFUQkoMHgzNCkKKyNkZWZpbmUgSU9DX0ZJUU1BU0sJKDB4MzgpCisKKyNkZWZpbmUgSU9DX1QwQ05UTAkoMHg0MCkKKyNkZWZpbmUgSU9DX1QwTFRDSEwJKDB4NDApCisjZGVmaW5lIElPQ19UMENOVEgJKDB4NDQpCisjZGVmaW5lIElPQ19UMExUQ0hICSgweDQ0KQorI2RlZmluZSBJT0NfVDBHTwkoMHg0OCkKKyNkZWZpbmUgSU9DX1QwTEFUQ0gJKDB4NGMpCisKKyNkZWZpbmUgSU9DX1QxQ05UTAkoMHg1MCkKKyNkZWZpbmUgSU9DX1QxTFRDSEwJKDB4NTApCisjZGVmaW5lIElPQ19UMUNOVEgJKDB4NTQpCisjZGVmaW5lIElPQ19UMUxUQ0hICSgweDU0KQorI2RlZmluZSBJT0NfVDFHTwkoMHg1OCkKKyNkZWZpbmUgSU9DX1QxTEFUQ0gJKDB4NWMpCisKKyNkZWZpbmUgSU9DX1QyQ05UTAkoMHg2MCkKKyNkZWZpbmUgSU9DX1QyTFRDSEwJKDB4NjApCisjZGVmaW5lIElPQ19UMkNOVEgJKDB4NjQpCisjZGVmaW5lIElPQ19UMkxUQ0hICSgweDY0KQorI2RlZmluZSBJT0NfVDJHTwkoMHg2OCkKKyNkZWZpbmUgSU9DX1QyTEFUQ0gJKDB4NmMpCisKKyNkZWZpbmUgSU9DX1QzQ05UTAkoMHg3MCkKKyNkZWZpbmUgSU9DX1QzTFRDSEwJKDB4NzApCisjZGVmaW5lIElPQ19UM0NOVEgJKDB4NzQpCisjZGVmaW5lIElPQ19UM0xUQ0hICSgweDc0KQorI2RlZmluZSBJT0NfVDNHTwkoMHg3OCkKKyNkZWZpbmUgSU9DX1QzTEFUQ0gJKDB4N2MpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2lvbWQuaCBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pb21kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmYTJjMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9pb21kLmgKQEAgLTAsMCArMSwyMjcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2lvbWQuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTkgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIG91dCB0aGUgSU9NRCBBU0lDIHVzZWQgaW4gdGhlCisgKiAgQWNvcm4gUmlzY1BDIGFuZCBzdWJzZXF1ZW50bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBDTFBTNzUwMCBjaGlwcy4KKyAqLworI2lmbmRlZiBfX0FTTUFSTV9IQVJEV0FSRV9JT01EX0gKKyNkZWZpbmUgX19BU01BUk1fSEFSRFdBUkVfSU9NRF9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyoKKyAqIFdlIHVzZSBfX3Jhd19iYXNlIHZhcmlhbnRzIGhlcmUgc28gdGhhdCB3ZSBnaXZlIHRoZSBjb21waWxlciB0aGUKKyAqIGNoYW5jZSB0byBrZWVwIElPQ19CQVNFIGluIGEgcmVnaXN0ZXIuCisgKi8KKyNkZWZpbmUgaW9tZF9yZWFkYihvZmYpCQlfX3Jhd19yZWFkYihJT01EX0JBU0UgKyAob2ZmKSkKKyNkZWZpbmUgaW9tZF9yZWFkbChvZmYpCQlfX3Jhd19yZWFkbChJT01EX0JBU0UgKyAob2ZmKSkKKyNkZWZpbmUgaW9tZF93cml0ZWIodmFsLG9mZikJX19yYXdfd3JpdGViKHZhbCwgSU9NRF9CQVNFICsgKG9mZikpCisjZGVmaW5lIGlvbWRfd3JpdGVsKHZhbCxvZmYpCV9fcmF3X3dyaXRlbCh2YWwsIElPTURfQkFTRSArIChvZmYpKQorCisjZW5kaWYKKworI2RlZmluZSBJT01EX0NPTlRST0wJKDB4MDAwKQorI2RlZmluZSBJT01EX0tBUlRUWAkoMHgwMDQpCisjZGVmaW5lIElPTURfS0FSVFJYCSgweDAwNCkKKyNkZWZpbmUgSU9NRF9LQ1RSTAkoMHgwMDgpCisKKyNpZmRlZiBDT05GSUdfQVJDSF9DTFBTNzUwMAorI2RlZmluZSBJT01EX0lPTElORVMJKDB4MDBDKQorI2VuZGlmCisKKyNkZWZpbmUgSU9NRF9JUlFTVEFUQQkoMHgwMTApCisjZGVmaW5lIElPTURfSVJRUkVRQQkoMHgwMTQpCisjZGVmaW5lIElPTURfSVJRQ0xSQQkoMHgwMTQpCisjZGVmaW5lIElPTURfSVJRTUFTS0EJKDB4MDE4KQorCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0xQUzc1MDAKKyNkZWZpbmUgSU9NRF9TVVNNT0RFCSgweDAxQykKKyNlbmRpZgorCisjZGVmaW5lIElPTURfSVJRU1RBVEIJKDB4MDIwKQorI2RlZmluZSBJT01EX0lSUVJFUUIJKDB4MDI0KQorI2RlZmluZSBJT01EX0lSUU1BU0tCCSgweDAyOCkKKworI2RlZmluZSBJT01EX0ZJUVNUQVQJKDB4MDMwKQorI2RlZmluZSBJT01EX0ZJUVJFUQkoMHgwMzQpCisjZGVmaW5lIElPTURfRklRTUFTSwkoMHgwMzgpCisKKyNpZmRlZiBDT05GSUdfQVJDSF9DTFBTNzUwMAorI2RlZmluZSBJT01EX0NMS0NUTAkoMHgwM0MpCisjZW5kaWYKKworI2RlZmluZSBJT01EX1QwQ05UTAkoMHgwNDApCisjZGVmaW5lIElPTURfVDBMVENITAkoMHgwNDApCisjZGVmaW5lIElPTURfVDBDTlRICSgweDA0NCkKKyNkZWZpbmUgSU9NRF9UMExUQ0hICSgweDA0NCkKKyNkZWZpbmUgSU9NRF9UMEdPCSgweDA0OCkKKyNkZWZpbmUgSU9NRF9UMExBVENICSgweDA0YykKKworI2RlZmluZSBJT01EX1QxQ05UTAkoMHgwNTApCisjZGVmaW5lIElPTURfVDFMVENITAkoMHgwNTApCisjZGVmaW5lIElPTURfVDFDTlRICSgweDA1NCkKKyNkZWZpbmUgSU9NRF9UMUxUQ0hICSgweDA1NCkKKyNkZWZpbmUgSU9NRF9UMUdPCSgweDA1OCkKKyNkZWZpbmUgSU9NRF9UMUxBVENICSgweDA1YykKKworI2lmZGVmIENPTkZJR19BUkNIX0NMUFM3NTAwCisjZGVmaW5lIElPTURfSVJRU1RBVEMJKDB4MDYwKQorI2RlZmluZSBJT01EX0lSUVJFUUMJKDB4MDY0KQorI2RlZmluZSBJT01EX0lSUU1BU0tDCSgweDA2OCkKKworI2RlZmluZSBJT01EX1ZJRE1VWAkoMHgwNmMpCisKKyNkZWZpbmUgSU9NRF9JUlFTVEFURAkoMHgwNzApCisjZGVmaW5lIElPTURfSVJRUkVRRAkoMHgwNzQpCisjZGVmaW5lIElPTURfSVJRTUFTS0QJKDB4MDc4KQorI2VuZGlmCisKKyNkZWZpbmUgSU9NRF9ST01DUjAJKDB4MDgwKQorI2RlZmluZSBJT01EX1JPTUNSMQkoMHgwODQpCisjaWZkZWYgQ09ORklHX0FSQ0hfUlBDCisjZGVmaW5lIElPTURfRFJBTUNSCSgweDA4OCkKKyNlbmRpZgorI2RlZmluZSBJT01EX1JFRkNSCSgweDA4QykKKworI2RlZmluZSBJT01EX0ZTSVpFCSgweDA5MCkKKyNkZWZpbmUgSU9NRF9JRDAJKDB4MDk0KQorI2RlZmluZSBJT01EX0lEMQkoMHgwOTgpCisjZGVmaW5lIElPTURfVkVSU0lPTgkoMHgwOUMpCisKKyNpZmRlZiBDT05GSUdfQVJDSF9SUEMKKyNkZWZpbmUgSU9NRF9NT1VTRVgJKDB4MEEwKQorI2RlZmluZSBJT01EX01PVVNFWQkoMHgwQTQpCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0NMUFM3NTAwCisjZGVmaW5lIElPTURfTVNFREFUCSgweDBBOCkKKyNkZWZpbmUgSU9NRF9NU0VDVEwJKDB4MEFjKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9SUEMKKyNkZWZpbmUgSU9NRF9ETUFUQ1IJKDB4MEMwKQorI2VuZGlmCisjZGVmaW5lIElPTURfSU9UQ1IJKDB4MEM0KQorI2RlZmluZSBJT01EX0VDVENSCSgweDBDOCkKKyNpZmRlZiBDT05GSUdfQVJDSF9SUEMKKyNkZWZpbmUgSU9NRF9ETUFFWFQJKDB4MENDKQorI2VuZGlmCisjaWZkZWYgQ09ORklHX0FSQ0hfQ0xQUzc1MDAKKyNkZWZpbmUgSU9NRF9BU1RDUgkoMHgwQ0MpCisjZGVmaW5lIElPTURfRFJBTUNSCSgweDBEMCkKKyNkZWZpbmUgSU9NRF9TRUxGUkVGCSgweDBENCkKKyNkZWZpbmUgSU9NRF9BVE9ESUNSCSgweDBFMCkKKyNkZWZpbmUgSU9NRF9BVE9EU1IJKDB4MEU0KQorI2RlZmluZSBJT01EX0FUT0RDQwkoMHgwRTgpCisjZGVmaW5lIElPTURfQVRPRENOVDEJKDB4MEVDKQorI2RlZmluZSBJT01EX0FUT0RDTlQyCSgweDBGMCkKKyNkZWZpbmUgSU9NRF9BVE9EQ05UMwkoMHgwRjQpCisjZGVmaW5lIElPTURfQVRPRENOVDQJKDB4MEY4KQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfQVJDSF9SUEMKKyNkZWZpbmUgRE1BX0VYVF9JTzAJMQorI2RlZmluZSBETUFfRVhUX0lPMQkyCisjZGVmaW5lIERNQV9FWFRfSU8yCTQKKyNkZWZpbmUgRE1BX0VYVF9JTzMJOAorCisjZGVmaW5lIElPTURfSU8wQ1VSQQkoMHgxMDApCisjZGVmaW5lIElPTURfSU8wRU5EQQkoMHgxMDQpCisjZGVmaW5lIElPTURfSU8wQ1VSQgkoMHgxMDgpCisjZGVmaW5lIElPTURfSU8wRU5EQgkoMHgxMEMpCisjZGVmaW5lIElPTURfSU8wQ1IJKDB4MTEwKQorI2RlZmluZSBJT01EX0lPMFNUCSgweDExNCkKKworI2RlZmluZSBJT01EX0lPMUNVUkEJKDB4MTIwKQorI2RlZmluZSBJT01EX0lPMUVOREEJKDB4MTI0KQorI2RlZmluZSBJT01EX0lPMUNVUkIJKDB4MTI4KQorI2RlZmluZSBJT01EX0lPMUVOREIJKDB4MTJDKQorI2RlZmluZSBJT01EX0lPMUNSCSgweDEzMCkKKyNkZWZpbmUgSU9NRF9JTzFTVAkoMHgxMzQpCisKKyNkZWZpbmUgSU9NRF9JTzJDVVJBCSgweDE0MCkKKyNkZWZpbmUgSU9NRF9JTzJFTkRBCSgweDE0NCkKKyNkZWZpbmUgSU9NRF9JTzJDVVJCCSgweDE0OCkKKyNkZWZpbmUgSU9NRF9JTzJFTkRCCSgweDE0QykKKyNkZWZpbmUgSU9NRF9JTzJDUgkoMHgxNTApCisjZGVmaW5lIElPTURfSU8yU1QJKDB4MTU0KQorCisjZGVmaW5lIElPTURfSU8zQ1VSQQkoMHgxNjApCisjZGVmaW5lIElPTURfSU8zRU5EQQkoMHgxNjQpCisjZGVmaW5lIElPTURfSU8zQ1VSQgkoMHgxNjgpCisjZGVmaW5lIElPTURfSU8zRU5EQgkoMHgxNkMpCisjZGVmaW5lIElPTURfSU8zQ1IJKDB4MTcwKQorI2RlZmluZSBJT01EX0lPM1NUCSgweDE3NCkKKyNlbmRpZgorCisjZGVmaW5lIElPTURfU0QwQ1VSQQkoMHgxODApCisjZGVmaW5lIElPTURfU0QwRU5EQQkoMHgxODQpCisjZGVmaW5lIElPTURfU0QwQ1VSQgkoMHgxODgpCisjZGVmaW5lIElPTURfU0QwRU5EQgkoMHgxOEMpCisjZGVmaW5lIElPTURfU0QwQ1IJKDB4MTkwKQorI2RlZmluZSBJT01EX1NEMFNUCSgweDE5NCkKKworI2lmZGVmIENPTkZJR19BUkNIX1JQQworI2RlZmluZSBJT01EX1NEMUNVUkEJKDB4MUEwKQorI2RlZmluZSBJT01EX1NEMUVOREEJKDB4MUE0KQorI2RlZmluZSBJT01EX1NEMUNVUkIJKDB4MUE4KQorI2RlZmluZSBJT01EX1NEMUVOREIJKDB4MUFDKQorI2RlZmluZSBJT01EX1NEMUNSCSgweDFCMCkKKyNkZWZpbmUgSU9NRF9TRDFTVAkoMHgxQjQpCisjZW5kaWYKKworI2RlZmluZSBJT01EX0NVUlNDVVIJKDB4MUMwKQorI2RlZmluZSBJT01EX0NVUlNJTklUCSgweDFDNCkKKworI2RlZmluZSBJT01EX1ZJRENVUgkoMHgxRDApCisjZGVmaW5lIElPTURfVklERU5ECSgweDFENCkKKyNkZWZpbmUgSU9NRF9WSURTVEFSVAkoMHgxRDgpCisjZGVmaW5lIElPTURfVklESU5JVAkoMHgxREMpCisjZGVmaW5lIElPTURfVklEQ1IJKDB4MUUwKQorCisjZGVmaW5lIElPTURfRE1BU1RBVAkoMHgxRjApCisjZGVmaW5lIElPTURfRE1BUkVRCSgweDFGNCkKKyNkZWZpbmUgSU9NRF9ETUFNQVNLCSgweDFGOCkKKworI2RlZmluZSBETUFfRU5EX1MJKDEgPDwgMzEpCisjZGVmaW5lIERNQV9FTkRfTAkoMSA8PCAzMCkKKworI2RlZmluZSBETUFfQ1JfQwkweDgwCisjZGVmaW5lIERNQV9DUl9ECTB4NDAKKyNkZWZpbmUgRE1BX0NSX0UJMHgyMAorCisjZGVmaW5lIERNQV9TVF9PRkwJNAorI2RlZmluZSBETUFfU1RfSU5UCTIKKyNkZWZpbmUgRE1BX1NUX0FCCTEKKworLyoKKyAqIERNQSAoTUVNQykgY29tcGF0aWJpbGl0eQorICovCisjZGVmaW5lIEhBTEZfU0FNCXZyYW1faGFsZl9zYW0KKyNkZWZpbmUgVkRNQV9BTElHTk1FTlQJKEhBTEZfU0FNICogMikKKyNkZWZpbmUgVkRNQV9YRkVSU0laRQkoSEFMRl9TQU0pCisjZGVmaW5lIFZETUFfSU5JVAlJT01EX1ZJRElOSVQKKyNkZWZpbmUgVkRNQV9TVEFSVAlJT01EX1ZJRFNUQVJUCisjZGVmaW5lIFZETUFfRU5ECUlPTURfVklERU5ECisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdW5zaWduZWQgaW50IHZyYW1faGFsZl9zYW07CisjZGVmaW5lIHZpZGVvX3NldF9kbWEoc3RhcnQsZW5kLG9mZnNldCkJCQkJXAorZG8gewkJCQkJCQkJXAorCW91dGwgKFNDUkVFTl9TVEFSVCArIHN0YXJ0LCBWRE1BX1NUQVJUKTsJCVwKKwlvdXRsIChTQ1JFRU5fU1RBUlQgKyBlbmQgLSBWRE1BX1hGRVJTSVpFLCBWRE1BX0VORCk7CVwKKwlpZiAob2Zmc2V0ID49IGVuZCAtIFZETUFfWEZFUlNJWkUpCQkJXAorCQlvZmZzZXQgfD0gMHg0MDAwMDAwMDsJCQkJXAorCW91dGwgKFNDUkVFTl9TVEFSVCArIG9mZnNldCwgVkRNQV9JTklUKTsJCVwKK30gd2hpbGUgKDApCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvbGlua3VwLWwxMTEwLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvbGlua3VwLWwxMTEwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjOTExNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9saW5rdXAtbDExMTAuaApAQCAtMCwwICsxLDQ4IEBACisvKgorKgorKiBEZWZpbml0aW9ucyBmb3IgSDM2MDAgSGFuZGhlbGQgQ29tcHV0ZXIKKyoKKyogQ29weXJpZ2h0IDIwMDEgQ29tcGFxIENvbXB1dGVyIENvcnBvcmF0aW9uLgorKgorKiBVc2UgY29uc2lzdGVudCB3aXRoIHRoZSBHTlUgR1BMIGlzIHBlcm1pdHRlZCwKKyogcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodCBub3RpY2UgaXMKKyogcHJlc2VydmVkIGluIGl0cyBlbnRpcmV0eSBpbiBhbGwgY29waWVzIGFuZCBkZXJpdmVkIHdvcmtzLgorKgorKiBDT01QQVEgQ09NUFVURVIgQ09SUE9SQVRJT04gTUFLRVMgTk8gV0FSUkFOVElFUywgRVhQUkVTU0VEIE9SIElNUExJRUQsCisqIEFTIFRPIFRIRSBVU0VGVUxORVNTIE9SIENPUlJFQ1RORVNTIE9GIFRISVMgQ09ERSBPUiBJVFMKKyogRklUTkVTUyBGT1IgQU5ZIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyoKKyogQXV0aG9yOiBKYW1leSBIaWNrcy4KKyoKKyovCisKKy8qIExpbmtVcCBTeXN0ZW1zIFBDQ2FyZC9Db21wYWN0Rmxhc2ggSW50ZXJmYWNlIGZvciBTQS0xMTAwICovCisKKy8qIFBDIENhcmQgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIExJTktVUF9QUlNfUzEJKDEgPDwgMCkgLyogdm9sdGFnZSBjb250cm9sIGJpdHMgUzEtUzQgKi8KKyNkZWZpbmUgTElOS1VQX1BSU19TMgkoMSA8PCAxKQorI2RlZmluZSBMSU5LVVBfUFJTX1MzCSgxIDw8IDIpCisjZGVmaW5lIExJTktVUF9QUlNfUzQJKDEgPDwgMykKKyNkZWZpbmUgTElOS1VQX1BSU19CVkQxCSgxIDw8IDQpCisjZGVmaW5lIExJTktVUF9QUlNfQlZEMgkoMSA8PCA1KQorI2RlZmluZSBMSU5LVVBfUFJTX1ZTMQkoMSA8PCA2KQorI2RlZmluZSBMSU5LVVBfUFJTX1ZTMgkoMSA8PCA3KQorI2RlZmluZSBMSU5LVVBfUFJTX1JEWQkoMSA8PCA4KQorI2RlZmluZSBMSU5LVVBfUFJTX0NEMQkoMSA8PCA5KQorI2RlZmluZSBMSU5LVVBfUFJTX0NEMgkoMSA8PCAxMCkKKworLyogUEMgQ2FyZCBDb21tYW5kIFJlZ2lzdGVyICovCisjZGVmaW5lIExJTktVUF9QUkNfUzEJKDEgPDwgMCkKKyNkZWZpbmUgTElOS1VQX1BSQ19TMgkoMSA8PCAxKQorI2RlZmluZSBMSU5LVVBfUFJDX1MzCSgxIDw8IDIpCisjZGVmaW5lIExJTktVUF9QUkNfUzQJKDEgPDwgMykKKyNkZWZpbmUgTElOS1VQX1BSQ19SRVNFVCAoMSA8PCA0KQorI2RlZmluZSBMSU5LVVBfUFJDX0FQT0UJKDEgPDwgNSkgLyogQXV0byBQb3dlciBPZmYgRW5hYmxlOiBjbGVhcnMgUzEtUzQgd2hlbiBlaXRoZXIgbkNEIGdvZXMgaGlnaCAqLworI2RlZmluZSBMSU5LVVBfUFJDX0NGRQkoMSA8PCA2KSAvKiBDb21wYWN0Rmxhc2ggbW9kZSBFbmFibGU6IGFkZHJlc3NlcyBBWzEwOjBdIG9ubHksIEFbMjU6MTFdIGhpZ2ggKi8KKyNkZWZpbmUgTElOS1VQX1BSQ19TT0UJKDEgPDwgNykgLyogc2lnbmFsIG91dHB1dCBkcml2ZXIgZW5hYmxlICovCisjZGVmaW5lIExJTktVUF9QUkNfU1NQCSgxIDw8IDgpIC8qIHNvY2sgc2VsZWN0IHBvbGFyaXR5OiAwIGZvciBzb2NrZXQgMCwgMSBmb3Igc29ja2V0IDEgKi8KKyNkZWZpbmUgTElOS1VQX1BSQ19NQloJKDEgPDwgMTUpIC8qIG11c3QgYmUgemVybyAqLworCitzdHJ1Y3QgbGlua3VwX2wxMTEwIHsKKwl2b2xhdGlsZSBzaG9ydCBwcmM7Cit9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2xvY29tby5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2xvY29tby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMTAwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvbG9jb21vLmgKQEAgLTAsMCArMSwyMDYgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvbG9jb21vLmgKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgTG9Db01vIEcvQSBDaGlwCisgKgorICogKEMpIENvcHlyaWdodCAyMDA0IEpvaG4gTGVuegorICoKKyAqIE1heSBiZSBjb3BpZWQgb3IgbW9kaWZpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgbGludXgvQ09QWUlORyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBCYXNlZCBvbiBzYTExMTEuaAorICovCisjaWZuZGVmIF9BU01fQVJDSF9MT0NPTU8KKyNkZWZpbmUgX0FTTV9BUkNIX0xPQ09NTworCisjZGVmaW5lIGxvY29tb193cml0ZWwodmFsLGFkZHIpCSh7ICoodm9sYXRpbGUgdTE2ICopKGFkZHIpID0gKHZhbCk7IH0pCisjZGVmaW5lIGxvY29tb19yZWFkbChhZGRyKQkoKih2b2xhdGlsZSB1MTYgKikoYWRkcikpCisKKy8qIExPQ09NTyB2ZXJzaW9uICovCisjZGVmaW5lIExPQ09NT19WRVIJMHgwMAorCisvKiBQaW4gc3RhdHVzICovCisjZGVmaW5lIExPQ09NT19TVAkweDA0CisKKy8qIFBpbiBzdGF0dXMgKi8KKyNkZWZpbmUgTE9DT01PX0MzMksJMHgwOAorCisvKiBJbnRlcnJ1cHQgY29udHJvbGxlciAqLworI2RlZmluZSBMT0NPTU9fSUNSCTB4MEMKKworLyogTUNTIGRlY29kZXIgZm9yIGJvb3Qgc2VsZWN0aW5nICovCisjZGVmaW5lIExPQ09NT19NQ1NYMAkweDEwCisjZGVmaW5lIExPQ09NT19NQ1NYMQkweDE0CisjZGVmaW5lIExPQ09NT19NQ1NYMgkweDE4CisjZGVmaW5lIExPQ09NT19NQ1NYMwkweDFjCisKKy8qIFRvdWNoIHBhbmVsIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgTE9DT01PX0FTRAkweDIwCQkvKiBBRCBzdGFydCBkZWxheSAqLworI2RlZmluZSBMT0NPTU9fSFNECTB4MjgJCS8qIEhTWVMgZGVsYXkgKi8KKyNkZWZpbmUgTE9DT01PX0hTQwkweDJjCQkvKiBIU1lTIHBlcmlvZCAqLworI2RlZmluZSBMT0NPTU9fVEFEQwkweDMwCQkvKiB0YWJsZXQgQURDIGNsb2NrICovCisKKworLyogTG9uZyB0aW1lIHRpbWVyICovCisjZGVmaW5lIExPQ09NT19MVEMJMHhkOAkJLyogTFRDIGludGVycnVwdCBzZXR0aW5nICovCisjZGVmaW5lIExPQ09NT19MVElOVAkweGRjCQkvKiBMVEMgaW50ZXJydXB0ICovCisKKy8qIERBQyBjb250cm9sIHNpZ25hbCBmb3IgTENEIChDT01BREogKSAqLworI2RlZmluZSBMT0NPTU9fREFDCQkweGUwCisvKiBEQUMgY29udHJvbCAqLworI2RlZmluZQlMT0NPTU9fREFDX1NDTE9FQgkweDA4CS8qIFNDTCBwaW4gb3V0cHV0IGRhdGEgICAgICAgKi8KKyNkZWZpbmUJTE9DT01PX0RBQ19URVNUCQkweDA0CS8qIFRlc3QgYml0ICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUJTE9DT01PX0RBQ19TREEJCTB4MDIJLyogU0RBIHBpbiBsZXZlbCAocmVhZC1vbmx5KSAqLworI2RlZmluZQlMT0NPTU9fREFDX1NEQU9FQgkweDAxCS8qIFNEQSBwaW4gb3V0cHV0IGRhdGEgICAgICAgKi8KKworLyogU1BJIGludGVyZmFjZSAqLworI2RlZmluZSBMT0NPTU9fU1BJTUQJMHg2MAkJLyogU1BJIG1vZGUgc2V0dGluZyAqLworI2RlZmluZSBMT0NPTU9fU1BJQ1QJMHg2NAkJLyogU1BJIG1vZGUgY29udHJvbCAqLworI2RlZmluZSBMT0NPTU9fU1BJU1QJMHg2OAkJLyogU1BJIHN0YXR1cyAqLworI2RlZmluZSBMT0NPTU9fU1BJSVMJMHg3MAkJLyogU1BJIGludGVycnVwdCBzdGF0dXMgKi8KKyNkZWZpbmUgTE9DT01PX1NQSVdFCTB4NzQJCS8qIFNQSSBpbnRlcnJ1cHQgc3RhdHVzIHdyaXRlIGVuYWJsZSAqLworI2RlZmluZSBMT0NPTU9fU1BJSUUJMHg3OAkJLyogU1BJIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgTE9DT01PX1NQSUlSCTB4N2MJCS8qIFNQSSBpbnRlcnJ1cHQgcmVxdWVzdCAqLworI2RlZmluZSBMT0NPTU9fU1BJVEQJMHg4MAkJLyogU1BJIHRyYW5zZmVyIGRhdGEgd3JpdGUgKi8KKyNkZWZpbmUgTE9DT01PX1NQSVJECTB4ODQJCS8qIFNQSSByZWNlaXZlIGRhdGEgcmVhZCAqLworI2RlZmluZSBMT0NPTU9fU1BJVFMJMHg4OAkJLyogU1BJIHRyYW5zZmVyIGRhdGEgc2hpZnQgKi8KKyNkZWZpbmUgTE9DT01PX1NQSVJTCTB4OEMJCS8qIFNQSSByZWNlaXZlIGRhdGEgc2hpZnQgKi8KKyNkZWZpbmUJTE9DT01PX1NQSV9URU5ECSgxIDw8IDMpCS8qIFRyYW5zZmVyIGVuZCBiaXQgKi8KKyNkZWZpbmUJTE9DT01PX1NQSV9PVlJOCSgxIDw8IDIpCS8qIE92ZXIgUnVuIGJpdCAqLworI2RlZmluZQlMT0NPTU9fU1BJX1JGVwkoMSA8PCAxKQkvKiB3cml0ZSBidWZmZXIgYml0ICovCisjZGVmaW5lCUxPQ09NT19TUElfUkZSCSgxKQkJLyogcmVhZCBidWZmZXIgYml0ICovCisKKy8qIEdQSU8gKi8KKyNkZWZpbmUgTE9DT01PX0dQRAkJMHg5MAkvKiBHUElPIGRpcmVjdGlvbiAqLworI2RlZmluZSBMT0NPTU9fR1BFCQkweDk0CS8qIEdQSU8gaW5wdXQgZW5hYmxlICovCisjZGVmaW5lIExPQ09NT19HUEwJCTB4OTgJLyogR1BJTyBsZXZlbCAqLworI2RlZmluZSBMT0NPTU9fR1BPCQkweDljCS8qIEdQSU8gb3V0IGRhdGEgc2V0dGVpbmcgKi8KKyNkZWZpbmUgTE9DT01PX0dSSUUJCTB4YTAJLyogR1BJTyByaXNlIGRldGVjdGlvbiAqLworI2RlZmluZSBMT0NPTU9fR0ZJRQkJMHhhNAkvKiBHUElPIGZhbGwgZGV0ZWN0aW9uICovCisjZGVmaW5lIExPQ09NT19HSVMJCTB4YTgJLyogR1BJTyBlZGdlIGRldGVjdGlvbiBzdGF0dXMgKi8KKyNkZWZpbmUgTE9DT01PX0dXRQkJMHhhYwkvKiBHUElPIHN0YXR1cyB3cml0ZSBlbmFibGUgKi8KKyNkZWZpbmUgTE9DT01PX0dJRQkJMHhiMAkvKiBHUElPIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgTE9DT01PX0dJUgkJMHhiNAkvKiBHUElPIGludGVycnVwdCByZXF1ZXN0ICovCisjZGVmaW5lCUxPQ09NT19HUElPKE5iKQkJKDB4MDEgPDwgKE5iKSkKKyNkZWZpbmUgTE9DT01PX0dQSU9fUlRTCQlMT0NPTU9fR1BJTygwKQorI2RlZmluZSBMT0NPTU9fR1BJT19DVFMJCUxPQ09NT19HUElPKDEpCisjZGVmaW5lIExPQ09NT19HUElPX0RTUgkJTE9DT01PX0dQSU8oMikKKyNkZWZpbmUgTE9DT01PX0dQSU9fRFRSCQlMT0NPTU9fR1BJTygzKQorI2RlZmluZSBMT0NPTU9fR1BJT19MQ0RfVlNIQV9PTglMT0NPTU9fR1BJTyg0KQorI2RlZmluZSBMT0NPTU9fR1BJT19MQ0RfVlNIRF9PTglMT0NPTU9fR1BJTyg1KQorI2RlZmluZSBMT0NPTU9fR1BJT19MQ0RfVkVFX09OCUxPQ09NT19HUElPKDYpCisjZGVmaW5lIExPQ09NT19HUElPX0xDRF9NT0QJTE9DT01PX0dQSU8oNykKKyNkZWZpbmUgTE9DT01PX0dQSU9fREFDX09OCUxPQ09NT19HUElPKDgpCisjZGVmaW5lIExPQ09NT19HUElPX0ZMX1ZSCUxPQ09NT19HUElPKDkpCisjZGVmaW5lIExPQ09NT19HUElPX0RBQ19TREFUQQlMT0NPTU9fR1BJTygxMCkKKyNkZWZpbmUgTE9DT01PX0dQSU9fREFDX1NDSwlMT0NPTU9fR1BJTygxMSkKKyNkZWZpbmUgTE9DT01PX0dQSU9fREFDX1NMT0FECUxPQ09NT19HUElPKDEyKQorCisvKiBTdGFydCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGRldmljZXMuICBFYWNoIGRldmljZSBoYXMgYW4gaW5pdGlhbAorICogYmFzZSBhZGRyZXNzIGFuZCBhIHNlcmllcyBvZiBvZmZzZXRzIGZyb20gdGhhdCBiYXNlIGFkZHJlc3MuICovCisKKy8qIEtleWJvYXJkIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgTE9DT01PX0tFWUJPQVJECQkweDQwCisjZGVmaW5lIExPQ09NT19LSUIJCTB4MDAJLyogS0lCIGxldmVsICovCisjZGVmaW5lIExPQ09NT19LU0MJCTB4MDQJLyogS1NUUkIgY29udHJvbCAqLworI2RlZmluZSBMT0NPTU9fS0NNRAkJMHgwOAkvKiBLU1RSQiBjb21tYW5kICovCisjZGVmaW5lIExPQ09NT19LSUMJCTB4MGMJLyogS2V5IGludGVycnVwdCAqLworCisvKiBGcm9udCBsaWdodCBhZGp1c3RtZW50IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgTE9DT01PX0ZST05UTElHSFQJMHhjOAorI2RlZmluZSBMT0NPTU9fQUxTCQkweDAwCS8qIEFkanVzdCBsaWdodCBjeWNsZSAqLworI2RlZmluZSBMT0NPTU9fQUxECQkweDA0CS8qIEFkanVzdCBsaWdodCBkdXR5ICovCisKKy8qIEJhY2tsaWdodCBjb250cm9sbGVyOiBURlQgc2lnbmFsICovCisjZGVmaW5lIExPQ09NT19CQUNLTElHSFQJMHgzOAorI2RlZmluZSBMT0NPTU9fVEMJCTB4MDAJCS8qIFRGVCBjb250cm9sIHNpZ25hbCAqLworI2RlZmluZSBMT0NPTU9fQ1BTRAkJMHgwNAkJLyogQ1BTIGRlbGF5ICovCisKKy8qIEF1ZGlvIGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgTE9DT01PX0FVRElPCQkweDU0CisjZGVmaW5lIExPQ09NT19BQ0MJCTB4MDAJLyogQXVkaW8gY2xvY2sgKi8KKyNkZWZpbmUgTE9DT01PX1BBSUYJCTB4N0MJLyogUENNIGF1ZGlvIGludGVyZmFjZSAqLworLyogQXVkaW8gY2xvY2sgKi8KKyNkZWZpbmUJTE9DT01PX0FDQ19YT04JCTB4ODAKKyNkZWZpbmUJTE9DT01PX0FDQ19YRU4JCTB4NDAKKyNkZWZpbmUJTE9DT01PX0FDQ19YU0VMMAkweDAwCisjZGVmaW5lCUxPQ09NT19BQ0NfWFNFTDEJMHgyMAorI2RlZmluZQlMT0NPTU9fQUNDX01DTEtFTgkweDEwCisjZGVmaW5lCUxPQ09NT19BQ0NfNjRGU0VOCTB4MDgKKyNkZWZpbmUJTE9DT01PX0FDQ19DTEtTRUwwMDAJMHgwMAkvKiBtY2xrICAyICovCisjZGVmaW5lCUxPQ09NT19BQ0NfQ0xLU0VMMDAxCTB4MDEJLyogbWNsayAgMyAqLworI2RlZmluZQlMT0NPTU9fQUNDX0NMS1NFTDAxMAkweDAyCS8qIG1jbGsgIDQgKi8KKyNkZWZpbmUJTE9DT01PX0FDQ19DTEtTRUwwMTEJMHgwMwkvKiBtY2xrICA2ICovCisjZGVmaW5lCUxPQ09NT19BQ0NfQ0xLU0VMMTAwCTB4MDQJLyogbWNsayAgOCAqLworI2RlZmluZQlMT0NPTU9fQUNDX0NMS1NFTDEwMQkweDA1CS8qIG1jbGsgMTIgKi8KKy8qIFBDTSBhdWRpbyBpbnRlcmZhY2UgKi8KKyNkZWZpbmUJTE9DT01PX1BBSUZfU0NJTlYJMHgyMAorI2RlZmluZQlMT0NPTU9fUEFJRl9TQ0VOCTB4MTAKKyNkZWZpbmUJTE9DT01PX1BBSUZfTFJDUlNUCTB4MDgKKyNkZWZpbmUJTE9DT01PX1BBSUZfTFJDRVZFCTB4MDQKKyNkZWZpbmUJTE9DT01PX1BBSUZfTFJDSU5WCTB4MDIKKyNkZWZpbmUJTE9DT01PX1BBSUZfTFJDRU4JMHgwMQorCisvKiBMRUQgY29udHJvbGxlciAqLworI2RlZmluZSBMT0NPTU9fTEVECQkweGU4CisjZGVmaW5lIExPQ09NT19MUFQwCQkweDAwCisjZGVmaW5lIExPQ09NT19MUFQxCQkweDA0CisvKiBMRUQgY29udHJvbCAqLworI2RlZmluZSBMT0NPTU9fTFBUX1RPRkgJCTB4ODAKKyNkZWZpbmUgTE9DT01PX0xQVF9UT0ZMCQkweDA4CisjZGVmaW5lIExPQ09NT19MUFRfVE9IKFRPSCkJKChUT0ggJiAweDcpIDw8IDQpCisjZGVmaW5lIExPQ09NT19MUFRfVE9MKFRPTCkJKChUT0wgJiAweDcpKQorCitleHRlcm4gc3RydWN0IGJ1c190eXBlIGxvY29tb19idXNfdHlwZTsKKworI2RlZmluZSBMT0NPTU9fREVWSURfS0VZQk9BUkQJMAorI2RlZmluZSBMT0NPTU9fREVWSURfRlJPTlRMSUdIVAkxCisjZGVmaW5lIExPQ09NT19ERVZJRF9CQUNLTElHSFQJMgorI2RlZmluZSBMT0NPTU9fREVWSURfQVVESU8JMworI2RlZmluZSBMT0NPTU9fREVWSURfTEVECTQKKyNkZWZpbmUgTE9DT01PX0RFVklEX1VBUlQJNQorCitzdHJ1Y3QgbG9jb21vX2RldiB7CisJc3RydWN0IGRldmljZQlkZXY7CisJdW5zaWduZWQgaW50CWRldmlkOworCXVuc2lnbmVkIGludAlpcnFbMV07CisKKwl2b2lkCQkqbWFwYmFzZTsKKwl1bnNpZ25lZCBsb25nCWxlbmd0aDsKKworCXU2NAkJZG1hX21hc2s7Cit9OworCisjZGVmaW5lIExPQ09NT19ERVYoX2QpCWNvbnRhaW5lcl9vZigoX2QpLCBzdHJ1Y3QgbG9jb21vX2RldiwgZGV2KQorCisjZGVmaW5lIGxvY29tb19nZXRfZHJ2ZGF0YShkKQlkZXZfZ2V0X2RydmRhdGEoJihkKS0+ZGV2KQorI2RlZmluZSBsb2NvbW9fc2V0X2RydmRhdGEoZCxwKQlkZXZfc2V0X2RydmRhdGEoJihkKS0+ZGV2LCBwKQorCitzdHJ1Y3QgbG9jb21vX2RyaXZlciB7CisJc3RydWN0IGRldmljZV9kcml2ZXIJZHJ2OworCXVuc2lnbmVkIGludAkJZGV2aWQ7CisJaW50ICgqcHJvYmUpKHN0cnVjdCBsb2NvbW9fZGV2ICopOworCWludCAoKnJlbW92ZSkoc3RydWN0IGxvY29tb19kZXYgKik7CisJaW50ICgqc3VzcGVuZCkoc3RydWN0IGxvY29tb19kZXYgKiwgcG1fbWVzc2FnZV90KTsKKwlpbnQgKCpyZXN1bWUpKHN0cnVjdCBsb2NvbW9fZGV2ICopOworfTsKKworI2RlZmluZSBMT0NPTU9fRFJWKF9kKQljb250YWluZXJfb2YoKF9kKSwgc3RydWN0IGxvY29tb19kcml2ZXIsIGRydikKKworI2RlZmluZSBMT0NPTU9fRFJJVkVSX05BTUUoX2xkZXYpICgoX2xkZXYpLT5kZXYuZHJpdmVyLT5uYW1lKQorCit2b2lkIGxvY29tb19sY2RfcG93ZXIoc3RydWN0IGxvY29tb19kZXYgKiwgaW50LCB1bnNpZ25lZCBpbnQpOworCitpbnQgbG9jb21vX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbG9jb21vX2RyaXZlciAqKTsKK3ZvaWQgbG9jb21vX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBsb2NvbW9fZHJpdmVyICopOworCisvKiBHUElPIGNvbnRyb2wgZnVuY3Rpb25zICovCit2b2lkIGxvY29tb19ncGlvX3NldF9kaXIoc3RydWN0IGxvY29tb19kZXYgKmxkZXYsIHVuc2lnbmVkIGludCBiaXRzLCB1bnNpZ25lZCBpbnQgZGlyKTsKK3Vuc2lnbmVkIGludCBsb2NvbW9fZ3Bpb19yZWFkX2xldmVsKHN0cnVjdCBsb2NvbW9fZGV2ICpsZGV2LCB1bnNpZ25lZCBpbnQgYml0cyk7Cit1bnNpZ25lZCBpbnQgbG9jb21vX2dwaW9fcmVhZF9vdXRwdXQoc3RydWN0IGxvY29tb19kZXYgKmxkZXYsIHVuc2lnbmVkIGludCBiaXRzKTsKK3ZvaWQgbG9jb21vX2dwaW9fd3JpdGUoc3RydWN0IGxvY29tb19kZXYgKmxkZXYsIHVuc2lnbmVkIGludCBiaXRzLCB1bnNpZ25lZCBpbnQgc2V0KTsKKworLyogTTYyMzMyIGNvbnRyb2wgZnVuY3Rpb24gKi8KK3ZvaWQgbG9jb21vX202MjMzMl9zZW5kZGF0YShzdHJ1Y3QgbG9jb21vX2RldiAqbGRldiwgdW5zaWduZWQgaW50IGRhY19kYXRhLCBpbnQgY2hhbm5lbCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL21lbWMuaCBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9tZW1jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlZjVhYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9tZW1jLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvbWVtYy5oCisgKgorICogIENvcHlyaWdodCAoQykgUnVzc2VsbCBLaW5nLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNkZWZpbmUgVkRNQV9BTElHTk1FTlQJUEFHRV9TSVpFCisjZGVmaW5lIFZETUFfWEZFUlNJWkUJMTYKKyNkZWZpbmUgVkRNQV9JTklUCTAKKyNkZWZpbmUgVkRNQV9TVEFSVAkxCisjZGVmaW5lIFZETUFfRU5ECTIKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK2V4dGVybiB2b2lkIG1lbWNfd3JpdGUodW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgbG9uZyB2YWwpOworCisjZGVmaW5lIHZpZGVvX3NldF9kbWEoc3RhcnQsZW5kLG9mZnNldCkJCQkJXAorZG8gewkJCQkJCQkJXAorCW1lbWNfd3JpdGUgKFZETUFfU1RBUlQsIChzdGFydCA+PiAyKSk7CQkJXAorCW1lbWNfd3JpdGUgKFZETUFfRU5ELCAoZW5kIC0gVkRNQV9YRkVSU0laRSkgPj4gMik7CVwKKwltZW1jX3dyaXRlIChWRE1BX0lOSVQsIChvZmZzZXQgPj4gMikpOwkJCVwKK30gd2hpbGUgKDApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL3BjaV92My5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL3BjaV92My5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDk3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvcGNpX3YzLmgKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL3BjaV92My5oCisgKgorICogIEludGVybmFsIGhlYWRlciBmaWxlIFBDSSBWMyBjaGlwCisgKgorICogIENvcHlyaWdodCAoQykgQVJNIExpbWl0ZWQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKyNpZm5kZWYgQVNNX0FSTV9IQVJEV0FSRV9QQ0lfVjNfSAorI2RlZmluZSBBU01fQVJNX0hBUkRXQVJFX1BDSV9WM19ICisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBWMyBMb2NhbCBCdXMgdG8gUENJIEJyaWRnZSBkZWZpbml0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFJlZ2lzdGVycyAodGhlc2UgYXJlIHRha2VuIGZyb20gcGFnZSAxMjkgb2YgdGhlIEVQQyBVc2VyJ3MgTWFudWFsIFJldiAxLjA0CisgKiAgQWxsIFYzIHJlZ2lzdGVyIG5hbWVzIGFyZSBwcmVmYWNlZCBieSBWM18gdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBhbnkgb3RoZXIKKyAqICBQQ0kgZGVmaW5pdGlvbnMuICBUaGVpciBuYW1lcyBtYXRjaCB0aGUgdXNlcidzIG1hbnVhbC4KKyAqIAorICogIEknbSBhc3N1bWluZyB0aGF0IEkyMCBpcyBkaXNhYmxlZC4KKyAqIAorICovCisjZGVmaW5lIFYzX1BDSV9WRU5ET1IgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBWM19QQ0lfREVWSUNFICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgVjNfUENJX0NNRCAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFYzX1BDSV9TVEFUICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNgorI2RlZmluZSBWM19QQ0lfQ0NfUkVWICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgVjNfUENJX0hEUl9DRkcgICAgICAgICAgICAgICAgICAweDAwMDAwMDBDCisjZGVmaW5lIFYzX1BDSV9JT19CQVNFICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBWM19QQ0lfQkFTRTAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQKKyNkZWZpbmUgVjNfUENJX0JBU0UxICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4CisjZGVmaW5lIFYzX1BDSV9TVUJfVkVORE9SICAgICAgICAgICAgICAgMHgwMDAwMDAyQworI2RlZmluZSBWM19QQ0lfU1VCX0lEICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMkUKKyNkZWZpbmUgVjNfUENJX1JPTSAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDMwCisjZGVmaW5lIFYzX1BDSV9CUEFSQU0gICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzQworI2RlZmluZSBWM19QQ0lfTUFQMCAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgVjNfUENJX01BUDEgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ0CisjZGVmaW5lIFYzX1BDSV9JTlRfU1RBVCAgICAgICAgICAgICAgICAgMHgwMDAwMDA0OAorI2RlZmluZSBWM19QQ0lfSU5UX0NGRyAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNEMgCisjZGVmaW5lIFYzX0xCX0JBU0UwICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1NAorI2RlZmluZSBWM19MQl9CQVNFMSAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTgKKyNkZWZpbmUgVjNfTEJfTUFQMCAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDVFCisjZGVmaW5lIFYzX0xCX01BUDEgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2MgorI2RlZmluZSBWM19MQl9CQVNFMiAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNjQKKyNkZWZpbmUgVjNfTEJfTUFQMiAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY2CisjZGVmaW5lIFYzX0xCX1NJWkUgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA2OAorI2RlZmluZSBWM19MQl9JT19CQVNFICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNkUKKyNkZWZpbmUgVjNfRklGT19DRkcgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDcwCisjZGVmaW5lIFYzX0ZJRk9fUFJJT1JJVFkgICAgICAgICAgICAgICAgMHgwMDAwMDA3MgorI2RlZmluZSBWM19GSUZPX1NUQVQgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzQKKyNkZWZpbmUgVjNfTEJfSVNUQVQgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc2CisjZGVmaW5lIFYzX0xCX0lNQVNLICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3NworI2RlZmluZSBWM19TWVNURU0gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNzgKKyNkZWZpbmUgVjNfTEJfQ0ZHICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDdBCisjZGVmaW5lIFYzX1BDSV9DRkcgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3QworI2RlZmluZSBWM19ETUFfUENJX0FEUjAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgVjNfRE1BX1BDSV9BRFIxICAgICAgICAgICAgICAgICAweDAwMDAwMDkwCisjZGVmaW5lIFYzX0RNQV9MT0NBTF9BRFIwICAgICAgICAgICAgICAgMHgwMDAwMDA4NAorI2RlZmluZSBWM19ETUFfTE9DQUxfQURSMSAgICAgICAgICAgICAgIDB4MDAwMDAwOTQKKyNkZWZpbmUgVjNfRE1BX0xFTkdUSDAgICAgICAgICAgICAgICAgICAweDAwMDAwMDg4CisjZGVmaW5lIFYzX0RNQV9MRU5HVEgxICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OAorI2RlZmluZSBWM19ETUFfQ1NSMCAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOEIKKyNkZWZpbmUgVjNfRE1BX0NTUjEgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDlCCisjZGVmaW5lIFYzX0RNQV9DVExCX0FEUjAgICAgICAgICAgICAgICAgMHgwMDAwMDA4QworI2RlZmluZSBWM19ETUFfQ1RMQl9BRFIxICAgICAgICAgICAgICAgIDB4MDAwMDAwOUMKKyNkZWZpbmUgVjNfRE1BX0RFTEFZICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEUwCisjZGVmaW5lIFYzX01BSUxfREFUQSAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMAorI2RlZmluZSBWM19QQ0lfTUFJTF9JRVdSICAgICAgICAgICAgICAgIDB4MDAwMDAwRDAKKyNkZWZpbmUgVjNfUENJX01BSUxfSUVSRCAgICAgICAgICAgICAgICAweDAwMDAwMEQyCisjZGVmaW5lIFYzX0xCX01BSUxfSUVXUiAgICAgICAgICAgICAgICAgMHgwMDAwMDBENAorI2RlZmluZSBWM19MQl9NQUlMX0lFUkQgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDYKKyNkZWZpbmUgVjNfTUFJTF9XUl9TVEFUICAgICAgICAgICAgICAgICAweDAwMDAwMEQ4CisjZGVmaW5lIFYzX01BSUxfUkRfU1RBVCAgICAgICAgICAgICAgICAgMHgwMDAwMDBEQQorI2RlZmluZSBWM19RQkFfTUFQICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwREMKKworLyogIFBDSSBDT01NQU5EIFJFR0lTVEVSIGJpdHMKKyAqLworI2RlZmluZSBWM19DT01NQU5EX01fRkJCX0VOICAgICAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIFYzX0NPTU1BTkRfTV9TRVJSX0VOICAgICAgICAgICAgKDEgPDwgOCkKKyNkZWZpbmUgVjNfQ09NTUFORF9NX1BBUl9FTiAgICAgICAgICAgICAoMSA8PCA2KQorI2RlZmluZSBWM19DT01NQU5EX01fTUFTVEVSX0VOICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5lIFYzX0NPTU1BTkRfTV9NRU1fRU4gICAgICAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgVjNfQ09NTUFORF9NX0lPX0VOICAgICAgICAgICAgICAoMSA8PCAwKQorCisvKiAgU1lTVEVNIFJFR0lTVEVSIGJpdHMKKyAqLworI2RlZmluZSBWM19TWVNURU1fTV9SU1RfT1VUICAgICAgICAgICAgICgxIDw8IDE1KQorI2RlZmluZSBWM19TWVNURU1fTV9MT0NLICAgICAgICAgICAgICAgICgxIDw8IDE0KQorCisvKiAgUENJX0NGRyBiaXRzCisgKi8KKyNkZWZpbmUgVjNfUENJX0NGR19NX0kyT19FTgkJKDEgPDwgMTUpCisjZGVmaW5lIFYzX1BDSV9DRkdfTV9JT19SRUdfRElTCQkoMSA8PCAxNCkKKyNkZWZpbmUgVjNfUENJX0NGR19NX0lPX0RJUwkJKDEgPDwgMTMpCisjZGVmaW5lIFYzX1BDSV9DRkdfTV9FTjNWCQkoMSA8PCAxMikKKyNkZWZpbmUgVjNfUENJX0NGR19NX1JFVFJZX0VOICAgICAgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgVjNfUENJX0NGR19NX0FEX0xPVzEgICAgICAgICAgICAoMSA8PCA5KQorI2RlZmluZSBWM19QQ0lfQ0ZHX01fQURfTE9XMCAgICAgICAgICAgICgxIDw8IDgpCisKKy8qICBQQ0lfQkFTRSByZWdpc3RlciBiaXRzIChQQ0kgLT4gTG9jYWwgQnVzKQorICovCisjZGVmaW5lIFYzX1BDSV9CQVNFX01fQURSX0JBU0UgICAgICAgICAgMHhGRkYwMDAwMAorI2RlZmluZSBWM19QQ0lfQkFTRV9NX0FEUl9CQVNFTCAgICAgICAgIDB4MDAwRkZGMDAKKyNkZWZpbmUgVjNfUENJX0JBU0VfTV9QUkVGRVRDSCAgICAgICAgICAoMSA8PCAzKQorI2RlZmluZSBWM19QQ0lfQkFTRV9NX1RZUEUgICAgICAgICAgICAgICgzIDw8IDEpCisjZGVmaW5lIFYzX1BDSV9CQVNFX01fSU8gICAgICAgICAgICAgICAgKDEgPDwgMCkKKworLyogIFBDSSBNQVAgcmVnaXN0ZXIgYml0cyAoUENJIC0+IExvY2FsIGJ1cykKKyAqLworI2RlZmluZSBWM19QQ0lfTUFQX01fTUFQX0FEUiAgICAgICAgICAgIDB4RkZGMDAwMDAKKyNkZWZpbmUgVjNfUENJX01BUF9NX1JEX1BPU1RfSU5IICAgICAgICAoMSA8PCAxNSkKKyNkZWZpbmUgVjNfUENJX01BUF9NX1JPTV9TSVpFICAgICAgICAgICAoMyA8PCAxMCkKKyNkZWZpbmUgVjNfUENJX01BUF9NX1NXQVAgICAgICAgICAgICAgICAoMyA8PCA4KQorI2RlZmluZSBWM19QQ0lfTUFQX01fQURSX1NJWkUgICAgICAgICAgIDB4MDAwMDAwRjAKKyNkZWZpbmUgVjNfUENJX01BUF9NX1JFR19FTiAgICAgICAgICAgICAoMSA8PCAxKQorI2RlZmluZSBWM19QQ0lfTUFQX01fRU5BQkxFICAgICAgICAgICAgICgxIDw8IDApCisKKy8qCisgKiAgTEJfQkFTRTAsMSByZWdpc3RlciBiaXRzIChMb2NhbCBidXMgLT4gUENJKQorICovCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX0JBU0UJCTB4ZmZmMDAwMDAKKyNkZWZpbmUgVjNfTEJfQkFTRV9TV0FQCQkJKDMgPDwgOCkKKyNkZWZpbmUgVjNfTEJfQkFTRV9BRFJfU0laRQkJKDE1IDw8IDQpCisjZGVmaW5lIFYzX0xCX0JBU0VfUFJFRkVUQ0gJCSgxIDw8IDMpCisjZGVmaW5lIFYzX0xCX0JBU0VfRU5BQkxFCQkoMSA8PCAwKQorCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX1NJWkVfMU1CCQkoMCA8PCA0KQorI2RlZmluZSBWM19MQl9CQVNFX0FEUl9TSVpFXzJNQgkJKDEgPDwgNCkKKyNkZWZpbmUgVjNfTEJfQkFTRV9BRFJfU0laRV80TUIJCSgyIDw8IDQpCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX1NJWkVfOE1CCQkoMyA8PCA0KQorI2RlZmluZSBWM19MQl9CQVNFX0FEUl9TSVpFXzE2TUIJKDQgPDwgNCkKKyNkZWZpbmUgVjNfTEJfQkFTRV9BRFJfU0laRV8zMk1CCSg1IDw8IDQpCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX1NJWkVfNjRNQgkoNiA8PCA0KQorI2RlZmluZSBWM19MQl9CQVNFX0FEUl9TSVpFXzEyOE1CCSg3IDw8IDQpCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX1NJWkVfMjU2TUIJKDggPDwgNCkKKyNkZWZpbmUgVjNfTEJfQkFTRV9BRFJfU0laRV81MTJNQgkoOSA8PCA0KQorI2RlZmluZSBWM19MQl9CQVNFX0FEUl9TSVpFXzFHQgkJKDEwIDw8IDQpCisjZGVmaW5lIFYzX0xCX0JBU0VfQURSX1NJWkVfMkdCCQkoMTEgPDwgNCkKKworI2RlZmluZSB2M19hZGRyX3RvX2xiX2Jhc2UoYSkJKChhKSAmIFYzX0xCX0JBU0VfQURSX0JBU0UpCisKKy8qCisgKiAgTEJfTUFQMCwxIHJlZ2lzdGVyIGJpdHMgKExvY2FsIGJ1cyAtPiBQQ0kpCisgKi8KKyNkZWZpbmUgVjNfTEJfTUFQX01BUF9BRFIJCTB4ZmZmMAorI2RlZmluZSBWM19MQl9NQVBfVFlQRQkJCSg3IDw8IDEpCisjZGVmaW5lIFYzX0xCX01BUF9BRF9MT1dfRU4JCSgxIDw8IDApCisKKyNkZWZpbmUgVjNfTEJfTUFQX1RZUEVfSUFDSwkJKDAgPDwgMSkKKyNkZWZpbmUgVjNfTEJfTUFQX1RZUEVfSU8JCSgxIDw8IDEpCisjZGVmaW5lIFYzX0xCX01BUF9UWVBFX01FTQkJKDMgPDwgMSkKKyNkZWZpbmUgVjNfTEJfTUFQX1RZUEVfQ09ORklHCQkoNSA8PCAxKQorI2RlZmluZSBWM19MQl9NQVBfVFlQRV9NRU1fTVVMVElQTEUJKDYgPDwgMSkKKworI2RlZmluZSB2M19hZGRyX3RvX2xiX21hcChhKQkoKChhKSA+PiAxNikgJiBWM19MQl9NQVBfTUFQX0FEUikKKworLyoKKyAqICBMQl9CQVNFMiByZWdpc3RlciBiaXRzIChMb2NhbCBidXMgLT4gUENJIElPKQorICovCisjZGVmaW5lIFYzX0xCX0JBU0UyX0FEUl9CQVNFCQkweGZmMDAKKyNkZWZpbmUgVjNfTEJfQkFTRTJfU1dBUAkJKDMgPDwgNikKKyNkZWZpbmUgVjNfTEJfQkFTRTJfRU5BQkxFCQkoMSA8PCAwKQorCisjZGVmaW5lIHYzX2FkZHJfdG9fbGJfYmFzZTIoYSkJKCgoYSkgPj4gMTYpICYgVjNfTEJfQkFTRTJfQURSX0JBU0UpCisKKy8qCisgKiAgTEJfTUFQMiByZWdpc3RlciBiaXRzIChMb2NhbCBidXMgLT4gUENJIElPKQorICovCisjZGVmaW5lIFYzX0xCX01BUDJfTUFQX0FEUgkJMHhmZjAwCisKKyNkZWZpbmUgdjNfYWRkcl90b19sYl9tYXAyKGEpCSgoKGEpID4+IDE2KSAmIFYzX0xCX01BUDJfTUFQX0FEUikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2ExMTExLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2ExMTExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5YWVhMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9zYTExMTEuaApAQCAtMCwwICsxLDYwMiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9TQS0xMTExLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgSm9obiBHIERvcnNleSA8am9obitAY3MuY211LmVkdT4KKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgZGVmaW5pdGlvbnMgZm9yIHRoZSBTQS0xMTExIENvbXBhbmlvbiBDaGlwLgorICogKFN0cnVjdHVyZSBhbmQgbmFtaW5nIGJvcnJvd2VkIGZyb20gU0EtMTEwMS5oLCBieSBQZXRlciBEYW5pZWxzc29uLikKKyAqCisgKiBNYWNybyB0aGF0IGNhbGN1bGF0ZXMgcmVhbCBhZGRyZXNzIGZvciByZWdpc3RlcnMgaW4gdGhlIFNBLTExMTEKKyAqLworCisjaWZuZGVmIF9BU01fQVJDSF9TQTExMTEKKyNkZWZpbmUgX0FTTV9BUkNIX1NBMTExMQorCisjaW5jbHVkZSA8YXNtL2FyY2gvYml0ZmllbGQuaD4KKworLyoKKyAqIFRoZSBTQTExMTEgaXMgYWx3YXlzIGxvY2F0ZWQgYXQgdmlydHVhbCAweGY0MDAwMDAwLCBhbmQgaXMgYWx3YXlzCisgKiAibmF0aXZlIiBlbmRpYW4uCisgKi8KKworI2RlZmluZSBTQTExMTFfVkJBU0UJCTB4ZjQwMDAwMDAKKworLyogRG9uJ3QgdXNlIHRoZXNlISAqLworI2RlZmluZSBTQTExMTFfcDJ2KCB4ICkgICAgICAgICAoKHgpIC0gU0ExMTExX0JBU0UgKyBTQTExMTFfVkJBU0UpCisjZGVmaW5lIFNBMTExMV92MnAoIHggKSAgICAgICAgICgoeCkgLSBTQTExMTFfVkJBU0UgKyBTQTExMTFfQkFTRSkKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNkZWZpbmUgX1NBMTExMSh4KQkoKHgpICsgc2ExMTExLT5yZXNvdXJjZS5zdGFydCkKKyNlbmRpZgorCisvKgorICogMjYgYml0cyBvZiB0aGUgU0EtMTExMCBhZGRyZXNzIGJ1cyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBTQS0xMTExLgorICogVXNlIHRoZXNlIHdoZW4gZmVlZGluZyB0YXJnZXQgYWRkcmVzc2VzIHRvIHRoZSBETUEgZW5naW5lcy4KKyAqLworCisjZGVmaW5lIFNBMTExMV9BRERSX1dJRFRICSgyNikKKyNkZWZpbmUgU0ExMTExX0FERFJfTUFTSwkoKDE8PFNBMTExMV9BRERSX1dJRFRIKS0xKQorI2RlZmluZSBTQTExMTFfRE1BX0FERFIoeCkJKCh4KSZTQTExMTFfQUREUl9NQVNLKQorCisvKgorICogRG9uJ3QgYXNrIHRoZSAoU0FDKSBETUEgZW5naW5lcyB0byBtb3ZlIGxlc3MgdGhhbiB0aGlzIGFtb3VudC4KKyAqLworCisjZGVmaW5lIFNBMTExMV9TQUNfRE1BX01JTl9YRkVSCSgweDgwMCkKKworLyoKKyAqIFNBMTExMSByZWdpc3RlciBkZWZpbml0aW9ucy4KKyAqLworI2RlZmluZSBfX0NDUkVHKHgpCV9fUkVHUChTQTExMTFfVkJBU0UgKyAoeCkpCisKKyNkZWZpbmUgc2ExMTExX3dyaXRlbCh2YWwsYWRkcikJX19yYXdfd3JpdGVsKHZhbCwgYWRkcikKKyNkZWZpbmUgc2ExMTExX3JlYWRsKGFkZHIpCV9fcmF3X3JlYWRsKGFkZHIpCisKKy8qCisgKiBTeXN0ZW0gQnVzIEludGVyZmFjZSAoU0JJKQorICoKKyAqIFJlZ2lzdGVycworICogICAgU0tDUglDb250cm9sIFJlZ2lzdGVyCisgKiAgICBTTUNSCVNoYXJlZCBNZW1vcnkgQ29udHJvbGxlciBSZWdpc3RlcgorICogICAgU0tJRAlJRCBSZWdpc3RlcgorICovCisjZGVmaW5lIFNBMTExMV9TS0NSCTB4MDAwMAorI2RlZmluZSBTQTExMTFfU01DUgkweDAwMDQKKyNkZWZpbmUgU0ExMTExX1NLSUQJMHgwMDA4CisKKyNkZWZpbmUgU0tDUl9QTExfQllQQVNTCSgxPDwwKQorI2RlZmluZSBTS0NSX1JDTEtFTgkoMTw8MSkKKyNkZWZpbmUgU0tDUl9TTEVFUAkoMTw8MikKKyNkZWZpbmUgU0tDUl9ET1pFCSgxPDwzKQorI2RlZmluZSBTS0NSX1ZDT19PRkYJKDE8PDQpCisjZGVmaW5lIFNLQ1JfU0NBTlRTVEVOCSgxPDw1KQorI2RlZmluZSBTS0NSX0NMS1RTVEVOCSgxPDw2KQorI2RlZmluZSBTS0NSX1JEWUVOCSgxPDw3KQorI2RlZmluZSBTS0NSX1NFTEFDCSgxPDw4KQorI2RlZmluZSBTS0NSX09QUEMJKDE8PDkpCisjZGVmaW5lIFNLQ1JfUExMVFNURU4JKDE8PDEwKQorI2RlZmluZSBTS0NSX1VTQklPVFNURU4JKDE8PDExKQorLyoKKyAqIERvbid0IGJlbGlldmUgdGhlIHNwZWNzISAgVGFrZSB0aGVtLCB0aHJvdyB0aGVtIG91dHNpZGUuICBMZWF2ZSB0aGVtCisgKiB0aGVyZSBmb3IgYSB3ZWVrLiAgU3BpdCBvbiB0aGVtLiAgV2FsayBvbiB0aGVtLiAgU3RhbXAgb24gdGhlbS4KKyAqIFBvdXIgZ2Fzb2xpbmUgb3ZlciB0aGVtIGFuZCBmaW5hbGx5IGJ1cm4gdGhlbS4gIE5vdyB0aGluayBhYm91dCBjb2RpbmcuCisgKiAgLSBUaGUgT2N0b2JlciAxOTk5IGVycmF0YSAoMjc4MjYwLTAwNykgc2F5cyBpdHMgYml0IDEzLCAxIHRvIGVuYWJsZS4KKyAqICAtIFRoZSBGZWIgMjAwMSBlcnJhdGEgKDI3ODI2MC0wMTApIHNheXMgdGhhdCB0aGUgcHJldmlvdXMgZXJyYXRhCisgKiAgICAoMjc4MjYwLTAwOSkgaXMgd3JvbmcsIGFuZCBpdHMgYml0IGFjdHVhbGx5IDEyLCBmaXhlZCBpbiBzcGVjCisgKiAgICAyNzgyNDItMDAzLgorICogIC0gVGhlIFNBMTExMSBtYW51YWwgKDI3ODI0Mikgc2F5cyBiaXQgMTIsIGJ1dCAwIHRvIGVuYWJsZS4KKyAqICAtIFJlYWxpdHkgaXMgYml0IDEzLCAxIHRvIGVuYWJsZS4KKyAqICAgICAgLS0gcm1rCisgKi8KKyNkZWZpbmUgU0tDUl9PRV9FTgkoMTw8MTMpCisKKyNkZWZpbmUgU01DUl9EVElNCSgxPDwwKQorI2RlZmluZSBTTUNSX01CR0UJKDE8PDEpCisjZGVmaW5lIFNNQ1JfRFJBQ18wCSgxPDwyKQorI2RlZmluZSBTTUNSX0RSQUNfMQkoMTw8MykKKyNkZWZpbmUgU01DUl9EUkFDXzIJKDE8PDQpCisjZGVmaW5lIFNNQ1JfRFJBQwlGbGQoMywgMikKKyNkZWZpbmUgU01DUl9DTEFUCSgxPDw1KQorCisjZGVmaW5lIFNLSURfU0lSRVZfTUFTSwkoMHgwMDAwMDBmMCkKKyNkZWZpbmUgU0tJRF9NVFJFVl9NQVNLICgweDAwMDAwMDBmKQorI2RlZmluZSBTS0lEX0lEX01BU0sJKDB4ZmZmZmZmMDApCisjZGVmaW5lIFNLSURfU0ExMTExX0lECSgweDY5MGNjMjAwKQorCisvKgorICogU3lzdGVtIENvbnRyb2xsZXIKKyAqCisgKiBSZWdpc3RlcnMKKyAqICAgIFNLUENSCVBvd2VyIENvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIFNLQ0RSCUNsb2NrIERpdmlkZXIgUmVnaXN0ZXIKKyAqICAgIFNLQVVECUF1ZGlvIENsb2NrIERpdmlkZXIgUmVnaXN0ZXIKKyAqICAgIFNLUE1DCVBTLzIgTW91c2UgQ2xvY2sgRGl2aWRlciBSZWdpc3RlcgorICogICAgU0tQVEMJUFMvMiBUcmFjayBQYWQgQ2xvY2sgRGl2aWRlciBSZWdpc3RlcgorICogICAgU0tQRU4wCVBXTTAgRW5hYmxlIFJlZ2lzdGVyCisgKiAgICBTS1BXTTAJUFdNMCBDbG9jayBSZWdpc3RlcgorICogICAgU0tQRU4xCVBXTTEgRW5hYmxlIFJlZ2lzdGVyCisgKiAgICBTS1BXTTEJUFdNMSBDbG9jayBSZWdpc3RlcgorICovCisjZGVmaW5lIFNBMTExMV9TS1BDUgkweDAyMDAKKyNkZWZpbmUgU0ExMTExX1NLQ0RSCTB4MDIwNAorI2RlZmluZSBTQTExMTFfU0tBVUQJMHgwMjA4CisjZGVmaW5lIFNBMTExMV9TS1BNQwkweDAyMGMKKyNkZWZpbmUgU0ExMTExX1NLUFRDCTB4MDIxMAorI2RlZmluZSBTQTExMTFfU0tQRU4wCTB4MDIxNAorI2RlZmluZSBTQTExMTFfU0tQV00wCTB4MDIxOAorI2RlZmluZSBTQTExMTFfU0tQRU4xCTB4MDIxYworI2RlZmluZSBTQTExMTFfU0tQV00xCTB4MDIyMAorCisjZGVmaW5lIFNLUENSX1VDTEtFTgkoMTw8MCkKKyNkZWZpbmUgU0tQQ1JfQUNDTEtFTgkoMTw8MSkKKyNkZWZpbmUgU0tQQ1JfSTJTQ0xLRU4JKDE8PDIpCisjZGVmaW5lIFNLUENSX0wzQ0xLRU4JKDE8PDMpCisjZGVmaW5lIFNLUENSX1NDTEtFTgkoMTw8NCkKKyNkZWZpbmUgU0tQQ1JfUE1DTEtFTgkoMTw8NSkKKyNkZWZpbmUgU0tQQ1JfUFRDTEtFTgkoMTw8NikKKyNkZWZpbmUgU0tQQ1JfRENMS0VOCSgxPDw3KQorI2RlZmluZSBTS1BDUl9QV01DTEtFTgkoMTw8OCkKKworLyoKKyAqIFVTQiBIb3N0IGNvbnRyb2xsZXIKKyAqLworI2RlZmluZSBTQTExMTFfVVNCCQkweDA0MDAKKworLyoKKyAqIE9mZnNldHMgZnJvbSBTQTExMTFfVVNCX0JBU0UKKyAqLworI2RlZmluZSBTQTExMTFfVVNCX1NUQVRVUwkweDAxMTgKKyNkZWZpbmUgU0ExMTExX1VTQl9SRVNFVAkweDAxMWMKKyNkZWZpbmUgU0ExMTExX1VTQl9JUlFURVNUCTB4MDEyMAorCisjZGVmaW5lIFVTQl9SRVNFVF9GT1JDRUlGUkVTRVQJKDEgPDwgMCkKKyNkZWZpbmUgVVNCX1JFU0VUX0ZPUkNFSENSRVNFVAkoMSA8PCAxKQorI2RlZmluZSBVU0JfUkVTRVRfQ0xLR0VOUkVTRVQJKDEgPDwgMikKKyNkZWZpbmUgVVNCX1JFU0VUX1NJTVNDQUxFRE9XTgkoMSA8PCAzKQorI2RlZmluZSBVU0JfUkVTRVRfVVNCSU5UVEVTVAkoMSA8PCA0KQorI2RlZmluZSBVU0JfUkVTRVRfU0xFRVBTVEJZRU4JKDEgPDwgNSkKKyNkZWZpbmUgVVNCX1JFU0VUX1BXUlNFTlNFTE9XCSgxIDw8IDYpCisjZGVmaW5lIFVTQl9SRVNFVF9QV1JDVFJMTE9XCSgxIDw8IDcpCisKKyNkZWZpbmUgVVNCX1NUQVRVU19JUlFIQ0lSTVRXS1VQICAoMSA8PCAgNykKKyNkZWZpbmUgVVNCX1NUQVRVU19JUlFIQ0lCVUZGQUNDICAoMSA8PCAgOCkKKyNkZWZpbmUgVVNCX1NUQVRVU19OSVJRSENJTSAgICAgICAoMSA8PCAgOSkKKyNkZWZpbmUgVVNCX1NUQVRVU19OSENJTUZDTFIgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgVVNCX1NUQVRVU19VU0JQV1JTRU5TRSAgICAoMSA8PCAxMSkKKworLyoKKyAqIFNlcmlhbCBBdWRpbyBDb250cm9sbGVyCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBTQUNSMCAgICAgICAgICAgICBTZXJpYWwgQXVkaW8gQ29tbW9uIENvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIFNBQ1IxICAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBBbHRlcm5hdGUgTW9kZSAoSTJDL01TQikgQ29udHJvbCBSZWdpc3RlcgorICogICAgU0FDUjIgICAgICAgICAgICAgU2VyaWFsIEF1ZGlvIEFDLWxpbmsgQ29udHJvbCBSZWdpc3RlcgorICogICAgU0FTUjAgICAgICAgICAgICAgU2VyaWFsIEF1ZGlvIEkyUy9NU0IgSW50ZXJmYWNlICYgRklGTyBTdGF0dXMgUmVnaXN0ZXIKKyAqICAgIFNBU1IxICAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBBQy1saW5rIEludGVyZmFjZSAmIEZJRk8gU3RhdHVzIFJlZ2lzdGVyCisgKiAgICBTQVNDUiAgICAgICAgICAgICBTZXJpYWwgQXVkaW8gU3RhdHVzIENsZWFyIFJlZ2lzdGVyCisgKiAgICBMM19DQVIgICAgICAgICAgICBMMyBDb250cm9sIEJ1cyBBZGRyZXNzIFJlZ2lzdGVyCisgKiAgICBMM19DRFIgICAgICAgICAgICBMMyBDb250cm9sIEJ1cyBEYXRhIFJlZ2lzdGVyCisgKiAgICBBQ0NBUiAgICAgICAgICAgICBBQy1saW5rIENvbW1hbmQgQWRkcmVzcyBSZWdpc3RlcgorICogICAgQUNDRFIgICAgICAgICAgICAgQUMtbGluayBDb21tYW5kIERhdGEgUmVnaXN0ZXIKKyAqICAgIEFDU0FSICAgICAgICAgICAgIEFDLWxpbmsgU3RhdHVzIEFkZHJlc3MgUmVnaXN0ZXIKKyAqICAgIEFDU0RSICAgICAgICAgICAgIEFDLWxpbmsgU3RhdHVzIERhdGEgUmVnaXN0ZXIKKyAqICAgIFNBRFRDUyAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBETUEgVHJhbnNtaXQgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIKKyAqICAgIFNBRFRTQSAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBETUEgVHJhbnNtaXQgQnVmZmVyIFN0YXJ0IEFkZHJlc3MgQQorICogICAgU0FEVENBICAgICAgICAgICAgU2VyaWFsIEF1ZGlvIERNQSBUcmFuc21pdCBCdWZmZXIgQ291bnQgUmVnaXN0ZXIgQQorICogICAgU0FEVFNCICAgICAgICAgICAgU2VyaWFsIEF1ZGlvIERNQSBUcmFuc21pdCBCdWZmZXIgU3RhcnQgQWRkcmVzcyBCCisgKiAgICBTQURUQ0IgICAgICAgICAgICBTZXJpYWwgQXVkaW8gRE1BIFRyYW5zbWl0IEJ1ZmZlciBDb3VudCBSZWdpc3RlciBCCisgKiAgICBTQURSQ1MgICAgICAgICAgICBTZXJpYWwgQXVkaW8gRE1BIFJlY2VpdmUgQ29udHJvbC9TdGF0dXMgUmVnaXN0ZXIKKyAqICAgIFNBRFJTQSAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBETUEgUmVjZWl2ZSBCdWZmZXIgU3RhcnQgQWRkcmVzcyBBCisgKiAgICBTQURSQ0EgICAgICAgICAgICBTZXJpYWwgQXVkaW8gRE1BIFJlY2VpdmUgQnVmZmVyIENvdW50IFJlZ2lzdGVyIEEKKyAqICAgIFNBRFJTQiAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBETUEgUmVjZWl2ZSBCdWZmZXIgU3RhcnQgQWRkcmVzcyBCCisgKiAgICBTQURSQ0IgICAgICAgICAgICBTZXJpYWwgQXVkaW8gRE1BIFJlY2VpdmUgQnVmZmVyIENvdW50IFJlZ2lzdGVyIEIKKyAqICAgIFNBSVRSICAgICAgICAgICAgIFNlcmlhbCBBdWRpbyBJbnRlcnJ1cHQgVGVzdCBSZWdpc3RlcgorICogICAgU0FEUiAgICAgICAgICAgICAgU2VyaWFsIEF1ZGlvIERhdGEgUmVnaXN0ZXIgKDE2IHggMzItYml0KQorICovCisKKyNkZWZpbmUgX1NBQ1IwICAgICAgICAgIF9TQTExMTEoIDB4MDYwMCApCisjZGVmaW5lIF9TQUNSMSAgICAgICAgICBfU0ExMTExKCAweDA2MDQgKQorI2RlZmluZSBfU0FDUjIgICAgICAgICAgX1NBMTExMSggMHgwNjA4ICkKKyNkZWZpbmUgX1NBU1IwICAgICAgICAgIF9TQTExMTEoIDB4MDYwYyApCisjZGVmaW5lIF9TQVNSMSAgICAgICAgICBfU0ExMTExKCAweDA2MTAgKQorI2RlZmluZSBfU0FTQ1IgICAgICAgICAgX1NBMTExMSggMHgwNjE4ICkKKyNkZWZpbmUgX0wzX0NBUiAgICAgICAgIF9TQTExMTEoIDB4MDYxYyApCisjZGVmaW5lIF9MM19DRFIgICAgICAgICBfU0ExMTExKCAweDA2MjAgKQorI2RlZmluZSBfQUNDQVIgICAgICAgICAgX1NBMTExMSggMHgwNjI0ICkKKyNkZWZpbmUgX0FDQ0RSICAgICAgICAgIF9TQTExMTEoIDB4MDYyOCApCisjZGVmaW5lIF9BQ1NBUiAgICAgICAgICBfU0ExMTExKCAweDA2MmMgKQorI2RlZmluZSBfQUNTRFIgICAgICAgICAgX1NBMTExMSggMHgwNjMwICkKKyNkZWZpbmUgX1NBRFRDUyAgICAgICAgIF9TQTExMTEoIDB4MDYzNCApCisjZGVmaW5lIF9TQURUU0EgICAgICAgICBfU0ExMTExKCAweDA2MzggKQorI2RlZmluZSBfU0FEVENBICAgICAgICAgX1NBMTExMSggMHgwNjNjICkKKyNkZWZpbmUgX1NBRFRTQiAgICAgICAgIF9TQTExMTEoIDB4MDY0MCApCisjZGVmaW5lIF9TQURUQ0IgICAgICAgICBfU0ExMTExKCAweDA2NDQgKQorI2RlZmluZSBfU0FEUkNTICAgICAgICAgX1NBMTExMSggMHgwNjQ4ICkKKyNkZWZpbmUgX1NBRFJTQSAgICAgICAgIF9TQTExMTEoIDB4MDY0YyApCisjZGVmaW5lIF9TQURSQ0EgICAgICAgICBfU0ExMTExKCAweDA2NTAgKQorI2RlZmluZSBfU0FEUlNCICAgICAgICAgX1NBMTExMSggMHgwNjU0ICkKKyNkZWZpbmUgX1NBRFJDQiAgICAgICAgIF9TQTExMTEoIDB4MDY1OCApCisjZGVmaW5lIF9TQUlUUiAgICAgICAgICBfU0ExMTExKCAweDA2NWMgKQorI2RlZmluZSBfU0FEUiAgICAgICAgICAgX1NBMTExMSggMHgwNjgwICkKKworI2RlZmluZSBTQUNSMAkJX19DQ1JFRygweDA2MDApCisjZGVmaW5lIFNBQ1IxCQlfX0NDUkVHKDB4MDYwNCkKKyNkZWZpbmUgU0FDUjIJCV9fQ0NSRUcoMHgwNjA4KQorI2RlZmluZSBTQVNSMAkJX19DQ1JFRygweDA2MGMpCisjZGVmaW5lIFNBU1IxCQlfX0NDUkVHKDB4MDYxMCkKKyNkZWZpbmUgU0FTQ1IJCV9fQ0NSRUcoMHgwNjE4KQorI2RlZmluZSBMM19DQVIJCV9fQ0NSRUcoMHgwNjFjKQorI2RlZmluZSBMM19DRFIJCV9fQ0NSRUcoMHgwNjIwKQorI2RlZmluZSBBQ0NBUgkJX19DQ1JFRygweDA2MjQpCisjZGVmaW5lIEFDQ0RSCQlfX0NDUkVHKDB4MDYyOCkKKyNkZWZpbmUgQUNTQVIJCV9fQ0NSRUcoMHgwNjJjKQorI2RlZmluZSBBQ1NEUgkJX19DQ1JFRygweDA2MzApCisjZGVmaW5lIFNBRFRDUwkJX19DQ1JFRygweDA2MzQpCisjZGVmaW5lIFNBRFRTQQkJX19DQ1JFRygweDA2MzgpCisjZGVmaW5lIFNBRFRDQQkJX19DQ1JFRygweDA2M2MpCisjZGVmaW5lIFNBRFRTQgkJX19DQ1JFRygweDA2NDApCisjZGVmaW5lIFNBRFRDQgkJX19DQ1JFRygweDA2NDQpCisjZGVmaW5lIFNBRFJDUwkJX19DQ1JFRygweDA2NDgpCisjZGVmaW5lIFNBRFJTQQkJX19DQ1JFRygweDA2NGMpCisjZGVmaW5lIFNBRFJDQQkJX19DQ1JFRygweDA2NTApCisjZGVmaW5lIFNBRFJTQgkJX19DQ1JFRygweDA2NTQpCisjZGVmaW5lIFNBRFJDQgkJX19DQ1JFRygweDA2NTgpCisjZGVmaW5lIFNBSVRSCQlfX0NDUkVHKDB4MDY1YykKKyNkZWZpbmUgU0FEUgkJX19DQ1JFRygweDA2ODApCisKKyNkZWZpbmUgU0FDUjBfRU5CCSgxPDwwKQorI2RlZmluZSBTQUNSMF9CQ0tECSgxPDwyKQorI2RlZmluZSBTQUNSMF9SU1QJKDE8PDMpCisKKyNkZWZpbmUgU0FDUjFfQU1TTAkoMTw8MCkKKyNkZWZpbmUgU0FDUjFfTDNFTgkoMTw8MSkKKyNkZWZpbmUgU0FDUjFfTDNNQgkoMTw8MikKKyNkZWZpbmUgU0FDUjFfRFJFQwkoMTw8MykKKyNkZWZpbmUgU0FDUjFfRFJQTAkoMTw8NCkKKyNkZWZpbmUgU0FDUjFfRU5MQkYJKDE8PDUpCisKKyNkZWZpbmUgU0FDUjJfVFMzVgkoMTw8MCkKKyNkZWZpbmUgU0FDUjJfVFM0VgkoMTw8MSkKKyNkZWZpbmUgU0FDUjJfV0tVUAkoMTw8MikKKyNkZWZpbmUgU0FDUjJfRFJFQwkoMTw8MykKKyNkZWZpbmUgU0FDUjJfRFJQTAkoMTw8NCkKKyNkZWZpbmUgU0FDUjJfRU5MQkYJKDE8PDUpCisjZGVmaW5lIFNBQ1IyX1JFU0VUCSgxPDw2KQorCisjZGVmaW5lIFNBU1IwX1RORgkoMTw8MCkKKyNkZWZpbmUgU0FTUjBfUk5FCSgxPDwxKQorI2RlZmluZSBTQVNSMF9CU1kJKDE8PDIpCisjZGVmaW5lIFNBU1IwX1RGUwkoMTw8MykKKyNkZWZpbmUgU0FTUjBfUkZTCSgxPDw0KQorI2RlZmluZSBTQVNSMF9UVVIJKDE8PDUpCisjZGVmaW5lIFNBU1IwX1JPUgkoMTw8NikKKyNkZWZpbmUgU0FTUjBfTDNXRAkoMTw8MTYpCisjZGVmaW5lIFNBU1IwX0wzUkQJKDE8PDE3KQorCisjZGVmaW5lIFNBU1IxX1RORgkoMTw8MCkKKyNkZWZpbmUgU0FTUjFfUk5FCSgxPDwxKQorI2RlZmluZSBTQVNSMV9CU1kJKDE8PDIpCisjZGVmaW5lIFNBU1IxX1RGUwkoMTw8MykKKyNkZWZpbmUgU0FTUjFfUkZTCSgxPDw0KQorI2RlZmluZSBTQVNSMV9UVVIJKDE8PDUpCisjZGVmaW5lIFNBU1IxX1JPUgkoMTw8NikKKyNkZWZpbmUgU0FTUjFfQ0FEVAkoMTw8MTYpCisjZGVmaW5lIFNBU1IxX1NBRFIJKDE8PDE3KQorI2RlZmluZSBTQVNSMV9SU1RPCSgxPDwxOCkKKyNkZWZpbmUgU0FTUjFfQ0xQTQkoMTw8MTkpCisjZGVmaW5lIFNBU1IxX0NSRFkJKDE8PDIwKQorI2RlZmluZSBTQVNSMV9SUzNWCSgxPDwyMSkKKyNkZWZpbmUgU0FTUjFfUlM0VgkoMTw8MjIpCisKKyNkZWZpbmUgU0FTQ1JfVFVSCSgxPDw1KQorI2RlZmluZSBTQVNDUl9ST1IJKDE8PDYpCisjZGVmaW5lIFNBU0NSX0RUUwkoMTw8MTYpCisjZGVmaW5lIFNBU0NSX1JERAkoMTw8MTcpCisjZGVmaW5lIFNBU0NSX1NUTwkoMTw8MTgpCisKKyNkZWZpbmUgU0FEVENTX1RERU4JKDE8PDApCisjZGVmaW5lIFNBRFRDU19URElFCSgxPDwxKQorI2RlZmluZSBTQURUQ1NfVERCREEJKDE8PDMpCisjZGVmaW5lIFNBRFRDU19URFNUQQkoMTw8NCkKKyNkZWZpbmUgU0FEVENTX1REQkRCCSgxPDw1KQorI2RlZmluZSBTQURUQ1NfVERTVEIJKDE8PDYpCisjZGVmaW5lIFNBRFRDU19UQklVCSgxPDw3KQorCisjZGVmaW5lIFNBRFJDU19SREVOCSgxPDwwKQorI2RlZmluZSBTQURSQ1NfUkRJRQkoMTw8MSkKKyNkZWZpbmUgU0FEUkNTX1JEQkRBCSgxPDwzKQorI2RlZmluZSBTQURSQ1NfUkRTVEEJKDE8PDQpCisjZGVmaW5lIFNBRFJDU19SREJEQgkoMTw8NSkKKyNkZWZpbmUgU0FEUkNTX1JEU1RCCSgxPDw2KQorI2RlZmluZSBTQURSQ1NfUkJJVQkoMTw8NykKKworI2RlZmluZSBTQURfQ1NfREVOCSgxPDwwKQorI2RlZmluZSBTQURfQ1NfRElFCSgxPDwxKQkvKiBOb3QgZnVuY3Rpb25hbCBvbiBtZXRhbCAxICovCisjZGVmaW5lIFNBRF9DU19EQkRBCSgxPDwzKQkvKiBOb3QgZnVuY3Rpb25hbCBvbiBtZXRhbCAxICovCisjZGVmaW5lIFNBRF9DU19EU1RBCSgxPDw0KQorI2RlZmluZSBTQURfQ1NfREJEQgkoMTw8NSkJLyogTm90IGZ1bmN0aW9uYWwgb24gbWV0YWwgMSAqLworI2RlZmluZSBTQURfQ1NfRFNUQgkoMTw8NikKKyNkZWZpbmUgU0FEX0NTX0JJVQkoMTw8NykJLyogTm90IGZ1bmN0aW9uYWwgb24gbWV0YWwgMSAqLworCisjZGVmaW5lIFNBSVRSX1RGUwkoMTw8MCkKKyNkZWZpbmUgU0FJVFJfUkZTCSgxPDwxKQorI2RlZmluZSBTQUlUUl9UVVIJKDE8PDIpCisjZGVmaW5lIFNBSVRSX1JPUgkoMTw8MykKKyNkZWZpbmUgU0FJVFJfQ0FEVAkoMTw8NCkKKyNkZWZpbmUgU0FJVFJfU0FEUgkoMTw8NSkKKyNkZWZpbmUgU0FJVFJfUlNUTwkoMTw8NikKKyNkZWZpbmUgU0FJVFJfVERCREEJKDE8PDgpCisjZGVmaW5lIFNBSVRSX1REQkRCCSgxPDw5KQorI2RlZmluZSBTQUlUUl9SREJEQQkoMTw8MTApCisjZGVmaW5lIFNBSVRSX1JEQkRCCSgxPDwxMSkKKworLyoKKyAqIEdlbmVyYWwtUHVycG9zZSBJL08gSW50ZXJmYWNlCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBQQV9ERFIJCUdQSU8gQmxvY2sgQSBEYXRhIERpcmVjdGlvbgorICogICAgUEFfRFJSL1BBX0RXUglHUElPIEJsb2NrIEEgRGF0YSBWYWx1ZSBSZWdpc3RlciAocmVhZC93cml0ZSkKKyAqICAgIFBBX1NEUgkJR1BJTyBCbG9jayBBIFNsZWVwIERpcmVjdGlvbgorICogICAgUEFfU1NSCQlHUElPIEJsb2NrIEEgU2xlZXAgU3RhdGUKKyAqICAgIFBCX0REUgkJR1BJTyBCbG9jayBCIERhdGEgRGlyZWN0aW9uCisgKiAgICBQQl9EUlIvUEJfRFdSCUdQSU8gQmxvY2sgQiBEYXRhIFZhbHVlIFJlZ2lzdGVyIChyZWFkL3dyaXRlKQorICogICAgUEJfU0RSCQlHUElPIEJsb2NrIEIgU2xlZXAgRGlyZWN0aW9uCisgKiAgICBQQl9TU1IJCUdQSU8gQmxvY2sgQiBTbGVlcCBTdGF0ZQorICogICAgUENfRERSCQlHUElPIEJsb2NrIEMgRGF0YSBEaXJlY3Rpb24KKyAqICAgIFBDX0RSUi9QQ19EV1IJR1BJTyBCbG9jayBDIERhdGEgVmFsdWUgUmVnaXN0ZXIgKHJlYWQvd3JpdGUpCisgKiAgICBQQ19TRFIJCUdQSU8gQmxvY2sgQyBTbGVlcCBEaXJlY3Rpb24KKyAqICAgIFBDX1NTUgkJR1BJTyBCbG9jayBDIFNsZWVwIFN0YXRlCisgKi8KKworI2RlZmluZSBfUEFfRERSCQlfU0ExMTExKCAweDEwMDAgKQorI2RlZmluZSBfUEFfRFJSCQlfU0ExMTExKCAweDEwMDQgKQorI2RlZmluZSBfUEFfRFdSCQlfU0ExMTExKCAweDEwMDQgKQorI2RlZmluZSBfUEFfU0RSCQlfU0ExMTExKCAweDEwMDggKQorI2RlZmluZSBfUEFfU1NSCQlfU0ExMTExKCAweDEwMGMgKQorI2RlZmluZSBfUEJfRERSCQlfU0ExMTExKCAweDEwMTAgKQorI2RlZmluZSBfUEJfRFJSCQlfU0ExMTExKCAweDEwMTQgKQorI2RlZmluZSBfUEJfRFdSCQlfU0ExMTExKCAweDEwMTQgKQorI2RlZmluZSBfUEJfU0RSCQlfU0ExMTExKCAweDEwMTggKQorI2RlZmluZSBfUEJfU1NSCQlfU0ExMTExKCAweDEwMWMgKQorI2RlZmluZSBfUENfRERSCQlfU0ExMTExKCAweDEwMjAgKQorI2RlZmluZSBfUENfRFJSCQlfU0ExMTExKCAweDEwMjQgKQorI2RlZmluZSBfUENfRFdSCQlfU0ExMTExKCAweDEwMjQgKQorI2RlZmluZSBfUENfU0RSCQlfU0ExMTExKCAweDEwMjggKQorI2RlZmluZSBfUENfU1NSCQlfU0ExMTExKCAweDEwMmMgKQorCisjZGVmaW5lIFNBMTExMV9HUElPCTB4MTAwMAorCisjZGVmaW5lIFNBMTExMV9HUElPX1BBRERSCSgweDAwMCkKKyNkZWZpbmUgU0ExMTExX0dQSU9fUEFEUlIJKDB4MDA0KQorI2RlZmluZSBTQTExMTFfR1BJT19QQURXUgkoMHgwMDQpCisjZGVmaW5lIFNBMTExMV9HUElPX1BBU0RSCSgweDAwOCkKKyNkZWZpbmUgU0ExMTExX0dQSU9fUEFTU1IJKDB4MDBjKQorI2RlZmluZSBTQTExMTFfR1BJT19QQkREUgkoMHgwMTApCisjZGVmaW5lIFNBMTExMV9HUElPX1BCRFJSCSgweDAxNCkKKyNkZWZpbmUgU0ExMTExX0dQSU9fUEJEV1IJKDB4MDE0KQorI2RlZmluZSBTQTExMTFfR1BJT19QQlNEUgkoMHgwMTgpCisjZGVmaW5lIFNBMTExMV9HUElPX1BCU1NSCSgweDAxYykKKyNkZWZpbmUgU0ExMTExX0dQSU9fUENERFIJKDB4MDIwKQorI2RlZmluZSBTQTExMTFfR1BJT19QQ0RSUgkoMHgwMjQpCisjZGVmaW5lIFNBMTExMV9HUElPX1BDRFdSCSgweDAyNCkKKyNkZWZpbmUgU0ExMTExX0dQSU9fUENTRFIJKDB4MDI4KQorI2RlZmluZSBTQTExMTFfR1BJT19QQ1NTUgkoMHgwMmMpCisKKyNkZWZpbmUgR1BJT19BMAkJKDEgPDwgMCkKKyNkZWZpbmUgR1BJT19BMQkJKDEgPDwgMSkKKyNkZWZpbmUgR1BJT19BMgkJKDEgPDwgMikKKyNkZWZpbmUgR1BJT19BMwkJKDEgPDwgMykKKworI2RlZmluZSBHUElPX0IwCQkoMSA8PCA4KQorI2RlZmluZSBHUElPX0IxCQkoMSA8PCA5KQorI2RlZmluZSBHUElPX0IyCQkoMSA8PCAxMCkKKyNkZWZpbmUgR1BJT19CMwkJKDEgPDwgMTEpCisjZGVmaW5lIEdQSU9fQjQJCSgxIDw8IDEyKQorI2RlZmluZSBHUElPX0I1CQkoMSA8PCAxMykKKyNkZWZpbmUgR1BJT19CNgkJKDEgPDwgMTQpCisjZGVmaW5lIEdQSU9fQjcJCSgxIDw8IDE1KQorCisjZGVmaW5lIEdQSU9fQzAJCSgxIDw8IDE2KQorI2RlZmluZSBHUElPX0MxCQkoMSA8PCAxNykKKyNkZWZpbmUgR1BJT19DMgkJKDEgPDwgMTgpCisjZGVmaW5lIEdQSU9fQzMJCSgxIDw8IDE5KQorI2RlZmluZSBHUElPX0M0CQkoMSA8PCAyMCkKKyNkZWZpbmUgR1BJT19DNQkJKDEgPDwgMjEpCisjZGVmaW5lIEdQSU9fQzYJCSgxIDw8IDIyKQorI2RlZmluZSBHUElPX0M3CQkoMSA8PCAyMykKKworLyoKKyAqIEludGVycnVwdCBDb250cm9sbGVyCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBJTlRURVNUMAkJVGVzdCByZWdpc3RlciAwCisgKiAgICBJTlRURVNUMQkJVGVzdCByZWdpc3RlciAxCisgKiAgICBJTlRFTjAJCUludGVycnVwdCBFbmFibGUgcmVnaXN0ZXIgMAorICogICAgSU5URU4xCQlJbnRlcnJ1cHQgRW5hYmxlIHJlZ2lzdGVyIDEKKyAqICAgIElOVFBPTDAJCUludGVycnVwdCBQb2xhcml0eSBzZWxlY3Rpb24gMAorICogICAgSU5UUE9MMQkJSW50ZXJydXB0IFBvbGFyaXR5IHNlbGVjdGlvbiAxCisgKiAgICBJTlRUU1RTRUwJCUludGVycnVwdCBzb3VyY2Ugc2VsZWN0aW9uCisgKiAgICBJTlRTVEFUQ0xSMAlJbnRlcnJ1cHQgU3RhdHVzL0NsZWFyIDAKKyAqICAgIElOVFNUQVRDTFIxCUludGVycnVwdCBTdGF0dXMvQ2xlYXIgMQorICogICAgSU5UU0VUMAkJSW50ZXJydXB0IHNvdXJjZSBzZXQgMAorICogICAgSU5UU0VUMQkJSW50ZXJydXB0IHNvdXJjZSBzZXQgMQorICogICAgV0FLRV9FTjAJCVdha2UtdXAgc291cmNlIGVuYWJsZSAwCisgKiAgICBXQUtFX0VOMQkJV2FrZS11cCBzb3VyY2UgZW5hYmxlIDEKKyAqICAgIFdBS0VfUE9MMAkJV2FrZS11cCBwb2xhcml0eSBzZWxlY3Rpb24gMAorICogICAgV0FLRV9QT0wxCQlXYWtlLXVwIHBvbGFyaXR5IHNlbGVjdGlvbiAxCisgKi8KKyNkZWZpbmUgU0ExMTExX0lOVEMJCTB4MTYwMAorCisvKgorICogVGhlc2UgYXJlIG9mZnNldHMgZnJvbSB0aGUgYWJvdmUgYmFzZS4KKyAqLworI2RlZmluZSBTQTExMTFfSU5UVEVTVDAJCTB4MDAwMAorI2RlZmluZSBTQTExMTFfSU5UVEVTVDEJCTB4MDAwNAorI2RlZmluZSBTQTExMTFfSU5URU4wCQkweDAwMDgKKyNkZWZpbmUgU0ExMTExX0lOVEVOMQkJMHgwMDBjCisjZGVmaW5lIFNBMTExMV9JTlRQT0wwCQkweDAwMTAKKyNkZWZpbmUgU0ExMTExX0lOVFBPTDEJCTB4MDAxNAorI2RlZmluZSBTQTExMTFfSU5UVFNUU0VMCTB4MDAxOAorI2RlZmluZSBTQTExMTFfSU5UU1RBVENMUjAJMHgwMDFjCisjZGVmaW5lIFNBMTExMV9JTlRTVEFUQ0xSMQkweDAwMjAKKyNkZWZpbmUgU0ExMTExX0lOVFNFVDAJCTB4MDAyNAorI2RlZmluZSBTQTExMTFfSU5UU0VUMQkJMHgwMDI4CisjZGVmaW5lIFNBMTExMV9XQUtFRU4wCQkweDAwMmMKKyNkZWZpbmUgU0ExMTExX1dBS0VFTjEJCTB4MDAzMAorI2RlZmluZSBTQTExMTFfV0FLRVBPTDAJCTB4MDAzNAorI2RlZmluZSBTQTExMTFfV0FLRVBPTDEJCTB4MDAzOAorCisvKgorICogUFMvMiBUcmFja3BhZCBhbmQgTW91c2UgSW50ZXJmYWNlcworICoKKyAqIFJlZ2lzdGVycworICogICAgUFMyQ1IJCUNvbnRyb2wgUmVnaXN0ZXIKKyAqICAgIFBTMlNUQVQJCVN0YXR1cyBSZWdpc3RlcgorICogICAgUFMyREFUQQkJVHJhbnNtaXQvUmVjZWl2ZSBEYXRhIHJlZ2lzdGVyCisgKiAgICBQUzJDTEtESVYJCUNsb2NrIERpdmlzaW9uIFJlZ2lzdGVyCisgKiAgICBQUzJQUkVDTlQJCUNsb2NrIFByZWNvdW50IFJlZ2lzdGVyCisgKiAgICBQUzJURVNUMQkJVGVzdCByZWdpc3RlciAxCisgKiAgICBQUzJURVNUMgkJVGVzdCByZWdpc3RlciAyCisgKiAgICBQUzJURVNUMwkJVGVzdCByZWdpc3RlciAzCisgKiAgICBQUzJURVNUNAkJVGVzdCByZWdpc3RlciA0CisgKi8KKworI2RlZmluZSBTQTExMTFfS0JECQkweDBhMDAKKyNkZWZpbmUgU0ExMTExX01TRQkJMHgwYzAwCisKKy8qCisgKiBUaGVzZSBhcmUgb2Zmc2V0cyBmcm9tIHRoZSBhYm92ZSBiYXNlcy4KKyAqLworI2RlZmluZSBTQTExMTFfUFMyQ1IJCTB4MDAwMAorI2RlZmluZSBTQTExMTFfUFMyU1RBVAkJMHgwMDA0CisjZGVmaW5lIFNBMTExMV9QUzJEQVRBCQkweDAwMDgKKyNkZWZpbmUgU0ExMTExX1BTMkNMS0RJVgkweDAwMGMKKyNkZWZpbmUgU0ExMTExX1BTMlBSRUNOVAkweDAwMTAKKworI2RlZmluZSBQUzJDUl9FTkEJCTB4MDgKKyNkZWZpbmUgUFMyQ1JfRktECQkweDAyCisjZGVmaW5lIFBTMkNSX0ZLQwkJMHgwMQorCisjZGVmaW5lIFBTMlNUQVRfU1RQCQkweDAxMDAKKyNkZWZpbmUgUFMyU1RBVF9UWEUJCTB4MDA4MAorI2RlZmluZSBQUzJTVEFUX1RYQgkJMHgwMDQwCisjZGVmaW5lIFBTMlNUQVRfUlhGCQkweDAwMjAKKyNkZWZpbmUgUFMyU1RBVF9SWEIJCTB4MDAxMAorI2RlZmluZSBQUzJTVEFUX0VOQQkJMHgwMDA4CisjZGVmaW5lIFBTMlNUQVRfUlhQCQkweDAwMDQKKyNkZWZpbmUgUFMyU1RBVF9LQkQJCTB4MDAwMgorI2RlZmluZSBQUzJTVEFUX0tCQwkJMHgwMDAxCisKKy8qCisgKiBQQ01DSUEgSW50ZXJmYWNlCisgKgorICogUmVnaXN0ZXJzCisgKiAgICBQQ1NSCVN0YXR1cyBSZWdpc3RlcgorICogICAgUENDUglDb250cm9sIFJlZ2lzdGVyCisgKiAgICBQQ1NTUglTbGVlcCBTdGF0ZSBSZWdpc3RlcgorICovCisKKyNkZWZpbmUgU0ExMTExX1BDTUNJQQkweDE2MDAKKworLyoKKyAqIFRoZXNlIGFyZSBvZmZzZXRzIGZyb20gdGhlIGFib3ZlIGJhc2UuCisgKi8KKyNkZWZpbmUgU0ExMTExX1BDQ1IJMHgwMDAwCisjZGVmaW5lIFNBMTExMV9QQ1NTUgkweDAwMDQKKyNkZWZpbmUgU0ExMTExX1BDU1IJMHgwMDA4CisKKyNkZWZpbmUgUENTUl9TMF9SRUFEWQkoMTw8MCkKKyNkZWZpbmUgUENTUl9TMV9SRUFEWQkoMTw8MSkKKyNkZWZpbmUgUENTUl9TMF9ERVRFQ1QJKDE8PDIpCisjZGVmaW5lIFBDU1JfUzFfREVURUNUCSgxPDwzKQorI2RlZmluZSBQQ1NSX1MwX1ZTMQkoMTw8NCkKKyNkZWZpbmUgUENTUl9TMF9WUzIJKDE8PDUpCisjZGVmaW5lIFBDU1JfUzFfVlMxCSgxPDw2KQorI2RlZmluZSBQQ1NSX1MxX1ZTMgkoMTw8NykKKyNkZWZpbmUgUENTUl9TMF9XUAkoMTw8OCkKKyNkZWZpbmUgUENTUl9TMV9XUAkoMTw8OSkKKyNkZWZpbmUgUENTUl9TMF9CVkQxCSgxPDwxMCkKKyNkZWZpbmUgUENTUl9TMF9CVkQyCSgxPDwxMSkKKyNkZWZpbmUgUENTUl9TMV9CVkQxCSgxPDwxMikKKyNkZWZpbmUgUENTUl9TMV9CVkQyCSgxPDwxMykKKworI2RlZmluZSBQQ0NSX1MwX1JTVAkoMTw8MCkKKyNkZWZpbmUgUENDUl9TMV9SU1QJKDE8PDEpCisjZGVmaW5lIFBDQ1JfUzBfRkxUCSgxPDwyKQorI2RlZmluZSBQQ0NSX1MxX0ZMVAkoMTw8MykKKyNkZWZpbmUgUENDUl9TMF9QV0FJVEVOCSgxPDw0KQorI2RlZmluZSBQQ0NSX1MxX1BXQUlURU4JKDE8PDUpCisjZGVmaW5lIFBDQ1JfUzBfUFNFCSgxPDw2KQorI2RlZmluZSBQQ0NSX1MxX1BTRQkoMTw8NykKKworI2RlZmluZSBQQ1NTUl9TMF9TTEVFUAkoMTw8MCkKKyNkZWZpbmUgUENTU1JfUzFfU0xFRVAJKDE8PDEpCisKKworCisKK2V4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgc2ExMTExX2J1c190eXBlOworCisjZGVmaW5lIFNBMTExMV9ERVZJRF9TQkkJMAorI2RlZmluZSBTQTExMTFfREVWSURfU0sJCTEKKyNkZWZpbmUgU0ExMTExX0RFVklEX1VTQgkyCisjZGVmaW5lIFNBMTExMV9ERVZJRF9TQUMJMworI2RlZmluZSBTQTExMTFfREVWSURfU1NQCTQKKyNkZWZpbmUgU0ExMTExX0RFVklEX1BTMgk1CisjZGVmaW5lIFNBMTExMV9ERVZJRF9HUElPCTYKKyNkZWZpbmUgU0ExMTExX0RFVklEX0lOVAk3CisjZGVmaW5lIFNBMTExMV9ERVZJRF9QQ01DSUEJOAorCitzdHJ1Y3Qgc2ExMTExX2RldiB7CisJc3RydWN0IGRldmljZQlkZXY7CisJdW5zaWduZWQgaW50CWRldmlkOworCXN0cnVjdCByZXNvdXJjZQlyZXM7CisJdm9pZCBfX2lvbWVtCSptYXBiYXNlOworCXVuc2lnbmVkIGludAlza3Bjcl9tYXNrOworCXVuc2lnbmVkIGludAlpcnFbNl07CisJdTY0CQlkbWFfbWFzazsKK307CisKKyNkZWZpbmUgU0ExMTExX0RFVihfZCkJY29udGFpbmVyX29mKChfZCksIHN0cnVjdCBzYTExMTFfZGV2LCBkZXYpCisKKyNkZWZpbmUgc2ExMTExX2dldF9kcnZkYXRhKGQpCWRldl9nZXRfZHJ2ZGF0YSgmKGQpLT5kZXYpCisjZGVmaW5lIHNhMTExMV9zZXRfZHJ2ZGF0YShkLHApCWRldl9zZXRfZHJ2ZGF0YSgmKGQpLT5kZXYsIHApCisKK3N0cnVjdCBzYTExMTFfZHJpdmVyIHsKKwlzdHJ1Y3QgZGV2aWNlX2RyaXZlcglkcnY7CisJdW5zaWduZWQgaW50CQlkZXZpZDsKKwlpbnQgKCpwcm9iZSkoc3RydWN0IHNhMTExMV9kZXYgKik7CisJaW50ICgqcmVtb3ZlKShzdHJ1Y3Qgc2ExMTExX2RldiAqKTsKKwlpbnQgKCpzdXNwZW5kKShzdHJ1Y3Qgc2ExMTExX2RldiAqLCBwbV9tZXNzYWdlX3QpOworCWludCAoKnJlc3VtZSkoc3RydWN0IHNhMTExMV9kZXYgKik7Cit9OworCisjZGVmaW5lIFNBMTExMV9EUlYoX2QpCWNvbnRhaW5lcl9vZigoX2QpLCBzdHJ1Y3Qgc2ExMTExX2RyaXZlciwgZHJ2KQorCisjZGVmaW5lIFNBMTExMV9EUklWRVJfTkFNRShfc2FkZXYpICgoX3NhZGV2KS0+ZGV2LmRyaXZlci0+bmFtZSkKKworLyoKKyAqIFRoZXNlIGZyb2IgdGhlIFNLUENSIHJlZ2lzdGVyLgorICovCit2b2lkIHNhMTExMV9lbmFibGVfZGV2aWNlKHN0cnVjdCBzYTExMTFfZGV2ICopOwordm9pZCBzYTExMTFfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHNhMTExMV9kZXYgKik7CisKK3Vuc2lnbmVkIGludCBzYTExMTFfcGxsX2Nsb2NrKHN0cnVjdCBzYTExMTFfZGV2ICopOworCisjZGVmaW5lIFNBMTExMV9BVURJT19BQ0xJTksJMAorI2RlZmluZSBTQTExMTFfQVVESU9fSTJTCTEKKwordm9pZCBzYTExMTFfc2VsZWN0X2F1ZGlvX21vZGUoc3RydWN0IHNhMTExMV9kZXYgKnNhZGV2LCBpbnQgbW9kZSk7CitpbnQgc2ExMTExX3NldF9hdWRpb19yYXRlKHN0cnVjdCBzYTExMTFfZGV2ICpzYWRldiwgaW50IHJhdGUpOworaW50IHNhMTExMV9nZXRfYXVkaW9fcmF0ZShzdHJ1Y3Qgc2ExMTExX2RldiAqc2FkZXYpOworCitpbnQgc2ExMTExX2NoZWNrX2RtYV9idWcoZG1hX2FkZHJfdCBhZGRyKTsKKworaW50IHNhMTExMV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHNhMTExMV9kcml2ZXIgKik7Cit2b2lkIHNhMTExMV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3Qgc2ExMTExX2RyaXZlciAqKTsKKwordm9pZCBzYTExMTFfc2V0X2lvX2RpcihzdHJ1Y3Qgc2ExMTExX2RldiAqc2FkZXYsIHVuc2lnbmVkIGludCBiaXRzLCB1bnNpZ25lZCBpbnQgZGlyLCB1bnNpZ25lZCBpbnQgc2xlZXBfZGlyKTsKK3ZvaWQgc2ExMTExX3NldF9pbyhzdHJ1Y3Qgc2ExMTExX2RldiAqc2FkZXYsIHVuc2lnbmVkIGludCBiaXRzLCB1bnNpZ25lZCBpbnQgdik7Cit2b2lkIHNhMTExMV9zZXRfc2xlZXBfaW8oc3RydWN0IHNhMTExMV9kZXYgKnNhZGV2LCB1bnNpZ25lZCBpbnQgYml0cywgdW5zaWduZWQgaW50IHYpOworCisjZW5kaWYgIC8qIF9BU01fQVJDSF9TQTExMTEgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9zY29vcC5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL3Njb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VhNzcxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9zY29vcC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiAgRGVmaW5pdGlvbnMgZm9yIHRoZSBTQ09PUCBpbnRlcmZhY2UgZm91bmQgb24gdmFyaW91cyBTaGFycCBQREFzCisgKgorICogIENvcHlyaWdodCAoYykgMjAwNCBSaWNoYXJkIFB1cmRpZQorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNkZWZpbmUgU0NPT1BfTUNSICAweDAwCisjZGVmaW5lIFNDT09QX0NEUiAgMHgwNAorI2RlZmluZSBTQ09PUF9DU1IgIDB4MDgKKyNkZWZpbmUgU0NPT1BfQ1BSICAweDBDCisjZGVmaW5lIFNDT09QX0NDUiAgMHgxMAorI2RlZmluZSBTQ09PUF9JUlIgIDB4MTQKKyNkZWZpbmUgU0NPT1BfSVJNICAweDE0CisjZGVmaW5lIFNDT09QX0lNUiAgMHgxOAorI2RlZmluZSBTQ09PUF9JU1IgIDB4MUMKKyNkZWZpbmUgU0NPT1BfR1BDUiAweDIwCisjZGVmaW5lIFNDT09QX0dQV1IgMHgyNAorI2RlZmluZSBTQ09PUF9HUFJSIDB4MjgKKworI2RlZmluZSBTQ09PUF9HUENSX1BBMjIJKCAxIDw8IDEyICkKKyNkZWZpbmUgU0NPT1BfR1BDUl9QQTIxCSggMSA8PCAxMSApCisjZGVmaW5lIFNDT09QX0dQQ1JfUEEyMAkoIDEgPDwgMTAgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTkJKCAxIDw8IDkgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTgJKCAxIDw8IDggKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTcJKCAxIDw8IDcgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTYJKCAxIDw8IDYgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTUJKCAxIDw8IDUgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTQJKCAxIDw8IDQgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTMJKCAxIDw8IDMgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTIJKCAxIDw8IDIgKQorI2RlZmluZSBTQ09PUF9HUENSX1BBMTEJKCAxIDw8IDEgKQorCitzdHJ1Y3Qgc2Nvb3BfY29uZmlnIHsKKwl1bnNpZ25lZCBzaG9ydCBpb19vdXQ7CisJdW5zaWduZWQgc2hvcnQgaW9fZGlyOworfTsKKwordm9pZCByZXNldF9zY29vcChzdHJ1Y3QgZGV2aWNlICpkZXYpOwordW5zaWduZWQgc2hvcnQgc2V0X3Njb29wX2dwaW8oc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBzaG9ydCBiaXQpOwordW5zaWduZWQgc2hvcnQgcmVzZXRfc2Nvb3BfZ3BpbyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIHNob3J0IGJpdCk7Cit1bnNpZ25lZCBzaG9ydCByZWFkX3Njb29wX3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIHNob3J0IHJlZyk7Cit2b2lkIHdyaXRlX3Njb29wX3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIHNob3J0IHJlZywgdW5zaWduZWQgc2hvcnQgZGF0YSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc3NwLmggYi9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc3NwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhYTExYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9zc3AuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogIHNzcC5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBSdXNzZWxsIEtpbmcsIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBTU1BfSAorI2RlZmluZSBTU1BfSAorCitzdHJ1Y3Qgc3NwX3N0YXRlIHsKKwl1bnNpZ25lZCBpbnQJY3IwOworCXVuc2lnbmVkIGludAljcjE7Cit9OworCitpbnQgc3NwX3dyaXRlX3dvcmQodTE2IGRhdGEpOworaW50IHNzcF9yZWFkX3dvcmQodm9pZCk7Cit2b2lkIHNzcF9mbHVzaCh2b2lkKTsKK3ZvaWQgc3NwX2VuYWJsZSh2b2lkKTsKK3ZvaWQgc3NwX2Rpc2FibGUodm9pZCk7Cit2b2lkIHNzcF9zYXZlX3N0YXRlKHN0cnVjdCBzc3Bfc3RhdGUgKnNzcCk7Cit2b2lkIHNzcF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBzc3Bfc3RhdGUgKnNzcCk7CitpbnQgc3NwX2luaXQodm9pZCk7Cit2b2lkIHNzcF9leGl0KHZvaWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9oZHJlZy5oIGIvaW5jbHVkZS9hc20tYXJtL2hkcmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y3ZmQxYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oZHJlZy5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9oZHJlZy5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2lkZS5oIGIvaW5jbHVkZS9hc20tYXJtL2lkZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMTRhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaWRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaWRlLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk0LTE5OTYgIExpbnVzIFRvcnZhbGRzICYgYXV0aG9ycworICovCisKKy8qCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBpMzg2IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBJREUgY29kZS4KKyAqLworCisjaWZuZGVmIF9fQVNNQVJNX0lERV9ICisjZGVmaW5lIF9fQVNNQVJNX0lERV9ICisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNpZm5kZWYgTUFYX0hXSUZTCisjZGVmaW5lIE1BWF9IV0lGUwk0CisjZW5kaWYKKworI2lmICFkZWZpbmVkKENPTkZJR19BUkNIX0w3MjAwKQorIyBkZWZpbmUgSURFX0FSQ0hfT0JTT0xFVEVfSU5JVAorIyBpZmRlZiBDT05GSUdfQVJDSF9DTFBTNzUwMAorIyAgZGVmaW5lIGlkZV9kZWZhdWx0X2lvX2N0bChiYXNlKQkoKGJhc2UpICsgMHgyMDYpIC8qIG9ic29sZXRlICovCisjIGVsc2UKKyMgIGRlZmluZSBpZGVfZGVmYXVsdF9pb19jdGwoYmFzZSkJKDApCisjIGVuZGlmCisjZW5kaWYgLyogIUFSQ0hfTDcyMDAgKi8KKworI2RlZmluZSBfX2lkZV9tbV9pbnN3KHBvcnQsYWRkcixsZW4pCXJlYWRzdyhwb3J0LGFkZHIsbGVuKQorI2RlZmluZSBfX2lkZV9tbV9pbnNsKHBvcnQsYWRkcixsZW4pCXJlYWRzbChwb3J0LGFkZHIsbGVuKQorI2RlZmluZSBfX2lkZV9tbV9vdXRzdyhwb3J0LGFkZHIsbGVuKQl3cml0ZXN3KHBvcnQsYWRkcixsZW4pCisjZGVmaW5lIF9faWRlX21tX291dHNsKHBvcnQsYWRkcixsZW4pCXdyaXRlc2wocG9ydCxhZGRyLGxlbikKKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2VuZGlmIC8qIF9fQVNNQVJNX0lERV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YmM3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaW8uaApAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaW8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIE1vZGlmaWNhdGlvbnM6CisgKiAgMTYtU2VwLTE5OTYJUk1LCUlubGluZWQgdGhlIGlueC9vdXR4IGZ1bmN0aW9ucyAmIG9wdGltaXNlZCBmb3IgYm90aAorICoJCQljb25zdGFudCBhZGRyZXNzZXMgYW5kIHZhcmlhYmxlIGFkZHJlc3Nlcy4KKyAqICAwNC1EZWMtMTk5NwlSTUsJTW92ZWQgYSBsb3Qgb2YgdGhpcyBzdHVmZiB0byB0aGUgbmV3IGFyY2hpdGVjdHVyZQorICoJCQlzcGVjaWZpYyBJTyBoZWFkZXIgZmlsZXMuCisgKiAgMjctTWFyLTE5OTkJUEpCCVNlY29uZCBwYXJhbWV0ZXIgb2YgbWVtY3B5X3RvaW8gaXMgY29uc3QuLgorICogIDA0LUFwci0xOTk5CVBKQglBZGRlZCBjaGVja19zaWduYXR1cmUuCisgKiAgMTItRGVjLTE5OTkJUk1LCU1vcmUgY2xlYW51cHMKKyAqICAxOC1KdW4tMjAwMCBSTUsJUmVtb3ZlZCB2aXJ0X3RvXyogYW5kIGZyaWVuZHMgZGVmaW5pdGlvbnMKKyAqICAwNS1PY3QtMjAwNCBCSkQgICAgIE1vdmVkIG1lbW9yeSBzdHJpbmcgZnVuY3Rpb25zIHRvIHVzZSB2b2lkIF9faW9tZW0KKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fSU9fSAorI2RlZmluZSBfX0FTTV9BUk1fSU9fSAorCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisKKy8qCisgKiBJU0EgSS9PIGJ1cyBtZW1vcnkgYWRkcmVzc2VzIGFyZSAxOjEgd2l0aCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4KKyAqLworI2RlZmluZSBpc2FfdmlydF90b19idXMgdmlydF90b19waHlzCisjZGVmaW5lIGlzYV9wYWdlX3RvX2J1cyBwYWdlX3RvX3BoeXMKKyNkZWZpbmUgaXNhX2J1c190b192aXJ0IHBoeXNfdG9fdmlydAorCisvKgorICogR2VuZXJpYyBJTyByZWFkL3dyaXRlLiAgVGhlc2UgcGVyZm9ybSBuYXRpdmUtZW5kaWFuIGFjY2Vzc2VzLiAgTm90ZQorICogdGhhdCBzb21lIGFyY2hpdGVjdHVyZXMgd2lsbCB3YW50IHRvIHJlLWRlZmluZSBfX3Jhd197cmVhZCx3cml0ZX13LgorICovCitleHRlcm4gdm9pZCBfX3Jhd193cml0ZXNiKHZvaWQgX19pb21lbSAqYWRkciwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGJ5dGVsZW4pOworZXh0ZXJuIHZvaWQgX19yYXdfd3JpdGVzdyh2b2lkIF9faW9tZW0gKmFkZHIsIGNvbnN0IHZvaWQgKmRhdGEsIGludCB3b3JkbGVuKTsKK2V4dGVybiB2b2lkIF9fcmF3X3dyaXRlc2wodm9pZCBfX2lvbWVtICphZGRyLCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbG9uZ2xlbik7CisKK2V4dGVybiB2b2lkIF9fcmF3X3JlYWRzYih2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmRhdGEsIGludCBieXRlbGVuKTsKK2V4dGVybiB2b2lkIF9fcmF3X3JlYWRzdyh2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmRhdGEsIGludCB3b3JkbGVuKTsKK2V4dGVybiB2b2lkIF9fcmF3X3JlYWRzbCh2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmRhdGEsIGludCBsb25nbGVuKTsKKworI2RlZmluZSBfX3Jhd193cml0ZWIodixhKQkoX19jaGtfaW9fcHRyKGEpLCAqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgX19mb3JjZSAgKikoYSkgPSAodikpCisjZGVmaW5lIF9fcmF3X3dyaXRldyh2LGEpCShfX2Noa19pb19wdHIoYSksICoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgX19mb3JjZSAqKShhKSA9ICh2KSkKKyNkZWZpbmUgX19yYXdfd3JpdGVsKHYsYSkJKF9fY2hrX2lvX3B0cihhKSwgKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgX19mb3JjZSAgICopKGEpID0gKHYpKQorCisjZGVmaW5lIF9fcmF3X3JlYWRiKGEpCQkoX19jaGtfaW9fcHRyKGEpLCAqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgX19mb3JjZSAgKikoYSkpCisjZGVmaW5lIF9fcmF3X3JlYWR3KGEpCQkoX19jaGtfaW9fcHRyKGEpLCAqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IF9fZm9yY2UgKikoYSkpCisjZGVmaW5lIF9fcmF3X3JlYWRsKGEpCQkoX19jaGtfaW9fcHRyKGEpLCAqKHZvbGF0aWxlIHVuc2lnbmVkIGludCBfX2ZvcmNlICAgKikoYSkpCisKKy8qCisgKiBCYWQgcmVhZC93cml0ZSBhY2Nlc3Nlcy4uLgorICovCitleHRlcm4gdm9pZCBfX3JlYWR3cml0ZV9idWcoY29uc3QgY2hhciAqZm4pOworCisvKgorICogTm93LCBwaWNrIHVwIHRoZSBtYWNoaW5lLWRlZmluZWQgSU8gZGVmaW5pdGlvbnMKKyAqLworI2luY2x1ZGUgPGFzbS9hcmNoL2lvLmg+CisKKyNpZmRlZiBfX2lvX3BjaQorI3dhcm5pbmcgbWFjaGluZSBjbGFzcyB1c2VzIGJ1Z2d5IF9faW9fcGNpCisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fYXJjaF9wdXRiKSB8fCBkZWZpbmVkKF9fYXJjaF9wdXR3KSB8fCBkZWZpbmVkKF9fYXJjaF9wdXRsKSB8fCBcCisgICAgZGVmaW5lZChfX2FyY2hfZ2V0YikgfHwgZGVmaW5lZChfX2FyY2hfZ2V0dykgfHwgZGVmaW5lZChfX2FyY2hfZ2V0bCkKKyN3YXJuaW5nIG1hY2hpbmUgY2xhc3MgdXNlcyBvbGQgX19hcmNoX3B1dHcgb3IgX19hcmNoX2dldHcKKyNlbmRpZgorCisvKgorICogIElPIHBvcnQgYWNjZXNzIHByaW1pdGl2ZXMKKyAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlIEFSTSBkb2Vzbid0IGhhdmUgc3BlY2lhbCBJTyBhY2Nlc3MgaW5zdHJ1Y3Rpb25zOyBhbGwgSU8gaXMgbWVtb3J5CisgKiBtYXBwZWQuICBOb3RlIHRoYXQgdGhlc2UgYXJlIGRlZmluZWQgdG8gcGVyZm9ybSBsaXR0bGUgZW5kaWFuIGFjY2Vzc2VzCisgKiBvbmx5LiAgVGhlaXIgcHJpbWFyeSBwdXJwb3NlIGlzIHRvIGFjY2VzcyBQQ0kgYW5kIElTQSBwZXJpcGhlcmFscy4KKyAqCisgKiBOb3RlIHRoYXQgZm9yIGEgYmlnIGVuZGlhbiBtYWNoaW5lLCB0aGlzIGltcGxpZXMgdGhhdCB0aGUgZm9sbG93aW5nCisgKiBiaWcgZW5kaWFuIG1vZGUgY29ubmVjdGl2aXR5IGlzIGluIHBsYWNlLCBhcyBkZXNjcmliZWQgYnkgbnVtZXJpb3VzCisgKiBBUk0gZG9jdW1lbnRzOgorICoKKyAqICAgIFBDSTogIEQwLUQ3ICAgRDgtRDE1IEQxNi1EMjMgRDI0LUQzMQorICogICAgQVJNOiBEMjQtRDMxIEQxNi1EMjMgIEQ4LUQxNSAgRDAtRDcKKyAqCisgKiBUaGUgbWFjaGluZSBzcGVjaWZpYyBpby5oIGluY2x1ZGUgZGVmaW5lcyBfX2lvIHRvIHRyYW5zbGF0ZSBhbiAiSU8iCisgKiBhZGRyZXNzIHRvIGEgbWVtb3J5IGFkZHJlc3MuCisgKgorICogTm90ZSB0aGF0IHdlIHByZXZlbnQgR0NDIHJlLW9yZGVyaW5nIG9yIGNhY2hpbmcgdmFsdWVzIGluIGV4cHJlc3Npb25zCisgKiBieSBpbnRyb2R1Y2luZyBzZXF1ZW5jZSBwb2ludHMgaW50byB0aGUgaW4qKCkgZGVmaW5pdGlvbnMuICBOb3RlIHRoYXQKKyAqIF9fcmF3XyogZG8gbm90IGd1YXJhbnRlZSB0aGlzIGJlaGF2aW91ci4KKyAqCisgKiBUaGUge2luLG91dH1bYndsXSBtYWNyb3MgYXJlIGZvciBlbXVsYXRpbmcgeDg2LXN0eWxlIFBDSS9JU0EgSU8gc3BhY2UuCisgKi8KKyNpZmRlZiBfX2lvCisjZGVmaW5lIG91dGIodixwKQkJX19yYXdfd3JpdGViKHYsX19pbyhwKSkKKyNkZWZpbmUgb3V0dyh2LHApCQlfX3Jhd193cml0ZXcoY3B1X3RvX2xlMTYodiksX19pbyhwKSkKKyNkZWZpbmUgb3V0bCh2LHApCQlfX3Jhd193cml0ZWwoY3B1X3RvX2xlMzIodiksX19pbyhwKSkKKworI2RlZmluZSBpbmIocCkJKHsgdW5zaWduZWQgaW50IF9fdiA9IF9fcmF3X3JlYWRiKF9faW8ocCkpOyBfX3Y7IH0pCisjZGVmaW5lIGludyhwKQkoeyB1bnNpZ25lZCBpbnQgX192ID0gbGUxNl90b19jcHUoX19yYXdfcmVhZHcoX19pbyhwKSkpOyBfX3Y7IH0pCisjZGVmaW5lIGlubChwKQkoeyB1bnNpZ25lZCBpbnQgX192ID0gbGUzMl90b19jcHUoX19yYXdfcmVhZGwoX19pbyhwKSkpOyBfX3Y7IH0pCisKKyNkZWZpbmUgb3V0c2IocCxkLGwpCQlfX3Jhd193cml0ZXNiKF9faW8ocCksZCxsKQorI2RlZmluZSBvdXRzdyhwLGQsbCkJCV9fcmF3X3dyaXRlc3coX19pbyhwKSxkLGwpCisjZGVmaW5lIG91dHNsKHAsZCxsKQkJX19yYXdfd3JpdGVzbChfX2lvKHApLGQsbCkKKworI2RlZmluZSBpbnNiKHAsZCxsKQkJX19yYXdfcmVhZHNiKF9faW8ocCksZCxsKQorI2RlZmluZSBpbnN3KHAsZCxsKQkJX19yYXdfcmVhZHN3KF9faW8ocCksZCxsKQorI2RlZmluZSBpbnNsKHAsZCxsKQkJX19yYXdfcmVhZHNsKF9faW8ocCksZCxsKQorI2VuZGlmCisKKyNkZWZpbmUgb3V0Yl9wKHZhbCxwb3J0KQlvdXRiKCh2YWwpLChwb3J0KSkKKyNkZWZpbmUgb3V0d19wKHZhbCxwb3J0KQlvdXR3KCh2YWwpLChwb3J0KSkKKyNkZWZpbmUgb3V0bF9wKHZhbCxwb3J0KQlvdXRsKCh2YWwpLChwb3J0KSkKKyNkZWZpbmUgaW5iX3AocG9ydCkJCWluYigocG9ydCkpCisjZGVmaW5lIGlud19wKHBvcnQpCQlpbncoKHBvcnQpKQorI2RlZmluZSBpbmxfcChwb3J0KQkJaW5sKChwb3J0KSkKKworI2RlZmluZSBvdXRzYl9wKHBvcnQsZnJvbSxsZW4pCW91dHNiKHBvcnQsZnJvbSxsZW4pCisjZGVmaW5lIG91dHN3X3AocG9ydCxmcm9tLGxlbikJb3V0c3cocG9ydCxmcm9tLGxlbikKKyNkZWZpbmUgb3V0c2xfcChwb3J0LGZyb20sbGVuKQlvdXRzbChwb3J0LGZyb20sbGVuKQorI2RlZmluZSBpbnNiX3AocG9ydCx0byxsZW4pCWluc2IocG9ydCx0byxsZW4pCisjZGVmaW5lIGluc3dfcChwb3J0LHRvLGxlbikJaW5zdyhwb3J0LHRvLGxlbikKKyNkZWZpbmUgaW5zbF9wKHBvcnQsdG8sbGVuKQlpbnNsKHBvcnQsdG8sbGVuKQorCisvKgorICogU3RyaW5nIHZlcnNpb24gb2YgSU8gbWVtb3J5IGFjY2VzcyBvcHM6CisgKi8KK2V4dGVybiB2b2lkIF9tZW1jcHlfZnJvbWlvKHZvaWQgKiwgdm9pZCBfX2lvbWVtICosIHNpemVfdCk7CitleHRlcm4gdm9pZCBfbWVtY3B5X3RvaW8odm9pZCBfX2lvbWVtICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKK2V4dGVybiB2b2lkIF9tZW1zZXRfaW8odm9pZCBfX2lvbWVtICosIGludCwgc2l6ZV90KTsKKworI2RlZmluZSBtbWlvd2IoKQorCisvKgorICogIE1lbW9yeSBhY2Nlc3MgcHJpbWl0aXZlcworICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoZXNlIHBlcmZvcm0gUENJIG1lbW9yeSBhY2Nlc3NlcyB2aWEgYW4gaW9yZW1hcCByZWdpb24uICBUaGV5IGRvbid0CisgKiB0YWtlIGFuIGFkZHJlc3MgYXMgc3VjaCwgYnV0IGEgY29va2llLgorICoKKyAqIEFnYWluLCB0aGlzIGFyZSBkZWZpbmVkIHRvIHBlcmZvcm0gbGl0dGxlIGVuZGlhbiBhY2Nlc3Nlcy4gIFNlZSB0aGUKKyAqIElPIHBvcnQgcHJpbWl0aXZlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2lmZGVmIF9fbWVtX3BjaQorI2RlZmluZSByZWFkYihjKSAoeyB1bnNpZ25lZCBpbnQgX192ID0gX19yYXdfcmVhZGIoX19tZW1fcGNpKGMpKTsgX192OyB9KQorI2RlZmluZSByZWFkdyhjKSAoeyB1bnNpZ25lZCBpbnQgX192ID0gbGUxNl90b19jcHUoX19yYXdfcmVhZHcoX19tZW1fcGNpKGMpKSk7IF9fdjsgfSkKKyNkZWZpbmUgcmVhZGwoYykgKHsgdW5zaWduZWQgaW50IF9fdiA9IGxlMzJfdG9fY3B1KF9fcmF3X3JlYWRsKF9fbWVtX3BjaShjKSkpOyBfX3Y7IH0pCisjZGVmaW5lIHJlYWRiX3JlbGF4ZWQoYWRkcikgcmVhZGIoYWRkcikKKyNkZWZpbmUgcmVhZHdfcmVsYXhlZChhZGRyKSByZWFkdyhhZGRyKQorI2RlZmluZSByZWFkbF9yZWxheGVkKGFkZHIpIHJlYWRsKGFkZHIpCisKKyNkZWZpbmUgcmVhZHNiKHAsZCxsKQkJX19yYXdfcmVhZHNiKF9fbWVtX3BjaShwKSxkLGwpCisjZGVmaW5lIHJlYWRzdyhwLGQsbCkJCV9fcmF3X3JlYWRzdyhfX21lbV9wY2kocCksZCxsKQorI2RlZmluZSByZWFkc2wocCxkLGwpCQlfX3Jhd19yZWFkc2woX19tZW1fcGNpKHApLGQsbCkKKworI2RlZmluZSB3cml0ZWIodixjKQkJX19yYXdfd3JpdGViKHYsX19tZW1fcGNpKGMpKQorI2RlZmluZSB3cml0ZXcodixjKQkJX19yYXdfd3JpdGV3KGNwdV90b19sZTE2KHYpLF9fbWVtX3BjaShjKSkKKyNkZWZpbmUgd3JpdGVsKHYsYykJCV9fcmF3X3dyaXRlbChjcHVfdG9fbGUzMih2KSxfX21lbV9wY2koYykpCisKKyNkZWZpbmUgd3JpdGVzYihwLGQsbCkJCV9fcmF3X3dyaXRlc2IoX19tZW1fcGNpKHApLGQsbCkKKyNkZWZpbmUgd3JpdGVzdyhwLGQsbCkJCV9fcmF3X3dyaXRlc3coX19tZW1fcGNpKHApLGQsbCkKKyNkZWZpbmUgd3JpdGVzbChwLGQsbCkJCV9fcmF3X3dyaXRlc2woX19tZW1fcGNpKHApLGQsbCkKKworI2RlZmluZSBtZW1zZXRfaW8oYyx2LGwpCV9tZW1zZXRfaW8oX19tZW1fcGNpKGMpLCh2KSwobCkpCisjZGVmaW5lIG1lbWNweV9mcm9taW8oYSxjLGwpCV9tZW1jcHlfZnJvbWlvKChhKSxfX21lbV9wY2koYyksKGwpKQorI2RlZmluZSBtZW1jcHlfdG9pbyhjLGEsbCkJX21lbWNweV90b2lvKF9fbWVtX3BjaShjKSwoYSksKGwpKQorCisjZGVmaW5lIGV0aF9pb19jb3B5X2FuZF9zdW0ocyxjLGwsYikgXAorCQkJCWV0aF9jb3B5X2FuZF9zdW0oKHMpLF9fbWVtX3BjaShjKSwobCksKGIpKQorCitzdGF0aWMgaW5saW5lIGludAorY2hlY2tfc2lnbmF0dXJlKHZvaWQgX19pb21lbSAqaW9fYWRkciwgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLAorCQlpbnQgbGVuZ3RoKQoreworCWludCByZXR2YWwgPSAwOworCWRvIHsKKwkJaWYgKHJlYWRiKGlvX2FkZHIpICE9ICpzaWduYXR1cmUpCisJCQlnb3RvIG91dDsKKwkJaW9fYWRkcisrOworCQlzaWduYXR1cmUrKzsKKwkJbGVuZ3RoLS07CisJfSB3aGlsZSAobGVuZ3RoKTsKKwlyZXR2YWwgPSAxOworb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisKKyNlbGlmICFkZWZpbmVkKHJlYWRiKQorCisjZGVmaW5lIHJlYWRiKGMpCQkJKF9fcmVhZHdyaXRlX2J1ZygicmVhZGIiKSwwKQorI2RlZmluZSByZWFkdyhjKQkJCShfX3JlYWR3cml0ZV9idWcoInJlYWR3IiksMCkKKyNkZWZpbmUgcmVhZGwoYykJCQkoX19yZWFkd3JpdGVfYnVnKCJyZWFkbCIpLDApCisjZGVmaW5lIHdyaXRlYih2LGMpCQkJX19yZWFkd3JpdGVfYnVnKCJ3cml0ZWIiKQorI2RlZmluZSB3cml0ZXcodixjKQkJCV9fcmVhZHdyaXRlX2J1Zygid3JpdGV3IikKKyNkZWZpbmUgd3JpdGVsKHYsYykJCQlfX3JlYWR3cml0ZV9idWcoIndyaXRlbCIpCisKKyNkZWZpbmUgZXRoX2lvX2NvcHlfYW5kX3N1bShzLGMsbCxiKQlfX3JlYWR3cml0ZV9idWcoImV0aF9pb19jb3B5X2FuZF9zdW0iKQorCisjZGVmaW5lIGNoZWNrX3NpZ25hdHVyZShpbyxzaWcsbGVuKQkoMCkKKworI2VuZGlmCS8qIF9fbWVtX3BjaSAqLworCisvKgorICogSWYgdGhpcyBhcmNoaXRlY3R1cmUgaGFzIElTQSBJTywgdGhlbiBkZWZpbmUgdGhlIGlzYV9yZWFkL2lzYV93cml0ZQorICogbWFjcm9zLgorICovCisjaWZkZWYgX19tZW1faXNhCisKKyNkZWZpbmUgaXNhX3JlYWRiKGFkZHIpCQkJX19yYXdfcmVhZGIoX19tZW1faXNhKGFkZHIpKQorI2RlZmluZSBpc2FfcmVhZHcoYWRkcikJCQlfX3Jhd19yZWFkdyhfX21lbV9pc2EoYWRkcikpCisjZGVmaW5lIGlzYV9yZWFkbChhZGRyKQkJCV9fcmF3X3JlYWRsKF9fbWVtX2lzYShhZGRyKSkKKyNkZWZpbmUgaXNhX3dyaXRlYih2YWwsYWRkcikJCV9fcmF3X3dyaXRlYih2YWwsX19tZW1faXNhKGFkZHIpKQorI2RlZmluZSBpc2Ffd3JpdGV3KHZhbCxhZGRyKQkJX19yYXdfd3JpdGV3KHZhbCxfX21lbV9pc2EoYWRkcikpCisjZGVmaW5lIGlzYV93cml0ZWwodmFsLGFkZHIpCQlfX3Jhd193cml0ZWwodmFsLF9fbWVtX2lzYShhZGRyKSkKKyNkZWZpbmUgaXNhX21lbXNldF9pbyhhLGIsYykJCV9tZW1zZXRfaW8oX19tZW1faXNhKGEpLChiKSwoYykpCisjZGVmaW5lIGlzYV9tZW1jcHlfZnJvbWlvKGEsYixjKQlfbWVtY3B5X2Zyb21pbygoYSksX19tZW1faXNhKGIpLChjKSkKKyNkZWZpbmUgaXNhX21lbWNweV90b2lvKGEsYixjKQkJX21lbWNweV90b2lvKF9fbWVtX2lzYSgoYSkpLChiKSwoYykpCisKKyNkZWZpbmUgaXNhX2V0aF9pb19jb3B5X2FuZF9zdW0oYSxiLGMsZCkgXAorCQkJCWV0aF9jb3B5X2FuZF9zdW0oKGEpLF9fbWVtX2lzYShiKSwoYyksKGQpKQorCisjZWxzZQkvKiBfX21lbV9pc2EgKi8KKworI2RlZmluZSBpc2FfcmVhZGIoYWRkcikJCQkoX19yZWFkd3JpdGVfYnVnKCJpc2FfcmVhZGIiKSwwKQorI2RlZmluZSBpc2FfcmVhZHcoYWRkcikJCQkoX19yZWFkd3JpdGVfYnVnKCJpc2FfcmVhZHciKSwwKQorI2RlZmluZSBpc2FfcmVhZGwoYWRkcikJCQkoX19yZWFkd3JpdGVfYnVnKCJpc2FfcmVhZGwiKSwwKQorI2RlZmluZSBpc2Ffd3JpdGViKHZhbCxhZGRyKQkJX19yZWFkd3JpdGVfYnVnKCJpc2Ffd3JpdGViIikKKyNkZWZpbmUgaXNhX3dyaXRldyh2YWwsYWRkcikJCV9fcmVhZHdyaXRlX2J1ZygiaXNhX3dyaXRldyIpCisjZGVmaW5lIGlzYV93cml0ZWwodmFsLGFkZHIpCQlfX3JlYWR3cml0ZV9idWcoImlzYV93cml0ZWwiKQorI2RlZmluZSBpc2FfbWVtc2V0X2lvKGEsYixjKQkJX19yZWFkd3JpdGVfYnVnKCJpc2FfbWVtc2V0X2lvIikKKyNkZWZpbmUgaXNhX21lbWNweV9mcm9taW8oYSxiLGMpCV9fcmVhZHdyaXRlX2J1ZygiaXNhX21lbWNweV9mcm9taW8iKQorI2RlZmluZSBpc2FfbWVtY3B5X3RvaW8oYSxiLGMpCQlfX3JlYWR3cml0ZV9idWcoImlzYV9tZW1jcHlfdG9pbyIpCisKKyNkZWZpbmUgaXNhX2V0aF9pb19jb3B5X2FuZF9zdW0oYSxiLGMsZCkgXAorCQkJCV9fcmVhZHdyaXRlX2J1ZygiaXNhX2V0aF9pb19jb3B5X2FuZF9zdW0iKQorCisjZW5kaWYJLyogX19tZW1faXNhICovCisKKy8qCisgKiBpb3JlbWFwIGFuZCBmcmllbmRzLgorICoKKyAqIGlvcmVtYXAgdGFrZXMgYSBQQ0kgbWVtb3J5IGFkZHJlc3MsIGFzIHNwZWNpZmllZCBpbgorICogRG9jdW1lbnRhdGlvbi9JTy1tYXBwaW5nLnR4dC4KKyAqLworZXh0ZXJuIHZvaWQgX19pb21lbSAqIF9faW9yZW1hcCh1bnNpZ25lZCBsb25nLCBzaXplX3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworZXh0ZXJuIHZvaWQgX19pb3VubWFwKHZvaWQgX19pb21lbSAqYWRkcik7CisKKyNpZm5kZWYgX19hcmNoX2lvcmVtYXAKKyNkZWZpbmUgaW9yZW1hcChjb29raWUsc2l6ZSkJCV9faW9yZW1hcChjb29raWUsc2l6ZSwwLDEpCisjZGVmaW5lIGlvcmVtYXBfbm9jYWNoZShjb29raWUsc2l6ZSkJX19pb3JlbWFwKGNvb2tpZSxzaXplLDAsMSkKKyNkZWZpbmUgaW9yZW1hcF9jYWNoZWQoY29va2llLHNpemUpCV9faW9yZW1hcChjb29raWUsc2l6ZSxMX1BURV9DQUNIRUFCTEUsMSkKKyNkZWZpbmUgaW91bm1hcChjb29raWUpCQkJX19pb3VubWFwKGNvb2tpZSkKKyNlbHNlCisjZGVmaW5lIGlvcmVtYXAoY29va2llLHNpemUpCQlfX2FyY2hfaW9yZW1hcCgoY29va2llKSwoc2l6ZSksMCwxKQorI2RlZmluZSBpb3JlbWFwX25vY2FjaGUoY29va2llLHNpemUpCV9fYXJjaF9pb3JlbWFwKChjb29raWUpLChzaXplKSwwLDEpCisjZGVmaW5lIGlvcmVtYXBfY2FjaGVkKGNvb2tpZSxzaXplKQlfX2FyY2hfaW9yZW1hcCgoY29va2llKSwoc2l6ZSksTF9QVEVfQ0FDSEVBQkxFLDEpCisjZGVmaW5lIGlvdW5tYXAoY29va2llKQkJCV9fYXJjaF9pb3VubWFwKGNvb2tpZSkKKyNlbmRpZgorCisvKgorICogY2FuIHRoZSBoYXJkd2FyZSBtYXAgdGhpcyBpbnRvIG9uZSBzZWdtZW50IG9yIG5vdCwgZ2l2ZW4gbm8gb3RoZXIKKyAqIGNvbnN0cmFpbnRzLgorICovCisjZGVmaW5lIEJJT1ZFQ19NRVJHRUFCTEUodmVjMSwgdmVjMikJXAorCSgoYnZlY190b19waHlzKCh2ZWMxKSkgKyAodmVjMSktPmJ2X2xlbikgPT0gYnZlY190b19waHlzKCh2ZWMyKSkpCisKKy8qCisgKiBDb252ZXJ0IGEgcGh5c2ljYWwgcG9pbnRlciB0byBhIHZpcnR1YWwga2VybmVsIHBvaW50ZXIgZm9yIC9kZXYvbWVtCisgKiBhY2Nlc3MKKyAqLworI2RlZmluZSB4bGF0ZV9kZXZfbWVtX3B0cihwKQlfX3ZhKHApCisKKy8qCisgKiBDb252ZXJ0IGEgdmlydHVhbCBjYWNoZWQgcG9pbnRlciB0byBhbiB1bmNhY2hlZCBwb2ludGVyCisgKi8KKyNkZWZpbmUgeGxhdGVfZGV2X2ttZW1fcHRyKHApCXAKKworI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KKyNlbmRpZgkvKiBfX0FTTV9BUk1fSU9fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2lvY3RsLmggYi9pbmNsdWRlL2FzbS1hcm0vaW9jdGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2JiN2QwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2lvY3RsLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIGxpbnV4L2lvY3RsLmggZm9yIExpbnV4IGJ5IEguSC4gQmVyZ21hbi4KKyAqLworCisjaWZuZGVmIF9BU01BUk1fSU9DVExfSAorI2RlZmluZSBfQVNNQVJNX0lPQ1RMX0gKKworLyogaW9jdGwgY29tbWFuZCBlbmNvZGluZzogMzIgYml0cyB0b3RhbCwgY29tbWFuZCBpbiBsb3dlciAxNiBiaXRzLAorICogc2l6ZSBvZiB0aGUgcGFyYW1ldGVyIHN0cnVjdHVyZSBpbiB0aGUgbG93ZXIgMTQgYml0cyBvZiB0aGUKKyAqIHVwcGVyIDE2IGJpdHMuCisgKiBFbmNvZGluZyB0aGUgc2l6ZSBvZiB0aGUgcGFyYW1ldGVyIHN0cnVjdHVyZSBpbiB0aGUgaW9jdGwgcmVxdWVzdAorICogaXMgdXNlZnVsIGZvciBjYXRjaGluZyBwcm9ncmFtcyBjb21waWxlZCB3aXRoIG9sZCB2ZXJzaW9ucworICogYW5kIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHVzZXIgc3BhY2Ugb3V0c2lkZSB0aGUgdXNlciBidWZmZXIgYXJlYS4KKyAqIFRoZSBoaWdoZXN0IDIgYml0cyBhcmUgcmVzZXJ2ZWQgZm9yIGluZGljYXRpbmcgdGhlIGBgYWNjZXNzIG1vZGUnJy4KKyAqIE5PVEU6IFRoaXMgbGltaXRzIHRoZSBtYXggcGFyYW1ldGVyIHNpemUgdG8gMTZrQiAtMSAhCisgKi8KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIGNvbXBhdGliaWxpdHkgYWNyb3NzIHRoZSB2YXJpb3VzIExpbnV4CisgKiBwbGF0Zm9ybXMuICBUaGUgaTM4NiBpb2N0bCBudW1iZXJpbmcgc2NoZW1lIGRvZXNuJ3QgcmVhbGx5IGVuZm9yY2UKKyAqIGEgdHlwZSBmaWVsZC4gIERlIGZhY3RvLCBob3dldmVyLCB0aGUgdG9wIDggYml0cyBvZiB0aGUgbG93ZXIgMTYKKyAqIGJpdHMgYXJlIGluZGVlZCB1c2VkIGFzIGEgdHlwZSBmaWVsZCwgc28gd2UgbWlnaHQganVzdCBhcyB3ZWxsIG1ha2UKKyAqIHRoaXMgZXhwbGljaXQgaGVyZS4gIFBsZWFzZSBiZSBzdXJlIHRvIHVzZSB0aGUgZGVjb2RpbmcgbWFjcm9zCisgKiBiZWxvdyBmcm9tIG5vdyBvbi4KKyAqLworI2RlZmluZSBfSU9DX05SQklUUwk4CisjZGVmaW5lIF9JT0NfVFlQRUJJVFMJOAorI2RlZmluZSBfSU9DX1NJWkVCSVRTCTE0CisjZGVmaW5lIF9JT0NfRElSQklUUwkyCisKKyNkZWZpbmUgX0lPQ19OUk1BU0sJKCgxIDw8IF9JT0NfTlJCSVRTKS0xKQorI2RlZmluZSBfSU9DX1RZUEVNQVNLCSgoMSA8PCBfSU9DX1RZUEVCSVRTKS0xKQorI2RlZmluZSBfSU9DX1NJWkVNQVNLCSgoMSA8PCBfSU9DX1NJWkVCSVRTKS0xKQorI2RlZmluZSBfSU9DX0RJUk1BU0sJKCgxIDw8IF9JT0NfRElSQklUUyktMSkKKworI2RlZmluZSBfSU9DX05SU0hJRlQJMAorI2RlZmluZSBfSU9DX1RZUEVTSElGVAkoX0lPQ19OUlNISUZUK19JT0NfTlJCSVRTKQorI2RlZmluZSBfSU9DX1NJWkVTSElGVAkoX0lPQ19UWVBFU0hJRlQrX0lPQ19UWVBFQklUUykKKyNkZWZpbmUgX0lPQ19ESVJTSElGVAkoX0lPQ19TSVpFU0hJRlQrX0lPQ19TSVpFQklUUykKKworLyoKKyAqIERpcmVjdGlvbiBiaXRzLgorICovCisjZGVmaW5lIF9JT0NfTk9ORQkwVQorI2RlZmluZSBfSU9DX1dSSVRFCTFVCisjZGVmaW5lIF9JT0NfUkVBRAkyVQorCisjZGVmaW5lIF9JT0MoZGlyLHR5cGUsbnIsc2l6ZSkgXAorCSgoKGRpcikgIDw8IF9JT0NfRElSU0hJRlQpIHwgXAorCSAoKHR5cGUpIDw8IF9JT0NfVFlQRVNISUZUKSB8IFwKKwkgKChucikgICA8PCBfSU9DX05SU0hJRlQpIHwgXAorCSAoKHNpemUpIDw8IF9JT0NfU0laRVNISUZUKSkKKworLyogdXNlZCB0byBjcmVhdGUgbnVtYmVycyAqLworI2RlZmluZSBfSU8odHlwZSxucikJCV9JT0MoX0lPQ19OT05FLCh0eXBlKSwobnIpLDApCisjZGVmaW5lIF9JT1IodHlwZSxucixzaXplKQlfSU9DKF9JT0NfUkVBRCwodHlwZSksKG5yKSxzaXplb2Yoc2l6ZSkpCisjZGVmaW5lIF9JT1codHlwZSxucixzaXplKQlfSU9DKF9JT0NfV1JJVEUsKHR5cGUpLChuciksc2l6ZW9mKHNpemUpKQorI2RlZmluZSBfSU9XUih0eXBlLG5yLHNpemUpCV9JT0MoX0lPQ19SRUFEfF9JT0NfV1JJVEUsKHR5cGUpLChuciksc2l6ZW9mKHNpemUpKQorCisvKiB1c2VkIHRvIGRlY29kZSBpb2N0bCBudW1iZXJzLi4gKi8KKyNkZWZpbmUgX0lPQ19ESVIobnIpCQkoKChucikgPj4gX0lPQ19ESVJTSElGVCkgJiBfSU9DX0RJUk1BU0spCisjZGVmaW5lIF9JT0NfVFlQRShucikJCSgoKG5yKSA+PiBfSU9DX1RZUEVTSElGVCkgJiBfSU9DX1RZUEVNQVNLKQorI2RlZmluZSBfSU9DX05SKG5yKQkJKCgobnIpID4+IF9JT0NfTlJTSElGVCkgJiBfSU9DX05STUFTSykKKyNkZWZpbmUgX0lPQ19TSVpFKG5yKQkJKCgobnIpID4+IF9JT0NfU0laRVNISUZUKSAmIF9JT0NfU0laRU1BU0spCisKKy8qIC4uLmFuZCBmb3IgdGhlIGRyaXZlcnMvc291bmQgZmlsZXMuLi4gKi8KKworI2RlZmluZSBJT0NfSU4JCShfSU9DX1dSSVRFIDw8IF9JT0NfRElSU0hJRlQpCisjZGVmaW5lIElPQ19PVVQJCShfSU9DX1JFQUQgPDwgX0lPQ19ESVJTSElGVCkKKyNkZWZpbmUgSU9DX0lOT1VUCSgoX0lPQ19XUklURXxfSU9DX1JFQUQpIDw8IF9JT0NfRElSU0hJRlQpCisjZGVmaW5lIElPQ1NJWkVfTUFTSwkoX0lPQ19TSVpFTUFTSyA8PCBfSU9DX1NJWkVTSElGVCkKKyNkZWZpbmUgSU9DU0laRV9TSElGVAkoX0lPQ19TSVpFU0hJRlQpCisKKyNlbmRpZiAvKiBfQVNNQVJNX0lPQ1RMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9pb2N0bHMuaCBiL2luY2x1ZGUvYXNtLWFybS9pb2N0bHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjlhN2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2lvY3Rscy5oCkBAIC0wLDAgKzEsODAgQEAKKyNpZm5kZWYgX19BU01fQVJNX0lPQ1RMU19ICisjZGVmaW5lIF9fQVNNX0FSTV9JT0NUTFNfSAorCisjaW5jbHVkZSA8YXNtL2lvY3RsLmg+CisKKy8qIDB4NTQgaXMganVzdCBhIG1hZ2ljIG51bWJlciB0byBtYWtlIHRoZXNlIHJlbGF0aXZlbHkgdW5pcXVlICgnVCcpICovCisKKyNkZWZpbmUgVENHRVRTCQkweDU0MDEKKyNkZWZpbmUgVENTRVRTCQkweDU0MDIKKyNkZWZpbmUgVENTRVRTVwkJMHg1NDAzCisjZGVmaW5lIFRDU0VUU0YJCTB4NTQwNAorI2RlZmluZSBUQ0dFVEEJCTB4NTQwNQorI2RlZmluZSBUQ1NFVEEJCTB4NTQwNgorI2RlZmluZSBUQ1NFVEFXCQkweDU0MDcKKyNkZWZpbmUgVENTRVRBRgkJMHg1NDA4CisjZGVmaW5lIFRDU0JSSwkJMHg1NDA5CisjZGVmaW5lIFRDWE9OQwkJMHg1NDBBCisjZGVmaW5lIFRDRkxTSAkJMHg1NDBCCisjZGVmaW5lIFRJT0NFWENMCTB4NTQwQworI2RlZmluZSBUSU9DTlhDTAkweDU0MEQKKyNkZWZpbmUgVElPQ1NDVFRZCTB4NTQwRQorI2RlZmluZSBUSU9DR1BHUlAJMHg1NDBGCisjZGVmaW5lIFRJT0NTUEdSUAkweDU0MTAKKyNkZWZpbmUgVElPQ09VVFEJMHg1NDExCisjZGVmaW5lIFRJT0NTVEkJCTB4NTQxMgorI2RlZmluZSBUSU9DR1dJTlNaCTB4NTQxMworI2RlZmluZSBUSU9DU1dJTlNaCTB4NTQxNAorI2RlZmluZSBUSU9DTUdFVAkweDU0MTUKKyNkZWZpbmUgVElPQ01CSVMJMHg1NDE2CisjZGVmaW5lIFRJT0NNQklDCTB4NTQxNworI2RlZmluZSBUSU9DTVNFVAkweDU0MTgKKyNkZWZpbmUgVElPQ0dTT0ZUQ0FSCTB4NTQxOQorI2RlZmluZSBUSU9DU1NPRlRDQVIJMHg1NDFBCisjZGVmaW5lIEZJT05SRUFECTB4NTQxQgorI2RlZmluZSBUSU9DSU5RCQlGSU9OUkVBRAorI2RlZmluZSBUSU9DTElOVVgJMHg1NDFDCisjZGVmaW5lIFRJT0NDT05TCTB4NTQxRAorI2RlZmluZSBUSU9DR1NFUklBTAkweDU0MUUKKyNkZWZpbmUgVElPQ1NTRVJJQUwJMHg1NDFGCisjZGVmaW5lIFRJT0NQS1QJCTB4NTQyMAorI2RlZmluZSBGSU9OQklPCQkweDU0MjEKKyNkZWZpbmUgVElPQ05PVFRZCTB4NTQyMgorI2RlZmluZSBUSU9DU0VURAkweDU0MjMKKyNkZWZpbmUgVElPQ0dFVEQJMHg1NDI0CisjZGVmaW5lIFRDU0JSS1AJCTB4NTQyNQkvKiBOZWVkZWQgZm9yIFBPU0lYIHRjc2VuZGJyZWFrKCkgKi8KKyNkZWZpbmUgVElPQ1NCUksJMHg1NDI3ICAvKiBCU0QgY29tcGF0aWJpbGl0eSAqLworI2RlZmluZSBUSU9DQ0JSSwkweDU0MjggIC8qIEJTRCBjb21wYXRpYmlsaXR5ICovCisjZGVmaW5lIFRJT0NHU0lECTB4NTQyOSAgLyogUmV0dXJuIHRoZSBzZXNzaW9uIElEIG9mIEZEICovCisjZGVmaW5lIFRJT0NHUFROCV9JT1IoJ1QnLDB4MzAsIHVuc2lnbmVkIGludCkgLyogR2V0IFB0eSBOdW1iZXIgKG9mIHB0eS1tdXggZGV2aWNlKSAqLworI2RlZmluZSBUSU9DU1BUTENLCV9JT1coJ1QnLDB4MzEsIGludCkgIC8qIExvY2svdW5sb2NrIFB0eSAqLworCisjZGVmaW5lIEZJT05DTEVYCTB4NTQ1MCAgLyogdGhlc2UgbnVtYmVycyBuZWVkIHRvIGJlIGFkanVzdGVkLiAqLworI2RlZmluZSBGSU9DTEVYCQkweDU0NTEKKyNkZWZpbmUgRklPQVNZTkMJMHg1NDUyCisjZGVmaW5lIFRJT0NTRVJDT05GSUcJMHg1NDUzCisjZGVmaW5lIFRJT0NTRVJHV0lMRAkweDU0NTQKKyNkZWZpbmUgVElPQ1NFUlNXSUxECTB4NTQ1NQorI2RlZmluZSBUSU9DR0xDS1RSTUlPUwkweDU0NTYKKyNkZWZpbmUgVElPQ1NMQ0tUUk1JT1MJMHg1NDU3CisjZGVmaW5lIFRJT0NTRVJHU1RSVUNUCTB4NTQ1OCAvKiBGb3IgZGVidWdnaW5nIG9ubHkgKi8KKyNkZWZpbmUgVElPQ1NFUkdFVExTUiAgIDB4NTQ1OSAvKiBHZXQgbGluZSBzdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElPQ1NFUkdFVE1VTFRJIDB4NTQ1QSAvKiBHZXQgbXVsdGlwb3J0IGNvbmZpZyAgKi8KKyNkZWZpbmUgVElPQ1NFUlNFVE1VTFRJIDB4NTQ1QiAvKiBTZXQgbXVsdGlwb3J0IGNvbmZpZyAqLworCisjZGVmaW5lIFRJT0NNSVdBSVQJMHg1NDVDCS8qIHdhaXQgZm9yIGEgY2hhbmdlIG9uIHNlcmlhbCBpbnB1dCBsaW5lKHMpICovCisjZGVmaW5lIFRJT0NHSUNPVU5UCTB4NTQ1RAkvKiByZWFkIHNlcmlhbCBwb3J0IGlubGluZSBpbnRlcnJ1cHQgY291bnRzICovCisjZGVmaW5lIEZJT1FTSVpFCTB4NTQ1RQorCisvKiBVc2VkIGZvciBwYWNrZXQgbW9kZSAqLworI2RlZmluZSBUSU9DUEtUX0RBVEEJCSAwCisjZGVmaW5lIFRJT0NQS1RfRkxVU0hSRUFECSAxCisjZGVmaW5lIFRJT0NQS1RfRkxVU0hXUklURQkgMgorI2RlZmluZSBUSU9DUEtUX1NUT1AJCSA0CisjZGVmaW5lIFRJT0NQS1RfU1RBUlQJCSA4CisjZGVmaW5lIFRJT0NQS1RfTk9TVE9QCQkxNgorI2RlZmluZSBUSU9DUEtUX0RPU1RPUAkJMzIKKworI2RlZmluZSBUSU9DU0VSX1RFTVQJMHgwMQkvKiBUcmFuc21pdHRlciBwaHlzaWNhbGx5IGVtcHR5ICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2lwYy5oIGIvaW5jbHVkZS9hc20tYXJtL2lwYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NmUzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaXBjLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPGFzbS1nZW5lcmljL2lwYy5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2lwY2J1Zi5oIGIvaW5jbHVkZS9hc20tYXJtL2lwY2J1Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjgzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vaXBjYnVmLmgKQEAgLTAsMCArMSwyOSBAQAorI2lmbmRlZiBfX0FTTUFSTV9JUENCVUZfSAorI2RlZmluZSBfX0FTTUFSTV9JUENCVUZfSAorCisvKgorICogVGhlIGlwYzY0X3Blcm0gc3RydWN0dXJlIGZvciBhcm0gYXJjaGl0ZWN0dXJlLgorICogTm90ZSBleHRyYSBwYWRkaW5nIGJlY2F1c2UgdGhpcyBzdHJ1Y3R1cmUgaXMgcGFzc2VkIGJhY2sgYW5kIGZvcnRoCisgKiBiZXR3ZWVuIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4KKyAqCisgKiBQYWQgc3BhY2UgaXMgbGVmdCBmb3I6CisgKiAtIDMyLWJpdCBtb2RlX3QgYW5kIHNlcQorICogLSAyIG1pc2NlbGxhbmVvdXMgMzItYml0IHZhbHVlcworICovCisKK3N0cnVjdCBpcGM2NF9wZXJtCit7CisJX19rZXJuZWxfa2V5X3QJCWtleTsKKwlfX2tlcm5lbF91aWQzMl90CXVpZDsKKwlfX2tlcm5lbF9naWQzMl90CWdpZDsKKwlfX2tlcm5lbF91aWQzMl90CWN1aWQ7CisJX19rZXJuZWxfZ2lkMzJfdAljZ2lkOworCV9fa2VybmVsX21vZGVfdAkJbW9kZTsKKwl1bnNpZ25lZCBzaG9ydAkJX19wYWQxOworCXVuc2lnbmVkIHNob3J0CQlzZXE7CisJdW5zaWduZWQgc2hvcnQJCV9fcGFkMjsKKwl1bnNpZ25lZCBsb25nCQlfX3VudXNlZDE7CisJdW5zaWduZWQgbG9uZwkJX191bnVzZWQyOworfTsKKworI2VuZGlmIC8qIF9fQVNNQVJNX0lQQ0JVRl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaXJxLmggYi9pbmNsdWRlL2FzbS1hcm0vaXJxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3OTEyZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9pcnEuaApAQCAtMCwwICsxLDUxIEBACisjaWZuZGVmIF9fQVNNX0FSTV9JUlFfSAorI2RlZmluZSBfX0FTTV9BUk1fSVJRX0gKKworI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KKworI2lmbmRlZiBpcnFfY2Fub25pY2FsaXplCisjZGVmaW5lIGlycV9jYW5vbmljYWxpemUoaSkJKGkpCisjZW5kaWYKKworI2lmbmRlZiBOUl9JUlFTCisjZGVmaW5lIE5SX0lSUVMJMTI4CisjZW5kaWYKKworLyoKKyAqIFVzZSB0aGlzIHZhbHVlIHRvIGluZGljYXRlIGxhY2sgb2YgaW50ZXJydXB0CisgKiBjYXBhYmlsaXR5CisgKi8KKyNpZm5kZWYgTk9fSVJRCisjZGVmaW5lIE5PX0lSUQkoKHVuc2lnbmVkIGludCkoLTEpKQorI2VuZGlmCisKK3N0cnVjdCBpcnFhY3Rpb247CisKK2V4dGVybiB2b2lkIGRpc2FibGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOworZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnEodW5zaWduZWQgaW50KTsKK2V4dGVybiB2b2lkIGVuYWJsZV9pcnEodW5zaWduZWQgaW50KTsKKworI2RlZmluZSBfX0lSUVRfRkFMRURHRQkoMSA8PCAwKQorI2RlZmluZSBfX0lSUVRfUklTRURHRQkoMSA8PCAxKQorI2RlZmluZSBfX0lSUVRfTE9XTFZMCSgxIDw8IDIpCisjZGVmaW5lIF9fSVJRVF9ISUdITFZMCSgxIDw8IDMpCisKKyNkZWZpbmUgSVJRVF9OT0VER0UJKDApCisjZGVmaW5lIElSUVRfUklTSU5HCShfX0lSUVRfUklTRURHRSkKKyNkZWZpbmUgSVJRVF9GQUxMSU5HCShfX0lSUVRfRkFMRURHRSkKKyNkZWZpbmUgSVJRVF9CT1RIRURHRQkoX19JUlFUX1JJU0VER0V8X19JUlFUX0ZBTEVER0UpCisjZGVmaW5lIElSUVRfTE9XCShfX0lSUVRfTE9XTFZMKQorI2RlZmluZSBJUlFUX0hJR0gJKF9fSVJRVF9ISUdITFZMKQorI2RlZmluZSBJUlFUX1BST0JFCSgxIDw8IDQpCisKK2ludCBzZXRfaXJxX3R5cGUodW5zaWduZWQgaW50IGlycSwgdW5zaWduZWQgaW50IHR5cGUpOwordm9pZCBkaXNhYmxlX2lycV93YWtlKHVuc2lnbmVkIGludCBpcnEpOwordm9pZCBlbmFibGVfaXJxX3dha2UodW5zaWduZWQgaW50IGlycSk7CitpbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCwgc3RydWN0IGlycWFjdGlvbiAqKTsKKworc3RydWN0IGlycWFjdGlvbjsKK3N0cnVjdCBwdF9yZWdzOworaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2ttYXBfdHlwZXMuaCBiL2luY2x1ZGUvYXNtLWFybS9rbWFwX3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVkZWYxMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9rbWFwX3R5cGVzLmgKQEAgLTAsMCArMSwyNCBAQAorI2lmbmRlZiBfX0FSTV9LTUFQX1RZUEVTX0gKKyNkZWZpbmUgX19BUk1fS01BUF9UWVBFU19ICisKKy8qCisgKiBUaGlzIGlzIHRoZSAiYmFyZSBtaW5pbXVtIi4gIEFJTyBzZWVtcyB0byByZXF1aXJlIHRoaXMuCisgKi8KK2VudW0ga21fdHlwZSB7CisJS01fQk9VTkNFX1JFQUQsCisJS01fU0tCX1NVTlJQQ19EQVRBLAorCUtNX1NLQl9EQVRBX1NPRlRJUlEsCisJS01fVVNFUjAsCisJS01fVVNFUjEsCisJS01fQklPX1NSQ19JUlEsCisJS01fQklPX0RTVF9JUlEsCisJS01fUFRFMCwKKwlLTV9QVEUxLAorCUtNX0lSUTAsCisJS01fSVJRMSwKKwlLTV9TT0ZUSVJRMCwKKwlLTV9TT0ZUSVJRMSwKKwlLTV9UWVBFX05SCit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9sZWRzLmggYi9pbmNsdWRlL2FzbS1hcm0vbGVkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4Y2U0MTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbGVkcy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2xlZHMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTggUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgRXZlbnQtZHJpdmVuIGludGVyZmFjZSBmb3IgTEVEcyBvbiBtYWNoaW5lcworICogIEFkZGVkIGxlZF9zdGFydCBhbmQgbGVkX3N0b3AtIEFsZXggSG9sZGVuLCAyOHRoIERlYyAxOTk4LgorICovCisjaWZuZGVmIEFTTV9BUk1fTEVEU19ICisjZGVmaW5lIEFTTV9BUk1fTEVEU19ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKwordHlwZWRlZiBlbnVtIHsKKwlsZWRfaWRsZV9zdGFydCwKKwlsZWRfaWRsZV9lbmQsCisJbGVkX3RpbWVyLAorCWxlZF9zdGFydCwKKwlsZWRfc3RvcCwKKwlsZWRfY2xhaW0sCQkvKiBvdmVycmlkZSBpZGxlICYgdGltZXIgbGVkcyAqLworCWxlZF9yZWxlYXNlLAkJLyogcmVzdG9yZSBpZGxlICYgdGltZXIgbGVkcyAqLworCWxlZF9zdGFydF90aW1lcl9tb2RlLAorCWxlZF9zdG9wX3RpbWVyX21vZGUsCisJbGVkX2dyZWVuX29uLAorCWxlZF9ncmVlbl9vZmYsCisJbGVkX2FtYmVyX29uLAorCWxlZF9hbWJlcl9vZmYsCisJbGVkX3JlZF9vbiwKKwlsZWRfcmVkX29mZiwKKwlsZWRfYmx1ZV9vbiwKKwlsZWRfYmx1ZV9vZmYsCisJLyoKKwkgKiBJIHdhbnQgdGhpcyBiZXR3ZWVuIGxlZF90aW1lciBhbmQgbGVkX3N0YXJ0LCBidXQKKwkgKiBzb21lb25lIGhhcyBkZWNpZGVkIHRvIGV4cG9ydCB0aGlzIHRvIHVzZXIgc3BhY2UKKwkgKi8KKwlsZWRfaGFsdGVkCit9IGxlZF9ldmVudF90OworCisvKiBVc2UgdGhpcyByb3V0aW5lIHRvIGhhbmRsZSBMRURzICovCisKKyNpZmRlZiBDT05GSUdfTEVEUworZXh0ZXJuIHZvaWQgKCpsZWRzX2V2ZW50KShsZWRfZXZlbnRfdCk7CisjZWxzZQorI2RlZmluZSBsZWRzX2V2ZW50KGUpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbGltaXRzLmggYi9pbmNsdWRlL2FzbS1hcm0vbGltaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkOGM2NgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9saW1pdHMuaApAQCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9fQVNNX1BJUEVfSAorI2RlZmluZSBfX0FTTV9QSVBFX0gKKworI2lmbmRlZiBQQUdFX1NJWkUKKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2VuZGlmCisKKyNkZWZpbmUgUElQRV9CVUYJUEFHRV9TSVpFCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbGlua2FnZS5oIGIvaW5jbHVkZS9hc20tYXJtL2xpbmthZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmU0YjRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2xpbmthZ2UuaApAQCAtMCwwICsxLDcgQEAKKyNpZm5kZWYgX19BU01fTElOS0FHRV9ICisjZGVmaW5lIF9fQVNNX0xJTktBR0VfSAorCisjZGVmaW5lIF9fQUxJR04gLmFsaWduIDAKKyNkZWZpbmUgX19BTElHTl9TVFIgIi5hbGlnbiAwIgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9sb2NhbC5oIGIvaW5jbHVkZS9hc20tYXJtL2xvY2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExYzUzMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9sb2NhbC5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9sb2NhbC5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2xvY2tzLmggYi9pbmNsdWRlL2FzbS1hcm0vbG9ja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjYyOThmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2xvY2tzLmgKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL2xvY2tzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIEludGVycnVwdCBzYWZlIGxvY2tpbmcgYXNzZW1ibGVyLiAKKyAqLworI2lmbmRlZiBfX0FTTV9QUk9DX0xPQ0tTX0gKKyNkZWZpbmUgX19BU01fUFJPQ19MT0NLU19ICisKKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorCisjZGVmaW5lIF9fZG93bl9vcChwdHIsZmFpbCkJCQlcCisJKHsJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgZG93bl9vcFxuIgkJCQlcCisiMToJbGRyZXgJbHIsIFslMF1cbiIJCQlcCisiCXN1YglsciwgbHIsICUxXG4iCQkJXAorIglzdHJleAlpcCwgbHIsIFslMF1cbiIJCQlcCisiCXRlcQlpcCwgIzBcbiIJCQlcCisiCWJuZQkxYlxuIgkJCQlcCisiCXRlcQlsciwgIzBcbiIJCQlcCisiCW1vdm1pCWlwLCAlMFxuIgkJCVwKKyIJYmxtaQkiICNmYWlsCQkJCVwKKwk6CQkJCQlcCisJOiAiciIgKHB0ciksICJJIiAoMSkJCQlcCisJOiAiaXAiLCAibHIiLCAiY2MiLCAibWVtb3J5Iik7CQlcCisJfSkKKworI2RlZmluZSBfX2Rvd25fb3BfcmV0KHB0cixmYWlsKQkJCVwKKwkoewkJCQkJXAorCQl1bnNpZ25lZCBpbnQgcmV0OwkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkiQCBkb3duX29wX3JldFxuIgkJCVwKKyIxOglsZHJleAlsciwgWyUxXVxuIgkJCVwKKyIJc3ViCWxyLCBsciwgJTJcbiIJCQlcCisiCXN0cmV4CWlwLCBsciwgWyUxXVxuIgkJCVwKKyIJdGVxCWlwLCAjMFxuIgkJCVwKKyIJYm5lCTFiXG4iCQkJCVwKKyIJdGVxCWxyLCAjMFxuIgkJCVwKKyIJbW92bWkJaXAsICUxXG4iCQkJXAorIgltb3ZwbAlpcCwgIzBcbiIJCQlcCisiCWJsbWkJIiAjZmFpbCAiXG4iCQkJXAorIgltb3YJJTAsIGlwIgkJCQlcCisJOiAiPSZyIiAocmV0KQkJCQlcCisJOiAiciIgKHB0ciksICJJIiAoMSkJCQlcCisJOiAiaXAiLCAibHIiLCAiY2MiLCAibWVtb3J5Iik7CQlcCisJcmV0OwkJCQkJXAorCX0pCisKKyNkZWZpbmUgX191cF9vcChwdHIsd2FrZSkJCQlcCisJKHsJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgdXBfb3BcbiIJCQkJXAorIjE6CWxkcmV4CWxyLCBbJTBdXG4iCQkJXAorIglhZGQJbHIsIGxyLCAlMVxuIgkJCVwKKyIJc3RyZXgJaXAsIGxyLCBbJTBdXG4iCQkJXAorIgl0ZXEJaXAsICMwXG4iCQkJXAorIglibmUJMWJcbiIJCQkJXAorIgl0ZXEJbHIsICMwXG4iCQkJXAorIgltb3ZsZQlpcCwgJTBcbiIJCQlcCisiCWJsbGUJIiAjd2FrZQkJCQlcCisJOgkJCQkJXAorCTogInIiIChwdHIpLCAiSSIgKDEpCQkJXAorCTogImlwIiwgImxyIiwgImNjIiwgIm1lbW9yeSIpOwkJXAorCX0pCisKKy8qCisgKiBUaGUgdmFsdWUgMHgwMTAwMDAwMCBzdXBwb3J0cyB1cCB0byAxMjggcHJvY2Vzc29ycyBhbmQKKyAqIGxvdHMgb2YgcHJvY2Vzc2VzLiAgQklBUyBtdXN0IGJlIGNob3NlbiBzdWNoIHRoYXQgc3ViJ2luZworICogQklBUyBvbmNlIHBlciBDUFUgd2lsbCByZXN1bHQgaW4gdGhlIGxvbmcgcmVtYWluaW5nCisgKiBuZWdhdGl2ZS4KKyAqLworI2RlZmluZSBSV19MT0NLX0JJQVMgICAgICAweDAxMDAwMDAwCisjZGVmaW5lIFJXX0xPQ0tfQklBU19TVFIgIjB4MDEwMDAwMDAiCisKKyNkZWZpbmUgX19kb3duX29wX3dyaXRlKHB0cixmYWlsKQkJXAorCSh7CQkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCSJAIGRvd25fb3Bfd3JpdGVcbiIJCQlcCisiMToJbGRyZXgJbHIsIFslMF1cbiIJCQlcCisiCXN1YglsciwgbHIsICUxXG4iCQkJXAorIglzdHJleAlpcCwgbHIsIFslMF1cbiIJCQlcCisiCXRlcQlpcCwgIzBcbiIJCQlcCisiCWJuZQkxYlxuIgkJCQlcCisiCXRlcQlsciwgIzBcbiIJCQlcCisiCW1vdm5lCWlwLCAlMFxuIgkJCVwKKyIJYmxuZQkiICNmYWlsCQkJCVwKKwk6CQkJCQlcCisJOiAiciIgKHB0ciksICJJIiAoUldfTE9DS19CSUFTKQkJXAorCTogImlwIiwgImxyIiwgImNjIiwgIm1lbW9yeSIpOwkJXAorCX0pCisKKyNkZWZpbmUgX191cF9vcF93cml0ZShwdHIsd2FrZSkJCQlcCisJKHsJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgdXBfb3BfcmVhZFxuIgkJCVwKKyIxOglsZHJleAlsciwgWyUwXVxuIgkJCVwKKyIJYWRkCWxyLCBsciwgJTFcbiIJCQlcCisiCXN0cmV4CWlwLCBsciwgWyUwXVxuIgkJCVwKKyIJdGVxCWlwLCAjMFxuIgkJCVwKKyIJYm5lCTFiXG4iCQkJCVwKKyIJbW92Y3MJaXAsICUwXG4iCQkJXAorIglibGNzCSIgI3dha2UJCQkJXAorCToJCQkJCVwKKwk6ICJyIiAocHRyKSwgIkkiIChSV19MT0NLX0JJQVMpCQlcCisJOiAiaXAiLCAibHIiLCAiY2MiLCAibWVtb3J5Iik7CQlcCisJfSkKKworI2RlZmluZSBfX2Rvd25fb3BfcmVhZChwdHIsZmFpbCkJCVwKKwlfX2Rvd25fb3AocHRyLCBmYWlsKQorCisjZGVmaW5lIF9fdXBfb3BfcmVhZChwdHIsd2FrZSkJCQlcCisJKHsJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgdXBfb3BfcmVhZFxuIgkJCVwKKyIxOglsZHJleAlsciwgWyUwXVxuIgkJCVwKKyIJYWRkCWxyLCBsciwgJTFcbiIJCQlcCisiCXN0cmV4CWlwLCBsciwgWyUwXVxuIgkJCVwKKyIJdGVxCWlwLCAjMFxuIgkJCVwKKyIJYm5lCTFiXG4iCQkJCVwKKyIJdGVxCWxyLCAjMFxuIgkJCVwKKyIJbW92ZXEJaXAsICUwXG4iCQkJXAorIglibGVxCSIgI3dha2UJCQkJXAorCToJCQkJCVwKKwk6ICJyIiAocHRyKSwgIkkiICgxKQkJCVwKKwk6ICJpcCIsICJsciIsICJjYyIsICJtZW1vcnkiKTsJCVwKKwl9KQorCisjZWxzZQorCisjZGVmaW5lIF9fZG93bl9vcChwdHIsZmFpbCkJCQlcCisJKHsJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgZG93bl9vcFxuIgkJCQlcCisiCW1ycwlpcCwgY3BzclxuIgkJCVwKKyIJb3JyCWxyLCBpcCwgIzEyOFxuIgkJCVwKKyIJbXNyCWNwc3JfYywgbHJcbiIJCQlcCisiCWxkcglsciwgWyUwXVxuIgkJCVwKKyIJc3VicwlsciwgbHIsICUxXG4iCQkJXAorIglzdHIJbHIsIFslMF1cbiIJCQlcCisiCW1zcgljcHNyX2MsIGlwXG4iCQkJXAorIgltb3ZtaQlpcCwgJTBcbiIJCQlcCisiCWJsbWkJIiAjZmFpbAkJCQlcCisJOgkJCQkJXAorCTogInIiIChwdHIpLCAiSSIgKDEpCQkJXAorCTogImlwIiwgImxyIiwgImNjIiwgIm1lbW9yeSIpOwkJXAorCX0pCisKKyNkZWZpbmUgX19kb3duX29wX3JldChwdHIsZmFpbCkJCQlcCisJKHsJCQkJCVwKKwkJdW5zaWduZWQgaW50IHJldDsJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQlcCisJIkAgZG93bl9vcF9yZXRcbiIJCQlcCisiCW1ycwlpcCwgY3BzclxuIgkJCVwKKyIJb3JyCWxyLCBpcCwgIzEyOFxuIgkJCVwKKyIJbXNyCWNwc3JfYywgbHJcbiIJCQlcCisiCWxkcglsciwgWyUxXVxuIgkJCVwKKyIJc3VicwlsciwgbHIsICUyXG4iCQkJXAorIglzdHIJbHIsIFslMV1cbiIJCQlcCisiCW1zcgljcHNyX2MsIGlwXG4iCQkJXAorIgltb3ZtaQlpcCwgJTFcbiIJCQlcCisiCW1vdnBsCWlwLCAjMFxuIgkJCVwKKyIJYmxtaQkiICNmYWlsICJcbiIJCQlcCisiCW1vdgklMCwgaXAiCQkJCVwKKwk6ICI9JnIiIChyZXQpCQkJCVwKKwk6ICJyIiAocHRyKSwgIkkiICgxKQkJCVwKKwk6ICJpcCIsICJsciIsICJjYyIsICJtZW1vcnkiKTsJCVwKKwlyZXQ7CQkJCQlcCisJfSkKKworI2RlZmluZSBfX3VwX29wKHB0cix3YWtlKQkJCVwKKwkoewkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkiQCB1cF9vcFxuIgkJCQlcCisiCW1ycwlpcCwgY3BzclxuIgkJCVwKKyIJb3JyCWxyLCBpcCwgIzEyOFxuIgkJCVwKKyIJbXNyCWNwc3JfYywgbHJcbiIJCQlcCisiCWxkcglsciwgWyUwXVxuIgkJCVwKKyIJYWRkcwlsciwgbHIsICUxXG4iCQkJXAorIglzdHIJbHIsIFslMF1cbiIJCQlcCisiCW1zcgljcHNyX2MsIGlwXG4iCQkJXAorIgltb3ZsZQlpcCwgJTBcbiIJCQlcCisiCWJsbGUJIiAjd2FrZQkJCQlcCisJOgkJCQkJXAorCTogInIiIChwdHIpLCAiSSIgKDEpCQkJXAorCTogImlwIiwgImxyIiwgImNjIiwgIm1lbW9yeSIpOwkJXAorCX0pCisKKy8qCisgKiBUaGUgdmFsdWUgMHgwMTAwMDAwMCBzdXBwb3J0cyB1cCB0byAxMjggcHJvY2Vzc29ycyBhbmQKKyAqIGxvdHMgb2YgcHJvY2Vzc2VzLiAgQklBUyBtdXN0IGJlIGNob3NlbiBzdWNoIHRoYXQgc3ViJ2luZworICogQklBUyBvbmNlIHBlciBDUFUgd2lsbCByZXN1bHQgaW4gdGhlIGxvbmcgcmVtYWluaW5nCisgKiBuZWdhdGl2ZS4KKyAqLworI2RlZmluZSBSV19MT0NLX0JJQVMgICAgICAweDAxMDAwMDAwCisjZGVmaW5lIFJXX0xPQ0tfQklBU19TVFIgIjB4MDEwMDAwMDAiCisKKyNkZWZpbmUgX19kb3duX29wX3dyaXRlKHB0cixmYWlsKQkJXAorCSh7CQkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCSJAIGRvd25fb3Bfd3JpdGVcbiIJCQlcCisiCW1ycwlpcCwgY3BzclxuIgkJCVwKKyIJb3JyCWxyLCBpcCwgIzEyOFxuIgkJCVwKKyIJbXNyCWNwc3JfYywgbHJcbiIJCQlcCisiCWxkcglsciwgWyUwXVxuIgkJCVwKKyIJc3VicwlsciwgbHIsICUxXG4iCQkJXAorIglzdHIJbHIsIFslMF1cbiIJCQlcCisiCW1zcgljcHNyX2MsIGlwXG4iCQkJXAorIgltb3ZuZQlpcCwgJTBcbiIJCQlcCisiCWJsbmUJIiAjZmFpbAkJCQlcCisJOgkJCQkJXAorCTogInIiIChwdHIpLCAiSSIgKFJXX0xPQ0tfQklBUykJCVwKKwk6ICJpcCIsICJsciIsICJjYyIsICJtZW1vcnkiKTsJCVwKKwl9KQorCisjZGVmaW5lIF9fdXBfb3Bfd3JpdGUocHRyLHdha2UpCQkJXAorCSh7CQkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJXAorCSJAIHVwX29wX3JlYWRcbiIJCQlcCisiCW1ycwlpcCwgY3BzclxuIgkJCVwKKyIJb3JyCWxyLCBpcCwgIzEyOFxuIgkJCVwKKyIJbXNyCWNwc3JfYywgbHJcbiIJCQlcCisiCWxkcglsciwgWyUwXVxuIgkJCVwKKyIJYWRkcwlsciwgbHIsICUxXG4iCQkJXAorIglzdHIJbHIsIFslMF1cbiIJCQlcCisiCW1zcgljcHNyX2MsIGlwXG4iCQkJXAorIgltb3ZjcwlpcCwgJTBcbiIJCQlcCisiCWJsY3MJIiAjd2FrZQkJCQlcCisJOgkJCQkJXAorCTogInIiIChwdHIpLCAiSSIgKFJXX0xPQ0tfQklBUykJCVwKKwk6ICJpcCIsICJsciIsICJjYyIsICJtZW1vcnkiKTsJCVwKKwl9KQorCisjZGVmaW5lIF9fZG93bl9vcF9yZWFkKHB0cixmYWlsKQkJXAorCV9fZG93bl9vcChwdHIsIGZhaWwpCisKKyNkZWZpbmUgX191cF9vcF9yZWFkKHB0cix3YWtlKQkJCVwKKwkoewkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCVwKKwkiQCB1cF9vcF9yZWFkXG4iCQkJXAorIgltcnMJaXAsIGNwc3JcbiIJCQlcCisiCW9ycglsciwgaXAsICMxMjhcbiIJCQlcCisiCW1zcgljcHNyX2MsIGxyXG4iCQkJXAorIglsZHIJbHIsIFslMF1cbiIJCQlcCisiCWFkZHMJbHIsIGxyLCAlMVxuIgkJCVwKKyIJc3RyCWxyLCBbJTBdXG4iCQkJXAorIgltc3IJY3Bzcl9jLCBpcFxuIgkJCVwKKyIJbW92ZXEJaXAsICUwXG4iCQkJXAorIglibGVxCSIgI3dha2UJCQkJXAorCToJCQkJCVwKKwk6ICJyIiAocHRyKSwgIkkiICgxKQkJCVwKKwk6ICJpcCIsICJsciIsICJjYyIsICJtZW1vcnkiKTsJCVwKKwl9KQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWFjaC9hcmNoLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9hcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzMmU5MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL2FyY2guaApAQCAtMCwwICsxLDkyIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tYWNoL2FyY2guaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCitzdHJ1Y3QgdGFnOworc3RydWN0IG1lbWluZm87CitzdHJ1Y3Qgc3lzX3RpbWVyOworCitzdHJ1Y3QgbWFjaGluZV9kZXNjIHsKKwkvKgorCSAqIE5vdGUhIFRoZSBmaXJzdCBmaXZlIGVsZW1lbnRzIGFyZSB1c2VkCisJICogYnkgYXNzZW1ibGVyIGNvZGUgaW4gaGVhZC1hcm12LlMKKwkgKi8KKwl1bnNpZ25lZCBpbnQJCW5yOwkJLyogYXJjaGl0ZWN0dXJlIG51bWJlcgkqLworCXVuc2lnbmVkIGludAkJcGh5c19yYW07CS8qIHN0YXJ0IG9mIHBoeXNpY2FsIHJhbSAqLworCXVuc2lnbmVkIGludAkJcGh5c19pbzsJLyogc3RhcnQgb2YgcGh5c2ljYWwgaW8JKi8KKwl1bnNpZ25lZCBpbnQJCWlvX3BnX29mZnN0OwkvKiBieXRlIG9mZnNldCBmb3IgaW8gCisJCQkJCQkgKiBwYWdlIHRhYmUgZW50cnkJKi8KKworCWNvbnN0IGNoYXIJCSpuYW1lOwkJLyogYXJjaGl0ZWN0dXJlIG5hbWUJKi8KKwl1bnNpZ25lZCBpbnQJCXBhcmFtX29mZnNldDsJLyogcGFyYW1ldGVyIHBhZ2UJKi8KKworCXVuc2lnbmVkIGludAkJdmlkZW9fc3RhcnQ7CS8qIHN0YXJ0IG9mIHZpZGVvIFJBTQkqLworCXVuc2lnbmVkIGludAkJdmlkZW9fZW5kOwkvKiBlbmQgb2YgdmlkZW8gUkFNCSovCisKKwl1bnNpZ25lZCBpbnQJCXJlc2VydmVfbHAwIDoxOwkvKiBuZXZlciBoYXMgbHAwCSovCisJdW5zaWduZWQgaW50CQlyZXNlcnZlX2xwMSA6MTsJLyogbmV2ZXIgaGFzIGxwMQkqLworCXVuc2lnbmVkIGludAkJcmVzZXJ2ZV9scDIgOjE7CS8qIG5ldmVyIGhhcyBscDIJKi8KKwl1bnNpZ25lZCBpbnQJCXNvZnRfcmVib290IDoxOwkvKiBzb2Z0IHJlYm9vdAkJKi8KKwl2b2lkCQkJKCpmaXh1cCkoc3RydWN0IG1hY2hpbmVfZGVzYyAqLAorCQkJCQkgc3RydWN0IHRhZyAqLCBjaGFyICoqLAorCQkJCQkgc3RydWN0IG1lbWluZm8gKik7CisJdm9pZAkJCSgqbWFwX2lvKSh2b2lkKTsvKiBJTyBtYXBwaW5nIGZ1bmN0aW9uCSovCisJdm9pZAkJCSgqaW5pdF9pcnEpKHZvaWQpOworCXN0cnVjdCBzeXNfdGltZXIJKnRpbWVyOwkJLyogc3lzdGVtIHRpY2sgdGltZXIJKi8KKwl2b2lkCQkJKCppbml0X21hY2hpbmUpKHZvaWQpOworfTsKKworLyoKKyAqIFNldCBvZiBtYWNyb3MgdG8gZGVmaW5lIGFyY2hpdGVjdHVyZSBmZWF0dXJlcy4gIFRoaXMgaXMgYnVpbHQgaW50bworICogYSB0YWJsZSBieSB0aGUgbGlua2VyLgorICovCisjZGVmaW5lIE1BQ0hJTkVfU1RBUlQoX3R5cGUsX25hbWUpCQlcCitjb25zdCBzdHJ1Y3QgbWFjaGluZV9kZXNjIF9fbWFjaF9kZXNjXyMjX3R5cGUJXAorIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuYXJjaC5pbmZvIikpKSA9IHsJXAorCS5ucgkJPSBNQUNIX1RZUEVfIyNfdHlwZSwJXAorCS5uYW1lCQk9IF9uYW1lLAorCisjZGVmaW5lIE1BSU5UQUlORVIobikKKworI2RlZmluZSBCT09UX01FTShfcHJhbSxfcGlvLF92aW8pCQlcCisJLnBoeXNfcmFtCT0gX3ByYW0sCQlcCisJLnBoeXNfaW8JPSBfcGlvLAkJCVwKKwkuaW9fcGdfb2Zmc3QJPSAoKF92aW8pPj4xOCkmMHhmZmZjLAorCisjZGVmaW5lIEJPT1RfUEFSQU1TKF9wYXJhbXMpCQkJXAorCS5wYXJhbV9vZmZzZXQJPSBfcGFyYW1zLAorCisjZGVmaW5lIFZJREVPKF9zdGFydCxfZW5kKQkJCVwKKwkudmlkZW9fc3RhcnQJPSBfc3RhcnQsCQlcCisJLnZpZGVvX2VuZAk9IF9lbmQsCisKKyNkZWZpbmUgRElTQUJMRV9QQVJQT1JUKF9uKQkJCVwKKwkucmVzZXJ2ZV9scCMjX24JPSAxLAorCisjZGVmaW5lIFNPRlRfUkVCT09UCQkJCVwKKwkuc29mdF9yZWJvb3QJPSAxLAorCisjZGVmaW5lIEZJWFVQKF9mdW5jKQkJCQlcCisJLmZpeHVwCQk9IF9mdW5jLAorCisjZGVmaW5lIE1BUElPKF9mdW5jKQkJCQlcCisJLm1hcF9pbwkJPSBfZnVuYywKKworI2RlZmluZSBJTklUSVJRKF9mdW5jKQkJCQlcCisJLmluaXRfaXJxCT0gX2Z1bmMsCisKKyNkZWZpbmUgSU5JVF9NQUNISU5FKF9mdW5jKQkJCVwKKwkuaW5pdF9tYWNoaW5lCT0gX2Z1bmMsCisKKyNkZWZpbmUgTUFDSElORV9FTkQJCQkJXAorfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWFjaC9kbWEuaCBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL2RtYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYmY3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9kbWEuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tYWNoL2RtYS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OC0yMDAwIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIFRoaXMgaGVhZGVyIGZpbGUgZGVzY3JpYmVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBETUEgaGFuZGxlcgorICogIChkbWEuYykgYW5kIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgRE1BIGJhY2tlbmRzIChkbWEtKi5jKQorICovCisKK3N0cnVjdCBkbWFfc3RydWN0OwordHlwZWRlZiBzdHJ1Y3QgZG1hX3N0cnVjdCBkbWFfdDsKKworc3RydWN0IGRtYV9vcHMgeworCWludAkoKnJlcXVlc3QpKGRtYWNoX3QsIGRtYV90ICopOwkJLyogb3B0aW9uYWwgKi8KKwl2b2lkCSgqZnJlZSkoZG1hY2hfdCwgZG1hX3QgKik7CQkvKiBvcHRpb25hbCAqLworCXZvaWQJKCplbmFibGUpKGRtYWNoX3QsIGRtYV90ICopOwkJLyogbWFuZGF0b3J5ICovCisJdm9pZCAJKCpkaXNhYmxlKShkbWFjaF90LCBkbWFfdCAqKTsJCS8qIG1hbmRhdG9yeSAqLworCWludAkoKnJlc2lkdWUpKGRtYWNoX3QsIGRtYV90ICopOwkJLyogb3B0aW9uYWwgKi8KKwlpbnQJKCpzZXRzcGVlZCkoZG1hY2hfdCwgZG1hX3QgKiwgaW50KTsJLyogb3B0aW9uYWwgKi8KKwljaGFyCSp0eXBlOworfTsKKworc3RydWN0IGRtYV9zdHJ1Y3QgeworCXN0cnVjdCBzY2F0dGVybGlzdCBidWY7CQkvKiBzaW5nbGUgRE1BCQkJKi8KKwlpbnQJCXNnY291bnQ7CS8qIG51bWJlciBvZiBETUEgU0cJCSovCisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsJCS8qIERNQSBTY2F0dGVyLUdhdGhlciBMaXN0CSovCisKKwl1bnNpZ25lZCBpbnQJYWN0aXZlOjE7CS8qIFRyYW5zZmVyIGFjdGl2ZQkJKi8KKwl1bnNpZ25lZCBpbnQJaW52YWxpZDoxOwkvKiBBZGRyZXNzL0NvdW50IGNoYW5nZWQJKi8KKwl1bnNpZ25lZCBpbnQJdXNpbmdfc2c6MTsJLyogdXNpbmcgc2NhdHRlciBsaXN0PwkJKi8KKwlkbWFtb2RlX3QJZG1hX21vZGU7CS8qIERNQSBtb2RlCQkJKi8KKwlpbnQJCXNwZWVkOwkJLyogRE1BIHNwZWVkCQkJKi8KKworCXVuc2lnbmVkIGludAlsb2NrOwkJLyogRGV2aWNlIGlzIGFsbG9jYXRlZAkJKi8KKwljb25zdCBjaGFyCSpkZXZpY2VfaWQ7CS8qIERldmljZSBuYW1lCQkJKi8KKworCXVuc2lnbmVkIGludAlkbWFfYmFzZTsJLyogQ29udHJvbGxlciBiYXNlIGFkZHJlc3MJKi8KKwlpbnQJCWRtYV9pcnE7CS8qIENvbnRyb2xsZXIgSVJRCQkqLworCXN0cnVjdCBzY2F0dGVybGlzdCBjdXJfc2c7CS8qIEN1cnJlbnQgY29udHJvbGxlciBidWZmZXIJKi8KKwl1bnNpZ25lZCBpbnQJc3RhdGU7CisKKwlzdHJ1Y3QgZG1hX29wcwkqZF9vcHM7Cit9OworCisvKiBQcm90b3R5cGU6IHZvaWQgYXJjaF9kbWFfaW5pdChkbWEpCisgKiBQdXJwb3NlICA6IEluaXRpYWxpc2UgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIERNQQorICogUGFyYW1zICAgOiBkbWEgLSBwb2ludGVyIHRvIGFycmF5IG9mIERNQSBzdHJ1Y3R1cmVzCisgKi8KK2V4dGVybiB2b2lkIGFyY2hfZG1hX2luaXQoZG1hX3QgKmRtYSk7CisKK2V4dGVybiB2b2lkIGlzYV9pbml0X2RtYShkbWFfdCAqZG1hKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoL2ZsYXNoLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9mbGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5Mjg4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9mbGFzaC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL21hY2gvZmxhc2guaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUnVzc2VsbCBLaW5nLCBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgQVNNQVJNX01BQ0hfRkxBU0hfSAorI2RlZmluZSBBU01BUk1fTUFDSF9GTEFTSF9ICisKK3N0cnVjdCBtdGRfcGFydGl0aW9uOworCisvKgorICogbWFwX25hbWU6CXRoZSBtYXAgcHJvYmUgZnVuY3Rpb24gbmFtZQorICogd2lkdGg6CXdpZHRoIG9mIG1hcHBlZCBkZXZpY2UKKyAqIGluaXQ6CW1ldGhvZCBjYWxsZWQgYXQgZHJpdmVyL2RldmljZSBpbml0aWFsaXNhdGlvbgorICogZXhpdDoJbWV0aG9kIGNhbGxlZCBhdCBkcml2ZXIvZGV2aWNlIHJlbW92YWwKKyAqIHNldF92cHA6CW1ldGhvZCBjYWxsZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgVlBQCisgKiBwYXJ0czoJb3B0aW9uYWwgYXJyYXkgb2YgbXRkX3BhcnRpdGlvbnMgZm9yIHN0YXRpYyBwYXJ0aXRpb25pbmcKKyAqIG5yX3BhcnRzOgludW1iZXIgb2YgbXRkX3BhcnRpdGlvbnMgZm9yIHN0YXRpYyBwYXJ0aXRvbmluZworICovCitzdHJ1Y3QgZmxhc2hfcGxhdGZvcm1fZGF0YSB7CisJY29uc3QgY2hhcgkqbWFwX25hbWU7CisJdW5zaWduZWQgaW50CXdpZHRoOworCWludAkJKCppbml0KSh2b2lkKTsKKwl2b2lkCQkoKmV4aXQpKHZvaWQpOworCXZvaWQJCSgqc2V0X3ZwcCkoaW50IG9uKTsKKwlzdHJ1Y3QgbXRkX3BhcnRpdGlvbiAqcGFydHM7CisJdW5zaWduZWQgaW50CW5yX3BhcnRzOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWFjaC9pcmRhLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9pcmRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5ODRkOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL2lyZGEuaApAQCAtMCwwICsxLDIwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tYWNoL2lyZGEuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQgUnVzc2VsbCBLaW5nLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX01BQ0hfSVJEQV9ICisjZGVmaW5lIF9fQVNNX0FSTV9NQUNIX0lSREFfSAorCitzdHJ1Y3QgaXJkYV9wbGF0Zm9ybV9kYXRhIHsKKwlpbnQgKCpzdGFydHVwKShzdHJ1Y3QgZGV2aWNlICopOworCXZvaWQgKCpzaHV0ZG93bikoc3RydWN0IGRldmljZSAqKTsKKwlpbnQgKCpzZXRfcG93ZXIpKHN0cnVjdCBkZXZpY2UgKiwgdW5zaWduZWQgaW50IHN0YXRlKTsKKwl2b2lkICgqc2V0X3NwZWVkKShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGludCBzcGVlZCk7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoL2lycS5oIGIvaW5jbHVkZS9hc20tYXJtL21hY2gvaXJxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQzYTM1MwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL2lycS5oCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tYWNoL2lycS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NS0yMDAwIFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9fQVNNX0FSTV9NQUNIX0lSUV9ICisjZGVmaW5lIF9fQVNNX0FSTV9NQUNIX0lSUV9ICisKK3N0cnVjdCBpcnFkZXNjOworc3RydWN0IHB0X3JlZ3M7CitzdHJ1Y3Qgc2VxX2ZpbGU7CisKK3R5cGVkZWYgdm9pZCAoKmlycV9oYW5kbGVyX3QpKHVuc2lnbmVkIGludCwgc3RydWN0IGlycWRlc2MgKiwgc3RydWN0IHB0X3JlZ3MgKik7Cit0eXBlZGVmIHZvaWQgKCppcnFfY29udHJvbF90KSh1bnNpZ25lZCBpbnQpOworCitzdHJ1Y3QgaXJxY2hpcCB7CisJLyoKKwkgKiBBY2tub3dsZWRnZSB0aGUgSVJRLgorCSAqIElmIHRoaXMgaXMgYSBsZXZlbC1iYXNlZCBJUlEsIHRoZW4gaXQgaXMgZXhwZWN0ZWQgdG8gbWFzayB0aGUgSVJRCisJICogYXMgd2VsbC4KKwkgKi8KKwl2b2lkICgqYWNrKSh1bnNpZ25lZCBpbnQpOworCS8qCisJICogTWFzayB0aGUgSVJRIGluIGhhcmR3YXJlLgorCSAqLworCXZvaWQgKCptYXNrKSh1bnNpZ25lZCBpbnQpOworCS8qCisJICogVW5tYXNrIHRoZSBJUlEgaW4gaGFyZHdhcmUuCisJICovCisJdm9pZCAoKnVubWFzaykodW5zaWduZWQgaW50KTsKKwkvKgorCSAqIEFzayB0aGUgaGFyZHdhcmUgdG8gcmUtdHJpZ2dlciB0aGUgSVJRLgorCSAqIE5vdGU6IFRoaXMgbWV0aG9kIF9tdXN0XyBfbm90XyBjYWxsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4KKwkgKiBJZiB5b3UgYXJlIHVuYWJsZSB0byByZXRyaWdnZXIgdGhlIGludGVycnVwdCwgZG8gbm90CisJICogcHJvdmlkZSBhIGZ1bmN0aW9uLCBvciBpZiB5b3UgZG8sIHJldHVybiBub24temVyby4KKwkgKi8KKwlpbnQgKCpyZXRyaWdnZXIpKHVuc2lnbmVkIGludCk7CisJLyoKKwkgKiBTZXQgdGhlIHR5cGUgb2YgdGhlIElSUS4KKwkgKi8KKwlpbnQgKCp0eXBlKSh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CisJLyoKKwkgKiBTZXQgd2FrZXVwLWVuYWJsZSBvbiB0aGUgc2VsZWN0ZWQgSVJRCisJICovCisJaW50ICgqd2FrZSkodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOworCisjaWZkZWYgQ09ORklHX1NNUAorCS8qCisJICogUm91dGUgYW4gaW50ZXJydXB0IHRvIGEgQ1BVCisJICovCisJdm9pZCAoKnNldF9jcHUpKHN0cnVjdCBpcnFkZXNjICpkZXNjLCB1bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBpbnQgY3B1KTsKKyNlbmRpZgorfTsKKworc3RydWN0IGlycWRlc2MgeworCWlycV9oYW5kbGVyX3QJaGFuZGxlOworCXN0cnVjdCBpcnFjaGlwCSpjaGlwOworCXN0cnVjdCBpcnFhY3Rpb24gKmFjdGlvbjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmQ7CisJdm9pZAkJKmNoaXBkYXRhOworCXZvaWQJCSpkYXRhOworCXVuc2lnbmVkIGludAlkaXNhYmxlX2RlcHRoOworCisJdW5zaWduZWQgaW50CXRyaWdnZXJlZDogMTsJCS8qIElSUSBoYXMgb2NjdXJyZWQJICAgICAgKi8KKwl1bnNpZ25lZCBpbnQJcnVubmluZyAgOiAxOwkJLyogSVJRIGlzIHJ1bm5pbmcgICAgICAgICAgICAgKi8KKwl1bnNpZ25lZCBpbnQJcGVuZGluZyAgOiAxOwkJLyogSVJRIGlzIHBlbmRpbmcJICAgICAgKi8KKwl1bnNpZ25lZCBpbnQJcHJvYmluZyAgOiAxOwkJLyogSVJRIGluIHVzZSBmb3IgYSBwcm9iZSAgICAgKi8KKwl1bnNpZ25lZCBpbnQJcHJvYmVfb2sgOiAxOwkJLyogSVJRIGNhbiBiZSB1c2VkIGZvciBwcm9iZSAgKi8KKwl1bnNpZ25lZCBpbnQJdmFsaWQgICAgOiAxOwkJLyogSVJRIGNsYWltYWJsZQkgICAgICAqLworCXVuc2lnbmVkIGludAlub2F1dG9lbmFibGUgOiAxOwkvKiBkb24ndCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBJUlEgKi8KKwl1bnNpZ25lZCBpbnQJdW51c2VkICAgOjI1OworCisJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jZGlyOworCisjaWZkZWYgQ09ORklHX1NNUAorCWNwdW1hc2tfdAlhZmZpbml0eTsKKwl1bnNpZ25lZCBpbnQJY3B1OworI2VuZGlmCisKKwkvKgorCSAqIElSUSBsb2NrIGRldGVjdGlvbgorCSAqLworCXVuc2lnbmVkIGludAlsY2tfY250OworCXVuc2lnbmVkIGludAlsY2tfcGM7CisJdW5zaWduZWQgaW50CWxja19qaWY7Cit9OworCitleHRlcm4gc3RydWN0IGlycWRlc2MgaXJxX2Rlc2NbXTsKKworLyoKKyAqIFRoaXMgaXMgaW50ZXJuYWwuICBEbyBub3QgdXNlIGl0LgorICovCitleHRlcm4gdm9pZCAoKmluaXRfYXJjaF9pcnEpKHZvaWQpOworZXh0ZXJuIHZvaWQgaW5pdF9GSVEodm9pZCk7CitleHRlcm4gaW50IHNob3dfZmlxX2xpc3Qoc3RydWN0IHNlcV9maWxlICosIHZvaWQgKik7Cit2b2lkIF9fc2V0X2lycV9oYW5kbGVyKHVuc2lnbmVkIGludCBpcnEsIGlycV9oYW5kbGVyX3QsIGludCk7CisKKy8qCisgKiBFeHRlcm5hbCBzdHVmZi4KKyAqLworI2RlZmluZSBzZXRfaXJxX2hhbmRsZXIoaXJxLGhhbmRsZXIpCQlfX3NldF9pcnFfaGFuZGxlcihpcnEsaGFuZGxlciwwKQorI2RlZmluZSBzZXRfaXJxX2NoYWluZWRfaGFuZGxlcihpcnEsaGFuZGxlcikJX19zZXRfaXJxX2hhbmRsZXIoaXJxLGhhbmRsZXIsMSkKKyNkZWZpbmUgc2V0X2lycV9kYXRhKGlycSxkKQkJCWRvIHsgaXJxX2Rlc2NbaXJxXS5kYXRhID0gZDsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgc2V0X2lycV9jaGlwZGF0YShpcnEsZCkJCQlkbyB7IGlycV9kZXNjW2lycV0uY2hpcGRhdGEgPSBkOyB9IHdoaWxlICgwKQorI2RlZmluZSBnZXRfaXJxX2NoaXBkYXRhKGlycSkJCQkoaXJxX2Rlc2NbaXJxXS5jaGlwZGF0YSkKKwordm9pZCBzZXRfaXJxX2NoaXAodW5zaWduZWQgaW50IGlycSwgc3RydWN0IGlycWNoaXAgKik7Cit2b2lkIHNldF9pcnFfZmxhZ3ModW5zaWduZWQgaW50IGlycSwgdW5zaWduZWQgaW50IGZsYWdzKTsKKworI2RlZmluZSBJUlFGX1ZBTElECSgxIDw8IDApCisjZGVmaW5lIElSUUZfUFJPQkUJKDEgPDwgMSkKKyNkZWZpbmUgSVJRRl9OT0FVVE9FTgkoMSA8PCAyKQorCisvKgorICogQnVpbHQtaW4gSVJRIGhhbmRsZXJzLgorICovCit2b2lkIGRvX2xldmVsX0lSUSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgaXJxZGVzYyAqZGVzYywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwordm9pZCBkb19lZGdlX0lSUSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgaXJxZGVzYyAqZGVzYywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwordm9pZCBkb19zaW1wbGVfSVJRKHVuc2lnbmVkIGludCBpcnEsIHN0cnVjdCBpcnFkZXNjICpkZXNjLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Cit2b2lkIGRvX2JhZF9JUlEodW5zaWduZWQgaW50IGlycSwgc3RydWN0IGlycWRlc2MgKmRlc2MsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK3ZvaWQgZHVtbXlfbWFza191bm1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoL21hcC5oIGIvaW5jbHVkZS9hc20tYXJtL21hY2gvbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjNDdjZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL21hcC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL21hcC5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIFBhZ2UgdGFibGUgbWFwcGluZyBjb25zdHJ1Y3RzIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzCisgKi8KK3N0cnVjdCBtYXBfZGVzYyB7CisJdW5zaWduZWQgbG9uZyB2aXJ0dWFsOworCXVuc2lnbmVkIGxvbmcgcGh5c2ljYWw7CisJdW5zaWduZWQgbG9uZyBsZW5ndGg7CisJdW5zaWduZWQgaW50IHR5cGU7Cit9OworCitzdHJ1Y3QgbWVtaW5mbzsKKworI2RlZmluZSBNVF9ERVZJQ0UJCTAKKyNkZWZpbmUgTVRfQ0FDSEVDTEVBTgkJMQorI2RlZmluZSBNVF9NSU5JQ0xFQU4JCTIKKyNkZWZpbmUgTVRfTE9XX1ZFQ1RPUlMJCTMKKyNkZWZpbmUgTVRfSElHSF9WRUNUT1JTCQk0CisjZGVmaW5lIE1UX01FTU9SWQkJNQorI2RlZmluZSBNVF9ST00JCQk2CisjZGVmaW5lIE1UX0lYUDIwMDBfREVWSUNFCTcKKworZXh0ZXJuIHZvaWQgY3JlYXRlX21lbW1hcF9ob2xlcyhzdHJ1Y3QgbWVtaW5mbyAqKTsKK2V4dGVybiB2b2lkIG1lbXRhYmxlX2luaXQoc3RydWN0IG1lbWluZm8gKik7CitleHRlcm4gdm9pZCBpb3RhYmxlX2luaXQoc3RydWN0IG1hcF9kZXNjICosIGludCk7CitleHRlcm4gdm9pZCBzZXR1cF9pb19kZXNjKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21hY2gvbW1jLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9tbWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjM1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL21hY2gvbW1jLmgKQEAgLTAsMCArMSwxNSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbWFjaC9tbWMuaAorICovCisjaWZuZGVmIEFTTUFSTV9NQUNIX01NQ19ICisjZGVmaW5lIEFTTUFSTV9NQUNIX01NQ19ICisKKyNpbmNsdWRlIDxsaW51eC9tbWMvcHJvdG9jb2wuaD4KKworc3RydWN0IG1tY19wbGF0Zm9ybV9kYXRhIHsKKwl1bnNpZ25lZCBpbnQgb2NyX21hc2s7CQkJLyogYXZhaWxhYmxlIHZvbHRhZ2VzICovCisJdTMyICgqdHJhbnNsYXRlX3ZkZCkoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBpbnQpOworCXVuc2lnbmVkIGludCAoKnN0YXR1cykoc3RydWN0IGRldmljZSAqKTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21hY2gvcGNpLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9wY2kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWQ1NDBlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL21hY2gvcGNpLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbWFjaC9wY2kuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCitzdHJ1Y3QgcGNpX3N5c19kYXRhOworc3RydWN0IHBjaV9idXM7CisKK3N0cnVjdCBod19wY2kgeworCXN0cnVjdCBsaXN0X2hlYWQgYnVzZXM7CisJaW50CQlucl9jb250cm9sbGVyczsKKwlpbnQJCSgqc2V0dXApKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqKTsKKwlzdHJ1Y3QgcGNpX2J1cyAqKCpzY2FuKShpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CisJdm9pZAkJKCpwcmVpbml0KSh2b2lkKTsKKwl2b2lkCQkoKnBvc3Rpbml0KSh2b2lkKTsKKwl1OAkJKCpzd2l6emxlKShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCAqcGluKTsKKwlpbnQJCSgqbWFwX2lycSkoc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKTsKK307CisKKy8qCisgKiBQZXItY29udHJvbGxlciBzdHJ1Y3R1cmUKKyAqLworc3RydWN0IHBjaV9zeXNfZGF0YSB7CisJc3RydWN0IGxpc3RfaGVhZCBub2RlOworCWludAkJYnVzbnI7CQkvKiBwcmltYXJ5IGJ1cyBudW1iZXIJCQkqLworCXVuc2lnbmVkIGxvbmcJbWVtX29mZnNldDsJLyogYnVzLT5jcHUgbWVtb3J5IG1hcHBpbmcgb2Zmc2V0CSovCisJdW5zaWduZWQgbG9uZwlpb19vZmZzZXQ7CS8qIGJ1cy0+Y3B1IElPIG1hcHBpbmcgb2Zmc2V0CQkqLworCXN0cnVjdCBwY2lfYnVzCSpidXM7CQkvKiBQQ0kgYnVzCQkJCSovCisJc3RydWN0IHJlc291cmNlICpyZXNvdXJjZVszXTsJLyogUHJpbWFyeSBQQ0kgYnVzIHJlc291cmNlcwkJKi8KKwkJCQkJLyogQnJpZGdlIHN3aXp6bGluZwkJCSovCisJdTgJCSgqc3dpenpsZSkoc3RydWN0IHBjaV9kZXYgKiwgdTggKik7CisJCQkJCS8qIElSUSBtYXBwaW5nCQkJCSovCisJaW50CQkoKm1hcF9pcnEpKHN0cnVjdCBwY2lfZGV2ICosIHU4LCB1OCk7CisJc3RydWN0IGh3X3BjaQkqaHc7Cit9OworCisvKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgUENJLVBDSSBicmlkZ2Ugc3dpenpsaW5nIGFsZ29yaXRobS4KKyAqLwordTggcGNpX3N0ZF9zd2l6emxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4ICpwaW5wKTsKKworLyoKKyAqIENhbGwgdGhpcyB3aXRoIHlvdXIgaHdfcGNpIHN0cnVjdCB0byBpbml0aWFsaXNlIHRoZSBQQ0kgc3lzdGVtLgorICovCit2b2lkIHBjaV9jb21tb25faW5pdChzdHJ1Y3QgaHdfcGNpICopOworCisvKgorICogUENJIGNvbnRyb2xsZXJzCisgKi8KK2V4dGVybiBpbnQgaW9wMzIxX3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqKTsKK2V4dGVybiBzdHJ1Y3QgcGNpX2J1cyAqaW9wMzIxX3NjYW5fYnVzKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqKTsKK2V4dGVybiB2b2lkIGlvcDMyMV9pbml0KHZvaWQpOworCitleHRlcm4gaW50IGlvcDMzMV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CitleHRlcm4gc3RydWN0IHBjaV9idXMgKmlvcDMzMV9zY2FuX2J1cyhpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CitleHRlcm4gdm9pZCBpb3AzMzFfaW5pdCh2b2lkKTsKKworZXh0ZXJuIGludCBkYzIxMjg1X3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqKTsKK2V4dGVybiBzdHJ1Y3QgcGNpX2J1cyAqZGMyMTI4NV9zY2FuX2J1cyhpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CitleHRlcm4gdm9pZCBkYzIxMjg1X3ByZWluaXQodm9pZCk7CitleHRlcm4gdm9pZCBkYzIxMjg1X3Bvc3Rpbml0KHZvaWQpOworCitleHRlcm4gaW50IHZpYTgyYzUwNV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CitleHRlcm4gc3RydWN0IHBjaV9idXMgKnZpYTgyYzUwNV9zY2FuX2J1cyhpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKik7CitleHRlcm4gdm9pZCB2aWE4MmM1MDVfaW5pdCh2b2lkICpzeXNkYXRhKTsKKworZXh0ZXJuIGludCBwY2lfdjNfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICopOworZXh0ZXJuIHN0cnVjdCBwY2lfYnVzICpwY2lfdjNfc2Nhbl9idXMoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICopOworZXh0ZXJuIHZvaWQgcGNpX3YzX3ByZWluaXQodm9pZCk7CitleHRlcm4gdm9pZCBwY2lfdjNfcG9zdGluaXQodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zZXJpYWxfc2ExMTAwLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zZXJpYWxfc2ExMTAwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2MjAxOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL3NlcmlhbF9zYTExMDAuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tYWNoL3NlcmlhbF9zYTExMDAuaAorICoKKyAqICBBdXRob3I6IE5pY29sYXMgUGl0cmUKKyAqCisgKiBNb3ZlZCB0byBpbmNsdWRlL2FzbS1hcm0vbWFjaCBhbmQgY2hhbmdlZCBsb3RzLCBSdXNzZWxsIEtpbmcKKyAqCisgKiBMb3cgbGV2ZWwgbWFjaGluZSBkZXBlbmRlbnQgVUFSVCBmdW5jdGlvbnMuCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworc3RydWN0IHVhcnRfcG9ydDsKK3N0cnVjdCB1YXJ0X2luZm87CisKKy8qCisgKiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHN0cnVjdHVyZSBmb3IgcmVnaXN0ZXJpbmcgdGhlc2UKKyAqIGZ1bmN0aW9uczsgaXQgaXMgaW50ZW5kZWQgdG8gYmUgZGlzY2FyZGVkIGFmdGVyIGJvb3QuCisgKi8KK3N0cnVjdCBzYTExMDBfcG9ydF9mbnMgeworCXZvaWQJKCpzZXRfbWN0cmwpKHN0cnVjdCB1YXJ0X3BvcnQgKiwgdV9pbnQpOworCXVfaW50CSgqZ2V0X21jdHJsKShzdHJ1Y3QgdWFydF9wb3J0ICopOworCXZvaWQJKCpwbSkoc3RydWN0IHVhcnRfcG9ydCAqLCB1X2ludCwgdV9pbnQpOworCWludAkoKnNldF93YWtlKShzdHJ1Y3QgdWFydF9wb3J0ICosIHVfaW50KTsKK307CisKKyNpZmRlZiBDT05GSUdfU0VSSUFMX1NBMTEwMAordm9pZCBzYTExMDBfcmVnaXN0ZXJfdWFydF9mbnMoc3RydWN0IHNhMTEwMF9wb3J0X2ZucyAqZm5zKTsKK3ZvaWQgc2ExMTAwX3JlZ2lzdGVyX3VhcnQoaW50IGlkeCwgaW50IHBvcnQpOworI2Vsc2UKKyNkZWZpbmUgc2ExMTAwX3JlZ2lzdGVyX3VhcnRfZm5zKGZucykgZG8geyB9IHdoaWxlICgwKQorI2RlZmluZSBzYTExMDBfcmVnaXN0ZXJfdWFydChpZHgscG9ydCkgZG8geyB9IHdoaWxlICgwKQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zaGFycHNsX3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zaGFycHNsX3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNGVjZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL3NoYXJwc2xfcGFyYW0uaApAQCAtMCwwICsxLDM3IEBACisvKgorICogSGFyZHdhcmUgcGFyYW1ldGVyIGFyZWEgc3BlY2lmaWMgdG8gU2hhcnAgU0wgc2VyaWVzIGRldmljZXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgUmljaGFyZCBQdXJkaWUKKyAqCisgKiBCYXNlZCBvbiBTaGFycCdzIDIuNCBrZXJuZWwgcGF0Y2hlcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKK3N0cnVjdCBzaGFycHNsX3BhcmFtX2luZm8geworICB1bnNpZ25lZCBpbnQgY29tYWRqX2tleXdvcmQ7CisgIHVuc2lnbmVkIGludCBjb21hZGo7CisKKyAgdW5zaWduZWQgaW50IHV1aWRfa2V5d29yZDsKKyAgdW5zaWduZWQgY2hhciB1dWlkWzE2XTsKKworICB1bnNpZ25lZCBpbnQgdG91Y2hfa2V5d29yZDsKKyAgdW5zaWduZWQgaW50IHRvdWNoX3hwOworICB1bnNpZ25lZCBpbnQgdG91Y2hfeXA7CisgIHVuc2lnbmVkIGludCB0b3VjaF94ZDsKKyAgdW5zaWduZWQgaW50IHRvdWNoX3lkOworCisgIHVuc2lnbmVkIGludCBhZGFkal9rZXl3b3JkOworICB1bnNpZ25lZCBpbnQgYWRhZGo7CisKKyAgdW5zaWduZWQgaW50IHBoYWRfa2V5d29yZDsKKyAgdW5zaWduZWQgaW50IHBoYWRhZGo7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisKK2V4dGVybiBzdHJ1Y3Qgc2hhcnBzbF9wYXJhbV9pbmZvIHNoYXJwc2xfcGFyYW07CitleHRlcm4gdm9pZCBzaGFycHNsX3NhdmVfcGFyYW0odm9pZCk7CisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoL3RpbWUuaCBiL2luY2x1ZGUvYXNtLWFybS9tYWNoL3RpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2Y0ZmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL21hY2gvdGltZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbWFjaC90aW1lLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX01BQ0hfVElNRV9ICisjZGVmaW5lIF9fQVNNX0FSTV9NQUNIX1RJTUVfSAorCisjaW5jbHVkZSA8bGludXgvc3lzZGV2Lmg+CisKKy8qCisgKiBUaGlzIGlzIG91ciBrZXJuZWwgdGltZXIgc3RydWN0dXJlLgorICoKKyAqIC0gaW5pdAorICogICBJbml0aWFsaXNlIHRoZSBrZXJuZWxzIGppZmZ5IHRpbWVyIHNvdXJjZSwgY2xhaW0gaW50ZXJydXB0CisgKiAgIHVzaW5nIHNldHVwX2lycS4gIFRoaXMgaXMgY2FsbGVkIGVhcmx5IG9uIGR1cmluZyBpbml0aWFsaXNhdGlvbgorICogICB3aGlsZSBpbnRlcnJ1cHRzIGFyZSBzdGlsbCBkaXNhYmxlZCBvbiB0aGUgbG9jYWwgQ1BVLgorICogLSBzdXNwZW5kCisgKiAgIFN1c3BlbmQgdGhlIGtlcm5lbCBqaWZmeSB0aW1lciBzb3VyY2UsIGlmIG5lY2Vzc2FyeS4gIFRoaXMKKyAqICAgaXMgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCwgYWZ0ZXIgYWxsIG5vcm1hbCBkZXZpY2VzCisgKiAgIGhhdmUgYmVlbiBzdXNwZW5kZWQuICBJZiBubyBhY3Rpb24gaXMgcmVxdWlyZWQsIHNldCB0aGlzIHRvCisgKiAgIE5VTEwuCisgKiAtIHJlc3VtZQorICogICBSZXN1bWUgdGhlIGtlcm5lbCBqaWZmeSB0aW1lciBzb3VyY2UsIGlmIG5lY2Vzc2FyeS4gIFRoaXMKKyAqICAgaXMgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCBiZWZvcmUgYW55IG5vcm1hbCBkZXZpY2VzCisgKiAgIGFyZSByZXN1bWVkLiAgSWYgbm8gYWN0aW9uIGlzIHJlcXVpcmVkLCBzZXQgdGhpcyB0byBOVUxMLgorICogLSBvZmZzZXQKKyAqICAgUmV0dXJuIHRoZSB0aW1lciBvZmZzZXQgaW4gbWljcm9zZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHRpbWVyCisgKiAgIGludGVycnVwdC4gIE5vdGU6IHRoaXMgbXVzdCB0YWtlIGFjY291bnQgb2YgYW55IHVucHJvY2Vzc2VkCisgKiAgIHRpbWVyIGludGVycnVwdCB3aGljaCBtYXkgYmUgcGVuZGluZy4KKyAqLworc3RydWN0IHN5c190aW1lciB7CisJc3RydWN0IHN5c19kZXZpY2UJZGV2OworCXZvaWQJCQkoKmluaXQpKHZvaWQpOworCXZvaWQJCQkoKnN1c3BlbmQpKHZvaWQpOworCXZvaWQJCQkoKnJlc3VtZSkodm9pZCk7CisJdW5zaWduZWQgbG9uZwkJKCpvZmZzZXQpKHZvaWQpOworfTsKKworZXh0ZXJuIHN0cnVjdCBzeXNfdGltZXIgKnN5c3RlbV90aW1lcjsKK2V4dGVybiB2b2lkIHRpbWVyX3RpY2soc3RydWN0IHB0X3JlZ3MgKik7CisKKy8qCisgKiBLZXJuZWwgdGltZSBrZWVwaW5nIHN1cHBvcnQuCisgKi8KK2V4dGVybiBpbnQgKCpzZXRfcnRjKSh2b2lkKTsKK2V4dGVybiB2b2lkIHNhdmVfdGltZV9kZWx0YShzdHJ1Y3QgdGltZXNwZWMgKmRlbHRhLCBzdHJ1Y3QgdGltZXNwZWMgKnJ0Yyk7CitleHRlcm4gdm9pZCByZXN0b3JlX3RpbWVfZGVsdGEoc3RydWN0IHRpbWVzcGVjICpkZWx0YSwgc3RydWN0IHRpbWVzcGVjICpydGMpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYzE0NjgxOHJ0Yy5oIGIvaW5jbHVkZS9hc20tYXJtL21jMTQ2ODE4cnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4MWUwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbWMxNDY4MThydGMuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogTWFjaGluZSBkZXBlbmRlbnQgYWNjZXNzIGZ1bmN0aW9ucyBmb3IgUlRDIHJlZ2lzdGVycy4KKyAqLworI2lmbmRlZiBfQVNNX01DMTQ2ODE4UlRDX0gKKyNkZWZpbmUgX0FTTV9NQzE0NjgxOFJUQ19ICisKKyNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNpZm5kZWYgUlRDX1BPUlQKKyNkZWZpbmUgUlRDX1BPUlQoeCkJKDB4NzAgKyAoeCkpCisjZGVmaW5lIFJUQ19BTFdBWVNfQkNECTEJLyogUlRDIG9wZXJhdGVzIGluIGJpbmFyeSBtb2RlICovCisjZW5kaWYKKworLyoKKyAqIFRoZSB5ZXQgc3VwcG9ydGVkIG1hY2hpbmVzIGFsbCBhY2Nlc3MgdGhlIFJUQyBpbmRleCByZWdpc3RlciB2aWEKKyAqIGFuIElTQSBwb3J0IGFjY2VzcyBidXQgdGhlIHdheSB0byBhY2Nlc3MgdGhlIGRhdGUgcmVnaXN0ZXIgZGlmZmVycyAuLi4KKyAqLworI2RlZmluZSBDTU9TX1JFQUQoYWRkcikgKHsgXAorb3V0Yl9wKChhZGRyKSxSVENfUE9SVCgwKSk7IFwKK2luYl9wKFJUQ19QT1JUKDEpKTsgXAorfSkKKyNkZWZpbmUgQ01PU19XUklURSh2YWwsIGFkZHIpICh7IFwKK291dGJfcCgoYWRkciksUlRDX1BPUlQoMCkpOyBcCitvdXRiX3AoKHZhbCksUlRDX1BPUlQoMSkpOyBcCit9KQorCisjZW5kaWYgLyogX0FTTV9NQzE0NjgxOFJUQ19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbWVtb3J5LmggYi9pbmNsdWRlL2FzbS1hcm0vbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ3YmVhNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tZW1vcnkuaApAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbWVtb3J5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTm90ZTogdGhpcyBmaWxlIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgYnkgbm9uLWFzbS8uaCBmaWxlcworICovCisjaWZuZGVmIF9fQVNNX0FSTV9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUk1fTUVNT1JZX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbWVtb3J5Lmg+CisKKyNpZm5kZWYgVEFTS19TSVpFCisvKgorICogVEFTS19TSVpFIC0gdGhlIG1heGltdW0gc2l6ZSBvZiBhIHVzZXIgc3BhY2UgdGFzay4KKyAqIFRBU0tfVU5NQVBQRURfQkFTRSAtIHRoZSBsb3dlciBib3VuZGFyeSBvZiB0aGUgbW1hcCBWTSBhcmVhCisgKi8KKyNkZWZpbmUgVEFTS19TSVpFCQkoMHhiZjAwMDAwMFVMKQorI2RlZmluZSBUQVNLX1VOTUFQUEVEX0JBU0UJKDB4NDAwMDAwMDBVTCkKKyNlbmRpZgorCisvKgorICogVGhlIG1heGltdW0gc2l6ZSBvZiBhIDI2LWJpdCB1c2VyIHNwYWNlIHRhc2suCisgKi8KKyNkZWZpbmUgVEFTS19TSVpFXzI2CQkoMHgwNDAwMDAwMFVMKQorCisvKgorICogUGFnZSBvZmZzZXQ6IDNHQgorICovCisjaWZuZGVmIFBBR0VfT0ZGU0VUCisjZGVmaW5lIFBBR0VfT0ZGU0VUCQkoMHhjMDAwMDAwMFVMKQorI2VuZGlmCisKKy8qCisgKiBQaHlzaWNhbCB2cyB2aXJ0dWFsIFJBTSBhZGRyZXNzIHNwYWNlIGNvbnZlcnNpb24uICBUaGVzZSBhcmUKKyAqIHByaXZhdGUgZGVmaW5pdGlvbnMgd2hpY2ggc2hvdWxkIE5PVCBiZSB1c2VkIG91dHNpZGUgbWVtb3J5LmgKKyAqIGZpbGVzLiAgVXNlIHZpcnRfdG9fcGh5cy9waHlzX3RvX3ZpcnQvX19wYS9fX3ZhIGluc3RlYWQuCisgKi8KKyNpZm5kZWYgX192aXJ0X3RvX3BoeXMKKyNkZWZpbmUgX192aXJ0X3RvX3BoeXMoeCkJKCh4KSAtIFBBR0VfT0ZGU0VUICsgUEhZU19PRkZTRVQpCisjZGVmaW5lIF9fcGh5c190b192aXJ0KHgpCSgoeCkgLSBQSFlTX09GRlNFVCArIFBBR0VfT0ZGU0VUKQorI2VuZGlmCisKKy8qCisgKiBUaGUgbW9kdWxlIHNwYWNlIGxpdmVzIGJldHdlZW4gdGhlIGFkZHJlc3NlcyBnaXZlbiBieSBUQVNLX1NJWkUKKyAqIGFuZCBQQUdFX09GRlNFVCAtIGl0IG11c3QgYmUgd2l0aGluIDMyTUIgb2YgdGhlIGtlcm5lbCB0ZXh0LgorICovCisjZGVmaW5lIE1PRFVMRV9FTkQJKFBBR0VfT0ZGU0VUKQorI2RlZmluZSBNT0RVTEVfU1RBUlQJKE1PRFVMRV9FTkQgLSAxNioxMDQ4NTc2KQorCisjaWYgVEFTS19TSVpFID4gTU9EVUxFX1NUQVJUCisjZXJyb3IgVG9wIG9mIHVzZXIgc3BhY2UgY2xhc2hlcyB3aXRoIHN0YXJ0IG9mIG1vZHVsZSBzcGFjZQorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKy8qCisgKiBUaGUgRE1BIG1hc2sgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4aW11bSBidXMgYWRkcmVzcyBhbGxvY2F0YWJsZQorICogdXNpbmcgR0ZQX0RNQS4gIFRoZSBkZWZhdWx0IGhlcmUgcGxhY2VzIG5vIHJlc3RyaWN0aW9uIG9uIERNQQorICogYWxsb2NhdGlvbnMuICBUaGlzIG11c3QgYmUgdGhlIHNtYWxsZXN0IERNQSBtYXNrIGluIHRoZSBzeXN0ZW0sCisgKiBzbyBhIHN1Y2Nlc3NmdWwgR0ZQX0RNQSBhbGxvY2F0aW9uIHdpbGwgYWx3YXlzIHNhdGlzZnkgdGhpcy4KKyAqLworI2lmbmRlZiBJU0FfRE1BX1RIUkVTSE9MRAorI2RlZmluZSBJU0FfRE1BX1RIUkVTSE9MRAkoMHhmZmZmZmZmZlVMTCkKKyNlbmRpZgorCisjaWZuZGVmIGFyY2hfYWRqdXN0X3pvbmVzCisjZGVmaW5lIGFyY2hfYWRqdXN0X3pvbmVzKG5vZGUsc2l6ZSxob2xlcykgZG8geyB9IHdoaWxlICgwKQorI2VuZGlmCisKKy8qCisgKiBQRk5zIGFyZSB1c2VkIHRvIGRlc2NyaWJlIGFueSBwaHlzaWNhbCBwYWdlOyB0aGlzIG1lYW5zCisgKiBQRk4gMCA9PSBwaHlzaWNhbCBhZGRyZXNzIDAuCisgKgorICogVGhpcyBpcyB0aGUgUEZOIG9mIHRoZSBmaXJzdCBSQU0gcGFnZSBpbiB0aGUga2VybmVsCisgKiBkaXJlY3QtbWFwcGVkIHZpZXcuICBXZSBhc3N1bWUgdGhpcyBpcyB0aGUgZmlyc3QgcGFnZQorICogb2YgUkFNIGluIHRoZSBtZW1fbWFwIGFzIHdlbGwuCisgKi8KKyNkZWZpbmUgUEhZU19QRk5fT0ZGU0VUCShQSFlTX09GRlNFVCA+PiBQQUdFX1NISUZUKQorCisvKgorICogVGhlc2UgYXJlICpvbmx5KiB2YWxpZCBvbiB0aGUga2VybmVsIGRpcmVjdCBtYXBwZWQgUkFNIG1lbW9yeS4KKyAqIE5vdGU6IERyaXZlcnMgc2hvdWxkIE5PVCB1c2UgdGhlc2UuICBUaGV5IGFyZSB0aGUgd3JvbmcKKyAqIHRyYW5zbGF0aW9uIGZvciB0cmFuc2xhdGluZyBETUEgYWRkcmVzc2VzLiAgVXNlIHRoZSBkcml2ZXIKKyAqIERNQSBzdXBwb3J0IC0gc2VlIGRtYS1tYXBwaW5nLmguCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9pZCAqeCkKK3sKKwlyZXR1cm4gX192aXJ0X3RvX3BoeXMoKHVuc2lnbmVkIGxvbmcpKHgpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICpwaHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyB4KQoreworCXJldHVybiAodm9pZCAqKShfX3BoeXNfdG9fdmlydCgodW5zaWduZWQgbG9uZykoeCkpKTsKK30KKworLyoKKyAqIERyaXZlcnMgc2hvdWxkIE5PVCB1c2UgdGhlc2UgZWl0aGVyLgorICovCisjZGVmaW5lIF9fcGEoeCkJCQlfX3ZpcnRfdG9fcGh5cygodW5zaWduZWQgbG9uZykoeCkpCisjZGVmaW5lIF9fdmEoeCkJCQkoKHZvaWQgKilfX3BoeXNfdG9fdmlydCgodW5zaWduZWQgbG9uZykoeCkpKQorCisvKgorICogVmlydHVhbCA8LT4gRE1BIHZpZXcgbWVtb3J5IGFkZHJlc3MgdHJhbnNsYXRpb25zCisgKiBBZ2FpbiwgdGhlc2UgYXJlICpvbmx5KiB2YWxpZCBvbiB0aGUga2VybmVsIGRpcmVjdCBtYXBwZWQgUkFNCisgKiBtZW1vcnkuICBVc2Ugb2YgdGhlc2UgaXMgKmRlcHJlY2F0ZWQqIChhbmQgdGhhdCBkb2Vzbid0IG1lYW4KKyAqIHVzZSB0aGUgX18gcHJlZml4ZWQgZm9ybXMgaW5zdGVhZC4pICBTZWUgZG1hLW1hcHBpbmcuaC4KKyAqLworc3RhdGljIGlubGluZSBfX2RlcHJlY2F0ZWQgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX2J1cyh2b2lkICp4KQoreworCXJldHVybiBfX3ZpcnRfdG9fYnVzKCh1bnNpZ25lZCBsb25nKXgpOworfQorCitzdGF0aWMgaW5saW5lIF9fZGVwcmVjYXRlZCB2b2lkICpidXNfdG9fdmlydCh1bnNpZ25lZCBsb25nIHgpCit7CisJcmV0dXJuICh2b2lkICopX19idXNfdG9fdmlydCh4KTsKK30KKworLyoKKyAqIENvbnZlcnNpb24gYmV0d2VlbiBhIHN0cnVjdCBwYWdlIGFuZCBhIHBoeXNpY2FsIGFkZHJlc3MuCisgKgorICogTm90ZTogd2hlbiBjb252ZXJ0aW5nIGFuIHVua25vd24gcGh5c2ljYWwgYWRkcmVzcyB0byBhCisgKiBzdHJ1Y3QgcGFnZSwgdGhlIHJlc3VsdGluZyBwb2ludGVyIG11c3QgYmUgdmFsaWRhdGVkCisgKiB1c2luZyBWQUxJRF9QQUdFKCkuICBJdCBtdXN0IHJldHVybiBhbiBpbnZhbGlkIHN0cnVjdCBwYWdlCisgKiBmb3IgYW55IHBoeXNpY2FsIGFkZHJlc3Mgbm90IGNvcnJlc3BvbmRpbmcgdG8gYSBzeXN0ZW0KKyAqIFJBTSBhZGRyZXNzLgorICoKKyAqICBwYWdlX3RvX3BmbihwYWdlKQljb252ZXJ0IGEgc3RydWN0IHBhZ2UgKiB0byBhIFBGTiBudW1iZXIKKyAqICBwZm5fdG9fcGFnZShwZm4pCWNvbnZlcnQgYSBfdmFsaWRfIFBGTiBudW1iZXIgdG8gc3RydWN0IHBhZ2UgKgorICogIHBmbl92YWxpZChwZm4pCWluZGljYXRlcyB3aGV0aGVyIGEgUEZOIG51bWJlciBpcyB2YWxpZAorICoKKyAqICB2aXJ0X3RvX3BhZ2UoaykJY29udmVydCBhIF92YWxpZF8gdmlydHVhbCBhZGRyZXNzIHRvIHN0cnVjdCBwYWdlICoKKyAqICB2aXJ0X2FkZHJfdmFsaWQoaykJaW5kaWNhdGVzIHdoZXRoZXIgYSB2aXJ0dWFsIGFkZHJlc3MgaXMgdmFsaWQKKyAqLworI2lmbmRlZiBDT05GSUdfRElTQ09OVElHTUVNCisKKyNkZWZpbmUgcGFnZV90b19wZm4ocGFnZSkJKCgocGFnZSkgLSBtZW1fbWFwKSArIFBIWVNfUEZOX09GRlNFVCkKKyNkZWZpbmUgcGZuX3RvX3BhZ2UocGZuKQkoKG1lbV9tYXAgKyAocGZuKSkgLSBQSFlTX1BGTl9PRkZTRVQpCisjZGVmaW5lIHBmbl92YWxpZChwZm4pCQkoKHBmbikgPj0gUEhZU19QRk5fT0ZGU0VUICYmIChwZm4pIDwgKFBIWVNfUEZOX09GRlNFVCArIG1heF9tYXBucikpCisKKyNkZWZpbmUgdmlydF90b19wYWdlKGthZGRyKQkocGZuX3RvX3BhZ2UoX19wYShrYWRkcikgPj4gUEFHRV9TSElGVCkpCisjZGVmaW5lIHZpcnRfYWRkcl92YWxpZChrYWRkcikJKCh1bnNpZ25lZCBsb25nKShrYWRkcikgPj0gUEFHRV9PRkZTRVQgJiYgKHVuc2lnbmVkIGxvbmcpKGthZGRyKSA8ICh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5KQorCisjZGVmaW5lIFBIWVNfVE9fTklEKGFkZHIpCSgwKQorCisjZWxzZSAvKiBDT05GSUdfRElTQ09OVElHTUVNICovCisKKy8qCisgKiBUaGlzIGlzIG1vcmUgY29tcGxleC4gIFdlIGhhdmUgYSBzZXQgb2YgbWVtX21hcCBhcnJheXMgc3ByZWFkCisgKiBhcm91bmQgaW4gbWVtb3J5LgorICovCisjaW5jbHVkZSA8bGludXgvbnVtYS5oPgorCisjZGVmaW5lIHBhZ2VfdG9fcGZuKHBhZ2UpCQkJCQlcCisJKCggKHBhZ2UpIC0gcGFnZV96b25lKHBhZ2UpLT56b25lX21lbV9tYXApCQlcCisJICArIHBhZ2Vfem9uZShwYWdlKS0+em9uZV9zdGFydF9wZm4pCisjZGVmaW5lIHBmbl90b19wYWdlKHBmbikJCQkJCVwKKwkoUEZOX1RPX01BUEJBU0UocGZuKSArIExPQ0FMX01BUF9OUigocGZuKSA8PCBQQUdFX1NISUZUKSkKKyNkZWZpbmUgcGZuX3ZhbGlkKHBmbikJCShQRk5fVE9fTklEKHBmbikgPCBNQVhfTlVNTk9ERVMpCisKKyNkZWZpbmUgdmlydF90b19wYWdlKGthZGRyKQkJCQkJXAorCShBRERSX1RPX01BUEJBU0Uoa2FkZHIpICsgTE9DQUxfTUFQX05SKGthZGRyKSkKKyNkZWZpbmUgdmlydF9hZGRyX3ZhbGlkKGthZGRyKQkoS1ZBRERSX1RPX05JRChrYWRkcikgPCBNQVhfTlVNTk9ERVMpCisKKy8qCisgKiBDb21tb24gZGlzY29udGlnbWVtIHN0dWZmLgorICogIFBIWVNfVE9fTklEIGlzIHVzZWQgYnkgdGhlIEFSTSBrZXJuZWwvc2V0dXAuYworICovCisjZGVmaW5lIFBIWVNfVE9fTklEKGFkZHIpCVBGTl9UT19OSUQoKGFkZHIpID4+IFBBR0VfU0hJRlQpCisKKyNlbmRpZiAvKiAhQ09ORklHX0RJU0NPTlRJR01FTSAqLworCisvKgorICogRm9yIEJJTy4gICJ3aWxsIGRpZSIuICBLaWxsIG1lIHdoZW4gYmlvX3RvX3BoeXMoKSBhbmQgYnZlY190b19waHlzKCkgZGllLgorICovCisjZGVmaW5lIHBhZ2VfdG9fcGh5cyhwYWdlKQkocGFnZV90b19wZm4ocGFnZSkgPDwgUEFHRV9TSElGVCkKKworLyoKKyAqIE9wdGlvbmFsIGRldmljZSBETUEgYWRkcmVzcyByZW1hcHBpbmcuIERvIF9ub3RfIHVzZSBkaXJlY3RseSEKKyAqIFdlIHNob3VsZCByZWFsbHkgZWxpbWluYXRlIHZpcnRfdG9fYnVzKCkgaGVyZSAtIGl0J3MgZGVwcmVjYXRlZC4KKyAqLworI2lmbmRlZiBfX2FyY2hfcGFnZV90b19kbWEKKyNkZWZpbmUgcGFnZV90b19kbWEoZGV2LCBwYWdlKQkJKChkbWFfYWRkcl90KV9fdmlydF90b19idXMoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpKSkKKyNkZWZpbmUgZG1hX3RvX3ZpcnQoZGV2LCBhZGRyKQkJKCh2b2lkICopX19idXNfdG9fdmlydChhZGRyKSkKKyNkZWZpbmUgdmlydF90b19kbWEoZGV2LCBhZGRyKQkJKChkbWFfYWRkcl90KV9fdmlydF90b19idXMoKHVuc2lnbmVkIGxvbmcpKGFkZHIpKSkKKyNlbHNlCisjZGVmaW5lIHBhZ2VfdG9fZG1hKGRldiwgcGFnZSkJCShfX2FyY2hfcGFnZV90b19kbWEoZGV2LCBwYWdlKSkKKyNkZWZpbmUgZG1hX3RvX3ZpcnQoZGV2LCBhZGRyKQkJKF9fYXJjaF9kbWFfdG9fdmlydChkZXYsIGFkZHIpKQorI2RlZmluZSB2aXJ0X3RvX2RtYShkZXYsIGFkZHIpCQkoX19hcmNoX3ZpcnRfdG9fZG1hKGRldiwgYWRkcikpCisjZW5kaWYKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21tYW4uaCBiL2luY2x1ZGUvYXNtLWFybS9tbWFuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0ZjY5YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tbWFuLmgKQEAgLTAsMCArMSw0MyBAQAorI2lmbmRlZiBfX0FSTV9NTUFOX0hfXworI2RlZmluZSBfX0FSTV9NTUFOX0hfXworCisjZGVmaW5lIFBST1RfUkVBRAkweDEJCS8qIHBhZ2UgY2FuIGJlIHJlYWQgKi8KKyNkZWZpbmUgUFJPVF9XUklURQkweDIJCS8qIHBhZ2UgY2FuIGJlIHdyaXR0ZW4gKi8KKyNkZWZpbmUgUFJPVF9FWEVDCTB4NAkJLyogcGFnZSBjYW4gYmUgZXhlY3V0ZWQgKi8KKyNkZWZpbmUgUFJPVF9TRU0JMHg4CQkvKiBwYWdlIG1heSBiZSB1c2VkIGZvciBhdG9taWMgb3BzICovCisjZGVmaW5lIFBST1RfTk9ORQkweDAJCS8qIHBhZ2UgY2FuIG5vdCBiZSBhY2Nlc3NlZCAqLworI2RlZmluZSBQUk9UX0dST1dTRE9XTgkweDAxMDAwMDAwCS8qIG1wcm90ZWN0IGZsYWc6IGV4dGVuZCBjaGFuZ2UgdG8gc3RhcnQgb2YgZ3Jvd3Nkb3duIHZtYSAqLworI2RlZmluZSBQUk9UX0dST1dTVVAJMHgwMjAwMDAwMAkvKiBtcHJvdGVjdCBmbGFnOiBleHRlbmQgY2hhbmdlIHRvIGVuZCBvZiBncm93c3VwIHZtYSAqLworCisjZGVmaW5lIE1BUF9TSEFSRUQJMHgwMQkJLyogU2hhcmUgY2hhbmdlcyAqLworI2RlZmluZSBNQVBfUFJJVkFURQkweDAyCQkvKiBDaGFuZ2VzIGFyZSBwcml2YXRlICovCisjZGVmaW5lIE1BUF9UWVBFCTB4MGYJCS8qIE1hc2sgZm9yIHR5cGUgb2YgbWFwcGluZyAqLworI2RlZmluZSBNQVBfRklYRUQJMHgxMAkJLyogSW50ZXJwcmV0IGFkZHIgZXhhY3RseSAqLworI2RlZmluZSBNQVBfQU5PTllNT1VTCTB4MjAJCS8qIGRvbid0IHVzZSBhIGZpbGUgKi8KKworI2RlZmluZSBNQVBfR1JPV1NET1dOCTB4MDEwMAkJLyogc3RhY2stbGlrZSBzZWdtZW50ICovCisjZGVmaW5lIE1BUF9ERU5ZV1JJVEUJMHgwODAwCQkvKiBFVFhUQlNZICovCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFCTB4MTAwMAkJLyogbWFyayBpdCBhcyBhbiBleGVjdXRhYmxlICovCisjZGVmaW5lIE1BUF9MT0NLRUQJMHgyMDAwCQkvKiBwYWdlcyBhcmUgbG9ja2VkICovCisjZGVmaW5lIE1BUF9OT1JFU0VSVkUJMHg0MDAwCQkvKiBkb24ndCBjaGVjayBmb3IgcmVzZXJ2YXRpb25zICovCisjZGVmaW5lIE1BUF9QT1BVTEFURQkweDgwMDAJCS8qIHBvcHVsYXRlIChwcmVmYXVsdCkgcGFnZSB0YWJsZXMgKi8KKyNkZWZpbmUgTUFQX05PTkJMT0NLCTB4MTAwMDAJCS8qIGRvIG5vdCBibG9jayBvbiBJTyAqLworCisjZGVmaW5lIE1TX0FTWU5DCTEJCS8qIHN5bmMgbWVtb3J5IGFzeW5jaHJvbm91c2x5ICovCisjZGVmaW5lIE1TX0lOVkFMSURBVEUJMgkJLyogaW52YWxpZGF0ZSB0aGUgY2FjaGVzICovCisjZGVmaW5lIE1TX1NZTkMJCTQJCS8qIHN5bmNocm9ub3VzIG1lbW9yeSBzeW5jICovCisKKyNkZWZpbmUgTUNMX0NVUlJFTlQJMQkJLyogbG9jayBhbGwgY3VycmVudCBtYXBwaW5ncyAqLworI2RlZmluZSBNQ0xfRlVUVVJFCTIJCS8qIGxvY2sgYWxsIGZ1dHVyZSBtYXBwaW5ncyAqLworCisjZGVmaW5lIE1BRFZfTk9STUFMCTB4MAkJLyogZGVmYXVsdCBwYWdlLWluIGJlaGF2aW9yICovCisjZGVmaW5lIE1BRFZfUkFORE9NCTB4MQkJLyogcGFnZS1pbiBtaW5pbXVtIHJlcXVpcmVkICovCisjZGVmaW5lIE1BRFZfU0VRVUVOVElBTAkweDIJCS8qIHJlYWQtYWhlYWQgYWdncmVzc2l2ZWx5ICovCisjZGVmaW5lIE1BRFZfV0lMTE5FRUQJMHgzCQkvKiBwcmUtZmF1bHQgcGFnZXMgKi8KKyNkZWZpbmUgTUFEVl9ET05UTkVFRAkweDQJCS8qIGRpc2NhcmQgdGhlc2UgcGFnZXMgKi8KKworLyogY29tcGF0aWJpbGl0eSBmbGFncyAqLworI2RlZmluZSBNQVBfQU5PTglNQVBfQU5PTllNT1VTCisjZGVmaW5lIE1BUF9GSUxFCTAKKworI2VuZGlmIC8qIF9fQVJNX01NQU5fSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbW11LmggYi9pbmNsdWRlL2FzbS1hcm0vbW11LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1N2NiNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tbXUuaApAQCAtMCwwICsxLDE2IEBACisjaWZuZGVmIF9fQVJNX01NVV9ICisjZGVmaW5lIF9fQVJNX01NVV9ICisKK3R5cGVkZWYgc3RydWN0IHsKKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorCXVuc2lnbmVkIGludCBpZDsKKyNlbmRpZgorfSBtbV9jb250ZXh0X3Q7CisKKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorI2RlZmluZSBBU0lEKG1tKQkoKG1tKS0+Y29udGV4dC5pZCAmIDI1NSkKKyNlbHNlCisjZGVmaW5lIEFTSUQobW0pCSgwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21tdV9jb250ZXh0LmggYi9pbmNsdWRlL2FzbS1hcm0vbW11X2NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWY5YzQxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL21tdV9jb250ZXh0LmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbW11X2NvbnRleHQuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTYgUnVzc2VsbCBLaW5nLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIENoYW5nZWxvZzoKKyAqICAgMjctMDYtMTk5NglSTUsJQ3JlYXRlZAorICovCisjaWZuZGVmIF9fQVNNX0FSTV9NTVVfQ09OVEVYVF9ICisjZGVmaW5lIF9fQVNNX0FSTV9NTVVfQ09OVEVYVF9ICisKKyNpbmNsdWRlIDxhc20vcHJvYy1mbnMuaD4KKworI2lmIF9fTElOVVhfQVJNX0FSQ0hfXyA+PSA2CisKKy8qCisgKiBPbiBBUk12Niwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgQ29udGV4dCBJRDoKKyAqCisgKiAzMSAgICAgICAgICAgICAgICAgICAgICAgICA3ICAgICAgICAgIDAKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKworICogfCAgICAgIHByb2Nlc3MgSUQgICAgICAgICB8ICAgQVNJRCAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgIGNvbnRleHQgSUQgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogVGhlIEFTSUQgaXMgdXNlZCB0byB0YWcgZW50cmllcyBpbiB0aGUgQ1BVIGNhY2hlcyBhbmQgVExCcy4KKyAqIFRoZSBjb250ZXh0IElEIGlzIHVzZWQgYnkgZGVidWdnZXJzIGFuZCB0cmFjZSBsb2dpYywgYW5kCisgKiBzaG91bGQgYmUgdW5pcXVlIHdpdGhpbiBhbGwgcnVubmluZyBwcm9jZXNzZXMuCisgKi8KKyNkZWZpbmUgQVNJRF9CSVRTCTgKKyNkZWZpbmUgQVNJRF9NQVNLCSgofjApIDw8IEFTSURfQklUUykKKworZXh0ZXJuIHVuc2lnbmVkIGludCBjcHVfbGFzdF9hc2lkOworCit2b2lkIF9faW5pdF9uZXdfY29udGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pOwordm9pZCBfX25ld19jb250ZXh0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKKworc3RhdGljIGlubGluZSB2b2lkIGNoZWNrX2NvbnRleHQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCit7CisJaWYgKHVubGlrZWx5KChtbS0+Y29udGV4dC5pZCBeIGNwdV9sYXN0X2FzaWQpID4+IEFTSURfQklUUykpCisJCV9fbmV3X2NvbnRleHQobW0pOworfQorCisjZGVmaW5lIGluaXRfbmV3X2NvbnRleHQodHNrLG1tKQkoX19pbml0X25ld19jb250ZXh0KHRzayxtbSksMCkKKworI2Vsc2UKKworI2RlZmluZSBjaGVja19jb250ZXh0KG1tKQkJZG8geyB9IHdoaWxlICgwKQorI2RlZmluZSBpbml0X25ld19jb250ZXh0KHRzayxtbSkJMAorCisjZW5kaWYKKworI2RlZmluZSBkZXN0cm95X2NvbnRleHQobW0pCQlkbyB7IH0gd2hpbGUoMCkKKworLyoKKyAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gInRzayIgaXMgYWJvdXQgdG8gZW50ZXIgbGF6eSBUTEIgbW9kZS4KKyAqCisgKiBtbTogIGRlc2NyaWJlcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBtbSBjb250ZXh0CisgKiB0c2s6IHRhc2sgd2hpY2ggaXMgZW50ZXJpbmcgbGF6eSB0bGIKKyAqIGNwdTogY3B1IG51bWJlciB3aGljaCBpcyBlbnRlcmluZyBsYXp5IHRsYgorICoKKyAqIHRzay0+bW0gd2lsbCBiZSBOVUxMCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZW50ZXJfbGF6eV90bGIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoreworfQorCisvKgorICogVGhpcyBpcyB0aGUgYWN0dWFsIG1tIHN3aXRjaCBhcyBmYXIgYXMgdGhlIHNjaGVkdWxlcgorICogaXMgY29uY2VybmVkLiAgTm8gcmVnaXN0ZXJzIGFyZSB0b3VjaGVkLiAgV2UgYXZvaWQKKyAqIGNhbGxpbmcgdGhlIENQVSBzcGVjaWZpYyBmdW5jdGlvbiB3aGVuIHRoZSBtbSBoYXNuJ3QKKyAqIGFjdHVhbGx5IGNoYW5nZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorc3dpdGNoX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKnByZXYsIHN0cnVjdCBtbV9zdHJ1Y3QgKm5leHQsCisJICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKK3sKKwl1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJaWYgKHByZXYgIT0gbmV4dCkgeworCQljcHVfc2V0KGNwdSwgbmV4dC0+Y3B1X3ZtX21hc2spOworCQljaGVja19jb250ZXh0KG5leHQpOworCQljcHVfc3dpdGNoX21tKG5leHQtPnBnZCwgbmV4dCk7CisJCWNwdV9jbGVhcihjcHUsIHByZXYtPmNwdV92bV9tYXNrKTsKKwl9Cit9CisKKyNkZWZpbmUgZGVhY3RpdmF0ZV9tbSh0c2ssbW0pCWRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgYWN0aXZhdGVfbW0ocHJldixuZXh0KQlzd2l0Y2hfbW0ocHJldiwgbmV4dCwgTlVMTCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vbW16b25lLmggYi9pbmNsdWRlL2FzbS1hcm0vbW16b25lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3ZGUxNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9tbXpvbmUuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9tbXpvbmUuaAorICoKKyAqICAxOTk5LTEyLTI5CU5pY29sYXMgUGl0cmUJCUNyZWF0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9fQVNNX01NWk9ORV9ICisjZGVmaW5lIF9fQVNNX01NWk9ORV9ICisKKy8qCisgKiBDdXJyZW50bHkgZGVmaW5lZCBpbiBhcmNoL2FybS9tbS9kaXNjb250aWcuYworICovCitleHRlcm4gcGdfZGF0YV90IGRpc2NvbnRpZ19ub2RlX2RhdGFbXTsKKworLyoKKyAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5vZGUgZGF0YSBmb3Igbm9kZSBuLgorICovCisjZGVmaW5lIE5PREVfREFUQShuaWQpCQkoJmRpc2NvbnRpZ19ub2RlX2RhdGFbbmlkXSkKKworLyoKKyAqIE5PREVfTUVNX01BUCBnaXZlcyB0aGUga2FkZHIgZm9yIHRoZSBtZW1fbWFwIG9mIHRoZSBub2RlLgorICovCisjZGVmaW5lIE5PREVfTUVNX01BUChuaWQpCShOT0RFX0RBVEEobmlkKS0+bm9kZV9tZW1fbWFwKQorCisjaW5jbHVkZSA8YXNtL2FyY2gvbWVtb3J5Lmg+CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21vZHVsZS5oIGIvaW5jbHVkZS9hc20tYXJtL21vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YjE2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbW9kdWxlLmgKQEAgLTAsMCArMSwxOCBAQAorI2lmbmRlZiBfQVNNX0FSTV9NT0RVTEVfSAorI2RlZmluZSBfQVNNX0FSTV9NT0RVTEVfSAorCitzdHJ1Y3QgbW9kX2FyY2hfc3BlY2lmaWMKK3sKKwlpbnQgZm9vOworfTsKKworI2RlZmluZSBFbGZfU2hkcglFbGYzMl9TaGRyCisjZGVmaW5lIEVsZl9TeW0JCUVsZjMyX1N5bQorI2RlZmluZSBFbGZfRWhkcglFbGYzMl9FaGRyCisKKy8qCisgKiBJbmNsdWRlIHRoZSBBUk0gYXJjaGl0ZWN0dXJlIHZlcnNpb24uCisgKi8KKyNkZWZpbmUgTU9EVUxFX0FSQ0hfVkVSTUFHSUMJIkFSTXYiIF9fc3RyaW5naWZ5KF9fTElOVVhfQVJNX0FSQ0hfXykgIiAiCisKKyNlbmRpZiAvKiBfQVNNX0FSTV9NT0RVTEVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21zZ2J1Zi5oIGIvaW5jbHVkZS9hc20tYXJtL21zZ2J1Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYjM1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbXNnYnVmLmgKQEAgLTAsMCArMSwzMSBAQAorI2lmbmRlZiBfQVNNQVJNX01TR0JVRl9ICisjZGVmaW5lIF9BU01BUk1fTVNHQlVGX0gKKworLyogCisgKiBUaGUgbXNxaWQ2NF9kcyBzdHJ1Y3R1cmUgZm9yIGFybSBhcmNoaXRlY3R1cmUuCisgKiBOb3RlIGV4dHJhIHBhZGRpbmcgYmVjYXVzZSB0aGlzIHN0cnVjdHVyZSBpcyBwYXNzZWQgYmFjayBhbmQgZm9ydGgKKyAqIGJldHdlZW4ga2VybmVsIGFuZCB1c2VyIHNwYWNlLgorICoKKyAqIFBhZCBzcGFjZSBpcyBsZWZ0IGZvcjoKKyAqIC0gNjQtYml0IHRpbWVfdCB0byBzb2x2ZSB5MjAzOCBwcm9ibGVtCisgKiAtIDIgbWlzY2VsbGFuZW91cyAzMi1iaXQgdmFsdWVzCisgKi8KKworc3RydWN0IG1zcWlkNjRfZHMgeworCXN0cnVjdCBpcGM2NF9wZXJtIG1zZ19wZXJtOworCV9fa2VybmVsX3RpbWVfdCBtc2dfc3RpbWU7CS8qIGxhc3QgbXNnc25kIHRpbWUgKi8KKwl1bnNpZ25lZCBsb25nCV9fdW51c2VkMTsKKwlfX2tlcm5lbF90aW1lX3QgbXNnX3J0aW1lOwkvKiBsYXN0IG1zZ3JjdiB0aW1lICovCisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDI7CisJX19rZXJuZWxfdGltZV90IG1zZ19jdGltZTsJLyogbGFzdCBjaGFuZ2UgdGltZSAqLworCXVuc2lnbmVkIGxvbmcJX191bnVzZWQzOworCXVuc2lnbmVkIGxvbmcgIG1zZ19jYnl0ZXM7CS8qIGN1cnJlbnQgbnVtYmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCisJdW5zaWduZWQgbG9uZyAgbXNnX3FudW07CS8qIG51bWJlciBvZiBtZXNzYWdlcyBpbiBxdWV1ZSAqLworCXVuc2lnbmVkIGxvbmcgIG1zZ19xYnl0ZXM7CS8qIG1heCBudW1iZXIgb2YgYnl0ZXMgb24gcXVldWUgKi8KKwlfX2tlcm5lbF9waWRfdCBtc2dfbHNwaWQ7CS8qIHBpZCBvZiBsYXN0IG1zZ3NuZCAqLworCV9fa2VybmVsX3BpZF90IG1zZ19scnBpZDsJLyogbGFzdCByZWNlaXZlIHBpZCAqLworCXVuc2lnbmVkIGxvbmcgIF9fdW51c2VkNDsKKwl1bnNpZ25lZCBsb25nICBfX3VudXNlZDU7Cit9OworCisjZW5kaWYgLyogX0FTTUFSTV9NU0dCVUZfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL25hbWVpLmggYi9pbmNsdWRlL2FzbS1hcm0vbmFtZWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDAyZDNiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL25hbWVpLmgKQEAgLTAsMCArMSwyNSBAQAorLyogCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbmFtZWkuaAorICoKKyAqIFJvdXRpbmVzIHRvIGhhbmRsZSBmYW1vdXMgL3Vzci9nbmVtdWwKKyAqIERlcml2ZWQgZnJvbSB0aGUgU3BhcmMgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyAqCisgKiBJbmNsdWRlZCBmcm9tIGxpbnV4L2ZzL25hbWVpLmMKKyAqLworCisjaWZuZGVmIF9fQVNNQVJNX05BTUVJX0gKKyNkZWZpbmUgX19BU01BUk1fTkFNRUlfSAorCisjZGVmaW5lIEFSTV9CU0RfRU1VTCAidXNyL2duZW11bC9ic2QvIgorCitzdGF0aWMgaW5saW5lIGNoYXIgKl9fZW11bF9wcmVmaXgodm9pZCkKK3sKKwlzd2l0Y2ggKGN1cnJlbnQtPnBlcnNvbmFsaXR5KSB7CisJY2FzZSBQRVJfQlNEOgorCQlyZXR1cm4gQVJNX0JTRF9FTVVMOworCWRlZmF1bHQ6CisJCXJldHVybiBOVUxMOworCX0KK30KKworI2VuZGlmIC8qIF9fQVNNQVJNX05BTUVJX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9udW1ub2Rlcy5oIGIvaW5jbHVkZS9hc20tYXJtL251bW5vZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQyYTEwMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9udW1ub2Rlcy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL251bW5vZGVzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworLyogVGhpcyBkZWNsYXJhdGlvbiBmb3IgdGhlIHNpemUgb2YgdGhlIE5VTUEgKENPTkZJR19ESVNDT05USUdNRU0pCisgKiBtZW1vcnkgbm9kZSB0YWJsZSBpcyB0aGUgZGVmYXVsdC4KKyAqCisgKiBBIGdvb2QgcGxhY2UgdG8gb3ZlcnJpZGUgdGhpcyB2YWx1ZSBpcyBpbmNsdWRlL2FzbS9hcmNoL21lbW9yeS5oLgorICovCisKKyNpZm5kZWYgX19BU01fQVJNX05VTU5PREVTX0gKKyNkZWZpbmUgX19BU01fQVJNX05VTU5PREVTX0gKKworI2lmbmRlZiBOT0RFU19TSElGVAorIyBkZWZpbmUgTk9ERVNfU0hJRlQJMgkvKiBOb3JtYWxseSwgTWF4IDQgTm9kZXMgKi8KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9ud2ZsYXNoLmggYi9pbmNsdWRlL2FzbS1hcm0vbndmbGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ZTVhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbndmbGFzaC5oCkBAIC0wLDAgKzEsOSBAQAorI2lmbmRlZiBfRkxBU0hfSAorI2RlZmluZSBfRkxBU0hfSAorCisjZGVmaW5lIEZMQVNIX01JTk9SCQkgMTYwCS8qIE1BSk9SIGlzIDEwIC0gbWlzY2RldmljZSAqLworI2RlZmluZSBDTURfV1JJVEVfRElTQUJMRQkgMAorI2RlZmluZSBDTURfV1JJVEVfRU5BQkxFCSAweDI4CisjZGVmaW5lIENNRF9XUklURV9CQVNFNjRLX0VOQUJMRSAweDQ3CisKKyNlbmRpZiAvKiBfRkxBU0hfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3BhZ2UuaCBiL2luY2x1ZGUvYXNtLWFybS9wYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNhM2E4ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9wYWdlLmgKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3BhZ2UuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9BU01BUk1fUEFHRV9ICisjZGVmaW5lIF9BU01BUk1fUEFHRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworLyogUEFHRV9TSElGVCBkZXRlcm1pbmVzIHRoZSBwYWdlIHNpemUgKi8KKyNkZWZpbmUgUEFHRV9TSElGVAkJMTIKKyNkZWZpbmUgUEFHRV9TSVpFCQkoMVVMIDw8IFBBR0VfU0hJRlQpCisjZGVmaW5lIFBBR0VfTUFTSwkJKH4oUEFHRV9TSVpFLTEpKQorCisjaWZkZWYgX19LRVJORUxfXworCisvKiB0byBhbGlnbiB0aGUgcG9pbnRlciB0byB0aGUgKG5leHQpIHBhZ2UgYm91bmRhcnkgKi8KKyNkZWZpbmUgUEFHRV9BTElHTihhZGRyKQkoKChhZGRyKStQQUdFX1NJWkUtMSkmUEFHRV9NQVNLKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaW5jbHVkZSA8YXNtL2dsdWUuaD4KKworLyoKKyAqCVVzZXIgU3BhY2UgTW9kZWwKKyAqCT09PT09PT09PT09PT09PT0KKyAqCisgKglUaGlzIHNlY3Rpb24gc2VsZWN0cyB0aGUgY29ycmVjdCBzZXQgb2YgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGgKKyAqCXBhZ2UtYmFzZWQgY29weWluZyBhbmQgY2xlYXJpbmcgZm9yIHVzZXIgc3BhY2UgZm9yIHRoZSBwYXJ0aWN1bGFyCisgKglwcm9jZXNzb3Iocykgd2UncmUgYnVpbGRpbmcgZm9yLgorICoKKyAqCVdlIGhhdmUgdGhlIGZvbGxvd2luZyB0byBjaG9vc2UgZnJvbToKKyAqCSAgdjMJCS0gQVJNdjMKKyAqCSAgdjR3dAkJLSBBUk12NCB3aXRoIHdyaXRldGhyb3VnaCBjYWNoZSwgd2l0aG91dCBtaW5pY2FjaGUKKyAqCSAgdjR3YgkJLSBBUk12NCB3aXRoIHdyaXRlYmFjayBjYWNoZSwgd2l0aG91dCBtaW5pY2FjaGUKKyAqCSAgdjRfbWMJCS0gQVJNdjQgd2l0aCBtaW5pY2FjaGUKKyAqCSAgeHNjYWxlCS0gWHNjYWxlCisgKi8KKyN1bmRlZiBfVVNFUgorI3VuZGVmIE1VTFRJX1VTRVIKKworI2lmZGVmIENPTkZJR19DUFVfQ09QWV9WMworIyBpZmRlZiBfVVNFUgorIyAgZGVmaW5lIE1VTFRJX1VTRVIgMQorIyBlbHNlCisjICBkZWZpbmUgX1VTRVIgdjMKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9DT1BZX1Y0V1QKKyMgaWZkZWYgX1VTRVIKKyMgIGRlZmluZSBNVUxUSV9VU0VSIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9VU0VSIHY0d3QKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9DT1BZX1Y0V0IKKyMgaWZkZWYgX1VTRVIKKyMgIGRlZmluZSBNVUxUSV9VU0VSIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9VU0VSIHY0d2IKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9TQTExMDAKKyMgaWZkZWYgX1VTRVIKKyMgIGRlZmluZSBNVUxUSV9VU0VSIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9VU0VSIHY0X21jCisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19DUFVfWFNDQUxFCisjIGlmZGVmIF9VU0VSCisjICBkZWZpbmUgTVVMVElfVVNFUiAxCisjIGVsc2UKKyMgIGRlZmluZSBfVVNFUiB4c2NhbGVfbWMKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQVV9DT1BZX1Y2CisjIGRlZmluZSBNVUxUSV9VU0VSIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX1VTRVIpICYmICFkZWZpbmVkKE1VTFRJX1VTRVIpCisjZXJyb3IgVW5rbm93biB1c2VyIG9wZXJhdGlvbnMgbW9kZWwKKyNlbmRpZgorCitzdHJ1Y3QgY3B1X3VzZXJfZm5zIHsKKwl2b2lkICgqY3B1X2NsZWFyX3VzZXJfcGFnZSkodm9pZCAqcCwgdW5zaWduZWQgbG9uZyB1c2VyKTsKKwl2b2lkICgqY3B1X2NvcHlfdXNlcl9wYWdlKSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwKKwkJCQkgICB1bnNpZ25lZCBsb25nIHVzZXIpOworfTsKKworI2lmZGVmIE1VTFRJX1VTRVIKK2V4dGVybiBzdHJ1Y3QgY3B1X3VzZXJfZm5zIGNwdV91c2VyOworCisjZGVmaW5lIF9fY3B1X2NsZWFyX3VzZXJfcGFnZQljcHVfdXNlci5jcHVfY2xlYXJfdXNlcl9wYWdlCisjZGVmaW5lIF9fY3B1X2NvcHlfdXNlcl9wYWdlCWNwdV91c2VyLmNwdV9jb3B5X3VzZXJfcGFnZQorCisjZWxzZQorCisjZGVmaW5lIF9fY3B1X2NsZWFyX3VzZXJfcGFnZQlfX2dsdWUoX1VTRVIsX2NsZWFyX3VzZXJfcGFnZSkKKyNkZWZpbmUgX19jcHVfY29weV91c2VyX3BhZ2UJX19nbHVlKF9VU0VSLF9jb3B5X3VzZXJfcGFnZSkKKworZXh0ZXJuIHZvaWQgX19jcHVfY2xlYXJfdXNlcl9wYWdlKHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgdXNlcik7CitleHRlcm4gdm9pZCBfX2NwdV9jb3B5X3VzZXJfcGFnZSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwKKwkJCQkgdW5zaWduZWQgbG9uZyB1c2VyKTsKKyNlbmRpZgorCisjZGVmaW5lIGNsZWFyX3VzZXJfcGFnZShhZGRyLHZhZGRyLHBnKQkJCVwKKwlkbyB7CQkJCQkJXAorCQlwcmVlbXB0X2Rpc2FibGUoKTsJCQlcCisJCV9fY3B1X2NsZWFyX3VzZXJfcGFnZShhZGRyLCB2YWRkcik7CVwKKwkJcHJlZW1wdF9lbmFibGUoKTsJCQlcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBjb3B5X3VzZXJfcGFnZSh0byxmcm9tLHZhZGRyLHBnKQkJXAorCWRvIHsJCQkJCQlcCisJCXByZWVtcHRfZGlzYWJsZSgpOwkJCVwKKwkJX19jcHVfY29weV91c2VyX3BhZ2UodG8sIGZyb20sIHZhZGRyKTsJXAorCQlwcmVlbXB0X2VuYWJsZSgpOwkJCVwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIGNsZWFyX3BhZ2UocGFnZSkJbWVtemVybygodm9pZCAqKShwYWdlKSwgUEFHRV9TSVpFKQorZXh0ZXJuIHZvaWQgY29weV9wYWdlKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tKTsKKworI3VuZGVmIFNUUklDVF9NTV9UWVBFQ0hFQ0tTCisKKyNpZmRlZiBTVFJJQ1RfTU1fVFlQRUNIRUNLUworLyoKKyAqIFRoZXNlIGFyZSB1c2VkIHRvIG1ha2UgdXNlIG9mIEMgdHlwZS1jaGVja2luZy4uCisgKi8KK3R5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGU7IH0gcHRlX3Q7Cit0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcG1kOyB9IHBtZF90OwordHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBnZFsyXTsgfSBwZ2RfdDsKK3R5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CisKKyNkZWZpbmUgcHRlX3ZhbCh4KSAgICAgICgoeCkucHRlKQorI2RlZmluZSBwbWRfdmFsKHgpICAgICAgKCh4KS5wbWQpCisjZGVmaW5lIHBnZF92YWwoeCkJKCh4KS5wZ2RbMF0pCisjZGVmaW5lIHBncHJvdF92YWwoeCkgICAoKHgpLnBncHJvdCkKKworI2RlZmluZSBfX3B0ZSh4KSAgICAgICAgKChwdGVfdCkgeyAoeCkgfSApCisjZGVmaW5lIF9fcG1kKHgpICAgICAgICAoKHBtZF90KSB7ICh4KSB9ICkKKyNkZWZpbmUgX19wZ3Byb3QoeCkgICAgICgocGdwcm90X3QpIHsgKHgpIH0gKQorCisjZWxzZQorLyoKKyAqIC4uIHdoaWxlIHRoZXNlIG1ha2UgaXQgZWFzaWVyIG9uIHRoZSBjb21waWxlcgorICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcHRlX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcG1kX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGdkX3RbMl07Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGdwcm90X3Q7CisKKyNkZWZpbmUgcHRlX3ZhbCh4KSAgICAgICh4KQorI2RlZmluZSBwbWRfdmFsKHgpICAgICAgKHgpCisjZGVmaW5lIHBnZF92YWwoeCkJKCh4KVswXSkKKyNkZWZpbmUgcGdwcm90X3ZhbCh4KSAgICh4KQorCisjZGVmaW5lIF9fcHRlKHgpICAgICAgICAoeCkKKyNkZWZpbmUgX19wbWQoeCkgICAgICAgICh4KQorI2RlZmluZSBfX3BncHJvdCh4KSAgICAgKHgpCisKKyNlbmRpZiAvKiBTVFJJQ1RfTU1fVFlQRUNIRUNLUyAqLworCisvKiBQdXJlIDJebiB2ZXJzaW9uIG9mIGdldF9vcmRlciAqLworc3RhdGljIGlubGluZSBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlpbnQgb3JkZXI7CisKKwlzaXplID0gKHNpemUtMSkgPj4gKFBBR0VfU0hJRlQtMSk7CisJb3JkZXIgPSAtMTsKKwlkbyB7CisJCXNpemUgPj49IDE7CisJCW9yZGVyKys7CisJfSB3aGlsZSAoc2l6ZSk7CisJcmV0dXJuIG9yZGVyOworfQorCisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisjZGVmaW5lIFZNX0RBVEFfREVGQVVMVF9GTEFHUwkoVk1fUkVBRCB8IFZNX1dSSVRFIHwgVk1fRVhFQyB8IFwKKwkJCQkgVk1fTUFZUkVBRCB8IFZNX01BWVdSSVRFIHwgVk1fTUFZRVhFQykKKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcGFyYW0uaCBiL2luY2x1ZGUvYXNtLWFybS9wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MjIzZDRkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3BhcmFtLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vcGFyYW0uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIF9fQVNNX1BBUkFNX0gKKyNkZWZpbmUgX19BU01fUEFSQU1fSAorCisjaWZkZWYgX19LRVJORUxfXworIyBpbmNsdWRlIDxhc20vYXJjaC9wYXJhbS5oPgkJLyogZm9yIGtlcm5lbCB2ZXJzaW9uIG9mIEhaICovCisKKyMgaWZuZGVmIEhaCisjICBkZWZpbmUgSFoJCTEwMAkJLyogSW50ZXJuYWwga2VybmVsIHRpbWVyIGZyZXF1ZW5jeSAqLworIyBlbmRpZgorCisjIGRlZmluZSBVU0VSX0haCTEwMAkJLyogVXNlciBpbnRlcmZhY2VzIGFyZSBpbiAidGlja3MiICovCisjIGRlZmluZSBDTE9DS1NfUEVSX1NFQwkoVVNFUl9IWikJLyogbGlrZSB0aW1lcygpICovCisjZWxzZQorIyBkZWZpbmUgSFoJCTEwMAorI2VuZGlmCisKKyNkZWZpbmUgRVhFQ19QQUdFU0laRQk0MDk2CisKKyNpZm5kZWYgTk9HUk9VUAorI2RlZmluZSBOT0dST1VQICAgICAgICAgKC0xKQorI2VuZGlmCisKKy8qIG1heCBsZW5ndGggb2YgaG9zdG5hbWUgKi8KKyNkZWZpbmUgTUFYSE9TVE5BTUVMRU4gIDY0CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcGFycG9ydC5oIGIvaW5jbHVkZS9hc20tYXJtL3BhcnBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmY5MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3BhcnBvcnQuaApAQCAtMCwwICsxLDE4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wYXJwb3J0Lmg6IEFSTS1zcGVjaWZpYyBwYXJwb3J0IGluaXRpYWxpc2F0aW9uCisgKgorICogIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCAgVGltIFdhdWdoIDx0aW1AY3liZXJlbGsuZGVtb24uY28udWs+CisgKgorICogVGhpcyBmaWxlIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIGJ5IGRyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMuCisgKi8KKworI2lmbmRlZiBfX0FTTUFSTV9QQVJQT1JUX0gKKyNkZWZpbmUgX19BU01BUk1fUEFSUE9SVF9ICisKK3N0YXRpYyBpbnQgX19kZXZpbml0IHBhcnBvcnRfcGNfZmluZF9pc2FfcG9ydHMgKGludCBhdXRvaXJxLCBpbnQgYXV0b2RtYSk7CitzdGF0aWMgaW50IF9fZGV2aW5pdCBwYXJwb3J0X3BjX2ZpbmRfbm9ucGNpX3BvcnRzIChpbnQgYXV0b2lycSwgaW50IGF1dG9kbWEpCit7CisJcmV0dXJuIHBhcnBvcnRfcGNfZmluZF9pc2FfcG9ydHMgKGF1dG9pcnEsIGF1dG9kbWEpOworfQorCisjZW5kaWYgLyogIShfQVNNQVJNX1BBUlBPUlRfSCkgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9wY2kuaCBiL2luY2x1ZGUvYXNtLWFybS9wY2kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZmYWVmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3BjaS5oCkBAIC0wLDAgKzEsNTkgQEAKKyNpZm5kZWYgQVNNQVJNX1BDSV9ICisjZGVmaW5lIEFTTUFSTV9QQ0lfSAorCisjaWZkZWYgX19LRVJORUxfXworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BjaS1kbWEtY29tcGF0Lmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4gLyogZm9yIFBDSUJJT1NfTUlOXyogKi8KKworI2RlZmluZSBwY2liaW9zX3NjYW5fYWxsX2ZucyhhLCBiKQkwCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwY2liaW9zX3NldF9tYXN0ZXIoc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwkvKiBObyBzcGVjaWFsIGJ1cyBtYXN0ZXJpbmcgc2V0dXAgaGFuZGxpbmcgKi8KK30KKworc3RhdGljIGlubGluZSB2b2lkIHBjaWJpb3NfcGVuYWxpemVfaXNhX2lycShpbnQgaXJxKQoreworCS8qIFdlIGRvbid0IGRvIGR5bmFtaWMgUENJIElSUSBhbGxvY2F0aW9uICovCit9CisKKy8qCisgKiBUaGUgUENJIGFkZHJlc3Mgc3BhY2UgZG9lcyBlcXVhbCB0aGUgcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3Mgc3BhY2UuCisgKiBUaGUgbmV0d29ya2luZyBhbmQgYmxvY2sgZGV2aWNlIGxheWVycyB1c2UgdGhpcyBib29sZWFuIGZvciBib3VuY2UKKyAqIGJ1ZmZlciBkZWNpc2lvbnMuCisgKi8KKyNkZWZpbmUgUENJX0RNQV9CVVNfSVNfUEhZUyAgICAgKDApCisKKy8qCisgKiBXZSBkb24ndCBzdXBwb3J0IERBQyBETUEgY3ljbGVzLgorICovCisjZGVmaW5lIHBjaV9kYWNfZG1hX3N1cHBvcnRlZChwY2lfZGV2LCBtYXNrKQkoMCkKKworLyoKKyAqIFdoZXRoZXIgcGNpX3VubWFwX3tzaW5nbGUscGFnZX0gaXMgYSBub3AgZGVwZW5kcyB1cG9uIHRoZQorICogY29uZmlndXJhdGlvbi4KKyAqLworI2RlZmluZSBERUNMQVJFX1BDSV9VTk1BUF9BRERSKEFERFJfTkFNRSkJZG1hX2FkZHJfdCBBRERSX05BTUU7CisjZGVmaW5lIERFQ0xBUkVfUENJX1VOTUFQX0xFTihMRU5fTkFNRSkJCV9fdTMyIExFTl9OQU1FOworI2RlZmluZSBwY2lfdW5tYXBfYWRkcihQVFIsIEFERFJfTkFNRSkJCSgoUFRSKS0+QUREUl9OQU1FKQorI2RlZmluZSBwY2lfdW5tYXBfYWRkcl9zZXQoUFRSLCBBRERSX05BTUUsIFZBTCkJKCgoUFRSKS0+QUREUl9OQU1FKSA9IChWQUwpKQorI2RlZmluZSBwY2lfdW5tYXBfbGVuKFBUUiwgTEVOX05BTUUpCQkoKFBUUiktPkxFTl9OQU1FKQorI2RlZmluZSBwY2lfdW5tYXBfbGVuX3NldChQVFIsIExFTl9OQU1FLCBWQUwpCSgoKFBUUiktPkxFTl9OQU1FKSA9IChWQUwpKQorCisjZGVmaW5lIEhBVkVfUENJX01NQVAKK2V4dGVybiBpbnQgcGNpX21tYXBfcGFnZV9yYW5nZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBjaV9tbWFwX3N0YXRlIG1tYXBfc3RhdGUsIGludCB3cml0ZV9jb21iaW5lKTsKKworZXh0ZXJuIHZvaWQKK3BjaWJpb3NfcmVzb3VyY2VfdG9fYnVzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBwY2lfYnVzX3JlZ2lvbiAqcmVnaW9uLAorCQkJIHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKKworc3RhdGljIGlubGluZSB2b2lkIHBjaWJpb3NfYWRkX3BsYXRmb3JtX2VudHJpZXMoc3RydWN0IHBjaV9kZXYgKmRldikKK3sKK30KKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKyAKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oIGIvaW5jbHVkZS9hc20tYXJtL3BlcmNwdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZTMyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcGVyY3B1LmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fQVJNX1BFUkNQVQorI2RlZmluZSBfX0FSTV9QRVJDUFUKKworI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BlcmNwdS5oPgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9wZ2FsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vcGdhbGxvYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MTRmODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcGdhbGxvYy5oCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wZ2FsbG9jLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfQVNNQVJNX1BHQUxMT0NfSAorI2RlZmluZSBfQVNNQVJNX1BHQUxMT0NfSAorCisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CisjaW5jbHVkZSA8YXNtL3RsYmZsdXNoLmg+CisKKy8qCisgKiBTaW5jZSB3ZSBoYXZlIG9ubHkgdHdvLWxldmVsIHBhZ2UgdGFibGVzLCB0aGVzZSBhcmUgdHJpdmlhbAorICovCisjZGVmaW5lIHBtZF9hbGxvY19vbmUobW0sYWRkcikJCSh7IEJVRygpOyAoKHBtZF90ICopMik7IH0pCisjZGVmaW5lIHBtZF9mcmVlKHBtZCkJCQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHBnZF9wb3B1bGF0ZShtbSxwbWQscHRlKQlCVUcoKQorCitleHRlcm4gcGdkX3QgKmdldF9wZ2Rfc2xvdyhzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CitleHRlcm4gdm9pZCBmcmVlX3BnZF9zbG93KHBnZF90ICpwZ2QpOworCisjZGVmaW5lIHBnZF9hbGxvYyhtbSkJCQlnZXRfcGdkX3Nsb3cobW0pCisjZGVmaW5lIHBnZF9mcmVlKHBnZCkJCQlmcmVlX3BnZF9zbG93KHBnZCkKKworI2RlZmluZSBjaGVja19wZ3RfY2FjaGUoKQkJZG8geyB9IHdoaWxlICgwKQorCisvKgorICogQWxsb2NhdGUgb25lIFBURSB0YWJsZS4KKyAqCisgKiBUaGlzIGFjdHVhbGx5IGFsbG9jYXRlcyB0d28gaGFyZHdhcmUgUFRFIHRhYmxlcywgYnV0IHdlIHdyYXAgdGhpcyB1cAorICogaW50byBvbmUgdGFibGUgdGh1czoKKyAqCisgKiAgKy0tLS0tLS0tLS0tLSsKKyAqICB8ICBoL3cgcHQgMCAgfAorICogICstLS0tLS0tLS0tLS0rCisgKiAgfCAgaC93IHB0IDEgIHwKKyAqICArLS0tLS0tLS0tLS0tKworICogIHwgTGludXggcHQgMCB8CisgKiAgKy0tLS0tLS0tLS0tLSsKKyAqICB8IExpbnV4IHB0IDEgfAorICogICstLS0tLS0tLS0tLS0rCisgKi8KK3N0YXRpYyBpbmxpbmUgcHRlX3QgKgorcHRlX2FsbG9jX29uZV9rZXJuZWwoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKwlwdGVfdCAqcHRlOworCisJcHRlID0gKHB0ZV90ICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUx8X19HRlBfUkVQRUFUfF9fR0ZQX1pFUk8pOworCWlmIChwdGUpIHsKKwkJY2xlYW5fZGNhY2hlX2FyZWEocHRlLCBzaXplb2YocHRlX3QpICogUFRSU19QRVJfUFRFKTsKKwkJcHRlICs9IFBUUlNfUEVSX1BURTsKKwl9CisKKwlyZXR1cm4gcHRlOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICoKK3B0ZV9hbGxvY19vbmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKwlzdHJ1Y3QgcGFnZSAqcHRlOworCisJcHRlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTHxfX0dGUF9SRVBFQVR8X19HRlBfWkVSTywgMCk7CisJaWYgKHB0ZSkgeworCQl2b2lkICpwYWdlID0gcGFnZV9hZGRyZXNzKHB0ZSk7CisJCWNsZWFuX2RjYWNoZV9hcmVhKHBhZ2UsIHNpemVvZihwdGVfdCkgKiBQVFJTX1BFUl9QVEUpOworCX0KKworCXJldHVybiBwdGU7Cit9CisKKy8qCisgKiBGcmVlIG9uZSBQVEUgdGFibGUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBwdGVfZnJlZV9rZXJuZWwocHRlX3QgKnB0ZSkKK3sKKwlpZiAocHRlKSB7CisJCXB0ZSAtPSBQVFJTX1BFUl9QVEU7CisJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwdGUpOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkIHB0ZV9mcmVlKHN0cnVjdCBwYWdlICpwdGUpCit7CisJX19mcmVlX3BhZ2UocHRlKTsKK30KKworLyoKKyAqIFBvcHVsYXRlIHRoZSBwbWRwIGVudHJ5IHdpdGggYSBwb2ludGVyIHRvIHRoZSBwdGUuICBUaGlzIHBtZCBpcyBwYXJ0CisgKiBvZiB0aGUgbW0gYWRkcmVzcyBzcGFjZS4KKyAqCisgKiBFbnN1cmUgdGhhdCB3ZSBhbHdheXMgc2V0IGJvdGggUE1EIGVudHJpZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcG1kX3BvcHVsYXRlX2tlcm5lbChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZHAsIHB0ZV90ICpwdGVwKQoreworCXVuc2lnbmVkIGxvbmcgcHRlX3B0ciA9ICh1bnNpZ25lZCBsb25nKXB0ZXA7CisJdW5zaWduZWQgbG9uZyBwbWR2YWw7CisKKwlCVUdfT04obW0gIT0gJmluaXRfbW0pOworCisJLyoKKwkgKiBUaGUgcG1kIG11c3QgYmUgbG9hZGVkIHdpdGggdGhlIHBoeXNpY2FsCisJICogYWRkcmVzcyBvZiB0aGUgUFRFIHRhYmxlCisJICovCisJcHRlX3B0ciAtPSBQVFJTX1BFUl9QVEUgKiBzaXplb2Yodm9pZCAqKTsKKwlwbWR2YWwgPSBfX3BhKHB0ZV9wdHIpIHwgX1BBR0VfS0VSTkVMX1RBQkxFOworCXBtZHBbMF0gPSBfX3BtZChwbWR2YWwpOworCXBtZHBbMV0gPSBfX3BtZChwbWR2YWwgKyAyNTYgKiBzaXplb2YocHRlX3QpKTsKKwlmbHVzaF9wbWRfZW50cnkocG1kcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorcG1kX3BvcHVsYXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kcCwgc3RydWN0IHBhZ2UgKnB0ZXApCit7CisJdW5zaWduZWQgbG9uZyBwbWR2YWw7CisKKwlCVUdfT04obW0gPT0gJmluaXRfbW0pOworCisJcG1kdmFsID0gcGFnZV90b19wZm4ocHRlcCkgPDwgUEFHRV9TSElGVCB8IF9QQUdFX1VTRVJfVEFCTEU7CisJcG1kcFswXSA9IF9fcG1kKHBtZHZhbCk7CisJcG1kcFsxXSA9IF9fcG1kKHBtZHZhbCArIDI1NiAqIHNpemVvZihwdGVfdCkpOworCWZsdXNoX3BtZF9lbnRyeShwbWRwKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tYXJtL3BndGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWZmYjFmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3BndGFibGUuaApAQCAtMCwwICsxLDQzMyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vcGd0YWJsZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX0FTTUFSTV9QR1RBQkxFX0gKKyNkZWZpbmUgX0FTTUFSTV9QR1RBQkxFX0gKKworI2luY2x1ZGUgPGFzbS1nZW5lcmljLzRsZXZlbC1maXh1cC5oPgorCisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS9wcm9jLWZucy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3ZtYWxsb2MuaD4KKworLyoKKyAqIEhhcmR3YXJlLXdpc2UsIHdlIGhhdmUgYSB0d28gbGV2ZWwgcGFnZSB0YWJsZSBzdHJ1Y3R1cmUsIHdoZXJlIHRoZSBmaXJzdAorICogbGV2ZWwgaGFzIDQwOTYgZW50cmllcywgYW5kIHRoZSBzZWNvbmQgbGV2ZWwgaGFzIDI1NiBlbnRyaWVzLiAgRWFjaCBlbnRyeQorICogaXMgb25lIDMyLWJpdCB3b3JkLiAgTW9zdCBvZiB0aGUgYml0cyBpbiB0aGUgc2Vjb25kIGxldmVsIGVudHJ5IGFyZSB1c2VkCisgKiBieSBoYXJkd2FyZSwgYW5kIHRoZXJlIGFyZW4ndCBhbnkgImFjY2Vzc2VkIiBhbmQgImRpcnR5IiBiaXRzLgorICoKKyAqIExpbnV4IG9uIHRoZSBvdGhlciBoYW5kIGhhcyBhIHRocmVlIGxldmVsIHBhZ2UgdGFibGUgc3RydWN0dXJlLCB3aGljaCBjYW4KKyAqIGJlIHdyYXBwZWQgdG8gZml0IGEgdHdvIGxldmVsIHBhZ2UgdGFibGUgc3RydWN0dXJlIGVhc2lseSAtIHVzaW5nIHRoZSBQR0QKKyAqIGFuZCBQVEUgb25seS4gIEhvd2V2ZXIsIExpbnV4IGFsc28gZXhwZWN0cyBvbmUgIlBURSIgdGFibGUgcGVyIHBhZ2UsIGFuZAorICogYXQgbGVhc3QgYSAiZGlydHkiIGJpdC4KKyAqCisgKiBUaGVyZWZvcmUsIHdlIHR3ZWFrIHRoZSBpbXBsZW1lbnRhdGlvbiBzbGlnaHRseSAtIHdlIHRlbGwgTGludXggdGhhdCB3ZQorICogaGF2ZSAyMDQ4IGVudHJpZXMgaW4gdGhlIGZpcnN0IGxldmVsLCBlYWNoIG9mIHdoaWNoIGlzIDggYnl0ZXMgKGlvdywgdHdvCisgKiBoYXJkd2FyZSBwb2ludGVycyB0byB0aGUgc2Vjb25kIGxldmVsLikgIFRoZSBzZWNvbmQgbGV2ZWwgY29udGFpbnMgdHdvCisgKiBoYXJkd2FyZSBQVEUgdGFibGVzIGFycmFuZ2VkIGNvbnRpZ3VvdXNseSwgZm9sbG93ZWQgYnkgTGludXggdmVyc2lvbnMKKyAqIHdoaWNoIGNvbnRhaW4gdGhlIHN0YXRlIGluZm9ybWF0aW9uIExpbnV4IG5lZWRzLiAgV2UsIHRoZXJlZm9yZSwgZW5kIHVwCisgKiB3aXRoIDUxMiBlbnRyaWVzIGluIHRoZSAiUFRFIiBsZXZlbC4KKyAqCisgKiBUaGlzIGxlYWRzIHRvIHRoZSBwYWdlIHRhYmxlcyBoYXZpbmcgdGhlIGZvbGxvd2luZyBsYXlvdXQ6CisgKgorICogICAgcGdkICAgICAgICAgICAgIHB0ZQorICogfCAgICAgICAgfAorICogKy0tLS0tLS0tKyArMAorICogfCAgICAgICAgfC0tLS0tPiArLS0tLS0tLS0tLS0tKyArMAorICogKy0gLSAtIC0gKyArNCAgICB8ICBoL3cgcHQgMCAgfAorICogfCAgICAgICAgfC0tLS0tPiArLS0tLS0tLS0tLS0tKyArMTAyNAorICogKy0tLS0tLS0tKyArOCAgICB8ICBoL3cgcHQgMSAgfAorICogfCAgICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tKyArMjA0OAorICogKy0gLSAtIC0gKyAgICAgICB8IExpbnV4IHB0IDAgfAorICogfCAgICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tKyArMzA3MgorICogKy0tLS0tLS0tKyAgICAgICB8IExpbnV4IHB0IDEgfAorICogfCAgICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tKyArNDA5NgorICoKKyAqIFNlZSBMX1BURV94eHggYmVsb3cgZm9yIGRlZmluaXRpb25zIG9mIGJpdHMgaW4gdGhlICJMaW51eCBwdCIsIGFuZAorICogUFRFX3h4eCBmb3IgZGVmaW5pdGlvbnMgb2YgYml0cyBhcHBlYXJpbmcgaW4gdGhlICJoL3cgcHQiLgorICoKKyAqIFBNRF94eHggZGVmaW5pdGlvbnMgcmVmZXIgdG8gYml0cyBpbiB0aGUgZmlyc3QgbGV2ZWwgcGFnZSB0YWJsZS4KKyAqCisgKiBUaGUgImRpcnR5IiBiaXQgaXMgZW11bGF0ZWQgYnkgb25seSBncmFudGluZyBoYXJkd2FyZSB3cml0ZSBwZXJtaXNzaW9uCisgKiBpZmYgdGhlIHBhZ2UgaXMgbWFya2VkICJ3cml0YWJsZSIgYW5kICJkaXJ0eSIgaW4gdGhlIExpbnV4IFBURS4gIFRoaXMKKyAqIG1lYW5zIHRoYXQgYSB3cml0ZSB0byBhIGNsZWFuIHBhZ2Ugd2lsbCBjYXVzZSBhIHBlcm1pc3Npb24gZmF1bHQsIGFuZAorICogdGhlIExpbnV4IE1NIGxheWVyIHdpbGwgbWFyayB0aGUgcGFnZSBkaXJ0eSB2aWEgaGFuZGxlX3B0ZV9mYXVsdCgpLgorICogRm9yIHRoZSBoYXJkd2FyZSB0byBub3RpY2UgdGhlIHBlcm1pc3Npb24gY2hhbmdlLCB0aGUgVExCIGVudHJ5IG11c3QKKyAqIGJlIGZsdXNoZWQsIGFuZCBwdGVwX2VzdGFibGlzaCgpIGRvZXMgdGhhdCBmb3IgdXMuCisgKgorICogVGhlICJhY2Nlc3NlZCIgb3IgInlvdW5nIiBiaXQgaXMgZW11bGF0ZWQgYnkgYSBzaW1pbGFyIG1ldGhvZDsgd2Ugb25seQorICogYWxsb3cgYWNjZXNzZXMgdG8gdGhlIHBhZ2UgaWYgdGhlICJ5b3VuZyIgYml0IGlzIHNldC4gIEFjY2Vzc2VzIHRvIHRoZQorICogcGFnZSB3aWxsIGNhdXNlIGEgZmF1bHQsIGFuZCBoYW5kbGVfcHRlX2ZhdWx0KCkgd2lsbCBzZXQgdGhlIHlvdW5nIGJpdAorICogZm9yIHVzIGFzIGxvbmcgYXMgdGhlIHBhZ2UgaXMgbWFya2VkIHByZXNlbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgTGludXgKKyAqIFBURSBlbnRyeS4gIEFnYWluLCBwdGVwX2VzdGFibGlzaCgpIHdpbGwgZW5zdXJlIHRoYXQgdGhlIFRMQiBpcyB1cCB0bworICogZGF0ZS4KKyAqCisgKiBIb3dldmVyLCB3aGVuIHRoZSAieW91bmciIGJpdCBpcyBjbGVhcmVkLCB3ZSBkZW55IGFjY2VzcyB0byB0aGUgcGFnZQorICogYnkgY2xlYXJpbmcgdGhlIGhhcmR3YXJlIFBURS4gIEN1cnJlbnRseSBMaW51eCBkb2VzIG5vdCBmbHVzaCB0aGUgVExCCisgKiBmb3IgdXMgaW4gdGhpcyBjYXNlLCB3aGljaCBtZWFucyB0aGUgVExCIHdpbGwgcmV0YWluIHRoZSB0cmFuc2F0aW9uCisgKiB1bnRpbCBlaXRoZXIgdGhlIFRMQiBlbnRyeSBpcyBldmljdGVkIHVuZGVyIHByZXNzdXJlLCBvciBhIGNvbnRleHQKKyAqIHN3aXRjaCB3aGljaCBjaGFuZ2VzIHRoZSB1c2VyIHNwYWNlIG1hcHBpbmcgb2NjdXJzLgorICovCisjZGVmaW5lIFBUUlNfUEVSX1BURQkJNTEyCisjZGVmaW5lIFBUUlNfUEVSX1BNRAkJMQorI2RlZmluZSBQVFJTX1BFUl9QR0QJCTIwNDgKKworLyoKKyAqIFBNRF9TSElGVCBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBhcmVhIGEgc2Vjb25kLWxldmVsIHBhZ2UgdGFibGUgY2FuIG1hcAorICogUEdESVJfU0hJRlQgZGV0ZXJtaW5lcyB3aGF0IGEgdGhpcmQtbGV2ZWwgcGFnZSB0YWJsZSBlbnRyeSBjYW4gbWFwCisgKi8KKyNkZWZpbmUgUE1EX1NISUZUCQkyMQorI2RlZmluZSBQR0RJUl9TSElGVAkJMjEKKworI2RlZmluZSBMSUJSQVJZX1RFWFRfU1RBUlQJMHgwYzAwMDAwMAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHZvaWQgX19wdGVfZXJyb3IoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIHVuc2lnbmVkIGxvbmcgdmFsKTsKK2V4dGVybiB2b2lkIF9fcG1kX2Vycm9yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCB1bnNpZ25lZCBsb25nIHZhbCk7CitleHRlcm4gdm9pZCBfX3BnZF9lcnJvcihjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgdW5zaWduZWQgbG9uZyB2YWwpOworCisjZGVmaW5lIHB0ZV9FUlJPUihwdGUpCQlfX3B0ZV9lcnJvcihfX0ZJTEVfXywgX19MSU5FX18sIHB0ZV92YWwocHRlKSkKKyNkZWZpbmUgcG1kX0VSUk9SKHBtZCkJCV9fcG1kX2Vycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgcG1kX3ZhbChwbWQpKQorI2RlZmluZSBwZ2RfRVJST1IocGdkKQkJX19wZ2RfZXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBwZ2RfdmFsKHBnZCkpCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisjZGVmaW5lIFBNRF9TSVpFCQkoMVVMIDw8IFBNRF9TSElGVCkKKyNkZWZpbmUgUE1EX01BU0sJCSh+KFBNRF9TSVpFLTEpKQorI2RlZmluZSBQR0RJUl9TSVpFCQkoMVVMIDw8IFBHRElSX1NISUZUKQorI2RlZmluZSBQR0RJUl9NQVNLCQkofihQR0RJUl9TSVpFLTEpKQorCisjZGVmaW5lIEZJUlNUX1VTRVJfUEdEX05SCTEKKyNkZWZpbmUgVVNFUl9QVFJTX1BFUl9QR0QJKChUQVNLX1NJWkUvUEdESVJfU0laRSkgLSBGSVJTVF9VU0VSX1BHRF9OUikKKworLyoKKyAqIEFSTXY2IHN1cGVyc2VjdGlvbiBhZGRyZXNzIG1hc2sgYW5kIHNpemUgZGVmaW5pdGlvbnMuCisgKi8KKyNkZWZpbmUgU1VQRVJTRUNUSU9OX1NISUZUCTI0CisjZGVmaW5lIFNVUEVSU0VDVElPTl9TSVpFCSgxVUwgPDwgU1VQRVJTRUNUSU9OX1NISUZUKQorI2RlZmluZSBTVVBFUlNFQ1RJT05fTUFTSwkofihTVVBFUlNFQ1RJT05fU0laRS0xKSkKKworLyoKKyAqIEhhcmR3YXJlIHBhZ2UgdGFibGUgZGVmaW5pdGlvbnMuCisgKgorICogKyBMZXZlbCAxIGRlc2NyaXB0b3IgKFBNRCkKKyAqICAgLSBjb21tb24KKyAqLworI2RlZmluZSBQTURfVFlQRV9NQVNLCQkoMyA8PCAwKQorI2RlZmluZSBQTURfVFlQRV9GQVVMVAkJKDAgPDwgMCkKKyNkZWZpbmUgUE1EX1RZUEVfVEFCTEUJCSgxIDw8IDApCisjZGVmaW5lIFBNRF9UWVBFX1NFQ1QJCSgyIDw8IDApCisjZGVmaW5lIFBNRF9CSVQ0CQkoMSA8PCA0KQorI2RlZmluZSBQTURfRE9NQUlOKHgpCQkoKHgpIDw8IDUpCisjZGVmaW5lIFBNRF9QUk9URUNUSU9OCQkoMSA8PCA5KQkvKiB2NSAqLworLyoKKyAqICAgLSBzZWN0aW9uCisgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfQlVGRkVSQUJMRQkoMSA8PCAyKQorI2RlZmluZSBQTURfU0VDVF9DQUNIRUFCTEUJKDEgPDwgMykKKyNkZWZpbmUgUE1EX1NFQ1RfQVBfV1JJVEUJKDEgPDwgMTApCisjZGVmaW5lIFBNRF9TRUNUX0FQX1JFQUQJKDEgPDwgMTEpCisjZGVmaW5lIFBNRF9TRUNUX1RFWCh4KQkJKCh4KSA8PCAxMikJLyogdjUgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfQVBYCQkoMSA8PCAxNSkJLyogdjYgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfUwkJKDEgPDwgMTYpCS8qIHY2ICovCisjZGVmaW5lIFBNRF9TRUNUX25HCQkoMSA8PCAxNykJLyogdjYgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfU1VQRVIJCSgxIDw8IDE4KQkvKiB2NiAqLworCisjZGVmaW5lIFBNRF9TRUNUX1VOQ0FDSEVECSgwKQorI2RlZmluZSBQTURfU0VDVF9CVUZGRVJFRAkoUE1EX1NFQ1RfQlVGRkVSQUJMRSkKKyNkZWZpbmUgUE1EX1NFQ1RfV1QJCShQTURfU0VDVF9DQUNIRUFCTEUpCisjZGVmaW5lIFBNRF9TRUNUX1dCCQkoUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgUE1EX1NFQ1RfQlVGRkVSQUJMRSkKKyNkZWZpbmUgUE1EX1NFQ1RfTUlOSUNBQ0hFCShQTURfU0VDVF9URVgoMSkgfCBQTURfU0VDVF9DQUNIRUFCTEUpCisjZGVmaW5lIFBNRF9TRUNUX1dCV0EJCShQTURfU0VDVF9URVgoMSkgfCBQTURfU0VDVF9DQUNIRUFCTEUgfCBQTURfU0VDVF9CVUZGRVJBQkxFKQorCisvKgorICogICAtIGNvYXJzZSB0YWJsZSAobm90IHVzZWQpCisgKi8KKworLyoKKyAqICsgTGV2ZWwgMiBkZXNjcmlwdG9yIChQVEUpCisgKiAgIC0gY29tbW9uCisgKi8KKyNkZWZpbmUgUFRFX1RZUEVfTUFTSwkJKDMgPDwgMCkKKyNkZWZpbmUgUFRFX1RZUEVfRkFVTFQJCSgwIDw8IDApCisjZGVmaW5lIFBURV9UWVBFX0xBUkdFCQkoMSA8PCAwKQorI2RlZmluZSBQVEVfVFlQRV9TTUFMTAkJKDIgPDwgMCkKKyNkZWZpbmUgUFRFX1RZUEVfRVhUCQkoMyA8PCAwKQkvKiB2NSAqLworI2RlZmluZSBQVEVfQlVGRkVSQUJMRQkJKDEgPDwgMikKKyNkZWZpbmUgUFRFX0NBQ0hFQUJMRQkJKDEgPDwgMykKKworLyoKKyAqICAgLSBleHRlbmRlZCBzbWFsbCBwYWdlL3RpbnkgcGFnZQorICovCisjZGVmaW5lIFBURV9FWFRfQVBfTUFTSwkJKDMgPDwgNCkKKyNkZWZpbmUgUFRFX0VYVF9BUF9VTk9fU1JPCSgwIDw8IDQpCisjZGVmaW5lIFBURV9FWFRfQVBfVU5PX1NSVwkoMSA8PCA0KQorI2RlZmluZSBQVEVfRVhUX0FQX1VST19TUlcJKDIgPDwgNCkKKyNkZWZpbmUgUFRFX0VYVF9BUF9VUldfU1JXCSgzIDw8IDQpCisjZGVmaW5lIFBURV9FWFRfVEVYKHgpCQkoKHgpIDw8IDYpCS8qIHY1ICovCisKKy8qCisgKiAgIC0gc21hbGwgcGFnZQorICovCisjZGVmaW5lIFBURV9TTUFMTF9BUF9NQVNLCSgweGZmIDw8IDQpCisjZGVmaW5lIFBURV9TTUFMTF9BUF9VTk9fU1JPCSgweDAwIDw8IDQpCisjZGVmaW5lIFBURV9TTUFMTF9BUF9VTk9fU1JXCSgweDU1IDw8IDQpCisjZGVmaW5lIFBURV9TTUFMTF9BUF9VUk9fU1JXCSgweGFhIDw8IDQpCisjZGVmaW5lIFBURV9TTUFMTF9BUF9VUldfU1JXCSgweGZmIDw8IDQpCisKKy8qCisgKiAiTGludXgiIFBURSBkZWZpbml0aW9ucy4KKyAqCisgKiBXZSBrZWVwIHR3byBzZXRzIG9mIFBURXMgLSB0aGUgaGFyZHdhcmUgYW5kIHRoZSBsaW51eCB2ZXJzaW9uLgorICogVGhpcyBhbGxvd3MgZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiB0aGUgd2F5IHdlIG1hcCB0aGUgTGludXggYml0cworICogb250byB0aGUgaGFyZHdhcmUgdGFibGVzLCBhbmQgYWxsb3dzIHVzIHRvIGhhdmUgWU9VTkcgYW5kIERJUlRZCisgKiBiaXRzLgorICoKKyAqIFRoZSBQVEUgdGFibGUgcG9pbnRlciByZWZlcnMgdG8gdGhlIGhhcmR3YXJlIGVudHJpZXM7IHRoZSAiTGludXgiCisgKiBlbnRyaWVzIGFyZSBzdG9yZWQgMTAyNCBieXRlcyBiZWxvdy4KKyAqLworI2RlZmluZSBMX1BURV9QUkVTRU5UCQkoMSA8PCAwKQorI2RlZmluZSBMX1BURV9GSUxFCQkoMSA8PCAxKQkvKiBvbmx5IHdoZW4gIVBSRVNFTlQgKi8KKyNkZWZpbmUgTF9QVEVfWU9VTkcJCSgxIDw8IDEpCisjZGVmaW5lIExfUFRFX0JVRkZFUkFCTEUJKDEgPDwgMikJLyogbWF0Y2hlcyBQVEUgKi8KKyNkZWZpbmUgTF9QVEVfQ0FDSEVBQkxFCQkoMSA8PCAzKQkvKiBtYXRjaGVzIFBURSAqLworI2RlZmluZSBMX1BURV9VU0VSCQkoMSA8PCA0KQorI2RlZmluZSBMX1BURV9XUklURQkJKDEgPDwgNSkKKyNkZWZpbmUgTF9QVEVfRVhFQwkJKDEgPDwgNikKKyNkZWZpbmUgTF9QVEVfRElSVFkJCSgxIDw8IDcpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKyNpbmNsdWRlIDxhc20vZG9tYWluLmg+CisKKyNkZWZpbmUgX1BBR0VfVVNFUl9UQUJMRQkoUE1EX1RZUEVfVEFCTEUgfCBQTURfQklUNCB8IFBNRF9ET01BSU4oRE9NQUlOX1VTRVIpKQorI2RlZmluZSBfUEFHRV9LRVJORUxfVEFCTEUJKFBNRF9UWVBFX1RBQkxFIHwgUE1EX0JJVDQgfCBQTURfRE9NQUlOKERPTUFJTl9LRVJORUwpKQorCisvKgorICogVGhlIGZvbGxvd2luZyBtYWNyb3MgaGFuZGxlIHRoZSBjYWNoZSBhbmQgYnVmZmVyYWJsZSBiaXRzLi4uCisgKi8KKyNkZWZpbmUgX0xfUFRFX0RFRkFVTFQJTF9QVEVfUFJFU0VOVCB8IExfUFRFX1lPVU5HIHwgTF9QVEVfQ0FDSEVBQkxFIHwgTF9QVEVfQlVGRkVSQUJMRQorI2RlZmluZSBfTF9QVEVfUkVBRAlMX1BURV9VU0VSIHwgTF9QVEVfRVhFQworCitleHRlcm4gcGdwcm90X3QJCXBncHJvdF9rZXJuZWw7CisKKyNkZWZpbmUgUEFHRV9OT05FICAgICAgIF9fcGdwcm90KF9MX1BURV9ERUZBVUxUKQorI2RlZmluZSBQQUdFX0NPUFkgICAgICAgX19wZ3Byb3QoX0xfUFRFX0RFRkFVTFQgfCBfTF9QVEVfUkVBRCkKKyNkZWZpbmUgUEFHRV9TSEFSRUQgICAgIF9fcGdwcm90KF9MX1BURV9ERUZBVUxUIHwgX0xfUFRFX1JFQUQgfCBMX1BURV9XUklURSkKKyNkZWZpbmUgUEFHRV9SRUFET05MWSAgIF9fcGdwcm90KF9MX1BURV9ERUZBVUxUIHwgX0xfUFRFX1JFQUQpCisjZGVmaW5lIFBBR0VfS0VSTkVMCXBncHJvdF9rZXJuZWwKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisvKgorICogVGhlIHRhYmxlIGJlbG93IGRlZmluZXMgdGhlIHBhZ2UgcHJvdGVjdGlvbiBsZXZlbHMgdGhhdCB3ZSBpbnNlcnQgaW50byBvdXIKKyAqIExpbnV4IHBhZ2UgdGFibGUgdmVyc2lvbi4gIFRoZXNlIGdldCB0cmFuc2xhdGVkIGludG8gdGhlIGJlc3QgdGhhdCB0aGUKKyAqIGFyY2hpdGVjdHVyZSBjYW4gcGVyZm9ybS4gIE5vdGUgdGhhdCBvbiBtb3N0IEFSTSBoYXJkd2FyZToKKyAqICAxKSBXZSBjYW5ub3QgZG8gZXhlY3V0ZSBwcm90ZWN0aW9uCisgKiAgMikgSWYgd2UgY291bGQgZG8gZXhlY3V0ZSBwcm90ZWN0aW9uLCB0aGVuIHJlYWQgaXMgaW1wbGllZAorICogIDMpIHdyaXRlIGltcGxpZXMgcmVhZCBwZXJtaXNzaW9ucworICovCisjZGVmaW5lIF9fUDAwMCAgUEFHRV9OT05FCisjZGVmaW5lIF9fUDAwMSAgUEFHRV9SRUFET05MWQorI2RlZmluZSBfX1AwMTAgIFBBR0VfQ09QWQorI2RlZmluZSBfX1AwMTEgIFBBR0VfQ09QWQorI2RlZmluZSBfX1AxMDAgIFBBR0VfUkVBRE9OTFkKKyNkZWZpbmUgX19QMTAxICBQQUdFX1JFQURPTkxZCisjZGVmaW5lIF9fUDExMCAgUEFHRV9DT1BZCisjZGVmaW5lIF9fUDExMSAgUEFHRV9DT1BZCisKKyNkZWZpbmUgX19TMDAwICBQQUdFX05PTkUKKyNkZWZpbmUgX19TMDAxICBQQUdFX1JFQURPTkxZCisjZGVmaW5lIF9fUzAxMCAgUEFHRV9TSEFSRUQKKyNkZWZpbmUgX19TMDExICBQQUdFX1NIQVJFRAorI2RlZmluZSBfX1MxMDAgIFBBR0VfUkVBRE9OTFkKKyNkZWZpbmUgX19TMTAxICBQQUdFX1JFQURPTkxZCisjZGVmaW5lIF9fUzExMCAgUEFHRV9TSEFSRUQKKyNkZWZpbmUgX19TMTExICBQQUdFX1NIQVJFRAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworLyoKKyAqIFpFUk9fUEFHRSBpcyBhIGdsb2JhbCBzaGFyZWQgcGFnZSB0aGF0IGlzIGFsd2F5cyB6ZXJvOiB1c2VkCisgKiBmb3IgemVyby1tYXBwZWQgbWVtb3J5IGFyZWFzIGV0Yy4uCisgKi8KK2V4dGVybiBzdHJ1Y3QgcGFnZSAqZW1wdHlfemVyb19wYWdlOworI2RlZmluZSBaRVJPX1BBR0UodmFkZHIpCShlbXB0eV96ZXJvX3BhZ2UpCisKKyNkZWZpbmUgcHRlX3BmbihwdGUpCQkocHRlX3ZhbChwdGUpID4+IFBBR0VfU0hJRlQpCisjZGVmaW5lIHBmbl9wdGUocGZuLHByb3QpCShfX3B0ZSgoKHBmbikgPDwgUEFHRV9TSElGVCkgfCBwZ3Byb3RfdmFsKHByb3QpKSkKKworI2RlZmluZSBwdGVfbm9uZShwdGUpCQkoIXB0ZV92YWwocHRlKSkKKyNkZWZpbmUgcHRlX2NsZWFyKG1tLGFkZHIscHRlcCkJc2V0X3B0ZV9hdCgobW0pLChhZGRyKSwocHRlcCksIF9fcHRlKDApKQorI2RlZmluZSBwdGVfcGFnZShwdGUpCQkocGZuX3RvX3BhZ2UocHRlX3BmbihwdGUpKSkKKyNkZWZpbmUgcHRlX29mZnNldF9rZXJuZWwoZGlyLGFkZHIpCShwbWRfcGFnZV9rZXJuZWwoKihkaXIpKSArIF9fcHRlX2luZGV4KGFkZHIpKQorI2RlZmluZSBwdGVfb2Zmc2V0X21hcChkaXIsYWRkcikJKHBtZF9wYWdlX2tlcm5lbCgqKGRpcikpICsgX19wdGVfaW5kZXgoYWRkcikpCisjZGVmaW5lIHB0ZV9vZmZzZXRfbWFwX25lc3RlZChkaXIsYWRkcikJKHBtZF9wYWdlX2tlcm5lbCgqKGRpcikpICsgX19wdGVfaW5kZXgoYWRkcikpCisjZGVmaW5lIHB0ZV91bm1hcChwdGUpCQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHB0ZV91bm1hcF9uZXN0ZWQocHRlKQlkbyB7IH0gd2hpbGUgKDApCisKKyNkZWZpbmUgc2V0X3B0ZShwdGVwLCBwdGUpCWNwdV9zZXRfcHRlKHB0ZXAscHRlKQorI2RlZmluZSBzZXRfcHRlX2F0KG1tLGFkZHIscHRlcCxwdGV2YWwpIHNldF9wdGUocHRlcCxwdGV2YWwpCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIG9ubHkgd29yayBpZiBwdGVfcHJlc2VudCgpIGlzIHRydWUuCisgKiBVbmRlZmluZWQgYmVoYXZpb3VyIGlmIG5vdC4uCisgKi8KKyNkZWZpbmUgcHRlX3ByZXNlbnQocHRlKQkocHRlX3ZhbChwdGUpICYgTF9QVEVfUFJFU0VOVCkKKyNkZWZpbmUgcHRlX3JlYWQocHRlKQkJKHB0ZV92YWwocHRlKSAmIExfUFRFX1VTRVIpCisjZGVmaW5lIHB0ZV93cml0ZShwdGUpCQkocHRlX3ZhbChwdGUpICYgTF9QVEVfV1JJVEUpCisjZGVmaW5lIHB0ZV9leGVjKHB0ZSkJCShwdGVfdmFsKHB0ZSkgJiBMX1BURV9FWEVDKQorI2RlZmluZSBwdGVfZGlydHkocHRlKQkJKHB0ZV92YWwocHRlKSAmIExfUFRFX0RJUlRZKQorI2RlZmluZSBwdGVfeW91bmcocHRlKQkJKHB0ZV92YWwocHRlKSAmIExfUFRFX1lPVU5HKQorCisvKgorICogVGhlIGZvbGxvd2luZyBvbmx5IHdvcmtzIGlmIHB0ZV9wcmVzZW50KCkgaXMgbm90IHRydWUuCisgKi8KKyNkZWZpbmUgcHRlX2ZpbGUocHRlKQkJKHB0ZV92YWwocHRlKSAmIExfUFRFX0ZJTEUpCisjZGVmaW5lIHB0ZV90b19wZ29mZih4KQkJKHB0ZV92YWwoeCkgPj4gMikKKyNkZWZpbmUgcGdvZmZfdG9fcHRlKHgpCQlfX3B0ZSgoKHgpIDw8IDIpIHwgTF9QVEVfRklMRSkKKworI2RlZmluZSBQVEVfRklMRV9NQVhfQklUUwkzMAorCisjZGVmaW5lIFBURV9CSVRfRlVOQyhmbixvcCkgXAorc3RhdGljIGlubGluZSBwdGVfdCBwdGVfIyNmbihwdGVfdCBwdGUpIHsgcHRlX3ZhbChwdGUpIG9wOyByZXR1cm4gcHRlOyB9CisKKy8qUFRFX0JJVF9GVU5DKHJkcHJvdGVjdCwgJj0gfkxfUFRFX1VTRVIpOyovCisvKlBURV9CSVRfRlVOQyhta3JlYWQsICAgIHw9IExfUFRFX1VTRVIpOyovCitQVEVfQklUX0ZVTkMod3Jwcm90ZWN0LCAmPSB+TF9QVEVfV1JJVEUpOworUFRFX0JJVF9GVU5DKG1rd3JpdGUsICAgfD0gTF9QVEVfV1JJVEUpOworUFRFX0JJVF9GVU5DKGV4cHJvdGVjdCwgJj0gfkxfUFRFX0VYRUMpOworUFRFX0JJVF9GVU5DKG1rZXhlYywgICAgfD0gTF9QVEVfRVhFQyk7CitQVEVfQklUX0ZVTkMobWtjbGVhbiwgICAmPSB+TF9QVEVfRElSVFkpOworUFRFX0JJVF9GVU5DKG1rZGlydHksICAgfD0gTF9QVEVfRElSVFkpOworUFRFX0JJVF9GVU5DKG1rb2xkLCAgICAgJj0gfkxfUFRFX1lPVU5HKTsKK1BURV9CSVRfRlVOQyhta3lvdW5nLCAgIHw9IExfUFRFX1lPVU5HKTsKKworLyoKKyAqIE1hcmsgdGhlIHByb3QgdmFsdWUgYXMgdW5jYWNoZWFibGUgYW5kIHVuYnVmZmVyYWJsZS4KKyAqLworI2RlZmluZSBwZ3Byb3Rfbm9uY2FjaGVkKHByb3QpCV9fcGdwcm90KHBncHJvdF92YWwocHJvdCkgJiB+KExfUFRFX0NBQ0hFQUJMRSB8IExfUFRFX0JVRkZFUkFCTEUpKQorI2RlZmluZSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHByb3QpIF9fcGdwcm90KHBncHJvdF92YWwocHJvdCkgJiB+TF9QVEVfQ0FDSEVBQkxFKQorCisjZGVmaW5lIHBtZF9ub25lKHBtZCkJCSghcG1kX3ZhbChwbWQpKQorI2RlZmluZSBwbWRfcHJlc2VudChwbWQpCShwbWRfdmFsKHBtZCkpCisjZGVmaW5lIHBtZF9iYWQocG1kKQkJKHBtZF92YWwocG1kKSAmIDIpCisKKyNkZWZpbmUgY29weV9wbWQocG1kcGQscG1kcHMpCQlcCisJZG8gewkJCQlcCisJCXBtZHBkWzBdID0gcG1kcHNbMF07CVwKKwkJcG1kcGRbMV0gPSBwbWRwc1sxXTsJXAorCQlmbHVzaF9wbWRfZW50cnkocG1kcGQpOwlcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBwbWRfY2xlYXIocG1kcCkJCQlcCisJZG8gewkJCQlcCisJCXBtZHBbMF0gPSBfX3BtZCgwKTsJXAorCQlwbWRwWzFdID0gX19wbWQoMCk7CVwKKwkJY2xlYW5fcG1kX2VudHJ5KHBtZHApOwlcCisJfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSBwdGVfdCAqcG1kX3BhZ2Vfa2VybmVsKHBtZF90IHBtZCkKK3sKKwl1bnNpZ25lZCBsb25nIHB0cjsKKworCXB0ciA9IHBtZF92YWwocG1kKSAmIH4oUFRSU19QRVJfUFRFICogc2l6ZW9mKHZvaWQgKikgLSAxKTsKKwlwdHIgKz0gUFRSU19QRVJfUFRFICogc2l6ZW9mKHZvaWQgKik7CisKKwlyZXR1cm4gX192YShwdHIpOworfQorCisjZGVmaW5lIHBtZF9wYWdlKHBtZCkgdmlydF90b19wYWdlKF9fdmEocG1kX3ZhbChwbWQpKSkKKworLyoKKyAqIFBlcm1hbmVudCBhZGRyZXNzIG9mIGEgcGFnZS4gV2UgbmV2ZXIgaGF2ZSBoaWdobWVtLCBzbyB0aGlzIGlzIHRyaXZpYWwuCisgKi8KKyNkZWZpbmUgcGFnZXNfdG9fbWIoeCkJCSgoeCkgPj4gKDIwIC0gUEFHRV9TSElGVCkpCisKKy8qCisgKiBDb252ZXJzaW9uIGZ1bmN0aW9uczogY29udmVydCBhIHBhZ2UgYW5kIHByb3RlY3Rpb24gdG8gYSBwYWdlIGVudHJ5LAorICogYW5kIGEgcGFnZSBlbnRyeSBhbmQgcGFnZSBkaXJlY3RvcnkgdG8gdGhlIHBhZ2UgdGhleSByZWZlciB0by4KKyAqLworI2RlZmluZSBta19wdGUocGFnZSxwcm90KQlwZm5fcHRlKHBhZ2VfdG9fcGZuKHBhZ2UpLHByb3QpCisKKy8qCisgKiBUaGUgInBnZF94eHgoKSIgZnVuY3Rpb25zIGhlcmUgYXJlIHRyaXZpYWwgZm9yIGEgZm9sZGVkIHR3by1sZXZlbAorICogc2V0dXA6IHRoZSBwZ2QgaXMgbmV2ZXIgYmFkLCBhbmQgYSBwbWQgYWx3YXlzIGV4aXN0cyAoYXMgaXQncyBmb2xkZWQKKyAqIGludG8gdGhlIHBnZCBlbnRyeSkKKyAqLworI2RlZmluZSBwZ2Rfbm9uZShwZ2QpCQkoMCkKKyNkZWZpbmUgcGdkX2JhZChwZ2QpCQkoMCkKKyNkZWZpbmUgcGdkX3ByZXNlbnQocGdkKQkoMSkKKyNkZWZpbmUgcGdkX2NsZWFyKHBnZHApCQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNldF9wZ2QocGdkLHBnZHApCWRvIHsgfSB3aGlsZSAoMCkKKworI2RlZmluZSBwYWdlX3B0ZV9wcm90KHBhZ2UscHJvdCkJbWtfcHRlKHBhZ2UsIHByb3QpCisjZGVmaW5lIHBhZ2VfcHRlKHBhZ2UpCQlta19wdGUocGFnZSwgX19wZ3Byb3QoMCkpCisKKy8qIHRvIGZpbmQgYW4gZW50cnkgaW4gYSBwYWdlLXRhYmxlLWRpcmVjdG9yeSAqLworI2RlZmluZSBwZ2RfaW5kZXgoYWRkcikJCSgoYWRkcikgPj4gUEdESVJfU0hJRlQpCisKKyNkZWZpbmUgcGdkX29mZnNldChtbSwgYWRkcikJKChtbSktPnBnZCtwZ2RfaW5kZXgoYWRkcikpCisKKy8qIHRvIGZpbmQgYW4gZW50cnkgaW4gYSBrZXJuZWwgcGFnZS10YWJsZS1kaXJlY3RvcnkgKi8KKyNkZWZpbmUgcGdkX29mZnNldF9rKGFkZHIpCXBnZF9vZmZzZXQoJmluaXRfbW0sIGFkZHIpCisKKy8qIEZpbmQgYW4gZW50cnkgaW4gdGhlIHNlY29uZC1sZXZlbCBwYWdlIHRhYmxlLi4gKi8KKyNkZWZpbmUgcG1kX29mZnNldChkaXIsIGFkZHIpCSgocG1kX3QgKikoZGlyKSkKKworLyogRmluZCBhbiBlbnRyeSBpbiB0aGUgdGhpcmQtbGV2ZWwgcGFnZSB0YWJsZS4uICovCisjZGVmaW5lIF9fcHRlX2luZGV4KGFkZHIpCSgoKGFkZHIpID4+IFBBR0VfU0hJRlQpICYgKFBUUlNfUEVSX1BURSAtIDEpKQorCitzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9tb2RpZnkocHRlX3QgcHRlLCBwZ3Byb3RfdCBuZXdwcm90KQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcgbWFzayA9IExfUFRFX0VYRUMgfCBMX1BURV9XUklURSB8IExfUFRFX1VTRVI7CisJcHRlX3ZhbChwdGUpID0gKHB0ZV92YWwocHRlKSAmIH5tYXNrKSB8IChwZ3Byb3RfdmFsKG5ld3Byb3QpICYgbWFzayk7CisJcmV0dXJuIHB0ZTsKK30KKworZXh0ZXJuIHBnZF90IHN3YXBwZXJfcGdfZGlyW1BUUlNfUEVSX1BHRF07CisKKy8qIEVuY29kZSBhbmQgZGVjb2RlIGEgc3dhcCBlbnRyeS4KKyAqCisgKiBXZSBzdXBwb3J0IHVwIHRvIDMyR0Igb2Ygc3dhcCBvbiA0ayBtYWNoaW5lcworICovCisjZGVmaW5lIF9fc3dwX3R5cGUoeCkJCSgoKHgpLnZhbCA+PiAyKSAmIDB4N2YpCisjZGVmaW5lIF9fc3dwX29mZnNldCh4KQkJKCh4KS52YWwgPj4gOSkKKyNkZWZpbmUgX19zd3BfZW50cnkodHlwZSxvZmZzZXQpICgoc3dwX2VudHJ5X3QpIHsgKCh0eXBlKSA8PCAyKSB8ICgob2Zmc2V0KSA8PCA5KSB9KQorI2RlZmluZSBfX3B0ZV90b19zd3BfZW50cnkocHRlKQkoKHN3cF9lbnRyeV90KSB7IHB0ZV92YWwocHRlKSB9KQorI2RlZmluZSBfX3N3cF9lbnRyeV90b19wdGUoc3dwKQkoKHB0ZV90KSB7IChzd3ApLnZhbCB9KQorCisvKiBOZWVkcyB0byBiZSBkZWZpbmVkIGhlcmUgYW5kIG5vdCBpbiBsaW51eC9tbS5oLCBhcyBpdCBpcyBhcmNoIGRlcGVuZGVudCAqLworLyogRklYTUU6IHRoaXMgaXMgbm90IGNvcnJlY3QgKi8KKyNkZWZpbmUga2Vybl9hZGRyX3ZhbGlkKGFkZHIpCSgxKQorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvcGd0YWJsZS5oPgorCisvKgorICogV2UgcHJvdmlkZSBvdXIgb3duIGFyY2hfZ2V0X3VubWFwcGVkX2FyZWEgdG8gY29wZSB3aXRoIFZJUFQgY2FjaGVzLgorICovCisjZGVmaW5lIEhBVkVfQVJDSF9VTk1BUFBFRF9BUkVBCisKKy8qCisgKiByZW1hcCBhIHBoeXNpY2FsIGFkZHJlc3MgYHBoeXMnIG9mIHNpemUgYHNpemUnIHdpdGggcGFnZSBwcm90ZWN0aW9uIGBwcm90JworICogaW50byB2aXJ0dWFsIGFkZHJlc3MgYGZyb20nCisgKi8KKyNkZWZpbmUgaW9fcmVtYXBfcGFnZV9yYW5nZSh2bWEsZnJvbSxwaHlzLHNpemUscHJvdCkgXAorCQlyZW1hcF9wZm5fcmFuZ2Uodm1hLCBmcm9tLCAocGh5cykgPj4gUEFHRV9TSElGVCwgc2l6ZSwgcHJvdCkKKworI2RlZmluZSBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLGZyb20scGZuLHNpemUscHJvdCkgXAorCQlyZW1hcF9wZm5fcmFuZ2Uodm1hLCBmcm9tLCBwZm4sIHNpemUsIHByb3QpCisKKyNkZWZpbmUgTUtfSU9TUEFDRV9QRk4oc3BhY2UsIHBmbikJKHBmbikKKyNkZWZpbmUgR0VUX0lPU1BBQ0UocGZuKQkJMAorI2RlZmluZSBHRVRfUEZOKHBmbikJCQkocGZuKQorCisjZGVmaW5lIHBndGFibGVfY2FjaGVfaW5pdCgpIGRvIHsgfSB3aGlsZSAoMCkKKworI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9BU01BUk1fUEdUQUJMRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcG9sbC5oIGIvaW5jbHVkZS9hc20tYXJtL3BvbGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzQ0Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3BvbGwuaApAQCAtMCwwICsxLDI2IEBACisjaWZuZGVmIF9fQVNNQVJNX1BPTExfSAorI2RlZmluZSBfX0FTTUFSTV9QT0xMX0gKKworLyogVGhlc2UgYXJlIHNwZWNpZmllZCBieSBpQkNTMiAqLworI2RlZmluZSBQT0xMSU4JCTB4MDAwMQorI2RlZmluZSBQT0xMUFJJCQkweDAwMDIKKyNkZWZpbmUgUE9MTE9VVAkJMHgwMDA0CisjZGVmaW5lIFBPTExFUlIJCTB4MDAwOAorI2RlZmluZSBQT0xMSFVQCQkweDAwMTAKKyNkZWZpbmUgUE9MTE5WQUwJMHgwMDIwCisKKy8qIFRoZSByZXN0IHNlZW0gdG8gYmUgbW9yZS1vci1sZXNzIG5vbnN0YW5kYXJkLiBDaGVjayB0aGVtISAqLworI2RlZmluZSBQT0xMUkROT1JNCTB4MDA0MAorI2RlZmluZSBQT0xMUkRCQU5ECTB4MDA4MAorI2RlZmluZSBQT0xMV1JOT1JNCTB4MDEwMAorI2RlZmluZSBQT0xMV1JCQU5ECTB4MDIwMAorI2RlZmluZSBQT0xMTVNHCQkweDA0MDAKKyNkZWZpbmUgUE9MTFJFTU9WRQkweDEwMDAKKworc3RydWN0IHBvbGxmZCB7CisJaW50IGZkOworCXNob3J0IGV2ZW50czsKKwlzaG9ydCByZXZlbnRzOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcG9zaXhfdHlwZXMuaCBiL2luY2x1ZGUvYXNtLWFybS9wb3NpeF90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNDJhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcG9zaXhfdHlwZXMuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wb3NpeF90eXBlcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk4IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgIDI3LTA2LTE5OTYJUk1LCUNyZWF0ZWQKKyAqLworI2lmbmRlZiBfX0FSQ0hfQVJNX1BPU0lYX1RZUEVTX0gKKyNkZWZpbmUgX19BUkNIX0FSTV9QT1NJWF9UWVBFU19ICisKKy8qCisgKiBUaGlzIGZpbGUgaXMgZ2VuZXJhbGx5IHVzZWQgYnkgdXNlci1sZXZlbCBzb2Z0d2FyZSwgc28geW91IG5lZWQgdG8KKyAqIGJlIGEgbGl0dGxlIGNhcmVmdWwgYWJvdXQgbmFtZXNwYWNlIHBvbGx1dGlvbiBldGMuICBBbHNvLCB3ZSBjYW5ub3QKKyAqIGFzc3VtZSBHQ0MgaXMgYmVpbmcgdXNlZC4KKyAqLworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcJCV9fa2VybmVsX2lub190OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfbW9kZV90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfbmxpbmtfdDsKK3R5cGVkZWYgbG9uZwkJCV9fa2VybmVsX29mZl90OwordHlwZWRlZiBpbnQJCQlfX2tlcm5lbF9waWRfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJCV9fa2VybmVsX2lwY19waWRfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJCV9fa2VybmVsX3VpZF90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfZ2lkX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludAkJX19rZXJuZWxfc2l6ZV90OwordHlwZWRlZiBpbnQJCQlfX2tlcm5lbF9zc2l6ZV90OwordHlwZWRlZiBpbnQJCQlfX2tlcm5lbF9wdHJkaWZmX3Q7Cit0eXBlZGVmIGxvbmcJCQlfX2tlcm5lbF90aW1lX3Q7Cit0eXBlZGVmIGxvbmcJCQlfX2tlcm5lbF9zdXNlY29uZHNfdDsKK3R5cGVkZWYgbG9uZwkJCV9fa2VybmVsX2Nsb2NrX3Q7Cit0eXBlZGVmIGludAkJCV9fa2VybmVsX3RpbWVyX3Q7Cit0eXBlZGVmIGludAkJCV9fa2VybmVsX2Nsb2NraWRfdDsKK3R5cGVkZWYgaW50CQkJX19rZXJuZWxfZGFkZHJfdDsKK3R5cGVkZWYgY2hhciAqCQkJX19rZXJuZWxfY2FkZHJfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJCV9fa2VybmVsX3VpZDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0CQlfX2tlcm5lbF9naWQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQJCV9fa2VybmVsX3VpZDMyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludAkJX19rZXJuZWxfZ2lkMzJfdDsKKwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfb2xkX3VpZF90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfb2xkX2dpZF90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJX19rZXJuZWxfb2xkX2Rldl90OworCisjaWZkZWYgX19HTlVDX18KK3R5cGVkZWYgbG9uZyBsb25nCQlfX2tlcm5lbF9sb2ZmX3Q7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgeworI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChfX1VTRV9BTEwpCisJaW50CXZhbFsyXTsKKyNlbHNlIC8qICFkZWZpbmVkKF9fS0VSTkVMX18pICYmICFkZWZpbmVkKF9fVVNFX0FMTCkgKi8KKwlpbnQJX192YWxbMl07CisjZW5kaWYgLyogIWRlZmluZWQoX19LRVJORUxfXykgJiYgIWRlZmluZWQoX19VU0VfQUxMKSAqLworfSBfX2tlcm5lbF9mc2lkX3Q7CisKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18pIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykgfHwgKF9fR0xJQkNfXyA8IDIpCisKKyN1bmRlZglfX0ZEX1NFVAorI2RlZmluZSBfX0ZEX1NFVChmZCwgZmRzZXRwKSBcCisJCSgoKGZkX3NldCAqKShmZHNldHApKS0+ZmRzX2JpdHNbKGZkKSA+PiA1XSB8PSAoMTw8KChmZCkgJiAzMSkpKQorCisjdW5kZWYJX19GRF9DTFIKKyNkZWZpbmUgX19GRF9DTFIoZmQsIGZkc2V0cCkgXAorCQkoKChmZF9zZXQgKikoZmRzZXRwKSktPmZkc19iaXRzWyhmZCkgPj4gNV0gJj0gfigxPDwoKGZkKSAmIDMxKSkpCisKKyN1bmRlZglfX0ZEX0lTU0VUCisjZGVmaW5lIF9fRkRfSVNTRVQoZmQsIGZkc2V0cCkgXAorCQkoKCgoZmRfc2V0ICopKGZkc2V0cCkpLT5mZHNfYml0c1soZmQpID4+IDVdICYgKDE8PCgoZmQpICYgMzEpKSkgIT0gMCkKKworI3VuZGVmCV9fRkRfWkVSTworI2RlZmluZSBfX0ZEX1pFUk8oZmRzZXRwKSBcCisJCShtZW1zZXQgKGZkc2V0cCwgMCwgc2l6ZW9mICgqKGZkX3NldCAqKShmZHNldHApKSkpCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9wcm9jLWZucy5oIGIvaW5jbHVkZS9hc20tYXJtL3Byb2MtZm5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JlZjJiZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9wcm9jLWZucy5oCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wcm9jLWZucy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ny0xOTk5IFJ1c3NlbGwgS2luZworICogIENvcHlyaWdodCAoQykgMjAwMCBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fUFJPQ0ZOU19ICisjZGVmaW5lIF9fQVNNX1BST0NGTlNfSAorCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qCisgKiBXb3JrIG91dCBpZiB3ZSBuZWVkIG11bHRpcGxlIENQVSBzdXBwb3J0CisgKi8KKyN1bmRlZiBNVUxUSV9DUFUKKyN1bmRlZiBDUFVfTkFNRQorCisvKgorICogQ1BVX05BTUUgLSB0aGUgcHJlZml4IGZvciBDUFUgcmVsYXRlZCBmdW5jdGlvbnMKKyAqLworCisjaWZkZWYgQ09ORklHX0NQVV8zMgorIyBpZmRlZiBDT05GSUdfQ1BVX0FSTTYxMAorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtNgorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZkZWYgQ09ORklHX0NQVV9BUk03MTAKKyMgIGlmZGVmIENQVV9OQU1FCisjICAgdW5kZWYgIE1VTFRJX0NQVQorIyAgIGRlZmluZSBNVUxUSV9DUFUKKyMgIGVsc2UKKyMgICBkZWZpbmUgQ1BVX05BTUUgY3B1X2FybTcKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmZGVmIENPTkZJR19DUFVfQVJNNzIwVAorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtNzIwCisjICBlbmRpZgorIyBlbmRpZgorIyBpZmRlZiBDT05GSUdfQ1BVX0FSTTkyMFQKKyMgIGlmZGVmIENQVV9OQU1FCisjICAgdW5kZWYgIE1VTFRJX0NQVQorIyAgIGRlZmluZSBNVUxUSV9DUFUKKyMgIGVsc2UKKyMgICBkZWZpbmUgQ1BVX05BTUUgY3B1X2FybTkyMAorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZkZWYgQ09ORklHX0NQVV9BUk05MjJUCisjICBpZmRlZiBDUFVfTkFNRQorIyAgIHVuZGVmICBNVUxUSV9DUFUKKyMgICBkZWZpbmUgTVVMVElfQ1BVCisjICBlbHNlCisjICAgZGVmaW5lIENQVV9OQU1FIGNwdV9hcm05MjIKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmZGVmIENPTkZJR19DUFVfQVJNOTI1VAorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtOTI1CisjICBlbmRpZgorIyBlbmRpZgorIyBpZmRlZiBDT05GSUdfQ1BVX0FSTTkyNlQKKyMgIGlmZGVmIENQVV9OQU1FCisjICAgdW5kZWYgIE1VTFRJX0NQVQorIyAgIGRlZmluZSBNVUxUSV9DUFUKKyMgIGVsc2UKKyMgICBkZWZpbmUgQ1BVX05BTUUgY3B1X2FybTkyNgorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZkZWYgQ09ORklHX0NQVV9TQTExMAorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfc2ExMTAKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmZGVmIENPTkZJR19DUFVfU0ExMTAwCisjICBpZmRlZiBDUFVfTkFNRQorIyAgIHVuZGVmICBNVUxUSV9DUFUKKyMgICBkZWZpbmUgTVVMVElfQ1BVCisjICBlbHNlCisjICAgZGVmaW5lIENQVV9OQU1FIGNwdV9zYTExMDAKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmZGVmIENPTkZJR19DUFVfQVJNMTAyMAorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtMTAyMAorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZkZWYgQ09ORklHX0NQVV9BUk0xMDIwRQorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtMTAyMGUKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmZGVmIENPTkZJR19DUFVfQVJNMTAyMgorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfYXJtMTAyMgorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZkZWYgQ09ORklHX0NQVV9BUk0xMDI2CisjICBpZmRlZiBDUFVfTkFNRQorIyAgIHVuZGVmICBNVUxUSV9DUFUKKyMgICBkZWZpbmUgTVVMVElfQ1BVCisjICBlbHNlCisjICAgZGVmaW5lIENQVV9OQU1FIGNwdV9hcm0xMDI2CisjICBlbmRpZgorIyBlbmRpZgorIyBpZmRlZiBDT05GSUdfQ1BVX1hTQ0FMRQorIyAgaWZkZWYgQ1BVX05BTUUKKyMgICB1bmRlZiAgTVVMVElfQ1BVCisjICAgZGVmaW5lIE1VTFRJX0NQVQorIyAgZWxzZQorIyAgIGRlZmluZSBDUFVfTkFNRSBjcHVfeHNjYWxlCisjICBlbmRpZgorIyBlbmRpZgorIyBpZmRlZiBDT05GSUdfQ1BVX1Y2CisjICBpZmRlZiBDUFVfTkFNRQorIyAgIHVuZGVmICBNVUxUSV9DUFUKKyMgICBkZWZpbmUgTVVMVElfQ1BVCisjICBlbHNlCisjICAgZGVmaW5lIENQVV9OQU1FIGNwdV92NgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaWZuZGVmIE1VTFRJX0NQVQorI2luY2x1ZGUgImFzbS9jcHUtc2luZ2xlLmgiCisjZWxzZQorI2luY2x1ZGUgImFzbS9jcHUtbXVsdGkzMi5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxhc20vbWVtb3J5Lmg+CisKKyNkZWZpbmUgY3B1X3N3aXRjaF9tbShwZ2QsbW0pIGNwdV9kb19zd2l0Y2hfbW0odmlydF90b19waHlzKHBnZCksbW0pCisKKyNkZWZpbmUgY3B1X2dldF9wZ2QoKQlcCisJKHsJCQkJCQlcCisJCXVuc2lnbmVkIGxvbmcgcGc7CQkJXAorCQlfX2FzbV9fKCJtcmMJcDE1LCAwLCAlMCwgYzIsIGMwLCAwIglcCisJCQkgOiAiPXIiIChwZykgOiA6ICJjYyIpOwkJXAorCQlwZyAmPSB+MHgzZmZmOwkJCQlcCisJCShwZ2RfdCAqKXBoeXNfdG9fdmlydChwZyk7CQlcCisJfSkKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKyNlbmRpZiAvKiBfX0FTTV9QUk9DRk5TX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk4NDU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3Byb2Nlc3Nvci5oCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJNX1BST0NFU1NPUl9ICisjZGVmaW5lIF9fQVNNX0FSTV9QUk9DRVNTT1JfSAorCisvKgorICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBtYWNybyB0aGF0IHJldHVybnMgY3VycmVudAorICogaW5zdHJ1Y3Rpb24gcG9pbnRlciAoInByb2dyYW0gY291bnRlciIpLgorICovCisjZGVmaW5lIGN1cnJlbnRfdGV4dF9hZGRyKCkgKHsgX19sYWJlbF9fIF9sOyBfbDogJiZfbDt9KQorCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGFzbS9wcm9jaW5mby5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCisjZGVmaW5lIEtFUk5FTF9TVEFDS19TSVpFCVBBR0VfU0laRQorCit1bmlvbiBkZWJ1Z19pbnNuIHsKKwl1MzIJYXJtOworCXUxNgl0aHVtYjsKK307CisKK3N0cnVjdCBkZWJ1Z19lbnRyeSB7CisJdTMyCQkJYWRkcmVzczsKKwl1bmlvbiBkZWJ1Z19pbnNuCWluc247Cit9OworCitzdHJ1Y3QgZGVidWdfaW5mbyB7CisJaW50CQkJbnNhdmVkOworCXN0cnVjdCBkZWJ1Z19lbnRyeQlicFsyXTsKK307CisKK3N0cnVjdCB0aHJlYWRfc3RydWN0IHsKKwkJCQkJCQkvKiBmYXVsdCBpbmZvCSAgKi8KKwl1bnNpZ25lZCBsb25nCQlhZGRyZXNzOworCXVuc2lnbmVkIGxvbmcJCXRyYXBfbm87CisJdW5zaWduZWQgbG9uZwkJZXJyb3JfY29kZTsKKwkJCQkJCQkvKiBkZWJ1Z2dpbmcJICAqLworCXN0cnVjdCBkZWJ1Z19pbmZvCWRlYnVnOworfTsKKworI2RlZmluZSBJTklUX1RIUkVBRCAgewl9CisKKyNkZWZpbmUgc3RhcnRfdGhyZWFkKHJlZ3MscGMsc3ApCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nICpzdGFjayA9ICh1bnNpZ25lZCBsb25nICopc3A7CQkJXAorCXNldF9mcyhVU0VSX0RTKTsJCQkJCQlcCisJbWVtemVybyhyZWdzLT51cmVncywgc2l6ZW9mKHJlZ3MtPnVyZWdzKSk7CQkJXAorCWlmIChjdXJyZW50LT5wZXJzb25hbGl0eSAmIEFERFJfTElNSVRfMzJCSVQpCQkJXAorCQlyZWdzLT5BUk1fY3BzciA9IFVTUl9NT0RFOwkJCQlcCisJZWxzZQkJCQkJCQkJXAorCQlyZWdzLT5BUk1fY3BzciA9IFVTUjI2X01PREU7CQkJCVwKKwlpZiAoZWxmX2h3Y2FwICYgSFdDQVBfVEhVTUIgJiYgcGMgJiAxKQkJCQlcCisJCXJlZ3MtPkFSTV9jcHNyIHw9IFBTUl9UX0JJVDsJCQkJXAorCXJlZ3MtPkFSTV9wYyA9IHBjICYgfjE7CQkvKiBwYyAqLwkJCVwKKwlyZWdzLT5BUk1fc3AgPSBzcDsJCS8qIHNwICovCQkJXAorCXJlZ3MtPkFSTV9yMiA9IHN0YWNrWzJdOwkvKiByMiAoZW52cCkgKi8JCQlcCisJcmVncy0+QVJNX3IxID0gc3RhY2tbMV07CS8qIHIxIChhcmd2KSAqLwkJCVwKKwlyZWdzLT5BUk1fcjAgPSBzdGFja1swXTsJLyogcjAgKGFyZ2MpICovCQkJXAorfSkKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiwgYSBzdHJhbmdlIEMgdGhpbmcgKi8KK3N0cnVjdCB0YXNrX3N0cnVjdDsKKworLyogRnJlZSBhbGwgcmVzb3VyY2VzIGhlbGQgYnkgYSB0aHJlYWQuICovCitleHRlcm4gdm9pZCByZWxlYXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CisKKy8qIFByZXBhcmUgdG8gY29weSB0aHJlYWQgc3RhdGUgLSB1bmxhenkgYWxsIGxhenkgc3RhdHVzICovCisjZGVmaW5lIHByZXBhcmVfdG9fY29weSh0c2spCWRvIHsgfSB3aGlsZSAoMCkKKwordW5zaWduZWQgbG9uZyBnZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKKworI2RlZmluZSBjcHVfcmVsYXgoKQkJCWJhcnJpZXIoKQorCisvKgorICogQ3JlYXRlIGEgbmV3IGtlcm5lbCB0aHJlYWQKKyAqLworZXh0ZXJuIGludCBrZXJuZWxfdGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCisjZGVmaW5lIEtTVEtfRUlQKHRzaykJKCgodW5zaWduZWQgbG9uZyAqKSg0MDk2Kyh1bnNpZ25lZCBsb25nKSh0c2spLT50aHJlYWRfaW5mbykpWzEwMTldKQorI2RlZmluZSBLU1RLX0VTUCh0c2spCSgoKHVuc2lnbmVkIGxvbmcgKikoNDA5NisodW5zaWduZWQgbG9uZykodHNrKS0+dGhyZWFkX2luZm8pKVsxMDE3XSkKKworLyoKKyAqIFByZWZldGNoaW5nIHN1cHBvcnQgLSBvbmx5IEFSTXY1LgorICovCisjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDUKKworI2RlZmluZSBBUkNIX0hBU19QUkVGRVRDSAorI2RlZmluZSBwcmVmZXRjaChwdHIpCQkJCVwKKwkoewkJCQkJXAorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCVwKKwkJInBsZFx0JTAiCQkJXAorCQk6CQkJCVwKKwkJOiAibyIgKCooY2hhciAqKShwdHIpKQkJXAorCQk6ICJjYyIpOwkJCVwKKwl9KQorCisjZGVmaW5lIEFSQ0hfSEFTX1BSRUZFVENIVworI2RlZmluZSBwcmVmZXRjaHcocHRyKQlwcmVmZXRjaChwdHIpCisKKyNkZWZpbmUgQVJDSF9IQVNfU1BJTkxPQ0tfUFJFRkVUQ0gKKyNkZWZpbmUgc3Bpbl9sb2NrX3ByZWZldGNoKHgpIGRvIHsgfSB3aGlsZSAoMCkKKworI2VuZGlmCisKKyNlbmRpZgorCisjZW5kaWYgLyogX19BU01fQVJNX1BST0NFU1NPUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcHJvY2luZm8uaCBiL2luY2x1ZGUvYXNtLWFybS9wcm9jaW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5Yzc1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcHJvY2luZm8uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9wcm9jaW5mby5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fUFJPQ0lORk9fSAorI2RlZmluZSBfX0FTTV9QUk9DSU5GT19ICisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0cnVjdCBjcHVfdGxiX2ZuczsKK3N0cnVjdCBjcHVfdXNlcl9mbnM7CitzdHJ1Y3QgY3B1X2NhY2hlX2ZuczsKK3N0cnVjdCBwcm9jZXNzb3I7CisKKy8qCisgKiBOb3RlISAgc3RydWN0IHByb2Nlc3NvciBpcyBhbHdheXMgZGVmaW5lZCBpZiB3ZSdyZQorICogdXNpbmcgTVVMVElfQ1BVLCBvdGhlcndpc2UgdGhpcyBlbnRyeSBpcyB1bnVzZWQsCisgKiBidXQgc3RpbGwgZXhpc3RzLgorICoKKyAqIE5PVEUhIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGlzIGRlZmluZWQgYnkgYXNzZW1ibHkKKyAqIGxhbmd1YWdlLCBOT1QgQyBjb2RlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNoZWNrOgorICogIGFyY2gvYXJtL21tL3Byb2MtKi5TIGFuZCBhcmNoL2FybS9rZXJuZWwvaGVhZC5TCisgKi8KK3N0cnVjdCBwcm9jX2luZm9fbGlzdCB7CisJdW5zaWduZWQgaW50CQljcHVfdmFsOworCXVuc2lnbmVkIGludAkJY3B1X21hc2s7CisJdW5zaWduZWQgbG9uZwkJX19jcHVfbW11X2ZsYWdzOwkvKiB1c2VkIGJ5IGhlYWQuUyAqLworCXVuc2lnbmVkIGxvbmcJCV9fY3B1X2ZsdXNoOwkJLyogdXNlZCBieSBoZWFkLlMgKi8KKwljb25zdCBjaGFyCQkqYXJjaF9uYW1lOworCWNvbnN0IGNoYXIJCSplbGZfbmFtZTsKKwl1bnNpZ25lZCBpbnQJCWVsZl9od2NhcDsKKwljb25zdCBjaGFyCQkqY3B1X25hbWU7CisJc3RydWN0IHByb2Nlc3NvcgkqcHJvYzsKKwlzdHJ1Y3QgY3B1X3RsYl9mbnMJKnRsYjsKKwlzdHJ1Y3QgY3B1X3VzZXJfZm5zCSp1c2VyOworCXN0cnVjdCBjcHVfY2FjaGVfZm5zCSpjYWNoZTsKK307CisKK2V4dGVybiB1bnNpZ25lZCBpbnQgZWxmX2h3Y2FwOworCisjZW5kaWYJLyogX19BU1NFTUJMWV9fICovCisKKyNkZWZpbmUgUFJPQ19JTkZPX1NaCTQ4CisKKyNkZWZpbmUgSFdDQVBfU1dQCTEKKyNkZWZpbmUgSFdDQVBfSEFMRgkyCisjZGVmaW5lIEhXQ0FQX1RIVU1CCTQKKyNkZWZpbmUgSFdDQVBfMjZCSVQJOAkvKiBQbGF5IGl0IHNhZmUgKi8KKyNkZWZpbmUgSFdDQVBfRkFTVF9NVUxUCTE2CisjZGVmaW5lIEhXQ0FQX0ZQQQkzMgorI2RlZmluZSBIV0NBUF9WRlAJNjQKKyNkZWZpbmUgSFdDQVBfRURTUAkxMjgKKyNkZWZpbmUgSFdDQVBfSkFWQQkyNTYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcHRyYWNlLmggYi9pbmNsdWRlL2FzbS1hcm0vcHRyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0ZTNhMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9wdHJhY2UuaApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vcHRyYWNlLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fUFRSQUNFX0gKKyNkZWZpbmUgX19BU01fQVJNX1BUUkFDRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2RlZmluZSBQVFJBQ0VfR0VUUkVHUwkJMTIKKyNkZWZpbmUgUFRSQUNFX1NFVFJFR1MJCTEzCisjZGVmaW5lIFBUUkFDRV9HRVRGUFJFR1MJMTQKKyNkZWZpbmUgUFRSQUNFX1NFVEZQUkVHUwkxNQorCisjZGVmaW5lIFBUUkFDRV9HRVRXTU1YUkVHUwkxOAorI2RlZmluZSBQVFJBQ0VfU0VUV01NWFJFR1MJMTkKKworI2RlZmluZSBQVFJBQ0VfT0xEU0VUT1BUSU9OUwkyMQorCisjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEJMjIKKy8qCisgKiBQU1IgYml0cworICovCisjZGVmaW5lIFVTUjI2X01PREUJMHgwMDAwMDAwMAorI2RlZmluZSBGSVEyNl9NT0RFCTB4MDAwMDAwMDEKKyNkZWZpbmUgSVJRMjZfTU9ERQkweDAwMDAwMDAyCisjZGVmaW5lIFNWQzI2X01PREUJMHgwMDAwMDAwMworI2RlZmluZSBVU1JfTU9ERQkweDAwMDAwMDEwCisjZGVmaW5lIEZJUV9NT0RFCTB4MDAwMDAwMTEKKyNkZWZpbmUgSVJRX01PREUJMHgwMDAwMDAxMgorI2RlZmluZSBTVkNfTU9ERQkweDAwMDAwMDEzCisjZGVmaW5lIEFCVF9NT0RFCTB4MDAwMDAwMTcKKyNkZWZpbmUgVU5EX01PREUJMHgwMDAwMDAxYgorI2RlZmluZSBTWVNURU1fTU9ERQkweDAwMDAwMDFmCisjZGVmaW5lIE1PREUzMl9CSVQJMHgwMDAwMDAxMAorI2RlZmluZSBNT0RFX01BU0sJMHgwMDAwMDAxZgorI2RlZmluZSBQU1JfVF9CSVQJMHgwMDAwMDAyMAorI2RlZmluZSBQU1JfRl9CSVQJMHgwMDAwMDA0MAorI2RlZmluZSBQU1JfSV9CSVQJMHgwMDAwMDA4MAorI2RlZmluZSBQU1JfSl9CSVQJMHgwMTAwMDAwMAorI2RlZmluZSBQU1JfUV9CSVQJMHgwODAwMDAwMAorI2RlZmluZSBQU1JfVl9CSVQJMHgxMDAwMDAwMAorI2RlZmluZSBQU1JfQ19CSVQJMHgyMDAwMDAwMAorI2RlZmluZSBQU1JfWl9CSVQJMHg0MDAwMDAwMAorI2RlZmluZSBQU1JfTl9CSVQJMHg4MDAwMDAwMAorI2RlZmluZSBQQ01BU0sJCTAKKworLyoKKyAqIEdyb3VwcyBvZiBQU1IgYml0cworICovCisjZGVmaW5lIFBTUl9mCQkweGZmMDAwMDAwCS8qIEZsYWdzCQkqLworI2RlZmluZSBQU1JfcwkJMHgwMGZmMDAwMAkvKiBTdGF0dXMJCSovCisjZGVmaW5lIFBTUl94CQkweDAwMDBmZjAwCS8qIEV4dGVuc2lvbgkJKi8KKyNkZWZpbmUgUFNSX2MJCTB4MDAwMDAwZmYJLyogQ29udHJvbAkJKi8KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyB0aGUgd2F5IHRoZSByZWdpc3RlcnMgYXJlIHN0b3JlZCBvbiB0aGUKKyAgIHN0YWNrIGR1cmluZyBhIHN5c3RlbSBjYWxsLiAqLworCitzdHJ1Y3QgcHRfcmVncyB7CisJbG9uZyB1cmVnc1sxOF07Cit9OworCisjZGVmaW5lIEFSTV9jcHNyCXVyZWdzWzE2XQorI2RlZmluZSBBUk1fcGMJCXVyZWdzWzE1XQorI2RlZmluZSBBUk1fbHIJCXVyZWdzWzE0XQorI2RlZmluZSBBUk1fc3AJCXVyZWdzWzEzXQorI2RlZmluZSBBUk1faXAJCXVyZWdzWzEyXQorI2RlZmluZSBBUk1fZnAJCXVyZWdzWzExXQorI2RlZmluZSBBUk1fcjEwCQl1cmVnc1sxMF0KKyNkZWZpbmUgQVJNX3I5CQl1cmVnc1s5XQorI2RlZmluZSBBUk1fcjgJCXVyZWdzWzhdCisjZGVmaW5lIEFSTV9yNwkJdXJlZ3NbN10KKyNkZWZpbmUgQVJNX3I2CQl1cmVnc1s2XQorI2RlZmluZSBBUk1fcjUJCXVyZWdzWzVdCisjZGVmaW5lIEFSTV9yNAkJdXJlZ3NbNF0KKyNkZWZpbmUgQVJNX3IzCQl1cmVnc1szXQorI2RlZmluZSBBUk1fcjIJCXVyZWdzWzJdCisjZGVmaW5lIEFSTV9yMQkJdXJlZ3NbMV0KKyNkZWZpbmUgQVJNX3IwCQl1cmVnc1swXQorI2RlZmluZSBBUk1fT1JJR19yMAl1cmVnc1sxN10KKworI2lmZGVmIF9fS0VSTkVMX18KKworI2RlZmluZSB1c2VyX21vZGUocmVncykJXAorCSgoKHJlZ3MpLT5BUk1fY3BzciAmIDB4ZikgPT0gMCkKKworI2lmZGVmIENPTkZJR19BUk1fVEhVTUIKKyNkZWZpbmUgdGh1bWJfbW9kZShyZWdzKSBcCisJKCgocmVncyktPkFSTV9jcHNyICYgUFNSX1RfQklUKSkKKyNlbHNlCisjZGVmaW5lIHRodW1iX21vZGUocmVncykgKDApCisjZW5kaWYKKworI2RlZmluZSBwcm9jZXNzb3JfbW9kZShyZWdzKSBcCisJKChyZWdzKS0+QVJNX2Nwc3IgJiBNT0RFX01BU0spCisKKyNkZWZpbmUgaW50ZXJydXB0c19lbmFibGVkKHJlZ3MpIFwKKwkoISgocmVncyktPkFSTV9jcHNyICYgUFNSX0lfQklUKSkKKworI2RlZmluZSBmYXN0X2ludGVycnVwdHNfZW5hYmxlZChyZWdzKSBcCisJKCEoKHJlZ3MpLT5BUk1fY3BzciAmIFBTUl9GX0JJVCkpCisKKyNkZWZpbmUgY29uZGl0aW9uX2NvZGVzKHJlZ3MpIFwKKwkoKHJlZ3MpLT5BUk1fY3BzciAmIChQU1JfVl9CSVR8UFNSX0NfQklUfFBTUl9aX0JJVHxQU1JfTl9CSVQpKQorCQorLyogQXJlIHRoZSBjdXJyZW50IHJlZ2lzdGVycyBzdWl0YWJsZSBmb3IgdXNlciBtb2RlPworICogKHVzZWQgdG8gbWFpbnRhaW4gc2VjdXJpdHkgaW4gc2lnbmFsIGhhbmRsZXJzKQorICovCitzdGF0aWMgaW5saW5lIGludCB2YWxpZF91c2VyX3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJaWYgKHVzZXJfbW9kZShyZWdzKSAmJgorCSAgICAocmVncy0+QVJNX2Nwc3IgJiAoUFNSX0ZfQklUfFBTUl9JX0JJVCkpID09IDApCisJCXJldHVybiAxOworCisJLyoKKwkgKiBGb3JjZSBDUFNSIHRvIHNvbWV0aGluZyBsb2dpY2FsLi4uCisJICovCisJcmVncy0+QVJNX2Nwc3IgJj0gUFNSX2YgfCBQU1JfcyB8IFBTUl94IHwgUFNSX1RfQklUIHwgTU9ERTMyX0JJVDsKKworCXJldHVybiAwOworfQorCisjZW5kaWYJLyogX19LRVJORUxfXyAqLworCisjZGVmaW5lIHBjX3BvaW50ZXIodikgXAorCSgodikgJiB+UENNQVNLKQorCisjZGVmaW5lIGluc3RydWN0aW9uX3BvaW50ZXIocmVncykgXAorCShwY19wb2ludGVyKChyZWdzKS0+QVJNX3BjKSkKKworI2lmZGVmIENPTkZJR19TTVAKK2V4dGVybiB1bnNpZ25lZCBsb25nIHByb2ZpbGVfcGMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworI2Vsc2UKKyNkZWZpbmUgcHJvZmlsZV9wYyhyZWdzKSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpCisjZW5kaWYKKworI2lmZGVmIF9fS0VSTkVMX18KK2V4dGVybiB2b2lkIHNob3dfcmVncyhzdHJ1Y3QgcHRfcmVncyAqKTsKKworI2RlZmluZSBwcmVkaWNhdGUoeCkJKHggJiAweGYwMDAwMDAwKQorI2RlZmluZSBQUkVESUNBVEVfQUxXQVlTCTB4ZTAwMDAwMDAKKworI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9yZXNvdXJjZS5oIGIvaW5jbHVkZS9hc20tYXJtL3Jlc291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM0YjU4MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9yZXNvdXJjZS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfQVJNX1JFU09VUkNFX0gKKyNkZWZpbmUgX0FSTV9SRVNPVVJDRV9ICisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9yZXNvdXJjZS5oPgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9ydGMuaCBiL2luY2x1ZGUvYXNtLWFybS9ydGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTdlMTZiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3J0Yy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3J0Yy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBEZWVwIEJsdWUgU29sdXRpb25zIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIEFTTUFSTV9SVENfSAorI2RlZmluZSBBU01BUk1fUlRDX0gKKworc3RydWN0IG1vZHVsZTsKKworc3RydWN0IHJ0Y19vcHMgeworCXN0cnVjdCBtb2R1bGUJKm93bmVyOworCWludAkJKCpvcGVuKSh2b2lkKTsKKwl2b2lkCQkoKnJlbGVhc2UpKHZvaWQpOworCWludAkJKCppb2N0bCkodW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKKworCXZvaWQJCSgqcmVhZF90aW1lKShzdHJ1Y3QgcnRjX3RpbWUgKik7CisJaW50CQkoKnNldF90aW1lKShzdHJ1Y3QgcnRjX3RpbWUgKik7CisJdm9pZAkJKCpyZWFkX2FsYXJtKShzdHJ1Y3QgcnRjX3drYWxybSAqKTsKKwlpbnQJCSgqc2V0X2FsYXJtKShzdHJ1Y3QgcnRjX3drYWxybSAqKTsKKwlpbnQJCSgqcHJvYykoY2hhciAqYnVmKTsKK307CisKK3ZvaWQgcnRjX3RpbWVfdG9fdG0odW5zaWduZWQgbG9uZywgc3RydWN0IHJ0Y190aW1lICopOworaW50IHJ0Y190bV90b190aW1lKHN0cnVjdCBydGNfdGltZSAqLCB1bnNpZ25lZCBsb25nICopOworaW50IHJ0Y192YWxpZF90bShzdHJ1Y3QgcnRjX3RpbWUgKik7Cit2b2lkIHJ0Y19uZXh0X2FsYXJtX3RpbWUoc3RydWN0IHJ0Y190aW1lICosIHN0cnVjdCBydGNfdGltZSAqLCBzdHJ1Y3QgcnRjX3RpbWUgKik7Cit2b2lkIHJ0Y191cGRhdGUodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CitpbnQgcmVnaXN0ZXJfcnRjKHN0cnVjdCBydGNfb3BzICopOwordm9pZCB1bnJlZ2lzdGVyX3J0YyhzdHJ1Y3QgcnRjX29wcyAqKTsKKworc3RhdGljIGlubGluZSBpbnQgcnRjX3BlcmlvZGljX2FsYXJtKHN0cnVjdCBydGNfdGltZSAqdG0pCit7CisJcmV0dXJuICAodG0tPnRtX3llYXIgPT0gLTEpIHx8CisJCSgodW5zaWduZWQpdG0tPnRtX21vbiA+PSAxMikgfHwKKwkJKCh1bnNpZ25lZCkodG0tPnRtX21kYXkgLSAxKSA+PSAzMSkgfHwKKwkJKCh1bnNpZ25lZCl0bS0+dG1faG91ciA+IDIzKSB8fAorCQkoKHVuc2lnbmVkKXRtLT50bV9taW4gPiA1OSkgfHwKKwkJKCh1bnNpZ25lZCl0bS0+dG1fc2VjID4gNTkpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zY2F0dGVybGlzdC5oIGIvaW5jbHVkZS9hc20tYXJtL3NjYXR0ZXJsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNiODc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zY2F0dGVybGlzdC5oCkBAIC0wLDAgKzEsMjUgQEAKKyNpZm5kZWYgX0FTTUFSTV9TQ0FUVEVSTElTVF9ICisjZGVmaW5lIF9BU01BUk1fU0NBVFRFUkxJU1RfSAorCisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCitzdHJ1Y3Qgc2NhdHRlcmxpc3QgeworCXN0cnVjdCBwYWdlCSpwYWdlOwkJLyogYnVmZmVyIHBhZ2UJCQkgKi8KKwl1bnNpZ25lZCBpbnQJb2Zmc2V0OwkJLyogYnVmZmVyIG9mZnNldAkJICovCisJZG1hX2FkZHJfdAlkbWFfYWRkcmVzczsJLyogZG1hIGFkZHJlc3MJCQkgKi8KKwl1bnNpZ25lZCBpbnQJbGVuZ3RoOwkJLyogbGVuZ3RoCQkJICovCisJY2hhcgkJKl9fYWRkcmVzczsJLyogZm9yIHNldF9kbWFfYWRkcgkJICovCit9OworCisvKgorICogVGhlc2UgbWFjcm9zIHNob3VsZCBiZSB1c2VkIGFmdGVyIGEgcGNpX21hcF9zZyBjYWxsIGhhcyBiZWVuIGRvbmUKKyAqIHRvIGdldCBidXMgYWRkcmVzc2VzIG9mIGVhY2ggb2YgdGhlIFNHIGVudHJpZXMgYW5kIHRoZWlyIGxlbmd0aHMuCisgKiBZb3Ugc2hvdWxkIG9ubHkgd29yayB3aXRoIHRoZSBudW1iZXIgb2Ygc2cgZW50cmllcyBwY2lfbWFwX3NnCisgKiByZXR1cm5zLCBvciBhbHRlcm5hdGl2ZWx5IHN0b3Agb24gdGhlIGZpcnN0IHNnX2RtYV9sZW4oc2cpIHdoaWNoCisgKiBpcyAwLgorICovCisjZGVmaW5lIHNnX2RtYV9hZGRyZXNzKHNnKSAgICAgICgoc2cpLT5kbWFfYWRkcmVzcykKKyNkZWZpbmUgc2dfZG1hX2xlbihzZykgICAgICAgICAgKChzZyktPmxlbmd0aCkKKworI2VuZGlmIC8qIF9BU01BUk1fU0NBVFRFUkxJU1RfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NlY3Rpb25zLmggYi9pbmNsdWRlL2FzbS1hcm0vc2VjdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjhjNTE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NlY3Rpb25zLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPGFzbS1nZW5lcmljL3NlY3Rpb25zLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc2VnbWVudC5oIGIvaW5jbHVkZS9hc20tYXJtL3NlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTI0YzIxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NlZ21lbnQuaApAQCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9fQVNNX0FSTV9TRUdNRU5UX0gKKyNkZWZpbmUgX19BU01fQVJNX1NFR01FTlRfSAorCisjZGVmaW5lIF9fS0VSTkVMX0NTICAgMHgwCisjZGVmaW5lIF9fS0VSTkVMX0RTICAgMHgwCisKKyNkZWZpbmUgX19VU0VSX0NTICAgICAweDEKKyNkZWZpbmUgX19VU0VSX0RTICAgICAweDEKKworI2VuZGlmIC8qIF9fQVNNX0FSTV9TRUdNRU5UX0ggKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NlbWFwaG9yZS1oZWxwZXIuaCBiL2luY2x1ZGUvYXNtLWFybS9zZW1hcGhvcmUtaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3ZjE5OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zZW1hcGhvcmUtaGVscGVyLmgKQEAgLTAsMCArMSw4NCBAQAorI2lmbmRlZiBBU01BUk1fU0VNQVBIT1JFX0hFTFBFUl9ICisjZGVmaW5lIEFTTUFSTV9TRU1BUEhPUkVfSEVMUEVSX0gKKworLyoKKyAqIFRoZXNlIHR3byBfbXVzdF8gZXhlY3V0ZSBhdG9taWNhbGx5IHdydCBlYWNoIG90aGVyLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgd2FrZV9vbmVfbW9yZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2VtYXBob3JlX3dha2VfbG9jaywgZmxhZ3MpOworCWlmIChhdG9taWNfcmVhZCgmc2VtLT5jb3VudCkgPD0gMCkKKwkJc2VtLT53YWtpbmcrKzsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZW1hcGhvcmVfd2FrZV9sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHdha2luZ19ub25femVybyhzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0ID0gMDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZW1hcGhvcmVfd2FrZV9sb2NrLCBmbGFncyk7CisJaWYgKHNlbS0+d2FraW5nID4gMCkgeworCQlzZW0tPndha2luZy0tOworCQlyZXQgPSAxOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZW1hcGhvcmVfd2FrZV9sb2NrLCBmbGFncyk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIHdha2luZyBub24gemVybyBpbnRlcnJ1cHRpYmxlCisgKgkxCWdvdCB0aGUgbG9jaworICoJMAlnbyB0byBzbGVlcAorICoJLUVJTlRSCWludGVycnVwdGVkCisgKgorICogV2UgbXVzdCB1bmRvIHRoZSBzZW0tPmNvdW50IGRvd25faW50ZXJydXB0aWJsZSgpIGluY3JlbWVudCB3aGlsZSB3ZSBhcmUKKyAqIHByb3RlY3RlZCBieSB0aGUgc3BpbmxvY2sgaW4gb3JkZXIgdG8gbWFrZSB0aGlzIGF0b21pY19pbmMoKSB3aXRoIHRoZQorICogYXRvbWljX3JlYWQoKSBpbiB3YWtlX29uZV9tb3JlKCksIG90aGVyd2lzZSB3ZSBjYW4gcmFjZS4gLWFyY2EKKyAqLworc3RhdGljIGlubGluZSBpbnQgd2FraW5nX25vbl96ZXJvX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqc2VtLAorCQkJCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0ID0gMDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZW1hcGhvcmVfd2FrZV9sb2NrLCBmbGFncyk7CisJaWYgKHNlbS0+d2FraW5nID4gMCkgeworCQlzZW0tPndha2luZy0tOworCQlyZXQgPSAxOworCX0gZWxzZSBpZiAoc2lnbmFsX3BlbmRpbmcodHNrKSkgeworCQlhdG9taWNfaW5jKCZzZW0tPmNvdW50KTsKKwkJcmV0ID0gLUVJTlRSOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZW1hcGhvcmVfd2FrZV9sb2NrLCBmbGFncyk7CisJcmV0dXJuIHJldDsJCit9CisKKy8qCisgKiB3YWtpbmdfbm9uX3plcm9fdHJ5X2xvY2s6CisgKgkxCWZhaWxlZCB0byBsb2NrCisgKgkwCWdvdCB0aGUgbG9jaworICoKKyAqIFdlIG11c3QgdW5kbyB0aGUgc2VtLT5jb3VudCBkb3duX2ludGVycnVwdGlibGUoKSBpbmNyZW1lbnQgd2hpbGUgd2UgYXJlCisgKiBwcm90ZWN0ZWQgYnkgdGhlIHNwaW5sb2NrIGluIG9yZGVyIHRvIG1ha2UgdGhpcyBhdG9taWNfaW5jKCkgd2l0aCB0aGUKKyAqIGF0b21pY19yZWFkKCkgaW4gd2FrZV9vbmVfbW9yZSgpLCBvdGhlcndpc2Ugd2UgY2FuIHJhY2UuIC1hcmNhCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHdha2luZ19ub25femVyb190cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCByZXQgPSAxOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNlbWFwaG9yZV93YWtlX2xvY2ssIGZsYWdzKTsKKwlpZiAoc2VtLT53YWtpbmcgPD0gMCkKKwkJYXRvbWljX2luYygmc2VtLT5jb3VudCk7CisJZWxzZSB7CisJCXNlbS0+d2FraW5nLS07CisJCXJldCA9IDA7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNlbWFwaG9yZV93YWtlX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zZW1hcGhvcmUuaCBiL2luY2x1ZGUvYXNtLWFybS9zZW1hcGhvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGYzM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NlbWFwaG9yZS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL3NlbWFwaG9yZS5oCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX1NFTUFQSE9SRV9ICisjZGVmaW5lIF9fQVNNX0FSTV9TRU1BUEhPUkVfSAorCisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L3J3c2VtLmg+CisKKyNpbmNsdWRlIDxhc20vYXRvbWljLmg+CisjaW5jbHVkZSA8YXNtL2xvY2tzLmg+CisKK3N0cnVjdCBzZW1hcGhvcmUgeworCWF0b21pY190IGNvdW50OworCWludCBzbGVlcGVyczsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OworfTsKKworI2RlZmluZSBfX1NFTUFQSE9SRV9JTklUKG5hbWUsIGNudCkJCQkJXAorewkJCQkJCQkJXAorCS5jb3VudAk9IEFUT01JQ19JTklUKGNudCksCQkJCVwKKwkud2FpdAk9IF9fV0FJVF9RVUVVRV9IRUFEX0lOSVRJQUxJWkVSKChuYW1lKS53YWl0KSwJXAorfQorCisjZGVmaW5lIF9fTVVURVhfSU5JVElBTElaRVIobmFtZSkgX19TRU1BUEhPUkVfSU5JVChuYW1lLDEpCisKKyNkZWZpbmUgX19ERUNMQVJFX1NFTUFQSE9SRV9HRU5FUklDKG5hbWUsY291bnQpCVwKKwlzdHJ1Y3Qgc2VtYXBob3JlIG5hbWUgPSBfX1NFTUFQSE9SRV9JTklUKG5hbWUsY291bnQpCisKKyNkZWZpbmUgREVDTEFSRV9NVVRFWChuYW1lKQkJX19ERUNMQVJFX1NFTUFQSE9SRV9HRU5FUklDKG5hbWUsMSkKKyNkZWZpbmUgREVDTEFSRV9NVVRFWF9MT0NLRUQobmFtZSkJX19ERUNMQVJFX1NFTUFQSE9SRV9HRU5FUklDKG5hbWUsMCkKKworc3RhdGljIGlubGluZSB2b2lkIHNlbWFfaW5pdChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCit7CisJYXRvbWljX3NldCgmc2VtLT5jb3VudCwgdmFsKTsKKwlzZW0tPnNsZWVwZXJzID0gMDsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0tPndhaXQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCit7CisJc2VtYV9pbml0KHNlbSwgMSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYX0xPQ0tFRChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCit7CisJc2VtYV9pbml0KHNlbSwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHNlbWFfY291bnQoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQoreworCXJldHVybiBhdG9taWNfcmVhZCgmc2VtLT5jb3VudCk7Cit9CisKKy8qCisgKiBzcGVjaWFsIHJlZ2lzdGVyIGNhbGxpbmcgY29udmVudGlvbgorICovCithc21saW5rYWdlIHZvaWQgX19kb3duX2ZhaWxlZCh2b2lkKTsKK2FzbWxpbmthZ2UgaW50ICBfX2Rvd25faW50ZXJydXB0aWJsZV9mYWlsZWQodm9pZCk7Cithc21saW5rYWdlIGludCAgX19kb3duX3RyeWxvY2tfZmFpbGVkKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIF9fdXBfd2FrZXVwKHZvaWQpOworCitleHRlcm4gdm9pZCBfX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CitleHRlcm4gaW50ICBfX2Rvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKK2V4dGVybiBpbnQgIF9fZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOworZXh0ZXJuIHZvaWQgX191cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKKworLyoKKyAqIFRoaXMgaXMgdWdseSwgYnV0IHdlIHdhbnQgdGhlIGRlZmF1bHQgY2FzZSB0byBmYWxsIHRocm91Z2guCisgKiAiX19kb3duIiBpcyB0aGUgYWN0dWFsIHJvdXRpbmUgdGhhdCB3YWl0cy4uLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQoreworCW1pZ2h0X3NsZWVwKCk7CisJX19kb3duX29wKHNlbSwgX19kb3duX2ZhaWxlZCk7Cit9CisKKy8qCisgKiBUaGlzIGlzIHVnbHksIGJ1dCB3ZSB3YW50IHRoZSBkZWZhdWx0IGNhc2UgdG8gZmFsbCB0aHJvdWdoLgorICogIl9fZG93bl9pbnRlcnJ1cHRpYmxlIiBpcyB0aGUgYWN0dWFsIHJvdXRpbmUgdGhhdCB3YWl0cy4uLgorICovCitzdGF0aWMgaW5saW5lIGludCBkb3duX2ludGVycnVwdGlibGUgKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCit7CisJbWlnaHRfc2xlZXAoKTsKKwlyZXR1cm4gX19kb3duX29wX3JldChzZW0sIF9fZG93bl9pbnRlcnJ1cHRpYmxlX2ZhaWxlZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGRvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCit7CisJcmV0dXJuIF9fZG93bl9vcF9yZXQoc2VtLCBfX2Rvd25fdHJ5bG9ja19mYWlsZWQpOworfQorCisvKgorICogTm90ZSEgVGhpcyBpcyBzdWJ0bGUuIFdlIGp1bXAgdG8gd2FrZSBwZW9wbGUgdXAgb25seSBpZgorICogdGhlIHNlbWFwaG9yZSB3YXMgbmVnYXRpdmUgKD09IHNvbWVib2R5IHdhcyB3YWl0aW5nIG9uIGl0KS4KKyAqIFRoZSBkZWZhdWx0IGNhc2UgKG5vIGNvbnRlbnRpb24pIHdpbGwgcmVzdWx0IGluIE5PCisgKiBqdW1wcyBmb3IgYm90aCBkb3duKCkgYW5kIHVwKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQoreworCV9fdXBfb3Aoc2VtLCBfX3VwX3dha2V1cCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NlbWJ1Zi5oIGIvaW5jbHVkZS9hc20tYXJtL3NlbWJ1Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDI4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vc2VtYnVmLmgKQEAgLTAsMCArMSwyNSBAQAorI2lmbmRlZiBfQVNNQVJNX1NFTUJVRl9ICisjZGVmaW5lIF9BU01BUk1fU0VNQlVGX0gKKworLyogCisgKiBUaGUgc2VtaWQ2NF9kcyBzdHJ1Y3R1cmUgZm9yIGFybSBhcmNoaXRlY3R1cmUuCisgKiBOb3RlIGV4dHJhIHBhZGRpbmcgYmVjYXVzZSB0aGlzIHN0cnVjdHVyZSBpcyBwYXNzZWQgYmFjayBhbmQgZm9ydGgKKyAqIGJldHdlZW4ga2VybmVsIGFuZCB1c2VyIHNwYWNlLgorICoKKyAqIFBhZCBzcGFjZSBpcyBsZWZ0IGZvcjoKKyAqIC0gNjQtYml0IHRpbWVfdCB0byBzb2x2ZSB5MjAzOCBwcm9ibGVtCisgKiAtIDIgbWlzY2VsbGFuZW91cyAzMi1iaXQgdmFsdWVzCisgKi8KKworc3RydWN0IHNlbWlkNjRfZHMgeworCXN0cnVjdCBpcGM2NF9wZXJtIHNlbV9wZXJtOwkJLyogcGVybWlzc2lvbnMgLi4gc2VlIGlwYy5oICovCisJX19rZXJuZWxfdGltZV90CXNlbV9vdGltZTsJCS8qIGxhc3Qgc2Vtb3AgdGltZSAqLworCXVuc2lnbmVkIGxvbmcJX191bnVzZWQxOworCV9fa2VybmVsX3RpbWVfdAlzZW1fY3RpbWU7CQkvKiBsYXN0IGNoYW5nZSB0aW1lICovCisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDI7CisJdW5zaWduZWQgbG9uZwlzZW1fbnNlbXM7CQkvKiBuby4gb2Ygc2VtYXBob3JlcyBpbiBhcnJheSAqLworCXVuc2lnbmVkIGxvbmcJX191bnVzZWQzOworCXVuc2lnbmVkIGxvbmcJX191bnVzZWQ0OworfTsKKworI2VuZGlmIC8qIF9BU01BUk1fU0VNQlVGX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zZXJpYWwuaCBiL2luY2x1ZGUvYXNtLWFybS9zZXJpYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTViMjYyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NlcmlhbC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3NlcmlhbC5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NiBSdXNzZWxsIEtpbmcuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgQ2hhbmdlbG9nOgorICogICAxNS0xMC0xOTk2CVJNSwlDcmVhdGVkCisgKi8KKworI2lmbmRlZiBfX0FTTV9TRVJJQUxfSAorI2RlZmluZSBfX0FTTV9TRVJJQUxfSAorCisjZGVmaW5lIEJBU0VfQkFVRAkoMTg0MzIwMCAvIDE2KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oIGIvaW5jbHVkZS9hc20tYXJtL3NldHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRjYmQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtL3NldHVwLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgU3RydWN0dXJlIHBhc3NlZCB0byBrZXJuZWwgdG8gdGVsbCBpdCBhYm91dCB0aGUKKyAqICBoYXJkd2FyZSBpdCdzIHJ1bm5pbmcgb24uICBTZWUgRG9jdW1lbnRhdGlvbi9hcm0vU2V0dXAKKyAqICBmb3IgbW9yZSBpbmZvLgorICovCisjaWZuZGVmIF9fQVNNQVJNX1NFVFVQX0gKKyNkZWZpbmUgX19BU01BUk1fU0VUVVBfSAorCisjZGVmaW5lIENPTU1BTkRfTElORV9TSVpFIDEwMjQKKworLyogVGhlIGxpc3QgZW5kcyB3aXRoIGFuIEFUQUdfTk9ORSBub2RlLiAqLworI2RlZmluZSBBVEFHX05PTkUJMHgwMDAwMDAwMAorCitzdHJ1Y3QgdGFnX2hlYWRlciB7CisJdTMyIHNpemU7CisJdTMyIHRhZzsKK307CisKKy8qIFRoZSBsaXN0IG11c3Qgc3RhcnQgd2l0aCBhbiBBVEFHX0NPUkUgbm9kZSAqLworI2RlZmluZSBBVEFHX0NPUkUJMHg1NDQxMDAwMQorCitzdHJ1Y3QgdGFnX2NvcmUgeworCXUzMiBmbGFnczsJCS8qIGJpdCAwID0gcmVhZC1vbmx5ICovCisJdTMyIHBhZ2VzaXplOworCXUzMiByb290ZGV2OworfTsKKworLyogaXQgaXMgYWxsb3dlZCB0byBoYXZlIG11bHRpcGxlIEFUQUdfTUVNIG5vZGVzICovCisjZGVmaW5lIEFUQUdfTUVNCTB4NTQ0MTAwMDIKKworc3RydWN0IHRhZ19tZW0zMiB7CisJdTMyCXNpemU7CisJdTMyCXN0YXJ0OwkvKiBwaHlzaWNhbCBzdGFydCBhZGRyZXNzICovCit9OworCisvKiBWR0EgdGV4dCB0eXBlIGRpc3BsYXlzICovCisjZGVmaW5lIEFUQUdfVklERU9URVhUCTB4NTQ0MTAwMDMKKworc3RydWN0IHRhZ192aWRlb3RleHQgeworCXU4CQl4OworCXU4CQl5OworCXUxNgkJdmlkZW9fcGFnZTsKKwl1OAkJdmlkZW9fbW9kZTsKKwl1OAkJdmlkZW9fY29sczsKKwl1MTYJCXZpZGVvX2VnYV9ieDsKKwl1OAkJdmlkZW9fbGluZXM7CisJdTgJCXZpZGVvX2lzdmdhOworCXUxNgkJdmlkZW9fcG9pbnRzOworfTsKKworLyogZGVzY3JpYmVzIGhvdyB0aGUgcmFtZGlzayB3aWxsIGJlIHVzZWQgaW4ga2VybmVsICovCisjZGVmaW5lIEFUQUdfUkFNRElTSwkweDU0NDEwMDA0CisKK3N0cnVjdCB0YWdfcmFtZGlzayB7CisJdTMyIGZsYWdzOwkvKiBiaXQgMCA9IGxvYWQsIGJpdCAxID0gcHJvbXB0ICovCisJdTMyIHNpemU7CS8qIGRlY29tcHJlc3NlZCByYW1kaXNrIHNpemUgaW4gX2tpbG9fIGJ5dGVzICovCisJdTMyIHN0YXJ0OwkvKiBzdGFydGluZyBibG9jayBvZiBmbG9wcHktYmFzZWQgUkFNIGRpc2sgaW1hZ2UgKi8KK307CisKKy8qIGRlc2NyaWJlcyB3aGVyZSB0aGUgY29tcHJlc3NlZCByYW1kaXNrIGltYWdlIGxpdmVzICh2aXJ0dWFsIGFkZHJlc3MpICovCisvKgorICogdGhpcyBvbmUgYWNjaWRlbnRhbGx5IHVzZWQgdmlydHVhbCBhZGRyZXNzZXMgLSBhcyBzdWNoLAorICogaXQncyBkZXByZWNhdGVkLgorICovCisjZGVmaW5lIEFUQUdfSU5JVFJECTB4NTQ0MTAwMDUKKworLyogZGVzY3JpYmVzIHdoZXJlIHRoZSBjb21wcmVzc2VkIHJhbWRpc2sgaW1hZ2UgbGl2ZXMgKHBoeXNpY2FsIGFkZHJlc3MpICovCisjZGVmaW5lIEFUQUdfSU5JVFJEMgkweDU0NDIwMDA1CisKK3N0cnVjdCB0YWdfaW5pdHJkIHsKKwl1MzIgc3RhcnQ7CS8qIHBoeXNpY2FsIHN0YXJ0IGFkZHJlc3MgKi8KKwl1MzIgc2l6ZTsJLyogc2l6ZSBvZiBjb21wcmVzc2VkIHJhbWRpc2sgaW1hZ2UgaW4gYnl0ZXMgKi8KK307CisKKy8qIGJvYXJkIHNlcmlhbCBudW1iZXIuICI2NCBiaXRzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGV2ZXJ5Ym9keSIgKi8KKyNkZWZpbmUgQVRBR19TRVJJQUwJMHg1NDQxMDAwNgorCitzdHJ1Y3QgdGFnX3NlcmlhbG5yIHsKKwl1MzIgbG93OworCXUzMiBoaWdoOworfTsKKworLyogYm9hcmQgcmV2aXNpb24gKi8KKyNkZWZpbmUgQVRBR19SRVZJU0lPTgkweDU0NDEwMDA3CisKK3N0cnVjdCB0YWdfcmV2aXNpb24geworCXUzMiByZXY7Cit9OworCisvKiBpbml0aWFsIHZhbHVlcyBmb3IgdmVzYWZiLXR5cGUgZnJhbWVidWZmZXJzLiBzZWUgc3RydWN0IHNjcmVlbl9pbmZvCisgKiBpbiBpbmNsdWRlL2xpbnV4L3R0eS5oCisgKi8KKyNkZWZpbmUgQVRBR19WSURFT0xGQgkweDU0NDEwMDA4CisKK3N0cnVjdCB0YWdfdmlkZW9sZmIgeworCXUxNgkJbGZiX3dpZHRoOworCXUxNgkJbGZiX2hlaWdodDsKKwl1MTYJCWxmYl9kZXB0aDsKKwl1MTYJCWxmYl9saW5lbGVuZ3RoOworCXUzMgkJbGZiX2Jhc2U7CisJdTMyCQlsZmJfc2l6ZTsKKwl1OAkJcmVkX3NpemU7CisJdTgJCXJlZF9wb3M7CisJdTgJCWdyZWVuX3NpemU7CisJdTgJCWdyZWVuX3BvczsKKwl1OAkJYmx1ZV9zaXplOworCXU4CQlibHVlX3BvczsKKwl1OAkJcnN2ZF9zaXplOworCXU4CQlyc3ZkX3BvczsKK307CisKKy8qIGNvbW1hbmQgbGluZTogXDAgdGVybWluYXRlZCBzdHJpbmcgKi8KKyNkZWZpbmUgQVRBR19DTURMSU5FCTB4NTQ0MTAwMDkKKworc3RydWN0IHRhZ19jbWRsaW5lIHsKKwljaGFyCWNtZGxpbmVbMV07CS8qIHRoaXMgaXMgdGhlIG1pbmltdW0gc2l6ZSAqLworfTsKKworLyogYWNvcm4gUmlzY1BDIHNwZWNpZmljIGluZm9ybWF0aW9uICovCisjZGVmaW5lIEFUQUdfQUNPUk4JMHg0MTAwMDEwMQorCitzdHJ1Y3QgdGFnX2Fjb3JuIHsKKwl1MzIgbWVtY19jb250cm9sX3JlZzsKKwl1MzIgdnJhbV9wYWdlczsKKwl1OCBzb3VuZGRlZmF1bHQ7CisJdTggYWRmc2RyaXZlczsKK307CisKKy8qIGZvb3RicmlkZ2UgbWVtb3J5IGNsb2NrLCBzZWUgYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2FyY2guYyAqLworI2RlZmluZSBBVEFHX01FTUNMSwkweDQxMDAwNDAyCisKK3N0cnVjdCB0YWdfbWVtY2xrIHsKKwl1MzIgZm1lbWNsazsKK307CisKK3N0cnVjdCB0YWcgeworCXN0cnVjdCB0YWdfaGVhZGVyIGhkcjsKKwl1bmlvbiB7CisJCXN0cnVjdCB0YWdfY29yZQkJY29yZTsKKwkJc3RydWN0IHRhZ19tZW0zMgltZW07CisJCXN0cnVjdCB0YWdfdmlkZW90ZXh0CXZpZGVvdGV4dDsKKwkJc3RydWN0IHRhZ19yYW1kaXNrCXJhbWRpc2s7CisJCXN0cnVjdCB0YWdfaW5pdHJkCWluaXRyZDsKKwkJc3RydWN0IHRhZ19zZXJpYWxucglzZXJpYWxucjsKKwkJc3RydWN0IHRhZ19yZXZpc2lvbglyZXZpc2lvbjsKKwkJc3RydWN0IHRhZ192aWRlb2xmYgl2aWRlb2xmYjsKKwkJc3RydWN0IHRhZ19jbWRsaW5lCWNtZGxpbmU7CisKKwkJLyoKKwkJICogQWNvcm4gc3BlY2lmaWMKKwkJICovCisJCXN0cnVjdCB0YWdfYWNvcm4JYWNvcm47CisKKwkJLyoKKwkJICogREMyMTI4NSBzcGVjaWZpYworCQkgKi8KKwkJc3RydWN0IHRhZ19tZW1jbGsJbWVtY2xrOworCX0gdTsKK307CisKK3N0cnVjdCB0YWd0YWJsZSB7CisJdTMyIHRhZzsKKwlpbnQgKCpwYXJzZSkoY29uc3Qgc3RydWN0IHRhZyAqKTsKK307CisKKyNkZWZpbmUgX190YWcgX19hdHRyaWJ1dGVfdXNlZF9fIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIudGFnbGlzdCIpKSkKKyNkZWZpbmUgX190YWd0YWJsZSh0YWcsIGZuKSBcCitzdGF0aWMgc3RydWN0IHRhZ3RhYmxlIF9fdGFndGFibGVfIyNmbiBfX3RhZyA9IHsgdGFnLCBmbiB9CisKKyNkZWZpbmUgdGFnX21lbWJlcl9wcmVzZW50KHRhZyxtZW1iZXIpCQkJCVwKKwkoKHVuc2lnbmVkIGxvbmcpKCYoKHN0cnVjdCB0YWcgKikwTCktPm1lbWJlciArIDEpCVwKKwkJPD0gKHRhZyktPmhkci5zaXplICogNCkKKworI2RlZmluZSB0YWdfbmV4dCh0KQkoKHN0cnVjdCB0YWcgKikoKHUzMiAqKSh0KSArICh0KS0+aGRyLnNpemUpKQorI2RlZmluZSB0YWdfc2l6ZSh0eXBlKQkoKHNpemVvZihzdHJ1Y3QgdGFnX2hlYWRlcikgKyBzaXplb2Yoc3RydWN0IHR5cGUpKSA+PiAyKQorCisjZGVmaW5lIGZvcl9lYWNoX3RhZyh0LGJhc2UpCQlcCisJZm9yICh0ID0gYmFzZTsgdC0+aGRyLnNpemU7IHQgPSB0YWdfbmV4dCh0KSkKKworLyoKKyAqIE1lbW9yeSBtYXAgZGVzY3JpcHRpb24KKyAqLworI2lmZGVmIENPTkZJR19BUkNIX0xIN0E0MFgKKyMgZGVmaW5lIE5SX0JBTktTIDE2CisjZWxzZQorIyBkZWZpbmUgTlJfQkFOS1MgOAorI2VuZGlmCisKK3N0cnVjdCBtZW1pbmZvIHsKKwlpbnQgbnJfYmFua3M7CisJc3RydWN0IHsKKwkJdW5zaWduZWQgbG9uZyBzdGFydDsKKwkJdW5zaWduZWQgbG9uZyBzaXplOworCQlpbnQgICAgICAgICAgIG5vZGU7CisJfSBiYW5rW05SX0JBTktTXTsKK307CisKKy8qCisgKiBFYXJseSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KKyAqLworc3RydWN0IGVhcmx5X3BhcmFtcyB7CisJY29uc3QgY2hhciAqYXJnOworCXZvaWQgKCpmbikoY2hhciAqKnApOworfTsKKworI2RlZmluZSBfX2Vhcmx5X3BhcmFtKG5hbWUsZm4pCQkJCQlcCitzdGF0aWMgc3RydWN0IGVhcmx5X3BhcmFtcyBfX2Vhcmx5XyMjZm4gX19hdHRyaWJ1dGVfdXNlZF9fCVwKK19fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCJfX2Vhcmx5X3BhcmFtIikpKSA9IHsgbmFtZSwgZm4gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zaG1idWYuaCBiL2luY2x1ZGUvYXNtLWFybS9zaG1idWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTVjNjdiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NobWJ1Zi5oCkBAIC0wLDAgKzEsNDIgQEAKKyNpZm5kZWYgX0FTTUFSTV9TSE1CVUZfSAorI2RlZmluZSBfQVNNQVJNX1NITUJVRl9ICisKKy8qIAorICogVGhlIHNobWlkNjRfZHMgc3RydWN0dXJlIGZvciBhcm0gYXJjaGl0ZWN0dXJlLgorICogTm90ZSBleHRyYSBwYWRkaW5nIGJlY2F1c2UgdGhpcyBzdHJ1Y3R1cmUgaXMgcGFzc2VkIGJhY2sgYW5kIGZvcnRoCisgKiBiZXR3ZWVuIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4KKyAqCisgKiBQYWQgc3BhY2UgaXMgbGVmdCBmb3I6CisgKiAtIDY0LWJpdCB0aW1lX3QgdG8gc29sdmUgeTIwMzggcHJvYmxlbQorICogLSAyIG1pc2NlbGxhbmVvdXMgMzItYml0IHZhbHVlcworICovCisKK3N0cnVjdCBzaG1pZDY0X2RzIHsKKwlzdHJ1Y3QgaXBjNjRfcGVybQlzaG1fcGVybTsJLyogb3BlcmF0aW9uIHBlcm1zICovCisJc2l6ZV90CQkJc2htX3NlZ3N6OwkvKiBzaXplIG9mIHNlZ21lbnQgKGJ5dGVzKSAqLworCV9fa2VybmVsX3RpbWVfdAkJc2htX2F0aW1lOwkvKiBsYXN0IGF0dGFjaCB0aW1lICovCisJdW5zaWduZWQgbG9uZwkJX191bnVzZWQxOworCV9fa2VybmVsX3RpbWVfdAkJc2htX2R0aW1lOwkvKiBsYXN0IGRldGFjaCB0aW1lICovCisJdW5zaWduZWQgbG9uZwkJX191bnVzZWQyOworCV9fa2VybmVsX3RpbWVfdAkJc2htX2N0aW1lOwkvKiBsYXN0IGNoYW5nZSB0aW1lICovCisJdW5zaWduZWQgbG9uZwkJX191bnVzZWQzOworCV9fa2VybmVsX3BpZF90CQlzaG1fY3BpZDsJLyogcGlkIG9mIGNyZWF0b3IgKi8KKwlfX2tlcm5lbF9waWRfdAkJc2htX2xwaWQ7CS8qIHBpZCBvZiBsYXN0IG9wZXJhdG9yICovCisJdW5zaWduZWQgbG9uZwkJc2htX25hdHRjaDsJLyogbm8uIG9mIGN1cnJlbnQgYXR0YWNoZXMgKi8KKwl1bnNpZ25lZCBsb25nCQlfX3VudXNlZDQ7CisJdW5zaWduZWQgbG9uZwkJX191bnVzZWQ1OworfTsKKworc3RydWN0IHNobWluZm82NCB7CisJdW5zaWduZWQgbG9uZwlzaG1tYXg7CisJdW5zaWduZWQgbG9uZwlzaG1taW47CisJdW5zaWduZWQgbG9uZwlzaG1tbmk7CisJdW5zaWduZWQgbG9uZwlzaG1zZWc7CisJdW5zaWduZWQgbG9uZwlzaG1hbGw7CisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDE7CisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDI7CisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDM7CisJdW5zaWduZWQgbG9uZwlfX3VudXNlZDQ7Cit9OworCisjZW5kaWYgLyogX0FTTUFSTV9TSE1CVUZfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NobXBhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vc2htcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTIyM2IzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NobXBhcmFtLmgKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRlZiBfQVNNQVJNX1NITVBBUkFNX0gKKyNkZWZpbmUgX0FTTUFSTV9TSE1QQVJBTV9ICisKKy8qCisgKiBUaGlzIHNob3VsZCBiZSB0aGUgc2l6ZSBvZiB0aGUgdmlydHVhbGx5IGluZGV4ZWQgY2FjaGUvd2F5cywKKyAqIG9yIHBhZ2Ugc2l6ZSwgd2hpY2hldmVyIGlzIGdyZWF0ZXIgc2luY2UgdGhlIGNhY2hlIGFsaWFzZXMKKyAqIGV2ZXJ5IHNpemUvd2F5cyBieXRlcy4KKyAqLworI2RlZmluZQlTSE1MQkEJKDQgKiBQQUdFX1NJWkUpCQkgLyogYXR0YWNoIGFkZHIgYSBtdWx0aXBsZSBvZiB0aGlzICovCisKKy8qCisgKiBFbmZvcmNlIFNITUxCQSBpbiBzaG1hdAorICovCisjZGVmaW5lIF9fQVJDSF9GT1JDRV9TSE1MQkEKKworI2VuZGlmIC8qIF9BU01BUk1fU0hNUEFSQU1fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NpZ2NvbnRleHQuaCBiL2luY2x1ZGUvYXNtLWFybS9zaWdjb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwYjgwYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zaWdjb250ZXh0LmgKQEAgLTAsMCArMSwzNCBAQAorI2lmbmRlZiBfQVNNQVJNX1NJR0NPTlRFWFRfSAorI2RlZmluZSBfQVNNQVJNX1NJR0NPTlRFWFRfSAorCisvKgorICogU2lnbmFsIGNvbnRleHQgc3RydWN0dXJlIC0gY29udGFpbnMgYWxsIGluZm8gdG8gZG8gd2l0aCB0aGUgc3RhdGUKKyAqIGJlZm9yZSB0aGUgc2lnbmFsIGhhbmRsZXIgd2FzIGludm9rZWQuICBOb3RlOiBvbmx5IGFkZCBuZXcgZW50cmllcworICogdG8gdGhlIGVuZCBvZiB0aGUgc3RydWN0dXJlLgorICovCitzdHJ1Y3Qgc2lnY29udGV4dCB7CisJdW5zaWduZWQgbG9uZyB0cmFwX25vOworCXVuc2lnbmVkIGxvbmcgZXJyb3JfY29kZTsKKwl1bnNpZ25lZCBsb25nIG9sZG1hc2s7CisJdW5zaWduZWQgbG9uZyBhcm1fcjA7CisJdW5zaWduZWQgbG9uZyBhcm1fcjE7CisJdW5zaWduZWQgbG9uZyBhcm1fcjI7CisJdW5zaWduZWQgbG9uZyBhcm1fcjM7CisJdW5zaWduZWQgbG9uZyBhcm1fcjQ7CisJdW5zaWduZWQgbG9uZyBhcm1fcjU7CisJdW5zaWduZWQgbG9uZyBhcm1fcjY7CisJdW5zaWduZWQgbG9uZyBhcm1fcjc7CisJdW5zaWduZWQgbG9uZyBhcm1fcjg7CisJdW5zaWduZWQgbG9uZyBhcm1fcjk7CisJdW5zaWduZWQgbG9uZyBhcm1fcjEwOworCXVuc2lnbmVkIGxvbmcgYXJtX2ZwOworCXVuc2lnbmVkIGxvbmcgYXJtX2lwOworCXVuc2lnbmVkIGxvbmcgYXJtX3NwOworCXVuc2lnbmVkIGxvbmcgYXJtX2xyOworCXVuc2lnbmVkIGxvbmcgYXJtX3BjOworCXVuc2lnbmVkIGxvbmcgYXJtX2Nwc3I7CisJdW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyZXNzOworfTsKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zaWdpbmZvLmggYi9pbmNsdWRlL2FzbS1hcm0vc2lnaW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMjE4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vc2lnaW5mby5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfQVNNQVJNX1NJR0lORk9fSAorI2RlZmluZSBfQVNNQVJNX1NJR0lORk9fSAorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2lnaW5mby5oPgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zaWduYWwuaCBiL2luY2x1ZGUvYXNtLWFybS9zaWduYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDMzZTVmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NpZ25hbC5oCkBAIC0wLDAgKzEsMTk0IEBACisjaWZuZGVmIF9BU01BUk1fU0lHTkFMX0gKKyNkZWZpbmUgX0FTTUFSTV9TSUdOQUxfSAorCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworLyogQXZvaWQgdG9vIG1hbnkgaGVhZGVyIG9yZGVyaW5nIHByb2JsZW1zLiAgKi8KK3N0cnVjdCBzaWdpbmZvOworCisjaWZkZWYgX19LRVJORUxfXworLyogTW9zdCB0aGluZ3Mgc2hvdWxkIGJlIGNsZWFuIGVub3VnaCB0byByZWRlZmluZSB0aGlzIGF0IHdpbGwsIGlmIGNhcmUKKyAgIGlzIHRha2VuIHRvIG1ha2UgbGliYyBtYXRjaC4gICovCisKKyNkZWZpbmUgX05TSUcJCTY0CisjZGVmaW5lIF9OU0lHX0JQVwkzMgorI2RlZmluZSBfTlNJR19XT1JEUwkoX05TSUcgLyBfTlNJR19CUFcpCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7CQkvKiBhdCBsZWFzdCAzMiBiaXRzICovCisKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIHNpZ1tfTlNJR19XT1JEU107Cit9IHNpZ3NldF90OworCisjZWxzZQorLyogSGVyZSB3ZSBtdXN0IGNhdGVyIHRvIGxpYmNzIHRoYXQgcG9rZSBhYm91dCBpbiBrZXJuZWwgaGVhZGVycy4gICovCisKKyNkZWZpbmUgTlNJRwkJMzIKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBzaWdzZXRfdDsKKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2RlZmluZSBTSUdIVVAJCSAxCisjZGVmaW5lIFNJR0lOVAkJIDIKKyNkZWZpbmUgU0lHUVVJVAkJIDMKKyNkZWZpbmUgU0lHSUxMCQkgNAorI2RlZmluZSBTSUdUUkFQCQkgNQorI2RlZmluZSBTSUdBQlJUCQkgNgorI2RlZmluZSBTSUdJT1QJCSA2CisjZGVmaW5lIFNJR0JVUwkJIDcKKyNkZWZpbmUgU0lHRlBFCQkgOAorI2RlZmluZSBTSUdLSUxMCQkgOQorI2RlZmluZSBTSUdVU1IxCQkxMAorI2RlZmluZSBTSUdTRUdWCQkxMQorI2RlZmluZSBTSUdVU1IyCQkxMgorI2RlZmluZSBTSUdQSVBFCQkxMworI2RlZmluZSBTSUdBTFJNCQkxNAorI2RlZmluZSBTSUdURVJNCQkxNQorI2RlZmluZSBTSUdTVEtGTFQJMTYKKyNkZWZpbmUgU0lHQ0hMRAkJMTcKKyNkZWZpbmUgU0lHQ09OVAkJMTgKKyNkZWZpbmUgU0lHU1RPUAkJMTkKKyNkZWZpbmUgU0lHVFNUUAkJMjAKKyNkZWZpbmUgU0lHVFRJTgkJMjEKKyNkZWZpbmUgU0lHVFRPVQkJMjIKKyNkZWZpbmUgU0lHVVJHCQkyMworI2RlZmluZSBTSUdYQ1BVCQkyNAorI2RlZmluZSBTSUdYRlNaCQkyNQorI2RlZmluZSBTSUdWVEFMUk0JMjYKKyNkZWZpbmUgU0lHUFJPRgkJMjcKKyNkZWZpbmUgU0lHV0lOQ0gJMjgKKyNkZWZpbmUgU0lHSU8JCTI5CisjZGVmaW5lIFNJR1BPTEwJCVNJR0lPCisvKgorI2RlZmluZSBTSUdMT1NUCQkyOQorKi8KKyNkZWZpbmUgU0lHUFdSCQkzMAorI2RlZmluZSBTSUdTWVMJCTMxCisjZGVmaW5lCVNJR1VOVVNFRAkzMQorCisvKiBUaGVzZSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgY29uc3RhbnRzIGZyb20gdXNlcmxhbmQuICAqLworI2RlZmluZSBTSUdSVE1JTgkzMgorI2RlZmluZSBTSUdSVE1BWAlfTlNJRworCisjZGVmaW5lIFNJR1NXSQkJMzIKKworLyoKKyAqIFNBX0ZMQUdTIHZhbHVlczoKKyAqCisgKiBTQV9OT0NMRFNUT1AJCWZsYWcgdG8gdHVybiBvZmYgU0lHQ0hMRCB3aGVuIGNoaWxkcmVuIHN0b3AuCisgKiBTQV9OT0NMRFdBSVQJCWZsYWcgb24gU0lHQ0hMRCB0byBpbmhpYml0IHpvbWJpZXMuCisgKiBTQV9TSUdJTkZPCQlkZWxpdmVyIHRoZSBzaWduYWwgd2l0aCBTSUdJTkZPIHN0cnVjdHMKKyAqIFNBX1RISVJUWVRXTwkJZGVsaXZlcnMgdGhlIHNpZ25hbCBpbiAzMi1iaXQgbW9kZSwgZXZlbiBpZiB0aGUgdGFzayAKKyAqCQkJaXMgcnVubmluZyBpbiAyNi1iaXQuCisgKiBTQV9PTlNUQUNLCQlhbGxvd3MgYWx0ZXJuYXRlIHNpZ25hbCBzdGFja3MgKHNlZSBzaWdhbHRzdGFjaygyKSkuCisgKiBTQV9SRVNUQVJUCQlmbGFnIHRvIGdldCByZXN0YXJ0aW5nIHNpZ25hbHMgKHdoaWNoIHdlcmUgdGhlIGRlZmF1bHQgbG9uZyBhZ28pCisgKiBTQV9JTlRFUlJVUFQJCWlzIGEgbm8tb3AsIGJ1dCBsZWZ0IGR1ZSB0byBoaXN0b3JpY2FsIHJlYXNvbnMuIFVzZSB0aGUKKyAqIFNBX05PREVGRVIJCXByZXZlbnRzIHRoZSBjdXJyZW50IHNpZ25hbCBmcm9tIGJlaW5nIG1hc2tlZCBpbiB0aGUgaGFuZGxlci4KKyAqIFNBX1JFU0VUSEFORAkJY2xlYXJzIHRoZSBoYW5kbGVyIHdoZW4gdGhlIHNpZ25hbCBpcyBkZWxpdmVyZWQuCisgKgorICogU0FfT05FU0hPVCBhbmQgU0FfTk9NQVNLIGFyZSB0aGUgaGlzdG9yaWNhbCBMaW51eCBuYW1lcyBmb3IgdGhlIFNpbmdsZQorICogVW5peCBuYW1lcyBSRVNFVEhBTkQgYW5kIE5PREVGRVIgcmVzcGVjdGl2ZWx5LgorICovCisjZGVmaW5lIFNBX05PQ0xEU1RPUAkweDAwMDAwMDAxCisjZGVmaW5lIFNBX05PQ0xEV0FJVAkweDAwMDAwMDAyCisjZGVmaW5lIFNBX1NJR0lORk8JMHgwMDAwMDAwNAorI2RlZmluZSBTQV9USElSVFlUV08JMHgwMjAwMDAwMAorI2RlZmluZSBTQV9SRVNUT1JFUgkweDA0MDAwMDAwCisjZGVmaW5lIFNBX09OU1RBQ0sJMHgwODAwMDAwMAorI2RlZmluZSBTQV9SRVNUQVJUCTB4MTAwMDAwMDAKKyNkZWZpbmUgU0FfTk9ERUZFUgkweDQwMDAwMDAwCisjZGVmaW5lIFNBX1JFU0VUSEFORAkweDgwMDAwMDAwCisKKyNkZWZpbmUgU0FfTk9NQVNLCVNBX05PREVGRVIKKyNkZWZpbmUgU0FfT05FU0hPVAlTQV9SRVNFVEhBTkQKKyNkZWZpbmUgU0FfSU5URVJSVVBUCTB4MjAwMDAwMDAgLyogZHVtbXkgLS0gaWdub3JlZCAqLworCisKKy8qIAorICogc2lnYWx0c3RhY2sgY29udHJvbHMKKyAqLworI2RlZmluZSBTU19PTlNUQUNLCTEKKyNkZWZpbmUgU1NfRElTQUJMRQkyCisKKyNkZWZpbmUgTUlOU0lHU1RLU1oJMjA0OAorI2RlZmluZSBTSUdTVEtTWgk4MTkyCisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKy8qCisgKiBUaGVzZSB2YWx1ZXMgb2Ygc2FfZmxhZ3MgYXJlIHVzZWQgb25seSBieSB0aGUga2VybmVsIGFzIHBhcnQgb2YgdGhlCisgKiBpcnEgaGFuZGxpbmcgcm91dGluZXMuCisgKgorICogU0FfSU5URVJSVVBUIGlzIGFsc28gdXNlZCBieSB0aGUgaXJxIGhhbmRsaW5nIHJvdXRpbmVzLgorICogU0FfU0hJUlEgaXMgZm9yIHNoYXJlZCBpbnRlcnJ1cHQgc3VwcG9ydCBvbiBQQ0kgYW5kIEVJU0EuCisgKi8KKyNkZWZpbmUgU0FfUFJPQkUJCTB4ODAwMDAwMDAKKyNkZWZpbmUgU0FfU0FNUExFX1JBTkRPTQkweDEwMDAwMDAwCisjZGVmaW5lIFNBX0lSUU5PTUFTSwkJMHgwODAwMDAwMAorI2RlZmluZSBTQV9TSElSUQkJMHgwNDAwMDAwMAorI2VuZGlmCisKKyNkZWZpbmUgU0lHX0JMT0NLICAgICAgICAgIDAJLyogZm9yIGJsb2NraW5nIHNpZ25hbHMgKi8KKyNkZWZpbmUgU0lHX1VOQkxPQ0sgICAgICAgIDEJLyogZm9yIHVuYmxvY2tpbmcgc2lnbmFscyAqLworI2RlZmluZSBTSUdfU0VUTUFTSyAgICAgICAgMgkvKiBmb3Igc2V0dGluZyB0aGUgc2lnbmFsIG1hc2sgKi8KKworLyogVHlwZSBvZiBhIHNpZ25hbCBoYW5kbGVyLiAgKi8KK3R5cGVkZWYgdm9pZCBfX3NpZ25hbGZuX3QoaW50KTsKK3R5cGVkZWYgX19zaWduYWxmbl90IF9fdXNlciAqX19zaWdoYW5kbGVyX3Q7CisKK3R5cGVkZWYgdm9pZCBfX3Jlc3RvcmVmbl90KHZvaWQpOwordHlwZWRlZiBfX3Jlc3RvcmVmbl90IF9fdXNlciAqX19zaWdyZXN0b3JlX3Q7CisKKyNkZWZpbmUgU0lHX0RGTAkoKF9fc2lnaGFuZGxlcl90KTApCS8qIGRlZmF1bHQgc2lnbmFsIGhhbmRsaW5nICovCisjZGVmaW5lIFNJR19JR04JKChfX3NpZ2hhbmRsZXJfdCkxKQkvKiBpZ25vcmUgc2lnbmFsICovCisjZGVmaW5lIFNJR19FUlIJKChfX3NpZ2hhbmRsZXJfdCktMSkJLyogZXJyb3IgcmV0dXJuIGZyb20gc2lnbmFsICovCisKKyNpZmRlZiBfX0tFUk5FTF9fCitzdHJ1Y3Qgb2xkX3NpZ2FjdGlvbiB7CisJX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKKwlvbGRfc2lnc2V0X3Qgc2FfbWFzazsKKwl1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOworCV9fc2lncmVzdG9yZV90IHNhX3Jlc3RvcmVyOworfTsKKworc3RydWN0IHNpZ2FjdGlvbiB7CisJX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKKwl1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOworCV9fc2lncmVzdG9yZV90IHNhX3Jlc3RvcmVyOworCXNpZ3NldF90IHNhX21hc2s7CQkvKiBtYXNrIGxhc3QgZm9yIGV4dGVuc2liaWxpdHkgKi8KK307CisKK3N0cnVjdCBrX3NpZ2FjdGlvbiB7CisJc3RydWN0IHNpZ2FjdGlvbiBzYTsKK307CisKKyNlbHNlCisvKiBIZXJlIHdlIG11c3QgY2F0ZXIgdG8gbGliY3MgdGhhdCBwb2tlIGFib3V0IGluIGtlcm5lbCBoZWFkZXJzLiAgKi8KKworc3RydWN0IHNpZ2FjdGlvbiB7CisJdW5pb24geworCSAgX19zaWdoYW5kbGVyX3QgX3NhX2hhbmRsZXI7CisJICB2b2lkICgqX3NhX3NpZ2FjdGlvbikoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCB2b2lkICopOworCX0gX3U7CisJc2lnc2V0X3Qgc2FfbWFzazsKKwl1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOworCXZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7Cit9OworCisjZGVmaW5lIHNhX2hhbmRsZXIJX3UuX3NhX2hhbmRsZXIKKyNkZWZpbmUgc2Ffc2lnYWN0aW9uCV91Ll9zYV9zaWdhY3Rpb24KKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKwordHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgeworCXZvaWQgX191c2VyICpzc19zcDsKKwlpbnQgc3NfZmxhZ3M7CisJc2l6ZV90IHNzX3NpemU7Cit9IHN0YWNrX3Q7CisKKyNpZmRlZiBfX0tFUk5FTF9fCisjaW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4KKyNkZWZpbmUgcHRyYWNlX3NpZ25hbF9kZWxpdmVyKHJlZ3MsIGNvb2tpZSkgZG8geyB9IHdoaWxlICgwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3NpemVzLmggYi9pbmNsdWRlL2FzbS1hcm0vc2l6ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjUwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NpemVzLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworLyogRE8gTk9UIEVESVQhISAtIHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZAorICogICAgICAgICAgICAgICAgIGZyb20gLnMgZmlsZSBieSBhd2sgLWYgczJoLmF3aworICovCisvKiAgU2l6ZSBkZWZpbml0aW9ucworICogIENvcHlyaWdodCAoQykgQVJNIExpbWl0ZWQgMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaWZuZGVmIF9fc2l6ZXNfaAorI2RlZmluZSBfX3NpemVzX2ggICAgICAgICAgICAgICAgICAgICAgIDEKKworLyogaGFuZHkgc2l6ZXMgKi8KKyNkZWZpbmUgU1pfMUsgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5lIFNaXzRLICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBTWl84SyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgU1pfMTZLICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIFNaXzY0SyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBTWl8xMjhLICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZpbmUgU1pfMjU2SyAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIFNaXzUxMksgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwMAorCisjZGVmaW5lIFNaXzFNICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBTWl8yTSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKyNkZWZpbmUgU1pfNE0gICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIFNaXzhNICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgwMDAwMAorI2RlZmluZSBTWl8xNk0gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgU1pfMzJNICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisjZGVmaW5lIFNaXzY0TSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMAorI2RlZmluZSBTWl8xMjhNICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAKKyNkZWZpbmUgU1pfMjU2TSAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5lIFNaXzUxMk0gICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorCisjZGVmaW5lIFNaXzFHICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBTWl8yRyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKworI2VuZGlmCisKKy8qICAgICAgICAgRU5EICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc21wLmggYi9pbmNsdWRlL2FzbS1hcm0vc21wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIxZmQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zbXAuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9zbXAuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBBUk0gTHRkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX1NNUF9ICisjZGVmaW5lIF9fQVNNX0FSTV9TTVBfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdGhyZWFkcy5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KKyNpbmNsdWRlIDxsaW51eC90aHJlYWRfaW5mby5oPgorCisjaW5jbHVkZSA8YXNtL2FyY2gvc21wLmg+CisKKyNpZm5kZWYgQ09ORklHX1NNUAorIyBlcnJvciAiPGFzbS1hcm0vc21wLmg+IGluY2x1ZGVkIGluIG5vbi1TTVAgYnVpbGQiCisjZW5kaWYKKworI2RlZmluZSBzbXBfcHJvY2Vzc29yX2lkKCkJKGN1cnJlbnRfdGhyZWFkX2luZm8oKS0+Y3B1KQorCitleHRlcm4gY3B1bWFza190IGNwdV9wcmVzZW50X21hc2s7CisjZGVmaW5lIGNwdV9wb3NzaWJsZV9tYXAgY3B1X3ByZXNlbnRfbWFzaworCisvKgorICogYXQgdGhlIG1vbWVudCwgdGhlcmUncyBub3QgYSBiaWcgcGVuYWx0eSBmb3IgY2hhbmdpbmcgQ1BVcworICogKHRoZSA+YmlnPCBwZW5hbHR5IGlzIHJ1bm5pbmcgU01QIGluIHRoZSBmaXJzdCBwbGFjZSkKKyAqLworI2RlZmluZSBQUk9DX0NIQU5HRV9QRU5BTFRZCQkxNQorCitzdHJ1Y3Qgc2VxX2ZpbGU7CisKKy8qCisgKiBnZW5lcmF0ZSBJUEkgbGlzdCB0ZXh0CisgKi8KK2V4dGVybiB2b2lkIHNob3dfaXBpX2xpc3Qoc3RydWN0IHNlcV9maWxlICpwKTsKKworLyoKKyAqIE1vdmUgZ2xvYmFsIGRhdGEgaW50byBwZXItcHJvY2Vzc29yIHN0b3JhZ2UuCisgKi8KK2V4dGVybiB2b2lkIHNtcF9zdG9yZV9jcHVfaW5mbyh1bnNpZ25lZCBpbnQgY3B1aWQpOworCisvKgorICogUmFpc2UgYW4gSVBJIGNyb3NzIGNhbGwgb24gQ1BVcyBpbiBjYWxsbWFwLgorICovCitleHRlcm4gdm9pZCBzbXBfY3Jvc3NfY2FsbChjcHVtYXNrX3QgY2FsbG1hcCk7CisKKy8qCisgKiBCb290IGEgc2Vjb25kYXJ5IENQVSwgYW5kIGFzc2lnbiBpdCB0aGUgc3BlY2lmaWVkIGlkbGUgdGFzay4KKyAqIFRoaXMgYWxzbyBnaXZlcyB1cyB0aGUgaW5pdGlhbCBzdGFjayB0byB1c2UgZm9yIHRoaXMgQ1BVLgorICovCitleHRlcm4gaW50IGJvb3Rfc2Vjb25kYXJ5KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKKworI2VuZGlmIC8qIGlmbmRlZiBfX0FTTV9BUk1fU01QX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zb2NrZXQuaCBiL2luY2x1ZGUvYXNtLWFybS9zb2NrZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmQyMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NvY2tldC5oCkBAIC0wLDAgKzEsNTAgQEAKKyNpZm5kZWYgX0FTTUFSTV9TT0NLRVRfSAorI2RlZmluZSBfQVNNQVJNX1NPQ0tFVF9ICisKKyNpbmNsdWRlIDxhc20vc29ja2lvcy5oPgorCisvKiBGb3Igc2V0c29ja29wdCgyKSAqLworI2RlZmluZSBTT0xfU09DS0VUCTEKKworI2RlZmluZSBTT19ERUJVRwkxCisjZGVmaW5lIFNPX1JFVVNFQUREUgkyCisjZGVmaW5lIFNPX1RZUEUJCTMKKyNkZWZpbmUgU09fRVJST1IJNAorI2RlZmluZSBTT19ET05UUk9VVEUJNQorI2RlZmluZSBTT19CUk9BRENBU1QJNgorI2RlZmluZSBTT19TTkRCVUYJNworI2RlZmluZSBTT19SQ1ZCVUYJOAorI2RlZmluZSBTT19LRUVQQUxJVkUJOQorI2RlZmluZSBTT19PT0JJTkxJTkUJMTAKKyNkZWZpbmUgU09fTk9fQ0hFQ0sJMTEKKyNkZWZpbmUgU09fUFJJT1JJVFkJMTIKKyNkZWZpbmUgU09fTElOR0VSCTEzCisjZGVmaW5lIFNPX0JTRENPTVBBVAkxNAorLyogVG8gYWRkIDojZGVmaW5lIFNPX1JFVVNFUE9SVCAxNSAqLworI2RlZmluZSBTT19QQVNTQ1JFRAkxNgorI2RlZmluZSBTT19QRUVSQ1JFRAkxNworI2RlZmluZSBTT19SQ1ZMT1dBVAkxOAorI2RlZmluZSBTT19TTkRMT1dBVAkxOQorI2RlZmluZSBTT19SQ1ZUSU1FTwkyMAorI2RlZmluZSBTT19TTkRUSU1FTwkyMQorCisvKiBTZWN1cml0eSBsZXZlbHMgLSBhcyBwZXIgTlJMIElQdjYgLSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyAqLworI2RlZmluZSBTT19TRUNVUklUWV9BVVRIRU5USUNBVElPTgkJMjIKKyNkZWZpbmUgU09fU0VDVVJJVFlfRU5DUllQVElPTl9UUkFOU1BPUlQJMjMKKyNkZWZpbmUgU09fU0VDVVJJVFlfRU5DUllQVElPTl9ORVRXT1JLCQkyNAorCisjZGVmaW5lIFNPX0JJTkRUT0RFVklDRSAyNQorCisvKiBTb2NrZXQgZmlsdGVyaW5nICovCisjZGVmaW5lIFNPX0FUVEFDSF9GSUxURVIgICAgICAgIDI2CisjZGVmaW5lIFNPX0RFVEFDSF9GSUxURVIgICAgICAgIDI3CisKKyNkZWZpbmUgU09fUEVFUk5BTUUgICAgICAgICAgICAgMjgKKyNkZWZpbmUgU09fVElNRVNUQU1QCQkyOQorI2RlZmluZSBTQ01fVElNRVNUQU1QCQlTT19USU1FU1RBTVAKKworI2RlZmluZSBTT19BQ0NFUFRDT05OCQkzMAorCisjZGVmaW5lIFNPX1BFRVJTRUMJCTMxCisKKyNlbmRpZiAvKiBfQVNNX1NPQ0tFVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc29ja2lvcy5oIGIvaW5jbHVkZS9hc20tYXJtL3NvY2tpb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2MzNDA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3NvY2tpb3MuaApAQCAtMCwwICsxLDEyIEBACisjaWZuZGVmIF9fQVJDSF9BUk1fU09DS0lPU19ICisjZGVmaW5lIF9fQVJDSF9BUk1fU09DS0lPU19ICisKKy8qIFNvY2tldC1sZXZlbCBJL08gY29udHJvbCBjYWxscy4gKi8KKyNkZWZpbmUgRklPU0VUT1dOIAkweDg5MDEKKyNkZWZpbmUgU0lPQ1NQR1JQCTB4ODkwMgorI2RlZmluZSBGSU9HRVRPV04JMHg4OTAzCisjZGVmaW5lIFNJT0NHUEdSUAkweDg5MDQKKyNkZWZpbmUgU0lPQ0FUTUFSSwkweDg5MDUKKyNkZWZpbmUgU0lPQ0dTVEFNUAkweDg5MDYJCS8qIEdldCBzdGFtcCAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9zcGlubG9jay5oIGIvaW5jbHVkZS9hc20tYXJtL3NwaW5sb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyMzIzNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zcGlubG9jay5oCkBAIC0wLDAgKzEsMTY5IEBACisjaWZuZGVmIF9fQVNNX1NQSU5MT0NLX0gKKyNkZWZpbmUgX19BU01fU1BJTkxPQ0tfSAorCisjaWYgX19MSU5VWF9BUk1fQVJDSF9fIDwgNgorI2Vycm9yIFNNUCBub3Qgc3VwcG9ydGVkIG9uIHByZS1BUk12NiBDUFVzCisjZW5kaWYKKworLyoKKyAqIEFSTXY2IFNwaW4tbG9ja2luZy4KKyAqCisgKiBXZSAoZXhjbHVzaXZlbHkpIHJlYWQgdGhlIG9sZCB2YWx1ZSwgYW5kIGRlY3JlbWVudCBpdC4gIElmIGl0CisgKiBoaXRzIHplcm8sIHdlIG1heSBoYXZlIHdvbiB0aGUgbG9jaywgc28gd2UgdHJ5IChleGNsdXNpdmVseSkKKyAqIHN0b3JpbmcgaXQuCisgKgorICogVW5sb2NrZWQgdmFsdWU6IDAKKyAqIExvY2tlZCB2YWx1ZTogMQorICovCit0eXBlZGVmIHN0cnVjdCB7CisJdm9sYXRpbGUgdW5zaWduZWQgaW50IGxvY2s7CisjaWZkZWYgQ09ORklHX1BSRUVNUFQKKwl1bnNpZ25lZCBpbnQgYnJlYWtfbG9jazsKKyNlbmRpZgorfSBzcGlubG9ja190OworCisjZGVmaW5lIFNQSU5fTE9DS19VTkxPQ0tFRAkoc3BpbmxvY2tfdCkgeyAwIH0KKworI2RlZmluZSBzcGluX2xvY2tfaW5pdCh4KQlkbyB7ICooeCkgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNwaW5faXNfbG9ja2VkKHgpCSgoeCktPmxvY2sgIT0gMCkKKyNkZWZpbmUgc3Bpbl91bmxvY2tfd2FpdCh4KQlkbyB7IGJhcnJpZXIoKTsgfSB3aGlsZSAoc3Bpbl9pc19sb2NrZWQoeCkpCisjZGVmaW5lIF9yYXdfc3Bpbl9sb2NrX2ZsYWdzKGxvY2ssIGZsYWdzKSBfcmF3X3NwaW5fbG9jayhsb2NrKQorCitzdGF0aWMgaW5saW5lIHZvaWQgX3Jhd19zcGluX2xvY2soc3BpbmxvY2tfdCAqbG9jaykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwgJTIsIFslMV1cbiIKKyIJdGVxZXEJJTAsICMwXG4iCisiCWJuZQkxYiIKKwk6ICI9JnIiICh0bXApCisJOiAiciIgKCZsb2NrLT5sb2NrKSwgInIiICgxKQorCTogImNjIiwgIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW5saW5lIGludCBfcmF3X3NwaW5fdHJ5bG9jayhzcGlubG9ja190ICpsb2NrKQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiCWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwgJTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmbG9jay0+bG9jayksICJyIiAoMSkKKwk6ICJjYyIsICJtZW1vcnkiKTsKKworCXJldHVybiB0bXAgPT0gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9yYXdfc3Bpbl91bmxvY2soc3BpbmxvY2tfdCAqbG9jaykKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIJc3RyCSUxLCBbJTBdIgorCToKKwk6ICJyIiAoJmxvY2stPmxvY2spLCAiciIgKDApCisJOiAiY2MiLCAibWVtb3J5Iik7Cit9CisKKy8qCisgKiBSV0xPQ0tTCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgbG9jazsKKyNpZmRlZiBDT05GSUdfUFJFRU1QVAorCXVuc2lnbmVkIGludCBicmVha19sb2NrOworI2VuZGlmCit9IHJ3bG9ja190OworCisjZGVmaW5lIFJXX0xPQ0tfVU5MT0NLRUQJKHJ3bG9ja190KSB7IDAgfQorI2RlZmluZSByd2xvY2tfaW5pdCh4KQkJZG8geyAqKHgpICsgUldfTE9DS19VTkxPQ0tFRDsgfSB3aGlsZSAoMCkKKworLyoKKyAqIFdyaXRlIGxvY2tzIGFyZSBlYXN5IC0gd2UganVzdCBzZXQgYml0IDMxLiAgV2hlbiB1bmxvY2tpbmcsIHdlIGNhbgorICoganVzdCB3cml0ZSB6ZXJvIHNpbmNlIHRoZSBsb2NrIGlzIGV4Y2x1c2l2ZWx5IGhlbGQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfcmF3X3dyaXRlX2xvY2socndsb2NrX3QgKnJ3KQoreworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisiMToJbGRyZXgJJTAsIFslMV1cbiIKKyIJdGVxCSUwLCAjMFxuIgorIglzdHJleGVxCSUwLCAlMiwgWyUxXVxuIgorIgl0ZXEJJTAsICMwXG4iCisiCWJuZQkxYiIKKwk6ICI9JnIiICh0bXApCisJOiAiciIgKCZydy0+bG9jayksICJyIiAoMHg4MDAwMDAwMCkKKwk6ICJjYyIsICJtZW1vcnkiKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9yYXdfd3JpdGVfdW5sb2NrKHJ3bG9ja190ICpydykKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkic3RyCSUxLCBbJTBdIgorCToKKwk6ICJyIiAoJnJ3LT5sb2NrKSwgInIiICgwKQorCTogImNjIiwgIm1lbW9yeSIpOworfQorCisvKgorICogUmVhZCBsb2NrcyBhcmUgYSBiaXQgbW9yZSBoYWlyeToKKyAqICAtIEV4Y2x1c2l2ZWx5IGxvYWQgdGhlIGxvY2sgdmFsdWUuCisgKiAgLSBJbmNyZW1lbnQgaXQuCisgKiAgLSBTdG9yZSBuZXcgbG9jayB2YWx1ZSBpZiBwb3NpdGl2ZSwgYW5kIHdlIHN0aWxsIG93biB0aGlzIGxvY2F0aW9uLgorICogICAgSWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLCB3ZSd2ZSBhbHJlYWR5IGZhaWxlZC4KKyAqICAtIElmIHdlIGZhaWxlZCB0byBzdG9yZSB0aGUgdmFsdWUsIHdlIHdhbnQgYSBuZWdhdGl2ZSByZXN1bHQuCisgKiAgLSBJZiB3ZSBmYWlsZWQsIHRyeSBhZ2Fpbi4KKyAqIFVubG9ja2luZyBpcyBzaW1pbGFybHkgaGFpcnkuICBXZSBtYXkgaGF2ZSBtdWx0aXBsZSByZWFkIGxvY2tzCisgKiBjdXJyZW50bHkgYWN0aXZlLiAgSG93ZXZlciwgd2Uga25vdyB3ZSB3b24ndCBoYXZlIGFueSB3cml0ZQorICogbG9ja3MuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfcmF3X3JlYWRfbG9jayhyd2xvY2tfdCAqcncpCit7CisJdW5zaWduZWQgbG9uZyB0bXAsIHRtcDI7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUyXVxuIgorIglhZGRzCSUwLCAlMCwgIzFcbiIKKyIJc3RyZXhwbAklMSwgJTAsIFslMl1cbiIKKyIJcnNicGxzCSUwLCAlMSwgIzBcbiIKKyIJYm1pCTFiIgorCTogIj0mciIgKHRtcCksICI9JnIiICh0bXAyKQorCTogInIiICgmcnctPmxvY2spCisJOiAiY2MiLCAibWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfcmF3X3JlYWRfdW5sb2NrKHJ3bG9ja190ICpydykKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyIxOglsZHJleAklMCwgWyUyXVxuIgorIglzdWIJJTAsICUwLCAjMVxuIgorIglzdHJleAklMSwgJTAsIFslMl1cbiIKKyIJdGVxCSUxLCAjMFxuIgorIglibmUJMWIiCisJOiAiPSZyIiAodG1wKSwgIj0mciIgKHRtcDIpCisJOiAiciIgKCZydy0+bG9jaykKKwk6ICJjYyIsICJtZW1vcnkiKTsKK30KKworI2RlZmluZSBfcmF3X3JlYWRfdHJ5bG9jayhsb2NrKSBnZW5lcmljX3Jhd19yZWFkX3RyeWxvY2sobG9jaykKKworc3RhdGljIGlubGluZSBpbnQgX3Jhd193cml0ZV90cnlsb2NrKHJ3bG9ja190ICpydykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAorIjE6CWxkcmV4CSUwLCBbJTFdXG4iCisiCXRlcQklMCwgIzBcbiIKKyIJc3RyZXhlcQklMCwgJTIsIFslMV0iCisJOiAiPSZyIiAodG1wKQorCTogInIiICgmcnctPmxvY2spLCAiciIgKDB4ODAwMDAwMDApCisJOiAiY2MiLCAibWVtb3J5Iik7CisKKwlyZXR1cm4gdG1wID09IDA7Cit9CisKKyNlbmRpZiAvKiBfX0FTTV9TUElOTE9DS19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc3RhdC5oIGIvaW5jbHVkZS9hc20tYXJtL3N0YXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYThlN2E4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3N0YXQuaApAQCAtMCwwICsxLDk0IEBACisjaWZuZGVmIF9BU01BUk1fU1RBVF9ICisjZGVmaW5lIF9BU01BUk1fU1RBVF9ICisKK3N0cnVjdCBfX29sZF9rZXJuZWxfc3RhdCB7CisJdW5zaWduZWQgc2hvcnQgc3RfZGV2OworCXVuc2lnbmVkIHNob3J0IHN0X2lubzsKKwl1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOworCXVuc2lnbmVkIHNob3J0IHN0X25saW5rOworCXVuc2lnbmVkIHNob3J0IHN0X3VpZDsKKwl1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CisJdW5zaWduZWQgc2hvcnQgc3RfcmRldjsKKwl1bnNpZ25lZCBsb25nICBzdF9zaXplOworCXVuc2lnbmVkIGxvbmcgIHN0X2F0aW1lOworCXVuc2lnbmVkIGxvbmcgIHN0X210aW1lOworCXVuc2lnbmVkIGxvbmcgIHN0X2N0aW1lOworfTsKKworI2RlZmluZSBTVEFUX0hBVkVfTlNFQyAKKworc3RydWN0IHN0YXQgeworI2lmIGRlZmluZWQoX19BUk1FQl9fKQorCXVuc2lnbmVkIHNob3J0IHN0X2RldjsKKwl1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CisjZWxzZQorCXVuc2lnbmVkIGxvbmcgIHN0X2RldjsKKyNlbmRpZgorCXVuc2lnbmVkIGxvbmcgIHN0X2lubzsKKwl1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOworCXVuc2lnbmVkIHNob3J0IHN0X25saW5rOworCXVuc2lnbmVkIHNob3J0IHN0X3VpZDsKKwl1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CisjaWYgZGVmaW5lZChfX0FSTUVCX18pCisJdW5zaWduZWQgc2hvcnQgc3RfcmRldjsKKwl1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CisjZWxzZQorCXVuc2lnbmVkIGxvbmcgIHN0X3JkZXY7CisjZW5kaWYKKwl1bnNpZ25lZCBsb25nICBzdF9zaXplOworCXVuc2lnbmVkIGxvbmcgIHN0X2Jsa3NpemU7CisJdW5zaWduZWQgbG9uZyAgc3RfYmxvY2tzOworCXVuc2lnbmVkIGxvbmcgIHN0X2F0aW1lOworCXVuc2lnbmVkIGxvbmcgIHN0X2F0aW1lX25zZWM7CisJdW5zaWduZWQgbG9uZyAgc3RfbXRpbWU7CisJdW5zaWduZWQgbG9uZyAgc3RfbXRpbWVfbnNlYzsKKwl1bnNpZ25lZCBsb25nICBzdF9jdGltZTsKKwl1bnNpZ25lZCBsb25nICBzdF9jdGltZV9uc2VjOworCXVuc2lnbmVkIGxvbmcgIF9fdW51c2VkNDsKKwl1bnNpZ25lZCBsb25nICBfX3VudXNlZDU7Cit9OworCisvKiBUaGlzIG1hdGNoZXMgc3RydWN0IHN0YXQ2NCBpbiBnbGliYzIuMSwgaGVuY2UgdGhlIGFic29sdXRlbHkKKyAqIGluc2FuZSBhbW91bnRzIG9mIHBhZGRpbmcgYXJvdW5kIGRldl90J3MuCisgKiBOb3RlOiBUaGUga2VybmVsIHplcm8ncyB0aGUgcGFkZGVkIHJlZ2lvbiBiZWNhdXNlIGdsaWJjIG1pZ2h0IHJlYWQgdGhlbQorICogaW4gdGhlIGhvcGUgdGhhdCB0aGUga2VybmVsIGhhcyBzdHJldGNoZWQgdG8gdXNpbmcgbGFyZ2VyIHNpemVzLgorICovCitzdHJ1Y3Qgc3RhdDY0IHsKKwl1bnNpZ25lZCBsb25nIGxvbmcJc3RfZGV2OworCXVuc2lnbmVkIGNoYXIgICBfX3BhZDBbNF07CisKKyNkZWZpbmUgU1RBVDY0X0hBU19CUk9LRU5fU1RfSU5PCTEKKwl1bnNpZ25lZCBsb25nCV9fc3RfaW5vOworCXVuc2lnbmVkIGludAlzdF9tb2RlOworCXVuc2lnbmVkIGludAlzdF9ubGluazsKKworCXVuc2lnbmVkIGxvbmcJc3RfdWlkOworCXVuc2lnbmVkIGxvbmcJc3RfZ2lkOworCisJdW5zaWduZWQgbG9uZyBsb25nCXN0X3JkZXY7CisJdW5zaWduZWQgY2hhciAgIF9fcGFkM1s0XTsKKworCWxvbmcgbG9uZwlzdF9zaXplOworCXVuc2lnbmVkIGxvbmcJc3RfYmxrc2l6ZTsKKworI2lmIGRlZmluZWQoX19BUk1FQl9fKQorCXVuc2lnbmVkIGxvbmcgICBfX3BhZDQ7CQkvKiBGdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpIGJpdHMgKi8KKwl1bnNpZ25lZCBsb25nICAgc3RfYmxvY2tzOwkvKiBOdW1iZXIgNTEyLWJ5dGUgYmxvY2tzIGFsbG9jYXRlZC4gKi8KKyNlbHNlIC8qIE11c3QgYmUgbGl0dGxlICovCisJdW5zaWduZWQgbG9uZyAgIHN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1ieXRlIGJsb2NrcyBhbGxvY2F0ZWQuICovCisJdW5zaWduZWQgbG9uZyAgIF9fcGFkNDsJCS8qIEZ1dHVyZSBwb3NzaWJsZSBzdF9ibG9ja3MgaGkgYml0cyAqLworI2VuZGlmCisKKwl1bnNpZ25lZCBsb25nCXN0X2F0aW1lOworCXVuc2lnbmVkIGxvbmcJc3RfYXRpbWVfbnNlYzsKKworCXVuc2lnbmVkIGxvbmcJc3RfbXRpbWU7CisJdW5zaWduZWQgbG9uZwlzdF9tdGltZV9uc2VjOworCisJdW5zaWduZWQgbG9uZwlzdF9jdGltZTsKKwl1bnNpZ25lZCBsb25nCXN0X2N0aW1lX25zZWM7CisKKwl1bnNpZ25lZCBsb25nIGxvbmcJc3RfaW5vOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc3RhdGZzLmggYi9pbmNsdWRlL2FzbS1hcm0vc3RhdGZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgxZjgyNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zdGF0ZnMuaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX0FTTUFSTV9TVEFURlNfSAorI2RlZmluZSBfQVNNQVJNX1NUQVRGU19ICisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9zdGF0ZnMuaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc3RyaW5nLmggYi9pbmNsdWRlL2FzbS1hcm0vc3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4YWIxNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zdHJpbmcuaApAQCAtMCwwICsxLDQzIEBACisjaWZuZGVmIF9fQVNNX0FSTV9TVFJJTkdfSAorI2RlZmluZSBfX0FTTV9BUk1fU1RSSU5HX0gKKworLyoKKyAqIFdlIGRvbid0IGRvIGlubGluZSBzdHJpbmcgZnVuY3Rpb25zLCBzaW5jZSB0aGUKKyAqIG9wdGltaXNlZCBpbmxpbmUgYXNtIHZlcnNpb25zIGFyZSBub3Qgc21hbGwuCisgKi8KKworI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJSQ0hSCitleHRlcm4gY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAqIHMsIGludCBjKTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJDSFIKK2V4dGVybiBjaGFyICogc3RyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYyk7CisKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNQ1BZCitleHRlcm4gdm9pZCAqIG1lbWNweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgX19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1NT1ZFCitleHRlcm4gdm9pZCAqIG1lbW1vdmUodm9pZCAqLCBjb25zdCB2b2lkICosIF9fa2VybmVsX3NpemVfdCk7CisKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNQ0hSCitleHRlcm4gdm9pZCAqIG1lbWNocihjb25zdCB2b2lkICosIGludCwgX19rZXJuZWxfc2l6ZV90KTsKKworI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1aRVJPCisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVNFVAorZXh0ZXJuIHZvaWQgKiBtZW1zZXQodm9pZCAqLCBpbnQsIF9fa2VybmVsX3NpemVfdCk7CisKK2V4dGVybiB2b2lkIF9fbWVtemVybyh2b2lkICpwdHIsIF9fa2VybmVsX3NpemVfdCBuKTsKKworI2RlZmluZSBtZW1zZXQocCx2LG4pCQkJCQkJCVwKKwkoewkJCQkJCQkJXAorCQlpZiAoKG4pICE9IDApIHsJCQkJCQlcCisJCQlpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKHYpKSAmJiAodikgPT0gMCkJXAorCQkJCV9fbWVtemVybygocCksKG4pKTsJCQlcCisJCQllbHNlCQkJCQkJXAorCQkJCW1lbXNldCgocCksKHYpLChuKSk7CQkJXAorCQl9CQkJCQkJCVwKKwkJKHApOwkJCQkJCQlcCisJfSkKKworI2RlZmluZSBtZW16ZXJvKHAsbikgKHsgaWYgKChuKSAhPSAwKSBfX21lbXplcm8oKHApLChuKSk7IChwKTsgfSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc3VzcGVuZC5oIGIvaW5jbHVkZS9hc20tYXJtL3N1c3BlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjBkMGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3N1c3BlbmQuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgX0FTTUFSTV9TVVNQRU5EX0gKKyNkZWZpbmUgX0FTTUFSTV9TVVNQRU5EX0gKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3MzEyOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9zeXN0ZW0uaApAQCAtMCwwICsxLDM5MCBAQAorI2lmbmRlZiBfX0FTTV9BUk1fU1lTVEVNX0gKKyNkZWZpbmUgX19BU01fQVJNX1NZU1RFTV9ICisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2RlZmluZSBDUFVfQVJDSF9VTktOT1dOCTAKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjMJCTEKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjQJCTIKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjRUCQkzCisjZGVmaW5lIENQVV9BUkNIX0FSTXY1CQk0CisjZGVmaW5lIENQVV9BUkNIX0FSTXY1VAkJNQorI2RlZmluZSBDUFVfQVJDSF9BUk12NVRFCTYKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjVURUoJNworI2RlZmluZSBDUFVfQVJDSF9BUk12NgkJOAorCisvKgorICogQ1IxIGJpdHMgKENQIzE1IENSMSkKKyAqLworI2RlZmluZSBDUl9NCSgxIDw8IDApCS8qIE1NVSBlbmFibGUJCQkJKi8KKyNkZWZpbmUgQ1JfQQkoMSA8PCAxKQkvKiBBbGlnbm1lbnQgYWJvcnQgZW5hYmxlCQkqLworI2RlZmluZSBDUl9DCSgxIDw8IDIpCS8qIERjYWNoZSBlbmFibGUJCQkqLworI2RlZmluZSBDUl9XCSgxIDw8IDMpCS8qIFdyaXRlIGJ1ZmZlciBlbmFibGUJCQkqLworI2RlZmluZSBDUl9QCSgxIDw8IDQpCS8qIDMyLWJpdCBleGNlcHRpb24gaGFuZGxlcgkJKi8KKyNkZWZpbmUgQ1JfRAkoMSA8PCA1KQkvKiAzMi1iaXQgZGF0YSBhZGRyZXNzIHJhbmdlCQkqLworI2RlZmluZSBDUl9MCSgxIDw8IDYpCS8qIEltcGxlbWVudGF0aW9uIGRlZmluZWQJCSovCisjZGVmaW5lIENSX0IJKDEgPDwgNykJLyogQmlnIGVuZGlhbgkJCQkqLworI2RlZmluZSBDUl9TCSgxIDw8IDgpCS8qIFN5c3RlbSBNTVUgcHJvdGVjdGlvbgkJKi8KKyNkZWZpbmUgQ1JfUgkoMSA8PCA5KQkvKiBST00gTU1VIHByb3RlY3Rpb24JCQkqLworI2RlZmluZSBDUl9GCSgxIDw8IDEwKQkvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkCQkqLworI2RlZmluZSBDUl9aCSgxIDw8IDExKQkvKiBJbXBsZW1lbnRhdGlvbiBkZWZpbmVkCQkqLworI2RlZmluZSBDUl9JCSgxIDw8IDEyKQkvKiBJY2FjaGUgZW5hYmxlCQkJKi8KKyNkZWZpbmUgQ1JfVgkoMSA8PCAxMykJLyogVmVjdG9ycyByZWxvY2F0ZWQgdG8gMHhmZmZmMDAwMAkqLworI2RlZmluZSBDUl9SUgkoMSA8PCAxNCkJLyogUm91bmQgUm9iaW4gY2FjaGUgcmVwbGFjZW1lbnQJKi8KKyNkZWZpbmUgQ1JfTDQJKDEgPDwgMTUpCS8qIExEUiBwYyBjYW4gc2V0IFQgYml0CQkJKi8KKyNkZWZpbmUgQ1JfRFQJKDEgPDwgMTYpCisjZGVmaW5lIENSX0lUCSgxIDw8IDE4KQorI2RlZmluZSBDUl9TVAkoMSA8PCAxOSkKKyNkZWZpbmUgQ1JfRkkJKDEgPDwgMjEpCS8qIEZhc3QgaW50ZXJydXB0IChsb3dlciBsYXRlbmN5IG1vZGUpCSovCisjZGVmaW5lIENSX1UJKDEgPDwgMjIpCS8qIFVuYWxpZ25lZCBhY2Nlc3Mgb3BlcmF0aW9uCQkqLworI2RlZmluZSBDUl9YUAkoMSA8PCAyMykJLyogRXh0ZW5kZWQgcGFnZSB0YWJsZXMJCQkqLworI2RlZmluZSBDUl9WRQkoMSA8PCAyNCkJLyogVmVjdG9yZWQgaW50ZXJydXB0cwkJCSovCisKKyNkZWZpbmUgQ1BVSURfSUQJMAorI2RlZmluZSBDUFVJRF9DQUNIRVRZUEUJMQorI2RlZmluZSBDUFVJRF9UQ00JMgorI2RlZmluZSBDUFVJRF9UTEJUWVBFCTMKKworI2RlZmluZSByZWFkX2NwdWlkKHJlZykJCQkJCQkJXAorCSh7CQkJCQkJCQlcCisJCXVuc2lnbmVkIGludCBfX3ZhbDsJCQkJCVwKKwkJYXNtKCJtcmMJcDE1LCAwLCAlMCwgYzAsIGMwLCAiIF9fc3RyaW5naWZ5KHJlZykJXAorCQkgICAgOiAiPXIiIChfX3ZhbCkJCQkJCVwKKwkJICAgIDoJCQkJCQkJXAorCQkgICAgOiAiY2MiKTsJCQkJCQlcCisJCV9fdmFsOwkJCQkJCQlcCisJfSkKKworLyoKKyAqIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhlIGNvbXBpbGVyIGRpZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgcmVnaXN0ZXIgd2UKKyAqIGFza2VkIGl0IGZvciBzb21lIGlubGluZSBhc3NlbWJseSBzZXF1ZW5jZXMuICBBcHBhcmVudGx5IHdlIGNhbid0IHRydXN0CisgKiB0aGUgY29tcGlsZXIgZnJvbSBvbmUgdmVyc2lvbiB0byBhbm90aGVyIHNvIGEgYml0IG9mIHBhcmFub2lhIHdvbid0IGh1cnQuCisgKiBUaGlzIHN0cmluZyBpcyBtZWFudCB0byBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgaW5saW5lIGFzbSBzdHJpbmcgYW5kCisgKiB3aWxsIGNhdXNlIGNvbXBpbGF0aW9uIHRvIHN0b3Agb24gbWlzbWF0Y2guCisgKiAoZm9yIGRldGFpbHMsIHNlZSBnY2MgUFIgMTUwODkpCisgKi8KKyNkZWZpbmUgX19hc21lcSh4LCB5KSAgIi5pZm5jICIgeCAiLCIgeSAiIDsgLmVyciA7IC5lbmRpZlxuXHQiCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisKK3N0cnVjdCB0aHJlYWRfaW5mbzsKK3N0cnVjdCB0YXNrX3N0cnVjdDsKKworLyogaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSB3ZSdyZSBydW5uaW5nIG9uICovCitleHRlcm4gdW5zaWduZWQgaW50IHN5c3RlbV9yZXY7CitleHRlcm4gdW5zaWduZWQgaW50IHN5c3RlbV9zZXJpYWxfbG93OworZXh0ZXJuIHVuc2lnbmVkIGludCBzeXN0ZW1fc2VyaWFsX2hpZ2g7CitleHRlcm4gdW5zaWduZWQgaW50IG1lbV9mY2xrXzIxMjg1OworCitzdHJ1Y3QgcHRfcmVnczsKKwordm9pZCBkaWUoY29uc3QgY2hhciAqbXNnLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IGVycikKKwkJX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKKwordm9pZCBkaWVfaWZfa2VybmVsKGNvbnN0IGNoYXIgKnN0ciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBlcnIpOworCit2b2lkIGhvb2tfZmF1bHRfY29kZShpbnQgbnIsIGludCAoKmZuKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQsCisJCQkJICAgICAgIHN0cnVjdCBwdF9yZWdzICopLAorCQkgICAgIGludCBzaWcsIGNvbnN0IGNoYXIgKm5hbWUpOworCisjaW5jbHVkZSA8YXNtL3Byb2MtZm5zLmg+CisKKyNkZWZpbmUgeGNoZyhwdHIseCkgXAorCSgoX190eXBlb2ZfXygqKHB0cikpKV9feGNoZygodW5zaWduZWQgbG9uZykoeCksKHB0ciksc2l6ZW9mKCoocHRyKSkpKQorCisjZGVmaW5lIHRhcyhwdHIpICh4Y2hnKChwdHIpLDEpKQorCitleHRlcm4gYXNtbGlua2FnZSB2b2lkIF9fYmFja3RyYWNlKHZvaWQpOworCitleHRlcm4gaW50IGNwdV9hcmNoaXRlY3R1cmUodm9pZCk7CisKKyNkZWZpbmUgc2V0X2NyKHgpCQkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCVwKKwkibWNyCXAxNSwgMCwgJTAsIGMxLCBjMCwgMAlAIHNldCBDUiIJXAorCTogOiAiciIgKHgpIDogImNjIikKKworI2RlZmluZSBnZXRfY3IoKQkJCQkJXAorCSh7CQkJCQkJXAorCXVuc2lnbmVkIGludCBfX3ZhbDsJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQlcCisJIm1yYwlwMTUsIDAsICUwLCBjMSwgYzAsIDAJQCBnZXQgQ1IiCVwKKwk6ICI9ciIgKF9fdmFsKSA6IDogImNjIik7CQkJXAorCV9fdmFsOwkJCQkJCVwKKwl9KQorCitleHRlcm4gdW5zaWduZWQgbG9uZyBjcl9ub19hbGlnbm1lbnQ7CS8qIGRlZmluZWQgaW4gZW50cnktYXJtdi5TICovCitleHRlcm4gdW5zaWduZWQgbG9uZyBjcl9hbGlnbm1lbnQ7CS8qIGRlZmluZWQgaW4gZW50cnktYXJtdi5TICovCisKKyNkZWZpbmUgVURCR19VTkRFRklORUQJKDEgPDwgMCkKKyNkZWZpbmUgVURCR19TWVNDQUxMCSgxIDw8IDEpCisjZGVmaW5lIFVEQkdfQkFEQUJPUlQJKDEgPDwgMikKKyNkZWZpbmUgVURCR19TRUdWCSgxIDw8IDMpCisjZGVmaW5lIFVEQkdfQlVTCSgxIDw8IDQpCisKK2V4dGVybiB1bnNpZ25lZCBpbnQgdXNlcl9kZWJ1ZzsKKworI2lmIF9fTElOVVhfQVJNX0FSQ0hfXyA+PSA0CisjZGVmaW5lIHZlY3RvcnNfaGlnaCgpCShjcl9hbGlnbm1lbnQgJiBDUl9WKQorI2Vsc2UKKyNkZWZpbmUgdmVjdG9yc19oaWdoKCkJKDApCisjZW5kaWYKKworI2RlZmluZSBtYigpIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUgcm1iKCkgbWIoKQorI2RlZmluZSB3bWIoKSBtYigpCisjZGVmaW5lIHJlYWRfYmFycmllcl9kZXBlbmRzKCkgZG8geyB9IHdoaWxlKDApCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSAgZG8geyB2YXIgPSB2YWx1ZTsgbWIoKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgc2V0X3dtYih2YXIsIHZhbHVlKSBkbyB7IHZhciA9IHZhbHVlOyB3bWIoKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgbm9wKCkgX19hc21fXyBfX3ZvbGF0aWxlX18oIm1vdlx0cjAscjBcdEAgbm9wXG5cdCIpOworCisjaWZkZWYgQ09ORklHX1NNUAorLyoKKyAqIERlZmluZSBvdXIgb3duIGNvbnRleHQgc3dpdGNoIGxvY2tpbmcuICBUaGlzIGFsbG93cyB1cyB0byBlbmFibGUKKyAqIGludGVycnVwdHMgb3ZlciB0aGUgY29udGV4dCBzd2l0Y2gsIG90aGVyd2lzZSB3ZSBlbmQgdXAgd2l0aCBoaWdoCisgKiBpbnRlcnJ1cHQgbGF0ZW5jeS4gIFRoZSByZWFsIHByb2JsZW0gYXJlYSBpcyBzd2l0Y2hfbW0oKSB3aGljaCBtYXkKKyAqIGRvIGEgZnVsbCBjYWNoZSBmbHVzaC4KKyAqLworI2RlZmluZSBwcmVwYXJlX2FyY2hfc3dpdGNoKHJxLG5leHQpCQkJCQlcCitkbyB7CQkJCQkJCQkJXAorCXNwaW5fbG9jaygmKG5leHQpLT5zd2l0Y2hfbG9jayk7CQkJCVwKKwlzcGluX3VubG9ja19pcnEoJihycSktPmxvY2spOwkJCQkJXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBmaW5pc2hfYXJjaF9zd2l0Y2gocnEscHJldikJCQkJCVwKKwlzcGluX3VubG9jaygmKHByZXYpLT5zd2l0Y2hfbG9jaykKKworI2RlZmluZSB0YXNrX3J1bm5pbmcocnEscCkJCQkJCQlcCisJKChycSktPmN1cnIgPT0gKHApIHx8IHNwaW5faXNfbG9ja2VkKCYocCktPnN3aXRjaF9sb2NrKSkKKyNlbHNlCisvKgorICogT3VyIFVQLWNhc2UgaXMgbW9yZSBzaW1wbGUsIGJ1dCB3ZSBhc3N1bWUga25vd2xlZGdlIG9mIGhvdworICogc3Bpbl91bmxvY2tfaXJxKCkgYW5kIGZyaWVuZHMgYXJlIGltcGxlbWVudGVkLiAgVGhpcyBhdm9pZHMKKyAqIHVzIG5lZWRsZXNzbHkgZGVjcmVtZW50aW5nIGFuZCBpbmNyZW1lbnRpbmcgdGhlIHByZWVtcHQgY291bnQuCisgKi8KKyNkZWZpbmUgcHJlcGFyZV9hcmNoX3N3aXRjaChycSxuZXh0KQlsb2NhbF9pcnFfZW5hYmxlKCkKKyNkZWZpbmUgZmluaXNoX2FyY2hfc3dpdGNoKHJxLHByZXYpCXNwaW5fdW5sb2NrKCYocnEpLT5sb2NrKQorI2RlZmluZSB0YXNrX3J1bm5pbmcocnEscCkJCSgocnEpLT5jdXJyID09IChwKSkKKyNlbmRpZgorCisvKgorICogc3dpdGNoX3RvKHByZXYsIG5leHQpIHNob3VsZCBzd2l0Y2ggZnJvbSB0YXNrIGBwcmV2JyB0byBgbmV4dCcKKyAqIGBwcmV2JyB3aWxsIG5ldmVyIGJlIHRoZSBzYW1lIGFzIGBuZXh0Jy4gIHNjaGVkdWxlKCkgaXRzZWxmCisgKiBjb250YWlucyB0aGUgbWVtb3J5IGJhcnJpZXIgdG8gdGVsbCBHQ0Mgbm90IHRvIGNhY2hlIGBjdXJyZW50Jy4KKyAqLworZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19zd2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCB0aHJlYWRfaW5mbyAqLCBzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CisKKyNkZWZpbmUgc3dpdGNoX3RvKHByZXYsbmV4dCxsYXN0KQkJCQkJXAorZG8gewkJCQkJCQkJCVwKKwlsYXN0ID0gX19zd2l0Y2hfdG8ocHJldixwcmV2LT50aHJlYWRfaW5mbyxuZXh0LT50aHJlYWRfaW5mbyk7CVwKK30gd2hpbGUgKDApCisKKy8qCisgKiBDUFUgaW50ZXJydXB0IG1hc2sgaGFuZGxpbmcuCisgKi8KKyNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorCisjZGVmaW5lIGxvY2FsX2lycV9zYXZlKHgpCQkJCQlcCisJKHsJCQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSJtcnMJJTAsIGNwc3IJCUAgbG9jYWxfaXJxX3NhdmVcbiIJXAorCSJjcHNpZAlpIgkJCQkJCVwKKwk6ICI9ciIgKHgpIDogOiAibWVtb3J5IiwgImNjIik7CQkJCVwKKwl9KQorCisjZGVmaW5lIGxvY2FsX2lycV9lbmFibGUoKSAgX19hc21fXygiY3BzaWUgaQlAIF9fc3RpIiA6IDogOiAibWVtb3J5IiwgImNjIikKKyNkZWZpbmUgbG9jYWxfaXJxX2Rpc2FibGUoKSBfX2FzbV9fKCJjcHNpZCBpCUAgX19jbGkiIDogOiA6ICJtZW1vcnkiLCAiY2MiKQorI2RlZmluZSBsb2NhbF9maXFfZW5hYmxlKCkgIF9fYXNtX18oImNwc2llIGYJQCBfX3N0ZiIgOiA6IDogIm1lbW9yeSIsICJjYyIpCisjZGVmaW5lIGxvY2FsX2ZpcV9kaXNhYmxlKCkgX19hc21fXygiY3BzaWQgZglAIF9fY2xmIiA6IDogOiAibWVtb3J5IiwgImNjIikKKworI2Vsc2UKKworLyoKKyAqIFNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGVuYWJsZSBzdGF0ZSAmIGRpc2FibGUgSVJRcworICovCisjZGVmaW5lIGxvY2FsX2lycV9zYXZlKHgpCQkJCQlcCisJKHsJCQkJCQkJXAorCQl1bnNpZ25lZCBsb25nIHRlbXA7CQkJCVwKKwkJKHZvaWQpICgmdGVtcCA9PSAmeCk7CQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkibXJzCSUwLCBjcHNyCQlAIGxvY2FsX2lycV9zYXZlXG4iCVwKKyIJb3JyCSUxLCAlMCwgIzEyOFxuIgkJCQkJXAorIgltc3IJY3Bzcl9jLCAlMSIJCQkJCVwKKwk6ICI9ciIgKHgpLCAiPXIiICh0ZW1wKQkJCQkJXAorCToJCQkJCQkJXAorCTogIm1lbW9yeSIsICJjYyIpOwkJCQkJXAorCX0pCisJCisvKgorICogRW5hYmxlIElSUXMKKyAqLworI2RlZmluZSBsb2NhbF9pcnFfZW5hYmxlKCkJCQkJCVwKKwkoewkJCQkJCQlcCisJCXVuc2lnbmVkIGxvbmcgdGVtcDsJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSJtcnMJJTAsIGNwc3IJCUAgbG9jYWxfaXJxX2VuYWJsZVxuIglcCisiCWJpYwklMCwgJTAsICMxMjhcbiIJCQkJCVwKKyIJbXNyCWNwc3JfYywgJTAiCQkJCQlcCisJOiAiPXIiICh0ZW1wKQkJCQkJCVwKKwk6CQkJCQkJCVwKKwk6ICJtZW1vcnkiLCAiY2MiKTsJCQkJCVwKKwl9KQorCisvKgorICogRGlzYWJsZSBJUlFzCisgKi8KKyNkZWZpbmUgbG9jYWxfaXJxX2Rpc2FibGUoKQkJCQkJXAorCSh7CQkJCQkJCVwKKwkJdW5zaWduZWQgbG9uZyB0ZW1wOwkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJIm1ycwklMCwgY3BzcgkJQCBsb2NhbF9pcnFfZGlzYWJsZVxuIglcCisiCW9ycgklMCwgJTAsICMxMjhcbiIJCQkJCVwKKyIJbXNyCWNwc3JfYywgJTAiCQkJCQlcCisJOiAiPXIiICh0ZW1wKQkJCQkJCVwKKwk6CQkJCQkJCVwKKwk6ICJtZW1vcnkiLCAiY2MiKTsJCQkJCVwKKwl9KQorCisvKgorICogRW5hYmxlIEZJUXMKKyAqLworI2RlZmluZSBsb2NhbF9maXFfZW5hYmxlKCkJCQkJCVwKKwkoewkJCQkJCQlcCisJCXVuc2lnbmVkIGxvbmcgdGVtcDsJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSJtcnMJJTAsIGNwc3IJCUAgc3RmXG4iCQlcCisiCWJpYwklMCwgJTAsICM2NFxuIgkJCQkJXAorIgltc3IJY3Bzcl9jLCAlMCIJCQkJCVwKKwk6ICI9ciIgKHRlbXApCQkJCQkJXAorCToJCQkJCQkJXAorCTogIm1lbW9yeSIsICJjYyIpOwkJCQkJXAorCX0pCisKKy8qCisgKiBEaXNhYmxlIEZJUXMKKyAqLworI2RlZmluZSBsb2NhbF9maXFfZGlzYWJsZSgpCQkJCQlcCisJKHsJCQkJCQkJXAorCQl1bnNpZ25lZCBsb25nIHRlbXA7CQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkibXJzCSUwLCBjcHNyCQlAIGNsZlxuIgkJXAorIglvcnIJJTAsICUwLCAjNjRcbiIJCQkJCVwKKyIJbXNyCWNwc3JfYywgJTAiCQkJCQlcCisJOiAiPXIiICh0ZW1wKQkJCQkJCVwKKwk6CQkJCQkJCVwKKwk6ICJtZW1vcnkiLCAiY2MiKTsJCQkJCVwKKwl9KQorCisjZW5kaWYKKworLyoKKyAqIFNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGVuYWJsZSBzdGF0ZS4KKyAqLworI2RlZmluZSBsb2NhbF9zYXZlX2ZsYWdzKHgpCQkJCQlcCisJKHsJCQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSJtcnMJJTAsIGNwc3IJCUAgbG9jYWxfc2F2ZV9mbGFncyIJXAorCTogIj1yIiAoeCkgOiA6ICJtZW1vcnkiLCAiY2MiKTsJCQkJXAorCX0pCisKKy8qCisgKiByZXN0b3JlIHNhdmVkIElSUSAmIEZJUSBzdGF0ZQorICovCisjZGVmaW5lIGxvY2FsX2lycV9yZXN0b3JlKHgpCQkJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQlcCisJIm1zcgljcHNyX2MsICUwCQlAIGxvY2FsX2lycV9yZXN0b3JlXG4iCVwKKwk6CQkJCQkJCVwKKwk6ICJyIiAoeCkJCQkJCQlcCisJOiAibWVtb3J5IiwgImNjIikKKworI2RlZmluZSBpcnFzX2Rpc2FibGVkKCkJCQlcCisoewkJCQkJXAorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQlcCisJbG9jYWxfc2F2ZV9mbGFncyhmbGFncyk7CVwKKwlmbGFncyAmIFBTUl9JX0JJVDsJCVwKK30pCisKKyNpZmRlZiBDT05GSUdfU01QCisjZXJyb3IgU01QIG5vdCBzdXBwb3J0ZWQKKworI2RlZmluZSBzbXBfbWIoKQkJbWIoKQorI2RlZmluZSBzbXBfcm1iKCkJCXJtYigpCisjZGVmaW5lIHNtcF93bWIoKQkJd21iKCkKKyNkZWZpbmUgc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCkJCXJlYWRfYmFycmllcl9kZXBlbmRzKCkKKworI2Vsc2UKKworI2RlZmluZSBzbXBfbWIoKQkJYmFycmllcigpCisjZGVmaW5lIHNtcF9ybWIoKQkJYmFycmllcigpCisjZGVmaW5lIHNtcF93bWIoKQkJYmFycmllcigpCisjZGVmaW5lIHNtcF9yZWFkX2JhcnJpZXJfZGVwZW5kcygpCQlkbyB7IH0gd2hpbGUoMCkKKworI2lmIGRlZmluZWQoQ09ORklHX0NQVV9TQTExMDApIHx8IGRlZmluZWQoQ09ORklHX0NQVV9TQTExMCkKKy8qCisgKiBPbiB0aGUgU3Ryb25nQVJNLCAic3dwIiBpcyB0ZXJtaW5hbGx5IGJyb2tlbiBzaW5jZSBpdCBieXBhc3NlcyB0aGUKKyAqIGNhY2hlIHRvdGFsbHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlIGJlY29tZXMgaW5jb25zaXN0ZW50LCBhbmQsCisgKiBzaW5jZSB3ZSB1c2Ugbm9ybWFsIGxvYWRzL3N0b3JlcyBhcyB3ZWxsLCB0aGlzIGlzIHJlYWxseSBiYWQuCisgKiBUeXBpY2FsbHksIHRoaXMgY2F1c2VzIG9vcHNlbiBpbiBmaWxwX2Nsb3NlLCBidXQgY291bGQgaGF2ZSBvdGhlciwKKyAqIG1vcmUgZGlzYXN0ZXJvdXMgZWZmZWN0cy4gIFRoZXJlIGFyZSB0d28gd29yay1hcm91bmRzOgorICogIDEuIERpc2FibGUgaW50ZXJydXB0cyBhbmQgZW11bGF0ZSB0aGUgYXRvbWljIHN3YXAKKyAqICAyLiBDbGVhbiB0aGUgY2FjaGUsIHBlcmZvcm0gYXRvbWljIHN3YXAsIGZsdXNoIHRoZSBjYWNoZQorICoKKyAqIFdlIGNob29zZSAoMSkgc2luY2UgaXRzIHRoZSAiZWFzaWVzdCIgdG8gYWNoaWV2ZSBoZXJlIGFuZCBpcyBub3QKKyAqIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIHR5cGUuCisgKi8KKyNkZWZpbmUgc3dwX2lzX2J1Z2d5CisjZW5kaWYKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKnB0ciwgaW50IHNpemUpCit7CisJZXh0ZXJuIHZvaWQgX19iYWRfeGNoZyh2b2xhdGlsZSB2b2lkICosIGludCk7CisJdW5zaWduZWQgbG9uZyByZXQ7CisjaWZkZWYgc3dwX2lzX2J1Z2d5CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKyNlbmRpZgorCisJc3dpdGNoIChzaXplKSB7CisjaWZkZWYgc3dwX2lzX2J1Z2d5CisJCWNhc2UgMToKKwkJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkJCXJldCA9ICoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKXB0cjsKKwkJCSoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKXB0ciA9IHg7CisJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJCQlicmVhazsKKworCQljYXNlIDQ6CisJCQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJCQlyZXQgPSAqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilwdHI7CisJCQkqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilwdHIgPSB4OworCQkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCQkJYnJlYWs7CisjZWxzZQorCQljYXNlIDE6CV9fYXNtX18gX192b2xhdGlsZV9fICgic3dwYiAlMCwgJTEsIFslMl0iCisJCQkJCTogIj0mciIgKHJldCkKKwkJCQkJOiAiciIgKHgpLCAiciIgKHB0cikKKwkJCQkJOiAibWVtb3J5IiwgImNjIik7CisJCQlicmVhazsKKwkJY2FzZSA0OglfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInN3cCAlMCwgJTEsIFslMl0iCisJCQkJCTogIj0mciIgKHJldCkKKwkJCQkJOiAiciIgKHgpLCAiciIgKHB0cikKKwkJCQkJOiAibWVtb3J5IiwgImNjIik7CisJCQlicmVhazsKKyNlbmRpZgorCQlkZWZhdWx0OiBfX2JhZF94Y2hnKHB0ciwgc2l6ZSksIHJldCA9IDA7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZGVmaW5lIGFyY2hfYWxpZ25fc3RhY2soeCkgKHgpCisKKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3Rlcm1iaXRzLmggYi9pbmNsdWRlL2FzbS1hcm0vdGVybWJpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmM2ZTFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3Rlcm1iaXRzLmgKQEAgLTAsMCArMSwxNzEgQEAKKyNpZm5kZWYgX19BU01fQVJNX1RFUk1CSVRTX0gKKyNkZWZpbmUgX19BU01fQVJNX1RFUk1CSVRTX0gKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyCWNjX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludAlzcGVlZF90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQJdGNmbGFnX3Q7CisKKyNkZWZpbmUgTkNDUyAxOQorc3RydWN0IHRlcm1pb3MgeworCXRjZmxhZ190IGNfaWZsYWc7CQkvKiBpbnB1dCBtb2RlIGZsYWdzICovCisJdGNmbGFnX3QgY19vZmxhZzsJCS8qIG91dHB1dCBtb2RlIGZsYWdzICovCisJdGNmbGFnX3QgY19jZmxhZzsJCS8qIGNvbnRyb2wgbW9kZSBmbGFncyAqLworCXRjZmxhZ190IGNfbGZsYWc7CQkvKiBsb2NhbCBtb2RlIGZsYWdzICovCisJY2NfdCBjX2xpbmU7CQkJLyogbGluZSBkaXNjaXBsaW5lICovCisJY2NfdCBjX2NjW05DQ1NdOwkJLyogY29udHJvbCBjaGFyYWN0ZXJzICovCit9OworCisvKiBjX2NjIGNoYXJhY3RlcnMgKi8KKyNkZWZpbmUgVklOVFIgMAorI2RlZmluZSBWUVVJVCAxCisjZGVmaW5lIFZFUkFTRSAyCisjZGVmaW5lIFZLSUxMIDMKKyNkZWZpbmUgVkVPRiA0CisjZGVmaW5lIFZUSU1FIDUKKyNkZWZpbmUgVk1JTiA2CisjZGVmaW5lIFZTV1RDIDcKKyNkZWZpbmUgVlNUQVJUIDgKKyNkZWZpbmUgVlNUT1AgOQorI2RlZmluZSBWU1VTUCAxMAorI2RlZmluZSBWRU9MIDExCisjZGVmaW5lIFZSRVBSSU5UIDEyCisjZGVmaW5lIFZESVNDQVJEIDEzCisjZGVmaW5lIFZXRVJBU0UgMTQKKyNkZWZpbmUgVkxORVhUIDE1CisjZGVmaW5lIFZFT0wyIDE2CisKKy8qIGNfaWZsYWcgYml0cyAqLworI2RlZmluZSBJR05CUksJMDAwMDAwMQorI2RlZmluZSBCUktJTlQJMDAwMDAwMgorI2RlZmluZSBJR05QQVIJMDAwMDAwNAorI2RlZmluZSBQQVJNUksJMDAwMDAxMAorI2RlZmluZSBJTlBDSwkwMDAwMDIwCisjZGVmaW5lIElTVFJJUAkwMDAwMDQwCisjZGVmaW5lIElOTENSCTAwMDAxMDAKKyNkZWZpbmUgSUdOQ1IJMDAwMDIwMAorI2RlZmluZSBJQ1JOTAkwMDAwNDAwCisjZGVmaW5lIElVQ0xDCTAwMDEwMDAKKyNkZWZpbmUgSVhPTgkwMDAyMDAwCisjZGVmaW5lIElYQU5ZCTAwMDQwMDAKKyNkZWZpbmUgSVhPRkYJMDAxMDAwMAorI2RlZmluZSBJTUFYQkVMCTAwMjAwMDAKKyNkZWZpbmUgSVVURjgJMDA0MDAwMAorCisvKiBjX29mbGFnIGJpdHMgKi8KKyNkZWZpbmUgT1BPU1QJMDAwMDAwMQorI2RlZmluZSBPTENVQwkwMDAwMDAyCisjZGVmaW5lIE9OTENSCTAwMDAwMDQKKyNkZWZpbmUgT0NSTkwJMDAwMDAxMAorI2RlZmluZSBPTk9DUgkwMDAwMDIwCisjZGVmaW5lIE9OTFJFVAkwMDAwMDQwCisjZGVmaW5lIE9GSUxMCTAwMDAxMDAKKyNkZWZpbmUgT0ZERUwJMDAwMDIwMAorI2RlZmluZSBOTERMWQkwMDAwNDAwCisjZGVmaW5lICAgTkwwCTAwMDAwMDAKKyNkZWZpbmUgICBOTDEJMDAwMDQwMAorI2RlZmluZSBDUkRMWQkwMDAzMDAwCisjZGVmaW5lICAgQ1IwCTAwMDAwMDAKKyNkZWZpbmUgICBDUjEJMDAwMTAwMAorI2RlZmluZSAgIENSMgkwMDAyMDAwCisjZGVmaW5lICAgQ1IzCTAwMDMwMDAKKyNkZWZpbmUgVEFCRExZCTAwMTQwMDAKKyNkZWZpbmUgICBUQUIwCTAwMDAwMDAKKyNkZWZpbmUgICBUQUIxCTAwMDQwMDAKKyNkZWZpbmUgICBUQUIyCTAwMTAwMDAKKyNkZWZpbmUgICBUQUIzCTAwMTQwMDAKKyNkZWZpbmUgICBYVEFCUwkwMDE0MDAwCisjZGVmaW5lIEJTRExZCTAwMjAwMDAKKyNkZWZpbmUgICBCUzAJMDAwMDAwMAorI2RlZmluZSAgIEJTMQkwMDIwMDAwCisjZGVmaW5lIFZURExZCTAwNDAwMDAKKyNkZWZpbmUgICBWVDAJMDAwMDAwMAorI2RlZmluZSAgIFZUMQkwMDQwMDAwCisjZGVmaW5lIEZGRExZCTAxMDAwMDAKKyNkZWZpbmUgICBGRjAJMDAwMDAwMAorI2RlZmluZSAgIEZGMQkwMTAwMDAwCisKKy8qIGNfY2ZsYWcgYml0IG1lYW5pbmcgKi8KKyNkZWZpbmUgQ0JBVUQJMDAxMDAxNworI2RlZmluZSAgQjAJMDAwMDAwMAkJLyogaGFuZyB1cCAqLworI2RlZmluZSAgQjUwCTAwMDAwMDEKKyNkZWZpbmUgIEI3NQkwMDAwMDAyCisjZGVmaW5lICBCMTEwCTAwMDAwMDMKKyNkZWZpbmUgIEIxMzQJMDAwMDAwNAorI2RlZmluZSAgQjE1MAkwMDAwMDA1CisjZGVmaW5lICBCMjAwCTAwMDAwMDYKKyNkZWZpbmUgIEIzMDAJMDAwMDAwNworI2RlZmluZSAgQjYwMAkwMDAwMDEwCisjZGVmaW5lICBCMTIwMAkwMDAwMDExCisjZGVmaW5lICBCMTgwMAkwMDAwMDEyCisjZGVmaW5lICBCMjQwMAkwMDAwMDEzCisjZGVmaW5lICBCNDgwMAkwMDAwMDE0CisjZGVmaW5lICBCOTYwMAkwMDAwMDE1CisjZGVmaW5lICBCMTkyMDAJMDAwMDAxNgorI2RlZmluZSAgQjM4NDAwCTAwMDAwMTcKKyNkZWZpbmUgRVhUQSBCMTkyMDAKKyNkZWZpbmUgRVhUQiBCMzg0MDAKKyNkZWZpbmUgQ1NJWkUJMDAwMDA2MAorI2RlZmluZSAgIENTNQkwMDAwMDAwCisjZGVmaW5lICAgQ1M2CTAwMDAwMjAKKyNkZWZpbmUgICBDUzcJMDAwMDA0MAorI2RlZmluZSAgIENTOAkwMDAwMDYwCisjZGVmaW5lIENTVE9QQgkwMDAwMTAwCisjZGVmaW5lIENSRUFECTAwMDAyMDAKKyNkZWZpbmUgUEFSRU5CCTAwMDA0MDAKKyNkZWZpbmUgUEFST0RECTAwMDEwMDAKKyNkZWZpbmUgSFVQQ0wJMDAwMjAwMAorI2RlZmluZSBDTE9DQUwJMDAwNDAwMAorI2RlZmluZSBDQkFVREVYIDAwMTAwMDAKKyNkZWZpbmUgICAgQjU3NjAwIDAwMTAwMDEKKyNkZWZpbmUgICBCMTE1MjAwIDAwMTAwMDIKKyNkZWZpbmUgICBCMjMwNDAwIDAwMTAwMDMKKyNkZWZpbmUgICBCNDYwODAwIDAwMTAwMDQKKyNkZWZpbmUgICBCNTAwMDAwIDAwMTAwMDUKKyNkZWZpbmUgICBCNTc2MDAwIDAwMTAwMDYKKyNkZWZpbmUgICBCOTIxNjAwIDAwMTAwMDcKKyNkZWZpbmUgIEIxMDAwMDAwIDAwMTAwMTAKKyNkZWZpbmUgIEIxMTUyMDAwIDAwMTAwMTEKKyNkZWZpbmUgIEIxNTAwMDAwIDAwMTAwMTIKKyNkZWZpbmUgIEIyMDAwMDAwIDAwMTAwMTMKKyNkZWZpbmUgIEIyNTAwMDAwIDAwMTAwMTQKKyNkZWZpbmUgIEIzMDAwMDAwIDAwMTAwMTUKKyNkZWZpbmUgIEIzNTAwMDAwIDAwMTAwMTYKKyNkZWZpbmUgIEI0MDAwMDAwIDAwMTAwMTcKKyNkZWZpbmUgQ0lCQVVECSAgMDAyMDAzNjAwMDAwCS8qIGlucHV0IGJhdWQgcmF0ZSAobm90IHVzZWQpICovCisjZGVmaW5lIENNU1BBUiAgICAwMTAwMDAwMDAwMDAJCS8qIG1hcmsgb3Igc3BhY2UgKHN0aWNrKSBwYXJpdHkgKi8KKyNkZWZpbmUgQ1JUU0NUUwkgIDAyMDAwMDAwMDAwMAkJLyogZmxvdyBjb250cm9sICovCisKKy8qIGNfbGZsYWcgYml0cyAqLworI2RlZmluZSBJU0lHCTAwMDAwMDEKKyNkZWZpbmUgSUNBTk9OCTAwMDAwMDIKKyNkZWZpbmUgWENBU0UJMDAwMDAwNAorI2RlZmluZSBFQ0hPCTAwMDAwMTAKKyNkZWZpbmUgRUNIT0UJMDAwMDAyMAorI2RlZmluZSBFQ0hPSwkwMDAwMDQwCisjZGVmaW5lIEVDSE9OTAkwMDAwMTAwCisjZGVmaW5lIE5PRkxTSAkwMDAwMjAwCisjZGVmaW5lIFRPU1RPUAkwMDAwNDAwCisjZGVmaW5lIEVDSE9DVEwJMDAwMTAwMAorI2RlZmluZSBFQ0hPUFJUCTAwMDIwMDAKKyNkZWZpbmUgRUNIT0tFCTAwMDQwMDAKKyNkZWZpbmUgRkxVU0hPCTAwMTAwMDAKKyNkZWZpbmUgUEVORElOCTAwNDAwMDAKKyNkZWZpbmUgSUVYVEVOCTAxMDAwMDAKKworLyogdGNmbG93KCkgYW5kIFRDWE9OQyB1c2UgdGhlc2UgKi8KKyNkZWZpbmUJVENPT0ZGCQkwCisjZGVmaW5lCVRDT09OCQkxCisjZGVmaW5lCVRDSU9GRgkJMgorI2RlZmluZQlUQ0lPTgkJMworCisvKiB0Y2ZsdXNoKCkgYW5kIFRDRkxTSCB1c2UgdGhlc2UgKi8KKyNkZWZpbmUJVENJRkxVU0gJMAorI2RlZmluZQlUQ09GTFVTSAkxCisjZGVmaW5lCVRDSU9GTFVTSAkyCisKKy8qIHRjc2V0YXR0ciB1c2VzIHRoZXNlICovCisjZGVmaW5lCVRDU0FOT1cJCTAKKyNkZWZpbmUJVENTQURSQUlOCTEKKyNkZWZpbmUJVENTQUZMVVNICTIKKworI2VuZGlmCS8qIF9fQVNNX0FSTV9URVJNQklUU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdGVybWlvcy5oIGIvaW5jbHVkZS9hc20tYXJtL3Rlcm1pb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjhmNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3Rlcm1pb3MuaApAQCAtMCwwICsxLDEwOCBAQAorI2lmbmRlZiBfX0FTTV9BUk1fVEVSTUlPU19ICisjZGVmaW5lIF9fQVNNX0FSTV9URVJNSU9TX0gKKworI2luY2x1ZGUgPGFzbS90ZXJtYml0cy5oPgorI2luY2x1ZGUgPGFzbS9pb2N0bHMuaD4KKworc3RydWN0IHdpbnNpemUgeworCXVuc2lnbmVkIHNob3J0IHdzX3JvdzsKKwl1bnNpZ25lZCBzaG9ydCB3c19jb2w7CisJdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOworCXVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsKK307CisKKyNkZWZpbmUgTkNDIDgKK3N0cnVjdCB0ZXJtaW8geworCXVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CQkvKiBpbnB1dCBtb2RlIGZsYWdzICovCisJdW5zaWduZWQgc2hvcnQgY19vZmxhZzsJCS8qIG91dHB1dCBtb2RlIGZsYWdzICovCisJdW5zaWduZWQgc2hvcnQgY19jZmxhZzsJCS8qIGNvbnRyb2wgbW9kZSBmbGFncyAqLworCXVuc2lnbmVkIHNob3J0IGNfbGZsYWc7CQkvKiBsb2NhbCBtb2RlIGZsYWdzICovCisJdW5zaWduZWQgY2hhciBjX2xpbmU7CQkvKiBsaW5lIGRpc2NpcGxpbmUgKi8KKwl1bnNpZ25lZCBjaGFyIGNfY2NbTkNDXTsJLyogY29udHJvbCBjaGFyYWN0ZXJzICovCit9OworCisjaWZkZWYgX19LRVJORUxfXworLyoJaW50cj1eQwkJcXVpdD1efAkJZXJhc2U9ZGVsCWtpbGw9XlUKKwllb2Y9XkQJCXZ0aW1lPVwwCXZtaW49XDEJCXN4dGM9XDAKKwlzdGFydD1eUQlzdG9wPV5TCQlzdXNwPV5aCQllb2w9XDAKKwlyZXByaW50PV5SCWRpc2NhcmQ9XlUJd2VyYXNlPV5XCWxuZXh0PV5WCisJZW9sMj1cMAorKi8KKyNkZWZpbmUgSU5JVF9DX0NDICJcMDAzXDAzNFwxNzdcMDI1XDAwNFwwXDFcMFwwMjFcMDIzXDAzMlwwXDAyMlwwMTdcMDI3XDAyNlwwIgorI2VuZGlmCisKKy8qIG1vZGVtIGxpbmVzICovCisjZGVmaW5lIFRJT0NNX0xFCTB4MDAxCisjZGVmaW5lIFRJT0NNX0RUUgkweDAwMgorI2RlZmluZSBUSU9DTV9SVFMJMHgwMDQKKyNkZWZpbmUgVElPQ01fU1QJMHgwMDgKKyNkZWZpbmUgVElPQ01fU1IJMHgwMTAKKyNkZWZpbmUgVElPQ01fQ1RTCTB4MDIwCisjZGVmaW5lIFRJT0NNX0NBUgkweDA0MAorI2RlZmluZSBUSU9DTV9STkcJMHgwODAKKyNkZWZpbmUgVElPQ01fRFNSCTB4MTAwCisjZGVmaW5lIFRJT0NNX0NECVRJT0NNX0NBUgorI2RlZmluZSBUSU9DTV9SSQlUSU9DTV9STkcKKyNkZWZpbmUgVElPQ01fT1VUMQkweDIwMDAKKyNkZWZpbmUgVElPQ01fT1VUMgkweDQwMDAKKyNkZWZpbmUgVElPQ01fTE9PUAkweDgwMDAKKworLyogaW9jdGwgKGZkLCBUSU9DU0VSR0VUTFNSLCAmcmVzdWx0KSB3aGVyZSByZXN1bHQgbWF5IGJlIGFzIGJlbG93ICovCisKKy8qIGxpbmUgZGlzY2lwbGluZXMgKi8KKyNkZWZpbmUgTl9UVFkJCTAKKyNkZWZpbmUgTl9TTElQCQkxCisjZGVmaW5lIE5fTU9VU0UJCTIKKyNkZWZpbmUgTl9QUFAJCTMKKyNkZWZpbmUgTl9TVFJJUAkJNAorI2RlZmluZSBOX0FYMjUJCTUKKyNkZWZpbmUgTl9YMjUJCTYJLyogWC4yNSBhc3luYyAqLworI2RlZmluZSBOXzZQQUNLCQk3CisjZGVmaW5lIE5fTUFTQwkJOAkvKiBSZXNlcnZlZCBmb3IgTW9iaXRleCBtb2R1bGUgPGthekBjYWZlLm5ldD4gKi8KKyNkZWZpbmUgTl9SMzk2NAkJOQkvKiBSZXNlcnZlZCBmb3IgU2ltYXRpYyBSMzk2NCBtb2R1bGUgKi8KKyNkZWZpbmUgTl9QUk9GSUJVU19GREwJMTAJLyogUmVzZXJ2ZWQgZm9yIFByb2ZpYnVzIDxEYXZlQG12aGkuY29tPiAqLworI2RlZmluZSBOX0lSREEJCTExCS8qIExpbnV4IElyRGEgLSBodHRwOi8vaXJkYS5zb3VyY2Vmb3JnZS5uZXQvICovCisjZGVmaW5lIE5fU01TQkxPQ0sJMTIJLyogU01TIGJsb2NrIG1vZGUgLSBmb3IgdGFsa2luZyB0byBHU00gZGF0YSBjYXJkcyBhYm91dCBTTVMgbWVzc2FnZXMgKi8KKyNkZWZpbmUgTl9IRExDCQkxMwkvKiBzeW5jaHJvbm91cyBIRExDICovCisjZGVmaW5lIE5fU1lOQ19QUFAJMTQKKyNkZWZpbmUgTl9IQ0kJCTE1ICAvKiBCbHVldG9vdGggSENJIFVBUlQgKi8KKworI2lmZGVmIF9fS0VSTkVMX18KKworLyoKKyAqIFRyYW5zbGF0ZSBhICJ0ZXJtaW8iIHN0cnVjdHVyZSBpbnRvIGEgInRlcm1pb3MiLiBVZ2guCisgKi8KKyNkZWZpbmUgU0VUX0xPV19URVJNSU9TX0JJVFModGVybWlvcywgdGVybWlvLCB4KSB7CQlcCisJdW5zaWduZWQgc2hvcnQgX190bXA7CQkJCQlcCisJZ2V0X3VzZXIoX190bXAsJih0ZXJtaW8pLT54KTsJCQkJXAorCSoodW5zaWduZWQgc2hvcnQgKikgJih0ZXJtaW9zKS0+eCA9IF9fdG1wOwkJXAorfQorCisjZGVmaW5lIHVzZXJfdGVybWlvX3RvX2tlcm5lbF90ZXJtaW9zKHRlcm1pb3MsIHRlcm1pbykgXAorKHsgXAorCVNFVF9MT1dfVEVSTUlPU19CSVRTKHRlcm1pb3MsIHRlcm1pbywgY19pZmxhZyk7IFwKKwlTRVRfTE9XX1RFUk1JT1NfQklUUyh0ZXJtaW9zLCB0ZXJtaW8sIGNfb2ZsYWcpOyBcCisJU0VUX0xPV19URVJNSU9TX0JJVFModGVybWlvcywgdGVybWlvLCBjX2NmbGFnKTsgXAorCVNFVF9MT1dfVEVSTUlPU19CSVRTKHRlcm1pb3MsIHRlcm1pbywgY19sZmxhZyk7IFwKKwljb3B5X2Zyb21fdXNlcigodGVybWlvcyktPmNfY2MsICh0ZXJtaW8pLT5jX2NjLCBOQ0MpOyBcCit9KQorCisvKgorICogVHJhbnNsYXRlIGEgInRlcm1pb3MiIHN0cnVjdHVyZSBpbnRvIGEgInRlcm1pbyIuIFVnaC4KKyAqLworI2RlZmluZSBrZXJuZWxfdGVybWlvc190b191c2VyX3Rlcm1pbyh0ZXJtaW8sIHRlcm1pb3MpIFwKKyh7IFwKKwlwdXRfdXNlcigodGVybWlvcyktPmNfaWZsYWcsICYodGVybWlvKS0+Y19pZmxhZyk7IFwKKwlwdXRfdXNlcigodGVybWlvcyktPmNfb2ZsYWcsICYodGVybWlvKS0+Y19vZmxhZyk7IFwKKwlwdXRfdXNlcigodGVybWlvcyktPmNfY2ZsYWcsICYodGVybWlvKS0+Y19jZmxhZyk7IFwKKwlwdXRfdXNlcigodGVybWlvcyktPmNfbGZsYWcsICYodGVybWlvKS0+Y19sZmxhZyk7IFwKKwlwdXRfdXNlcigodGVybWlvcyktPmNfbGluZSwgICYodGVybWlvKS0+Y19saW5lKTsgXAorCWNvcHlfdG9fdXNlcigodGVybWlvKS0+Y19jYywgKHRlcm1pb3MpLT5jX2NjLCBOQ0MpOyBcCit9KQorCisjZGVmaW5lIHVzZXJfdGVybWlvc190b19rZXJuZWxfdGVybWlvcyhrLCB1KSBjb3B5X2Zyb21fdXNlcihrLCB1LCBzaXplb2Yoc3RydWN0IHRlcm1pb3MpKQorI2RlZmluZSBrZXJuZWxfdGVybWlvc190b191c2VyX3Rlcm1pb3ModSwgaykgY29weV90b191c2VyKHUsIGssIHNpemVvZihzdHJ1Y3QgdGVybWlvcykpCisKKyNlbmRpZgkvKiBfX0tFUk5FTF9fICovCisKKyNlbmRpZgkvKiBfX0FTTV9BUk1fVEVSTUlPU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdGhlcm0uaCBiL2luY2x1ZGUvYXNtLWFybS90aGVybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MWM5MjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdGhlcm0uaApAQCAtMCwwICsxLDI4IEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL3RoZXJtLmg6IERlZmluaXRpb25zIGZvciBEYWxsYXMgU2VtaWNvbmR1Y3RvcgorICogIERTMTYyMCB0aGVybW9tZXRlciBkcml2ZXIgKGFzIHVzZWQgaW4gdGhlIFJlYmVsLmNvbSBOZXRXaW5kZXIpCisgKi8KKyNpZm5kZWYgX19BU01fVEhFUk1fSAorI2RlZmluZSBfX0FTTV9USEVSTV9ICisKKy8qIGlvY3RsIG51bWJlcnMgZm9yIC9kZXYvdGhlcm0gKi8KKyNkZWZpbmUgQ01EX1NFVF9USEVSTU9TVEFURQkweDUzCisjZGVmaW5lIENNRF9HRVRfVEhFUk1PU1RBVEUJMHg1NAorI2RlZmluZSBDTURfR0VUX1NUQVRVUwkJMHg1NgorI2RlZmluZSBDTURfR0VUX1RFTVBFUkFUVVJFCTB4NTcKKyNkZWZpbmUgQ01EX1NFVF9USEVSTU9TVEFURTIJMHg1OAorI2RlZmluZSBDTURfR0VUX1RIRVJNT1NUQVRFMgkweDU5CisjZGVmaW5lIENNRF9HRVRfVEVNUEVSQVRVUkUyCTB4NWEKKyNkZWZpbmUgQ01EX0dFVF9GQU4JCTB4NWIKKyNkZWZpbmUgQ01EX1NFVF9GQU4JCTB4NWMKKworI2RlZmluZSBGQU5fT0ZGCQkJMAorI2RlZmluZSBGQU5fT04JCQkxCisjZGVmaW5lIEZBTl9BTFdBWVNfT04JCTIKKworc3RydWN0IHRoZXJtIHsKKwlpbnQgaGk7CisJaW50IGxvOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdGhyZWFkX2luZm8uaCBiL2luY2x1ZGUvYXNtLWFybS90aHJlYWRfaW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MTYxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdGhyZWFkX2luZm8uaApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vdGhyZWFkX2luZm8uaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIgUnVzc2VsbCBLaW5nLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX19BU01fQVJNX1RIUkVBRF9JTkZPX0gKKyNkZWZpbmUgX19BU01fQVJNX1RIUkVBRF9JTkZPX0gKKworI2lmZGVmIF9fS0VSTkVMX18KKworI2luY2x1ZGUgPGFzbS9mcHN0YXRlLmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0cnVjdCB0YXNrX3N0cnVjdDsKK3N0cnVjdCBleGVjX2RvbWFpbjsKKworI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vZG9tYWluLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBtbV9zZWdtZW50X3Q7CisKK3N0cnVjdCBjcHVfY29udGV4dF9zYXZlIHsKKwlfX3UzMglyNDsKKwlfX3UzMglyNTsKKwlfX3UzMglyNjsKKwlfX3UzMglyNzsKKwlfX3UzMglyODsKKwlfX3UzMglyOTsKKwlfX3UzMglzbDsKKwlfX3UzMglmcDsKKwlfX3UzMglzcDsKKwlfX3UzMglwYzsKKwlfX3UzMglleHRyYVsyXTsJCS8qIFhzY2FsZSAnYWNjJyByZWdpc3RlciwgZXRjICovCit9OworCisvKgorICogbG93IGxldmVsIHRhc2sgZGF0YSB0aGF0IGVudHJ5LlMgbmVlZHMgaW1tZWRpYXRlIGFjY2VzcyB0by4KKyAqIF9fc3dpdGNoX3RvKCkgYXNzdW1lcyBjcHVfY29udGV4dCBmb2xsb3dzIGltbWVkaWF0ZWx5IGFmdGVyIGNwdV9kb21haW4uCisgKi8KK3N0cnVjdCB0aHJlYWRfaW5mbyB7CisJdW5zaWduZWQgbG9uZwkJZmxhZ3M7CQkvKiBsb3cgbGV2ZWwgZmxhZ3MgKi8KKwlfX3MzMgkJCXByZWVtcHRfY291bnQ7CS8qIDAgPT4gcHJlZW1wdGFibGUsIDwwID0+IGJ1ZyAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsJLyogYWRkcmVzcyBsaW1pdCAqLworCXN0cnVjdCB0YXNrX3N0cnVjdAkqdGFzazsJCS8qIG1haW4gdGFzayBzdHJ1Y3R1cmUgKi8KKwlzdHJ1Y3QgZXhlY19kb21haW4JKmV4ZWNfZG9tYWluOwkvKiBleGVjdXRpb24gZG9tYWluICovCisJX191MzIJCQljcHU7CQkvKiBjcHUgKi8KKwlfX3UzMgkJCWNwdV9kb21haW47CS8qIGNwdSBkb21haW4gKi8KKwlzdHJ1Y3QgY3B1X2NvbnRleHRfc2F2ZQljcHVfY29udGV4dDsJLyogY3B1IGNvbnRleHQgKi8KKwlfX3U4CQkJdXNlZF9jcFsxNl07CS8qIHRocmVhZCB1c2VkIGNvcHJvICovCisJdW5zaWduZWQgbG9uZwkJdHBfdmFsdWU7CisJdW5pb24gZnBfc3RhdGUJCWZwc3RhdGU7CisJdW5pb24gdmZwX3N0YXRlCQl2ZnBzdGF0ZTsKKwlzdHJ1Y3QgcmVzdGFydF9ibG9jawlyZXN0YXJ0X2Jsb2NrOworfTsKKworI2RlZmluZSBJTklUX1RIUkVBRF9JTkZPKHRzaykJCQkJCQlcCit7CQkJCQkJCQkJXAorCS50YXNrCQk9ICZ0c2ssCQkJCQkJXAorCS5leGVjX2RvbWFpbgk9ICZkZWZhdWx0X2V4ZWNfZG9tYWluLAkJCQlcCisJLmZsYWdzCQk9IDAsCQkJCQkJXAorCS5wcmVlbXB0X2NvdW50CT0gMSwJCQkJCQlcCisJLmFkZHJfbGltaXQJPSBLRVJORUxfRFMsCQkJCQlcCisJLmNwdV9kb21haW4JPSBkb21haW5fdmFsKERPTUFJTl9VU0VSLCBET01BSU5fTUFOQUdFUikgfAlcCisJCQkgIGRvbWFpbl92YWwoRE9NQUlOX0tFUk5FTCwgRE9NQUlOX01BTkFHRVIpIHwJXAorCQkJICBkb21haW5fdmFsKERPTUFJTl9JTywgRE9NQUlOX0NMSUVOVCksCQlcCisJLnJlc3RhcnRfYmxvY2sJPSB7CQkJCQkJXAorCQkuZm4JPSBkb19ub19yZXN0YXJ0X3N5c2NhbGwsCQkJXAorCX0sCQkJCQkJCQlcCit9CisKKyNkZWZpbmUgaW5pdF90aHJlYWRfaW5mbwkoaW5pdF90aHJlYWRfdW5pb24udGhyZWFkX2luZm8pCisjZGVmaW5lIGluaXRfc3RhY2sJCShpbml0X3RocmVhZF91bmlvbi5zdGFjaykKKworI2RlZmluZSBUSFJFQURfU0laRQkJODE5MgorCisvKgorICogaG93IHRvIGdldCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIHN0cnVjdCBmcm9tIEMKKyAqLworc3RhdGljIGlubGluZSBzdHJ1Y3QgdGhyZWFkX2luZm8gKmN1cnJlbnRfdGhyZWFkX2luZm8odm9pZCkgX19hdHRyaWJ1dGVfY29uc3RfXzsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdGhyZWFkX2luZm8gKmN1cnJlbnRfdGhyZWFkX2luZm8odm9pZCkKK3sKKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIHNwIGFzbSAoInNwIik7CisJcmV0dXJuIChzdHJ1Y3QgdGhyZWFkX2luZm8gKikoc3AgJiB+KFRIUkVBRF9TSVpFIC0gMSkpOworfQorCitleHRlcm4gc3RydWN0IHRocmVhZF9pbmZvICphbGxvY190aHJlYWRfaW5mbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOworZXh0ZXJuIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CisKKyNkZWZpbmUgZ2V0X3RocmVhZF9pbmZvKHRpKQlnZXRfdGFza19zdHJ1Y3QoKHRpKS0+dGFzaykKKyNkZWZpbmUgcHV0X3RocmVhZF9pbmZvKHRpKQlwdXRfdGFza19zdHJ1Y3QoKHRpKS0+dGFzaykKKworI2RlZmluZSB0aHJlYWRfc2F2ZWRfcGModHNrKQlcCisJKCh1bnNpZ25lZCBsb25nKShwY19wb2ludGVyKCh0c2spLT50aHJlYWRfaW5mby0+Y3B1X2NvbnRleHQucGMpKSkKKyNkZWZpbmUgdGhyZWFkX3NhdmVkX2ZwKHRzaykJXAorCSgodW5zaWduZWQgbG9uZykoKHRzayktPnRocmVhZF9pbmZvLT5jcHVfY29udGV4dC5mcCkpCisKK2V4dGVybiB2b2lkIGl3bW14dF90YXNrX2Rpc2FibGUoc3RydWN0IHRocmVhZF9pbmZvICopOworZXh0ZXJuIHZvaWQgaXdtbXh0X3Rhc2tfY29weShzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgdm9pZCAqKTsKK2V4dGVybiB2b2lkIGl3bW14dF90YXNrX3Jlc3RvcmUoc3RydWN0IHRocmVhZF9pbmZvICosIHZvaWQgKik7CitleHRlcm4gdm9pZCBpd21teHRfdGFza19yZWxlYXNlKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKKworI2VuZGlmCisKKy8qCisgKiBXZSB1c2UgYml0IDMwIG9mIHRoZSBwcmVlbXB0X2NvdW50IHRvIGluZGljYXRlIHRoYXQga2VybmVsCisgKiBwcmVlbXB0aW9uIGlzIG9jY3VyaW5nLiAgU2VlIGluY2x1ZGUvYXNtLWFybS9oYXJkaXJxLmguCisgKi8KKyNkZWZpbmUgUFJFRU1QVF9BQ1RJVkUJMHg0MDAwMDAwMAorCisvKgorICogdGhyZWFkIGluZm9ybWF0aW9uIGZsYWdzOgorICogIFRJRl9TWVNDQUxMX1RSQUNFCS0gc3lzY2FsbCB0cmFjZSBhY3RpdmUKKyAqICBUSUZfTk9USUZZX1JFU1VNRQktIHJlc3VtcHRpb24gbm90aWZpY2F0aW9uIHJlcXVlc3RlZAorICogIFRJRl9TSUdQRU5ESU5HCS0gc2lnbmFsIHBlbmRpbmcKKyAqICBUSUZfTkVFRF9SRVNDSEVECS0gcmVzY2hlZHVsaW5nIG5lY2Vzc2FyeQorICogIFRJRl9VU0VERlBVCQktIEZQVSB3YXMgdXNlZCBieSB0aGlzIHRhc2sgdGhpcyBxdWFudHVtIChTTVApCisgKiAgVElGX1BPTExJTkdfTlJGTEFHCS0gdHJ1ZSBpZiBwb2xsX2lkbGUoKSBpcyBwb2xsaW5nIFRJRl9ORUVEX1JFU0NIRUQKKyAqLworI2RlZmluZSBUSUZfTk9USUZZX1JFU1VNRQkwCisjZGVmaW5lIFRJRl9TSUdQRU5ESU5HCQkxCisjZGVmaW5lIFRJRl9ORUVEX1JFU0NIRUQJMgorI2RlZmluZSBUSUZfU1lTQ0FMTF9UUkFDRQk4CisjZGVmaW5lIFRJRl9QT0xMSU5HX05SRkxBRwkxNgorI2RlZmluZSBUSUZfVVNJTkdfSVdNTVhUCTE3CisjZGVmaW5lIFRJRl9NRU1ESUUJCTE4CisKKyNkZWZpbmUgX1RJRl9OT1RJRllfUkVTVU1FCSgxIDw8IFRJRl9OT1RJRllfUkVTVU1FKQorI2RlZmluZSBfVElGX1NJR1BFTkRJTkcJCSgxIDw8IFRJRl9TSUdQRU5ESU5HKQorI2RlZmluZSBfVElGX05FRURfUkVTQ0hFRAkoMSA8PCBUSUZfTkVFRF9SRVNDSEVEKQorI2RlZmluZSBfVElGX1NZU0NBTExfVFJBQ0UJKDEgPDwgVElGX1NZU0NBTExfVFJBQ0UpCisjZGVmaW5lIF9USUZfUE9MTElOR19OUkZMQUcJKDEgPDwgVElGX1BPTExJTkdfTlJGTEFHKQorI2RlZmluZSBfVElGX1VTSU5HX0lXTU1YVAkoMSA8PCBUSUZfVVNJTkdfSVdNTVhUKQorCisvKgorICogQ2hhbmdlIHRoZXNlIGFuZCB5b3UgYnJlYWsgQVNNIGNvZGUgaW4gZW50cnktY29tbW9uLlMKKyAqLworI2RlZmluZSBfVElGX1dPUktfTUFTSwkJMHgwMDAwMDBmZgorCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworI2VuZGlmIC8qIF9fQVNNX0FSTV9USFJFQURfSU5GT19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS90aW1leC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOGQ0Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdGltZXguaApAQCAtMCwwICsxLDI0IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS90aW1leC5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NywxOTk4IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIEFyY2hpdGVjdHVyZSBTcGVjaWZpYyBUSU1FIHNwZWNpZmljYXRpb25zCisgKi8KKyNpZm5kZWYgX0FTTUFSTV9USU1FWF9ICisjZGVmaW5lIF9BU01BUk1fVElNRVhfSAorCisjaW5jbHVkZSA8YXNtL2FyY2gvdGltZXguaD4KKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGN5Y2xlc190OworCitzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXMgKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3RsYi5oIGIvaW5jbHVkZS9hc20tYXJtL3RsYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYjMyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdGxiLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3RsYi5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMiBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBFeHBlcmltZW50YXRpb24gc2hvd3MgdGhhdCBvbiBhIFN0cm9uZ0FSTSwgaXQgYXBwZWFycyB0byBiZSBmYXN0ZXIKKyAqICB0byB1c2UgdGhlICJpbnZhbGlkYXRlIHdob2xlIHRsYiIgcmF0aGVyIHRoYW4gImludmFsaWRhdGUgc2luZ2xlCisgKiAgdGxiIiBmb3IgdGhpcy4KKyAqCisgKiAgVGhpcyBhcHBlYXJzIHRydWUgZm9yIGJvdGggdGhlIHByb2Nlc3MgZm9yaytleGl0IGNhc2UsIGFzIHdlbGwgYXMKKyAqICB0aGUgbXVubWFwLWxhcmdlLWFyZWEgY2FzZS4KKyAqLworI2lmbmRlZiBfX0FTTUFSTV9UTEJfSAorI2RlZmluZSBfX0FTTUFSTV9UTEJfSAorCisjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KKyNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KKyNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgorCisvKgorICogVExCIGhhbmRsaW5nLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIHBhZ2VzIGZyb20gdGhlIHBhZ2UKKyAqIHRhYmxlcywgYW5kIGVmZmljaWVudGx5IGhhbmRsZSB0aGUgVExCIGlzc3Vlcy4KKyAqLworc3RydWN0IG1tdV9nYXRoZXIgeworCXN0cnVjdCBtbV9zdHJ1Y3QJKm1tOworCXVuc2lnbmVkIGludAkJZnJlZWQ7CisJdW5zaWduZWQgaW50CQlmdWxsbW07CisKKwl1bnNpZ25lZCBpbnQJCWZsdXNoZXM7CisJdW5zaWduZWQgaW50CQlhdm9pZGVkX2ZsdXNoZXM7Cit9OworCitERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tdV9nYXRoZXIsIG1tdV9nYXRoZXJzKTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgbW11X2dhdGhlciAqCit0bGJfZ2F0aGVyX21tdShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgaW50IGZ1bGxfbW1fZmx1c2gpCit7CisJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwlzdHJ1Y3QgbW11X2dhdGhlciAqdGxiID0gJnBlcl9jcHUobW11X2dhdGhlcnMsIGNwdSk7CisKKwl0bGItPm1tID0gbW07CisJdGxiLT5mcmVlZCA9IDA7CisJdGxiLT5mdWxsbW0gPSBmdWxsX21tX2ZsdXNoOworCisJcmV0dXJuIHRsYjsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfZmluaXNoX21tdShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IHRsYi0+bW07CisJdW5zaWduZWQgbG9uZyBmcmVlZCA9IHRsYi0+ZnJlZWQ7CisJaW50IHJzcyA9IGdldF9tbV9jb3VudGVyKG1tLCByc3MpOworCisJaWYgKHJzcyA8IGZyZWVkKQorCQlmcmVlZCA9IHJzczsKKwlhZGRfbW1fY291bnRlcihtbSwgcnNzLCAtZnJlZWQpOworCisJaWYgKHRsYi0+ZnVsbG1tKQorCQlmbHVzaF90bGJfbW0obW0pOworCisJLyoga2VlcCB0aGUgcGFnZSB0YWJsZSBjYWNoZSB3aXRoaW4gYm91bmRzICovCisJY2hlY2tfcGd0X2NhY2hlKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHRsYl9pc19mdWxsX21tKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIpCit7CisJcmV0dXJuIHRsYi0+ZnVsbG1tOworfQorCisjZGVmaW5lIHRsYl9yZW1vdmVfdGxiX2VudHJ5KHRsYixwdGVwLGFkZHJlc3MpCWRvIHsgfSB3aGlsZSAoMCkKKworLyoKKyAqIEluIHRoZSBjYXNlIG9mIHRsYiB2bWEgaGFuZGxpbmcsIHdlIGNhbiBvcHRpbWlzZSB0aGVzZSBhd2F5IGluIHRoZQorICogY2FzZSB3aGVyZSB3ZSdyZSBkb2luZyBhIGZ1bGwgTU0gZmx1c2guICBXaGVuIHdlJ3JlIGRvaW5nIGEgbXVubWFwLAorICogdGhlIHZtYXMgYXJlIGFkanVzdGVkIHRvIG9ubHkgY292ZXIgdGhlIHJlZ2lvbiB0byBiZSB0b3JuIGRvd24uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAordGxiX3N0YXJ0X3ZtYShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlpZiAoIXRsYi0+ZnVsbG1tKQorCQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fZW5kKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfZW5kX3ZtYShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlpZiAoIXRsYi0+ZnVsbG1tKQorCQlmbHVzaF90bGJfcmFuZ2Uodm1hLCB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX2VuZCk7Cit9CisKKyNkZWZpbmUgdGxiX3JlbW92ZV9wYWdlKHRsYixwYWdlKQlmcmVlX3BhZ2VfYW5kX3N3YXBfY2FjaGUocGFnZSkKKyNkZWZpbmUgcHRlX2ZyZWVfdGxiKHRsYixwdGVwKQkJcHRlX2ZyZWUocHRlcCkKKyNkZWZpbmUgcG1kX2ZyZWVfdGxiKHRsYixwbWRwKQkJcG1kX2ZyZWUocG1kcCkKKworI2RlZmluZSB0bGJfbWlncmF0ZV9maW5pc2gobW0pCQlkbyB7IH0gd2hpbGUgKDApCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3RsYmZsdXNoLmggYi9pbmNsdWRlL2FzbS1hcm0vdGxiZmx1c2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg2NGIxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3RsYmZsdXNoLmgKQEAgLTAsMCArMSw0MDQgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3RsYmZsdXNoLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfQVNNQVJNX1RMQkZMVVNIX0gKKyNkZWZpbmUgX0FTTUFSTV9UTEJGTFVTSF9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vZ2x1ZS5oPgorCisjZGVmaW5lIFRMQl9WM19QQUdFCSgxIDw8IDApCisjZGVmaW5lIFRMQl9WNF9VX1BBR0UJKDEgPDwgMSkKKyNkZWZpbmUgVExCX1Y0X0RfUEFHRQkoMSA8PCAyKQorI2RlZmluZSBUTEJfVjRfSV9QQUdFCSgxIDw8IDMpCisjZGVmaW5lIFRMQl9WNl9VX1BBR0UJKDEgPDwgNCkKKyNkZWZpbmUgVExCX1Y2X0RfUEFHRQkoMSA8PCA1KQorI2RlZmluZSBUTEJfVjZfSV9QQUdFCSgxIDw8IDYpCisKKyNkZWZpbmUgVExCX1YzX0ZVTEwJKDEgPDwgOCkKKyNkZWZpbmUgVExCX1Y0X1VfRlVMTAkoMSA8PCA5KQorI2RlZmluZSBUTEJfVjRfRF9GVUxMCSgxIDw8IDEwKQorI2RlZmluZSBUTEJfVjRfSV9GVUxMCSgxIDw8IDExKQorI2RlZmluZSBUTEJfVjZfVV9GVUxMCSgxIDw8IDEyKQorI2RlZmluZSBUTEJfVjZfRF9GVUxMCSgxIDw8IDEzKQorI2RlZmluZSBUTEJfVjZfSV9GVUxMCSgxIDw8IDE0KQorCisjZGVmaW5lIFRMQl9WNl9VX0FTSUQJKDEgPDwgMTYpCisjZGVmaW5lIFRMQl9WNl9EX0FTSUQJKDEgPDwgMTcpCisjZGVmaW5lIFRMQl9WNl9JX0FTSUQJKDEgPDwgMTgpCisKKyNkZWZpbmUgVExCX0RDTEVBTgkoMSA8PCAzMCkKKyNkZWZpbmUgVExCX1dCCQkoMSA8PCAzMSkKKworLyoKKyAqCU1NVSBUTEIgTW9kZWwKKyAqCT09PT09PT09PT09PT0KKyAqCisgKglXZSBoYXZlIHRoZSBmb2xsb3dpbmcgdG8gY2hvb3NlIGZyb206CisgKgkgIHYzICAgIC0gQVJNdjMKKyAqCSAgdjQgICAgLSBBUk12NCB3aXRob3V0IHdyaXRlIGJ1ZmZlcgorICoJICB2NHdiICAtIEFSTXY0IHdpdGggd3JpdGUgYnVmZmVyIHdpdGhvdXQgSSBUTEIgZmx1c2ggZW50cnkgaW5zdHJ1Y3Rpb24KKyAqCSAgdjR3YmkgLSBBUk12NCB3aXRoIHdyaXRlIGJ1ZmZlciB3aXRoIEkgVExCIGZsdXNoIGVudHJ5IGluc3RydWN0aW9uCisgKgkgIHY2d2JpIC0gQVJNdjYgd2l0aCB3cml0ZSBidWZmZXIgd2l0aCBJIFRMQiBmbHVzaCBlbnRyeSBpbnN0cnVjdGlvbgorICovCisjdW5kZWYgX1RMQgorI3VuZGVmIE1VTFRJX1RMQgorCisjZGVmaW5lIHYzX3RsYl9mbGFncwkoVExCX1YzX0ZVTEwgfCBUTEJfVjNfUEFHRSkKKworI2lmZGVmIENPTkZJR19DUFVfVExCX1YzCisjIGRlZmluZSB2M19wb3NzaWJsZV9mbGFncwl2M190bGJfZmxhZ3MKKyMgZGVmaW5lIHYzX2Fsd2F5c19mbGFncwl2M190bGJfZmxhZ3MKKyMgaWZkZWYgX1RMQgorIyAgZGVmaW5lIE1VTFRJX1RMQiAxCisjIGVsc2UKKyMgIGRlZmluZSBfVExCIHYzCisjIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgdjNfcG9zc2libGVfZmxhZ3MJMAorIyBkZWZpbmUgdjNfYWx3YXlzX2ZsYWdzCSgtMVVMKQorI2VuZGlmCisKKyNkZWZpbmUgdjRfdGxiX2ZsYWdzCShUTEJfVjRfVV9GVUxMIHwgVExCX1Y0X1VfUEFHRSkKKworI2lmZGVmIENPTkZJR19DUFVfVExCX1Y0V1QKKyMgZGVmaW5lIHY0X3Bvc3NpYmxlX2ZsYWdzCXY0X3RsYl9mbGFncworIyBkZWZpbmUgdjRfYWx3YXlzX2ZsYWdzCXY0X3RsYl9mbGFncworIyBpZmRlZiBfVExCCisjICBkZWZpbmUgTVVMVElfVExCIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9UTEIgdjQKKyMgZW5kaWYKKyNlbHNlCisjIGRlZmluZSB2NF9wb3NzaWJsZV9mbGFncwkwCisjIGRlZmluZSB2NF9hbHdheXNfZmxhZ3MJKC0xVUwpCisjZW5kaWYKKworI2RlZmluZSB2NHdiaV90bGJfZmxhZ3MJKFRMQl9XQiB8IFRMQl9EQ0xFQU4gfCBcCisJCQkgVExCX1Y0X0lfRlVMTCB8IFRMQl9WNF9EX0ZVTEwgfCBcCisJCQkgVExCX1Y0X0lfUEFHRSB8IFRMQl9WNF9EX1BBR0UpCisKKyNpZmRlZiBDT05GSUdfQ1BVX1RMQl9WNFdCSQorIyBkZWZpbmUgdjR3YmlfcG9zc2libGVfZmxhZ3MJdjR3YmlfdGxiX2ZsYWdzCisjIGRlZmluZSB2NHdiaV9hbHdheXNfZmxhZ3MJdjR3YmlfdGxiX2ZsYWdzCisjIGlmZGVmIF9UTEIKKyMgIGRlZmluZSBNVUxUSV9UTEIgMQorIyBlbHNlCisjICBkZWZpbmUgX1RMQiB2NHdiaQorIyBlbmRpZgorI2Vsc2UKKyMgZGVmaW5lIHY0d2JpX3Bvc3NpYmxlX2ZsYWdzCTAKKyMgZGVmaW5lIHY0d2JpX2Fsd2F5c19mbGFncwkoLTFVTCkKKyNlbmRpZgorCisjZGVmaW5lIHY0d2JfdGxiX2ZsYWdzCShUTEJfV0IgfCBUTEJfRENMRUFOIHwgXAorCQkJIFRMQl9WNF9JX0ZVTEwgfCBUTEJfVjRfRF9GVUxMIHwgXAorCQkJIFRMQl9WNF9EX1BBR0UpCisKKyNpZmRlZiBDT05GSUdfQ1BVX1RMQl9WNFdCCisjIGRlZmluZSB2NHdiX3Bvc3NpYmxlX2ZsYWdzCXY0d2JfdGxiX2ZsYWdzCisjIGRlZmluZSB2NHdiX2Fsd2F5c19mbGFncwl2NHdiX3RsYl9mbGFncworIyBpZmRlZiBfVExCCisjICBkZWZpbmUgTVVMVElfVExCIDEKKyMgZWxzZQorIyAgZGVmaW5lIF9UTEIgdjR3YgorIyBlbmRpZgorI2Vsc2UKKyMgZGVmaW5lIHY0d2JfcG9zc2libGVfZmxhZ3MJMAorIyBkZWZpbmUgdjR3Yl9hbHdheXNfZmxhZ3MJKC0xVUwpCisjZW5kaWYKKworI2RlZmluZSB2NndiaV90bGJfZmxhZ3MgKFRMQl9XQiB8IFRMQl9EQ0xFQU4gfCBcCisJCQkgVExCX1Y2X0lfRlVMTCB8IFRMQl9WNl9EX0ZVTEwgfCBcCisJCQkgVExCX1Y2X0lfUEFHRSB8IFRMQl9WNl9EX1BBR0UgfCBcCisJCQkgVExCX1Y2X0lfQVNJRCB8IFRMQl9WNl9EX0FTSUQpCisKKyNpZmRlZiBDT05GSUdfQ1BVX1RMQl9WNgorIyBkZWZpbmUgdjZ3YmlfcG9zc2libGVfZmxhZ3MJdjZ3YmlfdGxiX2ZsYWdzCisjIGRlZmluZSB2NndiaV9hbHdheXNfZmxhZ3MJdjZ3YmlfdGxiX2ZsYWdzCisjIGlmZGVmIF9UTEIKKyMgIGRlZmluZSBNVUxUSV9UTEIgMQorIyBlbHNlCisjICBkZWZpbmUgX1RMQiB2NndiaQorIyBlbmRpZgorI2Vsc2UKKyMgZGVmaW5lIHY2d2JpX3Bvc3NpYmxlX2ZsYWdzCTAKKyMgZGVmaW5lIHY2d2JpX2Fsd2F5c19mbGFncwkoLTFVTCkKKyNlbmRpZgorCisjaWZuZGVmIF9UTEIKKyNlcnJvciBVbmtub3duIFRMQiBtb2RlbAorI2VuZGlmCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0cnVjdCBjcHVfdGxiX2ZucyB7CisJdm9pZCAoKmZsdXNoX3VzZXJfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKKwl2b2lkICgqZmx1c2hfa2Vybl9yYW5nZSkodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CisJdW5zaWduZWQgbG9uZyB0bGJfZmxhZ3M7Cit9OworCisvKgorICogU2VsZWN0IHRoZSBjYWxsaW5nIG1ldGhvZAorICovCisjaWZkZWYgTVVMVElfVExCCisKKyNkZWZpbmUgX19jcHVfZmx1c2hfdXNlcl90bGJfcmFuZ2UJY3B1X3RsYi5mbHVzaF91c2VyX3JhbmdlCisjZGVmaW5lIF9fY3B1X2ZsdXNoX2tlcm5fdGxiX3JhbmdlCWNwdV90bGIuZmx1c2hfa2Vybl9yYW5nZQorCisjZWxzZQorCisjZGVmaW5lIF9fY3B1X2ZsdXNoX3VzZXJfdGxiX3JhbmdlCV9fZ2x1ZShfVExCLF9mbHVzaF91c2VyX3RsYl9yYW5nZSkKKyNkZWZpbmUgX19jcHVfZmx1c2hfa2Vybl90bGJfcmFuZ2UJX19nbHVlKF9UTEIsX2ZsdXNoX2tlcm5fdGxiX3JhbmdlKQorCitleHRlcm4gdm9pZCBfX2NwdV9mbHVzaF91c2VyX3RsYl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CitleHRlcm4gdm9pZCBfX2NwdV9mbHVzaF9rZXJuX3RsYl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKworI2VuZGlmCisKK2V4dGVybiBzdHJ1Y3QgY3B1X3RsYl9mbnMgY3B1X3RsYjsKKworI2RlZmluZSBfX2NwdV90bGJfZmxhZ3MJCQljcHVfdGxiLnRsYl9mbGFncworCisvKgorICoJVExCIE1hbmFnZW1lbnQKKyAqCT09PT09PT09PT09PT09CisgKgorICoJVGhlIGFyY2gvYXJtL21tL3RsYi0qLlMgZmlsZXMgaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMuCisgKgorICoJVGhlIFRMQiBzcGVjaWZpYyBjb2RlIGlzIGV4cGVjdGVkIHRvIHBlcmZvcm0gd2hhdGV2ZXIgdGVzdHMgaXQKKyAqCW5lZWRzIHRvIGRldGVybWluZSBpZiBpdCBzaG91bGQgaW52YWxpZGF0ZSB0aGUgVExCIGZvciBlYWNoCisgKgljYWxsLiAgU3RhcnQgYWRkcmVzc2VzIGFyZSBpbmNsdXNpdmUgYW5kIGVuZCBhZGRyZXNzZXMgYXJlCisgKglleGNsdXNpdmU7IGl0IGlzIHNhZmUgdG8gcm91bmQgdGhlc2UgYWRkcmVzc2VzIGRvd24uCisgKgorICoJZmx1c2hfdGxiX2FsbCgpCisgKgorICoJCUludmFsaWRhdGUgdGhlIGVudGlyZSBUTEIuCisgKgorICoJZmx1c2hfdGxiX21tKG1tKQorICoKKyAqCQlJbnZhbGlkYXRlIGFsbCBUTEIgZW50cmllcyBpbiBhIHBhcnRpY3VsYXIgYWRkcmVzcworICoJCXNwYWNlLgorICoJCS0gbW0JLSBtbV9zdHJ1Y3QgZGVzY3JpYmluZyBhZGRyZXNzIHNwYWNlCisgKgorICoJZmx1c2hfdGxiX3JhbmdlKG1tLHN0YXJ0LGVuZCkKKyAqCisgKgkJSW52YWxpZGF0ZSBhIHJhbmdlIG9mIFRMQiBlbnRyaWVzIGluIHRoZSBzcGVjaWZpZWQKKyAqCQlhZGRyZXNzIHNwYWNlLgorICoJCS0gbW0JLSBtbV9zdHJ1Y3QgZGVzY3JpYmluZyBhZGRyZXNzIHNwYWNlCisgKgkJLSBzdGFydCAtIHN0YXJ0IGFkZHJlc3MgKG1heSBub3QgYmUgYWxpZ25lZCkKKyAqCQktIGVuZAktIGVuZCBhZGRyZXNzIChleGNsdXNpdmUsIG1heSBub3QgYmUgYWxpZ25lZCkKKyAqCisgKglmbHVzaF90bGJfcGFnZSh2YWRkcix2bWEpCisgKgorICoJCUludmFsaWRhdGUgdGhlIHNwZWNpZmllZCBwYWdlIGluIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyByYW5nZS4KKyAqCQktIHZhZGRyIC0gdmlydHVhbCBhZGRyZXNzIChtYXkgbm90IGJlIGFsaWduZWQpCisgKgkJLSB2bWEJLSB2bWFfc3RydWN0IGRlc2NyaWJpbmcgYWRkcmVzcyByYW5nZQorICoKKyAqCWZsdXNoX2tlcm5fdGxiX3BhZ2Uoa2FkZHIpCisgKgorICoJCUludmFsaWRhdGUgdGhlIFRMQiBlbnRyeSBmb3IgdGhlIHNwZWNpZmllZCBwYWdlLiAgVGhlIGFkZHJlc3MKKyAqCQl3aWxsIGJlIGluIHRoZSBrZXJuZWxzIHZpcnR1YWwgbWVtb3J5IHNwYWNlLiAgQ3VycmVudCB1c2VzCisgKgkJb25seSByZXF1aXJlIHRoZSBELVRMQiB0byBiZSBpbnZhbGlkYXRlZC4KKyAqCQktIGthZGRyIC0gS2VybmVsIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3MKKyAqLworCisvKgorICogV2Ugb3B0aW1pc2UgdGhlIGNvZGUgYmVsb3cgYnk6CisgKiAgLSBidWlsZGluZyBhIHNldCBvZiBUTEIgZmxhZ3MgdGhhdCBtaWdodCBiZSBzZXQgaW4gX19jcHVfdGxiX2ZsYWdzCisgKiAgLSBidWlsZGluZyBhIHNldCBvZiBUTEIgZmxhZ3MgdGhhdCB3aWxsIGFsd2F5cyBiZSBzZXQgaW4gX19jcHVfdGxiX2ZsYWdzCisgKiAgLSBpZiB3ZSdyZSBnb2luZyB0byBuZWVkIF9fY3B1X3RsYl9mbGFncywgYWNjZXNzIGl0IG9uY2UgYW5kIG9ubHkgb25jZQorICoKKyAqIFRoaXMgYWxsb3dzIHVzIHRvIGJ1aWxkIG9wdGltYWwgYXNzZW1ibHkgZm9yIHRoZSBzaW5nbGUtQ1BVIHR5cGUgY2FzZSwKKyAqIGFuZCBhcyBjbG9zZSB0byBvcHRpbWFsIGdpdmVuIHRoZSBjb21waWxlciBjb25zdHJhbnRzIGZvciBtdWx0aS1DUFUKKyAqIGNhc2UuICBXZSBjb3VsZCBkbyBiZXR0ZXIgZm9yIHRoZSBtdWx0aS1DUFUgY2FzZSBpZiB0aGUgY29tcGlsZXIKKyAqIGltcGxlbWVudGVkIHRoZSAiJT8iIG1ldGhvZCwgYnV0IHRoaXMgaGFzIGJlZW4gZGlzY29udGludWVkIGR1ZSB0byB0b28KKyAqIG1hbnkgcGVvcGxlIGdldHRpbmcgaXQgd3JvbmcuCisgKi8KKyNkZWZpbmUgcG9zc2libGVfdGxiX2ZsYWdzCSh2M19wb3NzaWJsZV9mbGFncyB8IFwKKwkJCQkgdjRfcG9zc2libGVfZmxhZ3MgfCBcCisJCQkJIHY0d2JpX3Bvc3NpYmxlX2ZsYWdzIHwgXAorCQkJCSB2NHdiX3Bvc3NpYmxlX2ZsYWdzIHwgXAorCQkJCSB2NndiaV9wb3NzaWJsZV9mbGFncykKKworI2RlZmluZSBhbHdheXNfdGxiX2ZsYWdzCSh2M19hbHdheXNfZmxhZ3MgJiBcCisJCQkJIHY0X2Fsd2F5c19mbGFncyAmIFwKKwkJCQkgdjR3YmlfYWx3YXlzX2ZsYWdzICYgXAorCQkJCSB2NHdiX2Fsd2F5c19mbGFncyAmIFwKKwkJCQkgdjZ3YmlfYWx3YXlzX2ZsYWdzKQorCisjZGVmaW5lIHRsYl9mbGFnKGYpCSgoYWx3YXlzX3RsYl9mbGFncyAmIChmKSkgfHwgKF9fdGxiX2ZsYWcgJiBwb3NzaWJsZV90bGJfZmxhZ3MgJiAoZikpKQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX2FsbCh2b2lkKQoreworCWNvbnN0IGludCB6ZXJvID0gMDsKKwljb25zdCB1bnNpZ25lZCBpbnQgX190bGJfZmxhZyA9IF9fY3B1X3RsYl9mbGFnczsKKworCWlmICh0bGJfZmxhZyhUTEJfV0IpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM3LCBjMTAsIDQiIDogOiAiciIgKHplcm8pKTsKKworCWlmICh0bGJfZmxhZyhUTEJfVjNfRlVMTCkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzYsIGMwLCAwIiA6IDogInIiICh6ZXJvKSk7CisJaWYgKHRsYl9mbGFnKFRMQl9WNF9VX0ZVTEwgfCBUTEJfVjZfVV9GVUxMKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzcsIDAiIDogOiAiciIgKHplcm8pKTsKKwlpZiAodGxiX2ZsYWcoVExCX1Y0X0RfRlVMTCB8IFRMQl9WNl9EX0ZVTEwpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNiwgMCIgOiA6ICJyIiAoemVybykpOworCWlmICh0bGJfZmxhZyhUTEJfVjRfSV9GVUxMIHwgVExCX1Y2X0lfRlVMTCkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM1LCAwIiA6IDogInIiICh6ZXJvKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pCit7CisJY29uc3QgaW50IHplcm8gPSAwOworCWNvbnN0IGludCBhc2lkID0gQVNJRChtbSk7CisJY29uc3QgdW5zaWduZWQgaW50IF9fdGxiX2ZsYWcgPSBfX2NwdV90bGJfZmxhZ3M7CisKKwlpZiAodGxiX2ZsYWcoVExCX1dCKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjNywgYzEwLCA0IiA6IDogInIiICh6ZXJvKSk7CisKKwlpZiAoY3B1X2lzc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSwgbW0tPmNwdV92bV9tYXNrKSkgeworCQlpZiAodGxiX2ZsYWcoVExCX1YzX0ZVTEwpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjNiwgYzAsIDAiIDogOiAiciIgKHplcm8pKTsKKwkJaWYgKHRsYl9mbGFnKFRMQl9WNF9VX0ZVTEwpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzcsIDAiIDogOiAiciIgKHplcm8pKTsKKwkJaWYgKHRsYl9mbGFnKFRMQl9WNF9EX0ZVTEwpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzYsIDAiIDogOiAiciIgKHplcm8pKTsKKwkJaWYgKHRsYl9mbGFnKFRMQl9WNF9JX0ZVTEwpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzUsIDAiIDogOiAiciIgKHplcm8pKTsKKwl9CisKKwlpZiAodGxiX2ZsYWcoVExCX1Y2X1VfQVNJRCkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM3LCAyIiA6IDogInIiIChhc2lkKSk7CisJaWYgKHRsYl9mbGFnKFRMQl9WNl9EX0FTSUQpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNiwgMiIgOiA6ICJyIiAoYXNpZCkpOworCWlmICh0bGJfZmxhZyhUTEJfVjZfSV9BU0lEKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzUsIDIiIDogOiAiciIgKGFzaWQpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyB1YWRkcikKK3sKKwljb25zdCBpbnQgemVybyA9IDA7CisJY29uc3QgdW5zaWduZWQgaW50IF9fdGxiX2ZsYWcgPSBfX2NwdV90bGJfZmxhZ3M7CisKKwl1YWRkciA9ICh1YWRkciAmIFBBR0VfTUFTSykgfCBBU0lEKHZtYS0+dm1fbW0pOworCisJaWYgKHRsYl9mbGFnKFRMQl9XQikpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzcsIGMxMCwgNCIgOiA6ICJyIiAoemVybykpOworCisJaWYgKGNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCksIHZtYS0+dm1fbW0tPmNwdV92bV9tYXNrKSkgeworCQlpZiAodGxiX2ZsYWcoVExCX1YzX1BBR0UpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjNiwgYzAsIDAiIDogOiAiciIgKHVhZGRyKSk7CisJCWlmICh0bGJfZmxhZyhUTEJfVjRfVV9QQUdFKSkKKwkJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM3LCAxIiA6IDogInIiICh1YWRkcikpOworCQlpZiAodGxiX2ZsYWcoVExCX1Y0X0RfUEFHRSkpCisJCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNiwgMSIgOiA6ICJyIiAodWFkZHIpKTsKKwkJaWYgKHRsYl9mbGFnKFRMQl9WNF9JX1BBR0UpKQorCQkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzUsIDEiIDogOiAiciIgKHVhZGRyKSk7CisJCWlmICghdGxiX2ZsYWcoVExCX1Y0X0lfUEFHRSkgJiYgdGxiX2ZsYWcoVExCX1Y0X0lfRlVMTCkpCisJCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNSwgMCIgOiA6ICJyIiAoemVybykpOworCX0KKworCWlmICh0bGJfZmxhZyhUTEJfVjZfVV9QQUdFKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzcsIDEiIDogOiAiciIgKHVhZGRyKSk7CisJaWYgKHRsYl9mbGFnKFRMQl9WNl9EX1BBR0UpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNiwgMSIgOiA6ICJyIiAodWFkZHIpKTsKKwlpZiAodGxiX2ZsYWcoVExCX1Y2X0lfUEFHRSkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM1LCAxIiA6IDogInIiICh1YWRkcikpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcga2FkZHIpCit7CisJY29uc3QgaW50IHplcm8gPSAwOworCWNvbnN0IHVuc2lnbmVkIGludCBfX3RsYl9mbGFnID0gX19jcHVfdGxiX2ZsYWdzOworCisJa2FkZHIgJj0gUEFHRV9NQVNLOworCisJaWYgKHRsYl9mbGFnKFRMQl9XQikpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzcsIGMxMCwgNCIgOiA6ICJyIiAoemVybykpOworCisJaWYgKHRsYl9mbGFnKFRMQl9WM19QQUdFKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjNiwgYzAsIDAiIDogOiAiciIgKGthZGRyKSk7CisJaWYgKHRsYl9mbGFnKFRMQl9WNF9VX1BBR0UpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNywgMSIgOiA6ICJyIiAoa2FkZHIpKTsKKwlpZiAodGxiX2ZsYWcoVExCX1Y0X0RfUEFHRSkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM2LCAxIiA6IDogInIiIChrYWRkcikpOworCWlmICh0bGJfZmxhZyhUTEJfVjRfSV9QQUdFKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzUsIDEiIDogOiAiciIgKGthZGRyKSk7CisJaWYgKCF0bGJfZmxhZyhUTEJfVjRfSV9QQUdFKSAmJiB0bGJfZmxhZyhUTEJfVjRfSV9GVUxMKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzUsIDAiIDogOiAiciIgKHplcm8pKTsKKworCWlmICh0bGJfZmxhZyhUTEJfVjZfVV9QQUdFKSkKKwkJYXNtKCJtY3IlPyBwMTUsIDAsICUwLCBjOCwgYzcsIDEiIDogOiAiciIgKGthZGRyKSk7CisJaWYgKHRsYl9mbGFnKFRMQl9WNl9EX1BBR0UpKQorCQlhc20oIm1jciU/IHAxNSwgMCwgJTAsIGM4LCBjNiwgMSIgOiA6ICJyIiAoa2FkZHIpKTsKKwlpZiAodGxiX2ZsYWcoVExCX1Y2X0lfUEFHRSkpCisJCWFzbSgibWNyJT8gcDE1LCAwLCAlMCwgYzgsIGM1LCAxIiA6IDogInIiIChrYWRkcikpOworfQorCisvKgorICoJZmx1c2hfcG1kX2VudHJ5CisgKgorICoJRmx1c2ggYSBQTUQgZW50cnkgKHdvcmQgYWxpZ25lZCwgb3IgZG91YmxlLXdvcmQgYWxpZ25lZCkgdG8KKyAqCVJBTSBpZiB0aGUgVExCIGZvciB0aGUgQ1BVIHdlIGFyZSBydW5uaW5nIG9uIHJlcXVpcmVzIHRoaXMuCisgKglUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gd2UgYXJlIGNyZWF0aW5nIFBNRCBlbnRyaWVzLgorICoKKyAqCWNsZWFuX3BtZF9lbnRyeQorICoKKyAqCUNsZWFuIChidXQgZG9uJ3QgZHJhaW4gdGhlIHdyaXRlIGJ1ZmZlcikgaWYgdGhlIENQVSByZXF1aXJlcworICoJdGhlc2Ugb3BlcmF0aW9ucy4gIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiB3ZSBhcmUgcmVtb3ZpbmcKKyAqCVBNRCBlbnRyaWVzLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfcG1kX2VudHJ5KHBtZF90ICpwbWQpCit7CisJY29uc3QgdW5zaWduZWQgaW50IHplcm8gPSAwOworCWNvbnN0IHVuc2lnbmVkIGludCBfX3RsYl9mbGFnID0gX19jcHVfdGxiX2ZsYWdzOworCisJaWYgKHRsYl9mbGFnKFRMQl9EQ0xFQU4pKQorCQlhc20oIm1jciU/CXAxNSwgMCwgJTAsIGM3LCBjMTAsIDEJQCBmbHVzaF9wbWQiCisJCQk6IDogInIiIChwbWQpKTsKKwlpZiAodGxiX2ZsYWcoVExCX1dCKSkKKwkJYXNtKCJtY3IlPwlwMTUsIDAsICUwLCBjNywgYzEwLCA0CUAgZmx1c2hfcG1kIgorCQkJOiA6ICJyIiAoemVybykpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW5fcG1kX2VudHJ5KHBtZF90ICpwbWQpCit7CisJY29uc3QgdW5zaWduZWQgaW50IF9fdGxiX2ZsYWcgPSBfX2NwdV90bGJfZmxhZ3M7CisKKwlpZiAodGxiX2ZsYWcoVExCX0RDTEVBTikpCisJCWFzbSgibWNyJT8JcDE1LCAwLCAlMCwgYzcsIGMxMCwgMQlAIGZsdXNoX3BtZCIKKwkJCTogOiAiciIgKHBtZCkpOworfQorCisjdW5kZWYgdGxiX2ZsYWcKKyN1bmRlZiBhbHdheXNfdGxiX2ZsYWdzCisjdW5kZWYgcG9zc2libGVfdGxiX2ZsYWdzCisKKy8qCisgKiBDb252ZXJ0IGNhbGxzIHRvIG91ciBjYWxsaW5nIGNvbnZlbnRpb24uCisgKi8KKyNkZWZpbmUgZmx1c2hfdGxiX3JhbmdlKHZtYSxzdGFydCxlbmQpCV9fY3B1X2ZsdXNoX3VzZXJfdGxiX3JhbmdlKHN0YXJ0LGVuZCx2bWEpCisjZGVmaW5lIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UocyxlKQlfX2NwdV9mbHVzaF9rZXJuX3RsYl9yYW5nZShzLGUpCisKKy8qCisgKiBpZiBQR19kY2FjaGVfZGlydHkgaXMgc2V0IGZvciB0aGUgcGFnZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkKKyAqIGNhY2hlIGVudHJpZXMgZm9yIHRoZSBrZXJuZWxzIHZpcnR1YWwgbWVtb3J5IHJhbmdlIGFyZSB3cml0dGVuCisgKiBiYWNrIHRvIHRoZSBwYWdlLgorICovCitleHRlcm4gdm9pZCB1cGRhdGVfbW11X2NhY2hlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90IHB0ZSk7CisKKy8qCisgKiBBUk0gcHJvY2Vzc29ycyBkbyBub3QgY2FjaGUgVExCIHRhYmxlcyBpbiBSQU0uCisgKi8KKyNkZWZpbmUgZmx1c2hfdGxiX3BndGFibGVzKG1tLHN0YXJ0LGVuZCkJZG8geyB9IHdoaWxlICgwKQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdG9wb2xvZ3kuaCBiL2luY2x1ZGUvYXNtLWFybS90b3BvbG9neS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjY2JkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdG9wb2xvZ3kuaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYgX0FTTV9BUk1fVE9QT0xPR1lfSAorI2RlZmluZSBfQVNNX0FSTV9UT1BPTE9HWV9ICisKKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy90b3BvbG9neS5oPgorCisjZW5kaWYgLyogX0FTTV9BUk1fVE9QT0xPR1lfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3RyYXBzLmggYi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGYzNGRjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3RyYXBzLmgKQEAgLTAsMCArMSwxOCBAQAorI2lmbmRlZiBfQVNNQVJNX1RSQVBfSAorI2RlZmluZSBfQVNNQVJNX1RSQVBfSAorCisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorCitzdHJ1Y3QgdW5kZWZfaG9vayB7CisJc3RydWN0IGxpc3RfaGVhZCBub2RlOworCXUzMiBpbnN0cl9tYXNrOworCXUzMiBpbnN0cl92YWw7CisJdTMyIGNwc3JfbWFzazsKKwl1MzIgY3Bzcl92YWw7CisJaW50ICgqZm4pKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgaW5zdHIpOworfTsKKwordm9pZCByZWdpc3Rlcl91bmRlZl9ob29rKHN0cnVjdCB1bmRlZl9ob29rICpob29rKTsKK3ZvaWQgdW5yZWdpc3Rlcl91bmRlZl9ob29rKHN0cnVjdCB1bmRlZl9ob29rICpob29rKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdHlwZXMuaCBiL2luY2x1ZGUvYXNtLWFybS90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzkyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdHlwZXMuaApAQCAtMCwwICsxLDYyIEBACisjaWZuZGVmIF9fQVNNX0FSTV9UWVBFU19ICisjZGVmaW5lIF9fQVNNX0FSTV9UWVBFU19ICisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKKworLyoKKyAqIF9feHggaXMgb2s6IGl0IGRvZXNuJ3QgcG9sbHV0ZSB0aGUgUE9TSVggbmFtZXNwYWNlLiBVc2UgdGhlc2UgaW4gdGhlCisgKiBoZWFkZXIgZmlsZXMgZXhwb3J0ZWQgdG8gdXNlciBzcGFjZQorICovCisKK3R5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKKwordHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0IF9fczE2OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsKKwordHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IF9fdTMyOworCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQordHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OworI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworLyoKKyAqIFRoZXNlIGFyZW4ndCBleHBvcnRlZCBvdXRzaWRlIHRoZSBrZXJuZWwgdG8gYXZvaWQgbmFtZSBzcGFjZSBjbGFzaGVzCisgKi8KKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNkZWZpbmUgQklUU19QRVJfTE9ORyAzMgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCit0eXBlZGVmIHNpZ25lZCBjaGFyIHM4OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OworCit0eXBlZGVmIHNpZ25lZCBzaG9ydCBzMTY7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKKwordHlwZWRlZiBzaWduZWQgaW50IHMzMjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKKwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIHM2NDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKKworLyogRG1hIGFkZHJlc3NlcyBhcmUgMzItYml0cyB3aWRlLiAgKi8KKwordHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKK3R5cGVkZWYgdTMyIGRtYTY0X2FkZHJfdDsKKwordHlwZWRlZiB1bnNpZ25lZCBpbnQga21lbV9idWZjdGxfdDsKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3VhY2Nlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS91YWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdjMDE4YgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS91YWNjZXNzLmgKQEAgLTAsMCArMSw0MzggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3VhY2Nlc3MuaAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKyNpZm5kZWYgX0FTTUFSTV9VQUNDRVNTX0gKKyNkZWZpbmUgX0FTTUFSTV9VQUNDRVNTX0gKKworLyoKKyAqIFVzZXIgc3BhY2UgbWVtb3J5IGFjY2VzcyBmdW5jdGlvbnMKKyAqLworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS9kb21haW4uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisKKyNkZWZpbmUgVkVSSUZZX1JFQUQgMAorI2RlZmluZSBWRVJJRllfV1JJVEUgMQorCisvKgorICogVGhlIGV4Y2VwdGlvbiB0YWJsZSBjb25zaXN0cyBvZiBwYWlycyBvZiBhZGRyZXNzZXM6IHRoZSBmaXJzdCBpcyB0aGUKKyAqIGFkZHJlc3Mgb2YgYW4gaW5zdHJ1Y3Rpb24gdGhhdCBpcyBhbGxvd2VkIHRvIGZhdWx0LCBhbmQgdGhlIHNlY29uZCBpcworICogdGhlIGFkZHJlc3MgYXQgd2hpY2ggdGhlIHByb2dyYW0gc2hvdWxkIGNvbnRpbnVlLiAgTm8gcmVnaXN0ZXJzIGFyZQorICogbW9kaWZpZWQsIHNvIGl0IGlzIGVudGlyZWx5IHVwIHRvIHRoZSBjb250aW51YXRpb24gY29kZSB0byBmaWd1cmUgb3V0CisgKiB3aGF0IHRvIGRvLgorICoKKyAqIEFsbCB0aGUgcm91dGluZXMgYmVsb3cgdXNlIGJpdHMgb2YgZml4dXAgY29kZSB0aGF0IGFyZSBvdXQgb2YgbGluZQorICogd2l0aCB0aGUgbWFpbiBpbnN0cnVjdGlvbiBwYXRoLiAgVGhpcyBtZWFucyB3aGVuIGV2ZXJ5dGhpbmcgaXMgd2VsbCwKKyAqIHdlIGRvbid0IGV2ZW4gaGF2ZSB0byBqdW1wIG92ZXIgdGhlbS4gIEZ1cnRoZXIsIHRoZXkgZG8gbm90IGludHJ1ZGUKKyAqIG9uIG91ciBjYWNoZSBvciB0bGIgZW50cmllcy4KKyAqLworCitzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5Cit7CisJdW5zaWduZWQgbG9uZyBpbnNuLCBmaXh1cDsKK307CisKK2V4dGVybiBpbnQgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworLyoKKyAqIE5vdGUgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IDB4MSwwMDAwLDAwMDAKKyAqLworI2RlZmluZSBLRVJORUxfRFMJMHgwMDAwMDAwMAorI2RlZmluZSBVU0VSX0RTCQlUQVNLX1NJWkUKKworI2RlZmluZSBnZXRfZHMoKQkoS0VSTkVMX0RTKQorI2RlZmluZSBnZXRfZnMoKQkoY3VycmVudF90aHJlYWRfaW5mbygpLT5hZGRyX2xpbWl0KQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzIChtbV9zZWdtZW50X3QgZnMpCit7CisJY3VycmVudF90aHJlYWRfaW5mbygpLT5hZGRyX2xpbWl0ID0gZnM7CisJbW9kaWZ5X2RvbWFpbihET01BSU5fS0VSTkVMLCBmcyA/IERPTUFJTl9DTElFTlQgOiBET01BSU5fTUFOQUdFUik7Cit9CisKKyNkZWZpbmUgc2VnbWVudF9lcShhLGIpCSgoYSkgPT0gKGIpKQorCisjZGVmaW5lIF9fYWRkcl9vayhhZGRyKSAoeyBcCisJdW5zaWduZWQgbG9uZyBmbGFnOyBcCisJX19hc21fXygiY21wICUyLCAlMDsgbW92bG8gJTAsICMwIiBcCisJCTogIj0mciIgKGZsYWcpIFwKKwkJOiAiMCIgKGN1cnJlbnRfdGhyZWFkX2luZm8oKS0+YWRkcl9saW1pdCksICJyIiAoYWRkcikgXAorCQk6ICJjYyIpOyBcCisJKGZsYWcgPT0gMCk7IH0pCisKKy8qIFdlIHVzZSAzMy1iaXQgYXJpdGhtZXRpYyBoZXJlLi4uICovCisjZGVmaW5lIF9fcmFuZ2Vfb2soYWRkcixzaXplKSAoeyBcCisJdW5zaWduZWQgbG9uZyBmbGFnLCBzdW07IFwKKwlfX2Noa191c2VyX3B0cihhZGRyKTsJXAorCV9fYXNtX18oImFkZHMgJTEsICUyLCAlMzsgc2JjY2NzICUxLCAlMSwgJTA7IG1vdmNjICUwLCAjMCIgXAorCQk6ICI9JnIiIChmbGFnKSwgIj0mciIgKHN1bSkgXAorCQk6ICJyIiAoYWRkciksICJJciIgKHNpemUpLCAiMCIgKGN1cnJlbnRfdGhyZWFkX2luZm8oKS0+YWRkcl9saW1pdCkgXAorCQk6ICJjYyIpOyBcCisJZmxhZzsgfSkKKworI2RlZmluZSBhY2Nlc3Nfb2sodHlwZSxhZGRyLHNpemUpCShfX3JhbmdlX29rKGFkZHIsc2l6ZSkgPT0gMCkKKworLyogdGhpcyBmdW5jdGlvbiB3aWxsIGdvIGF3YXkgc29vbiAtIHVzZSBhY2Nlc3Nfb2soKSBpbnN0ZWFkICovCitzdGF0aWMgaW5saW5lIGludCBfX2RlcHJlY2F0ZWQgdmVyaWZ5X2FyZWEoaW50IHR5cGUsIGNvbnN0IHZvaWQgX191c2VyICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJcmV0dXJuIGFjY2Vzc19vayh0eXBlLCBhZGRyLCBzaXplKSA/IDAgOiAtRUZBVUxUOworfQorCisvKgorICogU2luZ2xlLXZhbHVlIHRyYW5zZmVyIHJvdXRpbmVzLiAgVGhleSBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgcmlnaHQKKyAqIHNpemUgaWYgd2UganVzdCBoYXZlIHRoZSByaWdodCBwb2ludGVyIHR5cGUuICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9ucworICogd2hpY2ggcmVhZCBmcm9tIHVzZXIgc3BhY2UgKCpnZXRfKikgbmVlZCB0byB0YWtlIGNhcmUgbm90IHRvIGxlYWsKKyAqIGtlcm5lbCBkYXRhIGV2ZW4gaWYgdGhlIGNhbGxpbmcgY29kZSBpcyBidWdneSBhbmQgZmFpbHMgdG8gY2hlY2sKKyAqIHRoZSByZXR1cm4gdmFsdWUuICBUaGlzIG1lYW5zIHplcm9pbmcgb3V0IHRoZSBkZXN0aW5hdGlvbiB2YXJpYWJsZQorICogb3IgYnVmZmVyIG9uIGVycm9yLiAgTm9ybWFsbHkgdGhpcyBpcyBkb25lIG91dCBvZiBsaW5lIGJ5IHRoZQorICogZml4dXAgY29kZSwgYnV0IHRoZXJlIGFyZSBhIGZldyBwbGFjZXMgd2hlcmUgaXQgaW50cnVkZXMgb24gdGhlCisgKiBtYWluIGNvZGUgcGF0aC4gIFdoZW4gd2Ugb25seSB3cml0ZSB0byB1c2VyIHNwYWNlLCB0aGVyZSBpcyBubworICogcHJvYmxlbS4KKyAqCisgKiBUaGUgIl9feHh4IiB2ZXJzaW9ucyBvZiB0aGUgdXNlciBhY2Nlc3MgZnVuY3Rpb25zIGRvIG5vdCB2ZXJpZnkgdGhlCisgKiBhZGRyZXNzIHNwYWNlIC0gaXQgbXVzdCBoYXZlIGJlZW4gZG9uZSBwcmV2aW91c2x5IHdpdGggYSBzZXBhcmF0ZQorICogImFjY2Vzc19vaygpIiBjYWxsLgorICoKKyAqIFRoZSAieHh4X2Vycm9yIiB2ZXJzaW9ucyBzZXQgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIEVGQVVMVCBpZiBhbgorICogZXJyb3Igb2NjdXJzLCBhbmQgbGVhdmUgaXQgdW5jaGFuZ2VkIG9uIHN1Y2Nlc3MuICBOb3RlIHRoYXQgdGhlc2UKKyAqIHZlcnNpb25zIGFyZSB2b2lkIChpZSwgZG9uJ3QgcmV0dXJuIGEgdmFsdWUgYXMgc3VjaCkuCisgKi8KKworZXh0ZXJuIGludCBfX2dldF91c2VyXzEodm9pZCAqKTsKK2V4dGVybiBpbnQgX19nZXRfdXNlcl8yKHZvaWQgKik7CitleHRlcm4gaW50IF9fZ2V0X3VzZXJfNCh2b2lkICopOworZXh0ZXJuIGludCBfX2dldF91c2VyXzgodm9pZCAqKTsKK2V4dGVybiBpbnQgX19nZXRfdXNlcl9iYWQodm9pZCk7CisKKyNkZWZpbmUgX19nZXRfdXNlcl94KF9fcjIsX19wLF9fZSxfX3MsX19pLi4uKQkJCQlcCisJICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJXAorCQlfX2FzbWVxKCIlMCIsICJyMCIpIF9fYXNtZXEoIiUxIiwgInIyIikJCQlcCisJCSJibAlfX2dldF91c2VyXyIgI19fcwkJCQlcCisJCTogIj0mciIgKF9fZSksICI9ciIgKF9fcjIpCQkJCVwKKwkJOiAiMCIgKF9fcCkJCQkJCQlcCisJCTogX19pLCAiY2MiKQorCisjZGVmaW5lIGdldF91c2VyKHgscCkJCQkJCQkJXAorCSh7CQkJCQkJCQlcCisJCWNvbnN0IHJlZ2lzdGVyIHR5cGVvZigqKHApKSBfX3VzZXIgKl9fcCBhc20oInIwIikgPSAocCk7XAorCQlyZWdpc3RlciB0eXBlb2YoKihwKSkgX19yMiBhc20oInIyIik7CQkJXAorCQlyZWdpc3RlciBpbnQgX19lIGFzbSgicjAiKTsJCQkJXAorCQlzd2l0Y2ggKHNpemVvZigqKF9fcCkpKSB7CQkJCVwKKwkJY2FzZSAxOgkJCQkJCQlcCisJCQlfX2dldF91c2VyX3goX19yMiwgX19wLCBfX2UsIDEsICJsciIpOwkJXAorCSAgICAgICAJCWJyZWFrOwkJCQkJCVwKKwkJY2FzZSAyOgkJCQkJCQlcCisJCQlfX2dldF91c2VyX3goX19yMiwgX19wLCBfX2UsIDIsICJyMyIsICJsciIpOwlcCisJCQlicmVhazsJCQkJCQlcCisJCWNhc2UgNDoJCQkJCQkJXAorCSAgICAgICAJCV9fZ2V0X3VzZXJfeChfX3IyLCBfX3AsIF9fZSwgNCwgImxyIik7CQlcCisJCQlicmVhazsJCQkJCQlcCisJCWNhc2UgODoJCQkJCQkJXAorCQkJX19nZXRfdXNlcl94KF9fcjIsIF9fcCwgX19lLCA4LCAibHIiKTsJCVwKKwkgICAgICAgCQlicmVhazsJCQkJCQlcCisJCWRlZmF1bHQ6IF9fZSA9IF9fZ2V0X3VzZXJfYmFkKCk7IGJyZWFrOwkJCVwKKwkJfQkJCQkJCQlcCisJCXggPSBfX3IyOwkJCQkJCVwKKwkJX19lOwkJCQkJCQlcCisJfSkKKworI2RlZmluZSBfX2dldF91c2VyKHgscHRyKQkJCQkJCVwKKyh7CQkJCQkJCQkJXAorCWxvbmcgX19ndV9lcnIgPSAwOwkJCQkJCVwKKwlfX2dldF91c2VyX2VycigoeCksKHB0ciksX19ndV9lcnIpOwkJCQlcCisJX19ndV9lcnI7CQkJCQkJCVwKK30pCisKKyNkZWZpbmUgX19nZXRfdXNlcl9lcnJvcih4LHB0cixlcnIpCQkJCQlcCisoewkJCQkJCQkJCVwKKwlfX2dldF91c2VyX2VycigoeCksKHB0ciksZXJyKTsJCQkJCVwKKwkodm9pZCkgMDsJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX2dldF91c2VyX2Vycih4LHB0cixlcnIpCQkJCQlcCitkbyB7CQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX19ndV9hZGRyID0gKHVuc2lnbmVkIGxvbmcpKHB0cik7CQkJXAorCXVuc2lnbmVkIGxvbmcgX19ndV92YWw7CQkJCQkJXAorCV9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQkJXAorCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJCVwKKwljYXNlIDE6CV9fZ2V0X3VzZXJfYXNtX2J5dGUoX19ndV92YWwsX19ndV9hZGRyLGVycik7CWJyZWFrOwlcCisJY2FzZSAyOglfX2dldF91c2VyX2FzbV9oYWxmKF9fZ3VfdmFsLF9fZ3VfYWRkcixlcnIpOwlicmVhazsJXAorCWNhc2UgNDoJX19nZXRfdXNlcl9hc21fd29yZChfX2d1X3ZhbCxfX2d1X2FkZHIsZXJyKTsJYnJlYWs7CVwKKwlkZWZhdWx0OiAoX19ndV92YWwpID0gX19nZXRfdXNlcl9iYWQoKTsJCQkJXAorCX0JCQkJCQkJCVwKKwkoeCkgPSAoX190eXBlb2ZfXygqKHB0cikpKV9fZ3VfdmFsOwkJCQlcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIF9fZ2V0X3VzZXJfYXNtX2J5dGUoeCxhZGRyLGVycikJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSIxOglsZHJidAklMSxbJTJdLCMwXG4iCQkJCVwKKwkiMjpcbiIJCQkJCQkJXAorCSIJLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJCVwKKwkiCS5hbGlnbgkyXG4iCQkJCQlcCisJIjM6CW1vdgklMCwgJTNcbiIJCQkJXAorCSIJbW92CSUxLCAjMFxuIgkJCQlcCisJIgliCTJiXG4iCQkJCQlcCisJIgkucHJldmlvdXNcbiIJCQkJCVwKKwkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCisJIgkuYWxpZ24JM1xuIgkJCQkJXAorCSIJLmxvbmcJMWIsIDNiXG4iCQkJCVwKKwkiCS5wcmV2aW91cyIJCQkJCVwKKwk6ICIrciIgKGVyciksICI9JnIiICh4KQkJCQkJXAorCTogInIiIChhZGRyKSwgImkiICgtRUZBVUxUKQkJCQlcCisJOiAiY2MiKQorCisjaWZuZGVmIF9fQVJNRUJfXworI2RlZmluZSBfX2dldF91c2VyX2FzbV9oYWxmKHgsX19ndV9hZGRyLGVycikJCQlcCisoewkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX19iMSwgX19iMjsJCQkJXAorCV9fZ2V0X3VzZXJfYXNtX2J5dGUoX19iMSwgX19ndV9hZGRyLCBlcnIpOwkJXAorCV9fZ2V0X3VzZXJfYXNtX2J5dGUoX19iMiwgX19ndV9hZGRyICsgMSwgZXJyKTsJCVwKKwkoeCkgPSBfX2IxIHwgKF9fYjIgPDwgOCk7CQkJCVwKK30pCisjZWxzZQorI2RlZmluZSBfX2dldF91c2VyX2FzbV9oYWxmKHgsX19ndV9hZGRyLGVycikJCQlcCisoewkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX19iMSwgX19iMjsJCQkJXAorCV9fZ2V0X3VzZXJfYXNtX2J5dGUoX19iMSwgX19ndV9hZGRyLCBlcnIpOwkJXAorCV9fZ2V0X3VzZXJfYXNtX2J5dGUoX19iMiwgX19ndV9hZGRyICsgMSwgZXJyKTsJCVwKKwkoeCkgPSAoX19iMSA8PCA4KSB8IF9fYjI7CQkJCVwKK30pCisjZW5kaWYKKworI2RlZmluZSBfX2dldF91c2VyX2FzbV93b3JkKHgsYWRkcixlcnIpCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkiMToJbGRydAklMSxbJTJdLCMwXG4iCQkJCVwKKwkiMjpcbiIJCQkJCQkJXAorCSIJLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJCVwKKwkiCS5hbGlnbgkyXG4iCQkJCQlcCisJIjM6CW1vdgklMCwgJTNcbiIJCQkJXAorCSIJbW92CSUxLCAjMFxuIgkJCQlcCisJIgliCTJiXG4iCQkJCQlcCisJIgkucHJldmlvdXNcbiIJCQkJCVwKKwkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCisJIgkuYWxpZ24JM1xuIgkJCQkJXAorCSIJLmxvbmcJMWIsIDNiXG4iCQkJCVwKKwkiCS5wcmV2aW91cyIJCQkJCVwKKwk6ICIrciIgKGVyciksICI9JnIiICh4KQkJCQkJXAorCTogInIiIChhZGRyKSwgImkiICgtRUZBVUxUKQkJCQlcCisJOiAiY2MiKQorCitleHRlcm4gaW50IF9fcHV0X3VzZXJfMSh2b2lkICosIHVuc2lnbmVkIGludCk7CitleHRlcm4gaW50IF9fcHV0X3VzZXJfMih2b2lkICosIHVuc2lnbmVkIGludCk7CitleHRlcm4gaW50IF9fcHV0X3VzZXJfNCh2b2lkICosIHVuc2lnbmVkIGludCk7CitleHRlcm4gaW50IF9fcHV0X3VzZXJfOCh2b2lkICosIHVuc2lnbmVkIGxvbmcgbG9uZyk7CitleHRlcm4gaW50IF9fcHV0X3VzZXJfYmFkKHZvaWQpOworCisjZGVmaW5lIF9fcHV0X3VzZXJfeChfX3IyLF9fcCxfX2UsX19zKQkJCQkJXAorCSAgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCVwKKwkJX19hc21lcSgiJTAiLCAicjAiKSBfX2FzbWVxKCIlMiIsICJyMiIpCQkJXAorCQkiYmwJX19wdXRfdXNlcl8iICNfX3MJCQkJXAorCQk6ICI9JnIiIChfX2UpCQkJCQkJXAorCQk6ICIwIiAoX19wKSwgInIiIChfX3IyKQkJCQkJXAorCQk6ICJpcCIsICJsciIsICJjYyIpCisKKyNkZWZpbmUgcHV0X3VzZXIoeCxwKQkJCQkJCQlcCisJKHsJCQkJCQkJCVwKKwkJY29uc3QgcmVnaXN0ZXIgdHlwZW9mKCoocCkpIF9fcjIgYXNtKCJyMiIpID0gKHgpOwlcCisJCWNvbnN0IHJlZ2lzdGVyIHR5cGVvZigqKHApKSBfX3VzZXIgKl9fcCBhc20oInIwIikgPSAocCk7XAorCQlyZWdpc3RlciBpbnQgX19lIGFzbSgicjAiKTsJCQkJXAorCQlzd2l0Y2ggKHNpemVvZigqKF9fcCkpKSB7CQkJCVwKKwkJY2FzZSAxOgkJCQkJCQlcCisJCQlfX3B1dF91c2VyX3goX19yMiwgX19wLCBfX2UsIDEpOwkJXAorCQkJYnJlYWs7CQkJCQkJXAorCQljYXNlIDI6CQkJCQkJCVwKKwkJCV9fcHV0X3VzZXJfeChfX3IyLCBfX3AsIF9fZSwgMik7CQlcCisJCQlicmVhazsJCQkJCQlcCisJCWNhc2UgNDoJCQkJCQkJXAorCQkJX19wdXRfdXNlcl94KF9fcjIsIF9fcCwgX19lLCA0KTsJCVwKKwkJCWJyZWFrOwkJCQkJCVwKKwkJY2FzZSA4OgkJCQkJCQlcCisJCQlfX3B1dF91c2VyX3goX19yMiwgX19wLCBfX2UsIDgpOwkJXAorCQkJYnJlYWs7CQkJCQkJXAorCQlkZWZhdWx0OiBfX2UgPSBfX3B1dF91c2VyX2JhZCgpOyBicmVhazsJCQlcCisJCX0JCQkJCQkJXAorCQlfX2U7CQkJCQkJCVwKKwl9KQorCisjZGVmaW5lIF9fcHV0X3VzZXIoeCxwdHIpCQkJCQkJXAorKHsJCQkJCQkJCQlcCisJbG9uZyBfX3B1X2VyciA9IDA7CQkJCQkJXAorCV9fcHV0X3VzZXJfZXJyKCh4KSwocHRyKSxfX3B1X2Vycik7CQkJCVwKKwlfX3B1X2VycjsJCQkJCQkJXAorfSkKKworI2RlZmluZSBfX3B1dF91c2VyX2Vycm9yKHgscHRyLGVycikJCQkJCVwKKyh7CQkJCQkJCQkJXAorCV9fcHV0X3VzZXJfZXJyKCh4KSwocHRyKSxlcnIpOwkJCQkJXAorCSh2b2lkKSAwOwkJCQkJCQlcCit9KQorCisjZGVmaW5lIF9fcHV0X3VzZXJfZXJyKHgscHRyLGVycikJCQkJCVwKK2RvIHsJCQkJCQkJCQlcCisJdW5zaWduZWQgbG9uZyBfX3B1X2FkZHIgPSAodW5zaWduZWQgbG9uZykocHRyKTsJCQlcCisJX190eXBlb2ZfXygqKHB0cikpIF9fcHVfdmFsID0gKHgpOwkJCQlcCisJX19jaGtfdXNlcl9wdHIocHRyKTsJCQkJCQlcCisJc3dpdGNoIChzaXplb2YoKihwdHIpKSkgewkJCQkJXAorCWNhc2UgMTogX19wdXRfdXNlcl9hc21fYnl0ZShfX3B1X3ZhbCxfX3B1X2FkZHIsZXJyKTsJYnJlYWs7CVwKKwljYXNlIDI6IF9fcHV0X3VzZXJfYXNtX2hhbGYoX19wdV92YWwsX19wdV9hZGRyLGVycik7CWJyZWFrOwlcCisJY2FzZSA0OiBfX3B1dF91c2VyX2FzbV93b3JkKF9fcHVfdmFsLF9fcHVfYWRkcixlcnIpOwlicmVhazsJXAorCWNhc2UgODoJX19wdXRfdXNlcl9hc21fZHdvcmQoX19wdV92YWwsX19wdV9hZGRyLGVycik7CWJyZWFrOwlcCisJZGVmYXVsdDogX19wdXRfdXNlcl9iYWQoKTsJCQkJCVwKKwl9CQkJCQkJCQlcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIF9fcHV0X3VzZXJfYXNtX2J5dGUoeCxfX3B1X2FkZHIsZXJyKQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkiMToJc3RyYnQJJTEsWyUyXSwjMFxuIgkJCQlcCisJIjI6XG4iCQkJCQkJCVwKKwkiCS5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIJCQlcCisJIgkuYWxpZ24JMlxuIgkJCQkJXAorCSIzOgltb3YJJTAsICUzXG4iCQkJCVwKKwkiCWIJMmJcbiIJCQkJCVwKKwkiCS5wcmV2aW91c1xuIgkJCQkJXAorCSIJLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgkJCVwKKwkiCS5hbGlnbgkzXG4iCQkJCQlcCisJIgkubG9uZwkxYiwgM2JcbiIJCQkJXAorCSIJLnByZXZpb3VzIgkJCQkJXAorCTogIityIiAoZXJyKQkJCQkJCVwKKwk6ICJyIiAoeCksICJyIiAoX19wdV9hZGRyKSwgImkiICgtRUZBVUxUKQkJXAorCTogImNjIikKKworI2lmbmRlZiBfX0FSTUVCX18KKyNkZWZpbmUgX19wdXRfdXNlcl9hc21faGFsZih4LF9fcHVfYWRkcixlcnIpCQkJXAorKHsJCQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIF9fdGVtcCA9ICh1bnNpZ25lZCBsb25nKSh4KTsJCVwKKwlfX3B1dF91c2VyX2FzbV9ieXRlKF9fdGVtcCwgX19wdV9hZGRyLCBlcnIpOwkJXAorCV9fcHV0X3VzZXJfYXNtX2J5dGUoX190ZW1wID4+IDgsIF9fcHVfYWRkciArIDEsIGVycik7CVwKK30pCisjZWxzZQorI2RlZmluZSBfX3B1dF91c2VyX2FzbV9oYWxmKHgsX19wdV9hZGRyLGVycikJCQlcCisoewkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX190ZW1wID0gKHVuc2lnbmVkIGxvbmcpKHgpOwkJXAorCV9fcHV0X3VzZXJfYXNtX2J5dGUoX190ZW1wID4+IDgsIF9fcHVfYWRkciwgZXJyKTsJXAorCV9fcHV0X3VzZXJfYXNtX2J5dGUoX190ZW1wLCBfX3B1X2FkZHIgKyAxLCBlcnIpOwlcCit9KQorI2VuZGlmCisKKyNkZWZpbmUgX19wdXRfdXNlcl9hc21fd29yZCh4LF9fcHVfYWRkcixlcnIpCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJXAorCSIxOglzdHJ0CSUxLFslMl0sIzBcbiIJCQkJXAorCSIyOlxuIgkJCQkJCQlcCisJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJXAorCSIJLmFsaWduCTJcbiIJCQkJCVwKKwkiMzoJbW92CSUwLCAlM1xuIgkJCQlcCisJIgliCTJiXG4iCQkJCQlcCisJIgkucHJldmlvdXNcbiIJCQkJCVwKKwkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCisJIgkuYWxpZ24JM1xuIgkJCQkJXAorCSIJLmxvbmcJMWIsIDNiXG4iCQkJCVwKKwkiCS5wcmV2aW91cyIJCQkJCVwKKwk6ICIrciIgKGVycikJCQkJCQlcCisJOiAiciIgKHgpLCAiciIgKF9fcHVfYWRkciksICJpIiAoLUVGQVVMVCkJCVwKKwk6ICJjYyIpCisKKyNpZm5kZWYgX19BUk1FQl9fCisjZGVmaW5lCV9fcmVnX29wZXIwCSIlUjIiCisjZGVmaW5lCV9fcmVnX29wZXIxCSIlUTIiCisjZWxzZQorI2RlZmluZQlfX3JlZ19vcGVyMAkiJVEyIgorI2RlZmluZQlfX3JlZ19vcGVyMQkiJVIyIgorI2VuZGlmCisKKyNkZWZpbmUgX19wdXRfdXNlcl9hc21fZHdvcmQoeCxfX3B1X2FkZHIsZXJyKQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCVwKKwkiMToJc3RydAkiIF9fcmVnX29wZXIxICIsIFslMV0sICM0XG4iCQlcCisJIjI6CXN0cnQJIiBfX3JlZ19vcGVyMCAiLCBbJTFdLCAjMFxuIgkJXAorCSIzOlxuIgkJCQkJCQlcCisJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJXAorCSIJLmFsaWduCTJcbiIJCQkJCVwKKwkiNDoJbW92CSUwLCAlM1xuIgkJCQlcCisJIgliCTNiXG4iCQkJCQlcCisJIgkucHJldmlvdXNcbiIJCQkJCVwKKwkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCisJIgkuYWxpZ24JM1xuIgkJCQkJXAorCSIJLmxvbmcJMWIsIDRiXG4iCQkJCVwKKwkiCS5sb25nCTJiLCA0YlxuIgkJCQlcCisJIgkucHJldmlvdXMiCQkJCQlcCisJOiAiK3IiIChlcnIpLCAiK3IiIChfX3B1X2FkZHIpCQkJCVwKKwk6ICJyIiAoeCksICJpIiAoLUVGQVVMVCkJCQkJXAorCTogImNjIikKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19hcmNoX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIF9fYXJjaF9jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19hcmNoX2NsZWFyX3VzZXIodm9pZCBfX3VzZXIgKmFkZHIsIHVuc2lnbmVkIGxvbmcgbik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBfX2FyY2hfc3RybmNweV9mcm9tX3VzZXIoY2hhciAqdG8sIGNvbnN0IGNoYXIgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIGNvdW50KTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIF9fYXJjaF9zdHJubGVuX3VzZXIoY29uc3QgY2hhciBfX3VzZXIgKnMsIGxvbmcgbik7CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3sKKwlpZiAoYWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBuKSkKKwkJbiA9IF9fYXJjaF9jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbik7CisJZWxzZSAvKiBzZWN1cml0eSBob2xlIC0gcGx1ZyBpdCAqLworCQltZW16ZXJvKHRvLCBuKTsKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisJcmV0dXJuIF9fYXJjaF9jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBjb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisJaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkKKwkJbiA9IF9fYXJjaF9jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pOworCXJldHVybiBuOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisJcmV0dXJuIF9fYXJjaF9jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pOworfQorCisjZGVmaW5lIF9fY29weV90b191c2VyX2luYXRvbWljIF9fY29weV90b191c2VyCisjZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMgX19jb3B5X2Zyb21fdXNlcgorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2xlYXJfdXNlciAodm9pZCBfX3VzZXIgKnRvLCB1bnNpZ25lZCBsb25nIG4pCit7CisJaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkKKwkJbiA9IF9fYXJjaF9jbGVhcl91c2VyKHRvLCBuKTsKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY2xlYXJfdXNlciAodm9pZCBfX3VzZXIgKnRvLCB1bnNpZ25lZCBsb25nIG4pCit7CisJcmV0dXJuIF9fYXJjaF9jbGVhcl91c2VyKHRvLCBuKTsKK30KKworc3RhdGljIGlubGluZSBsb25nIHN0cm5jcHlfZnJvbV91c2VyIChjaGFyICpkc3QsIGNvbnN0IGNoYXIgX191c2VyICpzcmMsIGxvbmcgY291bnQpCit7CisJbG9uZyByZXMgPSAtRUZBVUxUOworCWlmIChhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIHNyYywgMSkpCisJCXJlcyA9IF9fYXJjaF9zdHJuY3B5X2Zyb21fdXNlcihkc3QsIHNyYywgY291bnQpOworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgbG9uZyBfX3N0cm5jcHlfZnJvbV91c2VyIChjaGFyICpkc3QsIGNvbnN0IGNoYXIgX191c2VyICpzcmMsIGxvbmcgY291bnQpCit7CisJcmV0dXJuIF9fYXJjaF9zdHJuY3B5X2Zyb21fdXNlcihkc3QsIHNyYywgY291bnQpOworfQorCisjZGVmaW5lIHN0cmxlbl91c2VyKHMpCXN0cm5sZW5fdXNlcihzLCB+MFVMID4+IDEpCisKK3N0YXRpYyBpbmxpbmUgbG9uZyBzdHJubGVuX3VzZXIoY29uc3QgY2hhciBfX3VzZXIgKnMsIGxvbmcgbikKK3sKKwl1bnNpZ25lZCBsb25nIHJlcyA9IDA7CisKKwlpZiAoX19hZGRyX29rKHMpKQorCQlyZXMgPSBfX2FyY2hfc3Rybmxlbl91c2VyKHMsIG4pOworCisJcmV0dXJuIHJlczsKK30KKworI2VuZGlmIC8qIF9BU01BUk1fVUFDQ0VTU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdWNvbnRleHQuaCBiL2luY2x1ZGUvYXNtLWFybS91Y29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NTMxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdWNvbnRleHQuaApAQCAtMCwwICsxLDEyIEBACisjaWZuZGVmIF9BU01BUk1fVUNPTlRFWFRfSAorI2RlZmluZSBfQVNNQVJNX1VDT05URVhUX0gKKworc3RydWN0IHVjb250ZXh0IHsKKwl1bnNpZ25lZCBsb25nCSAgdWNfZmxhZ3M7CisJc3RydWN0IHVjb250ZXh0ICAqdWNfbGluazsKKwlzdGFja190CQkgIHVjX3N0YWNrOworCXN0cnVjdCBzaWdjb250ZXh0IHVjX21jb250ZXh0OworCXNpZ3NldF90CSAgdWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRlbnNpYmlsaXR5ICovCit9OworCisjZW5kaWYgLyogIV9BU01BUk1fVUNPTlRFWFRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3VuYWxpZ25lZC5oIGIvaW5jbHVkZS9hc20tYXJtL3VuYWxpZ25lZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMzljMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdW5hbGlnbmVkLmgKQEAgLTAsMCArMSwxOTEgQEAKKyNpZm5kZWYgX19BU01fQVJNX1VOQUxJR05FRF9ICisjZGVmaW5lIF9fQVNNX0FSTV9VTkFMSUdORURfSAorCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKK2V4dGVybiBpbnQgX19idWdfdW5hbGlnbmVkX3godm9pZCAqcHRyKTsKKworLyoKKyAqIFdoYXQgaXMgdGhlIG1vc3QgZWZmaWNpZW50IHdheSBvZiBsb2FkaW5nL3N0b3JpbmcgYW4gdW5hbGlnbmVkIHZhbHVlPworICoKKyAqIFRoYXQgaXMgdGhlIHN1YmplY3Qgb2YgdGhpcyBmaWxlLiAgRWZmaWNpZW5jeSBoZXJlIGlzIGRlZmluZWQgYXMKKyAqIG1pbmltdW0gY29kZSBzaXplIHdpdGggbWluaW11bSByZWdpc3RlciB1c2FnZSBmb3IgdGhlIGNvbW1vbiBjYXNlcy4KKyAqIEl0IGlzIGN1cnJlbnRseSBub3QgYmVsaWV2ZWQgdGhhdCBsb25nIGxvbmdzIGFyZSBjb21tb24sIHNvIHdlCisgKiB0cmFkZSBlZmZpY2llbmN5IGZvciB0aGUgY2hhcnMsIHNob3J0cyBhbmQgbG9uZ3MgYWdhaW5zdCB0aGUgbG9uZworICogbG9uZ3MuCisgKgorICogQ3VycmVudCBzdGF0cyB3aXRoIGdjYyAyLjcuMi4yIGZvciB0aGVzZSBmdW5jdGlvbnM6CisgKgorICoJcHRyc2l6ZQlnZXQ6CWNvZGUJcmVncwlwdXQ6CWNvZGUJcmVncworICoJMQkJMQkxCQkxCTIKKyAqCTIJCTMJMgkJMwkyCisgKgk0CQk3CTMJCTcJMworICoJOAkJMjAJNgkJMTYJNgorICoKKyAqIGdjYyAyLjk1LjEgc2VlbXMgdG8gY29kZSBkaWZmZXJlbnRseToKKyAqCisgKglwdHJzaXplCWdldDoJY29kZQlyZWdzCXB1dDoJY29kZQlyZWdzCisgKgkxCQkxCTEJCTEJMgorICoJMgkJMwkyCQkzCTIKKyAqCTQJCTcJNAkJNwk0CisgKgk4CQkxOQk4CQkxNQk2CisgKgorICogd2hpY2ggbWF5IG9yIG1heSBub3QgYmUgbW9yZSBlZmZpY2llbnQgKGRlcGVuZGluZyB1cG9uIHdoZXRoZXIKKyAqIHlvdSBjYW4gYWZmb3JkIHRoZSBleHRyYSByZWdpc3RlcnMpLiAgSG9wZWZ1bGx5IHRoZSBnY2MgMi45NQorICogaXMgaW50ZWxpZ2VudCBlbm91Z2ggdG8gZGVjaWRlIGlmIGl0IGlzIGJldHRlciB0byB1c2UgdGhlCisgKiBleHRyYSByZWdpc3RlciwgYnV0IGV2aWRlbmNlIHNvIGZhciBzZWVtcyB0byBzdWdnZXN0IG90aGVyd2lzZS4KKyAqCisgKiBVbmZvcnR1bmF0ZWx5LCBnY2MgaXMgbm90IGFibGUgdG8gb3B0aW1pc2UgdGhlIGhpZ2ggd29yZAorICogb3V0IG9mIGxvbmcgbG9uZyA+PiAzMiwgb3IgdGhlIGxvdyB3b3JkIGZyb20gbG9uZyBsb25nIDw8IDMyCisgKi8KKworI2RlZmluZSBfX2dldF91bmFsaWduZWRfMl9sZShfX3ApCQkJCQlcCisJKF9fcFswXSB8IF9fcFsxXSA8PCA4KQorCisjZGVmaW5lIF9fZ2V0X3VuYWxpZ25lZF8yX2JlKF9fcCkJCQkJCVwKKwkoX19wWzBdIDw8IDggfCBfX3BbMV0pCisKKyNkZWZpbmUgX19nZXRfdW5hbGlnbmVkXzRfbGUoX19wKQkJCQkJXAorCShfX3BbMF0gfCBfX3BbMV0gPDwgOCB8IF9fcFsyXSA8PCAxNiB8IF9fcFszXSA8PCAyNCkKKworI2RlZmluZSBfX2dldF91bmFsaWduZWRfNF9iZShfX3ApCQkJCQlcCisJKF9fcFswXSA8PCAyNCB8IF9fcFsxXSA8PCAxNiB8IF9fcFsyXSA8PCA4IHwgX19wWzNdKQorCisjZGVmaW5lIF9fZ2V0X3VuYWxpZ25lZF9sZShwdHIpCQkJCQlcCisJKHsJCQkJCQkJXAorCQlfX3R5cGVvZl9fKCoocHRyKSkgX192OwkJCQlcCisJCV9fdTggKl9fcCA9IChfX3U4ICopKHB0cik7CQkJXAorCQlzd2l0Y2ggKHNpemVvZigqKHB0cikpKSB7CQkJXAorCQljYXNlIDE6CV9fdiA9ICoocHRyKTsJCQlicmVhazsJXAorCQljYXNlIDI6IF9fdiA9IF9fZ2V0X3VuYWxpZ25lZF8yX2xlKF9fcCk7CWJyZWFrOwlcCisJCWNhc2UgNDogX192ID0gX19nZXRfdW5hbGlnbmVkXzRfbGUoX19wKTsJYnJlYWs7CVwKKwkJY2FzZSA4OiB7CQkJCQlcCisJCQkJdW5zaWduZWQgaW50IF9fdjEsIF9fdjI7CVwKKwkJCQlfX3YyID0gX19nZXRfdW5hbGlnbmVkXzRfbGUoKF9fcCs0KSk7IFwKKwkJCQlfX3YxID0gX19nZXRfdW5hbGlnbmVkXzRfbGUoX19wKTsJXAorCQkJCV9fdiA9ICgodW5zaWduZWQgbG9uZyBsb25nKV9fdjIgPDwgMzIgfCBfX3YxKTsJXAorCQkJfQkJCQkJXAorCQkJYnJlYWs7CQkJCQlcCisJCWRlZmF1bHQ6IF9fdiA9IF9fYnVnX3VuYWxpZ25lZF94KF9fcCk7CWJyZWFrOwlcCisJCX0JCQkJCQlcCisJCV9fdjsJCQkJCQlcCisJfSkKKworI2RlZmluZSBfX2dldF91bmFsaWduZWRfYmUocHRyKQkJCQkJXAorCSh7CQkJCQkJCVwKKwkJX190eXBlb2ZfXygqKHB0cikpIF9fdjsJCQkJXAorCQlfX3U4ICpfX3AgPSAoX191OCAqKShwdHIpOwkJCVwKKwkJc3dpdGNoIChzaXplb2YoKihwdHIpKSkgewkJCVwKKwkJY2FzZSAxOglfX3YgPSAqKHB0cik7CQkJYnJlYWs7CVwKKwkJY2FzZSAyOiBfX3YgPSBfX2dldF91bmFsaWduZWRfMl9iZShfX3ApOwlicmVhazsJXAorCQljYXNlIDQ6IF9fdiA9IF9fZ2V0X3VuYWxpZ25lZF80X2JlKF9fcCk7CWJyZWFrOwlcCisJCWNhc2UgODogewkJCQkJXAorCQkJCXVuc2lnbmVkIGludCBfX3YxLCBfX3YyOwlcCisJCQkJX192MiA9IF9fZ2V0X3VuYWxpZ25lZF80X2JlKF9fcCk7IFwKKwkJCQlfX3YxID0gX19nZXRfdW5hbGlnbmVkXzRfYmUoKF9fcCs0KSk7CVwKKwkJCQlfX3YgPSAoKHVuc2lnbmVkIGxvbmcgbG9uZylfX3YyIDw8IDMyIHwgX192MSk7CVwKKwkJCX0JCQkJCVwKKwkJCWJyZWFrOwkJCQkJXAorCQlkZWZhdWx0OiBfX3YgPSBfX2J1Z191bmFsaWduZWRfeChfX3ApOwlicmVhazsJXAorCQl9CQkJCQkJXAorCQlfX3Y7CQkJCQkJXAorCX0pCisKKworc3RhdGljIGlubGluZSB2b2lkIF9fcHV0X3VuYWxpZ25lZF8yX2xlKF9fdTMyIF9fdiwgcmVnaXN0ZXIgX191OCAqX19wKQoreworCSpfX3ArKyA9IF9fdjsKKwkqX19wKysgPSBfX3YgPj4gODsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fcHV0X3VuYWxpZ25lZF8yX2JlKF9fdTMyIF9fdiwgcmVnaXN0ZXIgX191OCAqX19wKQoreworCSpfX3ArKyA9IF9fdiA+PiA4OworCSpfX3ArKyA9IF9fdjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fcHV0X3VuYWxpZ25lZF80X2xlKF9fdTMyIF9fdiwgcmVnaXN0ZXIgX191OCAqX19wKQoreworCV9fcHV0X3VuYWxpZ25lZF8yX2xlKF9fdiA+PiAxNiwgX19wICsgMik7CisJX19wdXRfdW5hbGlnbmVkXzJfbGUoX192LCBfX3ApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19wdXRfdW5hbGlnbmVkXzRfYmUoX191MzIgX192LCByZWdpc3RlciBfX3U4ICpfX3ApCit7CisJX19wdXRfdW5hbGlnbmVkXzJfYmUoX192ID4+IDE2LCBfX3ApOworCV9fcHV0X3VuYWxpZ25lZF8yX2JlKF9fdiwgX19wICsgMik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3B1dF91bmFsaWduZWRfOF9sZShjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgX192LCByZWdpc3RlciBfX3U4ICpfX3ApCit7CisJLyoKKwkgKiB0cmFkZW9mZjogOCBieXRlcyBvZiBzdGFjayBmb3IgYWxsIHVuYWxpZ25lZCBwdXRzICgyCisJICogaW5zdHJ1Y3Rpb25zKSwgb3IgYW4gZXh0cmEgcmVnaXN0ZXIgaW4gdGhlIGxvbmcgbG9uZworCSAqIGNhc2UgLSBnbyBmb3IgdGhlIGV4dHJhIHJlZ2lzdGVyLgorCSAqLworCV9fcHV0X3VuYWxpZ25lZF80X2xlKF9fdiA+PiAzMiwgX19wKzQpOworCV9fcHV0X3VuYWxpZ25lZF80X2xlKF9fdiwgX19wKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fcHV0X3VuYWxpZ25lZF84X2JlKGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YsIHJlZ2lzdGVyIF9fdTggKl9fcCkKK3sKKwkvKgorCSAqIHRyYWRlb2ZmOiA4IGJ5dGVzIG9mIHN0YWNrIGZvciBhbGwgdW5hbGlnbmVkIHB1dHMgKDIKKwkgKiBpbnN0cnVjdGlvbnMpLCBvciBhbiBleHRyYSByZWdpc3RlciBpbiB0aGUgbG9uZyBsb25nCisJICogY2FzZSAtIGdvIGZvciB0aGUgZXh0cmEgcmVnaXN0ZXIuCisJICovCisJX19wdXRfdW5hbGlnbmVkXzRfYmUoX192ID4+IDMyLCBfX3ApOworCV9fcHV0X3VuYWxpZ25lZF80X2JlKF9fdiwgX19wKzQpOworfQorCisvKgorICogVHJ5IHRvIHN0b3JlIGFuIHVuYWxpZ25lZCB2YWx1ZSBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZS4KKyAqLworI2RlZmluZSBfX3B1dF91bmFsaWduZWRfbGUodmFsLHB0cikJCQkJCVwKKwkoewkJCQkJCQlcCisJCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQlcCisJCWNhc2UgMToJCQkJCQlcCisJCQkqKHB0cikgPSAodmFsKTsJCQkJXAorCQkJYnJlYWs7CQkJCQlcCisJCWNhc2UgMjogX19wdXRfdW5hbGlnbmVkXzJfbGUoKHZhbCksKF9fdTggKikocHRyKSk7CVwKKwkJCWJyZWFrOwkJCQkJXAorCQljYXNlIDQ6CV9fcHV0X3VuYWxpZ25lZF80X2xlKCh2YWwpLChfX3U4ICopKHB0cikpOwlcCisJCQlicmVhazsJCQkJCVwKKwkJY2FzZSA4OglfX3B1dF91bmFsaWduZWRfOF9sZSgodmFsKSwoX191OCAqKShwdHIpKTsgXAorCQkJYnJlYWs7CQkJCQlcCisJCWRlZmF1bHQ6IF9fYnVnX3VuYWxpZ25lZF94KHB0cik7CQlcCisJCQlicmVhazsJCQkJCVwKKwkJfQkJCQkJCVwKKwkJKHZvaWQpIDA7CQkJCQlcCisJfSkKKworI2RlZmluZSBfX3B1dF91bmFsaWduZWRfYmUodmFsLHB0cikJCQkJCVwKKwkoewkJCQkJCQlcCisJCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQlcCisJCWNhc2UgMToJCQkJCQlcCisJCQkqKHB0cikgPSAodmFsKTsJCQkJXAorCQkJYnJlYWs7CQkJCQlcCisJCWNhc2UgMjogX19wdXRfdW5hbGlnbmVkXzJfYmUoKHZhbCksKF9fdTggKikocHRyKSk7CVwKKwkJCWJyZWFrOwkJCQkJXAorCQljYXNlIDQ6CV9fcHV0X3VuYWxpZ25lZF80X2JlKCh2YWwpLChfX3U4ICopKHB0cikpOwlcCisJCQlicmVhazsJCQkJCVwKKwkJY2FzZSA4OglfX3B1dF91bmFsaWduZWRfOF9iZSgodmFsKSwoX191OCAqKShwdHIpKTsgXAorCQkJYnJlYWs7CQkJCQlcCisJCWRlZmF1bHQ6IF9fYnVnX3VuYWxpZ25lZF94KHB0cik7CQlcCisJCQlicmVhazsJCQkJCVwKKwkJfQkJCQkJCVwKKwkJKHZvaWQpIDA7CQkJCQlcCisJfSkKKworLyoKKyAqIFNlbGVjdCBlbmRpYW5uZXNzCisgKi8KKyNpZm5kZWYgX19BUk1FQl9fCisjZGVmaW5lIGdldF91bmFsaWduZWQJX19nZXRfdW5hbGlnbmVkX2xlCisjZGVmaW5lIHB1dF91bmFsaWduZWQJX19wdXRfdW5hbGlnbmVkX2xlCisjZWxzZQorI2RlZmluZSBnZXRfdW5hbGlnbmVkCV9fZ2V0X3VuYWxpZ25lZF9iZQorI2RlZmluZSBwdXRfdW5hbGlnbmVkCV9fcHV0X3VuYWxpZ25lZF9iZQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3VuaXN0ZC5oIGIvaW5jbHVkZS9hc20tYXJtL3VuaXN0ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExOWVjMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdW5pc3RkLmgKQEAgLTAsMCArMSw1NTggQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3VuaXN0ZC5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IFJ1c3NlbGwgS2luZworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUGxlYXNlIGZvcndhcmQgX2FsbF8gY2hhbmdlcyB0byB0aGlzIGZpbGUgdG8gcm1rQGFybS5saW51eC5vcmcudWssCisgKiBubyBtYXR0ZXIgd2hhdCB0aGUgY2hhbmdlIGlzLiAgVGhhbmtzIQorICovCisjaWZuZGVmIF9fQVNNX0FSTV9VTklTVERfSAorI2RlZmluZSBfX0FTTV9BUk1fVU5JU1REX0gKKworI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKworI2lmIGRlZmluZWQoX190aHVtYl9fKQorI2RlZmluZSBfX05SX1NZU0NBTExfQkFTRQkwCisjZWxzZQorI2RlZmluZSBfX05SX1NZU0NBTExfQkFTRQkweDkwMDAwMAorI2VuZGlmCisKKy8qCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHN5c3RlbSBjYWxsIG51bWJlcnMuCisgKi8KKworI2RlZmluZSBfX05SX3Jlc3RhcnRfc3lzY2FsbAkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgMCkKKyNkZWZpbmUgX19OUl9leGl0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgMSkKKyNkZWZpbmUgX19OUl9mb3JrCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgMikKKyNkZWZpbmUgX19OUl9yZWFkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgMykKKyNkZWZpbmUgX19OUl93cml0ZQkJCShfX05SX1NZU0NBTExfQkFTRSsgIDQpCisjZGVmaW5lIF9fTlJfb3BlbgkJCShfX05SX1NZU0NBTExfQkFTRSsgIDUpCisjZGVmaW5lIF9fTlJfY2xvc2UJCQkoX19OUl9TWVNDQUxMX0JBU0UrICA2KQorCQkJCQkvKiA3IHdhcyBzeXNfd2FpdHBpZCAqLworI2RlZmluZSBfX05SX2NyZWF0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgOCkKKyNkZWZpbmUgX19OUl9saW5rCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAgOSkKKyNkZWZpbmUgX19OUl91bmxpbmsJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDEwKQorI2RlZmluZSBfX05SX2V4ZWN2ZQkJCShfX05SX1NZU0NBTExfQkFTRSsgMTEpCisjZGVmaW5lIF9fTlJfY2hkaXIJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDEyKQorI2RlZmluZSBfX05SX3RpbWUJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDEzKQorI2RlZmluZSBfX05SX21rbm9kCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAxNCkKKyNkZWZpbmUgX19OUl9jaG1vZAkJCShfX05SX1NZU0NBTExfQkFTRSsgMTUpCisjZGVmaW5lIF9fTlJfbGNob3duCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAxNikKKwkJCQkJLyogMTcgd2FzIHN5c19icmVhayAqLworCQkJCQkvKiAxOCB3YXMgc3lzX3N0YXQgKi8KKyNkZWZpbmUgX19OUl9sc2VlawkJCShfX05SX1NZU0NBTExfQkFTRSsgMTkpCisjZGVmaW5lIF9fTlJfZ2V0cGlkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAyMCkKKyNkZWZpbmUgX19OUl9tb3VudAkJCShfX05SX1NZU0NBTExfQkFTRSsgMjEpCisjZGVmaW5lIF9fTlJfdW1vdW50CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAyMikKKyNkZWZpbmUgX19OUl9zZXR1aWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDIzKQorI2RlZmluZSBfX05SX2dldHVpZAkJCShfX05SX1NZU0NBTExfQkFTRSsgMjQpCisjZGVmaW5lIF9fTlJfc3RpbWUJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDI1KQorI2RlZmluZSBfX05SX3B0cmFjZQkJCShfX05SX1NZU0NBTExfQkFTRSsgMjYpCisjZGVmaW5lIF9fTlJfYWxhcm0JCQkoX19OUl9TWVNDQUxMX0JBU0UrIDI3KQorCQkJCQkvKiAyOCB3YXMgc3lzX2ZzdGF0ICovCisjZGVmaW5lIF9fTlJfcGF1c2UJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDI5KQorI2RlZmluZSBfX05SX3V0aW1lCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAzMCkKKwkJCQkJLyogMzEgd2FzIHN5c19zdHR5ICovCisJCQkJCS8qIDMyIHdhcyBzeXNfZ3R0eSAqLworI2RlZmluZSBfX05SX2FjY2VzcwkJCShfX05SX1NZU0NBTExfQkFTRSsgMzMpCisjZGVmaW5lIF9fTlJfbmljZQkJCShfX05SX1NZU0NBTExfQkFTRSsgMzQpCisJCQkJCS8qIDM1IHdhcyBzeXNfZnRpbWUgKi8KKyNkZWZpbmUgX19OUl9zeW5jCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAzNikKKyNkZWZpbmUgX19OUl9raWxsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAzNykKKyNkZWZpbmUgX19OUl9yZW5hbWUJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDM4KQorI2RlZmluZSBfX05SX21rZGlyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyAzOSkKKyNkZWZpbmUgX19OUl9ybWRpcgkJCShfX05SX1NZU0NBTExfQkFTRSsgNDApCisjZGVmaW5lIF9fTlJfZHVwCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA0MSkKKyNkZWZpbmUgX19OUl9waXBlCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA0MikKKyNkZWZpbmUgX19OUl90aW1lcwkJCShfX05SX1NZU0NBTExfQkFTRSsgNDMpCisJCQkJCS8qIDQ0IHdhcyBzeXNfcHJvZiAqLworI2RlZmluZSBfX05SX2JyawkJCShfX05SX1NZU0NBTExfQkFTRSsgNDUpCisjZGVmaW5lIF9fTlJfc2V0Z2lkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA0NikKKyNkZWZpbmUgX19OUl9nZXRnaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDQ3KQorCQkJCQkvKiA0OCB3YXMgc3lzX3NpZ25hbCAqLworI2RlZmluZSBfX05SX2dldGV1aWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDQ5KQorI2RlZmluZSBfX05SX2dldGVnaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDUwKQorI2RlZmluZSBfX05SX2FjY3QJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDUxKQorI2RlZmluZSBfX05SX3Vtb3VudDIJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDUyKQorCQkJCQkvKiA1MyB3YXMgc3lzX2xvY2sgKi8KKyNkZWZpbmUgX19OUl9pb2N0bAkJCShfX05SX1NZU0NBTExfQkFTRSsgNTQpCisjZGVmaW5lIF9fTlJfZmNudGwJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDU1KQorCQkJCQkvKiA1NiB3YXMgc3lzX21weCAqLworI2RlZmluZSBfX05SX3NldHBnaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDU3KQorCQkJCQkvKiA1OCB3YXMgc3lzX3VsaW1pdCAqLworCQkJCQkvKiA1OSB3YXMgc3lzX29sZHVuYW1lICovCisjZGVmaW5lIF9fTlJfdW1hc2sJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDYwKQorI2RlZmluZSBfX05SX2Nocm9vdAkJCShfX05SX1NZU0NBTExfQkFTRSsgNjEpCisjZGVmaW5lIF9fTlJfdXN0YXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDYyKQorI2RlZmluZSBfX05SX2R1cDIJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDYzKQorI2RlZmluZSBfX05SX2dldHBwaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDY0KQorI2RlZmluZSBfX05SX2dldHBncnAJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDY1KQorI2RlZmluZSBfX05SX3NldHNpZAkJCShfX05SX1NZU0NBTExfQkFTRSsgNjYpCisjZGVmaW5lIF9fTlJfc2lnYWN0aW9uCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA2NykKKwkJCQkJLyogNjggd2FzIHN5c19zZ2V0bWFzayAqLworCQkJCQkvKiA2OSB3YXMgc3lzX3NzZXRtYXNrICovCisjZGVmaW5lIF9fTlJfc2V0cmV1aWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDcwKQorI2RlZmluZSBfX05SX3NldHJlZ2lkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA3MSkKKyNkZWZpbmUgX19OUl9zaWdzdXNwZW5kCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA3MikKKyNkZWZpbmUgX19OUl9zaWdwZW5kaW5nCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA3MykKKyNkZWZpbmUgX19OUl9zZXRob3N0bmFtZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA3NCkKKyNkZWZpbmUgX19OUl9zZXRybGltaXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDc1KQorI2RlZmluZSBfX05SX2dldHJsaW1pdAkJCShfX05SX1NZU0NBTExfQkFTRSsgNzYpCS8qIEJhY2sgY29tcGF0IDJHQiBsaW1pdGVkIHJsaW1pdCAqLworI2RlZmluZSBfX05SX2dldHJ1c2FnZQkJCShfX05SX1NZU0NBTExfQkFTRSsgNzcpCisjZGVmaW5lIF9fTlJfZ2V0dGltZW9mZGF5CQkoX19OUl9TWVNDQUxMX0JBU0UrIDc4KQorI2RlZmluZSBfX05SX3NldHRpbWVvZmRheQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA3OSkKKyNkZWZpbmUgX19OUl9nZXRncm91cHMJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDgwKQorI2RlZmluZSBfX05SX3NldGdyb3VwcwkJCShfX05SX1NZU0NBTExfQkFTRSsgODEpCisjZGVmaW5lIF9fTlJfc2VsZWN0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA4MikKKyNkZWZpbmUgX19OUl9zeW1saW5rCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA4MykKKwkJCQkJLyogODQgd2FzIHN5c19sc3RhdCAqLworI2RlZmluZSBfX05SX3JlYWRsaW5rCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA4NSkKKyNkZWZpbmUgX19OUl91c2VsaWIJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDg2KQorI2RlZmluZSBfX05SX3N3YXBvbgkJCShfX05SX1NZU0NBTExfQkFTRSsgODcpCisjZGVmaW5lIF9fTlJfcmVib290CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA4OCkKKyNkZWZpbmUgX19OUl9yZWFkZGlyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA4OSkKKyNkZWZpbmUgX19OUl9tbWFwCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA5MCkKKyNkZWZpbmUgX19OUl9tdW5tYXAJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDkxKQorI2RlZmluZSBfX05SX3RydW5jYXRlCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA5MikKKyNkZWZpbmUgX19OUl9mdHJ1bmNhdGUJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDkzKQorI2RlZmluZSBfX05SX2ZjaG1vZAkJCShfX05SX1NZU0NBTExfQkFTRSsgOTQpCisjZGVmaW5lIF9fTlJfZmNob3duCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA5NSkKKyNkZWZpbmUgX19OUl9nZXRwcmlvcml0eQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA5NikKKyNkZWZpbmUgX19OUl9zZXRwcmlvcml0eQkJKF9fTlJfU1lTQ0FMTF9CQVNFKyA5NykKKwkJCQkJLyogOTggd2FzIHN5c19wcm9maWwgKi8KKyNkZWZpbmUgX19OUl9zdGF0ZnMJCQkoX19OUl9TWVNDQUxMX0JBU0UrIDk5KQorI2RlZmluZSBfX05SX2ZzdGF0ZnMJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTAwKQorCQkJCQkvKiAxMDEgd2FzIHN5c19pb3Blcm0gKi8KKyNkZWZpbmUgX19OUl9zb2NrZXRjYWxsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEwMikKKyNkZWZpbmUgX19OUl9zeXNsb2cJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTAzKQorI2RlZmluZSBfX05SX3NldGl0aW1lcgkJCShfX05SX1NZU0NBTExfQkFTRSsxMDQpCisjZGVmaW5lIF9fTlJfZ2V0aXRpbWVyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEwNSkKKyNkZWZpbmUgX19OUl9zdGF0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEwNikKKyNkZWZpbmUgX19OUl9sc3RhdAkJCShfX05SX1NZU0NBTExfQkFTRSsxMDcpCisjZGVmaW5lIF9fTlJfZnN0YXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTA4KQorCQkJCQkvKiAxMDkgd2FzIHN5c191bmFtZSAqLworCQkJCQkvKiAxMTAgd2FzIHN5c19pb3BsICovCisjZGVmaW5lIF9fTlJfdmhhbmd1cAkJCShfX05SX1NZU0NBTExfQkFTRSsxMTEpCisJCQkJCS8qIDExMiB3YXMgc3lzX2lkbGUgKi8KKyNkZWZpbmUgX19OUl9zeXNjYWxsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzExMykgLyogc3lzY2FsbCB0byBjYWxsIGEgc3lzY2FsbCEgKi8KKyNkZWZpbmUgX19OUl93YWl0NAkJCShfX05SX1NZU0NBTExfQkFTRSsxMTQpCisjZGVmaW5lIF9fTlJfc3dhcG9mZgkJCShfX05SX1NZU0NBTExfQkFTRSsxMTUpCisjZGVmaW5lIF9fTlJfc3lzaW5mbwkJCShfX05SX1NZU0NBTExfQkFTRSsxMTYpCisjZGVmaW5lIF9fTlJfaXBjCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzExNykKKyNkZWZpbmUgX19OUl9mc3luYwkJCShfX05SX1NZU0NBTExfQkFTRSsxMTgpCisjZGVmaW5lIF9fTlJfc2lncmV0dXJuCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzExOSkKKyNkZWZpbmUgX19OUl9jbG9uZQkJCShfX05SX1NZU0NBTExfQkFTRSsxMjApCisjZGVmaW5lIF9fTlJfc2V0ZG9tYWlubmFtZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEyMSkKKyNkZWZpbmUgX19OUl91bmFtZQkJCShfX05SX1NZU0NBTExfQkFTRSsxMjIpCisJCQkJCS8qIDEyMyB3YXMgc3lzX21vZGlmeV9sZHQgKi8KKyNkZWZpbmUgX19OUl9hZGp0aW1leAkJCShfX05SX1NZU0NBTExfQkFTRSsxMjQpCisjZGVmaW5lIF9fTlJfbXByb3RlY3QJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTI1KQorI2RlZmluZSBfX05SX3NpZ3Byb2NtYXNrCQkoX19OUl9TWVNDQUxMX0JBU0UrMTI2KQorCQkJCQkvKiAxMjcgd2FzIHN5c19jcmVhdGVfbW9kdWxlICovCisjZGVmaW5lIF9fTlJfaW5pdF9tb2R1bGUJCShfX05SX1NZU0NBTExfQkFTRSsxMjgpCisjZGVmaW5lIF9fTlJfZGVsZXRlX21vZHVsZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEyOSkKKwkJCQkJLyogMTMwIHdhcyBzeXNfZ2V0X2tlcm5lbF9zeW1zICovCisjZGVmaW5lIF9fTlJfcXVvdGFjdGwJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTMxKQorI2RlZmluZSBfX05SX2dldHBnaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTMyKQorI2RlZmluZSBfX05SX2ZjaGRpcgkJCShfX05SX1NZU0NBTExfQkFTRSsxMzMpCisjZGVmaW5lIF9fTlJfYmRmbHVzaAkJCShfX05SX1NZU0NBTExfQkFTRSsxMzQpCisjZGVmaW5lIF9fTlJfc3lzZnMJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTM1KQorI2RlZmluZSBfX05SX3BlcnNvbmFsaXR5CQkoX19OUl9TWVNDQUxMX0JBU0UrMTM2KQorCQkJCQkvKiAxMzcgd2FzIHN5c19hZnNfc3lzY2FsbCAqLworI2RlZmluZSBfX05SX3NldGZzdWlkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzEzOCkKKyNkZWZpbmUgX19OUl9zZXRmc2dpZAkJCShfX05SX1NZU0NBTExfQkFTRSsxMzkpCisjZGVmaW5lIF9fTlJfX2xsc2VlawkJCShfX05SX1NZU0NBTExfQkFTRSsxNDApCisjZGVmaW5lIF9fTlJfZ2V0ZGVudHMJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTQxKQorI2RlZmluZSBfX05SX19uZXdzZWxlY3QJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTQyKQorI2RlZmluZSBfX05SX2Zsb2NrCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE0MykKKyNkZWZpbmUgX19OUl9tc3luYwkJCShfX05SX1NZU0NBTExfQkFTRSsxNDQpCisjZGVmaW5lIF9fTlJfcmVhZHYJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTQ1KQorI2RlZmluZSBfX05SX3dyaXRldgkJCShfX05SX1NZU0NBTExfQkFTRSsxNDYpCisjZGVmaW5lIF9fTlJfZ2V0c2lkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE0NykKKyNkZWZpbmUgX19OUl9mZGF0YXN5bmMJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTQ4KQorI2RlZmluZSBfX05SX19zeXNjdGwJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTQ5KQorI2RlZmluZSBfX05SX21sb2NrCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE1MCkKKyNkZWZpbmUgX19OUl9tdW5sb2NrCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE1MSkKKyNkZWZpbmUgX19OUl9tbG9ja2FsbAkJCShfX05SX1NZU0NBTExfQkFTRSsxNTIpCisjZGVmaW5lIF9fTlJfbXVubG9ja2FsbAkJCShfX05SX1NZU0NBTExfQkFTRSsxNTMpCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0cGFyYW0JCShfX05SX1NZU0NBTExfQkFTRSsxNTQpCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW0JCShfX05SX1NZU0NBTExfQkFTRSsxNTUpCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyCQkoX19OUl9TWVNDQUxMX0JBU0UrMTU2KQorI2RlZmluZSBfX05SX3NjaGVkX2dldHNjaGVkdWxlcgkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE1NykKKyNkZWZpbmUgX19OUl9zY2hlZF95aWVsZAkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE1OCkKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4CShfX05SX1NZU0NBTExfQkFTRSsxNTkpCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbgkoX19OUl9TWVNDQUxMX0JBU0UrMTYwKQorI2RlZmluZSBfX05SX3NjaGVkX3JyX2dldF9pbnRlcnZhbAkoX19OUl9TWVNDQUxMX0JBU0UrMTYxKQorI2RlZmluZSBfX05SX25hbm9zbGVlcAkJCShfX05SX1NZU0NBTExfQkFTRSsxNjIpCisjZGVmaW5lIF9fTlJfbXJlbWFwCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE2MykKKyNkZWZpbmUgX19OUl9zZXRyZXN1aWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTY0KQorI2RlZmluZSBfX05SX2dldHJlc3VpZAkJCShfX05SX1NZU0NBTExfQkFTRSsxNjUpCisJCQkJCS8qIDE2NiB3YXMgc3lzX3ZtODYgKi8KKwkJCQkJLyogMTY3IHdhcyBzeXNfcXVlcnlfbW9kdWxlICovCisjZGVmaW5lIF9fTlJfcG9sbAkJCShfX05SX1NZU0NBTExfQkFTRSsxNjgpCisjZGVmaW5lIF9fTlJfbmZzc2VydmN0bAkJCShfX05SX1NZU0NBTExfQkFTRSsxNjkpCisjZGVmaW5lIF9fTlJfc2V0cmVzZ2lkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE3MCkKKyNkZWZpbmUgX19OUl9nZXRyZXNnaWQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTcxKQorI2RlZmluZSBfX05SX3ByY3RsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE3MikKKyNkZWZpbmUgX19OUl9ydF9zaWdyZXR1cm4JCShfX05SX1NZU0NBTExfQkFTRSsxNzMpCisjZGVmaW5lIF9fTlJfcnRfc2lnYWN0aW9uCQkoX19OUl9TWVNDQUxMX0JBU0UrMTc0KQorI2RlZmluZSBfX05SX3J0X3NpZ3Byb2NtYXNrCQkoX19OUl9TWVNDQUxMX0JBU0UrMTc1KQorI2RlZmluZSBfX05SX3J0X3NpZ3BlbmRpbmcJCShfX05SX1NZU0NBTExfQkFTRSsxNzYpCisjZGVmaW5lIF9fTlJfcnRfc2lndGltZWR3YWl0CQkoX19OUl9TWVNDQUxMX0JBU0UrMTc3KQorI2RlZmluZSBfX05SX3J0X3NpZ3F1ZXVlaW5mbwkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE3OCkKKyNkZWZpbmUgX19OUl9ydF9zaWdzdXNwZW5kCQkoX19OUl9TWVNDQUxMX0JBU0UrMTc5KQorI2RlZmluZSBfX05SX3ByZWFkNjQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTgwKQorI2RlZmluZSBfX05SX3B3cml0ZTY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE4MSkKKyNkZWZpbmUgX19OUl9jaG93bgkJCShfX05SX1NZU0NBTExfQkFTRSsxODIpCisjZGVmaW5lIF9fTlJfZ2V0Y3dkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE4MykKKyNkZWZpbmUgX19OUl9jYXBnZXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTg0KQorI2RlZmluZSBfX05SX2NhcHNldAkJCShfX05SX1NZU0NBTExfQkFTRSsxODUpCisjZGVmaW5lIF9fTlJfc2lnYWx0c3RhY2sJCShfX05SX1NZU0NBTExfQkFTRSsxODYpCisjZGVmaW5lIF9fTlJfc2VuZGZpbGUJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTg3KQorCQkJCQkvKiAxODggcmVzZXJ2ZWQgKi8KKwkJCQkJLyogMTg5IHJlc2VydmVkICovCisjZGVmaW5lIF9fTlJfdmZvcmsJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTkwKQorI2RlZmluZSBfX05SX3VnZXRybGltaXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTkxKQkvKiBTdVMgY29tcGxpYW50IGdldHJsaW1pdCAqLworI2RlZmluZSBfX05SX21tYXAyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE5MikKKyNkZWZpbmUgX19OUl90cnVuY2F0ZTY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE5MykKKyNkZWZpbmUgX19OUl9mdHJ1bmNhdGU2NAkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE5NCkKKyNkZWZpbmUgX19OUl9zdGF0NjQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTk1KQorI2RlZmluZSBfX05SX2xzdGF0NjQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTk2KQorI2RlZmluZSBfX05SX2ZzdGF0NjQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMTk3KQorI2RlZmluZSBfX05SX2xjaG93bjMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzE5OCkKKyNkZWZpbmUgX19OUl9nZXR1aWQzMgkJCShfX05SX1NZU0NBTExfQkFTRSsxOTkpCisjZGVmaW5lIF9fTlJfZ2V0Z2lkMzIJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjAwKQorI2RlZmluZSBfX05SX2dldGV1aWQzMgkJCShfX05SX1NZU0NBTExfQkFTRSsyMDEpCisjZGVmaW5lIF9fTlJfZ2V0ZWdpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIwMikKKyNkZWZpbmUgX19OUl9zZXRyZXVpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIwMykKKyNkZWZpbmUgX19OUl9zZXRyZWdpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIwNCkKKyNkZWZpbmUgX19OUl9nZXRncm91cHMzMgkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIwNSkKKyNkZWZpbmUgX19OUl9zZXRncm91cHMzMgkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIwNikKKyNkZWZpbmUgX19OUl9mY2hvd24zMgkJCShfX05SX1NZU0NBTExfQkFTRSsyMDcpCisjZGVmaW5lIF9fTlJfc2V0cmVzdWlkMzIJCShfX05SX1NZU0NBTExfQkFTRSsyMDgpCisjZGVmaW5lIF9fTlJfZ2V0cmVzdWlkMzIJCShfX05SX1NZU0NBTExfQkFTRSsyMDkpCisjZGVmaW5lIF9fTlJfc2V0cmVzZ2lkMzIJCShfX05SX1NZU0NBTExfQkFTRSsyMTApCisjZGVmaW5lIF9fTlJfZ2V0cmVzZ2lkMzIJCShfX05SX1NZU0NBTExfQkFTRSsyMTEpCisjZGVmaW5lIF9fTlJfY2hvd24zMgkJCShfX05SX1NZU0NBTExfQkFTRSsyMTIpCisjZGVmaW5lIF9fTlJfc2V0dWlkMzIJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjEzKQorI2RlZmluZSBfX05SX3NldGdpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxNCkKKyNkZWZpbmUgX19OUl9zZXRmc3VpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxNSkKKyNkZWZpbmUgX19OUl9zZXRmc2dpZDMyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxNikKKyNkZWZpbmUgX19OUl9nZXRkZW50czY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxNykKKyNkZWZpbmUgX19OUl9waXZvdF9yb290CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxOCkKKyNkZWZpbmUgX19OUl9taW5jb3JlCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIxOSkKKyNkZWZpbmUgX19OUl9tYWR2aXNlCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIyMCkKKyNkZWZpbmUgX19OUl9mY250bDY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIyMSkKKwkJCQkJLyogMjIyIGZvciB0dXggKi8KKwkJCQkJLyogMjIzIGlzIHVudXNlZCAqLworI2RlZmluZSBfX05SX2dldHRpZAkJCShfX05SX1NZU0NBTExfQkFTRSsyMjQpCisjZGVmaW5lIF9fTlJfcmVhZGFoZWFkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIyNSkKKyNkZWZpbmUgX19OUl9zZXR4YXR0cgkJCShfX05SX1NZU0NBTExfQkFTRSsyMjYpCisjZGVmaW5lIF9fTlJfbHNldHhhdHRyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIyNykKKyNkZWZpbmUgX19OUl9mc2V0eGF0dHIJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjI4KQorI2RlZmluZSBfX05SX2dldHhhdHRyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIyOSkKKyNkZWZpbmUgX19OUl9sZ2V0eGF0dHIJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjMwKQorI2RlZmluZSBfX05SX2ZnZXR4YXR0cgkJCShfX05SX1NZU0NBTExfQkFTRSsyMzEpCisjZGVmaW5lIF9fTlJfbGlzdHhhdHRyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzMikKKyNkZWZpbmUgX19OUl9sbGlzdHhhdHRyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzMykKKyNkZWZpbmUgX19OUl9mbGlzdHhhdHRyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzNCkKKyNkZWZpbmUgX19OUl9yZW1vdmV4YXR0cgkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzNSkKKyNkZWZpbmUgX19OUl9scmVtb3ZleGF0dHIJCShfX05SX1NZU0NBTExfQkFTRSsyMzYpCisjZGVmaW5lIF9fTlJfZnJlbW92ZXhhdHRyCQkoX19OUl9TWVNDQUxMX0JBU0UrMjM3KQorI2RlZmluZSBfX05SX3RraWxsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzOCkKKyNkZWZpbmUgX19OUl9zZW5kZmlsZTY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzIzOSkKKyNkZWZpbmUgX19OUl9mdXRleAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDApCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YWZmaW5pdHkJCShfX05SX1NZU0NBTExfQkFTRSsyNDEpCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHkJCShfX05SX1NZU0NBTExfQkFTRSsyNDIpCisjZGVmaW5lIF9fTlJfaW9fc2V0dXAJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQzKQorI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ0KQorI2RlZmluZSBfX05SX2lvX2dldGV2ZW50cwkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0NSkKKyNkZWZpbmUgX19OUl9pb19zdWJtaXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ2KQorI2RlZmluZSBfX05SX2lvX2NhbmNlbAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDcpCisjZGVmaW5lIF9fTlJfZXhpdF9ncm91cAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDgpCisjZGVmaW5lIF9fTlJfbG9va3VwX2Rjb29raWUJCShfX05SX1NZU0NBTExfQkFTRSsyNDkpCisjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlCQkoX19OUl9TWVNDQUxMX0JBU0UrMjUwKQorI2RlZmluZSBfX05SX2Vwb2xsX2N0bAkJCShfX05SX1NZU0NBTExfQkFTRSsyNTEpCisjZGVmaW5lIF9fTlJfZXBvbGxfd2FpdAkJCShfX05SX1NZU0NBTExfQkFTRSsyNTIpCisjZGVmaW5lIF9fTlJfcmVtYXBfZmlsZV9wYWdlcwkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI1MykKKwkJCQkJLyogMjU0IGZvciBzZXRfdGhyZWFkX2FyZWEgKi8KKwkJCQkJLyogMjU1IGZvciBnZXRfdGhyZWFkX2FyZWEgKi8KKyNkZWZpbmUgX19OUl9zZXRfdGlkX2FkZHJlc3MJCShfX05SX1NZU0NBTExfQkFTRSsyNTYpCisjZGVmaW5lIF9fTlJfdGltZXJfY3JlYXRlCQkoX19OUl9TWVNDQUxMX0JBU0UrMjU3KQorI2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUJCShfX05SX1NZU0NBTExfQkFTRSsyNTgpCisjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGltZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI1OSkKKyNkZWZpbmUgX19OUl90aW1lcl9nZXRvdmVycnVuCQkoX19OUl9TWVNDQUxMX0JBU0UrMjYwKQorI2RlZmluZSBfX05SX3RpbWVyX2RlbGV0ZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI2MSkKKyNkZWZpbmUgX19OUl9jbG9ja19zZXR0aW1lCQkoX19OUl9TWVNDQUxMX0JBU0UrMjYyKQorI2RlZmluZSBfX05SX2Nsb2NrX2dldHRpbWUJCShfX05SX1NZU0NBTExfQkFTRSsyNjMpCisjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzCQkoX19OUl9TWVNDQUxMX0JBU0UrMjY0KQorI2RlZmluZSBfX05SX2Nsb2NrX25hbm9zbGVlcAkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI2NSkKKyNkZWZpbmUgX19OUl9zdGF0ZnM2NAkJCShfX05SX1NZU0NBTExfQkFTRSsyNjYpCisjZGVmaW5lIF9fTlJfZnN0YXRmczY0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI2NykKKyNkZWZpbmUgX19OUl90Z2tpbGwJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjY4KQorI2RlZmluZSBfX05SX3V0aW1lcwkJCShfX05SX1NZU0NBTExfQkFTRSsyNjkpCisjZGVmaW5lIF9fTlJfZmFkdmlzZTY0XzY0CQkoX19OUl9TWVNDQUxMX0JBU0UrMjcwKQorI2RlZmluZSBfX05SX3BjaWNvbmZpZ19pb2Jhc2UJCShfX05SX1NZU0NBTExfQkFTRSsyNzEpCisjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3JlYWQJCShfX05SX1NZU0NBTExfQkFTRSsyNzIpCisjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3dyaXRlCQkoX19OUl9TWVNDQUxMX0JBU0UrMjczKQorI2RlZmluZSBfX05SX21xX29wZW4JCQkoX19OUl9TWVNDQUxMX0JBU0UrMjc0KQorI2RlZmluZSBfX05SX21xX3VubGluawkJCShfX05SX1NZU0NBTExfQkFTRSsyNzUpCisjZGVmaW5lIF9fTlJfbXFfdGltZWRzZW5kCQkoX19OUl9TWVNDQUxMX0JBU0UrMjc2KQorI2RlZmluZSBfX05SX21xX3RpbWVkcmVjZWl2ZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI3NykKKyNkZWZpbmUgX19OUl9tcV9ub3RpZnkJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjc4KQorI2RlZmluZSBfX05SX21xX2dldHNldGF0dHIJCShfX05SX1NZU0NBTExfQkFTRSsyNzkpCisjZGVmaW5lIF9fTlJfd2FpdGlkCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4MCkKKworI2lmIDAgLyogcmVzZXJ2ZSB0aGVzZSBmb3IgdW4tbXV4aW5nIHNvY2tldGNhbGwgKi8KKyNkZWZpbmUgX19OUl9zb2NrZXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjgxKQorI2RlZmluZSBfX05SX2JpbmQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjgyKQorI2RlZmluZSBfX05SX2Nvbm5lY3QJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjgzKQorI2RlZmluZSBfX05SX2xpc3RlbgkJCShfX05SX1NZU0NBTExfQkFTRSsyODQpCisjZGVmaW5lIF9fTlJfYWNjZXB0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4NSkKKyNkZWZpbmUgX19OUl9nZXRzb2NrbmFtZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4NikKKyNkZWZpbmUgX19OUl9nZXRwZWVybmFtZQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4NykKKyNkZWZpbmUgX19OUl9zb2NrZXRwYWlyCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4OCkKKyNkZWZpbmUgX19OUl9zZW5kCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI4OSkKKyNkZWZpbmUgX19OUl9zZW5kdG8JCQkoX19OUl9TWVNDQUxMX0JBU0UrMjkwKQorI2RlZmluZSBfX05SX3JlY3YJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjkxKQorI2RlZmluZSBfX05SX3JlY3Zmcm9tCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI5MikKKyNkZWZpbmUgX19OUl9zaHV0ZG93bgkJCShfX05SX1NZU0NBTExfQkFTRSsyOTMpCisjZGVmaW5lIF9fTlJfc2V0c29ja29wdAkJCShfX05SX1NZU0NBTExfQkFTRSsyOTQpCisjZGVmaW5lIF9fTlJfZ2V0c29ja29wdAkJCShfX05SX1NZU0NBTExfQkFTRSsyOTUpCisjZGVmaW5lIF9fTlJfc2VuZG1zZwkJCShfX05SX1NZU0NBTExfQkFTRSsyOTYpCisjZGVmaW5lIF9fTlJfcmVjdm1zZwkJCShfX05SX1NZU0NBTExfQkFTRSsyOTcpCisjZW5kaWYKKworI2lmIDAgLyogcmVzZXJ2ZSB0aGVzZSBmb3IgdW4tbXV4aW5nIGlwYyAqLworI2RlZmluZSBfX05SX3NlbW9wCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI5OCkKKyNkZWZpbmUgX19OUl9zZW1nZXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjk5KQorI2RlZmluZSBfX05SX3NlbWN0bAkJCShfX05SX1NZU0NBTExfQkFTRSszMDApCisjZGVmaW5lIF9fTlJfbXNnc25kCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzMwMSkKKyNkZWZpbmUgX19OUl9tc2dyY3YJCQkoX19OUl9TWVNDQUxMX0JBU0UrMzAyKQorI2RlZmluZSBfX05SX21zZ2dldAkJCShfX05SX1NZU0NBTExfQkFTRSszMDMpCisjZGVmaW5lIF9fTlJfbXNnY3RsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzMwNCkKKyNkZWZpbmUgX19OUl9zaG1hdAkJCShfX05SX1NZU0NBTExfQkFTRSszMDUpCisjZGVmaW5lIF9fTlJfc2htZHQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMzA2KQorI2RlZmluZSBfX05SX3NobWdldAkJCShfX05SX1NZU0NBTExfQkFTRSszMDcpCisjZGVmaW5lIF9fTlJfc2htY3RsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzMwOCkKKyNlbmRpZgorCisjZGVmaW5lIF9fTlJfYWRkX2tleQkJCShfX05SX1NZU0NBTExfQkFTRSszMDkpCisjZGVmaW5lIF9fTlJfcmVxdWVzdF9rZXkJCShfX05SX1NZU0NBTExfQkFTRSszMTApCisjZGVmaW5lIF9fTlJfa2V5Y3RsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzMxMSkKKworI2lmIDAgLyogcmVzZXJ2ZWQgZm9yIHVuLW11eGluZyBpcGMgKi8KKyNkZWZpbmUgX19OUl9zZW10aW1lZG9wCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzMxMikKKyNlbmRpZgorCisjZGVmaW5lIF9fTlJfdnNlcnZlcgkJCShfX05SX1NZU0NBTExfQkFTRSszMTMpCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIFNXSXMgYXJlIEFSTSBwcml2YXRlLgorICovCisjZGVmaW5lIF9fQVJNX05SX0JBU0UJCQkoX19OUl9TWVNDQUxMX0JBU0UrMHgwZjAwMDApCisjZGVmaW5lIF9fQVJNX05SX2JyZWFrcG9pbnQJCShfX0FSTV9OUl9CQVNFKzEpCisjZGVmaW5lIF9fQVJNX05SX2NhY2hlZmx1c2gJCShfX0FSTV9OUl9CQVNFKzIpCisjZGVmaW5lIF9fQVJNX05SX3VzcjI2CQkJKF9fQVJNX05SX0JBU0UrMykKKyNkZWZpbmUgX19BUk1fTlJfdXNyMzIJCQkoX19BUk1fTlJfQkFTRSs0KQorCisjZGVmaW5lIF9fQVJNX05SX3NldF90bHMJCShfX0FSTV9OUl9CQVNFKzB4ODAwKQorCisjZGVmaW5lIF9fc3lzMih4KSAjeAorI2RlZmluZSBfX3N5czEoeCkgX19zeXMyKHgpCisKKyNpZm5kZWYgX19zeXNjYWxsCisjaWYgZGVmaW5lZChfX3RodW1iX18pCisjZGVmaW5lIF9fc3lzY2FsbChuYW1lKQkJCQkJXAorCSJwdXNoCXtyN31cblx0IgkJCQlcCisJIm1vdglyNywgIyIgX19zeXMxKF9fTlJfIyNuYW1lKSAiXG5cdCIJXAorCSJzd2kJMFxuXHQiCQkJCQlcCisJInBvcAl7cjd9IgorI2Vsc2UKKyNkZWZpbmUgX19zeXNjYWxsKG5hbWUpICJzd2lcdCIgX19zeXMxKF9fTlJfIyNuYW1lKSAiIgorI2VuZGlmCisjZW5kaWYKKworI2RlZmluZSBfX3N5c2NhbGxfcmV0dXJuKHR5cGUsIHJlcykJCQkJCVwKK2RvIHsJCQkJCQkJCQlcCisJaWYgKCh1bnNpZ25lZCBsb25nKShyZXMpID49ICh1bnNpZ25lZCBsb25nKSgtMTI5KSkgewkJXAorCQllcnJubyA9IC0ocmVzKTsJCQkJCQlcCisJCXJlcyA9IC0xOwkJCQkJCVwKKwl9CQkJCQkJCQlcCisJcmV0dXJuICh0eXBlKSAocmVzKTsJCQkJCQlcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIF9zeXNjYWxsMCh0eXBlLG5hbWUpCQkJCQkJXAordHlwZSBuYW1lKHZvaWQpIHsJCQkJCQkJXAorICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCisgIGxvbmcgX19yZXM7CQkJCQkJCQlcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisgIF9fc3lzY2FsbChuYW1lKQkJCQkJCQlcCisJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisJOgkJCQkJCQkJXAorCTogImxyIik7CQkJCQkJCVwKKyAgX19yZXMgPSBfX3Jlc19yMDsJCQkJCQkJXAorICBfX3N5c2NhbGxfcmV0dXJuKHR5cGUsX19yZXMpOwkJCQkJCVwKK30KKworI2RlZmluZSBfc3lzY2FsbDEodHlwZSxuYW1lLHR5cGUxLGFyZzEpIAkJCQlcCit0eXBlIG5hbWUodHlwZTEgYXJnMSkgeyAJCQkJCQlcCisgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCisgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKKyAgbG9uZyBfX3JlczsJCQkJCQkJCVwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKKyAgX19zeXNjYWxsKG5hbWUpCQkJCQkJCVwKKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKKwk6ICJyIiAoX19yMCkJCQkJCQkJXAorCTogImxyIik7CQkJCQkJCVwKKyAgX19yZXMgPSBfX3Jlc19yMDsJCQkJCQkJXAorICBfX3N5c2NhbGxfcmV0dXJuKHR5cGUsX19yZXMpOwkJCQkJCVwKK30KKworI2RlZmluZSBfc3lzY2FsbDIodHlwZSxuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMikJCQlcCit0eXBlIG5hbWUodHlwZTEgYXJnMSx0eXBlMiBhcmcyKSB7CQkJCQlcCisgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCisgIHJlZ2lzdGVyIGxvbmcgX19yMSBfX2FzbV9fKCJyMSIpID0gKGxvbmcpYXJnMjsJCQlcCisgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKKyAgbG9uZyBfX3JlczsJCQkJCQkJCVwKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKKyAgX19zeXNjYWxsKG5hbWUpCQkJCQkJCVwKKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKKwk6ICJyIiAoX19yMCksInIiIChfX3IxKSAJCQkJCVwKKwk6ICJsciIpOwkJCQkJCQlcCisgIF9fcmVzID0gX19yZXNfcjA7CQkJCQkJCVwKKyAgX19zeXNjYWxsX3JldHVybih0eXBlLF9fcmVzKTsJCQkJCQlcCit9CisKKworI2RlZmluZSBfc3lzY2FsbDModHlwZSxuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMix0eXBlMyxhcmczKQkJXAordHlwZSBuYW1lKHR5cGUxIGFyZzEsdHlwZTIgYXJnMix0eXBlMyBhcmczKSB7CQkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IyIF9fYXNtX18oInIyIikgPSAobG9uZylhcmczOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAorICBsb25nIF9fcmVzOwkJCQkJCQkJXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAorICBfX3N5c2NhbGwobmFtZSkJCQkJCQkJXAorCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAorCTogInIiIChfX3IwKSwiciIgKF9fcjEpLCJyIiAoX19yMikJCQkJXAorCTogImxyIik7CQkJCQkJCVwKKyAgX19yZXMgPSBfX3Jlc19yMDsJCQkJCQkJXAorICBfX3N5c2NhbGxfcmV0dXJuKHR5cGUsX19yZXMpOwkJCQkJCVwKK30KKworCisjZGVmaW5lIF9zeXNjYWxsNCh0eXBlLG5hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyLHR5cGUzLGFyZzMsdHlwZTQsYXJnNClcCit0eXBlIG5hbWUodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMgYXJnMywgdHlwZTQgYXJnNCkgewkJXAorICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjIgX19hc21fXygicjIiKSA9IChsb25nKWFyZzM7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjMgX19hc21fXygicjMiKSA9IChsb25nKWFyZzQ7CQkJXAorICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCisgIGxvbmcgX19yZXM7CQkJCQkJCQlcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisgIF9fc3lzY2FsbChuYW1lKQkJCQkJCQlcCisJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisJOiAiciIgKF9fcjApLCJyIiAoX19yMSksInIiIChfX3IyKSwiciIgKF9fcjMpCQkJXAorCTogImxyIik7CQkJCQkJCVwKKyAgX19yZXMgPSBfX3Jlc19yMDsJCQkJCQkJXAorICBfX3N5c2NhbGxfcmV0dXJuKHR5cGUsX19yZXMpOwkJCQkJCVwKK30KKyAgCisKKyNkZWZpbmUgX3N5c2NhbGw1KHR5cGUsbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMyx0eXBlNCxhcmc0LHR5cGU1LGFyZzUpCVwKK3R5cGUgbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0LCB0eXBlNSBhcmc1KSB7CVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IyIF9fYXNtX18oInIyIikgPSAobG9uZylhcmczOwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3IzIF9fYXNtX18oInIzIikgPSAobG9uZylhcmc0OwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3I0IF9fYXNtX18oInI0IikgPSAobG9uZylhcmc1OwkJCVwKKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAorICBsb25nIF9fcmVzOwkJCQkJCQkJXAorICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAorICBfX3N5c2NhbGwobmFtZSkJCQkJCQkJXAorCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAorCTogInIiIChfX3IwKSwiciIgKF9fcjEpLCJyIiAoX19yMiksInIiIChfX3IzKSwiciIgKF9fcjQpCVwKKwk6ICJsciIpOwkJCQkJCQlcCisgIF9fcmVzID0gX19yZXNfcjA7CQkJCQkJCVwKKyAgX19zeXNjYWxsX3JldHVybih0eXBlLF9fcmVzKTsJCQkJCQlcCit9CisKKyNkZWZpbmUgX3N5c2NhbGw2KHR5cGUsbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMyx0eXBlNCxhcmc0LHR5cGU1LGFyZzUsdHlwZTYsYXJnNikJXAordHlwZSBuYW1lKHR5cGUxIGFyZzEsIHR5cGUyIGFyZzIsIHR5cGUzIGFyZzMsIHR5cGU0IGFyZzQsIHR5cGU1IGFyZzUsIHR5cGU2IGFyZzYpIHsJXAorICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjIgX19hc21fXygicjIiKSA9IChsb25nKWFyZzM7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjMgX19hc21fXygicjMiKSA9IChsb25nKWFyZzQ7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjQgX19hc21fXygicjQiKSA9IChsb25nKWFyZzU7CQkJXAorICByZWdpc3RlciBsb25nIF9fcjUgX19hc21fXygicjUiKSA9IChsb25nKWFyZzY7CQkJXAorICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCisgIGxvbmcgX19yZXM7CQkJCQkJCQlcCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisgIF9fc3lzY2FsbChuYW1lKQkJCQkJCQlcCisJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisJOiAiciIgKF9fcjApLCJyIiAoX19yMSksInIiIChfX3IyKSwiciIgKF9fcjMpLCAiciIgKF9fcjQpLCJyIiAoX19yNSkJCVwKKwk6ICJsciIpOwkJCQkJCQlcCisgIF9fcmVzID0gX19yZXNfcjA7CQkJCQkJCVwKKyAgX19zeXNjYWxsX3JldHVybih0eXBlLF9fcmVzKTsJCQkJCQlcCit9CisKKyNpZmRlZiBfX0tFUk5FTF9fCisjZGVmaW5lIF9fQVJDSF9XQU5UX0lQQ19QQVJTRV9WRVJTSU9OCisjZGVmaW5lIF9fQVJDSF9XQU5UX09MRF9SRUFERElSCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NUQVQ2NAorI2RlZmluZSBfX0FSQ0hfV0FOVF9TWVNfQUxBUk0KKyNkZWZpbmUgX19BUkNIX1dBTlRfU1lTX0dFVEhPU1ROQU1FCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NZU19QQVVTRQorI2RlZmluZSBfX0FSQ0hfV0FOVF9TWVNfVElNRQorI2RlZmluZSBfX0FSQ0hfV0FOVF9TWVNfVVRJTUUKKyNkZWZpbmUgX19BUkNIX1dBTlRfU1lTX1NPQ0tFVENBTEwKKyNkZWZpbmUgX19BUkNIX1dBTlRfU1lTX0ZBRFZJU0U2NAorI2RlZmluZSBfX0FSQ0hfV0FOVF9TWVNfR0VUUEdSUAorI2RlZmluZSBfX0FSQ0hfV0FOVF9TWVNfTExTRUVLCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NZU19OSUNFCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NZU19PTERfR0VUUkxJTUlUCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NZU19PTERVTU9VTlQKKyNkZWZpbmUgX19BUkNIX1dBTlRfU1lTX1NJR1BFTkRJTkcKKyNkZWZpbmUgX19BUkNIX1dBTlRfU1lTX1NJR1BST0NNQVNLCisjZGVmaW5lIF9fQVJDSF9XQU5UX1NZU19SVF9TSUdBQ1RJT04KKyNlbmRpZgorCisjaWZkZWYgX19LRVJORUxfU1lTQ0FMTFNfXworCisjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+CisKK2V4dGVybiBsb25nIGV4ZWN2ZShjb25zdCBjaGFyICpmaWxlLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnApOworCitzdHJ1Y3QgcHRfcmVnczsKK2FzbWxpbmthZ2UgaW50IHN5c19leGVjdmUoY2hhciAqZmlsZW5hbWVpLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnAsCisJCQlzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Cithc21saW5rYWdlIGludCBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgdW5zaWduZWQgbG9uZyBuZXdzcCwKKwkJCXN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2FzbWxpbmthZ2UgaW50IHN5c19mb3JrKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2FzbWxpbmthZ2UgaW50IHN5c192Zm9yayhzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Cithc21saW5rYWdlIGludCBzeXNfcGlwZSh1bnNpZ25lZCBsb25nICpmaWxkZXMpOworYXNtbGlua2FnZSBpbnQgc3lzX3B0cmFjZShsb25nIHJlcXVlc3QsIGxvbmcgcGlkLCBsb25nIGFkZHIsIGxvbmcgZGF0YSk7CitzdHJ1Y3Qgc2lnYWN0aW9uOworYXNtbGlua2FnZSBsb25nIHN5c19ydF9zaWdhY3Rpb24oaW50IHNpZywKKwkJCQljb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uIF9fdXNlciAqYWN0LAorCQkJCXN0cnVjdCBzaWdhY3Rpb24gX191c2VyICpvYWN0LAorCQkJCXNpemVfdCBzaWdzZXRzaXplKTsKKworI2VuZGlmCisKKy8qCisgKiAiQ29uZGl0aW9uYWwiIHN5c2NhbGxzCisgKgorICogV2hhdCB3ZSB3YW50IGlzIF9fYXR0cmlidXRlX18oKHdlYWssYWxpYXMoInN5c19uaV9zeXNjYWxsIikpKSwKKyAqIGJ1dCBpdCBkb2Vzbid0IHdvcmsgb24gYWxsIHRvb2xjaGFpbnMsIHNvIHdlIGp1c3QgZG8gaXQgYnkgaGFuZAorICovCisjZGVmaW5lIGNvbmRfc3lzY2FsbCh4KSBhc20oIi53ZWFrXHQiICN4ICJcblx0LnNldFx0IiAjeCAiLHN5c19uaV9zeXNjYWxsIikKKworI2VuZGlmIC8qIF9fQVNNX0FSTV9VTklTVERfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3VzZXIuaCBiL2luY2x1ZGUvYXNtLWFybS91c2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U4YjBmOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS91c2VyLmgKQEAgLTAsMCArMSw4NCBAQAorI2lmbmRlZiBfQVJNX1VTRVJfSAorI2RlZmluZSBfQVJNX1VTRVJfSAorCisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisvKiBDb3JlIGZpbGUgZm9ybWF0OiBUaGUgY29yZSBmaWxlIGlzIHdyaXR0ZW4gaW4gc3VjaCBhIHdheSB0aGF0IGdkYgorICAgY2FuIHVuZGVyc3RhbmQgaXQgYW5kIHByb3ZpZGUgdXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyICh1bmRlcgorICAgbGludXggd2UgdXNlIHRoZSAndHJhZC1jb3JlJyBiZmQpLiAgVGhlcmUgYXJlIHF1aXRlIGEgbnVtYmVyIG9mCisgICBvYnN0YWNsZXMgdG8gYmVpbmcgYWJsZSB0byB2aWV3IHRoZSBjb250ZW50cyBvZiB0aGUgZmxvYXRpbmcgcG9pbnQKKyAgIHJlZ2lzdGVycywgYW5kIHVudGlsIHRoZXNlIGFyZSBzb2x2ZWQgeW91IHdpbGwgbm90IGJlIGFibGUgdG8gdmlldyB0aGUKKyAgIGNvbnRlbnRzIG9mIHRoZW0uICBBY3R1YWxseSwgeW91IGNhbiByZWFkIGluIHRoZSBjb3JlIGZpbGUgYW5kIGxvb2sgYXQKKyAgIHRoZSBjb250ZW50cyBvZiB0aGUgdXNlciBzdHJ1Y3QgdG8gZmluZCBvdXQgd2hhdCB0aGUgZmxvYXRpbmcgcG9pbnQKKyAgIHJlZ2lzdGVycyBjb250YWluLgorICAgVGhlIGFjdHVhbCBmaWxlIGNvbnRlbnRzIGFyZSBhcyBmb2xsb3dzOgorICAgVVBBR0U6IDEgcGFnZSBjb25zaXN0aW5nIG9mIGEgdXNlciBzdHJ1Y3QgdGhhdCB0ZWxscyBnZGIgd2hhdCBpcyBwcmVzZW50CisgICBpbiB0aGUgZmlsZS4gIERpcmVjdGx5IGFmdGVyIHRoaXMgaXMgYSBjb3B5IG9mIHRoZSB0YXNrX3N0cnVjdCwgd2hpY2gKKyAgIGlzIGN1cnJlbnRseSBub3QgdXNlZCBieSBnZGIsIGJ1dCBpdCBtYXkgY29tZSBpbiB1c2VmdWwgYXQgc29tZSBwb2ludC4KKyAgIEFsbCBvZiB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgYXMgcGFydCBvZiB0aGUgdXBhZ2UuICBUaGUgdXBhZ2Ugc2hvdWxkCisgICBhbHdheXMgYmUgb25seSBvbmUgcGFnZS4KKyAgIERBVEE6IFRoZSBkYXRhIGFyZWEgaXMgc3RvcmVkLiAgV2UgdXNlIGN1cnJlbnQtPmVuZF90ZXh0IHRvCisgICBjdXJyZW50LT5icmsgdG8gcGljayB1cCBhbGwgb2YgdGhlIHVzZXIgdmFyaWFibGVzLCBwbHVzIGFueSBtZW1vcnkKKyAgIHRoYXQgbWF5IGhhdmUgYmVlbiBtYWxsb2NlZC4gIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBkZXRlcm1pbmUgaWYgYSBwYWdlCisgICBpcyBkZW1hbmQtemVybyBvciBpZiBhIHBhZ2UgaXMgdG90YWxseSB1bnVzZWQsIHdlIGp1c3QgY292ZXIgdGhlIGVudGlyZQorICAgcmFuZ2UuICBBbGwgb2YgdGhlIGFkZHJlc3NlcyBhcmUgcm91bmRlZCBpbiBzdWNoIGEgd2F5IHRoYXQgYW4gaW50ZWdyYWwKKyAgIG51bWJlciBvZiBwYWdlcyBpcyB3cml0dGVuLgorICAgU1RBQ0s6IFdlIG5lZWQgdGhlIHN0YWNrIGluZm9ybWF0aW9uIGluIG9yZGVyIHRvIGdldCBhIG1lYW5pbmdmdWwKKyAgIGJhY2t0cmFjZS4gIFdlIG5lZWQgdG8gd3JpdGUgdGhlIGRhdGEgZnJvbSAoZXNwKSB0bworICAgY3VycmVudC0+c3RhcnRfc3RhY2ssIHNvIHdlIHJvdW5kIGVhY2ggb2YgdGhlc2Ugb2ZmIGluIG9yZGVyIHRvIGJlIGFibGUKKyAgIHRvIHdyaXRlIGFuIGludGVnZXIgbnVtYmVyIG9mIHBhZ2VzLgorICAgVGhlIG1pbmltdW0gY29yZSBmaWxlIHNpemUgaXMgMyBwYWdlcywgb3IgMTIyODggYnl0ZXMuCisqLworCitzdHJ1Y3QgdXNlcl9mcCB7CisJc3RydWN0IGZwX3JlZyB7CisJCXVuc2lnbmVkIGludCBzaWduMToxOworCQl1bnNpZ25lZCBpbnQgdW51c2VkOjE1OworCQl1bnNpZ25lZCBpbnQgc2lnbjI6MTsKKwkJdW5zaWduZWQgaW50IGV4cG9uZW50OjE0OworCQl1bnNpZ25lZCBpbnQgajoxOworCQl1bnNpZ25lZCBpbnQgbWFudGlzc2ExOjMxOworCQl1bnNpZ25lZCBpbnQgbWFudGlzc2EwOjMyOworCX0gZnByZWdzWzhdOworCXVuc2lnbmVkIGludCBmcHNyOjMyOworCXVuc2lnbmVkIGludCBmcGNyOjMyOworCXVuc2lnbmVkIGNoYXIgZnR5cGVbOF07CisJdW5zaWduZWQgaW50IGluaXRfZmxhZzsKK307CisKKy8qIFdoZW4gdGhlIGtlcm5lbCBkdW1wcyBjb3JlLCBpdCBzdGFydHMgYnkgZHVtcGluZyB0aGUgdXNlciBzdHJ1Y3QgLQorICAgdGhpcyB3aWxsIGJlIHVzZWQgYnkgZ2RiIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGRhdGEgYW5kIHN0YWNrIHNlZ21lbnRzCisgICBhcmUgd2l0aGluIHRoZSBmaWxlLCBhbmQgd2hhdCB2aXJ0dWFsIGFkZHJlc3NlcyB0byB1c2UuICovCitzdHJ1Y3QgdXNlcnsKKy8qIFdlIHN0YXJ0IHdpdGggdGhlIHJlZ2lzdGVycywgdG8gbWltaWMgdGhlIHdheSB0aGF0ICJtZW1vcnkiIGlzIHJldHVybmVkCisgICBmcm9tIHRoZSBwdHJhY2UoMywuLi4pIGZ1bmN0aW9uLiAgKi8KKyAgc3RydWN0IHB0X3JlZ3MgcmVnczsJCS8qIFdoZXJlIHRoZSByZWdpc3RlcnMgYXJlIGFjdHVhbGx5IHN0b3JlZCAqLworLyogcHRyYWNlIGRvZXMgbm90IHlldCBzdXBwbHkgdGhlc2UuICBTb21lZGF5Li4uLiAqLworICBpbnQgdV9mcHZhbGlkOwkJLyogVHJ1ZSBpZiBtYXRoIGNvLXByb2Nlc3NvciBiZWluZyB1c2VkLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgdGhpcyBtZXNzLiBOb3QgeWV0IHVzZWQuICovCisvKiBUaGUgcmVzdCBvZiB0aGlzIGp1bmsgaXMgdG8gaGVscCBnZGIgZmlndXJlIG91dCB3aGF0IGdvZXMgd2hlcmUgKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgdV90c2l6ZTsJLyogVGV4dCBzZWdtZW50IHNpemUgKHBhZ2VzKS4gKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgdV9kc2l6ZTsJLyogRGF0YSBzZWdtZW50IHNpemUgKHBhZ2VzKS4gKi8KKyAgdW5zaWduZWQgbG9uZyBpbnQgdV9zc2l6ZTsJLyogU3RhY2sgc2VnbWVudCBzaXplIChwYWdlcykuICovCisgIHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZTsgICAgIC8qIFN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyBvZiB0ZXh0LiAqLworICB1bnNpZ25lZCBsb25nIHN0YXJ0X3N0YWNrOwkvKiBTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3Mgb2Ygc3RhY2sgYXJlYS4KKwkJCQkgICBUaGlzIGlzIGFjdHVhbGx5IHRoZSBib3R0b20gb2YgdGhlIHN0YWNrLAorCQkJCSAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGFsd2F5cyBmb3VuZCBpbiB0aGUKKwkJCQkgICBlc3AgcmVnaXN0ZXIuICAqLworICBsb25nIGludCBzaWduYWw7ICAgICAJCS8qIFNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgY29yZSBkdW1wLiAqLworICBpbnQgcmVzZXJ2ZWQ7CQkJLyogTm8gbG9uZ2VyIHVzZWQgKi8KKyAgc3RydWN0IHB0X3JlZ3MgKiB1X2FyMDsJLyogVXNlZCBieSBnZGIgdG8gaGVscCBmaW5kIHRoZSB2YWx1ZXMgZm9yICovCisJCQkJLyogdGhlIHJlZ2lzdGVycy4gKi8KKyAgdW5zaWduZWQgbG9uZyBtYWdpYzsJCS8qIFRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgY29yZSBmaWxlICovCisgIGNoYXIgdV9jb21tWzMyXTsJCS8qIFVzZXIgY29tbWFuZCB0aGF0IHdhcyByZXNwb25zaWJsZSAqLworICBpbnQgdV9kZWJ1Z3JlZ1s4XTsKKyAgc3RydWN0IHVzZXJfZnAgdV9mcDsJCS8qIEZQIHN0YXRlICovCisgIHN0cnVjdCB1c2VyX2ZwX3N0cnVjdCAqIHVfZnAwOy8qIFVzZWQgYnkgZ2RiIHRvIGhlbHAgZmluZCB0aGUgdmFsdWVzIGZvciAqLworICAJCQkJLyogdGhlIEZQIHJlZ2lzdGVycy4gKi8KK307CisjZGVmaW5lIE5CUEcgUEFHRV9TSVpFCisjZGVmaW5lIFVQQUdFUyAxCisjZGVmaW5lIEhPU1RfVEVYVF9TVEFSVF9BRERSICh1LnN0YXJ0X2NvZGUpCisjZGVmaW5lIEhPU1RfU1RBQ0tfRU5EX0FERFIgKHUuc3RhcnRfc3RhY2sgKyB1LnVfc3NpemUgKiBOQlBHKQorCisjZW5kaWYgLyogX0FSTV9VU0VSX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS92ZnAuaCBiL2luY2x1ZGUvYXNtLWFybS92ZnAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGM1ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3ZmcC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBsaW51eC9pbmNsdWRlL2FzbS1hcm0vdmZwLmgKKyAqCisgKiBWRlAgcmVnaXN0ZXIgZGVmaW5pdGlvbnMuCisgKiBGaXJzdCwgdGhlIHN0YW5kYXJkIFZGUCBzZXQuCisgKi8KKworI2RlZmluZSBGUFNJRAkJCWNyMAorI2RlZmluZSBGUFNDUgkJCWNyMQorI2RlZmluZSBGUEVYQwkJCWNyOAorCisvKiBGUFNJRCBiaXRzICovCisjZGVmaW5lIEZQU0lEX0lNUExFTUVOVEVSX0JJVAkoMjQpCisjZGVmaW5lIEZQU0lEX0lNUExFTUVOVEVSX01BU0sJKDB4ZmYgPDwgRlBTSURfSU1QTEVNRU5URVJfQklUKQorI2RlZmluZSBGUFNJRF9TT0ZUV0FSRQkJKDE8PDIzKQorI2RlZmluZSBGUFNJRF9GT1JNQVRfQklUCSgyMSkKKyNkZWZpbmUgRlBTSURfRk9STUFUX01BU0sJKDB4MyAgPDwgRlBTSURfRk9STUFUX0JJVCkKKyNkZWZpbmUgRlBTSURfTk9ET1VCTEUJCSgxPDwyMCkKKyNkZWZpbmUgRlBTSURfQVJDSF9CSVQJCSgxNikKKyNkZWZpbmUgRlBTSURfQVJDSF9NQVNLCQkoMHhGICA8PCBGUFNJRF9BUkNIX0JJVCkKKyNkZWZpbmUgRlBTSURfUEFSVF9CSVQJCSg4KQorI2RlZmluZSBGUFNJRF9QQVJUX01BU0sJCSgweEZGIDw8IEZQU0lEX1BBUlRfQklUKQorI2RlZmluZSBGUFNJRF9WQVJJQU5UX0JJVAkoNCkKKyNkZWZpbmUgRlBTSURfVkFSSUFOVF9NQVNLCSgweEYgIDw8IEZQU0lEX1ZBUklBTlRfQklUKQorI2RlZmluZSBGUFNJRF9SRVZfQklUCQkoMCkKKyNkZWZpbmUgRlBTSURfUkVWX01BU0sJCSgweEYgIDw8IEZQU0lEX1JFVl9CSVQpCisKKy8qIEZQRVhDIGJpdHMgKi8KKyNkZWZpbmUgRlBFWENfRVhDRVBUSU9OCQkoMTw8MzEpCisjZGVmaW5lIEZQRVhDX0VOQUJMRQkJKDE8PDMwKQorCisvKiBGUFNDUiBiaXRzICovCisjZGVmaW5lIEZQU0NSX0RFRkFVTFRfTkFOCSgxPDwyNSkKKyNkZWZpbmUgRlBTQ1JfRkxVU0hUT1pFUk8JKDE8PDI0KQorI2RlZmluZSBGUFNDUl9ST1VORF9ORUFSRVNUCSgwPDwyMikKKyNkZWZpbmUgRlBTQ1JfUk9VTkRfUExVU0lORgkoMTw8MjIpCisjZGVmaW5lIEZQU0NSX1JPVU5EX01JTlVTSU5GCSgyPDwyMikKKyNkZWZpbmUgRlBTQ1JfUk9VTkRfVE9aRVJPCSgzPDwyMikKKyNkZWZpbmUgRlBTQ1JfUk1PREVfQklUCQkoMjIpCisjZGVmaW5lIEZQU0NSX1JNT0RFX01BU0sJKDMgPDwgRlBTQ1JfUk1PREVfQklUKQorI2RlZmluZSBGUFNDUl9TVFJJREVfQklUCSgyMCkKKyNkZWZpbmUgRlBTQ1JfU1RSSURFX01BU0sJKDMgPDwgRlBTQ1JfU1RSSURFX0JJVCkKKyNkZWZpbmUgRlBTQ1JfTEVOR1RIX0JJVAkoMTYpCisjZGVmaW5lIEZQU0NSX0xFTkdUSF9NQVNLCSg3IDw8IEZQU0NSX0xFTkdUSF9CSVQpCisjZGVmaW5lIEZQU0NSX0lPRQkJKDE8PDgpCisjZGVmaW5lIEZQU0NSX0RaRQkJKDE8PDkpCisjZGVmaW5lIEZQU0NSX09GRQkJKDE8PDEwKQorI2RlZmluZSBGUFNDUl9VRkUJCSgxPDwxMSkKKyNkZWZpbmUgRlBTQ1JfSVhFCQkoMTw8MTIpCisjZGVmaW5lIEZQU0NSX0lERQkJKDE8PDE1KQorI2RlZmluZSBGUFNDUl9JT0MJCSgxPDwwKQorI2RlZmluZSBGUFNDUl9EWkMJCSgxPDwxKQorI2RlZmluZSBGUFNDUl9PRkMJCSgxPDwyKQorI2RlZmluZSBGUFNDUl9VRkMJCSgxPDwzKQorI2RlZmluZSBGUFNDUl9JWEMJCSgxPDw0KQorI2RlZmluZSBGUFNDUl9JREMJCSgxPDw3KQorCisvKgorICogVkZQOS1TIHNwZWNpZmljLgorICovCisjZGVmaW5lIEZQSU5TVAkJCWNyOQorI2RlZmluZSBGUElOU1QyCQkJY3IxMAorCisvKiBGUEVYQyBiaXRzICovCisjZGVmaW5lIEZQRVhDX0ZQVjIJCSgxPDwyOCkKKyNkZWZpbmUgRlBFWENfTEVOR1RIX0JJVAkoOCkKKyNkZWZpbmUgRlBFWENfTEVOR1RIX01BU0sJKDcgPDwgRlBFWENfTEVOR1RIX0JJVCkKKyNkZWZpbmUgRlBFWENfSU5WCQkoMSA8PCA3KQorI2RlZmluZSBGUEVYQ19VRkMJCSgxIDw8IDMpCisjZGVmaW5lIEZQRVhDX09GQwkJKDEgPDwgMikKKyNkZWZpbmUgRlBFWENfSU9DCQkoMSA8PCAwKQorCisvKiBCaXQgcGF0dGVybnMgZm9yIGRlY29kaW5nIHRoZSBwYWNrYWdlZCBvcGVyYXRpb24gZGVzY3JpcHRvcnMgKi8KKyNkZWZpbmUgVkZQT1BERVNDX0xFTkdUSF9CSVQJKDkpCisjZGVmaW5lIFZGUE9QREVTQ19MRU5HVEhfTUFTSwkoMHgwNyA8PCBWRlBPUERFU0NfTEVOR1RIX0JJVCkKKyNkZWZpbmUgVkZQT1BERVNDX1VOVVNFRF9CSVQJKDI0KQorI2RlZmluZSBWRlBPUERFU0NfVU5VU0VEX01BU0sJKDB4RkYgPDwgVkZQT1BERVNDX1VOVVNFRF9CSVQpCisjZGVmaW5lIFZGUE9QREVTQ19PUERFU0NfTUFTSwkofihWRlBPUERFU0NfTEVOR1RIX01BU0sgfCBWRlBPUERFU0NfVU5VU0VEX01BU0spKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3ZmcG1hY3Jvcy5oIGIvaW5jbHVkZS9hc20tYXJtL3ZmcG1hY3Jvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YmQ2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdmZwbWFjcm9zLmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS92ZnBtYWNyb3MuaAorICoKKyAqIEFzc2VtYmxlci1vbmx5IGZpbGUgY29udGFpbmluZyBWRlAgbWFjcm9zIGFuZCByZWdpc3RlciBkZWZpbml0aW9ucy4KKyAqLworI2luY2x1ZGUgInZmcC5oIgorCitAIE1hY3JvcyB0byBhbGxvdyBidWlsZGluZyB3aXRoIG9sZCB0b29sa2l0cyAod2l0aCBubyBWRlAgc3VwcG9ydCkKKwkubWFjcm8JVkZQRk1SWCwgcmQsIHN5c3JlZywgY29uZAorCU1SQ1xjb25kCXAxMCwgNywgXHJkLCBcc3lzcmVnLCBjcjAsIDAJQCBGTVJYCVxyZCwgXHN5c3JlZworCS5lbmRtCisKKwkubWFjcm8JVkZQRk1YUiwgc3lzcmVnLCByZCwgY29uZAorCU1DUlxjb25kCXAxMCwgNywgXHJkLCBcc3lzcmVnLCBjcjAsIDAJQCBGTVhSCVxzeXNyZWcsIFxyZAorCS5lbmRtCisKKwlAIHJlYWQgYWxsIHRoZSB3b3JraW5nIHJlZ2lzdGVycyBiYWNrIGludG8gdGhlIFZGUAorCS5tYWNybwlWRlBGTERNSUEsIGJhc2UKKwlMREMJcDExLCBjcjAsIFtcYmFzZV0sIzMzKjQJCSAgICBAIEZMRE1JQVggXGJhc2UhLCB7ZDAtZDE1fQorCS5lbmRtCisKKwlAIHdyaXRlIGFsbCB0aGUgd29ya2luZyByZWdpc3RlcnMgb3V0IG9mIHRoZSBWRlAKKwkubWFjcm8JVkZQRlNUTUlBLCBiYXNlCisJU1RDCXAxMSwgY3IwLCBbXGJhc2VdLCMzMyo0CQkgICAgQCBGU1RNSUFYIFxiYXNlISwge2QwLWQxNX0KKwkuZW5kbQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3ZnYS5oIGIvaW5jbHVkZS9hc20tYXJtL3ZnYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNmU1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdmdhLmgKQEAgLTAsMCArMSwxMiBAQAorI2lmbmRlZiBBU01BUk1fVkdBX0gKKyNkZWZpbmUgQVNNQVJNX1ZHQV9ICisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKworI2RlZmluZSBWR0FfTUFQX01FTSh4KQkoUENJTUVNX0JBU0UgKyAoeCkpCisKKyNkZWZpbmUgdmdhX3JlYWRiKHgpCSgqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopeCkpCisjZGVmaW5lIHZnYV93cml0ZWIoeCx5KQkoKigodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKXkpID0gKHgpKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS94b3IuaCBiL2luY2x1ZGUvYXNtLWFybS94b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2M0Y2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3hvci5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS94b3IuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworI2luY2x1ZGUgPGFzbS1nZW5lcmljL3hvci5oPgorCisjZGVmaW5lIF9fWE9SKGExLCBhMikgYTEgXj0gYTIKKworI2RlZmluZSBHRVRfQkxPQ0tfMihkc3QpIFwKKwlfX2FzbV9fKCJsZG1pYQklMCwgeyUxLCAlMn0iIFwKKwkJOiAiPXIiIChkc3QpLCAiPXIiIChhMSksICI9ciIgKGEyKSBcCisJCTogIjAiIChkc3QpKQorCisjZGVmaW5lIEdFVF9CTE9DS180KGRzdCkgXAorCV9fYXNtX18oImxkbWlhCSUwLCB7JTEsICUyLCAlMywgJTR9IiBcCisJCTogIj1yIiAoZHN0KSwgIj1yIiAoYTEpLCAiPXIiIChhMiksICI9ciIgKGEzKSwgIj1yIiAoYTQpIFwKKwkJOiAiMCIgKGRzdCkpCisKKyNkZWZpbmUgWE9SX0JMT0NLXzIoc3JjKSBcCisJX19hc21fXygibGRtaWEJJTAhLCB7JTEsICUyfSIgXAorCQk6ICI9ciIgKHNyYyksICI9ciIgKGIxKSwgIj1yIiAoYjIpIFwKKwkJOiAiMCIgKHNyYykpOyBcCisJX19YT1IoYTEsIGIxKTsgX19YT1IoYTIsIGIyKTsKKworI2RlZmluZSBYT1JfQkxPQ0tfNChzcmMpIFwKKwlfX2FzbV9fKCJsZG1pYQklMCEsIHslMSwgJTIsICUzLCAlNH0iIFwKKwkJOiAiPXIiIChzcmMpLCAiPXIiIChiMSksICI9ciIgKGIyKSwgIj1yIiAoYjMpLCAiPXIiIChiNCkgXAorCQk6ICIwIiAoc3JjKSk7IFwKKwlfX1hPUihhMSwgYjEpOyBfX1hPUihhMiwgYjIpOyBfX1hPUihhMywgYjMpOyBfX1hPUihhNCwgYjQpCisKKyNkZWZpbmUgUFVUX0JMT0NLXzIoZHN0KSBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oInN0bWlhCSUwISwgeyUyLCAlM30iIFwKKwkJOiAiPXIiIChkc3QpIFwKKwkJOiAiMCIgKGRzdCksICJyIiAoYTEpLCAiciIgKGEyKSkKKworI2RlZmluZSBQVVRfQkxPQ0tfNChkc3QpIFwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RtaWEJJTAhLCB7JTIsICUzLCAlNCwgJTV9IiBcCisJCTogIj1yIiAoZHN0KSBcCisJCTogIjAiIChkc3QpLCAiciIgKGExKSwgInIiIChhMiksICJyIiAoYTMpLCAiciIgKGE0KSkKKworc3RhdGljIHZvaWQKK3hvcl9hcm00cmVnc18yKHVuc2lnbmVkIGxvbmcgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgKnAxLCB1bnNpZ25lZCBsb25nICpwMikKK3sKKwl1bnNpZ25lZCBpbnQgbGluZXMgPSBieXRlcyAvIHNpemVvZih1bnNpZ25lZCBsb25nKSAvIDQ7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGExIF9fYXNtX18oInI0Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGEyIF9fYXNtX18oInI1Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGEzIF9fYXNtX18oInI2Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGE0IF9fYXNtX18oInI3Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGIxIF9fYXNtX18oInI4Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGIyIF9fYXNtX18oInI5Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGIzIF9fYXNtX18oImlwIik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGI0IF9fYXNtX18oImxyIik7CisKKwlkbyB7CisJCUdFVF9CTE9DS180KHAxKTsKKwkJWE9SX0JMT0NLXzQocDIpOworCQlQVVRfQkxPQ0tfNChwMSk7CisJfSB3aGlsZSAoLS1saW5lcyk7Cit9CisKK3N0YXRpYyB2b2lkCit4b3JfYXJtNHJlZ3NfMyh1bnNpZ25lZCBsb25nIGJ5dGVzLCB1bnNpZ25lZCBsb25nICpwMSwgdW5zaWduZWQgbG9uZyAqcDIsCisJCXVuc2lnbmVkIGxvbmcgKnAzKQoreworCXVuc2lnbmVkIGludCBsaW5lcyA9IGJ5dGVzIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC8gNDsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYTEgX19hc21fXygicjQiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYTIgX19hc21fXygicjUiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYTMgX19hc21fXygicjYiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYTQgX19hc21fXygicjciKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYjEgX19hc21fXygicjgiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYjIgX19hc21fXygicjkiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYjMgX19hc21fXygiaXAiKTsKKwlyZWdpc3RlciB1bnNpZ25lZCBpbnQgYjQgX19hc21fXygibHIiKTsKKworCWRvIHsKKwkJR0VUX0JMT0NLXzQocDEpOworCQlYT1JfQkxPQ0tfNChwMik7CisJCVhPUl9CTE9DS180KHAzKTsKKwkJUFVUX0JMT0NLXzQocDEpOworCX0gd2hpbGUgKC0tbGluZXMpOworfQorCitzdGF0aWMgdm9pZAoreG9yX2FybTRyZWdzXzQodW5zaWduZWQgbG9uZyBieXRlcywgdW5zaWduZWQgbG9uZyAqcDEsIHVuc2lnbmVkIGxvbmcgKnAyLAorCQl1bnNpZ25lZCBsb25nICpwMywgdW5zaWduZWQgbG9uZyAqcDQpCit7CisJdW5zaWduZWQgaW50IGxpbmVzID0gYnl0ZXMgLyBzaXplb2YodW5zaWduZWQgbG9uZykgLyAyOworCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBhMSBfX2FzbV9fKCJyOCIpOworCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBhMiBfX2FzbV9fKCJyOSIpOworCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBiMSBfX2FzbV9fKCJpcCIpOworCXJlZ2lzdGVyIHVuc2lnbmVkIGludCBiMiBfX2FzbV9fKCJsciIpOworCisJZG8geworCQlHRVRfQkxPQ0tfMihwMSk7CisJCVhPUl9CTE9DS18yKHAyKTsKKwkJWE9SX0JMT0NLXzIocDMpOworCQlYT1JfQkxPQ0tfMihwNCk7CisJCVBVVF9CTE9DS18yKHAxKTsKKwl9IHdoaWxlICgtLWxpbmVzKTsKK30KKworc3RhdGljIHZvaWQKK3hvcl9hcm00cmVnc181KHVuc2lnbmVkIGxvbmcgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgKnAxLCB1bnNpZ25lZCBsb25nICpwMiwKKwkJdW5zaWduZWQgbG9uZyAqcDMsIHVuc2lnbmVkIGxvbmcgKnA0LCB1bnNpZ25lZCBsb25nICpwNSkKK3sKKwl1bnNpZ25lZCBpbnQgbGluZXMgPSBieXRlcyAvIHNpemVvZih1bnNpZ25lZCBsb25nKSAvIDI7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGExIF9fYXNtX18oInI4Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGEyIF9fYXNtX18oInI5Iik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGIxIF9fYXNtX18oImlwIik7CisJcmVnaXN0ZXIgdW5zaWduZWQgaW50IGIyIF9fYXNtX18oImxyIik7CisKKwlkbyB7CisJCUdFVF9CTE9DS18yKHAxKTsKKwkJWE9SX0JMT0NLXzIocDIpOworCQlYT1JfQkxPQ0tfMihwMyk7CisJCVhPUl9CTE9DS18yKHA0KTsKKwkJWE9SX0JMT0NLXzIocDUpOworCQlQVVRfQkxPQ0tfMihwMSk7CisJfSB3aGlsZSAoLS1saW5lcyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgeG9yX2Jsb2NrX3RlbXBsYXRlIHhvcl9ibG9ja19hcm00cmVncyA9IHsKKwkubmFtZQk9ICJhcm00cmVncyIsCisJLmRvXzIJPSB4b3JfYXJtNHJlZ3NfMiwKKwkuZG9fMwk9IHhvcl9hcm00cmVnc18zLAorCS5kb180CT0geG9yX2FybTRyZWdzXzQsCisJLmRvXzUJPSB4b3JfYXJtNHJlZ3NfNSwKK307CisKKyN1bmRlZiBYT1JfVFJZX1RFTVBMQVRFUworI2RlZmluZSBYT1JfVFJZX1RFTVBMQVRFUwkJCVwKKwlkbyB7CQkJCQlcCisJCXhvcl9zcGVlZCgmeG9yX2Jsb2NrX2FybTRyZWdzKTsJXAorCQl4b3Jfc3BlZWQoJnhvcl9ibG9ja184cmVncyk7CVwKKwkJeG9yX3NwZWVkKCZ4b3JfYmxvY2tfMzJyZWdzKTsJXAorCX0gd2hpbGUgKDApCg==