ZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3NlcnZlci9jb3JlL3Rlc3RzL0FsbFRlc3RzLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvY29yZS90ZXN0cy9BbGxUZXN0cy5qYXZhCmluZGV4IDAzMTQ0NDUuLjYyYjRjMWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3NlcnZlci9jb3JlL3Rlc3RzL0FsbFRlc3RzLmphdmEKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvc2VydmVyL2NvcmUvdGVzdHMvQWxsVGVzdHMuamF2YQpAQCAtNDYsNyArNDYsNiBAQAogCQlzdWl0ZS5hZGRUZXN0U3VpdGUoU2VydmVyVHlwZXNUZXN0Q2FzZS5jbGFzcyk7CiAJCXN1aXRlLmFkZFRlc3RTdWl0ZShTZXJ2ZXJUYXNrc1Rlc3RDYXNlLmNsYXNzKTsKIAkJc3VpdGUuYWRkVGVzdFN1aXRlKFNlcnZlckxvY2F0b3JzVGVzdENhc2UuY2xhc3MpOwotCQlzdWl0ZS5hZGRUZXN0U3VpdGUoU2VydmVyQ29uZmlndXJhdGlvblR5cGVzVGVzdENhc2UuY2xhc3MpOwogCQlzdWl0ZS5hZGRUZXN0U3VpdGUoTW9kdWxlT2JqZWN0QWRhcHRlcnNUZXN0Q2FzZS5jbGFzcyk7CiAJCXN1aXRlLmFkZFRlc3RTdWl0ZShMYXVuY2hhYmxlQWRhcHRlcnNUZXN0Q2FzZS5jbGFzcyk7CiAJCXN1aXRlLmFkZFRlc3RTdWl0ZShDbGllbnRzVGVzdENhc2UuY2xhc3MpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvc2VydmVyL2NvcmUvdGVzdHMvZXh0ZW5zaW9uL01vZHVsZU9iamVjdEFkYXB0ZXJzVGVzdENhc2UuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3NlcnZlci9jb3JlL3Rlc3RzL2V4dGVuc2lvbi9Nb2R1bGVPYmplY3RBZGFwdGVyc1Rlc3RDYXNlLmphdmEKaW5kZXggMGY2NDE0YS4uYTNiMjY4OSAxMDA2NDQKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvc2VydmVyL2NvcmUvdGVzdHMvZXh0ZW5zaW9uL01vZHVsZU9iamVjdEFkYXB0ZXJzVGVzdENhc2UuamF2YQorKysgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvY29yZS90ZXN0cy9leHRlbnNpb24vTW9kdWxlT2JqZWN0QWRhcHRlcnNUZXN0Q2FzZS5qYXZhCkBAIC0xNCw3ICsxNCw3IEBACiBpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwogaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CiAKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZU9iamVjdEFkYXB0ZXI7CitpbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklNb2R1bGVBcnRpZmFjdEFkYXB0ZXI7CiBpbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLlNlcnZlckNvcmU7CiAKIHB1YmxpYyBjbGFzcyBNb2R1bGVPYmplY3RBZGFwdGVyc1Rlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgewpAQCAtMjMsNyArMjMsNyBAQAogCX0KIAogCXB1YmxpYyB2b2lkIHRlc3RNb2R1bGVPYmplY3RBZGFwdGVyc0V4dGVuc2lvbigpIHRocm93cyBFeGNlcHRpb24gewotCQlJTW9kdWxlT2JqZWN0QWRhcHRlcltdIG1vYSA9IFNlcnZlckNvcmUuZ2V0TW9kdWxlT2JqZWN0QWRhcHRlcnMoKTsKKwkJSU1vZHVsZUFydGlmYWN0QWRhcHRlcltdIG1vYSA9IFNlcnZlckNvcmUuZ2V0TW9kdWxlQXJ0aWZhY3RBZGFwdGVycygpOwogCQlpZiAobW9hICE9IG51bGwpIHsKIAkJCWludCBzaXplID0gbW9hLmxlbmd0aDsKIAkJCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3Qvc2VydmVyL2NvcmUvdGVzdHMvZXh0ZW5zaW9uL1NlcnZlckNvbmZpZ3VyYXRpb25UeXBlc1Rlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvY29yZS90ZXN0cy9leHRlbnNpb24vU2VydmVyQ29uZmlndXJhdGlvblR5cGVzVGVzdENhc2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5YTg4MS4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvY29yZS90ZXN0cy9leHRlbnNpb24vU2VydmVyQ29uZmlndXJhdGlvblR5cGVzVGVzdENhc2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDb21tb24gUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCi2gKgotICogQ29udHJpYnV0b3JzOgotICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLnRlc3RzLmV4dGVuc2lvbjsKLQotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwotCi1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJDb25maWd1cmF0aW9uVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuU2VydmVyQ29yZTsKLQotcHVibGljIGNsYXNzIFNlcnZlckNvbmZpZ3VyYXRpb25UeXBlc1Rlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgewotCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKLQkJcmV0dXJuIG5ldyBUZXN0U3VpdGUoU2VydmVyQ29uZmlndXJhdGlvblR5cGVzVGVzdENhc2UuY2xhc3MsICJTZXJ2ZXJDb25maWd1cmF0aW9uVHlwZXNUZXN0Q2FzZSIpOwotCX0KLQotCXB1YmxpYyB2b2lkIHRlc3RTZXJ2ZXJDb25maWd1cmF0aW9uVHlwZXNFeHRlbnNpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJSVNlcnZlckNvbmZpZ3VyYXRpb25UeXBlW10gc2VydmVyQ29uZmlnVHlwZXMgPSBTZXJ2ZXJDb3JlLmdldFNlcnZlckNvbmZpZ3VyYXRpb25UeXBlcygpOwotCQlpZiAoc2VydmVyQ29uZmlnVHlwZXMgIT0gbnVsbCkgewotCQkJaW50IHNpemUgPSBzZXJ2ZXJDb25maWdUeXBlcy5sZW5ndGg7Ci0JCQlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oc2VydmVyQ29uZmlnVHlwZXNbaV0uZ2V0SWQoKSArICIgLSAiICsgc2VydmVyQ29uZmlnVHlwZXNbaV0uZ2V0TmFtZSgpKTsKLQkJfQotCX0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvdGVzdHMvcGVyZm9ybWFuY2UvY29tbW9uL0Fic3RyYWN0T3BlbkVkaXRvclRlc3RDYXNlLmphdmEgYi90ZXN0cy9vcmcuZWNsaXBzZS53c3Quc2VydmVyLnRlc3RzLnBlcmZvcm1hbmNlL3BlcmZvcm1hbmNlL29yZy9lY2xpcHNlL3dzdC9zZXJ2ZXIvdGVzdHMvcGVyZm9ybWFuY2UvY29tbW9uL0Fic3RyYWN0T3BlbkVkaXRvclRlc3RDYXNlLmphdmEKaW5kZXggNzc2NTE2Ni4uNmY4MTk0ZiAxMDA2NDQKLS0tIGEvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnNlcnZlci50ZXN0cy5wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS9vcmcvZWNsaXBzZS93c3Qvc2VydmVyL3Rlc3RzL3BlcmZvcm1hbmNlL2NvbW1vbi9BYnN0cmFjdE9wZW5FZGl0b3JUZXN0Q2FzZS5qYXZhCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudGVzdHMucGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uvb3JnL2VjbGlwc2Uvd3N0L3NlcnZlci90ZXN0cy9wZXJmb3JtYW5jZS9jb21tb24vQWJzdHJhY3RPcGVuRWRpdG9yVGVzdENhc2UuamF2YQpAQCAtMjMsNyArMjMsNyBAQAogCQlzdGFydE1lYXN1cmluZygpOwogCQlJU2VydmVyIHNlcnZlciA9IGdldEZpcnN0U2VydmVyKGdldFNlcnZlclR5cGVJZCgpKTsKIAkJSVdvcmtiZW5jaFBhZ2UgcGFnZSA9IFBsYXRmb3JtVUkuZ2V0V29ya2JlbmNoKCkuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0QWN0aXZlUGFnZSgpOwotCQlJRWRpdG9yUGFydCBlZGl0b3IgPSBwYWdlLm9wZW5FZGl0b3IobmV3IFNlcnZlckVkaXRvcklucHV0KHNlcnZlci5nZXRJZCgpLCBzZXJ2ZXIuZ2V0U2VydmVyQ29uZmlndXJhdGlvbigpLmdldElkKCkpLCBTRVJWRVJfRURJVE9SX0lELCB0cnVlKTsKKwkJSUVkaXRvclBhcnQgZWRpdG9yID0gcGFnZS5vcGVuRWRpdG9yKG5ldyBTZXJ2ZXJFZGl0b3JJbnB1dChzZXJ2ZXIuZ2V0SWQoKSksIFNFUlZFUl9FRElUT1JfSUQsIHRydWUpOwogCQlzdG9wTWVhc3VyaW5nKCk7CiAJCWNvbW1pdE1lYXN1cmVtZW50cygpOwogCQlhc3NlcnRQZXJmb3JtYW5jZSgpOwo=