LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogQGZpbGUgICAgIHN5c3RlbV9YTUMxMTAwLmgNCiAqIEBicmllZiAgICBEZXZpY2Ugc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBYTUMxMzAwLVNlcmllcyBhY2NvcmRpbmcgDQogKiB0byBDTVNJUw0KICogQHZlcnNpb24gIFYxLjINCiAqIEBkYXRlICAgICAxOSBKdWwgMjAxMw0KICoNCiAqIEBub3RlDQogKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBJbmZpbmVvbiBUZWNobm9sb2dpZXMgQUcuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNCiAqDQogKiBAcGFyDQogKiBJbmZpbmVvbiBUZWNobm9sb2dpZXMgQUcgKEluZmluZW9uKSBpcyBzdXBwbHlpbmcgdGhpcyBzb2Z0d2FyZSBmb3IgdXNlIHdpdGggDQogKiBJbmZpbmVvbpJzIG1pY3JvY29udHJvbGxlcnMuDQogKiAgIA0KICogVGhpcyBmaWxlIGNhbiBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIA0KICogc3VwcG9ydGluZyBzdWNoIG1pY3JvY29udHJvbGxlcnMuDQogKiAgDQogKg0KICogQHBhcg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLiAgTk8gV0FSUkFOVElFUywgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEDQogKiBPUiBTVEFUVVRPUlksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVBQTFkgVE8gVEhJUyBTT0ZUV0FSRS4NCiAqIElORklORU9OIFNIQUxMIE5PVCwgSU4gQU5ZIENJUkNVTVNUQU5DRVMsIEJFIExJQUJMRSBGT1IgU1BFQ0lBTCwgSU5DSURFTlRBTCwNCiAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgRk9SIEFOWSBSRUFTT04gV0hBVFNPRVZFUi4NCiAqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoNCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKiBDaGFuZ2UgaGlzdG9yeSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIFYxLjEsIDEzIERlYyAyMDEyLCBQS0IsIENyZWF0ZWQgdGhpcyB0YWJsZSwgYWRkZWQgZXh0ZXJuIGFuZCBzdGRpbnQNCiAqIFYxLjIsIDE5IEp1bCAyMDEzLCBQS0IsIEFkZGVkIGhlYWRlciBndWFyZCwgQm9vdFJPTSBoZWFkZXIsIEMrKyBzdXBwb3J0DQogKi8NCiNpZm5kZWYgU1lTVEVNX1hNQzExMDBfSA0KI2RlZmluZSBTWVNURU1fWE1DMTEwMF9IDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiBIRUFERVIgRklMRVMNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQojaW5jbHVkZSA8c3RkaW50Lmg+DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiBHTE9CQUwgVkFSSUFCTEVTDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KZXh0ZXJuIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jazsNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIEFQSSBQUk9UT1RZUEVTDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQpleHRlcm4gIkMiIHsNCiNlbmRpZg0KDQovKioNCiAqIEBicmllZiBJbml0aWFsaXplIHRoZSBzeXN0ZW0NCiAqDQogKi8NCnZvaWQgU3lzdGVtSW5pdCh2b2lkKTsNCg0KLyoqDQogKiBAYnJpZWYgSW5pdGlhbGl6ZSBDUFUgc2V0dGluZ3MNCiAqDQogKi8NCnZvaWQgU3lzdGVtQ29yZVNldHVwKHZvaWQpOw0KDQovKioNCiAqIEBicmllZiBJbml0aWFsaXplIGNsb2NrDQogKg0KICovDQp2b2lkIFN5c3RlbUNvcmVDbG9ja1NldHVwKHZvaWQpOw0KDQovKioNCiAqIEBicmllZiBVcGRhdGUgU3lzdGVtQ29yZUNsb2NrIHZhcmlhYmxlDQogKg0KICovDQp2b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSh2b2lkKTsNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQp9DQojZW5kaWYNCg0KI2VuZGlmDQo=