LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkuaW50ZXJuYWwud2l6YXJkOwoKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbC5JQ2xpZW50OwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC5NZXNzYWdlczsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkuaW50ZXJuYWwud2l6YXJkLnBhZ2UuU2VsZWN0Q2xpZW50Q29tcG9zaXRlOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS53aXphcmQuSVdpemFyZEhhbmRsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIudWkud2l6YXJkLldpemFyZEZyYWdtZW50OwppbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwovKioKICogQSB3aXphcmQgdXNlZCB0byBzZWxlY3QgYSBzZXJ2ZXIgY2xpZW50IGZyb20gYSBsaXN0LgogKi8KcHVibGljIGNsYXNzIFNlbGVjdENsaWVudFdpemFyZCBleHRlbmRzIFRhc2tXaXphcmQgewoJcHJvdGVjdGVkIHN0YXRpYyBTZWxlY3RDbGllbnRDb21wb3NpdGUgY29tcDsKCgkvKioKCSAqIFNlbGVjdENsaWVudFdpemFyZCBjb25zdHJ1Y3RvciBjb21tZW50LgoJICogCgkgKiBAcGFyYW0gY2xpZW50cyBhbiBhcnJheSBvZiBjbGllbnRzCgkgKi8KCXB1YmxpYyBTZWxlY3RDbGllbnRXaXphcmQoZmluYWwgSUNsaWVudFtdIGNsaWVudHMpIHsKCQlzdXBlcihNZXNzYWdlcy53aXpTZWxlY3RDbGllbnRXaXphcmRUaXRsZSwKCQkJbmV3IFdpemFyZEZyYWdtZW50KCkgewkJCQkJCQoJCQkJcHVibGljIGJvb2xlYW4gaGFzQ29tcG9zaXRlKCkgewoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoKCQkJCS8qIChub24tSmF2YWRvYykKCQkJCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC50YXNrLldpemFyZFRhc2sjZ2V0V2l6YXJkUGFnZSgpCgkJCQkgKi8KCQkJCXB1YmxpYyBDb21wb3NpdGUgY3JlYXRlQ29tcG9zaXRlKENvbXBvc2l0ZSBwYXJlbnQsIElXaXphcmRIYW5kbGUgd2l6YXJkKSB7CgkJCQkJY29tcCA9IG5ldyBTZWxlY3RDbGllbnRDb21wb3NpdGUocGFyZW50LCB3aXphcmQsIGNsaWVudHMpOwoJCQkJCXJldHVybiBjb21wOwoJCQkJfQoJCQl9CgkJKTsKCgkJc2V0Rm9yY2VQcmV2aW91c0FuZE5leHRCdXR0b25zKHRydWUpOwoJfQoKCS8qKgoJICogUmV0dXJuIHRoZSBzZWxlY3RlZCBjbGllbnQuCgkgKiBAcmV0dXJuIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JQ2xpZW50CgkgKi8KCXB1YmxpYyBJQ2xpZW50IGdldFNlbGVjdGVkQ2xpZW50KCkgewoJCXJldHVybiBjb21wLmdldFNlbGVjdGVkQ2xpZW50KCk7Cgl9Cn0=