LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7Ci8qKgogKiBBbiBhYnN0cmFjdCBwb3J0IG9uIGEgc2VydmVyLgogKi8KcHVibGljIGludGVyZmFjZSBJU2VydmVyUG9ydCB7CgkvKioKCSAqIFJldHVybiBhbiBvcHRpb25hbCBpbnRlcm5hbCBpZCB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgcG9ydC4KCSAqIAoJICogQHJldHVybiBqYXZhLmxhbmcuU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0SWQoKTsKCgkvKioKCSAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgcG9ydC4KCSAqIEByZXR1cm4gamF2YS5sYW5nLlN0cmluZwoJICovCglwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKCgkvKioKCSAqIFJldHVybiB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyLgoJICogQHJldHVybiBpbnQKCSAqLwoJcHVibGljIGludCBnZXRQb3J0KCk7CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSBwcm90b2NvbCwgZS5nLiBIVFRQIG9mIHRoaXMgcG9ydC4gUmV0dXJucyBudWxsCgkgKiBpZiB0aGUgcHJvdG9jb2wgaXMgdW5rbm93bi4KCSAqIAoJICogQHJldHVybiBqYXZhLmxhbmcuU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0UHJvdG9jb2woKTsKCgkvKioKCSAqIFJldHVybnMgdGhlIGNvbnRlbnQgdHlwZXMgdGhhdCB0aGlzIHBvcnQgd291bGQgbm9ybWFsbHkgc2VydmUsIG9yIG51bGwKCSAqIGlmIHRoZSBjb250ZW50IGlzIHVua25vd24uCgkgKiAKCSAqIEByZXR1cm4gamF2YS5sYW5nLlN0cmluZ1tdCgkgKi8KCXB1YmxpYyBTdHJpbmdbXSBnZXRDb250ZW50VHlwZXMoKTsKCQoJLyoqCgkgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBwb3J0IGlzIGFuICJhZHZhbmNlZCIgcG9ydCBhbmQgc2hvdWxkIG5vdCBiZSBzaG93bgoJICogdG8gbm92aWNlIHVzZXJzLgoJICogCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNBZHZhbmNlZCgpOwp9