ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL21hcHMvS2NvbmZpZwppbmRleCA4ZTNlOTNkLi43ZjFjZTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL0tjb25maWcKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9LY29uZmlnCkBAIC0xLDUgKzEsNSBAQAogIyBkcml2ZXJzL210ZC9tYXBzL0tjb25maWcKLSMgJElkOiBLY29uZmlnLHYgMS41OCAyMDA1LzA5LzE0IDE5OjE0OjEzIHRwb3lub3IgRXhwICQKKyMgJElkOiBLY29uZmlnLHYgMS41OSAyMDA1LzA5LzE4IDEwOjQ2OjQxIGpvZXJuIEV4cCAkCiAKIG1lbnUgIk1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MiCiAJZGVwZW5kcyBvbiBNVEQhPW4KQEAgLTIxNCw2ICsyMTQsMTMgQEAKIAloZWxwCiAJICBGbGFzaCBtZW1vcnkgYWNjZXNzIG9uIEFNRCBBbGNoZW15IFBiL0RiL1JESyBSZWZlcmVuY2UgQm9hcmRzCiAKK2NvbmZpZyBNVERfTVRYMQorCXRyaXN0YXRlICI0RyBTeXN0ZW1zIE1UWC0xIEZsYXNoIGRldmljZSIKKwlkZXBlbmRzIG9uIE1JUFMgJiYgTUlQU19NVFgxCisJaGVscAorCSAgRmxhc2ggbWVtb3J5IGFjY2VzcyBvbiA0RyBTeXN0ZW1zIE1UWC0xIEJvYXJkLiBJZiB5b3UgaGF2ZSBvbmUgb2YKKwkgIHRoZXNlIGJvYXJkcyBhbmQgd291bGQgbGlrZSB0byB1c2UgdGhlIGZsYXNoIGNoaXBzIG9uIGl0LCBzYXkgJ1knLgorCiBjb25maWcgTVREX0RJTE5FVFBDCiAJdHJpc3RhdGUgIkNGSSBGbGFzaCBkZXZpY2UgbWFwcGVkIG9uIERJTC9OZXQgUEMiCiAJZGVwZW5kcyBvbiBYODYgJiYgTVREX0NPTkNBVCAmJiBNVERfUEFSVElUSU9OUyAmJiBNVERfQ0ZJX0lOVEVMRVhUCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL01ha2VmaWxlIGIvZHJpdmVycy9tdGQvbWFwcy9NYWtlZmlsZQppbmRleCAwOTU1MTc4Li4yYWZhODA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvTWFrZWZpbGUKQEAgLTEsNyArMSw3IEBACiAjCiAjIGxpbnV4L2RyaXZlcnMvbWFwcy9NYWtlZmlsZQogIwotIyAkSWQ6IE1ha2VmaWxlLmNvbW1vbix2IDEuMzEgMjAwNS8wOS8xNCAxOToxNDoxMyB0cG95bm9yIEV4cCAkCisjICRJZDogTWFrZWZpbGUuY29tbW9uLHYgMS4zMiAyMDA1LzA5LzE4IDEwOjQ2OjQxIGpvZXJuIEV4cCAkCiAKIGlmZXEgKCQoQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTKSx5KQogb2JqLSQoQ09ORklHX01URCkJCSs9IG1hcF9mdW5jcy5vCkBAIC03MSwzICs3MSw0IEBACiBvYmotJChDT05GSUdfTVREX1BMQVRSQU0pCSs9IHBsYXQtcmFtLm8KIG9iai0kKENPTkZJR19NVERfT01BUF9OT1IpCSs9IG9tYXBfbm9yLm8KIG9iai0kKENPTkZJR19NVERfUFEyRkFEUykJKz0gcHEyZmFkcy5vCitvYmotJChDT05GSUdfTVREX01UWDEpCQkrPSBtdHgtMV9mbGFzaC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL210eC0xX2ZsYXNoLmMgYi9kcml2ZXJzL210ZC9tYXBzL210eC0xX2ZsYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmNDQxNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvbXR4LTFfZmxhc2guYwpAQCAtMCwwICsxLDk2IEBACisvKgorICogRmxhc2ggbWVtb3J5IGFjY2VzcyBvbiA0RyBTeXN0ZW1zIE1UWC0xIGJvYXJkcworICoKKyAqICRJZDogbXR4LTFfZmxhc2guYyx2IDEuMSAyMDA1LzA5LzE4IDEwOjQ2OjQxIGpvZXJuIEV4cCAkCisgKgorICogKEMpIDIwMDUgQnJ1bm8gUmFuZG9sZiA8YnJ1bm8ucmFuZG9sZkA0Zy1zeXN0ZW1zLmJpej4KKyAqIChDKSAyMDA1IEr2cm4gRW5nZWwgPGpvZXJuQHdvaG5oZWltLmZoLXdlZGVsLmRlPgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisKKyNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9wYXJ0aXRpb25zLmg+CisKKyNpbmNsdWRlIDxhc20vaW8uaD4KKworc3RhdGljIHN0cnVjdCBtYXBfaW5mbyBtdHgxX21hcCA9IHsKKwkubmFtZSA9ICJNVFgtMSBmbGFzaCIsCisJLmJhbmt3aWR0aCA9IDQsCisJLnNpemUgPSAweDIwMDAwMDAsCisJLnBoeXMgPSAweDFFMDAwMDAwLAorfTsKKworc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIG10eDFfcGFydGl0aW9uc1tdID0geworICAgICAgICB7CisgICAgICAgICAgICAgICAgLm5hbWUgPSAiZmlsZXN5c3RlbSIsCisgICAgICAgICAgICAgICAgLnNpemUgPSAweDAxQzAwMDAwLAorICAgICAgICAgICAgICAgIC5vZmZzZXQgPSAwLAorICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAubmFtZSA9ICJ5YW1vbiIsCisgICAgICAgICAgICAgICAgLnNpemUgPSAweDAwMTAwMDAwLAorICAgICAgICAgICAgICAgIC5vZmZzZXQgPSBNVERQQVJUX09GU19BUFBFTkQsCisgICAgICAgICAgICAgICAgLm1hc2tfZmxhZ3MgPSBNVERfV1JJVEVBQkxFLAorICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAubmFtZSA9ICJrZXJuZWwiLAorICAgICAgICAgICAgICAgIC5zaXplID0gMHgwMDJjMDAwMCwKKyAgICAgICAgICAgICAgICAub2Zmc2V0ID0gTVREUEFSVF9PRlNfQVBQRU5ELAorICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAubmFtZSA9ICJ5YW1vbiBlbnYiLAorICAgICAgICAgICAgICAgIC5zaXplID0gMHgwMDA0MDAwMCwKKyAgICAgICAgICAgICAgICAub2Zmc2V0ID0gTVREUEFSVF9PRlNfQVBQRU5ELAorICAgICAgICB9Cit9OworCitzdGF0aWMgc3RydWN0IG10ZF9pbmZvICptdHgxX210ZDsKKworaW50IF9faW5pdCBtdHgxX210ZF9pbml0KHZvaWQpCit7CisJaW50IHJldCA9IC1FTlhJTzsKKworCXNpbXBsZV9tYXBfaW5pdCgmbXR4MV9tYXApOworCisJbXR4MV9tYXAudmlydCA9IGlvcmVtYXAobXR4MV9tYXAucGh5cywgbXR4MV9tYXAuc2l6ZSk7CisJaWYgKCFtdHgxX21hcC52aXJ0KQorCQlyZXR1cm4gLUVJTzsKKworCW10eDFfbXRkID0gZG9fbWFwX3Byb2JlKCJjZmlfcHJvYmUiLCAmbXR4MV9tYXApOworCWlmICghbXR4MV9tdGQpCisJCWdvdG8gZXJyOworCisJbXR4MV9tdGQtPm93bmVyID0gVEhJU19NT0RVTEU7CisKKwlyZXQgPSBhZGRfbXRkX3BhcnRpdGlvbnMobXR4MV9tdGQsIG10eDFfcGFydGl0aW9ucywgCisJCQlBUlJBWV9TSVpFKG10eDFfcGFydGl0aW9ucykpOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCisJcmV0dXJuIDA7CisKK2VycjoKKyAgICAgICBpb3VubWFwKG10eDFfbWFwLnZpcnQpOworICAgICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBtdHgxX210ZF9jbGVhbnVwKHZvaWQpCit7CisJaWYgKG10eDFfbXRkKSB7CisJCWRlbF9tdGRfcGFydGl0aW9ucyhtdHgxX210ZCk7CisJCW1hcF9kZXN0cm95KG10eDFfbXRkKTsKKwl9CisJaWYgKG10eDFfbWFwLnZpcnQpCisJCWlvdW5tYXAobXR4MV9tYXAudmlydCk7Cit9CisKK21vZHVsZV9pbml0KG10eDFfbXRkX2luaXQpOworbW9kdWxlX2V4aXQobXR4MV9tdGRfY2xlYW51cCk7CisKK01PRFVMRV9BVVRIT1IoIkJydW5vIFJhbmRvbGYgPGJydW5vLnJhbmRvbGZANGctc3lzdGVtcy5iaXo+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk1UWC0xIGZsYXNoIG1hcCIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo=