LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7CgovKioKICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSB0aGUgc2VydmVyIHRvIGJyb2FkY2FzdCBhIGNoYW5nZSBvZiBzdGF0ZS4KICogVXN1YWxseSwgdGhlIGNoYW5nZSBvZiBzdGF0ZSB3aWxsIGJlIGNhdXNlZCBieSBzb21lIHVzZXIgYWN0aW9uLAogKiAoZS5nLiByZXF1ZXN0aW5nIHRvIHN0YXJ0IGEgc2VydmVyKSBob3dldmVyLCBpdCBpcyBlcXVhbGx5IGZpbmUgZm9yCiAqIGEgc2VydmVyIHRvIGJyb2FkY2FzdCBhIGNoYW5nZSBvZiBzdGF0ZSB0aHJvdWdoIG5vIGRpcmVjdCB1c2VyIGFjdGlvbi4KICogKGUuZy4gc3RvcHBpbmcgYmVjYXVzZSB0aGUgc2VydmVyIGNyYXNoZWQpIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlCiAqIHVzZWQgdG8gaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSBjaGFuZ2Ugb3IgdXBkYXRlIHRoZSBVSS4KICoKICogPHA+Tm90ZTogVGhlIHNlcnZlciBsaXN0ZW5lciBldmVudCBNVVNUIE5PVCBkaXJlY3RseSBiZSB1c2VkIHRvIG1vZGlmeQogKiB0aGUgc2VydmVyJ3Mgc3RhdGUgdmlhIG9uZSBvZiB0aGUgc2VydmVyJ3MgbWV0aG9kLiBGb3IgZXhhbXBsZSwgYSBzZXJ2ZXIKICogc3RvcHBlZCBldmVudCBjYW5ub3QgZGlyZWN0bHkgdHJpZ2dlciBhIHN0YXJ0KCkuIERvaW5nIHRoaXMgbWF5IGNhdXNlCiAqIHRoZSB0aHJlYWQgdG8gaGFuZy48L3A+CiAqLwpwdWJsaWMgaW50ZXJmYWNlIElTZXJ2ZXJMaXN0ZW5lciB7CgkvKioKCSAqIENhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbidzIHN5bmMgc3RhdGUgY2hhbmdlcy4KCSAqCgkgKiBAcGFyYW0gc2VydmVyIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSVNlcnZlcgoJICovCglwdWJsaWMgdm9pZCBjb25maWd1cmF0aW9uU3luY1N0YXRlQ2hhbmdlKElTZXJ2ZXIgc2VydmVyKTsKCgkvKioKCSAqIENhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgaXNSZXN0YXJ0TmVlZGVkKCkgcHJvcGVydHkgY2hhbmdlcy4KCSAqCgkgKiBAcGFyYW0gc2VydmVyIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSVNlcnZlcgoJICovCglwdWJsaWMgdm9pZCByZXN0YXJ0U3RhdGVDaGFuZ2UoSVNlcnZlciBzZXJ2ZXIpOwoKCS8qKgoJICogTm90aWZpY2F0aW9uIHdoZW4gdGhlIHNlcnZlciBzdGF0ZSBoYXMgY2hhbmdlZC4KCSAqCgkgKiBAcGFyYW0gc2VydmVyIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSVNlcnZlcgoJICovCglwdWJsaWMgdm9pZCBzZXJ2ZXJTdGF0ZUNoYW5nZShJU2VydmVyIHNlcnZlcik7CgoJLyoqCgkgKiBOb3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUgb2YgYSBtb2R1bGUgaGFzIGNoYW5nZWQuCgkgKgoJICogQHBhcmFtIHNlcnZlciBvcmcuZWNsaXBzZS53c3Quc2VydmVyLm1vZGVsLklTZXJ2ZXIKCSAqLwoJcHVibGljIHZvaWQgbW9kdWxlU3RhdGVDaGFuZ2UoSVNlcnZlciBzZXJ2ZXIsIElNb2R1bGUgbW9kdWxlKTsKCgkvKioKCSAqIENhbGxlZCB3aGVuIHRoZSBtb2R1bGVzIHRyZWUgb2YgdGhpcyBzZXJ2ZXIgaGFzIGNoYW5nZWQuCgkgKgoJICogQHBhcmFtIHNlcnZlciBvcmcuZWNsaXBzZS53c3Quc2VydmVyLklTZXJ2ZXIKCSAqLwoJcHVibGljIHZvaWQgbW9kdWxlc0NoYW5nZWQoSVNlcnZlciBzZXJ2ZXIpOwoKCS8qKgoJICogRmlyZWQgd2hlbiBhIG1vZHVsZSBvbiB0aGlzIHNlcnZlciBuZWVkcyB0byBiZSBwdWJsaXNoZWQKCSAqIG9yIG5vIGxvbmdlciBuZWVkcyB0byBiZSBwdWJsaXNoZWQuCgkgKgoJICogQHBhcmFtIHNlcnZlciBvcmcuZWNsaXBzZS53c3Quc2VydmVyLm1vZGVsLklTZXJ2ZXIKCSAqIEBwYXJhbSBwYXJlbnRzIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSU1vZHVsZVtdCgkgKiBAcGFyYW0gbW9kdWxlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSU1vZHVsZQoJICovCglwdWJsaWMgdm9pZCBtb2R1bGVTdGF0ZUNoYW5nZShJU2VydmVyIHNlcnZlciwgSU1vZHVsZVtdIHBhcmVudHMsIElNb2R1bGUgbW9kdWxlKTsKCgkvKioKCSAqIENhbGxlZCB3aGVuIGEgcHJvamVjdCdzIHJlc3RhcnQgc3RhdGUgaGFzIGNoYW5nZWQuIFRoaXMgc3RhdGUKCSAqIGxldHMgdGhlIHVzZXIga25vdyB3aGV0aGVyIGEgcHJvamVjdCBzaG91bGQgYmUgcmVzdGFydGVkIG9yCgkgKiBkb2VzIG5vdCBuZWVkIHRvIGJlLgoJICoKCSAqIEBwYXJhbSBzZXJ2ZXIgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5tb2RlbC5JU2VydmVyCgkgKiBAcGFyYW0gcHJvamVjdCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdAoJICovCgkvL3B1YmxpYyB2b2lkIG1vZHVsZVJlc3RhcnRTdGF0ZUNoYW5nZShJU2VydmVyIHNlcnZlciwgSU1vZHVsZSBtb2R1bGUpOwp9