PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5vcmcpIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWCBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgc2V0IG9mIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMKICAgICAgICAgIHVzaW5nIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyaWVzIG1heSBhbHNvIGJlIHVzZWQKICAgICAgICAgIGZvciBwb3J0aW5nIFdpbjMyIGNvZGUgaW50byBuYXRpdmUgVU5JWCBleGVjdXRhYmxlcywgb2Z0ZW4KICAgICAgICAgIHdpdGhvdXQgbWFueSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UuIFdpbmUgaXMgZnJlZSBzb2Z0d2FyZSwgCiAgICAgICAgICBhbmQgaXRzIGxpY2Vuc2UgKGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBMSUNFTlNFCiAgICAgICAgICBpbiBlYWNoIGRpc3RyaWJ1dGlvbikgaXMgdGhlIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgZW11bGF0ZSBhIGZ1bGwgY29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGFzIHRoZSBuYW1lIHNheXMsIFdpbmUgSXMgTm90IGEgKENQVSkgRW11bGF0b3IuIFdpbmUganVzdAogICAgICAgICAgcHJvdmlkZXMgdGhlIFdpbmRvd3MgQVBJLiBUaGlzIG1lYW5zIHRoYXQgeW91IHdpbGwgbmVlZCBhbgogICAgICAgICAgeDg2LWNvbXBhdGlibGUgcHJvY2Vzc29yIHRvIHJ1biBhbiB4ODYgV2luZG93cyBhcHBsaWNhdGlvbiwgZm9yIGluc3RhbmNlIGZyb20gSW50ZWwgb3IgQU1ELiBUaGUKICAgICAgICAgIGFkdmFudGFnZSBpcyB0aGF0LCB1bmxpa2Ugc29sdXRpb25zIHRoYXQgcmVseSBvbiBDUFUgZW11bGF0aW9uLCBXaW5lCiAgICAgICAgICBydW5zIGFwcGxpY2F0aW9ucyBhdCBmdWxsIHNwZWVkLiBTb21ldGltZXMgYSBwcm9ncmFtIHJ1biB1bmRlcgoJICBXaW5lIHdpbGwgYmUgc2xvd2VyIHRoYW4gd2hlbiBydW4gb24gYSBjb3B5IG9mIE1pY3Jvc29mdCBXaW5kb3dzLCBidXQKCSAgdGhpcyBpcyBtb3JlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IE1pY3Jvc29mdCBoYXZlIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEaWZmZXJlbmNlLWJldHdlZW4tV2luZS1hbmQtZW11bGF0b3JzIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2luZSBhbmQgeDg2IGhhcmR3YXJlIGVtdWxhdG9ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdHdvIGZyZWUgeDg2IGhhcmR3YXJlIGVtdWxhdG9yczoKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9ib2Nocy5zb3VyY2Vmb3JnZS5uZXQiPkJvY2hzPC91bGluaz4sIGFuZAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcGxleDg2Ij5QbGV4ODY8L3VsaW5rPi4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZXg4NiBpcyB0aGUgb3Blbi1zb3VyY2UgZnJlZS1zb2Z0d2FyZSBhbHRlcm5hdGl2ZSBmb3IgVk1XYXJlLAoJICBWaXJ0dWFsUEMsIGFuZCBvdGhlciBJQS0zMiBvbiBJQS0zMiAiVmlydHVhbCBQQyBwcm9kdWN0cy4iIEl0CiAgICAgICAgICBjYW4gb25seSBydW4gb24gdGhlIElBLTMyIGFyY2hpdGVjdHVyZS4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvY2hzIGlzIGEgaGlnaGx5IHBvcnRhYmxlIG9wZW4gc291cmNlIElBLTMyICh4ODYpIFBDIGVtdWxhdG9yIAogICAgICAgICAgd3JpdHRlbiBpbiBDKyssIHRoYXQgcnVucyBvbiBtb3N0IHBvcHVsYXIgcGxhdGZvcm1zLiBJdCBpbmNsdWRlcyBlbXVsYXRpb24KICAgICAgICAgIG9mIHRoZSBJbnRlbCB4ODYgQ1BVLCBjb21tb24gSS9PIGRldmljZXMsIGFuZCBhIGN1c3RvbSBCSU9TLiBDdXJyZW50bHksIAogICAgICAgICAgQm9jaHMgY2FuIGJlIGNvbXBpbGVkIHRvIGVtdWxhdGUgYSAzODYsIDQ4NiBvciBQZW50aXVtIENQVS4gQm9jaHMgaXMgY2FwYWJsZQogICAgICAgICAgb2YgcnVubmluZyBtb3N0IE9wZXJhdGluZyBTeXN0ZW1zIGluc2lkZSB0aGUgZW11bGF0aW9uIGluY2x1ZGluZyBMaW51eCwgCiAgICAgICAgICBXaW5kb3dzriA5NSwgRE9TLCBhbmQgcmVjZW50bHkgV2luZG93c64gTlQgNC4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvdGggYXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwuIEJvY2hzIGlzIG9sZGVyIHRoYW4gUGxleDg2LCBzZWVtcyB0byBiZQogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBQbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgUGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gV2luZSBhbHNvIGdpdmVzIG11Y2ggYmV0dGVyIGRlc2t0b3AgaW50ZWdyYXRpb24gLSBmb3IKCSAgaW5zdGFuY2UsIHByb2dyYW1zIHVzZSB5b3VyIHN0YW5kYXJkIHdpbmRvdyBtYW5hZ2VyLCBzeXN0ZW0gdHJheSBpY29ucyB3aWxsCgkgIGFwcGVhciBpbiB5b3VyIHRyYXkgYXJlYSAoaWYgeW91IGhhdmUgb25lKSwgYW5kIHlvdSBjYW4gcnVuIHByb2dyYW1zIGRpcmVjdCBmcm9tIHRoZQoJICBjb21tYW5kIGxpbmUgYW5kIHRoZSBtZW51cy4gVGhlIGNsaXBib2FyZCBhbHNvIHdvcmtzIHNlYW1sZXNzbHkuCiAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW50ZWdyYXRlLWFuLXg4Ni1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgaW50ZWdyYXRlIGFuIHg4NiBDUFUgZW11bGF0b3Igc28gd2UgY2FuCiAgICAgICAgICBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24gbm9uLXg4NiBtYWNoaW5lcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgc2hvcnQgYW5zd2VyIGlzICdwcm9iYWJseSBuZXZlcicuIFJlbWVtYmVyLCBXaW5lIElzIE5vdCBhCiAgICAgICAgICAoQ1BVKSBFbXVsYXRvci4gVGhlIGxvbmcgYW5zd2VyIGlzIHRoYXQgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCBvcgogICAgICAgICAgbmVlZCB0byBpbnRlZ3JhdGUgb25lIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnRlZ3JhdGluZyBhIENQVSBlbXVsYXRvciBpbiBXaW5lIHdvdWxkIGJlIGV4dHJlbWVseSBoYXJkLAogICAgICAgICAgZHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgV2luZG93cyBBUElzIGFuZCB0aGUgY29tcGxleAogICAgICAgICAgZGF0YSB0eXBlcyB0aGV5IGV4Y2hhbmdlLiBJdCBpcyBub3QgdW5jb21tb24gZm9yIGEgV2luZG93cyBBUEkgdG8KICAgICAgICAgIHRha2UgdGhyZWUgb3IgbW9yZSBwb2ludGVycyB0byBzdHJ1Y3R1cmVzIGNvbXBvc2VkIG9mIG1hbnkgZmllbGRzLAogICAgICAgICAgaW5jbHVkaW5nIHBvaW50ZXJzIHRvIG90aGVyIGNvbXBsZXggc3RydWN0dXJlcy4gRm9yIGVhY2ggb2YgdGhlc2UKICAgICAgICAgIHdlIHdvdWxkIG5lZWQgYSBjb252ZXJzaW9uIHJvdXRpbmUgdG8gZGVhbCB3aXRoIHRoZSBieXRlIG9yZGVyIGFuZAogICAgICAgICAgYWxpZ25tZW50IGlzc3Vlcy4gRnVydGhlcm1vcmUsIFdpbmRvd3MgYWxzbyBjb250YWlucyBtYW55IGNhbGxiYWNrCiAgICAgICAgICBtZWNoYW5pc21zIHRoYXQgY29uc3RpdHV0ZSBhcyBtYW55IGV4dHJhIHBsYWNlcyB3aGVyZSB3ZSB3b3VsZCBoYXZlCiAgICAgICAgICB0byBoYW5kbGUgdGhlc2UgY29udmVyc2lvbiBpc3N1ZXMuIFdpbmUgYWxyZWFkeSBoYXMgdG8gZGVhbCB3aXRoCiAgICAgICAgICAxNiB2cy4gMzIgYml0IEFQSXMgYW5kIEFuc2kgdnMuIFVuaWNvZGUgQVBJcyB3aGljaCBib3RoCiAgICAgICAgICBpbnRyb2R1Y2Ugc2lnbmlmaWNhbnQgY29tcGxleGl0eS4gQWRkaW5nIHN1cHBvcnQgZm9yIGEgQ1BVIGVtdWxhdG9yCiAgICAgICAgICBpbnNpZGUgV2luZSB3b3VsZCBpbnRyb2R1Y2UgYXQgbGVhc3QgZG91YmxlIHRoYXQgY29tcGxleGl0eSBhbmQKICAgICAgICAgIG9ubHkgc2VydmUgdG8gc2xvdyBkb3duIHRoZSBkZXZlbG9wbWVudCBvZiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvcnR1bmF0ZWx5IGFub3RoZXIgc29sdXRpb24gZXhpc3RzIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucwogICAgICAgICAgb24gbm9uLXg4NiBwbGF0Zm9ybXM6IHJ1biBib3RoIFdpbmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBpbnNpZGUgdGhlCiAgICAgICAgICBDUFUgZW11bGF0b3IuIEFzIGxvbmcgYXMgdGhlIGVtdWxhdG9yIHByb3ZpZGVzIGEgc3RhbmRhcmQgVW5peAogICAgICAgICAgZW52aXJvbm1lbnQsIFdpbmUgc2hvdWxkIG9ubHkgbmVlZCBtaW5pbWFsIG1vZGlmaWNhdGlvbnMuIFdoYXQKICAgICAgICAgIHBlcmZvcm1hbmNlIHlvdSBsb3NlIGR1ZSB0byBXaW5lIHJ1bm5pbmcgaW5zaWRlIHRoZSBlbXVsYXRvcgogICAgICAgICAgcmF0aGVyIHRoYW4gbmF0aXZlbHksIHlvdSBnYWluIGluIGNvbXBsZXhpdHkgaW5zaWRlIG9mIFdpbmUuCiAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgdGhlIGVtdWxhdG9yIGlzIGZhc3QgZW5vdWdoIHRvIHJ1biBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIFBob3Rvc2hvcCBmb3IgaW5zdGFuY2UsIHRoZW4gaXQgc2hvdWxkIGJlIGZhc3QgZW5vdWdoCiAgICAgICAgICB0byBydW4gdGhhdCBzYW1lIFdpbmRvd3MgYXBwbGljYXRpb24gcGx1cyBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFR3byBwcm9qZWN0cyBoYXZlIHN0YXJ0ZWQgYWxvbmcgdGhvc2UgbGluZXM6IDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZmFicmljZS5iZWxsYXJkLmZyZWUuZnIvcWVtdS8iPlFFTVU8Lz4sIGFuCiAgICAgICAgICBvcGVuLXNvdXJjZSBwcm9qZWN0LCBhbmQgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cudHJhbnNpdGl2ZXMuY29tL3RlY2hfb3ZlcnZpZXcuaHRtIj5EeW5hbWl0ZTwvPiwKICAgICAgICAgIGEgY29tbWVyY2lhbCBDUFUgZW11bGF0b3IgZW52aXJvbm1lbnQgZnJvbQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vIj5UcmFuc2l0aXZlcyBUZWNobm9sb2dpZXM8Lz4KICAgICAgICAgIHdoaWNoIGhhcyBiZWVuIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbS9uZXdzLnBocD9uZXdzaWQ9MzciPnBhaXJlZAogICAgICAgICAgd2l0aCBXaW5lPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbnMsCiAgICAgICAgICBjb3B5L3Bhc3RlIGZyb20gb25lIHRvIHRoZSBvdGhlciwgYW5kIHJ1biBpdCBhbGwgYXQgZnVsbCBzcGVlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBhbHNvIGEgcHJldHR5IHZpdGFsIHBhcnQgb2YgbWlncmF0aW5nIGEgbGFyZ2Ugb3JnYW5pemF0aW9uLAogICAgICAgICAgeW91IGNhbid0IGNoYW5nZSBhIDUwMDAgZGVza3RvcCBzZXR1cCBvdmVybmlnaHQgd2l0aG91dCBhIGxvdCBvZiByaXNrLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVXNlLVdpbmRvd3MtZHJpdmVyLXdpdGgtV2luZSI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCiAgICAgICAgICBncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBnb2FsIG9mIFdpbmUgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMKICAgICAgICAgIG9uIFVuaXgsIG5vdCBXaW5kb3dzIGRyaXZlcnMgb3IgVnhEcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEcml2ZXJzIGFuZCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IHdvcmxkcy4KICAgICAgICAgIEFwcGxpY2F0aW9ucyBydW4gaW4gdXNlciBtb2RlIGFuZCB1c2UgdGhlIEFQSXMgcHJvdmlkZWQgYnkKICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIHRoZSBvdGhlciB1c2VyIG1vZGUgZGxscy4gSW4gY29udHJhc3QsIGRyaXZlcnMKICAgICAgICAgIGFyZSBsb2FkZWQgaW4gdGhlIFdpbmRvd3Mga2VybmVsLCBpLmUuIGluIHJpbmcgMCBpbnN0ZWFkIG9mIHJpbmcKICAgICAgICAgIDMsIGhhdmUgdG8gZGVhbCB3aXRoIHNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcywgYW5kIHVzZQogICAgICAgICAgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUgdG8gcmVndWxhciBhcHBsaWNhdGlvbnMuIFRoaXMgbWVhbnMKICAgICAgICAgIHRoZXkgd291bGQgbm90IGJlIGFibGUgdG8gcnVuIGluIFdpbmUgc2luY2UgV2luZSBydW5zIGVudGlyZWx5CiAgICAgICAgICBpbiB1c2VyIG1vZGUuIFJhdGhlciB5b3Ugd291bGQgaGF2ZSB0byBtb2RpZnkgdGhlIExpbnV4IGtlcm5lbC4KICAgICAgICAgIEJ1dCBpbiBhZGRpdGlvbiwgZHJpdmVycyB1c2UgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBBUEkgZnJvbQogICAgICAgICAgcmVndWxhciBXaW5kb3dzIGFwcGxpY2F0aW9ucy4gU28gdGhlIHdvcmsgcGVyZm9ybWVkIG9uIFdpbmUgd291bGQKICAgICAgICAgIG5vdCBldmVuIGJlIG9mIGFueSB1c2UgZm9yIHN1Y2ggYSBwcm9qZWN0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nCiAgICAgICAgICBpdCBwb3NzaWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIG9yIFZ4RHMgb24gVW5peCB3b3VsZCBiZSBhCiAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmV1c2UgV2luZG93cyBkcml2ZXJzIG9uIGEgbm9uLU1pY3Jvc29mdAogICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaGF2ZSBhIGxvb2sgYXQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZyI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIGRpc3RyaWJ1dGlvbiBvZiBXaW5lLiBJdHMgbGljZW5zZSBpcwogICAgICAgICAgICAgIHRoZSBMR1BMLCBpdCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4gQm90aCBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMKICAgICAgICAgICAgICBhcmUgYXZhaWxhYmxlIGluIHRoZSBkb3dubG9hZCBzZWN0aW9uIG9mIHRoZSBzaXRlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc0dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zR2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgsIG1pbmltdW0gdGhyZWUgbW9udGhzKS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93aW5lLmNvZGV3ZWF2ZXJzLmNvbSI+Q29kZVdlYXZlcnMnIFdpbmUgcHJldmlldzwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIGEgc3BlY2lhbCBwYWNrYWdlZCB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBXaW5lIHRyZWUKICAgICAgICAgICAgICB3aGljaCBoYXMgYSBuaWNlIHNldHVwIGZvciBlYXN5IGluc3RhbGxhdGlvbi4gTGljZW5zZSBMR1BMLCBmcmVlCiAgICAgICAgICAgICAgZG93bmxvYWQuIEl0J3MgcHJldHR5IG9sZCBub3csIGFuZCBub3QgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvY3Jvc3NvdmVyLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBQbHVnaW48L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgU3BlY2lhbCBXaW5lIGluc3RhbGxhdGlvbiB0byBiZSB1c2VkIGZvciBydW5uaW5nIFdpbmRvd3MKICAgICAgICAgICAgICBOZXRzY2FwZSBicm93c2VyIHBsdWdpbnMgc3VjaCBhcyBlLmcuIFF1aWNrVGltZSBpbiBMaW51eAogICAgICAgICAgICAgIGJyb3dzZXJzLiBDb3N0cyAkMzQuOTUuCiAgICAgICAgICAgICAgV2VsbCB3b3J0aCBpdCAodmVyeSBzdGFibGUgYW5kIHVzZWZ1bCBwYWNrYWdpbmcpLiAKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgoKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL29mZmljZS8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFdpbmUgdmVyc2lvbiB3aXRoIHNwZWNpYWwgcGFja2FnaW5nIHRvIG1ha2Ugc3VyZSBhbG1vc3QgYWxsIAogICAgICAgICAgICAgIGltcG9ydGFudCBPZmZpY2UgdHlwZSBwcm9ncmFtcyB3b3JrIHByZXR0eSB3ZWxsLiBDb3N0cyAkNTQuOTUuIAogICAgICAgICAgICAgIFNlZW1zIHRvIGJlIHdlbGwgd29ydGggaXQgc28gZmFyIGFjY29yZGluZyB0byBzb21lIGNvbW1lbnRzLiAKICAgICAgICAgICAgICAobm90ZTogeW91J3JlIHN1cHBvcnRpbmcgYSBjb21wYW55IGFjdGl2ZWx5IGNvbnRyaWJ1dGluZyB0byBXaW5lCiAgICAgICAgICAgICAgaWYgeW91IGRlY2lkZSB0byBidXkgZWl0aGVyIFBsdWdpbiBvciBPZmZpY2UuKQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jeG9mZmljZXNlcnZlci8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBydW4geW91ciBmYXZvcml0ZSBXaW5kb3dzIHByb2R1Y3Rpdml0eSBhcHBsaWNhdGlvbnMgaW4gCiAgICAgICAgICAgICBhIGRpc3RyaWJ1dGVkIHRoaW4tY2xpZW50IGVudmlyb25tZW50IHVuZGVyIExpbnV4LiBTZXJ2ZXIgRWRpdGlvbiBpcyAKICAgICAgICAgICAgIGFsc28gYSBncmVhdCBhZGRpdGlvbiB0byBTb2xhcmlzIGVudmlyb25tZW50cywgc2luY2UgdGhlcmUgYnVpbHQtaW4gCiAgICAgICAgICAgICBzdXBwb3J0IGZvciBTb2xhcmlzIGRlc2t0b3BzIG1ha2VzIHJ1bm5pbmcgV2luZG93cyBhcHBsaWNhdGlvbnMgYSAKICAgICAgICAgICAgIHBvc3NpYmlsaXR5IG9uIFN1biB3b3Jrc3RhdGlvbnMgYXMgd2VsbC4gRm9yIHByaWNpbmcganVzdCBmb2xsb3cgdGhpcyBsaW5rOiAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL3ByaWNpbmcucGhwIj5Dcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uIFByaWNpbmc8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAoKICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXRzLXRoZS1oaXN0b3J5LW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQncyB0aGUgaGlzdG9yeSBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIHByb2plY3Qgc3RhcnRlZCBpbiAxOTkzIGFzIGEgd2F5IHRvIHN1cHBvcnQgcnVubmluZyBXaW5kb3dzIDMuMQogICAgICAgICAgcHJvZ3JhbXMgb24gTGludXguIEJvYiBBbXN0YWR0IHdhcyB0aGUgb3JpZ2luYWwgY29vcmRpbmF0b3IsIGJ1dCB0dXJuZWQKICAgICAgICAgIGl0IG92ZXIgZmFpcmx5IGVhcmx5IG9uIHRvIEFsZXhhbmRyZSBKdWxsaWFyZCwgd2hvIGhhcyBydW4gaXQgZXZlciAKICAgICAgICAgIHNpbmNlLiBBIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj5uZXdzZ3JvdXA8L3VsaW5rPgogICAgICAgICAgd2FzIGNyZWF0ZWQgaW4gSnVseSAxOTk0LiBPdmVyIHRoZSB5ZWFycywgcG9ydHMgZm9yCiAgICAgICAgICBvdGhlciBVbml4ZXMgaGF2ZSBiZWVuIGFkZGVkLCBhbG9uZyB3aXRoIHN1cHBvcnQgZm9yIFdpbjMyIGFzIFdpbjMyIAogICAgICAgICAgYXBwbGljYXRpb25zIGJlY2FtZSBwb3B1bGFyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQ8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQuc2h0bWwiPnRoZSBEb3dubG9hZCBwYWdlPC91bGluaz4KICAgICAgICAgIGZvciBzb21lIG9mIHRoZXNlIGNob2ljZXMpLCB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgZ2V0dGluZyAKICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbiBieSB3YXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZS4gRm9yIGluc3RhbmNlLCB0aGUgZGlzdHJpYnV0aW9uIHJlbGVhc2VkIG9uIEF1Z3VzdCAxMywgMjAwMwogICAgICAgICAgd2FzIGNhbGxlZCBXaW5lLTIwMDMwODEzLnRhci5nei4gUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLiBJZgogICAgICAgICAgeW91IGFyZSBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIGFuZCBhcHBseSAKICAgICAgICAgIGp1c3QgdGhlIGN1cnJlbnQgcGF0Y2ggZmlsZSByYXRoZXIgdGhhbiB0aGUgZW50aXJlIG5ldyBkaXN0cmlidXRpb24uCiAgICAgICAgICBUaGUgcGF0Y2ggZmlsZSBuYW1lcyBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbnMgYXMgdGhlIG1vbnRobHkgCiAgICAgICAgICBkaXN0cmlidXRpb24uIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2N2cyI+CiAgICAgICAgICBSZWFkLW9ubHkgQ1ZTPC91bGluaz4gYWNjZXNzIGlzIGFsc28gYXZhaWxhYmxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtU3RhdHVzLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgU3RhdHVzIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgbWlkIDIwMDMsIFdpbmUgY29uc2lzdHMgb2YgYWJvdXQgMS40IG1pbGxpb24gbGluZXMgb2YgY29kZSwKICAgICAgICAgIHdyaXR0ZW4gYnkgbW9yZSB0aGFuIDU1MCBkZXZlbG9wZXJzIGZyb20gZG96ZW5zIG9mIGNvdW50cmllcyBhcm91bmQKICAgICAgICAgIHRoZSB3b3JsZC4gV2luZSBpcyBpbiBhY3RpdmUgdXNlIGJ5IGFuIGVzdGltYXRlZCAxMDBLIHBlb3BsZS4gV2luZQogICAgICAgICAgaW1wbGVtZW50cyBtb3JlIHRoYW4gOTAlIG9mIHRoZSBjYWxscyBpbiBwb3B1bGFyIFdpbmRvd3MgCiAgICAgICAgICBzcGVjaWZpY2F0aW9ucyBzdWNoIGFzIEVDTUEtMjM0IGFuZCBPcGVuMzIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG1heSBhbHNvIHdhbnQgdG8gbG9vayBhdCB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL3N0YXR1cyI+CiAgICAgICAgICBTdGF0dXMgcGFnZTwvdWxpbms+IGZvciBhIGdsb2JhbCB2aWV3IG9uIFdpbmUncyBpbXBsZW1lbnRhdGlvbiBwcm9ncmVzcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLXdpbGwtV2luZS1iZS1maW5pc2hlZCI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgYmUgZmluaXNoZWQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGFyZ2Ugc29mdHdhcmUgcHJvamVjdHMgYXJlIG5ldmVyIGZpbmlzaGVkLCBvbmx5IHJlbGVhc2VkLiBJbiBhbnkKICAgICAgICAgIGNhc2UgV2luZSBpcyBjaGFzaW5nIGEgbW92aW5nIHRhcmdldCBzaW5jZSBldmVyeSBuZXcgcmVsZWFzZSBvZiAKICAgICAgICAgIFdpbmRvd3MgY29udGFpbnMgbmV3IEFQSSBjYWxscyBvciB2YXJpYXRpb25zIG9uIHRoZSBleGlzdGluZyBvbmVzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2UgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgYnkgdm9sdW50ZWVycywgaXQgaXMgZGlmZmljdWx0IHRvCiAgICAgICAgICBwcmVkaWN0IHdoZW4gaXQgd2lsbCBiZSByZWFkeSBmb3IgZ2VuZXJhbCByZWxlYXNlLiBCdXQgZHVlIHRvIHRoZQogICAgICAgICAgbXVjaCBpbmNyZWFzZWQgaW50ZXJlc3QgYnkgY29tcGFuaWVzIGluIHBvcnRpbmcgYXBwcyB2aWEgV2luZSwgV2luZQogICAgICAgICAgZGV2ZWxvcG1lbnQgaXMgY29uc3RhbnRseSBnZXR0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlLiBSaWdodCBub3cKICAgICAgICAgIHdlIGFyZSB3b3JraW5nIG9uIHJlbGVhc2luZyBXaW5lIDAuOSBSZWFsIFNvb24gTm93KHRtKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaG8taXMtcmVzcG9uc2libGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPldobyBpcyByZXNwb25zaWJsZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGF2YWlsYWJsZSB0aGFua3MgdG8gdGhlIHdvcmsgb2YgbWFueSBwZW9wbGUuIFBsZWFzZSBzZWUgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL0FVVEhPUlMiPkFVVEhPUlM8L3VsaW5rPgogICAgICAgICAgZmlsZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGZvciB0aGUgY29tcGxldGUgbGlzdC4gU29tZSBjb21wYW5pZXMgdGhhdAogICAgICAgICAgYXJlIG9yIGhhdmUgYmVlbiBpbnZvbHZlZCB3aXRoIFdpbmUgZGV2ZWxvcG1lbnQgYXJlIENvZGVXZWF2ZXJzLAogICAgICAgICAgVHJhbnNHYW1pbmcsIENvcmVsLCBhbmQgTWFjYWRhbWlhbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJmb2xrcy13aG8tY29udHJpYnV0ZWQtbW9uZXktb3ItZXF1aXBtZW50Ij4KICAgICAgICA8cGFyYT5XaG8gYXJlIHRoZSBmb2xrcyBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBjb250cmlidXRlZCBtb25leSBvciBlcXVpcG1lbnQgdG8gdGhlIFdpbmUgcHJvamVjdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQZW9wbGUgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgZ2l2ZW4gZ2VuZXJvdXMgY29udHJpYnV0aW9ucyBvZgogICAgICAgICAgbW9uZXksIGVxdWlwbWVudCwgb3IgbGljZW5zZXMsIGluY2x1ZGU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkRhdmlkIEwuIEhhcnBlcjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkJvYiBIZXBwbGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5NYXJrIEEuIEhvcnRvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPktldmluIFAuIExhd3RvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlRoZSBTeW50cm9weSBJbnN0aXR1dGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5KYW1lcyBXb3VsZmU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFZNV2FyZSBJbmMuICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPgogICAgICAgICAgICAgaHR0cDovL3d3dy52bXdhcmUuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ29yZWwgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29yZWwuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cuY29yZWwuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ29kZVdlYXZlcnMKICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS8iPmh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LXVuZG9jdW1lbnRlZC1BUElzLWFyZS1ub3QtdW5kZXJzdG9vZCI+CiAgICAgICAgPHBhcmE+V2hhdCB1bmRvY3VtZW50ZWQgQVBJcyAvIGludGVyZmFjZXMgYXJlIG5vdCB1bmRlcnN0b29kPyBXb3VsZAogICAgICAgICAgICAgIHNlZWluZyBNaWNyb3NvZnQgc291cmNlIGhlbHA/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJlc3Qgd291bGQgYmUgaWYgdGhlIFdpbmRvd3MgQVBJIHdhcyBmdWxseSBkb2N1bWVudGVkLCBzbyBXaW5lCiAgICAgICAgICBjb3VsZCBiZSBhIHBlcmZlY3QgImNsZWFuLXJvb20iIGltcGxlbWVudGF0aW9uLiBTZWVpbmcgdGhlIHNvdXJjZQogICAgICAgICAgY29kZSBtaWdodCBtYWtlIGl0IGhhcmRlciB0byBwcm92ZSB0aGF0IG5vIGNvcHlyaWdodCB2aW9sYXRpb25zIGhhdmUKICAgICAgICAgIHRha2VuIHBsYWNlLiBUaGF0IHNhaWQsIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9mdGVuIGJhZCwgbm9uZXhpc3RlbnQsCiAgICAgICAgICBhbmQgZXZlbiBtaXNsZWFkaW5nIHdoZXJlIGl0IGV4aXN0cywgc28gYSBmYWlyIGFtb3VudCBvZiByZXZlcnNlCiAgICAgICAgICBlbmdpbmVlcmluZyBoYXMgYmVlbiBuZWNlc3NhcnksIHBhcnRpY3VsYXJseSBpbiB0aGUgc2hlbGwgKEV4cGxvcmVyKQogICAgICAgICAgaW50ZXJmYWNlLiBUaGUgYmlnZ2VzdCBwcm9ibGVtIGZhY2luZyBXaW5lIHRob3VnaCBpcyBzaW1wbHkgbGFjayBvZgoJICBtYW5wb3dlci4gQXQgb25lIHBvaW50LCBvdmVyIDUwMDAgcGVvcGxlIHdlcmUgd29ya2luZyBvbiBXaW5kb3dzIDIwMDAuCgkgIFdoaWxlIFdpbmUgZG9lc24ndCBuZWVkIHRvIHJlcGxpY2F0ZSBhbGwgb2YgV2luZG93cyAod2Ugb25seSBjb3ZlciB0aGUKCSAgcGFydHMgbmVlZGVkIHRvIG1ha2UgV2luZG93cyBwcm9ncmFtcyB3b3JrKSwgdGhhdCdzIHN0aWxsIG5lYXJseSAxMCB0aW1lcwoJICBtb3JlIHBlb3BsZSB3b3JraW5nIHNpbXBseSBvbiBvbmUgcmVsZWFzZSB0aGFuIGhhdmUgPGVtcGhhc2lzPmV2ZXI8L2VtcGhhc2lzPgoJICB3b3JrZWQgb24gV2luZSwgaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1UcmFuc0dhbWluZ3MtbGFzdC1wYXRjaC1pbmNsdWRlZC1pbi1XaW5lIj4KICAgICAgICA8cGFyYT5JcyBUcmFuc0dhbWluZydzIGxhdGVzdCBwYXRjaCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgV2luZSByZWxlYXNlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBpdCdzIG5vdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcmFuc0dhbWluZyBtYWtlcyBtb25leSB2aWEgYSBzdWJzY3JpcHRpb24gc2VydmljZSBhbmQgdGhlIGxpY2Vuc2UKICAgICAgICAgIG9mIHRoZWlyIFdpbmVYIHRyZWUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFdpbmUgbGljZW5zZS4gVGh1cwogICAgICAgICAgV2luZVggcGF0Y2hlcyBjYW5ub3QgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBXaW5lIHRyZWUgd2l0aG91dAogICAgICAgICAgZXhwcmVzcyBwZXJtaXNzaW9uIGJ5IFRyYW5zR2FtaW5nLiBUaGV5IGhhdmUgc3VibWl0dGVkIHNvbWUKICAgICAgICAgIG9mIHRoZWlyIHdvcmsgZm9yIGludGVncmF0aW9uIGludG8gV2luZSwgbW9zdCBub3RhYmx5IERpcmVjdERyYXcKICAgICAgICAgIGFuZCBzb21lIERpcmVjdFNvdW5kIHdvcmssIGFuZCBzdWNoIHdvcmsgaGFzIGJlZW4gaW50ZWdyYXRlZCBpbnRvCiAgICAgICAgICB0aGUgV2luZSB0cmVlLiBIb3dldmVyIGl0IHNlZW1zIHVubGlrZWx5IHRoZXkgd2lsbCBzdWJtaXQgdGhlaXIKICAgICAgICAgIERpcmVjdDNEIHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC10aGVyZS1iZS1hLVdpbmRvd3MtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIHRoZXJlIGJlIGEgV2luZG93cyB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU29tZSBwZW9wbGUgYXJlIHdvcmtpbmcgb24gZ2V0dGluZyBXaW5lIGNvZGUgdG8gY29tcGlsZSBvbiBXaW5kb3dzCiAgICAgICAgICB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9qZWN0cyBhcyBhIGJhc2lzOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgQ3lnd2luCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5jeWd3aW4uY29tLyI+aHR0cDovL3d3dy5jeWd3aW4uY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIE1pbkdXCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5taW5ndy5vcmcvIj5odHRwOi8vd3d3Lm1pbmd3Lm9yZzwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBSZWFjdE9TCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5odHRwOi8vd3d3LnJlYWN0b3MuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSdzIHNvbWUgcHJvZ3Jlc3MsIHNvIGEgV2luZSB2ZXJzaW9uIHRoYXQncyB1c2FibGUgb24gV2luZG93cwogICAgICAgICAgbWlnaHQgYmUgYXZhaWxhYmxlIGF0IHNvbWUgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXJ0IG9mIHRoZSByYXRpb25hbGUgZm9yIHRoZXNlIHByb2plY3RzIGlzIHRvIGZpbmQgb3V0IGFyZWFzIHdoZXJlCiAgICAgICAgICBXaW5lIHBvcnRhYmlsaXR5IGlzIGxhY2tpbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIG9mIHRoZQogICAgICAgICAgUmVhY3RPUyBwcm9qZWN0IHdoaWNoIGlzIGEgcmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cyBrZXJuZWwKICAgICAgICAgIGFuZCBzaG91bGQgdGh1cyBiZSBhYmxlIHRvIHJldXNlIG1vc3Qgb2YgV2luZSBkbGxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFub3RoZXIgcmVhc29uIGZvciBwdXJzdWluZyB0aGVzZSBwcm9qZWN0cyBpcyB0byBiZSBhYmxlIHRvCiAgICAgICAgICByZXBsYWNlIGEgc2luZ2xlIFdpbmRvd3MgZGxsIHdpdGggaXRzIFdpbmUgY291bnRlcnBhcnQuIEJlc2lkZXMKICAgICAgICAgIGJlaW5nIGEgZ29vZCB0ZXN0IGZvciB0aGUgV2luZSBkbGwsIHRoaXMgbGV0cyB1cyBkZXRlY3QgY2FzZXMgd2hlcmUKICAgICAgICAgIHdlIG1hZGUgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGhvdyB0aGUgZGxscyBpbnRlcmFjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtbmF0aXZlLWRyaXZlcnMiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5kb3dzIHByaW50ZXIgZHJpdmVycyBpbiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5hdGl2ZSBwcmludGVyIGRyaXZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIEF0IG9uZSB0aW1lIFdpbmUgc3VwcG9ydGVkIDE2Yml0IAogICAgICAgICAgbmF0aXZlIGRyaXZlcnMgYnV0IHRoYXQgd2FzIGxvbmcgYWdvLiBXaW5lIHVzZXMgdGhlIHByaW50ZXJzIChhbmQgb3RoZXIgCiAgICAgICAgICBkZXZpY2VzKSBpbnN0YWxsZWQgaW4geW91ciBvcGVyYXRpbmcgc3lzdGVtLiBGb3IgdGhlIG1vc3QgcGFydCBpZiB5b3UgZG9uJ3QgCiAgICAgICAgICBoYXZlIHRoZSBkZXZpY2UgaW5zdGFsbGVkIG9uIHlvdXIgT1MgdGhlbiB3aW5lIGNhbid0IHVzZSBpdC4gCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJXaGF0LWRvLUktbmVlZC1pbi1vcmRlci10by11c2UtV2luZSI+CiAgICAgIDx0aXRsZT5XaGF0IGRvIEkgbmVlZCBpbiBvcmRlciB0byB1c2UgV2luZT88L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVbmRlci13aGF0LXBsYXRmb3Jtcy13aWxsLVdpbmUtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVuZGVyIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm0ocykgYW5kIG9wZXJhdGluZyBzeXN0ZW0ocykgd2lsbAogICAgICAgICAgV2luZShMaWIpIHJ1bj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBzcGVjaWZpY2FsbHkgdG8gcnVuIG9uIHRoZSA8ZW1waGFzaXM+SW50ZWwKICAgICAgICAgIHg4NjwvZW1waGFzaXM+IGNsYXNzIG9mIENQVXMgdW5kZXIgY2VydGFpbiBVTklYZXMgdGhhdCBydW4gb24gdGhpcwogICAgICAgICAgcGxhdGZvcm0uIFdpbmVsaWIgaG93ZXZlciBpcyBjYXBhYmxlIG9mIHBvcnRpbmcgdGhlIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyA8ZW1waGFzaXM+c291cmNlIGNvZGU8L2VtcGhhc2lzPiB0byBvdGhlciBwbGF0Zm9ybXMKICAgICAgICAgIGFsc28sIG5vdCBvbmx5IHg4Ni4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaHVzIHJ1bm5pbmcgV2luZG93cyBiaW5hcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gTWFjIE9TIFggb24KICAgICAgICAgIFBvd2VyUEMpIHVzaW5nIGp1c3QgV2luZSBpcyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gcG9zc2libGUuIFlvdQogICAgICAgICAgd291bGQgaGF2ZSB0byBlaXRoZXIgcnVuIFdpbmUgaW4gYW4gZW11bGF0ZWQgeDg2IGVudmlyb25tZW50IG9yCiAgICAgICAgICB0YWtlIHRoZSBXaW5kb3dzIGFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGFuZCByZWNvbXBpbGUgaXQgdXNpbmcKICAgICAgICAgIFdpbmVsaWIuCgk8L3BhcmE+Cgk8cGFyYT4KCSAgVGhlc2UgYXJlIHRoZSBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IFdpbmUuCgkgIFdpbmVsaWIgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zIGtlZXBzIGV2b2x2aW5nLAoJICBzbyBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgbGlzdGVkIGhlcmUuCgk8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOZXRCU0QsIE9wZW5CU0QsIFVuaXhXYXJlLCBhbmQgU0NPIE9wZW5TZXJ2ZXIgNSB3b3JrZWQgYXQgb25lIHRpbWUsCiAgICAgICAgICBidXQgV2luZSBub3cgcmVxdWlyZXMga2VybmVsLWxldmVsIHRocmVhZHMgd2hpY2ggYXJlIG5vdCBjdXJyZW50bHkgCiAgICAgICAgICBhdmFpbGFibGUgKG9yIHVuZGVyc3Rvb2QgYnkgdGhlIFdpbmUgdGVhbSkgb24gdGhvc2UgcGxhdGZvcm1zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGRldmVsb3BtZW50IHRlYW0gaG9wZXMgdG8gYXR0cmFjdCB0aGUgaW50ZXJlc3Qgb2Ygb3RoZXIKICAgICAgICAgIGNvbW1lcmNpYWwgVU5JWCBhbmQgVU5JWCBjbG9uZSB2ZW5kb3JzIGFzIHdlbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVPUzogcG9ydGluZyBlZmZvcnRzIChCZVdpbmUpIHVzZWQgdG8gYmUgcHJldHR5IHN0cm9uZywgYnV0IEJlT1MKICAgICAgICAgIGhhcyBzZXZlcmUgbGltaXRhdGlvbnMgaW4gVW5peCBjYWxsIHN1cHBvcnQuIFRoZSBkZW1pc2Ugb2YgQmUKICAgICAgICAgIGZ1cnRoZXIgaGFtcGVyZWQgdGhlIHByb2plY3QgdGhvdWdoIGl0IG1pZ2h0IGNvbWUgYmFjayBvbmUgZGF5IG9uCiAgICAgICAgICBvbmUgb2YgdGhlIG9wZW4gQmVPUyBwcm9qZWN0cy4gSW4gYW55IGNhc2UgYSBmdW5jdGlvbmFsIHBvcnQgc2VlbXMKICAgICAgICAgIHVubGlrZWx5IHRvIGV2ZXIgaGFwcGVuIGF0IHRoaXMgc3RhZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFjIE9TIFggLyBEYXJ3aW46IFRoZSA8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL2RhcndpbmUuc291cmNlZm9yZ2UubmV0L3Byb2plY3QuaHRtbCI+RGFyd2luZTwvPiBpcwogICAgICAgICAgY3VycmVudGx5IHdvcmtpbmcgb24gcG9ydGluZyBXaW5lIHRvIHRoZSBEYXJ3aW4veDg2IHBsYXRmb3JtLiBUaGVpcgogICAgICAgICAgZ29hbCBpcyB0byBldmVudHVhbGx5IG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIHg4NiBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gRGFyd2luL1BQQyBhbmQgdGhlbiBNYWMgT1MgWCBieSB1c2luZyBCb2Nocy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGcmVlQlNEOiBUaGlzIHBvcnQgaXMgd2VsbCBtYWludGFpbmVkIGFuZCBzaG91bGQgd29yayB3aXRoCiAgICAgICAgICBsaW1pdGF0aW9ucyBpbiBzcGVjaWZpYyBhcmVhcyAobWFpbmx5IG1pc3NpbmcgZGV2aWNlL2hhcmR3YXJlCiAgICAgICAgICBzdXBwb3J0KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMaW51eC94ODY6IFdvcmtzLCBhbmQgYXMgdGhlIG1vc3QgcG9wdWxhciBwbGF0Zm9ybSBmb3IgYm90aAogICAgICAgICAgZGV2ZWxvcGVycyBhbmQgdXNlcnMsIGl0IGlzIHRoZSBiZXN0IHN1cHBvcnRlZCBwbGF0Zm9ybSBvZiBhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1taW5pbXVtLUNQVS1tdXN0LUktaGF2ZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG1pbmltdW0gQ1BVIG11c3QgSSBoYXZlIGluIG15IGNvbXB1dGVyIHRvIGJlIGFibGUgdG8gcnVuIFdpbmUgCiAgICAgICAgICBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gV2luZSBhbmQgV2luZWxpYiBoZXJlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgd29uJ3QgcnVuIG9uIGFueSB4ODYgQ1BVIGxlc3MgdGhhbiBhbiA4MDM4NiBkdWUgdG8gYWRkcmVzcwogICAgICAgICAgbWFuYWdlbWVudCBsaW1pdGF0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBrbm93biB0byBhbHNvIHdvcmsgaW4gdGhlIDgwNDg2IGFuZCB1cHdhcmRzIGNvbXBhdGlibGUgQ1BVcy4KICAgICAgICAgIFRoZSBiYXNpYyB0ZXN0IGlzLCBpZiB5b3UgY2FuIHJ1biBYMTEgbm93LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyB1bmRlciBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBhbHdheXMsIHRoZSBmYXN0ZXIgeW91ciBDUFUsIHRoZSBiZXR0ZXIuIEhhdmluZyBhIG1hdGggY29wcm9jZXNzb3IKICAgICAgICAgIGlzIHVuaW1wb3J0YW50LiBIb3dldmVyLCBoYXZpbmcgYSBncmFwaGljcyBhY2NlbGVyYXRlZCB2aWRlbyBjYXJkCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgWCB3aWxsIGhlbHAgZ3JlYXRseS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBhcHBsaWNhdGlvbiB5b3UgbWF5IGZpbmQgdGhhdCBmYXN0ZXIgc3BlZWRzIGFyZQogICAgICAgICAgcmVxdWlyZWQgZm9yIHNlbnNpYmxlIHVzZS4gV2UgY2FuJ3QgZ2l2ZSBzcGVjaWZpYyBhZHZpY2Ugb24gdGhhdCBkdWUKICAgICAgICAgIHRvIHRoZSB2YXN0IHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUuIEhvd2V2ZXIgdGhlIHJ1bGUgb2YKICAgICAgICAgIHRodW1iIGlzIHRoYXQgaWYgeW91ciBhcHBsaWNhdGlvbiBydW5zIGZpbmUgb24gV2luZG93cywgaXQgc2hvdWxkCiAgICAgICAgICBydW4gZmluZSBvbiB0aGUgc2FtZSBwbGF0Zm9ybSBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLWRpc2stc3BhY2Utd2lsbC1XaW5lLXRha2UiPgogICAgICAgIDxwYXJhPgogICAgICAgICBIb3cgbXVjaCBkaXNrIHNwYWNlIHdpbGwgdGhlIFdpbmUgc291cmNlIGNvZGUgYW5kIGJpbmFyaWVzIHRha2Ugb24gbXkKICAgICAgICAgaGFyZCBkcml2ZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbmVlZCBhcHByb3hpbWF0ZWx5IDI1MCBtZWdhYnl0ZXMgb2YgZnJlZSBoYXJkIGRyaXZlIHNwYWNlIHRvCiAgICAgICAgICBzdG9yZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGUuIFdpbmUgYWxzbyBuZWVkcyBhYm91dCAxOCBtZWdzIGluCiAgICAgICAgICB5b3VyIC90bXAgZGlyZWN0b3J5LiBBbmQgYWJvdXQgNTAgTUIgYXJlIG5lZWRlZCB0byBkbyBhIG1ha2UgaW5zdGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCaW5hcnkgcGFja2FnZXMsIGVzcGVjaWFsbHkgdGhvc2Ugbm90IGNvbnRhaW5pbmcgZGVidWcgaW5mb3JtYXRpb24sCiAgICAgICAgICBoYXZlIG11Y2ggbG93ZXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMsIHVzdWFsbHkgaW4gdGhlIDIwTUIgcmFuZ2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1vdGhlci1zb2Z0d2FyZS1kby1JLW5lZWQtdG8tY29tcGlsZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG90aGVyIHNvZnR3YXJlIGRvIEkgbmVlZCB0byBpbnN0YWxsLCBjb21waWxlIGFuZCBydW4KICAgICAgICAgIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBkZXZlbG9wbWVudCB0b29scyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGNvbXBpbGUgV2luZS4KICAgICAgICAgIEEgbGlzdCBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBkaXN0cmlidXRpb25zIGlzIGluY2x1ZGVkIGluCiAgICAgICAgICB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBydW4gV2luZSwgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPlRoZSBjb21waWxlZCBXaW5lIGJpbmFyeTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkEgcHJvcGVybHkgY29uZmlndXJlZCB3aW5lLmNvbmYgZmlsZSAob3Igfi8ud2luZXJjIGZpbGUpPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QW4gaW5zdGFsbGVkIGFuZCB3b3JraW5nIFggV2luZG93IHN5c3RlbTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlNvbWUgV2luZG93cyBwcm9ncmFtcyB0byB0ZXN0PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1tdWNoLVJBTS1kby1JLW5lZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93IG11Y2ggUkFNIGRvIEkgbmVlZCB0byBoYXZlIG9uIG15IFVOSVggc3lzdGVtIHRvIGJlIGFibGUgdG8gcnVuIAogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgc21vb3RobHk/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBydW4gWCBzbW9vdGhseSBvbiB5b3VyIFVOSVggc3lzdGVtIG5vdywgeW91IHNob3VsZCBiZSAKICAgICAgICAgIGFibGUgdG8gcnVuIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGp1c3QgZmluZSB0b28sIGRlcGVuZGluZwogICAgICAgICAgb24gaG93IG1lbW9yeSBodW5ncnkgdGhlIGFwcGxpY2F0aW9uIGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgV2luZSB3b3Jrc3RhdGlvbiB3aWxsIHdvcmsgd2l0aCAxNiBtZWdhYnl0ZXMgb2YgUkFNIGFuZCBhIDE2IAogICAgICAgICAgbWVnYWJ5dGUgc3dhcCBwYXJ0aXRpb24gYXMgbG9uZyBhcyB5b3UgaGF2ZSBhIHJlYXNvbmFibGUgZ3JhcGhpY3MgCiAgICAgICAgICBjYXJkLiBNb3N0IGFwcGxpY2F0aW9ucyB3aWxsIHJ1biByZWFzb25hYmx5IHdpdGggNjQvNjQgTWIsIAogICAgICAgICAgaW50ZXJhY3RpdmUgZ2FtZXMgYXJlIGxpa2VseSB0byBuZWVkIG1vcmUuIFlvdSBjYW4gcnVuIFdpbmUgd2l0aCA4LzgsCiAgICAgICAgICBidXQgaXQgaXMgZ29pbmcgdG8gYmUgdW51c2FibHkgc2xvdyBhbmQgdmVyeSBjb25zdHJhaW5pbmcgb24gdGhlIAogICAgICAgICAgYXBwbGljYXRpb25zIHlvdSBjYW4gcnVuLiBJZiB5b3Ugd2lzaCB0byBiZSBwYXJ0IG9mIHRoZSBkZXZlbG9wbWVudAogICAgICAgICAgdGVhbSBhbmQgcHJvZ3JhbSBXaW5lIGl0c2VsZiwgYmUgYXdhcmUgdGhhdCB0aGUgZGVidWdnZXIgaXMgcmF0aGVyIAogICAgICAgICAgbWVtb3J5IGludGVuc2l2ZS4gU29tZSBoYXZlIHN1Z2dlc3RlZCB0aGF0IDY0IG1lZ2FieXRlcyBpcyB0aGUKICAgICAgICAgIG1pbmltdW0gUkFNIG5lZWRlZCBmb3IgV2luZSBkZXZlbG9wbWVudCwgYWx0aG91Z2ggc29tZSBhcmUgYWJsZSB0byAKICAgICAgICAgIHdvcmsgKGFsYmVpdCBzbG93bHkpIHdpdGggMjQgbWVnYWJ5dGVzIG9mIHBoeXNpY2FsIFJBTSBhbmQgbG90cyBvZgogICAgICAgICAgc3dhcCBzcGFjZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbG9uZy1kb2VzLVdpbmUtdGFrZS10by1idWlsZCI+CiAgICAgICAgPHBhcmE+SG93IGxvbmcgZG9lcyBXaW5lIHRha2UgdG8gYnVpbGQ8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGdldHRpbmcgdG8gYmUgcXVpdGUgbGFyZ2UsIGFuZCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggdGFrZXMgYQogICAgICAgICAgbG90IG9mIHByb2Nlc3NpbmcuIEFzIG9mIFNlcHRlbWJlciAyMDAyLCBjb21waWxlIHRpbWVzIHdlcmUgYXJvdW5kIDIwCiAgICAgICAgICBtaW51dGVzIG9uIGFuIEF0aGxvbiAxMjAwIHdpdGggNjQwIE1iIGFuZCA0NS01MCBtaW51dGVzIG9uIGEgQ3lyaXggCiAgICAgICAgICAzMDAgd2l0aCA2NCBNYi4gSWYgeW91IGhhdmUgYSBDVlMgY29weSwgeW91IG1heSBub3QgbmVlZCB0byByZWJ1aWxkCiAgICAgICAgICB0aGUgd2hvbGUgdGhpbmcgZXZlcnkgdGltZSB5b3UgdXBkYXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLWEtRHJpdmVzcGFjZWQtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IgU3RhY2tlcmVkIERPUyBwYXJ0aXRpb24uIENhbiAKICAgICAgICAgIFdpbmUgcnVuIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiBzdWNoIGEgcGFydGl0aW9uPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYnV0IG9ubHkgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydHMgbW91bnRpbmcgdGhvc2UgdHlwZXMKICAgICAgICAgIG9mIGRyaXZlcy4gVGhlcmUgaXMgYSBMaW51eCBmaWxlIHN5c3RlbSBkcml2ZXIgY2FsbGVkIGRtc2RvcyB0aGF0CiAgICAgICAgICB3aWxsIGFsbG93IHJlYWQvd3JpdGUgYWNjZXNzIHRvIERvdWJsZXNwYWNlZCBhbmQgRHJpdmVzcGFjZSAxLjAKICAgICAgICAgIGRyaXZlcy4gTW9yZSBzcGVjaWZpY2FsbHksIGl0IHN1cHBvcnRzIG1vdW50aW5nIERPUyA2LjAgYW5kIDYuMiAKICAgICAgICAgIERvdWJsZXNwYWNlZCwgRE9TIDYuMjIgRHJpdmVzcGFjZWQsIGFuZCBXaW5kb3dzIDk1IERvdWJsZXNwYWNlZCAKICAgICAgICAgIGNvbXByZXNzZWQgcGFydGl0aW9ucyAocmVhZCBhbmQgd3JpdGUgYWNjZXNzIHdvcmtzIGZpbmUsIGJ1dCB3cml0ZSAKICAgICAgICAgIGFjY2VzcyBpcyBzbG93KS4gSXQgY2FuIGJlIGZvdW5kIGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvIj4KICAgICAgICAgIGZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLzwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG8tSS1uZWVkLXRvLWhhdmUtYS1ET1MtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT5EbyBJIG5lZWQgdG8gaGF2ZSBhIERPUyBwYXJ0aXRpb24gb24gbXkgc3lzdGVtIHRvIHVzZSBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCBhIGxpY2Vuc2VkIGFuZCBpbnN0YWxsZWQgY29weSBvZiBET1Mgb3IgTVMgV2luZG93cyB0bwogICAgICAgICAgaW5zdGFsbCwgY29uZmlndXJlIGFuZCBydW4gV2luZS4gSG93ZXZlciwgV2luZSBoYXMgdG8gYmUgYWJsZSB0byAKICAgICAgICAgICdzZWUnIGFuIE1TIFdpbmRvd3MgYmluYXJ5IChpLmUuIGFwcGxpY2F0aW9uKSBpZiBpdCBpcyB0byBydW4gaXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtTVMtV2luZG93cy1uZWVkLXRvLWJlLWluc3RhbGxlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEb2VzIE1TIFdpbmRvd3MgbmVlZCB0byBiZSBsb2FkZWQgaW50byB0aGF0IHBhcnRpdGlvbiBpbiBvcmRlciB0bwogICAgICAgICAgcnVuIE1TIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGZvbGtzIGhhdmUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBhbmQgcnVuIHByb2dyYW1zCiAgICAgICAgICBpbiB0aGVpciBVTklYIGZpbGUgc3lzdGVtIHdpdGhvdXQgaGF2aW5nIGEgRE9TIHBhcnRpdGlvbiBvciBNUyAKICAgICAgICAgIFdpbmRvd3MuIEhvd2V2ZXIsIGluIG1hbnkgY2FzZXMgeW91IG5lZWQgYSBkaXJlY3RvcnkgYW5kIGZpbGUgCiAgICAgICAgICBpbmZyYXN0cnVjdHVyZSB0aGF0IGlzIHNpbWlsYXIgdG8gYW4gZXhpc3RpbmcgV2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICBTb21lIGFwcGxpY2F0aW9ucycgaW5zdGFsbGF0aW9uIHByb2dyYW1zIHdhbnQgdG8gZGlzdHJpYnV0ZSBzb21lIG9mCiAgICAgICAgICB0aGUgcGFja2FnZSdzIGZpbGVzIGludG8gdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBpbiBvcmRlciB0byBydW4sIGFuZCB1bmxlc3MgdGhlc2UgZXhpc3Qgb24geW91ciBVTklYIAogICAgICAgICAgZmlsZSBzeXN0ZW0sIHRob3NlIHByb2dyYW1zIHdpbGwgbm90IGluc3RhbGwgY29ycmVjdGx5IGFuZCBwcm9iYWJseQogICAgICAgICAgd2lsbCBub3QgcnVuIHdlbGwsIGlmIGF0IGFsbC4gTW9zdCBwYWNrYWdlcyB3aWxsIHNldCB0aGF0IHVwIGZvciB5b3UKCSAgYXMgcGFydCBvZiB0aGUgaW5zdGFsbCBwcm9jZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiB3aXRoIE1TIFdpbmRvd3MgaW5zdGFsbGVkIGluIGl0LCBtYWtlCiAgICAgICAgICBzdXJlIHRoYXQgeW91ciBVTklYIHN5c3RlbSBjYW4gJ3NlZScgdGhpcyBwYXJ0aXRpb24gKGNoZWNrIHlvdXIgCiAgICAgICAgICAvZXRjL2ZzdGFiIGZpbGUgb3IgbW91bnQgdGhlIHBhcnRpdGlvbiBtYW51YWxseSkgc28gdGhhdCBXaW5lIGNhbgogICAgICAgICAgcnVuIHRoZSBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gdGhlIERPUyBwYXJ0aXRpb24uIFRvIHJ1bgogICAgICAgICAgd2l0aG91dCBhIERPUyBwYXJ0aXRpb24sIHlvdSBuZWVkIHRvIHNldCBhIFVOSVggcGF0aCB0byBiZSB5b3VyIAogICAgICAgICAgZHJpdmUgQywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgcG9pbnQgdG8gc29tZSBwbGFjZSB0aGF0IGFjdHVhbGx5IGV4aXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlLCBjb3BpZWQgZnJvbSBhIG1hY2hpbmUgd2hpY2ggaGFzIG5vIERPUyBwYXJ0aXRpb24KICAgICAgICAgIGJ1dCBzdWNjZXNzZnVsbHkgcnVucyBXaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgogICAgW0RyaXZlIENdICAgICAgCiAgICAgICAgICBQYXRoPS92YXIvbGliL3dpbmUKICAgICAgICAgIFR5cGU9aGQKICAgIFt3aW5lXQogICAgICAgICAgV2luZG93cz1jOlx3aW5kb3dzCiAgICAgICAgICBTeXN0ZW09Yzpcd2luZG93c1xzeXN0ZW0KICAgICAgICAgIFRlbXA9ZTpcCiAgICAgICAgICBQYXRoPWM6XHdpbmRvd3M7Yzpcd2luZG93c1xzeXN0ZW07YzoKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSW4gPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93czwvZmlsZW5hbWU+LCB5b3Ugd2lsbCBuZWVkIHRvCiAgICAgICAgIGluc3RhbGwgYSA8ZmlsZW5hbWU+d2luLmluaTwvZmlsZW5hbWU+IGNvbmZpZyBmaWxlIHRoYXQgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgb24gYSB0eXBpY2FsIE1TIFdpbmRvd3MgMy4xIG1hY2hpbmUuIFRoZSBkaXJlY3RvcnkKICAgICAgICAgPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93cy9zeXN0ZW08L2ZpbGVuYW1lPiBzaG91bGQgZXhpc3QsIGJ1dAogICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29udGFpbiBhbnl0aGluZy4gSG93ZXZlciwgdG8gdXNlIE1TIERMTHMsIHlvdSBjYW4KICAgICAgICAgY29weSB0aGVtIGludG8gdGhhdCBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29udHJhdmVudGlvbiBvZgogICAgICAgICB0aGUgV2luZG93cyBsaWNlbmNlIHVubGVzcyBXaW5kb3dzIGlzIHByb3Blcmx5IGluc3RhbGxlZCBvbiB0aGUKICAgICAgICAgbWFjaGluZS4gSWYgeW91IGhhdmUgRE9TL01TIFdpbmRvd3MgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCB5b3UgY2FuCiAgICAgICAgIG1vdW50IHRoYXQgcGFydGl0aW9uIGF0IGJvb3R1cCBieSBtb2RpZnlpbmcgdGhlIGZpbGUgCiAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gaW4geW91ciBVTklYIHBhcnRpdGlvbiAoYXNzdW1pbmcgdGhhdAogICAgICAgICB0aGUgVU5JWCBrZXJuZWwgc3VwcG9ydHMgdGhlIERPUy9NUyBXaW5kb3dzIGZpbGUgc3lzdGVtIHR5cGUpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBlZGl0IHRoaXMgZmlsZSBieSBoYW5kLCBpdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgc2ltaWxhcgogICAgICAgICAgdG8gdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KL2Rldi9oZGExIC9kb3NjIG1zZG9zIHVpZD0wLGdpZD0xMDAsdW1hc2s9MDA3IDAgMAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHlvdSB0byByZWFkIGFuZCB3cml0ZSB0byB0aGUgRE9TIHBhcnRpdGlvbiB3aXRob3V0CiAgICAgICAgICBiZWluZyByb290LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1XaW5lLWNvbXBsZXRlbHktcmVwbGFjZXMtTVMtV2luZG93cyI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBXaW5lIGNvbXBsZXRlbHkgcmVwbGFjZXMgTVMgV2luZG93cywgd2lsbCBpdCBkdXBsaWNhdGUgYWxsIG9mIHRoZQogICAgICAgICAgZnVuY3Rpb25zIG9mIE1TIFdpbmRvd3M/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGdvYWwgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24KICAgICAgICAgIFVuaXguIFRvIHRoaXMgZW5kIGl0IHdpbGwgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIGp1c3QgdGhvc2UKICAgICAgICAgIERMTHMgYW5kIEFQSXMgdGhhdCBhcmUgbmVlZGVkIGJ5IHRoZXNlIFdpbmRvd3MgYXBwbGljYXRpb25zLgogICAgICAgICAgVGhpcyBtZWFucyB0aGF0IFdpbmUgd2lsbCBub3QgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIERMTHMgdGhhdAogICAgICAgICAgYXJlIG5vdCBzaGlwcGVkIHdpdGggV2luZG93cyBvciBhcmUgYWx3YXlzIHNoaXBwZWQgd2l0aCBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiAoZS5nLiB0aGUgVmlzdWFsIEJhc2ljIHJ1biB0aW1lKS4gVGhpcyBhbHNvCiAgICAgICAgICBtZWFucyB0aGF0IGltcGxlbWVudGluZyBhbiBBUEkgdGhhdCBubyBhcHBsaWNhdGlvbiBldmVyIHVzZXMgaXMgbm90CiAgICAgICAgICBhIHByaW9yaXR5LiBTaW1pbGFybHksIHVudGlsIHRoZXJlIGFyZSBhcHBsaWNhdGlvbnMgb3V0IHRoZXJlIHRoYXQKICAgICAgICAgIHVzZSB0aGUgV2luNjQgQVBJLCBpdCB3aWxsIG5vdCBiZSBhIHByaW9yaXR5LiBUaGF0IGJlaW5nIHNhaWQsCiAgICAgICAgICB3ZSB3aWxsIGNlcnRhaW5seSB0cnkgdG8ga2VlcCBvdXIgb3B0aW9ucyBvcGVuIGFuZCB0byBpbXByb3ZlIG91ciBBUEkKICAgICAgICAgIGNvdmVyYWdlIGFzIHdlIGNhbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbHNvIFdpbmUgaXMgbm90IGFuIG9wZXJhdGluZyBzeXN0ZW0sIHNvIHRoYXQgd3JpdGluZyBkZXZpY2UKICAgICAgICAgIGRyaXZlcnMgaXMgbm90IHBhcnQgb2YgV2luZSdzIGdvYWxzLiBIb3dldmVyIGlmIHlvdSBhcmUgaW50ZXJlc3RlZAogICAgICAgICAgaW4gZGV2aWNlIGRyaXZlcnMsIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvIj5MaW51eDwvdWxpbms+LAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5mcmVlYnNkLm9yZy8iPkZyZWVCU0Q8L3VsaW5rPiBhbmQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC91bGluaz4ga2VybmVsIGRldmVsb3BlcnMKICAgICAgICAgIHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIgY29udHJpYnV0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbWlsYXJseSBXaW5lIGRvZXMgbm90IHRyeSB0byBiZSBhIGRlc2t0b3AgZW52aXJvbm1lbnQgc28KICAgICAgICAgIHByb3ZpZGluZyBhcHBsZXRzIHN1Y2ggYXMgYSBjYWxjdWxhdG9yLCBhIGZpbGUgbWFuYWdlciBvciBldmVuCiAgICAgICAgICB3aW5kb3cgbWFuYWdlciB0aGF0IGxvb2sgbGlrZSBXaW5kb3dzLCBhcmUgbG93IHByaW9yaXR5IG9yIHdvdWxkCiAgICAgICAgICBldmVuIGJlc3QgYmUgZG9uZSBhcyBhIHNlcGFyYXRlIHByb2plY3QuIFN1Y2ggcHJvamVjdHMgd291bGQgYWxzbwogICAgICAgICAgdG8gYSBsYXJnZSBleHRhbnQgYmUgcmVkdW5kYW50IHdpdGggb3RoZXIgb3Blbi1zb3VyY2UgcHJvamVjdHMuCiAgICAgICAgICBBZ2FpbiwgdGhlcmUgYXJlIHByb2plY3RzIHRoYXQgd291bGQgY2VydGFpbmx5IGFwcHJlY2lhdGUgeW91cgogICAgICAgICAgY29udHJpYnV0aW9ucyBpbiB0aGlzIGFyZWFzLCBzdWNoIGFzIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5nbm9tZS5vcmcvIj5Hbm9tZTwvdWxpbms+IG9yCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmtkZS5vcmcvIj5LREU8L3VsaW5rPiBkZXNrdG9wIGVudmlyb25tZW50cy4gWW91CiAgICAgICAgICB3aWxsIGdldCB0aGUgYWRkZWQgYmVuZWZpdCB0aGF0IHlvdXIgY29udHJpYnV0aW9uIHdpbGwgdGhlbiBiZQogICAgICAgICAgdXNhYmxlIGJ5IGV2ZXJ5b25lLCBub3QganVzdCBieSBXaW5lIHVzZXJzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtSS1pbnN0YWxsLW9uLWFueS1VTklYLWZpbGUtc3lzdGVtIj4KICAgICAgICA8cGFyYT4gCiAgICAgICAgICBXaWxsIEkgYmUgYWJsZSB0byBpbnN0YWxsIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIGluIGFueSBmbGF2b3Igb2YgYQogICAgICAgICAgVU5JWCBmaWxlIHN5c3RlbT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdyaXR0ZW4gdG8gYmUgZmlsZSBzeXN0ZW0gaW5kZXBlbmRlbnQsIHNvIE1TIFdpbmRvd3MgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgd2lsbCBpbnN0YWxsIGFuZCBydW4gdW5kZXIgdmlydHVhbGx5IGFueSBmaWxlIHN5c3RlbQogICAgICAgICAgc3VwcG9ydGVkIGJ5IHlvdXIgYnJhbmQgb2YgVU5JWC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1XaW5lLXJ1bi1vbmx5LXVuZGVyLVgiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gb25seSB1bmRlciBYLCBvciBjYW4gaXQgcnVuIGluIGNoYXJhY3RlciBtb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1vc3Qgb2YgV2luZSdzIGRldmVsb3BtZW50IGVmZm9ydCBpcyBnZWFyZWQgdG93YXJkcyBNUyBXaW5kb3dzJyBHVUksCiAgICAgICAgICBidXQgc29tZSBsaW1pdGVkIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBtb2RlIGhhcyBhcHBlYXJlZCwgYnkgc2V0dGluZwogICAgICAgICAgPHBhcmFtZXRlcj5HcmFwaGljc0RyaXZlcj10dHlkcnY8L3BhcmFtZXRlcj4gaW4gd2luZS5jb25mJ3MKICAgICAgICAgIDxwYXJhbWV0ZXI+W3dpbmVdPC9wYXJhbWV0ZXI+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGluZnJhc3RydWN0dXJlIGlzIGFscmVhZHkgc29tZXdoYXQgcHJlcGFyZWQgZm9yIHN1cHBvcnRpbmcKICAgICAgICAgIG90aGVyIGdyYXBoaWNzIGRyaXZlcnMgdGhhbiB4MTFkcnYsIGJ1dCBubyByZWFsICJhbHRlcm5hdGl2ZSIgCiAgICAgICAgICBncmFwaGljcyBkcml2ZXIgaGFzIGJlZW4gZGV2ZWxvcGVkIHlldC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1XaW5lLXJ1bi11bmRlci1hbnktWC13aW5kb3ctbWFuYWdlciI+CiAgICAgICAgPHBhcmE+V2lsbCBXaW5lIHJ1biB1bmRlciBhbnkgWCB3aW5kb3cgbWFuYWdlcj8gRG9lcyBpdCByZXF1aXJlIGEgd2luZG93IG1hbmFnZXIgYXQgYWxsPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgd2luZG93IG1hbmFnZXIgaW5kZXBlbmRlbnQsIHNvIHRoZSBYIHdpbmRvdyBtYW5hZ2VyIHlvdQogICAgICAgICAgY2hvb3NlIHRvIHJ1biBoYXMgKGFsbW9zdCkgbm8gYmVhcmluZyBvbiB5b3VyIGFiaWxpdHkgdG8gcnVuIE1TCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW1zIHVuZGVyIFdpbmUuIFdpbmUgdXNlcyBzdGFuZGFyZCBYIGxpYnJhcmllcywgc28gbm8KICAgICAgICAgIGFkZGl0aW9uYWwgb25lcyBhcmUgbmVlZGVkLiBXaW5lIGhhcyBpdHMgb3duIHdpbmRvdyBtYW5hZ2VtZW50LAogICAgICAgICAgd2hpY2ggYWN0cyBsaWtlIE1TIFdpbmRvd3MuIEl0IGNhbiBiZSB0dXJuZWQgb2ZmIHRvIHVzZSB0aGUgbmF0aXZlCiAgICAgICAgICB3aW5kb3cgbWFuYWdlciBieSBtb2RpZnlpbmcgTWFuYWdlZCBvciBEZXNrdG9wIHNldHRpbmdzIGFzIGRlc2NyaWJlZAogICAgICAgICAgaW4gPGNvbW1hbmQ+bWFuIHdpbmUuY29uZjwvY29tbWFuZD4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC0zMi1iaXQtYXBwbGljYXRpb25zLXJ1bi11bmRlci1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIDMyLWJpdCBXaW5kb3dzIDk1Lzk4IGFwcGxpY2F0aW9ucyBydW4gdW5kZXIgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIDMyLWJpdCBwcm9ncmFtcyBhcmUgbm93IGFib3V0IGFzIHdlbGwgc3VwcG9ydGVkIGFzIDE2LWJpdCAKICAgICAgICAgICBwcm9ncmFtcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIAogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iRkFRLUdldHRpbmctV2luZSI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVyZS1jYW4tSS1nZXQtV2luZSI+CiAgICAgICAgPHBhcmE+V2hlcmUgY2FuIEkgZ2V0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBvZiBsYWdzIGNyZWF0ZWQgYnkgdXNpbmcgbWlycm9yLCB3b3JkIG9mIHRoZSBsYXRlc3QgcmVsZWFzZQogICAgICAgICAgbWF5IHJlYWNoIHlvdSBiZWZvcmUgdGhlIHJlbGVhc2UgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGF0IHRoZSBmdHAKICAgICAgICAgIHNpdGVzIGxpc3RlZCBoZXJlLiBUaGUgc291cmNlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZwogICAgICAgICAgbG9jYXRpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2hvd2ZpbGVzLnBocD9ncm91cF9pZD02MjQxJmFtcDtwYWNrYWdlX2lkPTc3NDQ5Ij4KICAgICAgICAgICAgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Nob3dmaWxlcy5waHA/Z3JvdXBfaWQ9NjI0MSZhbXA7cGFja2FnZV9pZD03NzQ0OQogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvTUlSUk9SUy5odG1sIj5odHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9NSVJST1JTLmh0bWw8Lz4uIFNvbWUgb2YKICAgICAgICAgIHRoZXNlIHNpdGVzIG1heSBhcmNoaXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIFdpbmUgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgIGN1cnJlbnQgb25lLiBUbyBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhdGVzdCBvbmUsIGxvb2sgYXQgdGhlIAogICAgICAgICAgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZSwgd2hpY2ggd2lsbCB0YWtlIHRoZSBmb3JtIAogICAgICAgICAgV2luZS1ZWVlZTU1ERC50YXIuZ3ouIFNpbXBseSByZXBsYWNlIFlZWVlNTUREIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZSB3aXRoIHRoZSBudW1iZXJzIGZvciB5ZWFyLCBtb250aCBhbmQgZGF0ZSwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgVGhlIGxhdGVzdCBvbmUgaXMgdGhlIG9uZSB0byBnZXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBiaW5hcnkgcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCBPUydlcyBhbmQgCiAgICAgICAgICBkaXN0cmlidXRpb25zLiBTZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+CiAgICAgICAgICB0aGUgZG93bmxvYWQgcGFnZTwvdWxpbms+IGZvciB0aGUgbW9zdCByZWNlbnQgbGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLUNWUy10cmVlIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIENWUyB0cmVlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnQgV2luZSBzb3VyY2VzIGFyZSBhbHNvIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIGNsaWVudC9zZXJ2ZXIKICAgICAgICAgIENWUy4gWW91IHdpbGwgbmVlZCBDVlMgMS45IG9yIGFib3ZlLiBJZiB5b3UgYXJlIGNvbWluZyBmcm9tIGJlaGluZCBhCiAgICAgICAgICBmaXJld2FsbCwgeW91IHdpbGwgZWl0aGVyIG5lZWQgYSBob2xlIGluIHRoZSBmaXJld2FsbCBmb3IgdGhlIENWUwogICAgICAgICAgcG9ydCAoMjQwMSkgb3IgdXNlIFNPQ0tTLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIGxvZ2luIHRvIHRoZSBDVlMgdHJlZSwgZG8KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6Y3ZzQGN2cy53aW5laHEub3JnL2hvbWUvd2luZQpjdnMgbG9naW4KICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzZSAiY3ZzIiBhcyB0aGUgcGFzc3dvcmQgKHdpdGhvdXQgdGhlIHF1b3RlcykuIE5vdGUgdGhhdCAKICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS93aW5lPC9maWxlbmFtZT4gaXMgYSBwYXRoIG9uIHRoZSBzZXJ2ZXIsIG5vdCBvbiB5b3VyCiAgICAgICAgICBtYWNoaW5lLiBUbyBjaGVjayBvdXQgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlICh3aGljaCBtYXkgYmUgCiAgICAgICAgICBzbG93KSwgdXNlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBvciBpZiB5b3UganVzdCB3YW50IGEgc3VidHJlZSwgb3IgaW5kaXZpZHVhbCBmaWxlLCB5b3UgY2FuIGRvIHRoYXQgCiAgICAgICAgICB0b28gd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lL0FOTk9VTkNFIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmUgYXdhcmUsIHRob3VnaCwgdGhhdCBnZXR0aW5nIHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSB2aWEgQ1ZTCiAgICAgICAgICBpcyBwcmV0dHkgc2xvdywgZXNwZWNpYWxseSBjb21wYXJlZCB0byBnZXR0aW5nIFdpbmUgZnJvbSBhbiBGVFAgCiAgICAgICAgICBtaXJyb3IgbmVhciB5b3UuIEZvciBhIENWUyBtaXJyb3IgbGlzdCwgc2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnMiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnM8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkb3dubG9hZCwKICAgICAgICAgIGluc3RhbGwsIGFuZCBjb25maWd1cmUgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZWFjaCB3ZWVrIGlmIHlvdSBhcmUKICAgICAgICAgIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHJlbGVhc2UuIFBhdGNoIGZpbGUgcmVsZWFzZSBuYW1lcyBmb2xsb3cgdGhlCiAgICAgICAgICBzYW1lIG51bWJlcmluZyBjb252ZW50aW9uIGFzIGRvIHRoZSBnZW5lcmFsIHJlbGVhc2VzLCBhbmQgdGFrZSB0aGUgCiAgICAgICAgICBmb3JtCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6ICAKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHNhbWUgc2l0ZXMgdGhhdCBkaXN0cmlidXRlIHRoZQogICAgICAgICAgZnVsbCByZWxlYXNlLiBUbyB1cGdyYWRlIHRvIGEgbmV3IHJlbGVhc2UgYnkgdXNpbmcgYSBwYXRjaCBmaWxlLAogICAgICAgICAgZmlyc3QgY2QgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIHJlbGVhc2UgKHRoZSBvbmUKICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIFJFQURNRSBmaWxlKSwgdGhlbiBkbyBhICJtYWtlIGNsZWFuIiwgYW5kIHBhdGNoIHRoZQogICAgICAgICAgcmVsZWFzZSB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cmd1bnppcCAtYyBwYXRjaC1maWxlIHwgcGF0Y2ggLXAxIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hlcmUgcGF0Y2gtZmlsZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGF0Y2ggZmlsZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6LiBZb3UgY2FuIHRoZW4gcmUtcnVuIC4vY29uZmlndXJlLCBhbmQgdGhlbiBydW4KICAgICAgICAgIG1ha2UgZGVwZW5kICYmIG1ha2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgYXJlIG1pcnJvcmluZyB0aGUgV2luZSBkaXN0cmlidXRpb24gZnJvbSB0aGUgdHN4LTExIHNpdGUgYW5kCiAgICAgICAgICB3aXNoIHRvIGJlIGxpc3RlZCBoZXJlIGluIHRoaXMgRkFRLCBwbGVhc2UgYWRkIGl0IHRvIHRoZSAKICAgICAgICAgICJ0aGluZ3MgdG8gZ28gaW50byB0aGUgZG9jdW1lbnRhdGlvbiIgYXJlYS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1nZXQtV2luZS11c2luZy1jdnN1cCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgZ2V0IFdpbmUgdXNpbmcgY3ZzdXA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIENWUyBtaXJyb3JzIGRvbid0IG9mZmVyIGN2c3VwIHN1cHBvcnQgeWV0LCBidXQgdGhlIG1haW4gc2VydmVyCiAgICAgICAgICBkb2VzLiBVc2UgYSA8ZmlsZW5hbWU+d2luZS5zdXA8L2ZpbGVuYW1lPiBmaWxlIG9mOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgoqZGVmYXVsdCBob3N0PWN2cy53aW5laHEub3JnCipkZWZhdWx0IGJhc2U9L2N2cwoqZGVmYXVsdCBwcmVmaXg9L2N2cy93aW5lCipkZWZhdWx0IHJlbGVhc2U9d2luZQoqZGVmYXVsdCBkZWxldGUgCgojIElmIHlvdXIgbmV0d29yayBsaW5rIGlzIGEgVDEgb3IgZmFzdGVyLCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuCiMqZGVmYXVsdCBjb21wcmVzcyAKCipkZWZhdWx0IHVzZS1yZWwtc3VmZml4IAp3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJJbnN0YWxsaW5nLUFuZC1Db25maWd1cmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkluc3RhbGxpbmcgYW5kIENvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb21waWxlLXRoZS1XaW5lLXNvdXJjZS1jb2RlIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb21waWxlIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBzb3VyY2UgY29kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTZWUgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUUiPmh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgcHJpbWFyaWx5IHVzZWQgV0lUSE9VVCBXaW5kb3dzLiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvdWxpbms+KSAKICAgICAgICAgIGNvbnRhaW5zIGEgY29uZmlnIGZpbGUgZXhhbXBsZS4gTW9yZSBleHBsaWNpdCBkaXJlY3Rpb25zIGNhbiBiZSAKICAgICAgICAgIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0aW5nIGJldHRlciBhbGwKICAgICAgICAgIHRoZSB0aW1lKSBvciB1c2UgYSBXaW45eCBpbnN0YWxsIChXaW45NSwgOTgsIDk4U0UsIE1FKS4gRE9OJ1QgCiAgICAgICAgICBjb25maWd1cmUgV2luZSB0byB1c2UgYW4gTlQtYmFzZWQgV2luZG93cyBpbnN0YWxsIChOVCwgV2luMkssIFdpblhQLCBXaW4ySzMpLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lJ3MgZmFrZSB3aW5kb3dzIGRyaXZlLgoJPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC1vbmUtd29ya3MtYmVzdCI+CiAgICAgICAgPHBhcmE+SWYgSSB1c2UgYSBXaW5kb3dzIGluc3RhbGwgd2l0aCBXaW5lLCB3aGljaCBvbmUgd29ya3MgYmVzdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiAwMi8yMDAyOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEknZCBzYXkgV2luOThTRSBpcyB0aGUgYmVzdCB2ZXJzaW9uIHRvIHVzZSB3aXRoIFdpbmUsIGFzIGl0J3MgZmFpcmx5CiAgICAgICAgICB3aWRlc3ByZWFkIGFtb25nc3QgZGV2ZWxvcGVycyBhbmQgcmVsYXRpdmVseSBvbGQuIFVzaW5nIFdpbjJLIGZpbGVzCiAgICAgICAgICBpcyA8ZW1waGFzaXM+ZGVmaW5pdGVseTwvZW1waGFzaXM+IHdvcnNlIHRoYW4gYSBwbGFpbiBuby13aW5kb3dzIAogICAgICAgICAgV2luZSBpbnN0YWxsLCBhbmQgV2luIE1FIGlzIHNhaWQgdG8gYmUgcHJvYmxlbWF0aWMsIHRvbyAoYXMgcHJvYmFibHkKICAgICAgICAgIG5vIGRldmVsb3BlciB1c2VzIGl0KS4gSW4gc2hvcnQ6IGFsbCBXaW45eCAmbHQ7PSBXOThTRSBhcmUgZ29vZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJbnN0YWxsaW5nLVZpc3VhbC1CYXNpYy1hcHBzLXdvbnQtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEluc3RhbGxpbmcgYXBwbGljYXRpb25zIGdlbmVyYXRlZCBieSBWaXN1YWwgQmFzaWMgd29uJ3QgcnVuLiBXaGF0CiAgICAgICAgICBzaG91bGQgSSBkbz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWtlIHN1cmUgeW91IGhhdmUgYWxsIHRoZSBWQiBydW4gdGltZSBsaWJyYXJpZXMgaW5zdGFsbGVkLiBZb3UgY2FuCiAgICAgICAgICBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gdGhlIE1pY3Jvc29mdCB3ZWIgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLUktY2xpY2stb24tZXhlLWZpbGUtbm90aGluZy1oYXBwZW5zIj4KICAgICAgICA8cGFyYT5XaGVuIEkgY2xpY2sgb24gKi5leGUgZmlsZSBpbiBteSBmaWxlIE1hbmFnZXIsIG5vdGhpbmcgaGFwcGVucy48L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbm9ybWFsIFdpbmUgcmVsZWFzZXMgZG9uJ3QgaGF2ZSAuZXhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIFdpbmUgaW4gS0RFL0dub21lIHlldC4gWW91IGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBpbnN0ZWFkCiAgICAgICAgICAob2Z0ZW4gYW4gaWNvbiBzaG93aW5nIGEgImJsYWNrIHNjcmVlbiIpIGFuZCB0eXBlIHNvbWV0aGluZyBsaWtlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjZCAvbXkvd2luZG93cy9wcm9ncmFtL2RpcmVjdG9yeQp3aW5lIG15cHJvZ3JhbS5leGUKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE9yIGFsdGVybmF0aXZlbHkgeW91IGNvdWxkIGRvd25sb2FkIHRoZSBDb2RlV2VhdmVycyBXaW5lIHByZXZpZXcgCiAgICAgICAgICB3aGljaCBpbmNsdWRlcyAuZXhlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gZm9yIEtERS9Hbm9tZSBhbmQgYSBuaWNlCiAgICAgICAgICBzZXR1cCBwcm9ncmFtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImJhc2gtd2luZS1Db21tYW5kLW5vdC1mb3VuZC1XaGF0LWNhbi1JLWRvIj4KICAgICAgICA8cGFyYT5iYXNoIHNheXMgIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byBsb2dvdXQgYW5kIGxvZ2luIGFnYWluIGludG8gYmFzaC4gVGhhdCBtaWdodCBmaXggaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgaXQgZG9lc24ndCwgdGhlbiBtYWtlIHN1cmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluIHlvdXIgCiAgICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUnVuIGFzIHJvb3Q6CiAgICAgICAgPC9QYXJhPgogICAgICAgIDxzY3JlZW4+CmZpbmQgLyAtbmFtZSAid2luZSIgLXR5cGUgZiAtcGVybSArMTExCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB0byBmaW5kIHRoZSBwYXRoIHdoZXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbi4gVGhlbiBjaGVjayB3aGV0aGVyCiAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+IGluY2x1ZGVzIGl0OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgplY2hvICRQQVRIIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgbm90LCBhZGQgdGhhdCBlLmcuIHRvIDxmaWxlbmFtZT4vZXRjL3Byb2ZpbGU8L2ZpbGVuYW1lPiBieSBkb2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IFBBVEg9JFBBVEg6L3BhdGgvdG8vd2luZS9iaW5hcnkgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IHNob3VsZCBoZWxwLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgICBJZiB5b3UgdXNlZCBhIHBhY2thZ2UgbWFuYWdlciAoPGNvbW1hbmQ+cnBtPC9jb21tYW5kPiBvciAKICAgICAgICAgICA8Y29tbWFuZD5hcHQ8L2NvbW1hbmQ+KSAtIFZlcmlmeSB5b3VyIHBhY2thZ2VzLiBUaGUgcGFja2FnZSAKICAgICAgICAgICA8ZmlsZW5hbWU+d2luZXNldHVwdGsucnBtPC9maWxlbmFtZT4gaXMgb25seSBhIGZyb250LWVuZCBmb3IgCiAgICAgICAgICAgbWFraW5nIGEgbWVhbmluZ2Z1bCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3JwbXNlZWsuY29tL3JwbS1wbC93aW5lLmh0bWw/aGw9Y29tJmFtcDtjeD0wOjoiPgogICAgICAgICAgIGh0dHA6Ly9ycG1zZWVrLmNvbS88L3VsaW5rPiBvciB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZG93bmxvYWQiPgogICAgICAgICAgIERvd25sb2FkPC91bGluaz4gc2VjdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1yZW1vdmUtV2luZS1mcm9tLW15LUNvbXB1dGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSByZW1vdmUgV2luZSBmcm9tIG15IENvbXB1dGVyPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGRlcGVuZHMgb24gaG93IHlvdSBpbnN0YWxsZWQuIElmIHlvdSB1c2VkIGFuIFJQTSwgdGhlIHJpZ2h0IGNvbW1hbmQgaXMgdGhpczoKICAgICAgICAgPGNvbW1hbmQ+cnBtIC1lIHdpbmUgKGFzIHJvb3QpPC9jb21tYW5kPgogICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICBJZiB5b3UgaW5zdGFsbGVkIGZyb20gc291cmNlICh0aGUgLnRhci5neiBmaWxlKSwgdGhlIHJpZ2h0CiAgICAgICAgIHdheSB0byBkbyBpdCBpcyB0byBjaGFuZ2UgdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlICh0aGUgZGlyZWN0b3J5IHdpdGggdGhlIGNvbmZpZ3VyZSBzY3JpcHQsCiAgICAgICAgIHJlYWRtZSBldGMpIHRoZW4gcnVuIGFzIHJvb3Q6CiAgICAgICAgIDxjb21tYW5kPm1ha2UgdW5pbnN0YWxsPC9jb21tYW5kPgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IkFib3V0LXJ1bm5pbmctV2luZSI+CiAgICAgIDx0aXRsZT5BYm91dCBydW5uaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1ydW4tYW4tTVMtV2luZG93cy1wcm9ncmFtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBydW4gYW4gTVMgV2luZG93cyBwcm9ncmFtIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hlbiBpbnZva2luZyBXaW5lLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBlbnRpcmUgcGF0aCB0byB0aGUKICAgICAgICAgIGV4ZWN1dGFibGUsIG9yIGJ5IGZpbGUgbmFtZSBvbmx5LiBGb3IgZXhhbXBsZSB0byBydW4gV2luZG93cycKICAgICAgICAgIHNvbGl0YWlyZSwgdHlwZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIHNvbDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyB0aGUgc2VhcmNoIHBhdGggdG8gbG9jYXRlIHRoZSBmaWxlKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBjOlxcd2luZG93c1xcc29sLmV4ZTwvY29tbWFuZD4gCiAgICAgICAgICAgKHVzaW5nIGEgRE9TIGZpbGUgbmFtZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgL3Vzci93aW5kb3dzL3NvbC5leGU8L2NvbW1hbmQ+CiAgICAgICAgICAgKHVzaW5nIGEgVU5JWCBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lICJjOlx3aW5kb3dzXHNvbC5leGUiPC9jb21tYW5kPgogICAgICAgICAgICAodXNpbmcgcXVvdGVkIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpbGwgYWxzbyBiZSBhZGRlZCB0byB0aGUgcGF0aCB3aGVuIGEgZnVsbCBuYW1lCiAgICAgICAgICBpcyBzdXBwbGllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaW5lLWNhbm5vdC1maW5kLU1TLVdpbmRvd3Mtb24tbXktZHJpdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCBXaW5lLCBidXQgV2luZSBjYW5ub3QgZmluZCBNUyAKICAgICAgICAgIFdpbmRvd3Mgb24gbXkgZHJpdmUuIFdoZXJlIGRpZCBJIGdvIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbW91bnRlZAogICAgICAgICAgaXQsIGVpdGhlciBieSBwdXR0aW5nIHRoZSBlbnRyeSBpbnRvIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4sCiAgICAgICAgICBvciBieSBtYW51YWxseSBtb3VudGluZyBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSZW1lbWJlciB0b28gdGhhdCB1bmxlc3MgeW91ciB2ZXJzaW9uIG9mIFVOSVggY2FuIHNlZSB0aHJvdWdoIGl0LCBvcgogICAgICAgICAgeW91IGFyZSBydW5uaW5nIGEgdXRpbGl0eSB0aGF0IGNhbiBzZWUgdGhyb3VnaCBpdCwgeW91ciBET1MKICAgICAgICAgIHBhcnRpdGlvbiBtdXN0IG5vdCBiZSBsb2NhdGVkIG9uIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvcgogICAgICAgICAgU3RhY2tlcmVkIHBhcnRpdGlvbiwgYXMgbmVpdGhlciBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIG9yIFdpbmUgY2FuCiAgICAgICAgICBuYXRpdmVseSAnc2VlJyBmaWxlcyBsb2NhdGVkIGluIHRoZXNlIGNvbXByZXNzZWQgRE9TIHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ2hlY2sgeW91ciBwYXRoIHN0YXRlbWVudHMgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiAKICAgICAgICAgIGZpbGUuIE5vIGNhcGl0YWwgbGV0dGVycyBtYXkgYmUgdXNlZCBpbiBwYXRocywgYXMgdGhleSBhcmUgCiAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iUGFydHMtb2YtbXktYXBwLWRvLW5vdC13b3JrLVdoYXQtaXMtd3JvbmciPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB3YXMgYWJsZSB0byBnZXQgdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zIHRvIHJ1biwgYnV0IHBhcnRzIG9mCiAgICAgICAgICB0aGVtIGRvIG5vdCB3b3JrLiBXaGF0IGlzIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGNvbXBsZXRlIGF0IHRoaXMgdGltZSwgc28gc29tZSBvZiBlYWNoIHByb2dyYW1zJyAKICAgICAgICAgIGZlYXR1cmVzIG1heSBub3Qgd29yay4gVGhleSB3aWxsIGluIHRpbWUgYXMgbW9yZSBvZiB0aGUgTVMgCiAgICAgICAgICBXaW5kb3dzIEFQSSBjYWxscyBhcmUgaW5jbHVkZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJNZW51cy1kby1ub3Qtd29yay1ob3ctY2FuLUktZXhpdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgcnVuIHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcywgYnV0IHNpbmNlIHRoZSBwcm9ncmFtIG1lbnVzCiAgICAgICAgICBkbyBub3Qgd29yaywgaG93IGNhbiBJIGV4aXQgdGhlc2UgcHJvZ3JhbXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgS2lsbCB0aGUgeHRlcm0gc2hlbGwgd2luZG93IHRoYXQgeW91IGNhbGxlZCB1cCB0byBydW4geW91ciBNUyAKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbSwgYW5kIHRoZSBYIHdpbmRvdyB0aGF0IGFwcGVhcmVkIHdpdGggdGhlIHByb2dyYW0gCiAgICAgICAgICB3aWxsIGJlIGtpbGxlZCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+Cgk8cXVlc3Rpb24gaWQ9Ik15LWFwcC1kb2VzbnQtd29yay13aGF0LWNhbi1pLWRvIj4KCSAgPHBhcmE+CgkgICAgTXkgcHJvZ3JhbSBkb2Vzbid0IHdvcmssIHdoYXQgY2FuIEkgZG8/CgkgIDwvcGFyYT4KCTwvcXVlc3Rpb24+Cgk8YW5zd2VyPgoJICA8cGFyYT4KCSAgICBJZiB5b3UgYXJlIGEgcHJvZ3JhbW1lciBhbmQga25vdyBDLCB0aGVuIHN0YXJ0IGRlYnVnZ2luZwoJICAgIFdpbmUgYW5kIGhlbHAgdXMgbWFrZSBpdCBiZXR0ZXIhIElmIHlvdSBjYW4ndCwgdGhlbiB5b3Ugd2lsbAoJICAgIGhhdmUgdG8gZWl0aGVyIGNvbnZpbmNlIGEgV2luZSBkZXZlbG9wZXIgdG8gdHJ5IGFuZCBtYWtlIHlvdXIKCSAgICBwcm9ncmFtIHdvcmsgKHRoZXJlIG11c3QgYmUgYSBkb3dubG9hZGFibGUgdmVyc2lvbiBvciBkZW1vIGZvcgoJICAgIHRoYXQpLCBvciBoaXJlIHNvbWVib2R5IHRvIGRvIGl0IGZvciB5b3UuIElmIHRoaXMgYXBwbGljYXRpb24KCSAgICBpcyBhbiBpbnRlcm5hbCBjb3Jwb3JhdGUgYXBwbGljYXRpb24sIHlvdSBtYXkgYmUgYWJsZSB0byBoaXJlIGEKCSAgICBXaW5lIGRldmVsb3BlciB0byBkbyBjb25zdWx0aW5nIHdvcmsgZm9yIHlvdSBvbiB0aGUgbWF0dGVyLgoJICA8L3BhcmE+CgkgIDxwYXJhPgoJICAgIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQgdGhlIGFwcCB3b3JraW5nIGJ5CgkgICAgdGFraW5nIG5hdGl2ZSBETExzIGZyb20gYSBNaWNyb3NvZnQgV2luZG93cyBpbnN0YWxsLCBhbmQgdXNpbmcKCSAgICB0aGVtIChzZXQgdGhlIGRsbHMgdG8gbmF0aXZlIGluIHRoZSBjb25maWcgZmlsZSkuIE5vdCBhbGwgRExMcwoJICAgIGNhbiBiZSByZXBsYWNlZCB0aGF0IHdheSAtIGluIHBhcnRpY3VsYXIgRGlyZWN0WCBjYW5ub3QgYmUsIG5vcgoJICAgIGNhbiBzb21lIGNvcmUgc3lzdGVtIERMTHMgbGlrZSB1c2VyLCBudGRsbCwga2VybmVsMzIgZXRjCgkgIDwvcGFyYT4KCTwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS13aXRoLW90aGVyLUxpbnV4LURpc3Ryb3MiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHdpdGggU1VTRSwgUGVhbnV0IG9yIG90aGVyIExpbnV4IERpc3RybydzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gdXNlIFdpbmUgb24gYW55IHN1ZmZpY2llbnRseSByZWNlbnQgTGludXggaW5zdGFsbGF0aW9uLiBUaGUKICAgICAgICAgIGFtb3VudCBvZiB3b3JrIGdldHRpbmcgV2luZSB1cCBhbmQgcnVubmluZyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlcmUKICAgICAgICAgIGFyZSBwcm9wZXIgcGFja2FnZXMgYXZhaWxhYmxlIG9yIGEgc291cmNlIGNvbXBpbGUgaGFzIHRvIGJlIGRvbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1XaW5lLXdvcmstd2l0aC1BTUQtUHJvY2Vzc29ycyI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIHdvcmsgd2l0aCBBTUQgUHJvY2Vzc29ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGl0IGRvZXMuIFdpbmUgc2hvdWxkIHdvcmsgb24gYW55IHByb2Nlc3NvciBjb21wYXRpYmxlIHdpdGgKICAgICAgICAgIHRoZSBQZW50aXVtIG9yIGdyZWF0ZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWxhdW5jaC1Vbml4LWFwcC1mcm9tLVdpbmRvd3MtYXBwIj4KICAgICAgICA8cGFyYT4gQ2FuIEkgbGF1bmNoIGEgVW5peCBwcm9ncmFtIGZyb20gYSBXaW5kb3dzIHByb2dyYW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZSwgV2luZSBzdXBwb3J0cyB0aGF0LiBKdXN0IGVudGVyIHRoZSB1bml4IHByb2dyYW0gbmFtZSB3aGVyZXZlcgogICAgICAgICAgYSBwcm9ncmFtIGhhcyBzb21ldGhpbmcgdGhhdCBpdCdzIHN1cHBvc2VkIHRvIGV4ZWN1dGUsIGFuZCBpdAogICAgICAgICAgc2hvdWxkIGp1c3Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkVycm9yLXdpdGgtaW5zdGFsbHNoaWVsZC02Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgZ2V0IDxxdW90ZT5FcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKTwvcXVvdGU+CiAgICAgICAgICB3aGVuIHJ1bm5pbmcgYW4gSW5zdGFsbFNoaWVsZCA2IGluc3RhbGxlci4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZ2V0IHRoZSBlcnJvciAiRXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCkiIGF0IGFueQogICAgICAgICAgcG9pbnQsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGVyZSBhcmUgbGVmdG92ZXIgcHJvY2Vzc2VzIGZyb20gYQogICAgICAgICAgcHJldmlvdXMgdHJ5LiBZb3UgY2FuIHZlcmlmeSB0aGlzIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPnBzIGF1Z3h3IHwgZ3JlcCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgY29tbWFuZCBzaG93cyBvbGQgY29waWVzIG9mIHdpbmUgcnVubmluZyB5b3VyIHNldHVwLAogICAgICAgICAgeW91IG5lZWQgdG8ga2lsbCB0aGVtIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGUgc2V0dXAgcHJvZ3JhbS4KICAgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdGhlciBXaW5lIHByb2dyYW1zIHJ1bm5pbmcsIHlvdSBjYW4ga2lsbCB0aGVtCiAgICAgICAgICBhbGwgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48cHJvbXB0PiQgPC8+PGNvbW1hbmQ+a2lsbGFsbCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSdyZSBhbHNvIHJ1bm5pbmcgV2luZSBwcm9ncmFtcyB5b3UgY2FyZSBhYm91dCwgeW91J2xsCiAgICAgICAgICBoYXZlIHRvIGtpbGwgb2ZmIHRoZSBvbGQgU2V0dXAgaW5zdGFuY2VzIG9uZSBieSBvbmUgdXNpbmcKICAgICAgICAgIGtpbGwgYW5kIHRoZSBpbmRpdmlkdWFsIFBJRHMgKG9yIHBlcmhhcHMgV2luZSdzIHNwaWZmeSBUYXNrIE1hbmFnZXIsCiAgICAgICAgICB3aGljaCBkb2Vzbid0IGV4aXN0IHlldCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHNob3VsZCByZXBlYXQgdGhlIDxjb21tYW5kPnBzPC9jb21tYW5kPiB0byBtYWtlIHN1cmUgdGhlIG9sZCAKICAgICAgICAgIFdpbmUgcHJvY2Vzc2VzIGFyZSBnb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogICAgIAogICAgPHFhbmRhZGl2IGlkPSJHZXR0aW5nLWhlbHAiPgogICAgICA8dGl0bGU+R2V0dGluZyBoZWxwPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYW55LWRvY3VtZW50YXRpb24tZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGFueSBkb2N1bWVudGF0aW9uIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2RvY3VtZW50YXRpb24iPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZG9jdW1lbnRhdGlvbi48L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktaGF2ZS13cml0dGVuLXNvbWUtZG9jdW1lbnRlbnRhdGlvbiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGNvdWxkbid0IGZpbmQgdGhlIGFuc3dlciB0byBteSBxdWVzdGlvbiBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgYnV0CiAgICAgICAgICBJJ3ZlIHdyaXR0ZW4gYSBkb2N1bWVudCBleHBsYWluaW5nIGhvdyB0byBzb2x2ZSBpdC4gV2hhdCBzaG91bGQgSSBkbz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGRhdGVzIGFuZCBhZGRpdGlvbnMgdG8gdGhlIFdpbmUgZG9jdW1lbnRhdGlvbiBkaXJlY3Rvcnkgc2hvdWxkIGJlCiAgICAgICAgICBzZW50IHRvIHRoZSB3aW5lLXBhdGNoZXMgbWFpbGluZyBsaXN0IGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtczwvdWxpbms+LiBXZWJzaXRlIGFuZCBGQVEgCiAgICAgICAgICBhZGRpdGlvbnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBXaW5lIEtub3dsZWRnZSBiYXNlIGRpcmVjdG9yeS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVVzZW5ldC1uZXdzZ3JvdXAtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgVXNlbmV0IG5ld3Nncm91cCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGFuZCBpdCdzIGNhbGxlZCAKICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj4KICAgICAgICAgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvdWxpbms+LiBUaGUgbmV3c2dyb3VwIHNlcnZlcyBhcyBhCiAgICAgICAgICBwbGFjZSBmb3IgdXNlcnMgYW5kIGRldmVsb3BlcnMgdG8gZGlzY3VzcyBXaW5lLCBhbmQgZm9yIG1pbm9yIAogICAgICAgICAgYW5ub3VuY2VtZW50cyBmb3IgdGhlIGdlbmVyYWwgcHVibGljLiBNYWpvciBhbm5vdW5jZW1lbnRzIHdpbGwgYmUKICAgICAgICAgIGNyb3NzIHBvc3RlZCB0byBvdGhlciBhcHByb3ByaWF0ZSBuZXdzZ3JvdXBzLCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLm9zLmxpbnV4LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5vcy5saW51eC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAud2luZG93cy54LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC53aW5kb3dzLnguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLmVtdWxhdG9ycy5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAuZW11bGF0b3JzLmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3VyIFVzZW5ldCBzaXRlIGRvZXMgbm90IGNhcnJ5IHRoZXNlIG5ld3Nncm91cHMsIHBsZWFzZSB1cmdlIAogICAgICAgICAgeW91ciBJU1AncyBzeXNhZG1pbiB0byBhZGQgYW5kL29yIHVwbGluayB0aGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtV29ybGQtV2lkZS1XZWItc2l0ZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBXb3JsZCBXaWRlIFdlYiBzaXRlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgSFEgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZyI+aHR0cDovL3d3dy53aW5laHEub3JnPC91bGluaz4pIGlzIHRoZSBvZmZpY2lhbCBzaXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFuLUlSQy1jaGFubmVsLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbiBJUkMgY2hhbm5lbCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdXJlLiBJdCdzIGNoYW5uZWwgPGZpbGVuYW1lPiNXaW5lSFE8L2ZpbGVuYW1lPiBvbiAKICAgICAgICAgIDxmaWxlbmFtZT5pcmMuZnJlZW5vZGUubmV0PC9maWxlbmFtZT4gc2VlIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9mcmVlbm9kZS5uZXQiPmh0dHA6Ly9mcmVlbm9kZS5uZXQ8L3VsaW5rPikuCiAgICAgICAgICBVc3VhbGx5IHNldmVyYWwgV2luZSBkZXZlbG9wZXJzIGhhbmcgb3V0IHRoZXJlIGp1c3QgdG8gaGVscCBZT1UgOy0pCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS10aGluay1JLWZvdW5kLWEtYnVnLUhvdy1kby1JLXJlcG9ydC1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIHRoaW5rIEkndmUgZm91bmQgYSBidWcuIEhvdyBkbyBJIHJlcG9ydCB0aGlzIGJ1ZyB0byB0aGUgV2luZQogICAgICAgICAgcHJvZ3JhbW1pbmcgdGVhbT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCdWcgcmVwb3J0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIG91ciBvbmxpbmUgQnVnemlsbGEgc3lzdGVtIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9idWdzLndpbmVocS5vcmcvIj5odHRwOi8vYnVncy53aW5laHEub3JnLzwvdWxpbms+KS4KICAgICAgICAgIFlvdSBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBXaW5lIHZlcnNpb24gdGVzdGVkCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBXaW5kb3dzIGFwcGxpY2F0aW9uIG5hbWUsIGluY2x1ZGluZyB0aGUgdmVyc2lvbiwgYW5kLCBpZgogICAgICAgICAgICBhcHBsaWNhYmxlLCBhIFVSTCB0aGUgYXBwbGljYXRpb24gY2FuIGJlIGRvd25sb2FkZWQgZnJvbQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIHJlbGV2YW50IHBhcnQocykgb2YgdGhlIG91dHB1dCBvZiB0aGUgV2luZSBkZWJ1Z2dlcgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIHNjcmVlbnNob3Qgb2YgdGhlIHZpc3VhbCBwcm9ibGVtLCBpZiBhcHBsaWNhYmxlCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXBvcnRpbmcgYnVncyBwbGVhc2Ugc2VlIHRoZSAKICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZS11c2VyL2J1Zy1yZXBvcnRpbmcuc2h0bWwiPgogICAgICAgICBIb3cgdG8gcmVwb3J0IGEgYnVnPC91bGluaz4gc2VjdGlvbiBvZiB0aGUgV2luZSBVc2VycyBHdWlkZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkhlbHBpbmctV2luZS1vci1iZWNvbWluZy1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgPHRpdGxlPkhlbHBpbmcgV2luZSBvciBiZWNvbWluZyBhIFdpbmUgZGV2ZWxvcGVyPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktYmVjb21lLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGJlY29tZSBhIFdpbmUgZGV2ZWxvcGVyPyBXaGF0IGRvIEkgbmVlZCB0byBrbm93PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcHJvZ3JhbSBDLCB0aGF0J3MgYSBnb29kIHN0YXJ0LiBEb3dubG9hZCB0aGUgc291cmNlcyB2aWEKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9jdnMiPkNWUyw8L3VsaW5rPikKICAgICAgICAgIHN1YnNjcmliZSB0byB0aGUgbWFpbGluZyBsaXN0cywgbG9vayBhcm91bmQgdGhlIHNvdXJjZSwgYW5kCiAgICAgICAgICBwYXkgYXR0ZW50aW9uIHRvIHRoZSBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUgbmV3c2dyb3VwCiAgICAgICAgICBhbmQgdGhlIG1haWxpbmcgbGlzdHMgKDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXMiPmh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtczwvdWxpbms+KS4KICAgICAgICAgIFNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZml4IG9yIHdvcmsKICAgICAgICAgIG9uLiBZb3Ugd29uJ3QgaGF2ZSBtdWNoIHRyb3VibGUgZmluZGluZyBhcmVhcyB0aGF0IG5lZWQgd29yawogICAgICAgICAgaW4gV2luZSAoZ3JlcCBmb3IgRklYTUVzIGluIHRoZSBzb3VyY2UpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1jYW4tSS1jb250cmlidXRlLXRvLXRoZS1XaW5lLXByb2plY3QiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBoZWxwIGNvbnRyaWJ1dGUgdG8gdGhlIFdpbmUgcHJvamVjdCwgYW5kIGluIHdoYXQgd2F5KHMpPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gY29udHJpYnV0ZSBwcm9ncmFtbWluZyBvciBkb2N1bWVudGF0aW9uIHNraWxscywgb3IgbW9uZXRhcnkKICAgICAgICAgIG9yIGVxdWlwbWVudCBkb25hdGlvbnMsIHRvIGFpZCB0aGUgV2luZSBkZXZlbG9wZXJzIGluIHJlYWNoaW5nIHRoZWlyIAogICAgICAgICAgZ29hbHMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIGEgbGlzdCBvZiBpZGVhcyBvZiBob3cgeW91IGNhbiBoZWxwLCBwbGVhc2UgY29uc3VsdCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9jb250cmlidXRpbmciPgogICAgICAgICAgV2luZSBjb250cmliIHBhZ2U8L3VsaW5rPi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdhbnQtdG8taGVscC1iZXRhLXRlc3QtV2luZSI+CiAgICAgICAgPHBhcmE+SSB3YW50IHRvIGhlbHAgYmV0YSB0ZXN0IFdpbmUuIEhvdyBjYW4gSSBkbyB0aGlzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgc3RpbGwgY29uc2lzdHMgb2Ygc29tZSBBbHBoYSBjb2RlIGF0IHRoaXMgdGltZS4gSG93ZXZlciwgYW55b25lCiAgICAgICAgICBpcyB3ZWxjb21lIHRvIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiwgYW5kIHRyeSBpdCBvdXQgYXQgYW55CiAgICAgICAgICB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd3JvdGUtc29tZS1jb2RlLUktd291bGQtbGlrZS10by1zdWJtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHdyaXR0ZW4gc29tZSBjb2RlIHRoYXQgSSB3b3VsZCBsaWtlIHRvIHN1Ym1pdCB0byB0aGUgV2luZQogICAgICAgICAgcHJvamVjdC4gSG93IGRvIEkgZ28gYWJvdXQgZG9pbmcgdGhpcz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdWJtaXR0aW5nIGEgcGF0Y2ggZm9yIGluY2x1c2lvbiBpbiBXaW5lIGlzIHByZXR0eSBzaW1wbGUuCiAgICAgICAgICBCYXNpY2FsbHkgYWxsIHlvdSBoYXZlIHRvIGRvIGlzIHNlbmQgdGhlIHBhdGNoIHRvIHRoZQogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvbWFpbG1hbi9saXN0aW5mby93aW5lLXBhdGNoZXMiPmh0dHA6Ly93d3cud2luZWhxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbmUtcGF0Y2hlczwvPikuCiAgICAgICAgICBTdGlsbCB0aGVyZSBhcmUgYSBjb3VwbGUgb2YgcmVjb21tZW5kYXRpb25zIGFib3V0IHRoZSBwYXRjaCBmb3JtYXQKICAgICAgICAgIGFuZCBhbGwgc28gaXQncyBiZXN0IHRvIHJlYWQgb3VyIHBhZ2UgZGVzY3JpYmluZyA8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvc2VuZGluZ19wYXRjaGVzIj5ob3cgdG8gc3VibWl0CiAgICAgICAgICBwYXRjaGVzPC8+LiBUaGlzIHdpbGwgYWxzbyBnaXZlIHlvdSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHdob2xlCiAgICAgICAgICBwcm9jZXNzIGFuZCBpbiBwYXJ0aWN1bGFyIHRvIHdoYXQgd2lsbCBoYXBwZW4gdG8geW91ciBwYXRjaCBvbmNlCiAgICAgICAgICBzdWJtaXR0ZWQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KIAogICAgPHFhbmRhZGl2IGlkPSJEZXZlbG9waW5nLXByb2dyYW1zLXVzaW5nLVdpbmUtV2luZUxpYiI+CiAgICAgIDx0aXRsZT5EZXZlbG9waW5nIHByb2dyYW1zIHVzaW5nIFdpbmUvV2luZUxpYjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLXVzZS1XaW5lLXRvLXBvcnQtV2luMzItc291cmNlcy10by1Vbml4Ij4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB0byBwb3J0IG15IFdpbjMyIHNvdXJjZXMgdG8gVW5peD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IGlzIHRoZSBpZGVhIG9mIFdpbmVsaWIuIFJpZ2h0IG5vdyB5b3UgbWF5IHN0aWxsIGhhdmUgc29tZSAKICAgICAgICAgIGRpZmZpY3VsdGllcywgYnV0IHRoaXMgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLiBSZWFkIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGluZm8uCgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1NRkMtd29yay13aXRoLVdpbmUtV2hhdC1kby1JLW5lZWQtdG8tZG8iPgogICAgICAgIDxwYXJhPldpbGwgTUZDIHdvcmsgd2l0aCBXaW5lPyBXaGF0IGRvIEkgbmVlZCB0byBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBpbXBsZW1lbnRpbmcgYW4gTUZDIHJlcGxhY2VtZW50IG5vciBkb2VzIGl0IGludGVuZCB0by4KICAgICAgICAgIEhvd2V2ZXIgaXQgaXMgcG9zc2libGUgKHdpdGggYSBsb3Qgb2Ygd29yaykgdG8gY29tcGlsZSB0aGUgTUZDIGZyb20KICAgICAgICAgIHNvdXJjZSBhbmQgdGh1cyBwcm9kdWNlIGFuIDxmaWxlbmFtZT5tZmM0Mi5kbGwuc288L2ZpbGVuYW1lPiBsaWJyYXJ5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZWFzZSByZWZlciB0byB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBob3cgdG8gZG8gdGhpcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJBcmUtdGhlcmUtY29tbWVyY2lhbC1hcHBzLXBvcnRlZC11c2luZy1XaW5lIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFyZSB0aGVyZSBhbnkgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMgd2hpY2ggaGF2ZSBiZWVuIHBvcnRlZAogICAgICAgICAgdXNpbmcgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlIGFyZSBmZXcgZXhhbXBsZXMgb2YgYXBwbGljYXRpb25zIHBvcnRlZCB1c2luZyBXaW5lIG9yIFdpbmVsaWI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQ29yZWwncyBXb3JkUGVyZmVjdCBPZmZpY2UgU3VpdGUgMjAwMCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEt5bGl4LCB0aGUgTGludXggdmVyc2lvbiBvZiBEZWxwaGksIHdhcyBwb3J0ZWQgdG8gTGludXggdXNpbmcKICAgICAgICAgICAgV2luZWxpYi4gVGhlIElERSBhY3R1YWxseSB1c2VzIGEgY29tYmluYXRpb24gb2YgUVQgYW5kIFdpbmVsaWIKICAgICAgICAgICAgd2hpY2ggd291bGQgbm90IGhhdmUgYmVlbiBwb3NzaWJsZSB0byBhY2hpZXZlIHVzaW5nIG9ubHkgV2luZS4KICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBhcHBsaWNhdGlvbnMgaG93ZXZlciBkbyBub3QgZGVwZW5kIG9uIFdpbmUgaW4KICAgICAgICAgICAgYW55IHdheS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgTXVzaWNNYXRjaCBKdWtlYm94IDUgaGFzIGFsc28gYmVlbgogICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lml0d29ybGQuY29tL25sL2xueF9kZXNrdG9wLzAxMDQyMDAxLyI+cG9ydGVkPC8+CiAgICAgICAgICAgIHRvIExpbnV4IHVzaW5nIFdpbmVsaWIuIEhvd2V2ZXIgbW9yZSByZWNlbnQgdmVyc2lvbnMgaGF2ZSBub3QsIGFuZAogICAgICAgICAgICB2ZXJzaW9uIDUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQWJpbGl0eSBPZmZpY2UKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocCI+aHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwPC91bGluaz4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIElCTSdzIFdlYnNwaGVyZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXAiPmh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wPC91bGluaz4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBvdGhlciBpbXBvcnRhbnQgYXBwbGljYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIHBvcnRlZC4gKHdlIGFyZQogICAgICAgICAgc3BlYWtpbmcgb2Ygc2V2ZXJhbCB0b3AgNTAwIGFwcGxpY2F0aW9ucyBoZXJlKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1jYW4tSS1kZXRlY3QtV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGRldGVjdCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSByZWFsbHkgc2hvdWxkbid0IHdhbnQgdG8gZG8gdGhpcy4gSWYgdGhlcmUncyBhIHF1aXJrIGluIFdpbmUgCiAgICAgICAgICB5b3UgbmVlZCB0byB3b3JrIGFyb3VuZCwgaXQncyBtdWNoIGJldHRlciB0byBmaXggaXQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogIAogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IldpbmUtSFEtaXNzdWVzIj4KICAgICAgPHRpdGxlPldpbmUgSFEgaXNzdWVzPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LWFyZS10aGUtbWFpbGxpc3RzLXNldC10by1yZXBseS10by1hdXRob3IiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2h5IGFyZSB0aGUgbWFpbGluZyBsaXN0cyBzZXQgdG8gcmVwbHkgdG8gYXV0aG9yLCBub3QgdG8gbWFpbGluZyBsaXN0PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlIGFyZSB2ZXJ5IHZhbGlkIHJlYXNvbnMgZm9yIGRvaW5nIHNvLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy10by11bnN1YnNjcmliZS1mcm9tLXRoZS1tYWlsaW5nLWxpc3RzIj4KICAgICAgICA8cGFyYT5Ib3cgdG8gdW5zdWJzY3JpYmUgZnJvbSB0aGUgbWFpbGluZyBsaXN0cz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2Ugc2VlOiA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXMiPmh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtczwvdWxpbms+CiAgICAgICAgICBBbmQgc2VsZWN0IFsoVW4tKVN1YnNjcmliZV0KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgPC9xYW5kYWRpdj4KIAogIDwvcWFuZGFzZXQ+Cgo8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKTG9jYWwgdmFyaWFibGVzOgptb2RlOiBzZ21sCnNnbWwtcGFyZW50LWRvY3VtZW50Oigid2luZS1kZXZlbC5zZ21sIiAiYm9vayIgInBhcnQiICJjaGFwdGVyIiAiIikKRW5kOgotLT4K