PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CiAgICA8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNC4wIj4KICAgIDxtZXRhIG5hbWU9IlByb2dJZCIgY29udGVudD0iRnJvbnRQYWdlLkVkaXRvci5Eb2N1bWVudCI+CiAgICA8bGluayByZWw9IlNUWUxFU0hFRVQiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZGVmYXVsdF9zdHlsZS5jc3MiIGNoYXJzZXQ9IklTTy04ODU5LTEiIHR5cGU9InRleHQvY3NzIj4KICAgIDx0aXRsZT5BSkRUIHYxLjEuMTEgLSBOZXcgYW5kIE5vdGV3b3J0aHk8L3RpdGxlPgogIDwvaGVhZD4KCiAgPGJvZHk+CiAgICA8aDE+QUpEVCB2MS4xLjExIC0gTmV3IGFuZCBOb3Rld29ydGh5PC9oMT4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI4MCUiPgogIDx0cj4KICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5XZWxjb21lIHBhZ2VzPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjcwJSIgdmFsaWduPSJ0b3AiPgoKICAgICAgPHA+RW50cmllcyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIEVjbGlwc2Ugd2VsY29tZSBwYWdlcyBmb3IgdGhlCiAgICAgIEFKRFQgaGVscCBwYWdlcywgY2hlYXQgc2hlZXQsIGFuZCBleGFtcGxlcy48L3A+CgogICAgICA8cD48aW1nIHNyYz0id2VsY29tZS5wbmciIHdpZHRoPSIzNTIiIGhlaWdodD0iNjgiPjwvcD4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5Bc3BlY3RKIGNoZWF0IHNoZWV0PC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjcwJSIgdmFsaWduPSJ0b3AiPgoKICAgICAgPHA+QSBuZXcgY2hlYXQgc2hlZXQgaGFzIGJlZW4gaW5jbHVkZWQgdG8gaGVscCB5b3UgZ2V0IHN0YXJ0ZWQKICAgICAgd2l0aCBBc3BlY3RKLiAgSXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSA8Yj5IZWxwICZndDsgQ2hlYXQgU2hlZXRzCiAgICAgICZndDsgQXNwZWN0Si48L2I+IElmIHRoaXMgZmVhdHVyZSBpcyBkZWVtZWQgdXNlZnVsLCBmdXJ0aGVyCiAgICAgIGNoZWF0IHNoZWV0cyBtYXkgYmUgYWRkZWQgaW4gZnV0dXJlIHJlbGVhc2VzLjwvcD4KCiAgICAgIDxwPjxpbWcgc3JjPSJjaGVhdHNoZWV0LlBORyIgd2lkdGg9IjI5MSIgaGVpZ2h0PSIzMDkiPjwvcD4KCiAgICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iMiI+CiAgICAgIDxocj4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIHdpZHRoPSIzMCUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+CiAgICAgIDxwIGFsaWduPSJyaWdodCI+PGI+TmV3IGZvcm1hdCBmb3IgYnVpbGQgY29uZmlndXJhdGlvbnM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICAgICA8cD5BIGJldHRlciBtZWNoYW5pc20gaXMgbm93IGF2YWlsYWJsZSBmb3Igc3BlY2lmeWluZyB3aGljaAogICAgICBzb3VyY2UgZmlsZXMgdG8gY29tcGlsZSwgYW5kIHRvIGFsbG93IGVhc3kgc3dpdGNoaW5nIGJldHdlZW4KICAgICAgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuIFRoZSBleGlzdGluZyA8Yj4ubHN0PC9iPiBmb3JtYXQgaXMKICAgICAgc2ltcGx5IGEgbGlzdCBvZiBmaWxlcywgd2hlcmVhcyB0aGUgbmV3IDxiPi5hanByb3BlcnRpZXM8L2I+CiAgICAgIGZvcm1hdCBhbGxvd3MgbW9yZSBleHByZXNzaXZlIGRlY2xhcmF0aW9ucyBvZiB3aGljaCBmb2xkZXJzIGFuZAogICAgICBmaWxlcyB0byBpbmNsdWRlIGFuZCBhbiBvcHRpb25hbCBsaXN0IG9mIGZvbGRlcnMgYW5kIGZpbGVzIHRvCiAgICAgIGV4Y2x1ZGUuIEFsc28sIHRoZSBzdGFuZGFyZCBwcm9wZXJ0aWVzIGZpbGUgZm9ybWF0IHVzZWQgYWxsb3dzCiAgICAgIGZvciBpbXByb3ZlZCBpbnRlZ3JhdGlvbiB3aXRoIGV4dGVybmFsIHRvb2xzIGxpa2UgQW50LjwvcD4KCiAgICAgPHA+U3VwcG9ydCBpcyBpbmNsdWRlZCBmb3IgY29udmVydGluZyBiZXR3ZWVuIDxiPi5sc3Q8L2I+IGZpbGVzCiAgICAgYW5kIDxiPi5hanByb3BlcnRpZXM8L2I+IGZpbGVzLiBBbHNvLCB0aGUgZXhhbXBsZXMgYXZhaWxhYmxlIHZpYQogICAgIDxiPk5ldyAmZ3Q7IE90aGVyICZndDsgQXNwZWN0SiAmZ3Q7IEFzcGVjdEogRXhhbXBsZXM8L2I+IGhhdmUKICAgICBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIG5ldyBjb25maWd1cmF0aW9uIGZpbGVzLjwvcD4KCiAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5EeW5hbWljIGJ1aWxkIGNvbmZpZ3VyYXRpb25zPC9iPjwvdGQ+CgogICAgPHRkIHdpZHRoPSI3MCUiIHZhbGlnbj0idG9wIj4KICAgICAgPHA+U291cmNlIGZpbGVzIGFuZCBwYWNrYWdlcyBjYW4gbm93IGJlIGR5bmFtaWNhbGx5IGluY2x1ZGVkIGFuZAogICAgICBleGNsdWRlZCBmcm9tIHRoZSBjdXJyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGlyZWN0bHkgZnJvbSB0aGUKICAgICAgUGFja2FnZSBFeHBsb3Jlciwgc2ltcGx5IGJ5IHJpZ2h0LWNsaWNraW5nIG9uIHRoZSBhcHByb3ByaWF0ZQogICAgICByZXNvdXJjZSBhbmQgc2VsZWN0aW5nIHRoZSBpbmNsdWRlIG9yIGV4Y2x1ZGUgbWVudQogICAgICBvcHRpb25zLiBBZmZlY3RlZCByZXNvdXJjZXMgYXJlIGRlY29yYXRlZCBhcHByb3ByaWF0ZWx5IHRvIHNob3cKICAgICAgd2hldGhlciBvciBub3QgdGhleSBhcmUgaW5jbHVkZWQuPC9wPgoKICAgICAgPHA+PGltZyBzcmM9ImluY2x1ZGVleGNsdWRlLnBuZyIgd2lkdGg9IjIyNSIgaGVpZ2h0PSIzMTUiPjwvcD4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5OZXcgYnVpbGQgY29uZmlndXJhdGlvbiBlZGl0b3I8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICAgICA8cD5Bc3NvY2lhdGVkIHdpdGggdGhlIG5ldyA8Yj4uYWpwcm9wZXJ0aWVzPC9iPiBmaWxlcyAoYW5kCiAgICAgIHJlcGxhY2luZyB0aGUgb2xkIDxiPi5sc3Q8L2I+IGZpbGUgZWRpdG9yKSwgdGhpcyBlZGl0b3IgcHJvdmlkZXMKICAgICAgYW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGVkaXRpbmcgYSBidWlsZCBjb25maWd1cmF0aW9uLiBVbmxpa2UgdGhlCiAgICAgIG1lbnUgb3B0aW9ucyBhdmFpbGFibGUgZnJvbSB0aGUgUGFja2FnZSBFeHBsb3JlciwgdGhlIGVkaXRvciBjYW4KICAgICAgYmUgdXNlZCBvbiBhbnkgYnVpbGQgY29uZmlndXJhdGlvbiwgbm90IGp1c3QgdGhlIGFjdGl2ZSBvbmUuPC9wPgoKICAgICAgPHA+PGltZyBzcmM9ImFqcHJvcHMtZWRpdG9yLnBuZyIgd2lkdGg9IjM0NCIgaGVpZ2h0PSIzMDgiPjwvcD4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+CgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5OZXcgQXNwZWN0SiBjb21waWxlciBwcmVmZXJlbmNlczwvYj48L3RkPgogICAgPHRkIHdpZHRoPSI3MCUiIHZhbGlnbj0idG9wIj4KCiAgICAgIDxwPkEgbmV3IDxiPkFzcGVjdEogJmd0OyBDb21waWxlcjwvYj4gcHJlZmVyZW5jZSBwYWdlIGhhcyBiZWVuCiAgICAgIGFkZGVkLCBzaW1pbGFyIHRvIHRoZSBKYXZhIENvbXBpbGVyIHBhZ2UuPC9wPgoKICAgICAgPHA+VGhlIDxiPlN0eWxlPC9iPiB0YWIKICAgICAgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgdGhlIEFzcGVjdEogY29tcGlsZXIgc2V0dGluZ3MgZm9yCiAgICAgIHZhcmlvdXMgY29kaW5nIGlzc3VlcyB3aGljaCBjYW4gZWl0aGVyIGJlIGlnbm9yZWQsIG9yIGFwcGVhciBhcwogICAgICB3YXJuaW5ncyBvciBlcnJvcnMgaW4gdGhlIFByb2JsZW1zIHZpZXcuPC9wPgogICAgICAKICAgICAgPHA+PGltZyBzcmM9ImFqY3ByZWZzcGFnZS1zdHlsZS5wbmciCiAgICAgIHdpZHRoPSI0ODEiIGhlaWdodD0iMTY4Ij48L3A+CgogICAgICA8cD5UaGUgPGI+QWR2YW5jZWQ8L2I+CiAgICAgIHRhYiBhbGxvd3MgYWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIHNldCBpbiB0aGUgY29tcGlsZXIsIHdpdGgKICAgICAgYSBicmllZiBleHBsYW5hdGlvbiBvZiBlYWNoIG9uZS48L3A+CgogICAgICA8cD48aW1nIHNyYz0iYWpjcHJlZnNwYWdlLWFkdmFuY2VkLnBuZyIgd2lkdGg9IjQ4MSIKICAgICAgaGVpZ2h0PSIxNjgiPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgoKICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5OZXcgaWNvbnM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICAgICA8cD5BbGwgb2YgdGhlIGljb25zIGFjcm9zcyBBSkRUIGhhdmUgYmVlbiBvdmVyaGF1bGVkIHRvIGJyaW5nCiAgICAgIHRoZSB0b29scyBpbnRvIGxpbmUgd2l0aCBFY2xpcHNlIDMuMC4gVGhlIGljb25zIGZvciBwb2ludGN1dHMsCiAgICAgIGFkdmljZSwgZXRjLCBoYXZlIGJlZW4gcmVkcmF3biBpbiB0aGUgRWNsaXBzZSAzLjAgc3R5bGUuCgogICAgICA8cD48aW1nIHNyYz0ib3V0bGluZS5QTkciIHdpZHRoPSIyODYiIGhlaWdodD0iNDc5Ij48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMzAlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPgogICAgICA8cCBhbGlnbj0icmlnaHQiPjxiPk5ldyBndXR0ZXIgYW5ub3RhdGlvbnM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICAgICA8cD5UaGUgZ3V0dGVyIGFubm90YXRpb25zIGhhdmUgYmVlbiBjb21wbGV0ZWx5IG92ZXJoYXVsZWQuCiAgICAgIFRoZXJlIGFyZSBub3cgZGlmZmVyZW50IGd1dHRlciBhbm5vdGF0aW9ucyBkZXBlbmRpbmcgb24gdGhlIGtpbmQKICAgICAgb2YgYWR2aWNlIChiZWZvcmUvYWZ0ZXIvYXJvdW5kKSBhbmQgdGhlc2UgYXJlIG1hcmtlZCB3aXRoIGEgJz8nCiAgICAgIGlmIHRoZXJlIGlzIGEgdGVzdCB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYXQgcnVudGltZSB0byBkZXRlcm1pbmUKICAgICAgd2hldGhlciB0aGUgYWR2aWNlIHNob3VsZCBydW4uPC9wPgoKICAgICAgPHA+PGltZyBzcmM9ImVkaXRvci5QTkciIHdpZHRoPSI0NzYiIGhlaWdodD0iMjk2Ij48L3A+CgogICAgICA8cD5XYXJuaW5ncyBhbmQgZXJyb3JzIHJlc3VsdGluZyBmcm9tIGRlY2xhcmUgd2FybmluZy9lcnJvcgogICAgICBzdGF0ZW1lbnRzIGhhdmUgbmV3IGljb25zIHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJvbSBub3JtYWwKICAgICAgZXJyb3JzL3dhcm5pbmdzOjwvcD4KCiAgICAgIDxwPjxpbWcgc3JjPSJkZW93LlBORyIgd2lkdGg9IjM4NCIgaGVpZ2h0PSIxNzIiPjwvcD4KICAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgoKICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iMiI+CiAgICAgIDxocj4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIHdpZHRoPSIzMCUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+CiAgICAgIDxwIGFsaWduPSJyaWdodCI+PGI+SW50ZXItdHlwZSBkZWNsYXJhdGlvbnM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICA8cD5JbnRlci10eXBlIGRlY2xhcmF0aW9ucyBub3cgYXBwZWFyIGFzIGd1dHRlciBtYXJrZXJzIGluIHRoZQogICBlZGl0b3IsIGFuZCBhcyBzdHJpcGVzIGluIHRoZSBWaXN1YWxpc2VyLjwvcD4KCiAgIDxwPjxpbWcgc3JjPSJpdGRfbWFya2Vycy5wbmciIHdpZHRoPSI1NzYiIGhlaWdodD0iMzI1Ij48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KCiAgICA8dGQgY29sc3Bhbj0iMiI+CiAgICAgIDxocj4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIHdpZHRoPSIzMCUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+CiAgICAgIDxwIGFsaWduPSJyaWdodCI+PGI+SW5QYXRoIGFuZCBBc3BlY3RQYXRoPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjcwJSIgdmFsaWduPSJ0b3AiPgoKICAgICAgPHA+V2Ugbm93IHN1cHBvcnQgdGhlIEVjbGlwc2UgYXBwcm9hY2ggZm9yIHNwZWNpZnlpbmcgdGhlc2UKICAgICAga2luZHMgb2YgY2xhc3NwYXRoIGVudGl0eSwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIHRoZSB1c2VyIHRvCiAgICAgIGVudGVyIGEgc3RyaW5nLiAgVGhlcmUgYXJlIHR3byBuZXcgcHJvamVjdCBwcm9wZXJ0aWVzIHBhZ2VzIGZvcgogICAgICB0aGlzLjwvcD4KCiAgICAgIDxwPjxpbWcgc3JjPSJhc3BlY3RwYXRoLlBORyIgd2lkdGg9IjQ5NSIgaGVpZ2h0PSIyMDUiPjwvcD4KICAgICAgPHA+PGltZyBzcmM9ImlucGF0aC5QTkciIHdpZHRoPSI0OTUiIGhlaWdodD0iMjA1Ij48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgoKICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5XZWF2aW5nIG1lc3NhZ2VzPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjcwJSIgdmFsaWduPSJ0b3AiPgoKICAgICAgPHA+VGhlcmUgaXMgYSBuZXcgPGI+QXNwZWN0SiAmZ3Q7IE91dHB1dCB3ZWF2aW5nIGluZm8KICAgICAgbWVzc2FnZXM8L2I+IG9wdGlvbiB1bmRlciBwcm9wZXJ0aWVzIGZvciBBc3BlY3RKCiAgICAgIHByb2plY3RzLiBTZXR0aW5nIHRoaXMgY2F1c2VzIGluZm9ybWF0aW9uYWwgd2VhdmluZyBtZXNzYWdlcyB0bwogICAgICBhcHBlYXIgaW4gdGhlIDxiPlByb2JsZW1zPC9iPiB2aWV3IGFmdGVyIHRoZSBwcm9qZWN0IGhhcyBiZWVuCiAgICAgIGJ1aWx0LjwvcD4KCiAgICAgIDxwPjxpbWcgc3JjPSJiaW5hcnltZXNzYWdlcy5QTkciIHdpZHRoPSI0NjMiIGhlaWdodD0iMTkyIj48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMzAlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPgogICAgICA8cCBhbGlnbj0icmlnaHQiPjxiPkltcHJvdmVkIHN1cHBvcnQgZm9yIHBsdWctaW4gcHJvamVjdHM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICAgICA8cD5Db252ZXJ0aW5nIGEgcGx1Zy1pbiBwcm9qZWN0IHRvIGFuIEFzcGVjdEogcHJvamVjdCB3aWxsIG5vdwogICAgICBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgPGI+b3JnLmFzcGVjdGouYWpkZTwvYj4gcGx1Zy1pbiB0byB5b3VyCiAgICAgIHByb2plY3QncyBsaXN0IG9mIHJlcXVpcmVkIHBsdWctaW5zLiBQcm9qZWN0cyB3aWxsIG5vIGxvbmdlcgogICAgICBsb3NlIHRoZSBBc3BlY3RKIHJ1bnRpbWUgbGlicmFyeSBmcm9tIHRoZSBidWlsZCBwYXRoIGFmdGVyCiAgICAgIGFza2luZyBQREUgdG8gYXV0b21hdGljYWxseSBjYWxjdWxhdGUgaXQuIDwvcD4KCiAgICAgIDxwPjxpbWcgc3JjPSJwbHVnaW5wcm9qZWN0cy5wbmciIHdpZHRoPSIzODIiIGhlaWdodD0iMjI4Ij48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+CgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5OZXcgZXh0ZW5zaWJsZSBWaXN1YWxpc2VyPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjcwJSIgdmFsaWduPSJ0b3AiPgoKICAgICAgPHA+VGhlIFZpc3VhbGlzZXIgaXMgbm93IGFuIGV4dGVuc2libGUgY29tcG9uZW50IHdpdGggaXRzIG93bgogICAgICBleHRlbnNpb24gcG9pbnRzIGRlZmluZWQgaWYgeW91IHdhbnQgdG8gdmlzdWFsaXplIHlvdXIgb3duIGRhdGEuCiAgICAgIEFKRFQgcHJvdmlkZXMgYW4gZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdXMgdGhlIG5vcm1hbCB2aWV3IHRoYXQKICAgICAgQUpEVCB1c2VycyBleHBlY3QgdG8gc2VlLCB3aXRoIGEgbnVtYmVyIG9mIGVuaGFuY2VtZW50czoKCiAgICA8cD4KICAgIDx1bD4KICAgICAgPGxpPk5ldywgY2xlYXJlciBpY29ucy48L2xpPgoKICAgICAgPHA+PGltZyBzcmM9InZpc3VhbGlzZXIucG5nIiB3aWR0aD0iNDg0IiBoZWlnaHQ9IjIzIj48L3A+CgogICAgICA8bGk+S2V5Ym9hcmQgbmF2aWdhdGlvbiwgdXNpbmcgdGhlIGN1cnNvciBrZXlzIG9yIFRhYiBhbmQKICAgICAgU2hpZnQtVGFiIGtleXMgdG8gdHJhdmVyc2Ugc3RyaXBlcy4gRjIgZGlzcGxheXMgYSBzdHJpcGUncwogICAgICB0b29sdGlwLCBhbmQgcHJlc3NpbmcgdGhlIHNwYWNlIGtleSBvcGVucyBhbiBlZGl0b3IgYXQgdGhlCiAgICAgIGFwcHJvcHJpYXRlIGxvY2F0aW9uLjwvbGk+CgogICAgICA8bGk+SW50ZWdyYXRlZCBoZWxwIHN5c3RlbS48L2xpPgogICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMzAlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPgogICAgICA8cCBhbGlnbj0icmlnaHQiPjxiPk5ldyB2aXN1YWxpc2F0aW9uIG9wdGlvbnM8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogIDxwPlRoZSBmb2xsb3dpbmcgb3B0aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIFZpc3VhbGlzZXI6PC9wPgoKICAgIDx1bD4KICAgICAgPGxpPkltcHJvdmVkIHN1cHBvcnQgZm9yIGxhcmdlIHByb2plY3RzLCBpbmNsdWRpbmcgbW9yZSBjb2xvdXJzCiAgICAgIHNldCBieSBkZWZhdWx0IGluIHRoZSBtZW51LCBwbHVzIDxiPlNlbGVjdCBBbGw8L2I+IGFuZCA8Yj5TZWxlY3QKICAgICAgTm9uZTwvYj4gYWN0aW9ucy4KCiAgICAgIDxsaT5BIG5ldyBwcmVmZXJlbmNlcyBwYWdlIHRoYXQgYWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgbWluaW11bQogICAgICBhbmQgbWF4aW11bSBiYXIgd2lkdGggYW5kIG1pbmltdW0gc3RyaXBlIGhlaWdodC48L2xpPgoKICAgICAgPGxpPk9wdGlvbmFsIGRlbWFyY2F0aW9uIGJldHdlZW4gY2xhc3NlcyBpbiB0aGUgcGFja2FnZSB2aWV3OjwvbGk+CgogICAgICA8cD48aW1nIHNyYz0iZGVtYXJjYXRpb24ucG5nIiB3aWR0aD0iMzc4IiBoZWlnaHQ9IjMxNyI+PC9wPgoKCiAgICAgIDxsaT48Yj5BYnNvbHV0ZSBwcm9wb3J0aW9uczwvYj4gbW9kZSwgd2hlcmUgZWFjaCBsaW5lIGlzIGF0CiAgICAgIGxlYXN0IHRoZSBtaW5pbXVtIHN0cmlwZSBoZWlnaHQsIHNvIHRoYXQgc3RyaXBlcyBjYW5ub3Qgb3ZlcmxhcAogICAgICBlYWNoIG90aGVyLiBXaXRoIHRoaXMgb3B0aW9uIGRpc2FibGVkICh0aGUgZGVmYXVsdCksIHRoZSBiYXJzCiAgICAgIG1heSBiZSBjb21wcmVzc2VkIHZlcnRpY2FsbHkgdG8gZml0IHdpdGhpbiB0aGUgdmlldywgbGlrZQogICAgICB0aGlzOjwvbGk+CgogICAgICA8cD48aW1nIHNyYz0id2l0aG91dF9hYnNvbHV0ZV9wcm9wb3J0aW9ucy5wbmciIHdpZHRoPSI0OTUiCiAgICAgIGhlaWdodD0iMzE3Ij48L3A+CgogICAgICA8cD5XaXRoIGFic29sdXRlIHByb3BvcnRpb25zIGVuYWJsZWQgdGhlIGJhcnMgYXJlIG5vdCBjb21wcmVzc2VkLAogICAgICBhbmQgc2Nyb2xsYmFycyBhcmUgdXNlZCBpZiByZXF1aXJlZDo8L3A+CgogICAgICA8cD48aW1nIHNyYz0iYWJzb2x1dGVfcHJvcG9ydGlvbnMucG5nIiB3aWR0aD0iNDk1IiBoZWlnaHQ9IjMxNyI+PC9wPgoKICAgIDwvdWw+CgogICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgoKICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPGhyPgogICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgd2lkdGg9IjMwJSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48Yj5hamRvYyB3aXphcmQ8L2I+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzAlIiB2YWxpZ249InRvcCI+CgogICA8cD5UaGUgYWpkb2MgdG9vbCBpcyB0aGUgQXNwZWN0SiByZXBsYWNlbWVudCBmb3IgamF2YWRvYy4gVGhlcmUgaXMKICAgYSBuZXcgd2l6YXJkIHNpbWlsYXIgdG8gdGhlIGphdmFkb2Mgd2l6YXJkIHdoaWNoIG1ha2VzIHVzZSBvZiB0aGlzCiAgIHRvb2wuIEl0IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIDxiPlByb2plY3QgJmd0OyBHZW5lcmF0ZQogICBhamRvYy4uLjwvYj4gbWVudSBvcHRpb24uPC9wPgoKICAgPHA+PGltZyBzcmM9ImFqZG9jLnBuZyIgd2lkdGg9IjQ2MyIgaGVpZ2h0PSIxOTEiPjwvcD4KCiAgICAgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iMiI+CiAgICAgIDxocj4KICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIHdpZHRoPSIzMCUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+CiAgICAgIDxwIGFsaWduPSJyaWdodCI+PGI+QnJlYWtwb2ludHMgaW4gYXNwZWN0czwvYj48L3RkPgogICAgPHRkIHdpZHRoPSI3MCUiIHZhbGlnbj0idG9wIj4KCjxwPkl0IGlzIG5vdyBwb3NzaWJsZSB0byBzZXQgYnJlYWtwb2ludHMgaW5zaWRlIGFzcGVjdHMuIFRoaXMgY2FuIGJlCmRvbmUgYXMgdXN1YWwgYnkgZG91YmxlLWNsaWNraW5nIHRoZSBsZWZ0LWhhbmQgYnJlYWtwb2ludCBydWxlciBvciBieQpyaWdodC1jbGlja2luZyB0aGUgcnVsZXIgYW5kIGNob3NpbmcgdGhlIGFwcHJvcHJpYXRlIG1lbnUgb3B0aW9uLgooTm90ZTogdGhlcmUgaXMgYSBsaW1pdGF0aW9uIHdoaWNoIG1lYW5zIHRoYXQgaW4gc29tZSBjYXNlcyBicmVha3BvaW50cwppbnNpZGUgkWFyb3VuZJIgYWR2aWNlIHdpbGwgbm90IGJlIHRyaWdnZXJlZC4pCjwvcD4KCiAgIDxwPjxpbWcgc3JjPSJicmVha3BvaW50cy5wbmciIHdpZHRoPSI0MjUiIGhlaWdodD0iMjAwIj48L3A+CgogICAgIDwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIGNvbHNwYW49IjIiPgogICAgICA8aHI+CiAgICA8L3RkPgogIDwvdHI+Cgo8L3RhYmxlPgoKICA8L2JvZHk+CjwvaHRtbD4K