PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvZiB0aGlzIEZBUT8gQW5kIGhvdyBtYXkgSSB1c2UgaXQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPlRoZSBvcmlnaW5hbCBXaW5lIEZBUSwgd2hpY2ggdGhpcyBGQVEgd2FzIGJhc2VkIG9uLCB3YXMgY29weXJpZ2h0ICZjb3B5OyAxOTk1LTE5OTggRGF2aWQgR2FyZG5lci48L3BhcmE+CiAgICAgICAgPHBhcmE+SXQgbWF5IGJlIHJlcHJvZHVjZWQgYW5kIG1vZGlmaWVkIHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFdpbmUgaXRzZWxmLjwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkdlbmVyYWwtUXVlc3Rpb25zLWFib3V0LVdpbmUiPgogICAgICA8dGl0bGU+R2VuZXJhbCBRdWVzdGlvbnMgYWJvdXQgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgoKICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLVdpbmUtYW5kLXdoYXQtaXMtaXQtc3VwcG9zZWQtdG8iPgogICAgICAgIDxwYXJhPldoYXQgaXMgV2luZSBhbmQgd2hhdCBpcyBpdCBzdXBwb3NlZCB0byBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGEgcHJvZ3JhbSB3aGljaCBhbGxvd3MgdGhlIG9wZXJhdGlvbiBvZiBET1MgYW5kIE1TCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW1zIChXaW5kb3dzIDMueCBhbmQgV2luMzIgZXhlY3V0YWJsZXMpIG9uIFVOSVggb3BlcmF0aW5nIHN5c3RlbXMgc3VjaCBhcyBMaW51eC4gCiAgICAgICAgICBJdCBjb25zaXN0cyBvZiBhIHByb2dyYW0gbG9hZGVyLCB3aGljaCBsb2FkcyBhbmQgZXhlY3V0ZXMgYSBXaW5kb3dzCiAgICAgICAgICBiaW5hcnksIGFuZCBhIHNldCBvZiBsaWJyYXJpZXMgdGhhdCBpbXBsZW1lbnRzIFdpbmRvd3MgQVBJIGNhbGxzCiAgICAgICAgICB1c2luZyB0aGVpciBVTklYIG9yIFgxMSBlcXVpdmFsZW50cy4gVGhlIGxpYnJhcmllcyBtYXkgYWxzbyBiZSB1c2VkCiAgICAgICAgICBmb3IgcG9ydGluZyBXaW4zMiBjb2RlIGludG8gbmF0aXZlIFVOSVggZXhlY3V0YWJsZXMsIG9mdGVuCiAgICAgICAgICB3aXRob3V0IG1hbnkgY2hhbmdlcyBpbiB0aGUgc291cmNlLiBXaW5lIGlzIGZyZWUgc29mdHdhcmUsIAogICAgICAgICAgYW5kIGl0cyBsaWNlbnNlIChjb250YWluZWQgaW4gdGhlIGZpbGUgTElDRU5TRQogICAgICAgICAgaW4gZWFjaCBkaXN0cmlidXRpb24pIGlzIHRoZSBMR1BMLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtV2luZS1hbi1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIGVtdWxhdGUgYSBmdWxsIGNvbXB1dGVyPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBhcyB0aGUgbmFtZSBzYXlzLCBXaW5lIElzIE5vdCBhIChDUFUpIEVtdWxhdG9yLiBXaW5lIGp1c3QKICAgICAgICAgIHByb3ZpZGVzIHRoZSBXaW5kb3dzIEFQSS4gVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsIG5lZWQgYW4KICAgICAgICAgIHg4Ni1jb21wYXRpYmxlIHByb2Nlc3NvciB0byBydW4gYW4geDg2IFdpbmRvd3MgYXBwbGljYXRpb24sIGZvciBpbnN0YW5jZSBmcm9tIEludGVsIG9yIEFNRC4gVGhlCiAgICAgICAgICBhZHZhbnRhZ2UgaXMgdGhhdCwgdW5saWtlIHNvbHV0aW9ucyB0aGF0IHJlbHkgb24gQ1BVIGVtdWxhdGlvbiwgV2luZQogICAgICAgICAgcnVucyBhcHBsaWNhdGlvbnMgYXQgZnVsbCBzcGVlZC4gU29tZXRpbWVzIGEgcHJvZ3JhbSBydW4gdW5kZXIKCSAgV2luZSB3aWxsIGJlIHNsb3dlciB0aGFuIHdoZW4gcnVuIG9uIGEgY29weSBvZiBNaWNyb3NvZnQgV2luZG93cywgYnV0CgkgIHRoaXMgaXMgbW9yZSBkdWUgdG8gdGhlIGZhY3QgdGhhdCBNaWNyb3NvZnQgaGFzIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRGlmZmVyZW5jZS1iZXR3ZWVuLVdpbmUtYW5kLWVtdWxhdG9ycyI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFdpbmUgYW5kIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHR3byBmcmVlIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM6CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vYm9jaHMuc291cmNlZm9yZ2UubmV0Ij5Cb2NoczwvdWxpbms+LCBhbmQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3BsZXg4NiI+UGxleDg2PC91bGluaz4uCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBQbGV4ODYgaXMgdGhlIG9wZW4tc291cmNlIGZyZWUtc29mdHdhcmUgYWx0ZXJuYXRpdmUgZm9yIFZNV2FyZSwKCSAgVmlydHVhbFBDLCBhbmQgb3RoZXIgSUEtMzIgb24gSUEtMzIgIlZpcnR1YWwgUEMgcHJvZHVjdHMuIiBJdAogICAgICAgICAgY2FuIG9ubHkgcnVuIG9uIHRoZSBJQS0zMiBhcmNoaXRlY3R1cmUuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb2NocyBpcyBhIGhpZ2hseSBwb3J0YWJsZSBvcGVuIHNvdXJjZSBJQS0zMiAoeDg2KSBQQyBlbXVsYXRvciAKICAgICAgICAgIHdyaXR0ZW4gaW4gQysrLCB0aGF0IHJ1bnMgb24gbW9zdCBwb3B1bGFyIHBsYXRmb3Jtcy4gSXQgaW5jbHVkZXMgZW11bGF0aW9uCiAgICAgICAgICBvZiB0aGUgSW50ZWwgeDg2IENQVSwgY29tbW9uIEkvTyBkZXZpY2VzLCBhbmQgYSBjdXN0b20gQklPUy4gQ3VycmVudGx5LCAKICAgICAgICAgIEJvY2hzIGNhbiBiZSBjb21waWxlZCB0byBlbXVsYXRlIGEgMzg2LCA0ODYgb3IgUGVudGl1bSBDUFUuIEJvY2hzIGlzIGNhcGFibGUKICAgICAgICAgIG9mIHJ1bm5pbmcgbW9zdCBPcGVyYXRpbmcgU3lzdGVtcyBpbnNpZGUgdGhlIGVtdWxhdGlvbiBpbmNsdWRpbmcgTGludXgsIAogICAgICAgICAgV2luZG93c64gOTUsIERPUywgYW5kIHJlY2VudGx5IFdpbmRvd3OuIE5UIDQuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb3RoIGFyZSBsaWNlbnNlZCB1bmRlciB0aGUgR1BMLiBCb2NocyBpcyBvbGRlciB0aGFuIFBsZXg4Niwgc2VlbXMgdG8gYmUKICAgICAgICAgIGVhc2llciB0byBpbnN0YWxsLCBidXQgUGxleDg2IHdpbGwgcnVuIGZhc3RlciBiZWNhdXNlIFBsZXg4NiB1c2VzIGEganVzdCBpbgogICAgICAgICAgdGltZSBiaW5hcnkgY29tcGlsZXIuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBkcmF3YmFjayBvZiBhbGwgZW11bGF0b3JzIGlzIHRoYXQgeW91IG5lZWQgYSB2ZXJzaW9uCiAgICAgICAgICBvZiBXaW5kb3dzIGluIG9yZGVyIHRvIHJ1biBXaW5kb3dzLCBhbmQgdGhhdCB0aGV5IGFsbCBoYXZlIGFuCiAgICAgICAgICBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIFdpbmUgYWxzbyBnaXZlcyBtdWNoIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIC0gZm9yCgkgIGluc3RhbmNlLCBwcm9ncmFtcyB1c2UgeW91ciBzdGFuZGFyZCB3aW5kb3cgbWFuYWdlciwgc3lzdGVtIHRyYXkgaWNvbnMgd2lsbAoJICBhcHBlYXIgaW4geW91ciB0cmF5IGFyZWEgKGlmIHlvdSBoYXZlIG9uZSksIGFuZCB5b3UgY2FuIHJ1biBwcm9ncmFtcyBkaXJlY3QgZnJvbSB0aGUKCSAgY29tbWFuZCBsaW5lIGFzIHdlbGwgYXMgbWVudXMuIFRoZSBjbGlwYm9hcmQgYWxzbyB3b3JrcyBzZWFtbGVzc2x5IGF0IHRoaXMgdGltZS4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJbnRlZ3JhdGUtYW4teDg2LWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBpbnRlZ3JhdGUgYW4geDg2IENQVSBlbXVsYXRvciBzbyB3ZSBjYW4KICAgICAgICAgIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucyBvbiBub24teDg2IG1hY2hpbmVzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBzaG9ydCBhbnN3ZXIgaXMgJ3Byb2JhYmx5IG5ldmVyJy4gUmVtZW1iZXIsIFdpbmUgSXMgTm90IGEKICAgICAgICAgIChDUFUpIEVtdWxhdG9yLiBUaGUgbG9uZyBhbnN3ZXIgaXMgdGhhdCB3ZSBwcm9iYWJseSBkb24ndCB3YW50IG9yCiAgICAgICAgICBuZWVkIHRvIGludGVncmF0ZSBvbmUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEludGVncmF0aW5nIGEgQ1BVIGVtdWxhdG9yIGluIFdpbmUgd291bGQgYmUgZXh0cmVtZWx5IGhhcmQsCiAgICAgICAgICBkdWUgdG8gdGhlIGxhcmdlIG51bWJlciBvZiBXaW5kb3dzIEFQSXMgYW5kIHRoZSBjb21wbGV4CiAgICAgICAgICBkYXRhIHR5cGVzIHRoZXkgZXhjaGFuZ2UuIEl0IGlzIG5vdCB1bmNvbW1vbiBmb3IgYSBXaW5kb3dzIEFQSSB0bwogICAgICAgICAgdGFrZSB0aHJlZSBvciBtb3JlIHBvaW50ZXJzIHRvIHN0cnVjdHVyZXMgY29tcG9zZWQgb2YgbWFueSBmaWVsZHMsCiAgICAgICAgICBpbmNsdWRpbmcgcG9pbnRlcnMgdG8gb3RoZXIgY29tcGxleCBzdHJ1Y3R1cmVzLiBGb3IgZWFjaCBvZiB0aGVzZQogICAgICAgICAgd2Ugd291bGQgbmVlZCBhIGNvbnZlcnNpb24gcm91dGluZSB0byBkZWFsIHdpdGggdGhlIGJ5dGUgb3JkZXIgYW5kCiAgICAgICAgICBhbGlnbm1lbnQgaXNzdWVzLiBGdXJ0aGVybW9yZSwgV2luZG93cyBhbHNvIGNvbnRhaW5zIG1hbnkgY2FsbGJhY2sKICAgICAgICAgIG1lY2hhbmlzbXMgdGhhdCBjb25zdGl0dXRlIGFzIG1hbnkgZXh0cmEgcGxhY2VzIHdoZXJlIHdlIHdvdWxkIGhhdmUKICAgICAgICAgIHRvIGhhbmRsZSB0aGVzZSBjb252ZXJzaW9uIGlzc3Vlcy4gV2luZSBhbHJlYWR5IGhhcyB0byBkZWFsIHdpdGgKICAgICAgICAgIDE2IHZzLiAzMiBiaXQgQVBJcyBhbmQgQW5zaSB2cy4gVW5pY29kZSBBUElzIHdoaWNoIGJvdGgKICAgICAgICAgIGludHJvZHVjZSBzaWduaWZpY2FudCBjb21wbGV4aXR5LiBBZGRpbmcgc3VwcG9ydCBmb3IgYSBDUFUgZW11bGF0b3IKICAgICAgICAgIGluc2lkZSBXaW5lIHdvdWxkIGludHJvZHVjZSBhdCBsZWFzdCBkb3VibGUgdGhhdCBjb21wbGV4aXR5IGFuZAogICAgICAgICAgb25seSBzZXJ2ZSB0byBzbG93IGRvd24gdGhlIGRldmVsb3BtZW50IG9mIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9ydHVuYXRlbHkgYW5vdGhlciBzb2x1dGlvbiBleGlzdHMgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zCiAgICAgICAgICBvbiBub24teDg2IHBsYXRmb3JtczogcnVuIGJvdGggV2luZSBhbmQgdGhlIGFwcGxpY2F0aW9uIGluc2lkZSB0aGUKICAgICAgICAgIENQVSBlbXVsYXRvci4gQXMgbG9uZyBhcyB0aGUgZW11bGF0b3IgcHJvdmlkZXMgYSBzdGFuZGFyZCBVbml4CiAgICAgICAgICBlbnZpcm9ubWVudCwgV2luZSBzaG91bGQgb25seSBuZWVkIG1pbmltYWwgbW9kaWZpY2F0aW9ucy4gV2hhdAogICAgICAgICAgcGVyZm9ybWFuY2UgeW91IGxvc2UgZHVlIHRvIFdpbmUgcnVubmluZyBpbnNpZGUgdGhlIGVtdWxhdG9yCiAgICAgICAgICByYXRoZXIgdGhhbiBuYXRpdmVseSwgeW91IGdhaW4gaW4gY29tcGxleGl0eSBpbnNpZGUgb2YgV2luZS4KICAgICAgICAgIEZ1cnRoZXJtb3JlLCBpZiB0aGUgZW11bGF0b3IgaXMgZmFzdCBlbm91Z2ggdG8gcnVuIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucywgUGhvdG9zaG9wIGZvciBpbnN0YW5jZSwgdGhlbiBpdCBzaG91bGQgYmUgZmFzdCBlbm91Z2gKICAgICAgICAgIHRvIHJ1biB0aGF0IHNhbWUgV2luZG93cyBhcHBsaWNhdGlvbiBwbHVzIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHdvIHByb2plY3RzIGhhdmUgc3RhcnRlZCBhbG9uZyB0aG9zZSBsaW5lczogPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly9mYWJyaWNlLmJlbGxhcmQuZnJlZS5mci9xZW11LyI+UUVNVTwvPiwgYW4KICAgICAgICAgIG9wZW4tc291cmNlIHByb2plY3QsIGFuZCA8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vdGVjaF9vdmVydmlldy5odG0iPkR5bmFtaXRlPC8+LAogICAgICAgICAgYSBjb21tZXJjaWFsIENQVSBlbXVsYXRvciBlbnZpcm9ubWVudCBmcm9tCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnRyYW5zaXRpdmVzLmNvbS8iPlRyYW5zaXRpdmVzIFRlY2hub2xvZ2llczwvPi4KICAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LXdvdWxkLWFueW9uZS13YW50LVdpbmUtV2luZG93cy1zdWNrIj4KICAgICAgICA8cGFyYT5XaHkgd291bGQgYW55b25lIHdhbnQgV2luZT8gRG9lc24ndCBXaW5kb3dzIHN1Y2s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRmlyc3QgV2luZSBpcyBub3QgYWJvdXQgcnVubmluZyBXaW5kb3dzIGJ1dCBhYm91dCBydW5uaW5nIFdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU28gaWYgYWxsIHlvdXIgY29tcHV0aW5nIG5lZWRzIGFyZSBmdWxmaWxsZWQgYnkgbmF0aXZlIFVuaXggCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIHRoZW4geW91IGRvIG5vdCBuZWVkIFdpbmUgYW5kIHNob3VsZCBub3QgYmUgdXNpbmcKICAgICAgICAgIGl0LiBIb3dldmVyLCBpZiB5b3UgZGVwZW5kIG9uIG9uZSBvciBtb3JlIG9mIHRoZSB0ZW5zIG9mIAogICAgICAgICAgdGhvdXNhbmRzIG9mIFdpbmRvd3MgYXBwbGljYXRpb25zLCB0aGVuIFdpbmUgaXMgdGhlIGJlc3Qgd2F5IHRvCiAgICAgICAgICB1c2UgaXQgd2l0aG91dCBnaXZpbmcgdXAgb24gVW5peC4gTGV0J3MgbG9vayBhdCB0aGUgYWx0ZXJuYXRpdmVzCiAgICAgICAgICB0byBzZWUgd2h5OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBtb3N0IG9idmlvdXMgYWx0ZXJuYXRpdmUgaXMgdG8gZHVhbC1ib290LiBUaGlzIGlzIHRoZSBzb2x1dGlvbgogICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgYmVzdCBjb21wYXRpYmlsaXR5LiBIb3dldmVyIGl0IHJlcXVpcmVzIHRoYXQgeW91CiAgICAgICAgICBhY3F1aXJlIGEgV2luZG93cyBsaWNlbnNlIGFuZCB0aGVuIGRlZGljYXRlIGEgZ29vZCBjaHVuayBvZiB5b3VyIAogICAgICAgICAgaGFyZC1kcml2ZSB0byBXaW5kb3dzLiBCdXQgdGhlIHdvcnN0IGlzIHlldCB0byBjb21lLiBFYWNoIHRpbWUgeW91CiAgICAgICAgICB3aWxsIHdhbnQgdG8gdXNlIHRoYXQgYXBwbGljYXRpb24geW91IHdpbGwgaGF2ZSB0byByZWJvb3QgdG8gCiAgICAgICAgICBXaW5kb3dzLiBUaGlzIGlzIGVzcGVjaWFsbHkgc2lnbmlmaWNhbnQgaWYgZXh0ZXJuYWwgZmFjdG9ycyBkaWN0YXRlCiAgICAgICAgICB3aGVuIHlvdSBtdXN0IHVzZSB0aGlzIGFwcGxpY2F0aW9uIChlLmcuIGNyZWRpdCBjYXJkIHRvIHByb2Nlc3MsIAogICAgICAgICAgZW1haWwgdG8gcmV0cmlldmUgZnJvbSBhIExvdHVzIE5vdGVzIHNlcnZlcikuIFRoZW4geW91IHdpbGwgZmluZAogICAgICAgICAgeW91cnNlbGYgZm9yY2VkIHRvIGNsb3NlIGFsbCB5b3VyIExpbnV4IGFwcGxpY2F0aW9ucyBqdXN0IHRvIHJ1bgogICAgICAgICAgdGhhdCBvbmUgV2luZG93cyBhcHBsaWNhdGlvbi4gWW91IG1heSBxdWlja2x5IGdldCB0aXJlZCBvZiB0aGlzLCBvcgogICAgICAgICAgd2lsbCBmaW5kIHRoYXQgc3VjaCBhIHNpdHVhdGlvbiBpcyBpbXBvc3NpYmxlIHRvIGp1c3RpZnkgaW4gYSAKICAgICAgICAgIGJ1c2luZXNzIGVudmlyb25tZW50LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBuZXh0IHNvbHV0aW9uIGlzIHRvIGluc3RhbGwgdmlydHVhbCBtYWNoaW5lIGVtdWxhdGlvbiBzb2Z0d2FyZQogICAgICAgICAgc3VjaCBhcyBWTVdhcmUsIFdpbjRMaW4gb3IgUGxleDg2LiBUaGVuIHlvdSBjYW4gdXNlIHdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgd2l0aG91dCBzdWZmZXJpbmcgc3VjaCBhIGJpZyBkaXNydXB0aW9uLiBCdXQgaXQgc3RpbGwKICAgICAgICAgIHJlcXVpcmVzIHRoYXQgeW91IGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIGRlZGljYXRlIGFzIG11Y2ggCiAgICAgICAgICBkaXNrIHNwYWNlIHRvIFdpbmRvd3MuIEZ1cnRoZXJtb3JlIHlvdSB3aWxsIHBheSBmb3IgdGhlIGFkZGVkIAogICAgICAgICAgY29udmVuaWVuY2U6IGlmIHVzaW5nIFZNV2FyZSBvciBXaW40TGluIHlvdSBoYXZlIHRvIGJ1eSBhbm90aGVyIAogICAgICAgICAgbGljZW5zZSwgYW5kIG1vcmUgaW1wb3J0YW50bHkgeW91IG5vdyBoYXZlIHRvIGRlZGljYXRlIGEgZ29vZCBjaHVuawogICAgICAgICAgb2YgeW91ciBjb21wdXRlcidzIG1lbW9yeSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLiBQZXJmb3JtYW5jZSB3aWxsCiAgICAgICAgICB0YWtlIGEgc2lnbmlmaWNhbnQgaGl0IHRvby4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2luZyBXaW5lIGxldHMgeW91IGF2b2lkIGFsbCBvZiB0aGF0IG92ZXJoZWFkOiBXaW5kb3dzIGxpY2Vuc2UsCiAgICAgICAgICBoYXJkLWRyaXZlIHNwYWNlIHJlcXVpcmVkIGJ5IFdpbmRvd3MsIG1lbW9yeSBhbmQgcGVyZm9ybWFuY2UgaGl0IAogICAgICAgICAgdGFrZW4gYnkgZW11bGF0ZWQgdmlydHVhbCBtYWNoaW5lcy4gTm93IHlvdSBjYW4gc3RhcnQgeW91ciBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiBzdHJhaWdodCBmcm9tIHlvdXIgcmVndWxhciBkZXNrdG9wIGVudmlyb25tZW50LCBwbGFjZQogICAgICAgICAgdGhhdCBhcHBsaWNhdGlvbidzIHdpbmRvdyBzaWRlIGJ5IHNpZGUgd2l0aCBuYXRpdmUgYXBwbGljYXRpb25zLAogICAgICAgICAgY29weS9wYXN0ZSBmcm9tIG9uZSB0byB0aGUgb3RoZXIsIGFuZCBydW4gaXQgYWxsIGF0IGZ1bGwgc3BlZWQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMgYWxzbyBhIHByZXR0eSB2aXRhbCBwYXJ0IG9mIG1pZ3JhdGluZyBhIGxhcmdlIG9yZ2FuaXphdGlvbiwKICAgICAgICAgIHlvdSBjYW4ndCBjaGFuZ2UgYSA1MDAwIGRlc2t0b3Agc2V0dXAgb3Zlcm5pZ2h0IHdpdGhvdXQgYSBsb3Qgb2Ygcmlzay4KICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVc2UtV2luZG93cy1kcml2ZXItd2l0aC1XaW5lIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB0byBtYWtlIHRoZSBXaW5kb3dzIGRyaXZlciBmb3IgbXkgbmV0d29yayBjYXJkIC8KICAgICAgICAgIGdyYXBoaWNzIGNhcmQgLyBzY2FubmVyIC8gZXRjLiB3b3JrIG9uIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGdvYWwgb2YgV2luZSBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucwogICAgICAgICAgb24gVW5peCwgbm90IFdpbmRvd3MgZHJpdmVycyBvciBWeERzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERyaXZlcnMgYW5kIFdpbmRvd3MgYXBwbGljYXRpb25zIGJlbG9uZyB0byBkaWZmZXJlbnQgd29ybGRzLgogICAgICAgICAgQXBwbGljYXRpb25zIHJ1biBpbiB1c2VyIG1vZGUgYW5kIHVzZSB0aGUgQVBJcyBwcm92aWRlZCBieQogICAgICAgICAgdGhlIGtlcm5lbCBhbmQgdGhlIG90aGVyIHVzZXIgbW9kZSBkbGxzLiBJbiBjb250cmFzdCwgZHJpdmVycwogICAgICAgICAgYXJlIGxvYWRlZCBpbiB0aGUgV2luZG93cyBrZXJuZWwsIGkuZS4gaW4gcmluZyAwIGluc3RlYWQgb2YgcmluZwogICAgICAgICAgMywgZHJpdmVycyBoYXZlIHRvIGRlYWwgd2l0aCBzcGVjaWZpYyBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMsIGFuZCB1c2UKICAgICAgICAgIGluc3RydWN0aW9ucyBub3QgYXZhaWxhYmxlIHRvIHJlZ3VsYXIgYXBwbGljYXRpb25zLiBUaGlzIG1lYW5zCiAgICAgICAgICB0aGV5IHdvdWxkIG5vdCBiZSBhYmxlIHRvIHJ1biBpbiBXaW5lIHNpbmNlIFdpbmUgcnVucyBlbnRpcmVseQogICAgICAgICAgaW4gdXNlciBtb2RlLiBSYXRoZXIgeW91IHdvdWxkIGhhdmUgdG8gbW9kaWZ5IHRoZSBMaW51eCBrZXJuZWwuCiAgICAgICAgICBCdXQgaW4gYWRkaXRpb24sIGRyaXZlcnMgdXNlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgQVBJIGZyb20KICAgICAgICAgIHJlZ3VsYXIgV2luZG93cyBhcHBsaWNhdGlvbnMuIFNvIHRoZSB3b3JrIHBlcmZvcm1lZCBvbiBXaW5lIHdvdWxkCiAgICAgICAgICBub3QgZXZlbiBiZSBvZiBhbnkgdXNlIGZvciBzdWNoIGEgcHJvamVjdC4gSW4gb3RoZXIgd29yZHMsIG1ha2luZwogICAgICAgICAgaXQgcG9zc2libGUgdG8gdXNlIFdpbmRvd3MgZHJpdmVycyBvciBWeERzIG9uIFVuaXggd291bGQgYmUgYQogICAgICAgICAgY29tcGxldGVseSBzZXBhcmF0ZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIHJldXNlIFdpbmRvd3MgZHJpdmVycyBvbiBhIG5vbi1NaWNyb3NvZnQKICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gd2UgcmVjb21tZW5kIHRoYXQgeW91IGhhdmUgYSBsb29rIGF0CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvPi4KICAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hpY2gtb25lLW9mLXRoZS1kaWZmZXJlbnQtV2luZS1wYWNrYWdlcyI+CiAgICAgICAgPHBhcmE+V2hpY2ggb25lIG9mIHRoZSBkaWZmZXJlbnQgV2luZSBwYWNrYWdlcyBvdXQgdGhlcmUgaXMgZ29vZCBmb3IgbWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudGx5IHRoZXJlIGlzIGEgYnJvYWQgc2VsZWN0aW9uIG9mIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzL3ZlcnNpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8dmFyaWFibGVsaXN0PgoKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPldpbmU8L3VsaW5rPjwvdGVybT4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgInN0YW5kYXJkIiBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMKICAgICAgICAgICAgICB0aGUgTEdQTCwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIEJvdGggc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzCiAgICAgICAgICAgICAgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZG93bmxvYWQgc2VjdGlvbiBvZiB0aGUgc2l0ZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgYW5kIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLiAKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgoKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc0dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zR2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgsIG1pbmltdW0gdGhyZWUgbW9udGhzKS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vc2l0ZS9wcm9kdWN0cy9jeG9mZmljZS8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFdpbmUgdmVyc2lvbiB3aXRoIHNwZWNpYWwgcGFja2FnaW5nIHRvIG1ha2Ugc3VyZSBhbG1vc3QgYWxsIAogICAgICAgICAgICAgIGltcG9ydGFudCBPZmZpY2UgdHlwZSBwcm9ncmFtcyB3b3JrIHByZXR0eSB3ZWxsLiBDb3N0cyAkNzQuOTUgCiAgICAgICAgICAgICAgZm9yIHRoZSBQcm8gdmVyc2lvbiBhbmQgJDM5Ljk1IGZvciB0aGUgU3RhbmRhcmQgdmVyc2lvbi4KICAgICAgICAgICAgICBTZWVtcyB0byBiZSB3ZWxsIHdvcnRoIGl0IHNvIGZhciBhY2NvcmRpbmcgdG8gc29tZSBjb21tZW50cy4gCiAgICAgICAgICAgICAgKG5vdGU6IHlvdSdyZSBzdXBwb3J0aW5nIGEgY29tcGFueSBhY3RpdmVseSBjb250cmlidXRpbmcgdG8gV2luZQogICAgICAgICAgICAgIGlmIHlvdSBkZWNpZGUgdG8gYnV5IENyb3NzT3Zlci4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3NpdGUvcHJvZHVjdHMvY3hzZXJ2ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NPdmVyIE9mZmljZSBTZXJ2ZXIgRWRpdGlvbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEFsbG93cyB5b3UgdG8gcnVuIHlvdXIgZmF2b3JpdGUgV2luZG93cyBwcm9kdWN0aXZpdHkgYXBwbGljYXRpb25zIGluIAogICAgICAgICAgICAgYSBkaXN0cmlidXRlZCB0aGluLWNsaWVudCBlbnZpcm9ubWVudCB1bmRlciBMaW51eC4gU2VydmVyIEVkaXRpb24gaXMgCiAgICAgICAgICAgICBhbHNvIGEgZ3JlYXQgYWRkaXRpb24gdG8gU29sYXJpcyBlbnZpcm9ubWVudHMsIHNpbmNlIHRoZXJlIGJ1aWx0LWluIAogICAgICAgICAgICAgc3VwcG9ydCBmb3IgU29sYXJpcyBkZXNrdG9wcyBtYWtlcyBydW5uaW5nIFdpbmRvd3MgYXBwbGljYXRpb25zIGEgCiAgICAgICAgICAgICBwb3NzaWJpbGl0eSBvbiBTdW4gd29ya3N0YXRpb25zIGFzIHdlbGwuIEZvciBwcmljaW5nIGp1c3QgZm9sbG93IHRoaXMgbGluazogCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9zaXRlL3Byb2R1Y3RzL3ByaWNpbmcvIj5Dcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uIFByaWNpbmc8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAoKICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXRzLXRoZS1oaXN0b3J5LW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQncyB0aGUgaGlzdG9yeSBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIHByb2plY3Qgc3RhcnRlZCBpbiAxOTkzIGFzIGEgd2F5IHRvIHN1cHBvcnQgcnVubmluZyBXaW5kb3dzIDMuMQogICAgICAgICAgcHJvZ3JhbXMgb24gTGludXguIEJvYiBBbXN0YWR0IHdhcyB0aGUgb3JpZ2luYWwgY29vcmRpbmF0b3IsIGJ1dCB0dXJuZWQKICAgICAgICAgIGl0IG92ZXIgZmFpcmx5IGVhcmx5IG9uIHRvIEFsZXhhbmRyZSBKdWxsaWFyZCwgd2hvIGhhcyBydW4gaXQgZXZlciAKICAgICAgICAgIHNpbmNlLiBBIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj5uZXdzZ3JvdXA8L3VsaW5rPgogICAgICAgICAgd2FzIGNyZWF0ZWQgaW4gSnVseSAxOTk0LiBPdmVyIHRoZSB5ZWFycywgcG9ydHMgZm9yCiAgICAgICAgICBvdGhlciBVbml4ZXMgaGF2ZSBiZWVuIGFkZGVkLCBhbG9uZyB3aXRoIHN1cHBvcnQgZm9yIFdpbjMyIGFzIFdpbjMyIAogICAgICAgICAgYXBwbGljYXRpb25zIGJlY2FtZSBwb3B1bGFyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQ8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+dGhlIERvd25sb2FkIHBhZ2U8L3VsaW5rPgogICAgICAgICAgZm9yIHNvbWUgb2YgdGhlc2UgY2hvaWNlcyksIHlvdSBjYW4gbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBnZXR0aW5nIAogICAgICAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uIGJ5IHdhdGNoaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gTWF5IDUsIDIwMDQKICAgICAgICAgIHdhcyBjYWxsZWQgV2luZS0yMDA0MDUwNS50YXIuZ3ouIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZS4gSWYKICAgICAgICAgIHlvdSBhcmUgY3VycmVudCB0byB0aGUgcHJldmlvdXMgdmVyc2lvbiwgeW91IGNhbiBkb3dubG9hZCBhbmQgYXBwbHkgCiAgICAgICAgICBqdXN0IHRoZSBjdXJyZW50IHBhdGNoIGZpbGUgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBuZXcgZGlzdHJpYnV0aW9uLgogICAgICAgICAgVGhlIHBhdGNoIGZpbGUgbmFtZXMgZm9sbG93IHRoZSBzYW1lIGNvbnZlbnRpb25zIGFzIHRoZSBtb250aGx5IAogICAgICAgICAgZGlzdHJpYnV0aW9uLiA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9jdnMiPgogICAgICAgICAgUmVhZC1vbmx5IENWUzwvdWxpbms+IGFjY2VzcyBpcyBhbHNvIGF2YWlsYWJsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jdXJyZW50LVN0YXR1cy1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IFN0YXR1cyBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIG1pZCAyMDA0LCBXaW5lIGNvbnNpc3RzIG9mIGFib3V0IDEuNiBtaWxsaW9uIGxpbmVzIG9mIGNvZGUsCiAgICAgICAgICB3cml0dGVuIGJ5IG1vcmUgdGhhbiA2MDAgZGV2ZWxvcGVycyBmcm9tIGRvemVucyBvZiBjb3VudHJpZXMgYXJvdW5kCiAgICAgICAgICB0aGUgd29ybGQuIFdpbmUgaXMgaW4gYWN0aXZlIHVzZSBieSBhbiBlc3RpbWF0ZWQgMTAwSyBwZW9wbGUuIFdpbmUKICAgICAgICAgIGltcGxlbWVudHMgbW9yZSB0aGFuIDkwJSBvZiB0aGUgY2FsbHMgaW4gcG9wdWxhciBXaW5kb3dzIAogICAgICAgICAgc3BlY2lmaWNhdGlvbnMgc3VjaCBhcyBFQ01BLTIzNCBhbmQgT3BlbjMyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBtYXkgYWxzbyB3YW50IHRvIGxvb2sgYXQgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9zdGF0dXMiPgogICAgICAgICAgU3RhdHVzIHBhZ2U8L3VsaW5rPiBmb3IgYSBnbG9iYWwgdmlldyBvbiBXaW5lJ3MgaW1wbGVtZW50YXRpb24gcHJvZ3Jlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlbi13aWxsLVdpbmUtYmUtZmluaXNoZWQiPgogICAgICAgIDxwYXJhPldoZW4gd2lsbCBXaW5lIGJlIGZpbmlzaGVkPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExhcmdlIHNvZnR3YXJlIHByb2plY3RzIGFyZSBuZXZlciBmaW5pc2hlZCwgb25seSByZWxlYXNlZC4gSW4gYW55CiAgICAgICAgICBjYXNlIFdpbmUgaXMgY2hhc2luZyBhIG1vdmluZyB0YXJnZXQgc2luY2UgZXZlcnkgbmV3IHJlbGVhc2Ugb2YgCiAgICAgICAgICBXaW5kb3dzIGNvbnRhaW5zIG5ldyBBUEkgY2FsbHMgb3IgdmFyaWF0aW9ucyBvbiB0aGUgZXhpc3Rpbmcgb25lcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZWNhdXNlIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIGJ5IHZvbHVudGVlcnMsIGl0IGlzIGRpZmZpY3VsdCB0bwogICAgICAgICAgcHJlZGljdCB3aGVuIGl0IHdpbGwgYmUgcmVhZHkgZm9yIGdlbmVyYWwgcmVsZWFzZS4gQnV0IGR1ZSB0byB0aGUKICAgICAgICAgIG11Y2ggaW5jcmVhc2VkIGludGVyZXN0IGJ5IGNvbXBhbmllcyBpbiBwb3J0aW5nIGFwcHMgdmlhIFdpbmUsIFdpbmUKICAgICAgICAgIGRldmVsb3BtZW50IGlzIGNvbnN0YW50bHkgZ2V0dGluZyBtb3JlIGFuZCBtb3JlIGFjdGl2ZS4gUmlnaHQgbm93CiAgICAgICAgICB3ZSBhcmUgd29ya2luZyBvbiByZWxlYXNpbmcgV2luZSAwLjkgUmVhbCBTb29uIE5vdyh0bSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hvLWlzLXJlc3BvbnNpYmxlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5XaG8gaXMgcmVzcG9uc2libGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBhdmFpbGFibGUgdGhhbmtzIHRvIHRoZSB3b3JrIG9mIG1hbnkgcGVvcGxlLiBQbGVhc2Ugc2VlIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9BVVRIT1JTIj5BVVRIT1JTPC91bGluaz4KICAgICAgICAgIGZpbGUgaW4gdGhlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGNvbXBsZXRlIGxpc3QuIFNvbWUgY29tcGFuaWVzIHRoYXQKICAgICAgICAgIGFyZSBvciBoYXZlIGJlZW4gaW52b2x2ZWQgd2l0aCBXaW5lIGRldmVsb3BtZW50IGFyZSBDb2RlV2VhdmVycywKICAgICAgICAgIFRyYW5zR2FtaW5nLCBDb3JlbCwgYW5kIE1hY2FkYW1pYW4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iZm9sa3Mtd2hvLWNvbnRyaWJ1dGVkLW1vbmV5LW9yLWVxdWlwbWVudCI+CiAgICAgICAgPHBhcmE+V2hvIGFyZSB0aGUgZm9sa3MgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgY29udHJpYnV0ZWQgbW9uZXkgb3IgZXF1aXBtZW50IHRvIHRoZSBXaW5lIHByb2plY3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGVvcGxlIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGdpdmVuIGdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgb2YKICAgICAgICAgIG1vbmV5LCBlcXVpcG1lbnQsIG9yIGxpY2Vuc2VzLCBpbmNsdWRlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5EYXZpZCBMLiBIYXJwZXI8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Cb2IgSGVwcGxlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+TWFyayBBLiBIb3J0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5LZXZpbiBQLiBMYXd0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5UaGUgU3ludHJvcHkgSW5zdGl0dXRlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+SmFtZXMgV291bGZlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBWTVdhcmUgSW5jLiAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cudm13YXJlLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvcmVsICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvcmVsLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LmNvcmVsLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvZGVXZWF2ZXJzCiAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vIj5odHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC11bmRvY3VtZW50ZWQtQVBJcy1hcmUtbm90LXVuZGVyc3Rvb2QiPgogICAgICAgIDxwYXJhPldoYXQgdW5kb2N1bWVudGVkIEFQSXMgLyBpbnRlcmZhY2VzIGFyZSBub3QgdW5kZXJzdG9vZD8gV291bGQKICAgICAgICAgICAgICBzZWVpbmcgTWljcm9zb2Z0IHNvdXJjZSBoZWxwPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBiZXN0IHdvdWxkIGJlIGlmIHRoZSBXaW5kb3dzIEFQSSB3YXMgZnVsbHkgZG9jdW1lbnRlZCwgc28gV2luZQogICAgICAgICAgY291bGQgYmUgYSBwZXJmZWN0ICJjbGVhbi1yb29tIiBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBzb3VyY2UKICAgICAgICAgIGNvZGUgbWlnaHQgbWFrZSBpdCBoYXJkZXIgdG8gcHJvdmUgdGhhdCBubyBjb3B5cmlnaHQgdmlvbGF0aW9ucyBoYXZlCiAgICAgICAgICB0YWtlbiBwbGFjZS4gVGhhdCBzYWlkLCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBvZnRlbiBiYWQsIG5vbmV4aXN0ZW50LAogICAgICAgICAgYW5kIGV2ZW4gbWlzbGVhZGluZyB3aGVyZSBpdCBleGlzdHMsIHNvIGEgZmFpciBhbW91bnQgb2YgcmV2ZXJzZQogICAgICAgICAgZW5naW5lZXJpbmcgaGFzIGJlZW4gbmVjZXNzYXJ5LCBwYXJ0aWN1bGFybHkgaW4gdGhlIHNoZWxsIChFeHBsb3JlcikKICAgICAgICAgIGludGVyZmFjZS4gVGhlIGJpZ2dlc3QgcHJvYmxlbSBmYWNpbmcgV2luZSB0aG91Z2ggaXMgc2ltcGx5IGxhY2sgb2YKCSAgbWFucG93ZXIuIEF0IG9uZSBwb2ludCwgb3ZlciA1MDAwIHBlb3BsZSB3ZXJlIHdvcmtpbmcgb24gV2luZG93cyAyMDAwLgoJICBXaGlsZSBXaW5lIGRvZXNuJ3QgbmVlZCB0byByZXBsaWNhdGUgYWxsIG9mIFdpbmRvd3MgKHdlIG9ubHkgY292ZXIgdGhlCgkgIHBhcnRzIG5lZWRlZCB0byBtYWtlIFdpbmRvd3MgcHJvZ3JhbXMgd29yayksIHRoYXQncyBzdGlsbCBuZWFybHkgMTAgdGltZXMKCSAgbW9yZSBwZW9wbGUgd29ya2luZyBzaW1wbHkgb24gb25lIHJlbGVhc2UgdGhhbiBoYXZlIDxlbXBoYXNpcz5ldmVyPC9lbXBoYXNpcz4KCSAgd29ya2VkIG9uIFdpbmUsIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtVHJhbnNHYW1pbmdzLWxhc3QtcGF0Y2gtaW5jbHVkZWQtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SXMgVHJhbnNHYW1pbmcncyBsYXRlc3QgcGF0Y2ggaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIFdpbmUgcmVsZWFzZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBObywgaXQncyBub3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJhbnNHYW1pbmcgbWFrZXMgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UgYW5kIHRoZSBsaWNlbnNlCiAgICAgICAgICBvZiB0aGVpciBXaW5lWCB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5lIGxpY2Vuc2UuIFRodXMKICAgICAgICAgIFdpbmVYIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgdGhlIFdpbmUgdHJlZS4gSG93ZXZlciBpdCBzZWVtcyBoaWdobHkgdW5saWtlbHkgdGhleSB3aWxsIGV2ZXIgc3VibWl0IHRoZWlyCiAgICAgICAgICBEaXJlY3QzRCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtdGhlcmUtYmUtYS1XaW5kb3dzLXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvbWUgcGVvcGxlIGFyZSB3b3JraW5nIG9uIGdldHRpbmcgV2luZSBjb2RlIHRvIGNvbXBpbGUgb24gV2luZG93cwogICAgICAgICAgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvamVjdHMgYXMgYSBiYXNpczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEN5Z3dpbgogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cuY3lnd2luLmNvbS8iPmh0dHA6Ly93d3cuY3lnd2luLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNaW5HVwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGFydCBvZiB0aGUgcmF0aW9uYWxlIGZvciB0aGVzZSBwcm9qZWN0cyBpcyB0byBmaW5kIG91dCBhcmVhcyB3aGVyZQogICAgICAgICAgV2luZSBwb3J0YWJpbGl0eSBpcyBsYWNraW5nLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBvZiB0aGUKICAgICAgICAgIFJlYWN0T1MgcHJvamVjdCB3aGljaCBpcyBhIHJlaW1wbGVtZW50YXRpb24gb2YgdGhlIFdpbmRvd3Mga2VybmVsCiAgICAgICAgICBhbmQgc2hvdWxkIHRodXMgYmUgYWJsZSB0byByZXVzZSBtb3N0IG9mIFdpbmUgZGxscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbm90aGVyIHJlYXNvbiBmb3IgcHVyc3VpbmcgdGhlc2UgcHJvamVjdHMgaXMgdG8gYmUgYWJsZSB0bwogICAgICAgICAgcmVwbGFjZSBhIHNpbmdsZSBXaW5kb3dzIGRsbCB3aXRoIGl0cyBXaW5lIGNvdW50ZXJwYXJ0LiBCZXNpZGVzCiAgICAgICAgICBiZWluZyBhIGdvb2QgdGVzdCBmb3IgdGhlIFdpbmUgZGxsLCB0aGlzIGxldHMgdXMgZGV0ZWN0IGNhc2VzIHdoZXJlCiAgICAgICAgICB3ZSBtYWRlIGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIGRsbHMgaW50ZXJhY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLW5hdGl2ZS1kcml2ZXJzIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZG93cyBwcmludGVyIGRyaXZlcnMgaW4gV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOYXRpdmUgcHJpbnRlciBkcml2ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBBdCBvbmUgdGltZSBXaW5lIHN1cHBvcnRlZCAxNmJpdCAKICAgICAgICAgIG5hdGl2ZSBkcml2ZXJzIGJ1dCB0aGF0IHdhcyBsb25nIGFnby4gV2luZSB1c2VzIHRoZSBwcmludGVycyAoYW5kIG90aGVyIAogICAgICAgICAgZGV2aWNlcykgaW5zdGFsbGVkIGluIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4gRm9yIHRoZSBtb3N0IHBhcnQgaWYgeW91IGRvbid0IAogICAgICAgICAgaGF2ZSB0aGUgZGV2aWNlIGluc3RhbGxlZCBvbiB5b3VyIE9TIHRoZW4gd2luZSBjYW4ndCB1c2UgaXQuIAogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJXaGF0LWRvLUktbmVlZC1pbi1vcmRlci10by11c2UtV2luZSI+CiAgICAgIDx0aXRsZT5XaGF0IGRvIEkgbmVlZCBpbiBvcmRlciB0byB1c2UgV2luZT88L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVbmRlci13aGF0LXBsYXRmb3Jtcy13aWxsLVdpbmUtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVuZGVyIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm0ocykgYW5kIG9wZXJhdGluZyBzeXN0ZW0ocykgd2lsbAogICAgICAgICAgV2luZShMaWIpIHJ1bj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBzcGVjaWZpY2FsbHkgdG8gcnVuIG9uIHRoZSA8ZW1waGFzaXM+SW50ZWwKICAgICAgICAgIHg4NjwvZW1waGFzaXM+IGNsYXNzIG9mIENQVXMgdW5kZXIgY2VydGFpbiBVTklYZXMgdGhhdCBydW4gb24gdGhpcwogICAgICAgICAgcGxhdGZvcm0uIFdpbmVsaWIgaG93ZXZlciBpcyBjYXBhYmxlIG9mIHBvcnRpbmcgdGhlIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyA8ZW1waGFzaXM+c291cmNlIGNvZGU8L2VtcGhhc2lzPiB0byBvdGhlciBwbGF0Zm9ybXMKICAgICAgICAgIGFsc28sIG5vdCBvbmx5IHg4Ni4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaHVzIHJ1bm5pbmcgV2luZG93cyBiaW5hcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gTWFjIE9TIFggb24KICAgICAgICAgIFBvd2VyUEMpIHVzaW5nIGp1c3QgV2luZSBpcyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gcG9zc2libGUuIFlvdQogICAgICAgICAgd291bGQgaGF2ZSB0byBlaXRoZXIgcnVuIFdpbmUgaW4gYW4gZW11bGF0ZWQgeDg2IGVudmlyb25tZW50IG9yCiAgICAgICAgICB0YWtlIHRoZSBXaW5kb3dzIGFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGFuZCByZWNvbXBpbGUgaXQgdXNpbmcKICAgICAgICAgIFdpbmVsaWIuCgk8L3BhcmE+Cgk8cGFyYT4KCSAgVGhlc2UgYXJlIHRoZSBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IFdpbmUuCgkgIFdpbmVsaWIgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zIGtlZXBzIGV2b2x2aW5nLAoJICBzbyBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgbGlzdGVkIGhlcmUuCgk8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOZXRCU0QsIE9wZW5CU0QsIFVuaXhXYXJlLCBhbmQgU0NPIE9wZW5TZXJ2ZXIgNSB3b3JrZWQgYXQgb25lIHRpbWUsCiAgICAgICAgICBidXQgV2luZSBub3cgcmVxdWlyZXMga2VybmVsLWxldmVsIHRocmVhZHMgd2hpY2ggYXJlIG5vdCBjdXJyZW50bHkgCiAgICAgICAgICBhdmFpbGFibGUgKG9yIHVuZGVyc3Rvb2QgYnkgdGhlIFdpbmUgdGVhbSkgb24gdGhvc2UgcGxhdGZvcm1zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGRldmVsb3BtZW50IHRlYW0gaG9wZXMgdG8gYXR0cmFjdCB0aGUgaW50ZXJlc3Qgb2Ygb3RoZXIKICAgICAgICAgIGNvbW1lcmNpYWwgVU5JWCBhbmQgVU5JWCBjbG9uZSB2ZW5kb3JzIGFzIHdlbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVPUzogcG9ydGluZyBlZmZvcnRzIChCZVdpbmUpIHVzZWQgdG8gYmUgcHJldHR5IHN0cm9uZywgYnV0IEJlT1MKICAgICAgICAgIGhhcyBzZXZlcmUgbGltaXRhdGlvbnMgaW4gVW5peCBjYWxsIHN1cHBvcnQuIFRoZSBkZW1pc2Ugb2YgQmUKICAgICAgICAgIGZ1cnRoZXIgaGFtcGVyZWQgdGhlIHByb2plY3QgdGhvdWdoIGl0IG1pZ2h0IGNvbWUgYmFjayBvbmUgZGF5IG9uCiAgICAgICAgICBvbmUgb2YgdGhlIG9wZW4gQmVPUyBwcm9qZWN0cy4gSW4gYW55IGNhc2UgYSBmdW5jdGlvbmFsIHBvcnQgc2VlbXMKICAgICAgICAgIHVubGlrZWx5IHRvIGV2ZXIgaGFwcGVuIGF0IHRoaXMgc3RhZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFjIE9TIFggLyBEYXJ3aW46IFRoZSA8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL2RhcndpbmUuc291cmNlZm9yZ2UubmV0L3Byb2plY3QuaHRtbCI+RGFyd2luZTwvPiBpcwogICAgICAgICAgY3VycmVudGx5IHdvcmtpbmcgb24gcG9ydGluZyBXaW5lIHRvIHRoZSBEYXJ3aW4veDg2IHBsYXRmb3JtLiBUaGVpcgogICAgICAgICAgZ29hbCBpcyB0byBldmVudHVhbGx5IG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIHg4NiBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gRGFyd2luL1BQQyBhbmQgdGhlbiBNYWMgT1MgWCBieSB1c2luZyBCb2Nocy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGcmVlQlNEOiBUaGlzIHBvcnQgaXMgd2VsbCBtYWludGFpbmVkIGFuZCBzaG91bGQgd29yayB3aXRoCiAgICAgICAgICBsaW1pdGF0aW9ucyBpbiBzcGVjaWZpYyBhcmVhcyAobWFpbmx5IG1pc3NpbmcgZGV2aWNlL2hhcmR3YXJlCiAgICAgICAgICBzdXBwb3J0KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMaW51eC94ODY6IFdvcmtzLCBhbmQgYXMgdGhlIG1vc3QgcG9wdWxhciBwbGF0Zm9ybSBmb3IgYm90aAogICAgICAgICAgZGV2ZWxvcGVycyBhbmQgdXNlcnMsIGl0IGlzIHRoZSBiZXN0IHN1cHBvcnRlZCBwbGF0Zm9ybSBvZiBhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1taW5pbXVtLUNQVS1tdXN0LUktaGF2ZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG1pbmltdW0gQ1BVIG11c3QgSSBoYXZlIGluIG15IGNvbXB1dGVyIHRvIGJlIGFibGUgdG8gcnVuIFdpbmUgCiAgICAgICAgICBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gV2luZSBhbmQgV2luZWxpYiBoZXJlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgd29uJ3QgcnVuIG9uIGFueSB4ODYgQ1BVIGxlc3MgdGhhbiBhbiA4MDM4NiBkdWUgdG8gYWRkcmVzcwogICAgICAgICAgbWFuYWdlbWVudCBsaW1pdGF0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBrbm93biB0byBhbHNvIHdvcmsgaW4gdGhlIDgwNDg2IGFuZCB1cHdhcmRzIGNvbXBhdGlibGUgQ1BVcy4KICAgICAgICAgIFRoZSBiYXNpYyB0ZXN0IGlzLCBpZiB5b3UgY2FuIHJ1biBYMTEgbm93LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyB1bmRlciBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBhbHdheXMsIHRoZSBmYXN0ZXIgeW91ciBDUFUsIHRoZSBiZXR0ZXIuIEhhdmluZyBhIG1hdGggY29wcm9jZXNzb3IKICAgICAgICAgIGlzIHVuaW1wb3J0YW50LiBIb3dldmVyLCBoYXZpbmcgYSBncmFwaGljcyBhY2NlbGVyYXRlZCB2aWRlbyBjYXJkCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgWCB3aWxsIGhlbHAgZ3JlYXRseS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBhcHBsaWNhdGlvbiB5b3UgbWF5IGZpbmQgdGhhdCBmYXN0ZXIgc3BlZWRzIGFyZQogICAgICAgICAgcmVxdWlyZWQgZm9yIHNlbnNpYmxlIHVzZS4gV2UgY2FuJ3QgZ2l2ZSBzcGVjaWZpYyBhZHZpY2Ugb24gdGhhdCBkdWUKICAgICAgICAgIHRvIHRoZSB2YXN0IHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUuIEhvd2V2ZXIgdGhlIHJ1bGUgb2YKICAgICAgICAgIHRodW1iIGlzIHRoYXQgaWYgeW91ciBhcHBsaWNhdGlvbiBydW5zIGZpbmUgb24gV2luZG93cywgaXQgc2hvdWxkCiAgICAgICAgICBydW4gZmluZSBvbiB0aGUgc2FtZSBwbGF0Zm9ybSBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLWRpc2stc3BhY2Utd2lsbC1XaW5lLXRha2UiPgogICAgICAgIDxwYXJhPgogICAgICAgICBIb3cgbXVjaCBkaXNrIHNwYWNlIHdpbGwgdGhlIFdpbmUgc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzIHRha2Ugb24gbXkKICAgICAgICAgaGFyZCBkcml2ZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbmVlZCBhcHByb3hpbWF0ZWx5IDI1MCBtZWdhYnl0ZXMgb2YgZnJlZSBoYXJkIGRyaXZlIHNwYWNlIHRvCiAgICAgICAgICBzdG9yZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGUuIFdpbmUgYWxzbyBuZWVkcyBhYm91dCAxOCBtZWdzIGluCiAgICAgICAgICB5b3VyIC90bXAgZGlyZWN0b3J5LiBBbmQgYWJvdXQgNTAgTUIgYXJlIG5lZWRlZCB0byBkbyBhIG1ha2UgaW5zdGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCaW5hcnkgcGFja2FnZXMsIGVzcGVjaWFsbHkgdGhvc2Ugbm90IGNvbnRhaW5pbmcgZGVidWcgaW5mb3JtYXRpb24sCiAgICAgICAgICBoYXZlIG11Y2ggbG93ZXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMsIHVzdWFsbHkgaW4gdGhlIDIwTUIgcmFuZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1vdGhlci1zb2Z0d2FyZS1kby1JLW5lZWQtdG8tY29tcGlsZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG90aGVyIHNvZnR3YXJlIGRvIEkgbmVlZCB0byBpbnN0YWxsLCBjb21waWxlIGFuZCBydW4KICAgICAgICAgIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBkZXZlbG9wbWVudCB0b29scyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGNvbXBpbGUgV2luZS4KICAgICAgICAgIEEgbGlzdCBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBkaXN0cmlidXRpb25zIGlzIGluY2x1ZGVkIGluCiAgICAgICAgICB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBydW4gV2luZSwgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPlRoZSBjb21waWxlZCBXaW5lIGJpbmFyeTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkEgcHJvcGVybHkgY29uZmlndXJlZCB3aW5lLmNvbmYgZmlsZSAob3Igfi8ud2luZXJjIGZpbGUpPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QW4gaW5zdGFsbGVkIGFuZCB3b3JraW5nIFggV2luZG93IHN5c3RlbTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlNvbWUgV2luZG93cyBwcm9ncmFtcyB0byB0ZXN0PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLVJBTS1kby1JLW5lZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93IG11Y2ggUkFNIGRvIEkgbmVlZCB0byBoYXZlIG9uIG15IFVOSVggc3lzdGVtIHRvIGJlIGFibGUgdG8gcnVuIAogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBydW4gWCBzbW9vdGhseSBvbiB5b3VyIFVOSVggc3lzdGVtIG5vdywgeW91IHNob3VsZCBiZSAKICAgICAgICAgIGFibGUgdG8gcnVuIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGp1c3QgZmluZSB0b28sIGRlcGVuZGluZwogICAgICAgICAgb24gaG93IG1lbW9yeSBodW5ncnkgdGhlIGFwcGxpY2F0aW9uIGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBtZW1vcnkgcmVxdWlyZW1lbnRzIHdpbGwgZGVwZW5kIG9uIHRoZSBhcHBsaWNhdGlvbiBvciBnYW1lCiAgICAgICAgICB0aGF0IHlvdSBjaG9vc2UgdG8gcnVuLiBZb3Ugd2lsbCBuZWVkIHRvIG1lZXQgdGhlIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvcgogICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIGFzIHdlbGwgYXMgdGhlIG92ZXJoZWFkIG9mIHlvdXIgdW5kZXJseWluZyBPUy4KICAgICAgICAgIFlvdSBtYXkgd2FudCB0byBjaGVjayB3aXRoIHRoZSB2ZW5kb3Igb2YgdGhlIGFwcGxpY2F0aW9uIGZvciBpdHMgCiAgICAgICAgICBzdWdnZXN0ZWQgbWVtb3J5IHJlcXVpcmVtZW50cy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbG9uZy1kb2VzLVdpbmUtdGFrZS10by1idWlsZCI+CiAgICAgICAgPHBhcmE+SG93IGxvbmcgZG9lcyBXaW5lIHRha2UgdG8gYnVpbGQ8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGdldHRpbmcgdG8gYmUgcXVpdGUgbGFyZ2UsIGFuZCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggdGFrZXMgYQogICAgICAgICAgbG90IG9mIHByb2Nlc3NpbmcuIEFzIG9mIE1heSAyMDA0LCBjb21waWxlIHRpbWVzIHdlcmUgYXJvdW5kIDEwCiAgICAgICAgICBtaW51dGVzIG9uIGEgQXRobG9uIDIwMDAgd2l0aCA1MTIgTUIgb2YgUkFNIGFuZCAyMCBtaW51dGVzIG9uIGEgQXRobG9uIAogICAgICAgICAgMTIwMCB3aXRoIDY0MCBNQiBvZiBSQU0uIElmIHlvdSBoYXZlIGEgQ1ZTIGNvcHkgb2Ygd2luZSwgeW91IG1heSBub3QgbmVlZAogICAgICAgICAgdG8gcmVidWlsZCBldmVyeSB0aGluZyBlYWNoIHVwZGF0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktaGF2ZS1hLURyaXZlc3BhY2VkLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgYSBEcml2ZXNwYWNlZCwgRG91Ymxlc3BhY2VkIG9yIFN0YWNrZXJlZCBET1MgcGFydGl0aW9uLiBDYW4gCiAgICAgICAgICBXaW5lIHJ1biBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gc3VjaCBhIHBhcnRpdGlvbj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGJ1dCBvbmx5IGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnRzIG1vdW50aW5nIHRob3NlIHR5cGVzCiAgICAgICAgICBvZiBkcml2ZXMuIFRoZXJlIGlzIGEgTGludXggZmlsZSBzeXN0ZW0gZHJpdmVyIGNhbGxlZCBkbXNkb3MgdGhhdAogICAgICAgICAgd2lsbCBhbGxvdyByZWFkL3dyaXRlIGFjY2VzcyB0byBEb3VibGVzcGFjZWQgYW5kIERyaXZlc3BhY2UgMS4wCiAgICAgICAgICBkcml2ZXMuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCBzdXBwb3J0cyBtb3VudGluZyBET1MgNi4wIGFuZCA2LjIgCiAgICAgICAgICBEb3VibGVzcGFjZWQsIERPUyA2LjIyIERyaXZlc3BhY2VkLCBhbmQgV2luZG93cyA5NSBEb3VibGVzcGFjZWQgCiAgICAgICAgICBjb21wcmVzc2VkIHBhcnRpdGlvbnMgKHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB3b3JrcyBmaW5lLCBidXQgd3JpdGUgCiAgICAgICAgICBhY2Nlc3MgaXMgc2xvdykuIEl0IGNhbiBiZSBmb3VuZCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLyI+CiAgICAgICAgICBmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy88L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvLUktbmVlZC10by1oYXZlLWEtRE9TLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+RG8gSSBuZWVkIHRvIGhhdmUgYSBET1MgcGFydGl0aW9uIG9uIG15IHN5c3RlbSB0byB1c2UgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgYSBsaWNlbnNlZCBhbmQgaW5zdGFsbGVkIGNvcHkgb2YgRE9TIG9yIE1TIFdpbmRvd3MgdG8KICAgICAgICAgIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgcnVuIFdpbmUuIEhvd2V2ZXIsIFdpbmUgaGFzIHRvIGJlIGFibGUgdG8gCiAgICAgICAgICAnc2VlJyBhbiBNUyBXaW5kb3dzIGJpbmFyeSAoaS5lLiBhcHBsaWNhdGlvbikgaWYgaXQgaXMgdG8gcnVuIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtTVMtV2luZG93cy1uZWVkLXRvLWJlLWluc3RhbGxlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEb2VzIE1TIFdpbmRvd3MgbmVlZCB0byBiZSBsb2FkZWQgaW50byB0aGF0IHBhcnRpdGlvbiBpbiBvcmRlciB0bwogICAgICAgICAgcnVuIE1TIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGZvbGtzIGhhdmUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBhbmQgcnVuIHByb2dyYW1zCiAgICAgICAgICBpbiB0aGVpciBVTklYIGZpbGUgc3lzdGVtIHdpdGhvdXQgaGF2aW5nIGEgRE9TIHBhcnRpdGlvbiBvciBNUyAKICAgICAgICAgIFdpbmRvd3MuIEhvd2V2ZXIsIGluIG1hbnkgY2FzZXMgeW91IG5lZWQgYSBkaXJlY3RvcnkgYW5kIGZpbGUgCiAgICAgICAgICBpbmZyYXN0cnVjdHVyZSB0aGF0IGlzIHNpbWlsYXIgdG8gYW4gZXhpc3RpbmcgV2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICBTb21lIGFwcGxpY2F0aW9ucycgaW5zdGFsbGF0aW9uIHByb2dyYW1zIHdhbnQgdG8gZGlzdHJpYnV0ZSBzb21lIG9mCiAgICAgICAgICB0aGUgcGFja2FnZSdzIGZpbGVzIGludG8gdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBpbiBvcmRlciB0byBydW4sIGFuZCB1bmxlc3MgdGhlc2UgZXhpc3Qgb24geW91ciBVTklYIAogICAgICAgICAgZmlsZSBzeXN0ZW0sIHRob3NlIHByb2dyYW1zIHdpbGwgbm90IGluc3RhbGwgY29ycmVjdGx5IGFuZCBwcm9iYWJseQogICAgICAgICAgd2lsbCBub3QgcnVuIHdlbGwsIGlmIGF0IGFsbC4gTW9zdCBwYWNrYWdlcyB3aWxsIHNldCB0aGF0IHVwIGZvciB5b3UKCSAgYXMgcGFydCBvZiB0aGUgaW5zdGFsbCBwcm9jZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiB3aXRoIE1TIFdpbmRvd3MgaW5zdGFsbGVkIGluIGl0LCBtYWtlCiAgICAgICAgICBzdXJlIHRoYXQgeW91ciBVTklYIHN5c3RlbSBjYW4gJ3NlZScgdGhpcyBwYXJ0aXRpb24gKGNoZWNrIHlvdXIgCiAgICAgICAgICAvZXRjL2ZzdGFiIGZpbGUgb3IgbW91bnQgdGhlIHBhcnRpdGlvbiBtYW51YWxseSkgc28gdGhhdCBXaW5lIGNhbgogICAgICAgICAgcnVuIHRoZSBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gdGhlIERPUyBwYXJ0aXRpb24uIFRvIHJ1bgogICAgICAgICAgd2l0aG91dCBhIERPUyBwYXJ0aXRpb24sIHlvdSBuZWVkIHRvIHNldCBhIFVOSVggcGF0aCB0byBiZSB5b3VyIAogICAgICAgICAgZHJpdmUgQywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgcG9pbnQgdG8gc29tZSBwbGFjZSB0aGF0IGFjdHVhbGx5IGV4aXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlLCBjb3BpZWQgZnJvbSBhIG1hY2hpbmUgd2hpY2ggaGFzIG5vIERPUyBwYXJ0aXRpb24KICAgICAgICAgIGJ1dCBzdWNjZXNzZnVsbHkgcnVucyBXaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgogICAgW0RyaXZlIENdICAgICAgCiAgICAgICAgICBQYXRoPS92YXIvbGliL3dpbmUKICAgICAgICAgIFR5cGU9aGQKICAgIFt3aW5lXQogICAgICAgICAgV2luZG93cz1jOlx3aW5kb3dzCiAgICAgICAgICBTeXN0ZW09Yzpcd2luZG93c1xzeXN0ZW0KICAgICAgICAgIFRlbXA9ZTpcCiAgICAgICAgICBQYXRoPWM6XHdpbmRvd3M7Yzpcd2luZG93c1xzeXN0ZW07YzoKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSW4gPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93czwvZmlsZW5hbWU+LCB5b3Ugd2lsbCBuZWVkIHRvCiAgICAgICAgIGluc3RhbGwgYSA8ZmlsZW5hbWU+d2luLmluaTwvZmlsZW5hbWU+IGNvbmZpZyBmaWxlIHRoYXQgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgb24gYSB0eXBpY2FsIE1TIFdpbmRvd3MgMy4xIG1hY2hpbmUuIFRoZSBkaXJlY3RvcnkKICAgICAgICAgPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93cy9zeXN0ZW08L2ZpbGVuYW1lPiBzaG91bGQgZXhpc3QsIGJ1dAogICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29udGFpbiBhbnl0aGluZy4gSG93ZXZlciwgdG8gdXNlIE1TIERMTHMsIHlvdSBjYW4KICAgICAgICAgY29weSB0aGVtIGludG8gdGhhdCBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29udHJhdmVudGlvbiBvZgogICAgICAgICB0aGUgV2luZG93cyBsaWNlbmNlIHVubGVzcyBXaW5kb3dzIGlzIHByb3Blcmx5IGluc3RhbGxlZCBvbiB0aGUKICAgICAgICAgbWFjaGluZS4gSWYgeW91IGhhdmUgRE9TL01TIFdpbmRvd3MgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCB5b3UgY2FuCiAgICAgICAgIG1vdW50IHRoYXQgcGFydGl0aW9uIGF0IGJvb3R1cCBieSBtb2RpZnlpbmcgdGhlIGZpbGUgCiAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gaW4geW91ciBVTklYIHBhcnRpdGlvbiAoYXNzdW1pbmcgdGhhdAogICAgICAgICB0aGUgVU5JWCBrZXJuZWwgc3VwcG9ydHMgdGhlIERPUy9NUyBXaW5kb3dzIGZpbGUgc3lzdGVtIHR5cGUpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBlZGl0IHRoaXMgZmlsZSBieSBoYW5kLCBpdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgc2ltaWxhcgogICAgICAgICAgdG8gdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KL2Rldi9oZGExIC9kb3NjIG1zZG9zIHVpZD0wLGdpZD0xMDAsdW1hc2s9MDA3IDAgMAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHlvdSB0byByZWFkIGFuZCB3cml0ZSB0byB0aGUgRE9TIHBhcnRpdGlvbiB3aXRob3V0CiAgICAgICAgICBiZWluZyByb290LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLVdpbmUtY29tcGxldGVseS1yZXBsYWNlcy1NUy1XaW5kb3dzIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIFdpbmUgY29tcGxldGVseSByZXBsYWNlcyBNUyBXaW5kb3dzLCB3aWxsIGl0IGR1cGxpY2F0ZSBhbGwgb2YgdGhlCiAgICAgICAgICBmdW5jdGlvbnMgb2YgTVMgV2luZG93cz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lJ3MgZ29hbCBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucyBvbgogICAgICAgICAgVW5peC4gVG8gdGhpcyBlbmQgaXQgd2lsbCBwcm92aWRlIHJlcGxhY2VtZW50cyBmb3IganVzdCB0aG9zZQogICAgICAgICAgRExMcyBhbmQgQVBJcyB0aGF0IGFyZSBuZWVkZWQgYnkgdGhlc2UgV2luZG93cyBhcHBsaWNhdGlvbnMuCiAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgV2luZSB3aWxsIG5vdCBwcm92aWRlIHJlcGxhY2VtZW50cyBmb3IgRExMcyB0aGF0CiAgICAgICAgICBhcmUgbm90IHNoaXBwZWQgd2l0aCBXaW5kb3dzIG9yIGFyZSBhbHdheXMgc2hpcHBlZCB3aXRoIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIChlLmcuIHRoZSBWaXN1YWwgQmFzaWMgcnVuIHRpbWUpLiBUaGlzIGFsc28KICAgICAgICAgIG1lYW5zIHRoYXQgaW1wbGVtZW50aW5nIGFuIEFQSSB0aGF0IG5vIGFwcGxpY2F0aW9uIGV2ZXIgdXNlcyBpcyBub3QKICAgICAgICAgIGEgcHJpb3JpdHkuIFNpbWlsYXJseSwgdW50aWwgdGhlcmUgYXJlIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUgdGhhdAogICAgICAgICAgdXNlIHRoZSBXaW42NCBBUEksIGl0IHdpbGwgbm90IGJlIGEgcHJpb3JpdHkuIFRoYXQgYmVpbmcgc2FpZCwKICAgICAgICAgIHdlIHdpbGwgY2VydGFpbmx5IHRyeSB0byBrZWVwIG91ciBvcHRpb25zIG9wZW4gYW5kIHRvIGltcHJvdmUgb3VyIEFQSQogICAgICAgICAgY292ZXJhZ2UgYXMgd2UgY2FuLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFsc28gV2luZSBpcyBub3QgYW4gb3BlcmF0aW5nIHN5c3RlbSwgc28gdGhhdCB3cml0aW5nIGRldmljZQogICAgICAgICAgZHJpdmVycyBpcyBub3QgcGFydCBvZiBXaW5lJ3MgZ29hbHMuIEhvd2V2ZXIgaWYgeW91IGFyZSBpbnRlcmVzdGVkCiAgICAgICAgICBpbiBkZXZpY2UgZHJpdmVycywgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cua2VybmVsLm9yZy8iPkxpbnV4PC91bGluaz4sCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnLyI+RnJlZUJTRDwvdWxpbms+IGFuZAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5yZWFjdG9zLmNvbS8iPlJlYWN0T1M8L3VsaW5rPiBrZXJuZWwgZGV2ZWxvcGVycwogICAgICAgICAgd291bGQgY2VydGFpbmx5IGFwcHJlY2lhdGUgeW91ciBjb250cmlidXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2ltaWxhcmx5IFdpbmUgZG9lcyBub3QgdHJ5IHRvIGJlIGEgZGVza3RvcCBlbnZpcm9ubWVudCBzbwogICAgICAgICAgcHJvdmlkaW5nIGFwcGxldHMgc3VjaCBhcyBhIGNhbGN1bGF0b3IsIGEgZmlsZSBtYW5hZ2VyIG9yIGV2ZW4KICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIHRoYXQgbG9vayBsaWtlIFdpbmRvd3MsIGFyZSBsb3cgcHJpb3JpdHkgb3Igd291bGQKICAgICAgICAgIGV2ZW4gYmVzdCBiZSBkb25lIGFzIGEgc2VwYXJhdGUgcHJvamVjdC4gU3VjaCBwcm9qZWN0cyB3b3VsZCBhbHNvCiAgICAgICAgICB0byBhIGxhcmdlIGV4dGFudCBiZSByZWR1bmRhbnQgd2l0aCBvdGhlciBvcGVuLXNvdXJjZSBwcm9qZWN0cy4KICAgICAgICAgIEFnYWluLCB0aGVyZSBhcmUgcHJvamVjdHMgdGhhdCB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyCiAgICAgICAgICBjb250cmlidXRpb25zIGluIHRoaXMgYXJlYXMsIHN1Y2ggYXMgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lmdub21lLm9yZy8iPkdub21lPC91bGluaz4gb3IKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cua2RlLm9yZy8iPktERTwvdWxpbms+IGRlc2t0b3AgZW52aXJvbm1lbnRzLiBZb3UKICAgICAgICAgIHdpbGwgZ2V0IHRoZSBhZGRlZCBiZW5lZml0IHRoYXQgeW91ciBjb250cmlidXRpb24gd2lsbCB0aGVuIGJlCiAgICAgICAgICB1c2FibGUgYnkgZXZlcnlvbmUsIG5vdCBqdXN0IGJ5IFdpbmUgdXNlcnMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1JLWluc3RhbGwtb24tYW55LVVOSVgtZmlsZS1zeXN0ZW0iPgogICAgICAgIDxwYXJhPiAKICAgICAgICAgIFdpbGwgSSBiZSBhYmxlIHRvIGluc3RhbGwgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgaW4gYW55IGZsYXZvciBvZiBhCiAgICAgICAgICBVTklYIGZpbGUgc3lzdGVtPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgd3JpdHRlbiB0byBiZSBmaWxlIHN5c3RlbSBpbmRlcGVuZGVudCwgc28gTVMgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aWxsIGluc3RhbGwgYW5kIHJ1biB1bmRlciB2aXJ0dWFsbHkgYW55IGZpbGUgc3lzdGVtCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgeW91ciBicmFuZCBvZiBVTklYLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1XaW5lLXJ1bi11bmRlci1hbnktWC13aW5kb3ctbWFuYWdlciI+CiAgICAgICAgPHBhcmE+V2lsbCBXaW5lIHJ1biB1bmRlciBhbnkgWCB3aW5kb3cgbWFuYWdlcj8gRG9lcyBpdCByZXF1aXJlIGEgd2luZG93IG1hbmFnZXIgYXQgYWxsPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgd2luZG93IG1hbmFnZXIgaW5kZXBlbmRlbnQsIHNvIHRoZSBYIHdpbmRvdyBtYW5hZ2VyIHlvdQogICAgICAgICAgY2hvb3NlIHRvIHJ1biBoYXMgKGFsbW9zdCkgbm8gYmVhcmluZyBvbiB5b3VyIGFiaWxpdHkgdG8gcnVuIE1TCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW1zIHVuZGVyIFdpbmUuIFdpbmUgdXNlcyBzdGFuZGFyZCBYIGxpYnJhcmllcywgc28gbm8KICAgICAgICAgIGFkZGl0aW9uYWwgb25lcyBhcmUgbmVlZGVkLiBXaW5lIGhhcyBpdHMgb3duIHdpbmRvdyBtYW5hZ2VtZW50LAogICAgICAgICAgd2hpY2ggYWN0cyBsaWtlIE1TIFdpbmRvd3MuIEl0IGNhbiBiZSB0dXJuZWQgb2ZmIHRvIHVzZSB0aGUgbmF0aXZlCiAgICAgICAgICB3aW5kb3cgbWFuYWdlciBieSBtb2RpZnlpbmcgTWFuYWdlZCBvciBEZXNrdG9wIHNldHRpbmdzIGFzIGRlc2NyaWJlZAogICAgICAgICAgaW4gPGNvbW1hbmQ+bWFuIHdpbmUuY29uZjwvY29tbWFuZD4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC0zMi1iaXQtYXBwbGljYXRpb25zLXJ1bi11bmRlci1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIDMyLWJpdCBXaW5kb3dzIDk1Lzk4L01FL05ULzIwMDAvWFAgYXBwbGljYXRpb25zIHJ1biB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgMzItYml0IHByb2dyYW1zIGFyZSBub3cgd2VsbCBzdXBwb3J0ZWQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIGEgbWlycm9yLCB3b3JkIG9mIHRoZSBsYXRlc3QgcmVsZWFzZQogICAgICAgICAgbWF5IHJlYWNoIHlvdSBiZWZvcmUgdGhlIHJlbGVhc2UgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGF0IHRoZSBmdHAKICAgICAgICAgIHNpdGVzIGxpc3RlZCBoZXJlLiBUaGUgc291cmNlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZwogICAgICAgICAgbG9jYXRpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2hvd2ZpbGVzLnBocD9ncm91cF9pZD02MjQxJmFtcDtwYWNrYWdlX2lkPTc3NDQ5Ij4KICAgICAgICAgICAgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Nob3dmaWxlcy5waHA/Z3JvdXBfaWQ9NjI0MSZhbXA7cGFja2FnZV9pZD03NzQ0OQogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvTUlSUk9SUy5odG1sIj5odHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9NSVJST1JTLmh0bWw8Lz4uCiAgICAgICAgICBTb21lIG9mIHRoZXNlIHNpdGVzIG1heSBhcmNoaXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIFdpbmUgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgIGN1cnJlbnQgb25lLiBUbyBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhdGVzdCBvbmUsIGxvb2sgYXQgdGhlIAogICAgICAgICAgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZSwgd2hpY2ggd2lsbCB0YWtlIHRoZSBmb3JtIAogICAgICAgICAgV2luZS1ZWVlZTU1ERC50YXIuZ3ouIFNpbXBseSByZXBsYWNlIFlZWVlNTUREIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZSB3aXRoIHRoZSBudW1iZXJzIGZvciB5ZWFyLCBtb250aCBhbmQgZGF0ZSwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgVGhlIGxhdGVzdCBvbmUgaXMgdGhlIG9uZSB0byBnZXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBiaW5hcnkgcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCBPUydlcyBhbmQgCiAgICAgICAgICBkaXN0cmlidXRpb25zLiBTZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+CiAgICAgICAgICB0aGUgZG93bmxvYWQgcGFnZTwvdWxpbms+IGZvciB0aGUgbW9zdCByZWNlbnQgbGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLUNWUy10cmVlIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIENWUyB0cmVlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnQgV2luZSBzb3VyY2VzIGFyZSBhbHNvIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIGNsaWVudC9zZXJ2ZXIKICAgICAgICAgIENWUy4gWW91IHdpbGwgbmVlZCBDVlMgMS45IG9yIGFib3ZlLiBJZiB5b3UgYXJlIGNvbWluZyBmcm9tIGJlaGluZCBhCiAgICAgICAgICBmaXJld2FsbCwgeW91IHdpbGwgZWl0aGVyIG5lZWQgYSBob2xlIGluIHRoZSBmaXJld2FsbCBmb3IgdGhlIENWUwogICAgICAgICAgcG9ydCAoMjQwMSkgb3IgdXNlIFNPQ0tTLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIGxvZ2luIHRvIHRoZSBDVlMgdHJlZSwgZG8KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6Y3ZzQGN2cy53aW5laHEub3JnL2hvbWUvd2luZQpjdnMgbG9naW4KICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzZSAiY3ZzIiBhcyB0aGUgcGFzc3dvcmQgKHdpdGhvdXQgdGhlIHF1b3RlcykuIE5vdGUgdGhhdCAKICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS93aW5lPC9maWxlbmFtZT4gaXMgYSBwYXRoIG9uIHRoZSBzZXJ2ZXIsIG5vdCBvbiB5b3VyCiAgICAgICAgICBtYWNoaW5lLiBUbyBjaGVjayBvdXQgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlICh3aGljaCBtYXkgYmUgCiAgICAgICAgICBzbG93KSwgdXNlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBvciBpZiB5b3UganVzdCB3YW50IGEgc3VidHJlZSwgb3IgaW5kaXZpZHVhbCBmaWxlLCB5b3UgY2FuIGRvIHRoYXQgCiAgICAgICAgICB0b28gd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lL0FOTk9VTkNFIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmUgYXdhcmUsIHRob3VnaCwgdGhhdCBnZXR0aW5nIHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSB2aWEgQ1ZTCiAgICAgICAgICBpcyBwcmV0dHkgc2xvdywgZXNwZWNpYWxseSBjb21wYXJlZCB0byBnZXR0aW5nIFdpbmUgZnJvbSBhbiBGVFAgCiAgICAgICAgICBtaXJyb3IgbmVhciB5b3UuIEZvciBhIENWUyBtaXJyb3IgbGlzdCwgc2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnMiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnM8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkb3dubG9hZCwKICAgICAgICAgIGluc3RhbGwsIGFuZCBjb25maWd1cmUgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZWFjaCBtb250aCBpZiB5b3UgYXJlCiAgICAgICAgICBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyByZWxlYXNlLiBQYXRjaCBmaWxlIHJlbGVhc2UgbmFtZXMgZm9sbG93IHRoZQogICAgICAgICAgc2FtZSBudW1iZXJpbmcgY29udmVudGlvbiBhcyBkbyB0aGUgZ2VuZXJhbCByZWxlYXNlcywgYW5kIHRha2UgdGhlIAogICAgICAgICAgZm9ybQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5neiAgCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBzYW1lIHNpdGVzIHRoYXQgZGlzdHJpYnV0ZSB0aGUKICAgICAgICAgIGZ1bGwgcmVsZWFzZS4gVG8gdXBncmFkZSB0byBhIG5ldyByZWxlYXNlIGJ5IHVzaW5nIGEgcGF0Y2ggZmlsZSwKICAgICAgICAgIGZpcnN0IGNkIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSByZWxlYXNlICh0aGUgb25lCiAgICAgICAgICBjb250YWluaW5nIHRoZSBSRUFETUUgZmlsZSksIHRoZW4gZG8gYSAibWFrZSBjbGVhbiIsIGFuZCBwYXRjaCB0aGUKICAgICAgICAgIHJlbGVhc2Ugd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpndW56aXAgLWMgcGF0Y2gtZmlsZSB8IHBhdGNoIC1wMSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIHdoZXJlIHBhdGNoLWZpbGUgaXMgdGhlIG5hbWUgb2YgdGhlIHBhdGNoIGZpbGUgc29tZXRoaW5nIGxpa2UKICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5nei4gWW91IGNhbiB0aGVuIHJlLXJ1biAuL2NvbmZpZ3VyZSwgYW5kIHRoZW4gcnVuCiAgICAgICAgICBtYWtlIGRlcGVuZCAmJiBtYWtlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGFyZSBtaXJyb3JpbmcgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIGZyb20gdGhlIHRzeC0xMSBzaXRlIGFuZAogICAgICAgICAgd2lzaCB0byBiZSBsaXN0ZWQgaGVyZSBpbiB0aGlzIEZBUSwgcGxlYXNlIGFkZCBpdCB0byB0aGUgCiAgICAgICAgICAidGhpbmdzIHRvIGdvIGludG8gdGhlIGRvY3VtZW50YXRpb24iIGFyZWEuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktZ2V0LVdpbmUtdXNpbmctY3ZzdXAiPgogICAgICAgIDxwYXJhPkNhbiBJIGdldCBXaW5lIHVzaW5nIGN2c3VwPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBDVlMgbWlycm9ycyBkb24ndCBvZmZlciBjdnN1cCBzdXBwb3J0IHlldCwgYnV0IHRoZSBtYWluIHNlcnZlcgogICAgICAgICAgZG9lcy4gVXNlIGEgPGZpbGVuYW1lPndpbmUuc3VwPC9maWxlbmFtZT4gZmlsZSBvZjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KKmRlZmF1bHQgaG9zdD1jdnMud2luZWhxLm9yZwoqZGVmYXVsdCBiYXNlPS9jdnMKKmRlZmF1bHQgcHJlZml4PS9jdnMvd2luZQoqZGVmYXVsdCByZWxlYXNlPXdpbmUKKmRlZmF1bHQgZGVsZXRlIAoKIyBJZiB5b3VyIG5ldHdvcmsgbGluayBpcyBhIFQxIG9yIGZhc3RlciwgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBsaW5lLgojKmRlZmF1bHQgY29tcHJlc3MgCgoqZGVmYXVsdCB1c2UtcmVsLXN1ZmZpeCAKd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICA8L2Fuc3dlcj4KICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iSW5zdGFsbGluZy1BbmQtQ29uZmlndXJpbmctV2luZSI+CiAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIGFuZCBDb25maWd1cmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29tcGlsZS10aGUtV2luZS1zb3VyY2UtY29kZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29tcGlsZSB0aGUgV2luZSBkaXN0cmlidXRpb24gc291cmNlIGNvZGU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2VlIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj5odHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KSBmb3IgaW5zdHJ1Y3Rpb25zLgogICAgICAgICAgQWRkaXRpb25hbGx5LCB5b3UgbWF5IHdhbnQgdG8gc2V0IHRoZSA8cGFyYW1ldGVyPlRNUERJUjwvcGFyYW1ldGVyPgogICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgPGNvbW1hbmQ+VE1QRElSPX4vdG1wPC9jb21tYW5kPiBvcgogICAgICAgICAgPGNvbW1hbmQ+VE1QRElSPS90bXA8L2NvbW1hbmQ+IChpZiB5b3UgYXJlIHJvb3QpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWluc3RhbGwtV2luZG93cy1pbi1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBpbnN0YWxsIFdpbmRvd3MgaW4gV2luZSB1bmRlciBMaW51eD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1wbGUgYW5zd2VyOiB5b3UgQ0FOJ1QuIFdpbmRvd3MgZGVtYW5kcyBkaXJlY3QgYWNjZXNzIHRvIHRoZQogICAgICAgICAgaGFyZHdhcmUgYW5kIGNhbm5vdCBnZXQgaXQgd2l0aCBXaW5lIGFuZCBVTklYIGluIHRoZSB3YXkKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHN1cHBvc2VkIHRvIGJlIHByaW1hcmlseSB1c2VkIFdJVEhPVVQgV2luZG93cy4gSWYgeW91IHdhbnQKICAgICAgICAgIHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uLCB0aGVuIHVzZSBhbiBleGlzdGluZyBpbnN0YWxsYXRpb24gCiAgICAgICAgICBhbG9uZ3NpZGUgdGhlIFVOSVggaW5zdGFsbGF0aW9uIChzZWUgdGhlIGR1YWwtYm9vdCBIT1dUTyBmb3IgeW91ciBPUwogICAgICAgICAgZm9yIG1vcmUgZGV0YWlscykuIE9yIGFsdGVybmF0aXZlbHkgdXNlIHRoZSBjYWJleHRyYWN0IHV0aWxpdHkgdG8KICAgICAgICAgIGV4dHJhY3QgV2luZG93cyBpbnN0YWxsIGFyY2hpdmVzIHRvIGEgZGlyZWN0b3J5IHRoYXQgeW91IHdhbnQgdG8gdXNlCiAgICAgICAgICBhcyBXaW5lJ3MgV2luZG93cyB0cmVlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWNvbmZpZ3VyZS1XaW5lLXRvLXJ1bi1vbi1teS1zeXN0ZW0iPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGNvbmZpZ3VyZSBXaW5lIHRvIHJ1biBvbiBteSBzeXN0ZW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGEgY29uZmlnIGZpbGUgYXMgCiAgICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPi4gVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMKICAgICAgICAgIGV4cGxhaW5lZCBpbiB0aGUgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG1hbiBwYWdlLiBUaGUgZmlsZQogICAgICAgICAgPGZpbGVuYW1lPmRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPgogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZyI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L3VsaW5rPikgCiAgICAgICAgICBjb250YWlucyBhIGNvbmZpZyBmaWxlIGV4YW1wbGUuIE1vcmUgZXhwbGljaXQgZGlyZWN0aW9ucyBjYW4gYmUgCiAgICAgICAgICBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KSB0aGF0IHdpbGwgYmUgbG9jYXRlZCBpbgogICAgICAgICAgdGhlIGJhc2UgV2luZSBkaXJlY3RvcnkgYWZ0ZXIgeW91IGd1bnppcCBhbmQgdW50YXIgdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS11cGdyYWRlLWNvbmZpZ3VyYXRpb24iPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIHVwZ3JhZGUgV2luZSB3aXRob3V0IGxvc2luZyBteSB3b3JraW5nIGNvbmZpZ3VyYXRpb24/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBncmFkaW5nIHRoZSB3aW5lIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBhZmZlY3QgdGhlIGV4aXN0aW5nIHdpbmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFNvIGFmdGVyIHVwZ3JhZGluZyB3aW5lIHlvdSBzdGlsbCBoYXZlIHRoZSBvbGQgKHdvcmtpbmcgKQogICAgICAgICAgd2luZSBjb25maWd1cmF0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtdmVyc2lvbnMtT0siPgogICAgICAgIDxwYXJhPklmIEkgd2FudCB0byB1c2UgYSBXaW5kb3dzIGluc3RhbGwsIHdoaWNoIHZlcnNpb25zIGFyZSBPSz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBFaXRoZXIgdXNlIGEgY2xhc3NpYyBuby13aW5kb3dzIGluc3RhbGwgKFdpbmUgaXMgZ2V0dGluZyBiZXR0ZXIgYWxsCiAgICAgICAgICB0aGUgdGltZSkgb3IgdXNlIGEgV2luOXggaW5zdGFsbCAoV2luOTUsIDk4LCA5OFNFLCBNRSkuIERPTidUIAogICAgICAgICAgY29uZmlndXJlIFdpbmUgdG8gdXNlIGFuIE5ULWJhc2VkIFdpbmRvd3MgaW5zdGFsbCAoTlQsIFdpbjJLLCBXaW5YUCwgV2luMkszKS4KICAgICAgICA8L3BhcmE+Cgk8cGFyYT4KCSAgSW4gZ2VuZXJhbCwgbW9zdCBXaW5kb3dzIGluc3RhbGxhdGlvbnMgY29udGFpbiB2YXN0IHF1YW50aXRpZXMgb2YgZ2FyYmFnZQoJICB0aGF0IGNhbiBjb25mdXNlIFdpbmUgYW5kIG1ha2UgaXQgbGVzcyByZWxpYWJsZS4gSWYgeW91IGNhbiwgaXQncyBiZXN0IHRvCgkgIGluc3RhbGwgdGhlIHByb2dyYW1zIHlvdSB3YW50IGludG8gV2luZSdzIGZha2Ugd2luZG93cyBkcml2ZS4KCTwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtb25lLXdvcmtzLWJlc3QiPgogICAgICAgIDxwYXJhPklmIEkgdXNlIGEgV2luZG93cyBpbnN0YWxsIHdpdGggV2luZSwgd2hpY2ggb25lIHdvcmtzIGJlc3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgMDIvMjAwMjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJJ2Qgc2F5IFdpbjk4U0UgaXMgdGhlIGJlc3QgdmVyc2lvbiB0byB1c2Ugd2l0aCBXaW5lLCBhcyBpdCdzIGZhaXJseQogICAgICAgICAgd2lkZXNwcmVhZCBhbW9uZ3N0IGRldmVsb3BlcnMgYW5kIHJlbGF0aXZlbHkgb2xkLiBVc2luZyBXaW4ySyBmaWxlcwogICAgICAgICAgaXMgPGVtcGhhc2lzPmRlZmluaXRlbHk8L2VtcGhhc2lzPiB3b3JzZSB0aGFuIGEgcGxhaW4gbm8td2luZG93cyAKICAgICAgICAgIFdpbmUgaW5zdGFsbCwgYW5kIFdpbiBNRSBpcyBzYWlkIHRvIGJlIHByb2JsZW1hdGljLCB0b28gKGFzIHByb2JhYmx5CiAgICAgICAgICBubyBkZXZlbG9wZXIgdXNlcyBpdCkuIEluIHNob3J0OiBhbGwgV2luOXggJmx0Oz0gVzk4U0UgYXJlIGdvb2QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW5zdGFsbGluZy1WaXN1YWwtQmFzaWMtYXBwcy13b250LXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnN0YWxsaW5nIGFwcGxpY2F0aW9ucyBnZW5lcmF0ZWQgYnkgVmlzdWFsIEJhc2ljIHdvbid0IHJ1bi4gV2hhdAogICAgICAgICAgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHlvdSBoYXZlIGFsbCB0aGUgVkIgcnVuIHRpbWUgbGlicmFyaWVzIGluc3RhbGxlZC4gWW91IGNhbgogICAgICAgICAgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSBNaWNyb3NvZnQgd2ViIHNpdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlbi1JLWNsaWNrLW9uLWV4ZS1maWxlLW5vdGhpbmctaGFwcGVucyI+CiAgICAgICAgPHBhcmE+V2hlbiBJIGNsaWNrIG9uICouZXhlIGZpbGUgaW4gbXkgZmlsZSBNYW5hZ2VyLCBub3RoaW5nIGhhcHBlbnMuPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5vcm1hbCBXaW5lIHJlbGVhc2VzIGRvbid0IGhhdmUgLmV4ZSBleHRlbnNpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICBXaW5lIGluIEtERS9Hbm9tZSB5ZXQuIFlvdSBoYXZlIHRvIG9wZW4gYSB0ZXJtaW5hbCB3aW5kb3cgaW5zdGVhZAogICAgICAgICAgKG9mdGVuIGFuIGljb24gc2hvd2luZyBhICJibGFjayBzY3JlZW4iKSBhbmQgdHlwZSBzb21ldGhpbmcgbGlrZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY2QgL215L3dpbmRvd3MvcHJvZ3JhbS9kaXJlY3RvcnkKd2luZSBteXByb2dyYW0uZXhlCiAgICAgICAgPC9zY3JlZW4+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJiYXNoLXdpbmUtQ29tbWFuZC1ub3QtZm91bmQtV2hhdC1jYW4tSS1kbyI+CiAgICAgICAgPHBhcmE+YmFzaCBzYXlzICJ3aW5lOiBDb21tYW5kIG5vdCBmb3VuZCIgV2hhdCBjYW4gSSBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcnkgdG8gbG9nb3V0IGFuZCBsb2dpbiBhZ2FpbiBpbnRvIGJhc2guIFRoYXQgbWlnaHQgZml4IGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGl0IGRvZXNuJ3QsIHRoZW4gbWFrZSBzdXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbiB5b3VyIAogICAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1biBhcyByb290OgogICAgICAgIDwvUGFyYT4KICAgICAgICA8c2NyZWVuPgpmaW5kIC8gLW5hbWUgIndpbmUiIC10eXBlIGYgLXBlcm0gKzExMQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB3aGVyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4uIFRoZW4gY2hlY2sgd2hldGhlcgogICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPiBpbmNsdWRlcyBpdDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZWNobyAkUEFUSCAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIG5vdCwgYWRkIHRoYXQgZS5nLiB0byA8ZmlsZW5hbWU+L2V0Yy9wcm9maWxlPC9maWxlbmFtZT4gYnkgZG9pbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBQQVRIPSRQQVRIOi9wYXRoL3RvL3dpbmUvYmluYXJ5IAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBzaG91bGQgaGVscC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgSWYgeW91IHVzZWQgYSBwYWNrYWdlIG1hbmFnZXIgKDxjb21tYW5kPnJwbTwvY29tbWFuZD4gb3IgCiAgICAgICAgICAgPGNvbW1hbmQ+YXB0PC9jb21tYW5kPikgLSBWZXJpZnkgeW91ciBwYWNrYWdlcy4gVGhlIHBhY2thZ2UgCiAgICAgICAgICAgPGZpbGVuYW1lPndpbmVzZXR1cHRrLnJwbTwvZmlsZW5hbWU+IGlzIG9ubHkgYSBmcm9udC1lbmQgZm9yIAogICAgICAgICAgIG1ha2luZyBhIG1lYW5pbmdmdWwgY29uZmlnIGZpbGUsIGl0IERPRVMgTk9UIGluc3RhbGwgdGhlIHdpbmUKICAgICAgICAgICBwYWNrYWdlLi4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIEZvciBjb21wbGV0ZSBwYWNrYWdlcywgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly9ycG1zZWVrLmNvbS9ycG0tcGwvd2luZS5odG1sP2hsPWNvbSZhbXA7Y3g9MDo6Ij4KICAgICAgICAgICBodHRwOi8vcnBtc2Vlay5jb20vPC91bGluaz4gb3IgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBkZXBlbmRzIG9uIGhvdyB5b3UgaW5zdGFsbGVkLiBJZiB5b3UgdXNlZCBhbiBSUE0sIHRoZSByaWdodCBjb21tYW5kIGlzIHRoaXM6CiAgICAgICAgIDxjb21tYW5kPnJwbSAtZSB3aW5lIChhcyByb290KTwvY29tbWFuZD4KICAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgSWYgeW91IGluc3RhbGxlZCBmcm9tIHNvdXJjZSAodGhlIC50YXIuZ3ogZmlsZSksIHRoZSByaWdodAogICAgICAgICB3YXkgdG8gZG8gaXQgaXMgdG8gY2hhbmdlIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZSAodGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBjb25maWd1cmUgc2NyaXB0LAogICAgICAgICByZWFkbWUgZXRjKSB0aGVuIHJ1biBhcyByb290OgogICAgICAgICA8Y29tbWFuZD5tYWtlIHVuaW5zdGFsbDwvY29tbWFuZD4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlIG5hbWUgb25seS4gRm9yIGV4YW1wbGUgdG8gcnVuIFdpbmRvd3MnCiAgICAgICAgICBzb2xpdGFpcmUsIHR5cGUgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2w8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPndpbmUgc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgdGhlIHNlYXJjaCBwYXRoIHRvIGxvY2F0ZSB0aGUgZmlsZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgYzpcXHdpbmRvd3NcXHNvbC5leGU8L2NvbW1hbmQ+IAogICAgICAgICAgICh1c2luZyBhIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIC91c3Ivd2luZG93cy9zb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyBhIFVOSVggZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgZmlsZSB3aWxsIGFsc28gYmUgYWRkZWQgdG8gdGhlIHBhdGggd2hlbiBhIGZ1bGwgbmFtZQogICAgICAgICAgaXMgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2luZS1jYW5ub3QtZmluZC1NUy1XaW5kb3dzLW9uLW15LWRyaXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgV2luZSwgYnV0IFdpbmUgY2Fubm90IGZpbmQgTVMgCiAgICAgICAgICBXaW5kb3dzIG9uIG15IGRyaXZlLiBXaGVyZSBkaWQgSSBnbyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24sIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIG1vdW50ZWQKICAgICAgICAgIGl0LCBlaXRoZXIgYnkgcHV0dGluZyB0aGUgZW50cnkgaW50byA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+LAogICAgICAgICAgb3IgYnkgbWFudWFsbHkgbW91bnRpbmcgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVtZW1iZXIgdG9vIHRoYXQgdW5sZXNzIHlvdXIgdmVyc2lvbiBvZiBVTklYIGNhbiBzZWUgdGhyb3VnaCBpdCwgb3IKICAgICAgICAgIHlvdSBhcmUgcnVubmluZyBhIHV0aWxpdHkgdGhhdCBjYW4gc2VlIHRocm91Z2ggaXQsIHlvdXIgRE9TCiAgICAgICAgICBwYXJ0aXRpb24gbXVzdCBub3QgYmUgbG9jYXRlZCBvbiBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IKICAgICAgICAgIFN0YWNrZXJlZCBwYXJ0aXRpb24sIGFzIG5laXRoZXIgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBvciBXaW5lIGNhbgogICAgICAgICAgbmF0aXZlbHkgJ3NlZScgZmlsZXMgbG9jYXRlZCBpbiB0aGVzZSBjb21wcmVzc2VkIERPUyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIENoZWNrIHlvdXIgcGF0aCBzdGF0ZW1lbnRzIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gCiAgICAgICAgICBmaWxlLiBObyBjYXBpdGFsIGxldHRlcnMgbWF5IGJlIHVzZWQgaW4gcGF0aHMsIGFzIHRoZXkgYXJlIAogICAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlBhcnRzLW9mLW15LWFwcC1kby1ub3Qtd29yay1XaGF0LWlzLXdyb25nIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgd2FzIGFibGUgdG8gZ2V0IHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcyB0byBydW4sIGJ1dCBwYXJ0cyBvZgogICAgICAgICAgdGhlbSBkbyBub3Qgd29yay4gV2hhdCBpcyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBjb21wbGV0ZSBhdCB0aGlzIHRpbWUsIHNvIHNvbWUgb2YgZWFjaCBwcm9ncmFtcycgCiAgICAgICAgICBmZWF0dXJlcyBtYXkgbm90IHdvcmsuIFRoZXkgd2lsbCBpbiB0aW1lIGFzIG1vcmUgb2YgdGhlIE1TIAogICAgICAgICAgV2luZG93cyBBUEkgY2FsbHMgYXJlIGluY2x1ZGVkIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iTWVudXMtZG8tbm90LXdvcmstaG93LWNhbi1JLWV4aXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHJ1biB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMsIGJ1dCBzaW5jZSB0aGUgcHJvZ3JhbSBtZW51cwogICAgICAgICAgZG8gbm90IHdvcmssIGhvdyBjYW4gSSBleGl0IHRoZXNlIHByb2dyYW1zPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEtpbGwgdGhlIHh0ZXJtIHNoZWxsIHdpbmRvdyB0aGF0IHlvdSBjYWxsZWQgdXAgdG8gcnVuIHlvdXIgTVMgCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW0sIGFuZCB0aGUgWCB3aW5kb3cgdGhhdCBhcHBlYXJlZCB3aXRoIHRoZSBwcm9ncmFtIAogICAgICAgICAgd2lsbCBiZSBraWxsZWQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uIGlkPSJNeS1hcHAtZG9lc250LXdvcmstd2hhdC1jYW4taS1kbyI+CgkgIDxwYXJhPgoJICAgIE15IHByb2dyYW0gZG9lc24ndCB3b3JrLCB3aGF0IGNhbiBJIGRvPwoJICA8L3BhcmE+Cgk8L3F1ZXN0aW9uPgoJPGFuc3dlcj4KCSAgPHBhcmE+CgkgICAgSWYgeW91IGFyZSBhIHByb2dyYW1tZXIgYW5kIGtub3cgQywgdGhlbiBzdGFydCBkZWJ1Z2dpbmcKCSAgICBXaW5lIGFuZCBoZWxwIHVzIG1ha2UgaXQgYmV0dGVyISBJZiB5b3UgY2FuJ3QsIHRoZW4geW91IHdpbGwKCSAgICBoYXZlIHRvIGVpdGhlciBjb252aW5jZSBhIFdpbmUgZGV2ZWxvcGVyIHRvIHRyeSBhbmQgbWFrZSB5b3VyCgkgICAgcHJvZ3JhbSB3b3JrICh0aGVyZSBtdXN0IGJlIGEgZG93bmxvYWRhYmxlIHZlcnNpb24gb3IgZGVtbyBmb3IgdGhhdCkuIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+ICAKICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgeW91ciBhcHBsaWNhdGlvbiB0byB0aGUgPHVsaW5rIHVybD0iaHR0cDovL2FwcGRiLndpbmVocS5vcmcvIj4KICAgICAgICAgICAgV2luZSBBcHBsaWNhdGlvbiBEQiA8L3VsaW5rPiBhbmQgZ2F0aGVyIHRpcHMgb24gd2F5cyB0byBnZXQgeW91ciBhcHAgdG8gd29yayBpdHMgYmVzdC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPiAKICAgICAgICAgICAgWW91IGNhbiBhbHNvIHN1Ym1pdCB5b3VyIGFwcGxpY2F0aW9uIHRvIHRoZSBDb2RlV2VhdmVycyBDcm9zc092ZXIgCiAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3NpdGUvY29tcGF0aWJpbGl0eS8iPiBDb21wYXRpYmlsaXR5IDwvdWxpbms+IENlbnRlci4KICAgICAgICAgICAgV2hlcmUgeW91IGNhbiBwbGVkZ2Uvdm90ZSB0b3dhcmQgZnV0dXJlIHN1cHBvcnQgb2YgeW91ciBmYXZvcml0ZSBhcHBsaWNhdGlvbi4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IHRoZSBhcHAgd29ya2luZyBieQoJICAgIHRha2luZyBuYXRpdmUgRExMcyBmcm9tIGEgTWljcm9zb2Z0IFdpbmRvd3MgaW5zdGFsbCwgYW5kIHVzaW5nCgkgICAgdGhlbSAoc2V0IHRoZSBkbGxzIHRvIG5hdGl2ZSBpbiB0aGUgY29uZmlnIGZpbGUpLiBOb3QgYWxsIERMTHMKCSAgICBjYW4gYmUgcmVwbGFjZWQgdGhhdCB3YXkgLSBpbiBwYXJ0aWN1bGFyIERpcmVjdFggY2Fubm90IGJlLCBub3IKCSAgICBjYW4gc29tZSBjb3JlIHN5c3RlbSBETExzIGxpa2UgZ2RpMzIsIHVzZXIsIG50ZGxsLCBrZXJuZWwzMiBldGMuCgkgIDwvcGFyYT4KCTwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS13aXRoLW90aGVyLUxpbnV4LURpc3Ryb3MiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHdpdGggU1VTRSwgUmVkSGF0IG9yIG90aGVyIExpbnV4IERpc3RybydzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gdXNlIFdpbmUgb24gYW55IHN1ZmZpY2llbnRseSByZWNlbnQgTGludXggaW5zdGFsbGF0aW9uLiBUaGUKICAgICAgICAgIGFtb3VudCBvZiB3b3JrIGdldHRpbmcgV2luZSB1cCBhbmQgcnVubmluZyBkZXBlbmRzIG9uIHdoZXRoZXIgeW91CiAgICAgICAgICBpbnN0YWxsIGEgYmluYXJ5IHBhY2thZ2VzIG9yIGRvIGEgc291cmNlIGluc3RhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1XaW5lLXdvcmstd2l0aC1BTUQtUHJvY2Vzc29ycyI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIHdvcmsgd2l0aCBBTUQgUHJvY2Vzc29ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGl0IGRvZXMuIFdpbmUgc2hvdWxkIHdvcmsgb24gYW55IHByb2Nlc3NvciBjb21wYXRpYmxlIHdpdGgKICAgICAgICAgIHRoZSBQZW50aXVtIG9yIGdyZWF0ZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWxhdW5jaC1Vbml4LWFwcC1mcm9tLVdpbmRvd3MtYXBwIj4KICAgICAgICA8cGFyYT4gQ2FuIEkgbGF1bmNoIGEgVW5peCBwcm9ncmFtIGZyb20gYSBXaW5kb3dzIHByb2dyYW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZSwgV2luZSBzdXBwb3J0cyB0aGF0LiBKdXN0IGVudGVyIHRoZSB1bml4IHByb2dyYW0gbmFtZSB3aGVyZXZlcgogICAgICAgICAgYSBwcm9ncmFtIGhhcyBzb21ldGhpbmcgdGhhdCBpdCdzIHN1cHBvc2VkIHRvIGV4ZWN1dGUsIGFuZCBpdAogICAgICAgICAgc2hvdWxkIGp1c3Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkVycm9yLXdpdGgtaW5zdGFsbHNoaWVsZC02Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgZ2V0IDxxdW90ZT5FcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKTwvcXVvdGU+CiAgICAgICAgICB3aGVuIHJ1bm5pbmcgYW4gSW5zdGFsbFNoaWVsZCA2IGluc3RhbGxlci4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZ2V0IHRoZSBlcnJvciAiRXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCkiIGF0IGFueQogICAgICAgICAgcG9pbnQsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGVyZSBhcmUgbGVmdG92ZXIgcHJvY2Vzc2VzIGZyb20gYQogICAgICAgICAgcHJldmlvdXMgdHJ5LiBZb3UgY2FuIHZlcmlmeSB0aGlzIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPnBzIGF1Z3h3IHwgZ3JlcCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgY29tbWFuZCBzaG93cyBvbGQgY29waWVzIG9mIHdpbmUgcnVubmluZyB5b3VyIHNldHVwLAogICAgICAgICAgeW91IG5lZWQgdG8ga2lsbCB0aGVtIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGUgc2V0dXAgcHJvZ3JhbS4KICAgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdGhlciBXaW5lIHByb2dyYW1zIHJ1bm5pbmcsIHlvdSBjYW4ga2lsbCB0aGVtCiAgICAgICAgICBhbGwgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48cHJvbXB0PiQgPC8+PGNvbW1hbmQ+a2lsbGFsbCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSdyZSBhbHNvIHJ1bm5pbmcgV2luZSBwcm9ncmFtcyB5b3UgY2FyZSBhYm91dCwgeW91J2xsCiAgICAgICAgICBoYXZlIHRvIGtpbGwgb2ZmIHRoZSBvbGQgU2V0dXAgaW5zdGFuY2VzIG9uZSBieSBvbmUgdXNpbmcKICAgICAgICAgIGtpbGwgYW5kIHRoZSBpbmRpdmlkdWFsIFBJRHMgKG9yIHBlcmhhcHMgV2luZSdzIHNwaWZmeSBUYXNrIE1hbmFnZXIsCiAgICAgICAgICB3aGljaCBkb2Vzbid0IGV4aXN0IHlldCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHNob3VsZCByZXBlYXQgdGhlIDxjb21tYW5kPnBzPC9jb21tYW5kPiB0byBtYWtlIHN1cmUgYWxsIG9mIHRoZSBvbGQgCiAgICAgICAgICBXaW5lIHByb2Nlc3NlcyBhcmUgZ29uZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IkdldHRpbmctaGVscCI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIGhlbHA8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbnktZG9jdW1lbnRhdGlvbi1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW55IGRvY3VtZW50YXRpb24gZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZG9jdW1lbnRhdGlvbiI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb2N1bWVudGF0aW9uLjwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLXdyaXR0ZW4tc29tZS1kb2N1bWVudGVudGF0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgY291bGRuJ3QgZmluZCB0aGUgYW5zd2VyIHRvIG15IHF1ZXN0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uLCBidXQKICAgICAgICAgIEkndmUgd3JpdHRlbiBhIGRvY3VtZW50IGV4cGxhaW5pbmcgaG93IHRvIHNvbHZlIGl0LiBXaGF0IHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZGF0ZXMgYW5kIGFkZGl0aW9ucyB0byB0aGUgV2luZSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeSBzaG91bGQgYmUKICAgICAgICAgIHNlbnQgdG8gdGhlIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXMiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zPC91bGluaz4uIFdlYnNpdGUgYW5kIEZBUSAKICAgICAgICAgIGFkZGl0aW9ucyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIFdpbmUgS25vd2xlZGdlIGJhc2UgZGlyZWN0b3J5LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtVXNlbmV0LW5ld3Nncm91cC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBVc2VuZXQgbmV3c2dyb3VwIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYW5kIGl0J3MgY2FsbGVkIAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4uIFRoZSBuZXdzZ3JvdXAgc2VydmVzIGFzIGEKICAgICAgICAgIHBsYWNlIGZvciB1c2VycyBhbmQgZGV2ZWxvcGVycyB0byBkaXNjdXNzIFdpbmUsIGFuZCBmb3IgbWlub3IgCiAgICAgICAgICBhbm5vdW5jZW1lbnRzIGZvciB0aGUgZ2VuZXJhbCBwdWJsaWMuIE1ham9yIGFubm91bmNlbWVudHMgd2lsbCBiZQogICAgICAgICAgY3Jvc3MgcG9zdGVkIHRvIG90aGVyIGFwcHJvcHJpYXRlIG5ld3Nncm91cHMsIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAub3MubGludXguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLm9zLmxpbnV4LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC53aW5kb3dzLnguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLndpbmRvd3MueC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAuZW11bGF0b3JzLmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5lbXVsYXRvcnMuYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdXIgVXNlbmV0IHNpdGUgZG9lcyBub3QgY2FycnkgdGhlc2UgbmV3c2dyb3VwcywgcGxlYXNlIHVyZ2UgCiAgICAgICAgICB5b3VyIElTUCdzIHN5c2FkbWluIHRvIGFkZCBhbmQvb3IgdXBsaW5rIHRoZW0uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Xb3JsZC1XaWRlLVdlYi1zaXRlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFdvcmxkIFdpZGUgV2ViIHNpdGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBIUSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5odHRwOi8vd3d3LndpbmVocS5vcmc8L3VsaW5rPikgaXMgdGhlIG9mZmljaWFsIHNpdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYW4tSVJDLWNoYW5uZWwtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGFuIElSQyBjaGFubmVsIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUuIEl0J3MgY2hhbm5lbCA8ZmlsZW5hbWU+I1dpbmVIUTwvZmlsZW5hbWU+IG9uIAogICAgICAgICAgPGZpbGVuYW1lPmlyYy5mcmVlbm9kZS5uZXQ8L2ZpbGVuYW1lPiBzZWUgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL2ZyZWVub2RlLm5ldCI+aHR0cDovL2ZyZWVub2RlLm5ldDwvdWxpbms+KS4KICAgICAgICAgIFVzdWFsbHkgc2V2ZXJhbCBXaW5lIGRldmVsb3BlcnMgaGFuZyBvdXQgdGhlcmUganVzdCB0byBoZWxwIFlPVSA7LSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXRoaW5rLUktZm91bmQtYS1idWctSG93LWRvLUktcmVwb3J0LWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgdGhpbmsgSSd2ZSBmb3VuZCBhIGJ1Zy4gSG93IGRvIEkgcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9ncmFtbWluZyB0ZWFtPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJ1ZyByZXBvcnRzIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gb3VyIG9ubGluZSBCdWd6aWxsYSBzeXN0ZW0gCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL2J1Z3Mud2luZWhxLm9yZy8iPmh0dHA6Ly9idWdzLndpbmVocS5vcmcvPC91bGluaz4pLgogICAgICAgICAgWW91IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmUgdmVyc2lvbiB0ZXN0ZWQKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmRvd3MgYXBwbGljYXRpb24gbmFtZSwgaW5jbHVkaW5nIHRoZSB2ZXJzaW9uLCBhbmQsIGlmCiAgICAgICAgICAgIGFwcGxpY2FibGUsIGEgVVJMIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgZG93bmxvYWRlZCBmcm9tCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZwogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgcmVsZXZhbnQgcGFydChzKSBvZiB0aGUgb3V0cHV0IG9mIHRoZSBXaW5lIGRlYnVnZ2VyCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgc2NyZWVuc2hvdCBvZiB0aGUgdmlzdWFsIHByb2JsZW0sIGlmIGFwcGxpY2FibGUKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcG9ydGluZyBidWdzIHBsZWFzZSBzZWUgdGhlIAogICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lLXVzZXIvYnVnLXJlcG9ydGluZy5zaHRtbCI+CiAgICAgICAgIEhvdyB0byByZXBvcnQgYSBidWc8L3VsaW5rPiBzZWN0aW9uIG9mIHRoZSBXaW5lIFVzZXJzIEd1aWRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iSGVscGluZy1XaW5lLW9yLWJlY29taW5nLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICA8dGl0bGU+SGVscGluZyBXaW5lIG9yIGJlY29taW5nIGEgV2luZSBkZXZlbG9wZXI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1iZWNvbWUtYS1XaW5lLWRldmVsb3BlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgYmVjb21lIGEgV2luZSBkZXZlbG9wZXI/IFdoYXQgZG8gSSBuZWVkIHRvIGtub3c/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBwcm9ncmFtIEMsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIERvd25sb2FkIHRoZSBzb3VyY2VzIHZpYQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2N2cyI+Q1ZTLDwvdWxpbms+KQogICAgICAgICAgc3Vic2NyaWJlIHRvIHRoZSBtYWlsaW5nIGxpc3RzLCBsb29rIGFyb3VuZCB0aGUgc291cmNlLCBhbmQKICAgICAgICAgIHBheSBhdHRlbnRpb24gdG8gdGhlIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSBuZXdzZ3JvdXAKICAgICAgICAgIGFuZCB0aGUgbWFpbGluZyBsaXN0cyAoPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtcyI+aHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zPC91bGluaz4pLgogICAgICAgICAgU2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcgdGhhdCB5b3UgdGhpbmsgeW91IGNhbiBmaXggb3Igd29yawogICAgICAgICAgb24uIFlvdSB3b24ndCBoYXZlIG11Y2ggdHJvdWJsZSBmaW5kaW5nIGFyZWFzIHRoYXQgbmVlZCB3b3JrCiAgICAgICAgICBpbiBXaW5lIChncmVwIGZvciBGSVhNRXMgaW4gdGhlIHNvdXJjZSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWNvbnRyaWJ1dGUtdG8tdGhlLVdpbmUtcHJvamVjdCI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGhlbHAgY29udHJpYnV0ZSB0byB0aGUgV2luZSBwcm9qZWN0LCBhbmQgaW4gd2hhdCB3YXkocyk/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiBjb250cmlidXRlIHByb2dyYW1taW5nIG9yIGRvY3VtZW50YXRpb24gc2tpbGxzLCBvciBtb25ldGFyeQogICAgICAgICAgb3IgZXF1aXBtZW50IGRvbmF0aW9ucywgdG8gYWlkIHRoZSBXaW5lIGRldmVsb3BlcnMgaW4gcmVhY2hpbmcgdGhlaXIgCiAgICAgICAgICBnb2Fscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgYSBsaXN0IG9mIGlkZWFzIG9mIGhvdyB5b3UgY2FuIGhlbHAsIHBsZWFzZSBjb25zdWx0IHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2NvbnRyaWJ1dGluZyI+CiAgICAgICAgICBXaW5lIGNvbnRyaWIgcGFnZTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd2FudC10by1oZWxwLWJldGEtdGVzdC1XaW5lIj4KICAgICAgICA8cGFyYT5JIHdhbnQgdG8gaGVscCBiZXRhIHRlc3QgV2luZS4gSG93IGNhbiBJIGRvIHRoaXM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBzdGlsbCBjb25zaXN0cyBvZiBzb21lIEFscGhhIGNvZGUgYXQgdGhpcyB0aW1lLiBIb3dldmVyLCBhbnlvbmUKICAgICAgICAgIGlzIHdlbGNvbWUgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uLCBhbmQgdHJ5IGl0IG91dCBhdCBhbnkKICAgICAgICAgIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13cm90ZS1zb21lLWNvZGUtSS13b3VsZC1saWtlLXRvLXN1Ym1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgd3JpdHRlbiBzb21lIGNvZGUgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3VibWl0IHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9qZWN0LiBIb3cgZG8gSSBnbyBhYm91dCBkb2luZyB0aGlzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1Ym1pdHRpbmcgYSBwYXRjaCBmb3IgaW5jbHVzaW9uIGluIFdpbmUgaXMgcHJldHR5IHNpbXBsZS4KICAgICAgICAgIEJhc2ljYWxseSBhbGwgeW91IGhhdmUgdG8gZG8gaXMgc2VuZCB0aGUgcGF0Y2ggdG8gdGhlCiAgICAgICAgICB3aW5lLXBhdGNoZXMgbWFpbGluZyBsaXN0IAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbmUtcGF0Y2hlcyI+aHR0cDovL3d3dy53aW5laHEub3JnL21haWxtYW4vbGlzdGluZm8vd2luZS1wYXRjaGVzPC8+KS4KICAgICAgICAgIFN0aWxsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiByZWNvbW1lbmRhdGlvbnMgYWJvdXQgdGhlIHBhdGNoIGZvcm1hdAogICAgICAgICAgYW5kIGFsbCBzbyBpdCdzIGJlc3QgdG8gcmVhZCBvdXIgcGFnZSBkZXNjcmliaW5nIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9zZW5kaW5nX3BhdGNoZXMiPmhvdyB0byBzdWJtaXQKICAgICAgICAgIHBhdGNoZXM8Lz4uIFRoaXMgd2lsbCBhbHNvIGdpdmUgeW91IG1vcmUgZGV0YWlscyBhYm91dCB0aGUgd2hvbGUKICAgICAgICAgIHByb2Nlc3MgYW5kIGluIHBhcnRpY3VsYXIgdG8gd2hhdCB3aWxsIGhhcHBlbiB0byB5b3VyIHBhdGNoIG9uY2UKICAgICAgICAgIHN1Ym1pdHRlZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iRGV2ZWxvcGluZy1wcm9ncmFtcy11c2luZy1XaW5lLVdpbmVMaWIiPgogICAgICA8dGl0bGU+RGV2ZWxvcGluZyBwcm9ncmFtcyB1c2luZyBXaW5lL1dpbmVMaWI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS10by1wb3J0LVdpbjMyLXNvdXJjZXMtdG8tVW5peCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gcG9ydCBteSBXaW4zMiBzb3VyY2VzIHRvIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBpcyB0aGUgaWRlYSBvZiBXaW5lbGliLiBSaWdodCBub3cgeW91IG1heSBzdGlsbCBoYXZlIHNvbWUgCiAgICAgICAgICBkaWZmaWN1bHRpZXMsIGJ1dCB0aGlzIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZS4gUmVhZCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBpbmZvLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtTUZDLXdvcmstd2l0aC1XaW5lLVdoYXQtZG8tSS1uZWVkLXRvLWRvIj4KICAgICAgICA8cGFyYT5XaWxsIE1GQyB3b3JrIHdpdGggV2luZT8gV2hhdCBkbyBJIG5lZWQgdG8gZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBub3QgaW1wbGVtZW50aW5nIGFuIE1GQyByZXBsYWNlbWVudCBub3IgZG9lcyBpdCBpbnRlbmQgdG8uCiAgICAgICAgICBIb3dldmVyIGl0IGlzIHBvc3NpYmxlICh3aXRoIGEgbG90IG9mIHdvcmspIHRvIGNvbXBpbGUgdGhlIE1GQyBmcm9tCiAgICAgICAgICBzb3VyY2UgYW5kIHRodXMgcHJvZHVjZSBhbiA8ZmlsZW5hbWU+bWZjNDIuZGxsLnNvPC9maWxlbmFtZT4gbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaG93IHRvIGRvIHRoaXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLXRoZXJlLWNvbW1lcmNpYWwtYXBwcy1wb3J0ZWQtdXNpbmctV2luZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcmUgdGhlcmUgYW55IGNvbW1lcmNpYWwgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYmVlbiBwb3J0ZWQKICAgICAgICAgIHVzaW5nIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyBwb3J0ZWQgdXNpbmcgV2luZSBvciBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIDIwMDAgd2FzIHBvcnRlZCB0byBMaW51eCB1c2luZwogICAgICAgICAgICBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBLeWxpeCwgdGhlIExpbnV4IHZlcnNpb24gb2YgRGVscGhpLCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmVsaWIuIFRoZSBJREUgYWN0dWFsbHkgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIFFUIGFuZCBXaW5lbGliCiAgICAgICAgICAgIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUgdG8gYWNoaWV2ZSB1c2luZyBvbmx5IFdpbmUuCiAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgYXBwbGljYXRpb25zIGhvd2V2ZXIgZG8gbm90IGRlcGVuZCBvbiBXaW5lIGluCiAgICAgICAgICAgIGFueSB3YXkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIE11c2ljTWF0Y2ggSnVrZWJveCA1IGhhcyBhbHNvIGJlZW4KICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pdHdvcmxkLmNvbS9ubC9sbnhfZGVza3RvcC8wMTA0MjAwMS8iPnBvcnRlZDwvPgogICAgICAgICAgICB0byBMaW51eCB1c2luZyBXaW5lbGliLiBIb3dldmVyIG1vcmUgcmVjZW50IHZlcnNpb25zIGhhdmUgbm90LCBhbmQKICAgICAgICAgICAgdmVyc2lvbiA1IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEFiaWxpdHkgT2ZmaWNlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHAiPmh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBJQk0ncyBXZWJzcGhlcmUKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wIj5odHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgb3RoZXIgaW1wb3J0YW50IGFwcGxpY2F0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBwb3J0ZWQuICh3ZSBhcmUKICAgICAgICAgIHNwZWFraW5nIG9mIHNldmVyYWwgdG9wIDUwMCBhcHBsaWNhdGlvbnMgaGVyZSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktZGV0ZWN0LVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBkZXRlY3QgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgcmVhbGx5IHNob3VsZG4ndCB3YW50IHRvIGRvIHRoaXMuIElmIHRoZXJlJ3MgYSBxdWlyayBpbiBXaW5lIAogICAgICAgICAgeW91IG5lZWQgdG8gd29yayBhcm91bmQsIGl0J3MgbXVjaCBiZXR0ZXIgdG8gZml4IGl0IGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKCiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iV2luZS1IUS1pc3N1ZXMiPgogICAgICA8dGl0bGU+V2luZSBIUSBpc3N1ZXM8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktYXJlLXRoZS1tYWlsbGlzdHMtc2V0LXRvLXJlcGx5LXRvLWF1dGhvciI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaHkgYXJlIHRoZSBtYWlsaW5nIGxpc3RzIHNldCB0byByZXBseSB0byBhdXRob3IsIG5vdCB0byBtYWlsaW5nIGxpc3Q/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHNvbWUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPgogICAgICAgICAgQW5kIHNlbGVjdCBbKFVuLSlTdWJzY3JpYmVdCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==