LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIENvcHlyaWdodCAoQykgMjAxNiBieSBTYXZvaXItZmFpcmUgTGludXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogQXV0aG9yOiBK5GdlciBOaWNvbGFzIDxuaWNvbGFzLmphZ2VyQHNhdm9pcmZhaXJlbGludXguY29tPiAgICAgICAgICAgICAgKg0KKiBBdXRob3I6IFRyYWN6eWsgQW5kcmVhcyA8dHJhY3p5ay5hbmRyZWFzQHNhdm9pcmZhaXJlbGludXguY29tPiAgICAgICAgICAqDQoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICAgKg0KKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAgICAqDQoqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yICAgICAgICoNCiogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQoqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICAgICoNCiogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgKg0KKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICAgICAgICAgICAqDQoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAqDQoqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI2luY2x1ZGUgInBjaC5oIg0KDQojaW5jbHVkZSAiU21hcnRQYW5lbEl0ZW0uaCINCg0KdXNpbmcgbmFtZXNwYWNlIFdpbmRvd3M6OkFwcGxpY2F0aW9uTW9kZWw6OkNvcmU7DQp1c2luZyBuYW1lc3BhY2UgUGxhdGZvcm07DQp1c2luZyBuYW1lc3BhY2UgV2luZG93czo6RGF0YTo6SnNvbjsNCnVzaW5nIG5hbWVzcGFjZSBXaW5kb3dzOjpVSTo6Q29yZTsNCg0KdXNpbmcgbmFtZXNwYWNlIFJpbmdDbGllbnRVV1A7DQp1c2luZyBuYW1lc3BhY2UgUmluZ0NsaWVudFVXUDo6Q29udHJvbHM7DQp1c2luZyBuYW1lc3BhY2UgVmlld01vZGVsOw0KDQpTbWFydFBhbmVsSXRlbTo6U21hcnRQYW5lbEl0ZW0oKQ0Kew0KICAgIF9jYWxsSWQgPSAiIjsNCg0KICAgIFJpbmdEOjppbnN0YW5jZS0+Y2FsbFBsYWNlZCArPSByZWYgbmV3IFJpbmdDbGllbnRVV1A6OkNhbGxQbGFjZWQodGhpcywgJlJpbmdDbGllbnRVV1A6OkNvbnRyb2xzOjpTbWFydFBhbmVsSXRlbTo6T25jYWxsUGxhY2VkKTsNCn0NCg0Kdm9pZA0KU21hcnRQYW5lbEl0ZW06Ok5vdGlmeVByb3BlcnR5Q2hhbmdlZChTdHJpbmdeIHByb3BlcnR5TmFtZSkNCnsNCiAgICBDb3JlQXBwbGljYXRpb25WaWV3XiB2aWV3ID0gQ29yZUFwcGxpY2F0aW9uOjpNYWluVmlldzsNCiAgICB2aWV3LT5Db3JlV2luZG93LT5EaXNwYXRjaGVyLT5SdW5Bc3luYygNCiAgICAgICAgQ29yZURpc3BhdGNoZXJQcmlvcml0eTo6SGlnaCwNCiAgICAgICAgcmVmIG5ldyBEaXNwYXRjaGVkSGFuZGxlcihbdGhpcywgcHJvcGVydHlOYW1lXSgpDQogICAgew0KICAgICAgICBQcm9wZXJ0eUNoYW5nZWQodGhpcywgcmVmIG5ldyBQcm9wZXJ0eUNoYW5nZWRFdmVudEFyZ3MocHJvcGVydHlOYW1lKSk7DQogICAgfSkpOw0KfQ0KDQp2b2lkIFJpbmdDbGllbnRVV1A6OkNvbnRyb2xzOjpTbWFydFBhbmVsSXRlbTo6T25jYWxsUGxhY2VkKFBsYXRmb3JtOjpTdHJpbmcgXmNhbGxJZCkNCnsNCiAgICBpZiAoX2NhbGxJZCA9PSBjYWxsSWQpIHsNCiAgICAgICAgX2NhbGxTdGF0dXMgPSBDYWxsU3RhdHVzOjpTRUFSQ0hJTkc7DQogICAgfQ0KfQ0K