ZGlmZiAtLWdpdCBhL3NlY3VyZS9mdHBpbXAuYyBiL3NlY3VyZS9mdHBpbXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWVlMzRjCi0tLSAvZGV2L251bGwKKysrIGIvc2VjdXJlL2Z0cGltcC5jCkBAIC0wLDAgKzEsNzUgQEAKKy8vIE1vcmdlbkdyYXVlbiBNVURsaWIKKy8vCisvLyBtYXN0ZXIvZnRwaW1wLmMgLS0gRlRQIEF2YXRhcgorLy8KKy8vICRJZDogZnRwaW1wLmMgNjQ0MCAyMDA3LTA4LTE4IDIzOjAwOjQ5WiBaZXNzdHJhICQKKy8vCisvLyBzaWVoZSAvc2VjdXJlL2Z0cGQKKworI3ByYWdtYSBzdHJvbmdfdHlwZXMKKworI2luY2x1ZGUgIi9zZWN1cmUvbWFzdGVyLmgiCisjZGVmaW5lIEZUUEQgIi9zZWN1cmUvZnRwZCIKKworLy9wcml2YXRlIGluaGVyaXQgIi9zdGQvc2hlbGxzL2ZpbGVzeXMvZmlsZXN5cyI7Citwcml2YXRlIGluaGVyaXQgIi9zZWN1cmUvbWlzYy9maWxlc3lzL2ZpbGVzeXMiOworCitzdGF0aWMgc3RyaW5nIHVzZXI7IC8vIE5hbWUgZGVzIHp1Z2Vob2VyaWdlbiBVc2VycworCitub21hc2sgcHJpdmF0ZSBpbnQgc2VjdXJlX2ltcGNhbGwoKSB7CisgIHJldHVybgorICAgIGdldHVpZChwcmV2aW91c19vYmplY3QoKSkgPT0gUk9PVElEICYmCisgICAgZ2V0ZXVpZChwcmV2aW91c19vYmplY3QoKSkgPT0gUk9PVElEOworCit9CisKKy8vIE5hY2ggZGVtIEF1ZnJ1ZiB2b24gU2V0VXNlciB3aXJkIGRlciBGaWxlbmFtZSBnZWFlZG5lcnQsIHNvZGFzcworLy8gZGFzIG5vcm1hbGUgY2xvbmVwIGluIGdldF9kaXIgbmljaHQgbWVociBnZWh0LiBIaWVyIGVpbiBlcnNhdHouCitwcml2YXRlIG5vbWFzayBpbnQgbXlfaXNfY2xvbmUoKSB7CisgIHJldHVybiBtZW1iZXIob2JqZWN0X25hbWUodGhpc19vYmplY3QoKSksJzonKT49MDsKK30KKworbm9tYXNrIHZvaWQgY3JlYXRlKCkgeworICBpZiggIWNsb25lcCh0aGlzX29iamVjdCgpKSApIHsKKyAgICBzZXRfbmV4dF9yZXNldCggLTEgKTsgLy8gYmx1ZXByaW50IHNvbGwgbmljaHQgc3RlcmJlbgorICAgIHJldHVybjsKKyAgfQorICAvL2lmKCBzZWN1cmVfaW1wY2FsbCgpICkgOjpjcmVhdGUoKTsKK30KKworbm9tYXNrIGludCBTZXRVc2VyKCBzdHJpbmcgbmFtZSApIHsKKyAgaWYoICFzZWN1cmVfaW1wY2FsbCgpIHx8ICFjbG9uZXAodGhpc19vYmplY3QoKSkgKSByZXR1cm4gLTI7CisgIGlmKCBzdHJpbmdwKHVzZXIpICYmIHVzZXIgIT0gIiIgKSB7CisgICAgLy93cml0ZSggIlVzZXI9Iit1c2VyKyJcbiIgKTsKKyAgICByZXR1cm4gLTE7IC8vIHNjaG9uIGVpbiBuYW1lIGRhIQorICB9CisgIHVzZXIgPSBsb3dlcl9jYXNlKG5hbWUpOworICBzZXRldWlkKCB1c2VyICk7CisgIHNldF9uZXh0X3Jlc2V0KCAxODAwICk7Cit9CisKKy8vIEdpYnQgZWluZW4gbmVnYXRpdmVuIFdlcnQgenVy/GNrLCB3ZW5uIGRpZSBEYXRlaSBuaWNodCBnZWxlc2VuIHdlcmRlbgorLy8ga2FubiBvZGVyIGVpbmVuIHN0cmluZywgZGVyIGRpZSBnZXNhbXRlbiBEYXRlbiBkZXMgVmVyemVpY2huaXNzZXMKKy8vIGVudGjkbHQuCitub21hc2sgbWl4ZWQgR2V0RGlyKHN0cmluZyBkaXIpCit7CisgIG1peGVkIHJldDsgcmV0ID0gIiI7CisgIGlmKCAhc2VjdXJlX2ltcGNhbGwoKSB8fCAhbXlfaXNfY2xvbmUoKSkgcmV0dXJuIC0yOworICBpZiggIXN0cmluZ3AodXNlcikgfHwgdXNlcj09IiIgKSByZXR1cm4gLTE7CisgIF9sc19vdXRwdXQoIGRpciwgJnJldCwgdXNlciwgMHg4MyApOworICBzZXRfbmV4dF9yZXNldCggMTgwMCApOworICByZXR1cm4gcmV0OworfQorCitub21hc2sgdm9pZCByZXNldCgpIHsKKyAgZGVzdHJ1Y3QodGhpc19vYmplY3QoKSk7Cit9CisKK3ZhcmFyZ3MgbWl4ZWQgbW92ZSgpIHsKKyAgcmV0dXJuIC0xOworfQorCisvLyBGdWVyIGRpZSBNZWxkdW5nIGF1ZiBGVFAKK25vbWFzayBzdHJpbmcgbmFtZSgpIHsKKyAgcmV0dXJuIGNhcGl0YWxpemUodXNlcik7Cit9Cg==