PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5jb20pIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUaG9tYXMgV2lja2xpbmUgcmVvcmdhbmlzZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWCBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgc2V0IG9mIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMKICAgICAgICAgIHVzaW5nIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyaWVzIG1heSBhbHNvIGJlIHVzZWQKICAgICAgICAgIGZvciBwb3J0aW5nIFdpbjMyIGNvZGUgaW50byBuYXRpdmUgVU5JWCBleGVjdXRhYmxlcywgb2Z0ZW4KICAgICAgICAgIHdpdGhvdXQgbWFueSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UuIFdpbmUgaXMgZnJlZSBzb2Z0d2FyZSwgCiAgICAgICAgICBhbmQgaXRzIGxpY2Vuc2UgKGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBMSUNFTlNFCiAgICAgICAgICBpbiBlYWNoIGRpc3RyaWJ1dGlvbikgaXMgdGhlIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgZW11bGF0ZSBhIGZ1bGwgY29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGFzIHRoZSBuYW1lIHNheXMsIFdpbmUgSXMgTm90IGEgKENQVSkgRW11bGF0b3IuIFdpbmUganVzdAogICAgICAgICAgcHJvdmlkZXMgdGhlIFdpbmRvd3MgQVBJLiBUaGlzIG1lYW5zIHRoYXQgeW91IHdpbGwgbmVlZCBhbgogICAgICAgICAgeDg2LWNvbXBhdGlibGUgcHJvY2Vzc29yIHRvIHJ1biBhbiB4ODYgV2luZG93cyBhcHBsaWNhdGlvbiwgZm9yIGluc3RhbmNlIGZyb20gSW50ZWwgb3IgQU1ELiBUaGUKICAgICAgICAgIGFkdmFudGFnZSBpcyB0aGF0LCB1bmxpa2Ugc29sdXRpb25zIHRoYXQgcmVseSBvbiBDUFUgZW11bGF0aW9uLCBXaW5lCiAgICAgICAgICBydW5zIGFwcGxpY2F0aW9ucyBhdCBmdWxsIHNwZWVkLiBTb21ldGltZXMgYSBwcm9ncmFtIHJ1biB1bmRlcgoJICBXaW5lIHdpbGwgYmUgc2xvd2VyIHRoYW4gd2hlbiBydW4gb24gYSBjb3B5IG9mIE1pY3Jvc29mdCBXaW5kb3dzLCBidXQKCSAgdGhpcyBpcyBtb3JlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IE1pY3Jvc29mdCBoYXZlIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEaWZmZXJlbmNlLWJldHdlZW4tV2luZS1hbmQtZW11bGF0b3JzIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2luZSBhbmQgeDg2IGhhcmR3YXJlIGVtdWxhdG9ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdHdvIGZyZWUgeDg2IGhhcmR3YXJlIGVtdWxhdG9yczoKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9ib2Nocy5zb3VyY2Vmb3JnZS5uZXQiPmJvY2hzPC91bGluaz4sIGFuZCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3BsZXg4NiI+cGxleDg2PC91bGluaz4uCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBQbGV4ODYgaXMgdGhlIG9wZW4tc291cmNlIGZyZWUtc29mdHdhcmUgYWx0ZXJuYXRpdmUgZm9yIFZNV2FyZSwKCSAgVmlydHVhbFBDLCBhbmQgb3RoZXIgSUEtMzIgb24gSUEtMzIgIlZpcnR1YWwgUEMgcHJvZHVjdHMuIiBJdAogICAgICAgICAgY2FuIG9ubHkgcnVuIG9uIHRoZSBJQS0zMiBhcmNoaXRlY3R1cmUuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb2NocyBpcyBhIGhpZ2hseSBwb3J0YWJsZSBvcGVuIHNvdXJjZSBJQS0zMiAoeDg2KSBQQyBlbXVsYXRvciAKICAgICAgICAgIHdyaXR0ZW4gaW4gQysrLCB0aGF0IHJ1bnMgb24gbW9zdCBwb3B1bGFyIHBsYXRmb3Jtcy4gSXQgaW5jbHVkZXMgZW11bGF0aW9uCiAgICAgICAgICBvZiB0aGUgSW50ZWwgeDg2IENQVSwgY29tbW9uIEkvTyBkZXZpY2VzLCBhbmQgYSBjdXN0b20gQklPUy4gQ3VycmVudGx5LCAKICAgICAgICAgIGJvY2hzIGNhbiBiZSBjb21waWxlZCB0byBlbXVsYXRlIGEgMzg2LCA0ODYgb3IgUGVudGl1bSBDUFUuIEJvY2hzIGlzIGNhcGFibGUgCiAgICAgICAgICBvZiBydW5uaW5nIG1vc3QgT3BlcmF0aW5nIFN5c3RlbXMgaW5zaWRlIHRoZSBlbXVsYXRpb24gaW5jbHVkaW5nIExpbnV4LCAKICAgICAgICAgIFdpbmRvd3OuIDk1LCBET1MsIGFuZCByZWNlbnRseSBXaW5kb3dzriBOVCA0LgogICAgICAgPC9wYXJhPgoKICAgICAgIDxwYXJhPgogICAgICAgICAgQm90aCBhcmUgbGljZW5zZWQgdW5kZXIgdGhlIEdQTC4gQm9jaHMgaXMgb2xkZXIgdGhhbiBwbGV4ODYsIHNlZW1zIHRvIGJlIAogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBwbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgcGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gV2luZSBhbHNvIGdpdmVzIG11Y2ggYmV0dGVyIGRlc2t0b3AgaW50ZWdyYXRpb24gLSBmb3IKCSAgaW5zdGFuY2UsIHByb2dyYW1zIHVzZSB5b3VyIHN0YW5kYXJkIHdpbmRvdyBtYW5hZ2VyLCBzeXN0ZW0gdHJheSBpY29ucyB3aWxsCgkgIGFwcGVhciBpbiB5b3VyIHRyYXkgYXJlYSAoaWYgeW91IGhhdmUgb25lKSwgYW5kIHlvdSBjYW4gcnVuIHByb2dyYW1zIGRpcmVjdCBmcm9tIHRoZQoJICBjb21tYW5kIGxpbmUgYW5kIHRoZSBtZW51cy4gVGhlIGNsaXBib2FyZCBhbHNvIHdvcmtzIHNlYW1sZXNzbHkuCiAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LXdvdWxkLWFueW9uZS13YW50LVdpbmUtV2luZG93cy1zdWNrIj4KICAgICAgICA8cGFyYT5XaHkgd291bGQgYW55b25lIHdhbnQgV2luZT8gRG9lc24ndCBXaW5kb3dzIHN1Y2s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRmlyc3QgV2luZSBpcyBub3QgYWJvdXQgcnVubmluZyBXaW5kb3dzIGJ1dCBhYm91dCBydW5uaW5nIFdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU28gaWYgYWxsIHlvdXIgY29tcHV0aW5nIG5lZWRzIGFyZSBmdWxmaWxsZWQgYnkgbmF0aXZlIFVuaXggCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIHRoZW4geW91IGRvIG5vdCBuZWVkIFdpbmUgYW5kIHNob3VsZCBub3QgYmUgdXNpbmcKICAgICAgICAgIGl0LiBIb3dldmVyLCBpZiB5b3UgZGVwZW5kIG9uIG9uZSBvciBtb3JlIG9mIHRoZSB0ZW5zIG9mIAogICAgICAgICAgdGhvdXNhbmRzIG9mIFdpbmRvd3MgYXBwbGljYXRpb25zLCB0aGVuIFdpbmUgaXMgdGhlIGJlc3Qgd2F5IHRvCiAgICAgICAgICB1c2UgaXQgd2l0aG91dCBnaXZpbmcgdXAgb24gVW5peC4gTGV0J3MgbG9vayBhdCB0aGUgYWx0ZXJuYXRpdmVzCiAgICAgICAgICB0byBzZWUgd2h5OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBtb3N0IG9idmlvdXMgYWx0ZXJuYXRpdmUgaXMgdG8gZHVhbC1ib290LiBUaGlzIGlzIHRoZSBzb2x1dGlvbgogICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgYmVzdCBjb21wYXRpYmlsaXR5LiBIb3dldmVyIGl0IHJlcXVpcmVzIHRoYXQgeW91CiAgICAgICAgICBhY3F1aXJlIGEgV2luZG93cyBsaWNlbnNlIGFuZCB0aGVuIGRlZGljYXRlIGEgZ29vZCBjaHVuayBvZiB5b3VyIAogICAgICAgICAgaGFyZC1kcml2ZSB0byBXaW5kb3dzLiBCdXQgdGhlIHdvcnN0IGlzIHlldCB0byBjb21lLiBFYWNoIHRpbWUgeW91CiAgICAgICAgICB3aWxsIHdhbnQgdG8gdXNlIHRoYXQgYXBwbGljYXRpb24geW91IHdpbGwgaGF2ZSB0byByZWJvb3QgdG8gCiAgICAgICAgICBXaW5kb3dzLiBUaGlzIGlzIGVzcGVjaWFsbHkgc2lnbmlmaWNhbnQgaWYgZXh0ZXJuYWwgZmFjdG9ycyBkaWN0YXRlCiAgICAgICAgICB3aGVuIHlvdSBtdXN0IHVzZSB0aGlzIGFwcGxpY2F0aW9uIChlLmcuIGNyZWRpdCBjYXJkIHRvIHByb2Nlc3MsIAogICAgICAgICAgZW1haWwgdG8gcmV0cmlldmUgZnJvbSBhIExvdHVzIE5vdGVzIHNlcnZlcikuIFRoZW4geW91IHdpbGwgZmluZAogICAgICAgICAgeW91cnNlbGYgZm9yY2VkIHRvIGNsb3NlIGFsbCB5b3VyIExpbnV4IGFwcGxpY2F0aW9ucyBqdXN0IHRvIHJ1bgogICAgICAgICAgdGhhdCBvbmUgV2luZG93cyBhcHBsaWNhdGlvbi4gWW91IG1heSBxdWlja2x5IGdldCB0aXJlZCBvZiB0aGlzLCBvcgogICAgICAgICAgd2lsbCBmaW5kIHRoYXQgc3VjaCBhIHNpdHVhdGlvbiBpcyBpbXBvc3NpYmxlIHRvIGp1c3RpZnkgaW4gYSAKICAgICAgICAgIGJ1c2luZXNzIGVudmlyb25tZW50LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBuZXh0IHNvbHV0aW9uIGlzIHRvIGluc3RhbGwgdmlydHVhbCBtYWNoaW5lIGVtdWxhdGlvbiBzb2Z0d2FyZQogICAgICAgICAgc3VjaCBhcyBWTVdhcmUsIFdpbjRMaW4gb3IgUGxleDg2LiBUaGVuIHlvdSBjYW4gdXNlIHdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgd2l0aG91dCBzdWZmZXJpbmcgc3VjaCBhIGJpZyBkaXNydXB0aW9uLiBCdXQgaXQgc3RpbGwKICAgICAgICAgIHJlcXVpcmVzIHRoYXQgeW91IGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIGRlZGljYXRlIGFzIG11Y2ggCiAgICAgICAgICBkaXNrIHNwYWNlIHRvIFdpbmRvd3MuIEZ1cnRoZXJtb3JlIHlvdSB3aWxsIHBheSBmb3IgdGhlIGFkZGVkIAogICAgICAgICAgY29udmVuaWVuY2U6IGlmIHVzaW5nIFZNV2FyZSBvciBXaW40TGluIHlvdSBoYXZlIHRvIGJ1eSBhbm90aGVyIAogICAgICAgICAgbGljZW5zZSwgYW5kIG1vcmUgaW1wb3J0YW50bHkgeW91IG5vdyBoYXZlIHRvIGRlZGljYXRlIGEgZ29vZCBjaHVuawogICAgICAgICAgb2YgeW91ciBjb21wdXRlcidzIG1lbW9yeSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLiBQZXJmb3JtYW5jZSB3aWxsCiAgICAgICAgICB0YWtlIGEgc2lnbmlmaWNhbnQgaGl0IHRvby4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2luZyBXaW5lIGxldHMgeW91IGF2b2lkIGFsbCBvZiB0aGF0IG92ZXJoZWFkOiBXaW5kb3dzIGxpY2Vuc2UsCiAgICAgICAgICBoYXJkLWRyaXZlIHNwYWNlIHJlcXVpcmVkIGJ5IFdpbmRvd3MsIG1lbW9yeSBhbmQgcGVyZm9ybWFuY2UgaGl0IAogICAgICAgICAgdGFrZW4gYnkgZW11bGF0ZWQgdmlydHVhbCBtYWNoaW5lcy4gTm93IHlvdSBjYW4gc3RhcnQgeW91ciBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiBzdHJhaWdodCBmcm9tIHlvdXIgcmVndWxhciBkZXNrdG9wIGVudmlyb25tZW50LCBwbGFjZQogICAgICAgICAgdGhhdCBhcHBsaWNhdGlvbidzIHdpbmRvdyBzaWRlIGJ5IHNpZGUgd2l0aCBuYXRpdmUgYXBwbGljYXRpb25zLAogICAgICAgICAgY29weS9wYXN0ZSBmcm9tIG9uZSB0byB0aGUgb3RoZXIsIGFuZCBydW4gaXQgYWxsIGF0IGZ1bGwgc3BlZWQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMgYWxzbyBhIHByZXR0eSB2aXRhbCBwYXJ0IG9mIG1pZ3JhdGluZyBhIGxhcmdlIG9yZ2FuaXNhdGlvbiwKICAgICAgICAgIHlvdSBjYW4ndCBjaGFuZ2UgYSA1MDAwIGRlc2t0b3Agc2V0dXAgb3Zlcm5pZ2h0IHdpdGhvdXQgYSBsb3Qgb2Ygcmlzay4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoaWNoLW9uZS1vZi10aGUtZGlmZmVyZW50LVdpbmUtcGFja2FnZXMiPgogICAgICAgIDxwYXJhPldoaWNoIG9uZSBvZiB0aGUgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMgb3V0IHRoZXJlIGlzIGdvb2QgZm9yIG1lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnRseSB0aGVyZSBpcyBhIGJyb2FkIHNlbGVjdGlvbiBvZiBkaWZmZXJlbnQgV2luZSBwYWNrYWdlcy92ZXJzaW9uczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHZhcmlhYmxlbGlzdD4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5XaW5lPC91bGluaz48L3Rlcm0+CiAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgdGhlICJzdGFuZGFyZCIgc291cmNlIGRpc3RyaWJ1dGlvbiBvZiBXaW5lLiBJdHMgbGljZW5zZSBpcyAKICAgICAgICAgICAgICB0aGUgTEdQTCwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly9yZXdpbmQuc291cmNlZm9yZ2UubmV0Ij5SZVdpbmQ8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBhIGZvcmtlZCBXaW5lIHRyZWUgdGhhdCBnb3QgY3JlYXRlZCB3aGVuIFdpbmUgY2hhbmdlZCBpdHMKICAgICAgICAgICAgICBsaWNlbnNlIGZyb20gWDExIHRvIHRoZSBtb3JlIHJlc3RyaWN0aXZlIExHUEwsIGluIG9yZGVyIHRvIGxldCAKICAgICAgICAgICAgICBwZW9wbGUgY29udGludWUgdG8gbWFpbnRhaW4gYW4gWDExIGxpY2Vuc2VkIFdpbmUgdmVyc2lvbi4gSXRzIAogICAgICAgICAgICAgIGxpY2Vuc2UgaXMgWDExLCBpdCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2dhbWluZy5jb20iPlRyYW5zZ2FtaW5nJ3MgV2luZVg8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBUcmFuc0dhbWluZydzIFdpbmUgdmVyc2lvbiBzcGVjaWFsbHkgc3VpdGVkIGZvcgogICAgICAgICAgICAgIGdhbWVzLiAgSXQgaW5jbHVkZXMgbW9yZSBtYXR1cmUgRGlyZWN0M0Qgc3VwcG9ydCB0aGFuCiAgICAgICAgICAgICAgV2luZUhRLCBhbHRob3VnaCB0aGVzZSBkYXlzIFdpbmVIUSBoYXMgcXVpdGUgYWR2YW5jZWQKICAgICAgICAgICAgICBEM0Qgc3VwcG9ydCBhcyB3ZWxsLiBNb3N0IG9mIHRoZSBjb2RlIGlzIHVuZGVyIHRoZSBBRlBMCiAgICAgICAgICAgICAgYW5kIGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEhvd2V2ZXIgVHJhbnNnYW1pbmcgYWxzbyBkaXN0cmlidXRlcyBiaW5hcmllcyB0aGF0IGNvbnRhaW4KICAgICAgICAgICAgICBpbXByb3ZlZCBjb3B5IHByb3RlY3Rpb24gc3VwcG9ydCAobmVlZGVkIGZvciBtYW55CiAgICAgICAgICAgICAgZ2FtZXMpLCBzdXBwb3J0LCBhbmQgb3RoZXIgZW5oYW5jZW1lbnRzLiBUaGVzZSBwYWNrYWdlcyBhcmUKICAgICAgICAgICAgICBvbmx5IGF2YWlsYWJsZSBpbiBiaW5hcnkgZm9ybSB0byBzdWJzY3JpYmVkIGN1c3RvbWVycwogICAgICAgICAgICAgICgkNS9tb250aCkuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd2luZS5jb2Rld2VhdmVycy5jb20iPkNvZGVXZWF2ZXJzJyBXaW5lIHByZXZpZXc8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBhIHNwZWNpYWwgcGFja2FnZWQgdmVyc2lvbiBvZiB0aGUgc3RhbmRhcmQgV2luZSB0cmVlCiAgICAgICAgICAgICAgd2hpY2ggaGFzIGEgbmljZSBzZXR1cCBmb3IgZWFzeSBpbnN0YWxsYXRpb24uIExpY2Vuc2UgTEdQTCwgZnJlZQogICAgICAgICAgICAgIGRvd25sb2FkLiBJdCdzIHByZXR0eSBvbGQgbm93LCBhbmQgbm90IHJlY29tbWVuZGVkIGZvciBnZW5lcmFsIHVzZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL2Nyb3Nzb3Zlci8iPkNvZGVXZWF2ZXJzJyBDcm9zc292ZXIgUGx1Z2luPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFNwZWNpYWwgV2luZSBpbnN0YWxsYXRpb24gdG8gYmUgdXNlZCBmb3IgcnVubmluZyBXaW5kb3dzCiAgICAgICAgICAgICAgTmV0c2NhcGUgYnJvd3NlciBwbHVnaW5zIHN1Y2ggYXMgZS5nLiBRdWlja1RpbWUgaW4gTGludXgKICAgICAgICAgICAgICBicm93c2Vycy4gQ29zdHMgJDI0Ljk1LgogICAgICAgICAgICAgIFdlbGwgd29ydGggaXQgKHZlcnkgc3RhYmxlIGFuZCB1c2VmdWwgcGFja2FnaW5nKS4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9vZmZpY2UvIj5Db2RlV2VhdmVycycgQ3Jvc3NvdmVyIE9mZmljZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBXaW5lIHZlcnNpb24gd2l0aCBzcGVjaWFsIHBhY2thZ2luZyB0byBtYWtlIHN1cmUgYWxtb3N0IGFsbCAKICAgICAgICAgICAgICBpbXBvcnRhbnQgT2ZmaWNlIHR5cGUgcHJvZ3JhbXMgd29yayBwcmV0dHkgd2VsbC4gQ29zdHMgJDU0Ljk1LiAKICAgICAgICAgICAgICBTZWVtcyB0byBiZSB3ZWxsIHdvcnRoIGl0IHNvIGZhciBhY2NvcmRpbmcgdG8gc29tZSBjb21tZW50cy4gCiAgICAgICAgICAgICAgKG5vdGU6IHlvdSdyZSBzdXBwb3J0aW5nIGEgY29tcGFueSBhY3RpdmVseSBjb250cmlidXRpbmcgdG8gV2luZQogICAgICAgICAgICAgIGlmIHlvdSBkZWNpZGUgdG8gYnV5IGVpdGhlciBQbHVnaW4gb3IgT2ZmaWNlLikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj5PdGhlciBwYWNrYWdlZCB2ZXJzaW9ucyBvZiBXaW5lPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFZhcmlvdXMgV2luZSBwYWNrYWdlcyBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZSBmcm9tCiAgICAgICAgICAgICAgV2luZSBIUS4gVGhleSBhcmUgbm90IG9mZmljaWFsbHkgcGFja2FnZWQgYnkgV2luZSBIUSwgYW5kIGFzCiAgICAgICAgICAgICAgc3VjaCBtYXkgaGF2ZSBzb21lIGNvbmZpZ3VyYXRpb24gaW5jb25zaXN0ZW5jaWVzLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0cy10aGUtaGlzdG9yeS1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0J3MgdGhlIGhpc3Rvcnkgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgV2luZSBwcm9qZWN0IHN0YXJ0ZWQgaW4gMTk5MyBhcyBhIHdheSB0byBzdXBwb3J0IHJ1bm5pbmcgV2luZG93cyAzLjEKICAgICAgICAgIHByb2dyYW1zIG9uIExpbnV4LiBCb2IgQW1zdGFkdCB3YXMgdGhlIG9yaWdpbmFsIGNvb3JkaW5hdG9yLCBidXQgdHVybmVkCiAgICAgICAgICBpdCBvdmVyIGZhaXJseSBlYXJseSBvbiB0byBBbGV4YW5kcmUgSnVsbGlhcmQsIHdobyBoYXMgcnVuIGl0IGV2ZXIgCiAgICAgICAgICBzaW5jZS4gQSA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+bmV3c2dyb3VwPC91bGluaz4KICAgICAgICAgIHdhcyBjcmVhdGVkIGluIEp1bHkgMTk5NC4gT3ZlciB0aGUgeWVhcnMsIHBvcnRzIGZvcgogICAgICAgICAgb3RoZXIgVW5peGVzIGhhdmUgYmVlbiBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciBXaW4zMiBhcyBXaW4zMiAKICAgICAgICAgIGFwcGxpY2F0aW9ucyBiZWNhbWUgcG9wdWxhci4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC5zaHRtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQuc2h0bWw8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZG93bmxvYWQuc2h0bWwiPnRoZSBEb3dubG9hZCBwYWdlPC91bGluaz4KICAgICAgICAgIGZvciBzb21lIG9mIHRoZXNlIGNob2ljZXMpLCB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgZ2V0dGluZyAKICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbiBieSB3YXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGVuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gT2N0b2JlciAzMSwgMjAwMgogICAgICAgICAgd2FzIGNhbGxlZCBXaW5lLTIwMDIxMDMxLnRhci5nei4gUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLiBJZgogICAgICAgICAgeW91IGFyZSBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIGFuZCBhcHBseSAKICAgICAgICAgIGp1c3QgdGhlIGN1cnJlbnQgcGF0Y2ggZmlsZSByYXRoZXIgdGhhbiB0aGUgZW50aXJlIG5ldyBkaXN0cmlidXRpb24uCiAgICAgICAgICBUaGUgcGF0Y2ggZmlsZW5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCI+CiAgICAgICAgICBSZWFkLW9ubHkgQ1ZTPC91bGluaz4gYWNjZXNzIGlzIGFsc28gYXZhaWxhYmxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtU3RhdHVzLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgU3RhdHVzIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgbWlkIDIwMDMsIFdpbmUgY29uc2lzdHMgb2YgYWJvdXQgMS40IG1pbGxpb24gbGluZXMgb2YgY29kZSwKICAgICAgICAgIHdyaXR0ZW4gYnkgbW9yZSB0aGFuIDU1MCBkZXZlbG9wZXJzIGZyb20gZG96ZW5zIG9mIGNvdW50cmllcyBhcm91bmQKICAgICAgICAgIHRoZSB3b3JsZC4gV2luZSBpcyBpbiBhY3RpdmUgdXNlIGJ5IGFuIGVzdGltYXRlZCAxMDBLIHBlb3BsZS4gV2luZQogICAgICAgICAgaW1wbGVtZW50cyBtb3JlIHRoYW4gOTAlIG9mIHRoZSBjYWxscyBpbiBwb3B1bGFyIFdpbmRvd3MgCiAgICAgICAgICBzcGVjaWZpY2F0aW9ucyBzdWNoIGFzIEVDTUEtMjM0IGFuZCBPcGVuMzIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG1heSBhbHNvIHdhbnQgdG8gbG9vayBhdCB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC9pbmRleC5waHA/c3RhdHVzIj4KICAgICAgICAgIFN0YXR1cyBwYWdlPC91bGluaz4gZm9yIGEgZ2xvYmFsIHZpZXcgb24gV2luZSdzIGltcGxlbWVudGF0aW9uIHByb2dyZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4td2lsbC1XaW5lLWJlLWZpbmlzaGVkIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBiZSBmaW5pc2hlZD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMYXJnZSBzb2Z0d2FyZSBwcm9qZWN0cyBhcmUgbmV2ZXIgZmluaXNoZWQsIG9ubHkgcmVsZWFzZWQuIEluIGFueQogICAgICAgICAgY2FzZSBXaW5lIGlzIGNoYXNpbmcgYSBtb3ZpbmcgdGFyZ2V0IHNpbmNlIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIAogICAgICAgICAgV2luZG93cyBjb250YWlucyBuZXcgQVBJIGNhbGxzIG9yIHZhcmlhdGlvbnMgb24gdGhlIGV4aXN0aW5nIG9uZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBieSB2b2x1bnRlZXJzLCBpdCBpcyBkaWZmaWN1bHQgdG8KICAgICAgICAgIHByZWRpY3Qgd2hlbiBpdCB3aWxsIGJlIHJlYWR5IGZvciBnZW5lcmFsIHJlbGVhc2UuIEJ1dCBkdWUgdG8gdGhlCiAgICAgICAgICBtdWNoIGluY3JlYXNlZCBpbnRlcmVzdCBieSBjb21wYW5pZXMgaW4gcG9ydGluZyBhcHBzIHZpYSBXaW5lLCBXaW5lCiAgICAgICAgICBkZXZlbG9wbWVudCBpcyBjb25zdGFudGx5IGdldHRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUuIFJpZ2h0IG5vdwogICAgICAgICAgd2UgYXJlIHdvcmtpbmcgb24gcmVsZWFzaW5nIFdpbmUgMC45IGluIDIwMDMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hvLWlzLXJlc3BvbnNpYmxlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5XaG8gaXMgcmVzcG9uc2libGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBhdmFpbGFibGUgdGhhbmtzIHRvIHRoZSB3b3JrIG9mIG1hbnkgcGVvcGxlLiBQbGVhc2Ugc2VlIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9BVVRIT1JTIj5BVVRIT1JTPC91bGluaz4KICAgICAgICAgIGZpbGUgaW4gdGhlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGNvbXBsZXRlIGxpc3QuIFNvbWUgY29tcGFuaWVzIHRoYXQKICAgICAgICAgIGFyZSBvciBoYXZlIGJlZW4gaW52b2x2ZWQgd2l0aCBXaW5lIGRldmVsb3BtZW50IGFyZSBDb2RlV2VhdmVycywKICAgICAgICAgIFRyYW5zR2FtaW5nLCBDb3JlbCwgYW5kIE1hY2FkYW1pYW4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iZm9sa3Mtd2hvLWNvbnRyaWJ1dGVkLW1vbmV5LW9yLWVxdWlwbWVudCI+CiAgICAgICAgPHBhcmE+V2hvIGFyZSB0aGUgZm9sa3MgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgY29udHJpYnV0ZWQgbW9uZXkgb3IgZXF1aXBtZW50IHRvIHRoZSBXaW5lIHByb2plY3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGVvcGxlIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGdpdmVuIGdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgb2YKICAgICAgICAgIG1vbmV5LCBlcXVpcG1lbnQsIG9yIGxpY2Vuc2VzLCBpbmNsdWRlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5EYXZpZCBMLiBIYXJwZXI8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Cb2IgSGVwcGxlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+TWFyayBBLiBIb3J0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5LZXZpbiBQLiBMYXd0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5UaGUgU3ludHJvcHkgSW5zdGl0dXRlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+SmFtZXMgV291bGZlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBWTVdhcmUgSW5jLiAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cudm13YXJlLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvcmVsICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvcmVsLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LmNvcmVsLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC11bmRvY3VtZW50ZWQtQVBJcy1hcmUtbm90LXVuZGVyc3Rvb2QiPgogICAgICAgIDxwYXJhPldoYXQgdW5kb2N1bWVudGVkIEFQSXMgLyBpbnRlcmZhY2VzIGFyZSBub3QgdW5kZXJzdG9vZD8gV291bGQKICAgICAgICAgICAgICBzZWVpbmcgTWljcm9zb2Z0IHNvdXJjZSBoZWxwPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBiZXN0IHdvdWxkIGJlIGlmIHRoZSBXaW5kb3dzIEFQSSB3YXMgZnVsbHkgZG9jdW1lbnRlZCwgc28gV2luZQogICAgICAgICAgY291bGQgYmUgYSBwZXJmZWN0ICJjbGVhbi1yb29tIiBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBzb3VyY2UKICAgICAgICAgIGNvZGUgbWlnaHQgbWFrZSBpdCBoYXJkZXIgdG8gcHJvdmUgdGhhdCBubyBjb3B5cmlnaHQgdmlvbGF0aW9ucyBoYXZlCiAgICAgICAgICB0YWtlbiBwbGFjZS4gVGhhdCBzYWlkLCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBvZnRlbiBiYWQsIG5vbmV4aXN0ZW50LAogICAgICAgICAgYW5kIGV2ZW4gbWlzbGVhZGluZyB3aGVyZSBpdCBleGlzdHMsIHNvIGEgZmFpciBhbW91bnQgb2YgcmV2ZXJzZQogICAgICAgICAgZW5naW5lZXJpbmcgaGFzIGJlZW4gbmVjZXNzYXJ5LCBwYXJ0aWN1bGFybHkgaW4gdGhlIHNoZWxsIChFeHBsb3JlcikKICAgICAgICAgIGludGVyZmFjZS4gVGhlIGJpZ2dlc3QgcHJvYmxlbSBmYWNpbmcgV2luZSB0aG91Z2ggaXMgc2ltcGx5IGxhY2sgb2YKCSAgbWFucG93ZXIuIEF0IG9uZSBwb2ludCwgb3ZlciA1MDAwIHBlb3BsZSB3ZXJlIHdvcmtpbmcgb24gV2luZG93cyAyMDAwLgoJICBXaGlsZSBXaW5lIGRvZXNuJ3QgbmVlZCB0byByZXBsaWNhdGUgYWxsIG9mIFdpbmRvd3MgKHdlIG9ubHkgY292ZXIgdGhlCgkgIHBhcnRzIG5lZWRlZCB0byBtYWtlIFdpbmRvd3MgcHJvZ3JhbXMgd29yayksIHRoYXQncyBzdGlsbCBuZWFybHkgMTAgdGltZXMKCSAgbW9yZSBwZW9wbGUgd29ya2luZyBzaW1wbHkgb24gb25lIHJlbGVhc2UgdGhhbiBoYXZlIDxlbXBoYXNpcz5ldmVyPC9lbXBoYXNpcz4KCSAgd29ya2VkIG9uIFdpbmUsIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtVHJhbnNHYW1pbmdzLWxhc3QtcGF0Y2gtaW5jbHVkZWQtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SXMgVHJhbnNHYW1pbmcncyBsYXRlc3QgcGF0Y2ggaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIFdpbmUgcmVsZWFzZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBObywgaXQncyBub3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJhbnNHYW1pbmcgbWFrZXMgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UgYW5kIHRoZSBsaWNlbnNlCiAgICAgICAgICBvZiB0aGVpciBXaW5lWCB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5lIGxpY2Vuc2UuIFRodXMKICAgICAgICAgIFdpbmVYIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgdGhlIFdpbmUgdHJlZS4gSG93ZXZlciBpdCBzZWVtcyB1bmxpa2VseSB0aGV5IHdpbGwgc3VibWl0IHRoZWlyCiAgICAgICAgICBEaXJlY3QzRCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtdGhlcmUtYmUtYS1XaW5kb3dzLXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvbWUgcGVvcGxlIGFyZSB3b3JraW5nIG9uIGdldHRpbmcgV2luZSBjb2RlIHRvIGNvbXBpbGUgb24gV2luZG93cy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEN5Z3dpbiAoPHVsaW5rIHVybD0iaHR0cDovd3d3LmN5Z3dpbi5jb20iPgogICAgICAgICAgICAgIGh0dHA6Ly93d3cuY3lnd2luLmNvbS88L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RvcyAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5yZWFjdG9zLmNvbS8iPgogICAgICAgICAgICAgaHR0cDovL3d3dy5yZWFjdG9zLmNvbS88L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlJ3Mgc29tZSBwcm9ncmVzcywgc28gYSBXaW5lIHZlcnNpb24gdGhhdCdzIHVzYWJsZSBvbiBXaW5kb3dzCiAgICAgICAgICBtaWdodCBiZSBhdmFpbGFibGUgYXQgc29tZSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IldoYXQtZG8tSS1uZWVkLWluLW9yZGVyLXRvLXVzZS1XaW5lIj4KICAgICAgPHRpdGxlPldoYXQgZG8gSSBuZWVkIGluIG9yZGVyIHRvIHVzZSBXaW5lPzwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlVuZGVyLXdoYXQtcGxhdGZvcm1zLXdpbGwtV2luZS1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVW5kZXIgd2hhdCBoYXJkd2FyZSBwbGF0Zm9ybShzKSBhbmQgb3BlcmF0aW5nIHN5c3RlbShzKSB3aWxsCiAgICAgICAgICBXaW5lKExpYikgcnVuPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIHNwZWNpZmljYWxseSB0byBydW4gb24gdGhlIDxlbXBoYXNpcz5JbnRlbCB4ODY8L2VtcGhhc2lzPiBjbGFzcyBvZiBDUFVzIHVuZGVyIGNlcnRhaW4gVU5JWGVzIHRoYXQgcnVuIG9uIHRoZSB4ODYgcGxhdGZvcm0uCgkgIFdpbmVsaWIgaG93ZXZlciBpcyBjYXBhYmxlIG9mIHBvcnRpbmcgV2luZG93cyBwcm9ncmFtIDxlbXBoYXNpcz5zb3VyY2UgY29kZTwvZW1waGFzaXM+IHRvIG90aGVyIHBsYXRmb3JtcyBhbHNvLCBub3Qgb25seSB4ODYuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGh1cyBydW5uaW5nIFdpbmRvd3MgcHJvZ3JhbXMgdmlhIFdpbmUgb24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIE1hY09TIFgpIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBwb3NzaWJsZTsgdGhlIG9ubHkgd2F5IHRvIHJ1biBXaW5kb3dzIGNvZGUKCSAgb24gTWFjT1MgWCB3b3VsZCBiZSB0byB0YWtlIFdpbmRvd3MgcHJvZ3JhbSBzb3VyY2UgY29kZSBhbmQgcmVjb21waWxlIGl0IGZvciBlLmcuIE1hY09TIFggdXNpbmcgV2luZWxpYi4KCTwvcGFyYT4KCTxwYXJhPgoJICBUaGUgZm9sbG93aW5nIHdpbGwgbGlzdCB0aGUgeDg2IG9wZXJhdGluZyBzeXN0ZW1zIHN1cHBvcnRlZCBieQoJICBXaW5lOyBXaW5lbGliIHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3JtcyBrZWVwcyBldm9sdmluZywKCSAgc28gaXQncyBub3Qgc3BlY2lmaWNhbGx5IGxpc3RlZCBoZXJlLgoJPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTmV0QlNELCBPcGVuQlNELCBVbml4d2FyZSwgYW5kIFNDTyBPcGVuU2VydmVyIDUgd29ya2VkIGF0IG9uZSB0aW1lLAogICAgICAgICAgYnV0IFdpbmUgbm93IHJlcXVpcmVzIGtlcm5lbC1sZXZlbCB0aHJlYWRzIHdoaWNoIGFyZSBub3QgY3VycmVudGx5IAogICAgICAgICAgYXZhaWxhYmxlIChvciB1bmRlcnN0b29kIGJ5IHRoZSBXaW5lIHRlYW0pIG9uIHRob3NlIHBsYXRmb3Jtcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgV2luZSBkZXZlbG9wbWVudCB0ZWFtIGhvcGVzIHRvIGF0dHJhY3QgdGhlIGludGVyZXN0IG9mIG90aGVyCiAgICAgICAgICBjb21tZXJjaWFsIFVOSVggYW5kIFVOSVggY2xvbmUgdmVuZG9ycyBhcyB3ZWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlT1M6IHBvcnRpbmcgZWZmb3J0cyB1c2VkIHRvIGJlIHByZXR0eSBzdHJvbmcsIGJ1dCBCZU9TIGhhcyBzZXZlcmUKICAgICAgICAgIGxpbWl0YXRpb25zIGluIFVuaXggY2FsbCBzdXBwb3J0LCBzbyBhIHBvcnQgd2lsbCBwcm9iYWJseSBuZXZlcgogICAgICAgICAgaGFwcGVuLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZyZWVCU0Q6IFNob3VsZCB3b3JrLCB3aXRoIGxpbWl0YXRpb25zIGluIHNwZWNpZmljIGFyZWFzIChtYWlubHkgCiAgICAgICAgICBtaXNzaW5nIGRldmljZS9oYXJkd2FyZSBzdXBwb3J0KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMaW51eC94ODY6IFdvcmtzLCBhbmQgYXMgdGhlIG1vc3QgcG9wdWxhciBwbGF0Zm9ybSBmb3IgYm90aAogICAgICAgICAgZGV2ZWxvcGVycyBhbmQgdXNlcnMsIGl0IGlzIHRoZSBiZXN0IHN1cHBvcnRlZCBwbGF0Zm9ybSBvZiBhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1taW5pbXVtLUNQVS1tdXN0LUktaGF2ZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG1pbmltdW0gQ1BVIG11c3QgSSBoYXZlIGluIG15IGNvbXB1dGVyIHRvIGJlIGFibGUgdG8gcnVuIFdpbmUgCiAgICAgICAgICBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gV2luZSBhbmQgV2luZWxpYiBoZXJlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgd29uJ3QgcnVuIG9uIGFueSB4ODYgQ1BVIGxlc3MgdGhhbiBhbiA4MDM4NiBkdWUgdG8gYWRkcmVzcwogICAgICAgICAgbWFuYWdlbWVudCBsaW1pdGF0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBrbm93biB0byBhbHNvIHdvcmsgaW4gdGhlIDgwNDg2IGFuZCB1cHdhcmRzIGNvbXBhdGlibGUgQ1BVcy4KICAgICAgICAgIFRoZSBiYXNpYyB0ZXN0IGlzLCBpZiB5b3UgY2FuIHJ1biBYMTEgbm93LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyB1bmRlciBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBhbHdheXMsIHRoZSBmYXN0ZXIgeW91ciBDUFUsIHRoZSBiZXR0ZXIuIEhhdmluZyBhIG1hdGggY29wcm9jZXNzb3IKICAgICAgICAgIGlzIHVuaW1wb3J0YW50LiBIb3dldmVyLCBoYXZpbmcgYSBncmFwaGljcyBhY2NlbGVyYXRlZCB2aWRlbyBjYXJkCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgWCB3aWxsIGhlbHAgZ3JlYXRseS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBhcHBsaWNhdGlvbiB5b3UgbWF5IGZpbmQgdGhhdCBmYXN0ZXIgc3BlZWRzIGFyZQogICAgICAgICAgcmVxdWlyZWQgZm9yIHNlbnNpYmxlIHVzZS4gV2UgY2FuJ3QgZ2l2ZSBzcGVjaWZpYyBhZHZpY2Ugb24gdGhhdCBkdWUKICAgICAgICAgIHRvIHRoZSB2YXN0IHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUuIEhvd2V2ZXIgdGhlIHJ1bGUgb2YKICAgICAgICAgIHRodW1iIGlzIHRoYXQgaWYgeW91ciBhcHBsaWNhdGlvbiBydW5zIGZpbmUgb24gV2luZG93cywgaXQgc2hvdWxkCiAgICAgICAgICBydW4gZmluZSBvbiB0aGUgc2FtZSBwbGF0Zm9ybSBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLWRpc2stc3BhY2Utd2lsbC1XaW5lLXRha2UiPgogICAgICAgIDxwYXJhPgogICAgICAgICBIb3cgbXVjaCBkaXNrIHNwYWNlIHdpbGwgdGhlIFdpbmUgc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzIHRha2Ugb24gbXkKICAgICAgICAgaGFyZCBkcml2ZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbmVlZCBhcHByb3hpbWF0ZWx5IDI1MCBtZWdhYnl0ZXMgb2YgZnJlZSBoYXJkIGRyaXZlIHNwYWNlIHRvCiAgICAgICAgICBzdG9yZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGUuIFdpbmUgYWxzbyBuZWVkcyBhYm91dCAxOCBtZWdzIGluCiAgICAgICAgICB5b3VyIC90bXAgZGlyZWN0b3J5LiBBbmQgYWJvdXQgNTAgTUIgYXJlIG5lZWRlZCB0byBkbyBhIG1ha2UgaW5zdGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCaW5hcnkgcGFja2FnZXMsIGVzcGVjaWFsbHkgdGhvc2Ugbm90IGNvbnRhaW5pbmcgZGVidWcgaW5mb3JtYXRpb24sCiAgICAgICAgICBoYXZlIG11Y2ggbG93ZXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMsIHVzdWFsbHkgaW4gdGhlIDIwTUIgcmFuZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1vdGhlci1zb2Z0d2FyZS1kby1JLW5lZWQtdG8tY29tcGlsZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG90aGVyIHNvZnR3YXJlIGRvIEkgbmVlZCB0byBpbnN0YWxsLCBjb21waWxlIGFuZCBydW4KICAgICAgICAgIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBkZXZlbG9wbWVudCB0b29scyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGNvbXBpbGUgV2luZS4KICAgICAgICAgIEEgbGlzdCBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBkaXN0cmlidXRpb25zIGlzIGluY2x1ZGVkIGluCiAgICAgICAgICB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRTwvdWxpbms+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBydW4gV2luZSwgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPlRoZSBjb21waWxlZCBXaW5lIGJpbmFyeTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkEgcHJvcGVybHkgY29uZmlndXJlZCB3aW5lLmNvbmYgZmlsZSAob3Igfi8ud2luZXJjIGZpbGUpPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QW4gaW5zdGFsbGVkIGFuZCB3b3JraW5nIFggV2luZG93IHN5c3RlbTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlNvbWUgV2luZG93cyBwcm9ncmFtcyB0byB0ZXN0PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLVJBTS1kby1JLW5lZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93IG11Y2ggUkFNIGRvIEkgbmVlZCB0byBoYXZlIG9uIG15IFVOSVggc3lzdGVtIHRvIGJlIGFibGUgdG8gcnVuIAogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBydW4gWCBzbW9vdGhseSBvbiB5b3VyIFVOSVggc3lzdGVtIG5vdywgeW91IHNob3VsZCBiZSAKICAgICAgICAgIGFibGUgdG8gcnVuIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGp1c3QgZmluZSB0b28sIGRlcGVuZGluZwogICAgICAgICAgb24gaG93IG1lbW9yeSBodW5ncnkgdGhlIGFwcGxpY2F0aW9uIGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgV2luZSB3b3Jrc3RhdGlvbiB3aWxsIHdvcmsgd2l0aCAxNiBtZWdhYnl0ZXMgb2YgUkFNIGFuZCBhIDE2IAogICAgICAgICAgbWVnYWJ5dGUgc3dhcCBwYXJ0aXRpb24gYXMgbG9uZyBhcyB5b3UgaGF2ZSBhIHJlYXNvbmFibGUgZ3JhcGhpY3MgCiAgICAgICAgICBjYXJkLiBNb3N0IGFwcGxpY2F0aW9ucyB3aWxsIHJ1biByZWFzb25hYmx5IHdpdGggNjQvNjQgTWIsIAogICAgICAgICAgaW50ZXJhY3RpdmUgZ2FtZXMgYXJlIGxpa2VseSB0byBuZWVkIG1vcmUuIFlvdSBjYW4gcnVuIFdpbmUgd2l0aCA4LzgsCiAgICAgICAgICBidXQgaXQgaXMgZ29pbmcgdG8gYmUgdW51c2FibHkgc2xvdyBhbmQgdmVyeSBjb25zdHJhaW5pbmcgb24gdGhlIAogICAgICAgICAgYXBwbGljYXRpb25zIHlvdSBjYW4gcnVuLiBJZiB5b3Ugd2lzaCB0byBiZSBwYXJ0IG9mIHRoZSBkZXZlbG9wbWVudAogICAgICAgICAgdGVhbSBhbmQgcHJvZ3JhbSBXaW5lIGl0c2VsZiwgYmUgYXdhcmUgdGhhdCB0aGUgZGVidWdnZXIgaXMgcmF0aGVyIAogICAgICAgICAgbWVtb3J5IGludGVuc2l2ZS4gU29tZSBoYXZlIHN1Z2dlc3RlZCB0aGF0IDY0IG1lZ2FieXRlcyBpcyB0aGUKICAgICAgICAgIG1pbmltdW0gUkFNIG5lZWRlZCBmb3IgV2luZSBkZXZlbG9wbWVudCwgYWx0aG91Z2ggc29tZSBhcmUgYWJsZSB0byAKICAgICAgICAgIHdvcmsgKGFsYmVpdCBzbG93bHkpIHdpdGggMjQgbWVnYWJ5dGVzIG9mIHBoeXNpY2FsIFJBTSBhbmQgbG90cyBvZgogICAgICAgICAgc3dhcCBzcGFjZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbG9uZy1kb2VzLVdpbmUtdGFrZS10by1idWlsZCI+CiAgICAgICAgPHBhcmE+SG93IGxvbmcgZG9lcyBXaW5lIHRha2UgdG8gYnVpbGQ8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGdldHRpbmcgdG8gYmUgcXVpdGUgbGFyZ2UsIGFuZCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggdGFrZXMgYQogICAgICAgICAgbG90IG9mIHByb2Nlc3NpbmcuIEFzIG9mIFNlcHRlbWJlciAyMDAyLCBjb21waWxlIHRpbWVzIHdlcmUgYXJvdW5kIDIwCiAgICAgICAgICBtaW51dGVzIG9uIGFuIEF0aGxvbiAxMjAwIHdpdGggNjQwIE1iIGFuZCA0NS01MCBtaW51dGVzIG9uIGEgQ3lyaXggCiAgICAgICAgICAzMDAgd2l0aCA2NCBNYi4gSWYgeW91IGhhdmUgYSBDVlMgY29weSwgeW91IG1heSBub3QgbmVlZCB0byByZWJ1aWxkCiAgICAgICAgICB0aGUgd2hvbGUgdGhpbmcgZXZlcnkgdGltZSB5b3UgdXBkYXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLWEtRHJpdmVzcGFjZWQtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IgU3RhY2tlcmVkIERPUyBwYXJ0aXRpb24uIENhbiAKICAgICAgICAgIFdpbmUgcnVuIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiBzdWNoIGEgcGFydGl0aW9uPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYnV0IG9ubHkgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgdGhvc2UgdHlwZXMKICAgICAgICAgIG9mIGRyaXZlcy4gVGhlcmUgaXMgYSBMaW51eCBmaWxlIHN5c3RlbSBkcml2ZXIgY2FsbGVkIGRtc2RvcyB0aGF0CiAgICAgICAgICB3aWxsIGFsbG93IHJlYWQvd3JpdGUgYWNjZXNzIHRvIERvdWJsZXNwYWNlZCBhbmQgRHJpdmVzcGFjZSAxLjAKICAgICAgICAgIGRyaXZlcy4gTW9yZSBzcGVjaWZpY2FsbHksIGl0IHN1cHBvcnRzIG1vdW50aW5nIERPUyA2LjAgYW5kIDYuMiAKICAgICAgICAgIERvdWJsZXNwYWNlZCwgRE9TIDYuMjIgRHJpdmVzcGFjZWQsIGFuZCBXaW5kb3dzIDk1IERvdWJsZXNwYWNlZCAKICAgICAgICAgIGNvbXByZXNzZWQgcGFydGl0aW9ucyAocmVhZCBhbmQgd3JpdGUgYWNjZXNzIHdvcmtzIGZpbmUsIGJ1dCB3cml0ZSAKICAgICAgICAgIGFjY2VzcyBpcyBzbG93KS4gSXQgY2FuIGJlIGZvdW5kIGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvIj4KICAgICAgICAgIGZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGUgc3lzdGVtcy9kb3Nmcy88L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvLUktbmVlZC10by1oYXZlLWEtRE9TLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+RG8gSSBuZWVkIHRvIGhhdmUgYSBET1MgcGFydGl0aW9uIG9uIG15IHN5c3RlbSB0byB1c2UgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgYSBsaWNlbnNlZCBhbmQgaW5zdGFsbGVkIGNvcHkgb2YgRE9TIG9yIE1TIFdpbmRvd3MgdG8KICAgICAgICAgIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgcnVuIFdpbmUuIEhvd2V2ZXIsIFdpbmUgaGFzIHRvIGJlIGFibGUgdG8gCiAgICAgICAgICAnc2VlJyBhbiBNUyBXaW5kb3dzIGJpbmFyeSAoaS5lLiBhcHBsaWNhdGlvbikgaWYgaXQgaXMgdG8gcnVuIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEb2VzLU1TLVdpbmRvd3MtbmVlZC10by1iZS1pbnN0YWxsZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRG9lcyBNUyBXaW5kb3dzIG5lZWQgdG8gYmUgbG9hZGVkIGludG8gdGhhdCBwYXJ0aXRpb24gaW4gb3JkZXIgdG8KICAgICAgICAgIHJ1biBNUyBXaW5kb3dzIHByb2dyYW1zIHVuZGVyIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBmb2xrcyBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgYW5kIHJ1biBwcm9ncmFtcwogICAgICAgICAgaW4gdGhlaXIgVU5JWCBmaWxlc3lzdGVtIHdpdGhvdXQgaGF2aW5nIGEgRE9TIHBhcnRpdGlvbiBvciBNUyAKICAgICAgICAgIFdpbmRvd3MuIEhvd2V2ZXIsIGluIG1hbnkgY2FzZXMgeW91IG5lZWQgYSBkaXJlY3RvcnkgYW5kIGZpbGUgCiAgICAgICAgICBpbmZyYXN0cnVjdHVyZSB0aGF0IGlzIHNpbWlsYXIgdG8gYW4gZXhpc3RpbmcgV2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICBTb21lIGFwcGxpY2F0aW9ucycgaW5zdGFsbGF0aW9uIHByb2dyYW1zIHdhbnQgdG8gZGlzdHJpYnV0ZSBzb21lIG9mCiAgICAgICAgICB0aGUgcGFja2FnZSdzIGZpbGVzIGludG8gdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBpbiBvcmRlciB0byBydW4sIGFuZCB1bmxlc3MgdGhlc2UgZXhpc3Qgb24geW91ciBVTklYIAogICAgICAgICAgZmlsZSBzeXN0ZW0sIHRob3NlIHByb2dyYW1zIHdpbGwgbm90IGluc3RhbGwgY29ycmVjdGx5IGFuZCBwcm9iYWJseQogICAgICAgICAgd2lsbCBub3QgcnVuIHdlbGwsIGlmIGF0IGFsbC4gTW9zdCBwYWNrYWdlcyB3aWxsIHNldCB0aGF0IHVwIGZvciB5b3UKCSAgYXMgcGFydCBvZiB0aGUgaW5zdGFsbCBwcm9jZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiB3aXRoIE1TIFdpbmRvd3MgaW5zdGFsbGVkIGluIGl0LCBtYWtlCiAgICAgICAgICBzdXJlIHRoYXQgeW91ciBVTklYIHN5c3RlbSBjYW4gJ3NlZScgdGhpcyBwYXJ0aXRpb24gKGNoZWNrIHlvdXIgCiAgICAgICAgICAvZXRjL2ZzdGFiIGZpbGUgb3IgbW91bnQgdGhlIHBhcnRpdGlvbiBtYW51YWxseSkgc28gdGhhdCBXaW5lIGNhbgogICAgICAgICAgcnVuIHRoZSBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gdGhlIERPUyBwYXJ0aXRpb24uIFRvIHJ1bgogICAgICAgICAgd2l0aG91dCBhIERPUyBwYXJ0aXRpb24sIHlvdSBuZWVkIHRvIHNldCBhIFVOSVggcGF0aCB0byBiZSB5b3VyIAogICAgICAgICAgZHJpdmUgQywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgcG9pbnQgdG8gc29tZSBwbGFjZSB0aGF0IGFjdHVhbGx5IGV4aXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlLCBjb3BpZWQgZnJvbSBhIG1hY2hpbmUgd2hpY2ggaGFzIG5vIERPUyBwYXJ0aXRpb24KICAgICAgICAgIGJ1dCBzdWNjZXNzZnVsbHkgcnVucyBXaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgogICAgW0RyaXZlIENdICAgICAgCiAgICAgICAgICBQYXRoPS92YXIvbGliL3dpbmUKICAgICAgICAgIFR5cGU9aGQKICAgICAgICAgIExhYmVsPU1TLURPUwogICAgICAgICAgRmlsZXN5c3RlbT13aW45NQogICAgW3dpbmVdCiAgICAgICAgICBXaW5kb3dzPWM6XHdpbmRvd3MKICAgICAgICAgIFN5c3RlbT1jOlx3aW5kb3dzXHN5c3RlbQogICAgICAgICAgVGVtcD1lOlwKICAgICAgICAgIFBhdGg9Yzpcd2luZG93cztjOlx3aW5kb3dzXHN5c3RlbTtjOgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICBJbiA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzPC9maWxlbmFtZT4sIHlvdSB3aWxsIG5lZWQgdG8KICAgICAgICAgaW5zdGFsbCBhIDxmaWxlbmFtZT53aW4uaW5pPC9maWxlbmFtZT4gY29uZmlnIGZpbGUgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgZmluZCBvbiBhIHR5cGljYWwgTVMgV2luZG93cyAzLjEgbWFjaGluZS4gVGhlIGRpcmVjdG9yeQogICAgICAgICA8ZmlsZW5hbWU+L3Zhci9saWIvd2luZS93aW5kb3dzL3N5c3RlbTwvZmlsZW5hbWU+IHNob3VsZCBleGlzdCwgYnV0CiAgICAgICAgIGRvZXNuJ3QgbmVlZCB0byBjb250YWluIGFueXRoaW5nLiBIb3dldmVyLCB0byB1c2UgTVMgRExMcywgeW91IGNhbgogICAgICAgICBjb3B5IHRoZW0gaW50byB0aGF0IGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb250cmF2ZW50aW9uIG9mCiAgICAgICAgIHRoZSBXaW5kb3dzIGxpY2VuY2UgdW5sZXNzIFdpbmRvd3MgaXMgcHJvcGVybHkgaW5zdGFsbGVkIG9uIHRoZQogICAgICAgICBtYWNoaW5lLiBJZiB5b3UgaGF2ZSBET1MvTVMgV2luZG93cyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0sIHlvdSBjYW4KICAgICAgICAgbW91bnQgdGhhdCBwYXJ0aXRpb24gYXQgYm9vdHVwIGJ5IG1vZGlmeWluZyB0aGUgZmlsZSAKICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBpbiB5b3VyIFVOSVggcGFydGl0aW9uIChhc3N1bWluZyB0aGF0CiAgICAgICAgIHRoZSBVTklYIGtlcm5lbCBzdXBwb3J0cyB0aGUgRE9TL01TIFdpbmRvd3MgZmlsZXN5c3RlbSB0eXBlKS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZWRpdCB0aGlzIGZpbGUgYnkgaGFuZCwgaXQgc2hvdWxkIGNvbnRhaW4gc29tZXRoaW5nIHNpbWlsYXIKICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Ci9kZXYvaGRhMSAvZG9zYyBtc2RvcyB1aWQ9MCxnaWQ9MTAwLHVtYXNrPTAwNyAwIDAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIERPUyBwYXJ0aXRpb24gd2l0aG91dAogICAgICAgICAgYmVpbmcgcm9vdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1vc3Qgb2YgdGhlbSwgeWVzLiBIb3dldmVyLCBzb21lIGFwcGxpY2F0aW9ucyBhbmQgYXBwbGV0cyB0aGF0IGNvbWUKICAgICAgICAgIHdpdGggTVMgV2luZG93cywgc3VjaCBhcyBGaWxlIE1hbmFnZXIgYW5kIENhbGN1bGF0b3IsIGNhbiBiZSAKICAgICAgICAgIGNvbnNpZGVyZWQgYnkgc29tZSB0byBiZSByZWR1bmRhbnQsIHNpbmNlIDMyLWJpdCBVTklYIHByb2dyYW1zIHRoYXQKICAgICAgICAgIGR1cGxpY2F0ZSB0aGVzZSBhcHBsZXRzJyBmdW5jdGlvbnMgYWxyZWFkeSBleGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIG1pcnJvciwgd29yZCBvZiB0aGlzIG5ld2VzdCByZWxlYXNlCiAgICAgICAgICBtYXkgcmVhY2ggeW91IGJlZm9yZSB0aGUgcmVsZWFzZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYXQgdGhlIGZ0cAogICAgICAgICAgc2l0ZXMgbGlzdGVkIGhlcmUuIFRoZSBzb3VyY2VzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICBsb2NhdGlvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLiBGb3IgbW9yZSBkb3dubG9hZCBsb2NhdGlvbnMsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9mdHAgc2VhcmNoLmx5Y29zLmNvbS4iPmx5Y29zPC91bGluaz4gU29tZSBvZgogICAgICAgICAgdGhlc2UgZnRwIHNpdGVzIG1heSBhcmNoaXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIFdpbmUgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgIGN1cnJlbnQgb25lLiBUbyBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhdGVzdCBvbmUsIGxvb2sgYXQgdGhlIAogICAgICAgICAgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZSwgd2hpY2ggd2lsbCB0YWtlIHRoZSBmb3JtIAogICAgICAgICAgV2luZS1ZWVlZTU1ERC50YXIuZ3ouIFNpbXBseSByZXBsYWNlIFlZWVlNTUREIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZSB3aXRoIHRoZSBudW1iZXJzIGZvciB5ZWFyLCBtb250aCBhbmQgZGF0ZSwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgVGhlIGxhdGVzdCBvbmUgaXMgdGhlIG9uZSB0byBnZXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBiaW5hcnkgcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCBPUydlcyBhbmQgCiAgICAgICAgICBkaXN0cmlidXRpb25zLiBTZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZG93bmxvYWQuc2h0bWwiPgogICAgICAgICAgdGhlIGRvd25sb2FkIHBhZ2U8L3VsaW5rPiBmb3IgdGhlIG1vc3QgcmVjZW50IGxpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1DVlMtdHJlZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBDVlMgdHJlZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50IFdpbmUgc291cmNlcyBhcmUgYWxzbyBhdmFpbGFibGUgdmlhIGFub255bW91cyBjbGllbnQvc2VydmVyCiAgICAgICAgICBDVlMuIFlvdSB3aWxsIG5lZWQgQ1ZTIDEuOSBvciBhYm92ZS4gSWYgeW91IGFyZSBjb21pbmcgZnJvbSBiZWhpbmQgYQogICAgICAgICAgZmlyZXdhbGwsIHlvdSB3aWxsIGVpdGhlciBuZWVkIGEgaG9sZSBpbiB0aGUgZmlyZXdhbGwgZm9yIHRoZSBDVlMKICAgICAgICAgIHBvcnQgKDI0MDEpIG9yIHVzZSBTT0NLUy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBsb2dpbiB0byB0aGUgQ1ZTIHRyZWUsIGRvCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmN2c0BjdnMud2luZWhxLmNvbS9ob21lL3dpbmUKY3ZzIGxvZ2luCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2UgImN2cyIgYXMgdGhlIHBhc3N3b3JkICh3aXRob3V0IHRoZSBxdW90ZXMpLiBOb3RlIHRoYXQgCiAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvd2luZTwvZmlsZW5hbWU+IGlzIGEgcGF0aCBvbiB0aGUgc2VydmVyLCBub3Qgb24geW91cgogICAgICAgICAgbWFjaGluZS4gVG8gY2hlY2sgb3V0IHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSAod2hpY2ggbWF5IGJlIAogICAgICAgICAgc2xvdyksIHVzZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgb3IgaWYgeW91IGp1c3Qgd2FudCBhIHN1YnRyZWUsIG9yIGluZGl2aWR1YWwgZmlsZSwgeW91IGNhbiBkbyB0aGF0IAogICAgICAgICAgdG9vIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZS9BTk5PVU5DRSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlIGF3YXJlLCB0aG91Z2gsIHRoYXQgZ2V0dGluZyB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgdmlhIENWUwogICAgICAgICAgaXMgcHJldHR5IHNsb3csIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZ2V0dGluZyBXaW5lIGZyb20gYW4gRlRQIAogICAgICAgICAgbWlycm9yIG5lYXIgeW91LiBGb3IgYSBDVlMgbWlycm9yIGxpc3QsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLCBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRvd25sb2FkLAogICAgICAgICAgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZSB0aGUgZW50aXJlIGRpc3RyaWJ1dGlvbiBlYWNoIHdlZWsgaWYgeW91IGFyZQogICAgICAgICAgY3VycmVudCB0byB0aGUgcHJldmlvdXMgcmVsZWFzZS4gUGF0Y2ggZmlsZSByZWxlYXNlIG5hbWVzIGZvbGxvdyB0aGUKICAgICAgICAgIHNhbWUgbnVtYmVyaW5nIGNvbnZlbnRpb24gYXMgZG8gdGhlIGdlbmVyYWwgcmVsZWFzZXMsIGFuZCB0YWtlIHRoZSAKICAgICAgICAgIGZvcm0KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ogIAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgc2FtZSBzaXRlcyB0aGF0IGRpc3RyaWJ1dGUgdGhlCiAgICAgICAgICBmdWxsIHJlbGVhc2UuIFRvIHVwZ3JhZGUgdG8gYSBuZXcgcmVsZWFzZSBieSB1c2luZyBhIHBhdGNoIGZpbGUsCiAgICAgICAgICBmaXJzdCBjZCB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgcmVsZWFzZSAodGhlIG9uZQogICAgICAgICAgY29udGFpbmluZyB0aGUgUkVBRE1FIGZpbGUpLCB0aGVuIGRvIGEgIm1ha2UgY2xlYW4iLCBhbmQgcGF0Y2ggdGhlCiAgICAgICAgICByZWxlYXNlIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZ3VuemlwIC1jIHBhdGNoLWZpbGUgfCBwYXRjaCAtcDEgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB3aGVyZSBwYXRjaC1maWxlIGlzIHRoZSBuYW1lIG9mIHRoZSBwYXRjaCBmaWxlIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ouIFlvdSBjYW4gdGhlbiByZS1ydW4gLi9jb25maWd1cmUsIGFuZCB0aGVuIHJ1bgogICAgICAgICAgbWFrZSBkZXBlbmQgJiYgbWFrZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBhcmUgbWlycm9yaW5nIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBmcm9tIHRoZSB0c3gtMTEgc2l0ZSBhbmQKICAgICAgICAgIHdpc2ggdG8gYmUgbGlzdGVkIGhlcmUgaW4gdGhpcyBGQVEsIHBsZWFzZSBhZGQgaXQgdG8gdGhlIAogICAgICAgICAgInRoaW5ncyB0byBnbyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIiBhcmVhLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWdldC1XaW5lLXVzaW5nLWN2c3VwIj4KICAgICAgICA8cGFyYT5DYW4gSSBnZXQgV2luZSB1c2luZyBjdnN1cD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgQ1ZTIG1pcnJvcnMgZG9uJ3Qgb2ZmZXIgY3ZzdXAgc3VwcG9ydCB5ZXQsIGJ1dCB0aGUgbWFpbiBzZXJ2ZXIKICAgICAgICAgIGRvZXMuIFVzZSBhIDxmaWxlbmFtZT53aW5lLnN1cDwvZmlsZW5hbWU+IGZpbGUgb2Y6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CipkZWZhdWx0IGhvc3Q9Y3ZzLndpbmVocS5jb20KKmRlZmF1bHQgYmFzZT0vY3ZzCipkZWZhdWx0IHByZWZpeD0vY3ZzL3dpbmUKKmRlZmF1bHQgcmVsZWFzZT13aW5lCipkZWZhdWx0IGRlbGV0ZSAKCiMgSWYgeW91ciBuZXR3b3JrIGxpbmsgaXMgYSBUMSBvciBmYXN0ZXIsIGNvbW1lbnQgb3V0IHRoZSBmb2xsb3dpbmcgbGluZS4KIypkZWZhdWx0IGNvbXByZXNzIAoKKmRlZmF1bHQgdXNlLXJlbC1zdWZmaXggCndpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9Ikluc3RhbGxpbmctQW5kLUNvbmZpZ3VyaW5nLVdpbmUiPgogICAgICA8dGl0bGU+SW5zdGFsbGluZyBhbmQgQ29uZmlndXJpbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWNvbXBpbGUtdGhlLVdpbmUtc291cmNlLWNvZGUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGNvbXBpbGUgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIHNvdXJjZSBjb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNlZSB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRSI+aHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgZm9yIGluc3RydWN0aW9ucy4KICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IG1heSB3YW50IHRvIHNldCB0aGUgPHBhcmFtZXRlcj5UTVBESVI8L3BhcmFtZXRlcj4KICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIDxjb21tYW5kPlRNUERJUj1+L3RtcDwvY29tbWFuZD4gb3IKICAgICAgICAgIDxjb21tYW5kPlRNUERJUj0vdG1wPC9jb21tYW5kPiAoaWYgeW91IGFyZSByb290KS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1pbnN0YWxsLVdpbmRvd3MtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgaW5zdGFsbCBXaW5kb3dzIGluIFdpbmUgdW5kZXIgTGludXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2ltcGxlIGFuc3dlcjogeW91IENBTidULiBXaW5kb3dzIGRlbWFuZHMgZGlyZWN0IGFjY2VzcyB0byB0aGUKICAgICAgICAgIGhhcmR3YXJlIGFuZCBjYW5ub3QgZ2V0IGl0IHdpdGggV2luZSBhbmQgVU5JWCBpbiB0aGUgd2F5CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBzdXBwb3NlZCB0byBiZSBwcmltYXJpbHkgdXNlZCBXSVRIT1VUIFdpbmRvd3MuIElmIHlvdSB3YW50CiAgICAgICAgICB0byB1c2UgYSBXaW5kb3dzIGluc3RhbGxhdGlvbiwgdGhlbiB1c2UgYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uIAogICAgICAgICAgYWxvbmdzaWRlIHRoZSBVTklYIGluc3RhbGxhdGlvbiAoc2VlIHRoZSBkdWFsLWJvb3QgSE9XVE8gZm9yIHlvdXIgT1MKICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMpLiBPciBhbHRlcm5hdGl2ZWx5IHVzZSB0aGUgY2FiZXh0cmFjdCB1dGlsaXR5IHRvCiAgICAgICAgICBleHRyYWN0IFdpbmRvd3MgaW5zdGFsbCBhcmNoaXZlcyB0byBhIGRpcmVjdG9yeSB0aGF0IHlvdSB3YW50IHRvIHVzZQogICAgICAgICAgYXMgV2luZSdzIFdpbmRvd3MgdHJlZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb25maWd1cmUtV2luZS10by1ydW4tb24tbXktc3lzdGVtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb25maWd1cmUgV2luZSB0byBydW4gb24gbXkgc3lzdGVtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBhIGNvbmZpZyBmaWxlIGFzIAogICAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIGlzCiAgICAgICAgICBleHBsYWluZWQgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBtYW4gcGFnZS4gVGhlIGZpbGUKICAgICAgICAgIDxmaWxlbmFtZT5kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWciPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC91bGluaz4pIAogICAgICAgICAgY29udGFpbnMgYSBjb25maWcgZmlsZSBleGFtcGxlLiBNb3JlIGV4cGxpY2l0IGRpcmVjdGlvbnMgY2FuIGJlIAogICAgICAgICAgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgdGhhdCB3aWxsIGJlIGxvY2F0ZWQgaW4KICAgICAgICAgIHRoZSBiYXNlIFdpbmUgZGlyZWN0b3J5IGFmdGVyIHlvdSBndW56aXAgYW5kIHVudGFyIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktdXBncmFkZS1jb25maWd1cmF0aW9uIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSB1cGdyYWRlIFdpbmUgd2l0aG91dCBsb3NpbmcgbXkgd29ya2luZyBjb25maWd1cmF0aW9uPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZ3JhZGluZyB0aGUgd2luZSBpbnN0YWxsYXRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBleGlzdGluZyB3aW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uLiBTbyBhZnRlciB1cGdyYWRpbmcgd2luZSB5b3Ugc3RpbGwgaGF2ZSB0aGUgb2xkICh3b3JraW5nICkKICAgICAgICAgIHdpbmUgY29uZmlndXJhdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLXZlcnNpb25zLU9LIj4KICAgICAgICA8cGFyYT5JZiBJIHdhbnQgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsLCB3aGljaCB2ZXJzaW9ucyBhcmUgT0s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRWl0aGVyIHVzZSBhIGNsYXNzaWMgbm8td2luZG93cyBpbnN0YWxsIChXaW5lIGlzIGdldHRpbmcgYmV0dGVyIGFsbAogICAgICAgICAgdGhlIHRpbWUpIG9yIHVzZSBhIFdpbjl4IGluc3RhbGwgKFdpbjk1LCA5OCwgOThTRSwgTUUpLiBET04nVCAKICAgICAgICAgIGNvbmZpZ3VyZSBXaW5lIHRvIHVzZSBhbiBOVC1iYXNlZCBXaW5kb3dzIGluc3RhbGwgKE5ULCBXaW4ySywgV2luWFApLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lcyBmYWtlIHdpbmRvd3MgZHJpdmUuCgk8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLW9uZS13b3Jrcy1iZXN0Ij4KICAgICAgICA8cGFyYT5JZiBJIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCB3aXRoIFdpbmUsIHdoaWNoIG9uZSB3b3JrcyBiZXN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIDAyLzIwMDI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSdkIHNheSBXaW45OFNFIGlzIHRoZSBiZXN0IHZlcnNpb24gdG8gdXNlIHdpdGggV2luZSwgYXMgaXQncyBmYWlybHkKICAgICAgICAgIHdpZGVzcHJlYWQgYW1vbmdzdCBkZXZlbG9wZXJzIGFuZCByZWxhdGl2ZWx5IG9sZC4gVXNpbmcgV2luMksgZmlsZXMKICAgICAgICAgIGlzIDxlbXBoYXNpcz5kZWZpbml0ZWx5PC9lbXBoYXNpcz4gd29yc2UgdGhhbiBhIHBsYWluIG5vLXdpbmRvd3MgCiAgICAgICAgICBXaW5lIGluc3RhbGwsIGFuZCBXaW4gTUUgaXMgc2FpZCB0byBiZSBwcm9ibGVtYXRpYywgdG9vIChhcyBwcm9iYWJseQogICAgICAgICAgbm8gZGV2ZWxvcGVyIHVzZXMgaXQpLiBJbiBzaG9ydDogYWxsIFdpbjl4ICZsdDs9IFc5OFNFIGFyZSBnb29kLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikluc3RhbGxpbmctVmlzdWFsLUJhc2ljLWFwcHMtd29udC1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSW5zdGFsbGluZyBhcHBsaWNhdGlvbnMgZ2VuZXJhdGVkIGJ5IFZpc3VhbCBCYXNpYyB3b24ndCBydW4uIFdoYXQKICAgICAgICAgIHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhbGwgdGhlIFZCIHJ1bnRpbWUgbGlicmFyaWVzIGluc3RhbGxlZC4gWW91IG1heQogICAgICAgICAgbmVlZCB0byB1c2UgdGhlIG5hdGl2ZSBETEwgdmJydW42MC5kbGwuIFlvdSBjYW4gZ2V0IHNvbWUgZnJvbSBkbGwtZmlsZXMuY29tLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4tSS1jbGljay1vbi1leGUtZmlsZS1ub3RoaW5nLWhhcHBlbnMiPgogICAgICAgIDxwYXJhPldoZW4gSSBjbGljayBvbiAqLmV4ZSBmaWxlIGluIG15IGZpbGUgTWFuYWdlciwgbm90aGluZyBoYXBwZW5zLjwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBub3JtYWwgV2luZSByZWxlYXNlcyBkb24ndCBoYXZlIC5leGUgZXh0ZW5zaW9ucyByZWdpc3RlcmVkIGZvcgogICAgICAgICAgV2luZSBpbiBLREUvR25vbWUgeWV0LiBZb3UgaGF2ZSB0byBvcGVuIGEgdGVybWluYWwgd2luZG93IGluc3RlYWQKICAgICAgICAgIChvZnRlbiBhbiBpY29uIHNob3dpbmcgYSAiYmxhY2sgc2NyZWVuIikgYW5kIHR5cGUgc29tZXRoaW5nIGxpa2U6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmNkIC9teS93aW5kb3dzL3Byb2dyYW0vZGlyZWN0b3J5CndpbmUgbXlwcm9ncmFtLmV4ZQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgT3IgYWx0ZXJuYXRpdmVseSB5b3UgY291bGQgZG93bmxvYWQgdGhlIENvZGVXZWF2ZXJzIFdpbmUgcHJldmlldyAKICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIC5leGUgZXh0ZW5zaW9uIHJlZ2lzdHJhdGlvbiBmb3IgS0RFL0dub21lIGFuZCBhIG5pY2UKICAgICAgICAgIHNldHVwIHByb2dyYW0uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iYmFzaC13aW5lLUNvbW1hbmQtbm90LWZvdW5kLVdoYXQtY2FuLUktZG8iPgogICAgICAgIDxwYXJhPmJhc2ggIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byByZWxvZ2luIGludG8gYmFzaC4gVGhhdCBtaWdodCBmaXggaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgaXQgZG9lc24ndCwgdGhlbiBtYWtlIHN1cmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluIHlvdXIgCiAgICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUnVuIGFzIHJvb3Q6CiAgICAgICAgPC9QYXJhPgogICAgICAgIDxzY3JlZW4+CmZpbmQgLyAtbmFtZSAid2luZSIgLXR5cGUgZiAtcGVybSArMTExCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB0byBmaW5kIHRoZSBwYXRoIHdoZXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbi4gVGhlbiBjaGVjayB3aGV0aGVyCiAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+IGluY2x1ZGVzIGl0OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgplY2hvICRQQVRIIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgbm90LCBhZGQgdGhhdCBlLmcuIHRvIDxmaWxlbmFtZT4vZXRjL3Byb2ZpbGU8L2ZpbGVuYW1lPiBieSBkb2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IFBBVEg9JFBBVEg6L3BhdGgvdG8vd2luZS9iaW5hcnkgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IHNob3VsZCBoZWxwLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgICBJZiB5b3UgdXNlZCBhIHBhY2thZ2UgbWFuYWdlciAoPGNvbW1hbmQ+cnBtPC9jb21tYW5kPiBvciAKICAgICAgICAgICA8Y29tbWFuZD5hcHQ8L2NvbW1hbmQ+KSAtIFZlcmlmeSB5b3VyIHBhY2thZ2VzLiBUaGUgcGFja2FnZSAKICAgICAgICAgICA8ZmlsZW5hbWU+d2luZXNldHVwdGsucnBtPC9maWxlbmFtZT4gaXMgb25seSBhIGZyb250LWVuZCBmb3IgCiAgICAgICAgICAgbWFraW5nIGEgbWVhbmluZ2Z1bCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ycG1maW5kLm5ldC8iPgogICAgICAgICAgIHd3dy5ycG1maW5kLm5ldDwvdWxpbms+IG9yIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gdHlwZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4Kcm0gLWZSIFxbL3BhdGgvXF1XaW5lKgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGV4YWN0IHBhdGggd2hlbiB1c2luZyB0aGUgcG93ZXJmdWwKICAgICAgICAgIDxjb21tYW5kPnJtIC1mUjwvY29tbWFuZD4gY29tbWFuZC4gSWYgeW91IGFyZSBhZnJhaWQgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgIGRlbGV0ZSBzb21ldGhpbmcgaW1wb3J0YW50LCBvciBtaWdodCBvdGhlcndpc2UgZGVsZXRlIG90aGVyIGZpbGVzIAogICAgICAgICAgd2l0aGluIHlvdXIgZmlsZXN5c3RlbSwgPGNvbW1hbmQ+Y2Q8L2NvbW1hbmQ+IGludG8gZWFjaCBXaW5lIAogICAgICAgICAgc3ViZGlyZWN0b3J5IHNpbmdseSBhbmQgZGVsZXRlIHRoZSBmaWxlcyBmb3VuZCB0aGVyZSBtYW51YWxseSwgCiAgICAgICAgICBvbmUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICBOZWl0aGVyIHRoZSBXaW5lIGRldmVsb3BlcnMgYW5kIHByb2dyYW1tZXJzLCBub3IgdGhlIFdpbmUgRkFRIAogICAgICAgIGF1dGhvci9tYWludGFpbmVyLCBjYW4gYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgeW91ciBkZWxldGluZyBhbnkKICAgICAgICBmaWxlcyBpbiB5b3VyIG93biBmaWxlc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlbmFtZSBvbmx5LiBGb3IgZXhhbXBsZSB0byBydW4gV2luZG93cycKICAgICAgICAgIHNvbGl0YWlyZSwgdHlwZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIHNvbDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyB0aGUgc2VhcmNoIHBhdGggdG8gbG9jYXRlIHRoZSBmaWxlKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBjOlxcd2luZG93c1xcc29sLmV4ZTwvY29tbWFuZD4gCiAgICAgICAgICAgKHVzaW5nIGEgRE9TIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAvdXNyL3dpbmRvd3Mvc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgYSBVTklYIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZW5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpbGwgYWxzbyBiZSBhZGRlZCB0byB0aGUgcGF0aCB3aGVuIGEgZnVsbCBuYW1lCiAgICAgICAgICBpcyBzdXBwbGllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaW5lLWNhbm5vdC1maW5kLU1TLVdpbmRvd3Mtb24tbXktZHJpdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCBXaW5lLCBidXQgV2luZSBjYW5ub3QgZmluZCBNUyAKICAgICAgICAgIFdpbmRvd3Mgb24gbXkgZHJpdmUuIFdoZXJlIGRpZCBJIGdvIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbW91bnRlZAogICAgICAgICAgaXQsIGVpdGhlciBieSBwdXR0aW5nIHRoZSBlbnRyeSBpbnRvIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4sCiAgICAgICAgICBvciBieSBtYW51YWxseSBtb3VudGluZyBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSZW1lbWJlciB0b28gdGhhdCB1bmxlc3MgeW91ciB2ZXJzaW9uIG9mIFVOSVggY2FuIHNlZSB0aHJvdWdoIGl0LCBvcgogICAgICAgICAgeW91IGFyZSBydW5uaW5nIGEgdXRpbGl0eSB0aGF0IGNhbiBzZWUgdGhyb3VnaCBpdCwgeW91ciBET1MKICAgICAgICAgIHBhcnRpdGlvbiBtdXN0IG5vdCBiZSBsb2NhdGVkIG9uIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvcgogICAgICAgICAgU3RhY2tlcmVkIHBhcnRpdGlvbiwgYXMgbmVpdGhlciBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIG9yIFdpbmUgY2FuCiAgICAgICAgICBuYXRpdmVseSAnc2VlJyBmaWxlcyBsb2NhdGVkIGluIHRoZXNlIGNvbXByZXNzZWQgRE9TIHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ2hlY2sgeW91ciBwYXRoIHN0YXRlbWVudHMgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiAKICAgICAgICAgIGZpbGUuIE5vIGNhcGl0YWwgbGV0dGVycyBtYXkgYmUgdXNlZCBpbiBwYXRocywgYXMgdGhleSBhcmUgCiAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iUGFydHMtb2YtbXktYXBwLWRvLW5vdC13b3JrLVdoYXQtaXMtd3JvbmciPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB3YXMgYWJsZSB0byBnZXQgdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zIHRvIHJ1biwgYnV0IHBhcnRzIG9mCiAgICAgICAgICB0aGVtIGRvIG5vdCB3b3JrLiBXaGF0IGlzIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGNvbXBsZXRlIGF0IHRoaXMgdGltZSwgc28gc29tZSBvZiBlYWNoIHByb2dyYW1zJyAKICAgICAgICAgIGZlYXR1cmVzIG1heSBub3Qgd29yay4gVGhleSB3aWxsIGluIHRpbWUgYXMgbW9yZSBvZiB0aGUgTVMgCiAgICAgICAgICBXaW5kb3dzIEFQSSBjYWxscyBhcmUgaW5jbHVkZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJNZW51cy1kby1ub3Qtd29yay1ob3ctY2FuLUktZXhpdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgcnVuIHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcywgYnV0IHNpbmNlIHRoZSBwcm9ncmFtIG1lbnVzCiAgICAgICAgICBkbyBub3Qgd29yaywgaG93IGNhbiBJIGV4aXQgdGhlc2UgcHJvZ3JhbXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgS2lsbCB0aGUgeHRlcm0gc2hlbGwgd2luZG93IHRoYXQgeW91IGNhbGxlZCB1cCB0byBydW4geW91ciBNUyAKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbSwgYW5kIHRoZSBYIHdpbmRvdyB0aGF0IGFwcGVhcmVkIHdpdGggdGhlIHByb2dyYW0gCiAgICAgICAgICB3aWxsIGJlIGtpbGxlZCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+Cgk8cXVlc3Rpb24gaWQ9Ik15LWFwcC1kb2VzbnQtd29yay13aGF0LWNhbi1pLWRvIj4KCSAgPHBhcmE+CgkgICAgTXkgcHJvZ3JhbSBkb2Vzbid0IHdvcmssIHdoYXQgY2FuIEkgZG8/CgkgIDwvcGFyYT4KCTwvcXVlc3Rpb24+Cgk8YW5zd2VyPgoJICA8cGFyYT4KCSAgICBJZiB5b3UgYXJlIGEgcHJvZ3JhbW1lciBhbmQga25vdyBDLCB0aGVuIHN0YXJ0IGRlYnVnZ2luZwoJICAgIFdpbmUgYW5kIGhlbHAgdXMgbWFrZSBpdCBiZXR0ZXIhIElmIHlvdSBjYW4ndCwgdGhlbiB5b3Ugd2lsbAoJICAgIGhhdmUgdG8gZWl0aGVyIGNvbnZpbmNlIGEgV2luZSBkZXZlbG9wZXIgdG8gdHJ5IGFuZCBtYWtlIHlvdXIKCSAgICBwcm9ncmFtIHdvcmsgKHRoZXJlIG11c3QgYmUgYSBkb3dubG9hZGFibGUgdmVyc2lvbiBvciBkZW1vIGZvcgoJICAgIHRoYXQpLCBvciBoaXJlIHNvbWVib2R5IHRvIGRvIGl0IGZvciB5b3UuIElmIHRoaXMgYXBwbGljYXRpb24KCSAgICBpcyBhbiBpbnRlcm5hbCBjb3Jwb3JhdGUgYXBwbGljYXRpb24sIHlvdSBtYXkgYmUgYWJsZSB0byBoaXJlIGEKCSAgICBXaW5lIGRldmVsb3BlciB0byBkbyBjb25zdWx0aW5nIHdvcmsgZm9yIHlvdSBvbiB0aGUgbWF0dGVyLgoJICA8L3BhcmE+CgkgIDxwYXJhPgoJICAgIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQgdGhlIGFwcCB3b3JraW5nIGJ5CgkgICAgdGFraW5nIG5hdGl2ZSBETExzIGZyb20gYSBNaWNyb3NvZnQgV2luZG93cyBpbnN0YWxsLCBhbmQgdXNpbmcKCSAgICB0aGVtIChzZXQgdGhlIGRsbHMgdG8gbmF0aXZlIGluIHRoZSBjb25maWcgZmlsZSkuIE5vdCBhbGwgRExMcwoJICAgIGNhbiBiZSByZXBsYWNlZCB0aGF0IHdheSAtIGluIHBhcnRpY3VsYXIgRGlyZWN0WCBjYW5ub3QgYmUsIG5vcgoJICAgIGNhbiBzb21lIGNvcmUgc3lzdGVtIERMTHMgbGlrZSB1c2VyLCBudGRsbCwga2VybmVsMzIgZXRjCgkgIDwvcGFyYT4KCTwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS13aXRoLW90aGVyLUxpbnV4LURpc3Ryb3MiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHdpdGggU3VTRSwgUGVhbnV0IG9yIG90aGVyIExpbnV4IERpc3RybydzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gdXNlIFdpbmUgb24gYW55IHN1ZmZpY2llbnRseSByZWNlbnQgTGludXggaW5zdGFsbGF0aW9uLiBUaGUKICAgICAgICAgIGFtb3VudCBvZiB3b3JrIGdldHRpbmcgV2luZSB1cCBhbmQgcnVubmluZyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlcmUKICAgICAgICAgIGFyZSBwcm9wZXIgcGFja2FnZXMgYXZhaWxhYmxlIG9yIGEgc291cmNlIGNvbXBpbGUgaGFzIHRvIGJlIGRvbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1XaW5lLXdvcmstd2l0aC1BTUQtUHJvY2Vzc29ycyI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIHdvcmsgd2l0aCBBTUQgUHJvY2Vzc29ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGl0IGRvZXMuIFdpbmUgc2hvdWxkIHdvcmsgb24gYW55IHByb2Nlc3NvciBjb21wYXRpYmxlIHdpdGgKICAgICAgICAgIHRoZSBQZW50aXVtIG9yIGdyZWF0ZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWxhdW5jaC1Vbml4LWFwcC1mcm9tLVdpbmRvd3MtYXBwIj4KICAgICAgICA8cGFyYT4gQ2FuIEkgbGF1bmNoIGEgVW5peCBwcm9ncmFtIGZyb20gYSBXaW5kb3dzIHByb2dyYW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZSwgV2luZSBzdXBwb3J0cyB0aGF0LiBKdXN0IGVudGVyIHRoZSB1bml4IHByb2dyYW0gbmFtZSB3aGVyZXZlcgogICAgICAgICAgYSBwcm9ncmFtIGhhcyBzb21ldGhpbmcgdGhhdCBpdCdzIHN1cHBvc2VkIHRvIGV4ZWN1dGUsIGFuZCBpdAogICAgICAgICAgc2hvdWxkIGp1c3Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkVycm9yLXdpdGgtaW5zdGFsbHNoaWVsZC02Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgZ2V0IDxxdW90ZT5FcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKTwvcXVvdGU+CiAgICAgICAgICB3aGVuIHJ1bm5pbmcgYW4gSW5zdGFsbHNoaWVsZCA2IGluc3RhbGxlci4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZ2V0IHRoZSBlcnJvciAiRXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCkiIGF0IGFueQogICAgICAgICAgcG9pbnQsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGVyZSBhcmUgbGVmdG92ZXIgcHJvY2Vzc2VzIGZyb20gYQogICAgICAgICAgcHJldmlvdXMgdHJ5LiBZb3UgY2FuIHZlcmlmeSB0aGlzIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPnBzIGF1Z3h3IHwgZ3JlcCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgY29tbWFuZCBzaG93cyBvbGQgY29waWVzIG9mIHdpbmUgcnVubmluZyB5b3VyIHNldHVwLAogICAgICAgICAgeW91IG5lZWQgdG8ga2lsbCB0aGVtIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGUgc2V0dXAgcHJvZ3JhbS4KICAgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdGhlciBXaW5lIHByb2dyYW1zIHJ1bm5pbmcsIHlvdSBjYW4ga2lsbCB0aGVtCiAgICAgICAgICBhbGwgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48cHJvbXB0PiQgPC8+PGNvbW1hbmQ+a2lsbGFsbCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSdyZSBhbHNvIHJ1bm5pbmcgV2luZSBwcm9ncmFtcyB5b3UgY2FyZSBhYm91dCwgeW91J2xsCiAgICAgICAgICBoYXZlIHRvIGtpbGwgb2ZmIHRoZSBvbGQgU2V0dXAgaW5zdGFuY2VzIG9uZSBieSBvbmUgdXNpbmcKICAgICAgICAgIGtpbGwgYW5kIHRoZSBpbmRpdmlkdWFsIFBJRHMgKG9yIHBlcmhhcHMgV2luZSdzIHNwaWZmeSBUYXNrIE1hbmFnZXIsCiAgICAgICAgICB3aGljaCBkb2Vzbid0IGV4aXN0IHlldCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHNob3VsZCByZXBlYXQgdGhlIDxjb21tYW5kPnBzPC9jb21tYW5kPiB0byBtYWtlIHN1cmUgdGhlIG9sZCAKICAgICAgICAgIFdpbmUgcHJvY2Vzc2VzIGFyZSBnb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogICAgIAogICAgPHFhbmRhZGl2IGlkPSJHZXR0aW5nLWhlbHAiPgogICAgICA8dGl0bGU+R2V0dGluZyBoZWxwPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYW55LWRvY3VtZW50YXRpb24tZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGFueSBkb2N1bWVudGF0aW9uIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zdXBwb3J0LnNodG1sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zdXBwb3J0LnNodG1sLjwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLXdyaXR0ZW4tc29tZS1kb2N1bWVudGVudGF0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgY291bGRuJ3QgZmluZCB0aGUgYW5zd2VyIHRvIG15IHF1ZXN0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uLCBidXQKICAgICAgICAgIEkndmUgd3JpdHRlbiBhIGRvY3VtZW50IGV4cGxhaW5pbmcgaG93IHRvIHNvbHZlIGl0LiBXaGF0IHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZGF0ZXMgYW5kIGFkZGl0aW9ucyB0byB0aGUgV2luZSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeSBzaG91bGQgYmUKICAgICAgICAgIHNlbnQgdG8gdGhlIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWw8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2ViYXNlCiAgICAgICAgICBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zc3Bvc3RlZCB0byBvdGhlciBhcHByb3ByaWF0ZSBuZXdzZ3JvdXBzLCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLm9zLmxpbnV4LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5vcy5saW51eC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAud2luZG93cy54LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC53aW5kb3dzLnguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLmVtdWxhdG9ycy5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAuZW11bGF0b3JzLmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3VyIFVzZW5ldCBzaXRlIGRvZXMgbm90IGNhcnJ5IHRoZXNlIG5ld3Nncm91cHMsIHBsZWFzZSB1cmdlIAogICAgICAgICAgeW91ciBJU1AncyBzeXNhZG1pbiB0byBhZGQgYW5kL29yIHVwbGluayB0aGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtV29ybGQtV2lkZS1XZWItc2l0ZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBXb3JsZCBXaWRlIFdlYiBzaXRlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgSFEgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+aHR0cDovL3d3dy53aW5laHEuY29tPC91bGluaz4pIGlzIHRoZSBvZmZpY2lhbCBzaXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFuLUlSQy1jaGFubmVsLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbiBJUkMgY2hhbm5lbCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdXJlLiBJdCdzIGNoYW5uZWwgPGZpbGVuYW1lPiNXaW5lSFE8L2ZpbGVuYW1lPiBvbiAKICAgICAgICAgIDxmaWxlbmFtZT5pcmMuZnJlZW5vZGUubmV0PC9maWxlbmFtZT4gc2VlIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9mcmVlbm9kZS5uZXQiPmh0dHA6Ly9mcmVlbm9kZS5uZXQ8L3VsaW5rPikuCiAgICAgICAgICBVc3VhbGx5IHNldmVyYWwgV2luZSBkZXZlbG9wZXJzIGhhbmcgb3V0IHRoZXJlIGp1c3QgdG8gaGVscCBZT1UgOy0pCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS10aGluay1JLWZvdW5kLWEtYnVnLUhvdy1kby1JLXJlcG9ydC1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIHRoaW5rIEkndmUgZm91bmQgYSBidWcuIEhvdyBkbyBJIHJlcG9ydCB0aGlzIGJ1ZyB0byB0aGUgV2luZQogICAgICAgICAgcHJvZ3JhbW1pbmcgdGVhbT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCdWcgcmVwb3J0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIG91ciBvbmxpbmUgQnVnemlsbGEgc3lzdGVtIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9idWdzLndpbmVocS5jb20iPmh0dHA6Ly9idWdzLndpbmVocS5jb20vPC91bGluaz4pLgogICAgICAgICAgWW91IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmUgdmVyc2lvbiB0ZXN0ZWQKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmRvd3MgYXBwbGljYXRpb24gbmFtZSwgaW5jbHVkaW5nIHRoZSB2ZXJzaW9uLCBhbmQsIGlmCiAgICAgICAgICAgIGFwcGxpY2FibGUsIGEgVVJMIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgZG93bmxvYWRlZCBmcm9tCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZwogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgcmVsZXZhbnQgcGFydChzKSBvZiB0aGUgb3V0cHV0IG9mIHRoZSBXaW5lIGRlYnVnZ2VyCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgc2NyZWVuc2hvdCBvZiB0aGUgdmlzdWFsIHByb2JsZW0sIGlmIGFwcGxpY2FibGUKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcG9ydGluZyBidWdzIHBsZWFzZSBzZWUgdGhlIAogICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lLXVzZXIvYnVnLXJlcG9ydGluZy5zaHRtbCI+CiAgICAgICAgIEhvdyB0byByZXBvcnQgYSBidWc8L3VsaW5rPiBzZWN0aW9uIG9mIHRoZSBXaW5lIFVzZXJzIEd1aWRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iSGVscGluZy1XaW5lLW9yLWJlY29taW5nLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICA8dGl0bGU+SGVscGluZyBXaW5lIG9yIGJlY29taW5nIGEgV2luZSBkZXZlbG9wZXI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1iZWNvbWUtYS1XaW5lLWRldmVsb3BlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgYmVjb21lIGEgV2luZSBkZXZlbG9wZXI/IFdoYXQgZG8gSSBuZWVkIHRvIGtub3c/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBwcm9ncmFtIEMsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIERvd25sb2FkIHRoZSBzb3VyY2VzIHZpYQogICAgICAgICAgQ1ZTLCBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZCBwYXkKICAgICAgICAgIGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cCBhbmQgdGhlIAogICAgICAgICAgbWFpbGluZyBsaXN0cyAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbCI+aHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+KS4gU2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcKICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZml4IG9yIHdvcmsgb24uIFlvdSB3b24ndCBoYXZlIG11Y2ggdHJvdWJsZQogICAgICAgICAgZmluZGluZyBhcmVhcyB0aGF0IG5lZWQgd29yayBpbiBXaW5lIChncmVwIGZvciBGSVhNRXMgaW4gdGhlIHNvdXJjZSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWNvbnRyaWJ1dGUtdG8tdGhlLVdpbmUtcHJvamVjdCI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGhlbHAgY29udHJpYnV0ZSB0byB0aGUgV2luZSBwcm9qZWN0LCBhbmQgaW4gd2hhdCB3YXkocyk/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiBjb250cmlidXRlIHByb2dyYW1taW5nIG9yIGRvY3VtZW50YXRpb24gc2tpbGxzLCBvciBtb25ldGFyeQogICAgICAgICAgb3IgZXF1aXBtZW50IGRvbmF0aW9ucywgdG8gYWlkIHRoZSBXaW5lIGRldmVsb3BlcnMgaW4gcmVhY2hpbmcgdGhlaXIgCiAgICAgICAgICBnb2Fscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgYSBsaXN0IG9mIGlkZWFzIG9mIGhvdyB5b3UgY2FuIGhlbHAsIHBsZWFzZSBjb25zdWx0IHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC9pbmRleC5waHA/Y29udHJpYiI+CiAgICAgICAgICBXaW5lIGNvbnRyaWIgcGFnZTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd2FudC10by1oZWxwLWJldGEtdGVzdC1XaW5lIj4KICAgICAgICA8cGFyYT5JIHdhbnQgdG8gaGVscCBiZXRhIHRlc3QgV2luZS4gSG93IGNhbiBJIGRvIHRoaXM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBzdGlsbCBjb25zaXN0cyBvZiBzb21lIEFscGhhIGNvZGUgYXQgdGhpcyB0aW1lLiBIb3dldmVyLCBhbnlvbmUKICAgICAgICAgIGlzIHdlbGNvbWUgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uLCBhbmQgdHJ5IGl0IG91dCBhdCBhbnkKICAgICAgICAgIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13cm90ZS1zb21lLWNvZGUtSS13b3VsZC1saWtlLXRvLXN1Ym1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgd3JpdHRlbiBzb21lIGNvZGUgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3VibWl0IHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9qZWN0LiBIb3cgZG8gSSBnbyBhYm91dCBkb2luZyB0aGlzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoZXMgYXJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIAogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj5odHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sPC91bGluaz4pLiBBbHNvIHNlZSB0aGlzIHBhZ2UgZm9yCiAgICAgICAgICBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgaGFwcGVucyB0byBzdWJtaXR0ZWQgcGF0Y2hlcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkRldmVsb3BpbmctcHJvZ3JhbXMtdXNpbmctV2luZS1XaW5lTGliIj4KICAgICAgPHRpdGxlPkRldmVsb3BpbmcgcHJvZ3JhbXMgdXNpbmcgV2luZS9XaW5lTGliPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtdG8tcG9ydC1XaW4zMi1zb3VyY2VzLXRvLVVuaXgiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHRvIHBvcnQgbXkgV2luMzIgc291cmNlcyB0byBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgaXMgdGhlIGlkZWEgb2YgV2luZWxpYi4gUmlnaHQgbm93IHlvdSBtYXkgc3RpbGwgaGF2ZSBzb21lIAogICAgICAgICAgZGlmZmljdWx0aWVzLCBidXQgdGhpcyBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUuIFJlYWQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaW5mby4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLU1GQy13b3JrLXdpdGgtV2luZS1XaGF0LWRvLUktbmVlZC10by1kbyI+CiAgICAgICAgPHBhcmE+V2lsbCBNRkMgd29yayB3aXRoIFdpbmU/IFdoYXQgZG8gSSBuZWVkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGltcGxlbWVudGluZyBhbiBNRkMgcmVwbGFjZW1lbnQgbm9yIGRvZXMgaXQgaW50ZW5kIHRvLgogICAgICAgICAgSG93ZXZlciBpdCBpcyBwb3NzaWJsZSAod2l0aCBhIGxvdCBvZiB3b3JrKSB0byBjb21waWxlIHRoZSBNRkMgZnJvbQogICAgICAgICAgc291cmNlIGFuZCB0aHVzIHByb2R1Y2UgYW4gPGZpbGVuYW1lPm1mYzQyLmRsbC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHJlZmVyIHRvIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGhvdyB0byBkbyB0aGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS10aGVyZS1jb21tZXJjaWFsLWFwcHMtcG9ydGVkLXVzaW5nLVdpbmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXJlIHRoZXJlIGFueSBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIGJlZW4gcG9ydGVkCiAgICAgICAgICB1c2luZyBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyB1c2luZyBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBYmlsaXR5IE9mZmljZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwIj5odHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSUJNJ3MgV2Vic3BoZXJlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcCI+aHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IG90aGVyIGltcG9ydGFudCBhcHBsaWNhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9ydGVkLiAod2UgYXJlCiAgICAgICAgICBzcGVha2luZyBvZiBzZXZlcmFsIHRvcCA1MDAgYXBwbGljYXRpb25zIGhlcmUpCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWRldGVjdC1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgZGV0ZWN0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHJlYWxseSBzaG91bGRuJ3Qgd2FudCB0byBkbyB0aGlzLiBJZiB0aGVyZSdzIGEgcXVpcmsgaW4gV2luZSAKICAgICAgICAgIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kLCBpdCdzIG11Y2ggYmV0dGVyIHRvIGZpeCBpdCBpbiBXaW5lIChhZnRlcgogICAgICAgICAgYWxsIHlvdSdyZSBhIGRldmVsb3Blciwgc28geW91IHNob3VsZCBiZSBhYmxlIHRvIGdhdGhlciBlbm91Z2ggaGVscAogICAgICAgICAgYW5kIGtub3dsZWRnZSB0byBmaXggaXQgZm9yIHJlYWwpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgCiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iV2luZS1IUS1pc3N1ZXMiPgogICAgICA8dGl0bGU+V2luZSBIUSBpc3N1ZXM8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktYXJlLXRoZS1tYWlsbGlzdHMtc2V0LXRvLXJlcGx5LXRvLWF1dGhvciI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaHkgYXJlIHRoZSBtYWlsbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbCI+aHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==