PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPlZpcnR1YWxIb3N0IEV4YW1wbGVzIC0gQXBhY2hlIEhUVFAgU2VydmVyPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZS9jc3MvcHJldHRpZnkuY3NzIiAvPgo8c2NyaXB0IHNyYz0iLi4vc3R5bGUvc2NyaXB0cy9wcmV0dGlmeS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cjwvc2NyaXB0PgoKPGxpbmsgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keSBpZD0ibWFudWFsLXBhZ2UiPjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNDwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPlZpcnR1YWwgSG9zdHM8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPlZpcnR1YWxIb3N0IEV4YW1wbGVzPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi92aG9zdHMvZXhhbXBsZXMuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3Zob3N0cy9leGFtcGxlcy5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL3Zob3N0cy9leGFtcGxlcy5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL3Zob3N0cy9leGFtcGxlcy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci92aG9zdHMvZXhhbXBsZXMuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KCgogICAgPHA+VGhpcyBkb2N1bWVudCBhdHRlbXB0cyB0byBhbnN3ZXIgdGhlIGNvbW1vbmx5LWFza2VkIHF1ZXN0aW9ucyBhYm91dAogICAgc2V0dGluZyB1cCA8YSBocmVmPSJpbmRleC5odG1sIj52aXJ0dWFsIGhvc3RzPC9hPi4gVGhlc2Ugc2NlbmFyaW9zIGFyZSB0aG9zZSBpbnZvbHZpbmcgbXVsdGlwbGUKICAgIHdlYiBzaXRlcyBydW5uaW5nIG9uIGEgc2luZ2xlIHNlcnZlciwgdmlhIDxhIGhyZWY9Im5hbWUtYmFzZWQuaHRtbCI+bmFtZS1iYXNlZDwvYT4gb3IgPGEgaHJlZj0iaXAtYmFzZWQuaHRtbCI+SVAtYmFzZWQ8L2E+IHZpcnR1YWwgaG9zdHMuCiAgICA8L3A+Cgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48dWwgaWQ9InRvYyI+PGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcHVyZW5hbWUiPlJ1bm5pbmcgc2V2ZXJhbCBuYW1lLWJhc2VkIHdlYgogICAgc2l0ZXMgb24gYSBzaW5nbGUgSVAgYWRkcmVzcy48L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdHdvaXBzIj5OYW1lLWJhc2VkIGhvc3RzIG9uIG1vcmUgdGhhbiBvbmUKICAgIElQIGFkZHJlc3MuPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ludHJhZXh0cmEiPlNlcnZpbmcgdGhlIHNhbWUgY29udGVudCBvbgogICAgZGlmZmVyZW50IElQIGFkZHJlc3NlcyAoc3VjaCBhcyBhbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwKICAgIGFkZHJlc3MpLjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNwb3J0Ij5SdW5uaW5nIGRpZmZlcmVudCBzaXRlcyBvbiBkaWZmZXJlbnQKICAgIHBvcnRzLjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNpcCI+SVAtYmFzZWQgdmlydHVhbCBob3N0aW5nPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2lwcG9ydCI+TWl4ZWQgcG9ydC1iYXNlZCBhbmQgaXAtYmFzZWQgdmlydHVhbAogIGhvc3RzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI21peGVkIj5NaXhlZCBuYW1lLWJhc2VkIGFuZCBJUC1iYXNlZAogICAgdmhvc3RzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Byb3h5Ij5Vc2luZyA8Y29kZT5WaXJ0dWFsX2hvc3Q8L2NvZGU+IGFuZAogICAgbW9kX3Byb3h5IHRvZ2V0aGVyPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2RlZmF1bHQiPlVzaW5nIDxjb2RlPl9kZWZhdWx0XzwvY29kZT4KICAgIHZob3N0czwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNtaWdyYXRlIj5NaWdyYXRpbmcgYSBuYW1lLWJhc2VkIHZob3N0IHRvIGFuCiAgICBJUC1iYXNlZCB2aG9zdDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzZXJ2ZXJwYXRoIj5Vc2luZyB0aGUgPGNvZGU+U2VydmVyUGF0aDwvY29kZT4KICBkaXJlY3RpdmU8L2E+PC9saT4KPC91bD48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJwdXJlbmFtZSIgaWQ9InB1cmVuYW1lIj5SdW5uaW5nIHNldmVyYWwgbmFtZS1iYXNlZCB3ZWIKICAgIHNpdGVzIG9uIGEgc2luZ2xlIElQIGFkZHJlc3MuPC9hPjwvaDI+CgogICAgPHA+WW91ciBzZXJ2ZXIgaGFzIGEgc2luZ2xlIElQIGFkZHJlc3MsIGFuZCBtdWx0aXBsZSBhbGlhc2VzIChDTkFNRVMpCiAgICBwb2ludCB0byB0aGlzIG1hY2hpbmUgaW4gRE5TLiBZb3Ugd2FudCB0byBydW4gYSB3ZWIgc2VydmVyIGZvcgogICAgPGNvZGU+d3d3LmV4YW1wbGUuY29tPC9jb2RlPiBhbmQgPGNvZGU+d3d3LmV4YW1wbGUub3JnPC9jb2RlPiBvbiB0aGlzCiAgICBtYWNoaW5lLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+PHA+Q3JlYXRpbmcgdmlydHVhbAogICAgICAgICAgaG9zdCBjb25maWd1cmF0aW9ucyBvbiB5b3VyIEFwYWNoZSBzZXJ2ZXIgZG9lcyBub3QgbWFnaWNhbGx5CiAgICAgICAgICBjYXVzZSBETlMgZW50cmllcyB0byBiZSBjcmVhdGVkIGZvciB0aG9zZSBob3N0IG5hbWVzLiBZb3UKICAgICAgICAgIDxlbT5tdXN0PC9lbT4gaGF2ZSB0aGUgbmFtZXMgaW4gRE5TLCByZXNvbHZpbmcgdG8geW91ciBJUAogICAgICAgICAgYWRkcmVzcywgb3Igbm9ib2R5IGVsc2Ugd2lsbCBiZSBhYmxlIHRvIHNlZSB5b3VyIHdlYiBzaXRlLiBZb3UKICAgICAgICAgIGNhbiBwdXQgZW50cmllcyBpbiB5b3VyIDxjb2RlPmhvc3RzPC9jb2RlPiBmaWxlIGZvciBsb2NhbAogICAgICAgICAgdGVzdGluZywgYnV0IHRoYXQgd2lsbCB3b3JrIG9ubHkgZnJvbSB0aGUgbWFjaGluZSB3aXRoIHRob3NlCiAgICAgICAgICA8Y29kZT5ob3N0czwvY29kZT4gZW50cmllcy48L3A+CiAgICA8L2Rpdj4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyBFbnN1cmUgdGhhdCBBcGFjaGUgbGlzdGVucyBvbiBwb3J0IDgwCkxpc3RlbiA4MAombHQ7VmlydHVhbEhvc3QgKjo4MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUxCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbQogIAogICAgIyBPdGhlciBkaXJlY3RpdmVzIGhlcmUKJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAqOjgwJmd0OwogICAgRG9jdW1lbnRSb290IC93d3cvZXhhbXBsZTIKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUub3JnCgogICAgIyBPdGhlciBkaXJlY3RpdmVzIGhlcmUKJmx0Oy9WaXJ0dWFsSG9zdCZndDs8L3ByZT4KCgogICAgPHA+VGhlIGFzdGVyaXNrcyBtYXRjaCBhbGwgYWRkcmVzc2VzLCBzbyB0aGUgbWFpbiBzZXJ2ZXIgc2VydmVzIG5vCiAgICByZXF1ZXN0cy4gRHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIHZpcnR1YWwgaG9zdCB3aXRoCiAgICA8Y29kZT5TZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbTwvY29kZT4gaXMgZmlyc3QKICAgIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGl0IGhhcyB0aGUgaGlnaGVzdCBwcmlvcml0eSBhbmQgY2FuIGJlIHNlZW4KICAgIGFzIHRoZSA8Y2l0ZT5kZWZhdWx0PC9jaXRlPiBvciA8Y2l0ZT5wcmltYXJ5PC9jaXRlPiBzZXJ2ZXIuIFRoYXQgbWVhbnMKICAgIHRoYXQgaWYgYSByZXF1ZXN0IGlzIHJlY2VpdmVkIHRoYXQgZG9lcyBub3QgbWF0Y2ggb25lIG9mIHRoZSBzcGVjaWZpZWQKICAgIDxjb2RlPlNlcnZlck5hbWU8L2NvZGU+IGRpcmVjdGl2ZXMsIGl0IHdpbGwgYmUgc2VydmVkIGJ5IHRoaXMgZmlyc3QKICAgIDxjb2RlPlZpcnR1YWxIb3N0PC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+CiAgICAgICAgICAgIDxoMz5Ob3RlPC9oMz4KCiAgICAgICAgICAgPHA+WW91IGNhbiwgaWYgeW91IHdpc2gsIHJlcGxhY2UgPGNvZGU+KjwvY29kZT4gd2l0aCB0aGUgYWN0dWFsCiAgICAgICAgICAgSVAgYWRkcmVzcyBvZiB0aGUgc3lzdGVtLCB3aGVuIHlvdSBkb24ndCBjYXJlIHRvIGRpc2NyaW1pbmF0ZSBiYXNlZAogICAgICAgICAgIG9uIHRoZSBJUCBhZGRyZXNzIG9yIHBvcnQuPC9wPgoKICAgICAgICAgICA8cD5Ib3dldmVyLCBpdCBpcyBhZGRpdGlvbmFsbHkgdXNlZnVsIHRvIHVzZSA8Y29kZT4qPC9jb2RlPgogICAgICAgICAgIG9uIHN5c3RlbXMgd2hlcmUgdGhlIElQIGFkZHJlc3MgaXMgbm90IHByZWRpY3RhYmxlIC0gZm9yCiAgICAgICAgICAgZXhhbXBsZSBpZiB5b3UgaGF2ZSBhIGR5bmFtaWMgSVAgYWRkcmVzcyB3aXRoIHlvdXIgSVNQLCBhbmQKICAgICAgICAgICB5b3UgYXJlIHVzaW5nIHNvbWUgdmFyaWV0eSBvZiBkeW5hbWljIEROUyBzb2x1dGlvbi4gU2luY2UKICAgICAgICAgICA8Y29kZT4qPC9jb2RlPiBtYXRjaGVzIGFueSBJUCBhZGRyZXNzLCB0aGlzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICB3b3VsZCB3b3JrIHdpdGhvdXQgY2hhbmdlcyB3aGVuZXZlciB5b3VyIElQIGFkZHJlc3MKICAgICAgICAgICBjaGFuZ2VzLjwvcD4KICAgIDwvZGl2PgoKICAgIDxwPlRoZSBhYm92ZSBjb25maWd1cmF0aW9uIGlzIHdoYXQgeW91IHdpbGwgd2FudCB0byB1c2UgaW4gYWxtb3N0CiAgICBhbGwgbmFtZS1iYXNlZCB2aXJ0dWFsIGhvc3Rpbmcgc2l0dWF0aW9ucy4gVGhlIG9ubHkgdGhpbmcgdGhhdCB0aGlzCiAgICBjb25maWd1cmF0aW9uIHdpbGwgbm90IHdvcmsgZm9yLCBpbiBmYWN0LCBpcyB3aGVuIHlvdSBhcmUgc2VydmluZwogICAgZGlmZmVyZW50IGNvbnRlbnQgYmFzZWQgb24gZGlmZmVyaW5nIElQIGFkZHJlc3NlcyBvciBwb3J0cy48L3A+CgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InR3b2lwcyIgaWQ9InR3b2lwcyI+TmFtZS1iYXNlZCBob3N0cyBvbiBtb3JlIHRoYW4gb25lCiAgICBJUCBhZGRyZXNzLjwvYT48L2gyPgoKICAgIDxkaXYgY2xhc3M9Im5vdGUiPgogICAgICA8aDM+Tm90ZTwvaDM+CiAgICAgIDxwPkFueSBvZiB0aGUgdGVjaG5pcXVlcyBkaXNjdXNzZWQgaGVyZSBjYW4gYmUgZXh0ZW5kZWQgdG8gYW55CiAgICAgIG51bWJlciBvZiBJUCBhZGRyZXNzZXMuPC9wPgogICAgPC9kaXY+CgogICAgPHA+VGhlIHNlcnZlciBoYXMgdHdvIElQIGFkZHJlc3Nlcy4gT24gb25lICg8Y29kZT4xNzIuMjAuMzAuNDA8L2NvZGU+KSwgd2UKICAgIHdpbGwgc2VydmUgdGhlICJtYWluIiBzZXJ2ZXIsIDxjb2RlPnNlcnZlci5leGFtcGxlLmNvbTwvY29kZT4gYW5kIG9uIHRoZQogICAgb3RoZXIgKDxjb2RlPjE3Mi4yMC4zMC41MDwvY29kZT4pLCB3ZSB3aWxsIHNlcnZlIHR3byBvciBtb3JlIHZpcnR1YWwgaG9zdHMuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5MaXN0ZW4gODAKCiMgVGhpcyBpcyB0aGUgIm1haW4iIHNlcnZlciBydW5uaW5nIG9uIDE3Mi4yMC4zMC40MApTZXJ2ZXJOYW1lIHNlcnZlci5leGFtcGxlLmNvbQpEb2N1bWVudFJvb3QgL3d3dy9tYWluc2VydmVyCgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjUwJmd0OwogICAgRG9jdW1lbnRSb290IC93d3cvZXhhbXBsZTEKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tCiAgICAKICAgICMgT3RoZXIgZGlyZWN0aXZlcyBoZXJlIC4uLgombHQ7L1ZpcnR1YWxIb3N0Jmd0OwoKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC41MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUyCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLm9yZwogICAgCiAgICAjIE90aGVyIGRpcmVjdGl2ZXMgaGVyZSAuLi4KJmx0Oy9WaXJ0dWFsSG9zdCZndDs8L3ByZT4KCgogICAgPHA+QW55IHJlcXVlc3QgdG8gYW4gYWRkcmVzcyBvdGhlciB0aGFuIDxjb2RlPjE3Mi4yMC4zMC41MDwvY29kZT4gd2lsbCBiZQogICAgc2VydmVkIGZyb20gdGhlIG1haW4gc2VydmVyLiBBIHJlcXVlc3QgdG8gPGNvZGU+MTcyLjIwLjMwLjUwPC9jb2RlPiB3aXRoIGFuCiAgICB1bmtub3duIGhvc3RuYW1lLCBvciBubyA8Y29kZT5Ib3N0OjwvY29kZT4gaGVhZGVyLCB3aWxsIGJlIHNlcnZlZCBmcm9tCiAgICA8Y29kZT53d3cuZXhhbXBsZS5jb208L2NvZGU+LjwvcD4KCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaW50cmFleHRyYSIgaWQ9ImludHJhZXh0cmEiPlNlcnZpbmcgdGhlIHNhbWUgY29udGVudCBvbgogICAgZGlmZmVyZW50IElQIGFkZHJlc3NlcyAoc3VjaCBhcyBhbiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwKICAgIGFkZHJlc3MpLjwvYT48L2gyPgoKICAgIDxwPlRoZSBzZXJ2ZXIgbWFjaGluZSBoYXMgdHdvIElQIGFkZHJlc3NlcyAoPGNvZGU+MTkyLjE2OC4xLjE8L2NvZGU+CiAgICBhbmQgPGNvZGU+MTcyLjIwLjMwLjQwPC9jb2RlPikuIFRoZSBtYWNoaW5lIGlzIHNpdHRpbmcgYmV0d2VlbiBhbgogICAgaW50ZXJuYWwgKGludHJhbmV0KSBuZXR3b3JrIGFuZCBhbiBleHRlcm5hbCAoaW50ZXJuZXQpIG5ldHdvcmsuIE91dHNpZGUKICAgIG9mIHRoZSBuZXR3b3JrLCB0aGUgbmFtZSA8Y29kZT5zZXJ2ZXIuZXhhbXBsZS5jb208L2NvZGU+IHJlc29sdmVzIHRvCiAgICB0aGUgZXh0ZXJuYWwgYWRkcmVzcyAoPGNvZGU+MTcyLjIwLjMwLjQwPC9jb2RlPiksIGJ1dCBpbnNpZGUgdGhlCiAgICBuZXR3b3JrLCB0aGF0IHNhbWUgbmFtZSByZXNvbHZlcyB0byB0aGUgaW50ZXJuYWwgYWRkcmVzcwogICAgKDxjb2RlPjE5Mi4xNjguMS4xPC9jb2RlPikuPC9wPgoKICAgIDxwPlRoZSBzZXJ2ZXIgY2FuIGJlIG1hZGUgdG8gcmVzcG9uZCB0byBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgcmVxdWVzdHMKICAgIHdpdGggdGhlIHNhbWUgY29udGVudCwgd2l0aCBqdXN0IG9uZSA8Y29kZT5WaXJ0dWFsSG9zdDwvY29kZT4KICAgIHNlY3Rpb24uPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7VmlydHVhbEhvc3QgMTkyLjE2OC4xLjEgMTcyLjIwLjMwLjQwJmd0OwogICAgRG9jdW1lbnRSb290IC93d3cvc2VydmVyMQogICAgU2VydmVyTmFtZSBzZXJ2ZXIuZXhhbXBsZS5jb20KICAgIFNlcnZlckFsaWFzIHNlcnZlcgombHQ7L1ZpcnR1YWxIb3N0Jmd0OzwvcHJlPgoKCiAgICA8cD5Ob3cgcmVxdWVzdHMgZnJvbSBib3RoIG5ldHdvcmtzIHdpbGwgYmUgc2VydmVkIGZyb20gdGhlIHNhbWUKICAgIDxjb2RlPlZpcnR1YWxIb3N0PC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+CiAgICAgICAgICA8aDM+Tm90ZTo8L2gzPjxwPk9uIHRoZSBpbnRlcm5hbAogICAgICAgICAgbmV0d29yaywgb25lIGNhbiBqdXN0IHVzZSB0aGUgbmFtZSA8Y29kZT5zZXJ2ZXI8L2NvZGU+IHJhdGhlcgogICAgICAgICAgdGhhbiB0aGUgZnVsbHkgcXVhbGlmaWVkIGhvc3QgbmFtZQogICAgICAgICAgPGNvZGU+c2VydmVyLmV4YW1wbGUuY29tPC9jb2RlPi48L3A+CgogICAgICAgICAgPHA+Tm90ZSBhbHNvIHRoYXQsIGluIHRoZSBhYm92ZSBleGFtcGxlLCB5b3UgY2FuIHJlcGxhY2UgdGhlIGxpc3QKICAgICAgICAgIG9mIElQIGFkZHJlc3NlcyB3aXRoIDxjb2RlPio8L2NvZGU+LCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8KICAgICAgICAgIHJlc3BvbmQgdGhlIHNhbWUgb24gYWxsIGFkZHJlc3Nlcy48L3A+CiAgICA8L2Rpdj4KCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0icG9ydCIgaWQ9InBvcnQiPlJ1bm5pbmcgZGlmZmVyZW50IHNpdGVzIG9uIGRpZmZlcmVudAogICAgcG9ydHMuPC9hPjwvaDI+CgogICAgPHA+WW91IGhhdmUgbXVsdGlwbGUgZG9tYWlucyBnb2luZyB0byB0aGUgc2FtZSBJUCBhbmQgYWxzbyB3YW50IHRvCiAgICBzZXJ2ZSBtdWx0aXBsZSBwb3J0cy4gIFRoZSBleGFtcGxlIGJlbG93IGlsbHVzdHJhdGVzIHRoYXQgdGhlIG5hbWUtbWF0Y2hpbmcKICAgIHRha2VzIHBsYWNlIGFmdGVyIHRoZSBiZXN0IG1hdGNoaW5nIElQIGFkZHJlc3MgYW5kIHBvcnQgY29tYmluYXRpb24KICAgIGlzIGRldGVybWluZWQuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5MaXN0ZW4gODAKTGlzdGVuIDgwODAKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDA6ODAmZ3Q7CiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbQogICAgRG9jdW1lbnRSb290IC93d3cvZG9tYWluLTgwCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjQwOjgwODAmZ3Q7CiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbQogICAgRG9jdW1lbnRSb290IC93d3cvZG9tYWluLTgwODAKJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDA6ODAmZ3Q7CiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLm9yZwogICAgRG9jdW1lbnRSb290IC93d3cvb3RoZXJkb21haW4tODAKJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDA6ODA4MCZndDsKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUub3JnCiAgICBEb2N1bWVudFJvb3QgL3d3dy9vdGhlcmRvbWFpbi04MDgwCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJpcCIgaWQ9ImlwIj5JUC1iYXNlZCB2aXJ0dWFsIGhvc3Rpbmc8L2E+PC9oMj4KCiAgICA8cD5UaGUgc2VydmVyIGhhcyB0d28gSVAgYWRkcmVzc2VzICg8Y29kZT4xNzIuMjAuMzAuNDA8L2NvZGU+IGFuZAogICAgPGNvZGU+MTcyLjIwLjMwLjUwPC9jb2RlPikgd2hpY2ggcmVzb2x2ZSB0byB0aGUgbmFtZXMKICAgIDxjb2RlPnd3dy5leGFtcGxlLmNvbTwvY29kZT4gYW5kIDxjb2RlPnd3dy5leGFtcGxlLm9yZzwvY29kZT4KICAgIHJlc3BlY3RpdmVseS48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPkxpc3RlbiA4MAoKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC40MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUxCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbQombHQ7L1ZpcnR1YWxIb3N0Jmd0OwoKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC41MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUyCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLm9yZwombHQ7L1ZpcnR1YWxIb3N0Jmd0OzwvcHJlPgoKCiAgICA8cD5SZXF1ZXN0cyBmb3IgYW55IGFkZHJlc3Mgbm90IHNwZWNpZmllZCBpbiBvbmUgb2YgdGhlCiAgICA8Y29kZT4mbHQ7VmlydHVhbEhvc3QmZ3Q7PC9jb2RlPiBkaXJlY3RpdmVzIChzdWNoIGFzCiAgICA8Y29kZT5sb2NhbGhvc3Q8L2NvZGU+LCBmb3IgZXhhbXBsZSkgd2lsbCBnbyB0byB0aGUgbWFpbiBzZXJ2ZXIsIGlmCiAgICB0aGVyZSBpcyBvbmUuPC9wPgoKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJpcHBvcnQiIGlkPSJpcHBvcnQiPk1peGVkIHBvcnQtYmFzZWQgYW5kIGlwLWJhc2VkIHZpcnR1YWwKICBob3N0czwvYT48L2gyPgoKICAgIDxwPlRoZSBzZXJ2ZXIgbWFjaGluZSBoYXMgdHdvIElQIGFkZHJlc3NlcyAoPGNvZGU+MTcyLjIwLjMwLjQwPC9jb2RlPiBhbmQKICAgIDxjb2RlPjE3Mi4yMC4zMC41MDwvY29kZT4pIHdoaWNoIHJlc29sdmUgdG8gdGhlIG5hbWVzCiAgICA8Y29kZT53d3cuZXhhbXBsZS5jb208L2NvZGU+IGFuZCA8Y29kZT53d3cuZXhhbXBsZS5vcmc8L2NvZGU+CiAgICByZXNwZWN0aXZlbHkuIEluIGVhY2ggY2FzZSwgd2Ugd2FudCB0byBydW4gaG9zdHMgb24gcG9ydHMgODAgYW5kCiAgICA4MDgwLjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+TGlzdGVuIDE3Mi4yMC4zMC40MDo4MApMaXN0ZW4gMTcyLjIwLjMwLjQwOjgwODAKTGlzdGVuIDE3Mi4yMC4zMC41MDo4MApMaXN0ZW4gMTcyLjIwLjMwLjUwOjgwODAKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDA6ODAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMS04MAogICAgU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5jb20KJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDA6ODA4MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUxLTgwODAKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjUwOjgwJmd0OwogICAgRG9jdW1lbnRSb290IC93d3cvZXhhbXBsZTItODAKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUub3JnCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjUwOjgwODAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMi04MDgwCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLm9yZwombHQ7L1ZpcnR1YWxIb3N0Jmd0OzwvcHJlPgoKCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ibWl4ZWQiIGlkPSJtaXhlZCI+TWl4ZWQgbmFtZS1iYXNlZCBhbmQgSVAtYmFzZWQKICAgIHZob3N0czwvYT48L2gyPgoKICAgIDxwPkFueSBhZGRyZXNzIG1lbnRpb25lZCBpbiB0aGUgYXJndW1lbnQgdG8gYSB2aXJ0dWFsaG9zdCB0aGF0IG5ldmVyCiAgICBhcHBlYXJzIGluIGFub3RoZXIgdmlydHVhbCBob3N0IGlzIGEgc3RyaWN0bHkgSVAtYmFzZWQgdmlydHVhbCBob3N0LjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+TGlzdGVuIDgwCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMQogICAgU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5jb20KJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMgogICAgU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5vcmcKJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMwogICAgU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5uZXQKJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiMgSVAtYmFzZWQKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC41MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGU0CiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmVkdQombHQ7L1ZpcnR1YWxIb3N0Jmd0OwoKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC42MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGU1CiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmdvdgombHQ7L1ZpcnR1YWxIb3N0Jmd0OzwvcHJlPgoKCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0icHJveHkiIGlkPSJwcm94eSI+VXNpbmcgPGNvZGU+VmlydHVhbF9ob3N0PC9jb2RlPiBhbmQKICAgIG1vZF9wcm94eSB0b2dldGhlcjwvYT48L2gyPgoKICAgIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhbGxvd3MgYSBmcm9udC1lbmQgbWFjaGluZSB0byBwcm94eSBhCiAgICB2aXJ0dWFsIGhvc3QgdGhyb3VnaCB0byBhIHNlcnZlciBydW5uaW5nIG9uIGFub3RoZXIgbWFjaGluZS4gSW4gdGhlCiAgICBleGFtcGxlLCBhIHZpcnR1YWwgaG9zdCBvZiB0aGUgc2FtZSBuYW1lIGlzIGNvbmZpZ3VyZWQgb24gYSBtYWNoaW5lCiAgICBhdCA8Y29kZT4xOTIuMTY4LjExMS4yPC9jb2RlPi4gVGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcHJveHkuaHRtbCNwcm94eXByZXNlcnZlaG9zdCI+UHJveHlQcmVzZXJ2ZUhvc3QKICAgIE9uPC9hPjwvY29kZT4gZGlyZWN0aXZlIGlzIHVzZWQgc28gdGhhdCB0aGUgZGVzaXJlZCBob3N0bmFtZSBpcwogICAgcGFzc2VkIHRocm91Z2gsIGluIGNhc2Ugd2UgYXJlIHByb3h5aW5nIG11bHRpcGxlIGhvc3RuYW1lcyB0byBhCiAgICBzaW5nbGUgbWFjaGluZS48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiZsdDtWaXJ0dWFsSG9zdCAqOiomZ3Q7CiAgICBQcm94eVByZXNlcnZlSG9zdCBPbgogICAgUHJveHlQYXNzIC8gaHR0cDovLzE5Mi4xNjguMTExLjIvCiAgICBQcm94eVBhc3NSZXZlcnNlIC8gaHR0cDovLzE5Mi4xNjguMTExLjIvCiAgICBTZXJ2ZXJOYW1lIGhvc3RuYW1lLmV4YW1wbGUuY29tCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKICAgIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImRlZmF1bHQiIGlkPSJkZWZhdWx0Ij5Vc2luZyA8Y29kZT5fZGVmYXVsdF88L2NvZGU+CiAgICB2aG9zdHM8L2E+PC9oMj4KCiAgICA8aDM+PGEgbmFtZT0iZGVmYXVsdGFsbHBvcnRzIiBpZD0iZGVmYXVsdGFsbHBvcnRzIj48Y29kZT5fZGVmYXVsdF88L2NvZGU+IHZob3N0cwogICAgZm9yIGFsbCBwb3J0czwvYT48L2gzPgoKICAgIDxwPkNhdGNoaW5nIDxlbT5ldmVyeTwvZW0+IHJlcXVlc3QgdG8gYW55IHVuc3BlY2lmaWVkIElQIGFkZHJlc3MgYW5kCiAgICBwb3J0LCA8ZW0+aS5lLjwvZW0+LCBhbiBhZGRyZXNzL3BvcnQgY29tYmluYXRpb24gdGhhdCBpcyBub3QgdXNlZCBmb3IKICAgIGFueSBvdGhlciB2aXJ0dWFsIGhvc3QuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7VmlydHVhbEhvc3QgX2RlZmF1bHRfOiomZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9kZWZhdWx0CiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKICAgIDxwPlVzaW5nIHN1Y2ggYSBkZWZhdWx0IHZob3N0IHdpdGggYSB3aWxkY2FyZCBwb3J0IGVmZmVjdGl2ZWx5IHByZXZlbnRzCiAgICBhbnkgcmVxdWVzdCBnb2luZyB0byB0aGUgbWFpbiBzZXJ2ZXIuPC9wPgoKICAgIDxwPkEgZGVmYXVsdCB2aG9zdCBuZXZlciBzZXJ2ZXMgYSByZXF1ZXN0IHRoYXQgd2FzIHNlbnQgdG8gYW4KICAgIGFkZHJlc3MvcG9ydCB0aGF0IGlzIHVzZWQgZm9yIG5hbWUtYmFzZWQgdmhvc3RzLiBJZiB0aGUgcmVxdWVzdAogICAgY29udGFpbmVkIGFuIHVua25vd24gb3Igbm8gPGNvZGU+SG9zdDo8L2NvZGU+IGhlYWRlciBpdCBpcyBhbHdheXMKICAgIHNlcnZlZCBmcm9tIHRoZSBwcmltYXJ5IG5hbWUtYmFzZWQgdmhvc3QgKHRoZSB2aG9zdCBmb3IgdGhhdAogICAgYWRkcmVzcy9wb3J0IGFwcGVhcmluZyBmaXJzdCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlKS48L3A+CgogICAgPHA+WW91IGNhbiB1c2UgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hbGlhcy5odG1sI2FsaWFzbWF0Y2giPkFsaWFzTWF0Y2g8L2E+PC9jb2RlPiBvcgogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9yZXdyaXRlLmh0bWwjcmV3cml0ZXJ1bGUiPlJld3JpdGVSdWxlPC9hPjwvY29kZT4gdG8gcmV3cml0ZSBhbnkKICAgIHJlcXVlc3QgdG8gYSBzaW5nbGUgaW5mb3JtYXRpb24gcGFnZSAob3Igc2NyaXB0KS48L3A+CiAgICAKCiAgICA8aDM+PGEgbmFtZT0iZGVmYXVsdGRpZmZlcmVudHBvcnRzIiBpZD0iZGVmYXVsdGRpZmZlcmVudHBvcnRzIj48Y29kZT5fZGVmYXVsdF88L2NvZGU+IHZob3N0cwogICAgZm9yIGRpZmZlcmVudCBwb3J0czwvYT48L2gzPgoKICAgIDxwPlNhbWUgYXMgc2V0dXAgMSwgYnV0IHRoZSBzZXJ2ZXIgbGlzdGVucyBvbiBzZXZlcmFsIHBvcnRzIGFuZCB3ZSB3YW50CiAgICB0byB1c2UgYSBzZWNvbmQgPGNvZGU+X2RlZmF1bHRfPC9jb2RlPiB2aG9zdCBmb3IgcG9ydCA4MC48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiZsdDtWaXJ0dWFsSG9zdCBfZGVmYXVsdF86ODAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9kZWZhdWx0ODAKICAgICMgLi4uCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgX2RlZmF1bHRfOiomZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9kZWZhdWx0CiAgICAjIC4uLgombHQ7L1ZpcnR1YWxIb3N0Jmd0OzwvcHJlPgoKCiAgICA8cD5UaGUgZGVmYXVsdCB2aG9zdCBmb3IgcG9ydCA4MCAod2hpY2ggPGVtPm11c3Q8L2VtPiBhcHBlYXIgYmVmb3JlIGFueQogICAgZGVmYXVsdCB2aG9zdCB3aXRoIGEgd2lsZGNhcmQgcG9ydCkgY2F0Y2hlcyBhbGwgcmVxdWVzdHMgdGhhdCB3ZXJlIHNlbnQKICAgIHRvIGFuIHVuc3BlY2lmaWVkIElQIGFkZHJlc3MuIFRoZSBtYWluIHNlcnZlciBpcyBuZXZlciB1c2VkIHRvIHNlcnZlIGEKICAgIHJlcXVlc3QuPC9wPgogICAgCgogICAgPGgzPjxhIG5hbWU9ImRlZmF1bHRvbmVwb3J0IiBpZD0iZGVmYXVsdG9uZXBvcnQiPjxjb2RlPl9kZWZhdWx0XzwvY29kZT4gdmhvc3RzCiAgICBmb3Igb25lIHBvcnQ8L2E+PC9oMz4KCiAgICA8cD5XZSB3YW50IHRvIGhhdmUgYSBkZWZhdWx0IHZob3N0IGZvciBwb3J0IDgwLCBidXQgbm8gb3RoZXIgZGVmYXVsdAogICAgdmhvc3RzLjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+Jmx0O1ZpcnR1YWxIb3N0IF9kZWZhdWx0Xzo4MCZndDsKRG9jdW1lbnRSb290IC93d3cvZGVmYXVsdAouLi4KJmx0Oy9WaXJ0dWFsSG9zdCZndDs8L3ByZT4KCgogICAgPHA+QSByZXF1ZXN0IHRvIGFuIHVuc3BlY2lmaWVkIGFkZHJlc3Mgb24gcG9ydCA4MCBpcyBzZXJ2ZWQgZnJvbSB0aGUKICAgIGRlZmF1bHQgdmhvc3QuIEFueSBvdGhlciByZXF1ZXN0IHRvIGFuIHVuc3BlY2lmaWVkIGFkZHJlc3MgYW5kIHBvcnQgaXMKICAgIHNlcnZlZCBmcm9tIHRoZSBtYWluIHNlcnZlci48L3A+CgogICAgPHA+QW55IHVzZSBvZiA8Y29kZT4qPC9jb2RlPiBpbiBhIHZpcnR1YWwgaG9zdCBkZWNsYXJhdGlvbiB3aWxsIGhhdmUKICAgIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gPGNvZGU+X2RlZmF1bHRfPC9jb2RlPi48L3A+CgogICAgCgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9Im1pZ3JhdGUiIGlkPSJtaWdyYXRlIj5NaWdyYXRpbmcgYSBuYW1lLWJhc2VkIHZob3N0IHRvIGFuCiAgICBJUC1iYXNlZCB2aG9zdDwvYT48L2gyPgoKICAgIDxwPlRoZSBuYW1lLWJhc2VkIHZob3N0IHdpdGggdGhlIGhvc3RuYW1lCiAgICA8Y29kZT53d3cuZXhhbXBsZS5vcmc8L2NvZGU+IChmcm9tIG91ciA8YSBocmVmPSIjbmFtZSI+bmFtZS1iYXNlZDwvYT4gZXhhbXBsZSwgc2V0dXAgMikgc2hvdWxkIGdldCBpdHMgb3duIElQCiAgICBhZGRyZXNzLiBUbyBhdm9pZCBwcm9ibGVtcyB3aXRoIG5hbWUgc2VydmVycyBvciBwcm94aWVzIHdobyBjYWNoZWQgdGhlCiAgICBvbGQgSVAgYWRkcmVzcyBmb3IgdGhlIG5hbWUtYmFzZWQgdmhvc3Qgd2Ugd2FudCB0byBwcm92aWRlIGJvdGgKICAgIHZhcmlhbnRzIGR1cmluZyBhIG1pZ3JhdGlvbiBwaGFzZS48L3A+CgogICAgPHA+CiAgICAgVGhlIHNvbHV0aW9uIGlzIGVhc3ksIGJlY2F1c2Ugd2UgY2FuIHNpbXBseSBhZGQgdGhlIG5ldyBJUCBhZGRyZXNzCiAgICAoPGNvZGU+MTcyLjIwLjMwLjUwPC9jb2RlPikgdG8gdGhlIDxjb2RlPlZpcnR1YWxIb3N0PC9jb2RlPgogICAgZGlyZWN0aXZlLjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+TGlzdGVuIDgwClNlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tCkRvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUxCgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjQwIDE3Mi4yMC4zMC41MCZndDsKICAgIERvY3VtZW50Um9vdCAvd3d3L2V4YW1wbGUyCiAgICBTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLm9yZwogICAgIyAuLi4KJmx0Oy9WaXJ0dWFsSG9zdCZndDsKCiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDAmZ3Q7CiAgICBEb2N1bWVudFJvb3QgL3d3dy9leGFtcGxlMwogICAgU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5uZXQKICAgIFNlcnZlckFsaWFzICouZXhhbXBsZS5uZXQKICAgICMgLi4uCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKICAgIDxwPlRoZSB2aG9zdCBjYW4gbm93IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIG5ldyBhZGRyZXNzIChhcyBhbgogICAgSVAtYmFzZWQgdmhvc3QpIGFuZCB0aHJvdWdoIHRoZSBvbGQgYWRkcmVzcyAoYXMgYSBuYW1lLWJhc2VkCiAgICB2aG9zdCkuPC9wPgoKICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJzZXJ2ZXJwYXRoIiBpZD0ic2VydmVycGF0aCI+VXNpbmcgdGhlIDxjb2RlPlNlcnZlclBhdGg8L2NvZGU+CiAgZGlyZWN0aXZlPC9hPjwvaDI+CgogICAgPHA+V2UgaGF2ZSBhIHNlcnZlciB3aXRoIHR3byBuYW1lLWJhc2VkIHZob3N0cy4gSW4gb3JkZXIgdG8gbWF0Y2ggdGhlCiAgICBjb3JyZWN0IHZpcnR1YWwgaG9zdCBhIGNsaWVudCBtdXN0IHNlbmQgdGhlIGNvcnJlY3QgPGNvZGU+SG9zdDo8L2NvZGU+CiAgICBoZWFkZXIuIE9sZCBIVFRQLzEuMCBjbGllbnRzIGRvIG5vdCBzZW5kIHN1Y2ggYSBoZWFkZXIgYW5kIEFwYWNoZSBoYXMKICAgIG5vIGNsdWUgd2hhdCB2aG9zdCB0aGUgY2xpZW50IHRyaWVkIHRvIHJlYWNoIChhbmQgc2VydmVzIHRoZSByZXF1ZXN0CiAgICBmcm9tIHRoZSBwcmltYXJ5IHZob3N0KS4gVG8gcHJvdmlkZSBhcyBtdWNoIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMKICAgIHBvc3NpYmxlIHdlIGNyZWF0ZSBhIHByaW1hcnkgdmhvc3Qgd2hpY2ggcmV0dXJucyBhIHNpbmdsZSBwYWdlCiAgICBjb250YWluaW5nIGxpbmtzIHdpdGggYW4gVVJMIHByZWZpeCB0byB0aGUgbmFtZS1iYXNlZCB2aXJ0dWFsCiAgICBob3N0cy48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiZsdDtWaXJ0dWFsSG9zdCAxNzIuMjAuMzAuNDAmZ3Q7CiAgICAjIHByaW1hcnkgdmhvc3QKICAgIERvY3VtZW50Um9vdCAvd3d3L3N1YmRvbWFpbgogICAgUmV3cml0ZUVuZ2luZSBPbgogICAgUmV3cml0ZVJ1bGUgLiAvd3d3L3N1YmRvbWFpbi9pbmRleC5odG1sCiAgICAjIC4uLgombHQ7L1ZpcnR1YWxIb3N0Jmd0OwoKJmx0O1ZpcnR1YWxIb3N0IDE3Mi4yMC4zMC40MCZndDsKRG9jdW1lbnRSb290IC93d3cvc3ViZG9tYWluL3N1YjEKICAgIFNlcnZlck5hbWUgd3d3LnN1YjEuZG9tYWluLnRsZAogICAgU2VydmVyUGF0aCAvc3ViMS8KICAgIFJld3JpdGVFbmdpbmUgT24KICAgIFJld3JpdGVSdWxlIF4oL3N1YjEvLiopIC93d3cvc3ViZG9tYWluJDEKICAgICMgLi4uCiZsdDsvVmlydHVhbEhvc3QmZ3Q7CgombHQ7VmlydHVhbEhvc3QgMTcyLjIwLjMwLjQwJmd0OwogICAgRG9jdW1lbnRSb290IC93d3cvc3ViZG9tYWluL3N1YjIKICAgIFNlcnZlck5hbWUgd3d3LnN1YjIuZG9tYWluLnRsZAogICAgU2VydmVyUGF0aCAvc3ViMi8KICAgIFJld3JpdGVFbmdpbmUgT24KICAgIFJld3JpdGVSdWxlIF4oL3N1YjIvLiopIC93d3cvc3ViZG9tYWluJDEKICAgICMgLi4uCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKICAgIDxwPkR1ZSB0byB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNzZXJ2ZXJwYXRoIj5TZXJ2ZXJQYXRoPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSBhIHJlcXVlc3QgdG8gdGhlIFVSTAogICAgPGNvZGU+aHR0cDovL3d3dy5zdWIxLmRvbWFpbi50bGQvc3ViMS88L2NvZGU+IGlzIDxlbT5hbHdheXM8L2VtPiBzZXJ2ZWQKICAgIGZyb20gdGhlIHN1YjEtdmhvc3QuPGJyIC8+IEEgcmVxdWVzdCB0byB0aGUgVVJMCiAgICA8Y29kZT5odHRwOi8vd3d3LnN1YjEuZG9tYWluLnRsZC88L2NvZGU+IGlzIG9ubHkKICAgIHNlcnZlZCBmcm9tIHRoZSBzdWIxLXZob3N0IGlmIHRoZSBjbGllbnQgc2VudCBhIGNvcnJlY3QKICAgIDxjb2RlPkhvc3Q6PC9jb2RlPiBoZWFkZXIuIElmIG5vIDxjb2RlPkhvc3Q6PC9jb2RlPiBoZWFkZXIgaXMgc2VudCB0aGUKICAgIGNsaWVudCBnZXRzIHRoZSBpbmZvcm1hdGlvbiBwYWdlIGZyb20gdGhlIHByaW1hcnkgaG9zdC48L3A+CgogICAgPHA+UGxlYXNlIG5vdGUgdGhhdCB0aGVyZSBpcyBvbmUgb2RkaXR5OiBBIHJlcXVlc3QgdG8KICAgIDxjb2RlPmh0dHA6Ly93d3cuc3ViMi5kb21haW4udGxkL3N1YjEvPC9jb2RlPiBpcyBhbHNvIHNlcnZlZCBmcm9tIHRoZQogICAgc3ViMS12aG9zdCBpZiB0aGUgY2xpZW50IHNlbnQgbm8gPGNvZGU+SG9zdDo8L2NvZGU+IGhlYWRlci48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfcmV3cml0ZS5odG1sI3Jld3JpdGVydWxlIj5SZXdyaXRlUnVsZTwvYT48L2NvZGU+IGRpcmVjdGl2ZXMKICAgIGFyZSB1c2VkIHRvIG1ha2Ugc3VyZSB0aGF0IGEgY2xpZW50IHdoaWNoIHNlbnQgYSBjb3JyZWN0CiAgICA8Y29kZT5Ib3N0OjwvY29kZT4gaGVhZGVyIGNhbiB1c2UgYm90aCBVUkwgdmFyaWFudHMsIDxlbT5pLmUuPC9lbT4sCiAgICB3aXRoIG9yIHdpdGhvdXQgVVJMIHByZWZpeC48L3A+CgogIDwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL3Zob3N0cy9leGFtcGxlcy5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvdmhvc3RzL2V4YW1wbGVzLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvdmhvc3RzL2V4YW1wbGVzLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vdmhvc3RzL2V4YW1wbGVzLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL3Zob3N0cy9leGFtcGxlcy5odG1sIiBocmVmbGFuZz0idHIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iVPxya+dlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvdmhvc3RzL2V4YW1wbGVzLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsgCiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj5Db21tZW50cyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgcGFnZSBhdCB0aGUgbW9tZW50LjxcL2Rpdj4nKTsKICAgIH0KfSkod2luZG93LCBkb2N1bWVudCk7Ci8vLS0+PCFdXT48L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMjAxNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+