PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgkkcGFnZVRpdGxlIAkJPSAiU01JTEEiOwoJJHBhZ2VLZXl3b3Jkcwk9ICJTTUlMQSwgdW5zdHJ1Y3R1cmVkIGluZm9ybWF0aW9uIG1hbmFnZW1lbnQsIGluZm9ybWF0aW9uIGxvZ2lzdGljcywgc2VtYW50aWMgd2ViLCBmcmFtZXdvcmssIHBsYXRmb3JtLCBlY2xpcHNlIjsKCSRwYWdlQXV0aG9yCQk9ICJJZ29yIE5vdmFrb3ZpYyI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKSwgbGV2ZWwgKDEsIDIgb3IgMykKCSMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIiwgMyk7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIiwgMyk7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKCgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoJCTxoMT5TTUlMQSAtIFNlTWFudGljIEluZm9ybWF0aW9uIExvZ2lzdGljcyBBcmNoaXRlY3R1cmU8L2gxPgoJCTxoMj5VbmxlYXNoaW5nIHRoZSBwb3RlbnRpYWwgb2YgdW5zdHJ1Y3R1cmVkIGRhdGEgc291cmNlczwvaDI+CgkJPHA+CgkJCVRoZSBhbW91bnQgYW5kIGRpdmVyc2l0eSBvZiBpbmZvcm1hdGlvbiBpcyBncm93aW5nIGV4cG9uZW50aWFsbHksIG1haW5seSBpbiB0aGUgYXJlYSBvZiB1bnN0cnVjdHVyZWQgZGF0YSwgPGJyPgoJCQlsaWtlIGVtYWlscywgdGV4dCBmaWxlcywgYmxvZ3MsIGltYWdlcyBldGMuIFBvb3IgZGF0YSBhY2Nlc3NpYmlsaXR5LCB1c2VyIHJpZ2h0cyBpbnRlZ3JhdGlvbiBhbmQgdGhlIGxhY2sgb2YgPGJyPgoJCQlzZW1hbnRpYyBtZXRhIGRhdGEgYXJlIGNvbnN0cmFpbmluZyBmYWN0b3JzIGZvciBidWlsZGluZyBuZXh0IGdlbmVyYXRpb24gZW50ZXJwcmlzZSBzZWFyY2ggYW5kIG90aGVyIGRvY3VtZW50IDxicj4KCQkJY2VudHJpYyBhcHBsaWNhdGlvbnMuIE1pc3Npbmcgc3RhbmRhcmRzIHJlc3VsdCBpbiBwcm9wcmlldGFyeSBzb2x1dGlvbnMgd2l0aCBodWdlIHNob3J0IGFuZCBsb25nIHRlcm0gY29zdC4KCQk8L3A+CgkJPHA+CgkJCTxiPlNNSUxBPC9iPiBpcyBhbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgc2VhcmNoIHNvbHV0aW9ucyB0byBhY2Nlc3MgdW5zdHJ1Y3R1cmVkIGluZm9ybWF0aW9uIGluIDxicj4KCQkJdGhlIGVudGVycHJpc2UuIEJlc2lkZXMgcHJvdmlkaW5nIGVzc2VudGlhbCBpbmZyYXN0cnVjdHVyZSBjb21wb25lbnRzIGFuZCBzZXJ2aWNlcywgPGI+U01JTEE8L2I+IGFsc28gZGVsaXZlcnMgPGJyPgoJCQlyZWFkeS10by11c2UgYWRkLW9uIGNvbXBvbmVudHMsIGxpa2UgY29ubmVjdG9ycyB0byBtb3N0IHJlbGV2YW50IGRhdGEgc291cmNlcy4gVXNpbmcgdGhlIGZyYW1ld29yayBhcyB0aGVpciA8YnI+CgkJCWJhc2lzIHdpbGwgZW5hYmxlIGRldmVsb3BlcnMgdG8gY29uY2VudHJhdGUgb24gdGhlIGNyZWF0aW9uIG9mIGhpZ2hlciB2YWx1ZSBzb2x1dGlvbnMsIGxpa2Ugc2VtYW50aWMgZHJpdmVuIDxicj4KCQkJYXBwbGljYXRpb25zIGV0Yy4KCQk8L3A+CgkJPHA+CgkJCTxpbWcgc3JjPSJpbWFnZXMvU01JTEFfQXJjaGl0ZWN0dXJlX092ZXJ2aWV3LnBuZyIgYWx0PSJTTUlMQSBBcmNoaXRlY3R1cmUgT3ZlcnZpZXciIGFsaWduPSJtaWRkbGUiPgkgIAoJCTwvcD4KCQk8ZGl2IGNsYXNzPSJob21laXRlbTNjb2wiPgoJCQk8aDM+TmV3czwvaDM+CgkJCTxoND5TTUlMQSBpbml0aWF0aXZlIGdhaW5zIG5ldyBzdXBwb3J0ZXJzPC9oND4KCQkJPHA+CgkJCQlBZnRlciBnZXR0aW5nIHN1cHBvcnQgZnJvbSB0aGUgR2VybWFuIFJlc2VhcmNoIENlbnRlciBmb3IgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgCgkJCQkoPGEgaHJlZj0iaHR0cDovL3d3dy5kZmtpLmRlLyIgdGFyZ2V0PSJfYmxhbmsiPkRGS0k8L2E+KSByaWdodCBhZnRlciBTTUlMQSdzIGNyZWF0aW9uIHJldmlldywgbm93IHdlIGFyZSAKCQkJCXZlcnkgcGxlYXNlZCB0byBhbm5vdW5jZSB0aGF0IFNNSUxBIGhhcyBnb3QgdHdvIG5ldyBzdXBwb3J0ZXJzOiA8YSBocmVmPSJodHRwOi8vd3d3LmF0dGVuc2l0eS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+QXR0ZW5zaXR5PC9hPiAKCQkJCWFuZCA8YSBocmVmPSJodHRwOi8vd3d3LmxpdmluZy1lLmRlLyIgdGFyZ2V0PSJfYmxhbmsiPmxpdmluZy1lPC9hPi4gPGJyPgoJCQkJPGJyPgoJCQkJVGhpcyBpcyB0aGUgc2hvcnQgZXhjZXJwdCBmcm9tIHRoZSBvZmZpY2lhbCBwcmVzcyByZWxlYXNlOjxicj4KCQkJCTxpPgoJCQkJIlJldHJvYWN0aXZlIHRvIEphbnVhcnkgMSwgMjAwOSwgdGhlIGluaXRpYXRpdmUgZ2FpbnMgdHdvIHNpZ25pZmljYW50IHNlbWFudGljIHRlY2hub2xvZ3kgcGFydG5lcnMgCgkJCQlvbiB0aGUgb2NjYXNpb24gb2YgdGhlIE9wZW4gU291cmNlIE1lZXRzIEJ1c2luZXNzIENvbmdyZXNzICgyNy4gliAyOS4gSmFudWFyeSAyMDA5LCBOdXJlbWJlcmcsIEdlcm1hbnkpIAoJCQkJd2l0aCBBdHRlbnNpdHksIEluYy4sIGZyb20gUGFsbyBBbHRvLCBDYWxpZm9ybmlhIGFuZCBsaXZpbmctZSBBRyBmcm9tIEthcmxzcnVoZSwgR2VybWFueS4gQm90aCBjb21wYW5pZXMgCgkJCQl3aWxsIGNvbnRpbnVlIGRldmVsb3BtZW50IG9mIHRoZWlyIHByb2R1Y3RzIGJhc2VkIG9uIHRoZSBTTUlMQSBvcGVuIGFyY2hpdGVjdHVyZSBhbmQgaW5mcmFzdHJ1Y3R1cmUgCgkJCQlzdGFuZGFyZCCWIEF0dGVuc2l0eSB3aXRoIHNlbWFudGljIHRleHQgYW5hbHl0aWNzIHRlY2hub2xvZ2llcyBhbmQgbGl2aW5nLWUgd2l0aCBpdHMgc2VsZi1sZWFybmluZyAKCQkJCXNvbHV0aW9ucyBmb3IgYXV0b21hdGVkLCBpbnRlbGxpZ2VudCByZXNwb25zZXMgdG8gZS1tYWlscywgU01TLCBmYXhlcyBhbmQgbGV0dGVycy4iCgkJCQk8L2k+CgkJCTwvcD4gCgkJCTxoND5Kb2luIHVzIGluIG91ciBTTUlMQSBXZWJpbmFyITwvaDQ+CgkJCTxwPgoJCQkJRG8geW91IHdhbnQgdG8gc2VlIHdoYXQgYXJlIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnRzIGluIFNNSUxBPyBXb3VsZCB5b3UgbGlrZSB0byBzZWUgdGhlIGRlbW8gdG9vPwoJCQkJVGhlbiBqb2luIHVzIGluIG91ciA8YSBocmVmPSJodHRwOi8vbGl2ZS5lY2xpcHNlLm9yZy9ub2RlLzYxNyIgdGFyZ2V0PSJfYmxhbmsiPlNNSUxBIFdlYmluYXI8L2E+IHRoYXQgd2lsbCAKCQkJCWJlIGhlbGQgb24gRGVjZW1iZXIgMTd0aCwgMjAwOCAxNzowMCBDRVQgYW5kIHdpbGwgbGFzdCBhYm91dCBvbmUgaG91ci4KCQkJPC9wPiAKCQk8L2Rpdj4KCTwvZGl2PgoJICAKCTxkaXYgaWQ9InJpZ2h0Y29sdW1uIj4KICAgIAk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CiAgICAgICAJCTxoNj5JbmN1YmF0aW9uPC9oNj48cD4KICAgICAgIAkJPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgCQk8YSBocmVmPSIvcHJvamVjdHMvd2hhdC1pcy1pbmN1YmF0aW9uLnBocCI+CiAgICAgICAgICAgCQk8aW1nIGFsaWduPSJjZW50ZXIiIHNyYz0iL2ltYWdlcy9lZ2ctaW5jdWJhdGlvbi5wbmciIGJvcmRlcj0iMCIvPjwvYT4KICAgICAgIAkJPC9kaXY+CiAgICAgCTwvZGl2PgoJICAJPGRpdiBjbGFzcz0ic2lkZWl0ZW0iPgoJCQk8aDY+TGlua3M8L2g2PgoJCQk8dWw+CgkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvU01JTEEiIHRhcmdldD0iX2JsYW5rIj5Qcm9qZWN0IFdpa2k8L2E+PC9saT4JCQkJCgkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wcm9wb3NhbHMvZWlsZi9TTUlMQV9DcmVhdGlvbl9SZXZpZXcucGRmIiB0YXJnZXQ9Il9ibGFuayI+Q3JlYXRpb24gUmV2aWV3PC9hPjwvbGk+CgkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wcm9wb3NhbHMvZWlsZiIgdGFyZ2V0PSJfYmxhbmsiPlByb2plY3QgcHJvcG9zYWw8L2E+PC9saT4KCQkJPC91bD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CgkJCTxoNj5NZWV0IHVzPC9oNj4KCQkJPGRpdiBhbGlnbj0iY2VudGVyIj4KIAkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2VzdW1taXQub3JnLyI+CiAJCQkJCTxpbWcgYm9yZGVyPSIwIiBzcmM9Imh0dHA6Ly93d3cuZWNsaXBzZXN1bW1pdC5vcmcvc3VtbWl0ZXVyb3BlMjAwOC9pbWFnZS9mcmllbmRzLzEyNXg3Mi5naWYiIAogCQkJCQloZWlnaHQ9IjcyIiB3aWR0aD0iMTI1IiBhbHQ9IkVjbGlwc2UgU3VtbWl0IEV1cm9wZSAyMDA4Ii8+CiAJCQkJPC9hPgogCQkJPC9kaXY+CQkJCgkJPC9kaXY+CQoJPC9kaXY+CQoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cg==