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+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9zaXRlL3Byb2R1Y3RzL2N4b2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ3NC45NSAKICAgICAgICAgICAgICBmb3IgdGhlIFBybyB2ZXJzaW9uIGFuZCAkMzkuOTUgZm9yIHRoZSBTdGFuZGFyZCB2ZXJzaW9uLgogICAgICAgICAgICAgIFNlZW1zIHRvIGJlIHdlbGwgd29ydGggaXQgc28gZmFyIGFjY29yZGluZyB0byBzb21lIGNvbW1lbnRzLiAKICAgICAgICAgICAgICAobm90ZTogeW91J3JlIHN1cHBvcnRpbmcgYSBjb21wYW55IGFjdGl2ZWx5IGNvbnRyaWJ1dGluZyB0byBXaW5lCiAgICAgICAgICAgICAgaWYgeW91IGRlY2lkZSB0byBidXkgQ3Jvc3NPdmVyLikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vc2l0ZS9wcm9kdWN0cy9jeHNlcnZlci8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBydW4geW91ciBmYXZvcml0ZSBXaW5kb3dzIHByb2R1Y3Rpdml0eSBhcHBsaWNhdGlvbnMgaW4gCiAgICAgICAgICAgICBhIGRpc3RyaWJ1dGVkIHRoaW4tY2xpZW50IGVudmlyb25tZW50IHVuZGVyIExpbnV4LiBTZXJ2ZXIgRWRpdGlvbiBpcyAKICAgICAgICAgICAgIGFsc28gYSBncmVhdCBhZGRpdGlvbiB0byBTb2xhcmlzIGVudmlyb25tZW50cywgc2luY2UgdGhlcmUgYnVpbHQtaW4gCiAgICAgICAgICAgICBzdXBwb3J0IGZvciBTb2xhcmlzIGRlc2t0b3BzIG1ha2VzIHJ1bm5pbmcgV2luZG93cyBhcHBsaWNhdGlvbnMgYSAKICAgICAgICAgICAgIHBvc3NpYmlsaXR5IG9uIFN1biB3b3Jrc3RhdGlvbnMgYXMgd2VsbC4gRm9yIHByaWNpbmcganVzdCBmb2xsb3cgdGhpcyBsaW5rOiAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3NpdGUvcHJvZHVjdHMvcHJpY2luZy8iPkNyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb24gUHJpY2luZzwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9oaXN0b3J5Ij4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zaXRlL2hpc3Rvcnk8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+dGhlIERvd25sb2FkIHBhZ2U8L3VsaW5rPgogICAgICAgICAgZm9yIHNvbWUgb2YgdGhlc2UgY2hvaWNlcyksIHlvdSBjYW4gbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBnZXR0aW5nIAogICAgICAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uIGJ5IHdhdGNoaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gQXVndXN0IDEzLCAyMDA0CiAgICAgICAgICB3YXMgY2FsbGVkIFdpbmUtMjAwNDA4MTMudGFyLmd6LiBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUuIElmCiAgICAgICAgICB5b3UgYXJlIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24sIHlvdSBjYW4gZG93bmxvYWQgYW5kIGFwcGx5IAogICAgICAgICAganVzdCB0aGUgY3VycmVudCBwYXRjaCBmaWxlIHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgbmV3IGRpc3RyaWJ1dGlvbi4KICAgICAgICAgIFRoZSBwYXRjaCBmaWxlIG5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj4KICAgICAgICAgIFJlYWQtb25seSBDVlM8L3VsaW5rPiBhY2Nlc3MgaXMgYWxzbyBhdmFpbGFibGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC1TdGF0dXMtb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCBTdGF0dXMgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiBtaWQgMjAwNCwgV2luZSBjb25zaXN0cyBvZiBhYm91dCAxLjYgbWlsbGlvbiBsaW5lcyBvZiBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gNjAwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvc3RhdHVzIj4KICAgICAgICAgIFN0YXR1cyBwYWdlPC91bGluaz4gZm9yIGEgZ2xvYmFsIHZpZXcgb24gV2luZSdzIGltcGxlbWVudGF0aW9uIHByb2dyZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4td2lsbC1XaW5lLWJlLWZpbmlzaGVkIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBiZSBmaW5pc2hlZD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMYXJnZSBzb2Z0d2FyZSBwcm9qZWN0cyBhcmUgbmV2ZXIgZmluaXNoZWQsIG9ubHkgcmVsZWFzZWQuIEluIGFueQogICAgICAgICAgY2FzZSBXaW5lIGlzIGNoYXNpbmcgYSBtb3ZpbmcgdGFyZ2V0IHNpbmNlIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIAogICAgICAgICAgV2luZG93cyBjb250YWlucyBuZXcgQVBJIGNhbGxzIG9yIHZhcmlhdGlvbnMgb24gdGhlIGV4aXN0aW5nIG9uZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBieSB2b2x1bnRlZXJzLCBpdCBpcyBkaWZmaWN1bHQgdG8KICAgICAgICAgIHByZWRpY3Qgd2hlbiBpdCB3aWxsIGJlIHJlYWR5IGZvciBnZW5lcmFsIHJlbGVhc2UuIEJ1dCBkdWUgdG8gdGhlCiAgICAgICAgICBtdWNoIGluY3JlYXNlZCBpbnRlcmVzdCBieSBjb21wYW5pZXMgaW4gcG9ydGluZyBhcHBzIHZpYSBXaW5lLCBXaW5lCiAgICAgICAgICBkZXZlbG9wbWVudCBpcyBjb25zdGFudGx5IGdldHRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUuIFJpZ2h0IG5vdwogICAgICAgICAgd2UgYXJlIHdvcmtpbmcgb24gcmVsZWFzaW5nIFdpbmUgMC45IFJlYWwgU29vbiBOb3codG0pLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1pcy1yZXNwb25zaWJsZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+V2hvIGlzIHJlc3BvbnNpYmxlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYXZhaWxhYmxlIHRoYW5rcyB0byB0aGUgd29yayBvZiBtYW55IHBlb3BsZS4gUGxlYXNlIHNlZSB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvQVVUSE9SUyI+QVVUSE9SUzwvdWxpbms+CiAgICAgICAgICBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIHRoZSBjb21wbGV0ZSBsaXN0LiBTb21lIGNvbXBhbmllcyB0aGF0CiAgICAgICAgICBhcmUgb3IgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggV2luZSBkZXZlbG9wbWVudCBhcmUgQ29kZVdlYXZlcnMsCiAgICAgICAgICBUcmFuc0dhbWluZywgQ29yZWwsIGFuZCBNYWNhZGFtaWFuLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtdW5kb2N1bWVudGVkLUFQSXMtYXJlLW5vdC11bmRlcnN0b29kIj4KICAgICAgICA8cGFyYT5XaGF0IHVuZG9jdW1lbnRlZCBBUElzIC8gaW50ZXJmYWNlcyBhcmUgbm90IHVuZGVyc3Rvb2Q/IFdvdWxkCiAgICAgICAgICAgICAgc2VlaW5nIE1pY3Jvc29mdCBzb3VyY2UgaGVscD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgYmVzdCB3b3VsZCBiZSBpZiB0aGUgV2luZG93cyBBUEkgd2FzIGZ1bGx5IGRvY3VtZW50ZWQsIHNvIFdpbmUKICAgICAgICAgIGNvdWxkIGJlIGEgcGVyZmVjdCAiY2xlYW4tcm9vbSIgaW1wbGVtZW50YXRpb24uIFNlZWluZyB0aGUgc291cmNlCiAgICAgICAgICBjb2RlIG1pZ2h0IG1ha2UgaXQgaGFyZGVyIHRvIHByb3ZlIHRoYXQgbm8gY29weXJpZ2h0IHZpb2xhdGlvbnMgaGF2ZQogICAgICAgICAgdGFrZW4gcGxhY2UuIFRoYXQgc2FpZCwgdGhlIGRvY3VtZW50YXRpb24gaXMgb2Z0ZW4gYmFkLCBub25leGlzdGVudCwKICAgICAgICAgIGFuZCBldmVuIG1pc2xlYWRpbmcgd2hlcmUgaXQgZXhpc3RzLCBzbyBhIGZhaXIgYW1vdW50IG9mIHJldmVyc2UKICAgICAgICAgIGVuZ2luZWVyaW5nIGhhcyBiZWVuIG5lY2Vzc2FyeSwgcGFydGljdWxhcmx5IGluIHRoZSBzaGVsbCAoRXhwbG9yZXIpCiAgICAgICAgICBpbnRlcmZhY2UuIFRoZSBiaWdnZXN0IHByb2JsZW0gZmFjaW5nIFdpbmUgdGhvdWdoIGlzIHNpbXBseSBsYWNrIG9mCgkgIG1hbnBvd2VyLiBBdCBvbmUgcG9pbnQsIG92ZXIgNTAwMCBwZW9wbGUgd2VyZSB3b3JraW5nIG9uIFdpbmRvd3MgMjAwMC4KCSAgV2hpbGUgV2luZSBkb2Vzbid0IG5lZWQgdG8gcmVwbGljYXRlIGFsbCBvZiBXaW5kb3dzICh3ZSBvbmx5IGNvdmVyIHRoZQoJICBwYXJ0cyBuZWVkZWQgdG8gbWFrZSBXaW5kb3dzIHByb2dyYW1zIHdvcmspLCB0aGF0J3Mgc3RpbGwgbmVhcmx5IDEwIHRpbWVzCgkgIG1vcmUgcGVvcGxlIHdvcmtpbmcgc2ltcGx5IG9uIG9uZSByZWxlYXNlIHRoYW4gaGF2ZSA8ZW1waGFzaXM+ZXZlcjwvZW1waGFzaXM+CgkgIHdvcmtlZCBvbiBXaW5lLCBpbiB0aGUgaGlzdG9yeSBvZiB0aGUgcHJvamVjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLXRoZXJlLWJlLWEtV2luZG93cy12ZXJzaW9uLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgdGhlcmUgYmUgYSBXaW5kb3dzIHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTb21lIHBlb3BsZSBhcmUgd29ya2luZyBvbiBnZXR0aW5nIFdpbmUgY29kZSB0byBjb21waWxlIG9uIFdpbmRvd3MKICAgICAgICAgIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb2plY3RzIGFzIGEgYmFzaXM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+IAogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBDeWd3aW4KICAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jeWd3aW4uY29tLyI+aHR0cDovL3d3dy5jeWd3aW4uY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIE1pbkdXCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXJ0IG9mIHRoZSByYXRpb25hbGUgZm9yIHRoZXNlIHByb2plY3RzIGlzIHRvIGZpbmQgb3V0IGFyZWFzIHdoZXJlCiAgICAgICAgICBXaW5lIHBvcnRhYmlsaXR5IGlzIGxhY2tpbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIG9mIHRoZQogICAgICAgICAgUmVhY3RPUyBwcm9qZWN0IHdoaWNoIGlzIGEgcmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cyBrZXJuZWwKICAgICAgICAgIGFuZCBzaG91bGQgdGh1cyBiZSBhYmxlIHRvIHJldXNlIG1vc3Qgb2YgV2luZSBkbGxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFub3RoZXIgcmVhc29uIGZvciBwdXJzdWluZyB0aGVzZSBwcm9qZWN0cyBpcyB0byBiZSBhYmxlIHRvCiAgICAgICAgICByZXBsYWNlIGEgc2luZ2xlIFdpbmRvd3MgZGxsIHdpdGggaXRzIFdpbmUgY291bnRlcnBhcnQuIEJlc2lkZXMKICAgICAgICAgIGJlaW5nIGEgZ29vZCB0ZXN0IGZvciB0aGUgV2luZSBkbGwsIHRoaXMgbGV0cyB1cyBkZXRlY3QgY2FzZXMgd2hlcmUKICAgICAgICAgIHdlIG1hZGUgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGhvdyB0aGUgZGxscyBpbnRlcmFjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtbmF0aXZlLWRyaXZlcnMiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5kb3dzIHByaW50ZXIgZHJpdmVycyBpbiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5hdGl2ZSBwcmludGVyIGRyaXZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIEF0IG9uZSB0aW1lIFdpbmUgc3VwcG9ydGVkIDE2Yml0IAogICAgICAgICAgbmF0aXZlIGRyaXZlcnMgYnV0IHRoYXQgd2FzIGxvbmcgYWdvLiBXaW5lIHVzZXMgdGhlIHByaW50ZXJzIChhbmQgb3RoZXIgCiAgICAgICAgICBkZXZpY2VzKSBpbnN0YWxsZWQgaW4geW91ciBvcGVyYXRpbmcgc3lzdGVtLiBGb3IgdGhlIG1vc3QgcGFydCBpZiB5b3UgZG9uJ3QgCiAgICAgICAgICBoYXZlIHRoZSBkZXZpY2UgaW5zdGFsbGVkIG9uIHlvdXIgT1MgdGhlbiB3aW5lIGNhbid0IHVzZSBpdC4gCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IldoYXQtZG8tSS1uZWVkLWluLW9yZGVyLXRvLXVzZS1XaW5lIj4KICAgICAgPHRpdGxlPldoYXQgZG8gSSBuZWVkIGluIG9yZGVyIHRvIHVzZSBXaW5lPzwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlVuZGVyLXdoYXQtcGxhdGZvcm1zLXdpbGwtV2luZS1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVW5kZXIgd2hhdCBoYXJkd2FyZSBwbGF0Zm9ybShzKSBhbmQgb3BlcmF0aW5nIHN5c3RlbShzKSB3aWxsCiAgICAgICAgICBXaW5lKExpYikgcnVuPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIHNwZWNpZmljYWxseSB0byBydW4gb24gdGhlIDxlbXBoYXNpcz5JbnRlbAogICAgICAgICAgeDg2PC9lbXBoYXNpcz4gY2xhc3Mgb2YgQ1BVcyB1bmRlciBjZXJ0YWluIFVOSVhlcyB0aGF0IHJ1biBvbiB0aGlzCiAgICAgICAgICBwbGF0Zm9ybS4gV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyB0aGUgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb25zIDxlbXBoYXNpcz5zb3VyY2UgY29kZTwvZW1waGFzaXM+IHRvIG90aGVyIHBsYXRmb3JtcwogICAgICAgICAgYWxzbywgbm90IG9ubHkgeDg2LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRodXMgcnVubmluZyBXaW5kb3dzIGJpbmFyaWVzIG9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBNYWMgT1MgWCBvbgogICAgICAgICAgUG93ZXJQQykgdXNpbmcganVzdCBXaW5lIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBwb3NzaWJsZS4gWW91CiAgICAgICAgICB3b3VsZCBoYXZlIHRvIGVpdGhlciBydW4gV2luZSBpbiBhbiBlbXVsYXRlZCB4ODYgZW52aXJvbm1lbnQgb3IKICAgICAgICAgIHRha2UgdGhlIFdpbmRvd3MgYXBwbGljYXRpb24gc291cmNlIGNvZGUgYW5kIHJlY29tcGlsZSBpdCB1c2luZwogICAgICAgICAgV2luZWxpYi4KCTwvcGFyYT4KCTxwYXJhPgoJICBUaGVzZSBhcmUgdGhlIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgV2luZS4KCSAgV2luZWxpYiBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMga2VlcHMgZXZvbHZpbmcsCgkgIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaGVyZS4KCTwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5ldEJTRCwgT3BlbkJTRCwgVW5peFdhcmUsIGFuZCBTQ08gT3BlblNlcnZlciA1IHdvcmtlZCBhdCBvbmUgdGltZSwKICAgICAgICAgIGJ1dCBXaW5lIG5vdyByZXF1aXJlcyBrZXJuZWwtbGV2ZWwgdGhyZWFkcyB3aGljaCBhcmUgbm90IGN1cnJlbnRseSAKICAgICAgICAgIGF2YWlsYWJsZSAob3IgdW5kZXJzdG9vZCBieSB0aGUgV2luZSB0ZWFtKSBvbiB0aG9zZSBwbGF0Zm9ybXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgZGV2ZWxvcG1lbnQgdGVhbSBob3BlcyB0byBhdHRyYWN0IHRoZSBpbnRlcmVzdCBvZiBvdGhlcgogICAgICAgICAgY29tbWVyY2lhbCBVTklYIGFuZCBVTklYIGNsb25lIHZlbmRvcnMgYXMgd2VsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZU9TOiBwb3J0aW5nIGVmZm9ydHMgKEJlV2luZSkgdXNlZCB0byBiZSBwcmV0dHkgc3Ryb25nLCBidXQgQmVPUwogICAgICAgICAgaGFzIHNldmVyZSBsaW1pdGF0aW9ucyBpbiBVbml4IGNhbGwgc3VwcG9ydC4gVGhlIGRlbWlzZSBvZiBCZQogICAgICAgICAgZnVydGhlciBoYW1wZXJlZCB0aGUgcHJvamVjdCB0aG91Z2ggaXQgbWlnaHQgY29tZSBiYWNrIG9uZSBkYXkgb24KICAgICAgICAgIG9uZSBvZiB0aGUgb3BlbiBCZU9TIHByb2plY3RzLiBJbiBhbnkgY2FzZSBhIGZ1bmN0aW9uYWwgcG9ydCBzZWVtcwogICAgICAgICAgdW5saWtlbHkgdG8gZXZlciBoYXBwZW4gYXQgdGhpcyBzdGFnZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWMgT1MgWCAvIERhcndpbjogVGhlIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZGFyd2luZS5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC5odG1sIj5EYXJ3aW5lPC8+IGlzCiAgICAgICAgICBjdXJyZW50bHkgd29ya2luZyBvbiBwb3J0aW5nIFdpbmUgdG8gdGhlIERhcndpbi94ODYgcGxhdGZvcm0uIFRoZWlyCiAgICAgICAgICBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBydW4geDg2IFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiBEYXJ3aW4vUFBDIGFuZCB0aGVuIE1hYyBPUyBYIGJ5IHVzaW5nIEJvY2hzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZyZWVCU0Q6IFRoaXMgcG9ydCBpcyB3ZWxsIG1haW50YWluZWQgYW5kIHNob3VsZCB3b3JrIHdpdGgKICAgICAgICAgIGxpbWl0YXRpb25zIGluIHNwZWNpZmljIGFyZWFzIChtYWlubHkgbWlzc2luZyBkZXZpY2UvaGFyZHdhcmUKICAgICAgICAgIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyB0aGUgbW9zdCBwb3B1bGFyIHBsYXRmb3JtIGZvciBib3RoCiAgICAgICAgICBkZXZlbG9wZXJzIGFuZCB1c2VycywgaXQgaXMgdGhlIGJlc3Qgc3VwcG9ydGVkIHBsYXRmb3JtIG9mIGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW1pbmltdW0tQ1BVLW11c3QtSS1oYXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgbWluaW11bSBDUFUgbXVzdCBJIGhhdmUgaW4gbXkgY29tcHV0ZXIgdG8gYmUgYWJsZSB0byBydW4gV2luZSAKICAgICAgICAgIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBXaW5lIGFuZCBXaW5lbGliIGhlcmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSB3b24ndCBydW4gb24gYW55IHg4NiBDUFUgbGVzcyB0aGFuIGFuIDgwMzg2IGR1ZSB0byBhZGRyZXNzCiAgICAgICAgICBtYW5hZ2VtZW50IGxpbWl0YXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGtub3duIHRvIGFsc28gd29yayBpbiB0aGUgODA0ODYgYW5kIHVwd2FyZHMgY29tcGF0aWJsZSBDUFVzLgogICAgICAgICAgVGhlIGJhc2ljIHRlc3QgaXMsIGlmIHlvdSBjYW4gcnVuIFgxMSBub3csIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4KICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHVuZGVyIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIGFsd2F5cywgdGhlIGZhc3RlciB5b3VyIENQVSwgdGhlIGJldHRlci4gSGF2aW5nIGEgbWF0aCBjb3Byb2Nlc3NvcgogICAgICAgICAgaXMgdW5pbXBvcnRhbnQuIEhvd2V2ZXIsIGhhdmluZyBhIGdyYXBoaWNzIGFjY2VsZXJhdGVkIHZpZGVvIGNhcmQKICAgICAgICAgIHN1cHBvcnRlZCBieSBYIHdpbGwgaGVscCBncmVhdGx5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4gSG93ZXZlciB0aGUgcnVsZSBvZgogICAgICAgICAgdGh1bWIgaXMgdGhhdCBpZiB5b3VyIGFwcGxpY2F0aW9uIHJ1bnMgZmluZSBvbiBXaW5kb3dzLCBpdCBzaG91bGQKICAgICAgICAgIHJ1biBmaW5lIG9uIHRoZSBzYW1lIHBsYXRmb3JtIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtZGlzay1zcGFjZS13aWxsLVdpbmUtdGFrZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEhvdyBtdWNoIGRpc2sgc3BhY2Ugd2lsbCB0aGUgV2luZSBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMgdGFrZSBvbiBteQogICAgICAgICBoYXJkIGRyaXZlPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBuZWVkIGFwcHJveGltYXRlbHkgMjUwIG1lZ2FieXRlcyBvZiBmcmVlIGhhcmQgZHJpdmUgc3BhY2UgdG8KICAgICAgICAgIHN0b3JlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZS4gV2luZSBhbHNvIG5lZWRzIGFib3V0IDE4IG1lZ3MgaW4KICAgICAgICAgIHlvdXIgL3RtcCBkaXJlY3RvcnkuIEFuZCBhYm91dCA1MCBNQiBhcmUgbmVlZGVkIHRvIGRvIGEgbWFrZSBpbnN0YWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJpbmFyeSBwYWNrYWdlcywgZXNwZWNpYWxseSB0aG9zZSBub3QgY29udGFpbmluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwKICAgICAgICAgIGhhdmUgbXVjaCBsb3dlciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cywgdXN1YWxseSBpbiB0aGUgMjBNQiByYW5nZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1SQU0tZG8tSS1uZWVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhvdyBtdWNoIFJBTSBkbyBJIG5lZWQgdG8gaGF2ZSBvbiBteSBVTklYIHN5c3RlbSB0byBiZSBhYmxlIHRvIHJ1biAKICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcnVuIFggc21vb3RobHkgb24geW91ciBVTklYIHN5c3RlbSBub3csIHlvdSBzaG91bGQgYmUgCiAgICAgICAgICBhYmxlIHRvIHJ1biBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBqdXN0IGZpbmUgdG9vLCBkZXBlbmRpbmcKICAgICAgICAgIG9uIGhvdyBtZW1vcnkgaHVuZ3J5IHRoZSBhcHBsaWNhdGlvbiBpcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lJ3MgbWVtb3J5IHJlcXVpcmVtZW50cyB3aWxsIGRlcGVuZCBvbiB0aGUgYXBwbGljYXRpb24gb3IgZ2FtZQogICAgICAgICAgdGhhdCB5b3UgY2hvb3NlIHRvIHJ1bi4gWW91IHdpbGwgbmVlZCB0byBtZWV0IHRoZSBtaW5pbXVtIHJlcXVpcmVtZW50cyBmb3IKICAgICAgICAgIHRoZSBhcHBsaWNhdGlvbiBhcyB3ZWxsIGFzIHRoZSBvdmVyaGVhZCBvZiB5b3VyIHVuZGVybHlpbmcgT1MuCiAgICAgICAgICBZb3UgbWF5IHdhbnQgdG8gY2hlY2sgd2l0aCB0aGUgdmVuZG9yIG9mIHRoZSBhcHBsaWNhdGlvbiBmb3IgaXRzIAogICAgICAgICAgc3VnZ2VzdGVkIG1lbW9yeSByZXF1aXJlbWVudHMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWxvbmctZG9lcy1XaW5lLXRha2UtdG8tYnVpbGQiPgogICAgICAgIDxwYXJhPkhvdyBsb25nIGRvZXMgV2luZSB0YWtlIHRvIGJ1aWxkPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBnZXR0aW5nIHRvIGJlIHF1aXRlIGxhcmdlLCBhbmQgYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHRha2VzIGEKICAgICAgICAgIGxvdCBvZiBwcm9jZXNzaW5nLiBBcyBvZiBNYXkgMjAwNCwgY29tcGlsZSB0aW1lcyB3ZXJlIGFyb3VuZCAxMAogICAgICAgICAgbWludXRlcyBvbiBhIEF0aGxvbiAyMDAwIHdpdGggNTEyIE1CIG9mIFJBTSBhbmQgMjAgbWludXRlcyBvbiBhIEF0aGxvbiAKICAgICAgICAgIDEyMDAgd2l0aCA2NDAgTUIgb2YgUkFNLiBJZiB5b3UgaGF2ZSBhIENWUyBjb3B5IG9mIHdpbmUsIHlvdSBtYXkgbm90IG5lZWQKICAgICAgICAgIHRvIHJlYnVpbGQgZXZlcnkgdGhpbmcgZWFjaCB1cGRhdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtYS1Ecml2ZXNwYWNlZC1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvciBTdGFja2VyZWQgRE9TIHBhcnRpdGlvbi4gQ2FuIAogICAgICAgICAgV2luZSBydW4gTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHN1Y2ggYSBwYXJ0aXRpb24/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBidXQgb25seSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyB0aG9zZSB0eXBlcwogICAgICAgICAgb2YgZHJpdmVzLiBUaGVyZSBpcyBhIExpbnV4IGZpbGUgc3lzdGVtIGRyaXZlciBjYWxsZWQgZG1zZG9zIHRoYXQKICAgICAgICAgIHdpbGwgYWxsb3cgcmVhZC93cml0ZSBhY2Nlc3MgdG8gRG91Ymxlc3BhY2VkIGFuZCBEcml2ZXNwYWNlIDEuMAogICAgICAgICAgZHJpdmVzLiBNb3JlIHNwZWNpZmljYWxseSwgaXQgc3VwcG9ydHMgbW91bnRpbmcgRE9TIDYuMCBhbmQgNi4yIAogICAgICAgICAgRG91Ymxlc3BhY2VkLCBET1MgNi4yMiBEcml2ZXNwYWNlZCwgYW5kIFdpbmRvd3MgOTUgRG91Ymxlc3BhY2VkIAogICAgICAgICAgY29tcHJlc3NlZCBwYXJ0aXRpb25zIChyZWFkIGFuZCB3cml0ZSBhY2Nlc3Mgd29ya3MgZmluZSwgYnV0IHdyaXRlIAogICAgICAgICAgYWNjZXNzIGlzIHNsb3cpLiBJdCBjYW4gYmUgZm91bmQgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy8iPgogICAgICAgICAgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEby1JLW5lZWQtdG8taGF2ZS1hLURPUy1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPkRvIEkgbmVlZCB0byBoYXZlIGEgRE9TIHBhcnRpdGlvbiBvbiBteSBzeXN0ZW0gdG8gdXNlIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGRvIG5vdCBuZWVkIGEgbGljZW5zZWQgYW5kIGluc3RhbGxlZCBjb3B5IG9mIERPUyBvciBNUyBXaW5kb3dzIHRvCiAgICAgICAgICBpbnN0YWxsLCBjb25maWd1cmUgYW5kIHJ1biBXaW5lLiBIb3dldmVyLCBXaW5lIGhhcyB0byBiZSBhYmxlIHRvIAogICAgICAgICAgJ3NlZScgYW4gTVMgV2luZG93cyBiaW5hcnkgKGkuZS4gYXBwbGljYXRpb24pIGlmIGl0IGlzIHRvIHJ1biBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1XaW5lLWNvbXBsZXRlbHktcmVwbGFjZXMtTVMtV2luZG93cyI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBXaW5lIGNvbXBsZXRlbHkgcmVwbGFjZXMgTVMgV2luZG93cywgd2lsbCBpdCBkdXBsaWNhdGUgYWxsIG9mIHRoZQogICAgICAgICAgZnVuY3Rpb25zIG9mIE1TIFdpbmRvd3M/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGdvYWwgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24KICAgICAgICAgIFVuaXguIFRvIHRoaXMgZW5kIGl0IHdpbGwgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIGp1c3QgdGhvc2UKICAgICAgICAgIERMTHMgYW5kIEFQSXMgdGhhdCBhcmUgbmVlZGVkIGJ5IHRoZXNlIFdpbmRvd3MgYXBwbGljYXRpb25zLgogICAgICAgICAgVGhpcyBtZWFucyB0aGF0IFdpbmUgd2lsbCBub3QgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIERMTHMgdGhhdAogICAgICAgICAgYXJlIG5vdCBzaGlwcGVkIHdpdGggV2luZG93cyBvciBhcmUgYWx3YXlzIHNoaXBwZWQgd2l0aCBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiAoZS5nLiB0aGUgVmlzdWFsIEJhc2ljIHJ1biB0aW1lKS4gVGhpcyBhbHNvCiAgICAgICAgICBtZWFucyB0aGF0IGltcGxlbWVudGluZyBhbiBBUEkgdGhhdCBubyBhcHBsaWNhdGlvbiBldmVyIHVzZXMgaXMgbm90CiAgICAgICAgICBhIHByaW9yaXR5LiBTaW1pbGFybHksIHVudGlsIHRoZXJlIGFyZSBhcHBsaWNhdGlvbnMgb3V0IHRoZXJlIHRoYXQKICAgICAgICAgIHVzZSB0aGUgV2luNjQgQVBJLCBpdCB3aWxsIG5vdCBiZSBhIHByaW9yaXR5LiBUaGF0IGJlaW5nIHNhaWQsCiAgICAgICAgICB3ZSB3aWxsIGNlcnRhaW5seSB0cnkgdG8ga2VlcCBvdXIgb3B0aW9ucyBvcGVuIGFuZCB0byBpbXByb3ZlIG91ciBBUEkKICAgICAgICAgIGNvdmVyYWdlIGFzIHdlIGNhbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbHNvIFdpbmUgaXMgbm90IGFuIG9wZXJhdGluZyBzeXN0ZW0sIHNvIHRoYXQgd3JpdGluZyBkZXZpY2UKICAgICAgICAgIGRyaXZlcnMgaXMgbm90IHBhcnQgb2YgV2luZSdzIGdvYWxzLiBIb3dldmVyIGlmIHlvdSBhcmUgaW50ZXJlc3RlZAogICAgICAgICAgaW4gZGV2aWNlIGRyaXZlcnMsIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvIj5MaW51eDwvdWxpbms+LAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5mcmVlYnNkLm9yZy8iPkZyZWVCU0Q8L3VsaW5rPiBhbmQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC91bGluaz4ga2VybmVsIGRldmVsb3BlcnMKICAgICAgICAgIHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIgY29udHJpYnV0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbWlsYXJseSBXaW5lIGRvZXMgbm90IHRyeSB0byBiZSBhIGRlc2t0b3AgZW52aXJvbm1lbnQgc28KICAgICAgICAgIHByb3ZpZGluZyBhcHBsZXRzIHN1Y2ggYXMgYSBjYWxjdWxhdG9yLCBhIGZpbGUgbWFuYWdlciBvciBldmVuCiAgICAgICAgICB3aW5kb3cgbWFuYWdlciB0aGF0IGxvb2sgbGlrZSBXaW5kb3dzLCBhcmUgbG93IHByaW9yaXR5IG9yIHdvdWxkCiAgICAgICAgICBldmVuIGJlc3QgYmUgZG9uZSBhcyBhIHNlcGFyYXRlIHByb2plY3QuIFN1Y2ggcHJvamVjdHMgd291bGQgYWxzbwogICAgICAgICAgdG8gYSBsYXJnZSBleHRhbnQgYmUgcmVkdW5kYW50IHdpdGggb3RoZXIgb3Blbi1zb3VyY2UgcHJvamVjdHMuCiAgICAgICAgICBBZ2FpbiwgdGhlcmUgYXJlIHByb2plY3RzIHRoYXQgd291bGQgY2VydGFpbmx5IGFwcHJlY2lhdGUgeW91cgogICAgICAgICAgY29udHJpYnV0aW9ucyBpbiB0aGlzIGFyZWFzLCBzdWNoIGFzIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5nbm9tZS5vcmcvIj5Hbm9tZTwvdWxpbms+IG9yCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmtkZS5vcmcvIj5LREU8L3VsaW5rPiBkZXNrdG9wIGVudmlyb25tZW50cy4gWW91CiAgICAgICAgICB3aWxsIGdldCB0aGUgYWRkZWQgYmVuZWZpdCB0aGF0IHlvdXIgY29udHJpYnV0aW9uIHdpbGwgdGhlbiBiZQogICAgICAgICAgdXNhYmxlIGJ5IGV2ZXJ5b25lLCBub3QganVzdCBieSBXaW5lIHVzZXJzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtSS1pbnN0YWxsLW9uLWFueS1VTklYLWZpbGUtc3lzdGVtIj4KICAgICAgICA8cGFyYT4gCiAgICAgICAgICBXaWxsIEkgYmUgYWJsZSB0byBpbnN0YWxsIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGluIGFueSBmbGF2b3Igb2YgYQogICAgICAgICAgVU5JWCBmaWxlIHN5c3RlbT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdyaXR0ZW4gdG8gYmUgZmlsZSBzeXN0ZW0gaW5kZXBlbmRlbnQsIHNvIE1TIFdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgd2lsbCBpbnN0YWxsIGFuZCBydW4gdW5kZXIgdmlydHVhbGx5IGFueSBmaWxlIHN5c3RlbQogICAgICAgICAgc3VwcG9ydGVkIGJ5IHlvdXIgYnJhbmQgb2YgVU5JWC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLW9ubHktdW5kZXItWCI+CiAgICAgICAgPHBhcmE+V2lsbCBXaW5lIHJ1biBvbmx5IHVuZGVyIFgsIG9yIGNhbiBpdCBydW4gaW4gY2hhcmFjdGVyIG1vZGU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTW9zdCBvZiBXaW5lJ3MgZGV2ZWxvcG1lbnQgZWZmb3J0IGlzIGdlYXJlZCB0b3dhcmRzIE1TIFdpbmRvd3MnIEdVSSwKICAgICAgICAgIGJ1dCBzb21lIGxpbWl0ZWQgc3VwcG9ydCBmb3IgY2hhcmFjdGVyIG1vZGUgaGFzIGFwcGVhcmVkLCBieSBzZXR0aW5nCiAgICAgICAgICA8cGFyYW1ldGVyPkdyYXBoaWNzRHJpdmVyPXR0eWRydjwvcGFyYW1ldGVyPiBpbiB+Ly53aW5lL2NvbmZpZydzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+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+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1idW5kbGUtZXZlcnl0aGluZy1pbi1vbmUtaHVnZS1leGUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXMgdGhlcmUgYSB3YXkgdG8gYmluZCB0aGUgV2luZSBjb2RlLCBhIFdpbmRvd3MgLmV4ZSwgYXNzb2NpYXRlZCBETExzLAogICAgICAgICAgYW5kIGFueSBuZWNlc3NhcnkgYWNjb21wYW55aW5nIGZpbGVzIGludG8gYSBzaW5nbGUgTGludXggZXhlY3V0YWJsZSB3aGljaAogICAgICAgICAgY2FuIGV4ZWN1dGUgYXMgaWYgaXQgd2VyZSBhIG5hdGl2ZSBsaW51eCBiaW5hcnkgKGllIHdpdGhvdXQgYWxzbyBoYXZpbmcKICAgICAgICAgIFdpbmUgcHJlLWluc3RhbGxlZCk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8uIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCB3YW50IFdpbmUgYXMgYSBkZXBlbmRlbmN5LCB5b3UgY2FuIGJ1bmRsZSB5b3VyIAogICAgICAgICAgcHJpdmF0ZSB2ZXJzaW9uIG9mIFdpbmUgaW50byB5b3VyIHBhY2thZ2UgKC5ycG0vLmRlYikuIFdpbmUgaGFzIGdvb2QKICAgICAgICAgIHN1cHBvcnQgZm9yIHN1Y2ggYSBzZXR1cCB2aWEgdGhlIFdJTkVQUkVGSVggZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWRldGVjdC1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgZGV0ZWN0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHJlYWxseSBzaG91bGRuJ3Qgd2FudCB0byBkbyB0aGlzLiBJZiB0aGVyZSdzIGEgcXVpcmsgaW4gV2luZSAKICAgICAgICAgIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kLCBpdCdzIG11Y2ggYmV0dGVyIHRvIGZpeCBpdCBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IldpbmUtSFEtaXNzdWVzIj4KICAgICAgPHRpdGxlPldpbmUgSFEgaXNzdWVzPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LWFyZS10aGUtbWFpbGxpc3RzLXNldC10by1yZXBseS10by1hdXRob3IiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2h5IGFyZSB0aGUgbWFpbGluZyBsaXN0cyBzZXQgdG8gcmVwbHkgdG8gYXV0aG9yLCBub3QgdG8gbWFpbGluZyBsaXN0PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlIGFyZSBzb21lIHZlcnkgdmFsaWQgcmVhc29ucyBmb3IgZG9pbmcgc28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LXRvLXVuc3Vic2NyaWJlLWZyb20tdGhlLW1haWxpbmctbGlzdHMiPgogICAgICAgIDxwYXJhPkhvdyB0byB1bnN1YnNjcmliZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3RzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZWFzZSBzZWU6IDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtcyI+aHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zPC91bGluaz4KICAgICAgICAgIEFuZCBzZWxlY3QgWyhVbi0pU3Vic2NyaWJlXQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICA8L3FhbmRhZGl2PgogCiAgPC9xYW5kYXNldD4KCjwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQpMb2NhbCB2YXJpYWJsZXM6Cm1vZGU6IHNnbWwKc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRldmVsLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQpFbmQ6Ci0tPgo=