ZGlmZiAtLWdpdCBhL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfcGFnZS5jcHAgYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3BhZ2UuY3BwCmluZGV4IDQ5NmVkN2MuLjVlYTU3NWUgMTAwNjQ0Ci0tLSBhL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfcGFnZS5jcHAKKysrIGIvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9wYWdlLmNwcApAQCAtMzUsMTAgKzM1LDcgQEAKICAgQ1BERl9PYmplY3QqIHBhZ2VBdHRyID0gR2V0UGFnZUF0dHIoIlJlc291cmNlcyIpOwogICBtX3BSZXNvdXJjZXMgPSBwYWdlQXR0ciA/IHBhZ2VBdHRyLT5HZXREaWN0KCkgOiBudWxscHRyOwogICBtX3BQYWdlUmVzb3VyY2VzID0gbV9wUmVzb3VyY2VzOwotICBDUERGX09iamVjdCogcFJvdGF0ZSA9IEdldFBhZ2VBdHRyKCJSb3RhdGUiKTsKLSAgaW50IHJvdGF0ZSA9IHBSb3RhdGUgPyBwUm90YXRlLT5HZXRJbnRlZ2VyKCkgLyA5MCAlIDQgOiAwOwotICBpZiAocm90YXRlIDwgMCkKLSAgICByb3RhdGUgKz0gNDsKKyAgaW50IHJvdGF0ZSA9IEdldFBhZ2VSb3RhdGlvbigpOwogCiAgIENQREZfQXJyYXkqIHBNZWRpYUJveCA9IFRvQXJyYXkoR2V0UGFnZUF0dHIoIk1lZGlhQm94IikpOwogICBDRlhfRmxvYXRSZWN0IG1lZGlhYm94OwpAQCAtMTc2LDYgKzE3MywxMiBAQAogICByZXR1cm4gbWF0cml4OwogfQogCitpbnQgQ1BERl9QYWdlOjpHZXRQYWdlUm90YXRpb24oKSBjb25zdCB7CisgIENQREZfT2JqZWN0KiBwUm90YXRlID0gR2V0UGFnZUF0dHIoIlJvdGF0ZSIpOworICBpbnQgcm90YXRlID0gcFJvdGF0ZSA/IChwUm90YXRlLT5HZXRJbnRlZ2VyKCkgLyA5MCkgJSA0IDogMDsKKyAgcmV0dXJuIChyb3RhdGUgPCAwKSA/IChyb3RhdGUgKyA0KSA6IHJvdGF0ZTsKK30KKwogYm9vbCBHcmFwaGljc0RhdGE6Om9wZXJhdG9yPChjb25zdCBHcmFwaGljc0RhdGEmIG90aGVyKSBjb25zdCB7CiAgIGlmIChmaWxsQWxwaGEgIT0gb3RoZXIuZmlsbEFscGhhKQogICAgIHJldHVybiBmaWxsQWxwaGEgPCBvdGhlci5maWxsQWxwaGE7CmRpZmYgLS1naXQgYS9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3BhZ2UuaCBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfcGFnZS5oCmluZGV4IDA3NmFiM2YuLmIwZGZhMjYgMTAwNjQ0Ci0tLSBhL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfcGFnZS5oCisrKyBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfcGFnZS5oCkBAIC01Niw2ICs1Niw3IEBACiAgIGZsb2F0IEdldFBhZ2VIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX1BhZ2VIZWlnaHQ7IH0KICAgQ0ZYX0Zsb2F0UmVjdCBHZXRQYWdlQkJveCgpIGNvbnN0IHsgcmV0dXJuIG1fQkJveDsgfQogICBjb25zdCBDRlhfTWF0cml4JiBHZXRQYWdlTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9QYWdlTWF0cml4OyB9CisgIGludCBHZXRQYWdlUm90YXRpb24oKSBjb25zdDsKICAgQ1BERl9PYmplY3QqIEdldFBhZ2VBdHRyKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIEdldFJlbmRlckNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9wUGFnZVJlbmRlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9mcGRmc2RrL2ZwZGZlZGl0X2VtYmVkZGVydGVzdC5jcHAgYi9mcGRmc2RrL2ZwZGZlZGl0X2VtYmVkZGVydGVzdC5jcHAKaW5kZXggOTUyNTY0ZC4uZDYyZjVjYSAxMDA2NDQKLS0tIGEvZnBkZnNkay9mcGRmZWRpdF9lbWJlZGRlcnRlc3QuY3BwCisrKyBiL2ZwZGZzZGsvZnBkZmVkaXRfZW1iZWRkZXJ0ZXN0LmNwcApAQCAtNjk0LDMgKzY5NCwxMyBAQAogICBBU1NFUlRfVFJVRSh3aWR0aHNfYXJyYXkpOwogICBDaGVja0NvbXBvc2l0ZUZvbnRXaWR0aHMod2lkdGhzX2FycmF5LCB0eXBlZF9mb250KTsKIH0KKworVEVTVF9GKEZQREZFZGl0RW1iZWRkZXJ0ZXN0LCBOb3JtYWxpemVOZWdhdGl2ZVJvdGF0aW9uKSB7CisgIC8vIExvYWQgZG9jdW1lbnQgd2l0aCBhIC05MCBkZWdyZWUgcm90YXRpb24KKyAgRVhQRUNUX1RSVUUoT3BlbkRvY3VtZW50KCJidWdfNzEzMTk3LnBkZiIpKTsKKyAgRlBERl9QQUdFIHBhZ2UgPSBMb2FkUGFnZSgwKTsKKyAgRVhQRUNUX05FKG51bGxwdHIsIHBhZ2UpOworCisgIEVYUEVDVF9FUSgzLCBGUERGUGFnZV9HZXRSb3RhdGlvbihwYWdlKSk7CisgIFVubG9hZFBhZ2UocGFnZSk7Cit9CmRpZmYgLS1naXQgYS9mcGRmc2RrL2ZwZGZlZGl0cGFnZS5jcHAgYi9mcGRmc2RrL2ZwZGZlZGl0cGFnZS5jcHAKaW5kZXggNTExYjdmNS4uNzM5NzIzZiAxMDA2NDQKLS0tIGEvZnBkZnNkay9mcGRmZWRpdHBhZ2UuY3BwCisrKyBiL2ZwZGZzZGsvZnBkZmVkaXRwYWdlLmNwcApAQCAtMTMzLDIwICsxMzMsNyBAQAogICBDUERGX1BhZ2UqIHBQYWdlID0gQ1BERlBhZ2VGcm9tRlBERlBhZ2UocGFnZSk7CiAgIGlmICghSXNQYWdlT2JqZWN0KHBQYWdlKSkKICAgICByZXR1cm4gLTE7Ci0KLSAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IHBQYWdlLT5tX3BGb3JtRGljdDsKLSAgd2hpbGUgKHBEaWN0KSB7Ci0gICAgaWYgKHBEaWN0LT5LZXlFeGlzdCgiUm90YXRlIikpIHsKLSAgICAgIENQREZfT2JqZWN0KiBwUm90YXRlT2JqID0gcERpY3QtPkdldE9iamVjdEZvcigiUm90YXRlIiktPkdldERpcmVjdCgpOwotICAgICAgcmV0dXJuIHBSb3RhdGVPYmogPyBwUm90YXRlT2JqLT5HZXRJbnRlZ2VyKCkgLyA5MCA6IDA7Ci0gICAgfQotICAgIGlmICghcERpY3QtPktleUV4aXN0KCJQYXJlbnQiKSkKLSAgICAgIGJyZWFrOwotCi0gICAgcERpY3QgPSBUb0RpY3Rpb25hcnkocERpY3QtPkdldE9iamVjdEZvcigiUGFyZW50IiktPkdldERpcmVjdCgpKTsKLSAgfQotCi0gIHJldHVybiAwOworICByZXR1cm4gcFBhZ2UtPkdldFBhZ2VSb3RhdGlvbigpOwogfQogCiBETExFWFBPUlQgdm9pZCBTVERDQUxMIEZQREZQYWdlX0luc2VydE9iamVjdChGUERGX1BBR0UgcGFnZSwKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZnZpZXcuY3BwIGIvZnBkZnNkay9mcGRmdmlldy5jcHAKaW5kZXggNGZlYTM5Mi4uYzkyOGViZSAxMDA2NDQKLS0tIGEvZnBkZnNkay9mcGRmdmlldy5jcHAKKysrIGIvZnBkZnNkay9mcGRmdmlldy5jcHAKQEAgLTc0MCwxOSArNzQwLDcgQEAKICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obWFza19ib3guYm90dG9tICogc2NhbGVfeSk7CiAKICAgLy8gR2V0IHBhZ2Ugcm90YXRpb24KLSAgaW50IHBhZ2Vfcm90YXRpb24gPSAwOwotICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcFBhZ2UtPm1fcEZvcm1EaWN0OwotICB3aGlsZSAocERpY3QpIHsKLSAgICBpZiAocERpY3QtPktleUV4aXN0KCJSb3RhdGUiKSkgewotICAgICAgQ1BERl9PYmplY3QqIHBSb3RhdGVPYmogPSBwRGljdC0+R2V0T2JqZWN0Rm9yKCJSb3RhdGUiKS0+R2V0RGlyZWN0KCk7Ci0gICAgICBwYWdlX3JvdGF0aW9uID0gcFJvdGF0ZU9iaiA/IHBSb3RhdGVPYmotPkdldEludGVnZXIoKSAvIDkwIDogMDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoIXBEaWN0LT5LZXlFeGlzdCgiUGFyZW50IikpCi0gICAgICBicmVhazsKLQotICAgIHBEaWN0ID0gVG9EaWN0aW9uYXJ5KHBEaWN0LT5HZXRPYmplY3RGb3IoIlBhcmVudCIpLT5HZXREaXJlY3QoKSk7Ci0gIH0KKyAgaW50IHBhZ2Vfcm90YXRpb24gPSBwUGFnZS0+R2V0UGFnZVJvdGF0aW9uKCk7CiAKICAgLy8gQ29tcHV0ZSBvZmZzZXRzCiAgIGludCBvZmZzZXRfeCA9IDA7CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy9idWdfNzEzMTk3LmluIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzcxMzE5Ny5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWVhZWUyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzcxMzE5Ny5pbgpAQCAtMCwwICsxLDI3IEBACit7e2hlYWRlcn19DQore3tvYmplY3QgMSAwfX0gPDwNCisgIC9UeXBlIC9DYXRhbG9nDQorICAvUGFnZXMgMiAwIFINCis+Pg0KK2VuZG9iag0KK3t7b2JqZWN0IDIgMH19PDwNCisgIC9UeXBlIC9QYWdlcw0KKyAgL01lZGlhQm94IFswIDAgNjAwIDgwMF0NCisgIC9Db3VudCAxDQorICAvS2lkcyBbIDMgMCBSIF0NCis+Pg0KK2VuZG9iag0KK3t7b2JqZWN0IDMgMH19PDwNCisgIC9UeXBlIC9QYWdlDQorICAvUGFyZW50IDIgMCBSDQorICAvUmVzb3VyY2VzIDw8Pj4NCisgIC9Sb3RhdGUgLTkwDQorPj4NCitlbmRvYmoNCit7e3hyZWZ9fQ0KK3RyYWlsZXIgPDwNCisgIC9TaXplIDQNCisgIC9Sb290IDEgMCBSDQorPj4NCit7e3N0YXJ0eHJlZn19DQorJSVFT0YNCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy9idWdfNzEzMTk3LnBkZiBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z183MTMxOTcucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MWNkZTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfNzEzMTk3LnBkZgpAQCAtMCwwICsxLDM0IEBACislUERGLTEuNworJaDypPQNCisxIDAgb2JqIDw8DQorICAvVHlwZSAvQ2F0YWxvZw0KKyAgL1BhZ2VzIDIgMCBSDQorPj4NCitlbmRvYmoNCisyIDAgb2JqPDwNCisgIC9UeXBlIC9QYWdlcw0KKyAgL01lZGlhQm94IFswIDAgNjAwIDgwMF0NCisgIC9Db3VudCAxDQorICAvS2lkcyBbIDMgMCBSIF0NCis+Pg0KK2VuZG9iag0KKzMgMCBvYmo8PA0KKyAgL1R5cGUgL1BhZ2UNCisgIC9QYXJlbnQgMiAwIFINCisgIC9SZXNvdXJjZXMgPDw+Pg0KKyAgL1JvdGF0ZSAtOTANCis+Pg0KK2VuZG9iag0KK3hyZWYKKzAgNAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAxNiAwMDAwMCBuIAorMDAwMDAwMDA3NCAwMDAwMCBuIAorMDAwMDAwMDE3MSAwMDAwMCBuIAordHJhaWxlciA8PA0KKyAgL1NpemUgNA0KKyAgL1Jvb3QgMSAwIFINCis+Pg0KK3N0YXJ0eHJlZgorMjYwDQorJSVFT0YNCg==