LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKgogKiBDb250cmlidXRvcnM6CiAqICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Qud3NpLnVpLmludGVybmFsOwoKaW1wb3J0IG9yZy5lY2xpcHNlLm9zZ2kudXRpbC5OTFM7CgovKioKICogVHJhbnNsYXRlZCBtZXNzYWdlcy4KICovCnB1YmxpYyBjbGFzcyBNZXNzYWdlcyBleHRlbmRzIE5MUyAKewogICAgLy8tLS0tLS0tLS0tLS0tLS0gVmFsaWRhdGlvbiBXaXphcmQgLS0tLS0tLS0tLS0tLS0tCglwdWJsaWMgc3RhdGljIFN0cmluZyBWQUxJREFUSU9OX1dJWkFSRF9USVRMRTsKCgkvLy0tLS0tLS0tLS0tLS0tLSBWYWxpZGF0aW9uIFdpemFyZCAoV1NETCBwYWdlKSAtLS0tLS0tLS0tLS0tLS0KCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9GSUxFX1NIRUxMX1RFWFQ7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX1BBR0VfRklMRV9USVRMRSA7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX1BBR0VfRklMRV9ERVNDUklQVElPTjsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9TRUxFQ1RfV1NETF9GSUxFTkFNRV9IRUFESU5HOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX1NFTEVDVF9XU0RMX0ZJTEVOQU1FX0VYUEw7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX1BBR0VfSU5DTFVERV9XU0RMX0JVVFRPTjsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9JTkNMVURFX1dTRExfTEFCRUw7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX1BBR0VfVkFMSURfV1NETF9MQUJFTDsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfUEFHRV9XT1JLQkVOQ0hfQlVUVE9OOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9QQUdFX0JST1dTRV9CVVRUT047CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX1BBR0VfU0VBUkNIX1VERElfQlVUVE9OOwoKCS8vLS0tLS0tLS0tLS0tLS0tIFZhbGlkYXRpb24gV2l6YXJkIChXU0RMIGNvbnRlbnQgcGFnZSkgLS0tLS0tLS0tLS0tLS0tCglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9TRUxFQ1RfSEVBRElORzsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX1NFTEVDVF9FWFBMOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfR1JPVVBfVEVYVF9FTEVNRU5UOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfR1JPVVBfVEVYVF9UWVBFOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfUkFESU9fUE9SVDsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX1JBRElPX0JJTkRJTkc7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9SQURJT19QT1JUX1RZUEU7CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9SQURJT19PUEVSQVRJT047CglwdWJsaWMgc3RhdGljIFN0cmluZyBXU0RMX0NPTlRFTlRfUEFHRV9SQURJT19NRVNTQUdFOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgV1NETF9DT05URU5UX1BBR0VfTEFCRUxfTkFNRTsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX05BTUVTUEFDRTsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdTRExfQ09OVEVOVF9QQUdFX0xBQkVMX1BBUkVOVDsKCgkvLy0tLS0tLS0tLS0tLS0tLSBWYWxpZGF0aW9uIFdpemFyZCAoTG9nIHBhZ2UpIC0tLS0tLS0tLS0tLS0tLQoJcHVibGljIHN0YXRpYyBTdHJpbmcgTE9HX1BBR0VfU0VMRUNUX0xPR19GSUxFTkFNRV9IRUFESU5HOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgTE9HX1BBR0VfU0VMRUNUX0xPR19GSUxFTkFNRV9FWFBMOwoKCS8vIEFjdGlvbnMKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEFDVElPTl9XU0lfVkFMSURBVE9SOwoKCS8vLS0tLS0tLS0tLS0tLS0tIEVycm9ycyAtLS0tLS0tLS0tLS0tLS0KCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVSUk9SX1VOQUJMRV9UT19WQUxJREFURTsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVSUk9SX1ZBTElEQVRJT05fRkFJTEVEOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgRVJST1JfVEhFX1dTSU1TR19GSUxFX0lTX05PVF9WQUxJRDsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVSUk9SX1BST0JMRU1TX1JFQURJTkdfV1NJTVNHX0ZJTEU7CglwdWJsaWMgc3RhdGljIFN0cmluZyBFUlJPUl9JTlZBTElEX0xPR19GSUxFX0VYVEVOU0lPTjsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdBUk5JTkdfVkFMSURBVElPTl9XQVJOSU5HU19ERVRFQ1RFRDsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIFdBUk5JTkdfRklMRV9BTFJFQURZX0VYSVNUUzsKCgkvLy0tLS0tLS0tLS0tLS0tLSBJbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLQoJcHVibGljIHN0YXRpYyBTdHJpbmcgSU5GT19WQUxJREFUSU9OX1NVQ0VFREVEOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgSU5GT19USEVfV1NJTVNHX0ZJTEVfSVNfVkFMSUQ7CglwdWJsaWMgc3RhdGljIFN0cmluZyBJTkZPX05PX01FU1NBR0VTX1RPX1ZBTElEQVRFOwoKICBzdGF0aWMgCiAgewoJTkxTLmluaXRpYWxpemVNZXNzYWdlcyhXU0lVSVBsdWdpbi5QTFVHSU5fSUQgKyAiLmludGVybmFsLk1lc3NhZ2VzIiwgTWVzc2FnZXMuY2xhc3MpOwogIH0KfQo=