RGF2aWQgRmF1cmUgaGFzIHVwbG9hZGVkIGEgbmV3IGNoYW5nZSBmb3IgcmV2aWV3LgoKICBodHRw czovL2dlcnJpdC52ZXNuaWNreS5jZXNuZXQuY3ovci8yODcKCkNoYW5nZSBzdWJqZWN0OiBQb3J0 IGZyb20gZGVwcmVjYXRlZCBLUnVuOjpydW4oS1NlcnZpY2UpIHRvIEtSdW46OnJ1blNlcnZpY2Uo Li4uKQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uCgpQb3J0IGZyb20gZGVwcmVjYXRlZCBLUnVuOjpydW4oS1NlcnZp Y2UpIHRvIEtSdW46OnJ1blNlcnZpY2UoLi4uKQoKQ2hhbmdlLUlkOiBJYTM2NDc2YTRhYzM0ZDNm ZDE2ZGViYTk5NjU5NTk3NmNhMDcxYzc5ZQotLS0KTSBzcmMvd2lkZ2V0cy9kcm9wam9iLmNwcApN IHNyYy93aWRnZXRzL2tkZXNrdG9wZmlsZWFjdGlvbnMuY3BwCk0gc3JjL3dpZGdldHMva2ZpbGVp dGVtYWN0aW9ucy5jcHAKTSBzcmMvd2lkZ2V0cy9rcnVuLmNwcAo0IGZpbGVzIGNoYW5nZWQsIDkg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCgogIGdpdCBwdWxsIHNzaDovL2dlcnJpdC52 ZXNuaWNreS5jZXNuZXQuY3o6Mjk0MTgva2lvIHJlZnMvY2hhbmdlcy84Ny8yODcvMQoKZGlmZiAt LWdpdCBhL3NyYy93aWRnZXRzL2Ryb3Bqb2IuY3BwIGIvc3JjL3dpZGdldHMvZHJvcGpvYi5jcHAK aW5kZXggNDRlY2Y1Mi4uNjNiZWIwYSAxMDA2NDQKLS0tIGEvc3JjL3dpZGdldHMvZHJvcGpvYi5j cHAKKysrIGIvc3JjL3dpZGdldHMvZHJvcGpvYi5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQAogICAg IGlmIChkZXNrdG9wRmlsZS5oYXNBcHBsaWNhdGlvblR5cGUoKSkgewogICAgICAgICAvLyBEcm9w IHRvIGFwcGxpY2F0aW9uIC0+IHN0YXJ0IGFwcCB3aXRoIHVybHMgYXMgYXJndW1lbnQKICAgICAg ICAgS1NlcnZpY2Ugc2VydmljZShkZXN0RmlsZSk7Ci0gICAgICAgIGlmICghS1J1bjo6cnVuKHNl cnZpY2UsIG1fdXJscywgS0pvYldpZGdldHM6OndpbmRvdyhxKSkpIHsKKyAgICAgICAgaWYgKCFL UnVuOjpydW5TZXJ2aWNlKHNlcnZpY2UsIG1fdXJscywgS0pvYldpZGdldHM6OndpbmRvdyhxKSkp IHsKICAgICAgICAgICAgIHEtPnNldEVycm9yKEtJTzo6RVJSX0NBTk5PVF9MQVVOQ0hfUFJPQ0VT Uyk7CiAgICAgICAgICAgICBxLT5zZXRFcnJvclRleHQoZGVzdEZpbGUpOwogICAgICAgICB9CmRp ZmYgLS1naXQgYS9zcmMvd2lkZ2V0cy9rZGVza3RvcGZpbGVhY3Rpb25zLmNwcCBiL3NyYy93aWRn ZXRzL2tkZXNrdG9wZmlsZWFjdGlvbnMuY3BwCmluZGV4IDk4Y2VkNzkuLjJmMDJjMmYgMTAwNjQ0 Ci0tLSBhL3NyYy93aWRnZXRzL2tkZXNrdG9wZmlsZWFjdGlvbnMuY3BwCisrKyBiL3NyYy93aWRn ZXRzL2tkZXNrdG9wZmlsZWFjdGlvbnMuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAKICAgICB9CiAK ICAgICBRTGlzdDxRVXJsPiBsc3Q7Ci0gICAgcmV0dXJuIEtSdW46OnJ1bihzLCBsc3QsIDAgLypU T0RPIC0gd2luZG93Ki8sIGZhbHNlLCBRU3RyaW5nKCksIGFzbik7CisgICAgcmV0dXJuIEtSdW46 OnJ1blNlcnZpY2UocywgbHN0LCAwIC8qVE9ETyAtIHdpbmRvdyovLCBmYWxzZSwgUVN0cmluZygp LCBhc24pOwogfQogCiBzdGF0aWMgYm9vbCBydW5MaW5rKGNvbnN0IFFVcmwgJl91cmwsIGNvbnN0 IEtEZXNrdG9wRmlsZSAmY2ZnLCBjb25zdCBRQnl0ZUFycmF5ICZhc24pCmRpZmYgLS1naXQgYS9z cmMvd2lkZ2V0cy9rZmlsZWl0ZW1hY3Rpb25zLmNwcCBiL3NyYy93aWRnZXRzL2tmaWxlaXRlbWFj dGlvbnMuY3BwCmluZGV4IDgzODRjYjQuLmQ5ZGZhOGMgMTAwNjQ0Ci0tLSBhL3NyYy93aWRnZXRz L2tmaWxlaXRlbWFjdGlvbnMuY3BwCisrKyBiL3NyYy93aWRnZXRzL2tmaWxlaXRlbWFjdGlvbnMu Y3BwCkBAIC02MTksNyArNjE5LDcgQEAKICAgICAgICAgICAgIEtSdW46OmRpc3BsYXlPcGVuV2l0 aERpYWxvZyhzZXJ2aWNlSXRlbXMudXJsTGlzdCgpLCBtX3BhcmVudFdpZGdldCk7CiAgICAgICAg ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBLUnVuOjpydW4oKnNlcnZpY2VQdHIs IHNlcnZpY2VJdGVtcy51cmxMaXN0KCksIG1fcGFyZW50V2lkZ2V0KTsKKyAgICAgICAgS1J1bjo6 cnVuU2VydmljZSgqc2VydmljZVB0ciwgc2VydmljZUl0ZW1zLnVybExpc3QoKSwgbV9wYXJlbnRX aWRnZXQpOwogICAgIH0KIH0KIApAQCAtNjUwLDcgKzY1MCw3IEBACiAgICAgS1NlcnZpY2U6OlB0 ciBhcHAgPSBhY3QtPmRhdGEoKS52YWx1ZTxLU2VydmljZTo6UHRyPigpOwogICAgIFFfQVNTRVJU KGFwcCk7CiAgICAgaWYgKGFwcCkgewotICAgICAgICBLUnVuOjpydW4oKmFwcCwgbV9wcm9wcy51 cmxMaXN0KCksIG1fcGFyZW50V2lkZ2V0KTsKKyAgICAgICAgS1J1bjo6cnVuU2VydmljZSgqYXBw LCBtX3Byb3BzLnVybExpc3QoKSwgbV9wYXJlbnRXaWRnZXQpOwogICAgIH0KIH0KIApkaWZmIC0t Z2l0IGEvc3JjL3dpZGdldHMva3J1bi5jcHAgYi9zcmMvd2lkZ2V0cy9rcnVuLmNwcAppbmRleCBi OWFkNGUwLi44YjIxYzc4IDEwMDY0NAotLS0gYS9zcmMvd2lkZ2V0cy9rcnVuLmNwcAorKysgYi9z cmMvd2lkZ2V0cy9rcnVuLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBACiAjZW5kaWYKICAgICB9CiAK LSAgICByZXR1cm4gS1J1bjo6cnVuKCpvZmZlciwgbHN0LCB3aW5kb3csIHRlbXBGaWxlLCBzdWdn ZXN0ZWRGaWxlTmFtZSwgYXNuKTsKKyAgICByZXR1cm4gS1J1bjo6cnVuU2VydmljZSgqb2ZmZXIs IGxzdCwgd2luZG93LCB0ZW1wRmlsZSwgc3VnZ2VzdGVkRmlsZU5hbWUsIGFzbik7CiB9CiAKIGJv b2wgS1J1bjo6ZGlzcGxheU9wZW5XaXRoRGlhbG9nKGNvbnN0IFFMaXN0PFFVcmw+ICZsc3QsIFFX aWRnZXQgKndpbmRvdywgYm9vbCB0ZW1wRmlsZXMsCkBAIC0yNTUsNyArMjU1LDcgQEAKICAgICAg ICAgICAgIC8vcURlYnVnKCkgPDwgIk5vIHNlcnZpY2Ugc2V0LCBydW5uaW5nICIgPDwgbC50ZXh0 KCk7CiAgICAgICAgICAgICBzZXJ2aWNlID0gS1NlcnZpY2U6OlB0cihuZXcgS1NlcnZpY2UoUVN0 cmluZygpIC8qbmFtZSovLCBsLnRleHQoKSwgUVN0cmluZygpIC8qaWNvbiovKSk7CiAgICAgICAg IH0KLSAgICAgICAgcmV0dXJuIEtSdW46OnJ1bigqc2VydmljZSwgbHN0LCB3aW5kb3csIHRlbXBG aWxlcywgc3VnZ2VzdGVkRmlsZU5hbWUsIGFzbik7CisgICAgICAgIHJldHVybiBLUnVuOjpydW5T ZXJ2aWNlKCpzZXJ2aWNlLCBsc3QsIHdpbmRvdywgdGVtcEZpbGVzLCBzdWdnZXN0ZWRGaWxlTmFt ZSwgYXNuKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzgyLDcgKzc4Miw3IEBA CiB7CiAgICAgS1NlcnZpY2U6OlB0ciBzZXJ2aWNlKG5ldyBLU2VydmljZShfbmFtZSwgX2V4ZWMs IF9pY29uKSk7CiAKLSAgICByZXR1cm4gcnVuKCpzZXJ2aWNlLCBfdXJscywgd2luZG93LCBmYWxz ZSwgUVN0cmluZygpLCBhc24pOworICAgIHJldHVybiBydW5TZXJ2aWNlKCpzZXJ2aWNlLCBfdXJs cywgd2luZG93LCBmYWxzZSwgUVN0cmluZygpLCBhc24pOwogfQogCiBib29sIEtSdW46OnJ1bkNv bW1hbmQoY29uc3QgUVN0cmluZyAmY21kLCBRV2lkZ2V0ICp3aW5kb3csIGNvbnN0IFFTdHJpbmcg JndvcmtpbmdEaXJlY3RvcnkpCkBAIC05ODUsNyArOTg1LDcgQEAKICAgICAgICAgfQogICAgIH0g ZWxzZSB7CiAgICAgICAgIEtTZXJ2aWNlOjpQdHIgc2VydmljZSA9IEtTZXJ2aWNlOjpzZXJ2aWNl QnlTdG9yYWdlSWQoX2V4ZWMpOwotICAgICAgICBpZiAoc2VydmljZSAmJiBxLT5ydW4oKnNlcnZp Y2UsIHVybHMsIG1fd2luZG93LCBmYWxzZSwgUVN0cmluZygpLCBtX2FzbikpIHsKKyAgICAgICAg aWYgKHNlcnZpY2UgJiYgcS0+cnVuU2VydmljZSgqc2VydmljZSwgdXJscywgbV93aW5kb3csIGZh bHNlLCBRU3RyaW5nKCksIG1fYXNuKSkgewogICAgICAgICAgICAgbV9iRmluaXNoZWQgPSB0cnVl OwogICAgICAgICAgICAgc3RhcnRUaW1lcigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA IC0xMjUwLDcgKzEyNTAsNyBAQAogICAgICAgICBpZiAoc2VydiAmJiBzZXJ2LT5oYXNNaW1lVHlw ZSh0eXBlKSkgewogICAgICAgICAgICAgUUxpc3Q8UVVybD4gbHN0OwogICAgICAgICAgICAgbHN0 LmFwcGVuZChkLT5tX3N0clVSTCk7Ci0gICAgICAgICAgICBpZiAoS1J1bjo6cnVuKCpzZXJ2LCBs c3QsIGQtPm1fd2luZG93LCBmYWxzZSwgUVN0cmluZygpLCBkLT5tX2FzbikpIHsKKyAgICAgICAg ICAgIGlmIChLUnVuOjpydW5TZXJ2aWNlKCpzZXJ2LCBsc3QsIGQtPm1fd2luZG93LCBmYWxzZSwg UVN0cmluZygpLCBkLT5tX2FzbikpIHsKICAgICAgICAgICAgICAgICBzZXRGaW5pc2hlZCh0cnVl KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CgotLSAKVG8gdmlldywg dmlzaXQgaHR0cHM6Ly9nZXJyaXQudmVzbmlja3kuY2VzbmV0LmN6L3IvMjg3ClRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBodHRwczovL2dlcnJpdC52ZXNuaWNreS5jZXNuZXQuY3ovci9zZXR0aW5ncwoK R2Vycml0LU1lc3NhZ2VUeXBlOiBuZXdjaGFuZ2UKR2Vycml0LUNoYW5nZS1JZDogSWEzNjQ3NmE0 YWMzNGQzZmQxNmRlYmE5OTY1OTU5NzZjYTA3MWM3OWUKR2Vycml0LVBhdGNoU2V0OiAxCkdlcnJp dC1Qcm9qZWN0OiBraW8KR2Vycml0LUJyYW5jaDogbWFzdGVyCkdlcnJpdC1Pd25lcjogRGF2aWQg RmF1cmUgPGZhdXJlQGtkZS5vcmc+CkdlcnJpdC1SZXZpZXdlcjogTWFydGluIEdyw6TDn2xpbiA8 bWdyYWVzc2xpbkBrZGUub3JnPgpHZXJyaXQtUmV2aWV3ZXI6IFN5c2FkbWluIFRlc3RpbmcgQWNj b3VudCA8bnVsbEBrZGUub3JnPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpLZGUtZnJhbWV3b3Jrcy1kZXZlbCBtYWlsaW5nIGxpc3QKS2RlLWZyYW1ld29y a3MtZGV2ZWxAa2RlLm9yZwpodHRwczovL21haWwua2RlLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tk ZS1mcmFtZXdvcmtzLWRldmVsCg==