LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCiCgKgogKiBDb250cmlidXRvcnM6CiAqICAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnRlc3RzLnBlcmZvcm1hbmNlLmNvbW1vbjsKCmltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC5hY3Rpb25zLlNlcnZlckFjdGlvbjsKCnB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlcnZlckFjdGlvbnNUZXN0Q2FzZSBleHRlbmRzIFNlcnZlclBlcmZvcm1hbmNlVGVzdENhc2UgewoJcHVibGljIHZvaWQgdGVzdFNlcnZlckFjdGlvbnMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKCQlzdGFydE1lYXN1cmluZygpOwoJCUlTZXJ2ZXIgc2VydmVyID0gZ2V0Rmlyc3RTZXJ2ZXIoZ2V0U2VydmVyVHlwZUlkKCkpOwoJCUxpc3QgYWN0aW9ucyA9IFNlcnZlckFjdGlvbi5nZXRTZXJ2ZXJBY3Rpb25zKCk7CgkJZm9yIChJdGVyYXRvciBpdCA9IGFjdGlvbnMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykKCQkJKChTZXJ2ZXJBY3Rpb24paXQubmV4dCgpKS5nZXREZWxlZ2F0ZSgpLnN1cHBvcnRzKHNlcnZlcik7CgkJc3RvcE1lYXN1cmluZygpOwoJCWNvbW1pdE1lYXN1cmVtZW50cygpOwoJCWFzc2VydFBlcmZvcm1hbmNlKCk7Cgl9CgoJcHJvdGVjdGVkIGFic3RyYWN0IFN0cmluZyBnZXRTZXJ2ZXJUeXBlSWQoKTsKfQ==