cGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLnVpLmVkaXRvcjsKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiCgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwKoCoKICogQ29udHJpYnV0b3JzOgogKiAgICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU9yZGVyZWQ7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSVNlcnZlcjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyQ29uZmlndXJhdGlvbjsKLyoqCiAqCiAqLwpwdWJsaWMgaW50ZXJmYWNlIElTZXJ2ZXJFZGl0b3JQYWdlU2VjdGlvbkZhY3RvcnkgZXh0ZW5kcyBJT3JkZXJlZCB7CgkvKioKCSAqIAoJICovCglwdWJsaWMgU3RyaW5nIGdldElkKCk7CgoJLyoqCgkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNlcnZlciByZXNvdXJjZSB0eXBlIChnaXZlbiBieSB0aGUKCSAqIGlkKSBjYW4gYmUgb3BlbmVkIHdpdGggdGhpcyBlZGl0b3IuIFRoaXMgcmVzdWx0IGlzIGJhc2VkIG9uCgkgKiB0aGUgcmVzdWx0IG9mIHRoZSB0eXBlcyBhdHRyaWJ1dGUuCgkgKgoJICogQHJldHVybiBib29sZWFuCgkgKi8KCXB1YmxpYyBib29sZWFuIHN1cHBvcnRzVHlwZShTdHJpbmcgaWQpOwoJCglwdWJsaWMgU3RyaW5nIGdldEluc2VydGlvbklkKCk7CgkKCS8qKgoJICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZWRpdG9yIHBhZ2Ugc2VjdGlvbiBzaG91bGQgYmUgdmlzaWJsZSB3aXRoIHRoZSBnaXZlbgoJICogc2VydmVyIGFuZCBjb25maWd1cmF0aW9uIGNvbWJpbmF0aW9uLiBUaGlzIGFsbG93cyAoZm9yCgkgKiBpbnN0YW5jZSkgY29tcGxleCBjb25maWd1cmF0aW9uIHBhZ2VzIHRvIG9ubHkgYmUgc2hvd24gd2hlbiB1c2VkCgkgKiB3aXRoIG5vbi11bml0dGVzdCBzZXJ2ZXJzLgoJICoKCSAqIDxwPklmIHRoZSBzZXJ2ZXIgb3IgY29uZmlndXJhdGlvbiBpcyBiZWluZyBvcGVuZWQgYnkgaXRzZWxmLCB0aGUKCSAqIG90aGVyIHZhbHVlIChzZXJ2ZXIgb3IgY29uZmlndXJhdGlvbikgd2lsbCBiZSBudWxsLgoJICovCglwdWJsaWMgYm9vbGVhbiBzaG91bGRDcmVhdGVTZWN0aW9uKElTZXJ2ZXIgc2VydmVyLCBJU2VydmVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKTsKCgkvKioKCSAqIENyZWF0ZSB0aGUgZWRpdG9yIHBhZ2Ugc2VjdGlvbi4KCSAqLwoJcHVibGljIElTZXJ2ZXJFZGl0b3JTZWN0aW9uIGNyZWF0ZVNlY3Rpb24oKTsKfQ==