LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBDb3B5cmlnaHQgKGMpIDIwMTAgT3JhY2xlLiBBbGwgcmlnaHRzIHJlc2VydmVkLgoqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZQoqIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAsIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uCiogYW5kIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC4KKiAKKiBDb250cmlidXRvcnM6CiogICAgIE9yYWNsZSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLmpwdC5kYndzLmVjbGlwc2VsaW5rLnVpLmludGVybmFsLndpemFyZHMuZ2VuOwoKaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOwppbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwppbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKCi8qKgogKiAgU2VsZWN0U2luZ2xlRmlsZVZpZXcKICogIAogKiAgRmHnYWRlIGNsYXNzIHRvIGNoYW5nZSBhY2Nlc3NpYmlsaXR5IG9mIFNlbGVjdFNpbmdsZUZpbGVWaWV3LgogKi8KQFN1cHByZXNzV2FybmluZ3MoInJlc3RyaWN0aW9uIikKcHVibGljIGNsYXNzIFNlbGVjdFNpbmdsZUZpbGVWaWV3RmFjYWRlIGV4dGVuZHMgb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi51aS5pbnRlcm5hbC52aWV3ZXJzLlNlbGVjdFNpbmdsZUZpbGVWaWV3IHsKCglwdWJsaWMgc3RhdGljIGludGVyZmFjZSBMaXN0ZW5lciBleHRlbmRzIG9yZy5lY2xpcHNlLndzdC5jb21tb24udWkuaW50ZXJuYWwudmlld2Vycy5TZWxlY3RTaW5nbGVGaWxlVmlldy5MaXN0ZW5lcgoJe30KCglwdWJsaWMgU2VsZWN0U2luZ2xlRmlsZVZpZXdGYWNhZGUoSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uLCBib29sZWFuIGlzRmlsZU1hbmRhdG9yeSkgewoJCXN1cGVyKHNlbGVjdGlvbiwgaXNGaWxlTWFuZGF0b3J5KTsKCX0KCglwdWJsaWMgdm9pZCBhZGRGaWx0ZXJFeHRlbnNpb25zKFN0cmluZ1tdIGZpbHRlckV4dGVuc2lvbnMpIHsKCQlzdXBlci5hZGRGaWx0ZXJFeHRlbnNpb25zKGZpbHRlckV4dGVuc2lvbnMpOwoJfQoKCXB1YmxpYyBDb21wb3NpdGUgY3JlYXRlQ29udHJvbChDb21wb3NpdGUgcGFyZW50KSB7CgkJcmV0dXJuIHN1cGVyLmNyZWF0ZUNvbnRyb2wocGFyZW50KTsKCX0KCglwdWJsaWMgSUZpbGUgZ2V0RmlsZSgpIHsKCQlyZXR1cm4gc3VwZXIuZ2V0RmlsZSgpOwoJfQoKCXB1YmxpYyB2b2lkIHJlc2V0RmlsdGVycygpIHsKCQlzdXBlci5yZXNldEZpbHRlcnMoKTsKCX0KCQoJcHVibGljIHZvaWQgc2V0VmlzaWJsZUhlbHBlcihib29sZWFuIGlzVmlzaWJsZSkgewoJCXN1cGVyLnNldFZpc2libGVIZWxwZXIoaXNWaXNpYmxlKTsKCX0KCQoJcHVibGljIHZvaWQgc2V0RGVmYXVsdFNlbGVjdGlvbihJU2VsZWN0aW9uIHNlbGVjdGlvbikgewoJCXN1cGVyLnNldERlZmF1bHRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKCX0KCglwdWJsaWMgdm9pZCBzZXRMaXN0ZW5lcihMaXN0ZW5lciBsaXN0ZW5lcikgewoJCXN1cGVyLnNldExpc3RlbmVyKGxpc3RlbmVyKTsKCX0KfQo=