LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIAogKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQogKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqIAogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICogdW5kZXIgdGhlIExpY2Vuc2UuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKiBTdGFyVmlldyByZXNzb3VyY2UgZmlsZSAqLwoKI2luY2x1ZGUgInJlZGxuZGxnLmhyYyIKI2luY2x1ZGUgIm1pc2MuaHJjIgojaW5jbHVkZSAiaGVscGlkLmgiCgojZGVmaW5lIFdJRFRIIDI5NwojZGVmaW5lIEhFSUdIVCAxNjkKCiNkZWZpbmUgUkVETE5ETEcgXAogICAgT3V0cHV0U2l6ZSA9IFRSVUUgOyBcCiAgICBTVkxvb2sgPSBUUlVFIDsgXAogICAgU2l6ZSA9IE1BUF9BUFBGT05UICggV0lEVEggLCBIRUlHSFQgKSA7IFwKICAgIE1vdmVhYmxlID0gVFJVRSA7IFwKICAgIENsb3NlYWJsZSA9IFRSVUUgOyBcCiAgICBTaXplYWJsZSA9IFRSVUUgOyBcCiAgICBIaWRlID0gVFJVRSA7IFwKICAgIENvbnRyb2wgQ1RSTF9UQUJQQUdFU1wKICAgIHtcCiAgICAgICAgUG9zID0gTUFQX0FQUEZPTlQgKCBYQk9SREVSICwgWUJPUkRFUiApIDsgXAogICAgICAgIFNpemUgPSBNQVBfQVBQRk9OVCAoIFdJRFRIIC0gWEJPUkRFUiAqIDIgLCBIRUlHSFQgLSBZQk9SREVSICogMiApIDsgXAogICAgICAgIEhlbHBJRCA9IEhJRF9SRURMSU5FX0NUUkwgOyBcCiAgICAgICAgVGFiU3RvcCA9IFRSVUUgOyBcCiAgICB9OwoKTW9kZWxlc3NEaWFsb2cgRExHX1JFRExJTkVfQUNDRVBUCnsKCUhlbHBJRCA9IEhJRF9SRURMSU5FX0FDQ0VQVCA7CgkvKiAjIyMgQUNIVFVORzogTmV1ZXIgVGV4dCBpbiBSZXNvdXJjZT8gxG5kZXJ1bmdlbiBha3plcHRpZXJlbiBvZGVyIHZlcndlcmZlbiA6IFJlZGxpbmluZyAqLwoJVGV4dCBbIGVuLVVTIF0gPSAiQWNjZXB0IG9yIFJlamVjdCBDaGFuZ2VzIiA7CglSRURMTkRMRwp9OwoKTW9kYWxEaWFsb2cgRExHX01PRF9SRURMSU5FX0FDQ0VQVAp7CglIZWxwSUQgPSBISURfUkVETElORV9BVVRPRk1UX0FDQ0VQVCA7CglSRURMTkRMRwoJVGV4dCBbIGVuLVVTIF0gPSAiQWNjZXB0IG9yIFJlamVjdCBBdXRvQ29ycmVjdCBDaGFuZ2VzIjsKfTsKCk1lbnUgTU5fUkVETElORV9QT1BVUAp7CglJdGVtTGlzdCA9Cgl7CgkJTWVudUl0ZW0KCQl7CgkJCUlkZW50aWZpZXIgPSBNTl9FRElUX0NPTU1FTlQgOwoJCQlIZWxwSUQgPSBISURfRURJVF9DT01NRU5UIDsKCQkJVGV4dCBbIGVuLVVTIF0gPSAiRWRpdCBDb21tZW50Li4uIiA7CgkJfTsKCQlNZW51SXRlbQoJCXsKCQkJSWRlbnRpZmllciA9IE1OX1NVQl9TT1JUIDsKCQkJUmFkaW9DaGVjayA9IFRSVUUgOwoJCQlTdWJNZW51ID0gTWVudQoJCQl7CgkJCQlJdGVtTGlzdCA9CgkJCQl7CgkJCQkJTWVudUl0ZW0KCQkJCQl7CgkJCQkJCUlkZW50aWZpZXIgPSBNTl9TT1JUX0FDVElPTiA7CgkJCQkJCUhlbHBJRCA9IEhJRF9TT1JUX0FDVElPTiA7CgkJCQkJCVJhZGlvQ2hlY2sgPSBUUlVFIDsKCQkJCQkJVGV4dCBbIGVuLVVTIF0gPSAiQWN0aW9uIiA7CgkJCQkJfTsKCQkJCQlNZW51SXRlbQoJCQkJCXsKCQkJCQkJSWRlbnRpZmllciA9IE1OX1NPUlRfQVVUSE9SIDsKCQkJCQkJSGVscElEID0gSElEX1NPUlRfQVVUSE9SIDsKCQkJCQkJUmFkaW9DaGVjayA9IFRSVUUgOwoJCQkJCQlUZXh0IFsgZW4tVVMgXSA9ICJBdXRob3IiIDsKCQkJCQl9OwoJCQkJCU1lbnVJdGVtCgkJCQkJewoJCQkJCQlJZGVudGlmaWVyID0gTU5fU09SVF9EQVRFIDsKCQkJCQkJSGVscElEID0gSElEX1NPUlRfREFURSA7CgkJCQkJCVJhZGlvQ2hlY2sgPSBUUlVFIDsKCQkJCQkJVGV4dCBbIGVuLVVTIF0gPSAiRGF0ZSIgOwoJCQkJCX07CgkJCQkJTWVudUl0ZW0KCQkJCQl7CgkJCQkJCUlkZW50aWZpZXIgPSBNTl9TT1JUX0NPTU1FTlQgOwoJCQkJCQlIZWxwSUQgPSBISURfU09SVF9DT01NRU5UIDsKCQkJCQkJUmFkaW9DaGVjayA9IFRSVUUgOwoJCQkJCQlUZXh0IFsgZW4tVVMgXSA9ICJDb21tZW50IiA7CgkJCQkJfTsKCQkJCQlNZW51SXRlbQoJCQkJCXsKCQkJCQkJSWRlbnRpZmllciA9IE1OX1NPUlRfUE9TSVRJT04gOwoJCQkJCQlIZWxwSUQgPSBISURfU1dfU09SVF9QT1NJVElPTiA7CgkJCQkJCVJhZGlvQ2hlY2sgPSBUUlVFIDsKCQkJCQkJVGV4dCBbIGVuLVVTIF0gPSAiRG9jdW1lbnQgcG9zaXRpb24iIDsKCQkJCQl9OwoJCQkJfTsKCQkJfTsKCQkJVGV4dCBbIGVuLVVTIF0gPSAiU29ydCBCeSIgOwoJCX07Cgl9Owp9OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==