PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9hdXRvaW5kZXggLSBBcGFjaGUgSFRUUCBTZXJ2ZXI8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuMTwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MtcHJvamVjdC8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi4vIj5WZXJzaW9uIDIuMTwvYT4gJmd0OyA8YSBocmVmPSIuLyI+TW9kdWxlczwvYT48L2Rpdj4KPGRpdiBpZD0icGFnZS1jb250ZW50Ij4KPGRpdiBpZD0icHJlYW1ibGUiPjxoMT5BcGFjaGUgTW9kdWxlIG1vZF9hdXRvaW5kZXg8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2F1dG9pbmRleC5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+Cjx0YWJsZSBjbGFzcz0ibW9kdWxlIj48dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5HZW5lcmF0ZXMgZGlyZWN0b3J5IGluZGV4ZXMsCiAgICBhdXRvbWF0aWNhbGx5LCBzaW1pbGFyIHRvIHRoZSBVbml4IDxjb2RlPmxzPC9jb2RlPiBjb21tYW5kIG9yIHRoZQogICAgV2luMzIgPGNvZGU+ZGlyPC9jb2RlPiBzaGVsbCBjb21tYW5kPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNNb2R1bGVJZGVudGlmaWVyIj5Nb2R1bGWgSWRlbnRpZmllcjo8L2E+PC90aD48dGQ+YXV0b2luZGV4X21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0b2luZGV4LmM8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgogCiAgICAgIDxwPlRoZSBpbmRleCBvZiBhIGRpcmVjdG9yeSBjYW4gY29tZSBmcm9tIG9uZSBvZiB0d28KICAgICAgc291cmNlczo8L3A+CgogICAgPHVsPgogICAgICA8bGk+QSBmaWxlIHdyaXR0ZW4gYnkgdGhlIHVzZXIsIHR5cGljYWxseSBjYWxsZWQKICAgICAgPGNvZGU+aW5kZXguaHRtbDwvY29kZT4uIFRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2Rpci5odG1sI2RpcmVjdG9yeWluZGV4Ij5EaXJlY3RvcnlJbmRleDwvYT48L2NvZGU+IGRpcmVjdGl2ZSBzZXRzIHRoZQogICAgICBuYW1lIG9mIHRoaXMgZmlsZS4gVGhpcyBpcyBjb250cm9sbGVkIGJ5CiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZGlyLmh0bWwiPm1vZF9kaXI8L2E+PC9jb2RlPi48L2xpPgoKICAgICAgPGxpPk90aGVyd2lzZSwgYSBsaXN0aW5nIGdlbmVyYXRlZCBieSB0aGUgc2VydmVyLiBUaGUgb3RoZXIKICAgICAgZGlyZWN0aXZlcyBjb250cm9sIHRoZSBmb3JtYXQgb2YgdGhpcyBsaXN0aW5nLiBUaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FkZGljb24iPkFkZEljb248L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FkZGljb25ieWVuY29kaW5nIj5BZGRJY29uQnlFbmNvZGluZzwvYT48L2NvZGU+IGFuZAogICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWRkaWNvbmJ5dHlwZSI+QWRkSWNvbkJ5VHlwZTwvYT48L2NvZGU+IGFyZQogICAgICB1c2VkIHRvIHNldCBhIGxpc3Qgb2YgaWNvbnMgdG8gZGlzcGxheSBmb3IgdmFyaW91cyBmaWxlIHR5cGVzOwogICAgICBmb3IgZWFjaCBmaWxlIGxpc3RlZCwgdGhlIGZpcnN0IGljb24gbGlzdGVkIHRoYXQgbWF0Y2hlcyB0aGUKICAgICAgZmlsZSBpcyBkaXNwbGF5ZWQuIFRoZXNlIGFyZSBjb250cm9sbGVkIGJ5CiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiPm1vZF9hdXRvaW5kZXg8L2E+PC9jb2RlPi48L2xpPgogICAgPC91bD4KICAgIDxwPlRoZSB0d28gZnVuY3Rpb25zIGFyZSBzZXBhcmF0ZWQgc28gdGhhdCB5b3UgY2FuIGNvbXBsZXRlbHkKICAgIHJlbW92ZSAob3IgcmVwbGFjZSkgYXV0b21hdGljIGluZGV4IGdlbmVyYXRpb24gc2hvdWxkIHlvdSB3YW50CiAgICB0by48L3A+IAoKICAgIDxwPkF1dG9tYXRpYyBpbmRleCBnZW5lcmF0aW9uIGlzIGVuYWJsZWQgd2l0aCB1c2luZwogICAgPGNvZGU+T3B0aW9ucyArSW5kZXhlczwvY29kZT4uIFNlZSB0aGUgCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI29wdGlvbnMiPk9wdGlvbnM8L2E+PC9jb2RlPiBkaXJlY3RpdmUgZm9yCiAgICBtb3JlIGRldGFpbHMuPC9wPgoKICAgIDxwPklmIHRoZSA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLmZhbmN5aW5kZXhpbmciPkZhbmN5SW5kZXhpbmc8L2E+PC9jb2RlPiBvcHRpb24gaXMgZ2l2ZW4gd2l0aCB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2luZGV4b3B0aW9ucyI+SW5kZXhPcHRpb25zPC9hPjwvY29kZT4gZGlyZWN0aXZlLAogICAgdGhlIGNvbHVtbiBoZWFkZXJzIGFyZSBsaW5rcyB0aGF0IGNvbnRyb2wgdGhlIG9yZGVyIG9mIHRoZQogICAgZGlzcGxheS4gSWYgeW91IHNlbGVjdCBhIGhlYWRlciBsaW5rLCB0aGUgbGlzdGluZyB3aWxsIGJlCiAgICByZWdlbmVyYXRlZCwgc29ydGVkIGJ5IHRoZSB2YWx1ZXMgaW4gdGhhdCBjb2x1bW4uIFNlbGVjdGluZyB0aGUKICAgIHNhbWUgaGVhZGVyIHJlcGVhdGVkbHkgdG9nZ2xlcyBiZXR3ZWVuIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZwogICAgb3JkZXIuIFRoZXNlIGNvbHVtbiBoZWFkZXIgbGlua3MgYXJlIHN1cHByZXNzZWQgd2l0aAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2luZGV4b3B0aW9ucyI+SW5kZXhPcHRpb25zPC9hPjwvY29kZT4gZGlyZWN0aXZlJ3MKICAgIDxjb2RlPlN1cHByZXNzQ29sdW1uU29ydGluZzwvY29kZT4gb3B0aW9uLjwvcD4KCiAgICA8cD5Ob3RlIHRoYXQgd2hlbiB0aGUgZGlzcGxheSBpcyBzb3J0ZWQgYnkgIlNpemUiLCBpdCdzIHRoZQogICAgPGVtPmFjdHVhbDwvZW0+IHNpemUgb2YgdGhlIGZpbGVzIHRoYXQncyB1c2VkLCBub3QgdGhlCiAgICBkaXNwbGF5ZWQgdmFsdWUgLSBzbyBhIDEwMTAtYnl0ZSBmaWxlIHdpbGwgYWx3YXlzIGJlIGRpc3BsYXllZAogICAgYmVmb3JlIGEgMTAxMS1ieXRlIGZpbGUgKGlmIGluIGFzY2VuZGluZyBvcmRlcikgZXZlbiB0aG91Z2gKICAgIHRoZXkgYm90aCBhcmUgc2hvd24gYXMgIjFLIi48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWRkYWx0Ij5BZGRBbHQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWRkYWx0YnllbmNvZGluZyI+QWRkQWx0QnlFbmNvZGluZzwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhZGRhbHRieXR5cGUiPkFkZEFsdEJ5VHlwZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhZGRkZXNjcmlwdGlvbiI+QWRkRGVzY3JpcHRpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWRkaWNvbiI+QWRkSWNvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhZGRpY29uYnllbmNvZGluZyI+QWRkSWNvbkJ5RW5jb2Rpbmc8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWRkaWNvbmJ5dHlwZSI+QWRkSWNvbkJ5VHlwZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNkZWZhdWx0aWNvbiI+RGVmYXVsdEljb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaGVhZGVybmFtZSI+SGVhZGVyTmFtZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNpbmRleGlnbm9yZSI+SW5kZXhJZ25vcmU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaW5kZXhvcHRpb25zIj5JbmRleE9wdGlvbnM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaW5kZXhvcmRlcmRlZmF1bHQiPkluZGV4T3JkZXJEZWZhdWx0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2luZGV4c3R5bGVzaGVldCI+SW5kZXhTdHlsZVNoZWV0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlYWRtZW5hbWUiPlJlYWRtZU5hbWU8L2E+PC9saT4KPC91bD4KPGgzPlRvcGljczwvaDM+Cjx1bCBpZD0idG9waWNzIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcXVlcnkiPkF1dG9pbmRleCBSZXF1ZXN0IFF1ZXJ5IEFyZ3VtZW50czwvYT48L2xpPgo8L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJxdWVyeSIgaWQ9InF1ZXJ5Ij5BdXRvaW5kZXggUmVxdWVzdCBRdWVyeSBBcmd1bWVudHM8L2E+PC9oMj4KICAgIAoKICAgIDxwPkFwYWNoZSAyLjAuMjMgcmVvcmdhbml6ZWQgdGhlIFF1ZXJ5IEFyZ3VtZW50cyBmb3IgQ29sdW1uCiAgICBTb3J0aW5nLCBhbmQgaW50cm9kdWNlZCBhbiBlbnRpcmUgZ3JvdXAgb2YgbmV3IHF1ZXJ5IG9wdGlvbnMuCiAgICBUbyBlZmZlY3RpdmVseSBlbGltaW5hdGUgYWxsIGNsaWVudCBjb250cm9sIG92ZXIgdGhlIG91dHB1dCwKICAgIHRoZSA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLmlnbm9yZWNsaWVudCI+SW5kZXhPcHRpb25zCiAgICBJZ25vcmVDbGllbnQ8L2E+PC9jb2RlPiBvcHRpb24gd2FzIGludHJvZHVjZWQuPC9wPgoKICAgIDxwPlRoZSBjb2x1bW4gc29ydGluZyBoZWFkZXJzIHRoZW1zZWx2ZXMgYXJlIHNlbGYtcmVmZXJlbmNpbmcKICAgIGh5cGVybGlua3MgdGhhdCBhZGQgdGhlIHNvcnQgcXVlcnkgb3B0aW9ucyBzaG93biBiZWxvdy4gQW55CiAgICBvcHRpb24gYmVsb3cgbWF5IGJlIGFkZGVkIHRvIGFueSByZXF1ZXN0IGZvciB0aGUgZGlyZWN0b3J5CiAgICByZXNvdXJjZS48L3A+CgogICAgPHVsPgogICAgICA8bGk+PGNvZGU+Qz1OPC9jb2RlPiBzb3J0cyB0aGUgZGlyZWN0b3J5IGJ5IGZpbGUgbmFtZTwvbGk+CgogICAgICA8bGk+PGNvZGU+Qz1NPC9jb2RlPiBzb3J0cyB0aGUgZGlyZWN0b3J5IGJ5IGxhc3QtbW9kaWZpZWQKICAgICAgZGF0ZSwgdGhlbiBmaWxlIG5hbWU8L2xpPgoKICAgICAgPGxpPjxjb2RlPkM9UzwvY29kZT4gc29ydHMgdGhlIGRpcmVjdG9yeSBieSBzaXplLCB0aGVuIGZpbGUKICAgICAgbmFtZTwvbGk+CgogICAgICA8bGkgY2xhc3M9InNlcGFyYXRlIj48Y29kZT5DPUQ8L2NvZGU+IHNvcnRzIHRoZSBkaXJlY3RvcnkgYnkgZGVzY3JpcHRpb24sIHRoZW4KICAgICAgZmlsZSBuYW1lPC9saT4KCiAgICAgIDxsaT48Y29kZT5PPUE8L2NvZGU+IHNvcnRzIHRoZSBsaXN0aW5nIGluIEFzY2VuZGluZwogICAgICBPcmRlcjwvbGk+CgogICAgICA8bGkgY2xhc3M9InNlcGFyYXRlIj48Y29kZT5PPUQ8L2NvZGU+IHNvcnRzIHRoZSBsaXN0aW5nIGluIERlc2NlbmRpbmcKICAgICAgT3JkZXI8L2xpPgoKICAgICAgPGxpPjxjb2RlPkY9MDwvY29kZT4gZm9ybWF0cyB0aGUgbGlzdGluZyBhcyBhIHNpbXBsZSBsaXN0CiAgICAgIChub3QgRmFuY3lJbmRleGVkKTwvbGk+CgogICAgICA8bGk+PGNvZGU+Rj0xPC9jb2RlPiBmb3JtYXRzIHRoZSBsaXN0aW5nIGFzIGEgRmFuY3lJbmRleGVkCiAgICAgIGxpc3Q8L2xpPgoKICAgICAgPGxpIGNsYXNzPSJzZXBhcmF0ZSI+PGNvZGU+Rj0yPC9jb2RlPiBmb3JtYXRzIHRoZSBsaXN0aW5nIGFzIGFuCiAgICAgIEhUTUxUYWJsZSBGYW5jeUluZGV4ZWQgbGlzdDwvbGk+CgogICAgICA8bGk+PGNvZGU+Vj0wPC9jb2RlPiBkaXNhYmxlcyB2ZXJzaW9uIHNvcnRpbmc8L2xpPgoKICAgICAgPGxpIGNsYXNzPSJzZXBhcmF0ZSI+PGNvZGU+Vj0xPC9jb2RlPiBlbmFibGVzIHZlcnNpb24gc29ydGluZzwvbGk+CgogICAgICA8bGk+PGNvZGU+UD08dmFyPnBhdHRlcm48L3Zhcj48L2NvZGU+IGxpc3RzIG9ubHkgZmlsZXMgbWF0Y2hpbmcKICAgICAgdGhlIGdpdmVuIDx2YXI+cGF0dGVybjwvdmFyPjwvbGk+CiAgICA8L3VsPgoKICAgIDxwPk5vdGUgdGhhdCB0aGUgJ1AnYXR0ZXJuIHF1ZXJ5IGFyZ3VtZW50IGlzIHRlc3RlZAogICAgPGVtPmFmdGVyPC9lbT4gdGhlIHVzdWFsIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNpbmRleGlnbm9yZSI+SW5kZXhJZ25vcmU8L2E+PC9jb2RlPiBkaXJlY3RpdmVzIGFyZSBwcm9jZXNzZWQsCiAgICBhbmQgYWxsIGZpbGUgbmFtZXMgYXJlIHN0aWxsIHN1YmplY3RlZCB0byB0aGUgc2FtZSBjcml0ZXJpYSBhcwogICAgYW55IG90aGVyIGF1dG9pbmRleCBsaXN0aW5nLiBUaGUgUXVlcnkgQXJndW1lbnRzIHBhcnNlciBpbgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRvaW5kZXguaHRtbCI+bW9kX2F1dG9pbmRleDwvYT48L2NvZGU+IHdpbGwgc3RvcCBhYnJ1cHRseSB3aGVuIGFuIHVucmVjb2duaXplZAogICAgb3B0aW9uIGlzIGVuY291bnRlcmVkLiBUaGUgUXVlcnkgQXJndW1lbnRzIG11c3QgYmUgd2VsbCBmb3JtZWQsCiAgICBhY2NvcmRpbmcgdG8gdGhlIHRhYmxlIGFib3ZlLjwvcD4KCiAgICA8cD5UaGUgc2ltcGxlIGV4YW1wbGUgYmVsb3csIHdoaWNoIGNhbiBiZSBjbGlwcGVkIGFuZCBzYXZlZCBpbgogICAgYSBoZWFkZXIuaHRtbCBmaWxlLCBpbGx1c3RyYXRlcyB0aGVzZSBxdWVyeSBvcHRpb25zLiBOb3RlIHRoYXQKICAgIHRoZSB1bmtub3duICJYIiBhcmd1bWVudCwgZm9yIHRoZSBzdWJtaXQgYnV0dG9uLCBpcyBsaXN0ZWQgbGFzdAogICAgdG8gYXNzdXJlIHRoZSBhcmd1bWVudHMgYXJlIGFsbCBwYXJzZWQgYmVmb3JlIG1vZF9hdXRvaW5kZXgKICAgIGVuY291bnRlcnMgdGhlIFg9R28gaW5wdXQuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAmbHQ7Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJnZXQiJmd0OzxiciAvPgogICAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICBTaG93IG1lIGEgJmx0O3NlbGVjdCBuYW1lPSJGIiZndDs8YnIgLz4KICAgICAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9IjAiJmd0OyBQbGFpbiBsaXN0Jmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSIxIiBzZWxlY3RlZD0ic2VsZWN0ZWQiJmd0OyBGYW5jeSBsaXN0Jmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSIyIiZndDsgVGFibGUgbGlzdCZsdDsvb3B0aW9uJmd0OzxiciAvPgogICAgICAgIDwvc3Bhbj4KICAgICAgICAmbHQ7L3NlbGVjdCZndDs8YnIgLz4KICAgICAgICBTb3J0ZWQgYnkgJmx0O3NlbGVjdCBuYW1lPSJDIiZndDs8YnIgLz4KICAgICAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9Ik4iIHNlbGVjdGVkPSJzZWxlY3RlZCImZ3Q7IE5hbWUmbHQ7L29wdGlvbiZndDs8YnIgLz4KICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9Ik0iJmd0OyBEYXRlIE1vZGlmaWVkJmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSJTIiZndDsgU2l6ZSZsdDsvb3B0aW9uJmd0OzxiciAvPgogICAgICAgICAgJmx0O29wdGlvbiB2YWx1ZT0iRCImZ3Q7IERlc2NyaXB0aW9uJmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgPC9zcGFuPgogICAgICAgICZsdDsvc2VsZWN0Jmd0OzxiciAvPgogICAgICAgICZsdDtzZWxlY3QgbmFtZT0iTyImZ3Q7PGJyIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSJBIiBzZWxlY3RlZD0ic2VsZWN0ZWQiJmd0OyBBc2NlbmRpbmcmbHQ7L29wdGlvbiZndDs8YnIgLz4KICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9IkQiJmd0OyBEZXNjZW5kaW5nJmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgPC9zcGFuPgogICAgICAgICZsdDsvc2VsZWN0Jmd0OzxiciAvPgogICAgICAgICZsdDtzZWxlY3QgbmFtZT0iViImZ3Q7PGJyIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD0ic2VsZWN0ZWQiJmd0OyBpbiBOb3JtYWwgb3JkZXImbHQ7L29wdGlvbiZndDs8YnIgLz4KICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9IjEiJmd0OyBpbiBWZXJzaW9uIG9yZGVyJmx0Oy9vcHRpb24mZ3Q7PGJyIC8+CiAgICAgICAgPC9zcGFuPgogICAgICAgICZsdDsvc2VsZWN0Jmd0OzxiciAvPgogICAgICAgIE1hdGNoaW5nICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQIiB2YWx1ZT0iKiIgLyZndDs8YnIgLz4KICAgICAgICAmbHQ7aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJYIiB2YWx1ZT0iR28iIC8mZ3Q7PGJyIC8+CiAgICAgIDwvc3Bhbj4KICAgICAgJmx0Oy9mb3JtJmd0OwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBZGRBbHQiIGlkPSJBZGRBbHQiPkFkZEFsdDwvYT4gPGEgbmFtZT0iYWRkYWx0IiBpZD0iYWRkYWx0Ij5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5BbHRlcm5hdGUgdGV4dCB0byBkaXNwbGF5IGZvciBhIGZpbGUsIGluc3RlYWQgb2YgYW4KaWNvbiBzZWxlY3RlZCBieSBmaWxlbmFtZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BZGRBbHQgPHZhcj5zdHJpbmc8L3Zhcj4gPHZhcj5maWxlPC92YXI+IFs8dmFyPmZpbGU8L3Zhcj5dIC4uLjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5JbmRleGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dG9pbmRleDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkFkZEFsdDwvY29kZT4gcHJvdmlkZXMgdGhlIGFsdGVybmF0ZSB0ZXh0IHRvCiAgICBkaXNwbGF5IGZvciBhIGZpbGUsIGluc3RlYWQgb2YgYW4gaWNvbiwgZm9yIDxjb2RlPjxhIGhyZWY9IiNpbmRleG9wdGlvbnMuZmFuY3lpbmRleGluZyI+RmFuY3lJbmRleGluZzwvYT48L2NvZGU+LgogICAgPHZhcj5GaWxlPC92YXI+IGlzIGEgZmlsZSBleHRlbnNpb24sIHBhcnRpYWwgZmlsZW5hbWUsIHdpbGQtY2FyZAogICAgZXhwcmVzc2lvbiBvciBmdWxsIGZpbGVuYW1lIGZvciBmaWxlcyB0byBkZXNjcmliZS4KICAgIElmIDx2YXI+U3RyaW5nPC92YXI+IGNvbnRhaW5zIGFueSB3aGl0ZXNwYWNlLCB5b3UgaGF2ZSB0byBlbmNsb3NlIGl0CiAgICBpbiBxdW90ZXMgKDxjb2RlPiI8L2NvZGU+IG9yIDxjb2RlPic8L2NvZGU+KS4gVGhpcyBhbHRlcm5hdGUgdGV4dAogICAgaXMgZGlzcGxheWVkIGlmIHRoZSBjbGllbnQgaXMgaW1hZ2UtaW5jYXBhYmxlLCBoYXMgaW1hZ2UgbG9hZGluZwogICAgZGlzYWJsZWQsIG9yIGZhaWxzIHRvIHJldHJpZXZlIHRoZSBpY29uLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZXM8L2gzPjxwPjxjb2RlPgogICAgICBBZGRBbHQgIlBERiBmaWxlIiAqLnBkZjxiciAvPgogICAgICBBZGRBbHQgQ29tcHJlc3NlZCAqLmd6ICouemlwICouWgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBZGRBbHRCeUVuY29kaW5nIiBpZD0iQWRkQWx0QnlFbmNvZGluZyI+QWRkQWx0QnlFbmNvZGluZzwvYT4gPGEgbmFtZT0iYWRkYWx0YnllbmNvZGluZyIgaWQ9ImFkZGFsdGJ5ZW5jb2RpbmciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFsdGVybmF0ZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIGEgZmlsZSBpbnN0ZWFkIG9mIGFuIGljb24Kc2VsZWN0ZWQgYnkgTUlNRS1lbmNvZGluZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BZGRBbHRCeUVuY29kaW5nIDx2YXI+c3RyaW5nPC92YXI+IDx2YXI+TUlNRS1lbmNvZGluZzwvdmFyPgpbPHZhcj5NSU1FLWVuY29kaW5nPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BZGRBbHRCeUVuY29kaW5nPC9jb2RlPiBwcm92aWRlcyB0aGUgYWx0ZXJuYXRlCiAgICB0ZXh0IHRvIGRpc3BsYXkgZm9yIGEgZmlsZSwgaW5zdGVhZCBvZiBhbiBpY29uLCBmb3IgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIj5GYW5jeUluZGV4aW5nPC9hPjwvY29kZT4uCiAgICA8dmFyPk1JTUUtZW5jb2Rpbmc8L3Zhcj4gaXMgYSB2YWxpZCBjb250ZW50LWVuY29kaW5nLCBzdWNoIGFzCiAgICA8Y29kZT54LWNvbXByZXNzPC9jb2RlPi4gSWYgPHZhcj5TdHJpbmc8L3Zhcj4gY29udGFpbnMgYW55IHdoaXRlc3BhY2UsCiAgICB5b3UgaGF2ZSB0byBlbmNsb3NlIGl0IGluIHF1b3RlcyAoPGNvZGU+IjwvY29kZT4gb3IgPGNvZGU+JzwvY29kZT4pLgogICAgVGhpcyBhbHRlcm5hdGUgdGV4dCBpcyBkaXNwbGF5ZWQgaWYgdGhlIGNsaWVudCBpcyBpbWFnZS1pbmNhcGFibGUsCiAgICBoYXMgaW1hZ2UgbG9hZGluZyBkaXNhYmxlZCwgb3IgZmFpbHMgdG8gcmV0cmlldmUgdGhlIGljb24uPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgQWRkQWx0QnlFbmNvZGluZyBnemlwIHgtZ3ppcAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBZGRBbHRCeVR5cGUiIGlkPSJBZGRBbHRCeVR5cGUiPkFkZEFsdEJ5VHlwZTwvYT4gPGEgbmFtZT0iYWRkYWx0Ynl0eXBlIiBpZD0iYWRkYWx0Ynl0eXBlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5BbHRlcm5hdGUgdGV4dCB0byBkaXNwbGF5IGZvciBhIGZpbGUsIGluc3RlYWQgb2YgYW4KaWNvbiBzZWxlY3RlZCBieSBNSU1FIGNvbnRlbnQtdHlwZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BZGRBbHRCeVR5cGUgPHZhcj5zdHJpbmc8L3Zhcj4gPHZhcj5NSU1FLXR5cGU8L3Zhcj4KWzx2YXI+TUlNRS10eXBlPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BZGRBbHRCeVR5cGU8L2NvZGU+IHNldHMgdGhlIGFsdGVybmF0ZSB0ZXh0IHRvCiAgICBkaXNwbGF5IGZvciBhIGZpbGUsIGluc3RlYWQgb2YgYW4gaWNvbiwgZm9yIDxjb2RlPjxhIGhyZWY9IiNpbmRleG9wdGlvbnMuZmFuY3lpbmRleGluZyI+RmFuY3lJbmRleGluZzwvYT48L2NvZGU+LgogICAgPHZhcj5NSU1FLXR5cGU8L3Zhcj4gaXMgYSB2YWxpZCBjb250ZW50LXR5cGUsIHN1Y2ggYXMKICAgIDxjb2RlPnRleHQvaHRtbDwvY29kZT4uIElmIDx2YXI+U3RyaW5nPC92YXI+IGNvbnRhaW5zIGFueSB3aGl0ZXNwYWNlLAogICAgeW91IGhhdmUgdG8gZW5jbG9zZSBpdCBpbiBxdW90ZXMgKDxjb2RlPiI8L2NvZGU+IG9yIDxjb2RlPic8L2NvZGU+KS4KICAgIFRoaXMgYWx0ZXJuYXRlIHRleHQgaXMgZGlzcGxheWVkIGlmIHRoZSBjbGllbnQgaXMgaW1hZ2UtaW5jYXBhYmxlLAogICAgaGFzIGltYWdlIGxvYWRpbmcgZGlzYWJsZWQsIG9yIGZhaWxzIHRvIHJldHJpZXZlIHRoZSBpY29uLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgIEFkZEFsdEJ5VHlwZSAncGxhaW4gdGV4dCcgdGV4dC9wbGFpbgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBZGREZXNjcmlwdGlvbiIgaWQ9IkFkZERlc2NyaXB0aW9uIj5BZGREZXNjcmlwdGlvbjwvYT4gPGEgbmFtZT0iYWRkZGVzY3JpcHRpb24iIGlkPSJhZGRkZXNjcmlwdGlvbiI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGVzY3JpcHRpb24gdG8gZGlzcGxheSBmb3IgYSBmaWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkFkZERlc2NyaXB0aW9uIDx2YXI+c3RyaW5nIGZpbGU8L3Zhcj4gWzx2YXI+ZmlsZTwvdmFyPl0gLi4uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkluZGV4ZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0b2luZGV4PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBzZXRzIHRoZSBkZXNjcmlwdGlvbiB0byBkaXNwbGF5IGZvciBhIGZpbGUsIGZvcgogICAgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIj5GYW5jeUluZGV4aW5nPC9hPjwvY29kZT4uCiAgICA8dmFyPkZpbGU8L3Zhcj4gaXMgYSBmaWxlIGV4dGVuc2lvbiwgcGFydGlhbCBmaWxlbmFtZSwgd2lsZC1jYXJkCiAgICBleHByZXNzaW9uIG9yIGZ1bGwgZmlsZW5hbWUgZm9yIGZpbGVzIHRvIGRlc2NyaWJlLgogICAgPHZhcj5TdHJpbmc8L3Zhcj4gaXMgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyAoPGNvZGU+IjwvY29kZT4pLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgIEFkZERlc2NyaXB0aW9uICJUaGUgcGxhbmV0IE1hcnMiIC93ZWIvcGljcy9tYXJzLmdpZgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGUgdHlwaWNhbCwgZGVmYXVsdCBkZXNjcmlwdGlvbiBmaWVsZCBpcyAyMyBieXRlcyB3aWRlLiA2CiAgICBtb3JlIGJ5dGVzIGFyZSBhZGRlZCBieSB0aGUgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5zdXBwcmVzc2ljb24iPkluZGV4T3B0aW9ucyBTdXBwcmVzc0ljb248L2E+PC9jb2RlPiBvcHRpb24sIDcgYnl0ZXMgYXJlCiAgICBhZGRlZCBieSB0aGUgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5zdXBwcmVzc3NpemUiPkluZGV4T3B0aW9ucyBTdXBwcmVzc1NpemU8L2E+PC9jb2RlPiBvcHRpb24sIGFuZCAxOSBieXRlcyBhcmUKICAgIGFkZGVkIGJ5IHRoZSA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLnN1cHByZXNzbGFzdG1vZGlmaWVkIj5JbmRleE9wdGlvbnMgU3VwcHJlc3NMYXN0TW9kaWZpZWQ8L2E+PC9jb2RlPiBvcHRpb24uCiAgICBUaGVyZWZvcmUsIHRoZSB3aWRlc3QgZGVmYXVsdCB0aGUgZGVzY3JpcHRpb24gY29sdW1uIGlzIGV2ZXIKICAgIGFzc2lnbmVkIGlzIDU1IGJ5dGVzLjwvcD4KCiAgICA8cD5TZWUgdGhlIDxhIGhyZWY9IiNpbmRleG9wdGlvbnMuZGVzY3JpcHRpb253aWR0aCI+RGVzY3JpcHRpb25XaWR0aDwvYT4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2luZGV4b3B0aW9ucyI+SW5kZXhPcHRpb25zPC9hPjwvY29kZT4ga2V5d29yZCBmb3IgZGV0YWlscyBvbiBvdmVycmlkaW5nIHRoZSBzaXplCiAgICBvZiB0aGlzIGNvbHVtbiwgb3IgYWxsb3dpbmcgZGVzY3JpcHRpb25zIG9mIHVubGltaXRlZCBsZW5ndGguPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5DYXV0aW9uPC9oMz4KICAgICAgPHA+RGVzY3JpcHRpdmUgdGV4dCBkZWZpbmVkIHdpdGggPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QWRkRGVzY3JpcHRpb248L2NvZGU+CiAgICAgIG1heSBjb250YWluIEhUTUwgbWFya3VwLCBzdWNoIGFzIHRhZ3MgYW5kIGNoYXJhY3RlciBlbnRpdGllcy4gSWYgdGhlCiAgICAgIHdpZHRoIG9mIHRoZSBkZXNjcmlwdGlvbiBjb2x1bW4gc2hvdWxkIGhhcHBlbiB0byB0cnVuY2F0ZSBhIHRhZ2dlZAogICAgICBlbGVtZW50IChzdWNoIGFzIGN1dHRpbmcgb2ZmIHRoZSBlbmQgb2YgYSBib2xkZWQgcGhyYXNlKSwgdGhlCiAgICAgIHJlc3VsdHMgbWF5IGFmZmVjdCB0aGUgcmVzdCBvZiB0aGUgZGlyZWN0b3J5IGxpc3RpbmcuPC9wPgogICAgPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQWRkSWNvbiIgaWQ9IkFkZEljb24iPkFkZEljb248L2E+IDxhIG5hbWU9ImFkZGljb24iIGlkPSJhZGRpY29uIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5JY29uIHRvIGRpc3BsYXkgZm9yIGEgZmlsZSBzZWxlY3RlZCBieSBuYW1lPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkFkZEljb24gPHZhcj5pY29uPC92YXI+IDx2YXI+bmFtZTwvdmFyPiBbPHZhcj5uYW1lPC92YXI+XQouLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIHNldHMgdGhlIGljb24gdG8gZGlzcGxheSBuZXh0IHRvIGEgZmlsZSBlbmRpbmcgaW4KICAgIDx2YXI+bmFtZTwvdmFyPiBmb3IgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIj5GYW5jeUluZGV4aW5nPC9hPjwvY29kZT4uIDx2YXI+SWNvbjwvdmFyPiBpcyBlaXRoZXIgYSAoJS1lc2NhcGVkKQogICAgcmVsYXRpdmUgVVJMIHRvIHRoZSBpY29uLCBvciBvZiB0aGUgZm9ybWF0IDxjb2RlPgogICAgKDx2YXI+YWx0dGV4dDwvdmFyPiw8dmFyPnVybDwvdmFyPik8L2NvZGU+IHdoZXJlIDx2YXI+YWx0dGV4dDwvdmFyPgogICAgaXMgdGhlIHRleHQgdGFnIGdpdmVuIGZvciBhbiBpY29uIGZvciBub24tZ3JhcGhpY2FsIGJyb3dzZXJzLjwvcD4KCiAgICA8cD48dmFyPk5hbWU8L3Zhcj4gaXMgZWl0aGVyIDxjb2RlPl5eRElSRUNUT1JZXl48L2NvZGU+IGZvciBkaXJlY3RvcmllcywKICAgIDxjb2RlPl5eQkxBTktJQ09OXl48L2NvZGU+IGZvciBibGFuayBsaW5lcyAodG8gZm9ybWF0IHRoZSBsaXN0CiAgICBjb3JyZWN0bHkpLCBhIGZpbGUgZXh0ZW5zaW9uLCBhIHdpbGRjYXJkIGV4cHJlc3Npb24sIGEgcGFydGlhbAogICAgZmlsZW5hbWUgb3IgYSBjb21wbGV0ZSBmaWxlbmFtZS48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGVzPC9oMz48cD48Y29kZT4KICAgICAgQWRkSWNvbiAoSU1HLC9pY29ucy9pbWFnZS54Ym0pIC5naWYgLmpwZyAueGJtPGJyIC8+CiAgICAgIEFkZEljb24gL2ljb25zL2Rpci54Ym0gXl5ESVJFQ1RPUlleXjxiciAvPgogICAgICBBZGRJY29uIC9pY29ucy9iYWNrdXAueGJtICp+CiAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgCiAgICA8cD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWRkaWNvbmJ5dHlwZSI+QWRkSWNvbkJ5VHlwZTwvYT48L2NvZGU+CiAgICBzaG91bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkFkZEljb248L2NvZGU+LAogICAgd2hlbiBwb3NzaWJsZS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQWRkSWNvbkJ5RW5jb2RpbmciIGlkPSJBZGRJY29uQnlFbmNvZGluZyI+QWRkSWNvbkJ5RW5jb2Rpbmc8L2E+IDxhIG5hbWU9ImFkZGljb25ieWVuY29kaW5nIiBpZD0iYWRkaWNvbmJ5ZW5jb2RpbmciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkljb24gdG8gZGlzcGxheSBuZXh0IHRvIGZpbGVzIHNlbGVjdGVkIGJ5IE1JTUUgCmNvbnRlbnQtZW5jb2Rpbmc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QWRkSWNvbkJ5RW5jb2RpbmcgPHZhcj5pY29uPC92YXI+IDx2YXI+TUlNRS1lbmNvZGluZzwvdmFyPgpbPHZhcj5NSU1FLWVuY29kaW5nPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIHNldHMgdGhlIGljb24gdG8gZGlzcGxheSBuZXh0IHRvIGZpbGVzIHdpdGggPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIj5GYW5jeUluZGV4aW5nPC9hPjwvY29kZT4uCiAgICA8dmFyPkljb248L3Zhcj4gaXMgZWl0aGVyIGEgKCUtZXNjYXBlZCkgcmVsYXRpdmUgVVJMIHRvIHRoZSBpY29uLAogICAgb3Igb2YgdGhlIGZvcm1hdCA8Y29kZT4oPHZhcj5hbHR0ZXh0PC92YXI+LDx2YXI+dXJsPC92YXI+KTwvY29kZT4KICAgIHdoZXJlIDx2YXI+YWx0dGV4dDwvdmFyPiBpcyB0aGUgdGV4dCB0YWcgZ2l2ZW4gZm9yIGFuIGljb24gZm9yCiAgICBub24tZ3JhcGhpY2FsIGJyb3dzZXJzLjwvcD4KCiAgICA8cD48dmFyPk1JTUUtZW5jb2Rpbmc8L3Zhcj4gaXMgYSB3aWxkY2FyZCBleHByZXNzaW9uIG1hdGNoaW5nCiAgICByZXF1aXJlZCB0aGUgY29udGVudC1lbmNvZGluZy48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBBZGRJY29uQnlFbmNvZGluZyAvaWNvbnMvY29tcHJlc3MueGJtIHgtY29tcHJlc3MKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQWRkSWNvbkJ5VHlwZSIgaWQ9IkFkZEljb25CeVR5cGUiPkFkZEljb25CeVR5cGU8L2E+IDxhIG5hbWU9ImFkZGljb25ieXR5cGUiIGlkPSJhZGRpY29uYnl0eXBlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5JY29uIHRvIGRpc3BsYXkgbmV4dCB0byBmaWxlcyBzZWxlY3RlZCBieSBNSU1FIApjb250ZW50LXR5cGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QWRkSWNvbkJ5VHlwZSA8dmFyPmljb248L3Zhcj4gPHZhcj5NSU1FLXR5cGU8L3Zhcj4KWzx2YXI+TUlNRS10eXBlPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIHNldHMgdGhlIGljb24gdG8gZGlzcGxheSBuZXh0IHRvIGZpbGVzIG9mIHR5cGUKICAgIDx2YXI+TUlNRS10eXBlPC92YXI+IGZvciA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLmZhbmN5aW5kZXhpbmciPkZhbmN5SW5kZXhpbmc8L2E+PC9jb2RlPi4KICAgIDx2YXI+SWNvbjwvdmFyPiBpcyBlaXRoZXIgYSAoJS1lc2NhcGVkKSByZWxhdGl2ZSBVUkwgdG8gdGhlIGljb24sCiAgICBvciBvZiB0aGUgZm9ybWF0IDxjb2RlPig8dmFyPmFsdHRleHQ8L3Zhcj4sPHZhcj51cmw8L3Zhcj4pPC9jb2RlPgogICAgd2hlcmUgPHZhcj5hbHR0ZXh0PC92YXI+IGlzIHRoZSB0ZXh0IHRhZyBnaXZlbiBmb3IgYW4gaWNvbiBmb3IKICAgIG5vbi1ncmFwaGljYWwgYnJvd3NlcnMuPC9wPgoKICAgIDxwPjx2YXI+TUlNRS10eXBlPC92YXI+IGlzIGEgd2lsZGNhcmQgZXhwcmVzc2lvbiBtYXRjaGluZwogICAgcmVxdWlyZWQgdGhlIG1pbWUgdHlwZXMuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgQWRkSWNvbkJ5VHlwZSAoSU1HLC9pY29ucy9pbWFnZS54Ym0pIGltYWdlLyoKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iRGVmYXVsdEljb24iIGlkPSJEZWZhdWx0SWNvbiI+RGVmYXVsdEljb248L2E+IDxhIG5hbWU9ImRlZmF1bHRpY29uIiBpZD0iZGVmYXVsdGljb24iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkljb24gdG8gZGlzcGxheSBmb3IgZmlsZXMgd2hlbiBubyBzcGVjaWZpYyBpY29uIGlzCmNvbmZpZ3VyZWQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+RGVmYXVsdEljb24gPHZhcj51cmwtcGF0aDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5JbmRleGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dG9pbmRleDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5EZWZhdWx0SWNvbjwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlIGljb24KICAgIHRvIGRpc3BsYXkgZm9yIGZpbGVzIHdoZW4gbm8gc3BlY2lmaWMgaWNvbiBpcyBrbm93biwgZm9yIDxjb2RlPjxhIGhyZWY9IiNpbmRleG9wdGlvbnMuZmFuY3lpbmRleGluZyI+RmFuY3lJbmRleGluZzwvYT48L2NvZGU+LgogICAgPHZhcj5VcmwtcGF0aDwvdmFyPiBpcyBhICglLWVzY2FwZWQpIHJlbGF0aXZlIFVSTCB0byB0aGUgaWNvbi48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBEZWZhdWx0SWNvbiAvaWNvbi91bmtub3duLnhibQogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJIZWFkZXJOYW1lIiBpZD0iSGVhZGVyTmFtZSI+SGVhZGVyTmFtZTwvYT4gPGEgbmFtZT0iaGVhZGVybmFtZSIgaWQ9ImhlYWRlcm5hbWUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk5hbWUgb2YgdGhlIGZpbGUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGF0IHRoZSB0b3AKb2YgdGhlIGluZGV4IGxpc3Rpbmc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+SGVhZGVyTmFtZSA8dmFyPmZpbGVuYW1lPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkluZGV4ZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0b2luZGV4PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkhlYWRlck5hbWU8L2NvZGU+IGRpcmVjdGl2ZSBzZXRzIHRoZSBuYW1lCiAgICBvZiB0aGUgZmlsZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXQgdGhlIHRvcCBvZiB0aGUgaW5kZXgKICAgIGxpc3RpbmcuIDx2YXI+RmlsZW5hbWU8L3Zhcj4gaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gaW5jbHVkZS48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBIZWFkZXJOYW1lIEhFQURFUi5odG1sCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPgogICAgICA8cD5Cb3RoIEhlYWRlck5hbWUgYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNyZWFkbWVuYW1lIj5SZWFkbWVOYW1lPC9hPjwvY29kZT4gbm93IHRyZWF0CiAgICAgIDx2YXI+RmlsZW5hbWU8L3Zhcj4gYXMgYSBVUkkgcGF0aCByZWxhdGl2ZSB0byB0aGUgb25lIHVzZWQgdG8KICAgICAgYWNjZXNzIHRoZSBkaXJlY3RvcnkgYmVpbmcgaW5kZXhlZC4gSWYgPHZhcj5GaWxlbmFtZTwvdmFyPiBiZWdpbnMKICAgICAgd2l0aCBhIHNsYXNoLCBpdCB3aWxsIGJlIHRha2VuIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2RvY3VtZW50cm9vdCI+RG9jdW1lbnRSb290PC9hPjwvY29kZT4uPC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICAgIEhlYWRlck5hbWUgL2luY2x1ZGUvSEVBREVSLmh0bWwKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KICAgICAgCiAgICAgIDxwPjx2YXI+RmlsZW5hbWU8L3Zhcj4gbXVzdCByZXNvbHZlIHRvIGEgZG9jdW1lbnQgd2l0aCBhIG1ham9yCiAgICAgIGNvbnRlbnQgdHlwZSBvZiA8Y29kZT50ZXh0Lyo8L2NvZGU+ICg8ZW0+ZS5nLjwvZW0+LAogICAgICA8Y29kZT50ZXh0L2h0bWw8L2NvZGU+LCA8Y29kZT50ZXh0L3BsYWluPC9jb2RlPiwgZXRjLikuIFRoaXMgbWVhbnMKICAgICAgdGhhdCA8dmFyPmZpbGVuYW1lPC92YXI+IG1heSByZWZlciB0byBhIENHSSBzY3JpcHQgaWYgdGhlIHNjcmlwdCdzCiAgICAgIGFjdHVhbCBmaWxlIHR5cGUgKGFzIG9wcG9zZWQgdG8gaXRzIG91dHB1dCkgaXMgbWFya2VkIGFzCiAgICAgIDxjb2RlPnRleHQvaHRtbDwvY29kZT4gc3VjaCBhcyB3aXRoIGEgZGlyZWN0aXZlIGxpa2U6PC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgQWRkVHlwZSB0ZXh0L2h0bWwgLmNnaQogICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgPHA+PGEgaHJlZj0iLi4vY29udGVudC1uZWdvdGlhdGlvbi5odG1sIj5Db250ZW50IG5lZ290aWF0aW9uPC9hPgogICAgICB3aWxsIGJlIHBlcmZvcm1lZCBpZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI29wdGlvbnMiPk9wdGlvbnM8L2E+PC9jb2RlPgogICAgICA8Y29kZT5NdWx0aVZpZXdzPC9jb2RlPiBpcyBpbiBlZmZlY3QuIElmIDx2YXI+ZmlsZW5hbWU8L3Zhcj4gcmVzb2x2ZXMKICAgICAgdG8gYSBzdGF0aWMgPGNvZGU+dGV4dC9odG1sPC9jb2RlPiBkb2N1bWVudCAobm90IGEgQ0dJIHNjcmlwdCkgYW5kCiAgICAgIGVpdGhlciBvbmUgb2YgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjb3B0aW9ucyI+b3B0aW9uczwvYT48L2NvZGU+CiAgICAgIDxjb2RlPkluY2x1ZGVzPC9jb2RlPiBvciA8Y29kZT5JbmNsdWRlc05PRVhFQzwvY29kZT4gaXMgZW5hYmxlZCwKICAgICAgdGhlIGZpbGUgd2lsbCBiZSBwcm9jZXNzZWQgZm9yIHNlcnZlci1zaWRlIGluY2x1ZGVzIChzZWUgdGhlCiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaW5jbHVkZS5odG1sIj5tb2RfaW5jbHVkZTwvYT48L2NvZGU+IGRvY3VtZW50YXRpb24pLjwvcD4KICAgIDwvZGl2PgoKICAgIDxwPklmIHRoZSBmaWxlIHNwZWNpZmllZCBieSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5IZWFkZXJOYW1lPC9jb2RlPiBjb250YWlucwogICAgdGhlIGJlZ2lubmluZ3Mgb2YgYW4gSFRNTCBkb2N1bWVudCAoJmx0O2h0bWwmZ3Q7LCAmbHQ7aGVhZCZndDssIGV0Yy4pCiAgICB0aGVuIHlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gc2V0IDxhIGhyZWY9IiNpbmRleG9wdGlvbnMuc3VwcHJlc3NodG1scHJlYW1ibGUiPjxjb2RlPkluZGV4T3B0aW9ucwogICAgK1N1cHByZXNzSFRNTFByZWFtYmxlPC9jb2RlPjwvYT4sIHNvIHRoYXQgdGhlc2UgdGFncyBhcmUgbm90CiAgICByZXBlYXRlZC48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iSW5kZXhJZ25vcmUiIGlkPSJJbmRleElnbm9yZSI+SW5kZXhJZ25vcmU8L2E+IDxhIG5hbWU9ImluZGV4aWdub3JlIiBpZD0iaW5kZXhpZ25vcmUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFkZHMgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gaGlkZSB3aGVuIGxpc3RpbmcgCmEgZGlyZWN0b3J5PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkluZGV4SWdub3JlIDx2YXI+ZmlsZTwvdmFyPiBbPHZhcj5maWxlPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SW5kZXhJZ25vcmU8L2NvZGU+IGRpcmVjdGl2ZSBhZGRzIHRvIHRoZQogICAgbGlzdCBvZiBmaWxlcyB0byBoaWRlIHdoZW4gbGlzdGluZyBhIGRpcmVjdG9yeS4gPHZhcj5GaWxlPC92YXI+IGlzIGEKICAgIHNoZWxsLXN0eWxlIHdpbGRjYXJkIGV4cHJlc3Npb24gb3IgZnVsbAogICAgZmlsZW5hbWUuIE11bHRpcGxlIEluZGV4SWdub3JlIGRpcmVjdGl2ZXMgYWRkCiAgICB0byB0aGUgbGlzdCwgcmF0aGVyIHRoYW4gdGhlIHJlcGxhY2luZyB0aGUgbGlzdCBvZiBpZ25vcmVkCiAgICBmaWxlcy4gQnkgZGVmYXVsdCwgdGhlIGxpc3QgY29udGFpbnMgPGNvZGU+LjwvY29kZT4gKHRoZSBjdXJyZW50CiAgICBkaXJlY3RvcnkpLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgSW5kZXhJZ25vcmUgUkVBRE1FIC5odGFjY2VzcyAqLmJhayAqfgogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJJbmRleE9wdGlvbnMiIGlkPSJJbmRleE9wdGlvbnMiPkluZGV4T3B0aW9uczwvYT4gPGEgbmFtZT0iaW5kZXhvcHRpb25zIiBpZD0iaW5kZXhvcHRpb25zIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5WYXJpb3VzIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIGRpcmVjdG9yeSAKaW5kZXhpbmc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+SW5kZXhPcHRpb25zICBbK3wtXTx2YXI+b3B0aW9uPC92YXI+IFtbK3wtXTx2YXI+b3B0aW9uPC92YXI+XQouLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRvaW5kZXg8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SW5kZXhPcHRpb25zPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoZQogICAgYmVoYXZpb3Igb2YgdGhlIGRpcmVjdG9yeSBpbmRleGluZy4gPHZhcj5PcHRpb248L3Zhcj4gY2FuIGJlIG9uZQogICAgb2Y8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLmRlc2NyaXB0aW9ud2lkdGgiIGlkPSJpbmRleG9wdGlvbnMuZGVzY3JpcHRpb253aWR0aCI+RGVzY3JpcHRpb25XaWR0aD1bPHZhcj5uPC92YXI+IHwgKl08L2E+ICg8ZW0+QXBhY2hlIDIuMC4yMyBhbmQKICAgICAgbGF0ZXI8L2VtPik8L2R0PgoKICAgICAgPGRkPlRoZSA8Y29kZT5EZXNjcmlwdGlvbldpZHRoPC9jb2RlPiBrZXl3b3JkIGFsbG93cyB5b3UgdG8KICAgICAgc3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIGRlc2NyaXB0aW9uIGNvbHVtbiBpbgogICAgICBjaGFyYWN0ZXJzLjwvZGQ+CgogICAgICA8ZGQ+PGNvZGU+LURlc2NyaXB0aW9uV2lkdGg8L2NvZGU+IChvciB1bnNldCkgYWxsb3dzCiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiPm1vZF9hdXRvaW5kZXg8L2E+PC9jb2RlPiB0byBjYWxjdWxhdGUgdGhlIGJlc3Qgd2lkdGguPC9kZD4KCiAgICAgIDxkZD48Y29kZT5EZXNjcmlwdGlvbldpZHRoPTx2YXI+bjwvdmFyPjwvY29kZT4gZml4ZXMgdGhlIGNvbHVtbiB3aWR0aCB0bwogICAgICA8dmFyPm48L3Zhcj4gYnl0ZXMgd2lkZS48L2RkPgoKICAgICAgPGRkPjxjb2RlPkRlc2NyaXB0aW9uV2lkdGg9KjwvY29kZT4gZ3Jvd3MgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgd2lkdGggbmVjZXNzYXJ5IHRvIGFjY29tbW9kYXRlIHRoZSBsb25nZXN0IGRlc2NyaXB0aW9uCiAgICAgIHN0cmluZy48L2RkPgoKICAgICAgPGRkPjxzdHJvbmc+U2VlIHRoZSBzZWN0aW9uIG9uIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhZGRkZXNjcmlwdGlvbiI+QWRkRGVzY3JpcHRpb248L2E+PC9jb2RlPiBmb3IgZGFuZ2VycwogICAgICBpbmhlcmVudCBpbiB0cnVuY2F0aW5nIGRlc2NyaXB0aW9ucy48L3N0cm9uZz48L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIiBpZD0iaW5kZXhvcHRpb25zLmZhbmN5aW5kZXhpbmciPkZhbmN5SW5kZXhpbmc8L2E+PC9kdD4KCiAgICAgIDxkZD5UaGlzIHR1cm5zIG9uIGZhbmN5IGluZGV4aW5nIG9mIGRpcmVjdG9yaWVzLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLmZvbGRlcnNmaXJzdCIgaWQ9ImluZGV4b3B0aW9ucy5mb2xkZXJzZmlyc3QiPkZvbGRlcnNGaXJzdDwvYT4gKDxlbT5BcGFjaGUKICAgICAgMi4wLjIzIGFuZCBsYXRlcjwvZW0+KTwvZHQ+CgogICAgICA8ZGQ+SWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgc3ViZGlyZWN0b3J5IGxpc3RpbmdzIHdpbGwKICAgICAgPGVtPmFsd2F5czwvZW0+IGFwcGVhciBmaXJzdCwgZm9sbG93ZWQgYnkgbm9ybWFsIGZpbGVzIGluIHRoZQogICAgICBkaXJlY3RvcnkuIFRoZSBsaXN0aW5nIGlzIGJhc2ljYWxseSBicm9rZW4gaW50byB0d28KICAgICAgY29tcG9uZW50cywgdGhlIGZpbGVzIGFuZCB0aGUgc3ViZGlyZWN0b3JpZXMsIGFuZCBlYWNoIGlzCiAgICAgIHNvcnRlZCBzZXBhcmF0ZWx5IGFuZCB0aGVuIGRpc3BsYXllZCBzdWJkaXJlY3Rvcmllcy1maXJzdC4KICAgICAgRm9yIGluc3RhbmNlLCBpZiB0aGUgc29ydCBvcmRlciBpcyBkZXNjZW5kaW5nIGJ5IG5hbWUsIGFuZAogICAgICA8Y29kZT5Gb2xkZXJzRmlyc3Q8L2NvZGU+IGlzIGVuYWJsZWQsIHN1YmRpcmVjdG9yeQogICAgICA8Y29kZT5aZWQ8L2NvZGU+IHdpbGwgYmUgbGlzdGVkIGJlZm9yZSBzdWJkaXJlY3RvcnkKICAgICAgPGNvZGU+QmV0YTwvY29kZT4sIHdoaWNoIHdpbGwgYmUgbGlzdGVkIGJlZm9yZSBub3JtYWwgZmlsZXMKICAgICAgPGNvZGU+R2FtbWE8L2NvZGU+IGFuZCA8Y29kZT5BbHBoYTwvY29kZT4uIDxzdHJvbmc+VGhpcyBvcHRpb24KICAgICAgb25seSBoYXMgYW4gZWZmZWN0IGlmIDxhIGhyZWY9IiNpbmRleG9wdGlvbnMuZmFuY3lpbmRleGluZyI+PGNvZGU+RmFuY3lJbmRleGluZzwvY29kZT48L2E+IGlzIGFsc28gZW5hYmxlZC48L3N0cm9uZz48L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy5odG1sdGFibGUiIGlkPSJpbmRleG9wdGlvbnMuaHRtbHRhYmxlIj5IVE1MVGFibGU8L2E+ICg8ZW0+RXhwZXJpbWVudGFsLAogICAgICBBcGFjaGUgMi4wLjIzIGFuZCBsYXRlcjwvZW0+KTwvZHQ+CgogICAgICA8ZGQ+VGhpcyBleHBlcmltZW50YWwgb3B0aW9uIHdpdGggRmFuY3lJbmRleGluZyBjb25zdHJ1Y3RzIGEKICAgICAgc2ltcGxlIHRhYmxlIGZvciB0aGUgZmFuY3kgZGlyZWN0b3J5IGxpc3RpbmcuIE5vdGUgdGhpcyB3aWxsCiAgICAgIGNvbmZ1c2Ugb2xkZXIgYnJvd3NlcnMuIEl0IGlzIHBhcnRpY3VsYXJseSBuZWNlc3NhcnkgaWYgZmlsZQogICAgICBuYW1lcyBvciBkZXNjcmlwdGlvbiB0ZXh0IHdpbGwgYWx0ZXJuYXRlIGJldHdlZW4KICAgICAgbGVmdC10by1yaWdodCBhbmQgcmlnaHQtdG8tbGVmdCByZWFkaW5nIG9yZGVyLCBhcyBjYW4gaGFwcGVuCiAgICAgIG9uIFdpbk5UIG9yIG90aGVyIHV0Zi04IGVuYWJsZWQgcGxhdGZvcm1zLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLmljb25zYXJlbGlua3MiIGlkPSJpbmRleG9wdGlvbnMuaWNvbnNhcmVsaW5rcyI+SWNvbnNBcmVMaW5rczwvYT48L2R0PgoKICAgICAgPGRkPlRoaXMgbWFrZXMgdGhlIGljb25zIHBhcnQgb2YgdGhlIGFuY2hvciBmb3IgdGhlIGZpbGVuYW1lLCBmb3IKICAgICAgZmFuY3kgaW5kZXhpbmcuPC9kZD4KCiAgICAgIDxkdD48YSBuYW1lPSJpbmRleG9wdGlvbnMuaWNvbmhlaWdodCIgaWQ9ImluZGV4b3B0aW9ucy5pY29uaGVpZ2h0Ij5JY29uSGVpZ2h0Wz08dmFyPnBpeGVsczwvdmFyPl08L2E+PC9kdD4KCiAgICAgIDxkZD5QcmVzZW5jZSBvZiB0aGlzIG9wdGlvbiwgd2hlbiB1c2VkIHdpdGggSWNvbldpZHRoLCB3aWxsIGNhdXNlCiAgICAgIHRoZSBzZXJ2ZXIgdG8gaW5jbHVkZSA8Y29kZT5oZWlnaHQ8L2NvZGU+IGFuZCA8Y29kZT53aWR0aDwvY29kZT4KICAgICAgYXR0cmlidXRlcyBpbiB0aGUgPGNvZGU+aW1nPC9jb2RlPiB0YWcgZm9yIHRoZSBmaWxlIGljb24uIFRoaXMgYWxsb3dzCiAgICAgIGJyb3dzZXIgdG8gcHJlY2FsY3VsYXRlIHRoZSBwYWdlIGxheW91dCB3aXRob3V0IGhhdmluZyB0byB3YWl0IHVudGlsCiAgICAgIGFsbCB0aGUgaW1hZ2VzIGhhdmUgYmVlbiBsb2FkZWQuIElmIG5vIHZhbHVlIGlzIGdpdmVuIGZvciB0aGUgb3B0aW9uLAogICAgICBpdCBkZWZhdWx0cyB0byB0aGUgc3RhbmRhcmQgaGVpZ2h0IG9mIHRoZSBpY29ucyBzdXBwbGllZCB3aXRoIHRoZSBBcGFjaGUKICAgICAgc29mdHdhcmUuPC9kZD4KCiAgICAgIDxkdD48YSBuYW1lPSJpbmRleG9wdGlvbnMuaWNvbndpZHRoIiBpZD0iaW5kZXhvcHRpb25zLmljb253aWR0aCI+SWNvbldpZHRoWz08dmFyPnBpeGVsczwvdmFyPl08L2E+PC9kdD4KCiAgICAgIDxkZD5QcmVzZW5jZSBvZiB0aGlzIG9wdGlvbiwgd2hlbiB1c2VkIHdpdGggPGNvZGU+SWNvbkhlaWdodDwvY29kZT4sCiAgICAgIHdpbGwgY2F1c2UgdGhlIHNlcnZlciB0byBpbmNsdWRlIDxjb2RlPmhlaWdodDwvY29kZT4gYW5kCiAgICAgIDxjb2RlPndpZHRoPC9jb2RlPiBhdHRyaWJ1dGVzIGluIHRoZSA8Y29kZT5pbWc8L2NvZGU+IHRhZyBmb3IKICAgICAgdGhlIGZpbGUgaWNvbi4gVGhpcyBhbGxvd3MgYnJvd3NlciB0byBwcmVjYWxjdWxhdGUgdGhlIHBhZ2UKICAgICAgbGF5b3V0IHdpdGhvdXQgaGF2aW5nIHRvIHdhaXQgdW50aWwgYWxsIHRoZSBpbWFnZXMgaGF2ZSBiZWVuCiAgICAgIGxvYWRlZC4gSWYgbm8gdmFsdWUgaXMgZ2l2ZW4gZm9yIHRoZSBvcHRpb24sIGl0IGRlZmF1bHRzIHRvCiAgICAgIHRoZSBzdGFuZGFyZCB3aWR0aCBvZiB0aGUgaWNvbnMgc3VwcGxpZWQgd2l0aCB0aGUgQXBhY2hlCiAgICAgIHNvZnR3YXJlLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLmlnbm9yZWNhc2UiIGlkPSJpbmRleG9wdGlvbnMuaWdub3JlY2FzZSI+SWdub3JlQ2FzZTwvYT48L2R0PgoKICAgICAgPGRkPklmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIG5hbWVzIGFyZSBzb3J0ZWQgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIAogICAgICBtYW5uZXIuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSBzb3J0IG9yZGVyIGlzIGFzY2VuZGluZyBieSBuYW1lLCBhbmQgCiAgICAgIElnbm9yZUNhc2UgaXMgZW5hYmxlZCwgZmlsZSBaZXRhICB3aWxsIGJlIGxpc3RlZCBhZnRlciBmaWxlIGFsZmEgCiAgICAgIChOb3RlOiBmaWxlIEdBTU1BIHdpbGwgYWx3YXlzIGJlIGxpc3RlZCBiZWZvcmUgZmlsZSBnYW1tYSkuIDwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLmlnbm9yZWNsaWVudCIgaWQ9ImluZGV4b3B0aW9ucy5pZ25vcmVjbGllbnQiPklnbm9yZUNsaWVudDwvYT48L2R0PgoKICAgICAgPGRkPlRoaXMgb3B0aW9uIGNhdXNlcyA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dG9pbmRleC5odG1sIj5tb2RfYXV0b2luZGV4PC9hPjwvY29kZT4gdG8gaWdub3JlIGFsbAogICAgICBxdWVyeSB2YXJpYWJsZXMgZnJvbSB0aGUgY2xpZW50LCBpbmNsdWRpbmcgc29ydCBvcmRlciAoaW1wbGllcwogICAgICA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLnN1cHByZXNzY29sdW1uc29ydGluZyI+U3VwcHJlc3NDb2x1bW5Tb3J0aW5nPC9hPjwvY29kZT4uKTwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLm5hbWV3aWR0aCIgaWQ9ImluZGV4b3B0aW9ucy5uYW1ld2lkdGgiPk5hbWVXaWR0aD1bPHZhcj5uPC92YXI+CiAgICAgICAgICAgICAgIHwgKl08L2E+PC9kdD4KCiAgICAgIDxkZD5UaGUgPGNvZGU+TmFtZVdpZHRoPC9jb2RlPiBrZXl3b3JkIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgd2lkdGgKICAgICAgb2YgdGhlIGZpbGVuYW1lIGNvbHVtbiBpbiBieXRlcy48L2RkPgoKICAgICAgPGRkPjxjb2RlPi1OYW1lV2lkdGg8L2NvZGU+IChvciB1bnNldCkgYWxsb3dzIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiPm1vZF9hdXRvaW5kZXg8L2E+PC9jb2RlPiB0byBjYWxjdWxhdGUgdGhlIGJlc3Qgd2lkdGguPC9kZD4KCiAgICAgIDxkZD48Y29kZT5OYW1lV2lkdGg9PHZhcj5uPC92YXI+PC9jb2RlPiBmaXhlcyB0aGUgY29sdW1uIHdpZHRoIHRvCiAgICAgIDx2YXI+bjwvdmFyPiBieXRlcyB3aWRlLjwvZGQ+CgogICAgICA8ZGQ+PGNvZGU+TmFtZVdpZHRoPSo8L2NvZGU+IGdyb3dzIHRoZSBjb2x1bW4gdG8gdGhlIG5lY2Vzc2FyeQogICAgICB3aWR0aC48L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy5zY2FuaHRtbHRpdGxlcyIgaWQ9ImluZGV4b3B0aW9ucy5zY2FuaHRtbHRpdGxlcyI+U2NhbkhUTUxUaXRsZXM8L2E+PC9kdD4KCiAgICAgIDxkZD5UaGlzIGVuYWJsZXMgdGhlIGV4dHJhY3Rpb24gb2YgdGhlIHRpdGxlIGZyb20gSFRNTCBkb2N1bWVudHMKICAgICAgZm9yIGZhbmN5IGluZGV4aW5nLiBJZiB0aGUgZmlsZSBkb2VzIG5vdCBoYXZlIGEgZGVzY3JpcHRpb24KICAgICAgZ2l2ZW4gYnkgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FkZGRlc2NyaXB0aW9uIj5BZGREZXNjcmlwdGlvbjwvYT48L2NvZGU+CiAgICAgIHRoZW4gaHR0cGQgd2lsbCByZWFkIHRoZSBkb2N1bWVudCBmb3IgdGhlIHZhbHVlIG9mIHRoZQogICAgICA8Y29kZT50aXRsZTwvY29kZT4gZWxlbWVudC4gVGhpcyBpcyBDUFUgYW5kIGRpc2sgaW50ZW5zaXZlLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLnNob3dmb3JiaWRkZW4iIGlkPSJpbmRleG9wdGlvbnMuc2hvd2ZvcmJpZGRlbiI+U2hvd0ZvcmJpZGRlbjwvYT48L2R0PgoKICAgICAgPGRkPklmIHNwZWNpZmllZCwgQXBhY2hlIHdpbGwgc2hvdyBmaWxlcyBub3JtYWxseSBoaWRkZW4gYmVjYXVzZQogICAgICB0aGUgc3VicmVxdWVzdCByZXR1cm5lZCBIVFRQX1VOQVVUSE9SSVpFRCBvciBIVFRQX0ZPUkJJRERFTjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLnN1cHByZXNzY29sdW1uc29ydGluZyIgaWQ9ImluZGV4b3B0aW9ucy5zdXBwcmVzc2NvbHVtbnNvcnRpbmciPlN1cHByZXNzQ29sdW1uU29ydGluZzwvYT48L2R0PgoKICAgICAgPGRkPklmIHNwZWNpZmllZCwgQXBhY2hlIHdpbGwgbm90IG1ha2UgdGhlIGNvbHVtbiBoZWFkaW5ncyBpbiBhCiAgICAgIEZhbmN5SW5kZXhlZCBkaXJlY3RvcnkgbGlzdGluZyBpbnRvIGxpbmtzIGZvciBzb3J0aW5nLiBUaGUKICAgICAgZGVmYXVsdCBiZWhhdmlvciBpcyBmb3IgdGhlbSB0byBiZSBsaW5rczsgc2VsZWN0aW5nIHRoZQogICAgICBjb2x1bW4gaGVhZGluZyB3aWxsIHNvcnQgdGhlIGRpcmVjdG9yeSBsaXN0aW5nIGJ5IHRoZSB2YWx1ZXMKICAgICAgaW4gdGhhdCBjb2x1bW4uIDxzdHJvbmc+UHJpb3IgdG8gQXBhY2hlIDIuMC4yMywgdGhpcyBhbHNvCiAgICAgIGRpc2FibGVkIHBhcnNpbmcgdGhlIFF1ZXJ5IEFyZ3VtZW50cyBmb3IgdGhlIHNvcnQKICAgICAgc3RyaW5nLjwvc3Ryb25nPiBUaGF0IGJlaGF2aW9yIGlzIG5vdyBjb250cm9sbGVkIGJ5IDxhIGhyZWY9IiNpbmRleG9wdGlvbnMuaWdub3JlY2xpZW50Ij5JbmRleE9wdGlvbnMKICAgICAgSWdub3JlQ2xpZW50PC9hPiBpbiBBcGFjaGUgMi4wLjIzLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLnN1cHByZXNzZGVzY3JpcHRpb24iIGlkPSJpbmRleG9wdGlvbnMuc3VwcHJlc3NkZXNjcmlwdGlvbiI+U3VwcHJlc3NEZXNjcmlwdGlvbjwvYT48L2R0PgoKICAgICAgPGRkPlRoaXMgd2lsbCBzdXBwcmVzcyB0aGUgZmlsZSBkZXNjcmlwdGlvbiBpbiBmYW5jeSBpbmRleGluZwogICAgICBsaXN0aW5ncy4gQnkgZGVmYXVsdCwgbm8gZmlsZSBkZXNjcmlwdGlvbnMgYXJlIGRlZmluZWQsIGFuZAogICAgICBzbyB0aGUgdXNlIG9mIHRoaXMgb3B0aW9uIHdpbGwgcmVnYWluIDIzIGNoYXJhY3RlcnMgb2Ygc2NyZWVuCiAgICAgIHNwYWNlIHRvIHVzZSBmb3Igc29tZXRoaW5nIGVsc2UuIFNlZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWRkZGVzY3JpcHRpb24iPkFkZERlc2NyaXB0aW9uPC9hPjwvY29kZT4gZm9yIGluZm9ybWF0aW9uIGFib3V0IHNldHRpbmcgdGhlIGZpbGUKICAgICAgZGVzY3JpcHRpb24uIFNlZSBhbHNvIHRoZSA8Y29kZT48YSBocmVmPSIjaW5kZXhvcHRpb25zLmRlc2NyaXB0aW9ud2lkdGgiPkRlc2NyaXB0aW9uV2lkdGg8L2E+PC9jb2RlPgogICAgICBpbmRleCBvcHRpb24gdG8gbGltaXQgdGhlIHNpemUgb2YgdGhlIGRlc2NyaXB0aW9uIGNvbHVtbi48L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy5zdXBwcmVzc2h0bWxwcmVhbWJsZSIgaWQ9ImluZGV4b3B0aW9ucy5zdXBwcmVzc2h0bWxwcmVhbWJsZSI+U3VwcHJlc3NIVE1MUHJlYW1ibGU8L2E+PC9kdD4KCiAgICAgIDxkZD5JZiB0aGUgZGlyZWN0b3J5IGFjdHVhbGx5IGNvbnRhaW5zIGEgZmlsZSBzcGVjaWZpZWQgYnkgdGhlCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNoZWFkZXJuYW1lIj5IZWFkZXJOYW1lPC9hPjwvY29kZT4KICAgICAgZGlyZWN0aXZlLCB0aGUgbW9kdWxlIHVzdWFsbHkgaW5jbHVkZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlCiAgICAgIGFmdGVyIGEgc3RhbmRhcmQgSFRNTCBwcmVhbWJsZSAoPGNvZGU+Jmx0O2h0bWwmZ3Q7PC9jb2RlPiwKICAgICAgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiwgPGVtPmV0IGNldGVyYTwvZW0+KS4gVGhlCiAgICAgIDxjb2RlPlN1cHByZXNzSFRNTFByZWFtYmxlPC9jb2RlPiBvcHRpb24gZGlzYWJsZXMgdGhpcyBiZWhhdmlvdXIsCiAgICAgIGNhdXNpbmcgdGhlIG1vZHVsZSB0byBzdGFydCB0aGUgZGlzcGxheSB3aXRoIHRoZSBoZWFkZXIgZmlsZQogICAgICBjb250ZW50cy4gVGhlIGhlYWRlciBmaWxlIG11c3QgY29udGFpbiBhcHByb3ByaWF0ZSBIVE1MIGluc3RydWN0aW9ucwogICAgICBpbiB0aGlzIGNhc2UuIElmIHRoZXJlIGlzIG5vIGhlYWRlciBmaWxlLCB0aGUgcHJlYW1ibGUgaXMgZ2VuZXJhdGVkCiAgICAgIGFzIHVzdWFsLjwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLnN1cHByZXNzaWNvbiIgaWQ9ImluZGV4b3B0aW9ucy5zdXBwcmVzc2ljb24iPlN1cHByZXNzSWNvbjwvYT4gKDxlbT5BcGFjaGUKICAgICAgMi4wLjIzIGFuZCBsYXRlcjwvZW0+KTwvZHQ+CgogICAgICA8ZGQ+VGhpcyB3aWxsIHN1cHByZXNzIHRoZSBpY29uIGluIGZhbmN5IGluZGV4aW5nIGxpc3RpbmdzLgogICAgICBDb21iaW5pbmcgYm90aCA8Y29kZT5TdXBwcmVzc0ljb248L2NvZGU+IGFuZAogICAgICA8Y29kZT5TdXBwcmVzc1J1bGVzPC9jb2RlPiB5aWVsZHMgcHJvcGVyIEhUTUwgMy4yIG91dHB1dCwgd2hpY2gKICAgICAgYnkgdGhlIGZpbmFsIHNwZWNpZmljYXRpb24gcHJvaGliaXRzIDxjb2RlPmltZzwvY29kZT4gYW5kCiAgICAgIDxjb2RlPmhyPC9jb2RlPiBlbGVtZW50cyBmcm9tIHRoZSA8Y29kZT5wcmU8L2NvZGU+IGJsb2NrICh1c2VkIHRvCiAgICAgIGZvcm1hdCBGYW5jeUluZGV4ZWQgbGlzdGluZ3MuKTwvZGQ+CgogICAgICA8ZHQ+PGEgbmFtZT0iaW5kZXhvcHRpb25zLnN1cHByZXNzbGFzdG1vZGlmaWVkIiBpZD0iaW5kZXhvcHRpb25zLnN1cHByZXNzbGFzdG1vZGlmaWVkIj5TdXBwcmVzc0xhc3RNb2RpZmllZDwvYT48L2R0PgoKICAgICAgPGRkPlRoaXMgd2lsbCBzdXBwcmVzcyB0aGUgZGlzcGxheSBvZiB0aGUgbGFzdCBtb2RpZmljYXRpb24gZGF0ZSwKICAgICAgaW4gZmFuY3kgaW5kZXhpbmcgbGlzdGluZ3MuPC9kZD4KCiAgICAgIDxkdD48YSBuYW1lPSJpbmRleG9wdGlvbnMuc3VwcHJlc3NydWxlcyIgaWQ9ImluZGV4b3B0aW9ucy5zdXBwcmVzc3J1bGVzIj5TdXBwcmVzc1J1bGVzPC9hPgogICAgICAoPGVtPkFwYWNoZSAyLjAuMjMgYW5kIGxhdGVyPC9lbT4pPC9kdD4KCiAgICAgIDxkZD5UaGlzIHdpbGwgc3VwcHJlc3MgdGhlIGhvcml6b250YWwgcnVsZSBsaW5lcyAoPGNvZGU+aHI8L2NvZGU+CiAgICAgIGVsZW1lbnRzKSBpbiBkaXJlY3RvcnkgbGlzdGluZ3MuIENvbWJpbmluZyBib3RoIDxjb2RlPlN1cHByZXNzSWNvbjwvY29kZT4gYW5kCiAgICAgIDxjb2RlPlN1cHByZXNzUnVsZXM8L2NvZGU+IHlpZWxkcyBwcm9wZXIgSFRNTCAzLjIgb3V0cHV0LCB3aGljaAogICAgICBieSB0aGUgZmluYWwgc3BlY2lmaWNhdGlvbiBwcm9oaWJpdHMgPGNvZGU+aW1nPC9jb2RlPiBhbmQKICAgICAgPGNvZGU+aHI8L2NvZGU+IGVsZW1lbnRzIGZyb20gdGhlIDxjb2RlPnByZTwvY29kZT4gYmxvY2sgKHVzZWQgdG8KICAgICAgZm9ybWF0IEZhbmN5SW5kZXhlZCBsaXN0aW5ncy4pPC9kZD4KCiAgICAgIDxkdD48YSBuYW1lPSJpbmRleG9wdGlvbnMuc3VwcHJlc3NzaXplIiBpZD0iaW5kZXhvcHRpb25zLnN1cHByZXNzc2l6ZSI+U3VwcHJlc3NTaXplPC9hPjwvZHQ+CgogICAgICA8ZGQ+VGhpcyB3aWxsIHN1cHByZXNzIHRoZSBmaWxlIHNpemUgaW4gZmFuY3kgaW5kZXhpbmcgbGlzdGluZ3MuPC9kZD4KCiAgICAgIDxkdD48YSBuYW1lPSJpbmRleG9wdGlvbnMudHJhY2ttb2RpZmllZCIgaWQ9ImluZGV4b3B0aW9ucy50cmFja21vZGlmaWVkIj5UcmFja01vZGlmaWVkPC9hPiAoPGVtPkFwYWNoZQogICAgICAyLjAuMjMgYW5kIGxhdGVyPC9lbT4pPC9kdD4KCiAgICAgIDxkZD5UaGlzIHJldHVybnMgdGhlIExhc3QtTW9kaWZpZWQgYW5kIEVUYWcgdmFsdWVzIGZvciB0aGUgbGlzdGVkCiAgICAgIGRpcmVjdG9yeSBpbiB0aGUgSFRUUCBoZWFkZXIuIEl0IGlzIG9ubHkgdmFsaWQgaWYgdGhlCiAgICAgIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGZpbGUgc3lzdGVtIHJldHVybiBhcHByb3ByaWF0ZSBzdGF0KCkKICAgICAgcmVzdWx0cy4gU29tZSBVbml4IHN5c3RlbXMgZG8gc28sIGFzIGRvIE9TMidzIEpGUyBhbmQgV2luMzIncwogICAgICBOVEZTIHZvbHVtZXMuIE9TMiBhbmQgV2luMzIgRkFUIHZvbHVtZXMsIGZvciBleGFtcGxlLCBkbyBub3QuCiAgICAgIE9uY2UgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQsIHRoZSBjbGllbnQgb3IgcHJveHkgY2FuIHRyYWNrCiAgICAgIGNoYW5nZXMgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgd2hlbiB0aGV5IHBlcmZvcm0gYSA8Y29kZT5IRUFEPC9jb2RlPgogICAgICByZXF1ZXN0LiBOb3RlIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY29ycmVjdGx5IHRyYWNrIG5ldyBhbmQKICAgICAgcmVtb3ZlZCBmaWxlcywgYnV0IGRvIG5vdCB0cmFjayBjaGFuZ2VzIGZvciBzaXplcyBvciBkYXRlcyBvZgogICAgICB0aGUgZmlsZXMgd2l0aGluIHRoZSBkaXJlY3RvcnkuIDxzdHJvbmc+Q2hhbmdlcyB0byB0aGUgc2l6ZQogICAgICBvciBkYXRlIHN0YW1wIG9mIGFuIGV4aXN0aW5nIGZpbGUgd2lsbCBub3QgdXBkYXRlIHRoZQogICAgICBMYXN0LU1vZGlmaWVkIGhlYWRlciBvbiBhbGwgVW5peCBwbGF0Zm9ybXMuPC9zdHJvbmc+IElmIHRoaXMKICAgICAgaXMgYSBjb25jZXJuLCBsZWF2ZSB0aGlzIG9wdGlvbiBkaXNhYmxlZC48L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy52ZXJzaW9uc29ydCIgaWQ9ImluZGV4b3B0aW9ucy52ZXJzaW9uc29ydCI+VmVyc2lvblNvcnQ8L2E+CiAgICAgICg8ZW0+QXBhY2hlIDIuMGEzIGFuZCBsYXRlcjwvZW0+KTwvZHQ+CgogICAgICA8ZGQ+VGhlIDxjb2RlPlZlcnNpb25Tb3J0PC9jb2RlPiBrZXl3b3JkIGNhdXNlcyBmaWxlcyBjb250YWluaW5nCiAgICAgIHZlcnNpb24gbnVtYmVycyB0byBzb3J0IGluIGEgbmF0dXJhbCB3YXkuIFN0cmluZ3MgYXJlIHNvcnRlZCBhcwogICAgICB1c3VhbCwgZXhjZXB0IHRoYXQgc3Vic3RyaW5ncyBvZiBkaWdpdHMgaW4gdGhlIG5hbWUgYW5kCiAgICAgIGRlc2NyaXB0aW9uIGFyZSBjb21wYXJlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbnVtZXJpYyB2YWx1ZS4KCiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgICAgZm9vLTEuNzxiciAvPgogICAgICAgIGZvby0xLjcuMjxiciAvPgogICAgICAgIGZvby0xLjcuMTI8YnIgLz4KICAgICAgICBmb28tMS44LjI8YnIgLz4KICAgICAgICBmb28tMS44LjJhPGJyIC8+CiAgICAgICAgZm9vLTEuMTIKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgIDxwPklmIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSB6ZXJvLCB0aGVuIGl0IGlzIGNvbnNpZGVyZWQgdG8KICAgICAgYmUgYSBmcmFjdGlvbjo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICBmb28tMS4wMDE8YnIgLz4KICAgICAgICBmb28tMS4wMDI8YnIgLz4KICAgICAgICBmb28tMS4wMzA8YnIgLz4KICAgICAgICBmb28tMS4wNAogICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8L2RkPgoKICAgICAgPGR0PjxhIG5hbWU9ImluZGV4b3B0aW9ucy54aHRtbCIgaWQ9ImluZGV4b3B0aW9ucy54aHRtbCI+WEhUTUw8L2E+CiAgICAgICg8ZW0+QXBhY2hlIDIuMC40OSBhbmQgbGF0ZXI8L2VtPik8L2R0PgoKICAgICAgPGRkPlRoZSA8Y29kZT5YSFRNTDwvY29kZT4ga2V5d29yZCBmb3JjZXMgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRvaW5kZXguaHRtbCI+bW9kX2F1dG9pbmRleDwvYT48L2NvZGU+CiAgICAgIHRvIGVtaXQgWEhUTUwgMS4wIGNvZGUgaW5zdGVhZCBvZiBIVE1MIDMuMi48L2RkPgogICAgPC9kbD4KCiAgIAogICA8ZGw+PGR0PkluY3JlbWVudGFsIEluZGV4T3B0aW9uczwvZHQ+CiAgIDxkZD4KICAgICA8cD5BcGFjaGUgMS4zLjMgaW50cm9kdWNlZCBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgaW4gdGhlCiAgICAgaGFuZGxpbmcgb2YgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SW5kZXhPcHRpb25zPC9jb2RlPiBkaXJlY3RpdmVzLiBJbgogICAgIHBhcnRpY3VsYXI6PC9wPgoKICAgICA8dWw+CiAgICAgPGxpPk11bHRpcGxlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkluZGV4T3B0aW9uczwvY29kZT4gZGlyZWN0aXZlcyBmb3IgYQogICAgIHNpbmdsZSBkaXJlY3RvcnkgYXJlIG5vdyBtZXJnZWQgdG9nZXRoZXIuIFRoZSByZXN1bHQgb2Y6CgogICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgJmx0O0RpcmVjdG9yeSAvZm9vJmd0OwogICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgIEluZGV4T3B0aW9ucyBIVE1MVGFibGU8YnIgLz4KICAgICAgICAgSW5kZXhPcHRpb25zIFN1cHByZXNzQ29sdW1uc29ydGluZwogICAgICAgPC9zcGFuPgogICAgICAgJmx0Oy9EaXJlY3RvcnkmZ3Q7CiAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgPHA+d2lsbCBiZSB0aGUgZXF1aXZhbGVudCBvZjwvcD4KCiAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICBJbmRleE9wdGlvbnMgSFRNTFRhYmxlIFN1cHByZXNzQ29sdW1uc29ydGluZwogICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgPC9saT4KCiAgICAgPGxpPlRoZSBhZGRpdGlvbiBvZiB0aGUgaW5jcmVtZW50YWwgc3ludGF4ICg8ZW0+aS5lLjwvZW0+LCBwcmVmaXhpbmcKICAgICBrZXl3b3JkcyB3aXRoIDxjb2RlPis8L2NvZGU+IG9yIDxjb2RlPi08L2NvZGU+KS48L2xpPgogICAgIDwvdWw+CgogICAgIDxwPldoZW5ldmVyIGEgJysnIG9yICctJyBwcmVmaXhlZCBrZXl3b3JkIGlzIGVuY291bnRlcmVkLCBpdAogICAgIGlzIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+SW5kZXhPcHRpb25zPC9jb2RlPgogICAgIHNldHRpbmdzICh3aGljaCBtYXkgaGF2ZSBiZWVuIGluaGVyaXRlZCBmcm9tIGFuIHVwcGVyLWxldmVsCiAgICAgZGlyZWN0b3J5KS4gSG93ZXZlciwgd2hlbmV2ZXIgYW4gdW5wcmVmaXhlZCBrZXl3b3JkIGlzIHByb2Nlc3NlZCwgaXQKICAgICBjbGVhcnMgYWxsIGluaGVyaXRlZCBvcHRpb25zIGFuZCBhbnkgaW5jcmVtZW50YWwgc2V0dGluZ3MgZW5jb3VudGVyZWQKICAgICBzbyBmYXIuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTo8L3A+CgogICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgSW5kZXhPcHRpb25zICtTY2FuSFRNTFRpdGxlcyAtSWNvbnNBcmVMaW5rcyBGYW5jeUluZGV4aW5nPGJyIC8+CiAgICAgICBJbmRleE9wdGlvbnMgK1N1cHByZXNzU2l6ZQogICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgIDxwPlRoZSBuZXQgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gPGNvZGU+SW5kZXhPcHRpb25zIEZhbmN5SW5kZXhpbmcKICAgICArU3VwcHJlc3NTaXplPC9jb2RlPiwgYmVjYXVzZSB0aGUgdW5wcmVmaXhlZCA8Y29kZT5GYW5jeUluZGV4aW5nPC9jb2RlPgogICAgIGRpc2NhcmRlZCB0aGUgaW5jcmVtZW50YWwga2V5d29yZHMgYmVmb3JlIGl0LCBidXQgYWxsb3dlZCB0aGVtIHRvCiAgICAgc3RhcnQgYWNjdW11bGF0aW5nIGFnYWluIGFmdGVyd2FyZC48L3A+CgogICAgIDxwPlRvIHVuY29uZGl0aW9uYWxseSBzZXQgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkluZGV4T3B0aW9uczwvY29kZT4gZm9yCiAgICAgYSBwYXJ0aWN1bGFyIGRpcmVjdG9yeSwgY2xlYXJpbmcgdGhlIGluaGVyaXRlZCBzZXR0aW5ncywgc3BlY2lmeQogICAgIGtleXdvcmRzIHdpdGhvdXQgYW55IDxjb2RlPis8L2NvZGU+IG9yIDxjb2RlPi08L2NvZGU+IHByZWZpeGVzLjwvcD4KICAgPC9kZD4KICAgPC9kbD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJJbmRleE9yZGVyRGVmYXVsdCIgaWQ9IkluZGV4T3JkZXJEZWZhdWx0Ij5JbmRleE9yZGVyRGVmYXVsdDwvYT4gPGEgbmFtZT0iaW5kZXhvcmRlcmRlZmF1bHQiIGlkPSJpbmRleG9yZGVyZGVmYXVsdCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2V0cyB0aGUgZGVmYXVsdCBvcmRlcmluZyBvZiB0aGUgZGlyZWN0b3J5IGluZGV4PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkluZGV4T3JkZXJEZWZhdWx0IEFzY2VuZGluZ3xEZXNjZW5kaW5nCk5hbWV8RGF0ZXxTaXplfERlc2NyaXB0aW9uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkluZGV4T3JkZXJEZWZhdWx0IEFzY2VuZGluZyBOYW1lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkluZGV4ZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0b2luZGV4PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkluZGV4T3JkZXJEZWZhdWx0PC9jb2RlPiBkaXJlY3RpdmUgaXMgdXNlZAogICAgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5mYW5jeWluZGV4aW5nIj5GYW5jeUluZGV4aW5nPC9hPjwvY29kZT4gaW5kZXggb3B0aW9uLiBCeSBkZWZhdWx0LCBmYW5jeWluZGV4ZWQKICAgIGRpcmVjdG9yeSBsaXN0aW5ncyBhcmUgZGlzcGxheWVkIGluIGFzY2VuZGluZyBvcmRlciBieSBmaWxlbmFtZTsgdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5JbmRleE9yZGVyRGVmYXVsdDwvY29kZT4gYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhpcwogICAgaW5pdGlhbCBkaXNwbGF5IG9yZGVyLjwvcD4KCiAgICA8cD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5JbmRleE9yZGVyRGVmYXVsdDwvY29kZT4gdGFrZXMgdHdvCiAgICBhcmd1bWVudHMuIFRoZSBmaXJzdCBtdXN0IGJlIGVpdGhlciA8Y29kZT5Bc2NlbmRpbmc8L2NvZGU+IG9yCiAgICA8Y29kZT5EZXNjZW5kaW5nPC9jb2RlPiwgaW5kaWNhdGluZyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzb3J0LgogICAgVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0aGUga2V5d29yZHMgPGNvZGU+TmFtZTwvY29kZT4sCiAgICA8Y29kZT5EYXRlPC9jb2RlPiwgPGNvZGU+U2l6ZTwvY29kZT4sIG9yIDxjb2RlPkRlc2NyaXB0aW9uPC9jb2RlPiwKICAgIGFuZCBpZGVudGlmaWVzIHRoZSBwcmltYXJ5IGtleS4gVGhlIHNlY29uZGFyeSBrZXkgaXMKICAgIDxlbT5hbHdheXM8L2VtPiB0aGUgYXNjZW5kaW5nIGZpbGVuYW1lLjwvcD4KCiAgICA8cD5Zb3UgY2FuIGZvcmNlIGEgZGlyZWN0b3J5IGxpc3RpbmcgdG8gb25seSBiZSBkaXNwbGF5ZWQgaW4gYQogICAgcGFydGljdWxhciBvcmRlciBieSBjb21iaW5pbmcgdGhpcyBkaXJlY3RpdmUgd2l0aCB0aGUgPGNvZGU+PGEgaHJlZj0iI2luZGV4b3B0aW9ucy5zdXBwcmVzc2NvbHVtbnNvcnRpbmciPlN1cHByZXNzQ29sdW1uU29ydGluZzwvYT48L2NvZGU+IGluZGV4IG9wdGlvbjsgdGhpcyB3aWxsIHByZXZlbnQKICAgIHRoZSBjbGllbnQgZnJvbSByZXF1ZXN0aW5nIHRoZSBkaXJlY3RvcnkgbGlzdGluZyBpbiBhIGRpZmZlcmVudAogICAgb3JkZXIuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkluZGV4U3R5bGVTaGVldCIgaWQ9IkluZGV4U3R5bGVTaGVldCI+SW5kZXhTdHlsZVNoZWV0PC9hPiA8YSBuYW1lPSJpbmRleHN0eWxlc2hlZXQiIGlkPSJpbmRleHN0eWxlc2hlZXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFkZHMgYSBDU1Mgc3R5bGVzaGVldCB0byB0aGUgZGlyZWN0b3J5IGluZGV4PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkluZGV4U3R5bGVTaGVldCA8dmFyPnVybC1wYXRoPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkluZGV4ZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0b2luZGV4PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkluZGV4U3R5bGVTaGVldDwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlIG5hbWUgb2YKICAgIHRoZSBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBDU1MgZm9yIHRoZSBpbmRleCBsaXN0aW5nLgogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICAKICAgICAgSW5kZXhTdHlsZVNoZWV0ICIvY3NzL3N0eWxlLmNzcyIKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iUmVhZG1lTmFtZSIgaWQ9IlJlYWRtZU5hbWUiPlJlYWRtZU5hbWU8L2E+IDxhIG5hbWU9InJlYWRtZW5hbWUiIGlkPSJyZWFkbWVuYW1lIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5OYW1lIG9mIHRoZSBmaWxlIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhdCB0aGUgZW5kCm9mIHRoZSBpbmRleCBsaXN0aW5nPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlJlYWRtZU5hbWUgPHZhcj5maWxlbmFtZTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5JbmRleGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dG9pbmRleDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5SZWFkbWVOYW1lPC9jb2RlPiBkaXJlY3RpdmUgc2V0cyB0aGUgbmFtZQogICAgb2YgdGhlIGZpbGUgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGluZGV4CiAgICBsaXN0aW5nLiA8dmFyPkZpbGVuYW1lPC92YXI+IGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGluY2x1ZGUsIGFuZAogICAgaXMgdGFrZW4gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIGJlaW5nIGluZGV4ZWQuIElmCiAgICA8dmFyPkZpbGVuYW1lPC92YXI+IGJlZ2lucyB3aXRoIGEgc2xhc2gsIGl0IHdpbGwgYmUgdGFrZW4gdG8gYmUKICAgIHJlbGF0aXZlIHRvIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2RvY3VtZW50cm9vdCI+RG9jdW1lbnRSb290PC9hPjwvY29kZT4uCiAgICA8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBSZWFkbWVOYW1lIEZPT1RFUi5odG1sCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlIDI8L2gzPjxwPjxjb2RlPgogICAgICBSZWFkbWVOYW1lIC9pbmNsdWRlL0ZPT1RFUi5odG1sCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlNlZSBhbHNvIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNoZWFkZXJuYW1lIj5IZWFkZXJOYW1lPC9hPjwvY29kZT4sIHdoZXJlIHRoaXMgYmVoYXZpb3IgaXMgZGVzY3JpYmVkIGluIGdyZWF0ZXIKICAgIGRldGFpbC48L3A+Cgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9hdXRvaW5kZXguaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL21vZC9tb2RfYXV0b2luZGV4Lmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hdXRvaW5kZXguaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD48L2Rpdj4KPC9ib2R5PjwvaHRtbD4=