PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1wbV9jb21tb24gLSBBcGFjaGUgSFRUUCBTZXJ2ZXI8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuMzwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjM8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlIE1QTSBDb21tb24gRGlyZWN0aXZlczwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL21wbV9jb21tb24uaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2VuL21vZC9tcG1fY29tbW9uLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbXBtX2NvbW1vbi5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL21vZC9tcG1fY29tbW9uLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+Cjx0YWJsZSBjbGFzcz0ibW9kdWxlIj48dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5BIGNvbGxlY3Rpb24gb2YgZGlyZWN0aXZlcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieQptb3JlIHRoYW4gb25lIG11bHRpLXByb2Nlc3NpbmcgbW9kdWxlIChNUE0pPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj48L3RhYmxlPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvcmVkdW1wZGlyZWN0b3J5Ij5Db3JlRHVtcERpcmVjdG9yeTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNlbmFibGVleGNlcHRpb25ob29rIj5FbmFibGVFeGNlcHRpb25Ib29rPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2dyYWNlZnVsc2h1dGRvd250aW1lb3V0Ij5HcmFjZWZ1bFNodXRkb3duVGltZW91dDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsaXN0ZW4iPkxpc3RlbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsaXN0ZW5iYWNrbG9nIj5MaXN0ZW5CYWNrTG9nPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI21heGNvbm5lY3Rpb25zcGVyY2hpbGQiPk1heENvbm5lY3Rpb25zUGVyQ2hpbGQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbWF4bWVtZnJlZSI+TWF4TWVtRnJlZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNtYXhyZXF1ZXN0d29ya2VycyI+TWF4UmVxdWVzdFdvcmtlcnM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbWF4c3BhcmV0aHJlYWRzIj5NYXhTcGFyZVRocmVhZHM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjbWluc3BhcmV0aHJlYWRzIj5NaW5TcGFyZVRocmVhZHM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcGlkZmlsZSI+UGlkRmlsZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNyZWNlaXZlYnVmZmVyc2l6ZSI+UmVjZWl2ZUJ1ZmZlclNpemU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc2NvcmVib2FyZGZpbGUiPlNjb3JlQm9hcmRGaWxlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3NlbmRidWZmZXJzaXplIj5TZW5kQnVmZmVyU2l6ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzZXJ2ZXJsaW1pdCI+U2VydmVyTGltaXQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3RhcnRzZXJ2ZXJzIj5TdGFydFNlcnZlcnM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3RhcnR0aHJlYWRzIj5TdGFydFRocmVhZHM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdGhyZWFkbGltaXQiPlRocmVhZExpbWl0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3RocmVhZHN0YWNrc2l6ZSI+VGhyZWFkU3RhY2tTaXplPC9hPjwvbGk+CjwvdWw+CjwvZGl2PgoKPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQ29yZUR1bXBEaXJlY3RvcnkiIGlkPSJDb3JlRHVtcERpcmVjdG9yeSI+Q29yZUR1bXBEaXJlY3Rvcnk8L2E+IDxhIG5hbWU9ImNvcmVkdW1wZGlyZWN0b3J5IiBpZD0iY29yZWR1bXBkaXJlY3RvcnkiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkRpcmVjdG9yeSB3aGVyZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgYXR0ZW1wdHMgdG8Kc3dpdGNoIGJlZm9yZSBkdW1waW5nIGNvcmU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+Q29yZUR1bXBEaXJlY3RvcnkgPHZhcj5kaXJlY3Rvcnk8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+U2VlIHVzYWdlIGZvciB0aGUgZGVmYXVsdCBzZXR0aW5nPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+TVBNPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGNvbnRyb2xzIHRoZSBkaXJlY3RvcnkgdG8gd2hpY2ggQXBhY2hlIGh0dHBkIGF0dGVtcHRzIHRvCiAgICBzd2l0Y2ggYmVmb3JlIGR1bXBpbmcgY29yZS4gSWYgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGlzIGNvbmZpZ3VyZWQgdG8KICAgIGNyZWF0ZSBjb3JlIGZpbGVzIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY3Jhc2hpbmcgcHJvY2VzcywKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNvcmVEdW1wRGlyZWN0b3J5PC9jb2RlPiBpcyBuZWNlc3NhcnkgdG8gY2hhbmdlIHdvcmtpbmcKICAgIGRpcmVjdG9yeSBmcm9tIHRoZSBkZWZhdWx0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2VydmVycm9vdCI+U2VydmVyUm9vdDwvYT48L2NvZGU+CiAgICBkaXJlY3RvcnksIHdoaWNoIHNob3VsZCBub3QgYmUgd3JpdGFibGUgYnkgdGhlIHVzZXIgdGhlIHNlcnZlciBydW5zIGFzLjwvcD4KCiAgICA8cD5JZiB5b3Ugd2FudCBhIGNvcmUgZHVtcCBmb3IgZGVidWdnaW5nLCB5b3UgY2FuIHVzZSB0aGlzIGRpcmVjdGl2ZSB0bwogICAgcGxhY2UgaXQgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uIFRoaXMgZGlyZWN0aXZlIGhhcyBubyBlZmZlY3QgaWYgeW91cgogICAgb3BlcmF0aW5nIHN5c3RlbSBpcyBub3QgY29uZmlndXJlZCB0byB3cml0ZSBjb3JlIGZpbGVzIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeQogICAgb2YgdGhlIGNyYXNoaW5nIHByb2Nlc3Nlcy48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPkNvcmUgRHVtcHMgb24gTGludXg8L2gzPgogICAgICA8cD5JZiBBcGFjaGUgaHR0cGQgc3RhcnRzIGFzIHJvb3QgYW5kIHN3aXRjaGVzIHRvIGFub3RoZXIgdXNlciwgdGhlCiAgICAgIExpbnV4IGtlcm5lbCA8ZW0+ZGlzYWJsZXM8L2VtPiBjb3JlIGR1bXBzIGV2ZW4gaWYgdGhlIGRpcmVjdG9yeSBpcwogICAgICB3cml0YWJsZSBmb3IgdGhlIHByb2Nlc3MuIEFwYWNoZSBodHRwZCAoMi4wLjQ2IGFuZCBsYXRlcikgcmVlbmFibGVzIGNvcmUgZHVtcHMKICAgICAgb24gTGludXggMi40IGFuZCBiZXlvbmQsIGJ1dCBvbmx5IGlmIHlvdSBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkNvcmVEdW1wRGlyZWN0b3J5PC9jb2RlPi48L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj4KICAgIDxoMz5Db3JlIER1bXBzIG9uIEJTRDwvaDM+CiAgICA8cD5UbyBlbmFibGUgY29yZS1kdW1waW5nIG9mIHN1aWQtZXhlY3V0YWJsZXMgb24gQlNELXN5c3RlbXMgKHN1Y2gKICAgIGFzIEZyZWVCU0QpLCBzZXQgPGNvZGU+a2Vybi5zdWdpZF9jb3JlZHVtcDwvY29kZT4gdG8gMS4KICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5TcGVjaWZpYyBzaWduYWxzPC9oMz4KICAgICAgPHA+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+Q29yZUR1bXBEaXJlY3Rvcnk8L2NvZGU+IHByb2Nlc3Npbmcgb25seSBvY2N1cnMgZm9yCiAgICAgIGEgc2VsZWN0IHNldCBvZiBmYXRhbCBzaWduYWxzOiBTSUdGUEUsIFNJR0lMTCwgU0lHQUJPUlQsCiAgICAgIFNJR1NFR1YsIGFuZCBTSUdCVVMuPC9wPgogICAgICA8cD5PbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zLCBTSUdRVUlUIGFsc28gcmVzdWx0cyBpbiBhIGNvcmUgZHVtcCBidXQKICAgICAgZG9lcyBub3QgZ28gdGhyb3VnaCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5Db3JlRHVtcERpcmVjdG9yeTwvY29kZT4gb3IKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+RW5hYmxlRXhjZXB0aW9uSG9vazwvY29kZT4gcHJvY2Vzc2luZywgc28gdGhlIGNvcmUKICAgICAgbG9jYXRpb24gaXMgZGljdGF0ZWQgZW50aXJlbHkgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uPC9wPgogICAgPC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkVuYWJsZUV4Y2VwdGlvbkhvb2siIGlkPSJFbmFibGVFeGNlcHRpb25Ib29rIj5FbmFibGVFeGNlcHRpb25Ib29rPC9hPiA8YSBuYW1lPSJlbmFibGVleGNlcHRpb25ob29rIiBpZD0iZW5hYmxlZXhjZXB0aW9uaG9vayI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RW5hYmxlcyBhIGhvb2sgdGhhdCBydW5zIGV4Y2VwdGlvbiBoYW5kbGVycwphZnRlciBhIGNyYXNoPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkVuYWJsZUV4Y2VwdGlvbkhvb2sgT258T2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkVuYWJsZUV4Y2VwdGlvbkhvb2sgT2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+TVBNPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbiAyLjAuNDkgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+Rm9yIHNhZmV0eSByZWFzb25zIHRoaXMgZGlyZWN0aXZlIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBzZXJ2ZXIgd2FzCiAgICBjb25maWd1cmVkIHdpdGggdGhlIDxjb2RlPi0tZW5hYmxlLWV4Y2VwdGlvbi1ob29rPC9jb2RlPiBvcHRpb24uIEl0CiAgICBlbmFibGVzIGEgaG9vayB0aGF0IGFsbG93cyBleHRlcm5hbCBtb2R1bGVzIHRvIHBsdWcgaW4gYW5kIGRvIHNvbWV0aGluZwogICAgYWZ0ZXIgYSBjaGlsZCBjcmFzaGVkLjwvcD4KCiAgICA8cD5UaGVyZSBhcmUgYWxyZWFkeSB0d28gbW9kdWxlcywgPGNvZGU+bW9kX3doYXRraWxsZWR1czwvY29kZT4gYW5kCiAgICA8Y29kZT5tb2RfYmFja3RyYWNlPC9jb2RlPiB0aGF0IG1ha2UgdXNlIG9mIHRoaXMgaG9vay4gUGxlYXNlIGhhdmUgYQogICAgbG9vayBhdCBKZWZmIFRyYXdpY2sncyA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvfnRyYXdpY2svZXhjZXB0aW9uX2hvb2suaHRtbCI+RW5hYmxlRXhjZXB0aW9uSG9vayBzaXRlPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iR3JhY2VmdWxTaHV0ZG93blRpbWVvdXQiIGlkPSJHcmFjZWZ1bFNodXRkb3duVGltZW91dCI+R3JhY2VmdWxTaHV0ZG93blRpbWVvdXQ8L2E+IDxhIG5hbWU9ImdyYWNlZnVsc2h1dGRvd250aW1lb3V0IiBpZD0iZ3JhY2VmdWxzaHV0ZG93bnRpbWVvdXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNwZWNpZnkgYSB0aW1lb3V0IGFmdGVyIHdoaWNoIGEgZ3JhY2VmdWxseSBzaHV0ZG93biBzZXJ2ZXIKd2lsbCBleGl0LjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5HcmFjZWZ1bFNodXREb3duVGltZW91dCA8dmFyPnNlY29uZHM8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+R3JhY2VmdWxTaHV0RG93blRpbWVvdXQgMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4yIGFuZCBsYXRlcjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5HcmFjZWZ1bFNodXRkb3duVGltZW91dDwvY29kZT4gc3BlY2lmaWVzCiAgICBob3cgbWFueSBzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBhICJncmFjZWZ1bC1zdG9wIiBzaWduYWwsIGEKICAgIHNlcnZlciBzaG91bGQgY29udGludWUgdG8gcnVuLCBoYW5kbGluZyB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbnMuPC9wPgoKICAgIDxwPlNldHRpbmcgdGhpcyB2YWx1ZSB0byB6ZXJvIG1lYW5zIHRoYXQgdGhlIHNlcnZlciB3aWxsIHdhaXQKICAgIGluZGVmaW5pdGVseSB1bnRpbCBhbGwgcmVtYWluaW5nIHJlcXVlc3RzIGhhdmUgYmVlbiBmdWxseSBzZXJ2ZWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9Ikxpc3RlbiIgaWQ9Ikxpc3RlbiI+TGlzdGVuPC9hPiA8YSBuYW1lPSJsaXN0ZW4iIGlkPSJsaXN0ZW4iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPklQIGFkZHJlc3NlcyBhbmQgcG9ydHMgdGhhdCB0aGUgc2VydmVyCmxpc3RlbnMgdG88L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TGlzdGVuIFs8dmFyPklQLWFkZHJlc3M8L3Zhcj46XTx2YXI+cG9ydG51bWJlcjwvdmFyPiBbPHZhcj5wcm90b2NvbDwvdmFyPl08L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+UmVxdWlyZWQgZGlyZWN0aXZlIHNpbmNlIEFwYWNoZSBIVFRQIFNlcnZlciAyLjA8YnIgLz4KVGhlIDx2YXI+cHJvdG9jb2w8L3Zhcj4gYXJndW1lbnQgd2FzIGFkZGVkIGluIDIuMS41PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkxpc3RlbjwvY29kZT4gZGlyZWN0aXZlIGluc3RydWN0cyBBcGFjaGUgaHR0cGQgdG8KICAgIGxpc3RlbiB0byBvbmx5IHNwZWNpZmljIElQIGFkZHJlc3NlcyBvciBwb3J0czsgYnkgZGVmYXVsdCBpdAogICAgcmVzcG9uZHMgdG8gcmVxdWVzdHMgb24gYWxsIElQIGludGVyZmFjZXMuIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkxpc3RlbjwvY29kZT4KICAgIGlzIG5vdyBhIHJlcXVpcmVkIGRpcmVjdGl2ZS4gSWYgaXQgaXMgbm90IGluIHRoZSBjb25maWcgZmlsZSwgdGhlCiAgICBzZXJ2ZXIgd2lsbCBmYWlsIHRvIHN0YXJ0LiBUaGlzIGlzIGEgY2hhbmdlIGZyb20gcHJldmlvdXMgdmVyc2lvbnMKICAgIG9mIEFwYWNoZSBodHRwZC48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkxpc3RlbjwvY29kZT4gZGlyZWN0aXZlIHRlbGxzIHRoZSBzZXJ2ZXIgdG8KICAgIGFjY2VwdCBpbmNvbWluZyByZXF1ZXN0cyBvbiB0aGUgc3BlY2lmaWVkIHBvcnQgb3IgYWRkcmVzcy1hbmQtcG9ydAogICAgY29tYmluYXRpb24uIElmIG9ubHkgYSBwb3J0IG51bWJlciBpcyBzcGVjaWZpZWQsIHRoZSBzZXJ2ZXIgbGlzdGVucyB0bwogICAgdGhlIGdpdmVuIHBvcnQgb24gYWxsIGludGVyZmFjZXMuIElmIGFuIElQIGFkZHJlc3MgaXMgZ2l2ZW4gYXMgd2VsbAogICAgYXMgYSBwb3J0LCB0aGUgc2VydmVyIHdpbGwgbGlzdGVuIG9uIHRoZSBnaXZlbiBwb3J0IGFuZAogICAgaW50ZXJmYWNlLjwvcD4KCiAgICA8cD5NdWx0aXBsZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5MaXN0ZW48L2NvZGU+IGRpcmVjdGl2ZXMgbWF5IGJlIHVzZWQgdG8KICAgIHNwZWNpZnkgYSBudW1iZXIgb2YgYWRkcmVzc2VzIGFuZCBwb3J0cyB0byBsaXN0ZW4gdG8uIFRoZSBzZXJ2ZXIgd2lsbAogICAgcmVzcG9uZCB0byByZXF1ZXN0cyBmcm9tIGFueSBvZiB0aGUgbGlzdGVkIGFkZHJlc3NlcyBhbmQgcG9ydHMuPC9wPgoKICAgIDxwPkZvciBleGFtcGxlLCB0byBtYWtlIHRoZSBzZXJ2ZXIgYWNjZXB0IGNvbm5lY3Rpb25zIG9uIGJvdGgKICAgIHBvcnQgODAgYW5kIHBvcnQgODAwMCwgdXNlOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgTGlzdGVuIDgwPGJyIC8+CiAgICAgIExpc3RlbiA4MDAwCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRvIG1ha2UgdGhlIHNlcnZlciBhY2NlcHQgY29ubmVjdGlvbnMgb24gdHdvIHNwZWNpZmllZAogICAgaW50ZXJmYWNlcyBhbmQgcG9ydCBudW1iZXJzLCB1c2UgPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBMaXN0ZW4gMTkyLjE3MC4yLjE6ODA8YnIgLz4KICAgICAgTGlzdGVuIDE5Mi4xNzAuMi41OjgwMDAKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SVB2NiBhZGRyZXNzZXMgbXVzdCBiZSBzdXJyb3VuZGVkIGluIHNxdWFyZSBicmFja2V0cywgYXMgaW4gdGhlCiAgICBmb2xsb3dpbmcgZXhhbXBsZTo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIExpc3RlbiBbMjAwMTpkYjg6OmEwMDoyMGZmOmZlYTc6Y2NlYV06ODAKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VGhlIG9wdGlvbmFsIDx2YXI+cHJvdG9jb2w8L3Zhcj4gYXJndW1lbnQgaXMgbm90IHJlcXVpcmVkIGZvciBtb3N0CiAgICAgICBjb25maWd1cmF0aW9ucy4gSWYgbm90IHNwZWNpZmllZCwgPGNvZGU+aHR0cHM8L2NvZGU+IGlzIHRoZSBkZWZhdWx0IGZvcgogICAgICAgcG9ydCA0NDMgYW5kIDxjb2RlPmh0dHA8L2NvZGU+IHRoZSBkZWZhdWx0IGZvciBhbGwgb3RoZXIgcG9ydHMuICBUaGUKICAgICAgIHByb3RvY29sIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZSBzaG91bGQgaGFuZGxlIGEgcmVxdWVzdCwgYW5kCiAgICAgICB0byBhcHBseSBwcm90b2NvbCBzcGVjaWZpYyBvcHRpbWl6YXRpb25zIHdpdGggdGhlCiAgICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2FjY2VwdGZpbHRlciI+QWNjZXB0RmlsdGVyPC9hPjwvY29kZT4gZGlyZWN0aXZlLjwvcD4KCiAgICA8cD5Zb3Ugb25seSBuZWVkIHRvIHNldCB0aGUgcHJvdG9jb2wgaWYgeW91IGFyZSBydW5uaW5nIG9uIG5vbi1zdGFuZGFyZAogICAgICAgcG9ydHMuICBGb3IgZXhhbXBsZSwgcnVubmluZyBhbiA8Y29kZT5odHRwczwvY29kZT4gc2l0ZSBvbiBwb3J0IDg0NDM6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBMaXN0ZW4gMTkyLjE3MC4yLjE6ODQ0MyBodHRwcwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+RXJyb3IgY29uZGl0aW9uPC9oMz4KICAgICAgTXVsdGlwbGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TGlzdGVuPC9jb2RlPiBkaXJlY3RpdmVzIGZvciB0aGUgc2FtZSBpcAogICAgICBhZGRyZXNzIGFuZCBwb3J0IHdpbGwgcmVzdWx0IGluIGFuIDxjb2RlPkFkZHJlc3MgYWxyZWFkeSBpbiB1c2U8L2NvZGU+CiAgICAgIGVycm9yIG1lc3NhZ2UuCiAgICA8L2Rpdj4KCgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48YSBocmVmPSIuLi9kbnMtY2F2ZWF0cy5odG1sIj5ETlMgSXNzdWVzPC9hPjwvbGk+CjxsaT48YSBocmVmPSIuLi9iaW5kLmh0bWwiPlNldHRpbmcgd2hpY2ggYWRkcmVzc2VzIGFuZCBwb3J0cyBBcGFjaGUgSFRUUCBTZXJ2ZXIKICAgIHVzZXM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvQ291bGROb3RCaW5kVG9BZGRyZXNzIj5GdXJ0aGVyCmRpc2N1c3Npb24gb2YgdGhlIDxjb2RlPkFkZHJlc3MgYWxyZWFkeSBpbiB1c2U8L2NvZGU+IGVycm9yIG1lc3NhZ2UsCmluY2x1ZGluZyBvdGhlciBjYXVzZXMuPC9hPjwvbGk+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJMaXN0ZW5CYWNrTG9nIiBpZD0iTGlzdGVuQmFja0xvZyI+TGlzdGVuQmFja0xvZzwvYT4gPGEgbmFtZT0ibGlzdGVuYmFja2xvZyIgaWQ9Imxpc3RlbmJhY2tsb2ciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1heGltdW0gbGVuZ3RoIG9mIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGNvbm5lY3Rpb25zPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkxpc3RlbkJhY2tsb2cgPHZhcj5iYWNrbG9nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkxpc3RlbkJhY2tsb2cgNTExPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+TVBNPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX25ldHdhcmUuaHRtbCI+bXBtX25ldHdhcmU8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV93aW5udC5odG1sIj5tcG1fd2lubnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbXRfb3MyLmh0bWwiPm1wbXRfb3MyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9wcmVmb3JrLmh0bWwiPnByZWZvcms8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3dvcmtlci5odG1sIj53b3JrZXI8L2E+PC9jb2RlPjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcXVldWUgb2YgcGVuZGluZyBjb25uZWN0aW9ucy4KICAgIEdlbmVyYWxseSBubyB0dW5pbmcgaXMgbmVlZGVkIG9yIGRlc2lyZWQsIGhvd2V2ZXIgb24gc29tZQogICAgc3lzdGVtcyBpdCBpcyBkZXNpcmFibGUgdG8gaW5jcmVhc2UgdGhpcyB3aGVuIHVuZGVyIGEgVENQIFNZTgogICAgZmxvb2QgYXR0YWNrLiBTZWUgdGhlIGJhY2tsb2cgcGFyYW1ldGVyIHRvIHRoZQogICAgPGNvZGU+bGlzdGVuKDIpPC9jb2RlPiBzeXN0ZW0gY2FsbC48L3A+CgogICAgPHA+VGhpcyB3aWxsIG9mdGVuIGJlIGxpbWl0ZWQgdG8gYSBzbWFsbGVyIG51bWJlciBieSB0aGUKICAgIG9wZXJhdGluZyBzeXN0ZW0uIFRoaXMgdmFyaWVzIGZyb20gT1MgdG8gT1MuIEFsc28gbm90ZSB0aGF0CiAgICBtYW55IE9TZXMgZG8gbm90IHVzZSBleGFjdGx5IHdoYXQgaXMgc3BlY2lmaWVkIGFzIHRoZSBiYWNrbG9nLAogICAgYnV0IHVzZSBhIG51bWJlciBiYXNlZCBvbiAoYnV0IG5vcm1hbGx5IGxhcmdlciB0aGFuKSB3aGF0IGlzCiAgICBzZXQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9Ik1heENvbm5lY3Rpb25zUGVyQ2hpbGQiIGlkPSJNYXhDb25uZWN0aW9uc1BlckNoaWxkIj5NYXhDb25uZWN0aW9uc1BlckNoaWxkPC9hPiA8YSBuYW1lPSJtYXhjb25uZWN0aW9uc3BlcmNoaWxkIiBpZD0ibWF4Y29ubmVjdGlvbnNwZXJjaGlsZCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TGltaXQgb24gdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB0aGF0IGFuIGluZGl2aWR1YWwgY2hpbGQgc2VydmVyCndpbGwgaGFuZGxlIGR1cmluZyBpdHMgbGlmZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5NYXhDb25uZWN0aW9uc1BlckNoaWxkIDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPk1heENvbm5lY3Rpb25zUGVyQ2hpbGQgMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvZXZlbnQuaHRtbCI+ZXZlbnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgQXBhY2hlIEhUVFAgU2VydmVyIDIuMy45IGFuZCBsYXRlci4gVGhlIG9sZCBuYW1lCjxjb2RlPk1heFJlcXVlc3RzUGVyQ2hpbGQ8L2NvZGU+IGlzIHN0aWxsIHN1cHBvcnRlZC48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4Q29ubmVjdGlvbnNQZXJDaGlsZDwvY29kZT4gZGlyZWN0aXZlIHNldHMKICAgIHRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYW4gaW5kaXZpZHVhbCBjaGlsZAogICAgc2VydmVyIHByb2Nlc3Mgd2lsbCBoYW5kbGUuIEFmdGVyCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5NYXhDb25uZWN0aW9uc1BlckNoaWxkPC9jb2RlPiBjb25uZWN0aW9ucywgdGhlIGNoaWxkCiAgICBwcm9jZXNzIHdpbGwgZGllLiBJZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5NYXhDb25uZWN0aW9uc1BlckNoaWxkPC9jb2RlPiBpcwogICAgPGNvZGU+MDwvY29kZT4sIHRoZW4gdGhlIHByb2Nlc3Mgd2lsbCBuZXZlciBleHBpcmUuPC9wPgoKICAgIDxwPlNldHRpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4Q29ubmVjdGlvbnNQZXJDaGlsZDwvY29kZT4gdG8gYQogICAgbm9uLXplcm8gdmFsdWUgbGltaXRzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRoYXQgcHJvY2VzcyBjYW4gY29uc3VtZQogICAgYnkgKGFjY2lkZW50YWwpIG1lbW9yeSBsZWFrYWdlLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJNYXhNZW1GcmVlIiBpZD0iTWF4TWVtRnJlZSI+TWF4TWVtRnJlZTwvYT4gPGEgbmFtZT0ibWF4bWVtZnJlZSIgaWQ9Im1heG1lbWZyZWUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1heGltdW0gYW1vdW50IG9mIG1lbW9yeSB0aGF0IHRoZSBtYWluIGFsbG9jYXRvciBpcyBhbGxvd2VkCnRvIGhvbGQgd2l0aG91dCBjYWxsaW5nIDxjb2RlPmZyZWUoKTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TWF4TWVtRnJlZSA8dmFyPktCeXRlczwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5NYXhNZW1GcmVlIDIwNDg8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fbmV0d2FyZS5odG1sIj5tcG1fbmV0d2FyZTwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4TWVtRnJlZTwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlCiAgICBtYXhpbXVtIG51bWJlciBvZiBmcmVlIEtieXRlcyB0aGF0IGV2ZXJ5IGFsbG9jYXRvciBpcyBhbGxvd2VkCiAgICB0byBob2xkIHdpdGhvdXQgY2FsbGluZyA8Y29kZT5mcmVlKCk8L2NvZGU+LiBJbiB0aHJlYWRlZCBNUE1zLCBldmVyeQogICAgdGhyZWFkIGhhcyBpdHMgb3duIGFsbG9jYXRvci4gV2hlbiBub3Qgc2V0LCBvciB3aGVuIHNldAogICAgdG8gemVybywgdGhlIHRocmVzaG9sZCB3aWxsIGJlIHNldCB0byB1bmxpbWl0ZWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9Ik1heFJlcXVlc3RXb3JrZXJzIiBpZD0iTWF4UmVxdWVzdFdvcmtlcnMiPk1heFJlcXVlc3RXb3JrZXJzPC9hPiA8YSBuYW1lPSJtYXhyZXF1ZXN0d29ya2VycyIgaWQ9Im1heHJlcXVlc3R3b3JrZXJzIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5NYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkCnNpbXVsdGFuZW91c2x5PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPk1heFJlcXVlc3RXb3JrZXJzIDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNlZSB1c2FnZSBmb3IgZGV0YWlsczwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvZXZlbnQuaHRtbCI+ZXZlbnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPk1heFJlcXVlc3RXb3JrZXJzPC9jb2RlPiBkaXJlY3RpdmUgc2V0cyB0aGUgbGltaXQKICAgIG9uIHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHJlcXVlc3RzIHRoYXQgd2lsbCBiZSBzZXJ2ZWQuICBBbnkKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdHMgb3ZlciB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdFdvcmtlcnM8L2NvZGU+CiAgICBsaW1pdCB3aWxsIG5vcm1hbGx5IGJlIHF1ZXVlZCwgdXAgdG8gYSBudW1iZXIgYmFzZWQgb24gdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbGlzdGVuYmFja2xvZyI+TGlzdGVuQmFja2xvZzwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmUuIE9uY2UgYSBjaGlsZCBwcm9jZXNzIGlzIGZyZWVkIGF0IHRoZSBlbmQgb2YgYSBkaWZmZXJlbnQKICAgIHJlcXVlc3QsIHRoZSBjb25uZWN0aW9uIHdpbGwgdGhlbiBiZSBzZXJ2aWNlZC48L3A+CgogICAgPHA+Rm9yIG5vbi10aHJlYWRlZCBzZXJ2ZXJzICg8ZW0+aS5lLjwvZW0+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4pLAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdFdvcmtlcnM8L2NvZGU+IHRyYW5zbGF0ZXMgaW50byB0aGUgbWF4aW11bQogICAgbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHdpbGwgYmUgbGF1bmNoZWQgdG8gc2VydmUgcmVxdWVzdHMuCiAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8Y29kZT4yNTY8L2NvZGU+OyB0byBpbmNyZWFzZSBpdCwgeW91IG11c3QgYWxzbyByYWlzZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3NlcnZlcmxpbWl0Ij5TZXJ2ZXJMaW1pdDwvYT48L2NvZGU+LjwvcD4KCiAgICA8cD5Gb3IgdGhyZWFkZWQgYW5kIGh5YnJpZCBzZXJ2ZXJzICg8ZW0+ZS5nLjwvZW0+IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+CiAgICBvciA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+KSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5NYXhSZXF1ZXN0V29ya2VyczwvY29kZT4gcmVzdHJpY3RzCiAgICB0aGUgdG90YWwgbnVtYmVyIG9mIHRocmVhZHMgdGhhdCB3aWxsIGJlIGF2YWlsYWJsZSB0byBzZXJ2ZSBjbGllbnRzLgogICAgRm9yIGh5YnJpZCBNUE1zIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPjE2PC9jb2RlPiAoPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3NlcnZlcmxpbWl0Ij5TZXJ2ZXJMaW1pdDwvYT48L2NvZGU+KSBtdWx0aXBsaWVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgPGNvZGU+MjU8L2NvZGU+ICg8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjdGhyZWFkc3BlcmNoaWxkIj5UaHJlYWRzUGVyQ2hpbGQ8L2E+PC9jb2RlPikuIFRoZXJlZm9yZSwgdG8gaW5jcmVhc2UgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4UmVxdWVzdFdvcmtlcnM8L2NvZGU+IHRvIGEgdmFsdWUgdGhhdCByZXF1aXJlcyBtb3JlIHRoYW4gMTYgcHJvY2Vzc2VzLAogICAgeW91IG11c3QgYWxzbyByYWlzZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc2VydmVybGltaXQiPlNlcnZlckxpbWl0PC9hPjwvY29kZT4uPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPk1heFJlcXVlc3RXb3JrZXJzPC9jb2RlPiB3YXMgY2FsbGVkCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5NYXhDbGllbnRzPC9jb2RlPiBiZWZvcmUgdmVyc2lvbiAyLjMuMTMuIFRoZSBvbGQgbmFtZSBpc3Qgc3RpbGwKICAgIHN1cHBvcnRlZC48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTWF4U3BhcmVUaHJlYWRzIiBpZD0iTWF4U3BhcmVUaHJlYWRzIj5NYXhTcGFyZVRocmVhZHM8L2E+IDxhIG5hbWU9Im1heHNwYXJldGhyZWFkcyIgaWQ9Im1heHNwYXJldGhyZWFkcyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWF4aW11bSBudW1iZXIgb2YgaWRsZSB0aHJlYWRzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPk1heFNwYXJlVGhyZWFkcyA8dmFyPm51bWJlcjwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5TZWUgdXNhZ2UgZm9yIGRldGFpbHM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fbmV0d2FyZS5odG1sIj5tcG1fbmV0d2FyZTwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtdF9vczIuaHRtbCI+bXBtdF9vczI8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3dvcmtlci5odG1sIj53b3JrZXI8L2E+PC9jb2RlPjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPk1heGltdW0gbnVtYmVyIG9mIGlkbGUgdGhyZWFkcy4gRGlmZmVyZW50IE1QTXMgZGVhbCB3aXRoIHRoaXMKICAgIGRpcmVjdGl2ZSBkaWZmZXJlbnRseS48L3A+CgogICAgPHA+Rm9yIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIHRoZSBkZWZhdWx0IGlzCiAgICA8Y29kZT5NYXhTcGFyZVRocmVhZHMgMjUwPC9jb2RlPi4gVGhpcyBNUE0gZGVhbHMgd2l0aCBpZGxlIHRocmVhZHMKICAgIG9uIGEgc2VydmVyLXdpZGUgYmFzaXMuIElmIHRoZXJlIGFyZSB0b28gbWFueSBpZGxlIHRocmVhZHMgaW4gdGhlCiAgICBzZXJ2ZXIgdGhlbiBjaGlsZCBwcm9jZXNzZXMgYXJlIGtpbGxlZCB1bnRpbCB0aGUgbnVtYmVyIG9mIGlkbGUKICAgIHRocmVhZHMgaXMgbGVzcyB0aGFuIHRoaXMgbnVtYmVyLjwvcD4KCiAgICA8cD5Gb3IgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4gdGhlIGRlZmF1bHQgaXMKICAgIDxjb2RlPk1heFNwYXJlVGhyZWFkcyAxMDA8L2NvZGU+LiBTaW5jZSB0aGlzIE1QTSBydW5zIGEKICAgIHNpbmdsZS1wcm9jZXNzLCB0aGUgc3BhcmUgdGhyZWFkIGNvdW50IGlzIGFsc28gc2VydmVyLXdpZGUuPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+IHdvcmtzCiAgICBzaW1pbGFyIHRvIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fbmV0d2FyZS5odG1sIj5tcG1fbmV0d2FyZTwvYT48L2NvZGU+LiBGb3IKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPjEwPC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPlJlc3RyaWN0aW9uczwvaDM+CiAgICAgIDxwPlRoZSByYW5nZSBvZiB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+TWF4U3BhcmVUaHJlYWRzPC9jb2RlPiB2YWx1ZQogICAgICBpcyByZXN0cmljdGVkLiBBcGFjaGUgaHR0cGQgd2lsbCBjb3JyZWN0IHRoZSBnaXZlbiB2YWx1ZSBhdXRvbWF0aWNhbGx5CiAgICAgIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJ1bGVzOjwvcD4KICAgICAgPHVsPgogICAgICAgIDxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX25ldHdhcmUuaHRtbCI+bXBtX25ldHdhcmU8L2E+PC9jb2RlPiB3YW50cyB0aGUgdmFsdWUgdG8gYmUgZ3JlYXRlciB0aGFuCiAgICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI21pbnNwYXJldGhyZWFkcyI+TWluU3BhcmVUaHJlYWRzPC9hPjwvY29kZT4uPC9saT4KCiAgICAgICAgPGxpPkZvciA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+LCB0aGUgdmFsdWUgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsCiAgICAgICAgdG8gdGhlIHN1bSBvZiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWluc3BhcmV0aHJlYWRzIj5NaW5TcGFyZVRocmVhZHM8L2E+PC9jb2RlPgogICAgICAgIGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjdGhyZWFkc3BlcmNoaWxkIj5UaHJlYWRzUGVyQ2hpbGQ8L2E+PC9jb2RlPi48L2xpPgogICAgICA8L3VsPgogICAgPC9kaXY+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWluc3BhcmV0aHJlYWRzIj5NaW5TcGFyZVRocmVhZHM8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc3RhcnRzZXJ2ZXJzIj5TdGFydFNlcnZlcnM8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sI21heHNwYXJlc2VydmVycyI+TWF4U3BhcmVTZXJ2ZXJzPC9hPjwvY29kZT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iTWluU3BhcmVUaHJlYWRzIiBpZD0iTWluU3BhcmVUaHJlYWRzIj5NaW5TcGFyZVRocmVhZHM8L2E+IDxhIG5hbWU9Im1pbnNwYXJldGhyZWFkcyIgaWQ9Im1pbnNwYXJldGhyZWFkcyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWluaW11bSBudW1iZXIgb2YgaWRsZSB0aHJlYWRzIGF2YWlsYWJsZSB0byBoYW5kbGUgcmVxdWVzdApzcGlrZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+TWluU3BhcmVUaHJlYWRzIDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNlZSB1c2FnZSBmb3IgZGV0YWlsczwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvZXZlbnQuaHRtbCI+ZXZlbnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+TWluaW11bSBudW1iZXIgb2YgaWRsZSB0aHJlYWRzIHRvIGhhbmRsZSByZXF1ZXN0IHNwaWtlcy4KICAgIERpZmZlcmVudCBNUE1zIGRlYWwgd2l0aCB0aGlzIGRpcmVjdGl2ZQogICAgZGlmZmVyZW50bHkuPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4gdXNlcyBhIGRlZmF1bHQgb2YgPGNvZGU+TWluU3BhcmVUaHJlYWRzCiAgICA3NTwvY29kZT4gYW5kIGRlYWxzIHdpdGggaWRsZSB0aHJlYWRzIG9uIGEgc2VydmVyLXdpZGUgYmFzaXMuIElmCiAgICB0aGVyZSBhcmVuJ3QgZW5vdWdoIGlkbGUgdGhyZWFkcyBpbiB0aGUgc2VydmVyIHRoZW4gY2hpbGQKICAgIHByb2Nlc3NlcyBhcmUgY3JlYXRlZCB1bnRpbCB0aGUgbnVtYmVyIG9mIGlkbGUgdGhyZWFkcyBpcyBncmVhdGVyCiAgICB0aGFuIDx2YXI+bnVtYmVyPC92YXI+LjwvcD4KCiAgICA8cD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX25ldHdhcmUuaHRtbCI+bXBtX25ldHdhcmU8L2E+PC9jb2RlPiB1c2VzIGEgZGVmYXVsdCBvZgogICAgPGNvZGU+TWluU3BhcmVUaHJlYWRzIDEwPC9jb2RlPiBhbmQsIHNpbmNlIGl0IGlzIGEgc2luZ2xlLXByb2Nlc3MKICAgIE1QTSwgdHJhY2tzIHRoaXMgb24gYSBzZXJ2ZXItd2lkZSBiYXNlcy48L3A+CgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbXRfb3MyLmh0bWwiPm1wbXRfb3MyPC9hPjwvY29kZT4gd29ya3MKICAgIHNpbWlsYXIgdG8gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4uICBGb3IKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPjU8L2NvZGU+LjwvcD4KCjxoMz5TZWUgYWxzbzwvaDM+Cjx1bD4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNtYXhzcGFyZXRocmVhZHMiPk1heFNwYXJlVGhyZWFkczwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNzdGFydHNlcnZlcnMiPlN0YXJ0U2VydmVyczwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9wcmVmb3JrLmh0bWwjbWluc3BhcmVzZXJ2ZXJzIj5NaW5TcGFyZVNlcnZlcnM8L2E+PC9jb2RlPjwvbGk+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJQaWRGaWxlIiBpZD0iUGlkRmlsZSI+UGlkRmlsZTwvYT4gPGEgbmFtZT0icGlkZmlsZSIgaWQ9InBpZGZpbGUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkZpbGUgd2hlcmUgdGhlIHNlcnZlciByZWNvcmRzIHRoZSBwcm9jZXNzIElECm9mIHRoZSBkYWVtb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+UGlkRmlsZSA8dmFyPmZpbGVuYW1lPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlBpZEZpbGUgbG9ncy9odHRwZC5waWQ8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+UGlkRmlsZTwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlIGZpbGUgdG8KICAgIHdoaWNoIHRoZSBzZXJ2ZXIgcmVjb3JkcyB0aGUgcHJvY2VzcyBpZCBvZiB0aGUgZGFlbW9uLiBJZiB0aGUKICAgIGZpbGVuYW1lIGlzIG5vdCBhYnNvbHV0ZSB0aGVuIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI3NlcnZlcnJvb3QiPlNlcnZlclJvb3Q8L2E+PC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBQaWRGaWxlIC92YXIvcnVuL2FwYWNoZS5waWQKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SXQgaXMgb2Z0ZW4gdXNlZnVsIHRvIGJlIGFibGUgdG8gc2VuZCB0aGUgc2VydmVyIGEgc2lnbmFsLAogICAgc28gdGhhdCBpdCBjbG9zZXMgYW5kIHRoZW4gcmUtb3BlbnMgaXRzIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjZXJyb3Jsb2ciPkVycm9yTG9nPC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbG9nX2NvbmZpZy5odG1sI3RyYW5zZmVybG9nIj5UcmFuc2ZlckxvZzwvYT48L2NvZGU+LCBhbmQKICAgIHJlLXJlYWRzIGl0cyBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIGlzIGRvbmUgYnkgc2VuZGluZyBhCiAgICBTSUdIVVAgKGtpbGwgLTEpIHNpZ25hbCB0byB0aGUgcHJvY2VzcyBpZCBsaXN0ZWQgaW4gdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5QaWRGaWxlPC9jb2RlPi48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlBpZEZpbGU8L2NvZGU+IGlzIHN1YmplY3QgdG8gdGhlIHNhbWUKICAgIHdhcm5pbmdzIGFib3V0IGxvZyBmaWxlIHBsYWNlbWVudCBhbmQgPGEgaHJlZj0iLi4vbWlzYy9zZWN1cml0eV90aXBzLmh0bWwjc2VydmVycm9vdCI+c2VjdXJpdHk8L2E+LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICAgIDxwPkFzIG9mIEFwYWNoZSBIVFRQIFNlcnZlciAyLCB3ZSByZWNvbW1lbmRlZCB0aGF0IHlvdSBvbmx5IHVzZSB0aGUgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4uL3Byb2dyYW1zL2FwYWNoZWN0bC5odG1sIj5hcGFjaGVjdGw8L2E+PC9jb2RlPiBzY3JpcHQsIG9yIHRoZSBpbml0IHNjcmlwdCB0aGF0IHlvdXIgT1MgcHJvdmlkZXMsCiAgICAgIGZvciAocmUtKXN0YXJ0aW5nIG9yIHN0b3BwaW5nIHRoZSBzZXJ2ZXIuPC9wPgogICAgPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iUmVjZWl2ZUJ1ZmZlclNpemUiIGlkPSJSZWNlaXZlQnVmZmVyU2l6ZSI+UmVjZWl2ZUJ1ZmZlclNpemU8L2E+IDxhIG5hbWU9InJlY2VpdmVidWZmZXJzaXplIiBpZD0icmVjZWl2ZWJ1ZmZlcnNpemUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRDUCByZWNlaXZlIGJ1ZmZlciBzaXplPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlJlY2VpdmVCdWZmZXJTaXplIDx2YXI+Ynl0ZXM8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+UmVjZWl2ZUJ1ZmZlclNpemUgMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvZXZlbnQuaHRtbCI+ZXZlbnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG10X29zMi5odG1sIj5tcG10X29zMjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgc2VydmVyIHdpbGwgc2V0IHRoZSBUQ1AgcmVjZWl2ZSBidWZmZXIgc2l6ZSB0byB0aGUgbnVtYmVyIG9mCiAgICBieXRlcyBzcGVjaWZpZWQuPC9wPgoKICAgIDxwPklmIHNldCB0byB0aGUgdmFsdWUgb2YgPGNvZGU+MDwvY29kZT4sIHRoZSBzZXJ2ZXIgd2lsbCB1c2UgdGhlCiAgICBPUyBkZWZhdWx0LjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTY29yZUJvYXJkRmlsZSIgaWQ9IlNjb3JlQm9hcmRGaWxlIj5TY29yZUJvYXJkRmlsZTwvYT4gPGEgbmFtZT0ic2NvcmVib2FyZGZpbGUiIGlkPSJzY29yZWJvYXJkZmlsZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TG9jYXRpb24gb2YgdGhlIGZpbGUgdXNlZCB0byBzdG9yZSBjb29yZGluYXRpb24gZGF0YSBmb3IKdGhlIGNoaWxkIHByb2Nlc3NlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TY29yZUJvYXJkRmlsZSA8dmFyPmZpbGUtcGF0aDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5TY29yZUJvYXJkRmlsZSBsb2dzL2FwYWNoZV9zdGF0dXM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9wcmVmb3JrLmh0bWwiPnByZWZvcms8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3dvcmtlci5odG1sIj53b3JrZXI8L2E+PC9jb2RlPjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkFwYWNoZSBIVFRQIFNlcnZlciB1c2VzIGEgc2NvcmVib2FyZCB0byBjb21tdW5pY2F0ZSBiZXR3ZWVuIGl0cyBwYXJlbnQKICAgIGFuZCBjaGlsZCBwcm9jZXNzZXMuICBTb21lIGFyY2hpdGVjdHVyZXMgcmVxdWlyZSBhIGZpbGUgdG8gZmFjaWxpdGF0ZQogICAgdGhpcyBjb21tdW5pY2F0aW9uLiBJZiB0aGUgZmlsZSBpcyBsZWZ0IHVuc3BlY2lmaWVkLCBBcGFjaGUgaHR0cGQgZmlyc3QKICAgIGF0dGVtcHRzIHRvIGNyZWF0ZSB0aGUgc2NvcmVib2FyZCBlbnRpcmVseSBpbiBtZW1vcnkgKHVzaW5nIGFub255bW91cwogICAgc2hhcmVkIG1lbW9yeSkgYW5kLCBmYWlsaW5nIHRoYXQsIHdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGZpbGUgb24KICAgIGRpc2sgKHVzaW5nIGZpbGUtYmFzZWQgc2hhcmVkIG1lbW9yeSkuIFNwZWNpZnlpbmcgdGhpcyBkaXJlY3RpdmUgY2F1c2VzCiAgICBBcGFjaGUgaHR0cGQgdG8gYWx3YXlzIGNyZWF0ZSB0aGUgZmlsZSBvbiB0aGUgZGlzay48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICBTY29yZUJvYXJkRmlsZSAvdmFyL3J1bi9hcGFjaGVfc3RhdHVzCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkZpbGUtYmFzZWQgc2hhcmVkIG1lbW9yeSBpcyB1c2VmdWwgZm9yIHRoaXJkLXBhcnR5IGFwcGxpY2F0aW9ucwogICAgdGhhdCByZXF1aXJlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHNjb3JlYm9hcmQuPC9wPgoKICAgIDxwPklmIHlvdSB1c2UgYSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5TY29yZUJvYXJkRmlsZTwvY29kZT4gdGhlbgogICAgeW91IG1heSBzZWUgaW1wcm92ZWQgc3BlZWQgYnkgcGxhY2luZyBpdCBvbiBhIFJBTSBkaXNrLiBCdXQgYmUKICAgIGNhcmVmdWwgdGhhdCB5b3UgaGVlZCB0aGUgc2FtZSB3YXJuaW5ncyBhYm91dCBsb2cgZmlsZSBwbGFjZW1lbnQKICAgIGFuZCA8YSBocmVmPSIuLi9taXNjL3NlY3VyaXR5X3RpcHMuaHRtbCI+c2VjdXJpdHk8L2E+LjwvcD4KCjxoMz5TZWUgYWxzbzwvaDM+Cjx1bD4KPGxpPjxhIGhyZWY9Ii4uL3N0b3BwaW5nLmh0bWwiPlN0b3BwaW5nIGFuZCBSZXN0YXJ0aW5nCkFwYWNoZSBIVFRQIFNlcnZlcjwvYT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iU2VuZEJ1ZmZlclNpemUiIGlkPSJTZW5kQnVmZmVyU2l6ZSI+U2VuZEJ1ZmZlclNpemU8L2E+IDxhIG5hbWU9InNlbmRidWZmZXJzaXplIiBpZD0ic2VuZGJ1ZmZlcnNpemUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRDUCBidWZmZXIgc2l6ZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TZW5kQnVmZmVyU2l6ZSA8dmFyPmJ5dGVzPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNlbmRCdWZmZXJTaXplIDA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fbmV0d2FyZS5odG1sIj5tcG1fbmV0d2FyZTwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX3dpbm50Lmh0bWwiPm1wbV93aW5udDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtdF9vczIuaHRtbCI+bXBtdF9vczI8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+U2V0cyB0aGUgc2VydmVyJ3MgVENQIHNlbmQgYnVmZmVyIHNpemUgdG8gdGhlIG51bWJlciBvZiBieXRlcwogICAgc3BlY2lmaWVkLiBJdCBpcyBvZnRlbiB1c2VmdWwgdG8gc2V0IHRoaXMgcGFzdCB0aGUgT1MncyBzdGFuZGFyZAogICAgZGVmYXVsdCB2YWx1ZSBvbiBoaWdoIHNwZWVkLCBoaWdoIGxhdGVuY3kgY29uZWN0aW9ucwogICAgKDxlbT5pLmUuPC9lbT4sIDEwMG1zIG9yIHNvLCBzdWNoIGFzIHRyYW5zY29udGluZW50YWwgZmFzdCBwaXBlcykuPC9wPgoKICAgIDxwPklmIHNldCB0byB0aGUgdmFsdWUgb2YgPGNvZGU+MDwvY29kZT4sIHRoZSBzZXJ2ZXIgd2lsbCB1c2UgdGhlCiAgICBkZWZhdWx0IHZhbHVlIHByb3ZpZGVkIGJ5IHlvdXIgT1MuPC9wPgoKICAgIDxwPkZ1cnRoZXIgY29uZmlndXJhdGlvbiBvZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gbWF5IGJlIHJlcXVpcmVkIHRvIGVsaWNpdAogICAgYmV0dGVyIHBlcmZvcm1hbmNlIG9uIGhpZ2ggc3BlZWQsIGhpZ2ggbGF0ZW5jeSBjb25uZWN0aW9ucy48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+IDxwPiBPbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zLCBjaGFuZ2VzIGluIFRDUCBiZWhhdmlvciByZXN1bHRpbmcKICAgIGZyb20gYSBsYXJnZXIgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2VuZEJ1ZmZlclNpemU8L2NvZGU+IG1heSBub3QgYmUgc2VlbiB1bmxlc3MKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjZW5hYmxlc2VuZGZpbGUiPkVuYWJsZVNlbmRmaWxlPC9hPjwvY29kZT4gaXMgc2V0IHRvIE9GRi4gIFRoaXMKICAgIGludGVyYWN0aW9uIGFwcGxpZXMgb25seSB0byBzdGF0aWMgZmlsZXMuPC9wPiA8L2Rpdj4KCgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iU2VydmVyTGltaXQiIGlkPSJTZXJ2ZXJMaW1pdCI+U2VydmVyTGltaXQ8L2E+IDxhIG5hbWU9InNlcnZlcmxpbWl0IiBpZD0ic2VydmVybGltaXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlVwcGVyIGxpbWl0IG9uIGNvbmZpZ3VyYWJsZSBudW1iZXIgb2YgcHJvY2Vzc2VzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlNlcnZlckxpbWl0IDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNlZSB1c2FnZSBmb3IgZGV0YWlsczwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvZXZlbnQuaHRtbCI+ZXZlbnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+Rm9yIHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sIj5wcmVmb3JrPC9hPjwvY29kZT4gTVBNLCB0aGlzIGRpcmVjdGl2ZSBzZXRzIHRoZQogICAgbWF4aW11bSBjb25maWd1cmVkIHZhbHVlIGZvciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWF4cmVxdWVzdHdvcmtlcnMiPk1heFJlcXVlc3RXb3JrZXJzPC9hPjwvY29kZT4gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUKICAgIEFwYWNoZSBodHRwZCBwcm9jZXNzLiAgRm9yIHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+IE1QTSwgdGhpcyBkaXJlY3RpdmUKICAgIGluIGNvbWJpbmF0aW9uIHdpdGggPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RocmVhZGxpbWl0Ij5UaHJlYWRMaW1pdDwvYT48L2NvZGU+IHNldHMKICAgIHRoZSBtYXhpbXVtIGNvbmZpZ3VyZWQgdmFsdWUgZm9yIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNtYXhyZXF1ZXN0d29ya2VycyI+TWF4UmVxdWVzdFdvcmtlcnM8L2E+PC9jb2RlPiBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZQogICAgQXBhY2hlIGh0dHBkIHByb2Nlc3MuICBBbnkgYXR0ZW1wdHMgdG8gY2hhbmdlIHRoaXMgZGlyZWN0aXZlIGR1cmluZyBhCiAgICByZXN0YXJ0IHdpbGwgYmUgaWdub3JlZCwgYnV0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNtYXhyZXF1ZXN0d29ya2VycyI+TWF4UmVxdWVzdFdvcmtlcnM8L2E+PC9jb2RlPiBjYW4gYmUgbW9kaWZpZWQgZHVyaW5nCiAgICBhIHJlc3RhcnQuPC9wPgoKICAgIDxwPlNwZWNpYWwgY2FyZSBtdXN0IGJlIHRha2VuIHdoZW4gdXNpbmcgdGhpcyBkaXJlY3RpdmUuICBJZgogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2VydmVyTGltaXQ8L2NvZGU+IGlzIHNldCB0byBhIHZhbHVlIG11Y2ggaGlnaGVyCiAgICB0aGFuIG5lY2Vzc2FyeSwgZXh0cmEsIHVudXNlZCBzaGFyZWQgbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkLiAgSWYKICAgIGJvdGggPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2VydmVyTGltaXQ8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWF4cmVxdWVzdHdvcmtlcnMiPk1heFJlcXVlc3RXb3JrZXJzPC9hPjwvY29kZT4gYXJlIHNldCB0byB2YWx1ZXMKICAgIGhpZ2hlciB0aGFuIHRoZSBzeXN0ZW0gY2FuIGhhbmRsZSwgQXBhY2hlIGh0dHBkIG1heSBub3Qgc3RhcnQgb3IgdGhlCiAgICBzeXN0ZW0gbWF5IGJlY29tZSB1bnN0YWJsZS48L3A+CgogICAgPHA+V2l0aCB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+IE1QTSwgdXNlIHRoaXMgZGlyZWN0aXZlIG9ubHkKICAgIGlmIHlvdSBuZWVkIHRvIHNldCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWF4cmVxdWVzdHdvcmtlcnMiPk1heFJlcXVlc3RXb3JrZXJzPC9hPjwvY29kZT4gaGlnaGVyIHRoYW4gMjU2IChkZWZhdWx0KS4KICAgIERvIG5vdCBzZXQgdGhlIHZhbHVlIG9mIHRoaXMgZGlyZWN0aXZlIGFueSBoaWdoZXIgdGhhbiB3aGF0IHlvdQogICAgbWlnaHQgd2FudCB0byBzZXQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI21heHJlcXVlc3R3b3JrZXJzIj5NYXhSZXF1ZXN0V29ya2VyczwvYT48L2NvZGU+IHRvLjwvcD4KCiAgICA8cD5XaXRoIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIHVzZSB0aGlzIGRpcmVjdGl2ZSBvbmx5CiAgICBpZiB5b3VyIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNtYXhyZXF1ZXN0d29ya2VycyI+TWF4UmVxdWVzdFdvcmtlcnM8L2E+PC9jb2RlPiBhbmQKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN0aHJlYWRzcGVyY2hpbGQiPlRocmVhZHNQZXJDaGlsZDwvYT48L2NvZGU+CiAgICBzZXR0aW5ncyByZXF1aXJlIG1vcmUgdGhhbiAxNiBzZXJ2ZXIgcHJvY2Vzc2VzIChkZWZhdWx0KS4gRG8gbm90IHNldAogICAgdGhlIHZhbHVlIG9mIHRoaXMgZGlyZWN0aXZlIGFueSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHNlcnZlcgogICAgcHJvY2Vzc2VzIHJlcXVpcmVkIGJ5IHdoYXQgeW91IG1heSB3YW50IGZvciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWF4cmVxdWVzdHdvcmtlcnMgIj5NYXhSZXF1ZXN0V29ya2VycyA8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvY29kZT4uPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5Ob3RlPC9oMz4KICAgICAgPHA+VGhlcmUgaXMgYSBoYXJkIGxpbWl0IG9mIDxjb2RlPlNlcnZlckxpbWl0IDIwMDAwPC9jb2RlPiBjb21waWxlZAogICAgICBpbnRvIHRoZSBzZXJ2ZXIgKGZvciB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+IE1QTSAyMDAwMDApLiBUaGlzIGlzCiAgICAgIGludGVuZGVkIHRvIGF2b2lkIG5hc3R5IGVmZmVjdHMgY2F1c2VkIGJ5IHR5cG9zLiBUbyBpbmNyZWFzZSBpdAogICAgICBldmVuIGZ1cnRoZXIgcGFzdCB0aGlzIGxpbWl0LCB5b3Ugd2lsbCBuZWVkIHRvIG1vZGlmeSB0aGUgdmFsdWUgb2YKICAgICAgTUFYX1NFUlZFUl9MSU1JVCBpbiB0aGUgbXBtIHNvdXJjZSBmaWxlIGFuZCByZWJ1aWxkIHRoZSBzZXJ2ZXIuPC9wPgogICAgPC9kaXY+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48YSBocmVmPSIuLi9zdG9wcGluZy5odG1sIj5TdG9wcGluZyBhbmQgUmVzdGFydGluZyBBcGFjaGUgSFRUUCBTZXJ2ZXI8L2E+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlN0YXJ0U2VydmVycyIgaWQ9IlN0YXJ0U2VydmVycyI+U3RhcnRTZXJ2ZXJzPC9hPiA8YSBuYW1lPSJzdGFydHNlcnZlcnMiIGlkPSJzdGFydHNlcnZlcnMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk51bWJlciBvZiBjaGlsZCBzZXJ2ZXIgcHJvY2Vzc2VzIGNyZWF0ZWQgYXQgc3RhcnR1cDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TdGFydFNlcnZlcnMgPHZhcj5udW1iZXI8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+U2VlIHVzYWdlIGZvciBkZXRhaWxzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+TVBNPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtdF9vczIuaHRtbCI+bXBtdF9vczI8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2Qvd29ya2VyLmh0bWwiPndvcmtlcjwvYT48L2NvZGU+PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlN0YXJ0U2VydmVyczwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlCiAgICBudW1iZXIgb2YgY2hpbGQgc2VydmVyIHByb2Nlc3NlcyBjcmVhdGVkIG9uIHN0YXJ0dXAuIEFzIHRoZSBudW1iZXIKICAgIG9mIHByb2Nlc3NlcyBpcyBkeW5hbWljYWxseSBjb250cm9sbGVkIGRlcGVuZGluZyBvbiB0aGUgbG9hZCwgKHNlZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI21pbnNwYXJldGhyZWFkcyI+TWluU3BhcmVUaHJlYWRzPC9hPjwvY29kZT4sCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjbWF4c3BhcmV0aHJlYWRzIj5NYXhTcGFyZVRocmVhZHM8L2E+PC9jb2RlPiwKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9wcmVmb3JrLmh0bWwjbWluc3BhcmVzZXJ2ZXJzIj5NaW5TcGFyZVNlcnZlcnM8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCNtYXhzcGFyZXNlcnZlcnMiPk1heFNwYXJlU2VydmVyczwvYT48L2NvZGU+KQogICAgdGhlcmUgaXMgdXN1YWxseSBsaXR0bGUgcmVhc29uIHRvIGFkanVzdCB0aGlzIHBhcmFtZXRlci48L3A+CgogICAgPHA+VGhlIGRlZmF1bHQgdmFsdWUgZGlmZmVycyBmcm9tIE1QTSB0byBNUE0uIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4KICAgIGRlZmF1bHRzIHRvIDxjb2RlPlN0YXJ0U2VydmVycyAzPC9jb2RlPjsgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3ByZWZvcmsuaHRtbCI+cHJlZm9yazwvYT48L2NvZGU+CiAgICBkZWZhdWx0cyB0byA8Y29kZT41PC9jb2RlPjsgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbXRfb3MyLmh0bWwiPm1wbXRfb3MyPC9hPjwvY29kZT4gZGVmYXVsdHMgdG8KICAgIDxjb2RlPjI8L2NvZGU+LjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTdGFydFRocmVhZHMiIGlkPSJTdGFydFRocmVhZHMiPlN0YXJ0VGhyZWFkczwvYT4gPGEgbmFtZT0ic3RhcnR0aHJlYWRzIiBpZD0ic3RhcnR0aHJlYWRzIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5OdW1iZXIgb2YgdGhyZWFkcyBjcmVhdGVkIG9uIHN0YXJ0dXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+U3RhcnRUaHJlYWRzIDx2YXI+bnVtYmVyPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNlZSB1c2FnZSBmb3IgZGV0YWlsczwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX25ldHdhcmUuaHRtbCI+bXBtX25ldHdhcmU8L2E+PC9jb2RlPjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPk51bWJlciBvZiB0aHJlYWRzIGNyZWF0ZWQgb24gc3RhcnR1cC4gQXMgdGhlCiAgICBudW1iZXIgb2YgdGhyZWFkcyBpcyBkeW5hbWljYWxseSBjb250cm9sbGVkIGRlcGVuZGluZyBvbiB0aGUKICAgIGxvYWQsIChzZWUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNtaW5zcGFyZXRocmVhZHMiPk1pblNwYXJlVGhyZWFkczwvYT48L2NvZGU+LAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI21heHNwYXJldGhyZWFkcyI+TWF4U3BhcmVUaHJlYWRzPC9hPjwvY29kZT4sCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvcHJlZm9yay5odG1sI21pbnNwYXJlc2VydmVycyI+TWluU3BhcmVTZXJ2ZXJzPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9wcmVmb3JrLmh0bWwjbWF4c3BhcmVzZXJ2ZXJzIj5NYXhTcGFyZVNlcnZlcnM8L2E+PC9jb2RlPikKICAgIHRoZXJlIGlzIHVzdWFsbHkgbGl0dGxlIHJlYXNvbiB0byBhZGp1c3QgdGhpcwogICAgcGFyYW1ldGVyLjwvcD4KCiAgICA8cD5Gb3IgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9uZXR3YXJlLmh0bWwiPm1wbV9uZXR3YXJlPC9hPjwvY29kZT4gdGhlIGRlZmF1bHQgaXMKICAgIDxjb2RlPlN0YXJ0VGhyZWFkcyA1MDwvY29kZT4gYW5kLCBzaW5jZSB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlCiAgICBwcm9jZXNzLCB0aGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgdGhyZWFkcyBjcmVhdGVkIGF0IHN0YXJ0dXAgdG8KICAgIHNlcnZlIHJlcXVlc3RzLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJUaHJlYWRMaW1pdCIgaWQ9IlRocmVhZExpbWl0Ij5UaHJlYWRMaW1pdDwvYT4gPGEgbmFtZT0idGhyZWFkbGltaXQiIGlkPSJ0aHJlYWRsaW1pdCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2V0cyB0aGUgdXBwZXIgbGltaXQgb24gdGhlIGNvbmZpZ3VyYWJsZSBudW1iZXIgb2YgdGhyZWFkcwpwZXIgY2hpbGQgcHJvY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5UaHJlYWRMaW1pdCA8dmFyPm51bWJlcjwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5TZWUgdXNhZ2UgZm9yIGRldGFpbHM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgZm9yIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4gaW4gQXBhY2hlIEhUVFAgU2VydmVyIDIuMC40MQphbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzZXRzIHRoZSBtYXhpbXVtIGNvbmZpZ3VyZWQgdmFsdWUgZm9yIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN0aHJlYWRzcGVyY2hpbGQiPlRocmVhZHNQZXJDaGlsZDwvYT48L2NvZGU+IGZvciB0aGUgbGlmZXRpbWUKICAgIG9mIHRoZSBBcGFjaGUgaHR0cGQgcHJvY2Vzcy4gIEFueSBhdHRlbXB0cyB0byBjaGFuZ2UgdGhpcyBkaXJlY3RpdmUKICAgIGR1cmluZyBhIHJlc3RhcnQgd2lsbCBiZSBpZ25vcmVkLCBidXQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvY29kZT4gY2FuIGJlIG1vZGlmaWVkCiAgICBkdXJpbmcgYSByZXN0YXJ0IHVwIHRvIHRoZSB2YWx1ZSBvZiB0aGlzIGRpcmVjdGl2ZS48L3A+CgogICAgPHA+U3BlY2lhbCBjYXJlIG11c3QgYmUgdGFrZW4gd2hlbiB1c2luZyB0aGlzIGRpcmVjdGl2ZS4gIElmCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5UaHJlYWRMaW1pdDwvY29kZT4gaXMgc2V0IHRvIGEgdmFsdWUgbXVjaCBoaWdoZXIKICAgIHRoYW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvY29kZT4sCiAgICBleHRyYSB1bnVzZWQgc2hhcmVkIG1lbW9yeSB3aWxsIGJlIGFsbG9jYXRlZC4gIElmIGJvdGgKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZExpbWl0PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvY29kZT4gYXJlIHNldCB0byB2YWx1ZXMKICAgIGhpZ2hlciB0aGFuIHRoZSBzeXN0ZW0gY2FuIGhhbmRsZSwgQXBhY2hlIGh0dHBkIG1heSBub3Qgc3RhcnQgb3IgdGhlCiAgICBzeXN0ZW0gbWF5IGJlY29tZSB1bnN0YWJsZS4gRG8gbm90IHNldCB0aGUgdmFsdWUgb2YgdGhpcyBkaXJlY3RpdmUKICAgIGFueSBoaWdoZXIgdGhhbiB5b3VyIGdyZWF0ZXN0IHByZWRpY3RlZCBzZXR0aW5nIG9mIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN0aHJlYWRzcGVyY2hpbGQiPlRocmVhZHNQZXJDaGlsZDwvYT48L2NvZGU+IGZvciB0aGUKICAgIGN1cnJlbnQgcnVuIG9mIEFwYWNoZSBodHRwZC48L3A+CgogICAgPHA+VGhlIGRlZmF1bHQgdmFsdWUgZm9yIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZExpbWl0PC9jb2RlPiBpcwogICAgPGNvZGU+MTkyMDwvY29kZT4gd2hlbiB1c2VkIHdpdGggPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV93aW5udC5odG1sIj5tcG1fd2lubnQ8L2E+PC9jb2RlPiBhbmQKICAgIDxjb2RlPjY0PC9jb2RlPiB3aGVuIHVzZWQgd2l0aCB0aGUgb3RoZXJzLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICAgIDxwPlRoZXJlIGlzIGEgaGFyZCBsaW1pdCBvZiA8Y29kZT5UaHJlYWRMaW1pdCAyMDAwMDwvY29kZT4gKG9yCiAgICAgIDxjb2RlPlRocmVhZExpbWl0IDE1MDAwPC9jb2RlPiB3aXRoIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4pCiAgICAgIGNvbXBpbGVkIGludG8gdGhlIHNlcnZlci4gVGhpcyBpcyBpbnRlbmRlZCB0byBhdm9pZCBuYXN0eSBlZmZlY3RzCiAgICAgIGNhdXNlZCBieSB0eXBvcy4gVG8gaW5jcmVhc2UgaXQgZXZlbiBmdXJ0aGVyIHBhc3QgdGhpcyBsaW1pdCwgeW91CiAgICAgIHdpbGwgbmVlZCB0byBtb2RpZnkgdGhlIHZhbHVlIG9mIE1BWF9USFJFQURfTElNSVQgaW4gdGhlIG1wbQogICAgICBzb3VyY2UgZmlsZSBhbmQgcmVidWlsZCB0aGUgc2VydmVyLjwvcD4KICAgIDwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlRocmVhZHNQZXJDaGlsZCIgaWQ9IlRocmVhZHNQZXJDaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPiA8YSBuYW1lPSJ0aHJlYWRzcGVyY2hpbGQiIGlkPSJ0aHJlYWRzcGVyY2hpbGQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk51bWJlciBvZiB0aHJlYWRzIGNyZWF0ZWQgYnkgZWFjaCBjaGlsZCBwcm9jZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlRocmVhZHNQZXJDaGlsZCA8dmFyPm51bWJlcjwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5TZWUgdXNhZ2UgZm9yIGRldGFpbHM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5NUE08L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL2V2ZW50Lmh0bWwiPmV2ZW50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzZXRzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBjcmVhdGVkIGJ5IGVhY2gKICAgIGNoaWxkIHByb2Nlc3MuIFRoZSBjaGlsZCBjcmVhdGVzIHRoZXNlIHRocmVhZHMgYXQgc3RhcnR1cCBhbmQKICAgIG5ldmVyIGNyZWF0ZXMgbW9yZS4gSWYgdXNpbmcgYW4gTVBNIGxpa2UgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbV93aW5udC5odG1sIj5tcG1fd2lubnQ8L2E+PC9jb2RlPiwKICAgIHdoZXJlIHRoZXJlIGlzIG9ubHkgb25lIGNoaWxkIHByb2Nlc3MsIHRoaXMgbnVtYmVyIHNob3VsZCBiZSBoaWdoCiAgICBlbm91Z2ggdG8gaGFuZGxlIHRoZSBlbnRpcmUgbG9hZCBvZiB0aGUgc2VydmVyLiBJZiB1c2luZyBhbiBNUE0KICAgIGxpa2UgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3dvcmtlci5odG1sIj53b3JrZXI8L2E+PC9jb2RlPiwgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGNoaWxkIHByb2Nlc3NlcywKICAgIHRoZSA8ZW0+dG90YWw8L2VtPiBudW1iZXIgb2YgdGhyZWFkcyBzaG91bGQgYmUgaGlnaCBlbm91Z2ggdG8gaGFuZGxlCiAgICB0aGUgY29tbW9uIGxvYWQgb24gdGhlIHNlcnZlci48L3A+CgogICAgPHA+VGhlIGRlZmF1bHQgdmFsdWUgZm9yIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZHNQZXJDaGlsZDwvY29kZT4gaXMKICAgIDxjb2RlPjY0PC9jb2RlPiB3aGVuIHVzZWQgd2l0aCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX3dpbm50Lmh0bWwiPm1wbV93aW5udDwvYT48L2NvZGU+IGFuZAogICAgPGNvZGU+MjU8L2NvZGU+IHdoZW4gdXNlZCB3aXRoIHRoZSBvdGhlcnMuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlRocmVhZFN0YWNrU2l6ZSIgaWQ9IlRocmVhZFN0YWNrU2l6ZSI+VGhyZWFkU3RhY2tTaXplPC9hPiA8YSBuYW1lPSJ0aHJlYWRzdGFja3NpemUiIGlkPSJ0aHJlYWRzdGFja3NpemUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzdGFjayB1c2VkIGJ5IHRocmVhZHMgaGFuZGxpbmcKY2xpZW50IGNvbm5lY3Rpb25zPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlRocmVhZFN0YWNrU2l6ZSA8dmFyPnNpemU8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+NjU1MzYgb24gTmV0V2FyZTsgdmFyaWVzIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+TVBNPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbXBtX25ldHdhcmUuaHRtbCI+bXBtX25ldHdhcmU8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21wbXRfb3MyLmh0bWwiPm1wbXRfb3MyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fd2lubnQuaHRtbCI+bXBtX3dpbm50PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9ldmVudC5odG1sIj5ldmVudDwvYT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIEFwYWNoZSBIVFRQIFNlcnZlciAyLjEgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZFN0YWNrU2l6ZTwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlCiAgICBzaXplIG9mIHRoZSBzdGFjayAoZm9yIGF1dG9kYXRhKSBvZiB0aHJlYWRzIHdoaWNoIGhhbmRsZSBjbGllbnQKICAgIGNvbm5lY3Rpb25zIGFuZCBjYWxsIG1vZHVsZXMgdG8gaGVscCBwcm9jZXNzIHRob3NlIGNvbm5lY3Rpb25zLgogICAgSW4gbW9zdCBjYXNlcyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBkZWZhdWx0IGZvciBzdGFjayBzaXplIGlzCiAgICByZWFzb25hYmxlLCBidXQgdGhlcmUgYXJlIHNvbWUgY29uZGl0aW9ucyB3aGVyZSBpdCBtYXkgbmVlZCB0byBiZQogICAgYWRqdXN0ZWQ6PC9wPgoKICAgIDx1bD4KICAgICAgPGxpPk9uIHBsYXRmb3JtcyB3aXRoIGEgcmVsYXRpdmVseSBzbWFsbCBkZWZhdWx0IHRocmVhZCBzdGFjayBzaXplCiAgICAgIChlLmcuLCBIUC1VWCksIEFwYWNoZSBodHRwZCBtYXkgY3Jhc2ggd2hlbiB1c2luZyBzb21lIHRoaXJkLXBhcnR5IG1vZHVsZXMKICAgICAgd2hpY2ggdXNlIGEgcmVsYXRpdmVseSBsYXJnZSBhbW91bnQgb2YgYXV0b2RhdGEgc3RvcmFnZS4gIFRob3NlCiAgICAgIHNhbWUgbW9kdWxlcyBtYXkgaGF2ZSB3b3JrZWQgZmluZSBvbiBvdGhlciBwbGF0Zm9ybXMgd2hlcmUgdGhlCiAgICAgIGRlZmF1bHQgdGhyZWFkIHN0YWNrIHNpemUgaXMgbGFyZ2VyLiAgVGhpcyB0eXBlIG9mIGNyYXNoIGlzCiAgICAgIHJlc29sdmVkIGJ5IHNldHRpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VGhyZWFkU3RhY2tTaXplPC9jb2RlPiB0byBhCiAgICAgIHZhbHVlIGhpZ2hlciB0aGFuIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlZmF1bHQuICBUaGlzIHR5cGUgb2YKICAgICAgYWRqdXN0bWVudCBpcyBuZWNlc3Nhcnkgb25seSBpZiB0aGUgcHJvdmlkZXIgb2YgdGhlIHRoaXJkLXBhcnR5CiAgICAgIG1vZHVsZSBzcGVjaWZpZXMgdGhhdCBpdCBpcyByZXF1aXJlZCwgb3IgaWYgZGlhZ25vc2lzIG9mIGFuIEFwYWNoZSBodHRwZAogICAgICBjcmFzaCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGhyZWFkIHN0YWNrIHNpemUgd2FzIHRvbyBzbWFsbC48L2xpPgoKICAgICAgPGxpPk9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgZGVmYXVsdCB0aHJlYWQgc3RhY2sgc2l6ZSBpcwogICAgICBzaWduaWZpY2FudGx5IGxhcmdlciB0aGFuIG5lY2Vzc2FyeSBmb3IgdGhlIHdlYiBzZXJ2ZXIKICAgICAgY29uZmlndXJhdGlvbiwgYSBoaWdoZXIgbnVtYmVyIG9mIHRocmVhZHMgcGVyIGNoaWxkIHByb2Nlc3MKICAgICAgd2lsbCBiZSBhY2hpZXZhYmxlIGlmIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZFN0YWNrU2l6ZTwvY29kZT4gaXMKICAgICAgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBkZWZhdWx0LiAgVGhpcyB0eXBlCiAgICAgIG9mIGFkanVzdG1lbnQgc2hvdWxkIG9ubHkgYmUgbWFkZSBpbiBhIHRlc3QgZW52aXJvbm1lbnQgd2hpY2ggYWxsb3dzCiAgICAgIHRoZSBmdWxsIHNldCBvZiB3ZWIgc2VydmVyIHByb2Nlc3NpbmcgY2FuIGJlIGV4ZXJjaXNlZCwgYXMgdGhlcmUKICAgICAgbWF5IGJlIGluZnJlcXVlbnQgcmVxdWVzdHMgd2hpY2ggcmVxdWlyZSBtb3JlIHN0YWNrIHRvIHByb2Nlc3MuCiAgICAgIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHN0YWNrIHNpemUgc3Ryb25nbHkgZGVwZW5kcyBvbiB0aGUgbW9kdWxlcwogICAgICB1c2VkLCBidXQgYW55IGNoYW5nZSBpbiB0aGUgd2ViIHNlcnZlciBjb25maWd1cmF0aW9uIGNhbiBpbnZhbGlkYXRlCiAgICAgIHRoZSBjdXJyZW50IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlRocmVhZFN0YWNrU2l6ZTwvY29kZT4gc2V0dGluZy48L2xpPgoKICAgICAgPGxpPk9uIExpbnV4LCB0aGlzIGRpcmVjdGl2ZSBjYW4gb25seSBiZSB1c2VkIHRvIGluY3JlYXNlIHRoZSBkZWZhdWx0CiAgICAgIHN0YWNrIHNpemUsIGFzIHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsIHVzZXMgdGhlIHZhbHVlIGFzIGEKICAgICAgPGVtPm1pbmltdW08L2VtPiBzdGFjayBzaXplLiAgVGhlIChvZnRlbiBsYXJnZSkgc29mdCBsaW1pdCBmb3IKICAgICAgPGNvZGU+dWxpbWl0IC1zPC9jb2RlPiAoOE1CIGlmIHVubGltaXRlZCkgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBzdGFjawogICAgICBzaXplLjwvbGk+CiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPkl0IGlzIHJlY29tbWVuZGVkIHRvIG5vdCByZWR1Y2UgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VGhyZWFkU3RhY2tTaXplPC9jb2RlPgogICAgdW5sZXNzIGEgaGlnaCBudW1iZXIgb2YgdGhyZWFkcyBwZXIgY2hpbGQgcHJvY2VzcyBpcyBuZWVkZWQuIE9uIHNvbWUKICAgIHBsYXRmb3JtcyAoaW5jbHVkaW5nIExpbnV4KSwgYSBzZXR0aW5nIG9mIDEyODAwMCBpcyBhbHJlYWR5IHRvbyBsb3cgYW5kCiAgICBjYXVzZXMgY3Jhc2hlcyB3aXRoIHNvbWUgY29tbW9uIG1vZHVsZXMuPC9kaXY+Cgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL21wbV9jb21tb24uaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2VuL21vZC9tcG1fY29tbW9uLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbXBtX2NvbW1vbi5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL21vZC9tcG1fY29tbW9uLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTEgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==