LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7Ci8qKgogKiBIZWxwZXIgY2xhc3MgdGhhdCBzdG9yZXMgcHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBmb3Igc2VydmVyIGNvcmUuCiAqCiAqIDxwPlRoaXMgaW50ZXJmYWNlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBjbGllbnRzLjwvcD4KICovCnB1YmxpYyBpbnRlcmZhY2UgSVNlcnZlclByZWZlcmVuY2VzIHsKCS8qKgoJICogUmV0dXJucyB3aGV0aGVyIHNlcnZlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlc3RhcnRlZCB3aGVuCgkgKiByZXF1aXJlZC4KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNBdXRvUmVzdGFydGluZygpOwoKCS8qKgoJICogUmV0dXJucyB3aGV0aGVyIHNlcnZlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlc3RhcnRlZCB3aGVuCgkgKiByZXF1aXJlZC4KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNEZWZhdWx0QXV0b1Jlc3RhcnRpbmcoKTsKCgkvKioKCSAqIFNldCB3aGV0aGVyIHNlcnZlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlc3RhcnRlZCB3aGVuCgkgKiB0aGV5IG5lZWQgYSByZXN0YXJ0LgoJICoKCSAqIEBwYXJhbSBib29sZWFuCgkgKi8KCXB1YmxpYyB2b2lkIHNldEF1dG9SZXN0YXJ0aW5nKGJvb2xlYW4gYik7CgoJLyoqCgkgKiBSZXR1cm5zIHdoZXRoZXIgcHVibGlzaGluZyBzaG91bGQgYXV0b21hdGljYWxseSBvY2N1ciB3aGVuIG5lY2Vzc2FyeS4KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNBdXRvUHVibGlzaGluZygpOwoJCgkvKioKCSAqIFJldHVybnMgdGhlIGRlZmF1bHQgc2V0dGluZyBvZiB3aGV0aGVyIHB1Ymxpc2hpbmcgc2hvdWxkIGF1dG9tYXRpY2FsbHkKCSAqIG9jY3VyIHdoZW4gbmVjZXNzYXJ5LgoJICoKCSAqIEByZXR1cm4gYm9vbGVhbgoJICovCglwdWJsaWMgYm9vbGVhbiBpc0RlZmF1bHRBdXRvUHVibGlzaGluZygpOwoKCS8qKgoJICogU2V0IHdoZXRoZXIgcHVibGlzaGluZyBzaG91bGQgb2NjdXIgYXV0b21hdGljYWxseS4KCSAqCgkgKiBAcGFyYW0gYm9vbGVhbgoJICovCglwdWJsaWMgdm9pZCBzZXRBdXRvUHVibGlzaGluZyhib29sZWFuIGIpOwoKCS8qKgoJICogUmV0dXJucyB3aGV0aGVyIHNlcnZlcnMgYW5kIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIGluIHRoZQoJICogd29ya3NwYWNlIChhcyBvcHBvc2VkIHRvIGluIG1ldGFkYXRhKS4KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gaXNDcmVhdGVSZXNvdXJjZXNJbldvcmtzcGFjZSgpOwoKCS8qKgoJICogUmV0dXJucyB3aGV0aGVyIHNlcnZlcnMgYW5kIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIGluIHRoZQoJICogd29ya3NwYWNlIChhcyBvcHBvc2VkIHRvIGluIG1ldGFkYXRhKSBieSBkZWZhdWx0LgoJICoKCSAqIEByZXR1cm4gYm9vbGVhbgoJICovCglwdWJsaWMgYm9vbGVhbiBpc0RlZmF1bHRDcmVhdGVSZXNvdXJjZXNJbldvcmtzcGFjZSgpOwoKCS8qKgoJICogU2V0IHdoZXRoZXIgc2VydmVycyBhbmQgY29uZmlndXJhdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlCgkgKiB3b3Jrc3BhY2UgKGFzIG9wcG9zZWQgdG8gaW4gbWV0YWRhdGEpLgoJICoKCSAqIEBwYXJhbSBib29sZWFuCgkgKi8KCXB1YmxpYyB2b2lkIHNldENyZWF0ZVJlc291cmNlc0luV29ya3NwYWNlKGJvb2xlYW4gYik7Cn0=