LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBUYXNrOiBBZGQgRm9yZWlnbiBLZXk6IHRibF9ub3RpZmljYXRpb24gcmVmZXJlbmNlcyB0byByZWZfZ3JpZF90ZXJyaXRvcnksICAgICAgICAqICAgICAgICAgCiAqICAgICAgIHJlZl9ncmlkX3RlcnJpdG9yeSBpcyBzZWxmLXJlZmVyZW5jaW5nIHRvICBvYnRhaW4gdHJlZSBzdHJ1Y3R1cmUgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKioqKiogMS4gQWRkIEZvcmVpZ24ga2V5IHRvIHRibF9ub3RpZmljYXRpb24sIHJlZmVyZW5jaW5nIHJlZl9ncmlkX3RlcnJpdG9yeSAqKioqKi8KCi8qIEFkZCBuZXcgY29sdW1uIHRvIHRibF9ub3RpZmljYXRpb24gKi8KQUxURVIgVEFCTEUgcHVibGljLnRibF9ub3RpZmljYXRpb24KICBBREQgQ09MVU1OIGZrX3JlZl9ncmlkX3RlcnJpdG9yeSBpbnRlZ2VyOyAgICAgICAKCi8qIEFkZCBjb25zdHJhaW50ICovCkFMVEVSIFRBQkxFIHB1YmxpYy50Ymxfbm90aWZpY2F0aW9uCiAgQUREIENPTlNUUkFJTlQgZmtfbm90aWZpY2F0aW9uX2ZrX2dyaWRfdGVycml0b3J5IEZPUkVJR04gS0VZIChma19yZWZfZ3JpZF90ZXJyaXRvcnkpIFJFRkVSRU5DRVMgcHVibGljLnJlZl9ncmlkX3RlcnJpdG9yeSAoaWQpCiAgT04gREVMRVRFIENBU0NBREU7CgovKiBDcmVhdGUgaW5kZXggKi8KQ1JFQVRFIElOREVYIGZraV9ub3RpZmljYXRpb25fZmtfZ3JpZF90ZXJyaXRvcnkKICBPTiBwdWJsaWMudGJsX25vdGlmaWNhdGlvbihma19yZWZfZ3JpZF90ZXJyaXRvcnkpOwogIAovKiBJbml0aWFsaXplIGNvbHVtbiBma19yZWZfZ3JpZF90ZXJyaXRvcnkgd2l0aCBhbiBhbHJlYWR5IGV4aXN0aW5nIHZhbHVlLCBjb2x1bW4gd2lsbCBiZSBzZXQgdG8gTk9UIE5VTEwgaW4gbmV4dCBzdGVwICovClVQREFURSB0Ymxfbm90aWZpY2F0aW9uIFNFVCBma19yZWZfZ3JpZF90ZXJyaXRvcnkgPSAxOwoKLyogU2V0IGNvbHVtbiBma19yZWZfZ3JpZF90ZXJyaXRvcnkgTk9UIE5VTEwgKi8KQUxURVIgVEFCTEUgcHVibGljLnRibF9ub3RpZmljYXRpb24gCiAgQUxURVIgQ09MVU1OIGZrX3JlZl9ncmlkX3RlcnJpdG9yeSBTRVQgTk9UIE5VTEw7CiAKIAovKioqKiogMi4gRm9yZWlnbiBrZXkgcmVmX21hc3RlciAoc2VsZi1yZWZlcmVuY2luZykgKioqKiovCgovKiBBZGQgbmV3IGNvbHVtbiB0byByZWZfZ3JpZF90ZXJyaXRvcnkgKi8KQUxURVIgVEFCTEUgcHVibGljLnJlZl9ncmlkX3RlcnJpdG9yeQogIEFERCBDT0xVTU4gZmtfcmVmX21hc3RlciBpbnRlZ2VyOyAgICAgICAKCi8qIEFkZCBjb25zdHJhaW50ICovCkFMVEVSIFRBQkxFIHB1YmxpYy5yZWZfZ3JpZF90ZXJyaXRvcnkKICBBREQgQ09OU1RSQUlOVCBma19yZWZfZ3JpZF90ZXJyaXRvcnlfc2VsZiBGT1JFSUdOIEtFWSAoZmtfcmVmX21hc3RlcikgUkVGRVJFTkNFUyBwdWJsaWMucmVmX2dyaWRfdGVycml0b3J5IChpZCkKICAgT04gREVMRVRFIENBU0NBREU7CgovKiBDcmVhdGUgaW5kZXggKi8KQ1JFQVRFIElOREVYIGZraV9ma19ncmlkX3RlcnJpdG9yeV9zZWxmCiAgT04gcHVibGljLnJlZl9ncmlkX3RlcnJpdG9yeShma19yZWZfbWFzdGVyKTsKICAKLyogSW5pdGlhbGl6ZSBjb2x1bW4gZmtfcmVmX21hc3RlciB3aXRoIHRoZSB2YWx1ZSBvZiBjb2x1bW4gImlkIiwgZmtfcmVmX21hc3RlciB3aWxsIGJlIHNldCB0byBOT1QgTlVMTCBpbiBuZXh0IHN0ZXAgKi8KVVBEQVRFIHB1YmxpYy5yZWZfZ3JpZF90ZXJyaXRvcnkgU0VUIGZrX3JlZl9tYXN0ZXIgPSBpZDsKCi8qIFNldCBjb2x1bW4gZmtfcmVmX21hc3RlciBOT1QgTlVMTCAqLwpBTFRFUiBUQUJMRSBwdWJsaWMucmVmX2dyaWRfdGVycml0b3J5IAogIEFMVEVSIENPTFVNTiBma19yZWZfbWFzdGVyIFNFVCBOT1QgTlVMTDsKCgovKioqKiogMy4gQ2hhbmdlIHRoZSB2aWV3IGFjY29yZGluZyB0byB0aGUgbmV3IGZvcmVpZ24ga2V5ICoqKioqLwoKLS0gVmlldzogcHVibGljLnZpZXdfYWN0aXZlX25vdGlmaWNhdGlvbgotLSBEUk9QIFZJRVcgcHVibGljLnZpZXdfYWN0aXZlX25vdGlmaWNhdGlvbjsKCi0tIEVyc3RlbGx0IGVpbmUgVmlldywgZGllIGRpZSBqZXdlaWxzIGj2Y2hzdGUgVmVyc2lvbiBlaW5lciBOb3RpZmljYXRpb24gYXVzIHRibF9ub3RpZmljYXRpb24gZW50aORsdC4KQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudmlld19hY3RpdmVfbm90aWZpY2F0aW9uIEFTCiBTRUxFQ1Qgcy5pZCwKICAgIHMuaW5jaWRlbnRfaWQsCiAgICBzLnZlcnNpb24sCiAgICBzLmZrX3JlZl9icmFuY2gsCiAgICBzLm5vdGlmaWNhdGlvbl90ZXh0LAogICAgcy5mcmVlX3RleHQsCiAgICBzLmZyZWVfdGV4dF9leHRlbmRlZCwKICAgIHMuZmtfcmVmX25vdGlmaWNhdGlvbl9zdGF0dXMsCiAgICBzLnJlc3BvbnNpYmlsaXR5X2ZvcndhcmRpbmcsCiAgICBzLnJlbWluZGVyX2RhdGUsCiAgICBzLmV4cGVjdGVkX2ZpbmlzaGVkX2RhdGUsCiAgICBzLnJlc3BvbnNpYmlsaXR5X2NvbnRyb2xfcG9pbnQsCiAgICBzLmJlZ2luX2RhdGUsCiAgICBzLmZpbmlzaGVkX2RhdGUsCiAgICBzLmNyZWF0ZV91c2VyLAogICAgcy5jcmVhdGVfZGF0ZSwKICAgIHMubW9kX3VzZXIsCiAgICBzLm1vZF9kYXRlLAogICAgcy5ma19yZWZfZ3JpZF90ZXJyaXRvcnkKICAgRlJPTSAoIFNFTEVDVCB0Ymxfbm90aWZpY2F0aW9uLmlkLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmluY2lkZW50X2lkLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLnZlcnNpb24sCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uZmtfcmVmX2JyYW5jaCwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdGV4dCwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5mcmVlX3RleHQsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uZnJlZV90ZXh0X2V4dGVuZGVkLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmZrX3JlZl9ub3RpZmljYXRpb25fc3RhdHVzLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLnJlc3BvbnNpYmlsaXR5X2ZvcndhcmRpbmcsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24ucmVtaW5kZXJfZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5leHBlY3RlZF9maW5pc2hlZF9kYXRlLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLnJlc3BvbnNpYmlsaXR5X2NvbnRyb2xfcG9pbnQsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uYmVnaW5fZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5maW5pc2hlZF9kYXRlLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmNyZWF0ZV91c2VyLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmNyZWF0ZV9kYXRlLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLm1vZF91c2VyLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLm1vZF9kYXRlLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmZrX3JlZl9ncmlkX3RlcnJpdG9yeSwKICAgICAgICAgICAgcmFuaygpIE9WRVIgKFBBUlRJVElPTiBCWSB0Ymxfbm90aWZpY2F0aW9uLmluY2lkZW50X2lkIE9SREVSIEJZIHRibF9ub3RpZmljYXRpb24udmVyc2lvbiBERVNDKSBBUyByYW5rCiAgICAgICAgICAgRlJPTSB0Ymxfbm90aWZpY2F0aW9uKSBzCiAgV0hFUkUgcy5yYW5rID0gMTsKCkFMVEVSIFRBQkxFIHB1YmxpYy52aWV3X2FjdGl2ZV9ub3RpZmljYXRpb24KICAgIE9XTkVSIFRPIGJ0YnNlcnZpY2U7Cgo=