PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CiAgPHBhcmE+CiAgICAgRm9yIHRlY2huaWNhbCBxdWVzdGlvbnMsIHZpc2l0IHRoZSAKICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZm9tLW1ldGEvY2FjaGUvMTkuaHRtbCI+CiAgICAgV2luZSBUcm91Ymxlc2hvb3RpbmcgR3VpZGU8L3VsaW5rPiBpbnN0ZWFkLgogIDwvcGFyYT4KCiAgPHFhbmRhc2V0PgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC10aGlzLUZBUSI+PHRpdGxlPkFib3V0IHRoaXMgRkFRPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hvLW1haW50YWlucy10aGlzLUZBUSI+CiAgICAgICAgPHBhcmE+V2hvIG1haW50YWlucyB0aGlzIEZBUSA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPkRhdmUgR2FyZG5lciBtYWludGFpbmVkIGl0IGZyb20gMTk5NS0xOTk4LjwvcGFyYT4KICAgICAgICA8cGFyYT5Eb3VnbGFzIFJpZGd3YXkgKHJpZGd3YXlAd2luZWhxLmNvbSkgdG9vayBpdCBvdmVyIGluIDE5OTkuPC9wYXJhPgogICAgICAgIDxwYXJhPkFuZHJlYXMgTW9ociAoYW1vaHJAY29kZXdlYXZlcnMuY29tKSBjb252ZXJ0ZWQgaXQgdG8gRkFRLU8tTWF0aWMgaW4gMjAwMC48L3BhcmE+CiAgICAgICAgPHBhcmE+RGltaXRyaWUgTy4gUGF1biwgS2VpdGggTWF0dGhld3MgYW5kIFRob21hcyBXaWNrbGluZSByZW9yZ2FuaXNlZCBpdCBpbiAyMDAyLjwvcGFyYT4KICAgICAgICA8cGFyYT5Gb3Igc3VnZ2VzdGlvbnMvYWRkaXRpb25zL2NvbXBsYWludHMgcmVnYXJkaW5nIHRoaXMgRkFRLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0bwogICAgICAgIDx1bGluayB1cmw9Im1haWx0bzp3aW5lLWZhcUB3aW5laHEub3JnIj53aW5lLWZhcUB3aW5laHEub3JnPC91bGluaz48L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWNvcHlyaWdodC1vbi10aGUtRkFRLUFuZCI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY29weXJpZ2h0IG9uIHRoZSBGQVEgPyBBbmQgaG93IG1heSBJIHVzZSBpdCA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPlRoZSBvcmlnaW5hbCBXaW5lIEZBUSwgd2hpY2ggdGhpcyBGQVEgd2FzIGJhc2VkIG9uLCB3YXMgY29weXJpZ2h0ICZjb3B5OyAxOTk1LTE5OTggRGF2aWQgR2FyZG5lci48L3BhcmE+CiAgICAgICAgPHBhcmE+SXQgbWF5IGJlIHJlcHJvZHVjZWQgYW5kIG1vZGlmaWVkIHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFdpbmUgaXRzZWxmLjwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkdlbmVyYWwtUXVlc3Rpb25zLWFib3V0LVdpbmUiPgogICAgICA8dGl0bGU+R2VuZXJhbCBRdWVzdGlvbnMgYWJvdXQgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgoKICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLVdpbmUtYW5kLXdoYXQtaXMtaXQtc3VwcG9zZWQtdG8iPgogICAgICAgIDxwYXJhPldoYXQgaXMgV2luZSBhbmQgd2hhdCBpcyBpdCBzdXBwb3NlZCB0byBkbyA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBhIHByb2dyYW0gd2hpY2ggYWxsb3dzIHRoZSBvcGVyYXRpb24gb2YgRE9TIGFuZCBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyAoV2luZG93cyAzLnggYW5kIFdpbjMyIGV4ZWN1dGFibGVzKSBvbiBVTklYLiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgbGlicmFyeSB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMgdXNpbmcKICAgICAgICAgIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyeSBtYXkgYWxzbyBiZSB1c2VkIAogICAgICAgICAgZm9yIHBvcnRpbmcgV2luMzIgY29kZSBpbnRvIG5hdGl2ZSBVTklYIGV4ZWN1dGFibGVzLCBvZnRlbgogICAgICAgICAgd2l0aG91dCBtYW55IGNoYW5nZXMgaW4gdGhlIHNvdXJjZS4gV2luZSBpcyBmcmVlIHNvZnR3YXJlLCAKICAgICAgICAgIGFuZCBpdHMgbGljZW5zZSAoY29udGFpbmVkIGluIHRoZSBmaWxlIExJQ0VOU0UKICAgICAgICAgIGluIGVhY2ggZGlzdHJpYnV0aW9uKSBpcyBMR1BMIHN0eWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtV2luZS1hbi1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+IElzIFdpbmUgYW4gZW11bGF0b3I/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9ydHVuYXRlbHksIG5vLiBXaW5lIHByb3ZpZGVzIGxvdy1sZXZlbCBiaW5hcnkgY29tcGF0aWJpbGl0eSwgCiAgICAgICAgICBidXQgY3VycmVudGx5IG9ubHkgZm9yIE9TZXMgcnVubmluZyBvbiBJbnRlbC1jb21wYXRpYmxlIGNoaXBzLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJBcmUtaGVyZS1hbnktYWx0ZXJuYXRpdmVzLXRvLVdpbmUiPgogICAgICAgIDxwYXJhPkFyZSB0aGVyZSBhbnkgYWx0ZXJuYXRpdmVzIHRvIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCB0aGVyZSBhcmUuIFlvdSBjYW4gdXNlIFZNV2FyZSB0byBydW4gYSBXaW5kb3dzIGluc3RhbGxhdGlvbgogICAgICAgICAgaW5zaWRlIGEgdmlydHVhbCBtYWNoaW5lLCBvciB1c2UgV2luNExpbiB0byBydW4gYSBzcGVjaWFsbHkgCiAgICAgICAgICBhZGFwdGVkIFdpbmRvd3MgdmVyc2lvbiBvbiBMaW51eC4gQm90aCBzb2x1dGlvbnMgY29zdCBtb25leSBmb3IgCiAgICAgICAgICBib3RoIHRoZSBzb2Z0d2FyZSBpdHNlbGYgYW5kIGEgV2luZG93cyBsaWNlbnNlLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgIE5vdGUgdGhhdCwgbGlrZSBXaW5lLCB0aGV5IGNhbiBvbmx5IHVzZSB0aGUgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdAogICAgICAgICB0aGUgdGFyZ2V0IHByb2dyYW1zIHdlcmUgb3JpZ2luYWxseSBjb21waWxlZCBmb3IgKHNlZSBiZWxvdykuCiAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRGlmZmVyZW5jZS1iZXR3ZWVuLVdpbmUtYW5kLWVtdWxhdG9ycyI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFdpbmUgYW5kIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHR3byBmcmVlIHg4NiBoYXJkd2FyZSBlbXVsYXRvcnM6CiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vYm9jaHMuc291cmNlZm9yZ2UubmV0Ij4gYm9jaHM8L3VsaW5rPiwgYW5kIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcGxleDg2Ij4gcGxleDg2PC91bGluaz4uCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBQbGV4ODYgaXMgdGhlIG9wZW5zb3VyY2UgZnJlZS1zb2Z0d2FyZSBhbHRlcm5hdGl2ZSBmb3IgVk1XYXJlLAoJICBWaXJ0dWFsUEMsIGFuZCBvdGhlciBJQS0zMiBvbiBJQS0zMiAiVmlydHVhbCBQQyBwcm9kdWN0cy4iIEl0CiAgICAgICAgICBjYW4gb25seSBydW4gb24gdGhlIElBLTMyIGFyY2hpdGVjdHVyZS4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvY2hzIGlzIGEgaGlnaGx5IHBvcnRhYmxlIG9wZW4gc291cmNlIElBLTMyICh4ODYpIFBDIGVtdWxhdG9yIAogICAgICAgICAgd3JpdHRlbiBpbiBDKyssIHRoYXQgcnVucyBvbiBtb3N0IHBvcHVsYXIgcGxhdGZvcm1zLiBJdCBpbmNsdWRlcyBlbXVsYXRpb24KICAgICAgICAgIG9mIHRoZSBJbnRlbCB4ODYgQ1BVLCBjb21tb24gSS9PIGRldmljZXMsIGFuZCBhIGN1c3RvbSBCSU9TLiBDdXJyZW50bHksIAogICAgICAgICAgYm9jaHMgY2FuIGJlIGNvbXBpbGVkIHRvIGVtdWxhdGUgYSAzODYsIDQ4NiBvciBQZW50aXVtIENQVS4gQm9jaHMgaXMgY2FwYWJsZSAKICAgICAgICAgIG9mIHJ1bm5pbmcgbW9zdCBPcGVyYXRpbmcgU3lzdGVtcyBpbnNpZGUgdGhlIGVtdWxhdGlvbiBpbmNsdWRpbmcgTGludXgsIAogICAgICAgICAgV2luZG93c64gOTUsIERPUywgYW5kIHJlY2VudGx5IFdpbmRvd3OuIE5UIDQuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb3RoIGFyZSBsaWNlbnNlZCB1bmRlciB0aGUgR1BMLiBCb2NocyBpcyBvbGRlciB0aGFuIHBsZXg4Niwgc2VlbXMgdG8gYmUgCiAgICAgICAgICBlYXNpZXIgdG8gaW5zdGFsbCwgYnV0IHBsZXg4NiB3aWxsIHJ1biBmYXN0ZXIgYmVjYXVzZSBwbGV4ODYgdXNlcyBhIHJlYWwgCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4gVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24gCiAgICAgICAgICBvZiBXaW5kb3dzIGluIG9yZGVyIHRvIHJ1biBXaW5kb3dzLgogICAgICAgPC9wYXJhPgoKICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoeS13b3VsZC1hbnlvbmUtd2FudC1XaW5lLVdpbmRvd3Mtc3VjayI+CiAgICAgICAgPHBhcmE+V2h5IHdvdWxkIGFueW9uZSB3YW50IFdpbmU/IERvZXNuJ3QgV2luZG93cyBzdWNrPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZpcnN0IFdpbmUgaXMgbm90IGFib3V0IHJ1bm5pbmcgV2luZG93cyBidXQgYWJvdXQgcnVubmluZyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvIGlmIGFsbCB5b3VyIGNvbXB1dGluZyBuZWVkcyBhcmUgZnVsZmlsbGVkIGJ5IG5hdGl2ZSBVbml4IAogICAgICAgICAgYXBwbGljYXRpb25zLCB0aGVuIHlvdSBkbyBub3QgbmVlZCBXaW5lIGFuZCBzaG91bGQgbm90IGJlIHVzaW5nCiAgICAgICAgICBpdC4gSG93ZXZlciwgaWYgeW91IGRlcGVuZCBvbiBvbmUgb3IgbW9yZSBvZiB0aGUgdGVucyBvZiAKICAgICAgICAgIHRob3VzYW5kcyBvZiBXaW5kb3dzIGFwcGxpY2F0aW9ucywgdGhlbiBXaW5lIGlzIHRoZSBiZXN0IHdheSB0bwogICAgICAgICAgdXNlIGl0IHdpdGhvdXQgZ2l2aW5nIHVwIG9uIFVuaXguIExldCdzIGxvb2sgYXQgdGhlIGFsdGVybmF0aXZlcwogICAgICAgICAgdG8gc2VlIHdoeToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbW9zdCBvYnZpb3VzIGFsdGVybmF0aXZlIGlzIHRvIGR1YWwtYm9vdC4gVGhpcyBpcyB0aGUgc29sdXRpb24KICAgICAgICAgIHRoYXQgcHJvdmlkZXMgdGhlIGJlc3QgY29tcGF0aWJpbGl0eS4gSG93ZXZlciBpdCByZXF1aXJlcyB0aGF0IHlvdQogICAgICAgICAgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgdGhlbiBkZWRpY2F0ZSBhIGdvb2QgY2h1bmsgb2YgeW91ciAKICAgICAgICAgIGhhcmQtZHJpdmUgdG8gV2luZG93cy4gQnV0IHRoZSB3b3JzdCBpcyB5ZXQgdG8gY29tZS4gRWFjaCB0aW1lIHlvdQogICAgICAgICAgd2lsbCB3YW50IHRvIHVzZSB0aGF0IGFwcGxpY2F0aW9uIHlvdSB3aWxsIGhhdmUgdG8gcmVib290IHRvIAogICAgICAgICAgV2luZG93cy4gVGhpcyBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIGV4dGVybmFsIGZhY3RvcnMgZGljdGF0ZQogICAgICAgICAgd2hlbiB5b3UgbXVzdCB1c2UgdGhpcyBhcHBsaWNhdGlvbiAoZS5nLiBjcmVkaXQgY2FyZCB0byBwcm9jZXNzLCAKICAgICAgICAgIGVtYWlsIHRvIHJldHJpZXZlIGZyb20gYSBMb3R1cyBOb3RlcyBzZXJ2ZXIpLiBUaGVuIHlvdSB3aWxsIGZpbmQKICAgICAgICAgIHlvdXJzZWxmIGZvcmNlZCB0byBjbG9zZSBhbGwgeW91ciBMaW51eCBhcHBsaWNhdGlvbnMganVzdCB0byBydW4KICAgICAgICAgIHRoYXQgb25lIFdpbmRvd3MgYXBwbGljYXRpb24uIFlvdSBtYXkgcXVpY2tseSBnZXQgdGlyZWQgb2YgdGhpcywgb3IKICAgICAgICAgIHdpbGwgZmluZCB0aGF0IHN1Y2ggYSBzaXR1YXRpb24gaXMgaW1wb3NzaWJsZSB0byBqdXN0aWZ5IGluIGEgCiAgICAgICAgICBidXNpbmVzcyBlbnZpcm9ubWVudC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbmV4dCBzb2x1dGlvbiBpcyB0byBpbnN0YWxsIHZpcnR1YWwgbWFjaGluZSBlbXVsYXRpb24gc29mdHdhcmUKICAgICAgICAgIHN1Y2ggYXMgVk1XYXJlLCBXaW40TGluIG9yIFBsZXg4Ni4gVGhlbiB5b3UgY2FuIHVzZSB3aW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpdGhvdXQgc3VmZmVyaW5nIHN1Y2ggYSBiaWcgZGlzcnVwdGlvbi4gQnV0IGl0IHN0aWxsCiAgICAgICAgICByZXF1aXJlcyB0aGF0IHlvdSBhY3F1aXJlIGEgV2luZG93cyBsaWNlbnNlIGFuZCBkZWRpY2F0ZSBhcyBtdWNoIAogICAgICAgICAgZGlzayBzcGFjZSB0byBXaW5kb3dzLiBGdXJ0aGVybW9yZSB5b3Ugd2lsbCBwYXkgZm9yIHRoZSBhZGRlZCAKICAgICAgICAgIGNvbnZlbmllbmNlOiBpZiB1c2luZyBWTVdhcmUgb3IgV2luNExpbiB5b3UgaGF2ZSB0byBidXkgYW5vdGhlciAKICAgICAgICAgIGxpY2Vuc2UsIGFuZCBtb3JlIGltcG9ydGFudGx5IHlvdSBub3cgaGF2ZSB0byBkZWRpY2F0ZSBhIGdvb2QgY2h1bmsKICAgICAgICAgIG9mIHlvdXIgY29tcHV0ZXIncyBtZW1vcnkgdG8gdGhlIHZpcnR1YWwgbWFjaGluZS4gUGVyZm9ybWFuY2Ugd2lsbAogICAgICAgICAgdGFrZSBhIHNpZ25pZmljYW50IGhpdCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXNpbmcgV2luZSBsZXRzIHlvdSBhdm9pZCBhbGwgb2YgdGhhdCBvdmVyaGVhZDogV2luZG93cyBsaWNlbnNlLAogICAgICAgICAgaGFyZC1kcml2ZSBzcGFjZSByZXF1aXJlZCBieSBXaW5kb3dzLCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlIGhpdCAKICAgICAgICAgIHRha2VuIGJ5IGVtdWxhdGVkIHZpcnR1YWwgbWFjaGluZXMuIE5vdyB5b3UgY2FuIHN0YXJ0IHlvdXIgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb24gc3RyYWlnaHQgZnJvbSB5b3VyIHJlZ3VsYXIgZGVza3RvcCBlbnZpcm9ubWVudCwgcGxhY2UKICAgICAgICAgIHRoYXQgYXBwbGljYXRpb24ncyB3aW5kb3cgc2lkZSBieSBzaWRlIHdpdGggbmF0aXZlIGFwcGxpY2F0aW9uIAogICAgICAgICAgd2luZG93cywgY29weS9wYXN0ZSBmcm9tIG9uZSB0byB0aGUgb3RoZXIsIGFuZCBydW4gaXQgYWxsIGF0IGZ1bGwgc3BlZWQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMgYWxzbyBhIHByZXR0eSB2aXRhbCBwYXJ0IG9mIG1pZ3JhdGluZyBhIGxhcmdlIG9yZ2FuaXNhdGlvbiwKICAgICAgICAgIHlvdSBjYW4ndCBjaGFuZ2UgYSA1MDAwIGRlc2t0b3Agc2V0dXAgb3Zlcm5pZ2h0IHdpdGhvdXQgYSBsb3Qgb2Ygcmlzay4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoaWNoLW9uZS1vZi10aGUtZGlmZmVyZW50LVdpbmUtcGFja2FnZXMiPgogICAgICAgIDxwYXJhPldoaWNoIG9uZSBvZiB0aGUgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMgb3V0IHRoZXJlIGlzIGdvb2QgZm9yIG1lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnRseSB0aGVyZSBpcyBhIGJyb2FkIHNlbGVjdGlvbiBvZiBkaWZmZXJlbnQgV2luZSBwYWNrYWdlcy92ZXJzaW9uczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHZhcmlhYmxlbGlzdD4KCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5XaW5lPC91bGluaz48L3Rlcm0+CiAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgdGhlICJzdGFuZGFyZCIgc291cmNlIGRpc3RyaWJ1dGlvbiBvZiBXaW5lLiBJdHMgbGljZW5zZSBpcyAKICAgICAgICAgICAgICBMR1BMLCBpdCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly9yZXdpbmQuc291cmNlZm9yZ2UubmV0Ij5SZVdpbmU8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBhIGZvcmtlZCBXaW5lIHRyZWUgdGhhdCBnb3QgY3JlYXRlZCB3aGVuIFdpbmUgY2hhbmdlZCBpdHMKICAgICAgICAgICAgICBsaWNlbnNlIGZyb20gWDExIHRvIHRoZSBtb3JlIHJlc3RyaWN0aXZlIExHUEwsIGluIG9yZGVyIHRvIGxldCAKICAgICAgICAgICAgICBwZW9wbGUgY29udGludWUgdG8gbWFpbnRhaW4gYW4gWDExIGxpY2Vuc2VkIFdpbmUgdmVyc2lvbi4gSXRzIAogICAgICAgICAgICAgIGxpY2Vuc2UgaXMgWDExLCBpdCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbSI+VHJhbnNnYW1pbmcncyBXaW5lWDwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIFRyYW5zR2FtaW5nJ3MgV2luZSB2ZXJzaW9uIHNwZWNpYWxseSBzdWl0ZWQgZm9yIGdhbWVzLiAKICAgICAgICAgICAgICBJdCBpbmNsdWRlcyBEaXJlY3QzRCBzdXBwb3J0ICh0aHVzIGl0cyBEaXJlY3RYIHN1cHBvcnQgaXMgbXVjaAogICAgICAgICAgICAgIG1vcmUgY29tcGxldGUgdGhhbiBXaW5lJ3MpIGFuZCBjb3B5cHJvdGVjdGlvbiBzdXBwb3J0LiBJdHMgbGljZW5zZQogICAgICAgICAgICAgIGlzIEFGUEwsIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLCBidXQgCiAgICAgICAgICAgICAgdGhlIGJpbmFyeSBwYWNrIGFnZXMgdGhhdCBpbmNsdWRlIGNvcHkgcHJvdGVjdGlvbiBzdXBwb3J0IGFuZCBnb29kCiAgICAgICAgICAgICAgc3VwcG9ydCBhcmUgb25seSBmb3Igc3Vic2NyaWJlZCBjdXN0b21lcnMgKCQ1L21vbnRoKS4gCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd2luZS5jb2Rld2VhdmVycy5jb20iPkNvZGV3ZWF2ZXJzJyBXaW5lIHByZXZpZXc8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBpcyBhIHNwZWNpYWxseSBwYWNrYWdlZCBhbmQgbW9yZSBzdGFibGUvb2xkZXIgdmVyc2lvbiBvZiBXaW5lCiAgICAgICAgICAgICAgd2hpY2ggaGFzIGEgbmljZSBzZXR1cCBmb3IgZWFzeSBpbnN0YWxsYXRpb24uIExpY2Vuc2UgWDExLCBmcmVlIAogICAgICAgICAgICAgIGRvd25sb2FkLiAKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL2Nyb3Nzb3Zlci8iPkNvZGV3ZWF2ZXJzJyBDcm9zc292ZXIgUGx1Z2luPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFNwZWNpYWwgV2luZSBpbnN0YWxsYXRpb24gdG8gYmUgdXNlZCBmb3IgcnVubmluZyB3aW4zMiBicm93c2VyIAogICAgICAgICAgICAgIHBsdWdpbnMgc3VjaCBhcyBlLmcuIFF1aWNrdGltZSBpbiBMaW51eCBicm93c2Vycy4gQ29zdHMgJDI0Ljk1LiAKICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZXdlYXZlcnMnIENyb3Nzb3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIHdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj5PdGhlciBwYWNrYWdlZCB2ZXJzaW9ucyBvZiBXaW5lPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFZhcmlvdXMgd2luZSBwYWNrYWdlcyBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZSwgdG8gYmUgZm91bmQgYXQgCiAgICAgICAgICAgICAgV2luZSBIUS4gVGhleSdyZSBub3Qgb2ZmaWNpYWxseSBwYWNrYWdlZCBieSBXaW5lIEhRLCBhbmQgYXMgc3VjaCAKICAgICAgICAgICAgICBtYXkgaGF2ZSBzb21lIGNvbmZpZ3VyYXRpb24gaW5jb25zaXN0ZW5jaWVzLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0cy10aGUtaGlzdG9yeS1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0J3MgdGhlIGhpc3Rvcnkgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgV2luZSBwcm9qZWN0IHN0YXJ0ZWQgaW4gMTk5MyBhcyBhIHdheSB0byBzdXBwb3J0IHJ1bm5pbmcgV2luZG93cyAzLjEKICAgICAgICAgIHByb2dyYW1zIG9uIExpbnV4LiBCb2IgQW1zdGFkdCB3YXMgdGhlIG9yaWdpbmFsIGNvb3JkaW5hdG9yLCBidXQgdHVybmVkCiAgICAgICAgICBpdCBvdmVyIGZhaXJseSBlYXJseSBvbiB0byBBbGV4YW5kcmUgSnVsbGlhcmQsIHdobyBoYXMgcnVuIGl0IGV2ZXIgCiAgICAgICAgICBzaW5jZS4gQSA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+bmV3c2dyb3VwPC91bGluaz4KICAgICAgICAgIHdhcyBjcmVhdGVkIGluIEp1bHkgMTk5NC4gT3ZlciB0aGUgeWVhcnMsIHBvcnRzIGZvcgogICAgICAgICAgb3RoZXIgVW5peGVzIGhhdmUgYmVlbiBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciBXaW4zMiBhcyBXaW4zMiAKICAgICAgICAgIGFwcGxpY2F0aW9ucyBiZWNhbWUgcG9wdWxhci4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC5zaHRtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQuc2h0bWw8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZG93bmxvYWQuc2h0bWwiPnRoZSBEb3dubG9hZCBwYWdlPC91bGluaz4KICAgICAgICAgIGZvciBzb21lIG9mIHRoZXNlIGNob2ljZXMpLCB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgZ2V0dGluZyAKICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbiBieSB3YXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGVuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gT2N0b2JlciAzMSwgMjAwMgogICAgICAgICAgd2FzIGNhbGxlZCBXaW5lLTIwMDIxMDMxLnRhci5nei4gUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLiBJZgogICAgICAgICAgeW91IGFyZSBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIGFuZCBhcHBseSAKICAgICAgICAgIGp1c3QgdGhlIGN1cnJlbnQgcGF0Y2ggZmlsZSByYXRoZXIgdGhhbiB0aGUgZW50aXJlIG5ldyBkaXN0cmlidXRpb24uCiAgICAgICAgICBUaGUgcGF0Y2ggZmlsZW5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCI+CiAgICAgICAgICBSZWFkLW9ubHkgQ1ZTPC91bGluaz4gYWNjZXNzIGlzIGFsc28gYXZhaWxhYmxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtU3RhdHVzLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgU3RhdHVzIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgbWlkIDIwMDIsIFdpbmUgY29uc2lzdHMgb2Ygb3ZlciAxIG1pbGxpb24gbGluZXMgb2YgQyBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gMzAwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Fib3V0L2luZGV4LnBocD9zdGF0dXMiPgogICAgICAgICAgU3RhdHVzIHBhZ2U8L3VsaW5rPiBmb3IgYSBnbG9iYWwgdmlldyBvbiBXaW5lJ3MgaW1wbGVtZW50YXRpb24gcHJvZ3Jlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlbi13aWxsLVdpbmUtYmUtZmluaXNoZWQiPgogICAgICAgIDxwYXJhPldoZW4gd2lsbCBXaW5lIGJlIGZpbmlzaGVkPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExhcmdlIHNvZnR3YXJlIHByb2plY3RzIGFyZSBuZXZlciBmaW5pc2hlZCwgb25seSByZWxlYXNlZC4gSW4gYW55CiAgICAgICAgICBjYXNlIFdpbmUgaXMgY2hhc2luZyBhIG1vdmluZyB0YXJnZXQgc2luY2UgZXZlcnkgbmV3IHJlbGVhc2Ugb2YgCiAgICAgICAgICBXaW5kb3dzIGNvbnRhaW5zIG5ldyBBUEkgY2FsbHMgb3IgdmFyaWF0aW9ucyB0byB0aGUgZXhpc3Rpbmcgb25lcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZWNhdXNlIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIGJ5IHZvbHVudGVlcnMsIGl0IGlzIGRpZmZpY3VsdCB0bwogICAgICAgICAgcHJlZGljdCB3aGVuIGl0IHdpbGwgYmUgcmVhZHkgZm9yIGdlbmVyYWwgcmVsZWFzZS4gQnV0IGR1ZSB0byB0aGUKICAgICAgICAgIG11Y2ggaW5jcmVhc2VkIGludGVyZXN0IGJ5IGNvbXBhbmllcyBpbiBwb3J0aW5nIGFwcHMgdmlhIFdpbmUsIFdpbmUKICAgICAgICAgIGRldmVsb3BtZW50IGlzIGNvbnN0YW50bHkgZ2V0dGluZyBtb3JlIGFuZCBtb3JlIGFjdGl2ZS4gUmlnaHQgbm93CiAgICAgICAgICB3ZSBhcmUgd29ya2luZyBvbiByZWxlYXNpbmcgV2luZSAwLjkgZHVyaW5nIDIwMDMKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaG8taXMtcmVzcG9uc2libGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPldobydzIHJlc3BvbnNpYmxlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYXZhaWxhYmxlIHRoYW5rcyB0byB0aGUgd29yayBvZiBtYW55IHBlb3BsZS4gUGxlYXNlIHNlZSB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvQVVUSE9SUyI+QVVUSE9SUzwvdWxpbms+CiAgICAgICAgICBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIHRoZSBjb21wbGV0ZSBsaXN0LiBTb21lIGNvbXBhbmllcyB0aGF0CiAgICAgICAgICBhcmUgb3IgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggV2luZSBkZXZlbG9wbWVudCBhcmUgQ29kZXdlYXZlcnMsCiAgICAgICAgICBUcmFuc0dhbWluZywgQ29yZWwsIGFuZCBNYWNhZGFtaWFuLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImZvbGtzLXdoby1jb250cmlidXRlZC1tb25leS1vci1lcXVpcG1lbnQiPgogICAgICAgIDxwYXJhPldobyBhcmUgdGhlIGZvbGtzIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGNvbnRyaWJ1dGVkIG1vbmV5IG9yIGVxdWlwbWVudCB0byB0aGUgV2luZSBwcm9qZWN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBlb3BsZSBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBnaXZlbiBnZW5lcm91cyBjb250cmlidXRpb25zIG9mCiAgICAgICAgICBtb25leSwgZXF1aXBtZW50LCBvciBsaWNlbnNlcywgaW5jbHVkZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+RGF2aWQgTC4gSGFycGVyPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+Qm9iIEhlcHBsZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPk1hcmsgQS4gSG9ydG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+S2V2aW4gUC4gTGF3dG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+VGhlIFN5bnRyb3B5IEluc3RpdHV0ZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkphbWVzIFdvdWxmZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVk1XYXJlIEluYy4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj4KICAgICAgICAgICAgIChodHRwOi8vd3d3LnZtd2FyZS5jb20pPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDb3JlbCA8dWxpbmsgdXJsPSJodHRwOi8vbGludXguY29yZWwuY29tIj4KICAgICAgICAgICAgIChodHRwOi8vbGludXguY29yZWwuY29tKTwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LXVuZG9jdW1lbnRlZC1BUElzLWFyZS1ub3QtdW5kZXJzdG9vZCI+CiAgICAgICAgPHBhcmE+V2hhdCB1bmRvY3VtZW50ZWQgQVBJcyAvIGludGVyZmFjZXMgYXJlIG5vdCB1bmRlcnN0b29kPyBXb3VsZAogICAgICAgICAgICAgIHNlZWluZyBNaWNyb3NvZnQgc291cmNlIGhlbHA/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJlc3Qgd291bGQgYmUgaWYgdGhlIFdpbmRvd3MgQVBJIHdhcyBmdWxseSBkb2N1bWVudGVkLCBzbyBXaW5lCiAgICAgICAgICBjb3VsZCBiZSBhIHBlcmZlY3QgImNsZWFuLXJvb20iIGltcGxlbWVudGF0aW9uLiBTZWVpbmcgdGhlIHNvdXJjZQogICAgICAgICAgY29kZSBtaWdodCBtYWtlIGl0IGhhcmRlciB0byBwcm92ZSB0aGF0IG5vIGNvcHlyaWdodCB2aW9sYXRpb25zIGhhdmUKICAgICAgICAgIHRha2VuIHBsYWNlLiBUaGF0IHNhaWQsIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9mdGVuIGJhZCwgbm9uZXhpc3RlbnQsCiAgICAgICAgICBhbmQgZXZlbiBtaXNsZWFkaW5nIHdoZXJlIGl0IGV4aXN0cywgc28gYSBmYWlyIGFtb3VudCBvZiByZXZlcnNlCiAgICAgICAgICBlbmdpbmVlcmluZyBoYXZlIGJlZW4gbmVjZXNzYXJ5LCBwYXJ0aWN1bGFybHkgaW4gdGhlIHNoZWxsIChFeHBsb3JlcikKICAgICAgICAgIGludGVyZmFjZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLVRyYW5zR2FtaW5ncy1sYXN0LXBhdGNoLWluY2x1ZGVkLWluLVdpbmUiPgogICAgICAgIDxwYXJhPklzIFRyYW5zR2FtaW5nJ3MgbGF0ZXN0IHBhdGNoIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBXaW5lIHJlbGVhc2U/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGl0J3Mgbm90LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyYW5zR2FtaW5nIG1ha2UgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UuIFRodXMgdGhleSAKICAgICAgICAgIHN1Ym1pdHRlZCB0aGVpciBEaXJlY3REcmF3IGFuZCBzb21lIERpcmVjdFNvdW5kIHdvcmssIGJ1dCB0aGV5IHdpbGwKICAgICAgICAgIG5vdCBzdWJtaXQgdGhlaXIgT3BlbkdMIHdyYXBwZXIgYmFzZWQgRGlyZWN0M0Qgc3VwcG9ydC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLXRoZXJlLWJlLWEtV2luZG93cy12ZXJzaW9uLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgdGhlcmUgYmUgYSBXaW5kb3dzIHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTb21lIHBlb3BsZSBhcmUgd29ya2luZyBvbiBnZXR0aW5nIFdpbmUgY29kZSB0byBjb21waWxlIG9uIFdpbmRvd3MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+IAogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBDeWd3aW4gPHVsaW5rIHVybD0iaHR0cDovd3d3LmN5Z3dpbi5jb20iPgogICAgICAgICAgICAgIChodHRwOi8vd3d3LmN5Z3dpbi5jb20vKTwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFJlYWN0b3MgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5yZWFjdG9zLmNvbS8iPgogICAgICAgICAgICAgKGh0dHA6Ly93d3cucmVhY3Rvcy5jb20vKTwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSdzIHNvbWUgcHJvZ3Jlc3MsIHNvIGEgV2luZSB2ZXJzaW9uIHRoYXQncyB1c2FibGUgb24gV2luZG93cwogICAgICAgICAgbWlnaHQgYmUgYXZhaWxhYmxlIGF0IHNvbWUgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJXaGF0LWRvLUktbmVlZC1pbi1vcmRlci10by11c2UtV2luZSI+CiAgICAgIDx0aXRsZT5XaGF0IGRvIEkgbmVlZCBpbiBvcmRlciB0byB1c2UgV2luZT88L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVbmRlci13aGF0LXBsYXRmb3Jtcy13aWxsLVdpbmUtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVuZGVyIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm0ocykgYW5kIG9wZXJhdGluZyBzeXN0ZW0ocykgd2lsbAogICAgICAgICAgV2luZShMaWIpIHJ1bj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBzcGVjaWZpY2FsbHkgdG8gcnVuIG9uIHRoZSBJbnRlbCB4ODYgY2xhc3MKICAgICAgICAgIG9mIENQVXMgdW5kZXIgY2VydGFpbiBVTklYZXMgdGhhdCBydW4gb24gdGhlIHg4NiBwbGF0Zm9ybS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOZXRCU0QsIE9wZW5CU0QsIFVuaXh3YXJlLCBhbmQgU0NPIE9wZW5TZXJ2ZXIgNSB3b3JrZWQgYXQgb25lIHRpbWUsCiAgICAgICAgICBidXQgV2luZSBub3cgcmVxdWlyZXMga2VybmVsLWxldmVsIHRocmVhZHMgd2hpY2ggYXJlIG5vdCBjdXJyZW50bHkgCiAgICAgICAgICBhdmFpbGFibGUgKG9yIHVuZGVyc3Rvb2QgYnkgdGhlIFdpbmUgdGVhbSkgaW4gdGhvc2UgcGxhdGZvcm1zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGRldmVsb3BtZW50IHRlYW0gaG9wZXMgdG8gYXR0cmFjdCB0aGUgaW50ZXJlc3Qgb2Ygb3RoZXIKICAgICAgICAgIGNvbW1lcmNpYWwgVU5JWCBhbmQgVU5JWCBjbG9uZSB2ZW5kb3JzIGFzIHdlbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVPUzogcG9ydGluZyBlZmZvcnRzIHVzZWQgdG8gYmUgcHJldHR5IHN0cm9uZywgYnV0IEJlT1MgaGFzIHNldmVyZQogICAgICAgICAgbGltaXRhdGlvbnMgaW4gVW5peCBjYWxsIHN1cHBvcnQsIHNvIGEgcG9ydCB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICBoYXBwZW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRnJlZUJTRDogU2hvdWxkIHdvcmssIHdpdGggbGltaXRhdGlvbnMgaW4gc3BlY2lmaWMgYXJlYXMgKG1haW5seSAKICAgICAgICAgIG1pc3NpbmcgZGV2aWNlL2hhcmR3YXJlIHN1cHBvcnQpCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGludXgveDg2OiBXT1JLUy4gSWYgaXQgZG9lc24ndCwgWW91IG1heSBhbHNvIHdhbnQgdG8gc2VlIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9mb20tbWV0YS9jYWNoZS8xOS5odG1sIj5XaW5lCiAgICAgICAgICBUcm91Ymxlc2hvb3RpbmcgR3VpZGU8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtbWluaW11bS1DUFUtbXVzdC1JLWhhdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hhdCBtaW5pbXVtIENQVSBtdXN0IEkgaGF2ZSBpbiBteSBjb21wdXRlciB0byBiZSBhYmxlIHRvIHJ1biBXaW5lIAogICAgICAgICAgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFdpbmUgYW5kIFdpbmVsaWIgaGVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHdvbid0IHJ1biBvbiBhbnkgeDg2IENQVSBsZXNzIHRoYW4gYW4gODAzODYgZHVlIHRvIGFkZHJlc3MKICAgICAgICAgIG1hbmFnZW1lbnQgbGltaXRhdGlvbnMKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBrbm93biB0byBhbHNvIHdvcmsgaW4gdGhlIDgwNDg2IGFuZCB1cHdhcmRzIGNvbXBhdGlibGUgQ1BVcy4KICAgICAgICAgIFRoZSBiYXNpYyB0ZXN0IGlzLCBpZiB5b3UgY2FuIHJ1biBYMTEgbm93LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyB1bmRlciBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBhbHdheXMsIHRoZSBmYXN0ZXIgeW91ciBDUFUsIHRoZSBiZXR0ZXIuIEhhdmluZyBhIG1hdGggY29wcm9jZXNzb3IKICAgICAgICAgIGlzIHVuaW1wb3J0YW50LiBIb3dldmVyLCBoYXZpbmcgYSBncmFwaGljcyBhY2NlbGVyYXRlZCB2aWRlbyBjYXJkCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgWCB3aWxsIGhlbHAgZ3JlYXRseQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1kaXNrLXNwYWNlLXdpbGwtV2luZS10YWtlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSG93IG11Y2ggZGlzayBzcGFjZSB3aWxsIHRoZSBXaW5lIHNvdXJjZSBjb2RlIGFuZCBiaW5hcmllcyB0YWtlIG9uIG15CiAgICAgICAgIGhhcmQgZHJpdmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG5lZWQgYXBwcm94aW1hdGVseSAyNTAgbWVnYWJ5dGVzIG9mIGZyZWUgaGFyZCBkcml2ZSBzcGFjZSB0bwogICAgICAgICAgc3RvcmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLiBXaW5lIGFsc28gbmVlZHMgYWJvdXQgMTggbWVncyBpbgogICAgICAgICAgeW91ciAvdG1wIGRpcmVjdG9yeS4gQW5kIGFib3V0IDUwIE1CIGFyZSBuZWVkZWQgdG8gZG8gYSBtYWtlIGluc3RhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1vdGhlci1zb2Z0d2FyZS1kby1JLW5lZWQtdG8tY29tcGlsZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGF0IG90aGVyIHNvZnR3YXJlIGRvIEkgbmVlZCB0byBoYXZlIGluc3RhbGxlZCB0byBjb21waWxlIGFuZCBydW4gCiAgICAgICAgICBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZGV2ZWxvcG1lbnQgdG9vbHMgbmVlZCB0byBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBXaW5lLgogICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBzZXZlcmFsIGRpc3RyaWJ1dGlvbnMgaXMgaW5jbHVkZWQgaW4KICAgICAgICAgIHRoZSBSRUFETUUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgKGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FKTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIHJ1biBXaW5lLCB5b3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBpbGVkIFdpbmUgYmluYXJ5PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QSBwcm9wZXJseSBjb25maWd1cmVkIHdpbmUuY29uZiBmaWxlIChvciB+Ly53aW5lcmMgZmlsZSk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BbiBpbnN0YWxsZWQgYW5kIHdvcmtpbmcgWCBXaW5kb3cgc3lzdGVtPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+U29tZSBXaW5kb3dzIHByb2dyYW1zIHRvIHRlc3Q8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtUkFNLWRvLUktbmVlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIb3cgbXVjaCBSQU0gZG8gSSBuZWVkIHRvIGhhdmUgb24gbXkgVU5JWCBzeXN0ZW0gdG8gYmUgYWJsZSB0byBydW4gCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHJ1biBYIHNtb290aGx5IG9uIHlvdXIgVU5JWCBzeXN0ZW0gbm93LCB5b3Ugc2hvdWxkIGJlIAogICAgICAgICAgYWJsZSB0byBydW4gV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMganVzdCBmaW5lIHRvbywgZGVwZW5kaW5nCiAgICAgICAgICBvbiBob3cgbWVtb3J5IGh1bmdyeSB0aGUgYXBwbGljYXRpb24gaXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBXaW5lIHdvcmtzdGF0aW9uIHdpbGwgd29yayB3aXRoIDE2IG1lZ2FieXRlcyBvZiBSQU0gYW5kIGEgMTYgCiAgICAgICAgICBtZWdhYnl0ZSBzd2FwIHBhcnRpdGlvbiBhcyBsb25nIGFzIHlvdSBoYXZlIGEgcmVhc29uYWJsZSBncmFwaGljcyAKICAgICAgICAgIGNhcmQuIE1vc3QgYXBwbGljYXRpb25zIHdpbGwgcnVuIHJlYXNvbmFibHkgd2l0aCA2NC82NCBNYiwgCiAgICAgICAgICBpbnRlcmFjdGl2ZSBnYW1lcyBhcmUgbGlrZWx5IHRvIG5lZWQgbW9yZS4gWW91IGNhbiBydW4gV2luZSB3aXRoIDgvOCwKICAgICAgICAgIGJ1dCBpdCBpcyBnb2luZyB0byBiZSB1bnVzYWJseSBzbG93IGFuZCB2ZXJ5IGNvbnN0cmFpbmluZyBvbiB0aGUgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgeW91IGNhbiBydW4uIElmIHlvdSB3aXNoIHRvIGJlIHBhcnQgb2YgdGhlIGRldmVsb3BtZW50CiAgICAgICAgICB0ZWFtIGFuZCBwcm9ncmFtIFdpbmUgaXRzZWxmLCBiZSBhd2FyZSB0aGF0IHRoZSBkZWJ1Z2dlciBpcyByYXRoZXIgCiAgICAgICAgICBtZW1vcnkgaW50ZW5zaXZlLiBTb21lIGhhdmUgc3VnZ2VzdGVkIHRoYXQgNjQgbWVnYWJ5dGVzIGlzIHRoZQogICAgICAgICAgbWluaW11bSBSQU0gbmVlZGVkIGZvciBXaW5lIGRldmVsb3BtZW50LCBhbHRob3VnaCBzb21lIGFyZSBhYmxlIHRvIAogICAgICAgICAgd29yayAoYWxiZWl0IHNsb3dseSkgd2l0aCAyNCBtZWdhYnl0ZXMgb2YgcGh5c2ljYWwgUkFNIGFuZCBsb3RzIG9mCiAgICAgICAgICBzd2FwIHNwYWNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1sb25nLWRvZXMtV2luZS10YWtlLXRvLWJ1aWxkIj4KICAgICAgICA8cGFyYT5Ib3cgbG9uZyBkb2VzIFdpbmUgdGFrZSB0byBidWlsZDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgZ2V0dGluZyB0byBiZSBxdWl0ZSBsYXJnZSwgYW5kIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCB0YWtlcyBhCiAgICAgICAgICBsb3Qgb2YgcHJvY2Vzc2luZy4gQXMgb2YgU2VwdGVtYmVyIDIwMDIsIGNvbXBpbGUgdGltZXMgd2VyZSBhcm91bmQgMjAKICAgICAgICAgIG1pbnV0ZXMgb24gYW4gQXRobG9uIDEyMDAgd2l0aCA2NDAgTWIgYW5kIDQ1LTUwIG1pbnV0ZXMgb24gYSBDeXJpeCAKICAgICAgICAgIDMwMCB3aXRoIDY0IE1iLiBJZiB5b3UgaGF2ZSBhIENWUyBjb3B5LCB5b3UgbWF5IG5vdCBuZWVkIHRvIHJlYnVpbGQKICAgICAgICAgIHRoZSB3aG9sZSB0aGluZyBldmVyeSB0aW1lIHlvdSB1cGRhdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtYS1Ecml2ZXNwYWNlZC1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvciBTdGFja2VyZWQgRE9TIHBhcnRpdGlvbi4gQ2FuIAogICAgICAgICAgV2luZSBydW4gTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHN1Y2ggYSBwYXJ0aXRpb24/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBidXQgb25seSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyB0aG9zZSB0eXBlcwogICAgICAgICAgb2YgZHJpdmVzLlRoZXJlIGlzIGEgTGludXggZmlsZSBzeXN0ZW0gZHJpdmVyIGNhbGxlZCBkbXNkb3MgdGhhdCB3aWxsCiAgICAgICAgICBhbGxvdyByZWFkL3dyaXRlIGFjY2VzcyB0aHJvdWdoIERvdWJsZXNwYWNlZCBhbmQgRHJpdmVzcGFjZSAxLjAgCiAgICAgICAgICBkcml2ZXMuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCBzdXBwb3J0cyBtb3VudGluZyBET1MgNi4wIGFuZCA2LjIgCiAgICAgICAgICBEb3VibGVzcGFjZWQsIERPUyA2LjIyIERyaXZlc3BhY2VkLCBhbmQgV2luZG93cyA5NSBEb3VibGVzcGFjZWQgCiAgICAgICAgICBjb21wcmVzc2VkIHBhcnRpdGlvbnMgKHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB3b3JrcyBmaW5lLCBidXQgd3JpdGUgCiAgICAgICAgICBhY2Nlc3MgaXMgc2xvdykuIEl0IGNhbiBiZSBmb3VuZCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLyI+CiAgICAgICAgICBmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlIHN5c3RlbXMvZG9zZnMvPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEby1JLW5lZWQtdG8taGF2ZS1hLURPUy1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPkRvIEkgbmVlZCB0byBoYXZlIGEgRE9TIHBhcnRpdGlvbiBvbiBteSBzeXN0ZW0gdG8gdXNlIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGRvIG5vdCBuZWVkIGEgbGljZW5zZWQgYW5kIGluc3RhbGxlZCBjb3B5IG9mIERPUyBvciBNUyBXaW5kb3dzIHRvCiAgICAgICAgICBpbnN0YWxsLCBjb25maWd1cmUgYW5kIHJ1biBXaW5lLiBIb3dldmVyLCBXaW5lIGhhcyB0byBiZSBhYmxlIHRvIAogICAgICAgICAgJ3NlZScgYW4gTVMgV2luZG93cyBiaW5hcnkgKGkuZS4gYXBwbGljYXRpb24pIGlmIGl0IGlzIHRvIHJ1biBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1NUy1XaW5kb3dzLW5lZWQtdG8tYmUtaW5zdGFsbGVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgTVMgV2luZG93cyBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoYXQgcGFydGl0aW9uIGluIG9yZGVyIHRvCiAgICAgICAgICBydW4gTVMgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZm9sa3MgaGF2ZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGFuZCBydW4gc29tZSBzbWFsbCBwcm9ncmFtcwogICAgICAgICAgaW4gdGhlaXIgVU5JWCBmaWxlc3lzdGVtIHdpdGhvdXQgaGF2aW5nIGEgRE9TIHBhcnRpdGlvbiBvciBNUyAKICAgICAgICAgIFdpbmRvd3MuIEhvd2V2ZXIsIGluIG1hbnkgY2FzZXMgeW91IG5lZWQgYSBkaXJlY3RvcnkgYW5kIGZpbGUgCiAgICAgICAgICBpbmZyYXN0cnVjdHVyZSB0aGF0IGlzIHNpbWlsYXIgdG8gYW4gZXhpc3RpbmcgV2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICBTb21lIGFwcGxpY2F0aW9ucycgaW5zdGFsbGF0aW9uIHByb2dyYW1zIHdhbnQgdG8gZGlzdHJpYnV0ZSBzb21lIG9mCiAgICAgICAgICB0aGUgcGFja2FnZSdzIGZpbGVzIGludG8gdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBpbiBvcmRlciB0byBydW4sIGFuZCB1bmxlc3MgdGhlc2UgZXhpc3Qgb24geW91ciBVTklYIAogICAgICAgICAgZmlsZSBzeXN0ZW0sIHRob3NlIHByb2dyYW1zIHdpbGwgbm90IGluc3RhbGwgY29ycmVjdGx5IGFuZCBwcm9iYWJseQogICAgICAgICAgd2lsbCBub3QgcnVuIHdlbGwsIGlmIGF0IGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24gd2l0aCBNUyBXaW5kb3dzIGluc3RhbGxlZCBpbiBpdCwgbWFrZQogICAgICAgICAgc3VyZSB0aGF0IHlvdXIgVU5JWCBzeXN0ZW0gY2FuICdzZWUnIHRoaXMgcGFydGl0aW9uIChjaGVjayB5b3VyIAogICAgICAgICAgL2V0Yy9mc3RhYiBmaWxlIG9yIG1vdW50IHRoZSBwYXJ0aXRpb24gbWFudWFsbHkpIHNvIHRoYXQgV2luZSBjYW4KICAgICAgICAgIHJ1biB0aGUgTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHRoZSBET1MgcGFydGl0aW9uLiBUbyBydW4KICAgICAgICAgIHdpdGhvdXQgYSBET1MgcGFydGl0aW9uLCB5b3UgbmVlZCB0byBzZXQgYSBVTklYIHBhdGggdG8gYmUgeW91ciAKICAgICAgICAgIGRyaXZlIEMsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIHBvaW50IHRvIHNvbWUgcGxhY2UgdGhhdCBhY3R1YWxseSBleGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSwgY29waWVkIGZyb20gYSBtYWNoaW5lIHdoaWNoIGhhcyBubyBET1MgcGFydGl0aW9uCiAgICAgICAgICBidXQgc3VjY2Vzc2Z1bGx5IHJ1bnMgV2luZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KICAgIFtEcml2ZSBDXSAgICAgIAogICAgICAgICAgUGF0aD0vdmFyL2xpYi93aW5lCiAgICAgICAgICBUeXBlPWhkCiAgICAgICAgICBMYWJlbD1NUy1ET1MKICAgICAgICAgIEZpbGVzeXN0ZW09d2luOTUKICAgIFt3aW5lXQogICAgICAgICAgV2luZG93cz1jOlx3aW5kb3dzCiAgICAgICAgICBTeXN0ZW09Yzpcd2luZG93c1xzeXN0ZW0KICAgICAgICAgIFRlbXA9ZTpcCiAgICAgICAgICBQYXRoPWM6XHdpbmRvd3M7Yzpcd2luZG93c1xzeXN0ZW07YzoKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSW4gPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93czwvZmlsZW5hbWU+LCB5b3Ugd2lsbCBuZWVkIHRvCiAgICAgICAgIGluc3RhbGwgYSA8ZmlsZW5hbWU+d2luLmluaTwvZmlsZW5hbWU+IGNvbmZpZyBmaWxlIHRoYXQgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgb24gYSB0eXBpY2FsIE1TIFdpbmRvd3MgMy4xIG1hY2hpbmUuIFRoZSBkaXJlY3RvcnkKICAgICAgICAgPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93cy9zeXN0ZW08L2ZpbGVuYW1lPiBzaG91bGQgZXhpc3QsIGJ1dAogICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29udGFpbiBhbnl0aGluZy4gSG93ZXZlciwgdG8gdXNlIE1TIERMTHMsIHlvdSBjYW4KICAgICAgICAgY29weSB0aGVtIGludG8gdGhhdCBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29udHJhdmVudGlvbiBvZgogICAgICAgICB0aGUgV2luZG93cyBsaWNlbmNlIHVubGVzcyBXaW5kb3dzIGlzIHByb3Blcmx5IGluc3RhbGxlZCBvbiB0aGUKICAgICAgICAgbWFjaGluZS4gSWYgeW91IGhhdmUgRE9TL01TIFdpbmRvd3MgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCB5b3UgY2FuCiAgICAgICAgIG1vdW50IHRoYXQgcGFydGl0aW9uIGF0IGJvb3R1cCBieSBtb2RpZnlpbmcgdGhlIGZpbGUgCiAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gaW4geW91ciBVTklYIHBhcnRpdGlvbiAoYXNzdW1pbmcgdGhhdAogICAgICAgICB0aGUgVU5JWCBrZXJuZWwgc3VwcG9ydHMgdGhlIERPUy9NUyBXaW5kb3dzIGZpbGVzeXN0ZW0gdHlwZSkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGVkaXQgdGhpcyBmaWxlIGJ5IGhhbmQsIGl0IHNob3VsZCBjb250YWluIHNvbWV0aGluZyBzaW1pbGFyCiAgICAgICAgICB0byB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgovZGV2L2hkYTEgL2Rvc2MgbXNkb3MgdWlkPTAsZ2lkPTEwMCx1bWFzaz0wMDcgMCAwCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgYW5kIHdyaXRlIHRvIHRoZSBET1MgcGFydGl0aW9uIHdpdGhvdXQKICAgICAgICAgIGJlaW5nIHJvb3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLVdpbmUtY29tcGxldGVseS1yZXBsYWNlcy1NUy1XaW5kb3dzIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIFdpbmUgY29tcGxldGVseSByZXBsYWNlcyBNUyBXaW5kb3dzLCB3aWxsIGl0IGR1cGxpY2F0ZSBhbGwgb2YgdGhlCiAgICAgICAgICBmdW5jdGlvbnMgb2YgTVMgV2luZG93cz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIHRoZW0sIHllcy4gSG93ZXZlciwgc29tZSBhcHBsaWNhdGlvbnMgYW5kIGFwcGxldHMgdGhhdCBjb21lCiAgICAgICAgICB3aXRoIE1TIFdpbmRvd3MsIHN1Y2ggYXMgRmlsZSBNYW5hZ2VyIGFuZCBDYWxjdWxhdG9yLCBjYW4gYmUgCiAgICAgICAgICBjb25zaWRlcmVkIGJ5IHNvbWUgdG8gYmUgcmVkdW5kYW50LCBzaW5jZSAzMi1iaXQgVU5JWCBwcm9ncmFtcyB0aGF0CiAgICAgICAgICBkdXBsaWNhdGUgdGhlc2UgYXBwbGV0cycgZnVuY3Rpb25zIGFscmVhZHkgZXhpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1JLWluc3RhbGwtb24tb255LVVOSVgtZmlsZS1zeXN0ZW0iPgogICAgICAgIDxwYXJhPiAKICAgICAgICAgIFdpbGwgSSBiZSBhYmxlIHRvIGluc3RhbGwgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgaW4gYW55IGZsYXZvciBvZiBhCiAgICAgICAgICBVTklYIGZpbGUgc3lzdGVtPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgd3JpdHRlbiB0byBiZSBmaWxlIHN5c3RlbSBpbmRlcGVuZGVudCwgc28gTVMgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aWxsIGluc3RhbGwgYW5kIHJ1biB1bmRlciB2aXJ0dWFsbHkgYW55IGZpbGUgc3lzdGVtCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgeW91ciBicmFuZCBvZiBVTklYLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLW9ubHktdW5kZXItWCI+CiAgICAgICAgPHBhcmE+IFdpbGwgV2luZSBydW4gb25seSB1bmRlciBYLCBvciBjYW4gaXQgcnVuIGluIGNoYXJhY3RlciBtb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1vc3Qgb2YgV2luZSdzIGRldmVsb3BtZW50IGVmZm9ydCBpcyBnZWFyZWQgYWdhaW5zdCBNUyBXaW5kb3dzJyBHVUksCiAgICAgICAgICBidXQgc29tZSBsaW1pdGVkIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBtb2RlIGhhcyBhcHBlYXJlZCwgYnkgc2V0dGluZwogICAgICAgICAgPHBhcmFtZXRlcj5HcmFwaGljc0RyaXZlcj10dHlkcnY8L3BhcmFtZXRlcj4gaW4gd2luZS5jb25mJ3MKICAgICAgICAgIDxwYXJhbWV0ZXI+W3dpbmVdPC9wYXJhbWV0ZXI+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGluZnJhc3RydWN0dXJlIGlzIGFscmVhZHkgc29tZXdoYXQgcHJlcGFyZWQgZm9yIHN1cHBvcnRpbmcKICAgICAgICAgIG90aGVyIGdyYXBoaWNzIGRyaXZlcnMgdGhhbiB4MTFkcnYsIGJ1dCBubyByZWFsICJhbHRlcm5hdGl2ZSIgCiAgICAgICAgICBncmFwaGljcyBkcml2ZXIgaGFzIGJlZW4gdXNlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkdldHRpbmctV2luZSI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVyZS1jYW4tSS1nZXQtV2luZSI+CiAgICAgICAgPHBhcmE+V2hlcmUgY2FuIEkgZ2V0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBvZiBsYWdzIGNyZWF0ZWQgYnkgdXNpbmcgbWlycm9yLCB3b3JkIG9mIHRoaXMgbmV3ZXN0IHJlbGVhc2UKICAgICAgICAgIG1heSByZWFjaCB5b3UgYmVmb3JlIHRoZSByZWxlYXNlIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBhdCB0aGUgZnRwCiAgICAgICAgICBzaXRlcyBsaXN0ZWQgaGVyZS4gVGhlIHNvdXJjZXMgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAgICAgIGxvY2F0aW9uczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgICBodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LwogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC5pbmZvbWFnaWMuY29tL3B1Yi9taXJyb3JzL2xpbnV4L3N1bnNpdGUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5pbmZvbWFnaWMuY29tL3B1Yi9taXJyb3JzL2xpbnV4L3N1bnNpdGUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS91bml4L2xpbnV4L21pcnJvcnMvc3Vuc2l0ZS51bmMuZWR1L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9vcmN1cy5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9vcmN1cy5wcm9nc29jLnV0cy5lZHUuYXUvcHViL1dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgc2hvdWxkIGFsc28gYmUgYXZhaWxhYmxlIGZyb20gYW55IG90aGVyIHNpdGUgdGhhdCBtaXJyb3JzIAogICAgICAgICAgaWJpYmxpby5vcmcuIEZvciBtb3JlIGRvd25sb2FkIGxvY2F0aW9ucywgc2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2Z0cCBzZWFyY2gubHljb3MuY29tLiI+bHljb3M8L3VsaW5rPiBTb21lIG9mCiAgICAgICAgICB0aGVzZSBmdHAgc2l0ZXMgbWF5IGFyY2hpdmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgV2luZSBhcyB3ZWxsIGFzIHRoZQogICAgICAgICAgY3VycmVudCBvbmUuIFRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgbGF0ZXN0IG9uZSwgbG9vayBhdCB0aGUgCiAgICAgICAgICBkaXN0cmlidXRpb24gZmlsZSBuYW1lLCB3aGljaCB3aWxsIHRha2UgdGhlIGZvcm0gCiAgICAgICAgICBXaW5lLVlZWVlNTURELnRhci5nei4gU2ltcGx5IHJlcGxhY2UgWVlZWU1NREQgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lIHdpdGggdGhlIG51bWJlcnMgZm9yIHllYXIsIG1vbnRoIGFuZCBkYXRlLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICBUaGUgbGF0ZXN0IG9uZSBpcyB0aGUgb25lIHRvIGdldC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGJpbmFyeSBwYWNrYWdlcyBhcmUgYXZhaWxhYmxlIGZvciBzZXZlcmFsIE9TJ2VzIGFuZCAKICAgICAgICAgIGRpc3RyaWJ1dGlvbnMuIFNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kb3dubG9hZC5zaHRtbCI+CiAgICAgICAgICB0aGUgZG93bmxvYWQgcGFnZTwvdWxpbms+IGZvciB0aGUgbW9zdCByZWNlbnQgbGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLUNWUy10cmVlIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIENWUyB0cmVlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnQgV2luZSBzb3VyY2VzIGFyZSBhbHNvIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIGNsaWVudC9zZXJ2ZXIKICAgICAgICAgIENWUy4gWW91IHdpbGwgbmVlZCBDVlMgMS45IG9yIGFib3ZlLiBJZiB5b3UgYXJlIGNvbWluZyBmcm9tIGJlaGluZCBhCiAgICAgICAgICBmaXJld2FsbCwgeW91IHdpbGwgZWl0aGVyIG5lZWQgYSBob2xlIGluIHRoZSBmaXJld2FsbCBmb3IgdGhlIENWUwogICAgICAgICAgcG9ydCAoMjQwMSkgb3IgdXNlIFNPQ0tTLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIGxvZ2luIHRvIHRoZSBDVlMgdHJlZSwgZG8KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6Y3ZzQGN2cy53aW5laHEuY29tL2hvbWUvd2luZQpjdnMgbG9naW4KICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzZSAiY3ZzIiBhcyB0aGUgcGFzc3dvcmQgKHdpdGhvdXQgdGhlIHF1b3RlcykuIE5vdGUgdGhhdCAKICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS93aW5lPC9maWxlbmFtZT4gaXMgYSBwYXRoIG9uIHRoZSBzZXJ2ZXIsIG5vdCBvbiB5b3VyCiAgICAgICAgICBtYWNoaW5lLiBUbyBjaGVjayBvdXQgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlICh3aGljaCBtYXkgYmUgCiAgICAgICAgICBzbG93KSwgdXNlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBvciBpZiB5b3UganVzdCB3YW50IGEgc3VidHJlZSwgb3IgaW5kaXZpZHVhbCBmaWxlLCB5b3UgY2FuIGRvIHRoYXQgCiAgICAgICAgICB0b28gd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lL0FOTk9VTkNFIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmUgYXdhcmUsIHRob3VnaCwgdGhhdCBnZXR0aW5nIHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSB2aWEgQ1ZTCiAgICAgICAgICBpcyBwcmV0dHkgc2xvdywgZXNwZWNpYWxseSBjb21wYXJlZCB0byBnZXR0aW5nIFdpbmUgZnJvbSBhbiBGVFAgCiAgICAgICAgICBtaXJyb3IgbmVhciB5b3UuIEZvciBhIENWUyBtaXJyb3IgbGlzdCwgc2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUsIHNvIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gZG93bmxvYWQsCiAgICAgICAgICBpbnN0YWxsLCBhbmQgY29uZmlndXJlIHRoZSBlbnRpcmUgZGlzdHJpYnV0aW9uIGVhY2ggd2VlayBpZiB5b3UgYXJlCiAgICAgICAgICBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyByZWxlYXNlLiBQYXRjaCBmaWxlIHJlbGVhc2UgbmFtZXMgZm9sbG93IHRoZQogICAgICAgICAgc2FtZSBudW1iZXJpbmcgY29udmVudGlvbiBhcyBkbyB0aGUgZ2VuZXJhbCByZWxlYXNlcywgYW5kIHRha2UgdGhlIAogICAgICAgICAgZm9ybQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5neiAgCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBzYW1lIHNpdGVzIHRoYXQgZGlzdHJpYnV0ZSB0aGUKICAgICAgICAgIGZ1bGwgcmVsZWFzZS4gVG8gdXBncmFkZSB0byBhIG5ldyByZWxlYXNlIGJ5IHVzaW5nIGEgcGF0Y2ggZmlsZSwKICAgICAgICAgIGZpcnN0IGNkIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSByZWxlYXNlICh0aGUgb25lCiAgICAgICAgICBjb250YWluaW5nIHRoZSBSRUFETUUgZmlsZSksIHRoZW4gZG8gYSAibWFrZSBjbGVhbiIsIGFuZCBwYXRjaCB0aGUKICAgICAgICAgIHJlbGVhc2Ugd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpndW56aXAgLWMgcGF0Y2gtZmlsZSB8IHBhdGNoIC1wMSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIHdoZXJlIHBhdGNoLWZpbGUgaXMgdGhlIG5hbWUgb2YgdGhlIHBhdGNoIGZpbGUgc29tZXRoaW5nIGxpa2UKICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5nei4gWW91IGNhbiB0aGVuIHJlLXJ1biAuL2NvbmZpZ3VyZSwgYW5kIHRoZW4gcnVuCiAgICAgICAgICBtYWtlIGRlcGVuZCAmJiBtYWtlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGFyZSBtaXJyb3JpbmcgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIGZyb20gdGhlIHRzeC0xMSBzaXRlIGFuZAogICAgICAgICAgd2lzaCB0byBiZSBsaXN0ZWQgaGVyZSBpbiB0aGlzIEZBUSwgcGxlYXNlIGFkZCBpdCB0byB0aGUgCiAgICAgICAgICAidGhpbmdzIHRvIGdvIGludG8gdGhlIGRvY3VtZW50YXRpb24iIGFyZWEuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktZ2V0LVdpbmUtdXNpbmctY3ZzdXAiPgogICAgICAgIDxwYXJhPkNhbiBJIGdldCBXaW5lIHVzaW5nIGN2c3VwPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBDVlMgbWlycm9ycyBkb24ndCBvZmZlciBjdnN1cCBzdXBwb3J0IHlldCwgYnV0IHRoZSBtYWluIHNlcnZlcgogICAgICAgICAgZG9lcy4gVXNlIGEgPGZpbGVuYW1lPndpbmUuc3VwPC9maWxlbmFtZT4gZmlsZSBvZjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KKmRlZmF1bHQgaG9zdD1jdnMud2luZWhxLmNvbQoqZGVmYXVsdCBiYXNlPS9jdnMKKmRlZmF1bHQgcHJlZml4PS9jdnMvd2luZQoqZGVmYXVsdCByZWxlYXNlPXdpbmUKKmRlZmF1bHQgZGVsZXRlIAoKIyBJZiB5b3VyIG5ldHdvcmsgbGluayBpcyBhIFQxIG9yIGZhc3RlciwgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBsaW5lLgojKmRlZmF1bHQgY29tcHJlc3MgCgoqZGVmYXVsdCB1c2UtcmVsLXN1ZmZpeCAKd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICA8L2Fuc3dlcj4KICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iSW5zdGFsbGluZy1BbmQtQ29uZmlndXJpbmctV2luZSI+CiAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIEFuZCBDb25maWd1cmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29tcGlsZS10aGUtV2luZS1zb3VyY2UtY29kZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29tcGlsZSB0aGUgV2luZSBkaXN0cmlidXRpb24gc291cmNlIGNvZGU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2VlIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBXSVRIT1VUIFdpbmRvd3MgcHJpbWFyaWx5LiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+ICggCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWciPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC91bGluaz4pIAogICAgICAgICAgY29udGFpbnMgYSBjb25maWcgZmlsZSBleGFtcGxlLiBNb3JlIGV4cGxpY2l0IGRpcmVjdGlvbnMgY2FuIGJlIAogICAgICAgICAgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlICgKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0ZXIgYmV0dGVyIGFsbAogICAgICAgICAgdGhlIHRpbWUpIG9yIHVzZSBhIFdpbjl4IGluc3RhbGwgKFdpbjk1LCA5OCwgOThTRSwgTUUpLiBET04nVCAKICAgICAgICAgIGNvbmZpZ3VyZSBXaW5lIHRvIHVzZSBhbiBOVC1iYXNlZCBXaW5kb3dzIGluc3RhbGwgKE5ULCBXaW4ySywgV2luWFApLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtb25lLXdvcmtzLWJlc3QiPgogICAgICAgIDxwYXJhPklmIEkgdXNlIGEgV2luZG93cyBpbnN0YWxsIHdpdGggV2luZSwgd2hpY2ggb25lIHdvcmtzIGJlc3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgMDIvMjAwMjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJJ2Qgc2F5IFdpbjk4U0UgaXMgdGhlIGJlc3QgdmVyc2lvbiB0byB1c2Ugd2l0aCBXaW5lLCBhcyBpdCdzIGZhaXJseQogICAgICAgICAgd2lkZXNwcmVhZCBhbW9uZ3N0IGRldmVsb3BlcnMgYW5kIHJlbGF0aXZlbHkgb2xkLiBVc2luZyBXaW4ySyBmaWxlcwogICAgICAgICAgaXMgPGVtcGhhc2lzPmRlZmluaXRlbHk8L2VtcGhhc2lzPiB3b3JzZSB0aGFuIGEgcGxhaW4gbm8td2luZG93cyAKICAgICAgICAgIFdpbmUgaW5zdGFsbCwgYW5kIFdpbiBNRSBpcyBzYWlkIHRvIGJlIHByb2JsZW1hdGljLCB0b28gKGFzIHByb2JhYmx5CiAgICAgICAgICBubyBkZXZlbG9wZXIgdXNlcyBpdCkuIEluIHNob3J0OiBhbGwgV2luOXggJmx0Oz0gVzk4U0UgYXJlIGdvb2QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW5zdGFsbGluZy1WaXN1YWwtQmFzaWMtYXBwcy13b250LXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnN0YWxsaW5nIGFwcGxpY2F0aW9ucyBnZW5lcmF0ZWQgYnkgVmlzdWFsIEJhc2ljIHdvbid0IHJ1bi4gV2hhdAogICAgICAgICAgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHlvdSBoYXZlIGFsbCB0aGUgVkIgcnVudGltZSBsaWJyYXJpZXMgaW5zdGFsbGVkLiBZb3UgbWF5CiAgICAgICAgICBuZWVkIHRvIHVzZSB0aGUgbmF0aXZlIGRsbCB2YnJ1bjYwLmRsbAogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4tSS1jbGljay1vbi1leGUtZmlsZS1ub3RoaW5nLWhhcHBlbnMiPgogICAgICAgIDxwYXJhPldoZW4gSSBjbGljayBvbiAqLmV4ZSBmaWxlIGluIG15IGZpbGUgTWFuYWdlciwgbm90aGluZyBoYXBwZW5zPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5vcm1hbCBXaW5lIHJlbGVhc2VzIGRvbid0IGhhdmUgLmV4ZSBleHRlbnNpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICBXaW5lIGluIEtERS9Hbm9tZSB5ZXQuIFlvdSBoYXZlIHRvIG9wZW4gYSB0ZXJtaW5hbCB3aW5kb3cgaW5zdGVhZAogICAgICAgICAgKG9mdGVuIGFuIGljb24gc2hvd2luZyBhICJibGFjayBzY3JlZW4iKSBhbmQgdHlwZSBzb21ldGhpbmcgbGlrZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY2QgL215L3dpbmRvd3MvcHJvZ3JhbS9kaXJlY3RvcnkKd2luZSBteXByb2dyYW0uZXhlCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBPciBhbHRlcm5hdGl2ZWx5IHlvdSBjb3VsZCBkb3dubG9hZCB0aGUgQ29kZVdlYXZlcnMgV2luZSBwcmV2aWV3IAogICAgICAgICAgd2hpY2ggaW5jbHVkZXMgLmV4ZSBleHRlbnNpb24gcmVnaXN0cmF0aW9uIGZvciBLREUvR25vbWUgYW5kIGEgbmljZQogICAgICAgICAgc2V0dXAgcHJvZ3JhbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJiYXNoLXdpbmUtQ29tbWFuZC1ub3QtZm91bmQtV2hhdC1jYW4tSS1kbyI+CiAgICAgICAgPHBhcmE+YmFzaCAid2luZTogQ29tbWFuZCBub3QgZm91bmQiIFdoYXQgY2FuIEkgZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJ5IHRvIHJlbG9naW4gaW50byBiYXNoLiBUaGF0IG1pZ2h0IGZpeCBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBpdCBkb2Vzbid0LCB0aGVuIG1ha2Ugc3VyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4geW91ciAKICAgICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSdW4gYXMgcm9vdDoKICAgICAgICA8L1BhcmE+CiAgICAgICAgPHNjcmVlbj4KZmluZCAvIC1uYW1lICJ3aW5lIiAtdHlwZSBmIC1wZXJtICsxMTEKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIHRvIGZpbmQgdGhlIHBhdGggd2hlcmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluLiBUaGVuIGNoZWNrIHdoZXRoZXIKICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4gaW5jbHVkZXMgaXQ6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmVjaG8gJFBBVEggCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBub3QsIGFkZCB0aGF0IGUuZy4gdG8gPGZpbGVuYW1lPi9ldGMvcHJvZmlsZTwvZmlsZW5hbWU+IGJ5IGRvaW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgUEFUSD0kUEFUSDovcGF0aC90by93aW5lL2JpbmFyeSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgc2hvdWxkIGhlbHAuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIElmIHlvdSB1c2VkIGEgcGFja2FnZSBtYW5hZ2VyICg8Y29tbWFuZD5ycG08L2NvbW1hbmQ+IG9yIAogICAgICAgICAgIDxjb21tYW5kPmFwdDwvY29tbWFuZD4pIC0gVmVyaWZ5IHlvdXIgcGFja2FnZXMuIFRoZSBwYWNrYWdlIAogICAgICAgICAgIDxmaWxlbmFtZT53aW5lc2V0dXB0ay5ycG08L2ZpbGVuYW1lPiBpcyBvbmx5IGEgZnJvbnQtZW5kIGZvciAKICAgICAgICAgICBtYWtpbmcgYSBtZWFuaW5nZnVsbCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ycG1maW5kLm5ldC8iPgogICAgICAgICAgIHd3dy5ycG1maW5kLm5ldDwvdWxpbms+IG9yIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gdHlwZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4Kcm0gLWZSIFxbL3BhdGgvXF1XaW5lKgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGV4YWN0IHBhdGggd2hlbiB1c2luZyB0aGUgcG93ZXJmdWwKICAgICAgICAgIDxjb21tYW5kPnJtIC1mUjwvY29tbWFuZD4gY29tbWFuZC4gSWYgeW91IGFyZSBhZnJhaWQgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgIGRlbGV0ZSBzb21ldGhpbmcgaW1wb3J0YW50LCBvciBtaWdodCBvdGhlcndpc2UgZGVsZXRlIG90aGVyIGZpbGVzIAogICAgICAgICAgd2l0aGluIHlvdXIgZmlsZXN5c3RlbSwgPGNvbW1hbmQ+Y2Q8L2NvbW1hbmQ+IGludG8gZWFjaCBXaW5lIAogICAgICAgICAgc3ViZGlyZWN0b3J5IHNpbmdseSBhbmQgZGVsZXRlIHRoZSBmaWxlcyBmb3VuZCB0aGVyZSBtYW51YWxseSwgCiAgICAgICAgICBvbmUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICBOZWl0aGVyIHRoZSBXaW5lIGRldmVsb3BlcnMgYW5kIHByb2dyYW1tZXJzLCBub3IgdGhlIFdpbmUgRkFRIAogICAgICAgIGF1dGhvci9tYWludGFpbmVyLCBjYW4gYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgeW91ciBkZWxldGluZyBhbnkKICAgICAgICBmaWxlcyBpbiB5b3VyIG93biBmaWxlc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgIEluIGNhc2Ugb2YgcHJvYmxlbXMgd2hlbiBydW5uaW5nIFdpbmUsIFlvdSBtYXkgYWxzbyB3YW50IHRvIHNlZSB0aGUKICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2ZvbS1tZXRhL2NhY2hlLzE5Lmh0bWwiPgogICAgICAgICBXaW5lIFRyb3VibGVzaG9vdGluZyBHdWlkZTwvdWxpbms+LgogICAgICAgPC9wYXJhPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1ydW4tYW4tTVMtV2luZG93cy1wcm9ncmFtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBydW4gYW4gTVMgV2luZG93cyBwcm9ncmFtIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hlbiBpbnZva2luZyBXaW5lLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBlbnRpcmUgcGF0aCB0byB0aGUKICAgICAgICAgIGV4ZWN1dGFibGUsIG9yIGJ5IGZpbGVuYW1lIG9ubHkuIEZvciBleGFtcGxlIHRvIHJ1biBXaW5kb3dzJwogICAgICAgICAgc29saXRhaXJlLCB0eXBlIGFueSBvZiB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgc29sPC9jb21tYW5kPiBvciA8Y29tbWFuZD53aW5lIHNvbC5leGU8L2NvbW1hbmQ+CiAgICAgICAgICAgKHVzaW5nIHRoZSBzZWFyY2ggcGF0aCB0byBsb2NhdGUgdGhlIGZpbGUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIGM6XFx3aW5kb3dzXFxzb2wuZXhlPC9jb21tYW5kPiAKICAgICAgICAgICAodXNpbmcgYSBET1MgZmlsZW5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIC91c3Ivd2luZG93cy9zb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyBhIFVOSVggZmlsZW5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lICJjOlx3aW5kb3dzXHNvbC5leGUiPC9jb21tYW5kPgogICAgICAgICAgICAodXNpbmcgcXVvdGVkIERPUyBmaWxlbmFtZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHBhdGggb2YgdGhlIGZpbGUgd2lsbCBhbHNvIGJlIGFkZGVkIHRvIHRoZSBwYXRoIHdoZW4gYSBmdWxsIG5hbWUKICAgICAgICAgIGlzIHN1cHBsaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbmUtY2Fubm90LWZpbmQtTVMtV2luZG93cy1vbi1teS1kcml2ZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkIFdpbmUsIGJ1dCBXaW5lIGNhbm5vdCBmaW5kIE1TIAogICAgICAgICAgV2luZG93cyBvbiBteSBkcml2ZS4gV2hlcmUgZGlkIEkgZ28gd3Jvbmc/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGhhdmUgYSBET1MgcGFydGl0aW9uLCBmaXJzdCBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBtb3VudGVkCiAgICAgICAgICBpdCwgZWl0aGVyIGJ5IHB1dHRpbmcgdGhlIGVudHJ5IGludG8gPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiwKICAgICAgICAgIG9yIGJ5IG1hbnVhbGx5IG1vdW50aW5nIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJlbWVtYmVyIHRvbyB0aGF0IHVubGVzcyB5b3VyIHZlcnNpb24gb2YgVU5JWCBjYW4gc2VlIHRocm91Z2ggaXQsIG9yCiAgICAgICAgICB5b3UgYXJlIHJ1bm5pbmcgYSB1dGlsaXR5IHRoYXQgY2FuIHNlZSB0aHJvdWdoIGl0LCB5b3VyIERPUwogICAgICAgICAgcGFydGl0aW9uIG11c3Qgbm90IGJlIGxvY2F0ZWQgb24gYSBEcml2ZXNwYWNlZCwgRG91Ymxlc3BhY2VkIG9yCiAgICAgICAgICBTdGFja2VyZWQgcGFydGl0aW9uLCBhcyBuZWl0aGVyIExpbnV4LCBGcmVlQlNELCBOZXRCU0Qgb3IgV2luZSBjYW4KICAgICAgICAgIG5hdGl2ZWx5ICdzZWUnIGZpbGVzIGxvY2F0ZWQgaW4gdGhlc2UgY29tcHJlc3NlZCBET1MgcGFydGl0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDaGVjayB5b3VyIHBhdGggc3RhdGVtZW50cyBpbiB0aGUgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IAogICAgICAgICAgZmlsZS4gTm8gY2FwaXRhbCBsZXR0ZXJzIG1heSBiZSB1c2VkIGluIHBhdGhzLCBhcyB0aGV5IGFyZSAKICAgICAgICAgIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGxvd2VyY2FzZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJQYXJ0cy1vZi1teS1hcHAtZG8tbm90LXdvcmstV2hhdC1pcy13cm9uZyI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIHdhcyBhYmxlIHRvIGdldCB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMgdG8gcnVuLCBidXQgcGFydHMgb2YKICAgICAgICAgIHRoZW0gZG8gbm90IHdvcmsuIFdoYXQgaXMgd3Jvbmc/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBub3QgY29tcGxldGUgYXQgdGhpcyB0aW1lLCBzbyBzb21lIG9mIGVhY2ggcHJvZ3JhbXMnIAogICAgICAgICAgZmVhdHVyZXMgbWF5IG5vdCB3b3JrLiBUaGV5IHdpbGwgaW4gdGltZSBhcyBtb3JlIG9mIHRoZSBNUyAKICAgICAgICAgIFdpbmRvd3MgQVBJIGNhbGxzIGFyZSBpbmNsdWRlZCBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ik1lbnVzLWRvLW5vdC13b3JrLWhvdy1jYW4tSS1leGl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBydW4gdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zLCBidXQgc2luY2UgdGhlIHByb2dyYW0gbWVudXMKICAgICAgICAgIGRvIG5vdCB3b3JrLCBob3cgY2FuIEkgZXhpdCB0aGVzZSBwcm9ncmFtcz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBLaWxsIHRoZSB4dGVybSBzaGVsbCB3aW5kb3cgdGhhdCB5b3UgY2FsbGVkIHVwIHRvIHJ1biB5b3VyIE1TIAogICAgICAgICAgV2luZG93cyBwcm9ncmFtLCBhbmQgdGhlIFggd2luZG93IHRoYXQgYXBwZWFyZWQgd2l0aCB0aGUgcHJvZ3JhbSAKICAgICAgICAgIHdpbGwgYmUga2lsbGVkIHRvby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS13aXRoLW90aGVyLUxpbnV4LURpc3Ryb3MiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHdpdGggU3VTZSwgUGVhbnV0IG9yIG90aGVyIExpbnV4IERpc3RybydzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gdXNlIFdpbmUgb24gYW55IHN1ZmZpY2llbnRseSByZWNlbnQgTGludXggaW5zdGFsbGF0aW9uLiBUaGUKICAgICAgICAgIGFtb3VudCBvZiB3b3JrIGdldHRpbmcgV2luZSB1cCBhbmQgcnVubmluZyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlcmUKICAgICAgICAgIGFyZSBwcm9wZXIgcGFja2FnZXMgYXZhaWxhYmxlIG9yIGEgc291cmNlIGNvbXBpbGUgaGFzIHRvIGJlIGRvbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1XaW5lLXdvcmstd2l0aC1BTUQtUHJvY2Vzc29ycyI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIHdvcmsgd2l0aCBBTUQgUHJvY2Vzc29ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGl0IGRvZXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWxhdW5jaC1Vbml4LWFwcC1mcm9tLVdpbmRvd3MtYXBwIj4KICAgICAgICA8cGFyYT4gQ2FuIEkgbGF1bmNoIGEgVW5peCBwcm9ncmFtIGZyb20gYSBXaW5kb3dzIHByb2dyYW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZSwgV2luZSBzdXBwb3J0cyB0aGF0LiBKdXN0IGVudGVyIHRoZSB1bml4IHByb2dyYW0gbmFtZSB3aGVyZXZlcgogICAgICAgICAgYSBwcm9ncmFtIGhhcyBzb21ldGhpbmcgdGhhdCBpdCdzIHN1cHBvc2VkIHRvIGV4ZWN1dGUsYW5kIHRoZW4gaXQgCiAgICAgICAgICBzaG91bGQganVzdCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAgICAgCiAgICA8cWFuZGFkaXYgaWQ9IkdldHRpbmctaGVscCI+CiAgICAgIDx0aXRsZT5HZXR0aW5nIGhlbHA8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbnktZG9jdW1lbnRhdGlvbi1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW55IGRvY3VtZW50YXRpb24gZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3N1cHBvcnQuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3N1cHBvcnQuc2h0bWwuPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+LiBXZWJzaXRlIGFuZCBGQVEgCiAgICAgICAgICBhZGRpdGlvbnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBXaW5lIEtub3dsZWRnZWJhc2UKICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVVzZW5ldC1uZXdzZ3JvdXAtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgVXNlbmV0IG5ld3Nncm91cCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGFuZCBpdCdzIGNhbGxlZCAKICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj4KICAgICAgICAgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvdWxpbms+LiBUaGUgbmV3c2dyb3VwIHNlcnZlcyBhcyBhCiAgICAgICAgICBwbGFjZSBmb3IgdXNlcnMgYW5kIGRldmVsb3BlcnMgdG8gZGlzY3VzcyBXaW5lLCBhbmQgZm9yIG1pbm9yIAogICAgICAgICAgYW5ub3VuY2VtZW50cyBmb3IgdGhlIGdlbmVyYWwgcHVibGljLiBNYWpvciBhbm5vdW5jZW1lbnRzIHdpbGwgYmUKICAgICAgICAgIGNyb3NzcG9zdGVkIHRvIG90aGVyIGFwcHJvcHJpYXRlIG5ld3Nncm91cHMsIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAub3MubGludXguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLm9zLmxpbnV4LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC53aW5kb3dzLnguYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLndpbmRvd3MueC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAuZW11bGF0b3JzLmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5lbXVsYXRvcnMuYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdXIgVXNlbmV0IHNpdGUgZG9lcyBub3QgY2FycnkgdGhlc2UgbmV3c2dyb3VwcywgcGxlYXNlIHVyZ2UgCiAgICAgICAgICB5b3VyIElTUCdzIHN5c2FkbWluIHRvIGFkZCBhbmQvb3IgdXBsaW5rIHRoZW0uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Xb3JsZC1XaWRlLVdlYi1zaXRlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFdvcmxkIFdpZGUgV2ViIHNpdGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBIUSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbTwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLm9wZW5wcm9qZWN0cy5uZXQ8L2ZpbGVuYW1lPiBzZWUgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL29wZW5wcm9qZWN0cy5udS9zZXJ2aWNlcy9pcmMuaHRtbCI+CiAgICAgICAgICBodHRwOi8vb3BlbnByb2plY3RzLm51L3NlcnZpY2VzL2lyYy5odG1sPC91bGluaz4pLiBVc3VhbGx5IHNldmVyYWwKICAgICAgICAgIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEuY29tIj4KICAgICAgICAgIGh0dHA6Ly9idWdzLndpbmVocS5jb20vPC91bGluaz4pLiBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlCiAgICAgICAgICBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmUgdmVyc2lvbiB0ZXN0ZWQKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIE1TIFdpbmRvd3MgcHJvZ3JhbSBuYW1lIGFuZCwgaWYgcG9zc2libGUsIHRoZSB2ZXJzaW9uIG51bWJlciAKICAgICAgICAgICAgb2YgdGhlIHNvZnR3YXJlIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIHJlbGV2YW50IHBhcnQocykgb2YgdGhlIG91dHB1dCBvZiB0aGUgV2luZSBkZWJ1Z2dlcgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIHNjcmVlbnNob3Qgb2YgdGhlIHZpc3VhbCBwcm9ibGVtLCBpZiBhcHBsaWNhYmxlCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXBvcnRpbmcgYnVncyBwbGVhc2Ugc2VlIHRoZSAKICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZS11c2VyL2J1Zy1yZXBvcnRpbmcuc2h0bWwiPgogICAgICAgICBIb3cgdG8gcmVwb3J0IGEgYnVnPC91bGluaz4gc2VjdGlvbiBvZiB0aGUgV2luZSBVc2VycyBHdWlkZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkhlbHBpbmctV2luZS1vci1iZWNvbWluZy1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgPHRpdGxlPkhlbHBpbmcgV2luZSBvciBiZWNvbWluZyBhIFdpbmUgZGV2ZWxvcGVyPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktYmVjb21lLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGJlY29tZSBhIFdpbmUgZGV2ZWxvcGVyPyBXaGF0IGRvIEkgbmVlZCB0byBrbm93PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcHJvZ3JhbSBDLCB0aGF0J3MgYSBnb29kIHN0YXJ0LiBEb3dubG9hZCB0aGUgc291cmNlcyB2aWEKICAgICAgICAgIENWUywgc3Vic2NyaWJlIHRvIHRoZSBtYWlsaW5nIGxpc3RzLCBsb29rIGFyb3VuZCB0aGUgc291cmNlLCBhbmQgcGF5CiAgICAgICAgICBhdHRlbnRpb24gdG8gdGhlIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSBuZXdzZ3JvdXAgYW5kIHRoZSAKICAgICAgICAgIG1haWxpbmcgbGlzdHMgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+KS4gU2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcKICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZml4IG9yIHdvcmsgb24uIFlvdSB3b24ndCBoYXZlIG11Y2ggdHJvdWJsZQogICAgICAgICAgZmluZGluZyBhcmVhcyB0aGF0IG5lZWQgd29yayBpbiBXaW5lIChncmVwIGZvciBGSVhNRXMgaW4gdGhlIHNvdXJjZSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWNvbnRyaWJ1dGUtdG8tdGhlLVdpbmUtcHJvamVjdCI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGhlbHAgY29udHJpYnV0ZSB0byB0aGUgV2luZSBwcm9qZWN0LCBhbmQgaW4gd2hhdCB3YXkocyk/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiBjb250cmlidXRlIHByb2dyYW1taW5nIG9yIGRvY3VtZW50YXRpb24gc2tpbGxzLCBvciBtb25ldGFyeQogICAgICAgICAgb3IgZXF1aXBtZW50IGRvbmF0aW9ucywgdG8gYWlkIHRoZSBXaW5lIGRldmVsb3BlcnMgaW4gcmVhY2hpbmcgdGhlaXIgCiAgICAgICAgICBnb2Fscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgYSBsaXN0IG9mIGlkZWFzIG9mIGhvdyB5b3UgY2FuIGhlbHAsIHBsZWFzZSBjb25zdWx0IHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC9pbmRleC5waHA/Y29udHJpYiI+CiAgICAgICAgICBXaW5lIGNvbnRyaWIgcGFnZTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd2FudC10by1oZWxwLWJldGEtdGVzdC1XaW5lIj4KICAgICAgICA8cGFyYT5JIHdhbnQgdG8gaGVscCBiZXRhIHRlc3QgV2luZS4gSG93IGNhbiBJIGRvIHRoaXM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBzdGlsbCBjb25zaXN0cyBvZiBzb21lIEFscGhhIGNvZGUgYXQgdGhpcyB0aW1lLiBIb3dldmVyLCBhbnlvbmUKICAgICAgICAgIGlzIHdlbGNvbWUgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uLCBhbmQgdHJ5IGl0IG91dCBhdCBhbnkKICAgICAgICAgIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13cm90ZS1zb21lLWNvZGUtSS13b3VsZC1saWtlLXRvLXN1Ym1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgd3JpdHRlbiBzb21lIGNvZGUgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3VibWl0IHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9qZWN0LiBIb3cgZG8gSSBnbyBhYm91dCBkb2luZyB0aGlzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoZXMgYXJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIAogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWw8L3VsaW5rPikuIEFsc28gc2VlIHRoaXMgcGFnZSBmb3IKICAgICAgICAgIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCBoYXBwZW5zIHRvIHN1Ym1pdHRlZCBwYXRjaGVzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iRGV2ZWxvcGluZy1wcm9ncmFtcy11c2luZy1XaW5lLVdpbmVMaWIiPgogICAgICA8dGl0bGU+RGV2ZWxvcGluZyBwcm9ncmFtcyB1c2luZyBXaW5lL1dpbmVMaWI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS10by1wb3J0LVdpbjMyLXNvdXJjZXMtdG8tVW5peCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gcG9ydCBteSBXaW4zMiBzb3VyY2VzIHRvIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBpcyB0aGUgaWRlYSBvZiBXaW5lbGliLiBSaWdodCBub3cgeW91IG1heSBzdGlsbCBoYXZlIHNvbWUgCiAgICAgICAgICBkaWZmaWN1bHRpZXMsIGJ1dCB0aGlzIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZS4gUmVhZCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj4KICAgICAgICAgIFdpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGluZm8uCgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1NRkMtd29yay13aXRoLVdpbmUtV2hhdC1kby1JLW5lZWQtdG8tZG8iPgogICAgICAgIDxwYXJhPldpbGwgTUZDIHdvcmsgd2l0aCBXaW5lPyBXaGF0IGRvIEkgbmVlZCB0byBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBpbXBsZW1lbnRpbmcgYW4gTUZDIHJlcGxhY2VtZW50IG5vciBkb2VzIGl0IGludGVuZCB0by4KICAgICAgICAgIEhvd2V2ZXIgaXQgaXMgcG9zc2libGUgKHdpdGggYSBsb3Qgb2Ygd29yaykgdG8gY29tcGlsZSB0aGUgTUZDIGZyb20KICAgICAgICAgIHNvdXJjZSBhbmQgdGh1cyBwcm9kdWNlIGFuIDxmaWxlbmFtZT5tZmM0Mi5kbGwuc288L2ZpbGVuYW1lPiBsaWJyYXJ5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZWFzZSByZWZlciB0byB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj4KICAgICAgICAgIFdpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGhvdyB0byBkbyB0aGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS10aGVyZS1jb21tZXJjaWFsLWFwcHMtcG9ydGVkLXVzaW5nLVdpbmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXJlIHRoZXJlIGFueSBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIGJlZW4gcG9ydGVkCiAgICAgICAgICB1c2luZyBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyB1c2luZyBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIAogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL2xpbnV4LmNvcmVsLmNvbS9wcm9kdWN0cy93cG8yMDAwX2xpbnV4L2luZGV4Lmh0bSI+CiAgICAgICAgICAgIGh0dHA6Ly9saW51eC5jb3JlbC5jb20vcHJvZHVjdHMvd3BvMjAwMF9saW51eC9pbmRleC5odG08L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQWJpbGl0eSBPZmZpY2UKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocCI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSUJNJ3MgV2Vic3BoZXJlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcCI+CiAgICAgICAgICAgIGh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wPC91bGluaz4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBvdGhlciBpbXBvcnRhbnQgYXBwbGljYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIHBvcnRlZC4gKHdlIGFyZQogICAgICAgICAgc3BlYWtpbmcgb2Ygc2V2ZXJhbCB0b3AgNTAwIGFwcGxpY2F0aW9ucyBoZXJlKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1jYW4tSS1kZXRlY3QtV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGRldGVjdCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSByZWFsbHkgc2hvdWxkbid0IHdhbnQgdG8gZG8gdGhpcy4gSWYgdGhlcmUncyBhIHF1aXJrIGluIFdpbmUgCiAgICAgICAgICB5b3UgbmVlZCB0byB3b3JrIGFyb3VuZCwgaXQncyBtdWNoIGJldHRlciB0byBmaXggaXQgaW4gV2luZSAoYWZ0ZXIKICAgICAgICAgIGFsbCB5b3UncmUgYSBkZXZlbG9wZXIsIHNvIHlvdSBzaG91bGQgYmUgYWJsZSB0byBnYXRoZXIgZW5vdWdoIGhlbHAKICAgICAgICAgIGFuZCBrbm93bGVkZ2UgdG8gZml4IGl0IGZvciByZWFsKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogIAogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9IldpbmUtSFEtaXNzdWVzIj4KICAgICAgPHRpdGxlPldpbmUgSFEgaXNzdWVzPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2h5LWFyZS10aGUtbWFpbGxpc3RzLXNldC10by1yZXBseS10by1hdXRob3IiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2h5IGFyZSB0aGUgbWFpbGxpc3RzIHNldCB0byByZXBseSB0byBhdXRob3IsIG5vdCB0byBtYWlsaW5nIGxpc3Q/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgYXJlIHZlcnkgdmFsaWQgcmVhc29ucyBmb3IgZG9pbmcgc28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LXRvLXVuc3Vic2NyaWJlLWZyb20tdGhlLW1haWxpbmctbGlzdHMiPgogICAgICAgIDxwYXJhPkhvdyB0byB1bnN1YnNjcmliZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3RzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZWFzZSBzZWU6IDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9kZXZlbG9wbWVudC8jbWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJib29rIiAicGFydCIgImNoYXB0ZXIiICIiKQpFbmQ6Ci0tPgo=