PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9oZWFkZXJzIC0gQXBhY2hlIEhUVFAgU2VydmVyPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPGxpbmsgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjM8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi4zPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2hlYWRlcnM8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfaGVhZGVycy5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9oZWFkZXJzLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9oZWFkZXJzLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+Cjx0YWJsZSBjbGFzcz0ibW9kdWxlIj48dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5DdXN0b21pemF0aW9uIG9mIEhUVFAgcmVxdWVzdCBhbmQgcmVzcG9uc2UKaGVhZGVyczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNNb2R1bGVJZGVudGlmaWVyIj5Nb2R1bGWgSWRlbnRpZmllcjo8L2E+PC90aD48dGQ+aGVhZGVyc19tb2R1bGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTb3VyY2VGaWxlIj5Tb3VyY2WgRmlsZTo8L2E+PC90aD48dGQ+bW9kX2hlYWRlcnMuYzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNyZXF1ZXN0aGVhZGVyIj5SZXF1ZXN0SGVhZGVyPC9hPjwvY29kZT4KaXMgYXZhaWxhYmxlIG9ubHkgaW4gQXBhY2hlIDIuMDwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgZGlyZWN0aXZlcyB0byBjb250cm9sIGFuZCBtb2RpZnkgSFRUUAogICAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgaGVhZGVycy4gSGVhZGVycyBjYW4gYmUgbWVyZ2VkLCByZXBsYWNlZAogICAgb3IgcmVtb3ZlZC48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaGVhZGVyIj5IZWFkZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcmVxdWVzdGhlYWRlciI+UmVxdWVzdEhlYWRlcjwvYT48L2xpPgo8L3VsPgo8aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvcmRlciI+T3JkZXIgb2YgUHJvY2Vzc2luZzwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNlYXJseSI+RWFybHkgYW5kIExhdGUgUHJvY2Vzc2luZzwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KPC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3JkZXIiIGlkPSJvcmRlciI+T3JkZXIgb2YgUHJvY2Vzc2luZzwvYT48L2gyPgoKICAgIDxwPlRoZSBkaXJlY3RpdmVzIHByb3ZpZGVkIGJ5IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaGVhZGVycy5odG1sIj5tb2RfaGVhZGVyczwvYT48L2NvZGU+IGNhbgogICAgb2NjdXIgYWxtb3N0IGFueXdoZXJlIHdpdGhpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBjYW4gYmUKICAgIGxpbWl0ZWQgaW4gc2NvcGUgYnkgZW5jbG9zaW5nIHRoZW0gaW4gPGEgaHJlZj0iLi4vc2VjdGlvbnMuaHRtbCI+Y29uZmlndXJhdGlvbiBzZWN0aW9uczwvYT4uPC9wPgoKICAgIDxwPk9yZGVyIG9mIHByb2Nlc3NpbmcgaXMgaW1wb3J0YW50IGFuZCBpcyBhZmZlY3RlZCBib3RoIGJ5IHRoZQogICAgb3JkZXIgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgYnkgcGxhY2VtZW50IGluIDxhIGhyZWY9Ii4uL3NlY3Rpb25zLmh0bWwjbWVyZ2luIj5jb25maWd1cmF0aW9uIHNlY3Rpb25zPC9hPi4gVGhlc2UKICAgIHR3byBoZWFkZXJzIGhhdmUgYSBkaWZmZXJlbnQgZWZmZWN0IGlmIHJldmVyc2VkOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgUmVxdWVzdEhlYWRlciBhcHBlbmQgTWlycm9ySUQgIm1pcnJvciAxMiI8YnIgLz4KICAgICAgUmVxdWVzdEhlYWRlciB1bnNldCBNaXJyb3JJRAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGlzIHdheSByb3VuZCwgdGhlIDxjb2RlPk1pcnJvcklEPC9jb2RlPiBoZWFkZXIgaXMgbm90IHNldC4gSWYKICAgIHJldmVyc2VkLCB0aGUgTWlycm9ySUQgaGVhZGVyIGlzIHNldCB0byAibWlycm9yIDEyIi48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImVhcmx5IiBpZD0iZWFybHkiPkVhcmx5IGFuZCBMYXRlIFByb2Nlc3Npbmc8L2E+PC9oMj4KICAgIDxwPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaGVhZGVycy5odG1sIj5tb2RfaGVhZGVyczwvYT48L2NvZGU+IGNhbiBiZSBhcHBsaWVkIGVpdGhlciBlYXJseSBvciBsYXRlCiAgICBpbiB0aGUgcmVxdWVzdC4gIFRoZSBub3JtYWwgbW9kZSBpcyBsYXRlLCB3aGVuIFJlcXVlc3QgSGVhZGVycyBhcmUKICAgIHNldCBpbW1lZGlhdGVseSBiZWZvcmUgcnVubmluZyB0aGUgY29udGVudCBnZW5lcmF0b3IgYW5kIFJlc3BvbnNlCiAgICBIZWFkZXJzIGp1c3QgYXMgdGhlIHJlc3BvbnNlIGlzIHNlbnQgZG93biB0aGUgd2lyZS4gIEFsd2F5cyB1c2UKICAgIExhdGUgbW9kZSBpbiBhbiBvcGVyYXRpb25hbCBzZXJ2ZXIuPC9wPgoKICAgIDxwPkVhcmx5IG1vZGUgaXMgZGVzaWduZWQgYXMgYSB0ZXN0L2RlYnVnZ2luZyBhaWQgZm9yIGRldmVsb3BlcnMuCiAgICBEaXJlY3RpdmVzIGRlZmluZWQgdXNpbmcgdGhlIDxjb2RlPmVhcmx5PC9jb2RlPiBrZXl3b3JkIGFyZSBzZXQKICAgIHJpZ2h0IGF0IHRoZSBiZWdpbm5pbmcgb2YgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4gIFRoaXMgbWVhbnMKICAgIHRoZXkgY2FuIGJlIHVzZWQgdG8gc2ltdWxhdGUgZGlmZmVyZW50IHJlcXVlc3RzIGFuZCBzZXQgdXAgdGVzdAogICAgY2FzZXMsIGJ1dCBpdCBhbHNvIG1lYW5zIHRoYXQgaGVhZGVycyBtYXkgYmUgY2hhbmdlZCBhdCBhbnkgdGltZQogICAgYnkgb3RoZXIgbW9kdWxlcyBiZWZvcmUgZ2VuZXJhdGluZyBhIFJlc3BvbnNlLjwvcD4KCiAgICA8cD5CZWNhdXNlIGVhcmx5IGRpcmVjdGl2ZXMgYXJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlIHJlcXVlc3QgcGF0aCdzCiAgICBjb25maWd1cmF0aW9uIGlzIHRyYXZlcnNlZCwgZWFybHkgaGVhZGVycyBjYW4gb25seSBiZSBzZXQgaW4gYQogICAgbWFpbiBzZXJ2ZXIgb3IgdmlydHVhbCBob3N0IGNvbnRleHQuICBFYXJseSBkaXJlY3RpdmVzIGNhbm5vdCBkZXBlbmQKICAgIG9uIGEgcmVxdWVzdCBwYXRoLCBzbyB0aGV5IHdpbGwgZmFpbCBpbiBjb250ZXh0cyBzdWNoIGFzCiAgICA8Y29kZT4mbHQ7RGlyZWN0b3J5Jmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O0xvY2F0aW9uJmd0OzwvY29kZT4uPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleGFtcGxlcyIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvYT48L2gyPgoKICAgIDxvbD4KICAgICAgPGxpPgogICAgICAgIENvcHkgYWxsIHJlcXVlc3QgaGVhZGVycyB0aGF0IGJlZ2luIHdpdGggIlRTIiB0byB0aGUKICAgICAgICByZXNwb25zZSBoZWFkZXJzOgoKICAgICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAgIEhlYWRlciBlY2hvIF5UUwogICAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgIDwvbGk+CgogICAgICA8bGk+CiAgICAgICAgQWRkIGEgaGVhZGVyLCA8Y29kZT5NeUhlYWRlcjwvY29kZT4sIHRvIHRoZSByZXNwb25zZSBpbmNsdWRpbmcgYQogICAgICAgIHRpbWVzdGFtcCBmb3Igd2hlbiB0aGUgcmVxdWVzdCB3YXMgcmVjZWl2ZWQgYW5kIGhvdyBsb25nIGl0CiAgICAgICAgdG9vayB0byBiZWdpbiBzZXJ2aW5nIHRoZSByZXF1ZXN0LiBUaGlzIGhlYWRlciBjYW4gYmUgdXNlZCBieQogICAgICAgIHRoZSBjbGllbnQgdG8gaW50dWl0IGxvYWQgb24gdGhlIHNlcnZlciBvciBpbiBpc29sYXRpbmcKICAgICAgICBib3R0bGVuZWNrcyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIuCgogICAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICAgSGVhZGVyIGFkZCBNeUhlYWRlciAiJUQgJXQiCiAgICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgICAgPHA+cmVzdWx0cyBpbiB0aGlzIGhlYWRlciBiZWluZyBhZGRlZCB0byB0aGUgcmVzcG9uc2U6PC9wPgoKICAgICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAgIE15SGVhZGVyOiBEPTM3NzU0MjggdD05OTE0MjQ3MDQ0NDcyNTYKICAgICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8L2xpPgoKICAgICAgPGxpPgogICAgICAgIFNheSBoZWxsbyB0byBKb2UKCiAgICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgICBIZWFkZXIgYWRkIE15SGVhZGVyICJIZWxsbyBKb2UuIEl0IHRvb2sgJUQgbWljcm9zZWNvbmRzIFw8YnIgLz4KICAgICAgICAgIGZvciBBcGFjaGUgdG8gc2VydmUgdGhpcyByZXF1ZXN0LiIKICAgICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgICA8cD5yZXN1bHRzIGluIHRoaXMgaGVhZGVyIGJlaW5nIGFkZGVkIHRvIHRoZSByZXNwb25zZTo8L3A+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICAgTXlIZWFkZXI6IEhlbGxvIEpvZS4gSXQgdG9vayBEPTM3NzU0MjggbWljcm9zZWNvbmRzIGZvciBBcGFjaGUKICAgICAgICAgIHRvIHNlcnZlIHRoaXMgcmVxdWVzdC4KICAgICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8L2xpPgoKICAgICAgPGxpPgogICAgICAgIENvbmRpdGlvbmFsbHkgc2VuZCA8Y29kZT5NeUhlYWRlcjwvY29kZT4gb24gdGhlIHJlc3BvbnNlIGlmIGFuZAogICAgICAgIG9ubHkgaWYgaGVhZGVyICJNeVJlcXVlc3RIZWFkZXIiIGlzIHByZXNlbnQgb24gdGhlIHJlcXVlc3QuIFRoaXMKICAgICAgICBpcyB1c2VmdWwgZm9yIGNvbnN0cnVjdGluZyBoZWFkZXJzIGluIHJlc3BvbnNlIHRvIHNvbWUgY2xpZW50CiAgICAgICAgc3RpbXVsdXMuIE5vdGUgdGhhdCB0aGlzIGV4YW1wbGUgcmVxdWlyZXMgdGhlIHNlcnZpY2VzIG9mIHRoZQogICAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc2V0ZW52aWYuaHRtbCI+bW9kX3NldGVudmlmPC9hPjwvY29kZT4gbW9kdWxlLgoKICAgICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAgIFNldEVudklmIE15UmVxdWVzdEhlYWRlciB2YWx1ZSBIQVZFX015UmVxdWVzdEhlYWRlcjxiciAvPgogICAgICAgICAgSGVhZGVyIGFkZCBNeUhlYWRlciAiJUQgJXQgbXl0ZXh0IiBlbnY9SEFWRV9NeVJlcXVlc3RIZWFkZXI8YnIgLz4KICAgICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgICAgPHA+SWYgdGhlIGhlYWRlciA8Y29kZT5NeVJlcXVlc3RIZWFkZXI6IHZhbHVlPC9jb2RlPiBpcyBwcmVzZW50IG9uCiAgICAgICB0aGUgSFRUUCByZXF1ZXN0LCB0aGUgcmVzcG9uc2Ugd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcgaGVhZGVyOjwvcD4KCiAgICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAgTXlIZWFkZXI6IEQ9Mzc3NTQyOCB0PTk5MTQyNDcwNDQ0NzI1NiBteXRleHQKICAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgIDwvbGk+CiAgICA8L29sPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iSGVhZGVyIiBpZD0iSGVhZGVyIj5IZWFkZXI8L2E+IDxhIG5hbWU9ImhlYWRlciIgaWQ9ImhlYWRlciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+Q29uZmlndXJlIEhUVFAgcmVzcG9uc2UgaGVhZGVyczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5IZWFkZXIgWzx2YXI+Y29uZGl0aW9uPC92YXI+XSBzZXR8YXBwZW5kfGFkZHx1bnNldHxlY2hvCjx2YXI+aGVhZGVyPC92YXI+IFs8dmFyPnZhbHVlPC92YXI+XSBbZWFybHl8ZW52PVshXTx2YXI+dmFyaWFibGU8L3Zhcj5dPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkZpbGVJbmZvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfaGVhZGVyczwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlIGNhbiByZXBsYWNlLCBtZXJnZSBvciByZW1vdmUgSFRUUCByZXNwb25zZQogICAgaGVhZGVycy4gVGhlIGhlYWRlciBpcyBtb2RpZmllZCBqdXN0IGFmdGVyIHRoZSBjb250ZW50IGhhbmRsZXIKICAgIGFuZCBvdXRwdXQgZmlsdGVycyBhcmUgcnVuLCBhbGxvd2luZyBvdXRnb2luZyBoZWFkZXJzIHRvIGJlCiAgICBtb2RpZmllZC48L3A+CgogICAgPHA+VGhlIG9wdGlvbmFsIDx2YXI+Y29uZGl0aW9uPC92YXI+IGNhbiBiZSBlaXRoZXIgPGNvZGU+b25zdWNjZXNzPC9jb2RlPgogICAgb3IgPGNvZGU+YWx3YXlzPC9jb2RlPi4gSXQgZGV0ZXJtaW5lcywgd2hpY2ggaW50ZXJuYWwgaGVhZGVyIHRhYmxlIHNob3VsZCBiZQogICAgb3BlcmF0ZWQgb24uIDxjb2RlPm9uc3VjY2VzczwvY29kZT4gc3RhbmRzIGZvciA8Y29kZT4yPHZhcj54eDwvdmFyPjwvY29kZT4KICAgIHN0YXR1cyBjb2RlcyBhbmQgPGNvZGU+YWx3YXlzPC9jb2RlPiBmb3IgYWxsIHN0YXR1cyBjb2RlcyAoaW5jbHVkaW5nCiAgICA8Y29kZT4yPHZhcj54eDwvdmFyPjwvY29kZT4pLiBFc3BlY2lhbGx5IGlmIHlvdSB3YW50IHRvIHVuc2V0IGhlYWRlcnMKICAgIHNldCBieSBjZXJ0YWluIG1vZHVsZXMsIHlvdSBzaG91bGQgdHJ5IG91dCwgd2hpY2ggdGFibGUgaXMgYWZmZWN0ZWQuPC9wPgoKICAgIDxwPlRoZSBhY3Rpb24gaXQgcGVyZm9ybXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2Vjb25kCiAgICBhcmd1bWVudC4gVGhpcyBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOjwvcD4KCiAgICA8ZGw+CiAgICA8ZHQ+PGNvZGU+c2V0PC9jb2RlPjwvZHQ+CiAgICA8ZGQ+VGhlIHJlc3BvbnNlIGhlYWRlciBpcyBzZXQsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgaGVhZGVyCiAgICB3aXRoIHRoaXMgbmFtZS4gVGhlIDx2YXI+dmFsdWU8L3Zhcj4gbWF5IGJlIGEgZm9ybWF0IHN0cmluZy48L2RkPgoKICAgIDxkdD48Y29kZT5hcHBlbmQ8L2NvZGU+PC9kdD4KICAgIDxkZD5UaGUgcmVzcG9uc2UgaGVhZGVyIGlzIGFwcGVuZGVkIHRvIGFueSBleGlzdGluZyBoZWFkZXIgb2YKICAgIHRoZSBzYW1lIG5hbWUuIFdoZW4gYSBuZXcgdmFsdWUgaXMgbWVyZ2VkIG9udG8gYW4gZXhpc3RpbmcKICAgIGhlYWRlciBpdCBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgZXhpc3RpbmcgaGVhZGVyIHdpdGggYSBjb21tYS4KICAgIFRoaXMgaXMgdGhlIEhUVFAgc3RhbmRhcmQgd2F5IG9mIGdpdmluZyBhIGhlYWRlciBtdWx0aXBsZSB2YWx1ZXMuPC9kZD4KCiAgICA8ZHQ+PGNvZGU+YWRkPC9jb2RlPjwvZHQ+CiAgICA8ZGQ+VGhlIHJlc3BvbnNlIGhlYWRlciBpcyBhZGRlZCB0byB0aGUgZXhpc3Rpbmcgc2V0IG9mIGhlYWRlcnMsCiAgICBldmVuIGlmIHRoaXMgaGVhZGVyIGFscmVhZHkgZXhpc3RzLiBUaGlzIGNhbiByZXN1bHQgaW4gdHdvCiAgICAob3IgbW9yZSkgaGVhZGVycyBoYXZpbmcgdGhlIHNhbWUgbmFtZS4gVGhpcyBjYW4gbGVhZCB0bwogICAgdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMsIGFuZCBpbiBnZW5lcmFsICJhcHBlbmQiIHNob3VsZCBiZQogICAgdXNlZCBpbnN0ZWFkLjwvZGQ+CgogICAgPGR0Pjxjb2RlPnVuc2V0PC9jb2RlPjwvZHQ+CiAgICA8ZGQ+VGhlIHJlc3BvbnNlIGhlYWRlciBvZiB0aGlzIG5hbWUgaXMgcmVtb3ZlZCwgaWYgaXQgZXhpc3RzLgogICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGhlYWRlcnMgb2YgdGhlIHNhbWUgbmFtZSwgYWxsIHdpbGwgYmUKICAgIHJlbW92ZWQuIDx2YXI+dmFsdWU8L3Zhcj4gbXVzdCBiZSBvbWl0dGVkLjwvZGQ+CgogICAgPGR0Pjxjb2RlPmVjaG88L2NvZGU+PC9kdD4KICAgIDxkZD5SZXF1ZXN0IGhlYWRlcnMgd2l0aCB0aGlzIG5hbWUgYXJlIGVjaG9lZCBiYWNrIGluIHRoZQogICAgcmVzcG9uc2UgaGVhZGVycy4gPHZhcj5oZWFkZXI8L3Zhcj4gbWF5IGJlIGEgCiAgICA8YSBjbGFzcz0iZ2xvc3NhcnlsaW5rIiBocmVmPSIuLi9nbG9zc2FyeS5odG1sI3JlZ2V4IiB0aXRsZT0ic2VlIGdsb3NzYXJ5Ij5yZWd1bGFyIGV4cHJlc3Npb248L2E+LgogICAgPHZhcj52YWx1ZTwvdmFyPiBtdXN0IGJlIG9taXR0ZWQuPC9kZD4KICAgIDwvZGw+CgogICAgPHA+VGhpcyBhcmd1bWVudCBpcyBmb2xsb3dlZCBieSBhIDx2YXI+aGVhZGVyPC92YXI+IG5hbWUsIHdoaWNoCiAgICBjYW4gaW5jbHVkZSB0aGUgZmluYWwgY29sb24sIGJ1dCBpdCBpcyBub3QgcmVxdWlyZWQuIENhc2UgaXMKICAgIGlnbm9yZWQgZm9yIDxjb2RlPnNldDwvY29kZT4sIDxjb2RlPmFwcGVuZDwvY29kZT4sIDxjb2RlPmFkZDwvY29kZT4KICAgIGFuZCA8Y29kZT51bnNldDwvY29kZT4uIFRoZSA8dmFyPmhlYWRlcjwvdmFyPiBuYW1lIGZvciA8Y29kZT5lY2hvPC9jb2RlPgogICAgaXMgY2FzZSBzZW5zaXRpdmUgYW5kIG1heSBiZSBhIDxhIGNsYXNzPSJnbG9zc2FyeWxpbmsiIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwjcmVnZXgiIHRpdGxlPSJzZWUgZ2xvc3NhcnkiPnJlZ3VsYXIgCiAgICBleHByZXNzaW9uPC9hPi48L3A+CgogICAgPHA+Rm9yIDxjb2RlPmFkZDwvY29kZT4sIDxjb2RlPmFwcGVuZDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gYQogICAgPHZhcj52YWx1ZTwvdmFyPiBpcyBzcGVjaWZpZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiBJZiA8dmFyPnZhbHVlPC92YXI+CiAgICBjb250YWlucyBzcGFjZXMsIGl0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGRvdWJsZXF1b3Rlcy4KICAgIDx2YXI+dmFsdWU8L3Zhcj4gbWF5IGJlIGEgY2hhcmFjdGVyIHN0cmluZywgYSBzdHJpbmcgY29udGFpbmluZyBmb3JtYXQKICAgIHNwZWNpZmllcnMgb3IgYSBjb21iaW5hdGlvbiBvZiBib3RoLiBUaGUgZm9sbG93aW5nIGZvcm1hdCBzcGVjaWZpZXJzCiAgICBhcmUgc3VwcG9ydGVkIGluIDx2YXI+dmFsdWU8L3Zhcj46PC9wPgoKICAgIDx0YWJsZSBjbGFzcz0iYm9yZGVyZWQiPjx0ciBjbGFzcz0iaGVhZGVyIj48dGg+Rm9ybWF0PC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JSU8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIHBlcmNlbnQgc2lnbjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJvZGQiPjx0ZD48Y29kZT4ldDwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgdGltZSB0aGUgcmVxdWVzdCB3YXMgcmVjZWl2ZWQgaW4gVW5pdmVyc2FsIENvb3JkaW5hdGVkIFRpbWUKICAgICAgICBzaW5jZSB0aGUgZXBvY2ggKEphbi4gMSwgMTk3MCkgbWVhc3VyZWQgaW4gbWljcm9zZWNvbmRzLiBUaGUgdmFsdWUKICAgICAgICBpcyBwcmVjZWRlZCBieSA8Y29kZT50PTwvY29kZT4uPC90ZD48L3RyPgo8dHI+PHRkPjxjb2RlPiVEPC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPlRoZSB0aW1lIGZyb20gd2hlbiB0aGUgcmVxdWVzdCB3YXMgcmVjZWl2ZWQgdG8gdGhlIHRpbWUgdGhlCiAgICAgICAgaGVhZGVycyBhcmUgc2VudCBvbiB0aGUgd2lyZS4gVGhpcyBpcyBhIG1lYXN1cmUgb2YgdGhlIGR1cmF0aW9uCiAgICAgICAgb2YgdGhlIHJlcXVlc3QuIFRoZSB2YWx1ZSBpcyBwcmVjZWRlZCBieSA8Y29kZT5EPTwvY29kZT4uPC90ZD48L3RyPgo8dHIgY2xhc3M9Im9kZCI+PHRkPjxjb2RlPiV7Rk9PQkFSfWU8L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+VGhlIGNvbnRlbnRzIG9mIHRoZSA8YSBocmVmPSIuLi9lbnYuaHRtbCI+ZW52aXJvbm1lbnQKICAgICAgICB2YXJpYWJsZTwvYT4gPGNvZGU+Rk9PQkFSPC9jb2RlPi48L3RkPjwvdHI+Cjx0cj48dGQ+PGNvZGU+JXtGT09CQVJ9czwvY29kZT48L3RkPgogICAgICAgIDx0ZD5UaGUgY29udGVudHMgb2YgdGhlIDxhIGhyZWY9Im1vZF9zc2wuaHRtbCNlbnZ2YXJzIj5TU0wgZW52aXJvbm1lbnQKICAgICAgICB2YXJpYWJsZTwvYT4gPGNvZGU+Rk9PQkFSPC9jb2RlPiwgaWYgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+IGlzIGVuYWJsZWQuPC90ZD48L3RyPgo8L3RhYmxlPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5Ob3RlPC9oMz4KICAgICAgPHA+VGhlIDxjb2RlPiVzPC9jb2RlPiBmb3JtYXQgc3BlY2lmaWVyIGlzIG9ubHkgYXZhaWxhYmxlIGluCiAgICAgIEFwYWNoZSAyLjEgYW5kIGxhdGVyOyBpdCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIDxjb2RlPiVlPC9jb2RlPgogICAgICB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgZW5hYmxpbmcgPGNvZGU+U1NMT3B0aW9ucwogICAgICArU3RkRW52VmFyczwvY29kZT4uICBJZiA8Y29kZT5TU0xPcHRpb25zICtTdGRFbnZWYXJzPC9jb2RlPiBtdXN0CiAgICAgIGJlIGVuYWJsZWQgYW55d2F5IGZvciBzb21lIG90aGVyIHJlYXNvbiwgPGNvZGU+JWU8L2NvZGU+IHdpbGwgYmUKICAgICAgbW9yZSBlZmZpY2llbnQgdGhhbiA8Y29kZT4lczwvY29kZT4uPC9wPgogICAgPC9kaXY+IAoKICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5IZWFkZXI8L2NvZGU+IGRpcmVjdGl2ZSBtYXkgYmUgZm9sbG93ZWQgYnkgYW4KICAgIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQsIHdoaWNoIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkgY29uZGl0aW9ucyB1bmRlcgogICAgd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHRha2VuLCBvciBtYXkgYmUgdGhlIGtleXdvcmQgPGNvZGU+ZWFybHk8L2NvZGU+CiAgICB0byBzcGVjaWZ5IDxhIGhyZWY9IiNlYXJseSI+ZWFybHkgcHJvY2Vzc2luZzwvYT4uIElmIHRoZQogICAgPGEgaHJlZj0iLi4vZW52Lmh0bWwiPmVudmlyb25tZW50IHZhcmlhYmxlPC9hPiBzcGVjaWZpZWQgaW4gdGhlCiAgICA8Y29kZT5lbnY9PHZhcj4uLi48L3Zhcj48L2NvZGU+IGFyZ3VtZW50IGV4aXN0cyAob3IgaWYgdGhlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZSBkb2VzIG5vdCBleGlzdCBhbmQgPGNvZGU+ZW52PSE8dmFyPi4uLjwvdmFyPjwvY29kZT4gaXMgc3BlY2lmaWVkKQogICAgdGhlbiB0aGUgYWN0aW9uIHNwZWNpZmllZCBieSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SGVhZGVyPC9jb2RlPiBkaXJlY3RpdmUKICAgIHdpbGwgdGFrZSBlZmZlY3QuIE90aGVyd2lzZSwgdGhlIGRpcmVjdGl2ZSB3aWxsIGhhdmUgbm8gZWZmZWN0CiAgICBvbiB0aGUgcmVxdWVzdC48L3A+CgogICAgPHA+RXhjZXB0IGluIDxhIGhyZWY9IiNlYXJseSI+ZWFybHk8L2E+IG1vZGUsIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SGVhZGVyPC9jb2RlPiBkaXJlY3RpdmVzIGFyZSBwcm9jZXNzZWQganVzdAogICAgYmVmb3JlIHRoZSByZXNwb25zZSBpcyBzZW50IHRvIHRoZSBuZXR3b3JrLiBUaGVzZSBtZWFucyB0aGF0IGl0IGlzCiAgICBwb3NzaWJsZSB0byBzZXQgYW5kL29yIG92ZXJyaWRlIG1vc3QgaGVhZGVycywgZXhjZXB0IGZvciB0aG9zZSBoZWFkZXJzCiAgICBhZGRlZCBieSB0aGUgaGVhZGVyIGZpbHRlci48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iUmVxdWVzdEhlYWRlciIgaWQ9IlJlcXVlc3RIZWFkZXIiPlJlcXVlc3RIZWFkZXI8L2E+IDxhIG5hbWU9InJlcXVlc3RoZWFkZXIiIGlkPSJyZXF1ZXN0aGVhZGVyIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5Db25maWd1cmUgSFRUUCByZXF1ZXN0IGhlYWRlcnM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+UmVxdWVzdEhlYWRlciBzZXR8YXBwZW5kfGFkZHx1bnNldCA8dmFyPmhlYWRlcjwvdmFyPgpbPHZhcj52YWx1ZTwvdmFyPl0gW2Vhcmx5fGVudj1bIV08dmFyPnZhcmlhYmxlPC92YXI+XTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2hlYWRlcnM8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBjYW4gcmVwbGFjZSwgbWVyZ2Ugb3IgcmVtb3ZlIEhUVFAgcmVxdWVzdAogICAgaGVhZGVycy4gVGhlIGhlYWRlciBpcyBtb2RpZmllZCBqdXN0IGJlZm9yZSB0aGUgY29udGVudCBoYW5kbGVyCiAgICBpcyBydW4sIGFsbG93aW5nIGluY29taW5nIGhlYWRlcnMgdG8gYmUgbW9kaWZpZWQuIFRoZSBhY3Rpb24gaXQKICAgIHBlcmZvcm1zIGlzIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFyZ3VtZW50LiBUaGlzIGNhbiBiZSBvbmUKICAgIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOjwvcD4KCiAgICA8ZGw+CiAgICA8ZHQ+PGNvZGU+c2V0PC9jb2RlPjwvZHQ+CiAgICA8ZGQ+VGhlIHJlcXVlc3QgaGVhZGVyIGlzIHNldCwgcmVwbGFjaW5nIGFueSBwcmV2aW91cyBoZWFkZXIKICAgIHdpdGggdGhpcyBuYW1lPC9kZD4KCiAgICA8ZHQ+PGNvZGU+YXBwZW5kPC9jb2RlPjwvZHQ+CiAgICA8ZGQ+VGhlIHJlcXVlc3QgaGVhZGVyIGlzIGFwcGVuZGVkIHRvIGFueSBleGlzdGluZyBoZWFkZXIgb2YgdGhlCiAgICBzYW1lIG5hbWUuIFdoZW4gYSBuZXcgdmFsdWUgaXMgbWVyZ2VkIG9udG8gYW4gZXhpc3RpbmcgaGVhZGVyCiAgICBpdCBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgZXhpc3RpbmcgaGVhZGVyIHdpdGggYSBjb21tYS4gVGhpcwogICAgaXMgdGhlIEhUVFAgc3RhbmRhcmQgd2F5IG9mIGdpdmluZyBhIGhlYWRlciBtdWx0aXBsZQogICAgdmFsdWVzLjwvZGQ+CgogICAgPGR0Pjxjb2RlPmFkZDwvY29kZT48L2R0PgogICAgPGRkPlRoZSByZXF1ZXN0IGhlYWRlciBpcyBhZGRlZCB0byB0aGUgZXhpc3Rpbmcgc2V0IG9mIGhlYWRlcnMsCiAgICBldmVuIGlmIHRoaXMgaGVhZGVyIGFscmVhZHkgZXhpc3RzLiBUaGlzIGNhbiByZXN1bHQgaW4gdHdvCiAgICAob3IgbW9yZSkgaGVhZGVycyBoYXZpbmcgdGhlIHNhbWUgbmFtZS4gVGhpcyBjYW4gbGVhZCB0bwogICAgdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMsIGFuZCBpbiBnZW5lcmFsIDxjb2RlPmFwcGVuZDwvY29kZT4gc2hvdWxkIGJlCiAgICB1c2VkIGluc3RlYWQuPC9kZD4KCiAgICA8ZHQ+PGNvZGU+dW5zZXQ8L2NvZGU+PC9kdD4KICAgIDxkZD5UaGUgcmVxdWVzdCBoZWFkZXIgb2YgdGhpcyBuYW1lIGlzIHJlbW92ZWQsIGlmIGl0IGV4aXN0cy4gSWYKICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBoZWFkZXJzIG9mIHRoZSBzYW1lIG5hbWUsIGFsbCB3aWxsIGJlIHJlbW92ZWQuCiAgICA8dmFyPnZhbHVlPC92YXI+IG11c3QgYmUgb21pdHRlZC48L2RkPgogICAgPC9kbD4KCiAgICA8cD5UaGlzIGFyZ3VtZW50IGlzIGZvbGxvd2VkIGJ5IGEgaGVhZGVyIG5hbWUsIHdoaWNoIGNhbgogICAgaW5jbHVkZSB0aGUgZmluYWwgY29sb24sIGJ1dCBpdCBpcyBub3QgcmVxdWlyZWQuIENhc2UgaXMKICAgIGlnbm9yZWQuIEZvciA8Y29kZT5hZGQ8L2NvZGU+LCA8Y29kZT5hcHBlbmQ8L2NvZGU+IGFuZAogICAgPGNvZGU+c2V0PC9jb2RlPiBhIDx2YXI+dmFsdWU8L3Zhcj4gaXMgZ2l2ZW4gYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiBJZgogICAgPHZhcj52YWx1ZTwvdmFyPiBjb250YWlucyBzcGFjZXMsIGl0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGRvdWJsZQogICAgcXVvdGVzLiBGb3IgdW5zZXQsIG5vIDx2YXI+dmFsdWU8L3Zhcj4gc2hvdWxkIGJlIGdpdmVuLgogICAgPHZhcj52YWx1ZTwvdmFyPiBtYXkgYmUgYSBjaGFyYWN0ZXIgc3RyaW5nLCBhIHN0cmluZyBjb250YWluaW5nIGZvcm1hdAogICAgc3BlY2lmaWVycyBvciBhIGNvbWJpbmF0aW9uIG9mIGJvdGguIFRoZSBzdXBwb3J0ZWQgZm9ybWF0IHNwZWNpZmllcnMKICAgIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNoZWFkZXIiPkhlYWRlcjwvYT48L2NvZGU+LAogICAgcGxlYXNlIGhhdmUgYSBsb29rIHRoZXJlIGZvciBkZXRhaWxzLjwvcD4KCiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UmVxdWVzdEhlYWRlcjwvY29kZT4gZGlyZWN0aXZlIG1heSBiZSBmb2xsb3dlZCBieQogICAgYW4gYWRkaXRpb25hbCBhcmd1bWVudCwgd2hpY2ggbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBjb25kaXRpb25zIHVuZGVyCiAgICB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdGFrZW4sIG9yIG1heSBiZSB0aGUga2V5d29yZCA8Y29kZT5lYXJseTwvY29kZT4KICAgIHRvIHNwZWNpZnkgPGEgaHJlZj0iI2Vhcmx5Ij5lYXJseSBwcm9jZXNzaW5nPC9hPi4gSWYgdGhlCiAgICA8YSBocmVmPSIuLi9lbnYuaHRtbCI+ZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlPC9hPiBzcGVjaWZpZWQgaW4gdGhlIDxjb2RlPmVudj08dmFyPi4uLjwvdmFyPjwvY29kZT4gYXJndW1lbnQKICAgIGV4aXN0cyAob3IgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0IGFuZAogICAgPGNvZGU+ZW52PSE8dmFyPi4uLjwvdmFyPjwvY29kZT4gaXMgc3BlY2lmaWVkKSB0aGVuIHRoZSBhY3Rpb24gc3BlY2lmaWVkCiAgICBieSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UmVxdWVzdEhlYWRlcjwvY29kZT4gZGlyZWN0aXZlIHdpbGwgdGFrZSBlZmZlY3QuCiAgICBPdGhlcndpc2UsIHRoZSBkaXJlY3RpdmUgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgcmVxdWVzdC48L3A+CgogICAgPHA+RXhjZXB0IGluIDxhIGhyZWY9IiNlYXJseSI+ZWFybHk8L2E+IG1vZGUsIHRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UmVxdWVzdEhlYWRlcjwvY29kZT4gZGlyZWN0aXZlIGlzIHByb2Nlc3NlZAogICAganVzdCBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgcnVuIGJ5IGl0cyBoYW5kbGVyIGluIHRoZSBmaXh1cCBwaGFzZS4KICAgIFRoaXMgc2hvdWxkIGFsbG93IGhlYWRlcnMgZ2VuZXJhdGVkIGJ5IHRoZSBicm93c2VyLCBvciBieSBBcGFjaGUKICAgIGlucHV0IGZpbHRlcnMgdG8gYmUgb3ZlcnJpZGRlbiBvciBtb2RpZmllZC48L3A+Cgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9oZWFkZXJzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2hlYWRlcnMuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2hlYWRlcnMuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMTk5NS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBvciBpdHMgbGljZW5zb3JzLCBhcyBhcHBsaWNhYmxlLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==