PD9waHAKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlyZXF1aXJlX29uY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvZWNsaXBzZS5vcmctY29tbW9uL3N5c3RlbS9hcHAuY2xhc3MucGhwIik7CXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL25hdi5jbGFzcy5waHAiKTsgCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL21lbnUuY2xhc3MucGhwIik7IAkkQXBwIAk9IG5ldyBBcHAoKTsJJE5hdgk9IG5ldyBOYXYoKTsJJE1lbnUgCT0gbmV3IE1lbnUoKTsJCWluY2x1ZGUoIl9wcm9qZWN0Q29tbW9uLnBocCIpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJCgkjCgkjIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKCSRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIEFubm91bmNlcyBGdWxsIFN1cHBvcnQgZm9yIEphdmEgNyI7CgkkcGFnZUtleXdvcmRzCT0gImVsaXBzZSwgamF2YTcsIGpkdCI7CgkkcGFnZUF1dGhvcgkJPSAiSWFuIFNrZXJyZXR0IjsKCQoJIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCgkjIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspCgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAoJPHN0eWxlPgoJCS5wYWRkZWRsaXN0IGxpIHsJcGFkZGluZy1ib3R0b206N3B4Owl9Cgk8L3N0eWxlPgoJCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+Cjxicj48YnI+PGJyPgkKCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgoJCQoJCTxicj4KICA8cD48c3Ryb25nPk90dGF3YSwgQ2FuYWRhIJYgU2VwdGVtYmVyIDI3LCAyMDExPC9zdHJvbmc+IJYgVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBwbGVhc2VkIHRvIGFubm91bmNlIHRoZSByZWNlbnQgRWNsaXBzZSBJbmRpZ28gU1IxIHJlbGVhc2UgaW5jbHVkZXMgZnVsbCBwcm9kdWN0aW9uIGxldmVsIHN1cHBvcnQgCiAgZm9yIEphdmEgNywgdGhlIHJlY2VudCBtYWpvciByZWxlYXNlIG9mIHRoZSBKYXZhIFNESy4gIERldmVsb3BlcnMgY2FuIG5vdyB1c2UgRWNsaXBzZSBKRFQgdG8gZGV2ZWxvcCBKYXZhIGFwcGxpY2F0aW9ucyB0aGF0IHRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgSmF2YSA3IGZlYXR1cmVzLiAgCgo8cD5UaGUgbmV3IEVjbGlwc2UgSkRUIHJlbGVhc2Ugd2lsbCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZm9yIEphdmEgNyBzdXBwb3J0Ojxicj4KPHVsPgo8bGk+RWNsaXBzZSBjb21waWxlciBpbXBsZW1lbnRzIGFsbCB0aGUgbmV3IEphdmEgNyBsYW5ndWFnZSBlbmhhbmNlbWVudHMuCjxsaT5TaWduaWZpY2FudCBmZWF0dXJlcywgbGlrZSBTZWFyY2ggYW5kIFJlZmFjdG9yaW5nLCBoYXZlIGJlZW4gdXBkYXRlZCB0byBzdXBwb3J0IEphdmEgNy4gCjxsaT5Db250ZW50IEFzc2lzdCBjYW4gaW5zZXJ0IHRoZSBkaWFtb25kIGFuZCBRdWljayBBc3Npc3QgYWxsb3dzIHRvIGluc2VydCB0aGUgaW5mZXJyZWQgdHlwZSBhcmd1bWVudHMuCjxsaT5RdWljayBBc3Npc3RzIGFuZCBRdWljayBGaXhlcyBhcmUgYWRkZWQgZm9yIHRoZSBtdWx0aS1jYXRjaCBzdGF0ZW1lbnQuCjxsaT5EZXRlY3Rpb24gb2YgdW5oYW5kbGVkIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IGF1dG9tYXRpYyBjbG9zZSgpLgo8bGk+UXVpY2sgRml4ZXMgdG8gYWRkIGFuZCByZW1vdmUgQFNhZmVWYXJhcmdzLgo8bGk+UXVpY2sgQXNzaXN0IHRvIGNvbnZlcnQgJ3N3aXRjaCcgdG8gJ2lmLWVsc2UnLjwvbGk+CjwvdWw+CgpTZWUgV2hhdCdzIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvamR0L3VpL3IzXzgvSmF2YTduZXdzL3doYXRzLW5ldy1qYXZhLTcuaHRtbCI+TmV3IGZvciBKYXZhIDc8L2E+IGZvciB0aGUgY29tcGxldGUgZmVhdHVyZSBsaXN0LiA8L3A+Cjxicj48YnI+Cgo8cD6TSmF2YSA3IGlzIGEgc2lnbmlmaWNhbnQgcmVsZWFzZSBmb3IgbW92aW5nIHRoZSBKYXZhIGNvbW11bml0eSBhbmQgcGxhdGZvcm0gZm9yd2FyZJQsIGV4cGxhaW5zIE1pa2UgTWlsaW5rb3ZpY2gsIEV4ZWN1dGl2ZSBEaXJlY3RvciwgRWNsaXBzZSBGb3VuZGF0aW9uLiAgk1RoZSBuZXcgRWNsaXBzZSBzdXBwb3J0IGZvciB0aGUgCm5ldyBsYW5ndWFnZSBmZWF0dXJlcyBpcyBhbiBpbXBvcnRhbnQgc3RlcCBpbiBoYXZpbmcgdGhlIHdpZGVyIGRldmVsb3BlciBjb21tdW5pdHkgYWRvcHQgdGhlIG5ldyBmZWF0dXJlcyBpbiB0aGVpciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC6UPC9wPgoKCjxwPiJKYXZhIHJlbWFpbnMgY3JpdGljYWwgdG8gb3VyIGN1c3RvbWVycycgc3VjY2VzcywiIHNhaWQgU2FsIFZlbGxhLCBWaWNlIFByZXNpZGVudCBBcmNoaXRlY3R1cmUgYW5kIFRlY2hub2xvZ3ksIElCTS4gICJJQk0ncyB3b3JrIHdpdGggRWNsaXBzZSBpbiBoZWxwaW5nIGZvcm0gSmF2YSA3IGFuZCBvdXIgc3VwcG9ydCBvZiAKdGhlICBFY2xpcHNlIEphdmEgRGV2ZWxvcG1lbnQgVG9vbHMgd2lsbCBhbGxvdyBwcm9ncmFtbWVycyB0byBjb250aW51ZSB0byByZWFsaXplIHRoZSBiZW5lZml0cyBvZiBhIHRydWx5IG9wZW4gc3RhbmRhcmQgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4iIDwvcD4KCjxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIGluIGNvbGxhYm9yYXRpb24gd2l0aCBPcmFjbGUsIGlzIGFsc28gaG9zdGluZyB0aGUgSmF2YSA3IFN1bW1pdCBhdCBFY2xpcHNlQ29uIEV1cm9wZSwgTm92ZW1iZXIgMi00IGluIEx1ZHdpZ3NidXJnLCBHZXJtYW55LiAgVGhlIEphdmEgNyBTdW1taXQgd2lsbCBmZWF0dXJlIAp0ZWNobmljYWwgZWR1Y2F0aW9uIG9uIHRoZSBuZXcgSmF2YSA3IGZlYXR1cmVzIGFuZCB0aGUgc3VwcG9ydCBwcm92aWRlZCBieSBFY2xpcHNlLiAgTW9yZSBkZXRhaWxzIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZWNsaXBzZWNvbi5vcmcvIj53d3cuZWNsaXBzZWNvbi5vcmc8L2E+LjwvcD4KCgo8cD5FY2xpcHNlIEluZGlnbyBTUjEgaXMgYXZhaWxhYmxlIGZvciBpbW1lZGlhdGUgZG93bmxvYWQgZnJvbSA8YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZG93bmxvYWRzLyI+d3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy48L2E+PC9wPgoKPGJyPgk8c3Ryb25nPkFib3V0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb248L3N0cm9uZz4KCTxwPkVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5LCB3aG9zZSBwcm9qZWN0cyBhcmUgZm9jdXNlZCBvbiBidWlsZGluZyBhbiBvcGVuIGRldmVsb3BtZW50IHBsYXRmb3JtIGNvbXByaXNlZCBvZiBleHRlbnNpYmxlIAoJZnJhbWV3b3JrcywgdG9vbHMgYW5kIHJ1bnRpbWVzIGZvciBidWlsZGluZywgZGVwbG95aW5nIGFuZCBtYW5hZ2luZyBzb2Z0d2FyZSBhY3Jvc3MgdGhlIGxpZmVjeWNsZS4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgCgl0ZWNobm9sb2d5IHZlbmRvcnMsIGlubm92YXRpdmUgc3RhcnQtdXBzLCB1bml2ZXJzaXRpZXMgYW5kIHJlc2VhcmNoIGluc3RpdHV0aW9ucyBhbmQgaW5kaXZpZHVhbHMgZXh0ZW5kLCBjb21wbGVtZW50IGFuZCBzdXBwb3J0IHRoZSAKCUVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZiBFY2xpcHNlIAoJYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj53d3cuZWNsaXBzZS5vcmc8L2E+CTwvcD4KICAKCgk8L2Rpdj4KCgk8IS0tIHJlbW92ZSB0aGUgZW50aXJlIDxkaXY+IHRhZyB0byBvbWl0IHRoZSByaWdodCBjb2x1bW4hICAtLT4KCTxkaXYgaWQ9InJpZ2h0Y29sdW1uIj4KCQk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CgkJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQkJPHVsPgoJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlY29uLm9yZy8iPkVjbGlwc2VDb24gRXVyb3BlPC9hPjwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+Cgk8L2Rpdj4JCjwvZGl2PgoKCkVPSFRNTDsKCSRodG1sID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtbCwgIkhUTUwtRU5USVRJRVMiLCAiSVNPLTg4NTktMSIpOwoJJHBhZ2VUaXRsZSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHBhZ2VUaXRsZSwgIkhUTUwtRU5USVRJRVMiLCAiSVNPLTg4NTktMSIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/Pgo=