PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYXV0aF9kaWdlc3QgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2F1dGhfZGlnZXN0PC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlciBhdXRoZW50aWNhdGlvbiB1c2luZyBNRDUKICAgIERpZ2VzdCBBdXRoZW50aWNhdGlvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNNb2R1bGVJZGVudGlmaWVyIj5Nb2R1bGWgSWRlbnRpZmllcjo8L2E+PC90aD48dGQ+YXV0aF9kaWdlc3RfbW9kdWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU291cmNlRmlsZSI+U291cmNloEZpbGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdC5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGlzIG1vZHVsZSBpbXBsZW1lbnRzIEhUVFAgRGlnZXN0IEF1dGhlbnRpY2F0aW9uCiAgICAoPGEgaHJlZj0iaHR0cDovL3d3dy5mYXFzLm9yZy9yZmNzL3JmYzI2MTcuaHRtbCI+UkZDMjYxNzwvYT4pLCBhbmQKICAgIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHRvIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+IHdoZXJlIHRoZQogICAgcGFzc3dvcmQgaXMgbm90IHRyYW5zbWl0dGVkIGFzIGNsZWFydGV4dC4gSG93ZXZlciwgdGhpcyBkb2VzCiAgICA8c3Ryb25nPm5vdDwvc3Ryb25nPiBsZWFkIHRvIGEgc2lnbmlmaWNhbnQgc2VjdXJpdHkgYWR2YW50YWdlIG92ZXIKICAgIGJhc2ljIGF1dGhlbnRpY2F0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHBhc3N3b3JkIHN0b3JhZ2Ugb24gdGhlCiAgICBzZXJ2ZXIgaXMgbXVjaCBsZXNzIHNlY3VyZSB3aXRoIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiB0aGFuIHdpdGgKICAgIGJhc2ljIGF1dGhlbnRpY2F0aW9uLiBUaGVyZWZvcmUsIHVzaW5nIGJhc2ljIGF1dGggYW5kIGVuY3J5cHRpbmcgdGhlCiAgICB3aG9sZSBjb25uZWN0aW9uIHVzaW5nIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwiPm1vZF9zc2w8L2E+PC9jb2RlPiBpcyBhIG11Y2ggYmV0dGVyCiAgICBhbHRlcm5hdGl2ZS48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZm91bmRhdGlvbi9jb250cmlidXRpbmcuaHRtbCIgY2xhc3M9ImJhZGdlIj48aW1nIHNyYz0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9pbWFnZXMvU3VwcG9ydEFwYWNoZS1zbWFsbC5wbmciIGFsdD0iU3VwcG9ydCBBcGFjaGUhIiAvPjwvYT48aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN1c2luZyI+VXNpbmcgRGlnZXN0IEF1dGhlbnRpY2F0aW9uPC9hPjwvbGk+CjwvdWw+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRoZGlnZXN0YWxnb3JpdGhtIj5BdXRoRGlnZXN0QWxnb3JpdGhtPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhkaWdlc3Rkb21haW4iPkF1dGhEaWdlc3REb21haW48L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGRpZ2VzdG5vbmNlbGlmZXRpbWUiPkF1dGhEaWdlc3ROb25jZUxpZmV0aW1lPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhkaWdlc3Rwcm92aWRlciI+QXV0aERpZ2VzdFByb3ZpZGVyPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhkaWdlc3Rxb3AiPkF1dGhEaWdlc3RRb3A8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGRpZ2VzdHNobWVtc2l6ZSI+QXV0aERpZ2VzdFNobWVtU2l6ZTwvYT48L2xpPgo8L3VsPgo8aDM+QnVnZml4IGNoZWNrbGlzdDwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2h0dHBkL0NIQU5HRVNfMi40Ij5odHRwZCBjaGFuZ2Vsb2c8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9X19vcGVuX18mYW1wO2xpc3RfaWQ9MTQ0NTMyJmFtcDtwcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO3F1ZXJ5X2Zvcm1hdD1zcGVjaWZpYyZhbXA7b3JkZXI9Y2hhbmdlZGRhdGUlMjBERVNDJTJDcHJpb3JpdHklMkNidWdfc2V2ZXJpdHkmYW1wO2NvbXBvbmVudD1tb2RfYXV0aF9kaWdlc3QiPktub3duIGlzc3VlczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO2NvbXBvbmVudD1tb2RfYXV0aF9kaWdlc3QiPlJlcG9ydCBhIGJ1ZzwvYT48L2xpPjwvdWw+PGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG5fY29yZS5odG1sI2F1dGhuYW1lIj5BdXRoTmFtZTwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG5fY29yZS5odG1sI2F1dGh0eXBlIj5BdXRoVHlwZTwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aHpfY29yZS5odG1sI3JlcXVpcmUiPlJlcXVpcmU8L2E+PC9jb2RlPjwvbGk+CjxsaT48YSBocmVmPSIuLi9ob3d0by9hdXRoLmh0bWwiPkF1dGhlbnRpY2F0aW9uIGhvd3RvPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJ1c2luZyIgaWQ9InVzaW5nIj5Vc2luZyBEaWdlc3QgQXV0aGVudGljYXRpb248L2E+PC9oMj4KCiAgICA8cD5UbyB1c2UgTUQ1IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgY29uZmlndXJlIHRoZSBsb2NhdGlvbiB0byBiZQogICAgcHJvdGVjdGVkIGFzIHNob3duIGluIHRoZSBiZWxvdyBleGFtcGxlOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTo8L2gzPjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7TG9jYXRpb24gIi9wcml2YXRlLyImZ3Q7CiAgICBBdXRoVHlwZSBEaWdlc3QKICAgIEF1dGhOYW1lICJwcml2YXRlIGFyZWEiCiAgICBBdXRoRGlnZXN0RG9tYWluICIvcHJpdmF0ZS8iICJodHRwOi8vbWlycm9yLm15LmRvbS9wcml2YXRlMi8iCiAgICAKICAgIEF1dGhEaWdlc3RQcm92aWRlciBmaWxlCiAgICBBdXRoVXNlckZpbGUgIi93ZWIvYXV0aC8uZGlnZXN0X3B3IgogICAgUmVxdWlyZSB2YWxpZC11c2VyCiZsdDsvTG9jYXRpb24mZ3Q7PC9wcmU+CjwvZGl2PgoKICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRoZGlnZXN0ZG9tYWluIj5BdXRoRGlnZXN0RG9tYWluPC9hPjwvY29kZT4KICAgIHNob3VsZCBsaXN0IHRoZSBsb2NhdGlvbnMgdGhhdCB3aWxsIGJlIHByb3RlY3RlZCBieSB0aGlzCiAgICBjb25maWd1cmF0aW9uLjwvcD4KCiAgICA8cD5UaGUgcGFzc3dvcmQgZmlsZSByZWZlcmVuY2VkIGluIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aHVzZXJmaWxlIj5BdXRoVXNlckZpbGU8L2E+PC9jb2RlPiBkaXJlY3RpdmUgbWF5IGJlCiAgICBjcmVhdGVkIGFuZCBtYW5hZ2VkIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHRkaWdlc3QuaHRtbCI+aHRkaWdlc3Q8L2E+PC9jb2RlPiB0b29sLjwvcD4KCgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgPHA+RGlnZXN0IGF1dGhlbnRpY2F0aW9uIHdhcyBpbnRlbmRlZCB0byBiZSBtb3JlIHNlY3VyZSB0aGFuIGJhc2ljCiAgICBhdXRoZW50aWNhdGlvbiwgYnV0IG5vIGxvbmdlciBmdWxmaWxscyB0aGF0IGRlc2lnbiBnb2FsLiBBCiAgICBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tlciBjYW4gdHJpdmlhbGx5IGZvcmNlIHRoZSBicm93c2VyIHRvIGRvd25ncmFkZQogICAgdG8gYmFzaWMgYXV0aGVudGljYXRpb24uIEFuZCBldmVuIGEgcGFzc2l2ZSBlYXZlc2Ryb3BwZXIgY2FuIGJydXRlLWZvcmNlCiAgICB0aGUgcGFzc3dvcmQgdXNpbmcgdG9kYXkncyBncmFwaGljcyBoYXJkd2FyZSwgYmVjYXVzZSB0aGUgaGFzaGluZwogICAgYWxnb3JpdGhtIHVzZWQgYnkgZGlnZXN0IGF1dGhlbnRpY2F0aW9uIGlzIHRvbyBmYXN0LiBBbm90aGVyIHByb2JsZW0gaXMKICAgIHRoYXQgdGhlIHN0b3JhZ2Ugb2YgdGhlIHBhc3N3b3JkcyBvbiB0aGUgc2VydmVyIGlzIGluc2VjdXJlLiBUaGUgY29udGVudHMKICAgIG9mIGEgc3RvbGVuIGh0ZGlnZXN0IGZpbGUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgZm9yIGRpZ2VzdCBhdXRoZW50aWNhdGlvbi4KICAgIFRoZXJlZm9yZSB1c2luZyA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sIj5tb2Rfc3NsPC9hPjwvY29kZT4gdG8gZW5jcnlwdCB0aGUgd2hvbGUgY29ubmVjdGlvbiBpcwogICAgc3Ryb25nbHkgcmVjb21tZW5kZWQuPC9wPgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIj5tb2RfYXV0aF9kaWdlc3Q8L2E+PC9jb2RlPiBvbmx5IHdvcmtzIHByb3Blcmx5IG9uIHBsYXRmb3JtcwogICAgICB3aGVyZSBBUFIgc3VwcG9ydHMgc2hhcmVkIG1lbW9yeS48L3A+CiAgICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RBbGdvcml0aG0iIGlkPSJBdXRoRGlnZXN0QWxnb3JpdGhtIj5BdXRoRGlnZXN0QWxnb3JpdGhtPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0YWxnb3JpdGhtIiBpZD0iYXV0aGRpZ2VzdGFsZ29yaXRobSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VsZWN0cyB0aGUgYWxnb3JpdGhtIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBjaGFsbGVuZ2UgYW5kCnJlc3BvbnNlIGhhc2hlcyBpbiBkaWdlc3QgYXV0aGVudGljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdEFsZ29yaXRobSBNRDV8TUQ1LXNlc3M8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdEFsZ29yaXRobSBNRDU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0QWxnb3JpdGhtPC9jb2RlPiBkaXJlY3RpdmUKICAgIHNlbGVjdHMgdGhlIGFsZ29yaXRobSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgY2hhbGxlbmdlIGFuZCByZXNwb25zZQogICAgaGFzaGVzLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj4KICAgICAgPGNvZGU+TUQ1LXNlc3M8L2NvZGU+IGlzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgeWV0LgogICAgPC9kaXY+CiAgICAKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoRGlnZXN0RG9tYWluIiBpZD0iQXV0aERpZ2VzdERvbWFpbiI+QXV0aERpZ2VzdERvbWFpbjwvYT4gPGEgbmFtZT0iYXV0aGRpZ2VzdGRvbWFpbiIgaWQ9ImF1dGhkaWdlc3Rkb21haW4iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlVSSXMgdGhhdCBhcmUgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBmb3IgZGlnZXN0CmF1dGhlbnRpY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3REb21haW4gPHZhcj5VUkk8L3Zhcj4gWzx2YXI+VVJJPC92YXI+XSAuLi48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0RG9tYWluPC9jb2RlPiBkaXJlY3RpdmUgYWxsb3dzCiAgICB5b3UgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBVUklzIHdoaWNoIGFyZSBpbiB0aGUgc2FtZSBwcm90ZWN0aW9uCiAgICBzcGFjZSAoPGVtPmkuZS48L2VtPiB1c2UgdGhlIHNhbWUgcmVhbG0gYW5kIHVzZXJuYW1lL3Bhc3N3b3JkIGluZm8pLgogICAgVGhlIHNwZWNpZmllZCBVUklzIGFyZSBwcmVmaXhlczsgdGhlIGNsaWVudCB3aWxsIGFzc3VtZQogICAgdGhhdCBhbGwgVVJJcyAiYmVsb3ciIHRoZXNlIGFyZSBhbHNvIHByb3RlY3RlZCBieSB0aGUgc2FtZQogICAgdXNlcm5hbWUvcGFzc3dvcmQuIFRoZSBVUklzIG1heSBiZSBlaXRoZXIgYWJzb2x1dGUgVVJJcyAoPGVtPmkuZS48L2VtPgogICAgaW5jbHVkaW5nIGEgc2NoZW1lLCBob3N0LCBwb3J0LCBldGMuKSBvciByZWxhdGl2ZSBVUklzLjwvcD4KCiAgICA8cD5UaGlzIGRpcmVjdGl2ZSA8ZW0+c2hvdWxkPC9lbT4gYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQKICAgIGNvbnRhaW4gYXQgbGVhc3QgdGhlIChzZXQgb2YpIHJvb3QgVVJJKHMpIGZvciB0aGlzIHNwYWNlLgogICAgT21pdHRpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSB0aGUgY2xpZW50IHRvIHNlbmQgdGhlCiAgICBBdXRob3JpemF0aW9uIGhlYWRlciBmb3IgPGVtPmV2ZXJ5IHJlcXVlc3Q8L2VtPiBzZW50IHRvIHRoaXMKICAgIHNlcnZlci48L3A+CgogICAgPHA+VGhlIFVSSXMgc3BlY2lmaWVkIGNhbiBhbHNvIHBvaW50IHRvIGRpZmZlcmVudCBzZXJ2ZXJzLCBpbgogICAgd2hpY2ggY2FzZSBjbGllbnRzICh3aGljaCB1bmRlcnN0YW5kIHRoaXMpIHdpbGwgdGhlbiBzaGFyZQogICAgdXNlcm5hbWUvcGFzc3dvcmQgaW5mbyBhY3Jvc3MgbXVsdGlwbGUgc2VydmVycyB3aXRob3V0CiAgICBwcm9tcHRpbmcgdGhlIHVzZXIgZWFjaCB0aW1lLiA8L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aERpZ2VzdE5vbmNlTGlmZXRpbWUiIGlkPSJBdXRoRGlnZXN0Tm9uY2VMaWZldGltZSI+QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWU8L2E+IDxhIG5hbWU9ImF1dGhkaWdlc3Rub25jZWxpZmV0aW1lIiBpZD0iYXV0aGRpZ2VzdG5vbmNlbGlmZXRpbWUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkhvdyBsb25nIHRoZSBzZXJ2ZXIgbm9uY2UgaXMgdmFsaWQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdE5vbmNlTGlmZXRpbWUgPHZhcj5zZWNvbmRzPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3ROb25jZUxpZmV0aW1lIDMwMDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhfZGlnZXN0PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3ROb25jZUxpZmV0aW1lPC9jb2RlPiBkaXJlY3RpdmUKICAgIGNvbnRyb2xzIGhvdyBsb25nIHRoZSBzZXJ2ZXIgbm9uY2UgaXMgdmFsaWQuIFdoZW4gdGhlIGNsaWVudAogICAgY29udGFjdHMgdGhlIHNlcnZlciB1c2luZyBhbiBleHBpcmVkIG5vbmNlIHRoZSBzZXJ2ZXIgd2lsbCBzZW5kCiAgICBiYWNrIGEgNDAxIHdpdGggPGNvZGU+c3RhbGU9dHJ1ZTwvY29kZT4uIElmIDx2YXI+c2Vjb25kczwvdmFyPiBpcwogICAgZ3JlYXRlciB0aGFuIDAgdGhlbiBpdCBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIGZvciB3aGljaCB0aGUKICAgIG5vbmNlIGlzIHZhbGlkOyB0aGlzIHNob3VsZCBwcm9iYWJseSBuZXZlciBiZSBzZXQgdG8gbGVzcyB0aGFuIDEwCiAgICBzZWNvbmRzLiBJZiA8dmFyPnNlY29uZHM8L3Zhcj4gaXMgbGVzcyB0aGFuIDAgdGhlbiB0aGUgbm9uY2UgbmV2ZXIKICAgIGV4cGlyZXMuIAogICAgPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RQcm92aWRlciIgaWQ9IkF1dGhEaWdlc3RQcm92aWRlciI+QXV0aERpZ2VzdFByb3ZpZGVyPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0cHJvdmlkZXIiIGlkPSJhdXRoZGlnZXN0cHJvdmlkZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNldHMgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyKHMpIGZvciB0aGlzIGxvY2F0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RQcm92aWRlciA8dmFyPnByb3ZpZGVyLW5hbWU8L3Zhcj4KWzx2YXI+cHJvdmlkZXItbmFtZTwvdmFyPl0gLi4uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RQcm92aWRlciBmaWxlPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aF9kaWdlc3Q8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aERpZ2VzdFByb3ZpZGVyPC9jb2RlPiBkaXJlY3RpdmUgc2V0cwogICAgd2hpY2ggcHJvdmlkZXIgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXJzIGZvciB0aGlzIGxvY2F0aW9uLgogICAgVGhlIGRlZmF1bHQgPGNvZGU+ZmlsZTwvY29kZT4gcHJvdmlkZXIgaXMgaW1wbGVtZW50ZWQKICAgIGJ5IHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2ZpbGUuaHRtbCI+bW9kX2F1dGhuX2ZpbGU8L2E+PC9jb2RlPiBtb2R1bGUuICBNYWtlIHN1cmUKICAgIHRoYXQgdGhlIGNob3NlbiBwcm92aWRlciBtb2R1bGUgaXMgcHJlc2VudCBpbiB0aGUgc2VydmVyLjwvcD4KCiAgICA8cD5TZWUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9kYm0uaHRtbCI+bW9kX2F1dGhuX2RibTwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2ZpbGUuaHRtbCI+bW9kX2F1dGhuX2ZpbGU8L2E+PC9jb2RlPiwKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG5fZGJkLmh0bWwiPm1vZF9hdXRobl9kYmQ8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9zb2NhY2hlLmh0bWwiPm1vZF9hdXRobl9zb2NhY2hlPC9hPjwvY29kZT4KICAgIGZvciBwcm92aWRlcnMuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RRb3AiIGlkPSJBdXRoRGlnZXN0UW9wIj5BdXRoRGlnZXN0UW9wPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0cW9wIiBpZD0iYXV0aGRpZ2VzdHFvcCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGV0ZXJtaW5lcyB0aGUgcXVhbGl0eS1vZi1wcm90ZWN0aW9uIHRvIHVzZSBpbiBkaWdlc3QKYXV0aGVudGljYXRpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFFvcCBub25lfGF1dGh8YXV0aC1pbnQgW2F1dGh8YXV0aC1pbnRdPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhEaWdlc3RRb3AgYXV0aDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhfZGlnZXN0PC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3RRb3A8L2NvZGU+IGRpcmVjdGl2ZSBkZXRlcm1pbmVzCiAgICB0aGUgPGRmbj5xdWFsaXR5LW9mLXByb3RlY3Rpb248L2Rmbj4gdG8gdXNlLiA8Y29kZT5hdXRoPC9jb2RlPiB3aWxsCiAgICBvbmx5IGRvIGF1dGhlbnRpY2F0aW9uICh1c2VybmFtZS9wYXNzd29yZCk7IDxjb2RlPmF1dGgtaW50PC9jb2RlPiBpcwogICAgYXV0aGVudGljYXRpb24gcGx1cyBpbnRlZ3JpdHkgY2hlY2tpbmcgKGFuIE1ENSBoYXNoIG9mIHRoZSBlbnRpdHkKICAgIGlzIGFsc28gY29tcHV0ZWQgYW5kIGNoZWNrZWQpOyA8Y29kZT5ub25lPC9jb2RlPiB3aWxsIGNhdXNlIHRoZSBtb2R1bGUKICAgIHRvIHVzZSB0aGUgb2xkIFJGQy0yMDY5IGRpZ2VzdCBhbGdvcml0aG0gKHdoaWNoIGRvZXMgbm90IGluY2x1ZGUKICAgIGludGVncml0eSBjaGVja2luZykuIEJvdGggPGNvZGU+YXV0aDwvY29kZT4gYW5kIDxjb2RlPmF1dGgtaW50PC9jb2RlPiBtYXkKICAgIGJlIHNwZWNpZmllZCwgaW4gd2hpY2ggdGhlIGNhc2UgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2Ugd2hpY2ggb2YKICAgIHRoZXNlIHRvIHVzZS4gPGNvZGU+bm9uZTwvY29kZT4gc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgYnJvd3NlciBmb3IKICAgIHNvbWUgcmVhc29uIGRvZXMgbm90IGxpa2UgdGhlIGNoYWxsZW5nZSBpdCByZWNlaXZlcyBvdGhlcndpc2UuPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPgogICAgICA8Y29kZT5hdXRoLWludDwvY29kZT4gaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgIDwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhEaWdlc3RTaG1lbVNpemUiIGlkPSJBdXRoRGlnZXN0U2htZW1TaXplIj5BdXRoRGlnZXN0U2htZW1TaXplPC9hPiA8YSBuYW1lPSJhdXRoZGlnZXN0c2htZW1zaXplIiBpZD0iYXV0aGRpZ2VzdHNobWVtc2l6ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHRvIGFsbG9jYXRlIGZvciBrZWVwaW5nIHRyYWNrCm9mIGNsaWVudHM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFNobWVtU2l6ZSA8dmFyPnNpemU8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aERpZ2VzdFNobWVtU2l6ZSAxMDAwPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRoX2RpZ2VzdDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoRGlnZXN0U2htZW1TaXplPC9jb2RlPiBkaXJlY3RpdmUgZGVmaW5lcwogICAgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5LCB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIGF0IHRoZSBzZXJ2ZXIKICAgIHN0YXJ0dXAgZm9yIGtlZXBpbmcgdHJhY2sgb2YgY2xpZW50cy4gTm90ZSB0aGF0IHRoZSBzaGFyZWQgbWVtb3J5CiAgICBzZWdtZW50IGNhbm5vdCBiZSBzZXQgbGVzcyB0aGFuIHRoZSBzcGFjZSB0aGF0IGlzIG5lY2Vzc2FyeSBmb3IKICAgIHRyYWNraW5nIGF0IGxlYXN0IDxlbT5vbmU8L2VtPiBjbGllbnQuIFRoaXMgdmFsdWUgaXMgZGVwZW5kZW50IG9uIHlvdXIKICAgIHN5c3RlbS4gSWYgeW91IHdhbnQgdG8gZmluZCBvdXQgdGhlIGV4YWN0IHZhbHVlLCB5b3UgbWF5IHNpbXBseQogICAgc2V0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhEaWdlc3RTaG1lbVNpemU8L2NvZGU+IHRvIHRoZSB2YWx1ZSBvZgogICAgPGNvZGU+MDwvY29kZT4gYW5kIHJlYWQgdGhlIGVycm9yIG1lc3NhZ2UgYWZ0ZXIgdHJ5aW5nIHRvIHN0YXJ0IHRoZQogICAgc2VydmVyLjwvcD4KCiAgICA8cD5UaGUgPHZhcj5zaXplPC92YXI+IGlzIG5vcm1hbGx5IGV4cHJlc3NlZCBpbiBCeXRlcywgYnV0IHlvdQogICAgbWF5IGZvbGxvdyB0aGUgbnVtYmVyIHdpdGggYSA8Y29kZT5LPC9jb2RlPiBvciBhbiA8Y29kZT5NPC9jb2RlPiB0bwogICAgZXhwcmVzcyB5b3VyIHZhbHVlIGFzIEtCeXRlcyBvciBNQnl0ZXMuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nCiAgICBkaXJlY3RpdmVzIGFyZSBhbGwgZXF1aXZhbGVudDo8L3A+Cgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aERpZ2VzdFNobWVtU2l6ZSAxMDQ4NTc2CkF1dGhEaWdlc3RTaG1lbVNpemUgMTAyNEsKQXV0aERpZ2VzdFNobWVtU2l6ZSAxTTwvcHJlPgoKCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfYXV0aF9kaWdlc3QuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDIwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=