LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogQGZpbGUgICAgIHN5c3RlbV9YTUMxMTAwLmgNCiAqIEBicmllZiAgICBEZXZpY2Ugc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBYTUMxMTAwLVNlcmllcyBhY2NvcmRpbmcgDQogKiB0byBDTVNJUw0KICogQHZlcnNpb24gIFYxLjENCiAqIEBkYXRlICAgICAxMyBEZWMgMjAxMg0KICoNCiAqIEBub3RlDQogKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBJbmZpbmVvbiBUZWNobm9sb2dpZXMgQUcuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNCiAqDQogKiBAcGFyDQogKiBJbmZpbmVvbiBUZWNobm9sb2dpZXMgQUcgKEluZmluZW9uKSBpcyBzdXBwbHlpbmcgdGhpcyBzb2Z0d2FyZSBmb3IgdXNlIHdpdGggDQogKiBJbmZpbmVvbpJzIG1pY3JvY29udHJvbGxlcnMuDQogKiAgIA0KICogVGhpcyBmaWxlIGNhbiBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIA0KICogc3VwcG9ydGluZyBzdWNoIG1pY3JvY29udHJvbGxlcnMuDQogKiAgDQogKg0KICogQHBhcg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLiAgTk8gV0FSUkFOVElFUywgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEDQogKiBPUiBTVEFUVVRPUlksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVBQTFkgVE8gVEhJUyBTT0ZUV0FSRS4NCiAqIElORklORU9OIFNIQUxMIE5PVCwgSU4gQU5ZIENJUkNVTVNUQU5DRVMsIEJFIExJQUJMRSBGT1IgU1BFQ0lBTCwgSU5DSURFTlRBTCwNCiAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgRk9SIEFOWSBSRUFTT04gV0hBVFNPRVZFUi4NCiAqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoNCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKiBDaGFuZ2UgaGlzdG9yeSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogVjEuMSwgMTMgRGVjIDIwMTIsIFBLQiA6IENyZWF0ZWQgY2hhbmdlIGhpc3RvcnkgdGFibGUsIGV4dGVybiByZWZlcmVuY2UNCiAqLw0KI2luY2x1ZGUgPHN0ZGludC5oPg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgQ2xvY2sgVmFyaWFibGUgZGVmaW5pdGlvbnMNCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpleHRlcm4gdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrOw0KDQovKioNCiAgKiBAYnJpZWYgIFNldHVwIHRoZSBtaWNyb2NvbnRyb2xsZXIgc3lzdGVtLg0KICAqICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgUExMIGFuZCB1cGRhdGUgdGhlIA0KICAqICAgICAgICAgU3lzdGVtQ29yZUNsb2NrIHZhcmlhYmxlLg0KICAqIEBwYXJhbSAgTm9uZQ0KICAqIEByZXR2YWwgTm9uZQ0KICAqLw0Kdm9pZCBTeXN0ZW1Jbml0KHZvaWQpOw0KDQovKioNCiAgKiBAYnJpZWYgIFVwZGF0ZSBTeXN0ZW1Db3JlQ2xvY2sgYWNjb3JkaW5nIHRvIENsb2NrIFJlZ2lzdGVyIFZhbHVlcw0KICAqIEBub3RlICAgLSAgDQogICogQHBhcmFtICBOb25lDQogICogQHJldHZhbCBOb25lDQogICovDQp2b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSh2b2lkKTsNCg0K