LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIAogKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQogKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqIAogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICogdW5kZXIgdGhlIExpY2Vuc2UuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKI2lmbmRlZiBfU0dWU1BMTl9IWFgKI2RlZmluZSBfU0dWU1BMTl9IWFgKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnwqCnwqICAgIENhbGNTcGxpbmUoKQp8Kgp8KiAgICBCZXNjaHJlaWJ1bmcgICAgICBCZXJlY2huZXQgZGllIEtvZWZmaXppZW50ZW4gZWluZXMgcGFyYW1ldHJpc2NoZW4KfCogICAgICAgICAgICAgICAgICAgICAgbmF0gXJsaWNoZW4gb2RlciBwZXJpb2Rpc2NoZW4ga3ViaXNjaGVuCnwqICAgICAgICAgICAgICAgICAgICAgIFBvbHlub21zcGxpbmVzLiBEaWUgRWNrcHVua3RlIGRlcyCaYmVyZ2ViZW5lbgp8KiAgICAgICAgICAgICAgICAgICAgICBQb2x5Z29ucyB3ZXJkZW4gYWxzIFN0gXR6c3RlbGxlbiBhbmdlbm9tbWVuLgp8KiAgICAgICAgICAgICAgICAgICAgICBuIGxpZWZlcnQgZGllIEFuemFobCBkZXIgVGVpbHBvbHlub21lLgp8KiAgICAgICAgICAgICAgICAgICAgICBJc3QgZGllIEJlcmVjaG51bmcgZmVobGVyZnJlaSB2ZXJsYXVmZW4sIHNvCnwqICAgICAgICAgICAgICAgICAgICAgIGxpZWZlcnQgZGllIEZ1bmt0aW9uIHNhbF9UcnVlLiBOdXIgaW4gZGllc2VtIEZhbGwKfCogICAgICAgICAgICAgICAgICAgICAgaXN0IFNwZWljaGVyIGaBciBkaWUgS29lZmZpemllbnRlbmFycmF5cwp8KiAgICAgICAgICAgICAgICAgICAgICBhbGxva2llcnQsIGRlciBkYW5uIHNwhHRlciB2b20gQXVmcnVmZXIgbWl0dGVscwp8KiAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZnJlaXp1Z2ViZW4gaXN0Lgp8KiAgICBFcnN0ZXJzdGVsbHVuZyAgICBKT0UgMTctMDguOTMKfCogICAgTGV0enRlIEFlbmRlcnVuZyAgSk9FIDE3LTA4LjkzCnwqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpzYWxfQm9vbCBDYWxjU3BsaW5lKFBvbHlnb24mIHJQb2x5LCBzYWxfQm9vbCBQZXJpb2RpYywgc2FsX3VJbnQxNiYgbiwKCQkJCWRvdWJsZSomIGF4LCBkb3VibGUqJiBheSwgZG91YmxlKiYgYngsIGRvdWJsZSomIGJ5LAoJCQkJZG91YmxlKiYgY3gsIGRvdWJsZSomIGN5LCBkb3VibGUqJiBkeCwgZG91YmxlKiYgZHksIGRvdWJsZSomIFQpOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKfCoKfCogICAgUG9seTJTcGxpbmUoKQp8Kgp8KiAgICBCZXNjaHJlaWJ1bmcgICAgICBLb252ZXJ0aWVydCBlaW5lbiBwYXJhbWV0cmljaGVuIGt1YmlzY2hlbgp8KiAgICAgICAgICAgICAgICAgICAgICBQb2x5bm9tc3BsaW5lIFNwbGluZSAobmF0gXJsaWNoIG9kZXIgcGVyaW9kaXNjaCkKfCogICAgICAgICAgICAgICAgICAgICAgaW4gZWluIGFuZ2VuhGhlcnRlcyBQb2x5Z29uLgp8KiAgICAgICAgICAgICAgICAgICAgICBEaWUgRnVua3Rpb24gbGllZmVydCBzYWxfRmFsc2UsIHdlbm4gZWluIEZlaGxlciBiZWkKfCogICAgICAgICAgICAgICAgICAgICAgZGVyIEtvZWZmaXppZW50ZW5iZXJlY2hudW5nIGF1ZmdldHJldGVuIGlzdCBvZGVyCnwqICAgICAgICAgICAgICAgICAgICAgIGRhcyBQb2x5Z29uIHp1IGdybz93aXJkICg+UG9seU1heD0xNjM4MCkuIEltIDEuCnwqICAgICAgICAgICAgICAgICAgICAgIEZhbGwgaGF0IGRhcyBQb2x5Z29uIDAsIGltIDIuIEZhbGwgUG9seU1heCBQdW5rdGUuCnwqICAgICAgICAgICAgICAgICAgICAgIFVtIEtvb3JkaW5hdGVugWJlcmyEdWZlIHp1IHZlcm1laWRlbiB3ZXJkZW4gZGllc2UKfCogICAgICAgICAgICAgICAgICAgICAgYXVmICsvLTMyMDAwIGJlZ3Jlbnp0Lgp8KiAgICBFcnN0ZXJzdGVsbHVuZyAgICBKT0UgMjMuMDYuOTMKfCogICAgTGV0enRlIEFlbmRlcnVuZyAgSk9FIDIzLjA2LjkzCnwqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnNhbF9Cb29sIFNwbGluZTJQb2x5KFBvbHlnb24mIHJTcGxuLCBzYWxfQm9vbCBQZXJpb2RpYywgUG9seWdvbiYgclBvbHkpOwoKI2VuZGlmIC8vX1NHVlNQTE5fSFhYCg==