ZGlmZiAtLWdpdCBhL2JvYXJkL2lua2E0eDAvaW5rYTR4MC5jIGIvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKaW5kZXggYTMzMjUxMC4uMDhhMWI3ZiAxMDA2NDQKLS0tIGEvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKKysrIGIvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKQEAgLTE3Nyw2ICsxNzcsMTkgQEAKIAkqKHZ1X2xvbmcgKilNUEM1WFhYX0JPT1RDU19DRkcgJj0gfjB4MTsgLyogY2xlYXIgUk8gKi8KIH0KIAorI2RlZmluZSBHUElPX1BTQzNfOSAgICAgMHgwNDAwMDAwMFVMCisKK2ludCBtaXNjX2luaXRfZiAodm9pZCkKK3sKKwkvKgorCSAqIFJlc2V0IENvcmFsLVAgZ3JhcGhpY3MgY29udHJvbGxlcgorCSAqLworICAgICAgICAqKHZ1X2xvbmcgKikgTVBDNVhYWF9XVV9HUElPX0VOQUJMRSB8PSBHUElPX1BTQzNfOTsKKyAgICAgICAgKih2dV9sb25nICopIE1QQzVYWFhfV1VfR1BJT19ESVIgICAgfD0gR1BJT19QU0MzXzk7CisgICAgICAgICoodnVfbG9uZyAqKSBNUEM1WFhYX1dVX0dQSU9fREFUQSAgIHw9IEdQSU9fUFNDM185OworICAgICAgICByZXR1cm4gMDsKK30KKwogI2lmZGVmICBDT05GSUdfUENJCiBzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIGhvc2U7CiAKQEAgLTE4Nyw1ICsyMDAsMyBAQAogICAgICAgICBwY2lfbXBjNXh4eF9pbml0KCZob3NlKTsKIH0KICNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvYXV0b191cGRhdGUuYyBiL2JvYXJkL3RyYWIvYXV0b191cGRhdGUuYwppbmRleCAzOTNlMDk0Li4wMzk5ZmU4IDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL2F1dG9fdXBkYXRlLmMKKysrIGIvYm9hcmQvdHJhYi9hdXRvX3VwZGF0ZS5jCkBAIC00MTYsNiArNDE2LDEzIEBACiAJaW50IG9mZjsKIAl1aW50MzJfdCB2YWw7CiAKKwkvKiBzcGVjaWFsIGNhc2UgZm9yIHByZXBhcmUuaW1nICovCisJaWYgKGlkeCA9PSBJRFhfUFJFUEFSRSkgeworCQkvKiBlbmFibGUgdGhlIHBvd2VyIHN3aXRjaCAqLworCQkqQ1BMRF9WRkRfQksgJj0gflBPV0VSX09GRjsKKwkJcmV0dXJuIDA7CisJfQorCiAJaGRyID0gKGltYWdlX2hlYWRlcl90ICopTE9BRF9BRERSOwogCS8qIHdyaXRlIHRoZSB0aW1lIGZpZWxkIGludG8gRUVQUk9NICovCiAJb2ZmID0gYXVlZV9vZmZbaWR4XS50aW1lOwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi9jbWRfdHJhYi5jIGIvYm9hcmQvdHJhYi9jbWRfdHJhYi5jCmluZGV4IDc5NGM1MjcuLjAwZWIzODUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvY21kX3RyYWIuYworKysgYi9ib2FyZC90cmFiL2NtZF90cmFiLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxjb21tYW5kLmg+CiAjaW5jbHVkZSA8czNjMjQwMC5oPgorI2luY2x1ZGUgPHJ0Yy5oPgogCiAvKgogICogVFJBQiBib2FyZCBzcGVjaWZpYyBjb21tYW5kcy4gRXNwZWNpYWxseSBjb21tYW5kcyBmb3IgYnVybi1pbiBhbmQgZnVuY3Rpb24KQEAgLTExNyw2ICsxMTgsNyBAQAogCQkJdWNoYXIgKmJ1ZmZlciwgaW50IGxlbik7CiBpbnQgaTJjX3JlYWRfbXVsdGlwbGUgKHVjaGFyIGNoaXAsIHVpbnQgYWRkciwgaW50IGFsZW4sCiAJCQl1Y2hhciAqYnVmZmVyLCBpbnQgbGVuKTsKK2ludCBkb190ZW1wX2xvZyAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pOwogCiAvKiBoZWxwZXIgZnVuY3Rpb25zICovCiBzdGF0aWMgdm9pZCBhZGNfaW5pdCAodm9pZCk7CkBAIC0xNzMsNiArMTc1LDcgQEAKIAlsZWRfaW5pdCAoKTsKIAlnbG9iYWxfdmFyc19pbml0ICgpOwogCXRlc3RfZnVuY3Rpb25fdGFibGVfaW5pdCAoKTsKKwlzcGlfaW5pdCAoKTsKIAogCWlmIChnbG9iYWxfdmFyc193cml0ZV90b19lZXByb20gKCkgIT0gMCkgewogCQlwcmludGYgKCIlczogZXJyb3Igd3JpdGluZyBnbG9iYWxfdmFycyB0byBlZXByb21cbiIsCkBAIC0zMzQsNyArMzM3LDYgQEAKIAl9CiAKIAlzcGlfaW5pdCAoKTsKLQl0c2MyMDAwX3JlZ19pbml0ICgpOwogCiAJY29udGFjdF90ZW1wID0gdHNjMjAwMF9jb250YWN0X3RlbXAoKTsKIAlwcmludGYgKCIlZCBkZWdyZWUgQyAqIDEwMFxuIiwgY29udGFjdF90ZW1wKSA7CkBAIC01NzcsNyArNTc5LDYgQEAKIHsKIAlpbnQgY29udGFjdF90ZW1wOwogCi0Jc3BpX2luaXQgKCk7CiAJY29udGFjdF90ZW1wID0gdHNjMjAwMF9jb250YWN0X3RlbXAgKCk7CiAKIAlpZiAoKGNvbnRhY3RfdGVtcCA8IE1JTl9DT05UQUNUX1RFTVApCkBAIC04NDAsNCArODQxLDU1IEBACiAJcmV0dXJuICgwKTsKIH0KIAoraW50IGRvX3RlbXBfbG9nIChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgY29udGFjdF90ZW1wOworCWludCBkZWxheSA9IDA7CisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfREFURSkKKwlzdHJ1Y3QgcnRjX3RpbWUgdG07CisjZW5kaWYKKworCWlmIChhcmdjID4gMikgeworCQlwcmludGYgKCJVc2FnZTpcbiVzXG4iLCBjbWR0cC0+dXNhZ2UpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoYXJnYyA+IDEpIHsKKwkJZGVsYXkgPSBzaW1wbGVfc3RydG91bChhcmd2WzFdLCBOVUxMLCAxMCk7CisJfQorCisJc3BpX2luaXQgKCk7CisJd2hpbGUgKDEpIHsKKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0RBVEUpCisJCXJ0Y19nZXQgKCZ0bSk7CisJCXByaW50ZiAoIiU0ZC0lMDJkLSUwMmQgJTJkOiUwMmQ6JTAyZCAtICIsCisJCQl0bS50bV95ZWFyLCB0bS50bV9tb24sIHRtLnRtX21kYXksCisJCQl0bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYyk7CisjZW5kaWYKKworCQljb250YWN0X3RlbXAgPSB0c2MyMDAwX2NvbnRhY3RfdGVtcCgpOworCQlwcmludGYgKCIlZFxuIiwgY29udGFjdF90ZW1wKSA7CisKKwkJaWYgKGRlbGF5ICE9IDApCisJCQkvKgorCQkJICogcmVzZXQgdGltZXIgdG8gYXZvaWQgdGltZXN0YW1wIG92ZXJmbG93IHByb2JsZW0KKwkJCSAqIGFmdGVyIGFib3V0IDY4IG1pbnV0ZXMgb2YgdWRlbGF5KCkgdGltZS4KKwkJCSAqLworCQkJcmVzZXRfdGltZXJfbWFza2VkICgpOworCQkJc2RlbGF5IChkZWxheSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK1VfQk9PVF9DTUQoCisJdGxvZywJMiwJMSwJZG9fdGVtcF9sb2csCisJInRsb2cgICAgLSBsb2cgY29udGFjdCB0ZW1wZXJhdHVyZSBbMS8xMDAgQ10gdG8gY29uc29sZSAoZW5kbGVzc2x5KVxuIiwKKwkiZGVsYXlcbiIKKwkiICAgIC0gY29udGFjdCB0ZW1wZXJhdHVyZSBbMS8xMDAgQ10gaXMgcHJpbnRlZCBlbmRsZXNzbHkgdG8gY29uc29sZVxuIgorCSIgICAgICA8ZGVsYXk+IHNwZWNpZmllcyB0aGUgc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gdHdvIG1lYXN1cmVtZW50c1xuIgorCSIgICAgICBGb3IgZWFjaCBtZWFzdXJtZW50IGEgdGltZXN0YW1wIGlzIHByaW50ZXRlZFxuIgorKTsKKwogI2VuZGlmCS8qIENGR19DTURfQlNQICovCmRpZmYgLS1naXQgYS9ib2FyZC90cmFiL3RzYzIwMDAuYyBiL2JvYXJkL3RyYWIvdHNjMjAwMC5jCmluZGV4IGRmMmQ4N2YuLmNhNjg2ODIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvdHNjMjAwMC5jCisrKyBiL2JvYXJkL3RyYWIvdHNjMjAwMC5jCkBAIC0zMSw2ICszMSwxNiBAQAogCiAjaW5jbHVkZSAiUHQxMDAwX3RlbXBfZGF0YS5oIgogCisvKiBoZWxwZXIgZnVuY3Rpb24gKi8KKyNkZWZpbmUgYWJzKHZhbHVlKSAoKCh2YWx1ZSkgPCAwKSA/ICgodmFsdWUpKi0xKSA6ICh2YWx1ZSkpCisKKy8qCisgKiBNYXhpbWFsIGFsbG93ZWQgZGV2aWF0aW9uIGJldHdlZW4gdHdvIGltbWVkaWF0ZSBtZWFzc3VybWVudHMgb2YgYW4gYW5hbG9nCisgKiB0aGVybW8gY2hhbm5lbC4gMSBESUdJVCA9IDAuMDI3NiCwQy4gVGhpcyBpcyB1c2VkIHRvIGZpbHRlciBzcG9yYWRpYworICogImp1bXBzIiBpbiBtZWFzdXJtZW50LgorICovCisjZGVmaW5lIE1BWF9ERVZJQVRJT04JMTgJLyogdW5pdDogRElHSVRzIG9mIGFkYzsgMTggRElHSVQgPSAwLjUgsEMgKi8KKwogdm9pZCBzcGlfaW5pdCh2b2lkKQogewogCVMzQzI0WDBfR1BJTyAqIGNvbnN0IGdwaW8gPSBTM0MyNFgwX0dldEJhc2VfR1BJTygpOwpAQCAtMjI3LDE1ICsyMzcsNDggQEAKIAlsb25nIGFkY19wdDEwMDAsIG9mZnNldDsKIAlsb25nIHVfcHQxMDAwOwogCWxvbmcgY29udGFjdF90ZW1wOwotCisJbG9uZyB0ZW1wMSwgdGVtcDI7CiAKIAl0c2MyMDAwX3JlZ19pbml0ICgpOwogCXRzYzIwMDBfc2V0X3JhbmdlICgzKTsKIAotCWFkY19wdDEwMDAgPSB0c2MyMDAwX3JlYWRfY2hhbm5lbCAoMTQpOworCS8qCisJICogQmVjYXVzZSBvZiBzcG9yYWRpYyAianVtcHMiIGluIHRoZSBtZWFzdXJlZCBhZGMgdmFsdWVzIGV2ZXJ5CisJICogY2hhbm5lbCBpcyByZWFkIHR3byB0aW1lcy4gSWYgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlCisJICogYmV0d2VlbiB0aGUgdHdvIG1lYXN1cmVtZW50cywgdGhlbiBwcmludCBhbiBlcnJvciBhbmQgZG8gYSB0aGlyZAorCSAqIG1lYXN1cmVtZW50LCBiZWNhdXNlIGl0IGlzIHZlcnkgdW5saWtlbHkgdGhhdCBhIHN1Y2Nlc3NpdmUgdGhpcmQKKwkgKiBtZWFzdXJlbWVudCBnb2VzIGFsc28gd3JvbmcuCisJICovCisJdGVtcDEgPSB0c2MyMDAwX3JlYWRfY2hhbm5lbCAoMTQpOworCXRlbXAyID0gdHNjMjAwMF9yZWFkX2NoYW5uZWwgKDE0KTsKKwlpZiAoYWJzKHRlbXAyIC0gdGVtcDEpIDwgTUFYX0RFVklBVElPTikKKwkJYWRjX3B0MTAwMCA9IHRlbXAyOworCWVsc2UgeworCQlwcmludGYgKCIlczogcmVhZCBhZGMgdmFsdWUgKGNoYW5uZWwgMTQpIGV4Y2VlZGVkIG1heCBhbGxvd2VkICIKKwkJCSJkZXZpYXRpb246ICVkICogMC4wMjc2ILBDXG4iLAorCQkJX19GVU5DVElPTl9fLCBNQVhfREVWSUFUSU9OKTsKKwkJcHJpbnRmICgiYWRjIHZhbHVlIDE6ICVsZCBESUdJVHNcbmFkYyB2YWx1ZSAyOiAlbGQgRElHSVRzXG4iLAorCQkJdGVtcDEsIHRlbXAyKTsKKwkJYWRjX3B0MTAwMCA9IHRzYzIwMDBfcmVhZF9jaGFubmVsICgxNCk7CisJCXByaW50ZiAoInVzZSAodGhpcmQgcmVhZCkgYWRjIHZhbHVlOiBhZGNfcHQxMDAwID0gIgorCQkJIiVsZCBESUdJVHNcbiIsCWFkY19wdDEwMDApOworCX0KIAlkZWJ1ZyAoInJlYWQgY2hhbm5lbCAxNCAocHQxMDAwIGFkYyB2YWx1ZSk6ICVsZFxuIiwgYWRjX3B0MTAwMCk7CiAKLQlvZmZzZXQgPSB0c2MyMDAwX3JlYWRfY2hhbm5lbCAoMTUpOworCXRlbXAxID0gdHNjMjAwMF9yZWFkX2NoYW5uZWwgKDE1KTsKKwl0ZW1wMiA9IHRzYzIwMDBfcmVhZF9jaGFubmVsICgxNSk7CisJaWYgKGFicyh0ZW1wMiAtIHRlbXAxKSA8IE1BWF9ERVZJQVRJT04pCisJCW9mZnNldCA9IHRlbXAyOworCWVsc2UgeworCQlwcmludGYgKCIlczogcmVhZCBhZGMgdmFsdWUgKGNoYW5uZWwgMTUpIGV4Y2VlZGVkIG1heCBhbGxvd2VkICIKKwkJCSJkZXZpYXRpb246ICVkICogMC4wMjc2ILBDXG4iLAorCQkJX19GVU5DVElPTl9fLCBNQVhfREVWSUFUSU9OKTsKKwkJcHJpbnRmICgiYWRjIHZhbHVlIDE6ICVsZCBESUdJVHNcbmFkYyB2YWx1ZSAyOiAlbGQgRElHSVRzXG4iLAorCQkJdGVtcDEsIHRlbXAyKTsKKwkJb2Zmc2V0ID0gdHNjMjAwMF9yZWFkX2NoYW5uZWwgKDE1KTsKKwkJcHJpbnRmICgidXNlICh0aGlyZCByZWFkKSBhZGMgdmFsdWU6IG9mZnNldCA9ICVsZCBESUdJVHNcbiIsCisJCQlvZmZzZXQpOworCX0KIAlkZWJ1ZyAoInJlYWQgY2hhbm5lbCAxNSAob2Zmc2V0KTogJWxkXG4iLCBvZmZzZXQpOwogCiAJLyoK