LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCiCgKgogKiBDb250cmlidXRvcnM6CiAqICAgIElCTSAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnRlc3RzLnBlcmZvcm1hbmNlLmNvbW1vbjsKCmltcG9ydCBvcmcuZWNsaXBzZS51aS5JRWRpdG9yUGFydDsKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQYWdlOwppbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC5lZGl0b3IuU2VydmVyRWRpdG9ySW5wdXQ7CgpwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPcGVuRWRpdG9yVGVzdENhc2UgZXh0ZW5kcyBTZXJ2ZXJQZXJmb3JtYW5jZVRlc3RDYXNlIHsKCXByaXZhdGUgZmluYWwgU3RyaW5nIFNFUlZFUl9FRElUT1JfSUQgPSAib3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5lZGl0b3IiOwoKCXB1YmxpYyB2b2lkIHRlc3RPcGVuRWRpdG9yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CgkJc3RhcnRNZWFzdXJpbmcoKTsKCQlJU2VydmVyIHNlcnZlciA9IGdldEZpcnN0U2VydmVyKGdldFNlcnZlclR5cGVJZCgpKTsKCQlJV29ya2JlbmNoUGFnZSBwYWdlID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRBY3RpdmVQYWdlKCk7CgkJSUVkaXRvclBhcnQgZWRpdG9yID0gcGFnZS5vcGVuRWRpdG9yKG5ldyBTZXJ2ZXJFZGl0b3JJbnB1dChzZXJ2ZXIuZ2V0SWQoKSksIFNFUlZFUl9FRElUT1JfSUQsIHRydWUpOwoJCXN0b3BNZWFzdXJpbmcoKTsKCQljb21taXRNZWFzdXJlbWVudHMoKTsKCQlhc3NlcnRQZXJmb3JtYW5jZSgpOwoJCXBhZ2UuY2xvc2VFZGl0b3IoZWRpdG9yLCBmYWxzZSk7Cgl9CgoJcHJvdGVjdGVkIGFic3RyYWN0IFN0cmluZyBnZXRTZXJ2ZXJUeXBlSWQoKTsKfQ==