PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5jb20pIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+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+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIHNvdXJjZSBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMgCiAgICAgICAgICAgICAgdGhlIExHUEwsIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc0dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zR2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tIj5Db2RlV2VhdmVycycgV2luZSBwcmV2aWV3PC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIFdpbmUgdHJlZQogICAgICAgICAgICAgIHdoaWNoIGhhcyBhIG5pY2Ugc2V0dXAgZm9yIGVhc3kgaW5zdGFsbGF0aW9uLiBMaWNlbnNlIExHUEwsIGZyZWUKICAgICAgICAgICAgICBkb3dubG9hZC4gSXQncyBwcmV0dHkgb2xkIG5vdywgYW5kIG5vdCByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jcm9zc292ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NPdmVyIFBsdWdpbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBTcGVjaWFsIFdpbmUgaW5zdGFsbGF0aW9uIHRvIGJlIHVzZWQgZm9yIHJ1bm5pbmcgV2luZG93cwogICAgICAgICAgICAgIE5ldHNjYXBlIGJyb3dzZXIgcGx1Z2lucyBzdWNoIGFzIGUuZy4gUXVpY2tUaW1lIGluIExpbnV4CiAgICAgICAgICAgICAgYnJvd3NlcnMuIENvc3RzICQzNC45NS4KICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIFdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL2N4b2ZmaWNlc2VydmVyLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb248L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBBbGxvd3MgeW91IHRvIHJ1biB5b3VyIGZhdm9yaXRlIFdpbmRvd3MgcHJvZHVjdGl2aXR5IGFwcGxpY2F0aW9ucyBpbiAKICAgICAgICAgICAgIGEgZGlzdHJpYnV0ZWQgdGhpbi1jbGllbnQgZW52aXJvbm1lbnQgdW5kZXIgTGludXguIFNlcnZlciBFZGl0aW9uIGlzIAogICAgICAgICAgICAgYWxzbyBhIGdyZWF0IGFkZGl0aW9uIHRvIFNvbGFyaXMgZW52aXJvbm1lbnRzLCBzaW5jZSB0aGVyZSBidWlsdC1pbiAKICAgICAgICAgICAgIHN1cHBvcnQgZm9yIFNvbGFyaXMgZGVza3RvcHMgbWFrZXMgcnVubmluZyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBhIAogICAgICAgICAgICAgcG9zc2liaWxpdHkgb24gU3VuIHdvcmtzdGF0aW9ucyBhcyB3ZWxsLiBGb3IgcHJpY2luZyBqdXN0IGZvbGxvdyB0aGlzIGxpbms6IAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvcHJpY2luZy5waHAiPkNyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb24gUHJpY2luZzwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2Rvd25sb2FkLyI+T3RoZXIgcGFja2FnZWQgdmVyc2lvbnMgb2YgV2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBWYXJpb3VzIFdpbmUgcGFja2FnZXMgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUgZnJvbQogICAgICAgICAgICAgIFdpbmUgSFEuIFRoZXkgYXJlIG5vdCBvZmZpY2lhbGx5IHBhY2thZ2VkIGJ5IFdpbmUgSFEsIGFuZCBhcwogICAgICAgICAgICAgIHN1Y2ggbWF5IGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGluY29uc2lzdGVuY2llcy4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9hYm91dCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9hYm91dDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC12ZXJzaW9uLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgbmV3IHZlcnNpb24gb2YgV2luZSBpcyBkaXN0cmlidXRlZCBhYm91dCBldmVyeSBtb250aC4gWW91IHdpbGwgYmUgCiAgICAgICAgICBhYmxlIHRvIGtlZXAgdXAgb24gYWxsIHRoZSBsYXRlc3QgcmVsZWFzZXMgYnkgcmVhZGluZyB0aGUgbmV3c2dyb3VwCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPiwgb3IgYnkgdmlzaXRpbmcgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20iPldpbmUgSFEgaG9tZXBhZ2U8L3VsaW5rPi4gV2hlbgogICAgICAgICAgZG93bmxvYWRpbmcgV2luZSBmcm9tIHlvdXIgRlRQIHNpdGUgb2YgY2hvaWNlIChzZWUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kb3dubG9hZC5zaHRtbCI+dGhlIERvd25sb2FkIHBhZ2U8L3VsaW5rPgogICAgICAgICAgZm9yIHNvbWUgb2YgdGhlc2UgY2hvaWNlcyksIHlvdSBjYW4gbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBnZXR0aW5nIAogICAgICAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uIGJ5IHdhdGNoaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gQXVndXN0IDEzLCAyMDAzCiAgICAgICAgICB3YXMgY2FsbGVkIFdpbmUtMjAwMzA4MTMudGFyLmd6LiBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUuIElmCiAgICAgICAgICB5b3UgYXJlIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24sIHlvdSBjYW4gZG93bmxvYWQgYW5kIGFwcGx5IAogICAgICAgICAganVzdCB0aGUgY3VycmVudCBwYXRjaCBmaWxlIHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgbmV3IGRpc3RyaWJ1dGlvbi4KICAgICAgICAgIFRoZSBwYXRjaCBmaWxlIG5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj4KICAgICAgICAgIFJlYWQtb25seSBDVlM8L3VsaW5rPiBhY2Nlc3MgaXMgYWxzbyBhdmFpbGFibGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC1TdGF0dXMtb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCBTdGF0dXMgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiBtaWQgMjAwMywgV2luZSBjb25zaXN0cyBvZiBhYm91dCAxLjQgbWlsbGlvbiBsaW5lcyBvZiBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gNTUwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvc3RhdHVzIj4KICAgICAgICAgIFN0YXR1cyBwYWdlPC91bGluaz4gZm9yIGEgZ2xvYmFsIHZpZXcgb24gV2luZSdzIGltcGxlbWVudGF0aW9uIHByb2dyZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4td2lsbC1XaW5lLWJlLWZpbmlzaGVkIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBiZSBmaW5pc2hlZD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMYXJnZSBzb2Z0d2FyZSBwcm9qZWN0cyBhcmUgbmV2ZXIgZmluaXNoZWQsIG9ubHkgcmVsZWFzZWQuIEluIGFueQogICAgICAgICAgY2FzZSBXaW5lIGlzIGNoYXNpbmcgYSBtb3ZpbmcgdGFyZ2V0IHNpbmNlIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIAogICAgICAgICAgV2luZG93cyBjb250YWlucyBuZXcgQVBJIGNhbGxzIG9yIHZhcmlhdGlvbnMgb24gdGhlIGV4aXN0aW5nIG9uZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBieSB2b2x1bnRlZXJzLCBpdCBpcyBkaWZmaWN1bHQgdG8KICAgICAgICAgIHByZWRpY3Qgd2hlbiBpdCB3aWxsIGJlIHJlYWR5IGZvciBnZW5lcmFsIHJlbGVhc2UuIEJ1dCBkdWUgdG8gdGhlCiAgICAgICAgICBtdWNoIGluY3JlYXNlZCBpbnRlcmVzdCBieSBjb21wYW5pZXMgaW4gcG9ydGluZyBhcHBzIHZpYSBXaW5lLCBXaW5lCiAgICAgICAgICBkZXZlbG9wbWVudCBpcyBjb25zdGFudGx5IGdldHRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUuIFJpZ2h0IG5vdwogICAgICAgICAgd2UgYXJlIHdvcmtpbmcgb24gcmVsZWFzaW5nIFdpbmUgMC45IGluIDIwMDMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hvLWlzLXJlc3BvbnNpYmxlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5XaG8gaXMgcmVzcG9uc2libGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBhdmFpbGFibGUgdGhhbmtzIHRvIHRoZSB3b3JrIG9mIG1hbnkgcGVvcGxlLiBQbGVhc2Ugc2VlIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9BVVRIT1JTIj5BVVRIT1JTPC91bGluaz4KICAgICAgICAgIGZpbGUgaW4gdGhlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGNvbXBsZXRlIGxpc3QuIFNvbWUgY29tcGFuaWVzIHRoYXQKICAgICAgICAgIGFyZSBvciBoYXZlIGJlZW4gaW52b2x2ZWQgd2l0aCBXaW5lIGRldmVsb3BtZW50IGFyZSBDb2RlV2VhdmVycywKICAgICAgICAgIFRyYW5zR2FtaW5nLCBDb3JlbCwgYW5kIE1hY2FkYW1pYW4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iZm9sa3Mtd2hvLWNvbnRyaWJ1dGVkLW1vbmV5LW9yLWVxdWlwbWVudCI+CiAgICAgICAgPHBhcmE+V2hvIGFyZSB0aGUgZm9sa3MgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgY29udHJpYnV0ZWQgbW9uZXkgb3IgZXF1aXBtZW50IHRvIHRoZSBXaW5lIHByb2plY3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGVvcGxlIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGdpdmVuIGdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgb2YKICAgICAgICAgIG1vbmV5LCBlcXVpcG1lbnQsIG9yIGxpY2Vuc2VzLCBpbmNsdWRlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5EYXZpZCBMLiBIYXJwZXI8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Cb2IgSGVwcGxlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+TWFyayBBLiBIb3J0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5LZXZpbiBQLiBMYXd0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5UaGUgU3ludHJvcHkgSW5zdGl0dXRlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+SmFtZXMgV291bGZlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBWTVdhcmUgSW5jLiAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cudm13YXJlLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvcmVsICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvcmVsLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LmNvcmVsLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvZGVXZWF2ZXJzCiAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vIj5odHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC11bmRvY3VtZW50ZWQtQVBJcy1hcmUtbm90LXVuZGVyc3Rvb2QiPgogICAgICAgIDxwYXJhPldoYXQgdW5kb2N1bWVudGVkIEFQSXMgLyBpbnRlcmZhY2VzIGFyZSBub3QgdW5kZXJzdG9vZD8gV291bGQKICAgICAgICAgICAgICBzZWVpbmcgTWljcm9zb2Z0IHNvdXJjZSBoZWxwPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBiZXN0IHdvdWxkIGJlIGlmIHRoZSBXaW5kb3dzIEFQSSB3YXMgZnVsbHkgZG9jdW1lbnRlZCwgc28gV2luZQogICAgICAgICAgY291bGQgYmUgYSBwZXJmZWN0ICJjbGVhbi1yb29tIiBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBzb3VyY2UKICAgICAgICAgIGNvZGUgbWlnaHQgbWFrZSBpdCBoYXJkZXIgdG8gcHJvdmUgdGhhdCBubyBjb3B5cmlnaHQgdmlvbGF0aW9ucyBoYXZlCiAgICAgICAgICB0YWtlbiBwbGFjZS4gVGhhdCBzYWlkLCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBvZnRlbiBiYWQsIG5vbmV4aXN0ZW50LAogICAgICAgICAgYW5kIGV2ZW4gbWlzbGVhZGluZyB3aGVyZSBpdCBleGlzdHMsIHNvIGEgZmFpciBhbW91bnQgb2YgcmV2ZXJzZQogICAgICAgICAgZW5naW5lZXJpbmcgaGFzIGJlZW4gbmVjZXNzYXJ5LCBwYXJ0aWN1bGFybHkgaW4gdGhlIHNoZWxsIChFeHBsb3JlcikKICAgICAgICAgIGludGVyZmFjZS4gVGhlIGJpZ2dlc3QgcHJvYmxlbSBmYWNpbmcgV2luZSB0aG91Z2ggaXMgc2ltcGx5IGxhY2sgb2YKCSAgbWFucG93ZXIuIEF0IG9uZSBwb2ludCwgb3ZlciA1MDAwIHBlb3BsZSB3ZXJlIHdvcmtpbmcgb24gV2luZG93cyAyMDAwLgoJICBXaGlsZSBXaW5lIGRvZXNuJ3QgbmVlZCB0byByZXBsaWNhdGUgYWxsIG9mIFdpbmRvd3MgKHdlIG9ubHkgY292ZXIgdGhlCgkgIHBhcnRzIG5lZWRlZCB0byBtYWtlIFdpbmRvd3MgcHJvZ3JhbXMgd29yayksIHRoYXQncyBzdGlsbCBuZWFybHkgMTAgdGltZXMKCSAgbW9yZSBwZW9wbGUgd29ya2luZyBzaW1wbHkgb24gb25lIHJlbGVhc2UgdGhhbiBoYXZlIDxlbXBoYXNpcz5ldmVyPC9lbXBoYXNpcz4KCSAgd29ya2VkIG9uIFdpbmUsIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtVHJhbnNHYW1pbmdzLWxhc3QtcGF0Y2gtaW5jbHVkZWQtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SXMgVHJhbnNHYW1pbmcncyBsYXRlc3QgcGF0Y2ggaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIFdpbmUgcmVsZWFzZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBObywgaXQncyBub3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJhbnNHYW1pbmcgbWFrZXMgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UgYW5kIHRoZSBsaWNlbnNlCiAgICAgICAgICBvZiB0aGVpciBXaW5lWCB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5lIGxpY2Vuc2UuIFRodXMKICAgICAgICAgIFdpbmVYIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgdGhlIFdpbmUgdHJlZS4gSG93ZXZlciBpdCBzZWVtcyB1bmxpa2VseSB0aGV5IHdpbGwgc3VibWl0IHRoZWlyCiAgICAgICAgICBEaXJlY3QzRCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtdGhlcmUtYmUtYS1XaW5kb3dzLXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvbWUgcGVvcGxlIGFyZSB3b3JraW5nIG9uIGdldHRpbmcgV2luZSBjb2RlIHRvIGNvbXBpbGUgb24gV2luZG93cwogICAgICAgICAgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvamVjdHMgYXMgYSBiYXNpczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEN5Z3dpbgogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cuY3lnd2luLmNvbS8iPmh0dHA6Ly93d3cuY3lnd2luLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNaW5HVwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGFydCBvZiB0aGUgcmF0aW9uYWxlIGZvciB0aGVzZSBwcm9qZWN0cyBpcyB0byBmaW5kIG91dCBhcmVhcyB3aGVyZQogICAgICAgICAgV2luZSBwb3J0YWJpbGl0eSBpcyBsYWNraW5nLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBvZiB0aGUKICAgICAgICAgIFJlYWN0T1MgcHJvamVjdCB3aGljaCBpcyBhIHJlaW1wbGVtZW50YXRpb24gb2YgdGhlIFdpbmRvd3Mga2VybmVsCiAgICAgICAgICBhbmQgc2hvdWxkIHRodXMgYmUgYWJsZSB0byByZXVzZSBtb3N0IG9mIFdpbmUgZGxscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbm90aGVyIHJlYXNvbiBmb3IgcHVyc3VpbmcgdGhlc2UgcHJvamVjdHMgaXMgdG8gYmUgYWJsZSB0bwogICAgICAgICAgcmVwbGFjZSBhIHNpbmdsZSBXaW5kb3dzIGRsbCB3aXRoIGl0cyBXaW5lIGNvdW50ZXJwYXJ0LiBCZXNpZGVzCiAgICAgICAgICBiZWluZyBhIGdvb2QgdGVzdCBmb3IgdGhlIFdpbmUgZGxsLCB0aGlzIGxldHMgdXMgZGV0ZWN0IGNhc2VzIHdoZXJlCiAgICAgICAgICB3ZSBtYWRlIGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIGRsbHMgaW50ZXJhY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IldoYXQtZG8tSS1uZWVkLWluLW9yZGVyLXRvLXVzZS1XaW5lIj4KICAgICAgPHRpdGxlPldoYXQgZG8gSSBuZWVkIGluIG9yZGVyIHRvIHVzZSBXaW5lPzwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlVuZGVyLXdoYXQtcGxhdGZvcm1zLXdpbGwtV2luZS1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVW5kZXIgd2hhdCBoYXJkd2FyZSBwbGF0Zm9ybShzKSBhbmQgb3BlcmF0aW5nIHN5c3RlbShzKSB3aWxsCiAgICAgICAgICBXaW5lKExpYikgcnVuPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIHNwZWNpZmljYWxseSB0byBydW4gb24gdGhlIDxlbXBoYXNpcz5JbnRlbAogICAgICAgICAgeDg2PC9lbXBoYXNpcz4gY2xhc3Mgb2YgQ1BVcyB1bmRlciBjZXJ0YWluIFVOSVhlcyB0aGF0IHJ1biBvbiB0aGlzCiAgICAgICAgICBwbGF0Zm9ybS4gV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyB0aGUgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb25zIDxlbXBoYXNpcz5zb3VyY2UgY29kZTwvZW1waGFzaXM+IHRvIG90aGVyIHBsYXRmb3JtcwogICAgICAgICAgYWxzbywgbm90IG9ubHkgeDg2LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRodXMgcnVubmluZyBXaW5kb3dzIGJpbmFyaWVzIG9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBNYWMgT1MgWCBvbgogICAgICAgICAgUG93ZXJQQykgdXNpbmcganVzdCBXaW5lIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBwb3NzaWJsZS4gWW91CiAgICAgICAgICB3b3VsZCBoYXZlIHRvIGVpdGhlciBydW4gV2luZSBpbiBhbiBlbXVsYXRlZCB4ODYgZW52aXJvbm1lbnQgb3IKICAgICAgICAgIHRha2UgdGhlIFdpbmRvd3MgYXBwbGljYXRpb24gc291cmNlIGNvZGUgYW5kIHJlY29tcGlsZSBpdCB1c2luZwogICAgICAgICAgV2luZWxpYi4KCTwvcGFyYT4KCTxwYXJhPgoJICBUaGVzZSBhcmUgdGhlIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgV2luZS4KCSAgV2luZWxpYiBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMga2VlcHMgZXZvbHZpbmcsCgkgIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaGVyZS4KCTwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5ldEJTRCwgT3BlbkJTRCwgVW5peFdhcmUsIGFuZCBTQ08gT3BlblNlcnZlciA1IHdvcmtlZCBhdCBvbmUgdGltZSwKICAgICAgICAgIGJ1dCBXaW5lIG5vdyByZXF1aXJlcyBrZXJuZWwtbGV2ZWwgdGhyZWFkcyB3aGljaCBhcmUgbm90IGN1cnJlbnRseSAKICAgICAgICAgIGF2YWlsYWJsZSAob3IgdW5kZXJzdG9vZCBieSB0aGUgV2luZSB0ZWFtKSBvbiB0aG9zZSBwbGF0Zm9ybXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgZGV2ZWxvcG1lbnQgdGVhbSBob3BlcyB0byBhdHRyYWN0IHRoZSBpbnRlcmVzdCBvZiBvdGhlcgogICAgICAgICAgY29tbWVyY2lhbCBVTklYIGFuZCBVTklYIGNsb25lIHZlbmRvcnMgYXMgd2VsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZU9TOiBwb3J0aW5nIGVmZm9ydHMgKEJlV2luZSkgdXNlZCB0byBiZSBwcmV0dHkgc3Ryb25nLCBidXQgQmVPUwogICAgICAgICAgaGFzIHNldmVyZSBsaW1pdGF0aW9ucyBpbiBVbml4IGNhbGwgc3VwcG9ydC4gVGhlIGRlbWlzZSBvZiBCZQogICAgICAgICAgZnVydGhlciBoYW1wZXJlZCB0aGUgcHJvamVjdCB0aG91Z2ggaXQgbWlnaHQgY29tZSBiYWNrIG9uZSBkYXkgb24KICAgICAgICAgIG9uZSBvZiB0aGUgb3BlbiBCZU9TIHByb2plY3RzLiBJbiBhbnkgY2FzZSBhIGZ1bmN0aW9uYWwgcG9ydCBzZWVtcwogICAgICAgICAgdW5saWtlbHkgdG8gZXZlciBoYXBwZW4gYXQgdGhpcyBzdGFnZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWMgT1MgWCAvIERhcndpbjogVGhlIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZGFyd2luZS5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC5odG1sIj5EYXJ3aW5lPC8+IGlzCiAgICAgICAgICBjdXJyZW50bHkgd29ya2luZyBvbiBwb3J0aW5nIFdpbmUgdG8gdGhlIERhcndpbi94ODYgcGxhdGZvcm0uIFRoZWlyCiAgICAgICAgICBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBydW4geDg2IFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiBEYXJ3aW4vUFBDIGFuZCB0aGVuIE1hYyBPUyBYIGJ5IHVzaW5nIEJvY2hzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZyZWVCU0Q6IFRoaXMgcG9ydCBpcyB3ZWxsIG1haW50YWluZWQgYW5kIHNob3VsZCB3b3JrIHdpdGgKICAgICAgICAgIGxpbWl0YXRpb25zIGluIHNwZWNpZmljIGFyZWFzIChtYWlubHkgbWlzc2luZyBkZXZpY2UvaGFyZHdhcmUKICAgICAgICAgIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyB0aGUgbW9zdCBwb3B1bGFyIHBsYXRmb3JtIGZvciBib3RoCiAgICAgICAgICBkZXZlbG9wZXJzIGFuZCB1c2VycywgaXQgaXMgdGhlIGJlc3Qgc3VwcG9ydGVkIHBsYXRmb3JtIG9mIGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW1pbmltdW0tQ1BVLW11c3QtSS1oYXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgbWluaW11bSBDUFUgbXVzdCBJIGhhdmUgaW4gbXkgY29tcHV0ZXIgdG8gYmUgYWJsZSB0byBydW4gV2luZSAKICAgICAgICAgIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBXaW5lIGFuZCBXaW5lbGliIGhlcmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSB3b24ndCBydW4gb24gYW55IHg4NiBDUFUgbGVzcyB0aGFuIGFuIDgwMzg2IGR1ZSB0byBhZGRyZXNzCiAgICAgICAgICBtYW5hZ2VtZW50IGxpbWl0YXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGtub3duIHRvIGFsc28gd29yayBpbiB0aGUgODA0ODYgYW5kIHVwd2FyZHMgY29tcGF0aWJsZSBDUFVzLgogICAgICAgICAgVGhlIGJhc2ljIHRlc3QgaXMsIGlmIHlvdSBjYW4gcnVuIFgxMSBub3csIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4KICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHVuZGVyIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIGFsd2F5cywgdGhlIGZhc3RlciB5b3VyIENQVSwgdGhlIGJldHRlci4gSGF2aW5nIGEgbWF0aCBjb3Byb2Nlc3NvcgogICAgICAgICAgaXMgdW5pbXBvcnRhbnQuIEhvd2V2ZXIsIGhhdmluZyBhIGdyYXBoaWNzIGFjY2VsZXJhdGVkIHZpZGVvIGNhcmQKICAgICAgICAgIHN1cHBvcnRlZCBieSBYIHdpbGwgaGVscCBncmVhdGx5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4gSG93ZXZlciB0aGUgcnVsZSBvZgogICAgICAgICAgdGh1bWIgaXMgdGhhdCBpZiB5b3VyIGFwcGxpY2F0aW9uIHJ1bnMgZmluZSBvbiBXaW5kb3dzLCBpdCBzaG91bGQKICAgICAgICAgIHJ1biBmaW5lIG9uIHRoZSBzYW1lIHBsYXRmb3JtIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtZGlzay1zcGFjZS13aWxsLVdpbmUtdGFrZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEhvdyBtdWNoIGRpc2sgc3BhY2Ugd2lsbCB0aGUgV2luZSBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMgdGFrZSBvbiBteQogICAgICAgICBoYXJkIGRyaXZlPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBuZWVkIGFwcHJveGltYXRlbHkgMjUwIG1lZ2FieXRlcyBvZiBmcmVlIGhhcmQgZHJpdmUgc3BhY2UgdG8KICAgICAgICAgIHN0b3JlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZS4gV2luZSBhbHNvIG5lZWRzIGFib3V0IDE4IG1lZ3MgaW4KICAgICAgICAgIHlvdXIgL3RtcCBkaXJlY3RvcnkuIEFuZCBhYm91dCA1MCBNQiBhcmUgbmVlZGVkIHRvIGRvIGEgbWFrZSBpbnN0YWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJpbmFyeSBwYWNrYWdlcywgZXNwZWNpYWxseSB0aG9zZSBub3QgY29udGFpbmluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwKICAgICAgICAgIGhhdmUgbXVjaCBsb3dlciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cywgdXN1YWxseSBpbiB0aGUgMjBNQiByYW5nZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW90aGVyLXNvZnR3YXJlLWRvLUktbmVlZC10by1jb21waWxlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgb3RoZXIgc29mdHdhcmUgZG8gSSBuZWVkIHRvIGluc3RhbGwsIGNvbXBpbGUgYW5kIHJ1bgogICAgICAgICAgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGRldmVsb3BtZW50IHRvb2xzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBXaW5lLgogICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBzZXZlcmFsIGRpc3RyaWJ1dGlvbnMgaXMgaW5jbHVkZWQgaW4KICAgICAgICAgIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIHJ1biBXaW5lLCB5b3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBpbGVkIFdpbmUgYmluYXJ5PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QSBwcm9wZXJseSBjb25maWd1cmVkIHdpbmUuY29uZiBmaWxlIChvciB+Ly53aW5lcmMgZmlsZSk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BbiBpbnN0YWxsZWQgYW5kIHdvcmtpbmcgWCBXaW5kb3cgc3lzdGVtPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+U29tZSBXaW5kb3dzIHByb2dyYW1zIHRvIHRlc3Q8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtUkFNLWRvLUktbmVlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIb3cgbXVjaCBSQU0gZG8gSSBuZWVkIHRvIGhhdmUgb24gbXkgVU5JWCBzeXN0ZW0gdG8gYmUgYWJsZSB0byBydW4gCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHJ1biBYIHNtb290aGx5IG9uIHlvdXIgVU5JWCBzeXN0ZW0gbm93LCB5b3Ugc2hvdWxkIGJlIAogICAgICAgICAgYWJsZSB0byBydW4gV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMganVzdCBmaW5lIHRvbywgZGVwZW5kaW5nCiAgICAgICAgICBvbiBob3cgbWVtb3J5IGh1bmdyeSB0aGUgYXBwbGljYXRpb24gaXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBXaW5lIHdvcmtzdGF0aW9uIHdpbGwgd29yayB3aXRoIDE2IG1lZ2FieXRlcyBvZiBSQU0gYW5kIGEgMTYgCiAgICAgICAgICBtZWdhYnl0ZSBzd2FwIHBhcnRpdGlvbiBhcyBsb25nIGFzIHlvdSBoYXZlIGEgcmVhc29uYWJsZSBncmFwaGljcyAKICAgICAgICAgIGNhcmQuIE1vc3QgYXBwbGljYXRpb25zIHdpbGwgcnVuIHJlYXNvbmFibHkgd2l0aCA2NC82NCBNYiwgCiAgICAgICAgICBpbnRlcmFjdGl2ZSBnYW1lcyBhcmUgbGlrZWx5IHRvIG5lZWQgbW9yZS4gWW91IGNhbiBydW4gV2luZSB3aXRoIDgvOCwKICAgICAgICAgIGJ1dCBpdCBpcyBnb2luZyB0byBiZSB1bnVzYWJseSBzbG93IGFuZCB2ZXJ5IGNvbnN0cmFpbmluZyBvbiB0aGUgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgeW91IGNhbiBydW4uIElmIHlvdSB3aXNoIHRvIGJlIHBhcnQgb2YgdGhlIGRldmVsb3BtZW50CiAgICAgICAgICB0ZWFtIGFuZCBwcm9ncmFtIFdpbmUgaXRzZWxmLCBiZSBhd2FyZSB0aGF0IHRoZSBkZWJ1Z2dlciBpcyByYXRoZXIgCiAgICAgICAgICBtZW1vcnkgaW50ZW5zaXZlLiBTb21lIGhhdmUgc3VnZ2VzdGVkIHRoYXQgNjQgbWVnYWJ5dGVzIGlzIHRoZQogICAgICAgICAgbWluaW11bSBSQU0gbmVlZGVkIGZvciBXaW5lIGRldmVsb3BtZW50LCBhbHRob3VnaCBzb21lIGFyZSBhYmxlIHRvIAogICAgICAgICAgd29yayAoYWxiZWl0IHNsb3dseSkgd2l0aCAyNCBtZWdhYnl0ZXMgb2YgcGh5c2ljYWwgUkFNIGFuZCBsb3RzIG9mCiAgICAgICAgICBzd2FwIHNwYWNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1sb25nLWRvZXMtV2luZS10YWtlLXRvLWJ1aWxkIj4KICAgICAgICA8cGFyYT5Ib3cgbG9uZyBkb2VzIFdpbmUgdGFrZSB0byBidWlsZDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgZ2V0dGluZyB0byBiZSBxdWl0ZSBsYXJnZSwgYW5kIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCB0YWtlcyBhCiAgICAgICAgICBsb3Qgb2YgcHJvY2Vzc2luZy4gQXMgb2YgU2VwdGVtYmVyIDIwMDIsIGNvbXBpbGUgdGltZXMgd2VyZSBhcm91bmQgMjAKICAgICAgICAgIG1pbnV0ZXMgb24gYW4gQXRobG9uIDEyMDAgd2l0aCA2NDAgTWIgYW5kIDQ1LTUwIG1pbnV0ZXMgb24gYSBDeXJpeCAKICAgICAgICAgIDMwMCB3aXRoIDY0IE1iLiBJZiB5b3UgaGF2ZSBhIENWUyBjb3B5LCB5b3UgbWF5IG5vdCBuZWVkIHRvIHJlYnVpbGQKICAgICAgICAgIHRoZSB3aG9sZSB0aGluZyBldmVyeSB0aW1lIHlvdSB1cGRhdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtYS1Ecml2ZXNwYWNlZC1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvciBTdGFja2VyZWQgRE9TIHBhcnRpdGlvbi4gQ2FuIAogICAgICAgICAgV2luZSBydW4gTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHN1Y2ggYSBwYXJ0aXRpb24/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBidXQgb25seSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyB0aG9zZSB0eXBlcwogICAgICAgICAgb2YgZHJpdmVzLiBUaGVyZSBpcyBhIExpbnV4IGZpbGUgc3lzdGVtIGRyaXZlciBjYWxsZWQgZG1zZG9zIHRoYXQKICAgICAgICAgIHdpbGwgYWxsb3cgcmVhZC93cml0ZSBhY2Nlc3MgdG8gRG91Ymxlc3BhY2VkIGFuZCBEcml2ZXNwYWNlIDEuMAogICAgICAgICAgZHJpdmVzLiBNb3JlIHNwZWNpZmljYWxseSwgaXQgc3VwcG9ydHMgbW91bnRpbmcgRE9TIDYuMCBhbmQgNi4yIAogICAgICAgICAgRG91Ymxlc3BhY2VkLCBET1MgNi4yMiBEcml2ZXNwYWNlZCwgYW5kIFdpbmRvd3MgOTUgRG91Ymxlc3BhY2VkIAogICAgICAgICAgY29tcHJlc3NlZCBwYXJ0aXRpb25zIChyZWFkIGFuZCB3cml0ZSBhY2Nlc3Mgd29ya3MgZmluZSwgYnV0IHdyaXRlIAogICAgICAgICAgYWNjZXNzIGlzIHNsb3cpLiBJdCBjYW4gYmUgZm91bmQgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy8iPgogICAgICAgICAgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEby1JLW5lZWQtdG8taGF2ZS1hLURPUy1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPkRvIEkgbmVlZCB0byBoYXZlIGEgRE9TIHBhcnRpdGlvbiBvbiBteSBzeXN0ZW0gdG8gdXNlIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGRvIG5vdCBuZWVkIGEgbGljZW5zZWQgYW5kIGluc3RhbGxlZCBjb3B5IG9mIERPUyBvciBNUyBXaW5kb3dzIHRvCiAgICAgICAgICBpbnN0YWxsLCBjb25maWd1cmUgYW5kIHJ1biBXaW5lLiBIb3dldmVyLCBXaW5lIGhhcyB0byBiZSBhYmxlIHRvIAogICAgICAgICAgJ3NlZScgYW4gTVMgV2luZG93cyBiaW5hcnkgKGkuZS4gYXBwbGljYXRpb24pIGlmIGl0IGlzIHRvIHJ1biBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1NUy1XaW5kb3dzLW5lZWQtdG8tYmUtaW5zdGFsbGVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgTVMgV2luZG93cyBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoYXQgcGFydGl0aW9uIGluIG9yZGVyIHRvCiAgICAgICAgICBydW4gTVMgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZm9sa3MgaGF2ZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGFuZCBydW4gcHJvZ3JhbXMKICAgICAgICAgIGluIHRoZWlyIFVOSVggZmlsZSBzeXN0ZW0gd2l0aG91dCBoYXZpbmcgYSBET1MgcGFydGl0aW9uIG9yIE1TIAogICAgICAgICAgV2luZG93cy4gSG93ZXZlciwgaW4gbWFueSBjYXNlcyB5b3UgbmVlZCBhIGRpcmVjdG9yeSBhbmQgZmlsZSAKICAgICAgICAgIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgc2ltaWxhciB0byBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIFNvbWUgYXBwbGljYXRpb25zJyBpbnN0YWxsYXRpb24gcHJvZ3JhbXMgd2FudCB0byBkaXN0cmlidXRlIHNvbWUgb2YKICAgICAgICAgIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW50byB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHJ1biwgYW5kIHVubGVzcyB0aGVzZSBleGlzdCBvbiB5b3VyIFVOSVggCiAgICAgICAgICBmaWxlIHN5c3RlbSwgdGhvc2UgcHJvZ3JhbXMgd2lsbCBub3QgaW5zdGFsbCBjb3JyZWN0bHkgYW5kIHByb2JhYmx5CiAgICAgICAgICB3aWxsIG5vdCBydW4gd2VsbCwgaWYgYXQgYWxsLiBNb3N0IHBhY2thZ2VzIHdpbGwgc2V0IHRoYXQgdXAgZm9yIHlvdQoJICBhcyBwYXJ0IG9mIHRoZSBpbnN0YWxsIHByb2Nlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGhhdmUgYSBET1MgcGFydGl0aW9uIHdpdGggTVMgV2luZG93cyBpbnN0YWxsZWQgaW4gaXQsIG1ha2UKICAgICAgICAgIHN1cmUgdGhhdCB5b3VyIFVOSVggc3lzdGVtIGNhbiAnc2VlJyB0aGlzIHBhcnRpdGlvbiAoY2hlY2sgeW91ciAKICAgICAgICAgIC9ldGMvZnN0YWIgZmlsZSBvciBtb3VudCB0aGUgcGFydGl0aW9uIG1hbnVhbGx5KSBzbyB0aGF0IFdpbmUgY2FuCiAgICAgICAgICBydW4gdGhlIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiB0aGUgRE9TIHBhcnRpdGlvbi4gVG8gcnVuCiAgICAgICAgICB3aXRob3V0IGEgRE9TIHBhcnRpdGlvbiwgeW91IG5lZWQgdG8gc2V0IGEgVU5JWCBwYXRoIHRvIGJlIHlvdXIgCiAgICAgICAgICBkcml2ZSBDLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBwb2ludCB0byBzb21lIHBsYWNlIHRoYXQgYWN0dWFsbHkgZXhpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUsIGNvcGllZCBmcm9tIGEgbWFjaGluZSB3aGljaCBoYXMgbm8gRE9TIHBhcnRpdGlvbgogICAgICAgICAgYnV0IHN1Y2Nlc3NmdWxseSBydW5zIFdpbmU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CiAgICBbRHJpdmUgQ10gICAgICAKICAgICAgICAgIFBhdGg9L3Zhci9saWIvd2luZQogICAgICAgICAgVHlwZT1oZAogICAgICAgICAgTGFiZWw9TVMtRE9TCiAgICAgICAgICBGaWxlc3lzdGVtPXdpbjk1CiAgICBbd2luZV0KICAgICAgICAgIFdpbmRvd3M9Yzpcd2luZG93cwogICAgICAgICAgU3lzdGVtPWM6XHdpbmRvd3Ncc3lzdGVtCiAgICAgICAgICBUZW1wPWU6XAogICAgICAgICAgUGF0aD1jOlx3aW5kb3dzO2M6XHdpbmRvd3Ncc3lzdGVtO2M6CiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEluIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3M8L2ZpbGVuYW1lPiwgeW91IHdpbGwgbmVlZCB0bwogICAgICAgICBpbnN0YWxsIGEgPGZpbGVuYW1lPndpbi5pbmk8L2ZpbGVuYW1lPiBjb25maWcgZmlsZSB0aGF0IHlvdSBtaWdodAogICAgICAgICBmaW5kIG9uIGEgdHlwaWNhbCBNUyBXaW5kb3dzIDMuMSBtYWNoaW5lLiBUaGUgZGlyZWN0b3J5CiAgICAgICAgIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4gc2hvdWxkIGV4aXN0LCBidXQKICAgICAgICAgZG9lc24ndCBuZWVkIHRvIGNvbnRhaW4gYW55dGhpbmcuIEhvd2V2ZXIsIHRvIHVzZSBNUyBETExzLCB5b3UgY2FuCiAgICAgICAgIGNvcHkgdGhlbSBpbnRvIHRoYXQgZGlyZWN0b3J5LiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbnRyYXZlbnRpb24gb2YKICAgICAgICAgdGhlIFdpbmRvd3MgbGljZW5jZSB1bmxlc3MgV2luZG93cyBpcyBwcm9wZXJseSBpbnN0YWxsZWQgb24gdGhlCiAgICAgICAgIG1hY2hpbmUuIElmIHlvdSBoYXZlIERPUy9NUyBXaW5kb3dzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgeW91IGNhbgogICAgICAgICBtb3VudCB0aGF0IHBhcnRpdGlvbiBhdCBib290dXAgYnkgbW9kaWZ5aW5nIHRoZSBmaWxlIAogICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+IGluIHlvdXIgVU5JWCBwYXJ0aXRpb24gKGFzc3VtaW5nIHRoYXQKICAgICAgICAgdGhlIFVOSVgga2VybmVsIHN1cHBvcnRzIHRoZSBET1MvTVMgV2luZG93cyBmaWxlIHN5c3RlbSB0eXBlKS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZWRpdCB0aGlzIGZpbGUgYnkgaGFuZCwgaXQgc2hvdWxkIGNvbnRhaW4gc29tZXRoaW5nIHNpbWlsYXIKICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Ci9kZXYvaGRhMSAvZG9zYyBtc2RvcyB1aWQ9MCxnaWQ9MTAwLHVtYXNrPTAwNyAwIDAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIERPUyBwYXJ0aXRpb24gd2l0aG91dAogICAgICAgICAgYmVpbmcgcm9vdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBnb2FsIGlzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zIG9uCiAgICAgICAgICBVbml4LiBUbyB0aGlzIGVuZCBpdCB3aWxsIHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBqdXN0IHRob3NlCiAgICAgICAgICBETExzIGFuZCBBUElzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGVzZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBXaW5lIHdpbGwgbm90IHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBETExzIHRoYXQKICAgICAgICAgIGFyZSBub3Qgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgb3IgYXJlIGFsd2F5cyBzaGlwcGVkIHdpdGggV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb24gKGUuZy4gdGhlIFZpc3VhbCBCYXNpYyBydW4gdGltZSkuIFRoaXMgYWxzbwogICAgICAgICAgbWVhbnMgdGhhdCBpbXBsZW1lbnRpbmcgYW4gQVBJIHRoYXQgbm8gYXBwbGljYXRpb24gZXZlciB1c2VzIGlzIG5vdAogICAgICAgICAgYSBwcmlvcml0eS4gU2ltaWxhcmx5LCB1bnRpbCB0aGVyZSBhcmUgYXBwbGljYXRpb25zIG91dCB0aGVyZSB0aGF0CiAgICAgICAgICB1c2UgdGhlIFdpbjY0IEFQSSwgaXQgd2lsbCBub3QgYmUgYSBwcmlvcml0eS4gVGhhdCBiZWluZyBzYWlkLAogICAgICAgICAgd2Ugd2lsbCBjZXJ0YWlubHkgdHJ5IHRvIGtlZXAgb3VyIG9wdGlvbnMgb3BlbiBhbmQgdG8gaW1wcm92ZSBvdXIgQVBJCiAgICAgICAgICBjb3ZlcmFnZSBhcyB3ZSBjYW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxzbyBXaW5lIGlzIG5vdCBhbiBvcGVyYXRpbmcgc3lzdGVtLCBzbyB0aGF0IHdyaXRpbmcgZGV2aWNlCiAgICAgICAgICBkcml2ZXJzIGlzIG5vdCBwYXJ0IG9mIFdpbmUncyBnb2Fscy4gSG93ZXZlciBpZiB5b3UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgIGluIGRldmljZSBkcml2ZXJzLCB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZXJuZWwub3JnLyI+TGludXg8L3VsaW5rPiwKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvIj5GcmVlQlNEPC91bGluaz4gYW5kCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvdWxpbms+IGtlcm5lbCBkZXZlbG9wZXJzCiAgICAgICAgICB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyIGNvbnRyaWJ1dGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1pbGFybHkgV2luZSBkb2VzIG5vdCB0cnkgdG8gYmUgYSBkZXNrdG9wIGVudmlyb25tZW50IHNvCiAgICAgICAgICBwcm92aWRpbmcgYXBwbGV0cyBzdWNoIGFzIGEgY2FsY3VsYXRvciwgYSBmaWxlIG1hbmFnZXIgb3IgZXZlbgogICAgICAgICAgd2luZG93IG1hbmFnZXIgdGhhdCBsb29rIGxpa2UgV2luZG93cywgYXJlIGxvdyBwcmlvcml0eSBvciB3b3VsZAogICAgICAgICAgZXZlbiBiZXN0IGJlIGRvbmUgYXMgYSBzZXBhcmF0ZSBwcm9qZWN0LiBTdWNoIHByb2plY3RzIHdvdWxkIGFsc28KICAgICAgICAgIHRvIGEgbGFyZ2UgZXh0YW50IGJlIHJlZHVuZGFudCB3aXRoIG90aGVyIG9wZW4tc291cmNlIHByb2plY3RzLgogICAgICAgICAgQWdhaW4sIHRoZXJlIGFyZSBwcm9qZWN0cyB0aGF0IHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIKICAgICAgICAgIGNvbnRyaWJ1dGlvbnMgaW4gdGhpcyBhcmVhcywgc3VjaCBhcyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZ25vbWUub3JnLyI+R25vbWU8L3VsaW5rPiBvcgogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZGUub3JnLyI+S0RFPC91bGluaz4gZGVza3RvcCBlbnZpcm9ubWVudHMuIFlvdQogICAgICAgICAgd2lsbCBnZXQgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB5b3VyIGNvbnRyaWJ1dGlvbiB3aWxsIHRoZW4gYmUKICAgICAgICAgIHVzYWJsZSBieSBldmVyeW9uZSwgbm90IGp1c3QgYnkgV2luZSB1c2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIG1pcnJvciwgd29yZCBvZiB0aGlzIG5ld2VzdCByZWxlYXNlCiAgICAgICAgICBtYXkgcmVhY2ggeW91IGJlZm9yZSB0aGUgcmVsZWFzZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYXQgdGhlIGZ0cAogICAgICAgICAgc2l0ZXMgbGlzdGVkIGhlcmUuIFRoZSBzb3VyY2VzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICBsb2NhdGlvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLiBGb3IgbW9yZSBkb3dubG9hZCBsb2NhdGlvbnMsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29tcHVjYW4uY29tL0x5Y29zLmh0bSI+bHljb3M8L3VsaW5rPiBTb21lIG9mCiAgICAgICAgICB0aGVzZSBmdHAgc2l0ZXMgbWF5IGFyY2hpdmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgV2luZSBhcyB3ZWxsIGFzIHRoZQogICAgICAgICAgY3VycmVudCBvbmUuIFRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgbGF0ZXN0IG9uZSwgbG9vayBhdCB0aGUgCiAgICAgICAgICBkaXN0cmlidXRpb24gZmlsZSBuYW1lLCB3aGljaCB3aWxsIHRha2UgdGhlIGZvcm0gCiAgICAgICAgICBXaW5lLVlZWVlNTURELnRhci5nei4gU2ltcGx5IHJlcGxhY2UgWVlZWU1NREQgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lIHdpdGggdGhlIG51bWJlcnMgZm9yIHllYXIsIG1vbnRoIGFuZCBkYXRlLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICBUaGUgbGF0ZXN0IG9uZSBpcyB0aGUgb25lIHRvIGdldC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGJpbmFyeSBwYWNrYWdlcyBhcmUgYXZhaWxhYmxlIGZvciBzZXZlcmFsIE9TJ2VzIGFuZCAKICAgICAgICAgIGRpc3RyaWJ1dGlvbnMuIFNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgIHRoZSBkb3dubG9hZCBwYWdlPC91bGluaz4gZm9yIHRoZSBtb3N0IHJlY2VudCBsaXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtQ1ZTLXRyZWUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgQ1ZTIHRyZWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudCBXaW5lIHNvdXJjZXMgYXJlIGFsc28gYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgY2xpZW50L3NlcnZlcgogICAgICAgICAgQ1ZTLiBZb3Ugd2lsbCBuZWVkIENWUyAxLjkgb3IgYWJvdmUuIElmIHlvdSBhcmUgY29taW5nIGZyb20gYmVoaW5kIGEKICAgICAgICAgIGZpcmV3YWxsLCB5b3Ugd2lsbCBlaXRoZXIgbmVlZCBhIGhvbGUgaW4gdGhlIGZpcmV3YWxsIGZvciB0aGUgQ1ZTCiAgICAgICAgICBwb3J0ICgyNDAxKSBvciB1c2UgU09DS1MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gbG9naW4gdG8gdGhlIENWUyB0cmVlLCBkbwogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjpjdnNAY3ZzLndpbmVocS5jb20vaG9tZS93aW5lCmN2cyBsb2dpbgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXNlICJjdnMiIGFzIHRoZSBwYXNzd29yZCAod2l0aG91dCB0aGUgcXVvdGVzKS4gTm90ZSB0aGF0IAogICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3dpbmU8L2ZpbGVuYW1lPiBpcyBhIHBhdGggb24gdGhlIHNlcnZlciwgbm90IG9uIHlvdXIKICAgICAgICAgIG1hY2hpbmUuIFRvIGNoZWNrIG91dCB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgKHdoaWNoIG1heSBiZSAKICAgICAgICAgIHNsb3cpLCB1c2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIG9yIGlmIHlvdSBqdXN0IHdhbnQgYSBzdWJ0cmVlLCBvciBpbmRpdmlkdWFsIGZpbGUsIHlvdSBjYW4gZG8gdGhhdCAKICAgICAgICAgIHRvbyB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUvQU5OT1VOQ0UgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZSBhd2FyZSwgdGhvdWdoLCB0aGF0IGdldHRpbmcgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlIHZpYSBDVlMKICAgICAgICAgIGlzIHByZXR0eSBzbG93LCBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIGdldHRpbmcgV2luZSBmcm9tIGFuIEZUUCAKICAgICAgICAgIG1pcnJvciBuZWFyIHlvdS4gRm9yIGEgQ1ZTIG1pcnJvciBsaXN0LCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9jdnMjY3Zzc2VydmVycyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9jdnMjY3Zzc2VydmVyczwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLCBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRvd25sb2FkLAogICAgICAgICAgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZSB0aGUgZW50aXJlIGRpc3RyaWJ1dGlvbiBlYWNoIHdlZWsgaWYgeW91IGFyZQogICAgICAgICAgY3VycmVudCB0byB0aGUgcHJldmlvdXMgcmVsZWFzZS4gUGF0Y2ggZmlsZSByZWxlYXNlIG5hbWVzIGZvbGxvdyB0aGUKICAgICAgICAgIHNhbWUgbnVtYmVyaW5nIGNvbnZlbnRpb24gYXMgZG8gdGhlIGdlbmVyYWwgcmVsZWFzZXMsIGFuZCB0YWtlIHRoZSAKICAgICAgICAgIGZvcm0KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ogIAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgc2FtZSBzaXRlcyB0aGF0IGRpc3RyaWJ1dGUgdGhlCiAgICAgICAgICBmdWxsIHJlbGVhc2UuIFRvIHVwZ3JhZGUgdG8gYSBuZXcgcmVsZWFzZSBieSB1c2luZyBhIHBhdGNoIGZpbGUsCiAgICAgICAgICBmaXJzdCBjZCB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgcmVsZWFzZSAodGhlIG9uZQogICAgICAgICAgY29udGFpbmluZyB0aGUgUkVBRE1FIGZpbGUpLCB0aGVuIGRvIGEgIm1ha2UgY2xlYW4iLCBhbmQgcGF0Y2ggdGhlCiAgICAgICAgICByZWxlYXNlIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZ3VuemlwIC1jIHBhdGNoLWZpbGUgfCBwYXRjaCAtcDEgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB3aGVyZSBwYXRjaC1maWxlIGlzIHRoZSBuYW1lIG9mIHRoZSBwYXRjaCBmaWxlIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ouIFlvdSBjYW4gdGhlbiByZS1ydW4gLi9jb25maWd1cmUsIGFuZCB0aGVuIHJ1bgogICAgICAgICAgbWFrZSBkZXBlbmQgJiYgbWFrZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBhcmUgbWlycm9yaW5nIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBmcm9tIHRoZSB0c3gtMTEgc2l0ZSBhbmQKICAgICAgICAgIHdpc2ggdG8gYmUgbGlzdGVkIGhlcmUgaW4gdGhpcyBGQVEsIHBsZWFzZSBhZGQgaXQgdG8gdGhlIAogICAgICAgICAgInRoaW5ncyB0byBnbyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIiBhcmVhLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWdldC1XaW5lLXVzaW5nLWN2c3VwIj4KICAgICAgICA8cGFyYT5DYW4gSSBnZXQgV2luZSB1c2luZyBjdnN1cD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgQ1ZTIG1pcnJvcnMgZG9uJ3Qgb2ZmZXIgY3ZzdXAgc3VwcG9ydCB5ZXQsIGJ1dCB0aGUgbWFpbiBzZXJ2ZXIKICAgICAgICAgIGRvZXMuIFVzZSBhIDxmaWxlbmFtZT53aW5lLnN1cDwvZmlsZW5hbWU+IGZpbGUgb2Y6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CipkZWZhdWx0IGhvc3Q9Y3ZzLndpbmVocS5jb20KKmRlZmF1bHQgYmFzZT0vY3ZzCipkZWZhdWx0IHByZWZpeD0vY3ZzL3dpbmUKKmRlZmF1bHQgcmVsZWFzZT13aW5lCipkZWZhdWx0IGRlbGV0ZSAKCiMgSWYgeW91ciBuZXR3b3JrIGxpbmsgaXMgYSBUMSBvciBmYXN0ZXIsIGNvbW1lbnQgb3V0IHRoZSBmb2xsb3dpbmcgbGluZS4KIypkZWZhdWx0IGNvbXByZXNzIAoKKmRlZmF1bHQgdXNlLXJlbC1zdWZmaXggCndpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9Ikluc3RhbGxpbmctQW5kLUNvbmZpZ3VyaW5nLVdpbmUiPgogICAgICA8dGl0bGU+SW5zdGFsbGluZyBhbmQgQ29uZmlndXJpbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWNvbXBpbGUtdGhlLVdpbmUtc291cmNlLWNvZGUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGNvbXBpbGUgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIHNvdXJjZSBjb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNlZSB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRSI+aHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgZm9yIGluc3RydWN0aW9ucy4KICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IG1heSB3YW50IHRvIHNldCB0aGUgPHBhcmFtZXRlcj5UTVBESVI8L3BhcmFtZXRlcj4KICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIDxjb21tYW5kPlRNUERJUj1+L3RtcDwvY29tbWFuZD4gb3IKICAgICAgICAgIDxjb21tYW5kPlRNUERJUj0vdG1wPC9jb21tYW5kPiAoaWYgeW91IGFyZSByb290KS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1pbnN0YWxsLVdpbmRvd3MtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgaW5zdGFsbCBXaW5kb3dzIGluIFdpbmUgdW5kZXIgTGludXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2ltcGxlIGFuc3dlcjogeW91IENBTidULiBXaW5kb3dzIGRlbWFuZHMgZGlyZWN0IGFjY2VzcyB0byB0aGUKICAgICAgICAgIGhhcmR3YXJlIGFuZCBjYW5ub3QgZ2V0IGl0IHdpdGggV2luZSBhbmQgVU5JWCBpbiB0aGUgd2F5CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBzdXBwb3NlZCB0byBiZSBwcmltYXJpbHkgdXNlZCBXSVRIT1VUIFdpbmRvd3MuIElmIHlvdSB3YW50CiAgICAgICAgICB0byB1c2UgYSBXaW5kb3dzIGluc3RhbGxhdGlvbiwgdGhlbiB1c2UgYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uIAogICAgICAgICAgYWxvbmdzaWRlIHRoZSBVTklYIGluc3RhbGxhdGlvbiAoc2VlIHRoZSBkdWFsLWJvb3QgSE9XVE8gZm9yIHlvdXIgT1MKICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMpLiBPciBhbHRlcm5hdGl2ZWx5IHVzZSB0aGUgY2FiZXh0cmFjdCB1dGlsaXR5IHRvCiAgICAgICAgICBleHRyYWN0IFdpbmRvd3MgaW5zdGFsbCBhcmNoaXZlcyB0byBhIGRpcmVjdG9yeSB0aGF0IHlvdSB3YW50IHRvIHVzZQogICAgICAgICAgYXMgV2luZSdzIFdpbmRvd3MgdHJlZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb25maWd1cmUtV2luZS10by1ydW4tb24tbXktc3lzdGVtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb25maWd1cmUgV2luZSB0byBydW4gb24gbXkgc3lzdGVtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBhIGNvbmZpZyBmaWxlIGFzIAogICAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIGlzCiAgICAgICAgICBleHBsYWluZWQgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBtYW4gcGFnZS4gVGhlIGZpbGUKICAgICAgICAgIDxmaWxlbmFtZT5kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWciPgogICAgICAgICAgaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC91bGluaz4pIAogICAgICAgICAgY29udGFpbnMgYSBjb25maWcgZmlsZSBleGFtcGxlLiBNb3JlIGV4cGxpY2l0IGRpcmVjdGlvbnMgY2FuIGJlIAogICAgICAgICAgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgdGhhdCB3aWxsIGJlIGxvY2F0ZWQgaW4KICAgICAgICAgIHRoZSBiYXNlIFdpbmUgZGlyZWN0b3J5IGFmdGVyIHlvdSBndW56aXAgYW5kIHVudGFyIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktdXBncmFkZS1jb25maWd1cmF0aW9uIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSB1cGdyYWRlIFdpbmUgd2l0aG91dCBsb3NpbmcgbXkgd29ya2luZyBjb25maWd1cmF0aW9uPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZ3JhZGluZyB0aGUgd2luZSBpbnN0YWxsYXRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBleGlzdGluZyB3aW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uLiBTbyBhZnRlciB1cGdyYWRpbmcgd2luZSB5b3Ugc3RpbGwgaGF2ZSB0aGUgb2xkICh3b3JraW5nICkKICAgICAgICAgIHdpbmUgY29uZmlndXJhdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLXZlcnNpb25zLU9LIj4KICAgICAgICA8cGFyYT5JZiBJIHdhbnQgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsLCB3aGljaCB2ZXJzaW9ucyBhcmUgT0s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRWl0aGVyIHVzZSBhIGNsYXNzaWMgbm8td2luZG93cyBpbnN0YWxsIChXaW5lIGlzIGdldHRpbmcgYmV0dGVyIGFsbAogICAgICAgICAgdGhlIHRpbWUpIG9yIHVzZSBhIFdpbjl4IGluc3RhbGwgKFdpbjk1LCA5OCwgOThTRSwgTUUpLiBET04nVCAKICAgICAgICAgIGNvbmZpZ3VyZSBXaW5lIHRvIHVzZSBhbiBOVC1iYXNlZCBXaW5kb3dzIGluc3RhbGwgKE5ULCBXaW4ySywgV2luWFApLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lcyBmYWtlIHdpbmRvd3MgZHJpdmUuCgk8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLW9uZS13b3Jrcy1iZXN0Ij4KICAgICAgICA8cGFyYT5JZiBJIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCB3aXRoIFdpbmUsIHdoaWNoIG9uZSB3b3JrcyBiZXN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIDAyLzIwMDI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSdkIHNheSBXaW45OFNFIGlzIHRoZSBiZXN0IHZlcnNpb24gdG8gdXNlIHdpdGggV2luZSwgYXMgaXQncyBmYWlybHkKICAgICAgICAgIHdpZGVzcHJlYWQgYW1vbmdzdCBkZXZlbG9wZXJzIGFuZCByZWxhdGl2ZWx5IG9sZC4gVXNpbmcgV2luMksgZmlsZXMKICAgICAgICAgIGlzIDxlbXBoYXNpcz5kZWZpbml0ZWx5PC9lbXBoYXNpcz4gd29yc2UgdGhhbiBhIHBsYWluIG5vLXdpbmRvd3MgCiAgICAgICAgICBXaW5lIGluc3RhbGwsIGFuZCBXaW4gTUUgaXMgc2FpZCB0byBiZSBwcm9ibGVtYXRpYywgdG9vIChhcyBwcm9iYWJseQogICAgICAgICAgbm8gZGV2ZWxvcGVyIHVzZXMgaXQpLiBJbiBzaG9ydDogYWxsIFdpbjl4ICZsdDs9IFc5OFNFIGFyZSBnb29kLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikluc3RhbGxpbmctVmlzdWFsLUJhc2ljLWFwcHMtd29udC1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSW5zdGFsbGluZyBhcHBsaWNhdGlvbnMgZ2VuZXJhdGVkIGJ5IFZpc3VhbCBCYXNpYyB3b24ndCBydW4uIFdoYXQKICAgICAgICAgIHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhbGwgdGhlIFZCIHJ1biB0aW1lIGxpYnJhcmllcyBpbnN0YWxsZWQuIFlvdSBtYXkKICAgICAgICAgIG5lZWQgdG8gdXNlIHRoZSBuYXRpdmUgRExMIHZicnVuNjAuZGxsLiBZb3UgY2FuIGdldCBzb21lIGZyb20gZGxsLWZpbGVzLmNvbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLUktY2xpY2stb24tZXhlLWZpbGUtbm90aGluZy1oYXBwZW5zIj4KICAgICAgICA8cGFyYT5XaGVuIEkgY2xpY2sgb24gKi5leGUgZmlsZSBpbiBteSBmaWxlIE1hbmFnZXIsIG5vdGhpbmcgaGFwcGVucy48L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbm9ybWFsIFdpbmUgcmVsZWFzZXMgZG9uJ3QgaGF2ZSAuZXhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIFdpbmUgaW4gS0RFL0dub21lIHlldC4gWW91IGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBpbnN0ZWFkCiAgICAgICAgICAob2Z0ZW4gYW4gaWNvbiBzaG93aW5nIGEgImJsYWNrIHNjcmVlbiIpIGFuZCB0eXBlIHNvbWV0aGluZyBsaWtlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjZCAvbXkvd2luZG93cy9wcm9ncmFtL2RpcmVjdG9yeQp3aW5lIG15cHJvZ3JhbS5leGUKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE9yIGFsdGVybmF0aXZlbHkgeW91IGNvdWxkIGRvd25sb2FkIHRoZSBDb2RlV2VhdmVycyBXaW5lIHByZXZpZXcgCiAgICAgICAgICB3aGljaCBpbmNsdWRlcyAuZXhlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gZm9yIEtERS9Hbm9tZSBhbmQgYSBuaWNlCiAgICAgICAgICBzZXR1cCBwcm9ncmFtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImJhc2gtd2luZS1Db21tYW5kLW5vdC1mb3VuZC1XaGF0LWNhbi1JLWRvIj4KICAgICAgICA8cGFyYT5iYXNoIHNheXMgIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byByZSBsb2dpbiBpbnRvIGJhc2guIFRoYXQgbWlnaHQgZml4IGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGl0IGRvZXNuJ3QsIHRoZW4gbWFrZSBzdXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbiB5b3VyIAogICAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1biBhcyByb290OgogICAgICAgIDwvUGFyYT4KICAgICAgICA8c2NyZWVuPgpmaW5kIC8gLW5hbWUgIndpbmUiIC10eXBlIGYgLXBlcm0gKzExMQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB3aGVyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4uIFRoZW4gY2hlY2sgd2hldGhlcgogICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPiBpbmNsdWRlcyBpdDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZWNobyAkUEFUSCAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIG5vdCwgYWRkIHRoYXQgZS5nLiB0byA8ZmlsZW5hbWU+L2V0Yy9wcm9maWxlPC9maWxlbmFtZT4gYnkgZG9pbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBQQVRIPSRQQVRIOi9wYXRoL3RvL3dpbmUvYmluYXJ5IAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBzaG91bGQgaGVscC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgSWYgeW91IHVzZWQgYSBwYWNrYWdlIG1hbmFnZXIgKDxjb21tYW5kPnJwbTwvY29tbWFuZD4gb3IgCiAgICAgICAgICAgPGNvbW1hbmQ+YXB0PC9jb21tYW5kPikgLSBWZXJpZnkgeW91ciBwYWNrYWdlcy4gVGhlIHBhY2thZ2UgCiAgICAgICAgICAgPGZpbGVuYW1lPndpbmVzZXR1cHRrLnJwbTwvZmlsZW5hbWU+IGlzIG9ubHkgYSBmcm9udC1lbmQgZm9yIAogICAgICAgICAgIG1ha2luZyBhIG1lYW5pbmdmdWwgY29uZmlnIGZpbGUsIGl0IERPRVMgTk9UIGluc3RhbGwgdGhlIHdpbmUKICAgICAgICAgICBwYWNrYWdlLi4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIEZvciBjb21wbGV0ZSBwYWNrYWdlcywgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly9ycG1zZWVrLmNvbS9ycG0tcGwvd2luZS5odG1sP2hsPWNvbSZhbXA7Y3g9MDo6Ij4KICAgICAgICAgICBodHRwOi8vcnBtc2Vlay5jb20vPC91bGluaz4gb3IgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gdHlwZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4Kcm0gLWZSIFxbL3BhdGgvXF1XaW5lKgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGV4YWN0IHBhdGggd2hlbiB1c2luZyB0aGUgcG93ZXJmdWwKICAgICAgICAgIDxjb21tYW5kPnJtIC1mUjwvY29tbWFuZD4gY29tbWFuZC4gSWYgeW91IGFyZSBhZnJhaWQgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgIGRlbGV0ZSBzb21ldGhpbmcgaW1wb3J0YW50LCBvciBtaWdodCBvdGhlcndpc2UgZGVsZXRlIG90aGVyIGZpbGVzIAogICAgICAgICAgd2l0aGluIHlvdXIgZmlsZSBzeXN0ZW0sIDxjb21tYW5kPmNkPC9jb21tYW5kPiBpbnRvIGVhY2ggV2luZSAKICAgICAgICAgIHN1YiBkaXJlY3Rvcnkgc2luZ2x5IGFuZCBkZWxldGUgdGhlIGZpbGVzIGZvdW5kIHRoZXJlIG1hbnVhbGx5LCAKICAgICAgICAgIG9uZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBhIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgIE5laXRoZXIgdGhlIFdpbmUgZGV2ZWxvcGVycyBhbmQgcHJvZ3JhbW1lcnMsIG5vciB0aGUgV2luZSBGQVEgCiAgICAgICAgYXV0aG9yL21haW50YWluZXIsIGNhbiBiZSBoZWxkIHJlc3BvbnNpYmxlIGZvciB5b3VyIGRlbGV0aW5nIGFueQogICAgICAgIGZpbGVzIGluIHlvdXIgb3duIGZpbGUgc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlIG5hbWUgb25seS4gRm9yIGV4YW1wbGUgdG8gcnVuIFdpbmRvd3MnCiAgICAgICAgICBzb2xpdGFpcmUsIHR5cGUgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2w8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPndpbmUgc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgdGhlIHNlYXJjaCBwYXRoIHRvIGxvY2F0ZSB0aGUgZmlsZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgYzpcXHdpbmRvd3NcXHNvbC5leGU8L2NvbW1hbmQ+IAogICAgICAgICAgICh1c2luZyBhIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIC91c3Ivd2luZG93cy9zb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyBhIFVOSVggZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgZmlsZSB3aWxsIGFsc28gYmUgYWRkZWQgdG8gdGhlIHBhdGggd2hlbiBhIGZ1bGwgbmFtZQogICAgICAgICAgaXMgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2luZS1jYW5ub3QtZmluZC1NUy1XaW5kb3dzLW9uLW15LWRyaXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgV2luZSwgYnV0IFdpbmUgY2Fubm90IGZpbmQgTVMgCiAgICAgICAgICBXaW5kb3dzIG9uIG15IGRyaXZlLiBXaGVyZSBkaWQgSSBnbyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24sIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIG1vdW50ZWQKICAgICAgICAgIGl0LCBlaXRoZXIgYnkgcHV0dGluZyB0aGUgZW50cnkgaW50byA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+LAogICAgICAgICAgb3IgYnkgbWFudWFsbHkgbW91bnRpbmcgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVtZW1iZXIgdG9vIHRoYXQgdW5sZXNzIHlvdXIgdmVyc2lvbiBvZiBVTklYIGNhbiBzZWUgdGhyb3VnaCBpdCwgb3IKICAgICAgICAgIHlvdSBhcmUgcnVubmluZyBhIHV0aWxpdHkgdGhhdCBjYW4gc2VlIHRocm91Z2ggaXQsIHlvdXIgRE9TCiAgICAgICAgICBwYXJ0aXRpb24gbXVzdCBub3QgYmUgbG9jYXRlZCBvbiBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IKICAgICAgICAgIFN0YWNrZXJlZCBwYXJ0aXRpb24sIGFzIG5laXRoZXIgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBvciBXaW5lIGNhbgogICAgICAgICAgbmF0aXZlbHkgJ3NlZScgZmlsZXMgbG9jYXRlZCBpbiB0aGVzZSBjb21wcmVzc2VkIERPUyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIENoZWNrIHlvdXIgcGF0aCBzdGF0ZW1lbnRzIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gCiAgICAgICAgICBmaWxlLiBObyBjYXBpdGFsIGxldHRlcnMgbWF5IGJlIHVzZWQgaW4gcGF0aHMsIGFzIHRoZXkgYXJlIAogICAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlBhcnRzLW9mLW15LWFwcC1kby1ub3Qtd29yay1XaGF0LWlzLXdyb25nIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgd2FzIGFibGUgdG8gZ2V0IHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcyB0byBydW4sIGJ1dCBwYXJ0cyBvZgogICAgICAgICAgdGhlbSBkbyBub3Qgd29yay4gV2hhdCBpcyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBjb21wbGV0ZSBhdCB0aGlzIHRpbWUsIHNvIHNvbWUgb2YgZWFjaCBwcm9ncmFtcycgCiAgICAgICAgICBmZWF0dXJlcyBtYXkgbm90IHdvcmsuIFRoZXkgd2lsbCBpbiB0aW1lIGFzIG1vcmUgb2YgdGhlIE1TIAogICAgICAgICAgV2luZG93cyBBUEkgY2FsbHMgYXJlIGluY2x1ZGVkIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iTWVudXMtZG8tbm90LXdvcmstaG93LWNhbi1JLWV4aXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHJ1biB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMsIGJ1dCBzaW5jZSB0aGUgcHJvZ3JhbSBtZW51cwogICAgICAgICAgZG8gbm90IHdvcmssIGhvdyBjYW4gSSBleGl0IHRoZXNlIHByb2dyYW1zPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEtpbGwgdGhlIHh0ZXJtIHNoZWxsIHdpbmRvdyB0aGF0IHlvdSBjYWxsZWQgdXAgdG8gcnVuIHlvdXIgTVMgCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW0sIGFuZCB0aGUgWCB3aW5kb3cgdGhhdCBhcHBlYXJlZCB3aXRoIHRoZSBwcm9ncmFtIAogICAgICAgICAgd2lsbCBiZSBraWxsZWQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uIGlkPSJNeS1hcHAtZG9lc250LXdvcmstd2hhdC1jYW4taS1kbyI+CgkgIDxwYXJhPgoJICAgIE15IHByb2dyYW0gZG9lc24ndCB3b3JrLCB3aGF0IGNhbiBJIGRvPwoJICA8L3BhcmE+Cgk8L3F1ZXN0aW9uPgoJPGFuc3dlcj4KCSAgPHBhcmE+CgkgICAgSWYgeW91IGFyZSBhIHByb2dyYW1tZXIgYW5kIGtub3cgQywgdGhlbiBzdGFydCBkZWJ1Z2dpbmcKCSAgICBXaW5lIGFuZCBoZWxwIHVzIG1ha2UgaXQgYmV0dGVyISBJZiB5b3UgY2FuJ3QsIHRoZW4geW91IHdpbGwKCSAgICBoYXZlIHRvIGVpdGhlciBjb252aW5jZSBhIFdpbmUgZGV2ZWxvcGVyIHRvIHRyeSBhbmQgbWFrZSB5b3VyCgkgICAgcHJvZ3JhbSB3b3JrICh0aGVyZSBtdXN0IGJlIGEgZG93bmxvYWRhYmxlIHZlcnNpb24gb3IgZGVtbyBmb3IKCSAgICB0aGF0KSwgb3IgaGlyZSBzb21lYm9keSB0byBkbyBpdCBmb3IgeW91LiBJZiB0aGlzIGFwcGxpY2F0aW9uCgkgICAgaXMgYW4gaW50ZXJuYWwgY29ycG9yYXRlIGFwcGxpY2F0aW9uLCB5b3UgbWF5IGJlIGFibGUgdG8gaGlyZSBhCgkgICAgV2luZSBkZXZlbG9wZXIgdG8gZG8gY29uc3VsdGluZyB3b3JrIGZvciB5b3Ugb24gdGhlIG1hdHRlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IHRoZSBhcHAgd29ya2luZyBieQoJICAgIHRha2luZyBuYXRpdmUgRExMcyBmcm9tIGEgTWljcm9zb2Z0IFdpbmRvd3MgaW5zdGFsbCwgYW5kIHVzaW5nCgkgICAgdGhlbSAoc2V0IHRoZSBkbGxzIHRvIG5hdGl2ZSBpbiB0aGUgY29uZmlnIGZpbGUpLiBOb3QgYWxsIERMTHMKCSAgICBjYW4gYmUgcmVwbGFjZWQgdGhhdCB3YXkgLSBpbiBwYXJ0aWN1bGFyIERpcmVjdFggY2Fubm90IGJlLCBub3IKCSAgICBjYW4gc29tZSBjb3JlIHN5c3RlbSBETExzIGxpa2UgdXNlciwgbnRkbGwsIGtlcm5lbDMyIGV0YwoJICA8L3BhcmE+Cgk8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtd2l0aC1vdGhlci1MaW51eC1EaXN0cm9zIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB3aXRoIFN1U0UsIFBlYW51dCBvciBvdGhlciBMaW51eCBEaXN0cm8ncz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIHVzZSBXaW5lIG9uIGFueSBzdWZmaWNpZW50bHkgcmVjZW50IExpbnV4IGluc3RhbGxhdGlvbi4gVGhlCiAgICAgICAgICBhbW91bnQgb2Ygd29yayBnZXR0aW5nIFdpbmUgdXAgYW5kIHJ1bm5pbmcgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXJlCiAgICAgICAgICBhcmUgcHJvcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSBvciBhIHNvdXJjZSBjb21waWxlIGhhcyB0byBiZSBkb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtV2luZS13b3JrLXdpdGgtQU1ELVByb2Nlc3NvcnMiPgogICAgICAgIDxwYXJhPkRvZXMgV2luZSB3b3JrIHdpdGggQU1EIFByb2Nlc3NvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBpdCBkb2VzLiBXaW5lIHNob3VsZCB3b3JrIG9uIGFueSBwcm9jZXNzb3IgY29tcGF0aWJsZSB3aXRoCiAgICAgICAgICB0aGUgUGVudGl1bSBvciBncmVhdGVyLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1sYXVuY2gtVW5peC1hcHAtZnJvbS1XaW5kb3dzLWFwcCI+CiAgICAgICAgPHBhcmE+IENhbiBJIGxhdW5jaCBhIFVuaXggcHJvZ3JhbSBmcm9tIGEgV2luZG93cyBwcm9ncmFtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUsIFdpbmUgc3VwcG9ydHMgdGhhdC4gSnVzdCBlbnRlciB0aGUgdW5peCBwcm9ncmFtIG5hbWUgd2hlcmV2ZXIKICAgICAgICAgIGEgcHJvZ3JhbSBoYXMgc29tZXRoaW5nIHRoYXQgaXQncyBzdXBwb3NlZCB0byBleGVjdXRlLCBhbmQgaXQKICAgICAgICAgIHNob3VsZCBqdXN0IHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJFcnJvci13aXRoLWluc3RhbGxzaGllbGQtNiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGdldCA8cXVvdGU+RXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCk8L3F1b3RlPgogICAgICAgICAgd2hlbiBydW5uaW5nIGFuIEluc3RhbGxTaGllbGQgNiBpbnN0YWxsZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGdldCB0aGUgZXJyb3IgIkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApIiBhdCBhbnkKICAgICAgICAgIHBvaW50LCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlcmUgYXJlIGxlZnRvdmVyIHByb2Nlc3NlcyBmcm9tIGEKICAgICAgICAgIHByZXZpb3VzIHRyeS4gWW91IGNhbiB2ZXJpZnkgdGhpcyB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPjxwcm9tcHQ+JCA8Lz48Y29tbWFuZD5wcyBhdWd4dyB8IGdyZXAgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB0aGF0IGNvbW1hbmQgc2hvd3Mgb2xkIGNvcGllcyBvZiB3aW5lIHJ1bm5pbmcgeW91ciBzZXR1cCwKICAgICAgICAgIHlvdSBuZWVkIHRvIGtpbGwgdGhlbSBiZWZvcmUgeW91IGNhbiBydW4gdGhlIHNldHVwIHByb2dyYW0uCiAgICAgICAgICBJZiB0aGVyZSBhcmUgbm8gb3RoZXIgV2luZSBwcm9ncmFtcyBydW5uaW5nLCB5b3UgY2FuIGtpbGwgdGhlbQogICAgICAgICAgYWxsIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPmtpbGxhbGwgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UncmUgYWxzbyBydW5uaW5nIFdpbmUgcHJvZ3JhbXMgeW91IGNhcmUgYWJvdXQsIHlvdSdsbAogICAgICAgICAgaGF2ZSB0byBraWxsIG9mZiB0aGUgb2xkIFNldHVwIGluc3RhbmNlcyBvbmUgYnkgb25lIHVzaW5nCiAgICAgICAgICBraWxsIGFuZCB0aGUgaW5kaXZpZHVhbCBQSURzIChvciBwZXJoYXBzIFdpbmUncyBzcGlmZnkgVGFzayBNYW5hZ2VyLAogICAgICAgICAgd2hpY2ggZG9lc24ndCBleGlzdCB5ZXQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBzaG91bGQgcmVwZWF0IHRoZSA8Y29tbWFuZD5wczwvY29tbWFuZD4gdG8gbWFrZSBzdXJlIHRoZSBvbGQgCiAgICAgICAgICBXaW5lIHByb2Nlc3NlcyBhcmUgZ29uZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgICAKICAgIDxxYW5kYWRpdiBpZD0iR2V0dGluZy1oZWxwIj4KICAgICAgPHRpdGxlPkdldHRpbmcgaGVscDwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFueS1kb2N1bWVudGF0aW9uLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb2N1bWVudGF0aW9uIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2RvY3VtZW50YXRpb24uPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zaXRlL2ZvcnVtcyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9mb3J1bXM8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2UgYmFzZSBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zcyBwb3N0ZWQgdG8gb3RoZXIgYXBwcm9wcmlhdGUgbmV3c2dyb3Vwcywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5vcy5saW51eC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAub3MubGludXguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLndpbmRvd3MueC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAud2luZG93cy54LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC5lbXVsYXRvcnMuYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLmVtdWxhdG9ycy5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91ciBVc2VuZXQgc2l0ZSBkb2VzIG5vdCBjYXJyeSB0aGVzZSBuZXdzZ3JvdXBzLCBwbGVhc2UgdXJnZSAKICAgICAgICAgIHlvdXIgSVNQJ3Mgc3lzYWRtaW4gdG8gYWRkIGFuZC9vciB1cGxpbmsgdGhlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVdvcmxkLVdpZGUtV2ViLXNpdGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgV29ybGQgV2lkZSBXZWIgc2l0ZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIEhRICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20iPmh0dHA6Ly93d3cud2luZWhxLmNvbTwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLmZyZWVub2RlLm5ldDwvZmlsZW5hbWU+IHNlZSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vZnJlZW5vZGUubmV0Ij5odHRwOi8vZnJlZW5vZGUubmV0PC91bGluaz4pLgogICAgICAgICAgVXN1YWxseSBzZXZlcmFsIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEuY29tLyI+aHR0cDovL2J1Z3Mud2luZWhxLmNvbS88L3VsaW5rPikuCiAgICAgICAgICBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZSB2ZXJzaW9uIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZG93cyBhcHBsaWNhdGlvbiBuYW1lLCBpbmNsdWRpbmcgdGhlIHZlcnNpb24sIGFuZCwgaWYKICAgICAgICAgICAgYXBwbGljYWJsZSwgYSBVUkwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZyb20KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSByZWxldmFudCBwYXJ0KHMpIG9mIHRoZSBvdXRwdXQgb2YgdGhlIFdpbmUgZGVidWdnZXIKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBzY3JlZW5zaG90IG9mIHRoZSB2aXN1YWwgcHJvYmxlbSwgaWYgYXBwbGljYWJsZQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVwb3J0aW5nIGJ1Z3MgcGxlYXNlIHNlZSB0aGUgCiAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmUtdXNlci9idWctcmVwb3J0aW5nLnNodG1sIj4KICAgICAgICAgSG93IHRvIHJlcG9ydCBhIGJ1ZzwvdWxpbms+IHNlY3Rpb24gb2YgdGhlIFdpbmUgVXNlcnMgR3VpZGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KIAogICAgPHFhbmRhZGl2IGlkPSJIZWxwaW5nLVdpbmUtb3ItYmVjb21pbmctYS1XaW5lLWRldmVsb3BlciI+CiAgICAgIDx0aXRsZT5IZWxwaW5nIFdpbmUgb3IgYmVjb21pbmcgYSBXaW5lIGRldmVsb3BlcjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWJlY29tZS1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBiZWNvbWUgYSBXaW5lIGRldmVsb3Blcj8gV2hhdCBkbyBJIG5lZWQgdG8ga25vdz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHByb2dyYW0gQywgdGhhdCdzIGEgZ29vZCBzdGFydC4gRG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NpdGUvY3ZzIj5DVlMsPC91bGluaz4pCiAgICAgICAgICBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZAogICAgICAgICAgcGF5IGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cAogICAgICAgICAgYW5kIHRoZSBtYWlsaW5nIGxpc3RzICg8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9mb3J1bXM8L3VsaW5rPikuCiAgICAgICAgICBTZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGF0IHlvdSB0aGluayB5b3UgY2FuIGZpeCBvciB3b3JrCiAgICAgICAgICBvbi4gWW91IHdvbid0IGhhdmUgbXVjaCB0cm91YmxlIGZpbmRpbmcgYXJlYXMgdGhhdCBuZWVkIHdvcmsKICAgICAgICAgIGluIFdpbmUgKGdyZXAgZm9yIEZJWE1FcyBpbiB0aGUgc291cmNlKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktY29udHJpYnV0ZS10by10aGUtV2luZS1wcm9qZWN0Ij4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgaGVscCBjb250cmlidXRlIHRvIHRoZSBXaW5lIHByb2plY3QsIGFuZCBpbiB3aGF0IHdheShzKT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIGNvbnRyaWJ1dGUgcHJvZ3JhbW1pbmcgb3IgZG9jdW1lbnRhdGlvbiBza2lsbHMsIG9yIG1vbmV0YXJ5CiAgICAgICAgICBvciBlcXVpcG1lbnQgZG9uYXRpb25zLCB0byBhaWQgdGhlIFdpbmUgZGV2ZWxvcGVycyBpbiByZWFjaGluZyB0aGVpciAKICAgICAgICAgIGdvYWxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBhIGxpc3Qgb2YgaWRlYXMgb2YgaG93IHlvdSBjYW4gaGVscCwgcGxlYXNlIGNvbnN1bHQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NpdGUvY29udHJpYnV0aW5nIj4KICAgICAgICAgIFdpbmUgY29udHJpYiBwYWdlPC91bGluaz4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13YW50LXRvLWhlbHAtYmV0YS10ZXN0LVdpbmUiPgogICAgICAgIDxwYXJhPkkgd2FudCB0byBoZWxwIGJldGEgdGVzdCBXaW5lLiBIb3cgY2FuIEkgZG8gdGhpcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHN0aWxsIGNvbnNpc3RzIG9mIHNvbWUgQWxwaGEgY29kZSBhdCB0aGlzIHRpbWUuIEhvd2V2ZXIsIGFueW9uZQogICAgICAgICAgaXMgd2VsY29tZSB0byBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24sIGFuZCB0cnkgaXQgb3V0IGF0IGFueQogICAgICAgICAgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdyb3RlLXNvbWUtY29kZS1JLXdvdWxkLWxpa2UtdG8tc3VibWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSB3cml0dGVuIHNvbWUgY29kZSB0aGF0IEkgd291bGQgbGlrZSB0byBzdWJtaXQgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2plY3QuIEhvdyBkbyBJIGdvIGFib3V0IGRvaW5nIHRoaXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VibWl0dGluZyBhIHBhdGNoIGZvciBpbmNsdXNpb24gaW4gV2luZSBpcyBwcmV0dHkgc2ltcGxlLgogICAgICAgICAgQmFzaWNhbGx5IGFsbCB5b3UgaGF2ZSB0byBkbyBpcyBzZW5kIHRoZSBwYXRjaCB0byB0aGUKICAgICAgICAgIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL21haWxtYW4vbGlzdGluZm8vd2luZS1wYXRjaGVzIj5odHRwOi8vd3d3LndpbmVocS5vcmcvbWFpbG1hbi9saXN0aW5mby93aW5lLXBhdGNoZXM8Lz4pLgogICAgICAgICAgU3RpbGwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHJlY29tbWVuZGF0aW9ucyBhYm91dCB0aGUgcGF0Y2ggZm9ybWF0CiAgICAgICAgICBhbmQgYWxsIHNvIGl0J3MgYmVzdCB0byByZWFkIG91ciBwYWdlIGRlc2NyaWJpbmcgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zaXRlL3NlbmRpbmdfcGF0Y2hlcyI+aG93IHRvIHN1Ym1pdAogICAgICAgICAgcGF0Y2hlczwvPi4gVGhpcyB3aWxsIGFsc28gZ2l2ZSB5b3UgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB3aG9sZQogICAgICAgICAgcHJvY2VzcyBhbmQgaW4gcGFydGljdWxhciB0byB3aGF0IHdpbGwgaGFwcGVuIHRvIHlvdXIgcGF0Y2ggb25jZQogICAgICAgICAgc3VibWl0dGVkLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iRGV2ZWxvcGluZy1wcm9ncmFtcy11c2luZy1XaW5lLVdpbmVMaWIiPgogICAgICA8dGl0bGU+RGV2ZWxvcGluZyBwcm9ncmFtcyB1c2luZyBXaW5lL1dpbmVMaWI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS10by1wb3J0LVdpbjMyLXNvdXJjZXMtdG8tVW5peCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gcG9ydCBteSBXaW4zMiBzb3VyY2VzIHRvIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBpcyB0aGUgaWRlYSBvZiBXaW5lbGliLiBSaWdodCBub3cgeW91IG1heSBzdGlsbCBoYXZlIHNvbWUgCiAgICAgICAgICBkaWZmaWN1bHRpZXMsIGJ1dCB0aGlzIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZS4gUmVhZCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBpbmZvLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtTUZDLXdvcmstd2l0aC1XaW5lLVdoYXQtZG8tSS1uZWVkLXRvLWRvIj4KICAgICAgICA8cGFyYT5XaWxsIE1GQyB3b3JrIHdpdGggV2luZT8gV2hhdCBkbyBJIG5lZWQgdG8gZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBub3QgaW1wbGVtZW50aW5nIGFuIE1GQyByZXBsYWNlbWVudCBub3IgZG9lcyBpdCBpbnRlbmQgdG8uCiAgICAgICAgICBIb3dldmVyIGl0IGlzIHBvc3NpYmxlICh3aXRoIGEgbG90IG9mIHdvcmspIHRvIGNvbXBpbGUgdGhlIE1GQyBmcm9tCiAgICAgICAgICBzb3VyY2UgYW5kIHRodXMgcHJvZHVjZSBhbiA8ZmlsZW5hbWU+bWZjNDIuZGxsLnNvPC9maWxlbmFtZT4gbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaG93IHRvIGRvIHRoaXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLXRoZXJlLWNvbW1lcmNpYWwtYXBwcy1wb3J0ZWQtdXNpbmctV2luZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcmUgdGhlcmUgYW55IGNvbW1lcmNpYWwgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYmVlbiBwb3J0ZWQKICAgICAgICAgIHVzaW5nIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyBwb3J0ZWQgdXNpbmcgV2luZSBvciBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIDIwMDAgd2FzIHBvcnRlZCB0byBMaW51eCB1c2luZwogICAgICAgICAgICBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBLeWxpeCwgdGhlIExpbnV4IHZlcnNpb24gb2YgRGVscGhpLCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmVsaWIuIFRoZSBJREUgYWN0dWFsbHkgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIFFUIGFuZCBXaW5lbGliCiAgICAgICAgICAgIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUgdG8gYWNoaWV2ZSB1c2luZyBvbmx5IFdpbmUuCiAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgYXBwbGljYXRpb25zIGhvd2V2ZXIgZG8gbm90IGRlcGVuZCBvbiBXaW5lIGluCiAgICAgICAgICAgIGFueSB3YXkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIE11c2ljTWF0Y2ggSnVrZWJveCA1IGhhcyBhbHNvIGJlZW4KICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pdHdvcmxkLmNvbS9ubC9sbnhfZGVza3RvcC8wMTA0MjAwMS8iPnBvcnRlZDwvPgogICAgICAgICAgICB0byBMaW51eCB1c2luZyBXaW5lbGliLiBIb3dldmVyIG1vcmUgcmVjZW50IHZlcnNpb25zIGhhdmUgbm90LCBhbmQKICAgICAgICAgICAgdmVyc2lvbiA1IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEFiaWxpdHkgT2ZmaWNlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHAiPmh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBJQk0ncyBXZWJzcGhlcmUKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wIj5odHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgb3RoZXIgaW1wb3J0YW50IGFwcGxpY2F0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBwb3J0ZWQuICh3ZSBhcmUKICAgICAgICAgIHNwZWFraW5nIG9mIHNldmVyYWwgdG9wIDUwMCBhcHBsaWNhdGlvbnMgaGVyZSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktZGV0ZWN0LVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBkZXRlY3QgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgcmVhbGx5IHNob3VsZG4ndCB3YW50IHRvIGRvIHRoaXMuIElmIHRoZXJlJ3MgYSBxdWlyayBpbiBXaW5lIAogICAgICAgICAgeW91IG5lZWQgdG8gd29yayBhcm91bmQsIGl0J3MgbXVjaCBiZXR0ZXIgdG8gZml4IGl0IGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAKICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJXaW5lLUhRLWlzc3VlcyI+CiAgICAgIDx0aXRsZT5XaW5lIEhRIGlzc3VlczwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoeS1hcmUtdGhlLW1haWxsaXN0cy1zZXQtdG8tcmVwbHktdG8tYXV0aG9yIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoeSBhcmUgdGhlIG1haWxpbmcgbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPgogICAgICAgICAgQW5kIHNlbGVjdCBbKFVuLSlTdWJzY3JpYmVdCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==