LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkuaW50ZXJuYWwud2l6YXJkOwoKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbC5JQ2xpZW50OwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC5TZXJ2ZXJVSVBsdWdpbjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkuaW50ZXJuYWwud2l6YXJkLnBhZ2UuU2VsZWN0Q2xpZW50Q29tcG9zaXRlOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS53aXphcmQuSVdpemFyZEhhbmRsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkud2l6YXJkLlRhc2tXaXphcmQ7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnVpLndpemFyZC5XaXphcmRGcmFnbWVudDsKaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLyoqCiAqIEEgd2l6YXJkIHVzZWQgdG8gc2VsZWN0IGEgc2VydmVyIGNsaWVudCBmcm9tIGEgbGlzdC4KICovCnB1YmxpYyBjbGFzcyBTZWxlY3RDbGllbnRXaXphcmQgZXh0ZW5kcyBUYXNrV2l6YXJkIHsKCXByb3RlY3RlZCBzdGF0aWMgU2VsZWN0Q2xpZW50Q29tcG9zaXRlIGNvbXA7CgoJLyoqCgkgKiBTZWxlY3RDbGllbnRXaXphcmQgY29uc3RydWN0b3IgY29tbWVudC4KCSAqLwoJcHVibGljIFNlbGVjdENsaWVudFdpemFyZChmaW5hbCBJQ2xpZW50W10gY2xpZW50cykgewoJCXN1cGVyKFNlcnZlclVJUGx1Z2luLmdldFJlc291cmNlKCIld2l6U2VsZWN0Q2xpZW50V2l6YXJkVGl0bGUiKSwKCQkJbmV3IFdpemFyZEZyYWdtZW50KCkgewkJCQkJCQoJCQkJcHVibGljIGJvb2xlYW4gaGFzQ29tcG9zaXRlKCkgewoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoKCQkJCS8qIChub24tSmF2YWRvYykKCQkJCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC50YXNrLldpemFyZFRhc2sjZ2V0V2l6YXJkUGFnZSgpCgkJCQkgKi8KCQkJCXB1YmxpYyBDb21wb3NpdGUgY3JlYXRlQ29tcG9zaXRlKENvbXBvc2l0ZSBwYXJlbnQsIElXaXphcmRIYW5kbGUgd2l6YXJkKSB7CgkJCQkJY29tcCA9IG5ldyBTZWxlY3RDbGllbnRDb21wb3NpdGUocGFyZW50LCB3aXphcmQsIGNsaWVudHMpOwoJCQkJCXJldHVybiBjb21wOwoJCQkJfQoJCQl9CgkJKTsKCgkJc2V0Rm9yY2VQcmV2aW91c0FuZE5leHRCdXR0b25zKHRydWUpOwoJfQoKCS8qKgoJICogUmV0dXJuIHRoZSBzZWxlY3RlZCBjbGllbnQuCgkgKiBAcmV0dXJuIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JQ2xpZW50CgkgKi8KCXB1YmxpYyBJQ2xpZW50IGdldFNlbGVjdGVkQ2xpZW50KCkgewoJCXJldHVybiBjb21wLmdldFNlbGVjdGVkQ2xpZW50KCk7Cgl9Cn0=