R2l0IGNvbW1pdCA5YWQ5OWU1YWY1ZTJkZTAyNzZhNTMxYTc5NjZmMjE1MTJmOGY3NjU2IGJ5IERt aXRyeSBLYXpha292LgpDb21taXR0ZWQgb24gMTAvMDIvMjAxNiBhdCAxMjo1Mi4KUHVzaGVkIGJ5 IGRrYXpha292IGludG8gYnJhbmNoICdrcml0YS1sYXllcnMtZ3VpLWthemFrb3YnLgoKW0ZFQVRV UkVdIEltcGxlbWVudCBmaWx0ZXJpbmcgb2YgbGF5ZXJzIGJhc2luZyBvbiB0aGVpciBjb2xvcnMK CldlIG5vdyBoYXZlIGEgc3BlY2lhbCBwcm94eSBtb2RlbCB0aGF0IGZpbHRlcnMgYWxsIHRoZSBs YXllcnMKd2hpY2ggaGF2ZSBmb3JiaWRkZW4gY29sb3JzIGFuZCB0aGF0IGFyZSBub3QgYWN0aXZl IGF0IHRoZSBtb21lbnQuCgpDQzpraW1hZ2VzaG9wQGtkZS5vcmcKUmVmIFQxMTE5LFQxMDYKCk0g ICsyICAgIC0wICAgIGxpYnMvdWkvQ01ha2VMaXN0cy50eHQKQSAgKzEzMCAgLTAgICAgbGlicy91 aS9raXNfbm9kZV9maWx0ZXJfcHJveHlfbW9kZWwuY3BwICAgICBbTGljZW5zZTogR1BMICh2Misp XQpBICArNTggICAtMCAgICBsaWJzL3VpL2tpc19ub2RlX2ZpbHRlcl9wcm94eV9tb2RlbC5oICAg ICBbTGljZW5zZTogR1BMICh2MispXQpNICArMCAgICAtMSAgICBsaWJzL3VpL2tpc19ub2RlX21v ZGVsLmgKTSAgKzIgICAgLTAgICAgbGlicy91aS9raXNfbm9kZV92aWV3X3Zpc2liaWxpdHlfZGVs ZWdhdGUuY3BwCk0gICsxNCAgIC0wICAgIGxpYnMvdWkvdGVzdHMva2lzX25vZGVfdmlld190ZXN0 LmNwcApBICArMzQwICAtMCAgICBsaWJzL3VpL3dpZGdldHMva2lzX2NvbG9yX2ZpbHRlcl9jb21i by5jcHAgICAgIFtMaWNlbnNlOiBHUEwgKHYyKyldCkMgICsyOSAgIC0xOSAgIGxpYnMvdWkvd2lk Z2V0cy9raXNfY29sb3JfZmlsdGVyX2NvbWJvLmggW2Zyb206IGxpYnMvdWkva2lzX25vZGVfdmll d192aXNpYmlsaXR5X2RlbGVnYXRlLmNwcCAtIDA1MiUgc2ltaWxhcml0eV0KTSAgKzQxICAgLTM5 ICAgcGx1Z2lucy9leHRlbnNpb25zL2RvY2tlcnMvZGVmYXVsdGRvY2tlcnMva2lzX2xheWVyX2Jv eC5jcHAKTSAgKzUgICAgLTEgICAgcGx1Z2lucy9leHRlbnNpb25zL2RvY2tlcnMvZGVmYXVsdGRv Y2tlcnMva2lzX2xheWVyX2JveC5oCk0gICs2ICAgIC0yNiAgIHBsdWdpbnMvZXh0ZW5zaW9ucy9k b2NrZXJzL2RlZmF1bHRkb2NrZXJzL3dkZ2xheWVyYm94LnVpCgpodHRwOi8vY29tbWl0cy5rZGUu b3JnL2tyaXRhLzlhZDk5ZTVhZjVlMmRlMDI3NmE1MzFhNzk2NmYyMTUxMmY4Zjc2NTYKCmRpZmYg LS1naXQgYS9saWJzL3VpL0NNYWtlTGlzdHMudHh0IGIvbGlicy91aS9DTWFrZUxpc3RzLnR4dApp bmRleCA1NmNhNzhlLi4yYmM1NDk1IDEwMDY0NAotLS0gYS9saWJzL3VpL0NNYWtlTGlzdHMudHh0 CisrKyBiL2xpYnMvdWkvQ01ha2VMaXN0cy50eHQKQEAgLTEyNiw2ICsxMjYsNyBAQCBzZXQoa3Jp dGF1aV9MSUJfU1JDUwogICAgIGtpc19ub2RlX3NlbGVjdGlvbl9hZGFwdGVyLmNwcAogICAgIGtp c19ub2RlX2luc2VydGlvbl9hZGFwdGVyLmNwcAogICAgIGtpc19ub2RlX21vZGVsLmNwcAorICAg IGtpc19ub2RlX2ZpbHRlcl9wcm94eV9tb2RlbC5jcHAKICAgICBraXNfbW9kZWxfaW5kZXhfY29u dmVydGVyX2Jhc2UuY3BwCiAgICAga2lzX21vZGVsX2luZGV4X2NvbnZlcnRlci5jcHAKICAgICBr aXNfbW9kZWxfaW5kZXhfY29udmVydGVyX3Nob3dfYWxsLmNwcApAQCAtMjU1LDYgKzI1Niw3IEBA IHNldChrcml0YXVpX0xJQl9TUkNTCiAgICAgd2lkZ2V0cy9raXNfZmxvYXRpbmdfbWVzc2FnZS5j cHAKICAgICB3aWRnZXRzL2tpc19sb2RfYXZhaWxhYmlsaXR5X3dpZGdldC5jcHAKICAgICB3aWRn ZXRzL2tpc19jb2xvcl9sYWJlbF9zZWxlY3Rvcl93aWRnZXQuY3BwCisgICAgd2lkZ2V0cy9raXNf Y29sb3JfZmlsdGVyX2NvbWJvLmNwcAogICAgIGlucHV0L2tpc19pbnB1dF9tYW5hZ2VyLmNwcAog ICAgIGlucHV0L2tpc19pbnB1dF9tYW5hZ2VyX3AuY3BwCiAgICAgaW5wdXQva2lzX2V4dGVuZGVk X21vZGlmaWVyc19tYXBwZXIuY3BwCmRpZmYgLS1naXQgYS9saWJzL3VpL2tpc19ub2RlX2ZpbHRl cl9wcm94eV9tb2RlbC5jcHAgYi9saWJzL3VpL2tpc19ub2RlX2ZpbHRlcl9wcm94eV9tb2RlbC5j cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwMGVkNgotLS0gL2Rldi9u dWxsCisrKyBiL2xpYnMvdWkva2lzX25vZGVfZmlsdGVyX3Byb3h5X21vZGVsLmNwcApAQCAtMCww ICsxLDEzMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTUgRG1pdHJ5IEthemFrb3YgPGRp bXVsYTczQGdtYWlsLmNvbT4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJraXNfbm9kZV9maWx0ZXJf cHJveHlfbW9kZWwuaCIKKworI2luY2x1ZGUgPFFTZXQ+CisjaW5jbHVkZSAia2lzX25vZGUuaCIK KyNpbmNsdWRlICJraXNfbm9kZV9tb2RlbC5oIgorI2luY2x1ZGUgImtpc19ub2RlX21hbmFnZXIu aCIKKyNpbmNsdWRlICJraXNfc2lnbmFsX2NvbXByZXNzb3IuaCIKKworCitzdHJ1Y3QgS2lzTm9k ZUZpbHRlclByb3h5TW9kZWw6OlByaXZhdGUKK3sKKyAgICBQcml2YXRlKCkgOiBub2RlTW9kZWwo MCksIGFjdGl2ZU5vZGVDb21wcmVzc29yKDEwMDAsIEtpc1NpZ25hbENvbXByZXNzb3I6OkZJUlNU X0lOQUNUSVZFKSB7fQorCisgICAgS2lzTm9kZU1vZGVsICpub2RlTW9kZWw7CisgICAgS2lzTm9k ZVNQIHBlbmRpbmdBY3RpdmVOb2RlOworICAgIEtpc05vZGVTUCBhY3RpdmVOb2RlOworICAgIFFT ZXQ8aW50PiBhY2NlcHRlZExhYmVsczsKKyAgICBLaXNTaWduYWxDb21wcmVzc29yIGFjdGl2ZU5v ZGVDb21wcmVzc29yOworCisgICAgYm9vbCBjaGVja0luZGV4QWxsb3dlZFJlY3Vyc2l2ZWx5KFFN b2RlbEluZGV4IHNyY0luZGV4KTsKK307CisKK0tpc05vZGVGaWx0ZXJQcm94eU1vZGVsOjpLaXNO b2RlRmlsdGVyUHJveHlNb2RlbChRT2JqZWN0ICpwYXJlbnQpCisgICAgOiBRU29ydEZpbHRlclBy b3h5TW9kZWwocGFyZW50KSwKKyAgICAgIG1fZChuZXcgUHJpdmF0ZSkKK3sKKyAgICBjb25uZWN0 KCZtX2QtPmFjdGl2ZU5vZGVDb21wcmVzc29yLCBTSUdOQUwodGltZW91dCgpKSwgU0xPVChzbG90 VXBkYXRlQ3VycmVudE5vZGVGaWx0ZXIoKSkpOworfQorCitLaXNOb2RlRmlsdGVyUHJveHlNb2Rl bDo6fktpc05vZGVGaWx0ZXJQcm94eU1vZGVsKCkKK3sKK30KKwordm9pZCBLaXNOb2RlRmlsdGVy UHJveHlNb2RlbDo6c2V0Tm9kZU1vZGVsKEtpc05vZGVNb2RlbCAqbW9kZWwpCit7CisgICAgbV9k LT5ub2RlTW9kZWwgPSBtb2RlbDsKKyAgICBzZXRTb3VyY2VNb2RlbChtb2RlbCk7Cit9CisKK2Jv b2wgS2lzTm9kZUZpbHRlclByb3h5TW9kZWw6OlByaXZhdGU6OmNoZWNrSW5kZXhBbGxvd2VkUmVj dXJzaXZlbHkoUU1vZGVsSW5kZXggc3JjSW5kZXgpCit7CisgICAgS2lzTm9kZVNQIG5vZGUgPSBu b2RlTW9kZWwtPm5vZGVGcm9tSW5kZXgoc3JjSW5kZXgpOworICAgIGlmIChub2RlID09IGFjdGl2 ZU5vZGUgfHwKKyAgICAgICAgYWNjZXB0ZWRMYWJlbHMuY29udGFpbnMobm9kZS0+Y29sb3JMYWJl bEluZGV4KCkpKSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBy ZXN1bHQgPSBmYWxzZTsKKworICAgIGNvbnN0IGludCBudW1DaGlsZHJlbiA9IHNyY0luZGV4Lm1v ZGVsKCktPnJvd0NvdW50KHNyY0luZGV4KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNo aWxkcmVuOyBpKyspIHsKKyAgICAgICAgUU1vZGVsSW5kZXggY2hpbGQgPSBzcmNJbmRleC5jaGls ZChpLCAwKTsKKyAgICAgICAgaWYgKGNoZWNrSW5kZXhBbGxvd2VkUmVjdXJzaXZlbHkoY2hpbGQp KSB7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEtpc05vZGVGaWx0 ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9k ZWxJbmRleCAmc291cmNlX3BhcmVudCkgY29uc3QKK3sKKyAgICBLSVNfQVNTRVJUX1JFQ09WRVIo bV9kLT5ub2RlTW9kZWwpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IFFNb2RlbEluZGV4 IGluZGV4ID0gc291cmNlTW9kZWwoKS0+aW5kZXgoc291cmNlX3JvdywgMCwgc291cmNlX3BhcmVu dCk7CisgICAgS2lzTm9kZVNQIG5vZGUgPSBtX2QtPm5vZGVNb2RlbC0+bm9kZUZyb21JbmRleChp bmRleCk7CisKKyAgICByZXR1cm4gIW5vZGUgfHwKKyAgICAgICAgbV9kLT5hY2NlcHRlZExhYmVs cy5pc0VtcHR5KCkgfHwKKyAgICAgICAgbV9kLT5jaGVja0luZGV4QWxsb3dlZFJlY3Vyc2l2ZWx5 KGluZGV4KTsKK30KKworS2lzTm9kZVNQIEtpc05vZGVGaWx0ZXJQcm94eU1vZGVsOjpub2RlRnJv bUluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCkgY29uc3QKK3sKKyAgICBLSVNfQVNTRVJU X1JFQ09WRVIobV9kLT5ub2RlTW9kZWwpIHsgcmV0dXJuIDA7IH0KKworICAgIFFNb2RlbEluZGV4 IHNyY0luZGV4ID0gbWFwVG9Tb3VyY2UoaW5kZXgpOworICAgIHJldHVybiBtX2QtPm5vZGVNb2Rl bC0+bm9kZUZyb21JbmRleChzcmNJbmRleCk7Cit9CisKK1FNb2RlbEluZGV4IEtpc05vZGVGaWx0 ZXJQcm94eU1vZGVsOjppbmRleEZyb21Ob2RlKEtpc05vZGVTUCBub2RlKSBjb25zdAoreworICAg IEtJU19BU1NFUlRfUkVDT1ZFUihtX2QtPm5vZGVNb2RlbCkgeyByZXR1cm4gUU1vZGVsSW5kZXgo KTsgfQorCisgICAgUU1vZGVsSW5kZXggc3JjSW5kZXggPSBtX2QtPm5vZGVNb2RlbC0+aW5kZXhG cm9tTm9kZShub2RlKTsKKyAgICByZXR1cm4gbWFwRnJvbVNvdXJjZShzcmNJbmRleCk7Cit9CisK K3ZvaWQgS2lzTm9kZUZpbHRlclByb3h5TW9kZWw6OnNldEFjY2VwdGVkTGFiZWxzKGNvbnN0IFFM aXN0PGludD4gJnZhbHVlKQoreworICAgIG1fZC0+YWNjZXB0ZWRMYWJlbHMgPSBRU2V0PGludD46 OmZyb21MaXN0KHZhbHVlKTsKKyAgICBpbnZhbGlkYXRlRmlsdGVyKCk7Cit9CisKK3ZvaWQgS2lz Tm9kZUZpbHRlclByb3h5TW9kZWw6OnNldEFjdGl2ZU5vZGUoS2lzTm9kZVNQIG5vZGUpCit7Cisg ICAgbV9kLT5wZW5kaW5nQWN0aXZlTm9kZSA9IG5vZGU7CisKKyAgICBpZiAoaW5kZXhGcm9tTm9k ZShub2RlKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9kLT5hY3RpdmVOb2RlQ29tcHJlc3Nvci5z dGFydCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3RVcGRhdGVDdXJyZW50Tm9kZUZpbHRl cigpOworICAgIH0KK30KKwordm9pZCBLaXNOb2RlRmlsdGVyUHJveHlNb2RlbDo6c2xvdFVwZGF0 ZUN1cnJlbnROb2RlRmlsdGVyKCkKK3sKKyAgICBtX2QtPmFjdGl2ZU5vZGUgPSBtX2QtPnBlbmRp bmdBY3RpdmVOb2RlOworICAgIGludmFsaWRhdGVGaWx0ZXIoKTsKK30KZGlmZiAtLWdpdCBhL2xp YnMvdWkva2lzX25vZGVfZmlsdGVyX3Byb3h5X21vZGVsLmggYi9saWJzL3VpL2tpc19ub2RlX2Zp bHRlcl9wcm94eV9tb2RlbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMz MmQ5MTgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL2tpc19ub2RlX2ZpbHRlcl9wcm94eV9t b2RlbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE1IERtaXRy eSBLYXpha292IDxkaW11bGE3M0BnbWFpbC5jb20+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fS0lT X05PREVfRklMVEVSX1BST1hZX01PREVMX0gKKyNkZWZpbmUgX19LSVNfTk9ERV9GSUxURVJfUFJP WFlfTU9ERUxfSAorCisjaW5jbHVkZSA8UVNjb3BlZFBvaW50ZXI+CisjaW5jbHVkZSA8UVNvcnRG aWx0ZXJQcm94eU1vZGVsPgorI2luY2x1ZGUgImtpc190eXBlcy5oIgorI2luY2x1ZGUgImtyaXRh dWlfZXhwb3J0LmgiCisKK2NsYXNzIEtpc05vZGVNb2RlbDsKK2NsYXNzIEtpc05vZGVEdW1teTsK K2NsYXNzIEtpc05vZGVNYW5hZ2VyOworCisKK2NsYXNzIEtSSVRBVUlfRVhQT1JUIEtpc05vZGVG aWx0ZXJQcm94eU1vZGVsIDogcHVibGljIFFTb3J0RmlsdGVyUHJveHlNb2RlbAoreworICAgIFFf T0JKRUNUCitwdWJsaWM6CisgICAgS2lzTm9kZUZpbHRlclByb3h5TW9kZWwoUU9iamVjdCAqcGFy ZW50KTsKKyAgICB+S2lzTm9kZUZpbHRlclByb3h5TW9kZWwoKTsKKworICAgIHZvaWQgc2V0Tm9k ZU1vZGVsKEtpc05vZGVNb2RlbCAqbW9kZWwpOworCisgICAgYm9vbCBmaWx0ZXJBY2NlcHRzUm93 KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmc291cmNlX3BhcmVudCkgY29uc3Q7 CisgICAgdm9pZCBzZXRBY2NlcHRlZExhYmVscyhjb25zdCBRTGlzdDxpbnQ+ICZ2YWx1ZSk7CisK KyAgICBLaXNOb2RlU1Agbm9kZUZyb21JbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgpIGNv bnN0OworICAgIFFNb2RlbEluZGV4IGluZGV4RnJvbU5vZGUoS2lzTm9kZVNQIG5vZGUpIGNvbnN0 OworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHNldEFjdGl2ZU5vZGUoS2lzTm9kZVNQIG5v ZGUpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBzbG90VXBkYXRlQ3VycmVudE5vZGVG aWx0ZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUHJpdmF0ZTsKKyAgICBjb25zdCBRU2Nv cGVkUG9pbnRlcjxQcml2YXRlPiBtX2Q7Cit9OworCisjZW5kaWYgLyogX19LSVNfTk9ERV9GSUxU RVJfUFJPWFlfTU9ERUxfSCAqLwpkaWZmIC0tZ2l0IGEvbGlicy91aS9raXNfbm9kZV9tb2RlbC5o IGIvbGlicy91aS9raXNfbm9kZV9tb2RlbC5oCmluZGV4IDFmNTJhNjMuLmVkNmY3NTkgMTAwNjQ0 Ci0tLSBhL2xpYnMvdWkva2lzX25vZGVfbW9kZWwuaAorKysgYi9saWJzL3VpL2tpc19ub2RlX21v ZGVsLmgKQEAgLTEyNyw3ICsxMjcsNiBAQCBwdWJsaWM6CiAKIFFfU0lHTkFMUzoKIAotICAgIHZv aWQgbm9kZUFjdGl2YXRlZChLaXNOb2RlU1ApOwogICAgIHZvaWQgdG9nZ2xlSXNvbGF0ZUFjdGl2 ZU5vZGUoKTsKIAogcHJvdGVjdGVkIFFfU0xPVFM6CmRpZmYgLS1naXQgYS9saWJzL3VpL2tpc19u b2RlX3ZpZXdfdmlzaWJpbGl0eV9kZWxlZ2F0ZS5jcHAgYi9saWJzL3VpL2tpc19ub2RlX3ZpZXdf dmlzaWJpbGl0eV9kZWxlZ2F0ZS5jcHAKaW5kZXggZTNjOTkwMi4uZjBlODBlOSAxMDA2NDQKLS0t IGEvbGlicy91aS9raXNfbm9kZV92aWV3X3Zpc2liaWxpdHlfZGVsZWdhdGUuY3BwCisrKyBiL2xp YnMvdWkva2lzX25vZGVfdmlld192aXNpYmlsaXR5X2RlbGVnYXRlLmNwcApAQCAtMzksNiArMzks OCBAQCB2b2lkIEtpc05vZGVWaWV3VmlzaWJpbGl0eURlbGVnYXRlOjpwYWludChRUGFpbnRlciAq cGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uVgogCiBRU2l6ZSBLaXNOb2RlVmlld1Zpc2liaWxp dHlEZWxlZ2F0ZTo6c2l6ZUhpbnQoY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJm9wdGlvbiwg Y29uc3QgUU1vZGVsSW5kZXggJmluZGV4KSBjb25zdAogeworICAgIFFfVU5VU0VEKGluZGV4KTsK KwogICAgIEtpc05vZGVWaWV3Q29sb3JTY2hlbWUgc2NtOwogICAgIHJldHVybiBRU2l6ZShvcHRp b24ucmVjdC53aWR0aCgpLCBzY20ucm93SGVpZ2h0KCkpOwogfQpkaWZmIC0tZ2l0IGEvbGlicy91 aS90ZXN0cy9raXNfbm9kZV92aWV3X3Rlc3QuY3BwIGIvbGlicy91aS90ZXN0cy9raXNfbm9kZV92 aWV3X3Rlc3QuY3BwCmluZGV4IDQzYWE3NmYuLjAwNzRjMjAgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkv dGVzdHMva2lzX25vZGVfdmlld190ZXN0LmNwcAorKysgYi9saWJzL3VpL3Rlc3RzL2tpc19ub2Rl X3ZpZXdfdGVzdC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxRRGlhbG9nPgogI2lu Y2x1ZGUgPFFWQm94TGF5b3V0PgogI2luY2x1ZGUgPFFHcmlkTGF5b3V0PgorI2luY2x1ZGUgPFFM YWJlbD4KIAogI2luY2x1ZGUgPEtpc05vZGVWaWV3Lmg+CiAKQEAgLTMxLDYgKzMyLDcgQEAKICNp bmNsdWRlICJmbGFrZS9raXNfc2hhcGVfY29udHJvbGxlci5oIgogI2luY2x1ZGUgImtpc191bmRv X2FkYXB0ZXIuaCIKICNpbmNsdWRlICJraXNfbm9kZV9tb2RlbC5oIgorI2luY2x1ZGUgImtpc19j b2xvcl9maWx0ZXJfY29tYm8uaCIKIAogCiB2b2lkIEtpc05vZGVWaWV3VGVzdDo6aW5pdCgpCkBA IC03Myw2ICs3NSwxOCBAQCB2b2lkIEtpc05vZGVWaWV3VGVzdDo6dGVzdExheWVycygpCiAgICAg bW9kZWwtPnNldER1bW1pZXNGYWNhZGUobV9zaGFwZUNvbnRyb2xsZXIsIG1faW1hZ2UsIG1fc2hh cGVDb250cm9sbGVyLCAwLCAwKTsKIAogICAgIFFWQm94TGF5b3V0ICpsYXlvdXQgPSBuZXcgUVZC b3hMYXlvdXQoJmRsZyk7CisgICAgS2lzQ29sb3JGaWx0ZXJDb21ibyAqY2IgPSBuZXcgS2lzQ29s b3JGaWx0ZXJDb21ibygmZGxnKTsKKworICAgIFFTZXQ8aW50PiBsYWJlbHM7CisgICAgZm9yIChp bnQgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgbGFiZWxzLmluc2VydChpKTsKKyAgICB9 CisgICAgY2ItPnVwZGF0ZUF2YWlsYWJsZUxhYmVscyhsYWJlbHMpOworCisgICAgUUhCb3hMYXlv dXQgKmhib3ggPSBuZXcgUUhCb3hMYXlvdXQoJmRsZyk7CisgICAgaGJveC0+YWRkU3RyZXRjaCgx KTsKKyAgICBoYm94LT5hZGRXaWRnZXQoY2IpOworICAgIGxheW91dC0+YWRkTGF5b3V0KGhib3gp OwogICAgIGxheW91dC0+YWRkV2lkZ2V0KHZpZXcpOwogCiAgICAgZGxnLnJlc2l6ZSgyODAsIDQw MCk7CmRpZmYgLS1naXQgYS9saWJzL3VpL3dpZGdldHMva2lzX2NvbG9yX2ZpbHRlcl9jb21iby5j cHAgYi9saWJzL3VpL3dpZGdldHMva2lzX2NvbG9yX2ZpbHRlcl9jb21iby5jcHAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3NzUwMAotLS0gL2Rldi9udWxsCisrKyBiL2xp YnMvdWkvd2lkZ2V0cy9raXNfY29sb3JfZmlsdGVyX2NvbWJvLmNwcApAQCAtMCwwICsxLDM0MCBA QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTUgRG1pdHJ5IEthemFrb3YgPGRpbXVsYTczQGdt YWlsLmNvbT4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJraXNfY29sb3JfZmlsdGVyX2NvbWJvLmgi CisKKyNpbmNsdWRlIDxrbG9jYWxpemVkc3RyaW5nLmg+CisjaW5jbHVkZSA8UVN0eWxlUGFpbnRl cj4KKyNpbmNsdWRlIDxRdENvcmUvcW1hdGguaD4KKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+Cisj aW5jbHVkZSA8UVN0eWxlT3B0aW9uPgorI2luY2x1ZGUgPFFTb3J0RmlsdGVyUHJveHlNb2RlbD4K KyNpbmNsdWRlIDxRU3RhbmRhcmRJdGVtTW9kZWw+CisjaW5jbHVkZSA8UUxpc3RWaWV3PgorI2lu Y2x1ZGUgPFFNb3VzZUV2ZW50PgorCisKKworCisjaW5jbHVkZSAia2lzX25vZGVfdmlld19jb2xv cl9zY2hlbWUuaCIKKyNpbmNsdWRlICJraXNfZGVidWcuaCIKKyNpbmNsdWRlICJraXNfaWNvbl91 dGlscy5oIgorI2luY2x1ZGUgImtyaXRhX3V0aWxzLmgiCisjaW5jbHVkZSAia2lzX25vZGUuaCIK KworZW51bSBBZGRpdGlvbmFsUm9sZXMgeworICAgIE9yaWdpbmFsTGFiZWxJbmRleCA9IFF0OjpV c2VyUm9sZSArIDEwMDAKK307CisKKworc3RydWN0IExhYmVsRmlsdGVyaW5nTW9kZWwgOiBwdWJs aWMgUVNvcnRGaWx0ZXJQcm94eU1vZGVsCit7CisgICAgTGFiZWxGaWx0ZXJpbmdNb2RlbChRT2Jq ZWN0ICpwYXJlbnQpIDogUVNvcnRGaWx0ZXJQcm94eU1vZGVsKHBhcmVudCkge30KKworICAgIGJv b2wgZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJnNv dXJjZV9wYXJlbnQpIGNvbnN0IHsKKyAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggaW5kZXggPSBz b3VyY2VNb2RlbCgpLT5pbmRleChzb3VyY2Vfcm93LCAwLCBzb3VyY2VfcGFyZW50KTsKKyAgICAg ICAgY29uc3QgaW50IGxhYmVsSW5kZXggPSBpbmRleC5kYXRhKE9yaWdpbmFsTGFiZWxJbmRleCku dG9JbnQoKTsKKworCisgICAgICAgIHJldHVybiBsYWJlbEluZGV4IDwgMCB8fCBtX2FjY2VwdGVk TGFiZWxzLmNvbnRhaW5zKGxhYmVsSW5kZXgpOworICAgIH0KKworICAgIHZvaWQgc2V0QWNjZXB0 ZWRMYWJlbHMoY29uc3QgUVNldDxpbnQ+ICZ2YWx1ZSkgeworICAgICAgICBtX2FjY2VwdGVkTGFi ZWxzID0gdmFsdWU7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXIoKTsKKyAgICB9CisKK3ByaXZh dGU6CisgICAgUVNldDxpbnQ+IG1fYWNjZXB0ZWRMYWJlbHM7Cit9OworCisKK3N0cnVjdCBDb21i b0V2ZW50RmlsdGVyIDogcHVibGljIFFPYmplY3QgeworICAgIENvbWJvRXZlbnRGaWx0ZXIoS2lz Q29sb3JGaWx0ZXJDb21ibyAqcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCksIG1fYnV0dG9uUHJl c3NlZChmYWxzZSkge30KKworICAgIGJvb2wgZXZlbnRGaWx0ZXIoUU9iamVjdCAqb2JqLCBRRXZl bnQgKmV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6TGVhdmUp IHsKKyAgICAgICAgICAgIG1fYnV0dG9uUHJlc3NlZCA9IGZhbHNlOworCisgICAgICAgIH0gZWxz ZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MpIHsKKyAgICAg ICAgICAgIFFNb3VzZUV2ZW50ICptZXZlbnQgPSBzdGF0aWNfY2FzdDxRTW91c2VFdmVudCo+KGV2 ZW50KTsKKyAgICAgICAgICAgIG1fYnV0dG9uUHJlc3NlZCA9IG1ldmVudC0+YnV0dG9uKCkgPT0g UXQ6OkxlZnRCdXR0b247CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IFFF dmVudDo6TW91c2VCdXR0b25SZWxlYXNlKSB7CisgICAgICAgICAgICBRTW91c2VFdmVudCAqbWV2 ZW50ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihldmVudCk7CisgICAgICAgICAgICBRTW9k ZWxJbmRleCBpbmRleCA9IG1fcGFyZW50LT52aWV3KCktPmluZGV4QXQobWV2ZW50LT5wb3MoKSk7 CisgICAgICAgICAgICBpZiAoIWluZGV4LmlzVmFsaWQoKSkgcmV0dXJuIGZhbHNlOworCisgICAg ICAgICAgICAvKioKKyAgICAgICAgICAgICAqIFdlIHNob3VsZCBlYXQgdGhlIGZpcnN0IGV2ZW50 IHRoYXQgYXJyaXZlcyBleGFjdGx5IHdoZW4KKyAgICAgICAgICAgICAqIHRoZSBkcm9wIGRvd24g YXBwZWFycyBvbiBzY3JlZW4uCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICghbV9i dXR0b25QcmVzc2VkKSByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgY29uc3QgYm9vbCB0b1Vu Y2hlY2tlZFN0YXRlID0gaW5kZXguZGF0YShRdDo6Q2hlY2tTdGF0ZVJvbGUpID09IFF0OjpDaGVj a2VkOworCisgICAgICAgICAgICBpZiAodG9VbmNoZWNrZWRTdGF0ZSkgeworICAgICAgICAgICAg ICAgIG1fcGFyZW50LT5tb2RlbCgpLT5zZXREYXRhKGluZGV4LCBRdDo6VW5jaGVja2VkLCBRdDo6 Q2hlY2tTdGF0ZVJvbGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBt X3BhcmVudC0+bW9kZWwoKS0+c2V0RGF0YShpbmRleCwgUXQ6OkNoZWNrZWQsIFF0OjpDaGVja1N0 YXRlUm9sZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmRleC5kYXRhKE9y aWdpbmFsTGFiZWxJbmRleCkudG9JbnQoKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgbV9wYXJlbnQtPm1vZGVsKCktPnJvd0NvdW50KCk7IGkrKykgeworICAg ICAgICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJbmRleCAmb3RoZXIgPSBtX3BhcmVudC0+bW9k ZWwoKS0+aW5kZXgoaSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlci5kYXRhKE9y aWdpbmFsTGFiZWxJbmRleCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy ZW50LT5tb2RlbCgpLT5zZXREYXRhKG90aGVyLCB0b1VuY2hlY2tlZFN0YXRlID8gUXQ6OlVuY2hl Y2tlZCA6IFF0OjpDaGVja2VkLCBRdDo6Q2hlY2tTdGF0ZVJvbGUpOworICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgICBib29sIHByZXZDaGVja2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbCBj aGVja2VkVmFyaWVzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgUU1vZGVsSW5kZXggYWxsTGFi ZWxzSW5kZXg7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcGFyZW50 LT5tb2RlbCgpLT5yb3dDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg UU1vZGVsSW5kZXggJm90aGVyID0gbV9wYXJlbnQtPm1vZGVsKCktPmluZGV4KGksIDApOworICAg ICAgICAgICAgICAgICAgICBpZiAob3RoZXIuZGF0YShPcmlnaW5hbExhYmVsSW5kZXgpICE9IC0x KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGN1cnJlbnRDaGVja2VkID0g b3RoZXIuZGF0YShRdDo6Q2hlY2tTdGF0ZVJvbGUpID09IFF0OjpDaGVja2VkOworCisgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHJldkNoZWNrZWQgPSBjdXJyZW50Q2hlY2tlZDsKKyAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZDaGVja2VkICE9 IGN1cnJlbnRDaGVja2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr ZWRWYXJpZXMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh bGxMYWJlbHNJbmRleCA9IG90aGVyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBhbGxMYWJlbHNJbmRleFNob3Vs ZEJlQ2hlY2tlZCA9CisgICAgICAgICAgICAgICAgICAgIHByZXZDaGVja2VkICYmICFjaGVja2Vk VmFyaWVzOworCisgICAgICAgICAgICAgICAgaWYgKGFsbExhYmVsc0luZGV4U2hvdWxkQmVDaGVj a2VkICE9CisgICAgICAgICAgICAgICAgICAgIChhbGxMYWJlbHNJbmRleC5kYXRhKFF0OjpDaGVj a1N0YXRlUm9sZSkgPT0gUXQ6OkNoZWNrZWQpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgbV9w YXJlbnQtPm1vZGVsKCktPnNldERhdGEoYWxsTGFiZWxzSW5kZXgsIGFsbExhYmVsc0luZGV4U2hv dWxkQmVDaGVja2VkID8gUXQ6OkNoZWNrZWQgOiBRdDo6VW5jaGVja2VkLCBRdDo6Q2hlY2tTdGF0 ZVJvbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ZW1pdCBtX3BhcmVudC0+c2VsZWN0ZWRDb2xvcnNDaGFuZ2VkKCk7CisKKyAgICAgICAgICAgIG1f YnV0dG9uUHJlc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg IH0KKworICAgICAgICByZXR1cm4gUU9iamVjdDo6ZXZlbnRGaWx0ZXIob2JqLCBldmVudCk7Cisg ICAgfQorCisgICAgS2lzQ29sb3JGaWx0ZXJDb21ibyAqbV9wYXJlbnQ7CisgICAgYm9vbCBtX2J1 dHRvblByZXNzZWQ7Cit9OworCitjbGFzcyBGdWxsU2l6ZWRMaXN0VmlldyA6IHB1YmxpYyBRTGlz dFZpZXcKK3sKK3B1YmxpYzoKKyAgICBRU2l6ZSBzaXplSGludCgpIGNvbnN0IHsKKyAgICAgICAg cmV0dXJuIGNvbnRlbnRzU2l6ZSgpOworICAgIH0KK307CisKK3N0cnVjdCBLaXNDb2xvckZpbHRl ckNvbWJvOjpQcml2YXRlCit7CisgICAgTGFiZWxGaWx0ZXJpbmdNb2RlbCAqZmlsdGVyaW5nTW9k ZWw7Cit9OworCitLaXNDb2xvckZpbHRlckNvbWJvOjpLaXNDb2xvckZpbHRlckNvbWJvKFFXaWRn ZXQgKnBhcmVudCkKKyAgICA6IFFDb21ib0JveChwYXJlbnQpLAorICAgICAgbV9kKG5ldyBQcml2 YXRlKQoreworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCAqbmV3TW9kZWwgPSBuZXcgUVN0YW5kYXJk SXRlbU1vZGVsKHRoaXMpOworICAgIHNldE1vZGVsKG5ld01vZGVsKTsKKworICAgIHNldFZpZXco bmV3IEZ1bGxTaXplZExpc3RWaWV3KTsKKyAgICB2aWV3KCktPmluc3RhbGxFdmVudEZpbHRlcihu ZXcgQ29tYm9FdmVudEZpbHRlcih0aGlzKSk7CisgICAgdmlldygpLT52aWV3cG9ydCgpLT5pbnN0 YWxsRXZlbnRGaWx0ZXIobmV3IENvbWJvRXZlbnRGaWx0ZXIodGhpcykpOworCisgICAgS2lzTm9k ZVZpZXdDb2xvclNjaGVtZSBzY207CisKKyAgICBRU3RhbmRhcmRJdGVtKiBpdGVtID0gbmV3IFFT dGFuZGFyZEl0ZW0oaTE4bmMoImNvbWJvIGJveDogc2hvdyBhbGwgbGF5ZXJzIiwgIkFsbCIpKTsK KyAgICBpdGVtLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgaXRlbS0+c2V0Q2hlY2tTdGF0ZShR dDo6VW5jaGVja2VkKTsKKyAgICBpdGVtLT5zZXREYXRhKFFDb2xvcihRdDo6dHJhbnNwYXJlbnQp LCBRdDo6QmFja2dyb3VuZENvbG9yUm9sZSk7CisgICAgaXRlbS0+c2V0RGF0YShpbnQoLTEpLCBP cmlnaW5hbExhYmVsSW5kZXgpOworICAgIGl0ZW0tPnNldERhdGEoUVNpemUoMzAsIHNjbS5yb3dI ZWlnaHQoKSksIFF0OjpTaXplSGludFJvbGUpOworICAgIG5ld01vZGVsLT5hcHBlbmRSb3coaXRl bSk7CisKKyAgICBpbnQgbGFiZWxJbmRleCA9IDA7CisgICAgZm9yZWFjaCAoY29uc3QgUUNvbG9y ICZjb2xvciwgc2NtLmFsbENvbG9yTGFiZWxzKCkpIHsKKyAgICAgICAgY29uc3QgUVN0cmluZyB0 aXRsZSA9IGNvbG9yLmFscGhhKCkgPiAwID8gIiIgOiBpMThuYygiY29tYm8gYm94OiBzZWxlY3Qg YWxsIGxheWVycyB3aXRob3V0IGEgbGFiZWwiLCAiTm8gTGFiZWwiKTsKKworICAgICAgICBRU3Rh bmRhcmRJdGVtKiBpdGVtID0gbmV3IFFTdGFuZGFyZEl0ZW0odGl0bGUpOworICAgICAgICBpdGVt LT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgICAgIGl0ZW0tPnNldENoZWNrU3RhdGUoUXQ6OlVu Y2hlY2tlZCk7CisgICAgICAgIGl0ZW0tPnNldERhdGEoY29sb3IsIFF0OjpCYWNrZ3JvdW5kQ29s b3JSb2xlKTsKKyAgICAgICAgaXRlbS0+c2V0RGF0YShsYWJlbEluZGV4LCBPcmlnaW5hbExhYmVs SW5kZXgpOworICAgICAgICBpdGVtLT5zZXREYXRhKFFTaXplKDMwLCBzY20ucm93SGVpZ2h0KCkp LCBRdDo6U2l6ZUhpbnRSb2xlKTsKKyAgICAgICAgbmV3TW9kZWwtPmFwcGVuZFJvdyhpdGVtKTsK KworICAgICAgICBsYWJlbEluZGV4Kys7CisgICAgfQorCisgICAgbV9kLT5maWx0ZXJpbmdNb2Rl bCA9IG5ldyBMYWJlbEZpbHRlcmluZ01vZGVsKHRoaXMpOworICAgIFFBYnN0cmFjdEl0ZW1Nb2Rl bCAqb3JpZ2luYWxNb2RlbCA9IG1vZGVsKCk7CisgICAgb3JpZ2luYWxNb2RlbC0+c2V0UGFyZW50 KG1fZC0+ZmlsdGVyaW5nTW9kZWwpOworCisgICAgbV9kLT5maWx0ZXJpbmdNb2RlbC0+c2V0U291 cmNlTW9kZWwob3JpZ2luYWxNb2RlbCk7CisgICAgc2V0TW9kZWwobV9kLT5maWx0ZXJpbmdNb2Rl bCk7Cit9CisKK0tpc0NvbG9yRmlsdGVyQ29tYm86On5LaXNDb2xvckZpbHRlckNvbWJvKCkKK3sK K30KKwordm9pZCBjb2xsZWN0QXZhaWxhYmxlTGFiZWxzKEtpc05vZGVTUCByb290LCBRU2V0PGlu dD4gKmxhYmVscykKK3sKKyAgICBsYWJlbHMtPmluc2VydChyb290LT5jb2xvckxhYmVsSW5kZXgo KSk7CisKKyAgICBLaXNOb2RlU1Agbm9kZSA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGls ZSAobm9kZSkgeworICAgICAgICBjb2xsZWN0QXZhaWxhYmxlTGFiZWxzKG5vZGUsIGxhYmVscyk7 CisgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KK30KKwordm9pZCBL aXNDb2xvckZpbHRlckNvbWJvOjp1cGRhdGVBdmFpbGFibGVMYWJlbHMoS2lzTm9kZVNQIHJvb3RO b2RlKQoreworICAgIFFTZXQ8aW50PiBsYWJlbHM7CisgICAgY29sbGVjdEF2YWlsYWJsZUxhYmVs cyhyb290Tm9kZSwgJmxhYmVscyk7CisKKyAgICB1cGRhdGVBdmFpbGFibGVMYWJlbHMobGFiZWxz KTsKK30KKwordm9pZCBLaXNDb2xvckZpbHRlckNvbWJvOjp1cGRhdGVBdmFpbGFibGVMYWJlbHMo Y29uc3QgUVNldDxpbnQ+ICZsYWJlbHMpCit7CisgICAgbV9kLT5maWx0ZXJpbmdNb2RlbC0+c2V0 QWNjZXB0ZWRMYWJlbHMobGFiZWxzKTsKK30KKworUUxpc3Q8aW50PiBLaXNDb2xvckZpbHRlckNv bWJvOjpzZWxlY3RlZENvbG9ycygpIGNvbnN0Cit7CisgICAgUUxpc3Q8aW50PiBjb2xvcnM7Cisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtb2RlbCgpLT5yb3dDb3VudCgpOyBpKyspIHsKKyAgICAg ICAgY29uc3QgUU1vZGVsSW5kZXggJm90aGVyID0gbW9kZWwoKS0+aW5kZXgoaSwgMCk7CisgICAg ICAgIGNvbnN0IGludCBsYWJlbCA9IG90aGVyLmRhdGEoT3JpZ2luYWxMYWJlbEluZGV4KS50b0lu dCgpOworCisgICAgICAgIGlmIChsYWJlbCAhPSAtMSAmJgorICAgICAgICAgICAgb3RoZXIuZGF0 YShRdDo6Q2hlY2tTdGF0ZVJvbGUpID09IFF0OjpDaGVja2VkKSB7CisKKyAgICAgICAgICAgIGNv bG9ycyA8PCBsYWJlbDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY29sb3JzOworfQor Cit2b2lkIEtpc0NvbG9yRmlsdGVyQ29tYm86OnBhaW50RXZlbnQoUVBhaW50RXZlbnQgKmV2ZW50 KQoreworICAgIFFfVU5VU0VEKGV2ZW50KTsKKworICAgIFFTdHlsZVBhaW50ZXIgcGFpbnRlcih0 aGlzKTsKKyAgICBwYWludGVyLnNldFBlbihwYWxldHRlKCkuY29sb3IoUVBhbGV0dGU6OlRleHQp KTsKKworICAgIC8vIGRyYXcgdGhlIGNvbWJvYm94IGZyYW1lLCBmb2N1c3JlY3QgYW5kIHNlbGVj dGVkIGV0Yy4KKyAgICBRU3R5bGVPcHRpb25Db21ib0JveCBvcHQ7CisgICAgaW5pdFN0eWxlT3B0 aW9uKCZvcHQpOworICAgIHBhaW50ZXIuZHJhd0NvbXBsZXhDb250cm9sKFFTdHlsZTo6Q0NfQ29t Ym9Cb3gsIG9wdCk7CisKKyAgICB7CisgICAgICAgIEtpc05vZGVWaWV3Q29sb3JTY2hlbWUgc2Nt OworICAgICAgICBjb25zdCBRUmVjdCBlZGl0UmVjdCA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0 KFFTdHlsZTo6Q0NfQ29tYm9Cb3gsICZvcHQsIFFTdHlsZTo6U0NfQ29tYm9Cb3hFZGl0RmllbGQs IHRoaXMpOworICAgICAgICBjb25zdCBpbnQgc2l6ZSA9IHFNaW4oZWRpdFJlY3Qud2lkdGgoKSwg ZWRpdFJlY3QuaGVpZ2h0KCkpOworCisgICAgICAgIGNvbnN0IFFMaXN0PGludD4gc2VsZWN0ZWRD b2xvcnMgPSB0aGlzLT5zZWxlY3RlZENvbG9ycygpOworCisgICAgICAgIGlmIChzZWxlY3RlZENv bG9ycy5zaXplKCkgPT0gMCB8fCBzZWxlY3RlZENvbG9ycy5zaXplKCkgPT0gbW9kZWwoKS0+cm93 Q291bnQoKSAtIDEpIHsKKyAgICAgICAgICAgIFFJY29uIGljb24gPSBLaXNJY29uVXRpbHM6Omxv YWRJY29uKCJ2aWV3LWZpbHRlciIpOworICAgICAgICAgICAgUVBpeG1hcCBwaXhtYXAgPSBpY29u LnBpeG1hcChRU2l6ZShzaXplLCBzaXplKSwgIWlzRW5hYmxlZCgpID8gUUljb246OkRpc2FibGVk IDogUUljb246Ok5vcm1hbCk7CisgICAgICAgICAgICBwYWludGVyLmRyYXdQaXhtYXAoZWRpdFJl Y3QucmlnaHQoKSAtIHNpemUsIGVkaXRSZWN0LnRvcCgpLCBwaXhtYXApOworCisgICAgICAgIH0g ZWxzZSBpZiAoc2VsZWN0ZWRDb2xvcnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgIGNvbnN0 IGludCBjdXJyZW50TGFiZWwgPSBzZWxlY3RlZENvbG9ycy5maXJzdCgpOworICAgICAgICAgICAg UUNvbG9yIGN1cnJlbnRDb2xvciA9IHNjbS5jb2xvckxhYmVsKGN1cnJlbnRMYWJlbCk7CisKKyAg ICAgICAgICAgIGlmIChjdXJyZW50Q29sb3IuYWxwaGEoKSA+IDApIHsKKyAgICAgICAgICAgICAg ICBwYWludGVyLmZpbGxSZWN0KGVkaXRSZWN0LCBjdXJyZW50Q29sb3IpOworICAgICAgICAgICAg fSBlbHNlIGlmIChjdXJyZW50TGFiZWwgPT0gMCkgeworICAgICAgICAgICAgICAgIFFQZW4gb2xk UGVuID0gcGFpbnRlci5wZW4oKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGludCBib3JkZXIg PSA0OworICAgICAgICAgICAgICAgIFFSZWN0IGNyb3NzUmVjdCgwLCAwLCBzaXplIC0gMiAqIGJv cmRlciwgc2l6ZSAtIDIgKiBib3JkZXIpOworICAgICAgICAgICAgICAgIGNyb3NzUmVjdC5tb3Zl Q2VudGVyKGVkaXRSZWN0LmNlbnRlcigpKTsKKworICAgICAgICAgICAgICAgIFFDb2xvciBzaGFk ZSA9IG9wdC5wYWxldHRlLmRhcmsoKS5jb2xvcigpOworICAgICAgICAgICAgICAgIHBhaW50ZXIu c2V0UGVuKFFQZW4oc2hhZGUsIDIpKTsKKyAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdMaW5l KGNyb3NzUmVjdC50b3BMZWZ0KCksIGNyb3NzUmVjdC5ib3R0b21SaWdodCgpKTsKKyAgICAgICAg ICAgICAgICBwYWludGVyLmRyYXdMaW5lKGNyb3NzUmVjdC5ib3R0b21MZWZ0KCksIGNyb3NzUmVj dC50b3BSaWdodCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIGNvbnN0IGludCBib3JkZXIgPSAwOworICAgICAgICAgICAgUVJlY3QgcGllUmVjdCgwLCAw LCBzaXplIC0gMiAqIGJvcmRlciwgc2l6ZSAtIDIgKiBib3JkZXIpOworICAgICAgICAgICAgcGll UmVjdC5tb3ZlQ2VudGVyKGVkaXRSZWN0LmNlbnRlcigpKTsKKworICAgICAgICAgICAgY29uc3Qg aW50IG51bUNvbG9ycyA9IHNlbGVjdGVkQ29sb3JzLnNpemUoKTsKKyAgICAgICAgICAgIGNvbnN0 IGludCBzdGVwID0gMTYgKiAzNjAgLyBudW1Db2xvcnM7CisKKyAgICAgICAgICAgIGludCBjdXJy ZW50QW5nbGUgPSAwOworCisgICAgICAgICAgICAvL3BhaW50ZXIuc2F2ZSgpOyAvLyBvcHRpbWl6 ZSBvdXQhCisgICAgICAgICAgICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlh bGlhc2luZyk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sb3JzOyBp KyspIHsKKyAgICAgICAgICAgICAgICBRQ29sb3IgY29sb3IgPSBzY20uY29sb3JMYWJlbChzZWxl Y3RlZENvbG9yc1tpXSk7CisgICAgICAgICAgICAgICAgUUJydXNoIGJydXNoID0gY29sb3IuYWxw aGEoKSA+IDAgPyBRQnJ1c2goY29sb3IpIDogUUJydXNoKFF0OjpibGFjaywgUXQ6OkRlbnNlNFBh dHRlcm4pOworICAgICAgICAgICAgICAgIHBhaW50ZXIuc2V0UGVuKGNvbG9yKTsKKyAgICAgICAg ICAgICAgICBwYWludGVyLnNldEJydXNoKGJydXNoKTsKKworICAgICAgICAgICAgICAgIHBhaW50 ZXIuZHJhd1BpZShwaWVSZWN0LCBjdXJyZW50QW5nbGUsIHN0ZXApOworICAgICAgICAgICAgICAg IGN1cnJlbnRBbmdsZSArPSBzdGVwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9wYWlu dGVyLnJlc3RvcmUoKTsgLy8gb3B0aW1pemUgb3V0IQorICAgICAgICB9CisgICAgfQorCisgICAg Ly8gZHJhdyB0aGUgaWNvbiBhbmQgdGV4dAorICAgIC8vcGFpbnRlci5kcmF3Q29udHJvbChRU3R5 bGU6OkNFX0NvbWJvQm94TGFiZWwsIG9wdCk7Cit9CisKK1FTaXplIEtpc0NvbG9yRmlsdGVyQ29t Ym86Om1pbmltdW1TaXplSGludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNpemVIaW50KCk7Cit9 CisKK1FTaXplIEtpc0NvbG9yRmlsdGVyQ29tYm86OnNpemVIaW50KCkgY29uc3QKK3sKKyAgICBR U3R5bGVPcHRpb25Db21ib0JveCBvcHQ7CisgICAgaW5pdFN0eWxlT3B0aW9uKCZvcHQpOworCisg ICAgY29uc3QgUVN0eWxlT3B0aW9uICpiYXNlT3B0aW9uID0gcXN0eWxlb3B0aW9uX2Nhc3Q8Y29u c3QgUVN0eWxlT3B0aW9uICo+KCZvcHQpOworICAgIGNvbnN0IGludCBhcnJvd1NpemUgPSBzdHls ZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBNX1Njcm9sbEJhckV4dGVudCwgYmFzZU9wdGlvbiwg dGhpcyk7CisKKyAgICBjb25zdCBRU2l6ZSBvcmlnaW5hbEhpbnQgPSBRQ29tYm9Cb3g6OnNpemVI aW50KCk7CisgICAgUVNpemUgc2goMyAqIGFycm93U2l6ZSwgb3JpZ2luYWxIaW50LmhlaWdodCgp KTsKKworICAgIHJldHVybiBzaC5leHBhbmRlZFRvKFFBcHBsaWNhdGlvbjo6Z2xvYmFsU3RydXQo KSk7Cit9CmRpZmYgLS1naXQgYS9saWJzL3VpL2tpc19ub2RlX3ZpZXdfdmlzaWJpbGl0eV9kZWxl Z2F0ZS5jcHAgYi9saWJzL3VpL3dpZGdldHMva2lzX2NvbG9yX2ZpbHRlcl9jb21iby5oCnNpbWls YXJpdHkgaW5kZXggNTIlCmNvcHkgZnJvbSBsaWJzL3VpL2tpc19ub2RlX3ZpZXdfdmlzaWJpbGl0 eV9kZWxlZ2F0ZS5jcHAKY29weSB0byBsaWJzL3VpL3dpZGdldHMva2lzX2NvbG9yX2ZpbHRlcl9j b21iby5oCmluZGV4IGUzYzk5MDIuLmVkOWNlMDcgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkva2lzX25v ZGVfdmlld192aXNpYmlsaXR5X2RlbGVnYXRlLmNwcAorKysgYi9saWJzL3VpL3dpZGdldHMva2lz X2NvbG9yX2ZpbHRlcl9jb21iby5oCkBAIC0xNiwyOSArMTYsMzkgQEAKICAqICBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw LTEzMDEsIFVTQS4KICAqLwogCi0jaW5jbHVkZSAia2lzX25vZGVfdmlld192aXNpYmlsaXR5X2Rl bGVnYXRlLmgiCisjaWZuZGVmIF9fS0lTX0NPTE9SX0ZJTFRFUl9DT01CT19ICisjZGVmaW5lIF9f S0lTX0NPTE9SX0ZJTFRFUl9DT01CT19ICiAKLSNpbmNsdWRlICJraXNfbm9kZV92aWV3X2NvbG9y X3NjaGVtZS5oIgorI2luY2x1ZGUgPFFTY29wZWRQb2ludGVyPgorI2luY2x1ZGUgPFFDb21ib0Jv eD4KKyNpbmNsdWRlICJrcml0YXVpX2V4cG9ydC5oIgorI2luY2x1ZGUgImtpc190eXBlcy5oIgog CiAKLUtpc05vZGVWaWV3VmlzaWJpbGl0eURlbGVnYXRlOjpLaXNOb2RlVmlld1Zpc2liaWxpdHlE ZWxlZ2F0ZShRT2JqZWN0ICpwYXJlbnQpCi0gICAgOiBRQWJzdHJhY3RJdGVtRGVsZWdhdGUocGFy ZW50KQorY2xhc3MgS1JJVEFVSV9FWFBPUlQgS2lzQ29sb3JGaWx0ZXJDb21ibyA6IHB1YmxpYyBR Q29tYm9Cb3gKIHsKLX0KKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEtpc0NvbG9yRmlsdGVy Q29tYm8oUVdpZGdldCAqcGFyZW50KTsKKyAgICB+S2lzQ29sb3JGaWx0ZXJDb21ibygpOwogCi1L aXNOb2RlVmlld1Zpc2liaWxpdHlEZWxlZ2F0ZTo6fktpc05vZGVWaWV3VmlzaWJpbGl0eURlbGVn YXRlKCkKLXsKLX0KKyAgICB2b2lkIHVwZGF0ZUF2YWlsYWJsZUxhYmVscyhLaXNOb2RlU1Agcm9v dE5vZGUpOworICAgIHZvaWQgdXBkYXRlQXZhaWxhYmxlTGFiZWxzKGNvbnN0IFFTZXQ8aW50PiAm bGFiZWxzKTsKIAotdm9pZCBLaXNOb2RlVmlld1Zpc2liaWxpdHlEZWxlZ2F0ZTo6cGFpbnQoUVBh aW50ZXIgKnBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICZvcHRpb24sIGNvbnN0 IFFNb2RlbEluZGV4ICZpbmRleCkgY29uc3QKLXsKLSAgICBRX1VOVVNFRChwYWludGVyKTsKLSAg ICBRX1VOVVNFRChvcHRpb24pOwotICAgIFFfVU5VU0VEKGluZGV4KTsKLX0KKyAgICBRU2l6ZSBt aW5pbXVtU2l6ZUhpbnQoKSBjb25zdDsKKyAgICBRU2l6ZSBzaXplSGludCgpIGNvbnN0OwogCi1R U2l6ZSBLaXNOb2RlVmlld1Zpc2liaWxpdHlEZWxlZ2F0ZTo6c2l6ZUhpbnQoY29uc3QgUVN0eWxl T3B0aW9uVmlld0l0ZW0gJm9wdGlvbiwgY29uc3QgUU1vZGVsSW5kZXggJmluZGV4KSBjb25zdAot ewotICAgIEtpc05vZGVWaWV3Q29sb3JTY2hlbWUgc2NtOwotICAgIHJldHVybiBRU2l6ZShvcHRp b24ucmVjdC53aWR0aCgpLCBzY20ucm93SGVpZ2h0KCkpOwotfQorICAgIFFMaXN0PGludD4gc2Vs ZWN0ZWRDb2xvcnMoKSBjb25zdDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgc2VsZWN0ZWRDb2xv cnNDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwYWludEV2ZW50KFFQYWludEV2ZW50 ICpldmVudCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFByaXZhdGU7CisgICAgY29uc3QgUVNj b3BlZFBvaW50ZXI8UHJpdmF0ZT4gbV9kOworfTsKKworI2VuZGlmIC8qIF9fS0lTX0NPTE9SX0ZJ TFRFUl9DT01CT19IICovCmRpZmYgLS1naXQgYS9wbHVnaW5zL2V4dGVuc2lvbnMvZG9ja2Vycy9k ZWZhdWx0ZG9ja2Vycy9raXNfbGF5ZXJfYm94LmNwcCBiL3BsdWdpbnMvZXh0ZW5zaW9ucy9kb2Nr ZXJzL2RlZmF1bHRkb2NrZXJzL2tpc19sYXllcl9ib3guY3BwCmluZGV4IGM2YTIzZGUuLjNkOWNi YTIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZXh0ZW5zaW9ucy9kb2NrZXJzL2RlZmF1bHRkb2NrZXJz L2tpc19sYXllcl9ib3guY3BwCisrKyBiL3BsdWdpbnMvZXh0ZW5zaW9ucy9kb2NrZXJzL2RlZmF1 bHRkb2NrZXJzL2tpc19sYXllcl9ib3guY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAi S2lzVmlld01hbmFnZXIuaCIKICNpbmNsdWRlICJraXNfbm9kZV9tYW5hZ2VyLmgiCiAjaW5jbHVk ZSAia2lzX25vZGVfbW9kZWwuaCIKKwogI2luY2x1ZGUgImNhbnZhcy9raXNfY2FudmFzMi5oIgog I2luY2x1ZGUgIktpc0RvY3VtZW50LmgiCiAjaW5jbHVkZSAia2lzX2R1bW1pZXNfZmFjYWRlX2Jh c2UuaCIKQEAgLTgxLDYgKzgyLDggQEAKICNpbmNsdWRlICJzeW5jX2J1dHRvbl9hbmRfYWN0aW9u LmgiCiAjaW5jbHVkZSAia2lzX2NvbG9yX2xhYmVsX3NlbGVjdG9yX3dpZGdldC5oIgogI2luY2x1 ZGUgImtpc19zaWduYWxzX2Jsb2NrZXIuaCIKKyNpbmNsdWRlICJraXNfY29sb3JfZmlsdGVyX2Nv bWJvLmgiCisjaW5jbHVkZSAia2lzX25vZGVfZmlsdGVyX3Byb3h5X21vZGVsLmgiCiAKICNpbmNs dWRlICJ1aV93ZGdsYXllcmJveC5oIgogCkBAIC0xMDUsNiArMTA4LDcgQEAgS2lzTGF5ZXJCb3g6 Oktpc0xheWVyQm94KCkKICAgICAgICAgLCBtX2NhbnZhcygwKQogICAgICAgICAsIG1fd2RnTGF5 ZXJCb3gobmV3IFVpX1dkZ0xheWVyQm94KQogICAgICAgICAsIG1fdGh1bWJuYWlsQ29tcHJlc3Nv cig1MDAsIEtpc1NpZ25hbENvbXByZXNzb3I6OkZJUlNUX0lOQUNUSVZFKQorICAgICAgICAsIG1f Y29sb3JMYWJlbENvbXByZXNzb3IoOTAwLCBLaXNTaWduYWxDb21wcmVzc29yOjpGSVJTVF9JTkFD VElWRSkKIHsKICAgICBLaXNDb25maWcgY2ZnOwogCkBAIC0xMjQsMjkgKzEyOCw4IEBAIEtpc0xh eWVyQm94OjpLaXNMYXllckJveCgpCiAgICAgY29ubmVjdChtX3dkZ0xheWVyQm94LT5saXN0TGF5 ZXJzLAogICAgICAgICAgICAgU0lHTkFMKHNlbGVjdGlvbkNoYW5nZWQoY29uc3QgUU1vZGVsSW5k ZXhMaXN0JikpLCBTTE9UKHNlbGVjdGlvbkNoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXhMaXN0Jikp KTsKIAotICAgIG1fdmlld01vZGVNZW51ID0gbmV3IFFNZW51KHRoaXMpOwotICAgIFFBY3Rpb25H cm91cCAqZ3JvdXAgPSBuZXcgUUFjdGlvbkdyb3VwKHRoaXMpOwotICAgIFFMaXN0PFFBY3Rpb24q PiBhY3Rpb25zOwotCi0gICAgYWN0aW9ucyA8PCBtX3ZpZXdNb2RlTWVudS0+YWRkQWN0aW9uKEtp c0ljb25VdGlsczo6bG9hZEljb24oInZpZXctbGlzdC10ZXh0IiksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4oIk1pbmltYWwgVmlldyIpLCB0aGlzLCBTTE9U KHNsb3RNaW5pbWFsVmlldygpKSk7Ci0gICAgYWN0aW9ucyA8PCBtX3ZpZXdNb2RlTWVudS0+YWRk QWN0aW9uKEtpc0ljb25VdGlsczo6bG9hZEljb24oInZpZXctbGlzdC1kZXRhaWxzIiksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4oIkRldGFpbGVkIFZpZXci KSwgdGhpcywgU0xPVChzbG90RGV0YWlsZWRWaWV3KCkpKTsKLSAgICBhY3Rpb25zIDw8IG1fdmll d01vZGVNZW51LT5hZGRBY3Rpb24oS2lzSWNvblV0aWxzOjpsb2FkSWNvbigidmlldy1wcmV2aWV3 IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4oIlRodW1i bmFpbCBWaWV3IiksIHRoaXMsIFNMT1Qoc2xvdFRodW1ibmFpbFZpZXcoKSkpOwotCi0gICAgZm9y IChpbnQgaSA9IDAsIG4gPSBhY3Rpb25zLmNvdW50KCk7IGkgPCBuOyArK2kpIHsKLSAgICAgICAg YWN0aW9uc1tpXS0+c2V0Q2hlY2thYmxlKHRydWUpOwotICAgICAgICBhY3Rpb25zW2ldLT5zZXRB Y3Rpb25Hcm91cChncm91cCk7Ci0gICAgfQotCiAgICAgbV93ZGdMYXllckJveC0+Ym5BZGQtPnNl dEljb24oS2lzSWNvblV0aWxzOjpsb2FkSWNvbigiYWRkbGF5ZXIiKSk7CiAKLSAgICBtX3dkZ0xh eWVyQm94LT5iblZpZXdNb2RlLT5zZXRNZW51KG1fdmlld01vZGVNZW51KTsKLSAgICBtX3dkZ0xh eWVyQm94LT5iblZpZXdNb2RlLT5zZXRQb3B1cE1vZGUoUVRvb2xCdXR0b246Okluc3RhbnRQb3B1 cCk7Ci0gICAgbV93ZGdMYXllckJveC0+Ym5WaWV3TW9kZS0+c2V0SWNvbihLaXNJY29uVXRpbHM6 OmxvYWRJY29uKCJ2aWV3LWNob29zZSIpKTsKLSAgICBtX3dkZ0xheWVyQm94LT5iblZpZXdNb2Rl LT5zZXRUZXh0KGkxOG4oIlZpZXcgbW9kZSIpKTsKLQogICAgIG1fd2RnTGF5ZXJCb3gtPmJuRGVs ZXRlLT5zZXRJY29uKEtpc0ljb25VdGlsczo6bG9hZEljb24oImRlbGV0ZWxheWVyIikpOwogICAg IG1fd2RnTGF5ZXJCb3gtPmJuRGVsZXRlLT5zZXRJY29uU2l6ZShRU2l6ZSgyMiwgMjIpKTsKIApA QCAtMTg4LDYgKzE3MSw4IEBAIEtpc0xheWVyQm94OjpLaXNMYXllckJveCgpCiAgICAgbV93ZGdM YXllckJveC0+Ym5BZGQtPnNldFBvcHVwTW9kZShRVG9vbEJ1dHRvbjo6TWVudUJ1dHRvblBvcHVw KTsKIAogICAgIG1fbm9kZU1vZGVsID0gbmV3IEtpc05vZGVNb2RlbCh0aGlzKTsKKyAgICBtX2Zp bHRlcmluZ01vZGVsID0gbmV3IEtpc05vZGVGaWx0ZXJQcm94eU1vZGVsKHRoaXMpOworICAgIG1f ZmlsdGVyaW5nTW9kZWwtPnNldE5vZGVNb2RlbChtX25vZGVNb2RlbCk7CiAKICAgICAvKioKICAg ICAgKiBDb25uZWN0IG1vZGVsIHVwZGF0ZVVJKCkgdG8gZW5hYmxlL2Rpc2FibGUgY29udHJvbHMu CkBAIC0yMTUsMTEgKzIwMCwxNyBAQCBLaXNMYXllckJveDo6S2lzTGF5ZXJCb3goKQogICAgIG1f Y29sb3JTZWxlY3RvckFjdGlvbiA9IG5ldyBRV2lkZ2V0QWN0aW9uKHRoaXMpOwogICAgIG1fY29s b3JTZWxlY3RvckFjdGlvbi0+c2V0RGVmYXVsdFdpZGdldChtX2NvbG9yU2VsZWN0b3IpOwogCi0g ICAgbV93ZGdMYXllckJveC0+bGlzdExheWVycy0+c2V0TW9kZWwobV9ub2RlTW9kZWwpOworICAg IGNvbm5lY3QobV9ub2RlTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChjb25zdCBRTW9kZWxJbmRl eCAmLCBjb25zdCBRTW9kZWxJbmRleCAmKSksCisgICAgICAgICAgICAmbV9jb2xvckxhYmVsQ29t cHJlc3NvciwgU0xPVChzdGFydCgpKSk7CisKKyAgICBtX3dkZ0xheWVyQm94LT5saXN0TGF5ZXJz LT5zZXRNb2RlbChtX2ZpbHRlcmluZ01vZGVsKTsKKworICAgIGNvbm5lY3QobV93ZGdMYXllckJv eC0+Y21iRmlsdGVyLCBTSUdOQUwoc2VsZWN0ZWRDb2xvcnNDaGFuZ2VkKCkpLCBTTE9UKHVwZGF0 ZUxheWVyRmlsdGVyaW5nKCkpKTsKIAogICAgIHNldEVuYWJsZWQoZmFsc2UpOwogCiAgICAgY29u bmVjdCgmbV90aHVtYm5haWxDb21wcmVzc29yLCBTSUdOQUwodGltZW91dCgpKSwgU0xPVCh1cGRh dGVUaHVtYm5haWwoKSkpOworICAgIGNvbm5lY3QoJm1fY29sb3JMYWJlbENvbXByZXNzb3IsIFNJ R05BTCh0aW1lb3V0KCkpLCBTTE9UKHVwZGF0ZUF2YWlsYWJsZUxhYmVscygpKSk7CiB9CiAKIEtp c0xheWVyQm94Ojp+S2lzTGF5ZXJCb3goKQpAQCAtMjI4LDI0ICsyMTksMjQgQEAgS2lzTGF5ZXJC b3g6On5LaXNMYXllckJveCgpCiB9CiAKIAotdm9pZCBleHBhbmROb2Rlc1JlY3Vyc2l2ZWx5KEtp c05vZGVTUCByb290LCBRUG9pbnRlcjxLaXNOb2RlTW9kZWw+IG5vZGVNb2RlbCwgS2lzTm9kZVZp ZXcgKm5vZGVWaWV3KQordm9pZCBleHBhbmROb2Rlc1JlY3Vyc2l2ZWx5KEtpc05vZGVTUCByb290 LCBRUG9pbnRlcjxLaXNOb2RlRmlsdGVyUHJveHlNb2RlbD4gZmlsdGVyaW5nTW9kZWwsIEtpc05v ZGVWaWV3ICpub2RlVmlldykKIHsKICAgICBpZiAoIXJvb3QpIHJldHVybjsKLSAgICBpZiAobm9k ZU1vZGVsLmlzTnVsbCgpKSByZXR1cm47CisgICAgaWYgKGZpbHRlcmluZ01vZGVsLmlzTnVsbCgp KSByZXR1cm47CiAgICAgaWYgKCFub2RlVmlldykgcmV0dXJuOwogCiAgICAgbm9kZVZpZXctPmJs b2NrU2lnbmFscyh0cnVlKTsKIAogICAgIEtpc05vZGVTUCBub2RlID0gcm9vdC0+Zmlyc3RDaGls ZCgpOwogICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIFFNb2RlbEluZGV4IGlkeCA9IG5vZGVN b2RlbC0+aW5kZXhGcm9tTm9kZShub2RlKTsKKyAgICAgICAgUU1vZGVsSW5kZXggaWR4ID0gZmls dGVyaW5nTW9kZWwtPmluZGV4RnJvbU5vZGUobm9kZSk7CiAgICAgICAgIGlmIChpZHguaXNWYWxp ZCgpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y29sbGFwc2VkKCkpIHsKICAgICAgICAgICAg ICAgICBub2RlVmlldy0+Y29sbGFwc2UoaWR4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog ICAgICAgICBpZiAobm9kZS0+Y2hpbGRDb3VudCgpID4gMCkgewotICAgICAgICAgICAgZXhwYW5k Tm9kZXNSZWN1cnNpdmVseShub2RlLCBub2RlTW9kZWwsIG5vZGVWaWV3KTsKKyAgICAgICAgICAg IGV4cGFuZE5vZGVzUmVjdXJzaXZlbHkobm9kZSwgZmlsdGVyaW5nTW9kZWwsIG5vZGVWaWV3KTsK ICAgICAgICAgfQogICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICB9CkBA IC0zMDEsNyArMjkyLDYgQEAgdm9pZCBLaXNMYXllckJveDo6c2V0Q2FudmFzKEtvQ2FudmFzQmFz ZSAqY2FudmFzKQogICAgICAgICBkaXNjb25uZWN0KG1faW1hZ2UsIDAsIHRoaXMsIDApOwogICAg ICAgICBkaXNjb25uZWN0KG1fbm9kZU1hbmFnZXIsIDAsIHRoaXMsIDApOwogICAgICAgICBkaXNj b25uZWN0KG1fbm9kZU1vZGVsLCAwLCBtX25vZGVNYW5hZ2VyLCAwKTsKLSAgICAgICAgZGlzY29u bmVjdChtX25vZGVNb2RlbCwgU0lHTkFMKG5vZGVBY3RpdmF0ZWQoS2lzTm9kZVNQKSksIHRoaXMs IFNMT1QodXBkYXRlVUkoKSkpOwogICAgICAgICBtX25vZGVNYW5hZ2VyLT5zbG90U2V0U2VsZWN0 ZWROb2RlcyhLaXNOb2RlTGlzdCgpKTsKICAgICB9CiAKQEAgLTM0Myw4ICszMzMsOSBAQCB2b2lk IEtpc0xheWVyQm94OjpzZXRDYW52YXMoS29DYW52YXNCYXNlICpjYW52YXMpCiAgICAgICAgICAg ICAgICAgbV9ub2RlTWFuYWdlciwgU0xPVCh0b2dnbGVJc29sYXRlQWN0aXZlTm9kZSgpKSk7CiAK ICAgICAgICAgbV93ZGdMYXllckJveC0+bGlzdExheWVycy0+ZXhwYW5kQWxsKCk7Ci0gICAgICAg IGV4cGFuZE5vZGVzUmVjdXJzaXZlbHkobV9pbWFnZS0+cm9vdExheWVyKCksIG1fbm9kZU1vZGVs LCBtX3dkZ0xheWVyQm94LT5saXN0TGF5ZXJzKTsKKyAgICAgICAgZXhwYW5kTm9kZXNSZWN1cnNp dmVseShtX2ltYWdlLT5yb290TGF5ZXIoKSwgbV9maWx0ZXJpbmdNb2RlbCwgbV93ZGdMYXllckJv eC0+bGlzdExheWVycyk7CiAgICAgICAgIG1fd2RnTGF5ZXJCb3gtPmxpc3RMYXllcnMtPnNjcm9s bFRvKG1fd2RnTGF5ZXJCb3gtPmxpc3RMYXllcnMtPmN1cnJlbnRJbmRleCgpKTsKKyAgICAgICAg dXBkYXRlQXZhaWxhYmxlTGFiZWxzKCk7CiAKICAgICAgICAgYWRkQWN0aW9uVG9NZW51KG1fbmV3 TGF5ZXJNZW51LCAiYWRkX25ld19wYWludF9sYXllciIpOwogICAgICAgICBhZGRBY3Rpb25Ub01l bnUobV9uZXdMYXllck1lbnUsICJhZGRfbmV3X2dyb3VwX2xheWVyIik7CkBAIC0zNzQsNyArMzY1 LDYgQEAgdm9pZCBLaXNMYXllckJveDo6dW5zZXRDYW52YXMoKQogICAgIGRpc2Nvbm5lY3QobV9p bWFnZSwgMCwgdGhpcywgMCk7CiAgICAgZGlzY29ubmVjdChtX25vZGVNYW5hZ2VyLCAwLCB0aGlz LCAwKTsKICAgICBkaXNjb25uZWN0KG1fbm9kZU1vZGVsLCAwLCBtX25vZGVNYW5hZ2VyLCAwKTsK LSAgICBkaXNjb25uZWN0KG1fbm9kZU1vZGVsLCBTSUdOQUwobm9kZUFjdGl2YXRlZChLaXNOb2Rl U1ApKSwgdGhpcywgU0xPVCh1cGRhdGVVSSgpKSk7CiAgICAgbV9ub2RlTWFuYWdlci0+c2xvdFNl dFNlbGVjdGVkTm9kZXMoS2lzTm9kZUxpc3QoKSk7CiAKICAgICBtX2NhbnZhcyA9IDA7CkBAIC00 MzksOSArNDI5LDEwIEBAIHZvaWQgS2lzTGF5ZXJCb3g6OnVwZGF0ZVVJKCkKICAqLwogdm9pZCBL aXNMYXllckJveDo6c2V0Q3VycmVudE5vZGUoS2lzTm9kZVNQIG5vZGUpCiB7Ci0gICAgUU1vZGVs SW5kZXggaW5kZXggPSBub2RlID8gbV9ub2RlTW9kZWwtPmluZGV4RnJvbU5vZGUobm9kZSkgOiBR TW9kZWxJbmRleCgpOworICAgIG1fZmlsdGVyaW5nTW9kZWwtPnNldEFjdGl2ZU5vZGUobm9kZSk7 CiAKLSAgICBtX25vZGVNb2RlbC0+c2V0RGF0YShpbmRleCwgdHJ1ZSwgS2lzTm9kZU1vZGVsOjpB Y3RpdmVSb2xlKTsKKyAgICBRTW9kZWxJbmRleCBpbmRleCA9IG5vZGUgPyBtX2ZpbHRlcmluZ01v ZGVsLT5pbmRleEZyb21Ob2RlKG5vZGUpIDogUU1vZGVsSW5kZXgoKTsKKyAgICBtX2ZpbHRlcmlu Z01vZGVsLT5zZXREYXRhKGluZGV4LCB0cnVlLCBLaXNOb2RlTW9kZWw6OkFjdGl2ZVJvbGUpOwog ICAgIHVwZGF0ZVVJKCk7CiB9CiAKQEAgLTQ1MCw3ICs0NDEsNyBAQCB2b2lkIEtpc0xheWVyQm94 OjpzbG90TW9kZWxSZXNldCgpCiAgICAgaWYobV9ub2RlTW9kZWwtPmhhc0R1bW1pZXNGYWNhZGUo KSkgewogICAgICAgICBRSXRlbVNlbGVjdGlvbiBzZWxlY3Rpb247CiAgICAgICAgIFFfRk9SRUFD SCAoY29uc3QgS2lzTm9kZVNQIG5vZGUsIG1fbm9kZU1hbmFnZXItPnNlbGVjdGVkTm9kZXMoKSkg ewotICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmlkeCA9IG1fbm9kZU1vZGVsLT5pbmRl eEZyb21Ob2RlKG5vZGUpOworICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmlkeCA9IG1f ZmlsdGVyaW5nTW9kZWwtPmluZGV4RnJvbU5vZGUobm9kZSk7CiAgICAgICAgICAgICBpZihpZHgu aXNWYWxpZCgpKXsKICAgICAgICAgICAgICAgICBRSXRlbVNlbGVjdGlvblJhbmdlIHNlbGVjdGlv blJhbmdlKGlkeCk7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uIDw8IHNlbGVjdGlvblJhbmdl OwpAQCAtNTUyLDcgKzU0Myw3IEBAIHZvaWQgS2lzTGF5ZXJCb3g6OnNsb3RDb250ZXh0TWVudVJl cXVlc3RlZChjb25zdCBRUG9pbnQgJnBvcywgY29uc3QgUU1vZGVsSW5kZXgKICAgICAgICAgICAg ICAgICBhZGRBY3Rpb25Ub01lbnUoc3BsaXRBbHBoYU1lbnUsICJzcGxpdF9hbHBoYV93cml0ZSIp OwogICAgICAgICAgICAgICAgIGFkZEFjdGlvblRvTWVudShzcGxpdEFscGhhTWVudSwgInNwbGl0 X2FscGhhX3NhdmVfbWVyZ2VkIik7CiAKLSAgICAgICAgICAgICAgICBLaXNOb2RlU1Agbm9kZSA9 IG1fbm9kZU1vZGVsLT5ub2RlRnJvbUluZGV4KGluZGV4KTsKKyAgICAgICAgICAgICAgICBLaXNO b2RlU1Agbm9kZSA9IG1fZmlsdGVyaW5nTW9kZWwtPm5vZGVGcm9tSW5kZXgoaW5kZXgpOwogICAg ICAgICAgICAgICAgIGlmIChub2RlICYmICFub2RlLT5pbmhlcml0cygiS2lzVHJhbnNmb3JtTWFz ayIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFkZEFjdGlvblRvTWVudSgmbWVudSwgImlzb2xh dGVfbGF5ZXIiKTsKICAgICAgICAgICAgICAgICB9CkBAIC02NDMsNyArNjM0LDcgQEAgdm9pZCBL aXNMYXllckJveDo6c2xvdE9wYWNpdHlTbGlkZXJNb3ZlZChxcmVhbCBvcGFjaXR5KQogCiB2b2lk IEtpc0xheWVyQm94OjpzbG90Q29sbGFwc2VkKGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCkKIHsK LSAgICBLaXNOb2RlU1Agbm9kZSA9IG1fbm9kZU1vZGVsLT5ub2RlRnJvbUluZGV4KGluZGV4KTsK KyAgICBLaXNOb2RlU1Agbm9kZSA9IG1fZmlsdGVyaW5nTW9kZWwtPm5vZGVGcm9tSW5kZXgoaW5k ZXgpOwogICAgIGlmIChub2RlKSB7CiAgICAgICAgIG5vZGUtPnNldENvbGxhcHNlZCh0cnVlKTsK ICAgICB9CkBAIC02NTEsNyArNjQyLDcgQEAgdm9pZCBLaXNMYXllckJveDo6c2xvdENvbGxhcHNl ZChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgpCiAKIHZvaWQgS2lzTGF5ZXJCb3g6OnNsb3RFeHBh bmRlZChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgpCiB7Ci0gICAgS2lzTm9kZVNQIG5vZGUgPSBt X25vZGVNb2RlbC0+bm9kZUZyb21JbmRleChpbmRleCk7CisgICAgS2lzTm9kZVNQIG5vZGUgPSBt X2ZpbHRlcmluZ01vZGVsLT5ub2RlRnJvbUluZGV4KGluZGV4KTsKICAgICBpZiAobm9kZSkgewog ICAgICAgICBub2RlLT5zZXRDb2xsYXBzZWQoZmFsc2UpOwogICAgIH0KQEAgLTY2OSw3ICs2NjAs NyBAQCB2b2lkIEtpc0xheWVyQm94OjpzbG90U2VsZWN0T3BhcXVlKCkKIHZvaWQgS2lzTGF5ZXJC b3g6OnNsb3ROb2RlQ29sbGFwc2VkQ2hhbmdlZCgpCiB7CiAgICAgbV93ZGdMYXllckJveC0+bGlz dExheWVycy0+ZXhwYW5kQWxsKCk7Ci0gICAgZXhwYW5kTm9kZXNSZWN1cnNpdmVseShtX2ltYWdl LT5yb290TGF5ZXIoKSwgbV9ub2RlTW9kZWwsIG1fd2RnTGF5ZXJCb3gtPmxpc3RMYXllcnMpOwor ICAgIGV4cGFuZE5vZGVzUmVjdXJzaXZlbHkobV9pbWFnZS0+cm9vdExheWVyKCksIG1fZmlsdGVy aW5nTW9kZWwsIG1fd2RnTGF5ZXJCb3gtPmxpc3RMYXllcnMpOwogfQogCiBpbmxpbmUgYm9vbCBp c1NlbGVjdGlvbk1hc2soS2lzTm9kZVNQIG5vZGUpCkBAIC03NDgsNyArNzM5LDcgQEAgdm9pZCBL aXNMYXllckJveDo6c2VsZWN0aW9uQ2hhbmdlZChjb25zdCBRTW9kZWxJbmRleExpc3Qgc2VsZWN0 aW9uKQogICAgICAqLwogICAgIGlmIChzZWxlY3Rpb24uaXNFbXB0eSgpICYmIG1fbm9kZU1hbmFn ZXItPmFjdGl2ZU5vZGUoKSkgewogICAgICAgICBRTW9kZWxJbmRleCBzZWxlY3RlZEluZGV4ID0K LSAgICAgICAgICAgIG1fbm9kZU1vZGVsLT5pbmRleEZyb21Ob2RlKG1fbm9kZU1hbmFnZXItPmFj dGl2ZU5vZGUoKSk7CisgICAgICAgICAgICBtX2ZpbHRlcmluZ01vZGVsLT5pbmRleEZyb21Ob2Rl KG1fbm9kZU1hbmFnZXItPmFjdGl2ZU5vZGUoKSk7CiAKICAgICAgICAgbV93ZGdMYXllckJveC0+ bGlzdExheWVycy0+c2VsZWN0aW9uTW9kZWwoKS0+CiAgICAgICAgICAgICBzZXRDdXJyZW50SW5k ZXgoc2VsZWN0ZWRJbmRleCwgUUl0ZW1TZWxlY3Rpb25Nb2RlbDo6Q2xlYXJBbmRTZWxlY3QpOwpA QCAtNzU3LDcgKzc0OCw3IEBAIHZvaWQgS2lzTGF5ZXJCb3g6OnNlbGVjdGlvbkNoYW5nZWQoY29u c3QgUU1vZGVsSW5kZXhMaXN0IHNlbGVjdGlvbikKIAogICAgIFFMaXN0PEtpc05vZGVTUD4gc2Vs ZWN0ZWROb2RlczsKICAgICBRX0ZPUkVBQ0ggKGNvbnN0IFFNb2RlbEluZGV4ICZpZHgsIHNlbGVj dGlvbikgewotICAgICAgICBzZWxlY3RlZE5vZGVzIDw8IG1fbm9kZU1vZGVsLT5ub2RlRnJvbUlu ZGV4KGlkeCk7CisgICAgICAgIHNlbGVjdGVkTm9kZXMgPDwgbV9maWx0ZXJpbmdNb2RlbC0+bm9k ZUZyb21JbmRleChpZHgpOwogICAgIH0KIAogICAgIG1fbm9kZU1hbmFnZXItPnNsb3RTZXRTZWxl Y3RlZE5vZGVzKHNlbGVjdGVkTm9kZXMpOwpAQCAtNzcwLDcgKzc2MSw3IEBAIHZvaWQgS2lzTGF5 ZXJCb3g6OnNsb3ROb2RlTWFuYWdlckNoYW5nZWRTZWxlY3Rpb24oY29uc3QgS2lzTm9kZUxpc3Qg Jm5vZGVzKQogCiAgICAgUU1vZGVsSW5kZXhMaXN0IG5ld1NlbGVjdGlvbjsKICAgICBRX0ZPUkVB Q0goS2lzTm9kZVNQIG5vZGUsIG5vZGVzKSB7Ci0gICAgICAgIG5ld1NlbGVjdGlvbiA8PCBtX25v ZGVNb2RlbC0+aW5kZXhGcm9tTm9kZShub2RlKTsKKyAgICAgICAgbmV3U2VsZWN0aW9uIDw8IG1f ZmlsdGVyaW5nTW9kZWwtPmluZGV4RnJvbU5vZGUobm9kZSk7CiAgICAgfQogCiAgICAgUUl0ZW1T ZWxlY3Rpb25Nb2RlbCAqbW9kZWwgPSBtX3dkZ0xheWVyQm94LT5saXN0TGF5ZXJzLT5zZWxlY3Rp b25Nb2RlbCgpOwpAQCAtODA3LDQgKzc5OCwxNSBAQCB2b2lkIEtpc0xheWVyQm94OjpzbG90Q29s b3JMYWJlbENoYW5nZWQoaW50IGluZGV4KQogICAgIH0KIH0KIAordm9pZCBLaXNMYXllckJveDo6 dXBkYXRlQXZhaWxhYmxlTGFiZWxzKCkKK3sKKyAgICBpZiAoIW1faW1hZ2UpIHJldHVybjsKKyAg ICBtX3dkZ0xheWVyQm94LT5jbWJGaWx0ZXItPnVwZGF0ZUF2YWlsYWJsZUxhYmVscyhtX2ltYWdl LT5yb290KCkpOworfQorCit2b2lkIEtpc0xheWVyQm94Ojp1cGRhdGVMYXllckZpbHRlcmluZygp Cit7CisgICAgbV9maWx0ZXJpbmdNb2RlbC0+c2V0QWNjZXB0ZWRMYWJlbHMobV93ZGdMYXllckJv eC0+Y21iRmlsdGVyLT5zZWxlY3RlZENvbG9ycygpKTsKK30KKwogI2luY2x1ZGUgIm1vY19raXNf bGF5ZXJfYm94LmNwcCIKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZXh0ZW5zaW9ucy9kb2NrZXJzL2Rl ZmF1bHRkb2NrZXJzL2tpc19sYXllcl9ib3guaCBiL3BsdWdpbnMvZXh0ZW5zaW9ucy9kb2NrZXJz L2RlZmF1bHRkb2NrZXJzL2tpc19sYXllcl9ib3guaAppbmRleCBmMzU5ZWZjLi5hYjZiMzE3IDEw MDY0NAotLS0gYS9wbHVnaW5zL2V4dGVuc2lvbnMvZG9ja2Vycy9kZWZhdWx0ZG9ja2Vycy9raXNf bGF5ZXJfYm94LmgKKysrIGIvcGx1Z2lucy9leHRlbnNpb25zL2RvY2tlcnMvZGVmYXVsdGRvY2tl cnMva2lzX2xheWVyX2JveC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFFBYnN0cmFjdEJ1dHRv bjsKIGNsYXNzIEtvQ29tcG9zaXRlT3A7CiBjbGFzcyBLaXNDYW52YXMyOwogY2xhc3MgS2lzTm9k ZU1vZGVsOworY2xhc3MgS2lzTm9kZUZpbHRlclByb3h5TW9kZWw7CiBjbGFzcyBVaV9XZGdMYXll ckJveDsKIGNsYXNzIEtpc05vZGVKdWdnbGVyQ29tcHJlc3NlZDsKIGNsYXNzIEtpc0NvbG9yTGFi ZWxTZWxlY3RvcldpZGdldDsKQEAgLTEyMCw2ICsxMjEsOCBAQCBwcml2YXRlIFFfU0xPVFM6CiAg ICAgdm9pZCBzbG90Q29sb3JMYWJlbENoYW5nZWQoaW50IGluZGV4KTsKIAogICAgIHZvaWQgdXBk YXRlVGh1bWJuYWlsKCk7CisgICAgdm9pZCB1cGRhdGVBdmFpbGFibGVMYWJlbHMoKTsKKyAgICB2 b2lkIHVwZGF0ZUxheWVyRmlsdGVyaW5nKCk7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQg Y29ubmVjdEFjdGlvblRvQnV0dG9uKEtpc1ZpZXdNYW5hZ2VyKiB2aWV3LCBRQWJzdHJhY3RCdXR0 b24gKmJ1dHRvbiwgY29uc3QgUVN0cmluZyAmaWQpOwpAQCAtMTI5LDEwICsxMzIsMTAgQEAgcHJp dmF0ZToKIHByaXZhdGU6CiAKICAgICBLaXNDYW52YXMyKiBtX2NhbnZhczsKLSAgICBRTWVudSAq bV92aWV3TW9kZU1lbnU7CiAgICAgUU1lbnUgKm1fbmV3TGF5ZXJNZW51OwogICAgIEtpc0ltYWdl V1NQIG1faW1hZ2U7CiAgICAgUVBvaW50ZXI8S2lzTm9kZU1vZGVsPiBtX25vZGVNb2RlbDsKKyAg ICBRUG9pbnRlcjxLaXNOb2RlRmlsdGVyUHJveHlNb2RlbD4gbV9maWx0ZXJpbmdNb2RlbDsKICAg ICBRUG9pbnRlcjxLaXNOb2RlTWFuYWdlcj4gbV9ub2RlTWFuYWdlcjsKICAgICBRUG9pbnRlcjxL aXNDb2xvckxhYmVsU2VsZWN0b3JXaWRnZXQ+IG1fY29sb3JTZWxlY3RvcjsKICAgICBRUG9pbnRl cjxRV2lkZ2V0QWN0aW9uPiBtX2NvbG9yU2VsZWN0b3JBY3Rpb247CkBAIC0xNDUsNiArMTQ4LDcg QEAgcHJpdmF0ZToKICAgICBLaXNBY3Rpb24qIG1fcHJvcGVydGllc0FjdGlvbjsKICAgICBLaXNB Y3Rpb24qIG1fc2VsZWN0T3BhcXVlOwogICAgIEtpc1NpZ25hbENvbXByZXNzb3IgbV90aHVtYm5h aWxDb21wcmVzc29yOworICAgIEtpc1NpZ25hbENvbXByZXNzb3IgbV9jb2xvckxhYmVsQ29tcHJl c3NvcjsKIH07CiAKIGNsYXNzIEtpc0xheWVyQm94RmFjdG9yeSA6IHB1YmxpYyBLb0RvY2tGYWN0 b3J5QmFzZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9leHRlbnNpb25zL2RvY2tlcnMvZGVmYXVsdGRv Y2tlcnMvd2RnbGF5ZXJib3gudWkgYi9wbHVnaW5zL2V4dGVuc2lvbnMvZG9ja2Vycy9kZWZhdWx0 ZG9ja2Vycy93ZGdsYXllcmJveC51aQppbmRleCBkNGIzMDg3Li5mMDRiN2I0IDEwMDY0NAotLS0g YS9wbHVnaW5zL2V4dGVuc2lvbnMvZG9ja2Vycy9kZWZhdWx0ZG9ja2Vycy93ZGdsYXllcmJveC51 aQorKysgYi9wbHVnaW5zL2V4dGVuc2lvbnMvZG9ja2Vycy9kZWZhdWx0ZG9ja2Vycy93ZGdsYXll cmJveC51aQpAQCAtNTcsMzIgKzU3LDcgQEAKICAgICAgIDwvd2lkZ2V0PgogICAgICA8L2l0ZW0+ CiAgICAgIDxpdGVtPgotICAgICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24iIG5hbWU9ImJu Vmlld01vZGUiPgotICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtaW5pbXVtU2l6ZSI+Ci0gICAgICAg IDxzaXplPgotICAgICAgICAgPHdpZHRoPjIyPC93aWR0aD4KLSAgICAgICAgIDxoZWlnaHQ+MjI8 L2hlaWdodD4KLSAgICAgICAgPC9zaXplPgotICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICAgPHBy b3BlcnR5IG5hbWU9Im1heGltdW1TaXplIj4KLSAgICAgICAgPHNpemU+Ci0gICAgICAgICA8d2lk dGg+MjI8L3dpZHRoPgotICAgICAgICAgPGhlaWdodD4yMjwvaGVpZ2h0PgotICAgICAgICA8L3Np emU+Ci0gICAgICAgPC9wcm9wZXJ0eT4KLSAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Ci0g ICAgICAgIDxzdHJpbmc+Li4uPC9zdHJpbmc+Ci0gICAgICAgPC9wcm9wZXJ0eT4KLSAgICAgICA8 cHJvcGVydHkgbmFtZT0iaWNvblNpemUiPgotICAgICAgICA8c2l6ZT4KLSAgICAgICAgIDx3aWR0 aD4xNjwvd2lkdGg+Ci0gICAgICAgICA8aGVpZ2h0PjE2PC9oZWlnaHQ+Ci0gICAgICAgIDwvc2l6 ZT4KLSAgICAgICA8L3Byb3BlcnR5PgotICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhdXRvUmFpc2Ui PgotICAgICAgICA8Ym9vbD50cnVlPC9ib29sPgotICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICA8 L3dpZGdldD4KKyAgICAgIDx3aWRnZXQgY2xhc3M9Iktpc0NvbG9yRmlsdGVyQ29tYm8iIG5hbWU9 ImNtYkZpbHRlciIvPgogICAgICA8L2l0ZW0+CiAgICAgPC9sYXlvdXQ+CiAgICA8L2l0ZW0+CkBA IC0zMjksNiArMzA0LDExIEBACiAgICA8ZXh0ZW5kcz5RVG9vbEJ1dHRvbjwvZXh0ZW5kcz4KICAg IDxoZWFkZXI+a2lzX3Rvb2xfYnV0dG9uLmg8L2hlYWRlcj4KICAgPC9jdXN0b213aWRnZXQ+Cisg IDxjdXN0b213aWRnZXQ+CisgICA8Y2xhc3M+S2lzQ29sb3JGaWx0ZXJDb21ibzwvY2xhc3M+Cisg ICA8ZXh0ZW5kcz5RQ29tYm9Cb3g8L2V4dGVuZHM+CisgICA8aGVhZGVyPmtpc19jb2xvcl9maWx0 ZXJfY29tYm8uaDwvaGVhZGVyPgorICA8L2N1c3RvbXdpZGdldD4KICA8L2N1c3RvbXdpZGdldHM+ CiAgPHRhYnN0b3BzPgogICA8dGFic3RvcD5jbWJDb21wb3NpdGU8L3RhYnN0b3A+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpLcml0YSBtYWlsaW5nIGxp c3QKa2ltYWdlc2hvcEBrZGUub3JnCmh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGlu Zm8va2ltYWdlc2hvcAo=